[0041] 以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。
[0042] 请参阅图1至图6,本实施例的目的在于提供一种流表下发方法、系统、SDN控制器及 SDN交换机,用于解决现有技术中SDN控制器中生成流表很多时,流表下发速度慢的问题。以下将详细阐述本发明的一种流表下发方法、系统、SDN控制器及SDN交换机的原理及实施方式,使本领域技术人员不需要创造性劳动即可理解本发明的一种流表下发方法、系统、SDN控制器及SDN交换机。
[0043] 本实施例提供一种流表下发方法、系统、SDN控制器及SDN交换机基于消息队列机制,SDN控制器根据预先设定的流表项阈值,判断流表下发方式,如果生成的流表项数量超过阈值,发送带有流文件标志和流文件名的Experimenter消息给SDN交换机,SDN交换机通过FTP方式获取流文件,按照流文件中的顺序,快速下发流表项,提高整个SDN网络系统的流表下发速度。
[0044] 具体地,如图1所示,本实施例提供一种流表下发方法,应用于SDN网路中SDN控制器向SDN交换机下发流表的过程中,所述流表下发方法包括以下步骤。
[0045] 步骤S11,检测SDN控制器生成的流表项的数量是否超过预设的阈值,若否,则接着执行步骤S12,若是,则接着执行步骤S13。
[0046] 步骤S12,所述SDN控制器向SDN交换机下发包含所述流表项的流表。
[0047] 步骤S13,生成包含所述流表项的流文件。
[0048] 步骤S14,在生成包含所述流表项的流文件后,向所述SDN交互机发送包含所述流文件信息的流表消息。
[0049] 步骤S15,所述SDN交互机根据接收到的所述流表消息以预设的网络访问方式从所述 SDN控制器获取所述流文件中的流表项。
[0050] 步骤S16,所述SDN交互机根据获取的流表项配置并下发流表。
[0051] 以下对步骤S11至步骤S16进行详细说明。
[0052] 步骤S11,检测SDN控制器生成的流表项的数量是否超过预设的阈值。流表项的阈值可根据网络负载能力、网络速度等进行设定。本实施例中的流表下发方法根据流表项的阈值确定流表下发的方式。若SDN控制器生成的流表项的数量未超过预设的流表项的阈值,则执行步骤S12,所述SDN控制器向SDN交换机下发包含所述流表项的流表。也就说,若SDN控制器生成的流表项的数量未超过预设的流表项的阈值,SDN控制器继续以传统流表下发方式到SDN交换机,即SDN控制器生成流表并一条条下发给SDN交互机。若SDN控制器生成的流表项的数量超过预设的流表项的阈值,则执行步骤S13,SDN控制器则生成包含所述流表项的流文件。
[0053] 在生成包含所述流表项的流文件后,接着执行步骤S14,SDN控制器向所述SDN交互机发送包含所述流文件信息的流表消息,其中所述流表信息中至少包括流文件标识和流文件的名称。
[0054] 在本实施例中,SDN控制器具体按照以下方式向所述SDN交互机发送包含所述流文件信息的流表消息:扩展OpenFlow协议标准中的Experimenter消息,在向所述SDN交互机发送包含所述流文件信息的流表消息时,由所述Experimenter消息携带所述流表消息。
[0055] 在SDN交换机端,接着执行步骤S15,所述SDN交互机根据接收到的所述流表消息以预设的网络访问方式从所述SDN控制器获取所述流文件中的流表项。其中,在本实施例中,所述预设的网络访问方式为FTP网络访问方式。SDN交互机利用FTP方式可以从SDN控制器一次性获取下发大量流表项,提高了整个SDN网络的流表下发速度。
[0056] 在所述SDN控制器获取所述流文件中的流表项后,接着执行步骤S16,所述SDN交互机根据获取的流表项配置并下发流表。
[0057] 此外,在本实施例中,在向所述SDN交互机发送包含所述流文件信息的流表消息之后,为确保SDN交互机已经获取流文件中的流表项,所述SDN控制器发送一询问消息(例如 Barrier消息)询问所述SDN交换机是否已经获取流文件中的流表项,所以在本实施例中,所述SDN交互机根据获取的流表项配置并下发流表之后,所述SDN交互机向所述SDN控制器反馈用于确认已获取流表项并已下发流表的反馈信息。所述SDN控制器在预设时间内未收到所述SDN交互机反馈的用于确认已获取流表项并已下发流表的反馈信息时,所述SDN控制器向SDN交换机下发包含所述流表项的流表,也就是说,所述SDN控制器在预设时间内未收到所述SDN交互机反馈的用于确认已获取流表项并已下发流表的反馈信息时,SDN控制器继续以传统流表下发方式到SDN交换机,即SDN控制器生成流表并一条条下发给SDN交互机。
[0058] 为使本领域技术人员进一步理解本实施例中的流表下发方法,如图2和图3所示,以下将进一步说明本实施例中流表下发方法的实施过程。
[0059] 预先设置好流表项的阈值。SDN控制器检查需要生成的流表项是否超过设定阈值,如果没有超过,SDN控制器继续以传统流表下发方式到SDN交换机,即SDN控制器生成流表并一条条下发给SDN交互机。如果超过,SDN控制器把本次生成的流表项写入流文件,SDN 控制器发送扩展带有流文件标志和流文件名的Experimenter消息给SDN交换机。SDN交换机接收带有流文件标志和流文件名的Experimenter消息,如果SDN交换机没有收到该 Experimenter消息或不支持Experimenter消息,继续传统流表下发方式。如SDN交换机收到该Experimenter消息,SDN交换机通过FTP从SDN控制器获取流文件,如超时,获取不成功,继续传统流表下发方式。如果成功获取,SDN交换机顺序读取流文件中的表项,快速配置流表。
[0060] 为确保SDN交换机已获取并下发流文件中的表项,SDN控制器通过发送Barrier消息询问所述SDN交换机是否已经获取流文件中的流表项,所述SDN交互机根据获取的流表项配置并下发流表之后,所述SDN交互机回应SDN控制器的Barrier消息,表明已处理完毕。SDN 控制器等待Barrier消息回应,若SDN控制器在预设时间内收到Barrier消息回应,返回步骤 S11,重复执行本实施例中的流表下发方法。若SDN控制器在规定时间内没有收到Barrier消息回应,提示用户错误,并按传统流表下发流程处理。
[0061] 为实现上述目的,本发明还提供一种流表下发系统,具体地,如图4所示,所述流表下发系统1包括:SDN控制器11和SDN交换机12。
[0062] 以下对所述流表下发系统1中的SDN控制器11和SDN交换机12进行详细说明。
[0063] 所述SDN控制器11用于SDN网路中向SDN交换机12下发流表,具体地,如图4和图 5所述,所述SDN控制器11内包含:阈值设置模块111,阈值检测模块112,流文件模块113,流表下发模块114,流表信息发送模块115以及扩展模块116。
[0064] 所述阈值设置模块111用于设置流表项的阈值;流表项的阈值可根据网络负载能力、网络速度等进行设定。本实施例根据流表项的阈值确定流表下发的方式。
[0065] 所述阈值检测模块112与所述阈值设置模块111相连,用于检测SDN控制器11生成的流表项的数量是否超过预设的阈值。
[0066] 所述流文件模块113与所述阈值检测模块112相连,用于在SDN控制器11生成的流表项的数量超过预设的阈值时生成包含所述流表项的流文件。所述流表下发模块114与所述阈值检测模块112相连,用于在SDN控制器11生成的流表项的数量未超过预设的阈值时向SDN 交换机12下发包含所述流表项的流表。
[0067] 若SDN控制器11生成的流表项的数量未超过预设的流表项的阈值,所述流表下发模块 114向SDN交换机12下发包含所述流表项的流表。也就说,若SDN控制器11生成的流表项的数量未超过预设的流表项的阈值,SDN控制器11继续以传统流表下发方式到SDN交换机12,即SDN控制器11生成流表并一条条下发给SDN交互机。若SDN控制器11生成的流表项的数量超过预设的流表项的阈值,则所述流文件模块113生成包含所述流表项的流文件。
[0068] 所述流表信息发送模块115与所述流文件模块113相连,用于向SDN交互机发送包含所述流文件信息的流表消息。在生成包含所述流表项的流文件后,所述流表信息发送模块115 向所述SDN交互机发送包含所述流文件信息的流表消息,其中所述流表信息中至少包括流文件标识和流文件的名称。
[0069] 所述扩展模块116与所述流表信息发送模块115相连,用于扩展OpenFlow协议标准中的Experimenter消息;在所述流表信息发送模块115向所述SDN交互机发送包含所述流文件信息的流表消息时,由所述Experimenter消息携带所述流表消息。
[0070] SDN交换机12所述用于SDN网路中向SDN控制器11获取流表,具体地,如图4和图 6所示,所述SDN交换机12内包含:流表信息接收模块121,流表项获取模块122以及配置下发模块123。
[0071] 所述流表信息接收模块121用于从SDN控制器11接收包含流文件信息的流表消息;所述流表项获取模块122与所述流表信息接收模块121相连,用于根据接收到的所述流表消息以预设的网络访问方式从所述SDN控制器11获取所述流文件中的流表项。
[0072] 其中,在本实施例中,所述预设的网络访问方式为FTP网络访问方式。SDN交互机利用FTP方式可以从SDN控制器11一次性获取下发大量流表项,提高了整个SDN网络的流表下发速度。
[0073] 所述配置下发模块123与所述流表项获取模块122相连,用于根据获取的流表项配置并下发流表。
[0074] 此外,在本实施例中,在向所述SDN交互机发送包含所述流文件信息的流表消息之后,为确保SDN交互机已经获取流文件中的流表项,所述SDN控制器11发送一询问消息(例如 Barrier消息)询问所述SDN交换机12是否已经获取流文件中的流表项。所以在本实施例中,所述SDN交换机12内还包含:反馈信息发送模块124,与所述配置下发模块123相连,用于向所述SDN控制器11发送用于确认已获取流表项并已下发流表的反馈信息。所述SDN控制器11中还包含:反馈信息接收模块117,用于判断在预设时间内是否收到所述SDN交互机反馈的用于确认已获取流表项并已下发流表的反馈信息。反馈信息接收模块117在预设时间内未收到所述SDN交互机反馈的反馈信息时,所述流表下发模块114向所述SDN交换机 12下发包含所述流表项的流表。也就是说,所述反馈信息接收模块117在预设时间内未收到所述反馈信息发送模块124反馈的用于确认已获取流表项并已下发流表的反馈信息时,SDN 控制器11继续以传统流表下发方式到SDN交换机12,即SDN控制器11生成流表并一条条下发给SDN交互机。
[0075] 为使本领域技术人员进一步理解本实施例中的流表下发系统1,以下将进一步说明本实施例中流表下发系统1的工作过程。
[0076] 阈值设置模块111预先设置好流表项的阈值。阈值检测模块112检查需要生成的流表项是否超过设定阈值,如果没有超过,流表下发模块114继续以传统流表下发方式到SDN交换机12,即SDN控制器11生成流表并一条条下发给SDN交互机。如果超过,流文件模块113 把本次生成的流表项写入流文件,流表信息发送模块115发送通过扩展模块116扩展的带有流文件标志和流文件名的Experimenter消息给SDN交换机12。SDN交换机12接收带有流文件标志和流文件名的Experimenter消息,在所述流表信息发送模块115向所述SDN交互机发送包含所述流文件信息的流表消息时,由所述Experimenter消息携带所述流表消息。如果SDN 交换机12中的流表信息接收模块121没有收到该Experimenter消息或不支持Experimenter消息,流表下发模块114继续采用传统流表下发方式。如流表信息接收模块121收到该 Experimenter消息,流表项获取模块122通过FTP从SDN控制器11获取流文件,如超时,获取不成功,流表下发模块114继续传统流表下发方式。如果成功获取,流表项获取模块122 顺序读取流文件中的表项,配置下发模块123进行快速配置流表。
[0077] 为确保SDN交换机12已获取并下发流文件中的表项,SDN控制器11通过发送Barrier 消息询问所述SDN交换机12是否已经获取流文件中的流表项,所述SDN交互机根据获取的流表项配置并下发流表之后,所述反馈信息发送模块124回应SDN控制器11的Barrier消息,表明已处理完毕。反馈信息接收模块117等待Barrier消息回应,若反馈信息接收模块117在预设时间内收到Barrier消息回应,结束本次流表下发过程。若反馈信息接收模块117在规定时间内没有收到Barrier消息回应,提示用户错误,流表下发模块114按传统流表下发流程处理。
[0078] 综上所述,本发明通过SDN控制器生成包含大量流表项的流文件,SDN交互机利用 FTP方式从SDN控制器一次性获取下发大量流表项,提高了整个SDN网络的流表下发速度;本发明避免了传统流表下发方式,通过消息机制保障流表之间的依赖;如SND交换机不支持FTP下发方式,可继续按传统流表下发方式处理;本发明简单高效,具有较强的通用性和实用性。所以,本发明有效克服了现有技术中的种种缺点而具高度产业利用价值。
[0079] 上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。