neutron中网络虚拟化技术的应用

声明:
 本博客欢迎转载,但请保留原作者信息!
 作者:柯晓东
 团队:华为杭州OpenStack团队

Neutron依赖的组件多,看起来太麻烦。买了某本珠玑的书,该书字间距太大,唠嗑比较多,知识普及了但不深入。

最后通过看问人、看代码,终于搞通了一点。字不如表,表不如图。下面尽量画图表示。

Neutron将网络按照三层交换机的概念分为:
  Network:隔离的L2域,可以是虚拟、逻辑或交换,同一个网络中的主机彼此L2可见
  Subnet:隔离的L3域,IP地址块。其中每个机器有一个IP,同一个子网的主机彼此L3可见
  Port:相当于交换机的一个物理端口,可以设置IP和MAC

Neutron再为此在数据库里面建了几个表,它本身只管理这些表和下发配置,而把网络配置的活交给各个agent去干了。

和Nova一样,Neutron也定义了很多种的插件来适配不同的网络虚拟化技术。
但纵使Core driver有很多种,我想大家也只会用ML2 driver。因为只有它可以同时使用多种虚拟化技术。
ML2又分为Type Driver和Mechanism Driver。
  Type Drivers:表示Network的方式,类型有这几种local、flat、vlan、vxlan、gre
  Mechanism Drivers:指导Port怎么创建,和网络虚拟化技术相匹配

gre

ovs自动搞定

vxlan

ovs自动搞定

vlan

需要设置交换机

local/flat

不常用

 
在nova那边,libvirt基本把所有的底层事情都做完了,nova只要管调用libvirt就可以了。
Neutron却没有那么幸运,虽然可以靠ovs(openvswitch)控制转发,但是不管各种网桥的初始化。neutron不管为了保证网口可靠性的组bound,也不管为了Host间通讯的交换机的设置。

先上Neutron整体的网络图 (点击查看大图)

Neutron只负责linux bridge的创建和配置、ovs网桥(br-int、br-ethx、br-tun)的配置,其他各个部分的创建和配置都要另外自己作。

下面就依次详细介绍各部分:
(1)物理网络类型
该类型对应ML2的Type Drivers,就是数据包出了主机后传送的模式。
flat就是把各个物理口直接用网线将各个主机连起来,这样各个子网就不能隔离。
GRE、Vxlan则是通过软件的方式在同一根网线上传送多个子网的数据包。他们要使用br-tun,这个网桥neutron会自己自动建。这两种组网用的隧道,neutron也会自己建立。有N个主机的话,最大需要建立N*(N-1)条隧道。
Vlan则是使用交换机来隔离多个子网。交换机一般的家里是没有的,而且还要另外配置好交换机的端口,这就导致这种类型的网络很少被使用。

这里顺便说一点交换机的知识。
如上图所示,交换机的接线方式也分3种(untag、tagged、pvid+untag)。其中“tagged”和“untag”的区别如下:

tagged(上图黑圈)

untag(上图白圈)

接收

当数据包本身不包含VLAN的话,输入的数据包就加上该缺省vlan;如果数据包本身已经包含了VLAN,那么就不再添加。

输入的数据包全部都要加上该缺省vlan,不管输入的数据包是否已经有VLAN标记。

发送

如果端口缺省VLAN等于发送的数据包所含的VLAN,那么就会将VLAN标记从发送的数据包中去掉;如果不相等,则数据包将带着VLAN发送出去,实现VLAN的透传。

不管端口缺省VLAN为多少,是否等于要输出的数据包的VLAN,都会将VLAN ID从数据包中去掉。

“pvid+untag”是“untag”的特殊形式,它在untag基础上,再加上了缺省vlan也是当前的vlan。

交换机中有3种不同的类型的网口:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值