Administrador de enrutamiento fronterizo
En este módulo se incluyen definiciones relacionadas con el administrador de enrutamiento fronterizo.
Resumen
Todas las funciones de este módulo requieren que se habilite OPENTHREAD_CONFIG_BORDER_ROUTING_ENABLE
.
El administrador de enrutamiento de frontera controla el enrutamiento bidireccional entre la red de Thread y el vínculo de infraestructura adyacente (AIL).
Emite mensajes de anuncio de router (RA) ICMRv6 ND en AIL para anunciar prefijos de ruta y de vínculo. También procesa los mensajes RA recibidos desde la infraestructura y duplica los prefijos descubiertos en los datos de la red de Thread para garantizar que los dispositivos en la malla de Thread puedan acceder a la AIL a través del router de borde.
El administrador de enrutamiento administra el prefijo Off-Mesh Routable (OMR) en los datos de la red de Thread que configura los dispositivos Thread con una dirección IPv6 enrutable sin conexión adecuada. Anuncia la accesibilidad de este prefijo en AIL incluyéndolo en los mensajes RA emitidos como una opción de información de ruta IPv6 (RIO).
El administrador de enrutamiento también supervisa y agrega un prefijo de vínculo en la red de infraestructura. Si un router de AIL ya proporciona mensajes RA que contienen una opción de información de prefijo IPv6 (PIO) que permite que los dispositivos IPv6 del vínculo configuren por cuenta propia su propia dirección IPv6 de unidifusión enrutable, los dispositivos Thread pueden usar esta dirección para acceder a la AIL. Si el router fronterizo no encuentra ese mensaje RA en AIL, genera un prefijo en el vínculo de ULA que luego lo anuncia en AIL en los mensajes RA emitidos.
Enumeraciones |
|
---|---|
otBorderRoutingDhcp6PdState{
|
enum Esta enumeración representa el estado de la delegación del prefijo DHCPv6. |
otBorderRoutingState{
|
enum Representa el estado del administrador de enrutamientos fronterizos. |
Typedefs |
|
---|---|
otBorderRoutingPrefixTableEntry
|
typedef Representa una entrada de la tabla de prefijos detectados. |
otBorderRoutingPrefixTableIterator
|
typedef Representa un iterador para iterar a través de la tabla de prefijos detectados del router de borde. |
otBorderRoutingRouterEntry
|
typedefstruct otBorderRoutingRouterEntry
Representa un router detectado en el vínculo de la infraestructura. |
otPdProcessedRaInfo
|
typedefstruct otPdProcessedRaInfo
Representa un grupo de datos de mensajes RA generados por la plataforma procesados. |
remotas |
|
---|---|
otBorderRoutingClearRouteInfoOptionPreference(otInstance *aInstance)
|
void
Borra un valor de preferencia establecido previamente para las opciones de información de ruta anunciadas.
|
otBorderRoutingClearRoutePreference(otInstance *aInstance)
|
void
Borra un valor de preferencia establecido previamente para las rutas publicadas en los datos de red.
|
otBorderRoutingDhcp6PdGetState(otInstance *aInstance)
|
Obtiene el estado actual de la delegación del prefijo DHCPv6.
|
otBorderRoutingDhcp6PdSetEnabled(otInstance *aInstance, bool aEnabled)
|
void
Habilita o inhabilita la delegación de prefijo DHCPv6.
|
otBorderRoutingGetFavoredNat64Prefix(otInstance *aInstance, otIp6Prefix *aPrefix, otRoutePreference *aPreference)
|
Obtiene el prefijo NAT64 preferido actualmente.
|
otBorderRoutingGetFavoredOmrPrefix(otInstance *aInstance, otIp6Prefix *aPrefix, otRoutePreference *aPreference)
|
Obtiene el prefijo enrutable sin malla (OMR) preferido actualmente.
|
otBorderRoutingGetFavoredOnLinkPrefix(otInstance *aInstance, otIp6Prefix *aPrefix)
|
Obtiene el prefijo en vínculo preferido actualmente.
|
otBorderRoutingGetNat64Prefix(otInstance *aInstance, otIp6Prefix *aPrefix)
|
Obtiene el prefijo NAT64 local del router de frontera.
|
otBorderRoutingGetNextPrefixTableEntry(otInstance *aInstance, otBorderRoutingPrefixTableIterator *aIterator, otBorderRoutingPrefixTableEntry *aEntry)
|
Itera sobre las entradas de la tabla de prefijos detectados del router de borde.
|
otBorderRoutingGetNextRouterEntry(otInstance *aInstance, otBorderRoutingPrefixTableIterator *aIterator, otBorderRoutingRouterEntry *aEntry)
|
Itera sobre las entradas del router descubiertas en el vínculo de la infraestructura.
|
otBorderRoutingGetOmrPrefix(otInstance *aInstance, otIp6Prefix *aPrefix)
|
Obtiene el prefijo local enrutable sin malla (OMR), por ejemplo,
fdfc:1ff5:1512:5622::/64 . |
otBorderRoutingGetOnLinkPrefix(otInstance *aInstance, otIp6Prefix *aPrefix)
|
Obtiene el prefijo local del vínculo para el vínculo de infraestructura adyacente.
|
otBorderRoutingGetPdOmrPrefix(otInstance *aInstance, otBorderRoutingPrefixTableEntry *aPrefixInfo)
|
Obtiene el prefijo de delegación del prefijo (PD) de DHCPv6 proporcionado fuera de la malla enrutable (OMR).
|
otBorderRoutingGetPdProcessedRaInfo(otInstance *aInstance, otPdProcessedRaInfo *aPdProcessedRaInfo)
|
Obtiene los datos del mensaje de RA generado por la plataforma procesado.
|
otBorderRoutingGetRouteInfoOptionPreference(otInstance *aInstance)
|
Obtiene la preferencia actual que se usa cuando se publican opciones de información de ruta (RIO) en los mensajes de anuncios de router que se envían a través del vínculo de la infraestructura.
|
otBorderRoutingGetRoutePreference(otInstance *aInstance)
|
Obtiene la preferencia actual que se usa para las rutas publicadas en los datos de red.
|
otBorderRoutingGetState(otInstance *aInstance)
|
Obtiene el estado actual del administrador de enrutamientos fronterizos.
|
otBorderRoutingInit(otInstance *aInstance, uint32_t aInfraIfIndex, bool aInfraIfIsRunning)
|
Inicializa el administrador de enrutamientos fronterizos en una interfaz de infraestructura determinada.
|
otBorderRoutingPrefixTableInitIterator(otInstance *aInstance, otBorderRoutingPrefixTableIterator *aIterator)
|
void
Inicializa un
otBorderRoutingPrefixTableIterator . |
otBorderRoutingSetEnabled(otInstance *aInstance, bool aEnabled)
|
Habilita o inhabilita el administrador de enrutamiento fronterizo.
|
otBorderRoutingSetRouteInfoOptionPreference(otInstance *aInstance, otRoutePreference aPreference)
|
void
Establece de forma explícita la preferencia que se usará cuando se publiciten Opciones de información de ruta (RIO) en los mensajes de Anuncios del router que se envían a través del vínculo de la infraestructura.
|
otBorderRoutingSetRoutePreference(otInstance *aInstance, otRoutePreference aPreference)
|
void
Establece de forma explícita la preferencia de las rutas publicadas en los datos de red.
|
Structs |
|
---|---|
otBorderRoutingPrefixTableEntry |
Representa una entrada de la tabla de prefijos detectados. |
otBorderRoutingPrefixTableIterator |
Representa un iterador para iterar a través de la tabla de prefijos detectados del router de borde. |
otBorderRoutingRouterEntry |
Representa un router detectado en el vínculo de la infraestructura. |
otPdProcessedRaInfo |
Representa un grupo de datos de mensajes RA generados por la plataforma procesados. |
Enumeraciones
otBorderRoutingDhcp6PdState
otBorderRoutingDhcp6PdState
Esta enumeración representa el estado de la delegación del prefijo DHCPv6.
Propiedades | |
---|---|
OT_BORDER_ROUTING_DHCP6_PD_STATE_DISABLED
|
El DHCPv6 PD está inhabilitado en el router de borde. |
OT_BORDER_ROUTING_DHCP6_PD_STATE_RUNNING
|
El DHCPv6 PD está habilitado y intentará solicitar y publicar un prefijo. |
OT_BORDER_ROUTING_DHCP6_PD_STATE_STOPPED
|
El PD DHCPv6 está habilitado, pero no intentará solicitar ni publicar un prefijo. |
otBorderRoutingState
otBorderRoutingState
Representa el estado del administrador de enrutamientos fronterizos.
Propiedades | |
---|---|
OT_BORDER_ROUTING_STATE_DISABLED
|
El administrador de enrutamiento se inicializa, pero está inhabilitado. |
OT_BORDER_ROUTING_STATE_RUNNING
|
El administrador de enrutamiento se inicializó, habilitó y está en ejecución. |
OT_BORDER_ROUTING_STATE_STOPPED
|
El administrador de enrutamiento está inicializado y habilitado, pero actualmente detenido. |
OT_BORDER_ROUTING_STATE_UNINITIALIZED
|
El administrador de enrutamiento no se inicializó. |
Typedefs
otBorderRoutingPrefixTableEntry
struct otBorderRoutingPrefixTableEntry otBorderRoutingPrefixTableEntry
Representa una entrada de la tabla de prefijos detectados.
Las entradas de la tabla detectada realizan un seguimiento de las opciones de información de prefijo/ruta en los mensajes de anuncio de router recibidos de otros routers en el vínculo de infraestructura.
otBorderRoutingPrefixTableIterator
struct otBorderRoutingPrefixTableIterator otBorderRoutingPrefixTableIterator
Representa un iterador para iterar a través de la tabla de prefijos detectados del router de borde.
Los campos de este tipo son opacos (diseñados solo para el núcleo de OpenThread) y, por lo tanto, el llamador no debe usarlos ni acceder a ellos.
Antes de usar un iterador, DEBE inicializarse con otBorderRoutingPrefixTableInitIterator()
.
otBorderRoutingRouterEntry
struct otBorderRoutingRouterEntry otBorderRoutingRouterEntry
Representa un router detectado en el vínculo de la infraestructura.
otPdProcessedRaInfo
struct otPdProcessedRaInfo otPdProcessedRaInfo
Representa un grupo de datos de mensajes RA generados por la plataforma procesados.
remotas
otBorderRoutingClearRouteInfoOptionPreference
void otBorderRoutingClearRouteInfoOptionPreference( otInstance *aInstance )
Borra un valor de preferencia establecido previamente para las opciones de información de ruta anunciadas.
Después de llamar a esta función, BR utilizará el rol del dispositivo para determinar la preferencia de RIO: preferencia media para el rol de router o líder y baja preferencia para el rol secundario.
Detalles | |||
---|---|---|---|
Parámetros |
|
otBorderRoutingClearRoutePreference
void otBorderRoutingClearRoutePreference( otInstance *aInstance )
Borra un valor de preferencia establecido previamente para las rutas publicadas en los datos de red.
Después de llamar a esta función, BR determinará la preferencia automáticamente según el rol del dispositivo y la calidad del vínculo (para el padre cuando actúa como dispositivo final).
Detalles | |||
---|---|---|---|
Parámetros |
|
otBorderRoutingDhcp6PdGetState
otBorderRoutingDhcp6PdState otBorderRoutingDhcp6PdGetState( otInstance *aInstance )
Obtiene el estado actual de la delegación del prefijo DHCPv6.
Requiere que se habilite OPENTHREAD_CONFIG_BORDER_ROUTING_DHCP6_PD_ENABLE
.
Detalles | |||
---|---|---|---|
Parámetros |
|
||
Qué muestra |
El estado actual de la delegación del prefijo DHCPv6.
|
otBorderRoutingDhcp6PdSetEnabled
void otBorderRoutingDhcp6PdSetEnabled( otInstance *aInstance, bool aEnabled )
Habilita o inhabilita la delegación de prefijo DHCPv6.
Se debe habilitar OPENTHREAD_CONFIG_BORDER_ROUTING_DHCP6_PD_ENABLE
.
Detalles | |||||
---|---|---|---|---|---|
Parámetros |
|
otBorderRoutingGetFavoredNat64Prefix
otError otBorderRoutingGetFavoredNat64Prefix( otInstance *aInstance, otIp6Prefix *aPrefix, otRoutePreference *aPreference )
Obtiene el prefijo NAT64 preferido actualmente.
El prefijo NAT64 preferido se puede descubrir desde el vínculo de la infraestructura o puede ser el prefijo NAT64 local del dispositivo.
Detalles | |||||||
---|---|---|---|---|---|---|---|
Parámetros |
|
||||||
Valores que se muestran |
|
otBorderRoutingGetFavoredOmrPrefix
otError otBorderRoutingGetFavoredOmrPrefix( otInstance *aInstance, otIp6Prefix *aPrefix, otRoutePreference *aPreference )
Obtiene el prefijo enrutable sin malla (OMR) preferido actualmente.
El prefijo OMR preferido se puede descubrir en los datos de red o puede ser el prefijo OMR local del dispositivo.
Detalles | |||||||
---|---|---|---|---|---|---|---|
Parámetros |
|
||||||
Valores que se muestran |
|
otBorderRoutingGetFavoredOnLinkPrefix
otError otBorderRoutingGetFavoredOnLinkPrefix( otInstance *aInstance, otIp6Prefix *aPrefix )
Obtiene el prefijo en vínculo preferido actualmente.
El prefijo preferido es un prefijo en el vínculo descubierto en el vínculo de la infraestructura o el prefijo en el vínculo local.
Detalles | |||||
---|---|---|---|---|---|
Parámetros |
|
||||
Valores que se muestran |
|
otBorderRoutingGetNat64Prefix
otError otBorderRoutingGetNat64Prefix( otInstance *aInstance, otIp6Prefix *aPrefix )
Obtiene el prefijo NAT64 local del router de frontera.
Es posible que el prefijo NAT64 no se anuncie en la red Thread.
Se debe habilitar OPENTHREAD_CONFIG_NAT64_BORDER_ROUTING_ENABLE
.
Detalles | |||||
---|---|---|---|---|---|
Parámetros |
|
||||
Valores que se muestran |
|
otBorderRoutingGetNextPrefixTableEntry
otError otBorderRoutingGetNextPrefixTableEntry( otInstance *aInstance, otBorderRoutingPrefixTableIterator *aIterator, otBorderRoutingPrefixTableEntry *aEntry )
Itera sobre las entradas de la tabla de prefijos detectados del router de borde.
Se garantiza que las entradas de prefijo asociadas con el mismo router detectado en un vínculo de infraestructura se agrupan (recuperadas consecutivas).
Detalles | |||||||
---|---|---|---|---|---|---|---|
Parámetros |
|
||||||
Valores que se muestran |
|
otBorderRoutingGetNextRouterEntry
otError otBorderRoutingGetNextRouterEntry( otInstance *aInstance, otBorderRoutingPrefixTableIterator *aIterator, otBorderRoutingRouterEntry *aEntry )
Itera sobre las entradas del router descubiertas en el vínculo de la infraestructura.
Detalles | |||||||
---|---|---|---|---|---|---|---|
Parámetros |
|
||||||
Valores que se muestran |
|
otBorderRoutingGetOmrPrefix
otError otBorderRoutingGetOmrPrefix( otInstance *aInstance, otIp6Prefix *aPrefix )
Obtiene el prefijo local enrutable sin malla (OMR), por ejemplo, fdfc:1ff5:1512:5622::/64
.
Un prefijo OMR es un prefijo de 64 bits generado de forma aleatoria que se publica en la red de Thread si aún no existe un prefijo OMR. Se puede acceder a este prefijo desde la red Wi-Fi o Ethernet local.
Nota: Cuando se habilita DHCPv6 PD, el router de borde puede publicar el prefijo de DHCPv6 PD.
Detalles | |||||
---|---|---|---|---|---|
Parámetros |
|
||||
Valores que se muestran |
|
otBorderRoutingGetPdOmrPrefix
otBorderRoutingGetOnLinkPrefix
otError otBorderRoutingGetOnLinkPrefix( otInstance *aInstance, otIp6Prefix *aPrefix )
Obtiene el prefijo local del vínculo para el vínculo de infraestructura adyacente.
El prefijo de vínculo local es un prefijo de 64 bits que se anuncia en el vínculo de infraestructura si todavía no hay un prefijo utilizable en el vínculo que se anuncia en el vínculo.
Detalles | |||||
---|---|---|---|---|---|
Parámetros |
|
||||
Valores que se muestran |
|
otBorderRoutingGetPdOmrPrefix
otError otBorderRoutingGetPdOmrPrefix( otInstance *aInstance, otBorderRoutingPrefixTableEntry *aPrefixInfo )
Obtiene el prefijo de delegación del prefijo (PD) de DHCPv6 proporcionado fuera de la malla enrutable (OMR).
Solo se usan los campos mPrefix, mValidLifetime y mPreferredLifetime en la información del prefijo que se muestra.
Se debe habilitar OPENTHREAD_CONFIG_BORDER_ROUTING_DHCP6_PD_ENABLE
.
Detalles | |||||||
---|---|---|---|---|---|---|---|
Parámetros |
|
||||||
Valores que se muestran |
|
otBorderRoutingGetOmrPrefix
otPlatBorderRoutingProcessIcmp6Ra
otBorderRoutingGetPdProcessedRaInfo
otError otBorderRoutingGetPdProcessedRaInfo( otInstance *aInstance, otPdProcessedRaInfo *aPdProcessedRaInfo )
Obtiene los datos del mensaje de RA generado por la plataforma procesado.
Se debe habilitar OPENTHREAD_CONFIG_BORDER_ROUTING_DHCP6_PD_ENABLE
.
Detalles | |||||||
---|---|---|---|---|---|---|---|
Parámetros |
|
||||||
Valores que se muestran |
|
otBorderRoutingGetRouteInfoOptionPreference
otRoutePreference otBorderRoutingGetRouteInfoOptionPreference( otInstance *aInstance )
Obtiene la preferencia actual que se usa cuando se publican opciones de información de ruta (RIO) en los mensajes de anuncios de router que se envían a través del vínculo de la infraestructura.
La preferencia de Río de Janeiro se determina de la siguiente manera:
- Si el usuario lo establece explícitamente mediante una llamada a
otBorderRoutingSetRouteInfoOptionPreference()
, se usa la preferencia dada. - De lo contrario, se determina según el rol actual del dispositivo: preferencia media para el rol de router o líder y baja preferencia para el rol secundario.
Detalles | |
---|---|
Qué muestra |
La preferencia actual de la opción de información de ruta.
|
otBorderRoutingGetRoutePreference
otRoutePreference otBorderRoutingGetRoutePreference( otInstance *aInstance )
Obtiene la preferencia actual que se usa para las rutas publicadas en los datos de red.
La preferencia se determina de la siguiente manera:
- Si el usuario lo establece explícitamente mediante una llamada a
otBorderRoutingSetRoutePreference()
, se usa la preferencia dada. - De lo contrario,
RoutingManager
lo determina automáticamente según la función del dispositivo y la calidad del vínculo.
Detalles | |||
---|---|---|---|
Parámetros |
|
||
Qué muestra |
La preferencia de ruta publicada actualmente.
|
otBorderRoutingGetState
otBorderRoutingState otBorderRoutingGetState( otInstance *aInstance )
Obtiene el estado actual del administrador de enrutamientos fronterizos.
Detalles | |||
---|---|---|---|
Parámetros |
|
||
Qué muestra |
El estado actual del administrador de enrutamientos fronterizos.
|
otBorderRoutingInit
otError otBorderRoutingInit( otInstance *aInstance, uint32_t aInfraIfIndex, bool aInfraIfIsRunning )
Inicializa el administrador de enrutamientos fronterizos en una interfaz de infraestructura determinada.
Detalles | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parámetros |
|
||||||||
Valores que se muestran |
|
otPlatInfraIfStateChanged.
otBorderRoutingSetEnabled.
otBorderRoutingPrefixTableInitIterator
void otBorderRoutingPrefixTableInitIterator( otInstance *aInstance, otBorderRoutingPrefixTableIterator *aIterator )
Inicializa un otBorderRoutingPrefixTableIterator
.
Un iterador DEBE inicializarse antes de usarse.
Se puede volver a inicializar un iterador para reiniciarse desde el principio de la tabla.
Cuando se itera sobre las entradas en la tabla, para garantizar que los horarios de actualización mMsecSinceLastUpdate
de las entradas sean coherentes, se proporcionan en relación con la hora en que se inicializó el iterador.
Detalles | |||||
---|---|---|---|---|---|
Parámetros |
|
otBorderRoutingSetEnabled
otError otBorderRoutingSetEnabled( otInstance *aInstance, bool aEnabled )
Habilita o inhabilita el administrador de enrutamiento fronterizo.
Detalles | |||||
---|---|---|---|---|---|
Parámetros |
|
||||
Valores que se muestran |
|
otBorderRoutingSetRouteInfoOptionPreference
void otBorderRoutingSetRouteInfoOptionPreference( otInstance *aInstance, otRoutePreference aPreference )
Establece de forma explícita la preferencia que se usará cuando se publiciten Opciones de información de ruta (RIO) en los mensajes de Anuncios del router que se envían a través del vínculo de la infraestructura.
Después de llamar a esta función, BR utilizará la preferencia indicada para todos sus RIO anunciados. Para borrar la preferencia, llama a otBorderRoutingClearRouteInfoOptionPreference()
.
Detalles | |||||
---|---|---|---|---|---|
Parámetros |
|
otBorderRoutingSetRoutePreference
void otBorderRoutingSetRoutePreference( otInstance *aInstance, otRoutePreference aPreference )
Establece de forma explícita la preferencia de las rutas publicadas en los datos de red.
Después de llamar a esta función, BR utilizará la preferencia indicada. Para borrar la preferencia, llama a otBorderRoutingClearRoutePreference()
.
Detalles | |||||
---|---|---|---|---|---|
Parámetros |
|
Recursos
Los temas de referencia de la API de OpenThread se originan a partir del código fuente, disponible en GitHub. Para obtener más información o contribuir a nuestra documentación, consulta Recursos.