OVS

1.OVS简介

定义
Openswitch简称OVS,是一个多层的,高质量的开源虚拟交换机(网络分层的层)移植性好,主要部署在服务器上,相比传统交换机具有很好的编程扩展性,同时具备传统交换机实现的网络隔离和数据转发功能,运行在每个实现虚拟机的物理机器上,并提供远程管理。
目的
是通过编程扩展支持大规模网络自动化,同时还支持标准的管理接口和协议。
两大特点

  • 基于overlay(vxlan等)网络的思想设计
  • 基于OpenFlow

2.查找

OpenVSwitch实现了一个统一的查找算法:TSS(Tuple Space Search),这本质上是一个hash 查找算法,以减少Match所需要的时间。。
OpenFlow规则查找
通过这些 Tables 来控制网络包的流向和结构。
OVS_第1张图片

过程:

  • 1.对于任何需要经过OpenFlow处理的网络数据包,先将其源MAC,目的MAC,源IP,目的IP,源端口,目的端口hash成一个散列值,然后在OpenFlow规则对应的散列值中查找。
  • 2.在一个OpenFlow Table中,可能同时存在多种匹配类型,有的只匹配MAC地址,有的只匹配in_port,对于不同的Match,OpenVSwitch会将其分类,每一类Match构成一个hash
    table。
  • 3.一个OpenFlow Table里有多少种不同的Match,就会有多少个hash table。
  • 4.当一个网络包需要经过一个OpenFlow Table处理时,网络数据包会在所有的hash table中进行查找,如果匹配了一个hash table,那么就按照hash table里具体那一条规则的action执行;如果有多个hash table匹配,那么就看优先级,优先级高的胜出。
  • 5.如果所有的hash table都不匹配,那么网络包就通过netlink upcall机制从内核态通知用户态,发送给ovs-swithed来处理;
  • ovs-vswitchd 查询用户态精确流表和模糊流表,如果还不命中,在 SDN 控制器接入的情况下,经过 OpenFlow
    协议,通告给控制器,由控制器处理。
  • 如果模糊命中, ovs-vswitchd会同时刷新用户态精确流表和内核态精确流表,如果精确命中,则只更新内核态流表;刷新后,重新把该数据包注入给内核态 datapath 模块处理;datapath 重新发起选路,查询内核流表,匹配;报文转发,结束。 .

OVS_第2张图片

3.ovs主要组成

OVS_第3张图片

  • Controller (OpenFlow 控制器)

  • ovsdb-server
    OVS的数据库服务器,用来存储虚拟交换机的配置信息(包括接口,交换内容,VLAN,虚拟交换机的创建,网卡的添加等信息与操作记录。都被 ovsdb 保存到一个 conf.db 文件(JSON 格式)里面,通过 db.sock 提供服务。)。

  • datapath

负责数据交换的内核模块,比如把接受端口收到的包放到流表中进行匹配,并执行匹配后的动作等。它在初始化和port binding的时候注册钩子函数,把端口的报文处理接管到内核模块

  • ovs-vswitch
  • 本质是一个守护进程,是OVS的核心部件,实现了OpenFlow交换机的核心功能。ovs-vswitchd 和 Datapath 一起实现OvS 基于流表
  • 它与ovsdb-server使用OVSDB协议通信,它和内核模块通过netlink通信,它支持多个独立的datapath(网桥),它通过更改flow table实现了绑定,和VLAN等功能。
  • OpenVSwitch中有快速通道(fast path)和慢速通道(slow path)
  • 快速通道:指数据包进入OVS之后,由datapath模块处理,直接匹配内核的缓存流表项,匹配成功则直接转发的通道
  • 慢通道:在datapath匹配失败之后将数据upcall到ovs-vswwitchd模块,ovs-vswitchd模块处理之后再通过netlink将数据交给datapath转发的通道
    OVS_第4张图片

ovs-vswitchd代表slow path
OVS内核代表fast path(转发速度快)

  • ovs kernel module OVS内核模块

处理包交换和隧道,缓存flow,如果在内核的缓存中找到转发规则则转发,否则发向用户空间去处理。

  • ovs-controller:

一个简单的openflow控制器

4.Open vSwitch的工作原理

4.1 对帧和报文的处理

  • 处理数据帧规则(和二层交换机一样)
  • 对数据包的处理

4.2 OpenvSwitch和其他vswitch

  • VMware vNetwork distributed switch以及思科的Cisco Nexus
    1000V这种虚拟交换机提供的是一个集中式的控制方式
  • 而OVS则是一个独立的vswitch,他运行在每个实现虚拟化的物理机器上,并提供远程管 理。
    OVS提供了两种在虚拟化环境中远程管理的协议
  • 1.OpenFlow,通过流表来管理交换机的行为,
  • 2.是OVSDB management protocol,用来暴露sietch的port状态。

5.ovs应用场景

1.使用ovs构建虚拟网络

(主要是用来在虚拟化环境中。实现虚拟机之间的通信以及虚拟机与外界网络的通信)

  • 1.构建物理机和物理机相互连接的网络
    OVS_第5张图片
  • 2.构建虚拟机与虚拟机相连的网络
    OVS_第6张图片
  • 3.构建虚拟机与物理机相连的网络
    OVS_第7张图片

2.OVS管理海量虚拟机(实现以下物理交换机的功能)

  • 1.网络隔离

Open vSwitch通过在host上虚拟出一个软件交换机,等于在物理交换机上级联了一台新的交换机,所有VM通过级联交换机接入,让管理员能够像配置物理交换机一样把同一台host上的众多VM分配到不同VLAN中去;

- 2.QOS配置

在Open vSwitch端口上,给各个VM配置QoS,可以实现物理交换机的traffic queuing和traffic shaping功能。每台VM配置不同的速度和带宽,以保证核心业务VM的网络性能。

- 3.流量监控

3.引入openflow实现SDN

  • ovs-openflowd — OpenFlow交换机;
  • ovs-controller — OpenFlow控制器;
  • ovs-ofctl — Open Flow 的命令行配置接口;
  • ovs-pki — 创建和管理公钥框架;

6.OVN (Open Virtual Network)

1.介绍
是OVS提供的原生虚拟化网络方案,旨在解决传统SDN架构(比如Neutron DVR)的性能问题。
2.其主要功能包括
L2/L3虚拟网络以及逻辑交换机(logical switch)
L2/L3/L4 ACL
IPv4/IPv6分布式L3路由
3.组成OVS_第8张图片

  • northbound database:
    存储逻辑交换机、路由器、ACL、端口等的信息,目前基于ovsdb-server,未来可能会支持etcd v3
  • ovn-northd:
    集中式控制器,负责把northbound database数据分发到各个ovn controller
  • ovn-controller:
    运行在每台机器上的本地SDN控制器
  • southbound database

4.OVN L2功能(部分)
L2 switch、L2 ACL
OVN L3功能(部分)
IPv4/IPv6分布式L3路由、L3 ACL、ARP/IPV6分布式路由

你可能感兴趣的:(虚拟化与云计算,云计算,容器)