メインコンテンツまでスキップ

3.2.1.1. Sender Behavior (送信機動作) (RFC 8724 のセクション 8.4.3.1 を置き換え)

3.2.1.1. Sender Behavior (送信機動作)

新しい SCHC Packet のフラグメンテーションの開始時:

  • fragment sender (フラグメント送信機) はこの SCHC Packet に対して RuleID と DTag 値のペアを選択しなければならない。その Rule (ルール) の M と WINDOW_SIZE の値が SCHC Packet を (2^M) * WINDOW_SIZE 個以下の tiles にフラグメント化できないような場合, Rule を選択してはならない。

  • fragment sender はその RuleID と DTag 値のペアに対して Attempts counter (試行カウンタ) を 0 に初期化しなければならない。

Regular SCHC Fragment (通常 SCHC フラグメント) メッセージはそのペイロード内に1つまたは複数の tiles を運びます。1つの Regular SCHC Fragment で複数の tiles が運ばれる場合:

  • 選択された tiles は元の SCHC Packet 内で連続していなければならず, また

  • それらは SCHC Packet 内に現れる順序で, SCHC Packet の開始から終わりに向かって, SCHC Fragment Payload 内で互いに隣接して配置されなければならない。

最後のものではない Tiles は, セクション 8.3.1.1 で指定されているように Regular SCHC Fragments で送信されなければならない。FCN フィールドにはその SCHC Fragment で送信される最初の tile の tile index (タイルインデックス) を含めなければならない。

Regular SCHC Fragment メッセージでは, sender はその SCHC Fragment で送信される最初の tile の window number で W フィールドを埋めなければならない。

Profile は SCHC Packet の最後の tile が送信されるかどうかを定義しなければならない:

  • Regular SCHC Fragment 内で, 単独またはマルチタイルペイロードの一部として,

  • All-1 SCHC Fragment 内で単独で, または

  • 上記の2つの方法のいずれかで。

All-1 SCHC Fragment メッセージでは, sender は SCHC Packet の最後の tile の window number で W フィールドを埋めなければならない。

fragment sender はすべて合わせてフラグメント化された SCHC Packet のすべての tiles を含むように SCHC Fragments を送信しなければならない。

fragment sender は少なくとも1つの All-1 SCHC Fragment を送信しなければならない。

上記の2項目を実行する際, sender は receiver が Regular SCHC Fragment と All-1 SCHC Fragment の両方を通じて最後の tile を受信しないことを確認しなければならない。

fragment sender は次を送信した後に SCHC Compound ACK メッセージを待機しなければならない:

  • All-1 SCHC Fragment または

  • SCHC ACK REQ。

Profile は fragment sender が SCHC Compound ACK メッセージを待機しなければならない他の時間を指定してもよい。たとえば, これは完全な window の tiles を送信した後である可能性がある。

fragment sender が All-1 SCHC Fragment または SCHC ACK REQ を送信するたびに:

  • Attempts counter をインクリメントしなければならず, また

  • Retransmission Timer (再送信タイマー) をリセットしなければならない。

Retransmission Timer の有効期限切れ時:

  • Attempts counter が MAX_ACK_REQUESTS より厳密に小さい場合, fragment sender は All-1 SCHC Fragment または最後の window に対応する W フィールドを持つ SCHC ACK REQ のいずれかを送信しなければならない,

  • それ以外の場合, fragment sender は SCHC Sender-Abort (SCHC 送信機中止) を送信しなければならず, エラー条件で終了してもよい。

本セクションの残りで議論されるすべてのメッセージ受信は, 簡潔にするために詳しく説明されていなくても, "処理中の RuleID と DTag ペアに一致する" と理解されるべきである。

SCHC Compound ACK を受信したとき:

  • SCHC Compound ACK 内の W フィールドの1つが SCHC Packet の最後の window に対応する場合:

    • C bit が設定されている場合, sender は正常に終了してもよい。

    • それ以外の場合:

      • Profile が最後の tile を All-1 SCHC Fragment で送信することを義務付けている場合:

        • SCHC Compound ACK が receiver で欠落している tile がないことを示している場合, sender は:

          • SCHC Sender-Abort を送信しなければならず, また

          • エラー条件で終了してもよい。

        • それ以外の場合:

          • fragment sender は SCHC Compound ACK で欠落していると報告されたすべての windows のすべての tiles を含む SCHC Fragment メッセージを送信しなければならない。

          • これらの SCHC Fragment メッセージの最後が All-1 SCHC Fragment でない場合, fragment sender は追加で最後の window に対応する W フィールドを持つ SCHC ACK REQ を送信するか, All-1 SCHC Fragment を繰り返してすべての tiles が正しく受信されたことを receiver に確認するよう求めてもよい。

          • 上記の2項目を実行する際, sender は receiver が Regular SCHC Fragment と All-1 SCHC Fragment の両方を通じて最後の tile を受信しないことを確認しなければならない。

      • それ以外の場合:

        • SCHC Compound ACK が receiver で欠落している tile がないことを示している場合, sender は All-1 SCHC Fragment を送信しなければならない

        • それ以外の場合:

          • fragment sender は SCHC Compound ACK で欠落していると報告されたすべての tiles を含む SCHC Fragment メッセージを送信しなければならない。

          • fragment sender はその後 All-1 SCHC Fragment または最後の window に対応する W フィールドを持つ SCHC ACK REQ のいずれかを送信しなければならない。

  • それ以外の場合, fragment sender は:

    • SCHC Compound ACK で欠落していると報告された tiles を含む SCHC Fragment メッセージを送信しなければならない。

    • その後, 最後の window に対応する W フィールドを持つ SCHC ACK REQ を送信してもよい。

この仕様に従う sender 動作を実装する Finite State Machine (有限状態機械) のいくつかの可能な例の1つについては, RFC 8724 の図 43 を参照してください。