仮想スイッチをフェイルオーバー
させてみたる予定
@tkshnt
2016/12/09
スイッチの仮想化
• ファームウェア更新で再起動する必要
• 再起動は、時間がかかる
• 本当は、止めたくない
• 仮想スイッチをVMで構成して、フェールオー
バーすればいい?
⇒J社のQのアーキテクチャを調べたら似たよう
なことをしている
2016/12/9 TremaDay#10 3
Q(ハードウェア構成)
• CPU : Intel Xeon E3-1200@1.5GHz(Dual Core)
• Memory : 8GByte
• Storage : 16GByte SSD*2
• Switch chip : Broadcom 56850
⇒スイッチチップを搭載したx86-64組み込みシ
ステム
2016/12/9 TremaDay#10 4
Q(ソフトウェア構成)
• {NOS + Management} on {Yocto Linux + KVM}
• ゲストOS
– NOS 2つ
– Management
• ホスト
– Yocto Linux(組み込み向けのLinux distro)
• 特徴
– ファームウエアアップデート時、稼働していない方を
更新し、終了後に、稼働中のゲストを切り替えること
が可能
TremaDay#10 52016/12/9
構築環境
• Asus B150 Aura(ITX)
• B150チップセット、オンボードGbENIC+
802.11n/abg
• i350T4NIC(4ポート)
• Corei7 6700T(4C8T)
• メモリ:8GB*2, SSD 128GB
• Ubuntu16.04LTS+KVM
• インスタンス:3(VM0, VM1, Mng)
2016/12/9 TremaDay#10 6
ネットワークの管理
• 稼働中のVMに物理ポートを接続
• ホストからパススルーさせる
• パススルー先をホストが保持する
• ゲストが止まった時、フェイルオーバーさせる
2016/12/9 TremaDay#10 7
フェイルオーバーの動作(1)
• 単純な動作
– VM0ダウン⇒VM1起動
– ネットワークの切断が発生するため、パケット
(データ)ロストが発生する
2016/12/9 TremaDay#10 8
フェイルオーバーの動作(2)
• 改善した動作
– VM0の稼働にかかわらず、VM1も動作させておく
– ただし、VM1のネットワークは、ダウンさせておく
必要がある
– VM0のネットワークの全ポート切断を検知して、
VM1のネットワークに切り替える
2016/12/9 TremaDay#10 9
フェイルオーバーの動作(3)
• 改善案2
– VM0が落ちたら、ホストで引き取る
– ホストで、データをキャッシュするか、ホストが送
信する
– VM1が上がったら、ネットワークをVM1にパスス
ルーする
2016/12/9 TremaDay#10 10
参考文献
• Douglas Richard Hanks, Jr., “Juniper QFX5100
Series”, O’Reilly, 2015
2016/12/9 TremaDay#10 11

仮想スイッチをフェイルオーバーさせてみる予定