【OpenVswitch源码分析之二】架构

【OpenVswitch源码分析之⼆】架构
gis在物流中的应用
OpenVswitch架构概览
Open vSwitch的架构和模块与传统的物理交换机是⼀⼀对应的,包括控制⾯和数据平台,只是传统的物理交换机通常使⽤NP芯⽚来进⾏转发,⽽Openvswitch使⽤Linux内核模块做数据平⾯。OpenVswitch包括三个核⼼模块:ovs-vswitchd,ovsdb-server以及内核模块openvswitch datapath。每个模块有不同的功能外高桥二期
ovs-vswitchd功能模块介绍
ovs-vswitchd是⼀个守护进程,在⽤户启动该组件不久其就会脱离控制终端,作为OVS的管理和控制进程对外提供服务,⼀⽅⾯它通过unix Socket和OVSDB通信,加载OVSDB内的配置信息,也能把设备信息更新到服务器中,这部分属于设备的配置管理能⼒。另⼀⽅⾯其内置了多个协议的⽀持,包括MAC Learning, LLDP, STP等,同时其⽀持和拉远的控制器建⽴Openflow连接,通过Openflow协议下发控制流表给内核模块。内核模块和OVS-Vswitchd通过Netlink进⾏通信,Netlink相较于其他的IPC通信⽅式,其⽀持双⼯,⽽且是异步通信,⽀持组播,另外可以⾃定义协议族。总⽽⾔之,Netlink是⼀个⾼效的内核态和⽤户态通信⽅式,同时其可扩展性也很好。
Ovsdb-server功能模块介绍
ovsdb-server是⼀个轻量级的数据库服务,主要保存了整个OVS的配置信息,包括接⼝,交换内容,VLAN等等。其数据库结构如图所⽰:
从OVSDB的数据库结构可以看出⽹桥是⽀持SFlow,QoS, Mirror等可视化和调优功能,OVSDB对外提供Json RPC接⼝,提供CURD接⼝供客户端对数据库进⾏操作。xiaoeni
openvswitch datapath
openvswitchd.ko是内核中负责vswitch的快转⾯,根据openflow流表转发,并接收ovs-vswitchd的配置,内核模块在初始化以及做Port binding时,会注册钩⼦函数,把端⼝的报⽂处理接管到内核模块。当Datapath出现table miss情况时会把报⽂送⼊队列供⽤户控件的vswitchd模块读取,在⽤户空间有slow path的exact table的精确匹配与wildcard table的模糊匹配。⽽当Datapath配置了sflow时,也会将报⽂上送到控制⾯进⾏处理。
OpenVswitch 模块概述
|  +-------------------+
|  |    ovs-vswitchd  |<-->ovsdb-server
|  +-------------------+
|  |      ofproto      |<-->OpenFlow controllers
病案追踪
|  +--------+-+--------+  _
|  | netdev | |ofproto-|  |
userspace |  +--------+ |  dpif  |  |
|  | netdev | +--------+  |
|  |provider| |  dpif  |  |
|  +---||---+ +--------+  |
|      ||    |  dpif  |  | implementation of
|      ||    |provider|  | ofproto provider
|_      ||    +---||---+  |
努西达||        ||      |
_  +---||-----+---||---+  |
|  |          |datapath|  |
kernel |  |          +--------+  _|
|  |                  |
|_  +--------||---------+
||
physical
NIC
资本资产定价模型
从上图可以看出vswitchd本⾝是分层的结构,最上⾯的daemon层主要⽤于和ovsdb通信,做配置的下发和更新等,中间是ofproto
层,ofproto是交换机的控制平⾯实现,通过该模块可以和外界的SDN控制器建⽴Openflow通道,⽽在ofproto下层有两个插件,分别是ofproto provider和netdev,ofproto provider对接datapath,负责流表以及datapath的配置下发,以及报⽂上送等。在ovs的定义⾥,netdev代表了具体平台的设备实现,e.g. linux内核的net_device或者移植到交换机平台下的port等,struct netdev_class定义了netdev-provider的具体实现需要的接⼝,具体的平台实现需要⽀持这些统⼀的接⼝,从⽽完成netdev设备的创建,销毁,打开,关闭等⼀系列操作。

本文发布于:2024-09-21 17:34:21,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/137273.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:控制   模块   内核模块   数据库   设备   平台   配置   协议
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议