SDN中的LLDP和Openflow协议[通俗易懂]

SDN中的LLDP和Openflow协议[通俗易懂]OpenFlow交换机把传统网络中,完全由交换机/路由器控制的报文转换为由交换机和控制器来共同完成数据的转发操作,从而实现数据的转发与路由控制的分离。控制器则通过事先规定好的接口操作OpenFlow交换机中的流表,从而达到数据转发的目的。SDN链路发现和拓扑管理主要是控制其利用南向接口的上行通道对底层交换设备上报信息进行统一监控和统计;而策略制定和表项下发则是控制器利用南向接口的下行通道…

大家好,又见面了,我是你们的朋友全栈君。

 

OpenFlow交换机把传统网络中,完全由交换机/路由器控制的报文转换为由交换机和控制器来共同完成数据的转发操作,从而实现数据的转发与路由控制的分离。控制器则通过事先规定好的接口操作OpenFlow交换机中的流表,从而达到数据转发的目的。

SDN链路发现和拓扑管理主要是控制其利用南向接口的上行通道对底层交换设备上报信息进行统一监控和统计;而策略制定和表项下发则是控制器利用南向接口的下行通道对网络设备进行统一控制。

SDN控制器通过LLDP(Link Layer Discovery Protocol,链路发现协议)协议进行链路发现,然后根据发现协议搜集的信息来识别和管理网络拓扑结构。

LLDP协议格式:

SDN中的LLDP和Openflow协议[通俗易懂]

OpenFlow协议的思路,即使网络设备维护一个FlowTable,并且只通过FlowTable对报文进行处理,FlowTable本身的生成、维护和下发完全由外置的控制器Controller来实现,从而实现Controller的全局控制。

OPENFLOW协议

在OpenFlow交换机中,包含安全通道,多级流表和组表。通过安全通道,OpenFlow交换机可以和控制器建立基于OpenFlow协议的连接;而流表则用来匹配OpenFlow交换机收到的报文;组表用来定义流表需要执行的动作。

SDN中的LLDP和Openflow协议[通俗易懂]

                                                                      SDN控制器与Openflow交换机通信

1、流表:

      流表包括包头域(header fileds,匹配包头多个域)、活动计数器(counters)、0 个或多个执行行动(actions)。对每一个包进行查找,如果匹配则执行相关策略,否则通过安全通道将包转发到控制器,控制器来决策相关行为。流表项可以将包转发一个或者多个接口。

SDN中的LLDP和Openflow协议[通俗易懂]

                                                                      OpenFlow协议所支持的三种消息类型

openflow协议格式

(1)匹配域:

  • 一层:交换机入端口(Ingress Port)
  • 二层:源MAC地址(Ether src)、目的MAC地址(Ether dst)、以太网类型(EtherType)、VLAN标签(VLAN id)、VLAN优先级(VLAN priority)
  • 三层:源IP(IP src)、目的IP(IP dst)、IP协议字段(IP proto)、IP服务类型(IP ToS bits)
  • 四层:TCP/UDP源端口号(TCP/UDP src port)、TCP/UDP目的端口号(TCP/UDPdst port)OpenFlow协议所支持的三种消息类型
  • (2)计数器(counter)

  •          计数器可以针对每张表、每个流、每个端口、每个队列来维护。用来统计流量的一些信息,例如活动表项、查找次数、发送包数等。

  • (3)行动(actions)

            Openflow1.0提供两种数据包的处理方法:
               • 转发(Forward)
               • 修改包头(Modify field)

                其中修改包头包括:
             SET_VLAN_VID      //修改VLAN标签
             SET_VLAN_PCP     //修改VLAN优先级
             STRIP_VLAN          //弹出VLAN标签
             SET_DL_SRC          //修改源MAC地址
             SET_DL_DST          // 修改目的MAC地址
             SET_NW_SRC          // 修改源IP地址
             SET_NW_DST            //  修改目的IP地址
             SET_NW_TOS           //修改IP服务类型字段
             SET_TP_SRC             //修改源端口号
             SET_TP_DST          // 修改目的端口号

  •  以上每一种操作称为一个动作(Action),流表中的数据包处理方法是一个动作列表(Action List),动作列表由以上各种动作组合合成。

  在Actions头,包括Type和len字段:(数据结构如下)

 由output类型的数据结构可以看出Port选项:

           ALL:将数据包从除入端口以 外其他所有端口发出
           CONTROLLER:将数据包发送给控制器
           LOCAL:将数据包发送给交换机本地端口
           TABLE:将数据包按照流表匹配条目处理
           IN_PORT:将数据包从入端口发出
           NORMAL:按照普通二层交换机流程处理数据包
           FLOOD:将数据包从最小生成树使能端口转发(不包括入端口)

OpenFlow的建立:

  • OpenFlow连接建立后,控制器最需要获得交换机的特性信息,交换机的特性信息包括交换机的ID(DPID),交换机缓冲区数量,交换机端口及端口属性等等。控制器向交换机发送Features Request消息查询交换机特性,Features Request消息只包OpenFlow Header。交换机在收到Features Request消息后返回Features Reply消息, Features Reply消息包括Openflow Header 和Features Reply Message。

  • 以下为Request和Reply报文:

  • SDN中的LLDP和Openflow协议[通俗易懂]

  • SDN中的LLDP和Openflow协议[通俗易懂]

  • Packet‐in事件(交换机接收数据包)
             Packet‐in消息触发情况1:
            当交换机收到一个数据包后,会查找流表,找出与数据包包头相匹配的条目。如果流表中有匹配条目,则交换机按照流表所指示的action列表处理数据包。如果流表中没有匹配条目,则交换机会将数据包封装在Packet‐in消息中发送给控制器处理。此时数据包会被缓存在交换机中等待处理。

  •   Packet‐in消息触发情况2:
            交换机流表所指示的action列表中包含转发给控制器的动作(Output=CONTROLLER)。此时数据包不会被缓存在交换机中。

  • SDN中的LLDP和Openflow协议[通俗易懂]

  • Reason为packet‐in事件产生的原因

  • 以下为Packet-in报文:

  •  

  • SDN中的LLDP和Openflow协议[通俗易懂]

  • 以下为packet-out报文:

  • 并不是所有的数据包都需要向交换机中添加一条流表项来匹配处理,网络中还存在多种数据包,它出现的数量很少(如ARP、IGMP等),以至于没有必要通过流表项来指定这一类数据包的处理方法。此时,控制器可以使用PacketOut消息,告诉交换机某一个数据包如何处理。

  • SDN中的LLDP和Openflow协议[通俗易懂]

  • SDN中的LLDP和Openflow协议[通俗易懂]

  • 控制器配置流表(Flow‐Mod消息)

  • 当交换机收到一个数据包并且交换机中没有与该数据包匹配的流表项时,交换机将此数据包封装到Packet‐in消息中发送给控制器,并且交换机会将该数据包缓存。
    控制器收到Packet‐in消息后,可以发送flow‐mod消向交换机写一个流表项。并且将flow‐mod消息中的buffer_id字段设置为packet‐in消息中的buffer_id值。从而控制器向交换机写入了一条与数据包相关的流表项,并且指定该数据包按照此流表项的aciton列表处理。

  •  

  • SDN中的LLDP和Openflow协议[通俗易懂]

  •  

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/144007.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • C语言图书管理系统设计报告「建议收藏」

    C语言图书管理系统设计报告「建议收藏」源代码:https://blog.csdn.net/k_young1997/article/details/73480766XXXX大学C语言课程设计报告题目图书管理系统设计专业班级XXXX级计算机科学与技术本科X班组别计科第…

    2022年10月16日
  • java激活码-激活码分享

    (java激活码)本文适用于JetBrains家族所有ide,包括IntelliJidea,phpstorm,webstorm,pycharm,datagrip等。https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~B…

    2022年3月22日
  • 矿机价格又双叕暴跌!个人挖不到收益,区块已经垄断

    矿机价格又双叕暴跌!个人挖不到收益,区块已经垄断






从去年高峰时期的2万元抢不到,跌到现在7000元竟然无人问津。有这样一个故事在行业里流传:曾经有一位…

    2022年6月3日
  • string和stringbuffer和stringbuilder的性能(Java是什么意思)

    【学习背景】主要是想通过OpenJDK提供的JMH工具测试下String、StringBuilder及StringBuffer字符串拼接的效率如何~关于JMH的介绍及具体使用,我的这篇博文中有介绍:Java–☀️面试官:LinkedList真的比ArrayList添加元素快?❤️‍本文通过OpenJDKJMH带你揭开真相《⭐建议收藏⭐》当然,除了主要验证三者的字符串拼接效率之外,还会对三者做一些区别分析及常见面试问题总结,希望加深自己对这三者的认知,分享出来,也希望能帮助到有需要的小伙伴~

    2022年4月11日
  • 一般试卷的纸张大小是多少_考试试卷用的是什么尺寸的纸

    一般试卷的纸张大小是多少_考试试卷用的是什么尺寸的纸展开全部考试试卷常用的是A3尺寸的纸。相当于A4纸的两倍,也就是俗称8开的纸。扩展资料:纸张的规格是指纸张制成后,经过636f70793231313335323631343130323136353331333365666136修整切边,裁成一定的尺寸。过去是以多少“开”(例如8开或16开等)来表示纸张的大小,如今我国采用国际标准,规定以A0、A1、A2、B1、B2……等标记来表示纸张的幅面…

    2022年6月20日
  • LeetCode 700题 题解答案集合 Python

    LeetCode 700题 题解答案集合 Python2019.5.12更新至题号796,目前共有265题。2019.5.26更新至题号72,目前共有347题。2019.6.16更新至题号70,目前共有382题。2019.7.7更新至题号5120,目前共有442题。2019.8.5更新至题号1147,目前共有502题。2019.9.6更新至题号288,目前共有551题。2019.11.13更新至题号426,目前共有602题…

    2022年7月24日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号