Introdução
Este documento descreve como implementar uma solução alternativa para problemas de sincronização de tempo do Network Time Protocol (NTP) em máquinas virtuais do protocolo 5G Subscriber Microservices Infrastructure (SMI) (VMs do protocolo).
Pré-requisitos
Requisitos
A Cisco recomenda que você tenha o conhecimento destes tópicos:
- Cisco SMI
- Arquitetura de plataforma de implantação nativa de nuvem (CNDP) 5G
- Nuvem - Plataforma Red Hat OpenStack 13 (versão "Queens")
- Dockers e Kubernetes
Componentes Utilizados
As informações neste documento são baseadas nestas versões de software e hardware:
- SMI 2020.01.1-21
- Kubernetes v1.16.2
- Diretor da plataforma Red Hat OpenStack 13
As informações neste documento foram criadas a partir de dispositivos em um ambiente de laboratório específico. Todos os dispositivos utilizados neste documento foram iniciados com uma configuração (padrão) inicial. Se a rede estiver ativa, certifique-se de que você entenda o impacto potencial de qualquer comando.
Informações de Apoio
O que é SMI?
O Cisco SMI é uma pilha em camadas de tecnologias e padrões de nuvem que permitem aplicativos baseados em microsserviços das unidades de negócios Cisco Mobility, Cable e Broadband Network Gateway (BNG). Esses aplicativos têm funções semelhantes de gerenciamento de assinantes e requisitos semelhantes de armazenamento de dados.
Atributos:
- O Layer Cloud Stack (tecnologias e padrões) fornece implantações de cima para baixo e acomoda a infraestrutura de nuvem atual.
- Todos os aplicativos compartilham o Common Execution Environment (CEE) para funções que não são de aplicativo (armazenamento de dados, implantação, configuração, telemetria, alarme), o que fornece uma interação e experiência consistentes para todos os pontos de contato e pontos de integração do cliente.
- Os aplicativos e o CEE são implantados em contêineres de microsserviço e conectados com uma malha de serviço inteligente.
- Uma API exposta para implantação, configuração e gerenciamento permite a automação.
O que é CEE?
- O CEE é uma solução de software que foi desenvolvida para monitorar aplicativos móveis e a cabo que são implantados na SMI. O CEE captura informações (métricas principais) dos aplicativos de forma centralizada para que os engenheiros possam depurar e solucionar problemas.
- O CEE é o conjunto comum de ferramentas instaladas para todos os aplicativos. Ele vem equipado com um centro de operações dedicado, que fornece a interface de linha de comando (CLI) e APIs para gerenciar as ferramentas de monitoramento. Apenas um CEE está disponível para cada cluster.
O que são VMs de protocolo?
As VMs de protocolo hospedam os microsserviços do aplicativo Session Management Function (SMF) responsáveis pela conversão do protocolo. Duas VMs de protocolo são implantadas por instância de SMF. Uma VM de protocolo tem pods como GTPc, Interceptação Legal (LI), Radius, Rest, etc.
Problema
Em um nó (protocolo VM) que exibe o problema, você pode ver que a rede tenta usar duas interfaces diferentes para rotear a conectividade para o servidor NTP. No entanto, apenas uma das redes pode acessar o IP.
Quando você executa um ping sem a interface por algum tempo, pode ver que ele causa perda de pacotes.
Alerta de exemplo do CEE:
[pod-name-cnat/global] cee# show alerts active summary
NAME UID SEVERITY STARTS AT SOURCE SUMMARY
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
VoNR_Ded_Bearer_Creat be183f61dd65 major 01-18T16:32:17 System Success percentage of VoNR - PCF Initiated Dedicated Bearer Creation procedure in NR turns less than t...
clock-is-not-in-synch 38a35e9a8bd8 major 01-18T13:11:15 pod-name-cnat-cnat-co Clock not in synch detected on hostname pod-name-cnat-cnat-core-protocol-data1 . Ensure NTP is configu...
clock-is-not-in-synch 4a7e138b8bae major 01-18T13:07:35 pod-name-cnat-cnat-co Clock not in synch detected on hostname pod-name-cnat-cnat-core-protocol-ims2 . Ensure NTP is configur...
clock-is-not-in-synch 5b3e128f0101 major 01-18T12:05:55 pod-name-cnat-cnat-co Clock not in synch detected on hostname pod-name-cnat-cnat-core-protocol-data2 . Ensure NTP is configu...
container-memory-usag f588aa627792 critical 12-28T15:47:30 path-provisioner-v6zx Pod cee-global/path-provisioner-v6zxj/k8s_path-provisioner_path-provisioner-v6zxj_cee-global_f1a1e8fa-...
container-memory-usag 55b2ea84466f critical 12-27T22:27:10 path-provisioner-v6zx Pod cee-global/path-provisioner-v6zxj/ uses high memory 82.69%.
N11_SM_Timeout_SR f6fb82cac197 major 10-31T15:51:16 System This alert is fired when the increase in timeout for N11 messages toward AMF crosses threshold
Radius_Server_RTT 94ac2cff43a3 warning 10-28T05:08:56 System RTT for Radius Server: 216.x.x.x, Port: 1813 in namespace: smf-mvno is more than 5 ms.
Radius_Server_RTT d02b60b3a3a4 warning 10-28T05:05:56 System RTT for Radius Server: 52.x.x.x, Port: 1813 in namespace: smf-mvno is more than 5 ms.
Radius_Server_RTT 9afcee101013 warning 10-28T05:05:36 System RTT for Radius Server: 52.x.x.x, Port: 1813 in namespace: smf-mvno is more than 5 ms.
N11_SM_Timeout_SR 206c4bbccf21 major 10-20T13:26:16 System This alert is fired when the increase in timeout for N11 messages toward AMF crosses threshold
N4_Total_Outbound_Int 4e0f3c1d6300 major 10-20T09:01:23 System This alert is fired when the percentage of N4 outbound responses sent is lesser than threshold %.
N4_Total_Outbound_Int 3e2fed624704 major 10-20T08:21:23 System This alert is fired when the percentage of N4 outbound responses sent is lesser than threshold %.
watchdog 97a7976a4103 minor 05-05T09:10:58 System This is an alert meant to ensure that the entire alerting pipeline is functional. This alert is always...
Troubleshooting
-
Efetue login nas VMs afetadas e execute este comando: ip route | grep -i default
Neste exemplo, você pode ver duas rotas padrão, o que está incorreto. (Deve haver apenas uma rota padrão.)
ubuntu@pod-name-cnat-cnat-core-protocol-ims2:~$ ip route | grep -i default
default via 172.16.x.x dev ens4 proto dhcp src 172.16.x.x metric 100
default via 172.16.x.x dev ens3 proto dhcp src 172.16.x.x metric 100
-
Verifique o status do serviço chronyd (NTP). Mesmo que o serviço esteja ativo, você verá erros do tipo "Não é possível sincronizar".
Saída de exemplo:
root@pod-name-cnat-cnat-core-protocol-data1:/home/ubuntu# systemctl status chronyd.service
chrony.service - chrony, an NTP client/serverLoaded: loaded (/lib/systemd/system/chrony.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2021-01-08 07:19:19 UTC; 11 months 24 days ago
Docs: man:chronyd(8)
man:chronyc(1)
man:chrony.conf(5)
Main PID: 4300 (chronyd)
Tasks: 1 (limit: 4915)
CGroup: /system.slice/chrony.service
└─4300 /usr/sbin/chronyd
Dec 30 17:06:28 pod-name-cnat-cnat-core-protocol-data1 chronyd[4300]: Selected source 5.196.x.x
Dec 31 06:37:11 pod-name-cnat-cnat-core-protocol-data1 chronyd[4300]: Can't synchronise: no selectable sources
Dec 31 17:15:31 pod-name-cnat-cnat-core-protocol-data1 chronyd[4300]: Selected source 5.196.x.x
Jan 01 06:29:43 pod-name-cnat-cnat-core-protocol-data1 chronyd[4300]: Can't synchronise: no selectable sources
Jan 01 16:50:02 pod-name-cnat-cnat-core-protocol-data1 chronyd[4300]: Selected source 5.196.x.x
Jan 01 19:25:05 pod-name-cnat-cnat-core-protocol-data1 chronyd[4300]: Can't synchronise: no selectable sources
-
Verifique o status do serviço de configuração de rede. (Está inativo.)
ubuntu@pod-name-cnat-cnat-core-protocol-data1:~$ systemctl status network-config
network-config.service - Job that configures for routes
Loaded: loaded (/etc/systemd/system/network-config.service; enabled; vendor preset: enabled)
Active: inactive (dead) since Fri 2021-01-08 09:29:05 UTC; 1 years 0 months ago
Process: 1185 ExecStart=/etc/cisco/network-config.sh start (code=killed, signal=TERM)
Main PID: 1185 (code=killed, signal=TERM)
Solução
Note: Esse procedimento não causa nenhum tempo de inatividade no aplicativo.
-
Edite o script de serviço de configuração de rede (/etc/systemd/system/network-config.service) no nó afetado para adicionar estas linhas:
root@pod-name-cnat-cnat-core-protocol-data1:/home/ubuntu# vim /etc/systemd/system/network-config.service
Restart=always
RestartSec=10s
StartLimitIntervalSec=300s
StartLimitBurst=30
-
Inicie o serviço de configuração de rede:
root@pod-name-cnat-cnat-core-protocol-data1:/home/ubuntu# systemctl start network-config
-
Recarregue a configuração com systemctl:
root@pod-name-cnat-cnat-core-protocol-data1:/home/ubuntu# systemctl daemon-reload
-
Reinicie o serviço chronyd:
root@pod-name-cnat-cnat-core-protocol-data1:/home/ubuntu# systemctl restart chronyd.service
Verificação
Após concluir as etapas da solução alternativa, execute este comando para verificar se os problemas foram corrigidos:
for server in $(awk '/protocol/{print $1}' /etc/hosts); do ssh $server "hostname && timedatectl status && chronyc sources -vn" ; done
Note: Um valor de 'Relógio do sistema sincronizado' igual a 'sim' indica que os problemas foram corrigidos.
Saída de exemplo:
ubuntu@pod-name-cnat-cnat-core-master1:~$ for server in $(awk '/protocol/{print $1}' /etc/hosts); do ssh $server "hostname && timedatectl status && chronyc sources -vn" ; done
pod-name-cnat-cnat-core-protocol-data1
Local time: Tue 2021-09-07 10:22:16 UTC
Universal time: Tue 2021-09-07 10:22:16 UTC
RTC time: Tue 2021-09-07 10:22:17
Time zone: Etc/UTC (UTC, +0000)
System clock synchronized: yes
systemd-timesyncd.service active: no
RTC in local TZ: no
210 Number of sources = 1
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^* svtsnq01.mgmt 1 6 170 282 -1100us[-1858us] +/- 47ms
pod-name-cnat-cnat-core-protocol-data2
Local time: Tue 2021-09-07 10:22:16 UTC
Universal time: Tue 2021-09-07 10:22:16 UTC
RTC time: Tue 2021-09-07 10:22:17
Time zone: Etc/UTC (UTC, +0000)
System clock synchronized: yes
systemd-timesyncd.service active: no
RTC in local TZ: no
210 Number of sources = 1
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^* svtsnq01.mgmt 1 6 74 206 -218us[-1550us] +/- 46ms
pod-name-cnat-cnat-core-protocol-ims1
Local time: Tue 2021-09-07 10:22:17 UTC
Universal time: Tue 2021-09-07 10:22:17 UTC
RTC time: Tue 2021-09-07 10:22:18
Time zone: Etc/UTC (UTC, +0000)
System clock synchronized: yes
systemd-timesyncd.service active: no
RTC in local TZ: no
210 Number of sources = 1
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^* svtsnq01.mgmt 1 6 77 24 +796us[+1044us] +/- 47ms
pod-name-cnat-cnat-core-protocol-ims2
Local time: Tue 2021-09-07 10:22:17 UTC
Universal time: Tue 2021-09-07 10:22:17 UTC
RTC time: Tue 2021-09-07 10:22:18
Time zone: Etc/UTC (UTC, +0000)
System clock synchronized: yes
systemd-timesyncd.service active: no
RTC in local TZ: no
210 Number of sources = 1
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^* svtsnq01.mgmt 1 6 17 98 +2176us[+2275us] +/- 47ms