క్లౌడ్ఫ్లేర్ కంపెనీ
xdpcap యుటిలిటీ tcpdump/libpcap ఫిల్టరింగ్ ఎక్స్ప్రెషన్లకు అనుకూలంగా ఉంటుంది మరియు అదే హార్డ్వేర్పై గణనీయంగా ఎక్కువ ట్రాఫిక్ను ప్రాసెస్ చేయడానికి మిమ్మల్ని అనుమతిస్తుంది. Linux కెర్నల్ XDP సబ్సిస్టమ్ని ఉపయోగించే ఫిల్టరింగ్, DoS ప్రొటెక్షన్ మరియు లోడ్ బ్యాలెన్సింగ్ సిస్టమ్లు వంటి సాధారణ tcpdump వర్తించని పరిసరాలలో డీబగ్గింగ్ కోసం Xdpcap కూడా ఉపయోగించబడుతుంది, ఇది Linux కెర్నల్ నెట్వర్కింగ్ స్టాక్ (tcpdump) ద్వారా ప్రాసెస్ చేయబడే ముందు ప్యాకెట్లను ప్రాసెస్ చేస్తుంది. XDP హ్యాండ్లర్ ద్వారా పడిపోయిన ప్యాకెట్లను చూడలేదు).
eBPF మరియు XDP సబ్సిస్టమ్లను ఉపయోగించడం ద్వారా అధిక పనితీరు సాధించబడుతుంది. eBPF అనేది Linux కెర్నల్లో నిర్మించిన బైట్కోడ్ ఇంటర్ప్రెటర్, ఇది ఇన్కమింగ్/అవుట్గోయింగ్ ప్యాకెట్లను ఫార్వార్డ్ చేయడం లేదా విస్మరించడం గురించి నిర్ణయాలతో అధిక-పనితీరు గల హ్యాండ్లర్లను సృష్టించడానికి మిమ్మల్ని అనుమతిస్తుంది. JIT కంపైలర్ని ఉపయోగించి, eBPF బైట్కోడ్ మెషిన్ సూచనలలోకి అనువదించబడుతుంది మరియు స్థానిక కోడ్ పనితీరుతో అమలు చేయబడుతుంది. XDP (eXpress Data Path) సబ్సిస్టమ్ eBPFని నెట్వర్క్ డ్రైవర్ స్థాయిలో BPF ప్రోగ్రామ్లను అమలు చేయగల సామర్థ్యంతో పూర్తి చేస్తుంది, DMA ప్యాకెట్ బఫర్కు నేరుగా యాక్సెస్కు మద్దతు ఇస్తుంది మరియు నెట్వర్క్ స్టాక్ ద్వారా skbuff బఫర్ కేటాయించబడే ముందు దశలో పని చేస్తుంది.
tcpdump వలె, xdpcap యుటిలిటీ మొదట ప్రామాణిక libpcap లైబ్రరీని ఉపయోగించి అధిక-స్థాయి ట్రాఫిక్ ఫిల్టరింగ్ నియమాలను క్లాసిక్ BPF ప్రాతినిధ్యం (cBPF)లోకి అనువదిస్తుంది, ఆపై వాటిని కంపైలర్ ఉపయోగించి eBPF రొటీన్ల రూపంలోకి మారుస్తుంది.
మూలం: opennet.ru