理解OpenStack中的OpenvSwitch的几个要点
2014-02-18 10:51
337 查看
OpenvSwitch是实现虚拟化网络的重要基础组件,在OpenStack中利用OpenvSwitch作为底层部件来完成虚拟网络提供和租户网络管理。
在部署和应用OpenStack的过程中,可能会碰到网络相关的一些问题,能够准确的理解OpenStack中OpenvSwitch的角色和网络的理念,会有助于解决问题和快速部署。
OpenvSwitch可以认为是一种Linux Bridge的实现,只不过功能更多一些。因此,它完全可以替代Bridge。原先Bridge可以实现的功能在OpenvSwitch中都可以实现。
OpenvSwitch不等于OpenFlow Switch,恰恰相反,支持OpenFlow只是它的一个feature而已,可能还没有支持OvsDB协议更重要。因此,它在实现上自定义了很多地方,只是兼容OpenFlow协议。比如在OpenvSwitch中用户态的vswitchd和内核态的datapath。vswitchd会总管流表,而datapath中有精确匹配的部分流表,类似cache架构。
正因为OpenvSwitch不仅仅是一个OpenFlow Switch,它的流表组成除了of流表外,还有其他一些(隐藏)流表。这些隐藏流表是由于默认交换机和控制器在同一网络中(in-band),因此要保证两者互通。要关闭默认的inband可以通过“ovs-vsctl
set controller br0 connection-mode=out-of-band”。
检查所有流表信息可以通过ovs-appctl bridge/dump-flows br0,这往往要比ovs-vsctl dump-flows br0打印出更多的信息来。ovs-dpctl
dump-flows [dp]可以打印出datapath的流表信息。ovs-appctl
dpif/dump-flows <br>可以打印出指定bridge上的datapath流。
OpenvSwitch可以实现访问控制功能,通过转发规则,可以实现简单的安全行为,包括通过、禁止等。现在OpenStack中的安全组是由iptables实现的,造成在节点上多了好几级的Bridge。理论上,以后都可以统一由OpenvSwitch来管理。
支持VLan(eth0为trunk口,创建vlan 1的tap0口):
ovs-vsctl add-br
br0
ovs-vsctl add-port br0 eth0
ovs-vsctl add-port br0 tap0 tag=1
OpenvSwitch 在无法连接到控制器时候(fail mode)可以选择两种fail状态,一种是standalone,一种是secure状态。如果是配置了standalone(或者未设置fail mode)mode,在三次探测控制器连接不成功后,此时ovs-vswitchd将会接管转发逻辑(后台仍然尝试连接到控制器,一旦连接则退出fail状态),OpenvSwitch将作为一个正常的mac 学习的二层交换机。如果是配置了secure mode,则ovs-vswitchd将不会自动配置新的转发流表,OpenvSwitch将按照原先有的流表转发。可以通过下面命令进行管理。
ovs-vsctl get-fail-mode bridge
ovs-vsctl
del-fail-mode bridge
ovs-vsctl set-fail-mode
bridge standalone|secure
在部署和应用OpenStack的过程中,可能会碰到网络相关的一些问题,能够准确的理解OpenStack中OpenvSwitch的角色和网络的理念,会有助于解决问题和快速部署。
OpenvSwitch可以认为是一种Linux Bridge的实现,只不过功能更多一些。因此,它完全可以替代Bridge。原先Bridge可以实现的功能在OpenvSwitch中都可以实现。
OpenvSwitch不等于OpenFlow Switch,恰恰相反,支持OpenFlow只是它的一个feature而已,可能还没有支持OvsDB协议更重要。因此,它在实现上自定义了很多地方,只是兼容OpenFlow协议。比如在OpenvSwitch中用户态的vswitchd和内核态的datapath。vswitchd会总管流表,而datapath中有精确匹配的部分流表,类似cache架构。
正因为OpenvSwitch不仅仅是一个OpenFlow Switch,它的流表组成除了of流表外,还有其他一些(隐藏)流表。这些隐藏流表是由于默认交换机和控制器在同一网络中(in-band),因此要保证两者互通。要关闭默认的inband可以通过“ovs-vsctl
set controller br0 connection-mode=out-of-band”。
检查所有流表信息可以通过ovs-appctl bridge/dump-flows br0,这往往要比ovs-vsctl dump-flows br0打印出更多的信息来。ovs-dpctl
dump-flows [dp]可以打印出datapath的流表信息。ovs-appctl
dpif/dump-flows <br>可以打印出指定bridge上的datapath流。
OpenvSwitch可以实现访问控制功能,通过转发规则,可以实现简单的安全行为,包括通过、禁止等。现在OpenStack中的安全组是由iptables实现的,造成在节点上多了好几级的Bridge。理论上,以后都可以统一由OpenvSwitch来管理。
支持VLan(eth0为trunk口,创建vlan 1的tap0口):
ovs-vsctl add-br
br0
ovs-vsctl add-port br0 eth0
ovs-vsctl add-port br0 tap0 tag=1
OpenvSwitch 在无法连接到控制器时候(fail mode)可以选择两种fail状态,一种是standalone,一种是secure状态。如果是配置了standalone(或者未设置fail mode)mode,在三次探测控制器连接不成功后,此时ovs-vswitchd将会接管转发逻辑(后台仍然尝试连接到控制器,一旦连接则退出fail状态),OpenvSwitch将作为一个正常的mac 学习的二层交换机。如果是配置了secure mode,则ovs-vswitchd将不会自动配置新的转发流表,OpenvSwitch将按照原先有的流表转发。可以通过下面命令进行管理。
ovs-vsctl get-fail-mode bridge
ovs-vsctl
del-fail-mode bridge
ovs-vsctl set-fail-mode
bridge standalone|secure
相关文章推荐
- 看视频时,类加载器没太理解,现在再整理下几个要点
- Nova几个简单的概念--有助于OpenStack的源码理解
- 看视频时,类加载器没太理解,现在再整理下几个要点
- 我所理解的网页推广设计的几个要点
- 测试人员应对开发人员的几个要点
- 理解 Cinder 架构 - 每天5分钟玩转 OpenStack(45)
- 读入字符串函数的几个要点
- tomcat配置jdbc数据源几个要点
- 增强骨骼动画系统的几个要点
- 对offsetLet,offsetTop,scrollLeft,scrollTop几个方法的理解
- html 深入理解超文本知识要点
- SpringMVC使用的几个要点
- 龙芯软件开发(9)--理解龙芯2E几个汇编问题
- OpenStack Availability Zone和Aggregate Hosts理解
- 关于python-flask框架中的几个文件的理解
- 深入理解Apache Mina (2)---- 与IoFilter相关的几个类
- Java EE几个重要概念理解
- [大战WEBSPHERE]安装DOCUMENTUM WEBTOP APPLICATION的几个要点
- Flex加载swf的几个要点
- 外企邮件制度的几个要点