写一个mininet的拓扑代码,包含两个主机,四个路由器,每个主机与两个路由器相连,每个路由器与一个主机和另一个路由器相连,路由器中配置转发规则,不使用远程控制器
from mininet.topo import Topo
from mininet.net import Mininet
from mininet.node import Node
from mininet.link import Link
from mininet.log import setLogLevel, info
class MyTopo(Topo):
def __init__(self):
# Initialize topology
Topo.__init__(self)
# Add hosts
h1 = self.addHost('h1')
h2 = self.addHost('h2')
# Add switches
s1 = self.addSwitch('s1')
s2 = self.addSwitch('s2')
s3 = self.addSwitch('s3')
s4 = self.addSwitch('s4')
# Add links
self.addLink(h1, s1)
self.addLink(h1, s2)
self.addLink(h2, s3)
self.addLink(h2, s4)
self.addLink(s1, s2)
self.addLink(s2, s3)
self.addLink(s3, s4)
self.addLink(s4, s1)
# Set routing rules for switches
s1.setIP('10.0.1.1', 24)
s2.setIP('10.0.2.1', 24)
s3.setIP('10.0.3.1', 24)
s4.setIP('10.0.4.1', 24)
s1.cmd('route add -net 10.0.2.0/24 gw 10.0.1.2 dev s1-eth1')
s1.cmd('route add -net 10.0.3.0/24 gw 10.0.4.2 dev s1-eth3')
s2.cmd('route add -net 10.0.1.0/24 gw 10.0.2.2 dev s2-eth2')
s2.cmd('route add -net 10.0.4.0/24 gw 10.0.3.2 dev s2-eth3')
s3.cmd('route add -net 10.0.2.0/24 gw 10.0.3.1 dev s3-eth1')
s3.cmd('route add -net 10.0.1.0/24 gw 10.0.4.1 dev s3-eth2')
s4.cmd('route add -net 10.0.3.0/24 gw 10.0.4.2 dev s4-eth1')
s4.cmd('route add -net 10.0.2.0/24 gw 10.0.1.1 dev s4-eth2')
if __name__ == '__main__':
setLogLevel('info')
topo = MyTopo()
net = Mininet(topo=topo, controller=None)
net.start()
info('*** Running CLI\n')
NodeCLI(net)
net.stop()
在这个拓扑中,我们使用了四个交换机和两个主机,主机和交换机之间使用了 Link 连接。每个交换机都有两个端口连接主机,两个端口连接其他的交换机。在拓扑中,我们没有使用远程控制器,而是将路由和路由规则直接加到了交换机上。这个拓扑对于学习网络编程和网络拓扑结构非常有用,可以帮助我们更好地理解网络的工作原理。
原文地址: http://www.cveoy.top/t/topic/rFv 著作权归作者所有。请勿转载和采集!