센로그

Chapter 21. NETWORK LAYER : UNICAST ROUTING 본문

CS/컴퓨터 네트워크

Chapter 21. NETWORK LAYER : UNICAST ROUTING

seeyoun 2022. 12. 16. 23:17


◆ Unicast Routing

Unicast (1ㄷ1 전달) 시, 실제로 어떻게 라우팅하느냐! 에 관한 것.

 

두 가지 전달 방식이 있다.
  • Direct delivery (직접 전달)
  • Indirect delivery (간접 전달)

 


직접 전달 (Direct delivery) 
=> 한 네트워크 안에 있을 땐 다이렉트로 바로 갈수있음.

보낼 때, 목적지의 IP주소 네트워크 마스크를 보고, 나와 같은 네트워크에 있는지 판단한다.
같은 네트워크에 있다면 목적지의 MAC 주소를 찾아서 직접 전달함(라우터 거치지 않음)

 

그런데 2계층 내에서 전달하는 거라면,2계층 스위치는 MAC 주소만 알고, 3계층 정보인 IP 주소는 모를텐데!?

=> 2계층 ↔ 3계층 정보 교환 가능하게 해주는게 arp rarp프로토콜. (MAC주소와 IP주소 맵핑)
(라우터도 그밑에 2계층 애들 MAC주소가 뭐다~를 알 수 있음)

cmd에 arp /a 치면 이 네트워크의 모든 호스트들의 IP 주소와 MAC 주소 나옴

 

 IP주소랑 MAC주소 맵핑해서, 같은 LAN의 옆 컴퓨터 바로 찾아갈 수 있다!! 

 


간접 전달(Indirect delivery)
=> 다른 네트워크에 있을 땐 라우터를 거쳐서 전달 

 

IP 주소로 라우팅해서 전달함. 어떻게 하느냐를 앞으로 다룰 것.

 


◆ Forwarding

말 그대로, 패킷을 앞으로 보내는 것

라우팅은 길을 찾는 것이고, 포워딩은 실제로 보내는 것

그렇게 하기 위해서는 하나의 호스트 또는 라우팅 테이블을 가지고 있는 놈을 요구한다.

 


포워딩 기법 : Next-hop method
: 다음 홉 라우팅 기법

다음에 어디로 갈지는 다음 홉에 가서 물어보세요~ 하는 방법.

기존의 경로 기반 라우팅(그림의 a)에서는 목적지로 가기 위한 모든 홉을 저장했다.

그러나 이렇게 하면 라우팅 테이블에 너무 많은 정보를 저장하게 되어 메모리가 많이 사용된다.

 

이를 해결하기 위한 방안이 다음 홉 라우팅(그림의 b)이다.

라우팅 테이블에 목적지로 가기 위한 다음 홉의 정보 들어있다.

 

Host A에서 Host B로 가려면, 내 LAN 안에는 없으니 직접 전달은 못 함.
따라서 기본 게이트웨이(default gateway)의 주소로 보냄. (그림의 gateway1)

그러면 이제 gateway1의 MAC 주소와 IP주소를 붙여서 R1으로 감!

 

참고로 게이트웨이마다 각자의 MAC 주소와 IP 주소를 가짐.
그림의 Host A의 NetID와 gateway1의 NetID는 같음. 당연함 같은 네트워크니까~
그림의 R1은 두 개의 게이트웨이 즉, 두 개의 네트워크와 연결되어 있는 것임!

 


 포워딩 기법 : Network-specific method
: 네트워크 지정 라우팅 기법

라우터는 우리 호스트 주소까지는 알 바 아님! 네트워크 주소만 알면 됨

라우팅 테이블에다가 목적지의 호스트가 누군지까지 다 저장(호스트 지정 라우팅)한다면,

같은 네트워크의 다른 호스트로 갈 패킷들의 정보를 일일이 따로 저장해야 함!

 

따라서 좀 더 간편하게, 목적지의 네트워크 주소만 가지고 라우팅하는 기법이 네트워크 지정 라우팅 기법이다.

Net ID로 목적지 네트워크에 도달하고 나서는, 패킷의 헤더에 있던 목적지 Host ID로 목적지 찾아가면 됨!

 


 포워딩 기법 : Host-specific method
: 호스트 지정 라우팅 기법

라우팅 테이블에 호스트의 주소까지 저장하는 방법

 

▷경로 점검과 보안 측면에서 좋음.

 


 포워딩 기법 - Default method
: 기본 지정 라우팅 기법

어디로 갈 지 모르게써? 기본 라우터로 가!

어디로 보낼 지 모를 때, 기본 라우터로 보내는 것.

기본 라우터가 다음에 어디로 갈지 알아서 처리해준다. (기본 라우터의 기본 라우터로 갈수도~?)

앞에서 잠깐 언급했었다.

 

이 예시에 적용해보자면 이렇다.

Host A에서 N2 네트워크로 가려면, R1에다 전달하면 됨.

그러나 N2가 아닌 N3, N4...등의 다른 네트워크로 가려면 어디로 갈 지 모름!

따라서 기본 게이트웨이(default gateway)의 주소를 갖고 기본 라우터로 보냄.

 


■ 비클래스형(Classless)인 경우, 라우팅 테이블

비클래스형이란, ABCDE 클래스를 사용하지 않고 자유롭게 prefix를 정하는 것

클래스형으로 했을 때 주소 고갈 문제를 해결하기 위해 등장함.

 

 

비클래스형 라우팅 테이블에는 마스크, 네트워크 주소, 다음 홉 주소, 인터페이스

이렇게 최소한 4열의 정보가 들어가야 함!

 

 

예시


R1의 라우팅 테이블

마스크가 긴 것부터 넣음.

 

패킷에 담긴 목적지 주소와 Mask를 Bit AND 연산 하면, Network Address가 나올 것임!

라우팅 테이블에 해당하는 네트워크 주소가 있다면 거기로 보내면 됨

 


■ 라우팅 테이블 - Address aggregation
: 주소 집단화

라우팅 테이블의 크기를 줄이기 위한 방법

 

R2에서는 목적지 주소가 140.24.7.0 ~ 140.24.7.255사이에 있는 패킷을 받으면

최종적으로 어느 조직으로 가는 것일지라도 m0 인터페이스를 통하여 전달한다.

 

즉, /26인 경우 /24로 써서 보내면 됨.

 


■ 라우팅 테이블 - Longest mask matching
: 가장 긴 마스크 매칭

마스크를 적용할 때 숫자가 큰 마스크부터 적용함.

/24보다 /26을 먼저 적용해서 라우팅한다는 뜻.

 

R2에 패킷 들어오면, 목적지 주소에 /26 적용해보고 맞으면 거기로 보냄

틀리면 /24 적용해보고 맞으면 거기로 보냄

틀리면 /??? 적용해보고 . . .

. . .다 해봤는데 다 틀리면, default gateway로 보냄!

 


◆ Unicast Routing Protocols

 

 

<라우팅 프로토콜 종류>

 

ㆍIntradomain 내부 기관 내에서 쓰는 프로토콜. AS 내부에서 사용

    - Distance Vector 거리 벡터 라우팅 (ex: RIP)

    - Link State 링크 상태 라우팅 (ex: OSPF)

 

ㆍInterdomain 바깥으로 내보낼 때 쓰는 프로토콜. AS 끼리 연결할 때 사용

    - Path Vector 경로 벡터 라우팅 (ex: BGP)

 


■ AS (Autonomous System)
: 같은 라우팅 프로토콜을 사용하는 집합(영역)

 


■ Distance Vector Routing - RIP 프로토콜
: 거리 벡터 라우팅

라우터 붙여놓으면 지들끼리 정보 교환하는 것.

바로 목적지로 못 가더라도, 누구를 통해서 가면 돼! 라는 정보를 알게 됨.

 

 

가는데 걸린 시간 또는 비용을 cost로 표현하자

A에서 B C D갈 수 있는 cost가 정해져 있다.

못가는 곳(E)은 무한대로,

자기 자신(A)은 0으로 표기함

 

A에서 E로 가는 Cost는 원래 무한대(못 감)였는데C로부터 E로 가는 정보를 받았음.(Cost는 합쳐서 6 )

링크된 라우터들끼리는 라우팅 정보를 공유(계속 연결해서 나가면 끝도 없으니까 최대 16개까지만~)

 

이렇듯 링크된 라우터들끼리 

없는 정보는 채워주고,

만약 다른 라우터한테 받은 거리가 더 짧다(Cost↓)?

그러면 그 정보를 업데이트하면서 이젠 걔 통해서 가라~하는 것임.

 

 

예시 (RIP 프로토콜)

RIP 프로토콜은,

  • Hop 수를 카운팅해 비용을 계산함.
  • 30초마다 라우팅 정보를 업데이트함.

 

업데이트 라는 건 이런거다.

라우팅 테이블에 누구를 통해서 가라는 정보가 포함되어있음

즉, R2에서 130.11.0.0으로 가고싶으면, 거기로 가게 해줄 수 있는 R1으로 보냄!

 

예를 들자면

R1 처음엔 R2R4 정보밖에 없었을 것임.

얘네들로부터 점점 받아와서 라우팅 테이블을 채운 것임!

 


■ Link State Routing - OSPF 프로토콜

주로 기관 내에서 라우터 경로를 설정하는 방법

링크 상태다 알고 있다고 가정.

설계 시점에서 어떤 비용이나 시간(딜레이)를 사전에 다 알았을 때,

라우팅 path는 이렇게 가면 돼! 하고 라우팅 테이블을 다 세팅해놓는 것

(그러나, 새로운 부서가 생기면 또 연결하고, 또 생기면 또 연결하고.. 다 해줘야 함 ㅠ)

 

가장 빨리 갈 수 있는 길을 설계할 수 있음.

이를 위해 다익스트라(Dijkstra) 알고리즘 사용!

 

 

예시 (OSPF 프로토콜)

OSPF 프로토콜은,

  • 링크 상태에 변화가 있을 때마다 즉각적으로 업데이트 함.

네트워크 Topology를 다 알고있고, 비용을 알고 있다. 그러면 최단 경로를 정할 수 있다!


▽ A 에서의 라우팅 테이블

 


■ Path Vector - BGP 프로토콜

=> 서로 다른 AS 간의 경로를 설정하는 프로토콜.

 

개념만 알고 넘어가자.

 

서로 다른 AS에 존재하는 IP주소로도 쉽게 패킷을 전달할 수 있어야 한다!

이걸 가능하게 해주는 게 BGP(Border Gateway Protocol)

 최단 경로 보다는, 정책에 의해 미리 정해진 경로를 선택함.

  • iBGP (internal BGP)
    같은 AS들의 Border Gateway들의 연결을 담당하는 BGP
  • eBGP (external BGP)
    다른 AS들의 Border Gateway들의 연결을 담당하는 BGP

 

Comments