STREAM CONTROL TRANSMISSION PROTOCOL (SCTP)


               SCTP dirancang sebagai protokol lapisan transport tujuan umum yang dapat menangani multimedia dan arus lalu lintas, yang meningkat setiap hari di Internet.Stream Control Transmission Protocol (SCTP) adalah protokol lapisan transport yang andal dan berorientasi pesan. Gambar 16.1 menunjukkan hubungan SCTP dengan protokol lain di rangkaian protokol Internet. SCTP terletak di antara lapisan aplikasi dan lapisan jaringan dan berfungsi sebagai perantara antara program aplikasi dan operasi jaringan.
Gambar 16.1  Rangkaian Protokol TCP/IP
 
 



               SCTP, bagaimanapun, sebagian besar dirancang untuk aplikasi Internet yang baru saja diperkenalkan. Aplikasi baru ini, seperti IUA (ISDN over IP), M2UA dan M3UA (teleponi sinyal), H.248 (media gateway control), H.323 (IP telephony), dan SIP (IP telephony), membutuhkan layanan yang lebih canggih. daripada yang bisa diberikan oleh TCP. SCTP memberikan peningkatan kinerja dan kehandalan ini. Kita membandingkan UDP, TCP, dan SCTP:


UDP
                 UDP adalah protokol berorientasi pesan. Sebuah proses mengirimkan pesan ke UDP, yang dienkapsulasi dalam datagram pengguna dan dikirim melalui jaringan. UDP melestarikan batas pesan; setiap pesan independen dari pesan lainnya. Ini adalah fitur yang diinginkan saat kita berhadapan dengan aplikasi seperti IP telephony dan transmisi data real-time seperti yang akan kita lihat nanti dalam teks. Namun, UDP tidak dapat diandalkan; pengirim tidak bisa mengetahui takdir pesan yang dikirim. Sebuah pesan bisa hilang, diduplikasi, atau diterima rusak. UDP juga tidak memiliki beberapa fitur lain, seperti pengendalian kemacetan dan kontrol aliran, diperlukan untuk protokol lapisan transport ramah.


TCP
               TCP adalah protokol berorientasi byte. Ini menerima pesan atau pesan dari sebuah proses, menyimpannya sebagai aliran byte, dan mengirimnya ke segmen tertentu. Tidak ada pelestarian batas pesan. Namun, TCP adalah protokol yang andal. Segmen duplikat terdeteksi, segmen yang hilang dibenci, dan byte dikirim ke proses akhir secara berurutan. TCP juga memiliki kontrol kemacetan dan mekanisme kontrol aliran.


SCTP
               SCTP menggabungkan fitur terbaik UDP dan TCP. SCTP adalah protokol pesan yang andal. Ini menjaga batas pesan dan pada saat yang sama mendeteksi data yang hilang, data duplikat, dan data di luar pesanan. Ini juga memiliki kontrol kemacetan dan mekanisme kontrol aliran. Nantinya kita akan melihat bahwa SCTP memiliki fitur inovatif lainnya yang tidak tersedia di UDP dan TCP.



16.2 LAYANAN SCTP
               Sebelum membahas pengoperasian SCTP, mari kita jelaskan layanan yang ditawarkan oleh SCTP ke lapisan aplikasi.


Process-to-Process Communication (Komunikasi Proses-ke-Proses)
SCTP menggunakan semua port yang terkenal di dalam ruang TCP. Tabel 16.1 mencantumkan beberapa nomor port tambahan yang digunakan oleh SCTP.
Tabel 16.1
Protocol
Port Number
Description
IUA
9990
ISDN over IP
M2UA
2904
Sinyal telepon SS7
M3UA
2905
Sinyal telepon SS7
H.248
2945
Media gateway control
H.323
1718, 1719, 1720, 11720
IP telephony
SIP
5060
IP telephony


Multiple Streams (Beberapa Aliran Sungai)
               Setiap koneksi antara klien TCP dan server TCP melibatkan satu aliran tunggal. Masalah dengan pendekatan ini adalah bahwa kerugian pada setiap titik di blok arus pengiriman data lainnya. Ini bisa diterima saat kita mentransfer teks; Bukan saat kita mengirim data real-time seperti audio atau video. SCTP memungkinkan layanan multistream di setiap koneksi, yang disebut asosiasi dalam terminologi SCTP. Jika salah satu aliran diblokir, aliran lain masih bisa mengirimkan data mereka. Gagasannya serupa dengan beberapa jalur di jalan raya. Setiap jalur dapat digunakan untuk jenis lalu lintas yang berbeda. Misalnya, satu jalur dapat digunakan untuk lalu lintas biasa, satu lagi untuk kolam mobil. Jika lalu lintas diblokir untuk kendaraan biasa, kendaraan car pool masih bisa mencapai tujuan mereka.


Multihoming
               Sambungan TCP melibatkan satu sumber dan satu alamat IP tujuan. Ini berarti bahwa bahkan jika pengirim atau penerima adalah host multihomed (terhubung ke lebih dari satu alamat fisik dengan beberapa alamat IP), hanya satu dari alamat IP per akhir yang dapat digunakan selama sambungan berlangsung. Asosiasi SCTP, di sisi lain, mendukung layanan multihoming. Host pengirim dan penerima dapat menentukan beberapa alamat IP di setiap akhir untuk sebuah asosiasi. Dalam pendekatan toleransi kesalahan ini, bila satu jalur gagal, antarmuka lain dapat digunakan untuk pengiriman data tanpa gangguan. Fitur toleransi kesalahan ini sangat membantu saat kita mengirim dan menerima muatan real-time seperti telepon Internet.
Gambar 16.3 Konsep Multihoming


               Dalam gambar, klien terhubung ke dua jaringan lokal dengan dua alamat IP. Server juga terhubung ke dua jaringan dengan dua alamat IP. Klien dan server dapat membuat asosiasi menggunakan empat pasang alamat IP yang berbeda. Namun, perhatikan bahwa dalam implementasi SCTP saat ini, hanya satu pasang alamat IP yang dapat dipilih untuk komunikasi normal; Alternatif yang digunakan jika pilihan utama gagal. Dengan kata lain, saat ini, SCTP tidak mengizinkan pembagian beban antara jalur yang berbeda.


Full-Duplex Communication (Komunikasi Full-Duplex)
Seperti TCP, SCTP menawarkan layanan full-duplex dimana data dapat mengalir ke kedua arah pada waktu bersamaan. Setiap SCTP kemudian mengirim dan menerima buffer dan paket dikirim ke dua arah.


Connection-Oriented Service
Seperti TCP, SCTP adalah protokol connection-oriented. Namun, di SCTP, sebuah koneksi disebut asosiasi. Ketika sebuah proses di lokasi A ingin mengirim dan menerima data dari proses lain di lokasi B, hal berikut terjadi:  
1.       Dua SCTPs membangun hubungan antara satu sama lain.
2.       Data dipertukarkan di kedua arah.
3.       Asosiasi dihentikan.


Reliable Service (Layanan yang Handal)
SCTP, seperti TCP, adalah protokol transport yang andal. Ini menggunakan mekanisme pengakuan untuk memeriksa kedatangan data yang aman dan masuk akal. Kita akan membahas fitur ini lebih lanjut di bagian tentang kontrol kesalahan.



16.3 FITUR SCTP
Mari kita pertama-tama membahas fitur umum SCTP dan kemudian membandingkannya dengan TCP.


Transmission Sequence Number (TSN)
Unit data dalam TCP adalah byte. Transfer data di TCP dikendalikan oleh byte penomoran menggunakan nomor urut. Di sisi lain, unit data di SCTP adalah data chunk, yang mungkin atau mungkin tidak memiliki hubungan satu lawan satu dengan pesan yang berasal dari proses karena fragmentasi (dibahas kemudian). Transfer data di SCTP dikendalikan dengan penomoran potongan data. SCTP menggunakan nomor urut transmisi (TSN) untuk menghitung potongan data. Dengan kata lain, TSN di SCTP memainkan peran analog sebagai nomor urutan dalam TCP. TSNs adalah 32 bit dan diinisialisasi secara acak antara 0 dan 2 32 - 1. Setiap data chunk harus membawa TSN yang sesuai di headernya. 1. Setiap data chunk harus membawa TSN yang sesuai di headernya


Stream Identifier (SI)
Di TCP, hanya ada satu stream di setiap koneksi. Di SCTP, mungkin ada beberapa aliran di setiap asosiasi. Setiap aliran di SCTP perlu diidentifikasikan dengan menggunakan pengenal arus (stream) (SI). Setiap potongan data harus membawa SI ke sundulannya sehingga ketika tiba di tempat tujuan, tempat itu bisa ditempatkan dengan benar di arusnya. SI adalah bilangan 16 bit mulai dari 0


Stream Sequence Number (SSN)
Ketika data chunk tiba di tujuan SCTP, maka dikirimkan ke aliran yang sesuai dan dalam urutan yang benar. Ini berarti bahwa, selain SI, SCTP menentukan masing-masing potongan data di setiap aliran dengan nomor urutan arus (SSN).


Packets (Paket)
Di TCP, segmen membawa data dan informasi kontrol. Data dibawa sebagai kumpulan byte; informasi kontrol didefinisikan oleh enam kontrol kontrol di header. Desain SCTP sangat berbeda: data dibawa sebagai potongan data, kontrol informasi sebagai potongan kontrol. Beberapa potongan kontrol dan potongan data dapat dikemas bersama dalam sebuah paket. Sebuah paket di SCTP memainkan peran yang sama dengan segmen dalam TCP. Gambar 16.4 membandingkan segmen di TCP dan sebuah paket di SCTP.
Gambar 16.4 Perbandingan antara segmen TCP dan paket SCTP
 

Kita akan membahas format paket SCTP di bagian selanjutnya. Untuk saat ini, mari kita jelaskan perbedaan antara paket SCTP dan segmen TCP :
1.             Informasi kontrol di TCP adalah bagian dari header; informasi kontrol di SCTP termasuk dalam potongan kontrol. Ada beberapa jenis potongan kontrol; masing-masing digunakan untuk tujuan yang berbeda.  
2.             Data dalam segmen TCP diperlakukan sebagai satu kesatuan; paket SCTP dapat memuat beberapa potongan data; masing-masing bisa menjadi bagian dari aliran yang berbeda.
3.             Bagian pilihan, yang dapat menjadi bagian dari segmen TCP, tidak ada dalam paket SCTP. Pilihan di SCTP ditangani dengan menentukan jenis potongan baru.
4.             Bagian wajib dari header TCP adalah 20 byte, sedangkan header umum di SCTP hanya 12 byte. Header SCTP lebih pendek karena berikut ini:  
a.       Nomor urut SCTP (TSN) dimiliki oleh masing-masing potongan data, dan karenanya terletak di header chunk.
b.       Nomor pengakuan dan ukuran jendela adalah bagian dari masing-masing bagian kontrol.
c.       Tidak ada kebutuhan untuk bidang panjang header (ditunjukkan sebagai HL di segmen TCP) karena tidak ada pilihan untuk membuat panjang variabel header; Panjang header SCTP diisi (12 byte).
d.       Tidak perlu adanya pointer mendesak di SCTP, seperti yang akan kita lihat nanti.
5.             Checksum di TCP adalah 16 bit; di SCTP, itu adalah 32 bit.
6.             Tag verifikasi di SCTP adalah pengenal asosiasi, yang tidak ada dalam TCP. Di TCP, kombinasi alamat IP dan port mendefinisikan sebuah koneksi; di SCTP kita mungkin memiliki multihoming menggunakan alamat IP yang berbeda. Tag pengesahan yang unik diperlukan untuk menentukan masing-masing asosiasi.
7.             TCP mencakup satu nomor urut di header, yang menentukan jumlah byte pertama di bagian data. Paket SCTP dapat mencakup beberapa potongan data yang berbeda. TSNs, ISs, dan SSN mendefinisikan masing-masing potongan data.
8.             Beberapa segmen di TCP yang membawa informasi kontrol (seperti SYN dan FIN), perlu mengkonsumsi satu nomor urut; Kontrol potongan di SCTP tidak pernah menggunakan nomor TSN, IS, atau SSN. Ketiga identifier ini hanya termasuk potongan data, bukan keseluruhan paket.

Di SCTP, kita memiliki potongan data, stream, dan paket. Suatu asosiasi dapat mengirimkan banyak paket, sebuah paket mungkin berisi beberapa potongan, dan potongan mungkin termasuk dalam aliran yang berbeda. Untuk membuat definisi istilah ini jelas, mari kita anggap bahwa proses A perlu mengirim 11 pesan ke proses B dalam tiga aliran. Empat pesan pertama ada di arus pertama, tiga pesan pertama ada di arus kedua, dan empat pesan terakhir ada di aliran ketiga.
Meskipun sebuah pesan, jika lama, dapat dibawa oleh beberapa potongan data, kita asumsikan bahwa setiap pesan masuk ke dalam satu data chunk. Oleh karena itu, kita memiliki 11 bonggol data dalam tiga aliran.
Proses aplikasi mengirimkan 11 pesan ke SCTP, di mana setiap pesan dialokasikan untuk aliran yang sesuai. Meskipun proses tersebut dapat menyampaikan satu pesan dari arus pertama dan kemudian yang lain dari yang kedua, kita berasumsi bahwa hal itu menyampaikan semua pesan yang menjadi bagian dari arus pertama, semua pesan yang termasuk dalam aliran kedua berikutnya, dan akhirnya, semua pesan milik yang terakhir aliran.
Kita juga berasumsi bahwa jaringan hanya mengizinkan 3 potongan data per paket, yang berarti bahwa kita memerlukan 4 paket seperti yang ditunjukkan pada Gambar 16.5. Potongan data pada arus 0 dibawa pada bagian pertama dan bagian dari paket kedua; mereka yang berada di arus 1 dibawa dalam paket kedua dan ketiga; mereka yang berada di arus 2 dibawa dalam paket ketiga dan keempat.
Perhatikan bahwa setiap potongan data memerlukan tiga identifier: TSN, SI, dan SSN. TSN adalah bilangan kumulatif dan digunakan, seperti yang akan kita lihat nanti, untuk kontrol aliran dan kontrol kesalahan. SI mendefinisikan arus tempat potongan itu berada. SSN menentukan urutan potongan dalam aliran tertentu. Dalam contoh kita, SSN dimulai dari 0 untuk setiap aliran.
Gambar 16.5 Paket, Potongan data, dan Arus




Acknowledgment Number (Nomor Pengakuan)
Nomor pengenal TCP berorientasi byte dan mengacu pada nomor urut. Nomor pengakuan SCTP berorientasi burut. Mereka mengacu pada TSN. Perbedaan kedua antara pengakuan TCP dan SCTP adalah informasi kontrol. Ingat bahwa informasi ini adalah bagian dari header segmen di TCP. Untuk mengetahui segmen yang hanya memuat informasi kontrol, TCP menggunakan nomor urut dan nomor acknowledgment (misalnya, segmen SYN perlu diakui oleh segmen ACK). Namun, di SCTP, informasi kontrol dibawa oleh potongan kontrol, yang tidak memerlukan TSN. Potongan kontrol ini dikenali oleh potongan kontrol lain dari jenis yang sesuai (beberapa tidak memerlukan pengakuan). Misalnya, potongan kontrol INIT diakui oleh potongan INIT-ACK. Tidak perlu nomor urut atau nomor acknowledgment.


Flow Control
Seperti TCP, SCTP menerapkan kontrol aliran untuk menghindari penggunaan receiver yang berlebihan. Kita akan membahas kontrol aliran SCTP nanti di bab ini.


Error Control (Kontrol Kesalahan)
Seperti TCP, SCTP menerapkan error control untuk memberikan kehandalan. Nomor TSN dan nomor acknowledgment digunakan untuk kontrol kesalahan. Kita akan membahas error control nanti di bab ini.


Congestion Control (Kontrol Kemacetan)
Seperti TCP, SCTP menerapkan kontrol kemacetan untuk menentukan berapa banyak potongan data yang bisa disuntikkan ke dalam jaringan. Kita akan membahas kontrol kongesti nanti di bab ini.



16.4 FORMAT PAKET  
Pada bagian ini, kita menampilkan format paket dan jenis potongan yang berbeda. Sebagian besar informasi yang disajikan pada bagian ini akan menjadi jelas nanti; Bagian ini bisa dilewati dalam pembacaan pertama atau hanya digunakan sebagai referensi. Paket SCTP memiliki header umum wajib dan satu set blok yang disebut chunks. Ada dua jenis potongan: control chunks dan data chunks. Kontrol kontrol mengendalikan dan memelihara asosiasi; sepotong data membawa data pengguna. Dalam sebuah paket, potongan kontrol datang sebelum potongan data. Gambar 16.6 menunjukkan format umum dari paket SCTP.
Gambar 16.6 SCTP Format Paket




General Header (Header Umum)
Header umum (header paket) menentukan titik akhir dari setiap asosiasi tempat paket berada, menjamin bahwa paket tersebut milik asosiasi tertentu, dan menjaga integritas isi paket termasuk header itu sendiri. Format header umum ditunjukkan pada Gambar 16.7.
Gambar 16.7 Header Umum

Ada empat bidang di header umum:
·         Sumber alamat port.
Ini adalah bidang 16-bit yang menentukan nomor port dari proses pengiriman paket.
·         Destinasi alamat port.
Ini adalah bidang 16-bit yang menentukan nomor port dari proses yang menerima paket.
·         Verifikasi tag.
Ini adalah nomor yang cocok dengan paket ke asosiasi. Ini mencegah sebuah paket dari asosiasi sebelumnya disalahartikan sebagai sebuah paket dalam asosiasi ini. Ini berfungsi sebagai pengidentifikasi untuk asosiasi; itu diulang di setiap paket selama asosiasi. Ada verifikasi terpisah yang digunakan untuk setiap arah dalam asosiasi.
·         Checksum Bidang 32-bit ini berisi checksum CRC-32 (lihat Lampiran D). Perhatikan bahwa ukuran checksum meningkat dari 16 bit (di UDP, TCP, dan IP) menjadi 32 bit di SCTP untuk memungkinkan penggunaan checksum CRC-32.  


Chunks (Potongan)
Kontrol informasi atau data pengguna dibawa dalam potongan. Potongan memiliki tata letak umum seperti yang ditunjukkan pada Gambar 16.8.
Gambar 16.8 Layout umum pada potongan

            Tiga bidang pertama umum untuk semua potongan; bidang informasi bergantung pada jenis potongan. Poin penting yang harus diingat adalah bahwa SCTP memerlukan bagian informasi menjadi kelipatan 4 byte; jika tidak, padding byte (delapan 0s) ditambahkan pada akhir bagian.

Uraian tentang bidang-bidang yang umum adalah sebagai berikut:
·         Type.
Bidang 8-bit ini bisa mendefinisikan hingga 256 jenis potongan. Hanya sedikit yang telah didefinisikan sejauh ini; Sisanya dicadangkan untuk penggunaan masa depan. Lihat Tabel 16.2 untuk daftar potongan dan uraiannya.
·         Flag.
Bidang 8-bit ini mendefinisikan aliran khusus yang mungkin dibutuhkan oleh potongan tertentu. Setiap bit memiliki arti yang berbeda tergantung dari jenis potongannya.
·         Length.
Karena ukuran bagian informasi bergantung pada jenis potongan, kita perlu mendefinisikan batasan potongan. Bidang 16-bit ini mendefinisikan ukuran total potongan, dalam satuan byte, termasuk tipe, flag, dan bidang panjang. 

Jika sepotong tidak mengandung informasi, nilai bidang panjangnya adalah 4 (4 byte). Perhatikan bahwa panjang padding, jika ada, tidak termasuk dalam perhitungan medan panjang. Ini membantu penerima menemukan berapa banyak byte berguna yang dibawa oleh sepotong. Jika nilainya bukan kelipatan 4, receiver tahu ada padding. Misalnya, ketika receiver melihat panjang 17, ia mengetahui nomor berikutnya yang merupakan kelipatan dari 4 adalah 20, jadi ada 3 byte padding yang harus dibuang. Tapi jika receiver melihat panjang 16, ia tahu bahwa tidak ada padding.
Table 16.2 Potongan
Type
Chunk
Description
0
DATA
Data Pengguna
1
INIT
Mengatur sebuah asosiasi
2
INIT ACK
Mengakui potongan INIT
3
SACK
Pengakuan selektif
4
HEARTBEAT
Probe rekan untuk keaktifan
5
HEARTBEAT ACK
Mengakui potongan HEARTBEAT
6
ABORT
Membatalkan sebuah asosiasi
7
SHUTDOWN
Mengakhiri sebuah asosiasi
8
SHUTDOWN ACK
Mengakui potongan SHUTDOWN
9
ERROR
Melaporkan kesalahan tanpa mematikan
10
COOKIE ECHO
Paket ketiga dalam bentuk asosiasi
11
COOKIE ACK
Mengakui COOKIE ECHO
14
SHUTDOWN COMPLETE
Paket ketiga dalam bentuk addociation termination
192
FORWARD TSN
Untuk menyesuaikan cumulatin TSN


DATA  
Bunyi DATA membawa data pengguna. Paket mungkin berisi potongan data nol atau lebih. Gambar 16.9 menunjukkan format potongan DATA.
Gambar 16.9 DATA chunk

Uraian tentang bidang umum sama. Bidang jenis memiliki nilai 0. Medan memiliki 5 bit cadangan dan 3 bit yang ditentukan: U, B, dan E. Medan U (unordered), bila diatur ke 1, sinyal data unordered (dijelaskan kemudian). Dalam kasus ini, nilai dari nomor urutan arus diabaikan. B (awal) dan E (akhir) bit bersama-sama mendefinisikan posisi potongan dalam pesan yang terfragmentasi. Bila B = 1 dan E = 1, tidak ada fragmentasi (yang pertama dan terakhir); Seluruh pesan dibawa dalam satu potong. Bila B = 1 dan E = 0, itu adalah fragmen pertama. Bila B = 0 dan E = 1, itu adalah fragmen terakhir. Bila B = 0 dan E = 0, itu adalah fragmen tengah (bukan yang pertama dan yang terakhir). Perhatikan bahwa nilai bidang panjang tidak termasuk padding. Nilai ini tidak boleh kurang dari 17 karena potongan DATA harus selalu membawa setidaknya satu byte data.
·         Transmission sequence Number (TSN).
Bidang 32-bit ini menentukan nomor urut transmisi. Ini adalah nomor urut yang diinisialisasi dalam potongan INIT untuk satu arah dan di bagian INIT ACK untuk arah yang berlawanan.
·         Stream Identifier (SI).
Bidang 16-bit ini mendefinisikan setiap aliran dalam sebuah asosiasi. Semua potongan arus yang sama dalam satu arah membawa pengenal arus yang sama.
·         Stream Sequence Number (SSN).
Bidang 16-bit ini mendefinisikan potongan dalam aliran tertentu dalam satu arah.
·         Protocol Identifier (Identifikasi protocol).
Bidang 32-bit ini dapat digunakan oleh program aplikasi untuk menentukan jenis data. Hal ini diabaikan oleh lapisan SCTP.
·         Data pengguna.
Bidang ini membawa data pengguna yang sebenarnya. SCTP memiliki beberapa aturan khusus tentang bidang data pengguna. Pertama, tidak ada potongan yang bisa membawa data milik lebih dari satu pesan, namun sebuah pesan bisa disebarkan di beberapa potongan data. Kedua, bidang ini tidak kosong; itu harus memiliki setidaknya satu byte data pengguna. Ketiga, jika data tidak bisa berakhir pada batas 32-bit, padding harus ditambahkan. Aliran padding ini tidak termasuk dalam nilai bidang panjang. 

INIT
               Potongan INIT (potongan inisiasi) adalah potongan pertama yang dikirim oleh titik akhir untuk membentuk sebuah asosiasi. Paket yang membawa potongan ini tidak dapat membawa kontrol atau potongan data lainnya. Nilai dari tag verifikasi untuk paket ini adalah 0, yang berarti tidak ada tag yang telah ditetapkan. Formatnya ditunjukkan pada Gambar 16.10.
               Tiga bidang yang umum (tipe, sayap, dan panjang) adalah seperti sebelumnya. Nilai bidang jenis adalah 1. Nilai bidang adalah nol (tidak ada arus); dan nilai bidang panjang minimal 20 (lebih jika ada parameter opsional). Bidang lainnya dijelaskan di bawah ini:
·         Initation Tag
       Bidang 32-bit ini menentukan nilai dari label verifikasi untuk paket yang bepergian ke arah yang berlawanan. Seperti yang telah kita sebutkan sebelumnya, semua paket memiliki tag verifikasi di header umum; Tag ini sama untuk semua paket yang bepergian dalam satu arah dalam sebuah asosiasi. Nilai tag ini ditentukan selama pembentukan asosiasi. Titik akhir yang memulai asosiasi menentukan nilai tag ini di kolom tag inisiasi. Nilai ini digunakan sebagai tag verifikasi pada sisa paket yang dikirim dari arah lain. Misalnya, ketika titik akhir A memulai hubungan dengan titik akhir B, A menentukan nilai tag inisiasi, katakanlah x, yang digunakan sebagai tag verifikasi untuk semua paket yang dikirim dari B ke A. Tag inisiasi adalah nomor acak antara 0 dan 232 - 1. Nilai 0 tidak membedakan asosiasi dan hanya diizinkan oleh header umum potongan INIT.
Gambar 16.10 Potongan chunk

·         Advertised Receiver Window Credit
       Bidang 32-bit ini digunakan dalam kontrol arus dan menentukan jumlah awal data dalam satuan byte yang dapat diijinkan oleh pengirim dari INIT chunk. Ini adalah nilai rwnd yang akan digunakan oleh receiver untuk mengetahui berapa banyak data yang akan dikirim. Perhatikan bahwa, di SCTP, nomor urut ada dalam bentuk potongan.
·         Outbond Stream.
       Bidang 16-bit ini mendefinisikan jumlah arus yang inisiator asosiasi sarankan untuk arus sungai dalam arah keluar. Hal itu bisa dikurangi dengan titik akhir lainnya.
·         Maximum Inbound Stream
       Bidang 16-bit ini mendefinisikan jumlah arus maksimum yang dapat diinisiasi oleh inisiator asosiasi dalam arah masuk. Perhatikan bahwa ini adalah jumlah maksimum dan tidak dapat
·         Initial TSN.
       Bidang 32-bit ini menginisialisasi nomor urut transmisi (TSN) dalam arah keluar. Perhatikan bahwa setiap data chunk dalam sebuah asosiasi harus memiliki satu TSN. Nilai bidang ini juga merupakan bilangan acak kurang dari 232.
·         Variable-length Parameter
       Parameter opsional ini dapat ditambahkan ke bagian INIT untuk menentukan alamat IP dari titik akhir pengirim, jumlah alamat IP yang dapat diakhiri titik akhir dapat mendukung (multihome), pelestarian negara cookie, jenis alamat, dan dukungan eksplisit. kemacetan notifikasi (ECN).


INIT ACK
               Potongan INIT ACK (initial acknowledgment chunk) adalah potongan kedua yang dikirim selama pembentukan asosiasi. Paket yang membawa potongan ini tidak dapat membawa kontrol atau potongan data lainnya. Nilai dari tag verifikasi untuk paket ini (terletak di header umum) adalah nilai tag inisiasi yang didefinisikan dalam potongan INIT yang diterima. Formatnya ditunjukkan pada Gambar 16.11.
Gambar 16.11. Potongan INIT ACK

               Perhatikan bahwa bidang di bagian utama potongan sama dengan yang didefinisikan dalam potongan INIT. Namun, parameter wajib diperlukan untuk potongan ini. Parameter tipe 7 mendefinisikan kuki negara yang dikirim oleh pengirim potongan ini. Kita mendiskusikan penggunaan cookies di bab ini. Potongan juga bisa memiliki parameter opsional. Perhatikan bahwa kolom tag inisiasi di bilah ini memulai nilai tag verifikasi untuk paket di masa depan yang melakukan perjalanan dari arah yang berlawanan.


COOKIE ECHO
               Potongan COOKIE ECHO adalah potongan ketiga yang dikirim selama pembentukan asosiasi. Ini dikirim pada titik akhir yang menerima potongan INIT ACK (biasanya pengirim potongan INIT). Paket yang membawa potongan ini juga bisa membawa data pengguna.


COOKIE ACK
               Potongan COOKIE ACK adalah potongan keempat dan terakhir yang dikirim selama pembentukan asosiasi. Hal ini dikirim oleh titik akhir yang menerima COOKIE ECHO chunk. Paket yang membawa potongan ini juga bisa membawa data pengguna. Formatnya ditunjukkan pada Gambar 16.13.
Gambar 16.13. COOKIE ACK

               Perhatikan bahwa ini adalah potongan tipe 11 yang sangat sederhana. Panjang potongannya persis 4 byte.


SACK  
               Potongan SACK (selective ACK chunk) mengakui penerimaan paket data. Gambar 16.14 menunjukkan format potongan SACK.
Gambar 16.14 Potongan SACK

               Bidang-bidang yang umum sama seperti yang telah dibahas sebelumnya. Bidang jenis memiliki nilai 3. Bit flan diset ke 0s.
·         Cumulative TSN Acknowledgment.
             Bidang 32-bit ini mendefinisikan TSN dari potongan data terakhir yang diterima secara berurutan.
·         Advertised Receiver Window Credit.
             Bidang 32-bit ini adalah nilai yang diperbarui untuk ukuran jendela penerima.
·         Number of gap ACK Blocks.
 Bidang 16-bit ini mendefinisikan jumlah celah dalam potongan data yang diterima setelah TSN kumulatif. Perhatikan bahwa celah istilah menyesatkan di sini: kesenjangan menentukan urutan potongan yang diterima, bukan potongan yang hilang.
·         Number of duplicates.
             Bidang 16-bit ini menentukan jumlah potongan duplikat setelah TSN kumulatif.
·         Gap ACK blok start offset.
 Untuk setiap blok celah, bidang 16-bit ini memberikan TSN awal relatif terhadap TSN kumulatif.
·         Gap ACK blok akhir offset.
             Untuk setiap celah blok, bidang 16-bit ini memberi akhir TSN relatif terhadap TSN kumulatif.
·         Duplicate TSN.
        Untuk setiap potongan duplikat, bidang 32-bit ini memberi TSN potongan duplikat. 

HEARTBEAT dan HEARTBEAT ACK
Potongan HEARTBEAT dan potongan HEARTBEAT ACK serupa kecuali untuk tipe lapangan. Yang pertama memiliki tipe 4 dan yang kedua dari tipe 5. Gambar 16.15 menunjukkan format potongan ini. Kedua potongan ini digunakan untuk secara berkala menyelidiki kondisi asosiasi. Titik akhir mengirimkan sepotong HEARTBEAT; rekan merespon dengan HEARTBEAT ACK jika masih hidup. Formatnya memiliki tiga bidang umum dan bidang parameter wajib yang memberikan informasi spesifik pengirim. Informasi di bagian HEARTBEAT ini mencakup waktu setempat dan alamat pengirimnya. Ini disalin tanpa berubah ke bagian HEARTBEAT ACK.
Gambar 16.15 Potongan HEARTBEAT and HEARTBEAT ACK

  
SHUTDOWN, SHUTDOWN ACK, dan SHUTDOWN COMPLETE
               Ketiga potongan ini (digunakan untuk menutup sebuah asosiasi) serupa. Potongan SHUTDOWN, tipe 7, berukuran delapan byte; empat byte kedua mendefinisikan TSN kumulatif. Potongan ACK SHUTDOWN, tipe 8, berukuran empat byte. BUKU SHUTDOWN COMPLETE, tipe 14, juga panjangnya 4 byte, dan memiliki bit rate, huruf T. Tampak bahwa pengirim tidak memiliki tabel TCB (lihat Bab 15). Gambar 16.16 menunjukkan formatnya.
Gambar 16.16


ERROR (KESALAHAN)
               Potongan ERROR dikirim saat titik akhir menemukan beberapa kesalahan dalam paket yang diterima. Perhatikan bahwa pengiriman potongan ERROR tidak berarti pengguguran asosiasi. (Ini memerlukan potongan ABORT.) Gambar 16.17 menunjukkan format potongan ERROR
Gambar 16.17 Error Chunk

Kesalahan tersebut didefinisikan pada Tabel 16.3.
Tabel 16.3.
Code
Description
1
Pengenal arus tidak valid
2
Perintah parameter hilang
3
Kesalahan keadaan pada cookie
4
DIluar sumber
5
Alamat yang tidak dapat dipecahkan
6
Jenis potongan yang tidak dikenal
7
Perintah parameter yang tidak valid
8
Perintah parameter yang tidak dikenal
9
Tidak ada data pengguna
10
Cookie diterima saat keadaan mati


ABORT
               Potongan ABORT dikirim saat titik akhir menemukan kesalahan fatal dan perlu membatalkan hubungan. Jenis kesalahannya sama dengan potongan ERROR.


FORWARD TSN
               Ini adalah potongan baru-baru ini ditambahkan ke standar (lihat RFC 3758) untuk memberi tahu penerima agar menyesuaikan TSN kumulatifnya. Ini menyediakan layanan handal parsial.



16.5 ASOSIASI SCTP
               SCTP, seperti TCP, adalah protokol connection-oriented. Namun, koneksi di SCTP disebut asosiasi untuk menekankan multihoming.


Association Establishment (Pendirian Asosiasi)
               Pembentukan asosiasi di SCTP membutuhkan jabat tangan empat arah. Dalam prosedur ini, sebuah proses, biasanya klien, ingin menjalin hubungan dengan proses lain, biasanya server, menggunakan SCTP sebagai protokol lapisan transport. Serupa dengan TCP, server SCTP perlu dipersiapkan untuk menerima asosiasi apapun (pasif terbuka). Pembentukan asosiasi, diprakarsai oleh klien (active open). Pembentukan asosiasi SCTP ditunjukkan pada Gambar 16.19.
Gambar 16.19.

              Langkah-langkahnya, dalam situasi normal, adalah sebagai berikut:
1.             Klien mengirimkan paket pertama, yang berisi potongan INIT. Veri fi cation tag (VT) dari paket ini (yang didefinisikan dalam header umum) adalah 0 karena tidak ada label verifikasi yang telah ditentukan untuk arah ini (client to server). Tag INIT menyertakan tag inisiasi yang akan digunakan untuk paket dari yang lain. arah (server ke client). Potongan juga menentukan TSN awal untuk arah ini dan mengiklankan nilai untuk rwnd. Nilai rwnd biasanya diiklankan dalam potongan SACK; Hal ini dilakukan di sini karena SCTP mengizinkan dimasukkannya potongan DATA pada paket ketiga dan keempat; server harus menyadari ukuran buffer klien yang tersedia. Perhatikan bahwa tidak ada potongan lain yang dapat dikirim dengan paket pertama.
2.             Server mengirimkan paket kedua, yang berisi bagian INIT ACK. Tag pengesahan adalah nilai bidang tag awal di bagian INIT. Potongan ini memulai tag yang akan digunakan ke arah lain, menentukan TSN awal, untuk aliran data dari server ke klien, dan menyetel rwnd server. Nilai rwnd didefinisikan untuk memungkinkan klien mengirim potongan DATA dengan paket ketiga. INIT ACK juga mengirimkan cookie yang mendefinisikan keadaan server saat ini. Kita akan segera membahas penggunaan cookie.
3.             Klien mengirimkan paket ketiga, yang berisi potongan COOKIE ECHO. Ini adalah potongan yang sangat sederhana yang menggemakan, tanpa perubahan, cookie dikirim oleh server. SCTP memungkinkan pemasukan potongan data dalam paket ini.
4.             Server mengirimkan paket keempat, yang mencakup potongan COOKIE ACK yang mengakui penerimaan potongan COOKIE ECHO. SCTP memungkinkan pemasukan potongan data dengan paket ini.


Number of Packets Exchanged (Jumlah paket yang berubah)
               Jumlah paket yang dipertukarkan adalah tiga dalam bentuk koneksi TCP, dan empat di perusahaan asosiasi SCTP. Kelihatannya SCTP kurang efisien daripada TCP, namun kita perlu mempertimbangkan bahwa SCTP mengizinkan pertukaran data dalam paket ketiga dan keempat dan, seperti yang akan kita lihat, memberikan keamanan yang lebih baik terhadap penolakan SYN - serangan layanan. Setelah dua paket dipertukarkan, data bisa ditransfer.


Verification Tag (Tag Verifikasi)
               Ketika kita membandingkan TCP dan SCTP, kita menemukan bahwa tag verifikasi di SCTP tidak ada di TCP. Di TCP, koneksi diidentifikasi dengan kombinasi alamat IP dan nomor port yang merupakan bagian dari setiap segmen. Ini telah menciptakan dua masalah:
1.             Penyerang buta (bukan pencegat) dapat mengirim segmen ke server TCP menggunakan nomor sumber dan port tujuan yang dipilih secara acak seperti yang kita diskusikan dalam serangan SYN flab.
2.             Segmen yang tertunda dari koneksi sebelumnya dapat muncul dalam koneksi baru yang menggunakan sumber dan alamat port tujuan yang sama (inkarnasi). Ini adalah salah satu alasan mengapa TCP membutuhkan timer TIME-WAIT saat mengakhiri koneksi.

               SCTP memecahkan dua masalah ini dengan menggunakan tag verifikasi, nilai umum yang dibawa dalam semua paket yang bepergian dalam satu arah dalam sebuah asosiasi. Seorang penyerang buta tidak dapat menyuntikkan paket acak ke dalam sebuah asosiasi karena paket tersebut kemungkinan besar tidak membawa tag yang sesuai (kemungkinannya adalah 1 dari 232). Sebuah paket dari asosiasi lama tidak dapat muncul dalam inkarnasi karena, walaupun alamat sumber dan alamat tujuannya sama, tag verifikasi pasti akan berbeda. Dua tag verifikasi, satu untuk setiap arah, mengidentifikasi sebuah asosiasi.


Cookie
               Kita membahas serangan SYN flabode di Bab 15. Dengan TCP, penyerang berbahaya dapat menjalankan server TCP dengan sejumlah besar segmen SYN palsu menggunakan berbagai alamat IP palsu. Setiap kali server menerima segmen SYN, ia menetapkan TCB dan mengalokasikan sumber daya lain sambil menunggu segmen berikutnya tiba. Setelah beberapa saat, bagaimanapun, server mungkin runtuh karena kehabisan sumber daya.
               Perancang SCTP memiliki strategi untuk mencegah serangan jenis ini. Strateginya adalah menunda alokasi sumber daya sampai penerimaan paket ketiga, saat alamat IP pengirim diverifikasi. Informasi yang diterima dalam paket pertama entah bagaimana harus disimpan sampai paket ketiga tiba. Tetapi jika server menyimpan informasinya, itu akan membutuhkan alokasi sumber daya (memori); Inilah dilema. Solusinya adalah mengepak informasi dan mengirimkannya kembali ke klien. Ini disebut menghasilkan kue. Cookie dikirim dengan paket kedua ke alamat yang diterima dalam paket pertama. Ada dua situasi potensial.
1.             Jika pengirim paket pertama adalah penyerang, server tidak pernah menerima paket ketiga; Cookie hilang dan tidak ada sumber daya yang dialokasikan. Satu-satunya upaya untuk server adalah "memanggang" cookie.
2.             Jika pengirim paket pertama adalah klien jujur ​​yang perlu membuat koneksi, ia menerima paket kedua, dengan cookie. Ini mengirimkan sebuah paket (ketiga dalam seri) dengan cookie, tanpa perubahan. Server menerima paket ketiga dan tahu bahwa itu berasal dari klien yang jujur ​​karena cookie yang dikirim pengirim ada di sana. Server sekarang dapat mengalokasikan sumber daya.

               Strategi di atas bekerja jika tidak ada entitas yang bisa "makan" kue "dipanggang" oleh server. Untuk menjamin hal ini, server membuat ringkasan dari informasi menggunakan kunci rahasianya sendiri. Informasi dan ringkasannya, bersama-sama membuat kue, yang dikirim ke klien di paket kedua. Saat cookie dikembalikan ke paket ketiga, server menghitung ringkasan dari informasi. Jika mencerna sesuai dengan yang dikirim, cookie belum diubah oleh entitas lain.


Data Transfer
               Seluruh tujuan sebuah asosiasi adalah mentransfer data antara dua ujung. Setelah asosiasi terbentuk, transfer data dua arah dapat dilakukan. Klien dan server keduanya bisa mengirim data. Seperti TCP, SCTP mendukung piggybacking.
               Ada perbedaan besar, bagaimanapun, antara transfer data di TCP dan SCTP. TCP menerima pesan dari sebuah proses sebagai aliran byte tanpa mengenali batasan di antara keduanya. Prosesnya mungkin memasukkan beberapa batasan untuk penggunaan sejawatnya, namun TCP memperlakukan tanda tersebut sebagai bagian dari teks. Dengan kata lain, TCP mengambil setiap pesan dan menambahkannya ke buffernya. Segmen dapat membawa beberapa bagian dari dua pesan yang berbeda. Satu-satunya sistem pemesanan yang diberlakukan oleh TCP adalah nomor byte.
               SCTP, di sisi lain, mengakui dan mempertahankan batasan. Setiap pesan yang berasal dari proses diperlakukan sebagai satu unit dan dimasukkan ke dalam potongan DATA kecuali jika terfragmentasi (dibahas kemudian). Dalam pengertian ini, SCTP seperti UDP, dengan satu keuntungan besar: potongan data saling terkait satu sama lain.
               Pesan yang diterima dari sebuah proses menjadi potongan DATA, atau potongan jika terfragmentasi, dengan menambahkan header DATA chunk ke pesan. Setiap potongan data yang dibentuk oleh pesan atau fragmen pesan memiliki satu TSN. Kita perlu ingat bahwa hanya potongan data yang menggunakan TSN dan hanya potongan DATA yang dikenali oleh potongan SACK.
               Mari kita tunjukkan skenario sederhana pada Gambar 16.20. Dalam gambar ini, seorang klien mengirimkan empat potongan DATA dan menerima dua potongan DATA dari server. Nantinya, kita akan membahas, secara lebih rinci, penggunaan flow control dan error di SCTP. Untuk saat ini, kita berasumsi bahwa semuanya berjalan dengan baik dalam skenario ini. Klien menggunakan tag verifikasi 85, server 700. Paket yang dikirim dijelaskan di bawah ini:
1.       Klien mengirimkan paket pertama yang membawa dua potongan data dengan TSNs 7105 dan 7106.
2.       Klien mengirimkan paket kedua yang membawa dua potongan DATA dengan TSNs 7107 dan 7108.
3.       Paket ketiga adalah dari server. Ini berisi potongan SACK yang diperlukan untuk mengetahui penerimaan potongan DATA dari klien. Bertolak belakang dengan TCP, SCTP mengakui TSN in-order terakhir yang diterima, bukan yang diharapkan berikutnya. Paket ketiga juga menyertakan potongan DATA pertama dari server dengan TSN 121.
4.       Setelah beberapa saat, server mengirimkan paket lain yang membawa potongan DATA terakhir dengan TSN 122, namun tidak termasuk potongan SACK dalam paket karena potongan data terakhir yang diterima dari klien sudah diakui.
5.       Akhirnya, klien mengirimkan sebuah paket yang berisi sepotong SACK yang mengakui penerimaan dua potongan DATA terakhir dari server.
Gambar 16.20 Simple Data Transfer

Transfer Data Multihoming
               Kita membahas kemampuan multihoming dari SCTP, sebuah fitur yang membedakan SCTP dari UDP dan TCP. Multihoming memungkinkan kedua ujungnya menentukan beberapa alamat IP untuk komunikasi. Namun, hanya satu dari alamat ini yang dapat didefinisikan sebagai alamat utama; Sisanya adalah alamat alternatif. Alamat utama didefinisikan selama pembentukan asosiasi. Yang menarik adalah alamat utama akhir ditentukan oleh ujung yang lain. Dengan kata lain, sumber menentukan alamat utama untuk tujuan.
               Transfer data, secara default, menggunakan alamat utama tujuan. Jika yang utama tidak tersedia, salah satu alamat alternatif digunakan. Prosesnya, bagaimanapun, selalu bisa menggantikan alamat utama dan secara eksplisit meminta agar sebuah pesan dikirim ke salah satu alamat alternatif. Proses juga dapat secara eksplisit mengubah alamat utama asosiasi saat ini.
Pertanyaan logis yang muncul adalah kemana harus mengirim SACK. SCTP menentukan bahwa SACK dikirim ke alamat dari mana paket SCTP yang sesuai berasal


Multistream Delivery
               Salah satu fitur menarik dari SCTP adalah perbedaan antara transfer data dan pengiriman data. SCTP menggunakan nomor TSN untuk menangani transfer data, pergerakan potongan data antara sumber dan tujuan. Pengiriman potongan data dikendalikan oleh SIs dan SSN. SCTP dapat mendukung beberapa aliran, yang berarti bahwa proses pengirim dapat menentukan aliran yang berbeda dan sebuah pesan dapat dimiliki oleh salah satu aliran ini. Setiap aliran diberikan sebuah pengenal arus (stream) yang secara unik mendefinisikan aliran tersebut. Namun, SCTP mendukung dua jenis pengiriman data di setiap aliran: ordered (default) dan unordered. Dalam pengiriman data yang terurut, potongan data dalam arus menggunakan nomor urutan arus (SSN) untuk menentukan urutannya di arus. Ketika potongan tiba di tempat tujuan, SCTP bertanggung jawab untuk pengiriman pesan sesuai dengan SSN yang ditentukan dalam potongan. Ini mungkin menunda pengiriman karena beberapa potongan mungkin rusak. Dalam pengiriman data tidak berurutan, potongan data dalam arus memiliki arus, namun nilai field SSN mereka diabaikan. Mereka tidak mengkonsumsi SSN. Ketika potongan data yang tidak berurutan tiba di SCTP tujuan, pesan tersebut membawa pesan membawa potongan ke aplikasi tanpa menunggu pesan lainnya. Sebagian besar waktu, aplikasi menggunakan layanan pengiriman pesanan, namun kadang-kadang beberapa aplikasi perlu mengirimkan data penting yang harus dikirim tanpa urutan (mengingat data mendesak dan fasilitas penunjuk mendesak dari TCP). Dalam kasus ini, aplikasi dapat menentukan pengiriman sebagai tidak teratur.


Fragmentasi
               Masalah lain dalam transfer data adalah fragmentasi. Meskipun SCTP berbagi istilah ini dengan IP, fragmentasi di IP dan SCTP termasuk dalam tingkat yang berbeda: yang pertama di lapisan jaringan, yang terakhir ada di lapisan transport.
               SCTP menjaga batas pesan dari proses ke proses saat membuat potongan DATA dari pesan jika ukuran pesan (bila dienkapsulasi dalam datagram IP) tidak melebihi MTU jalur. Ukuran datagram IP yang membawa pesan dapat ditentukan dengan menambahkan ukuran pesan, dalam satuan byte, ke empat overhead: header chunk data, potongan SACK yang diperlukan, header umum SCTP, dan header IP. Jika ukuran total melebihi MTU, pesan harus terfragmentasi.
               Fragmentasi pada sumber SCTP berlangsung dengan menggunakan langkah-langkah berikut:
1.             Pesan dipecah menjadi fragmen yang lebih kecil untuk memenuhi persyaratan ukuran.
2.             Sebuah header header DATA ditambahkan ke setiap fragmen yang membawa TSN yang berbeda. TSN perlu di urutan.
3.             Semua potongan header membawa pengenal arus yang sama (SI), nomor urutan arus (SSN) yang sama, identifikasi protokol payload yang sama, dan perangkat yang sama.
4.             Kombinasi B dan E ditetapkan sebagai berikut:
a.       Sebuah. Fragmen pertama: 10
b.       Fragmen tengah: 00
c.       Fragmen terakhir: 01.

               Fragmen-fragmen itu dipasang kembali di tempat tujuan. Jika potongan DATA tiba dengan bit B / E-nya tidak sama dengan 11, itu tidak terfragmentasi. Penerima tahu bagaimana memasang kembali semua potongan dengan SIs dan SSN yang sama. Jumlah fragmen ditentukan oleh jumlah TSN dari fragmen pertama dan fragmen terakhir


Association Termination (Penghentian Asosiasi)
               Di SCTP, seperti TCP, salah satu dari dua pihak yang terlibat dalam pertukaran data (client atau server) dapat menutup koneksi. Namun, tidak seperti TCP, SCTP tidak mengizinkan asosiasi "halfclosed". Jika salah satu ujungnya menutup asosiasi, ujung lainnya harus berhenti mengirim data baru. Jika ada data yang tertinggal dalam antrian penerima permintaan penghentian, mereka akan dikirim dan asosiasi ditutup. Pengakhiran asosiasi menggunakan tiga paket seperti yang ditunjukkan pada Gambar 16.21. Perhatikan bahwa meskipun gambar menunjukkan kasus di mana penghentian diprakarsai oleh klien, hal itu juga dapat diprakarsai oleh server
Gambar 16.21. Penghentian Asosiasi


Ascociation Abortion
Penghentian hubungan yang dibahas di bagian sebelumnya kadang-kadang disebut sebagai "penghentian anggun." Suatu asosiasi di SCTP juga dapat dibatalkan. Aborsi mungkin diminta oleh proses di akhir atau oleh SCTP. Suatu proses mungkin ingin membatalkan asosiasi jika ada masalah dalam proses itu sendiri (menerima data yang salah dari ujung yang lain, masuk ke loop yang tidak terbatas, dan seterusnya). Server mungkin ingin membatalkan asosiasi karena telah menerima potongan INIT dengan parameter yang salah, sumber daya yang diminta tidak tersedia setelah menerima cookie, sistem operasi harus ditutup, dan seterusnya. Proses aborsi di SCTP sangat sederhana. Salah satu ujungnya bisa mengirim potongan ABORT dan membatalkan asosiasi seperti yang ditunjukkan pada Gambar 16.22. Tidak ada potongan lebih lanjut yang dibutuhkan.
Gambar 16.22. Asosiasi Aborsi



16.6 DIAGRAM TRANSISI NEGARA
Untuk melacak semua kejadian berbeda yang terjadi selama pembentukan asosiasi, penghentian asosiasi, dan transfer data, perangkat lunak SCTP, seperti TCP, diimplementasikan sebagai mesin negara yang sangat terbatas. Gambar 16.23 menunjukkan diagram transisi negara untuk klien dan server. Garis-garis hitam burik dari gambar menunjukkan transisi normal untuk server; garis hitam solid mewakili transisi normal untuk klien, dan garis berwarna mewakili situasi yang tidak biasa.
Gambar 16.23


            Dalam situasi khusus, server bisa melewati transisi yang ditunjukkan oleh garis yang solid; Klien bisa melewati transisi yang ditunjukkan oleh garis putus-putus. Tabel 16.4 menunjukkan negara bagian untuk SCTP.
Gambar 16.23 Tabel 16.4 untuk SCTP
KEADAAN
DESKRIPSI
CLOSED
Tidak ada koneksi
COOKIE-WAIT
Menunggu  cookie
COOKIE-ECHOED
Menunggu pengakuan cookie
ESTABLISHED
Koneksi terbentuk; sata sedang ditransfer
SHUTDOWN-PENDING
Mengirim data setelah meneima kedekatan
SHUTDOWN-SENT
Menunggu pengakuan SHUTDOWN
SHUTDOWN-RECEIVED
Mengirim data setelah menerima  SHUTDOWN
SHUTDOWN-ACK-SENT
Menunggu penyelesaian penghentian



16.7 PENGENDALIAN ALIRAN
               Flow control di SCTP serupa dengan yang di TCP. Di TCP, kita hanya perlu menangani satu unit data, yaitu byte. Di SCTP, kita perlu menangani dua unit data, yaitu byte dan chunk. Nilai rwnd dan cwnd dinyatakan dalam satuan byte; nilai TSN dan ucapan terima kasih diungkapkan dalam potongan. Untuk menunjukkan konsep tersebut, kita membuat beberapa asumsi yang tidak realistis. Kita berasumsi bahwa tidak akan ada kemacetan dalam jaringan dan bahwa jaringan bebas dari kesalahan. Dengan kata lain, kita berasumsi bahwa cwnd tidak terbatas dan tidak ada paket yang hilang, tertunda, atau tidak rusak. Kita juga berasumsi bahwa transfer data bersifat searah. Kita memperbaiki asumsi tidak realistis kita di bagian selanjutnya. Implementasi SCTP saat ini masih menggunakan jendela berorientasi byte untuk kontrol aliran. Kita, bagaimanapun, menunjukkan penyangga dalam hal potongan untuk membuat konsep lebih mudah dipahami.


•          Receiver Site (Situs Penerima)
               Penerima memiliki satu buffer (antrian) dan tiga variabel. Antrian memegang potongan data yang diterima yang belum dibaca oleh proses. Variabel pertama memegang TSN terakhir yang diterima, cumTSN. Variabel kedua memegang ukuran buffer yang tersedia, winsize. Variabel ketiga memegang pengakuan akumulatif terakhir, lastACK. Gambar 16.27 menunjukkan antrian dan variabel pada lokasi penerima.
Gambar 16.27

1.             Saat situs menerima data, simpan di akhir buffer (antrian) dan kurangi ukuran potongan dari winSize. Jumlah TSN potongan disimpan dalam variabel cumTSN.
2.             Saat proses membaca sepotong, itu akan menghapusnya dari antrian dan menambahkan ukuran potongan yang dibuang ke winSize (daur ulang)
3.             Ketika penerima memutuskan untuk mengirim SACK, ia akan memeriksa nilai lastAck; Jika kurang dari cumTSN, ia mengirimkan SACK dengan nomor TSN kumulatif sama dengan cumTSN. Ini juga termasuk nilai winSize sebagai ukuran jendela yang diiklankan. Nilai lastback kemudian diperbarui untuk menampung nilai cumTSN.

Situs Pengirim
     Pengirim memiliki satu buffer (antrian) dan tiga variabel: curTSN, rwnd, dan inTransit, seperti yang ditunjukkan pada Gambar 16.28. Kita asumsikan masing-masing potongan adalah 100 byte panjangnya.
Gambar 16.28.

Penyangga memegang potongan yang dihasilkan oleh proses yang telah dikirim atau siap dikirim. Variabel pertama, curTSN, mengacu pada potongan berikutnya untuk dikirim. Semua potongan dalam antrian dengan TSN kurang dari nilai ini telah dikirim, namun tidak dikenali; mereka luar biasa Variabel kedua, rwnd, memegang nilai terakhir yang diiklankan oleh receiver (dalam bytes). Variabel ketiga, inTransit, menyimpan jumlah byte dalam transit, byte dikirim namun belum diketahui. Berikut ini adalah prosedur yang digunakan oleh pengirim.
1.             Potongan yang ditunjuk oleh curTSN dapat dikirim jika ukuran datanya kurang dari atau sama dengan jumlah (rwnd - inTransit). Setelah mengirim potongan, nilai curTSN bertambah satu dan sekarang menunjuk ke potongan berikutnya untuk dikirim. Nilai inTransit bertambah dengan ukuran data dalam potongan yang ditransmisikan.
2.             Bila SACK diterima, potongan dengan TSN kurang dari atau sama dengan TSN kumulatif di SACK dikeluarkan dari antrian dan dibuang. Pengirim tidak perlu lagi mengkhawatirkannya. Nilai inTransit dikurangi dengan ukuran total potongan yang dibuang. Nilai rwnd diperbarui dengan nilai jendela yang diiklankan di SACK



16.8 ERROR CONTROL
               SCTP, seperti TCP, adalah protokol lapisan transport yang andal. Ini menggunakan potongan SACK untuk melaporkan keadaan penyangga penerima ke pengirim. Setiap implementasi menggunakan seperangkat entitas dan timer yang berbeda untuk situs penerima dan pengirim. Kita menggunakan desain yang sangat sederhana untuk menyampaikan konsepnya kepada pembaca


Receiver Site (Situs Penerima)
               Dalam desain kita, receiver menyimpan semua potongan yang telah tiba di antreannya termasuk yang keluar dari pesanan. Namun, ia meninggalkan ruang untuk potongan yang hilang. Ini membuang pesan duplikat, tapi terus melacaknya untuk laporan ke pengirim. Gambar 16.30 menunjukkan desain khas untuk situs penerima dan keadaan antrian penerima pada titik waktu tertentu.
Gambar 16.30


               Pengakuan terakhir yang dikirim adalah untuk potongan data 20. Ukuran jendela yang tersedia adalah 1000 byte. Potongan 21 sampai 23 telah diterima secara berurutan. Blok out-of-order pertama berisi potongan 26 sampai 28. Blok out-of-order kedua berisi potongan 31 sampai 34. Variabel memegang nilai cumTSN. Sebuah array variabel mencatat awal dan akhir setiap blok yang tidak sesuai. Sebuah array variabel memegang potongan duplikat yang diterima. Perhatikan bahwa tidak ada kebutuhan untuk menyimpan potongan duplikat dalam antrian, mereka akan dibuang. Angka tersebut juga menunjukkan potongan SACK yang akan dikirim untuk melaporkan keadaan receiver ke pengirim. Nomor TSN untuk potongan out-of-order relatif (offset) ke TSN kumulatif.

Sender Site (Situs Pengirim)
Di situs pengirim, desain kita menuntut dua buffer (antrian): antrian pengiriman dan antrian pengiriman ulang. Kita juga menggunakan tiga variabel: rwnd, inTransit, dan curTSN seperti yang dijelaskan pada bagian sebelumnya. Gambar 16.31 menunjukkan desain yang khas. Antrian pengiriman memegang potongan 23 sampai 40. Potongan 23 sampai 36 telah dikirim, namun tidak diakui; mereka adalah potongan yang luar biasa. Poin curTSN ke urutan berikutnya dikirim (37). Kita berasumsi bahwa setiap potongan adalah 100 byte, yang berarti bahwa 1400 byte data (potongan 23 sampai 36) sedang dalam perjalanan. Pengirim pada saat ini memiliki antrian pengiriman ulang. Ketika sebuah paket dikirim, sebuah timer pengiriman ulang dimulai untuk paket itu (semua potongan data dalam paket itu). Beberapa implementasi menggunakan satu timer tunggal untuk keseluruhan asosiasi, namun kita melanjutkan tradisi satu timer untuk setiap paket untuk penyederhanaan. Ketika timer pengiriman ulang untuk sebuah paket kadaluarsa, atau tiga SACKs tiba yang menyatakan bahwa ada paket yang hilang (pengiriman ulang yang cepat telah dibahas di Bab 12), potongan dalam paket tersebut dipindahkan ke antrian pengiriman ulang agar dibenci. Potongan ini dianggap hilang, bukan luar biasa. Potongan antrian pengiriman ulang memiliki prioritas. Dengan kata lain, pada saat pengirim mengirimkan sepotong, itu akan menjadi potongan 21 dari antrian pengiriman ulang. Gambar 16.31 Untuk melihat bagaimana keadaan pengirim berubah, anggap bahwa SACK pada Gambar 16.30 tiba di situs pengirim pada Gambar 16.31. Gambar 16.32 menunjukkan negara baru. Gambar 16.32
Gambar 16.31.

Gambar 16.32.

1.             Semua potongan yang memiliki TSN sama dengan atau kurang dari nilai cumTSN di SACK dikeluarkan dari antrian pengiriman atau pengiriman ulang. Mereka tidak lagi beredar atau ditandai untuk pengiriman ulang. Potongan 21 dan 22 dikeluarkan dari antrian pengiriman ulang dan 23 dikeluarkan dari antrian pengiriman.
2.             Desain kita juga menghilangkan semua potongan dari antrian pengiriman yang dinyatakan dalam blok celah; Beberapa implementasi konservatif, bagaimanapun, menyimpan potongan ini sampai cumTSN tiba yang mencakup mereka. Tindakan pencegahan ini diperlukan untuk kesempatan langka ketika penerima menemukan beberapa masalah dengan potongan pesanan ini. Kita mengabaikan kejadian langka ini. Potongan 26 sampai 28 dan potongan 31 sampai 34, oleh karena itu, dikeluarkan dari antrian pengiriman.
3.             Daftar potongan duplikat tidak berpengaruh.
4.             Nilai rwnd diubah menjadi 1000 seperti yang diiklankan di bagian SACK.  
5.             Kita juga mengasumsikan bahwa timer transmisi untuk paket yang membawa potongan 24 dan 25 telah habis masa berlakunya. Ini pindah ke antrian pengiriman ulang dan timer pengiriman ulang yang baru diatur sesuai dengan aturan backoff eksponensial yang dibahas di Bab 15.
6.             Nilai inTransit menjadi 400 karena hanya 4 chunks yang sekarang dalam perjalanan. Potongan dalam antrian pengiriman ulang tidak dihitung karena dianggap hilang, tidak dalam perjalanan.

Sending Data Chunks (Mengirimkan Data Chunks)
Sebuah akhir dapat mengirim paket data setiap kali ada potongan data dalam antrian pengiriman dengan TSN lebih besar dari atau sama dengan curTSN atau jika ada potongan data dalam antrian pengiriman ulang. Antrian pengiriman ulang memiliki prioritas. Namun, ukuran total potongan data atau bongkahan yang disertakan dalam paket tidak boleh melebihi nilai (rwnd - inTransit) dan ukuran total frame tidak boleh melebihi ukuran MTU seperti yang telah kita bahas di bagian sebelumnya. Jika kita asumsikan dalam skenario sebelumnya, paket kita bisa mengambil 3 bongkahan (karena batasan MTU), maka potongan 24 dan 25 dari antrian pengiriman ulang dan potongan 37, potongan berikutnya yang siap dikirim dalam antrian pengiriman, bisa jadi dikirim Perhatikan bahwa potongan yang beredar dalam antrian pengiriman tidak dapat dikirim; mereka diasumsikan berada dalam perjalanan Perhatikan juga bahwa setiap potongan yang dikirim dari antrian pengiriman ulang juga berjangka waktu untuk pengiriman ulang lagi. Timer baru mempengaruhi potongan 24, 25, dan 37. Kita perlu menyebutkan di sini bahwa beberapa implementasi mungkin tidak memungkinkan pencampuran potongan dari antrian pengiriman ulang dan antrian pengiriman. Dalam kasus ini, hanya potongan 24 dan 25 yang bisa dikirim dalam paket.

Retransmission
Untuk mengendalikan potongan yang hilang atau dibuang, SCTP, seperti TCP, menggunakan dua strategi: menggunakan timer pengiriman ulang dan menerima empat SACK dengan potongan hilang yang sama.

 Timer Retransmission
SCTP menggunakan timer pengiriman ulang, yang menangani waktu pengiriman ulang, waktu tunggu untuk pengakuan segmen. Prosedur untuk menghitung RTO dan RTT di SCTP sama seperti yang kita jelaskan untuk TCP. SCTP menggunakan RTT terukur (RTTM), RTT yang merapikan, dan RTT deviasi (RTTD) untuk menghitung RTO. SCTP juga menggunakan algoritma Karn untuk menghindari ambiguitas pengakuan. Perhatikan bahwa jika host menggunakan lebih dari satu alamat IP (multihoming), RTO terpisah harus dihitung dan disimpan untuk setiap jalur.

Four Missing Reports
Setiap kali seorang pengirim menerima empat SACK yang informasinya hilang, ada satu atau lebih potongan data tertentu yang hilang, pengirim perlu mempertimbangkan potongan tersebut hilang dan segera memindahkannya ke antrian pengiriman ulang. Perilaku ini analog dengan "fast retransmission" dalam TCP.

 Membangkitkan SACK Chunks
Masalah lain dalam error control adalah generasi SACK chunks. Aturan untuk menghasilkan potongan SACK SCTP serupa dengan aturan yang digunakan untuk pengakuan dengan TCP ACK. Kita meringkas peraturan seperti yang tercantum di bawah ini.
1.       Ketika sebuah akhir mengirimkan potongan DATA ke ujung yang lain, itu harus menyertakan potongan SACK yang mengiklankan penerimaan potongan DATA yang tidak diketahui.
2.       Ketika sebuah akhir menerima sebuah paket yang berisi data, namun tidak memiliki data untuk dikirim, ia harus mengakui penerimaan paket dalam waktu yang ditentukan (biasanya 500 ms).
3.       Akhir harus mengirimkan setidaknya satu SACK untuk setiap paket lain yang diterimanya. Aturan ini menggantikan aturan kedua.
4.       Ketika sebuah paket tiba dengan potongan data out-of-order, receiver harus segera mengirimkan sepotong SACK yang melaporkan situasinya kepada pengirim.





16.9 CONGESTION CONTROL
               SCTP, seperti TCP, adalah protokol lapisan transport dengan paket yang mengalami kemacetan di jaringan. Perancang SCTP telah menggunakan strategi yang sama yang kita jelaskan untuk pengendalian kemacetan di Bab 15 untuk TCP. SCTP memiliki slow start (peningkatan eksponensial), penghindaran kemacetan (penambahan aditif), dan fase kemacetan (multiplicative decline). Seperti TCP, SCTP juga menggunakan transmisi cepat dan pemulihan cepat.

Kontrol Kemacetan dan Multihoming
               Kontrol kongesti di SCTP lebih rumit karena host mungkin memiliki lebih dari satu alamat IP. Dalam hal ini, bisa ada lebih dari satu jalur untuk data dalam jaringan. Masing-masing jalur ini mungkin mengalami tingkat kemacetan yang berbeda. Ini menyiratkan bahwa situs tersebut perlu memiliki nilai cwnd yang berbeda untuk setiap alamat IP.

Notifikasi Eksperimental Eksplisit
               Penjelasan kemacetan yang eksplisit (eksplisit), sebagaimana didefinisikan untuk jaringan area luas lainnya, adalah sebuah proses yang memungkinkan penerima memberi tahu secara eksplisit pengirim atas kemacetan yang dialami di jaringan. Jika penerima menemukan banyak paket tertunda atau hilang, ini merupakan indikasi kemungkinan kemacetan. SCTP dapat menggunakan opsi ECN di bagian INIT dan INIT ACK untuk memungkinkan kedua ujungnya untuk menegosiasikan penggunaan ECN. Jika kedua belah pihak setuju, penerima dapat memberi tahu pengirim kemacetan dengan mengirimkan ECNE (gema notasi peringatan eksplisit) dengan masing-masing paket sampai menerima pengurangan tingkat kemacetan (CWR) untuk menunjukkan bahwa pengirim telah mengurangi cwnd-nya. Kita belum membahas dua potongan ini karena mereka belum termasuk dalam standar dan karena diskusi tentang dugaan kemacetan eksplisit berada di luar cakupan buku ini.

Edited by : Salma Faiqah A
Sumber : e-Book-tcp_ip-protocol-suite-4th-ed-b-forouzan-mcgraw-hill-2010-bbs





Komentar

Postingan Populer