Saya baru-baru ini memeriksa buku "UNIX Network Programming, Vol. 1" oleh Richards Stevens dan saya menemukan bahwa ada standar lapisan transport ketiga selain TCP dan UDP: SCTP .
Rangkuman: SCTP adalah protokol tingkat transportasi yang digerakkan oleh pesan seperti UDP, tetapi dapat diandalkan seperti TCP. Berikut ini adalah pengantar singkat dari IBM DeveloperWorks .
Jujur, saya belum pernah mendengar tentang SCTP sebelumnya. Saya tidak ingat pernah membacanya di buku jejaring apa pun atau mendengarnya di kelas yang telah saya ikuti. Membaca pertanyaan stackoverflow lainnya yang menyebutkan SCTP menunjukkan bahwa saya tidak sendirian dengan kurangnya pengetahuan ini.
Mengapa SCTP begitu tidak dikenal? Mengapa tidak banyak digunakan?
networking
tcp
popularity
sctp
tuan
sumber
sumber
Jawaban:
Memang, SCTP digunakan sebagian besar di area telekomunikasi. Secara tradisional, switch telekomunikasi menggunakan SS7 ( Signaling System No. 7 ) untuk menghubungkan berbagai entitas dalam jaringan telekomunikasi. Misalnya - basis data pelanggan penyedia telekomunikasi (HLR), dengan sakelar (MSC), pelanggan juga terhubung (MSC).
Area telekomunikasi bergerak ke kecepatan yang lebih tinggi dan lingkungan yang lebih terjangkau. Salah satu perubahan ini adalah untuk menggantikan protokol SS7 dengan beberapa protokol berbasis IP yang lebih elegan, cepat dan fleksibel.
Area telekomunikasi sangat konservatif. Jaringan SS7 telah digunakan di sini selama beberapa dekade. Ini adalah jaringan yang sangat andal dan tertutup. Ini berarti pengguna biasa tidak memiliki akses ke sana.
Jaringan IP, sebaliknya, terbuka dan tidak dapat diandalkan, dan telekomunikasi tidak akan mengubahnya jika tidak akan menangani setidaknya beban yang ditangani SS7. Inilah sebabnya mengapa SCTP dikembangkan. Mencoba:
Rilis terbaru Linux sudah memiliki dukungan SCTP.
sumber
Kami telah menggunakan SCTP di beberapa aplikasi sekarang, dan mengalami masalah signifikan dengan dukungan SCTP di berbagai router rumah. Mereka tidak menangani SCTP dengan benar. Saya percaya ini terutama masalah kinerja (spesifikasi protokol SCTP membutuhkan checksum untuk seluruh paket untuk dihitung ulang dan bukan hanya untuk header).
Seperti banyak protokol lain yang menjanjikan, SCTP sayangnya mati di air sampai D-link dan Netgear memperbaiki kotak NAT mereka yang rusak.
sumber
SCTP membutuhkan lebih banyak desain dalam aplikasi untuk mendapatkan penggunaan terbaik dari itu. Ada lebih banyak pilihan daripada TCP, API seperti Soket datang kemudian, dan masih muda. Namun saya pikir sebagian besar orang yang meluangkan waktu untuk memahaminya (dan yang tahu kekurangan TCP) menghargainya - ini adalah protokol yang dirancang dengan baik yang dibangun berdasarkan ~ 30 tahun pengetahuan kita tentang TCP dan UDP.
Salah satu aspek yang perlu dipikirkan adalah aliran. Streaming menyediakan (biasanya, saya pikir Anda dapat mematikannya) jaminan pesanan di dalamnya (seperti koneksi TCP) tetapi mungkin ada beberapa stream per koneksi SCTP. Jika data aplikasi Anda dapat dikirim melalui beberapa aliran, maka Anda menghindari pemblokiran head-of-line di mana penerima kelaparan karena satu paket salah bayar. Percakapan yang berbeda secara efektif dapat dilakukan melalui koneksi yang sama tanpa saling memengaruhi.
Tambahan lain yang bermanfaat adalah dukungan multi-homing - satu koneksi dapat melintasi beberapa antarmuka di kedua ujungnya dan mengatasi kegagalan. Anda dapat meniru ini dalam TCP, tetapi pada lapisan aplikasi.
Detak jantung tautan yang tepat, yang merupakan hal pertama yang digunakan aplikasi apa pun menggunakan TCP untuk koneksi non-transien, tersedia gratis.
Ringkasan pribadi saya tentang SCTP adalah bahwa ia tidak melakukan apa pun yang tidak dapat Anda lakukan dengan cara lain (dalam TCP atau UDP) dengan dukungan aplikasi substansial. Hal yang disediakannya adalah kemampuan untuk tidak harus mengimplementasikan kode itu (buruk) sendiri.
FYI, SCTP diamanatkan sebagai didukung untuk Diameter (cf RADIUS gen berikutnya). lihat RFC 3588
sumber
SCTP tidak banyak diketahui dan tidak banyak digunakan karena:
sumber
p1. SCTP yang dipetakan langsung melalui IPv4 memerlukan dukungan di gateway NAT, yang belum pernah digunakan secara luas di mana pun, dan tanpa itu gateway NAT biasanya hanya akan mengizinkan satu host pribadi per alamat publik untuk menggunakan SCTP pada suatu waktu.
p2. SCTP yang dipetakan di atas UDP / IPv4 memungkinkan lebih banyak host pribadi per alamat publik, tetapi pemetaan UDP di gateway IPv4 / NAT terkenal rumit untuk dibangun dan dipelihara, karena fakta bahwa UDP adalah transportasi tanpa koneksi tanpa keadaan eksplisit untuk dilacak oleh NAT. .
p3. SCTP yang dipetakan langsung melalui IPv6 membutuhkan ... yah ... IPv6. Sudahkah Anda mencoba menggunakan IPv6? Jika demikian, pernahkah Anda mencoba membeli firewall IPv6? Apakah ini mendukung SCTP? Bagaimana dengan penyeimbang beban? Akselerator SSL?
p4. Akhirnya, banyak Internet yang terkendala dengan apa yang dapat ditampung melalui port TCP 80 dan port 443, sehingga SCTP dari rasa apa pun cenderung hilang di sana. Karenanya, Anda melihat upaya seperti kelompok kerja MPTCP di IETF.
sumber
iptables
mendukungnya dengan baik . Saya bukan orang jaringan, jadi saya tidak bisa mengatakan sisanya.Banyak dari kita akan segera menggunakan SCTP, karena ini digunakan oleh datachannels WebRTC untuk membuat lapisan andal seperti TCP di atas UDP - SCTP melalui DTLS melalui UDP: https://tools.ietf.org/html/draft-ietf -rtcweb-data-channel-13 # section-6
sumber
Membaca halaman Wikipedia SCTP Saya akan mengatakan bahwa alasan utama adalah bahwa SCTP adalah protokol yang sangat muda (diusulkan pada tahun 2000) yang saat ini tidak didukung oleh OS arus utama (
Windows,OS X,Linux).Jika "sangat muda" tampaknya tidak sesuai untuk Anda, pikirkan tentang IPV6 : "pada bulan Desember 2008, meskipun menandai peringatan 10 tahun sebagai protokol Standar Track, IPv6 hanya dalam masa pertumbuhan dalam hal penyebaran umum di seluruh dunia."
sumber
SCTP digunakan secara luas di jaringan 4G LTE di mana Diameter digunakan untuk AAA.
sumber
Mungkin tidak dikenal, tetapi tidak digunakan. Baru-baru ini ada draft yang diterbitkan di IETF tentang Menggunakan SCTP sebagai Transport Layer Protocol untuk HTTP .
sumber
Mengacu pada semua komentar tentang router komersial yang rusak atau kurang dukungan SCTP, masalahnya adalah bahwa SCTP dengan NAT masih dalam bentuk draft dengan IETF. Jadi tidak ada spesifikasi RFC bagi mereka untuk mengimplementasikannya.
https://tools.ietf.org/html/draft-ietf-behave-sctpnat-09
sumber
Sctp dilahirkan terlambat, dan untuk banyak situasi TCP sudah cukup.
Juga, seperti yang saya tahu sebagian besar penggunaannya adalah di bidang telekomunikasi.
sumber