Назад | Перейти на главную страницу

Сетевой трафик не выходит из магистрали

Я занимаюсь подготовкой нескольких новых серверов виртуализации, и часть этого заключается в том, чтобы подключить к ним несколько каналов с более высокой пропускной способностью. Конечная цель - связать 4 порта GigE в одну магистраль, несущую тегированный трафик 802.1q. Я могу зайти так далеко, но столкнулся со странной проблемой. Но сначала диаграмма.

----------       ----------  1GbE trunks 
|        | 10GbE |        | ------------- --------
|  SW1   |-------|   SW2  | ------------- | VM1  |
|        |       |        | ------------- --------
----------       ----------
     |                |  1GbE  -----------
     | 1GbE           |--------| client2 |
     |                         -----------
----------
|        | 1GbE -----------
|  SW3   |------| client1 |
|        |      -----------
----------

Все коммутаторы являются коммутаторами HP ProCurve 2910al и не объединены в стек. Client2 на приведенной выше диаграмме находится в той же VLAN, что и VM1. Client1 находится в другой VLAN. Для виртуальной машины (CentOS 6) отключены iptables и SELinux.

Моя проблема в том, что при использовании транкинга двусторонний сетевой трафик невозможен при разговоре с любой клиентской машиной. TCPDUMP показывает, что они получают эхо-запросы и отправляются пакеты ECHO REPLY, но хост виртуальной машины никогда их не видит. В то же время, если я попытаюсь пропинговать виртуальную машину с клиентской машины, это тоже не сработает. Тот факт, что я не могу проверить связь с клиентом 2, который находится в той же подсети, предполагает, что где-то на сетевом уровне что-то не так.

Как ни странно, с хоста виртуальной машины я могу пропинговать IP-адреса шлюза на любом из коммутаторов. Если я использую один интерфейс, все работает нормально как с тегами VLAN, так и без них. Если я просто привяжу один интерфейс и включу теги VLAN на этом интерфейсе, я смогу пойти куда угодно. Создайте ствол, и я ограничусь коммутационной фабрикой.

Тип ствола не имеет значения. Прямо сейчас они настроены на транки в режиме 0 (balance-rr), хотя использование LACP / 802.1qa ведет себя точно так же.

vlan 70 
   name "Virtualization Subnet" 
   untagged 35,36,38,40 
   tagged Trk1-Trk2,Trk5,Trk8 
   no ip address 
   jumbo 
   exit 

Это конфигурация VLAN на SW2 наверху. В определении VLAN 70 SW1 указан "IP-адрес". Приведенный выше фрагмент находится в полностью незагруженном режиме. Когда я в транк:

trunk 35-36,38,40 Trk16 trunk
vlan 70 
   name "Virtualization Subnet" 
   tagged Trk1-Trk2,Trk5,Trk8,Trk16
   no ip address 
   jumbo 
   exit 

Версия 802.1qa / LACP меняет определение магистрали для trunk 35-36,38,40 Trk16 lacp но, как я уже сказал, это не меняет представления проблемы.

Client2 фактически подключен к SW1, но размещение его на диаграмме усложнило бы форматирование. В любом случае единственное, что есть в разделе «Интерфейс», - это name директива; он указан как untagged порт в строфе vlan 70 для SW1.

Что мне не хватает?

После долгих дебатов в чате с участием MikeyB, Пауска, и ChrisS, проблема оказалась двоякой:

  1. Возможная ошибка в CentOS 6 заключалась в том, что не менялись параметры модуля для bonding модуль как часть service network restart, поэтому он не отслеживал мои изменения между режимом LACP (4) и roundrobin (0).
  2. Режим Round-Robin не любит работать с переключателями ProCurve.

Однажды я принудительно переключил связанный интерфейс в режим LACP / 802.1qa с помощью этой команды:

ifconfig bond0 down
echo "4" > /sys/class/net/bond0/bonding/mode
ifconfig bond0 up

И сервер, и коммутатор разговаривали. В этот момент, когда на коммутаторе был включен только один интерфейс, трафик начал работать нормально. При включении второго, третьего и, наконец, четвертого интерфейсов трафик продолжал работать.

В конечном счете, именно режим LACP заставил все работать. Подсказка заключалась в том, что циклический режим работал, когда в магистрали был только один активированный порт коммутатора. Сервер переживает перезагрузку и переходит в правильный режим. Однако service network restart не вызывает MODE="4" часть ifcfg-bond0 файл в /etc/sysconfig/network-scripts/ вступить в силу. Если этот режим изменится, он останется тем, что был установлен при загрузке (или, что более вероятно, время загрузки модуля bonding модуль).

У вас в конфиге:

trunk 35-36,38,40 Trk16 trunk
vlan 70 
   name "Virtualization Subnet" 
   tagged Trk1-Trk2,Trk5,Trk8,Trk16
   no ip address 
   jumbo 
   exit 

Не должно быть:

   untagged Trk16
   tagged Trk1-Trk2,Trk5,Trk8