Mendalami Arsitektur Router, Bagian II

March 7, 2009

Jadi di bagian I gue sudah menjelaskan bagaimana dasar dari proses switching paket di dalam router. Biasanya memang kita selalu melihat router hanya sebagai node yg memiliki beberapa interface, sehingga fokus kita adalah di komunikasi antar router untuk membuat routing table. Setelah routing table jadi kita mengasumsikan bahwa paket masuk ke satu interface dan keluar dari interface lain router sesuai dgn tujuan. Untuk kasus paket multicast, maka paket akan masuk ke satu interface dan keluar ke beberapa interface, sesuai dgn request untuk join multicast group tersebut. Bahkan jika ada fitur spt filter maupun Quality of Services (QoS), ketika kita melihat router hanya sbg sebuah node dgn interface ingress dan egress, biasanya kita berpikir bahwa fitur tadi dijalankan dgn arah ingress ke router atau egress dari router, dan fitur tsb pasti jalan spt magic.

Setelah membaca bagian I jelas sekarang bahwa ada hal-hal lain yg sama pentingnya dgn membangun routing table. Yg pertama adalah membangun forwarding table. Forwarding table ini berisi informasi tentang next hop tujuan dan juga next hop interface untuk setiap network tujuan, seperti halnya routing table, dgn tambahan informasi Layer 2 dari next hop. Paket harus dikirimkan keluar dari router dgn header Layer 2 yg baru sehingga sangat penting untuk melakukan proses re-write layer 2 di paket. Hal berikutnya yg penting adalah proses lookup, yaitu mencari entry network tujuan yg sesuai di forwarding table. Paket juga harus disimpan di suatu tempat sambil menunggu proses lookup selesai dilakukan. Kemudian paket harus dipindahkan ke lokasi yg berbeda (di router yg lama paket yg sebenarnya masih berada di lokasi memory yg sama, namun dgn pointer yg berbeda untuk membedakan kondisi paket sebelum lookup dan sesudah lookup dilakukan). Terakhir, penting juga untuk menjalankan fitur atau policy ke paket di dalam router. Sangat penting untuk mengerti hal-hal di atas, termasuk di komponen mana hal tersebut dilakukan.

Pertama-tama, mari kita semua mengerti konsep untuk memisahkan router menjadi dua plane, control plane dan forwarding plane. Sebenarnya ada yg ketiga yg disebut management plane, yg digunakan untuk berinteraksi dgn router, tapi mari kita fokus ke dua yg pertama saja. Control plane adalah hal-hal yg berhubungan dgn komunikasi antar router menggunakan routing protokol, untuk membuat routing table dan forwarding table, yg bisa digunakan untuk switching paket dari interface ingress ke egress. Proses switching paket antar interface yg berbeda itu yg disebut data atau forwarding plane.

Mari kita melihat gambar dari salah satu contoh next generation dan carrier-class router di bawah ini.

Arsitektur router modern menggunakan konsep modular dimana hal-hal yg berbeda dilakukan di lokasi yg berbeda oleh komponen yg berbeda juga. Ini sangat kontras dgn arsitektur sederhana di tulisan bagian pertama dimana hanya ada satu main board, central route processor dan memory, dan komunikasi bus dgn PCI antara network card ke processor. Route processor di modern router tetap otak utama dari keseluruhan sistem. Tapi fungsi dari switching paket termasuk proses lookup bisa dilakukan di hardware lain yg berbeda. Network card, atau biasa disebut line card, bisa memiliki processor sendiri untuk melakukan lookup dan hardware khusus yg digunakan untuk melakukan switching paket yg sebenarnya. Dan untuk menghubungkan komunikasi antar line card maupun central route processor bisa menggunakan switch fabric, yg dikenal dgn istilah backplane dari sebuah router. Konsep modular digunakan untuk mengatasi isu skalabilitas dan juga untuk menghindari konsep all-in-one dimana kegagalan satu module bisa menyebabkan kegagalan dari keseluruhan sistem, atau disebut single point of failure.

Jadi si central route processor sendiri sudah berupa line card sekarang dan masih tetap dibutuhkan untuk menjalankan fungsi control plane, yaitu berkomunikasi dgn router lain dgn protokol routing untuk membuat routing table dan forwarding table. Forwarding table ini bisa di push ke network processor di tiap line card. Dgn memiliki informasi ini, network processor di line card bisa melakukan lookup sendiri dan re-write informasi layer 2 ke paket. Untuk meningkatkan performance dalam melakukan switching, atau menjalankan fitur spt filter sebagai contoh, hardware khusus bisa digunakan yg di program hanya untuk menjalankan instruksi khusus, biasa disebut Application Specific Integrated Circuit (ASIC).

Gambar di bawah bisa menjelaskan bagaimana informasi untuk forwarding paket dibangun di central route processor untuk kemudian di push ke line card.

Route processor menggunakan protokol routing spt ISIS, OSPF dan BGP untuk membangun Routing Information Base (RIB) yg dikenal dgn nama routing table. Di next generation networks, sangat wajar untuk menggunakan bukan IP sbg informasi dalam melakukan forwarding paket, tapi menggunakan MPLS label. Jadi MPLS label untuk route atau prefix yg spefisik dikomunikasikan dan disetujui oleh para router di network, dgn menggunakan protokol untuk mendistribusikan label spt LDP, RSVP atau bahkan dgn BGP. Tentunya protokol untuk mendistribusikan label ini masih bergantung pada protokol routing agar para router bisa saling berkomunikasi. Dan routing table berikut database label-label digunakan untuk membuat Label Forwarding Information Base (LFIB), yg berisi next hop dari tujuan beserta MPLS label yg harus digunakan, untuk ditambah (dikenal dgn istilah label push) atau dibuang (dikenal dgn istilah label pop) dari paket, sebelum paket dikirim keluar di interface egress.

Baik forwarding table maupun label forwarding table bisa di push ke network processor di line card menggunakan Inter Process Communication (IPC). Jika semua paket yg datang harus diproses oleh network processor di line card, maka kita hanya memindahkan kemampuan memproses paket dari sistem tersentralisasi menjadi sistem terdistribusi. Lebih jauh lagi, network processor bisa membuat instruksi specific untuk menjelaskan hal apa yg harus dilakukan ketika ada paket yg datang ke line card, dan mem push instruksi ini ke hardware khusus seperti ASIC. ASIC bisa melakukan instruksi untuk memproses paket tidak hanya di layer 2, tapi juga di layer 3 dan layer 4 berikut fitur spt filter dll, dan ini bisa dipisahkan di ASIC yg berbeda untuk mendapat performance yg lebih baik lagi.

Sampai ke titik dimana informasi untuk mem forward paket dikirim ke line card dan ke hardware khusus, adalah bagian dari control plane. Melakukan proses switching oleh hardware atau ASIC dari satu line card ke line card lain, adalah bagian dari forwarding plane.

Carrier class router dari Cisco malah mengembangkan konsep modular ini menjadi lebih jauh lagi, dgn memperkenalkan konsel Modular Services Card (MSC). Jadi line card dipisahkan menjadi dua bagian: fisik dan otak. Yg berupa fisik, dinamakan PLIM – Physical Layer Integrated Module, berurusan hanya dgn Layer 1 di TCP/IP stack, termasuk memberikan kita port fisik untuk mencolokkan kabel. Dan MSC adalah si otak line card yg memproses lebih lanjut setelah PLIM mengkonversikan bits dan sinyal digital di kabel untuk menjadi paket. Tujuannya adalah untuk memberikan kelebihan dalam hal skalabilitas. Jadi bagian fisik bisa diganti atau di upgrade ke port yg kapasitasnya lebih besar misalnya, dan MSC nya masih bisa tetap sama. Demikian juga suatu ketika kapasitas MSC bisa diperbesar tanpa harus mencabuti bagian fisik dan kabel-kabel yg tercolok di port.

Mari melihat lebih dekat tentang bagaimana paket diproses di line card menggunakan konsep arsitektur MSC di atas. Ini adalah diskusi yg sangat menarik yg biasa disebut Life of a Packet.

Dari PLIM paket dikirimkan ke MSC melalui midplane (atau untuk mempermudah bisa saja kita membayangkan semua process ini terjadi di satu line card tanpa ada pemisahan PIM, midplane dan MSC). Kemudian paket diproses oleh Ingress Packet Engine, yg sudah memiliki informasi dari processor di line card untuk instruksi apa yg harus dilakukan kepada paket yg datang. Setelah diputuskan apakah paket akan dikirim ke line card yg lain atau ke central route processor (untuk kasus dimana paket dikirim ke IP address dari si router atau paket-paket untuk mengkontrol router, maka paket akan dikirim ke central route procesor) kemudian paket akan dikirim ke switch fabric atau backplane, dgn menggunakan header internal tambahan untuk memastikan hanya line card tujuan yg akan menerima paket ini. Untuk beberapa arsitektur router, paket yg melalui switch fabric harus distandarkan untuk memiliki besar yg sama. Hal ini karena untuk sebuah hardware untuk memproses paket dgn besar yg sama akan menjadi lebih mudah dan lebih cepat. Di arsitektur lain paket dikonversi menjadi format yg baru (spt cells dgn besar yg sama dan header yg baru) ketika paket itu melewati backplane. Jadi tentunya harus ada buffer atau queue untuk meletakan paket sebelum dikirimkan ke backplane. Backplane sendiri bisa berupa module atau line card yg didesign untuk menghubungkan semua line card yg lain, termasuk route processor. Kita akan mendiskusikan tentang backplane atau switch fabric di pembahasan berikutnya.

Dari switch fabric paket dikirimkan ke line card tujuan dan tentu diperlukan buffer yg lain di sana untuk tempat mengkonversikan kembali paket menjadi bentuk yg semula dgn besar paket yg sesuai aslinya. Kemudian ada egress packet engine yg bisa digunakan jika ada fitur atau hal lain yg perlu dilakukan di paket. Untuk beberapa kasus khusus, MPLS label bisa di push di sini. Untuk kasus umumnya, layer 2 re-write atau MPLS label di push di ingress engine, jadi di egress tidak perlu lagi ada proses lookup selain mungkin menjalankan fitur dgn arah egress. Dan untuk carrier-class router engine ingress maupun egress bisa ada di hardware yg sama maupun hardware yg berbeda untuk memberi performance yg tinggi. Sebelum paket dikirimkan keluar melalui interface fisik, harus ada queue atau buffer lain untuk tempat paket menunggu giliran sebelum dikirim ke port dan dikonversikan menjadi sinyal digital.

Ketika melihat skema fisik dari MSC seperti gambar di bawah, sangat mudah untuk melihat tiap komponen dan ada beberapa hardware berbeda yg digunakan untuk melakukan hal yg berbeda. Jalur untuk memforward paket di dalam line card pun bisa terlihat jelas.

Di arsitektur router yg lain, hardware yg memproses paket yg datang mungkin tidak bisa melakukan lookup dan harus menanyakan central route processor. Tapi line card ini sebenarnya mampu untuk mem forward paket langsung ke line card yg lain, jika sudah tahu tujuannya ke mana. Untuk melakukan ini, line card tidak perlu mengirimkan keseluruhan paket ke route processor, namun hanya meng copy layer 3 header dari paket dan itu yg dikirimkan ke route processor. Setelah route processor menjawab dan line card tahu line card tujuan, maka paket bisa dikirim langsung melalui switch fabric.

Ketika kita mendiskusikan switch fabric atau backplane, router lama dan kelas mid-range ke bawah mungkin masih menggunakan arsitektur bus seperti gambar di bawah. Jadi meskipun setiap linecard sudah punya processor sendiri untuk melakukan lookup sekalipun, tapi dgn backplane bus setiap paket yg dikirim oleh line card akan diterima oleh semua line card yg lain.

Bus menggunakan konsep yg sama spt teknologi Ethernet, dimana ketika ingress line card mengirim paket ke bus maka semua line card yg lain akan menerima. Tapi hanya switching engine atau egress line card tujuan yg akan memproses paket itu lebih lanjut. Dari sini bisa kelihatan kalo bottleneck atau limit dari performance switching paket ada di kapasitas bus backplane tsb.

Arsitektur yg lebih baik menggunakan konsep crossbar spt di bawah.

Dengan teknologi crossbar, setiap ingress line card bisa mengirim paket ke semua line card lain dalam satu waktu. Tapi karena egress line card hanya bisa menerima paket dari satu ingress line card dalam satu waktu, maka harus ada controller atau scheduler untuk memastikan hanya ada satu ingress line card yg berhubungan dgn egress line card. Controller bisa berupa bagian dari switch fabric atau bisa menjadi module yg terpisah untuk alasan skalabilitas dan memberikan redundancy jika salah satu module gagal.

Ada arsitektur router yg masih menggunakan kedua teknologi crossbar fabric dan bus. Bus masih digunakan untuk bisa berkomunikasi dgn line card yg lama. Jadi misalnya line card yg lama masih belum memiliki koneksi backplane yg baru, hanya punya bus. Line card baru walaupun sudah memiliki koneksi backplane yg baru tapi tetap harus menggunakan bus untuk bisa berkomunikasi ke line card lama tsb. Dan pada beberapa kasus, bus masih digunakan oleh line card untuk mengirimkan paket ke central route processor.

Teknologi switch fabric terbaru sudah sangat pintar dan bisa melakukan lookup, replikasi paket di dalam fabric, dan menyediakan kapasitas maksimum yg disebut line rate ke egress line card. Sebagai contoh jika setiap line card terhubung ke fabric dgn koneksi X Gbps, maka pada setiap waktu selama paket yg dikirim dari fabric ke egress line card adalah X Gbps atau kurang, traffic dari ingress ke egress akan terjamin untuk berada dalam kapasitas performance maximum dan tidak ada congestion walaupun paket itu datang dari beberapa ingress line card yg berbeda. Dan di carrier-class router biasanya kapasitas untuk menerima paket dari fabric itu dua kali lipat atau lebih dibandingkan kapasitas untuk mengirim paket ke fabric. Jadi jika line card mampu mengirim paket ke fabric dgn koneksi maksimum X Gbps, maka setiap line card akan mampu menerima 2 sampai 2.5X Gbps dari fabric, untuk mengakomodasi beberapa line card mengirimkan paket ke egress line card yg sama secara bersamaan.

Dengan menggunakan fabric tipe ini, harus ada bypass link antara ingress line card dan egress line card yg tidak melalui fabric. Tujuan bypass link ini bukan untuk mem forward paket, tapi biasanya digunakan oleh egress line card untuk memberi tahu ingress line card jika terjadi congestion. Sehingga ingress line card kemudian bisa memperlambat jumlah paket yg dikirimkan ke switch fabric.

Ada hal-hal lain yg harus didiskusikan ketika paket berada di dalam fabric. Seperti sudah gue sebutkan sebelumnya, paket itu sendiri bisa di standarisasi untuk menjadi cells yg memiliki ukuran yg fix (dgn cara melakukan fragmentasi jika paket lebih besar, atau menambahkan pad jika paket lebih kecil dari ukuran tsb). Proses switching paket di fabric bisa menjadi sangat cepat jika paket itu sudah dikonversikan menjadi format internal dgn ukuran yg seragam dan menggunakan internal header. Di carrier class router bisa ada beberapa langkah ketika memproses paket, bahkan ada proses lookup untuk memastikan bahwa paket akan dikirimkan hanya ke egress line card tujuan saja. Tentu ini adalah alasan mengapa internal header harus digunakan di dalam fabric, karena proses lookup di fabric tidak sama dgn lookup di ingress line card processor yg masih menggunakan IP atau MPLS label forwarding table. Jika fabric tidak melakukan lookup, maka ingress line card bisa menambahkan internal header, yg kemudian akan digunakan oleh controller di crossbar fabric untuk menghubungkan ingress line card dgn egress line card. Jadi internal header ini merupakan suatu overhead pada paket di dalam fabric.

Setelah membaca sampai ini, apakah masih merasa bahwa pengetahuan ttg proses switching paket di dalam router tidak bermanfaat? Jika iya, silahkan meneruskan membaca ke bagian ketiga di mana gue akan mencoba menjelaskan implikasi dari arsitektur hardware ke fitur dan aplikasi yg berjalan di atasnya.

Akhir dari bagian kedua.

Comments »

The URI to TrackBack this entry is: http://himawan.blogsome.com/2009/03/07/mendalami-arsitektur-router-bagian-ii/trackback/

No comments yet.

RSS feed for comments on this post.

Leave a comment

Line and paragraph breaks automatic, e-mail address never displayed, HTML allowed: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>