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 を参照してください。