본문 바로가기

프로그래밍/네트워크

[Coursera Google] The Network Layer - Routing

모든 인터넷 네트워크에 걸쳐 통신이 이루어지는 방법은 라우팅을 통해서다.

 

목표

  • 라우팅의 기본과 라우팅 테이블의 작동 방식 이해
  • 라우팅 프로토콜의 일부와 프로토콜이 수행하는 작업을 정의

 

매우 기본적으로는 라우터는 트래픽의 대상 주소에 따라 트래픽을 전달하는 네트워크 장치다.

라우터는 그 두 개의 네트워크에 연결 되어야 하기 때문에 적어도 두 개의 네트워크 인터페이스를 가지고 있는 장치다

 

 

기본 라우티의 단계는 이렇다

  1.  라우터 인터페이스들 중 하나가 데이터 패킷을 수신한다.
  2.  라우터는 이 패킷의 대상 IP를 검사한다.
  3.  라우터는 라우팅 테이블에서 이 IP 의 대상 네트워크를 찾는다
  4.  라우터는 원격 네트워크에 가장 가까운 인터페이스에 패킷을 포워드 한다.

 

이 단계들이 목적지에 도달 할 때 까지 반복된다.

 

 

두 네트워크에 연결된 라우터를 상상해보자

첫번째는 네트워크 A 에 192.168.1.0/24의 주소 공간을 주고 

두번째 네트워크 B 에 10.0.0.0/24 의 공간을 줬다고 가정하자

라우터는 각 네트워크에 인터페이스가 있다.

 

IP 주소 192.168.1.100 인 네트워크 A 의 컴퓨터가

IP 주소 10.0.0.10 에게 데이터를 보내려고 할 때

자신의 로컬 서브넷에는 10.0.0.10 이 없다는 걸 확인 하고 

자신의 라우터 MAC 주소에 패킷을 보내게 된다.

 

네트워크 A 의 라우터는 이 패킷을 받고

패킷을 보낼때 데이터링크 계층에서 생긴 이더넷 헤더와 이더넷 푸터를 삭제해주고

IP datagram 만 남긴다.

이러면 라우터는 IP datagram 을 검사 할 수 있게 되고 

목적지 주소가 10.0.0.10 인걸 확인 한다.

라우팅 테이블에서 목적지에 맞는 네트워크를 찾고

이 네트워크가 1홉 안에 있는걸 확인 후 직접 주소에 연결한다.

 

이때 패킷을 새로 만들어야 하는데,

처음으로 왔던 IP datagram 을 복사한 후에

헤더에서 TTL 만 1 홉 줄여주고,

새로운 체크섬을 생성해준다.

목적지 MAC 주소를 세팅해주고 패킷을 보내서 결국 10.0.0.10 에 데이터가 전달되게 된다.

 

여기서 한가지 예시만 더 봐보자

만약 10.0.0.1 네트워크 B 와 연결이 되어있는 172.16.1.0/23 이라는 네트워크 C 가 있다면?

그리고 네트워크 A 에서 네트워크 C 로 데이터를 보낸다면?

 

이 경우에는 네트워크 A 는 로컬 네트워크에 목적지가 없다는 걸 알고 ,

네트워크 A 와 네트워크 B 사이의 라우터 게이트웨이에 패킷을 보낸다.

다시 라우터는 패킷 내용을 검사하고 목적지 주소가 172.16.1.100 인걸 보고

라우팅 테이블을 조회하여 가장 빨리 도달 할 수 있는 네트워크 라우터 C 에 패킷을 전달하게 된다.

 

 이처럼 트래픽이 목적지에 도달 하기 전에 매우 많은 라우터를 건녀야 하는 경우들이 있다.

라우터는 대상 IP 를 검사하고 라우팅 테이블을 봐서

어떤 경로가 가장 빠른지 판단하고 경로를 포워딩 한다.

 

 

 

라우팅 테이블

일반적인 라우팅 테이블은 4개의 컬럼을 가지고 있다.

첫번째로 목적지 네트워크 ,

 

라우터가 알고 있는 각 네트워크에 대한 행을 포함한다.

원격 네트워크, 네트워크 ID 및 네트워크 마스크들이 저장 될 수 있다.

 

 

두번째론 Next Hop 이 있다.

이건 목적지 네트워크를 위해 다음 라우터의 IP 주소를 나타낸다.

 

세번째는 Total Hop 

 

마지막으로 인터페이스 

트래픽에 대해 어떤 인터페이스를 사요해야 하는지 알아야 한다.

 

 

Interior Gateway Protocols

 

라우팅의 핵심은 라우팅 테이블이 항상 대상 네트워크로의 가장 빠른 경로에 대한 새로운 정보로 업데이트 된다는 것이다.

라우터는 라우팅 프로토콜을 이용해 라우터 끼리 정보를 공유하기 위해 사용하는 프로토콜이다.

 

라우팅 프로토콜은 Interior Gateway Protocol(내부) 과 Exterior Gateway Protocol(외부) 로 나눠진다.

내부 게이트웨이를 먼저 봐보자

내부 게이트웨이 프로토콜은 LAN 에서 사용되는 프로토콜이다

내부 게이트웨이는 거리 벡터 프로토콜과 링크 상태 라우팅 프로토콜 로 나눠진다.

이 둘은 서로 유사하지만, 다른 종류의 데이터를 공유한다.

 

거리 벡터 프로토콜은 오래된 표준이다.

거리 벡터 프로토콜을 사용하는 라우터는 직접 연결된 모든 이웃 라우터에 라우팅 테이블 목록을 보낸다.

이 리스트가 바로 벡터

거리 벡터 프로토콜은 총 상태에 대해 알지 못하고 , 단지 가까운 이웃에 대한 정보를 가지고 있다.

 

어떻게 동작하는지 예를 들어보자.

 

라우터 A 에는 다수의 항목이 있는 라우팅 테이블이 있다.

이 항목 중 하나는 10.1.1.0/24로 이걸 네트워크 X 라고 하자

 

 

라우터 A는 네트워크 X 에 대한 가장 빠른 경로는 라우터 C 가 연결되는 인터페이스 2를 통해서라고 알고 있다.

라우터 A 는 네트워크 X를 위해 인터페이스 2를 통해 라우터 C 로 가는걸 4홉이 걸린다고 알고 있다.

 

이때 라우터 B 가 네트워크 X 까지 가는게 2홉 밖에 안걸린다는게 라우팅 테이블에 반영이 된다.

거리 벡터 프로토콜을 사용해 라우터 B 의 라우팅 테이블이 라우터 A 에게 전달이 되고

라우터 B 로 가는 경로 까지 포함해도 네트워크 X 까지 3홉밖에 안걸린다는 사실을 알고,

이 내용을 라우팅 테이블에 업데이트 한다.

이제 네트워크 X 까지 가장 빠른 길인 인터페이스 1 즉, 라우터 B 로 데이터를 보내게 된다.

 

하지만 이 방법은 단점이 있다.

자신의 직접적인 이웃들에게만 정보를 주기 때문에 멀리 떨어진 네트워크의 변화에 반응 하는 속도가 느릴 수 있다.

 

 

이것이 링크 상태 프로토콜이 생겨난 이유다.

링크 상태 프로토콜을 사용하는 라우터는 최상의 경로를 결정하기 위해 보다 정교한 방식을 사용한다.

각각의 라우터가 각각의 인터페이스의 링크 상태를 광고한다.

각 라우터에 대한 정보는 LAN 내부의 모든 라우터에 전파가 된다.

그러면 각 라우터는 훨씬 더 큰 정보 집합을 사용하고 네트워크 에 대해 최적의 경로를 찾기 위해 알고리즘을 실행한다.

 

링크 상태 프로토콜은 많은 메모리와 처리 능력이 필요 되는데,

하드웨어가 강력해짐에 따라 거리 벡터 프로토콜을 점차 안 쓰게 되었다.

 

 

Exterior Gateway Protocol

 

외부 게이트웨이 프로토콜은 LAN 의 엣지의 라우터들 간의 데이터 통신에 사용되는 프로토콜이다.

 

 

IANA 비영리 단체가 IP 주소 할당과 같은 것들을 관리한다.

IANA 는 ASN 이라는 자율시스템 번호 할당을 담당하는데,

AS19604 = IBM 과 같은 형식으로 저장이 되어있다.