ΠΠΎΠΌΠΏΠ°Π½ΠΈΡ Cloudflare
ΠΠΎΠΌΠΎΡΠ½Π°ΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ° xdpcap Π΅ ΡΡΠ²ΠΌΠ΅ΡΡΠΈΠΌΠ° Ρ tcpdump/libpcap ΡΠΈΠ»ΡΡΠΈΡΠ°ΡΠΈ ΠΈΠ·ΡΠ°Π·ΠΈ ΠΈ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π°ΡΠ΅ Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΠΏΠΎ-Π³ΠΎΠ»Π΅ΠΌΠΈ ΠΎΠ±Π΅ΠΌΠΈ ΡΡΠ°ΡΠΈΠΊ Π½Π° ΡΡΡΠΈΡ Ρ Π°ΡΠ΄ΡΠ΅Ρ. Xdpcap ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΈ Π·Π° ΠΎΡΡΡΡΠ°Π½ΡΠ²Π°Π½Π΅ Π½Π° Π³ΡΠ΅ΡΠΊΠΈ Π² ΡΡΠ΅Π΄ΠΈ, ΠΊΡΠ΄Π΅ΡΠΎ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡΡ tcpdump Π½Π΅ Π΅ ΠΏΡΠΈΠ»ΠΎΠΆΠΈΠΌ, ΠΊΠ°ΡΠΎ ΡΠΈΠ»ΡΡΠΈΡΠ°Π½Π΅, DoS Π·Π°ΡΠΈΡΠ° ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ Π·Π° Π±Π°Π»Π°Π½ΡΠΈΡΠ°Π½Π΅ Π½Π° Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅ΡΠΎ, ΠΊΠΎΠΈΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° XDP Π½Π° ΡΠ΄ΡΠΎΡΠΎ Π½Π° Linux, ΠΊΠΎΡΡΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π° ΠΏΠ°ΠΊΠ΅ΡΠΈ, ΠΏΡΠ΅Π΄ΠΈ Π΄Π° Π±ΡΠ΄Π°Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ΅Π½ΠΈ ΠΎΡ ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈΡ ΡΡΠ΅ΠΊ Π½Π° ΡΠ΄ΡΠΎΡΠΎ Π½Π° Linux (tcpdump Π½Π΅ Π²ΠΈΠΆΠ΄Π° ΠΏΠ°ΠΊΠ΅ΡΠΈ, ΠΈΠ·ΠΏΡΡΠ½Π°ΡΠΈ ΠΎΡ XDP ΠΌΠ°Π½ΠΈΠΏΡΠ»Π°ΡΠΎΡΠ°).
ΠΠΈΡΠΎΠΊΠ°ΡΠ° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡ ΡΠ΅ ΠΏΠΎΡΡΠΈΠ³Π° ΡΡΠ΅Π· ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΠΈ eBPF ΠΈ XDP. eBPF Π΅ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ Π½Π° Π±Π°ΠΉΡ ΠΊΠΎΠ΄, Π²Π³ΡΠ°Π΄Π΅Π½ Π² ΡΠ΄ΡΠΎΡΠΎ Π½Π° Linux, ΠΊΠΎΠΉΡΠΎ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΡΡΠ·Π΄Π°Π²Π°ΡΠ΅ Π²ΠΈΡΠΎΠΊΠΎΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΈ ΠΌΠ°Π½ΠΈΠΏΡΠ»Π°ΡΠΎΡΠΈ Π½Π° Π²Ρ ΠΎΠ΄ΡΡΠΈ/ΠΈΠ·Ρ ΠΎΠ΄ΡΡΠΈ ΠΏΠ°ΠΊΠ΅ΡΠΈ Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π·Π° ΡΡΡ Π½ΠΎΡΠΎ ΠΏΡΠ΅ΠΏΡΠ°ΡΠ°Π½Π΅ ΠΈΠ»ΠΈ ΠΎΡΡ Π²ΡΡΠ»ΡΠ½Π΅. ΠΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ JIT ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡ, Π±Π°ΠΉΡ ΠΊΠΎΠ΄ΡΡ Π½Π° eBPF ΡΠ΅ ΠΏΡΠ΅Π²Π΅ΠΆΠ΄Π° Π² Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ Π² ΠΌΠ°ΡΠΈΠ½Π½ΠΈ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΠΈ ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π° Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° Π½Π° ΡΠΎΠ±ΡΡΠ²Π΅Π½ ΠΊΠΎΠ΄. ΠΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° XDP (eXpress Data Path) Π΄ΠΎΠΏΡΠ»Π²Π° eBPF Ρ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠ° Π΄Π° ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π° BPF ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈ Π½Π° Π½ΠΈΠ²ΠΎ ΠΌΡΠ΅ΠΆΠΎΠ² Π΄ΡΠ°ΠΉΠ²Π΅Ρ, Ρ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° Π΄ΠΈΡΠ΅ΠΊΡΠ΅Π½ Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ DMA ΠΏΠ°ΠΊΠ΅ΡΠ½ΠΈΡ Π±ΡΡΠ΅Ρ ΠΈ ΡΠ°Π±ΠΎΡΠ° Π½Π° Π΅ΡΠ°ΠΏΠ° ΠΏΡΠ΅Π΄ΠΈ Π±ΡΡΠ΅ΡΡΡ skbuff Π΄Π° Π±ΡΠ΄Π΅ ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ ΠΎΡ ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈΡ ΡΡΠ΅ΠΊ.
ΠΠΎΠ΄ΠΎΠ±Π½ΠΎ Π½Π° tcpdump, ΠΏΠΎΠΌΠΎΡΠ½Π°ΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ° xdpcap ΠΏΡΡΠ²ΠΎ ΠΏΡΠ΅Π²Π΅ΠΆΠ΄Π° ΠΏΡΠ°Π²ΠΈΠ»Π°ΡΠ° Π·Π° ΡΠΈΠ»ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΡΠ°ΡΠΈΠΊ ΠΎΡ Π²ΠΈΡΠΎΠΊΠΎ Π½ΠΈΠ²ΠΎ Π² ΠΊΠ»Π°ΡΠΈΡΠ΅ΡΠΊΠΎ BPF ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΠ½Π΅ (cBPF), ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ ΡΡΠ°Π½Π΄Π°ΡΡΠ½Π°ΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° libpcap, ΠΈ ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° Π³ΠΈ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ²Π° Π²ΡΠ² ΡΠΎΡΠΌΠ°ΡΠ° Π½Π° eBPF ΡΡΡΠΈΠ½Π½ΠΈ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠΈ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡ
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru