一、概况
随着服务器虚拟化威廉希尔官方网站 的发展,网络虚拟化也需要解决从NIC到虚机的“最后一公里”问题,便产生了许多虚拟交换机开源方案:Open vSwitch、Snabb Switch 和 Lagopus,其中Open vSwitch的知名度最高。
Open vSwitch项目早在2009年,就已孵化诞生,于2012年7月30日发布第一个开源版本V1.7.0,内核datapath已经被纳入Linux内核作为发行版的一部分。
二、工作原理
1.组件
l ovsdb-server将配置信息保存在conf.db中,并通过db.sock提供服务,ovs-vswitchd通过这个db.sock从这个进程读取配置信息。
l ovs-vswitchd: OVS守护进程,实现基于流的交换(flow-based switching)。与controller通信使用OpenFlow协议,与ovsdb-server通信使用OVSDB协议,与内核模块使用netlink机制通信。
l ovsdb-server: OVS轻量级的数据库服务器,用于保存整个OVS的配置信息。
l Forwarding Path(数据通路):Datapath把流的match和action结果缓存,避免后续同样的流继续upcall到用户空间进行流表匹配。
2.工作流程
①OVS的datapath接收到从OVS连接的某个网络设备发来的数据包,从数据包中提取源/目的IP、源/目的MAC、端口等信息。
②OVS在内核状态下查看流表结构(通过Hash),观察是否有缓存的信息可用于转发这个数据包。
③假设数据包是这个网络设备发来的第一个数据包,在OVS内核中,将不会有相应的流表缓存信息存在,那么内核将不会知道如何处置这个数据包。所以内核将发送upcall给用户态。
④位于用户态的ovs-vswitchd进程接收到upcall后,将检查数据库以查询数据包的目的端口是哪里,然后告诉内核应该将数据包转发到哪个端口,例如eth0。
⑤内核执行用户此前设置的动作。即内核将数据包转发给端口eth0,进而数据被发送出去。
三、命令接口
1.Open vSwitch提供了ovs-vsctl、ovs-ofctl、ovs-dpctl等命令,详情如下:
l ovs-vsctl:管理ovsdb-server的配置,提供OVSDB的配置方法,包括创建和删除网桥、端口等;
l ovs-ofctl:提供ovs-vswitchd的流表配置方法;
l ovs-dpctl:配置OVS内核模块,提供缓存流表的操作方法;
l ovsdb-tool:创建和管理OVSDB。
- 命令示例
(1)网桥管理
命令 | 功能 |
---|---|
ovs-vsctl show | 显示OVS信息 |
ovs-vsctl add-brbr-name | 添加新的网桥br-name |
ovs-vsctl del-brbr-name | 删除br-name |
ovs-vsctl list-br | 显示网桥br-name信息 |
ovs-vsctl list-portsbr-name | 显示网桥br-name中所有port信息 |
ovs-vsctl add-portbr-name port-no | br-name添加端口 |
ovs-vsctl del-portbr-name port-no | 删除br-name上的端口 |
ovs-vsctl get-controllerbr-name | 获取br-name连接控制器的信息 |
ovs-vsctl del-controllerbr-name | 删除br-name连接控制器的信息 |
ovs-vsctl set-controller *br-name *tcp: [ip] : [port] | br-name网桥连接控制器controller |
(2)流表管理
命令 | 功能 |
---|---|
ovs-ofctl showbr-name | 输出OpenFlow信息。 |
ovs-ofctl add-flowbr-name flow | 添加流表项。 |
ovs-ofctl add-flowsbr-name filename | 以文件形式批量添加流表项。 |
ovs-ofctl del-flowsbr-name flow | 删除交换机的流表项。 |
-
交换机
+关注
关注
21文章
2638浏览量
99548 -
服务器虚拟化
+关注
关注
0文章
6浏览量
7711 -
NIC
+关注
关注
0文章
23浏览量
12417 -
网络虚拟化
+关注
关注
0文章
11浏览量
2942
发布评论请先 登录
相关推荐
怎样在ls1046的板子上安装Open vSwitch软件呢
Open Universal Serial Bus Driv
介绍OVN中的新功能
在单独的Docker容器中运行TestPMD和PKTGEN
用DPDK构建开放式V交换机并准备启动开放式交换机
用DPDK打开虚拟交换机创建NFV的要求和步骤
用DPDK启动VCwitter并配置端口
用DPDK支持构建和启动DOCKER容器
Xilinx 宣布加入 Open RAN 政策联盟
四家运营商携手把open RAN作为未来通信网络的首选威廉希尔官方网站 部署

基于Linux的虚拟交换机Open vSwitch项目
SDNLAB威廉希尔官方网站 分享:Open vSwitch匹配处理流程和拓展性

评论