作者介绍
李伊仁,甜橙金融信息技术部高级网络工程师,多年网络架构设计经验,实施集团支付数据平台。
网络世界每一次技术变革都需要大量时间来验证,虽然更多的技术达人对于新技术的接受能力在不断提高,但新技术的普及和应用依然需要花费大量时间。企业在发展过程中缩减预算的需求不断扩大,企业员工则通过自动化的维护平台设施来简化操作步骤,而网络世界的争论点主要集中在如何从使软件定义网络与网络虚拟化的新架构代替传统以太网架构。
STP架构网络的替代品Fabrics具有可扩展、高带宽的架构。对于SDN来说,SDN可能不像一个产品,更像一种架构。首先我们来看一下SDN与传统网络架构的区别:
一、传统数据中心网络架构逐渐落伍
在传统的大型数据中心,网络通常是三层结构。架构模型包含了以下三层:
Access Layer(接入层):接入层位与网络的最底层,负责所有终端设备的接入工作,并确保各终端设备可以通过网络进行数据包的传递。
Aggregation Layer(汇聚层):汇聚层位于接入层和核心层之间。该层可以通过实现ACL等其他过滤器来提供区域的定义。
Core Layer(核心层):又被称为网络的骨干。该层的网络设备为所有的数据包包提供高速转发,通过L3路由网络将各个区域进行连接,保证各区域内部终端设备的路由可达。
一般情况下,传统网络还存在着一些优点:
精确的过滤器/策略创建和应用:由于区域、终端地址网段明确,可以精细控制网络策略,保证流量的安全。
稳定的网络:区域的明确划分,网络设备的稳定架构,使网络更具有稳定性。
广播域的有效控制:由于三层架构中间采用L3模式设计,有效控制广播域的大小。
传统网络架构虽然稳定,但随着技术的不断发展,应用不断的多元化以及对业务的高冗余化的需求,暴露出了一些传统网络的弊端。
随着公司的发展,传统网络架构渐渐开始无法跟上步伐,逐渐出现了以下问题:
随着网络的发展、各种新技术的产生,数据中心内部、服务器之间协同处理、计算,导致由东向西的流量逐渐增大,超过了由南向北的流量。而传统三层架构服务器间交换,都要过三层核心,多层转发,增大了网络的延迟,还浪费了核心宝贵的资源。与此同时,我们将业务拆分成多个模块,并部署在不同的区域中,由于应用的不断发展,模块的数量越来越多,模块之间的调用越来越频繁,可能一次完整的应用流程需要经历数十个模块,模块之间的频繁调用大大消耗了网络设备的资源。
传统数据中心使用STP技术,虽然上联多根链路,但都是主备关系,仅有一根链路能跑流量,无法承载数据中心日益增长的业务。尽管后续使用了有相关的Ethernet Channel、堆叠、VSS等技术,来达到链路冗余的需求,但是堆叠、Ethernet Channel不可能无限地进行扩展。
随着业务的发展,计算资源被池化。为了使得计算资源可以任意分配,需要一个巨大的二层网络架构。整个数据中心网络都是多个L2广播域,这样,服务器可以在规定的区域地点创建、迁移,而不需要对IP地址或者默认网关做修改。不断地业务扩展,造就了一个巨大的二层广播域,一旦出现一点问题就造成巨大的网络问题,导致业务中断,业务的高可用性就无法保证。
随着业务的不断发展,计算资源的虚拟化。当需要进行虚拟资源部署时,严格安全防护的要求下,需要进行安全设备的策略开通。从部署到正式上线使用之间的耗时会长达1小时之久。无法满足在突发情况下,快速增加计算资源。
由于安全设备以及设备上联位置的限制,无法在任意的计算资源池中随意的创建、迁移;无法合理分配资源池的各种硬件资源,造成资源的分配不均衡。一旦某资源池已达阈值,就无法继续计算资源的横向扩展。
在使用传统网络架构时,每个业务模块都是一个烟囱结构,业务模块互相调用需要经过多个三层设备(平均需要经过6次物理设备)其中还可能包括防火墙等安全设备。受限于设备的性能,网络架构的主备方案。数据流量每经过一次设备都会增加一点延迟。虽然每一次延时都是微乎其微,但是累计次数多了,对于业务来说这个延时可能就导致用户体检较差。
二、SDN网络带来的好处
通过了解,我们深知自己的传统网络存在着一些问题,于是进行了各种技术可行性测试。为了不断提升网络的承载能力,制定过多种方案,例如:传统网络的优化、当前网络的SDN化等。
最终在机房网络架构设计中,我们开始和思科进行了比较深度的合作。目前,我们是全球第三个大规模采用了思科ACI网络技术的公司。思科APIC(Application Policy Infrastructure Controller)是以应用为中心的基础架构(ACI)结构的自动化和管理的统一集中点,提供对所有节点信息的集中访问控制,优化应用的规模和性能,并支持在物理和虚拟资源之间进行灵活的应用配置。
管理员可通过APIC提供各种丰富的API接口对设备进行配置、管理、策略下发等操作行为;控制器则通过OpFlex协议将策略推送给ACI环境中的各个节点Leaf。虽然APIC会将策略推送到各节点Leaf上,但控制器并不参与任何流量的转发,所以即使发生有5台控制存在问题的极端情况下,网络层面的流量转发功能还是可以正常稳定地运行。
最终我们在南京节点完成了SDN网络的架设,并且通过上云的最终决战8小时,完成了业务的整体迁移。虽然看起来这场战役惊心动魄,但我们的内心深处并没有太大波动,毕竟从开始POC到现在完成网络搭建,我们历经了1年时间的充足准备。特别是在前期的POC期间,我们对于一个新技术的不断研究,夜以继日地不断测试各个应用场景,换来了一次成功的战役。
网络SDN化之后,我们解决了以前的一些问题,同时也提供了更人性化的管理方式。下图是我们网络架构内部示意图:
将原有业务划分从一个应用一个区域的划分方式,在使用SDN后,变更为一个服务体系作为一个区域进行划分(例如:APP区域、数据库区域、中间件区域等)。在每个区域中划分多个Endpoint Group(以下简称EPG)来准确区分业务模块,更清晰地了解业务之间的访问关系。
在现有的SDN网络中,通过使用Anycast Gateway的方式将网关部署在各个Leaf节点上。即使有新设备加入网络,无论处于任何区域,都可以准确的进入相对应逻辑位置。
ACI,通过VM Networking与VCenter互相联动,并下发vNIC供虚拟机使用,虚拟机只需要选择对应虚拟网卡就可以进行业务上线。同时各个虚拟机对应的EPG通过合约的形式开通策略。在SDN中所有相同业务都部署在同一个EPG中,所有策略的开通并不是基于IP地址来开通,只需要在不通的EPG之间开通策略即可,所以无需像传统网络进行IP对应的策略开放方式进行SDN网络策略开通。虚拟化资源可以在任意宿主机上进行创建、迁移,没有任何的物理位置的限制。
在传统的网络交换设备中,控制平面和转发平面是紧密耦合的,被集成到单独的设备盒子中。各个设备的的控制平面被分布到网络的各个节点上,很难对全网的网络情况有全局把控。因此SDN网络一个重要的理念就是把每台单独网络设备中的控制平面从物理硬件中抽离出来,交给虚拟化的网络层处理,整个虚拟化的网络层加载在物理网络上,屏蔽底层物理转发设备的差异,在虚拟空间内重建整个网络。这样一来,物理网络资源被整合成了网络资源池,如同服务器虚拟化技术把服务器资源转化为计算能力池一样,它使得网络资源的调用更加灵活、满足业务对网络资源的按需交付需求。
将控制平面进行集中控制,中央控制器可以获取网络资源的全局信息并根据业务需要进行资源的全局调配和优化,如QOS、负载均衡功能等。同时集中控制后,全网的网络设备都由中央控制器去管理,使得网络节点的部署以及维护更加敏捷。由于集中化控制,ACI提供一个可视化的管理界面,通过界面中的评分以及错误,可以更有效的提供给运维工程师查找到问题的所在之处,提供一个快速定位的有效依据。
三、SDN架构的后期展望
思科提供了其他厂商的管理工具包供ACI使用,通过服务链(Service Chain)功能进行其他设备的配置推送。未来整个网络的配置都可以通过ACI进行远程控制,无需通过繁琐的命令行进行配置。即使对设备命令不熟悉的工程师也可以进行配置。
ACI提供丰富的API接口供第三方软件调用,建立一个自动化运维平台通过API接口进行ACI配置的推送、查看设备的运行状态实时体现。可以完全掌握整个SDN的运行状况,准确及时地判断。在问题将要发生时,得到及时的处理和解决,避免了最终解决问题已出,维护人员还未得到告警的窘相。
在网路设备中进行流量抓取取样,通过报头分析网络中数据包的走向。通过流量排序可以清晰的知道各个模块调用的次数,结合研发部门进行探讨,为优化网络、优化应用做一个准确的依据。
四、一些思考
前面说了那么多思科ACI在架构以及后期使用过程中的体验,再联想起近期思科爆出的漏洞事件,最后想就自己的一些想法来谈谈思科Smart Install的远程代码执行漏洞:
Smart Install功能是交换机在部署时配置和镜像管理功能,它可以自动换成初始化,新的交换机可以通过TFTP等协议自动加载操作系统镜像。这就意味着在无配置的管理员的情况下启动交换机,当设备配置发生变化等情况,还可以提供配置备份的功能。
Smart Install Client默认开启TCP 4786端口,用来进行Smart Install功能。当服务处理一段特殊的恶意信息,会发生交换机的缓冲区堆栈溢出,从而造成设备故障。
由于思科ACI通过控制器管理,无需额外的设备进行自动化配置等行为,故没有该漏洞。
相关阅读:上云三部曲:集团支付平台数据架构最佳实践
近期热文
微服务运维减负:Istio Service Mesh原理+实战