안녕하세요!

FE 개발자 유진주입니다.

CS/네트워크

[컴퓨터네트워크] Chapter3.4 오류복구3_Selective_Repeat ARQ

ypearl 2023. 12. 3. 20:42
 

Chapter3.4  오류복구3_Selective_Repeat ARQ

  • 파이프라이닝(Pipelining)
  • Selective_Repeat 작동원리
  • Selective_Repeat ARQ 예제
  • 송신 윈도우 최대 크기

 

파이프라이닝(Pipelining)

(*Go-back-N과 Seletive_Repeat)

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

 

- 장점

  • 링크 효율 제거(stop-and-wait보다 M배 높은 효율)

 

- 요구사항

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

*수신자는 재전송된 세그먼트와 정상적인 세그먼트를 구분할 수 있어야 함!

 

 

- 오류복구 유형

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

 

Selective_Repeat 작동원리

: 오류 세그먼트만 재전송

 

- 송신자 동작 절차

1) ACK가 회신 되는 RTT 동안 링크에 최대로 송신 윈도우 크기인 Ssize개의 세그먼트를 전송

2) 누적 ACK(accumulative ACK) 수신하면, 송신 윈도우를 누적 ACK 수만큼 이동(슬라이딩 O)

(* Go-back-N은 ACK를 받은 세그먼트만큼 이동(슬라이딩))

3) 비누적 ACK(non-accumulative ACK) 수신하면 해당 세그먼트의 ACK 수신 사실 기록(슬라이딩 X)

4) 세그먼트 재전송 타이머가 종료될 때까지 ACK가 수신되지 않으면 해당 세그먼트 재전송

 

- 송신 윈도우(send window)

  • 송신가능 순서번호 범위
  • 송신 후 버퍼에 유지되어야 할 세그먼트의 범위 (재전송 가능성 있기 때문)

 

- 누적 ACK(accumulative ACK)

  • 송신 윈도우 내에서 누적적으로 순서 번호가 맞는 ACK

 

- 비누적 ACK(non-accumulative ACK)

  • 송신 윈도우 내에서 누적적으로 순서 번호가 맞지 않는 ACK  // 1,2,3, -(4는 x) , 5

*Go-back-N과는 완전 다른 방식으로 처리!

 

 

- 수신자 동작 절차

1) 송신 윈도우와 동일한 크기의 수신 윈도우(receive window) Rsize 유지 (= Ssize: 송신 위도우 사이즈)

2) 누적 정상 세그먼트를 수신하면 ACK 회신하고 누적 정상 세그먼트 수만큼 수신 윈도우 이동

3) 비누적 정상 세그먼트를 수신하면 ACK 회신하고 해당 세그먼트를 버퍼에 유지

 

- 수신 윈도우(receive window) : Rsize

  • 수신 가능한 세그먼트의 범위
  • 송신 윈도우 크기와 동일

 

- 수신자 버퍼 관리

  • 비누적 정상 세그먼트를 수신 버퍼에 유지
  • 다음 수신 가능 세그먼트: 수신 버퍼에 유지되고 있지 않은 수신 윈도우 내의 모든 세그먼트

 

- [예제] 수신 윈도우 크기: 8

  • 수신된 비누적 정상 세그먼트: 4, 7, 9

순서번호(SN): 4비트 [0~15]

Go-back-N ~ 윈도우의 최대 크기: (2^m) - 1 =(2^4 - 1) = 15

Selective-Repeat ~ 윈도우의 ?? 크기: (2^(m-1)) = 2^3 = 8

 

 

Selective_Repeat ARQ 예제

 

 

송신 윈도우 최대 크기

  • SN 필드 크기가 m비트일 때 송신 윈도우 크기: Ssize
    • Ssize의 최대 크기 = 2^(m-1) : Selective-Repeat
      *(2^m - 1) : Go-back-N
  • 순서번호 범위: [0, 2^m - 1], m = 2 가정
    - SN : [0 ~ 3]
    - 송신/수신 윈도우 크기: 2

 

- 수신 최대 윈도우

  • SN 필드 크기: 4비트
  • 수신 윈도우 최대 크기: 8