2014-12-13 254 views
3

我使用mininet模擬了一個網絡拓撲。該拓撲包含由多個交換機連接的兩臺主機。在主機1我們運行一個客戶端應用程序,它創建一個套接字並嘗試連接到服務器應用程序主機2,但它會失敗。如果我在其連接的兩臺主機之一上本地運行客戶端和服務器腳本,則不會出現問題。在python中使用Mininet socket編程

server.py:

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
s.bind(('127.0.0.1', 10021)) 
s.listen(5) 
while 1: 
    (clientsocket, address) = s.accept() 
    #DO STH. 
clientsocket.close() 

client.py:

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
s.connect((args['ip'], 10021)) 
while 1: 
    #DO STH. 
s.close() 

在這裏用於執行命令以啓動服務器和客戶端應用程序

代碼topology.py:

server = net.getNodeByName('host2') 
client = net.getNodeByName('host1') 
server.cmd('./server.py & > serveroutput') 
client.cmd('./client.py -i %serverIP > clientfile' % server.getIP()) 
+1

我只有在連接到主機2時連接腳本失敗。問題是什麼?爲什麼失敗?在這種情況下,我們需要多一點繼續。例如錯誤是......? – 2014-12-13 13:05:07

回答

0

您是否在拓撲中使用OVS openflow交換機?

如果它們啓用了openflow,則需要運行像Ryu或POX這樣的SDN控制器。控制器會在兩臺主機之間創建一條路徑。

右側主機1正在嘗試連接到主機2.向交換機發送一些TCP消息,但交換機不知道該如何處理,因此需要向SDN控制器尋求幫助。但沒有控制器。所以連接失敗。

如果不是OpenFlow的交換機啓用它會發現,它的方式來承載2

如果交換機使用OpenFlow的因此,檢查。

0

如果你不使用控制器,你應該配置OVS的流表,並允許你的數據流。你可以使用ping和iperf檢查兩個主機之間的連接嗎?