最近刚开始学SDN,在公司的internal traning材料上找到了一些关于SDN的介绍的课程,觉得讲的挺通俗易懂的,所以想在这里做个总结。(写的特别入门,大牛不要喷)


首先介绍下SDN出现的背景,从数据中心讲起。

当前的Data center的架构是怎样的呢?拿一个简单的网上订票系统举例,

当有人订票时,network应该为订票app分配资源,而订票结束时,资源回收,也就是网络具有可伸缩性。而现在的数据中心网络却不支持这种动态的连接,它是一种基于静态的网络模型,它会一直为这个app预留固定资源。关于data center这里涉及到两个影响因素,cloud-based application和 server vituralization.


cloud-based app: 还是以订票网站为例,其实是一个3层模型,首先是presentation  tier, 包含防火墙,SSL鉴权服务器等用以login 和 password的验证,建立SSL连接。

然后是business tier, 也就是app的核心,调数据和进行处理。可包含load balancer,用以和其他app负载均衡,然后通过应用服务器去访问数据库中的数据。也就是最后的Data Storage tier。

所以对于每一个用户使用每一个app在每一层之间都需要大量的网络连接,通常是用vlan进行划分,但所有的配置都是提前进行pre-config。

通常,服务器堆叠在rack中通过2条10G的以太cable和rack顶层的交换机相连。各rack交换机又和上层交换机相连,然后再和数据中心edge-router相连。而这一切的物理连接和网络配置都是manually&pre-configured的。



server vituralization:

传统的server只支持单一操作系统,app运行在操作系统中,而OS又运行在server硬件上。服务器虚拟化指的是在OS和硬件层中加上一层virtualization layer, 使得单一硬件可以运行不同OS的不同app。Virtualization层中的核心软件叫做hypervisor,著名的有ESXI,KVM,HyperV,Zen等。Hypervisor的主要作用就是确保不同虚拟机间互不影响,以及为其分配不通硬件资源,例如virtual eth interfaces(用以各虚拟机通过hypervisor中的virtual switch相连或者连接外网)所以和传统server只有1个物理网络相比,虚拟化的server有40-100个网络,网络更加动态化。


这两点都和现在固定的网络环境产生了冲突,除此之外,云计算平台(cloud orchestration)和SDN也是关联很紧密的,云计算平台它通过监管不同虚拟机占用的资源,达到动态智能进行compute和storage。然而,传统的network对这种动态结构支持的并不好。