mininet写一个不适用远程控制器的传统拓扑,包含2个路由器和4个主机,每个路由器连接2台主机,每台主机属于不同的网段,路由器中设置转发规则
下面是一个不使用远程控制器的传统拓扑,包含2个路由器和4个主机。每个路由器连接2台主机,每台主机属于不同的网段。路由器中设置了转发规则,以实现不同网段之间的通信。
from mininet.net import Mininet
from mininet.node import Node
from mininet.topo import Topo
from mininet.link import TCLink
class MyTopo(Topo):
def __init__(self):
# Initialize topology
Topo.__init__(self)
# Add hosts
h1 = self.addHost('h1', ip='10.0.1.1/24')
h2 = self.addHost('h2', ip='10.0.1.2/24')
h3 = self.addHost('h3', ip='10.0.2.1/24')
h4 = self.addHost('h4', ip='10.0.2.2/24')
# Add switches
s1 = self.addSwitch('s1')
s2 = self.addSwitch('s2')
# Add links
self.addLink(s1, h1)
self.addLink(s1, h2)
self.addLink(s2, h3)
self.addLink(s2, h4)
self.addLink(s1, s2, bw=1000)
# Set routing rules
s1.setIP('192.168.1.1', 24)
s2.setIP('192.168.2.1', 24)
s1.cmd('route add -net 10.0.2.0/24 gw 192.168.1.2')
s2.cmd('route add -net 10.0.1.0/24 gw 192.168.2.2')
if __name__ == '__main__':
topo = MyTopo()
net = Mininet(topo=topo, link=TCLink)
net.start()
net.pingAll()
net.stop()
在这个拓扑中,s1和s2是两个路由器,分别连接着h1、h2和h3、h4这四个主机。h1和h2属于10.0.1.0/24网段,h3和h4属于10.0.2.0/24网段。s1的IP地址是192.168.1.1,s2的IP地址是192.168.2.1。为了实现不同网段之间的通信,需要设置转发规则。
在s1中,添加了一条路由规则,将10.0.2.0/24网段的数据包发送到网关192.168.1.2。这个网关是s2的IP地址,因为s2连接着10.0.2.0/24网段的主机。在s2中,也添加了一条类似的路由规则,将10.0.1.0/24网段的数据包发送到网关192.168.2.2。这个网关是s1的IP地址,因为s1连接着10.0.1.0/24网段的主机。
这样,当h1向h3发送数据包时,数据包会先到达s1。s1根据转发规则,将数据包发送到s2。s2收到数据包后,会将数据包发送给h3。同样地,当h4向h2发送数据包时,数据包会先到达s2。s2根据转发规则,将数据包发送到s1。s1收到数据包后,会将数据包发送给h2。通过这种方式,实现了不同网段之间的通信。
原文地址: https://www.cveoy.top/t/topic/xDg 著作权归作者所有。请勿转载和采集!