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.1 | Papel |
|---|---|
| NGAP-CommonDataTypes | Tipos base compartilhados na sintaxe (Criticality, Presence, ProcedureCode, ProtocolIE-ID) |
| NGAP-Constants | Código de procedimento, identificador IE e atribuições de constante de cardinalidade |
| NGAP-Containers | Modelos de contêiner genérico de IE de Protocolo / Extensão de Protocolo |
| NGAP-IEs | Todas as definições de Elemento de Informação NGAP, incluindo os contêineres de transferência SM N2 |
| NGAP-PDU-Contents | Corpos de mensagem por procedimento (InitiatingMessage / SuccessfulOutcome / UnsuccessfulOutcome) |
| NGAP-PDU-Descriptions | Tipo 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:
| Variante | Quando aparece | Significado |
|---|---|---|
initiatingMessage | Abre um procedimento elementar | A primeira mensagem de um procedimento (uma solicitação, um relatório ou uma indicação de uma única vez) |
successfulOutcome | Fecha um procedimento que teve sucesso | A resposta positiva a uma mensagem inicial (para procedimentos que esperam uma resposta) |
unsuccessfulOutcome | Fecha um procedimento que falhou | A 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:
| Criticalidade | Comportamento do receptor em um item não entendido / não tratado |
|---|---|
reject | Rejeitar todo o procedimento - o item é essencial, portanto a mensagem não pode ser processada |
ignore | Ignorar silenciosamente o item e processar o restante da mensagem |
notify | Processar 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ção | Relevância |
|---|---|
| TS 38.413 | Protocolo NGAP - conjunto de mensagens, Elementos de Informação, códigos de procedimento, valores de causa, codificação APER |
| TS 38.412 | Transporte de sinalização N2 - transporte do NGAP sobre SCTP |
| TS 23.502 | Procedimentos do sistema 5G que ocorrem sobre N2 (registro, estabelecimento/modificação/liberação de sessão PDU, paginação, transferência) |
| TS 23.501 | Arquitetura do sistema 5G - posição do ponto de referência N2 entre gNB e AMF |
| ITU-T X.691 | Regras 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.
| Procedimento | Código | Direção | Propósito |
|---|---|---|---|
| NGSetup | 21 | gNB → AMF | Estabelecer a associação NG (N2); trocar identidades gNB/AMF, suporte PLMN e slice |
| RANConfigurationUpdate | 35 | gNB → AMF | gNB atualiza sua configuração em uma associação estabelecida |
| AMFConfigurationUpdate | 0 | AMF → gNB | AMF atualiza suas informações de configuração / associação TNL |
| NGReset | 20 | qualquer | Redefinir parte ou toda a associação NG |
| InitialUEMessage | 15 | gNB → AMF | Primeira mensagem NAS de um UE, abrindo uma conexão de sinalização associada ao UE |
| DownlinkNASTransport | 4 | AMF → gNB | Transportar um PDU NAS em direção ao UE |
| UplinkNASTransport | 46 | gNB → AMF | Transportar um PDU NAS do UE |
| InitialContextSetup | 14 | AMF → gNB | Estabelecer contexto UE, segurança e (opcionalmente) recursos de sessão PDU no gNB |
| UEContextModification | 40 | AMF → gNB | Modificar um contexto UE estabelecido |
| UEContextReleaseRequest | 42 | gNB → AMF | gNB solicita a liberação da conexão associada ao UE |
| UEContextRelease | 41 | AMF → gNB | AMF ordena a liberação do contexto UE (Comando / Completo) |
| Paging | 24 | AMF → gNB | Pagar um UE em modo ocioso em uma área de rastreamento |
| PDUSessionResourceSetup | 29 | AMF → gNB | Configurar recursos de sessão PDU no gNB (transporta o contêiner SM N2) |
| PDUSessionResourceModify | 26 | AMF → gNB | Modificar recursos de sessão PDU existentes |
| PDUSessionResourceModifyIndication | 27 | gNB → AMF | Modificação de recurso de sessão PDU iniciada pelo gNB |
| PDUSessionResourceRelease | 28 | AMF → gNB | Liberar recursos de sessão PDU no gNB |
| PDUSessionResourceNotify | 30 | gNB → AMF | Notificar mudança de status de fluxo / sessão QoS |
| HandoverPreparation | 12 | gNB de origem → AMF | Transferência baseada em NG: gNB de origem solicita preparação para transferência |
| HandoverResourceAllocation | 13 | AMF → gNB de destino | Transferência baseada em NG: solicitar recursos no gNB de destino |
| HandoverNotification | 11 | gNB de destino → AMF | gNB de destino confirma a chegada do UE |
| HandoverCancel | 10 | gNB de origem → AMF | Cancelar uma transferência em andamento |
| PathSwitchRequest | 25 | gNB → AMF | Transferência baseada em Xn: mudar o caminho do plano de usuário N3 para o gNB de destino |
| ErrorIndication | 9 | qualquer | Relatar um erro de protocolo não vinculado a um procedimento específico |
| UEContextResume | 58 | gNB → AMF | Retomar um contexto UE suspenso (RRC-INACTIVE) |
| UEContextSuspend | 59 | gNB → AMF | Suspender 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-PDUOCTET 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 Causa | Significado | Uso típico |
|---|---|---|
| radioNetwork | Razão da camada de rede de rádio | Resultados de transferência, perda de link de rádio, inatividade do usuário, indisponibilidade de recursos, slice-não-suportado |
| transport | Razão da camada de rede de transporte | Recurso de transporte indisponível |
| nas | Razão da camada NAS | Liberação normal, falha de autenticação, desregistro |
| protocol | Erro de protocolo NGAP | Erros de sintaxe abstrata/transferência, mensagem-não-compatível-com-o-estado-do-receptor |
| misc | Razão diversificada | Sobrecarga, 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):
| Grupo | Valor | Significado |
|---|---|---|
| radioNetwork | successful-handover | Transferência concluída com sucesso |
| radioNetwork | handover-cancelled | Transferência abortada pelo lado de origem |
| radioNetwork | user-inactivity | Conexão liberada devido à inatividade do UE |
| radioNetwork | radio-connection-with-ue-lost | Link de rádio para o UE foi perdido |
| radioNetwork | radio-resources-not-available | gNB não tem recursos de rádio para a solicitação |
| radioNetwork | unknown-PDU-session-ID | A sessão PDU referenciada é desconhecida no par |
| radioNetwork | slice-not-supported | S-NSSAI solicitado não é suportado |
| radioNetwork | ims-voice-eps-fallback-or-rat-fallback-triggered | Fallback para EPS/outro RAT para voz IMS |
| radioNetwork | release-due-to-ngran-generated-reason | Liberação iniciada pelo NG-RAN |
| radioNetwork | release-due-to-5gc-generated-reason | Liberação iniciada pelo 5GC |
| transport | transport-resource-unavailable | Nenhum recurso de transporte (N3/TNL) disponível |
| transport | unspecified | Falha de camada de transporte não especificada |
| nas | normal-release | Liberação normal acionada pelo NAS |
| nas | authentication-failure | Autenticação do UE falhou |
| nas | deregister | Desregistro do UE |
| protocol | transfer-syntax-error | PDU não pôde ser decodificado (sintaxe de transferência ruim) |
| protocol | abstract-syntax-error-reject | PDU semanticamente inválido, rejeitado |
| protocol | message-not-compatible-with-receiver-state | Mensagem inválida para o estado atual do par |
| protocol | semantic-error | Erro semântico em um PDU de outra forma decodificável |
| misc | control-processing-overload | Par está sobrecarregado |
| misc | hardware-failure | Falha de hardware do par |
| misc | om-intervention | Intervenção de operações e manutenção |
| misc | unknown-PLMN-or-SNPN | PLMN/SNPN não reconhecido pelo par |
| misc | unspecified | Falha 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,successfulOutcomeouunsuccessfulOutcome) 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.