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

شحن الإنترنت عبر واجهة 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 يتطلب شحنًا عبر الإنترنت له جلسة 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 (Multiple-Services-Credit-Control) 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,
gy: %{
# تمكين أو تعطيل الشحن عبر الإنترنت عالميًا
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,
gy: %{
enabled: true,
timeout_action: :block,
no_credit_action: :terminate,
quota_threshold_percentage: 0.8
}

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

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

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

config :pgw_c,
gy: %{
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 جديدة مع Online=1، Rating-Group=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 خارجي أثناء الاختبار
  • تحقق سريع من منطق الشحن
  • بيئة اخت��ار آمنة
  • مفيدة للتدريب والعروض

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

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

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

العمليات


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