openstack neutron 二/三层网络实现

本文详细探讨了OpenStack Neutron中网络虚拟化的组件Neutron,包括在Linux bridge和Openvswitch环境下,如何实现layer2的local、flat、vlan、vxlan网络类型,以及layer3网络的实现。分析了各种网络类型的特性和应用场景,并阐述了在不同场景下如何配置和使用这些网络类型。
摘要由CSDN通过智能技术生成

引用声明:https://zhangchenchen.github.io/2017/02/12/neutron-layer2-3-realization-discovry/

一、概述

  Neutron是openstack中提供网络虚拟化的组件,根据二层网络的实现方式不同(即agent的不同),Linux bridge方式,Openvwitch的方式。而且, lay2 网络分为local、flat、vlan、vxlan等类型(gre与vxlan类似,暂不考虑);本文就分析两者实现方式在这四种实现方式在这四中网络中的具体实现差异。因为vxlan会依赖lay3层网络,所以还会分析下lay3网络的实现。

二、lay2 local型网络

  生产环境中,local与flat网络是不会被使用的,vlan与vxlan是使用比较多的layer2网络。因为local网络只支持在同一宿主机的虚拟机互联,而flat网络会每个网络独占宿主机的一个物理接口,这在现实世界中是不允许的。但是vlan与vxlan的实现都是在local,flat网络的基础上实现的,所以还是有必要看一下这两种类型的网络的实现的。

  Linux bridge 实现local型网络

    对于每个local network, ML2 linux-bridge agent会创建一个bridge, instance的tap设备连接到该bridge。位于同一local network的instance会连接同一个bridge,这样instance之间就可以通信了。但因为bridge没有与宿主机物理网卡相连,所以跟宿主机无法通信,也没法与宿主机之外的其他机器通信。下图为示例:

  •  图中创建了两个local network, 对应两个网桥。
  •    VM0 和 VM1在同一个local network 中,它们之间可以通信。
  •    VM2位于另一个local network,无法于VM0和VM1通信。
  •    两个local network都有自己的DHCP server,由dnsmasq在各自独立的net namespace实现, 通过tap设备挂接在各自network 的bridge上;
 openvswitch实现local型网络 

  ovs的实现要相对复杂些,neutron完成相应配置并启动后,ovs-agent会调用ovs自动创建三个ovs bridge,br-ex,br-int和br-tun,看名字大概也可以猜出,br-ex是用于外部网络,br-int是内部虚拟机的网络,br-tun是用于overlay network。也就是vxlan类型的网络会用到该bridge。local network值考虑br-int bridge。 示例图如下:

  •  图中每个instance并不是跟之前一样通过tap设备直接挂载在ovs的br-int上,而是通过一个新建的linux bridge以及一对veth pair跟br-int相连,为什么这么做呢,因为Open vSwitch 目前还不支持将 iptables 规则放在与它直接相连的 tap 设备上,这样就实现不了Security group,所以就加了一个linux bridge以支持iptables。  <
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值