↓ メインコンテンツへスキップ
  1. ネットワーク 記事一覧/
  2. IS-IS記事一覧/

IS-ISの複数エリアアドレス(マルチホーミング)とエリアの統合・分割

目次

IS-ISの複数エリアアドレス(マルチホーミング)とエリアの統合・分割

IS-ISのルータには、ISO方式のアドレスであるNET(Network Entity Title)を設定します (詳細はIS-ISのNSAPアドレスとNET)。このNETは1台に複数設定できます。 エリアを無停止で作り替えるための仕組みで、エリアの統合と分割はこれを使って行います。

規格は「1つのエリアに複数の同義のエリアアドレス」を認めている

ISO/IEC 10589:2002(第2版)の7.1.5は、1つのエリアが複数のエリアアドレスを持つことを認めています。 理由として挙げられているのは次の2つです。

  1. ルーティングドメイン内でアドレスを割り当てる機関が複数あることがあり、そのたびにエリアを分けるのは効率的でない
  2. エリアを2つに分けたり、複数のエリアを1つにまとめたりする再編が必要になることがある。 1エリアに1つのアドレスしか許されないと、この再編を運用中に行えない

複数のアドレスは管理パラメータ manualAreaAddresses で保持され、そのISのすべての manualAreaAddresses とSystem IDの組み合わせが、そのISの有効なNETになります。

制約内容
System IDすべてのNETで同一でなければならない。違えられるのはArea IDだけ
数の上限管理パラメータ maximumAreaAddresses。すべてのISが少なくとも3をサポートしなければならない(7.1.5)
値の一致maximumAreaAddresses はPDUで交換され、エリア内で値が一致しているかが検査される。そろっていないと隣接が確立できなかったり、エリアが分断されたりする

レベル1の隣接は「共通のアドレスが1つ以上」で成立する

7.1.5は、レベル1のIS同士が隣接するには両者の manualAreaAddresses に少なくとも1つ共通の エリアアドレスがあればよいとしています。7.1.4 d) も、エンドシステムがレベル1のISの隣接になれる条件として 「自分のエリアアドレスが、相手のNETのエリアアドレスか、相手の manualAreaAddresses の他の項目と一致すること」を挙げています。

ここから2つのことが導けます。

  • 複数のエリアに同時に所属するのではない。 複数のアドレスを設定すると、それらのエリアは1つに統合される
  • 統合は片側だけでも始まる。 境界のルータに相手のエリアアドレスを足せば、その時点で共通のアドレスができ、 レベル1の隣接が成立する

統合と分割の手順

エリアの再編は、両方のアドレスをいったん境界のルータに持たせてから、不要なほうを外す順で行います。

操作手順
統合エリアAの境界にBのアドレスを足す → エリアBの境界にもAのアドレスを足す
分割分けたい側から相手のアドレスだけを外す → もう片方からも外す

順序を誤ると、エリアが意図しない形に割れます。 共通のアドレスが先に無くなると、そのルータは 同じエリアだったはずの隣接を失います。後半でその壊れ方を実機で確認します。

検証構成

XRd 26.1.1を6台使い、エリアの境界を2台にしています(R2・R3)。境界が2台あると、 エリアアドレスの追加・削除を片側だけ行った状態を観測できます。

ルータis-typeNETLo0
R1level-149.0001.0010.0100.1001.001.1.1.1/32
R5level-149.0001.0050.0500.5005.005.5.5.5/32
R2level-1-249.0001.0020.0200.2002.002.2.2.2/32
R3level-1-249.0002.0030.0300.3003.003.3.3.3/32
R4level-149.0002.0040.0400.4004.004.4.4.4/32
R6level-149.0002.0060.0600.6006.006.6.6.6/32

検証の全体像

STEP操作確かめること
0初期状態R2-R3 はレベル2のみ。レベル1のLSDBは各エリア3台分
1R2に 49.0002 を追加(片側だけ)共通のアドレスができ、R2-R3 にレベル1の隣接が成立するか
2R3に 49.0001 を追加(両側)エリアが1つに統合され、LSDBが6台分になるか
3R2から 49.0001 を削除(誤った分割)R1・R5 と共通のアドレスが無くなり、隣接が落ちるか
4R2に 49.0001 を戻す復旧
5R3から 49.0001 を削除正しい分割の片側
6R2から 49.0002 を削除分割完了。初期状態へ
7R2のNETを3つにし、4つ目を投入maximumAreaAddresses の上限で拒否されるか
8追加した2つを削除(最終状態)初期状態と同じ

片側だけ足してもレベル1の隣接は成立する

初期状態では、R2 と R3 はArea IDが違うのでレベル2の隣接だけです。

STEP 0:R2の show isis neighbors
RP/0/RP0/CPU0:R2#show isis neighbors
Sun Oct  4 06:30:07.424 UTC

IS-IS 1 neighbors:
System Id      Interface        SNPA           State Holdtime Type IETF-NSF
R1             Gi0/0/0/0        *PtoP*         Up    25       L1   Capable 
R5             Gi0/0/0/2        *PtoP*         Up    22       L1   Capable 
R3             Gi0/0/0/1        *PtoP*         Up    29       L2   Capable 

Total neighbor count: 3

R2 にだけ 49.0002 のNETを足します。System IDは変えません。

STEP 1:R2でcommitされた設定
RP/0/RP0/CPU0:R2#show configuration commit changes last 1
Sun Oct  4 06:32:27.761 UTC
!! Building configuration...
!! IOS XR Configuration 26.1.1
router isis 1
 net 49.0002.0020.0200.2002.00
!
end

これで R2 は2つのエリアアドレスを持ちます。

STEP 1:R2の show isis(抜粋)
RP/0/RP0/CPU0:R2#show isis
Sun Oct  4 06:34:59.510 UTC

IS-IS Router: 1
  System Id: 0020.0200.2002 
  Hostname: R2
  IS Levels: level-1-2
  Manual area address(es):
    49.0001
    49.0002
  Routing for area address(es):
    49.0001
    49.0002
  Multi-Instance Id: 0

R3 側は何も変えていないのに、R2-R3 の隣接が L1L2 になります。

STEP 1:R2の show isis neighbors
RP/0/RP0/CPU0:R2#show isis neighbors
Sun Oct  4 06:35:00.422 UTC

IS-IS 1 neighbors:
System Id      Interface        SNPA           State Holdtime Type IETF-NSF
R1             Gi0/0/0/0        *PtoP*         Up    24       L1   Capable 
R5             Gi0/0/0/2        *PtoP*         Up    24       L1   Capable 
R3             Gi0/0/0/1        *PtoP*         Up    28       L1L2 Capable 

Total neighbor count: 3

共通のエリアアドレス(49.0002)が1つできたためで、7.1.5のとおりです。R1・R5 とは 49.0001 が 共通なのでレベル1のままです。この時点で R2 は、2つのエリアを1つにつなぐ役割になっています。

両側に足すとエリアが1つになる

R3 にも 49.0001 を足すと、両側が2つのアドレスを持ちます。

STEP 2:R2の show isis(抜粋)
RP/0/RP0/CPU0:R2#show isis
Sun Oct  4 06:39:56.718 UTC

IS-IS Router: 1
  System Id: 0020.0200.2002 
  Hostname: R2
  IS Levels: level-1-2
  Manual area address(es):
    49.0001
    49.0002
  Routing for area address(es):
    49.0001
    49.0002
  Multi-Instance Id: 0
STEP 2:R3の show isis(抜粋)
RP/0/RP0/CPU0:R3#show isis
Sun Oct  4 06:40:23.665 UTC

IS-IS Router: 1
  System Id: 0030.0300.3003 
  Hostname: R3
  IS Levels: level-1-2
  Manual area address(es):
    49.0002
    49.0001
  Routing for area address(es):
    49.0002
    49.0001
  Multi-Instance Id: 0

レベル1のLSDBは6台分になります。2つだったエリアが1つになった、ということです。

STEP 2:R2の show isis database
RP/0/RP0/CPU0:R2#show isis database
Sun Oct  4 06:39:58.688 UTC

IS-IS 1 (Level-1) Link State Database
LSPID                 LSP Seq Num  LSP Checksum  LSP Holdtime/Rcvd  ATT/P/OL
R1.00-00              0x00000006   0xdcb5        545  /1200         0/0/0
R2.00-00            * 0x0000000b   0xe2e0        756  /*            0/0/0
R3.00-00              0x0000000d   0x917d        1044 /1200         0/0/0
R4.00-00              0x00000006   0x2cab        756  /836          0/0/0
R5.00-00              0x00000006   0xce0a        543  /1200         0/0/0
R6.00-00              0x00000005   0x1868        756  /1001         0/0/0

 Total Level-1 LSP count: 6     Local Level-1 LSP count: 1

IS-IS 1 (Level-2) Link State Database
LSPID                 LSP Seq Num  LSP Checksum  LSP Holdtime/Rcvd  ATT/P/OL
R2.00-00            * 0x0000000c   0xd845        757  /*            0/0/0
R3.00-00              0x0000000c   0x34e4        757  /1200         0/0/0

 Total Level-2 LSP count: 2     Local Level-2 LSP count: 1

分割は順序を誤るとエリアが割れる

分割のつもりで、R2 から 49.0001(R1・R5 と共通だったほう)を先に削除します。

STEP 3:R2でcommitされた設定
RP/0/RP0/CPU0:R2#show configuration commit changes last 1
Sun Oct  4 06:42:17.245 UTC
!! Building configuration...
!! IOS XR Configuration 26.1.1
router isis 1
 no net 49.0001.0020.0200.2002.00
!
end

R2 の隣接は R3 だけになります。

STEP 3:R2の show isis neighbors
RP/0/RP0/CPU0:R2#show isis neighbors
Sun Oct  4 06:47:09.199 UTC

IS-IS 1 neighbors:
System Id      Interface        SNPA           State Holdtime Type IETF-NSF
R3             Gi0/0/0/1        *PtoP*         Up    22       L1L2 Capable 

Total neighbor count: 1

R1 側のsyslogには理由が出ます。

STEP 3:R1のsyslog(抜粋)
RP/0/RP0/CPU0:Oct  4 06:42:22.912 UTC: isis[1003]: %ROUTING-ISIS-5-ADJCHANGE : ISIS (1): Adjacency to R2 (GigabitEthernet0/0/0/0) (L1) Down, Area addr/level differ 

この状態では6通りの疎通がすべて止まります。R1・R5 はエリアから切り離され、R2 を経由する すべての通信が失われるためです。

STEPR1→R4R1→R6R1→R5R4→R1R6→R1R5→R4
0(初期状態)100%100%100%100%100%100%
1(片側だけ統合)100%100%100%100%100%100%
2(統合)100%100%100%100%100%100%
3(誤った分割)0%0%0%0%0%0%
4(戻す)100%100%100%100%100%100%
5・6(正しい分割)100%100%100%100%100%100%

正しい手順は、分けたい側から「相手のエリアアドレス」だけを外すことです。STEP 5 では R3 から 49.0001 を、STEP 6 では R2 から 49.0002 を外しました。どちらの時点でも疎通は100%のままです。

分割しても、他エリアだったLSPはすぐには消えない

分割した直後の R2 のレベル1 LSDBには、統合中に入った R3・R4・R6 のLSPが残っています。 消えるのを待つのではなく、リフレッシュが来なくなって寿命(MaxAge)で古びて消えます。

STEP 6:R2の show isis database
RP/0/RP0/CPU0:R2#show isis database
Sun Oct  4 07:01:58.416 UTC

IS-IS 1 (Level-1) Link State Database
LSPID                 LSP Seq Num  LSP Checksum  LSP Holdtime/Rcvd  ATT/P/OL
R1.00-00              0x00000009   0xd6b8        456  /1199         0/0/0
R2.00-00            * 0x00000013   0x443d        1047 /*            1/0/0
R3.00-00              0x0000000f   0x73ea        746  /1200         0/0/0
R4.00-00              0x00000008   0x28ad        825  /1200         0/0/0
R5.00-00              0x00000008   0xca0c        453  /1199         0/0/0
R6.00-00              0x00000007   0x146a        836  /1200         0/0/0

 Total Level-1 LSP count: 6     Local Level-1 LSP count: 1

IS-IS 1 (Level-2) Link State Database
LSPID                 LSP Seq Num  LSP Checksum  LSP Holdtime/Rcvd  ATT/P/OL
R2.00-00            * 0x00000013   0xe24a        1047 /*            0/0/0
R3.00-00              0x00000013   0xe110        1047 /1199         0/0/0

 Total Level-2 LSP count: 2     Local Level-2 LSP count: 1
STEP 8:R2の show isis database
RP/0/RP0/CPU0:R2#show isis database
Sun Oct  4 07:12:23.984 UTC

IS-IS 1 (Level-1) Link State Database
LSPID                 LSP Seq Num  LSP Checksum  LSP Holdtime/Rcvd  ATT/P/OL
R1.00-00              0x0000000a   0xd4b9        693  /1200         0/0/0
R2.00-00            * 0x00000015   0x403f        1046 /*            1/0/0
R3.00-00              0x0000000f   0x73ea        120  /1200         0/0/0
R4.00-00              0x00000008   0x28ad        199  /1200         0/0/0
R5.00-00              0x00000009   0xc80d        598  /1200         0/0/0
R6.00-00              0x00000007   0x146a        211  /1200         0/0/0

 Total Level-1 LSP count: 6     Local Level-1 LSP count: 1

IS-IS 1 (Level-2) Link State Database
LSPID                 LSP Seq Num  LSP Checksum  LSP Holdtime/Rcvd  ATT/P/OL
R2.00-00            * 0x00000015   0xde4c        1046 /*            0/0/0
R3.00-00              0x00000014   0xdf11        1149 /1200         0/0/0

 Total Level-2 LSP count: 2     Local Level-2 LSP count: 1

R3・R4・R6 のLSPはシーケンス番号が止まったままで、LSP Holdtime だけが減っています (R3は746→120)。一方、同じエリアの R1・R5 はシーケンス番号が進み、Holdtimeも更新されています。

エリアアドレスは3つまで

R2 にNETを2つ足して3つにしたうえで、4つ目を投入すると拒否されます。

STEP 7:4つ目のNETを投入したときの show configuration failed
RP/0/RP0/CPU0:R2(config-isis)#show configuration failed
Sun Oct  4 07:04:47.014 UTC
!! SEMANTIC ERRORS: This configuration was rejected by 
!! the system due to semantic errors. The individual 
!! errors with each failed configuration command can be 
!! found below.


router isis 1
 net 49.0005.0020.0200.2002.00
!!% Maximum area address count exceeded: maximum number of area addresses is 3
!
end

maximum number of area addresses is 3 と明示されます。これは7.1.5の「すべてのISが少なくとも3を サポートしなければならない」の実装で、XRd 26.1.1に上限を変えるコマンドはありません。

System IDは変えられない

複数のNETで違えられるのはArea IDだけです。System IDの違うNETを足そうとすると拒否されます。

System IDの違うNETを投入したときの show configuration failed
RP/0/RP0/CPU0:R1(config-isis)#show configuration failed
Sun Oct  4 06:20:49.138 UTC
!! SEMANTIC ERRORS: This configuration was rejected by 
!! the system due to semantic errors. The individual 
!! errors with each failed configuration command can be 
!! found below.


router isis 1
 net 49.0001.0099.0999.9999.00
!!% System ID must not change: 0010.0100.1001
!
end

検証Configおよびshow結果

各STEPで6台すべてから取得しています。検証Configはこの..._run.txtです(最終状態はSTEP 8のもの)。

ファイル内容
..._show.txtshow一式(役割ごとに30〜32コマンド)。show isis / show isis neighbors detail / show isis database detail / show isis database level 1 / level 2 / show isis adjacency-log / show route isis ほか
..._ping.txtping(20発)とtraceroute
..._clear.txtそのSTEPでクリアしたインタフェースカウンタの記録
..._commit.cfgそのSTEPで実際にcommitされた設定だけ
..._failed.cfg拒否された設定(STEP 7の4つ目のNET)
..._log.txtそのSTEPの範囲だけに絞ったshow logging
..._run.txtそのSTEP時点のshow running-config(=そのSTEPの検証Config)
..._trace.txtshow isis trace standard | include ADJ

STEP 0:初期状態(2つのエリア)

ルータshow出力ping / tracerouteclear投入した設定拒否された設定syslogrunning-configtrace
R1showpingclear——logruntrace
R2show—clear——logruntrace
R3show—clear——logruntrace
R4showpingclear——logruntrace
R5showpingclear——logruntrace
R6showpingclear——logruntrace

STEP 1:R2に 49.0002 のNETを追加(片側だけ)

ルータshow出力ping / tracerouteclear投入した設定拒否された設定syslogrunning-configtrace
R1showpingclear——logruntrace
R2show—clearcommit—logruntrace
R3show—clear——logruntrace
R4showpingclear——logruntrace
R5showpingclear——logruntrace
R6showpingclear——logruntrace

STEP 2:R3に 49.0001 のNETを追加(両側=統合)

ルータshow出力ping / tracerouteclear投入した設定拒否された設定syslogrunning-configtrace
R1showpingclear——logruntrace
R2show—clear——logruntrace
R3show—clearcommit—logruntrace
R4showpingclear——logruntrace
R5showpingclear——logruntrace
R6showpingclear——logruntrace

STEP 3:R2から 49.0001 を削除(誤った分割)

ルータshow出力ping / tracerouteclear投入した設定拒否された設定syslogrunning-configtrace
R1showpingclear——logruntrace
R2show—clearcommit—logruntrace
R3show—clear——logruntrace
R4showpingclear——logruntrace
R5showpingclear——logruntrace
R6showpingclear——logruntrace

STEP 4:R2に 49.0001 を戻す

ルータshow出力ping / tracerouteclear投入した設定拒否された設定syslogrunning-configtrace
R1showpingclear——logruntrace
R2show—clearcommit—logruntrace
R3show—clear——logruntrace
R4showpingclear——logruntrace
R5showpingclear——logruntrace
R6showpingclear——logruntrace

STEP 5:R3から 49.0001 を削除(正しい分割の片側)

ルータshow出力ping / tracerouteclear投入した設定拒否された設定syslogrunning-configtrace
R1showpingclear——logruntrace
R2show—clear——logruntrace
R3show—clearcommit—logruntrace
R4showpingclear——logruntrace
R5showpingclear——logruntrace
R6showpingclear——logruntrace

STEP 6:R2から 49.0002 を削除(分割完了)

ルータshow出力ping / tracerouteclear投入した設定拒否された設定syslogrunning-configtrace
R1showpingclear——logruntrace
R2show—clearcommit—logruntrace
R3show—clear——logruntrace
R4showpingclear——logruntrace
R5showpingclear——logruntrace
R6showpingclear——logruntrace

STEP 7:R2のNETを3つにし、4つ目を投入

ルータshow出力ping / tracerouteclear投入した設定拒否された設定syslogrunning-configtrace
R1showpingclear——logruntrace
R2show—clearcommitfailedlogruntrace
R3show—clear——logruntrace
R4showpingclear——logruntrace
R5showpingclear——logruntrace
R6showpingclear——logruntrace

STEP 8:R2から追加した2つを削除(最終状態)

ルータshow出力ping / tracerouteclear投入した設定拒否された設定syslogrunning-configtrace
R1showpingclear——logruntrace
R2show—clearcommit—logruntrace
R3show—clear——logruntrace
R4showpingclear——logruntrace
R5showpingclear——logruntrace
R6showpingclear——logruntrace

パケットキャプチャーはSTEPごとに2区間で取得しています。

STEPR1-R2間R2-R3間(境界)
0pcappcap
1pcappcap
2pcappcap
3pcappcap
4pcappcap
5pcappcap
6pcappcap
7pcappcap
8pcappcap

参考

標準タイトル概要
ISO/IEC 10589:2002(第2版)Intermediate System to Intermediate System intra-domain routeing information exchange protocol複数の同義のエリアアドレスとmanualAreaAddresses・maximumAreaAddressesを定める7.1.5(「すべてのISが少なくとも3をサポートしなければならない」「値はPDUで交換され一致が検査される」)、隣接の条件を定める7.1.4 d)、System IDの構造の7.1.3.2。
RFC 1195Use of OSI IS-IS for Routing in TCP/IP and Dual EnvironmentsIS-ISでIPの経路を運ぶための拡張(Integrated IS-IS)。

関連記事