Mininet:如何使两个交换机之间的两个主机通信

时间:2019-03-26 18:11:32

标签: python mininet

我正在使用mininet在python中制作一个简单的脚本。 我想让由两个开关(例如s1和s2)隔开的两个主机(例如h1和h2)进行通信。 当h1尝试ping h2时,针对h2 IP地址的ARP解析请求穿过了两台交换机之间的链接,但没有到达另一台主机。

这是拓扑:

H1 ------------- S1 ------------- S2 ------------ H2

IP H1 10.10.0.1/24
Mac H1 00:00:00:10:00:01
IP H2 10.10.0.2/24
Mac H2 00:00:00:10:00:02

def networkTest():

    net = Mininet( topo=None,
               build=False )


    s1 = net.addHost('s1', cls=Node)
    s2 = net.addHost('s2', cls=Node)

    h1 = net.addHost('h1', cls=Host, mac='00:00:10:10:00:01')
    h2 = net.addHost('h2', cls=Host, mac='00:00:10:10:00:02')

    Link(s1, h1, intfName1='s1-eth0')
    Link(s2, h2, intfName1='s2-eth0')
    Link(s1, s2, intfName1='s1-eth1')

    net.build()

    for controller in net.controllers:
        controller.start()

    h1.cmd('ip addr add 10.10.0.1/24 dev h1-eth0')
    h1.cmd('ip link set h1-eth0 up')

    h2.cmd('ip addr add 10.10.0.2/24 dev h2-eth0')
    h2.cmd('ip link set h2-eth0 up')

    s1.cmd('brctl addbr br0')
    s1.cmd('brctl addif br0 s1-eth0')
    s1.cmd('brctl addif br0 s1-eth1')
    s1.cmd('ip link set br0 up')

    s2.cmd('brctl addbr br1')
    s2.cmd('brctl addif br1 s2-eth0')
    s2.cmd('ip link set br1 up')

    CLI(net)
    net.stop()

在mininet CLI内部,我在h1上打开了xterm并尝试ping h2

ping 10.10.0.2

但答案是

From 10.10.0.1 icmp_seq = 1 Destination Host Unreachable

1 个答案:

答案 0 :(得分:0)

我认为您的主机未通过任何控制器连接。确保您的主机与您可以确定的任何控制器(Opendaylight,Floodlight等)连接。只需在mininet上全部键入pingall。它应该显示以下内容:

h1 ---> h2 h3 h2 ---> h1 h3 h3 ---> h1 h2-