پروژه Open5gs چیست؟

وظیفه ای که در حال حاضر در شرکت به من داده شده, بالا آوردن یک دمو از پروژه open5gs بر روی kubernetes است. برای این کار من نیاز داشتم که ابتدا بفهمم open5gs چیست. اما دیدم درباره این پروژه به زبان فارسی چیزی وجود ندارد. پس تصمیم گرفتم به بهانه فهمیدن این پروژه، چیزهایی که متوجه شدم را بنویسم.شبکه‌های 5G پنجمین نسل فناوری سلولار هستند که سرعت بالاتر، پوشش شبکه بهتر و پاسخگویی سریعتری نسبت به نسل‌های قبلی فراهم می‌کنند و میتواند تجربه کاربری بهتر و ارتباطات پایدارتری بوجود آورد. این فناوری قابلیت ایجاد اکوسیستم 5G IoT را دارد که شبکه‌ها می‌توانند نیازهای ارتباطی میلیاردها دستگاه متصل را پوشش دهند.راه حل های متن باز در صنعت مخابرات به عنوان راهی برای به اشتراک گذاشتن و هوشمند کردن شبکه های بسته و متعارف ظاهر شده است. چندین پروژه و اتحادیه مبتنی بر نرم افزار 5G رویکرد متن باز را پذیرفته اند و کتابخانه ها و frameworkهای جدیدی را برای جامعه بی سیم فراهم کرده اند. راه حل های متن باز نسبت به راه حل های مالکیتی مزیت بسیاری دارند، زیرا هزینه کمتری دارند و اجازه می دهند که نوآوری بیشتری انجام شود.پروژه Open5GS یکی از آنهاست. Open5GS پروژه متن باز برای پیاده سازی و مدیریت شبکه 5G است که به زبان C نوشته شده است. Open5GS اجازه می‌دهد تا اپراتورها و توسعه‌دهندگان به طور مستقل و با استفاده از تکنولوژی‌ها و معیارهای باز شبکه 5G خود را بسازند. این پروژه از یک مجموعه کامل از عناصر شبکه متحرک از جمله ردیابی مکانی، سیستم شناسایی کاربر، مدیریت ترافیک، مدیریت جلسات و بسیاری از وظایف دیگر پشتیبانی می‌کند. علاوه بر این، Open5GS دارای معماری انعطاف‌پذیر است که قابلیت بالا را در طراحی و استقرار شبکه‌های 5G فراهم می‌کند.با استفاده از Open5GS، اپراتورها و توسعه‌دهندگان می‌توانند برنامه‌ها و سرویس‌های نوآورانه را بر روی شبکه‌های 5G خود پیاده‌سازی کنند. این پروژه نرم‌افزاری بر پلتفرم‌های توسعه معروف مانند Linux و Kubernetes ساخته شده است و به کاربران امکان می‌دهد برای توسعه و ساختن شبکه‌های 5G خود از ابزارها و راهکارهای پیشرفته استفاده کنند.با توجه به ماهیت متن‌باز پروژه Open5GS، افراد و سازمان‌های مختلف می‌توانند در این پروژه مشارکت کنند، بازخورد و بهبودهای خود را ارائه دهند و از امکانات پیشرفته شبکه متحرک 5G بهره‌برداری کنند.آدرس سایت پروژه https://open5gs.org هست و کدهای پروژه اصلی در https://github.com/open5gs/open5gs قرار دارد.تصویر فوق ساختار معماری نرم افزار و ارتباطات شبکه ای بین ماژول های مختلف رو نمایش میدهد که در ادامه آن چه که من فهمیدم رو توضیح میدم.خطوط سبز ارتباطات شبکه 4G و خطوط قرمز رنگ ارتباطات شبکه 5G هست. هرکدام از بلوک های سبز و قرمز یک نرم افزار هست که بسته به پیاده سازی که داریم میتوانیم در یک یا چند سیستم عامل نصب کنیم. (وظیفه من این هست که آنها را در deployment های kubernetes پیاده سازی کنم.)در اینجا شبکه 5G میتواند به دو صورت SA و NSA پیاده سازی می شود. SA یا StandAlone به معنای شبکه مستقل است و اپراتورها باید شبکه 5G را از ابتدا طراحی و کنند بسازند. در حالی که NSA یا Non-Standalone به معنای غیرمستقل است و برای پیاده سازی 5G نیاز به وجود تجهیزات و زمینه های پیاده سازی 4G دارد. در واقع، شبکه 5G NSA از زیرساخت های موجود 4G استفاده می کند و به زیرساخت های اختصاصی نیازی ندارد.اینجا آنتن ها، RRH و RRU هستند که به (User Equipment) UE همون تجهیزات کاربران شامل گوشیها و تبلت ها و... وصل میشوند. RRH به معنای Remote Radio Head و RRU به معنای Remote Radio Unit است. این دو واژه به مفهوم یک ماژول کوچک بیرونی برای انجام کارهای مربوط به ارتباطات بی سیم در شبکه های 5G استفاده می شوند. این ماژول ها شامل تجهیزات مربوط به ارتباطات بی سیم مانند فیلترینگ، تقویت کننده و تبدیل کننده آنالوگ به دیجیتال و برعکس هستند. این ماژول ها برای کاهش از دست رفتن سیگنال در خطوط انتقال و افزایش کارایی ایستگاه پایه استفاده می شوند و به وسیله کابل فیبر نوری به بخش دیجیتال ایستگاه پایه متصل می شوند.در اینجا eNB و gNB رو داریم.اeNB به معنای ایستگاه پایه هوشمند (Evolved Node B) در شبکه‌های 4G است و gNB به معنای ایستگاه پایه جدید (Next Generation Node B) در شبکه‌های 5G است. eNB و gNB هر دو به عنوان ایستگاه پایه در شبکه‌های ارتباطی استفاده می‌شوند، اما gNB از تکنولوژی‌های جدیدتری نسبت به eNB استفاده می‌کند. gNB از معماری مبتنی بر IP استفاده می‌کند و از مدل‌های هوشمندتری برای مدیریت ترافیک و ارتباطات استفاده می‌کند.در داخل این دو BBU به معنای واحد پایه‌ای (Baseband Unit) قرار دارد. این واحد برای پردازش سیگنال‌های پایه‌ای (Baseband) استفاده می‌شود. BBU به یک یا چند RRU متصل می‌شود، پروتکل‌های 5G را پردازش می‌کند و ترافیک را به هسته 5G ارسال می‌کند.دراینجا مجموعه User plane رو داریم که شامل UPF و SGW هست و برای انتقال داده‌های کاربری از دستگاه کاربر به سمت سرور (که میتواند اینترنت باشد) و بالعکس استفاده می‌شود. UPF (User Plane Function) برای پردازش ترافیک کاربری و SGW (Serving Gateway) برای اتصال دستگاه کاربر به شبکه 5G استفاده می‌شود. SGW مسئولیت انتقال داده‌های کاربری بین eNodeB و PGW (که قسمتی از control plane است و جلوتر بهش میرسیم) را بر عهده دارد. در واقع، UPF و SGW به صورت هماهنگ با یکدیگر کار می‌کنند تا ترافیک کاربری در شبکه 5G به صورت صحیح و سریع انتقال پیدا کند.اینجا Control Plane رو داریم. قسمتهای قرمز مربوط به SA و قسمتهای سبز مربوط به NSA هستند. و همچنین یک دیتابیس MongoDB که اطلاعات مربوط به مشترکان در شبکه‌های ارتباطی در آن قرار دارد. این اطلاعات شامل اطلاعات شخصی مشترکان، اطلاعات مربوط به ترافیک کاربری، اطلاعات مربوط به اشتراک‌گذاری داده‌ها و سرویس‌های مختلف و ... می‌شود.از طریق یک رابط کاربری وب که WebUI گفته میشود و (در شکل نیست) میتوان برخی از اطلاعات و تنظیمات مربوط رو وارد دیتابیس کرد یا تغییرشون داد.قسمت Control Plane به معنای بخشی از شبکه است که مسئول مسیریابی و کنترل شبکه است. این بخش شامل ترافیک سیگنال و اطلاعات ضروری است که برای کنترل و مدیریت شبکه به کار می‌رود. Control Plane با پروتکل‌های سیگنالی سروکار دارد و برای جمع آوری و ایجاد اطلاعات مورد نیاز برای ارسال ترافیک مورد استفاده قرار می‌گیرد.قسمت های Control plane و user palne به صورت فیزیکی از یکدیگر جدا هستند.کامپوننت های مربوط به NSA عبارتند از:اMME (Mobility Management Entity): برای مدیریت ترافیک و تعیین موقعیت کاربران به کار می‌رود.اHSS (Home Subscriber Server): مسئولیت نگهداری و مدیریت اطلاعات مشترکان را بر عهده دارد و برای مدیریت احراز هویت کاربران نیز به کار می‌رود.اPCRF (Policy and Charging Rules Function): برای مدیریت سیاست‌های شارژ و سرویس‌های شبکه به کار می‌رود. همچنین قوانین کنترل جریان ترافیک (مانند QoS مورد نیاز، محدودیت‌ها، کنترل پهنای باند، مسدود کردن و ...) تعیین می‌کند.اSGW (Serving GateWay): برای کنترل ترافیک کاربران به کار می‌رود. مسئولیت مدیریت ترافیک کاربران، انتقال داده‌های کاربری، مدیریت sessionها و تعیین موقعیت کاربران را بر عهده دارد. همچنین، SGW برای انجام کارهایی مانند مسدود کردن ترافیک در صورت نیاز به کار می‌روند. SGW دو قسمت دارد SGW-c که در control plane قرار دارد و SGW-u که در user plane است.کامپوننت های مربوط به SA عبارتند از:اNRF (Network Repository Function): برای نگهداری و به‌روزرسانی اطلاعات مربوط به تمامی اجزای شبکه 5G به کار می‌رود و از طریق یک پایگاه داده، اطلاعات مربوط به سرویس‌های شبکه را در اختیار اجزای دیگر شبکه قرار می‌دهد.اSCP (Service Communication Proxy): برای ارسال درخواست‌های مختلف در شبکه 5G به کار می‌رود. ارتباط امن غیرمستقیم بین سرویس‌ها با تأیید هویت و رمزنگاری برقرار میکند. SCP یکی از اجزای حیاتی معماری سرویس مبتنی بر 5G است و نقش مهمی در ساده‌سازی توپولوژی شبکه با اعمال تجمیع و مسیریابی سیگنال‌ها، توزیع بار، مدیریت بار و هماهنگی پارامترهای پیام و همچنین همکاری با سیستم‌های قدیمی دارد. اگر NF ها (network function) برای کشف از طریق SCP پیکربندی شوند، نیازی به راه‌اندازی NRF نیست.اNSSF (Network Slice Selection Function): برای انتخاب شبکه‌های مجاز برای استفاده توسط کاربران به کار می‌رود. NSSF با استفاده از اطلاعاتی که در زمان پیوستن کاربر به شبکه در اختیار دارد، شبکه‌های سفارشی مناسب را برای کاربر انتخاب می‌کند. هر شبکه شامل یک مجموعه از منابع شبکه مانند پهنای باند، تأخیر، QoS و ... است که به صورت جداگانه مدیریت می‌شود. به این ترتیب، شبکه‌های سفارشی به کاربران اجازه می‌دهند تا با توجه به نیازهای خود، از منابع شبکه استفاده کنند و به سرویس‌های مختلف دسترسی داشته باشند.اAMF (Access and Mobility Management Function): برای مدیریت حرکت کاربران در شبکه به کار می‌رود و با استفاده از پروتکل‌هایی مانند GTP و PMIPv6، امکان انتقال کاربران بین سلول‌های مختلف را فراهم می‌کند.اSMF (Session Management Function) : برای مدیریت sessionهای کاربران در شبکه به کار می‌رود. مانند مدیریت sessionهای PDU، مدیریت تونل GTP-U، مدیریت sessionهای چندرسانه‌ای و IMS ، مدیریت sessionهای SMS. همچنین، SMF نقش سرور DHCP و مدیریت آدرس IP را با UPF ایفا می‌کند.اUPF (User Plane Function): برای انتقال داده‌های کاربری به کار می‌رود. UPF همچنین نقش سرور DHCP و مدیریت آدرس IP را با SMF ایفا می‌کند. UPF برای ارائه خدمات با پهنای باند بالا، تأخیر کم و انتقال داده‌های بلادرنگ، می‌تواند به همراه MEC (Multi access Edge Computing) در user plane، مستقر شود. UPF می‌تواند به صورت سخت‌افزاری یا نرم‌افزاری پیاده‌سازی شود.اAUSF (Authentication Server Function): برای تأیید هویت کاربران به کار می‌رود. AUSF با استفاده از پروتکل‌های امنیتی مانند AKA و EAP، اعتبار سنجی کاربران را انجام می‌دهد. AUSF همچنین برای مدیریت کلیدهای امنیتی کاربران و تولید کلیدهای جدید برای ارتباطات امن در شبکه به کار می‌رود.اUDM (Unified Data Management): مانند HSS در شبکه‌های 4G/LTE عمل می‌کند، اما برای شبکه‌های 5G طراحی شده است. UDM وظیفه مدیریت اطلاعات کاربران را دارد. UDM می‌تواند بصورت stateful و یا stateless باشد. در حالت stateful، اطلاعات کاربران در UDM ذخیره می‌شود و در حالت stateless، اطلاعات کاربران در UDR ذخیره شده و اطلاعات مورد نیاز برای پردازش بازیابی می‌شود.اUDR (Unified Data Repository): برای ذخیره و مدیریت اطلاعات کاربران در شبکه به کار می‌رود. UDR یک پایگاه داده مرکزی است که اطلاعات اشتراک کاربران، داده‌های سیاست، داده‌های برنامه‌ها و داده‌های ارتباطی را در خود ذخیره می‌کند. UDR برای ذخیره و مدیریت اطلاعات کاربران در شبکه 5G NSA و SA استفاده می‌شود. UDR می‌تواند چندین پایگاه داده داشته باشد که هر کدام از آن‌ها یک مجموعه داده متفاوت را در خود نگهداری می‌کند و به اجزای مختلف شبکه خدمات متفاوتی را ارائه می‌دهد.اPCF (Policy Control Function): که برای مدیریت سیاست‌های شارژ، مدیریت باند پهن و مدیریت مصرف داده‌ها و مدیریت سیاست‌های کنترل ترافیک در شبکه به کار می‌رود.دوتا ماژول مهم دیگه هستند که به control plane وصل میشوند:اIMS (IP Multimedia Subsystem) : برای ارائه خدمات چندرسانه‌ای مانند صدا، تصویر و پیام‌های متنی در شبکه‌های IP است. IMS زیرساختی متحد و مکانیزم‌های مشترکی برای کنترل، مدیریت و مسیریابی sessionها فراهم می‌کند. همچنین، IMS مشخص می‌کند چگونه احراز هویت انجام شود.اMSC (Mobile Switching Center) : یک سوییچ تلفنی هست که برای برقراری تماس با سایر شبکه های تلفنی مثل خطوط سیمی شهری استفاده میشود.دراین آدرس https://open5gs.org/open5gs/docs/guide/01-quickstart راهنمای نصب آمده است. میتوانیم کد را کامپایل کنیم یا از پکیجهای آن در مخزن پروژه مستقیما نصب کنیم. یا حتی با داکر آن را اجرا کنیم. بعد باید به هر برنامه کانفیگ ها رو معرفی کنیم که بیشترش آدرس بقیه ماژول هاست.از آنجا که ممکنه eNB و gNB نداشته باشیم میتوان از شبیه ساز gNB استفاده کرد که به آن میگویند UERANSIM و این https://github.com/aligungr/UERANSIM آدرس گیتهاب پروژ است.این چیزهایی بود که از این پروژه open5gs و ماژول های آن فهمیدم. لطفا هرجا که اشتباهی بود بگید تا تصحیح کنم.