企业在不同区域的站点之间通信时,要确保业务数据传输的私密性,如果企业的预算较充足,且业务的敏感性较高,那么通过专线互联无疑是一个很好的选择。如前文所述,SD-WAN的出现往往使得企业的选择变的更加灵活,当选择互联网线路时,企业并不希望把自己的数据暴露在其之上,通常的做法都会使用VPN来解决,思科Viptela SD-WAN缺省就是在所有广域网链路上使用IPSec VPN来建立数据平面的通信隧道的。
图9- 13 传统IPsec网络与SD-WAN的IPsec复杂性对比
在传统的IPsec VPN环境中,大部分场景下的密钥交换都是由IKE(Internet key exchange)协议自动完成,从IKE的第一阶段开始就要在每对设备之间建立IKE SA,来协商各种参数,完成彼此认证。IKE使用DH密钥交换算法生成共享密钥,最终得到加密IKE信息的密钥,后续加密用户数据的密钥也是由这个密钥演变而来。如图9- 13右侧所示,为了建立SA,每个设备与网络中的其他设备都要交换DH算法生成密钥所需的信息和创建密钥,意味着在全互联的情况下,需要管理和维护n*(n-1)个单向密钥交换路径,这是一个典型的n2问题。
因此当网络规模变大后,这种方式不易于扩展,并且IKE可能会成为启动和维护大型网络上数据交换的瓶颈。总的来说,IKE建立安全通信信道所需的握手既耗时又耗费资源,特别是当网络规模较大,密钥交换所需的处理可能会消耗大量的网络资源,并且要较长时间。思科以一种更有效且在大规模部署时更容易扩展的方式解决了这个问题,这也为传递用户业务数据的IPSec VPN隧道奠定了基础。首先如图9- 13左侧所示,数据平面身份验证相对于IKE方式来说,所有广域网边界设备的密钥都在本地生成和刷新,通过安全控制平面执行密钥交换,都会发送给vSmart Controller,再由vSmart Controller统一进行分发,这样的方式使得规模无论如何扩展,维护和管理所需的密钥路径也很少。
身份认证方面,在建立IPSec VPN隧道开始的认证阶段并没有使用IKE来完成第一阶段的IKE SA建立,而是为了数据平面密钥交换变得可扩展,利用DTLS控制平面的安全连接作为基础。因为控制平面已经通过身份验证,加密和防篡改等诸多举措建立完成,所以在通过IPSec VPN构建数据平面通道时无需设置安全通信通道来执行数据平面的身份验证。
数据私密性方面,vEdge Router通过OMP私有协议定期发送本地产生的数据加密密钥给vSmart Controller,发送方式非常类似BGP报文中携带的属性值,并且OMP协议报文是通过控制平面已经建立好的DTLS通道来发送的,本身来说它是安全且加密的。vSmart Controller收到后会再次通过OMP更新把密钥发送给其他vEdge Router,以这种方式,最终所有vEdge Router用于加密数据的密钥都被分发到整个网络中。如果在vSmart Controller上配置的控制策略限制了网络设备之间的通信通道,则vSmart Controller发送的可达性OMP通告仅包含允许它们与之交换数据的vEdge Router的相关信息。因此,vEdge Router仅为那些允许与之通信的vEdge Router学习密钥。如图9- 14所示,举例说明实际的密钥交换过程。vEdge1与vEdge2之间数据平面的通信封装在IPSec VPN隧道内,数据传输是需要加密的,vEdge1为MPLS链路和Internet链路分别生成了本地Key1、Key2的AES256对称密钥。vEdge2为MPLS链路和Internet链路分别生成了本地Key3、Key4的AES256对称密钥。vEdge1通过OMP更新发送Key1、Key2至vSmart Controller,vEdge2通过OMP更新将Key3、Key4也发送给了vSmart Controller,此时vSmart Controller会将密钥Key1、Key2通过OMP更新分发给vEdge2。将密钥Key3、Key4通过OMP更新分发给vEdge1。vEdge1和vEdge2最终具有相同的Key1、Key2、Key3、Key4,密钥的分发过程也就完成了。当vEdge1想要通过MPLS链路发送数据给vEdge2时会使用Key3加密此数据。当vEdge1想要通过Internet链路发送数据给vEdge2时会使用Key4加密数据。对于vEdge2来说反之亦然,在这个密钥交换过程中,并没有使用IKE方式来交换信息生成密钥,而是采用思科私有的方式完成。
除此之外还有一个值得关注的问题是SA 保持活跃问题。vEdge Router会将IPsec连接状态发送到vSmart Controller,如果vEdge Router彼此之间的数据连接丢失,由于在vEdge Router的IPSec VPN隧道内会使用BFD来进行例如像链路UP/Down、链路抖动、延迟、丢包以及MTU的多元化探测,所以当发现BFD数据包的交换中断,vSmart Controller会迅速获知连接已丢失,此时就认为SA失效,如果两个vEdge Router之间的IPSec VPN连接恢复,那此时SA恢复活动状态,并且也通过重新生成SA密钥的频率设置消除了对SA空闲超时的需要。缺省密钥重新生成时间为24小时,当然也可以手工重置。此外,密钥重新生成机制可确保在密钥更改时不会丢弃任何数据流量。
数据完整性方面,思科Viptela SD-WAN可以使用ESP只验证IP载荷部分,不对IP包头进行验证,当然验证部分包括ESP本身的包头。除此之外,也可以使用AH,除了验证IP载荷部分,还要验证IP包头的部分字段。最后防重放也是标准IPsec协议的一部分,它可以对所有数据包进行编号,并确保接收方只接受具有唯一编号的数据包。
由于数据包外层的IP包头中部分字段在通过NAT时会发生改变,而AH的完整性校验又是针对于整个数据包的IP包头加载荷部分,所以在传统的方式下AH协议封装的数据包是不能穿越NAT的。而思科Viptela SD-WAN的解决方案中运用了一种全新的方式使得AH协议封装的数据包穿越NAT成为可能。在AH包头里最终验证数据完整性的是通过一个叫做ICV(Integrity Check Value)的字段,发送方发送数据时会计算出ICV字段值并压入包头,然后接收方会用相同的算法计算出ICV字段值,然后将两者进行比较,如果一致,那么完整性校验通过。否则,丢弃。在缺省情况下,IPSec VPN隧道连接使用AH-SHA1、HMAC、ESP HMAC-SHA1完成身份验证,换句话说就是使用这些算法来计算ICV,当然最终使用它们之中的哪一种是协商而来的,vEdge Router会通过OMP路由更新里的属性值告知vSmart Controller它所支持的认证算法,通过vSmart Controller的分发,vEdge Router得知彼此之间使用的认证算法,它们会协商出一个最强的身份认证算法。例如,如果一个vEdge Router通告AH-HMAC-SHA1、ESP HMAC-SHA1、None,第二个vEdge Router通告ESP HMAC-SHA1、None,那最终会使用ESP HMAC-SHA1。但HMAC-SHA1和常见的SHA1是不同的,不是说简单的用Hash就能完成的,它需要一个用于校验完整性的认证密钥,通过这个密钥加上数据包中IP包头里的一些字段进行Hash得来的值就是ICV。所以说在数据平面除了交换前文中所述的对称加密密钥,还会交换用于生成HMAC-SHA1摘要的认证密钥,它们都会通过vEdge Router的OMP更新发送至vSamrt Controller并分发到网络中其他的vEdge Router。有了认证密钥后,接下来就是ICV里需要计算的IP包头里的字段值了,因为过了NAT设备后数据包外层包头的IP地址会发生变化,如图9- 15所示,当vEdge1经过NAT设备向NAT设备后的vEdge2发送数据时,接收方ICV的计算会使用源IP地址为vEdge1的Public IP,目的IP地址为vEdge2的Private IP。在传统的网络环境下,vEdge1是无法获取这些信息的,但是在思科Viptela SD-WAN的场景下,在vEdge Router上线的过程中会告知vBond Orchestrator自己的Public IP、Private IP地址及端口号,并且vBond Orchestrator还会将这些信息告知vSmart Controller,最终vSmart Controller通过OMP更新告知其它vEdge Router。这时候在vEdge1初始发送的时候计算ICV字段就会用到vEdge1的Public IP和vEdge2的Private IP。最终即便是AH封装也可以穿越NAT。
思科一系列创新的举措,为安全的多个维度带来了效率的提升,并且当控制平面自动构建完成后,数据平面的IPSec VPN也会自动建立全网的全互联IPSec VPN隧道(缺省行为)。当然用户也可以通过下一小节当中的描述,结合策略简单快捷的转换成任意的逻辑拓扑。
最后,在可靠性方面,数据平面通过BFD来提供快速的数据平面恢复能力,借助VRRP或是三层路由协议来实现站点冗余,也可以通过链路冗余,网络架构冗余这些设计理念来提高可用性。