术语:

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交换机上,这也是使得终端可以任意连接的原因。

思科ACI是一种什么样的技术?的更多相关文章

  1. 一文学会最常见的10种NLP处理技术

    一文学会最常见的10种NLP处理技术(附资源&代码)   技术小能手 2017-11-21 11:08:29 浏览2562 评论0 算法 HTTPS 序列 自然语言处理 神经网络 摘要: 自然 ...

  2. [阿里Hao]Android无线开发的几种经常使用技术

    本文由阿里巴巴移动安全client.YunOS资深project师Hao(嵌入式企鹅圈原创团队成员)撰写,是Hao在嵌入式企鹅圈发表的第一篇原创文章.对Android无线开发的几种经常使用技术进行综述 ...

  3. PMP132种工具与技术

    <PMBOK ® 指南>第六版中共包括 132 种工具与技术 <PMBOK ® 指南>使用了以下工具与技术分组:1.数据收集技术.用于从各种渠道收集数据与信息.共有9 种数据收 ...

  4. 四种会话跟踪技术以及jstl介绍

    四种会话跟踪技术 page:代表与一个页面相关的对象和属性.一个页面由一个编译好的 Java servlet 类(可以带有任何的 include 指令,但是没有 include 动作)表示.这既包括 ...

  5. 转!!常用的4种动态网页技术—CGI、ASP、JSP、PHP

    1.CGI   CGI(Common Gateway Interface,公用网关接口)是较早用来建立动态网页的技术.当客户端向Web服务器上指定的CGI程序发出请求时,Web服务器会启动一个新的进程 ...

  6. 基于HTTP协议的几种实时数据获取技术

    原文链接https://www.cnblogs.com/xrq730/p/9280404.html,作者博客园----五月的仓颉,转载请注明出处,谢谢 HTTP协议 HTTP协议大家都很熟悉了,开始本 ...

  7. Delphi 使用 Datasnap 的几种三层应用技术总结

    Delphi 使用 Datasnap 进行三层应用开发,积累了几种技术,总结如下: 1.(推荐!)在 Datasnap 服务端 使用 TDatasetProvider,客户端 使用   TDSProv ...

  8. 大话存储 3 - 七种磁盘RAID技术

    RAID技术 Redundant Array of Independent Disks 由独立的磁盘组成的具有冗余特性的阵列. 有两个特性: 阵列:需要很多磁盘来组成 冗余:允许某块磁盘损坏之后,数据 ...

  9. 亿级PV请求的三种负载均衡技术

    在互联网+不断渗透到生活中的今天,各种各样的网络服务存在在我们身边,他们的访问流量也是大得惊人.一个大型网站(百万PV以上)想要正常访问,单单靠一台服务器是不可能提供稳定服务的.这时候就需要用负载均衡 ...

随机推荐

  1. 钉钉如何进行PC端开发

    前段时间,用钉钉进行了服务器端的开发,对照着官方文档,感觉还是比较顺利的.后续想有时间研究一下PC端客户端的开发,看着官方文档,说的确实是比较简练,但也确实没看太明白,废了半天劲也没成功.后来经过无数 ...

  2. JavaScript学习笔记-函数实例

    函数实例 var p = { a:15, b:'5', f1:function(){ var self = this; console.log(self.a+self.b); f2(); functi ...

  3. swift学习笔记之-类和结构体

    //类和结构体 import UIKit //类和结构体 /* 1.枚举enum.结构体struct和String.Array.Dictionary类型,都属于值传递类型,被赋值给新的常量或变量时传递 ...

  4. JavaScript强化教程——JavaScript 总结

    本教程中我们向您讲授了如何向 html 页面添加 JavaScript,使得网站的动态性和交互性更强. 你已经学习了如何创建对事件的响应,验证表单,以及如何根据不同的情况运行不同的脚本. 你也学到了如 ...

  5. View的事件体系

    View的滑动 实现手段 优点 缺点 备注 scrollTo/scrollBy 使用简单 只能滑动view的内容,并不会滑动view本身. 且内容超出view本身的布局范围部分的不会显示 不适合有交互 ...

  6. C语言中的数组的一些笔记

    C语言是面向过程的语言. 计算数组长度: Int count =sizeof(ages)/sizeof(int); C语言里面输出字符串,必须以'\0'结束,如果没有则一直执行下去. Char nam ...

  7. PHP操作mysql数据库:[2]查询数据听语音

    本文主要详细讲解如何使用php语言,对mysql数据库进行查询.添加.删除.更新等操作. 工具/原料   Macromedia Dreamweaver 8 mysql数据库,php语言 一.前言   ...

  8. ASP.NET MVC SSO 单点登录设计与实现

    实验环境配置 HOST文件配置如下: 127.0.0.1 app.com127.0.0.1 sso.com IIS配置如下: 应用程序池采用.Net Framework 4.0 注意IIS绑定的域名, ...

  9. 定义返回Block的函数

    鉴于Block与函数的相似性,先从返回函数指针的函数入手 返回函数指针的函数 int fun1(int arg){ return arg + 1;}int fun2(int arg){ return ...

  10. MongoDB 优点

    任何关系型数据库,具有典型的架构设计,显示表和这些表之间的关系.虽然在 MongoDB中,没有什么关系的概念. MongoDB比RDBMS的优势 架构:MongoDB是文档型数据库,其中一个集合保存不 ...