Непонимание о перемещении пакетов по NLB-сети
Я делаю LAB о NLB(Балансировка сетевой нагрузки) на Windows Server 2008 - Unicast mode.
Но я не могу понять, как пакет проходит через сеть...
В этой ссылке. Они сказали, что:
Если узлы кластера подключены к коммутатору, а не к концентратору, использование общего MAC-адреса приведет к конфликту, поскольку коммутаторы второго уровня ожидают увидеть уникальные исходные MAC-адреса на всех портах коммутатора. Чтобы избежать этой проблемы, Network Load Balancing уникальным образом модифицирует исходный MAC-адрес для исходящих пакетов; MAC-адрес кластера 02-BF-1-2-3-4 установлен на 02-h-1-2-3-4, где h - приоритет хоста в кластере (задается в диалоговом окне "Свойства балансировки сетевой нагрузки").). Этот метод не позволяет коммутатору узнать фактический MAC-адрес кластера, и в результате входящие пакеты для кластера доставляются на все порты коммутатора. Если узлы кластера подключены напрямую к концентратору, а не к коммутатору, маскирование сетевой нагрузки по MAC-адресу источника в режиме одноадресной передачи может быть отключено, чтобы избежать переполнения вышестоящих коммутаторов. Это достигается установкой параметра реестра MaskSourceMAC для балансировки сетевой нагрузки равным 0. Использование вышестоящего коммутатора третьего уровня также ограничит переполнение коммутатора.
Если кластер подключен к коммутатору, входящие пакеты отправляются на все порты коммутатора, что может вызвать переполнение коммутатора.
Есть два ПК:
ПК1: 192.168.2.1
ПК2: 192.168.2.2
IP виртуального кластера: 192.168.2.100
После того, как я установил NLB, MAC-адрес ПК1 и ПК2 был изменен на: 02-BF-1-2-3-4 (они получили тот же MAC)
Я пытаюсь пропинговать 192.168.2.100, и ПК1, и ПК2 получают ICMP-запрос?
а как Switch отправлял входящие пакеты на все порты?
потому что Switch ожидают увидеть уникальный источник MAC?
затем каждый порт сопоставляется с уникальным MAC
==> Итак, как Switch отправляет входящие пакеты на все порты?
1 ответ
Коммутатор узнает, какие MAC-адреса подключены к каждому порту, просматривая исходные MAC-адреса входящих в него пакетов. Если пакет поступает на порт 1 с источником AA:BB:CC:DD:EE:FF, он знает, что любые пакеты, предназначенные для этого MAC-адреса, могут выходить через порт 1.
Если коммутатор получает пакет для MAC-адреса и не знает, к какому порту подключен этот MAC-адрес (например, если он только что включен), он будет отправлять пакет через каждый порт. В основном он передает пакет в надежде, что правильный компьютер получит его, а все остальные проигнорируют его.
Unicast NLB использует эту "функцию", убедившись, что коммутатор никогда не видит пакет с MAC-адресом источника, который совпадает с MAC-адресом, используемым для виртуального IP-адреса - запросы ARP для виртуального IP-адреса получат ответ, содержащий MAC-адрес X, но при фактическом общении с кластером с использованием виртуального IP-адреса ответы от кластера будут иметь исходный MAC-адрес, который был изменен, как указано выше в вашей цитате.
По этой причине вы должны быть осторожны при использовании Unicast NLB, чтобы попытаться сделать широковещательный домен, на котором включен NLB, как можно меньшим. Если вы включите NLB на адаптерах, которые подключены к большой сети, весь трафик NLB будет переполнен по всей сети.