저의 velog에 작성된 글은 모두 저의 주관적인 생각 및 이해를 바탕으로 작성된 글이므로
정확하지 않은 내용을 있을 수 있음을 알립니다.
[교재] Computer Networking : A Top-Down Approach 8th
오늘은 지난시간 Network core와 packet switching에 이어 packet loss, packet delay, Throughput에 대해 알아보겠습니다. 해당 파트는 아무래도 계산하는 부분이 있다보니 시험을 준비하시는 분들은 주의깊게 보셔야할 파트라고 생각됩니다.
packet switching에서는 packet loss가 꽤 빈번하게 일어납니다. 사실 이 내용은 저번 시간 초반에 말씀을 드렸던 내용이죠.
특정 위치에서 보내온 데이터 덩어리는 packet이라는 작은 단위로 쪼개지게 되고, 이 packet들을 다른 곳으로 내보내기 위해 router라는 곳을 거치게 됩니다.
router에서는 buffer(빈공간)에 순차적으로 packet을 차곡차곡 쌓이게 되고 packet이 나가는 속도보다 들어오는 속도가 더 빠르면 packet은 어쩔 수 없이 앞의 packet이 다 나갈 때까지 기다려야겠죠.
이때 packet이 줄을 서는 것을 queue라고 표현하는데, 문제는 queue의 용량이 한정적이기 때문에 queue 용량보다 더 많은 packet이 들어오게 되면 어쩔 수 없이 packet을 drop하게 됩니다. 이것을 packet loss라고 합니다.
그렇다면 circuit switching의 경우 어떨까요?
결론부터 말씀드리자면 Circuit switching에서의 packet loss는 없습니다. 이에 대한 이유는 Circuit switching의 작동 원리에 대해 생각해보면 쉽게 해결할 수 있습니다.
Circuit switching의 point는 packet의 최종 목적지만 정해주면 최적경로를 계산하여 router에 packet이 이동할 경로를 미리 알려주고 해당 통신선로를 독점적으로 사용합니다.
이 덕분에 packet이 아주 빠르게 물 흐르듯 전송될 수 있죠. 따라서 packet loss는 없습니다. 하지만 circuit switching은 미리 경로를 잡아두기 때문에, 경로를 사용하지 않으면 자원 낭비가 발생하죠..! (이와 관련된 문제는 저번 시간에 풀어보았으니 확인해보세요!)
본격적으로 Packet delay에 대해 알아보기 전에 여러분께 질문 하나 드리겠습니다!
Circuit switching에서는 packet delay가 있을까요?!
👉 네!! (다시 보고 오세요..)
정답은 "아니요!"입니다. 이유는 간단하죠?! 위에서도 설명 드렸다시피 Circuit switching에서는 packet이 물 흐르 듯 자연스럽게 이동하기 때문에 packet delay, packet loss 모두 없습니다.
따라서 Packet delay는 packet switching에서만 다루도록 하겠습니다!
위의 사진과 같이 packet delay는 총 4개로 나눌 수 있습니다.
이제부터 하나하나 알아보도록 하겠습니다.
packet의 destination address를 확인하는 데 걸리는 시간
packet switching에서 router는 packet header를 열어보고 그 값에 따라 output link가 정해진다고 저번 시간에 말씀드렸습니다. processing delay는 packet이 router에 도착하고 packet의 header를 열어 destination address를 확인하는 데까지 걸리는 시간을 의미합니다.
n번째 packet이 transmission 되기 전까지 걸리는 시간
packet loss에서 언급드렸다시피 packet이 나가는 속도보다 들어오는 속도가 더 빠르면 buffer에 packet이 차곡차곡 쌓이고 쌓였던 packet이 transmission되기 위해 기다리는(줄 서있는) 시간을 의미합니다.
예를 들어 packet 3개가 router에 들어와 processing을 모두 거쳤다고 가정해봅시다. 1번째 packet은 queueing delay 없이 바로 transmission 되겠지만 2번째 packet은 1번째 packet이 transmission 될 때까지 queueing delay를 갖게 됩니다. 3번째 packet은 1, 2번째 packet이 모두 transmission 될 때까지 queueing delay를 갖겠죠?!
packet이 propagation(전파)되기 위해 link로 올라가는 데 걸리는 시간
queue에서 온 packet은 다른 Network로 전파되기 위해 먼저 link에 올라갑니다. transmission delay는 queueing delay를 모두 마친 packet이 queue에서 link로 올라가는 시간을 의미합니다.
transmission delay에 대한 계산은 packet length(bits)(이하 L)과 link transmission rate(bps)(이하 R)를 이용해 계산할 수 있습니다.
link는 packet이 이동할 수 있는 pipe인데, 그 pipe는 소화할 수 있는 양이 정해져 있겠죠?(한 번에 욱여넣으면 막히는 것처럼..) 그 pipe에 얼마나 많은 양이 입구로 들어갈 수 있느냐! 즉 packet length를 link transmission rate로 나누면 되기 때문에,
transmission delay = L / R
로 계산할 수 있습니다.
link에 올라온 packet이 실제로 전파되는 데 걸리는 시간
link로 올라온 packet은 이제 다른 Network로 전파됩니다. A라는 Network에서 B라는 Network로 전파한다고 가정할 때 packet이 A부터 B까지 도달하는 데 걸리는 시간이 propagation delay입니다.
propagations delay에 대한 계산은 비교적 직관적입니다. "거리 = 속력 X 시간" 이 식 다들 아시죠?! 이 식에 대입하면 A부터 B까지 가는데 걸리는 시간은 A부터 B까지의 거리를 속력으로 나누면 됩니다. 즉 거리를 d라고 하고 속도를 s라고 하면
propagation delay = d / s
로 계산할 수 있습니다.
(전제 1) caravan의 propagate 속도는 100 km/hr 입니다.
(전제 2) toll booth의 각 car에 대한 service time(transmission delay)은 12 sec입니다.
여기서 car는 bit, caravan(10대의 car)는 packet으로 가정할 때
Q. caravan이 두 번째 toll booth까지 도착하는데 걸리는 시간은 얼마일까요?
우선 무엇을 구해야하는지 생각해보면 car는 모두 service 받기 전이기 때문에 service time + propagate time을 하면 두 번째 toll booth까지 가는데 걸리는 시간이 계산될 것 입니다.
service time (transmission delay)를 먼저 계산해보면
12(service time) + 10(cars) = 120 sec = 2 min
propagate delay는 100 km/hr의 속도로 100 km를 가므로 1 hr이 걸립니다.
즉, 최종적으로 걸리는 시간은 service time + propagate time = 2 min + 1hr = 62 min이 나옵니다.
같은 상황에서 다른 전제를 가지고 다른 문제를 풀어보겠습니다.
(전제 1') caravan의 propagate 속도는 1000 km/hr 입니다.
(전제 2') toll booth의 각 car에 대한 service time(transmission delay)은 1 min입니다.
Q. 모든 car가 첫 번째 toll booth에서 service 받기 전에 두 번째 toll booth로 차가 도착하나요?
이 문제를 풀기 위해서는 첫 번째 차가 두 번째 toll booth에 도착하는 시간과 10대의 차가 첫 번째 toll booth에서 service 받는 시간을 비교해보면 됩니다.
첫 번째 차가 두 번째 toll booth에 도착하는 시간을 계산해보면 service time은 1 min, propagate time은 1000 km/h의 속도로 100 km를 가기 때문에 1/10 * 60(min) = 6 min입니다.
따라서 첫 번째 차가 두 번째 toll booth에 도착하는 시간은 7 min.
반면에 모든 차가 첫 번째 toll booth에서 service 받는 시간은 10분입니다.
즉, 모든 차가 서비스 받기 전에 첫 번째 차는 이미 두 번째 toll booth애 도착해 있을 것입니다. 조금 더 예상해보면 총 3대의 차가 1번 째 toll booth에 남아있겠네요!
R을 link bandwidth(대역폭, link의 두께), L을 packet length, a를 average packet arrival rate라고 생각하면 La를 packet input rate라고 생각할 수 있으므로 input rate를 arriver rate로 나누면 delay 정도를 유추할 수 있습니다.
그림에 보이는 것 처럼 La / R이 0에 가까우면(들어오는 packet이 없음) queueing delay는 0에 가까울 것입니다.
반면에 La / R이 1에 가까우면 들어오는 packet이 arrival rate와 거의 같다는 것을 의미하므로 queueing delay가 무한히 높아지게 됩니다.
드❗️ 디❗️ 어❗️
오늘의 마지막 주제인 Throughput에 대해 알아보겠습니다.
Throughput에 대한 개념은 비교적 간단합니다.
Throughput : sender에서 receiver로 bit를 전송하는 속도
예를 들면 위의 사진에서 bit을 Rs의 속도로 옯길 수 있는 pipe와 Rc의 속도로 옮길 수 있는 pipe가 있다고 합시다.(Rs < Rc) 이때 sender에서 Rc의 속도로 보내면 Rs가 감당을 못하겠죠?! Rs의 속도로 보내여 두 pipe 모두에서 bit을 옮길 수 있습니다.
그렇다면 문제를 한번 봐볼까요?
1번의 경우 정답은 Rs, 2번은 Rc가 됩니다. 쉽죠?! 눈치 채셨겠지만 throughput은 link의 rate 중 minimum 값이 throughput이 됩니다!
그런데 하나의 의문점이 듭니다. Bandwidth와 Throughput의 차이점은 뭘까요?
바로 '동시성' 에 차이가 있습니다!
Bandwidth는 packet(bit)을 동시에 보낼 때 얼마나 많은 양을 보낼 수 있느냐!
Throughput은 초당 실제로 처리되는 packet의 양을 의미합니다.
다음의 경우에는 어떻게 될까요? server와 Rs, client는 Rc의 rate를 가진 bottleneck으로 연결되어 있고, 그것을 하나의 bottleneck으로 묶어서 처리합니다. 가장 두꺼운 bottleneck의 rate가 R이라고 하고 여기에 10개의 link가 묶여있다고 가정하면 이상적인 경우에 R에서 하나의 link는 1/10만큼 할당받게 됩니다.
따라서 하나의 link의 throughput은 min(Rs, Rc, R/10)이 됩니다!
오늘도 따라오시느라 수고 많으셨습니다.. 꽤 내용이 길었네요! 오늘 진행한 내용은 시험에 내기 쉬운 내용이니 주의깊게 보시는게 좋을 것 같습니다. 다음 내용은 security에 관한 내용을 찍먹해 볼 예정입니다. 수고했습니다 :)