[Network] 1-3. Network Core

Park Yeongseo·2024년 6월 18일
0

Network

목록 보기
3/17
post-thumbnail

Computer Networking: A Top-Down Approach, 7th Edition의 번역 및 정리입니다.

네트워크 코어는 인터넷 종단 시스템들을 상호 연결시키는 패킷 스위치 및 링크의 그물망이다.

1. Packet Switching

네트워크 애플리케이션에서 종단 시스템들은 서로 메시지를 교환한다. 메시지에는 무엇이든 들어있을 수 있다. 소스에서 목적지로 메시지를 보내기 위해, 소스는 긴 메시지를 패킷(packet)이라 불리는, 보다 작은 데이터 덩어리로 쪼개며, 각 패킷은 통신 링크와 패킷 스위치를 통과해 순회한다.

Store-and-Forward Transmission

대부분의 패킷 스위치들은 store-and-forward 전송 방식을 사용한다. 이 방식에서 패킷 스위치는 아웃바운드 링크로 패킷을 보내기전에 모든 패킷들을 받아야만 한다.

예를 들어 하나의 라우터로 연결된 두 종단 시스템으로 이루어진 간단한 네트워크를 생각해보자. 소스에는 길이 LL비트의 세 패킷이 있다. 이 중 첫 번째 패킷이 라우터에 도착하기 시작했을 때, 라우터는 이것을 바로 아웃바운드 링크로보내지 않고, 해당 패킷의 나머지 비트들이 모두 도착할 때까지 패킷의 나머지 비트들을 일단은 저장한다. 라우터는 해당 패킷의 모든 비트를 다 받고 나서야 패킷을 아웃바운드 링크로 전송하기 시작한다.

패킷의 전송 속도가 RR bits/sec라 하자. L/RL/R의 시간에 첫 번째 패킷의 모든 비트가 라우터에 도착하게 되고, 마찬가지로 계산했을 때 이 패킷은 2L/R2L/R의 시간에 목적지에 도착하게 된다.

이제 나머지 두 패킷들도 생각을 해보자. L/RL/R 시간에 첫 번째 패킷이 라우터로 전송되면 소스는 바로 다음의 두 번째 비트도 전송한다. 이 패킷은 2L/R2L/R에 라우터에 도착하고 3L/R3L/R에 목적지에 도착한다. 마지막 세 번째 비트도 마찬가지의 방식으로 4L/R4L/R에 목적지에 도착하게 된다.

좀 더 일반화해서, 각각 전송 속도가 RRNN개의 링크로 이루어진 경로로 패킷을 보낸다고 해보자(즉 N-1개의 라우터가 경로 상에 있다). 한 패킷이 소스에서 목적지까지의 도달하는 데에는 필요한 시간 dendtoend=NLRd_{end_to_end} = N\frac{L}{R}이다.

Queuing Delays and Packet Loss

위에서는 두 개의 링크만을 가지고 있는 경우를 생각했지만, 각 패킷 스위치에는 여러 개의 링크가 있을 수도 있다. 패킷 스위치에는 연결된 각 링크에 대한 아웃풋 버퍼(output buffer, output queue)가 있다.

도착한 패킷이 한 링크를 통해 전송되어야 하지만, 해당 링크가 다른 패킷을 전송하느라 바쁜 경우, 방금 도착한 패킷은 아웃풋 버퍼에서 대기해야 한다. 따라서 패킷은 store-and-forward의 딜레이 뿐만 아니라 아웃풋 버퍼에서의 큐 대기 지연(queuing delay)도 겪게 된다.

만약 방금 라우터에 패킷이 도착했는데, 아웃풋 버퍼가 전송 대기 중인 패킷들로 이미 가득 차 있다면 어떻게 될까? 이 경우 패킷 손실(packet loss)이 일어나, 도착한 패킷이나 이미 큐에 들어있는 패킷에 손실이 일어나게 된다.

Forwarding Tables and Routing Protocols

패킷이 어느 한 통신 링크로 들어와 다른 통신 링크로 전송된다고 했다. 그런데 그 패킷이 어떤 링크로 포워딩되어야 하는지는 또 어떻게 알 수 있을까? 패킷 포워딩은 컴퓨터 네트워크의 타입에 따라 달라지는데, 여기서는 인터넷에서 어떻게 포워딩이 일어나는지에 대해 간단히 알아보자.

인터넷에서 모든 종단 시스템은 IP 주소를 가지고 있고, 소스가 패킷을 목적지로 보내려고 할때, 소스는 목적지의 IP 주소를 패킷의 헤더에 포함시켜 보낸다. 우편 주소처럼 이 주소도 계층적 구조를 가지고 있는데, 패킷이 네트워크 내 라우터에 도착하면, 라우터는 패킷의 목적지 주소 일부를 검사해 인접한 라우터로 패킷을 보낸다.

좀 더 구체적으로, 각 라우터에는 목적지 주소를 라우터의 아웃바운드 링크와 매핑시키는 포워딩 테이블(forwarding table)이 있다. 패킷이 라우터에 도착하면, 라우터는 주소를 검사하고, 목적지 주소를 가지고 포워딩 테이블을 탐색해 적절한 아웃바운드 링크를 선택해 패킷을 보낸다.

그런데 아직 남은 문제가 있다. 포워딩 테이블은 어떻게 만들어질까? 이 이슈는 5장에서 더 깊게 다뤄질 예정이지만, 여기서 간단히 얘기하면 인터넷은 포워딩 테이블을 자동으로 만들기 위해 쓰이는 여러 가지 특수한 라우팅 프로토콜들을 가지고 있다. 라우팅 프로토콜은 각 라우터에서 각 목적지로의 최단 경로를 찾고, 이 최단 경로를 이용해 라우터 내의 포워딩 테이블을 구성한다.

2. Circuit Switching

데이터를 링크와 스위치 네트워크를 통해 옮기는 기초적인 방식에는 두 가지가 있다. 바로 서킷 스위칭(circuit switching)과 패킷 스위칭이다. 앞에서 패킷 스위칭에 대해 알아봤으니 이번에는 서킷 스위칭에 대해 알아보자.

서킷 스위칭을 사용하는 네트워크에서는 두 종단 시스템 사이의 통신 세션 지속 시간동안 경로가 예약된다. 패킷 스위칭을 사용하는 네트워크에서 이런 자원들은 예약되지 않고, 세션 메시지는 필요에 따라 자원을 사용한다.

전통적인 전화 네트워크가 서킷 스위칭 네트워크의 대표적인 사례다. 발신자가 수신자에게 어떤 메시지를 보내려 할 때, 네트워크는 발신자가 정보를 보내기 전에 발신자와 수신자 사이의 연결을 수립해야 한다. 전화 통신에서는 이러한 연결을 가리켜 서킷이라 부른다. 네트워크는 서킷을 수립하면서 네트워크 링크들의 일정한 전송 속도도 예약해 놓기 때문에, 발신자는 일정한 속도로 수신자에게 데이터를 보낼 수 있음이 보장된다.

위 그림의 네트워크에서, 네 서킷 스위치들은 링크들로 상호 연결되어 있고, 각 링크들은 네 개의 서킷을 가지기에, 각 링크는 동시에 네 개의 연결을 지원할 수 있다. 호스트들은 각각 하나의 스위치와 직접적으로 연결되어 있고, 두 호스트가 통신하고자 할 때 네트워크는 두 호스트 사이의 전용 end-to-end 연결을 수립한다. 각 링크가 네 개의 서킷을 가지므로, 각 연결은 링크의 총 전송 능력의 1/4정도를 가지게 된다. 예를 들어 만약 인접 스위치 사이의 링크가 1Mbps의 전송 속도를 가지고 있다면, 각 end-to-end 서킷 스위치 연결은 250kbps의 전용 전송 속도를 가지게 된다.

Multiplexing in Circuit-Switched Networks

링크의 서킷은 frequency-division multiplexing(FDM) 또는 time-division multiplexing(TDM)으로 구현되는데, FDM에서는 각 연결에 전용 주파수 대역폭을 분할해 나눠준다. TDM에서는 시간을 고정된 길이의 프레임으로 나누고, 각 프레임을 또한 고정된 수의 슬롯으로 나눈다. 각 슬롯은 오직 하나의 연결을 위해서만 쓰인다.

Packet Switching vs. Circuit Switching

패킷 스위칭과 서킷 스위칭을 서로 비교해보자.

서킷 스위칭의 경우 전송 속도를 안정적으로 유지할 수 있다. 하지만 실제로 데이터가 전송되지 않고 두 종단 시스템 사이의 연결이 유지되고 있는 경우 낭비가 발생하게 된다.

패킷 스위칭에는 여러 변수가 있고, 그 end-to-end 딜레이도 예상하기 어렵기 때문에 실시간 서비스에는 어울리지 않는다. 하지만 패킷 스위칭은 서킷 스위칭에 비해 더 간단하고, 효율적이며, 구현하는 비용도 적게 든다.

지금은 패킷 스위칭과 서킷 스위칭이 모두 널리 쓰이고 있는데, 서킷 스위칭이 패킷 스위칭으로 서서히 전환되고 있기는 하다.

0개의 댓글