اكتشاف ومراقبة P-CSCF
اكتشاف خادم P-CSCF الديناميكي مع المراقبة في الوقت الحقيقي
OmniPGW من خدمات شبكة أومنيتاتش
نظرة عامة
اكتشاف ومراقبة P-CSCF (وظيفة التحكم في جلسة الاتصال الوكيلة) يوفر اكتشافًا ديناميكيًا لخوادم IMS P-CSCF باستخدام استعلامات DNS SRV مع فحص صحة SIP OPTIONS في الوقت الحقيقي. تتيح هذه الميزة:
- اكتشاف P-CSCF حسب القاعدة: خوادم P-CSCF مختلفة لأنواع حركة المرور المختلفة
- المراقبة التلقائية: عملية خلفية تراقب باستمرار حل DNS (كل 60 ثانية)
- فحوصات صحة SIP OPTIONS: تتحقق من أن خوادم P-CSCF نشطة عبر إشارات SIP OPTIONS
- TCP أولاً: تحاول SIP OPTIONS عبر TCP (مفضل من حيث الموثوقية)
- العودة إلى UDP: تعود إلى UDP إذا فشل TCP
- تتبع الحالة: تعين كل خادم كـ :up أو :down بناءً على الاستجابة
- تتبع الصحة في الوقت الحقيقي: تعرض واجهة الويب حالة الحل، وعناوين IP المكتشفة، وحالة الصحة
- العودة السلسة: استراتيجية عودة من ثلاث طبقات لتحقيق أقصى موثوقية
- مقاييس بروميثيوس: رؤية كاملة عبر مقاييس بروميثيوس
جدول المحتويات
- بدء سريع
- التكوين
- كيف يعمل
- مراقبة واجهة الويب
- المقاييس والرؤية
- استراتيجية العودة
- تكوين DNS
- استكشاف الأخطاء وإصلاحها
- أفضل الممارسات
بدء سريع
التكوين الأساسي
# config/runtime.exs
# تكوين PCO العالمي (خادم DNS لاكتشاف P-CSCF)
config :pgw_c,
pco: %{
p_cscf_discovery_dns_server: "10.179.2.177",
p_cscf_discovery_enabled: true,
p_cscf_discovery_timeout_ms: 5000
},
upf_selection: %{
rules: [
# حركة مرور IMS - اكتشاف P-CSCF الديناميكي
%{
name: "IMS Traffic",
priority: 20,
match_field: :apn,
match_regex: "^ims",
upf_pool: [
%{remote_ip_address: "10.100.2.21", remote_port: 8805, weight: 80}
],
# FQDN لاكتشاف P-CSCF (انظر دليل التكوين لمزيد من قواعد اختيار UPF)
p_cscf_discovery_fqdn: "pcscf.mnc380.mcc313.3gppnetwork.org",
# العودة الثابتة (انظر دليل تكوين PCO)
pco: %{
p_cscf_ipv4_address_list: ["10.101.2.100", "10.101.2.101"]
}
}
]
}
انظر دليل التكوين للحصول على تكوين كامل لقواعد اختيار UPF و تكوين PCO لخيارات العودة الثابتة لـ P-CSCF.
مراقبة الوصول
- ابدأ OmniPGW
- انتقل إلى واجهة الويب → مراقب P-CSCF (
https://localhost:8086/pcscf_monitor) - عرض حالة الحل في الوقت الحقيقي وعناوين IP المكتشفة
التكوين
إعدادات اكتشاف P-CSCF العالمية
قم بتكوين خادم DNS المستخدم لاكتشاف P-CSCF في قسم PCO:
pco: %{
# خادم DNS لاكتشاف P-CSCF (مختلف عن DNS المقدم لـ UE)
p_cscf_discovery_dns_server: "10.179.2.177",
# تمكين ميزة اكتشاف DNS لـ P-CSCF
p_cscf_discovery_enabled: true,
# مهلة لاستعلامات DNS SRV (بالملي ثانية)
p_cscf_discovery_timeout_ms: 5000,
# عناوين P-CSCF الثابتة (عودة عالمية)
p_cscf_ipv4_address_list: ["10.101.2.146"]
}
FQDNs لـ P-CSCF حسب القاعدة
يمكن لكل قاعدة اختيار UPF تحديد FQDN اكتشاف P-CSCF الخاص بها:
upf_selection: %{
rules: [
# حركة مرور IMS - P-CSCF خاص بـ IMS
%{
name: "IMS Traffic",
match_field: :apn,
match_regex: "^ims",
upf_pool: [...],
p_cscf_discovery_fqdn: "pcscf.ims.mnc380.mcc313.3gppnetwork.org",
pco: %{
p_cscf_ipv4_address_list: ["10.101.2.100"] # العودة
}
},
# المؤسسة - P-CSCF خاص بالمؤسسة
%{
name: "Enterprise Traffic",
match_field: :apn,
match_regex: "^enterprise",
upf_pool: [...],
p_cscf_discovery_fqdn: "pcscf.enterprise.example.com",
pco: %{
p_cscf_ipv4_address_list: ["192.168.1.50"] # العودة
}
},
# الإنترنت - لا يوجد اكتشاف P-CSCF (يستخدم التكوين العالمي)
%{
name: "Internet Traffic",
match_field: :apn,
match_regex: "^internet",
upf_pool: [...]
# لا يوجد p_cscf_discovery_fqdn - يستخدم تكوين PCO العالمي
}
]
}
كيف يعمل
عملية بدء التشغيل
-
بدء التطبيق
- يتم تهيئة P-CSCF Monitor GenServer
- يقوم محلل التكوين باستخراج جميع FQDNs الفريدة لـ P-CSCF من قواعد اختيار UPF
-
تسجيل FQDN
- يتم تسجيل كل FQDN فريد مع المراقب
- يقوم المراقب بإجراء استعلام DNS SRV أولي لكل FQDN
- فحص صحة SIP OPTIONS (بالتوازي لجميع الخوادم المكتشفة):
- حاول TCP أولاً (
SIP/2.0/TCPعلى المنفذ 5060) - إذا فشل TCP، انتقل إلى UDP (
SIP/2.0/UDPعلى المنفذ 5060) - قم بتعيين كل خادم كـ
:up(يستجيب) أو:down(لا استجابة/مهلة)
- حاول TCP أولاً (
- يتم تخزين النتائج (عناوين IP، حالة الصحة، أو الأخطاء) مع الطوابع الزمنية
-
المراقبة الدورية (كل 60 ثانية)
- يقوم المراقب بتحديث جميع FQDNs
- يتم تشغيل استعلامات DNS في الخلفية دون حظر
- لكل خادم مكتشف:
- إرسال SIP OPTIONS عبر TCP (مهلة: 5 ثواني)
- إذا فشل TCP، حاول UDP (مهلة: 5 ثواني)
- تحديث حالة الصحة بناءً على الاستجابة
- يتم تحديث التخزين المؤقت بأحدث نتائج DNS وحالة الصحة
تدفق إنشاء الجلسة
عملية استعلام DNS
يستخدم المراقب سجلات DNS SRV للاكتشاف المباشر لـ P-CSCF:
- استعلام SRV: استعلام سجلات SRV في
_sip._tcp.{fqdn} - فرز الأولويات: فرز حسب الأولوية والوزن
- استخراج الهدف: استخراج أسماء المضيفين من سجلات SRV
- حل اسم المضيف: حل أسماء المضيفين المستهدفة إلى عناوين IP (سجلات A/AAAA)
- التخزين المؤقت: تخزين عناوين IP المحلولة مع الحالة والطابع الزمني
أولوية اختيار عنوان P-CSCF
عندما يتم تكوين كل من FQDN و PCO الثابت على قاعدة، فإن FQDN يأخذ الأولوية:
%{
name: "IMS Traffic",
p_cscf_discovery_fqdn: "pcscf.mnc380.mcc313.3gppnetwork.org", # ← تم التجربة أولاً
pco: %{
p_cscf_ipv4_address_list: ["10.101.2.100", "10.101.2.101"] # ← العودة
}
}
منطق الاختيار:
| الشرط | مصدر P-CSCF | العناوين المستخدمة | رسالة السجل |
|---|---|---|---|
| تم حل FQDN بنجاح | اكتشاف DNS (المراقب) | عناوين IP المكتشفة من DNS | "Using P-CSCF addresses from FQDN pcscf.example.com" |
| فشل FQDN في الحل | تجاوز PCO للقاعدة | عناوين IP الثابتة من pco.p_cscf_ipv4_address_list | "Failed to get P-CSCF IPs from FQDN..., falling back to static config" |
| FQDN يعيد قائمة فارغة | تجاوز PCO للقاعدة | عناوين IP الثابتة من pco.p_cscf_ipv4_address_list | تم تفعيل العودة |
| المراقب غير متاح | تجاوز PCO للقاعدة | عناوين IP الثابتة من pco.p_cscf_ipv4_address_list | خطأ يؤدي إلى العودة |
| لا يوجد FQDN تم تكوينه | تجاوز PCO للقاعدة أو عالمي | عناوين IP من القاعدة أو التكوين العالمي | يستخدم التكوين الثابت مباشرة |
تدفق المثال:
إنشاء جلسة لقانون حركة IMS:
┌─────────────────────────────────────┐
│ 1. تحقق مما إذا كان FQDN تم تكوينه؟ │
│ ✓ نعم: "pcscf.mnc380.mcc313..." │
└──────────────┬──────────────────────┘
│
▼
┌─────────────────────────────────────┐
│ 2. استعلام المراقب عن عناوين IP المخزنة │
│ Monitor.get_ips(fqdn) │
└──────────────┬──────────────────────┘
│
┌───────┴────────┐
▼ ▼
┌─────────────┐ ┌��─────────────────┐
│ نجاح │ │ فشل/فارغ │
│ {:ok, ips} │ │ {:error, reason} │
└──────┬──────┘ └────────┬─────────┘
│ │
▼ ▼
┌─────────────┐ ┌──────────────────┐
│ استخدم عناوين DNS │ │ استخدم PCO الثابت │
│ [من DNS] │ │ [من التكوين] │
└─────────────┘ └──────────────────┘
│ │
└────────┬─────────┘
▼
┌──────────────────┐
│ إرسال إلى UE في │
│ رسالة PCO │
└──────────────────┘
سيناريوهات العالم الحقيقي:
السيناريو 1: يعمل اكتشاف DNS ✅
التكوين:
p_cscf_discovery_fqdn: "pcscf.ims.example.com"
pco.p_cscf_ipv4_address_list: ["10.101.2.100"]
نتيجة DNS: [10.101.2.150, 10.101.2.151]
يتلقى UE: [10.101.2.150, 10.101.2.151] ← ��ن DNS
ملاحظة: يتم تجاهل PCO الثابت عند نجاح DNS
السيناريو 2: فشل DNS، عودة سلسة ⚠️
التكوين:
p_cscf_discovery_fqdn: "pcscf.ims.example.com"
pco.p_cscf_ipv4_address_list: ["10.101.2.100"]
نتيجة DNS: ERROR :no_naptr_records
يتلقى UE: [10.101.2.100] ← من PCO الثابت
ملاحظة: تنجح الجلسة على الرغم من فشل DNS
السيناريو 3: لا يوجد FQDN تم تكوينه
التكوين:
# لا يوجد p_cscf_discovery_fqdn
pco.p_cscf_ipv4_address_list: ["192.168.1.50"]
يتلقى UE: [192.168.1.50] ← من PCO الثابت
ملاحظة: لم يتم محاولة اكتشاف DNS
لماذا هذا التصميم؟
- تفضيل الديناميكية: يوفر DNS المرونة، وتوازن الحمل، والتوجيه المدرك للموقع
- ضمان الموثوقية: تضمن العودة الثابتة أن الجلسات لا تفشل أبدًا بسبب مشكلات DNS
- عدم التدخل اليدوي: فشل تلقائي بدون تدخل المشغل
- آمن للإنتاج: أفضل ما في العالمين - الرشاقة مع الاستقرار
التوصية: قم دائمًا بتكوين كل من FQDN و PCO الث��بت للنشر في الإنتاج:
# ✓ موصى به: ديناميكي مع العودة
%{
p_cscf_discovery_fqdn: "pcscf.ims.example.com", # مفضل
pco: %{
p_cscf_ipv4_address_list: ["10.101.2.100"] # شبكة الأمان
}
}
# ⚠️ محفوف بالمخاطر: ديناميكي فقط (يعود إلى PCO العالمي)
%{
p_cscf_discovery_fqdn: "pcscf.ims.example.com"
# لا يوجد عودة خاصة بالقواعد!
}
# ✓ صالح: ثابت فقط (بدون عبء DNS)
%{
pco: %{
p_cscf_ipv4_address_list: ["192.168.1.50"]
}
}
مراقبة واجهة الويب
صفحة مراقب P-CSCF
يمكن الوصول إلى واجهة المراقبة على: https://localhost:8086/pcscf_monitor

الميزات:
-
إحصائيات عامة
- إجمالي FQDNs المراقبة
- FQDNs التي تم حلها بنجاح
- الحلول الفاشلة
- إجمالي عناوين IP المكتشفة لـ P-CSCF
-
جدول FQDN
- FQDN الذي يتم مراقبته
- حالة الحل (✓ تم الحل / ✗ فشل / ⏳ قيد الانتظار)
- عدد عناوين IP المكتشفة
- قائمة عناوين IP المحلولة (مع تفاصيل الخادم القابلة للتوسيع)
- الطابع الزمني لآخر تحديث
- زر التحديث اليدوي لكل FQDN
- حالة الصحة: يظهر كل خادم مكتشف:
- عنوان IP والمنفذ
- اسم المضيف (من هدف DNS SRV)
- مؤشر صحة في الوقت الحقيقي (✓ نشط / ✗ غير نشط)
-
تحكمات التحديث
- زر تحديث الكل: تفعيل إعادة استعلام فورية لجميع FQDNs
- تحديث لكل FQDN: تحديث FQDNs فرديًا عند الطلب
- التحديث التلقائي: يتم تحديث الصفحة كل 5 ثواني
-
لوحة تحكم مقاييس المراقبة
- إجمالي FQDNs: عدد FQDNs الفريدة المسجلة للمراقبة
- تم حلها بنجاح: FQDNs التي تم حلها بنجاح عبر DNS
- فشل حلول DNS: FQDNs التي فشلت في الحل
- إجمالي خوادم P-CSCF: إجمالي عدد الخوادم المكتشفة عبر جميع FQDNs
- ✓ صحي (SIP OPTIONS نشطة): الخوادم التي تستجيب لفحوصات صحة SIP OPTIONS
- ✗ غير صحي (SIP OPTIONS غير نشطة): الخوادم التي لا تستجيب لفحوصات SIP OPTIONS
- معدل نجاح DNS: نسبة الحلول الناجحة لـ DNS
- فترة فحص الصحة: تكرار فحوصات صحة SIP OPTIONS (60 ثانية، 5 ثواني مهلة)

توفر لوحة تحكم المقاييس رؤية في الوقت الحقيقي لكل من صحة حل DNS وتوافر خادم P-CSCF عبر SIP OPTIONS.
تكامل صفحة اختيار UPF
تعرض صفحة اختيار UPF (/upf_selection) حالة اكتشاف P-CSCF لكل قاعدة:
📌 حركة مرور IMS (الأولوية 20)
المطابقة: مطابقة APN ^ims
المجموعة: UPF-IMS-Primary (10.100.2.21:8805)
🔍 اكتشاف P-CSCF
FQDN: pcscf.mnc380.mcc313.3gppnetwork.org
الحالة: ✓ تم الحل (2 IPs)
عناوين IP المحلولة: 10.101.2.100، 10.101.2.101
⚙️ تجاوزات PCO
DNS الأساسي: 10.103.2.195
P-CSCF (عودة ثابتة): 10.101.2.100، 10.101.2.101
المقاييس والرؤية
مقاييس بروميثيوس
يقدم نظام مراقبة P-CSCF مقاييس عبر بروميثيوس (المنفذ 42069 بشكل افتراضي):
مقاييس Gauge
# مقاييس على مستوى FQDN
pcscf_fqdns_total # إجمالي عدد FQDNs المراقبة
pcscf_fqdns_resolved # FQDNs التي تم حلها بنجاح (نجح DNS)
pcscf_fqdns_failed # فشل حلول FQDN (فشل DNS)
# مقاييس على مستوى الخادم (مجمعة)
pcscf_servers_total # إجمالي خوادم P-CSCF المكتشفة عبر DNS SRV
pcscf_servers_healthy # الخوادم التي تستجيب لـ SIP OPTIONS (مجمعة)
pcscf_servers_unhealthy # الخوادم التي لا تستجيب لـ SIP OPTIONS (مجمعة)
# مقاييس على مستوى الخادم (لكل FQDN مع التسمية)
pcscf_servers_healthy{fqdn="..."} # خوادم صحية لـ FQDN محدد
pcscf_servers_unhealthy{fqdn="..."} # خوادم غير صحية لـ FQDN محدد
تفاصيل فحص الصحة:
healthy: الخادم استجاب لإشارة SIP OPTIONS (TCP أو UDP)unhealthy: الخادم فشل في الاستجابة لإشارات SIP OPTIONS (مهلة 5 ثواني لكل وسيلة نقل)
أمثلة المقاييس
مقاييس حل DNS:
# استعلام FQDNs التي تم حلها بنجاح
pcscf_fqdns_resolved
# حساب معدل نجاح DNS
(pcscf_fqdns_resolved / pcscf_fqdns_total) * 100
# إجمالي الخوادم المكتشفة
pcscf_servers_total
مقاييس صحة SIP OPTIONS:
# إجمالي الخوادم الصحية عبر جميع FQDNs
pcscf_servers_healthy
# إجمالي الخوادم غير الصحية
pcscf_servers_unhealthy
# حساب معدل نجاح فحص الصحة
(pcscf_servers_healthy / pcscf_servers_total) * 100
# الخوادم الصحية لـ FQDN محدد
pcscf_servers_healthy{fqdn="pcscf.mnc380.mcc313.3gppnetwork.org"}
# تنبيه عند عدم وجود أي خوادم نشطة
pcscf_servers_healthy == 0 AND pcscf_servers_total > 0
أمثلة تنبيهات بروميثيوس:
# تنبيه عندما تكون جميع خوادم P-CSCF غير نشطة
- alert: AllPCSCFServersDown
expr: pcscf_servers_healthy == 0 AND pcscf_servers_total > 0
for: 5m
labels:
severity: critical
annotations:
summary: "جميع خوادم P-CSCF غير صحية"
description: "{{ $value }} خادم صحي (0) - جميع فشلت فحوصات SIP OPTIONS"
# تنبيه عندما تكون أكثر من 50% من الخوادم غير نشطة
- alert: MajorityPCSCFServersDown
expr: (pcscf_servers_healthy / pcscf_servers_total) < 0.5
for: 5m
labels:
severity: warning
annotations:
summary: "معظم خوادم P-CSCF غير صحية"
description: "فقط {{ $value }}% من الخوادم تستجيب لإشارات SIP OPTIONS"
# تنبيه عند فشل حلول DNS
- alert: PCSCFDNSResolutionFailed
expr: pcscf_fqdns_failed > 0
for: 5m
labels:
severity: warning
annotations:
summary: "فشل حلول DNS لـ P-CSCF"
description: "{{ $value }} FQDN(s) تفشل في الحل"
التسجيل
يسجل المراقب الأحداث الرئيسية:
[info] تم بدء مراقب P-CSCF
[info] تسجيل 2 FQDNs فريدة لمراقبتها: ["pcscf.ims.example.com", "pcscf.enterprise.example.com"]
[info] مراقب P-CSCF: تسجيل FQDN pcscf.ims.example.com
[debug] مراقب P-CSCF: تم حل pcscf.ims.example.com بنجاح إلى 2 IPs
[warning] مراقب P-CSCF: فشل في حل pcscf.enterprise.example.com: :nxdomain
[debug] استخدام عناوين P-CSCF من FQDN pcscf.ims.example.com: [{10, 101, 2, 100}, {10, 101, 2, 101}]
استراتيجية العودة
يستخدم النظام استراتيجية عودة من ثلاث طبقات لتحقيق أقصى موثوقية:
الطبقة 1: اكتشاف DNS (المفضل)
p_cscf_discovery_fqdn: "pcscf.ims.example.com"
- يقوم المراقب باستعلام DNS ويخزن عناوين IP المحلولة
- تستخدم الجلسة عناوين IP المخزنة إذا كانت متاحة
- الميزة: ديناميكية، موزعة على الحمل، مدركة للموقع
الطبقة 2: PCO ثابت خاص بالقاعدة (عودة)
pco: %{
p_cscf_ipv4_address_list: ["10.101.2.100", "10.101.2.101"]
}
- تستخدم إذا فشل اكتشاف DNS أو لم يعد أي عناوين IP
- تكوين ثابت خاص بالقاعدة
- الميزة: عودة خاصة بالقاعدة، متوقعة
الطبقة 3: تكوين PCO العالمي (ملاذ أخير)
# تكوين pco العالمي
pco: %{
p_cscf_ipv4_address_list: ["10.101.2.146"]
}
- تستخدم إذا لم يكن هناك تكوين خاص بالقاعدة وفشل DNS
- عناوين P-CSCF الافتراضية العالمية
- الميزة: متاحة دائمًا، تمنع فشل الجلسة
مثال على منطق العودة
تطابق الجلسة مع قاعدة "حركة IMS":
1. حاول اكتشاف DNS لـ "pcscf.ims.example.com"
├─ النجاح → استخدم [10.101.2.100، 10.101.2.101] ✓
└─ الفشل → حاول الطبقة التالية
2. حاول تجاوز PCO للقاعدة
├─ تم تكوينه → استخدم [10.101.2.100، 10.101.2.101] ✓
└─ لم يتم تكوينه → حاول الطبقة التالية
3. استخدم تكوين PCO العالمي
└─ استخدم [10.101.2.146] ✓ (يحقق النجاح دائمًا)
تكوين DNS
إعداد خادم DNS
قم بتكوين خادم DNS مع سجلات SRV و A/AAAA لاكتشاف P-CSCF:
; سجلات SRV لـ P-CSCF (يتم استعلام بادئة _sip._tcp تلقائيًا)
_sip._tcp.pcscf.mnc380.mcc313.3gppnetwork.org. IN SRV 10 50 5060 pcscf1.example.com.
_sip._tcp.pcscf.mnc380.mcc313.3gppnetwork.org. IN SRV 20 50 5060 pcscf2.example.com.
; سجلات A
pcscf1.example.com. IN A 10.101.2.100
pcscf2.example.com. IN A 10.101.2.101
مهم: يقوم OmniPGW تلقائيًا بإضافة بادئة _sip._tcp. إلى FQDN المكون. إذا قمت بتكوين p_cscf_discovery_fqdn: "pcscf.mnc380.mcc313.3gppnetwork.org"، سيقوم النظام باستعلام _sip._tcp.pcscf.mnc380.mcc313.3gppnetwork.org.
تنسيق سجل SRV
تتبع سجلات SRV هذا التنسيق:
_service._proto.domain. IN SRV priority weight port target.
- الأولوية: القيم الأقل لها أولوية أع��ى (10 قبل 20)
- الوزن: لتوازن الحمل بين نفس الأولوية (أعلى = مزيد من الحركة)
- المنفذ: منفذ SIP (عادة 5060 لـ TCP، 5060 لـ UDP)
- الهدف: اسم المضيف الذي سيتم حله إلى عنوان IP
اختبار تكوين DNS
# استعلام سجلات SRV (لاحظ بادئة _sip._tcp)
dig SRV _sip._tcp.pcscf.mnc380.mcc313.3gppnetwork.org @10.179.2.177
# الناتج المتوقع:
# _sip._tcp.pcscf.mnc380.mcc313.3gppnetwork.org. 300 IN SRV 10 50 5060 pcscf1.example.com.
# حل اسم P-CSCF إلى IP
dig A pcscf1.example.com @10.179.2.177
# الناتج المتوقع:
# pcscf1.example.com. 300 IN A 10.101.2.100
استكشاف الأخطاء وإصلاحها
المشكلة: يظهر FQDN حالة "فشل"
الأعراض:
- تظهر واجهة الويب حالة ✗ فشل
- الخطأ:
:nxdomain،:timeout، أو:no_naptr_records
الأسباب المحتملة:
- خادم DNS غير متاح
- FQDN غير موجود في DNS
- لا توجد سجلات NAPTR مكونة
- مهلة خادم DNS
الحل:
# 1. اختبار اتصال خادم DNS
ping 10.179.2.177
# 2. اختبار استعلام NAPTR يدويًا
dig NAPTR pcscf.mnc380.mcc313.3gppnetwork.org @10.179.2.177
# 3. تحقق من سجلات OmniPGW
grep "P-CSCF" /var/log/pgw_c.log
# 4. تحقق من التكوين
grep "p_cscf_discovery_dns_server" config/runtime.exs
# 5. تحديث يدوي في واجهة الويب
# انقر على زر "تحديث" بجوار FQDN الفاشل
المشكلة: لا يتم إرجاع أي IPs
الأعراض:
- تظهر واجهة الويب "0 IPs"
- قد تكون الحالة ✓ تم الحل أو ✗ فشل
الأسباب المحتملة:
- توجد سجلات NAPTR ولكن FQDNs البديلة لا تحل
- لا يتطابق حقل الخدمة مع نمط IMS/SIP
- سجلات A/AAAA مفقودة
الحل:
# تحقق من حقل خدمة سجل NAPTR
dig NAPTR pcscf.example.com @10.179.2.177
# تأكد من أن الخدمة تحتوي على "SIP" أو "IMS":
# صحيح: "SIP+D2U"، "x-3gpp-ims:sip"
# خاطئ: "HTTP"، "FTP"
# تحقق من وجود سجلات A/AAAA
dig pcscf1.example.com A @10.179.2.177
المشكلة: تستخدم الجلسات P-CSCF خاطئ
الأعراض:
- يتلقى UE عناوين P-CSCF غير متوقعة
- تم استخدام العودة الثابتة بدلاً من عناوين IP المكتشفة
الأسباب المح��ملة:
- فشل اكتشاف DNS لكن العودة تعمل
- مطابقة القاعدة غير صحيحة
- لم يتم تسجيل FQDN
الحل:
# 1. تحقق من صفحة مراقب P-CSCF
# تحقق مما إذا كان FQDN مسجلاً وتم حله
# 2. تحقق من سجلات الجلسة
grep "Using P-CSCF addresses from FQDN" /var/log/pgw_c.log
# 3. تحقق من صفحة اختيار UPF
# تحقق مما إذا كانت القاعدة تعرض FQDN الصحيح والحالة
# 4. اختبار مطابقة القاعدة
# إنشاء جلسة مع APN محدد والتحقق من القاعدة التي تطابق
المشكلة: ارتفاع زمن استعلام DNS
الأعراض:
- بطء في إنشاء الجلسة
- تظهر المقاييس زمن
pcscf_discovery_query_duration_secondsمرتفع
الأسباب المحتملة:
- مشكلات في أداء خادم DNS
- زمن انتقال الشبكة إلى خادم DNS
- المهلة مرتفعة جدًا
الحل:
# تقليل زمن المهلة للاستعلام
pco: %{
p_cscf_discovery_timeout_ms: 2000 # تقليل من 5000 مللي ثانية
}
# النظر في استخدام خادم DNS أقرب
pco: %{
p_cscf_discovery_dns_server: "10.0.0.10" # DNS محلي
}
أفضل الممارسات
1. اختيار خادم DNS
استخدم خادم DNS مخصص
pco: %{
# DNS مخصص لاكتشاف P-CSCF (ليس نفس DNS الخاص بـ UE)
p_cscf_discovery_dns_server: "10.179.2.177",
# خوادم DNS لـ UE (المقدمة للأجهزة المحمولة)
primary_dns_server_address: "8.8.8.8",
secondary_dns_server_address: "8.8.4.4"
}
لماذا؟
- فصل المخاوف: DNS الخاص بـ UE مقابل DNS IMS الداخلي
- سياسات وصول وأمان مختلفة
- توسيع وموثوقية مستقلة
2. قم دائمًا بتكوين العودة الثابتة
%{
p_cscf_discovery_fqdn: "pcscf.ims.example.com", # مفضل
pco: %{
p_cscf_ipv4_address_list: ["10.101.2.100"] # العودة المطلوبة
}
}
لماذا؟
- يضمن نجاح الجلسات حتى إذا فشل DNS
- تدهور سلس
- يلبي متطلبات SLA
3. استخدم FQDNs محددة لكل نوع من حركة المرور
rules: [
# IMS
%{
name: "IMS",
match_regex: "^ims",
p_cscf_discovery_fqdn: "pcscf.ims.mnc380.mcc313.3gppnetwork.org"
},
# المؤسسة
%{
name: "Enterprise",
match_regex: "^enterprise",
p_cscf_discovery_fqdn: "pcscf.enterprise.example.com"
}
]
لماذا؟
- مجموعات P-CSCF مختلفة لكل خدمة
- توزيع أفضل للحمل
- توجيه خاص بالخدمة
4. راقب أداء استعلام DNS
# تنبيه عند ارتفاع زمن استعلام P-CSCF
alert: HighPCSCFQueryLatency
expr: histogram_quantile(0.95, pcscf_discovery_query_duration_seconds_bucket) > 2
for: 5m
labels:
severity: warning
annotations:
summary: "استعلامات DNS لـ P-CSCF بطيئة (p95 > 2s)"
5. تحقق من صحة DNS بانتظام
- واجهة الويب: تحقق من صفحة مراقب P-CSCF يوميًا
- المقاييس: راقب المقياس
pcscf_monitor_fqdns_failed - السجلات: راقب أخطاء DNS
- الاختبار: تحقق دوريًا من وجود سجلات DNS
6. قم بتكوين المهلة المناسبة
# الإنتاج: توازن بين الموثوقية مقابل زمن الانتظار
pco: %{
p_cscf_discovery_timeout_ms: 5000 # 5 ثواني
}
# الأداء العالي: تفضيل السرعة، الاعتماد على العودة
pco: %{
p_cscf_discovery_timeout_ms: 2000 # 2 ثانية
}
7. استخدم تكرار DNS
قم بتكوين DNS أساسي وثانوي:
# DNS P-CSCF الأساسي
pcscf.mnc380.mcc313.3gppnetwork.org. IN NAPTR 10 50 "s" "SIP+D2U" "" _sip._udp.pcscf1.example.com.
# DNS P-CSCF الثانوي
pcscf.mnc380.mcc313.3gppnetwork.org. IN NAPTR 20 50 "s" "SIP+D2U" "" _sip._udp.pcscf2.example.com.
الوثائق ذات الصلة
- تكوين PCO - خيارات تكوين البروتوكول، إعدادات DNS و P-CSCF
- دليل التكوين - مرجع تكوين OmniPGW الكامل
- المراقبة - المقاييس، التسجيل، والرؤية
- إدارة الجلسة - دورة حياة الجلسة وتسليم PCO
- واجهة PFCP - اتصال وظيفة الطائرة المستخدم
مراقبة P-CSCF من OmniPGW - بواسطة خدمات شبكة أومنيتاتش