簡體   English   中英

主機無法在具有自定義拓撲和 OpenDayLight 的 mininet VM 上相互 ping

[英]Hosts can't ping each other on mininet VM with custom topology and OpenDayLight

前言

主機操作系統:Win10

嘗試過的 Mininet VM:Ubuntu Server 18.04、18.04.6、20.04、22.04,由 mininet 提供的預配置 VM 我也嘗試使用預配置的 ODL VM 並自己從源代碼構建。

虛擬機軟件:VMware Workstation

嘿,我對 SDN、mininet 和 ODL 還很陌生。 我已經設置了一個橋接 VM,將 ODL 實例作為遠程控制器運行,然后我還設置了一個包含 mininet 的單獨橋接 VM。

我想指出一個事實,如果我運行諸如sudo mn -x --mac --topo single,3 --controller=remote,ip=192.168.0.37,port=6633 --switch ovsk,protocols=OpenFlow13的命令(這本質上是我試圖通過 python 腳本重新創建的),一切正常; 我的主機可以相互通信,並且拓撲按預期顯示在我的 ODL webview 中。

我試過查看多個 SO 線程,但沒有運氣,我也無法在網上找到任何資源來解決我的問題。

問題

我的問題是,每當我嘗試使用sudo python/2/3 script.py運行我的自定義 mininet 拓撲時,我的主機無法相互 ping 通,並且拓撲不會出現在我的 ODL webview 中。 我已經嘗試運行越來越簡單的python腳本,試圖讓它工作。 這是迄今為止我嘗試過的最簡單的。 腳本.py:

#!/usr/bin/python
from mininet.net import Mininet
from mininet.node import Controller
from mininet.cli import CLI
from mininet.link import TCLink
from mininet.log import setLogLevel, info
from mininet.node import OVSKernelSwitch, RemoteController

def myNetwork():

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

    info( '*** Adding controller\n' )
    net.addController(name='c0',controller=RemoteController,ip='192.168.0.37',port=6633)

    info('*** Add single switch\n')
    s1 = net.addSwitch('s1')

    info('*** Add hosts\n')
    h1 = net.addHost('h1')
    h2 = net.addHost('h2')
    h3 = net.addHost('h3')
    h4 = net.addHost('h4')
    h5 = net.addHost('h5')
    h6 = net.addHost('h6')

    info('*** Add links with QoS parameters\n')
    net.addLink(h1, s1, cls=TCLink, bw=1000, delay='1ms', loss=1)
    net.addLink(h2, s1, cls=TCLink, bw=100, delay='1ms', loss=1)
    net.addLink(h3, s1, cls=TCLink, bw=50, delay='1ms', loss=1)
    net.addLink(h4, s1, cls=TCLink, bw=10, delay='1ms', loss=1)
    net.addLink(h5, s1, cls=TCLink, bw=5, delay='1ms', loss=1)
    net.addLink(h6, s1, cls=TCLink, bw=1, delay='1ms', loss=1)

    info('*** Starting network\n')
    net.start()
    CLI(net)
    net.stop()

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

還需要注意的是,如果我在 miniedit 中創建網絡(將控制器設置為 RemoteController 並輸入其 IP),打開 h1 的終端時,我可以完全正常地 ping h2。 第二次我保存 l2 腳本,關閉 miniedit 並嘗試使用sudo python/2/3 l2script.py運行腳本,沒有主機可以再次相互 ping 通。

任何幫助將不勝感激,因為我一生都無法弄清楚問題所在。 這幾天我一直在撓頭。

干杯,祝你好運!

編輯

我在 s0 上運行了 wireshark,每當我嘗試 ping 時,都會收到大量 ARP 請求,但從未發出響應。

我已經設法解決了我的問題。

原來我發布的代碼不應該工作(afaik)。 在我之前嘗試過的版本中,我使用s1 = net.addSwitch('s1', cls=OVSKernelSwitch, protocol='OpenFlow13')聲明了 s0 ,我應該在其中完成s1 = net.addSwitch('s1', cls=OVSKernelSwitch, protocols='OpenFlow13') (在protocols='OpenFlow13'的末尾錯過了一個s。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM