2022/06/27 00:00
概要近年、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 で直接接続するプロトコルとし
2022/05/29 18:00
背景前回はお借りした機材を利用して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
2021/12/19 09:00
この記事は、CyberAgent 22 新卒 Advent Calendar 2021の19日目の記事です。さいごに概要本記事では、自宅でサーバーやネットワーク機器を運用する筆者が、普段の運用をどのように行っているかを紹介します。また、後半では運用していく中で発生したトラブル経験などを紹介します。サーバーとはサーバーと言われてどのようなものを想像するでしょうか。一般的に、自宅サーバーなどと言われると自宅に中古のデスクトップPCなどを用意してサーバーとして運用するような形を想像する方が多いと思います。しかし、コンピューターにはサーバー用に設計されたものが存在します。これらはデータセンターなどで運用され、サイズ等が規格化されておりラックサーバーなどと呼ばれています。また、これを搭載するための専用のラックが存在しており、ユニット数(U)でいくつかの種類があります。このラックを使用することで、上方向へ積み上げてサーバーを設置することが可能になります。ラックサーバー自体は当然、一般家庭に設置することを想定したデバイスではありませんから、静音性より冷却性能の方が重要です。そのため、基本的に静音性とは無縁です。(サーバーラックに搭載されたラックサーバーの例)自宅サーバーを運用するメリットでは、デスクトップPCなどを使用する場合を含め自宅でサーバーを運用するメリットは何でしょうか。まず一つ目は、学習機会を得られるということです。AWSやGCPといったパブリッククラウドを利用するのと違い、自宅でサーバーを運用するには、物理レイヤーからすべて自分で設計や構築を行う必要があります。パブリッククラウドが普及した近年では、手間が掛かる事から嫌厭されがちですが、学習することに重点を置けば、より多くの学習機会が得られるというメリットがあると言えます。その中では、ネットワークに関する知識のほか、ハードウェアに関する知識も必要となります。そして、こういったレイヤーの知識は経験も重要です。この経験は、実際に運用していく中で原因切り分けなどを実施することで身に付く部分が多い分野でもあります。もう一つは、シビアにコストを気にする必要が無くなるということです。パブリッククラウドでは、インスタンスの起動時間や通信量による課金でコストが掛かります。例えば、パッケージを再インストールしたい場合などに、追加でコスト
2021/06/02 03:00
概要本記事では、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でもそれなりのスループットが確保できると言えるため、選択肢として十分有力でしょう。参考になれば幸いです。
2021/05/23 21:00
概要フレッツ光を契約し、フレッツ・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
2021/05/15 12:00
概要本記事では、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
2021/05/14 01:00
概要本記事では、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
2020/12/30 13:00
2021/01/09 インスタンスにパスワードを設定する箇所の誤りを修正しました。kolla-ansibleとは公式ページOpenStack 環境のデプロイメントツールです。更に、完全にカスタマイズ可能であることも大きな特徴です。加えて、CentOS や Ubuntu などの多くの Linux ディストリビューションに対応しているのも大きな特徴と言えます。なお、デプロイには Ansible が利用されます。他にも devstack や microstack など数多くのデプロイメントツールが存在しますが、これらは開発環境向けで、カスタマイズが困難であったり、再起動したら壊れてしまうものなど、扱いにくいのが現状です。また、 kolla-ansible と同様に Ansible を利用して OpenStack 環境の構築を行う openstack-ansible なども存在しますが、こちらも筆者環境での検証では再起動したら壊れてしまうものでした。そこで、今回は kolla-ansible を利用してみることにしました。なお、 kolla-ansible ではすべてのコンポーネントを1つのサーバ上で動作させる all-in-one 構成と、複数のサーバをクラスタリングして利用する multinode 構成を選択することができます。今回は all-in-one 構成を構築してみます。multinode 構成については、次回以降取り扱う予定です。インストール準備kolla-ansible では CentOS や Ubuntu などを利用することができますが、本記事では Ubuntu 20.04 LTS を利用しています。事前に python3 などを用意しておく必要がありますので、必要なパッケージとともに導入します。$ sudo apt update$ sudo apt install python3-dev libffi-dev gcc libssl-dev$ sudo apt install python3-pipインストールされた pip3 が最新バージョンであるか確認します。$ sudo pip3 install -U pip続いて、 Ansible をインストールします。$ sudo apt install ansiblekolla 及び kol
2020/11/05 10:00
環境前提として、Proxmoxの基本的な構築が完了している必要があります。Proxmox環境の構築方法はこちらをご覧ください。また、Cloud-init Supportを参考にしています。Cloud-initテンプレートの準備本記事では、VMで使用するOSとしてUbuntuを使用します。https://cloud-images.ubuntu.com/でOpenstack向けのCloud-initに対応したイメージが配布されていますので、こちらを利用します。Proxmoxホストのシェルにログインして、上記イメージをダウンロードします。今回はUbuntu 20.04 LTSを使用しますので、こちらをダウンロードしました。# wget https://cloud-images.ubuntu.com/focal/current/focal-server-cloudimg-amd64.img続いて、テンプレートで使用するためのVMを作成します。# qm create 9000 --memory 2048 --net0 virtio,bridge=vmbr0先ほどダウンロードしたイメージをインポートします。以下の例では対象ディスクをlocal-lvmとしていますが、適時変更してください。(local-zfsなど)# qm importdisk 9000 focal-server-cloudimg-amd64.img local-lvmインポートしたディスクをscsi0としてVMにアタッチします。先ほどと同様に、local-lvmやvm-9000-disk-0は環境によって異なる場合がありますので、適時変更してください。# qm set 9000 --scsihw virtio-scsi-pci --scsi0 local-lvm:vm-9000-disk-0続いて、Cloud-initが利用するCDROMドライブを設定します。# qm set 9000 --ide2 local-lvm:cloudinit先ほどアタッチしたディスクをブートディスクとして設定します。# qm set 9000 --boot c --bootdisk scsi0Cloud-initはシリアルコンソールを使用するため、その設定をします。# qm set 9000 --serial0 socket --
2020/09/25 16:09
4Kゲーミング2020年9月17日に、NVIDIAのAmpereアーキテクチャを採用したGPU、RTX 3080が発売解禁されました。筆者は、深夜販売に突撃して運よく入手出来たので、4Kゲーミング性能について軽くベンチマークを通して見ていきます。RTX 3090 ?RTX3080に続いて、RTX 3090が2020年9月24日に発売解禁となりました。こちらも深夜販売での抽選に参加したところ運よく入手できましたので、こちらも見ていきます。なお、「コスパ」とか言ってはいけません。筆者が泣いてしまいます。ベンチマーク環境ベンチマークには、おなじみ3DMarkを使用します。また、DLSSについてもどのような効果があるのか気になったので、こちらも試してみます。手持ちのゲームでDLSSに対応したゲームが「DEATH STRANDING」ぐらいしか無かったので、参考程度にご覧ください。ベンチマークPCとしては以下のものを使用しています。詳細CPUAMD Ryzen9 3950X 16-Core ProcessorM/BASUS Pro WS X570-ACEMemoryDDR4 Non-ECC UDIMM 16GB x4(64GB) 3200MHzPSU80PLUS GOLD 750WStorageWestern Digital SN550 500GB (M.2 NVMe)GprahicsMSI GTX 1080 AERONVIDIA RTX 2060 FEMSI RTX 3080 GAMING X TRIOZOTAC RTX 3090 TrinityRTX 2000シリーズとの比較ベンチを多く見ますが、GTX世代との比較があまりなされていないように思ったのと、筆者がGTX 1080からの更新のため、GTX 1080との性能差に注目したいところです。また、手持ちにあるGPUの中にRTX 2000シリーズがRTX 2060しか無かったので、参考程度です。RTX 3080 and RTX 3090RTX 3080 FERTX 3090 FECUDAコア8704基10496基RTコア68基82基Tensorコア272基328基ベースクロック1.44GHz1.4GHzブーストクロック1.71GHz1.7GHzVRAM10GB GDDR6X24GB GDDR6X外観ZOTAC R