正論なんて諭んないで

cordx56のブログです

謎の中華ボードにOpenWrtを突っ込んで10Gbpsルータを組んだ話

こんにちは。 最近人々にノベルゲーの沼に突き落とされました。

それはそうとして、皆さん10Gbpsしたいですよね? 私はしたいです。

しかしながら10Gbpsを出せる機械はそう多くありません。 それが様々なことができる高性能なルータで、SFP+でともなれば尚更です。

そんなことを思っていたある日、私の欲求を満たす謎の中華ボードを発見しました。 それがこのOK1046A-C2です。

www.forlinx.net

10GbpsのSFP+を2ポート、1GbpsのEthernetを5ポート積んでおり、その他にもWiFiモジュールを接続できるポート、5Gモジュールを接続できるポート、USB3.0と十分なインターフェースを備えています。

UbuntuとLEDE(OpenWrt)が動くとのことで、ソフトウェア面もばっちりです。

今回の記事は、そんな高性能中華ボード、OK1046A-C2との格闘1とその性能についてお話ししようと思います。

購入までの道のり

購入はアリババが公式の窓口のようです。

www.alibaba.com

アリババに登録して、Contact Supplierボタンを押すと、問い合わせができます。 必要量とこちらの要求項目などを軽く記入して、問い合わせましょう。 私の場合は問い合わせるとすぐに返信が来ました。 要求項目などについて英語でやり取りをして、製品がこちらの要求を満たしているかなどを確認してくれたのち、名刺を送ってもらい、メールアドレスを求められたので返答して、あとはメールでやり取りをしました。

私は1枚の購入だったので、見積もりを出してもらったら$500ということになりました。 まぁスペックを考えるとそんなもんだろうと、ここ最近NASの購入と10Gbps環境の整備で完全に緩み切っていたお財布のひもがさらに緩んで、購入に至りました。 支払いはPayPalで済ませることができ、問い合わせから購入までかなりスピーディーに進みました。 輸送はFedExで、すぐに届きました。

ドキュメント

製品の発送連絡と一緒に、Dropboxの共有リンクでドキュメントを共有してもらいました。 ドキュメントは充実とまでは言いませんが、必要最低限の情報は載っているという印象を受けました。 とりあえずドキュメントが片手にあれば、OSのインストールまでは何の苦労もなくできるといった感じです。

OpenWrtのインストール

ドキュメントにはちょっと古めのLEDEのスナップショット版のイメージが同梱されており、必要なファイルと共にUSBメモリに入れてOK1046A-C2のUSBポートに挿して起動するだけで、インストールが完了します。 これをそのまま使ってもいいのですが、ちょっと古めのLEDEのスナップショットということで、libcが入らなかったり、カーネルが古くてインストールできないパッケージがあったりと、微妙に使いづらいです。

そのため、このLEDEを最新のOpenWrtへとアップグレードしようとしたのですが、ここでちょっとハマりました。

OpenWrtのビルド

まずはOpenWrtをLS1046A向けにビルドします。 まずはopenwrt/openwrtをクローンしてきて、ディレクトリに入ります。 ここから config.buildinfo をダウンロードしてきて、 .config として保存します。 そして、 $ make menuconfig でターゲットのデバイス、出力したいイメージなどを選択します。 それが終わったら、 $ make でビルドします。

ビルド環境の構築には、このDockerfileを利用させていただきました。

ext4イメージが出力できない

ext4のイメージが直接ビルドできればいいのですが、私の手元ではうまくいきませんでした。 ここを見ると、おそらくイメージ容量が大きすぎてビルドが落ちてしまっているのだと思いますが、ログを調べても怪しいところはなく、何故うまくビルドされないのかはいまだに不明です。

しかしながら、tar.gzファイルはビルドできました。

ext4イメージがどういう構成になっているのかがわかれば手元でtar.gzファイルの中身をext4イメージに移植してあげたのですが、ext4イメージがどういう構成になっているのかもわかりませんでした2

ここで、ある考えが頭をよぎります。

tar.gzファイルをルートに展開してやればよいのでは?

LEDEからOpenWrt 19.07.8へのアップグレード

ということで、scpコマンドでOK1046A-C2へビルドしたtar.gzファイルを転送します。

それができたら、tar.gzファイルをルートに展開します。

# tar -zxvf openwrt-19.07.8-layerscape-armv8_64b-device-ls1046ardb-rootfs.tar.gz -C /

ここまで出来たら再起動します。

再起動が終わると、古かったLEDEのスナップショットがOpenWrt 19.07.8にアップグレードされています。

こうして無事OpenWrt 19.07.8が使えるようになりました。

今のところこれで問題なく使えています。

性能について

CPUのアーキテクチャはCortex-A72で1.8GHzクアッドコア、RAMは2GBと、ルータとして使うには十分な性能でしょう。

問題は速度です。 10GbpsのSFP+ポートがついてはいますが、実際のところどれくらい速度が出るのかは気になるところだと思います。

iperf3を使ってSFP+で接続している端末とOK1046A-C2間の速度を測ってみることにしました。

OpenWrtへのiperf3のインストールはopkgで簡単にできます。

# opkg update
# opkg install iperf3

iperf3の実行結果は次のようになりました。

[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-1.00   sec   634 MBytes  5.31 Gbits/sec
[  4]   1.00-2.00   sec   572 MBytes  4.80 Gbits/sec
[  4]   2.00-3.00   sec   640 MBytes  5.36 Gbits/sec
[  4]   3.00-4.00   sec   653 MBytes  5.48 Gbits/sec
[  4]   4.00-5.00   sec   644 MBytes  5.40 Gbits/sec
[  4]   5.00-6.00   sec   658 MBytes  5.52 Gbits/sec
[  4]   6.00-7.00   sec   641 MBytes  5.38 Gbits/sec
[  4]   7.00-8.00   sec   639 MBytes  5.36 Gbits/sec
[  4]   8.00-9.00   sec   644 MBytes  5.41 Gbits/sec
[  4]   9.00-10.00  sec   611 MBytes  5.13 Gbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-10.00  sec  6.19 GBytes  5.32 Gbits/sec                  sender
[  4]   0.00-10.00  sec  6.19 GBytes  5.32 Gbits/sec                  receiver

5Gbps超えです。 少し速度が低いのはMTUが低いからとかそんなところだと思いますが、ルータとしては十分な速度でしょう。 謎の中華ボードですが、しっかり速度が出ています。 うれしいですね。

まとめ

今回は謎の高性能中華ボードOK1046A-C2を紹介しました。

ルータを組んだとは言っても、まだ本運用には至っていません。 これからOpenWrtへの理解を深めて、現在運用しているRTX1200を置き換えることを目標にしたいと思います。

この記事を読んでOK1046A-C2に興味がわいてきた方がいれば、ぜひ私と一緒に人柱になりませんか?


  1. 言うほど格闘してない

  2. 最初はただのext4イメージファイルなのかと思ったのですが、どうやら違うようでした。このext4イメージの作り方がわかる方がいらっしゃれば、教えていただければ幸いです。