SCTP

Kokeneet kirjoittajat eivät ole vielä tarkistaneet sivun nykyistä versiota, ja se voi poiketa merkittävästi 12. maaliskuuta 2017 tarkistetusta versiosta . tarkastukset vaativat 34 muokkausta .

SCTP ( englanniksi  Stream Control Transmission Protocol  - "lähetysprotokolla vuon ohjauksella") on siirtokerroksen protokolla tietokoneverkoissa, joka ilmestyi vuonna 2000 IETF :ssä . RFC 4960 kuvaa tätä protokollaa, ja RFC 3286 tarjoaa siihen teknisen johdannon.

Kuten mikä tahansa muu kuljetuskerroksen protokolla, SCTP toimii samalla tavalla kuin TCP tai UDP [1] . Uudempana protokollana SCTP:ssä on useita innovaatioita, kuten monisäie, suojaus DDoS-hyökkäyksiltä, ​​synkroninen yhteys kahden isännän välillä kahden tai useamman itsenäisen fyysisen kanavan kautta (multi-homing).

Suojatun yhteyden muodostaminen

Uuden yhteyden luominen TCP- ja SCTP-protokollassa tapahtuu pakettien kuittausmekanismilla (kättely). TCP-protokollassa tätä menettelyä kutsutaan kolmisuuntaiseksi kättelyksi. Asiakas lähettää SYN-paketin (lyhenne Synchronize). Palvelin vastaa SYN-ACK-paketilla (Synchronize-Acknowledge). Asiakas kuittaa SYN-ACK-paketin vastaanoton ACK-paketilla. Tämä päättää yhteydenmuodostuksen.

TCP:ssä on mahdollinen haavoittuvuus, jossa hyökkääjä voi lähettää useita SYN-paketteja palvelimelle määrittämällä väärennettyjä lähde-IP-osoitteita. Vastaanotettuaan SYN-paketin palvelin varaa osan resursseistaan ​​uuden yhteyden muodostamiseksi. Monien SYN-pakettien käsittely vaatii ennemmin tai myöhemmin kaikki palvelimen resurssit ja tekee uusien pyyntöjen käsittelyn mahdottomaksi. Tämän tyyppistä hyökkäystä kutsutaan " SYN-tulvaksi " (SYN-tulva).

SCTP-protokolla on suojattu tällaisilta hyökkäyksiltä nelisuuntaisen kättelymekanismin ja tunnuksen (evästeen) avulla. SCTP:ssä asiakas aloittaa yhteydenmuodostuksen lähettämällä INIT-paketin. Vastauksena palvelin lähettää INIT-ACK-paketin, joka sisältää tunnuksen (ainutlaatuinen avain, joka tunnistaa uuden yhteyden). Asiakas vastaa sitten lähettämällä COOKIE-ECHO-paketin, joka sisältää palvelimelta vastaanotetun tunnuksen. Vasta sen jälkeen palvelin allokoi resurssinsa uudelle yhteydelle ja vahvistaa tämän lähettämällä asiakkaalle COOKIE-ACK-paketin.

Tiedonsiirtoviiveen ongelman ratkaisemiseksi suoritettaessa nelisuuntaista kättelymenettelyä SCTP-protokollassa on sallittua sisällyttää dataa COOKIE-ECHO- ja COOKIE-ACK-paketteihin.

Tiedonsiirron asteittainen lopettaminen

Katsotaanpa eroja SCTP-socketin sulkemisproseduurin ja TCP:n puolisulkumenettelyn välillä.

TCP-protokollassa yhteyden osittaisen sulkemisen tilanne on mahdollinen, kun yksi solmu on lopettanut tiedonsiirron (lähettämällä FIN-paketin), mutta jatkaa tiedon vastaanottamista tällä yhteydellä. Toinen solmu voi jatkaa tiedon lähettämistä, kunnes se katkaisee yhteyden omalta puoleltaan. Sovellukset käyttävät osittaista sulkemistilaa harvoin, joten SCTP-protokollan kehittäjät pitivät tarpeellisena korvata se viestisarjalla olemassa olevan yhteyden katkaisemiseksi. Kun solmu sulkee pistorasian (lähettää SHUTDOWN-viestin), molempien vertaiskäyttäjien on lopetettava datan lähettäminen sallien vain pakettien vaihdon, jotka kuittaavat aiemmin lähetetyn datan vastaanottamisen.

Monisäikeinen

TCP hallitsee tavusekvenssiä : lähettävän sovelluksen lähettämien tietojen tulee saapua vastaanottavaan sovellukseen täsmälleen samassa järjestyksessä (kun taas IP-protokolla pystyy kääntämään pakettien järjestyksen; lisäksi puuttuvat paketit lähetetään uudelleen ja saapuvat yleensä vastaanottajalle epäjärjestyksessä; tiedot puskuroidaan näiden ilmiöiden torjumiseksi). SCTP voi siirtää dataa kahden pisteen ( solmun ) välillä samanaikaisesti useiden viestivirtojen kautta . Toisin kuin TCP , SCTP käsittelee kokonaisia ​​viestejä (säilytä viestin raja ) , ei tavallisia tietotavuja . Tällä tavalla SCTP on samanlainen kuin UDP. Jos siis lähettäjä lähettää palvelimelle ensimmäisessä vaiheessa 100 tavua sisältävän viestin , jota seuraa vielä 50 tavua, niin ensimmäisen vaiheen vastaanottaja saa täsmälleen ensimmäisen viestin ensimmäiset 100 tavua ja vasta sitten 50 tavua toinen lukutoiminto socketista .

Termi "multithreading" (eng. multi-streaming ) viittaa SCTP:n kykyyn lähettää rinnakkain useiden itsenäisten viestivirtojen kautta . Siirrämme esimerkiksi useita kuvia HTTP- sovelluksen ( esimerkiksi selaimen ) kautta. Voit käyttää tähän joukkoa useita TCP -yhteyksiä, mutta SCTP-yhteys (eng. SCTP-assosiaatio ), joka hallitsee useita viestivirtoja tähän tarkoitukseen, on myös hyväksyttävä. Virrat ovat yksisuuntaisia, eli ne siirtävät tietoa vain yhteen suuntaan ( yllä oleva kuva on epätarkka ).

TCP saavuttaa oikean tavujärjestyksen virrassa antamalla abstraktisti järjestysnumeron jokaiselle lähetetylle yksikölle ja järjestämällä vastaanotetut tavut käyttämällä määritettyjä järjestysnumeroita niiden saapuessa. Toisaalta SCTP antaa eri järjestysnumerot tietyssä virrassa lähetetyille viesteille . Tämä mahdollistaa viestien itsenäisen järjestyksen eri säikeissä. Joka tapauksessa monisäikeisyys on vaihtoehto SCTP:ssä. Käyttäjäsovelluksen toiveiden mukaan viestejä voidaan käsitellä ei lähetysjärjestyksessä, vaan saapumisjärjestyksessä.

Edut

SCTP:n käytön etuja ovat:

Osa eduista johtuu siitä, että SCTP:n alkuperäiset kehittäjät suunnittelivat protokollan siirtämään puhelua ( SS7 ) IP :n yli .


Haitat

Turvallisuus

SCTP on suunniteltu sisältämään joitakin turvallisuutta parantavia ominaisuuksia, kuten "4x handshake" (verrattuna TCP:n "3x handshake") SYN-tulvahyökkäysten estämiseen ja suuret evästeet yhdistysten todentamiseen.

Luotettavuus on ollut yksi SCTP-protokollan turvallisuussuunnittelun avaintekijöistä. Multi-homing mahdollistaa yhteyden pysymisen auki, vaikka jotkin käytössä olevista reiteistä ja liitännöistä eivät ole käytettävissä. Tämä on erityisen tärkeää SIGTRANille , joka käyttää SCTP :tä SS7 -protokollaviestien ja -palveluiden kuljettamiseen IP-verkon yli, mikä vaatii vahvaa joustavuutta linkkien katkosten aikana televiestintäpalvelujen ylläpitämiseksi, jopa vakavien verkkohäiriöiden edessä.

Salaus ei ole osa SCTP:n alkuperäistä suunnittelua.

Joissakin tapauksissa SCTP on hyvä ehdokas TCP/IP - Syynä tähän on se, että jotkin käyttöjärjestelmät ovat hajautettuja tukemaan SCTP-protokollaa, mutta koska se on vähän tunnettu (verrattuna TCP:hen tai UDP:hen), järjestelmänvalvojat unohtavat joskus määrittää tunkeutumisen havaitsemisen palomuurissa , mikä mahdollistaa skannaa liikennettä.

Kuljetuskerroksen protokollien ominaisuuksien vertailu

Parametri UDP TCP SCTP
Yhteyden muodostaminen Ei Joo Joo
Luotettava lähetys Ei Joo Joo
Viestien rajojen säilyttäminen Joo Ei Joo
järjestyksessä toimitus Ei Joo Joo
Tilaamaton toimitus Joo Ei Joo
Tietojen tarkistussummat Joo Joo Joo
Tarkistussumman koko (bittiä) 16 16 32
Polku MTU Ei Joo Joo
Kertymän hallinta Ei Joo Joo
Monisäikeinen Ei Ei Joo
Tuki useille käyttöliittymille Ei Ei Joo
Joukko lankoja Ei Joo Joo

Viestin kehystäminen

Sanomakehyksiä muodostettaessa viestirajat säilytetään siinä muodossa, jossa se välitetään pistokkeeseen; tämä tarkoittaa, että jos asiakas lähettää palvelimelle 100 tavua ja sen jälkeen 50 tavua, palvelin ottaa 100 tavua ja 50 tavua kahtena lukuna. UDP-protokolla toimii täsmälleen samalla tavalla; tämä on viestisuuntautuneiden protokollien ominaisuus.

Sitä vastoin TCP-protokolla käsittelee strukturoimatonta tavuvirtaa. Jos sanoman kehystysproseduuria ei käytetä, verkkosolmu voi vastaanottaa dataa, joka on suurempi tai pienempi kuin lähetetty data. Tämä toimintatapa edellyttää, että TCP:n päällä toimivissa viestisuuntautuneissa protokollissa sovelluskerrokselle tarjotaan oma datapuskuri ja suoritetaan sanoman kehystys (mahdollisesti monimutkainen tehtävä).

SCTP-protokolla tarjoaa kehystyksen tiedonsiirrolle. Kun solmu kirjoittaa pistorasiaan, sen vertaiskumppanin taataan vastaanottavan samankokoisen tietolohkon.

Paketin rakenne

bittiä Bitit 0-7 8-15 16-23 24-31
+0 Lähdeportti Määränpää
32 Vahvistustunniste
64 Tarkista summa
96 Tyyppi 1 lohko Liput 1 lohko Pituus 1 lohko
128 1 lohkon tiedot
Tyyppi N lohko Estä N lippua Lohkon pituus N
Estä N tiedot

SCTP-pakettien rakenne on yksinkertaisempi kuin TCP-pakettien. Jokainen paketti koostuu kahdesta pääosasta:

  1. Yleinen otsikko, joka vie ensimmäiset 12 tavua (korostettu sinisellä)
  2. Tietolohkot, jotka vievät loppuosan paketista.

Ensimmäinen lohko on merkitty vihreällä ja viimeinen N lohkosta (N lohko) on korostettu punaisella.

Jokaisella lohkolla on tyyppitunniste, joka vie yhden tavun. Näin ollen voidaan määrittää enintään 255 erilaista lohkotyyppiä. RFC 4960 määrittelee luettelon lohkotyypeistä, joissa on tällä hetkellä määritettynä yhteensä 15 tyyppiä. Loput lohkosta koostuu 2-tavuisesta kentästä (tähän kenttään mahtuu enintään 65535 tavua) ja itse asiassa tiedoista. Jos lohkon koko ei ole 4 tavun kerrannainen, se täytetään nollalla 4 tavun kerrannaiseksi.

Virheiden käsittely

Uudelleenlähetys

DATA-lohkojen uudelleenlähetys voi johtua (a) uudelleenlähetysajastimen määrittämästä aikakatkaisusta tai (b) SACK:n vastaanotosta, joka osoittaa, että kohde ei ole vastaanottanut DATA-lohkoa. Ruuhkautumisen mahdollisuuden vähentämiseksi DATA-lohkojen uudelleenlähetystä on rajoitettu. Uudelleenyrityksen aikakatkaisun (RTO) arvo asetetaan arvioidun edestakaisen matka-ajan perusteella, ja se pienenee eksponentiaalisesti sanoman katoamisnopeuden kasvaessa. Aktiivisissa yhteyksissä lähes jatkuvaan DATA-liikenteeseen syy uudelleenyritykseen on todennäköisesti SACK-viestit aikakatkaisun sijaan. Tarpeettomien uudelleenyritysten todennäköisyyden vähentämiseksi käytetään 4 SACK -sääntöä, jonka mukaan uudelleenlähetys tapahtuu vain neljännellä SACK:illa, mikä osoittaa, että tietolohko ohitettiin. Tämä estää uudelleenlähetykset, jotka johtuvat epäjärjestystä toimituksesta.

Kolari matkalla

Laskuria ylläpidetään uudelleenyritysten määrästä tiettyyn kohdeosoitteeseen ilman onnistuneen toimituksen vahvistusta. Kun tämän laskurin arvo saavuttaa määritellyn kynnyksen (konfiguraatioparametri), osoite julistetaan ei-aktiiviseksi ja SCTP-protokolla alkaa käyttää toista osoitetta DATA-lohkojen lähettämiseen. Lisäksi kaikkiin käyttämättömiin (valinnaisiin) osoitteisiin lähetetään säännöllisin väliajoin erityisiä Heartbeat-lohkoja, ja laskuria ylläpidetään lähetettyjen Heartbeat-lohkojen lukumäärästä palauttamatta vastaavaa Heartbeat Ack -kuittausta. Kun laskurin arvo saavuttaa tietyn kynnyksen (konfiguraatioparametri), vastaava osoite julistetaan ei-aktiiviseksi. Sykelohkot lähetetään ei-aktiivisiin osoitteisiin, kunnes vastaanotetaan kuittausviesti, joka osoittaa, että osoite on palautettu toimintaan. Heartbeat-lohkojen taajuus määräytyy RTO-arvon ja lisäviiveen perusteella, mikä mahdollistaa Heartbeat-lohkojen lähettämisen häiritsemättä käyttäjäliikennettä.

Päätepistevirhe

Kaikille vastaanottajaosoitteille ylläpidetään yhteistä toistojen tai Heartbeat-lohkojen laskuria, tiedot siirretään etäpisteeseen saamatta siltä vastaavaa vahvistusta (Ack). Kun laskurin arvo saavuttaa määritetyn kynnyksen (määritysparametrin), päätepiste julistetaan saavuttamattomaksi ja SCTP-yhteys suljetaan.

Syitä

TCP-protokolla tarjoaa peruskeinot tiedon siirtämiseen Internetin kautta luotettavaa polkua pitkin. TCP asettaa kuitenkin joitain rajoituksia tiedonsiirrolle:

Kaikki nämä rajoitukset heikentävät IP - puhelinverkkojen suorituskykyä .

Protokolla kehitettiin osana IETF:ssä [2] erityisesti luodun SIGTRAN-ryhmän työtä IP-verkoissa käytettävien SS-7- pinon protokollien ja sovellusten toteuttamiseksi luotettavan ja nopean tiedonsiirron tarpeen vuoksi. Tämä on nimenomaisesti mainittu RFC 4960 :n luvussa 1.1 Motivaatio :

...
PSTN-signaloinnin siirto IP-verkon yli on sovellus, jolle kaikki nämä TCP:n rajoitukset ovat tärkeitä. Vaikka tämä sovellus on suoraan motivoitunut SCTP:n kehittämiseen, muut sovellukset saattavat löytää SCTP:n omiin vaatimuksiinsa... ... PSTN

- signalointi IP-verkon yli on sovellus, jolle kaikki TCP-rajoitukset koskevat suoraan. Vaikka tämä motivoi suoraan SCTP:n kehittämistä, muut sovellukset voivat myös löytää SCTP:n sopivaksi heidän vaatimuksiinsa... RFC 4960

SIGTRAN-protokolla ja mukautuskaavio

Protokollat

OKS-7

   TCAP   
V5.2 MTP3 MTP3 ON YLHÄÄLLÄ    SCCP    DSS1    TCAP
SIGTRAN V5UA    M2UA    M2PA    M3UA    IUA    SUA
tietokoneverkko _ SCTP
IP

Toteutukset

On olemassa viitetoteutus FreeBSD:lle, Mac OS X:lle, Microsoft Windowsille ja Linuxille [3] .

SCTP-protokolla on toteutettu seuraavissa käyttöjärjestelmissä:

Käyttöönotto kolmannen osapuolen ohjaimien kautta:

Erilliset käyttäjäkirjastot:

Sovellukset:

Muistiinpanot

  1. TCP ja UDP toimivat niin eri tavalla, että on väärin vetää analogiaa molempiin. Koko analogia on, että SCTP, TCP ja UDP kuuluvat samaan TCP/IP-pinon kerrokseen.
  2. [Sigtran WG Action: Signaling Transport (sigtran)] (linkki ei saatavilla) . www.ietf.org. Haettu 16. lokakuuta 2018. Arkistoitu alkuperäisestä 29. lokakuuta 2018. 
  3. SCTP-RFC4960:n viitetoteutus . - "Tämä on SCTP:n viitetoteutus. Se on kannettava ja toimii FreeBSD/MAC-OS/Windows-käyttöjärjestelmissä ja User Spacessa (mukaan lukien linux). Haettu 14. lokakuuta 2013. Arkistoitu alkuperäisestä 1. maaliskuuta 2017.
  4. DragonFly Poistaa SCTP:n . Lists.dragonflybsd.org . Haettu 28. huhtikuuta 2016. Arkistoitu alkuperäisestä 7. elokuuta 2017.
  5. Tietoja FreeBSD:n teknologisista edistysaskeleista . FreeBSD-projekti (9. maaliskuuta 2008). - "SCTP: FreeBSD 7.0 on referenssitoteutus uudelle IETF Stream Control Transmission Protocol (SCTP) -protokollalle, joka on tarkoitettu tukemaan VoIP-, televiestintä- ja muita sovelluksia, joilla on vahva luotettavuus ja vaihtelevalaatuinen lähetys ominaisuuksien, kuten monitietoimituksen, epäonnistumisen kautta. -yli ja multi-streaming.". Haettu 13. syyskuuta 2008. Arkistoitu alkuperäisestä 5. elokuuta 2011.
  6. Stream Control Transmission Protocol (SCTP) (linkki ei saatavilla) . Hewlett-Packardin kehitysyhtiö. Haettu 10. maaliskuuta 2017. Arkistoitu alkuperäisestä 3. tammikuuta 2013. 
  7. TCP/IP-verkko . QNX-kehittäjien tuki . QNX-ohjelmistojärjestelmät. Haettu 13. syyskuuta 2008. Arkistoitu alkuperäisestä 23. lokakuuta 2008. Mitä uutta tässä viitteessä . QNX-kirjaston viite . QNX-ohjelmistojärjestelmät. Haettu 18. joulukuuta 2012. Arkistoitu alkuperäisestä 18. lokakuuta 2012.
  8. Solaris 10 -käyttöjärjestelmän verkko - äärimmäinen verkon suorituskyky . Sun Microsystems . Haettu 13. syyskuuta 2008. Arkistoitu alkuperäisestä 20. huhtikuuta 2009.
  9. SctpDrv: SCTP-ohjain Microsoft Windowsille (downlink) . Haettu 4. helmikuuta 2011. Arkistoitu alkuperäisestä 8. tammikuuta 2011. 
  10. SCTP-verkkoytimen laajennus Mac OS X :lle. Haettu 10. maaliskuuta 2017. Arkistoitu alkuperäisestä 11. kesäkuuta 2018.
  11. Kannettava SCTP-käyttäjämaapino . Haettu 10. maaliskuuta 2017. Arkistoitu alkuperäisestä 20. joulukuuta 2018.
  12. SCTP-lataussivu (29. toukokuuta 2006). Haettu 4. helmikuuta 2011. Arkistoitu alkuperäisestä 22. huhtikuuta 2019.
  13. Windowsin SCTP-kirjaston asennusohjelma . Haettu 4. helmikuuta 2011. Arkistoitu alkuperäisestä 11. syyskuuta 2016.
  14. Seggelmann, R.; Tuxen, M.; Rathgeb, EP SSH over SCTP - Monikanavaisen protokollan optimointi mukauttamalla se SCTP:  hen // Communication Systems, Networks & Digital Signal Processing (  CSNDSP), 2012 8th International Symposium aiheesta : Journal. - 2012 - 18. heinäkuuta. - s. 1-6 . — ISBN 978-1-4577-1473-3 . - doi : 10.1109/CSNDSP.2012.6292659 .

Linkit