ISPのBiDi SFPはCiscoスイッチではリンクするが、pfSense機のX710ポートではno carrierになる
自宅環境です。プロバイダからの光ファイバーの受け渡しが1G BiDiモジュールで、メディア変換のためだけにファイアウォールの手前にスイッチを置くのではなく、ファイアウォール自体に挿したいと思っています。
- Protectli Vault 6でpfSense稼働、X710ポート、ixlドライバ
- プロバイダ支給の1G BiDiモジュール、EZConn ETB43315-7S34-FR
- 同じモジュールはCiscoスイッチでは何の問題もなくリンクする
- 同じケージのCisco 10G LR FTLX1474D3BCL-CSもリンクする
ixl1にBiDiを挿すとポートはno carrierから一切抜け出さず、ログは理由をはっきり語っています:
ixl1: no carrier
i40e link status timeout, I40E_ERR_TIMEOUT
Link failed because an unqualified module was detected
同じ一連のメッセージの中に、PHY capabilities取得のエラーもあります。
ここまで試したこと:
ifconfig ixl1 media 1000baseLX: 拒否され、そのメディアタイプを受け付けないsysctl dev.ixl.1.advertise_speed: 設定してみたが何の効果もなしhw.ixl.unsupported_sfp=1をloader.confに設定して再起動: 何も変わらず、unqualified moduleの行は出続ける
つまりカードはモジュールを認識した上で気に入らないと判断し、そこで話が終わっています。これらのポートで1Gの光モジュールを動かす方法はそもそもあるのでしょうか、それとも正直な答えはファイアウォールの手前にスイッチを置き続けることでしょうか。
Comments 6
問題は別々に積み重なった二つで、順番に片付ける必要があります。
まずファームウェア。6.1は古すぎてカードがモジュールをまともに提示できておらず、それが電力値が空欄になっている理由です。9.40へ上げると実際のRXとTXの電力が表示されるようになります。何よりも先にこれをやってください。でないと目隠しでデバッグすることになり、その後のテストは全部無駄になります。
次に、実際にポートを落とし続けている本体はこちらです。X710ではモジュールの適格性判定はドライバではなくNICファームウェアの中にあるので、あなたが試したつまみのどれもそこには届きません。だから
hw.ixl.unsupported_sfp=1はここでは何もせず、sysctl dev.ixl.1.advertise_speedは静かに無視され、ifconfig ixl1 media 1000baseLXは拒否されるのです。ポートは、Link failed because an unqualified module was detectedで既に拒否したモジュールに対して1Gメディアを選ぼうとしません。私の場合に効いたのは、光モジュールをIntelのベンダーデータに書き換えることでした。FS SFP-GE-BXモジュールを使い、FS Boxでそこへ Intelのベンダーデータを書き込んだところ、その後はメディアの強制もsysctlも一切なしでautoselectのまま上がってきました。これはカードではなくモジュールを変えているだけだという点に注意してください。プロバイダのEZConnは自分のものではないので書き換える対象にはできません。正しい波長の自前のBXペアを買って、そちらを書き換えてください。
EEPROMに触りたくなければ、カードが既に受け入れる光モジュールを使う手もあります。お使いのCisco 10G LRはその一例ですし、経路のどこかで銅線を提供してもらえるなら、FSのRJ45 1G SFP+も選択肢です。
何よりもまず: そのX710に載っているNICファームウェアは何ですか。このカードは、そもそもモジュールの見え方を変えてしまうほど古いビルドで出荷されていることがあり、あなたがいじってきたどのsysctlよりもそこが効いてきます。
続けてもう一つ: ixl1にBiDiを挿した状態で、ポートステータスにRXとTXの電力が表示されますか、それともモジュールは値なしのpresentとして載っているだけですか。この二つの答えが揃えば、カードが読める上で拒否しているのか、それとも読める段階まで到達せずに失敗しているのかがわかります。
ファームウェアは6.1です。箱が出荷された時のままで、自分では一度も触っていません。
そして、いいえ、値はまったく出ていません。ixl1にプロバイダのBiDiを挿した状態だと、モジュールはpresentとして載るものの、RXとTXの電力は空欄です。同じケージのCisco 10G LRは電力を報告するので、それがまさにあなたが指摘していた違いだと思います。
この作業のためにプログラマーを注文する前に知っておく価値があること: FS BoxはFSのモジュールしかプログラムできません。別ベンダーのものを食わせた人はアカウントを1週間ロックされているので、汎用のリコーダーではなく、一社の光モジュール専用のツールです。
任意のモジュールを扱える機材が必要なら、Flexoptixや他のプログラマーが同じ仕事をしますが値段はかなり高く、Ubiquitiのwizardは価格帯の安い側にあります。BXモジュール1ペアだけなら、たいてい一番楽なのは、すでに持っている機器と同じベンダーから光モジュールを買うことです。
似た症状でも原因は全く別、ということがあるので地味な確認を飛ばさないでください。
pfSense配下のSupermicro AOC-STGN-i2Sで、ix1に1GのUbiquiti UF-MM-1Gを挿していて、常にno carrierでした。
ifconfig -v ix1にはメディアとしてautoselectと10Gbase-SRしか並ばず、ifconfig ix1 media 1000baseTXはdevice-not-configuredエラーで返ってきました。これはまさに、10Gポートでの1G動作をドライバが拒否しているのと同じ見え方です。カードをUbuntuのライブイメージに移してみても、DACでもモジュールでもリンクせず。そこで2枚目の、全く同一のUnifiモジュールを挿したところ、UbuntuでもpfSenseでも即座にリンクしました。最初の1枚が単に死んでいただけです。モジュールの予備と2台目のホストを用意するのに20分もかからず、それで理論の半分は消せます。あなたのケースではunqualified moduleのメッセージがかなりはっきり犯人を名指ししているので、おそらく問題ないはずですが、プログラマーにお金を使う前の安い保険にはなります。
結果です。起きた順に書きます。
まずファームウェア、6.1から9.40へ。モジュールはすぐにRXとTXの電力を報告し始めましたが、プロバイダのBiDiは相変わらずリンクを拒否し、ログにはunqualified moduleの行がまだ出ていました。つまりファームウェア更新が買えるのは可視性だけで、それ以上ではありません。
次に、Intelのベンダーデータに書き換えたFS SFP-GE-BXのペア。両端ともautoselectで上がり、メディアの強制なし、
hw.ixl.unsupported_sfpもなし、loader.confには何も残っていません。あがいている間に設定したsysctlをロールバックしても、リンクはそのまま保たれました。プロバイダのモジュールは予備として引き出しへ。どのみち自分のものとして書き換えていい代物ではないので。そしてファイアウォールの手前にあったスイッチはもうありません。