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

Является ли режим связывания = 5 решением против смещения MAC?

Есть два взаимосвязанный Cisco WS-2950T.

Через один порт GBIC на первый переключатель подключен первый NIC интерфейса связывания и одним портом GBIC на второй переключатель подключен второй Сетевая карта интерфейса связывания.

Конечно, оба коммутатора видят связанный MAC-адрес только на одном интерфейсе (например, это GBIC на первый переключатель) и все входящий трафик для интерфейса связывания проходит через этот GBIC.

Но в «mode = 5» все исходящий трафик распределяется между всеми интерфейсами, которые создают связь. В этом случае пакеты будут отброшены из второй переключатель и в любом случае будет проходить через первый переключатель? Или дивизия будет работать?

В режиме 5 или режиме balance-tlb исходящий трафик использует MAC-адрес подчиненного интерфейса, который он оставляет, вместо использования адреса интерфейса связи.

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

Режим балансировки нагрузки при передаче обходит эту проблему, балансируя исходящий трафик между интерфейсами, но используя MAC-адрес интерфейса в качестве источника для исходящего трафика. Если другие ваши узлы в подсети (в частности, маршрутизатор) не возражают против такого поведения, тогда оно работает нормально - обычно проблем не возникает, но я могу представить себе, что некоторые ограничительные настройки безопасности маршрутизатора обидятся.

Интерфейс связи примет MAC-адрес одного из своих подчиненных интерфейсов:

root@test1:~# ifconfig
bond1     Link encap:Ethernet  HWaddr 00:0c:29:3d:f7:35
          inet addr:192.168.100.25  Bcast:192.168.100.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fe3d:f735/64 Scope:Link
          UP BROADCAST RUNNING MASTER MULTICAST  MTU:1500  Metric:1

eth1      Link encap:Ethernet  HWaddr 00:0c:29:3d:f7:35
          UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1

eth2      Link encap:Ethernet  HWaddr 00:0c:29:3d:f7:3f
          UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1

MAC-адрес eth1 соответствует интерфейсу связи, он «первичный», поэтому он получает входящий трафик.

И, чтобы подтвердить:

root@test1:~# cat /sys/class/net/bond1/bonding/mode
balance-tlb 5

root@test1:~# cat /sys/class/net/bond1/bonding/active_slave
eth1

Хорошо, так .. это балансировка нагрузки? Вот как это выглядит с другого узла, отправляя постоянные пинги:

root@test2:~# tcpdump -e -n -i eth0 proto 1
20:33:08.094078 00:0c:29:46:4f:c6 > 00:0c:29:3d:f7:35, ethertype IPv4 (0x0800), length 98: 192.168.100.40 > 192.168.100.25: ICMP echo request, id 5810, seq 38, length 64
20:33:08.094549 00:0c:29:3d:f7:35 > 00:0c:29:46:4f:c6, ethertype IPv4 (0x0800), length 98: 192.168.100.25 > 192.168.100.40: ICMP echo reply, id 5810, seq 38, length 64
20:33:09.094052 00:0c:29:46:4f:c6 > 00:0c:29:3d:f7:35, ethertype IPv4 (0x0800), length 98: 192.168.100.40 > 192.168.100.25: ICMP echo request, id 5810, seq 39, length 64
20:33:09.094520 00:0c:29:3d:f7:35 > 00:0c:29:46:4f:c6, ethertype IPv4 (0x0800), length 98: 192.168.100.25 > 192.168.100.40: ICMP echo reply, id 5810, seq 39, length 64
20:33:10.094078 00:0c:29:46:4f:c6 > 00:0c:29:3d:f7:35, ethertype IPv4 (0x0800), length 98: 192.168.100.40 > 192.168.100.25: ICMP echo request, id 5810, seq 40, length 64
20:33:10.094540 00:0c:29:3d:f7:35 > 00:0c:29:46:4f:c6, ethertype IPv4 (0x0800), length 98: 192.168.100.25 > 192.168.100.40: ICMP echo reply, id 5810, seq 40, length 64

Все выглядит нормально - eth1 отвечает. Затем без подсказки появляется переключатель - обратите внимание, что MAC-адрес назначения запроса и MAC-адрес источника ответа больше не совпадают.

20:33:11.094084 00:0c:29:46:4f:c6 > 00:0c:29:3d:f7:35, ethertype IPv4 (0x0800), length 98: 192.168.100.40 > 192.168.100.25: ICMP echo request, id 5810, seq 41, length 64
20:33:11.094614 00:0c:29:3d:f7:3f > 00:0c:29:46:4f:c6, ethertype IPv4 (0x0800), length 98: 192.168.100.25 > 192.168.100.40: ICMP echo reply, id 5810, seq 41, length 64
20:33:12.094059 00:0c:29:46:4f:c6 > 00:0c:29:3d:f7:35, ethertype IPv4 (0x0800), length 98: 192.168.100.40 > 192.168.100.25: ICMP echo request, id 5810, seq 42, length 64
20:33:12.094531 00:0c:29:3d:f7:3f > 00:0c:29:46:4f:c6, ethertype IPv4 (0x0800), length 98: 192.168.100.25 > 192.168.100.40: ICMP echo reply, id 5810, seq 42, length 64
20:33:13.094086 00:0c:29:46:4f:c6 > 00:0c:29:3d:f7:35, ethertype IPv4 (0x0800), length 98: 192.168.100.40 > 192.168.100.25: ICMP echo request, id 5810, seq 43, length 64
20:33:13.094581 00:0c:29:3d:f7:3f > 00:0c:29:46:4f:c6, ethertype IPv4 (0x0800), length 98: 192.168.100.25 > 192.168.100.40: ICMP echo reply, id 5810, seq 43, length 64

Наблюдая за постоянным пингом, переключение между источником продолжается произвольно на основе оценки нагрузки интерфейсом связи - кажется, что она пересматривается каждые 10 секунд.


Аварийное переключение для входящего трафика в режиме 5 гораздо проще; когда интерфейс обнаруживается как неработающий, MAC связанного интерфейса просто перемещается на рабочий интерфейс. Это часто вызывает предупреждение о смене MAC в журналах коммутатора, но этого следовало ожидать; не о чем беспокоиться.

MAC-адреса интерфейса меняются следующим образом:

eth1      Link encap:Ethernet  HWaddr 00:0c:29:3d:f7:35
eth2      Link encap:Ethernet  HWaddr 00:0c:29:3d:f7:3f

..to, после отключения eth1, это:

eth1      Link encap:Ethernet  HWaddr 00:0c:29:3d:f7:3f
eth2      Link encap:Ethernet  HWaddr 00:0c:29:3d:f7:35

И все источники трафика от eth2 с MAC :35.


Итак, да - при условии, что вы не заботитесь о балансировке нагрузки входящего трафика, режим balance-tlb, кажется, отлично справляется с безопасным переключением балансировки нагрузки исходящего трафика и аварийным переключением входящего трафика.

Если ваш маршрутизатор не заботится о нескольких исходных MAC-адресах, отправляющих трафик для одного IP-адреса, и не обижается на бесплатную отработку отказа ARP, тогда все готово!