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:
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 … 🙂