Stream Control Transmission Protocol
Från Rilpedia
Protokollstack för IP-nätverk | |
IP-skikt | Protokoll |
---|---|
5.Applikation | BitTorrent, DHCP, DNS, FTP, HTTP, IMAP, IRC, NNTP, POP3, SIP, SMTP, SNMP, SSH, Telnet,TLS, SSL , TFTP, … |
4.Transport | DCCP, SCTP, TCP, RTP, UDP, IL, RUDP, … |
3.Nätverk | ARP, ICMP, IGMP, IP (IPv4, IPv6),RIP … |
2.Länk | ATM, Ethernet, FDDI, ISDN, MPLS, Token Ring, PPP, SLIP, Wi-Fi, … |
1.Fysiska | ISDN, RS232, IrDA, Bluetooth, xDSL, … |
Stream Control Transmission Protocol (SCTP) är ett transportprotokoll som föreslogs som standard av arbetsgruppen Signaling Transport (SIGTRAN) inom IETF i oktober 2000. Protokollet finns beskrivet i RFC 4960.
SCTP är likt TCP men introducerar ny funktionalitet bland annat för att förbättra pålitligheten hos överföring av data och att ge bättre skydd mot SYN flooding attacker.
Innehåll |
Historia
1998 bildades arbetsgruppen SIGTRAN med som mål att skapa ett komplement till telefonnätets SS7 för att signalera över Internet. Under deras arbete kom de fram till två problem angående TCP:
- Head-of-line blockering - TCP ordnar all data innan en applikation kan få tillgång till den. Om ett paket förloras så kommer alla paket efter det förlorade paketet att bli försenade även om de har kommit fram till sin destination.
- Multihoming – Anslutningar i TCP har endast en anknytning mellan de två ändpunkterna. I SCTP, om en server har flera IP-adresser, så kan de två ändpunkterna ha flera anknytningar till varandra genom att använda olika IP-adresser. Detta gör att om en anknytning skulle brytas kan överföringen fortsätta på en alternativ väg.
Med dessa problem i åtanke började SIGTRAN att arbeta på ett nytt transportprotokoll för att hantera telefonsignalering över Internet. Samtidigt insåg cheferna på transportavdelningen hos IETF (Scott Bradner och Vern Paxson) värdet i att lösa dessa problem. De förstorade omfattningen hos SIGTRAN och gav dem i uppgift att skapa ett generellt transportprotokoll som andra applikationer också kunde dra nytta av. Detta nya transportprotokoll blev SCTP. [1]
I oktober 2000 blev SCTP en RFC (RFC 2960). Sedan dess har det implementerats i alla de stora operativsystemen: GNU/Linux, BSD och Solaris. Det finns också för Microsoft Windows som ett tredjepart kommersiellt paket. [2]
Multihoming
När en anslutning skapas så byts en lista ut mellan de två ändpunkterna. Dessa listor innehåller de IP-adresser som den respektive ändpunkten är associerad med. Detta betyder att varje ändpunkt är redo att ta emot data från flera olika IP-adresser. Om det börjar uppstå problem på den primära vägen kan en alternativ väg användas tills den primära vägen igen är fullt funktionerande.[3]
Multistreaming
Inom en anslutning kan det skickas flera separata strömmar samtidigt. Dessa strömmar är oberoende av varandra och om ett paket förloras på en ström kommer de andra strömmarna inte bli påverkade. Detta fixar till stor del problemet Head-of-line blockeringar och kan ge vissa meddelanden högre prioritet än andra (genom att skapa en separat ström bara för dem). [3]
Uppkopplingsfas
SCTP använder ett s.k. 4-vägshandskakning för att skapa en anslutning. Detta används för att skydda en ändpunkt mot bland annat SYN flooding attacker. Om nod A vill ansluta till nod B skickas först ett INIT paket som berättar att nod A vill starta en anslutning. Nod B skickar då tillbaka ett INIT-ACK paket innehållande en kaka. Denna kaka innehåller data för att kunna identifiera anslutningen. Nod A svarar med ett COOKIE-ECHO paket, innehållande den cookie som skickades till nod A. Detta gör att nod B vet att IP-adressen för nod A existerar och allokerar resurser för anslutningen. Detta ger visserligen en utökad komplexitet i jämförelse med TCP, men innebär att säkerheten ökar. [2]
Nedkopplingsfas
Eftersom SCTP initieras, behövs också en mekanism för att stänga anslutningen. I TCP, när man stänger en anslutning, finns det en fas som kallas för halvstängt, det innebär att när en nod vill stänga en anslutning kan motparten fortfarande ta emot data. Detta används mycket sällan av applikationer och därför har det tagits bort i SCTP. För att stänga en anslutning skickar nod A ett SHUTDOWN paket. Då avallokerar nod B resurserna för anslutningen och svarar nod A med ett SHUTDOWN-ACK paket. Nod B vet fortfarande om anslutningen ända tills den får ett svar på sin ack från nod A, ett SHUTDOWN-COMPLETION paket. [2]
Referenser
- ↑ Why is SCTP needed given TCP and UDP are widely available?
- ↑ 2,0 2,1 2,2 Better networking with SCTP
- ↑ 3,0 3,1 Stream Control Transmission Protocol, Sida 3: SCTP Advantages: Multi-Homing, Multi-Streaming, and Other Features
Externa länkar
- Better Networking with SCTP
- http://www.sigtran.org
- http://www.ietf.org/html.charters/sigtran-charter.html
- http://www.openss7.org
- http://www.sctp.de
- SCTP for QualNet network simulator from DEGAS networking group
- The Linux Kernel Stream Control Transmission Protocol (lksctp) project
- http://tdrwww.exp-math.uni-essen.de/inhalt/forschung/sctp_fb/
- SCTP Sequence Diagram - Setup, IP Address Reconfiguration and Release (PDF)
- Tunneling of SCTP over Single UDP Port
- Open Source / GPL Seagull test tool - with SCTP support
- Parallel computing using the Message-passing Interface (MPI) over SCTP
- SCTPscan: SCTP port scanner and network scanner, GPL
RFCs
- RFC 4460 Stream Control Transmission Protocol (SCTP) Specification Errata and Issues
- RFC 3873 Stream Control Transmission Protocol (SCTP) Management Information Base (MIB)
- RFC 3758 Stream Control Transmission Protocol (SCTP) Partial Reliability Extension
- RFC 3554 On the Use of Stream Control Transmission Protocol (SCTP) with IPsec
- RFC 3436 Transport Layer Security over Stream Control Transmission Protocol
- RFC 3309 Stream Control Transmission Protocol (SCTP) Checksum Change
- RFC 3286 An Introduction to the Stream Control Transmission Protocol
- RFC 3257 Stream Control Transmission Protocol Applicability Statement
- RFC 2960 Stream Control Transmission Protocol