eBPF: നിങ്ങളുടെ കോഡിനു തൊടാതെ ലിനക്സിനു ഉള്ളിൽ കാണുക
ആധുനിക നെറ്റ് വർക്കിങ്, സുരക്ഷ, നിരീക്ഷണ ഉപകരണങ്ങളുടെ പിന്നിലെ കെർണൽ സാങ്കേതികവിദ്യ.
ആധുനിക നെറ്റ് വർക്കിങ്, സുരക്ഷ, നിരീക്ഷണ ഉപകരണങ്ങളുടെ പിന്നിലെ കെർണൽ സാങ്കേതികവിദ്യ.

നിങ്ങൾ ക്ലൌഡ് നേറ്റീവ് ടൂളിംഗ് പിന്തുടരുകയാണെങ്കിൽ എല്ലായിടത്തും "eBPF" കാണും. സിലിയം അത് നെറ്റ് വർക്കിംഗിന് ഉപയോഗിക്കുന്നു. ഫാൽക്കോയും ടെട്രാഗണും സുരക്ഷയ്ക്കായി ഉപയോഗിക്കുന്നു. പിക്സി, ഗ്രഫാന ബെയ്ല തുടങ്ങിയവർ ഇത് നിരീക്ഷണത്തിനായി ഉപയോഗിക്കുന്നു. ക്ലൌഡ് പ്രൊവൈഡര് മാര് ഇത് അവരുടെ കുബർനെറ്റ് നെറ്റ് വർക്കിന് റെ ഹുഡ് കീഴില് ഉപയോഗിക്കുന്നു.
പക്ഷെ യഥാർത്ഥത്തിൽ അത് എന്താണ്, അത് എന്തിന് പ്രധാനമാണ് DevOps എൻജിനീയർമാർക്ക് ഒരിക്കലും കെർണൽ കോഡ് എഴുതാത്തവർക്ക്?
ലിനക്സ് കേർണൽ എല്ലാം കാണുന്നു: എല്ലാ നെറ്റ്വർക്ക് പാക്കറ്റുകളും, തുറന്ന എല്ലാ ഫയലുകളും, ആരംഭിച്ച എല്ലാ പ്രക്രിയകളും, സിസ്റ്റം കോൾ. പരമ്പരാഗതമായി, നിങ്ങൾക്ക് അത് ഉപയോഗിക്കണമെങ്കിൽ, നിങ്ങൾക്ക് രണ്ട് മോശം ഓപ്ഷനുകൾ ഉണ്ടായിരുന്നുഃ കെർണൽ തന്നെ മാറ്റുക (ബദ്ധിമതിയാണ്, അപകടകരമാണ്, ഉപയോക്താക്കളിലേക്ക് എത്താൻ വർഷങ്ങൾ എടുക്കും) അല്ലെങ്കിൽ ഒരു കെർണെൽ മൊഡ്യൂൾ എഴുതുക (ശക്തമായ, എന്നാൽ ഒരു ബഗ് മുഴുവൻ മെഷീൻ ക്രാഷ് ചെയ്യാം).
ഇ ബി പി എഫ് (ആദ്യം "വിപുലീകൃത ബെർക്ക്ലി പാക്കറ്റ് ഫിൽട്ടർ", ഇപ്പോൾ ഒരു പേര് മാത്രമാണ്) മൂന്നാമത്തെ ഓപ്ഷനാണ്. ഇത് ചെറിയ, സാൻഡ്ബോക്സ് ചെയ്ത പ്രോഗ്രാമുകൾ സുരക്ഷിതമായി, കെർണലിന്റെ കോഡ് മാറ്റാതെ അല്ലെങ്കിൽ മൊഡ്യൂളുകൾ ലോഡ് ചെയ്യാതെ തന്നെ, കെർനലിനുള്ളിൽ പ്രവർത്തിപ്പിക്കാൻ നിങ്ങളെ അനുവദിക്കുന്നു.
ഒരു eBPF പ്രോഗ്രാം പ്രവർത്തിക്കുന്നതിനു മുമ്പ്, പരിശോധനക്കാരൻ അത് പരിശോധിക്കുന്നു: അത് അവസാനിപ്പിക്കണം, അത് മെമ്മറി ആക്സസ് ചെയ്യാൻ കഴിയില്ല അത് പാടില്ല, അത് സിസ്റ്റം ക്രാഷ് ചെയ്യാൻ കഴിയില്ല. പിന്നെ അത് നേറ്റീവ് കോഡിലേക്ക് കംപൈൽ ചെയ്യുകയും അതിവേഗം പ്രവർത്തിക്കുകയും ചെയ്യുന്നു.
ഈ പ്രോഗ്രാമുകള് കുറ്റി: നെറ്റ്വർക്ക് ഇവന്റുകൾ, സിസ്റ്റം കോൾ, ഫംഗ്ഷൻ എൻട്രികൾ, എക്സിറ്റുകൾ എന്നിവ കേർണലിലോ ആപ്ലിക്കേഷനുകളിലോ. സംഭവം സംഭവിക്കുമ്പോൾ, പ്രോഗ്രാം പ്രവർത്തിക്കുന്നു, ഡാറ്റ ശേഖരിക്കുന്നു അല്ലെങ്കിൽ ഒരു തീരുമാനം എടുക്കുന്നു, കൂടാതെ ഉപയോക്തൃ സ്ഥലത്തെ സാധാരണ പ്രോഗ്രാമുകളുമായി ഫലങ്ങൾ പങ്കിടുന്നു.
eBPF ലിനക്സ് കേർണലിനെ സുരക്ഷിതമായി പ്രോഗ്രാം ചെയ്യാവുന്ന പ്ലാറ്റ്ഫോമായി മാറ്റുന്നു, റീബൂട്ട് ചെയ്യാതെ, നിങ്ങളുടെ ആപ്ലിക്കേഷന്റെ ഒരു വരി മാറ്റാതെ.
നിങ്ങള് തന്നെ eBPF പ്രോഗ്രാമുകൾ എഴുതില്ല. പക്ഷെ നിങ്ങള് അത് ഉപയോഗിക്കും, അവയുടെ പ്രവർത്തനം മനസിലാക്കുന്നത് അവയെ തിരഞ്ഞെടുക്കാനും ഡീബഗ് ചെയ്യാനും സഹായിക്കും.
വലിയ ഗുണങ്ങൾ:
നെറ്റ് വർക്കിംഗ്: - സിലിയം: റൂട്ടിംഗ്, ലോഡ് ബാലൻസിംഗ്, നെറ്റ്വർക്ക് നയങ്ങൾ എന്നിവയ്ക്കായി iptables- ന് പകരം eBPF ഉപയോഗിക്കുന്ന ഒരു Kubernetes CNI. വേഗതയേറിയതും കൂടുതൽ സ്കേലബിളും പല സേവനങ്ങളുമായും, ഐഡന്റിറ്റി-അവബോധമുള്ള നയങ്ങളും സുതാര്യമായ എൻക്രിപ്ഷനും പോലുള്ള സവിശേഷതകൾ ചേർക്കുന്നു. ഇത് ഒരു സി. എൻ. സി. എഫ്. ബിരുദധാരിയായ പ്രോജക്ട് ആണ്. - അതെ. ഹബ്ബിൾ: സിലിയത്തിന്റെ നിരീക്ഷണ പാളി, ഏത് സേവനങ്ങളുമായി ഏത് സേവനങ്ങളോട് സംസാരിക്കുന്നുവെന്ന് കാണിക്കുന്നു, ഫ്ലോ ലോഗുകളും സേവന മാപ്പും.
സുരക്ഷാ സംവിധാനം: - ഫാൽക്കോ: ഒരു കണ്ടെയ്നറിനുള്ളിലെ ഷെൽ തുറന്നതോ അപ്രതീക്ഷിത ഫയൽ ആക്സസ് ചെയ്യുന്നതോ പോലുള്ള സംശയകരമായ പെരുമാറ്റം കണ്ടെത്തുന്നു. - അതെ. ടെട്രാഗൺ: സിലിയം പ്രോജക്ട്, കേർണൽ തലത്തിൽ സുരക്ഷാ നയങ്ങൾ നിരീക്ഷിക്കുകയും നടപ്പിലാക്കുകയും ചെയ്യുന്നു, ഉദാഹരണത്തിന് ഒരു സെൻസിറ്റീവ് ഫയൽ വായിക്കാൻ ശ്രമിക്കുന്ന ഒരു പ്രക്രിയയെ കൊല്ലുന്നു.
നിരീക്ഷണ ശേഷി: - ഗ്രാഫാന ബെയ്ല: ഇ. ബി. പി. എഫിനൊപ്പം എച്ച്ടിടിപി, ജിആർപിസി സേവനങ്ങൾ ഓട്ടോ-ഇൻസ്ട്രുമെന്റ് ചെയ്യുകയും ആപ്ലിക്കേഷനെ സ്പർശിക്കാതെ ഓപ്പൺ ടെലിമെട്രി മെട്രിക്സും ട്രാക്കുകളും സൃഷ്ടിക്കുകയും ചെയ്യുന്നു. (ഇതിന്റെ പ്രധാന ഭാഗം ഓപ്പൺ ടെലിമെട്രി പദ്ധതിക്ക് eBPF ഉപകരണങ്ങളുടെ പരിശ്രമമായി സംഭാവന ചെയ്തിട്ടുണ്ട്.) മാലാഖ: ഉപകരണങ്ങളില്ലാതെ അഭ്യർത്ഥന തലത്തിലുള്ള ഡാറ്റ ഉൾപ്പെടെ കുബർനെറ്റസ് ക്ലസ്റ്ററുകളിലേക്ക് തൽക്ഷണ ദൃശ്യപരത. - അതെ. പാര് ക്ക ഒപ്പം പൈറോസ്കോപ്പ്: എല്ലാ പ്രക്രിയകളിലും സിപിയു ഉപയോഗിക്കുന്ന ഫംഗ്ഷനുകൾ കാണിക്കുന്ന eBPF ഉപയോഗിച്ച് തുടർച്ചയായ പ്രൊഫൈലിംഗ്. - അതെ. പിപിഎഫ് ട്രെയ്സ് ഒപ്പം ബിസിസി ഉപകരണങ്ങള്: ലിനക് സ് പ്രകടന വിശകലനത്തിനുള്ള കൈകള് .
ഏറ്റവും ആവേശകരമായ ഒരു ഉപയോഗം: ആരും തൊടാൻ ആഗ്രഹിക്കാത്ത ആപ്ലിക്കേഷനുകളിൽ നിന്നും അഭ്യർത്ഥന അളവുകളും അടിസ്ഥാന ട്രാക്കുകളും നേടുക. പഴയ സേവനങ്ങൾ, മൂന്നാം കക്ഷി ബൈനറികൾ, നല്ല ഓപ്പൺ ടെലിമെട്രി പിന്തുണയില്ലാത്ത ഭാഷകളിലെ ആപ്പുകൾ.
ഒരു eBPF അടിസ്ഥാനമാക്കിയുള്ള ഉപകരണം നെറ്റ്വർക്ക് കോളുകളും ചില ഫംഗ്ഷനുകളും നിരീക്ഷിക്കുന്നു, HTTP, gRPC അഭ്യർത്ഥനകൾ തിരിച്ചറിയുന്നു, കൂടാതെ RED അളവുകൾ (തീവ്രത, പിശകുകൾ, ദൈർഘ്യം) സൃഷ്ടിക്കുന്നു, കൂടാതെ സ്പാനുകളും സ്വപ്രേരിതമായി സൃഷ്ടിക്കുന്നു. ഇത് ശരിയായ ഇൻ-കോഡ് ഉപകരണങ്ങളേക്കാൾ വിശദമല്ല, പക്ഷെ ഇത് നിങ്ങൾക്ക് ഒന്നാം ദിവസം മുതൽ എല്ലാത്തിനും ഒരു ഉറച്ച അടിസ്ഥാനം നൽകുന്നു.
ഒരു ലിനക്സ് മെഷീനിൽ eBPF യുടെ ശക്തി അനുഭവിക്കാനുള്ള ഏറ്റവും എളുപ്പവഴി bpftrace ആണ്:
# Show every new process being started, system-wide
sudo bpftrace -e 'tracepoint:syscalls:sys_enter_execve { printf("%s -> %s\n", comm, str(args->filename)); }'
അത് പ്രവർത്തിപ്പിച്ച് ഒരു ടെർമിനൽ തുറക്കുക, അത് ആരംഭിക്കുമ്പോൾ എല്ലാ കമാൻഡുകളും കാണും. അത് നിങ്ങളോട് നേരിട്ട് സംസാരിക്കുന്ന കേർണലാണ്.
അതെ, നീ ഒരിക്കലും ഒരു വരി ഇ. ബി. പി. എഫ്. എഴുതുന്നില്ലെങ്കിലും. ഇത് നിശബ്ദമായി കുബർനെറ്റസ് നെറ്റ് വർക്കിംഗിന്റെയും റൺ ടൈം സെക്യൂരിറ്റിയുടെയും ആധുനിക നിരീക്ഷണത്തിന്റെയും അടിത്തറയായി മാറുകയാണ്. എന്താണെന്ന് അറിയുന്നത് നിങ്ങളെ സഹായിക്കുന്നു, സിലിയം വേഗതയുള്ളതാണോ എന്ന് മനസിലാക്കാൻ, ഫാൽക്കോ കണ്ടെയ്നറുകളുടെ ഉള്ളിൽ എങ്ങനെ കാണുന്നു, അവയെ സ്പർശിക്കാതെ തന്നെ ഉപകരണങ്ങൾ നിങ്ങളുടെ ആപ്ലിക്കേഷനുകൾ എങ്ങനെ ട്രാക്കുചെയ്യുന്നു.
എന്റെ അഭിപ്രായം: eBPF ആണ് ഏറ്റവും പ്രധാനപ്പെട്ട ലിനക്സ് സാങ്കേതികവിദ്യ മിക്ക ആളുകളും ഒരിക്കലും കാണാത്തത്. അത് എന്ത് ചെയ്യുന്നു എന്ന് പഠിച്ചാൽ, ആധുനിക ഉപകരണങ്ങൾ പെട്ടെന്ന് തന്നെ അർത്ഥവത്തായിത്തീരും.
ഡെസ്ലി