2014-12-13 2 views
3

Я эмулировал сетевую топологию с использованием mininet. Топология содержит два узла, подключенных несколькими коммутаторами. На хост 1 мы запускаем клиентское приложение, которое создает сокет и пытается подключиться к серверному приложению на хосте 2, однако он не работает. Если я запускаю клиентский и серверный скрипты локально на одном из двух хостов, он подключается без проблем.Программирование сокетов Mininet в python

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. В чем вопрос? Почему он терпит неудачу? В этом случае нам нужно немного больше, чтобы продолжать. Ошибки, например, ...? –

ответ

0

Вы используете переключатели открытого типа OVS в своей топологии?

Если они открыты с открытым потоком, вам необходимо иметь контроллер SDN, например, Ryu или POX. Контроллер создаст путь между двумя узлами.

Правильный хост 1 пытается подключиться к хосту 2. Отправляет на коммутатор некоторые сообщения TCP, но коммутатор не знает, что делать, поэтому ему нужно обратиться за помощью к контроллеру SDN. Но нет контроллера. Таким образом соединение не удается.

Если он не был включен OpenFlow выключателей он нашел бы свой путь провести 2.

Так проверьте, если переключатель используется OpenFlow.

0

Если вы не используете контроллер, вы должны настроить таблицу потоков OVS и разрешить поток данных. Можете ли вы проверить соединение g между двумя хостами, используя ping и iperf?

Смежные вопросы