はじめに
こんにちは!インターン生の鈴木飛鳥です。
2023年8月14日から4週間、ソフトバンク株式会社のインターンシップに参加させていただきました。配属先の部署では、ソフトバンクの関連会社であるBBIX株式会社とBBSakura Networks株式会社の業務を兼務していました。そのため、インターンシップ中にBBSakuraのプロダクトを使用したネットワーク設計開発を体験することができました。ネットワークに関する知識が乏しい中でのインターンシップとなりましたが、一から教えていただき、精一杯頑張りました。この記事ではその体験記について書かせていただきます。
インターンシップに関して
BBSakuraでは、OCXというBBIXのIXプラットフォーム上で提供するクラウド型ネットワークサービスを開発しています。このサービスでは、OCXマネージメントポータルの操作だけで独自の閉域網を構築し、ネットワーク開通作業を進めることができます。また、閉域網であるOCXのネットワークからインターネットへの接続を実現する「Internet Connection」というオプションサービスもあります。
一般に、企業が閉域網でクラウドサービスやデータセンターに、高セキュリティかつ低遅延で接続するためにOCXを使用します。今回のインターンシップでは、このOCXを用いて、オンプレミスからクラウドへの接続を一から作成してみました。また、構築のために、Webポータルでの設定だけでなく、実際にデータセンターへ行き、ルータの設置、配線なども行いました。
使用技術の概要
全体図
今回のインターンシップで作成したネットワークは、下の図のような企業のネットワークを想定して作成しました。以降でCPEルータ、OCX、Azureの概要を説明します。
CPEルータ
CPEルータとは、オンプレミス側のネットワークとOCXを接続する際のゲートウェイとなるルータのことです。今回のインターンシップでは、CPEルータのハードウェアとしてR86SというミニPCを使用しました。下の写真がR86Sです。OCXへの接続には、自身の機器が1000BASE-LXあるいは10GBASE-LRの接続に対応している必要があります。今回使用したR86SにはSFP+ポートがあり、1000BASE-LXと10GBASE-LRのどちらにも対応していることから採用しました。
このR86SをCPEルータとして使用するために、VyOSという仮想ルータのOSをR86Sにインストールし、仮想ルータを構築しました。VyOSを選択した理由は、インターネット上にドキュメントや解説が多かったからです。
OCX
CPEルータからAzureクラウドに接続を行うために使用しています。
今回使用したOCXのリソースは、Physical Port、Virtual Circuit Interface(VCI)、Virtual Circuit(VC)、Cloud Connectionの4つです。各リソースの説明を、公式ドキュメントより引用します。
<各リソースの説明>
- Physical Port : OCXネットワークへの接続ポイント
- Virtual Circuit Interface(VCI) : お客様機器とOCX機器の間で利用する仮想ネットワーク(VLAN)に相当する機能
- Virtual Circuit(VC):一つの大きなブロードキャストドメインとして振る舞い、VCIやCloud Connection、Router Connection、Internet Connectionなどのレイヤ2の論理回線を相互に接続可能
- Cloud Connection : 各クラウドサービスへ接続するための仮想的な接続インターフェース
(引用) “OCXドキュメントサイト”. Open Connectivity eXchange. https://docs.ocx-cloud.net/docs/intro (2023/09/05)
次に、各リソースがどのように動作するのかを説明します。
光ファイバーケーブルを用いて「Physical Port」にCPEルータを接続します。CPEルータから送信されるフレームは「Physical Port」を通り、フレームに付属するVLAN IDごとに「VCI」に振り分けられ、アタッチされている「VC」へと送られます。「VC」はブロードキャストドメインとして働くため、フレームは「VC」にアタッチされている他のリソースに転送されます。今回の場合、「Cloud Connection」がフレームを受け取り、クラウド側にフレームが転送されるという流れになります。
Microsoft Azure
Microsoft Azureとは、マイクロソフト社が提供するパブリッククラウドのプラットフォームです。以降、Microsoft AzureをAzureと称します。OCXでは、現時点でAWS、Azure、Google Cloud、さくらのクラウド、Oracle Cloudの5つのクラウドに対応しています。その中から今回はAzureを選択しました。Azure上にVirtual Machine(VM)を構築し、CPEルータとVM間で通信を行います。
インターンシップで取り組んだ内容
手順書の作成
はじめに、OCX接続の手順書と、CPEルータ構築のための手順書の作成を行いました。構築作業を行う前に、IPアドレスやOCX接続拠点、リソースの名前などあらかじめパラメータを設計し、それを基に手順書を作成しました。設定ミスを無くすために、何度も社員の方にレビューをいただき、漏れがないように注意しました。
構築作業
構築作業は大きく分けて、OCXポータルの設定・Azureポータルの設定・CPEルータの構築・データセンターでの配線の4つです。下の図は全体図にリソース等の詳細を書き込んだ図です。具体的な作業内容は以下の通りです。
OCXポータルの設定
* 主要な設定項目の詳細も記載しています。
- Physical Portの作成
- 拠点:接続するOCXの拠点(データセンター)
- VCIの作成
- VLAN ID:一つのPhysicalPort上でVCIを区別し、仮想のネットワークを作成するために使用
- Cloud Connectionの作成
- サービスキー:後述するExpressRoute作成後にAzureポータルにて取得
- VLAN ID:後述するAzureプライベートピアリングと同じVLAN IDに設定することで、OCXのネットワークとAzureのネットワークを紐付けるために使用
- VCの作成
- VCにVCIとCloud Connectionをアタッチ
詳細に関しては以下のOCXドキュメントを参照してください。
「OCXドキュメントサイト」 https://docs.ocx-cloud.net/docs/intro
Azureポータルの設定
- 仮想ネットワークの作成
- 仮想マシンの作成
- ExpressRouteの作成
- Azureプライベートピアリングの作成(前述したOCXポータルの設定の3番まで完了している必要があります) Azureプライベートピアリングを作成することで、CPEルータとAzureのネットワークとの接続ポイントとなるルータ(MSEE)間でBGPのピアを張れる状態になります
- 仮想ネットワークゲートウェイの作成
- 仮想ネットワークとExpressRouteの接続
ExpressRouteとは、Azureが提供する帯域保証型のネットワークサービスです。このExpressRouteを使用することで、オンプレミス環境とAzure間を閉域網で接続できます。 詳細に関しては以下のAzureドキュメントを参照してください。
「ExpressRouteのドキュメント」 https://learn.microsoft.com/ja-jp/azure/expressroute/
「Virtual Networkのドキュメント」 https://learn.microsoft.com/ja-jp/azure/virtual-network/
CPEルータの構築
- VyOSのインストール
- 使用するインターフェースのIPアドレスの設定
- ExpressRouteとのBGPの設定
- SSHログインのための設定
データセンターでの配線
CPEルータからOCXの機器(Physical Port)に光ファイバーケーブルを用いて配線を行いました。商用の機器であるため誤って他の配線を抜いたり、機器にぶつかったりしないよう細心の注意を払って取り組みました。内心とてもどきどきしていました。
接続確認
今回はオンプレミス側のネットワークを再現するために、CPEルータのループバックインタフェースに対してIPアドレスを設定しました。このIPアドレスからVMに対してpingコマンドを実行することで、オンプレミスからクラウドへの接続ができていることを確認しました。また、AzureのVM側でもpingのパケットの受信確認を行いました。pingコマンドの実行結果は以下のようになりました。
- パケット送信側(CPEルータ)からpingした結果
vyos@vyos:\~$ ping 192.168.100.4 source-address 192.168.200.1 PING 192.168.100.4 (192.168.100.4) from 192.168.200.1 : 56(84) bytes of data. 64 bytes from 192.168.100.4: icmp_seq=1 ttl=63 time=2.60 ms 64 bytes from 192.168.100.4: icmp_seq=2 ttl=63 time=2.74 ms 64 bytes from 192.168.100.4: icmp_seq=3 ttl=63 time=2.38 ms
- パケット受信側(Azure上のVM)の受信確認結果
asukasuzuki@Internship-VM:\~$ sudo tcpdump -n -i eth0 icmp tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes 08:49:34.837063 IP 192.168.200.1 > 192.168.100.4: ICMP echo request, id 44428, seq 1, length 64 08:49:34.837100 IP 192.168.100.4 > 192.168.200.1: ICMP echo reply, id 44428, seq 1, length 64 08:49:35.838706 IP 192.168.200.1 > 192.168.100.4: ICMP echo request, id 44428, seq 2, length 64 08:49:35.838751 IP 192.168.100.4 > 192.168.200.1: ICMP echo reply, id 44428, seq 2, length 64 08:49:36.840273 IP 192.168.200.1 > 192.168.100.4: ICMP echo request, id 44428, seq 3, length 64 08:49:36.840328 IP 192.168.100.4 > 192.168.200.1: ICMP echo reply, id 44428, seq 3, length 64
上記の結果より、pingが正常に実行できていることが確認できます。よって、オンプレミスからAzure上のVMまでの疎通が確認できました。
感想
ネットワークに関する知識が乏しく、オンプレミスとクラウドの違いさえも分からない状態の私でしたが、一から熱心に指導していただき、OCXを使用してオンプレミスとクラウド間を閉域で接続することができました。試行錯誤の結果pingが通った時には感動すらしました。この4週間で、ネットワークに関する知識や技術だけでなく、文章や図の書き方、データセンターでの作業の進め方や気をつけることなども学ばせていただきました。その他にも、社会人として働く上で改善した方がいいこと、心構えなど、本当に多くのことを学ばせていただきました。インターンシップ参加前と比べて確実に成長することができたと感じます。このインターンシップで得た知識や経験、感じた達成感や喜びは、私のこれからのキャリアにおいて大きな糧となると思います。
今後もこの経験を生かして、学生として勉学や研究に励み、さらに成長を続けて行きたいと思います。指導してくださった酒井さん、芦田さん、佐藤さん、山崎さん、4週間大変貴重な経験をさせていただき、本当にありがとうございました。