« ◆ Linux のネットワークネームスペース機能と Open vSwitch で仮想ネットワーク(ルータ追加) | トップページ | ◆ OpenFlow 1.0.0 メッセージ一覧 »

2013年5月 1日 (水)

◆ Linux のネットワークネームスペース機能と Open vSwitch で仮想ネットワーク(VLANホスト追加)

前々回の記事の仮想ネットワークに、VLANインターフェースを持つ仮想ホストを追加してみました。

■今回作成した仮想ネットワークの構成図

vhost6 を追加して VLAN ID=10 で接続しています。vlink6-0 のインターフェース対して VLAN インタフェースを vlink6-0.10 という名前で作っています。
※ vhost5 は、ありません。
Photo
■追加した仮想ホストでのインタフェース設定の確認

$ sudo ip netns exec vhost6 ip link show
19: vlink6-0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether aa:df:6d:3b:6c:b1 brd ff:ff:ff:ff:ff:ff 24: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN     link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 25: vlink6-0.10@vlink6-0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP     link/ether aa:df:6d:3b:6c:b1 brd ff:ff:ff:ff:ff:ff

■動作確認

vhost6 から ping で通信確認。VLAN ID が異なる vhost2 とは通信できない。

(1) vhost6 から vhost1(192.168.1.1) への ping

$ sudo ip netns exec vhost6 ping 192.168.1.1 -c 3
PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
64 bytes from 192.168.1.1: icmp_req=1 ttl=64 time=0.703 ms
64 bytes from 192.168.1.1: icmp_req=2 ttl=64 time=0.149 ms
64 bytes from 192.168.1.1: icmp_req=3 ttl=64 time=0.126 ms

--- 192.168.1.1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 0.126/0.326/0.703/0.266 ms

(2) vhost6 から vhost2(192.168.1.2) への ping

$ sudo ip netns exec vhost6 ping 192.168.1.2 -c 3
PING 192.168.1.2 (192.168.1.2) 56(84) bytes of data.
From 192.168.1.6 icmp_seq=1 Destination Host Unreachable
From 192.168.1.6 icmp_seq=2 Destination Host Unreachable
From 192.168.1.6 icmp_seq=3 Destination Host Unreachable

--- 192.168.1.2 ping statistics ---
3 packets transmitted, 0 received, +3 errors, 100% packet loss, time 2001ms
pipe 3

(3) vhost6 から vhost3(192.168.1.3) への ping

$ sudo ip netns exec vhost6 ping 192.168.1.3 -c 3
PING 192.168.1.3 (192.168.1.3) 56(84) bytes of data.
64 bytes from 192.168.1.3: icmp_req=1 ttl=64 time=0.633 ms
64 bytes from 192.168.1.3: icmp_req=2 ttl=64 time=0.103 ms
64 bytes from 192.168.1.3: icmp_req=3 ttl=64 time=0.107 ms

--- 192.168.1.3 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 1999ms
rtt min/avg/max/mdev = 0.103/0.281/0.633/0.248 ms

■今回の仮想ネットワークの作成・削除用シェルスクリプト

引数 delete で削除、add で追加です。

VLANインタフェースを持つ仮想ホストの追加箇所を赤字にしています。

#!/bin/sh
delete() {
    sudo ovs-vsctl del-br vswitch1
    sudo ovs-vsctl del-br vswitch2
    sudo ip netns delete vhost1
    sudo ip netns delete vhost2
    sudo ip netns delete vhost3
    sudo ip netns delete vhost4
    sudo ip link delete vlink5-0
    sudo ip link delete vlink5-1
    sudo ip netns delete vhost6
}
add() {
    sudo ovs-vsctl add-br vswitch1
    sudo ovs-vsctl add-br vswitch2
   
    sudo ip link add name vlink1-0 type veth peer name vlink1-1
    sudo ip link add name vlink2-0 type veth peer name vlink2-1
    sudo ip link add name vlink3-0 type veth peer name vlink3-1
    sudo ip link add name vlink4-0 type veth peer name vlink4-1
    sudo ip link add name vlink5-0 type veth peer name vlink5-1
    sudo ip link add name vlink6-0 type veth peer name vlink6-1
   
    sudo ip link set vlink1-0 up
    sudo ip link set vlink2-0 up
    sudo ip link set vlink3-0 up
    sudo ip link set vlink4-0 up
   
    sudo ip link set vlink1-1 up
    sudo ip link set vlink2-1 up
    sudo ip link set vlink3-1 up
    sudo ip link set vlink4-1 up
    sudo ip link set vlink6-1 up
   
    sudo ip netns add vhost1
    sudo ip netns add vhost2
    sudo ip netns add vhost3
    sudo ip netns add vhost4
    sudo ip netns add vhost6
   
    sudo ip netns exec vhost1 ifconfig lo 127.0.0.1
    sudo ip netns exec vhost2 ifconfig lo 127.0.0.1
    sudo ip netns exec vhost3 ifconfig lo 127.0.0.1
    sudo ip netns exec vhost4 ifconfig lo 127.0.0.1
    sudo ip netns exec vhost6 ifconfig lo 127.0.0.1

    sudo ip link set vlink1-0 netns vhost1
    sudo ip link set vlink2-0 netns vhost2
    sudo ip link set vlink3-0 netns vhost3
    sudo ip link set vlink4-0 netns vhost4
    sudo ip link set vlink6-0 netns vhost6
    sudo ip netns exec vhost6 ip link add link vlink6-0 name vlink6-0.10 type vlan id 10
    sudo ip netns exec vhost6 ip link set vlink6-0 up

   
    sudo ip netns exec vhost1 ifconfig vlink1-0 192.168.1.1
    sudo ip netns exec vhost2 ifconfig vlink2-0 192.168.1.2
    sudo ip netns exec vhost3 ifconfig vlink3-0 192.168.1.3
    sudo ip netns exec vhost4 ifconfig vlink4-0 192.168.1.4
    sudo ip netns exec vhost6 ifconfig vlink6-0.10 192.168.1.6
   
    sudo ovs-vsctl add-port vswitch1 vlink5-0
    sudo ovs-vsctl add-port vswitch2 vlink5-1
   
    sudo ovs-vsctl add-port vswitch1 vlink1-1 tag=10
    sudo ovs-vsctl add-port vswitch1 vlink2-1 tag=20
    sudo ovs-vsctl add-port vswitch1 vlink6-1
   
    sudo ovs-vsctl add-port vswitch2 vlink3-1 tag=10
    sudo ovs-vsctl add-port vswitch2 vlink4-1 tag=20
    sudo ip link set vlink5-0 up
    sudo ip link set vlink5-1 up
}
case "$1" in
add)
    set -x
    add
    ;;
delete)
    delete > /dev/null 2>&1
    ;;
*)
    echo "usage: $0 (add|delete)"
esac

« ◆ Linux のネットワークネームスペース機能と Open vSwitch で仮想ネットワーク(ルータ追加) | トップページ | ◆ OpenFlow 1.0.0 メッセージ一覧 »

仮想ネットワーク」カテゴリの記事

コメント

この記事へのコメントは終了しました。

« ◆ Linux のネットワークネームスペース機能と Open vSwitch で仮想ネットワーク(ルータ追加) | トップページ | ◆ OpenFlow 1.0.0 メッセージ一覧 »

最近のトラックバック

無料ブログはココログ