دليل عمليات OmniNSSF
نظرة عامة
تنفذ OmniNSSF وظيفة اختيار شريحة الشبكة (NSSF) من النواة 5G. إنها تقدم خدمتين SBI: Nnssf_NSSelection (TS 29.531) التي تجيب على استفسارات AMF حول الشرائح الشبكية التي يمكن أن يستخدمها UE، و Nnssf_NSSAIAvailability (TS 29.531) التي تقبل تقارير توفر NSSAI من AMFs وتدير الاشتراكات في إشعارات تغيير التوفر.
يتم تحميل تكوين الشريحة — خريطة S-NSSAIs إلى URIs NRF، NSSAI المسموح به لكل PLMN، وتعيينات مجموعة AMF — من تكوين التطبيق عند بدء التشغيل. يتم الاحتفاظ بحالة توفر NSSAI المبلغ عنها من قبل AMFs في العملية في وكيل. يتم تسليم إشعارات تغيير التوفر إلى المشتركين كاستدعاءات HTTP POST بدون انتظار.
الهيكلية
دور 3GPP ومراجع المواصفات
| المواصفة | الصلة |
|---|---|
| TS 23.501 | هيكل النظام — دور NSSF، مفهوم شريحة الشبكة، تعريف S-NSSAI (القسم 5.15) |
| TS 23.502 | الإجراءات — اختيار الشريحة أثناء التسجيل (4.2.3.2)، إنشاء جلسة PDU (4.3.2) |
| TS 29.531 | واجهات برمجة التطبيقات Nnssf_NSSelection و Nnssf_NSSAIAvailability |
| TS 23.003 | هيكل S-NSSAI (SST، SD)، تعريف NSI |
نقاط نهاية SBI
تُقدم جميع نقاط النهاية تحت عنوان URL الأساسي {sbi_scheme}://{sbi_addr}:{sbi_port}.
| الطريقة | المسار | الخدمة | الوصف | المواصفة |
|---|---|---|---|---|
| GET | /nnssf-nsselection/v2/network-slice-information | Nnssf_NSSelection | استرجاع معلومات شريحة الشبكة المصرح بها لـ UE | TS 29.531 5.2.1 |
| PUT | /nnssf-nssaiavailability/v1/nssai-availability/{nfId} | Nnssf_NSSAIAvailability | الإبلاغ عن أو استبدال توفر NSSAI لـ AMF | TS 29.531 5.2.2.2 |
| DELETE | /nnssf-nssaiavailability/v1/nssai-availability/{nfId} | Nnssf_NSSAIAvailability | إزالة سجل توفر NSSAI لـ AMF | TS 29.531 5.2.2.4 |
| POST | /nnssf-nssaiavailability/v1/nssai-availability/subscriptions | Nnssf_NSSAIAvailability | الاشتراك في إشعارات تغيير توفر NSSAI | TS 29.531 5.2.2.3 |
| DELETE | /nnssf-nssaiavailability/v1/nssai-availability/subscriptions/{subscriptionId} | Nnssf_NSSAIAvailability | إلغاء اشتراك توفر NSSAI | TS 29.531 5.2.2.5 |
ملخص الطلب / ال��ستجابة
GET network-slice-information — معلمات الاستعلام الإلزامية: nf-id, nf-type. الاختياري: slice-info-request-for-registration, slice-info-request-for-pdu-session, snssai, tai, home-plmn-id, supported-features. يعيد 200 OK مع AuthorizedNetworkSliceInfo.
PUT nssai-availability/{nfId} — الجسم: NssaiAvailabilityInfo (يجب أن يحتوي على supportedSnssaiList أو supportedNssaiAvailabilityData). يعيد 200 OK مع AuthorizedNssaiAvailabilityInfo. يحفز إشعارًا لجميع المشتركين الحاليين.
POST subscriptions — الجسم: NssaiAvailabilitySubscription (يجب أن يحتوي على nfNssaiAvailabilityUri). يعيد 201 Created مع كائن الاشتراك ورأس Location.
مرجع التكوين
يتم قراءة التكوين من مفتاح بيئة التطبيق :omnissf.
config :omnissf,
sbi_scheme: "http",
sbi_addr: "127.0.0.14",
sbi_port: 7777,
nrf_uri: "http://127.0.0.10:7777",
mcc: "999",
mnc: "70",
heartbeat_interval: 10_000,
nsi_list: [
%{
s_nssai: %{sst: 1, sd: "0x000001"},
nrf_uri: "http://127.0.0.10:7777",
nsi_id: "1"
}
],
allowed_nssai: %{
"999-70" => [
%{sst: 1, sd: "0x000001"}
]
},
amf_set_mapping: %{
"1-0x000001" => ["1"]
},
configured_nssai: %{}
جدول المعلمات الأساسية
| المعلمة | النوع | الافتراضي | الوصف |
|---|---|---|---|
sbi_scheme | سلسلة | "http" | مخطط HTTP لمقبس SBI الذي يستمع (http أو https) |
sbi_addr | سلسلة | "127.0.0.14" | عنوان IP الذي يرتبط به خادم HTTP SBI |
sbi_port | عدد صحيح | 7777 | منفذ TCP الذي يستمع عليه خادم HTTP SBI |
nrf_uri | سلسلة | "http://127.0.0.10:7777" | URI الأساسي لـ NRF. يستخدم فقط لتسجيل NF ونبض القلب |
mcc | سلسلة | "999" | رمز الدولة المتنقلة لـ PLMN الرئيسي. يستخدم كمفتاح PLMN احتياطي عند غياب home-plmn-id من استعلام الاختيار |
mnc | سلسلة | "70" | رمز الشبكة المتنقلة لـ PLMN الرئيسي |
heartbeat_interval | عدد صحيح (مللي ثانية) | 10000 | الفاصل الزمني بالمللي ثانية بين طلبات نبض القلب NRF |
معلمات تكوين الشريحة
nsi_list
قائمة من إدخالات مثيل شريحة الشبكة (NSI). كل إدخال يربط S-NSSAI بـ URI NRF. عندما تتلقى NSSF استعلام اختيار الشريحة، تبحث عن S-NSSAI المطلوب في هذه القائمة وتعيد URI NRF المرتبط في حقل nsiInformation من الاستجابة.
| الحقل | النوع | الوصف |
|---|---|---|
s_nssai.sst | عدد صحيح | نوع الشريحة/الخدمة (1–255). القيم القياسية: 1=eMBB، 2=URLLC، 3=MIoT (TS 23.501 الجدول 5.15.2.2-1) |
s_nssai.sd | سلسلة أو nil | مميز الشريحة كسلسلة سداسية (مثل، "0x000001"). nil أو غائب يتطابق مع أي SD لـ SST المعطى (انظر NSSF-L5) |
nrf_uri | سلسلة | URI الأساسي لـ NRF المسؤول عن اكتشاف NF ضمن هذه الشريحة |
nsi_id | سلسلة | معرف غير شفاف لهذا NSI، مدرج في استجابة nsiInformation |
إذا لم يتطابق أي إدخال في nsi_list مع S-NSSAI المطلوب، تعيد NSSF 403 Forbidden مع السبب SNSSAI_NOT_FOUND.
allowed_nssai
خريطة من مفتاح PLMN ("{mcc}-{mnc}") إلى قائمة من هياكل S-NSSAI. تتحكم في الشرائح المضمنة في حقل allowedNssaiList من استجابة الاختيار. إذا لم يكن لدى PLMN المطلوب إدخال، يتم استخدام NSSAI المسموح به لـ PLMN الرئيسي كخيار احتياطي.
كل S-NSSAI في القائمة:
| الحقل | النوع | الوصف |
|---|---|---|
sst | عدد صحيح | نوع الشريحة/الخدمة |
sd | سلسلة أو nil | مميز الشريحة |
amf_set_mapping
خريطة من مفتاح S-NSSAI ("{sst}-{sd}" أو "{sst}" عند عدم وجود SD) إلى قائمة من سلاسل معرف مجموعة AMF. عند ملؤها، تتضمن NSSF الإدخال الأول كـ targetAmfSet في استجابة الاختيار (انظر القيود NSSF-L3 — candidateAmfList غير مملوء).
configured_nssai
خريطة من مفتاح S-NSSAI إلى هيكل NSSAI مُكون لسيناريوهات التجوال. عند وجودها لـ S-NSSAI معين، تتضمن NSSF configuredNssai في استجابة الاختيار. فارغ بشكل افتراضي.
الإجراءات الرئيسية
اختيار شريحة الشبكة — التسجيل (TS 23.502 القسم 4.2.3.2)
اختيار شريحة الشبكة — جلسة PDU (TS 23.502 القسم 4.3.2)
الإبلاغ عن توفر NSSAI (TS 29.531 القسم 5.2.2)
الاشتراك في توفر NSSAI / الإشعار
منطق البحث عن S-NSSAI
تطابق NSSF S-NSSAI المطلوب مع nsi_list باستخدام القواعد التالية:
- يجب أن يتطابق SST تمامًا.
- مطابقة SD: إذا كان إدخال
nsi_listيحتوي علىsd: nil، فإنه يتطابق مع أي SD مطلوب لذلك SST (بدون قيود). إذا كان الإدخال يحتوي على SD محدد، فإنه يتم مقارنته بدون حساسية للحالة بعد تطبيع السداسي.
هذا يعني أن إدخال nsi_list مع sd: nil يعمل كشبكة شاملة لقيمة SST الخاصة به. انظر القيود NSSF-L5 للتداعيات التشغيلية لهذا السلوك.
مقاييس Prometheus
مقاييس NSSF
| المقياس | النوع | العلامات | الوصف |
|---|---|---|---|
omni_nssf.nsselection.requests.count | عداد | result, nf_type | طلبات اختيار NS |
omni_nssf.nssai_availability.update.count | عداد | nf_id | تحديثات توفر NSSAI |
omni_nssf.nssai_availability.delete.count | عداد | nf_id | عمليات حذف توفر NSSAI |
omni_nssf.nssai_availability.subscribe.count | عداد | -- | اشتراكات التو��ر |
omni_nssf.nssai_availability.unsubscribe.count | عداد | -- | إلغاء الاشتراكات |
omni_nssf.ns_selection_requests.total | عداد | result | إجمالي طلبات اختيار شريحة الشبكة |
omni_nssf.nssai_availability_updates.total | عداد | -- | إجمالي إشعارات تحديث توفر NSSAI |
omni_nssf.nrf.registration.status | مقياس | nf_type | حالة تسجيل NRF (1=مسجل، 0=غير مسجل) |
مقاييس BEAM VM
| المقياس | النوع | الوصف |
|---|---|---|
beam.memory.total | مقياس | إجمالي ذاكرة BEAM بالبايت |
beam.memory.processes | مقياس | الذاكرة المستخدمة بواسطة عمليات Erlang |
beam.memory.processes_used | مقياس | الذاكرة المستخدمة فعليًا بواسطة العمليات |
beam.memory.system | مقياس | ذاكرة النظام |
beam.memory.atom | مقياس | إجمالي ذاكرة الذرات |
beam.memory.atom_used | مقياس | الذاكرة المستخدمة للذرات |
beam.memory.binary | مقياس | ذاكرة ثنائية |
beam.memory.code | مقياس | ذاكرة الشيفرة |
beam.memory.ets | مقياس | ذاكرة جدول ETS |
beam.processes.count | مقياس | عدد عمليات Erlang |
beam.ports.count | مقياس | عدد منافذ Erlang |
beam.atom.count | مقياس | عدد الذرات |
beam.vm.uptime | مقياس | وقت تشغيل VM بالثواني |
القيود المعروفة
| المعرف | المنطقة | الوصف |
|---|---|---|
| NSSF-M2 | PATCH توفر NSSAI | لا يوجد نقطة نهاية PATCH /nnssf-nssaiavailability/v1/nssai-availability/{nfId}. لا تدعم التحديثات الجزئية لبيانات توفر AMF؛ يجب استبدال السجل بالكامل باستخدام PUT. |
| NSSF-M3 | تفويض التوفر | تفويض NSSF لتوفر NSSAI المبلغ عنه هو تمرير. البيانات authorizedNssaiAvailabilityData في استجابة PUT مطابقة تمامًا لـ supportedNssaiAvailabilityData المقدمة. لا تتحقق NSSF من S-NSSAIs المبلغ عنها مقابل nsi_list المكون. |
| NSSF-L1 | الميزات المدعومة | يتم قبول معلمة الاستعلام supported-features ولكن لا تتم معالجتها. لا يتم إجراء تفاوض على القدرات بين AMF و NSSF. |
| NSSF-L2 | NSSAI المرفوضة | لا تتضمن استجابة AuthorizedNetworkSliceInfo حقول rejectedNssaiInRa (المرفوضة في منطقة التسجيل) أو rejectedNssaiInTa (المرفوضة في منطقة التتبع). لن تتلقى UEs التي لا تتوفر فيها S-NSSAIs المطلوبة في TA معينة معلومات رفض صريحة. |
| NSSF-L3 | قائمة AMF المرشحة | لا يتم ملء حقل candidateAmfList في استجابة الاختيار. يتم تضمين فقط targetAmfSet (الإدخال الأول من amf_set_mapping) عند الاقتضاء. لا يتم توفير مساعدة كاملة في اختيار AMF وفقًا لـ TS 29.531. |
| NSSF-L4 | PATCH الاشتراك | لا يوجد نقطة نهاية PATCH /nnssf-nssaiavailability/v1/nssai-availability/subscriptions/{subscriptionId}. لا يمكن تحديث معلمات الاشتراك بعد الإنشاء؛ يجب حذف الاشتراك وإعادة إنشائه. |
| NSSF-L5 | مطابقة SD باستخدام البدل | يتطابق إدخال nsi_list مع s_nssai.sd: nil مع أي SD لـ SST المعطى، وليس فقط الطلبات التي لا تحتوي على SD. هذا يعني أن إدخال البدل سيتطابق أيضًا مع الطلبات المحددة لـ SD. إذا كانت هناك عدة شرائح تشترك في SST ولكن تختلف حسب SD، يجب أن يكون لكل منها إدخال SD خاص به�� في nsi_list مرتبة قبل أي إدخال بدل (الإدخال الأول هو الفائز). |
استكشاف الأخطاء وإصلاحها
اختيار الشريحة يعيد 403 SNSSAI_NOT_FOUND
لا يوجد إدخال في nsi_list يتطابق مع S-NSSAI المطلوب. تحقق من:
- أن SST في الطلب يتطابق تمامًا مع إدخال
nsi_list(مقارنة عددية). - أن SD في الطلب يتطابق مع SD الخاص بالإدخال، أو أن الإدخال يحتوي على
sd: nil(بدل). - أن تكوين
nsi_listقد تم إعادة تحميله بعد التغييرات — تقرأ OmniNSSFnsi_listمن بيئة التطبيق عند بدء التشغيل فقط. يتطلب الأمر إعادة تشغيل لالتقاط التغييرات.
سوف تظهر سجلات NSSF NSSelection: لا يمكن العثور على NSI لـ S-NSSAI [SST:{sst} SD:{sd}].
اختيار الشريحة يعيد 400 MANDATORY_QUERY_PARAM_MISSING
معلمة الاستعلام nf-id أو nf-type غائبة عن الطلب. كلاهما إلزامي وفقًا لـ TS 29.531. تحقق من أن AMF تتضمن هذه المعلمات في طلب الاختيار الخاص بها.
NSSAI المسموح به مفقود من استجابة الاختيار
يتم تضمين حقل allowedNssaiList فقط في الاستجابة عندما يمكن تحديد مفتاح PLMN من الطلب. يتم اشتقاق مفتاح PLMN من معلمة الاستعلام home-plmn-id، أو يتراجع إلى MCC/MNC الخاص بـ NSSF (mcc/mnc config). إذا لم يكن أي منهما قابلاً للتحليل، يتم حذف الحقل. تحقق من:
- أن
mccوmncتم تكوينهما بشكل صحيح لـ PLMN الرئيسي. - أن خريطة
allowed_nssaiتحتوي على إدخال للمفتاح"{mcc}-{mnc}".
تصفية TAI تستبعد جميع NSSAIs المسموح بها
عندما يتم توفير معلمة tai ولا يقوم أي AMF بالإبلاغ عن بيانات التوفر عبر PUT، تتراجع NSSF للسماح بجميع NSSAIs المكونة (خريطة التوفر الفارغة = لا قيود). بمجرد أن يقوم أي AMF بالإبلاغ عن التوفر، يتم إرجاع فقط S-NSSAIs المدرجة في إدخال TAI مطابق في بيانات التوفر تلك. إذا لم يظهر TAI في الاستعلام في أي من تقارير supportedNssaiAvailabilityData الخاصة بـ AMFs، فسيتم تصفية جميع NSSAIs. لتشخيص ذلك، تحقق مما إذا كانت AMFs قد قدمت طلبات PUT وما إذا كانت TAC في تلك التقارير تتطابق مع TAC في الاستعلام.
البدل SD يسبب اختيار NSI خاطئ
إذا كان إدخال nsi_list مع sd: nil مدرجًا قبل إدخالات أكثر تحديدًا، فسوف يتطابق أولاً مع أي طلب SST بغض النظر عن SD. تأكد من أن إدخالات SD المحددة تظهر قبل إدخالات البدل في nsi_list. انظر القيود NSSF-L5.
إشعارات التوفر غير مستلمة من قبل المشترك
تُرسل الإشعارات بشكل غير متزامن (fire-and-forget) في مهمة متفرعة. يتم تسجيل فشل التسليم كتحذيرات ولكن لا يتم إعادة المحاولة. تحقق من:
- أن
nfNssaiAvailabilityUriفي الاشتراك يمكن الوصول إليه من مضيف NSSF. - أن NF المشترك يقبل طلبات POST على ذلك URI ويعيد استجابة 2xx.
تُسجل محاولات الإشعار الفاشلة كـ NSSAIAvailability: الإشعار إلى {uri} فشل: {reason}.
حالة توفر أو اشتراك قديمة بعد إعادة تشغيل AMF
تُخزن سجلات توفر NSSAI والاشتراكات في العملية وليست دائمة. تبقى فقط خلال فترة تشغيل VM Erlang. إذا أعيد تشغيل AMF ولم يعيد تسجيل توفره عبر PUT، ستستمر NSSF في تقديم بيانات التوفر القديمة (أو الغائبة) لمعرف NF الخاص بـ AMF. يجب على AMF إعادة تقديم توفر NSSAI الخاص بها عند إعادة الاتصال. بالمثل، يجب على المشترك إعادة إنشاء الاشتراكات التي تم إنشاؤها قبل إعادة تشغيل NSSF.
ارتباط السجلات
تكون خطوط سجل اختيار NSSAI مسبوقة بـ NSSelection: وتحتوي على nf-id المطلوب. تكون خطوط سجل توفر NSSAI مسبوقة بـ NSSAIAvailability: وتحتوي على nfId. تسجل محاولات إشعار الاشتراك URI الاستدعاء. استخدم قيم nf-id لربط طلبات الاختيار مع تحديثات التوفر من نفس AMF.