티스토리 뷰

네트워킹

Network Layer

4whomtbts 2020. 6. 21. 04:07

이제까지 다루었던 Transport layer 는 서로 다른 host 에서 동작하는 어플리케이션 프로세스들의 논리적인 통신을 제공하였습니다.

논리적인 통신이라 함은, 서로를 마치 하나의 머신의에서 동작하는 프로세스라고 생각할 수 있을만치 추상화시켜놓은 것이죠.

그래서 네트워크가 어떻게 구성되어있는지(라우터와 링크 구조)들을 알 필요없이 통신할 수 있었습니다.

 

Networl Layer에서는 host와 host사이의 logical 한 communication을 지원해줍니다. 

둘의 차이를 조금 더 구체적으로 보면 

Transport Layer 는 Data가 어떻게 보내질지 결정합니다. UDP 를 쓸지? 아니면 TCP를 써서 congestion control과 flow control 을 제공받을지? 

Network layer는 둘 사이의 논리적인 어드레싱을 제공해서, source에서 destination 까지의 최적의 경로를 찾아서 보내줍니다.

 

Network Layer는 아래의 두 분류로 나눌 수 있습니다.

1. Data Plane

router 중 하나의 input 으로 들어온 datagram(Network layer의 packet)을 어떻게 다른 router의 output link로 내보낼 것인지 등.

2. Control Plan 

datagram이 source에서 destination으로 갈 때 까지 router 와 router 사이에서 어떻게 route 될 지 결정

 

먼저 Data Plane 의 이야기부터 시작하게 됩니다.

Network Layer의 가장 기본적인 역할은 정말 간단합니다. 바로 패킷을 보내는 쪽에서 받는 쪽으로 전달해주는 것 입니다. 

이러한 목적을 달성하기 위해서 2개의 중요한 Network Layer의 기능을 꼽을 수 있습니다.

1. Forwarding 

packet 이 router의 input link로 들어왔을 때, 적당한 output link로 나가야만 합니다.

아마, 이 과목을 듣고있는 컴공생이라면 이 때부터 계속해서 언급되는 router 가 굉장히 신경쓰일 것 입니다 

왜냐하면, 이 부분을 강의하실 때 교수님이 라우터가 도대체 무엇인지 구체적으로 알려주시지 않고 어느 순간부터 

Network layer 강의의 주인공이 되어버리니까요. 그래서 router 가 무엇인지부터 다뤄보겠습니다.

router는 네트워크 장비입니다. 뭐 추상적인 개념이나 소프트웨어가 아닌 손으로 만져지는 장비입니다.

저도 연구실 네트워크를 관리하기 전 까지는 router 를 실제로 본 적이 없었는데, 아래와 같이 생겼습니다.

공유기랑도 비슷하죠? 공유기도 router 입니다. 하지만 단순히 router라고 하기에는 여러 다른 기능도 제공하죠.

공유기를 왜 쓰나요?? 일반적으로 집에 들어오는 외부 인터넷 회선은 하나 입니다. 그런데 집에 컴퓨터가 여러대라면 

하나는 인터넷을 쓸 수 가 없기 때문에, 이 공유기를 이용해서 서로 다른 컴퓨터이지만 밖으로 데이터를 보낼때는 

공유기를 통해서 꼭 두 개의 네트워크를 가진 것 처럼 쓸 수 있게 해주는 장비잖아요? 

router가 바로 그 역할입니다. 외부로 나가게 되는 문이죠. 그래서 내부 네트워크에서 여러 장비들을 switch 나 hub 를

사용해서 내부의 네트워크를 만들어주고(switch 나 hub를 사용하는 이유는 ethernet이 CSMA/CD 방식이기 때문에 collision domain을 나눠주기 위함이죠)  

내부 네트워크에서 라우터를 통해서 다른 외부 네트워크와 통신하게 해주는 장비가 바로 라우터입니다.

그래서, 하나의 외부 네트워크가 다른 곳의 네트워크를 보는 시선은 오직 라우터로 보게 되는 것이지요.

 

아무튼, 그렇기 때문에 라우터는 들어온 패킷을 적절한 곳으로 흘려보내주는 것이 중요하고, 이러한 기능을

forwarding 이라고 부릅니다.

 

2. Routing

Network layer는 패킷이 sender 에서 receiver 로 가는 경로를 결정해주어야 할 필요가 있습니다. 이러한 알고리즘을

routing algorithm 이라고 합니다. 

 

라우터 내부는 어떻게 구성되어 있는가?

ㄱ. Switching fabric 

라우터의 Input port와 Output port를 연결해주는 역할을 합니다.

ㄴ. Routing Processor 

control plane function의 역할을 하며, 라우팅 테이블을 유치하고, 링크상태 정보와, 라우터의 forwarding table을 계산합니다.

 

앞에서 forwarding table 이야기를 했었습니다. 라우터를 잘 모르더래도 forwarding table 이 필요할 것 이란 사실은 쉽게 유추할 수 있습니다. 

라우터는 Destination 으로 forwarding 시켜주어야 하는 역할을 맡고 있으니까요.

그런데,  IP는 구조상 40억개 이상의 IP를 만들 수 있기 때문에 look up 을 bruteforce 방법으로 한다면 매우 곤란할 것 입니다. 

일단 N이 너무 큰데다가, 라우터는 최대한 빠르게 forwarding 해주어야하기 때문이죠. 

그래서 가장 중요한 longest prefix matching rule 을 차용합니다.

longest prefix matching rule 은 이름 그대로입니다. packet 이 가진 destination address에서 가장 긴 prefix를 매칭시키는겁니다.

따라서, 위의 테이블은 아래와 같은 longest prefix table로 바뀔 수 있습니다.

11001000 00010111 00010 은 Link interface 0번으로

11001000 00010111 00011000 은 Link interface 1번으로

11001000 00010111 00011 은 Link interface 2번으로

위의 3개에 해당되지 않으면 Link interface 3 번으로 

왜 이러게 만들어진냐 하면은, 첫 번 째 Destination Address Range 에서 

11001000 00010111 00010000 00000000 은 0번으로

11001000 00010111 00010111 11111111 도 0번으로 

이 둘에서 가장 긴 공통 접미사는 11001000 00010111 00010 임을 알 수 있습니다. 따라서 

Link interface 0번에 대한 longest prefix 는 11001000 00010111 00010 이 되었습니다.

이렇게 packet output port가 결정되면, packet 은 switching fabric 으로 보내집니다. 만약에 다른 포트로 들어온

packet 이 switching fabric을 사용하고 있다면 잠시 block 됩니다. 이렇게 block 된 packet은 queueing 되어서 

switch fabric 이 available 할 때 까지 기다리게 됩니다.

○ Switching fabric

switching fabric 은 라우터의 가장 핵심적인 부분입니다. input port로 들어온 packet이 어떤 output port 로 스위치 시켜주는 주체이니까요.

 

○ Switching via a memory

초기의 라우터는 전통적인 컴퓨터여서, input port 에서 output port 로의 스위칭이 CPU 에 의해서 이루어졌습니다. 

따라서, input/output port가 전통적인 운영체제에서 I/O device로 처리되었습니다.  그래서 packet이 메모리에 

복사된 후에 destination address 를 packt의 헤더에서 뽑아내서 어디로 가야할지를 결정했습니다. 그래서 

메모리의 Bandwidth 가 B라고 하면, 아무리 효율을 높여도 B/2 보다는 작을 수 밖에 없죠(왜냐하면 input port에 메모리를 읽고, output port에 써야하므로 나누기 2) 

○ Switching via a bus 

input port 가 shared bus를 통해서  직접적으로 output 로 나가는 방식입니다.  input port 에 들어온 패킷에 label 을 추가하고 

output port는 자기의 label에 해당되는 packet 을 받아서 내보내는 방식으로 동작합니다. 

예상하다시피, 한 번에 하나의 packet 만 bus 에 탈 수 있습니다. 따라서 switching speed  자체가 bus speed에 결정됩니다.

○ Switching via a interconnection network

single shared bus의 bandwidth 제한을 극복하기 위해서 조금 더 세련된 interconnection network 를 고안하였습니다.

 

얼핏 보아도 어떻게 작동되는지 아실 수 있습니다. 이 방식의 단점은 같은 output port 로 가야하는 서로 다른 input port에서 온 packet 이 있을 때 

둘 중 하나는 기다려야 한다는 점이죠.

 

'네트워킹' 카테고리의 다른 글

Hot potato Routing  (0) 2020.06.22
TCP Congestion control  (1) 2020.06.19
TCP 의 Flow control  (0) 2020.06.19
Transport Layer  (0) 2020.05.26
댓글