Что произойдет в реальном мире, когда очередь уровня MAC заполнена?Отбросьте? - PullRequest
1 голос
/ 17 февраля 2011

Недавно я делаю сетевой эксперимент с симулятором. Я обнаружил, что когда очередь уровня MAC заполнена, а верхние уровни (например, IP) все еще пересылают пакеты вниз, эта реализация выбирает отбрасывание этих пакетов.

Что мне интересно, так это то, что в реальной реализации, например, стек протоколов в ядре Linux, если очередь уровня MAC (буфер интерфейсов?) Заполнена, и из сокета поступает больше пакетов, выберите его. отбросить их или выделить больше памяти? а почему?

Спасибо.

1 Ответ

1 голос
/ 20 февраля 2011

Правильный подход должен быть утекает.Это отодвинет IP стека на уровень сокетов.API-интерфейсы send или sendto будут либо блокировать, либо отказывать, и, таким образом, устанавливается управление потоком (сокет не должен иметь возможность отправлять быстрее, чем может отправлять уровень MAC).

Единственные пакеты времени, которые должны дажебыть отброшенным в точке демультиплексирования.Это тот случай, когда есть две ветки для отправки и одна из них заблокирована.Здесь вы должны отбросить пакеты, потому что нельзя остановить поток, проходящий по одной ветви, потому что другая ветвь заблокирована. Но там, где есть только одна ветвь отправки, вы всегда пропускаете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...