ボーダー ルーティング マネージャー
このモジュールでは、Border Routing Manager に関連する定義について説明します。
概要
このモジュールのすべての関数で OPENTHREAD_CONFIG_BORDER_ROUTING_ENABLE
を有効にする必要があります。
Border Routing Manager は、Thread ネットワークと隣接するインフラストラクチャ リンク(AIL)間の双方向ルーティングを処理します。
リンク プレフィックスとルート プレフィックスをアドバタイズするために、AIL で ICMRv6 ND ルーター アドバタイズ(RA)メッセージを発行します。また、インフラストラクチャから受信した RA メッセージを処理し、検出されたプレフィックスを Thread ネットワーク データにミラーリングして、Thread メッシュ上のデバイスがボーダー ルーター経由で AIL に到達できるようにします。
ルーティング マネージャーは、スレッド ネットワーク データのオフメッシュ ルーティング可能(OMR)プレフィックスを管理します。これは、適切なオフメッシュ ルーティング可能な IPv6 アドレスで Thread デバイスを構成します。このプレフィックスは、IPv6 ルート情報オプション(RIO)として発信される RA メッセージに含めることで、AIL 上でのこのプレフィックスの到達可能性を通知します。
また、ルーティング マネージャーはインフラストラクチャ ネットワークのオンリンク プレフィックスをモニタリングし、追加します。AIL のルーターが、リンク上の IPv6 デバイスが独自のルーティング可能なユニキャスト IPv6 アドレスを自己構成できるようにする IPv6 プレフィックス情報オプション(PIO)を含む RA メッセージをすでに提供している場合、Thread デバイスはこのアドレスを使用して AIL に到達できます。ボーダー ルーターは AIL でそのような RA メッセージを検出しない場合、ULA オンリンク プレフィックスを生成し、発行された RA メッセージ内の AIL にアドバタイズします。
列挙型 |
|
---|---|
otBorderRoutingDhcp6PdState{
|
enum この列挙値は、DHCPv6 プレフィックス委任状態の状態を表します。 |
otBorderRoutingState{
|
enum Border Routing Manager の状態を表します。 |
Typedef |
|
---|---|
otBorderRoutingPrefixTableEntry
|
typedef 検出されたプレフィックス テーブルのエントリを表します。 |
otBorderRoutingPrefixTableIterator
|
typedef ボーダー ルーターの検出されたプレフィックス テーブルを反復処理するイテレータを表します。 |
otBorderRoutingRouterEntry
|
typedefstruct otBorderRoutingRouterEntry
インフラストラクチャ リンクで検出されたルーターを表します。 |
otPdProcessedRaInfo
|
typedefstruct 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)
|
現在優先されているオフメッシュ ルーティング可能(OMR)プレフィックスを取得します。
|
otBorderRoutingGetFavoredOnLinkPrefix(otInstance *aInstance, otIp6Prefix *aPrefix)
|
現在優先されているオンリンク接頭辞を取得します。
|
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)
|
ローカルのメッシュ ルーティング可能(OMR)プレフィックスを取得します(例:
fdfc:1ff5:1512:5622::/64 )。 |
otBorderRoutingGetOnLinkPrefix(otInstance *aInstance, otIp6Prefix *aPrefix)
|
隣接インフラストラクチャ リンクのローカル オンリンク プレフィックスを取得します。
|
otBorderRoutingGetPdOmrPrefix(otInstance *aInstance, otBorderRoutingPrefixTableEntry *aPrefixInfo)
|
DHCPv6 プレフィックス委任(PD)が提供するオフメッシュ ルーティング可能(OMR)プレフィックスを取得します。
|
otBorderRoutingGetPdProcessedRaInfo(otInstance *aInstance, otPdProcessedRaInfo *aPdProcessedRaInfo)
|
処理されたプラットフォームで生成された RA メッセージのデータを取得します。
|
otBorderRoutingGetRouteInfoOptionPreference(otInstance *aInstance)
|
インフラストラクチャ リンク経由で送信されたルーター アドバタイズ メッセージでルート情報オプション(RIO)をアドバタイズする際に使用される現在の設定を取得します。
|
otBorderRoutingGetRoutePreference(otInstance *aInstance)
|
ネットワーク データの公開ルートで使用されている現在の設定を取得します。
|
otBorderRoutingGetState(otInstance *aInstance)
|
Border Routing Manager の現在の状態を取得します。
|
otBorderRoutingInit(otInstance *aInstance, uint32_t aInfraIfIndex, bool aInfraIfIsRunning)
|
特定のインフラストラクチャ インターフェースで Border Routing Manager を初期化します。
|
otBorderRoutingPrefixTableInitIterator(otInstance *aInstance, otBorderRoutingPrefixTableIterator *aIterator)
|
void
otBorderRoutingPrefixTableIterator を初期化します。 |
otBorderRoutingSetEnabled(otInstance *aInstance, bool aEnabled)
|
Border Routing Manager を有効または無効にします。
|
otBorderRoutingSetRouteInfoOptionPreference(otInstance *aInstance, otRoutePreference aPreference)
|
void
インフラストラクチャ リンク経由で送信されるルーター アドバタイズ メッセージでルート情報オプション(RIO)をアドバタイズするときに使用する設定を明示的に設定します。
|
otBorderRoutingSetRoutePreference(otInstance *aInstance, otRoutePreference aPreference)
|
void
ネットワーク データの公開ルートの優先度を明示的に設定します。
|
構造体 |
|
---|---|
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
Border Routing Manager の状態を表します。
プロパティ | |
---|---|
OT_BORDER_ROUTING_STATE_DISABLED
|
ルーティング マネージャーは初期化されていますが、無効になっています。 |
OT_BORDER_ROUTING_STATE_RUNNING
|
ルーティング マネージャーが初期化され、有効になっていて、実行中です。 |
OT_BORDER_ROUTING_STATE_STOPPED
|
ルーティング マネージャーは初期化され、有効になっていますが、現在停止しています。 |
OT_BORDER_ROUTING_STATE_UNINITIALIZED
|
ルーティング マネージャーが初期化されていません。 |
Typedef
otBorderRoutingPrefixTableEntry
struct otBorderRoutingPrefixTableEntry otBorderRoutingPrefixTableEntry
検出されたプレフィックス テーブルのエントリを表します。
検出されたテーブルのエントリは、インフラストラクチャ リンク上の他のルーターから受信したルーター アドバタイズ メッセージのプレフィックス/ルート情報オプションを追跡します。
otBorderRoutingPrefixTableIterator
struct otBorderRoutingPrefixTableIterator otBorderRoutingPrefixTableIterator
ボーダー ルーターの検出されたプレフィックス テーブルを反復処理するイテレータを表します。
この型のフィールドは不透明(OpenThread コア専用)であるため、呼び出し元がアクセスまたは使用すべきではありません。
イテレータを使用する前に、otBorderRoutingPrefixTableInitIterator()
を使用して初期化しなければなりません。
otBorderRoutingRouterEntry
struct otBorderRoutingRouterEntry otBorderRoutingRouterEntry
インフラストラクチャ リンクで検出されたルーターを表します。
otPdProcessedRaInfo
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 プレフィックス委任の現在の状態。
|
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 )
現在優先されているオフメッシュ ルーティング可能(OMR)プレフィックスを取得します。
優先する OMR プレフィックスは、ネットワーク データから検出することも、このデバイスのローカル OMR プレフィックスを指定することもできます。
詳細 | |||||||
---|---|---|---|---|---|---|---|
パラメータ |
|
||||||
戻り値 |
|
otBorderRoutingGetFavoredOnLinkPrefix
otError otBorderRoutingGetFavoredOnLinkPrefix( otInstance *aInstance, otIp6Prefix *aPrefix )
現在優先されているオンリンク接頭辞を取得します。
優先されるプレフィックスは、インフラストラクチャ リンクで検出されたリンク上プレフィックスまたはローカル オンリンク プレフィックスのいずれかです。
詳細 | |||||
---|---|---|---|---|---|
パラメータ |
|
||||
戻り値 |
|
otBorderRoutingGetNat64Prefix
otError otBorderRoutingGetNat64Prefix( otInstance *aInstance, otIp6Prefix *aPrefix )
ボーダー ルーターのローカル NAT64 プレフィックスを取得します。
Thread ネットワークで NAT64 接頭辞がアドバタイズされない可能性があります。
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 )
ローカルのメッシュ ルーティング可能(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
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 )
Border Routing Manager の現在の状態を取得します。
詳細 | |||
---|---|---|---|
パラメータ |
|
||
戻り値 |
Border Routing Manager の現在のステータス。
|
otBorderRoutingInit
otError otBorderRoutingInit( otInstance *aInstance, uint32_t aInfraIfIndex, bool aInfraIfIsRunning )
特定のインフラストラクチャ インターフェースで Border Routing Manager を初期化します。
詳細 | |||||||||
---|---|---|---|---|---|---|---|---|---|
パラメータ |
|
||||||||
戻り値 |
|
otPlatInfraIfStateChanged。
otBorderRoutingSetEnabled。
otBorderRoutingPrefixTableInitIterator
void otBorderRoutingPrefixTableInitIterator( otInstance *aInstance, otBorderRoutingPrefixTableIterator *aIterator )
otBorderRoutingPrefixTableIterator
を初期化します。
イテレータは、使用する前に初期化しなければなりません。
イテレータを再度初期化して、テーブルの先頭から再開できます。
テーブル内のエントリを反復処理する場合、エントリの更新回数 mMsecSinceLastUpdate
が一定になるように、イテレータが初期化された時刻を基準にしてエントリを指定します。
詳細 | |||||
---|---|---|---|---|---|
パラメータ |
|
otBorderRoutingSetEnabled
otError otBorderRoutingSetEnabled( otInstance *aInstance, bool aEnabled )
Border Routing Manager を有効または無効にします。
詳細 | |||||
---|---|---|---|---|---|
パラメータ |
|
||||
戻り値 |
|
otBorderRoutingSetRouteInfoOptionPreference
void otBorderRoutingSetRouteInfoOptionPreference( otInstance *aInstance, otRoutePreference aPreference )
インフラストラクチャ リンク経由で送信されるルーター アドバタイズ メッセージでルート情報オプション(RIO)をアドバタイズするときに使用する設定を明示的に設定します。
この関数の呼び出しの後、BR はアドバタイズされたすべての RIO に指定された設定を使用します。設定を消去するには、otBorderRoutingClearRouteInfoOptionPreference()
を呼び出します。
詳細 | |||||
---|---|---|---|---|---|
パラメータ |
|
otBorderRoutingSetRoutePreference
void otBorderRoutingSetRoutePreference( otInstance *aInstance, otRoutePreference aPreference )
ネットワーク データの公開ルートの優先度を明示的に設定します。
この関数の呼び出しの後、BR は指定された設定を使用します。設定を消去するには、otBorderRoutingClearRoutePreference()
を呼び出します。
詳細 | |||||
---|---|---|---|---|---|
パラメータ |
|
関連情報
OpenThread API リファレンスのトピックは、GitHub で入手できるソースコードに由来しています。 詳細について、またはドキュメントへの投稿については、リソースをご覧ください。