1 / 43

SCTP

SCTP. 작성자 양나리 소속팀 멀티미디어공학과 작성년월일 2013. 05. 15. SCTP( 스트림 제어 전송 프로토콜 ). SCTP. 스트림 제어 전송 프로토콜 (SCTP : Stream Control Transmission Protocol) 멀티미디어 통신을 위한 프로토콜로써 UDT 와 TCP 의 일부 장점을 결합하여 설계된 새로운 전송층 프로토콜 . SCTP 서비스 . 프로세스 – 대 – 프로세스 통신 . UDP 혹은 TCP 와 마찬가지로 프로세스 - 대 - 프로세스 통신을 제공 .

niran
Download Presentation

SCTP

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. SCTP 작성자양나리 소속팀 멀티미디어공학과 작성년월일2013. 05. 15.

  2. SCTP(스트림 제어 전송 프로토콜) • SCTP • 스트림 제어 전송 프로토콜(SCTP : Stream Control Transmission Protocol) • 멀티미디어 통신을 위한 프로토콜로써 UDT와 TCP의 일부 장점을 결합하여 설계된 새로운 전송층 프로토콜

  3. SCTP 서비스 • 프로세스 – 대 – 프로세스 통신 • UDP 혹은 TCP와 마찬가지로 프로세스-대-프로세스 통신을 제공 • 다중 스트림 • TCP는 스트림 지향 프로토콜 • TCP 클라이언트와 TCP 서버 사이에서 각 연결은 하나의 단일 스트림 포함 • 스트림의 어느 지점에서의 손실은 나머지 데이터의 전달을 막을 수 있는 단점을 가짐 • 이것은 텍스트를 전송하고 있을 때는 허용되나 오디오와 비디오와 같은 실시간 데이터를 송신할 때는 허용되지 않음(지연을 허용하지 않음) • SCTP는결합(association)이라고 하는 다중 스트림 서비스를 각 연결에 허용 • 스트림 중의 하나가 막혀도 다른 스트림은 여전히 데이터를 전달 할 수 있음 • 실시간성을 만족시킬 수 있음

  4. SCTP 서비스 • 다중 스트림 Sending Process Receiving Process Stream of data chunks Stream of data chunks SCTP SCTP

  5. SCTP 서비스 • 멀티호밍(multihoming) Server Client IP 3 IP 1 Internet IP 4 IP 2 • 클라이언트는 2개의 IP주소를 가지고 2개의 로컬네트워크에 연결 • 서버도 2개의 IP주소를 가지고 2개의 네트워크에 연결 • 클라이언트와 서버는 서로 다른 IP 쌍을 가지고 결합을 만들 수 있음 • 그러나 현재의 SCTP 구현에서는 IP 주소 1개 쌍만이 정상적인 통신을 위하여 선택, 다른 경로는 주 경로가 실패하면 사용 • 현재의 SCPT는 다른 경로 사이에서 부하 분배는 허락하지 않음

  6. SCTP 서비스 • 멀티호밍(multihoming) • TCP 연결 • 하나의 소스와 하나의 목적지 IP 주소 포함 • 송신기 또는 수신기가 멀티호밍 호스트라 할지라도(다수의 IP주소를 가지고 1개 이상의 물리적 주소에 연결된) 이러한 IP 주소들은 연결하는 동안 목적지당 1개의 주소만이 이용됨 • STCP 결합은 멀티호밍 서비스(multihoming service) 지원 • 송신 호스트와 수신 호스트는 결합을 위해 각 종단에 다수의 IP 주소를 정의 • 고장 감내 접근법 : 하나의 경로가 실패할 때 다른 경로로 중단 없이 데이터 전달 • 장점 : 인터넷 전화와 같은 실시간 데이터를 송수신할 때 매우 큰 도움

  7. SCTP 서비스 • 전 이중 통신 • SCTP는 동시에 양방향으로 데이터가 진행할 수 있는 전이중 서비스 제공 • 각 SCTP는 송신과 수신 버퍼를 갖고 패킷들은 양쪽 모두의 방향으로 송신 • 연결지향 서비스 • SCTP는 연결지향 프로토콜(연결, 종료설정 지원) • 그러나 SCTP에서는 연결을 결합(association)이라고 함 • 신뢰성 있는 서비스 • SCTP는 TCP처럼 신뢰성 있는 전송 프로토콜(오류, 흐름제어) • 데이터가 안전하게 도착했는지를 확인하기 위하여 확인응답 절차 사용

  8. SCTP 특징 • 전송 순서번호(TSN) • TCP의 데이터 단위는 바이트 • TCP에서 데이터 전송은 순서번호를 사용하여 번호가 부여된 바이트에 의해 제어 • SCTP에서 데이터 단위는 단편화 때문에 프로세스부터 들어오는 메시지와 일대일 관계를 가질 수 도 또는 그렇지 않을 수도 있는 데이터 청크 • STCP는 데이터 전송은 데이터 청크에 번호를 부여함으로써 제어 • SCTP는 데이터 청크에 번호를 부여하기 위하여 전송 순서 번호(TSN : Transmission Sequence Number)를 사용 • SCTP에서 TSN은 TCP에서 순서번호와 유사한 역할을 수행 • TSN 은 32비트이고 0과 232-1 사이에서 임의로 초기화 • 각 데이터 청크는 헤더에 해당하는 TSN을 운반

  9. SCTP 특징 • 스트림 식별자(SI) • TCP에서는 각 연결에 하나의 스트림만이 존재 • SCTP에서는 각 결합에 여러 개의 스트림이 존재 • SCTP에 있는 각 스트림은 스트림 식별자(SI : Stream Identifier)를 사용하여 식별 • 각 데이터 청크는 목적지에 도착할 때 스트림 안에서 위치가 적절하게 되도록 헤더에 SI를 운반 • SI는 0부터 시작하는 16비트 번호 • 스트림 순서번호(SSN) • 데이터 청크가 목적지 SCTP에 도착할 때 올바른 순서로 적절한 스트림에 전달 • 이것은 SI외에 SCTP는 각 스트림이 데이터 링크를 스트림 순서 번호(SSN : Stream Sequence Number)로 정의한다는 것을 의미

  10. SCTP 특징 • 패킷 • TCP에서 세그먼트는 데이터와 제어 정보를 운반 • 데이터는 바이트의 집합으로 운반되고 제어 정보는 헤더에 6개의 제어 플래그로 정의 • SCTP의 설계는 TCP와 완전히 다름 • 데이터는 데이터 청크로써 운반되고 제어 정보는 제어 청크로 운반 • 여러 개의 제어 청크와 데이터 청크는 하나의 패킷에 함께 묶일 수 있음 • SCTP의 패킷은 TCP의 세그먼트와 동일한 역할 수행

  11. SCTP 특징 • 패킷 • 프로세스 A가 프로세스 B에게 3개의 스트림으로 11개의 메시지를 보낸다고 가정 • 첫 번째 4개의 메시지는 첫 번째 스트림 안에 있음 • 두 번째 3개의 메시지는 두 번째 스트림 안에 있음 • 마지막 4개의 메시지는 세 번째 스트림 안에 있음 • 하나의 메시지가 길면 여러 개의 데이터 청크로 운반될 수 있지만, 각 메시지들은 하나의 데이터 청크로 맞춤 • 따라서 3개의 스트림으로 11개의 데이터 청크를 가짐 • 응용프로세스는 11개 메시지를 SCTP로 운반하고 각 메시지는 알맞은 스트림으로 표시 • 프로세스가 첫 번째 스트림으로부터 한 메시지를 전달하고 또 다른 메시지를 두 번째 스트림으로부터 전달할 수는 있지만 첫 번째에 속하는 모든 메시지를 먼저 전달하고 두 번째 스트림에 속하는 메시지는 다음에, 그리고 끝으로 마지막 스트림에 속하는 모든 메시지를 전달하는 것으로 가정

  12. 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

  13. SCTP 특징 • 패킷 • TCP 세그먼트와 SCTP 패킷 비교 Header Header and options Control Data Data A segment in TCP A packet in TCP • SCTP는 데이터 청크, 스트림, 패킷을 가짐 • 결합은 많은 패킷을 송신하고 패킷은 여러 개의 청크를 포함하고 청크는 서로 다른 스트림에 속할 수 있음

  14. SCTP 특징 • 확인응답 번호 • TCP의 확인응답 번호는 • 바이트 지향이고 순서번호로 참조 • TCP에서 제어정보는 세그먼트 헤더의 일부분 • 제어정보만을 운반하는 세그먼트에 대해 확인응답을 위하여 TCP는 순서번호와 확인응답 번호 사용 • SCTP의 확인응답번호 • 청크 지향적, TSN 참조 • 제어정보는 제어 청크에 의해 운반되고 TSN을 필요로 하지 않음 • 청크 제어는 또 다른 적절한 형태의 제어 청크에 의해 확인응답 • 순서번호나 확인응답 번호가 필요 없음

  15. SCTP 패킷 형식 • SCTP 패킷은 필수 항목의 일반 헤더와 청크로 불리는 블록 집합들을 가짐 • 청크에는 제어청크와 데이터 청크 두 가지 형태가 있음 • 패킷에서 제어 청크는 데이터 청크 전에 옴

  16. SCTP 패킷 형식 • 일반 헤더 • 일반 헤더(general header, 패킷헤더)는패킷이 속하는 각 결합의 끝 지점을 정의하며, 특정한 결합에 속하는 패킷을 보장하고 헤더 자체를 포함하는 패킷 내용에 대한 무결성을 보존 • 일반 헤더에는 4개의 필드가 있음 • 출발지와 목적지 포트 번호 :UDP와 TCP와 동일 • 검증태그는 결합을 위한 식별자로 사용, 결합 동안에 모든 패킷에서 반복 • 검사합의 크기는 CRC-32 검사합 사용을 가능하도록 16비트(UDP, TCP와 IP에서)에서 32비트로 증가

  17. SCTP 패킷 형식 • 청크 • 제어정보와 사용자 데이터는 청크로 운반 • 첫 번째 3개의 필드는 모든 청크에 공통 • 정보 필드는 청크의 유형을 나타냄 • 유형필드는 청크의 256바이트까지 정의되지만 일부만 정의되고 나머지는 미래사용을 위해 유보 • 플래그 필드는 특별한 청크가 필요할 수 있는 특수한 플래그 정의

  18. SCTP 패킷 형식 • 청크 • 청크의 유형

  19. SCTP 결합 • 결합 설정 • SCTP에서 결합 설정(association establishment)은 4-방향 핸드셰이크(four-way handshake)를 요구 • 이 절차에서는 일반적으로 클라이언트인 프로세스는 SCTP를 사용하여 서버 측 프로세스와 함께 결합을 설정하기를 원함 • SCTP서버는 항상 결합을 설정할 준비를 하고 있음(수동개방) • 그러나 결합설정은 클라이언트에 의해 시작 됨 (능동개방)

  20. 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

  21. SCTP 결합 • 데이터 전송 • 결합의 목적은 2개의 종단 간에 데이터를 전송하는 것 • 결합이 설정된 후에 양 방향으로 데이터 통신이 이루어짐 • 클라이언트와 서버는 모두 데이터를 송신할 수 있음 • TCP처럼 SCTP는 피기배킹을 지원

  22. SCTP 결합 • 데이터 전송 • SCTP 데이터 전송 • 프로세스부터 오는 메시지들은 하나의 단위로 취급되고 단편화가 되지 않았다면 데이터 청크로 삽입 • 프로세스로부터 수신한 메시지는 데이터 청크 헤더를 메시지에 붙임으로써 하나의 데이터 청크 또는 단편화가 된다면 여러 개의 데이트 청크가 됨 • 메시지 또는 메시지 단편에 의해 형성된 데이터 청크는 하나의 TSN 하나를 가짐 • 데이터 청크만이 TSN을 사용하고 데이터 청크만이 SACK 청크에 의해 확인응답이 됨

  23. SCTP 결합 • 멀티호밍 데이터 전송 • 멀티호밍은 통신을 위하여 양 종단 간 여러 개의 IP 주소를 정의하는 것을 허용 • 그러나 이러한 주소들의 하나만이 우선 주소(primary address)로 정의될 수 있고 나머지들은 대체 주소가 됨 • 우선주소는 • 우선주소는 결합을 설정하는 동안 정의 • 한쪽 종단의 우선 주소는 다른 종단에 의해 결정 • 즉, 근원지의 목적지를 위한 우선주소를 정의 • 기본적으로 데이터 전송은 목적지의 우선주소 사용 • 우선주소가 유효하지 못하면, 대체 주소 가운데 하나가 사용

  24. SCTP 결합 • 멀티스트림 전달 • SCTP는 데이터 전송과 데이터 전달이 구분됨 • 데이터 전송 • 근원지와 목적지 사이의 데이터 청크의 이동인 데이터 전송을 다루기 위해 TSN 번호 사용 • 데이터 전달 • 데이터 청크의 전달은 SI와 SNN으로 제어 • SCTP는 여러 개의 스트림을 지원할 수 있으며, 송신기 프로세스는 서로 다른 스트림들을 정의할 수 있고, 하나의 메시지는 이러한 스트림의 하나에 속할 수 있음 • 각 스트림에는 스트림을 유일하게 정의하는 스트림 식별자(SI)가 할당

  25. SCTP 결합 • 멀티스트림 전달 • SCTP는 각 스트림에 순서 있는(ordered, 기본)과순서 없는(unordered) 두 가지 데이터 전달을 지원 • 순서화된 데이터 전달 • 스트림에 데이터 청크가 순서를 정의하기 위해 스트림 순서번호(SSNs)를 사용 • 청크가 목적지에 도착하면 SCTP는 청크에 정의된 SSN에 따라 메시지 전달을 책임 • 이것은 일부 청크가 순서에 벗어나 도착할 수 있기 때문에 전달이 지연이 발생할 수 있음 • 순서 없는 데이터 전달 • 스트림에서 데이터 청크는 U 플래그 설정을 가지나, 이들의 SSN 필드 값은 무시 (SSNs를 소비하지 않음) • 순서 없는 데이터 청크가 목적지 SCTP에 도착하면, 이것은 청크를 운반하는 메시지를 다른 메시지의 대기 없이 바로 응용에 전달 • 대부분의 경우 응용은 순서 있는 전달서비스를 사용하나, 때때로 일부 응용은 순서에 벗어나 전달되어야만 하는 긴급 데이터를 전송할 때 순서 없는 전달 사용

  26. SCTP 결합 • 단편화 • 데이터 전송에서 또 다른 문제는 단편화(fragmentation)임 • SCTP가 IP와 이 용어를 같이 사용하지만 IP에서 단편화와 SCTP에서 단편화는 다른 위치에 속함 • IP에서의 단편화는 네트워크 층 SCTP 단편화는 전송 층에 속함 • SCTP는 메시지의 크기가(IP 데이터그램에서 캡슐화될 때) 경로에 대한 MTU를 초과하지 않는다면, 메시지로부터 데이터 청크를 생성할 때 프로세스에서 프로세스까지 메시지의 경계선을 보존 • 메시지를 운반하는 IP 데이터그램의 크기는 바이트로 메시지의 크기에 데이터 청크 헤더, 필요한 SACK 헤더, SCTP 일반 헤더 그리고 IP헤더 등 4개의 오버헤드를 더함으로써 결정 • 전체 크기가 MTU를 초과한다면 메시지는 단편화가 필요

  27. SCTP 결합 • 결합종료 • SCTP에서는 TCP처럼 데이터를 교환하고 있는데 (클라이언트 또는 서버) 참여한 2개의 어느 쪽도 연결을 종료 할 수 있음 • TCP와는 다르게 SCTP는 절반-폐쇄 상황을 허용하지 않음 • 만약 한쪽 종단이 결합을 폐쇄하면 다른 종단은 새로운 데이터 송신을 멈추어야만 함 • 데이터가 종료 요청 수신큐에 남아있다면 데이터는 송신되고 결합은 차단 됨

  28. 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개의 패킷을 사용 • 그림에서 폐쇄가 클라이언트에서 시작되었지만 서버에 의해서도 시작할 수 있음

  29. SCTP 흐름제어 • SCTP에서 흐름제어(flow control)는 TCP와 유사 • TCP에서는 하나의 데이터 단위, 즉 바이트를 다룸 • SCTP에서는 2개의 데이터 단위인 바이트와 청크를 다룸 • rwnd와 cwnd의 값은 바이트로 표현하고 TSN과 확인응답 값은 청크로 표현

  30. SCTP 흐름제어 • 수신기 사이트 • 수신기는 1개의 버퍼(큐)와 3개의 변수를 가짐 • 큐는 프로세스에 의해 아직 읽히지 않은 수신된 데이터 청크 유지 • 첫 번째 변수 : cumTSN을 유지 • 두 번째 변수: 이용 가능한 버퍼 크기 winsize를 유지 • 세 번째 변수: 마지막 누적된 확인응답 lastACK를 유지

  31. SCTP 흐름제어 • 송신기 사이트 • 송신기가 사용하는 절차 • 송신기는 1개의 버퍼(큐)와 3개의 변수(curTSN, rwnd, inTransit)를 가짐 • 각 청크의 길이가 100바이트라 가정 • 버퍼는 송신이 되거나 또는 송신될 준비를 하고 있는 프로세스에 의해 생성된 청크 유지 • 첫 번째 변수 =curTSN : 송신이 되는 다음 청크를 나타냄 (이 값보다 작은 TSN을 가진 큐에 있는 모든 청크들은 송신되었지만 확인응답을 받지 않은 것으로 미해결) • 두 번째 변수 =rwnd : 수신기(바이트로)에 의하여 공개된 마지막 winsize • 세 번째 변수 =inTransit : 바이트가 전송되었고, 아직 확인응답이 되지 않은 이동상태에 있는 바이트 수를 유지

  32. SCTP 오류 제어 • SCTP는 TCP처럼 신뢰성 있는 전송층 프로토콜 • 송신기에 수신기 버퍼의 상태를 보고하기 위하여 SACK 청크를 사용

  33. SCTP 오류 제어 • 수신기 사이트 • 수신기는 순서가 어긋난 청크들을 포함하여 도착한 모든 청크들을 버퍼에 저장 • 그러나 손실된 청크를 위한 공간을 남겨둠 • 중복 메시지를 버리거나 송신기에 보고하기 위하여 추적을 함

  34. SCTP 오류 제어 • 수신기 사이트 • 다음은 수신기 사이트에 대한 전형적인 디자인과 특정한 지점에서 수신큐의 상태를 보여줌

  35. 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에 대해 상대적인(오프셋) 값임

  36. SCTP 오류 제어 • 송신기 사이트 • 송신기 사이트에서 송신 큐와 재전송 큐의 두 가지 버퍼(큐)를 요구 • 3개의 변수(rwnd, inTransit, curTSN)를 사용

  37. SCTP 오류 제어 • 송신기 사이트 • 송신 큐는 23에서 40까지의 청크 유지 • 23에서 36까지의 청크는 이미 송신되었으나 아직 확인응답이 되지 않은 미해결 청크들 • curTSN = 37 : 송신되어야 하는 다음 청크를 가리킴 • inTransit = 1400 : 각 청크가 100바이트라고 가정했을 때 1,400 바이트(23부터 36까지의 청크)가 이동상태 있는 것을 의미

  38. SCTP 오류 제어 • 송신기 사이트 • 패킷이 송신될 때 재전송 타이머가 그 패킷(패킷에 있는 모든 데이터 청크)을 위하여 시작 • 각 패킷에 하나의 타이머를 가진다고 가정(전체를 하나의 타이머로 구현하기도 함) • 패킷에 대한 재전송 타이머가 끝날 때 또는 패킷 손실을 선언하는 4개의 중복 SACK이 도착하면 패킷 안에 있는 청크들은 재전송되기 위하여 재전송 큐로 이동 됨. 이러한 청크들은 미해결보다는 손실로 간주 • 재전송 큐에 있는 청크들은 높은 우선순위를 가짐 • 즉, 다음 번에 송신기는 청크를 보낼 때에는 재전송 큐의 21번 청크가 먼저 보내짐

  39. SCTP 오류 제어 • 송신기 사이트 • 송신기의 상태가 어떻게 변경되는지 보기 위해 다음은 SACK가 송신사이트에 도착한다고 가정 • 아래 그림이 새로운 상태를 보여줌

  40. SCTP 오류 제어 • 재전송 • 손실되거나 또는 폐기된 청크를 제어하기 위하여, SCTP는 TCP처럼 재전송 타이머와 3개의 SACK를 수신하는 두 가지 전략을 채택 • 재전송 • SCTP는 세그먼트의 확인응답을 위해 대기하는 시간인 재전송 시간을 관리하는, 재전송 타이머를 사용 • SCTP에서 RTO(타임아웃 시간 = RTT *2)와 RTT(왕복 시간)를 계산하기 위한 절차는 TCP를 위해 기술한 것과 동일 • 만약 호스트가 1개 이상의 IP 주소를 사용하면(멀티호밍), 각 경로를 위해 분리된 RTO가 계산 및 유지되어야 함

  41. SCTP 오류 제어 • 재전송 • 4개의 손실 보고 • 송신기가 1개 이상의 특수한 데이터 청크를 표시하는 ACK 정보가 4번 수신되면 송신기는 이런 청크를 분실 및 즉시 재전송 큐로 이동 • 이런 동작은 TCP의 “빠른 재전송”과 유사

  42. SCTP 오류 제어 • SACK 청크 생성 • 오류제어에 있어서 또 다른 문제는 SACK청크의 생성 • SCTP SACK 청크 생성을 위한 규칙은 TCP ACK 플래그를 가지고 확인응답을 위하여 사용된 규칙과 유사 • 혼잡 제어 • SCTP는 TCP 처럼 네트워크의 혼잡에 종속되는 패킷을 가진 전송층 프로토콜 • SCTP 설계자들은 TCP에 사용된 혼잡 제어를 위한 전략과 동일한 것을 사용

  43. 감사합니다! 이 문서는 나눔글꼴로 작성되었습니다. 설치하기

More Related