IP Network상에서 전송하기 위해 IETF SIGTRAN Working group에서2000년 10월 표준으로 제안(RFC 2960)한 전송프로토콜이다. SCTP는 IP Layer 위에서 동작하는 TCP와 같은 연결지향적인 프로토콜로 신뢰성 있는 데이터 전송이 가능하며,Association 설정 시 발생할 수 있는 DOS 공격 (Denial of Service Attacks)이나 Masquerading 공격에 안전하도록 설계되어졌다. 또한 SCTP에는 Multi-Streaming 기능이 있어 TCP의 Head Of Line Blocking 으로 인한 성능 저하 문제를 해결 하였다. 특히 SCTP 연결 endpoint들이 여러 개의 IP주소를 가질 수 있는 Multi-Homed일 경우 한 개 이상의 통신 경로를 설정하여 Primary Path에 Path Fail 발생하더라도 미리 설정된 다른 통신 경로로 자동적인 데이터 전송을 하게 하는 Multi-Homing 기능이 있어 데이터 전송의 신뢰성을 높일 수 있도록 개발 되었다. SCTP는 Multi-Homing과 Multi-Streaming 등의 기능을 통하여 네트워크 상에서 PSTN 망의 신호를 안전하게 전달할 수 있다. 또한 SCTP가 가지는 특징들은 데이터 전송의 성능과 유연성이 높이 요구되는 Mobile IP분야, 멀티미디어나 HTTP와 같이 다중 객체를 전송해야 하는 Application 환경과 높은 신뢰성과 보안이 요구되는 인증과 군 통신 장비 등에 유용하게 사용될 수 있어 차세대 전송 프로토콜로 주목 받고 있다. [그림1 SCTP Concept] SCTP 패킷은 Common Header와 Chunk로 구분된다. Common Header에는 Association이 설정된 Endpoint들을 유일하게 식별하게 할 수 있는 32 bit의 Verification Tag field가 있고, Checksum field 있어 Adler-32 알고리즘을 이용한 SCTP 패킷의 무결성과 일관성들을 검사 할 수 있다. [그림2 SCTP Packet Format] Common Header 다음에 Chunk들이 위치한다. 각 Chunk들은 Chunk type으로 시작 하여 Chunk의 Type을 구분할 수 있다. 이 Chunk 들은 SCTP의 연결 설정, 해제, 에러 전송 등을 위한 Control Chunk들과 데이터 전송을 위한 Data Chunk, 응답을 위한 Sack Chunk 등이 있다. 연결 요청에 수락을 하고 데이터를 수신하는 측을 Endpoint Z라고 가정한다. Stream Sequence Number가 있어 데이터가 전송되는 Stream과 지정된 Stream으로 전송된 데이터 순서번호를 인식할 수 있어 SCTP는 Multi Stream 이 가능해진다. - Initiation (INIT) 두 개의 endpoints 사이의 SCTP Association을 하기 위해 사용된다. INIT chunk Inbound Streams, Outbound Streams의 수, Window Size, 사용 가능한 IP(IPv4, IPv6), Cookie Preservative 등이 Variable Parameter에 포함되어 전송된다. - Initiation Acknowledgement(INIT ACK) Init Chunk의 ACK를 보내기 위해 사용되는 Chunk이다. 형태는 INIT Chunk와 유사하나 State Cookie와 Unrecognized Parameter등이 Variable Parameter에 포함되어 전송된다. - Selective Acknowledgement(SACK) SACK Chunk는 수신된 DATA Chunk의 TSN에 나타난 전송 데이터의 수신된 결과와 손실된 데이터 갭을 통보하기 위해서 데이터 송신 endpoint에게 보내어진다. 또한 SACK는 Cumulative TSN ACK field 와 Advertise Receiver Window Credit(a_rwnd) Parameter가 있어 데이터 수신을 위한 버퍼 크기와 수신된 데이터의 양을 관리하여 그 결과를 상대 endpoint에게 알린다. - Heartbeat Request(HEARTBEAT) Endpoint A 와 현재 연결된 다른 Endpoint B 사이의 전송 경로가 SCTP Multi-Homed 기능에 의해 생성된 여러 개의 데이터 전송 경로 (Endpoint 들이 가지고 있는 IP들에 할 당 된 경로)가 데이터 전송이 가능한지를 판별하기 위해 연결된 Endpoint A의 IP들과 경로로 맺어진 Endpoint B의 IP들에 보내어 지는 Chunk이다.(Endpoint A와 B의 반대도 성립) HEARTBEAT Chunk에는 파라미터로 현재 송신 시간과 목적지 IP를 가지게 된다. - Heartbeat Acknowledgement(HEARTBEAT ACK) HEARTBEAT Chunk에 대한 응답으로서 HEARTBEAT 송신자에게 보낸다. - Shutdown Association (SHUTDOWN) ABORT는 Endpoint A 와 Endpoint Z 사이의 SCTP 연결이 비정상적으로 종료할 때 연결을 close하기 위해 보내어지는 상대 endpoint에게 보내지는 Chunk이다. - Operation Error (ERROR) Endpoint A나 Endpoint Z사이에 발생한 에러 상태를 상대 Endpoint에 알리기 위해 보내어지는 Chunk이다. 이 chunk는 하나 이상의 에러 원인들을 포함하고 있다. - Cookie Echo (COOKIE ECHO) COOKIE ECHO는 association의 초기화 동안에만 사용된다. 초기화 프로세스가 완성되면 Association의 initiator(연결 요청 Endpoint)에 의해 peer(연결 수락 Endpoint)로 보내진다. 이 chunk는 Association 내에서 보내지는 어느 DATA chunk보다 반드시 앞에 위치 해야 한다. 또한 같은 패킷에서 하나 이상의 DATA chunk들과 함께 bundle될 수 있다. - Cookie Acknowledgement (COOKIE ACK) COOKIE ACK는 COOKIE ECHO chunk의 수신에 대한 acknowledge에 사용된다. 이 chunk는 반드시 association내에서 전송된 어느 DATA chunk나 SACK chunk보다 앞서 와야 한다. 또한 SCTP 패킷에서 하나 이상의 DATA chunk들이나 SACK chunk와 함께 bundle될 수 있다. SCTP는 IP 네트워크 기반에서 효율적인 데이터 전송을 위해 RFC 2960에 따라 Bundling, Fragment and Reassembly, Flow과 Congestion Control 메커니즘 등을 구현하고 있다. 또한 Transport Sequence Number (TSN)을 이용하여 전송된 데이터의 중복데이터와 손실데이터를 찾을 수 있는 메커니즘이 있어 데이터 전송의 신뢰성을 높일 수 있다. SCTP는 TCP와 같은 방법으로 혼잡제어와 흐름 제어를 위해 window size를 이용한다. 즉 수신 endpoint는 Receiver Window를 데이터 송신 endpoint에게 통보하여 송신되는 데이터의 크기를 조절한다. 이때 데이터 수신 endpoint는 Receiver Window Size를 SACK Chunk를 통하여 알려준다. 망 내에 존재하는 패킷의 수가 과도하게 증가되는 현상을 혼잡 (Congestion) 이라고 정의하며 혼잡 현상을 방지하거나 제거하는 기능을 혼잡제어 (Congestion Control) 라고 한다. Slow-start는 패킷을 저장하는 중간 라우터의 저장할 버퍼 공간의 부족으로 데이터 전송에 문제가 생기는 것을 말한다. SCTP는 TCP Congestion Control과 Slow-start의 메커니즘을 같이 구현 하고 있다. 또한 SCTP에서 구현되는 혼잡제어와 Slow-start 메커니즘은 Multi-Homed에 의해서 구성된 모든 경로에 대하여 Congestion Control / Slow-start 메커니즘을 적용한다. SACK Chunk의 Cumulative TSN Ack filed를 이용하여 수신된 데이터를 알리고 모든 데이터가 성공적으로 수신하였다면 Fragment된 데이터를 Reassembly 하여 ULP(예 Application)에 전송하게 된다. 만약 데이터의 손실이 생겼다면 Gap Blocks field를 이용하여 송신 측에 데이터를 알리고 데이터 송신 측은 Fast Retransmit 메커니즘을 이용하여 데이터를 재전송하게 된다. SCTP는 Stream 내에서 전송되는 데이터 순서 SSN(stream sequence number)를 정의한다. 이 SSL은 Data Chunk 내에 존재 하며 만약 Data Chunk의 U flag가 1에 설정되어 있으면 데이터 순서에 상관 없이 Upper layer에게 전달 한다. 반대로 Data Chunk의 U flag가 0으로 설정되면 수신된 DATA chunk를 SSL에 따라 Upper layer에게 전달해야 한다. 만일 DATA chunk들이 SSN의 순서를 벗어나서 도착했다면 수신된 DATA chunk들을 ULP로 전달하기 위해 DATA chunk들이 재 정렬될 때까지 대기 되어야만 한다. SCTP는 효율적인 데이터 전송을 위해 fragmentation과 reassembly 메커니즘을 지원 한다. 만약 보낼 사용자 메시지가 현재 MTU의 크기를 초과하면 fragment가 요구된다. 만약 SCTP가 데이터 전송 시 사용자 메시지의 fragmentation을 지원하지 않으면 SCTP는 에러를 사용자에게 전달 하고 다시 메시지를 보내지 않는다. 데이터 수신 endpoint는 Fragment 된 데이터를 Reassembly하여 ULP에 전달하게 된다. SCTP는 전송하는 SCTP 패킷 안에 여러 개의 Chunk를 포함하는 단순한 방법으로 chunk를 묶을 수 있다. 이 때 SCTP 패킷은 IP header를 포함하는 IP 데이터그램의 크기는 현재 Path MTU 보다 작거나 같아야 한다. 즉 Bundling되는 데이터 크기는 MTU크기에 의하여 Bundling되는 데이터 크기가 결정된다. 만약 수신 측의 endpoint가 멀티홈드라면 데이터를 송신하는 endpoint는 현재 모든 경로 중의 가장 작은 MTU 값을 primary path의 MTU를 값으로 설정한다. SCTP endpoint는 주어진 인터넷 경로에 존재하는 최대 전송 단위(MTU)를 측정하고, MTU를 초과하여 전송하는 패킷을 중지하고, 때때로 Path MTU(PMTU)의 변경을 시도한다. 만약 SCTP가 Multi-Homed라면 모든 경로에 대하여 Path MTU Discovery를 실행한다. SCTP 전송 프로토콜은 하나의 SCTP Association에 여러 개의 Stream을 가지는 Multi-stream 기능이 있다. SCTP는 각 Stream 마다 Stream 순서번호(SSN : Stream Sequence Number)가 있어 Stream의 순서를 유지하여 해당 Stream으로 전송되는 데이터를 관리하여 신뢰성 있는 데이터의 전송이 가능하도록 하고 있다. 패킷이 재 전송 되기를 기다리는 동안 Application에 데이터를 전달하지 못하는 Head of line blocking 현상이 발생한다. 그러나 SCTP는 여러 개의 Stream으로 데이터를 전송할 수 있어 어느 한 Stream에서 데이터의 패킷이 손실이 발생하여 데이터 전송이 지연되더라도 다른 Stream으로 전송되던 데이터는 지연현상 없이 Application에 데이터를 전송할 수 있는 Multi-Stream기능이 있다. 따라서 SCTP는 여러 개의 Stream으로 데이터를 전송 할 수 있어 데이터 전송을 빠르게 할 수 있다는 장점을 가질 수 있다. 만약 데이터 전송 및 여러 개의 객체를 전송해야 하는 HTTP 프로토콜에서 SCTP를 전송 프로콜로 사용한다면 데이터 전송 속도를 향상 시킬 수 있을 것이다. 시 순서 유지가 필요 없다면 U flag를 1에 설정하여 순서 없이 데이터 전송을 할 수 있다. 이 때 U flag를 인식한 데이터의 수신 endpoint에서는 데이터의 순서를 유지할 필요가 없기 때문에 데이터의 순서를 유지하기 위하여 소모되는 시간이나 손실 된 패킷에서 발생한 데이터를 재 수신하기 위하여 기다려야 하는 시간을 줄일 수 있다. 따라서 Data Chunk의 Ordered, Unordered 기능은 Multi-stream과 병행되어 사용되기 때문에 데이터 전송 능력을 향상을 가져 올 수 있다. [그림3 SCTP Multi-Stream 1] [그림4 CTP Multi-Stream 2] SCTP는 SCTP Association을 맺고자 하는 endpoint들이 Multiple Ethernet의 각각에 IP가 할당된 Multi homed인 경우에 적용 될 수 있다. SCTP는 SCTP Association 성립되는 Multi-Homed endpoint들에게 하나의 Association에서 각 IP에 해당하는 데이터 전송 경로를 가질 수 있도록 한다. 즉 SCTP는 2개 이상의 사용 가능한 Ethernet 카드에 할당된 IP주소를 처음 SCTP Association Establish을 설정할 때 상호의 IP를 교환하여 각 IP에 해당하는 데이터 전송 경로를 확보하게 된다. 주 데이터 전송경로로 사용하고 다른 경로들은 Idle 상태로 있게 되어진다. 이 때 SCTP는 Idle 상태에 있는 경로에 대하여 HEART BEAT CHUNK를 이용하여 Idle 경로가 사용이 가능 한지 주기적으로 모니터링을 한다. 만약 Primary Path에 Path Fail이 발생 한 경우 Idle상태에 있는 경로 중 데이터 전송이 가능 한 경로를 하나 선택하여 Primary Path로 바꾸고 데이터 전송을 계속하게 된다. 이 때 SCTP는 Association 이 끊기지 않게 이전 경로에서 새로운 경로로 변환 해주고 이전 경로에 대한 Association 정보를 새로운 경로에 대하여 자동적으로 적용하도록 한다. 이러한 SCTP의 Multi-Homed 기능은 하나의 경로만으로 데이터를 전송하는 경우보다 데이터 전송의 신뢰성을 배가 시킬 수 있는 SCTP의 특징이다. [그림5 SCTP Multi-Homed] [그림6 SCTP Multi-Homed Path Fail]
: Application의 수준의 보안 이외에SCTP 위에 TLS를 적용하여 보안 기능을 강화 : Multi-Homing 기능을 활용한 신뢰성 있는 데이터 전송 : SCTP 데이터 전송의 Unordered 기능 적용 됨 : 좋지 못한 환경으로 인한 Path Fail이 발생이 쉬운 전쟁에 사용되는 군 장비나 위성통신을 위하여 Multi-Homing 기능이 활용 됨 : Multi-Homing 기능을 이용한 무선 통신 단말기에 적용 : 다중 객체를 송수신해야 하는 HTTP에 전송프로토콜로 SCTP를 사용하여 데이터 전송의 성능을 향상을 가져옴 SCTP는 PSTN 망의 호 처리를 위해 사용되는 신호를 IP네트워크에 전송 하기 위해 사용되는 전송프로토콜이다. 그러나 SCTP는 TCP와 같은 신뢰성 있는 전송을 보장하고 UDP처럼 유연하게 데이터를 전송할 수 있을 뿐만 아니라 DOS나 SYN Flooding 공격에 안전한 전송 프로토콜이기 때문에 많은 Appliation 개발자들이 선호할 것으로 보여진다. 이러한 SCTP의 특징은 특정 기능을 요구하는 장비에 활용될 수 있기 때문에 그 가치는 더욱 높다. 특히 Multi-Stream 기능과 Multi-Homed 기능은 성능을 요구하는 Mobile 분야나 안전성 및 보안을 요구하는 군 통신 장비에 널리 사용될 수 있을 것으로 보인다. SCTP의 장점을 활용하기 위한 연구는 2000년 10월 표준 전송프로토콜로 제안된 이후 지금까지 여러 분야에서 연구가 활발히 진행 되고 있는데 Mobile 분야와 군사 및 위성장비 분야, 그리고 SCTP를 사용한 보안인증 분야 등에서 활발한 연구가 진행되고 있다. 또한 다른 한편에서는 IP기반의 네트워크 장비에 탑재하기 위한 리눅스 커널과, BSD 시스템에서의 동작하는 개발이 진행 되고 있다. 지금까지 SCTP에 대한 연구는 각 분야에서 학계, 산업계, 그리고 표준단체가 협력 관계를 유지하며 많은 연구가 진행 되어 온것이 사실이다. 그러나 아직은 IP Network 상에서 SCTP가 산업계에 적용할 수 있을 정도로 안정화되거나 검증되지 않았기 때문에 SCTP의 활용가치는 폭넓고 미래 지향적이기는 하나 보편적인 사용을 위해서는 더욱 많은 연구와 검즘이 요구되고 있는 것이 사실이다. 특히 성능과 안전성이 요구되는 네트워크 관리 분야에서도 SCTP를 활용한다면 현존하는 시스템보다 훨씬 진보된 망 관리 시스템 구성되어질 것으로 보인다. RFC2960 : Stream Control Transmission protocol RFC3257 : Stream Control Transmission Protocol Applicability Statement RFC 2719 : Architectural Framework for Signaling Transport draft-riegel-tuexen-mobile-sctp-00.txt : A Study of SCTP Services in a Mobile-IP Network atiq-sctp-congestion-4 : SCTP Multi-Stream capable within Mobile IP http://www.oscer.ou.edu/Symposium2002/atiq_sctp_supercomputing1.pdf http://rivus.sourceforge.net/RivuS.ppt http://oss.software.ibm.com/linux/presentations/lwce2002/Chats/SCTP/SCTP- LWE.pdf http://www.sctp.be http://www.sctp.de http://www.sctp.org http://www.lksctp.org : This is the home page of an open source Linux kernel implementation http://pel.cis.udel.edu : The SCTP homepage of the University of Delaware http://tdrwww.exp-math.uni-essen.de/inhalt/aktuell/start.php3 The sctp homepage of the University of Essen http://netlab.cis.temple.edu/SCTP The SCTP homepage of the Temple University. http://www.ss7.net : OpenSS7 Stack Project http://playground.sun.com/sctp : Solaris Stack Project www.intellinet-tech.com/products/sigtran/sctp : Intellinet SCTP Project www.tcpdump.org : tcpdump SCTP module Project |
'IT' 카테고리의 다른 글
XSS 보안 위협「당신의 사이트는 안전한가?」 (0) | 2007.11.13 |
---|---|
데이터 저장 기술 (0) | 2007.11.11 |
5T산업 ==> 6T산업 (0) | 2007.11.07 |
u-IT839 전략 초점은 ‘유비쿼터스’ 조성 (0) | 2007.11.07 |
조립컴퓨터로 삽질... (0) | 2007.10.15 |