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

状態 | State0 | State1 | State2 | State3 |
---|---|---|---|---|
開始フラグメント | SMD-S0 | SMD-S1 | SMD-S2 | SMD-S3 |
値 | 0xE6 | 0x4C | 0x7F | 0xB3 |
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 との対応表だ。
状態 | State0 | State1 | State2 | State3 |
---|---|---|---|---|
開始フラグメント | SMD-S0 | SMD-S1 | SMD-S2 | SMD-S3 |
継続フラグメント 最終フラグメント | SMD-C0 | SMD-C1 | SMD-C2 | SMD-C3 |
Cx 値 | 0x61 | 0x52 | 0x9E | 0x2A |
Fragment Count
フラグメントカウンタも、SMD-Sx/SMD-Cx と同様に4つの状態がある。フラグメントカウンタは、開始フラグメントに続く最初のフラグメントに State0 、次のフラグメントに State1 と順次インクリメントし、State3 の次は State0 の戻る。4つの State を巡回する(図2 参照)。各ステートの値は、00/01/10/11 ではなく、表3 のように 0XE6/0x4C/0x7F/0xB3 を使用する。

State0 | State1 | State2 | State3 | |
---|---|---|---|---|
値 | 0xE6 | 0x4C | 0x7F | 0xB3 |
フラグメントまとめ
図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 になる。

プリエンプションでの変更領域の一覧は 表4 、各ステートの値一覧は 表5 を参照いただきたい。
現実のネットワークを考えてみよう。時分割多重で設定する「その他」時間帯は、少なくとも最大長フレームより長くするはずだ。現実のネットワークでは、イーサネットフレームは2個に分割されることはあるが、3個以上に分割されることはない。通信規格としては、あらゆる状況でも破綻しないことが重要だが、かなり過剰な規格だ。
標準 イーサネット | Verify | Response | 開始 フラグメント | 継続 フラグメント | 最終 フラグメント | |
---|---|---|---|---|---|---|
ギャップ | 12バイト | 12バイト | 12バイト | 12バイト | 12バイト | 12バイト |
プリアンブル | 7バイト 0x55 | 7バイト 0x55 | 7バイト 0x55 | 7バイト 0x55 | 6バイト 0x55 | 6バイト 0x55 |
SFD/SMD | 1バイト 0xD5 | SMD-V 0x07 | SMD-R 0x19 | SMD-Sx | SMD-Cx | SMD-Cx |
CRC | FCS | mCRC | mCRC | mCRC | mCRC | FCS |
State0 | State1 | State2 | State3 | |
---|---|---|---|---|
SMD-Sx | 0xE6 | 0x4C | 0x7F | 0xB3 |
SMD-Cx | 0x61 | 0x52 | 0x9E | 0x2A |
Fragment Count | 0xE6 | 0x4C | 0x7F | 0xB3 |
エラー処理
開始フラグメントの 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ビットまでの反転であれば、他のステートと重なることはなく、ビット反転エラーに対し強度が上がっている。

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

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

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

複雑なフラグメント解説にお付き合いいただいた方々には申し訳ないが、フラグメント機能が普及し活用されるかは疑問だ。
Ethernet TSN
-
3.Ethernet TSN
Ethernet TSN(1)イーサネットの歴史〜 LAN と基幹網の主役になるイーサネット・フィールドネットワークの変遷
LAN と基幹網の主役になるイーサネット イーサネットは、登場以来競争の歴史だ(図1)。1980年2月 IEEE802 規格が正式に決まり、イーサネットは始まった。IEEE802 の名称はこの会議の開催日に由来する。登場 […] -
3.Ethernet TSN
Ethernet TSN(2)Ethernet TSN の狙い
Ethernet TSN の狙いは明確だ。インターネットや各種クラウドサービスから、IoT の様々なデバイスまでをシームレスにカバーすることだ(図1 参照)。 しかし、Ethernet TSN が新たな産業用イーサネット […] -
3.Ethernet TSN
Ethernet TSN(3)キーポイント:時分割多重の概要
Ethernet TSN のキーポイントは、サイクル時間や遅延時間に敏感な制御データ、伝送帯域に敏感な映像や音声などのストリーミングデータと再送を許容できる Best Effort データの混在を実現することだ。もちろん […] -
3.Ethernet TSN
Ethernet TSN(4)時分割多重における時刻精度
【1】1マイクロ秒以下の時刻精度 時分割多重を実現するためには、スイッチなどの伝送装置や、システム構成によっては送受信ノードの時刻同期が必要だ。同じ時刻に全てのスイッチやノードが、一斉に時間帯を切り替えることで時分割多重 […] -
3.Ethernet TSN
Ethernet TSN(5)時分割多重における時刻基準と配信経路
【2】BMCA/【3】クロックドメイン 通信機器やノードの時刻同期をとる前に、必要なことが2つある。時刻同期の基準時間となる「グランドマスタ(GM)」の選択と、時刻同期の配信経路を確定しクロックドメイン(時刻同期の範囲) […] -
3.Ethernet TSN
Ethernet TSN(6)時分割多重における時刻同期メカニズム
【4】第2層 PTP メッセージ/【5】Peer-to-Peer メカニズム/【6】2ステップクロック BMCA で時刻基準となる 「GM」 が決定し、時刻同期をとる領域である「クロックドメイン」と時刻情報の「配信経路」 […] -
3.Ethernet TSN
Ethernet TSN(7)GPS 四方山話!?
カーナビでおなじみの位置情報を提供する衛星を「GPS」とか「GPS衛星」と一般的には呼んでいる。しかし、GPS は米国が打ち上げた衛星のことだ。米国はいち早く、軍用や航空機・船舶等の航法支援用として衛星を打ち上げ、サービ […] -
3.Ethernet TSN
Ethernet TSN(8)時分割多重におけるプリエンプションの概要
工場や物流現場の様々な機械やロボットを期待通りに動かすためには「ハード・リアルタイム」が欠かせない。Ethernet TSN は、ハード・リアルタイムを実現する基本的な仕組みとして、時刻同期による時分割多重を導入した。一 […] -
3.Ethernet TSN
Ethernet TSN(9)プリエンプション機能追加と従来機器との互換性
イーサネットフレームの変更は久しぶりだ。1988年に IEEE802.1Q-1988 に VLAN が追加されて以来だ。VLAN 追加での一番の懸念事項は、フレーム長が4バイト長くなり長さ制限でフレームが廃棄される恐れが […] -
3.Ethernet TSN
Ethernet TSN(10)プリエンプション機能追加と各フラグメント
プリエンプションは、分割した最初のフレームを「開始フラグメント」、その後に幾つかの「継続フラグメント」が続き、最後に「最終フラグメント」になる構造だ。開始/複数の継続/最終フラグメントを順序を含め識別するコードを埋め込み […] -
3.Ethernet TSN
Ethernet TSN(11)プリエンプション機能追加
開始フラグメント、継続フラグメントと最終フラグメントの構造はお話しした。開始フラグメントの SMD-Sx 、SMD-Cx とFragment Count の8ビットの不思議な数値について説明する。 SMD-Sx 図1 の […] -
3.Ethernet TSN
Ethernet TSN の QoS(1)IntServ(イントサーブ)
Ethernet TSN の QoS 体系での位置づけは図1 のようになっていて、優先制御と帯域制御を組み合わせることで、リアルタイム性を実現している。優先制御は SPQ(Strict Priority Queueing […] -
3.Ethernet TSN
Ethernet TSN の QoS(2)Ethernet AVB 登場
従来のアナログ AV 機器は、ほぼ全ての機器を 1対1 でケーブル接続することが常識だ。しかも、ケーブルやコネクタ規格はインタフェースごとに異なるため、オーディオ機器の背面には多くのコネクタがあり、様々なケーブルが這いま […] -
3.Ethernet TSN
Ethernet TSN の QoS(3)IEEE 802.1Qat:SRP / 配信手順
SRP(Stream Reservation Protocol:ストリーム予約プロトコル)は、ストリームの配信経路を確定し、経路上のスイッチやエンドステーション(映像表示装置など)の帯域確保と最悪時の遅延時間の確認を行う […] -
3.Ethernet TSN
Ethernet TSN の QoS(4)IEEE 802.1Qat:SRP / MSRP 動作とストリーム配信の可否判断
ネットワーク構成を単純化したモデルで、改めて MSRP の動作と Talker と Listener が送信する各種パラメータを説明したい。 図1 はMSRP 説明モデルで、次の要素からできている。全ての要素には MSR […] -
3.Ethernet TSN
Ethernet TSN の QoS(5)IEEE 802.1Qat:SRP / MSRP 属性
Asking、Advertise、Ready メッセージを交換することで、Talker/Listener 間の帯域や遅延時間などの QoS リソース確保を行うことはすでに説明した。これら以外にも、Talker/Liste […] -
3.Ethernet TSN
Ethernet TSN の QoS(6)その他時間帯の QoS:SPQ(絶対優先)
Ethernet TSN は、ハードリアルタイムが必要な工作機械などの制御データとその他のデータの時間帯を分けている。制御データが収まる「CDT専用時間帯」は、従来のフィールドバス同様に厳密なタイミングやデータ量設計を行 […] -
3.Ethernet TSN
Ethernet TSN の QoS(7)その他時間帯の QoS:Credit Based Shaper(帯域制御)
CBS( Credit Based Shaper)の基本動作原理は、リーキーバケットモデルだ。図1 の様に、蛇口から注いだ水がバケツの穴から常に一定量漏れ出すモデルだ。さらに細かく分類すれば「 Leaky bucket […] -
3.Ethernet TSN
Ethernet TSN の QoS(8)全体動作検証
Ethernet TSN は、制御データを確実に伝送する「CDT 専用時間帯」と、プロトコル制御データ(gPTP、SRP 等)、映像ストリームやファイルなどの Best Effort データを伝送する「その他時間帯」に分 […]