Админская фамилия

Make Sysadmins Great Again

Ещё раз об MTU и MSS

Я уже писал о MTU и даже приводил прекрасный документ от Cisco. А сегодня случайно наткнулся на ixbt на ветку о MTU в разных типах туннелей. Решил скопипастить - лишним не будет.Чтобы систематизировать свое представление о работе различных реализаций VPN-ов и расставить для себя все точки над “i”, выполнил расчет значений MTU и MSS для payload (полезного передаваемого трафика) в разных типах VPN, используемых совместно с Ethernet. Прошу проверить мои расчеты и указать мне на ошибки, если таковые имеются.Итак.1. PPTPPPTP это полезный_TCP -> IP -> PPP -> GRE -> IP -> EthernetДля Ethernet MTU=1500; заголовки IP -20 байт, заголовок GRE -4 байта, заголовок PPP -2 байта.Итого, MTU=1500-20-4-2=1474; MSS=MTU-40=14342. Незашифрованный L2TP поверх IPL2TP это полезный_TCP -> IP -> PPP -> L2TP -> UDP -> IP -> EthernetДля Ethernet MTU=1500; заголовки IP -20 байт, заголовки UDP -8 байт, заголовки L2TP -16 байт, заголовок PPP -2 байта.Итого, MTU=1500-20-8-16-2=1454; MSS=MTU-40=14143. L2TP поверх IPSECL2TP поверх IPSEC это полезный_TCP -> IP -> PPP -> L2TP -> UDP -> ESP -> IP -> EthernetПолучается то же самое, что и пункт 2, за вычетом размера заголовков ESP -20 байт.Итого, MTU=1454-20=1434; MSS=MTU-40=13944. L2TP поверх IPSEC с NAT-TraversalЭто полезный_TCP -> IP -> PPP -> L2TP -> UDP -> ESP -> IP -> UDP -> IP -> EthernetПолучается то же самое, что и пункт 3, за вычетом размера заголовков UDP -8 байт и IP -20 байт.Итого, MTU=1434-28=1406; MSS=MTU-40=1366.


PDU. Количество полезной информации на рахных уровнях модели OSI

PDU (Protocol Data Unit) - общий блок данных протокола (полезные данные + заголовки) (wikipedia).  Своими словами - часть блока данных, в которой содержится информация верхнего уровня (для IP - часть пакета, где лежит TCP/UDP, для TCP/UDP - часть сегмента/датаграммы, где лежит информация прикладного уровня).MTU (Maximum Transmission Unit) - максимальный размер полезного блока данных одного пакета (PDU)Например, IP-пакет. Wiki говорит так:IP-пакеты состоят из заголовка и полезной нагрузки. Заголовок пакета IPv4 состоит из:4 бита содержат версию пакета: IPv4 или IPv6.4 бита содержат длину интернет-заголовка, которая измеряется отрезками по 4 байта (например, 5 означает 20 байт).8 бит содержат тип обслуживания, известный также как качество обслуживания (QoS), описывающее приоритеты пакета.16 бит содержат длину пакета в байтах.16 бит содержат тег идентификации, помогающие восстановить пакет из нескольких фрагментов.3 бита содержат нуль, флаг разрешения фрагментации пакета (DF: не фрагментировать), а также флаг разрешения дальнейшей фрагментации (MF: фрагментировать дальше).13 бит содержат смещение фрагмента, поле для идентификации положение фрагмента в исходном пакете.8 бит содержат время жизни (TTL), которое определяет количество переходов (через маршрутизаторы, компьютеры и сетевые устройства), разрешённых пройти пакету, прежде чем он исчезнет (например, пакету с TTL 16 разрешено пройти не более 16 маршрутизаторов, чтобы добраться до места назначения).8 бит содержат протокол (TCP, UDP, ICMP и т. д.).16 бит содержат контрольную сумму заголовка, используемую при обнаружении ошибок.32 бит содержат IP-адрес источника.32 бит содержат адрес назначения.После этих данных могут быть добавлены разное количество необязательных флагов, меняющиеся в зависимости от используемого протокола, затем идут данные, которые переносит пакет. IP-пакет не имеет хвостового прицепа. Однако, IP-пакеты часто переносятся как полезная нагрузка внутри фрейма Ethernet, который имеет свой собственный заголовок и хвост.Те данные, которые переносятся пакетом и есть PDU. А его максимальный размер - MTU.На картинке видны PDU разных уровней. Блок данных, в которых есть data и есть PDU.Для модели OSI выделяют следующие PDU:Уровень 1 (физический/physical) - бит/bitУровень 2 (канальный/data link) - кадр/frameУровень 3 (сетевой/network) - пакет/packetУровень 4 (транспортный/transport) - сегмент/segment для TCP, датаграмма/datagram для UDPУровни 5-7 (прикладной/application) - данные/dataРассмотрим каждый уровень подробнее.2. Payload (полезная нагрузка) канального уровня содержит 46-1500 байт. В эту полезную нагрузку входит блок данных более высоко уровня, один из частных (и наиболее распространенный) PDU для L2 - IP. Соответственно, MTU - 15003. Заголовки сетевого уровня составляют 40 байт, соответственно максимальный размер PDU  (в терминологии этого уровня называется MSS - Maximum Segment Size) равен 1500 (MTU более низкого уровня) - 40 (заголовки) = 14604. На следующем уровне MTU определяется размером заголовков.