{"id":5982,"date":"2019-04-01T09:05:26","date_gmt":"2019-04-01T15:05:26","guid":{"rendered":"http:\/\/gregsowell.com\/?p=5982"},"modified":"2019-04-01T09:05:26","modified_gmt":"2019-04-01T15:05:26","slug":"asr9000-ios-xr-ospf-fun-with-mtu","status":"publish","type":"post","link":"https:\/\/gregsowell.com\/?p=5982","title":{"rendered":"ASR9000\/IOS-XR OSPF Fun With MTU"},"content":{"rendered":"<p>I&#8217;m going to start by saying IOS-XR has some pretty cool features, I mean just look at the addition of &#8220;commit&#8221;.  It does, however, have some quirks that can confound you, especially when you are migrating from one architecture over to the ASR9000 series.  In particular, I&#8217;m going to look at the OSPF implementation.<\/p>\n<p>Here&#8217;s a sample config:<\/p>\n<pre class=\"gs-code\"><code class=\"language-plaintext\">router ospf 10\r\n log adjacency changes detail\r\n router-id 1.1.1.1\r\n nsf cisco\r\n auto-cost reference-bandwidth 10000\r\n default-information originate route-policy cond_ospf_default\r\n redistribute connected metric-type 2\r\n redistribute static route-policy static-ospf\r\n area 0\r\n  interface Loopback0\r\n  !\r\n  interface TenGigE0\/0\/0\/4\r\n   network point-to-point\r\n  !\r\n  interface TenGigE0\/0\/0\/5\r\n   network point-to-point\r\n  !\r\n !\r\n area 0.2.0.2\r\n  interface TenGigE0\/0\/0\/6\r\n   authentication message-digest\r\n   message-digest-key 10 md5 tacos\r\n   network point-to-point\r\n  !\r\n !\r\n area 0.2.0.3\r\n  interface TenGigE0\/0\/0\/7\r\n   authentication message-digest\r\n   message-digest-key 10 md5 tacos\r\n   network point-to-point\r\n  !\r\n  interface TenGigE0\/0\/0\/8\r\n   authentication message-digest\r\n   message-digest-key 10 md5 tacos\r\n   network point-to-point\r\n  !\r\n !\r\n!<\/code><\/pre>\n<p>Looking at the config above you can see we&#8217;ve done away with network statements in favor of simply enabling the process on an interface, which is nice.  This cuts down on the network command covering some undesired interfaces.<\/p>\n<p>You can also see that I&#8217;ve enabled authentication per interface, and not per area, which means you can be more granular with passwords.<\/p>\n<p>I&#8217;ve also adjusted the network type per interface right here int he process instead of under the interface configuration itself; this means all OSPF configuration is done from the process, so there is a single place to to view all OSPF configurations, which I really like.<\/p>\n<p>A normal behavior of OSPF is once communication begins and DBDs begin to be exchanged by peers, OSPF will send these packets at the <strong>max MTU configured<\/strong> on the interface.  This means that if you have an MTU mismatch between OSPF neighbors, then they won&#8217;t be able to properly exchange OSPF information, and the neighborship will fail.  I mention all of this here because ASR9000s have a quirk with the configured MTU.  Note my below interface configurations:<\/p>\n<p>Cisco 7606:<\/p>\n<pre class=\"gs-code\"><code class=\"language-plaintext\">TenGigabitEthernet1\/7 is up, line protocol is up (connected)\r\n  Hardware is C6k 10000Mb 802.3, address is 0019.07a8.4500 (bia 0019.07a8.4500)\r\n  Description: [ to ASR9000 ]\r\n  Internet address is 2.2.2.2\/30\r\n  MTU 1524 bytes, BW 10000000 Kbit\/sec, DLY 10 usec,\r\n     reliability 255\/255, txload 2\/255, rxload 1\/255<\/code><\/pre>\n<p>Cisco ASR9006:<\/p>\n<pre class=\"gs-code\"><code class=\"language-plaintext\">TenGigE0\/0\/0\/4 is up, line protocol is up\r\n  Interface state transitions: 1\r\n  Dampening enabled: penalty 0, not suppressed\r\n    half-life:        1        reuse:             750\r\n    suppress:         2000     max-suppress-time: 4\r\n    restart-penalty:  0\r\n  Hardware is TenGigE, address is 78ba.f906.3cc4 (bia 78ba.f906.3cc4)\r\n  Layer 1 Transport Mode is LAN\r\n  Description: [ to 7606 ]\r\n  Internet address is 2.2.2.1\/30\r\n  MTU 1524 bytes, BW 10000000 Kbit (Max: 10000000 Kbit)\r\n     reliability 255\/255, txload 0\/255, rxload 2\/255<\/code><\/pre>\n<p>Note in the configuration of both it shows an MTU of 1524.  The problem here is there&#8217;s <strong>actually an MTU mismatch!<\/strong><br \/>\nHere&#8217;s the <a href=\"https:\/\/www.cisco.com\/c\/en\/us\/support\/docs\/ios-nx-os-software\/ios-xr-software\/116350-trouble-ios-xr-mtu-00.html\">Cisco doc on IOS-XR MTU<\/a>.  If I were to run a debug on OSPF between these peers I would see that my ASR9000 is 14 bytes less than my standard 7600.  The Layer 2 header without any dot1q information is 14 bytes, so the standard ASR9000 configuration doesn&#8217;t take this into account like most other Cisco devices&#8230;so how do you fix the issue; increase the MTU by 14 Bytes:<\/p>\n<p>Cisco ASR9000:<\/p>\n<pre class=\"gs-code\"><code class=\"language-plaintext\">interface ten0\/0\/0\/4\r\nmtu 1538\r\ncommit\r\n!\r\nRP\/0\/RSP0\/CPU0:asr9000#show int te0\/0\/0\/4\r\nTenGigE0\/0\/0\/4 is up, line protocol is up\r\n  Interface state transitions: 1\r\n  Dampening enabled: penalty 0, not suppressed\r\n    half-life:        1        reuse:             750\r\n    suppress:         2000     max-suppress-time: 4\r\n    restart-penalty:  0\r\n  Hardware is TenGigE, address is 78ba.f906.3cc4 (bia 78ba.f906.3cc4)\r\n  Layer 1 Transport Mode is LAN\r\n  Description: [ to 7606 ]\r\n  Internet address is 2.2.2.1\/30\r\n  MTU 1538 bytes, BW 10000000 Kbit (Max: 10000000 Kbit)<\/code><\/pre>\n<p>So even though the MTU shows 1538 it now allows the OSPF neighbors to establish on this link where the configuration is:<br \/>\n7600 MTU 1524<br \/>\nASR  MTU 1538<\/p>\n<p>Just another interesting twist you need to account for when connecting kit to your IOS-XR gear.<\/p>\n<p>Thanks and let me know what you think in the comments below!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I&#8217;m going to start by saying IOS-XR has some pretty cool features, I mean just look at the addition of &#8220;commit&#8221;. It does, however,\u2026<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[16,20,8],"tags":[],"class_list":["post-5982","post","type-post","status-publish","format-standard","hentry","category-cisco","category-hardware","category-networking"],"_links":{"self":[{"href":"https:\/\/gregsowell.com\/index.php?rest_route=\/wp\/v2\/posts\/5982","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/gregsowell.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/gregsowell.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/gregsowell.com\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/gregsowell.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=5982"}],"version-history":[{"count":2,"href":"https:\/\/gregsowell.com\/index.php?rest_route=\/wp\/v2\/posts\/5982\/revisions"}],"predecessor-version":[{"id":5984,"href":"https:\/\/gregsowell.com\/index.php?rest_route=\/wp\/v2\/posts\/5982\/revisions\/5984"}],"wp:attachment":[{"href":"https:\/\/gregsowell.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=5982"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/gregsowell.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=5982"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/gregsowell.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=5982"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}