Одной из возможностей VMware NSX является поддержка нескольких VTEP (VXLAN Tunnel Endpoint), через которые осуществляется взаимодействие виртуальных машин с внешним миром (ВМ на других хостах и физическими устройствами).
Каждый VTEP представляет собой отдельный VMKernel интерфейс на хосте ESXi, который использует физические интерфейсы (аплинков) для передачи трафика VXLAN.
При настройке кластера администратор может выбрать - использовать один VTEP на каждом хосте или несколько. При использовании одного VTEP на хост поддерживаются практически все режимы балансировки за исключением балансировки по загрузке физического адаптера (Physical NIC Load).
Создание нескольких VTEP на одном хосте может пригодиться в тех случаях, когда нет возможности объединить интерфейсы при помощи LACP или Etherchannel, но требуется каким-либо образом обеспечить их равномерную загрузку. При использовании нескольких VTEP поддерживаются два режима балансировки:
При выборе режима балансировки по Port ID или MAC hash мастер настройки автоматически задает количество VTEP равное количеству аплинков на распределенном коммутаторе. На всех хостах в кластере создается по одному VMkernel интерфейсу для каждого VTEP (в данном случае vmk1 и vmk2).
Все ВМ, создаваемые на хосте с несколькими VTEP, и подключающиеся к логическим коммутаторам, будут распределены между VTEP.
В ряде случаев требуется узнать - какой VTEP и какой физический интерфейс используется для передачи трифика ВМ?
Сделать это можно двумя способами. Во-первых, подключившись к хосту по SSH или через сервисную консоль, и запустив утилиту esxtop. После запуска нужно нажать клавишу 'n', чтобы переключиться на отображение информации о сети.
Для VMkernel интерфейсов и для сетевых интерфейсов ВМ информация об используемом аплинке будет отображаться в колонке TEAM-PNIC. Определить - какой VTEP используется, можно, сопоставив имя аплинка для сетевого интерфейса ВМ с именем аплинка для VMKernel интерфейса (в данном случае, для nsxsrv04 используется vmk1, а для nsxsrv05 - vmk2). Однако, этот способ работает не всегда.
Выбор VTEP для передачи трафика осуществляется в момент когда сетевой интерфейс ВМ переходит в активное состояние. Соответственно, такие операции, как перезагрузка ВМ или отключение/подключение сетевого интерфейса ВМ могут привести к смене используемого VTEP.
Однако, смена VTEP не происходит, если отключается или выходит из строя один из аплинков на хосте. В этом случае VMKernel интерфейс переключается на один из оставшихся активных аплинков и ВМ продолжает свою работу в качестве VTEP. Возвращаясь к примеру с esxtop, в случае когда один из физических интерфейсов вышел из строя, и несколько VMKernel используют один и тот же аплинк, невозможно будет понять - для какого сетевого адаптера ВМ какой VTEP используется.
Второй способ определить VTEP - подключиться к NSX Manager'у и выполнить команду:
show logical-switch controller <controller_id> vni <vni_id> mac
NSX Manager отобразит информацию об известных MAC адресах ВМ и IP адресах VTEP, через которые осуществляется сетевое взаимодействие с данными ВМ. Зная MAC адрес сетевого адаптера ВМ можно легко определить VTEP, который он использует.
Каждый VTEP представляет собой отдельный VMKernel интерфейс на хосте ESXi, который использует физические интерфейсы (аплинков) для передачи трафика VXLAN.
При настройке кластера администратор может выбрать - использовать один VTEP на каждом хосте или несколько. При использовании одного VTEP на хост поддерживаются практически все режимы балансировки за исключением балансировки по загрузке физического адаптера (Physical NIC Load).
Создание нескольких VTEP на одном хосте может пригодиться в тех случаях, когда нет возможности объединить интерфейсы при помощи LACP или Etherchannel, но требуется каким-либо образом обеспечить их равномерную загрузку. При использовании нескольких VTEP поддерживаются два режима балансировки:
- Route based on Port ID
- Route based on Source MAC hash
При выборе режима балансировки по Port ID или MAC hash мастер настройки автоматически задает количество VTEP равное количеству аплинков на распределенном коммутаторе. На всех хостах в кластере создается по одному VMkernel интерфейсу для каждого VTEP (в данном случае vmk1 и vmk2).
Все ВМ, создаваемые на хосте с несколькими VTEP, и подключающиеся к логическим коммутаторам, будут распределены между VTEP.
В ряде случаев требуется узнать - какой VTEP и какой физический интерфейс используется для передачи трифика ВМ?
Сделать это можно двумя способами. Во-первых, подключившись к хосту по SSH или через сервисную консоль, и запустив утилиту esxtop. После запуска нужно нажать клавишу 'n', чтобы переключиться на отображение информации о сети.
Для VMkernel интерфейсов и для сетевых интерфейсов ВМ информация об используемом аплинке будет отображаться в колонке TEAM-PNIC. Определить - какой VTEP используется, можно, сопоставив имя аплинка для сетевого интерфейса ВМ с именем аплинка для VMKernel интерфейса (в данном случае, для nsxsrv04 используется vmk1, а для nsxsrv05 - vmk2). Однако, этот способ работает не всегда.
Выбор VTEP для передачи трафика осуществляется в момент когда сетевой интерфейс ВМ переходит в активное состояние. Соответственно, такие операции, как перезагрузка ВМ или отключение/подключение сетевого интерфейса ВМ могут привести к смене используемого VTEP.
Однако, смена VTEP не происходит, если отключается или выходит из строя один из аплинков на хосте. В этом случае VMKernel интерфейс переключается на один из оставшихся активных аплинков и ВМ продолжает свою работу в качестве VTEP. Возвращаясь к примеру с esxtop, в случае когда один из физических интерфейсов вышел из строя, и несколько VMKernel используют один и тот же аплинк, невозможно будет понять - для какого сетевого адаптера ВМ какой VTEP используется.
Второй способ определить VTEP - подключиться к NSX Manager'у и выполнить команду:
show logical-switch controller <controller_id> vni <vni_id> mac
NSX Manager отобразит информацию об известных MAC адресах ВМ и IP адресах VTEP, через которые осуществляется сетевое взаимодействие с данными ВМ. Зная MAC адрес сетевого адаптера ВМ можно легко определить VTEP, который он использует.