Border Routing Manager
Dieses Modul enthält Definitionen zum Border Routing Manager.
Zusammenfassung
Für alle Funktionen in diesem Modul muss OPENTHREAD_CONFIG_BORDER_ROUTING_ENABLE
aktiviert sein.
Der Border Routing Manager übernimmt das bidirektionale Routing zwischen dem Thread-Netzwerk und dem angrenzenden Infrastrukturlink (AIL).
Es sendet RA-Nachrichten (ICMRv6 ND) an AIL, um On-Link- und Routenpräfixe zu bewerben. Es verarbeitet auch empfangene RA-Nachrichten von der Infrastruktur und spiegelt die erkannten Präfixe in den Thread-Netzwerkdaten, um sicherzustellen, dass Geräte im Thread-Mesh AIL über den Border Router erreichen können.
Der Routing-Manager verwaltet das OMR-Präfix (Off-Mesh Routable) in den Thread-Netzwerkdaten. Dadurch werden Thread-Geräte mit einer geeigneten routbaren IPv6-Adresse außerhalb des Mesh-Netzwerks konfiguriert. Die Erreichbarkeit dieses Präfixes bei AIL wird bekannt gegeben, indem es in die ausgegebenen RA-Nachrichten als IPv6-Route-Informationsoption (RIO) aufgenommen wird.
Routing Manager überwacht das Infrastrukturnetzwerk auch und fügt es dem Präfix „On-Link“ hinzu. Wenn ein Router bei AIL bereits RA-Nachrichten mit einer IPv6-Präfix-Informationsoption (PIO) bereitstellt, die es IPv6-Geräten auf dem Link ermöglicht, ihre eigene routbare Unicast-IPv6-Adresse selbst zu konfigurieren, kann diese Adresse von Thread-Geräten verwendet werden, um AIL zu erreichen. Wenn Border Router keine solche RA-Nachricht unter AIL findet, generiert er ein ULA-On-Link-Präfix, das dann in den ausgegebenen RA-Nachrichten bei AIL beworben wird.
Aufzählungen |
|
---|---|
otBorderRoutingDhcp6PdState{
|
enum Diese Aufzählung stellt den Status des DHCPv6-Präfixdelegationsstatus dar. |
otBorderRoutingState{
|
enum Stellt den Status des Border Routing Manager dar. |
Typedefs |
|
---|---|
otBorderRoutingPrefixTableEntry
|
typedef Stellt einen Eintrag aus der erkannten Präfixtabelle dar. |
otBorderRoutingPrefixTableIterator
|
typedef Stellt einen Iterator zum Durchlaufen der erkannten Präfixtabelle des Border-Routers dar. |
otBorderRoutingRouterEntry
|
typedefstruct otBorderRoutingRouterEntry
Stellt einen erkannten Router unter der Infrastrukturverbindung dar. |
otPdProcessedRaInfo
|
typedefstruct otPdProcessedRaInfo
Stellt eine Datengruppe von plattformgenerierten RA-Nachrichten dar, die verarbeitet wurden. |
Funktionen |
|
---|---|
otBorderRoutingClearRouteInfoOptionPreference(otInstance *aInstance)
|
void
Löscht einen zuvor festgelegten Wert für die beworbenen Routeninformationen.
|
otBorderRoutingClearRoutePreference(otInstance *aInstance)
|
void
Löscht einen zuvor festgelegten Wert für veröffentlichte Routen in den Netzwerkdaten.
|
otBorderRoutingDhcp6PdGetState(otInstance *aInstance)
|
Ruft den aktuellen Status der DHCPv6-Präfixdelegierung ab.
|
otBorderRoutingDhcp6PdSetEnabled(otInstance *aInstance, bool aEnabled)
|
void
Aktiviert / deaktiviert die DHCPv6-Präfixdelegierung.
|
otBorderRoutingGetFavoredNat64Prefix(otInstance *aInstance, otIp6Prefix *aPrefix, otRoutePreference *aPreference)
|
Ruft das aktuell bevorzugte NAT64-Präfix ab.
|
otBorderRoutingGetFavoredOmrPrefix(otInstance *aInstance, otIp6Prefix *aPrefix, otRoutePreference *aPreference)
|
Ruft das aktuell bevorzugte ORM-Präfix (Off-Mesh-Routable) ab.
|
otBorderRoutingGetFavoredOnLinkPrefix(otInstance *aInstance, otIp6Prefix *aPrefix)
|
Ruft das aktuell bevorzugte On-Link-Präfix ab.
|
otBorderRoutingGetNat64Prefix(otInstance *aInstance, otIp6Prefix *aPrefix)
|
Ruft das lokale NAT64-Präfix des Border-Routers ab.
|
otBorderRoutingGetNextPrefixTableEntry(otInstance *aInstance, otBorderRoutingPrefixTableIterator *aIterator, otBorderRoutingPrefixTableEntry *aEntry)
|
Durchläuft die Einträge in der erkannten Präfixtabelle des Border-Routers.
|
otBorderRoutingGetNextRouterEntry(otInstance *aInstance, otBorderRoutingPrefixTableIterator *aIterator, otBorderRoutingRouterEntry *aEntry)
|
Iteriert über die erkannten Routereinträge auf der Infrastrukturverbindung.
|
otBorderRoutingGetOmrPrefix(otInstance *aInstance, otIp6Prefix *aPrefix)
|
Ruft das lokale ORM-Präfix (Off-Mesh-Routable) ab, z. B.
fdfc:1ff5:1512:5622::/64 . |
otBorderRoutingGetOnLinkPrefix(otInstance *aInstance, otIp6Prefix *aPrefix)
|
Ruft das lokale On-Link-Präfix für den angrenzenden Infrastrukturlink ab.
|
otBorderRoutingGetPdOmrPrefix(otInstance *aInstance, otBorderRoutingPrefixTableEntry *aPrefixInfo)
|
Ruft das DHCPv6-Präfix-Delegation-Präfix (Off-Mesh-routable, OMR) ab.
|
otBorderRoutingGetPdProcessedRaInfo(otInstance *aInstance, otPdProcessedRaInfo *aPdProcessedRaInfo)
|
Ruft die Daten der verarbeiteten plattformgenerierten RA-Nachricht ab.
|
otBorderRoutingGetRouteInfoOptionPreference(otInstance *aInstance)
|
Ruft die aktuelle Einstellung ab, die beim Bewerben von Routeninformationsoptionen (RIO) in Router-Advertising-Nachrichten verwendet wird, die über den Infrastruktur-Link gesendet werden.
|
otBorderRoutingGetRoutePreference(otInstance *aInstance)
|
Ruft die aktuelle Einstellung für veröffentlichte Routen in Netzwerkdaten ab.
|
otBorderRoutingGetState(otInstance *aInstance)
|
Ruft den aktuellen Status des Border Routing Manager ab.
|
otBorderRoutingInit(otInstance *aInstance, uint32_t aInfraIfIndex, bool aInfraIfIsRunning)
|
Initialisiert den Border Routing Manager auf der gegebenen Infrastrukturschnittstelle.
|
otBorderRoutingPrefixTableInitIterator(otInstance *aInstance, otBorderRoutingPrefixTableIterator *aIterator)
|
void
Initialisiert ein
otBorderRoutingPrefixTableIterator . |
otBorderRoutingSetEnabled(otInstance *aInstance, bool aEnabled)
|
Aktiviert oder deaktiviert den Border Routing Manager.
|
otBorderRoutingSetRouteInfoOptionPreference(otInstance *aInstance, otRoutePreference aPreference)
|
void
Hiermit wird explizit die Einstellung festgelegt, die beim Bewerben von Route Info Options (RIO) in Router-Ankündigungsnachrichten über den Infrastrukturlink verwendet werden soll.
|
otBorderRoutingSetRoutePreference(otInstance *aInstance, otRoutePreference aPreference)
|
void
Legt die Einstellung für veröffentlichte Routen in Netzwerkdaten explizit fest.
|
Strukturen |
|
---|---|
otBorderRoutingPrefixTableEntry |
Stellt einen Eintrag aus der erkannten Präfixtabelle dar. |
otBorderRoutingPrefixTableIterator |
Stellt einen Iterator zum Durchlaufen der erkannten Präfixtabelle des Border-Routers dar. |
otBorderRoutingRouterEntry |
Stellt einen erkannten Router unter der Infrastrukturverbindung dar. |
otPdProcessedRaInfo |
Stellt eine Datengruppe von plattformgenerierten RA-Nachrichten dar, die verarbeitet wurden. |
Aufzählungen
otBorderRoutingDhcp6PdState
otBorderRoutingDhcp6PdState
Diese Aufzählung stellt den Status des DHCPv6-Präfixdelegationsstatus dar.
Attribute | |
---|---|
OT_BORDER_ROUTING_DHCP6_PD_STATE_DISABLED
|
DHCPv6 PD ist auf dem Border-Router deaktiviert. |
OT_BORDER_ROUTING_DHCP6_PD_STATE_RUNNING
|
DHCPv6-PD ist aktiviert und versucht, ein Präfix anzufordern und zu veröffentlichen. |
OT_BORDER_ROUTING_DHCP6_PD_STATE_STOPPED
|
DHCPv6-PD ist aktiviert, es wird jedoch nicht versucht, ein Präfix anzufordern und zu veröffentlichen. |
otBorderRoutingState
otBorderRoutingState
Stellt den Status des Border Routing Manager dar.
Attribute | |
---|---|
OT_BORDER_ROUTING_STATE_DISABLED
|
Routing Manager wurde initialisiert, aber deaktiviert. |
OT_BORDER_ROUTING_STATE_RUNNING
|
Routing Manager ist initialisiert, aktiviert und wird ausgeführt. |
OT_BORDER_ROUTING_STATE_STOPPED
|
Routing Manager ist initialisiert und aktiviert, aber derzeit angehalten. |
OT_BORDER_ROUTING_STATE_UNINITIALIZED
|
Routing-Manager ist nicht initialisiert. |
Typedefs
otBorderRoutingPrefixTableEntry
struct otBorderRoutingPrefixTableEntry otBorderRoutingPrefixTableEntry
Stellt einen Eintrag aus der erkannten Präfixtabelle dar.
Die Einträge in der erkannten Tabelle verfolgen die Optionen für Präfix-/Routeninformationen in den empfangenen Router-Ankündigungsnachrichten von anderen Routern über den Infrastrukturlink.
otBorderRoutingPrefixTableIterator
struct otBorderRoutingPrefixTableIterator otBorderRoutingPrefixTableIterator
Stellt einen Iterator zum Durchlaufen der erkannten Präfixtabelle des Border-Routers dar.
Die Felder in diesem Typ sind intransparent (nur zur Verwendung durch den OpenThread-Kern vorgesehen) und sollten daher nicht vom Aufrufer aufgerufen oder verwendet werden.
Vor der Verwendung eines Listeners MUSS er mit otBorderRoutingPrefixTableInitIterator()
initialisiert werden.
otBorderRoutingRouterEntry
struct otBorderRoutingRouterEntry otBorderRoutingRouterEntry
Stellt einen erkannten Router unter der Infrastrukturverbindung dar.
otPdProcessedRaInfo
struct otPdProcessedRaInfo otPdProcessedRaInfo
Stellt eine Datengruppe von plattformgenerierten RA-Nachrichten dar, die verarbeitet wurden.
Funktionen
otBorderRoutingClearRouteInfoOptionPreference
void otBorderRoutingClearRouteInfoOptionPreference( otInstance *aInstance )
Löscht einen zuvor festgelegten Wert für die beworbenen Routeninformationen.
Nach dem Aufruf dieser Funktion verwendet der BR nutzt die Rolle des Geräts, um die RIO-Präferenz zu bestimmen: mittlere Präferenz für Router/Leader und niedrige Präferenz für untergeordnete Rolle.
Details | |||
---|---|---|---|
Parameter |
|
otBorderRoutingClearRoutePreference
void otBorderRoutingClearRoutePreference( otInstance *aInstance )
Löscht einen zuvor festgelegten Wert für veröffentlichte Routen in den Netzwerkdaten.
Nach dem Aufruf dieser Funktion bestimmt die BR die Präferenz automatisch basierend auf der Rolle des Geräts und der Linkqualität (wenn es als Endgerät fungiert).
Details | |||
---|---|---|---|
Parameter |
|
otBorderRoutingDhcp6PdGetState
otBorderRoutingDhcp6PdState otBorderRoutingDhcp6PdGetState( otInstance *aInstance )
Ruft den aktuellen Status der DHCPv6-Präfixdelegierung ab.
Hierfür muss OPENTHREAD_CONFIG_BORDER_ROUTING_DHCP6_PD_ENABLE
aktiviert sein.
Details | |||
---|---|---|---|
Parameter |
|
||
Rückgabe |
Der aktuelle Status der DHCPv6-Präfixdelegierung.
|
otBorderRoutingDhcp6PdSetEnabled
void otBorderRoutingDhcp6PdSetEnabled( otInstance *aInstance, bool aEnabled )
Aktiviert / deaktiviert die DHCPv6-Präfixdelegierung.
OPENTHREAD_CONFIG_BORDER_ROUTING_DHCP6_PD_ENABLE
muss aktiviert sein.
Details | |||||
---|---|---|---|---|---|
Parameter |
|
otBorderRoutingGetFavoredNat64Prefix
otError otBorderRoutingGetFavoredNat64Prefix( otInstance *aInstance, otIp6Prefix *aPrefix, otRoutePreference *aPreference )
Ruft das aktuell bevorzugte NAT64-Präfix ab.
Das bevorzugte NAT64-Präfix kann über den Infrastrukturlink erkannt werden oder das lokale NAT64-Präfix dieses Geräts sein.
Details | |||||||
---|---|---|---|---|---|---|---|
Parameter |
|
||||||
Rückgabewerte |
|
otBorderRoutingGetFavoredOmrPrefix
otError otBorderRoutingGetFavoredOmrPrefix( otInstance *aInstance, otIp6Prefix *aPrefix, otRoutePreference *aPreference )
Ruft das aktuell bevorzugte ORM-Präfix (Off-Mesh-Routable) ab.
Das bevorzugte OMR-Präfix kann aus den Netzwerkdaten ermittelt werden oder das lokale OMR-Präfix dieses Geräts sein.
Details | |||||||
---|---|---|---|---|---|---|---|
Parameter |
|
||||||
Rückgabewerte |
|
otBorderRoutingGetFavoredOnLinkPrefix
otError otBorderRoutingGetFavoredOnLinkPrefix( otInstance *aInstance, otIp6Prefix *aPrefix )
Ruft das aktuell bevorzugte On-Link-Präfix ab.
Das bevorzugte Präfix ist entweder ein erkanntes On-Link-Präfix auf der Infrastrukturverbindung oder das lokale On-Link-Präfix.
Details | |||||
---|---|---|---|---|---|
Parameter |
|
||||
Rückgabewerte |
|
otBorderRoutingGetNat64Prefix
otError otBorderRoutingGetNat64Prefix( otInstance *aInstance, otIp6Prefix *aPrefix )
Ruft das lokale NAT64-Präfix des Border-Routers ab.
Das NAT64-Präfix wird im Thread-Netzwerk möglicherweise nicht beworben.
OPENTHREAD_CONFIG_NAT64_BORDER_ROUTING_ENABLE
muss aktiviert sein.
Details | |||||
---|---|---|---|---|---|
Parameter |
|
||||
Rückgabewerte |
|
otBorderRoutingGetNextPrefixTableEntry
otError otBorderRoutingGetNextPrefixTableEntry( otInstance *aInstance, otBorderRoutingPrefixTableIterator *aIterator, otBorderRoutingPrefixTableEntry *aEntry )
Durchläuft die Einträge in der erkannten Präfixtabelle des Border-Routers.
Präfixeinträge, die mit demselben erkannten Router in einer Infrastrukturverbindung verknüpft sind, werden garantiert gruppiert (rückläufig abgerufen).
Details | |||||||
---|---|---|---|---|---|---|---|
Parameter |
|
||||||
Rückgabewerte |
|
otBorderRoutingGetNextRouterEntry
otError otBorderRoutingGetNextRouterEntry( otInstance *aInstance, otBorderRoutingPrefixTableIterator *aIterator, otBorderRoutingRouterEntry *aEntry )
Iteriert über die erkannten Routereinträge auf der Infrastrukturverbindung.
Details | |||||||
---|---|---|---|---|---|---|---|
Parameter |
|
||||||
Rückgabewerte |
|
otBorderRoutingGetOmrPrefix
otError otBorderRoutingGetOmrPrefix( otInstance *aInstance, otIp6Prefix *aPrefix )
Ruft das lokale ORM-Präfix (Off-Mesh-Routable) ab, z. B. fdfc:1ff5:1512:5622::/64
.
Ein OMR-Präfix ist ein zufällig generiertes 64-Bit-Präfix, das im Thread-Netzwerk veröffentlicht wird, wenn noch kein OMR-Präfix vorhanden ist. Dieses Präfix ist über das lokale WLAN oder Ethernet-Netzwerk erreichbar.
Hinweis: Wenn DHCPv6 PD aktiviert ist, kann der Border-Router das Präfix des DHCPv6 PD veröffentlichen.
Details | |||||
---|---|---|---|---|---|
Parameter |
|
||||
Rückgabewerte |
|
otBorderRoutingGetPdOmrPrefix
otBorderRoutingGetOnLinkPrefix
otError otBorderRoutingGetOnLinkPrefix( otInstance *aInstance, otIp6Prefix *aPrefix )
Ruft das lokale On-Link-Präfix für den angrenzenden Infrastrukturlink ab.
Das lokale On-Link-Präfix ist ein 64-Bit-Präfix, das im Infrastrukturlink beworben wird, wenn auf dem Link noch kein nutzbares On-Link-Präfix beworben wird.
Details | |||||
---|---|---|---|---|---|
Parameter |
|
||||
Rückgabewerte |
|
otBorderRoutingGetPdOmrPrefix
otError otBorderRoutingGetPdOmrPrefix( otInstance *aInstance, otBorderRoutingPrefixTableEntry *aPrefixInfo )
Ruft das DHCPv6-Präfix-Delegation-Präfix (Off-Mesh-routable, OMR) ab.
In den zurückgegebenen Präfixinformationen werden nur die Felder „mPräfix“, „mValidLifetime“ und „mPreferredLifetime“ verwendet.
OPENTHREAD_CONFIG_BORDER_ROUTING_DHCP6_PD_ENABLE
muss aktiviert sein.
Details | |||||||
---|---|---|---|---|---|---|---|
Parameter |
|
||||||
Rückgabewerte |
|
otBorderRoutingGetOmrPrefix
otPlatBorderRoutingProcessIcmp6Ra
otBorderRoutingGetPdProcessedRaInfo
otError otBorderRoutingGetPdProcessedRaInfo( otInstance *aInstance, otPdProcessedRaInfo *aPdProcessedRaInfo )
Ruft die Daten der verarbeiteten plattformgenerierten RA-Nachricht ab.
OPENTHREAD_CONFIG_BORDER_ROUTING_DHCP6_PD_ENABLE
muss aktiviert sein.
Details | |||||||
---|---|---|---|---|---|---|---|
Parameter |
|
||||||
Rückgabewerte |
|
otBorderRoutingGetRouteInfoOptionPreference
otRoutePreference otBorderRoutingGetRouteInfoOptionPreference( otInstance *aInstance )
Ruft die aktuelle Einstellung ab, die beim Bewerben von Routeninformationsoptionen (RIO) in Router-Advertising-Nachrichten verwendet wird, die über den Infrastruktur-Link gesendet werden.
Die RIO-Einstellung wird wie folgt bestimmt:
- Wenn dies explizit durch den Nutzer durch Aufrufen von
otBorderRoutingSetRouteInfoOptionPreference()
festgelegt wird, wird die angegebene Einstellung verwendet. - Andernfalls wird sie anhand der aktuellen Rolle des Geräts bestimmt: Mittlere Präferenz bei der Rolle „Router/Leader“ und niedrige Präferenz für Kinder.
Details | |
---|---|
Rückgabe |
Die aktuelle Einstellung für die Option „Routeninformationen“.
|
otBorderRoutingGetRoutePreference
otRoutePreference otBorderRoutingGetRoutePreference( otInstance *aInstance )
Ruft die aktuelle Einstellung für veröffentlichte Routen in Netzwerkdaten ab.
Die Präferenz wird wie folgt bestimmt:
- Wenn dies explizit durch den Nutzer durch Aufrufen von
otBorderRoutingSetRoutePreference()
festgelegt wird, wird die angegebene Einstellung verwendet. - Andernfalls wird sie automatisch von
RoutingManager
auf Grundlage der Rolle des Geräts und der Linkqualität ermittelt.
Details | |||
---|---|---|---|
Parameter |
|
||
Rückgabe |
Die aktuell veröffentlichte Routeneinstellung.
|
otBorderRoutingGetState
otBorderRoutingState otBorderRoutingGetState( otInstance *aInstance )
Ruft den aktuellen Status des Border Routing Manager ab.
Details | |||
---|---|---|---|
Parameter |
|
||
Rückgabe |
Der aktuelle Status des Border Routing Manager.
|
otBorderRoutingInit
otError otBorderRoutingInit( otInstance *aInstance, uint32_t aInfraIfIndex, bool aInfraIfIsRunning )
Initialisiert den Border Routing Manager auf der gegebenen Infrastrukturschnittstelle.
Details | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parameter |
|
||||||||
Rückgabewerte |
|
otPlatInfraIfStateChanged.
otBorderRoutingSetEnabled.
otBorderRoutingPrefixTableInitIterator
void otBorderRoutingPrefixTableInitIterator( otInstance *aInstance, otBorderRoutingPrefixTableIterator *aIterator )
Initialisiert ein otBorderRoutingPrefixTableIterator
.
Ein Iterator MUSS initialisiert werden, bevor er verwendet wird.
Ein Iterator kann wieder initialisiert werden, um am Anfang der Tabelle neu zu starten.
Wenn Sie über Einträge in der Tabelle iterieren, werden sie in Relation zur Zeit angegeben, zu der der Iterator initialisiert wurde, um sicherzustellen, dass die Aktualisierungszeiten mMsecSinceLastUpdate
der Einträge konsistent sind.
Details | |||||
---|---|---|---|---|---|
Parameter |
|
otBorderRoutingSetEnabled
otError otBorderRoutingSetEnabled( otInstance *aInstance, bool aEnabled )
Aktiviert oder deaktiviert den Border Routing Manager.
Details | |||||
---|---|---|---|---|---|
Parameter |
|
||||
Rückgabewerte |
|
otBorderRoutingSetRouteInfoOptionPreference
void otBorderRoutingSetRouteInfoOptionPreference( otInstance *aInstance, otRoutePreference aPreference )
Hiermit wird explizit die Einstellung festgelegt, die beim Bewerben von Route Info Options (RIO) in Router-Ankündigungsnachrichten über den Infrastrukturlink verwendet werden soll.
Nach dem Aufruf dieser Funktion verwendet die BR die vorgegebenen Präferenzen für alle beworbenen RIOs. Sie können die Einstellung durch Aufrufen von otBorderRoutingClearRouteInfoOptionPreference()
löschen.
Details | |||||
---|---|---|---|---|---|
Parameter |
|
otBorderRoutingSetRoutePreference
void otBorderRoutingSetRoutePreference( otInstance *aInstance, otRoutePreference aPreference )
Legt die Einstellung für veröffentlichte Routen in Netzwerkdaten explizit fest.
Nach dem Aufruf dieser Funktion verwendet die BR die vorgegebenen Präferenzen. Sie können die Einstellung durch Aufrufen von otBorderRoutingClearRoutePreference()
löschen.
Details | |||||
---|---|---|---|---|---|
Parameter |
|
Ressourcen
OpenThread API-Referenzthemen stammen aus dem Quellcode, der auf GitHub verfügbar ist. Weitere Informationen finden Sie unter Ressourcen. Dort können Sie auch einen Beitrag zu unserer Dokumentation leisten.