[Packet Switching vs Circuit Switching]
1. packet switching
- 경로설정 중앙x
- 모니터링 중앙x
- 성능 보장x
- but 일단 출발은 가능한
2. Circuit Switching
- 중앙 경로설정
- 패킷 보내기 전에 미리 경로설정, 연결 끝날 때까지 경로 유지
- 성능 보장 (경로 독점) but 요청에 대한 연결 보장은 x
- Throughput: 처리율. 단위시간당 처리하는 양
[Congestion Control]
- throughput: 처리율. 단위시간당 처리하는 양.
- 10Mbps 속도일 때, 혼잡이 없으면 50Mb 보낼 때 5초 걸리지만 혼잡 있으면 10초 걸릴 수 있음->속도 5Mbps -> throughput이 떨어진 것.
- Slow Start (exponential increase)
- 지수적 증가. 패킷 단위를 1, 2, 4, 8, .. 으로 증가시킴. thoreshold 값까진 두배씩 증가하다 그 뒤론 additive increase 한다.
- 혼잡제어 없었다면 flow control할 때 윈도 사이즈만큼 다 보내므로 걔보단 느려서 slow임.
- threshold(역치) 값까진 두 배 증가하다 그 뒤론 additive increase.
- Congestion avoidance (Additive Increase)
- 혼잡이 발생하기 전에 보내는 양을 하나씩 늘린다. 혼잡이 발생하면 보낼 것을 반으로 줄인다.
- 단점: 적정량이 50이면, 그걸 알아내려고 50번 왔다갔다 해야 함.
- 혼잡이 어디서 생기는지 알 수 없다. 혼잡 생기는 애들은 다 줄임
- TCP Congestion policy summary
- Timeout: 윈도사이즈까지 다 보냈는데 많은 패킷이 한번에 없어져서 답은 안 오고 시간이 지나(time out) 알게 되는 것 (ex. 전쟁 중 다 죽으면 누가 죽었다고 못알려줌)
- 3 duplicate ACK: 패킷 분실 이후에 최소 3개 패킷이 제대로 전송되면 상대가 그에 대한 답으로 못받은 패킷 계속(3번 더) 보낼 때
- AIMD
- 윈도사이즈는 0으로는 안떨어짐. cwnd>=1
Why is TCP fair?
- two competing sessions:
- Additive increase gives slope of 1, as throughout increases
- multiplicative decrease decreases thorughput proportionally
- ex) conn1의 RTT: conn2의 RTT 1:1 이면 기울기 1인 증가그래프에 수렴하게 된다.
- ex) 1:2면 y=1/2 x
- RTT가 다르거나, connection이 한쪽에 여러개 생기면 NOT FAIR.
TCP Timers
1. Retransmission: Timout 발생 감지. (Packet loss detact. 3dupicate ACK으로도 packet loss 감지하지만, 그전에 timeout으로도 감지)
2. Persistence: 영속 타이머. deadlock 해결. probe 세그먼트 전송
3. Keepalive: 상대가 죽은건지, 데이터를 안보내는건지 체크. probe 세그먼트 전송
4. TIME-WAIT: 연결 종료할 때 2MSL만큼 기다림
- TCP에서는 한 번에 하나의 RTT 측정만 진행될 수 있다.
Smoothed RTT (평균 구하기)
- 처음: 아무 값도 설정 안 됨
- 첫 번째 측정 이후: RTTs = RTTm
- 그 이후의 측정 후: RTTs = (1-a)RTTs + aRTTm , a=1/8 (알파)
7/8*(기존평균값)+1/8*(측정값)
RTT Deviation (편차)
- 처음: 아무 값도 설정 안 됨
- 첫 번째 측정 이후: RTTd = RTTm/2
- 그 이후의 측정 후: RTTd = (1-b)RTTd + b|RTTs - RTTm| , b=1/4 (베타)
3/4*(평균) + 1/4*(측정 편차)
- ‘방금 측정된 m이랑 평균 s랑 얼마나 차이나는지’를 측정값으로, 편차평균에 1/4만큼 더해줌
RTO (Retransmission TimeOut)
- 처음: 초기값
- 그 이후의 측정 후: RTO = RTTs + 4*RTTd
Karn’s Algorithm
- 재전송할때는, 재전송할때 값을 s, d에 넣지 말자.-
- 재전송되지 않은 segment에 대한 ACK 이후에만 RTT 재측정하자.
- 안그러면 아래와 같은 문제가 발생할 수 있다.
Exponential Backoff
- 재전송할 때는 RTO 두 배로 보냄
'네트워크 > 컴퓨터네트워크' 카테고리의 다른 글
IPv4 Addresses (0) | 2021.06.28 |
---|---|
TCP options (0) | 2021.06.28 |
Error Control (0) | 2021.04.06 |
Silly Window Syndrome / SYN Flooding (0) | 2021.04.06 |
TCP 확인응답 (0) | 2021.03.23 |
댓글