Openflow实验笔记(一):Mininet上ovs-ofctl转发icmp包

本文记录了一次使用Mininet和OpenFlow的实验,目标是改变ICMP包的转发路径。通过自定义拓扑和ovs-ofctl命令,实验中遇到h2不回复ICMP请求的问题。分析后发现是由于目的MAC地址导致的。解决方案包括修改流表动作和调整拓扑结构,最终成功实现了路径控制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

工具:Mininet

拓扑:

一开始设想的拓扑是这样的

实验目的:

实现将fowarding路线从h1-s1-s2-h2(default)改成h1-s1-s3-h2,反过来也一样

使用mininet提供的接口写的python脚本来建立这个拓扑,这一步很简单

from mininet.topo import Topo

class MyTopo(Topo):

    def build(self):

        #Add hosts and switches
        leftHost = self.addHost('h1')
        rightHost = self.addHost('h2')
        leftSwitch = self.addSwitch('s1')
        rightSwitch1 = self.addSwitch('s2')
        rightSwitch2 = self.addSwitch('s3')

        #Add links
        self.addLink(leftHost, leftSwitch)
        self.addLink(leftSwitch, rightSwitch1)
        self.addLink(leftSwitch, rightSwitch2)
        self.addLink(rightSwitch1, rightHost)
        self.addLink(rightSwitch2, rightHost)


topos = {'mytopo':(lambda:MyTopo() ) }

sudo mn --custom FILE_PATH --topo mytopo --mac

创建topo时可选的几个实用选项,这些在mininet walkthrough里都可以找到:

--custom: 按后面FILE_PATH对应的文件里给的脚本自定义拓扑

--topo mytopo:指定使用脚本文件中的哪个topo

--mac:这个对于简化实验来说很关键,在这个实验里它把H1的eth0和H2的eth0的mac地址分别设置为了00:00:00:00:00:01和00:00:00:00:00:02(注意,h2的eth1并没有被设置为00:00:00:00:00:02或00:00:00:00:00:03)

--test pingall:可以让所有host节点互ping,看网络是不是通的

此时,h1 ping h2,是可以ping通的,但是走的path是h1-s1-s2-h2,

下面我打

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值