Sommario

Introduzione

Funzionamento della cache DNS

Risoluzione dei problemi

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