on 02-12-2011 07:16 AM
To properly understand the differences in IOS and IOS-XR MTU configurations, let’s start with explanation of interface “mtu <value>” command:
- In IOS-XR this command is used to configure the L2 MTU.
- In IOS this command is used to configure the L3 payload size.
In other words in IOS-XR we include L2 headers as part of interface MTU command, which is not the case in IOS.
This implies that in order to achieve the same MTU setting between IOS and IOS-XR, IOS-XR interface MTU has to be 14B (bytes) higher for Ethernet and 4B higher for POS interfaces compared to IOS setting.
Example:
“mtu 1500” in IOS is equivalent to “mtu 1514” in IOS-XR for Ethernet (FastEth, GigEth, TenGigEth, HundredGigEth) interfaces.
“mtu 4470” in IOS is equivalent to “mtu 4474” in IOS-XR for POS interfaces.
All L3 protocols inherit their MTU settings from L2 MTU. Examples are IPv4, IPv6, MPLS, CLNS.
You can easily check complete MTU settings on IOS-XR:
RP/0/RP0/CPU0:ios#sh imds int gi0/0/0/2
Views: OWN - Owner, LDP - Local Data Plane, GDP - Global Data Plane,
L3P - Local 3rd Party, G3P - Global 3rd Party, RED - Owner Redundancy
Node: 0/RP0/CPU0
Interface GigabitEthernet0/0/0/2, ifh 0x01080080 (up, 1514)
Interface flags: 0x0801001f (IFCONNECTOR|IFINDEX|CONFIG|HW|VIS|DATA|CONTROL)
Encapsulation: ether
Interface type: IFT_GETHERNET
Views: G3P
Protocol Caps (state, mtu)
-------- -----------------
None txm_nopull [n/a]
None queue_fifo [n/a]
None l2_adj_rewrite [n/a]
None ether (up, 1514)
arp arp (up, 1500)
ipv4 ipv4 (up, 1500)
ipv6 ipv6_preswitch (up, 1500)
ipv6 ipv6 (up, 1500)
ether_sock ether_sock (up, 1500)
RP/0/RP0/CPU0:ios#sh imds interface pos0/4/3/2
View: OWN - Owner, L3P - Local 3rd Party, G3P - Global 3rd Party,
LDP - Local Data Plane, GDP - Global Data Plane, RED - Redundancy
Node 0/RP0/CPU0 (0x201)
Interface POS0/4/3/2, ifh 0x01480400 (up, 4474)
Interface flags: 0x0001001f (IFINDEX|CONFIG|HW|VIS|DATA|CONTROL)
Encapsulation: hdlc
Interface type: IFT_POS
Control parent: SonetPath0/4/3/2
Views: GDP|G3P
Protocol Caps (state, mtu)
-------- -----------------
None qos_out (up, 4474)
None hdlc (up, 4474)
chdlc chdlc (up, 4470)
clns clns (up, 4470)
ipv4 ipv4 (up, 4470)
mpls mpls (up, 4470)
In this example interface MTU is 1514B (for Ethernet interface) and 4474B (for POS interface). All L3 protocols inherit 1500B and 4470B respectively (this is default setting).
In IOS L2 headers are not considered as part of interface MTU:
router#sh int gi2/2/0 | i MTU
MTU 1500 bytes, BW 1000000 Kbit, DLY 10 usec, rely 255/255, load 1/255
router#sh ip int gi2/2/0 | i MTU
MTU is 1500 bytes
router#sh mpls int gi2/2/0 det | i MTU
MTU = 1500
On IOS-XR we have:
RP/0/RP0/CPU0:ios#sh int gi0/0/0/2 | i MTU
MTU 1514 bytes, BW 1000000 Kbit
RP/0/RP0/CPU0:ios#sh ipv4 int gi0/0/0/2 | i MTU
MTU is 1514 (1500 is available to IP)
RP/0/RP0/CPU0:ios#sh mpls interfaces gi0/0/0/2 location 0/0/cpU0
Sat Feb 12 16:05:40.625 CET
Interface IFH MTU
-------------- ---------- -----
Gi0/0/0/2 0x010800a0 1500
By default, IOS and IOS XR will have matching MTU settings. Values are 1514B(IOS-XR)/1500B(IOS) for Ethernet and 4474B(IOS-XR)/4470B(IOS).
L3 protocols will inherit their MTU from interface MTU and they will be automatically aligned between IOS and IOS-XR.
There is no need to change those settings unless required.
Typical scenario where increase of MTU is needed is MPLS core of the network.
If you want to use values different from default, configure interface MTU on IOS-XR side 14B higher for Ethernet and 4B higher for POS interfaces.
If you change L3 protocols MTU, they have to match on both sides.
In certain scenarios it’s required to configure different L3 protocol MTUs.
Let’s take example of MPLS interface where we want to allow 2 labels and we would like to limit IPv4 MTU to 1500B.
Highest L3 MTU will be used by MPLS and it’s
1500B+2x4B (labels) = 1508B.
Interface MTU for IOS-XR should be increased for L2 headers. Let’s say we’re using Ethernet, so it’s additional 14B:
1508B+14B=1522B
Interface MTU for IOS side equals to MPLS MTU (1508B).
For IPv4 we have to lower MTU on both sides to 1500B (by default it would be 1508B).
Here are configurations and outputs:
IOS-XR side:
RP/0/RP0/CPU0:ios#sh run int gi0/0/0/3
interface GigabitEthernet0/0/0/3
cdp
mtu 1522
ipv4 mtu 1500
ipv4 address 192.168.0.1 255.255.255.0
So interface MTU would be 1522, MPLS MTU 1508 and IPv4 MTU 1500 as displayed below:
RP/0/RP0/CPU0:ios#sh imds interface gi0/0/0/3
Views: OWN - Owner, LDP - Local Data Plane, GDP - Global Data Plane,
L3P - Local 3rd Party, G3P - Global 3rd Party, RED - Owner Redundancy
Node: 0/RP0/CPU0
Interface GigabitEthernet0/0/0/3, ifh 0x010800a0 (up, 1522)
Interface flags: 0x0801001f (IFCONNECTOR|IFINDEX|CONFIG|HW|VIS|DATA|CONTROL)
Encapsulation: ether
Interface type: IFT_GETHERNET
Views: G3P
Protocol Caps (state, mtu)
-------- -----------------
None txm_nopull [n/a]
None queue_fifo [n/a]
None l2_adj_rewrite [n/a]
None ether (up, 1522)
arp arp (up, 1508)
clns clns (up, 1508)
ipv4 ipv4 (up, 1500)
mpls mpls (up, 1508)
ether_sock ether_sock (up, 1508)
IOS side:
router#sh run int gi2/2/0
interface GigabitEthernet2/2/0
mtu 1508
ip address 192.168.0.2 255.255.255.0
ip mtu 1500
no negotiation auto
tag-switching ip
end
In IOS interface MTU would be 1508, MPLS MTU 1508 and IPv4 MTU 1500 as displayed below:
router#sh int gi2/2/0 | i MTU
MTU 1508 bytes, BW 1000000 Kbit, DLY 10 usec, rely 255/255, load 1/255
router#sh mpls int gi2/2/0 det | i MTU
MTU = 1508
router#sh ip int gi2/2/0 | i MTU
MTU is 1500 bytes
NB: L3 protocol MTU cannot be higher than interface MTU setting. For example if interface MTU on Ethernet is 1514B, then maximum allowed MTU for IPv4 is 1500B.
Hello Milivoje Mirovic,
Today I have the MTU configured on the vlan as shown below, but now I am changing it to the IOS-XR standard (EVC Framework), so my question is, where do I have to adjust the MTU in a way that it has the same effect that the old configuration on IOS?
IOS
!
vlan 200
mtu 9012
!
vlan 3006
mtu 9012
!
interface vlan 200
ip addr
IOS-XR
:router# configure
:router(config)# interface bvi 100
:router(config-if)# vrf vod-management
:router(config-if-vrf)# ipv4 address <IP> <mask>
:router(config-if-vrf)# commit
:router# configure
:router(config)# l2vpn
:router(config-l2vpn)# bridge group VL100
:router(config-l2vpn-bg)# bridge domain VL100
:router(config-l2vpn-bg-bd)# interface gigabitethernet 0/0/0/4
:router(config-l2vpn-bg-bd)# interface gigabitethernet 0/0/0/5.100
:router(config-l2vpn-bg-bd)# commit
:router# configure
:router(config)# interface gigabitethernet Gi0/0/0/4
:router(config-if)# l2transport
:router(config-if)# commit
:router(config-if)# interface Gi0/0/0/5.100 l2transport
:router(config-if)# encapsulation dot1q 100
:router(config-if)# rewrite ingress tag pop 1 symmetric
:router(config-if)#
Thanks in advance,
Renato
Hi Renato,
MTU command you mentioned on 7600 is actually a L2 MTU.
Therefore I would suggest to apply 9012+14=9026B MTU on physical interfaces of ASR9k.
Let me know if you encounter any issues.
BR
Milivoje
This is really a good document. Thanks for sharing the link. Now the query left with me is that my network is going to have Enterprise Services also wherein we will need to run VPLS, L2VPN, MPLS TE, RSVP etc. Now if we consider the MTU enhancement for these protocols also, then how do we take it up between IOS & IOS-XR?
Hi,
Principles are the same, if we're talking about core interfaces. VPLS, L2VPN and MPLS TE use MPLS MTU, while RSVP uses IPv4/IPv6 MTU so nothing special there.
Regarding L2 MTU for L2VPN customer facing interfaces they should match. Please make sure that core can support L2 MTU. For instance if attachment circuit uses 1500B IOS MTU (1514 in IOS-XR), then core should have at least 1500B+14B (new ethernet header)+ MPLS labels (for instance 2x4B)+ Control word 4B. Add 14B more for IOS-XR side. However if you configure maximum MTU you're on the safe side.
BR
Mili
Many thanks for this post
Thank you. Good Doc.
Excellent document Sr !!
One question: Does the 14 byte extra for ethernet stands for the Src - DST and Length field of its header ?
Thank you
Thank you Gustavo. Indeed 14B is for Src, Dst and Lenght/Ethertype. FCS is not counted.
Thank you very much !!
One last question:
Lets assume that the only MTU configuration in the IOS side is "mpls mtu 1508"
I assume the XR side should look as follows:
interface Gi0/3/2/3 mtu 1522
interface Gi0/3/2/3 ipv4 mtu 1500 -> i want to limit max L3 MTU
interface Gi0/3/2/3 ipv4 address x.x.x.x
interface Gi0/3/2/3 mpls mtu 1508 -> i want 2 mpls labels
1500 + 8 + 14(ethernet) = 1522
right ??
regards
Hi Gustavo, you're indeed correct. Of course for deployments, suggestion is to have higher MPLS MTU than 1508B.
Find answers to your questions by entering keywords or phrases in the Search bar above. New here? Use these resources to familiarize yourself with the community: