۳۰ شهریور ۱۴۰۳

Techboy

اخبار و اطلاعات روز تکنولوژی

چگونه eBPF نوآوری بومی ابر را باز می کند

با اجازه دادن به قابلیت‌های هسته لینوکس برای گسترش بدون تغییر کد منبع هسته، eBPF نوآوری سریع‌تر، شبکه‌سازی کارآمدتر، و عملکرد و مقیاس‌پذیری بیشتر را به پشته بومی ابر می‌آورد.

با اجازه دادن به قابلیت‌های هسته لینوکس برای گسترش بدون تغییر کد منبع هسته، eBPF نوآوری سریع‌تر، شبکه‌سازی کارآمدتر، و عملکرد و مقیاس‌پذیری بیشتر را به پشته بومی ابر می‌آورد.

باربارا لیسکوف – برنده درخشان جایزه تورینگ که حرفه‌اش الهام‌بخش تفکرات مدرن در مورد محاسبات توزیع‌شده بود – علاقه‌مند به فراخوانی “قدرت انتزاع” و نقش آن در “یافتن رابط مناسب برای یک سیستم و همچنین یافتن یک سیستم” بود. طراحی موثر برای پیاده سازی سیستم.”

درباره حق با Liskov بارها ثابت شده است، و ما اکنون در نقطه‌ای هستیم که انتزاعات جدید – و به طور خاص eBPF – تکامل طراحی سیستم بومی ابری را به روش‌های قدرتمند جدید هدایت می‌کنند. این انتزاعات جدید قفل موج بعدی نوآوری بومی ابری را باز می کند و مسیر را برای تکامل محاسبات بومی ابری تعیین می کند.

چالش های بومی ابر: پیچیدگی و مقیاس

قبل از بررسی eBPF، ابتدا اینکه ابر بومی چیست و چرا باید تکامل یابد را بررسی کنیم.

Cloud native یک مدل ظرف را در بر می گیرد که در آن یک هسته واحد به مخرج مشترک برای مدیریت بسیاری از اشیاء شبکه تبدیل می شود. ما شاهد روندهای مرتبط هستیم، مانند شبکه هایی که مبتنی بر فضای نام هستند، که در آن VM های تمام عیار با کانتینرها یا ماشین های مجازی سبک وزن جایگزین می شوند. Cloud native مقیاس و دامنه را از چند ماشین مجازی به چندین کانتینر با تراکم کانتینر هر گره بالاتر برای استفاده کارآمد از منابع و طول عمر کانتینر کمتر تغییر می دهد. این استخرهای IP پویا برای کانتینرها همچنین دارای IP بالایی هستند.

چالش‌ها به همین جا ختم نمی‌شوند.

هنگامی که برخاستید و خوشه خود را راه‌اندازی کردید، چالش‌های «روز دوم» مانند مشاهده‌پذیری، امنیت، مدیریت چند کلاستر و ابری و انطباق وجود دارد. شما فقط با یک سوئیچ به یک محیط بومی ابری حرکت نمی کنید. این یک سفر مترقی است.

هنگامی که یک محیط بومی ابری را راه‌اندازی کردید، با نیازهای یکپارچه‌سازی با بارهای کاری خارجی مواجه خواهید شد (مثلاً از طریق آدرس‌های IP قابل پیش‌بینی‌تر از طریق انتزاع‌های سرویس یا دروازه‌های خروج، مانند BGP برای شبکه‌های پاد، CIDR، سرویس‌ها و دروازه‌ها). همچنین باید با مهاجرت پی در پی به سمت خوشه‌های IPv6 فقط برای انعطاف‌پذیری بهتر IAM و NAT46/64 برای تعامل با بارهای کاری قدیمی مقابله کنید و بتوانید چندین خوشه را به صورت on/off-prem به روشی مقیاس‌پذیر و با آگاهی از توپولوژی متصل کنید. مسیریابی و رمزگذاری ترافیک و موارد دیگر.

این مشکلات بزرگ‌تر می‌شوند و گارتنر تخمین می‌زند که تا سال ۲۰۲۵ بیش از ۹۵ درصد از حجم کاری دیجیتال جدید بر روی پلت‌فرم‌های بومی ابری مستقر می‌شود که این رقم در سال ۲۰۲۱ ۳۰ درصد بود.

محدودیت های بلوک های سازنده هسته لینوکس

هسته لینوکس، طبق معمول، پایه ای برای حل این چالش ها است، با برنامه هایی که از سوکت ها به عنوان منابع داده و سینک ها و شبکه به عنوان یک گذرگاه ارتباطی استفاده می کنند. لینوکس و Kubernetes به عنوان «سیستم‌عامل ابری»

گرد هم آمده‌اند

اما ابر بومی به انتزاعات جدیدتری نسبت به هسته لینوکس نیاز دارد زیرا بسیاری از این بلوک‌های ساختمانی مانند cgroups (CPU، مدیریت حافظه)، فضاهای نام (net، mount، pid)، SELinux، seccomp، netfiler، netlink، AppArmor , audited, perf، بیش از ۱۰ سال پیش طراحی شدند.

جدیدترین Apple Xcode IDE تکمیل کد را بهبود می بخشد

این ابزارها همیشه با هم صحبت نمی‌کنند، و برخی غیرقابل انعطاف هستند و فقط خط‌مشی‌های جهانی را مجاز می‌کنند و نه خط‌مشی‌های هر ظرف. آنها از پادها یا انتزاع خدمات سطح بالاتر آگاهی ندارند و بسیاری برای شبکه سازی به iptables متکی هستند.

به‌عنوان یک تیم پلتفرم، اگر می‌خواهید ابزارهای توسعه‌دهنده را برای یک محیط بومی ابری ارائه کنید، همچنان می‌توانید در این جعبه گیر کنید که در آن محیط‌های بومی ابری نمی‌توانند به طور مؤثر بیان شوند.

eBPF: ساختن انتزاعات برای دنیای بومی ابر

eBPF یک فناوری انقلابی است که به ما امکان می دهد به صورت پویا برنامه ریزی کنیم هسته به روشی ایمن، کارآمد و مقیاس پذیر. برای گسترش ایمن و کارآمد قابلیت‌های بومی ابر هسته بدون نیاز به تغییر در کد منبع هسته یا بارگیری ماژول‌های هسته استفاده می‌شود.

eBPF: 

  • در هر نقطه از هسته برای تغییر عملکرد و سفارشی کردن رفتار آن بدون تغییر منبع هسته قلاب می‌کند
  • برنامه‌ها به منظور جلوگیری از خرابی هسته یا سایر ناپایداری‌ها تأیید می‌شوند تا با خیال راحت اجرا شوند.
  • JIT برای سرعت اجرای تقریباً بومی کامپایل شده
  • افزودن قابلیت‌های سیستم‌عامل در زمان اجرا بدون ایجاد اختلال در بار کاری یا راه‌اندازی مجدد گره را می‌دهد
  • زمینه را از فضای کاربر در Kubernetes به هسته لینوکس تغییر می‌دهد

این قابلیت‌ها به ما این امکان را می‌دهند که با خیال راحت هسته لینوکس را انتزاع کنیم و آن را برای دنیای اصلی ابر آماده کنیم.

انتزاعات eBPF برای انقلاب بومی ابر

بعد اجازه دهید به ۱۰ روشی که انتزاع eBPF به تکامل پشته بومی ابر کمک می‌کند، از افزایش سرعت نوآوری گرفته تا بهبود عملکرد بپردازیم.

#۱. eBPF نوآوری هسته را سرعت می بخشد

افزودن یک ویژگی یا عملکرد جدید به هسته لینوکس یک فرآیند طولانی است. در چرخه عمر وصله معمولی، شما باید یک وصله ایجاد کنید، آن را در بالادست ادغام کنید، سپس منتظر بمانید تا توزیع های اصلی منتشر شوند. کاربران معمولاً به هسته های LTS پایبند هستند (به عنوان مثال، اوبونتو معمولاً در یک آهنگ دو ساله است). بنابراین، نوآوری با مدل سنتی نیازمند ماژول‌های هسته یا ساختن هسته‌های خود است و بیشتر جامعه را کنار می‌گذارد. و حلقه بازخورد از توسعه دهندگان به کاربران بسیار کم است تا وجود ندارد. eBPF توانست این چرخه طولانی را با جدا شدن از نسخه های هسته بشکند. به عنوان مثال، تغییرات در Cilium را می‌توان در لحظه با در حال اجرا بودن هسته ارتقا داد و روی طیف وسیعی از نسخه‌های هسته کار کرد. این به ما امکان می‌دهد تا سال‌ها قبل از اینکه امکان‌پذیر باشد، عملکرد جدید ابری را اضافه کنیم.

#۲. eBPF هسته را گسترش می دهد اما با یک کمربند ایمنی روی

ویژگی‌های جدید می‌توانند عملکرد را افزایش دهند، اما خطرات و موارد حاشیه‌ای جدید را نیز به همراه دارند. هزینه توسعه و آزمایش برای کد هسته در مقایسه با کد eBPF برای عملکرد مشابه بسیار بیشتر است. تایید کننده eBPF تضمین می کند که کد هسته را خراب نمی کند. قابلیت حمل ماژول‌های eBPF در نسخه‌های هسته با CO-RE، kconfigs و اطلاعات نوع BPF به دست می‌آید. طعم eBPF زبان C نیز انتخاب مطمئن تری برای برنامه نویسی هسته است. همه اینها اضافه کردن قابلیت های جدید به هسته را ایمن تر از وصله مستقیم یا استفاده از یک ماژول هسته می کند.

در دنیای ابری در حال تکامل، Azure از AWS عبور می کند

#۳. eBPF اجازه می دهد تا حلقه های بازخورد تولید کوتاه

حلقه‌های بازخورد سنتی نیازمند اصلاح هسته داخلی، عرضه تدریجی هسته به ناوگان برای استقرار تغییرات، شروع آزمایش، جمع‌آوری داده‌ها و آوردن بازخورد به چرخه توسعه بودند. این یک چرخه بسیار طولانی و شکننده بود که در آن گره‌ها نیاز به راه‌اندازی مجدد و تخلیه ترافیک خود داشتند و حرکت سریع به‌ویژه در محیط‌های بومی ابر پویا را غیرممکن می‌کرد. eBPF این حلقه بازخورد را از هسته جدا می‌کند و به‌روزرسانی‌های برنامه اتمی را در لحظه امکان‌پذیر می‌کند و این حلقه بازخورد را به‌طور چشمگیری کوتاه می‌کند.

#۴. eBPF به جای اختراع مجدد چرخ فضای کاربران، بلوک های ساختمانی را در هسته فراهم می کند

به‌جای نیاز به بازنویسی بخش‌های بزرگی از پشته فضای کاربر، eBPF می‌تواند قسمت‌هایی را به هسته منتقل کند و از آن‌ها همانطور که هست استفاده کند در حالی که ادغام را به طور چشمگیری آسان‌تر می‌کند. eBPF بلوک‌های ساختمانی را به هسته اضافه می‌کند که برای سایر زیرسیستم‌های هسته بسیار پیچیده هستند، به‌ویژه برای موارد استفاده بومی ابری جدید. با eBPF، Cilium توانست به راحتی یک دروازه NAT 46/64 برای اتصال خوشه‌های Kubernetes فقط IPv6 به زیرساخت مبتنی بر IPv4 اضافه کند.

#۵. eBPF به شما این امکان را می‌دهد که اشکالات هسته را در لحظه رفع یا کاهش دهید

اخیراً، eBPF برای رفع یک اشکال هسته در درایور veth (اترنت مجازی) که بر انتخاب صف تأثیر می‌گذاشت، استفاده شد. (به گفتگوی اجلاس eBPF مراجعه کنید، متعلق به ما هستند.) این رفع فوری که توسط eBPF فعال شده است، از عرضه پیچیده هسته های جدید جلوگیری می کند، فرآیندی که مخصوصاً برای ارائه دهندگان ابری وقت گیر است. بارهای کاری بومی ابری می‌توانند موارد لبه جدیدی را به هسته بیاورند، اما رفع‌های فوری با eBPF، پردازش بسته‌ها را انعطاف‌پذیرتر می‌کند و سطح حمله از سوی بازیگران بد را کاهش می‌دهد.

#۶. eBPF پردازش داده ها را به منبع نزدیک تر می کند و مصرف منابع را کاهش می دهد

عملکردهای شبکه مجازی مجازی سازی شده سنتی، مانند متعادل کننده بار و فایروال، در سطح بسته حل می شوند. هر بسته باید بازرسی، اصلاح یا حذف شود، که از نظر محاسباتی برای هسته گران است. برای مثال، eBPF مشکل اصلی را با نزدیک شدن به منبع رویداد، به سمت قلاب‌های هر سوکت، قلاب‌های هر cgroup و XDP (مسیر داده eXpress) مجدداً اصلاح کرد. این منجر به صرفه جویی قابل توجهی در هزینه منابع شد و امکان مهاجرت از جعبه های اختصاصی به گره های کارگر عمومی را فراهم کرد. Seznam.cz توانست مصرف CPU متعادل کننده بار خود را کاهش دهد ۷۲ برابر با استفاده از eBPF.

#۷. eBPF تاخیر ترافیک کمتری را فعال می کند

با استفاده از eBPF برای ارسال، اجازه می‌دهیم بسیاری از قسمت‌های پشته شبکه دور زده شوند و کارایی و کارایی شبکه را تا حد زیادی بهبود می‌بخشیم. به عنوان مثال، با eBPF، Cilium توانست مدیر پهنای باند را پیاده سازی کنید که تأخیر p99 را ۴.۲ برابر کاهش داد. این همچنین به فعال کردن BIGCP کمک کرد و جایگزینی جدید درایور veth که به کانتینرها اجازه می‌دهد به سرعت شبکه میزبان دست یابند.

طراحی پشتی انعطاف پذیر با GraphQL به پایان می رسد

#۸. eBPF پردازش کارآمد داده را ارائه می دهد

eBPF خزش ویژگی هسته را کاهش می‌دهد که با به حداقل رساندن مسیر سریع، پردازش داده‌ها را کند می‌کند. موارد استفاده بومی ابری پیچیده و سفارشی نیازی به تبدیل شدن به بخشی از هسته ندارند. آنها به سادگی به بلوک های ساختمانی بیشتری در eBPF تبدیل می شوند که می توانند در موارد لبه مختلف مورد استفاده قرار گیرند. برای مثال، با جدا کردن کمک‌کننده‌ها و نقشه‌ها از نقاط ورودی در eBPF، Cilium توانست جایگزینی سریع‌تر و قابل تنظیم‌تر از Kube-Proxy در eBPF ایجاد کند که می‌تواند هنگامی که iptables کوتاه شد به مقیاس ادامه دهید.

#۹. eBPF دید عمیق کم سربار را در سیستم تسهیل می کند

با توجه به ریزش بارهای کاری بومی ابری، یافتن و اشکال زدایی مشکلات ممکن است دشوار باشد. کلکسیونرهای eBPF ساختن پلتفرم های ردیابی و مشاهده پذیری با سربار پایین و در سطح ناوگان را ممکن می سازند. eBPF به جای نیاز به تغییر کد برنامه یا افزودن کارگاه‌های جانبی، امکان مشاهده ابزار دقیق را به صفر می‌دهد. عیب‌یابی مشکلات تولید در حین پرواز نیز می‌تواند با خیال راحت از طریق bpftrace انجام شود، در حالی که امکان دید، برنامه‌ریزی و سهولت استفاده بسیار بیشتر از پرف‌های سبک قدیمی را فراهم می‌کند.

#۱۰. eBPF انتزاع هویت ایمن را برای اجرای سیاست ایجاد می کند

در محیط‌های بومی ابر، eBPF به شما امکان می‌دهد تا از انحراف IP بالا به سمت هویت‌های طولانی‌تر انتزاع بگیرید. با توجه به اینکه همه چیز حول برچسب های غلاف متمرکز شده است و طول عمر غلاف معمولاً با بارهای کاری زودگذر بسیار کوتاه است، IP ها بی معنی هستند. با درک زمینه فرآیند در هسته، eBPF به انتزاع از IP کمک می‌کند تا انتزاعات هویت ملموس‌تری ارائه کند. با یک انتزاع هویت ایمن برای بارهای کاری، Cilium توانست ویژگی هایی مانند دروازه های خروج برای غلاف های کوتاه مدت و mTLS.

eBPF برای نوآوری، انتزاع، و عملکرد

Cloud native در حال تغییر الزامات پلتفرم‌هایی است که نیاز به پشتیبانی از سطوح بالاتر عملکرد و مقیاس‌پذیری همراه با تغییرات مداوم دارند. بسیاری از بلوک‌های سازنده هسته لینوکس که از این حجم‌های کاری سخت پشتیبانی می‌کنند، ده‌ها سال قدمت دارند. خوشبختانه، eBPF به ما این امکان را می دهد که به صورت پویا هسته را تغییر دهیم تا انتزاعی هایی ایجاد کنیم که برای دنیای بومی ابر آماده هستند. eBPF در حال بازگشایی نوآوری های بومی ابری، ایجاد بلوک های سازنده هسته جدید، و بهبود چشمگیر عملکرد پلت فرم های برنامه است.

بیل مولیگان یک نگهدار Cilium است و به شدت در eBPF اکوسیستم. او در Isovalent کار می‌کند.

New Tech Forum مکانی برای کاوش و بحث در مورد فناوری سازمانی نوظهور در عمق و وسعت بی سابقه ای فراهم می کند. انتخاب ذهنی است، بر اساس انتخاب ما از فناوری هایی که معتقدیم مهم هستند و برای خوانندگان InfoWorld بیشترین علاقه را دارند. InfoWorld وثیقه بازاریابی را برای انتشار نمی پذیرد و حق ویرایش تمام محتوای ارائه شده را برای خود محفوظ می دارد. همه سوالات را به newtechforum@infoworld.com ارسال کنید.