文档详情

openvswtich交换机.docx

发布:2018-04-30约1.25万字共18页下载文档
文本预览下载声明
1 什么是OpenvSwitchOpenvSwitch,简称OVS是一个虚拟交换软件,主要用于虚拟机VM环境,作为一个虚拟交换机,支持Xen/XenServer, KVM, and VirtualBox多种虚拟化技术。OpenvSwitch还支持多个物理机的分布式环境。在这种某一台物理机器的虚拟化环境中,一个虚拟交换机(vswitch)主要有如下两个作用:传递虚拟机VM之间的流量以及实现VM和外界网络的通信。如下图所示:整个OVS代码用C写的。目前有以下功能:Standard 802.1Q VLAN model with trunk and access portsNIC bonding with or without LACP on upstream switchNetFlow, sFlow(R), and mirroring for increased visibilityQoS (Quality of Service) configuration, plus policingGRE, GRE over IPSEC, VXLAN, and LISP tunneling802.1ag connectivity fault managementOpenFlow 1.0 plus numerous extensionsTransactional configuration database with C and Python bindingsHigh-performance forwarding using a Linux kernel module2 OpenvSwitch的组成OVS的核心组件包括 ovsdb-server,ovs-vswitchd,ovs kernel module。如下图所示:运行原理:内核模块实现了多个“数据路径(DataPath)”(类似于网桥),每个都可以有多个“vports”(类似于桥内的端口)。每个数据路径也通过关联流表(flow table)来设置操作,而这些流表中的流都是用户空间在报文头和元数据的基础上映射的关键信息,一般的操作都是将数据包转发到另一个vport。当一个数据包到达一个vport,内核模块所做的处理是提取其流的关键信息并在流表中查找这些关键信息。当有一个匹配的流时它执行对应的操作。如果没有匹配,它会将数据包送到用户空间的处理队列中(作为处理的一部分,用户空间可能会设置一个流用于以后遇到相同类型的数据包可以在内核中执行操作)。细节如下图所示:除了核心组件,还包括一些管理工具,详细介绍如下:ovs-vswitchd:OVS守护进程是OVS的核心部件,实现交换功能,和Linux内核兼容模块一起,实现基于流的交换(flow-based switching)。它和上层 controller 通信遵从 OPENFLOW 协议,它与 ovsdb-server 通信使用 OVSDB 协议,它和内核模块通过netlink通信,它支持多个独立的 datapath(网桥),它通过更改flow table 实现了绑定和VLAN等功能。ovsdb-server:OVS轻量级的数据库服务器,用于整个OVS的配置信息,包括接口,交换内容,VLAN 等等。ovs-vswitchd 根据数据库中的配置信息工作。它于 manager 和 ovs-vswitchd 交换信息使用了OVSDB(JSON-RPC)的方式。ovs-dpctl:一个工具,用来配置交换机内核模块,可以控制转发规则。ovs-vsctl:主要是获取或者更改ovs-vswitchd的配置信息,此工具操作的时候会更新ovsdb-server中的数据库。ovs-appctl:主要是向OVS守护进程发送命令的,一般用不上。 a utility that sends commands to running Open vSwitch daemons (ovs-vswitchd)ovsdbmonitor:GUI工具来显示ovsdb-server中数据信息。(Ubuntu下是可以使用apt-get安装,可以远程获取OVS数据库和OpenFlow的流表)ovs-controller:一个简单的OpenFlow控制器ovs-ofctl:用来控制OVS作为OpenFlow交换机工作时候的流表内容。ovs-pki:OpenFlow交换机创建和管理公钥框架;ovs-tcpundump:tcpdump的补丁,解析OpenFlow的消息;brocompat.ko : Linux bridge compatibility moduleopenvswitch.ko : Open vSwitch switching datapath一些用用的OVS命令示例:sudo ovs-vsc
显示全部
相似文档