Менеджер по пограничной маршрутизации
Этот модуль включает определения, связанные с диспетчером пограничной маршрутизации.
Краткое содержание
Для всех функций в этом модуле необходимо включить OPENTHREAD_CONFIG_BORDER_ROUTING_ENABLE
.
Менеджер пограничной маршрутизации обрабатывает двунаправленную маршрутизацию между сетью потоков и соседним каналом инфраструктуры (AIL).
Он отправляет сообщения объявления маршрутизатора ICMRv6 ND (RA) на AIL для объявления префиксов каналов и маршрутов. Он также обрабатывает полученные сообщения RA из инфраструктуры и отражает обнаруженные префиксы в данных сети потоков, чтобы гарантировать, что устройства в сетке потоков могут достичь AIL через пограничный маршрутизатор.
Диспетчер маршрутизации управляет префиксом Off-Mesh Routable (OMR) в данных сети Thread, который настраивает устройства Thread с подходящим IPv6-адресом Off-Mesh Routable. Он объявляет о доступности этого префикса на AIL, включая его в отправляемые сообщения RA в качестве опции информации о маршруте IPv6 (RIO).
Диспетчер маршрутизации также отслеживает и добавляет префикс on-link в инфраструктурную сеть. Если маршрутизатор на AIL уже предоставляет сообщения RA, содержащие опцию информации о префиксе IPv6 (PIO), которая позволяет устройствам IPv6 на канале самостоятельно настраивать свой собственный маршрутизируемый одноадресный адрес IPv6, этот адрес может использоваться устройствами Thread для достижения AIL. Если пограничный маршрутизатор не находит такого сообщения RA в AIL, он генерирует префикс канала ULA, который затем объявляет в AIL в отправляемых сообщениях RA.
Перечисления | |
---|---|
otBorderRoutingDhcp6PdState { | перечисление Это перечисление представляет состояние делегирования префикса DHCPv6. |
otBorderRoutingState { | перечисление Представляет состояние диспетчера пограничной маршрутизации. |
Определения типов | |
---|---|
otBorderRoutingPrefixTableEntry | определение типа Представляет запись из обнаруженной таблицы префиксов. |
otBorderRoutingPrefixTableIterator | определение типа Представляет итератор для перебора обнаруженной таблицы префиксов пограничного маршрутизатора. |
otBorderRoutingRouterEntry | определение типаstruct otBorderRoutingRouterEntry Представляет обнаруженный маршрутизатор на канале инфраструктуры. |
otPdProcessedRaInfo | определение типаstruct otPdProcessedRaInfo Представляет группу данных обработанных сообщений RA, созданных платформой. |
Функции | |
---|---|
otBorderRoutingClearRouteInfoOptionPreference ( otInstance *aInstance) | void Очищает ранее установленное значение предпочтения для объявленных параметров информации о маршруте. |
otBorderRoutingClearRoutePreference ( otInstance *aInstance) | void Очищает ранее установленное значение предпочтения для опубликованных маршрутов в сетевых данных. |
otBorderRoutingDhcp6PdGetState ( otInstance *aInstance) | Получает текущее состояние делегирования префикса DHCPv6. |
otBorderRoutingDhcp6PdSetEnabled ( otInstance *aInstance, bool aEnabled) | void Включает/отключает делегирование префикса DHCPv6. |
otBorderRoutingGetFavoredNat64Prefix ( otInstance *aInstance, otIp6Prefix *aPrefix, otRoutePreference *aPreference) | Получает предпочитаемый в данный момент префикс NAT64. |
otBorderRoutingGetFavoredOmrPrefix ( otInstance *aInstance, otIp6Prefix *aPrefix, otRoutePreference *aPreference) | Получает предпочитаемый в данный момент префикс Off-Mesh-Routable (OMR). |
otBorderRoutingGetFavoredOnLinkPrefix ( otInstance *aInstance, otIp6Prefix *aPrefix) | Получает предпочитаемый в данный момент префикс On-Link. |
otBorderRoutingGetNat64Prefix ( otInstance *aInstance, otIp6Prefix *aPrefix) | Получает локальный префикс NAT64 пограничного маршрутизатора. |
otBorderRoutingGetNextPrefixTableEntry ( otInstance *aInstance, otBorderRoutingPrefixTableIterator *aIterator, otBorderRoutingPrefixTableEntry *aEntry) | Перебирает записи в таблице обнаруженных префиксов пограничного маршрутизатора. |
otBorderRoutingGetNextRouterEntry ( otInstance *aInstance, otBorderRoutingPrefixTableIterator *aIterator, otBorderRoutingRouterEntry *aEntry) | Перебирает обнаруженные записи маршрутизатора на канале инфраструктуры. |
otBorderRoutingGetOmrPrefix ( otInstance *aInstance, otIp6Prefix *aPrefix) | Получает локальный префикс Off-Mesh-Routable (OMR), например fdfc:1ff5:1512:5622::/64 . |
otBorderRoutingGetOnLinkPrefix ( otInstance *aInstance, otIp6Prefix *aPrefix) | Получает локальный префикс On-Link для соседнего канала инфраструктуры. |
otBorderRoutingGetPdOmrPrefix ( otInstance *aInstance, otBorderRoutingPrefixTableEntry *aPrefixInfo) | Получает префикс делегирования префикса DHCPv6 (PD), предоставляемый внесетевой маршрутизацией (OMR). |
otBorderRoutingGetPdProcessedRaInfo ( otInstance *aInstance, otPdProcessedRaInfo *aPdProcessedRaInfo) | Получает данные обработанного сообщения RA, сгенерированного платформой. |
otBorderRoutingGetRouteInfoOptionPreference ( otInstance *aInstance) | Получает текущее предпочтение, используемое при объявлении параметров информации о маршруте (RIO) в сообщениях объявления маршрутизатора, отправляемых по каналу инфраструктуры. |
otBorderRoutingGetRoutePreference ( otInstance *aInstance) | Получает текущие предпочтения, используемые для опубликованных маршрутов в сетевых данных. |
otBorderRoutingGetState ( otInstance *aInstance) | Получает текущее состояние диспетчера пограничной маршрутизации. |
otBorderRoutingInit ( otInstance *aInstance, uint32_t aInfraIfIndex, bool aInfraIfIsRunning) | Инициализирует диспетчер пограничной маршрутизации на данном интерфейсе инфраструктуры. |
otBorderRoutingPrefixTableInitIterator ( otInstance *aInstance, otBorderRoutingPrefixTableIterator *aIterator) | void Инициализирует otBorderRoutingPrefixTableIterator . |
otBorderRoutingSetEnabled ( otInstance *aInstance, bool aEnabled) | Включает или отключает диспетчер пограничной маршрутизации. |
otBorderRoutingSetRouteInfoOptionPreference ( otInstance *aInstance, otRoutePreference aPreference) | void Явно задает предпочтение, которое будет использоваться при объявлении параметров информации о маршруте (RIO) в сообщениях объявления маршрутизатора, отправляемых по каналу инфраструктуры. |
otBorderRoutingSetRoutePreference ( otInstance *aInstance, otRoutePreference aPreference) | void Явно задает предпочтения опубликованных маршрутов в сетевых данных. |
Структуры | |
---|---|
отбордерраутингпрефикстаблеэнтри | Представляет запись из обнаруженной таблицы префиксов. |
otBorderRoutingPrefixTableIterator | Представляет итератор для перебора обнаруженной таблицы префиксов пограничного маршрутизатора. |
otBorderRoutingRouterEntry | Представляет обнаруженный маршрутизатор на канале инфраструктуры. |
отПдПроцесседРаИнфо | Представляет группу данных обработанных сообщений RA, созданных платформой. |
Перечисления
отбордерраутингдхкп6пдстате
otBorderRoutingDhcp6PdState
Это перечисление представляет состояние делегирования префикса DHCPv6.
отбордерраутингстате
otBorderRoutingState
Представляет состояние диспетчера пограничной маршрутизации.
Определения типов
отбордерраутингпрефикстаблеэнтри
struct otBorderRoutingPrefixTableEntry otBorderRoutingPrefixTableEntry
Представляет запись из обнаруженной таблицы префиксов.
Записи в обнаруженной таблице отслеживают параметры префикса/информации о маршруте в полученных сообщениях объявления маршрутизатора от других маршрутизаторов на канале инфраструктуры.
otBorderRoutingPrefixTableIterator
struct otBorderRoutingPrefixTableIterator otBorderRoutingPrefixTableIterator
Представляет итератор для перебора обнаруженной таблицы префиксов пограничного маршрутизатора.
Поля этого типа непрозрачны (предназначены для использования только ядром OpenThread) и поэтому не должны быть доступны или использованы вызывающей стороной.
Прежде чем использовать итератор, его НЕОБХОДИМО инициализировать с помощью otBorderRoutingPrefixTableInitIterator()
.
otBorderRoutingRouterEntry
struct otBorderRoutingRouterEntry otBorderRoutingRouterEntry
Представляет обнаруженный маршрутизатор на канале инфраструктуры.
отПдПроцесседРаИнфо
struct otPdProcessedRaInfo otPdProcessedRaInfo
Представляет группу данных обработанных сообщений RA, созданных платформой.
Функции
otBorderRoutingClearRouteInfoOptionPreference
void otBorderRoutingClearRouteInfoOptionPreference( otInstance *aInstance )
Очищает ранее установленное значение предпочтения для объявленных параметров информации о маршруте.
После вызова этой функции BR будет использовать роль устройства для определения предпочтения RIO: средний уровень предпочтения в роли маршрутизатора/лидера и низкий уровень предпочтения в дочерней роли.
Подробности | |||
---|---|---|---|
Параметры |
|
otBorderRoutingClearRoutePreference
void otBorderRoutingClearRoutePreference( otInstance *aInstance )
Очищает ранее установленное значение предпочтения для опубликованных маршрутов в сетевых данных.
После вызова этой функции BR автоматически определит предпочтение на основе роли устройства и качества соединения (с родительским устройством, когда оно выступает в качестве конечного устройства).
Подробности | |||
---|---|---|---|
Параметры |
|
otBorderRoutingDhcp6PdGetState
otBorderRoutingDhcp6PdState otBorderRoutingDhcp6PdGetState( otInstance *aInstance )
Получает текущее состояние делегирования префикса DHCPv6.
Требуется, чтобы OPENTHREAD_CONFIG_BORDER_ROUTING_DHCP6_PD_ENABLE
был включен.
Подробности | |||
---|---|---|---|
Параметры |
| ||
Возврат | Текущее состояние делегирования префикса DHCPv6. |
отбордерраутингдхкп6пдсетенаблед
void otBorderRoutingDhcp6PdSetEnabled( otInstance *aInstance, bool aEnabled )
Включает/отключает делегирование префикса DHCPv6.
OPENTHREAD_CONFIG_BORDER_ROUTING_DHCP6_PD_ENABLE
должен быть включен.
Подробности | |||||
---|---|---|---|---|---|
Параметры |
|
otBorderRoutingGetFavoredNat64Prefix
otError otBorderRoutingGetFavoredNat64Prefix( otInstance *aInstance, otIp6Prefix *aPrefix, otRoutePreference *aPreference )
Получает предпочитаемый в данный момент префикс NAT64.
Предпочтительный префикс NAT64 можно найти по инфраструктурному каналу или он может быть локальным префиксом NAT64 этого устройства.
Подробности | |||||||
---|---|---|---|---|---|---|---|
Параметры |
| ||||||
Возвращаемые значения |
|
otBorderRoutingGetFavoredOmrPrefix
otError otBorderRoutingGetFavoredOmrPrefix( otInstance *aInstance, otIp6Prefix *aPrefix, otRoutePreference *aPreference )
Получает предпочитаемый в данный момент префикс Off-Mesh-Routable (OMR).
Предпочтительный префикс OMR можно узнать из сетевых данных или использовать локальный префикс OMR этого устройства.
Подробности | |||||||
---|---|---|---|---|---|---|---|
Параметры |
| ||||||
Возвращаемые значения |
|
otBorderRoutingGetFavoredOnLinkPrefix
otError otBorderRoutingGetFavoredOnLinkPrefix( otInstance *aInstance, otIp6Prefix *aPrefix )
Получает предпочитаемый в данный момент префикс On-Link.
Предпочтительным префиксом является либо обнаруженный префикс on-link в инфраструктурном канале, либо локальный префикс on-link.
Подробности | |||||
---|---|---|---|---|---|
Параметры |
| ||||
Возвращаемые значения |
|
otBorderRoutingGetNat64Prefix
otError otBorderRoutingGetNat64Prefix( otInstance *aInstance, otIp6Prefix *aPrefix )
Получает локальный префикс NAT64 пограничного маршрутизатора.
Префикс NAT64 может не объявляться в сети Thread.
OPENTHREAD_CONFIG_NAT64_BORDER_ROUTING_ENABLE
должен быть включен.
Подробности | |||||
---|---|---|---|---|---|
Параметры |
| ||||
Возвращаемые значения |
|
otBorderRoutingGetNextPrefixTableEntry
otError otBorderRoutingGetNextPrefixTableEntry( otInstance *aInstance, otBorderRoutingPrefixTableIterator *aIterator, otBorderRoutingPrefixTableEntry *aEntry )
Перебирает записи в таблице обнаруженных префиксов пограничного маршрутизатора.
Записи префикса, связанные с одним и тем же обнаруженным маршрутизатором на инфраструктурном канале, гарантированно будут сгруппированы (получены последовательно).
Подробности | |||||||
---|---|---|---|---|---|---|---|
Параметры |
| ||||||
Возвращаемые значения |
|
otBorderRoutingGetNextRouterEntry
otError otBorderRoutingGetNextRouterEntry( otInstance *aInstance, otBorderRoutingPrefixTableIterator *aIterator, otBorderRoutingRouterEntry *aEntry )
Перебирает обнаруженные записи маршрутизатора на канале инфраструктуры.
Подробности | |||||||
---|---|---|---|---|---|---|---|
Параметры |
| ||||||
Возвращаемые значения |
|
otBorderRoutingGetOmrPrefix
otError otBorderRoutingGetOmrPrefix( otInstance *aInstance, otIp6Prefix *aPrefix )
Получает локальный префикс Off-Mesh-Routable (OMR), например fdfc:1ff5:1512:5622::/64
.
Префикс OMR — это случайно сгенерированный 64-битный префикс, который публикуется в сети Thread, если префикс OMR еще не существует. Доступ к этой приставке возможен из локальной сети Wi-Fi или Ethernet.
Примечание. Когда DHCPv6 PD включен, пограничный маршрутизатор может публиковать префикс из DHCPv6 PD.
Подробности | |||||
---|---|---|---|---|---|
Параметры |
| ||||
Возвращаемые значения |
|
otBorderRoutingGetPdOmrPrefix
otBorderRoutingGetOnLinkPrefix
otError otBorderRoutingGetOnLinkPrefix( otInstance *aInstance, otIp6Prefix *aPrefix )
Получает локальный префикс On-Link для соседнего канала инфраструктуры.
Локальный префикс on-link — это 64-битный префикс, который объявляется в инфраструктурном канале, если в канале еще не объявлен пригодный для использования префикс on-link.
Подробности | |||||
---|---|---|---|---|---|
Параметры |
| ||||
Возвращаемые значения |
|
otBorderRoutingGetPdOmrPrefix
otError otBorderRoutingGetPdOmrPrefix( otInstance *aInstance, otBorderRoutingPrefixTableEntry *aPrefixInfo )
Получает префикс делегирования префикса DHCPv6 (PD), предоставляемый внесетевой маршрутизацией (OMR).
В возвращаемой информации о префиксе используются только поля mPrefix, mValidLifetime и mPreferredLifetime.
OPENTHREAD_CONFIG_BORDER_ROUTING_DHCP6_PD_ENABLE
должен быть включен.
Подробности | |||||||
---|---|---|---|---|---|---|---|
Параметры |
| ||||||
Возвращаемые значения |
|
otBorderRoutingGetOmrPrefix
otPlatBorderRoutingProcessIcmp6Ra
otBorderRoutingGetPdProcessedRaInfo
otError otBorderRoutingGetPdProcessedRaInfo( otInstance *aInstance, otPdProcessedRaInfo *aPdProcessedRaInfo )
Получает данные обработанного сообщения RA, сгенерированного платформой.
OPENTHREAD_CONFIG_BORDER_ROUTING_DHCP6_PD_ENABLE
должен быть включен.
Подробности | |||||||
---|---|---|---|---|---|---|---|
Параметры |
| ||||||
Возвращаемые значения |
|
otBorderRoutingGetRouteInfoOptionPreference
otRoutePreference otBorderRoutingGetRouteInfoOptionPreference( otInstance *aInstance )
Получает текущее предпочтение, используемое при объявлении параметров информации о маршруте (RIO) в сообщениях объявления маршрутизатора, отправляемых по каналу инфраструктуры.
Предпочтение RIO определяется следующим образом:
- Если это явно задано пользователем путем вызова
otBorderRoutingSetRouteInfoOptionPreference()
, используется данное предпочтение. - В противном случае оно определяется на основе текущей роли устройства: среднее предпочтение в роли маршрутизатора/лидера и низкое предпочтение в дочерней роли.
Подробности | |
---|---|
Возврат | Текущая настройка параметра информации о маршруте. |
otBorderRoutingGetRoutePreference
otRoutePreference otBorderRoutingGetRoutePreference( otInstance *aInstance )
Получает текущие предпочтения, используемые для опубликованных маршрутов в сетевых данных.
Предпочтение определяется следующим образом:
- Если это явно задано пользователем путем вызова
otBorderRoutingSetRoutePreference()
, используется данное предпочтение. - В противном случае оно определяется автоматически
RoutingManager
на основе роли устройства и качества соединения.
Подробности | |||
---|---|---|---|
Параметры |
| ||
Возврат | Текущие опубликованные предпочтения маршрута. |
отбордерраутингжетстате
otBorderRoutingState otBorderRoutingGetState( otInstance *aInstance )
Получает текущее состояние диспетчера пограничной маршрутизации.
Подробности | |||
---|---|---|---|
Параметры |
| ||
Возврат | Текущее состояние менеджера пограничной маршрутизации. |
otBorderRoutingInit
otError otBorderRoutingInit( otInstance *aInstance, uint32_t aInfraIfIndex, bool aInfraIfIsRunning )
Инициализирует диспетчер пограничной маршрутизации на данном интерфейсе инфраструктуры.
Подробности | |||||||||
---|---|---|---|---|---|---|---|---|---|
Параметры |
| ||||||||
Возвращаемые значения |
|
otPlatInfraIfStateChanged .
otBorderRoutingSetEnabled .
otBorderRoutingPrefixTableInitIterator
void otBorderRoutingPrefixTableInitIterator( otInstance *aInstance, otBorderRoutingPrefixTableIterator *aIterator )
Инициализирует otBorderRoutingPrefixTableIterator
.
Итератор ДОЛЖЕН быть инициализирован перед его использованием.
Итератор можно инициализировать снова, чтобы перезапустить таблицу с начала.
При переборе записей в таблице, чтобы обеспечить согласованность времени обновления записей mMsecSinceLastUpdate
, они задаются относительно времени инициализации итератора.
Подробности | |||||
---|---|---|---|---|---|
Параметры |
|
отбордерраутингсетенаблед
otError otBorderRoutingSetEnabled( otInstance *aInstance, bool aEnabled )
Включает или отключает диспетчер пограничной маршрутизации.
Подробности | |||||
---|---|---|---|---|---|
Параметры |
| ||||
Возвращаемые значения |
|
otBorderRoutingSetRouteInfoOptionPreference
void otBorderRoutingSetRouteInfoOptionPreference( otInstance *aInstance, otRoutePreference aPreference )
Явно задает предпочтение, которое будет использоваться при объявлении параметров информации о маршруте (RIO) в сообщениях объявления маршрутизатора, отправляемых по каналу инфраструктуры.
После вызова этой функции BR будет использовать заданное предпочтение для всех своих объявленных RIO. Предпочтение можно очистить, вызвав otBorderRoutingClearRouteInfoOptionPreference()
.
Подробности | |||||
---|---|---|---|---|---|
Параметры |
|
otBorderRoutingSetRoutePreference
void otBorderRoutingSetRoutePreference( otInstance *aInstance, otRoutePreference aPreference )
Явно задает предпочтения опубликованных маршрутов в сетевых данных.
После вызова этой функции BR будет использовать заданное предпочтение. Предпочтение можно очистить, вызвав otBorderRoutingClearRoutePreference()
.
Подробности | |||||
---|---|---|---|---|---|
Параметры |
|
Ресурсы
Справочные разделы API OpenThread взяты из исходного кода, доступного на GitHub . Для получения дополнительной информации или внесения вклада в нашу документацию обратитесь к Ресурсам .