NEC WG2600HPにOpenWrt+NSS Driverを入れる

2021年8月15日の情報

NSS Driver

NSS DriverはQualcomm ipq806xチップセットを採用したルーターで通信機能をハードウェア処理するためのドライバー。CPU負荷を抑えられることと通信速度向上が期待される。QSDKのNSS DriverをOpenWrtのアップデートに追随させているもの。もともとQualcommがOpenWrt15.05ベースにカスタマイズしたものがQSDKであり、NEC WG2600HPの純正ファームウェアはQSDKベース。

ただ、OpenWrtのmasterに統合されていない。 NSS Driver開発中のリポジトリからソースをいただいてファームウェアを生成する必要がある。 さらにNEC WG2600HPの設定ファイルではNSS Driverが有効化されておらず、自力で有効化した上でファームウェアを生成するしかない。

OpenWrtファームウェアを生成するための環境を整える。

Linux環境を用意する。コンパイルに必要なパッケージを事前にインストールしておく。 参考: Build system setup

OpenWrt NSS Driver組み込み ACwifidudeさん版

ACwifidudeさんのdiffconfigはadblock+OpenVPN+wireguard+各種ファイルシステム+その他いろいろ入っている。12Mバイトくらいのファームウェアが生成されて不安になるが、sysupgrade可能。 インターネットへ出ていける環境で実施すること。インターネットへ出ていけないとエラーになる。

mkdir -p ~/src/openwrt
cd ~/src/openwrt
git clone -b openwrt-21.02-nss-qsdk10.0 https://github.com/ACwifidude/openwrt.git
cd openwrt/
./scripts/feeds update -a
./scripts/feeds install -a
pushd target/linux/ipq806x/files/arch/arm/boot/dts/
(qcom-ipq8064-wg2600hp.dtsを手パッチする。&gmac1 { ... }; &gmac2 { ... };のあたり。これの追加行 → https://github.com/ACwifidude/openwrt/commit/14bec446850f5590a743bd9c0f5ac8d2fed08aaa#diff-2f47fcdc31a7255857d5913363bae7a696af961e0cc4b742b10c9693e5a3c55c )
popd
cp diffconfig .config
make menuconfig

  Target Profile ---> NEC Aterm WG2600HP

make -j6
ここにファームウェアができてるハズ → bin/targets/ipq806x/generic/

OpenWrt NSS Driver組み込み ミニマム版

最小限のNSS Driverを有効にする。インターネットへ出ていける環境で実施すること。インターネットへ出ていけないとエラーになる。

mkdir -p ~/src/openwrt
cd ~/src/openwrt
git clone -b openwrt-21.02-nss-qsdk10.0 https://github.com/ACwifidude/openwrt.git
cd openwrt/
./scripts/feeds update -a
./scripts/feeds install -a
pushd target/linux/ipq806x/files/arch/arm/boot/dts/
(qcom-ipq8064-wg2600hp.dtsを手パッチする。&gmac1 { ... }; &gmac2 { ... };のあたり。これの追加行 → https://github.com/ACwifidude/openwrt/commit/14bec446850f5590a743bd9c0f5ac8d2fed08aaa#diff-2f47fcdc31a7255857d5913363bae7a696af961e0cc4b742b10c9693e5a3c55c )
popd
make menuconfig

  Target System ---> Atheros IPQ806X
  Target Profile ---> NEC Aterm WG2600HP
  Kernel modules -> Network Devices
  * kmod-nss-ifb
  * kmod-qca-nss-drv
  * kmod-qca-nss-drv-pppoe
  * kmod-qca-nss-gmac
  Kernel modules -> Network Support
  * kmod-qca-nss-ecm-standard

make -j6
ここにファームウェアができてるハズ → bin/targets/ipq806x/generic/

気づいた点

  • PPPoEとルーティングは確実にオフロードされており、speedtest.netを実施してもCPU負荷が上がることはない。うちでは通信速度450Mbps→500Mbpsと微増だが、プロバイダー次第なのかもしれない。
  • StrongSwan+xl2tpdでVPNを動かそうとするとストールし、その後再起動がかかる。
  • libreswan+xl2tpdでのVPNは動いた。kmod-qca-nss-drv-l2tpv2,kmod-qca-nss-drv-ipsecmgrを組み込んでも動く。ipsecmgrは効いてる。xl2tpdのカーネルモードを有効にしてVPN接続すると再起動がかかった。xl2tpdはユーザーモードで動かすしかない。
  • make menuconfigで闇雲に機能を組み込んだら再起動ループにはまった。こうなるとtftpブートで入れ直すしかない。
  • わりとしっかりOpenWrt21.02の更新に追随している。

参考