Troubleshooting Punt Adjacencies
In Example 4-22, suppose that the show ip cef command output yielded the following as the result of a configuration change, such as routing the traffic over a tunnel interface.
Example 4-22. Determining Whether the FIB Prefix Points to Punt Adjacency
Router-2#show ip cef 10.18.118.1 10.18.118.0/24, version 31, epoch 0 0 packets, 0 bytes via 192.168.1.1, 0 dependencies, recursive next hop 192.168.1.1, Tunnel1 via 192.168.1.0/24 valid punt adjacency
The CEF table output indicates that the entry is a valid punt adjacency. The term punt in Cisco IOS refers to sending a packet to the next-level switching process. By default, Cisco IOS always uses the fastest switching method possible; however, the fastest switching method usually does not support advanced features such as Network Address Translation (NAT) and policy-based routing (PBR) early in the product life cycle. Therefore, to handle these cases effectively, Cisco IOS punts the packet to the next-level switch method that can switch the frame. The following list illustrates the typical switching method hierarchy, with the fastest, most effective switching method listed first:
- Hardware-based dCEF (hardware-based switching on line cards)
- Hardware-based CEF (hardware-based, centralized forwarding typically found on Cisco Catalyst switches)
- PXF switching
- Software-based CEF
- Software-based fast switching
- Software-based process switching
Generally, the fastest and most effective switching methods generally lag software-based CEF in feature support. Therefore, when using new and unique features, Cisco IOS generally supports the feature in software first in low- to mid-range routers and switches. High-end routers and switches only support advanced features in hardware because the throughput required for the high-end routers and switches exceeds the capability of software-based switching methods. Use the show cef not-cef-switched command to view packets that are not CEF switched. In later code, the show ip cef switching statistics command gives detailed information of why a pass occurs and replaces the show cef not command. Example 4-23 illustrates an example of the show cef not-cef-switched command followed by Table 4-4, which illustrates descriptions for each of fields.
Example 4-23. Sample Output from the show cef not-cef-switched Command
Router-2#show cef not-cef-switched CEF Packets passed on to next switching layer Slot No_adj No_encap Unsupp'ted Redirect Receive Options Access Frag RP 4 0 0 34 2920 0 0 0
Table 4-4. show cef not-cef-switched Command Field Descriptions
Field |
Description |
Slot |
Refers to the slot for the respective ingress packet counts. For Cisco IOS routers that do not support dCEF, this value is always RP. |
No_adj |
Indicates the number of packets dropped because of incomplete adjacency. |
No_encap |
Indicates the number of packets sent to the processor for ARP resolution. |
Unsupp'ted |
Indicates the number of packets fast-dropped by CEF (drop adjacency) because of an unsupported feature. |
Redirect |
Indicates the number of packets requiring ICMP redirect by process switching. |
Receive |
Indicates the number of packets ultimately destined to the router, or packets destined to a tunnel endpoint on the router. If the decapsulated tunnel packet is IP, the packet is CEF switched. Otherwise, packets are process switched. |
Options |
Indicates the number of packets with options. Packets with IP options are process switched. |
Access |
Indicates the number of packets punted because of an access list failure. |
Frag |
Indicates the number of packets punted because of fragmentation failure. |
MTU |
Indicates the number of packets punted because of maximum transmission unit (MTU) failure. Note: This field is not supported for IPv4 packets. |
As hardware-switching components evolve, more features are being supported by CEF and dCEF. Unfortunately, most legacy software features are not supported by CEF or dCEF. Nevertheless, when troubleshooting CEF, you should note whether a software feature such as NAT, PBR, or accounting supports CEF. To verify such features, check the platform-specific release notes, data sheets, and configuration guides.