المقدمة
يصف هذا المستند آلية ذاكرة التخزين المؤقت لنظام اسم المجال (DNS) في وظيفة إدارة الجلسات (SMF) وكيفية أستكشاف الأخطاء وإصلاحها.
كيفية عمل ذاكرة التخزين المؤقت ل DNS
عندما يتم إجراء استعلام DNS في SMF، يتم تخزين الإجابة من خادم DNS مؤقتا في قاعدة البيانات الداخلية. اسم المجال المؤهل بالكامل (FQDN) لعنوان وظيفة التحكم في جلسة اتصال الوكيل (P-CSCF) هو مثال واحد عندما يتم طلب خيار تكوين البروتوكول الموسع (PCO) ل P-CSCF من قبل المشترك، وإذا كان SMF يتضمن تكوين FQDN ل P-CSCF، يتم إرسال استعلام DNS ويتم حفظ الإجابة في ذاكرة التخزين المؤقت.
نموذج لملف تعريف P-CSCF وتكوين وكيل DNS هو:
profile pcscf pcscf1
fqdn pcscf6.test.local
v6-list
precedence 1
primary fe80::1
exit
exit
exit
profile dns-proxy
query-type ipv6
timeout 2000
round-robin-answers
servers serv1
ip 192.168.20.11
port 53
protocol udp
priority 1
exit
exit
باستخدام التكوين، يحاول SMF الأول حل FQDN pcscf6.test.local باستخدام خادم DNS وحفظ الإجابة في ذاكرة التخزين المؤقت. يتم إستخدام عنوان P-CSCF الثابت (fec0::1) فقط عند فشل تحليل DNS. في المرة التالية التي يتحقق فيها SMF من ذاكرة التخزين المؤقت وإذا تم العثور على اسم المضيف، فإنه يتم إستخدامه ولا يحدث استعلام DNS. انتهت صلاحية إدخال ذاكرة التخزين المؤقت استنادا إلى مدة البقاء (TTL) المعينة بواسطة تكوين SMF أو القيمة من خادم DNS.
استكشاف الأخطاء وإصلاحها
يجب التحقيق في ذاكرة التخزين المؤقت عندما تكون هناك مشكلة في تحليل DNS، على سبيل المثال، إذا قام SMF بإرجاع عنوان IP غير متوقع ل P-CSCF، فمن المحتمل أن يبقى إدخال قديم في ذاكرة التخزين المؤقت، بسبب قيمة TTL خاطئة أو لأن آلية انتهاء صلاحية TTL لا تعمل لسبب ما.
يمكن رؤية الإدخالات المخزنة مؤقتا باستخدام واجهة سطر الأوامر show dns-cache.
[unknown] smf# show dns-cache ipv6
dns-cache-details
{
"cacheResponse": [
{
"hostname": "pcscfv6.test.local",
"hostdata": [
{
"podInstance": "0",
"cachedType": "ipv6",
"cachedTime": "Wed Jan 26 03:32:01 UTC 2022",
"currentTime": "Wed Jan 26 03:32:03 UTC 2022",
"cachedData": [
{
"ip": "fec0:0:1:2:3:4:fe8b:5d43",
"ttl": 180
}
],
"dnsServer": "192.168.20.11:53 udp"
}
]
}
]
}
يمكن إختبار دقة DNS باستخدام واجهة سطر الأوامر (CLI) لاختبار استعلام DNS.
[unknown] smf# test dns-query fqdn pcscfv6.test.local
dns-summary
Hostname : pcscfv6.test.local,
IPv4Addr : [],
IPv6Addr : [fe80:0:1:2:3:4:fe8b:5d43]
ال CLI طبقت عن طريق cisco بق id CSCvz13118. في حالة إستخدام بنية SMF قديمة وعدم توفر واجهة سطر الأوامر (CLI)، يمكن إغراق إدخالات ذاكرة التخزين المؤقت على قرص ETCD باستخدام الأمر etcdctl.
[root@master1 ~]# kubectl get pod -n smf-data | grep etcd
etcd-smf-data-etcd-cluster-0 2/2 Running 2 23h
[root@master1 ~]# kubectl exec -it etcd-smf-data-etcd-cluster-0 -n smf-data bash
Defaulting container name to member.
Use 'kubectl describe pod/etcd-smf-data-etcd-cluster-0 -n smf-data' to see all of the containers in this pod.
groups: cannot find name for group ID 303
I have no name!@etcd-smf-data-etcd-cluster-0:/usr/local/bin$
I have no name!@etcd-smf-data-etcd-cluster-0:/usr/local/bin$ etcdctl get --prefix C.RadiusDNS
C.RadiusDNS/DNS/CacheV6.pcscfv6.test.local
fe80:0:1:2:3:4:fe8b:5d43
180
C.RadiusDNS/DNS/Common.algorithm
round-robin
C.RadiusDNS/DNS/Common.queryType
ipv6