🌐 SCTP (Stream Control Transmission Protocol)
SCTP (Stream Control Transmission Protocol)는 인터넷 프로토콜 스위트(Internet Protocol Suite)의 전송 계층(Transport Layer) 프로토콜 중 하나로, TCP(Transmission Control Protocol)의 신뢰성과 UDP(User Datagram Protocol)의 데이터그램 지향적인 특성을 결합하여 특히 통신 및 시그널링 환경의 요구사항을 충족시키기 위해 설계되었습니다.
DIAMETER와 같은 차세대 프로토콜에서 TCP를 대체하거나 보완하는 전송 계층으로 각광받고 있으며, IETF(Internet Engineering Task Force)의 RFC 4960에 정의되어 있습니다.
1. SCTP의 개요 및 등장 배경
가. 정의
SCTP는 메시지 지향적(Message-Oriented)인 신뢰성 있는 전송 프로토콜입니다. TCP와 마찬가지로 연결 지향적이며 흐름 제어, 혼잡 제어, 오류 검출 및 재전송을 제공하지만, Multi-homing 및 Multi-streaming과 같은 고유 기능을 통해 높은 가용성(Availability)과 지연 시간(Latency) 감소를 달성합니다.
나. 등장 배경
기존 TCP는 신뢰성 있지만 HoL(Head-of-Line) Blocking 문제와 단일 연결성(Single Homing)으로 인해 높은 장애 허용성(Fault Tolerance)을 요구하는 VoIP 시그널링(예: SS7 over IP)과 같은 실시간 애플리케이션에 적합하지 않았습니다. SCTP는 이러한 문제를 해결하기 위해 탄생했습니다.
2. SCTP의 핵심 기술적 특징 (Key Features)
SCTP를 TCP 및 UDP와 구분 짓는 핵심적인 기술적 특징은 다음과 같습니다.
1) Multi-homing (다중 호스팅)
- 설명: 단일 SCTP 연결(Association) 내에서 종단점(Endpoint)이 여러 개의 IP 주소와 연결될 수 있도록 허용합니다.
- 기술적 의미: 송신 측과 수신 측 모두 여러 인터페이스(NIC, Network Interface Card)를 통해 연결을 유지할 수 있습니다. 메인 경로에 장애가 발생하면 즉시 대체 경로(Alternate Path)로 전환하여 통신 연속성(Service Continuity)을 보장하는 장애 허용성(Fault Tolerance)을 극대화합니다.
2) Multi-streaming (다중 스트림)
- 설명: 단일 SCTP 연결 내에서 논리적으로 독립적인 여러 개의 데이터 스트림(Stream)을 지원합니다.
- 기술적 의미: 각 스트림은 독립적으로 데이터를 전달합니다. 따라서 한 스트림에서 패킷 손실이 발생하여 재전송이 필요하더라도, 다른 스트림의 데이터 전송을 막지 않습니다. 이는 TCP의 고질적인 문제인 HoL(Head-of-Line) Blocking 현상을 근본적으로 해결하여 지연 시간을 감소시킵니다. VoIP 시그널링과 같이 여러 유형의 메시지가 동시에 전송될 때 특히 유리합니다.
3) Message Boundary Preservation (메시지 경계 유지)
- 설명: 애플리케이션 계층에서 전송한 데이터 단위(메시지)의 경계를 그대로 유지하며 전송합니다.
- 기술적 의미: TCP는 바이트 스트림(Byte-Stream) 프로토콜로, 전송된 데이터의 경계를 구분하지 않습니다. 반면 SCTP는 UDP처럼 메시지 지향적으로, 수신자가 데이터의 시작과 끝을 명확히 구분할 수 있습니다. 이는 애플리케이션 설계 및 디버깅을 단순화합니다.
4) Enhanced Security & Reliability
- 4-Way Handshake: TCP의 3-Way Handshake보다 확장된 4-Way Handshake를 사용하여 DoS(Denial of Service) 공격의 한 유형인 SYN Flood 공격에 더 강력하게 대응할 수 있도록 설계되었습니다 (특히 Cookie Mechanism 사용).
- CRC32C Checksum: TCP의 체크섬(Checksum)보다 더 강력하고 오류 감지 능력이 뛰어난 CRC32C(Cyclic Redundancy Check 32-bit Castagnoli)를 사용하여 데이터 무결성을 높입니다.
3. SCTP의 구조 및 프로토콜 요소
가. Association (연관)
SCTP에서 연결(Connection)을 지칭하는 용어입니다. Association은 두 종단점 간의 관계를 나타내며, Multi-homing을 통해 다수의 IP 주소와 포트 쌍으로 구성될 수 있습니다.
나. Chunk (덩어리)
SCTP 메시지는 일반적인 TCP/UDP 패킷과 달리, 하나의 SCTP 패킷(PDU) 내에 공통 헤더(Common Header)와 여러 개의 청크(Chunk)로 구성됩니다. 청크는 실제 데이터(Data Chunk), 제어 정보(Control Chunk: INIT, SACK, HEARTBEAT 등)를 포함하는 단위입니다.
4. 활용 분야 및 기술적 가치
SCTP는 다음과 같은 환경에서 TCP 대비 명확한 우위를 가집니다.
- VoIP/텔레콤 시그널링: SS7(Signaling System 7) over IP (SIGTRAN) 환경에서 필수적으로 사용되며, 높은 신뢰성과 Multi-homing을 통한 고가용성을 제공합니다.
- 이동통신 코어 네트워크: DIAMETER 프로토콜의 전송 계층으로 사용되어 4G/5G 환경에서 안정적인 정책 및 과금 정보 전송을 보장합니다.
- WebRTC: 실시간 웹 통신을 위한 데이터 채널 전송 프로토콜로 고려되고 있습니다.
결론적으로, SCTP는 TCP의 신뢰성 모델을 유지하면서도 Multi-homing과 Multi-streaming을 통해 고가용성과 HoL Blocking 해소를 실현하여, 실시간 통신 및 고신뢰성이 요구되는 현대의 네트워크 환경에 최적화된 전송 프로토콜입니다.