MTU is most important aspect for proper functionality of any application. In this blog post I will highlight MTU handling by Junos based devices for (802.3 un-tag and 802.1Q tag packets) .
Simple 802.3 packet header is shown above total packet size is 1514 bytes (14 bytes header + 1500 bytes max payload). Now we will see how Junos based devices handle MTU on access ports.
- LAB> show interfaces xe-1/0/32
Physical interface: xe-1/0/32, Enabled, Physical link is UpLink-level type: Ethernet, MTU: 1514, MRU: 0, Link-mode: Auto, Speed: Auto, BPDU Error: None, MAC-REWRITE Error: None, Loopback: Disabled, Source filtering: Disabled, Flow control: Disabled, Auto-negotiation: Disabled,
———-output omitted for brevity——————–
Protocol eth-switch, MTU: 1514 - LAB > monitor traffic interface xe-1/0/32 no-resolve layer2-headers print-hex 02:09:00.266841 Out 00:31:46:52:dd:80 > 00:1e:0b:d3:1d:1a, ethertype 802.1Q (0x8100), length 1486: vlan 243, p 0, ethertype IPv4, truncated-ip – 32 bytes missing!
(tos 0x0, ttl 64, id 49385, offset 0, flags [DF], proto: ICMP (1), length: 1500)
192.168.243.1 > 192.168.243.52: ICMP echo reply, id 29316, seq 5, length 1480
- As we can see an access interface “xe-1/0/32″ showing MTU 1514 but when we monitor traffic on same interface astonishingly we can see Tag-Protocol Identifier (0x8100) which represent 802.1Q tagging. As per port configuration 802.1Q is not allowed as port is configured in access mode (conclusion is given in last paragraph).
Let’s explore 802.1Q packet and Junos device behavior with respect to MTU
In 802.1Q header additional 4 bytes are added thus new header consists of 18 bytes as compare to 14 bytes header for 802.3 and total packet size will be (18 bytes header + 1500 bytes payload). We have configured an aggregated Ethernet (ae1) interface trunk mode (which enables the interface to receive 802.1Q tag packets).
LAB> show interfaces ae1
Physical interface: ae1, Enabled, Physical link is Up
———-output omitted for brevity——————–
Protocol eth-switch, MTU: 1514
Flags: Trunk-Mode
As per configuration the ae1 interface must show MTU value of 1518 due to “interface-mode trunk” but its showing MTU value of 1514.
Obviously its creating confusion, if trunk interface is showing MTU value of 1514 then how it will receive packet with 1500 bytes payload + 18 bytes header . But the matter of the fact is , this interface will receive payload size of 1500 bytes and header size of 18 bytes even with MTU value displayed in CLI as 1514 .
Conclusion
- Trunk ports- Even though MTU size displayed in CLI is 1514 bytes but at hardware level 1518 bytes are handled for 802.1Q packets.
- Access Port– In CLI the MTU is showed as 1514 which is quite normal but once we monitor the traffic on access port we can see Tag-Protocol Identifier (0x8100) which represent 802.1Q tagging. So for access ports , Junos hardware adds one tag also.
Nice writeup!
Also worth mentioning that “flexible-vlan-tagging” on MX adds another 4 bytes vs. “vlan-tagging” (it assumes you’re dual-tagging), even if you don’t configure any tags on the port.
LikeLike
Dear Blake , thanks for your review I am planning another series of blog where i will cover the point you highlighted. the real idea behind this blog was to highlight that Trunk port is showing MTU 1514 but its actually handling 1518 bytes size packet and access port is also showing 1514 bytes MTU in CLI but in hardware its actually adding 4 bytes for x8100 TP-ID which is only for required for trunks / tag ports.
Thanks for your comments.
LikeLike