一提到数据中心网络,很多人脑海里立马会显示出各种设备操作命令。与Linux系统类似,网络设备的交互方式也是命令行,通过向网络设备输入各种设备识别的命令,达到运维和部署网络的目的。数据中心进入了新一代的网络世界,这些传统的网络设备操作方式也要随之改变,网络的可编程时代到来了。可编程是将网络设备配置平面从嵌入式节点独立出来到软件平台,由软件驱动的控制节点自动化控制网络架构,它以开放软件的模式替代传统基于嵌入、不够灵活的控制平面,其中SDN技术是可编程方面的具体体现。
说到SDN,它并不能代表可编程网络的全部,但的确是可编程网络的重要组成部分。SDN并不是一种具体技术,它是一种网络设计理念,规划了网络的软件、硬件、转发面和控制面及相互之间的互动关系,重新定位了网络体系架构,将网络分为:转发层、控制层、业务编排层和应用层。我们常说的SDN控制器,就是指的控制层软件,通过Openflow向转发层下发流表,以此来指导流量的转发行为。控制器就是整个网络运转的大脑,通过大脑控制着整个网络。显然,SDN中还有更高级的业务编排和应用层,这些部分可以直接对控制器进行可编程设计,实现对网络控制,也可以跨过控制器,直接对转发层设备进行可编程,使用转发层设备识别的编程语言进行操作和设计,这样不仅实现网络流量转发控制,还实现了运维、管理和排障的可编程自动化管理。其实,SDN控制器将转发流表下发到硬件网络设备上,工作就已完成了大半,更多的可编程工作还是要交给业务编排和应用层。所以,在很多的云网络中,除了SDN控制器之外,还会有可编程的运维、管理和排障软件,这些软件有各种各样丰富的软件编程接口,比如:RESTful、SOAP、C、Java、XML。这些编程语言当然还不能直接控制转发层设备,要通过业务编排转换成为转发层设备可识别的语言,向转发层设备下发就可以了。比如:VCC、CLI、TCL、Python、Netconf等等,设备接受的基本都是这些脚本语言,这些语言执行效率高,基本可以和汇编语言媲美了。这些脚本语言按照设备识别的格式,将要执行的信息结合到脚本当中,实现对网络设备的控制。比如:配置下发、业务部署、故障诊断和日常网络监控等等都可以通过这些脚本语言实现,这些才是可编程网络的关键部分。