OVS简介

本文介绍了OpenvSwitch(OVS),一种高质量的多层虚拟交换机,支持多种虚拟化技术和网络自动化扩展。文章详细阐述了OVS的目的、支持的功能、内部组件及运行原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、OVS定义

Open vSwitch是一个高质量的、多层虚拟交换机,使用开源Apache2.0许可协议,由Nicira Networks开发,主要实现代码为可移植的C代码。

二、OVS目的

它的目的是让大规模网络自动化可以通过编程扩展,同时仍然支持标准的管理接口和协议(例如NetFlow, sFlow, SPAN, RSPAN, CLI, LACP, 802.1ag)。此外,它被设支持跨越多个物理服务器的分布式环境,类似于VMware的vNetwork分布式vswitch或Cisco Nexus 1000 V。Open vSwitch支持多种linux 虚拟化技术,包括Xen/XenServer, KVM和irtualBox。

虚拟交换:利用软件的方式形成交换部件,所以也叫软件交换机,跟传统的物理交换机相比,虚拟交换机要具备很多优点:1.配置灵活,因为是软件实现的,一台物理服务器上可以配置数十台或者数百台虚拟交换机,而且端口数目可以灵活选择  2. 成本低廉,通过软件的方式可轻易达到10Gbps的交换速度。所以OVS是一个虚拟交换机,可以用来组成虚拟网络,虚拟机还有其他的类型不同的架构。 

浅谈虚拟网络:使用虚拟交换机组成的网络,就是虚拟网络(和物理网络相比) ,如图所示:绿色虚线内组成的就是一个虚拟网络了。其虚拟机之间的信息交换都通过虚拟交换机。

 

三、Open vSwitch支持以下功能:

v 可以通过NetFlow,sFlow(R),IPFIX,SPAN,RSPAN和GRE隧道镜像查看VM间通信

v LACP(IEEE 802.1AX-2008)

v 带中继的标准802.1Q VLAN模型

v 播监听

v IETF自动附加SPBM和基本必需的LLDP支持

v BFD和802.1ag链路监控

v STP(IEEE 802.1D-1998)和RSTP(IEEE 802.1D-2004)

v 细粒度的QoS控制

v 支持HFSC qdisc

v 每个VM接口流量监管

v 带有源MAC负载平衡,活动备份和L4哈希的NIC绑定

v OpenFlow协议支持(包括许多虚拟化扩展)

v IPv6支持

v 多种隧道协议(GRE,VXLAN,STT和Geneve,具有IPsec支持)

v 具有C和Python绑定的远程配置协议

v 内核和用户空间转发引擎选项

v 具有流缓存引擎的多表转发管道

v 转发层抽象以简化向新软件和硬件平台的移植

四、OVS组件

有了全局的概念后,我们来详细了解OVS的内部组件。简单来看,OVS由这三大部分构成:

1. ovsdb-sever:  OVS的数据库服务器,用来存储虚拟交换机的配置信息。它与manager和ovs-vswitchd交换信息使用了OVSDB(JSON-RPC)的方式。

2. ovs-vswitchd: OVS的核心部件,它和上层controller通信遵从OPENFLOW协议,它与ovsdb-server通信使用OVSDB协议,它和内核模块通过netlink通信,它支持多个独立的datapath(网桥),它通过更改flow table实现了绑定,和VLAN等功能。

3. ovs kernel module: OVS的内核模块,处理包交换和隧道,缓存flow,如果在内核的缓存中找到转发规则则转发,否则发向用户空间去处理。

五、OVS结构详解

有个OVS大概的了解,我们看看OVS到底由哪些模块组成,以及各模块的作用。如图:

ovs-vswitchd 主要模块,实现switch的daemon,包括一个支持流交换的Linux内核模块;

ovsdb-server 轻量级数据库服务器,提供ovs-vswitchd获取配置信息;

ovs-brcompatd 让ovs-vswitch替换Linuxbridge,包括获取bridge ioctls的Linux内核模块;

ovs-dpctl 用来配置switch内核模块;一些Scripts and specs 辅助OVS安装在Citrix XenServer上,作为默认switch;

ovs-vsctl 查询和更新ovs-vswitchd的配置;

ovs-appctl 发送命令消息,运行相关daemon;

ovsdbmonitor GUI工具,可以远程获取OVS数据库和OpenFlow的流表。

此外,OVS也提供了支持OpenFlow的特性实现,包括

ovs-openflowd:一个简单的OpenFlow交换机;

ovs-controller:一个简单的OpenFlow控制器;

ovs-ofctl 查询和控制OpenFlow交换机和控制器;

ovs-pki :OpenFlow交换机创建和管理公钥框架;

ovs-tcpundump:tcpdump的补丁,解析OpenFlow的消息;

运行原理:

内核模块实现了多个“数据路径”(类似于网桥),每个都可以有多个“vports”(类似于桥内的端口)。每个数据路径也通过关联一下流表(flow table)来设置操作,而这些流表中的流都是用户空间在报文头和元数据的基础上映射的关键信息,一般的操作都是将数据包转发到另一个vport。当一个数据包到达一个vport,内核模块所做的处理是提取其流的关键信息并在流表中查找这些关键信息。当有一个匹配的流时它执行对应的操作。如果没有匹配,它会将数据包送到用户空间的处理队列中(作为处理的一部分,用户空间可能会设置一个流用于以后碰到相同类型的数据包可以在内核中执行操作)。

原文链接:https://mp.weixin.qq.com/s/F1sqTpnHaXuIT0uhau4Cyg

 

 

### OVS与Floodlight在SDN环境中的集成 #### Floodlight控制器简介 Floodlight是一个开源的Java SDN控制器,支持多种南向接口协议,其中最常用的是OpenFlow。通过这些协议,Floodlight能够管理和控制底层的数据平面设备,如交换机和路由器。 #### Open vSwitch (OVS)概述 OVS是一种高质量、多层虚拟交换技术,专为大规模网络部署而设计。它不仅兼容标准管理接口,还实现了广泛的Linux特性集[^2]。作为一款强大的虚拟交换解决方案,OVS可以被配置成传统二层交换模式运行,也可以配合像Floodlight这样的外部控制器工作,在这种情况下,OVS充当转发面的角色,所有的流表项都由控制器动态下发。 #### 集成方式 为了使OVS与Floodlight协同运作,通常需要完成以下几个方面的设置: - **安装并启动Floodlight** 安装好JDK和其他依赖库之后,可以从GitHub下载最新版本的Floodlight源码编译打包得到war包文件,将其放置于Tomcat服务器webapps目录下即可自动解压部署;或者直接利用官方提供的预构建镜像来快速搭建测试环境。 - **配置OVS连接至Floodlight** 使用`ovs-vsctl set-controller br0 tcp:<controller-ip>:6653`命令让指定网桥监听来自特定IP地址上的Floodlight实例所发出的消息端口,默认是6653。这一步骤建立了两者之间的通信渠道,使得后续交互成为可能[^1]。 - **验证连通性** 可以借助mininet工具创建简单的拓扑结构来进行初步的功能检测。一旦成功建立关联关系,则可以通过浏览器访问http://<floodlight-ip>:8080/wm/core/controller/switches/json查看当前已知节点列表以及其状态信息。 ```bash sudo ovs-vsctl show curl http://localhost:8080/wm/core/controller/switches/json ``` 当一切正常运转时,任何发往未知目的地MAC地址的数据帧都会触发ARP请求广播过程,并最终形成新的流条目存储于对应硬件资源之中待命执行匹配动作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值