# AVP في DIAMETER وأنواع البيانات وResult-Code

> تحمل AVP (أزواج السمة والقيمة) كل بيانات DIAMETER. لكلٍّ منها رمز AVP، وثُماني رايات (V للمورّد، وM للإلزامي، وP محجوز)، وطول، وVendor-Id اختياري، وقيمة مُنمّطة. تستخدم القيم أنواعًا أساسية مثل Unsigned32 وOctetString وAddress وTime وEnumerated وGrouped. وتُبلّغ AVP من نوع Result-Code وExperimental-Result عن النتائج.

- الرابط الأساسي: https://www.broadnet.me/ar/reference/diameter-avps-and-message-format
- اللغة: ar
- آخر تحديث: 2026-07-18
- الناشر: BroadNet (https://www.broadnet.me)

تشريح AVP في DIAMETER: الرمز، ورايات V/M/P، والطول، وVendor-Id الاختياري والبيانات؛ وأنواع البيانات الأساسية (Enumerated وUnsigned32 وOctetString وAddress وTime)؛ وAVP المُجمّعة؛ ونموذج الأخطاء Result-Code / Experimental-Result.

## بنية AVP

تُرمَّز كل قطعة بيانات في DIAMETER — الهويّات وحقول الاشتراك والحصص والنتائج — على هيئة AVP. تبدأ AVP برمز AVP بعرض 32 بت، ثم ثُماني رايات، وطول بعرض 24 بت يشمل AVP بأكملها، وVendor-Id اختياري بعرض 32 بت، والقيمة محشوّة إلى حدّ 4 ثُمانيات. رمز AVP بمفرده فريد ضمن الفضاء الذي يديره IETF؛ وعند ضبط الراية V (خاص بالمورّد) يُفسَّر الرمز عوضًا عن ذلك ضمن فضاء ترقيم Vendor-Id الذي يليه — وهكذا يُعرّف 3GPP (بالمعرّف Vendor-Id قيمته 10415) مئات AVP التي تستخدمها S6a وGx وCx دون تعارض مع البروتوكول الأساسي.

*صيغة AVP وفق RFC 6733*

```text
0                   1                   2                   3
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                         AVP Code (32)                      |
| V M P r r r r r|                AVP Length (24)            |
|              Vendor-Id (32)  — present only if V=1          |
|    Data ...  (padded to a 4-octet boundary)                |
```

## الرايات V وM وP

تحكم ثلاث رايات AVP كيف يجب أن يعامل المستقبِل AVP. الراية V (خاص بالمورّد) تُشير إلى أن Vendor-Id يليها وأن رمز AVP يقع في فضاء ذلك المورّد. والراية M (إلزامي) هي المهمّة: إذا ضُبطت M ولم يفهم المستقبِل AVP، فعليه رفض الرسالة كاملةً بالرمز DIAMETER_AVP_UNSUPPORTED (5001) — لذا فضبط M على نحوٍ خاطئ يكسر التوافقية، وتُرسَل AVP الخاصة بالمورّدين التي يمكن للتطبيق تجاهلها بأمان مع مسح M. أما P فكانت في الأصل علامةَ أمان طرف-إلى-طرف؛ وقد أهمل RFC 6733 هذا الاستخدام والبت الآن محجوز ويُضبَط على صفر.

*بتات رايات AVP*

| علامة | الاسم | المعنى عند ضبطه |
|---|---|---|
| V | Vendor-Specific | يوجد حقل Vendor-Id؛ والرمز ضمن نطاق ذلك المورّد |
| M | إلزامي | يجب أن يفهمه المستقبِل وإلا يرفض الرسالة (5001) |
| P | (محجوز) | كان سابقًا للأمان من طرف إلى طرف؛ أُهمل بموجب RFC 6733، ويُضبط على 0 |

## أنواع البيانات الأساسية

قيم AVP مُنمّطة بقوة. يُعرّف RFC 6733 مجموعة من الأنواع الأساسية وعدة أنواع مشتقّة مبنية من OctetString. تحمل الأنواع الصحيحة والموجَبة العدّادات والمعرّفات والتعدادات؛ ويحمل OctetString بياناتٍ ثنائية معتِمة أو مُهيكلة؛ وتضيف الأنواع المشتقّة دلالات يمكن للتطبيق التحقّق منها. يُرمّز Address عنوان IP مسبوقًا بفصيلة عنوان بطول ثُمانيّين. وTime هو عدّ ثوانٍ بعرض 32 بت على نمط NTP. وEnumerated هو Integer32 تُسمّي التطبيقُ قِيَمَه. ويحمل DiameterIdentity وDiameterURI أسماء نطاقات الأنداد والعناوين URI.

*أنواع بيانات AVP الشائعة في DIAMETER*

| النوع | الترميز | الاستخدام النموذجي |
|---|---|---|
| Unsigned32 / Integer32 | عدد صحيح 32-بت | العدادات، الحصص، Auth-Application-Id، Result-Code |
| Unsigned64 / Integer64 | عدد صحيح 64-بت | أحجام بالأوكتيت، عدادات كبيرة |
| OctetString | ثُمانيات مبهمة | حمولات ثنائية (متجهات المصادقة، TPDU) |
| UTF8String | OctetString | نص مقروء للبشر (User-Name، اسم المنتج) |
| Enumerated | Integer32 | مجموعات القيم المسماة (مثل RAT-Type، CC-Request-Type) |
| Address | سلسلة أوكتيت + عائلة | عناوين IPv4/IPv6 (Host-IP-Address، Framed-IP) |
| الوقت | Unsigned32 | الثواني منذ 1900 (Event-Timestamp) |
| DiameterIdentity | OctetString | اسم النطاق المؤهل للنظير (Origin-Host, Destination-Host) |
| Grouped | AVPs متداخلة | AVPs تحتوي على AVPs أخرى |

## AVP المُجمّعة

تحمل AVP المُجمّعة، كقيمة لها، قائمةً متسلسلة من AVP أخرى — فتتداخل السجلات المُهيكلة بنظافة دون قواعد سلكية جديدة. تحمل Subscription-Data في S6a، وCharging-Rule-Install في Gx، وExperimental-Result، جميعُها AVP فرعية داخل مجموعة. والتجميع تعاودي: يمكن أن تحتوي AVP مُجمّعة على AVP مُجمّعة أخرى، وهكذا يُعبَّر عن ملف اشتراك LTE كامل أو مجموعة من قواعد PCC بوصفها AVP واحدة على المستوى الأعلى. وتحتفظ كل AVP محتواة برمزها ورايتها وطولها الخاص، فيُحلّل المستقبِل المجموعة بالآلية نفسها التي يستخدمها في المستوى الأعلى.

## Result-Code وExperimental-Result

يُبلّغ DIAMETER عن نتيجة الطلب في الاستجابة. AVP الأساسية Result-Code (الرمز 268) هي Unsigned32 مُجمّعة في نطاقات بحسب الرقم الأول: 1xxx إعلامي، و2xxx نجاح، و3xxx أخطاء بروتوكولية (من وسيط/مُرحّل)، و4xxx إخفاقات عابرة قد يُعيد العميلُ محاولتها، و5xxx إخفاقات دائمة. وعندما يحتاج تطبيقٌ إلى خطأ خاص بالمورّد لا يستطيع Result-Code الأساسي التعبير عنه، يستخدم AVP من نوع Experimental-Result (الرمز 297) — وهي AVP مُجمّعة تحمل Vendor-Id إضافةً إلى Experimental-Result-Code — وهكذا يُشير 3GPP إلى أخطاء مثل DIAMETER_ERROR_USER_UNKNOWN أو DIAMETER_ERROR_ROAMING_NOT_ALLOWED.

*نطاقات Result-Code والقيم الشائعة*

| النطاق | الفئة | مثال |
|---|---|---|
| 1xxx | معلوماتي | 1001 DIAMETER_MULTI_ROUND_AUTH |
| 2xxx | تم بنجاح | 2001 DIAMETER_SUCCESS |
| 3xxx | خطأ في البروتوكول (الوكيل) | 3002 UNABLE_TO_DELIVER, 3007 APPLICATION_UNSUPPORTED |
| 4xxx | فشل مؤقت (إعادة المحاولة) | 4181 AUTHENTICATION_DATA_UNAVAILABLE (3GPP) |
| 5xxx | فشل دائم | 5001 AVP_UNSUPPORTED, 5012 UNABLE_TO_COMPLY |

## الأسئلة الشائعة

### ما هي AVP في DIAMETER؟

AVP (زوج السمة والقيمة) هي وحدة البيانات في كل رسالة DIAMETER. تحمل رمز AVP، وثُماني رايات (V وM وP)، وطولًا، وVendor-Id اختياري، وقيمة مُنمّطة. تُرمَّز جميع الهويّات وحقول الاشتراك والحصص والنتائج على هيئة AVP، والرسالة هي ترويسة تتبعها قائمة منها.

### ماذا تفعل الراية M (الإلزامية)؟

إذا ضُبطت الراية M ولم يفهم المستقبِل تلك AVP، فعليه رفض الرسالة كاملةً بالرمز DIAMETER_AVP_UNSUPPORTED (5001). ولهذا تُرسَل AVP التي يمكن للندّ تجاهلها بأمان مع مسح M. وسوء استخدام بت M سبب شائع لإخفاقات التوافقية بين المورّدين.

### ما هي AVP المُجمّعة؟

AVP المُجمّعة هي AVP قيمتها في ذاتها قائمة من AVP، فتسمح بتداخل السجلات المُهيكلة. وSubscription-Data وCharging-Rule-Install وExperimental-Result كلها AVP مُجمّعة. والتجميع تعاودي، فيمكن حمل ملف اشتراك LTE كامل أو مجموعة قواعد PCC بوصفها AVP واحدة على المستوى الأعلى.

### كيف تُعرَّف AVP الخاصة بالمورّد؟

عبر الراية V إضافةً إلى حقل Vendor-Id. عند ضبط V، يلي الطولَ حقلُ Vendor-Id بعرض 32 بت ويُفسَّر رمز AVP ضمن فضاء ترقيم ذلك المورّد. ويستخدم 3GPP المعرّف Vendor-Id قيمته 10415 لتعريف AVP الخاصة بـ S6a وGx وCx وسائر واجهات التطبيقات.

### ما الفرق بين Result-Code وExperimental-Result؟

يحمل Result-Code (AVP رمزها 268) رموزَ النتائج الأساسية من IETF مُجمّعةً على هيئة 1xxx/2xxx/3xxx/4xxx/5xxx. أما Experimental-Result (AVP رمزها 297) فهي AVP مُجمّعة بها Vendor-Id وExperimental-Result-Code، وتُستخدم حين يحتاج تطبيقٌ إلى خطأ خاص بالمورّد مثل DIAMETER_ERROR_USER_UNKNOWN لدى 3GPP.

### ماذا تعني نطاقات رموز النتائج في DIAMETER؟

1xxx إعلامي، و2xxx نجاح (2001 DIAMETER_SUCCESS)، و3xxx خطأ بروتوكولي يُثيره عادةً وسيط، و4xxx إخفاق عابر قد يُعيد العميلُ محاولته، و5xxx إخفاق دائم. ويُخبر الرقمُ الأول العميلَ ما إذا كان عليه إعادة المحاولة أو الإخفاق أو إعادة التوجيه.

## المصادر

- [IETF RFC 6733 — Diameter Base Protocol (AVPs, section 4)](https://datatracker.ietf.org/doc/html/rfc6733)
- [3GPP TS 29.272 — S6a/S6d AVP definitions](https://www.3gpp.org/dynareport/29272.htm)

## ذو صلة

- [بروتوكول DIAMETER الأساسي (RFC 6733)](https://www.broadnet.me/ar/reference/diameter-base-protocol)
- [DIAMETER مقابل RADIUS](https://www.broadnet.me/ar/reference/diameter-vs-radius)
- [DIAMETER S6a/S6d نحو HSS](https://www.broadnet.me/ar/reference/diameter-s6a-s6d-hss)
- [سياسة وفوترة DIAMETER عبر Gx/Gy](https://www.broadnet.me/ar/reference/diameter-gx-gy-policy-charging)
- [المطوّرون](https://www.broadnet.me/ar/developers)
