OpenStack neutron vlan 模式下的网络包流向

时间:2015-01-15 18:09:41

 


 

1、什么是Neutron?

    Neutron是OpenStack的network project ,是NaaS(networking-as-a-service)专题,负责网络虚拟化,开始于OpenStack的Folsom版,取名为Quantum,在Havana版本改名为Neutron。Neutron并非提供特定的网络功能,而是为了管理网络,提供网络服务,你可以使用不同厂商开发的插件,在同一个架构中可以同时拥有多种网络模式(vlan、gre、vxlan等),当然前提是使用ml2插件。

2、为什么是Neutron?  

    1、云租户可以按照自己的意愿进行网络设计

    2、允许各租户添加各种网络插件

    3、Neutron提供丰富的网络服务,诸如LB-aas,firewall-aas等

 


 

3、Neutron当中vlan模式的网络包流向

    

这张图主要想说明三种场景,第一:位于不同物理机上的虚拟机与虚拟机的通信;第二:位于同一物理机上的虚拟机与虚拟机之间的通信;第三:虚拟机与外网的通信。

不同物理机上的虚拟机之间的通信:

    vlan模式下的网络特点:每一次的通信多需要进行vlan号和tag号的相互转换,其中将vlan号转换为tag号是在int-br-xxx,将tag号转换为vlan号是在phy-br-xxx;int-br-xxx和phy-br-xxx是一对veth设备,其中int-br-xxx位于桥br-int上,phy-br-xxx位于桥br-xxx上;

    包从VM1出来到达compute1的网卡,已经将tag转换为vlan号,因此包带着vlan号进入交换机,寻找相应路径进入compute2经过桥br-int将vlan号转换为tag号,从而进入虚拟机VM2;

那么在这个过程当中包经过了哪些设备?

查看虚拟机的ip

nova list|grep vnc-test
| 187949aa-0c6f-47d9-b9b3-317e8eea7897 | vnc-test              | ACTIVE | -          | Running     | net=10.0.0.231                |

 根据虚拟机的ip查找port id:

neutron port-list|grep 10.0.0.231
| b4396540-8b7f-4386-9db5-3e1660a7ff48 |                                  | fa:16:3e:e0:1b:58 | {"subnet_id": "5d9500ef-2f11-4455-9398-478026939659", "ip_address": "10.0.0.231"}    |

第一个字段便是port id(b4396540-8b7f-4386-9db5-3e1660a7ff48),tapxxx、qvbxxx、qbrxxx通过brctl进行相关联,可以使用命令在相应的计算节点上查看:

brctl show

bridge name bridge id STP enabled interfaces
qbrb4396540-8b 8000.9afa4f3bb650 no qvbb4396540-8b
                       tapb4396540-8b

 

eth2是数据网络(虚拟机与虚拟机之间通信的网络),其中桥br-eth2与eth2进行桥接,它们可配ip也可不配;

当包从交换机到达eth2进入br-eth2(ovs-vsctl add-port br-eth2 eth2,往桥br-eth2添加端口eth2),经过phy-br-eth2转发到int-br-eth2,在这里将vlan号转换为tag号(一个vlan号对应一个tag号),从而包到达虚拟机;

同一物理机上的虚拟机之间的通信:

此场景与上一场景唯一的区别在于无需通过交换机。


 

虚拟机与外网的通信:

包从VM1出来到达交换机(在到达compute1的网卡时已经将tag号转换为vlan号),从交换机到达网络节点,经过namespace,在经过网络节点的外网网卡,与外网进行通信。

详细解释:

 VM1(虚拟机)->eth0(VM1虚拟机的网卡)->br-int->br-eth2->eth2->switch->eth2(网络节点网卡)->namespace(br-ethx(包从phy-br-eth2端口转发到int-br-eth2(在这里将vlan号转换为tag号))->br-int(qr-xxx)->br-ex(qg-xxx))->网络节点的外网网卡;

 使用如下命令查看namespace:

ip netns

 

使用如下命令进入namespace,xxxx代表ip netns执行结果的内容:

 

ip netns exec xxxx  bash

 

 

 

4、结语

这是在Icehouse版本上,Juno版本,已将qr-xxx和qg-xxx分隔开来(前提是使用dvr)。neutron_packet_flows-notes-handout这篇文章有必要去读读(对于刚开始接触OpenStack Neutron这块的人员),该文件我已上传。

相关链接:https://wiki.openstack.org/wiki/Neutron

转载于:https://www.cnblogs.com/wtfbk/p/4227103.html

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值