[Computer Network] - Delivery & Routing

오현석·2024년 9월 24일

Computer Network

목록 보기
5/25

Delivery

Delivery : 실제로 IP 패킷을 물리적으로 전송하는 것.

  • Connectionless와 Connection-oriented 중 IP는 Connectionless 방식이다. 그저 패킷을 전달만 하는 방식이다.

Direct delivery

전달자가 같은 Network에 있는 host에게 패킷을 전달하는 것을 말한다. 즉, 다음 hop이 같은 네트워크에 있는 Destination host일 경우를 말한다.

Indirect delivery

Destination으로 가기 위해 같은 네트워크에 있는 hop으로 이동하는 것을 말한다.

Routing

Routing : Destination까지 가기 위한 경로를 정의하는 것으로 IP 패킷이 들어오면 이 패킷을 어느 인터페이스로 보내줄 것인지를 결정하는 과정이다.

Routing methods

Next-hop routing

Routing Table이 모든 Route 정보를 가지고 있는 것이 아니라 다음 Next hop의 정보만 가지고 있는 구조이다. 그래서 어떤 패킷을 보내려고 할 때, "Next hop으로 이걸 전달하면 Next hop에서 알아서 잘 보내주겠지" 라고 생각하여 전달하는 것이다.
이렇게 되면 모든 Route 정보를 저장하지 않기 때문에 중복된 정보가 줄어들어 Table의 크기가 줄어드는 장점이 생긴다.

Network-specific routing

Routing Table이 엔트리를 가질 때 모든 Host에 대해 엔트리를 가지는게 아니라 같은 Netid를 가지는, 즉 같은 네트워크에 있는 host들에 대해 각각 정의하지 않고 그냥 Network 단위로 바라봐서 패킷을 Next Hop으로 전달하는 방식이다.
단순히 말하면 호스트들을 하나의 네트워크 단위로 묶어서 라우팅 테이블 엔트리로 가지는 것이다.
그림으로 보면 A, B, C, D는 같은 N2라는 Network에 속해있기 때문에 N2로 갈 수 있는 R1으로 패킷을 전달하겠다는 내용만 담으면 훨씬 Routing Table이 간결해진다. 엔트리의 개수는 Class A 기준으로 최대 (2^24 - 2)개의 엔트리를 가지다가 1개로 줄어들게 되는 것이다.

Host-specifit routing

Network-specifit routing으로 호스트들을 하나의 네트워크 단위로 묶어서 정의했지만, 해당 네트워크 내에 있는 특정 host에 대해서는 Routing을 따로 설정하고 싶은 경우에 사용한다. 가령 특정 host로 가는 트래픽이 너무 많아 장애가 발생할 것 같다면 해당 host로 가는 트래픽의 경로는 다른 라우터를 거치도록 설정할 때 사용한다.
그림에서 보면 Host B는 N3에 속해있어 R3를 통해 Host A의 패킷을 전달받지만, R1과 R2를 거쳐서 전달하고 싶다면 해당 Routing Table에서는 Host B에 대한 Next hop을 R3가 아닌 R1으로 설정하는 것이다.

Default routing

Routing Table에 따로 정의되지 않은 Destination들을 처리하기 위한 방법으로 Network address와 마스킹값을 0.0.0.0으로 표시한 엔트리를 Routing Table이 가장 아래쪽에 가진다.

Routing Table 종류

Static routing table

사람이 직접 Routing table에 엔트리를 입력하는 방법이다. 이는 수동으로 입력했기 때문에 네트워크 환경이 바뀌었을 때 자동으로 수정되지 않는다. 즉 관리자가 이 테이블을 직접 수정하면서 관리해야 한다.

Dynamic routing table

Dynamic routing protocol을 이용해서 라우터들끼리 서로 정보를 주고 받아 Routing table을 만드는 방법이다. 이는 네트워크 환경이 바뀌었을 때마다 자동으로 엔트리들도 수정된다는 장점이 있다.

Routing Table

이런 항목들로 엔트리가 구성되게 된다. 여기서 주로 필요한 핵심 정보들은 Mask(Network address를 알 수 있음), Destination address, Next-hop address 이 3개이다. 나머지는 부가적인 정보들이다.

Flags
U(up), G(Gateway), H(Host-specifit), D(Added by redirection), M(Modified by redirection)

Routing module

패킷을 받았을 때의 라우팅 동작이다.

  1. IP 패킷을 받는다.

  2. Routing table의 각 엔트리와 비교한다.

    1. 엔트리의 Mask 값을 패킷의 Destination address에 적용시킨다.
    2. 패킷의 Destination address에 mask를 적용시킨 값을 엔트리에 있는
      Destination address와 비교한다
    3. 값이 일치하면 해당 엔트리에 있는 Next-hop address로 패킷을 보낸다.
    4. 값이 일치하지 않는다면 다음 엔트리와 비교를 이어간다.
  3. 모든 엔트리에 대해 값이 일치하지 않는다면, 패킷을 discard하고 ICMP 에러 메시지를 보낸다.

Default routing으로 인해 모든 엔트리에 대해 값이 일치하는 경우는 거의 없지만, 상위 계층의 Router에서는 Default routing이 적용되어 있지 않는 경우도 있기 때문에 에러가 날 수 있다.

Example of routing

다음과 같은 예시 네트워크가 있다고 해보자. R1이 속해있는 네트워크는 Subnetting 되어 있는 상황이다.

R1에 대해서는 이렇게 테이블이 생긴다. 여기서 Mask값이 255.255.255.255로 구성된 부분은 host-specific routing을 적용한 부분이고, 0.0.0.0은 Default routing이 적용된 부분이다.
또한, Next hop에 값이 없는 부분들은 R1에 직접적으로 연결되어 있기에 다음 hop이 존재하지 않는 것이다.

R1이 Destination address가 192.16.7.14를 가지는 패킷을 가진 상황을 생각해보자. 여기에 Mask값을 적용시킨 값이 Destination과 같은 부분은 192.16.7.0과 0.0.0.0 2개이다. 이럴 경우에는 Mask값에 1의 개수가 많은 곳으로 패킷을 보낸다. 이를 Longest Prefix Matching 이라고 한다.

R1에 Destination address가 193.14.5.192를 가지는 패킷이 들어온 상황이라면 이 패킷을 어디로 보내야할 지도 생각해보자.

R3와 R5에 대해서도 Routing Table을 만들어보자.

R3의 Routing table

MaskDestinationNext-hop
255.255.255.0192.16.7.0-
255.0.0.0111.0.0.0-
255.255.255.0194.17.21.0192.16.7.52
255.255.255.0193.14.5.0111.25.19.20
0.0.0.00.0.0.0111.30.31.18

이렇게 Subnetting 된 네트워크는 어차피 외부에서는 Subnetting 유무를 모르기 때문에 그냥 R1에 보내주기만 하면 알아서 잘 보내줄거라고 생각하고 하나로 만든다.

R5의 Routing table

MaskDestinationNext-hop
255.255.255.0192.16.7.0-
255.255.255.0194.17.21.68-
0.0.0.00.0.0.0192.16.7.5

이 경우에는 111.0.0.0이나 193.14.5.0 등의 네트워크들은 어차피 R3나 R4 라우터를 거쳐야 하기 때문에 여기서는 R3 라우터를 Default Router로 취급하여 이렇게 Routing table을 만들 수 있다.

profile
다함께 성장하는 개발자 세상을 꿈꾸는 MLOps 엔지니어입니다😁 작성 당시 제 생각의 흐름을 독자 모두가 공감하고 이해할 수 있게 적으려고 노력합니다. 조언이나 질문은 언제든 환영입니다!

0개의 댓글