BPF āĻāĻŦāĻ‚ eBPF āĻāĻ° āĻāĻ•āĻŸāĻŋ āĻ¸āĻ‚āĻ•ā§āĻˇāĻŋāĻĒā§āĻ¤ āĻĒāĻ°āĻŋāĻšāĻŋāĻ¤āĻŋ

āĻšā§āĻ¯āĻžāĻ˛ā§‹, āĻšāĻžāĻŦāĻ°! āĻ†āĻŽāĻ°āĻž āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻœāĻžāĻ¨āĻžāĻ¤ā§‡ āĻšāĻžāĻ‡ āĻ¯ā§‡ āĻ†āĻŽāĻ°āĻž āĻĒā§āĻ°āĻ•āĻžāĻļā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻŦāĻ‡ āĻĒā§āĻ°āĻ¸ā§āĻ¤ā§āĻ¤ āĻ•āĻ°āĻ›āĻŋāĨ¤"BPF āĻ¸āĻš āĻ˛āĻŋāĻ¨āĻžāĻ•ā§āĻ¸ āĻĒāĻ°ā§āĻ¯āĻŦā§‡āĻ•ā§āĻˇāĻŖāĻ¯ā§‹āĻ—ā§āĻ¯āĻ¤āĻž".

BPF āĻāĻŦāĻ‚ eBPF āĻāĻ° āĻāĻ•āĻŸāĻŋ āĻ¸āĻ‚āĻ•ā§āĻˇāĻŋāĻĒā§āĻ¤ āĻĒāĻ°āĻŋāĻšāĻŋāĻ¤āĻŋ
āĻ¯ā§‡āĻšā§‡āĻ¤ā§ BPF āĻ­āĻžāĻ°ā§āĻšā§āĻ¯āĻŧāĻžāĻ˛ āĻŽā§‡āĻļāĻŋāĻ¨āĻŸāĻŋ āĻ•ā§āĻ°āĻŽāĻžāĻ—āĻ¤ āĻŦāĻŋāĻ•āĻļāĻŋāĻ¤ āĻšāĻšā§āĻ›ā§‡ āĻāĻŦāĻ‚ āĻ¸āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻ­āĻžāĻŦā§‡ āĻ…āĻ¨ā§āĻļā§€āĻ˛āĻ¨ā§‡ āĻŦā§āĻ¯āĻŦāĻšā§ƒāĻ¤ āĻšāĻšā§āĻ›ā§‡, āĻ†āĻŽāĻ°āĻž āĻ†āĻĒāĻ¨āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ° āĻĒā§āĻ°āĻ§āĻžāĻ¨ āĻ•ā§āĻˇāĻŽāĻ¤āĻž āĻāĻŦāĻ‚ āĻŦāĻ°ā§āĻ¤āĻŽāĻžāĻ¨ āĻ…āĻŦāĻ¸ā§āĻĨāĻž āĻŦāĻ°ā§āĻŖāĻ¨āĻž āĻ•āĻ°ā§‡ āĻāĻ•āĻŸāĻŋ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ āĻ…āĻ¨ā§āĻŦāĻžāĻĻ āĻ•āĻ°ā§‡āĻ›āĻŋāĨ¤

āĻ¸āĻžāĻŽā§āĻĒā§āĻ°āĻ¤āĻŋāĻ• āĻŦāĻ›āĻ°āĻ—ā§āĻ˛āĻŋāĻ¤ā§‡, āĻ‰āĻšā§āĻš-āĻĒāĻžāĻ°āĻĢāĻ°āĻŽā§āĻ¯āĻžāĻ¨ā§āĻ¸ āĻĒā§āĻ¯āĻžāĻ•ā§‡āĻŸ āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ•āĻ°āĻŖā§‡āĻ° āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ āĻšāĻ˛ā§‡ āĻ˛āĻŋāĻ¨āĻžāĻ•ā§āĻ¸ āĻ•āĻžāĻ°ā§āĻ¨ā§‡āĻ˛ā§‡āĻ° āĻ¸ā§€āĻŽāĻžāĻŦāĻĻā§āĻ§āĻ¤āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ•ā§āĻˇāĻ¤āĻŋāĻĒā§‚āĻ°āĻŖā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽāĻŋāĻ‚ āĻ¸āĻ°āĻžā§āĻœāĻžāĻŽ āĻāĻŦāĻ‚ āĻ•ā§ŒāĻļāĻ˛āĻ—ā§āĻ˛āĻŋ āĻ•ā§āĻ°āĻŽāĻļ āĻœāĻ¨āĻĒā§āĻ°āĻŋāĻ¯āĻŧ āĻšāĻ¯āĻŧā§‡ āĻ‰āĻ ā§‡āĻ›ā§‡āĨ¤ āĻāĻ‡ āĻ§āĻ°āĻ¨ā§‡āĻ° āĻ¸āĻŦāĻšā§‡āĻ¯āĻŧā§‡ āĻœāĻ¨āĻĒā§āĻ°āĻŋāĻ¯āĻŧ āĻ•ā§ŒāĻļāĻ˛ āĻāĻ• āĻŦāĻ˛āĻž āĻšāĻ¯āĻŧ āĻ•āĻžāĻ°ā§āĻ¨ā§‡āĻ˛ āĻŦāĻžāĻ‡āĻĒāĻžāĻ¸ (āĻ•āĻžāĻ°ā§āĻ¨ā§‡āĻ˛ āĻŦāĻžāĻ‡āĻĒāĻžāĻ¸) āĻāĻŦāĻ‚ āĻ•āĻžāĻ°ā§āĻ¨ā§‡āĻ˛ āĻ¨ā§‡āĻŸāĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻ• āĻ¸ā§āĻ¤āĻ°āĻ•ā§‡ āĻŦāĻžāĻ‡āĻĒāĻžāĻ¸ āĻ•āĻ°ā§‡ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€āĻ° āĻ¸ā§āĻĨāĻžāĻ¨ āĻĨā§‡āĻ•ā§‡ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻĒā§āĻ¯āĻžāĻ•ā§‡āĻŸ āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ•āĻ°āĻŖ āĻ•āĻ°āĻžāĻ° āĻ…āĻ¨ā§āĻŽāĻ¤āĻŋ āĻĻā§‡āĻ¯āĻŧāĨ¤ āĻ•āĻžāĻ°ā§āĻ¨ā§‡āĻ˛ āĻŦāĻžāĻ‡āĻĒāĻžāĻ¸ āĻ•āĻ°āĻž āĻĨā§‡āĻ•ā§‡ āĻ¨ā§‡āĻŸāĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻ• āĻ•āĻžāĻ°ā§āĻĄ āĻ¨āĻŋāĻ¯āĻŧāĻ¨ā§āĻ¤ā§āĻ°āĻŖ āĻ•āĻ°āĻžāĻ“ āĻœāĻĄāĻŧāĻŋāĻ¤ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€ āĻ¸ā§āĻĨāĻžāĻ¨. āĻ…āĻ¨ā§āĻ¯ āĻ•āĻĨāĻžāĻ¯āĻŧ, āĻ¨ā§‡āĻŸāĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻ• āĻ•āĻžāĻ°ā§āĻĄā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻ•āĻžāĻœ āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ, āĻ†āĻŽāĻ°āĻž āĻĄā§āĻ°āĻžāĻ‡āĻ­āĻžāĻ°ā§‡āĻ° āĻ‰āĻĒāĻ° āĻ¨āĻŋāĻ°ā§āĻ­āĻ° āĻ•āĻ°āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€ āĻ¸ā§āĻĨāĻžāĻ¨.

āĻāĻ•āĻŸāĻŋ āĻ‡āĻ‰āĻœāĻžāĻ°-āĻ¸ā§āĻĒā§‡āĻ¸ āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽā§‡ āĻ¨ā§‡āĻŸāĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻ• āĻ•āĻžāĻ°ā§āĻĄā§‡āĻ° āĻ¸āĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āĻ¨āĻŋāĻ¯āĻŧāĻ¨ā§āĻ¤ā§āĻ°āĻŖ āĻ¸ā§āĻĨāĻžāĻ¨āĻžāĻ¨ā§āĻ¤āĻ° āĻ•āĻ°āĻžāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡, āĻ†āĻŽāĻ°āĻž āĻ•āĻžāĻ°ā§āĻ¨ā§‡āĻ˛ āĻ“āĻ­āĻžāĻ°āĻšā§‡āĻĄ (āĻĒā§āĻ°āĻ¸āĻ™ā§āĻ— āĻ¸ā§āĻ¯ā§āĻ‡āĻšāĻŋāĻ‚, āĻ¨ā§‡āĻŸāĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻ• āĻ˛ā§‡āĻ¯āĻŧāĻžāĻ° āĻĒā§āĻ°āĻ¸ā§‡āĻ¸āĻŋāĻ‚, āĻ‡āĻ¨ā§āĻŸāĻžāĻ°āĻžāĻĒā§āĻŸ āĻ‡āĻ¤ā§āĻ¯āĻžāĻĻāĻŋ) āĻ•āĻŽāĻŋāĻ¯āĻŧā§‡ āĻĻāĻŋāĻ‡, āĻ¯āĻž 10Gb/s āĻŦāĻž āĻ¤āĻžāĻ° āĻŦā§‡āĻļāĻŋ āĻ—āĻ¤āĻŋāĻ¤ā§‡ āĻšāĻ˛āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻŦā§‡āĻļ āĻ—ā§āĻ°ā§āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖāĨ¤ āĻ•āĻžāĻ°ā§āĻ¨ā§‡āĻ˛ āĻŦāĻžāĻ‡āĻĒāĻžāĻ¸ āĻĒā§āĻ˛āĻžāĻ¸ āĻ…āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻŦā§ˆāĻļāĻŋāĻˇā§āĻŸā§āĻ¯ā§‡āĻ° āĻ¸āĻ‚āĻŽāĻŋāĻļā§āĻ°āĻŖ (āĻ§āĻŋāĻ° āĻ—āĻ¤āĻŋāĻ° āĻ•āĻžāĻœ) āĻāĻŦāĻ‚ āĻ¸āĻ¤āĻ°ā§āĻ• āĻ•āĻ°ā§āĻŽāĻ•ā§āĻˇāĻŽāĻ¤āĻž āĻŸāĻŋāĻ‰āĻ¨āĻŋāĻ‚ (NUMA āĻ…ā§āĻ¯āĻžāĻ•āĻžāĻ‰āĻ¨ā§āĻŸāĻŋāĻ‚, CPU āĻŦāĻŋāĻšā§āĻ›āĻŋāĻ¨ā§āĻ¨āĻ¤āĻž, āĻ‡āĻ¤ā§āĻ¯āĻžāĻĻāĻŋ) āĻ‡āĻ‰āĻœāĻžāĻ° āĻ¸ā§āĻĒā§‡āĻ¸ā§‡ āĻ‰āĻšā§āĻš-āĻĒāĻžāĻ°āĻĢāĻ°āĻŽā§āĻ¯āĻžāĻ¨ā§āĻ¸ āĻ¨ā§‡āĻŸāĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻ• āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ•āĻ°āĻŖā§‡āĻ° āĻŽā§ŒāĻ˛āĻŋāĻ• āĻŦāĻŋāĻˇāĻ¯āĻŧāĻ—ā§āĻ˛āĻŋāĻ° āĻ¸āĻžāĻĨā§‡ āĻŽāĻŋāĻ˛ā§‡ āĻ¯āĻžāĻ¯āĻŧā§ˇ āĻ¸āĻŽā§āĻ­āĻŦāĻ¤ āĻĒā§āĻ¯āĻžāĻ•ā§‡āĻŸ āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ•āĻ°āĻŖā§‡āĻ° āĻāĻ‡ āĻ¨āĻ¤ā§āĻ¨ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ° āĻāĻ•āĻŸāĻŋ āĻ…āĻ¨ā§āĻ•āĻ°āĻŖā§€āĻ¯āĻŧ āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ āĻĄāĻŋāĻĒāĻŋāĻĄāĻŋāĻ•ā§‡ āĻ‡āĻ¨ā§āĻŸā§‡āĻ˛ āĻĨā§‡āĻ•ā§‡ (āĻĄā§‡āĻŸāĻž āĻĒā§āĻ˛ā§‡āĻ¨ āĻĄā§‡āĻ­ā§‡āĻ˛āĻĒāĻŽā§‡āĻ¨ā§āĻŸ āĻ•āĻŋāĻŸ), āĻ¯āĻĻāĻŋāĻ“ āĻ¸āĻŋāĻ¸āĻ•ā§‹āĻ° āĻ­āĻŋāĻĒāĻŋāĻĒāĻŋ (āĻ­ā§‡āĻ•ā§āĻŸāĻ° āĻĒā§āĻ¯āĻžāĻ•ā§‡āĻŸ āĻĒā§āĻ°āĻ¸ā§‡āĻ¸āĻŋāĻ‚), āĻ¨ā§‡āĻŸāĻŽā§āĻ¯āĻžāĻĒ āĻāĻŦāĻ‚ āĻ…āĻŦāĻļā§āĻ¯āĻ‡, āĻ¸āĻš āĻ…āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻ¸ā§āĻĒāĻ°āĻŋāĻšāĻŋāĻ¤ āĻ¸āĻ°āĻžā§āĻœāĻžāĻŽ āĻāĻŦāĻ‚ āĻ•ā§ŒāĻļāĻ˛ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤ āĻ¸ā§āĻ¨ā§āĻ¯āĻžāĻŦ.

āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€āĻ° āĻœāĻžāĻ¯āĻŧāĻ—āĻžāĻ¯āĻŧ āĻ¨ā§‡āĻŸāĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻ• āĻŽāĻŋāĻĨāĻ¸ā§āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻ¸āĻ‚āĻ—āĻ āĻŋāĻ¤ āĻ•āĻ°āĻžāĻ° āĻ…āĻ¨ā§‡āĻ•āĻ—ā§āĻ˛āĻŋ āĻ…āĻ¸ā§āĻŦāĻŋāĻ§āĻž āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡:

  • OS āĻ•āĻžāĻ°ā§āĻ¨ā§‡āĻ˛ āĻšāĻ˛ āĻšāĻžāĻ°ā§āĻĄāĻ“āĻ¯āĻŧā§āĻ¯āĻžāĻ° āĻ¸āĻ‚āĻ¸ā§āĻĨāĻžāĻ¨āĻ—ā§āĻ˛āĻŋāĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻŦāĻŋāĻŽā§‚āĻ°ā§āĻ¤ āĻ¸ā§āĻ¤āĻ°āĨ¤ āĻ•āĻžāĻ°āĻŖ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€ āĻ¸ā§āĻĒā§‡āĻ¸ āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽāĻ—ā§āĻ˛āĻŋāĻ•ā§‡ āĻ¤āĻžāĻĻā§‡āĻ° āĻ¸āĻ‚āĻ¸ā§āĻĨāĻžāĻ¨āĻ—ā§āĻ˛āĻŋ āĻ¸āĻ°āĻžāĻ¸āĻ°āĻŋ āĻĒāĻ°āĻŋāĻšāĻžāĻ˛āĻ¨āĻž āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡, āĻ¤āĻžāĻĻā§‡āĻ° āĻ¨āĻŋāĻœāĻ¸ā§āĻŦ āĻšāĻžāĻ°ā§āĻĄāĻ“āĻ¯āĻŧā§āĻ¯āĻžāĻ°āĻ“ āĻĒāĻ°āĻŋāĻšāĻžāĻ˛āĻ¨āĻž āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡āĨ¤ āĻāĻŸāĻŋ āĻĒā§āĻ°āĻžāĻ¯āĻŧāĻ‡ āĻ†āĻĒāĻ¨āĻžāĻ° āĻ¨āĻŋāĻœāĻ¸ā§āĻŦ āĻĄā§āĻ°āĻžāĻ‡āĻ­āĻžāĻ° āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽ āĻ•āĻ°āĻžāĻ° āĻŽāĻžāĻ¨ā§‡ āĻšāĻ¯āĻŧ.
  • āĻ¯ā§‡āĻšā§‡āĻ¤ā§ āĻ†āĻŽāĻ°āĻž āĻ•āĻžāĻ°ā§āĻ¨ā§‡āĻ˛ā§‡āĻ° āĻ¸ā§āĻĨāĻžāĻ¨ āĻ¸āĻŽā§āĻĒā§‚āĻ°ā§āĻŖāĻ°ā§‚āĻĒā§‡ āĻ›ā§‡āĻĄāĻŧā§‡ āĻĻāĻŋāĻšā§āĻ›āĻŋ, āĻ¤āĻžāĻ‡ āĻ†āĻŽāĻ°āĻž āĻ•āĻžāĻ°ā§āĻ¨ā§‡āĻ˛ā§‡āĻ° āĻĻā§āĻŦāĻžāĻ°āĻž āĻ¸āĻ°āĻŦāĻ°āĻžāĻš āĻ•āĻ°āĻž āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ¨ā§‡āĻŸāĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻ•āĻŋāĻ‚ āĻ•āĻžāĻ°ā§āĻ¯āĻ•āĻžāĻ°āĻŋāĻ¤āĻžāĻ“ āĻ›ā§‡āĻĄāĻŧā§‡ āĻĻāĻŋāĻšā§āĻ›āĻŋāĨ¤ āĻ‡āĻ‰āĻœāĻžāĻ° āĻ¸ā§āĻĒā§‡āĻ¸ āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽāĻ—ā§āĻ˛āĻŋāĻ•ā§‡ āĻ…āĻŦāĻļā§āĻ¯āĻ‡ āĻ•āĻžāĻ°ā§āĻ¨ā§‡āĻ˛ āĻŦāĻž āĻ…āĻĒāĻžāĻ°ā§‡āĻŸāĻŋāĻ‚ āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽ āĻĻā§āĻŦāĻžāĻ°āĻž āĻ‰āĻĒāĻ˛āĻŦā§āĻ§ āĻŦā§ˆāĻļāĻŋāĻˇā§āĻŸā§āĻ¯āĻ—ā§āĻ˛āĻŋāĻ•ā§‡ āĻĒā§āĻ¨āĻ°āĻžāĻ¯āĻŧ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻ— āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡āĨ¤
  • āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽāĻ—ā§āĻ˛āĻŋ āĻ¸ā§āĻ¯āĻžāĻ¨ā§āĻĄāĻŦāĻ•ā§āĻ¸ āĻŽā§‹āĻĄā§‡ āĻ•āĻžāĻœ āĻ•āĻ°ā§‡, āĻ¯āĻž āĻ¤āĻžāĻĻā§‡āĻ° āĻŽāĻŋāĻĨāĻ¸ā§āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ•ā§‡ āĻ—ā§āĻ°ā§āĻ¤ā§āĻŦ āĻ¸āĻšāĻ•āĻžāĻ°ā§‡ āĻ¸ā§€āĻŽāĻŋāĻ¤ āĻ•āĻ°ā§‡ āĻāĻŦāĻ‚ āĻ…āĻĒāĻžāĻ°ā§‡āĻŸāĻŋāĻ‚ āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽā§‡āĻ° āĻ…āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻ…āĻ‚āĻļā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻāĻ•ā§€āĻ­ā§‚āĻ¤ āĻšāĻ¤ā§‡ āĻŦāĻžāĻ§āĻž āĻĻā§‡āĻ¯āĻŧāĨ¤

āĻŽā§‹āĻŸāĻ•āĻĨāĻž, āĻ¯āĻ–āĻ¨ āĻ‡āĻ‰āĻœāĻžāĻ° āĻ¸ā§āĻĒā§‡āĻ¸ā§‡ āĻ¨ā§‡āĻŸāĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻ•āĻŋāĻ‚ āĻ˜āĻŸā§‡, āĻ¤āĻ–āĻ¨ āĻ•āĻžāĻ°ā§āĻ¨ā§‡āĻ˛ āĻĨā§‡āĻ•ā§‡ āĻ‡āĻ‰āĻœāĻžāĻ° āĻ¸ā§āĻĒā§‡āĻ¸ā§‡ āĻĒā§āĻ¯āĻžāĻ•ā§‡āĻŸ āĻĒā§āĻ°āĻ¸ā§‡āĻ¸āĻŋāĻ‚ āĻ¸āĻ°āĻžāĻ¨ā§‹āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ āĻĒāĻžāĻ°āĻĢāĻ°āĻŽā§āĻ¯āĻžāĻ¨ā§āĻ¸ āĻ˛āĻžāĻ­ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧāĨ¤ XDP āĻ āĻŋāĻ• āĻŦāĻŋāĻĒāĻ°ā§€āĻ¤ āĻ•āĻžāĻœ āĻ•āĻ°ā§‡: āĻāĻŸāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€āĻ° āĻ¸ā§āĻĨāĻžāĻ¨ (āĻĢāĻŋāĻ˛ā§āĻŸāĻžāĻ°, āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨āĻ•āĻžāĻ°ā§€, āĻ°āĻžāĻ‰āĻŸāĻŋāĻ‚, āĻ‡āĻ¤ā§āĻ¯āĻžāĻĻāĻŋ) āĻĨā§‡āĻ•ā§‡ āĻ•āĻžāĻ°ā§āĻ¨ā§‡āĻ˛ āĻ¸ā§āĻĒā§‡āĻ¸ā§‡ āĻ¨ā§‡āĻŸāĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻ•āĻŋāĻ‚ āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽāĻ—ā§āĻ˛āĻŋāĻ•ā§‡ āĻ¸āĻ°āĻŋāĻ¯āĻŧā§‡ āĻĻā§‡āĻ¯āĻŧāĨ¤ āĻāĻ•āĻŸāĻŋ āĻĒā§āĻ¯āĻžāĻ•ā§‡āĻŸ āĻāĻ•āĻŸāĻŋ āĻ¨ā§‡āĻŸāĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻ• āĻ‡āĻ¨ā§āĻŸāĻžāĻ°āĻĢā§‡āĻ¸ā§‡ āĻ†āĻ˜āĻžāĻ¤ āĻ•āĻ°āĻžāĻ° āĻ¸āĻžāĻĨā§‡ āĻ¸āĻžāĻĨā§‡ āĻāĻŦāĻ‚ āĻāĻŸāĻŋ āĻ•āĻžāĻ°ā§āĻ¨ā§‡āĻ˛ āĻ¨ā§‡āĻŸāĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻ• āĻ¸āĻžāĻŦāĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽā§‡ āĻšāĻ˛ā§‡ āĻ¯āĻžāĻ“āĻ¯āĻŧāĻžāĻ° āĻ†āĻ—ā§‡ XDP āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻ¨ā§‡āĻŸāĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻ• āĻĢāĻžāĻ‚āĻļāĻ¨ āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻ¨ āĻ•āĻ°āĻ¤ā§‡ āĻĻā§‡āĻ¯āĻŧāĨ¤ āĻĢāĻ˛āĻ¸ā§āĻŦāĻ°ā§‚āĻĒ, āĻĒā§āĻ¯āĻžāĻ•ā§‡āĻŸ āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ•āĻ°āĻŖ āĻ—āĻ¤āĻŋ āĻ‰āĻ˛ā§āĻ˛ā§‡āĻ–āĻ¯ā§‹āĻ—ā§āĻ¯āĻ­āĻžāĻŦā§‡ āĻŦā§ƒāĻĻā§āĻ§āĻŋ āĻĒāĻžāĻ¯āĻŧāĨ¤ āĻ¯āĻžāĻ‡āĻšā§‹āĻ•, āĻ•āĻžāĻ°ā§āĻ¨ā§‡āĻ˛ āĻ•ā§€āĻ­āĻžāĻŦā§‡ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€āĻ•ā§‡ āĻ•āĻžāĻ°ā§āĻ¨ā§‡āĻ˛ āĻ¸ā§āĻĒā§‡āĻ¸ā§‡ āĻ¤āĻžāĻĻā§‡āĻ° āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽāĻ—ā§āĻ˛āĻŋ āĻšāĻžāĻ˛āĻžāĻ¨ā§‹āĻ° āĻ…āĻ¨ā§āĻŽāĻ¤āĻŋ āĻĻā§‡āĻ¯āĻŧ? āĻāĻ‡ āĻĒā§āĻ°āĻļā§āĻ¨ā§‡āĻ° āĻ‰āĻ¤ā§āĻ¤āĻ° āĻĻā§‡āĻ“āĻ¯āĻŧāĻžāĻ° āĻ†āĻ—ā§‡, āĻ†āĻ¸ā§āĻ¨ BPF āĻ•ā§€ āĻ¤āĻž āĻĻā§‡āĻ–ā§‡ āĻ¨ā§‡āĻ“āĻ¯āĻŧāĻž āĻ¯āĻžāĻ•āĨ¤

BPF āĻāĻŦāĻ‚ eBPF

āĻŦāĻŋāĻ­ā§āĻ°āĻžāĻ¨ā§āĻ¤āĻŋāĻ•āĻ° āĻ¨āĻžāĻŽ āĻ¸āĻ¤ā§āĻ¤ā§āĻŦā§‡āĻ“, BPF (āĻŦāĻžāĻ°ā§āĻ•āĻ˛ā§‡ āĻĒā§āĻ¯āĻžāĻ•ā§‡āĻŸ āĻĢāĻŋāĻ˛ā§āĻŸāĻžāĻ°āĻŋāĻ‚) āĻ†āĻ¸āĻ˛ā§‡, āĻāĻ•āĻŸāĻŋ āĻ­āĻžāĻ°ā§āĻšā§āĻ¯āĻŧāĻžāĻ˛ āĻŽā§‡āĻļāĻŋāĻ¨ āĻŽāĻĄā§‡āĻ˛āĨ¤ āĻāĻ‡ āĻ­āĻžāĻ°ā§āĻšā§āĻ¯āĻŧāĻžāĻ˛ āĻŽā§‡āĻļāĻŋāĻ¨āĻŸāĻŋ āĻŽā§‚āĻ˛āĻ¤ āĻĒā§āĻ¯āĻžāĻ•ā§‡āĻŸ āĻĢāĻŋāĻ˛ā§āĻŸāĻžāĻ°āĻŋāĻ‚ āĻĒāĻ°āĻŋāĻšāĻžāĻ˛āĻ¨āĻž āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻĄāĻŋāĻœāĻžāĻ‡āĻ¨ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛, āĻ¤āĻžāĻ‡ āĻ¨āĻžāĻŽāĨ¤

BPF āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻ¸āĻŦāĻšā§‡āĻ¯āĻŧā§‡ āĻŦāĻŋāĻ–ā§āĻ¯āĻžāĻ¤ āĻŸā§āĻ˛ āĻāĻ• tcpdump. āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻĒā§āĻ¯āĻžāĻ•ā§‡āĻŸ āĻ•ā§āĻ¯āĻžāĻĒāĻšāĻžāĻ° āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ tcpdump āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€ āĻĒā§āĻ¯āĻžāĻ•ā§‡āĻŸ āĻĢāĻŋāĻ˛ā§āĻŸāĻžāĻ° āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻ…āĻ­āĻŋāĻŦā§āĻ¯āĻ•ā§āĻ¤āĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨āĨ¤ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻāĻ‡ āĻ…āĻ­āĻŋāĻŦā§āĻ¯āĻ•ā§āĻ¤āĻŋāĻ° āĻ¸āĻžāĻĨā§‡ āĻŽāĻŋāĻ˛ā§‡ āĻ¯āĻžāĻ“āĻ¯āĻŧāĻž āĻĒā§āĻ¯āĻžāĻ•ā§‡āĻŸāĻ—ā§āĻ˛āĻŋ āĻ•ā§āĻ¯āĻžāĻĒāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻšāĻŦā§‡ā§ˇ āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§‚āĻĒ, āĻ…āĻ­āĻŋāĻŦā§āĻ¯āĻ•ā§āĻ¤āĻŋ "tcp dst port 80” āĻĒā§‹āĻ°ā§āĻŸ 80 āĻ āĻ†āĻ—āĻ¤ āĻ¸āĻŽāĻ¸ā§āĻ¤ TCP āĻĒā§āĻ¯āĻžāĻ•ā§‡āĻŸāĻ•ā§‡ āĻŦā§‹āĻāĻžāĻ¯āĻŧāĨ¤ āĻ•āĻŽā§āĻĒāĻžāĻ‡āĻ˛āĻžāĻ° āĻāĻ‡ āĻ…āĻ­āĻŋāĻŦā§āĻ¯āĻ•ā§āĻ¤āĻŋāĻŸāĻŋāĻ•ā§‡ BPF āĻŦāĻžāĻ‡āĻŸāĻ•ā§‹āĻĄā§‡ āĻ°ā§‚āĻĒāĻžāĻ¨ā§āĻ¤āĻ° āĻ•āĻ°ā§‡ āĻ›ā§‹āĻŸ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤

$ sudo tcpdump -d "tcp dst port 80"
(000) ldh [12] (001) jeq #0x86dd jt 2 jf 6
(002) ldb [20] (003) jeq #0x6 jt 4 jf 15
(004) ldh [56] (005) jeq #0x50 jt 14 jf 15
(006) jeq #0x800 jt 7 jf 15
(007) ldb [23] (008) jeq #0x6 jt 9 jf 15
(009) ldh [20] (010) jset #0x1fff jt 15 jf 11
(011) ldxb 4*([14]&0xf)
(012) ldh [x + 16] (013) jeq #0x50 jt 14 jf 15
(014) ret #262144
(015) ret #0

āĻ‰āĻĒāĻ°ā§‡āĻ° āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽāĻŸāĻŋ āĻŽā§‚āĻ˛āĻ¤ āĻāĻŸāĻŋ āĻ•āĻ°ā§‡:

  • āĻ¨āĻŋāĻ°ā§āĻĻā§‡āĻļ (000): āĻ…āĻĢāĻ¸ā§‡āĻŸ 12-āĻ āĻĒā§āĻ¯āĻžāĻ•ā§‡āĻŸ āĻ˛ā§‹āĻĄ āĻ•āĻ°ā§āĻ¨, āĻāĻ•āĻŸāĻŋ 16-āĻŦāĻŋāĻŸ āĻļāĻŦā§āĻĻ āĻšāĻŋāĻ¸āĻžāĻŦā§‡, āĻ¸āĻžā§āĻšāĻ¯āĻŧāĻ•āĻžāĻ°ā§€āĻ¤ā§‡āĨ¤ āĻ…āĻĢāĻ¸ā§‡āĻŸ 12 āĻĒā§āĻ¯āĻžāĻ•ā§‡āĻŸā§‡āĻ° āĻ‡āĻĨāĻžāĻ°āĻŸāĻžāĻ‡āĻĒā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻŽāĻŋāĻ˛ā§‡ āĻ¯āĻžāĻ¯āĻŧāĨ¤
  • āĻ¨āĻŋāĻ°ā§āĻĻā§‡āĻļ (001): 0x86dd āĻāĻ° āĻ¸āĻžāĻĨā§‡ āĻ¸āĻžā§āĻšāĻ¯āĻŧāĻ•āĻžāĻ°ā§€āĻ° āĻŽāĻžāĻ¨ āĻ¤ā§āĻ˛āĻ¨āĻž āĻ•āĻ°ā§‡, āĻ…āĻ°ā§āĻĨāĻžā§Ž, IPv6 āĻāĻ° āĻœāĻ¨ā§āĻ¯ āĻ‡āĻĨāĻžāĻ°āĻŸāĻžāĻ‡āĻĒ āĻŽāĻžāĻ¨ā§‡āĻ° āĻ¸āĻžāĻĨā§‡āĨ¤ āĻ¯āĻĻāĻŋ āĻĢāĻ˛āĻžāĻĢāĻ˛āĻŸāĻŋ āĻ¸āĻ¤ā§āĻ¯ āĻšāĻ¯āĻŧ, āĻ¤āĻžāĻšāĻ˛ā§‡ āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽ āĻ•āĻžāĻ‰āĻ¨ā§āĻŸāĻžāĻ°āĻŸāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻā§‡āĻļā§‡ (002) āĻ¯āĻžāĻ¯āĻŧ āĻāĻŦāĻ‚ āĻ¯āĻĻāĻŋ āĻ¨āĻž āĻšāĻ¯āĻŧ, āĻ¤āĻžāĻšāĻ˛ā§‡ (006)āĨ¤
  • āĻ¨āĻŋāĻ°ā§āĻĻā§‡āĻļ (006): 0x800 (IPv4 āĻāĻ° āĻœāĻ¨ā§āĻ¯ āĻ‡āĻĨāĻžāĻ°āĻŸāĻžāĻ‡āĻĒ āĻŽāĻžāĻ¨) āĻāĻ° āĻ¸āĻžāĻĨā§‡ āĻŽāĻžāĻ¨ āĻ¤ā§āĻ˛āĻ¨āĻž āĻ•āĻ°ā§‡āĨ¤ āĻ¯āĻĻāĻŋ āĻ‰āĻ¤ā§āĻ¤āĻ°āĻŸāĻŋ āĻ¸āĻ¤ā§āĻ¯ āĻšāĻ¯āĻŧ, āĻ¤āĻŦā§‡ āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽāĻŸāĻŋ (007) āĻ āĻ¯āĻžāĻ¯āĻŧ, āĻ¯āĻĻāĻŋ āĻ¨āĻž āĻšāĻ¯āĻŧ āĻ¤āĻŦā§‡ (015)āĨ¤

āĻāĻŦāĻ‚ āĻ¤āĻžāĻ‡ āĻ¯āĻ¤āĻ•ā§āĻˇāĻŖ āĻ¨āĻž āĻĒā§āĻ¯āĻžāĻ•ā§‡āĻŸ āĻĢāĻŋāĻ˛ā§āĻŸāĻžāĻ°āĻŋāĻ‚ āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽ āĻāĻ•āĻŸāĻŋ āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻ•āĻ°ā§‡āĨ¤ āĻāĻŸāĻŋ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ¤ āĻāĻ•āĻŸāĻŋ āĻŦā§āĻ˛āĻŋāĻ¯āĻŧāĻžāĻ¨āĨ¤ āĻāĻ•āĻŸāĻŋ āĻ…-āĻļā§‚āĻ¨ā§āĻ¯ āĻŽāĻžāĻ¨ (āĻ¨āĻŋāĻ°ā§āĻĻā§‡āĻļ (014)) āĻĢā§‡āĻ°āĻ¤ āĻĻā§‡āĻ“āĻ¯āĻŧāĻžāĻ° āĻ…āĻ°ā§āĻĨ āĻšāĻ˛ āĻĒā§āĻ¯āĻžāĻ•ā§‡āĻŸāĻŸāĻŋ āĻ—ā§ƒāĻšā§€āĻ¤ āĻšāĻ¯āĻŧā§‡āĻ›ā§‡ āĻāĻŦāĻ‚ āĻāĻ•āĻŸāĻŋ āĻļā§‚āĻ¨ā§āĻ¯ āĻŽāĻžāĻ¨ (āĻ¨āĻŋāĻ°ā§āĻĻā§‡āĻļ (015)) āĻĢā§‡āĻ°āĻ¤ āĻĻā§‡āĻ“āĻ¯āĻŧāĻžāĻ° āĻ…āĻ°ā§āĻĨ āĻšāĻ˛ āĻĒā§āĻ¯āĻžāĻ•ā§‡āĻŸāĻŸāĻŋ āĻ—ā§āĻ°āĻšāĻŖ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧāĻ¨āĻŋā§ˇ

BPF āĻ­āĻžāĻ°ā§āĻšā§āĻ¯āĻŧāĻžāĻ˛ āĻŽā§‡āĻļāĻŋāĻ¨ āĻāĻŦāĻ‚ āĻāĻ° āĻŦāĻžāĻ‡āĻŸāĻ•ā§‹āĻĄ 1992 āĻ¸āĻžāĻ˛ā§‡āĻ° āĻļā§‡āĻˇā§‡āĻ° āĻĻāĻŋāĻ•ā§‡ āĻ¸ā§āĻŸāĻŋāĻ­ āĻŽā§āĻ¯āĻžāĻ•āĻ•ā§āĻ¯āĻžāĻ¨ āĻāĻŦāĻ‚ āĻ­ā§āĻ¯āĻžāĻ¨ āĻœā§āĻ¯āĻžāĻ•āĻŦāĻ¸āĻ¨ āĻĻā§āĻŦāĻžāĻ°āĻž āĻĒā§āĻ°āĻ¸ā§āĻ¤āĻžāĻŦāĻŋāĻ¤ āĻšāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛ āĻ¯āĻ–āĻ¨ āĻ¤āĻžāĻĻā§‡āĻ° āĻ—āĻŦā§‡āĻˇāĻŖāĻžāĻĒāĻ¤ā§āĻ° āĻĒā§āĻ°āĻ•āĻžāĻļāĻŋāĻ¤ āĻšāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛ BSD āĻĒā§āĻ¯āĻžāĻ•ā§‡āĻŸ āĻĢāĻŋāĻ˛ā§āĻŸāĻžāĻ°: āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€-āĻ¸ā§āĻ¤āĻ°ā§‡āĻ° āĻĒā§āĻ¯āĻžāĻ•ā§‡āĻŸ āĻ•ā§āĻ¯āĻžāĻĒāĻšāĻžāĻ°ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ¨āĻ¤ā§āĻ¨ āĻ†āĻ°ā§āĻ•āĻŋāĻŸā§‡āĻ•āĻšāĻžāĻ°, āĻāĻ‡ āĻĒā§āĻ°āĻ¯ā§āĻ•ā§āĻ¤āĻŋāĻŸāĻŋ āĻĒā§āĻ°āĻĨāĻŽ 1993 āĻ¸āĻžāĻ˛ā§‡āĻ° āĻļā§€āĻ¤ā§‡ Usenix āĻ¸āĻŽā§āĻŽā§‡āĻ˛āĻ¨ā§‡ āĻ‰āĻĒāĻ¸ā§āĻĨāĻžāĻĒāĻŋāĻ¤ āĻšāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛āĨ¤

āĻ¯ā§‡āĻšā§‡āĻ¤ā§ BPF āĻāĻ•āĻŸāĻŋ āĻ­āĻžāĻ°ā§āĻšā§āĻ¯āĻŧāĻžāĻ˛ āĻŽā§‡āĻļāĻŋāĻ¨, āĻāĻŸāĻŋ āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽāĻ—ā§āĻ˛āĻŋ āĻšāĻžāĻ˛āĻžāĻ¨ā§‹āĻ° āĻĒāĻ°āĻŋāĻŦā§‡āĻļāĻ•ā§‡ āĻ¸āĻ‚āĻœā§āĻžāĻžāĻ¯āĻŧāĻŋāĻ¤ āĻ•āĻ°ā§‡āĨ¤ āĻŦāĻžāĻ‡āĻŸāĻ•ā§‹āĻĄ āĻ›āĻžāĻĄāĻŧāĻžāĻ“, āĻāĻŸāĻŋ āĻŦā§āĻ¯āĻžāĻš āĻŽā§‡āĻŽāĻ°āĻŋ āĻŽāĻĄā§‡āĻ˛ (āĻ˛ā§‹āĻĄ āĻ¨āĻŋāĻ°ā§āĻĻā§‡āĻļāĻžāĻŦāĻ˛ā§€ āĻŦā§āĻ¯āĻžāĻšā§‡āĻ° āĻ‰āĻĒāĻ° āĻĒā§āĻ°āĻ¯ā§‹āĻœā§āĻ¯), āĻ°ā§‡āĻœāĻŋāĻ¸ā§āĻŸāĻžāĻ° (āĻ āĻāĻŦāĻ‚ āĻāĻ•ā§āĻ¸; āĻ…ā§āĻ¯āĻžāĻ•āĻŋāĻ‰āĻŽā§āĻ˛ā§‡āĻŸāĻ° āĻāĻŦāĻ‚ āĻ‡āĻ¨āĻĄā§‡āĻ•ā§āĻ¸ āĻ°ā§‡āĻœāĻŋāĻ¸ā§āĻŸāĻžāĻ°), āĻ¸ā§āĻ•ā§āĻ°ā§āĻ¯āĻžāĻš āĻŽā§‡āĻŽāĻ°āĻŋ āĻ¸ā§āĻŸā§‹āĻ°ā§‡āĻœ āĻāĻŦāĻ‚ āĻāĻ•āĻŸāĻŋ āĻ…āĻ¨ā§āĻ¤āĻ°ā§āĻ¨āĻŋāĻšāĻŋāĻ¤ āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽ āĻ•āĻžāĻ‰āĻ¨ā§āĻŸāĻžāĻ°āĻ•ā§‡āĻ“ āĻ¸āĻ‚āĻœā§āĻžāĻžāĻ¯āĻŧāĻŋāĻ¤ āĻ•āĻ°ā§‡āĨ¤ āĻŽāĻœāĻžāĻ° āĻŦāĻŋāĻˇāĻ¯āĻŧ āĻšāĻ˛, BPF āĻŦāĻžāĻ‡āĻŸāĻ•ā§‹āĻĄāĻŸāĻŋ Motorola 6502 ISA āĻāĻ° āĻĒāĻ°ā§‡ āĻŽāĻĄā§‡āĻ˛ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛āĨ¤ āĻ¸ā§āĻŸāĻŋāĻ­ āĻŽā§āĻ¯āĻžāĻ•āĻ•ā§āĻ¯āĻžāĻ¨ āĻ¤āĻžāĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻ¸ā§āĻŽāĻ°āĻŖ āĻĒā§‚āĻ°ā§āĻŖāĻžāĻ™ā§āĻ— āĻĒā§āĻ°āĻ¤āĻŋāĻŦā§‡āĻĻāĻ¨ Sharkfest '11-āĻ, āĻ¤āĻŋāĻ¨āĻŋ Apple II-āĻ¤ā§‡ āĻ¤āĻžāĻ° āĻšāĻžāĻ‡āĻ¸ā§āĻ•ā§āĻ˛ā§‡āĻ° āĻĻāĻŋāĻ¨ā§‡āĻ° āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽāĻŋāĻ‚ āĻĨā§‡āĻ•ā§‡ āĻŦāĻŋāĻ˛ā§āĻĄ 6502 āĻāĻ° āĻ¸āĻžāĻĨā§‡ āĻĒāĻ°āĻŋāĻšāĻŋāĻ¤ āĻ›āĻŋāĻ˛ā§‡āĻ¨ āĻāĻŦāĻ‚ āĻāĻ‡ āĻœā§āĻžāĻžāĻ¨ āĻ¤āĻžāĻ° BPF āĻŦāĻžāĻ‡āĻŸāĻ•ā§‹āĻĄ āĻĄāĻŋāĻœāĻžāĻ‡āĻ¨ā§‡āĻ° āĻ•āĻžāĻœāĻ•ā§‡ āĻĒā§āĻ°āĻ­āĻžāĻŦāĻŋāĻ¤ āĻ•āĻ°ā§‡āĻ›āĻŋāĻ˛āĨ¤

āĻŦāĻŋāĻĒāĻŋāĻāĻĢ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻ˛āĻŋāĻ¨āĻžāĻ•ā§āĻ¸ āĻ•āĻžāĻ°ā§āĻ¨ā§‡āĻ˛ā§‡ v2.5 āĻāĻŦāĻ‚ āĻ‰āĻšā§āĻšāĻ¤āĻ° āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖā§‡ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻ— āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡, āĻĒā§āĻ°āĻ§āĻžāĻ¨āĻ¤ āĻœā§‡ āĻļā§āĻ˛āĻŋāĻ¸ā§āĻŸā§‡āĻ° āĻĒā§āĻ°āĻšā§‡āĻˇā§āĻŸāĻžāĻ¯āĻŧ āĻ¯ā§‹āĻ— āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤ BPF āĻ•ā§‹āĻĄ 2011 āĻ¸āĻžāĻ˛ āĻĒāĻ°ā§āĻ¯āĻ¨ā§āĻ¤ āĻ…āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻŋāĻ¤ āĻ›āĻŋāĻ˛, āĻ¯āĻ–āĻ¨ āĻāĻ°āĻŋāĻ• āĻĄā§āĻŽāĻžāĻ¸ā§‡āĻŸ BPF āĻĻā§‹āĻ­āĻžāĻˇā§€āĻ•ā§‡ JIT āĻŽā§‹āĻĄā§‡ āĻšāĻžāĻ˛āĻžāĻ¨ā§‹āĻ° āĻœāĻ¨ā§āĻ¯ āĻĒā§āĻ¨āĻ°āĻžāĻ¯āĻŧ āĻĄāĻŋāĻœāĻžāĻ‡āĻ¨ āĻ•āĻ°ā§‡āĻ›āĻŋāĻ˛ā§‡āĻ¨ (āĻ¸ā§‚āĻ¤ā§āĻ°: āĻĒā§āĻ¯āĻžāĻ•ā§‡āĻŸ āĻĢāĻŋāĻ˛ā§āĻŸāĻžāĻ° āĻœāĻ¨ā§āĻ¯ JIT) āĻāĻ° āĻĒāĻ°ā§‡, āĻ•āĻžāĻ°ā§āĻ¨ā§‡āĻ˛, BPF āĻŦāĻžāĻ‡āĻŸāĻ•ā§‹āĻĄ āĻŦā§āĻ¯āĻžāĻ–ā§āĻ¯āĻž āĻ•āĻ°āĻžāĻ° āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤ā§‡, āĻ¸āĻ°āĻžāĻ¸āĻ°āĻŋ BPF āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽāĻ—ā§āĻ˛āĻŋāĻ•ā§‡ āĻ˛āĻ•ā§āĻˇā§āĻ¯ āĻ†āĻ°ā§āĻ•āĻŋāĻŸā§‡āĻ•āĻšāĻžāĻ°ā§‡ āĻ°ā§‚āĻĒāĻžāĻ¨ā§āĻ¤āĻ° āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡: x86, ARM, MIPS āĻ‡āĻ¤ā§āĻ¯āĻžāĻĻāĻŋāĨ¤

āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§€āĻ¤ā§‡, 2014 āĻ¸āĻžāĻ˛ā§‡, āĻ†āĻ˛ā§‡āĻ•ā§āĻ¸āĻŋ āĻ¸ā§āĻŸāĻžāĻ°ā§‹āĻ­āĻ¯āĻŧā§‡āĻŸāĻ­ BPF-āĻāĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻ¨āĻ¤ā§āĻ¨ JIT āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ° āĻĒā§āĻ°āĻ¸ā§āĻ¤āĻžāĻŦ āĻ•āĻ°ā§‡āĻ›āĻŋāĻ˛ā§‡āĻ¨āĨ¤ āĻĒā§āĻ°āĻ•ā§ƒāĻ¤āĻĒāĻ•ā§āĻˇā§‡, āĻāĻ‡ āĻ¨āĻ¤ā§āĻ¨ JIT āĻāĻ•āĻŸāĻŋ āĻ¨āĻ¤ā§āĻ¨ BPF-āĻ­āĻŋāĻ¤ā§āĻ¤āĻŋāĻ• āĻ†āĻ°ā§āĻ•āĻŋāĻŸā§‡āĻ•āĻšāĻžāĻ°ā§‡ āĻĒāĻ°āĻŋāĻŖāĻ¤ āĻšāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛ āĻāĻŦāĻ‚ āĻāĻŸāĻŋāĻ•ā§‡ eBPF āĻŦāĻ˛āĻž āĻšāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛āĨ¤ āĻ†āĻŽāĻŋ āĻŽāĻ¨ā§‡ āĻ•āĻ°āĻŋ āĻ‰āĻ­āĻ¯āĻŧ VM āĻ•āĻŋāĻ›ā§ āĻ¸āĻŽāĻ¯āĻŧā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ¸āĻšāĻžāĻŦāĻ¸ā§āĻĨāĻžāĻ¨ āĻ•āĻ°ā§‡āĻ›āĻŋāĻ˛, āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻŦāĻ°ā§āĻ¤āĻŽāĻžāĻ¨ā§‡ āĻĒā§āĻ¯āĻžāĻ•ā§‡āĻŸ āĻĢāĻŋāĻ˛ā§āĻŸāĻžāĻ°āĻŋāĻ‚ āĻ‡āĻŦāĻŋāĻĒāĻŋāĻāĻĢ-āĻāĻ° āĻ‰āĻĒāĻ° āĻ­āĻŋāĻ¤ā§āĻ¤āĻŋ āĻ•āĻ°ā§‡ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻ— āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤ āĻĒā§āĻ°āĻ•ā§ƒāĻ¤āĻĒāĻ•ā§āĻˇā§‡, āĻ†āĻ§ā§āĻ¨āĻŋāĻ• āĻĄāĻ•ā§āĻŽā§‡āĻ¨ā§āĻŸā§‡āĻļāĻ¨ā§‡āĻ° āĻ…āĻ¨ā§‡āĻ• āĻ‰āĻĻāĻžāĻšāĻ°āĻŖā§‡, BPF āĻ•ā§‡ eBPF āĻŦā§‹āĻāĻžāĻ¨ā§‹ āĻšāĻ¯āĻŧ, āĻāĻŦāĻ‚ āĻ•ā§āĻ˛āĻžāĻ¸āĻŋāĻ•ā§āĻ¯āĻžāĻ˛ BPF āĻ†āĻœ cBPF āĻ¨āĻžāĻŽā§‡ āĻĒāĻ°āĻŋāĻšāĻŋāĻ¤āĨ¤

eBPF āĻ•ā§āĻ˛āĻžāĻ¸āĻŋāĻ• BPF āĻ­āĻžāĻ°ā§āĻšā§āĻ¯āĻŧāĻžāĻ˛ āĻŽā§‡āĻļāĻŋāĻ¨āĻ•ā§‡ āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āĻ¨ āĻ‰āĻĒāĻžāĻ¯āĻŧā§‡ āĻĒā§āĻ°āĻ¸āĻžāĻ°āĻŋāĻ¤ āĻ•āĻ°ā§‡:

  • āĻ†āĻ§ā§āĻ¨āĻŋāĻ• 64-āĻŦāĻŋāĻŸ āĻ†āĻ°ā§āĻ•āĻŋāĻŸā§‡āĻ•āĻšāĻžāĻ°ā§‡āĻ° āĻ‰āĻĒāĻ° āĻ­āĻŋāĻ¤ā§āĻ¤āĻŋ āĻ•āĻ°ā§‡āĨ¤ eBPF 64-āĻŦāĻŋāĻŸ āĻ°ā§‡āĻœāĻŋāĻ¸ā§āĻŸāĻžāĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻāĻŦāĻ‚ āĻ‰āĻĒāĻ˛āĻŦā§āĻ§ āĻ°ā§‡āĻœāĻŋāĻ¸ā§āĻŸāĻžāĻ°ā§‡āĻ° āĻ¸āĻ‚āĻ–ā§āĻ¯āĻž 2 (āĻ¸āĻ‚āĻ—ā§āĻ°āĻšāĻ•āĻžāĻ°ā§€ āĻāĻŦāĻ‚ X) āĻĨā§‡āĻ•ā§‡ āĻŦāĻžāĻĄāĻŧāĻŋāĻ¯āĻŧā§‡ 10 āĻ•āĻ°ā§‡āĨ¤ eBPF āĻ…āĻ¤āĻŋāĻ°āĻŋāĻ•ā§āĻ¤ āĻ…āĻĒāĻ•ā§‹āĻĄāĻ“ āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻ•āĻ°ā§‡ (BPF_MOV, BPF_JNE, BPF_CALL...)āĨ¤
  • āĻ¨ā§‡āĻŸāĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻ• āĻ¸ā§āĻ¤āĻ° āĻ¸āĻžāĻŦāĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽ āĻĨā§‡āĻ•ā§‡ āĻŦāĻŋāĻšā§āĻ›āĻŋāĻ¨ā§āĻ¨āĨ¤ BPF āĻŦā§āĻ¯āĻžāĻš āĻĄā§‡āĻŸāĻž āĻŽāĻĄā§‡āĻ˛ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻŦāĻžāĻāĻ§āĻž āĻ›āĻŋāĻ˛āĨ¤ āĻ¯ā§‡āĻšā§‡āĻ¤ā§ āĻāĻŸāĻŋ āĻĒā§āĻ¯āĻžāĻ•ā§‡āĻŸ āĻĢāĻŋāĻ˛ā§āĻŸāĻžāĻ°āĻŋāĻ‚āĻ¯āĻŧā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛, āĻāĻŸāĻŋāĻ° āĻ•ā§‹āĻĄāĻŸāĻŋ āĻ¸āĻžāĻŦāĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽā§‡ āĻ…āĻŦāĻ¸ā§āĻĨāĻŋāĻ¤ āĻ›āĻŋāĻ˛ āĻ¯āĻž āĻ¨ā§‡āĻŸāĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻ• āĻ¯ā§‹āĻ—āĻžāĻ¯ā§‹āĻ— āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻ•āĻ°ā§‡āĨ¤ āĻ¯āĻžāĻ‡āĻšā§‹āĻ•, eBPF āĻ­āĻžāĻ°ā§āĻšā§āĻ¯āĻŧāĻžāĻ˛ āĻŽā§‡āĻļāĻŋāĻ¨āĻŸāĻŋ āĻ†āĻ° āĻĄā§‡āĻŸāĻž āĻŽāĻĄā§‡āĻ˛ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻ†āĻŦāĻĻā§āĻ§ āĻ¨āĻ¯āĻŧ āĻāĻŦāĻ‚ āĻ¯ā§‡āĻ•ā§‹āĻ¨ā§‹ āĻ‰āĻĻā§āĻĻā§‡āĻļā§āĻ¯ā§‡ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻ¯ā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤ āĻ¸ā§āĻ¤āĻ°āĻžāĻ‚, āĻāĻ–āĻ¨ eBPF āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽāĻŸāĻŋāĻ•ā§‡ āĻŸā§āĻ°ā§‡āĻ¸āĻĒāĻ¯āĻŧā§‡āĻ¨ā§āĻŸ āĻŦāĻž āĻ•ā§‡āĻĒā§āĻ°ā§‹āĻŦā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻ¸āĻ‚āĻ¯ā§āĻ•ā§āĻ¤ āĻ•āĻ°āĻž āĻ¯ā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤ āĻāĻŸāĻŋ āĻ…āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻ•āĻžāĻ°ā§āĻ¨ā§‡āĻ˛ āĻ¸āĻžāĻŦāĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽā§‡āĻ° āĻĒā§āĻ°āĻ¸āĻ™ā§āĻ—ā§‡ āĻ‡āĻŦāĻŋāĻĒāĻŋāĻāĻĢ āĻ‡āĻ¨ā§āĻ¸āĻŸā§āĻ°ā§āĻŽā§‡āĻ¨ā§āĻŸā§‡āĻļāĻ¨, āĻ•āĻ°ā§āĻŽāĻ•ā§āĻˇāĻŽāĻ¤āĻž āĻŦāĻŋāĻļā§āĻ˛ā§‡āĻˇāĻŖ āĻāĻŦāĻ‚ āĻ…āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°ā§‡āĻ° āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡ āĻĒāĻĨ āĻ–ā§āĻ˛ā§‡ āĻĻā§‡āĻ¯āĻŧāĨ¤ āĻāĻ–āĻ¨ āĻ‡āĻŦāĻŋāĻĒāĻŋāĻāĻĢ āĻ•ā§‹āĻĄāĻŸāĻŋ āĻ¤āĻžāĻ° āĻ¨āĻŋāĻœāĻ¸ā§āĻŦ āĻĒāĻĨā§‡ āĻ…āĻŦāĻ¸ā§āĻĨāĻŋāĻ¤: āĻ•āĻžāĻ°ā§āĻ¨ā§‡āĻ˛/āĻŦāĻŋāĻĒāĻŋāĻāĻĢāĨ¤
  • āĻ—ā§āĻ˛ā§‹āĻŦāĻžāĻ˛ āĻĄā§‡āĻŸāĻž āĻ¸ā§āĻŸā§‹āĻ° āĻ¯āĻž āĻŽā§āĻ¯āĻžāĻĒ āĻ¨āĻžāĻŽā§‡ āĻĒāĻ°āĻŋāĻšāĻŋāĻ¤āĨ¤ āĻŽāĻžāĻ¨āĻšāĻŋāĻ¤ā§āĻ° āĻšāĻ˛ āĻŽā§‚āĻ˛-āĻŽā§‚āĻ˛ā§āĻ¯ā§‡āĻ° āĻĻā§‹āĻ•āĻžāĻ¨ āĻ¯āĻž āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€āĻ° āĻ¸ā§āĻĨāĻžāĻ¨ āĻāĻŦāĻ‚ āĻ•āĻžāĻ°ā§āĻ¨ā§‡āĻ˛ āĻ¸ā§āĻĨāĻžāĻ¨ā§‡āĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻĄā§‡āĻŸāĻž āĻŦāĻŋāĻ¨āĻŋāĻŽāĻ¯āĻŧ āĻ¸āĻ•ā§āĻˇāĻŽ āĻ•āĻ°ā§‡āĨ¤ eBPF āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āĻ¨ āĻ§āĻ°āĻ¨ā§‡āĻ° āĻŽāĻžāĻ¨āĻšāĻŋāĻ¤ā§āĻ° āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻ•āĻ°ā§‡āĨ¤
  • āĻ¸ā§‡āĻ•ā§‡āĻ¨ā§āĻĄāĻžāĻ°āĻŋ āĻĢāĻžāĻ‚āĻļāĻ¨āĨ¤ āĻŦāĻŋāĻļā§‡āĻˇ āĻ•āĻ°ā§‡, āĻāĻ•āĻŸāĻŋ āĻĒā§āĻ¯āĻžāĻ•ā§‡āĻœ āĻĒā§āĻ¨āĻ°āĻžāĻ¯āĻŧ āĻ˛āĻŋāĻ–āĻ¤ā§‡, āĻāĻ•āĻŸāĻŋ āĻšā§‡āĻ•āĻ¸āĻžāĻŽ āĻ—āĻŖāĻ¨āĻž āĻ•āĻ°āĻ¤ā§‡, āĻŦāĻž āĻāĻ•āĻŸāĻŋ āĻĒā§āĻ¯āĻžāĻ•ā§‡āĻœ āĻ•ā§āĻ˛ā§‹āĻ¨ āĻ•āĻ°āĻ¤ā§‡āĨ¤ āĻāĻ‡ āĻĢāĻžāĻ‚āĻļāĻ¨āĻ—ā§āĻ˛āĻŋ āĻ•āĻžāĻ°ā§āĻ¨ā§‡āĻ˛ā§‡āĻ° āĻ­āĻŋāĻ¤āĻ°ā§‡ āĻšāĻ˛ā§‡ āĻāĻŦāĻ‚ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€-āĻ¸ā§āĻĒā§‡āĻ¸ āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽ āĻ¨āĻ¯āĻŧāĨ¤ āĻ†āĻĒāĻ¨āĻŋ eBPF āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽ āĻĨā§‡āĻ•ā§‡ āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽ āĻ•āĻ˛ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨āĨ¤
  • āĻ•āĻ˛ āĻļā§‡āĻˇ āĻ•āĻ°ā§āĻ¨āĨ¤ āĻ‡āĻŦāĻŋāĻĒāĻŋāĻāĻĢ-āĻ āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽā§‡āĻ° āĻ†āĻ•āĻžāĻ° 4096 āĻŦāĻžāĻ‡āĻŸā§‡ āĻ¸ā§€āĻŽāĻžāĻŦāĻĻā§āĻ§āĨ¤ āĻŸā§‡āĻ‡āĻ˛ āĻ•āĻ˛ āĻŦā§ˆāĻļāĻŋāĻˇā§āĻŸā§āĻ¯āĻŸāĻŋ āĻāĻ•āĻŸāĻŋ eBPF āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽāĻ•ā§‡ āĻāĻ•āĻŸāĻŋ āĻ¨āĻ¤ā§āĻ¨ eBPF āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽā§‡ āĻ¨āĻŋāĻ¯āĻŧāĻ¨ā§āĻ¤ā§āĻ°āĻŖ āĻ¸ā§āĻĨāĻžāĻ¨āĻžāĻ¨ā§āĻ¤āĻ° āĻ•āĻ°āĻ¤ā§‡ āĻĻā§‡āĻ¯āĻŧ āĻāĻŦāĻ‚ āĻāĻ‡āĻ­āĻžāĻŦā§‡ āĻāĻ‡ āĻ¸ā§€āĻŽāĻžāĻŦāĻĻā§āĻ§āĻ¤āĻžāĻ•ā§‡ āĻŦāĻžāĻ‡āĻĒāĻžāĻ¸ āĻ•āĻ°ā§‡ (32āĻŸāĻŋ āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽ āĻāĻ‡āĻ­āĻžāĻŦā§‡ āĻ˛āĻŋāĻ™ā§āĻ• āĻ•āĻ°āĻž āĻ¯ā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡)āĨ¤

eBPF: āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ

āĻ˛āĻŋāĻ¨āĻžāĻ•ā§āĻ¸ āĻ•āĻžāĻ°ā§āĻ¨ā§‡āĻ˛ āĻ‰āĻ¤ā§āĻ¸āĻ—ā§āĻ˛āĻŋāĻ¤ā§‡ eBPF āĻāĻ° āĻœāĻ¨ā§āĻ¯ āĻŦā§‡āĻļ āĻ•āĻ¯āĻŧā§‡āĻ•āĻŸāĻŋ āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤ āĻ¸ā§‡āĻ—ā§āĻ˛āĻŋ āĻ¸ā§āĻ¯āĻžāĻŽā§āĻĒāĻ˛/bpf/ āĻ āĻĒāĻžāĻ“āĻ¯āĻŧāĻž āĻ¯āĻžāĻ¯āĻŧāĨ¤ āĻāĻ‡ āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ—ā§āĻ˛āĻŋ āĻ•āĻŽā§āĻĒāĻžāĻ‡āĻ˛ āĻ•āĻ°āĻ¤ā§‡, āĻ•ā§‡āĻŦāĻ˛ āĻ˛āĻŋāĻ–ā§āĻ¨:

$ sudo make samples/bpf/

āĻ†āĻŽāĻŋ āĻ¨āĻŋāĻœā§‡ eBPF-āĻāĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ āĻ˛āĻŋāĻ–āĻŦ āĻ¨āĻž, āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻ¸ā§āĻ¯āĻžāĻŽā§āĻĒāĻ˛/bpf/-āĻ āĻ‰āĻĒāĻ˛āĻŦā§āĻ§ āĻ¨āĻŽā§āĻ¨āĻžāĻ° āĻāĻ•āĻŸāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻŦāĨ¤ āĻ†āĻŽāĻŋ āĻ•ā§‹āĻĄā§‡āĻ° āĻ•āĻŋāĻ›ā§ āĻ…āĻ‚āĻļ āĻĻā§‡āĻ–āĻŦ āĻāĻŦāĻ‚ āĻāĻŸāĻŋ āĻ•ā§€āĻ­āĻžāĻŦā§‡ āĻ•āĻžāĻœ āĻ•āĻ°ā§‡ āĻ¤āĻž āĻŦā§āĻ¯āĻžāĻ–ā§āĻ¯āĻž āĻ•āĻ°āĻŦāĨ¤ āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§‚āĻĒ, āĻ†āĻŽāĻŋ āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽāĻŸāĻŋ āĻŦā§‡āĻ›ā§‡ āĻ¨āĻŋāĻ¯āĻŧā§‡āĻ›āĻŋ tracex4.

āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ­āĻžāĻŦā§‡, āĻ¨āĻŽā§āĻ¨āĻž/bpf/-āĻāĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ āĻ‰āĻĻāĻžāĻšāĻ°āĻŖā§‡ āĻĻā§āĻŸāĻŋ āĻĢāĻžāĻ‡āĻ˛ āĻĨāĻžāĻ•ā§‡āĨ¤ āĻāĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡:

  • tracex4_kern.c, eBPF āĻŦāĻžāĻ‡āĻŸāĻ•ā§‹āĻĄ āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻ•āĻžāĻ°ā§āĻ¨ā§‡āĻ˛ā§‡ āĻ•āĻžāĻ°ā§āĻ¯āĻ•āĻ° āĻ•āĻ°āĻž āĻ‰ā§ŽāĻ¸ āĻ•ā§‹āĻĄ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤
  • tracex4_user.c, āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€ āĻ¸ā§āĻĨāĻžāĻ¨ āĻĨā§‡āĻ•ā§‡ āĻāĻ•āĻŸāĻŋ āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤

āĻāĻ‡ āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡, āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ•āĻŽā§āĻĒāĻžāĻ‡āĻ˛ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡ tracex4_kern.c eBPF āĻŦāĻžāĻ‡āĻŸāĻ•ā§‹āĻĄā§‡āĨ¤ āĻŦāĻ°ā§āĻ¤āĻŽāĻžāĻ¨ā§‡ gcc eBPF āĻāĻ° āĻœāĻ¨ā§āĻ¯ āĻ•ā§‹āĻ¨ āĻŦā§āĻ¯āĻžāĻ•āĻāĻ¨ā§āĻĄ āĻ¨ā§‡āĻ‡āĨ¤ āĻ­āĻžāĻ—ā§āĻ¯āĻ•ā§āĻ°āĻŽā§‡, clang āĻ‡āĻŦāĻŋāĻĒāĻŋāĻāĻĢ āĻŦāĻžāĻ‡āĻŸāĻ•ā§‹āĻĄ āĻ†āĻ‰āĻŸāĻĒā§āĻŸ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤ Makefile āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ¸āĻŽā§‚āĻš clang āĻ¸āĻ‚āĻ•āĻ˛āĻ¨ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ tracex4_kern.c āĻ…āĻŦāĻœā§‡āĻ•ā§āĻŸ āĻĢāĻžāĻ‡āĻ˛ā§‡āĨ¤

āĻ†āĻŽāĻŋ āĻ‰āĻĒāĻ°ā§‡ āĻ‰āĻ˛ā§āĻ˛ā§‡āĻ– āĻ•āĻ°ā§‡āĻ›āĻŋ āĻ¯ā§‡ eBPF āĻāĻ° āĻ¸āĻŦāĻšā§‡āĻ¯āĻŧā§‡ āĻ†āĻ•āĻ°ā§āĻˇāĻŖā§€āĻ¯āĻŧ āĻŦā§ˆāĻļāĻŋāĻˇā§āĻŸā§āĻ¯āĻ—ā§āĻ˛āĻŋāĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻāĻ•āĻŸāĻŋ āĻšāĻ˛ āĻŽāĻžāĻ¨āĻšāĻŋāĻ¤ā§āĻ°āĨ¤ tracex4_kern āĻāĻ•āĻŸāĻŋ āĻŽāĻžāĻ¨āĻšāĻŋāĻ¤ā§āĻ° āĻ¸āĻ‚āĻœā§āĻžāĻžāĻ¯āĻŧāĻŋāĻ¤ āĻ•āĻ°ā§‡:

struct pair {
    u64 val;
    u64 ip;
};  

struct bpf_map_def SEC("maps") my_map = {
    .type = BPF_MAP_TYPE_HASH,
    .key_size = sizeof(long),
    .value_size = sizeof(struct pair),
    .max_entries = 1000000,
};

BPF_MAP_TYPE_HASH eBPF āĻĻā§āĻŦāĻžāĻ°āĻž āĻ…āĻĢāĻžāĻ° āĻ•āĻ°āĻž āĻ…āĻ¨ā§‡āĻ• āĻ§āĻ°āĻ¨ā§‡āĻ° āĻ•āĻžāĻ°ā§āĻĄā§‡āĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻāĻ•āĻŸāĻŋāĨ¤ āĻāĻ‡ āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡, āĻāĻŸāĻž āĻļā§āĻ§ā§ āĻāĻ•āĻŸāĻŋ āĻšā§āĻ¯āĻžāĻļ. āĻ†āĻĒāĻ¨āĻŋ āĻšāĻ¯āĻŧāĻ¤ āĻāĻ•āĻŸāĻŋ āĻŦāĻŋāĻœā§āĻžāĻžāĻĒāĻ¨ āĻ˛āĻ•ā§āĻˇā§āĻ¯ āĻ•āĻ°ā§‡āĻ›ā§‡āĻ¨ SEC("maps"). SEC āĻāĻ•āĻŸāĻŋ āĻŽā§āĻ¯āĻžāĻ•ā§āĻ°ā§‹ āĻ¯āĻž āĻāĻ•āĻŸāĻŋ āĻŦāĻžāĻ‡āĻ¨āĻžāĻ°āĻŋ āĻĢāĻžāĻ‡āĻ˛ā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻŦāĻŋāĻ­āĻžāĻ— āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻ¤ā§‡ āĻŦā§āĻ¯āĻŦāĻšā§ƒāĻ¤ āĻšāĻ¯āĻŧāĨ¤ āĻ†āĻ¸āĻ˛ā§‡, āĻ‰āĻĻāĻžāĻšāĻ°āĻŖā§‡ tracex4_kern āĻ†āĻ°āĻ“ āĻĻā§āĻŸāĻŋ āĻŦāĻŋāĻ­āĻžāĻ— āĻ¸āĻ‚āĻœā§āĻžāĻžāĻ¯āĻŧāĻŋāĻ¤ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡:

SEC("kprobe/kmem_cache_free")
int bpf_prog1(struct pt_regs *ctx)
{   
    long ptr = PT_REGS_PARM2(ctx);

    bpf_map_delete_elem(&my_map, &ptr); 
    return 0;
}
    
SEC("kretprobe/kmem_cache_alloc_node") 
int bpf_prog2(struct pt_regs *ctx)
{
    long ptr = PT_REGS_RC(ctx);
    long ip = 0;

    // ĐŋĐžĐģŅƒŅ‡Đ°ĐĩĐŧ ip-Đ°Đ´Ņ€ĐĩŅ вŅ‹ĐˇŅ‹Đ˛Đ°ŅŽŅ‰ĐĩĐš ŅŅ‚ĐžŅ€ĐžĐŊŅ‹ kmem_cache_alloc_node() 
    BPF_KRETPROBE_READ_RET_IP(ip, ctx);

    struct pair v = {
        .val = bpf_ktime_get_ns(),
        .ip = ip,
    };
    
    bpf_map_update_elem(&my_map, &ptr, &v, BPF_ANY);
    return 0;
}   

āĻāĻ‡ āĻĻā§āĻŸāĻŋ āĻĢāĻžāĻ‚āĻļāĻ¨ āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻŽāĻžāĻ¨āĻšāĻŋāĻ¤ā§āĻ° āĻĨā§‡āĻ•ā§‡ āĻāĻ•āĻŸāĻŋ āĻāĻ¨ā§āĻŸā§āĻ°āĻŋ āĻŽā§āĻ›ā§‡ āĻĢā§‡āĻ˛āĻžāĻ° āĻ…āĻ¨ā§āĻŽāĻ¤āĻŋ āĻĻā§‡āĻ¯āĻŧ (kprobe/kmem_cache_free) āĻāĻŦāĻ‚ āĻŽāĻžāĻ¨āĻšāĻŋāĻ¤ā§āĻ°ā§‡ āĻāĻ•āĻŸāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻāĻ¨ā§āĻŸā§āĻ°āĻŋ āĻ¯ā§‹āĻ— āĻ•āĻ°ā§āĻ¨ (kretprobe/kmem_cache_alloc_node) āĻŦāĻĄāĻŧ āĻ…āĻ•ā§āĻˇāĻ°ā§‡ āĻ˛ā§‡āĻ–āĻž āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻĢāĻžāĻ‚āĻļāĻ¨ā§‡āĻ° āĻ¨āĻžāĻŽ āĻ¸āĻ‚āĻœā§āĻžāĻžāĻ¯āĻŧāĻŋāĻ¤ āĻŽā§āĻ¯āĻžāĻ•ā§āĻ°ā§‹āĻ° āĻ¸āĻžāĻĨā§‡ āĻŽāĻŋāĻ˛ā§‡ āĻ¯āĻžāĻ¯āĻŧ bpf_helpers.h.

āĻ¯āĻĻāĻŋ āĻ†āĻŽāĻŋ āĻ…āĻŦāĻœā§‡āĻ•ā§āĻŸ āĻĢāĻžāĻ‡āĻ˛ā§‡āĻ° āĻŦāĻŋāĻ­āĻžāĻ—āĻ—ā§āĻ˛āĻŋ āĻĄāĻžāĻŽā§āĻĒ āĻ•āĻ°āĻŋ āĻ¤āĻŦā§‡ āĻ†āĻŽāĻžāĻ° āĻĻā§‡āĻ–āĻ¤ā§‡ āĻšāĻŦā§‡ āĻ¯ā§‡ āĻāĻ‡ āĻ¨āĻ¤ā§āĻ¨ āĻŦāĻŋāĻ­āĻžāĻ—āĻ—ā§āĻ˛āĻŋ āĻ‡āĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§‡ āĻ¸āĻ‚āĻœā§āĻžāĻžāĻ¯āĻŧāĻŋāĻ¤ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡:

$ objdump -h tracex4_kern.o

tracex4_kern.o: file format elf64-little

Sections:
Idx Name Size VMA LMA File off Algn
0 .text 00000000 0000000000000000 0000000000000000 00000040 2**2
CONTENTS, ALLOC, LOAD, READONLY, CODE
1 kprobe/kmem_cache_free 00000048 0000000000000000 0000000000000000 00000040 2**3
CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE
2 kretprobe/kmem_cache_alloc_node 000000c0 0000000000000000 0000000000000000 00000088 2**3
CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE
3 maps 0000001c 0000000000000000 0000000000000000 00000148 2**2
CONTENTS, ALLOC, LOAD, DATA
4 license 00000004 0000000000000000 0000000000000000 00000164 2**0
CONTENTS, ALLOC, LOAD, DATA
5 version 00000004 0000000000000000 0000000000000000 00000168 2**2
CONTENTS, ALLOC, LOAD, DATA
6 .eh_frame 00000050 0000000000000000 0000000000000000 00000170 2**3
CONTENTS, ALLOC, LOAD, RELOC, READONLY, DATA

āĻāĻ–āĻ¨āĻ“ āĻ†āĻ›ā§‡ tracex4_user.c, āĻĒā§āĻ°āĻ§āĻžāĻ¨ āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽāĨ¤ āĻŽā§‚āĻ˛āĻ¤, āĻāĻ‡ āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽ āĻ˜āĻŸāĻ¨āĻž āĻļā§‹āĻ¨ā§‡ kmem_cache_alloc_node. āĻāĻ‡ āĻ§āĻ°āĻ¨ā§‡āĻ° āĻ˜āĻŸāĻ¨āĻž āĻ˜āĻŸāĻ˛ā§‡, āĻ¸āĻ‚āĻļā§āĻ˛āĻŋāĻˇā§āĻŸ eBPF āĻ•ā§‹āĻĄāĻŸāĻŋ āĻ•āĻžāĻ°ā§āĻ¯āĻ•āĻ° āĻ•āĻ°āĻž āĻšāĻ¯āĻŧāĨ¤ āĻ•ā§‹āĻĄāĻŸāĻŋ āĻāĻ•āĻŸāĻŋ āĻŽā§āĻ¯āĻžāĻĒā§‡ āĻ…āĻŦāĻœā§‡āĻ•ā§āĻŸā§‡āĻ° āĻ†āĻ‡āĻĒāĻŋ āĻ…ā§āĻ¯āĻžāĻŸā§āĻ°āĻŋāĻŦāĻŋāĻ‰āĻŸ āĻ¸āĻ‚āĻ°āĻ•ā§āĻˇāĻŖ āĻ•āĻ°ā§‡ āĻāĻŦāĻ‚ āĻ¤āĻžāĻ°āĻĒāĻ°ā§‡ āĻŽā§‚āĻ˛ āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽā§‡ āĻ…āĻŦāĻœā§‡āĻ•ā§āĻŸāĻŸāĻŋ āĻ˛ā§āĻĒ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧāĨ¤ āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ:

$ sudo ./tracex4
obj 0xffff8d6430f60a00 is 2sec old was allocated at ip ffffffff9891ad90
obj 0xffff8d6062ca5e00 is 23sec old was allocated at ip ffffffff98090e8f
obj 0xffff8d5f80161780 is 6sec old was allocated at ip ffffffff98090e8f

āĻ•āĻŋāĻ­āĻžāĻŦā§‡ āĻāĻ•āĻŸāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€ āĻ¸ā§āĻĨāĻžāĻ¨ āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽ āĻāĻŦāĻ‚ āĻāĻ•āĻŸāĻŋ eBPF āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•āĻŋāĻ¤? āĻ¸ā§‚āĻšāĻ¨āĻž āĻ‰āĻĒāĻ° tracex4_user.c āĻāĻ•āĻŸāĻŋ āĻ…āĻŦāĻœā§‡āĻ•ā§āĻŸ āĻĢāĻžāĻ‡āĻ˛ āĻ˛ā§‹āĻĄ āĻ•āĻ°ā§‡ tracex4_kern.o āĻĢāĻžāĻ‚āĻļāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ load_bpf_file.

int main(int ac, char **argv)
{
    struct rlimit r = {RLIM_INFINITY, RLIM_INFINITY};
    char filename[256];
    int i;

    snprintf(filename, sizeof(filename), "%s_kern.o", argv[0]);

    if (setrlimit(RLIMIT_MEMLOCK, &r)) {
        perror("setrlimit(RLIMIT_MEMLOCK, RLIM_INFINITY)");
        return 1;
    }

    if (load_bpf_file(filename)) {
        printf("%s", bpf_log_buf);
        return 1;
    }

    for (i = 0; ; i++) {
        print_old_objects(map_fd[1]);
        sleep(1);
    }

    return 0;
}

āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ load_bpf_file eBPF āĻĢāĻžāĻ‡āĻ˛ā§‡ āĻ¸āĻ‚āĻœā§āĻžāĻžāĻ¯āĻŧāĻŋāĻ¤ āĻĒā§āĻ°ā§‹āĻŦ āĻ¯ā§‹āĻ— āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ /sys/kernel/debug/tracing/kprobe_events. āĻāĻ–āĻ¨ āĻ†āĻŽāĻ°āĻž āĻāĻ‡ āĻ‡āĻ­ā§‡āĻ¨ā§āĻŸāĻ—ā§āĻ˛āĻŋāĻ° āĻœāĻ¨ā§āĻ¯ āĻļā§āĻ¨āĻŋ āĻāĻŦāĻ‚ āĻ¸ā§‡āĻ—ā§āĻ˛āĻŋ āĻ˜āĻŸāĻ˛ā§‡ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽ āĻ•āĻŋāĻ›ā§ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤

$ sudo cat /sys/kernel/debug/tracing/kprobe_events
p:kprobes/kmem_cache_free kmem_cache_free
r:kprobes/kmem_cache_alloc_node kmem_cache_alloc_node

āĻ¨āĻŽā§āĻ¨āĻž/āĻŦāĻŋāĻĒāĻŋāĻāĻĢ/-āĻ āĻ…āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽ āĻāĻ•āĻ‡āĻ­āĻžāĻŦā§‡ āĻ—āĻ āĻ¨ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧāĨ¤ āĻ¤āĻžāĻ°āĻž āĻ¸āĻŦāĻ¸āĻŽāĻ¯āĻŧ āĻĻā§āĻŸāĻŋ āĻĢāĻžāĻ‡āĻ˛ āĻ§āĻžāĻ°āĻŖ āĻ•āĻ°ā§‡:

  • XXX_kern.c: eBPF āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽāĨ¤
  • XXX_user.c: āĻĒā§āĻ°āĻ§āĻžāĻ¨ āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽāĨ¤

eBPF āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽ āĻāĻ•āĻŸāĻŋ āĻŦāĻŋāĻ­āĻžāĻ—ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻ¯ā§āĻ•ā§āĻ¤ āĻŽāĻžāĻ¨āĻšāĻŋāĻ¤ā§āĻ° āĻāĻŦāĻ‚ āĻĢāĻžāĻ‚āĻļāĻ¨ āĻ¸āĻ¨āĻžāĻ•ā§āĻ¤ āĻ•āĻ°ā§‡āĨ¤ āĻ¯āĻ–āĻ¨ āĻ•āĻžāĻ°ā§āĻ¨ā§‡āĻ˛ āĻāĻ•āĻŸāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻ§āĻ°āĻ¨ā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻ‡āĻ­ā§‡āĻ¨ā§āĻŸ āĻœāĻžāĻ°āĻŋ āĻ•āĻ°ā§‡ (āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§‚āĻĒ, tracepoint), āĻ†āĻŦāĻĻā§āĻ§ āĻĢāĻžāĻ‚āĻļāĻ¨ āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻš āĻ•āĻ°āĻž āĻšāĻ¯āĻŧāĨ¤ āĻ•āĻžāĻ°ā§āĻĄāĻ—ā§āĻ˛āĻŋ āĻ•āĻžāĻ°ā§āĻ¨ā§‡āĻ˛ āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽ āĻāĻŦāĻ‚ āĻ‡āĻ‰āĻœāĻžāĻ° āĻ¸ā§āĻĒā§‡āĻ¸ āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽā§‡āĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻ¯ā§‹āĻ—āĻžāĻ¯ā§‹āĻ— āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻ•āĻ°ā§‡āĨ¤

āĻ‰āĻĒāĻ¸āĻ‚āĻšāĻžāĻ°

āĻāĻ‡ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻŸāĻŋ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻĒāĻ°āĻŋāĻ­āĻžāĻˇāĻžāĻ¯āĻŧ BPF āĻāĻŦāĻ‚ eBPF āĻ¨āĻŋāĻ¯āĻŧā§‡ āĻ†āĻ˛ā§‹āĻšāĻ¨āĻž āĻ•āĻ°ā§‡āĻ›ā§‡āĨ¤ āĻ†āĻŽāĻŋ āĻœāĻžāĻ¨āĻŋ āĻ†āĻœ āĻ‡āĻŦāĻŋāĻĒāĻŋāĻāĻĢ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻ…āĻ¨ā§‡āĻ• āĻ¤āĻĨā§āĻ¯ āĻāĻŦāĻ‚ āĻ¸āĻ‚āĻ¸ā§āĻĨāĻžāĻ¨ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡, āĻ¤āĻžāĻ‡ āĻ†āĻŽāĻŋ āĻ†āĻ°āĻ“ āĻ…āĻ§ā§āĻ¯āĻ¯āĻŧāĻ¨ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ†āĻ°āĻ“ āĻ•āĻ¯āĻŧā§‡āĻ•āĻŸāĻŋ āĻ¸āĻ‚āĻ¸ā§āĻĨāĻžāĻ¨ āĻ¸ā§āĻĒāĻžāĻ°āĻŋāĻļ āĻ•āĻ°āĻŦ

āĻ†āĻŽāĻŋ āĻĒāĻĄāĻŧāĻžāĻ° āĻĒāĻ°āĻžāĻŽāĻ°ā§āĻļ āĻĻāĻŋāĻšā§āĻ›āĻŋ:

āĻ‰āĻ¤ā§āĻ¸: www.habr.com

āĻāĻ•āĻŸāĻŋ āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯ āĻœā§āĻĄāĻŧā§āĻ¨