وظیفه ای که در حال حاضر در شرکت به من داده شده, بالا آوردن یک دمو از پروژه 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 عبارتند از:
اPCRF (Policy and Charging Rules Function): برای مدیریت سیاستهای شارژ و سرویسهای شبکه به کار میرود. همچنین قوانین کنترل جریان ترافیک (مانند QoS مورد نیاز، محدودیتها، کنترل پهنای باند، مسدود کردن و ...) تعیین میکند.
کامپوننت های مربوط به SA عبارتند از:
دوتا ماژول مهم دیگه هستند که به control plane وصل میشوند:
دراین آدرس https://open5gs.org/open5gs/docs/guide/01-quickstart راهنمای نصب آمده است. میتوانیم کد را کامپایل کنیم یا از پکیجهای آن در مخزن پروژه مستقیما نصب کنیم. یا حتی با داکر آن را اجرا کنیم. بعد باید به هر برنامه کانفیگ ها رو معرفی کنیم که بیشترش آدرس بقیه ماژول هاست.
از آنجا که ممکنه eNB و gNB نداشته باشیم میتوان از شبیه ساز gNB استفاده کرد که به آن میگویند UERANSIM و این https://github.com/aligungr/UERANSIM آدرس گیتهاب پروژ است.
این چیزهایی بود که از این پروژه open5gs و ماژول های آن فهمیدم. لطفا هرجا که اشتباهی بود بگید تا تصحیح کنم.