Cisco ポリシーベースルーティング

スポンサーリンク

Cisco IOS 11.0で導入されたポリシーベースルーティングをしようするとパケットを異なるパスに選択的に通過させるポリシーを実装できます。ポリシーベースルーティングはそれ単体で使うことはあまりないといえど、ルーティングの経路制御やQoS関連などで頻繁に使うものでありしっかりと理解しておきたい部分です。


■route-mapコマンド

同じルートマップ名を持つ一連のroute mapステートメントは1つのルートマップとみなされます。ルートマップ内では個々のroute mapステートメントに番号がつけられてるので個別に編集できます。コマンドの詳細を以下に示します。

(config)# route-map map-name [permit | deny] [sequence-number]


ルートマップは複数のroute mapステートメントで構成できます。ステートメントはアクセスリストと同様、上から下へ処理されます。つまりルートに対して最初に見つかった合致エントリが適用されます。シーケンス番号はルートマップ内の特定の位置にroute mapステートメントを挿入、またはその位置からステートメントを削除するためにしようされます。チェックされる条件を定義するにはルートマップコンフィグレーションモードのmatchコマンドを使います。合致エントリが見つかった場合に実施される措置を定義するにはルートマップコンフィグレーションモードのsetコマンドを使います。

route-map PBR permit 10
 match match-A
 set set-A

route-map PBR permit 20
 match match-B
 set set-B

= match-Aに合致するものはset-Aを処理
 match-Aに合致しなかったものでmatch-Bに合致したものはset-Bを処理
 match-Aとmatch-Bに合致しなかったものは何もしない(経路制御ではフィルタされる)


ステートメントに[deny]を使用すると合致基準を満たすパケットは通常の転送チャネル経由で送信されます。(あて先に基づくルーティング)。ステートメントに[permit]指定されていて全ての合致基準を満たしている場合のみsetコマンドが適用されます。またpermitに当てはまらなかったパケットについてもアクセスリストの最後には暗黙のdenyがあるのであて先ベースのルーティングが行われます。


■matchコマンド

(config-route-map)# match {condition}


1つのmatchステートメントに複数の条件が含まれることがあります。matchステートメントが合致されたとみなされるためにはそのmatchステートメント内の少なくとも1つの条件が満たされなければなりません。またroute mapステートメントに複数のmatchステートメントが含まれることもあります。route mapステートメントが合致したとみなされるためにはroute mapステートメント内の全てのmatchステートメントが真にならなければなりません。以下、実際のmatchコマンドを論理演算で表してみます。

route-map PBR permit 10
 match A B C

= A || B || C
route-map PBR permit 10
 match A
 match B
 match C

= A && B && C
route-map PBR permit 10
 match A B C
 match D
 match E

= (A || B || C) && D && E


実際にmatchコマンドで指定できるものについては以下のものがあります。(ヘルプですけど)

(config-route-map)# match ?
  as-path           Match BGP AS path list
  clns              CLNS information
  community         Match BGP community list
  extcommunity      Match BGP/VPN extended community list
  interface         Match first hop interface of route
  ip                IP specific information
  ipv6              IPv6 specific information
  length            Packet length
  local-preference  Local preference for route
  mdt-group         Match routes corresponding to MDT group
  metric            Match metric of route
  mpls-label        Match routes which have MPLS labels
  nlri              BGP NLRI type
  policy-list       Match IP policy list
  route-type        Match route-type of route
  source-protocol   Match source-protocol of route
  tag               Match tag of route


良く使うのはmatch ip address [ACL] またはmatch ip address prefix-listあたりでしょうか。
またmatchコマンドは省略することも可能であり、その場合はすべてのパケットが対象となります。


■setコマンド

setコマンドで対象のものについて指定した動作を指示できます。これで指定する動作は用途別で様々で一概にこれが多いというのも言うことができません。ヘルプには以下のコマンドがあります。

(config-route-map)# set ?
  as-path           Prepend string for a BGP AS-path attribute
  automatic-tag     Automatically compute TAG value
  clns              OSI summary address
  comm-list         set BGP community list (for deletion)
  community         BGP community attribute
  dampening         Set BGP route flap dampening parameters
  default           Set default information
  extcomm-list      Set BGP/VPN extended community list (for deletion)
  extcommunity      BGP extended community attribute
  interface         Output interface
  ip                IP specific information
  ipv6              IPv6 specific information
  level             Where to import route
  local-preference  BGP local preference path attribute
  metric            Metric value for destination routing protocol
  metric-type       Type of metric for destination routing protocol
  mpls-label        Set MPLS label for prefix
  nlri              BGP NLRI type
  origin            BGP origin code
  tag               Tag value for destination routing protocol
  traffic-index     BGP traffic classification number for accounting
  vrf               Define VRF name
  weight            BGP weight for routing table


インターフェース上のポリシーベースルーティングに使用するルートマップを特定するには以下のip policy route-mapコマンドを使用します。

(config-if)# ip policy route-map map-name


■設定例

下記の例では192.168.2.0/24からのアクセスは172.17.1.2をnext hopに指定しています。ポリシーベースルーティングはパケットが送信されるインターフェースではなく受信するインターフェース上に設定します。

(config)# access-list 1 permit 192.168.2.0 0.0.0.255

(config)# route-map PBR permit 10
(config-route-map)# match ip address 1
(config-route-map)# set ip next-hop 172.17.1.2

(config)# int fa0/0
(config-if)# ip policy route-map PBR


アクセスリストは1は192.168.2.0/24という送信元アドレスを持つパケットをポリシールーティングの対象としています。アクセスリスト1に合致するパケット(送信元IPが192.168.2.0/24)は宛先に関わらずはネクストホップ172.17.1.2に転送されます。その他のパケットはあて先アドレスに応じて通常どおり転送されます。(アクセスリストの最後には暗黙のdenyがあるのでその他のパケットはアクセスリスト1によって拒否されます)

スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする