Wird jedes Paket von einem anderen Kern verarbeitet? Oder ist es ein Single-Thread-Prozess?
Wird jedes Paket von einem anderen Kern verarbeitet? Oder ist es ein Single-Thread-Prozess?
Antworten:
Iptables ist eigentlich nur das Userspace-Frontend für die Linux-Firewall, die Netfilter ist. Netfilter ist wirklich ein System von Hooks im Kernel um die Paketverarbeitung. Jedes Paket wird vom Kernel durch Auslösen einer Unterbrechung verarbeitet. Ob Ihr Kernel Interrupts über mehrere CPUs verteilt, hängt davon ab, wie alt er ist. Siehe diesen Thread auf StackOverflow darüber. /programming/7467688/netfilter-hooks-on-multi-core-system
Wie Nils erwähnte, würden diese Interrupts nicht pro Paket ausgeglichen. Sie würden pro IRQ (pro Schnittstelle) ausgeglichen oder möglicherweise ganz auf eine andere CPU verschoben, wenn eine zu beschäftigt wäre.