본문 바로가기
개발공부 개발새발/Network

Network ) 라우터

by 휴일이 2024. 7. 19.

라우터

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

💡 라우터처럼 3계층에서 통작하는 L3 스위치도 많이 사용되고 있다. 최근 기술 발달로 라우터와 L3 스위치를 구분하기 어렵다.. 그러니 이 장에서 설명하는 건 전부 L3 스위치에도 해당된다고 생각해도 무방!
  • 다양한 경로 정보를 수집해 최적의 경로를 라우팅 테이블에 저장함. → 경로 지정
  • 패킷이 라우터로 들어오면 도착지 IP 주소와 라우팅 테이블을 비교해 최선의 경로로 패킷을 내보냄. → 브로드캐스트 컨트롤
  • 들어온 패킷의 정보가 라우팅 테이블에 없으면 패킷을 버림 → 프로토콜 변환
    • 스위치는 본인이 모르면 포트 전체로 전송했었죠?

경로 지정

경로 정보를 모아 라우팅 테이블을 만들고 패킷이 라우터로 들어오면 패킷의 도착지 IP 주소를 확인해 경로를 지정하고 패킷 포워딩.

라우터의 역할 구분 수행

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

경로 정보 얻는 법?

  • IP 주소를 입력하며 자연스럽게 인접 네트워크 정보 얻기.
  • 관리자가 직접 경로 정보 입력.
  • 라우터끼리 서로 경로 정보를 자동으로 교환.

브로드캐스트 컨트롤

분명한 도착지 정보가 있을 때만 통신을 허락하므로, 바로 연결되어 있는 네트워크 정보를 제외하고 경로 습득 설정을 하지 않으면 패킷을 포워딩 할 수 없다.

라우터의 기본 동작

  • 멀티캐스트 정보 습득 X
  • 브로드캐스트 패킷 전달 X
    • 브로드캐스트가 다른 네트워크로 전파되는 것을 막는다.
    • 이게 바로 브로드캐스트 컨트롤/멀티 캐스트 컨트롤.

→ 네트워크에 브로드캐스트가 많이 발생한다면 라우터로 네트워크를 분리하면 브로드캐스트 네트워크가 분할되어 네트워크 성능 상승.

프로토콜 변환

서로 다른 프로토콜로 구성된 네트워크를 연결할 수 있다.

  • 라우터에 패킷이 들어오면 2계층까지의 헤더 정보를 벗겨내고 3계층 주소 확인, 2계층 헤더 정보를 새로 만들어 외부로 보냄.
    • 그래서 라우터에 들어올 때의 2계층 헤더 정보와 나갈 때의 2계층 헤더 정보가 다르다.
    • 전혀 다른 기술간의 변환 가능.

경로 지정 - 라우팅 스위칭

라우터는 자기가 알고 있는 주소가 아닌 목적지를 가진 패킷이 들어오면 해당 패킷을 버리므로, 경로 정보를 충분히 수집하고 있어야 한다. 다음은 라우터가 패킷을 처리할 때 하는 동작이다.

  • 경로 정보를 얻어 정리.
  • 정리된 경로 정보를 기반으로 패킷 포워딩.

라우터는 서브넷 단위로 라우팅 정보를 습득하고 최적화하기 위해 서머리 작업 을 통해 여러 개의 서브넷 정보를 뭉쳐 전달함. → 라우팅 테이블 정보가 정확히 일치하지는 않아도 목적지에 가장 근접한 정보를 찾아 패킷을 포워딩해야 함.

(인터넷에서의) 라우팅 동작

홉바이홉(Hop-by-Hop) 라우팅이라고 불린다.

  • 인접한 라우터까지만 경로 지정
  • 인접 라우터(넥스트 홉)에서 최적 경로를 다시 파악
  • 라우터로 패킷 포워딩
  • 라우터는 패킷이 목적지로 가는 전체 경로를 파악하지 않고 최적의 넥스트 홉을 선택해 보내줌.

넥스트 홉 지정 방법

  1. 다음 라우터의 IP 지정(넥스트홉 IP 주소) → 일반적인 방법!
  2. 라우터의 나가는 인터페이스 지정(IP는 모르고 MAC 주소만 알 때)
  3. 라우터의 나가는 인터페이스(MAC) 과 다음 라우터의 IP 를 동시에 지정. → VLAN 사용

포워딩 경로 선택할 때는

  • 목적지 주소 와 라우팅 테이블을 비교해 어느 경로로 포워딩할지 결정 (출발지 상관X)
  • 그래서 라우팅 테이블을 만들 때는 목적지 정보만 수집한다.

라우팅 테이블 정보

  • 목적지 주소
  • 넥스트 홉 IP 주소, 나가는 로컬 인터페이스(선택 가능)
💡 PBR (소스 라우팅, 폴리시 라우팅) - 라우터에서 패킷의 출발지 주소를 이용하도록 라우팅하는 방법. 라우터에 별도 설정이 필요하다.
- 이 경우 다른 라우터로의 전파가 어렵고 문제가 발생하면 해결이 어려워 “특별한 목적”으로만 사용함.
💡 3계층 IP 헤더에는 TTL (패킷이 네트워크에 살아있을 수 있는 시간(홉)을 제한) 필드가 있어 루프를 막을 수 있다. 하나의 홉을 지날 때마다 TTL 값은 -1 된다.

라우팅

라우터가 경로 정보를 얻는 방법

  • 다이렉트 커넥티드 → IP 주소 입력하며 자연스러운 학습
  • 스태틱 라우팅 → 관리자가 직접 입력
  • 다이나믹 라우팅 → 라우터끼리 서로 교환

다이렉트 커넥티드

IP 주소를 입력할 때 사용된 IP 주소와 서브넷 마스크로 해당 IP 주소가 속한 네트워크 주소 정보를 알 수 있음.

  • 라우터나 PC 에서는 해당 정보로 해당 네트워크에 대한 라우팅 테이블을 자동으로 만든다.
  • 인터페이스에 IP 를 설정하면 자동 생성되는 정보이므로
    • 정보를 강제로 지울 수 없음.
    • 해당 네트워크 설정을 삭제하거나 해당 네트워크 인터페이스가 비활성화되어야만 자동으로 사라짐.

스태틱 라우팅

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

  • 연결된 인터페이스 정보가 삭제되거나 비활성화되면 연관된 스태틱 라우팅 정보가 자동 삭제됨.
    • 논리인터페이스는 물리 인터페이스가 비활성화되더라도 함께 비활성화되지 않는 경우도 있어, 라우팅 테이블에서 사라지지 않을 수도 있음.

다이나믹 라우팅

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

  • 관리자 개입 없이 라우터끼리의 정보 교환만으로 장애를 인지하고 트래픽을 우회하므로 대부분의 네트워크에서 다이나믹 라우팅 사용.
  • 라우터가 수집한 정보 → (토폴로지 테이블) 에서 패킷을 보낼 때 최적의 경로 정보 → (라우팅 테이블)만 수집하여 다음 라우터까지만 패킷을 포워딩함. (홉-바이-홉 라우팅)

스위칭 (라우터의 경로 지정법)

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

  • 다양한 방법으로 경로 정보를 얻고 그 중 최적의 경로로 생각되는 경로를 라우팅 테이블에 올려 유지하는 것 → 라우팅
  • 라우터가 최선의 경로로 패킷을 빨리 포워딩하는 것을 도와줌.
  • 스위칭은 “라우터가 패킷 경로를 지정해 보내는 작업”

만약 10.1.1.9 IP 가 목적지인 패킷이 라우터로 들어왔다면..

  1. 라우터가 도착지 IP와 가장 가깝게 매칭되는 정보 찾음.
  2. 10.1.1.9 와 완전히 매치되는 경로 정보가 없으니 롱기스트 프리픽스 매치 기법을 이용해 가진 경로 정보 중 가장 가까운 경로 선택.

LPM 롱기스트 프리픽스 매치

라우터가 패킷을 포워딩할 때 자신이 갖고 있는 라우팅 테이블에서 가장 좋은 항목을 찾는 알고리즘.

  • 사실 라우터에서 이 작업은 많은 부하가 걸린다.
  • 정확한 정보를 매칭하는 이그잭트 매치 는 단순한 서치 작업으로 찾고 패킷 처리.
  • 롱기스트 매치처럼 부정확한 정보 중 가장 비슷한 경로를 찾는 건 더 많은 리소스를 소모한다.
    • 그래서 이런 반복 작업을 줄여주는 기술을 채용함!

리소스 소모 줄이기

  • 한 번 스위칭 작업을 수행한 정보는 캐시에 저장하고 뒤에 들어오는 패킷은 일단 캐시를 먼저 확인.
  • 이런 기술이 유용한 이유 ?
    • 패킷 네트워크에서는 동일한 출발지 IP, 목적지 IP, 포트 번호로 여러 개의 패킷이 연속적으로 보내지기 때문.
  • 캐시 정보는 다양
    • 목적지 IP 만, 포트 번호까지 캐시, 플로를 모두 저장하거나 넥스트 홉 L2 정보까지 캐싱해 스위칭 시간도 줄임 ㄷㄷㄷ
    • Redis 같은 메모리 캐시를 이용해 DB 부하를 줄이는 방법과 유사함.

라우팅, 스위칭 우선 순위

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

목적지 네트워크가 동일한 서브넷을 사용한다면

정보를 얻을 소스에 따라 가중치를 정하게 되는데..

  1. 내가 갖고 있는 네트워크 → 다이렉트 커넥티드
  2. 내가 직접 경로를 지정한 네트워크 → 스태틱 라우팅
  3. 경로를 전달받은 네트워크 → 다이나믹 라우팅

다이렉트 커넥티드

  • 우선 순위가 가장 높음. → 라우터에 바로 연결된 네트워크라..

스태틱 라우팅

  • 관리자가 목적지 네트워크에 대한 경로를 직접 지정
  • 비록 로컬 네트워크는 아니지만 관리자가 직접 입력했으니 신뢰도가 높아서 다이렉트 커넥티드 다음임.

다이나믹 라우팅

  • 라우팅 프로토콜로부터 경로를 전달받은 네트워크.
  • 다른 라우터를 통해 경로를 전달받았으므로 우선순위가 낮은데
    • 어떤 라우팅 프로토콜을 통해 경로 정보를 얻었느냐에 따라도 우선순위가 다르다…

AD 라우팅, 스위칭 우선 순위

이렇게 기본적인 우선 순위는 정해져있지만… 관리자가 우선순위 조정 가능.

  • 경로 정보를 얻은 소스가 같아 가중치 값이 동일하면 코스트(cost) 값으로 우선순위를 정함.
  • 코스트 값도 동일하다? → ECMP 기능으로 동일한 코스트 값을 가진 경로 값 정보 모두 활용해 트래픽 분산
  • 패킷 스위칭은 LPM(롱기스트 프리픽스 매치) 으로 우선순위!

라우팅 설정 방법

다이렉트 커넥티드

라우터나 PC에 IP 주소, 서브넷 마스크를 입력하면 다이렉트 커넥티드 라우팅 테이블 생성.

  • 목적지가 다이렉트 커넥티드라면 L2 통신(ARP 요청 직접 보내는)으로 목적지 도달.
    • 목적지가 외부인데 다이렉트 커넥티드 라우팅 테이블 정보만 있으면 외부 네트워크와 통신이 불가능하겠죠?
  • 외부 네트워크와 통신하려면 다이렉트 커넥티드 외에 스태틱, 다이나믹 라우팅에서 얻은 원격지 네트워크에 대한 라우팅 정보가 있어야 함.
    • 외부 네트워크 정보가 있더라도 다이렉트 커넥티드 정보가 잘못되면 ? → 외부와 통신 불가능..
    • 외부로 나가는 맨 첫 길목이 “다이렉트 커넥티드” 이기 때문.

스태틱 라우팅

네트워크 정보를 쉽게 추가하고 경로를 직접 제어할 수 있는 가장 강력한 방법.

  • 다이렉트 커넥티드를 제외하고 우선순위 가장 높음.
  • 서버 담당자도 경로 관리에 사용하는 경우가 많으므로 잘 알아두면 좋음!
  • 라우터는 적절한 경로 정보가 없으면 패킷을 버리므로 → 많은 라우팅 정보를 처리하기 위해서는 대용량 인터넷 라우팅 전용 라우터 필요 (인터넷 사업자 운영)
    • 인터넷 사업자(KT, SK 등)이 모든 인터넷 정보를 보유한 대형 라우터를 운영하고 있어 우리가 인터넷을 사용하는 데 아무 문제가 없는 것..!
  • 하지만 일반 회사에서 운영하는 라우터는 인터넷의 모든 라우팅 정보를 가질 만큼 크지 않고, 모든 인터넷 경로를 받아 처리하는 것은 부적절
    • 이럴 경우 스태틱 라우팅을 확장한 디폴트 라우팅을 사용하면 문제 해결
    • 목적지 주소의 서브넷 마스크가 모두 0인 스태틱 라우팅 → 디폴트 라우팅 → 모든 네트워크 정보를 체크하지 않음 → 즉, 모든 네트워크
    • 자신에게 경로 정보가 없다면 마지막 대체 경로로 디폴트 라우팅을 사용하여(디폴트 게이트웨이) 데이터 센터 게이트웨이로 보내 패킷 라우팅.
  • 네트워크 장비에서 디폴트 라우팅과 디폴트 게이트웨이를 구분하기도..
    • 디폴트 라우팅 → 라우팅 능력이 있는 장비 (특정 경로로 포워딩하는 능력 있음)
    • 디폴트 게이트웨이 → 포워딩 능력 없음..

라우팅 설정 문법

ip route NETWORK NETMASK NEXTHOP route add -net NETWORK /Prefix gw NEXTHOP

# 목적지(네트워크/호스트 - 서브넷/서브넷마스크) 로 가려면 패킷을 넥스트 홉으로 보내야 한다.

다이나믹 라우팅

관리자의 직접적인 개입 없이 라우터끼리 정보를 교환해 경로 정보를 최신으로 유지할 수 있다.

  • 라우터끼리 정보를 교환하므로 관리자가 라우팅 정보 직접 입력해줄 필요 X
  • 다이나믹 라우팅 뒤에 프로토콜이 붙는 것은 ?
    • 라우터끼리 자신들만의 프로토콜로 정보를 교환하기 때문이다.
  • 중간 경로에 문제가 발생해도 대체 경로를 찾는 작업이 자동으로 수행.

역할에 따른 분류

일반적으로 라우팅 프로토콜은 → 유니캐스트 라우팅 프로토콜이고, 주로 사용하는 역할 과 동작 원리 에 따라 구분한다.

💡 정보) 인터넷에는 AS 라는 자율 시스템이 존재하는데 SKT, KT, LG U+ 같은 인터넷 사업자가 한 개 이상의 AS 를 운영함.

IGP

AS 내에서 사용하는 라우팅 프로토콜

  • 효율성
  • 자체 규칙 OK

EGP

AS 간 통신에서 사용하는 라우팅 프로토콜

  • 효율보다 조직간 정책이 더 중요.

👻 걍 재밌는 이야기

인터넷 사업자 간의 통신에도 비용을 지불해야하므로 EGP 는 조직간 정책이 중요하다. 이런 EGP 정책 때문에 AS 건너 연결하는 것이 제한되고 AS 간 직접 연결을 주로 사용하는데 인터넷이라고 해서 모든 통신이 공통 경로로 이루어지는 것이 아니고 인터넷 사업자 간의 이해관계에 따라 연결 경로가 달라지므로 특정 서버로 통신이 빠르거나 느린 차이가 발생한다. 특히 회선을 무작정 늘릴 수 없는 해외 사업자와 연결할 때 통신 사업자마다 속도 차이를 느낄 수 있다고..

 

동작 원리에 따른 분류

IGP 라우팅 프로토콜은 동작 원리에 따라 디스턴스 벡터와 링크 스테이트로 나뉜다.

(어드밴스드 디스턴스 벡터 라는 것도 있지만 특정 회사가 만든 라우팅 프로토콜로 최근에는 많이 사용되고 있지 않음.)

디스턴스 벡터

인접한 라우터 에서 경로 정보를 습득하는 라우팅 프로토콜

  • 인접 라우터가 아니면 간접적으로 한 단계 건너 받음.
  • (장점) 이미 계산한 결과물을 받으니 → 라우팅 정보 처리에 많은 리소스가 필요 없음
    • 간단한 네트워크를 구축하는 데 많이 사용.
  • (단점) 멀리 떨어진 라우터 경로 정보를 얻으려면 많은 라우터 거쳐야해서 동기화에 많은 시간 필요
    • 네트워크에 변경이 발생하면 정확한 정보 파악 오랜 시간 걸릴 수 있음.

링크 스테이트

라우터에 연결된 링크 상태를 서로 교환 하고 각 네트워크 맵을 그리는 라우팅 프로토콜

  • 직접적인 상태 정보 받아볼 수 있음.

 

  • 링크 상태를 교환 → 토폴로지 DB 만들기 → SPF 알고리즘 경로 계산 → 최단 경로 트리 작성 → 라우팅 테이블에 추가
  • (장점) 링크 상태 정보를 받아 각자 처리하므로 전체 네트워크 맵을 그리고 경로 변화를 파악하는 데 유리
  • (단점) 이런 작업이 부하로 작용할 수 있어 네트워크 규모라 커지면 네트워크 경로 파악에 CPU, 메모리 자원을 많이 소모함.
  • 따라서 네트워크 변화를 더 빨리 감지하고 리소스 최적화를 위해
    • 네트워크를 에어리어 단위로 분리
    • 분리된 에어리어 내에서만 링크 상태 정보를 교환
  • 내부에서는 전체 링크 정보 공유
  • 외부에는 가공된 라우팅 테이블 형태로 정보 전달

OSPF

AREA 단위로 네트워크를 구분하고 확장

  • AREA0 로 불리는 Backbone AREA 를 통해 모든 AREA 연결
  • AREA 간이나 OSPF 외부 네트워크 연결을 위해 특별한 라우터 이용 필요
  • ABR : Backbone AREA ↔ 다른 AREA : 경계 라우터
  • ASBR : OSPF ↔ 다른 외부 정보 : 외곽 라우터

다이나믹 라우팅 활용

최근에는 BGP (디스턴스 벡터) 활용함!

  • 다양한 프로토콜 정보를 한꺼번에 교환할 수 있다는 장점.
  • AS 외부 뿐만아니라 내부에서도 사용 가능.
  • 정책 기반 라우팅 프로토콜, 관리자 의도대로 경로를 동적으로 변환할 수 있다는 큰 장점 !
  • 라우팅 테이블이 크거나 IPv4, IPv6 네트워크 혼재, 멀티테넌트 환경이라면 다양한 정보 교환을 목적으로 사용
    • 이 때 사용하는 BGP → MP-BGP (멀티프로토콜)
728x90