GNS3は、マルチキャストのルーティングまで模擬しくれました。

[前回](https://qiita.com/tchofu/items/1c0944a56cf825aea68e)、[GNS3](https://www.gns3.com/)で断線が模擬できることを確認しましたので、今度はマルチキャストについて確認してみました。

結論を言えば、期待通りマルチキャストのルーティングを再現してくれました。いい感じです。

# 課題

以下のようなネットワークを模擬してみます。R1とR2はルータです（L2スイッチではありません）。

![ss_20190804_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72237/fb5ac26b-1849-a4c3-4ecd-860288b1e3dd.png)

[^homeenv]: ルータやスイッチはない、サーバもない。


# 実験

マルチキャストの送信を行います。192.168.0.10を送信元、192.168.2.10を受信先とし、TTLは1〜3に変えて送ってみます（ルータで減算されるか確認する）。

今回のマルチキャストのルーティングは、とりあえずルーティングしてくれればいいので、DENSEモードとします。

## 環境

 * ホストOS : Ubuntu 18.04(64bit)
 * ゲストOS : CentOS 6.10(32bit)
 * GNS3 : 2.1.21
 * VirtualBox : 5.2.18_Ubuntu r123745

# 結果

TTL=1時は、WireSharkを用いて同一セグメントのみパケットが流れていることを確認しました（期待通り）。TT=2の時は、R1〜R2間にパケットが流れていましたが、192.168.2.0/24には流れていませんでした（期待通り）。TTL=3の時だけ192.168.2.10のPCでマルチキャストで送信されてきたデータを受信できました（期待通り）。

#### パケット・モニタ結果

|TTL  |192.168.0  |192.168.1  |192.168.2 |受信 |
|---|---|---|---|---|
|1  |有  |無  |無 |無 |
|2  |有  |有  |無 |無 |
|3  |有  |有  |有 |有 |

### ルーティング状況

#### R1

```
R1#show ip mroute
IP Multicast Routing Table
Flags: D - Dense, S - Sparse, B - Bidir Group, s - SSM Group, C - Connected,
       L - Local, P - Pruned, R - RP-bit set, F - Register flag,
       T - SPT-bit set, J - Join SPT, M - MSDP created entry,
       X - Proxy Join Timer Running, A - Candidate for MSDP Advertisement,
       U - URD, I - Received Source Specific Host Report,
       Z - Multicast Tunnel, z - MDT-data group sender,
       Y - Joined MDT-data group, y - Sending to MDT-data group
Outgoing interface flags: H - Hardware switched, A - Assert winner
 Timers: Uptime/Expires
 Interface state: Interface, Next-Hop or VCD, State/Mode

(*, 239.1.1.1), 00:01:19/stopped, RP 0.0.0.0, flags: D
  Incoming interface: Null, RPF nbr 0.0.0.0
  Outgoing interface list:
    FastEthernet0/0, Forward/Dense, 00:01:19/00:00:00

(192.168.0.10, 239.1.1.1), 00:01:19/00:02:57, flags: T
  Incoming interface: Vlan10, RPF nbr 0.0.0.0
  Outgoing interface list:
    FastEthernet0/0, Forward/Dense, 00:00:45/00:00:00

(*, 224.0.1.40), 00:05:15/00:02:37, RP 0.0.0.0, flags: DCL
  Incoming interface: Null, RPF nbr 0.0.0.0
  Outgoing interface list:
    FastEthernet0/0, Forward/Dense, 00:03:46/00:00:00
    Vlan10, Forward/Dense, 00:05:15/00:00:00
```

#### R2

```
R2#show ip mroute
IP Multicast Routing Table
Flags: D - Dense, S - Sparse, B - Bidir Group, s - SSM Group, C - Connected,
       L - Local, P - Pruned, R - RP-bit set, F - Register flag,
       T - SPT-bit set, J - Join SPT, M - MSDP created entry,
       X - Proxy Join Timer Running, A - Candidate for MSDP Advertisement,
       U - URD, I - Received Source Specific Host Report,
       Z - Multicast Tunnel, z - MDT-data group sender,
       Y - Joined MDT-data group, y - Sending to MDT-data group
Outgoing interface flags: H - Hardware switched, A - Assert winner
 Timers: Uptime/Expires
 Interface state: Interface, Next-Hop or VCD, State/Mode

(*, 239.1.1.1), 00:01:13/stopped, RP 0.0.0.0, flags: DC
  Incoming interface: Null, RPF nbr 0.0.0.0
  Outgoing interface list:
    Vlan10, Forward/Dense, 00:00:43/00:00:00
    FastEthernet0/0, Forward/Dense, 00:01:13/00:00:00

(192.168.0.10, 239.1.1.1), 00:01:13/00:02:51, flags: T
  Incoming interface: FastEthernet0/0, RPF nbr 192.168.1.254
  Outgoing interface list:
    Vlan10, Forward/Dense, 00:00:45/00:00:00

(*, 224.0.1.40), 00:03:23/00:02:08, RP 0.0.0.0, flags: DCL
  Incoming interface: Null, RPF nbr 0.0.0.0
  Outgoing interface list:
    FastEthernet0/0, Forward/Dense, 00:03:23/00:00:00
```

# 考察

期待通り、[GNS3](https://www.gns3.com/)はマルチキャストのルーティングを模擬できました。

マルチキャスト・アドレスを224.0.1.3にした場合でも同様の結果でした。私はTTLに関係なくエンド・ツー・エンドで届かないと思ったのですが、届きました（末端で受信できました）。これは、私の期待が間違えているのかもしれません。

# 参考文献

 * [GNS3](https://www.gns3.com/)
 * [GNS3でMulticast labを構築しよう](https://it-networking.jp/2016/08/28/75.html)