AzureとOCIをS2S VPNでつないでみた (libreswan)

AzureとOCIを接続するために、Azureのサイト間(S2S) VPNと、OCI上に立てたOracle Linuxのlibreswanを使ってみました。
# 構成図
![Diagram.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/684720/3d74232c-34ba-0d00-8cf4-119b3072019e.png)

# パフォーマンス
```shell-session
[azureuser@azure-linux ~]$ ping -c 12 10.0.1.2
PING 10.0.1.2 (10.0.1.2) 56(84) bytes of data.
64 bytes from 10.0.1.2: icmp_seq=1 ttl=63 time=10.4 ms
64 bytes from 10.0.1.2: icmp_seq=2 ttl=63 time=9.89 ms
64 bytes from 10.0.1.2: icmp_seq=3 ttl=63 time=10.6 ms
64 bytes from 10.0.1.2: icmp_seq=4 ttl=63 time=9.96 ms
64 bytes from 10.0.1.2: icmp_seq=5 ttl=63 time=10.6 ms
64 bytes from 10.0.1.2: icmp_seq=6 ttl=63 time=10.7 ms
64 bytes from 10.0.1.2: icmp_seq=7 ttl=63 time=10.3 ms
64 bytes from 10.0.1.2: icmp_seq=8 ttl=63 time=10.5 ms
64 bytes from 10.0.1.2: icmp_seq=9 ttl=63 time=9.97 ms
64 bytes from 10.0.1.2: icmp_seq=10 ttl=63 time=10.4 ms
64 bytes from 10.0.1.2: icmp_seq=11 ttl=63 time=10.2 ms
64 bytes from 10.0.1.2: icmp_seq=12 ttl=63 time=10.2 ms

--- 10.0.1.2 ping statistics ---
12 packets transmitted, 12 received, 0% packet loss, time 11016ms
rtt min/avg/max/mdev = 9.898/10.338/10.703/0.307 ms
[azureuser@azure-linux ~]$
```
- 1本計測

```shell-session
[azureuser@azure-linux ~]$ iperf3 -c 10.0.1.2
Connecting to host 10.0.1.2, port 5201
[  4] local 192.168.0.4 port 52902 connected to 10.0.1.2 port 5201
[ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
[  4]   0.00-1.00   sec  82.9 MBytes   695 Mbits/sec   35   1.84 MBytes
[  4]   1.00-2.00   sec  43.8 MBytes   367 Mbits/sec  705    504 KBytes
[  4]   2.00-3.00   sec  47.5 MBytes   398 Mbits/sec    0    564 KBytes
[  4]   3.00-4.00   sec  51.2 MBytes   430 Mbits/sec    0    625 KBytes
[  4]   4.00-5.00   sec  58.8 MBytes   493 Mbits/sec    0    688 KBytes
[  4]   5.00-6.00   sec  62.5 MBytes   524 Mbits/sec    0    748 KBytes
[  4]   6.00-7.00   sec  67.5 MBytes   566 Mbits/sec    0    811 KBytes
[  4]   7.00-8.00   sec  56.2 MBytes   472 Mbits/sec  102    643 KBytes
[  4]   8.00-9.00   sec  58.8 MBytes   493 Mbits/sec   99    495 KBytes
[  4]   9.00-10.00  sec  43.8 MBytes   367 Mbits/sec    0    553 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec   573 MBytes   481 Mbits/sec  941             sender
[  4]   0.00-10.00  sec   571 MBytes   479 Mbits/sec                  receiver

iperf Done.
[azureuser@azure-linux ~]$
```
- 2本同時計測

```shell-session
[azureuser@azure-linux ~]$ iperf3 -c 10.0.1.2
Connecting to host 10.0.1.2, port 5201
[  4] local 192.168.0.4 port 52570 connected to 10.0.1.2 port 5201
[ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
[  4]   0.00-1.00   sec  69.8 MBytes   586 Mbits/sec  1833    479 KBytes
[  4]   1.00-2.00   sec  32.5 MBytes   273 Mbits/sec   36    391 KBytes
[  4]   2.00-3.00   sec  36.2 MBytes   304 Mbits/sec    0    452 KBytes
[  4]   3.00-4.00   sec  33.8 MBytes   283 Mbits/sec   88    366 KBytes
[  4]   4.00-5.00   sec  35.0 MBytes   294 Mbits/sec    0    423 KBytes
[  4]   5.00-6.00   sec  37.5 MBytes   315 Mbits/sec   42    342 KBytes
[  4]   6.00-7.00   sec  33.8 MBytes   283 Mbits/sec    0    401 KBytes
[  4]   7.00-8.00   sec  32.5 MBytes   273 Mbits/sec   70    329 KBytes
[  4]   8.00-9.00   sec  32.5 MBytes   273 Mbits/sec    0    392 KBytes
[  4]   9.00-10.00  sec  38.8 MBytes   325 Mbits/sec    0    455 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec   382 MBytes   321 Mbits/sec  2069             sender
[  4]   0.00-10.00  sec   380 MBytes   319 Mbits/sec                  receiver

iperf Done.
[azureuser@azure-linux ~]$
```
```shell-session
[azureuser@azure-linux2 ~]$ iperf3 -c 10.0.1.3
Connecting to host 10.0.1.3, port 5201
[  4] local 192.168.0.5 port 39852 connected to 10.0.1.3 port 5201
[ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
[  4]   0.00-1.00   sec  22.8 MBytes   192 Mbits/sec  695    185 KBytes
[  4]   1.00-2.00   sec  18.5 MBytes   155 Mbits/sec    0    245 KBytes
[  4]   2.00-3.00   sec  23.8 MBytes   199 Mbits/sec    0    305 KBytes
[  4]   3.00-4.00   sec  21.6 MBytes   182 Mbits/sec   18    271 KBytes
[  4]   4.00-5.00   sec  21.0 MBytes   176 Mbits/sec    1    243 KBytes
[  4]   5.00-6.00   sec  18.6 MBytes   156 Mbits/sec    1    227 KBytes
[  4]   6.00-7.00   sec  23.0 MBytes   193 Mbits/sec    0    288 KBytes
[  4]   7.00-8.00   sec  16.8 MBytes   141 Mbits/sec    3    136 KBytes
[  4]   8.00-9.00   sec  15.3 MBytes   128 Mbits/sec    1    140 KBytes
[  4]   9.00-10.00  sec  14.5 MBytes   121 Mbits/sec    0    199 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec   196 MBytes   164 Mbits/sec  719             sender
[  4]   0.00-10.00  sec   194 MBytes   163 Mbits/sec                  receiver

iperf Done.
[azureuser@azure-linux2 ~]$
```
計測は、2020年11月21日(土) 午後のものです。

# セットアップ
## Azure
### Azure S2S VPN Gateway
[Docsの手順](https://docs.microsoft.com/ja-jp/azure/vpn-gateway/vpn-gateway-howto-site-to-site-resource-manager-portal)に従ってAzure側をセットアップします。
VPN Gatewayの[SKU](https://docs.microsoft.com/ja-jp/azure/vpn-gateway/vpn-gateway-about-vpngateways#gateway-skus)で帯域幅が決まるので、今回は1.25 GbpsのGeneration2 VpnGw2を選択しましたが、上のパフォーマンスを見るとVpnGw1でもよいかもしれません。
ローカルネットワークゲートウェイの作成はOCIのパートを作成してから行います。

## OCI
### VCN
今回は簡単に、インターネット接続性を持つVCNをウイザードで作成します。
![VCN1.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/684720/e58728d8-1f47-593c-938b-c02f7099cfaa.png)

### Oracle Linux
Oracle Linuxで作成します。デフォルトのシェイプを選択します。
![OCI-VM1.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/684720/0c970e2c-885f-3f61-4ad0-71003422e54a.png)
ネットワークはパブリックサブネットに接続します。

#### カーネルパラメータ設定

```shell
sudo vi /etc/sysctl.conf
```
下記を追加

```
net.ipv4.ip_forward=1
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.rp_filter = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.conf.default.rp_filter = 0
net.ipv4.conf.ens3.send_redirects = 0
net.ipv4.conf.ens3.accept_redirects = 0
net.ipv4.conf.ens3.rp_filter = 0
```
#### 適用

```shell
sudo sysctl -p
```
#### ファイアウォール
これを設定することで、libreswanが動いているOracle Linux外にもパケットを転送できるようになります。

```shell
sudo firewall-cmd --permanent --direct --add-rule ipv4 filter FORWARD 0 -d 0.0.0.0/0 -j ACCEPT
```

### libreswan
#### インストール

```shell
sudo yum -y install libreswan
```

#### 設定
```shell
sudo vi /etc/ipsec.d/azure-ipsec.conf
```
Azure側のVPN Gatewayがアクティブ/スタンバイで、1本のトンネルを作成する場合
**参考:** [公式設定例](https://libreswan.org/wiki/Microsoft_Azure_configuration)

```
conn conn2AzureRouteBasedGW
        authby=secret
        auto=start
        dpdaction=restart
        dpddelay=30
        dpdtimeout=120
        forceencaps=yes # not a must
        ike=aes256-sha1;modp1024
        ikelifetime=10800s
        ikev2=yes
        keyingtries=3
        left=%defaultroute
        leftid=168.138.47.228 # OCI側のパブリックIP
        leftsubnets=10.0.0.0/16 # OCIのVCN
        pfs=yes
        phase2alg=aes128-sha1
        right=40.74.76.220 # Azure VPN GatewayのパブリックIP
        rightid=40.74.76.220 # Azure VPN GatewayのパブリックIP
        rightsubnets=192.168.0.0/16 # AzureのVNet
        salifetime=3600s
        type=tunnel
```
#### 共有キー(PSK)

```shell
sudo vi /etc/ipsec.d/azure-ipsec.secrets
```
```
168.138.47.228 40.74.76.220 : PSK "共有キー"
```
#### サービスの起動&設定

```shell
sudo systemctl restart ipsec
sudo systemctl enable ipsec
```

### ルーティング設定
#### 仮想NICでのパケット転送許可 (自分のものでないパケットも送受信可能にする)
![OCI-VM2.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/684720/62a21d47-227d-9738-3764-3bbd8993b902.png)


### ルート表
#### パブリックサブネット
![OCI-Route1.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/684720/cc93a438-7544-b7bf-54b7-36286c24088c.png)

#### プライベートサブネット
![OCI-Route2.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/684720/c0365ffe-6261-4fa9-3a1e-e74bb70a0b69.png)

### セキュリティリスト
#### パブリックサブネット
![OCI-Ingress1.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/684720/e5c2ac44-6cba-0bf2-7650-ffaddc343920.png)

#### プライベートサブネット
![OCI-Ingress2.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/684720/ebe6c940-89f8-2807-e6dc-5ea6be260089.png)

## Azure
### 接続の作成
[Docsの手順](https://docs.microsoft.com/ja-jp/azure/vpn-gateway/vpn-gateway-howto-site-to-site-resource-manager-portal)に従ってローカルネットワークゲートウェイ、およびVPN接続を作成します。接続するIPアドレスにOCI側に立てたOracle LinuxのパブリックIPアドレス、アドレス空間にOCIのVCNのネットワークを指定します。
接続を作成する際、共有キーを指定して、IKEv2であることを確認して作成します。
![Azure-Connect1.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/684720/c1bfe6db-9206-8d7c-add9-3a4978d2f45c.png)

## OCI
### Oracle Linux
#### 再起動
```shell
sudo shutdown -r now
```
### libreswan
#### 接続確認
```shell
sudo systemctl status ipsec
sudo ipsec status | grep established
```
このように出ればつながっています。

```
[opc@oci-libreswan ~]$ sudo ipsec status | grep established
000 #19: "conn2AzureRouteBasedGW/1x1":4500 STATE_PARENT_I3 (PARENT SA established); EVENT_SA_REPLACE in 9549s; newest ISAKMP; idle; import:admin initiate
000 #20: "conn2AzureRouteBasedGW/1x1":4500 STATE_V2_IPSEC_I (IPsec SA established); EVENT_SA_REPLACE in 2614s; newest IPSEC; eroute owner; isakmp#19; idle; import:admin initiate
[opc@oci-libreswan ~]$
```
## Azure
### 接続確認
ステータスのアップデートに少し時間がかかります。
![Azure-Connect2.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/684720/23738c44-47aa-34d2-623e-143898c693fc.png)

## 測定用VM
Azure、OCIそれぞれにOracle LinuxのVMを立てて、[こちらの手順](https://docs.cloud.oracle.com/ja-jp/iaas/Content/Network/Concepts/networkperformance.htm)で計測環境をセットアップします。

# 考察
## パフォーマンス
[Windows Server RRASの場合](https://qiita.com/takeokams/items/4c5411290c55752e2670)と比べると、より高速になりました。
## 冗長構成
Azure VPN Gatewayをアクティブ/アクティブで構成して、libreswanから2本のトンネルを張ることができます。
### /etc/ipsec.d/azure-ipsec.conf
```
conn conn2AzureRouteBasedGW
        authby=secret
        auto=start
        dpdaction=restart
        dpddelay=30
        dpdtimeout=120
        forceencaps=yes # not a must
        ike=aes256-sha1;modp1024
        ikelifetime=10800s
        ikev2=yes
        keyingtries=3
        left=%defaultroute
        leftid=168.138.47.228
        leftsubnets=10.0.0.0/16
        pfs=yes
        phase2alg=aes128-sha1
        right=40.74.76.220
        rightid=40.74.76.220
        rightsubnets=192.168.0.0/16
        salifetime=3600s
        type=tunnel
        mark=10/0xffffffff # マルチコネクションの場合はこの設定が必要
        vti-interface=vti01 # マルチコネクションの場合はこの設定が必要
        vti-routing=yes # rightsubnetsへのルーティングをここで指示
conn conn2AzureRouteBasedGW2
        authby=secret
        auto=start
        dpdaction=restart
        dpddelay=30
        dpdtimeout=120
        forceencaps=yes # not a must
        ike=aes256-sha1;modp1024
        ikelifetime=10800s
        ikev2=yes
        keyingtries=3
        left=%defaultroute
        leftid=168.138.47.228
        leftsubnets=10.0.0.0/16
        pfs=yes
        phase2alg=aes128-sha1
        right=40.74.75.131 # Azure VPN Gatewayの2番目のパブリックIP
        rightid=40.74.75.131 # Azure VPN Gatewayの2番目のパブリックIP
        rightsubnets=192.168.0.0/16
        salifetime=3600s
        type=tunnel
        mark=mark=15/0xffffffff # マルチコネクションの場合はこの設定が必要
        vti-interface=vti02 # マルチコネクションの場合はこの設定が必要
        vti-routing=yes # rightsubnetsへのルーティングをここで指示
```
### アクティブ/アクティブでのパフォーマンス
- 1本計測

```shell-session
[azureuser@azure-linux ~]$ iperf3 -c 10.0.1.2
Connecting to host 10.0.1.2, port 5201
[  4] local 192.168.0.4 port 59450 connected to 10.0.1.2 port 5201
[ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
[  4]   0.00-1.00   sec  81.8 MBytes   686 Mbits/sec    4   4.59 MBytes
[  4]   1.00-2.00   sec  50.0 MBytes   419 Mbits/sec  2041    595 KBytes
[  4]   2.00-3.00   sec  50.0 MBytes   419 Mbits/sec    0    650 KBytes
[  4]   3.00-4.00   sec  57.5 MBytes   482 Mbits/sec    0    708 KBytes
[  4]   4.00-5.00   sec  61.2 MBytes   514 Mbits/sec    0    769 KBytes
[  4]   5.00-6.00   sec  57.5 MBytes   482 Mbits/sec  114    598 KBytes
[  4]   6.00-7.00   sec  53.8 MBytes   451 Mbits/sec    0    670 KBytes
[  4]   7.00-8.00   sec  56.2 MBytes   472 Mbits/sec    0    722 KBytes
[  4]   8.00-9.00   sec  56.2 MBytes   472 Mbits/sec  104    538 KBytes
[  4]   9.00-10.00  sec  48.8 MBytes   409 Mbits/sec    0    598 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec   573 MBytes   481 Mbits/sec  2263             sender
[  4]   0.00-10.00  sec   570 MBytes   478 Mbits/sec                  receiver

iperf Done.
[azureuser@azure-linux ~]$
```
- 2本同時計測

```shell-session
[azureuser@azure-linux ~]$ iperf3 -c 10.0.1.2
Connecting to host 10.0.1.2, port 5201
[  4] local 192.168.0.4 port 59510 connected to 10.0.1.2 port 5201
[ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
[  4]   0.00-1.00   sec  69.8 MBytes   585 Mbits/sec  2519    218 KBytes
[  4]   1.00-2.00   sec  22.5 MBytes   189 Mbits/sec   43    240 KBytes
[  4]   2.00-3.00   sec  23.8 MBytes   199 Mbits/sec    0    301 KBytes
[  4]   3.00-4.00   sec  27.5 MBytes   231 Mbits/sec    0    360 KBytes
[  4]   4.00-5.00   sec  28.8 MBytes   241 Mbits/sec   62    301 KBytes
[  4]   5.00-6.00   sec  25.0 MBytes   210 Mbits/sec   81    253 KBytes
[  4]   6.00-7.00   sec  23.8 MBytes   199 Mbits/sec    0    312 KBytes
[  4]   7.00-8.00   sec  30.0 MBytes   252 Mbits/sec    0    373 KBytes
[  4]   8.00-9.00   sec  26.2 MBytes   220 Mbits/sec    3    316 KBytes
[  4]   9.00-10.00  sec  22.5 MBytes   189 Mbits/sec   54    194 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec   300 MBytes   251 Mbits/sec  2762             sender
[  4]   0.00-10.00  sec   297 MBytes   249 Mbits/sec                  receiver

iperf Done.
[azureuser@azure-linux ~]$
```
```shell-session
[azureuser@azure-linux2 ~]$ iperf3 -c 10.0.1.3
Connecting to host 10.0.1.3, port 5201
[  4] local 192.168.0.5 port 46782 connected to 10.0.1.3 port 5201
[ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
[  4]   0.00-1.00   sec  32.6 MBytes   274 Mbits/sec  1813    356 KBytes
[  4]   1.00-2.00   sec  25.0 MBytes   210 Mbits/sec   32    306 KBytes
[  4]   2.00-3.00   sec  30.0 MBytes   252 Mbits/sec    0    368 KBytes
[  4]   3.00-4.00   sec  35.0 MBytes   294 Mbits/sec   72    299 KBytes
[  4]   4.00-5.00   sec  28.8 MBytes   241 Mbits/sec    0    360 KBytes
[  4]   5.00-6.00   sec  26.2 MBytes   220 Mbits/sec   25    306 KBytes
[  4]   6.00-7.00   sec  30.0 MBytes   252 Mbits/sec    0    368 KBytes
[  4]   7.00-8.00   sec  31.2 MBytes   262 Mbits/sec  115    303 KBytes
[  4]   8.00-9.00   sec  30.0 MBytes   252 Mbits/sec    0    365 KBytes
[  4]   9.00-10.00  sec  25.0 MBytes   210 Mbits/sec   30    311 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec   294 MBytes   247 Mbits/sec  2087             sender
[  4]   0.00-10.00  sec   291 MBytes   244 Mbits/sec                  receiver

iperf Done.
[azureuser@azure-linux2 ~]$
```

### アクティブ/アクティブでのバランシング
2本のリンクがUPしていますのでどのように使われるのか見てみました。

```
[opc@oci-libreswan ~]$ ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9000 qdisc mq state UP mode DEFAULT group default qlen 1000
    link/ether 02:00:17:00:57:0f brd ff:ff:ff:ff:ff:ff
3: ip_vti0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN mode DEFAULT group default qlen 1000
    link/ipip 0.0.0.0 brd 0.0.0.0
4: vti01@NONE: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 8980 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/ipip 10.0.0.2 peer 40.74.91.220
5: vti02@NONE: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 8980 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/ipip 10.0.0.2 peer 40.74.92.71
[opc@oci-libreswan ~]$
```

Azure VPN Gatewayからの送信については、何らかのアルゴリズムによりバランシングされるようです。
2本同時の`iperf3`の計測において、libreswanの2つのインタフェースで`tcpdump`を取り、特徴的な動きのパターンを掲載します。

- vti01

```
03:06:07.254269 IP 192.168.0.4.58832 > oci-linux1.sub11220056511.vcnosaka.oraclevcn.com.targus-getdata1: Flags [.], seq 37:7933, ack 1, win 229, options [nop,nop,TS val 2659158955 ecr 2681618163], length 7896
03:06:07.254275 IP 192.168.0.5.46970 > oci-linux2.sub11220056511.vcnosaka.oraclevcn.com.targus-getdata1: Flags [.], seq 44145257:44161049, ack 1, win 229, options [nop,nop,TS val 454877280 ecr 1412403442], length 15792
03:06:07.254276 IP 192.168.0.4.58832 > oci-linux1.sub11220056511.vcnosaka.oraclevcn.com.targus-getdata1: Flags [.], seq 7933:13197, ack 1, win 229, options [nop,nop,TS val 2659158956 ecr 2681618163], length 5264
03:06:07.255538 IP 192.168.0.5.46970 > oci-linux2.sub11220056511.vcnosaka.oraclevcn.com.targus-getdata1: Flags [.], seq 44161049:44192633, ack 1, win 229, options [nop,nop,TS val 454877280 ecr 1412403442], length 31584
```

- vti02

```
03:06:07.162764 IP 192.168.0.4.58830 > oci-linux1.sub11220056511.vcnosaka.oraclevcn.com.targus-getdata1: Flags [S], seq 1549509396, win 29200, options [mss 1360,sackOK,TS val 2659158864 ecr 0,nop,wscale 7], length 0
03:06:07.163126 IP oci-linux1.sub11220056511.vcnosaka.oraclevcn.com.targus-getdata1 > 192.168.0.4.58830: Flags [S.], seq 1293505894, ack 1549509397, win 62636, options [mss 8960,sackOK,TS val 2681618109 ecr 2659158864,nop,wscale 7], length 0
03:06:07.163362 IP oci-linux2.sub11220056511.vcnosaka.oraclevcn.com.targus-getdata1 > 192.168.0.5.46970: Flags [.], ack 36401914, win 24568, options [nop,nop,TS val 1412403362 ecr 454877185], length 0
```

- Azure VNet (192.168.0.0/16)からの送信

`192.168.0.4`からのパケットがバランシングされています。ポート番号が違うことに注意です。
`192.168.0.5`からのものはvti01のみに寄っていてvti02では見られません。
このように、同じホストでもセッションごとに都度振り分けられるようで、分散されることもあれば、同じ回線になることもありました。これはホストに依らないようです。

- OCI VCN (10.0.0.0/16)からの送信

Azure VNetへのパケットはルーティングテーブルで定義されているため、片寄せされます。ネットワークの情報は、`/etc/ipsec.d/azure-ipsec.conf`で指定されたサブネットが反映されています。

```
[opc@oci-libreswan ~]$ ip route show
default via 10.0.0.1 dev ens3
10.0.0.0/24 dev ens3 proto kernel scope link src 10.0.0.2
10.0.0.1 dev ens3 scope link
169.254.0.0/16 dev ens3 proto static scope link
169.254.0.0/16 dev ens3 scope link metric 1002
192.168.0.0/16 dev vti02 scope link
[opc@oci-libreswan ~]$
```