Open vSwitch¶
Коротко¶
Программный коммутатор уровня L2-L4. Поддерживает OpenFlow, VLAN, bonding, QoS. Используется в виртуализации (OpenStack, KVM) и SDN.
Архитектура¶
Три основных компонента:
ovsdb-server - база данных конфигурации. Хранит настройки bridges, ports, interfaces. Конфигурация переживает перезагрузку.
ovs-vswitchd - демон коммутатора. Читает конфиг из ovsdb, управляет datapath, обрабатывает OpenFlow.
datapath - модуль ядра (или userspace/DPDK). Выполняет быструю пересылку пакетов по закэшированным flow. Если flow нет - отправляет пакет в ovs-vswitchd.
Путь пакета:
- Пакет приходит на порт
- Datapath ищет matching flow
- Есть flow -> выполняет actions в ядре (быстро)
- Нет flow -> upcall в ovs-vswitchd -> решение -> новый flow в datapath
Команды¶
ovs-vsctl¶
Общая информация о bridges и портах.
Список bridges.
Список портов на bridge.
Список всех интерфейсов.
Получить VLAN tag порта.
ovs-ofctl¶
Информация о bridge и портах (OpenFlow port numbers).
Все flow rules.
Flows из конкретной таблицы.
Статистика портов (пакеты, байты).
Описание портов (state, speed).
ovs-appctl¶
Трассировка пакета через flow tables.
MAC-таблица (FDB).
Статистика datapath.
Flows включая скрытые.