top

概要今回は、ElastiFlow 環境を構築してネットワークのフロー情報の収集と可視化を行う環境を構築してみます。OS は Ubuntu22.04 LTS です。ElastiFlowとはElastiFlow とは、ネットワークのフロー情報を解析するためのツールの1つです。OSS として提供されており、データの蓄積と解析を行う ElasticSearch 、データを可視化する WebUI を提供する Kibana を合わせて使用することでフロー情報の取得から解析・可視化を行うことができます。この ElasticSearch に対して収集したデータを入れるツールとして以前は logstash が用いられていたようですが、今は ElastiFlow に内包された ElastiFlow Unified Flow Collector によってデータの収集と ElasticSearch 用データ形式への正規化が行われています。準備最初に、構築にあたって動作に必要なスペックを確認しておく必要があります。フロー情報の分析などにそこそこの計算資源を消費しますので、公式サイトを参考にマシンスペックを決定します。また、必要になる基本的なツールをインストールしておきます。sudo apt install apt-transport-https unzipLinux KernelのチューニングElasticSearch はデフォルトで mmapfs ディレクトリを使用してデータを保存しますが、Linux のデフォルトの制限値が低すぎるためこの制限を 262114 に引き上げておく必要があります。echo "vm.max_map_count=262144" | sudo tee /etc/sysctl.d/70-elasticsearch.conf > /dev/nullまた、ネットワーク関係のパラメーターについても変更を行います。デフォルトでは大量の UDP パケットの受信に最適化されておらずパケットがドロップされる可能性があるため、チューニングを行っておく必要があります。echo -e "net.core.netdev_max_backlog=4096\nnet.core.rmem_default=262144\nnet.core.rmem_max=67

image not found

概要前回、NVMe over RDMA 環境を構築し、簡単な動作確認を行いました。今回は、前回の概要でも触れたとおりNVMe over TCP を試してみます。NVMe over TCP はその名の通り、NVMe プロトコルを TCP プロトコル上に流すことでリモートでの利用を可能にしたものです。NVMe over RDMA (RoCEv2) と異なり、一般的な TCP プロトコルを使用しているため専用のスイッチなどを必要としないメリットがあります。しかしながら、メモリ上のデータを直接扱う RDMA の恩恵を受けられないため、プロトコルスタックの処理によるCPU負荷の上昇やIOに対する遅延の増大、スループットの低下などのデメリットも存在します。今回はそんな NVME over TCP 環境を構築し、動作確認を行ってみます。環境今回の検証に使用した環境です。マシンは2台用意し、それぞれをターゲット(Server)側、Initiator(Client)側としています。ターゲット側詳細MachineHPE ProLiant DL380 Gen10CPUIntel Xeon Silver 4208 x2MemoryDDR4 ECC RDIMM 128GB (16GB x8 2400MHz)NICMellanox ConnectX-4 100Gb(Ethernet) MCX415A-CCATNVMeIntel DC P4600 1.6TB U.2 x2OSUbuntu Server 22.04 LTSInitiator側詳細MachineFujitsu Primergy RX2540 M4CPUIntel Xeon Gold 6148 x1MemoryDDR4 ECC RDIMM 128GB (32GB x4 2666MHz)NICMellanox ConnectX-4 100Gb(Ethernet) MCX415A-CCATOSUbuntu Server 22.04 LTS準備今回も、前回と同様に SPDK を用いて環境構築を行います。SPDK をビルドし nvmf_tgt が実行可能な状態までは前回と同様の手順です。ネットワーク設定この段階でネットワーク設定を行っておきます。手順については省略します。なお、今回は次のような構成にしています。なお、リンクスピードは100Gb

top

概要近年、NVMe over Fabric (=NVMeoF) という言葉をよく聞くようになりました。この Fabric 自体は NVMe のプロトコルをネットワーク上に流すことでリモートホスト上からターゲットホストの NVMe Disk に直接IO操作を行うものです。同じような目的を持ったプロトコルとしては iSCSI などがあげられます。しかし、SCSI 自体が近年目覚ましく進化したフラッシュストレージ (=SSD) の性能に追いつけていないのが現状です。この問題に対処するため、より効率的なプロトコルとして新たに NVMe プロトコルが策定されました。NVMe over Fabric は効率的な NVMe プロトコルを利用することにより iSCSI よりも高速にIOを裁くことができるメリットがあり、注目されています。NVMe over Fabric は通信に使用するプロトコルとして Infiniband や Ethernet 、さらには FibreChannel を選択することができます。加えて、RDMA(=Remote Direct Memory Access) などの技術を用いることでより高速・低遅延を実現しています。RDMA 自体は Infiniband の技術です。しかし、RDMA を Ethernet 上で利用するための技術として、RoCE (RDMA over Converged Ethernet) があります。この RoCE は v1 と v2 が存在し、RoCEv1 は Link Layer のプロトコルであるため異なるネットワークセグメント間において接続することができませんでした。しかし RoCEv2 では Internet Layer のプロトコルとなったため、ルーティングが可能となり、異なるネットワークセグメント間においても使用することができるようになりました。まとめると、低遅延でかつより高速にリモートホスト上の NVMe にアクセスするための技術として、NVMe over RDMA があり、これを Ethernet 上で利用するために RoCEv2を用いる必要があるということです。また、RoCE 自体は途中経路上のスイッチにも設定が必要です。このため、RDMA を用いずに TCP で直接接続するプロトコルとし

top

背景前回はお借りした機材を利用して100GbEをテストしました。今回は、手元に Mellanox ConnectX-4 があったので、こちらを再度簡単にテストしてみることにします。検証機材今回は、NICとケーブルを前回と異なるものでテストします。(ちなみに前回はお借りした機材でしたが今回はすべて私物です。)詳細MachineFujitsu Primergy CX2550 M2CPUIntel Xeon E5-2690v4 x2MemoryDDR4 ECC RDIMM 128GBNICMellanox ConnectX-4 100Gb(Ethernet) MCX415A-CCATCableIntel QSFP28 100G-CWDM4 module (SPTSBP2CLCKS)OSUbuntu Server 20.04.4 LTSMellanox ConnectX-4 MCX415A-CCATIntel QSFP28 100G-CWDM4 module準備初めに、ドライバをインストールします。手順は前回と同様です。Mellanoxのドライバは公式サイトからダウンロードできます。IPアドレスについて、前回と同様に 10.0.0.1/24 と 10.0.0.2/24 を使用し、以下のように直結することにします。10.0.0.1/24 ---------- 10.0.0.2/24設定はnetplanを用いて行いました。2つのNIC間は100G-CWDM4モジュールとシングルモードファイバー(duplex)を用いて接続しました。リンクアップを確認ethtool コマンドを用いて、100Gbpsでリンクアップしているか確認します。$ ethtool ens11np0Settings for ens11np0: Supported ports: [ FIBRE ] Supported link modes: 1000baseKX/Full 10000baseKR/Full 40000baseKR4/Full 40000baseCR4/Full

top

この記事は、CyberAgent 22 新卒 Advent Calendar 2021の19日目の記事です。さいごに概要本記事では、自宅でサーバーやネットワーク機器を運用する筆者が、普段の運用をどのように行っているかを紹介します。また、後半では運用していく中で発生したトラブル経験などを紹介します。サーバーとはサーバーと言われてどのようなものを想像するでしょうか。一般的に、自宅サーバーなどと言われると自宅に中古のデスクトップPCなどを用意してサーバーとして運用するような形を想像する方が多いと思います。しかし、コンピューターにはサーバー用に設計されたものが存在します。これらはデータセンターなどで運用され、サイズ等が規格化されておりラックサーバーなどと呼ばれています。また、これを搭載するための専用のラックが存在しており、ユニット数(U)でいくつかの種類があります。このラックを使用することで、上方向へ積み上げてサーバーを設置することが可能になります。ラックサーバー自体は当然、一般家庭に設置することを想定したデバイスではありませんから、静音性より冷却性能の方が重要です。そのため、基本的に静音性とは無縁です。(サーバーラックに搭載されたラックサーバーの例)自宅サーバーを運用するメリットでは、デスクトップPCなどを使用する場合を含め自宅でサーバーを運用するメリットは何でしょうか。まず一つ目は、学習機会を得られるということです。AWSやGCPといったパブリッククラウドを利用するのと違い、自宅でサーバーを運用するには、物理レイヤーからすべて自分で設計や構築を行う必要があります。パブリッククラウドが普及した近年では、手間が掛かる事から嫌厭されがちですが、学習することに重点を置けば、より多くの学習機会が得られるというメリットがあると言えます。その中では、ネットワークに関する知識のほか、ハードウェアに関する知識も必要となります。そして、こういったレイヤーの知識は経験も重要です。この経験は、実際に運用していく中で原因切り分けなどを実施することで身に付く部分が多い分野でもあります。もう一つは、シビアにコストを気にする必要が無くなるということです。パブリッククラウドでは、インスタンスの起動時間や通信量による課金でコストが掛かります。例えば、パッケージを再インストールしたい場合などに、追加でコスト

top

概要本記事では、Ubiquiti Networks社が提供するEdgeRouter製品でIPv6トンネル接続を行った場合のスループットについてまとめます。検証機器次のリストに示すデバイスでテストを行いました。検証環境検証に使用するトンネル接続には、IPIP6及びIP6GREを使用し、スループットの計測はiperf3を使用して計測を行いました。構成はローカルでP2Pで接続されたIPv6ネットワーク上に検証機器で示したデバイスを接続しています。また、対向のデバイスは一般的なラックマウントサーバにVyOSをインストールして使用し、計測上のボトルネックとならないことを確認しています。なお、都合上、検証機器上にiperf3サーバを立てる形で計測しています。そのため、多少の負荷がルータにかかる状態である点に注意してください。計測結果ModelIPIP6IP6GRE備考:CPUEdgeRouter-X136Mbps138MbpsMediaTek MT7621AT (880 MHz, 2 cores)EdgeRouter-Lite85Mbps84MbpsCavium CN5020 (500 MHz, 2 cores)EdgeRouter-8243Mbps246MbpsCavium CN6120 (880 MHz, 2 cores)EdgeRouter-4912Mbps914MbpsCavium CN7130 (1 GHz, 4 cores)まとめ計測結果より、搭載されているCPUの世代やクロックがスループットに大きく影響していることが読み取れます。加えて、EdgeRouter-4はファンレスで消費電力もEdgeRouter-8と比べると各段と少なく、とにかく性能が欲しい場合には選択肢の1つとなるでしょう。もちろん、国内でも容易に入手可能で安価なEdgeRouter-Xでもそれなりのスループットが確保できると言えるため、選択肢として十分有力でしょう。参考になれば幸いです。

top

概要フレッツ光を契約し、フレッツ・v6オプションを申し込むことで利用できるNGN網内での通信について、RTT(ラウンドトリップタイム)を計測したので、その結果をまとめます。計測環境なお、拠点「KYT-A」及び拠点「KYT-B」については、地理的状況から同じ局舎へ収容されているものと推定しています。加えて、諸事情により全拠点間を網羅的にテストはしていません。計測方法京都府内での計測結果まず、地理的に同じ局舎へ収容されていると推定される拠点「KYT-A」と拠点「KYT-B」間での計測結果が次のようになります。$ sudo ping6 240b:250:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX -c 10PING 240b:250:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX(240b:250:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX) 56 data bytes64 bytes from 240b:250:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX: icmp_seq=1 ttl=61 time=2.35 ms64 bytes from 240b:250:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX: icmp_seq=2 ttl=61 time=2.23 ms64 bytes from 240b:250:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX: icmp_seq=3 ttl=61 time=2.80 ms64 bytes from 240b:250:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX: icmp_seq=4 ttl=61 time=2.38 ms64 bytes from 240b:250:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX: icmp_seq=5 ttl=61 time=2.39 ms64 bytes from 240b:250:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX: icmp_seq=6 ttl=61 time=2.42 ms64 bytes from 240b:250:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX: icmp_seq=7 ttl=61 time=2.97 ms64

image not found

概要本記事では、Ubiquiti Networks社が提供しているEdgeRouterにおける、IPIP6トンネルやIP6GREトンネルの設定について、例を示します。なお、EdgeRouterで使用されるEdgeOSのバージョンは v2.0.9-hotfix.1 を使用したものです。IPIP6IPIP6はIPv4 over IPv6となります。IPIP6の設定例は次のようになります。set interfaces ipv6-tunnel v6tun0 address 10.0.0.0/31set interfaces ipv6-tunnel v6tun0 encapsulation ipip6set interfaces ipv6-tunnel v6tun0 local-ip 'fd00::1'set interfaces ipv6-tunnel v6tun0 remote-ip 'fd00::2'上記の設定項目については、次のようになります。address v6tun0が持つトンネル内の終端IPアドレスを指定します。encapsulation トンネル方式を指定します。この例ではipip6を使用します。local-ip トンネル接続に使用する自IPv6アドレスを指定します。remote-ip トンネル接続に使用する対抗側のIPv6アドレスを指定します。上記設定を施したのち、 show interfaces ipv6-tunnel を実行した結果を以下に示します。ipv6-tunnel v6tun0 { address 10.0.0.0/31 encapsulation ipip6 local-ip fd00::1 remote-ip fd00::2}IP6GREIP6GREの設定例は次のようになります。set interfaces ipv6-tunnel v6tun0 address 10.0.0.0/31set interfaces ipv6-tunnel v6tun0 encapsulation ip6greset interfaces ipv6-tunnel v6tun0 local-ip 'fd00::1'set interfaces ipv6-tunnel v6tu

image not found

概要本記事では、VyOSとEdgeRouterそれぞれにおいてBGPを設定する場合の設定項目の差異と、挙動の違いについてまとめます。隅々まで調査したわけではなく、利用する中で判明した点をまとめたものですので、完璧ではないことを予めご理解ください。VyOSVyOSとは、オープンソースで提供されるソフトウェアルータです。Debianをベースとして開発されており、ルーティングなどのネットワークの基本的な機能から、各種VPNプロトコルやトンネリングプロトコルなどを扱うことが出来ます。vyos.ioEdgeRouterEdgeRouterは、Ubiquiti Networks社が発売しているネットワーク機器のブランドです。低価格でありながら高機能であり、またライセンス料などが発生しないという特徴を持つ製品です。中身はVyOSベースとなっているようなので、基本的にVyOSのドキュメントを参考にすることが出来ます。本記事では、EdgeOS v2.0.9-hotfix.1 を例に取り上げていきます。BGP設定周りのコマンド体系VyOSでは1.2系列からBGP設定周りのコマンド体系が一部変更となっています。例えば、広報するネットワークを明記する場合、VyOS 1.2系以降では次のように記述します。set protocols bgp address-family ipv4-unicast network 192.168.1.0/24しかし、VyOS 1.1.8以前、またはEdgeRouterにおいては、address-family の下に ipv4-unicast という設定項目は存在しません。したがって、VyOS 1.1.8以前、またはEdgeRouterにおいては次のように記述する必要があります。set protocols bgp 65001 network 192.168.1.0/24network項目で設定したネットワークの広報動作の違い上記で例を示した network で指定した広報したいネットワークの広報動作についても、VyOSとEdgeRouterで挙動の違いがみられます。VyOSの場合、こちらのページに次のような記述があります。By default, the BGP prefix is advertised even if it’s not present in the

top

準備今回は、Ubuntu 20.04.1 を使用しました。Ubuntuに最初から入っているドライバは使用せず、Mellanox公式から取得したドライバを使用することにします。今回は、MLNX_OFED_LINUX-5.1-0.6.6.0-ubuntu20.04-x86_64.tgzを使用しました。取得したファイルを解凍します。$ tar zxvf MLNX_OFED_LINUX-5.1-0.6.6.0-ubuntu20.04-x86_64.tgz$ cd MLNX_OFED_LINUX-5.1-0.6.6.0-ubuntu20.04-x86_64/解凍されたディレクトリの中にある、mlnxofedinstallを実行します。$ lscommon_installers.pl DEBS LICENSE RPM-GPG-KEY-Mellanoxcommon.pl distro mlnx_add_kernel_support.sh srccreate_mlnx_ofed_installers.pl docs mlnxofedinstall uninstall.sh$ ./mlnxofedinstall実行後、新しいドライバを使用するにはopenibdの再起動が必要な旨のメッセージが表示されますので、指示に従います。Installation passed successfullyTo load the new driver, run:/etc/init.d/openibd restart$ sudo /etc/init.d/openibd restartIPアドレスについて、今回は10.0.0.1/24と10.0.0.2/24を使用し、以下のように直結することにします。10.0.0.1/24 ---------- 10.0.0.2/24OSインストール時にIPアドレスの設定はしていませんので、 Interface は Down な状態になっています。そこで Interface を Up にしますが、設定を保存しておく必要はないので今回はipコマンドを使用しました。$ sudo ip link set enp65s0 upIntef

About

インフラエンジニア
インフラ系の技術を中心に紹介・解説しています。

お問い合わせはTwitter DMまで

Privacy Policy

About Me

Recommends

Archives