Pular para o conteúdo principal

← Visão Geral

Operações do OmniNGAP

OmniNGAP é o codec do protocolo NGAP para o Omnitouch 5G Core. NGAP (NG Application Protocol, 3GPP TS 38.413) é o protocolo de sinalização da camada de aplicação transportado pela interface N2 entre uma estação base 5G NR (gNB) e a Função de Gerenciamento de Acesso e Mobilidade (AMF). OmniNGAP compila a sintaxe completa do NGAP ASN.1 do TS 38.413 e fornece codificação e decodificação de Unidades de Dados de Protocolo NGAP (PDUs) usando Regras de Codificação de Pacote Alinhadas (APER), o formato de transmissão exigido pela especificação.

OmniNGAP é consumido como uma dependência de construção:

  • OmniAMF vincula o OmniNGAP para codificar e decodificar cada mensagem que troca com um gNB sobre N2 (Configuração NG, Configuração Inicial de Contexto, transporte NAS, Paginação, gerenciamento de Recursos de Sessão PDU, Liberação de Contexto UE, Transferência, etc.).
  • OmniSMF produz os contenedores de informação SM N2 (por exemplo, o Transferência de Solicitação de Configuração de Recurso de Sessão PDU) que o AMF incorpora dentro das mensagens NGAP antes de serem codificadas. O SMF nunca se comunica diretamente com N2; ele entrega esses contêineres de transferência opacos ao AMF, que é o único par NGAP do gNB.

Como o codec é construído

A sintaxe NGAP é expressa como um conjunto de módulos ASN.1 sob asn1/. No tempo de construção, esses módulos são compilados uma vez, na ordem de dependência, no codec de baixo nível que realiza a codificação e decodificação APER. Essa compilação é uma preocupação de construção apenas - não há nada a configurar ou ajustar em tempo de execução. Os módulos que compõem a sintaxe NGAP são:

Módulo ASN.1Papel
NGAP-CommonDataTypesTipos base compartilhados na sintaxe (Criticality, Presence, ProcedureCode, ProtocolIE-ID)
NGAP-ConstantsCódigo de procedimento, identificador IE e atribuições de constante de cardinalidade
NGAP-ContainersModelos de contêiner genérico de IE de Protocolo / Extensão de Protocolo
NGAP-IEsTodas as definições de Elemento de Informação NGAP, incluindo os contêineres de transferência SM N2
NGAP-PDU-ContentsCorpos de mensagem por procedimento (InitiatingMessage / SuccessfulOutcome / UnsuccessfulOutcome)
NGAP-PDU-DescriptionsTipo NGAP-PDU de nível superior e a tabela de despacho de procedimento elementar

APER (Aligned PER) é usado deliberadamente: o NGAP requer codificação alinhada por TS 38.413, então o codec é gerado no modo APER alinhado em vez de PER não alinhado ou BER.


Forma do PDU: as três variantes de mensagem

Cada NGAP-PDU é uma ESCOLHA de exatamente uma das três variantes (cláusula 9.3.5 do TS 38.413). Uma decodificação, portanto, sempre resulta em uma dessas, e o AMF faz a correspondência de padrões na variante para decidir como proceder:

VarianteQuando apareceSignificado
initiatingMessageAbre um procedimento elementarA primeira mensagem de um procedimento (uma solicitação, um relatório ou uma indicação de uma única vez)
successfulOutcomeFecha um procedimento que teve sucessoA resposta positiva a uma mensagem inicial (para procedimentos que esperam uma resposta)
unsuccessfulOutcomeFecha um procedimento que falhouA resposta negativa, carregando uma Causa (veja a referência de Causa abaixo)

Cada variante é uma SEQUÊNCIA de três campos: o procedureCode (qual procedimento elementar é este - veja a tabela de códigos abaixo), a criticality da mensagem e o value (o corpo da mensagem específico do procedimento). Procedimentos de Classe 2 (fire-and-forget, como Paginação, Transporte NAS de Downlink, Indicação de Erro) não têm resultado bem-sucedido/sem sucesso - consistem apenas em uma initiatingMessage. Procedimentos de Classe 1 (como NGSetup ou InitialContextSetup) têm um ou ambos os resultados.

Criticalidade e Diagnósticos de Criticalidade

Cada IE, e cada mensagem, carrega uma criticality extraída de Criticality ::= ENUMERATED { reject, ignore, notify } (cláusula 9.3.1 do TS 38.413). A criticalidade informa a um receptor o que fazer quando encontra um IE (ou uma mensagem inteira) cujo ID ou tipo não entende, ou que não pode lidar em seu estado atual:

CriticalidadeComportamento do receptor em um item não entendido / não tratado
rejectRejeitar todo o procedimento - o item é essencial, portanto a mensagem não pode ser processada
ignoreIgnorar silenciosamente o item e processar o restante da mensagem
notifyProcessar a mensagem sem o item, mas relatar o item de volta ao remetente em Diagnósticos de Criticalidade

Diagnósticos de Criticalidade (ProtocolIE-ID 19) é o IE que o receptor adiciona à sua resposta ou Indicação de Erro para informar ao remetente exatamente quais IEs foram rejeitados, ignorados ou notificados, e por quê. É assim que as duas extremidades reconciliam discrepâncias de versão ou capacidade sem interromper a associação.

OmniNGAP codifica e decodifica os campos de criticalidade e o IE de Diagnósticos de Criticalidade como qualquer outra parte do PDU. Ele não aplica a política de rejeitar/ignorar/notificar em si - decidir o que fazer com um IE desconhecido ou mal tratado, e construir os Diagnósticos de Criticalidade resultantes, é uma lógica de procedimento que reside no AMF.


Referências de Papel e Especificação 3GPP

EspecificaçãoRelevância
TS 38.413Protocolo NGAP - conjunto de mensagens, Elementos de Informação, códigos de procedimento, valores de causa, codificação APER
TS 38.412Transporte de sinalização N2 - transporte do NGAP sobre SCTP
TS 23.502Procedimentos do sistema 5G que ocorrem sobre N2 (registro, estabelecimento/modificação/liberação de sessão PDU, paginação, transferência)
TS 23.501Arquitetura do sistema 5G - posição do ponto de referência N2 entre gNB e AMF
ITU-T X.691Regras de Codificação de Pacote (PER), a família de codificação que o NGAP usa em forma alinhada

O ASN.1 compilado corresponde à sintaxe NGAP Rel-17 (série h) do TS 38.413, portanto, o conjunto completo de mensagens Rel-17 - incluindo Retomada/Suspensão de Contexto UE, transferência de status inicial da RAN e procedimentos MBS (multicast/broadcast) - está presente no codec compilado.


Procedimentos NGAP Suportados

OmniNGAP compila o conjunto completo de procedimentos elementares NGAP definidos pelo TS 38.413. Qualquer PDU NGAP bem formada para qualquer um desses procedimentos pode ser decodificada, e qualquer termo estruturalmente válido pode ser codificado - o codec não se restringe a um subconjunto. O que é exercido na prática é impulsionado pelo NF consumidor (principalmente o AMF).

A tabela abaixo lista os procedimentos mais relevantes para a operação AMF/SMF, com seus códigos de procedimento atuais conforme atribuído no módulo compilado NGAP-Constants. A direção é a direção da mensagem inicial.

ProcedimentoCódigoDireçãoPropósito
NGSetup21gNB → AMFEstabelecer a associação NG (N2); trocar identidades gNB/AMF, suporte PLMN e slice
RANConfigurationUpdate35gNB → AMFgNB atualiza sua configuração em uma associação estabelecida
AMFConfigurationUpdate0AMF → gNBAMF atualiza suas informações de configuração / associação TNL
NGReset20qualquerRedefinir parte ou toda a associação NG
InitialUEMessage15gNB → AMFPrimeira mensagem NAS de um UE, abrindo uma conexão de sinalização associada ao UE
DownlinkNASTransport4AMF → gNBTransportar um PDU NAS em direção ao UE
UplinkNASTransport46gNB → AMFTransportar um PDU NAS do UE
InitialContextSetup14AMF → gNBEstabelecer contexto UE, segurança e (opcionalmente) recursos de sessão PDU no gNB
UEContextModification40AMF → gNBModificar um contexto UE estabelecido
UEContextReleaseRequest42gNB → AMFgNB solicita a liberação da conexão associada ao UE
UEContextRelease41AMF → gNBAMF ordena a liberação do contexto UE (Comando / Completo)
Paging24AMF → gNBPagar um UE em modo ocioso em uma área de rastreamento
PDUSessionResourceSetup29AMF → gNBConfigurar recursos de sessão PDU no gNB (transporta o contêiner SM N2)
PDUSessionResourceModify26AMF → gNBModificar recursos de sessão PDU existentes
PDUSessionResourceModifyIndication27gNB → AMFModificação de recurso de sessão PDU iniciada pelo gNB
PDUSessionResourceRelease28AMF → gNBLiberar recursos de sessão PDU no gNB
PDUSessionResourceNotify30gNB → AMFNotificar mudança de status de fluxo / sessão QoS
HandoverPreparation12gNB de origem → AMFTransferência baseada em NG: gNB de origem solicita preparação para transferência
HandoverResourceAllocation13AMF → gNB de destinoTransferência baseada em NG: solicitar recursos no gNB de destino
HandoverNotification11gNB de destino → AMFgNB de destino confirma a chegada do UE
HandoverCancel10gNB de origem → AMFCancelar uma transferência em andamento
PathSwitchRequest25gNB → AMFTransferência baseada em Xn: mudar o caminho do plano de usuário N3 para o gNB de destino
ErrorIndication9qualquerRelatar um erro de protocolo não vinculado a um procedimento específico
UEContextResume58gNB → AMFRetomar um contexto UE suspenso (RRC-INACTIVE)
UEContextSuspend59gNB → AMFSuspender um contexto UE

Os outros procedimentos do TS 38.413 estão todos presentes na sintaxe compilada e podem ser codificados/decodificados, mas não fazem parte dos fluxos principais de gerenciamento de conexão e gerenciamento de sessão do AMF. Estes incluem (esta lista é ilustrativa, não exaustiva) transporte NRPPa, gerenciamento de rastreamento, transmissão de mensagem de aviso (PWS), relatório de localização, transferência de informações RIM, relatório de uso de RAT secundário, os procedimentos de transmissão/multicast MBS, início/parada de sobrecarga, indicação de status do AMF, redirecionamento NAS e indicação de não entrega, relatório de transição RRC inativa, transferência de status da RAN e da RAN inicial, e mensagem privada. A sintaxe compilada define o conjunto completo de procedimentos elementares da versão, então qualquer procedimento no TS 38.413 Rel-17 pode ser codificado mesmo quando não está listado aqui.


Fluxos Chave NGAP

As seguintes sequências mostram onde o OmniNGAP realiza codificação/decodificação. O codec é a camada de tradução na borda N2 do AMF; a lógica do procedimento reside no AMF (e, para contêineres SM, no SMF).

Configuração NG

Estabelecimento de associação, executado uma vez por associação gNB–AMF antes de qualquer tráfego UE.

Se o AMF não puder atender o gNB (por exemplo, um PLMN ou slice não suportado), ele codifica um NGSetupFailure carregando um valor de Causa (veja a referência de Causa abaixo).

Configuração de Recurso de Sessão PDU sobre N2

Executa durante o estabelecimento da sessão PDU. O SMF constrói o contêiner de informação SM N2; o AMF o envolve em uma mensagem NGAP e o OmniNGAP codifica todo o PDU.

O codec trata cada contêiner de informação SM como uma estrutura de transferência aninhada dentro da mensagem de Recurso de Sessão PDU. O AMF não interpreta o conteúdo do contêiner SM - ele os retransmite entre o gNB e o SMF sem alterações.

Payloads opacos: PDUs NAS e contêineres SM

Duas famílias de payloads distintas cruzam a interface N2 sem que o NGAP olhe dentro delas, e ambas são modeladas no ASN.1 como OCTET STRING:

  • PDUs NAS - uma mensagem NAS (registro, autenticação, solicitação de estabelecimento de sessão PDU, etc.) é transportada dentro do NGAP como um NAS-PDU OCTET STRING opaco. Ela aparece nos procedimentos de transporte NAS (InitialUEMessage, DownlinkNASTransport, UplinkNASTransport) e também pode ser transportada dentro de mensagens de InitialContextSetup e de sessão PDU. O NGAP a decodifica para os bytes brutos; o AMF passa esses bytes para sua camada NAS (ou os retransmite para o UE) - o NGAP nunca analisa NAS.
  • Contêineres de informação SM - as estruturas de transferência de sessão PDU construídas pelo SMF descritas acima, igualmente transportadas como OCTET STRINGs entre o gNB e o SMF.

A consequência prática é a mesma para ambos: o OmniNGAP garante que o PDU envolvente esteja bem formado e devolve (ou transmite) os bytes internos verbatim. Se esses bytes internos são uma mensagem NAS válida ou um contêiner SM válido é a preocupação da camada NAS e do SMF, respectivamente, nunca do codec NGAP. É por isso que uma falha dentro de um PDU NAS ou contêiner SM nunca aparece como um erro de codificação/decodificação NGAP.


Valores de Causa NGAP

Cada mensagem de falha ou liberação NGAP carrega uma Causa, uma ESCOLHA selecionando um dos cinco grupos de causa definidos no TS 38.413 (cláusula 9.3.1.2). O OmniNGAP codifica e decodifica todos os cinco grupos e seus valores enumerados. A ESCOLHA Cause é:

Grupo de CausaSignificadoUso típico
radioNetworkRazão da camada de rede de rádioResultados de transferência, perda de link de rádio, inatividade do usuário, indisponibilidade de recursos, slice-não-suportado
transportRazão da camada de rede de transporteRecurso de transporte indisponível
nasRazão da camada NASLiberação normal, falha de autenticação, desregistro
protocolErro de protocolo NGAPErros de sintaxe abstrata/transferência, mensagem-não-compatível-com-o-estado-do-receptor
miscRazão diversificadaSobrecarga, falha de hardware, intervenção de O&M, PLMN/SNPN desconhecido

Valores enumerados representativos dentro de cada grupo (todos conforme cláusula 9.3.1.2 do TS 38.413):

GrupoValorSignificado
radioNetworksuccessful-handoverTransferência concluída com sucesso
radioNetworkhandover-cancelledTransferência abortada pelo lado de origem
radioNetworkuser-inactivityConexão liberada devido à inatividade do UE
radioNetworkradio-connection-with-ue-lostLink de rádio para o UE foi perdido
radioNetworkradio-resources-not-availablegNB não tem recursos de rádio para a solicitação
radioNetworkunknown-PDU-session-IDA sessão PDU referenciada é desconhecida no par
radioNetworkslice-not-supportedS-NSSAI solicitado não é suportado
radioNetworkims-voice-eps-fallback-or-rat-fallback-triggeredFallback para EPS/outro RAT para voz IMS
radioNetworkrelease-due-to-ngran-generated-reasonLiberação iniciada pelo NG-RAN
radioNetworkrelease-due-to-5gc-generated-reasonLiberação iniciada pelo 5GC
transporttransport-resource-unavailableNenhum recurso de transporte (N3/TNL) disponível
transportunspecifiedFalha de camada de transporte não especificada
nasnormal-releaseLiberação normal acionada pelo NAS
nasauthentication-failureAutenticação do UE falhou
nasderegisterDesregistro do UE
protocoltransfer-syntax-errorPDU não pôde ser decodificado (sintaxe de transferência ruim)
protocolabstract-syntax-error-rejectPDU semanticamente inválido, rejeitado
protocolmessage-not-compatible-with-receiver-stateMensagem inválida para o estado atual do par
protocolsemantic-errorErro semântico em um PDU de outra forma decodificável
misccontrol-processing-overloadPar está sobrecarregado
mischardware-failureFalha de hardware do par
miscom-interventionIntervenção de operações e manutenção
miscunknown-PLMN-or-SNPNPLMN/SNPN não reconhecido pelo par
miscunspecifiedFalha diversificada não especificada

O grupo radioNetwork é o maior e inclui todo o conjunto Rel-17 (expirações de temporizador de transferência, acesso negado NPN/CAG, RedCap-não-suportado, causas relacionadas ao MBS, e mais). Os valores acima são os mais comumente vistos nos fluxos de gerenciamento de conexão e sessão do AMF.


Integração

Como o AMF usa o OmniNGAP

  • Entrante: Os payloads SCTP recebidos na associação N2 são passados para o ponto de entrada de decodificação do codec, que retorna um PDU NGAP estruturado (uma das três variantes de mensagem - initiatingMessage, successfulOutcome ou unsuccessfulOutcome) ou um erro marcado. PDUs malformadas ou truncadas retornam um erro em vez de travar o AMF, e são registradas para que uma mensagem de par ruim nunca fique silenciosa.
  • Saída: O AMF constrói o termo PDU para o procedimento que está executando, então chama o ponto de entrada de codificação do codec para obter a codificação APER alinhada escrita na associação SCTP. O codificador retorna o resultado como iodata (uma iolist), que o chamador achata para um binário antes da transmissão.
  • O AMF possui toda a semântica do procedimento - população de IE, opcionalidade e tratamento de criticalidade. O OmniNGAP apenas garante que um termo estruturalmente válido codifica para um binário conforme a especificação e que um binário conforme a especificação decodifica para o termo correspondente.

Como o SMF usa o OmniNGAP

O SMF não chama o codec diretamente para transporte N2. Ele constrói os contenedores de transferência de informação SM N2 (por exemplo, Transferência de Solicitação de Configuração de Recurso de Sessão PDU, … Modificar Solicitação Transferência, … Comando de Liberação Transferência) que o AMF incorpora dentro da mensagem NGAP correspondente de Recurso de Sessão PDU. Esses contêineres são transportados como OCTET STRINGs opacos na camada NGAP e codificados/decodificados como parte do PDU envolvente pelo uso do OmniNGAP pelo AMF.