- Network core: packent / circuit / switching / internet structure
- Performance : Loss, Delay, Throughput
- Sercurity
- Protocol layers, service models
- History
1. Network Core : Packet / Circuit / Switching / Internet Structure
1.1 Packet
end system은 서로 message를 교환한다.
sendor가 receiver로 message를 보내기 위해 송신 시스템은 긴 메시지를 packet이라고 하는
작은 데이터 덩어리로 분할한다.
sendor와 receiver 측 사이에서 packet은 통신 링크와 packet switch(router & link-layer switch)를 거치게 된다.
packet은 Transmission rate와 같은 속도로 각각의 링크에서 전송된다.
따라서 출발지 end system 또는 packet switch가 (R비트/초)의 속도로 링크에서 L비트의 패킷을 송신한다면,
그 패킷을 전송하는데 걸리는 시간은 L/R초 이다.
1.2 Store-and-forward Transmission
대부분의 packet-switch는 stor-and-Transmission 방식을 이용한다.
이 방식은 스위치가 다음 링크 혹은 출력 링크로 패킷의 첫 비트를 전송하기 이전에,
전체 패킷을 수신 받아야 전송이 가능하다는 것을 의미한다.
수신 받은 비트들은 버퍼에 쌓인다.
*Router = 입력되는 packet을 출력 링크로 교환하는 것..
EX) 출발지에서 패킷을 송신하기 시작해서 전체 패킷을 목적지에 수신할 때까지 경과 시간을 계산하기
[ 출발지 ------ 라우터 ----- 목적지 ] 형태임.
출발지는 목적지로 전송할 3개의 packet을 가지고 있으며 각각은 L비트로 구성.
전파지연은 무시. 출발지는 시각 0에 전송하기 시작한다.
Solution
: L/R초에 라우터는 이미 첫 번째 패킷이 수신되었고, 출발지에서는 두 번째 패킷을 보내기 시작하며,
2L/R초에는 목적지에 패킷이 하나 도착한 상태이고, 두 번째 패킷이 라우터에 수신된 상태,
출발지에서는 마지막 패킷이 전송되기 시작한 상태이고,
3L/R초에는 목적지에는 패킷 두 개가 수신된 상태, 라우터에는 마지막 패킷이 수신된 상태,
4L/R초에는 마지막 패킷까지 모두 목적지에 수신된 상태이다
일반화 (N개의 패킷을 H개의 링크를 거쳐 보낼 때 걸리는 시간) = (N+H-1) * L/R
일반화 N개의 있을 때 종단 간 지연 = N * L/R
1.4 Forwarding Table
그렇다면 라우터는 어떻게 패킷을 어느 링크로 전달해야 하는지를 결정할까?
바로 Forwarding 과정을 통해서 패킷을 목적지를 찾아간다.
인터넷에서 모든 종단 시스템은 IP 주소를 갖는다.
출발지 end system은 packet을 목적지 종단 시스템으로 보내고자 할 때,
출발지가 packet의 헤더에 목적지의 IP 주소를 포함한다.
이 IP 주소는 계층적 구조이다.
(=IP 주소만 보고 목적지까지 잘 찾아갈 수 있도록 주소를 네트워크 계층과 호스트 계층으로 나눠놓음.)
그래서 Forwarding이 뭐냐면~
패킷이 네트워크의 한 라우터에 도착하면, 라우터에서는 헤더에 붙어있는 목적지의 IP 주소중,
앞 부분만 보고 가장 유사한 포워딩 테이블과 매핑하여 정해진 출력 링크로 패킷을 내보낸다.
* Forwarding table: 라우터에 저장된 [목적지 주소 범위--출력 인터페이스]의 연결 목록.
패킷이 들어왔을 때 어디로 내보낼지 결정하는 유일한 근거 자료.
패킷은 라우터에서 헤더의 IP 주소를 Forwarding Table과 매핑해서 출력 링크로 다음 라우터로 보내는,
이 일련의 과정을 반복해서 목적지에 도착한다.
그렇다면 Forwarding Table은 어떻게 설정될까?
인터넷은 자동으로 Forwarding Table을 설정하는데 이용되는 여러 특별한 Routing Protocol을 갖고 있다.
Routing Protocol은 각 라우터로부터 각 목적지까지의 최단 경로를 결정하고
라우터에 Forwarding Tabled을 설정하는 데 이 최단 경로 결과를 이용한다.
1.5 회선 교환
링크와 스위치의 네트워크를 통해 데이터를 이동시키는 방식에는 circuit switching과 packet switching이 있다.
위의 글까지는 packet switching에 대한 내용이었으니, 이제는 circuit switching에 대한 내용을 설명하고자 한다.
circuit switching 네트워크에서 종단 시스템 간에 통신을 제공하기 위해
경로상에 필요한 자원(버퍼,전송률)은 통신 세션 동안에 확보 또는 예약된다.
다른 말로, 종단 시스템 간이 통신을 제공하기 위해 통신의 경로에서
통신을 위해 필요한 해당 회선의 일정 대역폭을 떼어놓아서,
통신을 위한 고정된 비트 전송율을 보장받는 상태라는 뜻이다.
packet switching 네트워크에서는 세션 메시지가 온디맨드 방식으로 자원을 요청해서 사용하고,
그 결과, 통신 링크에 대한 접속을 위해 큐에서 대기할 수 있으니
circuit switching네트워크는 이의 정반대 방식이라는 것을 알 수 있다.
링트 내 한 회선을 주파수 분할 다중화(FDM) 혹은 시분할 다중화(TDM)로 구현된다.
1.5.1 주파수 분할 다중화FDM
FDM에서 링크를 통해 설정된 연결은 그 링크의 주파수 스펙트럼을 공유한다.
그 링크 안에서 연결되는 동안 각 연결에 대해 주파수 대역을 고정 제공하는 것이다.
다른 말로 하면 하나의 링크 안에서 여러 연결이 자원을 예약하고자 하면,
네트워크 스위치가 각 연결의 주파수 대역을 다르게 고정해서 할당하면,
해당 연결은 통신 세션이 끝날 때까지 정해진 주파수 대역을 보장 받는다.
여기서 자원을 예약하는 주체는 출발지의 종단 시스템이고
자원을 할당하는 주체는 중간에 위치한 네트워크 스위치들이다.
1.5.2 시분할 다중화(TDM)
TDM 링크의 경우는 시간을 반복되는 주기의 단위인 프레임으로 나누고,
프레임 안에서는 각 연결이 정해진 시간에만 데이터를 보낼 수 있게 시간 슬롯을 정해놓고
프레임 단위로 반복해서 데이터를 전송하는 방법이다.
TDM 회선의 전송률은 한 슬롯 안의 비트 수에 프레임 전송률을 곱한 것과 같다.
예를 들어 링크가 초당 8,000 프레임을 전송하고,
각 슬롯이 8비트로 구성된다면 회선의 전송률은 64kbps이다. (1,000bps=1kbps)
packet switching 옹호자들을 circuit switching의 경우에
할당된 회선이 비활용 기간(silent period)에는 놀게 되므로 낭비라고 주장했다.
예를 들어 전화 통화를 할 때 사람이 이야기를 중단하더라도,
사용되지 않는 네트워크 자원(연결 경로상의 링크 주파수 대역이나 슬롯)은
다른 진행 중인 연결이 대신해서 사용할 수 없다는 것이다.
circuit switching에서 종단 간 회선을 설정하고 대역폭을 보존하는 것이 복잡하고
경로에 있는 스위치들 사이의 운영을 조절하는 복잡한 신호 소프트웨어가 필요하다고 지적한다.
회선 교환 네트워크를 통해 hostA에서 hostB까지 640000비트의 파일을 보내는 데 걸리는 시간을 생각해보자.
네트워크의 모든 링크는 24개의 슬롯을 가진 TDM을 사용하고 1,536Mbps 전송률이 가능하다고 가정하자.
hostA가 파일을 전송하기 전에 종단 간 회선을 설정하는 데 0.5초가 걸린다면, 파일 전송에 걸리는 시간은 얼마일까?
1536Mbps = 15360000bps
solution1) 전체 관점으로 문제 풀기
TDM은 전체 시간을 똑같은 간격(슬롯)으로 쪼개서 나눠 갖는 방식이다.
이 링크에는 현재 총 24개의 슬롯이 있기 때문에,
전체 시간 중에서 1/24만큼이 한 회선이 사용할 수 있는 시간이다.
전체 전송률 자체의 의미는 모든 슬롯의 각 전송률을 더한 값이며,
각 슬롯의 전송률은 모두 일정하기 때문에 전체 전송률에서 슬롯의 개수인 24개로 나누면
한 슬롯의 전송률, 즉 한 회선의 전송률이 나온다.
15,360,000 ÷ 24 = 64,000bps ------> 문제에 나온 연결의 전송률
solution2) 회선 하나의 관점
(회선 하나의 전송률) = (한 슬롯 안의 비트 수) * (프레임 전송률=초당 이 회선이 데이터를 보낼 수 있는 기회의 수)
현재 이 공식에서 알 수 있는 것이 아무것도 없음.
한 슬롯 안의 비트 수도 모르고, 프레임 전송률도 모름.
하지만 슬롯이 전체 24개가 있고, 전체 전송률이 1536Mbps이니까
한 회선의 전송률 = 15360000bps ÷ 24 = 64000bps
따라서 전체 파일을 보내는데 걸리는 시간은
640,000 ÷ 64,000 = 10
그런데 hostA가 파일을 전송하기 전에 종단 간 회선을 설정하는 데 0.5초가 걸리기 때문에
10 + 0.5 = 10.5초
1.6 Packet Switching VS Circuit Switching
패킷 교환을 반대하는 사람:
가변적이고 예측할 수 없는 종단 간 지연( 주로 불규칙적이고 예측할 수 없는 큐잉 지연에서 발생) 떄문에
패킷 교환이 실시간 서비스에 적당하지 않다고 주장한다.
패킷 교환 옹호자:
패킷 교환은 회선 교환보다 전송 용량의 공유에서 더 효율적이다.
패킷 교환이 더 간단하고 효율적이며 회선 교환보다 구현 비용이 적다.
예시1) 회선 교환보다 패킷 교환이 더 많은 사용자를 수용할 수 있다.
회선 교환은 자원을 독점한다.
사용자가 데이터를 전송하지 않는 비활동 시간에도 할당된 주파수 대역은 다른 연결이 사용할 수 없다.
그러나 패킷 교환은,
특정 사용자의 비활동 시간동안, 그 남는 대역폭을 데이터가 있는 다른 사용자가 즉시 사용할 수 있다.
모든 사용자가 동시에 데이터를 보낼 확률이 극히 낮다는 통계적 특성을 이용해,
링크를 죽이지 않고도 3.5배 더 많은 사용자를 수용하는 효율성을 보여준다.
예시2) 가용 대역폭의 탄력적 활용
혼자 데이터를 보낼 때 두 방식에서의 전송 속도가 차이 난다는 점에서 패킷 교환이 효율적이라고 주장한다.
회선 교환은 경직된 스케줄링으로, 한 사용자는 오직 자신에게 지정된 1개의 슬롯 시간에만 데이터를 실을 수 있다.
이 경우 나머지 슬롯이 비어 있어도, 하드웨어적 접근이 차단되기 때문에 정해진 속도로만 파일을 전송하게 된다.
그러나 패킷 교환의 경우,
별도의 시간 슬롯 예약이 없기 때문에, 링크가 비어 있다면 온전히 링크의 최대 속도를 전부 사용할 수 있다.
요약
- 회선 교환의 비효율: 정적 할당 방식을 사용하기에, 사용자가 데이터를 전송하지 않을 때 발생하는 유휴 자원을 재분배 할 수 X
- 패킷 교환의 효율: 동적 할당 방식을 활용해, 통계적으로 자원을 공유하여 링크 이용률을 극대화한다.
1.8 패킷 교환 네트워크에서의 지연

그림에서 출발지와 목적지 사이 종단 간 경로의 일부로서 한 패킷이 업스트림 노드로부터 라우터A를 통해 라우터B로 보내진다
우리의 목적은 라우터A에서의 노드 지연 특성을 파악하는 것이다.
패킷이 업스트림 노드로부터 라우터A에 도착하면,
라우터A는 그 패킷에 대한 적당한 출력 링크를 결정하기 위해 패킷 헤더를 조사하고, 선택된 링크로 그 패킷을 보낸다.
*업스트림 노드 : 특정 시점을 기준으로 데이터가 흘러오는 방향에 있는 바로 이전 노드
1) 처리 지연 (Processing delay)
패킷 헤더를 조사하고 그 패킷을 어디로 보낼지 결정하는 시간은 처리 지연에 속한다.
처리 지연은 업스트림 노드에서 라우터 A로 패킷의 비트를 전송하면서 발생하는
패킷의 비트 레벨 오류를 조사하는 데 필요한 시간과 같은 요소를 포함할 수도 있다.
* 비트 레벨 오류 = 물리적으로 비트의 데이터가 뒤바뀐 것
(= 업스트림 노드에서 온 패킷의 데이터가 망가진 곳이 없는지 체크섬과 비교해서 확인하는 시간)
2) 큐잉 지연(Queuing delay)
패킷이 큐에서 링크로 전송되기를 기다리면서 겪는 지연
단순히 말하자면 기다리는 시간이다.
큐잉 지연 시간은 특정 큐에 저장되어 링크로 전송되기를 기다리는 먼저 도착한 패킷의 수에 의해 결정된다.
만약 큐가 비어 있고 다른 패킷이 전송 중이 아니라면 큐잉 지연은 0이 되고,
트래픽이 많고 먼저 도착한 많은 패킷들이 전송 대기 중이면 큐잉 지연은 매우 길어진다.
3) 전송 지연(Transmission delay)
패킥의 모든 비트를 링크로 밀어내는 데 필요한 시간을 의미한다.
만약 그림에서의 패킷의 길이를 L비트로,
라우터 A에서 라우터B까지의 링크 전송률은 Rbps로 나타낼 때,
R은 라우터 B로 가는 링크의 전송률에 의해 결정된다.
이때의 전송 지연은 L/R이다.
4) 전파 지연(propagation delay)
일단 비트가 링크에 전해지면 라우터 B까지 전파되어야 한다.
링크의 처음부터 라우터 B까지의 전파에 필요한 시간이 전파 지연이다.
비트는 링크의 전파 속도로 전파된다.
전파 지연은 두 라우터 사이의 거리를 전파 속도로 나눈 것이다.
공식: d/s ( d 는 라우터 A와 라우터 B 사이의 거리, s는 링크의 전파 속도)
일단 패킷의 마지막 비트가 B노드에 전파되면 이 비트와 앞선 모든 비트는 라우터B의 버퍼에 저장된다.
라우터 B에서 이러한 과정이 다음 노드로 전달되기 위해 반복된다.
(Store-and-Forward 방식)
전체 노드 지연 = 처리 지연 + 큐잉 지연 + 전송 지연 + 전파 지연
1.9 큐잉 지연과 패킷 손실
1.9.1 큐잉 지연
노드 지연 중 가장 복잡하고 흥미로운 요소는 큐잉 지연이다.
그 이유는 큐잉 지연은 패킷마다 다를 수 있기 때문이다.
큐잉 지연의 특성을 묘사할 때, 평균 큐잉 지연, 큐잉 지연의 분산, 큐잉 지연이 어느 특정 값을 넘을 확률과
깉은통계 측정을 일반적으로 이용한다.
언제 큐잉 지연이 크고 언제 미미할까?
이에 대한 답변은 트래픽이 큐에 도착하는 비율, 링크의 전송률, 도착하는 트래픽의 특성, 즉 그 트래픽이 주기에 맞춰서 또는 burst하게 도착하느냐에 의해 주로 결정된다.
a는 패킷이 큐에 도착하는 평균율, R은 전송률(비트가 큐에서 밀려나는 비율), 모든 패킷이 L비트라고 하면,
비트가 큐에서 도착하는 평균율은 La비트/초 이다.
만약 큐가 너무 커서 무한대 비트를 저장할 수 있다고 가정하자.
트래픽 강도, 즉 L*a/R > 1이면, 비트가 큐에 도착하는 평균율이 비트가 큐에서 전송되는 비율을 초과한다.
이 경우에 큐는 끝없이 증가하고 큐잉 지연은 무한대에 도달한다.
따라서 트래픽의 강도가 1보다 크지 않게 시스템을 설계하는 것은 매우 중요하다.
반대로, L*a/R < 1인경우에서는 도착 트래픽의 특성이 큐잉 지연에 영향을 미친다.
만약 패킷이 주기적으로 도착한다면 (하나의 패킷이 L/R초마다 도착한다면,), 큐잉 지연은 없을 것이다.
반면, 패킷이 주기적이 아니라 몰려서(burst) 도착한다면, 상당한 큐잉 지연이 생길 것이다.
N개의 패킷이 동시에 (L/R)N초마다 도착한다고 하자.
그러면 처음에 전송된 패킷은 큐잉 지연이 없다. 그리고 두 번째 전송된 패킷은 L/R초의 지연을 겪는다.
일반화하면, n번째 전송도니 패킷은 (L/R)(n-1)초의 큐잉 지연을 겪는다고 추정할 수 있다.
주기적인 도착에 대한 앞의 두 예는 다소 이론적이다.
일반적으로 큐에 도착하는 process는 random하다.
즉, 패킷의 도착에 전혀 고정된 패턴이 없고, 패킷은 임의의 시간만큼 떨어져서 도착하게 된다.
만약 트래픽 강도가 0에 가까우면, 패킷 도착이 드물고 간격이 멀어서 다음에 도착하는 패킷이 큐에서 다른 패킷을 발견하는 경우가 없을 것이다. 그래서 평균 큐잉 지연은 0에 가까워진다. 반면에 트래픽 강도가 1에 가까우면, 패킷 도착이 전송용량을 초과하여 큐가 생성될 것이다. 도착률이 전송률보다 작아질 때, 큐의 길이는 줄어들 것이다. 트래픽 강도가 1에 접근할수록 평균 큐 길이는 점점 증가한다. 트래픽 강도가 1에 접근할수록 평균 큐잉이 지연이 급속히 증가한다는 사실이다.
1.9.2 패킷 손실
큐가 무한대 패킷을 가질 수 있다고 앞에서 가정했으나... 큐의 용향은 일반적으로 유한 용량을 갖는다.
큐 용량이 유한하므로 트래픽 강도가 1에 접근함에 따라 패킷 지연이 실제로 무한대가 되진 않는다. 대신에 패킷이 도착해서 큐가 꽉 찬 것을 발견하게 된다. 이렇게 패킷을 저장할 수 없는 경우에 라우터는 그 패킷을 버린다!!!! DROP 한다고!!!! 그 패킷을 잃어버린다고!!!! 패킷을 Lost한다고!!!! 이걸 큐에서의 overflow라고 하나보다...
종단 시스템 입장에서 패킷 손실은 패킷이 네트워크 코어로 전송되었으나 네트워크로부터 목적지에 나타나지 않는 것으로 보일 것이다. 손실 패킷의 비율은 트래픽 강도가 클수록 증가한다...아무래도 당연한거겠지...
[종단 간 지연]
출발지에서 목적지까지의 지연을 일반화하고자 한다.
먼저 출발지 호스트와 목적지 호스트 사이에 N-1개의 라우터가 있다고 해보자. 네트워크가 혼잡하지 않으며(큐잉 지연을 무시할 수 있음), 각 라우터와 출발지의 호스트 처리 지연은 d(proc)이고, 각 호스트와 출발지 호스트에서의 전송률은 R비트/초이다. 그리고 각 링크에서의 전파 지연은 d(prop)라고 하자. 이제 노드 지연을 더하여 종단 간의 지연을 얻을 수 있다.
아래 식에서 d(trans) = L/R이고 L은 패킷 크기이다.
[Throughput]
Throughput = 종단 간 처리율
처리율을 정의하기 위해 컴퓨터 네트워크를 통해 호스트A에서 호스트B로 커다란 파일을 전송하는 것을 고려해보자.
어느 한 순간에서의 순간적인 처리율(instantaneous throughput)은 호스트 B가 파일을 수신하는 비율(비율/초)이다.
만약 파일이 F비트로 구성되고 호스트 B가 모든 F비트를 수신하는 데 T초가 걸린다고 한다면,
이때 파일 전송의 평균 처리율(average throughput)은 F/T비트/초이다.
인터넷 전화 같은 애플리케이션의 경우, 낮은 지연과 순간적인 처리율이 지속적으로 어떤 임곗값을 넘는 것이 바람직하다.
파일 전송을 포함하는 다른 애플리케이션의 경우, 지연은 심각하지 않으나 가능한 높은 처리율을 갖는 것이 바람직하다.

위와 같은 그림이 있다고 해보자. (a)경우일 때 서버로부터 client로의 파일 전송에 대한 처리율을 고려하자.
Rs는 서버와 라우터 간의 링크 속도를 나타내고 Rc는 라우터와 client 간의 링크 속도를 나타낸다.
만약 Rs < Rc이면, 서버가 배출한 비트는 라우터를 통해 올바로 '흘러갈' 것이고,
Rsbps의 속도로 client에 도착하여 Rsbps의 처리율을 나타낼 것이다.
반면에 Rs > Rc이면, 라우터는 자신이 수신하는 비트만큼 빠르게 그 비트들을 전달할 수 없을 것이다.
이 경우 비트들을 라우터에서 Rc의 속도로 떠나게 되고, 종단 간 처리율은 Rc가 될 것이다.
(라우터와 client 간의 최대 링크 속도가 Rc이기 때문이다.)
따라서 이 네트워크의 경우, 처리율은 min{ Rc, Rs } = 병목 링크의 전송률이 처리율이 된다.
이제, F비트의 커다란 파일을 server에서 client로 전송하는 데 걸리는 시간으로 F/min{Rc, Rs}의 근삿값을 구할 수 있다.
구체적인 예제로, F=3,200만 비트의 MP3 파일을 다운로드하고 서버는 Rs=2Mbps의 전송률을 가지며 여러분은 Rc = 1Mbps의 접속 링크를 갖고 있다고 가정하자. 이 파일을 전송하는 데 걸리는 시간은 32초다. ( 서버에서 라우터로 가는 링크 속도가 더 빠르지만, 라우터에서 클라이언트로 가는 링크 속도가 느리기 때문에 전체 전송률은 링크 속도가 더 느린 것으로 결정된다)
결론적으로 아무리 라우터가 많고 링크 속도가 빠르다고 하더라도 Average Throughput의 결정 조건은 엣지 라우터에서 엔드 시스템까지의 링크 속도가 전체 흐름을 지배하게 된다.
만약 서버-클라이언트 쌍의 숫자가 늘어나 같은 코어를 지나게 된다면 이들의 코어는 공유 링크가 되기 때문에 서버-클라이언트 쌍의 숫자만큼 코어 링크의 속도를 나누면 코어 공유 링크의 속도가 된다. 그 후에 공유 링크 속도, 서버 쪽 링크 속도, 클라이언트 쪽 속도, 공유링크 속도 세 가지를 비교해서 가장 작은 것으로(병목)으로 Throughput이 결정된다.