9 mins read

ISIS – MTU and Hello Padding

1. Intro

ISIS has a rather indirect method of checking the interface MTU to establish if it meets the adjacency requirements.

As an OSI Layer 2 protocol, IS-IS does not support data fragmentation. Therefore, maximum packet sizes must be established and supported between two routers. During adjacency establishment, the IS-IS protocol makes sure that the link supports a packet size of 1492 bytes by padding outgoing hello packets up to the maximum packet size of 1492 bytes.

During neighbor discovery, the ISIS router will send normal and small ISIS Hello (IIH) packets

Only after the router discovers a neighbor, it will do 2 things:

  • it will add the neighbor in a dedicated TLV
  • it will add padding to the hello packet to test the end-to-end MTU on the link

After a few packets padded to the default maximum value of 1492 are exchanged, and the adjacency is established, then routers continue to exchange IIH packets at the normal smaller size to preserve bandwidth.

To conclude, each ISIS router should have a minimum MTU of 1492 bytes. This documentation statement seems straightforward enough, but let’s put it to the test.

2. Interface MTU 1400

In this scenario we are testing a lower than default MTU, so let’s try to establish an ISIS adjacency with an interface MTU of 1400.

We have two directly connected routers, R1 and R3, and both have interface MTU set to 1400:

But, with this 1400 MTU configured (both ends), the routers are no longer exchanging IIH packets. This happens silently with no logs to indicate the MTU issue. The only logs related to these interfaces are confusing and rather seem to indicate the interface is down (!) instead of indicating that ISIS is not ok with the MTU.

So, to use a lower MTU, we need to use the ISIS process to send small packets. But how small? While the interface MTU is 1400, the ISO MTU is 1383, this is the max value we can set for ISIS packets. The solution is to set max-hello-size, max-lsp-size and max-snp-size to 1380:

To conclude, the ISIS process is using the default 1492 MTU even if there is a lower MTU on the interface. This means that if we set a lower than default 1500 MTU (which translates to 1497 iso MTU) on the interface, then the adjacency will fail without additional steps.

Now, let’s rollback by deleting the interface MTU and max-*-size knobs so we can proceed to next scenario.

3. Interface MTU 2000

In this scenario we are testing a higher than default MTY, so we will set the interface MTU to 2000, one router at a time:

Same as in the previous section, irrespective of the interface configuration, the ISIS process will use the default 1492 value, we can see this in the IIH padding (PDU length: 1492). In this case, a higher than default 1500 MTU on the interface will not impact the ISIS adjacency and it will remain UP.

You may say that we can increase the max size for ISIS packets as we did in the previous section, but take a look at this:

As we can see, there are limitations. Here we are entering a territory where we need asses which platform supports this, and even if the platform supports this then we may have vendor interoperability issues.

In a nut shell, for ISIS keep the interface MTU at the default 1500 value (which translates to 1497 iso MTU) or higher, and remember it is not recommended to change the max size values for ISIS packets (lowering them or increasing them).

4. ISIS adjacency over a l2circuit

This is an important use case, we will establish an ISIS adjacency between R1 and R5. But, these routers are not directly connected, instead the connection is over a MPLS L2 Circuit.

ISIS MTU and Hello Padding

For testing purposes, the MPLS interfaces have the default MTU of 1500, so because of the L2Circuit encapsulation in the MPLS core, padded ISIS Hello packets between R1 and R5 will not pass:

The sensible solution is to increase the MTU in the core:

### Increase the MTU in the MPLS core: 

root@R2# set interfaces ge-0/0/3 mtu 9000 
root@R4# set interfaces ge-0/0/3 mtu 9000 

### After the commit the ISIS adjacency comes UP: 

root@R1# run show isis adjacency    
Interface             System         L State         Hold (secs) SNPA
ge-0/0/1.0            R5             1  Up                    25
ge-0/0/2.0            R3             1  Up                    22

What we are highlighting here is the fact that ISIS with the hello padding will actually test the end-to-end MTU on the link, so the inconsistency that we have described in this section is captured.

Interesting, OSPF may seem to be more rigid when checking the MTU during neighborship establishment, but OSPF will fail to capture the MTU missmatch in a similar case. This is because OSPF is checking only the interface MTU, not the end to end MTU on a link.


External Resources: