Cisco ASA und Policy-based Routing (PBR)

Dieses Feature ist vermutlich eines, auf das sehr viele Admins gewartet haben. Endlich ist es (in Version 9.4(1)) implementiert:

Policy Based Routing

Policy Based Routing (PBR) is a mechanism by which traffic is routed through specific paths with a specified QoS using ACLs. ACLs let traffic be classified based on the content of the packet’s Layer 3 and Layer 4 headers. This solution lets administrators provide QoS to differentiated traffic, distribute interactive and batch traffic among low-bandwidth, low-cost permanent paths and high-bandwidth, high-cost switched paths, and allows Internet service providers and other organizations to route traffic originating from various sets of users through well-defined Internet connections.
We introduced the following commands: set ip next-hop verify-availability, set ip next-hop, set ip next-hop recursive, set interface, set ip default next-hop, set default interface, set ip df, set ip dscp, policy-route route-map, show policy-route, debug policy-route

Cisco ASA und Policy-based Routing (PBR)

Läuft Policy-Routing im CEF-Switching-Pfad?

Diese Frage wurde mir vor kurzem in einem Cisco-Routing-Workshop gestellt und ich habe mit einem überzeugten “Ja, klar!” geantwortet, um es ein paar Sekunden später mit einem “naja, bin ich mir fast sicher, daß PBR im CEF-Pfad läuft” zu relativieren. So ziemlich alles, was irgendwie “durch” den Router geht, ist inzwischen CEF. Aber kleine Ausnahmen, mit denen man nicht rechnet, kann es natürlich immer geben.

Deshalb habe ich das mal schnell in einem 12.4(20)T nachgestellt:
policy-routing-topology

Die Konfiguration (der relevante Part) des rechten Routers:

hostname R2
!
interface FastEthernet1/0
 ip address 10.1.1.2 255.255.255.0
!         
interface FastEthernet1/1
 ip address 10.1.2.2 255.255.255.0
 ip policy route-map POLICY-TEST
!         
interface FastEthernet2/0
 ip address 10.10.1.2 255.255.255.0
!
ip route 1.1.1.1 255.255.255.255 10.1.1.1
ip route 3.3.3.3 255.255.255.255 10.1.2.3
!
ip access-list extended POLICY-ACL
 permit icmp host 3.3.3.3 host 1.1.1.1
!
route-map POLICY-TEST permit 10
 match ip address POLICY-ACL
 match length 100 200
 set ip next-hop 10.10.1.1
! 

Diverse Pings vom PC auf die Adresse 1.1.1.1 mit Größen von 150 und 250 Bytes zeigten auf R2 folgendes Ergebnis (die Counter passen nicht genau, da ich diese zwischendurch mal gelöscht habe):

R2#sh route-map          
route-map POLICY-TEST, permit, sequence 10
  Match clauses:
    ip address (access-lists): POLICY-ACL 
    length 100 200
  Set clauses:
    ip next-hop 10.10.1.1
  Policy routing matches: 25 packets, 3570 bytes
R2#

R2#sh int fast 1/1 stats 
FastEthernet1/1
          Switching path    Pkts In   Chars In   Pkts Out  Chars Out
               Processor          1         77          0          0
             Route cache         45       6400         40       5500
                   Total         46       6477         40       5500
R2#

R2#sh ip cef switching statistics  feature 
IPv4 CEF input features:
Path   Feature             Drop   Consume  Punt  Punt2Host Gave route
RP PAS Policy Routing         0         0     0          0         10
Total                         0         0     0          0         10

Im nächsten Test habe ich dann zusätzlich noch NAT aktiviert, denn der Teufel steckt manchmal im Detail bzw. beim IOS in der Kombination der Funktionen. Aber auch dabei gab es nur CEF-geswitchte Pakete. Puh, Glück gehabt … 🙂

Läuft Policy-Routing im CEF-Switching-Pfad?