Я занимаюсь лабораторной работой по NLB (балансировка сетевой нагрузки) в Windows Server 2008 - режим Unicast.
Но я не могу понять, как пакет перемещается по сети ...
В этой ссылке. Они сказали, что:
Если узлы кластера подключены к коммутатору вместо концентратора, использование общего MAC-адреса может создать конфликт, поскольку коммутаторы второго уровня ожидают увидеть уникальные исходные MAC-адреса на всех портах коммутатора. Чтобы избежать этой проблемы, балансировка сетевой нагрузки однозначно изменяет исходный 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?
но как Коммутатор отправил входящие пакеты на все порты?,
так как Переключатель ожидает увидеть уникальный исходный MAC ?
затем каждый порт сопоставлен с уникальным MAC
==> так как Коммутатор отправил входящие пакеты на все порты?
Коммутатор узнает, какие MAC-адреса подключены к каждому порту, глядя на исходный MAC-адрес пакетов, поступающих в него. Если пакет поступает на порт 1 с источником AA: BB: CC: DD: EE: FF, он знает, что любые пакеты, предназначенные для этого MAC-адреса, могут выходить через порт 1.
Если коммутатор получает пакет для MAC-адреса и не знает, к какому порту подключен этот MAC-адрес (например, если он только что был включен), он отправит пакет через каждый порт. В основном он передает пакет в надежде, что правильная машина его получит, а все остальные проигнорируют.
Unicast NLB использует эту «функцию», гарантируя, что коммутатор никогда не видит пакет с исходным MAC-адресом, который совпадает с MAC-адресом, используемым для виртуального IP-адреса - запросы ARP для виртуального IP-адреса получат ответ, содержащий MAC-адрес X, но при фактическом разговоре с кластером с использованием виртуального IP-адреса ответы, поступающие из кластера, будут иметь исходный MAC-адрес, который был изменен, как указано выше в вашей цитате.
По этой причине вы должны быть осторожны при использовании одноадресной NLB, чтобы попытаться сделать широковещательный домен, для которого включена NLB, как можно меньше. Если вы включите NLB на адаптерах, которые подключены к большой сети, весь трафик NLB будет лавинно рассылаться по всей сети.