![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
openvswitch
popsuper1982
腾讯云T4架构师。毕业于上海交通大学,15年云计算领域研发及架构经验,先后在EMC,CCTV证券资讯频道,HP,华为,网易,腾讯从事云计算和大数据架构工作
曾出版《Lucene应用开发揭秘》多次作为邀请讲师参加Dockone容器技术大会,Segmentfault开发者大会,InfoQ全球架构师峰会(明星讲师),CSDN SDCC大会,51CTO WOTA大会等
展开
-
Openvswitch手册(4): Mirror
这一节我们来分析MirrorMirror就是配置一个bridge,将某些包发给指定的mirrored ports对于包的选择:select_all,所有的包select_dst_portselect_src_portselect_vlan对于指定的目的:output_port (SPAN)output_vlan (RSPAN)Port mirrori原创 2014-11-04 18:08:10 · 1380 阅读 · 0 评论 -
Openvswitch原理与代码分析(7): 添加一条流表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.原创 2016-09-24 22:33:44 · 2951 阅读 · 0 评论 -
Openvswitch原理与代码分析(6):用户态流表flow table的操作
当内核无法查找到流表项的时候,则会通过upcall来调用用户态ovs-vswtichd中的flow table。会调用ofproto-dpif-upcall.c中的udpif_upcall_handler函数。static void *udpif_upcall_handler(void *arg){ struct handl原创 2016-09-24 00:13:15 · 1966 阅读 · 0 评论 -
Openvswitch原理与代码分析(5): 内核中的流表flow table操作
当一个数据包到达网卡的时候,首先要经过内核Openvswitch.ko,流表Flow Table在内核中有一份,通过key查找内核中的flow table,即可以得到action,然后执行action之后,直接发送这个包,只有在内核无法查找到流表项的时候,才会到用户态查找用户态的流表。仅仅查找内核中flow table的情况被称为fast path. 第一步:从数原创 2016-09-19 22:22:19 · 2293 阅读 · 0 评论 -
Openvswitch原理与代码分析(4):网络包的处理过程
在上一节提到,Openvswitch的内核模块openvswitch.ko会在网卡上注册一个函数netdev_frame_hook,每当有网络包到达网卡的时候,这个函数就会被调用。 static struct sk_buff *netdev_frame_hook(struct sk_buff *skb){ if (unlikely原创 2016-09-13 23:40:43 · 2208 阅读 · 0 评论 -
Openvswitch原理与代码分析(3): openvswitch内核模块的加载
上一节我们讲了ovs-vswitchd,其中虚拟网桥初始化的时候,对调用内核模块来添加虚拟网卡。 我们从openvswitch内核模块的加载过程,来看这个过程。 在datapath/datapath.c中会调用module_init(dp_init);来初始化内核模块。 static int __init dp_init(原创 2016-09-13 23:40:07 · 2062 阅读 · 0 评论 -
Openvswitch原理与代码分析(2): ovs-vswitchd的启动
ovs-vswitchd.c的main函数最终会进入一个while循环,在这个无限循环中,里面最重要的两个函数是bridge_run()和netdev_run()。 Openvswitch主要管理两种类型的设备,一个是创建的虚拟网桥,一个是连接到虚拟网桥上的设备。 其中bridge_run就是初始化数据库中已经创建的虚拟网桥。 一、原创 2016-09-13 23:39:10 · 2444 阅读 · 0 评论 -
Openvswitch原理与代码分析(1):总体架构
一、Opevswitch总体架构 Openvswitch的架构网上有如下的图表示: 每个模块都有不同的功能ovs-vswitchd 为主要模块,实现交换机的守护进程daemon 在Openvswitch所在的服务器进行ps aux可以看到以下的进程root 1008 0.原创 2016-09-13 23:38:10 · 6452 阅读 · 3 评论 -
干货分享: 长达150页的openvswitch的ppt,不实验无真相
一、概论Software Defined Network简介OpenFlow简介Openvswitch简介二、架构Openvswitch架构实验一:查看Openvswitch的架构Openvswitch数据库表结构实验二:打印数据库表结构三、Manager实验三:设置Manager的TCP连接四、SSL原创 2014-11-04 19:56:56 · 2327 阅读 · 0 评论 -
Openvswtich 学习笔记
场景:创建一个Virtual Switch,支持VLAN,支持MAC-Learning包含下面四个Port:P1, truck portP2, VLAN 20P3, P4 VLAN 30包含五个flow table: Table 0: Admission control. Table 1: VLAN input processing.原创 2014-11-04 17:13:26 · 3465 阅读 · 0 评论 -
Openvswitch手册(8): ovs-vsctl的DB的操作
ovs-vsctl的DB的操作如果你在命令行里面找不到相应的命令创建和删除对象,则可以直接删除数据库[−−if−exists] [−−columns=column[,column]...] list table [record]...$ sudo ovs-vsctl list bridge _uuid : 91cd3178原创 2014-11-04 18:29:16 · 1340 阅读 · 0 评论 -
Openvswitch手册(9): Flow
这一节我们将flow tableflow table主要由ovs-ofctl命令操作ovs-ofctl可以走和openflow controller一样的协议:ssl:ip[:port]: The specified SSL port (default: 6633) on the host at the given ip, which must be原创 2014-11-04 18:30:42 · 3207 阅读 · 0 评论 -
Openvswitch手册(3): sFlow, netFlow
这一节,我们重点看sFlow采样流sFlow(Sampled Flow)是一种基于报文采样的网络流量监控技术,主要用于对网络流量进行统计分析。sFlow系统包含一个嵌入在设备中的sFlow Agent和远端的sFlow Collector。其中,sFlow Agent通过sFlow采样获取本设备上的接口统计信息和数据信息,将信息封装成sFlow报文,当sFlow报文缓冲区满或是在s原创 2014-11-04 18:03:41 · 4888 阅读 · 2 评论 -
Openvswitch手册(6): QoS
这一节我们看QoS,Qos的设置往往是和flow中的policy一起使用的Open vSwitch QoS capabilities1 Interface rate limiting2 Port QoS policyQoS: Interface rate limitingA rate and burst can be assigned to an Interface原创 2014-11-04 18:17:36 · 1495 阅读 · 0 评论 -
Openvswitch手册(2): OpenFlow Controller
我们这一节主要来看ControllerController有两种:Primary Controller: 真正控制vswitch的flow table,vswitch会保持和controller的连接,如果失败,取决于bridge的fail mode。一个vswitch可以连接多个Controller,但是这些Controller之间的协作需要Controller自己来做。Serv原创 2014-11-04 17:35:21 · 1162 阅读 · 0 评论 -
Openvswitch手册(1): 架构,SSL, Manager, Bridge
Openvswitch是一个virutal swtich, 支持Open Flow协议,当然也有一些硬件Switch也支持Open Flow协议,他们都可以被统一的Controller管理,从而实现物理机和虚拟机的网络联通。Open Switch定义了一系列Flow Table,通过它来控制包的流向和结构。根据Open Flow协议,Flow Table包含matc原创 2014-11-04 17:16:52 · 2852 阅读 · 0 评论 -
Openvswitch手册(7): Interfaces
我们来看Interfacesofport: OpenFlow port number for this interface.type:system: An ordinary network device, e.g. eth0 on Linux.internal: A simulated network device that sends and receives traff原创 2014-11-04 18:24:49 · 801 阅读 · 0 评论 -
Openvswitch手册(5): VLAN and Bonding
我们这一节来看Port一般来说一个Port就是一个Interface,当然也有一个Port对应多个Interface的情况,成为BondVLAN ConfigurationPort的一个重要的方面就是VLAN Configuration,有两种模式:trunk port,这个port不配置tag,配置trunks,如果trunks为空,则所有的VLAN都trunk,原创 2014-11-04 18:11:56 · 1592 阅读 · 0 评论 -
Openvswitch原理与代码分析(8): 修改Openvswitch代码添加自定义action
有时候我们需要自定义一些自己的action,根据包头里面的信息,做一些自己的操作。 例如添加一个action名为handle_example 第一、修改ofp-actions.c文件 首先在ofp-actions.c里面添加Openflow各个版本的这个actionstatic const struct ofpac原创 2016-09-25 20:06:32 · 2357 阅读 · 0 评论