Open vSwitch, внутриполосное управление: как это работает?

Я пытаюсь измерить влияние потока управления на производительность Open vSwitch при использовании внутриполосных подключений.

Итак, в этой задаче мне нужно подсчитать сообщения, отправленные с контроллера на каждый коммутатор в сети, использующий внутриполосное управление.

Я пытаюсь понять, как контроллер устанавливает потоки в Open vSwitch при использовании внутриполосного соединения. Я создал пример топологии с использованием мининета и этой статьи: http://tocai.dia.uniroma3.it/compunet-wiki/index.php/In-band_control_with_Open_vSwitch

Топология содержит 5 коммутаторов, соединенных один за другим (как показано на первой картинке статьи).

Контроллер запускается на хосте h3. В моем случае используется контроллер POX. И все пингуется.

Поэтому, когда я пытаюсь перехватить трафик на интерфейсах s1 ... s5, я вижу, что сообщения OpenFlow (PacketIn, PacketOut и т. д.) появляются только на интерфейсе s3. На другом интерфейсе я не вижу пакетов TCP или OpenFlow.

Вопрос как контроллер устанавливает новые потоки на коммутаторы s1, s2, s4, s5? И как сообщения контроллера доставляются на коммутатор, который напрямую не подключен к контроллеру?

Спасибо.


person MagicMan    schedule 01.05.2015    source источник


Ответы (1)


Смотрите не дальше документации OVS! В проектном документе OpenVSwitch есть раздел, подробно описывающий это:

Дизайнерские решения в Open vSwitch:

В подразделе реализации говорится:

Open vSwitch реализует внутриполосное управление как скрытые потоки, то есть потоки, которые не видны через OpenFlow, и с более высоким приоритетом, чем потоки с подстановочными знаками, которые могут быть настроены через OpenFlow. Это сделано для того, чтобы контроллер OpenFlow не мог мешать им и, возможно, нарушать связь со своими коммутаторами. Посмотреть все потоки, в том числе внутриполосные, можно с помощью команды ovs-appctl bridge/dump-flows.

(...)

Следующие правила (с действием OFPP_NORMAL) устанавливаются на любом мосту, имеющем какие-либо удаленные устройства:

(a) Запросы DHCP, отправленные с локального порта.

(b) ARP отвечает на MAC-адрес локального порта.

(c) ARP-запросы с MAC-адреса локального порта.

In-band также устанавливает следующие правила для каждого уникального MAC-адреса следующего прыжка для IP-адресов удаленных устройств (следующим узлом является либо сам удаленный узел, если он находится в локальной подсети, либо шлюз для доступа к удаленному устройству):

(d) ARP отвечает на MAC-адрес следующего перехода.

(e) ARP-запросы с MAC-адреса следующего перехода.

In-band также устанавливает следующие правила для каждого уникального удаленного IP-адреса:

(f) Ответы ARP, содержащие IP-адрес удаленного устройства в качестве цели.

(g) Запросы ARP, содержащие IP-адрес удаленного устройства в качестве источника.

In-band также устанавливает следующие правила для каждой уникальной удаленной пары (IP, порт):

(h) TCP-трафик на IP-адрес и порт удаленного устройства.

(i) TCP-трафик с удаленного IP-адреса и порта.

Цель этих правил — сделать их как можно более узкими, чтобы позволить коммутатору присоединиться к сети и иметь возможность взаимодействовать с удаленными устройствами. Как упоминалось ранее, эти правила имеют более высокий приоритет, чем правила контроллера, поэтому, если они слишком широкие, они могут помешать контроллеру реализовать свою политику. Таким образом, внутриполосный режим активно отслеживает некоторые аспекты обработки потоков и пакетов, чтобы правила могли быть более точными.

Внутриполосное управление отслеживает попытки добавить потоки в тракт данных, которые могут помешать выполнению его функций. Путь данных допускает только записи с точным соответствием, поэтому внутриполосное управление может быть очень точным в отношении потоков, которые оно предотвращает. Потоки, пропущенные в пути данных, отправляются в пространство пользователя для обработки, поэтому предотвращение кэширования этих потоков в быстром пути не влияет на правильность. Единственный тип потока, который в настоящее время запрещен, — это поток, который не позволяет локальным портам видеть ответы DHCP. Например, правило, которое перенаправляет весь DHCP-трафик на контроллер, не будет разрешено, а правило, которое перенаправляется на все порты (включая локальный порт), будет разрешено.

Документ также содержит дополнительную информацию об особых случаях и возможных проблемах, но он довольно длинный, поэтому я его здесь не привожу.

person jmiserez    schedule 19.05.2015