rdt3.0
- 비트 오류와 손실 있는 채널상에서의 신뢰적인 데이터 전송
- 2가지 부가 내용을 프로토콜로 생각해야 함
- 어떻게 패킷 손실을 검출할 것인가?
- 새로운 프로토콜 메커니즘을 추가해야 함
- 새로운 프로토콜 메커니즘을 추가해야 함
- 패킷 손실이 발생했을 때, 어떤 행동을 할 것인가?
- 체크섬, 순서 번호, ACK 패킷, 재전송의 사용
- 체크섬, 순서 번호, ACK 패킷, 재전송의 사용
- 어떻게 패킷 손실을 검출할 것인가?
- 송신자에게 손실된 패킷의 검출과 회복 책임을 부여
송신자의 손실된 패킷의 검출
- 가정
- 송신자가 데이터 패킷을 전송하고, 패킷 또는 수신자 패킷에 대한 ACK를 손실
→ 송신자에게는 수신자로부터 어떠한 응답도 없음
- 송신자가 데이터 패킷을 전송하고, 패킷 또는 수신자 패킷에 대한 ACK를 손실
- 송신자가 패킷을 잃어버렸다고 확신할 정도로 충분한 시간을 기다릴 수 있다면, 패킷을 재전송 가능
패킷 손실 확신을 위해선 얼마나 기다려야 할까?
- 적어도 송신자와 수신자 사이의 (왕복 시간 지연 + 수신 측에서 패킷을 처리하는 시간)
- 왕복 시간 지연에는 중간 라우터에서의 버퍼링을 포함한다.
- 왕복 시간 지연에는 중간 라우터에서의 버퍼링을 포함한다.
- 최대 지연 시간은 예측하기 어렵고, 프로토콜이 패킷 손실을 가능한 한 빨리 복구해야 함
→ 최악의 지연을 기다린다는 것은 오류 복구가 시작될 때까지 오래 기다려야 한다는 것을 의미
손실된 패킷을 검출하는데 채택된 방식
- 송신자가 패킷 손실이 일어났다는 보장은 없지만 손실이 일어났을 만한 시간을 현명하게 선택
- ACK가 이 시간 안에 수신되지 않는 경우 → 패킷 재전송
- 패킷이 큰 지연을 갖는 경우 → 패킷 재전송할 수 있음
- 데이터 패킷이나 그 패킷에 대한 ACK 손실이 발생하지 않았어도 가능
→ 송신자 대 수신자 채널에서중복 데이터 패킷
의 가능성 발생
- 순서 번호를 이용하여 처리 가능
- 데이터 패킷이나 그 패킷에 대한 ACK 손실이 발생하지 않았어도 가능
시간 기반의 재전송 메커니즘 구현
- 송신자는 모든 경우에서의 행동은 재전송이다.
- 송신자는 손실 혹은 지나친 지연이 발생했을 때, 이를 구분할 줄 모른다.
- 데이터 패킷이 손실되었는지, ACK가 손실되었는지 구분 X
- 패킷 또는 ACK가 지나치게 지연된 것인지 구분 X
- 손실인지 지연인지도 모름
- 송신자는 손실 혹은 지나친 지연이 발생했을 때, 이를 구분할 줄 모른다.
- 시간 기반의 재전송 메커니즘을 구현하기 위해
카운트다운 타이머
가 필요카운트다운 타이머(countdown timer)
→ 주어진 시간이 지난 후에 송신자를 인터럽트(중단)
송신자의 동작 과정
- 매 패킷(첫 번째 또는 재전송 패킷)이 송신된 시간에 타이머를 시작
- 타이머 인터럽트에 반응함(적당한 행동을 취함)
- 타이머를 멈춤
얼터네이팅 비트 프로토콜
- 프로토콜 rdt3.0은
얼터네이팅 비트 프로토콜
이라고도 부른다.
← 순서 번호가 0과 1이 번갈아 일어나기 때문
얼터네이팅 비트 프로토콜 rdt3.0의 동작
- 위 그림은 프로토콜이 패킷 손실 또는 지연 없이 어떻게 동작하는지,
손실된 데이터 패킷을 어떻게 처리하는지를 보여줌 - 시간은 다이어그램의 위에서 아래로 움직임
→ (패킷 수신 시간 > 패킷 전송 시간)- 전송 지연과 전파 지연 때문
- 전송 지연과 전파 지연 때문
- (b)~(d)에서 송신 측 꺽쇠는 타이머가 설정된 후에 타임아웃된 시간을 가리킴
프로토콜 rdt3.0의 핵심적인 성능 문제
- rdt3.0이
전송 후 대기(stop-and-wait)
프로토콜이라는 점
전송 후 프로토콜의 성능을 알기 위한 예시
- 가정
- 각각 미국의 서부, 동부에 위치하고 있는 두 종단 호스트의 경우
- 두 종단 시스템 사이의 광속 왕복 전파 지연(RTT) : 대략 30ms
- 두 호스트가 1 Gbps 전송률(R)을 가진 채널로 연결되어 있다고 가정
- 패킷당 1000byte(8000bit)의 패킷 크기(L)를 가짐
- 패킷은 헤더 필드와 데이터를 모두 포함
- 패킷은 헤더 필드와 데이터를 모두 포함
- ACK 패킷은 매우 작은 크기 → 전송 시간을 무시할 수 있다.
- 수신자는 데이터 패킷의 마지막 비트가 수신되자마자 ACK 패킷을 송신 시작 가능
- 패킷을 전송하는데 필요한 시간
- 송신자가 t = 0에서 데이터 전송 시작하면 t = 8 µs(L/R)에서 마지막 비트가 송신 측의 채널로 들어감
- 패킷은 15ms 동안 이동
- t = RTT/2 + L/R = 15.008ms에 수신 측으로 마지막 비트가 도착
- 송신자 측에서 ACK 패킷은 t = RTT + L/R = 30.008ms 후에 다시 받음
→ 송신자는 30.008ms 동안 0.009ms 동안만 데이터를 전송한 것
- 송신자는 단지 시간의 0.027%만큼만 바빴음
→ 전송 후 대기 프로토콜은 형편없는 이용률을 가진다. - 초당 1 Gbps의 링크가 가능하더라도 낮은 유효 처리량을 갖는다.
→ 1 Gbps 용량의 링크에 대한 비용을 지불해야 함
파이프라이닝된 신뢰적인 데이터 전송 프로토콜
파이프라이닝
- 송신자에게 확인응답을 기다리지 않고 여러 패킷 전송을 허용
- 많은 전송 중인 송신자-수신자 패킷을 파이프라인에 채워 넣음
- 파이프라이닝 방식은 신뢰적인 데이터 전송 프로토콜에서 중요성을 지님
파이프라이닝된 동작
- 확인응답을 기다리기 전에 송신자가 3개의 패킷 전송을 허용
→ 송신자의 이용률이 3배가 됨
신뢰적인 데이터 전송에 대한 파이프라이닝 방식의 중요성
- 순서 번호의 범위가 커져야 한다.
- 각각의 전송 중인 패킷은 유일한 순서 번호를 가져야 한다.
- 이때 재전송을 고려하지 않는다.
- 이때 재전송을 고려하지 않는다.
- 전송 중인 확인응답(ACK)이 안된 패킷이 여럿 있을지 모른다.
- 각각의 전송 중인 패킷은 유일한 순서 번호를 가져야 한다.
- 프로토콜의 송신 측과 수신 측은 패킷 하나 이상을 버퍼링해야 한다.
- 최소한 송신자는 전송되었으나 확인응답되지 않은 패킷을 버퍼링 해야 한다.
- 정확하게 수신된 패킷의 버퍼링은 수신자에게도 필요
- 필요한 순서 번호의 범위와 버퍼링 조건은 데이터 전송 프로토콜의
손실/손상/지연 패킷에 대한 응답 방식에 좌우됨
- 파이프라인 오류 회복의 2가지 기본적인 접근 방법
GBN(Go-Back-N)
: N부터 반복SR(Selective Repeat)
: 선택적 반복
- 파이프라인 오류 회복의 2가지 기본적인 접근 방법