• 【博客446】ovs控制工具的区别和使用


    ovs控制工具的区别和使用

    ovs-vsctl

    ovs-vsctl是一个管理或配置ovs-vswitchd的高级命令行工具,高级是说其操作对用户友好,封装了对数据库的操作细节。它是管理OVS最常用的命令,除了配置flows之外,其它大部分操作比如Bridge/Port/Interface/Controller/Database/Vlan等都可以完成

    example:

    #添加网桥br0
    ovs-vsctl add-br br0
    #列出所有网桥 
    ovs-vsctl list-br
    #添加一个Port p1到网桥br0
    ovs-vsctl add-port br0 p1
    #查看网桥br0上所有Port   
    ovs-vsctl list-ports br0
    #获取br0网桥的OpenFlow控制器地址,没有控制器则返回空 
    ovs-vsctl get-controller br0
    #设置OpenFlow控制器,控制器地址为192.168.1.10,端口为6633
    ovs-vsctl set-controller br0 tcp:192.168.1.10:6633
    #移除controller
    ovs-vsctl del-controller br0
    #删除网桥br0
    ovs-vsctl del-br br0
    #设置端口p1的vlan tag为100
    ovs-vsctl set Port p1 tag=100
    #设置Port p0类型为internal
    ovs-vsctl set Interface p0 type=internal
    #添加vlan10端口,并设置vlan tag为10,Port类型为Internal
    ovs-vsctl add-port br0 vlan10 tag=10 -- set Interface vlan10 type=internal
    #添加隧道端口gre0,类型为gre,远端IP为1.2.3.4
    ovs-vsctl add-port br0 gre0 -- set Interface gre0 type=gre options:remote_ip=1.2.3.4 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    ovsdb-tool

    ovsdb-tool是一个专门管理OVS数据库文件的工具,不常用,它不直接与ovsdb-server进程通信

    example:

    #可以使用此工具创建并初始化database文件
    ovsdb-tool create [db] [schema]
    #可以使用ovsdb-client get-schema [database]获取某个数据库的schema(json格式)
    #可以查看数据库更改记录,具体到操作命令,这个比较有用   
    ovsdb-tool show-log -m   
    record 48: 2017-01-07 03:34:15.147 "ovs-vsctl: ovs-vsctl --timeout=5 -- --if-exists del-port tapcea211ae-10"
            table Interface row "tapcea211ae-10" (151f66b6):
                    delete row
            table Port row "tapcea211ae-10" (cc9898cd):
                    delete row
            table Bridge row "br-int" (fddd5e27):
            table Open_vSwitch row a9fc1666 (a9fc1666):
    
    record 49: 2017-01-07 04:18:23.671 "ovs-vsctl: ovs-vsctl --timeout=5 -- --if-exists del-port tap5b4345ea-d5 -- add-port br-int tap5b4345ea-d5 -- set Interface tap5b4345ea-d5 "external-ids:attached-mac=\"fa:16:3e:50:1b:5b\"" -- set Interface tap5b4345ea-d5 "external-ids:iface-id=\"5b4345ea-d5ea-4285-be99-0e4cadf1600a\"" -- set Interface tap5b4345ea-d5 "external-ids:vm-id=\"0aa2d71e-9b41-4c88-9038-e4d042b6502a\"" -- set Interface tap5b4345ea-d5 external-ids:iface-status=active"
            table Port insert row "tap5b4345ea-d5" (4befd532):
            table Interface insert row "tap5b4345ea-d5" (b8a5e830):
            table Bridge row "br-int" (fddd5e27):
            table Open_vSwitch row a9fc1666 (a9fc1666):
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    ovsdb-client

    ovsdb-client是ovsdb-server进程的命令行工具,主要是从正在运行的ovsdb-server中查询信息,操作的是数据库相关

    example:

    #列出主机上的所有databases,默认只有一个库Open_vSwitch
    ovsdb-client list-dbs
    #获取指定数据库的schema信息
    ovsdb-client get-schema [DATABASE]
    #列出指定数据库的所有表
    ovsdb-client list-tables [DATABASE]
    #dump指定数据库所有数据,默认dump所有table数据,如果指定table,只dump指定table数据  
    ovsdb-client dump [DATABASE] [TABLE]
    #监控指定数据库中的指定表记录改变  
    ovsdb-client monitor DATABASE TABLE
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    ovs-ofctl

    ovs-ofctl是专门管理配置OpenFlow交换机的命令行工具,我们可以用它手动配置OVS中的OpenFlow flows,注意其不能操作datapath flows和”hidden” flows

    example:

    #查看br-tun中OpenFlow flows
    ovs-ofctl dump-flows br-tun
    #查看br-tun端口信息   
    ovs-ofctl show br-tun
    #添加新的flow:对于从端口p0进入交换机的数据包,如果它不包含任何VLAN tag,则自动为它添加VLAN tag 101
    ovs-ofctl add-flow br0 "priority=3,in_port=100,dl_vlan=0xffff,actions=mod_vlan_vid:101,normal"
    #对于从端口3进入的数据包,若其vlan tag为100,去掉其vlan tag,并从端口1发出 
    ovs-ofctl add-flow br0 in_port=3,dl_vlan=101,actions=strip_vlan,output:1
    #添加新的flow: 修改从端口p1收到的数据包的源地址为9.181.137.1,show 查看p1端口ID为100   
    ovs-ofctl add-flow br0 "priority=1 idle_timeout=0,in_port=100,actions=mod_nw_src:9.181.137.1,normal"
    #添加新的flow: 重定向所有的ICMP数据包到端口 p2
    ovs-ofctl add-flow br0 idle_timeout=0,dl_type=0x0800,nw_proto=1,actions=output:102
    #删除编号为 100 的端口上的所有流表项   
    ovs-ofctl del-flows br0 "in_port=100"  
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    summary

    ovs-vsctl是一个综合的配置管理工具,ovsdb-client倾向于从数据库中查询某些信息,而ovsdb-tool是维护数据库文件工具

  • 相关阅读:
    工程总承包系列之工程总承包合同中的优先受偿权
    vmware配置静态ip
    制作一个简单HTML宠物猫网页(HTML+CSS)
    drawio简介以及下载安装
    Python3,选择Python自动安装第三方库,从此跟pip说拜拜!!
    19c集群 两节点时间相差太大导致集群异常
    Cent OS 7下部署zabbix5.0
    react生命周期新旧对比
    Python - PEP572: 海象运算符
    SD2350D系列 采用CMOS 工艺制造的静态电流极低的VFM开关型DC/DC升压转换器。
  • 原文地址:https://blog.csdn.net/qq_43684922/article/details/126331747