暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

思科SDWAN探秘(1)--基础架构

zartbot 2021-01-11
1099
这也是一个系列的文章,主要包括以下内容:
  1. 基础架构和OMP路由

  2. 手工部署SDWAN最小化环境

  3. 基础设施即代码(IaC)-基于Terraform和Ansible部署

  4. Day2运维技巧

  5. 有空就补一些分享一些成功案例和部署经验


下面我们先看第一个内容,基本架构和OMP路由,您会在此了解到思科SDWAN为什么要设计多个控制组件,以及相应的路由工作流程。同时文末还有一个手工安装的快速介绍,当然您可能会觉得安装比较复杂,但是没关系,我们会在第二篇文章中带你使用Terraform和Ansible完全自动化的快速部署控制器。

“请您务必记住,本文后面的演示只是为了给您讲解整个安装的流程,您可能会觉得非常繁琐,但是没关系,我们稍后会推荐您使用Terraform和Ansible自动化一键部署的方式安装,实现完全的基础设施即代码(IaC)的运维能力”

1. SDWAN架构解析
1.1 为什么有多个控制器:  分布式架构避免单点故障和多云冗余
当我们实施SDWAN的时候,为了运维方便必须要实现控制器,而控制器又是一种中心化的软件架构,如何保证控制器不失效或者更进一步,如何把控制器做成一个分布式软件放置在多云环境中,这便是SDWAN去中心化的第一个挑战。

思科将SDWAN控制器拆分成三类组件便是出于分布式软件架构和多云部署的考虑,它将业务逻辑分为了编排vBond, 管理vManage,控制vSmart,转发Edge四个不同的功能组件,任何一个组件都能在多云环境下部署并构成集群,如下图所示:

这样极大的提高了在多云环境下的稳定性,任何一个云出现故障都不会导致SDWAN控制器下线。


1.2 控制器功能概述 

vBond:所有的广域网分支路由器节点都通过vBond作为安全认证的第一个接入点,然后由vBond编排选择可用的控制平面节点vSmart和管理平面节点vManage,同时vBond还被用于STUN业务帮助分支路由器发现自己的公网地址(NAT Traversal)。当分支路由器连上vBond后,vBond会反馈其公网地址信息,同时负责验证分支路由器的安全证书等,最后分配并告知分支路由器所需连接的vSmart和vManage。

vSmart:控制平面节点,用于控制面的路由接收和反射分发及实现和分发大量的控制策略。

vManage:管理平面节点,用于统一的WebUI界面管理和运维,集中式的配置各种策略和相应的模板,并监控运维数据和性能状况,处理告警信息等。


1.3 如何隔离网络

当你考虑将自己的广域网转发矩阵放置于Internet上时,SDWAN第一件事便是考虑到网络安全合规要求,隔离互联网和私有网络。通常我们把一个设备连接互联网的接口称为传输端口(Transport Interface)而连接VPC或者私有网络/数据中心的接口称为业务端口(Service Interface),如下图所示:

同时默认在非安全区域添加了默认安全策略组,仅有授权通过的白名单VPN流量和控制器流量可以通过。在转发平面上,通常我们会为他们放置不同的路由虚拟转发表(VRF)将它们完全隔离开。


1.4 如何标记站点

不同的VPC或者客户的分支站点甚至是数据中心,后面接的网络服务器容器或者是终端,我们都可以抽像为资源,或者就是不同的IP地址段来表示,并且可以通过不同的属性将它们进行VPN隔离,也就是我们常说的Overlay层,而Internet区域也被称为Underlay。那么Underlay和Overlay层是如何映射的呢?当然所有的人都会说MP-BGP协议进行TLV扩展来支持键值对(Key-Value Pair)。

直接使用MP-BGP或者BGP-EVPN的问题:

1. Underlay公网地址经常变动,BGP路由协议收敛慢

2. 通常VPC需要跨越NAT,标准的BGP协议NextHop为VPC私网地址,无法穿越NAT

3. 优选路径类型无法在单独的下一跳信息中获得,通常还需要Community熟悉扩展

4. 互联通信还需要NHRP一类的协议进行补充

这些都是思科在尝试使用DMVPN技术构建IWAN解决方案时犯的错误,DMVPN或者DSVPN的解决方案有明显的中心Hub结构,极易造成单点故障或者规模无法扩展的问题。

思科新一代基于Viptela的SDWAN架构采用递归路径查询的方式,它结合和BGP和LISP的各自优点,将Overlay所对应的VPC网段等资源信息映射到一个被称作为TLOC的资源定位符上,如下图所示,然后再递归查询通过解析TLOC可达性等信息来进行路径选择和策略路由。

具体的TLOC编码如下图所示,我们对每一个VPC站点进行了编码(Site-ID),同时为每一个路由器也编制了System-IP,然后根据它们接入的不同运营商和不同的链路类型,我们为传输接口(Transport Interface)染上了不同的颜色(Color),例如Azure被标记为了Private2(紫色),数据中心的电信链路标记为蓝色(Blue),而联通的线路则标记为红色(Red)。封装形式(Encapsulation)则可以选择明文的GRE传输或者IPsec传输方式。



我们根据这些TLOC编码信息就可以产生VPN路由了,即将VPC的网段和资源信息和TLOC绑定了,如下图所示,VPN1:Prefix-D1的资源的路由下一跳属性被标记为TLOC <2.2.2.2, INET,IPsec>及<2.2.2.2,MPLS,IPsec>,即VPN1:Prefix-D1可以同时通过vEdge-D(system-ip=2.2.2.2)的这台路由器的INET网络和MPLS到达,但是约定必须使用IPsec加密封装的方式传达。

VPN路由通过OMP协议更新发送到控制平面vSmart上,并由vSmart集群分发到其它路由器,它的作用和BGP UPDATE消息以及BGP RR路由反射器功能类似。


1.5 分布式路径选择

经过控制器vSmart集群的反射,vEdge-S(1.1.1.1)已经知道VPN1:Prefix-D1的资源可以通过2.2.2.2的这台路由器到达了,但是还缺少一些信息,广域网Underlay的地址是什么?加密需要的密钥是什么?这里就需要递归查询的第二步了,如何将TLOC和Underlay的信息关联,很简单,再发一个BGP UPDATE消息让vSmart反射就好了,如下图所示


在TLOC Route信息中包含了IPsec的SPI/Auth/Encryption密钥等信息,同时还有NAT穿越的信息, 因为很多场景中,VPC给路由器分配的是私网地址,NAT地址翻译是云服务提供商做的,所以需要通过某种方式获得自己公网地址,这个时候vEdge会通过向vBond编排器集群查询的方式,让vBond编排器将其公网地址信息反馈回vEdge实现。

在获取了TLOC的Underlay信息后,vEdge-S便对会话进行BFD检验,同时测量延迟抖动和丢包等链路质量特征,它会根据自身的情况,进行TLOC可达性测量,并构造出一张TLOC 路由信息表,如下图所示:

最后,Overlay的VPN1:Prefix-D1的路径查询第一步查询TLOC,第二步再查询TLOC路由表,选择可达的或者SLA满足的路径查询到Underlay的封装和传输参数,然后将报文发出。这样的递归查询带来了极大的灵活性,例如我们可以根据不同的VPN定义不同的Overlay拓扑结构和选路规则:



2. 站点编址
2.1 Site-ID
Site-ID编制方式和邮编有几分相似之处,在六位数的Site-ID编码中官方建议的方式如下,当然您也可以根据自己的喜好编码.


2.2 System-IP
这个值的作用和Router-ID类似,主要用于标识设备和用于TLOC编址,它并不需要是一个可路由的地址,也不需要把它配置成某个接口的地址。


文章转载自zartbot,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论