OVS 派OFPT_PORT_STATUS 流程】的更多相关文章

依据openflow合约[OFP1.0-38],当从物理端口ovs datapath 添加,改动或者删除的时候.都会先运行详细动作.然后通过ofp_port_status异步消息告知Controller,比方当我们运行 ovs-vsctl add-port br0 eth0 之类的命令后,就会更新ovsdb数据库.某一个轮询时全局变量 reconfiguring 变为true,从而会又一次配置这个ovs. if (reconfiguring) { // cfg 条目能够追踪到ovsdb中某个配置…
处理upcall总体框架: 1.由函数handle_upcalls()批量处理(in batches)的是由内核传上来的dpif_upcalls,会解析出upcall的类型.这里主要看在内核中匹配流表失败的MISS_UPCALL. 处理完毕后会得到多个flow_miss. 结构体dpif_upcall代表的是由内核传到用户空间的一个包,包含上传原因,packet data.以及以netlink attr形式存在的键值. struct dpif_upcall {     /* All types.…
原文发表于cu:2016-06-02 本文属于重发,ovs当前的安装方式可能略有不同. 参考文档: 官方文档: http://openvswitch.org/support/dist-docs-2.5/INSTALL.RHEL.md.html 在docker环境下搭建网桥,有传统的brctl工具(yum install -y bridge-utils),也可以采用扩展性/功能性更强大的open vswitch. ovs安装的流程是需要下载源代码之后自行制作rpm安装程序,官方已经把工具集成打包完…
前两篇博文分别研究了Compute节点和Neutron节点内部的网络架构.本文通过一些典型流程案例来分析具体网络流程过程. 0. 环境 同 学习OpenStack之(7):Neutron 深入学习之 OVS + GRE 之 Neutron节点篇 中所使用的环境. 简单总结一下: Compute 节点上由Neutron-OVS-Agent负责: br-int:每个虚机都通过一个Linux brige连到该OVS桥上 br-tun:转化网络packet中的VLAN ID 和 Tunnel ID GR…
非VXLAN的收发包调用栈 netdev_frame_hook()      netdev_port_receive()           ovs_vport_receive()                ovs_dp_process_packet()                     (在查表失败后,对于带gso标记的大包,会分片进行upcall)                     ovs_dp_upcall()                                …
在前文「从 Bridge 到 OVS」中,我们已经对 OVS 进行了一番探索.本文决定从 OVS 的整体架构到各个组件都进行一个详细的介绍. OVS 架构 OVS 是产品级的虚拟交换机,大量应用在生产环境中,支撑整个数据中心虚拟网络的运转.OVS 基于 SDN 的思想,将整个核心架构分为控制面和数据面,数据面负责数据的交换工作,控制面实现交换策略,指导数据面工作. 从整体上看,OVS 可以划分为三大块,管理面.数据面和控制面. 数据面就是以用户态的 ovs-vswitchd 和内核态的 data…
上篇分析到数据包的收发,这篇开始着手分析数据包的处理问题.在openVswitch中数据包的处理是其核心技术,该技术分为三部分来实现:第一.根据skb数据包提取相关信息封装成key值:第二.根据提取到key值和skb数据包进行流表的匹配:第三.根据匹配到的流表做相应的action操作(若没匹配到则调用函数往用户空间传递数据包):其具体的代码实现在 datapath/datapath.c 中的,函数为: void ovs_dp_process_received_packet(struct vpor…
这篇blog是专门解决前篇openVswitch(OVS)源码分析之工作流程(哈希桶结构体的疑惑)中提到的哈希桶结构flex_array结构体成员变量含义的问题. 引用下前篇blog中分析讨论得到的flex_array结构体成员变量的含义结论: struct { int element_size; // 这是flex_array_part结构体存放的哈希头指针的大小 int total_nr_elements; // 这是全部flex_array_part结构体中的哈希头指针的总个数 int e…
原文链接: openVswitch(OVS)源代码分析之工作流程(flow流表查询)…
OVS处理各个openflow消息的详细代码在 ofproto/ofproto.c 中: static enum ofperr handle_openflow__(struct ofconn *ofconn, const struct ofpbuf *msg) { const struct ofp_header *oh = msg->data; enum ofptype type; enum ofperr error; error = ofptype_decode(&type, oh); i…