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?
sumber
Jawaban:
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.
sumber
most routers that do NAT use general purpose CPUs
Ya, 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.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.
sumber
"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.
sumber
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
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:
sumber
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 dansmp_affinity
penulisan manual membosankan, Anda mungkin akan menemukan proyek-hewan peliharaan saya netutils-linux sangat berguna.sumber