Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 백준
- 백준평범한배낭
- KT포트포워딩
- 가운데를말해요
- BOJ
- java
- 카카오코테
- 2019카카오코테
- 스파르타코딩클럽
- 이것이자바다9장
- 운영체제
- 코딩테스트실력진단
- 백준온라인저지
- 백준10828
- 냅색알고리즘
- 코드트리
- 코테
- 윤곽선검출
- BOJ1655
- 컴퓨터비전
- 이것이자바다확인문제
- 딥러닝
- 웹개발기초
- 백준괄호
- 합성곱연산
- 백준스택
- 확인문제
- 이것이자바다
- 백준9012
- 백준가운데를말해요
Archives
- Today
- Total
코딩하는 락커
3. 전송 계층 6 본문
혼잡제어에 대한 접근법
- 종단간의 혼잡제어
- 네트워크 계층은 혼잡제어 목적을 위해 트랜스포트 계층에게 어떤 직접적인 지원도 제공하지 않음.
- 네트워크의 혼잡의 존재는 단지 관찰된 네트워크 행동에 기초파여 종단 시스템이 추측해야함.
- ex) 타임아웃 / 3중 중복 ACK
- 네트워크 지원 혼잡제어
- 네트워크 계층 구성요소가 네트워크 안에서 혼잡 상태와 관련하여 송신자에게 직접적인 피드백을 제공함.
- 라우터가 각각의 출발지에게 처리하는 패킷의 패킷 헤더 안에 어떻게 출발지의 전송률을 증가시키거나 감소시킬 것인지에 관한 정보를 넣어 보내줌.
3.6 TCP 혼잡제어Congestion Control
- IP 계층이 네트워크 혼잡에 관해서 종단 시스템에게 어떠한 직접적인 피드백을 제공하지 않으므로 TCP는 종단간의 혼잡제어를 사용해야함.
- TCP는 네트워크 혼잡에 따라 연결에 트래픽을 보내는 전송률을 각 송신자가 제한하는 방법을 사용함.
- 만약 송신자가 자신과 목적지 간의 경로에서 혼잡이 없음을 감지하면 송신자는 송신률을 높임.
- 반면 송신자가 경로 사이에 혼잡을 감지하면 송신자는 송신률을 줄임.
- LastByteSent - LastByteAcked <= min{cwnd(혼잡 윈도우), rwnd(수신 윈도우)}
- 송신하는 쪽에서 확인응답 안된 데이터의 양은 cwnd와 rwnd의 최소값을 초과하지 않음.TCP 혼잡제어 메커니즘은 추가적인 변수 혼잡 윈도우(congestion window, cwnd)를 기록하는 것임.
- 송신자의 송신율은 cwnd / RTT 바이트/초 임 => window 사이즈를 결정하는 것은 혼잡 윈도우이다.
- TCP 혼잡제어 알고리즘TCP congestion-control의 세가지 구성요소
- 슬로 스타트slow start
- 혼잡 회피congestion avoidance
- 빠른 회복fast recovery
슬로 스타트slow start
- cwnd값을 1MSS(Maximum segment size, TCP 세그먼트가 보낼 수 있는 최대 데이터 양)에서 시작하여 한 전송 세그먼트가 첫 번째로 확인 응답을 받을 때마다 1MSS씩 증가.
- 확인 응답이 도착하면 송신자는 각 확인응답 세그먼트에 대해 하나의 MSS만큼 혼잡 윈도우를 증가시킴.
- 그래서 TCP 전송률은 작은 값으로 시작하지만 슬로 스타트 단계 동안에 지수적으로 증가함.
- 슬로 스타트가 끝나는 시점은
- 1. 타임아웃에 대한 손실 이벤트가 있을 경우.
- cwnd값을 1로 하고 새로운 슬로 스타트를 시작함
- 또한 ssthresh(slow start threshold, 슬로 스타트 임계치)값을 cwnd/2(혼잡이 검출 되었을 시점의 반)으로 정함.
- 2. cwnd값이 ssthresh와 같은 경우.
- 혼잡 회피 모드로 전환
- 3. 3개의 중복 ACK들이 검출된 경우.
- 빠른 회복 상태로 전환
- 1. 타임아웃에 대한 손실 이벤트가 있을 경우.
혼잡 회피congestion-avoidance
- 혼잡 회피 상태로 들어가는 시점에서 cwnd값은 대략 혼잡이 마지막으로 발견된 시점에서의 값의 반이 됨.
- 조금 더 보수적인 접근 방법을 채택하여 매 RTT마다 하나의 MSS만큼 cwnd값을 증가시킴.
- 혼잡 회피가 끝나는 시점은
- 1. 타임아웃에 대한 손실 이벤트가 있을 경우.
- cwnd값을 1로 하고 새로운 슬로 스타트를 시작함
- 또한 ssthresh값을 cwnd/2(혼잡이 검출 되었을 시점의 반)으로 정함.
- 2. 3개의 중복 ACK들이 검출된 경우.
- cwnd값을 반으로 설정.
- 또한 ssthresh값을 cwnd/2(3개의 중복 ACK들을 수신한 시점의 반)으로 정함.
- 빠른 회복 상태로 전환.
- 1. 타임아웃에 대한 손실 이벤트가 있을 경우.
빠른 회복fast recovery
- cwnd값은 잃었던 세그먼트에 대한 매 중복된 ACK를 수신할 때마다 1MSS만큼씩 증가됨.
- 타임아웃 이벤트 발생 시
- cwnd값을 1로 하고 새로운 슬로 스타트를 시작함.
- 또한 ssthresh값을 cwnd/2(타임아웃 이벤트가 발생한 시점의 반)으로 정함.
TCP Tahoe vs TCP Reno
- TCP Tahoe
- 3중 중복 ACK 손실 이벤트 발생시(8번째 송신) cwnd가 1MSS로 설정되고 ssthresh에 도달할 때까지 지수적으로 증가하고, 그 이후에 선형적으로 증가함.
- TCP Reno
- 3중 중복 ACK 손실 발생시(8번째 송신) cwnd가 12MSS * 0.5 = 6MSS으로 설정되고 선형적으로 증가.
- 타임아웃 손실 이벤트 발생시 cwnd가 1MSS로 설정되고 ssthresh에 도달할 때까지 지수적으로 증가하고, 그 이후에 선형적으로 증가함.
- 타임아웃 손실 이벤트와 3중 중복 ACK 손실 이벤트를 구분하여 대처.
3.7 공평성
- 전송률 R을 갖는 하나의 링크를 공유하는 2개의 TCP 연결이 있다고 가정.
- 두 연결이 같은 RTT와 MSS를 갖는다고 가정.
- 다른 TCP 연결이나 UDP 데이터그램도 이 링크를 통과하지 않는다고 가정.
- 양 연결은 A지점에서 시작.
- 양 연결은 TCP 혼잡 회피 알고리즘이 결과로써 RTT당 1MSS씩 윈도우를 증가.
- B지점에서 두 연결의 의해 소비되는 링크 대역폭이 R보다 커지고, 패킷 손실이 발생하면 연결 1과 2는 그들의 윈도우를 감소시켜 C지점이 됨.
- 이 때 두 연결은 2차원 공간 어디에 있늗지간에 상관없이 동등한 대역폭을 공유하는 방향으로 수렴함.
공평성과 UDP
- 많은 멀티미디어 어플리케이션이 전송률 제어를 문제로 TCP를 사용하지 않음.
- 대신에 혼잡제어를 가지고 있지 않은 UDP를 사용.
- 이로써 네트워크 환경은 항상 공평하지는 않음.
'🌐 네트워크' 카테고리의 다른 글
4. 네트워크 계층 2 (0) | 2022.04.12 |
---|---|
4. 네트워크 계층 1 (0) | 2022.04.11 |
3. 전송 계층 5 (0) | 2022.04.04 |
3. 전송 계층 4 (0) | 2022.04.04 |
3. 전송 계층 3 (0) | 2022.03.29 |
Comments