490 likes | 1.05k Views
SCTP. 작성자 양나리 소속팀 멀티미디어공학과 작성년월일 2013. 05. 15. SCTP( 스트림 제어 전송 프로토콜 ). SCTP. 스트림 제어 전송 프로토콜 (SCTP : Stream Control Transmission Protocol) 멀티미디어 통신을 위한 프로토콜로써 UDT 와 TCP 의 일부 장점을 결합하여 설계된 새로운 전송층 프로토콜 . SCTP 서비스 . 프로세스 – 대 – 프로세스 통신 . UDP 혹은 TCP 와 마찬가지로 프로세스 - 대 - 프로세스 통신을 제공 .
E N D
SCTP 작성자양나리 소속팀 멀티미디어공학과 작성년월일2013. 05. 15.
SCTP(스트림 제어 전송 프로토콜) • SCTP • 스트림 제어 전송 프로토콜(SCTP : Stream Control Transmission Protocol) • 멀티미디어 통신을 위한 프로토콜로써 UDT와 TCP의 일부 장점을 결합하여 설계된 새로운 전송층 프로토콜
SCTP 서비스 • 프로세스 – 대 – 프로세스 통신 • UDP 혹은 TCP와 마찬가지로 프로세스-대-프로세스 통신을 제공 • 다중 스트림 • TCP는 스트림 지향 프로토콜 • TCP 클라이언트와 TCP 서버 사이에서 각 연결은 하나의 단일 스트림 포함 • 스트림의 어느 지점에서의 손실은 나머지 데이터의 전달을 막을 수 있는 단점을 가짐 • 이것은 텍스트를 전송하고 있을 때는 허용되나 오디오와 비디오와 같은 실시간 데이터를 송신할 때는 허용되지 않음(지연을 허용하지 않음) • SCTP는결합(association)이라고 하는 다중 스트림 서비스를 각 연결에 허용 • 스트림 중의 하나가 막혀도 다른 스트림은 여전히 데이터를 전달 할 수 있음 • 실시간성을 만족시킬 수 있음
SCTP 서비스 • 다중 스트림 Sending Process Receiving Process Stream of data chunks Stream of data chunks SCTP SCTP
SCTP 서비스 • 멀티호밍(multihoming) Server Client IP 3 IP 1 Internet IP 4 IP 2 • 클라이언트는 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과 232-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개의 데이터 청크만을 허용한다고 가정 • 스트림 0에 속한 데이터 청크는 첫 번째 패킷과 두 번째 패킷의 일부분으로 운반 • 스트림 1에 있는 데이터 청크는 두 번째와 세 번째 패킷에서 운반 • 스트림 2에 있는 데이터 청크는 세 번째와 네 번째 패킷에서 운반 • 각 데이터 청크는 TSN(누적번호, 흐름제어와 오류제어), SI(청크가 속해있는 스트림 정의), SSN(특정한 스트림에 있는 청크 순서 정의) 3개의 식별자를 필요로 함 Second packet Third packet First packet Fourth packet Stream 2 Stream 1 Stream 0 Flow of packets from sender to receiver
SCTP 특징 • 패킷 • TCP 세그먼트와 SCTP 패킷 비교 Header Header and options Control Data Data A segment in TCP A packet in TCP • SCTP는 데이터 청크, 스트림, 패킷을 가짐 • 결합은 많은 패킷을 송신하고 패킷은 여러 개의 청크를 포함하고 청크는 서로 다른 스트림에 속할 수 있음
SCTP 특징 • 확인응답 번호 • TCP의 확인응답 번호는 • 바이트 지향이고 순서번호로 참조 • TCP에서 제어정보는 세그먼트 헤더의 일부분 • 제어정보만을 운반하는 세그먼트에 대해 확인응답을 위하여 TCP는 순서번호와 확인응답 번호 사용 • SCTP의 확인응답번호 • 청크 지향적, TSN 참조 • 제어정보는 제어 청크에 의해 운반되고 TSN을 필요로 하지 않음 • 청크 제어는 또 다른 적절한 형태의 제어 청크에 의해 확인응답 • 순서번호나 확인응답 번호가 필요 없음
SCTP 패킷 형식 • SCTP 패킷은 필수 항목의 일반 헤더와 청크로 불리는 블록 집합들을 가짐 • 청크에는 제어청크와 데이터 청크 두 가지 형태가 있음 • 패킷에서 제어 청크는 데이터 청크 전에 옴
SCTP 패킷 형식 • 일반 헤더 • 일반 헤더(general header, 패킷헤더)는패킷이 속하는 각 결합의 끝 지점을 정의하며, 특정한 결합에 속하는 패킷을 보장하고 헤더 자체를 포함하는 패킷 내용에 대한 무결성을 보존 • 일반 헤더에는 4개의 필드가 있음 • 출발지와 목적지 포트 번호 :UDP와 TCP와 동일 • 검증태그는 결합을 위한 식별자로 사용, 결합 동안에 모든 패킷에서 반복 • 검사합의 크기는 CRC-32 검사합 사용을 가능하도록 16비트(UDP, TCP와 IP에서)에서 32비트로 증가
SCTP 패킷 형식 • 청크 • 제어정보와 사용자 데이터는 청크로 운반 • 첫 번째 3개의 필드는 모든 청크에 공통 • 정보 필드는 청크의 유형을 나타냄 • 유형필드는 청크의 256바이트까지 정의되지만 일부만 정의되고 나머지는 미래사용을 위해 유보 • 플래그 필드는 특별한 청크가 필요할 수 있는 특수한 플래그 정의
SCTP 패킷 형식 • 청크 • 청크의 유형
SCTP 결합 • 결합 설정 • SCTP에서 결합 설정(association establishment)은 4-방향 핸드셰이크(four-way handshake)를 요구 • 이 절차에서는 일반적으로 클라이언트인 프로세스는 SCTP를 사용하여 서버 측 프로세스와 함께 결합을 설정하기를 원함 • SCTP서버는 항상 결합을 설정할 준비를 하고 있음(수동개방) • 그러나 결합설정은 클라이언트에 의해 시작 됨 (능동개방)
SCTP 결합 • 결합 설정 • SCTP 결합설정 단계 Server Client INIT VT : 0 Active open Init tag: 1200 rwnd:1000 Init TSN: 100 1 INIT ACK VT : 1200 2 Init tag: 5000 rwnd:1200 Init TSN: 1700 Cookie COOKIE ECHO VT : 5000 3 Cookie COOKIE ACK VT : 1200 4 Cookie Time 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 결합 • 결합종료 Server Client SHUTDOWN VT : x Active close 1 cumTSN SHUTDOWN ACK VT : y Passive close 2 SHUTDOWN COMPLETE VT : x 3 Time Time • 결합폐쇄는 3개의 패킷을 사용 • 그림에서 폐쇄가 클라이언트에서 시작되었지만 서버에 의해서도 시작할 수 있음
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에 사용된 혼잡 제어를 위한 전략과 동일한 것을 사용
감사합니다! 이 문서는 나눔글꼴로 작성되었습니다. 설치하기