邊界轉送管理員
這個模組包含邊界路由管理員的相關定義。
摘要
你必須啟用 OPENTHREAD_CONFIG_BORDER_ROUTING_ENABLE
,才能使用這個模組中的所有函式。
邊界轉送管理員會處理 Thread 網路和相鄰基礎架構連結 (AIL) 之間的雙向轉送作業。
這個 API 會在 AIL 上發出 ICMRv6 ND 路由器通告 (RA) 訊息,藉此通告連結和路徑前置字元。也會處理來自基礎架構的 RA 訊息,並為 Thread 網路資料中發現的前置字串建立鏡像,確保 Thread 網狀網路的裝置可以透過邊界路由器連線至 AIL。
轉送管理員會管理 Thread 網路資料的 Off-Mesh Routable (OMR) 前置字串,藉此使用合適的 Off-Mesh Routable IPv6 位址設定 Thread 裝置。這個前置字串會將這個前置字串納入發出的 RA 訊息中做為 IPv6 路徑資訊選項 (RIO),以宣告這個前置字串在 AIL 上的可連性。
轉送管理員也會監控基礎架構網路,並在連結中加入前置字串。如果 AIL 上的路由器已提供含有 IPv6 前置字串資訊選項 (PIO) 的 RA 訊息,讓該連結上的 IPv6 裝置啟用自行設定可路由的單點傳播 IPv6 位址,Thread 裝置就可以使用這個位址連線到 AIL。如果邊界路由器在 AIL 上找不到這類 RA 訊息,就會產生 ULA 端連結前置字串,然後在發出的 RA 訊息中,透過 AIL 通告。
Typedefs |
|
---|---|
otBorderRoutingPrefixTableEntry
|
typedef 代表找到的前置字串資料表中的項目。 |
otBorderRoutingPrefixTableIterator
|
typedef 代表透過邊界路由器找到前置字串資料表進行疊代的疊代器。 |
otBorderRoutingRouterEntry
|
typedefstruct otBorderRoutingRouterEntry
代表基礎架構連結中偵測到的路由器。 |
結構 |
|
---|---|
otBorderRoutingPrefixTableEntry |
代表找到的前置字串資料表中的項目。 |
otBorderRoutingPrefixTableIterator |
代表透過邊界路由器找到前置字串資料表進行疊代的疊代器。 |
otBorderRoutingRouterEntry |
代表基礎架構連結中偵測到的路由器。 |
列舉
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 會根據裝置的角色和連結品質 (以裝置身分運作時至父項) 自動決定偏好設定。
詳細說明 | |||
---|---|---|---|
參數 |
|
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 )
取得目前偏好的連結前置字串。
偏好使用的前置字元可能是基礎架構連結的連結前置字元,或本機連結前置字元。
詳細說明 | |||||
---|---|---|---|---|---|
參數 |
|
||||
傳回值 |
|
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 )
取得相鄰基礎架構連結的本機連結前置字串。
「本機端連結前置字元」為 64 位元前置字元,萬一連結中沒有可用的連結前置字元,系統就會透過基礎架構連結宣傳的前置字元。
詳細說明 | |||||
---|---|---|---|---|---|
參數 |
|
||||
傳回值 |
|
otBorderRoutingGetPdOmrPrefix
otError otBorderRoutingGetPdOmrPrefix( otInstance *aInstance, otBorderRoutingPrefixTableEntry *aPrefixInfo )
取得提供的 DHCPv6 前置字串委派 (PD) 前置字串 (OMR) 前置字串。
傳回的前置字串資訊中只會使用 mPrefix、mValidLifetime 和 mPreferredLifetime 欄位。
必須啟用OPENTHREAD_CONFIG_BORDER_ROUTING_DHCP6_PD_ENABLE
。
詳細說明 | |||||||
---|---|---|---|---|---|---|---|
參數 |
|
||||||
傳回值 |
|
otBorderRoutingGetOmrPrefix
otPlatBorderForwardProcessIcmp6Ra
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 取得。如要瞭解詳情或參與說明文件,請參閱資源。