Apakah IPTable memanfaatkan prosesor multicore?

10

Apakah setiap paket diproses oleh inti yang berbeda? Atau apakah ini proses single-threaded?

menjerat
sumber
2
Saya tidak yakin mengapa Chopper3 menutup pertanyaan ini. Untuk menjawabnya: Iptables sebenarnya hanyalah frontpace userspace untuk firewall linux yang merupakan netfilter. Netfilter benar-benar sebuah sistem kait di kernel sekitar pemrosesan paket. Setiap paket diproses oleh kernel dengan memicu interupsi. Apakah saldo kernel Anda terputus di beberapa CPU tergantung pada berapa umurnya. Lihat utas ini di StackOverflow tentang itu. stackoverflow.com/questions/7467688/…
JakePaulus
+1, karena saya pikir ini adalah pertanyaan asli.
Sachin Divekar
@JakePaulus Balutan IRQ ini tidak akan pernah menetapkan lebih dari satu inti untuk satu interupsi. Jadi pergantian inti untuk setiap paket pada satu baris tidak akan pernah terjadi?
Nils
Dari sudut pandang cache memori CPU, core switching untuk satu koneksi tidak masuk akal - bahkan akan memperlambat banyak hal jika core ini tidak berbagi cache yang sama. Tetapi mengapa Anda mengajukan pertanyaan ini?
Nils
@Nils Interupsi yang dihasilkan oleh antarmuka dapat dialihkan ke CPU lain yang kurang sibuk. Selain itu, beberapa antarmuka dapat memiliki interupsi yang dikirim ke CPU yang berbeda untuk menyebarkan beban. Saya pikir Anda benar tentang lalu lintas dari satu antarmuka yang tidak seimbang di CPU berdasarkan per paket.
JakePaulus

Jawaban:

6

Iptables sebenarnya hanyalah front-end userspace untuk firewall linux yang merupakan netfilter. Netfilter benar-benar sebuah sistem kait di kernel sekitar pemrosesan paket. Setiap paket diproses oleh kernel dengan memicu interupsi. Apakah saldo kernel Anda terputus di beberapa CPU tergantung pada berapa umurnya. Lihat utas ini di StackOverflow tentang itu. /programming/7467688/netfilter-hooks-on-multi-core-system

Seperti yang disebutkan Nils, interupsi ini tidak akan seimbang pada basis per paket. Mereka akan seimbang per IRQ (per antarmuka) atau mungkin dipindahkan sama sekali ke CPU yang berbeda jika seseorang menjadi terlalu sibuk.

JakePaulus
sumber
sebagai alternatif Anda juga dapat mencekik interupsi Anda atau menghubungkannya dengan core yang berbeda. Saya telah melihat dalam beberapa kasus, mereka menghubungkan semua interupsi jaringan ke beberapa core untuk memastikan pemesanan ulang paket paling sedikit dan proses migrasi lintas core.
chandank