Direct Connect(DX)入門&ネットワークの基礎

# 概要
仕事でDirect Connect(DX)を使って自社のオンプレサーバーとAWSを接続しています。しかし、いったいどういった仕組みになっているのか概念程度にしかわかっておりません。又、割と少なくない頻度で緊急メンテのお知らせメールがくるので、これはちゃんと仕組みを知っとかないとまずいぞと思い学び始めました。今回はDXの仕組みについて、さらにはDXを理解する上で前提になるネットワークの基礎について調べたことを書いていきます。

## AWS Direct Connectとは
AWS Direct Connectロケーションにユーザーの内部ネットワークを接続するためのサービスです。(通信媒体としてイーサーネット光ファイバーケーブルを利用)。専用線を使うため、VPN接続よりも高速(Port Speedは10Gpbs又は1Gbps)に通信できます。また、他のISPなどを挟まないためセキュリティ要件が高いデータを扱う場合にも適しています。

![AWS Direct Connect (2).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274080/57511e52-7e7b-3682-474d-3c7d7f90f6e9.png)


https://docs.aws.amazon.com/ja_jp/directconnect/latest/UserGuide/Welcome.html


上の図のようにAWSは相互接続用のデータセンターを用意し、そのデータセンターに対して自社で要したデータセンターを接続することでAWSで接続できるような仕組みなっています。この相互接続データセンターとしてAWSはEquinix社などのデータセンターを利用して設置しています。

https://docs.aws.amazon.com/ja_jp/directconnect/latest/UserGuide/Colocation.html#cross-connect-ap-northeast-1

## 利用の流れ

### 1.DXローケーションのデータセンターに接続
AWS Direct Connectのローケーションで接続を作成し、自身のデータセンターから接続を確立します。
またはAPN(AWS Partner Network)というAWSが認定した事業者が提供するサービスを利用することでも接続を確立することができます。

![DX APN (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274080/227b11e7-ae49-7402-d7d1-05c3b91c7479.png)

https://aws.amazon.com/jp/directconnect/partners/

### 2.仮想インターフェース
AWSのサービスへのアクセスを有効にするために仮想インターフェースを作成する必要があります。パブリック仮想インターフェースにより、S3などパブリックサービスへのアクセスが有効になります(パブリックIPを利用)。プライベート仮想インターフェースは、VPCへのアクセスを有効にします(private IPを利用)。

仮想インターフェース作成の前提条件があるので詳細はこちらをご覧ください。
https://docs.aws.amazon.com/ja_jp/directconnect/latest/UserGuide/WorkingWithVirtualInterfaces.html

さらにネットワークの要件も決められています。詳細はこちらをご覧ください。
https://docs.aws.amazon.com/ja_jp/directconnect/latest/UserGuide/Welcome.html

## 実際の作業手順
![dx-use-process.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274080/3eea5b45-661a-2d8d-6b26-4fe9904d53f6.png)

## AWSからのメンテメールがあった時
`AWS Direct Connect Emergency Maintenance Notification`という内容でAWSからDXの緊急メンテがあるよという連絡がたまにきますが、上の図のようにDXの接続は基本２つの線で冗長化されていてメンテはその内一つに影響があるもので全体的には通常通り動作可能ということでした。なのでこちらについては内容を確認するだけで特別の対応は必要ありません。

# まとめ
普段はアプリケーション開発者の代わりにインフラエンジニアの方達がデータセンターを管理してくれているのでこういった仕組みについて理解しなくてもサービスを利用できるようになっていますが、AWSからの緊急メンテのお知らせだったり、また社内のサーバー移設の話や相乗りサーバーの分離の話がどういったことをやろうとしているのか見当をつけることができるようになりました。今後もAWSを触るだけでなくそれを実現している仮想環境の技術だったり今回のネットワークの内容をきちんと学んでいきたいと思います。
又、最後に今回Direct Connectの内容を理解するにあたって自分の知識が不足していて調べた内容について備忘録的にまとめておきます。

## 調べたこと備忘録

### L1/レイヤー１(OSI参照モデル)
通信媒体でのデータの送受信についての手順を定めています。**通信媒体**,**インターフェース**、**データ**の3つから構成されます。

#### 通信媒体
有線と無線の二つの形式があります。有線の場合は電気信号を使う銅線、光信号を使う光ファイバーがあります。
![osi-layer-one.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274080/431415f2-be5f-499c-e12b-92e229af123b.png)

- 銅線
ex)UTPケーブル
![FS-TPCC5-PATCH.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274080/5d25113b-ac45-00af-3a38-352e09b147ad.png)
http://www.takabun.co.jp/products/fuji_fs-tpcc5-patch/

- 光ファイバー
ex)光ファイバーケーブル

![HKB-LCLC1-01L_MX (2).jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274080/88e5129a-ddc6-9dfb-9fdf-74530e244471.jpeg)
https://direct.sanwa.co.jp/ItemPage/HKB-LCLC1-30L

#### インターフェース
通信媒体に信号を流し、受け取る機械。使用するケーブルや信号に応じてインターフェースを使い分けます。

### Ethernet
有線LANの標準規格（有線LAN自体を指すように使われている場合が多いですが本来は規格のことです）。
OSI参照モデルのレイヤー１の物理層とレイヤー２のデータリンク層に関して規定しています。

**Ethernetで規定しているもの**
通信媒体、データ送受信単位(Ethernetではデータをフレームと単位で送受信する)、接続形態、MACアドレス

http://e-words.jp/w/Ethernet.html

### ハブ
ネットワーク機器の一つで、複数のコンピュータ間の通信を実現します。
役割

1. マルチアクセスネットワークを作る
2. データ転送中の減衰によって崩れた信号を元の形に増幅、整形すること

![hub.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274080/31236379-4048-daae-77d5-d43d6313ec09.png)

ハブに繋がっている複数の機器が同時に送信することで衝突する可能性があります(衝突ドメイン)。

### スイッチ
ハブと同様にマルチアクセスネットワークを作ることができるネットワーク機器です。ハブに同時にデータが届くと衝突が発生していますが、**学習フィルタリング**という機能を使うことで一度データを受け取ったportと宛先をセットで覚えておき、次に送信する時にその表を参照することでport別に送信できるようにすることで**データの衝突を防ぎ**ます。又、**同じポートに対してデータが送られてきた場合には後から送られてきたデータをバッファリングすることで送信を送らせ、衝突を防ぎます**。
![001.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274080/9b93c183-1e27-f705-6481-51290669a8f0.jpeg)

https://news.mynavi.jp/kikaku/switch-1/

### 全二重通信(Full-Duplex)
上のようにハブの代わりにスイッチを使うことで衝突が起こらなくなるため、データの送信と受信が同時にできるようになります。この通信のことを全二重通信と言います。

### ARP
Address Resolution ProtocolでIPアドレスからMACアドレスを引くために利用される通信プロトコルです。
ドメインからIPアドレスを引くDNSと似てますね。


### ルーター
ハブやスイッチと同様にネットワーク機器の一つで、ネットワーク間同士の通信を行う機能を持ちます。ネットワーク同士を繋ぐことで広大な範囲での通信を実現することができます。ルータは所属するネットワークごとにインターフェースをもち、それぞれにネットワークのIPアドレスを持ちます。

後述するルーティングテーブルを元に、宛先IPとルーティングテーブルを比較して次の宛先を特定します。

![router.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274080/4b9edc04-4615-4b7e-7ac5-7a297133b585.png)


### デフォルトゲートウエイ
**コンピューターはマルチキャストドメインでARPを行いデータ送信先のMACアドレスを取得**します。しかし、**宛先が別のネットワークにある場合、ルーターを超えた（マルチキャストドメイン外）ARPは届かないので宛先が特定できません。**
そこでネットワーク間通信の最初の入り口にデータを送り、そこを起点としてネットワーク間でデータを通信してもらい目的地まで運んでもらいます。**この宛先がデフォルトゲートウェイ**です。
![default-gateway (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274080/1894b249-85f2-841f-7def-42bd9ee92225.png)


### ルーティングテーブル
ルータはルーティングテーブルを使って受け取ったパケットの宛先IPアドレスを確認して、Longet Matchのルールで次の宛先ネットワークを決めます。

![routing table (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274080/e54ddac3-2958-8e5a-6266-8068511f40d2.png)

| 宛先ネットワーク | 次のルータ | メトリック | インターフェース |
|:-----------:|:------------:|:------------:|:------------:|
| 192.168.1.0 |210.81.36.1| 3  | 1 |
| 91.0.0.0     | 210.81.36.1 | 6  | 1 |
| 172.36.0.0 | 130.82.10.1 | 2   | 2 |
| 221.194.38.0 | なし | 0 | 3 |


Amazon Linux2でのルーティングテーブルの確認

```terminal
$ route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         ip-132-12-24-1. 0.0.0.0         UG    0      0        0 eth0
instance-data.a 0.0.0.0         255.255.255.255 UH    0      0        0 eth0
132.12.24.0     0.0.0.0         255.255.240.0   U     0      0        0 eth0
```

# 参考資料
- [AWS Direct Connectとは](https://docs.aws.amazon.com/ja_jp/directconnect/latest/UserGuide/Welcome.html)
- [AWS初心者入門
第9回～「AWS Direct Connect」はどうやって使うの？](https://www.bit-drive.ne.jp/managed-cloud/column/column_19.html)
- [エクイニクス、都内にある4つのDCを結ぶ「大江戸コネクト」開始](https://ascii.jp/elem/000/000/863/863123/)
- [データセンターとは？クラウドとの違いや具体的な役割をわかりやすく解説します](https://www.kagoya.jp/howto/rentalserver/data-center/)
- [3分間 Net Working](http://www5e.biglobe.ne.jp/aji/3min/)
- [ダークファイバー](https://wa3.i-3-i.info/word12163.html)