Gerenciador de roteamento de borda
Este módulo inclui definições relacionadas ao gerenciador de roteamento de borda.
Resumo
Todas as funções neste módulo exigem que OPENTHREAD_CONFIG_BORDER_ROUTING_ENABLE
esteja ativado.
O gerenciador de roteamento de borda processa o roteamento bidirecional entre a rede Thread e o link de infraestrutura adjacente (AIL, na sigla em inglês).
Ele emite mensagens de anúncio de roteador (RA) ICMRv6 ND no AIL para anunciar prefixos no link e de rota. Ele também processa mensagens de RA recebidas da infraestrutura e espelha os prefixos descobertos nos dados de rede do Thread para garantir que os dispositivos na malha Thread possam alcançar o AIL pelo roteador de borda.
O gerenciador de roteamento gerencia o prefixo roteável off-malha (OMR, na sigla em inglês) nos dados da rede Thread, que configura dispositivos Thread com um endereço IPv6 off-malha roteável adequado. Ele anuncia a acessibilidade desse prefixo na AIL incluindo-o nas mensagens de RA emitidas como uma opção de informações de rota (RIO, na sigla em inglês) IPv6.
O Routing Manager também monitora e adiciona o prefixo "on-link" à rede da infraestrutura. Se um roteador em AIL já estiver fornecendo mensagens RA com uma opção de informação de prefixo (PIO, na sigla em inglês) IPv6 que permite que dispositivos IPv6 no link configurem o próprio endereço IPv6 unicast roteável, esse endereço poderá ser usado por dispositivos Thread para acessar a AIL. Se o roteador de borda não encontrar essa mensagem de RA no AIL, ele vai gerar um prefixo no link de ULA que será anunciado em AIL nas mensagens de RA emitidas.
Enumerações |
|
---|---|
otBorderRoutingDhcp6PdState{
|
enum Esta enumeração representa o estado do estado de delegação do prefixo DHCPv6. |
otBorderRoutingState{
|
enum Representa o estado do gerenciador de roteamento de borda. |
Typedefs |
|
---|---|
otBorderRoutingPrefixTableEntry
|
typedef Representa uma entrada da tabela de prefixos descobertos. |
otBorderRoutingPrefixTableIterator
|
typedef Representa um iterador para iterar na tabela de prefixos descobertos pelo roteador de borda. |
otBorderRoutingRouterEntry
|
typedefstruct otBorderRoutingRouterEntry
Representa um roteador descoberto no link da infraestrutura. |
otPdProcessedRaInfo
|
typedefstruct otPdProcessedRaInfo
Representa um grupo de dados de mensagens de RA geradas pela plataforma e processadas. |
Funções |
|
---|---|
otBorderRoutingClearRouteInfoOptionPreference(otInstance *aInstance)
|
void
Limpa um valor de preferência definido anteriormente para as opções de informações do trajeto anunciadas.
|
otBorderRoutingClearRoutePreference(otInstance *aInstance)
|
void
Limpa um valor de preferência definido anteriormente para rotas publicadas nos dados de rede.
|
otBorderRoutingDhcp6PdGetState(otInstance *aInstance)
|
Recebe o estado atual da delegação de prefixo DHCPv6.
|
otBorderRoutingDhcp6PdSetEnabled(otInstance *aInstance, bool aEnabled)
|
void
Ativa / desativa a delegação de prefixo DHCPv6.
|
otBorderRoutingGetFavoredNat64Prefix(otInstance *aInstance, otIp6Prefix *aPrefix, otRoutePreference *aPreference)
|
Recebe o prefixo NAT64 preferido.
|
otBorderRoutingGetFavoredOmrPrefix(otInstance *aInstance, otIp6Prefix *aPrefix, otRoutePreference *aPreference)
|
Recebe o prefixo Off-Mesh-Routable (OMR) favorecido.
|
otBorderRoutingGetFavoredOnLinkPrefix(otInstance *aInstance, otIp6Prefix *aPrefix)
|
Recebe o prefixo no link favorito no momento.
|
otBorderRoutingGetNat64Prefix(otInstance *aInstance, otIp6Prefix *aPrefix)
|
Recebe o prefixo NAT64 local do roteador de borda.
|
otBorderRoutingGetNextPrefixTableEntry(otInstance *aInstance, otBorderRoutingPrefixTableIterator *aIterator, otBorderRoutingPrefixTableEntry *aEntry)
|
Itera nas entradas na tabela de prefixos descobertos do roteador de borda.
|
otBorderRoutingGetNextRouterEntry(otInstance *aInstance, otBorderRoutingPrefixTableIterator *aIterator, otBorderRoutingRouterEntry *aEntry)
|
Itera as entradas de roteador descobertas no link da infraestrutura.
|
otBorderRoutingGetOmrPrefix(otInstance *aInstance, otIp6Prefix *aPrefix)
|
Recebe o prefixo off-line-Routable (OMR, na sigla em inglês), por exemplo,
fdfc:1ff5:1512:5622::/64 . |
otBorderRoutingGetOnLinkPrefix(otInstance *aInstance, otIp6Prefix *aPrefix)
|
Recebe o prefixo no link local do link de infraestrutura adjacente.
|
otBorderRoutingGetPdOmrPrefix(otInstance *aInstance, otBorderRoutingPrefixTableEntry *aPrefixInfo)
|
Recebe o prefixo de delegação de prefixo (PD, na sigla em inglês) do DHCPv6 fornecido fora da malha roteável (OMR).
|
otBorderRoutingGetPdProcessedRaInfo(otInstance *aInstance, otPdProcessedRaInfo *aPdProcessedRaInfo)
|
Recebe os dados da mensagem de RA gerada pela plataforma e processada.
|
otBorderRoutingGetRouteInfoOptionPreference(otInstance *aInstance)
|
Recebe a preferência atual usada ao divulgar Opções de informações de trajeto (RIO, na sigla em inglês) em mensagens de anúncio de roteador enviadas pelo link da infraestrutura.
|
otBorderRoutingGetRoutePreference(otInstance *aInstance)
|
Recebe a preferência atual usada para rotas publicadas nos dados de rede.
|
otBorderRoutingGetState(otInstance *aInstance)
|
Recebe o estado atual do gerenciador de roteamento de borda.
|
otBorderRoutingInit(otInstance *aInstance, uint32_t aInfraIfIndex, bool aInfraIfIsRunning)
|
Inicializa o gerenciador de roteamento de borda na interface de infraestrutura especificada.
|
otBorderRoutingPrefixTableInitIterator(otInstance *aInstance, otBorderRoutingPrefixTableIterator *aIterator)
|
void
Inicializa um
otBorderRoutingPrefixTableIterator . |
otBorderRoutingSetEnabled(otInstance *aInstance, bool aEnabled)
|
Ativa ou desativa o Gerenciador de roteamento de borda.
|
otBorderRoutingSetRouteInfoOptionPreference(otInstance *aInstance, otRoutePreference aPreference)
|
void
Define explicitamente a preferência a ser usada ao divulgar Opções de informações de rota (RIO, na sigla em inglês) em mensagens de anúncio de roteador enviadas pelo link da infraestrutura.
|
otBorderRoutingSetRoutePreference(otInstance *aInstance, otRoutePreference aPreference)
|
void
Define explicitamente a preferência de rotas publicadas nos dados de rede.
|
Estruturas |
|
---|---|
otBorderRoutingPrefixTableEntry |
Representa uma entrada da tabela de prefixos descobertos. |
otBorderRoutingPrefixTableIterator |
Representa um iterador para iterar na tabela de prefixos descobertos pelo roteador de borda. |
otBorderRoutingRouterEntry |
Representa um roteador descoberto no link da infraestrutura. |
otPdProcessedRaInfo |
Representa um grupo de dados de mensagens de RA geradas pela plataforma e processadas. |
Enumerações
otBorderRoutingDhcp6PdState
otBorderRoutingDhcp6PdState
Esta enumeração representa o estado do estado de delegação do prefixo DHCPv6.
Propriedades | |
---|---|
OT_BORDER_ROUTING_DHCP6_PD_STATE_DISABLED
|
O DHCPv6 PD está desativado no roteador de borda. |
OT_BORDER_ROUTING_DHCP6_PD_STATE_RUNNING
|
O DP DHCPv6 está ativado e vai tentar solicitar e publicar um prefixo. |
OT_BORDER_ROUTING_DHCP6_PD_STATE_STOPPED
|
O DP DHCPv6 está ativado, mas não vai tentar solicitar e publicar um prefixo. |
otBorderRoutingState
otBorderRoutingState
Representa o estado do gerenciador de roteamento de borda.
Propriedades | |
---|---|
OT_BORDER_ROUTING_STATE_DISABLED
|
O gerenciador de roteamento é inicializado, mas está desativado. |
OT_BORDER_ROUTING_STATE_RUNNING
|
O Gerenciador de roteamento foi inicializado, ativado e está em execução. |
OT_BORDER_ROUTING_STATE_STOPPED
|
O gerenciador de roteamento foi inicializado e ativado, mas está interrompido no momento. |
OT_BORDER_ROUTING_STATE_UNINITIALIZED
|
O gerenciador de roteamento não foi inicializado. |
Typedefs
otBorderRoutingPrefixTableEntry
struct otBorderRoutingPrefixTableEntry otBorderRoutingPrefixTableEntry
Representa uma entrada da tabela de prefixos descobertos.
As entradas na tabela descoberta rastreiam as opções de informações de prefixo/rota nas mensagens de anúncio de roteador recebidas de outros roteadores no link da infraestrutura.
otBorderRoutingPrefixTableIterator
struct otBorderRoutingPrefixTableIterator otBorderRoutingPrefixTableIterator
Representa um iterador para iterar na tabela de prefixos descobertos pelo roteador de borda.
Os campos nesse tipo são opacos (destinados ao uso apenas pelo núcleo do OpenThread) e, portanto, não podem ser acessados nem usados pelo autor da chamada.
Antes de usar um iterador, ele PRECISA ser inicializado com otBorderRoutingPrefixTableInitIterator()
.
otBorderRoutingRouterEntry
struct otBorderRoutingRouterEntry otBorderRoutingRouterEntry
Representa um roteador descoberto no link da infraestrutura.
otPdProcessedRaInfo
struct otPdProcessedRaInfo otPdProcessedRaInfo
Representa um grupo de dados de mensagens de RA geradas pela plataforma e processadas.
Funções
otBorderRoutingClearRouteInfoOptionPreference
void otBorderRoutingClearRouteInfoOptionPreference( otInstance *aInstance )
Limpa um valor de preferência definido anteriormente para as opções de informações do trajeto anunciadas.
Após uma chamada para essa função, a BR usará o papel do dispositivo para determinar a preferência de RIO: preferência média quando estiver na função de roteador/líder e preferência baixa quando estiver na função filha.
Detalhes | |||
---|---|---|---|
Parâmetros |
|
otBorderRoutingClearRoutePreference
void otBorderRoutingClearRoutePreference( otInstance *aInstance )
Limpa um valor de preferência definido anteriormente para rotas publicadas nos dados de rede.
Após uma chamada para essa função, BR vai determinar a preferência automaticamente com base na função do dispositivo e na qualidade do link (para o pai ao atuar como dispositivo final).
Detalhes | |||
---|---|---|---|
Parâmetros |
|
otBorderRoutingDhcp6PdGetState
otBorderRoutingDhcp6PdState otBorderRoutingDhcp6PdGetState( otInstance *aInstance )
Recebe o estado atual da delegação de prefixo DHCPv6.
A ativação do OPENTHREAD_CONFIG_BORDER_ROUTING_DHCP6_PD_ENABLE
é necessária.
Detalhes | |||
---|---|---|---|
Parâmetros |
|
||
Retorna |
O estado atual da delegação do prefixo DHCPv6.
|
otBorderRoutingDhcp6PdSetEnabled
void otBorderRoutingDhcp6PdSetEnabled( otInstance *aInstance, bool aEnabled )
Ativa / desativa a delegação de prefixo DHCPv6.
É preciso ativar OPENTHREAD_CONFIG_BORDER_ROUTING_DHCP6_PD_ENABLE
.
Detalhes | |||||
---|---|---|---|---|---|
Parâmetros |
|
otBorderRoutingGetFavoredNat64Prefix
otError otBorderRoutingGetFavoredNat64Prefix( otInstance *aInstance, otIp6Prefix *aPrefix, otRoutePreference *aPreference )
Recebe o prefixo NAT64 preferido.
O prefixo NAT64 preferido pode ser descoberto no link da infraestrutura ou pode ser o prefixo NAT64 local do dispositivo.
Detalhes | |||||||
---|---|---|---|---|---|---|---|
Parâmetros |
|
||||||
Valores de retorno |
|
otBorderRoutingGetFavoredOmrPrefix
otError otBorderRoutingGetFavoredOmrPrefix( otInstance *aInstance, otIp6Prefix *aPrefix, otRoutePreference *aPreference )
Recebe o prefixo Off-Mesh-Routable (OMR) favorecido.
O prefixo OMR favorecido pode ser descoberto nos dados de rede ou pode ser o prefixo OMR local do dispositivo.
Detalhes | |||||||
---|---|---|---|---|---|---|---|
Parâmetros |
|
||||||
Valores de retorno |
|
otBorderRoutingGetFavoredOnLinkPrefix
otError otBorderRoutingGetFavoredOnLinkPrefix( otInstance *aInstance, otIp6Prefix *aPrefix )
Recebe o prefixo no link favorito no momento.
O prefixo favorito é um prefixo on-link descoberto no link da infraestrutura ou o prefixo on-link local.
Detalhes | |||||
---|---|---|---|---|---|
Parâmetros |
|
||||
Valores de retorno |
|
otBorderRoutingGetNat64Prefix
otError otBorderRoutingGetNat64Prefix( otInstance *aInstance, otIp6Prefix *aPrefix )
Recebe o prefixo NAT64 local do roteador de borda.
O prefixo NAT64 pode não ser anunciado na rede Thread.
É preciso ativar OPENTHREAD_CONFIG_NAT64_BORDER_ROUTING_ENABLE
.
Detalhes | |||||
---|---|---|---|---|---|
Parâmetros |
|
||||
Valores de retorno |
|
otBorderRoutingGetNextPrefixTableEntry
otError otBorderRoutingGetNextPrefixTableEntry( otInstance *aInstance, otBorderRoutingPrefixTableIterator *aIterator, otBorderRoutingPrefixTableEntry *aEntry )
Itera nas entradas na tabela de prefixos descobertos do roteador de borda.
As entradas de prefixo associadas ao mesmo roteador descoberto em um link de infraestrutura têm a garantia de serem agrupadas (recuperadas de ponta a ponta).
Detalhes | |||||||
---|---|---|---|---|---|---|---|
Parâmetros |
|
||||||
Valores de retorno |
|
otBorderRoutingGetNextRouterEntry
otError otBorderRoutingGetNextRouterEntry( otInstance *aInstance, otBorderRoutingPrefixTableIterator *aIterator, otBorderRoutingRouterEntry *aEntry )
Itera as entradas de roteador descobertas no link da infraestrutura.
Detalhes | |||||||
---|---|---|---|---|---|---|---|
Parâmetros |
|
||||||
Valores de retorno |
|
otBorderRoutingGetOmrPrefix
otError otBorderRoutingGetOmrPrefix( otInstance *aInstance, otIp6Prefix *aPrefix )
Recebe o prefixo off-line-Routable (OMR, na sigla em inglês), por exemplo, fdfc:1ff5:1512:5622::/64
.
Um prefixo OMR é um prefixo de 64 bits gerado aleatoriamente e publicado na rede Thread se ainda não houver um prefixo OMR. Esse prefixo pode ser acessado pela rede Wi-Fi ou Ethernet local.
Observação: quando o DHCPv6 PD está ativado, o roteador de borda pode publicar o prefixo do DHCPv6 PD.
Detalhes | |||||
---|---|---|---|---|---|
Parâmetros |
|
||||
Valores de retorno |
|
otBorderRoutingGetPdOmrPrefix
otBorderRoutingGetOnLinkPrefix
otError otBorderRoutingGetOnLinkPrefix( otInstance *aInstance, otIp6Prefix *aPrefix )
Recebe o prefixo no link local do link de infraestrutura adjacente.
O prefixo no link local é de 64 bits anunciado no link da infraestrutura se ainda não houver um prefixo utilizável anunciado no link.
Detalhes | |||||
---|---|---|---|---|---|
Parâmetros |
|
||||
Valores de retorno |
|
otBorderRoutingGetPdOmrPrefix
otError otBorderRoutingGetPdOmrPrefix( otInstance *aInstance, otBorderRoutingPrefixTableEntry *aPrefixInfo )
Recebe o prefixo de delegação de prefixo (PD, na sigla em inglês) do DHCPv6 fornecido fora da malha roteável (OMR).
Somente os campos mPrefix, mValidLife e mPreferred houver são usados nas informações de prefixo retornadas.
É preciso ativar OPENTHREAD_CONFIG_BORDER_ROUTING_DHCP6_PD_ENABLE
.
Detalhes | |||||||
---|---|---|---|---|---|---|---|
Parâmetros |
|
||||||
Valores de retorno |
|
otBorderRoutingGetOmrPrefix
otPlatBorderRoutingProcessIcmp6Ra
otBorderRoutingGetPdProcessedRaInfo
otError otBorderRoutingGetPdProcessedRaInfo( otInstance *aInstance, otPdProcessedRaInfo *aPdProcessedRaInfo )
Recebe os dados da mensagem de RA gerada pela plataforma e processada.
É preciso ativar OPENTHREAD_CONFIG_BORDER_ROUTING_DHCP6_PD_ENABLE
.
Detalhes | |||||||
---|---|---|---|---|---|---|---|
Parâmetros |
|
||||||
Valores de retorno |
|
otBorderRoutingGetRouteInfoOptionPreference
otRoutePreference otBorderRoutingGetRouteInfoOptionPreference( otInstance *aInstance )
Recebe a preferência atual usada ao divulgar Opções de informações de trajeto (RIO, na sigla em inglês) em mensagens de anúncio de roteador enviadas pelo link da infraestrutura.
A preferência de RIO é determinada da seguinte maneira:
- Se definido explicitamente pelo usuário chamando
otBorderRoutingSetRouteInfoOptionPreference()
, a preferência determinada será usada. - Caso contrário, ele será determinado com base na função atual do dispositivo: preferência média quando estiver na função de roteador/líder e baixa preferência na função filha.
Detalhes | |
---|---|
Retorna |
A preferência atual da opção de informações do trajeto.
|
otBorderRoutingGetRoutePreference
otRoutePreference otBorderRoutingGetRoutePreference( otInstance *aInstance )
Recebe a preferência atual usada para rotas publicadas nos dados de rede.
A preferência é determinada da seguinte maneira:
- Se definido explicitamente pelo usuário chamando
otBorderRoutingSetRoutePreference()
, a preferência determinada será usada. - Caso contrário, ele é determinado automaticamente por
RoutingManager
com base na função do dispositivo e na qualidade do link.
Detalhes | |||
---|---|---|---|
Parâmetros |
|
||
Retorna |
A preferência de rota publicada atualmente.
|
otBorderRoutingGetState
otBorderRoutingState otBorderRoutingGetState( otInstance *aInstance )
Recebe o estado atual do gerenciador de roteamento de borda.
Detalhes | |||
---|---|---|---|
Parâmetros |
|
||
Retorna |
O estado atual do gerenciador de roteamento de borda.
|
otBorderRoutingInit
otError otBorderRoutingInit( otInstance *aInstance, uint32_t aInfraIfIndex, bool aInfraIfIsRunning )
Inicializa o gerenciador de roteamento de borda na interface de infraestrutura especificada.
Detalhes | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parâmetros |
|
||||||||
Valores de retorno |
|
otPlatInfraIfStateChanged.
otBorderRoutingSetEnabled.
otBorderRoutingPrefixTableInitIterator
void otBorderRoutingPrefixTableInitIterator( otInstance *aInstance, otBorderRoutingPrefixTableIterator *aIterator )
Inicializa um otBorderRoutingPrefixTableIterator
.
Um iterador PRECISA ser inicializado antes de ser usado.
Um iterador pode ser inicializado novamente para reiniciar desde o início da tabela.
Ao iterar entradas na tabela, para garantir que os horários de atualização mMsecSinceLastUpdate
das entradas sejam consistentes, eles são fornecidos em relação à hora em que o iterador foi inicializado.
Detalhes | |||||
---|---|---|---|---|---|
Parâmetros |
|
otBorderRoutingSetEnabled
otError otBorderRoutingSetEnabled( otInstance *aInstance, bool aEnabled )
Ativa ou desativa o Gerenciador de roteamento de borda.
Detalhes | |||||
---|---|---|---|---|---|
Parâmetros |
|
||||
Valores de retorno |
|
otBorderRoutingSetRouteInfoOptionPreference
void otBorderRoutingSetRouteInfoOptionPreference( otInstance *aInstance, otRoutePreference aPreference )
Define explicitamente a preferência a ser usada ao divulgar Opções de informações de rota (RIO, na sigla em inglês) em mensagens de anúncio de roteador enviadas pelo link da infraestrutura.
Após uma chamada para essa função, o BR vai usar a preferência definida para todos os RIOs anunciados. A preferência pode ser apagada chamando otBorderRoutingClearRouteInfoOptionPreference()
.
Detalhes | |||||
---|---|---|---|---|---|
Parâmetros |
|
otBorderRoutingSetRoutePreference
void otBorderRoutingSetRoutePreference( otInstance *aInstance, otRoutePreference aPreference )
Define explicitamente a preferência de rotas publicadas nos dados de rede.
Após uma chamada para essa função, BR usará a preferência determinada. A preferência pode ser apagada chamando otBorderRoutingClearRoutePreference()
.
Detalhes | |||||
---|---|---|---|---|---|
Parâmetros |
|
Recursos
Os tópicos de Referência da API OpenThread são originados do código-fonte, disponível no GitHub. Para mais informações ou para contribuir com nossa documentação, consulte Recursos.