Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在Mininet中创建简单拓扑(3个路由器和3个主机)_Python_Dump_Sdn_Mininet - Fatal编程技术网

Python 在Mininet中创建简单拓扑(3个路由器和3个主机)

Python 在Mininet中创建简单拓扑(3个路由器和3个主机),python,dump,sdn,mininet,Python,Dump,Sdn,Mininet,我试图通过修改创建的mininet示例(linuxrouter.py)来创建一个包含3个路由器和3个主机的拓扑 不幸的是,当我去: h1平h2 它不工作,并告诉我“无法访问目标主机”。 我想知道我在代码上做错了什么,非常感谢 这就是我心目中的拓扑结构: 这是python中的代码: #!/usr/bin/python from mininet.topo import Topo from mininet.net import Mininet from mininet.node import Nod

我试图通过修改创建的mininet示例(linuxrouter.py)来创建一个包含3个路由器和3个主机的拓扑

不幸的是,当我去:

h1平h2

它不工作,并告诉我“无法访问目标主机”。 我想知道我在代码上做错了什么,非常感谢

这就是我心目中的拓扑结构:

这是python中的代码:

#!/usr/bin/python
from mininet.topo import Topo
from mininet.net import Mininet
from mininet.node import Node
from mininet.log import setLogLevel, info
from mininet.cli import CLI


class LinuxRouter(Node):
    def config(self, **params):
        super(LinuxRouter, self).config(**params)
        self.cmd('sysctl net.ipv4.ip_forward=1')

    def terminate(self):
        self.cmd('sysctl net.ipv4.ip_forward=0')
        super(LinuxRouter, self).terminate()


class NetworkTopo(Topo):
    def build(self, **_opts):
        # Add 3 routers in three different subnets
        r1 = self.addNode('r1', cls=LinuxRouter, ip='10.0.0.1/24')
        r2 = self.addNode('r2', cls=LinuxRouter, ip='10.1.0.1/24')
        r3 = self.addNode('r3', cls=LinuxRouter, ip='10.2.0.1/24')

       # Adding hosts specifying the default route
        h1 = self.addHost(name='h1',
                          ip='10.0.0.251/24',
                          defaultRoute='via 10.0.0.1')
        h2 = self.addHost(name='h2',
                          ip='10.1.0.252/24',
                          defaultRoute='via 10.1.0.1')
        h3 = self.addHost(name='h3',
                          ip='10.2.0.253/24',
                          defaultRoute='via 10.2.0.1')
        # Add router-router link in a new subnet for the router-router connection
        self.addLink(r1,
                     r2,
                     intfName1='r1-eth0',
                     intfName2='r2-eth0',
                     params1={'ip': '10.5.0.1/24'},
                     params2={'ip': '10.5.0.100/24'})
        self.addLink(r1,
                     r3,
                     intfName1='r1-eth1',
                     intfName2='r3-eth0',
                     params1={'ip': '10.6.0.253/24'},
                     params2={'ip': '10.6.0.254/24'})
        self.addLink(r2,
                     r3,
                     intfName1='r2-eth1',
                     intfName2='r3-eth1',
                     params1={'ip': '10.7.0.1/24'},
                     params2={'ip': '10.7.0.10/24'})
        # Add host-router links
        self.addLink(h1, r1,intfName1='h1-eth3',intfName2='r1-eth3')
        self.addLink(h2, r2,intfName1='h2-eth4',intfName2='r2-eth4')
        self.addLink(h3, r3,intfName1='h3-eth5',intfName2='r3-eth5')

def run():
    topo = NetworkTopo()
    net = Mininet(topo=topo)
    # Add routing for reaching networks that aren't directly connected
    info(net['r1'].cmd("route"))
    info(net['r2'].cmd("route"))
    info(net['r3'].cmd("route"))
    net.start()
    CLI(net)
    net.stop()


if __name__ == '__main__':
    setLogLevel('info')
    run()