Post

라우팅

라우팅

라우팅에 대해 아래와 같이 서술하는 선에서 진행하기로 한다.

  • 라우터 개념
  • 라우터 동작 방식

라우터 개념

그러면 먼저 라우터 개념부터 하나씩 살펴보자.

라우터는 무엇일까? “IT 엔지니어를 위한 네트워크 입문(길벗)에서는 아래와 같이 정의 내리고 있다.

라우터(Router)는 3계층에서 동작하는 여러 네트워크 장비의 대표격으로 그 이름처럼 경로를 지정해주는 장비입니다.
라우터에 들어오는 패킷의 목적지 IP 주소를 확인하고 자신이 가진 경로(Route) 정보를 이용해 패킷을 최적의 경로로 포워딩한다.

이전 포스팅에서 IP 관련해 다룰때, 3계층에서는 출발지 IP 주소에서 목적지 IP 주소까지 패킷을 전송시킬때 서로 다른 네트워크간 통신을 위해서 라우팅을 통해 전송한다고 했었는데, 아래 플로우를 보면서 구체적으로 알아보자.

Desktop View

위 플로우에서 볼 수 있듯이, 서로 다른 네트워크에 각각 존재하는 출발지 IP 주소와 목적지 IP 주소가 있다. 출발지 IP 주소에서 목적지 IP 주소까지 패킷을 전송하고 그에 따라 응답을 받아야 하는데, 어떻게 받을 수 있을까? 서로 네트워크가 다르기 때문에, 그냥 전송하려 한다면 출발지와 다른 네트워크의 벽에서 번번히 부딪히게 될 것이다.

인천공항에서 프랑스에 가겠다고 아무것도 없이 무작정 돌진한다면, 공항 직원들의 따스한 사랑을 받은 채 집으로 돌아가게 될 것이다. 예시가 이상하다면, 내비게이션을 떠올려보자. 도로 위를 주행중인 자동차가 있다. 자동차로 목적지까지 가야 하는데, 목적지까지 수많은 도로들이 존재하며, 그에 따른 혼란스러움을 겪게 될 것이다. 그렇다면, 이런 상황에서는 최적의 경로를 정해서 그 경로로 목적지까지 안전하게 가는 일이 필요하다. 도로가 너무 혼잡한 나머지, 제대로 된 나침판 같은 것이 없다면 엉뚱한 길로 가는 연속을 겪게 될테니. 이렇게 최적의 경로로 목적지까지 안전하게 가는 걸 가능하게 하는 게 라우팅인 것이다.

이때 라우팅은 그냥 이루어지는 것이 아니라, 라우터에서 다양한 경로 정보들을 수집해서 그 정보들 중 최적의 경로를 라우팅 테이블에 저장. 패킷이 라우터로 들어오면 도착지 IP 주소와 라우팅 테이블을 비교해 최적의 경로로 패킷을 내보낸다. 라우팅 테이블은 최적의 경로가 저장된다는 점에서 내비게이션 같은 느낌으로 이해하면 될 것 같다. 이 라우팅 테이블 개념은 뒤에서 다시 설명되므로 여기선 살짝 소개한다는 느낌으로 하고 넘어가겠다.

그러면 라우터 동작 방식과 역할로 넘어가기 전에 헤더와 라우팅 테이블 차이에 대해 알아보고 넘어가자. 라우팅 테이블을 공부하는 과정에서 헤더하고 똑같은 것이 아닌가 하고 헷갈렸어서 찾아보았었고, 아래와 같이 정리를 할 수 있었다.

헤더와 라우팅 테이블 차이

헤더의 역할 : 헤더는 각 데이터 패킷에 대한 라우팅 및 관리 정보를 포함한다. 이 정보에는 출발지 및 목적지 IP 주소, 프로토콜, TTL(Time To Live), 체크섬 등이 포함된다. 헤더는 패킷을 라우터와 목적지로 전달하기 위한 기본적인 정보를 제공하며, 패킷이 어떻게 처리되어야 하는지에 대한 지시를 담고 있다.

라우팅 테이블의 역할 : 라우팅 테이블은 네트워크 라우터에서 사용되는 중요한 데이터베이스로, 목적지 IP 주소와 다음 홉(다음 라우터 또는 목적지)를 연결하는 정보를 저장한다. 라우터는 패킷을 받으면 라우팅 테이블을 참조하여 다음 홉을 결정한다. 즉, 라우팅 테이블은 라우팅 결정을 수행하는데 사용된다.

헤더와 라우팅 테이블은 함께 작동하여 다음과 같은 과정을 수행한다:

데이터 패킷의 헤더에는 출발지, 목적지 및 라우팅에 필요한 정보가 포함된다. 라우터가 패킷을 받으면, 라우팅 테이블을 참조하여 다음 홉을 결정한다. 헤더의 목적지 IP 주소를 통해 어떤 라우팅 테이블 항목을 사용할지 결정한다. 라우팅 테이블에는 해당 목적지에 대한 다음 홉(라우터 또는 목적지) 정보가 있으며, 이 정보는 헤더의 목적지 IP 주소와 일치해야 한다. 라우터가 다음 홉을 결정하고, 헤더를 업데이트한 후, 패킷은 다음 라우터로 전달된다. 즉, 헤더는 라우팅 테이블에 사용되는 정보를 패킷에 포함하고 있으며, 라우터는 라우팅 테이블을 참조하여 다음 홉을 결정한다 헤더와 라우팅 테이블은 함께 작동하여 데이터 패킷이 목적지로 안전하게 전달되도록 보장한다.

쉽게 말해서, 헤더는 “너 누구니?” 신원확인! 라우팅 테이블은 내비게이션으로 이해하면 될 거 같다. 헤더에는 데이터 패킷과 관련된 정보들이 들어있을 뿐이고. 라우팅 테이블에는 경로에 포커스를 맞춰진 정보들이 저장된 것으로 둘 간에 차이가 있으면서도 서로 보완하여 안전하게 목적지까지 전달하는데 일조를 하는 개념.


라우터 동작 방식

라우팅은 경로를 지정해주는 거리고 말했다. 이는 라우터의 중요한 역할이자 정체성이라고 할수 있는데, 이러한 경로 지정은 어떻게 진행될까? 라우터가 패킷을 처리할 때 크게 두가지 작업을 수행한다.

  1. 경로 정보를 얻어 경로 정보를 정리하는 역할
  2. 정리된 경로 정보를 기반으로 패킷을 포워딩하는 역할

라우터는 자신이 아는 주소가 아닌 목적지를 가진 패킷이 들어오면 해당 패킷을 버리는 특성이 있으므로, 패킷이 들어오기 전에 경로 정보를 충분히 수집하고 있어야 라우터가 정상적으로 동작한다. 그렇기에 경로 정보를 얻는 일이 중요하다. 그런데 경로 정보를 얻었다고 해보자. 그러면 그 이후에는 바로바로 목적지까지 안전하게 포워딩할 수 있을까? 목적지 정보가 정확하지 않아서 바로바로 전달하기에 어려움이 있다. 이런 경우에는 근접한 정보를 찾아 패킷을 포워딩해야 한다. 이런 식으로 라우터가 동작하게 되는데, 그러면 동작 방식에 대해 자세히 알아보자.

라우터는 먼저 출발지부터 목적지까지의 경로 전부를 책임져주지 않는다. 즉, 하나의 라우터로만 출발지부터 목적지까지의 경로 전부를 책임져주지 않는다는 말이다. 여러 개의 라우터들에 걸쳐서 진행이 되는데, 이런 과정인 것이다. 우선 출발지에서 하나의 라우터에 도달하면, 그 라우터에서 다음 최적의 경로를 파악해서 한 라우터로 패킷을 전송. 그러면, 그 라우터에서 다시 다음 최적의 경로를 파악해서 다른 라우터로 전송. 그런식으로 전송되어 결국 최종적으로는 목적지에 도달하는 과정을 거치는 것이다. 이러한 방식은 네트워크를 한 단계씩 뛰어넘는다는 의미로 “홉 바이 홉(Hop-by-Hop) 라우팅이라고 부르며, 각각의 라우터인, 인접한 라우터를 넥스트 홉(Next Hop)이라 부른다. 라우터는 패킷이 목적지로 가는 전체 경로를 파악하지 않고 최적의 넥스트 홉을 선택해 보내준다. 이를 보면 내비게이션과 같다고 할 수 있다.

이런 과정을 플로우로 확인하면서 좀더 이해해보자.

Desktop View

데이터 패킷은 출발지에서 출발하여 라우터1로 이동한 후, 라우터2, 라우터3와 거치면서 목적지로 이동한다. 각 홉(라우터)는 데이터 패킷을 다음 홉으로 전달하며, 이 과정이 홉 바이 홉 라우팅의 개념이다.

이러한 넥스트 홉을 지정할 때는 아래 세가지 방법을 사용하는데, 방법을 서술하는 선에서만 한정해서 정리하기로 한다.

  1. 다음 라우터의 IP를 지정하는 방법 (넥스트 홉 IP 주소)
  2. 라우터의 나가는 인터페이스를 지정하는 방법
  3. 라우터의 나가는 인터페이스와 다음 라우터의 IP를 동시에 지정하는 방법

이러한 방식으로 패킷을 포워딩하는데, 이때 알아두어야 할 점은 출발지를 고려하지 않는다는 점이다. 출발지와 상관없이 목적지 주소와 라우팅 테이블을 비교해 어느 경로로 포워딩할지 결정하는데, 이런 이유로 라우팅 테이블을 만들때 목적지 정보만 수집하고 패킷이 들어오면 목적지 주소를 확인해 패킷을 넥스트 홉으로 포워딩한다. 다음은 라우팅 테이블에 저장되는 데이터에 포함되는 정보이다.

  1. 목적지 주소
  2. 넥스트 홉 IP 주소, 나가는 로컬 인터페이스(선택 가능)

이 포스팅에서는 홉-바이-홉 라우팅을 설명하는 선에서 마무리하기로 한다. 여기서 기억해야 할 점은 라우팅이 이러한 방식으로 동작한다는 점이다.

그러면, 라우터는 경로 정보를 어떻게 얻을까? 이를 위한 방법으로 아래 세가지가 존재한다.

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

각각에 대해 “IT 엔지니어를 위한 네트워크 입문(길벗) 책에서 길게 설명했으며, 이 세가지 방식을 이해하기 위해서 많은 시간을 썼지만 본 포스팅은 각각에 대해 간단하게 설명하는 선에서 끝낸다.

다이렉트 커넥티드는 라우팅 테이블에 IP 주소를 직접 입력해서 그 IP 주소와 관련된 경로 정보를 얻도록 하는 방식. 스태틱 라우팅은 관리자가 직접 목적지 정보나 넥스트 홉 등의 정보를 라우터에 직접 입력하거나 설정해서 경로 정보를 얻는 방식. 다이나믹 라우팅은 라우터끼리 경로 정보를 교환하게 하는 걸 말하게 해서 경로 정보를 얻는 방식.

여기까지가 라우팅에 대한 내용이다. 이 장은 솔직히 내용 이해에 대한 어려움보다 어느 정도의 선까지 정리하고 공부해야 하는가에 대한 고민이 많았다. 그 고민 끝에 이 정도 선에서 정리하는 것으로 포스팅을 하였는데 기회가 된다면 심도 높게 파고드는 것을 생각해보면서..이것으로 라우팅에 대한 정리를 마치겠다.

This post is licensed under CC BY 4.0 by the author.