Протокол MAC Ethernet основан на CSMA / CD, который определяет алгоритм справедливой обработки конфликтов:
Если сетевая карта обнаруживает коллизию, она отправляет сигнал блокировки и вводит двоичный экспоненциальный откат:
После m-го конфликта подряд сетевая карта выбирает K случайным образом из {0,1,2,3, ..., 2 ^ m - 1}
Сетевая карта ждет K * 512 бит раз, а затем возвращается к этапу отправки:
Если NIC обнаруживает, что канал свободен, начинает передачу кадра.
Если сетевой адаптер обнаруживает, что канал занят, ожидает, пока канал не станет свободным, а затем передает.
У меня вопрос: можно ли создать сетевую карту, которая несправедливо реализует протокол? Если да, то есть ли причина для этого?
т.е. всегда ждет 0 битов перед попыткой повторной передачи во всех случаях, тем самым давая клиенту более высокий приоритет для передачи при наличии конкурирующих соединений.
Для соединений Ethernet, которые обычно являются двухточечными, кажется, что у хоста будет мало причин для утверждения приоритета передачи, но я хочу знать, упускаю ли я что-то.
С Уважением,
Очень теоретический, но интересный вопрос. Я постараюсь ответить на этот вопрос :)
Первоначально Ethernet был основан на идее компьютеров, обменивающихся данными через общий коаксиальный кабель, выступающего в качестве среды передачи широковещательной передачи (например, стандарты 10-Base2, 10-Base5). После этого был 10-BaseT с двухточечным UTP-кабелем, но по-прежнему вся сеть была большим доменом конфликтов (из-за использования повторителей / концентраторов). Сеть без какого-либо протокола разрешения конфликтов (например, CSMA / CD) вообще не будет работать. Это приводит нас к другому выводу: сетевая карта без надлежащей обработки CSMA / CD, вероятно, заблокировала бы весь разделяемый домен конфликтов, и тогда администратору сети пришлось бы попытаться найти рабочую станцию и пометить ее как сломанную :)
Другое дело, что передача - это двусторонняя связь. Вы бы ничего не выиграли с точки зрения приоритета трафика, если бы единственная сетевая карта была стороной с «улучшенной» задержкой: другая сторона физического соединения (например, коммутатор) должна была бы также иметь «несправедливый» протокол. В сегодняшних коммутируемых сетях Ethernet это не дало бы никакого эффекта, кроме большей вероятности коллизий на этом отрезке меди / волокна между модифицированными сетевыми картами.
И последнее но не менее важное. Протокол Ethernet реализован с помощью микросхемы на сетевой карте. Вам нужно будет найти способ изменить прошивку самой сетевой карты. Я думаю, это может быть сложной задачей на большинстве современных сетевых адаптеров с жестко запрограммированной прошивкой.
С уважением
Вы не получите «более высокий приоритет», у вас будет больше шансов столкновения. Конечно, если вы используете коммутируемый Ethernet или слабо загруженный общий кабель, у вас будет немного коллизий и немного откатов.