OVS
Коротко
Программный коммутатор уровня 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 включая скрытые.