컴퓨터망 13) SCTP

zh025700·2022년 7월 10일
0

컴퓨터네트워크

목록 보기
13/26

컴퓨터망

13. SCTP

이 장에서는 SCTP라는 새로운 전송 계층 프로토콜에 대해 설명한다
SCTP는 인터넷에서 나날이 증가하고 있는 멀티미디어 및 스트림 트래픽을 처리할 수 있는 범용 전송 계층 프로토콜로 설계되었다

Introduction

  • SCTP(Stream Control Transmission Protocol)는 신뢰할 수 있는 새로운 메시지 지향 전송 계층 프로토콜이다
  • SCTP는 응용 프로그램 계층과 네트워크 계층 사이에 있으며 응용 프로그램과 네트워크 운영 사이의 중개자 역할을 한다

SCTP는 UDP와 TCP의 좋은 기능을 결합한 reliable, message-oriented 프로토콜이다

SCTP Services

Multi streams

  • 스트림이 하나만 있을 시에, 스트림에 손실이 발생하면 나머지 데이터의 전달이 차단된다는 것이다
  • SCTP는 각 연결에서 멀티스트림 서비스를 허용한다
  • 스트림 중 하나가 차단되더라도 다른 스트림은 여전히 데이터를 전달할 수 있다

SCTP의 연결에는 여러 스트림이 포함될 수 있다

Multihoming

SCTP 연결은 multihoming 서비스를 지원한다

  • 송신 및 수신 호스트는 연결을 위해 각 끝에서 여러 IP 주소를 정의할 수 있다
  • 이 방식에서는 한 경로가 실패할 때 중단 없는 데이터 전달을 위해 다른 인터페이스를 사용할 수 있다
    • 한쪽이 좋지 않으면 다른 쪽으로 보내면 된다

SCTP 연결은 각 끝에 대해 여러 IP 주소를 허용한다

SCTP Features

먼저 SCTP의 일반적인 기능에 대해 논의한 다음 TCP의 기능과 비교하겠다

TSN

  • TCP의 데이터 단위는 바이트이다
    • TCP의 데이터 전송은 시퀀스 번호를 사용하여 바이트 번호를 지정하여 제어된다
  • 반면에 SCTP의 데이터 단위는 데이터 청크이다
    • SCTP에서의 데이터 전송은 데이터 청크의 번호를 지정하여 제어된다
    • SCTP는 TSN(전송 시퀀스 번호)을 사용하여 데이터 청크에 번호를 지정한다
  • 즉, SCTP의 TSN은 TCP의 시퀀스 번호와 유사한 역할을 한다

SCTP에서 데이터 청크는 TSN을 사용하여 번호가 지정된다

SI

  • TCP에서는 각 연결에 하나의 스트림만 있다
  • SCTP에서는 각 연결에 여러 스트림이 있을 수 있다
    • SCTP의 각 스트림은 스트림 식별자(SI)를 사용하여 식별해야 한다

다른 스트림을 구별하기 위해 SCTP는 SI를 사용한다

SSN

  • 데이터 청크가 대상 SCTP에 도착하면 적절한 스트림으로 적절한 순서로 전달된다
  • 즉, SI 외에도 SCTP는 각 스트림의 각 데이터 청크를 SSN(스트림 시퀀스 번호)으로 정의한다

동일한 스트림에 속하는 서로 다른 데이터 청크를 구별하기 위해 SCTP는 SSN을 사용한다

Packet

  • SCTP에서 데이터는 데이터 청크로 운반되고 제어 정보는 제어 청크로 운반된다
  • 여러 제어 청크와 데이터 청크를 한 패킷에 함께 묶을 수 있다
  • SCTP의 패킷은 TCP의 세그먼트와 같은 역할을 한다

TCP에는 세그먼트, SCTP에는 패킷

SCTP에서 제어 정보와 데이터 정보는 별도의 청크로 운반된다

SCTP에는 데이터 청크, 스트림 및 패킷이 있다
패킷에는 여러 청크가 포함될 수 있으며 청크는 다른 스트림에 속할 수 있다
이러한 용어의 정의를 명확하게 하기 위해 프로세스 A가 3개의 스트림으로 프로세스 B에 11개의 메시지를 보내야 한다고 가정한다
처음 4개의 메시지는 첫 번째 스트림에 있고, 두 번째 3개의 메시지는 두 번째 스트림에 있으며, 마지막 4개의 메시지는 세 번째 스트림에 있다

스트림 0의 데이터 청크는 첫 번째 및 두 번째 패킷의 일부로 전달된다
스트림 1의 패킷은 두 번째 및 세 번째 패킷에 포함된다
스트림 2의 패킷은 세 번째 및 네 번째 패킷으로 전달된다

데이터 청크는 TSN, SI 및 SSN의 세 가지 식별자로 식별된다
TSN은 연결을 식별하는 누적 번호이다 SI는 스트림을 정의한다
SSN은 스트림의 청크를 정의한다

SCTP에서 ack number는 데이터 청크만 승인하는 데 사용된다
제어 청크는 필요한 경우 다른 제어 청크에 의해 승인된다

Pakcet format

  • SCTP 패킷에는 필수 일반 헤더와 청크라고 하는 블록 집합이 있다
  • 청크에는 제어 청크와 데이터 청크의 두 가지 유형이 있다
  • 제어 청크는 연결을 제어하고 유지한다
  • 데이터 청크는 사용자 데이터를 전달한다

SCTP 패킷에서 제어 청크는 데이터 청크보다 먼저 온다

헤더

source port address

  • 패킷을 보내는 프로세스의 포트 번호를 정의하는 16비트 필드

destination port address

  • 패킷을 수신하는 프로세스의 포트 번호를 정의하는 16비트 필드

verification tag

  • 패킷을 association에 일치시키는 숫자
  • 이전 연결의 패킷이 이 연결의 패킷으로 오인되는 것을 방지
  • association의 식별자 역할

checksum

  • 32비트 써서 더 정확해

Chunk

  • 제어 정보 또는 데이터는 청크로 운반된다
  • 청크에는 그림과 같은 공통 정보들이 있다

type

  • 이 8비트 필드는 청크 유형을 정의할 수 있다

flag

  • 이 8비트 필드는 특정 청크가 필요할 수 있는 특수 플래그를 정의

length

  • 청크 유형에 따라 길이가 다르므로 청크 경계를 정의, 16비트

청크는 32비트(4바이트)경계에서 종료되어야한다

  • 빈 공간은 패딩으로 채운다

패딩 바이트 수는 length 필드 값에 포함되지 않는다

Data chunk

DATA 청크는 사용자 데이터를 전달

TSN, SI , SSN이 이 청크에 포함된다

DATA 청크는 둘 이상의 메시지에 속하는 데이터를 전달할 수 없지만 메시지는 여러 청크로 분할될 수 있다
DATA 청크의 데이터 필드는 최소 1바이트의 데이터를 전달해야 하며, 이는 길이 필드의 값이 17보다 작을 수 없음을 의미한다

Control chunk

  • STCP는 연결할때 4way로 진행된다

INIT 청크를 전달하는 패킷에는 다른 청크가 포함될 수 없다

INIT ACK 청크를 운반하는 패킷에는 다른 청크가 포함될 수 없다

보안때문에 cookie 부분을 넣었다

Sack chunk(데이터 transfer에)

  • 한번에 받은 메시지를 다 알려준다
    • 한번에 빠진 부분을 다 알 수 있다

Heartbeat and Heartbeat ack chunk(데이터 transfer에)

  • multihoming을 위해서

    • 이 두 청크는 연결 상태를 주기적으로 조사하는 데 사용

Shutdown chunk(연결 종료에)

  • shutdown -> shutdown Ack -> Complete
  • 3 way로 종료된다

Error chunk

  • 패킷에 에러가 있을 때 보내는 청크

Abort chunk

  • ABORT 청크는 치명적인 오류를 발견하고 연결을 중단해야 할 때 전송

An SCTP Association

  • SCTP는 TCP와 마찬가지로 연결 지향 프로토콜이다
  • SCTP에서 연결은 멀티호밍을 강조하기 위해 association이라고 한다

SCTP에서 연결을 association이라고 한다

Association Establishment

  1. 클라이언트는 INIT 청크를 포함하는 첫 번째 패킷을 보낸다 이 패킷의 확인 태그(VT)(일반 헤더에 정의됨)는 아직 정의된 확인 태그가 없기 때문에 0이다 INIT 태그에는 다른 쪽에서 오는 패킷에 사용할 시작 태그가 포함되어 있다 청크는 또한 이 방향에 대한 초기 TSN을 정의한다
  2. 서버는 INIT ACK 청크를 포함하는 두 번째 패킷을 보낸다 확인 태그는 INIT 청크의 초기 태그 필드 값이다 이 청크는 다른 방향으로 사용될 태그를 정의하고, 서버에서 클라이언트로의 데이터 흐름을 위한 초기 TSN을 정의하고, 서버의 rwnd를 설정한다
  3. 클라이언트는 COOKIE ECHO 청크를 포함하는 세 번째 패킷을 보낸다 이것은 서버에서 보낸 쿠키를 변경 없이 에코하는 매우 간단한 청크이다
  4. 서버는 COOKIE ECHO 청크의 수신을 확인하는 COOKIE ACK 청크를 포함하는 네 번째 패킷을 보낸다

INIT 또는 INIT ACK 청크를 운반하는 패킷에는 다른 청크가 허용되지 않는다
COOKIE ECHO 또는 COOKIE ACK 청크는 데이터 청크를 전달할 수 있다

Data transfer

  1. 클라이언트는 TSN 7105 및 7106과 함께 두 개의 DATA 청크를 전달하는 첫 번째 패킷을 보낸다
  2. 클라이언트는 TSN 7107 및 7108과 함께 두 개의 DATA 청크를 전달하는 두 번째 패킷을 보낸다
  3. 클라이언트로부터 DATA 청크 수신을 확인하는 데 필요한 SACK 청크가 포함된다 TCP와 달리 SCTP는 다음으로 예상되는 TSN이 아니라 마지막으로 받은 순서대로 TSN을 확인한다 TSN이 121인 서버의 첫 번째 DATA 청크도 포함된다
  4. 서버는 TSN 122로 마지막 DATA 청크를 나르는 또 다른 패킷을 보낸다
  5. 마지막으로 클라이언트는 서버에서 마지막 두 DATA 청크를 수신했음을 확인하는 SACK 청크가 포함된 패킷을 보낸다

SCTP에서는 데이터 청크만 TSN을 사용한다
데이터 청크는 ack되는 유일한 청크이다

SCTP의 승인은 누적 TSN, 순서대로 수신된 마지막 데이터 청크의 TSN을 정의

Association Termination

  • TCP와 달리 SCTP는 half close 연결을 허용하지 않는다
  • 연결 종료는 3개의 패킷을 사용

Association abortion

  • SCTP의 abortion 과정은 매우 간단하다
  • ABORT 청크를 보내고 연결을 중단할 수 있다

Flow control

SCTP의 흐름 제어는 TCP의 흐름 제어와 유사
TCP에서는 단 하나의 데이터 단위인 바이트만 처리하면 된다
SCTP에서는 바이트와 청크의 두 가지 데이터 단위를 처리해야 한다

Error control

SCTP는 TCP와 마찬가지로 신뢰할 수 있는 전송 계층 프로토콜이다
SACK 청크를 사용하여 수신자 버퍼의 상태를 발신자에게 보고한다
각 전송은 수신자 및 발신자에 대해 서로 다른 엔티티 및 타이머 세트를 사용한다

Congestion control

TCP와 마찬가지로 SCTP는 네트워크에서 혼잡에 영향을 받는 패킷이 있는 전송 계층 프로토콜이다
SCTP는 TCP와 동일한 전략을 사용한다
SCTP에는 느린 시작(기하급수적 증가), 혼잡 회피(가산적 증가) 및 혼잡 감지(승법적 감소) 단계가 있다
TCP와 마찬가지로 SCTP도 빠른 재전송과 빠른 복구를 사용합니다.

profile
정리

0개의 댓글