Transcript SCTP
작성자 양나리 소속팀 멀티미디어공학과 작성년월일 2013. 05. 15.
SCTP
SCTP(스트림 제어 전송 프로토콜)
SCTP
스트림 제어 전송 프로토콜(SCTP : Stream Control Transmission Protocol) 멀티미디어 통신을 위한 프로토콜로써 UDT와 TCP의 일부 장점을 결합하여 설계된 새 로운 전송층 프로토콜
SCTP 서비스
프로세스 – 대 – 프로세스 통신
UDP 혹은 TCP와 마찬가지로 프로세스-대-프로세스 통신을 제공
다중 스트림
TCP는 스트림 지향 프로토콜 • TCP 클라이언트와 TCP 서버 사이에서 각 연결은 하나의 단일 스트림 포함 • 스트림의 어느 지점에서의 손실은 나머지 데이터의 전달을 막을 수 있는 단점을 가짐 • 이것은 텍스트를 전송하고 있을 때는 허용되나 오디오와 비디오와 같은 실시간 데이터를 송신할 때는 허용되지 않음(지연을 허용하지 않음) SCTP는 결합(association)이라고 하는 다중 스트림 서비스를 각 연결에 허용 • 스트림 중의 하나가 막혀도 다른 스트림은 여전히 데이터를 전달 할 수 있음 • 실시간성을 만족시킬 수 있음
SCTP 서비스
다중 스트림
Sending Process SCTP Stream of data chunks Stream of data chunks Receiving Process SCTP
SCTP 서비스
멀티호밍(multihoming)
Client Server IP 1 IP 3 Internet IP 2 IP 4 클라이언트는 2개의 IP주소를 가지고 2개의 로컬네트워크에 연결 서버도 2개의 IP주소를 가지고 2개의 네트워크에 연결 클라이언트와 서버는 서로 다른 IP 쌍을 가지고 결합을 만들 수 있음 그러나 현재의 SCTP 구현에서는 IP 주소 1개 쌍만이 정상적인 통신을 위하여 선택, 다른 경로는 주 경로가 실패하면 사용 현재의 SCPT는 다른 경로 사이에서 부하 분배는 허락하지 않음
SCTP 서비스
멀티호밍(multihoming)
TCP 연결 • 하나의 소스와 하나의 목적지 IP 주소 포함 • 송신기 또는 수신기가 멀티호밍 호스트라 할지라도(다수의 IP주소를 가지고 1개 이상의 물리적 주소에 연결된) 이러한 IP 주소들은 연결하는 동안 목적지당 1개의 주소만이 이용됨 STCP 결합은 멀티호밍 서비스(multihoming service) 지원 • 송신 호스트와 수신 호스트는 결합을 위해 각 종단에 다수의 IP 주소를 정의 • 고장 감내 접근법 : 하나의 경로가 실패할 때 다른 경로로 중단 없이 데이터 전달 • 장점 : 인터넷 전화와 같은 실시간 데이터를 송수신할 때 매우 큰 도움
SCTP 서비스
전 이중 통신
SCTP는 동시에 양방향으로 데이터가 진행할 수 있는 전이중 서비스 제공 각 SCTP는 송신과 수신 버퍼를 갖고 패킷들은 양쪽 모두의 방향으로 송신
연결지향 서비스
SCTP는 연결지향 프로토콜(연결, 종료설정 지원) 그러나 SCTP에서는 연결을 결합(association)이라고 함
신뢰성 있는 서비스
SCTP는 TCP처럼 신뢰성 있는 전송 프로토콜(오류, 흐름제어) 데이터가 안전하게 도착했는지를 확인하기 위하여 확인응답 절차 사용
SCTP 특징
전송 순서번호(TSN)
TCP의 데이터 단위는 바이트 • TCP에서 데이터 전송은 순서번호를 사용하여 번호가 부여된 바이트에 의해 제어 SCTP에서 데이터 단위는 단편화 때문에 프로세스부터 들어오는 메시지와 일대일 관계를 가 질 수 도 또는 그렇지 않을 수도 있는 데이터 청크 STCP는 데이터 전송은 데이터 청크에 번호를 부여함으로써 제어 SCTP는 데이터 청크에 번호를 부여하기 위하여 전송 순서 번호(TSN : Transmission Sequence Number)를 사용 SCTP에서 TSN은 TCP에서 순서번호와 유사한 역할을 수행 TSN 은 32비트이고 0과 2 32 -1 사이에서 임의로 초기화 각 데이터 청크는 헤더에 해당하는 TSN을 운반
SCTP 특징
스트림 식별자(SI)
TCP에서는 각 연결에 하나의 스트림만이 존재 SCTP에서는 각 결합에 여러 개의 스트림이 존재 SCTP에 있는 각 스트림은 스트림 식별자(SI : Stream Identifier)를 사용하여 식별 각 데이터 청크는 목적지에 도착할 때 스트림 안에서 위치가 적절하게 되도록 헤더에 SI를 운반 SI는 0부터 시작하는 16비트 번호
스트림 순서번호(SSN)
데이터 청크가 목적지 SCTP에 도착할 때 올바른 순서로 적절한 스트림에 전달 이것은 SI외에 SCTP는 각 스트림이 데이터 링크를 스트림 순서 번호(SSN : Stream Sequence Number)로 정의한다는 것을 의미
SCTP 특징
패킷
TCP에서 세그먼트는 데이터와 제어 정보를 운반 • 데이터는 바이트의 집합으로 운반되고 제어 정보는 헤더에 6개의 제어 플래그로 정의 SCTP의 설계는 TCP와 완전히 다름 • 데이터는 데이터 청크로써 운반되고 제어 정보는 제어 청크로 운반 • 여러 개의 제어 청크와 데이터 청크는 하나의 패킷에 함께 묶일 수 있음 SCTP의 패킷은 TCP의 세그먼트와 동일한 역할 수행
SCTP 특징
패킷
프로세스 A가 프로세스 B에게 3개의 스트림으로 11개의 메시지를 보낸다고 가정 • 첫 번째 4개의 메시지는 첫 번째 스트림 안에 있음 • 두 번째 3개의 메시지는 두 번째 스트림 안에 있음 • 마지막 4개의 메시지는 세 번째 스트림 안에 있음 • 하나의 메시지가 길면 여러 개의 데이터 청크로 운반될 수 있지만, 각 메시지들은 하나의 데이터 청크로 맞춤 • 따라서 3개의 스트림으로 11개의 데이터 청크를 가짐 • 응용프로세스는 11개 메시지를 SCTP로 운반하고 각 메시지는 알맞은 스트림으로 표시 • 프로세스가 첫 번째 스트림으로부터 한 메시지를 전달하고 또 다른 메시지를 두 번째 스트림으로부터 전달할 수는 있지만 첫 번째에 속하는 모든 메시지를 먼저 전달하고 두 번째 스트림에 속하는 메시지는 다음에, 그리고 끝으로 마지막 스트림에 속하는 모든 메시지를 전달하는 것으로 가정
SCTP 특징
패킷
네트워크는 4개의 패킷을 필요로 하는 것을 의미하는 패킷당 단지 3개의 데이터 청크만을 허용한다고 가정 Fourth packet Header Control chunks
TSN : 110 SI : 2 SSN : 2 TSN : 111 SI : 2 SSN : 3
Third packet Header Control chunks TSN : 107 SI : 1 SSN : 2
TSN : 108 SI : 2 SSN : 0 TSN : 111 SI : 2 SSN : 1
Second packet Header Control chunks
TSN : 104 SI : 0 SSN : 3
TSN : 105 SI : 1 SSN : 0 TSN : 106 SI : 1 SSN : 1 First packet Header Control chunks
TSN : 101 SI : 0 SSN : 2 TSN : 102 SI : 0 SSN : 1 TSN : 103 SI : 0 SSN : 2
• Flow of packets from sender to receiver 스트림 0에 속한 데이터 청크는 첫 번째 패킷과 두 번째 패킷의 일부분으로 운반 • 스트림 1에 있는 데이터 청크는 두 번째와 세 번째 패킷에서 운반 • 스트림 2에 있는 데이터 청크는 세 번째와 네 번째 패킷에서 운반 • 각 데이터 청크는 TSN(누적번호, 흐름제어와 오류제어), SI(청크가 속해있는 스트림 정의), SSN(특정한 스트림에 있는 청크 순서 정의) 3개의 식별자를 필요로 함
SCTP 특징
패킷
TCP 세그먼트와 SCTP 패킷 비교 HL Source port address Checksum Destination port address Sequence number Acknowledgement number Control flags Window size Urgent pointer Options
Data bytes
A segment in TCP Source port address Destination port address Verification tag Checksum Control chunks
Data chunks
A packet in TCP SCTP는 데이터 청크, 스트림, 패킷을 가짐 결합은 많은 패킷을 송신하고 패킷은 여러 개의 청크를 포함하고 청크는 서로 다른 스트림 에 속할 수 있음
SCTP 특징
확인응답 번호
TCP의 확인응답 번호는 • 바이트 지향이고 순서번호로 참조 • TCP에서 제어정보는 세그먼트 헤더의 일부분 • 제어정보만을 운반하는 세그먼트에 대해 확인응답을 위하여 TCP는 순서번호와 확인응답 번호 사용 SCTP의 확인응답번호 • 청크 지향적, TSN 참조 • 제어정보는 제어 청크에 의해 운반되고 TSN을 필요로 하지 않음 • 청크 제어는 또 다른 적절한 형태의 제어 청크에 의해 확인응답 • 순서번호나 확인응답 번호가 필요 없음
SCTP 패킷 형식
General header (12 bytes) Chunk 1 (variable length) ㆍ ㆍ ㆍ Chunk N (Variable length)
SCTP 패킷은 필수 항목의 일반 헤더와 청크로 불리는 블록 집합들을 가짐 청크에는 제어청크와 데이터 청크 두 가지 형태가 있음 패킷에서 제어 청크는 데이터 청크 전에 옴
SCTP 패킷 형식
일반 헤더
일반 헤더(general header, 패킷 헤더)는 패킷이 속하는 각 결합의 끝 지점을 정의하며, 특정 한 결합에 속하는 패킷을 보장하고 헤더 자체를 포함하는 패킷 내용에 대한 무결성을 보존 Source port address 16 bits Verification tag 32 bits Destination port address 16bits Checksum 32bits 일반 헤더에는 4개의 필드가 있음 •
출발지와 목적지 포트 번호 :
UDP와 TCP와 동일 •
검증태그
는 결합을 위한 식별자로 사용, 결합 동안에 모든 패킷에서 반복 •
검사합
의 크기는 CRC-32 검사합 사용을 가능하도록 16비트(UDP, TCP와 IP에서)에서 32비트로 증가
SCTP 패킷 형식
청크
제어정보와 사용자 데이터는 청크로 운반 0 8 Type Flag 16
Chunk Information (multiple of 4 bytes)
Length 31 • 첫 번째 3개의 필드는 모든 청크에 공통 • 정보 필드는 청크의 유형을 나타냄 • 유형필드는 청크의 256바이트까지 정의되지만 일부만 정의되고 나머지는 미래사용을 위해 유보 • 플래그 필드는 특별한 청크가 필요할 수 있는 특수한 플래그 정의
SCTP 패킷 형식
청크
청크의 유형
Type
5 6 0 1 2 3 4 7 8 9 10 11 14 192
Chunk
DATA INIT INIT ACK SACK HEARTBEAT HEARTBEAT ACK ABORT SHUTDOWN SHUTDOWN ACK ERROR COOKIE ECHO COOKIE ACK SHUTDOWN COMPLETE FORWWARD TSN
Description
User data Sets up an association Acknowledges INIT chunk Selective acknowledgement Probes the peer for liveliness Acknowledges HEARTBEAT chunk Aborts an association Terminates an association Acknowledges SHUTDOWN chunk Reports errors without shutting down Third packet in association establishment Acknowledges COOKIE ECHO chunk Third packet in association termination For adjusting cumulating TSN
SCTP 결합
결합 설정
SCTP에서 결합 설정(association establishment)은 4-방향 핸드셰이크(four-way handshake) 를 요구 이 절차에서는 일반적으로 클라이언트인 프로세스는 SCTP를 사용하여 서버 측 프로세스와 함께 결합을 설정하기를 원함 SCTP서버는 항상 결합을 설정할 준비를 하고 있음(수동개방) 그러나 결합설정은 클라이언트에 의해 시작 됨 (능동개방)
SCTP 결합
결합 설정
SCTP 결합설정 단계 Client Active open
1
INIT VT : 0 Init tag: 1200 rwnd:1000 Init TSN: 100
3
Time
2
Server
4
Time
SCTP 결합
데이터 전송
결합의 목적은 2개의 종단 간에 데이터를 전송하는 것 결합이 설정된 후에 양 방향으로 데이터 통신이 이루어짐 클라이언트와 서버는 모두 데이터를 송신할 수 있음 TCP처럼 SCTP는 피기배킹을 지원
SCTP 결합
데이터 전송
SCTP 데이터 전송 • 프로세스부터 오는 메시지들은 하나의 단위로 취급되고 단편화가 되지 않았다면 데이터 청크로 삽입 • 프로세스로부터 수신한 메시지는 데이터 청크 헤더를 메시지에 붙임으로써 하나의 데이터 청크 또는 단편화가 된다면 여러 개의 데이트 청크가 됨 • 메시지 또는 메시지 단편에 의해 형성된 데이터 청크는 하나의 TSN 하나를 가짐 • 데이터 청크만이 TSN을 사용하고 데이터 청크만이 SACK 청크에 의해 확인응답이 됨
SCTP 결합
멀티호밍 데이터 전송
멀티호밍은 통신을 위하여 양 종단 간 여러 개의 IP 주소를 정의하는 것을 허용 그러나 이러한 주소들의 하나만이 우선 주소(primary address)로 정의될 수 있고 나머지들은 대체 주소가 됨 우선주소는 • 우선주소는 결합을 설정하는 동안 정의 • 한쪽 종단의 우선 주소는 다른 종단에 의해 결정 • 즉, 근원지의 목적지를 위한 우선주소를 정의 기본적으로 데이터 전송은 목적지의 우선주소 사용 우선주소가 유효하지 못하면, 대체 주소 가운데 하나가 사용
SCTP 결합
멀티스트림 전달
SCTP는 데이터 전송과 데이터 전달이 구분됨 데이터 전송 • 근원지와 목적지 사이의 데이터 청크의 이동인 데이터 전송을 다루기 위해 TSN 번호 사용 데이터 전달 • 데이터 청크의 전달은 SI와 SNN으로 제어 SCTP는 여러 개의 스트림을 지원할 수 있으며, 송신기 프로세스는 서로 다른 스트림들을 정 의할 수 있고, 하나의 메시지는 이러한 스트림의 하나에 속할 수 있음 각 스트림에는 스트림을 유일하게 정의하는 스트림 식별자(SI)가 할당
SCTP 결합
멀티스트림 전달
SCTP는 각 스트림에 순서 있는(ordered, 기본)과 순서 없는(unordered) 두 가지 데이터 전달 을 지원 순서화된 데이터 전달 • 스트림에 데이터 청크가 순서를 정의하기 위해 스트림 순서번호(SSNs)를 사용 • 청크가 목적지에 도착하면 SCTP는 청크에 정의된 SSN에 따라 메시지 전달을 책임 • 이것은 일부 청크가 순서에 벗어나 도착할 수 있기 때문에 전달이 지연이 발생할 수 있음 순서 없는 데이터 전달 • 스트림에서 데이터 청크는 U 플래그 설정을 가지나, 이들의 SSN 필드 값은 무시 (SSNs를 소비하지 않음) • 순서 없는 데이터 청크가 목적지 SCTP에 도착하면, 이것은 청크를 운반하는 메시지를 다른 메시지의 대 기 없이 바로 응용에 전달 • 대부분의 경우 응용은 순서 있는 전달서비스를 사용하나, 때때로 일부 응용은 순서에 벗어나 전달되어야 만 하는 긴급 데이터를 전송할 때 순서 없는 전달 사용
SCTP 결합
단편화
데이터 전송에서 또 다른 문제는 단편화(fragmentation)임 SCTP가 IP와 이 용어를 같이 사용하지만 IP에서 단편화와 SCTP에서 단편화는 다른 위치에 속 함 IP에서의 단편화는 네트워크 층 SCTP 단편화는 전송 층에 속함 SCTP는 메시지의 크기가(IP 데이터그램에서 캡슐화될 때) 경로에 대한 MTU를 초과하지 않는 다면, 메시지로부터 데이터 청크를 생성할 때 프로세스에서 프로세스까지 메시지의 경계선을 보존 메시지를 운반하는 IP 데이터그램의 크기는 바이트로 메시지의 크기에 데이터 청크 헤더, 필 요한 SACK 헤더, SCTP 일반 헤더 그리고 IP헤더 등 4개의 오버헤드를 더함으로써 결정 전체 크기가 MTU를 초과한다면 메시지는 단편화가 필요
SCTP 결합
결합종료
SCTP에서는 TCP처럼 데이터를 교환하고 있는데 (클라이언트 또는 서버) 참여한 2개의 어느 쪽도 연결을 종료 할 수 있음 TCP와는 다르게 SCTP는 절반-폐쇄 상황을 허용하지 않음 • 만약 한쪽 종단이 결합을 폐쇄하면 다른 종단은 새로운 데이터 송신을 멈추어야만 함 • 데이터가 종료 요청 수신큐에 남아있다면 데이터는 송신되고 결합은 차단 됨
SCTP 결합
결합종료
Client Active close
1
SHUTDOWN VT : x
cumTSN
Server
2
Passive close SHUTDOWN COMPLETE VT : x
3
Time 결합폐쇄는 3개의 패킷을 사용 그림에서 폐쇄가 클라이언트에서 시작되었지만 서버에 의해서도 시작할 수 있음 Time
SCTP 흐름제어
SCTP에서 흐름제어(flow control)는 TCP와 유사 TCP에서는 하나의 데이터 단위, 즉 바이트를 다룸 SCTP에서는 2개의 데이터 단위인 바이트와 청크를 다룸 • rwnd와 cwnd의 값은 바이트로 표현하고 TSN과 확인응답 값은 청크로 표현
SCTP 흐름제어
수신기 사이트
수신기는 1개의 버퍼(큐)와 3개의 변수를 가짐 큐는 프로세스에 의해 아직 읽히지 않은 수신된 데이터 청크 유지 첫 번째 변수 : cumTSN을 유지 두 번째 변수: 이용 가능한 버퍼 크기 winsize를 유지 세 번째 변수: 마지막 누적된 확인응답 lastACK를 유지
SCTP 흐름제어
송신기 사이트
송신기가 사용하는 절차 송신기는 1개의 버퍼(큐)와 3개의 변수(curTSN, rwnd, inTransit)를 가짐 각 청크의 길이가 100바이트라 가정 버퍼는 송신이 되거나 또는 송신될 준비를 하고 있는 프로세스에 의해 생성된 청크 유지 첫 번째 변수 = curTSN : 송신이 되는 다음 청크를 나타냄 (이 값보다 작은 TSN을 가진 큐에 있는 모든 청크들은 송신되었지만 확인응답을 받지 않은 것으로 미해결) 두 번째 변수 = rwnd : 수신기(바이트로)에 의하여 공개된 마지막 winsize 세 번째 변수 = inTransit : 바이트가 전송되었고, 아직 확인응답이 되지 않은 이동상태에 있는 바이트 수를 유지
SCTP 오류 제어
SCTP는 TCP처럼 신뢰성 있는 전송층 프로토콜 송신기에 수신기 버퍼의 상태를 보고하기 위하여 SACK 청크를 사용
SCTP 오류 제어
수신기 사이트
수신기는 순서가 어긋난 청크들을 포함하여 도착한 모든 청크들을 버퍼에 저장 그러나 손실된 청크를 위한 공간을 남겨둠 중복 메시지를 버리거나 송신기에 보고하기 위하여 추적을 함
SCTP 오류 제어
수신기 사이트
다음은 수신기 사이트에 대한 전형적인 디자인과 특정한 지점에서 수신큐의 상태를 보여줌
SCTP 오류 제어
수신기 사이트
lastACK = 20 : 송신된 마지막 확인응답 winsize = 1000 : 이용 가능한 윈도 크기는 1000바이트 21에서 23까지의 청크들이 순서대로 수신 첫 번째 순서 없는 블록(out of order)은 26에서 28까지의 청크들을 가지고 있음 두 번째 순서 없는 블록은 31에서 34까지의 청크들을 포함 cumTSN = 23 : 현재 순서에 맞게 도착한 TSN (SACK에 포함될 번호) out of order 배열 : 순서가 맞지 않는 각 블록의 시작과 끝을 유지 duplicate 배열 : 수신된 중복 청크를 유지 이 청크들은 버려질 것이기 때문에 큐에 중복 청크를 저장할 필요가 없음 그림은 송신기에 수신기의 상태를 보고하기 위하여 송신될 SACK를 보여 줌 순서 없는 청크를 위한 TSN 번호는 누적된 TSN에 대해 상대적인(오프셋) 값임
SCTP 오류 제어
송신기 사이트
송신기 사이트에서 송신 큐와 재전송 큐의 두 가지 버퍼(큐)를 요구 3개의 변수(rwnd, inTransit, curTSN)를 사용
SCTP 오류 제어
송신기 사이트
송신 큐는 23에서 40까지의 청크 유지 23에서 36까지의 청크는 이미 송신되었으나 아직 확인응답이 되지 않은 미해결 청크들 curTSN = 37 : 송신되어야 하는 다음 청크를 가리킴 inTransit = 1400 : 각 청크가 100바이트라고 가정했을 때 1,400 바이트(23부터 36까지의 청 크)가 이동상태 있는 것을 의미
SCTP 오류 제어
송신기 사이트
패킷이 송신될 때 재전송 타이머가 그 패킷(패킷에 있는 모든 데이터 청크)을 위하여 시작 각 패킷에 하나의 타이머를 가진다고 가정(전체를 하나의 타이머로 구현하기도 함) 패킷에 대한 재전송 타이머가 끝날 때 또는 패킷 손실을 선언하는 4개의 중복 SACK이 도착하 면 패킷 안에 있는 청크들은 재전송되기 위하여 재전송 큐로 이동 됨. 이러한 청크들은 미해 결보다는 손실로 간주 재전송 큐에 있는 청크들은 높은 우선순위를 가짐 즉, 다음 번에 송신기는 청크를 보낼 때에는 재전송 큐의 21번 청크가 먼저 보내짐
SCTP 오류 제어
송신기 사이트
송신기의 상태가 어떻게 변경되는지 보기 위해 다음은 SACK가 송신사이트에 도착한다고 가 정 아래 그림이 새로운 상태를 보여줌
SCTP 오류 제어
재전송
손실되거나 또는 폐기된 청크를 제어하기 위하여, SCTP는 TCP처럼 재전송 타이머와 3개의 SACK를 수신하는 두 가지 전략을 채택 재전송 • • • SCTP는 세그먼트의 확인응답을 위해 대기하는 시간인 재전송 시간을 관리하는, 재전송 타이머를 사용 SCTP에서 RTO(타임아웃 시간 = RTT *2)와 RTT(왕복 시간)를 계산하기 위한 절차는 TCP를 위해 기술한 것과 동일 만약 호스트가 1개 이상의 IP 주소를 사용하면(멀티호밍), 각 경로를 위해 분리된 RTO가 계산 및 유지 되어야 함
SCTP 오류 제어
재전송
4개의 손실 보고 • • 송신기가 1개 이상의 특수한 데이터 청크를 표시하는 ACK 정보가 4번 수신되면 송신기는 이런 청크를 분실 및 즉시 재전송 큐로 이동 이런 동작은 TCP의 “빠른 재전송”과 유사
SCTP 오류 제어
SACK 청크 생성
오류제어에 있어서 또 다른 문제는 SACK 청크의 생성 SCTP SACK 청크 생성을 위한 규칙은 TCP ACK 플래그를 가지고 확인응답을 위하여 사용된 규칙과 유사
혼잡 제어
SCTP는 TCP 처럼 네트워크의 혼잡에 종속되는 패킷을 가진 전송층 프로토콜 SCTP 설계자들은 TCP에 사용된 혼잡 제어를 위한 전략과 동일한 것을 사용
감사합니다!
이 문서는 나눔글꼴로 작성되었습니다. 설치하기