ovs-vsctl简明用户手册(基于版本openvswitch-2.11.0-4.el7.x86_64)

ovs-vsctl简明用户手册(基于版本openvswitch-2.11.0-4.el7.x86_64)

ovs-vsctl 是一个用户命令行界面,可以用来操作ovs-vswitchd这个后台程序

1
#/usr/share/openvswitch/scripts/ovs-ctl start

1 操作虚拟网桥的命令.

1.1 初始化OVS数据库 (这个命令没有输出)

1
# ovs-vsctl init
  • 例子
    1
    # ovs-vsctl init

    1.2 输出当前OVS的状态, 比如你可以看到OVS网桥,端口(port),接口(interface)和对应的类型.

    1
    # ovs-vsctl show
  • 例子
    1
    2
    3
    4
    5
    6
    7
    8
    # ovs-vsctl show
    Bridge "samlee_br1"
    Port "samlee_br1"
    Interface "samlee_br1"
    type: internal
    Port "ens12"
    Interface "ens12"
    ovs_version: "2.11.0"

    1.3 重新启动OVS网桥 (这个命令没有输出)

    1
    # ovs-vsctl emer-reset
  • 例子
    1
    # ovs-vsctl emer-reset

    1.4 创建一个OVS网桥 (这个命令没有输出)

    1
    # ovs-vsctl  add-br BRIDGE_NAME
  • 例子 (add a bridge, named samlee_br1)
    1
    # ovs-vsctl add-br samlee_br1

    1.5 通过OVS父网桥创建一个桥中桥,并配上VLAN号(这个命令没有输出)

    1
    # ovs-vsctl add-br BRIDGE_NAME PARENT_BR_NAME VLAN
  • 例子
    1
    # ovs-vsctl add-br samlee_fake_br1 samlee_br1 200

    1.6 删除OVS网桥并同时删除附在上面的端口与接口(这个命令没有输出)

    1
    # ovs-vsctl del-br BRIDGE_NAME
  • 例子
    1
    # ovs-vsctl del-br tobedeleted_br1

    1.7 列出所有OVS网桥的名字

    1
    # ovs-vsctl list-br
  • 例子
    1
    2
    3
    # ovs-vsctl list-br
    samlee_br1
    samlee_fake_br1

    1.8 查询指定的OVS网桥是否存在,存在返回0,否则返回2(这个命令没有输出,我们通过echo来获得输出)

    1
    # ovs-vsctl br-exists BRIDGE_NAME
  • 例子
    1
    2
    # ovs-vsctl br-exists samlee_br1 ; echo $?
    0
    1
    2
    # ovs-vsctl br-exists samlee_br2 ; echo $?
    2

    1.9 查看指定的VLAN在那个OVS网桥上面(这个命令输出VLAN ID)

    1
    # ovs-vsctl br-to-vlan BRIDGE_NAME
  • 例子
    1
    2
    # ovs-vsctl br-to-vlan samlee_fake_br1
    200

    1.10 查看指定OVS网桥的父网桥名字(这个命令会输出父网桥的名字)

    1
    # ovs-vsctl br-to-parent BRIDGE_NAME
  • 例子
    1
    2
    # ovs-vsctl br-to-parent samlee_fake_br1
    samlee_br1

    1.11 给指定的OVS网桥设置键值对; 这些键值对可以用来给指定OVS网桥作为标示(这个命令没有输出)

    1
    # ovs-vsctl BRIDGE_NAME KEY VALUE
  • 例子
    1
    # ovs-vsctl br-set-external-id samlee_fake_br1 priority 3

    1.12 清除指定OVS网桥的键值对(这个命令没有输出)

    1
    # ovs-vsctl br-set-external-id BRIDGE_NAME KEY
  • 例子
    1
    ovs-vsctl br-set-external-id samlee_fake_br1 priority

    1.13 输出指定OVS网桥的键值对的值 (这个命令输出键值)

    1
    # ovs-vsctl br-get-external-id BRIDGE_NAME KEY
  • 例子
    1
    2
    # ovs-vsctl br-get-external-id samlee_fake_br1 priority
    3

    1.14 输出指定OVS网桥的键值对 (这个命令输出键值对)

    1
    # ovs-vsctl br-get-external-id BRIDGE_NAME
  • 例子
    1
    2
    # ovs-vsctl br-get-external-id samlee_fake_br1
    priority=3

    2 端口操作命令(注意:默认每一个OVS网桥都有一个与之同名的端口, 一个聚合端口(bond)被看做一个端口)

2.1 列出指定OVS网桥上面的所有的端口(这个命令将输出端口的名字)

1
# ovs-vsctl list-ports BRIDGE_NAME
  • 例子
    1
    2
    # ovs-vsctl list-ports samlee_br1
    ens12

    2.2 给指定的OVS网桥添加一个端 (这个命令没有输出)

    1
    # ovs-vsctl add-port BRIDGE_NAME PORT
  • 例子
    1
    # ovs-vsctl add-port samlee_br1 ens12

    2.3 给指定的OVS网桥添加一个聚合端口(bond)并且将指定的接口加入聚合端口(这个命令没有输出)

    1
    # ovs-vsctl add-bond BRIDGE_NAME PORT_NAME IFACE...
  • 例子
    1
    # ovs-vsctl add-bond samlee_br1 sam_bond0 ens11 ens12

    2.4 查看指定聚合端口(bond)的参数(这个命令将输出端口的参数)

1
# ovs-appctl bond/show BOND_PORT
  • 例子
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    # ovs-appctl bond/show sam_bond0
    ---- sam_bond0 ----
    bond_mode: active-backup
    bond may use recirculation: no, Recirc-ID : -1
    bond-hash-basis: 0
    updelay: 0 ms
    downdelay: 0 ms
    lacp_status: off
    lacp_fallback_ab: false
    active slave mac: 52:54:00:cf:9f:59(ens12)
    slave ens11: enabled
    may_enable: true
    slave ens12: enabled
    active slave
    may_enable: true

    2.5 从指定的OVS网桥上删除指定的端口(这个命令没有输出)

    1
    # ovs-vsctl del-port [BRIDGE_NAME] PORT
  • 例子
    1
    # ovs-vsctl del-port samlee_br1 ens12

    2.6 通过指定端口查询它所在的OVS网桥(这个命令将输出网桥的名字)

    1
    # ovs-vsctl port-to-br PORT
  • 例子
    1
    2
    # ovs-vsctl port-to-br ens12
    samlee_br1

    2.7 给端口指定一个接口类型, 类型可以是常规类型,内部类型,对接类型和隧道类型(这个命令没有输出)

    1
    # ovs-vsctl set Interface PORT_NAME type=TYPE_NAME
  • 例子
    1
    # ovs-vsctl set Interface samlee_br1 type=internal

    TBD 2.8 给指定OVS网桥添加一个隧道. 隧道的类型可以是gre或者vxlan(比如,给网桥samlee_br1添加一个名字为samlee_tunnel的隧道.并且指定这个隧道的端口,接口名字为samlee_tunnel. 并且给接口指定IP地址. 其中vxlan的默认端口号是4789). (这个命令没有输出)

    1
    # ovs-vsctl add-port BRIDGE_NAME PORT_NAME -- set Interface INTERFACE_NAME type=TUNNEL_TYPE options:remote_ip=IPADDRESS
  • 例子
    1
    # ovs-vsctl add-port samlee_br1 samlee_tunnel -- set Interface samlee_tunnel type=gre options:remote_ip=200.200.200.200
    1
    # ovs-vsctl add-port samlee_br1 samlee_vxlan -- set Interface samlee_vxlan type=vxlan options:remote_ip=100.100.100.100 options:dst_port=4789

    3 接口操作命令(注意: 一个聚合端口(bond)包含多个接口):

3.1 列出指定OVS网桥上面的所有接口(这个命令将输出接口的名字)

1
# ovs-vsctl list-ifaces BRIDGE_NAME
  • 例子
    1
    2
    # ovs-vsctl list-ifaces samlee_br1
    ens12

    3.2 输出指定接口所在的OVS网桥(这个将输出网桥的名字)

    1
    # ovs-vsctl iface-to-br IFACE
  • 例子
    1
    2
    # ovs-vsctl iface-to-br ens12
    samlee_br1

    4 控制OVS网桥的相关命令.

  • ovs-vswitchd这个后台程序可以实现对OVS网桥,OVS交换机的本地管理. 同时,它也可以支持符合Open-Flow规范的外部Open‐Flow控制器的远程管理. 如果这个外部的Open‐Flow控制器失效,会造成OVS网桥和OVS交换机的丢包. 但是我们可以通过相应的配置来避免此类情况. 我们可以将fail-mode模式设置为standalone或者是secure. 在standalone模式下面,如果Open‐Flow控制器失效,在一个指定的时间间隔内,重试3次都没有收到Open‐Flow控制器的数据包,ovs-vswitchd这个后台程序将会重新接管,并以本地模式运行,此时OVS网桥和OVS交换机将不受影响. 而如果设置为secure模式,在Open‐Flow控制器失效时,ovs-vswitchd这个后台程序将不会重新接管, 而此时OVS网桥和OVS交换机将受到影响

4.1 查询当前OVS网桥的Open‐Flow控制器(这个命令将输出Open‐Flow控制器的名字)

1
# ovs-vsctl get-controller BRIDGE_NAME
  • 例子
    1
    2
    # ovs-vsctl get-controller samlee_br1
    tcp:127.0.0.1:6633

    4.2 删除当前OVS网桥的Open‐Flow控制器(这个命令没有输出)

    1
    # ovs-vsctl del-controller BRIDGE_NAME
  • 例子
    1
    # ovs-vsctl del-controller samlee_br1

    4.3 指定当前OVS网桥的Open‐Flow控制器 (这个命令没有输出)

    1
    # ovs-vsctl set-controller BRIDGE_NAME TARGET...
  • 例子
    1
    # ovs-vsctl set-controller samlee_br1 tcp:127.0.0.1:6633

    4.4 查询当前OVS网桥的Open‐Flow控制器的失效模式(这个命令将输出Open‐Flow控制器失效模式的名字)

    1
    # ovs-vsctl  get-fail-mode BRIDGE_NAME
  • 例子
    1
    2
    # ovs-vsctl get-fail-mode samlee_br1
    standalone

    4.5 删除当前OVS网桥的Open‐Flow控制器的失效模式 (这个命令没有输出)

    1
    # ovs-vsctl del-fail-mode BRIDGE_NAME
  • 例子
    1
    # ovs-vsctl del-fail-mode samlee_br1

    4.6 设置当前OVS网桥的Open‐Flow控制器的失效模式 (这个命令没有输出)

    1
    # ovs-vsctl set-fail-mode BRIDGE_NAME FAIL_MODE_NAME
  • 例子
    1
    # ovs-vsctl set-fail-mode samlee_br1 standalone

    5 OVS交换机的命令:

5.1 重新启动ovs交换机 (这个命令没有输出)

1
# ovs-vsctl emer-reset
  • 例子
    1
    # ovs-vsctl emer-reset
    
    

好, ovs-vsctl简明用户手册(基于版本openvswitch-2.11.0-4.el7.x86_64)就介绍完毕了. 想要了解更多?
也欢迎关注 addos 微信公众号获取更多 :-)