انتقل إلى المحتوى الرئيسي

5G Core (5GC)

يتم نشر النواة المستقلة 5G (SA) بواسطة كتاب التشغيل services/5gc.yml. يتم تثبيت كل وظيفة شبكة (NF) بواسطة دور مشترك واحد — 5gc_nf — مُعَلم لكل NF. تشرح هذه الصفحة هذا الدور، وNFs التي يبنيها، والتكوين الذي يقرأه كل واحد منها.

نظرة عامة

بدلاً من وجود دور واحد لكل NF، يستخدم OmniCore دور واحد (5gc_nf) لجميع وظائف 5GC الإحدى عشر. يستدعي كتاب التشغيل الدور مرة واحدة لكل NF ويمرر متغير nf_package الذي يحدد حزمة Debian، خدمة systemd، وقالب تكوين Jinja2. هذا يحافظ على منطق التثبيت، إصدار التكوين، الترخيص، وإعادة التشغيل متطابقًا عبر كل NF.

- name: Setup AMF
hosts: amf
roles:
- {role: 5gc_nf, nf_package: omniamf, become: yes}

وظائف الشبكة

كل NF لها مجموعة جرد خاصة بها، حزمة، خدمة systemd، وقالب تكوين (roles/5gc_nf/templates/<nf_package>.j2).

NFnf_packageمجموعة الجردقالب التكوينالدور
وظيفة مستودع الشبكةomninrfnrfomninrf.j2اكتشاف الخدمة / تسجيل NF
إدارة الوصول والتنقلomniamfamfomniamf.j2إشارة N1/N2، التسجيل، إدارة الاتصال
خادم المصادقةomniausfausfomniausf.j2مصادقة 5G-AKA / EAP-AKA'
وظيفة دعم الربطomnibsfbsfomnibsf.j2ربط PCF لجلسة PDU
وظيفة الشحنomnichfchfomnichf.j2شحن متقارب عبر الإنترنت / غير متصل
اختيار شريحة الشبكةomnissfnssfomnissf.j2NSSAI / اختيار الشريحة
وظيفة التحكم في السياسةomnipcfpcfomnipcf.j2قواعد السياسة وجودة الخدمة
وكيل الاتصال بالخدمةomniscpscpomniscp.j2توجيه رسائل SBI / الاتصالات غير المباشرة
وظيفة إدارة الجلسةomnismfsmfomnismf.j2جلسة PDU والتحكم في UPF (N4)
إدارة البيانات الموحدةomniudmudmomniudm.j2بيانات الاشتراك، فك تشفير SUCI
مستودع البيانات الموحدomniudrudromniudr.j2تخزين البيانات الداعم لـ UDM/PCF

كيفية عمل دور 5gc_nf

بالنسبة لكل NF، يقوم الدور بأداء نفس التسلسل:

  1. حل group_vars_omnicore — يتم تعيينه إلى <inventory>/group_vars/، بحيث يتم حل عمليات البحث عن التكوين بالنسبة للجرد النشط.
  2. اكتشاف خوادم الترخيص — إذا لم يتم تعيين license_server_api_urls، يتم اشتقاقه من مجموعة جرد license_server (https://<host>:8443/api).
  3. تثبيت المتطلبات الأساسيةlsb-release، curl، gpg، unzip، libglu1-mesa، libsctp1.
  4. تثبيت حزمة NF من مستودع Omnitouch APT. الأحدث بشكل افتراضي؛ يمكن تثبيته باستخدام nf_version (انظر تثبيت الإصدار).
  5. تكوين القالب الزمني (المُعَلم) — يقوم بإنشاء templates/<nf_package>.j2 إلى /etc/<nf_package>/runtime-<deb_version>.exs.
  6. إنشاء رابط رمزي لـ runtime.exs → تكوين الإصدار النشط، ونسخ هذا الرابط الرمزي إلى كل دليل /opt/<nf_package>/releases/*.
  7. إعادة تشغيل NF (المعالج) كلما تغير التكوين النشط.

تثبيت الإصدار والعودة

يتم كتابة التكوين لكل إصدار Debian (runtime-<deb_version>.exs) وruntime.exs هو رابط رمزي للإصدار النشط. يتم الاحتفاظ بالتكوينات السابقة على القرص، لذا فإن العودة تعني إعادة تثبيت إصدار الحزمة الأقدم:

- {role: 5gc_nf, nf_package: omniamf, nf_version: "1.2.2-1", become: yes}

قم بإغفال nf_version لتتبع أحدث حزمة.

مفاتيح HNET لـ UDM (فك تشفير SUCI)

يمتلك UDM (nf_package: omniudm) خطوات إضافية لدعم فك تشفير SUCI (TS 33.501 §6.12) — استعادة SUPI من SUCI المخفية التي يقدمها UE عند التسجيل. هذا يحتاج إلى مفاتيح خاصة لشبكة المنزل تتزاوج مع المفاتيح العامة لشبكة المنزل على USIMs.

  • تعيش المفاتيح في group_vars/hnet_udm/ على وحدة التحكم Ansible كـ <curve>-<id>.key (PEM)، حيث <curve> هو curve25519 (الملف الشخصي A، X25519) أو secp256r1 (الملف الشخصي B، prime256v1)، و<id> هو معرف المفتاح العام لشبكة المنزل.
  • إذا كان الدليل فارغًا، يتم إنشاء curve25519-1.key تلقائيًا بحيث يعمل فك التشفير من الصندوق. هذا هو idempotent — لا يتم الكتابة فوق مفتاح موجود.
  • لكل curve25519-*.key، يتم تصدير القيمة العامة الخام البالغة 32 بايت (hex) إلى ملف .pub لتزويد USIM. تبقى ملفات .pub في الجرد؛ فقط يتم نشر ملفات *.key إلى /etc/omniudm/hnet/ على UDM (الوضع 0600، الجذر).

المفتاح الذي تم إنشاؤه تلقائيًا عشوائي ويقوم فقط بفك تشفير SUCIs من USIMs المبرمجة بمفتاحها المطابق العام. خذ .pub المصدرة وقم بتزويدها كمفتاح عام لشبكة المنزل على USIM. تحتاج بطاقات SIM التي تستخدم مخطط null إلى عدم وجود مفتاح HNET ويمكنها ترك الدليل فارغًا.

تفاصيل كاملة وأمثلة تخطيط الملفات: تكوين المتغيرات الجماعية — المثال 8.

الوثائق ذات الصلة