3

我使用 mininet 模拟了网络拓扑。该拓扑包含由多个交换机连接的两台主机。在主机 1上,我们运行一个客户端应用程序,它创建一个套接字并尝试连接到主机 2上的服务器应用程序,但是它失败了。如果我在两台主机之一上本地运行客户端和服务器脚本,则它可以毫无问题地连接。

服务器.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()

客户端.py:

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

这里用于执行命令以启动服务器和客户端应用程序的代码

拓扑.py:

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

2 回答 2

0

您是否在拓扑中使用 OVS openflow 交换机?

如果它们启用了 openflow,您还需要运行像 Ryu 或 POX 这样的 SDN 控制器。控制器将在两台主机之间创建一条路径。

正确的主机 1 正在尝试连接到主机 2。向交换机发送一些 TCP 消息,但交换机不知道如何处理,因此需要向 SDN 控制器寻求帮助。但是没有控制器。所以连接失败。

如果不是启用了 openflow 的交换机,它就会找到托管 2 的方式。

所以检查交换机是否使用openflow。

于 2015-07-17T20:08:58.853 回答
0

如果不使用控制器,则应配置OVS的流表并允许数据流。您可以使用ping和iperf检查两台主机之间的连接吗?

于 2015-08-21T07:36:25.023 回答