from mininet.topo import Topo
from mininet.net import Mininet
from mininet.node import RemoteController
from mininet.cli import CLI
from mininet.link import TCLink

class MyTopo(Topo):
    def __init__(self):
        Topo.__init__(self)
        # 添加主机
        h1 = self.addHost('h1')
        h2 = self.addHost('h2')

        # 添加路由器
        r1 = self.addHost('r1')
        r2 = self.addHost('r2')
        r3 = self.addHost('r3')
        r4 = self.addHost('r4')

        # 添加连接
        self.addLink(h1, r1, intfName1='h1-eth0', intfName2='r1-eth0')
        self.addLink(h1, r2, intfName1='h1-eth1', intfName2='r2-eth0')
        self.addLink(h2, r3, intfName1='h2-eth0', intfName2='r3-eth0')
        self.addLink(h2, r4, intfName1='h2-eth1', intfName2='r4-eth0')
        self.addLink(r1, r2, intfName1='r1-eth1', intfName2='r2-eth1')
        self.addLink(r3, r4, intfName1='r3-eth1', intfName2='r4-eth1')

        # 配置路由器
        r1.cmd('ifconfig r1-eth1 10.0.0.2/24')
        r1.cmd('ifconfig r1-eth0 up')
        r1.cmd('echo 1 > /proc/sys/net/ipv4/ip_forward')
        r2.cmd('ifconfig r2-eth1 10.0.0.3/24')
        r2.cmd('ifconfig r2-eth0 up')
        r2.cmd('echo 1 > /proc/sys/net/ipv4/ip_forward')
        r3.cmd('ifconfig r3-eth1 10.0.0.4/24')
        r3.cmd('ifconfig r3-eth0 up')
        r3.cmd('echo 1 > /proc/sys/net/ipv4/ip_forward')
        r4.cmd('ifconfig r4-eth1 10.0.0.5/24')
        r4.cmd('ifconfig r4-eth0 up')
        r4.cmd('echo 1 > /proc/sys/net/ipv4/ip_forward')

topo = MyTopo()
net = Mininet(topo=topo, link=TCLink)
net.start()
CLI(net)
net.stop()

在命令行中运行:sudo python topo.py即可创建拓扑。

Mininet 拓扑示例:两个主机,四个路由器,无远程控制器

原文地址: https://www.cveoy.top/t/topic/lDI5 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录