Mininet 构建传统网络拓扑:2 个路由器,4 个主机,不同网段通信
下面是一个不使用远程控制器的传统拓扑,包含 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/lK42 著作权归作者所有。请勿转载和采集!