3

Недавно я видел форум Debian, на котором упоминались кадры паузы, которые должны отбрасываться уровнем MAC, а если нет, драйвер должен их отбрасывать. Это правда? Как хост фактически ограничивает обратный трафик, если он получил кадр паузы от коммутатора?

Я пытаюсь лучше понять управление потоком Ethernet. Если приведенное выше утверждение верно, что действительно означает передача на хост?

2 ответа2

3

Есть три способа управления потоком:

  1. Если вы перегружены, вы бросаете данные на пол.
  2. Если вы не можете предоставить услугу для запроса из более высокого уровня, как правило, потому что ваша локальная очередь заполнена, вы возвращаете ошибку в этот более высокий уровень.
  3. Вы заблаговременно уведомляете верхние слои о том, что они должны замедлиться.

На уровне Ethernet метод 3 поддерживается через кадры паузы. Часто более высокие уровни не поддерживают метод 3, но вместо этого поддерживают метод 2. Когда у слоя есть слой под ним, который поддерживает метод 3, но слой выше него поддерживает только метод 2, он может временно прекратить передачу данных на нижние уровни, в результате чего метод 2 будет применяться к более высоким уровням.

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

3

До сих пор управление потоком Ethernet было неудачным экспериментом, поскольку оно часто вызывает проблемы с блокировкой заголовка. Коммутаторы не должны отправлять кадры паузы хостам. Я полагаю, что коммутаторы Cisco не могут быть настроены для отправки кадров паузы; включение управления потоком Ethernet на коммутаторе Cisco просто заставляет его соблюдать кадры паузы, которые он получает. Хозяева должны игнорировать полученные кадры паузы.

Если коммутатор не может управлять передачей, он должен уронить кадр. Более высокие уровни, прежде всего TCP, используют пропущенные кадры, чтобы знать, когда возникла перегрузка и когда нужно отступить. Отказ от отбрасывания кадров приводит к сбою TCP Congestion Control, что обычно приводит к буферизации.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .