ΠšΠΎΠΌΠΏΠ°Π½ΠΈΡΡ‚Π° Cloudflare ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π° xdpcap, Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ Π½Π° Ρ‚Ρ€Π°Ρ„ΠΈΠΊ, Π±Π°Π·ΠΈΡ€Π°Π½ Π½Π° подсистСмата XDP.

Компания Cloudflare прСдстави ΠΎΡ‚Π²ΠΎΡ€Π΅Π½ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ xdpcap, Π² ΠΊΠΎΠΉΡ‚ΠΎ сС Ρ€Π°Π·Π²ΠΈΠ²Π° Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ Π½Π° ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ, ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ Π½Π° tcpdump, основан Π½Π° подсистСмата XDP (eXpress Data Path). ΠšΠΎΠ΄ΡŠΡ‚ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π΅ написан Π½Π° Go ΠΈ сС разпространява Π΅ с Π»ΠΈΡ†Π΅Π½Π· BSD. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΡŠΡ‚ Π²ΠΊΠ»ΡŽΡ‡Π²Π° ΡΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° Π΅ ΠΏΠΎΠ΄Π³ΠΎΡ‚Π²Π΅Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π·Π° ΡΠ²ΡŠΡ€Π·Π²Π°Π½Π΅ Π½Π° eBPF ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈ Π½Π° Ρ‚Ρ€Π°Ρ„ΠΈΠΊ ΠΎΡ‚ прилоТСния Π½Π° Go.

Π£Ρ‚ΠΈΠ»ΠΈΡ‚Π°Ρ‚Π° xdpcap Π΅ ΡΡŠΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠ° с ΠΈΠ·Ρ€Π°Π·ΠΈΡ‚Π΅ Π·Π° Ρ„ΠΈΠ»Ρ‚Ρ€ΠΈΡ€Π°Π½Π΅ Π½Π° tcpdump/libpcap ΠΈ позволява Π΄Π° сС ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π°Ρ‚ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ ΠΏΠΎ-Π³ΠΎΠ»Π΅ΠΌΠΈ ΠΎΠ±Π΅ΠΌΠΈ Ρ‚Ρ€Π°Ρ„ΠΈΠΊ Π½Π° ΡΡŠΡ‰ΠΎΡ‚ΠΎ ΠΎΠ±ΠΎΡ€ΡƒΠ΄Π²Π°Π½Π΅. Xdpcap ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΈ Π·Π° отстраняванС Π½Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ Π² условия, ΠΏΡ€ΠΈ ΠΊΠΎΠΈΡ‚ΠΎ обичайният tcpdump Π½Π΅ Π΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠΈΠΌ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠΎΠ³Π°Ρ‚ΠΎ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Ρ„ΠΈΠ»Ρ‚Ρ€ΠΈΡ€Π°Ρ‰ΠΈ систСми, Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DoS Π°Ρ‚Π°ΠΊΠΈ ΠΈ систСми Π·Π° Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅, ΠΊΠΎΠΈΡ‚ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ подсистСмата XDP Π½Π° ядрото Π½Π° Linux, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π°Ρ‰Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈΡ‚Π΅ ΠΏΡ€Π΅Π΄ΠΈ тяхното ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Π²Π°Π½Π΅ ΠΏΡ€Π΅Π· мрСТовия стСк Π½Π° ядрото (tcpdump Π½Π΅ Π²ΠΈΠΆΠ΄Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈΡ‚Π΅, ΠΎΡ‚Ρ…Π²ΡŠΡ€Π»Π΅Π½ΠΈ ΠΎΡ‚ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° XDP).

Високата производитСлност сС постига Π±Π»Π°Π³ΠΎΠ΄Π°Ρ€Π΅Π½ΠΈΠ΅ Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° подсистСмитС eBPF ΠΈ XDP. eBPF Π΅ Π²Π³Ρ€Π°Π΄Π΅Π½ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ Π½Π° Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄ Π² ядрото Π½Π° Linux, позволяващ ΡΡŠΠ·Π΄Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° високо ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»Π½ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈ Π½Π° входящи/изходящи ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ с Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π° прСнасочванС ΠΈΠ»ΠΈ ΠΎΡ‚Ρ…Π²ΡŠΡ€Π»ΡΠ½Π΅. Π‘ ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° JIT ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€Π° Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄ΡŠΡ‚ eBPF сС трансформира Π² машинни инструкции Π½Π° Π»Π΅Ρ‚ΠΈΡ‰Π΅Ρ‚ΠΎ ΠΈ сС изпълнява с производитСлността Π½Π° Π½Π°Ρ‚ΠΈΠ²Π΅Π½ ΠΊΠΎΠ΄. ΠŸΠΎΠ΄ΡΠΈΡΡ‚Π΅ΠΌΠ°Ρ‚Π° XDP (eXpress Data Path) допълва eBPF с Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚Ρ‚Π° Π΄Π° изпълнява BPF ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈ Π½Π° Π½ΠΈΠ²ΠΎΡ‚ΠΎ Π½Π° мрСТовия Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€, ΠΊΠ°Ρ‚ΠΎ ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° Π΄ΠΈΡ€Π΅ΠΊΡ‚Π΅Π½ Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ DMA Π±ΡƒΡ„Π΅Ρ€ΠΈΡ‚Π΅ Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈΡ‚Π΅ ΠΈ Ρ€Π°Π±ΠΎΡ‚ΠΈ Π½Π° Π΅Ρ‚Π°ΠΏΠ° ΠΏΡ€Π΅Π΄ΠΈ разпрСдСлянСто Π½Π° Π±ΡƒΡ„Π΅Ρ€Π° skbuff ΠΎΡ‚ мрСТовия стСк.

Подобно Π½Π° tcpdump, ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π°Ρ‚Π° xdpcap ΠΏΡŠΡ€Π²ΠΎΠ½Π°Ρ‡Π°Π»Π½ΠΎ трансформира високопрофилни ΠΏΡ€Π°Π²ΠΈΠ»Π° Π·Π° Ρ„ΠΈΠ»Ρ‚Ρ€ΠΈΡ€Π°Π½Π΅ Π½Π° Ρ‚Ρ€Π°Ρ„ΠΈΠΊ Π² класичСското прСдставлСниС Π½Π° BPF (cBPF) с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° стандартната Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° libpcap, слСд ΠΊΠΎΠ΅Ρ‚ΠΎ Π³ΠΈ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ²Π° Π² ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈ eBPF, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€Π° cbpfc, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‰ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π½Π° LLVM/Clang. На ΠΈΠ·Ρ…ΠΎΠ΄Π° информацията Π·Π° Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° сС ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π° Π² стандартСн Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ pcap, ΠΊΠΎΠ΅Ρ‚ΠΎ позволява Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° подготвСният Π² xdpcap Π΄Π°ΠΌΠΏ Π½Π° Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° Π·Π° послСдващо ΠΏΡ€ΠΎΡƒΡ‡Π²Π°Π½Π΅ Π² tcpdump ΠΈ Π΄Ρ€ΡƒΠ³ΠΈ ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Ρ‰ΠΈ Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΈ Π½Π° Ρ‚Ρ€Π°Ρ„ΠΈΠΊ. НапримСр, Π·Π° Π·Π°Ρ…Π²Π°Ρ‰Π°Π½Π΅ Π½Π° информация Π·Π° DNS Ρ‚Ρ€Π°Ρ„ΠΈΠΊ вмСсто ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° Β«tcpdump ip and udp port 53Β» ΠΌΠΎΠΆΠ΅ Π΄Π° стартиратС Β«xdpcap /path/to/hook capture.pcap β€˜ip and udp port 53’», слСд ΠΊΠΎΠ΅Ρ‚ΠΎ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ Ρ„Π°ΠΉΠ»Π° capture.pcap, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ с ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° Β«tcpdump -rΒ» ΠΈΠ»ΠΈ Π² Wireshark.

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster