OVS三大部分
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,如果在内核的缓存中找到转发规则则转发,否则发向用户空间去处理。
来自 <https://blog.csdn.net/weixin_41738417/article/details/85226302>
当前最新代码包主要包括以下模块和特性:
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信息。
来自 <https://blog.csdn.net/weixin_41738417/article/details/85226302>
1.安装openvswitch
使用yum安装openvswitch服务
启动服务
查看安装的版本
[root@controller ~]# ovs-ofctl --version
2.ovs-vsctl命令
add-br 创建网桥
#创建网桥br0
[root@controller ~]# ovs-vsctl add-br br0
list-br 列出网桥
#列出所有网桥
[root@controller ~]# ovs-vsctl list-br
br0
add-port 网桥添加端口
#将网卡eno33554960添加到网桥br0
[root@controller ~]# ovs-vsctl add-port br0 eno33554960
list-ports 列出网桥的所有端口
#列出网桥br0上的所有端口
[root@controller ~]# ovs-vsctl list-ports br0
eno33554960
port-to-br查看端口连接网桥
#列出ens33端口连接着哪个网桥
[root@controller ~]# ovs-vsctl port-to-br eno33554960
br0
show 查看openvswitch状态
[root@controller ~]# ovs-vsctl show
36e452be-7323-4c2f-9caa-4eb9a58c608e
Bridge "br0"
Port "eno33554960"
Interface "eno33554960"
Port "br0"
Interface "br0"
type: internal
ovs_version: "2.5.0"
del-port 删除端口
可带参数<网桥名>,则删除指定网桥的端口
若无参数<网桥名>,则默认删除所有连接着该端口的网桥端口
del-br 删除网桥
#删除网桥br1
[root@controller ~]# ovs-vsctl del-br br1
list interface 列出端口信息
3.其他配置
#将br1桥中的ens33接口配置为VLAN100的access接口
[root@controller ~]# ovs-vsctl set port eno33554960 tag=100
[root@controller ~]# ovs-vsctl show
36e452be-7323-4c2f-9caa-4eb9a58c608e
Bridge "br0"
Port "eno33554960"
tag: 100
Interface "eno33554960"
Port "br0"
Interface "br0"
type: internal
ovs_version: "2.5.0"
#配置br1桥的ens33接口为vlan100,120的trunk
[root@controller ~]# ovs-vsctl set port eno33554960 trunk=100,120
[root@controller ~]# ovs-vsctl show
36e452be-7323-4c2f-9caa-4eb9a58c608e
Bridge "br0"
Port "eno33554960"
trunks: [100, 120]
Interface "eno33554960"
Port "br0"
Interface "br0"
type: internal
ovs_version: "2.5.0"