OVS-交换机
https://www.cnblogs.com/goldsunshine/p/11527928.html
- ovs-vswitchd:ovs守护进程,实现基于流的交换,实现内核datapath upcall 处理以及ofproto 查表,同时是dpdk datapath处理程序。与ovsdb-server通信使用OVSDB协议,与内核模块使用netlink机制通信,与controller通信使用OpenFlow协议。
- ovsdb-server:OVS轻量级的数据库服务器的服务程序,用于保存整个OVS的配置信息。数据库服务程序, 使用目前普遍认可的ovsdb 协议。
- ovs-vsctl:网桥、接口等的创建、删除、设置、查询等。
- ovs-dpctl:配置vswitch内核模块
- ovs-appctl:发送命令消息到ovs-vswithchd, 查看不同模块状态
- ovs-ofctl:下发流表信息。该命令可以配置其他openflow 交换机(采用openflow 协议)
- datapath: Datapath把流的match和action结果缓存,避免后续同样的流继续upcall到用户空间进行流表匹配。
- ovs-db:开放虚拟交换机数据库是一种轻量级的数据库,它是一个JSON文件,默认路径:/etc/openvswitch/conf.db;
OpenvSwitch:
ovs-ovsctl命令是对虚拟(软件)交换机上网桥和端口等信息进行配置的命令。这里首先需要说明一下ovs的概念中 ‘桥’ 这个词的意思就是指交换机。我们说创建一个网桥,其实说的意思就是创建一个交换机。而端口则是指交换机的网口
ovs-vsctl 获取或者更改ovs-vswitchd的配置信息,此工具操作的时候会更新ovsdb-server中的数据库
ovs-ofctl 操作交换机里的流表
ovsdb-tool 对ovsdb数据库操作,不经过ovsdb-server模块
ovs-vsctl
用于控制ovs db
ovs-ofctl
用于管理OpenFlow switch 的 flow
ovs-dpctl
用于管理ovs的datapath
ovs-appctl
用于查询和管理ovs daemon
1、root@compute-1:~# ovs-vsctl show #查看该主机有多少网桥/交换机,还有交换机版本
root@compute-3-99990001:~# ovs-vsctl show b23********34cb3397 ##UUID 该主机的id Bridge br-test Port br-exter Interface br-test type: internal
可以看到已经有创建好的网桥br-test了,Bridge br-test 指的是网桥br-test,那么在这个交换机中只有一个网口,是的,这个网口叫着port,即port br-test。为什么我们只创建了网桥并没有创建端口这里却有一个呢?其实这个端口就是常见的环回口。在我们的电脑上都有一个叫着localhost的端口,交换机中也会有一个和交换机同名的网口,都是指环回口
在上面创建好一个网桥之后默认有一个同名的port,使用下面的命令可以继续添加port。格式是:ovs-vsctl add-port 网桥名 端口名 。这里端口需要是存在机器上的网卡名
ovs-vsctl add-port br-test enp0s3 ##将网卡添加到br-test网桥上
ovs-vsctl del-port br-test enp0s3 ##将网卡从网桥上删除
ovs-vsctl del-br br-test ##删除网桥,也会把网桥中所有端口删除
root@compute-1:~# ovs-vsctl list interface dpdk0 #查看网口信息
ovs-vsctl list bridge s1 查看网桥信息
ovs-vsctl list port s1 s1-eth1 查看端口信息
当创建网桥之后网桥自带一个类型为Internal的port,该port就是一个虚拟网卡。使用ifconfig能够查看得到
Port(重要) | OVS模拟的桥上的网口 |
Interface(重要) | 插入OVS模拟的网口的网络设备 |
Internal 类型可以看做每个OVS交换机有个可以用来处理数据报的本地端口,可以为这个网络设备配置 IP 地址。当创建ovs网桥时会自带一个同名的端口,该端口就是类型为Internal 端口。解决的思路就是Internal类型的port会生成一个虚拟网卡,将绑定到网桥的网卡的IP地址转移到该虚拟网卡上,然后配置路由即可
1. 添加两个虚拟端口,互为peer
ip link add mgmt-eth2 type veth peer name eth2-mgmt
ip link set mgmt-eth2 up
ip link set eth2-mgmt up
2. 把上面的两个端口加到桥上
ovs-vsctl add-port br-mgmt mgmt-eth2
修改ovs的数据库
ovs-vsctl set interface mgmt-eth2 type=patch
ovs-vsctl set interface mgmt-eth2 options:peer=eth2-mgmt
3. 把上面的两个端口加到桥上
ovs-vsctl add-port br-eth2 eth2-mgmt
ovs-vsctl set interface eth2-mgmt type=patch
ovs-vsctl set interface eth2-mgmt options:peer=mgmt-eth2
4. ovs-vsctl add-port br-eth2 eth2
注意通过上面的方法添加完后,会在ifconfig中把上面的新加的port(如:mgmt-eth2, eth2-mgmt)一并显示出来
上面的1~4可以用下面的步骤来代替,且新加的veth不会出现在ifconfig中:
ovs-vsctl add-br br-mgmt
ovs-vsctl add-br br-eth2
ovs-vsctl add-port br-mgmt mgmt-eth2 -- set Interface mgmt-eth2 type=patch options:peer=eth2-mgmt
使用选项
--if-exists
后,若欲删除的bridge不存在,该命令什么也不做,也不报错。
ovs-vsctl [--if-exists] del-br br0
ovs-vsctl list-br 查看已有网桥
https://www.cnblogs.com/goldsunshine/p/14260941.html --dpdk