JANOG55 NETCON Level3-2問題解説

## はじめに
JANOG55（京都）で開催されたNETCONのLevel3-2問題について問題解説をします。
これは、実際に体験した障害？から作成した問題で、CiscoのNX-OSとIOS-XEとのデフォルト値の違いにより発生するものです。

## 問題文
とあるネットワーク構築部隊での話。
上司が新人に仕事を依頼しています。

上司：新しいネットワークの技術検証をしておいて
新人：ルータ2台構築の案件ですね
上司：そうだよ。２台のルータをIPv６リンクローカルで接続して、ISISでLoopBackインターフェイスに付与したIPv６アドレス同士が疎通できるようにしておいて。
新人：わかりました。RT-01のLoopback0がfc00:1000::1でRT-02がfc00:1000::2ですね。
上司：そうだね。RT-01は設定済みだから触らないように。

しばらくして・・・。

新人：RT-02に設定を投入したのですが、疎通できません・・・。
上司：ISISの設定が問題ないか確認して。
新人：なんでかな？

という訳で、どこがおかしいか確認して、RT-02からRT-01へpingで疎通確認ができるようにしてください。

#### 〇トポロジ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/133769/5b746e1b-4d88-1145-986d-be5ecabdb0ff.png)

#### 〇制約
* 設定の変更が可能なのはRT-02のみ。
* isisを使ってルーティングすること（Staticやほかのルーティング技術を用いることは禁止）

#### 〇達成条件
RT-02でping fc00:1000::1の実行結果が次のように表示されること
```
RT-02#ping fc00:1000::1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to FC00:1000::1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/1/2 ms
```
## 解答
```
RT-02# config terminal
RT-02(config)# router isis UNDERLAY
RT-02(config-router)# metric-style wide
*RT-02(config-router)# metric-style transitionでも可 
```

## 解説
今回はRT-01がCiscoのNX-OS、RT-02がCiscoのIOS-XEとなっています。
show runnning-configおよび問題文からisisが問題であることがわかります。
まずはshow runnning-configでisisに関係しそうな部分を見てみましょう
```RT-02 Gi2
interface GigabitEthernet2
 description eth-1-1.RT-01
 no ip address
 no shutdown
 negotiation auto
 ipv6 enable
 ipv6 router isis UNDERLAY
 no mop enabled
 no mop sysid
 isis circuit-type level-2-only
 isis network point-to-point
```
```RT-02 router 
router isis UNDERLAY
 net 10.0000.0000.0002.00
 is-type level-2-only
 ```
 大きく間違いはないようです。
 show isis databaseでisisの状態を確認します。
 ```
 RT-02#sh isis database

Tag UNDERLAY:
IS-IS Level-2 Link State Database:
LSPID                 LSP Seq Num  LSP Checksum  LSP Holdtime/Rcvd      ATT/P/OL
RT-01.00-00           0x00000004   0x89A7                 899/1199      0/0/0
RT-02.00-00         * 0x00000003   0x748F                 900/*         0/0/0
```
一応、対向のルータは見えています。
次にshow isis protcolを見てみましょう
```
RT-02#sh isis protocol

Tag UNDERLAY:
IS-IS Router: UNDERLAY (0x10000)
  System Id: 0000.0000.0002.00  IS-Type: level-2  lsp-mtu: 1492
  Manual area address(es):
        10
  Routing for area address(es):
        10
  Interfaces supported by IS-IS:
        GigabitEthernet2 - IPv6
        Loopback0 - IPv6
  Redistribute(CLNS):
    static (on by default)
  Distance for L2 CLNS routes: 110
  RRR level: none
  Generate narrow metrics: level-1-2
  Accept narrow metrics:   level-1-2
  Generate wide metrics:   none
  Accept wide metrics:     none
  Parallel flooding:       suppressed
  Adjacency stagger:       disabled
  IP/IPv6 Redistribution Limit: 10000(Default) Threshold: 75%
    L2 Redistributed routes: 0
```
よく見ると、metricがnarrowになっていることがわかります。
RT-02では明示的にmetric-styleの設定を入れていません。
ここまででわかったことは、RT-02からRT-01は一応、見えてはいる。
しかし、isisのneighborは張れていない
RT-02のmetric-styleはnarrowである。

ここで、RT-01でshow isis protcolを見てみましょう
```
RT-01# sh isis protocol

ISIS process : UNDERLAY
 Instance number :  1
 UUID: 1090519320
 Process ID 15726
VRF: default
  System ID : 0000.0000.0001  IS-Type : L2
  SAP : 412  Queue Handle : 12
  Maximum LSP MTU: 1492
  Stateful HA enabled
  Graceful Restart enabled. State: Inactive
  Last graceful restart status : none
  Start-Mode Complete
  BFD IPv4 is globally disabled for ISIS process: UNDERLAY
  BFD IPv6 is globally disabled for ISIS process: UNDERLAY
  Topology-mode is base
  Metric-style : advertise(wide), accept(narrow, wide)
  Area address(es) :
    10
  Process is up and running
  VRF ID: 1
  Stale routes during non-graceful controlled restart
  Enable resolution of L3->L2 address for ISIS adjacency
  SRTE: Not registered
  OAM: Not registered
  SR IPv4 is not configured and disabled for ISIS process: UNDERLAY
  SR IPv6 is not configured and disabled for ISIS process: UNDERLAY
 SRv6 is disabled for ISIS process: UNDERLAY
  Interfaces supported by IS-IS :
    loopback0
    Ethernet1/1
  Topology : 0
  Address family IPv4 unicast :
    Number of interface : 0
    Distance : 115
    Default-information not originated
  Address family IPv6 unicast :
    Number of interface : 2
    Distance : 115
    Default-information not originated
  Topology : 2
  Address family IPv4 unicast :
    Number of interface : 0
    Distance : 115
    Default-information not originated
  Address family IPv6 unicast :
    Number of interface : 0
    Distance : 115
    Default-information not originated
  Level1
  No auth type and keychain
  Auth check set
  Level2
  No auth type and keychain
  Auth check set
  L1 Next SPF: Inactive
  L2 Next SPF: Inactive
  Attached bits
   MT-0 L-1: Att 0 Spf-att 0 Cfg 1 Adv-att 0
   MT-0 L-2: Att 0 Spf-att 0 Cfg 1 Adv-att 0
```
RT-01のmetric-styleはwideですね。
ということで、RT-02のmetric-styleをwideもしくはtransitionに変更すれば、pingが通るようになります。
なお、transitionの場合は、narrowとwideどちらも使えるようになりますが、NX-OSのデフォルト値（明示的に設定しない場合の値）はwideなので、wideの設定をすればOKです。なお、IOS-XEのデフォルト値はnarrowです。
## さいごに
どうでしょうか？難しかったですか？
RT-01側のみ設定変更可能な場合は、RT-01のmetric-styleをtransitionにする必要がありました。
ルータが2台しかいないので、今回のmetric値は10になり、narrowだろうが、wideだろうが関係ありませんが、ここが一致していないとneighborを貼ることができません。