【図解】EFM OAM(IEEE802.3ah)の概要とフレームフォーマット

EFM OAM (IEEE802.3ah)はLACPと同じくSlow Protocolに分類されます。そのため、L2マルチキャストアドレスとプロトコルタイプはLCAPと同じく、「0180:c200:0002」と「Ox8809」です。

EFM OAM のフレームフォーマットは下記の通りです。

Flag

Flagは16bitの領域がありますが、うち11bitは予約(未割当)です。

  • 1bit目=Link Fault: 相手からのOAMを受信していないことを、相手に伝えます
  • 2bit目=Dying Gasp: 自身に深刻な障害があったことを相手に伝えます
  • 3bit目=Critical Event: 想定外の重大なイベントがあったことを相手に伝えます
  • 4bit目=Local Stable: 自身がDiscoveryプロセスを終えたことを相手に伝えます
  • 5bit目=Remote Stable: 相手がDiscoveryプロセスを終えたことを認知したことを相手に伝えます

Code

EFM OAM のフレームタイプには以下の6種類があり、それぞれコードにより識別されます。これらのコードの総称をOAMPDUと言います

  1. Information (Code Ox00)
  2. Event Notification (Code Ox01)
  3. Variable Request (Code Ox02)
  4. Variable Response (Code Ox03)
  5. Loopback Control (Code Ox04)
  6. Organization Specific (Code OxFE)

各フレームタイプの使われ方の概要は以下の通りです。

1. Information (Code=Ox00)

フレームフォーマットは下記の通りです。

Information Typeには以下の種類があります。

Information Type内容
Ox00TLVの終わり
Ox01Local Information
Ox02Remote Information
Ox03-OxFD予約(未割当)
OxFEOrganization Specific Information
組織で自由に割り当ててよい情報
OxFF予約(未割当)

必要なInformationを好きなだけ乗せ、最後にOx00で終わります。

このInformationは「Discoveryプロセス」で使われます。まずはLocal Informationで相手に自身の情報を伝え、相手からの情報を受信したらRemote Informationに情報を乗せ、Remote Stable Flagを1にして相手に認知したことを知らせます。相手から同様にRemote Stable Flag=1の情報を受信したらLocal Stable Flagを1にします。

Discoveryプロセスにも関連しますが、EFM OAMには2つのモードがあります。

1つはActiveモードで、これは相手がEFM OAMをサポートしているか否かに関係なく、リンクアップと同時にこのInformationを投げます。その後は全てのコードのフレームを自ら投げることができます。ただし、Passiveモードの相手からのVariable RequestやLoopback Controlに対しては応答してはいけません。

もう1つはPassiveモードで、これは相手からInformationを受信した場合にのみ返信します。また、自身に異常を検知した場合はEvent Notificationを投げることができます。Variable RequestやLoopback Controlを受信した場合の返信をしてもよいですが、こちらからVariable RequestやLoopback Controlを投げることはできません。

どちらのモードかはLocal Informationの"OAM configuration"の中にあるMode Flagで判別することができます。

2. Event Notification (Code=Ox01)

フレームフォーマットは下記の通りです。

Event Typeには以下の種類があります。

Event Type内容
Ox00TLVの終わり
Ox01Errored Symbol Period Event
Ox02Errored Frame Event
Ox03Errored Frame Period Event
Ox04Errored Frame Seconds Summary Event
Ox05-OxFD予約(未割当)
OxFEOrganization Specific Information
組織で自由に割り当ててよい情報
OxFF予約(未割当)

必要なEventを好きなだけ乗せ、最後にOx00で終わります。

Erroed Symbol Period Event

シンボルエラー(Windowシンボルあたり)を通知します。

Type = Ox01
Length = Ox28 (40 Byte)
Value = 以下の通り

FieldByte内容
TimeStamp2イベント発生時間(100ms単位)
Window8時間枠(Window * 1シンボル数の必要処理時間)
Threshold8エラー閾値 (0~)
Errors8Window内で発生したシンボルエラー数
Total Errors8OAMが起動してからの累積シンボルエラー数
Total Events4OAMが起動してからのErrored Symbol Period Event
の累積イベント数

なお、シンボルエラーとは、4B/5Bや8B/10B等の符号化時の未定義記号を受信したときを言います。詳細はこちらをご参照下さい。また、シンボル数とは4B/5B符号化であれば5bitのことです。なので例えばWindow=100の場合は500bit処理するのに必要な時間枠を意味します。

Errored Frame Event

コーディングエラー(シンボルエラー)以外のエラー(単位時間あたり)を通知します。

Type = Ox02
Length = Ox1A(26 Byte)
Value = 以下の通り

FieldByte内容
TimeStamp2イベント発生時間(100ms単位)
Window2時間枠 (1秒~60秒)
Threshold4エラー閾値 (0~)
Errors4Window内で発生したエラー数
Total Errors8OAMが起動してからの累積エラー数
Total Events4OAMが起動してからのErrored Frame Event
の累積イベント数

Errored Frame Period Event

コーディングエラー(シンボルエラー)以外のエラー(Windowフレームあたり)を通知します。

Type = Ox03
Length = Ox1C(28 Byte)
Value = 以下の通り

FieldByte内容
TimeStamp2イベント発生時間(100ms単位)
Window4時間枠(Window * 64Byteフレームの必要処理時間)
Threshold4エラー閾値 (0~)
Errors4Window内で発生したエラー数
Total Errors8OAMが起動してからの累積エラー数
Total Events4OAMが起動してからのErrored Frame Period Event
の累積イベント数

Errored Frame Seconds Summary

コーディングエラー(シンボルエラー)以外のエラー(Windowフレームあたり)を通知します。

Type = Ox04
Length = Ox16(22 Byte)
Value = 以下の通り

FieldByte内容
TimeStamp2イベント発生時間(100ms単位)
Window2時間枠(10~900秒)
Threshold2エラー閾値 (0~)
Errors2Window内で発生したエラー数
Total Errors8OAMが起動してからの累積エラー数
Total Events4OAMが起動してからのErrored Frame Seconds
Summaryの累積イベント数

Organization Specific Event

ベンダ等が自由に定義できる領域です。

Type = OxFE
Length = 自由に定義可能
Value = 以下の通り

FieldByte内容
OUI3Organizationally Unique Identifier
Varies*自由に定義可能

3. Variable Request (Code=Ox02) / 4. Variable Response (Code=Ox03)

フレームフォーマットは下記の通りです。

このフレームは要求・応答形式で、自由に定義可能です。TLV形式でなくても構いません。応用例としてはL2pingも可能ですが、もっと汎用的なL2pingのツールとしてCFMが存在します。

5. Loopback Control (Code=Ox04)

フレームフォーマットは下記の通りです。

Loopback Commandは以下の通りです。

Command内容
Ox00予約(未割当)
Ox01Enable Remote Loopback
Ox02Disable Remote Loopback
Ox03-FF予約(未割当)

Loopback ControlはActiveモードのスイッチのみが送信でき、ランダムのbitがそのまま相手から返ってくることで、リンクに問題がないことを確認します。

なお、IEEE802.3ahでは何かしらのOAMPDUを一定時間(デフォルト5秒以内)受信しないと、相手が通信できない状態になったと判断します。keepaliveとしてどのタイプのOAMPDUを使うかは、実装に委ねられています。

IEEE802.3ahを利用したUDLD検知の実装として、例えばLoopbackに関する応答が無いにも関わらず、相手から通常のEthernetフレームが送信されてきたら片方向リンク障害と判断することができます。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする