Einleitung
In diesem Dokument wird der DNS-Cache-Mechanismus (Domain Name System) in der Session Management Function (SMF) beschrieben und die Fehlerbehebung dafür beschrieben.
Funktionsweise von DNS-Cache
Wenn eine DNS-Abfrage bei SMF erfolgt, wird die Antwort vom DNS-Server in der internen Datenbank zwischengespeichert. Die Adresse Fully Qualified Domain Name (FQDN) for Proxy Call Session Control Function (P-CSCF) ist ein Beispiel, wenn der Teilnehmer P-CSCF Extended Protocol Configuration Option (PCO) anfordert und wenn SMF über eine P-CSCF FQDN-Konfiguration verfügt, wird eine DNS-Abfrage gesendet und die Antwort im Cache gespeichert.
Ein Beispiel für ein P-CSCF-Profil und eine DNS-Proxy-Konfiguration:
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
Bei der Konfiguration versucht SMF zunächst, den FQDN pcscf6.test.local mit DNS-Server aufzulösen und speichert die Antwort im Cache. Die statische P-CSCF-Adresse (fec0::1) wird nur verwendet, wenn die DNS-Auflösung fehlschlägt. Bei der nächsten SMF-Überprüfung im Cache und wenn der Hostname gefunden wird, wird er verwendet, und die DNS-Abfrage erfolgt nicht. Der Cache-Eintrag ist abgelaufen, basierend auf der Time to Live (TTL), die durch die SMF-Konfiguration oder den Wert vom DNS-Server festgelegt wurde.
Fehlerbehebung
Der Cache muss überprüft werden, wenn ein Problem mit der DNS-Auflösung vorliegt, z. B. wenn SMF eine unerwartete IP-Adresse für P-CSCF zurückgibt, kann ein alter Eintrag im Cache verbleiben, weil ein falscher TTL-Wert vorliegt oder der TTL-Ablaufmechanismus aus irgendeinem Grund nicht funktioniert.
Die zwischengespeicherten Einträge können mit der show dns-cache-CLI angezeigt werden.
[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"
}
]
}
]
}
Die DNS-Auflösung kann mit der Test-DNS-Abfrage-CLI getestet werden.
[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]
Die CLI wird mithilfe der Cisco Bug-ID CSCvz13118 implementiert. Wenn ein altes SMF-Build verwendet wird und die CLI nicht verfügbar ist, können die Cache-Einträge mit dem Befehl ecdctl auf einem elektronischen POD gespeichert werden.
[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