I recently encountered an issue upgrading from an IOS device to an IOS XE ASR 1000 router concerning Ethernet Over SONET (EOS). VLAN tags are used to map traffic from the hub router to SONET connections to the spokes, after which the hub's SONET box strips the VLAN tag from the frame.
The IOS device at the hub was functioning correctly in this scenario but when it was replaced with an ASR 1000 EIGRP kept flapping every 120 seconds.
The problem was traced to a difference in the way IOS and the ASR 1000 pad Ethernet frames to get them to the minimum size of 64 Bytes. It appears that IOS pads the untagged Ethernet frame to 64 Bytes before adding the VLAN tag, but that IOS XE adds the VLAN tag and then pads the size to 64 Bytes.
Below is a captured frame from the ASR attempting to initiate a telnet session. Wireshark has the frame size as 62 Bytes, but this excludes the 4 Byte Frame Check Sequence (FCS), so the actual size is 66 Bytes including the VLAN tag. Once the VLAN tag is stripped by the SONET box the frame size is 62 Bytes.
Below is a similar frame captured from an IOS router. Note that the stated size is 64 Bytes instead of 62 Bytes because the router is adding two bytes of padding (labeled trailer). With the FCS added, this frame will meet the 64 Byte minimum requirement even with the VLAN tag stripped off.
After the VLAN tag is stripped by the SONET equipment at the hub, the EIGRP UPDATE packets coming from the ASR 1000 were below the minimum frame size and were getting dropped by the far-end SONET box.
The solution used was to not strip the VLAN tags, but pass them through the SONET system.
Is there a way to force IOS XE to pad frames to 64 Bytes before adding the VLAN tag, like IOS? Or, is there a way to set the minimum frame size on IOS XE to 68 Bytes?
The only commands I found online (plim min-frame-length 68byte) were for specific line cards and were not accepted on the router's interfaces.