컴퓨터네트워크 05주차 Transport Layer 02

2022. 12. 28. 20:48CS/컴퓨터네트워크

주 교재 : Computer Networking : A Top-Down Approach

 

5주차 Transport layer 02

  1. Principles of reliable data transfer
  2. Connection-oriented transport: TCP
  3. Principles of congestion control
  4. TCP congestion control

1. Principles of reliable data transfer

reliable한 channel로 데이터가 전송되면 좋겠지만, 여러 가지 환경에 따라 channel의 상태가 바뀌기 때문에

unreliable한 channel에서 reliable 하게 데이터 통신이 일어나야 한다.

  1. Stop-and-wait
  2. Pipelined protocols
    - 1. Go-back-N
    - 2. Seletive Repeat

#Stop-and-wait

pkt(packet)을 보내고, 그에 대한 응답으로 ack(acknowledgement code)을 받는다.

  • Ack : 보낸 packet을 잘 받았는지 알려주는 것. sequence number를 달아서 판단하는 것이 가장 단순한 방법.

ack가 도착하지 않으면, timeout 했다가 다시 해당 pkt를 전송한다.

  • Timeout
    - 너무 짧으면 ack를 수신 중에 다시 pkt를 전송

    - 너무 길면 리소스 낭비
    - 적당한 게 좋음 => RTT를 고려해서 Tiemout 시간을 설정함

  • 단점
    - pkt 하나를 보내고 그에 대한 ack를 기다려야 하기 때문에 병렬 처리가 안된다.

    => 속도가 느리다.

#Pipelined protocols: overview

  • Pipelined : ack 수신과 상관없이 계속해서 pkt을 전송함
  1. Go-back-N
    - 계속해서 pkt을 보내다가, 도착하지 않은 pkt으로 돌아가서 N개만큼 다시 전송
    - N : Window Size, 안 온 데이터에 대한 크기, 숫자, 개수
    - receiver는 오직 누적 ACK를 전송한다.
    - sender는 가장 오래된 unACKed packet에 대한 timer를 가지고 있다.
        - Timer가 만료되면, unACKed packet을 기준으로 뒤의 packet을 다 재전송한다.
    - Best Case : 5번 pkt이 안 왔는데 그 뒤로 N개만큼의 데이터가 싹 다 안 온 경우
    - Worst Case : 5번 pkt만 안오고 그 뒤로 N개만큼의 데이터가 다 도착한 경우
                            => 뒤로 도착한 N개를 버리고 5번부터 N개 만큼 재전송
  2. Selective Repeat
    - unACKed packet만 전송
    - receiver는 각각의 packet에 대한 개별적인 ack를 전송함
    - sender는 각각의 unACKed packet에 대한 타이머를 유지함
        - Timer가 만료되면 unACKed packet만 재전송
    - 관리가 어려움 => 복잡도가 증가

#Go-Back-N: sender

  • k-bit sequence Number가 pkt header에 들어있다.
  • ACK(n) : Cumulative ACK = 순서대로 하나씩 쌓는다.
  • Timeout : 가장 높은 순서의 packet으로 돌아가서 n개의 packet을 재전송

#Go-Back-N: receiver

  • ACK-only : 항상 높은 seq #로 순서대로 올바르게 수신한 packet에 대한 ACK를 전송한다.
  • out-of-order packet
    - 못 받은 데이터 뒤에 ACK는 다 폐기한다.
    - 가장 높은 seq #로 re-ACK pkt를 보낸다.

Go-Back-N in action

#Selective Repeat

  • receiver는 올바르게 수신된 모든 packet을 개별적으로 승인
  • sender는 ACK가 도착하지 않은 packet만 재전송
  • sender window
    - N개의 연속된 seq #들
    - 전송되고 unACKed packet한 seq #를 제한함

Sender

  • data from above : 가용한 seq #가 window안에 있으면, packet을 보낸다.
  • timeout(n) : packet n을 다시 보내고, timer를 다시 시작한다.
  • ACK(n) in [sendbase, sendbase+N] : 받은 packet n을 표시한다.

Receiver

  • packet n in [rcvbase, rcvbase+N-1]
    - ACK(n)을 보낸다
    - out-of-order : buffer
    - in-order : 전달, 아직 수신되지 않은 packet으로 window 이동
  • packet n in [rcvbase-N, rcvbase-1]
    - ACK(n)

Selective Repeat in action

#Selective repeat : dilemma

seq #의 범위를 잘 판단해야 한다.


2. Connection-oriented transport: TCP

#TCP : Overview

  • point-to-point
  • reliable, in-order
  • pipelined
  • connection-oriented
    - handshaking
  • flow controlled

#TCP segment structure

#TCP sequence numbers, ACKs

#TCP reliable data transfer

  • TCP는 프로세스 간에 reliable한 segment의 전송을 만든다.
    • pipelining of segments
    • cumulative ACKs
    • single retransmission timer
  • 재전송은
    • timeout events
    • duplicate acks
    가 trigger 한다.

#TCP: retransmission scenarios

#TCP Fast Retransmit

Timeout이 남았는데, 같은 packet에 대한 3개의 ACK를 받으면 timeout을 무시하고 해당 packet을 보냄

#TCP Flow Control

receiver가 sender를 조정해서, sender가 receiver의 buffer가 overflow하지 않게 데이터를 안보내는 것.

  • sender는 unACKed data의 수를 receiver의 rwnd 값으로 제한한다.
  • 받는 쪽의 buffer가 넘치지 않는 것을 보장한다.

 

#TCP Connection Management

데이터를 교환하기 전에, sender/receiver 사이에 handshake가 있다.

#TCP 3-way handshake

#Closing a TCP Connection


3. Principles of congestion control

Congestion : network가 처리하기에 너무 많고 너무 빠른 데이터가 전송되는 것.

Buffer overflow가 해소되지 않아서 TCP 전송이 안되면 계속해서 데이터 전송을 시도함

=> overflow가 해소되기 전까지 데이터를 보내지 않는다.


4. TCP congestion control

#TCP congestion control: AIMD

  • Additive Increase : loss를 만나기 전까지 cwnd를 1씩 증가시키는 것. 
  • Multiplicative Decrease : loss 이후에 cwnd를 반으로 줄이는 것

#TCP Slow Start

처음부터 많이 보내지말고 천천히 보내는 방법.

#TCP: From slow start to Congestion Avoidance

  1. 1개를 보낸다.
  2. Loss가 발생하지 않으면 2배씩 올린다.
  3. thresh hold를 만나면 1씩 증가시킨다.
  4. loss가 발생하면 1로 내린다.
  5. 1~4번 반복

TCP Reno

  1. 1개를 보낸다.
  2. Loss가 발생하지 않으면 2배씩 올린다.
  3. thresh hold를 만나면 1씩 증가시킨다.
  4. loss가 발생하면 thresh hold까지 내린다.
  5. 3, 4번 반복

#TCP Fairness

TCP는 공정하다.

#Explicit Congestion Notification (ECN)

network-assisted congestion control : network가 congestion control을 도와준다.