Bagaimana cara prosesor menangani 10 Gigabit per detik atau lebih data rate?

11

Saya tidak tahu apakah itu tempat yang tepat untuk bertanya. Ini mungkin pertanyaan yang sangat konyol. Saya berasumsi bahwa beberapa prosesor harus memproses frame data untuk switching / routing. Prosesor modern memiliki kecepatan beberapa GHz. Bagaimana mereka menangani data dengan kecepatan yang lebih cepat daripada yang mereka operasikan?

Ibraheem Moosa
sumber

Jawaban:

16

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.

vk5tu
sumber
Jawaban yang bagus Bisakah Anda menjelaskan lebih lanjut the packet will then be exploded into cells to reduce latency?
Eddie
Dalam desain router Anda cukup mengirim paket dari satu kartu-line ke yang lain melalui cross-bar switching (atau sejenis bus antar-kartu). Tapi kemudian latensi terikat oleh panjang paket - Anda akan memiliki penundaan pengiriman paket lengkap saat paket dikirim melalui peralihan palang. Untuk menghindari hal itu, kita dapat memiliki beberapa tautan paralel ke peralihan palang dan membagi paket ke tautan tersebut. Maka latensi untuk paket besar jauh berkurang. Bagian dari paket split-up disebut 'sel'.
vk5tu
Saya tahu jawaban ini dari dua tahun yang lalu, tetapi TERIMA KASIH BANYAK. Saya memiliki pertanyaan yang sama dengan poster asli, dan menemukan jawaban Anda dalam pencarian saya. Ini SANGAT ditulis dengan baik dan menyeluruh. Terima kasih!
loneboat
0

Saat ini, hampir semua peralihan, dan banyak perutean, ditangani dalam perangkat keras, sehingga kecepatan prosesor ikut berperan sebagai pengecualian. Untuk hal-hal seperti server, ada kemungkinan prosesor tidak cukup cepat. Ini adalah kasus di masa lalu. Ketika ethernet 1 Gbps pertama kali keluar, bus yang digunakan di PC dan server hanya bisa menangani 400 Mbps.

Apa yang terjadi ketika prosesor tidak cukup cepat adalah lalu lintas akan turun. Banyak lalu lintas dapat dijatuhkan, karena itulah cara penanganan kemacetan, jika dilakukan dengan benar. RED (Random Early Detection) adalah metode yang digunakan untuk secara acak menjatuhkan paket dalam antrian untuk mencegah mereka dari mengisi dan mengepak paket. Ini dapat membantu mencegah sinkronisasi TCP. Banyak tetes terjadi pada sakelar, di mana beberapa port berkecepatan mungkin perlu mengirim ke port tunggal dengan kecepatan yang sama.

Ron Maupin
sumber
1
Ini membingungkan ingress discards dengan jalan keluar. Buang biasanya terjadi ketika cincin-buffer dari antarmuka ethernet terlalu penuh - seperti yang terjadi ketika CPU tidak dapat mengimbangi tingkat kedatangan data. Ring-buffer itu terlalu kecil untuk diimplementasikan.
vk5tu
@ vk5tu, Anda melewatkan poin saya bahwa lalu lintas akan turun setiap saat, apakah masuk atau keluar. Jika ada bagian dari sistem yang tidak dapat menangani jumlah lalu lintas, beberapa akan dijatuhkan, dan beberapa sengaja dibatalkan.
Ron Maupin