Ethernet OAM

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

EFM OAM のフレームフォーマット

EFM OAM (IEEE802.3ah)は LACP と同じくSlow Protocol<に分類されます。

そのため、L2 マルチキャストアドレスとプロトコルタイプは LACP と同じく、「0180:c200:0002」と「Ox8809」です。

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

Flag

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

  • 1 bit 目 = Link Fault: 相手からの OAM を受信していないことを、相手に伝えます
  • 2 bit 目 = Dying Gasp: 自身に深刻な障害があったことを相手に伝えます
  • 3 bit 目 = Critical Event: 想定外の重大なイベントがあったことを相手に伝えます
  • 4 bit 目 = Local Stable: 自身が Discovery プロセスを終えたことを相手に伝えます
  • 5 bit 目 = 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 符号化であれば 5 bit のことです。なので例えば Window = 100 の場合は 500 bit 処理するのに必要な時間枠を意味します。

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 フレームが送信されてきたら片方向リンク障害と判断することができます。

コメント

タイトルとURLをコピーしました