Computer Network

[컴퓨터 네트워크] 오류 복구2: Go-back-N ARQ

JunsuKim 2022. 10. 9.
728x90

파이프라이닝

ACK가 회신되기 전 RTT동안 링크에 M개의 세그먼트를 전송

장점

  • 링크 효율 제고(Stop-and-Wait보다 M배 높은 효율을 갖는다.
    • Stop-and-Wait는 segment를 보내고 Ack이 올 때까지 기다려 그 시간 동안 링크를 비워둔다. 따라서 링크 효율의 떨어진다.

요구사항

  • 최대 파이프라이닝 세그먼트의 수 M(송신윈도우, send window)보다 큰 순서번호(Sequence Number) 사용
  • SN필드 m비트: 2m > M (m과 M의 관계는 오류 복구 유형에 따라 결정된다.)
  • 순서번호: [0, 2m-1], mod 2m

오류 복구 유형

  • Go-back-N ARQ
  • Selective-Repeat ARQ

Go-Back-N

  • 오류 세그먼트부터 이후의 모든 세그먼트를 재전송한다.

동작 과정

  1. ACK가 회신되는 RTT동안 링크에 최대 M개(송신 윈도우 개수)의 세그먼트를 전송하고 버퍼에 유지한다.(재전송을 할 수도 있기에 버퍼에 유지)
  2. ACK가 수신되면 해당 세그먼트를 버퍼에서 제거하고, 송신 가능 순서번호 범위를 1씩 이동한다.(송신 윈도우 슬라이딩)
  3. 세그먼트 재전송 타이머가 종료될 때까지 ACK가 수신되지 않으면 해당 세그먼트부터 송신 윈도우의 모든 세그먼트를 재전송한다.

※ 송신 윈도우

  • 송신 가능 순서번호 범위
  • 송신 후 버퍼에 유지되어야 할 세그먼트 범위

송신자 버퍼 관리

  • Ssize: 송신 슬라이딩 윈도우 크기(send sliding window size)
    • ACK 없이 송신 가능한 최대 세그먼트의 수
    • Ssize = 2m-1, m은 순서번호 필드 크기(비트 수) 
  • Sf: ACK가 수신되지 않은 첫 번째 세그먼트 순서번호
    • ACK가 수신될 때마다 Sf = (Sf + 1) mod 2m
  • Sn: 다음 송신 세그먼트 순서번호
    • 세그먼트를 송신할 때마다 Sn = (Sn + 1) mod 2m

송신 버퍼

  • [Sf, Sn-1] 세그먼트를 재전송을 위해 버퍼에 유지

송신 윈도우 관리: SN 필드 크기 4비트

  • SN(순서번호) 필드 크기가 4비트이므로 송신 윈도우의 크기는 24 - 1 = 15가 된다.
  • 즉, 처음 송신 버퍼에는 [0 - 14]가 들어갈 수 있다.
  • 예시에서는 7개의 세그먼트를 전송하였고, 0, 1, 2 총 3개의 ACK를 받아 버퍼에서 0, 1, 2가 제거되고, 15, 0, 1이 추가로 들어온 것을 확인할 수 있다.

수신자 동작 절차

  • 다음 순서번호 Rn의 세그먼트를 정상적으로 수신하면 ACK(Rn + 1) 회신
  • 다음 순서번호 Rn이 아닌 모든 세그먼트는 폐기 -> 누적 수신확인(Accumulative ACK)

수신자 버퍼 관리

  • Rn: 다음에 수신할 세그먼트의 순서번호
  • 세그먼트가 수신될 때마다 Rn = (Rn + 1) mod 2m
  • 수신 윈도우 크기: 1
  • 수신 버퍼 크기: 1

Go-Back-N ARQ 예제

송신 윈도우 최대 크기

  • 순서번호(SN) 필드 크기가 m비트일 때 송신 윈도우 최대 크기(Smax -> Ssize랑 같은 말이다.) -> 2m - 1
  • 순서번호 필드 크기 m = 2 가정 -> Smax = 3

장점

  • Stop-and-wait 대비 고효율성
  • 간단한 수신자 버퍼 관리(다음 세그먼트 수신용 버퍼)

단점

  • 오류 세그먼트 이후 도착한 정상 세그먼트 재전송
    • 불필요한 재전송 횟수 증가
    • 링크 효율 저하

 

728x90

댓글