OVS datapath流表结构及匹配过程

datapath流表的查找函数是ovs_flow_tbl_lookup_stats,在此之前,先看下datapath组织流表的方式。 最新2.6的ovs流表,已经不是最早单纯的精确匹配了,而是一种精确匹配+带掩码匹配合并在一起的方式,叫做megaflow,目的是减少datapath里精确流表的条目数。但在我看来,这种方式只是在yy,在大规模生产环境下,不会因为用了megaflow精确流表就会变得可...
阅读(1650) 评论(0)

ovs的upcall及ofproto-dpif处理细节

无论是内核态datapath还是基于dpdk的用户态datapath,当flow table查不到之后都会进入upcall的处理(我喜欢管这条路径叫做慢速路径,那么datapath里就是快速路径啦~~)...
阅读(900) 评论(1)

ovs vswitchd的启动分析

ovs vswitchd的启动vswitchd启动代码可参考ovs-vswitchd.c的main函数,其中最重要的两个函数是bridge_run以及netdev_runbridge_runvoid bridge_run() { ... /* Initialize the ofproto library. This only needs to run once, but...
阅读(1576) 评论(0)

ovs的netdev, ofproto以及dpif etc.

How to Port Open vSwitch to New Software or Hardware ==================================================== Open vSwitch (OVS) is intended to be easily ported to new software and hardware platforms. T...
阅读(1220) 评论(0)

virtio network驱动分析

本文以virtio网络驱动为例,分析virtio驱动是如何处理网络IO的,驱动的定义如下 static struct virtio_device_id id_table[] = { { VIRTIO_ID_NET, VIRTIO_DEV_ANY_ID }, { 0 }, }; static unsigned int features[] = { VIRTIO_NET_F...
阅读(3117) 评论(0)

virtio后端方案vhost

vhost是virtio的另一种方案,用于跳过qemu,减少qemu和内核之间上下文切换的开销,对于网络IO而言提升尤其明显。vhost目前有两种实现方案,内核态和用户态,本文重点讨论内核态的vhost vhost内核模块主要处理数据面的事情,控制面上还是交给qemu,vhost的数据结构如下 struct vhost_dev { MemoryListener memory_liste...
阅读(3030) 评论(0)

qemu的virtqueue实现

和内核一样,qemu也需要支持virtqueue,VirtQueue的定义如下 #define VIRTIO_PCI_VRING_ALIGN 4096 typedef struct VRingDesc { uint64_t addr; uint32_t len; uint16_t flags; uint16_t next; } VRingDesc...
阅读(1484) 评论(0)

virtio的qemu总线与设备模型

(很多内容是网上找的,+上我个人的一点理解,推荐大家去看 http://mnstory.net/2014/10/qemu-device-simulation 这篇文章) qemu启动时,如果配置了相应virtio设备,会对guest的pci总线,virtio设备等进行模拟,先来看看qemu的设备模拟,那i8254/PIT为例(PIT的硬件规范略过,有兴趣的话可以参考 http://wiki.os...
阅读(9504) 评论(0)

virtio的vring队列

上一篇已经提到,在virtio设备初始化的过程中,会通过setup_vp创建virtqueue,目前的virtqueue队列都是通过vring来实际工作的,我们可以把virtqueue当做一个接口类,而把vring_virtqueue当做这个接口的一个实现 /** * virtqueue - a queue to register buffers for sending or receivin...
阅读(8877) 评论(1)

virtio pci设备基础

这段时间又再次revisit了一把virtio,把笔记整理一下贴出来,大部分内容都是网上找的,+上我个人的一些理解在里面 我们首先关注virtio设备的配置空间,virtio设备本身是基于PCI总线的,因此本质上就是一个PCI设备,和所有其他PCI设备一样,virtio也有自己的vendor ID 0x1AF4,device ID从0x1000 - 0x103F,subsystem de...
阅读(5905) 评论(0)

Virtio 基本概念和设备操作(zz)

Linux Kernel 支持很多 Hypervisor,比如 KVM、Xen 和 VMware 的 VMI 等。每个 Hypervisor 都有自己独特的 block、network、console 等设备模型,设备驱动多样化的特性和优化方式使得各个平台共有性的东西越来越少,亟需提供一种通用的框架和标准接口来减少各 Hypervisor 虚拟化设备之间的差异,从而减少驱动开发的负担。 虚拟...
阅读(885) 评论(0)

PCI学习笔记(zz)

1.PCI设备编号     每一个PCI device都有其unique PFA(PCI Fcntion Address)     PFA由 bus number、device number、function number组成。          一条PCI总线支持256个PFA,即支持256个PCI device。          每个PCI芯片都有自己的device numb...
阅读(1095) 评论(0)

io端口与io内存详解(zz)

(一)地址的概念 1)物理地址:CPU地址总线传来的地址,由硬件电路控制其具体含义。物理地址中很大一部分是留给内存条中的内存的,但也常被映射到其他存储器上(如显存、BIOS等)。在程序指令中的虚拟地址经过段映射和页面映射后,就生成了物理地址,这个物理地址被放到CPU的地址线上。 物理地址空间,一部分给物理RAM(内存)用,一部分给总线用,这是由硬件设计来决定的,因此在32bits地址线的x86...
阅读(734) 评论(0)

QEMU代码中的QLIST

下面会写一些KVM、QEMU相关的笔记,ge...
阅读(1774) 评论(0)

per_cpu变量用法

per_cpu的原理就是一个变量在所有CPU cache上都存一份...
阅读(3881) 评论(0)

xen网络前后端交互

RX的报文接收,首先由netfront发起...
阅读(2762) 评论(0)

xen grant table机制分析

grant table是xen基于共享内存的,在不同domain之间进行通信的一种机制,grant table需要domain和xen共同配合才能进行  * Xen's grant tables provide a generic mechanism to memory sharing  * between domains. This shared memory interface under...
阅读(3142) 评论(0)

GSO revisit

GSO GSO用来扩展之前的TSO,目前已经并入upstream内核。TSO只能支持tcp协议,而GSO可以支持tcpv4, tcpv6, udp等协议。在GSO之前,skb_shinfo(skb)有两个成员ufo_size, tso_size,分别表示udp fragmentation offloading支持的分片长度,以及tcp segmentation offloading支持的...
阅读(5636) 评论(1)

netback再分析

以konrad的dom0 tree ( http://git.kernel.org/cgit/linux/kernel/git/konrad/xen.git/ ) 为base tree,分析下netback这两年的代码变化和相应patch 首先一个比较大的变化在于netback不再依赖xen foreign page这个feature。我之前的文章 http://blog.csdn.net/ma...
阅读(3099) 评论(0)

xen网络后端驱动分析(发送篇)

这篇来研究netback的报文发送,后端设备创建过程中会调用netif_map,映射tx, rx的IO ring,同时绑定event channel中断。当netfront要发送skb时,会触发irq让后端发送,对应的ISR为netif_be_int irqreturn_t netif_be_int(int irq, void *dev_id) {     struct xen_netif...
阅读(2460) 评论(0)
90条 共5页1 2 3 4 5 ... 下一页 尾页
    个人资料
    • 访问:381928次
    • 积分:4402
    • 等级:
    • 排名:第6336名
    • 原创:80篇
    • 转载:10篇
    • 译文:0篇
    • 评论:29条
    最新评论