Что происходит, когда 2 компьютера одновременно передают данные на 3-й в полнодуплексном коммутаторе?

14

Рассмотрим следующий сценарий:

У меня есть 2 ПК (ПК1 и ПК2), которые хотят одновременно передавать данные на ПК3 в полнодуплексном коммутаторе Ethernet. Давайте рассмотрим, что все порты находятся в одной VLAN, так что происходит внутри коммутатора? Кто первым передает на PC3?

Я читал ранее, что использовался CSMA / CD , но только он использовался в более ранних версиях Ethernet, которые работали в полудуплексном режиме, и каждый порт коммутатора был областью коллизий, и если 2 машины пытались передавать одновременно, Алгоритм был выполнен, чтобы дать каждому компьютеру случайное время для передачи и решения проблемы коллизий. Тем не менее, в полнодуплексном коммутаторе я прочитал, что исключена возможность коллизии, поэтому, если два компьютера пытаются одновременно передавать данные, что происходит внутри коммутатора? Коммутатор выполняет алгоритм, чтобы выбрать, кто передает первым?

Хуан Хосе Поланко Арии
источник

Ответы:

14

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

Там нет проблем с кадрами "сталкиваются друг с другом". Реальная проблема заключается в том, может ли конечный порт / сегмент принимать кадры достаточно быстро. (И, конечно, может ли коммутатор достаточно быстро обработать свой буфер / очереди.)

Крейг Константин
источник
9
Да, есть сквозное и фрагментное переключение. В основном используется в высокоскоростных торговых средах. Прорезать начнется передача, как только DST MAC известен. Без фрагментов убедитесь, что кадр не является фрагментом коллизии, поэтому он должен получить 64 байта перед передачей.
Даниэль Диб
2
Да, я думаю, что это будет называться сквозной пересылкой, а не хранением и пересылкой. При сквозном подходе коммутатор может начать переадресацию, как только он получит и проверит MAC-адрес назначения, но существуют гибридные подходы, где он ждет немного дольше, например, чтобы иметь возможность посмотреть IP для проверки исходящего ACL-списка , (Поле Ethertype сообщило бы, присутствует ли IP-адрес в кадре).
Гербен
1
^^^ Это. Вот почему NE качается.
Крейг Константин
4
Поскольку никто не упомянул об этом, недостаток, который нужно прорезать, является странным случаем ошибки кадра. В то время как прорезание действительно немного уменьшает задержку в исходном кадре (чем больше кадр, тем больше это влияет), он пересылает кадр независимо от того, является ли кадр действительным, потому что это происходит без получения полного кадра и возможности проверки FCS. , Переключатели сохранения и пересылки получат полный кадр и смогут проверить FCS перед пересылкой, что позволит им отбрасывать недопустимые кадры.
YLearn
2
Большинство коммутаторов предназначены только для хранения и пересылки. Прошло несколько лет назад, потому что их легко продать финансовому миру. Хранение и пересылка на 10G вызывает задержку в 1,2 с, то есть 235 м. Также на входе и на выходе не может быть разной скорости при прорезании.
ytti
6

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

Однако эта проблема явно обсуждается в « Компьютерные сети - системный аппарох» на стр. 231-232.

Суть решения для дизайна под названием «Переключатель солнечного света» заключается в том, что у вас есть входы диаграммы - дозатор - ловушка - селектор == banyan === выходы, и есть поле задержки, которое соединяет селектор с дозатором. И я цитирую:

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

И далее:

Сеть ловушек идентифицирует те пакеты, которые смогут выйти из коммутатора через banyans (до 1 из них на выходной порт), и помечает оставшиеся для рециркуляции.

ytti
источник
3

Всегда будет НЕКОТОРЫЕ различия в том, что когда два компьютера отправляют на третий, если вы не делаете что-то особенное на коммутаторе, он будет передаваться на основе FIFO, поэтому любой кадр, который поступит первым, будет передан первым.

Дэвид Ротера
источник
1
Поскольку ПК [23] находится на своих собственных проводах, ничто не препятствует тому, чтобы кадры приходили точно в одно и то же время для точности, с которой работает «момент» (частота) HW. Я думаю, что разработчик ASIC коммутатора должен решить, что сделать в этом случае, но я предполагаю, что он будет читать кадры портов в циклическом порядке.
ytti
2
Хороший вопрос, я был больше смысла , что шанс из двух кадров , прибывающих в точно то же самое время были довольно низкими. Как вы упомянули, вероятно, это будет связано с дизайном ASIC, и я почти уверен, что это нигде не будет документировано, если вы не перепрыгнете серию обручей со своей командой учетных записей.
Дэвид Ротера
Тот, кто прерывает первых, побеждает, считая все остальное равным.
generalnetworkerror
0

Коммутаторы пересылают по одному пакету за раз при входе в коммутатор, чтобы не было конфликтов. Затем ПК3 будет обрабатывать пакеты от ПК1 и ПК2, разделяя время своего процессора. Оконное управление и буферизация будут контролировать поток связи.

Джон Роб
источник