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

5G Core (5GC)

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

نظرة عامة​

بدلاً من وجود دور واحد لكل NF، تستخدم OmniCore دور واحد (5gc_nf) لجميع NFs الـ 11 في 5GC. يستدعي playbook الدور مرة واحدة لكل 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 (Profile A، X25519) أو secp256r1 (Profile B، prime256v1)، و<id> هو معرف المفتاح العام للشبكة المنزلية.
  • إذا كان الدليل فارغًا، يتم إنشاء curve25519-1.key افتراضيًا بحيث يعمل فك التشفير من الصندوق. هذه الخطوة غير متغيرة. لا يتم الكتابة فوق مفتاح موجود.
  • لكل curve25519-*.key، يتم تصدير القيمة العامة الخام المطابقة 32 بايت (hex) إلى ملف .pub لتوفير USIM. تبقى ملفات .pub في الجرد؛ فقط ملفات *.key يتم نشرها إلى /etc/omniudm/hnet/ على UDM (الوضع 0600، الجذر).

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

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

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