Error Control
Error detection, Positive ACK, Negative ACK, Time Out
Error Detection
CRC를 확인해보고 Bit error 정도를 확인 할 수 있다. Error correction이 가능한 경우도 있다.
Automatic Repeat Request(ARQ)
1. Stop and Wait
Frame을 하나 받으면 그거에 대한 ACK이 올 때까지 기다렸다가 다음 frame을 전송하는 방식
2. Go-Back-N
수신측에서 에러난 frame이후에 받은 frame들은 다 버린다.
-> 송신측은 오류난 frame 이후에 보낸 frame도 다 다시 보내야 한다.
Ex) 1, 2, 3 frame을 받았지만 1번 frame이 깨졌다면 뒤에 온 2, 3번 frame을 저장하지 않고 버린다.
-> 송신측은 2, 3번 frame은 깨지지 않았지만 1, 2, 3번 모두 다시 보내야 한다.
3. Selective Reject
Go-Back-N에서 에러난 frame이후에 온 frame을 모두 버렸다면, 이 방식은 buffer에 저장해 둔다.
-> 송신측은 에러난 frame만 다시 보내면 된다.
하지만 구현이 어렵고, 불편해서 propagation delay가 긴 위성 전화 같은 서비스 정도에만 이용된다.
Window Size 결정
ACK이 모두 사라진 극단적인 경우를 고려해보면 다음과 같은 결과가 나온다.
sequence number가 2bit, 즉 k=2를 가정하면:
Go-Back-N
W≤2k−1
Selective Reject
W≤2k−1
Utilization; Efficiency
U=한frame전송완료소요시간한frame발송소요시간=TtTf
1. SAW
tframe+2tproptframe=1+2a1
2. Sliding Window(둘 다)
W<1+2a→U=1+2aW
W>1+2a→U=1+2a1+2a=1
에러를 포함해서 계산해보자
U=TtTf=Nr×TfTf , Nr: 재전송 횟수 (에러가 안나면 1)
1. SAW
error rate를 p라 하면
E(Nr)=(1−p)+p(1−p)×2+p2(1−p)×3+...
=∑i=1∞i(1−p)pi−1=1−p1
따라서 에러 없을 때 식에 대입해 주면
U=1+2a1−p
이제 Sliding window방식인 두개를 보자
Nr값은 동일하게 1−p1이다.
2. Selective Reject
W<1+2a→U=1+2aW(1−p)
W>1+2a→U=1−p
3. Go-Back-N
f(i)를 i번 재전송할 때 다시 같이 보내야하는 frame 수 라고 해보자.
k를 매 재 전송마다 같이 보내야하는 frame 수라고 하면
f(i)=1+(i−1)k이 된다.
1번 재전송 해서 통과하면 끝이고, 2번 재전송 해야하면, 처음 재전송할 때, 에러난 frame과 그 이후에 보냈던 frame k개를 보내고, 두번째 재전송 때는 1번만 세어 주면 되기 때문에 이 식이 나왔다고 보면 된다.
N(r)=∑i=1∞f(i)pi−1(1−p)=1−p1−p+kp
W<1+2a→k≃W,U=(1+2a)(1−p+Wp)w(1−p)
Window 에 들어있는 모든 frame을 다 보내기 전 못받았다는 ACK을 받기 때문에 k는 1+2a와 비슷할 것이다.
W>1+2a→k≃1+2a,U=1+2ap1−p
Window 에 들어있는 모든 frame을 다 보내고 나서야 못받았다는 ACK을 받기 때문에 k는 W와 비슷할 것이다.