Eu acho que a Vivo usou outro caminho, pois das vezes que isto aconteceu, não houve mudança na qualidade da chamada, só mudança de sinal de 5G/4G para 3G. A ligação se manteve limpa. Na verdade, a Vivo resolveu configurar sua rede da forma mais complexa possível.Não é gambiarra. A própria especificação do VoLTE prevê a transferência pra CS no 3G caso o VoLTE caia. Na verdade, fiquei surpreso em ver que a Tim não está utilizando isso.
Basicamente, a operadora nota que a chamada via VoLTE foi encerrada de forma abrupta e imediatamente “liga” para o UE via CS. O UE, que já está preparado, atende a ligação automaticamente em background e o usuário nem nota a mudança (a não ser pela queda de qualidade).
É realmente mágica, porque precisa existir uma cooperação muito grande dos sistemas para a NodeB encontrar o terminal do usuário o mais rápido possível e a ligação não ficar muda por mais que alguns ms.
Inclusive, o handover do IMS é suportado até pelo VoNR (handover, não fall back pra iniciar chamadas em 3G pelo 5G SA).
Como relatei em outros momentos, ela usa o protocolo CHAP para autenticar seus clientes na rede. Teoricamente, as chamadas VoLTE tem prioridade, até um certo ponto. Exemplificando, o CHAP usa o método de de desafio-resposta, onde manda um desafio com um resultado já definido, a outra ponta resolve o desafio e quem emitiu o desafio compara se os resultados "batem". Se sim, a conexão é liberada. Se não, ela é totalmente cortada. As duas pontas podem solicitar este desafio a qualquer momento.
Imagine num cenário ideal estar num lugar com excelente cobertura 4G dela. Se você iniciar uma ligação e ligar os dados móveis (que realiza o handshake triplo), a ligação se manterá no VoLTE até ser encerrada, logo após a conexão é reservada para a conclusão do desafio-resposta e só depois liberada. Se tentar fazer uma chamada quando rola este desafio, a comutação de pacotes fica indisponível e é feito o CSFB.
Das vezes que a minha ligação foi "derrubada" para o 3G no meio dela, eu suspeito que foi porque o APN estava configurado somente IPv4 (do jeito que a Vivo mandou pelo OMACP) e o recomendado é IPv4/IPv6, mas outra causa provável é porque geralmente as pessoas usam o ponto de acesso padrão que vem no chip, que é o PAP. Se a Vivo tenta autenticar sua linha e as duas pontas não possuem o mesmo protocolo de autenticação, isto derruba a comutação de pacotes por um instante (nada tão demorado), e isto interfere na conexão do VoLTE também.