Несколько переключателей - как это работает?


14

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

Это заставило меня задуматься - что произойдет, если у вас есть коммутаторы, подключенные к коммутаторам, вот так:

Computer A
    |
 Switch 1
    |
 Switch 2
    |
Computer B

Часть моей домашней сети настроена следующим образом, так что она все равно работает. Но если Компьютер A хочет отправить пакет на Компьютер B, как Коммутатор 1 узнает, как переслать пакет на Коммутатор 2? Поскольку коммутатор 1 не подключен напрямую к компьютеру B, как он может иметь MAC-адрес компьютера B в своей базе данных, если коммутатор 2 не предоставляет коммутатору 1 эту информацию?


1
Предполагая, что кадр Ethernet идет от компьютера A к компьютеру B, коммутатор 1 и коммутатор 2 в конечном итоге получат запись в таблице CAM для MAC-адреса компьютера B. Коммутатору не важно, что на самом деле находится с другой стороны, а просто с каким MAC-адресом возвращаются кадры Ethernet.
LawrenceC

Ответы:


23

Если Коммутатор 1 не знает, к какому порту должен быть направлен фрейм (не пакет!), Он затопит все порты (кроме порта, с которого произошел фрейм). Один из этих портов будет подключен к коммутатору 2, что означает, что коммутатор 2 получает кадр.

Если Коммутатор 2 не знает, к какому порту должен быть направлен фрейм, он затопит все порты (кроме порта, с которого произошел фрейм). Один из этих портов будет подключен к компьютеру B.

Таким образом, компьютер B в конечном итоге получает кадр, а все остальные устройства игнорируют его.

Теперь вы можете соединить точки. Когда компьютер B отвечает, коммутатор 2 узнает, что кадры, предназначенные для компьютера A, идут в порт, к которому подключен коммутатор 1, а коммутатор 1 узнает, что кадры, предназначенные для компьютера B, идут в порт, к которому подключен коммутатор 2.


7
в общем, коммутаторы действуют как центры старой школы для неизвестных кадров.
Sirex

2
Точно, это означает, что всегда будет какое-то наводнение, только не много или часто. Ха, центры старой школы. Напоминает мне о спутниковом интернете в 90-х, когда установленный на вашем компьютере приемник должен был игнорировать все пакеты, не предназначенные для вас. Разговор о затоплении!
misha256

2
Что произойдет, если мы отправим pingзапрос? Будет ли реагировать каждое устройство, подключенное к коммутатору, или сам коммутатор будет реагировать на ICMP ping?
AStopher

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

6

Физический порт на коммутаторе считается уровнем 1 OSI. Все MAC-адреса, поступающие на этот конкретный порт, представляют физические адреса сетевых устройств (уровень 2 OSI). На каждом активном порту может быть 0, 1 или более MAC-адресов (или CAM, или любой другой производитель коммутатора, который их называет). На самом деле, коммутатор не имеет ни малейшего представления, какой тип устройства подключен без дополнительной информации (администратор или какой-то специально разработанный протокол сообщает больше).

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

Если коммутатор получает один и тот же физический адрес через несколько интерфейсов, он обычно обнаруживается и считается как «переброс MAC». Это означает, что коммутатор не может быть уверен, через какой порт будет отправлен пакет с определенным MAC-адресом.

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

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

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

Надеюсь, это поможет.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.