Introduction
Ce document décrit le mécanisme de cache DNS (Domain Name System) dans la fonction de gestion de session (SMF) et comment le dépanner.
Fonctionnement du cache DNS
Lorsqu'une requête DNS a lieu au niveau de SMF, la réponse du serveur DNS est mise en cache dans la base de données interne. Le nom de domaine complet (FQDN) pour l'adresse P-CSCF (Proxy Call Session Control Function) est un exemple lorsque l'abonné demande l'option PCO (Extended Protocol Configuration Option) P-CSCF. Si SMF a la configuration FQDN P-CSCF, la requête DNS est envoyée et la réponse est enregistrée dans le cache.
Voici un exemple de profil P-CSCF et de configuration 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
Avec la configuration, la première SMF tente de résoudre le nom de domaine complet pcscf6.test.local avec le serveur DNS et enregistre la réponse dans le cache. L'adresse statique P-CSCF (fec0::1) est utilisée uniquement en cas d'échec de la résolution DNS. La prochaine fois que SMF se connecte au cache et que le nom d'hôte est trouvé, il est utilisé et la requête DNS ne se produit pas. L'entrée du cache a expiré en fonction de la durée de vie définie par la configuration SMF ou de la valeur du serveur DNS.
Dépannage
Le cache doit être étudié en cas de problème avec la résolution DNS, par exemple, si SMF retourne une adresse IP inattendue pour P-CSCF, une ancienne entrée peut rester dans le cache, en raison d'une valeur TTL incorrecte ou parce que le mécanisme d'expiration TTL ne fonctionne pas pour une raison quelconque.
Les entrées mises en cache peuvent être vues avec 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 résolution DNS peut être testée avec test dns-query CLI.
[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]
L'interface de ligne de commande est implémentée via l'ID de bogue Cisco CSCvz13118. Si une ancienne build SMF est utilisée et que l'interface de ligne de commande n'est pas disponible, les entrées de cache peuvent être abandonnées sur le pod etcd avec la commande 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