Как Linux запрещает приложениям отправлять больше пакетов, чем может обрабатывать ссылка, не отбрасывая пакеты?

Я не мог сделать вопрос более ясным, вот пример сценария:

Учитывая, что Linux-машина подключена к IP-сети через физический интерфейс с пропускной способностью 10 Мбит / с (или интерфейс с более высокой скоростью с помощью фильтра ток-кодов tc для ограничения скорости до 10 Мбит / с).

На удаленном компьютере (с равной скоростью или более быстрой ссылкой) запустите ip-сервер UDP:

iperf -s -u -i 1

На локальной машине запустите клиент iperf с bw = 20 Мбит / с:

iperf -c <server ip> -u -i 1 -b 20M

Наблюдение : отправитель никогда не превышает скорость 10 Мбит / с (определенную в канальном уровне либо на аппаратном, либо на tc qdisc).

Я ожидал увидеть, что отправитель выталкивает пакеты на 20 Мбит на секунду, заставляя локальную очередь tx интерфейса наращивать, а потери пакетов начинают происходить. Но это не так. Зачем?

Я попытался заглянуть в папку net / sched для ядра Linux, но я не могу найти источник этого поведения.

Цените, что помогаете. Также не стесняйтесь предлагать изменения в названии, чтобы сделать его более актуальным.

One Solution collect form web for “Как Linux запрещает приложениям отправлять больше пакетов, чем может обрабатывать ссылка, не отбрасывая пакеты?”

Это связано с процедурой, называемой Autonegotiation , которая происходит на физическом уровне . Что касается ядра, эта связь (соединение) может обрабатывать только пропускную способность 10 Мбит / с, а iperf, по-видимому, уважает максимальную скорость соединения.

Хорошие люди на https://networkengineering.stackexchange.com/ могут, вероятно, углубиться в более подробные сведения, если у вас есть дополнительные вопросы об этом взаимодействии.

  • Приоритет интерфейса в лице VPN
  • Как удалить все шлюзы по умолчанию
  • Как фильтровать адреса IPv4 и IPv6?
  • Не удалось получить доступ к Интернету после того, как ip статично в beaglebone black
  • Solaris 10 IPMP и зоны
  • Как отслеживать мой публичный IP-адрес в файле журнала?
  • Доступ SSH изнутри и снаружи локальной сети с использованием той же команды терминала
  • Получение всех IP-адресов устройств, подключенных к одному маршрутизатору
  • Как создавать случайные IP-адреса
  • Требуется ли /etc/resolv.conf при использовании статического IP-адреса?
  • Как перенести данные «offline» между osx и ubuntu?
  • Linux и Unix - лучшая ОС в мире.