Mininet 拓扑代码:无控制器,双主机四路由网络
以下是一个符合要求的 Mininet 拓扑代码:
from mininet.topo import Topo
from mininet.net import Mininet
from mininet.link import TCLink
class MyTopo(Topo):
def build(self):
# 添加主机
h1 = self.addHost('h1')
h2 = self.addHost('h2')
# 添加路由器
r1 = self.addSwitch('r1')
r2 = self.addSwitch('r2')
r3 = self.addSwitch('r3')
r4 = self.addSwitch('r4')
# 添加链路
self.addLink(h1, r1, bw=10)
self.addLink(h1, r2, bw=10)
self.addLink(h2, r3, bw=10)
self.addLink(h2, r4, bw=10)
self.addLink(r1, r2, bw=5)
self.addLink(r3, r4, bw=5)
# 配置路由器
r1.cmd('ifconfig r1-eth0 0')
r1.cmd('ifconfig r1-eth1 0')
r2.cmd('ifconfig r2-eth0 0')
r2.cmd('ifconfig r2-eth1 0')
r3.cmd('ifconfig r3-eth0 0')
r3.cmd('ifconfig r3-eth1 0')
r4.cmd('ifconfig r4-eth0 0')
r4.cmd('ifconfig r4-eth1 0')
r1.cmd('echo 1 > /proc/sys/net/ipv4/ip_forward')
r2.cmd('echo 1 > /proc/sys/net/ipv4/ip_forward')
r3.cmd('echo 1 > /proc/sys/net/ipv4/ip_forward')
r4.cmd('echo 1 > /proc/sys/net/ipv4/ip_forward')
r1.cmd('route add -net 10.0.2.0/24 dev r1-eth0')
r1.cmd('route add -net 10.0.3.0/24 dev r1-eth1')
r1.cmd('route add -net 10.0.4.0/24 via 10.0.2.2')
r1.cmd('route add -net 10.0.5.0/24 via 10.0.2.2')
r2.cmd('route add -net 10.0.1.0/24 dev r2-eth0')
r2.cmd('route add -net 10.0.3.0/24 via 10.0.1.1')
r2.cmd('route add -net 10.0.4.0/24 via 10.0.1.1')
r2.cmd('route add -net 10.0.5.0/24 via 10.0.1.1')
r3.cmd('route add -net 10.0.1.0/24 via 10.0.4.2')
r3.cmd('route add -net 10.0.2.0/24 via 10.0.4.2')
r3.cmd('route add -net 10.0.5.0/24 dev r3-eth1')
r4.cmd('route add -net 10.0.1.0/24 via 10.0.5.1')
r4.cmd('route add -net 10.0.2.0/24 via 10.0.5.1')
r4.cmd('route add -net 10.0.3.0/24 dev r4-eth1')
if __name__ == '__main__':
topo = MyTopo()
net = Mininet(topo=topo, link=TCLink)
net.start()
net.pingAll()
net.stop()
在这个拓扑中,我们使用了四个路由器和两个主机,每个主机连接两个路由器,路由器之间通过链路连接。我们使用了 TCLink 来配置链路带宽。
在配置路由器时,我们通过 ifconfig 命令将所有接口的 IP 地址设为 0,然后使用 echo 命令将路由器的 IP 转发功能打开。接下来,我们添加了一些路由规则来设置路由器的转发表。例如,对于路由器 r1,我们将其 eth0 接口的网络设为 10.0.2.0/24,将其 eth1 接口的网络设为 10.0.3.0/24,然后添加了两个静态路由,将 10.0.4.0/24 和 10.0.5.0/24 分别通过 10.0.2.2 进行转发。这样,在主机 h1 想要访问主机 h2 时,路由器 r1 会根据转发表将数据包转发给路由器 r2,然后再由 r2 转发给 h2。
原文地址: http://www.cveoy.top/t/topic/lDJl 著作权归作者所有。请勿转载和采集!