Perché SCTP non molto usato / nota
-
19-09-2019 - |
Domanda
Di recente ho controllato il libro "UNIX Network Programming, Vol. 1" da Richards Stevens e ho scoperto che c'è un terzo standard di livello di trasporto oltre TCP e UDP: SCTP .
Sommario: SCTP è un protocollo a livello di trasporto che è il messaggio-driven come UDP, ma affidabile come TCP. Ecco una breve introduzione da IBM DeveloperWorks .
Onestamente, non ho mai sentito parlare di SCTP prima. Non riesco a ricordare letto in tutti i libri di rete o di averne sentito parlare nelle classi che avevo preso. Lettura altre domande StackOverflow che cita SCTP suggerisce che non sono sola con questa mancanza di conoscenza.
Perché è SCTP così sconosciuto? Perché non è molto usato?
Soluzione
In effetti, SCTP è utilizzato soprattutto nella zona delle telecomunicazioni. Tradizionalmente, interruttori di telecomunicazioni usano SS7 ( Signalling System 7 No. ) per interconnettere diverse entità nella rete di telecomunicazioni . Per esempio - base di dati degli abbonati del provider di telecomunicazioni (HLR), con un interruttore (MSC), l'abbonato è collegato troppo (MSC)
.L'area delle telecomunicazioni si sta muovendo per velocità più elevate e ambiente più raggiungibile. Uno di questi cambiamenti è quello di sostituire il protocollo SS7 da alcuni più elegante, veloce e flessibile protocollo IP-based.
L'area delle telecomunicazioni è molto conservatore. La rete SS7 è stata usata qui da decenni. È molto una rete affidabile e chiusa. Ciò significa che un utente normale non ha accesso ad esso.
La rete IP, al contrario, è aperto e non è affidabile, e delle telecomunicazioni non convertirà ad esso se non sarà gestire almeno il carico che gestisce SS7. Questo è il motivo per cui è stato sviluppato SCTP. Si cerca:
- di imitare tutti i vantaggi della rete SS7 accumulato nel corso dei decenni.
- per creare un protocollo orientato alla connessione TCP meglio in termini di velocità, la sicurezza, e la ridondanza
Le ultime versioni di Linux hanno già il supporto SCTP.
Altri suggerimenti
Abbiamo schierando SCTP in diverse applicazioni ora, e incontrato problema significativo con il supporto SCTP in vari router domestici. Semplicemente non gestiscono correttamente SCTP. Credo che questo sia principalmente un problema di prestazioni (la specifica del protocollo SCTP checksum richiede per l'intero pacchetti di essere ricalcolati e non solo per le intestazioni).
Come molti altri protocolli promettenti SCTP è tristemente morto in acqua fino a D-Link e Netgear corregge le loro caselle di NAT rotti.
SCTP richiede più di progettazione all'interno dell'applicazione per ottenere il miglior uso di esso. Ci sono più opzioni che TCP, l'API Sockets-come è venuto dopo, ed è giovane. Tuttavia penso la maggior parte delle persone che prendono il tempo per capirlo (e che conoscono le carenze di TCP) apprezzo - si tratta di un protocollo ben progettato che si basa sulle nostre ~ 30 anni di conoscenza del protocollo TCP e UDP
.Uno degli aspetti che richiede una riflessione è quello di corsi d'acqua. Streams fornire (di solito, credo che è possibile disattivarlo) una garanzia ordine al loro interno (molto simile a una connessione TCP), ma non ci può essere più flussi per connessione SCTP. Se i dati della vostra applicazione possono essere inviati su più flussi quindi si evita di head-of-line blocco in cui il ricevitore affama a causa di un pacchetto smarrito. Effettivamente diverse conversazioni si possono avere sulla stessa connessione senza impattare l'altro.
Un'altra aggiunta utile è quella di supporto multi-homing - una connessione può essere attraverso interfacce multiple su entrambe le estremità e si fa fronte con errori. È possibile emulare questa in TCP, ma a livello di applicazione.
Una corretta collegamento heartbeating, che è la prima cosa che qualsiasi applicazione che utilizza il protocollo TCP per le connessioni attrezzi non transitori, è lì gratuitamente.
La mia sintesi personale di SCTP è che non fa nulla non si poteva fare in un altro modo (in TCP o UDP) con il supporto applicativo considerevole. La cosa che offre è la possibilità di non dover attuare tale codice (male) da soli.
Cordiali saluti, SCTP viene mandato come supportata per Diametro (cf RADIUS Next Gen). vedere RFC 3588
Diameter clients MUST support either TCP or SCTP, while agents and servers MUST support both. Future versions of this specification MAY mandate that clients support SCTP.
SCTP non è molto conosciuto e non utilizzati / schierato molto perché:
- Diffuso: Non ampiamente integrato nella stack TCP / IP (nel 2013: mancano ancora nativamente in ultima Mac OSX e Windows)
- Biblioteche: Pochi attacchi di alto livello in facile da usare lingue (Disclaimer: io sono manutentore di pysctp , supporto SCTP facile stack per Python)
- NAT: non attraversare NAT molto bene / a tutti (meno di 1% Home & enterprise router Internet fanno NAT su SCTP) .
- di popolarità: nessun app pubblico usarlo
- Programmazione paradigma: ha cambiato un po ': è ancora una presa, ma è possibile collegare molti host per molti ospiti (multihoming), datagram è ordinato e affidabile, ERC ...
- Complessità: pila SCTP è complesso da implementare (a causa di sopra)
- Concorso: multipath TCP è in arrivo e dovrebbe affrontare multihoming esigenze / capacità, così la gente non può attuare lo SCTP, se possibile, in attesa di MTCP
- nicchia: Needs riempimenti SCTP sono molto particolari (datagrammi ordinate affidabili, multistream) e non necessari di molto le applicazioni
- Sicurezza: SCTP elude i controlli di sicurezza (alcuni firewall, la maggior parte degli IDS, tutti DLPs, non appare in netstat tranne CentOS / RedHat / Fedora ...)
- Audit-capacità: Qualcosa come 3 aziende al mondo di routine fare controlli di sicurezza SCTP (Disclaimer: io lavoro in uno di essi)
- Curva di apprendimento: Non molto toolchain per giocare con SCTP (controllare l'ottimo rel="noreferrer"> che combina bene con netcat o utilizzare socat)
- Sotto il cofano: Utilizzato soprattutto in telecomunicazioni e ogni volta che si invia SMS, avviare la navigazione in rete sulle vostre telefonate o fare, si è spesso innescando i messaggi che scorrono su SCTP (SIGTRAN / SS7 con GSM / UMTS, con diametro LTE / IMS / RCS, S1AP / X2AP con LTE), in modo che effettivamente utilizzate un sacco, ma non si sa mai su di esso; -)
p1. SCTP mappato direttamente su IPv4 richiede il supporto di gateway NAT, che non è mai stato ampiamente dispiegati ovunque, e senza di essa il gateway NAT tipica solo consentono un host privato per ogni indirizzo pubblico di utilizzare SCTP alla volta.
p2. SCTP mappato su UDP / IPv4 permette più host private a indirizzo pubblico, ma le mappature UDP in IPv4 / gateway NAT sono notoriamente difficili da stabilire e mantenere mantenuto, a causa del fatto che UDP è un trasporto senza connessione senza alcuna condizione esplicita per un NAT per tenere traccia .
p3. SCTP mappato direttamente su IPv6 richiede ... beh ... IPv6. Hai provato a implementare IPv6? Se è così, si è tentato di acquistare un firewall IPv6? Ha supporta SCTP? Che ne dite di un bilanciatore di carico? Un acceleratore SSL?
p4. Infine, un sacco di Internet è praticamente costretto a ciò che può passare attraverso la porta TCP 80 e la porta 443, in modo da SCTP di qualsiasi sapore tende a perdere lì. Quindi, vedete gli sforzi come il MPTCP gruppo di lavoro IETF.
Molti di noi fare uso di SCTP presto, dal momento che è utilizzato da datachannels WebRTC per creare uno strato TCP-come affidabile su UDP - SCTP oltre DTLS su UDP: https://tools.ietf.org/html/draft-ietf-rtcweb-data-channel-13 # sezione-6
Lettura del href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol" rel="nofollow noreferrer"> pagina direi che il motivo principale è che è SCTP un giovanissimo protocollo (proposta nel 2000) che è attualmente supportato dal mainstream sistemi operativi ( di Windows , OS X , Linux ).
Se "molto giovani" sembra inadeguato a te, pensare a IPV6 : "nel mese di dicembre 2008, nonostante segnando il suo 10 ° anniversario come un protocollo standard traccia, IPv6 è stato solo nella sua infanzia in termini di diffusione generale in tutto il mondo ".
SCTP è ampiamente utilizzato nella rete 4G LTE in cui diametro viene utilizzato per AAA.
Potrebbe non essere ben noto, ma non è inutilizzata. Recentemente c'è stata una progetto pubblicato alla < a href = "http://www.ietf.org/" rel = "nofollow noreferrer"> IETF su Utilizzo SCTP come Transport layer protocollo HTTP .
Con riferimento a tutti i commenti su router commerciali essere rotto o manca il supporto SCTP, il problema è che SCTP con NAT è ancora in bozza con l'IETF. Quindi non v'è alcuna specifica RFC per loro di attuarla.
https://tools.ietf.org/html/draft- IETF-comportarsi-sctpnat-09
SCTP è nato troppo tardi, e per molti situazione TCP è sufficiente.
Inoltre, come so che la maggior parte del suo utilizzo è in settore delle telecomunicazioni.