SDN openflow 学习小得

一、openflow 大概的工作原理

  SDN 的一个大概简陋图,

  

  同网段通讯

  1.我们传统网络 pc1 10.1.1.1 要找同一子网的 pc2 10.1.1.2  通过广播洪泛。找到pc2,然后转发。

  2.在openflow 中是怎么工作的呢?

    openflow 在转发层设备上只负责数据的一个转发,相对传统的交换机,没有MAC表,但是有一个流表,根据流表来转发。

    但是,转发层设备不会自己计算、学习、维护流表,流表来自sdn控制器。

这里简单描述一下PC1 如何发送数据包到PC2,

  先声明几个名称

  openflow packet in  相对于控制器,到控制器的包

  openflow packet out  相对于控制器,从控制器发出的包

  openflow modify  下发流表的包

  流表 类似 路由表,包含 IP,  源mac 目的ip 目的MAC,出接口,时间

  在初始状态下,转发器1 还不知道还没有流表,所以只有直连的 PC1

  1.pc1 发起一个数据包要到达 pc2.

  2.转发器本着有事找领导的原则(SDN 里转发器不学习计算)发送 ARP request  给 SDN控制,openflow packet in

  3.SDN控制收到 arp request后会给 所有的转发器下发  packet out 包 (arp reply) 在除了设备互联口上转发,查找 10.1.1.2 。

    同时下发流表给所有设备,因为控制器已经知道了一条转发信息 控制器1连接PC1的信息。这个信息是包含在 转发器给控制的 ARP request 中

  4.pc2收到查询的包后会 回应转发器2 ,转发器收到包,再回复控制器 packet in

  5.控制器收到包之后,再次下发新流表给转发器。

  6.转发器收到流表之后,知道10.1.1.2 从g 0/0/1口转发。

整个过程相对传统的MAC 洪泛麻烦。效率低。

  跨网段的怎么通讯呢?

  跟传统的通讯方式有点类似,先找网关。假设PC1 有一个数据包要发到PC3,转发器上还没有任何条目的刘表

  1。转发器收到请求后,发送 arp request  给 sdn 控制器。

  2。控制器回复它就是网关,答复一条 网关的 mac ,及下发流表(pc1)给设备

  3。转发器一收到之后,再次发送 arp request (pc3) 给控制器,

  4。控制器再次 packet out 给所有设备,查询 PC3 的所在,同时宣告自己是 20.1.1.0 的网关。

  5.PC3收到包,回复给转发器2,转发器 pcaket in  给控制器,控制器再次下发流表。

  6.转发器1 收到流表,知道PC3 从gi 0/0/1口,发送。

  7.转发器2 收到数据包,从 e0/0/2口 转发数据包。

原文地址:https://www.cnblogs.com/chenkeven/p/9521107.html

时间: 2024-11-08 21:56:54

SDN openflow 学习小得的相关文章

深入SDN(二):关于SDN/OpenFlow的学习&研究路线

我个人的理解: 第一步:当然是SDN的history,这里主要指的是学术界的研究情况: The Road to SDN, Nick Feamster, Jennifer Rexford, 2013,从学术概念上讨论SDN这一路在时间轴上的演进 Maturing of OpenFlow and SDNthrough Deployments,Nick McKeown, 2012,斯坦福在研究和部署的四个阶段的成果,以及两者之间的互相影响,可以说是SDN是怎样炼成的 A Survey of SDN:

OpenFlow学习笔记

Software-Defined Networking Network intelligence is (logically) centralized in software-based SDN controllers network operators and administrators can programmatically configure this simplified network abstraction rather than having to hand-code tens

基于RYU控制器(controller)上的simple-switch 的APP做的測试-SDN/OpenFlow

近期一直在学习RYU控制器,在使用的过程中,发现有下面几方面的长处:RYU控制器全然使用Python语言编写,在理解起来和上手速度上是挺快的:RYU控制器的总体架构清晰明了,在日后有时间我会整理一个关于RYU控制器的架构性的文章供大家參考:RYU控制器本身是一个功能强大的网络实验平台,能够和openstack非常好的兼容,对于openstack我不是非常熟悉,就知道通过openstack能够实现的数据中心云计算方面的功能:RYU控制器本身自带非常多编写好的APP,通过对这些APP的熟悉,能够非常

SDN实战: Practice SDN/OpenFlow with LINC-Switch and OpenDaylight

SDN IN ACTION: Practice SDN/OpenFlow with LINC-Switch and OpenDaylight 薛国锋  [email protected] 本次实验,重点学习了Erlang语言.LINC软件OpenFlow交换机以及OpenDaylight开源控制器. Last time we had built anemulated environment based on ONOS and Mininet, today we are going to play

深入SDN(一):如何去研究SDN&OpenFlow

本文来自我在知乎上的回答:如何去研究SDN&OpenFlow?:对任何人来讲,时间才是最大的财富,每个人都应该把自己的时间投入到最有意义.最有影响的地方去.经过多年的学习.思考和实践,我认定这样一个规律:技术的发展不是均匀的,而是以浪潮的形式出现.每一个人都应该看清楚浪潮,赶上浪潮,如此,便不枉此生. --<浪潮之巅>吴军记得在孟岩的<一个"技术文化人"的片段感悟>中读到:程序员的进阶之道是"抬头看路,埋头赶路".也许SDN的抬头看路

[学习笔记]iphone学习小技巧

1. 版本控制 -- 是否响应某个方法 .查看当前系统版本. eg: [self respondsToSelector:@Selector(presentModalViewController:animated:)]//Yes:表示响应这个方法 [[UIDevice currentDevice].systemVersion floatValue] < 7.0 //判断当前系统是否小于7.0 2. 模态视图动画设置 eg: ModalViewController *modalVC = [[Moda

Android学习小Demo(20)关于Fragment的应用

Android在3.0之后引入了Fragment的概念,我猜测其想法可能只是想更好地兼容大屏幕或者平板的开发,因为大屏幕可以展示更多的内容,而内容一多,逻辑有可能就乱,而利用Fragment,则可以将不同的逻辑封装进不同的Fragment中,但是展现呢,还是在同一个Activity中,在同一个屏幕上显示.而对于屏幕并不大的手机来说,如果一个页面展示的东西并不多,那么其实将逻辑直接写在Activity,利用多个Activity实现多个页面的展示,我觉得也是可以接受的,毕竟用Activity还是用F

COM 学习小记录

COM组件程序:模块,它可以是 动态连接库(DLL) && 可执行程序(EXE),称为 进程内组件(in-of-process component) && 进程外组件(out-of-process component). COM对象:建立在二进制可执行代码级的基础上,因此COM对象是语言无关的,这一特性使得使用不同编程语言开发的组件对象进行交互成为可能. COM标准:规范 && 实现.规范:定义了组件和组件之间的通信机制,不依赖于特定的语言和操作系统:实现:

MongoDB 学习小笔记

1.配置:mongod --dbpath=D:\MongoDB\data mongo2.基本的增删查改 find() update()-- 整体更新,局部更新. 修改器: $inc db.person.update({"age":23},{$inc:{"salary":1000}}) 第一个参数为条件.第二个参数为修改的值,但值必须为整数.($inc allowed for numbers only) $set 修改器: db.person.update({&quo