http://www.xytdyy.com

Neutron 精晓 (3State of Qatar: Open vSwitch + GRE/VxLAN 组网 [Netruon Open vSwitch + GRE/VxLAN Virutal Network]

现代社会,随着信息的高速发展,企业都通过建设数据中心来满足业务发展,一些大型企业已不再局限于部署在单个数据中心,从单中心到两地三中心再到异地多活中心,这首先得益于分布式技术的进步及网络带宽的不断提升;与此同时数据中心网络互联技术也在与时俱进,可能网络工程师每天都会听到Overlay、SDN、VxLAN等新概念,其实这几个概念你中有我、我中有你,并不玄妙,本质上都是传统的TCP/IP网络无法满足目前大规模云数据中心对网络边界延展及资源灵活接入要求,而提出来的一些自动化虚拟化等解决方案。可以说新时代的网络工程师应该跳出网卡网线、交换机、路由器等实实在在物理设备形成的固化思维,从网络互联互通本质出发,本文简单谈一下数据中心互联技术和典型应用。

学习 Neutron 系列文章:

本篇文章主要介绍了"VXLAN, 一种叠加在L3网络上的L2网络 ",主要涉及到VXLAN, 一种叠加在L3网络上的L2网络 方面的内容,对于VXLAN, 一种叠加在L3网络上的L2网络 感兴趣的同学可以参考一下。

一、Overlay网络技术的发展

(1)Neutron 所实现的虚拟化网络

这几天看了下RFC7348,顺便翻译了一下,根据自己理解做了注解

所谓Overlay网络,指的是一种网络架构上再次叠加虚拟化网络的技术模式,也可以更简单的理解为一种隧道技术。其大体目的是在基础物理网络不进行大规模修改的前提下,创建一个或多个逻辑网络,实现各类应用在网络上的承载,并能按应用功能、安全等维度实现不同网络间的业务隔离。这种模式仍然基于TCP/IP协议,其实是传统网络进行技术优化而形成的网络。

(2)Neutron OpenvSwitch + VLAN 虚拟网络

虚拟化及租户隔离

与之相对,传统网络可以称为Underlay网络,它由物理设备和物理链路组成,常见的物理设备包括交换机、路由器、防火墙、负载均衡、入侵检测等,这些设备通过特定的链路连接起来形成了一个物理网络。Overlay与Underlay的称呼有多种场合,比如SDN提出的转发控制分离思路,用来承载控制信息的计算节点可以称为为Overlay网络,而底层专用于数据高速转发的白牌交换机可以称为Underlay网络;再有学各种IE的人都接触过的BGP路由协议,底层OSPF等动态协议也可以称为Underlay,BGP自身则是一种Overlay。可以说Overlay更像是一种思想而不是具体的技术,本文并不作发散讨论,只是介绍Overlay在数据中心网络互联中的应用方式,用一种具体的技术来承载就是VxLAN。

(3)Neutron OpenvSwitch + GRE/VxLAN 虚拟网络

服务器虚拟化增加了对物理网络基础设施的需求,服务器有多个虚机,要求交换机支持更大的MAC地址表。

图片 1

(4)Neutron OVS OpenFlow 流表 和 L2 Population

在数据中心场景下,虚机按照VLAN分组,可能需要成千上万的VLAN,以便用来给为按照VLAN标签分组的虚机分隔流量。但是当前VLAN机制限制最多只能有4096个VLAN。

图1 数据中心网络转发技术演进

(5)Neutron DHCP Agent

数据中心需要支持多个租户,每个租户需要分隔的网络域,单独实现分离的网络域不经济。管理员一般基于共享网络进行隔离。各租户独立进行VM的MAC和VLAN的分配,可能在共享的同一个物理网络上,出现MAC和VLAN的冲突。

VxLAN是Virtual eXtensible Local Area Network的缩写,它是一种用于支持云计算和虚拟化大范围应用的Overlay网络技术,它可以应用在数据中心内网也可以用于跨中心网络互联,本质其实是一样的,都是一种新的二层网络互联转发方式。VxLAN利用Layer 3网络对Layer 2进行overlay处理。该协议报文中使用一个24比特位的VXLAN Segment ID(也叫VXLAN Network Identifier,即VNI)标识一个唯一的二层广播域、子网或租户地址,再通过网络中的隧道终结点VTEP(Virtual Tunnel End Point)与传统网络对接,实现VxLAN的封装、解封装。从诞生到现在,VxLAN协议已越发成熟,击败多个网络领域的不同对手,例如Trill、OTV、NVGRE、STT等,成为Overlay网络的代言和SDN组网的核心技术及典型架构。

(6)Neutron L3 Agent  

在虚拟化场景下,还有一个需求是基于第二层在整个数据中心,或者跨数据中心进行扩展,扩展计算,存储和网络资源,此时传统的用来避免路径循环的STP协议,会使得更大数量的失效链路出现。此时,虽然更倾向于使用IP进行物理基础设施的链接,比如,为了实现多路径的扩展,使用ECMP避免生效链路,但是维持虚机间的L2通信依然是需要保留的。

图片 2

(7)Neutron LBaas

以上场景导致了overlay叠加网络的需求,这个叠加网络用来将来自虚机的携带MAC的流量,封装后通过逻辑隧道传递。VXLAN就是这样的一种实现overlay网络的方式。

图2 VxLAN报文格式

(8)Neutron Security Group

和VXLAN相关的常用术语有

二、数据中心网络互联技术遇到的挑战

(9)Neutron FWaas 和 Nova Security Group

ACL      Access Control List 访问控制表

再回到数据中心互联的问题上,业界简称DCI(Data Center Interconnect)。首先DCI其实就是网络互联发展到一定阶段的产物。哪怕最小的数据中心也要有互联,比如某个小企业用写字楼办公室改造的小机房,它需要把服务器和存储连接起来,需要和其他办公地点及互联网通信,这都是网络互联;而有点规模的大企业都有自建或者租赁的专门数据中心机房,每个机房可能有若干模块,放置不同级别的服务器,这些服务器可能组成集群统一对外服务,或承载不同应用互相通信完成一个业务流,这也是网络互联。而一些较大规模的企业拥有多个数据中心,比如金融行业典型的“两地三中心”,都是通过各种DCI技术实现单个中心到多个中心网络互联。

(10)Neutron VPNaas

ECMP     Equal-Cost Multipath 等价多路径

目前DCI互联主要有几种技术:一是不同的数据中心采用不同的IP地址网段,多活应用系统分别部署在不同中心,每个中心有独立的出口路由器,中间有高速的运营商专线网络或自建的核心承载网,具有相同安全级别、业务属性或功能类型的服务器分别安全部署在不同数据中心,不同数据中心通过三层路由互联,可以称为“应用层三层多活”;二是不同的数据中心采用统一的IP地址,每个中心的出口路由器只用于外界机构或业务的接入,内部相同安全级别、业务属性或功能类型的服务器不管位于哪个中心,都位于同一个网络二层,不需路由即可互通,逻辑上相当于同一个数据中心,这种称为“数据中心二层双活”。两者相比,大二层双活对应用透明友好,相对而言应用无需改造,可以较易实现双活及迁移,同时对于防火墙、负载均衡等设备的跨中心集群部署也较方便,这种模式对数据中心互联裸光纤资源、DWDM光传输设备比较依赖。应用层三层多活比较容易隔离广播域,但需要应用进行改造支持多中心部署,同时对互联带宽要求较高,并且需要应用能够按需在多个中心进行快速切换。目前金融行业同城数据中心采取二层互联模式较多,如下图结构:

(11)Neutron DVR

IGMP     Internet Group Management Protocol IGMP协议

图片 3

(12)Neutron VRRP

IHL      Internet Header Length  Internet报文头长度

图3 同城二层直连网络

(13)High Availability (HA)

MTU      Maximum Transmission Unit  最大传输单元

在同城两个数据中心部署双活应用系统,网络上一般采用如VPC、M-LAG等交换机直连技术,在骨干节点将同城两个中心的二层网络打通,形成物理分隔、逻辑统一的一张网。同网段IP地址的服务器集群可透明部署,不管是1+1、2+1、2+2还是负载均衡的容灾架构,都可以自由分布于两个数据中心,应用同时对外提供服务。

 

PIM      Protocol Independent Multicast 协议无关的多播

随着云计算和虚拟化发展,二层网络遇到一定挑战:网络规模的限制

    目前,OpenStack Neutron 支持使用两种隧道网络技术 通用路由封装(GRE) 和 VxLAN 来实现虚拟的二层网络。这两种技术大致看起来非常相似,都是需要使用 OpenStack 在计算和网络节点上建立隧道来传输封装的虚机发出的数据帧:

SPB      Shortest Path Bridging  最短路径转发

二层网络互联时网络规模扩大容易导致广播、泛洪等问题,因此规模和服务器部署数量不宜过大,同时交换网络对网络运维人员要求较高,虽然各主流网络厂商都提供IRF/VPC/M-LAG等虚拟化链路聚合技术,最大程度上消除生成树影响,但对于厂商品牌型号和网络结构有一定依赖。数据中心数量的限制

图片 4

STP      Spanning Tree Protocol 生成树协议

二层一般主要用于同城“双”数据中心,两个中心位于同一个广播域内,采用同一个生成树协议控制交换机端口状态,如果扩容到三中心或更多节点,容易形成环路结构,同时单个中心异常容易传导到其他中心,造成更大影响。网络隔离能力的限制

在Neutron 中使用 GRE/VxLAN 时的配置也几乎完全相同。具体可以参考我已有的几篇文章:

ToR      Top of Rack  机架交换机

主流的网络隔离技术是VLAN或VPN,在数据中心内部组网是VLAN的天下,但在大规模虚拟化部署场景下,VLAN数量在标准定义中只有12个比特,即可用的VLAN数量为4000个左右,这样的数量级对于云或容器等消耗vlan较多的技术而言略显不足,其多租户、多应用系统等网络隔离要求轻而易举会突破Vlan数量限制。

  • 探索 OpenStack 之(8):Neutron 深入探索之 OVS + GRE 之 完整网络流程 篇
  • 探索 OpenStack 之(7):Neutron 深入探索之 Open vSwitch (OVS) + GRE 之 Neutron节点篇
  • 学习OpenStack之(6):Neutron 深入学习之 OVS + GRE 之 Compute node 篇

TRILL    Transparent Interconnection of Lots of Links 多链路透明互联

三、Overlay网络在数据中心互联的应用

本文将不再重复说明这些配置细节。本文将试着分析两种技术本身的异同,以及Neutorn 中的代码过程。

VLAN     Virtual Local Area Network  虚拟LAN

VxLAN Overlay网络在目前云数据中心环境中的应用场景大体包括各区域服务器接入及数据中心互联,该技术架构下可支持三点及以上多中心互联,不管在同城多活数据中心部署还是机房迁移等场景下都有用武之地。简单总结VxLAN Overlay解决的问题:提供弹性可扩展的大二层网络

1. Overlay 网络

VM       Virtual Machine  虚机

VxLAN Overlay网络主要利用封装技术,可以在三层网络中实现二层网络的扩展,因为三层网络通过路由方式在网络中分发,而路由网络本身并无特殊网络结构限制,具备良性大规模扩展能力,并且对设备本身无特殊要求;由于三层本身具备很强的的故障自愈能力、负载均衡能力。与二层网络相比,三层网络规避了生成树等技术弊端,使得整个网络更加健壮。无需维护庞大的mac/arp表

1.1 Overlay 技术概述

    Overlay 在网络技术领域,指的是一种网络架构上叠加的虚拟化技术模式,其大体框架是对基础网络不进行大规模修改的条件下,实现应用在网络上的承载,并能与其它网络业务分离,并且以基于IP的基础网络技术为主。Overlay 技术是在现有的物理网络之上构建一个虚拟网络,上层应用只与虚拟网络相关。一个Overlay网络主要由三部分组成:

  • 边缘设备:是指与虚拟机直接相连的设备
  • 控制平面:主要负责虚拟隧道的建立维护以及主机可达性信息的通告
  • 转发平面:承载 Overlay 报文的物理网络

图片 5

    当前主流的 Overlay 技术主要有VXLAN, GRE/NVGRE和 STT。这三种二层 Overlay 技术,大体思路均是将以太网报文承载到某种隧道层面,差异性在于选择和构造隧道的不同,而底层均是 IP 转发。如下表所示为这三种技术关键特性的比较。其中VXLAN利用了现有通用的UDP传输,其成熟性高。总体比较,VLXAN技术相对具有优势。

图片 6

VNI      VXLAN Network Identifier (or VXLAN Segment ID) VXLAN网络标识符

由于Overlay组网中,VTEP之上的网络设备采用三层互联的方式,所以一般作为VTEP的TOR交换机,其mac地址表大小仅需负责本地局部接入的各服务器,这样arp表就无需泛洪到全网。提供多租户环境下充足的vlan数量

1. 1 GRE 技术

     GRE(Generic Routing Encapsulation,通用路由协议封装)协议,是一种 IP-over-IP 的隧道,由 Cisco 和 Net-smiths 等公司于1994年提交给IETF,它对部分网络层协议(IP)的数据报进行封装,使这些被封装的数据报能够在 IPv4/IPv6 网络中传输。其协议格式见RFC2784( GRE 将普通的包(如ip包)封装了,又按照普通的ip包的路由方式进行路由,相当于ip包外面再封装一层 GRE 包。在本例子中,在 GRE 包外围实际上又有一层公网的ip包。 

   GRE 使用 tunnel(隧道)技术,数据报在 tunnel 的两端封装,并在这个通路上传输,到另外一端的时候解封装。你可以认为 tunnel 是一个虚拟的点对点的连接。(实际 Point To Point 连接之后,加上路由协议及nat技术,就可以把两个隔绝的局域网连接在一起,就实现了NetToNet的互联)。一般 GRE turnel 是在多个网络设备(一般为路由器)之间建立。因为 linux 服务具备路由转发功能,所以当您缺少专业的路由设备的时候,可使用 linux 服务器实现 gre turnel 的建立(实际上巨大多数网络设备都使用unix或linux系统)。

 

图片 7

这篇文章 很好地解释 GRE 的原理和一个应用场景。

VTEP     VXLAN Tunnel End Point.  An entity that originates and/or

在Overlay技术中引入了类似传统网络12比特VLANID的用户标识,使用24位VNI,达到支持1600万级的用户标识,有效解决公有云等多租户环境下对VLAN数量的需求。

1.1.1 应用场景

    办公网(LAN 192.168.1.0/24,并通过固定的公网IP上网)和 IDC (LAN 10.1.1.0/24,并有多个公网ip,两者通过公网ip互联)这两个局域网 (或者任意两个不同局域网) 相互隔离。但是在日常运维和研发过程中,需要在办公网访问IDC网络。如果都通过公网 IP 绕,既不方便,也不安全;拉专线是最稳定可靠的办法,但是成本高。

terminates VXLAN tunnels  VXLAN隧道端点

典型的多数据中心DCI采用VxLAN Overlay 组网后的架构如下示例:

1.1.2 使用 GRE 的配置

如果公司有多余的固定的公网 ip 或者路由器本身支持GRE,建议使用 GRE 方案。

(1)办公网路由器(linux服务器实现):局域网IP 192.168.1.254,公网 IP 180.1.1.1 配置。

cat /usr/local/admin/gre.sh #并把改脚本加入开机启动

#!/bin/bash
modprobe ip_gre #加载gre模块
ip tunnel add office mode gre remote 110.2.2.2 local 180.1.1.1 ttl 255 #使用公网 IP 建立 tunnel 名字叫 ”office“ 的 device,使用gre mode。指定远端的ip是110.2.2.2,本地ip是180.1.1.1。这里为了提升安全性,你可以配置iptables,公网ip只接收来自110.2.2.2的包,其他的都drop掉。
ip link set office up #启动device office 
ip link set office up mtu 1500 #设置 mtu 为1500
ip addr add 192.192.192.2/24 dev office #为 office 添加ip 192.192.192.2
echo 1 > /proc/sys/net/ipv4/ip_forward #让服务器支持转发
ip route add 10.1.1.0/24 dev office #添加路由,含义是:到10.1.1.0/24的包,由office设备负责转发
iptables -t nat -A POSTROUTING -d 10.1.1.0/24 -j SNAT --to 192.192.192.2#否则 192.168.1.x 等机器访问 10.1.1.x网段不通

IDC路由器(linux服务器实现):局域网 ip:10.1.1.1,公网 ip110.2.2.2配置
cat /usr/local/admin/gre.sh#并把改脚本加入开机启动

#!/bin/bash
modprobe ip_gre
ip tunnel add office mode gre remote 180.1.1.1 local 110.2.2.2 ttl 255
ip link set office up
ip link set office up mtu 1500
ip addr add 192.192.192.1/24 dev office #为office添加 ip 192.192.192.1
echo 1 > /proc/sys/net/ipv4/ip_forward
ip route add 192.168.1.0/24 dev office
iptables -t nat -A POSTROUTING -s 192.192.192.2 -d 10.1.0.0/16 -j SNAT --to 10.1.1.1 #否则192.168.1.X等机器访问10.1.1.x网段不通
iptables -A FORWARD -s 192.192.192.2 -m state --state NEW -m tcp -p tcp --dport 3306 -j DROP #禁止直接访问线上的3306,防止内网被破

配置示意图:

图片 8

然后两个局域网中的机器就可以互通了。

VXLAN    Virtual eXtensible Local Area Network  VXLAN

图片 9

1.1.3 过程    

图片 10

过程:

  1. GRE turnel 的打通:这个过程就是双方建立turnel的过程。
  2. 局域网路由过程
    (1)主机 A 发送一个源为192.168.1.2,目的为 10.1.1.2 的包。
    (2)封装过程
            1、根据内网路由,可能是你的默认路由网关将之路由至 192.168.1.254。
            2、192.168.1.254 第一次封装包,增加 GRE 包头,说明包的目的地址 192.192.192.1 和源地址192.192.192.2。
            3、192.168.1.254 第二次封装包,增加公网的包头(否则在公网上无法路由),说明包的目的地址 110.2.2.2 和源地址 180.1.1.1。
            4、192.168.1.254 把所有到 10.1.1.0/24 的包,源地址都转换为从192.192.192.2 出(snat)。
  3. 公网路由过程:经过n个路由设备,该包最终路由到110.2.2.2。
  4. 拆包过程
            1、B端的路由器检测到是到达自己的 IP,就开始拆包。
            2、拆包之后发现有GRE协议,就进一步拆包。
            3、拆包之后发现目的地不是自己的内网ip、发现自己本地做了snat,就将其源IP替换为10.1.1.1。
  5. 局域网路由
            1、实际上从 10.1.1.1 出发的,到达目的地为 10.1.1.2 的包,无需路由,直接在局域网内广播。10.1.1.2 的机器确定是发送给自己的包,就接收。然后进一步处理了。

(注:以上文字皆摘自 )

VXLAN Segment    VXLAN段

图4 VxLAN多中心组网

1.1.4 GRE 的不足

GRE 技术本身还是存在一些不足之处:

(1)Tunnel 的数量问题

    GRE 是一种点对点(point to point)标准。Neutron 中,所有计算和网络节点之间都会建立 GRE Tunnel。当节点不多的时候,这种组网方法没什么问题。但是,当你在你的很大的数据中心中有 40000 个节点的时候,又会是怎样一种情形呢?使用标准 GRE的话,将会有 780 millions 个 tunnels。

(2)扩大的广播域

   GRE 不支持组播,因此一个网络(同一个 GRE Tunnel ID)中的一个虚机发出一个广播帧后,GRE 会将其广播到所有与该节点有隧道连接的节点。

(3)GRE 封装的IP包的过滤和负载均衡问题

    目前还是有很多的防火墙和三层网络设备无法解析 GRE Header,因此它们无法对 GRE 封装包做合适的过滤和负载均衡。 

VXLAN Layer 2 overlay network over which VMs communicate

郑重声明:本文版权归娱乐在线所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。