မိတ်ဆက်ပေးသည်။ KernelScript — eBPF ပရိုဂရမ်များ၊ user loader များနှင့် kernel extension များ တီထွင်ရန်အတွက် စမ်းသပ်ပရိုဂရမ်းမင်းဘာသာစကားတစ်ခု Linux တစ်ခုတည်းသော ကုဒ်အခြေခံမှ။ ပရောဂျက်ကို တီထွင်နေပါသည်။ မာလ်တီကာနယ် နည်းပညာများsplit-kernel/multikernel architecture ကို မြှင့်တင်ပေးသည့် ကုမ္ပဏီတစ်ခု Linuxကုမ္ပဏီတည်ထောင်သူ Cong Wang က KernelScript အကြောင်းပြောခဲ့ပါတယ် Linux Foundation Open Source Summit; ပရောဂျက်ကုဒ်ကို GitHub တွင် လိုင်စင်အောက်တွင် ထုတ်ဝေထားသည် Apache ကို 2.0.


eBPF (Extended Berkeley Packet Filter) သည် kernel တွင် တိုက်ရိုက်လည်ပတ်နိုင်သော ပရိုဂရမ်ငယ်များ ခွင့်ပြုသည့် နည်းပညာတစ်ခုဖြစ်သည်။ Linux၎င်း၏ကုဒ်ကို မထိဘဲ သို့မဟုတ် စနစ်တည်ငြိမ်မှုကို မထိခိုက်စေဘဲ။ eBPF သည် စွမ်းဆောင်ရည်စောင့်ကြည့်ခြင်းမှသည် လုံခြုံရေးနှင့် ကွန်ရက်အကောင်းဆုံးဖြစ်အောင်လုပ်ဆောင်ခြင်းအထိ အလုပ်အမျိုးမျိုးတွင် ကူညီပေးသည်။ ဥပမာအားဖြင့်၊ eBPF သည် စနစ်ခေါ်ဆိုမှုများ၊ ကွန်ရက်အသွားအလာနှင့် အခြားဖြစ်ရပ်များကို အချိန်နှင့်တပြေးညီ စောင့်ကြည့်နိုင်သည်။ ၎င်းသည် စွမ်းဆောင်ရည်အတားအဆီးများကို ဖော်ထုတ်ပြီး သင့်စနစ်ကို အကောင်းဆုံးဖြစ်အောင်လုပ်ဆောင်နိုင်စေပါသည်။ဟာဗရာ).

KernelScript ရဲ့ နောက်ကွယ်က အယူအဆကတော့ eBPF ဖွံ့ဖြိုးတိုးတက်မှုကို C + libbpf ပေါင်းစပ်အသုံးပြုမှုထက် ပိုမိုလွယ်ကူစေဖို့ဖြစ်ပြီး bpftrace လိုမျိုး tracing ထက် ကျော်လွန်ဖို့လည်း ရည်ရွယ်ပါတယ်။ developer တွေက ဒီဘာသာစကားကို type-safe DSL အဖြစ် ပေါင်းစပ်ထားပါတယ်။ eGMP, userspace နှင့် kernelspace ဖွံ့ဖြိုးတိုးတက်မှု- တစ်ခုတည်းသော source file မှ compiler သည် eBPF ပရိုဂရမ်များ၊ userspace အပိုင်းနှင့် kfunc မှတစ်ဆင့် kernel module များနှင့် ပေါင်းစပ်ခြင်းအတွက် ကုဒ်ကို generate လုပ်ရမည်။

KernelScript ရဲ့ ဖော်ပြထားတဲ့ စွမ်းဆောင်ရည်တွေကတော့ -

  • ဖိုင်တစ်ခုတည်းမှ မတူညီသော ရည်ရွယ်ချက်များအတွက် စုစည်းခြင်း — @xdp၊ @tc၊ @helper နှင့် @kfunc ကဲ့သို့သော attribute များပါသည့် function များကို XDP/TC program၊ helper function၊ kernel function သို့မဟုတ် regular userspace code ကဲ့သို့သော မှန်ကန်သောအပိုင်းသို့ အလိုအလျောက် သတ်မှတ်ပေးပါသည်။

  • အမြီးခေါ်ဆိုမှုများကို အလိုအလျောက်လုပ်ဆောင်ခြင်း — ပရိုဂရမ် array ကို ကိုယ်တိုင်စီစဉ်ပြီး bpf_tail_call() ကိုခေါ်မည့်အစား developer အား အခြား function တစ်ခုသို့ ပုံမှန်ခေါ်ဆိုမှုတစ်ခုရေးရန်နှင့် low-level eBPF ကုဒ်ထုတ်လုပ်ခြင်းကို compiler သို့ထားခဲ့ရန် တောင်းဆိုထားသည်။

  • dynptr နှင့် eBPF မြေပုံများဖြင့် ရိုးရှင်းသောအလုပ်လုပ်ခြင်း — ဤဘာသာစကားသည် bpf_ringbuf_reserve_dynptr၊ bpf_dynptr_write နှင့် အလားတူ API များနှင့်ပတ်သက်သည့် လက်စွဲအလုပ်အချို့ကို ဝှက်ထားသည်။ eBPF မြေပုံများကို မတူညီသော ပရိုဂရမ်များမှ ဝင်ရောက်အသုံးပြုနိုင်သော ကမ္ဘာလုံးဆိုင်ရာ variable များအဖြစ် အသုံးပြုနိုင်သည်။

  • ဆော့ဖ်ဝဲသက်တမ်း ထိန်းချုပ်မှု — eBPF ပရိုဂရမ်များကို ရိုက်ထည့်ထားသော တန်ဖိုးများအဖြစ် ကိုယ်စားပြုပြီး စာရေးသူများ၏ အဆိုအရ ၎င်းသည် compile time တွင် အမှားများကို ကာကွယ်နိုင်စေသည်၊ ဥပမာ- အောင်မြင်သော load() မတိုင်မီ attach() ကို execute လုပ်ရန် ကြိုးစားခြင်း ဖြစ်သည်။

  • kfunc ပံ့ပိုးမှု — KernelScript သည် kernel space တွင် execute လုပ်ပြီး eBPF program များမှ call လုပ်နိုင်သော @kfunc attribute ဖြင့် function များကို declare လုပ်ခွင့်ပြုသည်။ kernel module နှင့် BTF registration များကို အလိုအလျောက်ထုတ်ပေးမည်ဟု ကတိပြုထားသည်။

  • အဓိက eBPF အစီအစဉ်အမျိုးအစားများအတွက် ပံ့ပိုးမှု — README သည် hardware performance counters များနှင့်အလုပ်လုပ်ခြင်းအပါအဝင် XDP၊ TC၊ probe programs များနှင့် perf_event အတွက် ဥပမာများကိုပြသသည်။

KernelScript သည် kernel အစားထိုးမဟုတ်ကြောင်း စာရေးသူများက အထူးအလေးပေးပြောကြားသည်။ Linux သို့မဟုတ် eBPF runtime အသစ်။ ၎င်းသည် compiler တစ်ခုနှင့် high-level language တစ်ခုဖြစ်ပြီး ရင်းနှီးပြီးသား low-level components များဖြစ်သည့် eBPF code၊ userspace loaders၊ Makefiles နှင့် လိုအပ်ပါက kernel module တစ်ခုကို ထုတ်လုပ်ပေးသင့်သည်။

လောလောဆယ်မှာတော့ ဒီပရောဂျက်ကို အစောပိုင်းစမ်းသပ်မှုတစ်ခုအဖြစ် သတ်မှတ်သင့်ပါတယ်။ repository မှာ KernelScript ဟာ ဖွံ့ဖြိုးတိုးတက်မှုအဆင့်မှာ ရှိနေသေးတယ်လို့ ရှင်းရှင်းလင်းလင်း ဖော်ပြထားပါတယ်။ beta ကို၊ syntax နှင့် API များသည် နောက်ပြန်လိုက်ဖက်ညီမှုကို မထိန်းသိမ်းဘဲ ပြောင်းလဲနိုင်သည်၊ ထို့အပြင် ထုတ်လုပ်မှုတွင် ၎င်းကို အသုံးပြုရန် အကြံပြုထားခြင်း မရှိသေးပါ။

source: linux.org.ru

DDoS ကာကွယ်ရေး၊ VPS VDS ဆာဗာများပါသည့် ဆိုက်များအတွက် ယုံကြည်စိတ်ချရသော hosting ကို ဝယ်ယူပါ။ 🔥 DDoS ကာကွယ်မှု၊ VPS VDS ဆာဗာများပါရှိသော ယုံကြည်စိတ်ချရသော ဝဘ်ဆိုက် hosting ကို ဝယ်ယူပါ | ProHoster