본문 바로가기
📝Computer Science/network

전송계층(1) _ GBN, Selective Repeat

by haegomm 2023. 7. 9.

 Pipelined Protocols 

  • packet 하나 보내고 피드백 packet 받을 때까지 대기해야한다는 RDT의 문제점을 TCP는 한 번의 전송에 여러 packet을 pipeline을 통해 왕창 보내는 방법으로 문제를 개선하고 있다
  • sender
    • data packet (:≡✉️✉️✉️✉️✉️
  • receiver
    • ack packet ✉️✉️✉️✉️✉️≡:)

⇒ utilization(네트워크 활용)을 높일 수 있음

 

신뢰성 있는 파이프라인 프로토콜 구축 방법

    1️⃣ Go-Back-N

    2️⃣ Selective repeat


 Go-Back-N 

  • window size를 정하여 해당 수만큼 packet 전송
    • 윈도우 크기(window size): feedback을 받지 않고 보낼수 있는 허용된 packet 숫자
  • sender가 보낸 packet을 모두 잘 받았으면 receiver는 지금까지 누적된 packet에 대한 피드백 보냄
  • timer 시간 내에 feedback을 받지 못하면 window N 사이즈의 packet을 전부 재전송
  • ACK(n) _ cumulative ACK
    • RDT에서의 ACK(n) ⇒ seq# n packet을 잘 받았다는 응답
    • Go-Back-N 에서의 ACK(n) ⇒ n의 ACK을 잘 받았다는 응답

 

⚠️ 발생할 수 있는 문제점

→ 패킷 유실 시 loss packet부터 window size내 모든 packet 재전송

  • pkt 2가 유실된 상황
  • pkt 2를 기대하고 있던 receiver은 잘 전송된 pkt 3과 pkt 4를 버림
  • ACK 2가 오지 않아 timeout 발생 (현재 ACK 1까지 받았으므로 sender의 window size는 2,3,4,5)
  • sender는 window 내의 모든 packet 재전송
    • window에 있는 packet들은 버퍼에 저장하고 있어야함
      • window 안에 있는 packet들은 sender가 받았는지 안 받았는지 모르는 애들
      • 재전송해야 할 수도 있으므로 가지고 있어야함

 Selective Repeat 

Selective Repeat 상에서 sender와 receiver의 연속적인 packet window

 

  • 받지 못 한 packet에 대해서만 선택적 재전송
  • GBN에서는 sender만 상태를 가졌지만, Selective Repeat에서는 sender와 receiver가 서로의 packet state list를 갖게 됨
  • GBN은 ack-yet acked인 불연속면 한 군데 Selective Repeat은 ack-yet ack인 불연속면 여러군데임

pkt 2 loss

  • receiver는 pkt 0 , pkt 1은 잘 받았으니 application layer에 전달
  • sender는 pkt 2 가 timeout이 나기 전까지 window size에 포함될 수 있는 packet 전달
  • pkt 2 타임아웃 발생
  • pkt 2만 재전송
  • receiver는 유실된 pkt 2를 잘 전달 받을 때까지 버퍼에 담고 있다가 pkt 2를 받으면 순서대로 packet을 정리하여 application layer에 전달

⚠️ 딜레마

  • receiver가 전송한 ACK가 모두 유실된 경우
    • sender는 ACK를 받지 못했으므로 0번부터 재전송
    • receiver은 이미 window를 3 0 1로 옮김
    • receiver 입장에서는 pkt 0이 재전송된 패킷인지 새로운 패킷인지 알 수 없음
  • packet loss 경우
    • pkt 0, pkt 1, pkt 2 정상 전송
    • ACK 0, ACK 1, ACK2 정상 반환
    • pkt 3 유실
    • sender는 pkt 3 유실을 모르고 ACK 1에 맞춰 window 이동시키고 새 pkt 0 전송
    • receiver은 그 pkt 0이 새로운 패킷인지 재전송된 패킷인지 알 수 없음

 

딜레마 대응책

시퀀스 넘버를 window size * 2 만큼 설정


Selective Repeat 단점

  • windows size 안에 있는 모든 packet에 대한 timer 수행
  • 따라서 computer resource 소모
  • 컴퓨터 상에 네트워크를 사용하는 프로세스는 하나의 동작만 하는 것이 아니라 그 소모량이 매우 큼