4.2. Data Packet Forwarding Rules (データパケット転送ルール)
このセクションは, PIM-SM ルーターがマルチキャストデータパケットを転送する方法を説明します。基本原則は, ルーターが適切な転送状態を持つ場合にのみパケットが転送されることです。
パケット転送の基本ルール
マルチキャストデータパケットがルーターインターフェースに到着すると, ルーターは次のチェックを実行します:
- RPF チェック (Reverse Path Forwarding Check): パケットが正しいインターフェース (つまりソースに向かうインターフェース) から到着したことを検証します
- 送信インターフェースリスト (Outgoing Interface List, olist) チェック: パケットがどのインターフェースに転送されるべきかを決定します
- TTL しきい値チェック: パケットの TTL が十分であることを検証します
転送状態
PIM-SM は次の転送状態を使用してパケットの処理方法を決定します:
- (*,G) 状態: 共有ツリー転送に使用されます
- (S,G) 状態: ソース固有最短経路ツリー転送に使用されます
- (S,G,rpt) 状態: 共有ツリー上の特定ソースを除外するために使用されます
転送アルゴリズム
if (DirectlyConnected(S) == TRUE AND iif == RPF_interface(S)) {
olist = olist(*,G) (+) olist(S,G) (-) olist(S,G,rpt)
forward packet on all interfaces in olist
} else if (iif == RPF_interface(S) AND SPTbit(S,G) == TRUE) {
olist = olist(S,G) (-) olist(S,G,rpt)
forward packet on all interfaces in olist
} else if (iif == RPF_interface(RP(G)) AND SPTbit(S,G) == FALSE) {
olist = olist(*,G) (-) olist(S,G,rpt)
forward packet on all interfaces in olist
} else {
drop packet
}
4.2.1. Last-Hop Switchover to the SPT (SPT への最終ホップ切り替え)
受信者の最終ホップルーターが特定ソースからのトラフィックを最初に受信し始めると, 共有ツリー (RPT) 経由でそのトラフィックを受信している可能性があります。トラフィックレートが十分に高い場合, 最終ホップルーターはソース固有の最短経路ツリー (SPT) に切り替えることを決定する場合があります。
切り替えの決定は設定されたしきい値に基づいて行われます。切り替えが決定されると:
- ルーターはソースに向けて (S,G) Join を送信します
- データが SPT 経由で到着し始めると, ルーターは RP に向けて (S,G,rpt) Prune を送信します
4.2.2. Setting and Clearing the (S,G) SPTbit ((S,G) SPTbit の設定とクリア)
SPTbit は, ルーターが特定ソースからのトラフィックを SPT 経由で転送しているか RPT 経由で転送しているかを示すために使用されます。
SPTbit の設定: 次の条件のいずれかが満たされたとき:
- (S,G) 転送状態に一致するパケットが受信され, RPF チェックが成功した場合
- (S,G) Join が送信され, トラフィックが SPT 経由で到着することが予想される場合
SPTbit のクリア: (S,G) 固有の転送が不要になったとき, 例えば:
- すべての下流受信者が離脱した場合
- (S,G) 状態がタイムアウトした場合
注記
詳細な転送ルール, 疑似コード, およびエッジケースの処理については, RFC 7761 のセクション 4.2 の完全な仕様を参照してください。