25Gのリンクが上がらない!FECについて調べてみた
こんにちは、樋口です
先日の記事でMedia over IP検証はじめましたが、今回はその記念すべき第1回目の検証で早速つまづいた点についてご紹介します。
波形モニタとスイッチの接続
我々の第1回検証では、Media over IPにおけるポピュラーな構成であるSpine & Leaf アーキテクチャでネットワークを構築し、LeafスイッチとTelestream社のIP波形モニタPRISMを25Gbps対応のトランシーバーとマルチモード光ファイバーで接続しました
ここでさっそく問題が生じました。正しく接続しているのに、インターフェースがリンクアップしません。Leafスイッチでインターフェースのステータスを確認すると、notconnectのままでした。
一方で、トランシーバーは正しく25Gbps対応のものとして認識されています。
この問題はFECの設定がうまくできていないことが原因でした。FECって何?というメンバーも数名おりましたので、今回はこれを機にFECについて調べてみました。
FECとは?
FEC: Forward Error Correctionは前方誤り訂正と呼ばれる仕組みです。FECでは、送信側が元のデータに冗長なビット(パリティビットや誤り訂正符号)を付加して送信します。受信側はこれらの冗長ビットを用いて、受信データに誤りがないかをチェックし、必要に応じて誤りを訂正します。これにより、再送要求を行わずにデータの整合性を保つことができます。
一方で受信側では誤りの検出だけを行い、送信側に対して再送要求を行いデータの整合性を保つ仕組みもあります。これはARQ: Automatic Repeat reQuest、自動再送要求と呼ばれる仕組みです。
FECとARQの一般的な違いは以下のような点です。
FEC | ARQ | |
---|---|---|
誤り訂正の仕組み | 受信側で訂正 | 送信側に再送要求 |
遅延 | 小さい 受信側での処理時間に依存 |
大きい 再送にかかる時間に依存 |
スループット | 高エラー環境で有利 | 低エラー環境で有利 |
言わずもがなMBSの主要事業である地上デジタル放送においても誤り訂正の仕組みは用いられています。当然ですが、地上デジタル放送は片方向の通信ですので再送要求が必要なARQではなくFEC(日本のISDB-Tでは畳み込み符号とRS符号)の仕組みが使われています。
FECには大きく分けて畳み込み符号とブロック符号があります。
畳み込み符号で用いられる符号化方式では、連続的に入力されるビット列に対して、過去の入力の値も含めて符号化を行います。そのためランダムに発生する誤りに対して高い訂正能力があることが特徴です。
一方でブロック符号化方式では一定の長さのデータ列に、それらを用いて生成した冗長ビットを付与して符号化を行います。つまりこのブロック単位で誤りの訂正を行うことができるため連続した誤り(バースト誤り)に対して有効です。
大学の講義などでハミング符号やリード・ソロモン符号について学んだ方も多いかもしれませんが、様々な符号化の方法があります。なお今回の記事に出てくるRSはリード・ソロモン符号(Reed-Solomon)のことです。
スイッチにおけるFEC設定
さて、今回の検証で用いたCiscoのスイッチでは、各インターフェースにこのFECの設定を入れることが可能です。Ciscoのスイッチでは機器のモデルやインターフェイスの速度によって自動でfecの設定が有効になることもあり、このようにリンクアップしない場合などは、対向の機器の設定に応じてスイッチ側も明示的に設定する必要がありそうです。
今回接続しようとしていたPRISMのメディア用ポートの設定画面は以下のようになっていました。
検証中に私たちはこの「RS-FEC」の設定に合わせるべきだと思い、以下のようなコマンドで設定できるLeafスイッチ側の設定も
$ fec rs-fec
としていました。
しかしこれではリンクアップしませんでした。結論から言うとスイッチ側の設定は
$ fec rs-ieee
とする必要がありました。
PRISMのマニュアルによると
Select RS-FEC if Forward Error Correction (FEC) is needed. RS-FEC is specified by IEEE 802.3 Clause 91.
となっています。
参考: PRISM MPS-MPD
User Manual | Telestream
一方でCiscoの設定ガイドには以下のように書かれています。
Cisco NX-OS リリース 7.0(3)I7(3) 以降では、 rs-cons16 および rs-ieee など IEEE 標準に従って、FEC を設定するための 2 つの追加オプションが表示されます。
参考: Cisco Nexus 9000 シリーズ NX-OS インターフェイス設定ガイド、リリース 9.3(x) | Cisco
どうやらIEEE 802.3 Clause 91の規格に合わせるためにはrs-fecではなくrs-ieeeにする必要があったようです。一口にFECといっても先ほど述べたハミング符号やリード・ソロモン符号などの符号化の方式や、さらには同じ方式でも各規格による実装方法の違いなどで異なる挙動となっているようですね。設定画面やコマンドに現れる文字列に惑わされてはいけないことを痛感しました…
これにて無事にFECの設定を合わせることができ、SDI-IPゲートウェイの映像をPRISMで確認することができました。
第一回の検証は設備の動作確認がメインだったのでここまでとなりましたが、これからも様々な検証を行っていきます。乞うご期待ください!