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

شحن القطر عبر الإنترنت (واجهة Gy/Ro)

واجهة نظام الشحن عبر الإنترنت (OCS)


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

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

نظرة عامة

تربط واجهة Gy (المعروفة أيضًا باسم واجهة Ro في سياقات IMS) PGW-C بنظام الشحن عبر الإنترنت (OCS) للتحكم في الائتمان في ال��قت الحقيقي. وهذا يمكّن:

  • الشحن المدفوع مسبقًا - تفويض الائتمان والخصم في الوقت الحقيقي
  • التحكم في الائتمان في الوقت الحقيقي - منح الحصة قبل تقديم الخدمة
  • الشحن القائم على الخدمة - شحن مختلف للصوت والبيانات والرسائل القصيرة، إلخ.
  • تحديثات الحساب الفورية - تحديثات رصيد الائتمان في الوقت الحقيقي
  • رفض الخدمة - حظر الخدمة عند نفاد الائتمان

الشحن عبر الإنترنت مقابل الشحن غير المتصل

الجانبالشحن عبر الإنترنت (Gy/Ro)الشحن غير المتصل (Gz/Rf)
التوقيتفي الوقت الحقيقي، قبل الخدمةبعد تقديم الخدمة
حالة الاستخدامالمشتركين المدفوعين مسبقًاالمشتركين المدفوعين لاحقًا
تحقق الائتماننعم، قبل منح الخدمةلا، يتم إصدار الفاتورة لاحقًا
النظامOCS (نظام الشحن عبر الإنترنت)CGF/CDF (وظيفة بيانات الشحن)
المخاطرلا خسارة في الإيراداتخطر الفواتير غير المدفوعة
التعقيدعالٍ (متطلبات الوقت الحقيقي)أقل (معالجة دفعات)
تأثير المستخدميتم رفض الخدمة إذا لم يكن هناك ائتمانالخدمة متاحة دائمًا

انظر أيضًا: تنسيق CDR للبيانات لسجلات الشحن غير المتصل (الفواتير المدفوعة لاحقًا)

انظر أيضًا: إدارة الجلسات لدورة حياة جلسة PDN الكاملة بما في ذلك تكامل الشحن

Gy في معمارية الشبكة

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

الوظيفةالوصف
تفويض الائتمانطلب حصة من OCS قبل السماح بحركة المرور
إدارة الحصةتتبع الوحدات الممنوحة (بايت، وقت، أحداث)
كشف استنفاد الائتمانمراقبة الحصة المتبقية
إعادة التفويضطلب حصة إضافية عند الوصول إلى العتبة
إنهاء الخدمةإيقاف الخدمة عند نفاد الائتمان
التسوية النهائيةالإبلاغ عن الاستخدام الفعلي عند انتهاء الجلسة

معمارية الشحن 3GPP

نقاط مرجعية للشحن

وظيفة تحفيز الشحن (CTF)

يعمل PGW-C كـ CTF (وظيفة تحفيز الشحن)، المسؤولة عن:

  1. كشف الأحداث القابلة للشحن - بدء الجلسة، استخدام البيانات، انتهاء الجلسة
  2. طلب تفويض الائتمان - قبل السماح بالخدمة
  3. تتبع استهلاك الحصة - مراقبة الوحدات الممنوحة
  4. توليد أحداث الشحن - تحفيز طلبات الائتمان
  5. فرض التحكم في الائتم��ن - حظر حركة المرور عند استنفاد الحصة

وظيفة الشحن عبر الإنترنت (OCF)

ينفذ OCS OCF (وظيفة الشحن عبر الإنترنت):

  1. إدارة رصيد الحساب - تتبع ائتمان المشترك
  2. التسعير - تحديد السعر لكل وحدة (لكل ميغابايت، لكل ثانية، إلخ.)
  3. حجز الائتمان - حجز الائتمان للحصة الممنوحة
  4. خصم الائتمان - الخصم عند الإبلاغ عن الاستخدام
  5. قرارات السياسة - منح أو رفض بناءً على الرصيد

أساسيات واجهة Gy/Ro

مرجع 3GPP

  • المواصفة: 3GPP TS 32.299 (معمارية الشحن)
  • البروتوكول: 3GPP TS 32.251 (شحن مجال PS)
  • معرف تطبيق Diameter: 4 (Gy/Ro - تطبيق التحكم في الائتمان)
  • البروتوكول الأساسي: RFC 4006 (تطبيق التحكم في الائتمان Diameter)

مفهوم الجلسة

كل اتصال PDN لـ UE يتطلب شحنًا عبر الإنترنت له جلسة Gy/Ro يتم تحديدها بواسطة Session-ID. هذه الجلسة:

  • تُنشأ عندما يتطلب الحامل شحنًا عبر الإنترنت (CCR-Initial)
  • تُحدث عندما يتم استهلاك الحصة (CCR-Update)
  • تُنهى عندما تنتهي الجلسة (CCR-Termination)

تنسيق معرف الجلسة

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

المكونات:

  • Origin-Host: هوية Diameter لـ PGW-C
  • high32: 32 بت العليا من المعرف الفريد
  • low32: 32 بت السفلى من المعرف الفريد
  • optional: معرف إضافي (مثل "gy" للتمييز عن Gx)

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

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

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

��ندما: ينشئ UE اتصال PDN ويتطلب الحامل شحنًا عبر الإنترنت

الغرض:

  • طلب تفويض الائتمان الأولي من OCS
  • حجز حصة لتقديم الخدمة
  • إنشاء جلسة Gy/Ro

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

اسم AVPرمز AVPالنوعالوصف
Session-Id263UTF8Stringمعرف جلسة Gy الفريد
Auth-Application-Id258Unsigned324 (التحكم في الائتمان)
Origin-Host264DiamIdentهوية Diameter لـ PGW-C
Origin-Realm296DiamIdentمجال Diameter لـ PGW-C
Destination-Realm283DiamIdentمجال OCS
CC-Request-Type416Enumerated1 = INITIAL_REQUEST
CC-Request-Number415Unsigned32رقم التسلسل (يبدأ من 0)
Subscription-Id443Groupedمعرف UE (IMSI/MSISDN)
Service-Context-Id461UTF8Stringمعرف سياق الشحن
Multiple-Services-Credit-Control456Groupedطلبات ائتمان محددة للخدمة
Requested-Service-Unit437Groupedالحصة المطلوبة (بايت، وقت، إلخ.)
Used-Service-Unit446Groupedالحصة المستخدمة (0 للأولي)
Service-Identifier439Unsigned32معرف نوع الخدمة
Rating-Group432Unsigned32معرف فئة الشحن

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

CCR (رمز الأمر: 272، طلب)
├── Session-Id: "pgw_c.example.com;123;456;gy"
├── Auth-Application-Id: 4
├── 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"
├── Subscription-Id (Grouped)
│ ├── Subscription-Id-Type: END_USER_E164 (0)
│ └── Subscription-Id-Data: "15551234567"
├── Service-Context-Id: "32251@3gpp.org"
├── Multiple-Services-Credit-Control (Grouped)
│ ├── Service-Identifier: 1
│ ├── Rating-Group: 100
│ └── Requested-Service-Unit (Grouped)
│ └── CC-Total-Octets: 10000000 (طلب 10 ميغابايت)
└── Used-Service-Unit (Grouped)
└── CC-Total-Octets: 0 (لا استخدام بعد)

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

م��سلة بواسطة: OCS ردًا على CCR-I

الغرض:

  • منح أو رفض تفويض الائتمان
  • توفير حصة لتقديم الخدمة
  • تحديد معايير التسعير والشحن

المفاتيح AVPs المستلمة بواسطة PGW-C:

اسم AVPرمز AVPالوصف
Result-Code268النجاح (2001) أو رمز الخطأ
Multiple-Services-Credit-Control456منح ائتمان محدد للخدمة
Granted-Service-Unit431الحصة الممنوحة (بايت، وقت، إلخ.)
Validity-Time448فترة صلاحية الحصة (ثواني)
Result-Code268رمز نتيجة لكل خدمة
Final-Unit-Indication430الإجراء عند استنفاد الحصة
Volume-Quota-Threshold-العتبة لإعادة التفويض

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

CCA (رمز الأمر: 272، إجابة)
├── Session-Id: "pgw_c.example.com;123;456;gy"
├── Result-Code: DIAMETER_SUCCESS (2001)
├── Origin-Host: "ocs.example.com"
├── Origin-Realm: "example.com"
├── Auth-Application-Id: 4
├── CC-Request-Type: INITIAL_REQUEST (1)
├── CC-Request-Number: 0
└── Multiple-Services-Credit-Control (Grouped)
├���─ Result-Code: DIAMETER_SUCCESS (2001)
├── Service-Identifier: 1
├── Rating-Group: 100
├── Granted-Service-Unit (Grouped)
│ └── CC-Total-Octets: 10000000 (منح 10 ميغابايت)
├── Validity-Time: 3600 (الحصة صالحة لمدة ساعة واحدة)
└── Volume-Quota-Threshold: 8000000 (إعادة التفويض عند استخدام 8 ميغابايت، 80%)

CCR-Update (طلب التحكم في الائتمان - تحديث)

عندما:

  • تم الوصول إلى عتبة الحصة الممنوحة (مثل 80% مستهلكة)
  • تنتهي فترة الصلاحية
  • يتطلب تغيير الخدمة إعادة التفويض
  • تغيير وقت التعرفة

الغرض:

  • طلب حصة إضافية
  • الإبلاغ عن استخدام الحصة الممنوحة سابقًا
  • تحديث معايير الشحن

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

  • CC-Request-Type: UPDATE_REQUEST (2)
  • CC-Request-Number تم زيادته
  • Used-Service-Unit يحتوي على الاستخدام الفعلي
  • Requested-Service-Unit لمزيد من الحصة

مثال هيكل CCR-U:

CCR (رمز الأمر: 272، طلب)
├── Session-Id: "pgw_c.example.com;123;456;gy"
├── Auth-Application-Id: 4
├── 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: UPDATE_REQUEST (2)
├── CC-Request-Number: 1
└── Multiple-Services-Credit-Control (Grouped)
├── Service-Identifier: 1
├── Rating-Group: 100
├── Used-Service-Unit (Grouped)
│ └── CC-Total-Octets: 8000000 (8 ميغابايت مستخدمة حتى الآن)
└── Requested-Service-Unit (Grouped)
└── CC-Total-Octets: 10000000 (طلب 10 ميغابايت أخرى)

CCA-Update (إجابة التحكم في الائتمان - تحديث)

مرسلة بواسطة: OCS ردًا على CCR-U

الغرض:

  • منح حصة إضافية (إذا كان الائتمان متاحًا)
  • الاعتراف بالاستخدام
  • تحديث معايير الشحن

النتائج المحتملة:

1. منح المزيد من الحصة:

CCA (تحديث)
└── Multiple-Services-Credit-Control
├── Result-Code: DIAMETER_SUCCESS (2001)
├── Granted-Service-Unit
│ └── CC-Total-Octets: 10000000 (10 ميغابايت أخرى)
└── Validity-Time: 3600

2. الحصة النهائية (استنفاد الائتمان):

CCA (تحديث)
└── Multiple-Services-Credit-Control
├── Result-Code: DIAMETER_SUCCESS (2001)
├── Granted-Service-Unit
│ └── CC-Total-Octets: 1000000 (تبقى 1 ميغابايت فقط)
└── Final-Unit-Indication
└── Final-Unit-Action: TERMINATE (0)

3. لا ائتمان متاح:

CCA (تحديث)
├── Result-Code: DIAMETER_CREDIT_LIMIT_REACHED (4012)
└── Multiple-Services-Credit-Control
├── Result-Code: DIAMETER_CREDIT_LIMIT_REACHED (4012)
└── Final-Unit-Indication
└── Final-Unit-Action: TERMINATE (0)

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

عندما:

  • يفصل UE
  • يتم حذف اتصال PDN
  • يتم إنهاء الجلسة لأي سبب

الغرض:

  • تقرير الاستخدام النهائي
  • إغلاق جلسة Gy/Ro
  • التسوية النهائية

الاختلافات الرئيسية:

  • CC-Request-Type: TERMINATION_REQUEST (3)
  • Used-Service-Unit يحتوي على الاستخدام النهائي
  • لا Requested-Service-Unit (لا حاجة لمزيد من الحصة)
  • يتضمن Termination-Cause

مثال هيكل CCR-T:

CCR (رمز الأمر: 272، طلب)
├── Session-Id: "pgw_c.example.com;123;456;gy"
├── Auth-Application-Id: 4
├── 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: 5
├── Termination-Cause: DIAMETER_LOGOUT (1)
└── Multiple-Services-Credit-Control (Grouped)
├── Service-Identifier: 1
├── Rating-Group: 100
└── Used-Service-Unit (Grouped)
└── CC-Total-Octets: 18500000 (18.5 ميغابايت إجمالي الاستخدام)

CCA-Termination (إجابة التحكم في الائتمان - إنهاء)

مرسلة بواسطة: OCS ردًا على CCR-T

الغرض:

  • الاعتراف بإنهاء الجلسة
  • إكمال المحاسبة
  • تحرير الائتمان المحجوز

مثال CCA-T:

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

تدفقات الشحن عبر الإنترنت

أنواع وحدات الخدمة

يمكن لـ OCS منح الحصة بوحدات مختلفة:

نوع الوحدةAVPالوصفحالة الاستخدام
الوقتCC-Timeثوانيالمكالمات الصوتية، مدة الجلسة
الحجمCC-Total-Octetsبايت (إجمالي صعودًا وهبوطًا)خدمات البيانات
الحجم (منفصل)CC-Input-Octets, CC-Output-Octetsبايت (منفصل)الشحن غير المتناظر
محدد الخدمةCC-Service-Specific-Unitsوحدات مخصصةالرسائل القصيرة، الرسائل متعددة الوسائط، مكالمات API
الأحداث-الأحداث المحسوبةخدمات الدفع مقابل الاستخدام

إدارة عتبة الحصة

المشكلة: كيف يعرف PGW-C متى يطلب المزيد من الحصة؟

الحل: يوفر OCS Volume-Quota-Threshold أو Time-Quota-Threshold. يراقب PGW-C الاستخدام عبر تقارير جلسة PFCP من PGW-U (انظر واجهة PFCP).

مثال على التدفق:

1. يمنح OCS حصة 10 ميغابايت مع عتبة 80% (8 ميغابايت)
2. يراقب PGW-C الاستخدام عبر تقارير استخدام PGW-U (تقارير جلسة PFCP)
3. عندما يصل الاستخدام إلى 8 ميغابايت:
→ يرسل PGW-C CCR-Update
→ يستمر في السماح بحركة المرور (لا تنتظر الرد)
4. يستجيب OCS بمزيد من الحصة
5. إذا تم استنفاد الحصة قبل إرسال CCR-Update:
→ يجب على PGW-C حظر حركة المرور

حساب العتبة:

Granted-Service-Unit: 10000000 بايت (10 ميغابايت)
Volume-Quota-Threshold: 8000000 بايت (8 ميغابايت)

عندما يتم استهلاك 8 ميغابايت → تحفيز CCR-Update
المخزون المتبقي: 2 ميغابايت (يسمح بالوقت لاستجابة OCS)

مراقبة PGW-C:

يراقب PGW-C الاستخدام عبر تقارير جلسة PFCP من PGW-U:

الإشارة إلى الوحدة النهائية

ماذا يحدث عندما يتم استنفاد الائتمان؟

يتضمن OCS Final-Unit-Indication AVP في CCA لتحديد الإجراء:

Final-Unit-Actionالقيمةسلوك PGW-C
TERMINATE0حظر كل حركة المرور، بدء إنهاء الجلسة
REDIRECT1إعادة توجيه حركة المرور إلى البوابة (مثل صفحة الشحن)
RESTRICT_ACCESS2السماح بالوصول فقط إلى خدمات معينة (مثل خادم الشحن)

مثال: الوحدة النهائية مع إعادة التوجيه

CCA (تحديث)
└── Multiple-Services-Credit-Control
├── Result-Code: DIAMETER_SUCCESS (2001)
├── Granted-Service-Unit
│ └── CC-Total-Octets: 1000000 (الوحدة النهائية 1 ميغابايت)
└── Final-Unit-Indication
├── Final-Unit-Action: REDIRECT (1)
└── Redirect-Server (Grouped)
├── Redirect-Address-Type: URL (2)
└── Redirect-Server-Address: "http://topup.example.com"

إجراءات PGW-C:

  1. TERMINATE: إرسال CCR-T، حذف الحامل
  2. REDIRECT: تثبيت قاعدة PFCP لإعادة توجيه HTTP إلى عنوان الشحن
  3. RESTRICT_ACCESS: تثبيت قواعد PFCP تسمح فقط بعناوين IP المدرجة في القائمة البيضاء

تحكم شحن الحامل

ما الذي يتحكم في ما إذا كان يتم شحن الحامل؟

مواصفة 3GPP: TS 23.203، TS 29.212، TS 32.251

يتم التحكم في شحن الحامل بواسطة قواعد PCC المجهزة بواسطة PCRF عبر واجهة Gx. انظر واجهة Diameter Gx لوثائق قواعد PCC الكاملة.

تدفق قرار الشحن:

قاعدة PCC مع معلومات الشحن

استجابة PCRF (CCA-I على Gx):

CCA (واجهة Gx)
└── Charging-Rule-Definition (Grouped)
├── Charging-Rule-Name: "prepaid_data_rule"
├── Rating-Group: 100
├── Online: 1 (تمكين الشحن عبر الإنترنت)
├── Offline: 0 (تعطيل الشحن غير المتصل)
├── Metering-Method: VOLUME (1)
├── Precedence: 100
├── Flow-Information: [...]
└── QoS-Information: [...]

المفاتيح AVPs للشحن في قواعد PCC:

اسم AVPرمز AVPالقيمالوصف
Rating-Group432Unsigned32فئة الشحن (تتوافق مع التعرفة في OCS)
Online10090=تعطيل، 1=تمكينتمكين الشحن عبر الإنترنت (Gy)
Offline10080=تعطيل، 1=تمكينتمكين الشحن غير المتصل (Gz)
Metering-Method10070=المدة، 1=الحجم، 2=كلاهماما يجب قياسه
Reporting-Level10110=الخدمة، 1=مجموعة التصنيفدقة تقارير الاستخدام

مصفوفة قرار شحن الحامل

عبر الإنترنتغير متصلمجموعة التصنيفالسلوك
10موجودةشحن عبر الإنترنت فقط (مدفوع مسبقًا)
01موجودةشحن غير متصل فقط (مدفوع لاحقًا)
11موجودةالشحن عبر الإنترنت وغير المتصل (متقارب)
00-لا شحن (خدمة مجانية)

مجموعات تصنيف متعددة

يمكن أن يحتوي اتصال PDN واحد على عدة حوامل بمجموعات تصنيف مختلفة:

سيناريو المثال:

الحامل الافتراضي (الإنترنت)
├── مجموعة التصنيف: 100 (البيانات القياسية)
└── عبر الإنترنت: 1

الحامل المخصص 1 (بث الفيديو)
├── مجموعة التصنيف: 200 (خدمة الفيديو)
└── عبر الإنترنت: 1

الحامل المخصص 2 (صوت IMS)
├── مجموعة التصنيف: 300 (الصوت)
└── عبر الإنترنت: 1

سلوك PGW-C Gy:

  • CCR-I واحد مع عدة أقسام MSCC (تحكم الائتمان لعدة خدمات):
CCR-Initial
├── Session-Id: "..."
└── Multiple-Services-Credit-Control
├── [مجموعة التصنيف: 100] → البيانات القياسية
├── [مجموعة التصنيف: 200] → خدمة الفيديو
└── [مجموعة التصنيف: 300] → الصوت

استجابة OCS:

CCA-Initial
└── Multiple-Services-Credit-Control
├── [مجموعة التصنيف: 100] → منح: 10 ميغابايت
├── [مجموعة التصنيف: 200] → منح: 5 ميغابايت (الفيديو أك��ر تكلفة)
└── [مجموعة التصنيف: 300] → منح: 60 ثانية

فرض الشحن لكل خدمة

PGW-C يتتبع الحصة لكل مجموعة تصنيف:

# كود زائف
state.charging_quotas = %{
100 => %{granted: 10_000_000, used: 0, threshold: 8_000_000},
200 => %{granted: 5_000_000, used: 0, threshold: 4_000_000},
300 => %{granted: 60_000, used: 0, threshold: 48_000} # مللي ثانية
}

مراقبة الاستخدام لكل حامل:


التحكم في الائت��ان لعدة خدمات

MSCC (تحكم الائتمان لعدة خدمات) AVP

الغرض: تجميع معلومات الشحن لخدمة/مجموعة تصنيف معينة

الهيكل:

Multiple-Services-Credit-Control (Grouped, AVP 456)
├── Service-Identifier (Unsigned32, AVP 439)
├── Rating-Group (Unsigned32, AVP 432)
├── Requested-Service-Unit (Grouped, AVP 437)
│ ├── CC-Time (Unsigned32, AVP 420)
│ ├── CC-Total-Octets (Unsigned64, AVP 421)
│ ├── CC-Input-Octets (Unsigned64, AVP 412)
│ └── CC-Output-Octets (Unsigned64, AVP 414)
├── Used-Service-Unit (Grouped, AVP 446)
│ └── [نفس الهيكل مثل Requested-Service-Unit]
├── Granted-Service-Unit (Grouped, AVP 431)
│ └── [نفس الهيكل مثل Requested-Service-Unit]
├── Validity-Time (Unsigned32, AVP 448)
├── Result-Code (Unsigned32, AVP 268)
└── Final-Unit-Indication (Grouped, AVP 430)
└── Final-Unit-Action (Enumerated, AVP 449)

Service-Identifier مقابل Rating-Group

السمةService-IdentifierRating-Group
الغرضيحدد نوع الخدمةيحدد فئة الشحن
المثال1=البيانات، 2=الصوت، 3=الرسائل القصيرة100=عادي، 200=مميز
الدقةتصنيف واسعتعرفة محددة
المطلوباختياريمطلوب للشحن
التوافققد يتوافق مع عدة RGsتعرفة واحدة في OCS

مثال:

Service-Identifier: 1 (خدمة البيانات)
├── Rating-Group: 100 (البيانات القياسية - $0.01/ميغابايت)
└── Rating-Group: 200 (البيانات المميزة - $0.05/ميغابايت)

Service-Identifier: 2 (الصوت)
└── Rating-Group: 300 (المكالمات الصوتية - $0.10/دقيقة)

التكوين

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

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

config :pgw_c,
online_charging: %{
# تمكين أو تعطيل الشحن عبر الإنترنت عالميًا
enabled: true,

# مهلة اتصال OCS (بالمللي ثانية)
timeout_ms: 5000,

# الحصة الافتراضية المطلوبة (بايت) إذا لم يحددها PCRF
default_requested_quota: 10_000_000, # 10 ميغابايت

# نسبة العتبة لإعادة التفويض
# (0.8 = تحفيز CCR-Update عند استهلاك 80% من الحصة)
quota_threshold_percentage: 0.8,

# الإجراء عند حدوث مهلة OCS
# الخيارات: :block, :allow
timeout_action: :block,

# الإجراء عند عدم عودة OCS بأي ائتمان
# الخيارات: :terminate, :redirect
no_credit_action: :terminate,

# عنوان URL لإعادة التوجيه للشحن (يستخدم إذا كان no_credit_action: :redirect)
topup_redirect_url: "http://topup.example.com"
},
diameter: %{
listen_ip: "0.0.0.0",
host: "omni-pgw_c.epc.mnc999.mcc999.3gppnetwork.org",
realm: "epc.mnc999.mcc999.3gppnetwork.org",

# تكوين نظير OCS
peer_list: [
# PCRF للتحكم في السياسة (Gx)
%{
host: "pcrf.epc.mnc999.mcc999.3gppnetwork.org",
realm: "epc.mnc999.mcc999.3gppnetwork.org",
ip: "10.0.0.30",
initiate_connection: true
},
# OCS للشحن عبر الإنترنت (Gy)
%{
host: "ocs.epc.mnc999.mcc999.3gppnetwork.org",
realm: "epc.mnc999.mcc999.3gppnetwork.org",
ip: "10.0.0.40",
initiate_connection: true
}
]
}

شرح معلمات التكوين

enabled

  • true: الشحن عبر الإنترنت نشط، يتم إرسال رسائل CCR إلى OCS
  • false: الشحن عبر الإنترنت معطل، لا توجد رسائل Gy

timeout_ms

  • الوقت للانتظار لاستجابة CCA من OCS
  • الموصى به: 3000-5000 مللي ثانية

default_requested_quota

  • الحصة الافتراضية المطلوبة إذا لم يحددها PCRF
  • القيم النموذجية: 1-100 ميغابايت

quota_threshold_percentage

  • تحفيز CCR-Update عندما يتم استهلاك هذه النسبة المئوية من الحصة
  • الموصى به: 0.75-0.85 (75%-85%)
  • أعلى = عدد أقل من الرسائل، ولكن خطر استنفاد الحصة
  • أقل = المزيد من الرسائل، ولكن أكثر أمانًا

timeout_action

  • :block - حظر حركة المرور إذا لم تستجب OCS (أكثر أمانًا، يمنع خسارة الإيرادات)
  • :allow - السماح بحركة المرور إذا لم تستجب OCS (أفضل تجربة مستخدم، خطر الإيرادات)

no_credit_action

  • :terminate - حذف الحامل عند نفاد الائتمان
  • :redirect - إعادة التوجيه إلى بوابة الشحن

تكوين محدد للبيئة

الإنتاج (المشتركين المدفوعين مسبقًا):

config :pgw_c,
online_charging: %{
enabled: true,
timeout_action: :block,
no_credit_action: :terminate,
quota_threshold_percentage: 0.8
}

الاختبار/التطوير:

config :pgw_c,
online_charging: %{
enabled: false # تعطيل للاختبار
}

الهجين (بعض المدفوعين مسبقًا، وبعض المدفوعين لاحقًا):

config :pgw_c,
online_charging: %{
enabled: true, # يتم التحكم فيه لكل مشترك بواسطة PCRF
timeout_action: :allow, # لا تحظر المدفوعين لاحقًا عند فشل OCS
no_credit_action: :terminate
}

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

جلسة ناجحة مع الشحن عبر الإنترنت

إعادة تفويض الحصة (CCR-Update)

استنفاد الائتمان (الوحدة النهائية)

معالجة مهلة OCS


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

رموز النتائج

رموز النجاح:

الرمزالاسمالإجراء
2001DIAMETER_SUCCESSالاستمرار مع الحصة الممنوحة

الأخطاء المؤقتة (4xxx):

الرمزالاسمإجراء PGW-C
4010DIAMETER_TOO_BUSYإعادة المحاولة مع التراجع
4011DIAMETER_UNABLE_TO_COMPLYتسجيل الخطأ، قد تعيد المحاولة
4012DIAMETER_CREDIT_LIMIT_REACHEDإنهاء أو إعادة توجيه

الأخطاء الدائمة (5xxx):

الرمزالاسمإجراء PGW-C
5003DIAMETER_AUTHORIZATION_REJECTEDرفض الجلسة
5031DIAMETER_USER_UNKNOWNرفض الجلسة (مشترك غير صالح)

رموز النتائج لكل خدمة

مهم: يمكن أن يظهر Result-Code في مستويين:

  1. مستوى الرسالة - النتيجة العامة
  2. مستوى MSCC - نتيجة لكل خدمة

مثال:

CCA-Initial
├── Result-Code: DIAMETER_SUCCESS (2001) ← مستوى الرسالة: OK
└── Multiple-Services-Credit-Control
├── [مجموعة التصنيف: 100]
│ └── Result-Code: DIAMETER_SUCCESS (2001) ← RG 100: OK
└── [مجموعة التصنيف: 200]
└── Result-Code: DIAMETER_CREDIT_LIMIT_REACHED (4012) ← RG 200: لا ائتمان

سلوك PGW-C:

  • السماح بحركة المرور لمجموعة التصنيف 100
  • حظر حركة المرور لمجموعة التصنيف 200

التكامل مع Gx

تحدد واجهة Gx (التحكم في سياسة PCRF) ما إذا كان الشحن عبر الإنترنت مطلوبًا وتوفر مجموعة التصنيف التي تحرك شحن Gy. انظر واجهة Diameter Gx لوثائق التحكم في السياسة الكاملة.

العلاقة بين Gx و Gy

تدفق التكامل

1. إعداد الحامل:

يتلقى PGW-C طلب إنشاء جلسة

إرسال CCR-I إلى PCRF (Gx)

استلام CCA-I مع قواعد PCC

تحليل قواعد PCC:
- هل تحتوي القاعدة على مجموعة تصنيف؟
- هل عبر الإنترنت = 1؟

إذا كان الجواب نعم:
إرسال CCR-I إلى OCS (Gy) مع مجموعة التصنيف

استلام CCA-I مع الحصة

إذا تم منح الحصة: تابع
إذا لم يكن هناك ائتمان: رفض الحامل
إذا كان الجواب لا:
تابع بدون شحن عبر الإنترنت

2. تحديث السياسة الديناميكية (RAR من PCRF):

يرسل PCRF RAR (طلب إعادة التفويض) على Gx

إضافة قاعدة PCC جديدة مع عبر الإنترنت=1، مجموعة التصنيف=200

يرسل PGW-C CCR-U إلى OCS (Gy)
- إضافة MSCC لمجموعة التصنيف 200

يمنح OCS حصة للخدمة الجديدة

تثبيت حامل مخصص مع شحن عبر الإنترنت

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

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

1. مهلات CCR-Initial إلى OCS

الأعراض:

  • تفشل الجلسات مع "مهلة OCS"
  • السجل: "مهلة CCR-Initial (Gy)"

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

  • OCS غير قابل للوصول
  • عنوان OCS غير صحيح في التكوين
  • جدار الحماية يحظر منفذ Diameter (3868)
  • OCS محملة

الحل:

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

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

# تحقق من التكوين
# تأكد من تكوين نظير OCS في peer_list

2. الجلسات المرفوضة بواسطة OCS

الأعراض:

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

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

رمز النتيجةالسبب المحتملالحل
4012تم الوصول إلى حد الائتمانيحتاج المشترك إلى الشحن
5003تم رفض التفويضتحقق من أذونات المشترك
5031المستخدم غير معروفتوفير المشترك في OCS

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

  1. تحق�� من سجلات OCS لمعرفة سبب الرفض
  2. تحقق من رصيد المشترك في OCS
  3. تحقق من أن IMSI/MSISDN في CCR-I يتطابق مع سجل المشترك

3. عدم اكتشاف استنفاد الحصة

الأعراض:

  • يواصل المستخدم استخدام البيانات بعد نفاد الرصيد
  • لم يتم إرسال CCR-Update

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

  • URR (قاعدة تقرير الاستخدام) غير مثبتة في PGW-U
  • العتبة غير مكونة بشكل صحيح
  • لم يتم استلام تقارير جلسة PFCP

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

  1. تحقق من URR في إنشاء جلسة PFCP:

    إنشاء URR
    ├── URR-ID: 1
    ├── Measurement-Method: VOLUME
    ├── Volume-Threshold: 8000000 (8 ميغابايت)
    └── Reporting-Triggers: VOLUME_THRESHOLD
  2. تحقق من سجلات PGW-U لتقارير الاستخدام

  3. تحقق من quota_threshold_percentage في التكوين

4. مجموعة التصنيف غير الصحيحة

الأعراض:

  • يرفض OCS مع "مجموعة تصنيف غير معروفة"
  • تفشل الجلسات

السبب:

  • مجموعة التصنيف في CCR-I لا تتطابق مع تكوين OCS
  • PCRF زود مجموع�� تصنيف غير صالحة

الحل:

  1. تحقق من مجموعة التصنيف في قاعدة PCC من PCRF
  2. تحقق من تكوين OCS لمجموعات التصنيف الصالحة
  3. تأكد من التوافق بين قواعد PCC والتعريفات في OCS

المراقبة

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

# معدلات رسائل Gy
rate(gy_inbound_messages_total{message_type="cca"}[5m])
rate(gy_outbound_messages_total{message_type="ccr"}[5m])

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

# أحداث استنفاد الحصة
rate(gy_quota_exhausted_total[5m])

# معدل مهلة OCS
rate(gy_timeout_total[5m])

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

التنبيهات

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

# تنبيه على مهلة OCS
- alert: OcsTimeout
expr: rate(gy_timeout_total[5m]) > 0.05
for: 2m
annotations:
summary: "تحدث مهلات OCS"

# تنبيه على ارتفاع معدل استنفاد الائتمان
- alert: CreditExhaustionSpike
expr: rate(gy_quota_exhausted_total[5m]) > 10
for: 5m
annotations:
summary: "ارتفاع معدل استنفاد الائتمان"

واجهة المستخدم على الويب - محاكي التحكم في الائتمان Gy

يتضمن OmniPGW محاكي Gy/Ro مدمج لاختبار وظيفة الشحن عبر الإنترنت دون الحاجة إلى OCS خارجي.

الوصول: http://<omnipgw-ip>:<web-port>/gy_simulator

محاكي التحكم في الائتمان Gy

الغرض: اختبار ومحاكاة سيناريوهات الشحن عبر الإنترنت للمشتركين المدفوعين مسبقًا

الميزات:

1. معلمات الطلب

  • IMSI - هوية المشترك (مثل "310170123456789")
  • MSISDN - رقم الهاتف (مثل "14155551234")
  • الوحدات المطلوبة - مقدار الحصة المطلوبة (بالبايت)
  • معرف الخدمة - معرف نوع الخدمة
  • مجموعة التصنيف - فئة الشحن

2. محاكاة CCR-I

  • إرسال CCR-Initial (طلب التحكم في الائتمان الأولي)
  • يحاكي طلب الحصة الأولية أثناء إنشاء الجلسة
  • يختبر تكامل OCS دون حركة مرور حية

3. حالات الاستخدام

  • اختبار التطوير - اختبار واجهة Gy أثناء التطوير
  • تكامل OCS - التحقق من الاتصال واستجابات OCS
  • اختبار الحصة - اختبار سيناريوهات حصة مختلفة
  • استكشاف الأخطاء - تصحيح مشكلات الشحن
  • عرض توضيحي - عرض الشحن عبر الإنترنت لأصحاب المصلحة

كيفية الاستخدام:

1. أدخل تفاصيل المشترك (IMSI، MSISDN)
2. اضبط الوحدات المطلوبة (مثل 1000000 لـ 1 ميغابايت)
3. تكوين معرف الخدمة ومجموعة التصنيف
4. انقر على "إرسال CCR-I"
5. عرض استجابة OCS والحصة الممنوحة

الفوائد:

  • لا حاجة لـ OCS خارجي أثناء الاختبار
  • تحقق سريع من منطق الشحن
  • بيئة اختبار آمنة
  • مفيدة للتدريب والعروض التوضيحية

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

الشحن والسياسة

إدارة الجلسات

العمليات


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