[CN] 네트워크의 구조와 동작
Packet/circuit switching, internet structure과 loss, delay, throuput, Protocol layers
Reference Computer Networking A Top-Down Approach 7th-Edition
Network core
수많은 network edges을 연결하는 core, 중심이 되는 요소를 network core라고 하며, 일반적으로 packet-switching 방법을 이용한다. 정보의 전달 단위인 packet을 서로 연결된 routers끼리 주고 받으며 출발지부터 목적지까지 전송하는 것이다. 이 때 link의 모든, 최대 capacity(transmission rate)를 사용해서 전송한다.
Packet-switching
Store-and-forward
말 그대로 저장 후 전송 방식이다. transmission rate는 주로 R로 나타내며, bps(bit per second) 단위를 사용한다. R bps면 1초에 R bit를 전송하는 것이다. propagation delay가 0이라고 가정하고, 만약 L bit를 R의 전송률로 보내고자 한다면
- one-hop delay: L/R sec
- end-end delay: 2L/R sec 가 걸린다.
Queueing delay, Loss
Queue는 마치 줄을 선 것처럼 대기한다는 뜻이다. 병목 현상(bottle-neck)이라고 하며, 도로가 혼잡한 상황과 비슷한다. packet이 전달되는 과정에서 router에서 쌓이면 늦게 들어온 packet은 앞의 packet이 빠져나갈 때까지 기다려야 한다.
이 과정에서 쌓이고 쌓이다 보면 몇몇 packet이 버려지는 경우가 있다. 이를 packet loss라고 한다.
2 Key functions
-
Routing: 경로(route)를 설정하는 것
Routing Algorithms: 네트워크 혼잡도를 고려하여 출발지부터 목적지까지의 경로를 어떻게 설정하느냐에 대한 알고리즘이다
-
Forwarding: 어떤 router로 packet이 들어왔을 때 적절한 다음 router를 고르는 것
각각의 router는 forwarding table이 존재한다
Circuit-switching
일반적인 현대 네트워크에서는 잘 사용하지 않고 옛날 전화에서 자주 사용하던 방식이다. Link를 예약하는 느낌을 이해하면 쉽다. 통신자원을 share하지 않고 유일하게 이용할 수 있다. 언제든 사용 가능하다는 장점이 있지만, 그만큼 비효율적이다.
- Frequency Division Multiplexing(FDM): frequency를 나눠서 여러 user에게 서비스
- Time Division Multiplexing(TDM): time을 잘게 쪼개서 여러 user에게 서비스
Packet-switching vs Circuit-switching
1 Mb/s의 link에서 각 user가 전송 시 100 kb/s을 요구하고, 전체 시간의 10%만 active하다면
-
Circuit-switching: 10명 지원 가능. 1 Mb/s의 link를 10개로 나누어 예약해 둔 느낌. 하지만 90%의 시간은 놀고 있는 것으로 볼 수 있다.
-
Packet-switching: 35명이 사용한다고 했을 때, 10명이 동시에 사용할 확률은 0.04%보다 작기 때문에 훨씬 효율적이다. 대부분의 시간은 놀다가 보낼 때 확 보내는 bursty data의 경우에 유용하다. 하지만 packet delay나 loss가 발생할 여지는 존재한다. 따라서 reliable data transfer이나 congestion control과 관련된 protocol들이 개발되었다.
-
이론적으로 대역폭이 한정되어 있기 때문에 완벽한 circuit-like behavior를 구현하는 것은 아직도 현 IT 시대에 풀어나가야 할 과제라고 볼 수 있다.
예를 들어 자율주행 차량 간 통신이라고 하면, 0.01초 안에 data를 교류해야하는데, packet-switching으로는 구현하기 매우 어렵다.
Internet Structure
Network of Networks
-
Access ISP(Internet Service Providers)
만약 다른 access net과 연결하고자 한다면 ISP들끼리도 연결이 되어 있어야 한다. (예외로는 회사 내부망이나 군대에서 사용하는 내부적으로만 연결된 네트워크인 Intranet이 있다.) 하지만 모든 ISP networks를 연결하는 것은 너무 복잡해지므로 사실상 불가능하다. 그래서 사람들은 global ISP를 core삼아 퍼져 있는 구조를 생각해냈다.
-
이렇게 되면 access network들이 global ISP에 돈을 내게 되고, 돈이 되니까 여러 큰 규모의 ISP들이 생겼다. 그리고 자기들끼리도 연결해야 하니까 IXP(Internet eXchange Point)라는 거대한 개념과, 지역별 연결을 담당하는 regional network 또한 생겨났다.
우리나라로 따지면 SK broadband, KT 등에서 망 사업을 하고 있다.
google, youtube 등과 같은 글로벌 대기업들에서는 자사의 네트워크를 보유하여 user들에게 효율적으로 보급하고 있다. 이를 Content Provider Network라 한다.
Performance
앞서 설명한 대로, queue로 인한 router 병목 현상으로 인해 data transfer 과정에서는 loss나 delay가 발생할 수 있다.
Packet Delay
packet delay를 유발하는 다음과 같은 4가지 요소가 있다.
-
nodal processing: router내부에서 processing에 걸리는 시간.
checking bit errors, determining output link 등이 있다.
보통 그렇게 큰 시간이 걸리진 않는다. (< msec) -
queueing delay: packet이 router에 도착했을 때 앞에 기다리는 다른 packet들이 많으면 생기는 지연시간.
-
a: average packet arrival rate
R: link bandwidth(bps)
L: packet length 일때, 다음을 만족한다.
혼잡도에 따라 달라진다. Queueing은 관련된 이론, 책들만 봐도 알겠지만 일부 대학원에서는 하나의 과목으로 가르칠 정도로 정말 많이 연구된 분야이다.
-
-
transmission delay: packet을 전송할 때 소요되는 시간. L/R
L packet length (bits)
R link bandwidth (bps) -
propagation delay: 물리적으로 신호가 도달하는 데 걸리는 시간. d/s
d length of physical link
s propagation speed빛의 속도도 정해져 있는 것이므로 아주 먼 거리에서는 불가피하게 걸릴 수 밖에 없다.
Main delay 요소는 상황에 따라 바뀐다. 우리는 이를 Caravan analogy를 통해 이해할 수 있다.
100km/h로 달리는 10대의 차가 서로 몰려다닌다고 생각하자. (10 bit packet)
- 차 한 대가 톨게이트를 통과하는 데 12초가 걸린다. (bit transmission time)
- 10 대가 모두 한 톨게이트를 통과하려면 10 * 12 = 120초가 걸린다.
- 마지막 차가 첫번째 톨게이트에서 두번째 톨게이트까지 가는 시간은 1시간이 걸린다.
- 총 62분이 걸린다.
이 경우에는 propagation delay, transfer delay 가 주 원인이 된다.
그렇다면 이번에는 차들이 너무 빨라서 1000km/h로 달리고, 톨게이트를 통과하는 데 1분이 걸린다고 가정하자.
- 첫번째 차는 첫 톨게이트를 지나는 데 1분, 100km를 달려 두번째 톨게이트에 도착하는데 6분
- 총 7분이 걸린다.
- 하지만 남은 차들이 미처 첫 톨게이트를 통과하기도 전에 이미 첫 차는 다음 라우터에서 기다린다.
이 경우에는 processing 시간이 원인이 된 것이다.
결국 주어진 상황마다 delay 요소는 달라진다
요즘은 인터넷이 발달해서 큰 딜레이를 느낄 일은 거의 없다. 가끔 게임을 할 때는 ‘핑’이라는 개념이 존재해서 끊김 현상이 발생하기도 한다. 이런 delay들을 측정하기 위한 traceroute라는 program이 있다.
Packet Loss
- queue(buffer)는 한정된 capacity를 갖고 있다.
- Loss: 가득 찬 queue에 새로운 packet이 도착하면 해당 packet은 사라진다.
- lost packet은 차후 이전 node에 의해 retransmit 될 수 있다.
Throughput
Instantaneous 순간 전송률
Avarage 기간 전송률
-
주어진 단위 시간 동안 몇 bit를 보냈느냐, 즉 전송률을 의미한다.
-
출발지와 목적지 사이 모든 link를 고려하여 구한다.
-
이 말인 즉슨 end-end path 상에 많은 통신 link중 가장 전송 속도가 느린 link에 병목 현상이 생긴다는 것 (bottle-neck link)
실제로 naver 등의 사이트는 매우 빨리 load 되지만, 만약 일반적으로 많이 사용하지 않는 외국 사이트의 경우 그 근처까지 아무리 빠른 속도로 데이터를 보내더라도 그쪽의 링크에 전송률이 낮다면 결국 전반적으로 throughput은 느려지게 된다.
-
Network Core의 경우 용량이 크지만 각각의 link가 용량이 작아서 보통 edge에서 병목 현상이 생긴다. 반대인 경우도 가능하긴 하지만 일반적으로 core는 크게 설계한다.
Protocol Layers
앞서 배운 수많은 구조들을 간단하게 정리할 수 있는 계층화 방법이다. Internet protocol stack은 다음과 같이 크게 5가지 Layer로 나눌 수 있다.
-
Application: 인터넷, 웹 서핑 등에 사용하여 요청 신호를 받는 protocol
FTP, SMTP, HTTP, HTTPS
-
Transport: application layer에서 생성된 정보를 받아 전송 가능한 형태로 변환. process-process data transfer
TCP, UDP
-
Network: data를 어떤 경로로 전달할 것인지 결정
IP, Routing protocols
-
Link: data를 근처에 있는 다른 node들과 어떻게 통신할 것인지 결정
Ethernet, 802.111(WiFi), PPP
-
Physical: 유, 무선 링크를 통해 0, 1 비트 전송
“On the wire”
일반적으로는 위의 5개의 protocol로 구성하지만,
ISO/OSI Reference model을 통해 7개로 나눌 수도 있다. 추가되는 2개는 다음과 같다.
- Presentation: 거의 application level에서 가능함. data interpreting 등을 실행
- Session: 동기화, 데이터 복구. 마찬가지로 최근에는 필요하면 application level에서 개발자가 직접 구현 가능
Encapsulation
Application layer에서 보내고자 하는 message가 각 layer를 거치며 header가 하나씩 붙게 되는데, 이 모습이 마치 한 겹씩 감싸 전송하는 것과 유사하여 encapsulation이라 부른다.
이 message가 switch, router를 지나 destination에 도착하면 겹겹이 싸 놓은 모든 캡슐을 벗겨내며 기존의 message를 수신하게 된다.
이렇게 복잡한 것을 인류가 어떻게 만들어 냈는지 참 신기하다. 앞으로는 각각의 Layer에 어떤 기능들이 있고, 어떤 protocols로 구성이 되는지 알아볼 예정이다.