Что происходит, когда 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 из них на выходной порт), и помечает оставшиеся для рециркуляции.


3

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


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

2
Хороший вопрос, я был больше смысла , что шанс из двух кадров , прибывающих в точно то же самое время были довольно низкими. Как вы упомянули, вероятно, это будет связано с дизайном ASIC, и я почти уверен, что это нигде не будет документировано, если вы не перепрыгнете серию обручей со своей командой учетных записей.
— Дэвид Ротера

Тот, кто прерывает первых, побеждает, считая все остальное равным.
— generalnetworkerror

0

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

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