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

شحن القطر عبر الإنترنت (واجهة 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وحدات مخصصةSMS، MMS، مكالمات 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 (Multiple-Services-Credit-Control) متعددة:
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=SMS100=عادي، 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 غير قابل للوصول
  • عنوان IP غير صحيح لـ 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 خارجي أثناء الاختبار
  • تحقق سريع من منطق الشحن
  • بيئة اختبار آمنة
  • مفيدة للتدريب والعروض التوضيحية

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

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

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

العمليات


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