外部記憶装置

脳みそ小さすぎるからメモしとく

R86S レビュー(pfSense 編 その2 Firewall, NAT)

R86S レビューシリーズ

前回までのあらすじと今回の内容

R86S に pfSense をインストールし、初期設定まで完了した。 10G インタフェースである Mellanox ConnectX-3 についても、正常に認識されることを確認した。

今回は、pfSense の Firewall と NAT について、その性能を計測する。

想定するネットワーク

これまでのネットワークと同じネットワークで計測する。 VLAN B(192.168.14.128/25) から VLAN A(192.168.14.0/25) への通信に対して、NATを行う。 Firewall については、VLAN B のインタフェース(OPT1)において、サブネット内からの通信についてのみ外向きを許可するようにした。

Firewall の設定

ConnectX-3 の VLAN B 向けインタフェースである、OPT1 について、サブネット内から外向きへの通信を許可する設定を追加した。 実際の設定は下図のとおりである。

追加し、"Apply Changes" で結果を反映すると、下図のようになる。 この時に、試験用VM(192.168.14.130/25) から OPT1(192.168.14.129/25) に対する ping が通るようになる。

NAT の設定

pfSense の NAT では、デフォルトでLAN インタフェースに関する設定が追加されている。 OPT1 についても、何かしらの方法で Internal Interface として扱えれば下記のルール設定を行わずとも良いかもしれないが、 Internal Interface に指定する方法が分からなかったため、手動でルールを追加する。

すでに生成されているルールに追加で、 OPT1 のサブネット (192.168.14.128/25) から WAN インタフェース(192.168.14.1/25) のアドレスへの変換を行うルールを追加する。 実際の設定内容は以下のようになる。

設定したルールを有効化するために、Mode で "Hybrid Outbound NAT generation" を指定し、保存する。 "Apply Changes" を実行すると以下のような状態になる。

iperf3 での計測

Ubuntu 22.10 での計測と同様に、以下の設定で iperf3 を用いて性能を計測した。

iperf3 -c 192.168.14.2 -i 0 -O 5 -M [MSS] -t 120 --json --bidir

結果は下図のとおりである。MSS が 1478 byte までの計測結果については、Ubuntu 22.10 での計測に比べてかなり遅い結果となった。 MSS が 1478 bytes の時、 Ubuntu では双方向合計で約 15 Gbps 出ていたのに対し、 pfSense では、約 5.5 Gbps 程度しか出ていない。 MSS をある程度大きくすると、Ubuntu とほぼ同様の速度が出ていることから、 pfSense の NAT におけるパケット処理性能が低い可能性が高い。

性能計測中の CPU の使用率は下図のとおりである。 Ubuntu での計測と同様に、およそ1コアで処理されているようである。 MSS が大きくなる計測後半にかけて、interrupt の割合が急上昇している点が気になるところではある。

まとめ

pfSense の Firewall, NAT 機能における性能を計測した。 機能自体は問題なくUbuntu での計測結果に比べて、スループットが大幅に低下している点は注意が必要である。