MikroTik製機器とAnnapurna Labs製SoC
MikroTikは欧州はラトヴィアにあるネットワーク機器メーカーで、DIY性の高く高性能なネットワーク機器が特徴的である。そんなMikroTikが幾つかの新製品を発表したのだが、なかなか興味深いので御紹介したい。
今回発表された製品で共通するのはAnnapurna Labs製SoCを搭載している点だろう。
Annapurna Labsはイスラエルに拠点を置くAWSに買収されたArm SoCベンダーで、AWSによる買収以前はNAS等のネットワーク機器用の組込SoCとして幅広く採用されていた。Netgear ReadyNAS・Asustor・QNAPなどのNASのローエンド~ミッドレンジでは過去にAnnapurna Labs製Alpine SoC搭載機器がいくつか存在していた。
しかし、AWSによるAnnapurna Labs買収以降はAWS向けSoCに注力しているせいなのか、製品の投入ペースは落ちているように見え、AWS以外で同社製SoCの採用が減っているように見えるのだが、MikroTikは数少ない現存のAnnapurna Labs製SoCユーザーである。
CCR2004-1G-2XS-PCIe
MikroTik CCR2004-1G-2XS-PCIe is a 2x SFP28 25GbE Router on a PCIe Card - ServeTheHome
CCR2004-1G-2XSは、一見するとSmartNICなのだが、実態はSmartNICではなく25GbE搭載のPC内蔵型のルーターである。
昨今では仮想マシン(Linux KVM・Microsoft Hyper-Vなど)やコンテナー(Docker・Kubernetesなど)の利用により1台の物理ホストで複数のNIC/vNICを使うケースが増えている。この場合、一般消費者であればソフトウェア実装のL2ブリッジ(例:Linux Bridgeなど)やL3スイッチ(例:Open vSwitchなど)などでトラフィックを制御する方法が一般的であるが、ソフトウェア実装では負荷の高さや通信速度・通信遅延も気になるところである。そこでデータセンターではIntel X/Eシリーズ・NVIDIA/Mellanox ConnectXシリーズのNICを用いることで物理2ポートのNICに多数のVIFを搭載してNIC内部のvSwitch/vRouterでスイッチすることが一般的となっており、AWS・Azure・Google Cloudなどもそうしている(AWSは自社=Annapurna Labs製Elastic Network AdapterやElastic Fabric Adapterを採用している)。
MikroTik CCR2004-1G-2XSは少し違う。そもそも搭載されているのがNIC用のASICではなくAnnapurna Labs製のネットワーク機器用SoC AL32400であるが、これは本来NASなどに搭載されているSoCで、例えばバッファローは法人向けNASでI/Oがやや異なる以外は同等のAL314を採用している(恐らくAL324の誤り。2桁目は世代番号でArm64対応Alpine v2 platform)。
MikroTikはAL32400にMarvell製スイッチチップと同社製RouterOSを組み合わせてラックマウントタイプやデスクトップタイプのルーター/スイッチを幾つか製品化しており、CCR2004-1G-2XSもAL32400にRouterOSという組み合わせになっている。つまり言ってみればラックマウント型のCCR2004ルーターをPCIeに搭載するというのが本製品のコンセプトのように見える。ちなみに、MikroTik CCRの型番はCloud Core Routerという同社製ルーター製品ファミリーに付与される型番である。
結果としてCCR2004-1G-2XSと競合製品とでは外観はともかく内部的にはかなり違うものになっている。
競合製品の例としてConnectX搭載NICの場合、外部インターフェースは25GbE SFP28 x 2ポートながら上述のようにSR-IOVによりOS内部から見るとvNIC(VIF)1024基分で、NIC内蔵のvSwitch/vRouterでL2/L3スイッチングをオフロードできる。
これに対しCCR2004-1G-2XSは外観こそ似通っているものの、OSから見たvNICは4基(25 GbE x 2 + 1GbE x 2)のみで、AL32400上のRouterOSで(L3)ルーティングする。1GbE x 2のみL2スイッチング可能なようである。
恐らく全体のパフォーマンスだけで言えばConnectX搭載NICの方が高そうに思えるが、2ポート限定であればCCR2004はかなり高速だろうし、AL32400とRouterOS=Linuxを組み合わせているため将来的な拡張も理屈上は可能そうである(そういう計画があるかどうかは不明)。
個人的に気になるのはRoCEやRDMAサポート(=NVMe-oFサポート)の有無である。AL324/AL32400はNAS用SoCでもあるしハードウェア的には対応していそうなのだが製品ページには特に記載は無い。
もし仮にCCR2004-1G-2XSがNVMe-oFをサポートする(=SmartNICである)としたら、その立ち位置は面白いと思う。何せConnextXなどの普通のNICはNVMe-oF自体は対応するもののSoCではないためIOPをオフロードできないが、CCR2004-1G-2XSはArm Cortex-A57 4-core + 4 GB RAM + 25GbE x 2なので(NVMe-oFをサポートしていれば)IOPをオフロード可能なはずだからである。既存のSmartNICはMarvell LiquidIO・Broadcom Stingray・NVIDIA/Mellanox BlueFieldなどがあるが、これらの製品は概ねArm Cortex-A72 8-core + 16 GB RAM + 100GbE x 2といったスペックで$1000超なので、CCR2004-1G-2XSはおよそ1/4の性能を$200で実現できる可能性がある(NVMe-oFをサポートしていれば)。
よく解らないのはプロダクトブリーフなどに記載されている「This NIC can reach wire-speed (100Gbps) with Jumbo frames. 」である。恐らく25GbE x 2ポート x 全二重接続で合計100 Gbpsということで、この文句の趣旨は「(25GbEは単に通信規格の理論上の性能ではなく)本当に理論通りの性能がでますよ」「2ポート x 全二重接続の高負荷時でも処理性能は落ちることはなく合計100 Gbpsでますよ」という意味だと思うが紛らわしい。
MikroTik CCR2216-1G-12XS-2XQ
MikroTik CCR2216-1G-12XS-2XQ Readied as a 25GbE and 100GbE Router - ServeTheHome
CCR2216-1G-12XS-2XQは25GbEスイッチである。データセンター向けでは200GbEスイッチや100~400GbEスイッチが出回っているので特別に速いというよりは、(主に価格や流通網的に)消費者に手の届く初めての全ポート25GbEスイッチとなる。これまでも10GbEスイッチのアップストリーム用の2ポートに25GbEを搭載した製品は幾つかあったが、全ポート25GbEでアップストリーム用の2ポートが100GbEという能本格的な25GbEスイッチは初めてではないかと思う(もっとも$2795≒約30万円なので導入する人は多くないだろうが…)。
ここまでだと、ただの25GbEスイッチであるが、興味深いのが搭載されているSoCでAnnapurna Labs AL73400が搭載されている。これはAWS Gravitonのことである。AWS Graviton/AL73400自体はAWS S3やAWS Route 66などに採用されてきたはずで、25GbEスイッチへの搭載は驚くことでは無いがAWS/Annapurna Labsが外販したほぼ初めてのケースではないかと思う。
L2スイッチにはMarvell Prestera 98DX8525が搭載されているのでL2スイッチは98DX8525・L3ルーティングはAL73400で処理するものと思われる。
ブロックダイアグラムが公開されていないためスペックシートからの推定になるが、98DX8525は100GbE x 6 or 25GbE x 24 or 10 GbE x 48 + 管理用 10GbE x 1という構成になっているため、CCR2216-1G-12XS-2XQでは100GbE x 2 + 25GbE x 12 + 管理用 1 GbE x 1を外部インターフェースとしており、残りは100GbE x 1ポート(または25GbE x 4ポート)である。AL73400は詳細が未公開であるが100GbEか25GbEは搭載していると思われるため、恐らく98DX8525 - AL73400間は25GbEまたは100GbEで接続されるものと思われる。
※AWS A1インスタンスのスペックを見る限りでは25GbE x 1のように見えるのだが…Apline v2 platformのAL32400が25GbE x 2なのに、Alpine v3 platformのAL73400が25GbE x 1というのはちょっと信じられない。