라우터 / L3 스위치 - 3계층 장비

🏷️ 개요

라우터는 대표적인 3계층 장비로, 경로를 지정해주는 장비다. 들어오는 패킷의 목적지 IP 주소를 확인하고 자신이 가진 경로 정보를 이용해 패킷을 최적의 경로로 포워딩한다. 현대 네트워크 환경에서는 인터넷을 연결하기 위한 원격지 통신이 매우 중요한데, 라우터는 이러한 원격지 네트워크를 구성하는 핵심 장비다.

💡 참고 - 라우터와 L3 스위치는 같은 기능을 하는데, 어떤 차이가 있을까?
기존에는 라우터는 소프트웨어로 구현하고, 스위치는 하드웨어로 구현하는 형태로 구분하거나, 다양한 기능의 라우터와 패킷을 빨리 보내는데 최적화된 스위치로 구분했지만, 최근에는 기술의 발전으로 라우터와 L3 스위치를 구분하기는 어렵다.
이번 챕터에서 다루는 내용에 한해서 라우터와 L3 스위치는 모두 동일하다고 보면 된다.

1. 라우터의 동작 방식과 역할

라우터는 다음과 같이 동작한다.

  1. 경로 지정
    1. 다양한 경로 정보를 수집해 최적의 경로를 라우팅 테이블에 저장한 후
    2. 패킷이 라우터로 들어오면
    3. 도착지 IP 주소와 라우팅 테이블을 비교해 최선의 경로로 패킷을 내보낸다.
  2. 브로드캐스트 컨트롤
    1. 들어온 패킷의 목적지 주소가 라우팅 테이블에 없으면 패킷을 버린다.
  3. 프로토콜 변환
    1. 패킷 포워딩 과정에서 기존 2계층 헤더 정보를 제거한 후
    2. 새로운 2계층 헤더를 만들어 낸다.

1.1. 경로 지정

라우터의 가장 중요한 역할

  1. 다양한 경로 정보를 수집해 최적의 경로를 라우팅 테이블에 저장한 후
  2. 패킷이 라우터로 들어오면
  3. 도착지 IP 주소와 라우팅 테이블을 비교해 최선의 경로로 패킷을 내보낸다.

라우터는 IP 주소의 네트워크 주소와 호스트 주소를 이용해서 로컬 네트워크와 원격지 네트워크를 구분하여 경로를 찾을 수 있다.

라우터는 이 IP 주소를 확인해 원격지에 있는 적절한 경로로 패킷을 포워딩한다.

  1. 경로 정보를 얻는 방법

    1. IP 주소를 입력하면서 자연스럽게 인접 네트워크 정보를 얻는 방법
    2. 관리자가 직접 경로 정보를 입력하는 방법
    3. 라우터끼리 서로 경로 정보를 자동으로 교환하는 방법

Alt text

이 방법을 통해 정확인 목적지 경로를 얻어 자신이 얻은 경로 정보에 포함되는 패킷만 포워딩한다.

1.2. 브로드캐스트 컨트롤

  • 스위치
    • 패킷의 도착지 주소를 모르면 플러딩을 통해 모든 포트에 패킷을 전달한다.
    • LAN은 크기가 작아 플러딩에 대한 영향이 작고 도착지 네트워크 인터페이스 카드에서 자신의 주소와 패킷의 도착지 주소가 다르면 패킷을 버리기 때문에 네트워크에 큰 무리를 주지 않는다.
  • 라우터
    • 라우터는 패킷을 원격지로 보내는 것을 목표로 개발되어 3계층에서 동작하고 분명한 도착지 정보가 있을 때만 통신을 허락한다.
    • 인터넷 연결은 대부분 지정된 대역폭만 빌려 사용하므로 쓸모없는 통신이 네트워크를 차지하는 것을 최대한 막으려고 노력한다.
      • 만약 LAN에서 스위치가 동작하는 것처럼 목적지가 없거나 명확하지 않은 패킷이 플러딩된다면 인터넷에 쓸모 없는 패킷이 가득 차 통신불능 상태가 될 수 있다.
    • 라우터는 바로 연결되어 있는 네트워크 정보를 제외하고 경로 습득 설정을 하지 않으면 패킷을 포워딩 할 수 없다.
    • 라우터는 기본적으로 멀티캐스트 정보를 습득하지 않고 브로드캐스트 패킷을 전달하지 않는다.
      • 이 기능을 통해 브로드캐스트가 다른 네트워크로 전파되는 것을 막을 수 있다.
      • 이 기능을 “브로드캐스트 컨트롤 / 멀티캐스트 컨트롤”이라고 한다.
    • 네트워크에 브로드 캐스트가 많이 발생하는 경우, 라우터로 네트워크를 분리하면 브로드캐스트 네트워크를 분할해 네트워크 성능을 높일 수 있다.

      1.3. 프로토콜 변환

    • 라우터의 또 다른 역할은 서로 다른 프로토콜로 구성된 네트워크를 연결하는 것.
    • ⇒ 이는 현재 대부분의 네트워크가 이더넷을 사용하면서 줄어든 역할이다.
      • 과거에는 LAN에서 사용하는 프로토콜과 WAN에서 사용하는 프로토콜이 전혀 다른 공간이어서, LAN에서 사용하는 기술이 WAN으로 변환되어야만 통신이 가능했고 이 역할을 라우터가 담당했다.
    • 라우터에 패킷이 들어오면 2계층까지의 헤더 정보를 벗기고 3계층 주소를 확인 후 2계층 헤더 정보를 새로 만들어 외부로 내보낸다.
      • LAN 구간에서 패킷이 라우터를 지나면서 헤더가 벗겨지고 WAN 구간으로 패킷이 나올 때 PPP 헤더로 변경되어 프로토콜이 변환된다. Alt text 라우터는 서브넷 단위로 라우팅 정보를 습득하고 라우팅 정보를 최적화하기 위해 서머리(Summary) 작업을 통해 여러 개의 서브넷 정보를 뭉쳐 전달합니다. ⇒ 그래서 라우터에 들어온 패킷의 목적지 주소와 라우터가 갖고 있는 라우팅 테이블 정보가 정확히 일치(Exact Match)하지 않더라도 수많은 정보 중 목적지에 가장 근접한 정보를 찾아 패킷을 포워딩해야 합니다.

2. 경로 지정 - 라우팅/스위칭

  • 라우팅 - 라우터가 경로 정보를 얻는 방법 (라우팅 테이블을 만드는 방법)
  • 스위칭 - 라우터가 경로를 지정하는 방법

2.1. 라우팅 동작과 라우팅 테이블

  1. 라우팅 동작
    • 홉 바이 홉 라우팅 (Hop-by-Hop Routing)
      • 단말부터 목적지까지의 경로를 모두 책임지는 것이 아니라, 인접한 라우터까지만 경로를 지정하면 인접 라우터에서 최적의 경로를 다시 파악한 후 라우터로 패킷을 포워딩한다.
      • 이때 인접한 라우터를 Next Hop이라고 부른다. Alt text
  • Next Hop을 지정하는 방법
    1. 다음 라우터의 IP 주소를 지정하는 방법
    2. 라우터의 나가는 인터페이스를 지정하는 방법
      1. 상대방 Next Hop 라우터의 IP를 모르더라도 MAC 주소 정보를 알아낼 수 있을 때만 사용
    3. 라우터의 나가는 인터페이스와 다음 라우터의 IP를 동시에 지정하는 방법
      1. VLAN 인터페이스와 같은 논리적인 인터페이스를 사용할 수 있다.
  1. 라우팅 테이블
    • 라우팅 테이블에 저장하는 데이터
      1. 목적지 주소
      2. Next Hop IP 주소, 나가는 로컬 인터페이스

참고- PBR (Policy Based Routing)

라우터에서 PBR 기능을 사용할 수 있지만, 출발지 주소를 이용해야하기 때문에 라우터 테이블 외에도 라우터 정책과 관련된 별도 설정이 필요하다. PBR은 출발지 IP와 도착지 IP, 포트 번호와 같은 다양한 조건을 합쳐 사용할 수 있다. 출발지 주소를 이용한다는 의미로 소스 라우팅이라고 부르기도 한다.

참고- 루프가 없는 3계층: TTL (Time To Live)

3계층의 IP 헤더에는 TTL 이라는 헤더가 있다. 이 필드는 패킷이 네트워크에 살아 있을 수 있는 시간(홉)을 제한한다. TTL은 실제 시간이 아니라 홉을 지칭하며, 홉을 지날 때 마다 TTL 값이 1씩 줄어든다.

두 대의 라우터가 서로를 참조하게 되면 루프가 생겨 사라지지 않는 유령 패킷이 생성되는데, TTL을 이용해 홉수가 제한이 되면 이 루프를 방지할 수 있다.

2.2. 라우팅 - 라우터가 경로 정보를 얻는 방법 (라우팅 테이블을 만드는 방법)

  1. 다이렉트 커넥티드
  2. 스태틱 라우팅
  3. 다이나믹 라우팅
  1. 다이렉트 커넥티드

    라우터나 PC에서는 IP 주소를 입력할 때 사용된 IP 주소와 서브넷 마스크로 알게된 네트워크 주소 정보로 라우팅 테이블을 자동으로 만든다.

    이 경로 정보를 다이렉트 커넥티드라고 부른다.

    이 정보는 인터페이스에 IP를 설정하면 자동 생성되는 정보이므로 정보를 강제로 지울 수 없고, 네트워크 설정을 삭제하거나 해당 네트워크 인터페이스가 비활성되어야만 자동으로 사라진다.

    • 다이렉트 커넥티드로 생성된 정보는 넥스트 홉에 ‘connected’라고 표기된다.

    Alt text

  2. 스태틱 라우팅

    관리자가 목적지 네트워크와 넥스트 홉을 라우터에 직접 지정해 경로 정보를 입력하는 것

    다이나믹 커넥티드와 마찬가지로 연결된 인터페이스 정보가 삭제되거나 비활성화되면 자동으로 삭제된다.

    다만 물리 인터페이스가 아닌 논리 인터페이스는 물리 인터페이스가 비활성화 되더라도 비활성화 되지 않을 수 있어 라우팅 테이블에서 사라지지 않을 수 있다.

    • R1과 R2에 각각 넥스트홉에 서로의 주소가 설정되어 있다. 양방향 통신을 해야하기 때문에 되돌아오는 패킷을 고려함.

    Alt text

    • 스태틱 라우팅의 한계
      1. 라우터 너머 다른 라우터의 상태 정보를 파악할 수 없어 라우터 사이의 회선이나 라우터에 장애가 발생하면 장애 상황을 파악하고 대체 경로로 패킷을 보낼 수 없다.
        • 목적지 R4로 패킷을 보내기 위해 R2 또는 R3 홉으로 패킷을 보내는데, R2-R4 사이의 경로의 장애를 발견하지 못하고 패킷을 버리게 된다. Alt text
      2. 관리자가 관리해야하는 네트워크 수가 많아지고 복잡해지면 관리자가 직접 수정하는데에 한계가 있다.
  3. 다이나믹 라우팅

    다이나믹 라우팅은 이러한 스태틱 라우팅의 단점을 보완한다.

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

    주기적으로 또는 상태 정보가 변경될 때 라우터끼리 경로 정보가 교환되므로 장애가 발생하면 이 상황을 인지해 대체 경로로 포워딩 할 수 있다.

    위 그림처럼 다이나믹 라우팅에서는 자신이 광고할 네트워크를 선언해주어야 한다.

    다이나믹 라우팅은 다양한 경로 정보를 체계적으로 데이터베이스화하여 토폴로지 테이블에 저장하고, 순위를 부여해서 최적의 경로만 추려 라우팅 테이블에 저장한다.

    라우터는 이렇게 얻은 최적의 경로를 이용하여, 전체 경로 중에서 다음 라우터 사이의 홉까지의 최적의 경로만을 이용하여 패킷을 포워딩할 수 있다.

2.3. 스위칭 - 라우터가 경로를 지정하는 방법

패킷이 들어와 라우팅 테이블을 참조하고 최적의 경로를 찾아 라우터 외부로 포워딩하는 작업

들어온 패킷의 목적지가 라우팅 테이블에 있는 정보와 완벽히 일치하지 않는 경우, 라우팅 테이블에서 가장 좋은 항목을 찾는 알고리즘이 필요한다.

Alt text

  1. 롱기스트 프리픽스 매치 (LPM, 맥시멈 프리픽스 매치)

    1. 라우팅 테이블과 도착지 정보가 매치 ⇒ 10.0.0.0/8, 10.1.0.0/16, 10.1.1.0/24

      ⇒ 10.0.0.0/8은 10.0.0.0 ~ 10.255.255.255 범위

      ⇒ 10.1.0.0/16은 10.1.0.0 ~ 10.1.255.255 범위

      ⇒ 10.1.1.0/24는 10.1.1.0 ~ 10.1.1.255 범위

    2. 자리수 매치 ⇒ 10.1.2.0/24, 10.1.2.9/32 x
    3. 옥텟 정보 매치 ⇒ 10.1.1.5/32 x
    4. 목적지에 가장 가까운 정보는 10.1.1.0/24

    하지만 이와 같이 부정확한 정보 중 가장 비슷한 경로를 찾는 작업은 많은 리소스를 소모해 부하가 많이 걸린다.

  2. 캐싱

    롱기스프 프리픽스 매치의 반복 작업을 줄여주는 기술

    한 번 스위칭 작업을 수행한 정보는 캐시에 저장하고 뒤에 들어오는 패킷은 캐시를 먼저 확인한다.

    이런 기술이 유용한 것은 패킷 네트워크에서 데이터를 보내기 위해 동일한 출발지 IP, 동일한 목적지 IP, 포트 번호로 여러 개의 패킷이 연속적으로 보내기 때문이다.

    • 캐시 사용 기법
      1. 단순히 목적지 IP만 캐시하는 기법
      2. 출발지와 목적지 IP 모두 캐시하는 기법
      3. 포트 번호 정보까지 포함해 플로를 모두 저장하는 기법
      4. 넥스트 홉 L2 정보까지 저장해 스위칭 시간을 줄이는 기법

2.4. 라우팅, 스위칭 우선순위

  1. 라우팅 우선순위

    위에서 언급한 것처럼 다이나믹 라우팅은 다양한 경로 정보를 체계적으로 데이터베이스화하여 토폴로지 테이블에 저장하고, 우선순위를 부여해서 최적의 경로만 추려 라우팅 테이블에 저장한다.

    이 우선순위는 경로를 받은 방법과 거리를 기준으로 정한다.

    목적지 네트워크 정보가 동일한 서브넷을 사용하는 경우, 정보를 얻은 소스에 따라 가중치를 정한다.

    이 가중치 값은 라우팅 정보의 분류와 마찮가지로 크게 3가지로 나뉜다.

    • 내가 갖고 있는 네트워크(다이렉트 커넥티드) - 우선순위: 제일 높음
    • 내가 경로를 직접 지정한 네트워크(스태틱 라우팅) - 우선순위: 중간
    • 경로를 전달받은 네트워크(다이나믹 라우팅) - 우선순위: 낮음

    또한 어떤 라우팅 프로토콜을 통해 경로 정보를 얻었는가에 따라 우선순위가 다르다.

    기본적인 우선순위는 미리 정해져있지만 필요에 따라 관리자가 조정할 수 있다. 이런 우선순위를 AD(Administrative Distance, 관리 거리)라 하며 라우터 생산업체마다 AD값이 조금씩 다르다.

    우선순위 기본 디스턴스
    0 다이렉트 커넥티드
    1 스태틱 라우팅
    20 External BGP
    110 OSPF
    114 IS-IS
    120 RIP
    200 Internal BGP
    255 Unknown

    경로 정보를 받은 소스가 같아 가중치 값이 동일한 경우에는 코스트 값으로 우선순위를 정한다.

    코스트값도 동일하면 ECMP (Equal Cost Multi Path) 기능으로 트래픽을 분산한다.

  2. 스위칭 우선순위

    롱기스트 프리픽스 매치 기법으로 우선순위를 정한다.

  3. 라우팅, 스위칭 역할을 하나로 묶은 우선순위는 다음과 같다.

    우선순위 구분 적용 방법
    1 롱기스트 매치 스위칭
    2 AD 라우팅
    3 코스트 라우팅
    4 ECMP 라우팅

Categories:

Updated:

Leave a comment