เดนเดฒเต, เดนเดฌเตเตผ! เดเดเตเดเตพ เดเดฐเต เดชเตเดธเตเดคเดเด เดชเตเดฐเดเดพเดถเดจเดคเตเดคเดฟเดจเดพเดฏเดฟ เดคเดฏเตเดฏเดพเดฑเดพเดเตเดเดฟเดเตเดเตเดฃเตเดเดฟเดฐเดฟเดเตเดเตเดเดฏเดพเดฃเตเดจเตเดจเต เดจเดฟเดเตเดเดณเต เด
เดฑเดฟเดฏเดฟเดเตเดเดพเตป เดเดเตเดเตพ เดเดเตเดฐเดนเดฟเดเตเดเตเดจเตเดจเต."
เดฌเดฟเดชเดฟเดเดซเต เดตเตเตผเดเตเดตเตฝ เดฎเตเดทเตเตป เดตเดฟเดเดธเดฟเดเตเดเตเดจเตเดจเดคเต เดคเตเดเดฐเตเดเดฏเตเด เดชเตเดฐเดพเดฏเตเดเดฟเดเดฎเดพเดฏเดฟ เดธเดเตเดตเดฎเดพเดฏเดฟ เดเดชเดฏเตเดเดฟเดเตเดเตเดเดฏเตเด เดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเดพเตฝ, เด
เดคเดฟเดจเตเดฑเต เดชเตเดฐเดงเดพเดจ เดเดดเดฟเดตเตเดเดณเตเด เดจเดฟเดฒเดตเดฟเดฒเต เด
เดตเดธเตเดฅเดฏเตเด เดตเดฟเดตเดฐเดฟเดเตเดเตเดจเตเดจ เดเดฐเต เดฒเตเดเดจเด เดเดเตเดเตพ เดจเดฟเดเตเดเตพเดเตเดเดพเดฏเดฟ เดตเดฟเดตเตผเดคเตเดคเดจเด เดเตเดฏเตเดคเดฟเดเตเดเตเดฃเตเดเต.
เดธเดฎเตเดช เดตเตผเดทเดเตเดเดณเดฟเตฝ, เดเดฏเตผเดจเตเดจ เดชเตเตผเดซเตเดฎเตปเดธเต เดชเดพเดเตเดเดฑเตเดฑเต เดชเตเดฐเตเดธเดธเตเดธเดฟเดเดเต เดเดตเดถเตเดฏเดฎเตเดณเตเดณ เดธเดจเตเดฆเตผเดญเดเตเดเดณเดฟเตฝ เดฒเดฟเดจเดเตเดธเต เดเตเตผเดฃเดฒเดฟเดจเตเดฑเต เดชเดฐเดฟเดฎเดฟเดคเดฟเดเตพ เดจเดฟเดเดคเตเดคเดพเตป เดชเตเดฐเตเดเตเดฐเดพเดฎเดฟเดเดเต เดเตเดณเตเดเดณเตเด เดเตเดเตเดจเดฟเดเตเดเตเดเดณเตเด เดเตเดเตเดคเตฝ เดชเตเดฐเดเดพเดฐเดคเตเดคเดฟเดฒเตเดฃเตเดเต. เดเดคเตเดคเดฐเดคเตเดคเดฟเดฒเตเดณเตเดณ เดเดฑเตเดฑเดตเตเด เดเดจเดชเตเดฐเดฟเดฏเดฎเดพเดฏ เดธเดพเดเตเดเตเดคเดฟเดเดคเดเดณเดฟเดฒเตเดจเตเดจเต เดตเดฟเดณเดฟเดเตเดเดชเตเดชเตเดเตเดจเตเดจเต เดเตเตผเดฃเตฝ เดฌเตเดชเดพเดธเต (เดเตเตผเดฃเตฝ เดฌเตเดชเดพเดธเต) เดเตเดเดพเดคเต, เดเตเตผเดฃเตฝ เดจเตเดฑเตเดฑเตโเดตเตผเดเตเดเต เดฒเตเดฏเดฑเดฟเดจเต เดฎเดฑเดฟเดเดเดจเตเดจเต, เดฏเตเดธเตผ เดธเตโเดชเตเดฏเตโเดธเดฟเตฝ เดจเดฟเดจเตเดจเต เดเดฒเตเดฒเดพ เดชเดพเดเตเดเดฑเตเดฑเต เดชเตเดฐเตเดธเดธเตเดธเดฟเดเดเตเด เดจเดเดคเตเดคเดพเตป เด
เดจเตเดตเดฆเดฟเดเตเดเตเดจเตเดจเต. เดเตเตผเดฃเตฝ เดฌเตเดชเดพเดธเต เดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเตฝ เดจเตเดฑเตเดฑเตโเดตเตผเดเตเดเต เดเดพเตผเดกเต เดจเดฟเดฏเดจเตเดคเตเดฐเดฟเดเตเดเตเดจเตเดจเดคเตเด เดเตพเดชเตเดชเตเดเตเดจเตเดจเต เดเดชเดฏเตเดเตเดคเต เดเดเด. เดฎเดฑเตเดฑเตเดฐเต เดตเดฟเดงเดคเตเดคเดฟเตฝ เดชเดฑเดเตเดเดพเตฝ, เดเดฐเต เดจเตเดฑเตเดฑเตโเดตเตผเดเตเดเต เดเดพเตผเดกเตเดฎเดพเดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดฎเตเดชเตเตพ, เดเดเตเดเตพ เดกเตเดฐเตเดตเดฑเต เดเดถเตเดฐเดฏเดฟเดเตเดเตเดจเตเดจเต เดเดชเดฏเตเดเตเดคเต เดเดเด.
เดเดฐเต เดฏเตเดธเตผ-เดธเตเดชเตเดธเต เดชเตเดฐเตเดเตเดฐเดพเดฎเดฟเดฒเตเดเตเดเต เดจเตเดฑเตเดฑเตโเดตเตผเดเตเดเต เดเดพเตผเดกเดฟเดจเตเดฑเต เดชเตเตผเดฃเตเดฃ เดจเดฟเดฏเดจเตเดคเตเดฐเดฃเด เดเตเดฎเดพเดฑเตเดจเตเดจเดคเดฟเดฒเตเดเต, เดเดเตเดเตพ เดเตเตผเดฃเตฝ เดเดตเตผเดนเตเดกเต (เดธเดจเตเดฆเตผเดญ เดธเตเดตเดฟเดเตเดเดฟเดเดเต, เดจเตเดฑเตเดฑเตโเดตเตผเดเตเดเต เดฒเตเดฏเตผ เดชเตเดฐเตเดธเดธเตเดธเดฟเดเดเต, เดคเดเดธเตเดธเดเตเดเตพ เดฎเตเดคเดฒเดพเดฏเดต) เดเตเดฑเดฏเตเดเตเดเตเดจเตเดจเต, เดเดคเต 10Gb/s เด
เดฒเตเดฒเตเดเตเดเดฟเตฝ เดเดฏเตผเดจเตเดจ เดตเตเดเดคเดฏเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดฎเตเดชเตเตพ เดตเดณเดฐเต เดชเตเดฐเดงเดพเดจเดฎเดพเดฃเต. เดเตเตผเดฃเตฝ เดฌเตเดชเดพเดธเตเด เดฎเดฑเตเดฑเต เดซเตเดเตเดเดฑเตเดเดณเตเดเต เดธเดเดฏเตเดเดจเดตเตเด (เดฌเดพเดเตเดเต เดชเตเดฐเตเดธเดธเตเดธเดฟเดเดเต) เดเตเดเดพเดคเต เดถเตเดฐเดฆเตเดงเดพเดชเตเตผเดตเตเดตเดฎเดพเดฏ เดชเตเดฐเดเดเดจ เดเตเดฏเตเดฃเดฟเดเดเต (NUMA เด
เดเตเดเตเดฃเตเดเดฟเดเดเต, เดธเดฟเดชเดฟเดฏเต เดเดฑเตเดฑเดชเตเดชเตเดเตฝ, เดฎเตเดคเดฒเดพเดฏเดต) เดเดชเดฏเตเดเตเดคเต เดธเตเดฅเดฒเดคเตเดคเต เดเดฏเตผเดจเตเดจ เดชเตเดฐเดตเตผเดคเตเดคเดจเดเตเดทเดฎเดคเดฏเตเดณเตเดณ เดจเตเดฑเตเดฑเตโเดตเตผเดเตเดเต เดชเตเดฐเตเดธเดธเตเดธเดฟเดเดเดฟเดจเตเดฑเต เด
เดเดฟเดธเตเดฅเดพเดจเดเดพเดฐเตเดฏเดเตเดเดณเตเดฎเดพเดฏเดฟ เดชเตเดฐเตเดคเตเดคเดชเตเดชเตเดเตเดจเตเดจเต. เดชเดพเดเตเดเดฑเตเดฑเต เดชเตเดฐเตเดธเดธเตเดธเดฟเดเดเดฟเดฒเต เด เดชเตเดคเดฟเดฏ เดธเดฎเตเดชเดจเดคเตเดคเดฟเดจเตเดฑเต เดฎเดพเดคเตเดเดพเดชเดฐเดฎเดพเดฏ เดเดฆเดพเดนเดฐเดฃเด
เดเดชเดฏเตเดเตเดคเต เดธเตเดฅเดฒเดคเตเดคเต เดจเตเดฑเตเดฑเตโเดตเตผเดเตเดเต เดเดเดชเตเดเดฒเตเดเตพ เดธเดเดเดเดฟเดชเตเดชเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเต เดจเดฟเดฐเดตเดงเดฟ เดฆเตเดทเดเตเดเดณเตเดฃเตเดเต:
- เดนเดพเตผเดกเตโเดตเตเดฏเตผ เดเดฑเดตเดฟเดเดเตเดเตพเดเตเดเดพเดฏเตเดณเตเดณ เดเดฐเต เด เดฎเตเตผเดคเตเดค เดชเดพเดณเดฟเดฏเดพเดฃเต OS เดเตเตผเดฃเตฝ. เดเดชเดฏเตเดเตเดคเต เดฌเดนเดฟเดฐเดพเดเดพเดถ เดชเตเดฐเตเดเตเดฐเดพเดฎเตเดเตพเดเตเดเต เด เดตเดฐเตเดเต เดเดฑเดตเดฟเดเดเตเดเตพ เดจเตเดฐเดฟเดเตเดเต เดเตเดเดพเดฐเตเดฏเด เดเตเดฏเตเดฏเตเดฃเตเดเดคเดฟเดจเดพเตฝ, เด เดตเตผเดเตเดเต เด เดตเดฐเตเดเต เดธเตเดตเดจเตเดคเด เดนเดพเตผเดกเตโเดตเตเดฏเดฑเตเด เดเตเดเดพเดฐเตเดฏเด เดเตเดฏเตเดฏเตเดฃเตเดเดคเตเดฃเตเดเต. เดเดคเต เดชเดฒเดชเตเดชเตเดดเตเด เดจเดฟเดเตเดเดณเตเดเต เดธเตเดตเดจเตเดคเด เดกเตเดฐเตเดตเดฑเตเดเตพ เดชเตเดฐเตเดเตเดฐเดพเด เดเตเดฏเตเดฏเดฃเด เดเดจเตเดจเดพเดฃเต.
- เดเดเตเดเตพ เดเตเตผเดฃเตฝ เดธเตเดชเตเดธเต เดชเตเตผเดฃเตเดฃเดฎเดพเดฏเตเด เดเดชเตเดเตเดทเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเดพเตฝ, เดเตเตผเดฃเตฝ เดจเตฝเดเตเดจเตเดจ เดเดฒเตเดฒเดพ เดจเตเดฑเตเดฑเตโเดตเตผเดเตเดเดฟเดเดเต เดชเตเดฐเดตเตผเดคเตเดคเดจเดเตเดเดณเตเด เดเดเตเดเตพ เดเดชเตเดเตเดทเดฟเดเตเดเตเดเดฏเดพเดฃเต. เดเตเตผเดฃเดฒเต เดเดชเตเดชเดฑเตเดฑเตเดฑเดฟเดเดเต เดธเดฟเดธเตเดฑเตเดฑเดฎเต เดเดคเดฟเดจเดเด เดจเตฝเดเดฟเดฏเตเดเตเดเดพเดตเตเดจเตเดจ เดธเดตเดฟเดถเตเดทเดคเดเตพ เดฏเตเดธเตผ เดธเตเดชเตเดธเต เดชเตเดฐเตเดเตเดฐเดพเดฎเตเดเตพ เดชเตเดจเดเดธเตเดฅเดพเดชเดฟเดเตเดเตเดฃเตเดเดคเตเดฃเตเดเต.
- เดชเตเดฐเตเดเตเดฐเดพเดฎเตเดเตพ เดธเดพเตปเดกเตโเดฌเตเดเตโเดธเต เดฎเตเดกเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดจเตเดจเต, เดเดคเต เด เดตเดฏเตเดเต เดเดเดชเตเดเตฝ เดเตเดฐเดตเดฎเดพเดฏเดฟ เดชเดฐเดฟเดฎเดฟเดคเดชเตเดชเตเดเตเดคเตเดคเตเดเดฏเตเด เดเดชเตเดชเดฑเตเดฑเตเดฑเดฟเดเดเต เดธเดฟเดธเตเดฑเตเดฑเดคเตเดคเดฟเดจเตเดฑเต เดฎเดฑเตเดฑเต เดญเดพเดเดเตเดเดณเตเดฎเดพเดฏเดฟ เดธเดเดฏเตเดเดฟเดชเตเดชเดฟเดเตเดเตเดจเตเดจเดคเดฟเตฝ เดจเดฟเดจเตเดจเต เด เดตเดฐเต เดคเดเดฏเตเดเดฏเตเด เดเตเดฏเตเดฏเตเดจเตเดจเต.
เดธเดพเดฐเดพเดเดถเดคเตเดคเดฟเตฝ, เดเดชเดฏเตเดเตเดคเต เดธเตเดฅเดฒเดคเตเดคเต เดจเตเดฑเตเดฑเตโเดตเตผเดเตเดเดฟเดเดเต เดธเดเดญเดตเดฟเดเตเดเตเดฎเตเดชเตเตพ, เดเตเตผเดฃเดฒเดฟเตฝ เดจเดฟเดจเตเดจเต เดเดชเดฏเตเดเตเดคเต เดธเตเดฅเดฒเดคเตเดคเตเดเตเดเต เดชเดพเดเตเดเดฑเตเดฑเต เดชเตเดฐเตเดธเดธเตเดธเดฟเดเดเต เดจเตเดเตเดเตเดจเตเดจเดคเดฟเดฒเตเดเต เดชเตเดฐเดเดเดจ เดจเตเดเตเดเดเตเดเตพ เดเตเดตเดฐเดฟเดเตเดเดพเดจเดพเดเตเด. XDP เดคเดฟเดเดเตเดเตเด เดตเดฟเดชเดฐเตเดคเดฎเดพเดฃเต เดเตเดฏเตเดฏเตเดจเตเดจเดคเต: เดเดคเต เดจเตเดฑเตเดฑเตโเดตเตผเดเตเดเดฟเดเดเต เดชเตเดฐเตเดเตเดฐเดพเดฎเตเดเดณเต เดฏเตเดธเตผ เดธเตโเดชเตเดฏเตโเดธเดฟเตฝ เดจเดฟเดจเตเดจเต (เดซเดฟเตฝเดเตเดเดฑเตเดเตพ, เดฑเดฟเดธเตเตพเดตเดฑเตเดเตพ, เดฑเตเดเตเดเดฟเดเดเต เดฎเตเดคเดฒเดพเดฏเดต) เดเตเตผเดฃเตฝ เดธเตโเดชเตเดฏเตโเดธเดฟเดฒเตเดเตเดเต เดจเตเดเตเดเตเดจเตเดจเต. เดเดฐเต เดชเดพเดเตเดเดฑเตเดฑเต เดเดฐเต เดจเตเดฑเตเดฑเตโเดตเตผเดเตเดเต เดเดจเตเดฑเตผเดซเตเดธเดฟเตฝ เดเดคเตเดคเดฟเดฏเดพเดฒเตเดเตป เด เดคเต เดเตเตผเดฃเตฝ เดจเตเดฑเตเดฑเตโเดตเตผเดเตเดเต เดธเดฌเตเดธเดฟเดธเตเดฑเตเดฑเดคเตเดคเดฟเดฒเตเดเตเดเต เดจเตเดเตเดเดพเตป เดคเตเดเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดฎเตเดฎเตเดชเต เดเดฐเต เดจเตเดฑเตเดฑเตโเดตเตผเดเตเดเต เดซเดเดเตโเดทเตป เดจเดเดคเตเดคเดพเตป XDP เดเดเตเดเดณเต เด เดจเตเดตเดฆเดฟเดเตเดเตเดจเตเดจเต. เดคเตฝเดซเดฒเดฎเดพเดฏเดฟ, เดชเดพเดเตเดเดฑเตเดฑเต เดชเตเดฐเตเดธเดธเตเดธเดฟเดเดเต เดตเตเดเดค เดเดฃเตเดฏเดฎเดพเดฏเดฟ เดตเตผเดฆเตเดงเดฟเดเตเดเตเดจเตเดจเต. เดเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด, เดเตเตผเดฃเตฝ เดธเตเดชเตเดธเดฟเตฝ เด เดตเดฐเตเดเต เดชเตเดฐเตเดเตเดฐเดพเดฎเตเดเตพ เดเดเตเดธเดฟเดเตเดฏเตเดเตเดเต เดเตเดฏเตเดฏเดพเตป เดเตเตผเดฃเตฝ เดเดเตเดเดจเตเดฏเดพเดฃเต เดเดชเดฏเตเดเตเดคเดพเดตเดฟเดจเต เด เดจเตเดตเดฆเดฟเดเตเดเตเดจเตเดจเดคเต? เด เดเตเดฆเตเดฏเดคเตเดคเดฟเดจเต เดเดคเตเดคเดฐเด เดจเตฝเดเตเดจเตเดจเดคเดฟเดจเต เดฎเตเดฎเตเดชเต, BPF เดเดจเตเดคเดพเดฃเตเดจเตเดจเต เดจเตเดเตเดเดพเด.
เดฌเดฟเดชเดฟเดเดซเต, เดเดฌเดฟเดชเดฟเดเดซเต
เดเดถเดฏเดเตเดเตเดดเดชเตเดชเดฎเตเดฃเตเดเดพเดเตเดเตเดจเตเดจ เดชเตเดฐเต เดเดฃเตเดเดพเดฏเดฟเดฐเตเดจเตเดจเดฟเดเตเดเตเด, BPF (Berkeley Packet Filtering) เดตเดพเดธเตเดคเดตเดคเตเดคเดฟเตฝ เดเดฐเต เดตเตเตผเดเตเดตเตฝ เดฎเตเดทเตเตป เดฎเตเดกเดฒเดพเดฃเต. เดชเดพเดเตเดเดฑเตเดฑเต เดซเดฟเตฝเดเตเดเดฑเดฟเดเดเต เดเตเดเดพเดฐเตเดฏเด เดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเดพเดฃเต เด เดตเตเตผเดเตเดตเตฝ เดฎเตเดทเตเตป เดเดฆเตเดฏเด เดฐเตเดชเดเตฝเดชเตเดชเดจ เดเตเดฏเตเดคเดฟเดฐเดฟเดเตเดเตเดจเตเดจเดคเต, เด เดคเดฟเดจเดพเตฝ เด เดชเตเดฐเต.
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 เด
เดตเดธเดพเดจเด เด
เดตเดฐเตเดเต เดชเตเดชเตเดชเตผ เดชเตเดฐเดธเดฟเดฆเตเดงเตเดเดฐเดฟเดเตเดเดชเตเดชเตเตพ เดจเดฟเตผเดฆเตเดฆเตเดถเดฟเดเตเดเต.
BPF เดเดฐเต เดตเตเตผเดเตเดตเตฝ เดฎเตเดทเตเดจเดพเดฏเดคเดฟเดจเดพเตฝ, เดชเตเดฐเตเดเตเดฐเดพเดฎเตเดเตพ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดจเตเดจ เดชเดฐเดฟเดธเตเดฅเดฟเดคเดฟเดฏเต เดเดคเต เดจเดฟเตผเดตเดเดฟเดเตเดเตเดจเตเดจเต. เดฌเตเดฑเตเดฑเตเดเตเดกเดฟเดจเต เดชเตเดฑเดฎเต, เดฌเดพเดเตเดเต เดฎเตเดฎเตเดฎเดฑเดฟ เดฎเตเดกเตฝ (เดฌเดพเดเตเดเดฟเดฒเตเดเตเดเต เดฒเตเดกเต เดจเดฟเตผเดฆเตเดฆเตเดถเดเตเดเตพ เดชเดฐเตเดเตเดทเดฎเดพเดฏเดฟ เดชเตเดฐเดฏเตเดเดฟเดเตเดเตเดจเตเดจเต), เดฐเดเดฟเดธเตเดฑเตเดฑเดฑเตเดเตพ (A, X; เด
เดเตเดฏเตเดฎเตเดฒเตเดฑเตเดฑเตผ, เดเตปเดกเตเดเตเดธเต เดฐเดเดฟเดธเตเดฑเตเดฑเดฑเตเดเตพ), เดธเตเดเตเดฐเดพเดเตเดเต เดฎเตเดฎเตเดฎเดฑเดฟ เดธเตเดฑเตเดฑเตเดฑเตเดเต, เดเดฐเต เดเตปเดชเตเดฒเดธเดฟเดฑเตเดฑเต เดชเตเดฐเตเดเตเดฐเดพเด เดเตเดฃเตเดเตผ เดเดจเตเดจเดฟเดตเดฏเตเด เดเดคเต เดจเดฟเตผเดตเดเดฟเดเตเดเตเดจเตเดจเต. เดฐเดธเดเดฐเดฎเตเดจเตเดจเต เดชเดฑเดฏเดเตเดเต, เดฎเตเดเตเดเดฑเตเดณ 6502 เดเดเดธเตเดเดฏเตเดเต เดฎเดพเดคเตเดเดฏเดฟเดฒเดพเดฃเต เดฌเดฟเดชเดฟเดเดซเต เดฌเตเดฑเตเดฑเตเดเตเดกเต เดฐเตเดชเดชเตเดชเตเดเตเดคเตเดคเดฟเดฏเดคเต. เดธเตเดฑเตเดฑเตเดตเต เดฎเดเตเดเดพเตป เดคเดจเตเดฑเต เดเตเดคเดฟเดฏเดฟเตฝ เด
เดจเตเดธเตเดฎเดฐเดฟเดเตเดเดคเต เดชเตเดฒเต
BPF เดชเดฟเดจเตเดคเตเดฃ เดฒเดฟเดจเดเตเดธเต เดเตเตผเดฃเดฒเดฟเตฝ v2.5-เดฒเตเด เด
เดคเดฟเดฒเตเด เดเดฏเตผเดจเตเดจ เดชเดคเดฟเดชเตเดชเตเดเดณเดฟเดฒเตเด เดจเดเดชเตเดชเดฟเดฒเดพเดเตเดเตเดจเตเดจเต, เดชเตเดฐเดงเดพเดจเดฎเดพเดฏเตเด เดเตเดฏเต เดทเตเดฒเดฟเดธเตเดฑเตเดฑเดฟเดจเตเดฑเต เดถเตเดฐเดฎเดเตเดเดณเดพเตฝ เดเตเตผเดคเตเดคเต. 2011 เดตเดฐเต BPF เดเตเดกเต เดฎเดพเดฑเตเดฑเดฎเดฟเดฒเตเดฒเดพเดคเต เดคเตเดเตผเดจเตเดจเต, เดเดฑเดฟเดเต เดกเตเดฎเดพเดธเตเดฑเตเดฑเต JIT เดฎเตเดกเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเดพเดฏเดฟ BPF เดตเตเดฏเดพเดเตเดฏเดพเดคเดพเดตเดฟเดจเต เดชเตเดจเตผเดฐเตเดชเดเตฝเดชเตเดชเดจ เดเตเดฏเตเดคเต (เดเดฑเดตเดฟเดเด:
เดชเดฟเดจเตเดจเตเดเต, 2014-เตฝ เด เดฒเดเตเดธเดฟ เดธเตเดฑเตเดฑเดพเดฐเตเดตเตเดฏเตเดฑเตเดฑเตเดตเต เดฌเดฟเดชเดฟเดเดซเดฟเดจเดพเดฏเดฟ เดเดฐเต เดชเตเดคเดฟเดฏ เดเตเดเดเดฟ เดธเดเดตเดฟเดงเดพเดจเด เดจเดฟเตผเดฆเตเดฆเตเดถเดฟเดเตเดเต. เดตเดพเดธเตเดคเดตเดคเตเดคเดฟเตฝ, เด เดชเตเดคเดฟเดฏ JIT เดเดฐเต เดชเตเดคเดฟเดฏ BPF-เด เดงเดฟเดทเตเด เดฟเดค เดตเดพเดธเตเดคเตเดตเดฟเดฆเตเดฏเดฏเดพเดฏเดฟ เดฎเดพเดฑเดฟ, เด เดคเดฟเดจเต eBPF เดเดจเตเดจเต เดตเดฟเดณเดฟเดเตเดเดชเตเดชเตเดเตเดเต. เดฐเดฃเตเดเต VM-เดเดณเตเด เดเตเดฑเดเตเดเต เดเดพเดฒเดคเตเดคเตเดเตเดเต เดเดฐเตเดฎเดฟเดเตเดเต เดจเดฟเดฒเดจเดฟเดจเตเดจเดฟเดฐเตเดจเตเดจเดคเดพเดฏเดฟ เดเดพเตป เดเดฐเตเดคเตเดจเตเดจเต, เดเดจเตเดจเดพเตฝ เดจเดฟเดฒเดตเดฟเตฝ eBPF เด เดเดฟเดธเตเดฅเดพเดจเดฎเดพเดเตเดเดฟเดฏเดพเดฃเต เดชเดพเดเตเดเดฑเตเดฑเต เดซเดฟเตฝเดเตเดเดฑเดฟเดเดเต เดจเดเดชเตเดชเดฟเดฒเดพเดเตเดเตเดจเตเดจเดคเต. เดตเดพเดธเตเดคเดตเดคเตเดคเดฟเตฝ, เดเดงเตเดจเดฟเด เดกเตเดเตเดฏเตเดฎเตเดจเตเดฑเตเดทเดจเตเดฑเต เดชเดฒ เดเดฆเดพเดนเดฐเดฃเดเตเดเดณเดฟเดฒเตเด, BPF เดเดจเตเดจเดคเต eBPF เดเดฃเตเดจเตเดจเตเด เดเตเดฒเดพเดธเดฟเดเตเดเตฝ BPF เดเดฃเต เดเดจเตเดจเต cBPF เดเดจเตเดจเตเด เด เดฑเดฟเดฏเดชเตเดชเตเดเตเดจเตเดจเดคเต.
eBPF เดเตเดฒเดพเดธเดฟเดเต BPF เดตเตเตผเดเตเดตเตฝ เดฎเตเดทเตเดจเต เดชเดฒ เดคเดฐเดคเตเดคเดฟเตฝ เดตเดฟเดชเตเดฒเตเดเดฐเดฟเดเตเดเตเดจเตเดจเต:
- เดเดงเตเดจเดฟเด 64-เดฌเดฟเดฑเตเดฑเต เดเตผเดเตเดเดฟเดเตเดเตเดเดฑเตเดเดณเต เด เดเดฟเดธเตเดฅเดพเดจเดฎเดพเดเตเดเดฟ. eBPF 64-เดฌเดฟเดฑเตเดฑเต เดฐเดเดฟเดธเตเดฑเตเดฑเดฑเตเดเตพ เดเดชเดฏเตเดเดฟเดเตเดเตเดเดฏเตเด เดฒเดญเตเดฏเดฎเดพเดฏ เดฐเดเดฟเดธเตเดฑเตเดฑเดฑเตเดเดณเตเดเต เดเดฃเตเดฃเด 2 (เด เดเตเดฏเตเดฎเตเดฒเตเดฑเตเดฑเดฑเตเด X) เตฝ เดจเดฟเดจเตเดจเต 10 เดเดฏเดฟ เดตเตผเดฆเตเดงเดฟเดชเตเดชเดฟเดเตเดเตเดเดฏเตเด เดเตเดฏเตเดฏเตเดจเตเดจเต. eBPF เด เดงเดฟเด เดเดชเตโเดเตเดกเตเดเดณเตเด เดจเตฝเดเตเดจเตเดจเต (BPF_MOV, BPF_JNE, BPF_CALL...).
- เดจเตเดฑเตเดฑเตโเดตเตผเดเตเดเต เดฒเตเดฏเตผ เดธเดฌเตเดธเดฟเดธเตเดฑเตเดฑเดคเตเดคเดฟเตฝ เดจเดฟเดจเตเดจเต เดตเตเตผเดชเตเดเตเดคเตเดคเดฟ. BPF เดฌเดพเดเตเดเต เดกเดพเดฑเตเดฑ เดฎเตเดกเดฒเตเดฎเดพเดฏเดฟ เดฌเดจเตเดงเดฟเดชเตเดชเดฟเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต. เดชเดพเดเตเดเดฑเตเดฑเต เดซเดฟเตฝเดเตเดเดฑเดฟเดเดเดฟเดจเดพเดฏเดฟ เดเดคเต เดเดชเดฏเตเดเดฟเดเตเดเดคเดฟเดจเดพเตฝ, เดจเตเดฑเตเดฑเตโเดตเตผเดเตเดเต เดเดถเดฏเดตเดฟเดจเดฟเดฎเดฏเดเตเดเตพ เดจเตฝเดเตเดจเตเดจ เดธเดฌเตเดธเดฟเดธเตเดฑเตเดฑเดคเตเดคเดฟเดฒเดพเดฃเต เด เดคเดฟเดจเตเดฑเต เดเตเดกเต เดธเตเดฅเดฟเดคเดฟ เดเตเดฏเตเดฏเตเดจเตเดจเดคเต. เดเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด, eBPF เดตเตเตผเดเตเดตเตฝ เดฎเตเดทเตเตป เดเดจเดฟ เดกเดพเดฑเตเดฑ เดฎเตเดกเดฒเตเดฎเดพเดฏเดฟ เดฌเดจเตเดงเดฟเดชเตเดชเดฟเดเตเดเดฟเดเตเดเดฟเดฒเตเดฒ, เดฎเดพเดคเตเดฐเดฎเดฒเตเดฒ เดเดคเต เดเดตเดถเตเดฏเดคเตเดคเดฟเดจเตเด เดเดชเดฏเตเดเดฟเดเตเดเดพเตป เดเดดเดฟเดฏเตเด. เด เดคเดฟเดจเดพเตฝ, เดเดชเตเดชเตเตพ eBPF เดชเตเดฐเตเดเตเดฐเดพเด เดเตเดฐเตเดธเตโเดชเตเดฏเดฟเดจเตเดฑเดฟเดฒเตเดเตเดเต kprobe-เดฒเตเดเตเดเต เดฌเดจเตเดงเดฟเดชเตเดชเดฟเดเตเดเดพเตป เดเดดเดฟเดฏเตเด. เดเดคเต eBPF เดเตปเดธเตเดเตเดฐเตเดฎเตเดจเตเดฑเตเดทเตป, เดชเตเตผเดซเตเดฎเตปเดธเต เด เดจเดพเดฒเดฟเดธเดฟเดธเต, เดฎเดฑเตเดฑเต เดเตเตผเดฃเตฝ เดธเดฌเตเดธเดฟเดธเตเดฑเตเดฑเดเตเดเดณเตเดเต เดชเดถเตเดเดพเดคเตเดคเดฒเดคเตเดคเดฟเตฝ เดฎเดฑเตเดฑเต เดชเดฒ เดเดชเดฏเตเด เดเตเดธเตเดเตพ เดเดจเตเดจเดฟเดตเดฏเดฟเดฒเตเดเตเดเตเดณเตเดณ เดตเดดเดฟ เดคเตเดฑเดเตเดเตเดจเตเดจเต. เดเดชเตเดชเตเตพ eBPF เดเตเดกเต เด เดคเดฟเดจเตเดฑเต เดธเตเดตเดจเตเดคเด เดชเดพเดคเดฏเดฟเดฒเดพเดฃเต เดธเตเดฅเดฟเดคเดฟ เดเตเดฏเตเดฏเตเดจเตเดจเดคเต: kernel/bpf.
- เดฎเดพเดชเตโเดธเต เดเดจเตเดจเต เดตเดฟเดณเดฟเดเตเดเตเดจเตเดจ เดเดเตเดณ เดกเดพเดฑเตเดฑ เดธเตเดฑเตเดฑเตเดฑเตเดเตพ. เดเดชเดฏเตเดเตเดคเต เดธเตเดฅเดฒเดคเตเดคเดฟเดจเตเด เดเตเตผเดฃเตฝ เดธเตโเดชเตเดฏเตโเดธเดฟเดจเตเด เดเดเดฏเดฟเตฝ เดกเดพเดฑเตเดฑเดพ เดเตเดฎเดพเดฑเตเดฑเด เดธเดพเดงเตเดฏเดฎเดพเดเตเดเตเดจเตเดจ เดเต-เดตเดพเดฒเตเดฏเต เดธเตเดฑเตเดฑเตเดฑเตเดเดณเดพเดฃเต เดฎเดพเดชเตโเดธเต. eBPF เดจเดฟเดฐเดตเดงเดฟ เดคเดฐเด เดฎเดพเดชเตเดชเตเดเตพ เดจเตฝเดเตเดจเตเดจเต.
- เดฆเตเดตเดฟเดคเตเดฏ เดชเตเดฐเดตเตผเดคเตเดคเดจเดเตเดเตพ. เดชเตเดฐเดคเตเดฏเตเดเดฟเดเตเดเตเด, เดเดฐเต เดชเดพเดเตเดเตเดเต เดฎเดพเดฑเตเดฑเดฟเดฏเตเดดเตเดคเดพเตป, เดเดฐเต เดเตเดเตเดเตเดธเด เดเดฃเดเตเดเดพเดเตเดเตเด เด เดฒเตเดฒเตเดเตเดเดฟเตฝ เดเดฐเต เดชเดพเดเตเดเตเดเต เดเตเดฒเตเตบ เดเตเดฏเตเดฏเตเด. เด เดซเดเดเตโเดทเดจเตเดเตพ เดเตเตผเดฃเดฒเดฟเดจเตเดณเตเดณเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดจเตเดจเต, เด เดต เดฏเตเดธเตผ-เดธเตโเดชเตเดธเต เดชเตเดฐเตเดเตเดฐเดพเดฎเตเดเดณเดฒเตเดฒ. eBPF เดชเตเดฐเตเดเตเดฐเดพเดฎเตเดเดณเดฟเตฝ เดจเดฟเดจเตเดจเตเด เดจเดฟเดเตเดเตพเดเตเดเต เดธเดฟเดธเตเดฑเตเดฑเด เดเตเดณเตเดเตพ เดเตเดฏเตเดฏเดพเดจเตเด เดเดดเดฟเดฏเตเด.
- เดเตเดณเตเดเตพ เด เดตเดธเดพเดจเดฟเดชเตเดชเดฟเดเตเดเตเด. เดเดฌเดฟเดชเดฟเดเดซเดฟเดฒเต เดชเตเดฐเตเดเตเดฐเดพเด เดตเดฒเตเดชเตเดชเด 4096 เดฌเตเดฑเตเดฑเตเดเดณเดพเดฏเดฟ เดชเดฐเดฟเดฎเดฟเดคเดชเตเดชเตเดเตเดคเตเดคเดฟเดฏเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต. เดเตเดฏเดฟเตฝ เดเตเตพ เดซเตเดเตเดเตผ เดเดฐเต eBPF เดชเตเดฐเตเดเตเดฐเดพเดฎเดฟเดจเต เดเดฐเต เดชเตเดคเดฟเดฏ eBPF เดชเตเดฐเตเดเตเดฐเดพเดฎเดฟเดฒเตเดเตเดเต เดจเดฟเดฏเดจเตเดคเตเดฐเดฃเด เดเตเดฎเดพเดฑเตเดฑเด เดเตเดฏเตเดฏเดพเดจเตเด เด เดเตเดเดจเต เด เดชเดฐเดฟเดฎเดฟเดคเดฟ เดฎเดฑเดฟเดเดเดเตเดเดพเดจเตเด เด เดจเตเดตเดฆเดฟเดเตเดเตเดจเตเดจเต (32 เดชเตเดฐเตเดเตเดฐเดพเดฎเตเดเตพ เดตเดฐเต เด เดฐเตเดคเดฟเดฏเดฟเตฝ เดฒเดฟเดเตเดเต เดเตเดฏเตเดฏเดพเด).
eBPF: เดเดฆเดพเดนเดฐเดฃเด
เดฒเดฟเดจเดเตเดธเต เดเตเตผเดฃเตฝ เดเดฑเดตเดฟเดเดเตเดเดณเดฟเตฝ เดเดฌเดฟเดชเดฟเดเดซเดฟเดจเต เดจเดฟเดฐเดตเดงเดฟ เดเดฆเดพเดนเดฐเดฃเดเตเดเดณเตเดฃเตเดเต. เด เดต เดธเดพเดฎเตเดชเดฟเดณเตเดเดณเดฟเตฝ/bpf/ เดเดจเตเดจเดคเดฟเตฝ เดฒเดญเตเดฏเดฎเดพเดฃเต. เด เดเดฆเดพเดนเดฐเดฃเดเตเดเตพ เดธเดฎเดพเดนเดฐเดฟเดเตเดเดพเตป, เดจเตฝเดเตเด:
$ sudo make samples/bpf/
eBPF-เดจเต เดเดพเตป เดเดฐเต เดชเตเดคเดฟเดฏ เดเดฆเดพเดนเดฐเดฃเด เดเดดเตเดคเตเดเดฏเดฟเดฒเตเดฒ, เดเดจเตเดจเดพเตฝ เดธเดพเดฎเตเดชเดฟเดณเตเดเตพ/bpf/ เดเดจเตเดจเดคเดฟเตฝ เดฒเดญเตเดฏเดฎเดพเดฏ เดธเดพเดฎเตเดชเดฟเดณเตเดเดณเดฟเตฝ เดเดจเตเดจเต เดเดชเดฏเตเดเดฟเดเตเดเตเด. เดเดพเตป เดเตเดกเดฟเดจเตเดฑเต เดเดฟเดฒ เดญเดพเดเดเตเดเตพ เดจเตเดเตเดเตเดเดฏเตเด เด
เดคเต เดเดเตเดเดจเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดจเตเดจเตเดตเตเดจเตเดจเต เดตเดฟเดถเดฆเตเดเดฐเดฟเดเตเดเตเดเดฏเตเด เดเตเดฏเตเดฏเตเด. เดเดฐเต เดเดฆเดพเดนเดฐเดฃเดฎเดพเดฏเดฟ, เดเดพเตป เดชเตเดฐเตเดเตเดฐเดพเด เดคเดฟเดฐเดเตเดเตเดเตเดคเตเดคเต tracex4
.
เดชเตเดคเตเดตเต, เดฎเดพเดคเตเดเดเตพ/bpf/ เดเดจเตเดจเดคเดฟเดฒเต เดเดฐเต เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดฒเตเด เดฐเดฃเตเดเต เดซเดฏเดฒเตเดเตพ เด เดเดเตเดเดฟเดฏเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต. เด เดธเดพเดนเดเดฐเตเดฏเดคเตเดคเดฟเตฝ:
tracex4_kern.c
, เดเตเตผเดฃเดฒเดฟเตฝ eBPF เดฌเตเดฑเตเดฑเตเดเตเดกเต เดเดฏเดฟ เดเดเตเดธเดฟเดเตเดฏเตเดเตเดเต เดเตเดฏเตเดฏเตเดฃเตเด เดธเตเดดเตเดธเต เดเตเดกเต เด เดเดเตเดเดฟเดฏเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต.tracex4_user.c
, เดเดชเดฏเตเดเตเดคเต เดธเตเดฅเดฒเดคเตเดคเต เดจเดฟเดจเตเดจเตเดณเตเดณ เดเดฐเต เดชเตเดฐเตเดเตเดฐเดพเด เด เดเดเตเดเดฟเดฏเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต.
เด เดธเดพเดนเดเดฐเตเดฏเดคเตเดคเดฟเตฝ, เดเดเตเดเตพ เดเดเดชเตเตฝ เดเตเดฏเตเดฏเตเดฃเตเดเดคเตเดฃเตเดเต tracex4_kern.c
eBPF เดฌเตเดฑเตเดฑเตเดเตเดกเดฟเดฒเตเดเตเดเต. เดจเดฟเดฒเดตเดฟเตฝ เดเดณเตเดณเดคเต gcc
eBPF-เดจเต เดฌเดพเดเตเดเตเตปเดกเต เดเดฒเตเดฒ. เดญเดพเดเตเดฏเดตเดถเดพเตฝ, clang
eBPF เดฌเตเดฑเตเดฑเตเดเตเดกเต เดเดเตเดเตเดชเตเดเตเดเต เดเตเดฏเตเดฏเดพเตป เดเดดเดฟเดฏเตเด.
เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเต 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
). เดตเดฒเดฟเดฏ เด
เดเตเดทเดฐเดเตเดเดณเดฟเตฝ เดเดดเตเดคเดฟเดฏเดฟเดฐเดฟเดเตเดเตเดจเตเดจ เดเดฒเตเดฒเดพ เดซเดเดเตโเดทเตป เดชเตเดฐเตเดเดณเตเด เดจเดฟเตผเดตเดเดฟเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจ เดฎเดพเดเตเดฐเตเดเดณเตเดฎเดพเดฏเดฟ เดชเตเดฐเตเดคเตเดคเดชเตเดชเตเดเตเดจเตเดจเต
.
เดเดฌเตโเดเดเตเดฑเตเดฑเต เดซเดฏเดฒเดฟเดจเตเดฑเต เดตเดฟเดญเดพเดเดเตเดเตพ เดเดพเตป เดเดชเตเดเตเดทเดฟเดเตเดเตเดเดฏเดพเดฃเตเดเตเดเดฟเตฝ, เด เดชเตเดคเดฟเดฏ เดตเดฟเดญเดพเดเดเตเดเตพ เดเดคเดฟเดจเดเด เดคเดจเตเดจเต เดจเดฟเตผเดตเดเดฟเดเตเดเดชเตเดชเตเดเตเดเดฟเดเตเดเตเดฃเตเดเตเดจเตเดจเต เดเดพเตป เดเดพเดฃเตเด:
$ 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
เด
เดตเดฟเดเตเดฏเตเด เดเดฃเตเดเต
, เดชเตเดฐเดงเดพเดจ เดชเตเดฐเตเดเตเดฐเดพเด. เด
เดเดฟเดธเตเดฅเดพเดจเดชเดฐเดฎเดพเดฏเดฟ, เด เดชเตเดฐเตเดเตเดฐเดพเด เดเดตเดจเตเดฑเตเดเตพ เดถเตเดฐเดฆเตเดงเดฟเดเตเดเตเดจเตเดจเต 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
เดเดฐเต เดฏเตเดธเตผ เดธเตเดชเตเดธเต เดชเตเดฐเตเดเตเดฐเดพเดฎเตเด เดเดฌเดฟเดชเดฟเดเดซเต เดชเตเดฐเตเดเตเดฐเดพเดฎเตเด เดเดเตเดเดจเต เดฌเดจเตเดงเดชเตเดชเตเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต? เดธเดฎเดพเดฐเดเดญเดฟเดเตเดเตเดฎเตเดชเตเตพ 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;
}
เดเตเดฏเตเดฏเตเดฎเตเดชเตเตพ
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
: เดชเตเดฐเดงเดพเดจ เดชเตเดฐเตเดเตเดฐเดพเด.
เดเดฌเดฟเดชเดฟเดเดซเต เดชเตเดฐเตเดเตเดฐเดพเด เดเดฐเต เดตเดฟเดญเดพเดเดตเตเดฎเดพเดฏเดฟ เดฌเดจเตเดงเดชเตเดชเตเดเตเด เดฎเดพเดชเตเดชเตเดเดณเตเด เดชเตเดฐเดตเตผเดคเตเดคเดจเดเตเดเดณเตเด เดคเดฟเดฐเดฟเดเตเดเดฑเดฟเดฏเตเดจเตเดจเต. เดเตเตผเดฃเตฝ เดเดฐเต เดชเตเดฐเดคเตเดฏเตเด เดคเดฐเดคเตเดคเดฟเดฒเตเดณเตเดณ เดเดตเดจเตเดฑเต เดจเตฝเดเตเดฎเตเดชเตเตพ (เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, tracepoint
), เดฌเดจเตเดงเดฟเดค เดชเตเดฐเดตเตผเดคเตเดคเดจเดเตเดเตพ เดจเดเดชเตเดชเดฟเดฒเดพเดเตเดเตเดจเตเดจเต. เดเตเตผเดฃเตฝ เดชเตเดฐเตเดเตเดฐเดพเดฎเตเด เดฏเตเดธเตผ เดธเตเดชเตเดธเต เดชเตเดฐเตเดเตเดฐเดพเดฎเตเด เดคเดฎเตเดฎเดฟเดฒเตเดณเตเดณ เดเดถเดฏเดตเดฟเดจเดฟเดฎเดฏเด เดเดพเตผเดกเตเดเตพ เดจเตฝเดเตเดจเตเดจเต.
เดคเตเดฐเตเดฎเดพเดจเด
เด เดฒเตเดเดจเด เดฌเดฟเดชเดฟเดเดซเดฟเดจเตเดฏเตเด เดเดฌเดฟเดชเดฟเดเดซเดฟเดจเตเดฏเตเด เดชเตเดคเตเดตเดพเดฏเดฟ เดเตผเดเตเด เดเตเดฏเตเดคเต. eBPF-เดจเต เดเตเดฑเดฟเดเตเดเต เดเดจเตเดจเต เดงเดพเดฐเดพเดณเด เดตเดฟเดตเดฐเดเตเดเดณเตเด เดเดฑเดตเดฟเดเดเตเดเดณเตเด เดเดฃเตเดเตเดจเตเดจเต เดเดจเดฟเดเตเดเดฑเดฟเดฏเดพเด, เด เดคเดฟเดจเดพเตฝ เดเตเดเตเดคเตฝ เดชเด เดจเดคเตเดคเดฟเดจเดพเดฏเดฟ เดเดพเตป เดเตเดฑเดเตเดเต เดเดฑเดตเดฟเดเดเตเดเตพ เดเตเดเดฟ เดถเตเดชเดพเตผเดถ เดเตเดฏเตเดฏเตเด
เดเดพเตป เดตเดพเดฏเดฟเดเตเดเดพเตป เดถเตเดชเดพเตผเดถ เดเตเดฏเตเดฏเตเดจเตเดจเต:
เดฌเดฟเดชเดฟเดเดซเต: เดธเดพเตผเดตเดคเตเดฐเดฟเด เดเตป-เดเตเตผเดฃเตฝ เดตเตเตผเดเตเดตเตฝ เดฎเตเดทเตเตป เดเตเดจเดพเดฅเตป เดเตเตผเดฌเดฑเตเดฑเต. BPF-เดฒเตเดเตเดเตเดณเตเดณ เดเดฐเต เดเดฎเตเดเดตเตเด เด เดคเต eBPF เดเดฏเดฟ เดเดเตเดเดจเต เดชเดฐเดฟเดฃเดฎเดฟเดเตเดเต เดเดจเตเดจเดคเตเด.eBPF-เดจเตเดเตเดเตเดฑเดฟเดเตเดเตเดณเตเดณ เดธเดฎเดเตเดฐเดฎเดพเดฏ เดเดฎเตเดเด เดฌเตเดฐเดฃเตเดเตป เดเตเดฐเตเดเต. LWN.net-เตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดฒเตเดเดจเด. เดฌเตเดฐเดฃเตเดเตป eBPF-เดจเต เดเตเดฑเดฟเดเตเดเต เดเดเดฏเตเดเตเดเดฟเดเต เดเตเดตเตเดฑเตเดฑเต เดเตเดฏเตเดฏเตเดเดฏเตเด เดคเดจเตเดฑเต เดตเดฟเดทเดฏเดคเตเดคเตเดเตเดเตเดฑเดฟเดเตเดเตเดณเตเดณ เดตเดฟเดญเดตเดเตเดเดณเตเดเต เดเดฐเต เดฒเดฟเดธเตเดฑเตเดฑเต เดชเดฐเดฟเดชเดพเดฒเดฟเดเตเดเตเดเดฏเตเด เดเตเดฏเตเดฏเตเดจเตเดจเตเดฌเตเดฒเตเดเต เดชเตเดธเตเดฑเตเดฑเต .BPF, eBPF เดเดจเตเดจเดฟเดตเดฏเต เดเตเดฑเดฟเดเตเดเตเดณเตเดณ เดเตเดฑเดฟเดชเตเดชเตเดเตพ เดเตเดฒเดฟเดฏ เดเดตเดพเตปเดธเต. เดธเตเดเดเตเดฐ เดถเตผเดฎเตเดฎเดฏเตเดเต เด เดตเดคเดฐเดฃเดคเตเดคเตเดเตเดเตเดฑเดฟเดเตเดเตเดณเตเดณ เด เดญเดฟเดชเตเดฐเดพเดฏเดเตเดเตพ "เดฆเดฟ เดฌเดฟเดเดธเตโเดกเดฟ เดชเดพเดเตเดเดฑเตเดฑเต เดซเดฟเตฝเดเตเดเตผ: เดเดชเดฏเตเดเตเดคเต เดคเดฒเดคเตเดคเดฟเดฒเตเดณเตเดณ เดชเดพเดเตเดเดฑเตเดฑเต เดเตเดฏเดพเดชเตโเดเดฑเดฟเดจเดพเดฏเตเดณเตเดณ เดเดฐเต เดชเตเดคเดฟเดฏ เดเตผเดเตเดเดฟเดเตเดเตเดเตผ". เด เดญเดฟเดชเตเดฐเดพเดฏเดเตเดเตพ เดฎเดฟเดเดเตเดเดคเตเด เดธเตเดฒเตเดกเตเดเตพ เดฎเดจเดธเตเดธเดฟเดฒเดพเดเตเดเดพเตป เดจเดฟเดเตเดเดณเต เดธเดนเดพเดฏเดฟเดเตเดเตเดจเตเดจเต.eBPF, เดญเดพเดเด1: เดญเตเดคเดตเตเด เดตเตผเดคเตเดคเดฎเดพเดจเดตเตเด เดญเดพเดตเดฟเดฏเตเด เดซเตเดฑเดฟเดธเต เดเดฒเตเดฒเดฟเดธเต. เดเตเดเต เดฒเตเดเดเตเดฐเตเดกเตเดคเตเดเตผเดเตเด , เดเดจเตเดจเดพเตฝ เดเดคเต เดตเดพเดฏเดฟเดเตเดเตเดฃเตเดเดคเดพเดฃเต. eBPF-เตฝ เดเดพเตป เดเดฃเตเด เดเดฑเตเดฑเดตเตเด เดฎเดฟเดเดเตเด เดฒเตเดเดจเดเตเดเดณเดฟเตฝ เดเดจเตเดจเต.
เด เดตเดฒเดเดฌเด: www.habr.com