zoukankan      html  css  js  c++  java
  • 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口 转发数据包。

  • 相关阅读:
    ArcGIS JS API多线程克里金插值
    PostGIS计算矢量切片(一)--渲染数据
    Arcpy多线程热力图
    Puppeteer之大屏批量截图
    Echarts 南海诸岛简图显示位置调整
    Echarts地图使用经验-地图变形和添加数据
    springboot的拦截器Interceptor的性质
    Centos7 网络报错Job for iptables.service failed because the control process exited with error code.
    记录一次Service被注入mapper实例的错误
    java中通过Adb判断PC是否连接了移动设备
  • 原文地址:https://www.cnblogs.com/chenkeven/p/9521107.html
Copyright © 2011-2022 走看看