【SRへの道5】IS-ISを動かしてみる
トップページはこちら
前回までに行ったこと
前回はこちらのISP-Aの中でOSPFを動作させることができました。
IS-ISを実装してみる
今回はISP-Bの中でIS-ISを動かしてみることにします。
IS-ISについてはこれまであまりかかわったことがなく、知識も何一つ持っていないので今回は実際に動作をさせるだけで、IS-ISについての詳しい調べ物は次回の記事にて深く考えてみることにします。
お題
今回は前回のトポロジ図の中のISP-B内でIS-ISを動かします。
条件
・ISP-BにはIS-ISを動かすこと
・今回はこれら以外の接続は無視すること
先に決めておく事柄
OSPFと同様、こちらも先に決めておく数値があるのでこちらで先に決めておきたいと思います。
・NETの割り当て
OSPFではnetworkコマンドを使いましたが、IS-ISではデバイスごとにNSAPアドレスを振ります。NSAPはnetコマンドでそれぞれの機器に振っていきます。こちらルーティングプロトコルの歴史にかかわってくるのでまた次回詳しく見ていきたいと思いますが、ひとまずルータそれぞれでNSAPというアドレスを振ってあげます。フォーマットは「エリアID(今回の場合第1オクテット)」「システムID(今回の場合第2~4オクテット)」「NSEL(今回の場合第5オクテット)」で構成されていて、同じエリア内では同じエリアIDをつけ、それぞれ異なるシステムIDを付ける。NSELではルータの場合「00」を付ける。
XE-B1: 01.0000.0000.0001.00
XE-B2: 01.0000.0000.0002.00
XE-B3: 01.0000.0000.0003.00
XE-B4: 01.0000.0000.0004.00
XE-B5: 01.0000.0000.0005.00
実際にコンフィグしてみる
さてでは実際にコンフィグしてみたいと思います。
まずそれぞれのルータでIS-ISを有効にします。
XE-B1(config)#router isis
その後、各ルータのNSAPアドレスを入力します。
インターフェースにアドレスを振るのではなくルータコンフィグレーションモードで設定するのがみそです。
XE-B1(config-router)#net 01.0000.0000.0001.00
そしてインターフェースにはそれぞれIS-ISを有効にするコマンドを打たなければなりません。IS-ISを動作させるすべてのインターフェスに以下を設定します。
XE-B1(config)# interface gi2
XE-B1(config-if)#ip router isis
XE-B1(config)# interface gi3
XE-B1(config-if)#ip router isis
XE-B1(config)# interface gi4
XE-B1(config-if)#ip router isis
XE-B1(config)# interface gi5
XE-B1(config-if)#ip router isis
次にルーターのレベル設定を行います。
(Integrated) IS-ISではネットワーク全体を複数のエリアに分割してルーティングする階層ルーティングですが、IS-ISではレベルルーティングによってそれを実現しています。レベルの設定は3種類あり
・level-1
エリア内のルーティングを実行
・level-1-2
エリア内とエリア間のルーティングを実行
・level-2-only
エリア間のルーティングを実行
このように分かれています。
今回はすべて同一エリア内でのルーティングなのですべての機器でLevel-1を設定します。設定を入れないとデフォルトではlevel-1-2になっています。
XE-B1(config)#router isis
XE-B1(config-router)#is-type level-1
これで完了です。
それでは全体でどのようなコンフィグになっているのか確認してみます。
XE-B1(config)#int gi2
XE-B1(config-int)#ip router isis
XE-B1(config)#int gi3
XE-B1(config-int)#ip router isis
XE-B1(config)#int gi4
XE-B1(config-int)#ip router isis
XE-B1(config)#router isis
XE-B1(config-router)#net 01.0000.0000.0001.00
XE-B1(config-router)#is-type level-1
XE-B2(config)#int gi2
XE-B2(config-int)#ip router isis
XE-B2(config)#int gi3
XE-B2(config-int)#ip router isis
XE-B2(config)#int gi4
XE-B2(config-int)#ip router isis
XE-B2(config)#router isis
XE-B2(config-router)#net 01.0000.0000.0002.00
XE-B2(config-router)#is-type level-1
XE-B3(config)#int gi2
XE-B3(config-int)#ip router isis
XE-B3(config)#int gi3
XE-B3(config-int)#ip router isis
XE-B3(config)#int gi4
XE-B3(config-int)#ip router isis
XE-B3(config)#router isis
XE-B3(config-router)#net 01.0000.0000.0003.00
XE-B3(config-router)#is-type level-1
XE-B4(config)#int gi2
XE-B4(config-int)#ip router isis
XE-B4(config)#int gi3
XE-B4(config-int)#ip router isis
XE-B4(config)#int gi4
XE-B4(config-int)#ip router isis
XE-B4(config)#router isis
XE-B4(config-router)#net 01.0000.0000.0004.00
XE-B4(config-router)#is-type level-1
XE-B5(config)#int gi2
XE-B5(config-int)#ip router isis
XE-B5(config)#int gi3
XE-B5(config-int)#ip router isis
XE-B5(config)#int gi4
XE-B5(config-int)#ip router isis
XE-B5(config)#int gi4
XE-B5(config-int)#ip router isis
XE-B5(config)#router isis
XE-B5(config-router)#net 01.0000.0000.0005.00
XE-B5(config-router)#is-type level-1
設定ができているか確認してみる
こちらコマンドにてネイバーが張れているか、アドレスをOSPF経由で学習できているかを確認します。
XE-B1#show isis neighbors
System Id Type Interface IP Address State Holdtime Circuit Id
XE-B2 L1 Gi3 10.1.12.2 UP 8 XE-B2.02
XE-B3 L1 Gi4 10.1.13.3 UP 28 XE-B1.03
XE-B5 L1 Gi2 10.1.15.5 UP 7 XE-B5.01
XE-B1#show ip route
Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2, m - OMP
n - NAT, Ni - NAT inside, No - NAT outside, Nd - NAT DIA
i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
ia - IS-IS inter area, * - candidate default, U - per-user static route
H - NHRP, G - NHRP registered, g - NHRP registration summary
o - ODR, P - periodic downloaded static route, l - LISP
a - application route
+ - replicated route, % - next hop override, p - overrides from PfR
& - replicated local route overrides by connected
Gateway of last resort is not set
10.0.0.0/8 is variably subnetted, 11 subnets, 2 masks
C 10.1.12.0/24 is directly connected, GigabitEthernet3
L 10.1.12.1/32 is directly connected, GigabitEthernet3
C 10.1.13.0/24 is directly connected, GigabitEthernet4
L 10.1.13.1/32 is directly connected, GigabitEthernet4
C 10.1.15.0/24 is directly connected, GigabitEthernet2
L 10.1.15.1/32 is directly connected, GigabitEthernet2
i L1 10.1.24.0/24 [115/60] via 10.1.12.2, 00:03:16, GigabitEthernet3
i L1 10.1.25.0/24 [115/40] via 10.1.15.5, 00:02:27, GigabitEthernet2
i L1 10.1.34.0/24 [115/60] via 10.1.13.3, 00:02:58, GigabitEthernet4
i L1 10.1.35.0/24 [115/40] via 10.1.15.5, 00:02:20, GigabitEthernet2
i L1 10.1.45.0/24 [115/40] via 10.1.15.5, 00:02:20, GigabitEthernet2
172.16.0.0/32 is subnetted, 5 subnets
C 172.16.2.1 is directly connected, Loopback0
i L1 172.16.2.2 [115/30] via 10.1.12.2, 00:03:26, GigabitEthernet3
i L1 172.16.2.3 [115/30] via 10.1.13.3, 00:03:08, GigabitEthernet4
i L1 172.16.2.4 [115/40] via 10.1.15.5, 00:02:15, GigabitEthernet2
i L1 172.16.2.5 [115/20] via 10.1.15.5, 00:02:27, GigabitEthernet2
追加でしなければいけない設定
ワイドメトリックの設定
OSPFと同じようにIS-ISでもメトリック値を使用して経路を制御することができます。しかしメトリックには種類があり、「ナローメトリック」と「ワイドメトリック」があります。ナローメトリック値はデフォルトで10が設定されていてこの値を「1 ~ 63」の間で設定できます。しかし、範囲がこれだけしかないのでパスコストの合計が1023というのは大規模ネットワークでは柔軟性がなく、メトリック値の範囲を大幅に拡張したワイドメトリックのほうが一般的に使われます。ワイドメトリック値の範囲は「1 ~ 16777214」でありパスコストの合計値が最大で約43憶となります。
このナローメトリックとワイドメトリックは混在させることができないため、どちらを使用するかは手動でせっていしなければなりません。デフォルトではナローメトリックが設定されるので、ワイドメトリックを使うようにコンフィグしてあげます。すべての機器で設定しなければなりません。
XE-A1(config)#router isis
XE-A1(config-router)#metric-style wide
pingで疎通確認!
これで各機器のループバックアドレスを含むアドレスをIS-ISを使ってダイナミックルーティングできるようになったのでpingとtracerouteを使って確認してみます。
XE-B1#ping 172.16.2.4
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 172.16.2.4, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 2/4/11 ms
XE-B1#traceroute 172.16.2.4
Type escape sequence to abort.
Tracing the route to 172.16.2.4
VRF info: (vrf in name/id, vrf out name/id)
1 10.1.15.5 10 msec 1 msec 1 msec
2 10.1.45.4 3 msec 5 msec *
IS-IS設定することができました!
IS-ISで複数経路を一本にする
OSPFと同様、IS-ISでも経路を一本化したいと思います。
メトリックの設定はOSPFと全く同様なのでやりたいことの説明は前回の記事をご参照ください。設定するメトリックの値も同様です。
コンフィグのみ記載しておきます。
以下のようにすべてのインターフェースでメトリックの値を設定してあげます。
XE-B1(config)#int gi2
XE-B1(config-int)#isis metric 20
コンフィグすると自動的にlevel-1, level2でメトリックが設定されます。
XE-B1#show run int gi3
Building configuration...
Current configuration : 183 bytes
!
interface GigabitEthernet3
ip address 10.1.12.1 255.255.255.0
ip router isis
negotiation auto
no mop enabled
no mop sysid
isis metric 30 level-1 <<
isis metric 30 level-2 <<
end
tracerouteで設定した経路を通っているかしっかり確認します。
XE-B1#traceroute 172.16.2.4
Type escape sequence to abort.
Tracing the route to 172.16.2.4
VRF info: (vrf in name/id, vrf out name/id)
1 10.1.15.5 10 msec 1 msec 1 msec
2 10.1.45.4 3 msec 5 msec *
大丈夫そうです!
次回への展望
今回、IS-ISを初めて設定してみましたが、OSPFとは少々異なる設定方法でした。こちらルーティングプロトコルの歴史にかかわってくるそうなのでなぜ設定方法が違うのか、そもそもNSAPアドレスとはなんなのか考察していきたいと思います。