CCIE vs. CCDE

March 23, 2009

Barusan lulus ujian CCDE written. Gak belajar karena kesibukan project dan juga masalah pribadi. Gue cuman baca-baca beberapa networkers slides buat refresh dan langsung nekat ujian. Gak taunya lulus dgn score yg lumayan. Gue gak tau kalo bisa melakukan hal yg sama buat labnya nanti (baca: computer based exam dgn pertanyaan yg berbentuk scenario) tapi memang semua teknologi yg ditulis di blueprint sebenernya tidak ada yg baru. Hanya mungkin perlu lebih mendalami implikasi apa dari suatu protokol atau beberapa protokol sekaligus jika dijalankan di satu topologi dgn requirement tertentu.

Mana yg lebih baik: CCIE atau CCDE?

Bagaimana kalo spt ini: ambil CCIE dulu, trus cari pengalaman inplementasi dan design di real world network utk berbagai tipe project, scenario, customer, requirements, baru kemudian ambil CCDE. Bisa-bisa ntar ambil CCDE lab cuman langsung ujian tanpa belajar :)

Silahkan baca argumen gue selengkapnya di sini. Lagi males dan gak ada waktu buat nerjemahin. Selamat memilih, dan selamat belajar.

Mendalami Arsitektur Router, Bagian III

March 8, 2009

Di dua bagian sebelumnya kita sudah mendiskusikan banyak hal tentang arsitektur router. Apa yg harus kita lakukan sekarang? Mari kita melihat fitur dan aplikasi yg berkaitan dgn arsitektur hardware yg sudah kita diskusikan sebelumnya. Gue gak punya lagi gambar-gambar yg bisa ditemui di google untuk menjelaskan topik ini. Dan tentunya gue tidak boleh menggunakan materi dari internal dokumen perusahaan. Jadi biarkan bagian ini menjadi tulisan tanpa gambar sama sekali.

Berikut adalah beberapa contoh fitur dan aplikasi yg harus dimiliki oleh modern dan next generation router:

High Availability (HA) and Fast Convergence
Router pasti gagal suatu ketika. Kegagalan mungkin terjadi di modul route processor, di power supply, switch fabric, line card, atau di keseluruhan chassis. Poin utamanya adalah bukan di cara menghindari kegagalan, tapi bagaimana caranya mengatasi kegagalan tersebut dgn cara meminimalkan waktu yg diperlukan untuk mengarahkan traffic ke modul atau path yg lain.

Buat yg masih suka melihat network sbg suatu koleksi router atau node yg terkoneksi satu sama lain, kegagalan bisa terjadi di link antar node atau di node itu sendiri. Untuk kedua kasus ini, vendor router sudah lama mengenalkan konsep Fast Convergence (FC) seperti IGP FC dan MPLS Traffic Engineering Fast Re-Route (FRR) untuk mengurangi waktu yg diperlukan konvergensi network menjadi minimal. Kunci utamanya adalah kemampuan mendeteksi kegagalan secepat mungkin. Jika node-node tadi terhubung secara langsung, maka kita bisa menggunakan Loss of Signal (LoS) yg terjadi di fisik dari link untuk memberi tahu protokol di layer atas spt IGP. Jika node terkoneksi bukan secara langsung, misal ada layer 2 switch di tengah atau yg lain spt DWDM network, maka suatu node bisa menggunakan fitur Bidirectional Forwarding Detection (BFD) yg mengirimkan paket hello untuk mengetahui status dari node sebelahnya.

Ketika hardware gagal, kita kemungkinan akan melihat paket yg hilang (packet loss) dari network traffic selama beberapa waktu. Dalam banyak kasus ini tidak bisa dihindari dan yg bisa kita lakukan hanya meminimalkan jumlah packet loss dgn cara mereduksi waktu yg diperlukan network untuk meraih konvergensi. Untuk router yg memiliki router processor lebih dari satu, yg di set untuk menyediakan redudancy, fitur Non-Stop Forwarding (NSF) bisa digunakan selama waktu peralihan (switch over) dari primary route processor ke secondary route processor, sebelum secondary bisa mengambil alih sepenuhnya. NSF memberikan transparansi ke level tertentu, karena ketika satu node gagal dia bisa memberi tahu node lain yg terkoneksi bahwa dia akan gagal :) tapi membuat janji bahwa dia akan kembali lagi online (dgn menggunakan secondary route processor) jadi tolong para node yg lain jgn mem-flush routes yg ada di routing table mereka dan tetap mem forward traffic ke node yg gagal tadi.

Node yg gagal itu sendiri harus menggunakan konsep modular spt dijelaskan di tulisan bagian-bagian sebelumnya. Jadi forwarding plane harus dilakukan di lokasi lain selain di route processor, misal di line card. Sebelum terjadi kegagalan, router harus menjalankan fitur Stateful Switchover (SSO) untuk memastikan terjadi sinkronisasi antara primary route processor, secondary route processor, switch fabric dan line card. Selama switch over, sambil menunggu proses initialisasi secondary route processor sebelum bisa mengambil alih, forwarding paket masih bisa dilakukan di line card dgn menggunakan kondisi terakhir di line card forwarding table yg masih terupdate sampai di saat terjadi kegagalan. Jadi kalo node yg gagal masih bisa mem forward paket, meskipun dgn menggunakan forwarding table terakhir sebelum kegagalan, dan node-node lain yg terkoneksi masih mau untuk tetap mem forward paket ke node yg gagal tadi karena sebelumnya sudah diberitahu kalo node itu akan kembali online lagi, maka tidak seharusnya kita melihat ada packet loss sama sekali. Nantinya fitur SSO/NSF ini harus bisa men sinkronisasikan forwarding table ke status terakhir ketika secondary route processor sudah mengambil alih dan node yg gagal sudah berfungsi kembali.

Konsep baru yg sedang sering dibicarakan adalah fitur Non Stop Router (NSR). NSR diharapkan bisa memberi tranparansi penuh kepada node yg lain ketika terjadi kegagalan di satu node. Jika pada NSF meskipun node yg lain masih mau mem forward paket ke node yg gagal sampai jangka waktu yg disetujui, tapi hubungan IGP sudah dinyatakan berhenti. Sedangkan dgn NSR hubungan IGP tetap dipertahankan seolah-olah node yg gagal yg sedang melakukan switch over masih berfungsi seperti biasa.

Jika kita kembali ke diskusi design dan arsitektur hardware, bisa terlihat bahwa komponen utama untuk bisa menyediakan HA dan FC adalah kemampuan secondary route processor untuk selalu sinkron dgn primary route processor, fabric dan line card. Jika ini tidak bisa tercapai maka kita akan melihat packet loss selama proses switch over. Dan tentunya kita semua mengeri bahwa kegagalan di line card maupun fabric, ketika traffic sedang melewatinya, akan menyebabkan packet loss walaupun kita menjalankan fitur HA apa saja. Dan dgn konsep switch fabric yg modular, kita harus memiliki beberapa modul dan jika terjadi kegagalan pada satu modul tidak akan mengurangi kapasitas forwarding paket dari keseluruhan switch fabric.

Quality of Services

Quality of Services (QoS) fitur untuk bisa memberikan perlakuan yg berbeda terhadap paket adalah kebutuhan utama ketika terjadi congestion di network. Yang menjadi pertanyaan, di mana sebenarnya congestion bisa terjadi?

Jika kita menggunakan arsitektur carrier class router di tulisan bagian kedua sebagai referensi, terlihat bahwa congestion bisa terjadi di komponen yg berbeda:
- Egress queue, tempat queue di egress line card sebelum interface fisik: ketika menunggu paket untuk dikirimkan ke media fisik, karena di media fisiknya sendiri sudah terjadi congestion
- Fabric queue, queue untuk menerima paket dari switch fabric di egress line card: karena harus melakukan normalisasi dari paket misalnya kalau paket dikonversi ke cell dgn ukuran yg sama maka harus dikembalikan ke format dan ukuran aslinya. Atau bisa jadi karena di egress queue sudah terjadi congestion maka queue ini juga terkena dampaknya
- Ingress queue, queue sebelum mengirim paket ke switch fabric di ingress line card: sebagai konsekuensi terjadinya congestion di fabric queue atau di fabric, maka queue inipun bisa mengalami congestion

Congestion bisa terjadi di dalam switch fabric itu sendiri. Tapi biasanya untuk kelas carrier-class router design switch fabric sudah dibuat dgn kapasitas yg sangat besar untuk bisa mengakomodasi jika chassis router tadi penuh dgn line card. Kecuali jika switch fabric terdiri dari beberapa modul dan ada modul yg gagal sehingga mengurangi total kapasitas secara keseluruhan.

Jadi kunci utamanya di sini adalah kita harus bisa memberikan QoS atau perlakuan yg berbeda ke paket di berbagai titik di dalam router. Misal, jika di port fisik terjadi congestion maka kita harus bisa membuat paket dgn prioritas tinggi di egress queue untuk dikirimkan terlebih dahulu ke media network. Sama halnya dgn fabric queue. Dan bahkan di dalam fabric sendiri kita harus bisa memberikan prioritas kepada paket ketika terjadi congestion di fabric queue, atau congestion di dalam fabric itu sendiri. Dan ketika terjadi congestion di egress queue, harus ada mekanisme untuk memberi tahu ke fabric queue, yg akan memberi tahu ingress queue untuk memperlambat jumlah paket yg dikirim ke fabric. Mekanisme ini dikenal dgn nama back pressure, dan komunikasi antara fabric queue ke ingress queue bisa dilakukan di bypass link, seperti dijelakan di tulisan bagian kedua. Fabric biasanya hanya mem forward paket dgn satu arah, dari ingress ke egress, dan tidak sebaliknya. Memperlambat jumlah paket yg dikirim ke fabric sebenarnya dilakukan oleh ingress packet engine, karena di sana paket dgn prioritas rendah bisa di drop, sehingga paket yg dikirim ke ingress queue menjadi berkurang.

Sekarang jelas bahwa kita harus menjalankan fitur QoS yg tepat di lokasi yg tepat juga di dalam router. Policing, misalnya, biasa dilakukan di ingress packet engine. Egress queue bisa menggunakan shaping atau mekanisme queuing ataupun congestion avoidance. Fabric queue mungkin hanya perlu memberi tahu ingress queue ketika terjadi congestion di egress line card.

Btw, penandaan paket utk QoS yg biasa disebut marking ketika paket berada di dalam router biasanya diturunkan dari marking yg dilakukan di luar router ke paket dgn menggunakan nilai seperti CoS, DSCP atau EXP. Dan ketika paket berada di dalam router maka yg digunakan adalah internal marking, yg kemudian digunakan oleh fitur QoS di setiap komponen. Adalah tugas dari ingress line card untuk mengkonversi QoS marking dari luar menjadi internal marking.

Satu hal lain yg penting dari fitur QoS adalah kemampuan untuk mensupport QoS dgn model hirarki. Pada network yg biasa, paket yg datang ke line card mungkin hanya punya satu tag atau penanda paket dgn QoS marking yg harus dilakukan ke paket tsb misalnya MPLS EXP bit, atau CoS dan DSCP di IP network. Jadi hanya ada satu perlakuan QoS yg bisa dilakukan ke tipe paket yg memiliki marking yg sama. Tapi bagaimana jika ada paket yg memiliki beberapa tag, dan diperlukan untuk memberikan perlakuan yg berbeda berdasarkan tag yg berbeda-beda tsb? Misal di network Carrier Ethernet di mana suatu paket bisa datang dgn membawa dua 802.1q tag, yg paling atas disebut S-tag untuk mengindentifikasi dari aggregation router mana paket itu datang, dan yg kedua disebut C-tag yg digunakan untuk membedakan VLAN dari customer (ini biasa disebut teknologi Q-in-Q). Kita mungkin ingin memberi perlakukan QoS yg berbeda, jadi di satu hal ingin melakukan QoS untuk semua paket yg memiliki S-tag yg sama, tapi di lain hal kita juga ingin membedakan jika paket datang dgn C-tag yg berbeda atau dari customer yg berbeda. Ini berarti router (dan line card) harus mensupport model QoS secara hirarki, dimana QoS main class akan mempengaruhi semua paket dan kita bisa membuar QoS child class yg spesifik untuk setiap customer.

Multicast
Untuk sebuah network yg berisi beberapa node yg saling terkoneksi, traffic multicast berarti satu paket datang dari satu sumber atau source dan direplikasikan ke beberapa node lain tergantung dari request untuk join multicast group tsb. Sekarang saatnya kita untuk melihat lebih dalam dan bertanya: siapa yg melakukan proses replikasi paket di dalam router?

Paket multicast bisa dibedakan dgn cara melihat tujuan IP address yg merupakan multicast group address. Di dalam router replikasi paket bisa dilakukan di ingress line card, disebut ingress replication, atau di egress line card, disebut egress replication. Dgn menggunakan multicast control plane protokol seperti PIM, ingress line card mengetahui egress line card tujuan untuk setiap multicast group address. Contoh ada dua port di ingress line card, dan multicast paket (S,G) diterima di satu port. Dari lookup di ingress packet engine atau network processor bisa diketahui yg tertarik dgn multicast group itu dan menjadi tujuan adalah port lain di ingress line card yg sama dan juga line card yg lain. Ingress line card bisa melakukan ingress replication untuk memperbanyak paket dan mengirimkannya ke port yg berada di line card yg sama, dan juga ke line card yg lain melalui backplane atau switch fabric.

Jika kita selalu melakukan ingress replication ada isu performance yg bisa terjadi. Ambil contoh ada multicast traffic yg diterima oleh ingress line card dgn rate sebesar X Gbps. Dan ada 10 ports di engress line card yg tertarik untuk join multicast group itu. Jika kita melakukan ingress replication make ingress line card harus menperbanyak setiap multicast paket menjadi 10 kali, yg berarti total mutlicast traffic rate yg harus dikirimkan ke fabric menjadi 10 X Gbps. Untuk skenario spt ini tentu lebih baik menggunakan egress replication dimana ingress line card hanya perlu mengirim satu paket ke tiap egress line card yg tertarik. Dan jika ada beberapa port di egress line card itu yg tertarik utk join multicast group yg sama, maka replikasi bisa dilakukan oleh si egress line card utk mengirim paket ke semua port tadi. Jadi egress replication dalam hal ini digunakan untuk menghindari pengiriman multicast traffic yg tinggi oleh ingress line card ke switch fabric.

Di carrier-class router, switch fabric bahkan jauh lebih pintar sehingga bisa melakukan replikasi paket multicast di dalam fabric. Sehingga ingress line card hanya perlu mengirim satu paket saja ke fabric, kemudian fabric lah yg akan mereplikasi paket dan mengirimkan nya ke egress line card yg tertarik, kemudian egress line card bisa melakukan replikasi lagi jika ada beberapa port di line card yg sama yg tertarik ke multicast group itu.

Performance and Scalability
Setelah membaca sampai sini, harusnya kita semua sudah mulai selalu menanyakan ketika melihat suatu fitur atau protokol: apakah itu dilakukan di software atau di hardware? Apakah central CPU yg melakukannya atau di distribusikan ke line card? Apakah dilakukan di ingress line card atau egress? Jika iya, bagus, akhirnya sudah mulai kelihatan apa manfaat untuk mengetahui ini semua.

Sebelum melanjutkan gue mau menjelaskan secara singkat satu komponen penting lagi di hardware untuk forwarding plane, yaitu Ternary Content Addressable Memory (TCAM). Intinya sih TCAM ini adalah high speed memory yg digunakan untuk menyimpan data-data forwarding table atau fitur lain seperti access control list, misalnya, sehingga router bisa melakukan switching di hardware dgn performance tinggi. Masih ingat konsep forwarding table di push dari central processor ke line card, untuk kemudian dari line card processor ke hardware? TCAM digunakan untuk menyimpan informasi tsb. Jadi sekarang kita tahu bahwa harus ada memory yg cukup untuk menyimpan semua informasi itu, dgn kata lain TCAM merupakan salah satu yg membatasi forwarding path. Jika route processor mem push data lebih banyak dari yg TCAM bisa tangani, maka kita akan berada di kondisi yg tidak konsisten antara route processor dan line card. Sehingga meskipun route processor tahu apa yg harus dilakukan ke paket, tapi hardware bisa jadi tidak memiliki data tsb dan akan men drop paket yg lewat itu.

Dengan melihat arsitektur modular dari suatu next generation router, jelas sekarang jika kita ingin mendapat performance non-blocking atau line rate switching paket maka kita harus memastikan setiap komponen di forwarding path untuk mendukung performance line rate. Ini berarti jika kita mau mem forward X Gbps traffic tanpa ada congestion, maka tiap komponen dari ingress processor dan queue di ingress line card, kapasitas fabric, fabric queue, egress processor dan egress queue di line card harus mampu memproses X Gbps atau lebih. Jadi jika kita ingin tahu di mana terjadi bottleneck di dalam router, periksa kapasitas dan kemampuan memproses paket di tiap komponen. Jika kita tahu kemampuan dari ingress line card ke fabric hanya X Gbps, tapi kita memiliki beberapa port di line card itu dgn total kapasitas lebih dari X, ini berarti kita melakukan sesuatu yg disebut over subscription. Dan dengan mengetahui dimana terjadinya congestion maka kita bisa menjalankan fitur QoS yg tepat di komponen yg tepat juga. Misalnya, jika terjadi congestion seperti di atas maka penggunaan QoS egress queue tidak akan membantu karena masalahnya adalah di queue ke switch fabric.

Mungkin ada yg bertanya, mengapa kita harus memikirkan kapasitas dan performance dari route processor, jika kita tahu kemampuan router yg sebenarnya adalah di forwarding plane yg berarti ada di line card? Karena kita masih tetap membutuhkan route processor untuk menjalankan fungsi control plane. Kita butuh CPU yg bagus untuk bisa memproses banyaknya paket control dan routes dari IGP dan BGP. Kita masih tetap butuh memory yg besar di route processor karena ini adalah tempat menyimpan informasi yg diterima dari router lain, yg kemudian baru bisa di push ke line card. Kita juga masih memerlukan flash disk atau storage lainnya yg cukup untuk menyimpan image dari router software beserta file-file lain seperti logging dan crash dump.

NGN Multi-Service Features and Application
Sangat wajar di next generation network untuk membawa tipe servis dan aplikasi yg berbeda-beda. Aplikasi yg paling seri digunakan selain multicast untuk IPTV, adalah MPLS L3VPN untuk customer bisnis, Internet, L2VPN point-to-point atau multipoint dgn VPLS dan lain-lain. Kompleksitas menjadi bertambah ketika kita harus menggabungkan dan menjalankan beberapa fitur secara bersamaan.

Sebagai contoh, jika kita mempunyai network yg menjalankan teknologi MPLS, maka penambahan label atau imposition terjadi di ingress line card setelah lookup. Tapi bagaimana jika kita menjalankan fitur lain seperti salah satu tipe L2VPN yg bisa dijalankan di software atau di central route processor? Ini berarti kita membutuhkan label imposition untuk dilakukan di egress line card.

Dan bagaimana jika line card harus melakukan lookup beberapa kali untuk paket yg sama? Misalnya, jika kita harus membuang dua label MPLS sekaligus di router MPLS terakhir jika fitur Penultimate Hop Popping (PHP) tidak digunakan di MPLS L3VPN network. Biasanya ini dilakukan supaya router MPLS terakhir itu tetap mendapat EXP bit di MPLS label teratas untuk QoS. Lookup pertama yg harus dilakukan adalah dgn melihat tag MPLS teratas. Kemudian lookup berikutnya dilakukan untuk melihat MPLS VPN tag supaya bisa diasosiasikan dgn VRF. Kemudian setelah kedua MPLS tag tadi dibuang, router masih harus melakukan lookup lagi di IP forwarding table untuk menentukan ke egress interface mana paket harus dikirim. Melakukan lookup beberapa kali utk paket yg sama ini memperkenalkan kita akan konsep recirculation, dimana paket akan di loop di dalam ingress line card. Jadi setelah lookup yg pertama paket tidak dikirim ke fabric, tapi akan mendapat informasi layer 2 yg baru dan di re-write namun dikirimkan kembali ke line card yg sama seolah-olah ini adalah paket berikutnya yg harus diproses.

Multicast VPN bisa memberikan kita tantangan yg lain. Untuk sekedar menyimpulkan, dgn mengetahui bagaimana protokol dan fitur bekerja, dan digabungkan dgn pengetahuan tentang arsitektur hardware berikut komponen apa yg melakukan hal tertentu, kita bisa mencoba melihat masalah-masalah apa yg mungkin timbul pada saat suatu design di implementasikan. Dan kita mungkin sudah bisa memikirkan apa yg harus kita lakukan untuk mengatasinya.

Jujur saja, gue sudah sangat sulit untuk mendiskusikan hal ini secara lebih detil, karena berbagai alasan. Pertama, karena sekarang sudah jam 4 pagi. Dan gue belum tidur selama 2 hari untuk menulis Trilogi ini sambil mengerjakan hal yg lain juga. Apakah gue pernah bilang betapa berterima kasihnya gue kepada mereka yg menemukan Red Bull? Tapi untuk sekarang ini, minuman energi spt apa juga tidak akan bisa membuat gue tetap bangun.

Yang kedua, walaupun gue masih mau menulis lebih banyak tentang topik ini tapi kemungkinan sulit untuk bicara lebih detil tanpa mendiskusikan beberapa informasi internal dari perusahaan gue, yg tidak boleh gue lakukan. Well, kita lihat saja nanti. Mungkin gue akan dapet ide baru setelah tidur yg benar.

Selamat malam.
Akhir dari trilogi tulisan.

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.

Mendalami Arsitektur Router, Bagian I

March 6, 2009

Waktu gue masih muda ceile heheh gue sering melihat router hanya sebagai “black box” atau “node”. Maksudnya, gue dulu tidak tertarik untuk melihat proses switching paket di dalam router itu sendiri dan lebih fokus ke protokol komunikasi dan fitur yg dijalankan antar router. Sebenernya mungkin bukan tidak tertarik. Tapi kalo tidak bekerja di perusahaan yg membuat router, memang bisa kita mendapat informasi yg sangat mendetil tentang ini? Paling tidak sekarang gue punya kesempatan untuk mendalami arsitektur router secara lebih detil.

Dan memang sebenernya pengetahuan tentang proses di dalam router tidak selalu dibutuhkan dalam kehidupan network engineer sehari-hari. Bahkan para CCIE sekalipun bisa jadi hanya melihat router sbg box yg memiliki banyak interface, yg berfungsi mem forward paket ke router berikutnya berdasarkan routing table yg dibangun secara dynamic maupun static. Maka biasanya kita lebih memberi fokus ke komunikasi antar router untuk membangun routing table itu ketimbang proses switching paket dari satu interface ke interface lain di dalam router. Sebagai contoh di OSPF, diskusi tentang LSA, database, algoritma SPF dll bisa sangat membingungkan, terutama jika kita harus melakukan redistribusi dgn protokol IGP yg lain atau BGP dan sebagainya. Sehingga yg penting itu adalah kita bisa melihat routes atau prefix tujuan di routing table, dan jika tidak ada filter atau policy yg lain, biasanya kita mengasumsikan paket akan di proses oleh si black box dan di forward ke box berikutnya dan seterusnya. Kemudian kita akan berurusan dgn fitur lain maupun aplikasi yg dijalankan di atas routing, misalnya MPLS, Traffic Engineering, VPN dll.

Jadi buat kebanyakan orang mungkin sudah cukup untuk mengatakan proses switching paket di dalam router adalah dari interface input, biasa disebut ingress, ke interface output atau egress. Mungkin ketika belajar CCIE kita akan mendalami sedikit untuk mengerti urutan dari implementasi beberapa fitur ketika dijalankan secara bersamaan. Misal, apakah NAT duluan atau Access Control List? Bagaimana dgn Policy Based Routing yg bisa membuat routing table diabaikan? Dan sebagainya. Tapi kita tidak pernah benar-benar melihat komponen apa saja di dalam router dan fungsi mereka dalam mem forward paket.

Mengapa penting untuk mengerti proses switching packet internal?
Buat gue pribadi, untuk mengerti keterbatasan dari implementasi protokol dan fitur karena hardware. Dan gue pikir ini penting buat setiap network designer. Kita bisa saja membangun network design berdasarkan data sheet. Jadi kita bisa merekomendasikan jumlah dan tipe hardware untuk core router, aggregation, access dst. Kemudian kita bisa merekomendasikan protokol dan fitur apa yg harus dijalankan, lengkap dgn konfigurasinya yg kita ambil dari Configuration Guide di website vendor router. Kenyataannya, walaupun untuk protokol itu ada standar internasional spt IEEE maupun RFC, tapi implementasi tiap vendor bisa berbeda karena pengertian masing-masing terhadap standar itu. Bisa jadi juga karena vendor menemukan metoda sendiri ketika mengikuti standar. Dan untuk beberapa fitur, atau bagaimana suatu protokol di implementasikan, sangat tergantung dari arsitektur hardware router. Jadi setelah network yg kita design selesai dibangun dan sudah jalan, mungkin baru kita mulai melihat adanya limitasi di performance atau isu dgn skalabilitas ketika jumlah traffic di network tinggi maupun ketika ingin mengembangkan design tersebut.

Gambar di atas bisa digunakan untuk memahami proses switching paket yg sangat sederhana. Paket datang dari media network dan kabel tentunya dgn Layer 3 dan Layer 2 dari standar TCP/IP stack. Interface processor di router mampu untuk mengambil paket tsb, memeriksa header Layer 2 sekaligus membuang header tsb, dan mengirimkan paket tadi ke route processor utk diproses lebih lanjut. Sambil menunggu route processor melakukan lookup atau pencarian di routing table (dan forwarding table) tentunya paket itu harus disimpan di suatu buffer atau queue. Setelah next hop dari tujuan si paket ditemukan di table, maka route processor sekarang tahu ke interface mana paket harus dikirimkan. Kemudian paket dapat dipindahkan ke output queue, tempat untuk menunggu sebelum paket bisa dikirimkan ke media network, dan paket akan di re-write atau mendapat layer 2 header yg baru yg berisi informasi untuk next hop berikutnya, kemudian paket keluar dari router melalui interface. Input queue atau output queue ini bisa virtual, jadi si paket sebenarnya berada di memory fisik yg sama dan tidak pernah berpindah. Tapi dgn membuat dua kondisi yg berbeda ketika paket berada di input queue (sebelum dilakukan lookup) dan ketika sesudah berada di output (setelah lookup dan tahu paket harus dikirim ke interface yg mana), maka router bisa menjalankan fitur atau melakukan perlakuan yg berbeda terhadap si paket di dua kondisi tersebut.

Jadi kata kuncinya adalah: Layer 3 dan layer 2 header, routing table dan forwarding table, lookup, perpindahan packet ke lokasi atau queue yg berbeda, output queue, layer 2 re-write.

Mari kita melihat sekali lagi dgn lebih detil. Ini adalah gambar dari buku Inside Cisco IOS Architecture karangan Vijay Bollapragrada, untuk proses switching paket yg sederhana yg disebut process switching.

Ketika interface processor menerima paket dari network media di input interface atau ingress, paket tsb harus disimpan di buffer atau memory (1) dan di saat yg bersamaan harus meng-interrupt main processor (2) untuk memberi tahu ada paket yg harus diproses. Buku ini fokus ke arsitektur software, maka dijelaskan kalo processor akan memanggil proses yg disebut ip_input di Cisco (3) untuk melakukan lookup di routing dan forwarding table. Lookup ini menghasilkan ke interface output atau egress mana paket harus dikirmkan (4). Processor kemudian melakukan layer 2 re-write atau memberi layer 2 header baru ke paket (5) dan memindahkan paket tadi untuk diproses oleh processor di interface egress (6), sehingga akhirnya paket keluar lagi ke network media. Step 7 hanya menjelaskan bahwa main processor akan diberi tahu kalau paket sudah dikirimkan keluar, sehingga memory yg digunakan untuk menyimpan paket bisa dibebaskan dan counter di interface bisa dinaikkan sesuai dgn jumlah paket yg keluar.

Gue harus mengakui kalo gue tidak akan bisa menjelaskan sebagus Vijay (dan pengarang lainnya), jadi gue menyarankan untuk membaca buku ini buat yg masih penasaran. Tapi poin utama gue disini adalah untuk menekankan ada hal-hal lain yg harus dilakukan selain lookup di routing table, yaitu memindahkan paket itu sendiri dari interface ingress ke egress, re-write layer 2 header ke paket dll yg akan menjadi penting dalam diskusi berikutnya.

Jadi mengapa penting untuk mengerti proses internal untuk switching paket di dalam router? Biasanya kita memang selalu fokus ke proses interaksi antar router dgn protokol routing untuk memastikan routing table bisa dibangun. Setelah table tsb jadi, proses lookup Layer 3 itu sendiri dapat dilakukan dgn sangat cepat. Untuk setiap paket yg datang kita harus melakukan pencarian di database yg berisi daftar network tujuan yg diketahui dgn interface egress yg berhubungan. Proses lookup atau pencarian bisa dilakukan sgt cepat terutama karena vendor spt Cisco sudah mengembangkan mekanisme dan algoritma sehingga perbandingannya tidak perlu satu-satu di daftar dari atas sampai bawah. Dgn menggunakan Cisco Express Forwarding (CEF), input dari routing table akan menjadi dasar pembuatan struktur data mtrie seperti digambarkan di bawah. Dgn melakukan proses lookup seperti di gambar, ketika entry ditemukan maka akan ada pointer ke table lain yg disebut adjacency table, yg berisi informasi dari Layer 2 untuk next hop tujuan.

Gue tidak mau terlalu detil mendiskusikan masalah lookup di CEF ini, karena ada satu buku berjudul sama yg khusus didedikasikan untuk itu. Dan gue mau mendiskusikan lebih ke arah arsitektur router hardware ketimbang algoritma CEF, jadi gue sarankan untuk membaca buku Cisco Express Forwarding tersebut dan juga buku Vijay yg tadi.

Sekarang mari bicara tentang proses perpindahan paket dari interface ingress ke egress. Seperti sudah dijelaskan sebelumnya, paket bisa disimpan di central memory selama menunggu proses lookup dilakukan. Jadi interface ingress bisa mengirimkan paket ke sana, dan kemudian egress bisa mengambil paket tsb dari tempat yg sama. Dgn prinsip spt ini terlihat bahwa keterbatasan atau bottleneck dari si proses ada di performance central memory, dan juga kemampuannya untuk melayani beberapa request dari interface processor yg berbeda secara bersamaan.

Untuk meningkatkan performance memory, penggunaan local memory di interface bisa dilakukan. Jadi paket akan disimpan di local memory interface ingress, kemudian di copy ke central memory melalui komunikasi bus yg bisa diakses interface mana saja, dan kemudian egress tujuan akan meng-copy paket tsb ke local memory nya. Mungkin timbul pertanyaan, mengapa dari ingress local memory tidak langsung dikirimkan ke egress local memory? Tunggu dulu. Ini bisa saja dilakukan tapi berarti si interface processor di ingress harus lebih pintar dan melakukan proses lookup sendiri untuk menentukan ke interface egress mana paket harus dikirimkan. Ini akan gue diskusikan di bagian berikutnya.

Ketika kita membuka penutup router lama utk kelas mid-range atau menengah, kemungkinan kita akan melihat sesuatu yg mirip spt gambar di bawah. Main board adalah komponen dasar tempat meletakan semua komponen lain untuk saling dihubungkan. Ada central atau main route processor, central memory, network card untuk interface keluar, PCI bus untuk komunikasi dari network card ke route processor, dan komponen lain spt flash memory tempat menyimpan software image si router, boot ROM untuk menyimpan firmware atau program kecil yg digunakan untuk booting router sebelum software image bisa dijalankan, dan sebagainya.

Balik lagi ke kata kunci: Layer 3 dan layer 2 header ada di dalam paket. Input queue atau buffer bisa berada di local memory ingress network card atau di central memory. Routing table dan forwarding table dibangun oleh route processor dgn menggunakan protokol routing untuk berkomunikasi dgn router-router lain. Layer 3 lookup (dan juga proses pencarian informasi untuk layer 2 next hop tujuan) dilakukan oleh route processor dgn menggunakan algoritma yg membandingkan tujuan si paket dgn daftar di routing table dan forwarding table. Proses perpindahan paket antara lokasi atau queue yg berbeda, bisa berarti paket dari local memory ingress network card di copy ke central memory menggunakan PCI atau komunikasi bus, untuk kemudian di copy oleh engress network card ke local memory nya. Output queue bisa ada di local memory egress network card atau central memory. Layer 2 re-write untuk memberi header layer 2 yg baru ke paket dilakukan oleh route processor sebelum paket bisa dikirimkan keluar router. Fitur-fitur spt filter ataupun NAT dilakukan oleh route processor. Menjalankan fitur di interface ingress atau egress bisa berarti route processor akan menjalankan fitur ke paket untuk kondisi sebelum lookup dilakukan dan sesudah lookup dilakukan, ketika interface egress sudah diketahui.

Apakah gambar yg terakhir mengingatkan kita akan sesuatu? Ya, gambar itu mirip sekali dgn gambar skema dan komponen dari sebuah PC! Ini adalah alasan mengapa beberapa orang yg berbakat bisa membuat software router mereka sendiri, untuk dijalankan oleh PC normal, menambahkan beberapa network card, dan meng-klaim bahwa router bikinan mereka bisa mengalahkan router bikinan vendor yg dijalankan di hardware khusus.

Pendapat gue tentang ini: tergantung. Jika kita membandingkan router bikinan di atas PC tadi dgn router lama di kelas mid-range, ini bisa saja benar. Karena hampir semua hal dilakukan oleh cetral processor dan memory, seperti halnya PC, sehingga yg harus kita lakukan adalah membuat software router yg mampu melakukan lookup dan switching paket, dan melakukan optimisasi untuk memastikan resource tsb digunakan dgn lebih baik.

Tapi bagaimana dgn fitur-fitur baru di next generation network? Fitur-fitur tsb sangat kompleks dan membutuhkan kerja sama team, termasuk juga non-teknis untuk membuat keputusan bagaimana suatu protokol dan fitur harus diimplementasikan meskipun sudah ada standar. Dan di bagian kedua gue akan menjelaskan apa yg vendor sudah lakukan untuk membuat router modern atau next generation router. Karena tentunya tantangannya bukan lagi melakukan switching paket dari interface ingress ke egress, tapi bagaimana melakukan itu secara cepat. Dan ini harus dilakukan secara konsisten untuk paket dgn tipe yg berbeda-beda, dgn besar paket yg berbeda, dgn jumlah yg sangat besar untuk mengakomodasi besarnya traffic di network sekarang ini. Kemudian tantangan berikutnya adalah bagaimana untuk menjalankan beberapa fitur yg harus dilakukan di hardware, sbg contoh bagaimana memberikan perlakuan yg berbeda ke paket di interface egress berdasarkan prioritas untuk dikirimkan ke network media. Atau ketika proses re-write layer 2 di paket harus dilakukan di hardware supaya bisa mendapat performance yg maximum.

Jika sudah membaca sejauh ini dan merasa informasi yg dibutuhkan sudah cukup dalam kerjaan sehari-hari, dan merasa lebih penting untuk berfokus ke komunikasi antar router, atau protokol dan fitur yg harus dijalankan di beberapa router, maka silahkan untuk tetap melihat sebuah router itu sbg black box atau node dgn banyak interface untuk paket masuk dan keluar. Dan tidak perlu untuk membaca bagian berikutnya dimana gue akan mendiskusikan dgn lebih detil bagaimana proses switching paket di dalam paket bekerja.

Akhir dari bagian pertama.