రస్ట్‌లో eBPF హ్యాండ్లర్‌లను సృష్టించడం కోసం Aya లైబ్రరీని పరిచయం చేసింది

Aya లైబ్రరీ యొక్క మొదటి విడుదల అందించబడింది, ఇది JITతో ప్రత్యేక వర్చువల్ మెషీన్‌లో Linux కెర్నల్‌లో అమలు చేసే రస్ట్ భాషలో eBPF హ్యాండ్లర్‌లను సృష్టించడానికి మిమ్మల్ని అనుమతిస్తుంది. ఇతర eBPF డెవలప్‌మెంట్ సాధనాల వలె కాకుండా, Aya libbpf మరియు bcc కంపైలర్‌ను ఉపయోగించదు, బదులుగా రస్ట్‌లో వ్రాసిన దాని స్వంత అమలును అందిస్తుంది, ఇది కెర్నల్ సిస్టమ్ కాల్‌లను నేరుగా యాక్సెస్ చేయడానికి libc క్రేట్ ప్యాకేజీని ఉపయోగిస్తుంది. Ayaని నిర్మించడానికి C లాంగ్వేజ్ టూలింగ్ లేదా కెర్నల్ హెడర్ ఫైల్‌లు అవసరం లేదు. లైబ్రరీ కోడ్ MIT మరియు Apache 2.0 లైసెన్స్‌ల క్రింద పంపిణీ చేయబడింది.

ముఖ్య లక్షణాలు:

  • BTF (BPF టైప్ ఫార్మాట్) కోసం మద్దతు, ఇది టైప్ చెకింగ్ మరియు ప్రస్తుత కెర్నల్ ద్వారా అందించబడిన రకాలకు మ్యాపింగ్ కోసం BPF సూడోకోడ్‌లో టైప్ సమాచారాన్ని అందిస్తుంది. BTF యొక్క ఉపయోగం సార్వత్రిక eBPF హ్యాండ్లర్‌లను సృష్టించడం సాధ్యపడుతుంది, అవి Linux కెర్నల్ యొక్క విభిన్న సంస్కరణలతో పునఃసంకలనం లేకుండా ఉపయోగించబడతాయి.
  • "bpf-to-bpf" కాల్‌లు, గ్లోబల్ వేరియబుల్స్ మరియు ఇనిషియలైజర్‌లకు మద్దతు, ఇది eBPFలో పనిని పరిగణనలోకి తీసుకుని ఫంక్షన్‌లను పునర్నిర్వచించే రన్‌టైమ్‌గా అయాను ఉపయోగించే సాధారణ ప్రోగ్రామ్‌ల మాదిరిగానే eBPF కోసం ప్రోగ్రామ్‌లను రూపొందించడానికి మిమ్మల్ని అనుమతిస్తుంది.
  • సాధారణ శ్రేణులు, హ్యాష్‌ల మ్యాప్‌లు, స్టాక్‌లు, క్యూలు, స్టాక్ ట్రేస్‌లు, అలాగే సాకెట్ మరియు పనితీరు ట్రాకింగ్ స్ట్రక్చర్‌లతో సహా వివిధ కెర్నల్ రకాలకు మద్దతు.
  • ట్రాఫిక్, cgroup హ్యాండ్లర్లు మరియు వివిధ సాకెట్ కార్యకలాపాలు, XDP ప్రోగ్రామ్‌లను ఫిల్టర్ చేయడానికి మరియు నిర్వహించడానికి ప్రోగ్రామ్‌లతో సహా వివిధ రకాల eBTF ప్రోగ్రామ్‌లను సృష్టించగల సామర్థ్యం.
  • నాన్-బ్లాకింగ్ మోడ్ టోకియో మరియు async-stdలో అసమకాలిక అభ్యర్థన ప్రాసెసింగ్ కోసం ప్లాట్‌ఫారమ్‌లకు మద్దతు.
  • కెర్నల్ అసెంబ్లీ మరియు కెర్నల్ హెడర్ ఫైల్‌లకు ఎలాంటి కనెక్షన్ లేకుండా వేగవంతమైన అసెంబ్లీ.

ప్రాజెక్ట్ ఇప్పటికీ ప్రయోగాత్మకంగా పరిగణించబడుతుంది - API ఇంకా స్థిరీకరించబడలేదు మరియు అభివృద్ధి చెందుతూనే ఉంది. అలాగే, అన్ని ప్రణాళికాబద్ధమైన అవకాశాలు ఇంకా గ్రహించబడలేదు. సంవత్సరం చివరి నాటికి, డెవలపర్‌లు Aya యొక్క కార్యాచరణను libbpfతో సమాన స్థాయికి తీసుకురావాలని మరియు జనవరి 2022లో మొదటి స్థిరమైన విడుదలను రూపొందించాలని భావిస్తున్నారు. Linux కెర్నల్ కోసం రస్ట్ కోడ్‌ను వ్రాయడానికి అవసరమైన Aya భాగాలను లోడ్ చేయడానికి, అటాచ్ చేయడానికి మరియు eBPF ప్రోగ్రామ్‌లతో పరస్పర చర్య చేయడానికి ఉపయోగించే వినియోగదారు-స్పేస్ భాగాలతో కలపడానికి కూడా ప్రణాళికలు ఉన్నాయి.

eBPF అనేది Linux కెర్నల్‌లో నిర్మించబడిన బైట్‌కోడ్ ఇంటర్‌ప్రెటర్ అని గుర్తుచేసుకుందాం, ఇది నెట్‌వర్క్ ఆపరేషన్ హ్యాండ్లర్‌లను సృష్టించడానికి, సిస్టమ్ ఆపరేషన్‌ను పర్యవేక్షించడానికి, సిస్టమ్ కాల్‌లను అడ్డగించడానికి, యాక్సెస్‌ని నియంత్రించడానికి, ఈవెంట్‌లను ప్రాసెస్ చేయడానికి, టైమింగ్‌ను కొనసాగించడానికి, ఆపరేషన్‌ల ఫ్రీక్వెన్సీ మరియు సమయాన్ని లెక్కించడానికి, నిర్వహించడానికి మిమ్మల్ని అనుమతిస్తుంది. kprobes/uprobes/tracepoints ఉపయోగించి ట్రేసింగ్. JIT సంకలనం యొక్క ఉపయోగానికి ధన్యవాదాలు, బైట్‌కోడ్ ఫ్లైలో మెషీన్ సూచనలలోకి అనువదించబడింది మరియు స్థానిక కోడ్ పనితీరుతో అమలు చేయబడుతుంది. XDP నెట్‌వర్క్ డ్రైవర్ స్థాయిలో BPF ప్రోగ్రామ్‌లను అమలు చేయడానికి సాధనాలను అందిస్తుంది, DMA ప్యాకెట్ బఫర్‌ను నేరుగా యాక్సెస్ చేయగల సామర్థ్యంతో, ఇది భారీ నెట్‌వర్క్ లోడ్‌లో పని చేయడానికి అధిక-పనితీరు గల ప్రాసెసర్‌లను సృష్టించడానికి మిమ్మల్ని అనుమతిస్తుంది.

మూలం: opennet.ru

ఒక వ్యాఖ్యను జోడించండి