Professional Documents
Culture Documents
Komputer Kelompok 4
Motivasi 2
Kebutuhan (Requirement) 3
Arsitektur Jaringan 19
Layering dan Protokol 19
Arsitektur OSI 25
Arsitektur Internet 26
Jaringan-jaringan Terhubung-Langsung _ 29
Pengkodean 33
Framing 37
Protokol Berorientasi Byte 38
Protokol Berorientasi Bit 39
Framing berbasis clock 41
Deteksi Kesalahan 43
Cyclic Redundancy Check 43
Parity Dua Dimensi 46
Internet Checksum 46
Token Ring 55
Format Frame 55
MAC (Medium Access Control) 56
Topologi fisik jaringan Token Ring 59
Ethernet 69
Properti Fisik 70
Ethernet dan IEEE 802.3 71
Format frame 72
Alamat 73
Algoritma pengirim 74
Packet Switching 76
Routing 86
Jaringan Sebagai Suatu Graph 86
Distance Vector 88
Link State 92
Metric 97
Routing, Pengalamatan dan Hirarki 100
Motivasi
Salah satu faktor yang membuat perkembangan Internet begitu mengagumkan
adalah fakta bahwa sekian banyak fungsionalitas disediakan oleh perangkat lunak
yang berjalan diatas komputer general purpose. Arti penting dari hal ini adalah
bahwa fungsionalitas baru dapat ditambahkan dengan 'sedikit' memrogram.
Akibatnya, tidak terhitung lagi aplikasi baru yang bermunculan di Internet tiap
tahunnya. Penambahan fungsionalitas pada jaringan tidak hanya melalui pembangunan
aplikasi baru, namun juga mencakup fungsi-fungsi baru 'di dalam' jaringan itu
sendiri. Sebagai contoh adalah multicast routing, yang memungkinkan berlangsungnya
multiparty teleconferencing menggunakan Internet.
Faktor lain yang menjadikan jaringan komputer begitu menjanjikan adalah
pesatnya peningkatan kemampuan komputasi (computing power) dalam beberapa tahun
terakhir. Meski jaringan komputer mampu menghantarkan berbagai macam tipe data,
namun tidak akan banyak manfaatnya jika kemampuan komputer untuk mengirim
dan menerima masih terlalu lambat dibanding kecepatan transfer data dalam
jaringan. Sekarang ini hampir semua komputer mampu memainkan kembali (play back)
audio dan video dengan kecepatan dan resolusi yang baik. Mendukung hal itu,
jaringan sekarang telah mulai diupayakan untuk dapat memenuhi tuntutan aplikasi
multimedia. Upaya itu akan berhasil jika didukung dengan meningkatnya kemampuan
(kecepatan) perangkat keras.
Alasan utama dibangunnya jaringan komputer adalah agar pengguna dapat
menjalankan aplikasi diatasnya. Semua fungsi yang disediakan di suatu jaringan
berkaitan erat dengan kebutuhan aplikasi. Pembangun aplikasi memanfaatkan fungsi-
fungsi yang disediakan jaringan, sementara perancang jaringan berusaha untuk
menambah fungsionalitas jaringan untuk meningkatkan unjuk kerja dari aplikasi yang
telah ada dan memungkinkan timbulnya aplikasi baru. Berikut adalah beberapa aplikasi
umum di jaringan (terutama Internet) :
FTP (File Transfer Protocol) : aplikasi ini mungkin yang tertua di Internet dan
masih sangat berguna sampai saat ini. Sebagaimana tersirat dari namanya,
aplikasi ini memungkinkan dilakukannya transfer file antar komputer lewat jaringan.
Ada dua entitas penting dalam satu sesi FTP, yaitu : client dan server. Program
client pada komputer lokal berhubungan dengan program server di FTP server.
Client akan mengirimkan permintaan / perintah (request) yang akan dilakukan
dan dijawab oleh server (respond).
WWW (World Wide Web) : aplikasi ini begitu sukses dan sangat
memudahkan mengakses informasi lewat Internet, sampai-sampai sebagian orang
mengira bahwa Web bersinonim dengan Internet. Web dapat dibayangkan sebagai
kumpulan sejumlah client dan server yang saling bekerja sama, dimana masing-
masing 'berbicara' dengan bahasa yang sama, yaitu HTTP (HyperText Transfer
Protocol). Yang menarik berkaitan dengan WWW adalah bahwa secara prinsip, cara
kerjanya sama dengan FTP. Server diidentifikasi (pada WWW dengan URL
Uniform Resource Locator), koneksi dibangun, mesin lokal (client) mengirimkan
request, dan mesin remote (server) me-respond dengan mengirimkan file yang
diminta.
NV (Network Video) : aplikasi ini kebanyakan digunakan untuk mutiparty
teleconferencing lewat Internet. Disini tidak ada istilah client dan server, semua host
berderajat sama (masing-masing host dapat mengirim dan menerima frame-frame
video). Atribut kualitas video yang dipertukarkan antar host berpengaruh pada
kebutuhan akan bandwidth jaringan.
Kebutuhan (Requirement)
Sebelum berusaha memahami perancangan dan implementasi
jaringan komputer untuk mendukung aplikasi FTP, WWW, NV
dan lainnya, terlebih dahulu harus diidentifikasi ekspektasi terhadap jaringan.
Jawabannya tidak mungkin hanya satu, karena jaringan komputer dibangun dengan
requirement dan batasan yang sangat banyak. Sementara, requirement sendiri
tergantung dari sudut pandang terhadap jaringan sebagai berikut :
Pengguna jaringan akan memiliki daftar layanan yang dibutuhkan oleh aplikasinya.
Sebagai contoh : adanya jaminan bahwa setiap message yang dikirimkan oleh
aplikasi akan dapat diterima dengan baik (tanpa kesalahan) dalam batas waktu
tertentu.
Perancang jaringan akan memiliki daftar aspek-aspek untuk mendapatkan
rancangan yang efektif. Sebagai contoh : sumber daya jaringan digunakan secara
efisien dan dialokasikan secara adil untuk setiap pengguna jaringan.
Penyedia jaringan akan memiliki daftar karakteristik system yang memudahkan
administrasi dan pengaturannya. Sebagai contoh : kemudahan isolasi kegagalan /
kerusakan dalam jaringan, kemudahan penghitungan penggunaan jaringan untuk tiap
user.
A.Keterhubungan (connectivity)
Jaringan harus menyediakan hubungan antar komputer. Kadangkala
keterhubungan tersebut cukup disediakan dengan dibangunnya jaringan terbatas yang
menghubungkan hanya beberapa mesin saja diantara seluruh mesin yang ada. Kasus
seperti ini sering ditemui pada jaringan privat (corporate) yang secara eksplisit
membatasi hubungan mesin-mesinnya dengan alasan privasi dan keamanan. Di sisi lain,
ada jaringan yang memang dengan sengaja dirancang untuk dapat berkembang dan
memiliki potensi untuk menghubungkan seluruh komputer di dunia (Internet merupakan
contoh yang baik untuk kasus ini). Sistem seperti ini sering kali disebut sebagai sistem
yang scalable.
Ada beberapa level keterhubungan jaringan. Pada level terendah, jaringan dapat
tersusun dari dua atau lebih komputer yang saling terhubung secara langsung melalui
media fisik. Media fisik sering kali disebut sebagai link, sementara komputer (atau
perangkat khusus lain) yang dihubungkannya disebut sebagai node. Sebagaimana
terlihat pada Gambar 1.1, link fisik bisa jadi terbatas hanya menghubungkan dua node
saja (point-to-point) atau lebih dari dua node dapat menggunakan satu link fisik
secara bersama (multiple-access). Apakah suatu link mendukung hubungan point-to-
point atau multiple-access, tergantung dari bagaimana node-node terhubung ke link.
Perlu dicatat juga bahwa link yang bersifat multiple-access masing-masing juga
memiliki batasan ukuran, baik dari sisi jangkauan geografis ataupun jumlah node
yang dapat terhubung kepadanya.
Jika suatu jaringan berada pada situasi dimana seluruh node terhubung secara
langsung satu sama lain menggunakan media fisik yang sama, maka jaringan akan
sangat dibatasi oleh jumlah komputer yang dapat terhubung dan jumlah antar-muka
hubungan dari setiap node akan menjadi sangat banyak, mahal dan sulit untuk
dikelola. Hal yang sangat menguntungkan adalah fakta bahwa hubungan antara dua
node tidak mengharuskan adanya hubungan langsung secara fisik diantara mereka.
Keterhubungan secara tidak langsung juga dapat dilakukan pada sekelompok node yang
saling berinteraksi.
Pada Gambar 1.2, terlihat sekelompok node yang masing-masing terhubung ke
satu atau lebih link point-to-point. Node-node yang terhubung ke dua atau lebih link
memiliki dan menjalankan software yang akan meneruskan (forward) data yang diterima
dari satu link ke link lainnya. Jika diorganisasikan secara sistematik, maka node-node
tersebut akan membentuk switched network. Ada beberapa tipe switched network, dua
yang paling utama adalah circuit switched dan packet switched. Circuit switched biasa
digunakan pada sistem telepon, sementara packet switched digunakan oleh mayoritas
jaringan komputer. Karakteristik utama dari packet switched network adalah bahwa
node dalam jaringan tersebut saling bertukar data dalam bentuk blok- blok diskrit
(sering disebut dengan packet atau message).
a)
b) ...
Packet switched network biasanya menggunakan strategi yang dikenal dengan istilah
store-and-forward. Dengan strategi ini, tiap node terlebih dulu akan menerima blok data
secara lengkap dari suatu link, menyimpannya dalam memori internal, kemudian
meneruskannya ke node berikut (yang terhubung langsung dengannya). Sebaliknya,
circuit switched network akan membangun dedicated circuit yang melibatkan sejumlah
link, barulah kemudian node sumber mengirimkan deretan bit melalui circuit ini ke node
tujuan.
Simbol awan (cloud) pada Gambar 1.2 memisahkan antara node 'di dalam' yang
membangun jaringan (seringkali disebut dengan switch dan bertugas melakukan store
dan forward packet) dengan node 'di luar' yang menggunakan jaringan (seringkali
disebut host, berinteraksi langsung dengan pengguna dan menjalankan program
aplikasi). Secara umum, cloud juga dipakai untuk menggambarkan segala jenis jaringan,
apakah itu point-to-point, multiple-access ataupun switched network. Sehingga jika
ditemui simbol cloud, maka dapat dibayangkan sebagai suatu jaringan dengan
(sementara waktu) mengabaikan detil teknologi yang digunakan.
Cara lain untuk menghubungkan komputer secara tidak langsung terlihat pada
Gambar 1.3. Dalam situasi ini, sekumpulan jaringan independen (digambarkan
dengan cloud) dihubungkan (interkoneksi) satu sama lain untuk membangun
internetwork. Node yang terhubung ke dua atau lebih jaringan dikenal dengan sebutan
router atau gateway. Node jenis ini memiliki fungsi yang mirip dengan switch,
yakni meneruskan message dari satu jaringan ke jaringan lain. Perlu dicatat bahwa
internet sendiri dapat dipandang sebagai satu jaringan, sehingga internet dapat dibangun
dengan menginterkoneksikan beberapa internet secara rekursif. (Cloud dihubungkan
dengan cloud lain akan membentuk cloud baru yang lebih besar)
Berhasil menghubungkan beberapa node (baik secara langsung maupun tidak
langsung) belum berarti bisa menjamin keterhubungan host-to-host. Dibutuhkan sesuatu
yang memungkinkan tiap node untuk dapat mengidentifikasikan dengan jelas node lain
(mungkin lebih dari satu) dalam jaringan yang menjadi mitra
komunikasinya. Hal itu dilakukan dengan memberikan alamat kepada tiap node.
Alamat adalah deretan bit (string) yang mengidentifikasi tiap node secara unik, sehingga
jaringan dapat mengidentifikasi dan membedakan dengan pasti suatu node dari node lain
yang juga terhubung ke jaringan tersebut. Jika node sumber meminta layanan jaringan
untuk mengirimkan message ke node tujuan tertentu, node sumber harus dapat
menspesifikasikan alamat node tujuan. Jika node sumber dan tujuan tidak berada pada
jaringan yang sama (tidak terhubung secara langsung), maka switch dan router dalam
jaringan akan menggunakan alamat tersebut untuk menentukan cara terbaik
menghantarkan message ke tujuan. Proses sistematik untuk menentukan rute terbaik dari
sumber ke tujuan ini dikenal dengan istilah routing.
℘
Kita mengadopsi konvensi penyebutan internetwok secara umum dengan
internet (i kecil), sementara penyebutan Internet berbasis TCP/IP yang
beroperasi sebagai jaringan global dengan Internet (i besar)
Skema pengalamatan dan routing yang baru saja dipaparkan berasumsi bahwa
node sumber hanya ingin mengirimkan message ke satu node tujuan (unicast). Selain
itu, ada kemungkinan skenario lain, dimana node sumber ingin mengirim message ke
semua node yang terhubung ke jaringan (broadcast). Atau node sumber ingin mengirim
message hanya ke beberapa node di jaringan (multicast). Dengan demikian selain skema
pengalamatan yang unik untuk tiap node, dibutuhkan pula skema pengalamatan untuk
broadcast dan multicast.
Dengan kata lain, aliran data yang diperbolehkan mengirimkan urutan packet
melalui link fisik ditentukan packet per packet. Jika hanya satu aliran data yang
memiliki data, maka aliran tersebut berhak menggunakan link fisik sepenuhnya.
Amun jika lebih dari satu aliran data yang ingin mengirimkan data, maka packet dari
seluruh aliran data akan dikirimkan saling berseling (interleaved). Gambar 1.5
mengilustrasikan multiplexing aliran data dari beberapa host melalui satu link fisik.
Packet dari aliran data mana yang akan ditransmisikan melalui link fisik dapat
ditentukan dengan berbagai cara. Sebagai contoh, untuk jaringan seperti pada Gambar
1.4, keputusan berada ditangan switch yang mentransmisikan packet ke shared-link.
(Tidak semua packet switched network benar-benar menggunakan switch, dalam
kasus tersebut digunakan mekanisme lain untuk menentukan packet mana yang akan
ditransmisikan lewat link). Tiap switch dalam packet switched network menentukan
hal ini secara independen atas dasar packet per packet. Satu masalah bagi perancang
jaringan adalah menjamin keadilan dalam mekanisme penentuan ini. Sebagai contoh,
switch mungkin dirancang untuk melayani seluruh aliran data dengan aturan Round-
Robin, sebagaimana STDM. Namun demikian, statistical multiplexing tidak
membutuhkan pendekatan Round-Robin, pilihan lain yang dapat dianggap valid
adalah algoritma FIFO (First In First Out).
Sebagaimana terlihat pada Gambar 1.5, bisa jadi switch menerima packet lebih
cepat daripada yang dapat diakomodasi oleh link. Konsekuensinya, switch harus
menyediakan penampung sementara untuk packet yang belum terlayani. Jika kondisi ini
terus terjadi, lama kelamaan penampung sementara (buffer) pada switch akan penuh
dan packet yang datang kemudian terpaksa harus dibuang. Kondisi ini dikenal dengan
istilah congestion.
C.Fungsionalitas
Tuntutan sederhana terhadap jaringan komputer adalah jaringan dapat
menyediakan suatu layanan sehingga sekumpulan proses (aplikasi) yang terdistribusi
pada sejumlah komputer dapat saling berkomunikasi dengan baik. Ketika dua
program aplikasi ingin berkomunikasi, ada banyak hal rumit yang terjadi selain hanya
sekedar mengirimkan message dari satu host ke host yang lain. Perancang aplikasi dapat
saja menyertakan seluruh fungsi rumit tersebut pada tiap aplikasi yang akan
dibangunnya. Namun karena banyak aplikasi yang memerlukan layanan umum yang
sama, maka akan lebih masuk akal untuk mengimplementasikan layanan-layanan
tersebut sekali saja yang kemudian perancang aplikasi dapat membangun aplikasi diatas
layanan-layanan tersebut. Tantangan bagi perancang jaringan adalah mengidentifikasi
himpunan yang tepat dari layanan umum tersebut. Tujuan utamanya adalah
menyembunyikan kompleksitas jaringan dari aplikasi tanpa terlalu membatasi perancang
aplikasi.
Secara intuitif, jaringan dapat dipandang sebagai penyedia kanal lojik dimana
proses-proses (pada level aplikasi) dapat saling berkomunikasi, dengan layanan yang
disesuaikan dengan kebutuhan aplikasi. Sebagaimana simbol awan (cloud) digunakan
secara abstrak untuk mewakili keterhubungan sekumpulan komputer, maka kanal
digunakan untuk mewakili keterhubungan satu proses dengan proses lainnya. Gambar
1.6 mengilustrasikan dua buah proses pada level aplikasi yang berkomunikasi
menggunakan kanal lojik yang diimplementasikan diatas cloud (jaringan) yang
menghubungkan sekumpulan host.
Gambar 1.6. Proses saling berkomunikasi via kanal lojik
Yang menjadi masalah utama adalah menentukan layanan apa saja yang harus
disediakan oleh kanal lojik tersebut kepada program aplikasi. Sebagai contoh, apakah
aplikasi membutuhkan jaminan bahwa message yang dikirimkan melalui kanal pasti
diterima dengan baik diujung lainnya ataukah ada toleransi terhadap kesalahan /
kegagalan beberapa pengiriman message? Apakah message yang diterima di sisi
tujuan harus dalam urutan yang sama dengan saat dikirimkan ataukah tujuan tidak
mempedulikan urutan kedatangan message? Apakah jaringan harus menjamin bahwa
tidak ada pihak ketiga yang dapat menyadap data yang dikirimkan melalui suatu
kanal ataukah memang kerahasian bukan merupakan suatu hal yang diperhatikan oleh
aplikasi? Secara umum, jaringan menyediakan berbagai macam kanal, dimana
aplikasi dapat memilih sesuai dengan kebutuhannya.
Merancang kanal abstrak terdiri dari tiga fase, yaitu : mengerti kebutuhan aspek
komunikasi dari sekumpulan aplikasi yang representatif, melakukan ekstraksi kebutuhan
umum komunikasi dari kumpulan aplikasi tersebut dan yang terakhir menyusun
fungsionalitas jaringan yang dapat memenuhi kebutuhan tersebut. Sebagai ilustrasi,
diambil contoh aplikasi akses file (contoh : FTP). Meskipun ada beberapa perbedaan
dalam detil, contohnya : saat suatu file dibaca atau ditulis, bisa saja keseluruhan file
dikirimkan lewat jaringan atau bisa juga dikirimkan per blok, komponen komunikasi
dari remote file access tersusun atas sepasang proses. Satu sebagai client yang meminta
layanan akses file, dan yang kedua adalah server yang melayani dan melakukan akses ke
file.
Pada pembacaan file, client mengirimkan message kecil berisi request ke server
kemudian server akan merespon dengan message besar berisi data dalam file tersebut.
Sebaliknya pada proses penulisan ke file, client-lah yang mengirimkan message
besar berisi data yang akan dituliskan ke dalam file, sementara respon dari server
hanyalah message kecil berisi konfirmasi bahwa proses penulisan telah dilaksanakan.
Aplikasi lain yang mulai populer dan banyak digunakan adalah Digital Library.
Aplikasi ini memiliki karakteristik yang mirip dengan remote file access. Seiring dengan
perkembangan WWW, jenis data yang diakses lewat digital library juga semakin
beragam (file teks berukuran kecil, gambar digital berukuran besar dan objek-
objek multimedia lainnya), namun demikian pola komunikasinya mirip dengan FTP
yang telah dijelaskan sebelumnya : proses client mengirimkan request kemudian proses
server akan memberikan respon dengan mengirim data yang diminta.
Kelas aplikasi lain yang juga mulai populer adalah streaming video. Meskipun file
video dapat saja di-download terlebih dahulu (misalnya dengan FTP) baru kemudian
dimainkan, namun hal ini terasa kurang nyaman, mengingat seluruh data video harus
sudah di-download secara lengkap baru bisa dimainkan. Dengan teknologi
streaming, frame video yang dikirimkan oleh server melalui jaringan akan dapat
langsung ditampilkan begitu telah diterima oleh client.
Video sebenarnya bukanlah sebuah aplikasi, melainkan suatu jenis tipe data. Data
video bisa jadi merupakan bagian dari aplikasi video-on-demand atau
teleconferencing. Meskipun mirip, kedua aplikasi tersebut memiliki perbedaan yang
cukup mencolok. Pada kasus video-on-demand, tidak ada batasan waktu yang sangat
ketat. Sebagai contoh, adalah masih dalam batas toleransi jika ada selang waktu 10 detik
antara pengguna mulai menjalankan video dengan tampilnya frame pertama. Sebaliknya,
teleconferencing memiliki batasan waktu yang sangat ketat. Sebagaimana
dengan interaksi lewat telepon yang menuntut suara dari pengucap sesegera mungkin
dapat diterima oleh pendengar, maka komunikasi visul lewat teleconferencing juga
menuntut setiap frame yang dibangkitkan oleh sumber sesegera mungkin diterima dan
ditampilkan di tujuan. Penambahan delay yang terlalu besar tidak dapat ditolelir dalam
kasus ini. Komunikasi yang bersifat interaktif mengharuskan adanya aliran data video
dua arah, sementara video on-demand hanya mengalirkan data video dalam satu arah.
Dengan empat contoh aplikasi diatas sebagai contoh yang representatif, dapat
disimpulkan bahwa ada dua jenis kanal yang harus disediakan dalam jaringan, yakni :
kanal request/reply dan kanal message stream. Kanal yang pertama akan digunakan oleh
aplikasi file transfer dan digital library. Kanal ini akan menjamin bahwa setiap message
yang dikirimkan oleh sumber akan dapat diterima dengan baik oleh tujuan dan hanya
satu salinan message yang akan diterima oleh tujuan. Kanal ini juga dapat mejamin
kerahasiaan dan integritas data yang mengalir didalamnya, sehingga tidak ada pihak
lain (pihak ketiga) yang dapat menyadap atau mengubah informasi yang dipertukarkan
antara client dan server. Kanal jenis kedua akan digunakan oleh video- on-demand dan
teleconferencing, mendukung aliran data searah maupun dua arah dan mendukung
berbagai properti delay. Kanal ini mungkin tidak harus menjamin bahwa setiap message
yang dikirimkan akan dapat diterima dengan baik, karena aplikasi video tetap dapat
beroperasi dengan baik (dengan penurunan kualitas dalam batas toleransi) meskipun ada
beberapa frame yang hilang. Meski demikian, ada tuntutan bahwa urutan frame yang
diterima haruslah sama dengan urutan saat dikirimkan. Dimungkinkan juga kanal jenis
ini menjamin kerahasiaan dan integritas data video. Jika dimungkinkan adanya lebih
dari satu peserta dalam teleconferencing atau ada lebih dari satu pengguna yang ingin
menonton suatu video pada video-on-demand, maka kanal harus pula mendukung
multicast. Memiliki jenis kanal abstrak sesedikit mungkin yang dapat melayani aplikasi
sebanyak mungkin mungkin adalah impian para perancang jaringan. Namun ada bahaya
dibalik angan-angan tersebut. Seperti pepatah yang mengatakan “If you hold a hammer,
then everything looks like a nail”. Jika yang dimiliki haya kanal request/reply dan
message stream saja, maka besar kemungkinan setiap aplikasi yang membutuhkan
layanan jaringan akan dipaksa mengirimkan datanya melalui satu dari kedua jenis kanal
tersebut, meski sebetulnya kebutuhan aplikasi tidak dapat dipenuhi oleh keduanya.
Dengan demikian perancang jaringan sangat mungkin harus menemukan jenis kenal
baru atau memodifikasi jenis kanal yang sudah ada untuk dapat memenuhi kebutuhan
aplikasi. Sebagaimana terlihat dari contoh-contoh diatas, penghantaran message yang
handal merupakan salah satu fungsi penting yang bisa disediakan jaringan. Agak sulit
untuk dapat menjamin kehandalan pengiriman data tanpa terlebih dahulu mengetahui
faktor-faktor yang dapat menyebabkan kegagalan / kesalahan di dalam jaringan. Hal
pertama yang dapat dikenali dengan mudah adalah fakta bahwa jaringan tidak eksis
dalam dunia yang serba sempurna. Mesin kadang crash, fiber optic putus, interferensi
elektromagnetik menyebabkan rusaknya bit-bit data dan kadang kala software yang
mengatur perangkat juga bermasalah. Dengan demikian tuntutan utama terhadap
jaringan adalah untuk menutupi hal-hal tersebut, sehingga jaringan akan tampak
handal dari sudut pandang aplikasi.
Ada tiga kegagalan utama yang harus diperhatikan oleh perancang jaringan. Yang
pertama, saat packet ditransmisikan melalui link fisik, bit error mungkin terjadi (bit 1
berubah menjadi 0 atau sebaliknya). Kadangkala hanya satu bit yang rusak, namun yang
lebih sering terjadi adalah burst error, dimana beberapa bit yang berurutan mengalami
kerusakan. Bit error biasanya terjadi karena adanya energi eksternal (misalnya halilintar
dan surge perubahan drastis voltase listrik secara tiba- tiba) yang berinterferensi dengan
sinyal transmisi data. Bit error ini sangat jarang terjadi; probabilitas terjadinya sekitar
-6 -7
10 sampai 10 pada kabel tembaga dan sekitar
-12 -14
10 sampai 10 pada fiber optic. Ada beberapa cara untuk mendeteksi
kerusakan pada bit (dengan probabilitas tertentu). Jika telah terdeteksi posisi
kesalahannya, maka memperbaikinya adalah perkara mudah (cukup dengan mengubah
bit 1 menjadi 0 atau sebaliknya). Namun kadang kerusakan sedemikian parah sehingga
keseluruhan bit penyusun suatu packet harus dibuang, pada kasus ini sumber mungkin
harus mengirimkan ulang (retransmisi) packet tersebut.
Jenis kegagalan kedua yang mungkin muncul adalah pada level packet, yakni
hilangnya packet oleh sesuatu sebab dalam jaringan. Salah satu penyebabnya adalah
packet memuat bit error yang tidak dapat diperbaiki, dengan demikian packet
tersebut harus dibuang. Penyebab lainnya mungkin berkaitan dengan software, misalnya
pengontrol switch melakukan kesalahan (meneruskan packet melalui link yang salah
sehingga packet tidak akan pernah sampai ke tujuan). Namun penyebab yang paling
umum adalah kondisi overload (tidak ada tempat untuk menyimpan packet dalam
buffer node jaringan) sehingga packet harus dibuang. Ini sebetulnya identik dengan
kasus congestion yang telah disebutkan sebelumnya. Masalah yang cukup rumit
berkaitan dengan kehilangan packet adalah menentukan apakah packet betul-betul
hilang ataukah hanya terlambat sampai tujuan.
Jenis kegagalan yang ketiga terjadi pada level node dan link, misal : putusnya link
secara fisik atau komputer mengalami kerusakan (crash). Hal ini bisa disebabkan oleh
kesalahan software, power supply, atau kesalahan operator. Meski kegagalan jenis
ini biasanya tidak melumpuhkan seluruh jaringan dan dapat segera diatasi, namun
untuk beberapa kasus bisa memberikan dampak buruk bagi jaringan pada rentang waktu
tertentu (contoh : dalam packet switched network mungkin dilakukan pembelokan rute
dari link atau node yang rusak).
Yang perlu digarisbawahi dari penjelasan diatas adalah pendefinisian kanal
melibatkan aspek pengetahun tentang kebutuhkan aplikasi dan keterbatasan teknologi
jaringan yang digunakan. Tantangan utamanya adalah menjembatani (kadang juga harus
mengkompromikan) kesenjangan diantara keduanya.
D. Unjuk Kerja
Seperti halnya sistem komputer yang lain, jaringan komputer juga diharapkan
memiliki unjuk kerja yang tinggi, atau mungkin yang lebih penting lagi adalah tingginya
unjuk kerja per unit cost. Komputasi terdistribusi memanfaatkan jaringan untuk saling
bertukar informasi. Efektifitas komputasi seringkali sangat bergantung pada efisiensi
pengiriman informasi melalui jaringan.
a)
b)
Gambar 1.7. Lebar bit yang ditransmisikan pada link : a) 1 Mbps b) 2 Mbps
Arsitektur Jaringan
Layering dan Protokol
Jaringan komputer bukanlah sesuatu yang statis. Jaringan harus dapat dengan
mudah beradaptasi dengan perkembangan teknologi pembangunnya dan perubahan
tuntutan aplikasi. Hal ini menjadikan perancangan jaringan bukan hal yang
mudah.Untuk menghadapi kerumitan ini, para perancang jaringan telah membangun
suatu pola umum biasanya dikenal dengan istilah arsitektur jaringan yang memandu
perancangan dan implementasi jaringan.
Saat suatu sistem menjadi sedemikian kompleks, maka perancang sistem akan
menggunakan level abstraksi yang lain. Ide di balik abstraksi ini adalah untuk
mendefinisikan suatu model yang mewakili aspek-aspek penting dari sistem,
membungkus (encapsulate) model tersebut dalam suatu objek dan menyediakan antar
muka (interface) yang dapat dimanipulasi oleh komponen lain dalam sistem
sementara itu menyembunyikan detil tentang implementasi objek tersebut dari
penggunanya. Suatu tantangan yang harus dihadapi adalah menemukan abstraksi
yang dapat digunakan dalam segala macam situasi sekaligus dapat diimplementasikan
dengan efisien menjadi sebuah sistem.Hal ini sebenarnya telah dilakukan saat
diperkenalkannya ide tentang kanal yang menyembunyikan kerumitan jaringan dari
pandangan pembangun aplikasi.
Abstraksi secara alami membawa pada ide layering, terutama dalam sistem
jaringan. Ide dasarnya adalah sebagai berikut : segalanya dimulai dari layanan yang
ditawarkan oleh perangkat keras, kemudian ditambahkan layer demi layer diatasnya
dengan masing-masing menawarkan level layanan yang lebih tinggi (dan semakin
abstrak). Layanan (service) yang disediakan oleh suatu layer diimplementasikan dengan
memanfaatkan layanan dari layer dibawahnya. Dari penjelasan tentang kebutuhan
(requirement) pada bagian sebelumnya, maka jaringan dapat dibayangkan sebagai dua
layer yang diapit oleh layer aplikasi diatas dan layer perangkat keras (hardware)
dibawah, seperti terlihat pada Gambar 1.9. Layer hubungan host-ke-host yang tepat
berada diatas layer perangkat keras memberikan abstraksi yang menutupi kerumitan
topologi jaringan yang menghubungkan antar host. Layer diatasnya dibangun diatas
layanan hubungan host ke host yang telah terbentuk dan menyediakan dukungan
terhadap kanal proses-ke-proses, memberikan abstraksi yang menutupi kenyataan
yang terjadi di jaringan (contoh : kemungkinan hilangnya message).
Aplikasi
Kanal proses-ke-proses
Hubungan host-ke-host
Perangkat Keras
Aplikasi
Hubungan host-ke-host
Perangkat Keras
Tiap protokol mendefinisikan dua antar muka (interface). Yang pertama adalah
service interface ke objek lain dalam komputer yang sama yang ingin menggunakan
layanan komunikasi yang ditawarkannya. Interface ini mendefinisikan operasi-
operasi yang dapat dilakukan oleh objek lokal terhadap protokol tersebut, sebagai
contoh : protokol request/reply menyediakan operasi yang memungkinkan aplikasi
untuk dapat mengirim dan menerima message. Yang kedua, protokol mendefinisikan
peer interface ke protokol yang sama di mesin yang lain (peer). Definisi ini menentukan
cara suatu protokol pada suatu mesin berkomunikasi dengan peer-nya pada mesin yang
lain. Dengan kata lain, protokol mendefinisikan layanan komunikasi yang diberikan
kepada objek lain secara local berikut dengan sekumpulan aturan yang
mengendalikan pertukaran message dengan peer-nya untuk mengimplementasikan
layanan tersebut. Ilustrasi hal ini dapat dilihat pada Gambar 1.11.
Kecuali pada level perangkat keras, dimana entitas di suatu komputer dapat
berkomunikasi langsung dengan peer-nya lewat link fisik, komunikasi peer-to-peer
dilakukan secara tidak langsung. Tiap protokol berkomunikasi dengan peer-nya dengan
melewatkan message ke protokol (objek) di level bawahnya yang akan mengirimkan
message tersebut ke peer-nya sendiri. Hal ini terjadi secara rekursif sampai message
benar-benar dikirimkan oleh perangkat keras.
Karena pada tiap layer mungkin ada lebih dari satu protokol dengan layanan
komunikasi yang berbeda-beda, maka kumpulan protokol (protocol suite) yang
menyusun jaringan digambarkan dengan protocol graph. Node pada graph
merepresentasikan protokol, sementara garis yang menghubungkannya mewakili
hubungan ketergantungan. Contoh protocol graph untuk sistem jaringan hipotetik yang
telah dijelaskan sebelumnya terlihat pada Gambar 1.12. Protokol RRP (Request/Reply
Protocol) dan MSP (Message Stream Protocol) mengimplementasikan dua jenis
kanal proses-ke-proses yang berbeda sementara keduanya bergantung pada HHP
(Host-to-host protocol) yang menyediakan layanan hubungan host-ke-host.
Gambar 1.11 Contoh protocol graph
Dengan protocol graph pada Gambar 1.11, misalkan program pengakses file pada
host 1 ingin mengirim message ke peer-nya di host 2 menggunakan layanan komunikasi
yang disediakan oleh protokol RRP. Pada kasus ini, aplikasi akan meminta RRP untuk
mengirimkan message atas namanya. RRP kemudian akan memanfaatkan layanan
HHP untuk berkomunikasi dengan RRP di host 2. HHP inilah yang kemudian akan
benar-benar mentransmisikan message ke HHP di host 2. Setelah message diterima
oleh HHP di host 2, maka HHP akan meneruskannya ke RRP, yang kemudian akan
meneruskan pula ke aplikasi. Secara umum, aplikasi tersebut memanfaatkan layanan dari
protocol stack RRP/HHP.
Istilah protokol seringkali digunakan untuk mengacu pada dua pengertian.
Kadangkala digunakan untuk menyebut antar muka abstrak (yakni operasi-operasi yang
didefinisikan dengan service interface dan format message yang dipertukarkan antar peer),
namun kadang juga digunakan untuk menyebut modul yang secara aktual
mengimplementasikan kedua antar muka tersebut. Untuk membedakannya, digunakan
istilah protocol specification untuk menyebut definisi antar muka. Spesifikasi umumnya
diekspresikan dengan menggunakan pseudocode, state transition diagram, gambar
format packet dilengkapi dengan kalimat penjelas dan notasi abstrak lainnya. Dengan
demikian, suatu spesifikasi protokol dapat saja diimplementasikan dengan cara yang
berlainan, asal masih tetap sesuai dengan spesifikasinya. Tantangan yang timbul disini
adalah menjamin bahwa implementasi yang berbeda dari satu spesifikasi protokol yang
sama harus dapat saling berkomunikasi (terjaminnya interoperatibility).
Badan standarisasi internasional, seperti IETF (Internet Engineering Task
Force) dan ISO (International Standard Organization) telah menyusun kebijakan dalam
penyusunan protocol graph untuk mengeliminasi kemungkinan tiap jaringan memiliki
protocol graph-nya sendiri. Kumpulan aturan tentang format dan isi dari protocol graph
disebut sebagai arsitektur jaringan (network architecture). Badan standarisasi tersebut
telah menyusun suatu prosedur untuk membangun, melakukan validasi dan menyetujui
penggunaan protokol pada arsitekturnya masing-masing.
Sebelum melanjutkan pada arsitektur yang didefinisikan oleh ISO dan IETF, ada
dua hal penting yang perlu dipaparkan berkaitan dengan mekanisme protocol graph,
yakni:
A.Pembungkusan (encapsulation)
Pada Gambar 1.11, saat aplikasi mengirimkan message ke aplikasi peer-nya lewat
RRP, maka dari sudut pandang RRP, message tersebut tidak lebih hanyalah serangkaian
byte yang tidak dimengerti artinya. RRP tidak peduli terhadap arti dari rangkaian byte
tersebut (apakah merepresentasikan array dari bilangan integer, pesan e-mail, gambar
digital atau apapun), fokusnya hanyalah pada mengirimkannya ke peer RRP di ujung
jaringan yang lain. Untuk dapat melakukan hal tersebut, RRP harus dapat
mengkomunikasikan informasi control (berisi instruksi tentang pengelolaan message saat
diterima) dengan peer-nya. RRP melakukan hal ini dengan menambahkan header pada
message. Header adalah struktur data kecil –berkisar antara beberapa byte sampai
beberapa puluh byte) yang digunakan oleh peer protocol untuk saling berkomunikasi.
Dari namanya terlihat bahwa header ditempatkan didepan message. Pada beberapa
kasus, informasi tambahan ini ditambahkan diakhir message, yang dikenal dengan istilah
trailer. Format header yang ditambahkan oleh RRP didefinisikan dalam spesifikasi
protokolnya. Setelah message ditambahi dengan header, dikatakan bahwa message
tersebut telah dienkapsulasi dalam message baru yang dibuat oleh RRP.
Proses enkapsulasi ini berulang pada tiap level dari protocol graph. Pada
contoh diatas, HHP akan mengenkapsulasi message yang diterima dari RRP dengan
menambahkan header-nya sendiri. Jika kemudian HHP mengirimkan message
tersebut lewat jaringan, maka saat message tiba di tujuan, proses yang terjadi merupakan
kebalikan dari proses di pengirim. HHP pertama kali akan memisahkan header-nya,
melakukan interpretasi (melakukan aksi yang sesuai dengan isi dari header) kemudian
meneruskan body dari mesage ke RRP. RRP pun akan melakukan hal yang serupa, sampai
akhirnya aplikasi di host 2 menerima message yang sama persis dengan yang dikirimkan
oleh aplikasi di host 1. Proses ini diilustrasikan pada Gambar 1.12. Perlu dicatat bahwa
node dalam jaringan (misal : switch atau router) bisa juga 'melihat' header HHP.
Meskipun protokol pada suatu level tidak melakukan interpretasi terhadap isi message dari
level atasnya, namun ada kemungkinan protokol tersebut melakukan transformasi terhadap
message, misalnya kompresi atau enkripsi. Dalam kasus ini, protokol akan melakukan
transformasi terhadap seluruh byte pada message, termasuk data dari aplikasi dan
semua header (dan trailer) yang ditambahkan oleh protokol-protokol diatasnya.
Arsitektur OSI
ISO adalah organisasi pertama yang secara formal mendefinisikan cara umum untuk
menghubungkan komputer (membentuk jaringan). Arsitekturnya yang dikenal dengan
nama OSI (Open System Interconnection) mendefinisikan pemilahan fungsionalitas
jaringan kedalam tujuh layer (terlihat pada Gambar 1.13). Skema yang terlihat bukanlah
protocol graph, namun adalah model referensi untuk protocol graph. ISO (biasanya)
bekerja sama dengan badan standarisasi yang lain, yakni ITU (International
Telecommunication Union) mempublikasikan beberapa seri spesifikasi protokol berdasar
arsitektur OSI. Seri ini sering kali dikenal dengan sebutan “X dot” karena protokol-
protokolnya diberi nama dengan diawali “X.”, contohnya : X.25, X400, X.500 dll. Pada
kenyataannya ada beberapa jaringan yang berbasis pada standar tersebut, contoh :
jaringan publik X.25 dan jaringan privat Tymnet.
Physical layer menangani transmisi bit melalui link fisik. Data Link layer
mengelompokkan bit-bit menjadi unit yang lebih besar, disebut frame. Network adaptor
biasanya mengimplementasikan level data link ini, yang berarti bahwa sesungguhnya
frame-lah (bukan rentetan bit) yang dipertukarkan antar host. Network layermenangani
routing diantara node dalam jaringan packet-switched. Pada layer ini, unit data yang
saling dipertukarkan dikenal dengan istilah packet. Tiga layer terbawah ini
diimplementasikan pada seluruh node pada jaringan (baik yang berada'di dalam' maupun
'di luar' jaringan). Transport layer kemudian mengimplementasikan apa yang selama ini
dikenal dengan istilah kanal proseske proses. Disini, unit data yang dipertukarkan
lebih sering disebut dengan istilah message.
Gambar 1.13. Arsitektur jaringan OSI
Empat layer teratas biasanya hanya terdapat pada host dan tidak pernah muncul
pada intermediate nodes. Layer aplikasi meliputi protokol-protokol yang akan langsung
berhubungan dengan aplikasi dari pengguna, seperti FTP, HTTP dan lain sebagainya.
Presentation layer berhubungan dengan format data yang akan dipertukarkan antara
peer (misalnya : apakah data bertipe integer menggunakan 16, 32 atau 64 bit; apakah
most significant bit ditransmisikan pertama kali atau terakhir dll). Session layer
menyediakan fungsi untuk mengelola gabungan beberapa transport stream yang
berasal dari satu aplikasi. Sebagai contoh : pengelolaan stream audio dan stream video
yang berasal dari aplikasi teleconference.
Arsitektur Internet
Arsitektur Internet, atau yang sering disebut sebagai arsitektur TCP/IP karena dua
protokol utamanya itu, terlihat pada Gambar 1.14. Representasi alternatif terlihat pada
Gambar 1.15. Arsitektur Internet berkembang dari pengalaman dengan jaringan packet-
switched yang disebut ARPANET. Internet dan ARPANET didanai oleh ARPA
(Advanced Research Project Agency) yang merupakan salah satu badan penyandang
dana untuk riset dan pengembangan pada DoD (Departement of Defense) Amerika
Serikat. Internet dan ARPANET telah ada sebelum disusunnya arsitektur OSI, dan
pengalaman pembangunan keduanya memberikan sumbangan yang besar terhadap
model referensi OSI.
Gambar 1.14. Internet protocol graph
Application
TCP UDP IP
Network
J
2 Terhubung Langsung
aringan terhubung-langsung (directly connected) yang dimaksud adalah
jaringan komputer dimana seluruh host terhubung langsung melalui media fisik.
Media bisa berupa kabel tembaga, fiber optik, gelombang elektromagnetik dan lain-
lain. Cakupan areanya bisa jadi hanya kecil (misal : satu gedung perkantoran) atau
mungkin juga mencakup daerah yang luas (missal : transcontinental).
Menghubungkan dua atau lebih node dengan media yang sesuai barulah langkah
pertama. Setidaknya ada lima persoalan lagi yang harus diatasi sebelum node-node
tersebut dapat saling bertukar data.
Masalah pertama adalah pengkodean (encoding) bit-bit ke dalam media fisik
jaringan sedemikian sehingga akan dapat dimengerti oleh host penerima. Kedua,
berkaitan dengan pembatasan (delineating) urutan bit yang ditransmisikan melalui
link hingga jelas batas-batas dari tiap message. Persoalan ini seringkali disebut
dengan masalah framing, sementara unit data yang telah jelas batas-batasnya dikenal
dengan istilah frame. Persoalan ketiga, karena ada kemungkinan frame mengalami
kerusakan selama proses transmisi, maka dibutuhkan suatu cara untuk dapat mendeteksi
ada tidaknya error dan kemudian melakukan aksi yang sesuai masalah error detection.
Isu keempat adalah menjadikan link tampak handal (dari sisi pengguna jaringan), meski
pada kenyataannya ada kemungkinan terjadi error di dalamnya. Masalah kelima, pada
kasus jaringan dimana link digunakan secara bersama (shared) oleh sejumlah host –
kebalikan dari point-to-point– perlu dilakukan pengaturan akses ke link (masalah
medium access control).
Meskipun kelima isu tersebut –encoding, framing, eror detection, reliable delivery
dan access mediation dapat dipaparkan secara abstrak, ada masalah- masalah nyata
yang ditangani secara berbeda dengan teknologi jaringan yang berbeda pula. Bab ini
berkonsentrasi pada isu-isu diatas pada konteks tiga teknologi jaringan yang spesifik,
yaitu : point-to-point, CSMA (Carrier Sense Multiple Access, dengan Ethernet sebagai
teknologi yang paling populer) dan Token Ring (dengan mengambil contoh FDDI –
Fiber Distributed Data Interface–).
Komponen Perangkat Keras
Sebagaimana telah dipaparkan pada Bab sebelumnya, jaringan dibangun dari
dua kelas komponen perangkat keras, yakni : node dan link. Pernyataan tersebut tidak
hanya berlaku untuk jaringan sederhana saja, namun juga untuk jaringan yang kompleks
(seperti Internet).
Node
Node seringkali berupa komputer general-purpose (seperti halnya PC). Jika
diasumsikan bahwa node merupakan mesin sekelas workstation, workstation ini dapat
berfungsi sebagai host tempat user menjalankan program aplikasinya atau dapat
digunakan ‘di dalam’ jaringan yang berfungsi sebagai switch yang meneruskan message
dari satu link ke link yang lain bahkan dapat pula dikonfigurasi untuk dapat berfungsi
sebagai router penghubung satu jaringan dengan jaringan lain dalam suatu internetwork.
Namun kasus seperti ini jarang terjadi. Node-node di dalam jaringan (switch atau
router) biasanya diimplementasikan dengan perangkat keras special- purpose. Hal ini
dilakukan dengan alasan unjuk kerja : perangkat yang dirancang- bangun secara khusus
akan dapat beroperasi lebih cepat dibanding perangkat general- purpose. Namun untuk
tujuan pembelajaran, terlebih dahulu akan dideskripsikan fungsi-fungsi dasar yang
dilakukan oleh node seperti halnya jika fungsi-fungsi tersebut diimplementasikan
dengan software pada general purpose workstation, kemudian baru dijelaskan
mengapa dan bagaimana implementasinya dengan perangkat khusus.
CPU
Cache
Network
Adapter (Network)
Memory
I/O Bus
Gambar 2.1 memberikan gambaran sederhana tentang isi dari sebuah workstation.
Ada tiga hal yang perlu diperhatikan berkaitan dengan diagram blok tersebut :
1. Ukuran memori yang dimiliki oleh mesin bersifat terbatas. Keterbatasannya
dijaringan (aspek lain yang juga terbatas adalah bandwidth) menjadikannya harus
dikelola dengan baik agar dapat menyediakan layanan yang adil
kepada seluruh pengguna jaringan. Ketersediaan kapasitas memori menjadi
sedemikian penting karena node yang bertindak sebagai switch atau router harus
terlebih dahulu menyimpan paket-paket data dalam buffer untuk menunggu giliran
ditransmisikan melalui outgoing link.
2. Setiap node terhubung ke jaringan melalui network adaptor. Komponen ini
terhubung ke I/O bus dan menjadi perantara pengiriman data antara memory
dengan link jaringan. Diperlukan adanya software khusus (dikenal dengan nama
device driver) pada workstation untuk mengatur komponen ini. Contoh
pengaturan yang diberikan adalah memberikan informasi tentang lokasi memory
tempat data yang akan ditransmisikan atau tempat menyimpan data yang baru saja
diterima.
3. Perkembangan kecepatan CPU tidak seimbang dengan perkembangan kecepatan
memory. Secara umum, kecepatan prosesor akan menjadi dua kali lipat dalam
waktu 18 bulan, sementara kecepatan memory hanya bertambah 7% tiap tahun.
Relevansi dari kenyataan ini adalah bahwa pada node jaringan, kecepatan operasi
workstation akan lebih tergantung pada kecepatan memory, bukan pada kecepatan
prosesor. Dengan demikian software jaringan harus lebih berhati-hati dalam
penggunaan memory (misalnya : berapa kali akses memory harus dilakukan untuk
memroses tiap message).
Link
Link di jaringan diimplementasikan dengan media fisik yang beragam (twisted
pair, coaxial cable, optical fiber dll). Apapun media fisik yang digunakan, tugas
utamanya adalah menghantarkan sinyal. Sinyal yang tersusun dari nilai-nilai diskrit,
misalnya pulsa listrik (voltase) positif atau negatif, disebut sinyal digital. Link yang
digunakan untuk menghantarkan sinyal digital juga disebut dengan link digital. Jenis
link yang lain menghantarkan sinyal elektromagnetik kontinyu dalam cakupan
tertentu, misalnya line telepon dapat menghantarkan sinyal dengan rentang frekwensi
300 Hz hingga 3300 Hz. Link semacam ini disebut link analog.
Link digital dan analog merupakan komponen dasar untuk dapat
mentransmisikan segala jenis informasi, termasuk juga yang menjadi fokus dalam
komunikasi data, yakni pengiriman data biner (0 dan 1). Data biner tersebut akan
dikodekan dalam bentuk sinyal. Modem (modulator/demodulator) adalah perangkat
yang digunakan untk mengkodekan data biner menjadi bentuk sinyal analog pada sisi
pengirim, dan akan mengubah sinyal analog menjadi data biner kembali pada sisi
penerima. Digital transmitter adalah perangkat jaringan yang digunakan untuk
mentransmisikan data biner (digital) melalui link digital.
Atribut lain dari link adalah berapa banyak aliran bit (bit stream) yang dapat
dikodekan ke dalamnya pada suatu saat. Jika hanya satu aliran bit yang bisa, maka node-
node yang terhubung padanya harus dapat menggunakan link tersebut secara
bersama (access sharing). Untuk link point-to-point seringkali harus ada dua aliran
bit yang dapat ditransmisikan pada saat yang bersamaan, keduanya mengalir dengan
arah yang berlawanan. Link semacam ini disebut full-duplex. Sementara link point-to-
point yang hanya dapat menghantarkan satu arah aliran bit tiap saat, disebut half-
duplex, mengharuskan dua node yang terhubung dengan link tersebut menggunakan link
secara bergantian. Untuk bahasan-bahasan selanjutnya diasumsikan link yang digunakan
selalu bersifat full-duplex.
Properti lain dari link adalah batasan jarak yang dapat dihubungkan oleh tiap jenis
link. Pada satu sisi, jika node-node yang akan dihubungkan berada pada lingkup
geografis yang kecil (satu ruangan, satu gedung atau satu kampus), maka link dapat
dibangun sendiri. Jenis media yang digunakan sangat tergantung pada teknologi yang
akan digunakan untuk mentransmisikan data melalui link tersebut. Beberapa contoh
media yang umum digunakan tertera pada Tabel 2.1.
Di sisi lain, jika node-node yang akan dihubungkan secara geografis terpisah jauh,
maka sangat tidak praktis jika link yang menghubungkannya dibangun sendiri. Pilihan
yang optimal adalah dengan menyewa link dari perusahaan penyedia jaringan (misal :
perusahaan telepon). Tabel 2.2 memberikan daftar layanan yang umumnya disediakan
oleh perusahaan penyedia jaringan.
Layanan Bandwidth
ISDN 64 Kbps
T1 1,544 Mbps
T3 44,763 Mbps
STS-1 51,840 Mbps
STS-3 155,251 Mbps
STS-12 622,080 Mbps
STS-24 1,244160 Gbps
STS-48 2,488320 Gbps
Bandwidth pada layanan-layanan pada Tabel 2.2 terlihat sedikit ganjil. Sebenarnya
ada penjelasan yang logis untuk masing-masing angka tersebut. Link ISDN (Integrated
Services Digital Network) memiliki kapasitas 64 Kbps karena tujuan ISDN adalah
menghantarkan voice dan data, sementara untuk mengirimkan voice bandwidth yang
lazim digunakan adalah 64 Kbps. (Perangkat yang mengkodekan sinyal suara analog
ke dalam link digital ISDN disebut CODEC coder/decoder). T1 dan T3 sebenarnya
merupakan teknologi lama yang didefinisikan dari media transmisi berbasis tembaga.
T1 sama dengan agregasi dari 24 sirkuit suara digital, sementara T3 setara dengan
gabungan 30 buah link T1. Link STS-N digunakan pada optical fiber (STS =
Synchronous Transport Signal). STS-1 merupakan kecepatan dasar, tiap STS-N
memiliki kecepatan N kali STS-1. STS-N seringkali juga disebut OC-N (Optical
Carrier-N). Perbedaan antara STS dengan OC emmang tidak terlalu jelas : STS
mengacu pada transmisi elektrik pada perangkat yang terhubung ke link, sementara
OC mengacu pada sinyal optik yang mengalir di dalam fiber.
Semua link diatas merupakan link digital. Kecuali ISDN, semua dapat disewa
sebagai dedicated link (tiap kali dibutuhkan, link akan selalu tersedia, tanpa perlu
melakukan dial-up terlebih dahulu). Alternatif lain yang bisa ditempuh adalah dengan
menggunakan modem untuk mentransmisikan data biner melalui link telepon analog.
Yang perlu diingat adalah bahwa perusahaan telepon tidak mengimplementasikan
link yang diminta oleh penggunanya sebagai satu jalur media (yang tidak terputus). Link
dibangun dengan memanfaatkan jaringan telepon yang telah ada.
Dalam banyak kasus, masalah yang dihadapi dalam pembangunan jaringan
komputer adalah sama meskipun link-link yang digunakan merupakan link fisik yang
dibangun sendiri atau merupakan koneksi lojik diatas jaringan telepon. Bahasan-
bahasan berikut akan berasumsi bahwa tiap link diimplementasikan dengan satu jalur
media. Hal ini akan ditinjau kembali saat harus diputuskan apakah jaringan komputer
yang dibangun berada diatas jaringan telepon ataukah justru jaringan yang akan
dibangun itu juga akan digunakan sebagai backbone jaringan telepon.
Pengkodean
Langkah pertama untuk dapat mendayagunakan node dan link menjadi komponen
pembangun jaringan adalah dengan mengetahui cara menghubungkannya sedemikian
hingga bit-bit dapat ditransmisikan dari satu node ke node yang lain. Sebagaimana telah
dijelaskan pada bagian terdahulu bahwa sinyal merambat melalui media fisik. Yang
perlu diperhatikan berikutnya adalah cara mengkodekan data biner yang akan
dikirimkan oleh node sumber menjadi sinyal yang dapat dihantarkan oleh link, dan
kemudian dapat di-decode kembali menjadi data biner kembali pada node tujuan.
Masalah ini akan dipandang dalam konteks link digital, dimana yang dikenal hanyalah
dua jenis sinyal diskrit, yakni high-signal dan low-signal (meskipun pada kenyataannya
bisa diterjemahkan sebagai dua level tegangan yang berbeda pada link berbasis tembaga
atau dua intensitas energi yang berbeda pada link berbasis optik).
Komponen pensinyalan (yang melakukan pengkodean bit menjadi sinyal dan
sebaliknya) terdapat pada network adaptor. Sebagaimana terlihat pada Gambar 2.2,
sinyal merambat pada link antar komponen pensinyalan, sementara bit mengalir antar
network adaptor.
Signalling component
Node Node
Signal
Adaptor Adaptor
Bits
Cara yang paling sederhana untuk mengkodekan bit ke dalam sinyal adalah
dengan memetakan bit 1 dengan high-signal sementara bit 0 dengan low-signal. Cara
inilah yang digunakan dalam skema pengkodean NRZ (Non-Return to Zero). Contoh
pengkodean dengan NRZ terlihat pada Gambar 2.3.
Bits 0 0 1 0 1 1 1 1 0 1 0 0 0 0 1 0
NRZ
Dengan penggunaan skema NRZ, jika ada sejumlah bit 1 yang muncul secara
berurutan, maka sinyal akan tetap berada pada posisi high selama selang waktu tertentu.
Demikian juga jika muncul sejumlah bit 0 secara berurutan, maka sinyal akan tetap
pada posisi low selama selang waktu tertentu. Hal ini berakibat pada timbulnya beberapa
masalah, diantaranya :
Sinyal low yang terjadi terus-menerus dapat diartikan juga sebagai tidak adanya
sinyal. Dengan demikian, node penerima tidak dapat membedakan antara urutan bit
0 yang panjang dengan putusnya link.
Bits 0 0 1 0 1 1 1 1 0 1 0 0 0 0 1 0
NRZ
Clock
Manchester
NRZI
Skema pengkodean yang lain adalah 4B/5B. Skema ini mencoba mengatasi
kelemahan Manchester yang berkaitan dengan efisiensi. Ide 4B/5B adalah dengan
menyisipkan bit tambahan kedalam bit stream sehingga dapat ‘memecah’ urutan bit 0
atau bit 1 yang panjang. Setiap 4 bit data yang akan ditransmisikan, diubah terlebih
dahulu ke dalam kode 5 bit (dari sinilah asal mula nama 4B/5B). Kode-kode 5 bit ini
dipilih sedemikian hingga tidak ada lebih dari satu bit 0 yang mengawali dan tidak
ada lebih dari 2 bit 0 yang mengakhiri tiap kode. Dengan demikian, jika kode-kode
tersebut dikirimkan secara berurutan, tidak akan muncul lebih dari 3 buah bit 0 secara
berurutan. Kode 5 bit ini ditransmisikan dengan skema pengkodean NRZI (4B/5B
memfokuskan diri pada urutan bit 0 karena NRZI telah menyelesaikan masalah
urutan bit 1). Skema pengkodean ini memiliki efisiensi 80%.
Tabel 2.3 menunjukkan korespondensi antara data 4-bit dengan kode 5-bit. Karena
kode yang digunakan sepanjang 5 bit, sebetulnya cukup untuk membuat 32 buah kode
unik. 16 kode diantaranya digunakan untuk data, sementara sisanya digunakan untuk
keperluan lain, contoh : 11111 digunakan untuk menandai link dalam kondisi idle,
00000 berarti link putus dll.
0101 01011
0110 01110
0111 01111
1000 10010
1001 10011
1010 10110
1011 10111
1100 11010
1101 11011
1110 11100
1111 11101
Framing
Pada Bab 1 telah disebutkan bahwa fokus bahasan ini adalah pada jaringan packet
switched, yang berarti blok-blok data (pada level ini disebut frame) bukan bit stream
akan dipertukarkan antar node. Pada Gambar 2.5, saat node A ingin mengirim
frame ke node B, maka node A akan memerintahkan adaptor untuk metransmisikan
frame yang telah tersimpan dalam memori pada lokasi tertentu. Urutan bit
kemudian akan terkirim melalui link. Adaptor pada node B kemudian menerima urutan
bit tersebut kemudian menyimpan frame tersebut dalam lokasi tertentu di memory node
B. Masalah yang dihadapi adaptor adalah menentukan awal dan akhir suatu frame.
Node A Node B
Bits
Adaptor Adaptor
Frames
Ada beberapa cara untuk menyelesaikan masalah framing ini. Berikut akan
dibahas beberapa pendekatan penyelesaian masalah framing. Sebagai catatan, meski
konteks bahasannya pada link point-to-point, namun hal ini juga berlaku untuk jaringan
multiple access seperti CSMA dan token ring.
Protokol Berorientasi Byte
Boleh dibilang metode ini adalah pendekatan tertua untuk mengatasi masalah
framing –berawal dari masalah serupa yang muncul pada koneksi terminal dengan
mainframe–. Di sini tiap frame dipandang sebagai kumpulan byte (karakter) bukan
sebagai deretan bit. Contoh protokolnya: BISYNC (Binary Synchronous
Communication) yang dibangun oleh IBM pada akhir ’60-an, DDCMP (Digital Data
Communication Message Protocol) yang digunakan pada DECNET, dan IMP-IMP yang
digunakan pada vesi asli dari ARPANET (IMP sendiri merupakan singkatan dari
Interface Message Processor, yakni istilah untuk node packet-switching di dalam
ARPANET). Meski ketiga protocol tersebut mirip satu sama lain, namun dapat
diklasifikasikan berdasarkan teknik framing yang digunakan yakni pendekatan
sentinel dan pendekatan penghitungan byte (byte-counting), sebagai berikut :
Pendekatan sentinel
Protokol BISYNC dan IMP-IMP menggunakan pendekatan sentinel untuk
menentukan batas tiap frame. Format frame untuk keduanya terlihat pada Gambar 2.6.
Frame dipandang sebagai urutan tertentu dari field-field. Angka diatas tiap field
menunjukkan panjang dari field yang bersangkutan dalam satuan bit. Frame akan
ditransmisikan mulai dari field paling kiri.
a) 8 8 8 8 8 16
SOH
SYN
SYN
STX
ETX
Header Bod CRC
y
b) 8 8 8 8 128 8 8 16
DLE
ETX
SYN
SYN
DLE
STX
Awal tiap frame pada kedua protokol tersebut selalu ditandai dengan karakter
khusus SYN (synchronization). Bagian data diapit oleh karakter sentinel
khusus. BISYNC menggunakan STX (Start-of-Text) dan ETX (End-of-Text), sementara
IMP-IMP menggunakan DLE/STX dan DLE/ETX (DLE merupakan singkatan dari
Data-Link-Escape). Field SOH (Start-of-Header) berfungsi serupa dengan STX.
Masalah yang muncul pada pendekatan ini adalah bahwa karakter ETX mungkin
muncul pada bagian data. BISYNC mengatasi masalah ini dengan menyisipkan karakter
DLE (escaped) mendahului karakter ETX yang muncul dalam data, demikian pula
kemunculan DLE dalam data akan didahului dengan DLE pula. Karena protokol IMP-
IMP telah menyisipkan DLE sebelum STX dan ETX, maka DLE hanya akan disisipkan
untuk mendahului karakter DLE dalam data.
Kedua format frame diatas memuat field yang sama bernama CRC (Cyclic
Redundancy Check). Field ini digunakan untuk mendukung deteksi adanya kesalahan
dalam proses transmisi. Kedua format frame tersebut juga menyediakan
kemungkinan adanya tambahan informasi header (salah satu penggunaannya adalah
untuk mendukung kehandalan pengiriman pada level link)
Pendekatan penghitungan byte
Alternatif lain untuk menentukan awal dan akhir suatu frame adalah dengan
menyertakan informasi ukuran frame (dalam satuan byte) di dalam header. Protokol
DDCMP menggunakan pendekatan ini. Format framenya terlihat pada Gambar
2.7. Pada contohini, field COUNT
menspesifikasikan berapa banyak byte yang ada dalam field BODY.
8 8 8 14 42 16
SYN
SYN
Class
Pendekatan ini memiliki potensi bahaya, yakni jika field COUNT mengalami
kerusakan dalam proses transmisi, sehingga akhir dari frame tidak dapat ditentukan
dengan pasti (hal ini sebenarnya juga terjadi pada pendekatan sentinel --jika karakter
ETX mengalami kerusakan--). Jika ini terjadi, maka node penerima tetap akan membaca
sebanyak yang jumlah yang ditunjukkan dalam field COUNT kemudian melakukan
kalkulasi CRC untuk mendeteksi ada tidaknya kesalahan selama transmisi. Jika hasil
kalkulasi CRC tidak sesuai dengan isi field CRC pada frame, disimpulkan bahwa frame
telah mengalami kerusakan (disebut dengan frame error). Node penerima kemudian
akan menunggu karakter SYN berikutnya yang menandai awal frame baru.
8 16 16 8
Beginning Ending
Sequence Header Bod CR
Sequence
y C
Gambar 2.8. Format frame HDLC
HDLC menandai awal dan akhir tiap frame dengan urutan bit khusus, yakni
01111110. Urutan bit ini juga dikirimkan saat link dalam kondisi idle, sehingga node
sumber dan tujuan tetap dapat melakukan sinkronisasi clock. Jika dilihat dari
metodenya, sebenarnya protokol ini menggunakan pendekatan sentinel juga. Karena
urutan bit khusus tersebut juga mungkin muncul pada bagian data (BODY), maka
digunakan teknik yang disebut dengan bit stuffing.
Bit stuffing dilakukan dengan cara sebagai berikut : tiap kali dalam pengiriman
data (BODY) ada lima buah bit 1 yang dikirim secara berurutan, maka node sumber
akan menyisipkan satu buah bit 0 sebelum mengirimkan bit berikutnya. Jika node tujuan
menerima lima buah bit 1 secara berurutan, maka aksi yang dilakukan tergantung dari
bit yang diterima berikutnya. Jika yang diterima adalah bit 0 maka dipastikan bahwa
telah terjadi bit stuffing, kemudian bit 0 tersebut akan dibuang, namn jika yang
diterima ternyata adalah bit 1 maka ada dua kemungkinan kondisi : tanda akhir frame
atau telah terjadi kesalahan. Untuk mendapat kepastian, harus dilihat kembali bit
yang diterima berikutnya. Jika yang diterima ternyata bit 0 (sehingga urutan bit menjadi
01111110) maka dipastikan sebagai tanda akhir dari frame, namun jika yang diterima
ternyata adalah bit 1 (sehingga urutan bit menjadi 01111111) dipastikan telah terjadi
kesalahan dalam pengiriman dan keseluruhan bit dalam frame tersebut akan dibuang.
Pada kasus terakhir ini, node tujuan harus menunggu tanda 01111110 berikutnya
sebelum mulai menerima bit. Selain itu, ada juga kemungkinan justru tanda akhir frame
tersebut muncul karena adanya kesalahan dalam pengiriman.
Karakteristik yang menarik dari bit stuffing (juga berlaku untuk escaping pola
sentinel) adalah bahwa ukuran frame tergantung dari data yang dikirimkan. Pada
kenyataannya, tidak mungkin membuat semua frame memiliki ukuran yang seragam,
mengingat data yang dikirimkan juga bisa sangat bervariasi.
PPP (Point-to-Point Protocol) sangat mirip dengan protokol HDLC ini.
Overhead Payload
9 baris
90 kolom
Karena SONET tidak menggunakan bit stuffing, maka dalam payload mungkin
muncul pola yang serupa tanda awal frame. Untuk mengatasi masalah ini, node
tujuan akan mencari pola khusus tersebut secara konsisten setiap 810 byte (tiap frame
berukuran 9 x 90 byte = 810 byte). Jika pola khusus tersebut selalu ditemukan setiap
810 byte maka node tujuan yakin bahwa ia sinkron dengan node sumber dan frame
dapat diinterpretasikan dengan benar.
Kegunaan lain dari bagian overhead tidak akan dijelaskan, karena sejauh ini
diasumsikan bahwa jaringan telah digelar oleh perusahaan penyedia layanan jaringan
(perusahaan telepon) dan link-link tersebut dapat disewa untuk membangun jaringan
packet switched diatasnya. SONET sebenarnya tidak hanya menawarkan layanan
transfer data. Sebagai contoh : ada 64 Kbps dari kapasitas link SONET yang
disisihkan dan digunakan untuk kanal voice (biasanya digunakan untuk maintenance).
Byte-byte overhead dikodekan dengan NRZ. Namun untuk menjamin adanya
cukup banyak transisi sinyal untuk clock recovery, maka byte-byte payload diacak
(scrambled). Pengacakan dilakukan dengan cara melakukan operasi XOR antara data
yang akan dikirimkan dengan pola tertentu. Pola tersebut sepanjang 127 bit dengan
banyak transisi antara 0 dan 1, dengan demikian menjamin bahwa isi payload akan
memiliki banyak transisi pula.
SONET mendukung multiplexing dari beberapa link kecepatan rendah menjadi
satu link kecepatan tinggi. Link SONET terbatas hanya pada beberapa kecepatan saja,
mulai dari 51,84 Mbps untuk STS-1 hingga 2488,32 Mbps untuk STS-48 (seperti
tercantum pada Tabel 2.2). STS-N memiliki kecepatan N kali STS-1. Dari sudut
pandang framing, hal ini berarti link yang lebih cepat akan dapat terdiri dari beberapa
subframe yang berasal dari link dengan kecepatan lebih rendah. Properti kedua yang
juga menarik adalah bahwa setiap frame selalu memiliki panjang 125 µdetik. Ini
berarti dengan kecepatan STS-1, frame SONET berukuran 810 byte, sementara
dengan STS-3, SONET akan memiliki frame yang berukuran 3 x 810 byte = 2430 byte.
Ini berarti tiga frame STS-1 akan dapat tepat dimuat oleh satu frame STS-3, seperti
terlihat dalam Gambar 2.10.
Hdr
Hdr
Hdr
STS-1 STS- STS-1
1
Header STS-3
Gambar 2.10. Multiplexing 3 frame STS-1 dalam 1 frame STS-3
Secara intuitif, frame STS-N dapat dibayangkan memuat N buah frame STS-1,
dimana dilakukan interleaving (pengiriman berselang-seling) terhadap byte-byte dari
tiap frame STS-1 (byte dari frame pertama ditransmisikan disusul byte dari frame kedua,
ketiga dan seterusnya). Alasan penggunaan metode interleaving adalah agar untuk
menjamin agar byte-byte dari frame STS-1 memiliki kecepatan yang sama dan tiap byte
diterima dengan kecepatan 51,84 Mbps. Sebaliknya jika tidak digunakan metode
interleaving, maka byte-byte dari satu frame STS-1 akan dikirimkan secara berurutan
pada rentang 1/N dari rentang 125 µdetik.
Deteksi Kesalahan
Sebagaimana dibahas pada Bab 1, kesalahan (error) pada level bit mungkin terjadi
pada suatu frame. Ini terjadi mungkin karena interferensi elektrik atau thermal noise.
Meskipun kesalahan semacam itu jarang terjadi (apalagi pada link optik), tetap
dibutuhkan suatu mekanisme untuk mendeteksi keberadaan kesalahan tersebut untuk
dapat melakukan koreksi terhadapnya.
Sejarah yang berkaitan dengan teknik-teknik pendeteksian kesalahan dalam sistem
komputer ini telah dimulai dengan kode Hamming dan Reed/Solomon yang digunakan
pada penyimpanan data pada disk magnetik dan core memory. Di dunia jaringan,
metode yang populer untuk mendeteksi kesalahan transmisi adalah CRC. Teknik ini
digunakan pada hampir semua protokol pada level link yang telah dibahas sebelumnya
(IMP-IMP, HDLC, DDCMP), bahkan sampai CSMA dan token ring yang akan
dibahas nanti. Dua pendekatan lain yang dapat juga digunakan adalah paritas dua
dimensi (digunakan oleh BISYNC saat mentransmisikan karakter ASCII) dan checksum
(digunakan oleh banyak protokol Internet).
1 1 1 1 1 0 0 1
C(x) 1 1 0 1 1 0 0 1 1 0 1 0 0 0 0 M(x)
1 1 0 1
1 0 0 1
1 1 0 1
1 0 0 0
1 1 0 1
1 0 1 1
1 1 0 1
1 1 0 0
1 1 0 1
1 0 0 0
1 1 0 1
1 0 1 Remainder
Gambar 2.11. Perhitungan CRC
Pembagian pada Gambar 2.11 diatas memberikan sisa 101. Dengan demikian
diketahui bahwa 10011010000 dikurangi 101 akan terbagi habis oleh C(x), hasil
pengurangan inilah yang akan dikirimkan. Operasi pengurangan dalam aritmetika
polinomial juga diwakili dengan operasi logika XOR, sehingga deretan bit yang
benar-benar dikirimkan adalah 10011010101. Jika diperhatikan, sebenarnya polinom ini
hanyalah M(x) yang ditempeli sisa pembagian.
Kembali ke pertanyaan : dari mana asal polinom C(x)? Secara intuitif, ide
pemilihan polinom ini adalah sedemikian sehingga tidak akan membagi habis
message yang mengandung error secara merata. Sebagai contoh, error pada satu bit i
i
direpresentasikan sebagai E(x) = x . Jika C(x) dipilih sedemikian sehingga suku pertama
dan suku terakhir tidak nol, maka setidaknya ada dua suku yang tidak akan membagi
secara merata satu suku E(x). C(x) yang bersifat demikian akan dapat mendeteksi
semua error satu bit. Secara umum dapat dikatakan bahwa C(x) akan dapat
mendeteksi :
k 0
Semua single-bit error, selama suku x dan x memiliki koefisien tidak nol.
Semua double-bit error, selama C(x) memiliki faktor dengan setidaknya tiga
suku.
Semua error pada posisi ganjil, selama C(x) memiliki faktor (x+1)
Semua ‘burst’ error (sederetan bit error) dimana panjang dari burst kurang dari k
bit. (Sebagian burst error yang lebih penjang dari k bit juga dapat dideteksi).
Meski terlihat kompleks, sebenarnya algoritma CRC sangat mudah diimplementasikan
secara hardware dengan menggunakan shifter k-bit dan gerbang XOR. Enam versi C(x)
yang paling sering digunakan pada protokol level link tercantum pada Tabel 2.4.
Ethernet dan FDDI menggunakan CRC-32, HDLC menggunakan CRC-CCITT,
sementara ATM menggunakan CRC-8 dan CRC-10.
CRC C(x)
8 2 1
CRC-8 x +x +x +1
10 9 5 4 1
CRC-10 x +x +x +x +x +1
12 11 3 2
CRC-12 x +x +x +x +1
16 15 2
CRC-16 x +x +x +1
16 12 5
CRC-CCITT x +x +x +1
32 26 23 22 16 12 11 10 8 7 5 4 2 1
CRC-32 x +x +x +x +x +x +x +x +x +x +x +x +x +x +1
Parity Dua Dimensi
Secara sederhana, metoda parity akan menambahkan satu bit pada sejumlah bit
data (biasanya tujuh) untuk menyeimbangkan jumlah bit 1. Jika digunakan parity ganjil,
maka nilai bit tambahan tersebut dipilih sedemikian sehingga jumlah bit yang bernilai
satu pada (data + parity) bernilai ganjil. Sebaliknya jika digunakan parity genap, maka
nilai bit tambahan tersebut dipilih sedemikian sehingga jumlah bit yang bernilai satu
pada (data + parity) bernilai genap. Parity dua dimensi juga melakukan hal yang serupa.
Bedanya dengan yang sederhana adalah selain menambahkan bit parity untuk tiap
‘baris’ data, ditambahkan pula bit parity untuk tiap ‘kolom’ data, bahkan untuk ‘baris’
dan ‘kolom’ bit-bit parity juga ditambahkan satu bit parity pula. Parity dua dimensi
dapat mendeteksi kesalahan sebanyak 1, 2 dan 3 bit. Gambar 2.12 mengilustrasikan
parity genap dua dimensi ini.
Parity
bits
0101001 1
0
1101001
1
Data
1011110
1
0001110
1
0110100
0
1011111
Parity 0
byte 1111011
Internet Checksum
Pendekatan ketiga dalam mendeteksi kesalahan adalah yang seringkali
dilakukan di Internet. Meski tidak digunakan pada level link, namun algoritma ini
memiliki fungsionalitas seperti CRC dan parity. Ide dibalik pendekatan ini sederhana
saja : jumlahkan semua word yang ditransmisikan kemudian kirimkan juga hasil
penjumlahan tersebut ke node tujuan. Hasil penjumlahan ini disebut checksum. Node
tujuan juga akan melakukan penjumlahan yang sama terhadap data yang diterimanya,
kemudian membandingkan hasil penjumlahannya sendiri dengan checksum yang
dikirimkan oleh node sumber. Jika ada error pada data (termasuk checksum), maka hasil
penjumlahan tidak akan sesuai dengan checksum dari node sumber, dengan
demikian node tujuan memastikan telah terjadi kesalahan dalam transmisi. Namun tidak
seperti CRC, checksum bukanlah algoritma pendeteksian kesalahan yang selalu dapat
diandalkan. Sebagai contoh : checksum tidak akan dapat mendeteksi adanya data
yang bit-bitnya tertukar posisinya.
Mungkin ada banyak varian yang bisa dibangun dari ide dasar checksum tersebut.
Skema yang digunakan oleh protokol-protokol Internet adalah sebagai berikut. Misalkan
data yang akan dikirim berupa deretan bilangan integer 16-bit. Checksum didapat
dengan menjumlahkan semua bilangan tersebut dengan menggunakan aritmetika ones
complement 16-bit dan melakukan ones complement lagi terhadap hasil penjumlahan.
Alasan penggunaan algoritma ini (meski perlindungan terhadap kesalahan tidak
sebaik CRC) adalah bahwa algoritma ini lebih mudah diimplementasikan secara
software. Pengalaman dengan ARPANET menunjukkan bahwa perlindungan yang
diberikan oleh checksum telah cukup memadai. Dikatakan memadai karena checksum ini
adalah ‘garis pertahanan terakhir’ pada protokol end-to-end, sementara sebagian besar
error telah ditangani oleh algoritma pendeteksian kesalahan yang lebih handal pada
level link.
Hal ini biasanya dilakukan dengan memanfaatkan dua mekanisme dasar, yaitu :
acknowledgement dan timeout. Acknowledgement (sering disingkat dengan ACK) adalah
suatu frame kontrol berukuran kecil yang akan dikirimkan balik oleh protokol ke peer-
nya. Yang dimaksud dengan frame kontrol adalah header frame saja tanpa ada data
yang mengikutinya. ACK juga bisa dikirimkan secara piggyback, yakni menumpang
pada frame data yang dikirimkan pada arah yang berlawanan dengan frame data yang di-
ACK. Jika pengirim menerima ACK, maka disimpulkan bahwa frame yang dikirim
telah diterima dengan baik. Sebaliknya, jika pengirim tidak menerima ACK dalam
rentang waktu tertentu (timeout), maka diasumsikan frame telah hilang atau
mengalami kerusakan sehingga frame yang sama akan dikirim ulang.
Stop-and-Wait
Algoritma ini adalah yang paling sederhana dibanding dua yang lain. Ide dari
stop-and-wait adalah sebagai berikut : setelah mengirimkan satu frame, node sumber
menunggu ACK sebelum mengirimkan frame berikutnya, jika ACK tidak kunjung
datang dan timeout tercapai maka frame yang sama akan ditransmisikan.
Timeout
Sender Receiver Sender Receiver
Frame 0 Frame 0
Timeout
Timeout
X
ACK 0
Timeout
Frame 1 Frame 0
ACK 1 ACK 0
Time
(a (b)
)
Frame 0
Timeout
Frame 0
Timeout
ACK 0
X
ACK 0
Frame 0
Timeout
Frame 0
Timeout
ACK 0
ACK 0
Time
(c) (d)
Sender Receiver
...
...
Time
Algoritma Sliding Window sendiri bekerja sebagai berikut. Pertama, node sumber
memberikan nomor urut (SeqNum) pada tiap frame. Untuk saat ini diasumsikan
SeqNum dapat membesar tanpa batas. Pengirim memiliki tiga variabel yang terus
disesuaikan dengan kondisi transmisi dan penerimaan data, yakni :
Send Window Size (SWS), yang memberikan batas atas jumlah frame yang
dapat dikirimkan sebelum harus menunggu datangnya ACK.
Last Acknowledgment Received (LAR), menyimpan nomor urut dari ACK yang
terakhir kali diterima.
Last Frame Sent (LFS), menyimpan nomor urut dari frame yang terakhir
kali dikirimkan.
Isi dari ketiga variabel tersebut harus memenuhi batasan : LFS – LAR ≤ SWS.
Situasi ini terlihat pada Gambar 2.15. Saat suatu ACK diterima, LAR akan digeser ke
kanan. Hal ini memungkinkan dilakukannya transmisi frame berikutnya. Pengirim
mengasosiasikan satu timer untuk setiap frame yang dikirimkan. Jika timeout terjadi
sebelum ACK tiba, maka dilakukan retransmisi terhadap frame yang bersangkutan.
Konsekuensinya, pengirim harus memiliki buffer (sebesar SWS) untuk menyimpan
frame-frame yang telah dikirimkan namun ACK-nya belum diterima, sehingga pengirim
selalu siap untuk mengirim ulang frame yang mengalami timeout.
no more than SWS
...
LAR LFS
...
NFE LFA
Tabel 2.5. Perbandingan Spesifikasi Token Ring IBM dengan IEEE 802.5
Format Frame
Token Ring mengenal tiga jenis frame, yakni : frame data, frame command dan
token. Format frame data dan command sangat mirip, terlihat pada Gambar 2.17. Token
merupakan frame dengan format khusus, terlihat pada Gambar 2.18.
1 1 1 6 6 4 1 1
Token Passing
Token Ring dan IEEE 802.5 merupakan contoh dari jaringan token-passing.
Jaringan jenis ini akan mengedarkan frame khusus berukuran kecil disebut token
memutari jaringan. Suatu node hanya boleh mengirimkan data jika telah terlebih dahulu
‘menangkap’ dan menahan token. Jika suatu node yang menerima token tidak memiliki
data yang hendak dikirim, maka token akan diberikan kepada node disebelahnya (urutan
setelahnya). Tiap node boleh menahan token selama rentang waktu maksimal tertentu,
tergantung dari teknologi yang digunakan.
Sebelum mengirimkan data, node yang telah ‘menangkap’ token akan
mengubah satu bit dari token. Token tersebut kemudian akan menjadi pola start-of-
frame. Selanjutnya, node akan menambahkan informasi yang akan dikirimkan kepada
token (yang telah diubah) dan mengirimkannya ke node berikutnya dalam ring.
Tidak ada token yang mengitari jaringan bersamaan dengan frame data, kecuali jaringan
tersebut mendukung early token release. Jika jaringan tidak mendukung early token
release, maka node lain tidak akan diperkenankan mengirim data, sampai akhirnya
token dilepaskan oleh node yang baru saja mengirim data. Dengan demikian dalam
jaringan Token Ring tidak akan pernah terjadi collision. Jika jaringan mendukung early
token release, maka begitu selesai mengirimkan data, suatu node akan langsung melepas
token.
Frame informasi akan mengitari ring sampai diterima oleh node tujuan. Node
tujuan kemudian menyalin frame tersebut. Frame informasi tetap berjalan di jaringan
sampai ke node sumber, node sumber inilah yang berhak membuang frame informasi
tersebut dari jaringan. Node sumber dapat melihat apakah frame tersebut telah
diterima dengan baik dan disalin oleh node tujuan atau tidak.
Tidak seperti jaringan CSMA/CD (contoh : Ethernet), jaringan token-passing
bersifat deterministik. Ini berarti pada jaringan ini dapat ditentukan waktu tunggu
maksimal untuk tiap node sebelum akhirnya dapat mengirim data. Hal ini (berikut
dengan beberapa fitur kehandalan lain) menjadikan Token Ring sebagai sebuah jaringan
ideal untuk aplikasi-aplikasi yang mensyaratkan adanya waktu tunda (delay) yang dapat
diprediksi.
Host D Host C
Mekanisme Manajemen
Jaringan Token Ring menggunakan beberapa mekanisme untuk mendeteksi dan
melakukan kompensasi adanya kesalahan (fault) dalam jaringan. Satu mekanisme
digunakan untuk memilih salah satu node dalam jaringan untuk bertindak sebagai
monitor. Node ini menjadi rujukan informasi pewaktuan (timing) untuk seluruh node
lain. Monitor berhak untuk membuang frame yang terus menerus berputar dalam
jaringan sehingga menghambat node lain dalam mengirimkan frame datanya (misal :
karena node pengirimnya rusak). Dalam kasus ini, setelah membuang frame tersebut,
bila perlu monitor juga berhak untuk membuat token baru.
Topologi jaringan Token Ring yang berupa star juga memberikan kontribusi
terhadap kehandalan jaringan secara keseluruhan. Active MSAU (Multi-Station
Access Unit) dapat memantau seluruh informasi yang beredar dalam jaringan, yang
memungkinkannya untuk melakukan pengawasan terhadap adanya masalah. Jika
dibutuhkan, MSAU dapat mengeluarkan (memutuskan hubungan) suatu node dari
jaringan. Mekanisme Beaconing yang dimiliki Token Ring digunakan untuk mendeteksi
dan mengupayakan penyelamatan jaringan. Saat suatu node mendeteksi adanya
kerusakan yang serius dalam jaringan (misal : putusnya kabel), maka ia akan
mengirimkan frame beacon. Frame beacon ini akan mendefinisikan domain
kerusakan (failure domain). Domain kerusakan meliputi node yang melaporkan
adanya kerusakan, node aktif yang terdekat sebelumnya (NAUN – Nearest Active
Upstream Neighbor), dan segala sesuatu diantara keduanya. Mekanisme beaconing
kemudian akan mengaktifkan proses yang disebut auto reconfiguration, dimana
node-node dalam domain kerusakan secara otomatis akan melakukan diagnosa. Hasil
akhir proses ini adalah rekonfigurasi otomatis terhadap jaringan disekitar area kerusakan
tersebut. Secara fisik, MSAU lah yang melakukan rekonfigurasi secara elektronik.
Topologi fisik jaringan Token Ring
Node-node pada jaringan Token Ring IBM terhubung langsung dengan MSAU
(menggunakan media STP atau UTP), seperti terlihat pada Gambar 2.20. MSAU pun
dapat dihubungkan dengan MSAU lain untuk membentuk jaringan (ring) yang lebih
besar. Kabel yang menghubungkan MSAU dengan MSAU yang lain disebut patch
cable. Kabel yang menghubungkan MSAU dengan node disebut lobe cable. MSAU
memiliki bypass relay yang digunakan untuk ‘mengeluarkan’ node tertentu dari ring.
MSAU MSAU
in 1 2 3 4 5 6 7 8 o in 1 2 3 4 5 6 7 8 out
ut
MSAU
in 1 2 3 4 5 6 7 8 out
Medium Access
Station Management
Control
Physical Layer
Medium
Seperti terlihat pada Gambar 2.21, spesifikasi FDDI terdiri dari empat bagian,
yakni:
1. Medium Access Control (MAC) – mendefinisikan kendali terhadap akses node
kemedia, termasuk didalamnya :
• Format frame
• Penanganan terhadap token
• Pengalamatan
• Algoritma penghitungan CRC
• Mekanisme error recovery
2. Physical Layer Protocol (PHY) – mendefinisikan prosedur pengkodean data,
termasuk didalamnya :
• Clocking
• Framing dll
3. Physical Layer Medium (PMD) – mendefinisikan karakteristik dari medium
transmisi, termasuk didalamnya :
• Link fiber optik
• Level energi
• Bit error rate
• Komponen optik
• Konektor
4. Station Management (SMT) – mendefinisikan konfigurasi FDDI, termasuk
didalamnya :
• Konfigurasi ring
• Pengendalian ring
• Penambahan dan pengurangan node
• Inisialisasi
• Isolasi dan perbaikan kerusakan
• Penjadwalan
• Penghitungan statistik
>=8 1 1 2 or 6 2 or 6 4 1 3
Pengalokasian bandwidth
FDDI memiliki kemampuan untuk mengalokasikan bandwidth jaringan secara
real-time, sehingga sangat ideal untuk mendukung berbagai jenis aplikasi. FDDI
mendefinisikan dua jenis trafik : sinkron dan asinkron (meskipun penggunaan kedua
istilah ini agak rancu).
Trafik sinkron.
• Trafik sinkron adalah trafik yang sensitif terhadap delay
• Trafik sinkron dapat mengkonsumsi sebagian dari total bandwidth jaringan FDDI
(100 Mbps), sementara sisanya diperuntukan bagi trafik asinkron
• Bandwidth sinkron dialokasikan untuk node-node yang membutuhkan
layanan transmisi secara kontinyu (misal : transmisi suara dan video)
• Spesifikasi SMT pada FDDI mendefinisikan skema penawaran terdistribusi untuk
pengalokasian bandwidth FDDI
Trafik asinkron
Ring primer
node
Ring sekunder
Upstream Downstream
DAS DAS
Konsentrator (DAS)
Tiap node dalam jaringan FDDI memiliki elasticity buffer, yakni suatu memori
penampung dengan ukuran yang tidak terlalu besar yang akan menyimpan sementara
bit-bit dari frame yang harus melewati node tersebut. Adanya buffer ini memungkinkan
frame dapat dikirimkan melalui ring tanpa adanya sinkronisasi dari setiap node. Buffer
memisahkan bit-bit yang diterima dari node upstream dengan yang akan
ditransmisikan ke node downstream. Ukuran buffer berkisar antara 9 hingga 80 bit.
Yang perlu diperhatikan berkenaan dengan adanya buffer adalah bahwa hal ini akan
menambah delay terhadap waktu yang dibutuhkan frame untuk mengelilingi ring.
Sebagai contoh, FDDI dengan kecepatan 100 Mbps akan memiliki lebar per bitnya 10
nanodetik. Jika tiap node memiliki buffer berukuran 10 bit, dan harus menunggu sampai
buffer terisi setengah penuh sebelum mulai meneruskannya, maka tiap node akan
menambahkan delay sebesar 5 x 10 nanodetik = 50 nanodetik.
FDDI juga memiliki karakteristik fisik lain. Sebagai contoh, standar FDDI
membatasi jumlah node dalam satu jaringan paling banyak 500 buah, dengan jarak
antara dua node yang bersebelahan maksimal 2 kilometer. Secara keseluruhan,
panjang jaringan dibatasi maksimal 200 kilometer. Namun karena penggunaan dual ring,
maka total panjang fiber optik yang dapat digunakan untuk menghubungkan seluruh
node terbatas maksimal 100 kilometer.
Algoritma Timed-Token
Sebenarnya algoritma MAC yang digunakan FDDI lebih rumit daripada yang telah
dipaparkan diatas. Isu pertama yang menarik adalah berapa banyak data yang boleh
dikirimkan oleh suatu node yang telah ‘menangkap’ token. Jumlah data yagn boleh
dikirimkan berbanding lurus dengan waktu maksimal suatu node boleh menyimpan
token, yang disebut dengan Token Holding Time (THT). Jika diasumsikan
bahwa pada setiap rentang waktu tertentu, sebagian besar node dalam jaringan tidak
memiliki data untuk ditransmisikan, maka suatu node yang sedang menyimpan token
berhak mentransmisikan data sebanyak mungkin sebelum akhirnya memberikan token
kepada node downstream-nya. Hal ini sama halnya dengan menetapkan THT dengan
bilangan tak hingga, dan memungkinkan suatu node menahan token sedemikian lama
sehingga merugikan node yang lain. Di sisi lain, akan sangat konyol kalau tiap node
dibatasi hanya boleh mengirimkan satu frame, melepas token, kemudian harus
menunggu sampai token mengitari jaringan dan kembali kepadanya untuk dapat
mengirimkan frame data berikutnya.
Semakin banyak bit data yang dapat dikirimkan oleh suatu node setiap kali
memegang token, maka semakin tnggi tingkat utilisasi jaringan. Namun hal ini hanya
berlaku untuk kasus dimana setiap saat hanya ada satu node yang memiliki data untuk
ditransmisikan. Strategi ini tentu saja tidak akan berlaku dalam kasus dimana pada suatu
saat ada lebih dari satu node yang hendak mentransmisikan data. Node yang hanya akan
mentransmisikan data dalam jumlah kecil (dan mungkin dengan batas response time
yang ketat) harus menunggu selesainya node lain yang mengirimkan data dalam jumlah
sangat besar.
Dengan demikian, perlu didefinisikan Token Rotation Time (TRT), yakni waktu yang
akan dibutuhkan token untuk mengelilingi jaringan dari suatu titik hingga kembali ke
titik semula. TRT diformulasikan sebagai berikut :
TRT ≤ ActiveNode x THT + RingLatency
Dimana ActiveNodes menunjukkan jumlah node yang aktif (memiliki data untuk
ditransmisikan) dalam jaringan dan RingLatency menunjukkan waktu yang dibutuhkan
oleh token untuk mengelilingi jaringan saat tidak ada node yang memiliki data untuk
ditransmisikan.
Untuk menjamin seluruh node yang memiliki data punya kesempatan untuk
mentransmisikan datanya setiap rentang waktu tertentu, maka harus ada kesepakatan
tentang batas atas dari TRT. Batas ini dikenal dengan Target Token Rotation Time
(TTRT). Setiap node akan selalu menghitung waktu yang diperlukan oleh token
untuk mengitari jaringan (mulai dari dilepas hingga kembali ke node tersebut),
disebut measured TRT. TRT faktual ini kemudian dibandingkan dengan nilai TTRT
yang telah disepakati. Jika TRT faktual kurang dari TTRT, maka ini berarti token datang
lebih cepat dan node tersebut dapat menyimpan token (mengirimkan data) selama
rentang waktu beda antara TRT faktual dengan TTRT. Sebaliknya, jika token terlambat
datang (TRT sama dengan atau lebih besar dibanding TTRT), maka node tersebut tidak
berhak menyimpan token (dengan kata lain : tidak berhak mengirim data).
Mekanisme seperti ini ternyata belum dapat menjamin node yang harus mengirim
data dengan batasan waktu respon bisa mendapat giliran sebelum melampaui batas
waktunya. Masalahnya adalah node yang memiliki data dalam jumlah besar, saat
melihat token yang datang awal mungkin akan menyimpan token sedemikian lama.
Sehingga saat node downstream-nya mendapati token, TRT faktualnya bisa jadi sama
atau bahkan lebih besar daripada TTRT. Akibatnya node tersebut tidak akan mendapat
kesempatan untuk mengirim data. Untuk itulah FDDI mendefinisikan dua jenis trafik
seperti yang telah dipaparkan di bagian sebelumnya. Saat node menjumpai token, mak
node tersebut akan selalu diperbolehkan untuk mengirim data sinkron, tanpa melihat
apakah token datang awal atau terlambat. Sebaliknya suatu node diperkenankan
mengirim data asinkron hanya jika token datang awal.
Apakah masalah selesai? Ternyata belum. Karena trafik sinkron dapat
ditransmisikan tanpa melihat apakah token tiba awal atau terlambat, jika setiap node
memiliki trafik sinkron berukuran besar, maka nilai TTRT tidak akan banyak artinya.
Untuk mengatasi masalah ini, total trafik sinkron yang dapat ditransmisikan tiap
sekali mendapat token juga dibatasi oleh TTRT. Ini berarti pada kasus terburuk,
node-node yang memiliki trafik asinkron menggunakan terlebih dahulu satu rentang
waktu TTRT, kemudian baru node-node yang memiliki data sinkron menggunakan satu
rentang waktu TTRT berikutnya. Dengan demikian mungkin terjadi measured TRT
pada tiap node bernilai 2 x TTRT. Perlu dicatat bahwa jika trafik sinkron telah
mengonsumsi satu rentang TTRT, maka node-node yang memiliki trafik asinkron
tidak akan mengirimkan data, karena token pasti akan datang terlambat. Dengan
demikian pada kasus terakhir ini tidak mungkin terjadi measured TRT bernilai 2 x
TTRT.
Masih ada satu masalah yang tersisa : bagaimana jika suatu node yang memiliki
data asinkron mendapati TRT faktual lebih kecil daripada TTRT, namun waktu yang
dimiliki tidak cukup untuk mengirimkan message secara lengkap? Dalam kasus
seperti ini, node tetap diijinkan untuk mengirim data. Sebagai konsekuensinya,
measured TRT secara aktual dibatasi oleh TTRT ditambah dengan waktu yang
dibutuhkan untuk mengirimakan satu frame FDDI secara lengkap.
Pemeliharaan Token
Sementara ini token selalu dianggap eksis dan vaild. Pada kenyataannya, token
yang notabene berupa pola bit khusus dapat saja rusak (akibat bit error dalam jaringan)
atau hilang (karena kerusakan pada node yang sedang menyimpannya). Dengan
demikian diperlukan suatu metode untuk memonitor validitas token dan membangkitkan
token baru jika token yang lama rusak atau hilang. Token baru juga harus dibangkitkan
pada awal inisialisasi jaringan.
Pembangkitan token
Pembangkitan token baru mungkin terjadi saat ada node baru yang bergabung
ke jaringan atau suatu node mencurigai adanya kerusakan dalam jaringan. Algoritma
pembangkitan token (disebut dengan token claim process) sekaligus juga menghasilkan
kesepakatan akan nilai TTRT. Tiap node akan mengirimkan frame khusus (claim
frame), yang memuat penawaran TTRT dari node tersebut (TRT yang diperlukan oleh
node untuk memenuhi kebutuhan aplikasinya). Node dapat mengirimkan claim frame
tanpa terlebih dahulu harus memegang token, bahkan biasanya akan langsung
mengirim saat mencurigai adanya kerusakan atau saat pertama kali node tersebut
bergabung ke jaringan. Jika frame ini berputar di jaringan dan kembali lagi ke node
pengirimnya, maka node pengirim akan membuang frame tersebut dan menyimpulkan
bahwa TTRT yang ditawarkannya adalah tawaran yang paling rendah. Saat itu, node
tersebut diasumsikan sebagai node yang sedang memegang token (dengan kata lain :
node tersebut bertanggung jawab untuk melepaskan token yang valid ke jaringan).
Saat node menerima claim frame, nilai yang tertera didala frame dibandingkan
dengan nilai TTRT yang akan ditawarkannya. Jika nilai dalam frame ternyata lebih kecil
daripada tawarannya sendiri, maka TTRT lokal akan disamakan dengan nilai yang ada
di claim frame, kemudian frame tersebut akan diteruskan ke node sebelahnya.
Sebaliknya, jika nilai yang termuat dalam claim frame ternyata lebih besar dari
TTRT yang akan ditawarkan, maka fraem tersebut akan dibuang dari jaringan dan node
akan mengirimkan claim frame baru yang berisi penawaran TTRT- nya sendiri. Jika
ternyata nilainya sama, maka node akan membandingkan alamat dari pengirim frame
dengan alamatnya sendiri, pemenangnya adalah yang memiliki nilai alamat paling besar.
Jika suatu claim frame sampai kembali ke node pengirimnya, maka node dapat
menyimpulkan bahwa tawarannya paling rendah diantara yang lain.
Properti Fisik
Pada awal perkembangannya, segmen jaringan Ethernet diimplementasikan
dengan kabel coaxial dengan panjang maksimal 500 m. Kabel coaxial yang
digunakan ini mirip dengan yang digunakan pada televisi, bedanya terletak pada
impedansi yang dimiliki oleh kabel. TV menggunakan kabel dengan impedansi 75 ohm,
sementara Ethernet menggunakan kabel dengan impedansi 50 ohm. Host dihubungkan
dengan segmen jaringan dengan melakukan tapping. Jarak antar tap minimal 2,5 m.
Transceiver (alat yang langsung terhubung dengan tap) melakukan pendeteksian
kekosongan jalur (idle line) dan bertanggung jawab terhadap pengiriman sinyal
saat host melakukan transmisi data. Transceiver ini terhubung dengan adaptor Ethernet
yang tersambung ke host. Seluruh logika yang membangun protokol Ethernet
diimplementasikan dalam adaptor.
Sejumlah segmen Ethernet dapat dihubungkan satu sama lain dengan bantuan
repeater. Repeater adalah perangkat yang akan menguatkan dan meneruskan sinyal
digital. Namun demikian, tidak lebih dari empat repeater yang diperkenankan berada
diantara dua host yang saling berkomunikasi. Dengan demikian jangkauan maksimal
dari jaringan Ethernet adalah 2500 m. Gambar 2.29 memperlihatkan konfigurasi dimana
hanya ada maksimal dua repeater berada diantara dua host yang saling berkomunikasi.
Selain batasan diameter, jumlah host dalam satu jaringan Ethernet juga dibatasi
maksimal sebanyak 1024 buah.
Setiap sinyal yang dimasukkan ke jaringan Ethernet oleh suatu host akan terkirim
secara braodcast. Sinyal akan dipropagasikan ke segala arah. Repeater akan
meneruskannya ke seluruh outgoing segmen yang terhubung padanya. Terminator yang
terpasang pada tiap ujung segmen menyerap seinyal sehingga tidak terjadi efek pantulan
yang akan menyebabkan interferensi dengan sinyal yang datang kemudian. Ethernet
menggunakan skema pengkodean Manchester untuk merepresentasikan data biner dalam
bentuk sinyal.
Sejak jaman Ethernet ‘klasik’ (dikenal dengan 10Base5 atau Thick-net)
tersebut, telah banyak perkembangan dalam menyediakan alternatif teknologi
pembangun jaringan Ethernet. Dari semula kabel coaxial 50-ohm, Ethernet kemudian
dapat menggunakan kabel coaxial yang lebih tipis (10Base2 atau Thin-net). Angka
‘10’ pada kedua teknologi tersebut mengindikasikan bahwa masing-masing teroperasi
pada bandwidth 10 Mbps. ‘Base’ mengindikasikan bahwa keduanya menggunakan
sistem baseband. Angka ‘5’ dan ‘2’ berturut-turut mengindikasikan bahwa panjang
segmen maksimum dari masing-masing jaringan adalah 500 m dan 200 m. Media
yang digunakan juga mulai beralih dari kabel coaxial ke kabel twisted pair, bahkan
sudah pula merambah ke fiber optik. Perubahan media fisik juga mengubah teknologi
koneksi host ke segmen. Dengan penggunaan kabel 10Base2, host terhubung ke segmen
dengan konektor T. Dengan kabel twisted pair, host dihubungkan ke segmen
menggunakan konektor khusus (misal : RJ-45 untuk UTP), sehingga umumnya pada
topologi fisik 10BaseT akan terlihat sejumlah hubungan point-to-point dari repeater ke
tiap host yang terhubung dalam satu segmen. Tabel 2.6 memberikan deskripsi
beberapa anggota keluarga Ethernet yang ada.
Panjang
Bandwidth segmen Topologi fisikTopologi
Tipe Medium maksimum lojik
maksimum
10Base5 Thick Coax 10 Mbps 500 m Bus Bus
10Base2 Thin Coax 10 Mbps 200 m Bus Bus
10Base-T Cat 5 UTP 10 Mbps 100 m Star; Bus
extended
star
10Base-FL Multimode 10 Mbps 2000 m Star Bus
fiber optik
100Base-TX Cat 5 UTP 100 Mbps 100 m Star Bus
100Base-FX Multimode 100 Mbps 2000 m Star Bus
fiber optik
1000Base-T Cat 5 UTP 1000 Mbps 100 m Star Bus
Format frame
Format frame Ethernet dan IEEE 802.3 terlihat pada Gambar 2.29.
Gambar 2.29 Format frame Ethernet dan IEEE 802.3
Alamat
Tiap host pada jaringan Ethernet –bahkan mungkin tiap host Ethernet di seluruh
dunia– memiliki alamat Ethernet yang unik (seringkali disebut juga MAC address).
Sebenarnya alamat ini dimiliki oleh adaptor (bukan host), yang ditanam dalam ROM.
Alamat Ethernet biasanya dituliskan dalam bentuk yang mudah dimengerti manusia
berupa urutan enam angka yang dipisahkan dengan titik dua. Tiap angka
berkoresponden dengan 1 byte dari keseluruhan 6 byte alamat, dan direpresentasikan
dalam bentuk hexadesimal (satu digit untuk tiap empat bit, angka nol diawal tidak
akan dituliskan). Sebagai contoh, 8:0:2b:e4:b1:2 merupakan representasi yang lebih
mudah dibaca dari alamat Ethernet :
00001000 00000000 00101011
11100100 10110001 00000010
Untuk menjamin tiap adaptor memiliki alamat yang unik, maka tiap vendor
perangkat Ethernet diberi alokasi prefix yang harus dituliskan mengawali alamat tiap
adaptor yang dibuatnya. Sebagai contoh, Advanced Micro Device (AMD) diberikan
prefix x08002 (8:0:2). Vendor kemudian menambahkan nomor dibelakang prefix-nya
untuk menjamin tiap adaptor memiliki alamat yang unik.
Tiap frame yang ditransmisikan melalui jaringan Ethernet akan diterima oleh tiap
node yang terhubung ke jaringan. Tiap adaptor akan mencocokan alamat tujuan yang
tertera pada frame dengan alamatnya sendiri, hanya jika sesuai maka frame akan
diberikan ke host. Ada perkecualian untuk hal ini, yaitu :
• jika yang diterima adalah alamat broadcast (semua bit alamat bernilai 1), maka
semua adaptor akan meneruskan frame tersebut ke host
• jika alamat yang tertera pada frame diawali dengan bit 1 tetapi bit lain sisanya
tidak semua bernilai 1 (alamat multicast), maka adaptor yang telah diprogram untuk
tergabung dalam grup multicast akan meneruskannya ke host.
• jika adaptor diprogram untuk bekerja pada mode promiscuous, maka setiap frame
yang diterima akan selalu diteruskan ke host.
Algoritma pengirim
Sebagaimana yang telah dipaparkan, algoritma sisi penerima pada protokol
Ethernet relatif sederhana. Yang agak rumit justru algoritma pada sisi pengirim. Saat
adaptor memiliki data untuk dikirim dan link dalam keadaaan kosong, maka frame akan
langsung ditransmisikan; tidak ada negosiasi dengan adaptor pada node lain. Batasan
panjang maksimal data 1500 byte menjamin waktu maksimal yang dapat digunakan
oleh adaptor untuk menduduki link. Adaptor harus menunggu setidaknya 9,6 µdetik
sebelum mengirimkan frame berikutnya. Ini untuk memberikan kesempatan kepada
adaptor lain untuk dapat mengirimkan frame yang dimilikinya.
Saat adaptor memiliki frame untuk dikirimkan sementara link dalam keadaan
sibuk (sedang terpakai oleh adaptor lain), maka ia harus menunggu sampai link
terdeteksi dalam keadaan kosong, saat itu ia dapat langsung mengirimkan framenya.
Ethernet dikatakan memiliki protokol yang bersifat 1-persistent, karena adaptor yang
memiliki frame akan mengirimkannya dengan probabilitas 1 saat mendeteksi link dalam
keadaan kosong. Secara umum, algoritma p-persistent akan mentransmisikan data
dengan probabilitas 0 ≤ p ≤ 1 sat link dalam keadaan kosong. Alasan pemilihan nilai p
kurang dari 1 adalah untuk mengantisipasi jika dalam waktu yang bersamaan ada lebih
dari satu adaptor yang sedang menunggu link menjadi kosong dan tidak diinginkan
mereka mengirim frame pada saat yang bersamaan. Jika tiap adaptor akan langsung
mengirimkan frame dengan probabilitas (katakanlah) 33%, maka jika ada tiga adaptor
yang menunggu link dalam keadaan kosong, hanya satu adaptor yang akan mengirim
langsung begitu terdeteksi link dalam keadaan kosong.
Karena tidak ada kendali terpusat, maka mungkin terjadi adanya lebih dari satu
node yang mengirim frame pada saat yang bersamaan. Tiap node yang terlibat
didalam ‘tabrakan’ tersebut akan dapat mendeteksi adanya collision. Hal pertama
yang dilakukannya adalah mengirimkan jam signal sebanyak 32 bit, kemudian
menghentikan transmisi. Dengan demikian, tiap node tersebut akan mengirimkan
setidaknya 96 bit : 64 bit preamble dan 32 bit jam signal.
Di sisi lain, untuk menjamin suatu frame yang baru saja dikirim oleh suatu node
tidak bertabrakan dengan frame lain, maka pengirim harus mentransmisikan frame
sebanyak 512 bit. 512 bit ini merupakan jam time minimum yang berawal dari fakta
bahwa dalam jaringan Ethernet yang berukuran maksimal, delay dari satu ujung ke
ujung lain maksimal adalah 51,2 µdetik. Sehingga pada jaringan dengan kecepatan 10
Mbps, delay x bandwith dari Ethernet adalah 512 bit. Karena diinginkan setiap node
dalam jaringan dapat mendeteksi adanya collision, maka node-node tersebut harus
mengirimkan frame dengan ukuran yang dapat memenuhi ‘pipa’ Ethernet yakni 512
bit–. Hal inilah yang melatar belakangi mengapa Ethernet mensyaratkan setidaknya
ada 46 byte data dalam tiap frame. 14 byte header ditambah 46 byte data ditambah 4
byte CRC sama dengan 64 byte atau 512 bit.
Setelah adaptor mendeteksi terjadinya collision dan menghentikan pengiriman, ia
harus menunggu beberapa saat sebelum akhirnya mencoba engirim kembali. Tiap kali
mencoba mengirim dan mengalami kegagalan, adaptor akan menambahkan 51,2 µdetik
pada pilihan waktu tunggu terlamanya. Strategi penambahan waktu tunggu antar
percobaan pengiriman ulang ini dikenal dengan istilah exponential backoff. Lebih
rincinya, pertama kali adaptor akan menunggu dalam rentang waktu 0 atau 51,2
µdetik yang dipilih secara acak. Jika masih terjadi collision, maka adaptor akan
kembali menunggu selama 0, 51,2 atau 102,4 µdetik sebelum mencoba lagi;
kemudian 0, 51,2, 102,4 atau 153,6 µdetik dan seterusnya. Adaptor akan
menghentikan pengiriman setelah sejumlah percobaan (biasanya 16 kali), dan
melaporkan kegagalan pengiriman kepada host.
3 Packet Switching
J aringan terhubung-langsung (directly connected) yang telah dibahas pada
bab sebelumnya setidaknya mempunyai dua kelemahan, yakni :
• Batas jumlah node maksimal yang dapat terhubung ke jaringan. Link point- to-point
hanya dapat menghubungkan dua buah node. Jaringan Ethernet maksimal hanya
dapat menghubungkan 1024 node.
• Batas cakupan geografis yang dapat dilayani suatu jaringan. Ethernet
(10Base5) hanya dapat melingkupi area dengan diameter 1500 m.
Jika yang dituju adalah pembangunan jaringan yang dapat bersifat global dengan
tingkat skalabilitas yang tinggi, maka masalah yang harus dipecahkan adalah bagaimana
membangun hubungan antar node yang tidak terhubung langsung.
Masalah serupa sebetulnya telah lama disadari keberadaaannya pada jaringan
telepon. Sangat tidak praktis membangun jaringan dimana setiap pesawat telepon
terhubung langsung dengan semua pesawat telepon lain yang mungkin akan
dihubunginya. Solusi dari masalah ini : pesawat telepon memang tidak perlu
terhubung langsung dengan semua pesawat telepon lainnya, tiap pesawat cukup
terhubung ke suatu sentral telepon yang akan melakukan switching. Switch inilah
yang menjadikan seolah-olah setiap pesawat telepon dapat terhubung langsung
dengan pesawat yang lain. Jaringan komputer pun menggunakan pendekatan yang
serupa dengan jaringan telepon, bedanya hanyalah penggunaan metode packet switching
(telepon menggunakan circuit switching). Packet switch memungkinkan paket-paket
dapat diirimkan dari satu host ke host lain meski host-host tersebut tidak terhubung
secara langsung.
Packet switch (selanjutnya akan disebut switch saja) adalah perangkat dengan
sejumlah port input dan output dari dan ke host. Ada tiga masalah utama yang
dihadapi oleh switch, yakni :
• Tugas utama dari switch adalah menerima paket yang tiba di suatu port
kemudian meneruskannya ke port yang tepat sehingga paket akan dapat mencapai
tujuannya. Untuk dapat mengetahui port mana yang tepat, switch harus memiliki
informasi tentang jalur-jalur yang mungkin ditempuh untuk mencapai tujuan.
Switching protocol
T1 T3 STS-1
Switch
T1 T1
T3 T3
STS-1
STS-1
Input ports Output ports
Gambar 3.2 Contoh switch dengan tiga port input dan output
Telah dipaparkan diatas bahwa fungsi utama switch adalah menerima paket dari
port input dan meneruskannya ke port output yang sesuai. Bagaimana switch bisa
dengan tepat menentukan port output mana yang harus digunakan agar paket bisa
mencapai tujuan? Yang pasti, penentuan output port harus berdasarkan informasi
yang terdapat dalam header paket. Ada beberapa pendekatan yang dapat digunakan.
Yang pertama adalah pendekatan datagram atau connectionless. Kedua, pendekatan
virtual circuit atau connection-oriented. Yang ketiga dan paling sederhana adalah
pendekatan source routing.
Source Routing
Salah satu cara agar switch tahu output port yang akan digunakan untuk
meneruskan paket adalah dengan cara memberi nomor pada tiap port yang dimiliki
switch dan meletakkan nomor output port yang tepat header dari paket. Dengan cara ini,
fungsi switching menjadi sangat sederhana : untuk tiap paket yang diterima, switch
akan membaca informasi output port dalam header kemudian meneruskan paket
melalui port tersebut. Karena dalam switched network sangat mungkin terdapat lebih
dari satu switch sepanjang jalur antara node sumber dan tujuan, maka header pun
harus dapat memuat informasi port sebanyak jumlah switch yang akan dilewati. Salah
satu cara yang dapat ditempuh adalah dengan melakukan rotasi terhadap urutan
informasi port tersebut sehingga switch tinggal membaca nomor port yang terletak
paling depan. Gambar 3.3 mengilustrasikan ide ini dalam pengiriman paket dari host A
ke host B.
Gambar 3.3 Ilustrasi metode source routing (switch membaca informasi port terkanan /
diarsir)
Pada contoh ini, paket harus melalui tiga switch sebelum sampai ke host B (switch
1, 2 dan 4). Pada switch 1, setelah diterima dari port 1, paket harus diteruskan melalui
port 0. Switch 1 menentukan port 0 sebagai output port dengan melihat informasi port
pertama dari header (yang saat diterima memiliki urutan [0,3,2]). Untuk
memastikan switch berikutnya akan meneruskan paket melalui port yang benar,
maka urutan informasi paket tersebut di-rotate sesaat sebelum paket itu meninggalkan
switch 1. Saat diterima oleh switch 2 urutan informasi port pada header adalah
[3,2,0], sehingga paket tersebut akan diteruskan melalui port 3. Demikian seterusnya
hingga paket tiba di host tujuan. Switch terakhir sebelum host tujuan (dalam hal ini
switch 4) sebetulnya juga melakukan rotasi terhadap informasi port sehingga paket
yang diterima host B sama kondisinya seperti saat dikirimkan oleh host A.
Ada beberapa hal yang harus diperhatikan berkenaan dengan pendekatan ini.
Pertama, diasumsikan bahwa host A mempunyai cukup pengetahuan tentang topologi
jaringan untuk membentuk header yang memuat semua informasi tentang nomor output
port dari setiap switch yang akan dilalui. Untuk jaringan yang cukup besar,
mendapatkan informasi topologi jaringan ini merupakan masalah yang tidak sepele.
Kedua, ukuran header tidak dapat diprediksi sehingga mungkin ukuran headerpun
akan bervariasi tanpa batas maksimal, kecuali dapat dilakukan prediksi terhadap jumlah
maksimum switch yang dapat dilalui suatu paket. Ketiga, ada beberapa variasi dari
pendekatan ini. Contoh : selain melakukan rotasi terhadap header, tiap switch juga
dapat membuang elemen pertama setelah digunakannya. Meski sedikit lebih rumit,
rotasi memiliki kelebihan dibanding sekedar membuang elemen pertama : host B
menerima paket dengan header yang lengkap, sehingga memudahkan dalam
menentukan jalur balik ke host A. Alternatif lain adalah dengan menambahkan
pointer pada header yang akan menunjuk ke elemen yang harus dibaca oleh switch
setelah paket diterima. Saat paket akan meninggalkan switch, pointer tersebut di- update
sehingga menunjuk ke elemen berikutnya.
Alasan utama mengapa source routing tidak banyak digunakan adalah
ketidakmampuannya dalam mengatasi masalah skalabilitas. Dalam suatu jaringan
yang besar, sangat besar effort yang harus dikeluarkan suatu host untuk mendapatkan
informasi lengkap tentang jalur yang akan dilalui paket. Jika informasi tentang jalur
tidak lengkap atau tidak akurat, maka hampir pasti paket tidak akan sampai ke tujuan.
Virtual Circuit
Pendekatan ini juga sering disebut dengan model connection-oriented. Dengan
pendekatan ini, sebelum dapat mengirimkan data, host pengirim harus membangun
virtual circuit ke host penerima. Gambar 3.4 mengilustrasikan situasi dimana host A
akan mengirimkan data ke host B.
Gambar 3.4 Contoh jaringan dengan virtual circuit
Datagram
Alternatif lain dari model komunikasi connection-oriented adalah pendekatan
connectionless. Dalam jaringan packet switched, pendekatan ini juga disebut dengan
model datagram. Ide dibalik model ini sederhana saja : tidak perlu mengadakan
pembangunan hubungan, paket dibekali dengan informasi yang cukup untuk dapat
berjalan sampai ke tujuan. Dengan demikian, tiap paket akan memuat alamat lengkap
dari host tujuan. Gambar 3.5 mengilustrasikan kasus dimana host A ingin mengirim data
ke host B.
Untuk menentukan output port yang akan digunakan untuk meneruskan paket
yang diterimanya, tiap switch memiliki forwarding table (routing table). Contoh routing
table yang dimiliki switch 2 tampak pada Tabel 3.2. Tabel ini menyimpan informasi
yang dibutuhkan oleh switch 2 untuk melakukan forwarding paket, dengan mengetahui
alamat tujuan yang tertera pada tiap paket dan menghubungkannya dengan nomor
port yang bersesuaian dalam tabel. Jika topologi jaringan sederhana dan tidak terlalu
besar, cukup mudah membangun tabel ini pada tiap switch. Masalah baru akan muncul
jika topologi jaringan relatif rumit dan dalam skala yang besar. Lagi-lagi hal ini
merupakan masalah yang akan diatasi dengan algoritma routing, yang akan dibahas
tersendiri.
I/O Bus
CPU
Interface 1
Interface 2
Interface 3
Memory
Gambar 3.6 Komputer yang digunakan sebagai switch
Untuk mengatasi masalah ini, pada perancang hardware telah memiliki banyak
rancangan untuk mengurangi jumlah contention dan meningkatkan aggregate
throughput. Perlu dicatat bahwa ada kasus contention yang tidak terhindarkan, misal :
paket dari seluruh port input harus diteruskan melalui satu port output yang sama.
Sebaliknya, jika paket yang diterima pada sejumlah port input ternyata harus diteruskan
melalui port output yang berbeda-beda, maka rancangan switch yang baik akan mampu
memindahkan data dari port input ke output secara paralel (yang akan meningkatkan
aggregate throughput).
Routing
Pada bahasan terdahulu, diasumsikan bahwa host (dalam kasus source routing)
atau switch memiliki cukup pengetahun tentang topologi jaringan sehingga mereka
dapat memilih output port yang tepat untuk tiap paket. Pada kasus virtual circuit,
routing dilakukan hanya untuk paket yang memuat connection request, sementara semua
paket berikutnya mengikuti jalur yang telah terbangun. Sebaliknya pada kasus datagram,
routing dilakukan untuk tiap paket. Hal yang sama pada kedua kasus tersebut adalah
switch harus dapat mengetahui alamat tujuan dari paket dan kemudian menentukan
output port yang merupakan pilihan terbaik untuk mengantarkan paket tersebut ke
tujuan. Telah dijelaskan bahwa switch melakukan pengambilan keputusan dengan
melihat entri-entri pada forwarding table (routing table). Yang menjadi masalah
mendasar dalam routing adalah : bagaimana switch bisa mendapatkan informasi untuk
membangun forwarding table-nya?
Perlu kiranya diperjelas kembali perbedaan antara forwarding dengan routing.
Forwarding terdiri dari proses penerimaan paket, melihat alamat tujuan paket,
melihat entri pada forwarding table, dan mengirimkan paket tersebut melalui port sesuai
dengan yang ditunjukkan entri pada tabel. Sementara routing adalah proses untuk
membangun forwarding table.
℘
Graph yang ditunjukkan menggunakan garis tak berarah dan tiap garis hanya memiliki satu bobot.
Hal ini dilakukan menyederhanakan masalah. Sebetulnya akan lebih akurat jika digunakan garis
berarah dengan bobot masing-masing.
Garis yang menghubungkan dua node pada graph mewakili link pada jaringan. Tiap
garis memiliki bobot (harga), yang akan berhubungan dengan pemilihan jalur.
Masalah utama dalam routing adalah untuk mendapatkan jalur antara dua node
dengan harga jalur minimal, dimana harga jalur merupakan hasil penjumlahan semua
harga link yang membentuk jalur tersebut. Untuk jaringan sederhana seperti yang
tampak pada Gambar 3.7, cara paling sederhana yang dapat dilakukan adalah cukup
dengan menghitung semua jalur terpendek kemudian menyimpannya dalam memori
permanen di setiap node. Pendekatan statik seperti ini segera saja akan mendapatkan
tantangan berat, diantaranya :
• Bagaimana jika terjadi kerusakan pada node atau link?
• Bagaimana jika ada penambahan node atau link baru ke jaringan?
• Bagaimana jika terjadi perubahan bobot (meski sementara) pada link
(misalnya harga suatu link dinaikkan karena beban link terlalu besar)?
Karena hal-hal tersebut, dalam prakteknya di jaringan (pada tiap switch) akan
berjalan protokol routing. Protokol tersebut menyediakan mekanisme dinamis yang
terdistribusi untuk menyelesaikan masalah penentuan jalur dengan harga minimal,
terutama pada kasus perubahan tolopogi jaringan (ada kerusakan pada node atau link,
penambahan dan pengurangan node atau link dan perubahan bobot link). Berkenaan
dengan sifat ‘terdistribusi’, perlu diperhatikan bahwa sentralisasi adalah ‘musuh
bebuyutan’ dari skalabilitas, sehingga semua protokol routing yang baik dirancang
memiliki sifat terdistribusi.
Berikutnya akan dipaparkan tentang dua kelas utama dari protokol routing,
yakni : distance vector dan link state; dengan asumsi bobot semua link diketahui.
Yang akan dipaparkan terbatas hanya pada prinsip-prinsip utamanya, sementara
contoh nyata dari protokol routing (dengan mengambil beberapa protokol yang
digunakan di Internet) akan diberikan pada bab berikutnya.
Distance Vector
Ide yang melatarbelakangi algoritma distance vector sebenarnya terbayang dari
kata ‘distance’ dan ‘vector’. ‘Distance’ merupakan ukuran (metric) yang selalu berusaha
diminimalkan, sementara ‘vector’ menunjukkan arah forwarding paket. Asumsi awal
dari routing ini adalah setiap node mengetahui bobot dari semua link yang terhubung
langsung kepadanya. Link yang rusak (atau sengaja tidak digunakan) diberi bobot
dengan nilai tak hingga (sangat besar).
Untuk mengerti cara kerja algoritma distance vector, cara termudah adalah dengan
menerapkannya pada contoh kasus (contoh jaringan pada Gambar 3.8). Pada contoh ini,
tiap link memiliki harga 1 (sengaja tidak dituliskan pada tiap link), sehingga jalur
dengan harga minimal adalah jalur dengan jumlah link (hop) paling sedikit. Pengetahuan
awal tiap node tentang jarak antara dirinya dengan node-node yang lain
direpresentasikan dalam bentuk tabel (Tabel 3.3). Tiap node hanya menyimpan
informasi setara dengan satu baris pada tabel. Dari sini terlihat bahwa tiap node
hanya mengetahui bobot link yang terhubung langsung dengan dirinya.
C B
E G
F ∞ 1 ∞ 1 ∞ 0 1
G ∞ ∞ ∞ ∞ 1 1 0
Tiap baris pada tabel diatas berisi jarak semua node lain dari suatu node
tertentu. Tiap node yang terhubung langsung dengan suatu node akan dianggap memiliki
jarak 1 sementara yang tidak terhubung langsung akan dianggap memiliki jarak tak
hingga (tidak dapat dicapai). Dengan demikian, node A pada awalnya beranggapan
bahwa ia hanya dapat berhubungan dengan B dan E.
Langkah berikutnya dari distance vector, tiap node akan mengirimkan message
kepada node tetangganya (yang terhubung langsung) yang berisi pengetahuan akan jarak
yang dimilikinya. Sebagai contoh, node B akan mengirimkan seluruh pengetahuannya
tentang jarak (seperti pada baris kedua Tabel 3.3) kepada node A, C, D dan F. Jika node
yang menerima informasi tersebut mendapati bahwa ternyata B menawarkan jalur (ke
suatu node tujuan) yang lebih pendek daripada jalur yang diketahuinya, maka ia akan
memperbaharuinya dengan catatan bahwa paket yang ditujukan ke node tujuan tersebut
akan dikirimkan melalui B.
Sebagai contoh : D tahu bahwa C dapat dicapai dari B dengan jarak 1,
sementara D sendiri tahu bahwa B dapat dicapai dengan jarak 2, maka D akan
memperbaharui jaraknya terhadap C menjadi 2 melalui B. Pada gilirannya, D akan
mengirimkan pengetahuan “C dapat dicapai melalui B dengan jarak 2” tersebut ke F. F
sendiri tahu bahwa C akan dapat dicapainya melalui B dengan jarak 2. Jika F ingin
berhubungan dengan C lewat D, maka total jaraknya adalah 3. Dengan demikian F tidak
akan memperbaharui pengetahuannya. Demikian seterusnya, sehingga setelah sejumlah
pertukaran pengetahuan antar node yang terhubung langsung (dengan asumsi tidak
ada perubahan topologi jaringan), maka seluruh node akan memiliki persepsi yang sama
tentang jaringan dan semua mengetahui jalur terpendek untuk mencapai node-node yang
lain. Pengetahuan akhir yang tersimpan pada tiap node terlihat pada Tabel 3.4.
Tabel 3.4 Pengetahuan akhir tentang jarak antar node
Pada saat melakukan pembaharuan pengetahuan tentang jarak, tiap node juga
harus mengingat node mana yang mengirimkan pengetahuan yang digunakan untuk
pembaharuan itu, sehingga masing-masing node bisa membangun forwarding table-
nya. Sebagai contoh, D mengingat bahwa B-lah yang memberitahunya “C dapat aku
capai dengan satu lompatan (hop)”, sehingga D akan memasukkan ke forwarding table-
nya informasi “untuk mencapai C, gunakan link ke B”. Hal inilah yang dimaksud
dengan ‘vector’, yakni arah yang harus ditempuh untuk menngirimkan paket ke
node tujuan.
Pada prakteknya, forwarding table pada tiap node akan terdiri dari sekumpulan
‘record’ dengan format :
(Tujuan, Biaya, Node_berikut)
Tabel 3.5. menunjukkan routing table yang dimiliki node D pada contoh jaringan di
atas. Tiap node yang terhubung langsung kemudian akan saling mempertukarkan
updates, dengan format :
(Tujuan, Biaya)
Saat suatu node menerima update dari node tetangganya yang memuat jalur yang
lebih baik dari jalur yang telah diketahui sebelumnya, maka forwarding table akan
diperbaharui. Terlihat pada Tabel 3.5 bahwa jalur terbaik dari node D ke E adalah
melalui node F, meskipun sebenarnya bisa juga melalui node B dengan biaya yang sama
(3). Jalur yang dipilih tergantung dari node tetangga mana yang memberikan update-nya
terlebih dulu.
Tabel 3.5 Tabel routing pada node D
Ada dua kondisi yang menyebabkan suatu node memutuskan untuk mengirim
update ke tetangganya. Pertama, tiap node akan secara otomatis mengirimkan update
tiap selang waktu tertentu, meski tidak ada entri yang berubah. Hal ini dilakukan
untuk meyakinkan node lain bahwa dirinya masih ‘hidup’. Selain itu, akan ada
jaminan bahwa tiap node selalu mendapatkan informasi terbaru yang diperlukan jika ada
jalur yang tidak lagi dapat digunakan. Periode update bervariasi, tergantung dari
implementasi protokolnya masing-masing, namun biasanya berkisar dari beberapa detik
hingga beberapa menit. Mekanisme kedua seringkali disebut dengan triggered update,
yang terjadi setiap kali suatu node menerima update dari tetangganya yang
menyebabkan perubahan pada jalur dalam forwarding table-nya. Dengan demikain,
tiap kali suatu node mengalami perubahan isi tabel, maka ia akan mengirimkan
update ke tetangganya, yang kemudian akan menyebabkan perubahan pada tabel dan
terjadi pengiriman update, demikian seterusnya.
Misalkan suatu node atau link mengalami kerusakan, node yang pertama kali
mendeteksi hal tersebut akan segera mengirimkan update ke tetangganya. Dalam
kasus seperti itu, biasanya sistem akan kembali stabil (pada kondisi baru) dalam
waktu yang tidak begitu lama. Bagaimana suatu node mendeteksi adanya kerusakan?
Ada beberapa pendekatan yang memungkinkan dilakukannya deteksi. Pertama, node
secara kontinyu menguji link ke node lain dengan mengirimkan paket kontrol dan
menunggu ACK dari node di seberang link. Pada pendekatan kedua, node
menyimpulkan telah terjadi kerusakan pada link (atau node di seberang link) jika ia
tidak menerima periodic routing update selama waktu yang setara dengan beberapa
siklus update.
Sebagai contoh : node A mendeteksi adanya kerusakan pada link yang
menghubungkannya dengan E. Pertama, A akan mengubah jaraknya ke E menjadi tak
hingga dan mengirimkan informasi tersebut ke B. Saat B tahu bahwa jalurnya ke E
melalui A (berjarak 2) tidak lagi bisa dipergunakan, ia juga akan mengubah jaraknya ke
E menjadi tak hingga. Namun demikian, saat update dari F tiba, B tahu bahwa F dapat
mencapai E dengan 2 hop, sehingga ia menyimpulkan bahwa E dapat dicapai melalui F
dengan jarak 3 dan tabel B kembali diperbaharui. Saat B mengirimkan update ke A, A
menyimpulkan bahwa E dapat dicapai melalui B dengan jarak 4, dan sistem akan
kembali stabil dengan kondisi yang baru.
Sayangnya, kejadian yang sedikit berbeda bisa menyebabkan jaringan tidak lagi
kembali stabil. Contoh : link dari B ke C rusak, maka B akan mengirimkan update
bahwa jaraknya dengan C adalah tak hingga. Saat D dan F mengirimkan update, masing-
masing menyatakan bahwa C masih dapat dicapainya dengan jarak 2. Misalkan
tepat setelah D menerima update dari B, ia juga menerima update dari F yang
menyebutkan bahwa F dapat mencapai C dengan 2 hop (update ini terkirim tepat
sebelum update dari B sampai), maka node D menyimpulkan bahwa ia akan dapat
mencapai C melalui F dengan jarak 3. Node D kemudian mengirimkan update ini ke
node B, yang kemudian akan menyimpulkan bahwa C dapat dicapai melalui D dengan
jarak 4. B akan mengirimkan update ke F, yang kemudian menyimpulkan bahwa C
masih dapat dicapai melalui B dengan jarak 5. Demikian seterusnya. Siklus ini akan
terhenti jika besaran jarak sudah melewati suatu angka yang sedemikian besar
sehingga dapat dikatakan sebagai tak hingga. Sementara itu, tidak ada satupun dari
node yang menyadari bahwa C tidak dapat diakses, dan jaringan tidak akan pernah
kembali stabil.
Ada beberapa solusi parsial untuk mengatasi hal ini. Satu teknik digunakan untuk
memutuskan routing loop, dikenal dengan istilah split horizon. Idenya adalah saat suatu
node mengirimkan update ke tetangganya, ia tidak akan pernah mengirimkan informasi
jalur yang didapat dari tetangganya tersebut. Sebagai contoh, jika D memiliki jalur
(C,2,B) dalam tabelnya, maka node D tahu bahwa dirinya pasti mendapat informasi jalur
tersebut dari B. Dengan demikian, sewaktu D mengirimkan update ke B, informasi
(C,2) tidak akan turut dikirimkannya. Ada variasi lain dari split horizon, yang dikenal
dengan nama split horizon with poison reverse. Dengan varian ini, D tetap mengirimkan
informasi jalur tersebut ke B, namun dengan tambahan informasi negatif untuk
menjamin bahwa B tidak akan menggunakan link- nya ke D untuk mencapai C.
Kelemahan dari kedua teknik tersebut adalah keduanya hanya dapat diterapkan untuk
routing loop yang terdiri dari 2 node. Untuk routing loop yang lebih besar diperlukan
‘pengorbanan’ yang lebih besar pula. Dari contoh diatas, saat D dan F menerima update
dari B maka keduanya akan menandai jalur ke C menjadi tidak dapat diakses dan
memulai hitung mundur (hold-down timer). Jika sebelum waktu habis ada update dari B
yang menginformasikan bahwa jalur ke C kembali dapat digunakan, maka D dan F akan
kembali mengaktifkan jalur ke C dan penghitungan mundur dihentikan. Demikian juga
jika yang diterima adalah update dari node tetangga dengan jarak yang lebih kecil dari
jarak semula, maka jalur akan kembali diaktifkan dengan arah dan jarak yang baru.
Sebaliknya, jika sebelum waktu habis ada update dari node tetangga yang menyatakan
bahwa C dapat dicapai melalui node tetangga tersebut dengan jarak yang lebih jauh dari
jarak semula, maka update akan diabaikan. Saat waktu habis, maka barulah C betul-
betul dianggap tidak dapat dicapai lagi. Pendekatan ini menunda terjadinya konvergensi.
Kecepatan dari konvergensi justru merupakan kunci keunggulan kelas protokol
routing yang lain : link state.
Link State
Asumsi awal pada metode link state routing sama dengan yang digunakan pada
distance vector. Tiap node diasumsikan dapat mengetahui status dan bobot setiap link
yang terhubung langsung ke tetangga terdekatnya. Tujuan akhir proses routing juga
sama : jalur terbaik dari setiap node ke node-node lainnya. Ide dibelakang link state
adalah sebagai berikut : tiap node tahu cara untuk mencapai node tetangga
terdekatnya, jika keseluruhan pengetahuan ini disebarkan ke semua node, maka setiap
node akan memiliki cukup pengetahuan tentang jaringan untuk menentukan jalurnya ke
setiap node yang lain. Tiap node akan memiliki cukup pengetahuan untuk membangun
‘peta’ jaringan secara lengkap. Dengan demikian inti dari metode link state adalah
mekanisme penyebaran informasi link state secara handal dan penghitungan
(penentuan) jalur atas dasar akumulasi pengetahuan tadi.
Reliable Flooding
Reliable flooding adalah proses untuk menjamin bahwa setiap node yang
menggunakan protokol routing ini akan mendapatkan salinan informasi link-state dari
seluruh node yang lain. ‘Flooding’ disini mengindikasikan bahwa setiap node akan
mengirimkan informasi link-state-nya ke semua node yang lain, dengan cara
mengirimkannya ke node tetangganya, yang kemudian akan diteruskan oleh node
tetangga tersebut melalui seluruh link yang terhubung kepadanya. Demikian seterusnya
hingga akhirnya informasi link state dari suatu node akan diterima oleh semua node
yang lain dalam jaringan.
Tiap node membentuk paket update yang dikenal dengan nama Link State
Packet (LSP), yang terdiri dari :
• Identitas dari node yang membangun LSP
• Daftar semua node tetangga yang terhubung langsung dengan node tersebut, lengkap
dengan bobot link yang menghubungkannya
• Nomor urut
• Time to live (TTL) dari paket LSP tersebut.
Dua item yang pertama digunakan pada perhitungan (penentuan) jalur. Dua item
berikutnya digunakan untuk menjamin kehandalan pengiriman paket ke semua node
yang lain (flooding). Kehandalan yang dimaksud disini meliputi jaminan bahwa tiap
node akan menerima LSP terbaru, karena mungkin ada lebih dari satu LSP dari satu
node yang berada dalam jaringan pada suatu saat (mungkin satu sama lain memuat
informasi yang saling bertentangan). Menjamin kehandalan flooding tidak semudah
yang dibayangkan. Bukti sejarang menunjukkan hal itu : versi awal dari routing link-
state yang digunakan di ARPANET justru menyebabkan macetnya jaringan pada
tahun 1981.
Cara kerja flooding adalah sebagai berikut. Saat suatu node A menerima salinan
LSP dari suatu node lain B, pertama kali yang dilakukannya adalah melihat apakah
dirinya telah memiliki informasi link-state dari node tersebut. Jika belum ada, maka LSP
tersebut akan disimpan. Jika ternyata sudah pernah ada, maka dilakukan pembandingan
nomor urutnya. Jika nomor urut LSP yang baru ternyata lebih besar daripada yang telah
diterima lebih dahulu, maka LSP yang baru akan disimpan menggantikan yang lama,
namun jika tidak lebih besar maka LSP yang baru diterima akan diabaikan. LSP yang
baru kemudian akan diteruskan ke semua tetangga dari A, kecuali node darimana LSP
tersebut berasal. Dengan demikian ada jaminan bahwa LSP yang diterima oleh semua
node adalah LSP yang terbaru.
Tiap node akan membuat LSP secara periodik. Tiap kali LSP dibuat, nomor
urutnya akan dinaikkan satu. Namun tidak seperti nomor urut yang digunakan pada
kebanyakan protokol, nomor urut LSP tidak bersifat siklik, sehingga ukuran field-nya
jug aharus cukup besar (misalnya : 64 bit). Jika node mati, maka saat kembali hidup
nomor urut akan kembali dimulai dari 0. Jika node tersebut mati dalam rentang waktu
cukup lama, maka semua LSP-nya akan mengalami time-out. Jika ternyata saat node
tersebut hidup kembali LSP-nya belum mengalami time out, maka ia akan menerima
LSP dari dirinya sendiri dengan nomor urut tertentu, nomor inilah yang dijadikan
acuan untuk menentukan nomor urut LSP berikutnya.
Dengan periode tertentu, nilai TTL dari LSP yang tersimpan pada tiap node
akan dikurangi. Penghapusan LSP yang sudah ‘tua’ dilakukan berdasarkan nilai TTL ini
(saat TTL = 0). Sebelum diteruskan, TTL suatu LSP juga akan dikurangi, dengan
demikian seluruh node akan menghapusnya dalam waktu yang bersamaan.
Penentuan jalur
Setelah menerima LSP dari semua done yang lain, suatu node akan mampu
membangun ‘peta’ topologi jaringan secara lengkap. Dengan ‘peta’ tersebut, node akan
mampu menentukan jalur terbaik ke setiap node lainnya. Perhitungan ini berdasarkan
pada algoritma yang sangat terkenal dalam teori graph : algoritma shorthest path dari
Dijkstra.
Mekanisme perhitungannya dapat dibayangkan sebagai berikut : node yang
telah mendapatkan LSP dari semua node yang lain akan membangun representasi grafis
dari topologi jaringan, dimana N melambangkan kumpulan node dalam graph, l(i,j)
mewakili bobot (non-negatif) dari link yang menghubungkan node i dan j ∈ N, l(i,j)
akan bernilai ∞ jika tidak ada link yang menghubungkan node i dan j. Pada deskripsi
berikut, s ∈ N mewakili node yang tengah mengeksekusi algoritma untuk mencari
jalur terpendek ke semua node lain dalam N. Algoritma juga memiliki dua variabel : M
yang mewakili kumpulan node yang telah diproses sampai sauatu waktu tertentu dan
C(n) yang menyimpan total bobot dari jalur antara s dengan n. Algoritma tersebut dapat
didefinisikan sebagai berikut :
M = {s}
untuk tiap n dalam N - {s}
C(n) = l(s,n)
selama N ≠ M
M = M ∪ {w}, dimana C(w) merupakan nilai minimum untuk semua w dalam (N - M)
Untuk tiap n dalam (N - M)
C(n) = MIN (C(n), C(w) + l(w,n))
Metric
Sampai saat ini, eksekusi algoritma routing berasumsi harga tiap link (metric) telah
diketahui. Pada bagian ini akan dipaparkan beberapa cara untuk menghitung harga link
yang telah terbukti efektif secara praktis. Satu contoh metode yang telah digunakan
sebelumnya (cukup masuk akal meski sangat sederhana) yakni dengan menganggap semua
link memiliki harga 1, sehingga jalur terbaik adalah jalur yang terdiri dari link dengan
jumlah paling sedikit. Pendekatan ini memiliki beberapa kelemahan. Pertama, tidak dapat
melakukan perbandingan link atas dasar latency. Dengan demikian, link satelit dengan
latency 250 ms akan tampak sama saja dengan link tetrestrial yang memiliki latency 1 ms.
Kedua, metode ini tidak dapat melakukan perbandingan link atas dasar kapasitas. Link 9,6
Kbps akan terlihat sama saja dengan link 100 Mbps. Ketiga, tidak dapat melakukan
perbandingan link atas dasar beban link. Masalah ketiga ini memang cukup sulit diatasi,
mengingat karakteristik beban link yang kompleks dan mungkin berubah dari waktu ke
waktu harus dapat diwakili oleh suatu besaran skalar (agar dapat dibandingkan).
Jaringan ARPANET dapat dikatakan sebagai ladang percobaan bagi sejumlah
metode perhitungan harga link ini. Jaringan ini juga tempat pembuktian keunggulan link-
state terhadap distance-vector dalam hal stabilitas. Versi awal ARPANET menggunakan
distance vector, sementara pada versi berikutnya digunakan link-state. Berikut akan
dipaparkan evolusi dari metrik yang digunakan dalam algoritma routing ARPANET.
Metrik yang pertama kali digunakan pada versi awal routing ARPANET adalah
jumlah paket yang berada dalam antrian, menunggu untuk dikirimkan pada tiap link (link
dengan 10 paket yang mengantri padanya akan diberi harga yang lebih besar dibanding
link dengan hanya 5 paket yang mengantri). Penggunan panjang antrian untuk menentukan
metrik ini tidak berhasil. Meski panjang antrian ini diharapkan dapat mewakili beban link,
namun pada kenyataannya justru pemilihan link lebih dipengaruhi oleh antrian terpendek,
bukannya tujuan paket. Lebih jauh lagi, metode ini tidak mempertimbangkan bandwidth
dan latency yang dimiliki link.
Versi kedua dari algoritma routing yang digunakan ARPANET (disebut ‘new routing
mechanism’) telah melibatkan faktor bandwidth dan latency, dengan menggunakan delay
sebagai besaran yang mewakili beban link (bukan lagi panjang antrian). Cara kerja
metode ini adalah sebagai berikut : setiap paket yang diterima akan ditandai (timestamp)
dengan waktu kedatangannya (ArrivalTime), waktu kepergiannya (DepartTime) juga akan
dicatat. Saat ACK (pada level link) diterima dari node di ujung lain, node tersebut akan
melakukan perhitungan delay untuk paket tersebut :
Delay = (DepartTime - ArrivalTime) + TransmissionTime + Latency
dimana TransmissionTime dan Latency ditetapkan secara statis pada tiap link untuk
mewakili bandwidth dan latency. DepartTime - ArrivalTime merupakan representasi
waktu paket berada dalam antrian menunggu transmisi (dipengaruhi oleh beban link). Jika
ACK tidak diterima dan tercapai timeout, maka DepartTime akan disesuaikan dengan
waktu retransmisi dari paket. Dalam kasus ini, DepartTime - ArrivalTime dipandang
sebagai besaran yang mewakili kehandalan link (semakin sering terjadi retransmisi,
semakin rendah tingkat kehandalan link). Akhirnya, bobot untuk tiap link diturunkan dari
rata-rata delay yang dialami oleh paket-paket yang dikirimkan melalui link tersebut.
Sebagaiana versi awalnya, metode ini juga memiliki beberapa kelemahan. Saat beban
link relatif rendah, metode ini bekerja dengan baik karena dua faktor yang ditetapkan
secara statis akan mendominasi delay. Namun pada beban link yang cukup tinggi, link
yang mengalami kongesti akan memiliki harga yang sangat tinggi. Hal ini mengakibatkan
trafik akan meninggalkan link tersebut (dan mencari alternatif link yang lain) sehingga link
akan kosong dan dengan segera harganya menurun dengan drastis. Penurunan harga ini
akan kembali menarik semua trafik untuk kembali menggunakan link tersebut. Demikian
seterusnya, sehingga jaringan tidak akan pernah mencapai kondisi stabil. Bahkan
sebagian besar link akan dibiarkan kosong, yang akan menurunkan tingkat utilitas jaringan
secara keseluruhan.
Masalah lain adalah rentang nilai harga link yang sangat besar. Sebagai contoh, link
9,6 Kbps yang bebannya sangat tinggi bisa saja akan tampak 127 kali lebih mahal
dibanding link 56 Kbps dengan beban sangat ringan. Ini berarti algoritma routing akan
memilih jalur dengan 126 hop dengan jalur 56 Kbps berbeban ringan dibanding 1 hop
dengan link 9,6 Kbps berbeban berat. Meski strategi menjauhkan trafik dari link yang
memiliki beban berat merupakan ide bagus, namun menjadikan link tersebut berharga
sangat besar (hingga trafik meninggalkannya) adalah satu hal yang terlalu berlebihan.
Penggunaan 126 hop pada kasus dimana sebetulnya 1 hop- pun dapat menyelesaikan
masalah dapat dianggap sebagai pemborosan sumber daya jaringan. Contoh lain : link
satelit 56 Kbps yang kosong dapat dianggap lebih mahal dibanding link terestrial 9,6 Kbps
yang juga dalam keadaan kosong, meski link satelit menjanjikan performansi lebih baik
untuk aplikasi yang membutuhkan bandwidth besar.
Pendekatan ketiga (disebut ‘revised ARPANET routing metric’) berusaha mengatasi
masalah tersebut. Perubahan mendasar yang dilakukan adalah
mempersempit rentang nilai metrik, turut memperhitungkan jenis link dan memperhalus
perubahan metrik sejalan waktu.
Penghalusan perubahan nilai metrik dilakukan dengan beberapa mekanisme.
Pertama, pengukuran delay ditransformasikan menjadi utilisasi link dan angka ini dirata-
ratakan dengan utilisasi terakhir yang diketahui untuk menekan perubahan yang tiba-
tiba. Kedua, ada batas yang tegas terhadap seberapa besar nilai metric boleh berubah
dari satu siklus perhitungan ke siklus berikutnya. Dengan memperhalus perubahan nilai
metrik ini, kecenderungan semua node untuk mengabaikan suatu jalur secara bersamaan
akan berkurang dengan drastis.
Pemampatan rentang dilakukan dengan melakukan perhitungan atas dasar utilitas
yang terukur, jenis dan kecepatan link menggunakan suatu fungsi seperti terlihat pada
Gambar 3.10. Patut diperhatikan bahwa :
• Link dengan beban tinggi tidak akan pernah berharga lebih dari tiga kali harganya
saat kosong
• Link yang paling mahal hanyalah tujuh kali harga link yang paling murah
• Link satelit berkecepatan tinggi lebih murah dibanding link terestrial
berkecepatan rendah
• Harga link merupakan fungsi dari utilitas link hanya pada beban tinggi yang moderat
Faktor-faktor diatas menjadikan suatu link dengan harga tertentu tidak akan pernah
terabaikan secara universal. Dengan harga maksimal berupa kelipatan tiga dari harga
terkecilnya, maka suatu link yang diabaikan pada pembentukan suatu jalur mungkin akan
menjadi pilihan terbaik pada pembentukan jalur yang lain. Bentuk grafik pada Gambar
3.10 didapat dari percobaan (trial-and-error) dan telah dipilih sedemikian rupa untuk
mendapatkan performansi terbaik.
Gambar 3.10 Grafik metrik routing revised ARPANET terhadap utilisasi link
Ada satu isu yang tersisa berkaitan dengan perhitungan bobot link : seberapa sering
suatu node harus melakukan perhitungan bobot linknya? Ada dua hal yang perlu
diperhatikan disini. Pertama, tidak ada perhitungan yang tidak membutuhkan waktu
proses. Apakah suatu node menghitung panjang antrian, delay atau utilisasi, yang
dihitung sebenarnya adalah nilai rata-rata sepanjang suatu rentang waktu tertentu.
Kedua, tidak setiap kali terjadi perubahan bobot link akan diikuti pengiriman update,
update hanya akan dikirimkan jika perubahan bobot melampaui duatu batas tertentu.
Tujuan Perancangan
Ada dua tantangan utama dalam perancangan perangkat keras switching. Yang
pertama adalah throughput –jumlah paket yang dapat diteruskan oleh switch tiap
detiknya–, yang kedua adalah skalabilitas –berapa banyak port input / output yang dapat
dihubungkan–. Sebelum lebih jauh membahas kedua tantangan tersebut, ada satu
terminologi yang perlu diperkenalkan. Switch biasanya dideskripsikan dengan jumlah
input dan output yang dimilikinya. Switch n x m (n by m) adalah switch yang memiliki
n buah input dan m buah output, biasanya n = m (terutama jika switch menghubungkan
link-link yang bersifat bidirectional). Switch biasanya juga menghubungkan link-link
dengan kecepatan yang sama, namun ada kalanya switch harus menghubungkan link-
link yang berbeda kecepatan.
Throughput
Mendefinisikan throughput dari switch ternyata tidak mudah. Secara intuitif,
karena switch memiliki n buah input dimana masing-masing input memiliki
kecepatan sn, maka throughput akan setara dengan total penjumlahan sn. Angka yang
didapat merupakan throughput maksimal yang dapat disediakan oleh switch, namun
pada kenyataannya tidak ada switch yang dapat mencapai performansi seperti itu.
Alasannya sederhana saja : misalkan pada suatu saat trafik yang datang dari seluruh
input harus diteruskan melalui satu output yang sama, selama bandwidth dari output
kurang dari total bandwidth input, maka sebagian dari trafik input terpaksa harus
mengantri atau bahkan dibuang karena keterbatasan buffer. Pada kasus dengan pola
trafik seperti itu, switch tidak akan dapat menyediakan throughput lebih besar
daripada kecepatan satu output port.
Hal pertama yang perlu diperhatikan dari contoh diatas adalah bahwa
throughput switch merupakan fungsi dari trafik yang akan diprosesnya. Salah satu
masalah yang dihadapi para perancang switch adalah mendapatkan model trafik yang
serupa dengan trafik aslinya. Ada banyak elemen dalam memodelkan trafik,
diantaranya: kapan suatu paket tiba di switch, output mana yang akan ditempuh dan
seberapa besar ukuran trafik tersebut.
Pemodelan trafik telah menjadi ilmu tersendiri dan banyak membantu dalam dunia
komunikasi telepon. Pemodelan itu memungkinkan perusahaan telepon untuk
merancang jaringannya dengan efisien sesuai dengan beban yang diramalkan. Hal ini
dapat dilakukan karena kecenderungan orang utnuk menggunakan telepon tidak
terlalu banyak berubah sejalan waktu : frekwensi
Fa
pemanggilan, rentang waktu terjadinya
percakapan, dan kecenderungan penggunaan
Sekolah T telepon pada hari-hari
om (dan waktu-waktu)
tertentu. Sebaliknya, pesatnya perkembangan komunikasi komputer, dimana aplikasi
sepeti World Wide Web dapat mengubah pola trafik dalam semalam, telah menjadikan
pemodelan trafik jaringan komputer lebih kompleks.
Disamping sulitnya mendapatkan model trafik, masalah yang harus dihadapi
dalam perancangan switch adalah contention. Contoh diatas (mengirimkan semua input
trafik ke satu output) mengilustrasikan masalah contention ini. Jenis contention seperti
ini boleh dibilang tidak terelakkan, mengingat trafik dari input tidak akan dapat
dilewatkan melalui output melebihi apa yang dapat dihantarkan oleh link yang
terhubung kepadanya. Sebagian besar rancangan switch juga berhubungan dengan
tingkat contention internal, dimana jumlah contention pada beban trafik yang berbeda
akan menentukan performansi dari switch.
Skalabilitas
Biasanya jumlah perangkat yang dibutuhkan untuk membangun suatu switch
merupakan fungsi dari jumlah input dan output. Masalahnya adalah : seberapa cepat
peningkatan harga perangkat terhadap peningkatan n? Sebagai contoh, rancangan switch
2
dimana harga perangkat meningkat setara dengan n dikatakan lebih skalabel dibanding
3
yang meningkat setara dengan n . Lebih jauh lagi, sebagian besar rancangan
switch terbentur pada jumlah maksimum input dan output, contohnya karena
keterbatasan panjang kabel untuk dapat beroperasi pada kecepatan penuh atau karena
telah melebihi batas penyebaran pada perangkat. Dengan demikian, skalabilitas
dapat diukur dengan laju peningkatan biaya dan ukuran maksimum switch yang
mungkin. Setidaknya ada dua pilihan pendekatan dalam merancang jaringan besar :
menggunakan beberapa switch dengan skala besar atau menggunakan banyak switch
berukuran kecil.
Fa
Sekolah T om
1
Port 1
Switch
2 1
Port 2
Fa
Sekolah T om
Gambar 3.12 Ilustrasi head-of-line-blocking
Switch Crossbar
Rancangan switch crossbar sangat sederhana, seperti terlihat pada Gambar 3.13.
Di sini, masalah contention hanya muncul pada port output. Setiap input pada switch
terhubung ke setiap output. Kompleksitas switch hanya terletak pada modul kecil di
depan tiap output. Modul ini melakukan dua fungsi :
1. mengenali paket yang memang ditujukan ke output tersebut (hal ini penting, mengingat
fabric meneruskan semua input ke setiap output)
2. menangani contention yang muncul saat beberapa paket dikirimkan ke output yang
sama pada satu saat
Secara umum, kompleksitas dari port output akan meningkat setara atau bahkan
lebih cepat dibanding jumlah input n. Karena switch juga memiliki n buah output, maka
kompleksitas dari switch secara keseluruhan setidaknya akan meningkat setara dengan
2
n . Namun demikian, ada rancangan yang cukup menarik berkaitan dengan port output
yang menjadikan kompleksitas hanya meningkat setara dengan n. Salah satu contohnya
adalah switch Knockout yang dirancang oleh Yeh, Hluchyj dan Acampora.
Switch Knockout
Sebetulnya switch Knockout tidak dapat dikatakan sebagai crossbar sempurna,
karena digunakan asumsi berkaitan dengan trafik untuk mereduksi kempleksitas port
output. Crossbar yang sesungguhnya harus dapat menangani situasi dimana setiap input
memiliki paket untuk diteruskan melalui suatu output pada waktu yang sama. Untuk
switch yang berukuran kecil, seperti yang terlihat pada Gambar 3.13, implementasinya
relatif mudah. Namun tidak demikian halnya untuk switch yang berukuran besar. Pada
skenario trafik yang masuk akal, kecenderungan adanya paket banyak input yang harus
diteruskan ke satu output pada saat yang bersamaan bisa dibilang sangat kecil.
Dengan demikian, tidak berlebihan jika ide yang melatarbelakangi pembangunan
switch adalah merancang port output yang dapat menerima l buah paket secara
simultan, dimana l < n. Nilai l haruslah dipilih sekecil mungkin utuk menekan biaya,
namun harus cukup besar sehingga kecenderungan kedatangan paket secara bersamaan
yang lebih besar dari l menjadi sangat kecil. Lagi-lagi masalah ini berkaitan dengan
pemodelan trafik; lebih mudah menentukan nilai l jika diasumsikan trafik yang masuk
ke setiap port input bersifat independen terhadap trafik yang masuk ke port yang lain.
Sayangnya asumsi tersebut tidak dapat berlaku umum, misalkan pada kasus dimana satu
port output terhubung ke suatu Web server yang cukup populer. Fenomena seperti ini,
dimana trafik terkumpul pada suatu port dari switch dikenal dengan istilah hot spot, dan
akan muncul pada lingkungan dimana banyak client berkomunikasi dengan satu server.
Port output dari switch Knockout terdiri dari tiga bagian, yakni :
• sekumpulan filter paket untuk mengenali apakah paket tersebut betul-betul
ditujukan ke port tersebut atau tidak
• bagian ‘knockout’, disebut juga concentrator, memilih l paket dari sejumlah paket
yang akan diteruskan melalui port output tersebut dan membuang sisanya (pada
kasus yang diharapkan sangat jarang terjadi)
• antrian yang pada satu saat hanya dapat menyimpan l buah paket sementara
menunggu ditransmisikan
Gambar 3.15 Skema shifter dan buffer pada switch knockout : a) Dua paket tiba; b)
Empat paket tiba, satu paket ditransmisikan; c) Tiga paket tiba, satu paket
ditransmisikan Shifter akan menempatkan paket yang datang pada buffer yang
berlainan dengan mekanisme round-robin. Dengan demikian isi setiap buffer tidak akan
pernah berbeda lebih dari satu dengan buffer yang lain. Pada saat yang bersamaan, paket
juga ditransmisikan (keluar dari buffer secara FIFO) dengan mekanisme urutan round-
robin juga sehingga urutan paket tetap dapat dipertahankan. Jika jumlah paket yang tiba
pada tiap siklus lebih dari sebuah pada rentang waktu tertentu, maka mungkin terjadi
kasus overflow pada buffer.
Untuk dapat melakukan estimasi kompleksitas switch dengan ukuran input n, dan
sekaligus mengevaluasi skalabilitasnya, digunakan nilai l yang tetap dan tidak terlalu
besar namun masih memberikan performansi yang bagus. Karena ukuran buffer
akan membesar setara dengan l, maka biayanya akan konstan. Kompleksitas
konsentrator untuk nilai n yang besar akan mendekati n x l, sehingga dapat dikatakan
bahwa kompleksitas akan membesar setara dengan n. Jumlah filter paket yang
dibutuhkan tiap port sama dengan n. Dengan demikian kompleksitas dari port output
(yang lebih banyak ditentukan oleh konsentrator) proporsional dengan n. Karena ada n
buah port output, maka total kompleksitas switch secara kasar akan sebanding dengan
2
n.
Kelemahan desain switch knockout ini terutama pada asumsi yang digunakan
(trafik yang masuk pada port input yang berbeda bersifat independen dan memiliki
2
kecenderungan untuk tersebar secara merata pada seluruh port output). Kompleksitas n
juga sebetulnya masih terlalu mahal. Berikutnya akan dipaparkan rancangan lain untuk
mengatasi masalah skalabilitas ini.
Self-routing fabric
Self-routing fabric adalah kelas dimana switch tersusun atas sejumlah elemen
switching kecil yang saling terhubung. Paket akan menempuh jalurnya sendiri
melalui fabric, tergantung pada urutan keputusan lokal yang diambil pada tiap elemen
switch kecil tersebut. Gamabr 3.16 menunjukkan salah satu tipe self-routing fabric yang
dikenal dengan nama banyan network (karena strukturnya mirip dengan pohon
beringin). Disebut network karena memang fabric-nya merupakan jaringan mini didalam
switch.
Prinsip umum dibalik self-routing fabric adalah tiap paket membawa cukup
informasi dalam headernya yang memunginkan elemen switching kecil untuk
mengambil keputusan secara lokal, tanpa harus berkonsultasi dengan elemen lain atau
sentral pengendali. Hal ini dilakukan dengan menambahkan header ekstra kepada paket
saat melewati port input (sebelum memasuki fabric) yang kemudian akan dibuang
kembali oleh port output sebelum ditransmisikan ke switch berikutnya. Header ini
dikenal dengan nama self-routing header. Pada switch yang mengunakan virtual circuit,
VCI yang terdapat pada paket yang tiba digunakan untuk mencari nomor port output
yang tepat, nomor port output ini kemudian akan ditempatkan pada self-routing header.
Pada contoh diatas, elemen-elemen switch pada kolom pertama akan melihat most
significant bit dari nomor port output yang termuat dalam self-routing header, kemudian
meneruskan paket sesuai dengan nilai bit tersebut (ke port atas jika bit bernilai 0 dan
kebawah jika bit bernilai 1). Elemen-elemen switch pada kolom kedua akan melihat bit
kedua (dari kiri), demikian seterusnya. Semua paket dapat diteruskan ke port output
yang tepat tanpa adanya tabrakan. Perlu diperhatikan bahwa port output atas dari
elemen switch pada kolom pertama akan menuju ke elemen switch separuh atas dari
kolom kedua, sementara port output bawah akan menuju ke elemen switch paruh bawah
dari kolom kedua. Dengan demikian, setelah melewati kolom pertama, jalur paket telah
separuh benar. Kolom kedua memperkecil kemungkinan pilihan sehingga jalur kini
telah tiga per empat benar. Kolom terakhir menuntaskan pencarian jalur.
Yang menarik di sini adalah penataan elemen switch untuk menghindari tabrakan.
Penataan itu sendiri melibatkan ‘perfect shuffle’ pada awal network. Terlihat
bahwa banyan network dengan n buah input memerlukan log2 n tahap, dengan
masing-masing tahap terdiri dari n/2 elemen switching. Dapat disimpulkan bahwa
kompleksitas switch jenis ini setara dengan n log2 n.
Perfect shuffle adalah fungsi permutasi khusus yang diajukan oleh Harold Stone (1971)
untuk aplikasi pemrosesan paralel. Pemetaan yang digunakan untuk mendapatkan
perfect shuffle adalah sebagai berikut :
Batcher Networks
Meskipun banyan network dapat menemukan jalur tanpa ada tabrakan, hal itu
dapat terjadi jika syarat keterurutan paket (berdasar nomor port output) terpenuhi. Untuk
mengeliminasi syarat ini, diperlukan ‘sesuatu’ yang ditambahkan sebelum banyan
network untuk mengurutkan terlebih dahulu paket berdasar nomor port outputnya.
Batcher network adalah network yang dirancang untuk melakukan hal seperti itu.
Jika Batcher network (seperti terlihat pada Gambar 3.18) diletakkan didepan banyan
network, maka akan didapat Batcher-banyan fabric yang memiliki sifat nonblocking
(tidak akan terjadi tabrakan) selama paket-paket ditujukan pada port output yang
berbeda-beda.
Gambar 3.18 Batcher network 8 x 8. Yang diarsir merupakan elemen yang akan
meneruskan paket dengan nomor lebih tinggi keatas.
Elemen switching yang terdapat pada Batcher network bekerja dengan cara
yang sangat berbeda dengan yang terdapat pada banyan network. Elemen switching
tersebut melakukan perbandingan menyeluruh terhadap angka pada self-routing header,
kemudian meneruskan paket yang memiliki angka lebih tinggi ke satu port output
sementara yang lebih rendah ke port output yang lain. Jika ternyata kedua nilai sama,
maka dilakukan pemilihan secara acak. Ada dua jenis elemen switch pada Batcher
network : elemen yang melakukan pengurutan ‘naik’ (meneruskan paket dengan nomor
lebih tinggi ke port sebelah atas) dan elemen yang melakukan pengurutan ‘turun’
(meneruskan paket dengan nomor lebih tinggi ke port sebelah bawah).
Batcher network sebetulnya mengimplementasikan algoritma merge-sort secara
rekursif dalam bentuk hardware. Untuk mendapat gambaran yang lebih jelas tentang
cara kerjanya, dapat diambil enam elemen switching di bagian kiri atas dari Gambar
3.18. Elemen dasar 2 x 2 dapat mengurutkan dua buah paket. Karena digunakan satu
elemen ‘naik’ dan satu elemen ‘turun’, maka akan didapat dua list terurut dengan
masing-masing dua anggota –satu terurut naik (ascending) dan satu lagi terurut turun
(descending)–. Dengan menggunakan dua kolom elemen ‘turun’ lagi, dapat dilakukan
penggabungan (merge) kedua list tersebut menjadi satu list terurut naik dengan empat
anggota. Sementara itu, enam elemen di bagian kiri bawah juga melakukan hal yang
serupa (dengan mengganti elemen ‘naik’ menjadi ‘turun’ dan sebaliknya). Akhirnya
akan menghasilkan list empat paket yang terurut turun. Tiga kolom yang terdiri atas
elemen ‘turun’ kemudian akan menggabungkan kedua list tersebut menjadi satu list
dengan delapan anggota. Ilustrasi contoh kasus tampak pada Gambar 3.19. Nomor
port output sengaja disajikan dalam desimal untuk memudahkan penelusuran jalur
masing-masing paket melewati elemen-elemen switching.
Jumlah tahapan pada Batcher network dengan n buah port input adalah log2 n x
(1+log2 n) / 2. Karena terdapat n / 2 buah elemen switching pada tiap tahap, maka
2
kompleksitas total akan setara dengan n log2 n.
Sunshine Switch
Dengan kombinasi batcher dan banyan network, tidak ada lagi syarat paket
input harus sudah dalam keadaan terurut naik berdasarkan nomor port output-nya. Namun
sebetulnya masih ada satu syarat lagi yang masih harus dipenuhi, yakni : tidak boleh
ada lebih dari satu paket yang ditujukan pada satu port output. Jika ada kasus duplikasi
nomor port output, maka terpaksa ada paket yang harus dibuang. Ada beberapa arsitektur
switch yang berupaya menutupi kelemahan Batcher-banyan network ini, salah satunya
adalah switch Sunshine.
Seperti terlihat pada Gambar 3.20, switch Sunshine melengkapi Batcher-banyan
network dengan tiga elemen, yakni : trap, selektor dan delay. Digunakan pula beberpa
banyan yang beroperasi secara paralel. Dengan digunakannya beberapa banyan, maka
dimungkinkan adanya beberapa paket melalui port output yang sama pada waktu
yang bersamaan. Seperti halnya switch Knockout, port output juga harus dapat menangani
l buah paket pada waktu yang bersamaan (jika digunakan l buah banyan secara paralel).
Jika ada lebih dari l paket yang ditujukan ke port output yang sama pada suatu siklus,
maka sejumlah paket lebih tersebut akan disirkulasi ulang melalui elemen delay dan
dimasukkan kembali ke switch pada siklus berikutnya. Ini berarti Batcher network harus
dapat menangani (n+k) paket, dimana n paket berasal dari input sementara k paket
merupakan paket yang mengalami sirkulasi ulang. Trap network mengidentifikasi
paket yang akan diteruskan ke banyan (maksimal l paket per port output) dan menandai
sisanya yang harus disirkulasi ulang. Selektor akan melihat, jika ada l buah paket yang
ditujukan ke port output yang sama maka masing- masing akan dikirim ke banyan yang
berbeda untuk menghindari tabrakan, sementara sisanya akan dikirim ke elemen delay.
Tiap paket memuat field prioritas yang nilainya akan dinaikkan satu setiap kali ia
mengalami sirkulasi ulang. Hal ini dilakukan untuk menjamin paket yang ‘lebih tua’ akan
memiliki peluang yang lebih besar untuk diteruskan ke banyan dibanding paket yang baru
datang, juga untuk menjamin keterurutan paket saat melewati switch (menjadi salah satu
syarat pada jaringan ATM).
Buffer
...
...
Input Mux memory Demux Output
Write Read
control control
Hal yang menarik dari switch shared memory adalah pada dasarnya switch ini
memiliki satu buffer yang besar. Cara kerjanya mirip dengan crossbar, hanya saja
lebih baik. Karena buffer digunakan bersama oleh seluruh port output, maka tingkat
utilitas buffer juga akan lebih baik. Crossbar yang menggunakan buffer pada masing-
masing port output akan membuang paket hanya jika kecepatan kedatangan paket
pada satu output melebihi kecepatan transmisinya, dan jika kasus tersebut
berlangsung terus menerus pada rentang waktu tertentu sehingga akhirnya buffer
tidak cukup menampungnya. Konsekuensinya, pada tiap output harus disediakan buffer
yang cukup besar untuk mengurangi kemungkinan terjadinya overflow. Namun
demikian, sangat kecil kemungkinannya terjadi overflow pada seluruh port output secara
bersamaan, sehingga akan sangat menguntungkan jika buffer yang sedang tidak
terpakai pada port lain dapat dipinjam untuk mengatasi overflow pada suatu port output.
Ide inilah yang mendasari penggunaan shared buffer memory.
Switch pada Gambar 3.21 hanya mampu menulis satu paket ke shared memory
pada satu saat. Ini berarti bus yang menghubungkan multiplexer ke memory harus dapat
berjalan n kali lebih cepat daripada masing-asing jalur input. Tiap kali ada paket
yang tiba, header-nya diteruskan ke write control. Setelah melihat nomor port tujuan
dari paket, write control akan mencari alamat buffer yang kosong, menuliskan paket ke
alamat tersebut dan menghubungkannya dengan linked-list yang berasosiasi dengan port
output yang dituju. Read control akan mengambil paket dari linked-list pada tiap port
output, mengirimkan paket ke port yang dituju melalui demultiplexer dan membebaskan
kembali lokasi memori yang baru saja dibaca. Faktor yang membatasi ukuran switch
jenis ini adalah kecepatan modul kontrol, karena modul kontrol ini tidak dapat
dipercepat hanya dengan menambah ukurannya.