一、分层抽象

1、ofproto class

openflow交换机实现类,用来实现一个openflow交换机。主要包括创建、构造、操作openflowflow等相关方法。

2、dpif class

datapath接口类,用来和datapath交互。主要包括datapath的open、run、端口操作、端口数据监听等相关方法。datapath是数据面的一种抽象。

3、netdev class

网络设备抽象类,用来和网络设备交互。主要包括网卡的设置、网卡结构的抽象、数据包发送接收等相关方法。

bridge网桥通过ofproto class构造一个openflow交换机。再通过dpif class打开(如果没有对应类型的datapath,就创建一个)对应类型的datapath通路。使用netdev class构造一个抽象网络设备,上层抽象为端口,然后对网络设备收发包等操作。

需要说明的是,datapath是按类型分类的,现在ovs有两种类型的datapath:system(对应linux内核数据通路)、netdev(dpdk用户态数据通路)。所以使用同一种datapath类型的ovs网桥共享同一个datapath对象。如下图所示。

二、主要数据结构关系

该部分说明的内容是关于dpdk类型的datapath。
注:AB,表示A是一个变量而非指针,它的结构和内容是B。

流程解释如下:

1、bridge层

struct bridge对应每个ovs网桥最上层的结构。它通过成员指针变量ofproto,联系到struct ofproto交换机结构内容。

2、ofproto层

由于联系到的struct ofproto内容是struct ofproto_dpif结构的一个up成员变量。所以通过struct ofproto地址可以cast到struct ofproto_dpif结构内容,通过该内容和dpif层交互。

通过struct ofproto_dpif的成员指针变量dpif_backer,联系到struct dpif_backer结构内容。该结构是dpif操作的入口点。

3、dpif层

通过struct dpif_backer的成员指针变量dpif,联系到struct dpif结构内容。

由于struct dpif结构内容是struct dpif_netdev结构的dpif成员变量,所以通过struct dpif地址可以cast到struct dpif_netdev结构内容。

struct dpif_netdev结构内容中有指针成员变量dp,通过dp可以联系到struct dp_netdev结构内容。该内容是datapath的抽象结构内容。

4、 datapath层

struct dp_netdev的成员指针变量ports是一个表结构,它联系着多个port端口内容。端口的结构是struct dp_netdev_port。struct dp_netdev另外一个成员指针变量netdev,联系着dp层的struct netdev结构内容,该结构内容是网卡的逻辑抽象。

struct dp_netdev_port的指针成员变量rxqs也是一个表结构,它联系着多个队列内容。队列的结构是struct dp_netdev_rxq.它的成员变量core_id表示该队列所在的core。

通过struct dp_netdev_rxq的成员指针变量rxq,联系到dp层的struct netdev_rxq结构内容。structdp_netdev_rxq的成员变量queue_id表示该队列id。

5、netdev层

由于struct netdev结构内容是struct netdev_dpdk结构的一个up成员变量。所以通过struct netdev地址可以cast到struct netdev_dpdk结构内容。

通过struct detdev_dpdk结构内容的成员指针变量netdev_class和dpdk类型网卡交互。

由于struct netdev_rxq结构内容是struct netdev_rxq_dpdk结构内容的一个up成员变量。所以通过struct netdev_rxq地址可以cast到struct netdev_rxq_dpdk结构内容。该内容是dpdk类型的netdev_rxq,它的成员变量port_id是dpdk网络设备的port。

原文链接:https://www.cnblogs.com/liuhongru/p/11006079.html

OVS DPDK--数据结构关系(七)相关推荐

  1. OVS DPDK vs OVS Deep Dive(十六)

    背景 OvS(Open vSwitch)是云计算平台的重要连接组件,为虚拟机提供网络连,被各大云平台,基础设施供应商广泛使用,比如OpenStack, OpenNebula.vSwitch–Virtu ...

  2. OVS DPDK vhost-user详解(十三)

    vhost user协议的控制和数据通道 所有的控制信息通过UNIX套接口(控制通道)交互.包括为进行直接内存访问而交换的内存映射信息,以及当数据填入virtio队列后需要出发的kick事件和中断信息 ...

  3. OVS+DPDK Datapath 包分类技术

    本文主体内容译于[DPDK社区文档],但并没有逐字翻译,在原文的基础上进行了一些调整,增加了对TSS分类器的详细阐述. 1. 概览 本文描述了OVS+DPDK中的包分类器(datapath class ...

  4. 厦门大学c语言第七八章作业答案,数据结构第七章考试题库(含答案).doc

    数据结构第七章考试题库(含答案).doc 第七章 图一.选择题1图中有关路径的定义是( ).[北方交通大学 2001 一.24 (2分)]A由顶点和相邻顶点序偶构成的边所形成的序列 B由不同顶点所形成 ...

  5. 数据结构第七次上机实验-解题报告

    数据结构第七次上机实验-解题报告 7-1 序列调度 (100 分) 题目 思路 参考代码 7-2 最大最小差 (100 分) 题目 思路 参考代码 7-3 二叉树最短路径长度 (100 分) 题目 思 ...

  6. 大话数据结构 第七章 图(二) 最小生成树、最短路径、拓扑排序、关键路径算法

    大话数据结构 第七章 图(二) 最小生成树.最短路径.拓扑排序.关键路径算法 最小生成树 定义 Prim算法 Kruskal算法 最短路径 Dijkstra算法 Floyd算法 拓扑排序 AOV网 拓 ...

  7. OVS DPDK与QEMU之间如何通过vhost user协议通信 vhost user协议的控制和数据通道

    netdev_dpdk_vhost_construct定义在文件openvswitch-2.9.2/lib/netdev-dpdk.c1058 static int 1059 netdev_dpdk_ ...

  8. vpp与dpdk的关系

    vpp与dpdk的关系 dpdk作为vpp的一个插件,主要用来从网卡收发包. vpp使用如下命令参数初始化dpdk eal. EAL init args: -c a -n 1 --in-memory ...

  9. 数据结构题及c语言版严第七章答案,数据结构第七章习题答案.doc

    数据结构第七章习题答案 PAGE PAGE 9 第7章 <图>习题参考答案 一.单选题(每题1分,共16分) ( C )1. 在一个图中,所有顶点的度数之和等于图的边数的 倍. A.1/2 ...

  10. OVS DPDK vhost-user详解(十二)

    在软件实现的网络I/O半虚拟化中,vhost-user在性能.灵活性和兼容性等方面达到了近乎完美的权衡.虽然它的提出已经过了四年多,也已经有了越来越多的新特性加入,但是万变不离其宗,那么今天就从整个v ...

最新文章

  1. Bag of Tricks for Image Classification
  2. 机器学习中的损失函数
  3. linux内核编译感想,Linux内核编译小结
  4. java与lisp_javalisp
  5. MySQL可以用localhost 连接,但不能用IP连接的问题
  6. 我和51CTO的缘分【我与51CTO一“七”成长】
  7. 新浪Linux运维工程师面试真题曝光
  8. PathProber:基于暴力破解方法探测和发现HTTP路径名
  9. How to support Specular-Glossiness in Three.js
  10. linux安装英特尔AX200网卡驱动
  11. 电脑网速慢怎么办?手把手教你提升网速
  12. 解决electron打包的程序报错 A JavaScript error occurred in the main问题
  13. linux平台运行 mr程序,MR程序的几种提交运行模式
  14. python绘画海贼王_Python爬虫实战之(三)| 一个海贼迷的呐喊
  15. MySQL源代码的海洋中游弋 初探MySQL之SQL执行过程
  16. Android新机系统要求,原神手机端最低配置要求
  17. 微信小程序(2)入门初识小程序
  18. 2016年8月9日 星期二 --出埃及记 Exodus 16:9
  19. c语言实现作业调度算法实验报告,时间片轮转调度算法的实验报告.doc
  20. 104-RTKLIB中PPP设计

热门文章

  1. python打不开文件-python文件打不开如何解决
  2. python适合多大的人学-学Python编程孩子几岁最合适?
  3. python装饰器实例-Python装饰器原理与简单用法实例分析
  4. python数据分析视频网盘-微专业Python数据分析实战
  5. python线下培训-线下培训价值一万八的某达PYTHON培训视频
  6. python中是干嘛的-学 Python 都用来干嘛的?
  7. python编码规范手册-PEP8 Python 编码规范整理
  8. Leetcode上的题目
  9. tcpdump的使用
  10. AMPAS/ASC Common File Format LUT