Кадры паузы передаются на хост?
Недавно я видел форум Debian, на котором упоминались кадры паузы, которые должны отбрасываться уровнем MAC, а если нет, драйвер должен их отбрасывать. Это правда? Как хост фактически ограничивает обратный трафик, если он получил кадр паузы от коммутатора?
Я пытаюсь лучше понять управление потоком данных в Ethernet. Если приведенное выше утверждение верно, что на самом деле означает передача на хост?
2 ответа
Есть три способа управления потоком:
- Если вы перегружены, вы бросаете данные на пол.
- Если вы не можете предоставить услугу для запроса от более высокого уровня, обычно из-за того, что ваша локальная очередь заполнена, вы возвращаете ошибку этому более высокому уровню.
- Вы заблаговременно уведомляете верхние слои о том, что они должны замедлиться.
На уровне Ethernet способ 3 поддерживается через кадры паузы. Часто верхние уровни не поддерживают метод 3, но вместо этого поддерживают метод 2. Если под слоем есть слой под ним, который поддерживает метод 3, но слой над ним поддерживает только метод 2, он может временно остановить передачу данных на нижние уровни, вызывая метод 2, чтобы применить к более высоким слоям.
Или, более конкретно, когда вы получаете кадр паузы, вы останавливаете механизм отправки и устанавливаете таймер для перезапуска механизма отправки в соответствующее время. Пока механизм отправки остановлен, ваши локальные очереди будут заполняться данными из более высоких уровней. Если они заполняются, вы возвращаете "занятые" ошибки на более высокие уровни, и они обрабатывают это, однако, уместно.
До сих пор управление потоком Ethernet было неудачным экспериментом, поскольку оно часто вызывает проблемы с блокировкой заголовка. Коммутаторы не должны отправлять кадры паузы хостам. Я полагаю, что коммутаторы Cisco не могут быть настроены для отправки кадров паузы; включение управления потоком Ethernet на коммутаторе Cisco просто заставляет его соблюдать кадры паузы, которые он получает. Хозяева должны игнорировать полученные кадры паузы.
Если коммутатор не может управлять передачей, он должен уронить кадр. Более высокие уровни, прежде всего TCP, используют пропущенные кадры, чтобы знать, когда возникла перегрузка и когда нужно отступить. Отказ от отбрасывания кадров приводит к сбою TCP Congestion Control, что обычно приводит к буферизации.