![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
openvswitch
文章平均质量分 79
造夢先森
一定要努力努力,永不放弃,才可以改变世界,改变自己~
展开
-
【OVS2.5源码解读】datapath主流程分析
我们知道,ovs为了提高效率,数据包会先在内核层datapath进行流表项匹配处理,对于匹配失败,或者是匹配到表项的action为发向用户层时,才会去用户层继续查找匹配。对于在用户层匹配成功的数据包会按照表项action相应处理,并向内核层下发一条匹配到的表项,方便以后类似数据包直接在内核层完成匹配转发。网络报文到达主机后,最终会到达协议栈的netif_receive_skb函数,该函数会...原创 2017-12-02 13:59:34 · 1202 阅读 · 0 评论 -
OVS源码pmd_thread_main分析
ovs启动vswitchd/ovs-vswitchd.c启动main-->netdev_run-->netdev_initialize-->netdev_dpdk_register-->netdev_register_provider注册dpdk_vhost_user_class添加dpdk端口的时候,会触发创建pmd线程的操作。dpif_netdev_po...原创 2018-07-01 12:14:21 · 2297 阅读 · 1 评论 -
ovs-vswitchd的启动流程分析
ovs-vswitchd.c的main函数最终会进入一个while循环,在这个无限循环中,里面最重要的两个函数是bridge_run()和netdev_run()。 bridge_init(remote); free(remote); exiting = false; while (!exiting) { //while循环,直到退出 ...原创 2018-03-18 10:40:55 · 3318 阅读 · 0 评论 -
OVS常用操作
OVS常用操作:1.添加网桥:ovs-vsctl add-br 交换机名 2.删除网桥:ovs-vsctl del-br 交换机名 3.添加端口:ovs-vsctl add-port 交换机名 端口名(网卡名) 4.删除端口:ovs-vsctl del-port 交换机名 端口名(网卡名) 5.连接控制器:ovs-vsctl set-controller 交换机名 tcp:IP地址:端...原创 2015-05-24 12:15:28 · 24315 阅读 · 1 评论 -
OpenvSwitch(OVS)全面解读
1 什么是Open vSwitchOpenvSwitch简称OVS,正如其官网(http://openvswitch.org/)所述,OVS是一个高质量、多层的虚拟交换软件。它的目的是通过编程扩展支持大规模网络自动化,同时还支持标准的管理接口和协议。随着虚拟化应用普及,需要部署更多的虚拟化交换机,而费用昂贵的闭源虚拟交换机让用户不堪重负,多层虚拟化软件交换机Open vSwitch由Nic...原创 2017-07-09 13:02:39 · 30811 阅读 · 3 评论 -
OVS源码结构分析
1. OVS内部结构分析下图是OVS(Open vSwitch)系统层面的逻辑图。其中datapath是处于系统的核心层(kernel space),我们可以将datapath理解为一个网桥(linux bridge)。处于用户态(user space)的主要是openvswitch client、openflow client、ofproto library、netdev等等。如...原创 2017-07-09 14:55:48 · 3595 阅读 · 1 评论 -
【OVS2.5源码解读】 内核中的flow table流表操作
当一个数据包到达网卡的时候,首先要经过内核Openvswitch.ko,流表Flow Table在内核中有一份,通过key查找内核中的flow table,即可以得到action,然后执行action之后,直接发送这个包,只有在内核无法查找到流表项的时候,才会到用户态查找用户态的流表。仅仅查找内核中flow table的情况被称为fast path;需要查找用户态中flow table的情况被称为...原创 2017-11-29 18:38:32 · 4377 阅读 · 1 评论 -
【OVS2.5源码解读】 用户态的flow table流表操作
当一个数据包到达网卡的时候,首先要经过内核Openvswitch.ko,流表Flow Table在内核中有一份,通过key查找内核中的flow table,即可以得到action,然后执行action之后,直接发送这个包,只有在内核无法查找到流表项的时候,才会通过upcall来调用用户态ovs-vswtichd中的flow table。upcall线程处理由datapath通过netlin...原创 2017-12-01 19:37:27 · 3628 阅读 · 0 评论 -
【OVS2.5源码解读】datapath的netlink机制
datapath为 ovs内核模块,负责执行数据交换,也就是把从接收端口收到的数据包在流表中进行匹配,并执行匹配到的动作。一个datapath可以对应多个vport,一个vport类似物理交换机的端口概念。一个datapth关联一个flow table,一个flow table包含多个条目,每个条目包括两个内容:一个match/key和一个action首先来分析下upcall函数调用的原因...原创 2017-12-01 22:42:54 · 1697 阅读 · 0 评论 -
ovs+dpdk+vhostuser高性能交换机
首先给出基于dpdk的ovs软件架构: ovs-vswitchd是ovs中最核心的组件,openflow的相关逻辑都在vswitchd里实现,一般来说ovs分为datapath, vswitchd以及ovsdb三个部分,datapath一般是和具体是数据面平台相关的,比如白盒交换机,或者linux内核等。ovsdb用于存储vswitch本身的配置信息,比如端口,拓扑,规则等。vswitchd...原创 2018-08-29 23:07:54 · 5427 阅读 · 0 评论