Doporučoval bych nastudovat si níže uvedené materiály, které vám dopomohou k vysoké propustnosti paketů za sekundu přes router kde běží [ BGP, OSPF, SNAT, QOS, Firewall]
Doporučení:
- Taktovací frekvence CPU, čím vyšší tím více a rychleji odbaví CPU pakety. Alepoň 3GHz
- Kernel 4.13 a výš, u nás zatím kernel 3.10.826
- Fyzické dvě síťové karty. Doporučuji Intel X710 4 porty
- Pro každé jádro nastavit odbavovací frontu síťové karty a přerušení na IRQ. 20 jadar máte 20 odbavovacích front do CPU. Doporučuje se max 16. Zbytek jader nechat pro odbavovaní jiných procesů serveru. např. zápis na disk, atd.
- Zakázat IRQBALANCE daemona a zprovoznit affinity
- Každá síťová karta připojena přes PCI-E zvlášť ke každému SOKET-CPU [0,1]
- Mít motherboard s funkční Direct Cache Access (DCA)
- Zavést hasing pro QoS TC QDISC FILTTR
- NFTABLES bude velmi zajímavé a hlavně výkonné, momentálně nenasazeno.
A tady to máte krok za krokem jak to udělat ;-)
40GbE směrovač pro operační systém GNU/Linux
https://www.vutbr.cz/studenti/zav-prace?zp_id=88683
Studijní materiály:
Pro tuning vysokorychlostního routeru netutils-linux
https://habr.com/en/post/331720/
netutils-linux
https://pypi.org/project/netutils-linux/
Optimalizace QoS - hashing na 3 - 4 skoky dohledá pravidlo, nemusí sekvenčně prohledávat celou tabulku!
QoS v Linuxu a filtr U32
https://habr.com/en/post/138463/
Linux tc multi-level massive hashing
http://www.hazard.maks.net/blog/index.php?op=ViewArticle&articleId=181&blogId=1
Jak bojovat se zpožděním ztráty paketů
https://docs.carbonsoft.ru/pages/viewpage.action?pageId=69926921
Multiprocesorový systém
https://docs.carbonsoft.ru/pages/viewpage.action?pageId=69926921
CPU Affinity Howto
https://www.linuxsecrets.com/2983-cpu-affinity-howto
https://networknuts.net/understanding-cpu-affinity-on-linux-server/
Změna počtu front na síťové kartě
https://docs.carbonsoft.ru/pages/viewpage.action?pageId=72155152
Qdisc FQ_CODEL
https://habr.com/en/post/194274/
How to achieve low latency with 10Gbps Ethernet
https://blog.cloudflare.com/how-to-achieve-low-latency/
Jak posílat proudy paketů přes jednotlivá jádra
Linux Network Scaling: Receiving Packets
https://garycplin.blogspot.com/2017/06/linux-network-scaling-receives-packets.html
The u32 filter
http://linux-tc-notes.sourceforge.net/tc/doc/cls_u32.txt#.
Monitoring and Tuning the Linux Networking Stack: Receiving Data
https://blog.packagecloud.io/eng/2016/06/22/monitoring-tuning-linux-networking-stack-receiving-data/
Monitoring and Tuning the Linux Networking Stack: Sending Data
https://blog.packagecloud.io/eng/2017/02/06/monitoring-tuning-linux-networking-stack-sending-data/
Reducing latency with HPE ProLiant Gen10 Servers
https://community.hpe.com/t5/Servers-The-Right-Compute/Reducing-latency-with-HPE-ProLiant-Gen10-Servers/ba-p/6989167
Building a Single-Box 100Gbps Software Router
http://keonjang.github.io/papers/lanman10.pdf
NFTABLES Zatím musím nastudovat
NFTABLES Zatím nerealizovéno, ale bude to mít velmi vysoký výkon při správné konfiguraci
NFTABLES - Petr Krčmář LinuxDays
LinuxDays 2017 - nftables – budoucnost linuxového firewallu - Petr Krčmář
https://www.youtube.com/watch?v=BLh29Gz9Sac
NFTABLES - Classification to tc structure example
https://wiki.nftables.org/wiki-nftables/index.php/Classification_to_tc_structure_example
A můžete studovat... ;-) Pak dokážete nemožné.
Jen aby jste pochopili, jak je to náročné téma.