基础架构和OMP路由
手工部署SDWAN最小化环境
基础设施即代码(IaC)-基于Terraform和Ansible部署
Day2运维技巧
有空就补一些分享一些成功案例和部署经验
思科将SDWAN控制器拆分成三类组件便是出于分布式软件架构和多云部署的考虑,它将业务逻辑分为了编排vBond, 管理vManage,控制vSmart,转发Edge四个不同的功能组件,任何一个组件都能在多云环境下部署并构成集群,如下图所示:
这样极大的提高了在多云环境下的稳定性,任何一个云出现故障都不会导致SDWAN控制器下线。
vBond:所有的广域网分支路由器节点都通过vBond作为安全认证的第一个接入点,然后由vBond编排选择可用的控制平面节点vSmart和管理平面节点vManage,同时vBond还被用于STUN业务帮助分支路由器发现自己的公网地址(NAT Traversal)。当分支路由器连上vBond后,vBond会反馈其公网地址信息,同时负责验证分支路由器的安全证书等,最后分配并告知分支路由器所需连接的vSmart和vManage。
vSmart:控制平面节点,用于控制面的路由接收和反射分发及实现和分发大量的控制策略。
vManage:管理平面节点,用于统一的WebUI界面管理和运维,集中式的配置各种策略和相应的模板,并监控运维数据和性能状况,处理告警信息等。
当你考虑将自己的广域网转发矩阵放置于Internet上时,SDWAN第一件事便是考虑到网络安全合规要求,隔离互联网和私有网络。通常我们把一个设备连接互联网的接口称为传输端口(Transport Interface)而连接VPC或者私有网络/数据中心的接口称为业务端口(Service Interface),如下图所示:
同时默认在非安全区域添加了默认安全策略组,仅有授权通过的白名单VPN流量和控制器流量可以通过。在转发平面上,通常我们会为他们放置不同的路由虚拟转发表(VRF)将它们完全隔离开。
不同的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路由反射器功能类似。
经过控制器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拓扑结构和选路规则: