Power Systems Virtual Serverの東京・大阪間を接続する

# 2022年8月9日追記

PowerVS間をTransit Gateway経由で容易に接続可能になりました。費用としては、Transit Gatewayの従量課金とVRAの固定費を比べることになると思います。
https://qiita.com/y_tama/items/7000125129f817209796

# はじめに

2021/3/31に、Power Systems Virtual Server（以下Power VS）の大阪リージョンがGAしました。
これで、AIXやIBMiをIBM Cloud上の国内DCで東西に配置できるサービスが整いました。
Power VSのネットワークは、従来のIBM Cloudのネットワークとは分かれており、東西にAIXのLPARを作成しただけではAIX間が疎通しません。
この記事では、東西のAIX間を疎通させます。実現したいのは図の赤い矢印の通信です。
Powerとx86間のDirect Link Connectは1DCあたり2本まで無償ですし、DC間ネットワークは無料で使えますので、ネットワーク費用が発生しないのは良い点と思います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/59627/6feec1d0-6224-939a-4ab8-ba37e726721b.png)

東京にあるPowerのネットワークから、x86のネットワークを通り、DC間ネットワークを通って大阪まで行き、大阪のPowerのネットワークに入ります。
NATしても良いのですが、今回はPowerのネットワークに割り振った192.168.x.xのIP同士で疎通させるため、下記3つのGREトンネルで通信を中継します。

GRE①：東京Powerと東京VRAの間
GRE②：東京VRAと大阪vyosの間
GRE③：大阪vyosと大阪Powerの間

東西を疎通させるだけであれば、東京のVRAから大阪のPower側にGREを張ることもできますので、東京か大阪のどちらかにGREを張れる仮想ルータがあれば実現できます。ただ、Powerを東西に配置する用途としてはDRが想定されるため、万一、東京が被災したときも、大阪側PowerにIPSec等で入れる口が必要と考え、東西両方に仮想ルータを配置しています。（もちろん、大阪側はvyosでなくVRAでも良いですが、今回は仮想サーバーにvyosを入れて検証しています）

GRE①とGRE③の前提として、東京のPowerとx86の間、大阪のPowerとx86の間を、それぞれ、Direct Link 2.0で接続します。
Power・x86間のDirect Link 2.0については[こちら](https://qiita.com/y_tama/items/eb8d6e3d54197a569e25#2-x86-network%E3%81%A8power-network%E9%96%93%E3%81%AEdirect-link-connect)に書きました。

# GRE①：東京Powerと東京VRAの間
Caseを起票し、Power側のGRE設定を依頼します。詳細は[こちら](https://qiita.com/y_tama/items/eb8d6e3d54197a569e25#3-%E9%A0%85%E7%9B%AE2%E3%81%AEdirect-link-connect%E4%B8%8A%E3%81%AB%E5%BC%B5%E3%81%A3%E3%81%9Fgre%E3%83%88%E3%83%B3%E3%83%8D%E3%83%AB)に書きました。
東京のAIXから、大阪のPower VSのセグメント（192.168.160.0/24）に向かう通信をGRE経由でVRAに渡して欲しいので、caseでは下記の項目を依頼します。
> Private Networks to be routed over GRE:
> Private Network ID (1): 192.168.160.0/24

VRA側は下記のように設定します。

```:VRA@東京
set protocols static route 172.16.0.37/32 next-hop 10.132.163.193

set interfaces tunnel tun0 address 172.16.100.5/30
set interfaces tunnel tun0 encapsulation gre
set interfaces tunnel tun0 local-ip 10.132.163.242
set interfaces tunnel tun0 remote-ip 172.16.0.37

set protocols static route 192.168.150.0/24 next-hop 172.16.100.6
```

# GRE②：東京VRAと大阪vyosの間
東京のVRAと大阪のvyosの間にもGREを張ります。
GREトンネル内IPは、東京側が172.16.100.9、大阪側が172.16.100.10にしました。
VRA@東京は、大阪AIXのセグメント（192.168.160.0/24）宛のパケットをGRE対向（172.16.100.10）に渡します。

```:VRA@東京
set interfaces tunnel tun1 address 172.16.100.9/30
set interfaces tunnel tun1 encapsulation gre
set interfaces tunnel tun1 local-ip 10.132.163.242
set interfaces tunnel tun1 remote-ip 10.8.29.213

set protocols static route 192.168.160.0/24 next-hop 172.16.100.10
```

vyos@大阪は、東京AIXのセグメント（192.168.150.0/24）宛のパケットをGRE対向（172.16.100.9）に渡します。

```:vyos@大阪
set interfaces tunnel tun0 address '172.16.100.10/30'
set interfaces tunnel tun0 encapsulation 'gre'
set interfaces tunnel tun0 local-ip '10.8.29.213'
set interfaces tunnel tun0 remote-ip '10.132.163.242'

set protocols static route 192.168.150.0/24 next-hop '172.16.100.9'
```

# GRE③：大阪vyosと大阪Powerの間
①と同様、Caseを起票し、Power側のGRE設定を依頼します。
大阪のAIXから、東京のPower VSのセグメント（192.168.150.0/24）に向かう通信をGRE経由でvyosに渡して欲しいので、caseでは下記の項目を依頼します。
> Private Networks to be routed over GRE:
> Private Network ID (1): 192.168.150.0/24

```:case起票
Hello,
I'm refferring this docs.
https://cloud.ibm.com/docs/power-iaas?topic=power-iaas-configuring-power#gre-tunneling

Could you configure the Power VS side for the GRE tunnel?

Customer name: xxx
Customer account ID: xxxxxx
GRE Tunnel source (Power VS) IP: ???(I don't know it. Can you specify this?)
GRE Tunnel destination (IBM Cloud VRA) IP: 10.8.29.213
GRE Tunnel interface (Power VS) IP: 172.16.100.14/30
GRE Tunnel interface (IBM Cloud VRA) IP: 172.16.100.13/30
Private Networks to be routed over GRE:
Private Network ID (1): 192.168.150.0/24

Datacenter/Colo is OSA21.

Thanks,
```

上記caseの返信として、Power側のGRE終端は172.16.0.40と教えてもらったので、下記をvyosに設定します。

```:vyos@大阪
set protocols static route 172.16.0.40/32 next-hop '10.8.29.193'

set interfaces tunnel tun1 address '172.16.100.13/30'
set interfaces tunnel tun1 encapsulation 'gre'
set interfaces tunnel tun1 local-ip '10.8.29.213'
set interfaces tunnel tun1 remote-ip '172.16.0.40'

set protocols static route 192.168.160.0/24 next-hop '172.16.100.14'
```

これで、東京のAIXと大阪のAIXの間が疎通しました。

```:東京AIXから大阪AIXへのping結果
# ping 192.168.160.207
PING 192.168.160.207 (192.168.160.207): 56 data bytes
64 bytes from 192.168.160.207: icmp_seq=0 ttl=247 time=11 ms
64 bytes from 192.168.160.207: icmp_seq=1 ttl=247 time=10 ms
64 bytes from 192.168.160.207: icmp_seq=2 ttl=247 time=10 ms
64 bytes from 192.168.160.207: icmp_seq=3 ttl=247 time=10 ms
```

以上です。