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

OmniSMF

تقوم OmniSMF بتنفيذ وظيفة إدارة الجلسات (SMF) من النواة 5G. تمتلك SMF دورة الحياة الكاملة لجلسات PDU: تخصيص عنوان IP لجهاز المستخدم، ربط السياسات، برمجة وإغلاق مستوى المستخدم. إنها تربط واجهة N4 (PFCP) نحو UPF، وواجهة N7 نحو PCF، وواجهة N10 نحو UDM، وواجهة N11 نحو AMF، وواجهة N40 (Nchf) المدمجة نحو CHF، كما أنها تخدم مسار N26 الداخلي للتشغيل المتداخل نحو PGW-C المستقل لجوال 4G/5G.

يتم إدارة كل جلسة PDU بواسطة عملية عامل جلسة مخصصة تحت مشرف ديناميكي (نموذج عملية لكل جلسة). جميع حالة الجلسة (تدفقات QoS، سياق PFCP، IP لجهاز المستخدم، حالة اتصال مستوى المستخدم) مملوكة لذلك العامل، لذا فإن فشل جلسة واحدة لا يؤثر على الآخرين. يتم إجراء مكالمات SBI الصادرة إلى URIs ثابتة تم تكوينها عند بدء التشغيل؛ تسجل SMF مع NRF وترسل نبضات قلب، لكنها لا تقوم بإجراء اكتشاف قائم على NRF لمكالماتها الصادرة.

الوثائق

  • دليل العمليات - دور 3GPP، واجهات SBI وN4، وإجراءات إنشاء وتعديل وإصدار جلسات PDU، طلب الخدمة وإجراءات التشغيل المتداخل N26 مع مخططات تسلسلية.
  • مرجع التكوين - مرجع تكوين وقت التشغيل الكامل، جداول المعلمات، مجموعة IP لجهاز المستخدم وتكوين PCO/P-CSCF، واجهة إدارة/OAM، والتسجيل.
  • المقاييس - مقاييس Prometheus لجلسات PDU، PFCP/UPF، تسجيل NRF، وصحة BEAM VM، مع مثال على PromQL.
  • استكشاف الأخطاء - المشكلات الشائعة وحلولها.

نظرة عامة على العمارة

نظرة عامة على الميزات

  • دورة حياة جلسة PDU: الإنشاء، التعديل، الإصدار، وإعادة تنشيط طلب الخدمة لجهاز المستخدم، كل جلسة مملوكة لعملية عامل مخصصة.
  • مجموعة IP لجهاز المستخدم المدركة لـ DNN مع مطابقة دقيقة/regex/افتراضية، نطاقات متعددة من IPv4/IPv6 لكل DNN، تخصيص عشوائي، إزالة التكرار، وإصدار آمن من التسرب عند خروج أي عامل.
  • عنوان IP ثابت للمشترك محترم من UDM/UDR ومحجوز ضد المجموعات.
  • تسوية نوع جلسة PDU: الطلبات ذات المكدس المزدوج المقدمة من مجموعة عائلية واحدة يتم الإشارة إليها كعائلة بتسبب 5GSM الصحيح (#50/#51).
  • P-CSCF / PCO لـ VoNR: اكتشاف DNS SRV مع فحص صحة SIP OPTIONS بالإضافة إلى تراجع ثابت؛ توازن PCO مع PGW-C 4G.
  • تدفقات QoS GBR مخصصة (5QI-1): مسارات ثابتة (مجهزة) وديناميكية (مدفوعة بالاتصال عبر سياسة PCF) بالإضافة إلى تعديل تدفق QoS بعد الإنشاء.
  • N4 / PFCP: إعداد الارتباط مع نبضات القلب وإنشاء الجلسة بالكامل، التعديل، والحذف.
  • N40 / Nchf الشحن المدمج: تعمل كمستهلك شحن نحو CHF، تفتح طلب بيانات شحن عند إنشاء جلسة PDU، وتحديثه أثناء الجلسة من تقارير استخدام N4 URR، وإغلاقه عند الإصدار. يتم حل CHF عبر اكتشاف NRF مع URI تراجع ثابت. معطلة بشكل افتراضي ومفعلة عبر التكوين.
  • التشغيل المتداخل N26 EPS: اعتماد/تحويل/بحث مع الحفاظ على IP لجهاز المستخدم عبر 4G/5G.
  • معالجة حالة النقل: انتقالات hoState (PREPARING / PREPARED / COMPLETED / CANCELLED) مع إعادة تنشيط مستوى المستخدم عند الانتهاء.
  • تسجيل JSON منظم مع بيانات التعريف لكل جلسة ومصدر مقاييس Prometheus.

بدء سريع

تقرأ OmniSMF تكوين مشغلها من config/runtime.exs، الذي يربط متغيرات البيئة إلى بيئة تطبيق :omnismf.

import Config

config :omnismf,
sbi_addr: System.get_env("SBI_ADDR", "127.0.0.4"),
sbi_port: String.to_integer(System.get_env("SBI_PORT", "7777")),
udm_uri: System.get_env("UDM_URI", "http://127.0.0.12:7777"),
pcf_uri: System.get_env("PCF_URI", "http://127.0.0.13:7777"),
amf_uri: System.get_env("AMF_URI", "http://127.0.0.5:7777"),
upf_addr: System.get_env("UPF_ADDR", "10.179.1.24"),
upf_pfcp_port: String.to_integer(System.get_env("UPF_PFCP_PORT", "8805")),
pfcp_addr: System.get_env("PFCP_ADDR", "0.0.0.0"),
mcc: System.get_env("MCC", "999"),
mnc: System.get_env("MNC", "70"),
ue_ip_pool: [subnet_map: %{default: ["10.45.0.0/16"]}]

config :logger, :default_formatter,
format: {OmniLogger.JsonFormatter, :format},
metadata: :all

sbi_addr و pfcp_addr افتراضيان على loopback / جميع الواجهات على التوالي. في أي نشر متعدد المضيفين أو حاويات، يجب أن يكون sbi_addr عنوانًا يمكن لـ AMF/PCF الوصول إليه، يجب أن يكون pfcp_addr قابلاً للتوجيه من UPF، ويجب أن يشير upf_addr إلى نقطة نهاية PFCP لـ UPF، وإلا فلن يمكن إنشاء أي جلسة PDU.

يعيش مرجع المعلمات الكامل، بما في ذلك كل متغير بيئي وافتراضي، في مرجع التكوين.