본문 바로가기

Ryu's Tech

CEF [ Cisco Express Forwarding ]


패킷 스위칭에 있어서 이에 대한 3가지 메커니즘이 있는데 그 종류는 아래와 같습니다.
먼저 Packing Switching이란 말은 인터페이스로 들어온 패킷을 다른 인터페이스로 보내는 것을 말합니다.



1. Process Switching [ 프로세스 스위칭 ]

최초의 패킷이 들어오면 이를 시스템 버퍼에 복사하고, 장비는 목적지 주소를 라우팅 테이블에서 찾는다. 그리고 이 프레임의 목적지를 재작성하고, outgoing interface로 보낸다. 그 후 같은 목적지의 패킷은 같은 방식으로 보내진다.
위에서 목적지 주소를 라우팅 테이블에서 찾고 이의 목적지 주소를 재작성 할때 Router Processor의 CPU에 의해 연산된다.
이러한 이유로 이는 속도가 느리고, CPU-intensive 이다 [ CPU에 의해 결정된다 ].
패킷별로 Load Balancing을 수행한다.





2. Fast Switching [ 패스트 스위칭 ]

이는 기존의 Process Switch의 단점을 보완하기 위해서 cache를 추가시켰다.
패킷이 들어오면 Cache에서 matching되는 정보를 찾아보고 없으면 이를 Process Switching 처럼 처리하지만, 이제 이 정보를 바탕으로 Cache Table에 저장해 두게 된다.
패킷이 들어오면 Cache-table을 확인하여 matching되는 정보가 있으면 바로 필요한 부분을 rewriting하여 전송하게 된다.
그리고 또 하나의 부분은 Cache에 있던 Entry는 일정 시간이 지나면 삭제 되고, 차후 또 Process Switching을 해 주어야 하는 것이다.
목적지 별로 Load Balancing을 수행한다.

Command
Purpose

ip route-cache

Enables fast switching (use of a high-speed route cache for IP routing).

no ip route-cache

Disables fast switching and enable load balancing on a per-packet basis



위와 같은 커맨드를 통해 설정할 수 있으며, disable 시킬 경우 Process Switching 만하게된다.

Command
Purpose

show ip cache [prefix mask] [type number]

Displays the routing table cache used to fast switch IP traffic.


확인은 위의 명령어로 해 볼 수 있다.






3. CEF [ Cisco Express Forwarding ]

CEF는 스위칭에 있어서 가장 최적화된 프로토콜이다.
Fast Switching 같은 경우에는 최초에는 라우팅 테이블을 참조하게 되는데, CEF의 경우에는 이를 더 효율적으로 쓰기 위해 처음부터 Routing Table 의 복사본을 저장하고 있다. 이를 FIB [ Forwarding Information Base ] 라고 한다.
즉, 라우팅 테이블이 변하면 FIB도 같이 변한다.
기본적으로 주소지-목적지 별로 Load Balancing을 수행하지만 커맨드를 통해 패킷별 Load Balancing도 가능하다.
Adjacency Table은 ARP의 정보를 가지고 생성되며, 이 역시 첫번째 패킷이 전송되기 전에 생성된다.
FIB는 목적지 주소에 대해 Prefix-based로 경로를 결정합니다. 그리고 Adjancency Table은 FIB에 있는 모든 Entry에 대한 L2 Next hop 정보를 유지합니다.




Command
Purpose

ip cef

Enables standard CEF operation.

Command
Purpose

ip load-sharing per-packet

Enables per-packet load balancing.



위와같이 cef를 enable 시키며 아래는 패킷별로 Load Sharing을 하기 위해서 사용하는 명령어이다.

또한 Show ip interface 명령어로 아랫쪽에서 어떠한 스위칭 방식을 사용하는지도 알 수 있습니다.



전부 정리 하고 싶으나... 너무 양이 많아져서 공식 문서를 따로 올려드립니다.


















*** 추가 ***
With an incomplete adjacency, CEF considers that the router as a whole (including all the other switching
paths) does not know how to get to the adjacent node. We punt packets to process switching in order to kick
off some resolution protocol like Address Resolution Protocol (ARP), which results in the adjacency being
completed some time later. In this condition, CEF punts one packet every two seconds to the next switching
path to avoid a flood of packets. Thus in this condition, pings to the IP address might fail about 50 percent and
you see a "!.!.!.!.!" ping pattern. This condition also occurs when the CEF table is corrupted, as indicated by a
difference between the show ip route command information and the show ip cef command information for a
particular IP address.