Virtualbox에서 브로드캐스트 폭풍

Virtualbox VM을 사용하여 브로드 캐스트 폭풍을 만듭니다.



네트워크



2개의 Virtual Machine(VM)을 준비한다. 여기서는 이더넷 스위치 A와 이더넷 스위치 B로, 각각 2 개의 네트워크 I/F를 가지며, 이들은 네트워크 브리지되어있다.


Virtualbox에서 설정



2개의 VM으로 네트워크 어댑터(네트워크 I/F)를 2개 작성. "intnet1"및 "intnet2"라는 내부 네트워크를 만들고, 프로미스 캐스 모드는 "모두 허용", MAC 주소는 모든 어댑터에서 중복되지 않는 것을 선택한다.


이것에 의해, VM에 이용한 Linux(Busterdog)의 네트워크 I/F의 "eth0"이 내부 네트워크 "intnet1", "eth1"이 내부 네트워크 "intnet2"에 할당된다.

Linux에서 설정



부팅시 네트워크 브리지가 구성되도록 "/etc/network/interfaces"를 설정합니다. 기동시에 STP(Spanning Tree Protocol)는 ON. (그렇지 않으면 위험)
root@live:~# cat /etc/network/interfaces
auto eth0
iface eth0 inet static
  address 0.0.0.0
auto eth1
iface eth1 inet static
  address 0.0.0.0

auto br0
iface br0 inet static
  address 0.0.0.0
  bridge_ports eth0 eth1
  bridge_stp on

시작 후 상태 확인.
root@live:~# ifconfig
br0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet6 fe80::a00:27ff:feb4:1e00  prefixlen 64  scopeid 0x20<link>
        ether 08:00:27:b4:1e:00  txqueuelen 1000  (イーサネット)
        RX packets 18  bytes 1968 (1.9 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 11  bytes 866 (866.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        ether 08:00:27:b4:1e:00  txqueuelen 1000  (イーサネット)
        RX packets 102  bytes 7290 (7.1 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 14  bytes 1076 (1.0 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        ether 08:00:27:cc:b0:74  txqueuelen 1000  (イーサネット)
        RX packets 99  bytes 6974 (6.8 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 3  bytes 180 (180.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (ローカルループバック)
        RX packets 340  bytes 24672 (24.0 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 340  bytes 24672 (24.0 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

root@live:~# brctl show
bridge name bridge id       STP enabled interfaces
br0     8000.080027b41e00   yes         eth0
                                        eth1


브리지 네트워크 I/F "br0"에는 IPv6 주소가 할당되어 있습니다.

실험



STP 켜기(시작 상태)



ping6 전송 전 Wireshark의 패킷.

패킷을 생성한다.
root@live:~# ping6 ff02::1

모든 노드의 멀티 캐스트이지만 좋을 것입니다.

conky에 의한 부하 상황.

너무 노멀.

STP 꺼짐



명령으로 STP를 끕니다.
root@live:~# brctl stp br0 off
root@live:~# brctl show
bridge name bridge id       STP enabled interfaces
br0     8000.080027b41e00   no          eth0
                                        eth1

마찬가지로 패킷을 생성합니다.
root@live:~# ping6 ff02::1

직후 Wireshark의 상황.

하지만 그 중 이런 느낌이 된다.

패킷 번호에 주목. conky에 의한 부하 상황은 이쪽.


팬이 계속 격렬하게 돌아서 VM이 사망하기도 했습니다. STP를 끄면 부하가 내려갑니다(당연히).


요약



실험 성공. 하지만 하지 말라.

좋은 웹페이지 즐겨찾기