SDN的初步学习总结

来源:互联网 发布:数据库概念第六版答案 编辑:程序博客网 时间:2024/05/30 20:08

一、前言:

       步入研究生的生活已有一个多月的时间,接触SDN的时间也仅仅只有一个月的时间,之前老听说SDN技术,认为SDN技术就是下一代互联网,那个时候的理解大概来自各个厂家的炒作,没有太多的实质性的了解。 刚刚开始接触SDN,它唯一给予我的感觉是将这个技术能够创造出来的团队是多么的伟大,虽说这个技术的出现仅仅是时代的需要,但我也觉着这个技术给予我们太多的可能性,但是接触一个新颖的技术是痛苦的,因为你没有传统的方法去学习它,现在屏幕上面到处充斥着SDN技术的文档,作为初学者,你没有那么多的辨别能力,你不知如何从这些数据库中找寻你需要的资料,这里很感谢两个网址:www.sdnap.com和Google,在这里你可以找到你需要的问题的解答。但是初学者,依旧还是那么对知识充满着凌乱,当然这里也有会自己的思考,但是有时候实在不知道怎么去弄的时候,这个时候需要的仅仅就只有坚持,一种对知识的热爱,对研究的坚持。

过了一个月,在导师的鞭策下,我也觉得是时候应该对自己的SDN学习做个总结了,当然有些见解可能不是那么的到位,希望各位能够给予指正!

二、初步了解过程:

       第一次对SDN的认识仅仅也只是停留在字面的认识,即software defined network(软件定义网络),通俗的理解是网络的可编程化,用户可以通过编程来实现自己的网络部署和网络管理。这是第一次的认识:


       随着对SDN的认识,我觉得之前的认识相当片面,最近看到http://www.sdnlab.com/my_sdnlab/sdnlab-subject/sdn_begginer/sdn_begginer.html里对SDN总结的相当到位,即SDN是一种新型的网络体系结构,通过将网络控制与网络转发解耦合构建开放编程的 网络体系结构。SDN认为不应无限制地增加网络的复杂度,需要对网络进行抽象以屏蔽底层复杂度,为上层提供简单的、高效的配置与管理。SDN旨在实现网络互联、网络行为的定义和开放式的接口,从而支持未来各种新型网络体系结构和新型业务的创新。

      SDN发展历程过程如下,这里依旧是http://www.sdnlab.com/my_sdnlab/sdnlab-subject/sdn_begginer/sdn_begginer.html里的发展时间线图:


       接下来的时间我学习了Openflow1.0的相关技术文档,清楚了Openflow交换机的数据转发模式以及控制器和交换机之前消息的处理,即四个部分:1、Openflow的端口(port);2、Openflow的FlowTable(流表);3、Openflow的消息;4、Openflow协议的相关数据结构。这里就不对openflow1.0协议进行具体的分析,后续会将1.0和3.0的版本再次进行学习总结。这里不得不提流表的重要性,它包含了L2\L3\L4\和VLAN的字段,能够很好地处理数据包的传输。

   这里就有了许多初学者容易走进的误区:

  • SDN一定要用openflow协议来配置转发面么?(当然不是,只是说openflow发展比较早,比较有影响力) 
  • SDN主要用在数据中心网络么?(参考:SDN的应用场景分析与探讨 http://www.sdnap.com/sdn-study/1346.html

    SDN的应用场景:

    • 数据中心网络
    • 数据中心互联
    • 政企网络
    • 电信运营商网络
    • 互联网公司业务部署  
  • SDN要求硬件转发有统一的标准么?(这个不是的,连ONF也在寻找一个折衷的方案)
  • SDN controller 都是集中性管理的么?(这个得视情况而定,因为集中性存在可扩展性的问题,中小型网络可以采用集中性管理,大型网络需要分布性管理,可能还需要混合性的管理)
  • SDN设备都是靠controller静态配置么?(这个也不是的,跟现在设备一样,有些自动完成,而有些例如路由的计算则需要controller计算,来下发给交换机的)
  • SDN只适用于交换机么?(这个也不是的,毕竟openflow协议是专门支持交换机的标准的,而SDN也是起源于openflow交换机的,但是SDN技术可以适用于任何网元设备,如防火墙、路由器、无线AP等)

三、知识贮蓄:

       一个最简单的SDN网络包括:一个controller、一个openflow交换机、两台主机host。而controller需要搭建ubuntu的环境下,这里就需要熟悉各种Linux的基本命令主机上还得安装控制器,控制器平台种类繁多,大体由Python(POX/Ryu/NOX),Java (Beacon/Floodlight) , Ruby (Trema)三种语言编写在这里我选择了POX。因而要熟练掌握Python语言。最后没有现成的openflow switch,这时就需要使用openflow vswitch,即OVS模块,来对流表和交换机的数据转发进行处理。当然对网络技术的知识也要有一定的掌握。慢慢的深入的学习,发现SDN的学习要求还是蛮高的,需要许多综合知识。

        需要补充的知识:

        1、SDN英文文档的阅读,掌握SDN的发展动向;

        2、搭建SDN的实验环境,来熟悉SDN构架的核心模块的处理;

        3、在实验熟悉Linux基本命令(后面也要有自己的学习笔记)+熟悉Python的编写(后面也要有自己的编程来增加controller和OVS功能)+熟悉mininet软件,能够熟练的使用mininet来搭建各种拓扑结构。



1 0
原创粉丝点击