Yandex เจจเฉ‡ skbtrace เจชเฉเจฐเจ•เจพเจธเจผเจฟเจค เจ•เฉ€เจคเจพ เจนเฉˆ, เจœเฉ‹ เจ•เจฟ เจฒเฉ€เจจเจ•เจธ เจตเจฟเฉฑเจš เจจเฉˆเฉฑเจŸเจตเจฐเจ• เจ†เจชเจฐเฉ‡เจธเจผเจจเจพเจ‚ เจจเฉ‚เฉฐ เจŸเจฐเฉ‡เจธ เจ•เจฐเจจ เจฒเจˆ เจ‡เฉฑเจ• เจ‰เจชเจฏเฉ‹เจ—เจคเจพ เจนเฉˆ

ะšะพะผะฟะฐะฝะธั ะฏะฝะดะตะบั ะพะฟัƒะฑะปะธะบะพะฒะฐะปะฐ ะธัั…ะพะดะฝั‹ะต ั‚ะตะบัั‚ั‹ ัƒั‚ะธะปะธั‚ั‹ skbtrace, ะฟั€ะตะดะพัั‚ะฐะฒะปััŽั‰ะตะน ัั€ะตะดัั‚ะฒะฐ ะดะปั ะพั‚ัะปะตะถะธะฒะฐะฝะธั ั€ะฐะฑะพั‚ั‹ ัะตั‚ะตะฒะพะณะพ ัั‚ะตะบะฐ ะธ ั‚ั€ะฐััะธั€ะพะฒะบะธ ะฒั‹ะฟะพะปะฝะตะฝะธั ัะตั‚ะตะฒั‹ั… ะพะฟะตั€ะฐั†ะธะน ะฒ Linux. ะฃั‚ะธะปะธั‚ะฐ ั€ะตะฐะปะธะทะพะฒะฐะฝะฐ ะฒ ั„ะพั€ะผะต ะฝะฐะดัั‚ั€ะพะนะบะธ ะฝะฐะด ัะธัั‚ะตะผะพะน ะดะธะฝะฐะผะธั‡ะตัะบะพะน ะพั‚ะปะฐะดะบะธ BPFtrace. ะšะพะด ะฝะฐะฟะธัะฐะฝ ะฝะฐ ัะทั‹ะบะต Go ะธ ั€ะฐัะฟั€ะพัั‚ั€ะฐะฝัะตั‚ัั ะฟะพะด ะปะธั†ะตะฝะทะธะตะน MIT. ะŸะพะดะดะตั€ะถะธะฒะฐะตั‚ัั ั€ะฐะฑะพั‚ะฐ ั ัะดั€ะฐะผะธ Linux 4.14+ ะธ ั ะธะฝัั‚ั€ัƒะผะตะฝั‚ะฐั€ะธะตะผ BPFTrace 0.9.2+.

ะ’ ะฟั€ะพั†ะตััะต ั€ะฐะฑะพั‚ั‹ ัƒั‚ะธะปะธั‚ะฐ skbtrace ะณะตะฝะตั€ะธั€ัƒะตั‚ ัะบั€ะธะฟั‚ั‹ ะฝะฐ ะฒั‹ัะพะบะพัƒั€ะพะฒะฝะตะฒะพะผ ัะทั‹ะบะต BPFtrace, ะพััƒั‰ะตัั‚ะฒะปััŽั‰ะธะต ะดะธะฝะฐะผะธั‡ะตัะบัƒัŽ ั‚ั€ะฐััะธั€ะพะฒะบัƒ ะธ ะฐะฝะฐะปะธะท ะฒั€ะตะผะตะฝะธ ะฒั‹ะฟะพะปะฝะตะฝะธั ะพะฟะตั€ะฐั†ะธะน, ัะฒัะทะฐะฝะฝั‹ั… ั ัะตั‚ะตะฒั‹ะผ ัั‚ะตะบะพะผ Linux ะธ ัะตั‚ะตะฒั‹ะผะธ ัะพะบะตั‚ะฐะผะธ. ะกะบั€ะธะฟั‚ั‹ ะทะฐั‚ะตะผ ั‚ั€ะฐะฝัะปะธั€ัƒัŽั‚ัั ะฒ ั„ะพั€ะผัƒ eBPF-ะฟั€ะธะปะพะถะตะฝะธะน ะธ ะฒั‹ะฟะพะปะฝััŽั‚ัั ะฝะฐ ัƒั€ะพะฒะฝะต ัะดั€ะฐ.

ะ˜ะท ัะฟะตั†ะธั„ะธั‡ะฝั‹ั… ะฒะพะทะผะพะถะฝะพัั‚ะตะน skbtrace ะพั‚ะผะตั‡ะฐะตั‚ัั ะธะทะผะตั€ะตะฝะธะต ะฒั€ะตะผะตะฝะธ ะฟะตั€ะตัั‹ะปะบะธ ะฟะฐะบะตั‚ะพะฒ ะผะตะถะดัƒ ะฒั…ะพะดัั‰ะธะผ ะธ ะธัั…ะพะดัั‰ะธะผ ัะตั‚ะตะฒั‹ะผ ะธะฝั‚ะตั€ั„ะตะนัะพะผ, ะฒั€ะตะผะตะฝะธ ะถะธะทะฝะธ TCP-ัะพะตะดะธะฝะตะฝะธั ะพั‚ ะฟะพะปัƒั‡ะตะฝะธั SYN ะดะพ ะฟั€ะธั…ะพะดะฐ FIN/RST, ะทะฐะดะตั€ะถะตะบ ะผะตะถะดัƒ ั€ะฐะทะฝั‹ะผะธ ัะพะฑั‹ั‚ะธัะผะธ ะพะฑั€ะฐะฑะพั‚ะบะธ ะฟะฐะบะตั‚ะพะฒ, ะฒั€ะตะผะตะฝะธ ะฝะฐ ัะพะณะปะฐัะพะฒะฐะฝะธะต TCP-ัะพะตะดะธะฝะตะฝะธั. Skbtrace ั‚ะฐะบะถะต ะผะพะถะตั‚ ะฟั€ะธะผะตะฝัั‚ัŒัั ะดะปั ะฒั‹ัะฒะปะตะฝะธั ะฟะพะฒั‚ะพั€ะฝะพะน ะฟะตั€ะตะดะฐั‡ะธ TCP-ะฟะฐะบะตั‚ะพะฒ, ะดะฐะถะต ะตัะปะธ ะพะฝะธ ะธะฝะบะฐะฟััƒะปะธั€ะพะฒะฐะฝั‹ ะฒ ะดั€ัƒะณะธะต ะฟะฐะบะตั‚ั‹, ะธ ะฒั‹ัั‚ัƒะฟะฐั‚ัŒ ะฟั€ะพัั‚ั‹ะผ ะฐะฝะฐะปะพะณะพะผ ัƒั‚ะธะปะธั‚ั‹ tcpdump, ัะฟะพัะพะฑะฝั‹ะผ ะฐะฝะฐะปะธะทะธั€ะพะฒะฐั‚ัŒ ะฒั‹ะฟะพะปะฝะตะฝะธะต ะฝะตะบะพั‚ะพั€ั‹ั… ะฟั€ะพั†ะตะดัƒั€ ัะดั€ะฐ, ั‚ะฐะบะธั… ะบะฐะบ ะฒั‹ะทะพะฒ kfree_skb ะดะปั ะพัะฒะพะฑะพะถะดะตะฝะธั ะฟะฐะผัั‚ะธ ะฟั€ะธ ะพั‚ะฑั€ะฐัั‹ะฒะฐะฝะธะธ ะฟะฐะบะตั‚ะพะฒ.

เจธเจฐเฉ‹เจค: opennet.ru

เจ‡เฉฑเจ• เจŸเจฟเฉฑเจชเจฃเฉ€ เจœเฉ‹เฉœเฉ‹