2014-12-13 251 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检查两个主机之间的连接吗?