Маршрутизаторы нет.Мосты справляются.
Внешние маршрутизаторы, концентраторы, коммутаторы или что-либо еще, внешне подключенное к сети, не увидят эффектов TSO, только интерфейсы внутри устройства с TSO будут испытывать какие-либо эффекты - это программная вещь.
Маршрутизатор - это внешнее устройство, которое подключается к сети с помощью кабелей Ethernet, оптоволоконных кабелей, беспроводных коммуникаций и т. Д. Эти средства связи соответствуют международным стандартам, таким как 803.2 для Ethernet или 803.11 для беспроводных - ониАппаратные устройства и аппаратные устройства имеют очень строгие правила взаимодействия.
Мост - это внутренняя программная конструкция, специфичная для вашей ОС.
Давайте использовать 803.2 (ethernet)и хост Linux в качестве примера.
Приложение требует создания сокета, а затем помещает большой кусок данных в сокет.Ядро linux определяет, по какому интерфейсу должны передаваться эти данные.Затем ядро запросит драйвер для этого интерфейса, чтобы определить его возможности. Если интерфейс поддерживает TSO, ядро передаст интерфейсу sk_buff с единственным заголовком «шаблона» и огромным порцией данных (стоимостью более 1 пакета).Водитель.
Давайте сначала рассмотрим стандартный интерфейс непосредственно к аппаратной сетевой плате:
Некоторые интерфейсы имеют поддельное TSO (они сегментируют пакет в драйвере), а некоторые имеют истинное TSO (заголовок шаблона и данные передаются на оборудование с минимальными изменениями).На этом этапе Ether драйвер или аппаратная плата NIC преобразуют этот большой сегмент данных в несколько стандартных 803.2 Ethernet-фреймов, соответствующих стандарту. Именно эти фреймы соответствуют внешнему устройству, например маршрутизатору, концентратору, коммутатору, модему или другому хосту.увидим по проводам.
Теперь давайте рассмотрим несколько сетевых карт за программным мостом:
Хотя ядро знает о каждом сетевом адаптере на низком уровне, сетевой стекзнает только о невесте, таким образом, только возможности, которые ВСЕ базовые NIC имеют, должны быть переданы на мост.Если sk_buff передается мосту, то ВСЕ интерфейсы в мосте получат один и тот же sk_buff.Предположим, что кернал еще раз передал наш большой TSO sk_buff мосту, если какой-либо из нижележащих интерфейсов не поддерживает TSO, то пакет, скорее всего, будет отброшен рассматриваемой сетевой платой.
В итоге:
В худшем случае мост будет многократно повторять попытку отправить один и тот же кусок данных на сломанном интерфейсе, и весь мост будет заблокирован, пока приложение не решит отказаться.В лучшем случае, NIC, не являющийся TSO, просто будет казаться мертвым.
При этом, если у NIC есть небезопасный код в драйвере, это может вызвать ошибку сегментации, которая может привести к поломке всей системы.