Policy Based Routingは送信元アドレスや入力インターフェースなどの複雑な条件に基づいたルーティング機能です。これは通常のスタティックルートやダイナミックルーティングでは充足できない場合に対応する「禁じ手」ですので、実務では濫用を避けましょう。濫用すると、構成把握コストが爆発的に増大し運用が破綻するリスクがあります。
コマンド一覧
このシナリオで重要なコマンド一覧は以下の通りです。
Router(config-route-map)# set ip next-hop <addr> Router(config-route-map)# set ip default next-hop <addr>
各コマンドの挙動をまとめると以下の通りです。
コマンド | 条件 | 挙動 |
---|---|---|
set ip default next-hop | 宛先アドレスがrouting tableに存在する | routing tableに基づき転送される |
set ip default next-hop | 宛先アドレスがrouting tableに存在しない | policyに基づき転送される |
set ip next-hop | next-hopで指定されたI/Fがup状態である | policyに基づき転送される |
set ip next-hop | next-hopで指定されたI/Fがdown状態である | routing tableに基づき転送される |
構成図
以下の環境で動作確認を行います。検証の都合上、一部のinterfaceのみOSPFを有効にします。
[ip address] 192.168.12.0/24 192.168.2.0/24 e0/0 e0/0 e0/2 e0/2 +--------+.1 .2+--------+.1 .102+--------+ | +----------+ +----------+ | | R1 | | R2 | Host2 | | +----------+ +----------+ | +--------+.1 .2+--------+.1 .102+--------+ e0/1 e0/1 e0/3 e0/3 192.168.21.0/24 192.168.22.0/24 R1 Loopback0 R2 Loopback0 10.1.1.1/32 10.2.2.2/32 [ospf interface] 192.168.12.0/24 192.168.2.0/24 e0/0 e0/0 e0/2 e0/2 +--------+.1 .2+--------+.1 .102+--------+ | +----------+ +----------+ | | R1 | | R2 | | Host2 | | | | | | | +--------+ +--------+ +--------+ R1 Loopback0 R2 Loopback0 10.1.1.1/32 10.2.2.2/32
[R1] router ospf 1 network 10.1.1.1 0.0.0.0 area 0 network 192.168.12.1 0.0.0.0 area 0 network 192.168.21.1 0.0.0.0 area 0 [R2] router ospf 1 network 10.2.2.2 0.0.0.0 area 0 network 192.168.2.2 0.0.0.0 area 0 network 192.168.12.2 0.0.0.0 area 0 [Host2] ip route 0.0.0.0 0.0.0.0 192.168.2.2
設定全文は下記ファイルです。
Policy Based Routing
default next-hop
“set ip default next-hop”はルーティングテーブルで転送先が定義されていない場合のnex-hopの設定です。動作確認のため、以下設定をR1に投入します。
[R1] route-map RMAP_PBR permit 10 set ip default next-hop 192.168.21.2 ! ip local policy route-map RMAP_PBR
R1のルーティングテーブルは以下のようになっております。192.168.2.0/24は知っていますが、192.168.22.0/24は知らない状態になっています。
[R1] R1#show ip route Codes: 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 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 o - ODR, P - periodic downloaded static route Gateway of last resort is not set C 192.168.12.0/24 is directly connected, Ethernet0/0 C 192.168.21.0/24 is directly connected, Ethernet0/1 10.0.0.0/32 is subnetted, 2 subnets O 10.2.2.2 [110/11] via 192.168.12.2, 00:11:10, Ethernet0/0 C 10.1.1.1 is directly connected, Loopback0 O 192.168.2.0/24 [110/20] via 192.168.12.2, 00:11:10, Ethernet0/0 R1#
ルーティングテーブルによって宛先を知っている192.168.2.102の場合は、ルーティングテーブルによって転送されている事が分かります。一方、ルーティングテーブルに存在しない192.168.22.102の場合は、Policy Based Routingによって転送されている事が分かります。
[R1] R1#traceroute 192.168.2.102 Type escape sequence to abort. Tracing the route to 192.168.2.102 1 192.168.12.2 60 msec 104 msec 4 msec 2 192.168.2.102 8 msec * 24 msec R1# R1# R1# R1#traceroute 192.168.22.102 Type escape sequence to abort. Tracing the route to 192.168.22.102 1 192.168.21.2 56 msec 76 msec 48 msec 2 192.168.22.102 28 msec * 84 msec R1#
next-hop
“set ip next-hop”はnext-hopとなるinterfaceがup状態である場合のみ、Policyに基づいて転送します。動作確認のため、以下設定をR1に投入します。
[R1] no ip local policy route-map RMAP_PBR no route-map RMAP_PBR ! route-map RMAP_PBR permit 10 set ip next-hop 192.168.21.2 ! ip local policy route-map RMAP_PBR
next-hopとなるinterfaceがupの状態では、Policyに基づいて転送される事が分かります。
[R1] R1#traceroute 192.168.2.102 Type escape sequence to abort. Tracing the route to 192.168.2.102 1 192.168.21.2 32 msec 40 msec 8 msec 2 192.168.2.102 24 msec * 16 msec R1#
next-hopとなるinterfaceがdownの状態では、Policyではなくルーティングテーブルに基づいて転送される事が分かります。
[R1] R1(config)#int e0/1 R1(config-if)#shut R1(config-if)#^Z R1# *Mar 1 00:01:56.639: %SYS-5-CONFIG_I: Configured from console by console *Mar 1 00:01:57.219: %LINK-5-CHANGED: Interface Ethernet0/1, changed state to administratively down R1# *Mar 1 00:01:58.219: %LINEPROTO-5-UPDOWN: Line protocol on Interface Ethernet0/1, changed state to down R1# R1# R1#traceroute 192.168.2.102 Type escape sequence to abort. Tracing the route to 192.168.2.102 1 192.168.12.2 40 msec 12 msec 4 msec 2 192.168.2.102 12 msec * 36 msec R1#