非VXLAN的收发包调用栈 netdev_frame_hook()      netdev_port_receive()           ovs_vport_receive()                ovs_dp_process_packet()                     (在查表失败后,对于带gso标记的大包,会分片进行upcall)                     ovs_dp_upcall()                                …
***kernel datapath的OVS编译安装 下载源代码 $ git clone https://github.com/openvswitch/ovs.git 准备工具:生成configure文件 GNU make $ make --version 一个C语言编译器,GCC 4.6以上,Clang 3.4以上 $ gcc --version libssl $ apt-get isntall libssl1.0.0 libcap-ng0 $ apt-get install libcap-n…
本文主体内容译于[DPDK社区文档],但并没有逐字翻译,在原文的基础上进行了一些调整,增加了对TSS分类器的详细阐述. 1. 概览 本文描述了OVS+DPDK中的包分类器(datapath classifier -- aka dpcls)的设计与实现思路.本文的内容主要牵涉到分类器对封包流的分类及缓存技术,并且对于一些典型场景下的细节给予解释说明. 虚拟交换机与传统硬件交换机的差别较大.硬件交换机通常都使用TCAM以求高效率的包分类与转发.而虚拟交换机由于自身是纯软件实现,不能依靠特殊的硬件设计…
三层网络设备对于IP报文的分片和重组处理原理 对于网络分片,我一年前就想整理出来,虽然说网络上的资料很多,但是真正掌握精髓的除非真正做过分片程序,不然很难将协议栈整体联系起来理解.这篇文章,包括设计分片原理图,耗时一小时完成,算是记录一点理解. 三层网络设备,即能够基于IP头信息对报文进行识别和处理的网络设备,在转发IP报文的时候,经常会遇到来自上层的数据包过长,从而导致打上MAC头的帧不符合IEEE802.3标准规定的最大帧长,造成不能被转发和对端解析的问题.这样就需要在三层进行分片,将过长的…
这篇blog是专门解决前篇openVswitch(OVS)源码分析之工作流程(哈希桶结构体的疑惑)中提到的哈希桶结构flex_array结构体成员变量含义的问题. 引用下前篇blog中分析讨论得到的flex_array结构体成员变量的含义结论: struct { int element_size; // 这是flex_array_part结构体存放的哈希头指针的大小 int total_nr_elements; // 这是全部flex_array_part结构体中的哈希头指针的总个数 int e…
1 前置知识学习 1.1 MTU MTU是最大传输单元( Maximum Transmission Unit)的缩写,指一个接口无需分片所能发送的数据包的最大字节数.  MTU范围在46 ~ 1500字节,默认一般都是1500. 1)MTU为1500时计算总长度 7字节前导码+1字节帧开始定界符+6字节的目的MAC+6字节的源MAC+2字节的帧类型+1500字节IP头及数据+4字节的 FCS = 1526字节. 2)为什么我们抓包得到的最大帧是1514字节? 当数据帧到达网卡时,在物理层上网卡要…
大家对IP数据包头,应该不陌生吧 分片便是与图中圈出来的两个地址有关,本文也是将主要围绕他们展开. 那我们先来了解他们的概念. 标志一个三比特字段遵循与用于控制或识别片段.他们是(按顺序,从高分以低位):0:保留; 必须为零.1位:不分段(DF)2位:更多片段(MF)如果DF标志被设置,并且分片需要来路由分组,则该分组被丢弃.这可以发送分组到不具有足够的资源来处理破碎的宿主时,可以使用.它也可用于路径MTU发现由主机IP软件,可以自动或使用诊断工具例如手动平或跟踪路由.对于未分段的数据包,对MF…
Basic Configuration Q: How do I configure a port as an access port? A: Add "tag=VLAN" to your "ovs-vsctl add-port" command. For example, the following commands configure br0 with eth0 as a trunk port (the default) and tap0 as an access…
https://zhuanlan.zhihu.com/p/57870521 本文首发SDNLAB. 现代的虚拟化技术使得开发和部署高级网络服务变得更加简单方便.基于虚拟化的网络服务,具有多样性,低成本,易集成,易管理,低持有成本等优点.而虚拟交换机已经成为了一个高度虚拟化环境不可缺少的一部分.OpenVSwitch是所有虚机交换机中的佼佼者,广泛被各种SDN方案采用. OpenVSwitch kernel datapath -- OpenVSwitch是一个实现了OpenFlow的虚拟交换机,它…
Open vSwitch <http://openvswitch.org> 参考地址:http://git.openvswitch.org/cgi-bin/gitweb.cgi?p=openvswitch;a=blob_plain;f=FAQ;hb=HEAD Frequently Asked Questions ========================== General ------- Q: What is Open vSwitch? A: Open vSwitch is a pro…