티스토리 뷰

728x90
반응형

본 내용은 재학중인 학교 강의에 개인적인 공부를 더한 흔적입니다. 때문에 제가 조금은 오해한 부분이 있을 수 있습니다. 발견하실 경우 댓글로 남겨주시면 정말 감사하겠습니다 !! (책은 Computer_Networking_A_Top-Down_Approach를 참고했습니다)


참고 : Packet switching vs Circuit switching


Store-and-Forward





패킷 스위칭 네트워크에서는 라우터가 패킷을 온전히 다 수신한 후 저장을 한다. 그런 다음 아웃 바운드 링크(전송하는 쪽의 링크)로 패킷을 내보낼 수 있다. 이 방식이 store-and-forward 방식으로 패킷 스위칭에서는 필수로 이 과정이 시행돼야 한다.

이러한 이유는 패킷의 정보가 헤더 부분에 있고, 이를 열어봐야 하기 때문이다.

때문에 라우터는 

패킷의 모든 비트를 수신 -> 패킷의 헤더 열기 -> 헤더 다시 포장 -> 송신쪽 링크로 내리기 -> 실제 송신

의 과정을 수행해야 하고 이러한 방식이 store-and-forward


여기서 패킷이 라우터에 온전히 다 수신되는 시간을 구할 수 있다.

Source(송신 측)와 라우터사이의 링크가 초당 보낼 수 있는 비트 수를 R bps라 하고, 패킷의 총 비트 수를 L이라 하면 패킷이 라우터에 수신되는 시간은 L/R이 된다. (단, 여기서 비트가 실제 빛의 속도로 링크를 지나가는 시간은 무시)

예를들어 링크가 1초에 100 비트를 보낼 수 있다면 100 bps가 되고, 패킷의 총 비트 수가 100 바이트라 하면

100 바이트 = 800 비트기 때문에 800/100 = 8초가 된다. (실제로는 bps가 훨씬 크겠죠?)


만약 Source에서 Destination 사이에 N개의 링크를 거쳐야 한다면, delay(end-to-end) = N*L/R이 될 것이다. (단, 여기서 R은 실제 링크들의 평군 bps 값이 되야 한다.)



Delay



실제로 패킷이 링크에서 보내지는데 걸리는 delay 말고도 고려해야 할 다른 delay들이 있다.

패킷이 upstream node(수신 되는 쪽의 링크)에서 outbound link(송신할 링크)로 가는 과정에는 queueing delay라는 것이 존재할 수 있다. 이는 만약 패킷이 다 도착하더라도 이전에 도착한 패킷들이 아직 송신 중일 때 발생한다.

패킷들은 도착했을 때 다른 패킷들이 송신 중이라면 queue 형식의 buffer에 대기해야 한다. 따라서 먼저 온 패킷들이 먼저 송신되고, 나중에 온 패킷들은 대기해야 하는 상황이 오고 이 때 delay가 발생한다.

라우터에 발생하는 delay들을 정리해 보면 4가지가 있다.


Processing Delay

패킷의 헤더를 열어 패킷을 검사하고, 패킷을 보낼 위치를 결정하는 데 걸리는 delay다. 요즘은 라우터의 성능이 워낙 좋아서 processing delay가 매우 짧아졌다.

Queuing Delay

패킷이 queue에서 링크로 전송되기를 기다리는 delay다. 이 queuing delay는 상황에 따라 천차만별일 수 있다. 대기하고 있는 패킷이 없는 경우 0이고, 대기하고 있는 패킷이 많으면 그 만큼 길어지게 된다. (단, 무한정으로 delay가 커지는 것은 아니고 실제로는 queue의 크기는 정해져 있으므로 패킷 손실이 발생한다.)

이 queuing delay 때문에 패킷 스위칭 네트워크에서의 총 delay 시간을 에측하기 어렵다.


Transmission Delay

라우터가 이제 패킷을 송신하기 위해 패킷의 모든 비트를 아웃 바운드 링크로 푸시(전송)하는 데 걸리는 delay다. 이는 패킷의 비트 수와 링크의 전송률에 의해 결정된다. (위에서 구한 L/R)

Propagation Delay

비트가 실제로 링크를 타고 전파되는 시간이다. 이는 빛의 속도와 같거나 그보다 조금 작다.

위의 4개의 Delay를 다 합친 시간이 노드 상에서의 Delay(nodal)이 된다.

하지만 종단 시스템간의 d(end-to-end) = N(d(pro) + d(trans) + d(prop))로 queuing delay를 제외한다. 이유는 위에서 말했듯이 예측할 수 없기 때문이다. (N은 거치는 라우터의 개수+1)



Packet Loss



위의 그림을 보면 A와 B가 라우터에 10 Mbps로 패킷을 전송한다. 하지만 라우터는 1.5 Mbps로 수신한 패킷을 다시 송신한다.

만약 A와 B가 보내는 패킷의 양이 많아지면 (트래픽이 많아지면) 라우터의 Queue에 대기하는 패킷이 많아지게 될 것이다. 하지만 queue의 크기는 한정되어 있다. 때문에 queue가 다 차버렸을 경우 그 뒤에 오는 패킷은 손실이 될 수 있다.

때문에 보통 수신받는 쪽의 링크 전송률보다 송신하는 쪽의 링크 전송률이 높아야 한다.


728x90
반응형

'CS > 네트워크 공부' 카테고리의 다른 글

[네트워크] OSI 7 계층 개요  (1) 2023.03.26
[네트워크] 소켓 프로그래밍 개요  (0) 2023.03.26
Network Layer  (0) 2019.05.26
raw socket을 이용한 packet sniffing  (0) 2019.05.06
Packet switching vs Circuit switching  (0) 2019.03.20
댓글