핵심 인사이트 (3줄 요약)
- 본질: 현대의 라우터는 엄청난 속도로 쏟아지는 트래픽을 감당하기 위해, 머리를 써서 지도를 그리는 똑똑한 **제어 평면(Control Plane, RIB)**과, 눈 감고 지도만 보며 빛처럼 기계적으로 택배를 밀어내는 멍청한 **데이터 평면(Data Plane, FIB)**으로 하드웨어 구조를 완벽하게 두 동강 내놓았다.
- RIB (라우팅 테이블): OSPF, BGP 같은 라우팅 알고리즘이 치열하게 회의를 거쳐 만들어낸 원본 지도책으로, **"서울에서 부산 가려면 대전을 거쳐 가는 게 제일 빠르다"**라는 인간 친화적인 논리적 경로가 적혀 있다. (CPU가 관리하므로 검색이 느리다).
- FIB (포워딩 테이블): 느린 RIB를 그대로 쓰면 라우터가 터지므로, RIB의 내용 중 핵심만 뽑아 기계어(이진수)로 변환해 고속 하드웨어 칩셋(ASIC/TCAM)에 구워버린 **"초광속 요약본 지도"**다. (라우터는 실제 패킷이 들어올 때 RIB를 보지 않고 100% FIB만 보고 스위칭한다).
Ⅰ. 개요 및 필요성 (Context & Necessity)
-
개념: 라우터 내부의 아키텍처는 제어 평면(경로 계산)과 데이터 평면(실제 패킷 전달)으로 논리적/물리적으로 분리되어 동작한다.
-
필요성: 초기 라우터는 CPU 하나가 OSPF로 길도 찾고, 들어오는 패킷 IP도 읽고 포워딩도 했다. 그런데 인터넷이 커지면서 초당 100만 개의 패킷이 쏟아져 들어오자 CPU가 폭발해버렸다. "경로를 찾는 똑똑한 뇌(CPU)와, 들어오는 족족 튕겨내는 단순무식한 근육(하드웨어 칩셋)을 완전히 분리하자! 근육은 뇌가 미리 계산해 둔 **가이드라인(FIB)**만 보고 생각 없이 몸만 움직이게 하자!" 이것이 기가비트 라우팅의 시작이다.
-
💡 비유:
- 제어 평면 (RIB): 물류 회사의 **"본사 작전 회의실"**입니다. 내비게이션 데이터를 분석해 "강남구는 3번 고속도로가 제일 빠름"이라는 최적의 루트 지도를 짭니다. 머리를 많이 써야 해서 느립니다.
- 데이터 평면 (FIB): 물류 센터의 **"단순 분류 로봇(컨베이어 벨트)"**입니다. 박스에 적힌 '강남구'란 글자를 스캐너로 찍자마자, 본사에서 미리 내려준 지침(FIB)대로 0.1초 만에 3번 트럭으로 박스를 확 던져버립니다. 로봇은 절대 스스로 길을 계산하지 않습니다.
📢 섹션 요약 비유: RIB가 모든 철학과 논리가 담긴 두꺼운 **"수학의 정석(원본)"**이라면, FIB는 내일 수능을 치기 위해 꼭 필요한 공식만 형광펜으로 칠해 얇게 압축해 놓은 **"비법 요약 노트(복사본)"**입니다. 실제 시험(포워딩)장에선 비법 노트만 봅니다.
Ⅱ. 평면의 분리와 캐싱/FIB의 메커니즘 (Deep Dive)
1. 제어 평면 (Control Plane)과 RIB
- 주체: 메인 CPU, 라우팅 프로토콜 (OSPF, BGP, RIP) 프로세스 프로세스.
- 역할: 전 세계 라우터들과 대화를 나누어 토폴로지(지형)를 파악한다. 선로가 끊어지면 우회로를 찾고, **RIB (Routing Information Base, 라우팅 테이블)**를 갱신한다.
- 한계: RIB는 트리 구조 등으로 되어 있어 특정 IP를 찾으려면 CPU가 재귀 탐색(Recursive Lookup)을 해야 하므로 패킷을 넘기는 속도가 밀리초(ms) 단위로 매우 느리다.
2. 데이터 평면 (Data Plane)과 FIB
- 주체: 스위칭 패브릭(고속 백플레인), 라인 카드(포트), 하드웨어 ASIC 칩셋.
- 역할: 오직 사용자의 패킷(IP 데이터그램)을 입력 포트에서 출력 포트로 넘겨주는(Forwarding) 육체노동만 전담한다.
- 동작 방식:
- 제어 평면의 CPU가 RIB 지도를 완성하면, 이를 기계어로 번역해 데이터 평면의 고속 하드웨어 메모리(TCAM)로 쏴준다. 이것이 **FIB (Forwarding Information Base)**다.
- 라인 카드로 패킷이 훅 들어오면, 라인 카드에 달린 칩셋은 중앙 CPU를 괴롭히지 않고, 자기 라인 카드에 있는 FIB 메모리만 쓱 보고 즉시 3번 포트로 패킷을 쏴버린다. (CPU 개입 0%)
┌─────────────────────────────────────────────────────────────┐
│ 라우터의 평면 분리 아키텍처 도식 │
├─────────────────────────────────────────────────────────────┤
│ │
│ [ 제어 평면 (Control Plane) - CPU ] │
│ [ OSPF ] [ BGP ] [ Static ] │
│ ↘ ↓ ↙ │
│ [ RIB (라우팅 테이블) 작성 ] ──▶ (초당 수십 번 느리게 갱신) │
│ │ │
│ ───────────────┼──── (고속 다운로드) ────────────────────────── │
│ ▼ │
│ [ 데이터 평면 (Data Plane) - 라인 카드 하드웨어 ] │
│ [ FIB (고속 포워딩 테이블) ] │
│ ▲ │
│ │ (CPU 거치지 않고 직접 통신!) │
│ 패킷 In ────┴──────────────────────▶ 패킷 Out │
│ (초당 수백만 개) │
└─────────────────────────────────────────────────────────────┘
3. 스위칭 발전의 3단계 역사
- 프로세스 스위칭 (구석기): 패킷 10,000개가 들어오면 CPU가 10,000번 모두 RIB를 뒤져서 길을 찾는다. (CPU 터짐, 매우 느림)
- 패스트 스위칭 (중세): 첫 1번째 패킷만 CPU가 고생해서 길을 찾고 그 결과를 임시 메모리(캐시)에 적어둔다. 나머지 9,999개는 캐시만 보고 냅다 쏜다. (캐시에 없으면 또 CPU가 고생함)
- 토폴로지 기반 스위칭 (현대, CEF): 패킷이 들어오기도 전에, 아예 부팅할 때부터 라우터가 미리 RIB의 모든 경우의 수를 몽땅 계산해서 FIB라는 완벽한 정답지를 만들어 하드웨어 칩에 박아둔다. 첫 번째 패킷부터 CPU를 절대 거치지 않는 궁극의 최적화 상태다.
📢 섹션 요약 비유: 프로세스 스위칭이 **"매번 손님(패킷)이 길을 물어볼 때마다 지도를 펴서 찾아주는 경찰관(CPU)"**이라면, 현대의 라우터 구조(FIB)는 **"아예 손님이 오기 전에 교차로 모든 방향에 이정표(FIB)를 못 박아 설치해두어, 경찰관은 사무실에서 자고 있고 손님들은 이정표만 보고 각자 갈 길 가는 자동화된 도로망"**입니다.