1. 라우터의 포워딩과 라우팅 (데이터평면, 제어평면)
- Forwarding (전달): 패킷이 라우터의 입력 포트에 도착했을 때, 적절한 출력 포트로 내보내는 Data Plane(데이터 평면)의 기능이다. 매우 짧은 시간(ns 단위)에 하드웨어적으로 수행됩니다.
- Routing (라우팅): 출발지에서 목적지까지의 경로를 결정하는 Control Plane(제어 평면)의 기능이다. 라우팅 알고리즘을 통해 수행되며 상대적으로 긴 시간(ms~s 단위)이 소요된다.
* 라우터: 라우터는 지나가는 모든 패킷의 헤더 필드를 검사하고, 목적지 IP주소를 확인해서 라우팅 테이블을 이용해 지정된 포트로 내보낸다.
라우터에서 수행하는 포워딩과 라우팅 기능은 각각 제어평면과 데이터 평면에서 수행된다.

- 제어 평면(Control Plane): 라우팅 알고리즘 수행
- 데이터 평면(Data Plane): 포워딩 테이블을 가지고 있음.
전통적인 방식: 각 라우터가 라우팅 알고리즘(Control Plane)과 포워딩 테이블(Data Plane)을 모두 가지고 독립적으로 동작함.
SDN (Software Defined Network): Control Plane(경로 계산)을 중앙의 Remote Controller로 분리하고, 라우터는 Controller가 내려준 테이블을 기반으로 단순 Forwarding만 수행함. 이를 통해 라우터의 복잡도를 낮추고 효율성을 높인다.
2. 라우터 내부 구조
- Input Ports: 물리계층/데이터링크계층 처리, 네트워크 계층의 lookup(테이블 조회), forwarding, queueing 기능을 수행.
- Switching Fabric: 라우터의 입력 포트와 출력 포트를 연결해주는 내부 통로.
- Output Ports: 물리계층/데이터링크계층 처리, switching fabric으로 전달받은 패킷을 보관
- Routing Processor: Control Plane 기능을 수행함. 라우팅 프로토콜을 수행하거나 SDN 컨트롤러와 통신.
3. LPM (Longest Prefix Match)
- IPv4 주소는 약 43억 개(\(2^{32}\))로 매우 많다. 만약 라우터가 개별 호스트 IP 하나하나를 전부 테이블에 저장한다면(Brute-force), 메모리가 부족하고 검색 속도가 매우 느려진다.
- 개별 IP 대신 주소의 범위(Range), 즉 네트워크 주소(Prefix) 단위로 테이블을 만들어서 해결.
- 32비트 전체를 비교하는 것이 아니라 앞부분의 비트(Prefix)만 일치하면 해당 인터페이스로 보내도록 설정한다.
- 예시: `11001000 00010111 00010*** ********` -> Interface 0
- 앞의 21비트만 맞으면 뒤에 뭐가 오든 Interface 0으로 보낸다.
LPM (Longest Prefix Match): 여러개의 엔트리에서 hit 발생시, 일치하는 비트 수가 가장 긴 엔트리를 선택 (가장 구체적이고 좁은 범위의 네트워크를 선택하겠다.)
[예제]

(문제 1)

- Entry 0과만 일치하므로 interface 0으로 내보낸다.
(문제 2)

- Entry 1, 2와 일치하므로 더 길게 맞는 interface 1로 내보낸다.
4. 버퍼링(큐잉)과 패킷 스케줄링
[output port 처리]
- output port가 내보내는 속도 < switch fabric으로부터 패킷 수신속도 이면 output port에 버퍼링(queueing)이 필요하다.
- output port 버퍼가 가득 차면 packet loss(= drop)이 발생한다.
- output port에 버퍼링된 패킷을 대상으로 스케줄링을 통해 어떤 패킷이 전송될지 정한다.
[input port 처리, HOL]
- input port에서도 마찬가지로 버퍼링(queueing)이 필요함.
- HOL(Head of the Line) Blocking: input 큐의 맨 앞에 있는 패킷이 다른 출력 포트로 가려는 뒤쪽 패킷의 전송을 막는 현상 (앞 차가 차단기 앞에서 트롤짓 해서 뒷 차가 못가는 상황)
[버퍼 관리]
- Drop: 버퍼가 가득 찬 경우, 어느 패킷을 버퍼에 추가하고 어느 패킷을 drop할지 결정
- Tail Drop: 현재 수신 중인 패킷을 drop
- Priority based Drop: 우선순위에 따라 패킷을 drop, (버퍼링 되어있는 패킷 중에 drop 발생 가능)
- Marking: 버퍼 오버플로우 상황 발생시, 이를 알릴 수 있는 표시를 남김 (ECN 패킷을 송신호스트에게 전송)
[패킷 스케줄링 알고리즘]
- FCFS (FIFO): 먼저 온 패킷 먼저 처리.
- Priority (우선순위): 높은 등급 큐를 먼저 비운다. 낮은 등급은 기아 상태(Starvation)가 될 수 있다.
- Round Robin (RR): 클래스별로 번갈아 가며 처리하여 기아 상태를 방지.
- WFQ (Weighted Fair Queueing): RR에 가중치(Weight)를 두어, 중요한 클래스에 더 많은 대역폭을 할당함.
5. IPv6 프로토콜
IPv6: IPv4 주소 고갈, 패킷 처리 효율성 개선 필요, QoS 지원 등을 위해 등장한 새로운 프로토콜
[특징]
- 주소 공간 확장 (32비트 → 128비트).
- 헤더 단순화 (40바이트 고정).
- Flow Label 도입으로 QoS 지원.
- 16진수 8묶음으로 표기하며, ::을 이용해 0을 생략할 수 있다.
- Anycast: 가장 가까운 노드 하나만 응답하는 주소 체계로, DNS 서버 부하 분산 등에 쓰인다.
[IPv4에서 IPv6로의 전환 (Tunneling)]
: IPv4망을 통과해야 할 때, IPv6 패킷 전체를 payload로 보고 IPv4 패킷의 데이터(Payload)로 캡슐화하여 전송하는 터널링(Tunneling) 기법을 사용한다.

→ 터널링을 이용해 IPv4 네트워크 구간을 터널처럼 통과해서 붙여진 이름.
6. 기타 프로토콜 - (이동 IP, ARP, RARP, ICMP)
(1) 이동 IP (Mobile IP)
- 원리: 단말이 이동해도 고유의 홈 주소(Home Address)를 유지한다.
- 구성: 홈 에이전트(HA)와 방문지 에이전트(FA/COA) 간에 터널을 형성하여 패킷을 우회 전달한다. (Triangular Routing 문제 발생 가능)
(2) ARP (Address Resolution Protocol)
- 논리 주소(IP주소)를 물리 주소(MAC주소)로 변환한다.
- MAC 주소: NIC(Network Interface Card) 하드웨어에 할당된 고유 식별자 주소
(3) RARP (Reverse ARP)
- MAC 주소를 IP주소로 변환
- ARP를 역으로 수행함.
(4) ICMP (Internet Control Message Protocol)
- 인터넷 환경에서 IP 패킷을 처리할 때 발생하는 문제를 알려주는 프로토콜
- 문제 발생시, 라우터가 ICMP 메시지를 자동으로 발생시킴
- 오류 보고: 목적지 도달 불가, TTL 초과 등을 알린다.
- 질의: `ping` 처럼 에코 요청/응답을 통해 연결을 확인한다.
- ICMP 메시지는 IP 데이터그램 안에 캡슐화되어 전송다.
7. SDN (Software Defined Network)
SDN (Software Defined Network): Control Plane(경로 계산)을 중앙의 Remote Controller로 분리하고, 라우터는 Controller가 내려준 테이블을 기반으로 단순 Forwarding만 수행함. 이를 통해 라우터의 복잡도를 낮추고 효율성을 높인다.
[전통적인 라우터의 한계]
- 경로 지정 변경이 어렵다. (링크 가중치를 억지로 조작해야함, 경로 지정이 어려움)
- 부하 분산이 어렵다. (기존에는 최적 경로로만 모든 패킷을 보냄)
- 트래픽 차등 처리, QoS 중요도 에 따른 경로 설정이 어려움
[SDN 전체 구조]
- Application Plane: 라우팅, 방화벽, 로드 밸런싱 등의 실제 응용 프로그램.
- Control Plane: Remote Controller (SDN Controller) (네트워크 OS 역할).
- Data Plane: 멍텅구리 스위치들 (패킷 포워딩만 수행).
[계층간 통신 인터페이스]
- Northbound API: Remote Controller와 상위 네트워크 앱 사이의 인터페이스 (예: RESTful API).
- Southbound API: Remote Controller와 스위치 사이의 통신 인터페이스 (예: OpenFlow).
'컴퓨터공학 > 네트워크' 카테고리의 다른 글
| [네트워크] 12. 소켓 프로그래밍 1 (소켓 주소 / 핵심 함수 / TCP, UDP 서버 클라이언트 흐름) (0) | 2025.12.11 |
|---|---|
| [네트워크] 11. 전송 계층 (L4: 3-way handshake, TCP, UDP, RTP) (0) | 2025.12.10 |
| [네트워크] 09. 네트워크 계층 1 (L3: 라우팅, 혼잡제어, 패킷 분할, IP 프로토콜, 다익스트라) (1) | 2025.12.09 |
| [네트워크] 08. 데이터 링크 계층 (0) | 2025.10.21 |
| [네트워크] 07. MAC 계층 (0) | 2025.10.21 |