Сторона B: CCR1036 с: 6x VPLS поверх MPLS Каждый VPLS: MTU: 1526, Рекламируемый L2MTU: 1590 MPLS MTU: 1550 Использование 6x ether интерфейсов с MTU: 1530, L2MTU: 1590 (физически подключены к 6x vDSL модемам моего провайдера, по одному на каждый) Использование 6x мостовых интерфейсов с MTU: 1530, L2MTU: 1590 (каждый мостовой интерфейс включает 1x ether интерфейс + 1x VPLS интерфейс).
Удалённое соединение между стороной A и B: 2x UBNT PowerBeam500 M5 ISO AC с MTU: 1530 Ether интерфейсы на CCR1036: MTU 1530, L2MTU 1590
Причина такого соединения: CCR1036 на стороне A — главный роутер моей сети с включённым сервером PPPoE (для подключения клиентов), сервером HotSpot (для клиентов) и активированным методом Per Connection Classifier для балансировки нагрузки по линиям vDSL. Поскольку на стороне A у меня не получилось получить стабильные линии vDSL, а на стороне B удалось, я использую описанный выше туннель, чтобы реализовать метод PCC на основе PPPoE на главном роутере (сторона A).
Кроме того, я использую правило Change MSS с clamp to pmtu в mangle на главном роутере (сторона A), и у каждого клиента PPPoE фактический MTU — 1480.
L2MTU — это Ethernet MTU без заголовка Ethernet, MTU — это IP MTU без заголовка IP, Actual MTU — это MTU, который сейчас установлен на интерфейсе. Full frame MTU — это MTU Ethernet-кадра со всеми вышележащими заголовками, кроме заголовка Ethernet (14 байт). https://wiki.mikrotik.com/wiki/Manual%3AMaximum_Transmission_Unit_on_RouterBoards Все размеры MTU — это MTU интерфейсов без того специфического заголовка, которому они принадлежат и который сами завершают. Исправьте меня, если я ошибаюсь.
Ты это. MTU (или IP MTU) — это размер пакета, например, если речь об IP, то он включает заголовок IP/IPv6 и полезную нагрузку IP. MPLS MTU — это размер кадра, где кадр состоит из одной или нескольких MPLS-меток (по 4 байта каждая) и полезной нагрузки MPLS, которая может быть IP-пакетами или Ethernet-кадрами (в случае RouterOS). L2 MTU обычно — это максимальный размер L2-кадра, включая заголовки Ethernet (и dot1q/dot1ad), полезную нагрузку Ethernet, который может пройти через интерфейс. Но в случае ROS он не включает заголовок Ethernet, поскольку версии ROS не поддерживают L2-инкапсуляцию кроме Ethernet на физических интерфейсах с настраиваемым MTU. Это странновато, потому что максимальный размер передачи на уровне 2 должен покрывать и заголовки уровня MAC, так же как IP MTU включает заголовок IP/IPv6 — но такова реальность. L2 MTU > MPLS MTU > IP MTU, разумеется, если не используешь MPLS, средний параметр можно забыть.
Я имел в виду, что если интерфейс PPPoE настроен на MTU 1480, это значит, что этот интерфейс обрабатывает заголовки PPPoE, но сам интерфейс не учитывает их размер. Попробуйте сами. Установите MTU интерфейса PPPoE в 1480 и сделайте ping с включённым флагом «не фрагментировать». Максимальный размер ICMP-полезной нагрузки у вас будет 1452. Это потому, что интерфейс PPPoE учитывает заголовок ICMP (8 байт) и IP (20 байт). Вот и всё. При этом известно, что заголовки PPPoE занимают 8 байт, но ROS этого не учитывает. Как вы и сказали, максимальный размер ICMP-полезной нагрузки должен быть 1444 (1444+8+20+8=1480), но на практике это не работает.
Понимаю. Заголовки IP ≠ заголовки L2 кадров, а в случае PPPoE это именно заголовок кадра. Поэтому вполне логично, что ROS их не учитывает. Где бы вы ни устанавливали «MTU» в RouterOS, всегда показывается MTU уровня L3 (то есть IP MTU) для соответствующего интерфейса. Эти 8 байт «заголовка PPPoE» (6 байт заголовка сессии PPPoE + 2 байта заголовка PPP) находятся вне MTU уровня L3. Так же, кстати, как и заголовок Ethernet (1500 против 1514). Кстати, при PPPoE на обычных 1500 байтах полезной нагрузки Ethernet можно иметь IP MTU в 1492 байта.
Да, это правда. Автору: вам нужно считать байты заголовков только за пределами вашего MPLS-интерфейса передачи, а не VPLS-туннеля. (VPLS — это MPLS с двойным заголовком)