وثائق واجهة Sxa
الاتصال بـ PFCP مع SGW-U
OmniSGW من Omnitouch Network Services
جدول المحتويات
- نظرة عامة
- تفاصيل البروتوكول
- التكوين
- جمعية PFCP
- إدارة الجلسات
- قواعد PFCP
- تقارير الاستخدام
- عمليات الشبكة
- استكشاف الأخطاء وإصلاحها
نظرة عامة
تربط واجهة Sxa OmniSGW بـ SGW-U (بوابة الخدمة لطبقة المستخدم) باستخدام بروتوكول PFCP (بروتوكول التحكم في توجيه الحزم). تتحكم هذه الواجهة في توجيه حزم طبقة المستخدم، وفرض جودة الخدمة، وتقارير الاستخدام.
الميزات الرئيسية
- PFCP v1.0 - التحكم في توجيه الحزم وفقًا للمعايير
- تتبع الجلسات المعتمد على SEID - معرفات نقطة نهاية الجلسة للجمعية
- قواعد اكتشاف الحزم - مطابقة مرنة للحزم للرفع/الخفض
- قواعد إجراء التوجيه - التحكم في توجيه الحزم والتغليف
- فرض جودة الخدمة - تحديد الحد الأقصى لمعدل البيانات لكل حامل وتحديد الأولويات
- قياس الاستخدام - تتبع الحجم للفوترة والتحليلات
- تحكم في التخزين المؤقت - تخزين مؤقت تلقائي أثناء أحداث التنقل
تفاصيل البروتوكول
إصدار PFCP 1.0
- البروتوكول: PFCP v1.0 (3GPP TS 29.244)
- النقل: UDP
- المنفذ: 8805 (قياسي)
- نوع الواجهة: Control Plane
- نموذج الجمعية: CP و UP تشكل جمعية دائمة
SEID (معرف نقطة نهاية الجلسة)
لكل جلسة معرفات SEID فريدة للتتبع:
- CP SEID - مخصص بواسطة SGW-C، يستخدم في رسائل الرفع إلى SGW-U
- UP SEID - مخصص بواسطة SGW-U، يستخدم في رسائل الخفض إلى SGW-C
توجيه الرسائل:
SGW-C → SGW-U: يستخدم UP SEID الخاص بـ SGW-U
SGW-U → SGW-C: يستخدم CP SEID الخاص بـ SGW-C
نظرة عامة على أنواع الرسائل
التكوين
التكوين الأساسي
# config/runtime.exs
config :sgw_c,
sxa: %{
# عنوان IP المحلي لواجهة Sxa
local_ip_address: "10.0.0.20",
# اختياري: تجاوز المنفذ الافتراضي
local_port: 8805,
# أقران SGW-U للاتصال بها
peers: [
%{
ip_address: "10.0.0.30",
node_id: "sgw-u-1.example.com"
},
%{
ip_address: "10.0.0.31",
node_id: "sgw-u-2.example.com"
}
],
# فترة نبض الجمعية (بالثواني)
heartbeat_interval_s: 20,
# مهلة إنشاء الجلسة (بالملي ثانية)
session_timeout_ms: 5000,
# الحد الأقصى لعدد المحاولات لعمليات الجلسة
max_retries: 3
}
متطلبات الشبكة
قواعد جدار الحماية:
# السماح بـ PFCP من شبكة SGW-U
iptables -A INPUT -p udp --dport 8805 -s <sgwu_network>/24 -j ACCEPT
# السماح بـ PFCP الصادر إلى SGW-U
iptables -A OUTPUT -p udp --dport 8805 -d <sgwu_network>/24 -j ACCEPT
التوجيه:
# التأكد من وجود مسار إلى شبكة SGW-U
ip route add <sgwu_network>/24 via <gateway_ip> dev eth0
اختبار الشبكة:
# اختبار الاتصال بـ PFCP
# تحقق من السجلات للرسالة "Association Setup Complete"
# مراقبة جلسات PFCP النشطة
curl http://127.0.0.40:42068/metrics | grep seid_registry_count
جمعية PFCP
دورة حياة الجمعية
قبل أن يتم إنشاء أي جلسات، يجب على SGW-C و SGW-U تشكيل جمعية PFCP.
آلة حالة الجمعية
[Disconnected]
↓ (Setup Request)
[Associating]
↓ (Setup Response OK)
[Associated]
↓ (Session Creates)
[Sessions Active]
↓ (Heartbeat Failure)
[Re-associating]
↓ (Setup OK or Timeout)
[Associated or Disconnected]
معالجة الاسترداد
إذا فقدت جمعية PFCP وتم استردادها:
-
كشف الاسترداد:
- يؤدي انتهاء نبض القلب إلى بدء الاسترداد
- يتم إرسال إعداد جمعية جديدة
- يتم التحقق من طابع زمني الاسترداد
-
استرداد الجلسة:
- قد تكون الجلسات قابلة للاسترداد أو لا
- استفسر SGW-U عن الجلسات الحالية
- أعِد إنشاء الجلسات المفقودة إذا لزم الأمر
-
توجيه البيانات:
- تخزين مؤقت لطبقة المستخدم في SGW-U أثناء الاسترداد
- تبقى PDRs نشطة حتى يتم حذفها صراحة
- تقليل فقد الحزم أثناء التحويل
إدارة الجلسات
إنشاء الجلسة
التحفيز: طلب إنشاء جلسة من MME (تم استلامه على S11)
عناصر المعلومات المرسلة:
| العنصر | الوصف |
|---|---|
| CP SEID | مخصص بواسطة SGW-C لهذه الجلسة |
| PDRs | قواعد اكتشاف الحزم (انظر أدناه) |
| FARs | قواعد إجراء التوجيه |
| QERs | قواعد فرض جودة الخدمة |
| BAR | قاعدة إجراء التخزين المؤقت للتنقل |
| إنشاء PDR | معرفات القواعد للاستجابة |
حالة الجلسة:
[No Session]
↓ (Establishment Request)
[Establishing]
↓ (Establishment Response)
[Session Active]
تعديل الجلسة
التحفيز: طلب تعديل الحامل من MME (تغيير جودة الخدمة، نقل)
التعديلات الشائعة:
| التعديل | العناصر المحدثة | السبب |
|---|---|---|
| تغيير جودة الخدمة | QERs | ترقية/خفض الحامل |
| نقل | PDRs، FARs | تغيير eNodeB، اختيار SGW-U |
| إضافة حامل | PDR جديد، FAR، QER | تفعيل حامل مخصص |
| حذف حامل | إزالة PDR، FAR، QER | إلغاء تفعيل الحامل |
حذف الجلسة
التحفيز: طلب حذف الجلسة من MME (فصل)
حالة الجلسة:
[Session Active]
↓ (Deletion Request)
[Deleting]
↓ (Deletion Response)
[Session Terminated]
قواعد PFCP
PDR (قاعدة اكتشاف الحزمة)
ت��ابق الحزم الواردة لتحديد تدفقات المرور.
معايير اكتشاف الحزم:
| المعيار | الوصف | المثال |
|---|---|---|
| واجهة المصدر | من أين تصل الحزمة | الوصول (S1-U)، النواة (S5/S8) |
| عنوان IP المصدر | عنوان IP لـ UE (للوصول) | 10.45.0.50 |
| عنوان IP الوجهة | عنوان IP الشبكة الخارجية (للنواة) | 8.8.8.8 |
| نوع البروتوكول | رقم بروتوكول IP | TCP (6)، UDP (17) |
| المنفذ المصدر | مطابقة المنفذ | 1024-65535 |
| المنفذ الوجهة | مطابقة المنفذ | 80 (HTTP)، 443 (HTTPS) |
| TEID | معرف نفق GTP-U | للحزم الواردة |
هيكل PDR:
هيكل PDR:
├── معرف PDR (فريد داخل الجلسة)
├── الأسبقية (الأولوية للقواعد المتداخلة)
├── معايير اكتشاف الحزم
│ ├── واجهة المصدر
│ ├── مثيل الشبكة (APN)
│ └── عنوان IP لـ UE / عنوان IP الوجهة
├── معرف FAR (أي قاعدة توجيه يجب تطبيقها)
├── معرف QER (أي قاعدة جودة خدمة يجب تطبيقها)
└���─ مشغل تقرير الاستخدام
حالة الاستخدام - حامل افتراضي:
- الاكتشاف: جميع الحزم من/إلى عنوان IP لـ UE
- الإجراء: توجيه عبر PDN (اتجاه PGW-U)
- جودة الخدمة: مطبقة لكل حامل
حالة الاستخدام - حامل مخصص:
- الاكتشاف: الحزم المطابقة لتدفق معين (نطاق المنفذ، البروتوكول)
- الإجراء: توجيه على مسار مخصص
- جودة الخدمة: معدلات مميزة (GBR)
FAR (قاعدة إجراء التوجيه)
تحدد كيفية التعامل مع الحزم المطابقة.
إجراءات التوجيه:
| الإجراء | الوصف | حالة الاستخدام |
|---|---|---|
| توجيه | إرسال الحزمة إلى الشبكة الوجهة | التوجيه العادي |
| تخزين مؤقت | تخزين الحزمة مؤقتًا | أثناء التنقل/الصفحات |
| إسقاط | إسقاط الحزمة | فرض السياسة، جدار الحماية |
| تكرار | إرسال الحزمة إلى وجهات متعددة | الاعتراض القانوني |
خيارات التغليف:
- GTP-U - إضافة رأس نفق GTP-U (S1-U، S5/S8)
- إيثرنت - إضافة رأس إيثرنت (للاتصال المباشر)
- IPv4 - توجيه IPv4 عادي (لخروج الإنترنت)
- IPv6 - توجيه IPv6 عادي
مثال - UE إلى الإنترنت:
مطابقة PDR: واجهة المصدر = الوصول، عنوان IP لـ UE = 10.45.0.50
إجراء FAR:
- التوجيه = نعم
- تغليف الرأس الخارجي = لا شيء (الإنترنت المباشر)
- معلمات التوجيه = بوابة الإنترنت
QER (قاعدة فرض جودة الخدمة)
تفرض حدود معدل البيانات لكل حامل.
معلمات جودة الخدمة:
| المعلمة | النوع | الوصف |
|---|---|---|
| QCI | عدد صحيح | معرف فئة جودة الخدمة (1-9) |
| MBR (الحد الأقصى لمعدل البيانات) | معدل البيانات | الحد الأقصى المسموح به |
| GBR (معدل البيانات المضمون) | معدل البيانات | الحد الأدنى المضمون |
| ARP | عدد صحيح | أولوية التخصيص والاحتفاظ (1-15) |
فئات جودة الخدمة (QCI):
| QCI | نوع الخدمة | أمثلة على معدل البيانات |
|---|---|---|
| 1 | صوت (GBR) | MBR: 64 كيلوبت في الثانية |
| 2 | مكالمة فيديو (GBR) | MBR: 256 كيلوبت في الثانية |
| 3 | ألعاب في الوقت الحقيقي (GBR) | MBR: 50 كيلوبت في الثانية |
| 4 | غير GBR | GBR: 128 كيلوبت في الثانية، MBR: 256 كيلوبت في الثانية |
| 5 | إشارات IMS | GBR: 100 كيلوبت في الثانية، MBR: 256 كيلوبت في الثانية |
| 6 | بث الفيديو | MBR: 10 ميغابت في الثانية |
| 7 | صوت مع فيديو (GBR) | GBR: 64 كيلوبت في الثانية، MBR: 384 كيلوبت في الثانية |
| 8 | تصفح الويب | MBR: 5 ميغابت في الثانية |
| 9 | بريد إلكتروني | MBR: 3 ميغابت في الثانية |
مثال - حامل افتراضي (QCI 9):
QCI: 9 (أفضل جهد)
MBR: 100 ميغابت في الثانية (حسب الموقع)
GBR: لا شيء (غير GBR)
ARP: 15 (أدنى أولوية)
مثال - حامل صوت مخصص (QCI 1):
QCI: 1 (صوت)
MBR: 128 كيلوبت في الثانية (رفع + خفض)
GBR: 64 كيلوبت في الثانية (مضمون)
ARP: 1 (أعلى أولوية)
BAR (قاعدة إجراء التخزين المؤقت)
تتحكم في تخزين الحزم أثناء أحداث التنقل.
سيناريوهات التخزين المؤقت:
-
تخزين مؤقت أثناء النقل:
- يتم نقل UE بين eNodeBs
- يتم تخزين الحزم أثناء الحركة
- يتم تحريرها عند اكتمال النقل
-
تخزين مؤقت أثناء الصفحات:
- UE في وضع الخمول (حاملات معلقة)
- تصل بيانات خفض
- يتم تخزينها حتى يتم إعادة تنشيط UE
-
إعادة توطين SGW:
- أثناء النقل بين MME مع تغيير SGW
- يقوم SGW القديم بالتخزين المؤقت والتوجيه إلى SGW الجديد
- يتم الحفاظ على التسليم المرتب
تكوين BAR:
إعدادات BAR:
├── مهلة التخزين المؤقت: كم من الوقت يجب الاحتفاظ بالحزم
├── عتبة عدد الحزم: الحد الأقصى للحزم المخزنة مؤقتًا
└── مشغل تقرير بيانات خفض
└── إرسال إشعار إلى CP عند وصول البيانات
تقارير الاستخدام
رسائل تقرير الاستخدام
ترسل SGW-U تقارير الاستخدام إلى SGW-C ��لفوترة والتحليلات.
مشغلات تقرير الاستخدام
ترسل التقارير عندما:
| المشغل | الشرط |
|---|---|
| فترة زمنية | تقرير دوري كل N ثانية |
| عتبة الحجم | بعد N بايت تم توجيهها |
| عتبة المدة | بعد N ثانية من التوجيه |
| نهاية الجلسة | عند حذف الجلسة |
| تعديل | عند تحديث القواعد |
| تقرير فوري | مطلوب في رسالة التعديل |
حقول تقرير الاستخدام
تقرير الاستخدام:
├── مشغل تقرير الاستخدام: ما الذي تسبب في هذا التقرير
├── UR-SEQN: رقم التسلسل للترتيب
├── معلومات الاستخدام لكل حامل:
│ ├── EBI: معرف الحامل
│ ├── قياس الحجم
│ │ ├── UL: بايتات الرفع
│ │ ├── DL: بايتات الخفض
│ │ ├── الإجمالي: إجمالي البايتات
│ │ └── الحزم: إ��مالي الحزم
│ ├── قياس المدة: ثوانٍ نشطة
│ └── وقت أول/آخر حزمة: الطوابع الزمنية
└── استفسار UR: طلب تقرير فوري
تدفق توليد CDR
عمليات الشبكة
مراقبة جمعية PFCP
راقب جمعيات PFCP النشطة:
# تحقق من حالة الجمعية
curl -s http://127.0.0.40:42068/metrics | grep pfcp_association
# الناتج المتوقع:
# pfcp_association_status{peer_ip="10.0.0.30"} 1 (مرتبط)
# pfcp_association_status{peer_ip="10.0.0.31"} 1 (مرتبط)
# واجهة الويب → صفحة حالة SGW-U
# تعرض جميع الأقران مع حالة "مرتبط" ومعلومات الاسترداد
مقاييس الجلسة
راقب جلسات PFCP النشطة:
# عد الجلسات النشطة
curl -s http://127.0.0.40:42068/metrics | grep seid_registry_count
# راقب توزيع لكل SGW-U
curl -s http://127.0.0.40:42068/metrics | grep seid_by_peer
# معدل الاستخدام (بايتات/ثانية)
curl -s http://127.0.0.40:42068/metrics | grep usage_octets_rate
مراقبة تدفق الرسائل
تتبع نشاط رسائل PFCP:
# راقب جميع رسائل PFCP
watch -n 1 'curl -s http://127.0.0.40:42068/metrics | grep sxa_inbound'
# مثال على الناتج:
# sxa_inbound_messages_total{message_type="session_establishment_response"} 5432
# sxa_inbound_messages_total{message_type="session_modification_response"} 12100
# sxa_inbound_messages_total{message_type="session_report_request"} 67000
التحقق من تثبيت القواعد
تحقق مما إذا كانت القواعد مثبتة بشكل صحيح في SGW-U:
# راقب نجاحات/إخفاقات إنشاء الجلسات
curl -s http://127.0.0.40:42068/metrics | grep sxa_session_establishment
# تحقق من مشكلات تثبيت PDR
curl -s http://127.0.0.40:42068/metrics | grep pdr_installation
# ابحث عن انتهاء المهلة
curl -s http://127.0.0.40:42068/metrics | grep sxa_timeout_total
استكشاف الأخطاء وإصلاحها
إخفاقات الجمعية
المشكلة: "فشل إعداد الجمعية"
التشخيص:
- تحقق من الاتصال بالشبكة:
ping <sgwu_ip> - تحقق من المنفذ:
netstat -an | grep 8805 - تحقق من السجلات للحصول على تفاصيل الخطأ
الأسباب الشائعة والحلول:
| السبب | العرض | الحل |
|---|---|---|
| الشبكة غير قابلة للوصول | انتهاء المهلة عند الإعداد | تحقق من التوجيه إلى SGW-U |
| المنفذ محجوز | تم رفض الاتصال | تحقق من قواعد جدار الحماية |
| SGW-U متوقف | لا استجابة | أعد تشغيل عملية SGW-U |
| عدم تطابق معرف العقدة | تم رفض الإعداد | تحقق من التكوين |
إخفاقات إنشاء الجلسة
المشكلة: "فشل إنشاء الجلسة"
التشخيص:
# تحقق من المقاييس
curl -s http://127.0.0.40:42068/metrics | grep seid_registry_count
# تحقق من السجلات للحصول على خطأ محدد
tail -f /var/log/sgw_c/sgw_c.log | grep "Session Establishment"
الأسباب الشائعة:
| السبب | رسالة الخطأ | الحل |
|---|---|---|
| SGW-U لا موارد | "موارد غير كافية" | تحقق من سعة SGW-U |
| PDR غير صالح | "IE إلزامي مفقود" | تحقق من تعريفات القواعد |
| تعارض SEID | "SEID موجود بالفعل" | تحقق من تكرار الجلسة |
| انتهاء المهلة | "انتهاء مهلة إنشاء الجلسة" | زيادة المهلة أو تحقق من SGW-U |
مشكلات تقرير الاستخدام
المشكلة: "تقارير الاستخدام مفقودة"
التشخيص:
# تحقق من عدد التقارير
curl -s http://127.0.0.40:42068/metrics | grep session_report_request_total
# راقب توليد CDR
tail -f /var/log/sgw_c/cdrs/<timestamp>
الحلول:
- تحقق من أن نبض SGW-U نشط
- تحقق من تكوين مشغل تقرير الجلسة
- تأكد من أن أذونات دليل CDR صحيحة
- راقب تجاوز التخزين المؤقت لـ SGW-U
مشكلات الأداء
المشكلة: ارتفاع زمن ��ستجابة رسائل PFCP
المقاييس التي يجب التحقق منها:
# مدة معالجة الرسالة
curl -s http://127.0.0.40:42068/metrics | grep sxa_inbound_duration_seconds
# الحمل لكل نظير
curl -s http://127.0.0.40:42068/metrics | grep seid_by_peer
# عمق الطابور
curl -s http://127.0.0.40:42068/metrics | grep pfcp_queue_depth
خطوات التحسين:
- توزيع الحمل عبر عدة أقران SGW-U
- زيادة مهلة نبض القلب إذا كانت الشبكة غير مستقرة
- مراقبة وتقليل تعقيد القواعد
- التوسع أفقيًا مع إضافات SGW-C
للحصول على مرجع كامل للمقاييس، وتكوين لوحة المعلومات، وإعداد التنبيهات، انظر دليل المراقبة والمقاييس.
أفضل الممارسات
التكوين
- فترة نبض القلب: تعيينها إلى 20-30 ثانية للكشف الموثوق
- مهلة الجلسة: 5-10 ثوانٍ بناءً على زمن الانتقال في الشبكة
- الحد الأقصى لعدد المحاولات: 2-3 لتحقيق التوازن بين الموثوقية والزمن
- اختيار الأقران: توزيع الحمل ��بر جميع أقران SGW-U
العمليات
- تكرار الأقران: تكوين عدة مثيلات SGW-U للتبديل
- إعادة التحميل بسلاسة: دعم التحديثات البرمجية أثناء الخدمة
- تجفيف الجلسات: نقل الجلسات قبل الصيانة
- المراقبة: تتبع تكرار استرداد الجمعية
استكشاف الأخطاء وإصلاحها
- احتفظ بالسجلات: احتفظ بتتبع رسائل PFCP للتصحيح
- الارتباط: ربط رسائل S11 بعمليات جلسة PFCP
- مقاييس الأساس: إنشاء أساس للأداء الطبيعي
- اختبار سيناريوهات الفشل: ممارسة إجراءات تبديل SGW-U