컴퓨터공학/컴퓨터망

[컴퓨터망] Stream Control Transmission Protocol (SCTP)

NIMHO 2022. 7. 9. 19:48
728x90

복습하기 위해 학부 수업 내용을 필기한 내용입니다.
이해를 제대로 하지 못하고 정리한 경우 틀린 내용이 있을 수 있습니다.
그러한 부분에 대해서는 알려주시면 정말 감사하겠습니다.

Introduction

  • SCTP(Stream Control Transmission Protocol)는 신뢰할 수 있는 새로운 메시지 지향 transport layer protocol이다.
  • 아래 그림은 인터넷 프로토콜 스위트의 다른 프로토콜에 대한 SCTP의 관계를 보여준다.
  • SCTP는 application layer와 network layer 사이에 위치하며 애플리케이션 프로그램과 네트워크 운영 사이의 중개자 역할을 한다.

TCP/IP Protocol suite

SCTP는 UDP와 TCP의 최상의 기능을 결합한 메시지 지향적이고 신뢰할 수 있는 프로토콜이다.
사업장 안에 있는 서버들끼리 쓰이곤 한다.

SCTP : message-oriented
UDP : message-oriented
TCP : byte-oriented

 

Topics Discussed in the Section

  • TCP랑 거의 동일하다.
  • Process-to-Process Communication
  • Multiple Streams
    • TCP에는 없는 SCTP의 가장 큰 특징 
    • packet 내의 stream을 구분하는 ID가 있다.
    • 필요한 이유 : single이면 lost 됐을 때 뒤에 packet을 전송하지 못하고 all stop 되기 때문이다. (head of block 문제)
    • TCP : single stream
  • Multihoming
    • TCP에는 없는 SCTP의 가장 큰 특징
    • home이 여러 개 (port는 한 개, address는 두 개 이상 쓴다.)
    • router가 두 개 이상 물려있다. 한쪽이 말하면 다른 쪽으로 보낸다.
      • 성능적으로 우수해진다.
  • Full-Duplex Communication
  • Connection-Oriented Service
  • Reliable Service

end(유저)에서 사용하는 게 아니라 server급에서 사용하는 것이다.

Multiple-stream concept

contents 분류해서 stream으로 보낸다.
stream 하나가 에러 나더라도 복구하는 시간 동안 나머지에 영향을 주지 않는다.
TCP에서는 stream이 하나라서 복구하는 동안 데이터 전달이 차단된다. (head of block 문제 발생)

SCTP의 association은 여러 스트림을 포함할 수 있다.
TCP는 connection, SCTP는 connection보다 크기 때문에 association
(port 1개, ID는 여러 개)

Multihoming concept

Multihoming : home(address) 여러 개 쓴다. (router 여러 개가 물려있다.)
통신 : 한 개만 쓴다. (primary path) → 문제가 생기면 다른 router를 쓴다. (second path)
즉, 한쪽이 좋지 못하면 다른 쪽으로 보내주면 된다.
일반 유저는 사용하지 않는다.

SCTP association은 각 끝에 대해 여러 개의 IP address를 허용한다.

 

SCTP Features

  • Transmission Sequence Number (TSN)
    • TSN을 사용해 data chuck(덩어리) 번호가 매겨진다.
    • data chunk의 번호를 지정하여 제어된다.
    • packet 단위
    • TCP : Sequence number (Byte단위)
      • 시퀀스 번호를 사용해서 Byte번호를 지정하여 제어된다.
    • SCTP의 TSN와 TCP의 sequence number는 유사한 역할을 한다.
  • Stream Identifier (SI)
    • 서로 다른 Stream을 구별하기 위해 SI를 사용한다. (여러 stream이 있을 수 있기 때문에)
    • TCP는 하나의 stream만 있어서 SI구분이 필요하지 않다.
  • Stream Sequence Number (SSN)
    • 동일한 stream에 속하는 여러 data chunk를 구분하기 위해 SSN을 사용한다.
    • 한마디로 stream 내에서 순서 구분을 위해 사용한다.
  • Packets
    • 여러 control chunk와 data chunk를 한 패킷에 같이 묶을 수 있다. 
    • TCP의 segment와 같은 역할을 한다.
    • 아래 그림 (omparison between a TCP segment and an SCTP packet) 참조.
  • Acknowledgment Number
  • Flow Control
    • SCTP의 flow control는 TCP의 flow control와 유사한다.
    • TCP에서, 우리는 오직 하나의 데이터 단위, 즉 Byte만을 다루면 된다.
    • SCTP에서, 우리는 Byte와 chunk라는 두 단위의 데이터를 처리해야 한다.
    • rwnd와 cwnd의 값은 Byte로 표시되며, TSN과 확인 응답의 값은 chunk로 표시한다.
  • Error Control
    • TCP와 마찬가지로 SCTP는 신뢰할 수 있는 transport layer 프로토콜이다.
    • SACK chunk를 사용하여 수신기 버퍼의 상태를 송신자에게 보고한다.
    • 각 구현은 수신자 및 송신자 사이트에 대해 서로 다른 엔티티 및 타이머 세트를 사용한다.
  • Congestion Control
    • TCP와 마찬가지로 SCTP는 네트워크에서 혼잡이 발생할 수 있는 패킷을 포함하는 transport layer 프로토콜이다.
    • SCTP 설계자는 TCP에 대해 15장에서 설명한 것과 동일한 전략을 사용했다.
    • SCTP는 느린 시작, 혼잡 회피 및 혼잡 감지 단계를 가지고 있다.
    • TCP와 마찬가지로 SCTP도 빠른 재전송과 빠른 복구를 사용한다.

2022.07.04 - [컴퓨터공학/컴퓨터망] - [컴퓨터망] Transmission Control Protocol (TCP)

 

[컴퓨터망] Transmission Control Protocol (TCP)

복습하기 위해 학부 수업 내용을 필기한 내용입니다. 이해를 제대로 하지 못하고 정리한 경우 틀린 내용이 있을 수 있습니다. 그러한 부분에 대해서는 알려주시면 정말 감사하겠습니다. ▶TCP Ser

dhalsdl12.tistory.com

Comparison between a TCP segment and an SCTP packet

첫 번째 라인은 UDP, TCP, SCTP가 동일하다.
SCTP 두 번째 라인은 검증을 하기 위해서 사용한다.
control chunks는 2개 이상 올 수도 있다.

TCP에는 segment가 있고 SCTP에는 packet이 있다.
SCTP에서는 control 정보와 data 정보가 별도의 chunk로 전달된다.
(TCP는 header와 data로 구분된다. control 정보는 header에 있다.)

Packet, data chunks, and streams

SSN 옆에 숫자는 그 stream 내에서 몇 번째인지 알려준다.

data chunk는 TSN, SI 및 SSN의 세 가지 식별자로 식별된다.
TSN은 연결을 식별하는 누적 숫자, SI는 스트림을 정의, SSN은 스트림의 chunk를 정의한다.

SCTP에서 acknowledgment 번호는 data chunk만 승인하는 데 사용된다.
control chunk는 필요한 경우 다른 control chunk에 의해 승인된다.

Packet Format

  • SCTP 패킷은 필수 일반 헤더와 chunk라고 불리는 블록 집합을 가지고 있다.
  • chunk에는 control chunk와 data chunk의 두 가지 유형이 있다.
  • control chunk는 연결을 제어하고 유지하며, data chunk는 사용자 데이터를 전달한다.

SCTP packet format

SCTP 패킷에서 control chunk는 data chunk보다 먼저 온다.

 

Header

Common layout of a chunk

getneral header를 보여주는 표이다.
Verification tag는 패킷을 association에 일치시키는 숫자이다.
이전 연결 패킷과 이번 연결 패킷이 오인되는 것을 방지하는 역할을 한다.(association의 식별자 역할)
TCP에서 checksum은 16bit인데 SCTP는 32bit를 사용해서 더 정확히 확인한다.

 

Chunk

Multiple-stream concept

Type는 chunk type를 의미한다.
Flag는 특정 chunk가 필요할 수 있는 특수 flag를 정의한다.
Length는 청크 유형에 따라서 길이가 다르므로 청크 경계를 정의한다.

chunk는 32bit(4Byte) 경계에서 종료되어야 한다.
(4의 배수로 채워야 하기 때문에 빈 공간은 padding으로 채운다.)
padding Byte 수는 길이 필드 값에 포함되지 않는다.

 

Data chunk

Data chunk

DATA chunk는 둘 이상의 메시지에 속하는 데이터를 전송할 수 없지만 메시지는 여러 chunk로 분할될 수 있다.
DATA chunk의 데이터 필드는 적어도 1Byte의 데이터를 전송해야 한다.
즉, 길이 필드의 값은 17보다 작을 수 없다.

 

Control chunk

INIT chunk

INIT chunk를 전송하는 패킷에는 다른 chunk를 전송할 수 없다.

INIT ACK chunk

INIT ACK chunk를 전송하는 패킷에는 다른 chunk를 전송할 수 없다.

COOKIE ECHO chunk

INIT  → INIT ACK  → COOKIE ECHO  → COOKIE ACK 해야 setting(open) 된다.
INIT ACK에 cookie가 있다. 그래서 그래도 돌려보낸다. (3 way에서 4 way 됐다.)
COOKIE ECHO가 와야 만들기 시작한다. (이렇게 해야 다운되는 일이 적다. + 보안 때문에)

COOKIE ACK
SACK chunk

Gap ACK block ~~ : 어디 어디 받았고, 못 받았고를 한 번에 보내준다.
한 번에 빠진 부분을 다 알 수 있다.

HEARTBEAT and HEARTBEAT ACK chunk

multihoming을 위해서 연결 상태를 주기적으로 조사해야 한다.
문제 생기면 바로 백업하러 가야 하기 때문이다..
그래서 check를 계속해야 하는데 이것이 HEARTBEAT, HEARTBEAT ACK다.

SHUTDOWN chunks

끝낼 때는 3 way로 끝난다. (SHUTDOWN → SHUTDOWN ACK → SHUTDOWN COMPLETE)
TCP는 4 way로 끝난다. (FIN → ACK → FIN → ACK)

ERROR chunk
ABORT chunk (reset)

 

A SCTP Association (TCP로 치면 connection)

  • TCP와 마찬가지로 SCTP는 연결 지향 프로토콜이다.
  • 그러나, SCTP에서의 연결은 multihoming을 강조하기 위해 association이라고 한다.
  • SCTP의 connection을 association이라고 한다.
  • Association Establishment
  • Data Transfer
  • Association Termination
  • Association Abortion

 

Association Establishment

Four-way handshaking

INIT 또는 INIT ACK chunk를 전송하는 패킷에는 다른 chunk가 허용되지 않는다.
COOKIE ECHO 또는 COOKIE ACK chunk는 data chunk를 전달할 수 있다.
SCTP에서는 data chunk만 TSN을 소비하며, data chunk는 인식되는 유일한 chunk다.

 

Data transfer

Simple data transfer

SCTP에서 data chunk만 TSN를 사용한다. (ack 되는 유일한 chunk)
SCTP의 확인 응답은 순서대로 수신된 마지막 data chunk의 TSN인 누적 TSN을 정의한다.

 

Association Termination

Association termination (3way finish)

 

Association abortion

Association abortion (reset)

728x90