Introduzione
In questo documento viene descritto il meccanismo di cache DNS (Domain Name System) in SMF (Session Management Function) e viene spiegato come risolverlo.
Funzionamento della cache DNS
Quando una query DNS viene eseguita in SMF, la risposta dal server DNS viene memorizzata nella cache del database interno. Il nome di dominio completo (FQDN) per l'indirizzo P-CSCF (Proxy Call Session Control Function) è un esempio di come l'opzione PCO (Extended Protocol Configuration Option) P-CSCF sia richiesta dal sottoscrittore e, se SMF dispone della configurazione FQDN P-CSCF, la query DNS viene inviata e la risposta viene salvata nella cache.
Di seguito sono riportati un esempio di profilo P-CSCF e una configurazione dns-proxy:
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
Con la configurazione, prima SMF tenta di risolvere l'FQDN pcscf6.test.local con il server DNS e salva la risposta nella cache. L'indirizzo P-CSCF statico (fec0::1) viene utilizzato solo quando la risoluzione DNS ha esito negativo. Al successivo controllo della cache da parte di SMF, se il nome host viene trovato verrà utilizzato e la query DNS non verrà eseguita. La voce della cache è scaduta in base al valore TTL (Time to Live) impostato dalla configurazione o dal valore SMF del server DNS.
Risoluzione dei problemi
È necessario esaminare la cache in caso di problemi con la risoluzione DNS. Ad esempio, se SMF restituisce un indirizzo IP imprevisto per P-CSCF, è possibile che nella cache rimanga una voce obsoleta, a causa di un valore TTL errato o perché il meccanismo di scadenza TTL non funziona.
Le voci memorizzate nella cache possono essere visualizzate con show dns-cache CLI.
[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"
}
]
}
]
}
La risoluzione DNS può essere testata con l'interfaccia CLI di test per query 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]
La CLI viene implementata tramite l'ID bug Cisco CSCvz13118. Se si usa una vecchia build SMF e la CLI non è disponibile, le voci della cache possono essere scaricate sul pod etcd con il comando 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