Anda sepenuhnya benar, jika kita harus menggunakan siklus instruksi per bit, maka 10Gbps tidak akan dapat diraih. Jadi hal pertama yang perlu diperhatikan adalah kita menangani satu kata per instruksi CPU - 64 bit.
Bahkan hal terburuk yang dapat kita lakukan untuk kinerja adalah memiliki akses CPU semua kata-kata paket. Dengan demikian fokus pada penanganan "zero-copy" paket. Beberapa tipu daya itu ada di antarmuka sendiri: mereka memiliki DMA ("Akses memori langsung") sehingga chip ethernet controller menyalin data ke dalam RAM; mereka menghitung checksum sehingga CPU tidak perlu mengakses semua kata dalam paket untuk melakukannya. Beberapa di antaranya ada dalam desain struktur data: kami berhati-hati untuk menyelaraskan paket buffer sehingga kami dapat memindahkannya dengan mengubah kepemilikan kepemilikan entri tabel halaman. Beberapa di antaranya hanya pemrograman hati-hati untuk memastikan bahwa paket data diakses paling sedikit, dan lebih disukai tidak diakses sama sekali sampai program aplikasi penerima.
Setelah kita melakukan semua ini, batasan selanjutnya adalah biaya penanganan paket satu per satu. Jadi ada banyak fitur "segmentasi offload" baik di ethernet controller dan di kernel sehingga kami menangani kelompok paket. Kami bahkan menunda mengambil data dari pengontrol ethernet sehingga grup ini lebih besar.
Akhirnya kami memiliki pintasan kasus khusus, seperti panggilan sendfile () kernel yang merupakan jalur cepat dari disk ke jaringan menggunakan jumlah pekerjaan minimal.
Kita bahkan dapat melakukan perutean kasus khusus (penerusan paket dari satu antarmuka ke antarmuka lainnya) menggunakan fitur perangkat keras dari kartu antarmuka jaringan dan memperlakukan bus PCI sebagai bus antar kartu daripada melibatkan CPU. Itu tidak dapat dilakukan dalam sistem operasi untuk tujuan umum, tetapi vendor seperti Intel menyediakan pustaka perangkat lunak untuk mengimplementasikan fitur tersebut pada pengontrol ethernet mereka.
Berganti dari CPU sama sekali, kita bahkan dapat membangun router tujuan khusus di mana semua tugas penerusan terjadi di perangkat keras. Karena bus PCI akan menjadi batasan, mereka menjalankan beberapa bus paralel; atau bahkan beberapa bus paralel ke beberapa rakitan sakelar palang paralel. Di salah satu ujung pasar switch ethernet kecil berbasis TCAM akan menjadi salah satu contoh; di ujung lain pasar Juniper M40 akan menjadi desain kanonik.
Switch yang khas akan mulai menerima paket, mencari alamat tujuan di TCAM, melampirkan tag dengan port-egress ke paket, dan kemudian DMA paket yang masih masuk ke controller port keluar itu. Perhatikan bahwa jika port output macet maka yang dapat dilakukan pada switch sederhana ini adalah membuang paket ingress. Dengan demikian, sakelar sederhana tidak membuat pilihan yang baik ketika tautan mengubah kecepatan dan beberapa antrian diperlukan. Tentu saja ada switch yang lebih canggih, di mana Anda membayar lebih.
Router tipikal akan menerima paket dan menahannya dalam antrian pendek. Alamat IP tujuan akan dilihat dalam RAM statis, paket kemudian akan diledakkan ke dalam sel untuk mengurangi latensi, dan setiap sel mengirim ke switch lintas-bar ke kartu keluar. Kartu itu akan menyusun kembali sel-sel menjadi sebuah paket, dan mengantri paket keluar dari antarmuka egress. Antrian pada antarmuka jalan keluar bisa jadi canggih.
the packet will then be exploded into cells to reduce latency
?