Jatuh Cinta Lagi

November 9, 2007

Router dulunya hanya sebuah hardware yg berfungi untuk menghubungkan dua network atau lebih, yang ditandai dengan IP subnet yg berbeda. Arsitekturnya pun sangat simple: minimum 2 network interface card, CPU untuk mem forward paket antar interface dgn cara melakukan lookup ke Arp dan Routing table, dan memory untuk menyimpan tabel-table tersebut. Jadi paket data di network cable terdeteksi oleh satu interface, device driver dari network card akan melakukan dekapsulasi level pertama yg mengubah sinyal elektrik di media kabel menjadi sinyal digital, kemudian CPU akan melakukan proses dekapsulasi tahap berikutnya sehingga paket tersebut header nya (yang berisi Layer 2: source-destination Mac Address dan Layer 3: source-destination IP address) bisa dibaca, dan berdasarkan Routing table (dan juga Arp table untuk proses berikutnya) yg disimpan di memory paket tadi kembali di enkapsulasi untuk kemudian dikirimkan ke media kabel melalui interface yg lain.

Mohon dicatat bahwa ini benar-benar helicopter view dari life of a packet di router, dgn penjelasan yg over simplified. Tapi intinya adalah: router jaman dulu itu sangat tergantung pada central processing di CPU dan data yg tersimpan di cental memory untuk bisa mem-forward paket data dari satu interface ke interface yg lain. Sehingga dulu ada yg bilang: mau router? Beli PC dgn NIC lebih dari 2, install open-source OS dan jalankan program routing. In fact, hampir semua vendor router membuat software untuk produknya berbasiskan open-source code yg tersedia untuk publik dan di awal pengembangan dilakukan di hardware yg banyak tersedia di publik juga (seperti x86 atau Sun hardware). Kemudian tentunya kode software dikembangkan untuk menjadi lebih spesifik dan hanya bisa dieksekusi di arsitektur hardware yg spesifik pula.

Sejalan dgn waktu, arsitektur router menjadi lebih berkembang. Fungsi CPU sudah mulai diringankan dgn tidak melakukan lookup untuk setiap paket. Jika paket pertama (yang masih diproses oleh CPU dgn cara melakukan lookup ke Routing table di memory) sudah diketahui interface tujuannya, switching table antar interface akan di buat di memory sehingga paket-paket berikutnya dgn tujuan yg sama akan di forward ke interface tujuan tanpa perlu menggangu central CPU lagi dan hanya berdasarkan informasi yg sudah ada di memory. Namun fungsi central CPU masih diperlukan untuk paket-paket dgn tujuan yg berbeda, yg belum ada informasinya di memory. Well, setelah paket pertama dari tujuan yg berbeda itu sudah diproses oleh CPU dan switching table nya sudah di copy ke memory, maka CPU kembali tidak terganggu dan tidak perlu melakukan proses lookup.

Router kemudian menjadi modular dimana CPU dan memory berada di suatu module khusus, sedangkan interface ada di module lain yg biasa di sebut line card. Fungsi CPU dan memory kemudian mulai di distribusikan ke line card, karena biasanya line card sudah memiliki chip khusus yg disebut ASIC, yg dulu belum sepintar central CPU namun sudah mampu melakukan lookup untuk melihat kemana paket harus di forward, dan juga memory local untuk menyimpan informasi yg diperlukan untuk melakukan switching antar interface atau antar line card. Penghubung antar line card, dan juga dari line card ke central CPU, sudah bukan melalui bus biasa seperti di PC tapi melalui backplane yg dinamakan switch fabric, suatu board dgn ASIC dan arsitektur yg spesifik dgn algoritma tertentu untuk memproses paket dan menjamin performance dari paket yg lewat di backplane. Namun fungsi central CPU masih diperlukan untuk membuat Routing table yg kemudian menjadi switching table di cental memory, yg kemudian informasi ini akan di copykan ke memory lokal di line card. Sehingga ASIC di line card bisa melakukan forwarding dari satu interface ke interface yg lain di line card tsb atau di line card module yg lain dgn melakukan lookup ke switching table yg sudah ada di local memory, dan tidak perlu menggangu central CPU lagi.
Jadi central CPU masih diperlukan untuk melakukan fungsi control plane, spt melakukan kalkulasi routing protocol dan membuat switching table, yg kemudian akan di copy ke local memory di line card untuk digunakan oleh ASIC dalam melakukan switching paket. Selain itu, central CPU masih diperlukan untuk manipulasi paket misalnya jika kita membuat Access Control List (ACL) untuk menentukan apakah paket boleh lewat atau tidak, manipulasi paket untuk mengimplementasi Quality of Service (QoS) dan lain-lain.

Router menjadi lebih modular lagi karena switch fabric, yg merupakan penghubung antar line card dan CPU module, kemudian menjadi satu module tersendiri juga. Jadi kalo dulu switch fabric itu berupa board di dalam chassis router, dimana semua modul terkoneksi ke board ini, sekarang boardnya sendiri menjadi suatu module dan komunikasi antar line card atau CPU module ke switch fabric module itu melalui konektor biasa yg disebut passive backplane (karena backplane ini tidak mempunyai algoritma apapun selain hanya menjadi konektor penghubung antara line card module dan CPU module ke switch fabric). Kemampuan ASIC di interface menjadi lebih tinggi selain hanya memproses paket dari satu interface ke interface lain, spt sudah bisa memproses ACL dan QoS tanpa perlu mengganggu central CPU. Sampai kini pun, central CPU masih diperlukan untuk fungsi control plane. Jadi semua fungsi routing protocol masih dijalankan oleh central CPU, untuk kemudian membuat switching table, yg kemudian di copy kan ke local memory di line card yg akan di gunakan oleh ASIC di setiap line card.

Apakah ini sudah menjadi model arsitektur yg ideal? Yah, ini arsitektur buat produk router high-end pada umumnya. Modular dgn CPU, line card, dan switch fabric yg berupa module yg berbeda (kadang-kadang ada module clocking yg berfunsi menjadi scheduler, utk mengatur siapa yg bisa mengakses switch fabric) dgn fungsi central CPU yg sudah didistribusikan ke line card. Tapi Cisco, sebagai market leader produk router, take it even more steps further, dengan mengenalkan Cisco Carrier Routing System (CRS-1) router berkonsep sangat modular. Bayangkan jika ada router dgn CPU dan line card module di chassis router tsb, tapi switch fabric ada di chassis yg berbeda! Yup, ini yg disebut multi-chassis router (atau multishelf system) dan antara chassis yg tidak memiliki switch fabric (disebut line card chassis) dengan chassis yg didesikasikan hanya mempunyai switch fabric module (disebut switch fabric chassis) dihubungkan dgn koneksi fiber external. Dan untuk produk high end router, hanya Cisco satu-satunya yg punya konsep arsitektur seperti ini. Tujuannya apa? Performance. Swich fabric module dipasang di satu chassis yg didedikasikan untuk itu, kemudian ada banyak router yg hanya memiliki central CPU dan line card, yg menggunakan switch fabric chassis yg sama. Kapasitas switching yg biasa disebut throughput dgn menggunakan arsitektur seperti ini bisa ditingkatkan dgn cara menambah switch fabric chassis. Dgn arsitektur seperti ini Cisco CRS-1 berhasil memecahkan Guiness Book of Record sbg router (atau multiple chassis router) dgn throughput tertinggi di dunia yaitu 92 terabits per second (tbps).

Hari ini gue dapat kesempatan untuk masuk ke salah satu restricted lab CRS-1 di salah satu gedung Cisco di San Jose. And there she was. Standing tall in front of me. Blowing air out to my face.

Gue jatuh cinta lagi.

Lab ini penuh dengan CRS-1 16-slot multishelf system. Jumlah Cisco CRS-1 routernya puluhan. Ada beberapa line card chassis yg terhubung dgn switch fabric chassis. Ada beberapa line card chassis lain yg terhubung dgn switch fabric chassis yg lain. Ada juga CRS-1 8-slot dan 4-slot yg belum men support sistem multi-chassis. Selain itu karena ini adalah restricted lab, gue juga sempet melihat prototype chassis yg digunakan untuk mengembangkan teknologi CRS-1.

Is this love? Is this love that I’m feeling?
Is this the love that I’ve been searching for?
Is this love or am I dreaming?
This must be love…

I guess I have found what I’ve been searching for.
This must be it. This must be the dream.
A dream worth fighting for.