本文主要介绍Open VSwitch - 虚拟交换机的概述内容,阅读本文可以对OVS(Open VSwitch)有一个大致的了解。那么本文主要回答了这样几个问题:
一、 Open VSwitch是什么
所以OVS是一个虚拟交换机,可以用来组成虚拟网络,虚拟机还有其他的类型不同的架构。
二、虚拟网络
浅显的理解就是 使用虚拟交换机组成的网络,就是虚拟网络(和物理网络相比) ,如图所示: 绿色虚线内组成的就是一个虚拟网络了。其虚拟机之间的信息交换都通过虚拟交换机。
三、 OVS组件
有了全局的概念后,我们来详细了解OVS的内部组件。简单来看,OVS由这三大部分构成:
1. ovsdb-sever: OVS的数据库服务器,用来存储虚拟交换机的配置信息。它于manager和ovs-vswitchd交换信息使用了OVSDB(JSON-RPC)的方式。
3. ovs kernel module: OVS的内核模块,处理包交换和隧道,缓存flow,如果在内核的缓存中找到转发规则则转发,否则发向用户空间去处理。
四、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的配置;
ovsdbmonitor GUI工具,可以远程获取OVS数据库和OpenFlow的流表。
ovs-openflowd:一个简单的OpenFlow交换机;
ovs-controller:一个简单的OpenFlow控制器;
ovs-ofctl 查询和控制OpenFlow交换机和控制器;
ovs-pki :OpenFlow交换机创建和管理公钥框架;
ovs-tcpundump:tcpdump的补丁,解析OpenFlow的消息;
内核模块实现了多个“数据路径”(类似于网桥),每个都可以有多个“vports”(类似于桥内的端口)。每个数据路径也通过关联一下流表
(flow table)来设置操作,而这些流表中的流都是用户空间在报文头和元数据的基础上映射的关键信息,一般的操作都是将数据包转发
到另一个vport。当一个数据包到达一个vport,内核模块所做的处理是提取其流的关键信息并在流表中查找这些关键信息。当有一个匹配
的流时它执行对应的操作。如果没有匹配,它会将数据包送到用户空间的处理队列中(作为处理的一部分,用户空间可能会设置一个流
五、示例
由于对虚拟交换机还不了解怎么应用,所以示例有点简单。以后再补充。
转自:http://blog.youkuaiyun.com/sqx2011/article/details/39344869