OVS学习过程2
来源:互联网 发布:太极旗飘扬 知乎 编辑:程序博客网 时间:2024/04/30 15:18
1 初识OVS(open vswitch)
1.1 ovs组件
1.2 Open vSwtich模块介绍
当前最新代码包主要包括以下模块和特性:
1.ovs-vswitchd :主要模块,实现switch的daemon,包括一个支持流交换的Linux内核模块;
2.ovsdb-server :轻量级数据库服务器,提供ovs-vswitchd获取配置信息;
3.ovs-brcompatd :让ovs-vswitch替换Linux bridge,包括获取bridge ioctls的Linux内核模块;
4.ovs-dpctl: 用来配置switch内核模块;
5一些Scripts and specs: 辅助OvS安装在Citrix XenServer上,作为默认switch;
6.ovs-vsctl :查询和更新ovs-vswitchd的配置;
7.ovs-appctl :发送命令消息,运行相关daemon;
8.ovsdbmonitor: GUI工具,可以远程获取OvS数据库和OpenFlow的流表。
9.ovs-openflowd:一个简单的OpenFlow交换机;
10.ovs-controller:一个简单的OpenFlow控制器;
11.ovs-ofctl :查询和控制OpenFlow交换机和控制器;
12.ovs-pki :OpenFlow交换机创建和管理公钥框架;
13.ovs-tcpundump:tcpdump的补丁,解析OpenFlow的消息;
1.3 Open vSwtich 工作流程
一般的数据包在linux网络协议栈中的流向为黑色箭头流向:从网卡上接受到数据包后层层往上分析,最后离开内核态,把数据传送到用户态。当然也有些数据包只是在内核网络协议栈中操作,然后再从某个网卡发出去。
但当其中有openVswitch时,数据包的流向就不一样了。首先是创建一个网桥:ovs-vsctl add-br br0;然后是绑定某个网卡:绑定网卡:ovs-vsctl add-port br0 eth0;这里默认为绑定了eth0网卡。数据包的流向是从网卡eth0上然后到openVswitch的端口vport上进入openVswitch中,然后根据key值进行流表的匹配。如果匹配成功,则根据流表中对应的action找到其对应的操作方法,完成相应的动作(这个动作有可能是把一个请求变成应答,也有可能是直接丢弃,也可以自己设计自己的action);如果匹配不成功,则执行默认的动作,有可能是放回内核网络协议栈中去处理(在创建网桥时就会相应的创建一个端口连接内核协议栈的)。
其大概工作流程就是这样了,在工作中一般在这几个地方来修改内核代码以达到自己的目的:第一个是在datapath.c中的ovs_dp_process_received_packet(struct vport *p, struct sk_buff *skb)函数内添加相应的代码来达到自己的目的,因为对于每个数据包来说这个函数都是必经之地;第二个就是自己去设计自己的流表了;第三个和第二个是相关联的,就是根据流表来设计自己的action,完成自己想要的功能。
- OVS学习过程2
- OVS 发送OFPT_PORT_STATUS 过程
- OVS 学习(一)
- OVS 学习(二)
- ovs命令学习笔记
- OVS中的datapath学习
- ovs vxlan学习
- OVS学习总结
- Neutron OVS 学习
- OVS处理upcall过程分析
- OVS响应OFPT_FLOW_MOD过程分析
- OVS 响应 OFPT_SET_CONFIG 过程分析
- OpenVSwitch(2):Ovs Use
- ovs
- ovs
- OVS流表查询过程分析
- OVS vswitchd 模块分析(2)
- OVS学习总结---启动流程分析
- [iOS开发]判断两个数组中数据是否相同
- 翻翻git之---史上最强的图片选择器 GalleryFinal(顺带附下麦麦,当当的近照)
- Tomcat内存设置详解
- js中this的指向
- opencv 图像直方图 calcHist
- OVS学习过程2
- HDFS之JAVA API
- 华为oj 密码强度等级
- wc统计程序行数
- ROS学习(二十)--tf/写broadcaster和listener
- iOS KVC和KVO
- FUEL8安装处理
- 79. Word Search&矩阵中的路径
- Nginx利用rewrite进行文件转移