openVSwitch
文章平均质量分 88
何进哥哥
这个作者很懒,什么都没留下…
展开
-
openstack 核心部件 openswitch 源码分析和逻辑整理
OVS 核心代码OVS 架构OVS 主要的数据结构数据结构关系图主要的数据结构和数据结构的参数数据结构代码datapath 模块datapath 简介datapath 代码vswitchd 模块vswitchd 代码 - [主循环](#主循环)动态过程分析数据流流向添加网桥收包处理流表匹配upcall 消息处理相关内容Linux R转载 2017-02-24 16:27:26 · 2592 阅读 · 0 评论 -
open vswitch研究:vswitchd (三)
vswitchd是用户态的daemon进程,其核心是执行ofproto的逻辑。我们知道ovs是遵从openflow交换机的规范实现的,就拿二层包转发为例,传统交换机(包括Linux bridge的实现)是通过查找cam表,找到dst mac对应的port;而open vswitch的实现则是根据入包skb,查找是否有对应的flow。如果有flow,说明这个skb不是流的第一个包了,那么可以在f转载 2017-05-10 15:49:39 · 1946 阅读 · 0 评论 -
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 * it must转载 2017-05-10 15:43:21 · 596 阅读 · 0 评论 -
openVswitch(OVS)源代码分析 upcall调用(之linux中的NetLink通信机制)
前面做了一大堆的准备就是为了分析下upcall调用,但是现在因为工作重心已经从OpenVswitch上转移到了openstack,所以根本没时间去研究OpenVswitch了。(openstack是用Python写的,我大学没接触过Python,所以现在要一边学Python一边学openstack)后面的OpenVswitch分析更新的时间可能会有点久。 由于前面做了很多准备,所转载 2017-05-05 16:53:47 · 946 阅读 · 0 评论 -
Openvswitch原理与代码分析(4): 修改Openvswitch代码添加自定义action
有时候我们需要自定义一些自己的action,根据包头里面的信息,做一些自己的操作。 例如添加一个action名为handle_example 第一、修改ofp-actions.c文件 首先在ofp-actions.c里面添加Openflow各个版本的这个actionstaticconststruct ofpact_map *get转载 2017-05-05 16:52:26 · 1253 阅读 · 0 评论 -
Openvswitch原理与代码分析(3): 添加一条流表flow
添加一个flow,调用的命令为ovs-ofctl add-flow hello "hard_timeout=0 idle_timeout=0 priority=1 table=21 pkt_mark=0x55 tun_id=0x55 actions=mod_nw_dst:192.168.56.101,output:2"这里调用的是调用ovs/utilities/ovs-ofctl.c的命令转载 2017-05-05 16:51:03 · 1180 阅读 · 0 评论 -
Openvswitch原理与代码分析(2):用户态流表flow table的操作
当内核无法查找到流表项的时候,则会通过upcall来调用用户态ovs-vswtichd中的flow table。会调用ofproto-dpif-upcall.c中的udpif_upcall_handler函数。staticvoid *udpif_upcall_handler(void *arg){ struct handler转载 2017-05-05 16:49:53 · 1440 阅读 · 0 评论 -
Openvswitch原理与代码分析(2): ovs-vswitchd的启动
ovs-vswitchd.c的main函数最终会进入一个while循环,在这个无限循环中,里面最重要的两个函数是bridge_run()和netdev_run()。 Openvswitch主要管理两种类型的设备,一个是创建的虚拟网桥,一个是连接到虚拟网桥上的设备。 其中bridge_run就是初始化数据库中已经创建的虚拟网桥。 一、虚拟网桥的初始化bridge_r转载 2017-05-05 16:47:24 · 1079 阅读 · 0 评论 -
Opevswitch总体架构
Openvswitch的架构网上有如下的图表示: 每个模块都有不同的功能ovs-vswitchd 为主要模块,实现交换机的守护进程daemon 在Openvswitch所在的服务器进行ps aux可以看到以下的进程root 1008 0.1 0.8 242948 31712 ? Sovs-vswitchd unix:/var/转载 2017-05-05 16:45:18 · 797 阅读 · 0 评论 -
GRE and VXLAN with Open vSwitch
因为在OpenStack的Neutron中比较常用,所以参考别人的博客试了下OVS的一些隧道封装功能(GRE,VXLAN)。实验:实现两个host的Networknamespace之间的通信,NS可以理解为host里的VM(VM通过NS隔离,参考资料里涉及到了VM,KVM还不熟悉,这里就略掉了),如下图所示:and VXLAN with Open vSwitch" title="GRE a转载 2017-05-12 14:49:03 · 547 阅读 · 0 评论 -
openvswitch处理upcall过程分析
处理upcall的整体框架是:1.由函数handle_upcalls()批量处理(in batches)的是由内核传上来的dpif_upcalls,会解析出upcall的类型。这里主要看在内核中匹配流表失败的MISS_UPCALL。处理完成后会得到多个flow_miss。结构体dpif_upcall代表的是由内核传到用户空间的一个包,包括上传原因,p转载 2017-05-12 11:19:05 · 807 阅读 · 0 评论 -
如何借助OpenStack命令行工具管理虚拟机
OpenStack是一个基于行业的开源云管理平台。人们可以使用OpenStack,轻松构建公共云、私有云或混合云。由于这个平台具有纯粹的开放性,包括Red Hat、Rackspace、IBM和惠普在内的各大IT厂商都看好其前景,积极推动OpenStack的发展。OpenStack中有两种不同的界面用来管理云资源。一个是通过Horizon(https://github.com/openstack转载 2017-02-27 14:28:08 · 3289 阅读 · 0 评论 -
open vswitch研究: action (四)
ovs的action,都是预定义好的行为,也可以用nlattr结构来定义,enum ovs_action_attr { OVS_ACTION_ATTR_UNSPEC, OVS_ACTION_ATTR_OUTPUT, /* u32 port number. */ OVS_ACTION_ATTR_USERSPACE, /* Nested OVS_US转载 2017-05-10 15:51:18 · 827 阅读 · 0 评论