خيارات تكوين البروتوكول (PCO)
معلمات الشبكة المرسلة إلى UE
OmniPGW من خدمات شبكة Omnitouch
نظرة عامة
PCO (خيارات تكوين البروتوكول) هي معلمات الشبكة المرسلة إلى UE (الجهاز المحمول) أثناء إنشاء اتصال PDN. تمكّن هذه المعلمات UE من الوصول إلى خدمات الشبكة مثل DNS وIMS وتكوين إعدادات الشبكة.
حاويات PCO التي يرسلها OmniPGW (الشبكة → MS):
| IE Name | Container ID | Description | Required |
|---|---|---|---|
| DNS Server IPv4 Address | 0x000D | Primary DNS | Yes |
| DNS Server IPv4 Address | 0x000D | Secondary DNS | Optional |
| DNS Server IPv6 Address | 0x0003 | Primary/Secondary DNS (IPv6) | Optional |
| P-CSCF IPv4 Address | 0x000C | P-CSCF for IMS (one container per address) | Optional (IMS) |
| P-CSCF IPv6 Address | 0x0001 | P-CSCF for IMS (one container per address) | Optional (IMS) |
| IPv4 Link MTU | 0x0010 | Maximum transmission unit | Recommended |
DNS/NBNS عبر IPCP. عندما يطلب UE خوادم DNS (و NBNS/WINS) باستخدام IPCP (بروتوكول التحكم في الإنترنت، الحاوية
0x8021) طلب التكوين بدلاً من حاوية DNS العارية، يرد OmniPGW داخل IPCP Configure-Nak يحمل العناوين المكونة كخيارات IPCPms_dns1/ms_dns2وms_wins1/ms_wins2(RFC 1877). لذلك يتم تسليم NBNS/WINS فقط عبر هذا المسار IPCP — لا توجد حاوية PCO مستقلة لـ NBNS (0x0011) تم إصدارها. يتم استخدام Configure-Nak (ليس Ack) لأن PGW يزود عناوين تختلف عن العناصر النائبة0.0.0.0الخاصة بـ UE، و الرد يعكس معرف IPCP لطلب (RFC 1661 §5).
IPv4 و IPv6 P-CSCF / DNS؛ لا يوجد E-CSCF. يرد OmniPGW على كل من IPv4 و IPv6 طلبات عنوان P-CSCF، حيث يقوم بتوجيه كل عنوان مكتشف أو مكون إلى الحاوية المطابقة لعائلته: تذهب عناوين IPv4 في
0x000C، وتذهب عناوين IPv6 في0x0001. يتم تقديم طلب P-CSCF IPv6 (p_cscf_ipv6_address_request) منp_cscf_ipv6_address_list(أو عناوين IPv6 التي تم إرجاعها بواسطة DNS/AAAA الاكتشاف)، ويتم تقديم طلب DNS IPv6 (dns_server_ipv6_address_request) في الحاوية0x0003منprimary_dns_server_ipv6_address/secondary_dns_server_ipv6_address. لا يتم خلط عائلات العناوين عبر الحاويات. لا توجد معالجة لحاوية E-CSCF. ينطبق كل ما سبق بالتساوي على APCO (PCO الإضافي).
التكوين
التكوين الأساسي
# config/runtime.exs
config :pgw_c,
pco: %{
# خوادم DNS (مطلوبة)
primary_dns_server_address: "8.8.8.8",
secondary_dns_server_address: "8.8.4.4",
# خوادم DNS IPv6 (اختياري، الحاوية 0x0003)
primary_dns_server_ipv6_address: nil,
secondary_dns_server_ipv6_address: nil,
# خوادم NBNS (اختياري، لأجهزة Windows)
primary_nbns_server_address: nil,
secondary_nbns_server_address: nil,
# عناوين P-CSCF لـ IMS/VoLTE (اختياري)
p_cscf_ipv4_address_list: [], # الحاوية 0x000C
p_cscf_ipv6_address_list: [], # الحاوية 0x0001
# اكتشاف P-CSCF الديناميكي (اختياري؛ يحل سجلات A و AAAA)
p_cscf_discovery_enabled: false,
p_cscf_discovery_dns_server: nil,
p_cscf_discovery_timeout_ms: 5000,
# حجم MTU IPv4 (بايت)
ipv4_link_mtu_size: 1400
}
معلمات PCO
عناوين خادم DNS
DNS الأساسي والثانوي:
pco: %{
primary_dns_server_address: "8.8.8.8",
secondary_dns_server_address: "8.8.4.4"
}
مقدمو DNS الشائعون:
| Provider | Primary | Secondary |
|---|---|---|
| 8.8.8.8 | 8.8.4.4 | |
| Cloudflare | 1.1.1.1 | 1.0.0.1 |
| Quad9 | 9.9.9.9 | 149.112.112.112 |
| OpenDNS | 208.67.222.222 | 208.67.220.220 |
DNS الخاص:
pco: %{
primary_dns_server_address: "10.0.0.10",
secondary_dns_server_address: "10.0.0.11"
}
عناوين P-CSCF (IMS)
لخدمات IMS/VoLTE:
pco: %{
p_cscf_ipv4_address_list: [
"10.0.0.50", # P-CSCF الأساسي (IPv4، الحاوية 0x000C)
"10.0.0.51" # P-CSCF الثانوي
],
# عناوين P-CSCF IPv6 (الحاوية 0x0001) لشبكات PDN IMS IPv6/IPv4v6
p_cscf_ipv6_address_list: [
"2001:db8::50",
"2001:db8::51"
]
}
يتم إصدار كل عنوان فقط في الحاوية المطابقة لعائلته، وفقط عندما
يطلب UE تلك العائلة — يتلقى طلب P-CSCF IPv4 الحاويات 0x000C
، ويتلقى طلب P-CSCF IPv6 الحاويات 0x0001. عادةً ما تطلب
شبكات PDN IMS ثنائية المكدس كلاهما.
P-CSCF (وظيفة التحكم في جلسات المكالمات الوكيلة):
- نقطة الدخول لإشارات IMS
- مطلوبة لـ VoLTE و VoWiFi و RCS
- يستخدم UE SIP عبر هذا الخادم
اكتشاف P-CSCF الديناميكي
اكتشاف P-CSCF القائم على DNS:
يدعم OmniPGW اكتشاف P-CSCF الديناميكي عبر استعلامات DNS كما هو محدد في 3GPP TS 23.003 و TS 24.229. عند التمكين، يمكن لـ PGW-C استعلام DNS عن عناوين P-CSCF بدلاً من استخدام التكوين الثابت.
pco: %{
# تمكين اكتشاف P-CSCF الديناميكي
p_cscf_discovery_enabled: true,
# خادم DNS لاستعلامات P-CSCF (كزوج)
p_cscf_discovery_dns_server: {10, 179, 2, 177},
# مهلة لاستعلامات DNS (بالملي ثانية)
p_cscf_discovery_timeout_ms: 5000,
# قائمة P-CSCF الثابتة (تستخدم كنسخة احتياطية إذا فشل DNS)
p_cscf_ipv4_address_list: ["10.0.0.50"]
}
كيف يعمل:
- عندما يكون
p_cscf_discovery_enabled: true، يقوم PGW-C بتنفيذ استعلامات DNS لعناوين P-CSCF - يتم إرسال استعلام DNS إلى
p_cscf_discovery_dns_serverالمكون - إذا نجح استعلام DNS، يتم إرسال عناوين P-CSCF المكتشفة إلى UE عبر PCO
- إذا فشل استعلام DNS أو انتهت المهلة، يتم الرجوع إلى
p_cscf_ipv4_address_listالثابتة - انظر مراقبة P-CSCF للحصول على تفاصيل المراقبة والقياسات
تدفق اكتشاف P-CSCF
أولوية الاكتشاف:
- اكتشاف FQDN لكل قاعدة (أعلى أولوية) -
p_cscf_discovery_fqdnفي قاعدة اختيار UPF - اكتشاف DNS العالمي -
p_cscf_discovery_enabled: trueفي تكوين PCO العالمي - قائمة PCO الثابتة للقاعدة -
p_cscf_ipv4_address_listفي تجاوز PCO القاعدة - قائمة PCO الثابتة العالمية (نسخة احتياطية) -
p_cscf_ipv4_address_listفي تكوين PCO العالمي
المراقبة:
يتم تسجيل جميع محاولات اكتشاف P-CSCF وتتبعها مع القياسات:
- معدلات نجاح/فشل استعلام DNS
- زمن اكتشاف
- إحصائيات استخدام النسخ الاحتياطية
- قياسات الاكتشاف لكل قاعدة وعالمية
انظر مراقبة P-CSCF للحصول على تفاصيل المراقبة الكاملة.
خيارات التكوين:
| Parameter | Type | Default | Description |
|---|---|---|---|
p_cscf_discovery_enabled | Boolean | false | تمكين اكتشاف P-CSCF الديناميكي القائم على DNS |
p_cscf_discovery_dns_server | Tuple (IP) | nil | عنوان IP لخادم DNS كزوج 4 (مثل {10, 179, 2, 177}) |
p_cscf_discovery_timeout_ms | Integer | 5000 | مهلة لاستعلامات DNS بالملي ثانية |
حالات الاستخدام:
- نشر IMS الديناميكي - تتغير عناوين P-CSCF بناءً على تكوين DNS
- توازن الحمل الجغرافي - يعيد DNS أقرب خوادم P-CSCF
- التوافر العالي - يعيد DNS تلقائيًا خوادم P-CSCF المتاحة
- بيئات متعددة المستأجرين - يحصل مشتركون مختلفون على خ��ادم P-CSCF مختلفة
مثال: IMS الإنتاج مع اكتشاف DNS
pco: %{
primary_dns_server_address: "10.0.0.10",
secondary_dns_server_address: "10.0.0.11",
# تمكين اكتشاف P-CSCF الديناميكي
p_cscf_discovery_enabled: true,
p_cscf_discovery_dns_server: {10, 179, 2, 177}, # خادم DNS IMS
p_cscf_discovery_timeout_ms: 3000,
# عناوين P-CSCF الاحتياطية (إذا فشل DNS)
p_cscf_ipv4_address_list: [
"10.0.0.50", # الاحتياطي الأساسي
"10.0.0.51" # الاحتياطي الثانوي
],
ipv4_link_mtu_size: 1400
}
اكتشاف P-CSCF لكل قاعدة:
يمكن أيضًا تكوين اكتشاف P-CSCF لكل قاعدة اختيار UPF. يسمح ذلك لمختلف APNs باستخدام خوادم DNS مختلفة لاكتشاف P-CSCF:
# في تكوين اختيار upf
rules: [
%{
name: "IMS Traffic",
priority: 20,
match_field: :apn,
match_regex: "^ims",
upf_pool: [...],
# اكتشاف P-CSCF لكل قاعدة
p_cscf_discovery_fqdn: "pcscf.mnc001.mcc001.3gppnetwork.org"
}
]
انظر تكوين اختيار UPF للحصول على تفاصيل حول اكتشاف P-CSCF لكل ��اعدة.
انظر أيضًا: مراقبة P-CSCF لمراقبة اكتشاف P-CSCF وصحته
خوادم NBNS (NetBIOS)
للتوافق مع أجهزة Windows:
pco: %{
primary_nbns_server_address: "10.0.0.20",
secondary_nbns_server_address: "10.0.0.21"
}
متى تستخدم:
- الشبكات المؤسسية مع أجهزة Windows
- دعم التطبيقات القديمة
- مطلوب حل اسم NetBIOS
حجم MTU للرابط
أقصى وحدة نقل:
pco: %{
ipv4_link_mtu_size: 1400 # بايت
}
قيم MTU الشائعة:
| MTU | استخدام الحالة |
|---|---|
| 1500 | Ethernet القياسي (بدون نفق) |
| 1400 | تم احتساب تكلفة نفق GTP |
| 1420 | تقليل التكلفة |
| 1280 | الحد الأدنى لـ IPv6 MTU |
| 1360 | بيئات VPN/نفق |
التوصية: استخدم 1400 لـ LTE لأخذ تكلفة GTP-U في الاعتبار.
أمثلة على التكوين
APN الإنترنت
pco: %{
primary_dns_server_address: "8.8.8.8",
secondary_dns_server_address: "8.8.4.4",
ipv4_link_mtu_size: 1400
}
APN IMS
pco: %{
primary_dns_server_address: "10.0.0.10",
secondary_dns_server_address: "10.0.0.11",
p_cscf_ipv4_address_list: [
"10.0.0.50",
"10.0.0.51"
],
ipv4_link_mtu_size: 1400
}
انظر: مراقبة P-CSCF لمراقبة معدلات نجاح تسجيل IMS وصحة P-CSCF
APN المؤسسي
pco: %{
primary_dns_server_address: "10.100.0.10",
secondary_dns_server_address: "10.100.0.11",
primary_nbns_server_address: "10.100.0.20",
secondary_nbns_server_address: "10.100.0.21",
ipv4_link_mtu_size: 1400
}
PCO في رسائل GTP-C
استجابة إنشاء الجلسة
يتضمن OmniPGW PCO في رسالة استجابة إنشاء الجلسة:
Create Session Response
├── Cause: Request accepted
├── UE IP Address: 100.64.1.42
├── PCO (Protocol Configuration Options)
│ ├── DNS Server IPv4 Address: 8.8.8.8
│ ├── DNS Server IPv4 Address: 8.8.4.4
│ ├── P-CSCF IPv4 Address: 10.0.0.50
│ ├── P-CSCF IPv4 Address: 10.0.0.51
│ └── IPv4 Link MTU: 1400
معالجة UE
يتلقى UE PCO و:
- يقوم بتكوين محلل DNS مع الخوادم المقدمة
- يسجل مع P-CSCF لخدمات IMS
- يحدد MTU الواجهة إلى القيمة ال��حددة
استكشاف الأخطاء وإصلاحها
المشكلة: لا يمكن لـ UE حل DNS
الأعراض:
- لدى UE عنوان IP ولكن لا يمكنه الوصول إلى الإنترنت
- فشل استعلامات DNS
الأسباب المحتملة:
- عناوين خادم DNS غير صحيحة في تكوين PCO
- خوادم DNS غير قابلة للوصول من مجموعة IP الخاصة بـ UE
- جدار الحماية يحظر حركة مرور DNS
الحل:
# اختبار الوصول إلى خادم DNS
ping 8.8.8.8
# اختبار حل DNS من شبكة UE
nslookup google.com 8.8.8.8
# تحقق من تكوين PCO
grep "primary_dns_server_address" config/runtime.exs
المشكلة: فشل تسجيل IMS
الأعراض:
- فشل مكالمات VoLTE
- يظهر UE "لا تسجيل IMS"
الأسباب المحتملة:
- تكوين P-CSCF مفقود
- عناوين IP لـ P-CSCF غير صحيحة
- P-CSCF غير قابل للوصول
الحل:
# تحقق من تكوين P-CSCF
pco: %{
p_cscf_ipv4_address_list: ["10.0.0.50"] # تأكد من عدم كونها فارغة
}
المشكلة: مشاكل MTU
الأعراض:
- تحميل بعض المواقع، بينم�� لا يتم تحميل الأخرى
- فشل نقل الملفات الكبيرة
- مشاكل التجزئة
الأسباب المحتملة:
- MTU كبير جدًا لتكلفة النفق
- MTU صغير جدًا مما يسبب تجزئة مفرطة
الحل:
# موصى به: 1400 لتكلفة GTP النفق
pco: %{
ipv4_link_mtu_size: 1400
}
# إذا كانت لا تزال تواجه مشاكل، جرب أقل
pco: %{
ipv4_link_mtu_size: 1360
}
أفضل الممارسات
تكوين DNS
-
استخدم خوادم DNS موثوقة
- عامة: Google (8.8.8.8)، Cloudflare (1.1.1.1)
- خاصة: DNS داخلي للمؤسسات
-
قم دائمًا بتكوين الثانوي
- يوفر النسخ الاحتياطي
- يحسن الموثوقية
-
اعتبر أمان DNS
- محللات قادرة على DNSSEC
- تصفية DNS للأمان
تكوين IMS
-
قدم P-CSCF متعددة
- على الأقل 2 للنسخ الاحتياطي
- توزيع جغرافي إذا أمكن
-
تأكد من إمكانية الوصول
- يجب أن يكون P-CSCF قابلاً للوصول من مجموعة IP الخاصة بـ UE
- اختبار الاتصال بـ SIP
تحسين MTU
-
خذ التكلفة في الاعتبار
- GTP-U: 36 بايت (IPv4)
- IPsec: متغير (50-100 بايت)
-
MTU القياسي لـ LTE
- موصى به: 1400 بايت
- يوازن بين الإنتاجية والتوافق
-
اختبار من النهاية إلى النهاية
- اكتشاف MTU للمسار
- اختبار مع حزم كبيرة
الوثائق ذات الصلة
أدلة التكوين
- دليل التكوين - مرجع كامل لـ runtime.exs، اختيار UPF مع تجاوزات PCO
- تخصيص IP لـ UE - إدارة مجموعة IP، تخصيص بناءً على APN
- مراقبة P-CSCF - مراقبة اكتشاف P-CSCF، تتبع الصحة، القياسات
إدارة الجلسات والواجهات
- إدارة الجلسات - دورة حياة جلسة PDN، إنشاء حامل
- واجهة S5/S8 - بروتوكول GTP-C، ترميز PCO وتسليمه
- واجهة PFCP - إنشاء جلسة الطائرة المستخدمة
IMS و VoLTE
- واجهة Diameter Gx - التحكم في السياسة لحاملي IMS
- دليل المراقبة - القياسات واللوحات المتعلقة بـ PCO
تكوين PCO لـ OmniPGW - من خدمات شبكة Omnitouch