Packet pipelining for high utiliztaion
Pipelining
: sender๊ฐ ์์ง ack pkts์ด ๋์ฐฉํ์ง ์์("in-flight") ์ํ์์๋ผ๋ ํ ๋ฒ์ ์ฌ๋ฌ ๊ฐ์ ํจํท์ ์ ์กํ๋ค.
- ์ํ์ค ๋๋ฒ์ ๋ฒ์๋ฅผ ๋๋ ค์ผ ํจ
- sender๋ receiver์์ ๋ฒํผ๋ง์ด ๋ฐ์ํจ
์๋ sender์ Utilization ์ (L/R) / (RTT+L/R) ์ด์๋๋ฐ ๋ง์ฝ 3๊ฐ๋ฅผ ํ ๋ฒ์ ๋ณด๋ธ๋ค๋ฉด U_sender = (3L/R)/(RTT+L/R)์ด ๋๋ค.
ํจํท์ 3๊ฐ๋ฅผ ํ ๋ฒ์ ๋ณด๋๋๋ utilization์ด 3๋ฐฐ ์ฆ๊ฐํ๋ค!
์ด๋ฌํ Pipelined protocols์ ํฌ๊ฒ ๋ ๊ฐ์ง๊ฐ ์๋ค.
- Go-Back-N
- Selective Repeat
๊ฐ๋ตํ ์ค๋ช
ํ์๋ฉด Go-Back-N์ ํ ๋ฒ์ N๊ฐ์ฉ ๋ณด๋ด๋ ํ๋กํ ์ฝ์ด๋ค.
Receiver๋ ์ฌ๋ฌ ๊ฐ์ ack๋ฅผ ์ถ์ ํด์ ๋ณด๋ธ๋ค. ๋ง์ฝ ์์๋ฅผ ์งํค์ง ์๊ณ ์ค๊ฐ์ ๋ค๋ฅธ ํจํท์ด ์ค๋ฉด ๊ทธ ํจํท์ ๋ฐ์ง ์๊ณ ack๋ฅผ ๋ณด๋ด์ง ์๋๋ค.
sender๋ ๊ฐ์ฅ ์ค๋๋ unacked packet์ ๋ํ ํ์ด๋จธ๋ฅผ ๊ฐ์ง๊ณ ์๋ค. ๋ง์ฝ ํ์ด๋จธ๊ฐ ๋๋๋ฉด ๊ทธ ํจํท๋ถํฐ N๊ฐ๋ฅผ ๋ค์ ๋ค ๋ณด๋ธ๋ค.
Selective Repeat์ N๊ฐ๋ฅผ ๋ณด๋ด๋ ๊ฒ์ ๊ฐ์ง๋ง Receiver์ ๊ฐ ํจํท์ ๋ํด ๊ฐ๋ณ์ ์ธ ack๋ฅผ ๋ณด๋ธ๋ค. ๊ทธ๋ฆฌ๊ณ sender ์ญ์ unacked packet์ ๋ํด ๋ชจ๋ timer๋ฅผ ์ ์งํ๋ค. ๋ง์ฝ ํ์ด๋จธ๊ฐ ๋๋๋ฉด ์ค์ง unacked ๋ ํจํท์ ๋ํด์๋ง ์ฌ์ ์ก์ ํ๋ค. ์ฆ ์๋ชป๋ ๊ฒ๋ง ๋ค์ ๋ณด๋ด๋ ๊ฒ!
1. Go-Back-N (GBN)
- ํจํท ํค๋์๋ k-bit์ sequence number๊ฐ ์๋ค.
- window ๋ ๋ณด๋ผ ํจํท๋ค์ ๋ฌถ์๊ฐ์ ๊ฒ..! ์ด N๊ฐ์ unacked pkts์ผ๋ก ๋์ด์๋ค.
- ACK(n) : n๋ฒ์งธ ํจํท๊น์ง ๋ค ์ ๋ฐ์๋ค๋ ๋ป (cumulative ACK)
- Sender๋ duplicate ACKs๋ฅผ ๋ฐ์ ์๋ ์๋ค. (์ฒ๋ฆฌํ์)
- ๊ฐ์ฅ ์ค๋๋ in-flight pkt์ ๋ํ ํ์ด๋จธ๋ง ์กด์ฌํ๋ค.
- timeout(n) : n๋ฒ์งธ ํจํท์ ๋ํ ACK๊ฐ ์ค์ง ์์์ผ๋ฏ๋ก n๋ฒ์งธ ํจํท๋ถํฐ N๊ฐ๋ฅผ ๋ค์ ๋ณด๋ธ๋ค.
Sender
Sender๋ ์ด์ rdt_send(data)๊ฐ ์ค๋ฉด ํ์ฌ ๋ณด๊ณ ์๋ seq# ์ธ base๋ก ๋ถํฐ N๊ฐ๊น์ง๋ฅผ ํ ๋ฒ์ ์ ์กํ๋ค. ์ด๋ฌ๋ฉด nextseq# ๊ฐ base๋ก๋ถํฐ N+1๋ฒ์งธ ํจํท์ ๊ฐ๋ฆฌํฌ ๊ฒ์ด๊ณ ์ด๋ฌ๋ฉด ๋์ด์ ๋ณด๋ด์ง ์๊ณ ์คํํ๋ค.
๊ทธ๋ฆฌ๊ณ ๋งจ ์ฒ์ ํจํท์ ๋ํด์ timer๋ฅผ ์ผ๊ณ ๊ธฐ๋ค๋ฆฐ๋ค.
ack๊ฐ ์ค๋ฉด base๋ฅผ ๊ทธ ๋ค์ seq #๋ก ํ ์นธ์ฉ ์ฎ๊ฒจ์ค๋ค. ์ฆ ์๋์ฐ๋ฅผ ์ค๋ฅธ์ชฝ์ผ๋ก ํ ์นธ์ฉ ์ฎ๊ฒจ์ค๋ค. ์ด๋ฌ๋ค๊ฐ ๋ง์ฝ base๊ฐ nextseqnum ์ฆ ์๋์ฐ ๋งจ ๋๊น์ง ์ค๋ฉด ์ ๋ถ ๋ค ์ ๋ฐ์๊ฑฐ๋๊น timer๋ฅผ ๋ฉ์ถฐ์ค๋ค. ๊ทธ ์ธ์ ๊ฒฝ์ฐ์๋ ์๋์ฐ์ ๊ฐ์ฅ ์ผ์ชฝ ํจํท์ ๋ํ timer๋ฅผ ์ผ์ค๋ค.
๋ง์ฝ ์๋ชป๋ ํจํท์ด ์ค๋ฉด ์๋ฌด๊ฒ๋ ์ํ๋ค.
time out์ด ๋๋ฉด ๋ค์ ํ์ด๋จธ๋ฅผ ํค๊ณ ํ์ฌ base๋ก ๋ถํฐ N๊ฐ๋ฅผ ์ฌ์ ์กํ๋ค. ์ฆ ์ฎ๊ฒจ์ง ์๋์ฐ ์์ ํจํท์ ์น ๋ค ๋ณด๋ธ๋ค.
Receiver
Receiver์ ํจํท์ด ์๊ณ , ์ ์ ํจํท์ด๊ณ , ์์์ ๋ง๋ ํจํท์ด๋ผ๋ฉด udt_send(sndpkt)์ผ๋ก ACK๋ฅผ ๋ณด๋ด์ค๋ค. ๊ทธ๋ฆฌ๊ณ expectedseq#๋ฅผ ํ๋ ์ฆ๊ฐ์์ผ์ค๋ค. ๋ง์ฝ ์ด์ํ ํจํท์ด ์ค๊ฑฐ๋ ์ค๋ณต๋ ํจํท์ด ์ค๊ฑฐ๋ ์์๋ฅผ ๊ฑด๋๋ฐ๊ณ ์ค๋ฉด ์๋ฌด๊ฒ๋ ์ํ๊ณ ๊ธฐ๋ค๋ฆฐ๋ค.
- ACK-only : ์ ๋ฐ์ ํจํท ์ค ๊ฐ์ฅ ๋ง์ง๋ง ํจํท์ ๋ํ ACK๋ฅผ ๋ณด๋ด์ค๋ค. (NAK์์)
- ACK๊ฐ ์ค๋ณต๋ ์ ์๋ค.
- ์ค์ง expected seqnum ๋ง ๊ธฐ์ตํ๋ฉด ๋จ (ํจํท ๋ฐ์ ๋๋ง๋ค expected ๊ฐ ++ )
- ๋ง์ฝ ์์์ ๋ง์ง ์์ ํจํท์ด ์ค๋ฉด ๋ฒํผ๊ฐ ์๊ธฐ ๋๋ฌธ์ ๊ทธ๋ฅ ์ง์๋ฒ๋ฆฌ๊ณ ๊ฐ์ฅ ๋ง์ง๋ง์ผ๋ก ๋ฐ์ ์ ์ ํจํท์ ๋ํ ACK๋ฅผ ๋ค์ ์ฌ์ ์ก ํด์ค๋ค.
2. Selective Repeat
- Receiver๋ ์ ์จ ํจํท ๊ฐ๊ฐ์ ๋ํ ACK๋ฅผ ๊ฐ๊ฐ ๊ด๋ฆฌํ๋ค.
- ๋ฒํผ๊ฐ ์์ด์ ์์์ ์ ๋ง๊ฒ ์จ ์ ๋ค ์์๋ก ๊ฐ์ง๊ณ ์๋ค๊ฐ ์์ ๋ง๊ฒ ๋ค ๋์ฐฉํ๋ฉด ์์ ๊ณ์ธต์ผ๋ก ์์๋๋ก ๋ณด๋
- Sender๋ ACK๊ฐ ๋์ฐฉํ์ง ์์ ํจํท๋ง ๋ค์ ์ ์กํ๋ค. ์ฆ ๊ฐ๊ฐ์ unACKed pkt์ ๋ํ ํ์ด๋จธ๋ฅผ ์ค์ ํด์ผ ํจ
- Sender์ window
- N๊ฐ์ ์ฐ์์ ์ธ seq #
- ์ ์กํ packet์ ๊ฐ์๋ฅผ ์ ํํ๋ค.
Sender
- ์์์ data๊ฐ ์ค๋ฉด ์ง๊ธ seq #๊ฐ ์๋์ฐ ์์ ์๋ ์ ํจํ ๋ฒํธ์ธ์ง ํ์ธํ๊ณ ํจํท์ ์ ์กํ๋ค.
- Timeout(n) : ํ์ ์์์ด ๋๋ฉด n๋ฒ์งธ ํจํท์ ๋ค์ ๋ณด๋ด๊ณ ํ์ด๋จธ๋ฅผ ์ฌ์์ ํ๋ค.
- window ๋ฒ์ ๋ด์ ACK(n)์ด ์ค๋ฉด pkt n์ ๋ฐ์๋ค๊ณ ํ์ํด์ฃผ๊ณ , n์ด ์๋์ฐ์ ๊ฐ์ฅ ์ผ์ชฝ ํจํท์ด์๋ค๋ฉด ์๋์ฐ๋ฅผ n๋ฒ์งธ ๋ค์๋ถํฐ๋ก ์ฎ๊ฒจ์ค๋ค.
Receiver
- window ๋ฒ์ ๋ด์ ACK(n) ์ด ์ค๋ฉด
- ACK(n) ์ ์ ์กํ๊ณ
- ์์์ ๋ง์ง ์์ผ๋ฉด buffer์ ์ผ๋จ ์ ์ฅํด๋๋ค
- ์์๊ฐ ๋ง๋๋ค๋ฉด deliver (์ด ๋ ๋ฒํผ์ ์ ์ฅํด๋ ๊ฒ๊น์ง ํฉ์ณ์)
- ๊ทธ๋ฆฌ๊ณ ์๋์ฐ๋ฅผ ์์ง ๋ฐ์ง ์์ ํจํท๊น์ง๋ก ์ฎ๊ฒจ์ค๋ค.
- rcvbase-N ~ rcvbase-1 ๋ฒ์์ ACK(n)์ด ์ค๋ฉด
- ์ด๋ฏธ ๋ฐ์๋ ํจํท์ด๋๊น ACK(n)๋ง ๋ค์ ๋ณด๋ด์ฃผ๊ณ ์ ์ฅ์ ํ์ง ์๋๋ค.
- ๊ทธ ์ธ์๋ ๋ฌด์ํ๋ค.
Dilemma
- seq #๊ฐ window ํฌ๊ธฐ๋ณด๋ค ์์ผ๋ฉด ๋ฌธ์ ๊ฐ ์๊ธธ ์ ์์!
(ACK ๋ชป ๋ง์์ ์ฌ์ ์ก ํ๊ฑธ ์๋ก์ด ํจํท์ผ๋ก ์ธ์ํ ์ ์์) - ๋ฐ๋ผ์ window๋ณด๋ค seq #๊ฐ ์ฝ ๋ ๋ฐฐ์ ๋ ๋ ๋ง์์ผ ํจ.
Automatic Repeat Request (ARQ) schemes
Throughput performance analysis
Goal : maximum throughput (=๐_max) ๊ตฌํ๊ธฐ
t_I = ํ๋์ ํจํท์ transmission ํ๋๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ
๐ก๐ = propagation delay
๐ก๐๐๐๐ = processing ํ๋ ์๊ฐ at the receiver
(ํจํท์ด ๋ผ์ฐํฐ์ ๋์ฐฉํด์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฝ๊ณ ,
์ด๋ ๋ผ์ฐํฐ๋ก ์ ์ก๋์ด์ผ ํ๋์ง ๋ชฉ์ ์ง๋ฅผ ํ์ธํ๋ ๋ฐ ๊ฑธ๋ฆฌ๋ ์ง์ฐ.)
๐ก๐ = ACK๋ NAK์ transmission time
๐ก๐๐ข๐ก = time out
-> ACK๋ฅผ ์ ๋ฐ๊ธฐ ์ํด์๋ time out ์๊ฐ์ด delay๋ณด๋ค ๊ธธ์ด์ผ ํจ
๐ก๐๐ข๐ก ≥ 2๐ก๐ + ๐ก๐๐๐๐ + ๐ก๐
1. Stop-and-Wait
๊ฐ์
- Saturated network (ํฌํ ๋คํธ์ํฌ) : transmitter๋ ํญ์ ๋ญ๊ฐ ์ ์กํ ๊ฒ ์์
- ์๋ฒฝํ timeout ์ค์ : ๐ก๐๐ข๐ก = 2๐ก๐ + ๐ก๐๐๐๐ + ๐ก๐
- ๐ก๐ = ๐ก๐๐ข๐ก + ๐ก๐ผ ๋ผ๊ณ ํ์. ์ฆ ๐ก๐ ๋ ํจํท์ด queue ๋์์ ์ ์ก๋๊ธฐ ์์ํด์ time out ๋ ๋๊น์ง์ ์๊ฐ
- ๋ง์ฝ error๊ฐ ์๋ค๊ณ ํ๋ฉด ๐_max = 1 / ๐ก๐
(๐ก๐๊ฐ ํจํท ํ๋ ๋ณด๋ด์ ํ์์์๊น์ง์ ์๊ฐ์ด๋๊น 1์ด์ ๋ณด๋ผ ์ ์๋ ํจํท์ ์์ ์ด๊ฒ์ ์ญ์) - error๊ฐ ์์ ๊ฒฝ์ฐ
- ๐ = ๊ทธ ํ๋ ์์ด ์๋ฌ๊ฐ ์์ ํ๋ฅ
- ๐ก๐ฃ = ํ๋ ์์ ์ฐ์์ ์ผ๋ก ๋ฐ์ ๋ ๊ทธ ํ๋ ์ ์ฌ์ด์ ์๊ฐ ๊ฐ๊ฒฉ
- ๐ = ์ฌ์ ์ก ํ์
- ์ด๋ฅผ ๋ฐํ์ผ๋ก frame์ ์ฑ๊ณต์ ์ผ๋ก ์ ์กํ๊ธฐ ์ํ ํ๊ท ์๊ฐ(๊ธฐ๋๊ฐ)์ ๊ตฌํ๋ฉด
์ฌ์ ์ก์ด 0๋ฒ, 1๋ฒ, ... , n๋ฒ ์ผ ๋ ๊ฑธ๋ฆฌ๋ ์๊ฐ*ํ๋ฅ
์ด ๋
์ฌ์ ์ก n๋ฒ์ผ ๋ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ ์ด n+1๋ฒ ํจํท์ ๋ณด๋ธ๊ฑฐ๋๊น (n+1)*tT
์ฌ์ ์ก n๋ฒ ํ ํ๋ฅ ์ n๋ฒ์ ์๋ชป ๋ณด๋ด๊ณ ๋ง์ง๋ง ํ ๋ฒ ์ ๋๋ก ๋ณด๋ธ๊ฑฐ๋ผ p^n(1-p)
์ด๋ฅผ ๊ณ์ฐํ๋ฉด,
E[N] = ํ๊ท ์ฌ์ ์ก ํ์
E[tv] = E[tv | N = E[N]] : ERROR๊ฐ ์์ ๋ ํ๊ท ์๊ฐ
๋ฐ๋ผ์ ์ต๋ ๋์ญํญ์ ์ด์ ์ญ์!
2. Go-Back-N
๊ฐ์ ์ Stop-and-Wait์ ๋์ผ
- ์ถฉ๋ถํ window ํฌ๊ธฐ๋ฅผ ๊ฐ์ง Saturated network
- error๊ฐ ์์ ๋ ํ๋ ์ ํ๋๋ฅผ t_I์ ํ๋์ฉ ๋ณด๋ผ ์ ์์
ํจํท์ ์๋ฌ๊ฐ ์์ ๋ ๊ฑธ๋ฆฌ๋ ํ๊ท ์๊ฐ = n๋ฒ ์ค๋ฅ ๋ฌ์ ๋ ๊ฑธ๋ฆฌ๋ ์๊ฐ * n๋ฒ ์ค๋ฅ๋ ํ๋ฅ ์ ์ด ํฉ
3. Selective Repeat
๊ฐ์ ์ ์์์ ์ข ๋ ์ถ๊ฐ
- receiver๋ reordering buffer๋ฅผ ๋ฌดํ ๊ฐ ๊ฐ์ง๊ณ ์๋ค
- ๐ = P{receiving a frame in error} // ๋ฐ์ ํ๋ ์์ ์๋ฌ๊ฐ ์์ ํ๋ฅ
- P{successful transmission in first attempt} = 1 − ๐ //์ฒซ๋ฒ์งธ ์๋์ ์ฑ๊ณตํ ํ๋ฅ
- P{successful transmission in ๐-th attempt} = ๐๐−1(1 − ๐) //n๋ฒ์งธ ์๋์ ์ฑ๊ณตํ ํ๋ฅ
- k๋ฅผ ์ ์ก ์ฑ๊ณต์ ์ํด ํ์ํ ์ ์ก ์๋ผ๊ณ ํ๋ฉด,
๐ก๐ผ๋ ํ ํ๋ ์์ transmission time์์ ๊ธฐ์ตํด๋ด!
์ด ๋ง์ ์ฆ, ์ฐ๋ฆฌ๋ ๋จ์ ์๊ฐ ๋น ์ต๋ 1/๐ก๐ผ ํ๋ ์์ ์ ์ก์ด ๊ฐ๋ฅํ๋ค๋ ๋ป
๊ทธ๋์ ์ด์ (๋จ์์๊ฐ์ ๋ณด๋ผ ์ ์๋ ํ๋ ์ ์์ ํ๊ท ) / (ํ๋ ์ ํ๋๋ฅผ ๋ณด๋ด๋๋ฐ ํ์ํ ์ฌ ์ ์ก ํ์์ ํ๊ท ) ์ ํ๋ฉด ์ต๋ ๋์ญํญ์ ๊ตฌํ ์ ์๋ค. ๊ทธ๋๊น ์๋ ์๋ฌ ์์ ๋์ ๋์ญํญ ๋๋๊ธฐ ์๋ฌ ์์ผ๋๊น ์ฌ์ ์กํ๋๋ฐ ๋์ญํญ์ ์จ์ผํด์ ๊ทธ๊ฑธ๋ก ๋๋ ์ฃผ๋ ๊ฒ..
Compare ARQ Schemes
์ํ๋ฅผ ์ ๋ ๊ฒ ๊ฐ์ ์ ํด๋ณด์.
์์์ ๊ตฌํ ๋๋ค max์ t_I๋ฅผ ๊ณฑํ ๊ฐ์ ๊ตฌํด๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ์ด ๋ํ๋๋ค.
- α๊ฐ 1์ ๊ฐ๊น์ฐ๋ฉด(์ถฉ๋ถํ ์์ผ๋ฉด) ์ ์ธ ๊ฐ์ง ๋ฐฉ๋ฒ์ด ๋น์ทํด์ง๋ค.
๊ทธ ๋ง์ ์ฆ, t_I ์ฆ ์ ์ก ์๊ฐ์ด propagation delay๋ฅผ ๊ฒฐ์ ํ๋ค๋ ๋ป. (์์ง?
- α๊ฐ ๋งค์ฐ ํฌ๊ณ p๋ ๋งค์ฐ ์์ ๋ ์ฆ αp << 1 ์ผ ๋ (t_out์ด ํฌ๊ณ ์ค๋ฅ ์์ ํ๋ฅ ์ด ์์ ๋)
- Stop-and-wait ๋ฐฉ์์ ์์ฃผ ์ข์ง ์๊ณ
- Go-Back-N ์ด๋ Selective Repeat์ด ๋น์ทํ ์ฑ๊ณผ๋ฅผ ๋ธ๋ค.
- αp ~ 1 ์ด๊ฑฐ๋ αp > 1 ์ด๋ฉด Selective Repeat์ด Go-Back-N๋ณด๋ค ํจ์ฌ ๋ซ๋ค.
- ๋๊ฐ๋ก Selective Repeat์ด ์ฑ๋ฅ์ด ์ข์ง๋ง ์ ์ผ ๋ณต์กํ๋ค.
'๐ก๐ธ๐ธ๐ถ5: ๐ฆ๐๐๐๐ถ ๐ฐ๐๐พ๐ > Computer Network(COSE342)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ปดํจํฐ๋คํธ์ํฌ] CH3. Transport Layer (#1) (0) | 2021.10.19 |
---|---|
[์ปดํจํฐ๋คํธ์ํฌ] CH2. Application Layer (#4) (0) | 2021.10.18 |
[์ปดํจํฐ๋คํธ์ํฌ] CH2. Application Layer (#3) (0) | 2021.10.17 |
[์ปดํจํฐ๋คํธ์ํฌ] CH2. Application Layer (#2) (0) | 2021.10.17 |
[์ปดํจํฐ๋คํธ์ํฌ] CH2. Application Layer (#1) (0) | 2021.10.17 |