A simple and effective command is available on IOS-XR to check different protocol MTU on an interface, where the behavior is slightly different from plain IOS.

show im database interface [if number]

If we have our interface configured like this:

interface Bundle-Ether100.1000
 mtu 9022
 encapsulation dot1q 1 second-dot1q 1000

Unlike regular IOS, the defined MTU is including the ethernet header, so if we verify it through Interface Manager, we discover that XR reserve 2x 4 bytes space for the double dot1q tagging used above.

RP/0/RSP0/CPU0:router#<strong>show im database interface Bundle-Ether100.1000</strong>

View: OWN - Owner, L3P - Local 3rd Party, G3P - Global 3rd Party, LDP - Local Data Plane
 GDP - Global Data Plane, RED - Redundancy, UL - UL

Node 0/RSP0/CPU0 (0x41)

Interface Bundle-Ether200.102022516, ifh 0x082535e0 (up, 9022)
 Interface flags: 0x00000000000205d7 (REPLICATED|IFINDEX
 Encapsulation: dot1q
 Interface type: IFT_VLAN_SUBIF
 Control parent: Bundle-Ether200
 Data parent: Bundle-Ether200
 Views: UL|GDP|G3P|L3P|OWN

 Protocol Caps (state, mtu)
 -------- -----------------
<strong> None vlan_jump (up, 9022)</strong>
<strong> None dot1q (up, 9022)</strong>
<strong> arp arp (up, 9000)</strong>
<strong> ipv4 ipv4 (up, 9000)</strong>
<strong> mpls mpls (up, 9000)</strong>
<strong> ipv6 ipv6_preswitch (up, 9000)</strong>
<strong> ipv6 ipv6 (up, 9000)</strong>

The difference between ethernet and all the other carried protocols is 22 bytes (14 ethernet header + 2x 4bytes dot1 encapsulation)