虚拟交换机----》openvswitch

1.openvswitch的原理
    原理讲解:
   当我们创建一个交换机(网桥)之后即(ovs-vsctl add-br brname),此时网络功能不受影响,但是会产生一个虚拟网卡,名字为brname(与网桥名字同名,可以使用ifconfig brname查看),之所以会产生一个虚拟网卡,是为了实现接下来的网桥(交换机)功能,有了这个交换机以后,还需要为这个交换机增加端口(port),一个端口就相当于一个物理网卡,当网卡加入到这个交换机之后,其工作方式就和普通交换机的一个端口的工作方式类似了;
  再执行(ovs-vsctl add-port brname port)之后,即网卡加入网桥之后,按照网桥的工作标准工作,则加入的端口(网卡)必须以混杂模式工作,工作在链路层,处理2层的帧,所以这个port就不需要配置IP的(应该没有见过哪个交换机的端口有IP的吧)
 那么接下来你可能会问,通常的交换机不都是有一个管理接口,通过telnet到交换机上进行配置的,那么在OVS中创建的虚拟机有没有该接口呢,有的!上面提到创建交换机brname的时候产生了一个虚拟网口brname,那么,给这个虚拟网卡配置了ip之后,就相当于给交换机的管理接口配置了IP,对此一个正常的虚拟交换机就搞定了!!
                root@localhost:~# ovs-vsctl add-br brname
                root@localhost:~# ovs-vsctl show
                bc12c8d2-6900-42dd-9c1c-30e8ecb99a1b
                Bridge "brname"
                    Port "eth0"
                        Interface "eth0"
                    Port "brname"
                        Interface "brname"
                            type: internal
                ovs_version: "1.4.0+build0"
    除此之外,与网桥同名的网卡(端口)起到了桥的功能;
    在这种某一台物理机器的虚拟化环境中,一个虚拟交换机(vswitch)主要有如下两个作用:
        1)传递虚拟机VM之间的流量
        2)实现VM和外界网络的通信。
2.术语和逻辑概念
    1)Bridge:即网桥,在Openvswitch中每个虚拟交换机(vswitch)都可以认为是一个网桥,因为Openvswitch在底层的通信是借助了网桥模块来实现的,同时我们通过brctl show也能查看到ovs所创建的网桥设备。
                        brctl  show
    2)Datapath:即数据通路,在Openvswitch中每个Bridge我们都可以理解为Datapath,也就是说Datapath就是虚拟交换机。
                        ovs-dpctl show 可以查看datepath
    每个Datapath项中我们都能看到存在几个Port项,它们其实就是虚拟交换机(datapath)上的端口。如在网桥br-tun项中,port2就与远端的端口建立了gre隧道。
    3)Flowtable:即数据流表,根据之前对OpenFlow的介绍,我们已经了解了Openvswitch中利用openflow协议在实现虚拟交换机,而数据流表就是提供给Bridge/Datapath做数据操作的指令。
    4)Port:即端口,这里的端口是指虚拟交换机逻辑上的接口,我们可以通过ovs-vsctl命令查看各个网桥(即虚拟交换机)上的接入的端口。
    5)Patch:即连线,我们可以理解为传统交换机的Trunk,在这里就是网络节点和运算节点间ovs虚拟交换的联结。通过ovs-vsctl的type字段查看。
    6)Tun/Tap:它们是Linux/Unix系统中的虚拟网络设备,TAP等同于以太网设备,操作L2层数据链路层的数据帧;TUN则是模拟L3网络层的设备,操作网络层的IP数据包。
    在OVS中,其GRE隧道模式在底层的实现是由TUN支持的,而TAP设备则是用来分隔openvswitch中不同的subnet。
    如下,网络节点上1个TAP设备接入在br-int虚拟交换机中。可以使用ifconfig查看这个tap设备。我们可以看到TAP设备的IP地址是在Openvswitch中创建的2个subnet网络的网关地址。
        [root@opencos ~]# brctl show
        bridge name    bridge id        STP enabled    interfaces
        qbr056a711e-b2        8000.e600e8981160    no        qvb056a711e-b2
                                                        tap056a711e-b2
        
    7)Vnet:即虚拟机的虚拟网卡,在运算节点上可以看到OVS对于vnet的管理和传统的网桥模式不同,根据对设备物理地址的判断,应该是OVS采用了相应的tunneling技术,具体不详。
3.Open vSwitch架构与组件:三大部分
    ovsdb-sever: OVS的数据库服务器,用来存储虚拟交换机的配置信息。它与manager和ovs-vswitchd交换信息使用了OVSDB(JSON-RPC)的方式。
    ovs-vswitchd: OVS的核心部件,它和上层controller通信遵从openflow协议,它与ovsdb-server通信使用OVSDB协议,它和内核模块通过netlink通信,它支持多个独立的datapath(网桥),它通过更改flow table实现了绑定,和VLAN等功能。
    ovs kernel module: OVS的内核模块,处理包交换和隧道,缓存flow,如果在内核的缓存中找到转发规则则转发,否则发向用户空间去处理。
    OVS到底由哪些模块组成,以及个模块的作用。如下所示:
            ovs-vswitchd: 主要模块,实现switch的daemon,包括一个支持流交换的Linux内核模块;
            ovsdb-server: 轻量级数据库服务器,提供ovs-vswitchd获取配置信息,例如vlan、port等信息;
            ovs-brcompatd: 让ovs-vswitch替换linux bridge,包括获取bridge ioctls的Linux内核模块;
            ovs-dpctl:用来配置switch内核模块;
            ovs-vsctl: 查询和更新ovs-vswitchd的配置;
            ovs-appctl: 发送命令消息,运行相关daemon;
            ovs-ofctl: 查询和控制OpenFlow交换机和控制器;
            ovs-openflowd:一个简单的OpenFlow交换机;
            ovs-controller:一个简单的OpenFlow控制器;
            ovs-pki:OpenFlow交换机创建和管理公钥框架;
            ovs-tcpundump:tcpdump的补丁,解析OpenFlow的消息;
ovs-bugtool:管理openvswitch的bug信息。
4. ovs-vsctl使用指南

    vos-vsctl命令格式:
    usage: ovs-vsctl [OPTIONS] COMMAND [ARG...]
 
常见的OPTIONS有以下组成:
        --db=DATABASE :指定连接的数据库,默认是unix:/var/run/openvswitch/db.sock
        --no-wait: 在使用时不等待ovs-vswitchd的重新配置
        --retry:不断尝试连接远端服务器
        --t,-timeout=SECS: 等待ovs-vswitchd的超时时间
        --dry-run: 尝试运行修修改的配置但是不提交到ovsdb-vswitch数据库
        --oneline:将打印出的命令一行一行的显示
        -h,--help: 显示帮助信息
        -V,--version:显示版本信息
        常用的COMMAND有以下几类:


    OpenvSwitch的维护命令:
        init:初始化ovsdb-vswitch数据库
        show:查看数据信息
        emer-reset: 重新设置openvswitch的状态

OpenvSwitch对桥设备操作相关的命令:
add-br BRIDGE :添加一个桥设备
add-br BRIDGE PARENT VLAN:在PARENT中创建一个桥,并做vlan标记
del-br BRIDGE: 删除一个桥设备
list-br: 查看创建的桥设备
br-exists BRIDGE: 判断新创建的桥是否已经存在
br-to-vlan BRIDGE: 列出桥设备的所有的valn
br-to-parent BRIDGE: 列出当前桥的上一个桥设备
br-set-external-id BRIDGE KEY VALUE: 给桥添加额外的属性,方式为 key vllue格式
br-set-external-id BRIDGE KEY:撤销桥设备额外的信息
br-get-external-id BRIDGE KEY:列出桥设备额外的信息
br-get-external-id BRIDGE :以key-value格式列出桥设备的额外信息

OpenvSwitch对端口的操作命令:
list-ports BRIDGE: 列出指定桥设备上的端口
add-ports BRIDGE PORT :添加一个端口到桥设备,此端口可以事先不存在
add-bond BRIDGE PORT IFACE...: 对桥设备做多端口绑定
del-port [BRIDGE] PORT: 删除一个端口或者删除一个指定桥设备上的端口
port-to-br PORT:列出端口所在的桥设备

OpenvSwitch对接口操作的命令: 
list-ifaces BRIDGE: 列出桥设备上的所有接口
iface-to-br IFACE:  列出接口所在的桥设备

OpenvSwitch的控制命令:
get-contorller BRIDGE: 获取桥设备的控制器
del-contorller BRIDGE: 删除桥设备的控制器
set-contorller BRIDGE TARGET...:给桥设备设置一个控制器
get-fail-mode BRIDGE: 显示桥设备错误的模式
del-fail-mode BRIDGE: 删除桥设备错误的模式
set-fail-mode BRIDGE MODE: 设置桥设备失败的模式为MODE

OpenvSwitch管理相关的命令:
get-manager: 列出openvswitch的管理者
del-manager:删除openvswitch的管理者
set-manager TARGET....:设置管理者列表为TARGET

OpenvSwitch安全相关的命令:
get-ssl:获取ssl的配置信息
del-ssl: 删除ssl的配置信息
set-ssl PRIV-KEY CERT CA-CERT: 配置ssl
 
OpenvSwitch交换相关的命令:
emer-rest: 重新设置未知交换机的状态

OpenvSwitch数据库操作相关命令:
listTBL [REC]: 列出TBL的资源记录信息(ovs-vsctl list port )
findTBL CONDITION....:查找相关的资源记录信息
getTBL REC COL[:KEY]:获取TBL的信息
setTBL REC COL[:KEY]=VALUE:设定TBL的额外属性(ovs-vsctl set Port br1 tag=2)
addTBL REC COL [KEY=]VALUE:添加一个[key=]value到TBL
remove TBL REC COL [KEY=]VALUE:删除TBL中的一个key值(ovs-vsctlremove Port br1 tag 2)
clearTBL REC COL: 清除指定TBL的资源记录信息
create TBL COL [:KEY]=VALUE:在TBL中创建一个资源记录信息
destroy TBL REC:销毁一个TBL的REC
wait-until TBL REC [COL[:KEY]=VALUE]:等待TBL资源记录配置完成

常用的ARG参数:
连接主数据库的方法:
tcp:IP:PORT: 指定连接远端数据库使用tcp协议,以及远端主数据库的ip地址跟端口
ssl:IP:PORT: 指定连接远端数据库使用ssl协议,以及远端主数据库的ip地址跟端口
unix:FILE:使用socket套接字连接主数据库

扫描二维码关注公众号,回复: 2746346 查看本文章

备用数据库的连接方法:
ptcp:IP:PORT: 指定连接远端数据库使用tcp协议,以及远端备用数据库的ip地址跟端口
pssl:IP:PORT: 指定连接远端数据库使用ssl协议,以及远端备用数据库的ip地址跟端口
punix:FILE:使用socket套接字连接备用数据库

PKI配置:
-p,--private-key=FILE: 指定私有秘钥的位置
-c,--certificate=FILE:指定证书的位置
-C,ca-cert=FILE:指定对端证书的

猜你喜欢

转载自blog.csdn.net/hzj_001/article/details/81587905