라우팅 (Routing)

ohyujeong·2023년 12월 24일
1

network

목록 보기
6/8

라우팅 (Routing)

라우팅은 데이터 패킷을 한 네트워크 상에서 다른 네트워크로 이동시키는 가장 효율적인 경로를 찾는 프로세스이다.
이 과정에서 다양한 라우팅 프로토콜이 사용된다.

라우터 (Router)

라우터는 네트워크에서 라우팅을 수행하는 네트워크 장치이다.
네트워크의 경계에서 동작해 다른 네트워크와의 연결점 역할을 한다.

라우팅 테이블 (Routing table)

라우터에 내장된 데이터베이스로, 네트워크 내의 경로 정보를 저장한다.
포함된 정보는 다음과 같다.

  • 목적지 네트워크에 대한 최적 경로
  • 해당 경로로 패킷을 전달하기 위해 사용해야 하는 인터페이스
  • 해당 경로의 메트릭(Metric)

라우터는 이 테이블을 참조하여 들어오는 패킷을 알맞는 목적지로 전달한다.

메트릭 (metric)

메트릭은 라우팅 결정을 할 때 사용되는 값으로, 네트워크 경로의 효율성과 성능을 평가하는데 사용된다.
다음과 같은 요소가 있다.

  • 홉 카운트(hop count) : 패킷이 목적지에 도달하기 위해 거쳐야 하는 라우터의 수
  • 대역폭(bandwidth) : 일정 시간(보통 1초) 동안 전송 가능한 데이터의 최대 용량
  • 지연 시간(latency) : 패킷이 출발지에서 목적지까지 도달하는 데 걸리는 시간
  • 신뢰성(Reliability): 링크의 오류율이나 다운타임과 같은 요소를 고려하여 산출된 값으로, 값이 높을수록 신뢰성이 높다.
  • 부하(Load): 네트워크 연결의 현재 트래픽 양
  • 비용(Cost): 네트워크 연결에 할당된 비용 값

라우터 동작방법

라우터는 패킷을 받으면 destination으로 표시되어 있는 IP 주소에 서브넷마스크를 적용하여 네트워크 주소를 알아낸다.
그리고 라우팅 테이블에서 그 네트워크에 대한 정보를 찾고, 그 정보에 따라 트래픽을 전송한다.

라우팅 유형

고정 라우팅/정적 라우팅(Fixed/Static)

  • 정적 라우팅은 네트워크 관리자가 수동으로 라우팅 테이블을 설정하여 데이터 패킷의 경로를 지정하는 방식이다. 이렇게 지정된 경로는 네트워크 상태의 변화로 인해 기존 경로보다 최적화된 경로가 나타나도 변경되지 않는다.
  • 관리자는 각 네트워크 노드에 대한 경로 정보를 라우터에 직접 입력해야 한다.
  • 네트워크가 크게 변하지 않는 환경에서는 설정이 간단하고, 경로가 고정되어 있어 안정적이다.
  • 경로가 미리 정해져 있어 네트워크 트래픽의 예측이 가능하다.
  • 경로가 고정되어 있어 네트워크 변화에 유연하게 대응하기 어렵고, 입력한 경로가 최적의 경로가 아닐 수 있다.

동적 라우팅/적응적 라우팅(Dynamic/Adaptive)

  • 동적 라우팅은 네트워크 상황의 변화에 따라 라우팅 테이블이 동적으로 조정되는 방식이다.
  • 라우팅 프로토콜을 사용하여 네트워크 정보를 교환하고, 이를 바탕으로 최적의 경로를 계산한다.
  • 네트워크의 규모가 커져도 라우팅 정보가 자동으로 조정되어 관리하기 용이하고, 확장성이 좋다.
  • CPU 및 대역폭 사용량 측면에서 정적 라우팅에 비해 비용이 더 들고, 보안 수준이 낮다는 단점이 있다.

라우팅 프로토콜

라우팅 프로토콜은 패킷을 목적지까지 전달하기 위해 라우터 간 통신 방식과 경로를 결정하는 통신 규약이다.
다음과 같은 주요 라우팅 프로토콜이 있다.

  • RIP(Routing Information Protocol):
    최저 홉 카운트를 가지는 경로로 패킷을 전달한다. 30초마다 전체 라우팅 정보를 브로드캐스팅한다.

  • OSPF(Open Shortest Path First):
    라우터에서 패킷을 destination으로 보내는 최단 경로를 계산한다.

  • EIGRP (Enhanced Interior Gateway Routing Protocol):
    Cisco에서 개발한 프로토콜로, 대역폭, 지연 시간, 부하, 신뢰성 등 다양한 메트릭을 사용하여 최적의 경로를 결정한다.

  • BGP(Border Gateway Protocol):
    자율시스템(Autonomous System, AS) 간의 라우팅 정보를 교환한다.
    ➡ 여기서 자율시스템은 인터넷에서 독립적인 라우팅 정책을 가지고 운영되는 하나의 네트워크 그룹을 의미한다.

Linux 라우팅 설정

라우팅 테이블 확인

다음과 같이 route 명령어로 라우팅 테이블을 확인할 수 있다.
-n 옵션은 이름을 확인하지 않겠다는 뜻으로, 기본 게이트웨이의 값이 "gateway"라는 이름으로 출력되지 않게 해준다.

# 라우팅 목록을 표시하고 IP 주소를 호스트 이름으로 변환한다
route

# 라우팅 목록을 표시하고 IP 주소로 출력한다.
route -n

다음과 같이 출력된다.

필드 정보

  • Destination : 패킷이 도달해야 하는 하는 네트워크/호스트 IP 주소
    - 0.0.0.0, default : 기본 게이트웨이임을 나타내는 값이다.
  • Gateway : 기본 게이트웨이로, 패킷이 외부 네트워크로 전송될 때 거쳐가는 장치의 IP 주소(보통 라우터)
    - 일반적으로 게이트웨이 주소는 네트워크에 할당된 host의 ip주소 중 끝자리만 다른 형태이다. (대부분 1로 지정)
    - 다른 네트워크로 패킷을 보낼 때 기본적으로 패킷이 전송되는 곳이다.
  • Genmask : 목적지 네트워크의 서브넷마스크
    - 255.255.255.255 : 목적지가 단일 호스트 주소임을 나타낸다.
    - 0.0.0.0 : 서브넷 마스크가 아니라, 기본 게이트웨이임을 나타내는 값이다.
  • Flags : 해당 경로에 대한 정보를 알려주는 기호
    - U(up) : 경로가 활성화되어 있음을 나타낸다.
    - H(host) : 목적지가 단일 호스트임을 나타낸다.
    - G(gateway) : 경로가 게이트웨이를 통한다는 것을 의미한다.
  • Metric : 목적지 네트워크까지의 거리/비용
  • Ref : 해당 경로를 참조한 횟수
  • Use : 해당 경로를 통해 전송된 패킷의 수
  • Iface : 패킷이 전송될 때 사용할 네트워크 인터페이스

라우터 vs 게이트웨이

게이트웨이는 다른 네트워크와 통하는 출입문 역할을 하는 네트워크 연결 지점이다.
라우터는 게이트웨이 역할을 해주는 여러 장치들 중 하나로 이해하면 된다.
➡️ IP 네트워크의 경우 라우터가 게이트웨이 역할을 하지만 사설 네트워크를 사용하는 가정에서는 공유기가 게이트웨이 역할을 한다.
이처럼 게이트웨이는 라우터를 포괄하는 개념적 의미이다.

라우팅 테이블 읽기

라우팅 테이블을 이해하기 위해서는 다음과 같은 규칙을 따른다.

  1. 첫번째행부터 다음행으로 차례대로 한 행씩 읽으면서 처리할 패킷을 보낼 수 있는지 확인한다.

  2. default0.0.0.0기본 게이트웨이 설정 행임을 의미하며 그 행의 Gateway 값이 기본게이트웨이의 IP주소이다.

  3. 보낼 패킷의 목적지 IP주소Genmask(서브넷 마스크) 필드 값을 AND연산을 한 결과가 해당 행의 Destination 항목과 동일 할 경우, 해당 행의 Iface 필드의 인터페이스를 통해 해당 패킷을 전송하게 된다.

  4. Iface 값이 lo 인 행(Destination 값이 127.0.0.1 인 행)은 이 서버의 루프백 데이터를 처리하기 위한 설정이다. 즉, 자기 자신에게로 데이터를 보낼 때에 처리를 담당하는 인터페이스이다.

이 규칙들을 따라서 데이터 패킷이 전송된다.
여기서 기본 게이트웨이는 Genmask 값이 0.0.0.0 이므로, 모든 IP 주소와 AND 연산시 결과는 항상 0.0.0.0 이다.
연산 결과가 Destination 항목과 동일할 경우, 해당 행의 Iface 필드의 인터페이스로 해당 패킷을 전송한다고 했으므로, 라우팅 테이블에 다른 특정 경로(더 구체적인 서브넷을 지정하는 규칙)가 없는 모든 목적지 IP 주소에 적용된다.

라우팅 정보 추가 / 삭제

route 명령어에 다음과 같은 옵션을 추가하여 라우팅 테이블에 정보를 추가하거나 삭제할 수 있다.

option

add : 라우팅 정보를 추가한다.
del : 라우팅 정보를 삭제한다.
-host x.x.x.x : 입력한 IP 주소를 가진 하나의 호스트에 대한 라우팅 정보를 추가한다.
-net x.x.x.x : 입력한 네트워크 정보를 가진 네트워크에 대한 라우팅 정보를 추가한다.
- gw x.x.x.x : 네트워크 게이트웨이 주소를 지정한다.
- netmask x.x.x.x : 네트워크의 서브넷 마스크를 지정한다.
dev : device의 약어로, 인터페이스를 지정한다.
default : 기본 라우팅 정보를 추가한다.

예시 - 라우팅 정보 추가

Destination : 10.10.20.0
Genmask : 255.255.255.0
Gateway : 192.168.64.1
Iface : enp0s1

이와 같은 정보를 가지는 네트워크에 대한 라우팅 정보를 추가하고 싶다고 했을 때 다음과 같이 명령어를 사용한다.

route add -net 10.10.20.0 netmask 255.255.255.0 gw 192.168.64.1 dev enp0s1

다음과 같이 라우팅 정보가 추가된 것을 확인할 수 있다.

예시 - 라우팅 정보 삭제

라우팅 정보를 삭제할 때에는 해당 라우팅 정보를 구별할 수 있는 정보를 제공해야 한다. 다음 명령어로 앞서 생성했던 라우팅 정보를 삭제한다.
DestinationGenmask 값 만으로도 라우팅 정보가 구별되므로 다른 옵션은 포함하지 않아도 된다.

sudo route del -net 10.10.20.0 netmask 255.255.255.0

참고

라우팅
https://butter-shower.tistory.com/21
https://www.cloudflare.com/ko-kr/learning/network-layer/what-is-routing/
https://blog.skby.net/%EB%9D%BC%EC%9A%B0%ED%8C%85-%ED%94%84%EB%A1%9C%ED%86%A0%EC%BD%9C-routing-protocol/
리눅스 라우팅 설정
https://bumday.tistory.com/42
https://nochoco-lee.tistory.com/399
라우팅 테이블 읽기
https://m.blog.naver.com/hanajava/221997361552

profile
거친 돌이 다듬어져 조각이 되듯

0개의 댓글