Как коммутатор понимает на какой порт отправлять кадры

Обновлено: 06.07.2024

Чтобы выполнять свою работу, LAN-коммутаторы Ethernet используют пять основных операций:

Изучение

Таблица MAC должна быть заполнена MAC-адресами и соответствующими портами. Процесс обучения позволяет динамически получить эти сопоставления во время работы.

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

Устаревание

Записи в таблице MAC, полученные в процессе обучения, наделяются отметками времени. Эта метка времени используется в качестве средства для того, чтобы удалять старые записи в таблице MAC. После того, как сделана запись в таблице MAC, процедура начинает обратный отсчет, используя отметку времени в качестве начального значения. После того, как значение достигает 0, запись в таблице будет обновлена, как только коммутатор примет кадр от узла на том же самом порту.

Лавинная рассылка

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

Выборочная Передача

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

В некоторых случаях кадр не передается. Этот процесс называют фильтрацией кадра. Одно использование фильтрации уже было описано: коммутатор не передает кадр к тому же самому порту, с которого он прибыл. Коммутатор также отбрасывает поврежденный кадр. Если кадр не проходит проверку CRC, он отбрасывается. Дополнительной причиной фильтрации кадра является безопасность. У коммутатора есть настройки безопасности для того, чтобы блокировать фреймы к и/или от выборочных MAC-адресов или определенных портов.

Сетевой коммутатор (англ. switch — переключатель) — устройство, предназначенное для соединения нескольких узлов компьютерной сети в пределах одного или нескольких сегментов сети. Коммутатор работает на канальном (втором) уровне модели OSI. Коммутаторы были разработаны с использованием мостовых технологий и часто рассматриваются как многопортовые мосты. Для соединения нескольких сетей на основе сетевого уровня служат маршрутизаторы (3 уровень OSI).

В отличие от концентратора (1 уровень OSI), который распространяет трафик от одного подключённого устройства ко всем остальным, коммутатор передаёт данные только непосредственно получателю (исключение составляет широковещательный трафик всем узлам сети и трафик для устройств, для которых неизвестен исходящий порт коммутатора). Это повышает производительность и безопасность сети, избавляя остальные сегменты сети от необходимости (и возможности) обрабатывать данные, которые им не предназначались.

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

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

Как коммутатор создает таблицу MAC-адресов

Рассмотрим подробнее, как коммутатор заполняет таблицу MAC-адресов. Предположим, у нас есть коммутатор и три подключенных к нему компьютера. Таблица МАС-адресов коммутатора изначально пуста.



В момент получения этого кадра коммутатор узнает MAC-адрес компьютера A. И добавляет эту информацию в свою таблицу MAC-адресов. Но коммутатор пока не знает, где находится компьютер B — поэтому отправляет полученный кадр на все свои порты (кроме того, откуда он поступил):


Компьютер B видит свой MAC-адрес и принимает этот кадр, а вот компьютер C его просто отбросит. Компьютер B отвечает компьютеру A — создает ответный кадр и отправляет его к коммутатору. В этот момент коммутатор узнает MAC-адрес компьютера B.

Сегодня мы поговорим о том, как все же работает коммутатор.

Как мы уже знаем коммутаторы являются L2 устройствами, так как работают на канальном уровне. Они обрабатывают заголовок Ethernet кадра, а точнее MAC адреса получателя и отправителя, а также контрольную сумму.

Каждый коммутатор составляет таблицу MAC адресов (CAM table) всех хостов, подключенных в его порты.

Каким же образом он составляет эту таблицу ?

При включении питания коммутатора его таблица пуста.

Далее начинается процесс обучения, который представлен ниже

При поступлении каждого кадра на вход коммутатора, МАС адрес отправителя вносится в таблицу МАС адресов с указанием интерфейса, принявшего данный кадр.

Далее анализируется МАС адрес получателя. Если его нет в таблице, то коммутатор ретранслирует принятые кадры на все порты, кроме принявшего.

Если же МАС адрес получателя найден в таблице, то кадр направляется указанному в таблице интерфейсу.

Таблица адресов динамическая и сохраняется только в оперативной памяти, то есть при отключении питания таблица удаляется.

Все МАС адреса хранятся в таблице ограниченное время ( aging-time ), которое в некоторых коммутаторах можно изменить.

Почему нельзя сохранять адреса вечно?

Дело в том, что может понадобиться реконфигурация сети и некоторые хосты могут быть отключены от портов коммутатора, поэтому таблица адресов уже будет неактуальна, что приведет к неправильному функционированию сети.

Коммутаторы могут работать в одном из 3-х режимов:

  • С промежуточным хранением ( Store and forward ). Коммутатор принимает кадр, затем проверяет на наличие ошибок. Если кадр не содержит ошибок, то коммутатор пересылает его получателю.
  • Сквозной ( Cut-through ). Коммутатор считывает МАС адрес получателя и сразу пересылает его получателю. Проверка на ошибки в данном режиме отсутствует.
  • Бесфрагментный ( Fragment-free ). Принимаются первые 64 байта, которые анализируются на наличие ошибок и коллизий, а затем кадр пересылается получателю.

В целом процесс коммутации происходит довольно быстро.

А с чем это связано?

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

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

Широковещательный домен и домен коллизий

Как мы знаем, благодаря коммутации, каждому хосту выделяется канал связи. В то время, как в концентраторе эта возможность отсутствует. То есть имеется общий канал для всех хостов, благодаря чему и возникают коллизии. Поэтому такое подключение или сеть (с общим каналом) называют доменом коллизий.

Как видно из рисунка в сети с концентратором в определенный момент времени может вести передачу только один компьютер. В то время как остальные ждут, когда он закончит. Такой режим связи называется полудуплексным (half duplex).

Ситуация усугубляется, когда в сети растет количество компьютеров, так как времени на передачу для каждого компьютера выделяется все меньше и меньше.

То есть, чем больше компьютеров и концентраторов, тем хуже?

Верно. Пропускная способность такой сети (домена коллизий) значительно снижается.

А как называется подключение с коммутатором?

Так как в коммутаторе коллизии в принципе исключены, то каждый его порт считается доменом коллизий. То есть в принципе, к порту можно подключить несколько хостов посредством концентратора, но пропускная способность при этом изменится только в рамках конкретного порта, к которому подключен концентратор. В сети с коммутаторами все хосты могут принимать и передавать данные одновременно, не мешая друг другу. Такой режим связи называется дуплексным (full duplex).

Сама же сеть, в которой присутствуют только коммутаторы называется широковещательным доменом, так как коммутаторы обрабатывают и пропускают широковещательный (broadcast) трафик.

Что такое широковещательный (broadcast) трафик?

Это когда в качестве получателя указывается адрес, говорящий, что данный пакет/кадр предназначен всем хостам.

Как выглядит такой адрес?

В МАС адресе устанавливаются все единицы, то есть FF.FF.FF.FF.FF.

Как называется обычный трафик, когда в качестве получателя указывается конкретный получатель?

Такой трафик называется одноадресатный (unicast).

Маршрутизаторы широковещательный трафик не пропускают, поэтому каждый порт маршрутизатора образует широковещательный домен.

Мне просто интересно, как коммутатор знает, как маршрутизировать пакеты в адресаты, «скрытые» за другим коммутатором. По моему мнению, коммутатор имеет таблицу, которая отображает каждый из своих аппаратных портов на один MAC-адрес. До сих пор так хорошо, когда пакет /фрейм (?) Прибывает теперь, он может определить порт, по которому должен быть маршрутизирован пакет.

Но что происходит, когда есть другой коммутатор, подключенный к одному из этих портов, и этот второй коммутатор подключен к нескольким устройствам?

Мне интересно, как коммутатор может это решить (на OSI-Layer 2 без маршрутизатора), поскольку я думаю, что это действительно работает в действительности (?)

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

3 ответа

Переключатель уровня 2 узнает большую часть своей информации о местоположении других конечных точек посредством «прослушивания» входящих кадров, а когда он не знает о местоположении, он использует flooding и узнаете из ответа. Допустим, что топология:

(хост A) -> (Переключатель A) <-> (Переключатель B) - (хост B).

Также важно отметить, что L2 Switch переадресован, он не маршрутизируется. Под этим я подразумеваю, что когда он получает инкапсулированный фрейм, он пересылает интерфейсы.

Коммутатор может отображать несколько MAC-адресов в порт.

Таким образом, все устройства Mac на втором коммутаторе воспринимаются первым коммутатором как принадлежащим одному порту.

Он обновляет свою таблицу, когда получает какой-либо пакет, так как все они содержат исходный mac. Если у него был mac на другом порту, прежде чем он изменил его таблицу адресов mac (mac to port map).

Когда положение макроса изменяется между портами часто, оно сообщается как макрос.

Когда топология соответствует описанию: Host A - Switch A - Переключатель B - Host B

В идеале, Host A будет знать IP-адрес хоста B (пункт назначения, к которому он хочет связаться). Предполагая, что IP-адреса двух хостов находятся в одной сети, Host A использует ARP для получения адреса mac адресата. Это широковещательный кадр, который перенаправляет порты Switch A - и Switch B - на Host B, который видит, что он является предполагаемым получателем и отвечает своим собственным MAC-адресом.

Host Далее использует этот MAC-адрес и отправляет пакет Switch A.

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

Сетевой коммутатор(свитч) (network switch, switching hub, bridging hub) — устройство, предназначенное для соединения нескольких узлов компьютерной сети в пределах одного или нескольких сегментов сети. В отличие от концентратора, который распространяет трафик от одного подключенного устройства ко всем остальным, коммутатор передаёт данные только непосредственно получателю, исключение составляет широковещательный трафик (на MAC -адрес-адрес FF:FF:FF:FF:FF:FF) всем узлам сети. Это повышает производительность и безопасность сети, избавляя остальные сегменты сети от необходимости (и возможности) обрабатывать данные, которые им не предназначались.


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

Какие коммутаторы бывают?

Коммутаторы бывают неуправляемые (unmanaged switch) и управляемые (managed switch).

Неуправляемые коммутаторы - это простые автономные устройства, которые управляют передачей данных самостоятельно и не имеющие инструментов ручного управления. Такие коммутаторы получили наибольшее распространение в "домашних" ЛВС и малых предприятиях, основным плюсом которых можно назвать низкую цену и автономную работу, без вмешательства человека. Минусами у неуправляемых коммутаторов является отсутствие инструментов управления и малая внутренняя производительность. Поэтому в больших сетях предприятий неуправляемые коммутаторы использовать не разумно, так как администрирование такой сети требует огромных человеческих усилий и накладывает ряд существенных ограничений. Управляемые коммутаторы - это более продвинутые устройства, которые также работают в автоматическом режиме, но помимо этого имеют ручное управление. Ручное управление позволяет очень гибко настроить работу коммутатора и облегчить жизнь системного администратора. Основным минусом управляемых коммутаторов является цена, которая зависит от возможностей самого коммутатора и его производительности.

Абсолютно все коммутаторы можно разделить по уровням. Чем выше уровень, тем сложней устройство, а значит и дороже. Уровень коммутатора определяется слоем на котором он работает по сетевой модели OSI.

Коммутатор 2 уровня (Layer 2). Сюда относятся все устройства, которые работают на 2 уровне сетевой модели OSI - канальном уровне (Что такое Ethernet)). Умеют анализировать получаемые кадры и работать с MAC -адрес-адресами устройств отправителей и получателей кадра. Такие коммутаторы не понимают IP-адреса компьютеров, для них все устройства имеют названия в виде MAC-адресов. IEEE 802.1p или приоритизация (Priority tags). IEEE 802.1q или виртуальные сети (Настройка VLAN Debian D-Link). IEEE 802.1d Spanning Tree Protocol (STP). Коммутатор 3 уровня (Layer 3). Сюда относятся все устройства, которые работают на 3 уровне сетевой модели OSI - сетевом уровне. Умеет управлять сетевыми протоколами: IPv4, IPv6, IPX, IPSec — протокол защиты сетевого трафика на IP-уровне и т.д. Коммутаторы 3 уровня целесообразнее отнести уже не к разряду коммутаторов, а к разряду маршрутизаторов, так как эти устройства уже полноценно могут маршрутизировать, проходящий трафик, между разными сетями. Коммутаторы 3 уровня полностью поддерживают все функции и стандарты коммутаторов 2 уровня. С сетевыми устройствами могут работать по IP-адресам. Коммутатор 3 уровня поддерживает установку различных соединений: PPTP, Как работает PPPoE, vpn и т.д. Коммутатор 4 уровня (Layer 4). Сюда относятся все устройства, которые работают на 4 уровне сетевой модели OSI - транспортном уровне. К таким устройствам относятся более продвинутые маршрутизаторы, которые умеют работать уже с приложениями. Коммутаторы 4 уровня используют информацию, которая содержится в заголовках пакетов и относится к уровню 3 и 4 стека протоколов, такую как IP-адреса источника и приемника, биты SYN/FIN, отмечающие начало и конец прикладных сеансов, а также номера портов TCP/UDP для идентификации принадлежности трафика к различным приложениям. На основании этой информации, коммутаторы уровня 4 могут принимать интеллектуальные решения о перенаправлении трафика того или иного сеанса.

Выбор switch сетевого коммутатора

Когда нужно выбирать неуправляемый коммутатор? Если вам необходимо:

Просто раздать интернет на несколько устройств (5-8 штук); Объем трафика, который будут потреблять подключаемые девайсы - небольшой; Вам не нужна возможность дополнительных ручных настроек, как-то: фильтрация трафика, ограничение скорости на отдельных портах и т.д.

Как выбрать коммутатор по параметрам и функциям? Рассмотрим, что подразумевается под некоторыми из часто встречающихся обозначений в характеристиках.

Читайте также: