Yozzang의 해킹일기 💻
article thumbnail
Published 2022. 6. 4. 00:49
Go-Back-N & Selective Repeat Networking
728x90

이번 포스트에서는 go-back-n과 selective repeat 프로토콜에 대해 다루겠다.

 

기존의 rdt3.0(stop-and-wait)은 패킷을 보낼 때마다 일정한 RTT(Round Trip Time)를 기다려야 하기 때문에 utilization이 상당히 낮다. 즉, 패킷을 하나 보낸 다음에 응답을 기다리는 동안에 아무런 동작도 하지 않기 때문에 그 네트워크의 효율이 낮다는 것이다.

실제로 확인해보면 패킷을 하나 보내는데에 소요한 시간보다 응답을 기다리는 RTT 시간이 더 길다.


Go-Back-N

Go-Back-N - Sender

  • Cumulative ACK: ACK까지 잘 받았다는 의미 (예, 10번까지 잘 받았으니 다음부터는 11번부터 보내줘)
  • Timer: 윈도우의 가장 oldest in-flight 패킷에 설정, 즉 가장 최근에 도달한 ACK 메시지의 다음번부터 시작

Go-Back-N - Receiver

  • 딜레이로 인해 먼저 도착한 패킷을 discard 또는 버퍼에 저장할 수 있다.(개발자 마음)

Go-Back-N in Action

  • pkt1에 대한 ack1만 도착하고 pkt2에 대한 ack2가 타임아웃 되기 전에 도착하지 않을 경우
  • pkt2부터 재전송한다.
  • 그 뒷부터 오는 pkt3, pkt4, pkt5 다 discard 한다.
  • Go-Back-N에서 타이머는 oldest in-flight에 대한 단 하나만 존재한다.

Selective Repeat

Selective Repeat - Sender

  • 세그먼트마다 타이머 소유

 

Selective Repeat - Receiver

  • 순서가 안 맞게 와도 discard X

Selective Repeat in Action

  • pkt1에 대한 ack1까지 잘 도착하여 윈도우를 2로 이동
  • pkt2에 대한 ack2가 오지 않는다.(loss)
  • pkt2에 대한 타이머 시작
  • pkt3, pkt4, pkt5 각각에 대한 ack가 잘 도착한다. 버퍼에 저장
  • pkt2에 대한 타이머아웃
  • pkt2 재전송
  • pkt2에 대한 ack가 잘 도착하면 버퍼에 있는 패킷(2, 3, 4, 5)을 Application layer로 이동

Selective Repeat - Dilemma

  • 해결법: 시퀀스번호 허용치 값 >= 2 * 윈도우 사이즈

'Networking' 카테고리의 다른 글

연결 관리 및 흐름 제어 (TCP)  (0) 2022.06.14
TCP  (0) 2022.06.11
Reliable Data Transfer (RDT)  (0) 2022.05.26
Transport Layer (전송 계층)  (0) 2022.05.06
Distance-Vector Algorithm (거리 벡터 알고리즘)  (0) 2022.05.02
profile

Yozzang의 해킹일기 💻

@요짱

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!