一种Packet‑In消息的触发与控制方法与流程

文档序号:13941528阅读:1420来源:国知局
本发明涉及一种openflow交换机系统,尤其是涉及一种openflow交换机系统中packet-in消息的触发与控制方法。
背景技术
::软件定义网络技术是一种打破了传统网络组织应用方式,具有逻辑上集中、控制与转发分离、接口开放和可编程等特点的全新的网络体系架构。openflow协议是目前软件定义网络领域被标准化且广泛认可的南向接口协议之一,openflow交换机将被大量应用在各种软件定义网络系统中。openflow协议定义了交换机在报文匹配失败时向控制器申请流表的方法,通过将失配报文的相关信息封装在packet-in消息中发送给控制器,让控制器知晓报文失配情况,由控制器通过flow-mod等消息向交换机安装新流表。现有技术中交换机触发packet-in消息需要依赖交换机内部的table-miss表项,table-miss以最低优先级通配任意报文,所有被table-miss匹配的报文都将触发一条packet-in消息发往控制器。在超高速的数据平面网络中,大象流被table-miss命中可能触发海量packet-in消息,严重消耗交换机和控制器的cpu资源,尤其当交换机和控制器间的控制通道是高时延或窄带信道时,可能造成控制信道拥塞,严重恶化sdn网络的控制性能;同时,packet-in消息的离散化发送也可能导致对控制通道的数据承载能力利用率不高,影响控制通道的传输性能。技术实现要素:为了克服现有技术的上述缺点,本发明提供了一种openflow交换机系统内部packet-in消息的触发与控制方法,以减轻由于大象流失配或控制通道恶化带来的计算资源浪费和网络控制性能降低等问题。本发明解决其技术问题所采用的技术方案是:一种packet-in消息的触发与控制方法,报文在openflow交换机中匹配失败时,首先在缓存的流信息中查找该报文,若查找成功,则记录相关信息;若查找失败,则将该报文的匹配域信息缓存到流信息中,且为该报文生成一个packet-in消息,放入packet-in消息缓存模块中缓存,等待计时周期到期后发送。与现有技术相比,本发明的积极效果是:对openflow交换机系统中packet-in消息的触发与控制机制进行了优化,避免了大象流被table-miss命中时触发海量packet-in消息,严重消耗交换机和控制器的cpu资源,影响网络控制性能的现象;同时,优化了控制通道上的packet-in消息流量分布,充分利用了底层信道的数据承载能力,提高了控制通道的传输性能。附图说明本发明将通过例子并参照附图的方式说明,其中:图1为packet-in消息触发与控制功能模块关系示意图。图2为openflow交换机系统收到报文的处理流程示意图。图3为计时周期到期后的处理流程示意图。图4为openflow交换机系统收到flow-mod消息的处理流程示意图。具体实施方式如图1所示,openflow交换机系统包括流表管理模块、报文缓存模块、报文匹配模块、计时模块、packet-in消息处理模块、packet-in消息缓存模块和flow-mod消息处理模块,各个模块间通过内部功能接口互连,组成报文的转发处理通道。openflow交换机启动成功后维护一个定时器,按预定义的计时周期t向packet-in消息处理模块发送计时到期指示,表示规定的发送时刻来临,packet-in消息处理模块收到计时到期指示后开始向控制器发送缓存的packet-in消息,直到全部缓存的packet-in消息发送完成。报文在openflow交换机中匹配失败时,不立即根据table-miss表项的要求向控制器发送packet-in消息,首先在缓存的流信息中查找该报文,若查找成功,则说明该流的前续报文已经触发了packet-in消息,本报文不触发packet-in消息,仅记录相关信息;若查找失败,则将该报文的匹配域信息缓存到流信息中,且为该报文生成一个packet-in消息,放入packet-in消息缓存,等待计时周期到期后发送。预定义的计时周期t,可以根据应用场景的需求进行灵活配置与动态调整,典型地,t的初始值tinit在有线网络环境中可以设置为100ms,在无线网络环境中可以设置为1s。在openflow交换机运行过程中,可根据packet-in消息缓存模块中packet-in消息的缓存深度动态地调整计时周期t,新的计时周期tnew将被应用于下一个周期的计时。在一个计时周期内,同一条流只产生一个packet-in消息,由匹配失败的首包触发,同一条流的后续报文只进行缓存和记录,不产生packet-in消息。本发明方法一共由三个独立的部分结合而成,一是收到报文以后触发packet-in消息的机制,二是根据流量模型动态调整计时周期时间的机制,三是收到flow-mode消息后的处理机制。如图2所示,收到报文以后的具体处理方法步骤为:一、收到报文以后,若在交换机内流表匹配失败,则通过报文的openflow匹配域信息中的源目的mac地址、以太网类型、源目的ip地址、ip协议号、tcp/udp端口号信息检查本地缓存的流信息,确定本报文所属的流是否已经有前续报文匹配失败,且触发了packet-in消息的生成,该过程中,只要缓存的流信息中上述信息与收到的报文一致,则认为收到的报文属于该流;二、若所属流已触发过packet-in消息的生成,则本报文不再触发相同的动作,只是缓存本报文至交换机的接收缓存,同时在软件中维护一个表结构,将缓存编号buffer-id与本报文所属的流关联;三、若检测不到与收到的报文具有相同匹配域信息的流,则说明收到的报文属于该流的首个报文,需要触发packet-in消息生成。首先检查packet-in消息缓冲区,如果缓冲区已满,则发送所有缓冲的报文,并且重置计时周期定时器;四、根据收到的报文构建packet-in消息,存入packet-in消息缓存,等待计时周期到期后发送;五、计时周期到期后,将缓冲区内的全部packet-in消息通过openflow协议顺序发送至控制器,同时清空上述记录的缓存的流信息。如图3所示,计时模块对计时周期的动态调整的具体处理方法步骤为:一、openflow交换机系统启动后,维护一个周期性的定时器,用于控制交换机向控制器的packet-in消息发送,只有在定时器到期时才执行发送动作,定时器未到期时,若生成了packet-in消息,则先缓存在交换机本地,待定时器到期后再发送;二、定时器的初始化计时周期设置为100ms,每次计时周期到期后,可对下一个计时周期的计时时间进行动态调整,使其更适合当前的流量模型。具体的调整策略为:若到期时缓存的packet-in消息数目超过缓存容量的3/4,则新的计时周期tnew=t/2;若缓存的packet-in消息数目低于缓存容量的1/4,则tnew=t×2;每次计时到期时重复执行上述动态调整算法,同时确保tinit/8≤tnew≤tinit×8,其中tinit是预定义的计时周期t,当tnew的值可能因为某次调整超出上述限制时,放弃本次调整。如图4所示,交换机收到flow-mode消息后的具体处理方法步骤为:一、根据标准openflow协议规定转发flow-mode消息中buffer-id字段指定的缓存报文;二、检查该buffer-id指定的缓存报文所属的流下还有没有关联其它缓存的报文,如果有,则按缓存顺序将所属流关联的报文全部转发。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1