スポンサーリンク
スポンサーリンク

【Cisco】Policy Base Routing (PBR) [set ip next-hop] & [verify-availability]

【概要】
PBR(Policy Based Routing)
PBRは多くの場合、ルーティングテーブルに従わないルーティングを行うために利用します。
具体的には・・・

  • Aのトラフィックは経路1(ルーティングテーブルに従う)
  • Bのトラフィックは経路2(ルーティングテーブルに従わず、PBRに従う)

ルーティングテーブルとPBRの処理順番は以下の通りで、PBRはルーティングテーブルより先に
処理される事に起因します。

      1. 【内部から外部へ】
  1. IPSec なら入力アクセス リストを確認
  2. 復号:CET(Cisco Encryption Technology)または IPSec
  3. 入力アクセス リストを確認
  4. 入力レート制限を確認
  5. アカウンティングを入力
  6. Web キャッシュへリダイレクト
  7. ポリシー ルーティング(Policy routing)
  8. ルーティング
  9. 内部から外部への NAT(ローカルからグローバルへの変換)
  10. スクリプト(マップの確認と暗号化のマークを設定)
  11. 出力アクセスリストを確認
  12. 検証(コンテキストベースのアクセス コントロール(CBAC))
  13. TCP 代行受信
  14. 暗号化
  15. キューイング

引用元:https://www.cisco.com/c/ja_jp/support/docs/ip/network-address-translation-nat/6209-5.html

NW構成 (Cisco CML利用)

PBR1-1

ルーティング設定状況

全ルータ(R1~R5)はOSPFでルーティングしています。
OSPF Costを設定し、正常時以下の経路になるようにします。

  • PC1 -> R1 -> R2 -> R5 -> PC3
  • PC2 -> R1 -> R2 -> R5 -> PC3

R1#show ip route
O   5.5.5.0 [110/205] via 10.12.1.2, 00:52:44, GigabitEthernet0/1

Config

R1-config <click!>
hostname R1
!
interface GigabitEthernet0/0
 ip address 192.168.1.254 255.255.255.0
 ip policy route-map R-MAP
 ip ospf cost 5
!
interface GigabitEthernet0/1
 ip address 10.12.1.1 255.255.255.0
 ip ospf cost 100
!
interface GigabitEthernet0/2
 ip address 10.13.1.1 255.255.255.0
 ip ospf cost 200
!
interface GigabitEthernet0/3
 ip address 10.14.1.1 255.255.255.0
 ip ospf cost 300
!
router ospf 1
 passive-interface GigabitEthernet0/0
 network 0.0.0.0 255.255.255.255 area 0
!
ip access-list extended PBR
 permit ip host 192.168.1.100 host 5.5.5.5
!
route-map R-MAP permit 10
 match ip address PBR
 set ip next-hop 10.13.1.3
!
control-plane
!
end
R2-config<click!>
hostname R2
!
interface GigabitEthernet0/0
 ip address 10.12.1.2 255.255.255.0
 ip ospf cost 10
!
interface GigabitEthernet0/1
 ip address 10.25.1.2 255.255.255.0
 ip ospf cost 100
!
router ospf 1
 network 0.0.0.0 255.255.255.255 area 0
!
control-plane
!
end
R3-config<click!>
hostname R3
!
interface GigabitEthernet0/0
 ip address 10.13.1.3 255.255.255.0
 ip ospf cost 10
!
interface GigabitEthernet0/1
 ip address 10.35.1.3 255.255.255.0
 ip ospf cost 100
!
router ospf 1
 network 0.0.0.0 255.255.255.255 area 0
!
control-plane
!
end
R4-config<click!>
hostname R4
!
interface GigabitEthernet0/0
 ip address 10.14.1.4 255.255.255.0
 ip ospf cost 10
!
interface GigabitEthernet0/1
 ip address 10.45.1.4 255.255.255.0
 ip ospf cost 100
!
router ospf 1
 network 0.0.0.0 255.255.255.255 area 0
!
control-plane
!
end
R5-config<click!>
hostname R5
!
interface GigabitEthernet0/0
 ip address 5.5.5.254 255.255.255.0
 ip ospf cost 5
!
interface GigabitEthernet0/1
 ip address 10.25.1.5 255.255.255.0
 ip ospf cost 100
!
interface GigabitEthernet0/2
 ip address 10.35.1.5 255.255.255.0
 ip ospf cost 200
!
interface GigabitEthernet0/3
 ip address 10.45.1.5 255.255.255.0
 ip ospf cost 300
!
router ospf 1
 passive-interface GigabitEthernet0/0
 network 0.0.0.0 255.255.255.255 area 0
!
control-plane
!
end

PBR設定の概要

最低限、以下 ①~③の設定が必要になります。

① PBRを適用するトラフィックをACLで定義する。
ip access-list extended PBR
 permit ip host 192.168.1.100 host 5.5.5.5
② route-mapでACLにマッチしたトラフィックのNext-hopを定義する
route-map R-MAP permit 10
 match ip address PBR
 set ip next-hop 10.13.1.3
③ Inboundのインターフェイスにpolicy route-mapを定義する
interface GigabitEthernet0/0
 ip policy route-map R-MAP

[set ip next-hop] を設定した結果

PBR1-1

上記のPBRを設定すると、PC1とPC2で経路が変わります。

PBR設定無し
PC1 -> R1 -> R2 -> R5 -> PC3
PC2 -> R1 -> R2 -> R5 -> PC3

PBR設定有り
PC1 -> R1 -> R3 -> R5 -> PC3
PC2 -> R1 -> R2 -> R5 -> PC3

R1ルーティングテーブル

R1#show ip route ospf
Gateway of last resort is not set
      5.0.0.0/24 is subnetted, 1 subnets
O        5.5.5.0 [110/205] via 10.12.1.2, 00:28:51, GigabitEthernet0/1

PC1のトレースルート

PC1:~$ traceroute 5.5.5.5
traceroute to 5.5.5.5 (5.5.5.5), 30 hops max, 46 byte packets
 1  192.168.1.254 (192.168.1.254)  7.731 ms  3.174 ms  4.699 ms
 2  10.13.1.3 (10.13.1.3)  10.422 ms  13.988 ms  12.895 ms
 3  10.35.1.5 (10.35.1.5)  13.648 ms  15.332 ms  15.021 ms
 4  5.5.5.5 (5.5.5.5)  8.396 ms  9.369 ms  6.720 ms

PC2のトレースルート

PC2:~$ traceroute 5.5.5.5
traceroute to 5.5.5.5 (5.5.5.5), 30 hops max, 46 byte packets
 1  192.168.1.254 (192.168.1.254)  3.776 ms  5.802 ms  3.790 ms
 2  10.12.1.2 (10.12.1.2)  10.321 ms  8.156 ms  7.954 ms
 3  10.25.1.5 (10.25.1.5)  12.938 ms  16.911 ms  14.564 ms
 4  5.5.5.5 (5.5.5.5)  21.267 ms  7.397 ms  7.567 ms

showコマンド

PBR設定の概要 ①~③で設定した内容をshow コマンドで確認します。
① トラフィックがACLにマッチしているか

R1#show ip access-lists PBR
Extended IP access list PBR
    10 permit ip host 192.168.1.100 host 5.5.5.5 (28 matches)

② route-mapの設定内容を確認

R1#show route-map R-MAP
route-map R-MAP, permit, sequence 10
  Match clauses:
    ip address (access-lists): PBR 
  Set clauses:
    ip next-hop 10.13.1.3
  Policy routing matches: 28 packets, 1832 bytes

③ 適切なInboundにroute-mapが適用されているか

R1#show ip policy
Interface      Route map
Gi0/0          R-MAP

debu ip policy

debugコマンドを設定する事により、route-mapにマッチしたログがR1で残ります。

R1#debug ip policy 
Policy routing debugging is on
*Mar  3 07:49:22.133: IP: s=192.168.1.100 (GigabitEthernet0/0), d=5.5.5.5, len 84, FIB policy match
*Mar  3 07:49:22.133: IP: s=192.168.1.100 (GigabitEthernet0/0), d=5.5.5.5, len 84, PBR Counted
*Mar  3 07:49:22.133: IP: s=192.168.1.100 (GigabitEthernet0/0), d=5.5.5.5, g=10.13.1.3, len 84, FIB policy routed

set ip next-hop verify-availability 【有り】と【無し】

PBR1

route-map R-MAP permit 10
 match ip address PBR
 set ip next-hop 10.13.1.3
 set ip next-hop verify-availability

[set ip next-hop verify-availability]は文字通りnext-hopアドレスを監視します。

    • verify-availability設定無し
      10.13.1.3のIFがdownした場合
      ⇒通信が不可になります。
    • verify-availability設定有り
      10.13.1.3のIFがdownした場合
      ⇒PBRのルーティングを止め、ルーティングテーブルに従って通信する。

set ip next-hop verify-availability 有り/無しの検証

R3 10.13.1.3 のIFをshutdownで確認

verify-availability 有り(正常時)

PBRに従ってルーティングする

PC1:~$ traceroute 5.5.5.5
traceroute to 5.5.5.5 (5.5.5.5), 30 hops max, 46 byte packets
 1  192.168.1.254 (192.168.1.254)  5.463 ms  9.920 ms  7.423 ms
 2  10.13.1.3 (10.13.1.3)  11.866 ms  16.311 ms  15.378 ms
 3  10.35.1.5 (10.35.1.5)  12.613 ms  6.497 ms  4.548 ms
 4  5.5.5.5 (5.5.5.5)  5.426 ms  53.563 ms  12.796 ms

verify-availability 有り(R3 10.13.1.3 のIFをshutdown)

[set ip next-hop 10.13.1.3] 10.13.1.3がDownしたため、PBRを止め、ルーティングテーブルに従ってルーティング

PC1:~$ traceroute 5.5.5.5
traceroute to 5.5.5.5 (5.5.5.5), 30 hops max, 46 byte packets
 1  192.168.1.254 (192.168.1.254)  3.987 ms  3.237 ms  3.422 ms
 2  10.12.1.2 (10.12.1.2)  4.637 ms  9.965 ms  9.461 ms
 3  10.25.1.5 (10.25.1.5)  14.592 ms  12.007 ms  15.086 ms
 4  5.5.5.5 (5.5.5.5)  13.235 ms  6.024 ms  7.488 ms

verify-availability 無し(正常時)

PBRに従ってルーティングする

PC1:~$ traceroute 5.5.5.5
traceroute to 5.5.5.5 (5.5.5.5), 30 hops max, 46 byte packets
 1  192.168.1.254 (192.168.1.254)  5.463 ms  9.920 ms  7.423 ms
 2  10.13.1.3 (10.13.1.3)  11.866 ms  16.311 ms  15.378 ms
 3  10.35.1.5 (10.35.1.5)  12.613 ms  6.497 ms  4.548 ms
 4  5.5.5.5 (5.5.5.5)  5.426 ms  53.563 ms  12.796 ms

verify-availability 無し(R3 10.13.1.3 のIFをshutdown)

PC1:~$ traceroute 5.5.5.5
traceroute to 5.5.5.5 (5.5.5.5), 30 hops max, 46 byte packets
 1  192.168.1.254 (192.168.1.254)  3.018 ms  4.978 ms  5.839 ms
 2  *  *  *
 3  *  *  *
PBRALL
スポンサーリンク
スポンサーリンク