Mengapa router perangkat keras berkinerja lebih baik daripada router Linux dengan spesifikasi yang lebih baik (RAM & CPU)?

44

Saya memiliki minimal CentOS 6.3, 64 bit yang bertindak sebagai gateway dengan 4 NIC (1 Gbps), masing-masing terikat bersama satu untuk lalu lintas publik dan lainnya untuk pribadi, yang melakukan NATing. Ini memiliki 6 GB RAM dan 4 core logis. Kami telah menggunakan ini selama dua tahun terakhir tanpa masalah.

Saya tidak memiliki pengalaman dengan router perangkat keras, tetapi saya telah mendengar bahwa mereka memiliki lebih sedikit RAM dan CPU dan menggunakan flash disk. Bagaimana sebuah kotak dengan konfigurasi perangkat keras yang rendah bekerja lebih baik (seperti dalam, menangani lebih banyak koneksi bersamaan) daripada mesin dengan lebih banyak RAM dan CPU?

Apa faktor pembatasnya, selain iOS yang menggunakan metode berbeda untuk menangani ini?

Blue Gene
sumber
5
Implementasi dalam Perangkat Keras lebih cepat daripada firmware lebih cepat daripada perangkat lunak untuk solusi yang sama.
mdpc
3
"Spesifikasi yang lebih baik" yang Anda sebutkan tidak relevan untuk pekerjaan yang dihadapi. Ada properti lain yang sebenarnya penting.
ndim
Ok, jadi ... dari apa yang Anda tulis, haruskah saya berasumsi bahwa Centos Anda adalah mesin virtual? Selain untuk optimasi jaringan khusus untuk mesin virtual, baik pada hypervisor dan di sisi tamu, mesin virtual umumnya dikenal tidak baik dalam peran semacam ini ... untuk penggunaan sebagai router / firewall, bare metal selalu disarankan!
dirajam
Apakah Anda benar-benar merutekan lalu lintas 1Gbps seperti yang disarankan oleh konfigurasi Anda? Anda mungkin menggunakan dumptruck untuk memindahkan sekop penuh pasir. 6GB RAM dan 4 core pada dasarnya tidak akan pernah disentuh untuk router, Anda bisa menghemat listrik dan ruang rak dengan menggunakan mesin Intel Atom kecil untuk melakukan pekerjaan ini.
Bert

Jawaban:

64

ASIC .

Alih-alih menggunakan CPU tujuan umum dan perangkat lunak khusus tugas, Anda dapat melewati perangkat lunak dan membuat silikon menangani tugas secara langsung.

Perangkat keras jaringan berkinerja tinggi menggunakan ASIC, bukan perangkat lunak untuk tugas-tugas yang berat secara komputasional (tetapi relatif sederhana) dari sesuatu seperti membandingkan alamat IP dengan tabel perutean internet yang sangat besar, memeriksa tabel CAM untuk keputusan pengalihan, atau memeriksa paket terhadap ACL . Ini membuat perbedaan besar dalam kecepatan operasi-operasi yang peka terhadap waktu, memberikan keuntungan yang signifikan dibanding CPU untuk keperluan umum.

Shane Madden
sumber
1
sementara saya setuju dengan shane, saya akan memilih iptables yang berjalan pada server generik di atas alat setiap hari. di perusahaan saya, iptables yang berjalan di fedora lebih cepat, lebih fleksibel, lebih mudah dikonfigurasikan, lebih sedikit pajak pada cpu dan memori, lebih cepat untuk boot, dan jauh lebih murah daripada cisco asa kami.
rvh
@ rvh: untuk firewall atau hanya routing?
mveroone
2
dan secara keseluruhan, 'kecepatan' adalah istilah yang cukup longgar di sini. Saya yakin ada banyak situasi di mana PC masih bisa melakukan operasi 'secepat' sebagai HW, atau mungkin memiliki durasi konstan yang lebih lama daripada HW. Tapi itu benar-benar turun ke stabilitas dan 'bang for your buck'- Anda masih membeli lebih sedikit RAM / CPU dengan alat, tetapi mendapatkan lebih banyak dari itu, dan hanya melakukan apa yang diperlukan agar Anda mendapatkan stabilitas
Colin Godsey
Jawaban ini salah karena penonaktifan. Hanya meneriakkan "ASIC" juga agak naif karena sebagian besar router yang melakukan NAT menggunakan CPU tujuan umum, kecuali jika kita akan mencapai kinerja ekstrem. Juga sebenarnya hardware-NAT-router memiliki batasan yang lebih kuat pada jumlah koneksi bersamaan. Apa yang dialami OP adalah kesalahan konfigurasi dan penggunaan sistem operasi yang tidak sesuai dengan tugas.
dipadatkan
@dualed most routers that do NAT use general purpose CPUsYa, itu pernyataan yang benar, tetapi tidak tahu fakta bahwa banyak dari perangkat itu membongkar operasi tertentu ke chip khusus (seperti membaca jawaban lengkap saya di atas memperjelas). Jangan berpikir NAT dan pelacakan koneksi (yang, saya setuju, tidak terjadi di ASIC di perangkat modern), pikirkan tabel routing dan beralih pembongkaran.
Shane Madden
12

Router berdedikasi tinggi dapat mengungguli PC dengan CPU yang lebih cepat dan lebih banyak RAM karena dapat melakukan lebih banyak routing dalam perangkat keras.

Itu alasan yang sama switch Ethernet Gigabit $ 60 dapat mengungguli PC $ 2.000 dengan 4 kartu GigE dua port yang berfungsi sebagai switch Ethernet. Saklar dibangun dari bawah ke atas menjadi sakelar.

David Schwartz
sumber
3
Dan karena router khusus berjalan pada flash disk, ada lebih sedikit bagian bergerak yang gagal pada waktu yang tidak tepat.
cpt_fink
3
Saya tidak begitu yakin Anda benar. Saya telah menciptakan perlindungan anti-DDOS yang sangat mendasar untuk perusahaan tempat saya bekerja berdasarkan netmap ( info.iet.unipi.it/~luigi/netmap ) dan kinerjanya sangat baik bahkan pada perangkat keras normal (benar-benar penuh 1Gb / dtk atau 11M paket / detik). Ada juga versi openwitch untuk netmap di situs itu yang dapat meneruskan paket 3M / detik pada perangkat keras "normal", saya tidak tahu ada saklar murah ($ 500) yang bisa melakukannya, tapi saya mungkin salah.
XzKto
2
@XzKto Sakelar GigE 5 port murah ($ 60) dapat meneruskan paket di antara semua kombinasi port dengan kecepatan kawat penuh. Mereka biasanya menggunakan palang penuh, non-blocking.
David Schwartz
@XzKto Apa yang dimaksud David, tidak seperti PC yang akan menangani "hingga antarmuka sendiri throughput" kecepatan, switch tidak jika untuk setiap kombinasi port-to-port. Anda dapat meminta host1 berbicara dengan host2, dan 3 hingga 4, dan setiap koneksi pada dupleks penuh & throughput maksimum . Anda tidak bisa mengalahkan itu. (dan untuk lebih banyak uang, lebih banyak port, bahkan lebih mudah untuk melihat mengapa lebih cepat). Dan untuk router, jenisnya hampir sama: perangkat keras akan dapat mengubah rute lebih cepat daripada perangkat lunak, karena dapat mengubah rute segera setelah memiliki informasi yang cukup (router linux Anda akan melakukannya di setiap lapisan, tetapi untuk sampai di sana akan lebih lambat)
Olivier Dulac
11

"Selain iOS"?

IOS membuat hampir semua perbedaan. CentOS adalah sistem operasi serba guna. Ini dirancang untuk berkinerja cukup baik di bawah skenario yang sangat luas, menggunakan beragam konfigurasi perangkat keras. IOS di sisi lain sangat baik disetel untuk menangani hanya jenis beban kerja yang Anda harapkan dari sepotong peralatan jaringan, menggunakan jenis perangkat keras yang sangat spesifik yang akan Anda temukan di perlengkapan Cisco.

Mengetahui dengan pasti perangkat keras yang Anda gunakan untuk pemrograman akan sangat membantu Anda dalam hal kinerja vs kompatibilitas.

Ryan Ries
sumber
3
+1. Tambahkan ke fakta bahwa Cisco memiliki sumber daya teknik dan pengetahuan untuk mengganti perangkat lunak dengan perangkat keras saat diperlukan. Berarti, jika operasi tertentu lebih lambat daripada yang mereka inginkan dalam perangkat lunak, mereka dapat melakukan upaya dalam rekayasa ASIC, menambahkan instruksi ke unit pemrosesan yang ada, atau membangun modul perangkat keras untuk membantu mempercepatnya. Tip tabel sangat mendukung kinerja ketika Anda memiliki kemewahan mengendalikan perangkat lunak dan perangkat keras.
Justin ᚅᚔᚈᚄᚒᚔ
Ini bekerja dua arah juga. Perangkat keras tidak perlu berurusan dengan kasus yang jarang dan rumit. Itu hanya melempar mereka ke perangkat lunak. Routing loop? Jangan mencoba mencari tahu di perangkat keras bagaimana menghadapinya.
MSalters
4

Baik perangkat lunak dan perangkat keras memiliki sesuatu untuk dikatakan. Saya memiliki perbandingan Intel dan TP-Link NIC (yang menggunakan chip Realtek pada intinya) pada perangkat keras server generik, serta perangkat lunak tujuan-dibangun dan tujuan-generik dalam perutean.

Di sisi perangkat keras, jika ASIC on board dapat melakukan beberapa penanganan lalu lintas IP, beban prosesor dapat lebih rendah dan dengan demikian lebih cepat. Saya perhatikan dua chip INtel NIC onboard yang berkomunikasi langsung oleh DMA, melewati CPU utama dalam menangani penerusan paket; sementara itu chip Realtek menyela setiap kali sebuah paket tiba.

Di sisi perangkat lunak, jika perangkat lunak dirancang untuk digunakan dalam perutean, dapat dibuat lebih efisien. Saya telah menggunakan pfSense + PF (FreeBSD yang dimodifikasi yang dimaksudkan untuk digunakan sebagai router) dan iptables Ubuntu 12.04 + untuk keperluan umum sebagai perangkat lunak perutean dan yang pertama dengan jelas mengubah lalu lintas jauh lebih cepat. (Ubuntu 14.04 sekarang hampir sama cepatnya, berkat nftables baru di Linux 3.13 kernel.)

Namun router yang berdedikasi memang memiliki satu kelemahan utama: itu tidak dapat melakukan banyak hal selain mengganti lalu lintas, dan itu tidak dapat divirtualisasikan. Router edge saya saat ini adalah mesin virtual di dalam cluster ESXi saya yang menjalankan Ubuntu 14.04, dan juga berfungsi sebagai sistem deteksi intrusi dan load balancer.


sumber
3

AFAIK, ini adalah overhead dari sistem operasi serba guna; terlepas dari seberapa cepat koneksi Anda, paket-paket ditangani berdasarkan paket per paket dalam konteks kernel, meningkatkan latensi dan tekanan pada sistem. Saya yakin itu sudah dijelaskan di Jawaban lain lebih baik daripada yang bisa saya lakukan.

Karena itu, ada teknologi "ish" baru yang menjanjikan peningkatan popularitas dan kelayakan yang dapat menciptakan pesaing yang lebih tangguh dari sistem Linux dalam hal ini maupun dalam hal lainnya; yaitu InfiniBand

Lihatlah T&J berikut pada StackOverflow: Bagaimana TCP Kernel-bypass Diimplementasikan

Bacaan lebih lanjut:

ILMostro_7
sumber
2

Biasanya karena kurangnya konfigurasi stack / perangkat jaringan out-of-box di linux. Dalam hampir 90% kasus, lalu lintas jaringan Anda diproses oleh CPU0 sementara yang lain dalam keadaan menganggur. Jika Anda akan menyelesaikan perbedaan masalah ini dengan router perangkat keras tidak akan begitu drastis seperti yang Anda pikirkan. Anda harus mengatur setidaknya RSS atau RPS (distribusi pemrosesan paket berbasis driver / stack di antara CPU).

Jika Anda benar-benar peduli dengan kinerja router linux Anda dan punya cukup waktu saya sarankan Anda untuk membaca artikel ini di blog packagecloud (ada juga artikel tentang pengiriman paket).

Jika Anda perlu melihat distribusi dan Anda berpikir bahwa menonton di while sleep 1; do cat $some_file_in_procfs; done, evaluasi topeng CPU dan smp_affinitypenulisan manual membosankan, Anda mungkin akan menemukan proyek-hewan peliharaan saya netutils-linux sangat berguna.

strizhechenko
sumber