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
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
Posting Komentar