邊界轉送管理員
這個單元包含與邊界轉送管理員相關的定義。
摘要
必須啟用 OPENTHREAD_CONFIG_BORDER_ROUTING_ENABLE
,才能使用這個模組中的所有函式。
邊界轉送管理員會處理 Thread 網路與相鄰基礎架構連結 (AIL) 的雙向轉送作業。
它會在 AIL 上發出 ICMRv6 ND Router Advertisingment (RA) 訊息,公告連結和路徑前置字元。也會處理從基礎架構接收的 RA 訊息,並鏡像在 Thread 網路資料中發現的前置字串,確保 Thread 網格上的裝置可以透過邊界路由器連線至 AIL。
轉送管理員會管理 Thread 網路資料中的「外部網格轉送」(OMR) 前置字串,後者會為 Thread 裝置設定合適的「離線 Routs 可路由 IPv6 位址」設定。這個版本在 AIL 宣布這個前置字串的可連性,方法是將前置字串納入發出的 RA 訊息做為 IPv6 路徑資訊選項 (RIO)。
轉送管理員也會監控基礎架構網路,並在其中新增連結內前置字串。如果 AIL 上的路由器已提供內含 IPv6 前置字串資訊選項 (PIO) 的 RA 訊息,讓連結上的 IPv6 裝置可以自行設定可轉送的單點傳播 IPv6 位址,Thread 裝置便可透過這個地址連線至 AIL。如果邊界路由器在 AIL 上找不到這類 RA 訊息,就會產生連結 ULA 的前置字串,然後在發出的 RA 訊息中,在 AIL 上通告。
Typedefs |
|
---|---|
otBorderRoutingPrefixTableEntry
|
typedef 代表來自找到的前置字串資料表的項目。 |
otBorderRoutingPrefixTableIterator
|
typedef 代表疊代器所發現的前置詞資料表疊代疊代器。 |
otBorderRoutingRouterEntry
|
typedefstruct otBorderRoutingRouterEntry
代表在基礎架構連結上找到的路由器。 |
otPdProcessedRaInfo
|
typedefstruct otPdProcessedRaInfo
代表平台產生的 RA 訊息一組資料。 |
結構 |
|
---|---|
otBorderRoutingPrefixTableEntry |
代表來自找到的前置字串資料表的項目。 |
otBorderRoutingPrefixTableIterator |
代表疊代器所發現的前置詞資料表疊代疊代器。 |
otBorderRoutingRouterEntry |
代表在基礎架構連結上找到的路由器。 |
otPdProcessedRaInfo |
代表平台產生的 RA 訊息一組資料。 |
列舉
otBorderRoutingDhcp6PdState
otBorderRoutingDhcp6PdState
此列舉代表 DHCPv6 前置字串委派狀態的狀態。
屬性 | |
---|---|
OT_BORDER_ROUTING_DHCP6_PD_STATE_DISABLED
|
邊界路由器的 DHCPv6 PD 已停用。 |
OT_BORDER_ROUTING_DHCP6_PD_STATE_RUNNING
|
DHCPv6 PD 已啟用,並嘗試要求並發布前置字串。 |
OT_BORDER_ROUTING_DHCP6_PD_STATE_STOPPED
|
已啟用 DHCPv6 PD,但不會嘗試要求並發布前置字串。 |
otBorderRoutingState
otBorderRoutingState
代表邊界轉送管理員的狀態。
屬性 | |
---|---|
OT_BORDER_ROUTING_STATE_DISABLED
|
轉送管理員已初始化,但已停用。 |
OT_BORDER_ROUTING_STATE_RUNNING
|
轉送管理員已初始化、啟用並執行。 |
OT_BORDER_ROUTING_STATE_STOPPED
|
轉送管理員已在初始化及啟用,但目前已停止。 |
OT_BORDER_ROUTING_STATE_UNINITIALIZED
|
未初始化轉送管理員。 |
Typedefs
otBorderRoutingPrefixTableEntry
struct otBorderRoutingPrefixTableEntry otBorderRoutingPrefixTableEntry
代表來自找到的前置字串資料表的項目。
找到的資料表中的項目會追蹤基礎架構連結中其他路由器所傳來的路由器公告訊息中的前置字元/路徑資訊選項。
otBorderRoutingPrefixTableIterator
struct otBorderRoutingPrefixTableIterator otBorderRoutingPrefixTableIterator
代表疊代器所發現的前置詞資料表疊代疊代器。
這個類型的欄位不透明 (僅供 OpenThread 核心使用),因此呼叫端不應存取或使用。
使用疊代器之前,必須先使用 otBorderRoutingPrefixTableInitIterator()
進行初始化。
otBorderRoutingRouterEntry
struct otBorderRoutingRouterEntry otBorderRoutingRouterEntry
代表在基礎架構連結上找到的路由器。
函式
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 前置字串委派的目前狀態。
|
otBorderRoutingDhcp6PdSetEnabled
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 前置字串。
有符號的前置字元是基礎架構連結的「在連結內」前置字串,或是本機連結前置字串。
詳細說明 | |||||
---|---|---|---|---|---|
參數 |
|
||||
傳回值 |
|
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 位元前置字串,如果沒有任何 OMR 前置字串,就會發布至 Thread 網路。這個前置字串可透過區域 Wi-Fi 或乙太網路連線。
注意:啟用 DHCPv6 PD 時,邊界路由器可發布 DHCPv6 PD 的前置字串。
詳細說明 | |||||
---|---|---|---|---|---|
參數 |
|
||||
傳回值 |
|
otBorderRoutingGetPdOmrPrefix
otBorderRoutingGetOnLinkPrefix
otError otBorderRoutingGetOnLinkPrefix( otInstance *aInstance, otIp6Prefix *aPrefix )
取得相鄰基礎架構連結的本機 On-Link 前置字串。
本機連結前置字串是 64 位元的前置字串,只要連結中沒有宣傳的可用連結前置字元,系統就會透過基礎架構連結公告該前置字串,
詳細說明 | |||||
---|---|---|---|---|---|
參數 |
|
||||
傳回值 |
|
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
根據裝置的角色和連結品質自動決定。
詳細說明 | |||
---|---|---|---|
參數 |
|
||
傳回 |
目前發布的路線偏好設定。
|
otBorderRoutingGetState
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
更新時間一致,這些項目會以疊代器初始化的時間為根據。
詳細說明 | |||||
---|---|---|---|---|---|
參數 |
|
otBorderRoutingSetEnabled
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()
即可清除偏好設定。
詳細說明 | |||||
---|---|---|---|---|---|
參數 |
|
資源
OpenThread API 參考資料主題源自原始碼,請前往 GitHub 取得。如要瞭解詳情或對說明文件做出貢獻,請參閱資源。