OpenFlow与SDN之间的新思考

SDN包含OpenFlow:在SDN中有很多的实现方案,然后OPENFLOW是ONF SDN方案中充当南向接口的作用

传统网络与基于OpenFlow的SDN网络中网络设备的工作过程比较

传统网络

假设主机A向主机B发送IP数据包,且所有路由表和MAC地址表中都有该数据包的相应表项

  • 路由器之间运行分布式路由协议构建路由表。查表成功则基于目的IP地址转发;查表失败时,丢弃数据包
  • 交换机根据自学习算法构建MAC地址表。查表成功则基于目的MAC地址转发;查表失败时,除入端口外其余所有端口转发出去

MAC地址表是交换机等网络设备记录MAC地址和端口的映射关系,代表了交换机从哪个端口学习到了某个MAC地址,交换机把这个信息记录下来,后续交换机需要转发数据的时候就可以根据报文的目的MAC地址去根据MAC地址表转发数据。

基于OpenFlow的SDN网络

假设主机A向主机B发送IP数据包,且所有流表有该数据包相应表项

  • OpenFlow交换机查询流表来转发数据包,查表成功则基于匹配域(如目的IP地址+源IP地址)转发;查表失败时,则询问SDN控制器
  • 流表由SDN控制器来构建

  1. OF交换机接收数据包
  2. 查询流表,但是此时流表为空,所以访问SDN控制器
  3. OF交换机向控制器发送packet-in消息
    4.控制器来计算从主机A到主机B的路由

算路由:找到一条从源路由器到目的路由器的“好”路径

  1. 算好后控制器向交换机发送流表,通过flowmod承载流表
  2. 控制器向OF交换机发送Packet-Out消息,指示OF交换机按照刚安装好的流表转发IP数据包
  3. OF交换机收到Packet-Out消息后转发数据包

流表

流表由若干条流表项组成,流表项结构如下图所示。

  • 匹配域(Match Fields):用于定义某条流,也是流表匹配的依据
  • 指令(Instructions):表示对该条流应该如何处理
  • 优先级(Priority):表示该流表项的优先匹配程度
  • 计数器(Counters):用于统计该条流的信息
  • 生存时间(Timeouts):表示流表项的有效存活时间
  • Cookie:控制器设置用来过滤被流统计、流修改和流删除操作请求影响的流表项
  • 标志(Flags):用于流表项管理

可以简单的认为是key-value的形式的表

posted @ 2022-11-25 17:15  Q·K  阅读(77)  评论(0编辑  收藏  举报