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
- 오류 세그먼트부터 이후의 모든 세그먼트를 재전송한다.
동작 과정
- ACK가 회신되는 RTT동안 링크에 최대 M개(송신 윈도우 개수)의 세그먼트를 전송하고 버퍼에 유지한다.(재전송을 할 수도 있기에 버퍼에 유지)
- ACK가 수신되면 해당 세그먼트를 버퍼에서 제거하고, 송신 가능 순서번호 범위를 1씩 이동한다.(송신 윈도우 슬라이딩)
- 세그먼트 재전송 타이머가 종료될 때까지 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
'Computer Network' 카테고리의 다른 글
[컴퓨터 네트워크] TCP 연결관리(Connection Management) (0) | 2022.10.12 |
---|---|
[컴퓨터 네트워크] 오류 복구3: Selective_Repeat ARQ (0) | 2022.10.09 |
[컴퓨터 네트워크] 오류 복구1: Stop-and-wait ARQ (0) | 2022.10.05 |
[컴퓨터 네트워크] UDP와 검사합(checksum) (1) | 2022.10.05 |
[컴퓨터 네트워크] 트랜스포트 계층(Transport Layer) 서비스 (0) | 2022.10.05 |
댓글