术语:
SDN:Software Defined Network,软件定义网络
ACI:Application Centric Infrastracture,以应用为中心的基础网络架构
Fabric:ACI的交换矩阵,数据转发平面,统常将整个ACI的基础网络架构,即整个网络设备的集合就叫一个Fabric
APIC:Application Policy Infrastructure Controller,就是控制器,负责策略下发,控制层面
Spine:骨干节点,相当于核心交换机
Leaf:叶子节点,相当于接入层交换机
我们先来看一组数据:
2015年2月:Nexus 9000用户1700,ACI用户300+
Cisco's Nexus 9000, ACI customers grow
http://www.networkworld.com/article/2883169/cisco-subnet/ciscos-nexus-9000-aci-customers-grow.html
2015年9月:第1000个ACI用户
Danske Bank: Our 1000th Cisco ACI Customer!
http://blogs.cisco.com/news/danske-bank-our-1000th-cisco-aci-customer
2015年10月:150+ 用户将ACI部署于生产网络,总共的ACI用户在1000+
https://twitter.com/ciscodc/status/651434380460601344
2016年6月:ACI用户1,800+
5 Reasons Customers Have Made ACI The Market Leader
Network World声称Cisco ACI技术是SDN部署方案的市场领导者,全球有1,800+用户选择ACI作为他们的SDN解决方案。
http://blogs.cisco.com/datacenter/5-reasons-aci
从以上几组数据来看,思科ACI用户的增长率超过每年100%,在全球的数据中心有着大量的部署,而从国内来看也很多的数据中心用户已经或正在尝试部署ACI来作为他们的SDN解决方案。SDN作为下一代的数据中心解决方案现在几乎已经是共识,但是关于这方面的资料和技术细节国内的资料却很少,所以开这个博客的目的主要是跟大家一起分享下这个技术的具体细节,尝试尽量用大白话的,非技术语言的方式来说说ACI到底是一种什么样的技术,欢迎大家一起来学习交流。
什么是SDN?
那么首先,什么是ACI? ACI是思科的SDN解决方案。
什么又是SDN呢?我会先列出SDN的一些特点,然后逐条的用简单的语言来描述它,来看看思科ACI是怎么实现SDN的这一系列特点的。
个人认为具备以下特点的网络就可以称之为SDN(Software Defined Network)网络:
- 集中化管理:网络硬件设备可以集中式管理。怎么理解呢?想象一下在我们传统的数据中心网络中,设备的维护和管理是怎么进行的?我们可能有上百台的接入层交换机,有汇聚层、核心层交换机、出口路由器,分支机构互联路由器、防火墙、IPS/IDS、负载均衡器等等。在传统的网络中,我们如果要配置某一台设备需要单独登陆到每台设备上进行管理,如果要升级设备版本需要单独每一台进行升级,配置备份需要单独操作等等,总之在传统的网络中设备的管理是分散化的,是需要针对每一台进行操作的,而在SDN的技术实现中,我们只需要对一台设备,也就是所谓的控制器Controller进行配置,可以想象成整个数据中心的所有网络设备组成了一台大的,虚拟的,统一管理的设备,而无论是对设备进行配置还是进行软件升级都只在一台设备-控制器上进行,这就是所谓的集中化管理。
- 控制层面、转发层面分离:可以这么理解,对比传统网络来说,比如说一台路由器,控制层面就是协议层,比如OSPF路由协议,决定了我有哪些路由,可以去往哪些网络,而数据层面呢就是具体根据路由协议下发到硬件中的表项,一个数据包从入接口进来,根据什么样的策略,根据什么样的表项,将要转发到哪个接口出去。对于传统网络来说,控制层面和数据层面同时运行于一台物理设备上,如果这台物理设备(路由器/防火墙)挂了,那么转发就会受到影响。而对于SDN网络来说,整个网络由具体负责数据转发的网络设备和负责策略下发的控制器组成。控制器下发具体的策略,举例来说,控制器决定某台防火墙要配置什么样的策略,某个网络设备要配置什么样的路由协议等等,在控制器上配置完成后会将策略推送至具体的网络设备,网络设备根据策略生成相应的表项进而进行数据转发。那么这么做具体有什么好处呢?个人认为有2个好处:第一,当然实现了第一点的集中管理。第二,控制层面和数据层面隔离后网络更加的健壮,控制器故障,也就是控制层面故障,不影响具体的数据转发。
传统网络架构:控制层面与转发层面同时都在网络设备上
SDN网络架构:控制层面与转发层面分离,控制层面由控制器Controller负责,转发层面由网络设备负责
- 自动化部署:怎么理解呢?对比来讲,在传统网络中上线一台设备,我们需要给它进行设备软件版本升级、互联端口需要配置IP地址或是二层的Trunk配置,需要决定它的互联方式(互联/上联需要连接什么设备,用什么接口、配置什么地址)等等,而对于SDN实现来说,这一过程将大大简化,拿思科ACI来讲,上线一台设备只需要将些设备的上联接口插上线,然后加电。版本升级、设备配置、IP地址分配等一系列操作将自动完成。
- 开放接口:提供南北向接口。简单来讲北向接口就是说我提供一个接口让别人来管理我,比如提供接口让网管设备、自动化编排工具来管理SDN网络。而南向接口则是提供接口让我可以管理别人,比如说用于实现配置管理、策略下发以及集成第三方的设备,比如F5的负载均衡、Palo Alto/FortiGate的防火墙、VMware Vcenter、Microsoft SCVMM、Openstack等虚拟化环境。
- 可编程化:可以运行软件脚本对网络进行一定的操作,比如网络监控,流量统计等等。
- 动态监控,流量可视化:可以针对性的对网络进行动态的浏览监控、健康检查等。
- 松耦合性:即服务器终端与接入层交换机的耦合度低,服务器可以连接至Fabric中任意一台接入层交换机。
以上则为SDN网络的一些特点,而下面我将会慢慢展开来说一说ACI技术是怎么样满足以上的一些技术特性的,希望大家看完后能对思科ACI技术有一个感性的认识。
ACI的物理架构
先解释几个名词:
Fabric:在思科的一些高级产品(比如Nexus 7000系列)中也有Fabric的概念,可以理解或翻译成交换矩阵。而在ACI中,Fabric指的是如上图所示的Leaf交换机和Spine交换机组成的基础架构网络,也就是整个ACI网络中所有的硬件交换设备的集合,整个数据转发层面,叫做Fabric
Spine Layer:骨干交换机,ACI Fabric的核心设备
Leaf Layer:叶子交换机,ACI Fabric的接入层交换机
ACI Fabric的特点:
- 二层Spine-Leaf结构:Leaf交换机上连至所有Spine交换机,Leaf交换机之间不互联。Spine交换机只用于连接Leaf交换机,所有其它设备包括Server、负载均衡、防火墙等ACI Fabric外的设备均连接至Leaf交换机
- 高带宽:Leaf至Spine支持40G/100G速率上连,有几台Spine就有几条40G链路,如上图所示,在4个Spine的情况下,每个Leaf的上联带宽是160G。在传统的网络中,一般接入层交换机至汇聚层交换机的上联速率只有1个G的带宽
- 易于扩容:如果Fabric带宽不够,则可以简单的扩容Spine节点,若Fabric下联接口不够,则可以简单的扩容Leaf节点
- 消除STP:在传统网络中,接入层交换机和汇聚层交换机之间一般会使用STP技术来在冗余设计的同时避免网络环路,但STP有两个问题:第一,STP协议会Block掉其中一条链路,比如说一台接入层交换机双上联到两台汇聚层交换机,虽然我们有2根1G的链路,但实际上因为STP的Block,所以实际上只有1G的上联带宽可用;第二,在网络拓扑发生变化时,比如接口翻动、链路故障等情况下,有可能依然会产生环路或者临时的环路影响数据转发。而在ACI中,整个Fabric在底层使用VXLAN技术,Spine和Leaf之间运行了ISIS协议来维护VXLVAN的VTEP信息,消除了传统二层网络的问题。同时,因为使用VXLAN技术,所以Leaf上联至Spine的每根链路都是可以同时使用的
- 控制层面分离:APIC作为ACI的控制器,负责策略的下发和设备的配置,一般使用3台APIC作为冗余,即使三台APIC全部故障都不影响数据转发,只是不能再对整个Fabric进行配置
- 统一管理:整个Fabric的所有配置都是在APIC上单点进行管理的,APIC上作配置,然后下发至Spine和Leaf交换机
- 松耦合:位置和标识的解耦合。位置(Location)指的是一台Server连接在哪台交换机上,而标识(Identity)指的是这台Server本身,比如IP 192.168.0.1代表Server-1这台Server本身。因为使用VXLAN作为Overlay技术,使得终端可以连接至任意一台Leaf交换机,实现Server标识和位置的解耦合。
ACI其实是一台虚拟的、大的、模块化交换机:
拿Nexus 7000来比喻的话,APIC相当于引擎,Spine相当于交换矩阵,而Leaf交换机则相当于Nexus 7000的线卡。
ACI的集中化管理
- 集中化管理:APIC作为ACI的SDN控制器,负责对整个Fabric进行配置。所有Fabric内的物理设备(比如Spine/leaf交换机、防火墙、负载均衡、VMware Vcenter等等)和路由协议、转发策略、动态监控等都可以在APIC上进行配置
- 控制层面分离:APIC作为ACI独立的控制层面,负责配置和策略的管理和下发。一般使用3台APIC进行冗余,即使所有APIC设备故障或断开与Fabric连接,不影响即有业务的数据转发,唯一的影响是不能继续对Fabric进行策略的配置和下发。
- 数据层面分离:Spine+Leaf交换机组成了ACI Fabric的数据转发层面,进行数据的高速转发。
松耦合/分布式网关
- 位置松耦合:同一网段或不同网段的终端无需接入到固定的接入层交换机上,终端可以连接至任意一台leaf交换机。
- 分布式网关:当为一个网段(比如10.1.1.0/24)配置了网关后(比如10.1.1.1),那么这个网关将同时存在于所有的leaf交换机上,这也是使得终端可以任意连接的原因。