Bosh sahifa Wiki SCTP

SCTP

SCTP — xabar chegaralarini saqlaydigan, ishonchli yetkazish, bir nechta oqim va bir nechta tarmoq manzilini qo‘llab-quvvatlaydigan transport protokoli. Uning to‘liq nomi Stream Control Transmission Protocol hisoblanadi.

SCTP dastlab telekommunikatsiya signalizatsiyasini IP tarmog‘i orqali tashish uchun ishlab chiqilgan. Keyinchalik u WebRTC data channel, maxsus serverlararo aloqa va bir nechta tarmoq interfeysiga ega tizimlarda ham qo‘llanadigan transport protokoliga aylandi.

TCP baytlar oqimini beradi, SCTP esa alohida xabarlar bilan ishlaydi. Ilova bitta xabar yuborsa, qabul qiluvchi ham uni alohida xabar sifatida oladi.

Association

SCTPdagi ulanish association deb ataladi. Association ikki endpoint orasidagi mantiqiy aloqa bo‘lib, har endpoint bir nechta IP manzilga ega bo‘lishi mumkin.

Association quyidagilarni saqlaydi:

TCP ulanishi odatda bitta manba va destination IP juftligiga bog‘langan. SCTP association esa bir nechta manzil bilan davom etishi mumkin.

Xabar chegarasi

TCP ilovaga ketma-ket baytlar oqimini beradi. Sender ikki marta 100 baytdan yuborsa, receiver 50, 150 yoki 200 bayt ko‘rinishida o‘qishi mumkin.

SCTP xabar chegarasini saqlaydi. Sender alohida yuborgan xabar receiverga alohida xabar sifatida yetadi.

Bu signalizatsiya, event, buyruq, kichik protokol xabari va data channel uchun qulay.

Katta xabar SCTP ichida fragmentlarga bo‘linishi mumkin, ammo qabul qiluvchiga yana bitta to‘liq xabar sifatida beriladi.

Multi-streaming

Bitta association ichida bir nechta mustaqil stream mavjud.

Masalan:

Har stream o‘z tartib raqamiga ega. Bir streamdagi xabar yo‘qolsa, boshqa streamdagi tayyor xabarlar uni kutib qolmasligi mumkin. Bu TCPdagi transport darajasidagi head-of-line blocking ta’sirini kamaytiradi.

Tartiblangan va tartibsiz yetkazish

SCTP xabarni stream ichida tartiblangan yoki unordered ko‘rinishda yuborishi mumkin.

Ordered delivery

Xabarlar stream sequence asosida ketma-ket beriladi. Oldingi xabar yo‘qolsa, keyingisi kutadi.

Unordered delivery

Xabar kelishi bilan ilovaga beriladi. Tartib muhim bo‘lmagan telemetriya yoki real vaqt ma’lumoti uchun mos.

Tartibsiz yetkazish ishonchsiz degani emas. Xabar hali ham retransmission orqali yetkazilishi mumkin.

Multihoming

SCTP endpoint bir nechta IP manzilni associationga bog‘lay oladi.

Masalan, serverda 10.10.1.10 va 10.20.1.10 manzilli ikkita tarmoq interfeysi bo‘lishi mumkin.

Asosiy yo‘l ishlamay qolsa, SCTP boshqa peer manzilga o‘tadi. Bu path failover hisoblanadi.

Multihomingning foydasi:

  • tarmoq uzilishiga chidamlilik;
  • fizik interfeys zaxirasi;
  • operator kanal zaxirasi;
  • telekommunikatsiya tizimida yuqori mavjudlik.

SCTPning klassik multihoming modeli bir vaqtda barcha yo‘llardan throughput yig‘ish uchun emas, asosan failover uchun yaratilgan.

To‘rt bosqichli handshake

SCTP association to‘rt bosqichda yaratiladi.

  1. Client INIT yuboradi.
  2. Server INIT ACK va cookie qaytaradi.
  3. Client COOKIE ECHO yuboradi.
  4. Server COOKIE ACK bilan associationni tasdiqlaydi.

Cookie server tomonidan imzolangan holat ma’lumotini o‘z ichiga oladi. Server dastlabki INITdan keyin katta state saqlamasligi mumkin. Bu TCP SYN floodga o‘xshash hujumlarda server resursini himoya qilishga yordam beradi.

Verification Tag

Har association uchun Verification Tag mavjud. Kiruvchi SCTP packet tegishli associationga tegishli ekanini tekshirishda ishlatiladi.

Noto‘g‘ri Verification Tagli packetlar rad etiladi. Bu eski yoki tasodifiy packetning boshqa associationga aralashishini kamaytiradi.

Chunklar

SCTP packet umumiy header va bir nechta chunkdan tuziladi.

Chunk Vazifasi
DATA Ilova xabari
INIT Association boshlash
INIT ACK Boshlang‘ich javob
SACK Qabul qilingan ma’lumotni tasdiqlash
HEARTBEAT Yo‘l holatini tekshirish
HEARTBEAT ACK Heartbeat javobi
ABORT Associationni keskin yopish
SHUTDOWN Tartibli yopish
ERROR Protokol xatosi
COOKIE ECHO Cookie qaytarish
COOKIE ACK Cookie qabul qilinganini tasdiqlash

Bir SCTP packet ichida bir nechta chunk joylashishi mumkin.

TSN va SACK

Har DATA chunk Transmission Sequence Number oladi. TSN butun association bo‘yicha oshadi.

TSN yordamida yo‘qolgan chunk aniqlanadi, duplicate packet topiladi, acknowledgement beriladi va retransmission boshqariladi. Stream Sequence Number esa ma’lum stream ichidagi tartib uchun ishlatiladi.

SCTP qabul qilingan DATA chunklarni Selective Acknowledgement orqali bildiradi. SACK ichida cumulative TSN ACK, gap ACK blocks, duplicate TSN va receiver window bo‘lishi mumkin.

Gap ACK qaysi oraliq chunklar kelganini ko‘rsatadi. Sender faqat yo‘qolgan qismlarni qayta yuboradi.

Heartbeat

SCTP peer manzillarining ishlashini HEARTBEAT orqali tekshiradi.

Agar primary path javob bermasa:

  • xato hisoblagichi oshadi;
  • yo‘l inactive deb belgilanadi;
  • boshqa active manzil tanlanadi;
  • heartbeat orqali eski yo‘l tekshirib turiladi.

Yo‘l qayta ishlasa, u yana active holatga o‘tishi mumkin.

Congestion control

SCTP TCPga o‘xshash congestion control tamoyillaridan foydalanadi:

  • congestion window;
  • slow start;
  • congestion avoidance;
  • retransmission timeout;
  • fast retransmit.

Har destination path uchun alohida congestion holati yuritilishi mumkin. Receiver window qabul qiluvchi xotirasini, congestion window esa tarmoq sig‘imini himoya qiladi.

Partial Reliability

SCTP kengaytmalaridan biri Partial Reliability SCTP hisoblanadi.

Ba’zi xabarlar ma’lum vaqt yoki retransmission sonidan keyin foydasiz bo‘lishi mumkin. Masalan, real vaqt holat yangilanishi kechikib kelgandan ko‘ra tashlab yuborilgani ma’qul.

PR-SCTP senderga ayrim xabarlarni qayta uzatishni to‘xtatish imkonini beradi. Bu xususiyat WebRTC data channellarda ishlatilishi mumkin.

WebRTC

WebRTC data channel odatda quyidagi qatlamlardan foydalanadi:

Data Channel
SCTP
DTLS
ICE / UDP
IP

SCTP data channelga bir nechta stream, ordered yoki unordered, reliable yoki partial reliable va xabar chegarasi imkoniyatlarini beradi.

Brauzer SCTPni internetda bevosita IP protocol sifatida yubormaydi. U DTLS ichida tashiladi.

Port va IP protokol raqami

SCTP TCP yoki UDP portidan foydalanmaydi, lekin uning o‘z source va destination port maydonlari mavjud.

IP headerdagi protocol number SCTP uchun 132 hisoblanadi.

Firewall va NAT SCTPni alohida protokol sifatida qo‘llashi kerak. Ko‘p tarmoq qurilmalari TCP va UDPga qaraganda SCTPni kamroq qo‘llab-quvvatlaydi.

NAT bilan ishlash

SCTP multihoming va bir nechta IP manzilni xabarlarda uzatishi mumkin. NAT bu manzillarni to‘g‘ri o‘zgartirmasa, association ishlamasligi mumkin.

Carrier va korporativ tarmoqlarda SCTP-aware firewall yoki maxsus tunnellash ishlatiladi.

WebRTCda SCTP DTLS/UDP ichida bo‘lgani sababli oddiy NAT traversal mexanizmlaridan foydalanadi.

Telekommunikatsiya

SCTP SIGTRAN oilasida SS7 signalizatsiyasini IP tarmog‘ida tashish uchun keng ishlatilgan.

Muhim xususiyatlar:

Signalizatsiya trafikida xabar tartibi va uzluksizlik yuqori ahamiyatga ega.

Diagnostika

SCTP association ishlamasa, quyidagilar tekshiriladi:

Bir manzil ishlasa, ikkinchisi ishlamasa, har peer IP uchun alohida routing va firewall tekshiriladi.

Bog‘liq tushunchalar

Transport layer, Association, Multi-streaming, Multihoming, TSN, SACK, Heartbeat, PR-SCTP, SIGTRAN, WebRTC, TCP, UDP