В прошлом посте мы рассказывали о IOchain - цепочке прохождения пакетов через сетевой стек хоста VMware ESXi, а в этом остановимся на некоторых утилитах, работающих с этим стеком и помогающих решать различного рода сетевые проблемы.
Прежде всего, при решении проблем соединений на хосте ESXi нужно использовать следующие средства:
Но если хочется углубиться дальше в сетевое взаимодействие на хосте, то тут могут оказаться полезными следующие утилиты:
net-stats
pktcap-uw
nc
iperf
1. Net-stats.
Чтобы вывести весь список флагов этой команды, используйте net-stats -h, а вот для вывода детальной информации о номерах портов и MAC-адресах всех интерфейсов используйте команду:
net-stats -l
С помощью net-stats можно делать огромное количество всяких вещей, например, проверить включены ли на интерфейсе vmnic функции NetQueue или Receive Side Scaling (RSS) с помощью команды:
net-stats -A -t vW
Далее нужно сопоставить вывод блока sys для нужного интерфейса и вывода команды:
vsish -e cat /world/<world id>/name
2. Pktcap-uw.
Эта утилита совместно с tcpdump-uw захватывать пакеты на различных уровнях. Если tcpdump-uw позволяет захватывать пакеты только с интерфейсов VMkernel, то pktcap-uw умеет захватывать фреймы на уровне виртуального порта, коммутатора vSwitch или аплинка.
В KB 2051814 подробно описано, как можно использовать утилиту pktcap-uw. На картинке ниже представлен синтаксис использования команды, в зависимости от того, на каком уровне мы хотим ее применить:
Фильтрация пакетов для выбранного MAC-адреса:
pktcap-uw --mac xx:xx:xx:xx:xx:xx
Фильтрация пакетов для выбранного IP-адреса:
pktcap-uw --ip x.x.x.x
Автоматическое исполнение и завершение pktcap-uw с использованием параметра sleep:
pktcap-uw $sleep 120; pkill pktcap-uw
Ограничить захват заданным числом пакетов:
pktcap-uw -c 100
Перенаправить вывод в файл:
pktcap-uw -P -o /tmp/example.pcap
3. NC
NC - это олдскульная Linux-команда NetCat. Она позволяет проверить соединение по указанному порту, так как telnet недоступен на ESXi. Например, так можно проверить, что можно достучаться через интерфейс iSCSI по порту 3260 до системы хранения:
nc -z <destination IP> 3260
В KB 2020669 вы можете найти больше информации об этой команде.
4. Iperf
Эта утилита предназначена для контроля пропускной способности на интерфейсе. Она используется механизмом vSAN proactive network performance test, который доступен в интерфейсе vSAN. Поэтому при ее запуске вы получите сообщение "Operation not permitted". Чтобы она заработала, нужно создать ее копию:
По умолчанию утилита работает на портах, которые запрещены фаерволом ESXi, поэтому во время работы с ней нужно его потушить (не забудьте потом его включить):
esxcli network firewall set --enabled false
Теперь можно использовать эту утилиту для замера производительности канала (флаг -s - это сервер, -c - клиент):