• network
  • tcp-ip

라우터: 경로 지정, 브로드캐스트 컨트롤, 라우팅과 스위칭

3계층 장비인 라우터의 세 가지 역할과 경로 정보를 얻는 방법, Hop-by-Hop 라우팅, Longest Prefix Match를 정리한다.

시리즈 · 네트워크3 / 12
  1. OSI 7 Layer와 계층별 역할, ARP
  2. IP 주소: IPv4와 IPv6, NAT, 체크섬
  3. 라우터: 경로 지정, 브로드캐스트 컨트롤, 라우팅과 스위칭
  4. DHCP 동작 방식과 UDP를 사용하는 이유
  5. IP의 한계와 TCP·UDP, 3-Way Handshake
  6. TCP 4-Way Handshake와 TIME_WAIT
  7. DNS 정리: 구조, 질의 방식, 레코드, 이중화와 위임
  8. 로드 밸런서: 구성 방식, 헬스 체크, L4와 L7
  9. HTTP 메서드와 상태 코드: 멱등성, POST와 PUT의 차이
  10. HTTP의 Stateless·Connectionless와 쿠키, 세션
  11. HTTP/1.1, HTTP/2, HTTP/3 비교
  12. 소켓과 포트, 그리고 웹소켓

라우터

라우터는 3계층에서 동작하는 대표적인 장비다. 패킷의 목적지 IP 주소를 확인하고, 자신이 가진 경로 정보를 이용해 패킷을 최적의 경로로 포워딩한다.

L3 스위치와의 차이

스위치는 원래 2계층 장비이지만, 라우터처럼 3계층에서 동작하는 L3 스위치도 많이 사용한다.

  • 전통적으로 라우터는 소프트웨어 기반으로, 스위치는 하드웨어 기반으로 라우팅을 구현했다.
  • L3 스위치는 수신한 패킷의 IP 정보를 기억해 두었다가, 이미 알고 있는(캐시된) 주소면 직접 하드웨어적으로 전송한다. 속도가 빠른 라우터로 생각해도 무방하다.
  • 최근에는 라우터와 L3 스위치를 구분하기 어렵다.

라우터의 세 가지 역할

역할 동작
경로 지정 경로 정보를 수집해 최적의 경로를 라우팅 테이블에 저장하고, 패킷의 목적지 IP와 비교해 최선의 경로로 내보낸다
브로드캐스트 컨트롤 목적지 주소가 라우팅 테이블에 없으면 패킷을 버린다
프로토콜 변환 포워딩 과정에서 기존 2계층 헤더를 제거하고 새로운 2계층 헤더를 만든다

라우팅 테이블에는 목적지 주소와, 그곳으로 가기 위한 넥스트 홉 IP 주소 또는 나가는 로컬 인터페이스가 저장된다.

경로 지정

라우터는 경로 지정을 두 가지 역할로 나누어 수행한다.

  • 경로 정보를 얻는 역할
  • 경로 정보를 확인하고 패킷을 포워딩하는 역할

Hop-by-Hop 라우팅

라우터는 출발지부터 목적지까지의 경로를 모두 책임지지 않는다. 인접한 라우터까지만 경로를 지정하면, 그 라우터가 다시 최적의 경로를 파악해 다음 라우터로 패킷을 넘긴다. 이 방식을 Hop-by-Hop 라우팅이라 하고, 인접한 라우터를 Next Hop이라 부른다.

넥스트 홉은 세 가지 방법으로 지정할 수 있다.

  • 다음 라우터의 IP를 지정
  • 라우터의 나가는 인터페이스를 지정
  • 나가는 인터페이스와 다음 라우터의 IP를 동시에 지정

일반적으로는 상대방 라우터의 인터페이스 IP 주소를 지정한다.

라우팅 루프와 TTL

두 라우터의 넥스트 홉이 서로 상대방으로 설정되면 패킷이 두 라우터 사이를 계속 오가는 라우팅 루프가 생긴다. 이런 유령 패킷을 제거하기 위해 TTL을 둔다. 3계층의 TTL은 실제 시간이 아니라 홉 수를 뜻하며, 홉을 하나 지날 때마다 1씩 줄어든다.

가장 근접한 경로 찾기

패킷의 목적지 주소가 라우팅 테이블의 정보와 정확히 일치하지 않는 경우가 더 많다. 라우터는 서브넷 단위로 라우팅 정보를 습득하고, 정보를 최적화하기 위해 여러 서브넷을 하나로 뭉쳐 전달하는 서머리 작업을 하기 때문이다.

따라서 라우터는 수많은 정보 중 목적지에 가장 근접한 항목을 찾아야 한다. 이때 쓰는 알고리즘이 Longest Prefix Match(Maximum Prefix Length Match)로, 목적지 주소와 일치하는 항목 중 prefix가 가장 긴 것을 선택한다.

브로드캐스트 컨트롤

스위치와 라우터는 목적지를 모르는 패킷을 정반대로 다룬다.

스위치

  • 패킷의 도착지 주소를 모르면, 어딘가 존재할 장비와 통신하기 위해 패킷을 모든 포트에 전송한다(플러딩).
  • LAN은 크기가 작아 플러딩의 영향이 작고, 도착지가 아닌 장비의 네트워크 인터페이스 카드는 자신의 주소와 다른 패킷을 버리기 때문에 큰 무리가 없다.

라우터

  • 패킷을 원격지로 보내는 것을 목표로 개발된 장비라, 분명한 도착지 정보가 있을 때만 통신을 허가한다.
  • 멀티캐스트 정보를 습득하지 않고, 브로드캐스트 패킷을 전달하지 않는다.
  • 덕분에 브로드캐스트가 다른 네트워크로 전파되는 것을 막을 수 있다. 이를 브로드캐스트 컨트롤(멀티캐스트 컨트롤)이라고 한다.

프로토콜 변환

라우터는 서로 다른 프로토콜로 구성된 네트워크를 연결한다. 들어온 패킷의 2계층 헤더를 벗겨 정보를 확인하고, 나가는 네트워크에 맞는 2계층 헤더를 새로 만들어 내보낸다. 라우터에 들어올 때와 나갈 때 패킷의 2계층 헤더가 다른 이유다.

라우팅: 경로 정보를 얻는 방법

다이렉트 커넥티드 (Direct Connected)

라우터 인터페이스에 IP 주소를 입력하면, IP 주소와 서브넷 마스크로 해당 인터페이스가 속한 네트워크 주소를 알 수 있다. 라우터는 이 네트워크에 대한 라우팅 테이블을 자동으로 만든다.

스태틱 라우팅

관리자가 목적지 네트워크와 넥스트 홉을 라우터에 직접 지정한다.

  • 라우터 너머에 있는 다른 라우터의 상태를 파악할 수 없다.
  • 회선이나 라우터에 장애가 발생해도 이를 파악해 대체 경로로 패킷을 보낼 수 없다.

다이나믹 라우팅

라우터끼리 자신이 아는 경로 정보나 링크 상태 정보를 교환해 전체 네트워크 정보를 학습한다.

  • 상태가 바뀌면 라우터끼리 경로 정보를 다시 교환한다.
  • 회선이나 라우터에 장애가 발생하면 대체 경로로 패킷을 포워딩할 수 있다.

같은 목적지에 대한 경로의 우선순위는 다이렉트 커넥티드, 스태틱, 다이나믹 순이다.

스위칭과 포워딩 테이블

패킷이 들어오면 라우팅 테이블을 참조해 최적의 경로를 찾아 라우터 외부로 포워딩하는 작업을 스위칭이라고 한다.

  • 라우팅: 최적의 경로 정보를 얻는 것
  • 포워딩: 라우팅된 정보를 바탕으로 패킷을 다음 홉으로 전송하는 과정

포워딩 테이블은 입력 포트로 수신한 패킷을 어느 출력 포트로 보낼지를 나타낸 표다. 입출력 포트를 연결하는 테이블로, 스위치와 라우터 모두 포워딩 테이블을 관리한다.