OSPFへの再配送時における、distribute-listの適用方向ごとのアルゴリズムの違い【Cisco】
こんにちは。
今回は、OSPFへの再配送時にdistribute-listを使用した経路制御を検証したので、アウトプットしていきます。
- 検証構成1
- distribute-list適用前の状態
- distribute-listをR2に適用する
- distribute-list適用後の状態
- 検証構成2
- distribute-listをR3に適用する
- distribute-list適用後の状態
- なぜdistribute-listの適用方向ごとに異なるのか【考察】
- まとめ
検証構成1
EIGRPからOSPFへ再配送を行う、単純な構成です。構成1では、ASBRにあたるR2において、distribute-listをout方向で使用し、EIGRPから再配送される経路の内、10.1.1.0/24のみを除外するケースを構築します。
distribute-list適用前の状態
distribute-list適用前のルーティングテーブルとLSDBを確認します。
R2(config-router)#do sh ip ro | b las Gateway of last resort is not set 2.0.0.0/32 is subnetted, 1 subnets C 2.2.2.2 is directly connected, Loopback0 10.0.0.0/8 is variably subnetted, 7 subnets, 2 masks D 10.1.1.0/24 [90/156160] via 10.12.1.1, 00:26:34, FastEthernet0/0 D 10.2.2.0/24 [90/156160] via 10.12.1.1, 00:26:34, FastEthernet0/0 D 10.3.3.0/24 [90/156160] via 10.12.1.1, 00:26:34, FastEthernet0/0 C 10.12.1.0/24 is directly connected, FastEthernet0/0 L 10.12.1.2/32 is directly connected, FastEthernet0/0 C 10.23.1.0/24 is directly connected, FastEthernet1/0 L 10.23.1.2/32 is directly connected, FastEthernet1/0 R2(config-router)#do sh ip os d OSPF Router with ID (2.2.2.2) (Process ID 1) Router Link States (Area 0) Link ID ADV Router Age Seq# Checksum Link count 2.2.2.2 2.2.2.2 1100 0x80000004 0x0026AE 1 3.3.3.3 3.3.3.3 1545 0x80000002 0x00E5E9 1 Net Link States (Area 0) Link ID ADV Router Age Seq# Checksum 10.23.1.3 3.3.3.3 1545 0x80000001 0x004FA5 Type-5 AS External Link States Link ID ADV Router Age Seq# Checksum Tag 10.1.1.0 2.2.2.2 13 0x80000001 0x00127A 0 10.2.2.0 2.2.2.2 1089 0x80000001 0x00FA8F 0 10.3.3.0 2.2.2.2 1089 0x80000001 0x00E3A4 0 10.12.1.0 2.2.2.2 1089 0x80000001 0x008DF3 0
R3#sh ip ro | b las Gateway of last resort is not set 3.0.0.0/32 is subnetted, 1 subnets C 3.3.3.3 is directly connected, Loopback0 10.0.0.0/8 is variably subnetted, 6 subnets, 2 masks O E2 10.1.1.0/24 [110/20] via 10.23.1.2, 00:00:07, FastEthernet0/0 O E2 10.2.2.0/24 [110/20] via 10.23.1.2, 00:01:07, FastEthernet0/0 O E2 10.3.3.0/24 [110/20] via 10.23.1.2, 00:01:07, FastEthernet0/0 O E2 10.12.1.0/24 [110/20] via 10.23.1.2, 00:01:07, FastEthernet0/0 C 10.23.1.0/24 is directly connected, FastEthernet0/0 L 10.23.1.3/32 is directly connected, FastEthernet0/0 R3#sh ip os d OSPF Router with ID (3.3.3.3) (Process ID 1) Router Link States (Area 0) Link ID ADV Router Age Seq# Checksum Link count 2.2.2.2 2.2.2.2 88 0x80000004 0x0026AE 1 3.3.3.3 3.3.3.3 532 0x80000002 0x00E5E9 1 Net Link States (Area 0) Link ID ADV Router Age Seq# Checksum 10.23.1.3 3.3.3.3 532 0x80000001 0x004FA5 Type-5 AS External Link States Link ID ADV Router Age Seq# Checksum Tag 10.1.1.0 2.2.2.2 18 0x80000001 0x00127A 0 10.2.2.0 2.2.2.2 78 0x80000001 0x00FA8F 0 10.3.3.0 2.2.2.2 78 0x80000001 0x00E3A4 0 10.12.1.0 2.2.2.2 78 0x80000001 0x008DF3 0
EIGRPからOSPFへ再配送された経路情報はLSA type5としてR2(ASBR)が生成し、OSPFドメイン内のルータ(R2,R3)はOSPF externalルートとして経路を学習しています。
※R2ではAD値の関係からEIGRPで学習した経路情報をルーティングテーブルに載せています。
distribute-listをR2に適用する
下記コンフィグをR2に投入します。
router ospf 1 distribute-list 10 out ! access-list 10 deny 10.1.1.0 0.0.0.255 access-list 10 permit any
distribute-list適用後の状態
distribute-list適用後のルーティングテーブルとLSDBを確認します。
まずは、ルーティングテーブルから。
R2(config-router)#do sh ip ro | b las Gateway of last resort is not set 2.0.0.0/32 is subnetted, 1 subnets C 2.2.2.2 is directly connected, Loopback0 10.0.0.0/8 is variably subnetted, 7 subnets, 2 masks D 10.1.1.0/24 [90/156160] via 10.12.1.1, 00:27:49, FastEthernet0/0 D 10.2.2.0/24 [90/156160] via 10.12.1.1, 00:27:49, FastEthernet0/0 D 10.3.3.0/24 [90/156160] via 10.12.1.1, 00:27:49, FastEthernet0/0 C 10.12.1.0/24 is directly connected, FastEthernet0/0 L 10.12.1.2/32 is directly connected, FastEthernet0/0 C 10.23.1.0/24 is directly connected, FastEthernet1/0 L 10.23.1.2/32 is directly connected, FastEthernet1/0 R3#sh ip ro | b las Gateway of last resort is not set 3.0.0.0/32 is subnetted, 1 subnets C 3.3.3.3 is directly connected, Loopback0 10.0.0.0/8 is variably subnetted, 5 subnets, 2 masks O E2 10.2.2.0/24 [110/20] via 10.23.1.2, 00:01:15, FastEthernet0/0 O E2 10.3.3.0/24 [110/20] via 10.23.1.2, 00:01:15, FastEthernet0/0 O E2 10.12.1.0/24 [110/20] via 10.23.1.2, 00:01:15, FastEthernet0/0 C 10.23.1.0/24 is directly connected, FastEthernet0/0 L 10.23.1.3/32 is directly connected, FastEthernet0/0
R2ではEIGRPで10.1.1.0/24の経路を学習しているため、ルーティングテーブルに変化はありません。
R3では10.1.1.0/24の経路がルーティングテーブルから消えていることがわかります。
続いて、LSDB。
R2(config-router)#do sh ip os d OSPF Router with ID (2.2.2.2) (Process ID 1) Router Link States (Area 0) Link ID ADV Router Age Seq# Checksum Link count 2.2.2.2 2.2.2.2 1192 0x80000004 0x0026AE 1 3.3.3.3 3.3.3.3 1638 0x80000002 0x00E5E9 1 Net Link States (Area 0) Link ID ADV Router Age Seq# Checksum 10.23.1.3 3.3.3.3 1638 0x80000001 0x004FA5 Type-5 AS External Link States Link ID ADV Router Age Seq# Checksum Tag 10.2.2.0 2.2.2.2 1182 0x80000001 0x00FA8F 0 10.3.3.0 2.2.2.2 1182 0x80000001 0x00E3A4 0 10.12.1.0 2.2.2.2 1182 0x80000001 0x008DF3 0 R2(config-router)# R3#sh ip os d OSPF Router with ID (3.3.3.3) (Process ID 1) Router Link States (Area 0) Link ID ADV Router Age Seq# Checksum Link count 2.2.2.2 2.2.2.2 85 0x80000002 0x002AAC 1 3.3.3.3 3.3.3.3 84 0x80000002 0x00E5E9 1 Net Link States (Area 0) Link ID ADV Router Age Seq# Checksum 10.23.1.3 3.3.3.3 84 0x80000001 0x004FA5 Type-5 AS External Link States Link ID ADV Router Age Seq# Checksum Tag 10.2.2.0 2.2.2.2 122 0x80000001 0x00FA8F 0 10.3.3.0 2.2.2.2 122 0x80000001 0x00E3A4 0 10.12.1.0 2.2.2.2 125 0x80000001 0x008DF3 0
注目すべきは、R2のLSDBです。type-5の一覧からLink ID 10.1.1.0の情報が載っていないことから、R2(ASBR)は10.1.1.0/24のLSA type5を生成していないことが言えます。
このことから、OSPFにおいて、distribute-listをout方向に適用すると、EIGRPからOSPFに再配送後から、LSDB構築前までのプロセスに影響を及ぼしていることがわかります。
検証構成2
同様な構成で、今度はR3にdistribute-listをin方向で適用し、10.1.1.0/24の経路を除外するよう構築してみます。
distribute-listをR3に適用する
下記コンフィグをR3に投入します。なお、検証構成1でR2に投入したコンフィグは予め削除しています。
router ospf 1 distribute-list 10 in ! access-list 10 deny 10.1.1.0 0.0.0.255 access-list 10 permit any
distribute-list適用後の状態
distribute-list適用後のルーティングテーブルとLSDBを確認します。なお、R2はコンフィグ投入前後で変化がないため割愛します。
まずは、ルーティングテーブルから。
R3(config-router)#do sh ip ro | b las Gateway of last resort is not set 3.0.0.0/32 is subnetted, 1 subnets C 3.3.3.3 is directly connected, Loopback0 10.0.0.0/8 is variably subnetted, 5 subnets, 2 masks O E2 10.2.2.0/24 [110/20] via 10.23.1.2, 00:03:12, FastEthernet0/0 O E2 10.3.3.0/24 [110/20] via 10.23.1.2, 00:03:12, FastEthernet0/0 O E2 10.12.1.0/24 [110/20] via 10.23.1.2, 00:03:12, FastEthernet0/0 C 10.23.1.0/24 is directly connected, FastEthernet0/0 L 10.23.1.3/32 is directly connected, FastEthernet0/0
10.1.1.0/24の経路が除外されていることがわかります。
次に、LSDB。
R3(config-router)#do sh ip os d OSPF Router with ID (3.3.3.3) (Process ID 1) Router Link States (Area 0) Link ID ADV Router Age Seq# Checksum Link count 2.2.2.2 2.2.2.2 341 0x80000002 0x002AAC 1 3.3.3.3 3.3.3.3 340 0x80000002 0x00E5E9 1 Net Link States (Area 0) Link ID ADV Router Age Seq# Checksum 10.23.1.3 3.3.3.3 340 0x80000001 0x004FA5 Type-5 AS External Link States Link ID ADV Router Age Seq# Checksum Tag 10.1.1.0 2.2.2.2 345 0x80000001 0x00127A 0 10.2.2.0 2.2.2.2 375 0x80000001 0x00FA8F 0 10.3.3.0 2.2.2.2 375 0x80000001 0x00E3A4 0 10.12.1.0 2.2.2.2 386 0x80000001 0x008DF3 0
LSA type-5にLink ID 10.1.1.0が載っていることがわかります。
このことから、OSPFにおいて、distribute-listをin方向に適用すると、LSDB構築後から、ルーティングテーブル作成までのプロセスに影響を及ぼしていると推測できます。
したがって、distribute-listの適用方向によって、影響を及ぼす箇所(チェックポイント)は下記のような違いがあるといえます。
なぜdistribute-listの適用方向ごとに異なるのか【考察】
上記の検証より、distribute-listの適用方向によって、distribute-listのチェックポイントが異なることがわかりました。一見すると、適用方向に関係なく、LSDB構築前(あるいは後)で統一してもよさそうに見えます。なぜこのような違いがあるのかを考察してみます。
結論的には、同一エリア内のOSPFルータは同じトポロジーマップ(=LSDB)を持つ必要があるという仕様により、distribute-listのチェックポイントが異なると言えます。
OSPFはネイバー確立後、自身のLSDBとほかのネイバーのLSDBを比較し合い、同期処理を行うことでアジャセンシーを確立します。アジャセンシー確立後、新たにLSDBに変化があった場合は、再同期処理を行うことで、同じLSDBを保つように動作します。
このような仕様のもと、例えば、distribute-listをin方向で適用した際、LSDB構築前にdistribute-listのチェックポイントが存在すると、LSDBの差分は存在し続けることになります(out方向でも同様に考えられる)。したがって、distribute-listのチェックポイントは適用方向によって異なる必要があると考えることができます。
まとめ
今回は、OSPFへの再配送時における、distribute-listによる経路制御を検証し、適用方向によってアルゴリズムに違いがあることがわかりました。それでは。