美文网首页
OVN系列1 -- 简介 & 参考方向

OVN系列1 -- 简介 & 参考方向

作者: 苏苏林 | 来源:发表于2022-01-29 14:09 被阅读0次

开始吧

因为要为公司云产品做OVS类型虚拟化网络方案参考了Openstack和OVN的实现做了些笔记,之前虽然做过OVS的网络方案,但都是在骨干网上,相对逻辑比较简单。OVS方案在业界普遍使用,也有很多较为成熟的开源方案,如Openstack和OVN。
Openstack倒是整理了一份更为细致和准确的调研文档,但是网上资料太多没必要贴出来,后面会把流表设计相关内容放出来,还有一篇流表设计通用方案。
OVN的基本功能、架构、流表设计也做了些记录,这里贴出来供复习使用。

OVN 简介

OVN (Open Virtual Network) 是OVS提供的原生虚拟化网络方案,旨在解决传统SDN架构(比如Neutron DVR)的性能问题。
OVN是OVS的控制平面的一种结构实现,早期版本ovn就是放在ovs的代码里的,后面才分开的,但编译ovn是也必须指定ovs的源码目录,可见OVN实际上是OVS的亲儿子。
其主要功能包括

  • L2/L3虚拟网络以及逻辑交换机(logical switch)
  • L2/L3/L4 ACL
  • IPv4/IPv6分布式L3路由
  • ARP and IPv6 Neighbor Discovery suppression for known IP-MAC bindings
  • Native support for NAT and load balancing using OVS connection tracking
  • Native fully distributed support for DHCP
  • Works with any OVS datapath (such as the default Linux kernel datapath, DPDK, or Hyper-V) that supports all required features (namely Geneve tunnels and OVS connection tracking)
  • Supports L3 gateways from logical to physical networks
  • Supports software-based L2 gateways
  • Supports TOR (Top of Rack) based L2 gateways that implement the hardware_vtep schema
  • Can provide networking for both VMs and containers running inside of those VMs, without a second layer of overlay networking

OVN架构

OVN由以下组件构成:

  • northbound database:存储逻辑交换机、路由器、ACL、端口等的信息,目前基于ovsdb-server,未来可能会支持etcd v3
  • ovn-northd: 集中式控制器,负责把northbound database数据分发到各个ovn-controller
  • ovn-controller: 运行在每台机器上的本地SDN控制器
  • southbound database:基于ovsdb-server(未来可能会支持etcd v3),包含三类数据
    • 物理网络数据,比如VM的IP地址和隧道封装格式
    • 逻辑网络数据,比如报文转发方式
    • 物理网络和逻辑网络的绑定关系


      image

补充说明

  • Data Path:OVN的实现简单有效,都是基于OVS原生的功能特性来做的(由于OVN的实现不依赖于内核特性,这些功能在OVS+DPDK上也完全支持),比如
    • security policies 基于 OVS+conntrack 实现
    • 分布式L3路由基于OVS flow实现
  • Logical Flows:逻辑流表,会由ovn-northd分发给每台机器的ovn-controller,然后ovn-controller再把它们转换为物理流表;
  • 后面经常会用到 ovn-nbctl 和 ovn-sbctl 命令,是分别查看 Northbound DB 和 Southbound DB 数据,ovs-vsctl 用来查看本地ovs db的数据,着三个命令依次会越来越抽象。

如果实现OVS的虚拟交换机方案,有两个难点:

  • 一是控制面设计,如果将网络业务逻辑转化为物理网络拓扑和转发逻辑,以及如何控制可能的大量的ovs虚拟交换机和流表;
  • 二是数据面流表设计,好的流表设计可以有效减少流表数量,很好的扩展功能,方便维护和排障。

通过学习OVN可以:

  • 参考其各项功能的流表设计;
  • 参考其控制面设计,ovn控制面使用ovsdb协议,只有在计算节点上才会使用openflow协议,避免了openflow协议的性能问题;

使用OVN的问题记录:

  • OVN实现比较复杂,后期学习和维护成本较高,不支持插件,自研需求需要修改源代码;
  • 不支持跨主机的underlay方案,如vlan,但kube-ovn都已经支持;
  • 对一些网络服务的管理,如LB(OVN自带最基本的三四层LB)、动态路由协议、动态DHCP等,未集成在系统内,需要额外实现;
  • OVN的方案和我司目前使用Linux Bridge的方案差别较大,直接使用在软件上改动较大。

相关文章

  • OVN系列1 -- 简介 & 参考方向

    开始吧 因为要为公司云产品做OVS类型虚拟化网络方案参考了Openstack和OVN的实现做了些笔记,之前虽然做过...

  • ovn隧道类型

    本文简单介绍下ovn支持的隧道类型,具体可参考ovn-architecture[https://www.ovn.o...

  • OVN实践

    1.OVN简介 OVN是基于OVS开发的,相比于OVS提供了更多的功能和控制灵活性,在性能层面也有所提升,同时也兼...

  • ovn 集成容器

    本文实验如何和容器集成,这里的场景指的是容器运行在vm中,而ovn运行在hypervisor上,可参考ovn-ar...

  • ovn 3个选举 两种超时

    cms <----> ovn-nbdb <----> ovn-northd <----> ovn-sbdb <-...

  • http总结

    参考前端必知必会HTTP请求系列 1.简介 HTTP协议(Hyper Text Transfer Protocol...

  • Golang 游戏leaf系列(一) 概述与示例

    基础知识参考Golang 游戏架构简介本系列参考github leaf的官方wiki及issues 本文参考Lea...

  • ovn-northd 源码分析

    ovn-northd是ovn中的核心后台进程,主要负责将ovn的高层配置转换成供ovn-controller后台进...

  • Gradle 笔记

    参考 stormzhang 的 ANDROID STUDIO 系列教程四--GRADLE基础 gradle简介 简...

  • OVN系列9 -- LoadBalancer

    LoadBalancer ovn 使用流表实现了一套简单的LB: 支持 sctp, tcp, or udp; 支持...

网友评论

      本文标题:OVN系列1 -- 简介 & 参考方向

      本文链接:https://www.haomeiwen.com/subject/mazxkrtx.html