핵심 인사이트 (3줄 요약)

  1. 본질: CEF(Cisco Express Forwarding)는 기존 라우터가 패킷이 들어올 때마다 CPU를 괴롭히며 길을 찾던 지연 현상을 완벽하게 없애기 위해, 라우팅 테이블(RIB)을 부팅 시에 미리 하드웨어 칩셋(ASIC) 전용 언어인 FIB와 Adjacency Table로 완벽히 컴파일해 두는 궁극의 하드웨어 스위칭 기술이다.
  2. 패킷 스위칭의 혁명: 첫 번째 패킷이 들어오기도 전에 모든 목적지의 정답(출구 포트와 목적지 MAC 주소)을 하드웨어 칩셋(TCAM)에 구워버리기 때문에, 첫 번째 패킷부터 천만 번째 패킷까지 단 한 번도 CPU의 인터럽트를 유발하지 않고 빛의 속도(Wire-speed)로 쳐낸다.
  3. 2개의 마법의 짝꿍 테이블: 라우팅 목적지를 고속으로 검색하는 **FIB(Forwarding Information Base)**와, 그 포트로 나갈 때 이더넷 겉면에 적어야 할 최종 MAC 주소(ARP 캐시 결과)를 미리 만들어둔 **인접 테이블(Adjacency Table)**이 세트로 묶여서 연산 시간을 제로(0)로 만든다.

Ⅰ. 개요 및 필요성 (Context & Necessity)

  • 개념: 시스코(Cisco)가 개발하여 현재 전 세계 인터넷 백본 라우터 스위칭의 사실상 표준(De facto standard)이 된 하드웨어 기반의 토폴로지 중심 포워딩 메커니즘.

  • 필요성: 앞서 배웠듯 '패스트 스위칭(Fast Switching)' 기술은 첫 번째 패킷이 올 때 CPU가 고생해서 캐시를 만들면 두 번째 패킷부터 캐시를 타는 방식이었다. 그런데 인터넷에 트래픽이 폭증하고 목적지 IP가 워낙 다양해지다 보니, 첫 패킷이 너무 많이 쏟아져 들어와서 캐시가 무용지물이 되고 CPU가 폭발하는 현상이 발생했다. **"아예 패킷이 단 한 개도 들어오지 않은 부팅 상태에서, 모든 목적지에 대한 정답지(캐시)를 100% 미리 싹 다 만들어두면 안 될까?"**라는 광기 어린 최적화 아이디어가 CEF를 탄생시켰다.

  • 💡 비유:

    • 과거 (패스트 스위칭): 손님이 처음 "부산 가는 햄버거 세트"를 주문하면 그때 주방장(CPU)이 레시피를 뒤져서 세트를 구성해 줍니다. 두 번째 손님부터는 만들어둔 세트를 바로 내줍니다. 하지만 손님이 수만 명이고 메뉴가 다 다르면 주방장은 과로사합니다.
    • 현대 (CEF): 주방장(CPU)은 아침에 출근하자마자 메뉴판(RIB)에 있는 **"모든 햄버거 세트를 수만 개 미리 다 만들어서 쇼케이스(FIB 하드웨어)에 진열"**해 둡니다. 손님(패킷)이 주문하면 알바생(ASIC 칩)이 쇼케이스에서 1초 만에 꺼내줍니다. 주방장은 낮잠을 잡니다.

📢 섹션 요약 비유: CEF는 전투기가 출격(패킷 인입)하기 전에, 비행기에 필요한 모든 미사일 장착, 연료 주입, 목적지 좌표 입력(FIB, 인접 테이블)을 격납고에서 100% 세팅 완료시켜, 출격 명령이 떨어지자마자 버튼 하나로 튕겨 나갈 수 있게 한 완벽한 사전 준비 시스템입니다.


Ⅱ. CEF의 두 가지 핵심 엔진 (Deep Dive)

CEF의 놀라운 속도는 CPU가 만들어 낸 RIB(라우팅 테이블)와 ARP(MAC 주소) 테이블을, 기계(ASIC)가 가장 좋아하고 가장 빨리 찾을 수 있는 이진수 트리 구조의 2개 테이블로 "사전 컴파일" 해버린다는 데 있다.

1. FIB (Forwarding Information Base) - 경로 최적화의 끝판왕

  • OSPF나 BGP가 만든 원본 라우팅 테이블(RIB)을 복사해서 만든 고속 검색 전용 지도다.
  • 재귀 탐색(Recursive Lookup) 제거: RIB에서는 "A로 가려면 B를 거쳐라, B로 가려면 C를 거쳐라, C는 3번 포트다"라고 되어 있어 CPU가 3번을 점프해서 읽어야 했다.
  • FIB는 이 뻘짓을 혐오한다. 미리 계산을 끝내놓고 **"A로 가려면 걍 3번 포트!"**라고 딱 한 줄로 직관적인 결론을 박아버린다.
  • 이 FIB는 TCAM이라는 고가의 특수 메모리에 올라가서 O(1)의 속도로 한 방에 검색된다.

2. Adjacency Table (인접 테이블) - MAC 씌우기 0.1초 컷

  • 라우터가 3번 포트로 패킷을 밖으로 쏠 때, 2계층 이더넷 봉투를 새로 씌워야 하므로 '다음 라우터(Next-Hop)의 MAC 주소'를 알아야 한다.
  • 예전에는 패킷을 쏠 때마다 ARP 캐시를 뒤져서 MAC 주소를 찾고 껍데기를 포장하느라 시간이 걸렸다.
  • CEF는 부팅 시 아예 "3번 포트로 나가는 놈들은 헤더 껍데기를 요렇게(미리 알아둔 MAC 주소로) 포장해라!"라는 'L2 헤더 포장지 완성본'을 수만 개 미리 프린트해 둔다.
  • 이것이 인접 테이블이다. 패킷이 FIB를 타고 3번 출구로 딱 나오면, 미리 프린트된 인접 테이블의 MAC 포장지를 풀로 철썩 붙여서 빛의 속도로 밖으로 차버린다.
 ┌─────────────────────────────────────────────────────────────┐
 │                CEF (Cisco Express Forwarding) 원리 요약        │
 ├─────────────────────────────────────────────────────────────┤
 │                                                             │
 │   [ 준비 단계 (사전 계산) ]                                       │
 │   1. 라우팅 테이블 (RIB) ───(컴파일)──▶ [ FIB ] (목적지 IP -> 포트 3) │
 │   2. ARP 테이블 (MAC) ────(컴파일)──▶ [ 인접 테이블 ] (미리 만들어둔 L2 헤더)│
 │                                                             │
 │   [ 실전 단계 (패킷 인입 시 CPU 개입 0%) ]                         │
 │   * 패킷(목적지 8.8.8.8)이 입력 포트로 들어옴!                         │
 │     │                                                       │
 │     ▼ (하드웨어 ASIC 칩이 즉시 낚아챔)                            │
 │   [ FIB 검색 ] "8.8.8.8은 3번 포트로 가야 하네!"                   │
 │     │                                                       │
 │     ▼ (스위칭 패브릭 이동)                                       │
 │   [ 인접 테이블 검색 ] "3번 포트니까 미리 만들어둔 AA:BB MAC 껍데기 씌워!" │
 │     │                                                       │
 │     ▼ (빛의 속도로 출력 포트로 튕겨나감)                              │
 │                                                             │
 └─────────────────────────────────────────────────────────────┘

📢 섹션 요약 비유: CEF는 패스트푸드점의 **"드라이브 스루(Drive-Thru)"**입니다. 손님이 주문(패킷 인입)하자마자 햄버거를 굽는(CPU 연산) 것이 아니라, 이미 뒤에 완성된 햄버거(FIB)에 미리 출력해 둔 영수증(인접 테이블)을 붙여 창구에서 1초 만에 바로 던져주는 궁극의 공장형 스위칭입니다.