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

وثائق واجهة Gx Diameter

واجهة وظيفة قواعد السياسة والفوترة (PCRF)


جدول المحتويات

  1. نظرة عامة
  2. أساسيات واجهة Gx
  3. بروتوكول Diameter
  4. رسائل التحكم في الائتمان
  5. قواعد السياسة والفوترة
  6. تقرير تغيير الموقع
  7. التكوين
  8. تدفقات الرسائل
  9. معالجة الأخطاء
  10. استكشاف الأخطاء وإصلاحها

نظرة عامة

تربط واجهة Gx PGW-C بـ PCRF (وظيفة قواعد السياسة والفوترة) أو PCF (وظيفة التحكم في السياسة) في شبكات 5G. تتيح هذه الواجهة:

  • التحكم الديناميكي في السياسة - تنفيذ QoS والسياسة في الوقت الحقيقي
  • التحكم في الفوترة - تفويض الائتمان وتت��ع الاستخدام
  • الوعي بالخدمة - تمييز حركة المرور على مستوى التطبيق
  • إدارة ملف تعريف المشترك - تطبيق السياسة لكل مستخدم

Gx في هيكل الشبكة

الوظائف الرئيسية

الوظيفةالوصف
توفير السياسةيوفر PCRF قواعد PCC التي تحدد كيفية التعامل مع حركة المرور
التحكم في QoSالتعديل الديناميكي لمعدلات البيانات ومعلمات QoS
التحكم في الفوترةتفويض الائتمان لسيناريوهات الدفع المسبق/الدفع اللاحق
التحكم في البوابةتمكين/تعطيل تدفقات الحركة بناءً على السياسة
مراقبة الاستخدامتتبع استهلاك البيانات لكل خدمة

أساسيات واجهة Gx

مرجع 3GPP

  • المواصفة: 3GPP TS 29.212
  • معرف تطبيق Diameter: 16777238 (Gx)
  • البروتوكول: بروتوكول Diameter الأساسي (RFC 6733)

مفهوم الجلسة

كل اتصال PDN لـ UE له جلسة Gx المقابلة التي يتم تحديدها بواسطة Session-ID. هذه الجلسة:

  • يتم إنشاؤها عندما يتصل UE (CCR-Initial)
  • يتم تحديثها خلال عمر الاتصال (CCR-Update) - اختياري، مثل تغييرات السياسة أو تقرير تغيير الموقع
  • يتم إنهاؤها عندما ينفصل UE (CCR-Termination)

تنسيق Session ID

Session-ID: <Origin-Host>;<high32>;<low32>[;<optional>]
مثال: omni-pgw_c.epc.mnc999.mcc999.3gppnetwork.org;1234567890;98765

المكونات:

  • Origin-Host: هوية Diameter لـ PGW-C
  • high32: 32 بت العليا من المعرف الفري��
  • low32: 32 بت السفلى من المعرف الفريد

بروتوكول Diameter

هيكل الرسالة

تكون رسائل Diameter مشفرة ثنائياً بالهيكل التالي:

رأس Diameter (20 بايت)
├── الإصدار (1 بايت) = 1
├── طول الرسالة (3 بايت)
├── الأعلام (1 بايت)
│ ├── R: طلب (1) / إجابة (0)
│ ├── P: قابلة للتوجيه
│ ├── E: خطأ
│ └── T: قد يتم إعادة إرساله
├── رمز الأمر (3 بايت)
├── معرف التطبيق (4 بايت) = 16777238 (Gx)
├── معرف Hop-by-Hop (4 بايت)
└── معرف End-to-End (4 بايت)

AVPs (أزواج السمة والقيمة)
├── رأس AVP
│ ├── رمز AVP
│ ├── الأعلام (V، M، P)
│ ├── طول AVP
│ └── معرف البائع (اختياري)
└── بيانات AVP

المفاهيم الرئيسية في Diameter

AVP (زوج السمة والقيمة):

  • وحدة البيانات الأساسية في Diameter
  • تحتوي على رمز، أعلام، وقيمة
  • يمكن أن تكون متداخلة (AVP مجمعة)

الأمر:

  • زوج طلب/إجابة
  • CCR (طلب التحكم في الائتمان) / CCA (إجابة التحكم في الائتمان)

رموز النتائج:

  • 2001 - DIAMETER_SUCCESS
  • 3xxx - أخطاء بروتوكول
  • 4xxx - فشل مؤقت
  • 5xxx - فشل دائم

رسائل التحكم في الائتمان

تستخدم PGW-C تطبيق التحكم في الائتمان Diameter (RFC 4006) لـ Gx.

أنواع الرسائل

CCR-Initial (طلب التحكم في الائتمان - أولي)

عندما: ينشئ UE اتصال PDN جديد

الغرض:

  • طلب قواعد السياسة والفوترة الأولية
  • توفير سياق UE والشبكة لـ PCRF
  • الحصول على معلمات QoS وتفويض الفوترة

AVPs الرئيسية المرسلة بواسطة PGW-C:

اسم AVPرمز AVPالنوعالوصف
Session-Id263UTF8Stringمعرف جلسة Gx الفريد
Auth-Application-Id258Unsigned3216777238 (Gx)
Origin-Host264DiamIdentهوية Diameter لـ PGW-C
Origin-Realm296DiamIdentمجال Diameter لـ PGW-C
Destination-Realm283DiamIdentمجال PCRF
CC-Request-Type416Enumerated1 = INITIAL_REQUEST
CC-Request-Number415Unsigned32رقم التسلسل (يبدأ من 0)
Subscription-Id443Groupedمعرف UE (IMSI/MSISDN)
Called-Station-Id30UTF8Stringاسم APN
Framed-IP-Address8OctetStringعنوان IPv4 المخصص لـ UE (IPv4 و IPv4v6 PDNs)
Framed-IPv6-Prefix97OctetStringبادئة IPv6 المخصصة لـ UE (IPv6-only PDNs)
3GPP-User-Location-Info22OctetStringمعلومات موقع المشترك الأولية (TS 29.061)
User-Equipment-Info458Groupedهوية UE (مثل IMEISV)، عند توفرها
IP-CAN-Type1027Enumerated5 = 3GPP-EPS
RAT-Type1032Enumeratedتم تعيينه من نوع RAT GTP (مثل 1004 = EUTRAN)
QoS-Information1016GroupedQoS الحالي (APN-AMBR UL/DL)
Default-EPS-Bearer-QoS1049GroupedQoS للناقل الافتراضي QCI/ARP (QCI 5)
Network-Request-Support1024Enumeratedإجراءات بدء الشبكة
Supported-Features628Groupedقائمة ميزات Gx (Rel-8/9/10 Gx)

يتم اختيار AVP عنوان الإطار بواسطة عائلة عنوان UE: Framed-IP-Address لـ IPv4 (و IPv4 من PDN IPv4v6)، Framed-IPv6-Prefix لـ PDN فقط IPv6. بالنسبة لـ IPv4v6، لا يتم حمل بادئة IPv6 على Gx. انظر IPv6 / Dual-Stack.

مثال على هيكل CCR-I:

CCR (رمز الأمر: 272، طلب)
├── Session-Id: "pgw_c.example.com;123;456"
├── Auth-Application-Id: 16777238
├── Origin-Host: "omni-pgw_c.epc.mnc999.mcc999.3gppnetwork.org"
├── Origin-Realm: "epc.mnc999.mcc999.3gppnetwork.org"
├── Destination-Realm: "epc.mnc999.mcc999.3gppnetwork.org"
├── CC-Request-Type: INITIAL_REQUEST (1)
├── CC-Request-Number: 0
├── Subscription-Id (Grouped)
│ ├── Subscription-Id-Type: END_USER_IMSI (1)
│ └── Subscription-Id-Data: "310260123456789"
├── Called-Station-Id: "internet"
├── Framed-IP-Address: 100.64.1.42
├��─ IP-CAN-Type: 3GPP-EPS (5)
├── RAT-Type: EUTRAN (1004)
├── QoS-Information (Grouped)
│ ├── APN-Aggregate-Max-Bitrate-UL: 100000000 (100 Mbps)
│ └── APN-Aggregate-Max-Bitrate-DL: 50000000 (50 Mbps)
├── Network-Request-Support: 1
└── Supported-Features: [...]

CCA-Initial (إجابة التحكم في الائتمان - أولية)

مرسلة بواسطة: PCRF استجابةً لـ CCR-I

الغرض:

  • تفويض أو رفض الجلسة
  • توفير قواعد PCC لمعالجة الحركة
  • تحديد معلمات QoS

AVPs الرئيسية المستلمة بواسطة PGW-C:

اسم AVPرمز AVPالوصف
Result-Code268النجاح (2001) أو رمز خطأ
Experimental-Result297رموز نتائج محددة من البائع
QoS-Information1016QoS المفوض (قد يختلف عن الطلب)
Charging-Rule-Install1001قواعد PCC للتفعيل
Charging-Rule-Definition1003تعريفات القواعد المضمنة
Default-EPS-Bearer-QoS1049QoS للناقل الافتراضي

مثال على استجابة النجاح:

CCA (رمز الأمر: 272، إجابة)
├── Session-Id: "pgw_c.example.com;123;456"
├── Result-Code: DIAMETER_SUCCESS (2001)
├── Origin-Host: "pcrf.example.com"
├── Origin-Realm: "example.com"
├── Auth-Application-Id: 16777238
├── CC-Request-Type: INITIAL_REQUEST (1)
├── CC-Request-Number: 0
├── QoS-Information (Grouped)
│ ├── APN-Aggregate-Max-Bitrate-UL: 50000000 (50 Mbps - مخفض)
│ └── APN-Aggregate-Max-Bitrate-DL: 100000000 (100 Mbps - مرتفع)
├── Charging-Rule-Install (Grouped)
│ ├── Charging-Rule-Name: "default_internet_rule"
│ └── Charging-Rule-Name: "video_streaming_rule"
└── Charging-Rule-Definition (Grouped)
├── Charging-Rule-Name: "default_internet_rule"
├── QoS-Information: {...}
└── Precedence: 1000

CCR-Termination (طلب التحكم في الائتمان - إنهاء)

عندما: ينفصل UE أو يتم حذف اتصال PDN

الغرض:

  • إبلاغ PCRF بإنهاء الجلسة
  • سجل المحاسبة/الفوترة النهائي

الاختلافات الرئيسية عن CCR-I:

  • CC-Request-Type: TERMINATION_REQUEST (3)
  • قد تتضمن إحصائيات الاستخدام
  • مجموعة AVP مبسطة

مثال على CCR-T:

CCR (رمز الأمر: 272، طلب)
├── Session-Id: "pgw_c.example.com;123;456"
├── Auth-Application-Id: 16777238
├── Origin-Host: "omni-pgw_c.epc.mnc999.mcc999.3gppnetwork.org"
├── Origin-Realm: "epc.mnc999.mcc999.3gppnetwork.org"
├── Destination-Realm: "epc.mnc999.mcc999.3gppnetwork.org"
├── CC-Request-Type: TERMINATION_REQUEST (3)
├── CC-Request-Number: 1
└── Termination-Cause: DIAMETER_LOGOUT (1)

CCA-Termination

مرسلة بواسطة: PCRF استجابةً لـ CCR-T

الغرض:

  • تأكيد إنهاء الجلسة
  • لا يتم إرجاع قواعد السياسة

مثال على CCA-T:

CCA (رمز الأمر: 272، إجابة)
├── Session-Id: "pgw_c.example.com;123;456"
├── Result-Code: DIAMETER_SUCCESS (2001)
├── Origin-Host: "pcrf.example.com"
├── Origin-Realm: "example.com"
├── Auth-Application-Id: 16777238
├── CC-Request-Type: TERMINATION_REQUEST (3)
└── CC-Request-Number: 1

قواعد السياسة والفوترة

هيكل قاعدة PCC

تعرف قاعدة PCC (التحكم في السياسة والفوترة) كيفية التعامل مع تدفقات الحركة المحددة:

مكونات القاعدة

1. اسم القاعدة:

  • معرف فريد للقاعدة
  • مثال: "video_streaming_rule"

2. الأولوية:

  • رقم أقل = أولوية أعلى
  • النطاق: 0-65535
  • يستخدم عندما تتطابق قواعد متعددة

3. مرشحات التدفق (TFT - نموذج تدفق الحركة):

  • يحدد الحزم التي تتطابق مع هذه القاعدة
  • أمثلة:
    • IP 5-tuple: البروتوكول، Src/Dst IP، Src/Dst Port
    • "permit out ip from any to 8.8.8.8 80"

4. معلومات QoS:

  • QCI (معرف فئة QoS): 1-9 (موحد)، 128-254 (محدد من قبل المشغل)
    • QCI 1: صوت محادثة
    • QCI 5: إشارات IMS
    • QCI 9: الإنترنت الافتراضي
  • ARP (أولوية التخصيص والاحتفاظ): قدرة الإقصاء
  • MBR/GBR: معدلات البيانات القصوى/المضمونة

5. معلومات الفوترة:

  • مجموعة التصنيف: تحدد فئة الفوترة (تستخدم بواسطة OCS - انظر واجهة Diameter Gy)
  • طريقة القياس: حجم، وقت، أو بناءً على الحدث
  • الفوترة عبر الإنترنت/غير المتصلة: OCS (مدفوع مسبقاً عبر Diameter Gy) مقابل CDRs غير المتصلة (مدفوع لاحقاً - انظر تنسيق CDR البيانات)

6. حالة التحكم:

  • مفتوح: السماح بحركة المرور
  • مغلق: حظر حركة المرور

توفير القاعدة الديناميكية

يمكن لـ PCRF توفير القواعد بطريقتين:

1. القواعد المحددة مسبقاً (حسب الاسم):

Charging-Rule-Install (Grouped)
├── Charging-Rule-Name: "gold_subscriber_internet"
└── Charging-Rule-Name: "video_qos_boost"

2. القواعد الديناميكية (تعريف مضمن):

Charging-Rule-Definition (Grouped)
├── Charging-Rule-Name: "dynamic_rule_123"
├���─ Precedence: 100
├── Flow-Information (Grouped)
│ ├── Flow-Description: "permit out ip from any to 192.0.2.0/24"
│ └── Flow-Direction: DOWNLINK
├── QoS-Information (Grouped)
│ ├── QoS-Class-Identifier: 5
│ ├── Max-Requested-Bandwidth-UL: 10000000
│ └── Max-Requested-Bandwidth-DL: 50000000
└── Rating-Group: 1000

AVP معلومات QoS

APN-AMBR (معدل البيانات الأقصى المجمع):

ينطبق على جميع الناقلات غير GBR لهذا APN:

QoS-Information (Grouped)
├── APN-Aggregate-Max-Bitrate-UL: 100000000 # 100 Mbps
└── APN-Aggregate-Max-Bitrate-DL: 200000000 # 200 Mbps

استجابة PGW-C:

  • تحديث حالة AMBR الداخلية
  • إرسال طلب تعديل الجلسة إلى PGW-U مع QER المحدث

تقرير تغيير الموقع

يمكن لـ PGW-C إبلاغ PCRF عندما يتغير موقع المشترك، تكنولوجيا الوصول اللاسلكي (RAT)، PLMN الخادم أو المنطقة الزمنية لـ UE خلال عمر الجلسة. يتم حمل التغيير في CCR-Update كـ 3GPP-User-Location-Info وAVPs ذات الصلة.

التقرير اختياري (تحت تحكم PCRF)

هذا التقرير مشروط بطلب PCRF — تماماً كما هو مطلوب بموجب 3GPP TS 29.212 §4.5.7 / §5.3.7. يقوم PCRF بتسليح الأحداث التي يريد سماعها عن طريق تضمين واحد أو أكثر من Event-Trigger AVPs في CCA (أو في RAR). يقوم PGW-C بتخزين المجموعة المسلحة لكل جلسة Gx ويرسل CCR-Update فقط عندما:

  1. يحدث شرط Event-Trigger المسلح فعلياً، و
  2. توجد جلسة Gx للمشترك.

إذا لم يقم PCRF بتسليح أي Event-Triggers ذات الصلة بالموقع، يبقى PGW-C صامتاً بشأن تغييرات الموقع — فهو ببساطة يقوم بتحديث حالته الداخلية ويجيب على طلب تعديل الناقل GTP-C. هذا يحافظ على واجهة هادئة لـ PCRFs التي لا تهتم بالحركة، ومتوافقة لتلك التي تهتم.

يمكن أن تتغير المجموعة المسلحة في أي وقت خلال الجلسة. يقوم PGW-C بتحديثها من كل مجموعة AVP Event-Trigger التي يرسلها PCRF — في CCA-Initial، في CCA-Update، أو في RAR الذي يبدأه PCRF. تحل مجموعة Event-Trigger الحالية محل المجموعة المسلحة حالياً؛ الرسالة التي تحمل لا AVP Event-Trigger تترك المجموعة المسلحة دون تغيير. لذا يمكن لـ PCRF بدء جلسة بدون تقرير الموقع ثم تشغيله (أو إيقافه) لاحقاً باستخدام RAR، والعكس صحيح.

Event-Triggers المدعومة

Event-Triggerالقيمةيحدث عندما...AVP المبلغ
RAT_CHANGE2تتغير RAT-Type (مثل EUTRAN → UTRAN)RAT-Type
PLMN_CHANGE4تتغير الشبكة الخادمة (MCC/MNC)3GPP-SGSN-MCC-MNC
USER_LOCATION_CHANGE13أي تغيير في معلومات موقع المستخدم3GPP-User-Location-Info
UE_TIME_ZONE_CHANGE25تتغير المنطقة الزمنية لـ UE3GPP-MS-TimeZone
TAI_CHANGE26تتغير هوية منطقة التتبع3GPP-User-Location-Info
ECGI_CHANGE27تتغير هوية الخلية العالمية E-UTRAN3GPP-User-Location-Info

يمكن أن تحدث عدة مشغلات في وقت واحد (مثل الانتقال إلى خلية جديدة في منطقة تتبع جديدة يحدث USER_LOCATION_CHANGE، TAI_CHANGE و ECGI_CHANGE)؛ يتم سرد جميع المشغلات المفعلة ��المسلحة في AVPs Event-Trigger لـ CCR-Update.

من أين يأتي الموقع

  • CCR-Initial الآن يتضمن 3GPP-User-Location-Info الأولية للمشترك، مما يمنح PCRF قاعدة بيانات.
  • خلال الجلسة، يحمل طلب تعديل الناقل GTP-C (S5/S8) معلومات موقع المستخدم المحدثة، RAT-Type، الشبكة الخادمة ومنطقة زمنية UE. يقوم PGW-C بتحليل هذه، يقارنها بالقيم المخزنة، ويبلغ عن أي تغيير مسلح.
  • تبقى المعلومات المفقودة من طلب تعديل الناقل على قيمتها السابقة، لذا فإن طلب تعديل الناقل الجزئي لا يبدو أبداً كتغيير موقع زائف.

ترميز 3GPP-User-Location-Info

يتم ترميز AVP وفقاً لـ 3GPP TS 29.061 §16.4.7.2: نوع الموقع الجغرافي بايت واحد متبوعاً بحقل (حقول) الموقع، مع ترميز هويات PLMN وفقاً لـ 3GPP TS 24.008 §10.5.1.3. الأنواع المدعومة:

النوعالقيمةالمحتويات
CGI0PLMN + LAC + CI (2G)
SAI1PLMN + LAC + SAC (3G)
RAI2PLMN + LAC + RAC
TAI128PLMN + TAC (LTE)
ECGI129PLMN + ECI (LTE)
TAI و ECGI130PLMN + TAC + PLMN + ECI (LTE، مفضل)

تدفق الرسالة

الصلابة: الإبلاغ عن التغيير إلى PCRF لا يمنع استجابة تعديل الناقل GTP-C. إذا انتهى وقت CCR-Update أو أعاد PCRF خطأ، يقوم PGW-C بتسجيله وما زال يجيب على SGW-C — مسار بيانات المشترك لا يتوقف بسبب فشل الإبلاغ عن السياسة.

فحص المشغلات المسلحة عبر API

تقوم واجهة API للجلسات (GET /api/sessions و GET /api/sessions/:imsi) بإرجاع تفريغ كامل، آمن بتنسيق JSON للجلسة تحت مفتاح state، بالإضافة إلى الحقول الرئيسية المنسقة. تكون Event-Triggers المسلحة بواسطة PCRF مرئية في state.gx.requested_event_triggers، جنباً إلى جنب مع بقية حالة جلسة Gx (session_id، cc_request_number، المضيف/المجال الوجهة) وstate.uli الحالية. هذا يجعل من الممكن تأكيد من أدوات العمليات ما إذا كان المشترك مشتركاً فعلياً في تقرير الموقع.

تجاوز المشغلات المسلحة عبر API

يمكن أيضاً تغيير المجموعة المسلحة مباشرةً على جلسة حية باستخدام PATCH /api/sessions/:imsi (مفيد لاختبار الميزة بدون PCRF، أو لفرض الإبلاغ على/إيقاف). يكون الجسم مدمجاً بعمق في حالة الجلسة، لذا فإن المسار يعكس الهيكل الذي تم إرجاعه بواسطة GET — تعيش المشغلات المسلحة تحت gx:

PATCH /api/sessions/310260000000001
Content-Type: application/json

{ "gx": { "requested_event_triggers": [13, 26, 27] } }
  • القيمة هي قائمة من رموز Gx Event-Trigger؛ تحل محل المجموعة المسلحة (تُترك الحقول الأخرى في gx دون تغيير بواسطة الدمج).
  • قائمة فارغة ([]) تلغي جميع تقارير الموقع للجلسة.
  • تعكس الاستجابة حالة الجلسة المحدثة والمطهرة.

تحتوي هذه النقطة على لا حواجز: يتم دمج الجسم بعمق في الجلسة الحية، لذا يمكن تغيير أي حقل — بما في ذلك إلى قيمة تعطل الجلسة. يتم تمرير التغييرات التي لها آثار سفلية إلى UPF. يؤدي تحديث APN-AMBR أو QoS الناقل الافتراضي إلى إعادة حساب QER الناقل الافتراضي (QCI / MBR / GBR) ويدفعه كـ Update QER في تعديل جلسة PFCP:

PATCH /api/sessions/310260000000001
Content-Type: application/json

{ "ambr": { "uplink": 200000, "downlink": 200000 } }
PATCH /api/sessions/310260000000001
Content-Type: application/json

{ "default_bearer_qos": { "qci": 5, "mbr_ul": 300000, "mbr_dl": 250000 } }

عندما يوفر default_bearer_qos MBR/GBR صريح (ناقلات GBR) فإنها تقود حدود معدل QER؛ بخلاف ذلك، يتم استخدام APN-AMBR كمعدل MBR للناقل الافتراضي.

ملاحظة: تجاوز المشغلات المسلحة يغير الرؤية المحلية لـ PGW-C لما قام PCRF بتسليحه. لا يزال بإمكان PCRF إعادة تسليح المجموعة لاحقاً عبر CCA أو RAR، مما سيعيد كتابة تجاوز يدوي.


التكوين

تكوين Gx الأساسي

قم بتحرير config/runtime.exs:

config :pgw_c,
diameter: %{
# عنوان IP للاستماع إلى اتصالات Diameter
listen_ip: "0.0.0.0",

# هوية Diameter لـ PGW-C (Origin-Host)
host: "omni-pgw_c.epc.mnc999.mcc999.3gppnetwork.org",

# مجال Diameter لـ PGW-C (Origin-Realm)
realm: "epc.mnc999.mcc999.3gppnetwork.org",

# قائمة أقران PCRF
peer_list: [
%{
# هوية Diameter لـ PCRF
host: "pcrf.epc.mnc999.mcc999.3gppnetwork.org",

# مجال PCRF (عادة ما يكون نفس مجال PGW-C)
realm: "epc.mnc999.mcc999.3gppnetwork.org",

# عنوا�� IP لـ PCRF
ip: "10.0.0.30",

# ما إذا كان PGW-C يبدأ الاتصال بـ PCRF
# true = PGW-C يتصل بـ PCRF
# false = الانتظار حتى يتصل PCRF
initiate_connection: true
}
]
}

أقران PCRF متعددة

للتكرار أو التوزيع الجغرافي:

config :pgw_c,
diameter: %{
listen_ip: "0.0.0.0",
host: "omni-pgw_c.epc.mnc999.mcc999.3gppnetwork.org",
realm: "epc.mnc999.mcc999.3gppnetwork.org",
peer_list: [
%{
host: "pcrf-primary.example.com",
realm: "epc.mnc999.mcc999.3gppnetwork.org",
ip: "10.0.1.30",
initiate_connection: true
},
%{
host: "pcrf-backup.example.com",
realm: "epc.mnc999.mcc999.3gppnetwork.org",
ip: "10.0.2.30",
initiate_connection: true
}
]
}

توازن الحمل:

  • يتعامل بروتوكول Diameter مع اختيار الأقران
  • يتم توزيع الطلبات بناءً على التوفر
  • الفشل التلقائي عند فشل القرين

حل اسم المضيف

يجب أن تكون هويات Diameter أسماء نطاق مؤهلة بالكامل (FQDN):

# صحيح - تنسيق FQDN
host: "pgw_c.epc.mnc999.mcc999.3gppnetwork.org"

# غير صحيح - ليس هوية Diameter صالحة
host: "pgw_c"
host: "10.0.0.20" # عناوين IP غير مسموح بها

تنسيق المجال:

  • يجب أن يكون اسم نطاق صالح
  • يتطابق عادةً مع تنسيق PLMN لـ 3GPP: epc.mncXXX.mccYYY.3gppnetwork.org

تدفقات الرسائل

إنشاء جلسة ناجحة

ملاحظة: يتم ترجمة معلمات QoS من PCRF إلى QERs (قواعد تنفيذ QoS) ويتم برمجتها في PGW-U عبر PFCP. انظر واجهة PFCP لتفاصيل QER.

تحديث السياسة (مبادرة الشبكة)

إنهاء الجلسة


معالجة الأخطاء

رموز النتائج

يتعامل PGW-C مع رموز النتائج المختلفة في رسائل CCA:

رموز النجاح:

الرمزالاسمالإجراء
2001DIAMETER_SUCCESSمتابعة إنشاء الجلسة

الفشل الدائم (5xxx):

الرمزالاسمإجراء PGW-C
5002DIAMETER_UNKNOWN_SESSION_IDتسجيل الخطأ، فشل الجلسة
5030DIAMETER_USER_UNKNOWNرفض الجلسة (المستخدم غير معروف)
5140DIAMETER_ERROR_INITIAL_PARAMETERSتسجيل الخطأ، إعادة المحاولة أو الفشل
5003DIAMETER_AUTHORIZATION_REJECTEDرفض الجلسة (غير مصرح)

الفشل المؤقت (4xxx):

الرمزالاسمإجراء PGW-C
4001DIAMETER_AUTHENTICATION_REJECTEDإعادة المحاولة أو فشل الجلسة
4010DIAMETER_TOO_BUSYإعادة المحاولة مع التراجع
4012DIAMETER_UNABLE_TO_COMPLYتسجيل الخطأ، قد تعيد المحاولة

رموز النتائج التجريبية

رموز الأخطاء المحددة من قبل البائع:

Experimental-Result (Grouped)
├── Vendor-Id: 10415 (3GPP)
└── Experimental-Result-Code: <رمز محدد من قبل البائع>

رموز 3GPP التجريبية الشائعة:

الرمزالاسمالمعنى
5065IP_CAN_SESSION_NOT_AVAILABLE��ا يمكن لـ PCRF إنشاء جلسة
5143INVALID_SERVICE_INFORMATIONبيانات الخدمة غير صالحة

معالجة المهلات

مهلة CCR-I:

إذا لم يستجب PCRF لـ CCR-Initial خلال المهلة:

1. ينتظر PGW-C المهلة المكونة (مثل 5 ثواني)
2. إذا لم يتم تلقي CCA:
- تسجيل: "مهلة CCR-Initial لجلسة-ID: ..."
- الرد على SGW-C بسبب الخطأ
- تنظيف الموارد المخصصة
3. يتلقى SGW-C: استجابة إنشاء الجلسة (السبب: لم يستجب نظير بعيد)

استجابة الخطأ لـ SGW-C:

عندما تنتهي مهلة CCR-Initial، يرسل PGW-C استجابة إنشاء جلسة مع رمز السبب :remote_peer_not_responding إلى SGW-C.

سيناريوهات الفشل

السيناريو 1: يرفض PCRF الجلسة (المستخدم غير معروف)

السيناريو 2: PCRF غير متاح مؤقتاً


استكشاف الأخطاء وإصلاحها

المشكلات الشائعة

1. فشل اتصال نظير Diameter

الأعراض:

  • تسجيل: "نظير Diameter غير متصل"
  • لم يتم إرسال CCR-Initial

الأسباب المحتملة:

  • PCRF غير قابل للوصول
  • عنوان IP غير صحيح لـ PCRF في التكوين
  • جدار ناري يحظر منفذ Diameter (3868)
  • هويات Diameter غير صحيحة (host/realm)

الحل:

# اختبار الاتصال الشبكي
ping <pcrf_ip>

# اختبار منفذ Diameter (TCP 3868)
telnet <pcrf_ip> 3868

# التحقق من تكوين هوية Diameter
# تأكد من أن host و realm هما FQDNs، وليس IPs

تحقق من التكوين:

config :pgw_c,
diameter: %{
# يجب أن تكون FQDN، وليس IP
host: "pgw_c.epc.mnc999.mcc999.3gppnetwork.org",
realm: "epc.mnc999.mcc999.3gppnetwork.org",
peer_list: [
%{
host: "pcrf.epc.mnc999.mcc999.3gppnetwork.org",
ip: "10.0.0.30"
}
]
}

2. انتهاء مهلة CCR-Initial

الأعراض:

  • فشل طلب إنشاء الجلسة
  • تسجيل: "مهلة CCR-Initial"

الأسباب المحتملة:

  • PCRF محمل
  • تأخير الشبكة
  • PCRF لا يستجيب لهذا Session-ID

الحل:

  1. تحقق من سجلات PCRF بحثاً عن الأخطاء
  2. تحقق من أن PCRF يعالج الطلبات
  3. تحقق من تأخير الشبكة: ping <pcrf_ip>
  4. زيادة المهلة إذا كان تأخير الشبكة مرتفعاً

3. الجلسات المرفوضة بواسطة PCRF

الأعراض:

  • CCA-Initial مع Result-Code != 2001
  • فشل استجابة إنشاء الجلسة

رموز النتائج الشائعة:

رمز النتيجةالسبب المحتملالحل
5030IMSI غير موجود في قاعدة بيانات المشتركينتوفير المشترك في HSS/SPR
5003تم رفض التفويضتحقق من أذونات المشترك
4010PCRF مشغول جداًإعادة المحاولة أو إضافة سعة PCRF

تحقق من السجلات:

# سجلات PGW-C تظهر:
[error] خطأ Diameter Gx: رمز النتيجة 5030 (DIAMETER_USER_UNKNOWN)
[error] IMSI 310260999999999 تم رفضه بواسطة PCRF

4. عدم تطبيق QoS

الأعراض:

  • تم إنشاء الجلسة ولكن QoS خاطئ
  • معدلات البيانات لا تتطابق مع القيم المتوقعة

خطوات التصحيح:

  1. تحقق من CCA-Initial:

    • تحقق من وجود AVP QoS-Information
    • تحقق من قيم APN-Aggregate-Max-Bitrate-UL/DL
  2. تحقق من إنشاء جلسة PFCP:

    • تحقق من إنشاء QER بالقيم الصحيحة لـ MBR
    • تحقق من سجلات PGW-U لتثبيت QER
  3. تحقق من سياسة PCRF:

    • تحقق من تكوين PCRF
    • تحقق من أن ملف تعريف المشترك يتضمن QoS الصحيح

5. مشكلات توجيه Diameter

الأعراض:

  • رسائل Diameter لا تصل إلى PCRF
  • تسجيل: "لا يوجد مسار إلى Destination-Realm"

السبب:

  • عدم تطابق المجال بين التكوين والرسائل

الحل:

تأكد من الاتساق:

# يجب أن تتطابق جميعها
config :pgw_c,
diameter: %{
realm: "epc.mnc999.mcc999.3gppnetwork.org", # مجال PGW-C
peer_list: [
%{
realm: "epc.mnc999.mcc999.3gppnetwork.org" # مجال PCRF (عادة ما يكون نفس المجال)
}
]
}

في CCR-Initial:

Origin-Realm: "epc.mnc999.mcc999.3gppnetwork.org"
Destination-Realm: "epc.mnc999.mcc999.3gppnetwork.org"

مراقبة صحة Gx

المقاييس الرئيسية:

# معدلات رسائل Gx
rate(gx_inbound_messages_total{message_type="gx_CCA"}[5m])
rate(gx_outbound_messages_total{message_type="gx_CCR"}[5m])

# معدلات أخطاء Gx
rate(gx_inbound_errors_total[5m])

# معدل نجاح استجابات Gx (مقياس جديد)
sum(rate(gx_outbound_responses_total{result_code_class="2xxx"}[5m])) /
sum(rate(gx_outbound_responses_total[5m])) * 100

# فشل استجابات Gx حسب مضيف PCRF
rate(gx_outbound_responses_total{result_code_class!="2xxx"}[5m]) by (diameter_host)

# عدد جلسات Gx
session_id_registry_count

# مدة معالجة الرسائل Gx
histogram_quantile(0.95, rate(gx_inbound_handling_duration_bucket[5m]))

مقاييس الاستجابة حسب فئة رمز النتيجة:

يوفر مقياس gx_outbound_responses_total رؤية تفصيلية حول استجابات Diameter المرسلة إلى أقران PCRF، مصنفة حسب:

  • message_type: نوع رسالة الاستجابة (gx_RAA, gx_CCA)
  • result_code_class: فئة رمز النتيجة (2xxx, 3xxx, 4xxx, 5xxx)
  • diameter_host: نظير PCRF الذي يتلقى الاستجابة

أمثلة التنبيه:

# تنبيه على ارتفاع معدل أخطاء Gx
- alert: GxErrorRateHigh
expr: rate(gx_inbound_errors_total[5m]) > 0.1
for: 5m
annotations:
summary: "تم الكشف عن ارتفاع معدل أخطاء Gx"

# تنبيه على ارتفاع معدل فشل استجابات Gx
- alert: GxResponseFailureRate
expr: |
sum(rate(gx_outbound_responses_total{result_code_class!="2xxx"}[5m])) /
sum(rate(gx_outbound_responses_total[5m])) > 0.1
for: 5m
annotations:
summary: "ارتفاع معدل فشل استجابات Gx"
description: "أكثر من 10% من استجابات Gx هي فشل"

# تنبيه على رفض الجلسات
- alert: GxSessionRejection
expr: rate(gx_inbound_errors_total{result_code="5030"}[5m]) > 0.01
for: 5m
annotations:
summary: "PCRF يرفض الجلسات (USER_UNKNOWN)"

تسجيل الأخطاء

قم بتمكين تسجيل Diameter التفصيلي:

# config/runtime.exs
config :logger, level: :debug

# أو في وقت التشغيل
iex> Logger.configure(level: :debug)

ابحث عن:

  • [debug] إرسال CCR-Initial لجلسة-ID: ...
  • [debug] استلام CCA-Initial: رمز النتيجة 2001
  • [error] خطأ Diameter: ...

مراقبة نظير Diameter

يتم مراقبة اتصال نظير Diameter Gx بـ PCRF من خلال API OAM REST. يتم تقديم API عبر HTTPS/TLS على https://<host>:8443 مع جميع المسارات تحت بادئة /api. تتوفر وثائق API التفاعلية (Swagger UI) على https://<host>:8443/api/docs.

نقاط نهاية نظير Diameter

GET /api/diameter                     # جميع الأقران المكونة + الحالة الحية
GET /api/diameter?status=disconnected # تص��ية حسب حالة الاتصال
GET /api/diameter/<origin-host> # نظير واحد حسب Origin-Host

مثال:

curl -k https://localhost:8443/api/diameter

GET /api/diameter يعيد كل نظير Diameter مكون وحالته الحالية. أضف ?status=connected أو ?status=disconnected لتصفية حسب حالة الاتصال، أو أضف GET /api/diameter/<origin-host> لجلب نظير واحد.

لكل نظير، يتم إرجاع الحقول التالية:

الحقلالوصف
hostهوية Diameter (Origin-Host) للنظير
statusحالة الاتصال (مثل متصل / غير متصل / جارٍ الاتصال)
ipعنوان IP للنظير
portمنفذ النظير
transportTCP أو SCTP
connection_initiationما إذا كان OmniPGW يبدأ (خارجي) أو يقبل (داخلي) الاتصال
realmمجال Diameter المبلغ عنه من قبل النظير في CEA
product_nameسلسلة منتج البائع المبلغ عنها من قبل النظير في CEA
application_idsمعرفات تطبيق Diameter المتفاوض عليها في CEA (Gx = 16777238)

يظهر النشر الصحي جميع أقران PCRF المكونة على أنها متصلة. يمنع فقدان جميع أقران Gx تثبيت السياسة ويمنع إنشاء جلسات جديدة.

حالات الاستخدام التشغيلية

مراقبة اتصال PCRF:

curl -k https://localhost:8443/api/diameter

تحقق من أن جميع أقران PCRF تظهر متصلة، وأن connection_initiation يتطابق مع التكوين، وأن application_ids تشمل Gx (16777238).

استكشاف فشل إنشاء الجلسة (مشكلات Gx): عندما تفشل جلسات المستخدم مع أخطاء "مهلة PCRF"، استعلم عن النظير المتأثر:

curl -k https://localhost:8443/api/diameter/<origin-host>
  • status هو غير متصل → تحقق من الاتصال الشبكي، تأكد من أن PCRF قيد التشغيل، وتأكد من أن قواعد جدار الحماية تسمح بـ TCP 3868.
  • status هو متصل ولكن الجلسات لا تزال تفشل → المشكلة على مستوى التطبيق (تحقق من السجلات)؛ قد يرفض PCRF المشتركين.

التحقق من تكوين Diameter: بعد تكوين نظير PCRF جديد، تأكد من ظهوره والوصول إلى متصل:

curl -k https://localhost:8443/api/diameter/<origin-host>

تحقق من أن realm يتطابق مع التكوين، وأن application_ids تشمل Gx، وأن product_name يظهر معرف PCRF المتوقع.

مراقبة الفشل: عندما يفشل PCRF الأساسي، يتم إدراج GET /api/diameter?status=disconnected كـ غير متصل بينما يبقى PCRF الاحتياطي متصل. تستخدم الجلسات الجديدة تلقائياً الاحتياطي؛ عندما يتعافى الأساسي، تعود حالته إلى متصل.

الكشف عن مشكلات توجيه Diameter:

  • يظهر النظير متصل ولكن realm خاطئ
  • لا تشمل application_ids Gx (16777238)
  • لا يتطابق product_name مع PCRF المتوقع

تحديد عدم تطابق التكوين: إذا كان connection_initiation يبلغ عن بدء النظير بينما يحدد التكوين initiate_connection: true، فإن كلا الطرفين يحاولان البدء، مما قد يسبب حالات سباق الاتصال.

التكامل مع المقاييس

يوفر API OAM حالة النظير في الوقت الحقيقي؛ اجمعها مع Prometheus لـ:

  • معدلات أخطاء Gx التاريخية
  • عدد رسائل CCR/CCA
  • اتجاهات التأخير

GET /api/diameter يجيب على "هل تعمل بشكل صحيح الآن؟"; المقاييس تجيب على "كيف كانت تعمل على مر الزمن؟"


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

التكوين والسياسة

تكامل الفوترة

العمليات


العودة إلى دليل العمليات