分享是一种生活态度,求知,求真,分享工作,分享生活!

SDN简介(转载)

Cisco iqianyue 1773次浏览 0个评论 扫描二维码

1, SDN是什么?

Software Defined Network==SDN  ,从字面来说就是软件定义网络。那么问题来了,什么是软件定义网络呢?网络如何用软件定义呢?目前的网络和SDN有啥区别呢?SDN有啥优势呢?

说是软件定义网络,如果使用过cisco等内部有自己OS的设备,比如思科的IOS,那么不难发现,其实cisco的传统交换机也是以“软件”定义的,因为我们通过IOS进行设备的管理配置等。IOS对于设备来说也是一种”软件“那么为何要在cisco 华为等传统网络设备厂商如日中天的情况下,并且在IOS等网络设备操作系统发展如此成熟下推出了SDN呢?

首先我们要说说openflow和SDN的关系。大体来说openflow是实现SDN的一种形式。openflow最早又斯坦福大学提出。目的是为了掀起一场互联网革命。但是openflow不是SDN唯一的实现方式,只不过是目前openflow比较流行,并且openflow的理念比较契合SDN的精神罢了。

SDN定义的网络是包括控制器与网络设备这2种,其中控制器和网络设备是互相独立的。如果说网络设备找不到控制器应该是无法进行任何工作。反之如果只有控制器的话那么也是光杆司令一个。毕竟数据的承载还是需要网络设备的。通过在控制器上发布程序让网络设备运作这就是SDN的本质。如果不太好理解那就看看下面的例子。

2,SDN有什么好处?

在工作中不难发现,传统网络设备是相对独立的,每配置一台交换机必须先登录此交换机。然后再把配置刷上去,然后要校验配置。将来各个企业的数据中心越来越大,对于传统网络架构是一种很大的挑战。如果今天业务部门要求上10个柜子,那岂不是要配置至少10台柜顶交换机?另外上联口是否要配置呢?核心设备是否要改动呢?防火墙设备是否要改动呢?如果不10台是100台交换机那一个普通的网络工程师要鏖战多少个不眠之夜呢?SDN的好处就是才用了控制器和设备独立的结构。所有挂的控制器下的设备,只要通过修改SDN控制器即可往下发布配置了。以往要一台台的刷配置 一台台的验证配置是多么的不灵活,现在只要交换机上架然后在控制器上做好配置下发即可。这是SDN的好处之一。即节省了网络变更的工作量。

有接触过无线领域的朋友不难发现,控制器对应交换机,看上去像wlc对应瘦AP的一种体现,但是如果仅仅是认为SDN方便了部署变更,那也是有偏颇的。

上面这个例子是说了控制器与交换机分离,由控制器去做统一的管理方便了配置变更等的工作。这只不过是SDN好处之一,SDN的关键是软件定义—Software Defined  如何软件定义也是我刚刚接触SDN时的最大难题。软件到底怎么定义了网络呢?再举个例子各位朋友可以想想在传统交换机上如何实现。

比如说一台交换机现在要求f0/0端口每天10~12点会属于vlan10。每天12~13点端口关闭。13~次日5点从这个端口进入访问8.8.8.8的流量从f0/24口转发。其他时间访问8.8.8.8从f0/23转发。

对于一个传统交换机来说,以上的配置是一个几乎完全不能实现的任务。如果一定要我去实现。那么我会选择找一台linux服务器用expect写脚本。在每一个时间段自动登录到相应的交换机上修改配置。其实不难看出如果用这种方式解决那么可以说这台Linux其实也是一种控制器了。那么我们与其要找一台控制器专门为了不同的设备还要写不同的命令,登录不同的IP写不同的脚本。不如统一一下,把各种厂商的设备都设置一个叫做openflow协议。然后那台Linux服务器上安装一个openflow的控制器,我们的expect可以用更加高级的python或者其他语言替代,控制器与交换机间跑openflow。这样一个简单的SDN网络就初步实现了。

这是SDN的又一个好处,就是随心所欲的控制网络。我们不妨看看openflow这种协议。要理解openflow。我们首先要知道什么是flow——流!

什么是流?通常意义上来说可以把2个源目地址相同TCP访问源目端口也相同的2个数据流看成一个flow也就是一个流,那么流就是对数据路径的一种概况。openflow也就是这样做的。在openflow中可以定义匹配的flow,并且定义相应的action,比如说匹配从f0/0口进来的数据从f0/24发出等等。如果在通过python这类高级程序语言的加入。流表的操作通过python写程序。那么通过强大的程序能力。不难实现我上面的那种变态需求

3,SDN给传统网络带来的挑战,以及SDN的不足

从以上的例子,不难看出,SDN的优势在于部署灵活,控制能力超群。任何一个交换网络不免要考虑的spanning tree问题 vlan透传问题,在openflow这种基于流控的协议面前完全是渣渣。只要符合流表的编制,我可以说任何2台服务器都能互通。我们还需要考虑A服务器在vlan10 B服务器在vlan20吗?如果在匹配里面写pack_in match vlan 20 …action pack_out f0/24那么在这种情况下vlan就是仅仅是一个标记了。在一个SDN网络里面 有时候就不用去受太多传统网络的禁锢了。因为设备都基于流了,交换机按照流转发,而不是仅仅是mac地址IP地址了。这是多么的精细,颗粒化啊!所以无论是cisco 华为,还是现在的一下新兴企业都开始想在SDN的大蛋糕上切下来几块。SDN对于传统网络的挑战是很大的,他颠覆了很多老思维的观念。未来是不可估量的。

前面说了很多SDN的”好话“,现在开始要切换到吐槽模式了。SDN从概念的推出到现在已经有7个年头了。但是目前市面上的SDN产品少之又少。究其原因,首先SDN这种概念还未深入人心。很多网工听过SDN感觉这个老死都用不上。毕竟现在SDN真正的应用也体系在大的公司比如谷歌百度,运营商电信联通。很多人没听过SDN不理解SDN也是正常的。因为没用过!也没这种需求要使用。另外就是SDN这种模式让传统的网络工程师不太好接受。很多网络工程师对排错啊基本的协议啊都了如指掌。你问他BGP的选路原则他可以倒背如流。你让他用python写个if语句他要憋半天了。说白了就是没有掌握开发能力故对SDN产生一种排斥。毕竟如果SDN是未来的话。如何不掌握一定的程序开发能力,以后说不定真要被革了命了。所以广大的有老思想排斥新思维的网工门也是SDN普及的障碍之一。最后关键的问题就是目前的SDN协议,设备还未完善,openflow出到了1.5版以后还有很长的路要走。设备的稳定还要加强。比较是去做基于流的转发对于CPU的消耗也是不小的。这对设备的稳定也是一个很大的挑战,毕竟传统的交换机已经问世了如此长的时间。

以上就是我对SDN的一点感悟,目前我也正在学习这一技术,此文有众多错误也请海涵。至于是SDN是否是未来的革命,以及将来的网络架构如何变动。一切都是未知。但是SDN的提出确实对我产生了震撼。不想当厨子的CCIE不是个好网工。不学SDN的网工不是个好厨子。大家共勉!


iqianyue , 版权所有丨如未注明 , 均为原创,转载请注明iqianyue
喜欢 (5)
[]
分享 (0)
发表我的评论
取消评论

表情 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址