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

اكتشاف ومراقبة P-CSCF

اكتشاف خادم P-CSCF الديناميكي مع المراقبة في الوقت الحقيقي

OmniPGW من خدمات الشبكة Omnitouch


نظرة عامة

اكتشاف ومراقبة 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 المكتشفة، وحالة الصحة
  • العودة السلسة: استراتيجية عودة من ثلاث مستويات لتحقيق أقصى موثوقية
  • مقاييس بروميثيوس: رؤية كاملة عبر مقاييس بروميثيوس

جدول المحتويات

  1. بدء سريع
  2. التكوين
  3. كيف يعمل
  4. مراقبة واجهة الويب
  5. المقاييس والرؤية
  6. استراتيجية العودة
  7. تكوين DNS
  8. استكشاف الأخطاء وإصلاحها
  9. أفضل الممارسات

بدء سريع

التكوين الأساسي

# 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.

مراقبة الوصول

  1. ابدأ OmniPGW
  2. انتقل إلى واجهة الويب → مراقب P-CSCF (https://localhost:8086/pcscf_monitor)
  3. عرض حالة الحل في الوقت الحقيقي وعناوين 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 العالمي
}
]
}

كيف يعمل

عملية بدء التشغيل

  1. بدء التطبيق

    • يتم تهيئة GenServer لمراقب P-CSCF
    • يقوم محلل التكوين باستخراج جميع FQDNs الفريدة لـ P-CSCF من قواعد اختيار UPF
  2. تسجيل FQDN

    • يتم تسجيل كل FQDN فريد مع المراقب
    • يقوم المراقب بإجراء استعلام DNS SRV أولي لكل FQDN
    • فحص صحة SIP OPTIONS (بالتوازي لجميع الخوادم المكتشفة):
      • حاول TCP أولاً (SIP/2.0/TCP على المنفذ 5060)
      • إذا فشل TCP، انتقل إلى UDP (SIP/2.0/UDP على المنفذ 5060)
      • حدد كل خادم كـ :up (يستجيب) أو :down (لا استجابة/انتهاء الوقت)
    • يتم تخزين النتائج (عناوين IP، حالة الصحة، أو الأخطاء) مع الطوابع الزمنية
  3. المراقبة الدورية (كل 60 ثانية)

    • يقوم المراقب بتحديث جميع FQDNs
    • يتم تشغيل استعلامات DNS في الخلفية دون حظر
    • لكل خادم مكتشف:
      • إرسال SIP OPTIONS عبر TCP (مهلة: 5 ثوانٍ)
      • إذا فشل TCP، حاول UDP (مهلة: 5 ثوانٍ)
      • تحديث حالة الصحة بناءً على الاستجابة
    • يتم تحديث التخزين المؤقت بأحدث نتائج DNS وحالة الصحة

تدفق إنشاء الجلسة

عملية استعلام DNS

يستخدم المراقب سجلات DNS SRV لاكتشاف P-CSCF مباشرة:

  1. استعلام SRV: استعلام سجلات SRV عند _sip._tcp.{fqdn}
  2. فرز الأولوية: فرز حسب الأولوية والوزن
  3. استخراج الهدف: استخراج أسماء المضيفين المستهدفة من سجلات SRV
  4. حل اسم المضيف: حل أسماء المضيفين المستهدفة إلى عناوين IP (سجلات A/AAAA)
  5. التخزين المؤقت: تخزين عناوين 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عناوين IP المستخدمةرسالة السجل
تم حل 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) │
└──────────────┬──────────────────────┘

┌───────┴────────┐
▼ ▼
┌────���────────┐ ┌──────────────────┐
│ SUCCESS │ │ FAILED/EMPTY │
│ {:ok, ips} │ │ {:error, reason} │
└──────┬──────┘ └────────┬─────────┘
│ │
▼ ▼
┌─────────────┐ ┌──────────────────┐
│ استخدام عناوين IP من 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

لماذا هذا التصميم؟

  1. تفضيل الديناميكية: يوفر DNS المرونة، وتوازن الحمل، والتوجيه المعتمد على الموقع
  2. ضمان الموثوقية: تضمن العودة الثابتة أن الجلسات لا تفشل أبدًا بسبب مشكلات DNS
  3. عدم التدخل اليدوي: الفشل التلقائي بدون تدخل المشغل
  4. آمن للإنتاج: أفضل ما في العالمين - الرشاقة مع الاستقرار

التوصية: قم دا��مًا بتكوين كل من 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
    • عمليات الحل الفاشلة: FQDNs التي فشلت في الحل
    • إجمالي خوادم P-CSCF: العدد الإجمالي للخوادم المكتشفة عبر جميع FQDNs
    • ✓ صحي (SIP OPTIONS UP): الخوادم التي تستجيب لفحوصات صحة SIP OPTIONS
    • ✗ غير صحي (SIP OPTIONS DOWN): الخوادم التي لا تستجيب لفحوصات SIP OPTIONS
    • معدل نجاح DNS: نسبة عمليات الحل الناجحة لـ DNS
    • فترة فحص الصحة: تكرار فحوصات صحة SIP OPTIONS (60 ثانية، مهلة 5 ثوانٍ)

لوحة معلومات مقاييس مراقب P-CSCF

توفر لوحة معلومات المقاييس رؤية في الوقت الحقيقي لكل من صحة حل 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

الأسباب المحتملة:

  1. خادم DNS غير متاح
  2. FQDN غير موجود في DNS
  3. لا توجد سجلات NAPTR مُكونة
  4. انتهاء وقت خادم 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"
  • قد تكون الحالة ✓ تم الحل أو ✗ فشل

الأسباب المحتملة:

  1. توجد سجلات NAPTR ولكن أسماء FQDN البديلة لا تحل
  2. لا يتطابق حقل الخدمة مع نمط IMS/SIP
  3. سجلات 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 غير المتوقعة
  • تم استخدام العودة الثابتة بدلاً من IPs المكتش��ة

الأسباب المحتملة:

  1. فشل اكتشاف DNS ولكن العودة تعمل
  2. تطابق القاعدة غير صحيح
  3. لم يتم تسجيل 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 مرتفع

الأسباب المحتملة:

  1. مشكلات أداء خادم DNS
  2. تأخير الشبكة إلى خادم DNS
  3. زمن انتهاء الوقت مرتفع جدًا

الحل:

# تقليل زمن انتهاء الاستعلام
pco: %{
p_cscf_discovery_timeout_ms: 2000 # تقليل من 5000ms
}

# النظر في استخدام خادم 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.

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


العودة إلى الوثائق الرئيسية


مراقبة P-CSCF لـ OmniPGW - من خدمات الشبكة Omnitouch