Классический дизайн сети выглядит следующим образом:
Классический подход включает разделение сети на уровни:
- Client Access - Подключение конечных устройств
- Distribution - Если коммутаторов доступа становится много, появляется Distribution Layer, который объединяет коммутаторы уровня Client Access. В случае территориального распределения, добавляются дополнительные коммутаторы Distribution Layer.
- Core Layer - объединяет всю сеть. К нему уже подключаются маршрутизаторы с каналами в WAN, Internet, IPSec
Главный вопрос, как это всё будет выглядеть с точки зрения STP?
Различие этих схем в том, что во втором варианте на всех аксесных коммутаторах живут все ВЛАН-ы.
Что делать, если пользователю понадобится находиться в одном ВЛАН-е, поверх L3?
Мы конечно можем выбрать правый вариант. Но в случаях, когда сеть настолько большая, что сегментирована на 3-м уровне, нам как раз понадобится VXLAN.
Следующим развитием является внедрение VXLAN, которая вводит понятия:
- Underlay network (опорная сеть) - то, как наша сеть устроена физически. Основа, на которую мы можем накладывать другие сервисы.
- Overlay network (наложенная сеть) - сервисы, которые живут поверх Underlay network.
VXLAN позволяет:
- L2 туннель поверх L3 IP сети. Подобно GRE, только инкапсулирует Ethernet фрейм, но не IP пакеты. В качестве транспорта UDP.
- Расширяет адресное пространство. Количество VLAN ограничено числом 4096, в то время как VXLAN id может быть до 16млн.
- Поскольку для передачи L2 используется L3, теперь не нужен STP, что позволяет использовать несколько путей для передачи L2.
- Оптимизация изучения MAC адресов, ARP запросов, - поскольку MAC адреса должны изучаться только на граничных устройствах.
- Поддержка multi-tenancy - аналог VRF. Позволяет использовать одинаковые VLAN id
VXLAN - Virtual eXtensible Local Area Network
VNID (VNI) - VXLAN Network ID, номер логической сети (аналог VLAN id). Для того, чтобы два хоста находились в одном широковещательном домене, они должны находиться в одной VNID.
VTEP - VXLAN Tunnel End Point, коммутаторы, которые терминируют туннель VXLAN.
VXLAN шлюз - VTEP может выступать в качестве шлюза L2 (простая коммутация) или шлюза L3 (перекладывать пакет из одного VXLAN в другой)
NVE - Network Virtual Edge - сущность самого туннеля. То как реализован сам туннель.
В данном примере у нас 3 VTEP-а.
К этим VTEP-ам подключены 3 хоста, у каждого из которых есть свои MAC и IP адреса.
Предположим, наша задача поместить все три хоста в одну подсеть.
Суть в том, что между VTEP-ами должна быть построена некая наложенная сеть(Overlay network), поэтому задачи VTEP-ов следующие:
- Где находятся хосты? В большинстве случаев хосты подключаются непосредственно в порт VTEP-а. Поэтому, как только от хоста придет пакет, сразу станет понятно где этот хост.
- VTEP-ы должны узнать об остальных VTEP-ах
- Передача трафика BUM (Broadcast, Unknown Unicast, Multicast). По сути либо передаётся несколько копий Unicast. Либо, если Underlay network позволяет, используется multicast на ней.
Итак, как VTEP-ы узнают друг о друге?
Это происходит через VTEP discovery:
- Flood&Learn - VTEP передаёт трафик в сеть и ждет ответа.
- BGP/EVPN - между всеми VTEP поднимается BGP. В рамках BGP передаётся управляющая информация.
Где находятся хосты?
Это происходит через Host Reachability:
Через BGP передаётся информация о подключенных хостах, либо используем Flood&Learn
BAM Handling - Передача трафика BUM (Broadcast, Unknown Unicast, Multicast). По сути либо передаётся несколько копий Unicast. Либо, если Underlay network позволяет, используется multicast на ней.
Что делать: VXLAN Routing или VXLAN Bridging
Это зависит от настроек - сделать одну VXLAN или несколько и настроить маршрутизацию между ними.
Шлюз может быть централизован(Centralised Gateway), либо распределен (Anycast Gateway).
При централизованном шлюзе пакет из vni30000 на vni30001 пойдет по L2 через центральный шлюз.
В случае распределенного на всех VTEP настраиваются несколько vni, и маршрутизация происходит на каждом.
Чаще всего используется распределенный шлюз.
Глобально таких сервисов два:
- Сервис 2-го уровня. Т.е. мы получаем виртуальный коммутатор
- Сервис 3-го уровня. В этом случае на уровне VXLAN будет шлюз 3 уровня.
Для этих двух типов сервисов бывают и разные шлюзы
Шлюз L2: Из VXLAN в VLAN
Шлюз L3: Из VXLAN в другой VXLAN или в VLAN
При работе сервиса 2-го уровня по сути VLAN-ы растягиваются посредством L2 VNI.
VLAN ассоциируется с VNI на кадом VTEP
Здесь у нас Host2 и Host4 подключены к разным VTEP, которые друг с другом как-то соединены. Для этих хостов мы создаём VNI A на обоих VTEP, а также ассоциацию VNI A с соответствующим VLAN. Таким образом мы получаем растянутый L2 сегмент.
Например пусть хост H2 находится в VLAN100, т.е. на порту подключения хоста есть настройка switch-port acces vlan 100.
Когда пакет от H2 попадет на порт коммутатора, он прийдет на коммутатор в рамках VLAN100.
Если VTEP поймет, что удаленный хост находится за VXLAN, такой пакет при передаче по сети, будет помечен номером VNI A.
Далее пакет VXLAN добегает до 2-го VTEP. VTEP снимает заголовки VXLAN, и отдает пакет в VLAN100.
Поскольку ассоциация VLAN id и VNI происходит независимо, на втором коммутаторе мы можем отдавать пакеты и в другой номер VLAN, т.е. разные VLAN можно объединить в одну VNI, т.е. в один широковещательный домен.
Если необходимо передать пакеты между устройствами, которые находятся в разных подсетях и в разных широковещательных доменах, потребуется L3 VNI.
На картинке L3 VNI помечен как VNI X.
Добавить комментарий