شحن القطر عبر الإنترنت (واجهة Gy/Ro)
واجهة نظام الشحن عبر الإنترنت (OCS)
جدول المحتويات
- نظرة عامة
- معمارية الشحن 3GPP
- أساسيات واجهة Gy/Ro
- رسائل التحكم في الائتمان
- تدفقات الشحن عبر الإنترنت
- التحكم في شحن الناقل
- التحكم في ائتمان الخدمات المتعددة
- التكوين
- تدفقات الرسائل
- معالجة الأخطاء
- التكامل مع Gx
- استكشاف الأخطاء وإصلاحها
نظرة عامة
تربط واجهة Gy (المعروفة أيضًا باسم واجهة Ro في سياقات IMS) PGW-C بنظام الشحن عبر الإنترنت (OCS) للتحكم في الائتمان في الوقت الفعلي. وهذا يمكّن من:
- الشحن المسبق - تفويض الائتمان والخصم في الوقت الفعلي
- التحكم في الائتمان في الوقت الفعلي - منح الحصة قبل تقديم الخدمة
- الشحن القائم على الخدمة - شحن مختلف للمكالمات الصوتية والبيانات والرسائل القصيرة، إلخ.
- تحديثات الحساب الفورية - تحديثات رصيد الائتمان في الوقت الفعلي
- رفض الخدمة - حظر الخدمة عند نفاد الائتمان
الشحن عبر الإنترنت مقابل الشحن غير المتصل
| الجانب | الشحن عبر الإنترنت (Gy/Ro) | الشحن غير المتصل (Gz/Rf) |
|---|---|---|
| التوقيت | في الوقت الفعلي، قبل الخدمة | بعد تقديم الخدمة |
| حالة الاستخدام | المشتركين مسبقي الدفع | المشتركين لاحقي الدفع |
| التحقق من الائتمان | نعم، قبل منح الخدمة | لا، يتم إصدار الفاتورة لاحقًا |
| النظام | OCS (نظام الشحن عبر الإنت��نت) | CGF/CDF (وظيفة بيانات الشحن) |
| المخاطر | لا خسارة في الإيرادات | خطر الفواتير غير المدفوعة |
| التعقيد | عالي (متطلبات الوقت الفعلي) | أقل (معالجة دفعات) |
| أثر المستخدم | يتم رفض الخدمة إذا لم يكن هناك ائتمان | الخدمة متاحة دائمًا |
انظر أيضًا: تنسيق CDR للبيانات لسجلات الشحن غير المتصل (الفوترة لاحقة الدفع)
انظر أيضًا: إدارة الجلسات لدورة حياة جلسة PDN الكاملة بما في ذلك تكامل الشحن
Gy في معمارية الشبكة
الوظائف الرئيسية
| الوظيفة | الوصف |
|---|---|
| تفويض الائتمان | طلب حصة من OCS قبل السماح بحركة المرور |
| إدارة الحصة | تتبع الوحدات الممنوحة (بايت، وقت، أحداث) |
| كشف استنفاد الائتمان | مراقبة الحصة المتبقية |
| إعادة التفويض | طلب حصة إضافية عند الوصول إلى العتبة |
| إنهاء الخدمة | إيقاف الخدمة عند نفاد الائتمان |
| التسوية النهائية | الإبلاغ عن الاستخدام الفعلي عند انتهاء الجلسة |
معمارية الشحن 3GPP
نقاط مرجعية للشحن
وظيفة تحفيز الشحن (CTF)
يعمل PGW-C كـ CTF (وظيفة تحفيز الشحن)، المسؤولة عن:
- كشف الأحداث القابلة للشحن - بدء الجلسة، استخدام البيانات، انتهاء الجلسة
- طلب تفويض الائتمان - قبل السماح بالخدمة
- تتبع استهلاك الحصة - مراقبة الوحدات الممنوحة
- إنشاء أحداث الشحن - تحفيز طلبات الائتمان
- فرض التحكم في الائتمان - حظر حركة المرور عند نفاد الحصة
وظيفة الشحن عبر الإنترنت (OCF)
ينفذ OCS OCF (وظيفة الشحن عبر الإنترنت):
- إدارة رصيد الحساب - تتبع ائتمان المشترك
- التسعير - تحديد السعر لكل وحدة (لكل ميغابايت، لكل ثانية، إلخ.)
- حجز الائتمان - حجز الائتمان للحصة الممنوحة
- خصم الائتمان - الخصم عند الإبلاغ عن الاستخدام
- قرارات السياسة - منح أو رفض بناءً على الرصيد
أساسيات واجهة 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-Id | 263 | UTF8String | معرف جلسة Gy الفريد |
| Auth-Application-Id | 258 | Unsigned32 | 4 (التحكم في الائتمان) |
| Origin-Host | 264 | DiamIdent | هوية Diameter لـ PGW-C |
| Origin-Realm | 296 | DiamIdent | مجال Diameter لـ PGW-C |
| Destination-Realm | 283 | DiamIdent | مجال OCS |
| CC-Request-Type | 416 | Enumerated | 1 = INITIAL_REQUEST |
| CC-Request-Number | 415 | Unsigned32 | رقم التسلسل (يبدأ من 0) |
| Subscription-Id | 443 | Grouped | معرف UE (IMSI/MSISDN) |
| Service-Context-Id | 461 | UTF8String | معرف سياق الشحن |
| Multiple-Services-Credit-Control | 456 | Grouped | طلبات ائتمان خاصة بالخدمة |
| Requested-Service-Unit | 437 | Grouped | الحصة المطلوبة (بايت، وقت، إلخ.) |
| Used-Service-Unit | 446 | Grouped | الحصة المستخدمة (0 للأولي) |
| Service-Identifier | 439 | Unsigned32 | معرف نوع الخدمة |
| Rating-Group | 432 | Unsigned32 | معرف فئة الشحن |
مثال على هيكل 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-Code | 268 | النجاح (2001) أو رمز خطأ |
| Multiple-Services-Credit-Control | 456 | منح ائتمان خاص بالخدمة |
| Granted-Service-Unit | 431 | الحصة الممنوحة (بايت، وقت، إلخ.) |
| Validity-Time | 448 | فترة صلاحية الحصة (ثواني) |
| Result-Code | 268 | رمز نتيجة لكل خدمة |
| Final-Unit-Indication | 430 | الإجراء عند نفاد الحصة |
| 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 |
|---|---|---|
| TERMINATE | 0 | حظر كل حركة المرور، بدء إنهاء الجلسة |
| REDIRECT | 1 | إعادة توجيه حركة المرور إلى البوابة (مثل صفحة الشحن) |
| RESTRICT_ACCESS | 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: REDIRECT (1)
└── Redirect-Server (Grouped)
├── Redirect-Address-Type: URL (2)
└── Redirect-Server-Address: "http://topup.example.com"
إجراءات PGW-C:
- TERMINATE: إرسال CCR-T، حذف الناقل
- REDIRECT: تثبيت قاعدة PFCP لإعادة توجيه HTTP إلى عنوان الشحن
- 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-Group | 432 | Unsigned32 | فئة الشحن (تتوافق مع التعريفة في OCS) |
| Online | 1009 | 0=تعطيل، 1=تمكين | تمكين الشحن عبر الإنترنت (Gy) |
| Offline | 1008 | 0=تعطيل، 1=تمكين | تمكين الشحن غير المتصل (Gz) |
| Metering-Method | 1007 | 0=مدة، 1=حجم، 2=كلاهما | ما يجب قياسه |
| Reporting-Level | 1011 | 0=خدمة، 1=مجموعة التصنيف | دقة تقارير الاستخدام |
مصفوفة قرار شحن الناقل
| عبر الإنترنت | غير متصل | مجموعة التصنيف | السلوك |
|---|---|---|---|
| 1 | 0 | موجودة | شحن عبر الإنترنت فقط (مسبق الدفع) |
| 0 | 1 | موجودة | شحن غير متصل فقط (لاحق الدفع) |
| 1 | 1 | موجودة | كلا الشحنين عبر الإنترنت وغير المتصل (متقارب) |
| 0 | 0 | - | لا شحن (خدمة مجانية) |
مجموعات التصنيف المتعددة
يمكن أن يحتوي اتصال 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-Identifier | Rating-Group |
|---|---|---|
| الغرض | يحدد نوع الخدمة | يحدد فئة الشحن |
| المثال | 1=بيانات، 2=صوت، 3=SMS | 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 إلى OCSfalse: الشحن عبر الإنترنت معطل، لا رسائل 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
معالجة الأخطاء
رموز النتائج
رموز النجاح:
| الرمز | الاسم | الإجراء |
|---|---|---|
| 2001 | DIAMETER_SUCCESS | المتابعة مع الحصة الممنوحة |
الأخطاء المؤقتة (4xxx):
| الرمز | الاسم | إجراء PGW-C |
|---|---|---|
| 4010 | DIAMETER_TOO_BUSY | إعادة المحاولة مع التراجع |
| 4011 | DIAMETER_UNABLE_TO_COMPLY | تسجيل الخطأ، قد تعيد المحاولة |
| 4012 | DIAMETER_CREDIT_LIMIT_REACHED | إنهاء أو إعادة توجيه |
الأخطاء الدائمة (5xxx):
| الرمز | الاسم | إجراء PGW-C |
|---|---|---|
| 5003 | DIAMETER_AUTHORIZATION_REJECTED | رفض الجلسة |
| 5031 | DIAMETER_USER_UNKNOWN | رفض الجلسة (مشترك غير صالح) |
رموز النتائج لكل خدمة
مهم: يمكن أن يظهر Result-Code على مستويين:
- مستوى الرسالة - النتيجة العامة
- مستوى 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 |
خطوات التصحيح:
- تحقق من سجلات OCS لسبب الرفض
- تحقق من رصيد المشترك في OCS
- تحقق من أن IMSI/MSISDN في CCR-I يتطابق مع سجل المشترك
3. عدم اكتشاف نفاد الحصة
الأعراض:
- يستمر المستخدم في استخدام البيانات بعد نفاد الرصيد
- لم يتم إرسال CCR-Update
الأسباب المحتملة:
- لم يتم تثبيت URR (قاعدة تقرير الاستخدام) في PGW-U
- لم يتم تكوين العتبة بشكل صحيح
- لم يتم استلام تقارير جلسة PFCP
خطوات التصحيح:
-
تحقق من URR في إنشاء جلسة PFCP:
إنشاء URR
├── URR-ID: 1
├── Measurement-Method: VOLUME
├── Volume-Threshold: 8000000 (8 ميغابايت)
└── Reporting-Triggers: VOLUME_THRESHOLD -
تحقق من سجلات PGW-U لتقارير الاستخدام
-
تحقق من
quota_threshold_percentageفي التكوين
4. مجموعة التصنيف غير الصحيحة
الأعراض:
- يرفض OCS مع "مجموعة التصنيف غير معروفة"
- تفشل الجلسات
السبب:
- مجموعة التصنيف في CCR-I لا تتطابق مع تكوين OCS
- قدم PCRF مجموعة تصنيف غير صالحة
الحل:
- تحقق من مجموعة التصنيف في قاعدة PCC من PCRF
- تحقق من تكوين OCS لمجموعات التصنيف الصالحة
- تأكد من التخطيط بين قواعد 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

الغرض: اختبار ومحاكاة سيناريوهات الشحن عبر الإنترنت للمشتركين مسبقي الدفع
الميزات:
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 خارجي أثناء الاختبار
- تحقق سريع من منطق الشحن
- بيئة اختبار آمنة
- مفيدة للتدريب والعروض التوضيحية
الوثائق ذات الصلة
الشحن والسياسة
- واجهة Diameter Gx - التحكم في سياسة PCRF، قواعد PCC التي تحفز الشحن عبر الإنترنت
- تنسيق CDR للبيانات - سجلات الشحن غير المتصل للفوترة لاحقة الدفع
- دليل التكوين - معلمات تكوين الشحن عبر الإنترنت الكاملة
إدارة الجلسات
- إدارة الجلسات - دورة حياة جلسة PDN، إدارة الناقل
- واجهة PFCP - تقرير الاستخدام من PGW-U عبر URRs
- واجهة S5/S8 - ��عداد الناقل GTP-C وإزالته
العمليات
- دليل المراقبة - مقاييس Gy، تتبع الحصة، تنبيهات مهلة OCS
- تخصيص IP لجهاز UE - تكوين مجموعة IP للجلسات المشحونة