SDN初探

      因为网络大作业,要使用SDN,而且SDN能让我更加深入理解网络原理。比如ARP协议在SDN中的实现(l2_learning)。但是SDN感觉比较复杂,光看官网就头大了。我就参加了coursera上的SDN课程。有人带,入门还是很快的。
      关于SDN的历史也很丰富,可以看N Feamster的介绍,直接跳过,进入学习环节。

实验环境:

      SDN说简单了就是Data plane和Controller的分离,进一步说就是switch和控制算法的分离。底层的switch厂商可以不同,但是遵守统一协议,比如openflow。这个目的就是为了控制算法能够不受厂商限制。但是我们没有真实的网络设备和拓扑,这对我们学习和研究有很大阻碍。还好有虚拟技术。Mininet让实验成为现实。SDN的相关内容太多,软件也不少,因此我担心自己的电脑吃不消,就装了个专门的虚拟机。在SDNHUB上下载,是ALL-in-one的,包含各种controller和必要工具。所以实验环境就运行虚拟机就ok了。

网络拓扑:

      最新创建的是网络拓扑,就是switch和host的连接结构。真实环境的话是手动连接电缆。这里使用Mininet创建。可以根据Mininet官网教程一步步实验。比如创建一个树形拓扑。

      完成后就是一个mininet的CLI界面,可以输入help看看支持哪些。重要的有py,link等等。除了mn内置的几个拓扑结构外,还可以使用Python API,这就大大增加了Mininet的可扩展性。最核心的就是加加链路,设置属性。

      这还支持可视化,比如poxdeskminiEdit。不过都还比较粗糙。我试了一下poxdesk,感觉够用。

poxdesk
树形结构(未显示主机)

控制模块:

      SDN Controller就有很多了,比如POX,OpenDaylight等等。比较详见此文这个博客。我选的是POX,容易上手,课程用的也是这个,Python语言。比如上文的l2 learning,可以非常清楚的理解原理。

      我觉得SDN Controller才是核心,将来网络的运行全靠这了。POX细节部分我还没有深入。可以参考其wiki。我要实现的就是Fattree的路由算法。还有两天时间,刚八类!

链接:

  1. openflow tutorial