GCC కంపైలర్ సూట్లో చేర్చబడింది
బైట్కోడ్ ఉత్పత్తి కోసం బ్యాకెండ్తో పాటు, GCC eBPF కోసం libgcc పోర్ట్ను మరియు ELF ఫైల్లను రూపొందించడానికి సాధనాలను కలిగి ఉంది, ఇది కెర్నల్ అందించిన లోడర్లను ఉపయోగించి eBPF వర్చువల్ మెషీన్లో కోడ్ని అమలు చేయడం సాధ్యం చేస్తుంది. GCCలో eBPFకు మద్దతు ఇచ్చే ప్యాచ్లను ఇప్పటికే ఒరాకిల్ నుండి ఇంజనీర్లు తయారు చేశారు
eBPF కోసం ప్రోగ్రామ్లు C భాష యొక్క ఉపసమితిలో నిర్వచించబడతాయి, కంపైల్ చేయబడతాయి మరియు కెర్నల్లోకి లోడ్ చేయబడతాయి. అమలు చేయడానికి ముందు, eBPF వ్యాఖ్యాత అనుమతించబడిన సూచనల ఉపయోగం కోసం బైట్కోడ్ను తనిఖీ చేస్తుంది మరియు కోడ్పై కొన్ని నియమాలను విధిస్తుంది (ఉదాహరణకు, లూప్లు లేవు).
ప్రారంభంలో, Linuxలో eBPF కంపైల్ చేయడానికి LLVM-ఆధారిత సాధనాలు ఉపయోగించబడ్డాయి. GCCలో eBPF మద్దతు ఆసక్తికరంగా ఉంటుంది ఎందుకంటే ఇది అదనపు డిపెండెన్సీలను ఇన్స్టాల్ చేయకుండా Linux కెర్నల్ మరియు eBPF ప్రోగ్రామ్లను రూపొందించడానికి ఒక టూల్కిట్ను ఉపయోగించడానికి మిమ్మల్ని అనుమతిస్తుంది.
eBPF ప్రోగ్రామ్ల రూపంలో, మీరు నెట్వర్క్ ఆపరేషన్ హ్యాండ్లర్లను సృష్టించవచ్చు, ట్రాఫిక్ను ఫిల్టర్ చేయవచ్చు, బ్యాండ్విడ్త్ను నిర్వహించవచ్చు, సిస్టమ్లను పర్యవేక్షించవచ్చు, సిస్టమ్ కాల్లను అడ్డగించవచ్చు, యాక్సెస్ని నియంత్రించవచ్చు, ఆపరేషన్ల ఫ్రీక్వెన్సీ మరియు సమయాన్ని లెక్కించవచ్చు మరియు kprobes/uprobes/tracepoints ఉపయోగించి ట్రేసింగ్ చేయవచ్చు.
మూలం: opennet.ru