自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

one_clouder的专栏

漫步云中,关注云网络领域

  • 博客(17)
  • 收藏
  • 关注

原创 【OVS2.5.0源码分析】datapath之主流程分析

网络报文到达主机后,最终会到达协议栈的netif_receive_skb函数,该函数会通过设备对象的rx_handler函数把报文交给OVS处理。 而该rx_handler函数其实就是OVS 定义的netdev_frame_hook函数,本篇内容就是从netdev_frame_hook函数开始,分析报文在datapath中的整个主处理过程。1、netdev_frame_hook函数该函数为

2016-08-31 20:46:41 2818

原创 【OVS2.5.0源码分析】ovsd进程运行机制分析(1)

ovsd作为ovs的用户态管理主进程,负责处理ovs-vsctl命令接口、ovs-ofctl命令接口、与controller交互等等。 本篇分析它的整个处理机制。1、main函数 bridge_init(remote); free(remote); exiting = false; while (!exiting) { //while循环,直到退出

2016-08-30 22:03:37 2842

原创 【Linux】TCP socket编程

OVS的of连接中使用了linux socket的能力,分析linux socket的实现有助于理解of连接实现。socket是一个文件句柄,具有open/send/receive/close等功能,提供socket功能有由于简化网络编程,开发者可以不必关注网络协议细节。1、TCP类型socketserver端必须指定IP+协议+PORT,而client端口可以指定也可以自动生成(在c

2016-08-28 20:49:43 715

原创 【OVS2.5.0源码分析】openflow连接实现分析(6)

上两篇分析了ofservice的建立,请求处理的过程,本篇分析ovs-ofctl命令行是如何和 ofservice交互的。1、mian函数intmain(int argc, char *argv[]){ struct ovs_cmdl_context ctx = { .argc = 0, }; set_program_name(argv[0]); ser

2016-08-28 16:56:34 1379

原创 【OVS2.5.0源码分析】openflow连接实现分析(5)

上一篇分析了ofservice创建过程,本篇将分析ofservice处理请求的过程,ofservice处理请求的过程也是在connmgr_run函数。1、connmgr_run函数voidconnmgr_run(struct connmgr *mgr, void (*handle_openflow)(struct ofconn *,

2016-08-28 15:21:41 1037

原创 【OVS2.5.0源码分析】openflow连接实现分析(4)

前面几篇介绍controller的连接,这篇分析ofservice的创建过程,直接从bridge_configure_remotes函数开始分析。1、bridge_configure_remotes函数    n_controllers = bridge_get_controllers(br, &controllers);    ocs = xmalloc((n_controlle

2016-08-28 10:39:35 1075

原创 【OVS2.5.0源码分析】openflow连接实现分析(3)

上两篇分析了controller连接建立的完整流程,本篇分析下接收openflow报文的过程,openflow报文的处理在后续文章中分析。 整个调用过程,可以根据上一篇的对象关系图得出,本篇只是把调用关系细化到函数。1、connmgr_run函数    if (mgr->in_band) {        if (!in_band_run(mgr->in_band)) { 

2016-08-28 08:07:22 1831

原创 【OVS2.5.0源码分析】openflow连接实现分析(2)

上回调用到vconn_stream_open函数,没有进一步分析,今天继续往下看,确定controller连接的整个过程。9、stream_open_with_default_port函数/* Like stream_open(), but the port defaults to 'default_port' if no port * number is given. */ints

2016-08-28 07:34:34 1325 1

原创 【OVS2.5.0源码分析】openflow连接实现分析(1)

openflow连接有两个用途: 1)与controller连接;2)提供给ovs-ofctl工具配置流表等。我们先看连接的初始化过程,配置入口是bridge_reconfigure函数。1、bridge_reconfigure函数 collect_in_band_managers(ovs_cfg, &managers, &n_managers); //收集配置的m

2016-08-25 22:36:03 2200

原创 【OVS2.5.0源码分析】mirror实现原理(2)

OVS实现mirror功能时,限制了out端口的通信能力。1、限制mirror out端口通信总结xlate_normal_flood函数static voidxlate_normal_flood(struct xlate_ctx *ctx, struct xbundle *in_xbundle, uint16_t vlan){ str

2016-08-17 23:37:52 1823

原创 【OVS2.5.0源码分析】mirror实现原理(1)

端口镜像是交换机的标准功能之一,针对某个端口的报文拷贝到除真实目的之外的另外一个目的地(output),这一篇我们先分析配置mirror之后,如何生成流表,在什么阶段生成流表。1、xlate_actions函数 mirror_ingress_packet(&ctx); //生成满足入端口的流表生成,即进入该端口的报文会被镜像到其他目的地。

2016-08-17 23:11:31 2029

原创 【OVS2.5.0源码分析】vlan&trunk实现原理分析(2)

梳理OVS交换和传统交换机的差异,从整体上看行为上略有差异。1、OVS交换机2、传统交换机

2016-08-15 23:39:28 1002

原创 【OVS2.5.0源码分析】vlan&trunk实现原理分析(1)

传统交换机的端口可以按照vlan可以划分为access、trunk和hybrid三类接口。 首先,我们先看OVS的VLAN实现原理,最后对比OVS与传统交换机的差异。OVS中,数据面的转发流表都是从用户态下发的,所以流表生成的入口是upcall_actions函数(该函数不是upcall的总入口,由于层次比较多,以该函数作为分析的入口是合适的)。1、xlate_actions函数

2016-08-14 23:10:37 3553 3

原创 【OVS2.5.0源码分析】ofpbuf数据结构分析

OVS中ofpbuf结构体应用较多,例如action保存等,其本质是支持数据自动伸缩的连续内存。1、数据结构定义struct ofpbuf { void *base; /* First byte of allocated space. */ void *data; /* First byte actually

2016-08-11 22:15:08 1049

原创 【OVS2.5.0源码分析】normal action精确流表生成和刷新过程分析

一、首包精确流表生成首包到达OVS交换机时,尚未建立基于目的mac的流表规则,需要upcall到用户态进行学习,此时生成的规则是把报文flood到其他端口。1、upcall_xlate函数 upcall->dump_seq = seq_read(udpif->dump_seq); upcall->reval_seq = seq_read(udpif->reval_seq)

2016-08-11 21:40:44 5762

原创 【OVS2.5.0源码分析】enqueue action精确流表生成过程分析

1、xlate_actions函数  openflow流表匹配完成后,调用do_xlate_actions函数把openflow action转化为精确流表的action;2、do_xlate_actions函数 case OFPACT_ENQUEUE: memset(&wc->masks.skb_priority, 0xff,

2016-08-10 21:04:24 3004 5

原创 【OVS2.5.0源码分析】bridge&bundle&port分析(1)

一、按照用途划分,openvswitch中桥、端口大致可以分成如下几类:  1、配置管理    主要对象包括:bridge、port、interface。  2、openflow    主要对象包括:ofproto、ofproto_dpif、ofbundle、ofport、ofport_dpif。  3、端口镜像    主要对象包括:mbridge、mbundle。 

2016-08-10 20:39:13 1943

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除