一、交换机

1、VLAN

VLAN(Virtual Local Area Network)的中文名为"虚拟局域网"。

       虚拟局域网(VLAN)是一组逻辑上的设备和用户,这些设备和用户并不受物理位置的限制,可以根据功能、部门及应用等因素将它们组织起来,相互之间的通信就好像它们在同一个网段中一样,由此得

名虚拟局域网。

        VLAN是一种比较新的技术,工作在OSI参考模型的第2层和第3层,一个VLAN就是一个广播域,VLAN之间的通信是通过第3层的路由器来完成的。与传统的局域网技术相比较,VLAN技术更加灵活,它具有以下优点:

       网络设备的移动、添加和修改的管理开销减少;可以控制广播活动;可提高网络的安全性。

在计算机网络中,一个二层网络可以被划分为多个不同的广播域,一个广播域对应了一个特定的用户组,默认情况下这些不同的广播域是相互隔离的。不同的广播域之间想要通信,需要通过一个或多个路由器。这样的一个广播域就称为VLAN。


什么是VLAN?

         Virtual LAN; LAN即为广播帧能够到的节点范围,也即能够直接通信的范围;


VLAN划分的方式:

                 基于MAC地址

                 基于交换机Port实现

                 基于IP地址实现

                 基于用户实现


交换机接口的类型:

          访问链接:access link

          汇聚链接:trunc link

                   

VLAN的汇聚方式:

              IEEE 802.1q

                 ISL: Inter Switch Link


VXLAN(扩展的vlan):能划分更多的vlan

使linu支持vlan:

[root@BAIYU_173 ~]# 
[root@BAIYU_173 ~]# modinfo 8021q
filename:       /lib/modules/2.6.32-573.el6.x86_64/kernel/net/8021q/8021q.ko
version:        1.8
license:        GPL
alias:          rtnl-link-vlan
srcversion:     24CA9E14200E9B54D970303
depends:        garp
vermagic:       2.6.32-573.el6.x86_64 SMP mod_unload modversions 
[root@BAIYU_173 ~]# modprobe 8021q

[root@BAIYU_173 ~]# ls /proc/net/vlan
config


VLAN间路由: 

              路由器:

                     访问链接:router为每个VLAN提供一个接口

                     汇聚链接:router只向交换提供一个接口    #单臂路由

              三层交换机:


构建复杂的虚拟化网络的两个要件:

netns

OpenVSwitch


二、OpenVSwitch

        OpenvSwitch,简称OVS,是一个虚拟交换软件,主要用于虚拟机VM环境,作为一个虚拟交换机,支持Xen/XenServer, KVM, and VirtualBox多种虚拟化技术。

虚拟交换机(vswitch)主要有两个作用:传递虚拟机VM之间的流量,以及实现VM和外界网络的通信。

OVS:基于C语言研发;

1、特性

802.1q协议, trunk, access

NIC bonding(网卡版定)

NetFlow(数据流), sFlow

QoS配置及策略

GRE(通用路由封装技术), VxLAN, 

OpenFlow


2、OVS的组成部分

   ovs-vswitchd: OVS daemon, 实现数据报文交换功能,和Linux内核兼容模块一同实现了基于流的交换技术;

ovsdb-server:轻量级的数据库服务,主要保存了整个OVS的配置信息,例如接口、交换和VLAN等等;ovs-vswitchd的交换功能基于此库实现;

ovs-dpctl  一个工具,用来配置交换机内核模块,可以控制转发规则

ovs-vsctl:用于获取或更改ovs-vswitchd的配置信息,其修改操作会保存至ovsdb-server中;

ovs-appctl:主要是向OVS守护进程发送命令的,一般用不上。

ovsdbmonitor:GUI工具来显示ovsdb-server中数据信息。

ovs-controller:一个简单的OpenFlow控制器

ovs-ofctl:用来控制OVS作为OpenFlow交换机工作时候的流表内容。

ovs-pki


3、OVS安装和使用

1)安装OVS

[root@BAIYU_173 ~]# yum install openvswitch-1.10.0-1.el6.x86_64.rpm
[root@BAIYU_173 ~]# rpm -ql openvswitch
/etc/logrotate.d/openvswitch
/etc/openvswitch
/etc/rc.d/init.d/openvswitch
/etc/sysconfig/network-scripts/ifdown-ovs
/etc/sysconfig/network-scripts/ifup-ovs
/etc/sysconfig/openvswitch
/usr/bin/ovs-appctl
/usr/bin/ovs-benchmark
/usr/bin/ovs-dpctl
/usr/bin/ovs-ofctl
/usr/bin/ovs-parse-backtrace
/usr/bin/ovs-parse-leaks
/usr/bin/ovs-pcap
/usr/bin/ovs-pki
/usr/bin/ovs-tcpundump
/usr/bin/ovs-vsctl
/usr/bin/ovsdb-client
/usr/bin/ovsdb-tool
/usr/sbin/ovs-bugtool
/usr/sbin/ovs-vswitchd
/usr/sbin/ovsdb-server
/usr/share/doc/openvswitch-1.10.0

/usr/share/openvswitch

/usr/share/openvswitch/scripts

/var/lib/openvswitch
/var/lib/openvswitch/pki

[root@BAIYU_173 ~]# service openvswitch start
Creating empty database /etc/openvswitch/conf.db           [  OK  ]
Starting ovsdb-server                                      [  OK  ]
Configuring Open vSwitch system IDs                        [  OK  ]
Inserting openvswitch module                               [  OK  ]
Starting ovs-vswitchd                                      [  OK  ]
Enabling remote OVSDB managers                             [  OK  ]

2)ovs-vsctl命令的使用

[root@BAIYU_173 ~]# ovs
ovs-appctl           ovsdb-server         ovs-parse-backtrace  ovs-tcpundump
ovs-benchmark        ovsdb-tool           ovs-parse-leaks      ovs-vsctl
ovs-bugtool          ovs-dpctl            ovs-pcap             ovs-vswitchd
ovsdb-client         ovs-ofctl            ovs-pki              
[root@BAIYU_173 ~]# ovs-vsctl --help
ovs-vsctl: ovs-vswitchd management utility
usage: ovs-vsctl [OPTIONS] COMMAND [ARG...]

  ovs-vsctl [OPTIONS] COMMAND [ARG...]

[root@BAIYU_173 ~]# ovs-vsctl add-br br-in
[root@BAIYU_173 ~]# ovs-vsctl show
e62fa42f-1f90-48ff-956d-02c5005515a2
    Bridge br-in                            #虚拟交换机
        Port br-in                          #虚拟交换机上端口
            Interface br-in                 #端口上的配置
                type: internal              #类型:内部类型
    ovs_version: "1.10.0"


ovs-vsctl常用命令:

show: ovsdb配置内容查看

add-br NAME:添加桥设备;

list-br: 显示所有已定义BRIDGE

del-br BRIDGE: 删除桥


add-port BRIDGE PORT: 将PORT添加至指定的BRIDGE

list-ports BRIDGE: 显示指定BRIDGE上已经添加的所有PORT

del-port [BRIDGE] PORT: 从指定BRIDGE移除指定的PORT


/etc/if-up脚本:

#!/bin/bash
#
bridge=br-in
if [ -n "$1" ]; then
    ip link set $1 up
    sleep 1
    ovs-vsctl add-port $bridge $1
    [ $? -eq 0 ] && exit 0 || exit 1
else
    echo "Error: no port specified."
    exit 2
fi


/etc/if-down脚本:

#!/bin/bash
#
bridge=br-in
if [ -n "$1" ]; then
    ip link set $1 down
    sleep 1
    ovs-vsctl del-port $bridge $1
    [ $? -eq 0 ] && exit 0 || exit 1
else
    echo "Error: no port specified."
    exit 2
fi


三、GRE:

GRE:Generic Routing Encapsulation

     通用路由封装;是一种隧道技术;

 将常见的网络协议基于Ip包封装起来,