Ethernet TSN(11)プリエンプション機能追加

開始フラグメント、継続フラグメントと最終フラグメントの構造はお話しした。開始フラグメントの SMD-Sx 、SMD-Cx とFragment Count の8ビットの不思議な数値について説明する。

SMD-Sx

図1 のように、SMD-Sx は先頭フラグメントを表し、4つの状態(ステート)を循環するようになっている。4つの値を巡回する理由は、この開始フラグメントを受信する以前に受信したフラグメントフレームとの識別用だ。プリエンプションのフラグメントは再送機能がないため、複数セットのフラグメントを扱うことができない。新しい開始フラグメントを受信すると、古いフラグメントデータ(残っていれば)は廃棄される。SMD-Sx の値は、表1 の4種類を使用する。

図1 SMD-Sx 巡回
図1 SMD-Sx 巡回
状態State0State1State2State3
開始フラグメントSMD-S0SMD-S1SMD-S2SMD-S3
0xE60x4C0x7F0xB3
表1 SMD-Sx 値

SMD-Cx

継続フラグメントと最終フラグメントの SMD-Cx は、SMD-Sx と同様に4つの状態(ステート)がある。使用する SMD-Cx は、開始フラグメントの SMD-Sx と同じステート番号を使用する。開始フラグメントが SMD-S0 ならば SMD-C0 、SMD-S1 ならば SMD-C1 になる。例えば、開始フラグメントに続き2つの継続フラグメントと最終フラグメントがある場合、SMD-S0 → SMD-C0 → SMD-C0 → SMD-C0 となる。表2 は、SMD-Cx の値とSMD-Sx との対応表だ。

状態State0State1State2State3
開始フラグメントSMD-S0SMD-S1SMD-S2SMD-S3
継続フラグメント
最終フラグメント
SMD-C0SMD-C1SMD-C2SMD-C3
Cx 値0x610x520x9E0x2A
表2 SMD-Cx 値

Fragment Count

フラグメントカウンタも、SMD-Sx/SMD-Cx と同様に4つの状態がある。フラグメントカウンタは、開始フラグメントに続く最初のフラグメントに State0 、次のフラグメントに State1 と順次インクリメントし、State3 の次は State0 の戻る。4つの State を巡回する(図2 参照)。各ステートの値は、00/01/10/11 ではなく、表3 のように 0XE6/0x4C/0x7F/0xB3 を使用する。

図2 フラグメントカウンタ遷移
図2 フラグメントカウンタ遷移
State0State1State2State3
0xE60x4C0x7F0xB3
表3 フラグメントカウンタ 値

フラグメントまとめ

図3 は、具体的なプリエンプション機能でのフラグメントの例だ。最初のイーサネットフレームは6個に分割、2番目は3個、3番目は2個に分割されている。最初のフレームでは、開始フラグメントの SMD にはSMD-S0 、継続フラグメントと最終フラグメントでは、SMD-S0 に対応した SMD-C0 になる。フラグメントカウンタは、State0 から始まり State0 → State1 → State2 → State3 → State0と循環する。2番目のフレームでは、開始フラグメントの SMD には SMD-S1、継続フラグメントと最終フラグメントでは、SMD-S1 に対応した SMD-C1 になる。3番目のフレームも同様に、開始フラグメントの SMD にはSMD-S2 、継続フラグメントと最終フラグメントでは、SMD-S2 に対応した SMD-C2 になる。

図3 フラグメント例
図3 フラグメント例

プリエンプションでの変更領域の一覧は 表4 、各ステートの値一覧は 表5 を参照いただきたい。

現実のネットワークを考えてみよう。時分割多重で設定する「その他」時間帯は、少なくとも最大長フレームより長くするはずだ。現実のネットワークでは、イーサネットフレームは2個に分割されることはあるが、3個以上に分割されることはない。通信規格としては、あらゆる状況でも破綻しないことが重要だが、かなり過剰な規格だ。

標準
イーサネット
VerifyResponse開始
フラグメント
継続
フラグメント
最終
フラグメント
ギャップ12バイト12バイト12バイト12バイト12バイト12バイト
プリアンブル7バイト
0x55
7バイト
0x55
7バイト
0x55
7バイト
0x55
6バイト
0x55
6バイト
0x55
SFD/SMD1バイト
0xD5
SMD-V
0x07
SMD-R
0x19
SMD-SxSMD-CxSMD-Cx
CRCFCSmCRCmCRCmCRCmCRCFCS
表4 プリエンプションでの変更領域一覧
State0State1State2State3
SMD-Sx0xE60x4C0x7F0xB3
SMD-Cx0x610x520x9E0x2A
Fragment Count0xE60x4C0x7F0xB3
表5 各ステートの値一覧

エラー処理

開始フラグメントの SMD-Sx 、継続フラグメントと最終フラグメントの SMD-Cx とフラグメントカウンタは CRC 演算の対象外だ。ビット反転等のエラーに極めて弱い。これらはいずれも4つのステートを持ち、仮に 00/01/10/11 のようなビット列で表現すると、ビット反転で簡単に他のステートと重なり区別できなくなる。この問題を解決するために、IEEE は「ハミング距離」を持ち込んだ。

ハミング距離(Hamming distance)は、同じ数の文字列を別の文字列に変える際に必要な置き換え回数のことだ。逆な言い方をすれば、同じ数の文字列の対応する位置にある異なる文字の数だ。例えば、Include と Exclude いずれも7文字で、一致しない文字数は2文字で、ハミング距離は2になる。

ハミング距離は、通信での固定長バイナリー文字列(2進数)のエラーの起きやすさの程度を示すのに用いられ、「信号距離」とも呼ばれる。文字数 n の1ビット文字列間のハミング距離は、文字列間の排他的論理和で求めることができる。例えば、2進数ビット列「1110 0110」と「0100 1100」のハミングの距離は4になる。

ハミング距離はアメリカの数学者リチャード・ハミング(Richard Wesley Hamming)にちなんで命名された。

図4 は、SMD-Sx とフラグメントカウンタの State0/1/2/3 を基準にしたハミング距離の確認表だ。青色が基準ステートと異なる箇所で、4カ所または8カ所が異なる。ハミング距離は4(一部は8)で、3ビットまでの反転であれば、他のステートと重なることはなく、ビット反転エラーに対し強度が上がっている。

図4 SMD-Sx-フラグメントカウンタのハミング距離
図4 SMD-Sx-フラグメントカウンタのハミング距離

図5 は、SMD-Cx の State0/1/2/3 基準のハミング距離確認表だ。図4 同様、青色が基準ステートと異なる箇所で、4カ所または8カ所が異なる。ハミング距離は4または8で、3ビットまでの反転であれば、他のステートと重なることはなく、ビット反転エラーに対し強度が上がっている。

図5 SMD-Cxのハミング距離
図5 SMD-Cxのハミング距離

フラグメント処理は、フラグメントの欠落やエラーを考えるとかなり複雑だ。例えば、最終フラグメントが欠落し、開始フラグメントといくつかの継続フラグメントが残っている状態で、次の開始フラグメントを受信したところで、古いフラグメントデータをすべて廃棄しなければならない。また、継続フラグメントが欠落し、最終フラグメントを受信すると、開始フラグメントから最終フラグメント迄をすべて廃棄しなければならない。

新たなフレームを受信するたびに、フラグメントフレーム組み立て、フラグメントフレーム廃棄、再フラグメントを繰り返す必要があり、高速処理が必要だ。
フラグメント処理は、処理の複雑さに見合った効率が得られるようには見えない。ガードバンド・ケース1(送信フレーム長不明)の例(図6)では、その他時間帯の約16%が使えずロスになる。逆の見方をすれば、このような簡単な仕組みでも約 84% の効率を実現できる。もちろん、重要な「CDN専用時間帯」を妨害することはない。

図6 ガードバンドケース1(送信フレーム長不明)
図6 ガードバンドケース1(送信フレーム長不明)

一般的な第2層スイッチはフレーム長が分かっている。図7 ガードバンド・ケース2(フレーム長既知)の場合だ。この場合はさらに効率が改善する。イーサネット上を流れるフレームの平均長は諸説あるが、256バイトから512バイト程度だと言われている。仮に、512バイト付近であれば平均的に512バイト程度のロスが発生する。ロス率は高々6%程度だ。

図7 ガードバンドケース2(送信フレーム長既知)
図7 ガードバンドケース2(送信フレーム長既知)

複雑なフラグメント解説にお付き合いいただいた方々には申し訳ないが、フラグメント機能が普及し活用されるかは疑問だ。

Ethernet TSN

この記事を書いた人

岩崎 有平

早稲田大学 理工学部 電子通信学科にて通信工学を専攻。
安立電気(現 アンリツ)に入社後、コンピュータ周辺機器の開発を経てネットワーク機器の開発やプロモーションに従事する。
おもにEthernetを利用したリアルタイム監視映像配信サービスの実現や、重要データの優先配信、映像ストリームの安定配信に向けた機器の開発行い、Video On Demandや金融機関のネットワークシステム安定化に注力した。
現在は、Ethernetにおけるリアルタイム機能の強化・開発と普及に向けて、Ethernet TSNの普及活動を行っている。