书签 分享 收藏 举报 版权申诉 / 17

软件定义网络中学习源MAC地址的方法和装置.pdf

  • 上传人:1****2
  • 文档编号:4898390
  • 上传时间:2018-11-24
  • 格式:PDF
  • 页数:17
  • 大小:2.62MB
  • 摘要
    申请专利号:

    CN201410562781.3

    申请日:

    2014.10.21

    公开号:

    CN104320340A

    公开日:

    2015.01.28

    当前法律状态:

    实审

    有效性:

    审中

    法律详情:

    著录事项变更IPC(主分类):H04L 12/741变更事项:申请人变更前:杭州华三通信技术有限公司变更后:新华三技术有限公司变更事项:地址变更前:310052 浙江省杭州市滨江区长河路466号变更后:310052 浙江省杭州市滨江区长河路466号|||实质审查的生效IPC(主分类):H04L 12/741申请日:20141021|||公开

    IPC分类号:

    H04L12/741(2013.01)I; H04L29/12

    主分类号:

    H04L12/741

    申请人:

    杭州华三通信技术有限公司

    发明人:

    严进波; 宋小恒; 王锋

    地址:

    310052 浙江省杭州市滨江区长河路466号

    优先权:

    专利代理机构:

    北京德琦知识产权代理有限公司 11018

    代理人:

    张驰;宋志强

    PDF完整版下载: PDF下载
    内容摘要

    本发明提出一种软件定义网络(SDN)中学习源MAC地址的方法和装置。该方法包括在所述SDN中的SDN控制器执行的如下步骤:向SDN交换机下发第一流表项,所述第一流表项的匹配项包括源MAC地址和目的MAC地址,动作为指定出端口;从SDN交换机接收由于源MAC地址不匹配而不能命中所述第一流表项的二层报文,并学习所述二层报文中的源MAC地址。

    权利要求书

    权利要求书1.  一种软件定义网络SDN中学习源MAC地址的方法,其特征在于,该方法包括在所述SDN中的SDN控制器执行的如下步骤:向SDN交换机下发第一流表项,所述第一流表项的匹配项包括源MAC地址和目的MAC地址,动作为指定出端口;从SDN交换机接收由于源MAC地址不匹配而不能命中所述第一流表项的二层报文,并学习所述二层报文中的源MAC地址。2.  根据权利要求1所述的方法,其特征在于,该方法进一步包括:向SDN交换机下发第二流表项,所述第二流表项的匹配项包括所述学习到的源MAC地址和目的MAC地址,动作为指定出端口。3.  根据权利要求1所述的方法,其特征在于,所述第一流表项为包括第一级流表项和第二级流表项的二级联动流表项,其中第一级流表项的匹配项为所述源MAC地址,动作为写Meta值以及查询第二级流表项;第二级流表项的匹配项为所述Meta值和所述目的MAC地址,动作为指定出端口。4.  根据权利要求1所述的方法,其特征在于,所述第一流表项的匹配项进一步包括虚拟局域网标识VLAN ID。5.  根据权利要求3所述的方法,其特征在于,所述第一级流表项和第二级流表项的匹配项进一步包括VLAN ID。6.  一种软件定义网络SDN中学习源MAC地址的方法,其特征在于,该方法包括在所述SDN中的SDN交换机执行的如下步骤:从SDN控制器接收第一流表项,所述第一流表项的匹配项包括源MAC地址和目的MAC地址,动作为指定出端口;向SDN控制器发送由于源MAC地址不匹配而不能命中所述第一流表项的二层报文,以由SDN控制器学习所述二层报文中的源MAC地址。7.  根据权利要求6所述的方法,其特征在于,该方法进一步包括:从SDN控制器接收第二流表项,所述第二流表项的匹配项包括所述学习到 的源MAC地址和目的MAC地址,动作为指定出端口。8.  根据权利要求6所述的方法,其特征在于,所述第一流表项为包括第一级流表项和第二级流表项的二级联动流表项,其中第一级流表项的匹配项为所述源MAC地址,动作为写Meta值以及查询第二级流表项;第二级流表项的匹配项为所述Meta值和所述目的MAC地址,动作为指定出端口。9.  根据权利要求6所述的方法,其特征在于,所述第一流表项的匹配项进一步包括虚拟局域网标识VLAN ID。10.  根据权利要求8所述的方法,其特征在于,所述第一级流表项和第二级流表项的匹配项进一步包括VLAN ID。11.  一种软件定义网络SDN中学习源MAC地址的装置,其特征在于,该装置包括在所述SDN中的SDN控制器运行的如下模块:第一流表项下发模块,用于向SDN交换机下发第一流表项,所述第一流表项的匹配项包括源MAC地址和目的MAC地址,动作为指定出端口;源MAC地址学习模块,用于从SDN交换机接收由于源MAC地址不匹配而不能命中所述第一流表项的二层报文,并学习所述二层报文中的源MAC地址。12.  根据权利要求11所述的装置,其特征在于,该装置进一步包括:第二流表项下发模块,用于向SDN交换机下发第二流表项,所述第二流表项的匹配项包括所述学习到的源MAC地址和目的MAC地址,动作为指定出端口。13.  根据权利要求11所述的装置,其特征在于,所述第一流表项为包括第一级流表项和第二级流表项的二级联动流表项,其中第一级流表项的匹配项为所述源MAC地址,动作为写Meta值以及查询第二级流表项;第二级流表项的匹配项为所述Meta值和所述目的MAC地址,动作为指定出端口。14.  一种软件定义网络SDN中学习源MAC地址的装置,其特征在于,该装置包括在所述SDN中的SDN交换机运行的如下模块:第一流表项接收模块,用于从SDN控制器接收第一流表项,所述第一流表 项的匹配项包括源MAC地址和目的MAC地址,动作为指定出端口;二层报文发送模块,用于向SDN控制器发送由于源MAC地址不匹配而不能命中所述第一流表项的二层报文,以由SDN控制器学习所述二层报文中的源MAC地址。15.  根据权利要求14所述的装置,其特征在于,还包括:第二流表项接收模块,用于从SDN控制器接收第二流表项,所述第二流表项的匹配项包括所述学习到的源MAC地址和目的MAC地址,动作为指定出端口。16.  根据权利要求14所述的装置,其特征在于,所述第一流表项为包括第一级流表项和第二级流表项的二级联动流表项,其中第一级流表项的匹配项为所述源MAC地址,动作为写Meta值以及查询第二级流表项;第二级流表项的匹配项为所述Meta值和所述目的MAC地址,动作为指定出端口。

    说明书

    说明书软件定义网络中学习源MAC地址的方法和装置
    技术领域
    本发明属于软件定义网络(Software Defined Network,SDN)技术领域,特别是一种SDN中学习源媒体访问控制(Media Access Control,MAC)地址的方法和装置。
    背景技术
    SDN技术通过将网络设备的控制平面与数据平面分离,从而实现网络流量的灵活控制。相应地,SDN架构中包括SDN控制器和SDN交换机,其中:SDN控制器和SDN交换机之间通过SDN管理通道进行通信,SDN控制器根据用户的配置或者动态运行的协议生成流表下发到SDN交换机,SDN交换机依据SDN控制器下发的流表进行报文处理。
    在现有的SDN架构中,对于SDN交换机的二层报文转发,流表只匹配目的MAC地址和虚拟局域网标识(Virtual Local Area Network ID,VLAN ID)。当SDN交换机接收到源MAC地址未知、目的MAC地址已知的报文时,报文将命中流表并被转发出去,而并不将报文上送SDN控制器,这就导致SDN控制器无法学习到该未知的源MAC地址。当有访问该未知的源MAC地址的需求时,SDN控制器需要在网络内主动泛洪地址解析协议(Address Resolution Protocol,ARP)报文以获取该未知的源MAC地址,从而消耗系统资源并降低转发效率。
    发明内容
    有鉴于此,本发明提出一种SDN中学习源MAC地址的方法和装置,从而节约系统资源。
    本发明实施方式的技术方案如下:
    本发明实施方式的一方面提供了一种SDN中学习源MAC地址的方法,该方法包括在所述SND中的SDN控制器执行的如下步骤:
    向SDN交换机下发第一流表项,所述第一流表项的匹配项包括源MAC地址和目的MAC地址,动作为指定出端口;
    从SDN交换机接收由于源MAC地址不匹配而不能命中所述第一流表项的二层报文,并学习所述二层报文中的源MAC地址。
    优选地,该方法进一步包括:
    向SDN交换机下发第二流表项,所述第二流表项的匹配项包括所述学习到的源MAC地址和目的MAC地址,动作为指定出端口。
    优选地,所述第一流表项为包括第一级流表项和第二级流表项的二级联动流表项,其中第一级流表项的匹配项为所述源MAC地址,动作为写Meta值以及查询第二级流表项;第二级流表项的匹配项为所述Meta值和所述目的MAC地址,动作为指定出端口。
    优选地,所述第一流表项的匹配项进一步包括虚拟局域网标识(VLAN ID)。
    优选地,所述第一级流表项和第二级流表项的匹配项进一步包括VLAN ID。
    本发明实施方式的一方面提供了一种SDN网络中学习源MAC地址的方法,该方法包括在所述SDN中的SDN交换机执行的如下步骤:
    从SDN控制器接收第一流表项,所述第一流表项的匹配项包括源MAC地址和目的MAC地址,动作为指定出端口;
    向SDN控制器发送由于源MAC地址不匹配而不能命中所述第一流表项的二层报文,以由SDN控制器学习所述二层报文中的源MAC地址。
    优选地,该方法进一步包括:
    从SDN控制器接收第二流表项,所述第二流表项的匹配项包括所述学习到的源MAC地址和目的MAC地址,动作为指定出端口。
    优选地,所述第一流表项为包括第一级流表项和第二级流表项的二级联动 流表项,其中第一级流表项的匹配项为所述源MAC地址,动作为写Meta值以及查询第二级流表项;第二级流表项的匹配项为所述Meta值和所述目的MAC地址,动作为指定出端口。
    优选地,所述第一流表项的匹配项进一步包括VLAN ID。
    优选地,所述第一级流表项和第二级流表项的匹配项进一步包括VLAN ID。
    本发明实施方式的一方面提供了一种SDN中学习源MAC地址的装置,该装置包括在所述SDN中的SDN控制器运行的如下模块:
    第一流表项下发模块,用于向SDN交换机下发第一流表项,所述第一流表项的匹配项包括源MAC地址和目的MAC地址,动作为指定出端口;
    源MAC地址学习模块,用于从SDN交换机接收由于源MAC地址不匹配而不能命中所述第一流表项的二层报文,并学习所述二层报文中的源MAC地址。
    优选地,该装置进一步包括:
    第二流表项下发模块,用于向SDN交换机下发第二流表项,所述第二流表项的匹配项包括所述学习到的源MAC地址和目的MAC地址,动作为指定出端口。
    优选地,所述第一流表项为包括第一级流表项和第二级流表项的二级联动流表项,其中第一级流表项的匹配项为所述源MAC地址,动作为写Meta值以及查询第二级流表项;第二级流表项的匹配项为所述Meta值和所述目的MAC地址,动作为指定出端口。
    本发明实施方式的一方面提供了一种SDN中学习源MAC地址的装置,该装置包括在所述SDN中的SDN交换机运行的如下模块:
    第一流表项接收模块,用于从SDN控制器接收第一流表项,所述第一流表项的匹配项包括源MAC地址和目的MAC地址,动作为指定出端口;
    二层报文发送模块,用于向SDN控制器发送由于源MAC地址不匹配而不能命中所述第一流表项的二层报文,以由SDN控制器学习所述二层报文中的源 MAC地址。
    优选地,还包括:
    第二流表项接收模块,用于从SDN控制器接收第二流表项,所述第二流表项的匹配项包括所述学习到的源MAC地址和目的MAC地址,动作为指定出端口。
    优选地,所述第一流表项为包括第一级流表项和第二级流表项的二级联动流表项,其中第一级流表项的匹配项为所述源MAC地址,动作为写Meta值以及查询第二级流表项;第二级流表项的匹配项为所述Meta值和所述目的MAC地址,动作为指定出端口。
    在本发明中,向SDN交换机下发第一流表项,第一流表项的匹配项包括源MAC地址和目的MAC地址,动作为指定出端口;从SDN交换机接收由于源MAC地址不匹配而不能命中第一流表项的二层报文,并学习二层报文中的源MAC地址。由此可见,SDN控制器向SDN交换机下发的第一流表项中,匹配项不仅包括目的MAC地址,还包括源MAC地址。只有当目的MAC地址和源MAC地址都匹配时,SDN交换机下才发报文。当源MAC地址不匹配时,SDN交换机将二层报文转发到SDN控制器,SDN控制器可以学习该二层报文的源MAC地址,从而解决现有技术中仅关注目的MAC地址而导致SDN控制器无法学习未知源主机的问题,并且减少了SDN控制器的ARP请求过程,节约了系统资源。
    附图说明
    图1为基于目的MAC地址方式的二层转发的示范性示意图;
    图2为本发明实施方式在SDN控制器侧学习源MAC地址的方法流程图;
    图3为本发明实施方式在SDN交换机侧学习源MAC地址的方法流程图;
    图4为本发明实施方式的二层转发示意图;
    图5为图4所示网络架构的二层转发流程图;
    图6为本发明实施方式的二级联动流表项的处理示意图;
    图7为本发明实施方式SDN控制器侧学习源MAC地址的装置结构图;
    图8为本发明实施方式SDN交换机侧学习源MAC地址的装置结构图。
    具体实施方式
    为使本发明的目的、技术方案和优点更加清楚,下面结合附图对本发明作进一步的详细描述。
    对于SDN交换机的二层转发,SDN控制器下发到SDN交换机的流表项的匹配项通常只包括目的MAC地址和VLAN ID,这种二层报文转发方式称为基于目的MAC地址方式的二层转发。在这种转发方式中,当SDN交换机接收到源MAC地址未知、目的MAC地址已知的报文时,报文将命中流表项并被转发出去,并不将报文上送SDN控制器,导致SDN控制器无法学到该未知的源MAC地址,从而其他主机也不能通过流表方式将报文转发到该未知的源MAC地址对应的主机上。
    图1为基于目的MAC地址方式的二层转发的示范性示意图。
    如图1所示,SDN网络包含SDN控制器及3个SDN交换机,分别为SW1、SW2和SW3。SW1与主机PC10连接;SW2与主机PC20连接;SW3与主机PC30连接,而且PC10、PC20和PC30同属一个VLAN中。
    PC10发出访问PC30的二层报文,该二层报文经过SW1上送SDN控制器,SDN控制器学习PC10的MAC地址并予以记录,然后SDN控制器在本地查找PC30的MAC地址,发现没有查找到,则将二层报文广播泛洪到SW3,从而将二层报文发送到PC30。
    PC30收到二层报文后,向PC10发出回应报文。回应报文首先到达SW3,SW3将回应报文上送SDN控制器。SDN控制器学习PC30的MAC地址并予以记录,然后在本地查找PC10的MAC地址,此时可以查找到PC10的MAC地址,SDN控制器向SW1、SW2和SW3下发由SW3通往PC10的整条路径 (SW3--->SW2--->SW1)的流表项,该流表项的匹配项为VLAN ID和目的MAC地址(即PC10的MAC地址),并把报文发向PC10。
    PC10后续再发出访问PC30的二层报文,该二层报文经过SW1上送到SDN控制器。SDN控制器发现已经学习有PC10的MAC地址,接着在本地查找PC30的MAC地址,发现可以查找到PC30的MAC地址,SDN控制器向SW1、SW2和SW3下发由SW1通往PC30的整条路径(SW1--->SW2--->SW3)的流表项,该流表项的匹配项为VLAN ID和目的MAC地址(即PC30的MAC地址),并把二层报文发向PC30。
    至此,PC10和PC30间已经建立了基于目的MAC方式通往彼此的流表项。
    如果PC20发出访问PC30的报文,报文到达SW2。SW2发现自身存在有通往PC30的流表项,直接命中流表项并转发该报文,此时该报文不上送到SDN控制器,因此SDN控制器无法学习PC20的MAC地址。这样,当后续PC30、PC10访问PC20时,需要SDN控制器主动泛洪ARP请求以学习PC20的MAC地址,从而显著消耗系统资源,并且降低了转发效率。
    本发明实施方式提出学习MAC地址的方案,可以解决在基于目的MAC地址方式中所存在的无法学习未知源MAC地址的缺点。
    图2为本发明实施方式在SDN控制器侧学习源MAC地址的方法流程图。
    如图2所示,该方法包括在SDN控制器执行的如下步骤:
    步骤201:向SDN交换机下发第一流表项,第一流表项的匹配项包括源MAC地址和目的MAC地址,动作为指定出端口。
    在这里,不同于现有技术中向SDN交换机下发的流表项的匹配项中只包含目的MAC地址(有时候匹配项还可能包括VLAN ID),本发明实施方式向SDN交换机下发的第一流表项的匹配项中除了目的MAC地址之外,进一步包括源MAC地址。因此,不同于现有技术中当目的MAC地址匹配时即命中流表项(当匹配项包括VLAN ID时还需要命中VLAN ID),本发明实施方式需要源MAC地址和目的MAC地址都匹配时,才认定命中第一流表项。
    在一个实施方式中,第一流表项的匹配项进一步包括VLAN ID。此时,源 MAC地址、目的MAC地址和VLAN ID都匹配时,才认定命中第一流表项。
    步骤202:从SDN交换机接收由于源MAC地址不匹配而不能命中第一流表项的二层报文,并学习二层报文中的源MAC地址。
    当SDN交换机期望发送二层报文时,如果因二层报文的源MAC地址与第一流表项中的源MAC地址不匹配而导致第一流表项无法命中,即使二层报文的目的MAC与第一流表项中的目的MAC地址相匹配,SDN交换机依然不转发二层报文,而是将二层报文发送到SDN控制器,从而SDN控制器可以学习到二层报文中的源MAC地址。
    SDN交换机的流表通常包括MAC-IP流表和扩展(Extensibility)流表。MAC-IP流表包括的硬件资源较多,而扩展流表包括的硬件资源相对较少。对于SDN交换机的二层转发,MAC-IP流表是固定资源,通常只能匹配源MAC地址或目的MAC中的一项。因此,通常将第一流表项实施为可以同时匹配源MAC地址和目的MAC的扩展流表的流表项。
    可选地,第一流表项也可以不同时匹配源MAC地址和目的MAC地址,而是采用多级流表项联动的匹配方式。
    在一个实施方式中,第一流表项具体实施为包含第一级流表项和第二级流表项的二级联动流表项,其中第一级流表项的匹配项为源MAC地址,动作为写Meta值以及查询第二级流表项;第二级流表项的匹配项为Meta值和目的MAC地址,动作为指定出端口。
    具体地,第一级流表项可以实施为MAC-IP流表,第二级流表项可以实施为扩展流表。该MAC-IP流表的匹配项为VLAN ID+源MAC地址,动作为在MetaData字段中写Meta值(meta vlue)和查询(函数动作为Goto Table)对应于扩展流表标识(Extensibility Table ID)的扩展流表,Goto Table的输出值为该扩展流表的ID。示范性地,meta vlue等于0x1。而且,扩展流表的匹配项为meta vlue+VLAN ID+目的MAC地址,动作为指定出端口。
    在SDN交换机的二层报文转发过程中,首先执行MAC-IP流表匹配查询,当报文的VLAN ID和源MAC地址完全匹配之后,在MetaData字段中写入Meta 值(比如,0x1),然后执行对应于扩展流表ID的扩展流表。该扩展流表的匹配项为meta vlue(即0x1)+VLAN ID+目的MAC地址。意味着:当Meta值为0x1,而且报文的VLAN ID和目的MAC地址完全匹配之后,扩展流表的匹配项得到满足,此时动作为指定出端口。在多级流表项联动的匹配方式中,第二级的扩展流表可以共用,从而还节约了流表资源。
    当SDN交换机期望转发的二层报文来自未知源MAC地址时,则MAC-IP流表无法匹配,也就不能执行扩展流表。此时,SDN交换机向SDN控制器上送该来自未知源MAC地址的二层报文,从而由SDN控制器学习该二层报文中的源MAC地址。
    由此可见,本发明实施方式中,首先关注源MAC地址是否匹配,只有源MAC匹配的情况下目的MAC地址的匹配才生效。对于源MAC地址未匹配的情况下,即使目的MAC地址匹配,也不会命中第一流表项,报文仍然会上送SDN控制器进行源MAC地址学习。
    SDN控制器接收到由SDN交换机上报的源MAC地址未知的二层报文后,可以从二层报文中学习源MAC地址。SDN控制器学习到源MAC地址之后,如果在本地能够查找到目的MAC地址,则直接下发包括该学习到的源MAC地址和查找到的目的MAC地址的流表项,如果在本地不能够查找到目的MAC地址,可以对SDN交换机上报的二层报文进行广播泛洪,从而学习到目的MAC地址,然后再下发包括该学习到的源MAC地址和目的MAC地址的流表项。
    比如:SDN控制器可以向SDN交换机下发包括该学习到的源MAC地址和目的MAC地址的第二流表项,第二流表项的匹配项包括学习到的源MAC地址和目的MAC地址,动作为指定出端口。第二流表项与第一流表项具有相同的结构和功能,匹配项同样包括源MAC地址(即学习到的源MAC地址)和目的MAC地址。这样,当SDN交换机接收到二层报文时,如果二层报文的源MAC地址和目的MAC地址与第二流表项中的匹配项分别匹配,通过指定出端口转发报文。类似地,第二流表项的匹配项进一步还可以包括VLAN ID。
    SDN交换机接收到第一流表项和第二流表项之后,可以将第一流表项和第 二流表项整合到统一的流表中。
    以上详细描述了在SDN控制器侧学习源MAC地址的技术方案。下面描述在SDN交换机侧学习源MAC地址的技术方案。
    图3为本发明实施方式在SDN交换机侧学习源MAC地址的方法流程图。
    如图3所示,该方法包括:
    步骤301:从SDN控制器接收第一流表项,第一流表项的匹配项包括源MAC地址和目的MAC地址,动作为指定出端口。
    步骤302:向SDN控制器发送由于源MAC地址不匹配而不能命中第一流表项的二层报文,以由SDN控制器学习二层报文中的源MAC地址。
    在一个实施方式中,该方法进一步包括:
    从SDN控制器接收第二流表项,第二流表项的匹配项包括学习到的源MAC地址和目的MAC地址,动作为指定出端口。第二流表项与第一流表项具有相同的结构和功能,匹配项同样包括源MAC地址(即学习到的源MAC地址)和目的MAC地址。这样,当SDN交换机接收到二层报文时,如果二层报文的源MAC地址和目的MAC地址与第二流表项中的匹配项分别匹配,通过指定出端口转发报文。类似地,第二流表项的匹配项进一步还可以包括VLAN ID。
    在一个实施方式中,第一流表项为包括第一级流表项和第二级流表项的二级联动流表项,其中第一级流表项的匹配项为源MAC地址,动作为写Meta值以及查询第二级流表项;第二级流表项的匹配项为Meta值和目的MAC地址,动作为指定出端口。
    在一个实施方式中,第一流表项的匹配项进一步包括VLAN ID。在一个实施方式中,第一级流表项和第二级流表项的匹配项进一步包括VLAN ID。
    下面结合实例更详细地描述本发明。图4为本发明实施方式的二层转发示意图。
    如图4所示,SDN网络包含SDN控制器及3个SDN交换机,分别为SW1、SW2和SW3。SW1与主机PC10连接;SW2与主机PC20连接;SW3与主机PC30连接,而且PC10、PC20和PC30同属一个VLAN中。
    图5为图4所示网络架构的二层转发流程图。
    如图5所示,该方法包括:
    步骤501:PC10发出访问PC30的二层报文,该二层报文经过SW1上送到SDN控制器,SDN控制器学习PC10的MAC地址并予以记录,然后SDN控制器在本地查找PC30的MAC地址,发现没有查找到,则将二层报文广播泛洪到SW3,从而二层报文发送到PC30。
    步骤502:PC30收到二层报文后,向PC10发出回应报文。回应报文首先到达SW3,SW3将回应报文上送SDN控制器,SDN控制器学习PC30的MAC地址并予以记录,然后在本地查找PC10的MAC地址,此时可以查找到PC10的MAC地址。SDN控制器向SW1、SW2和SW3下发由SW3通往PC10的整条路径(SW3--->SW2--->SW1)的第一流表项。
    具体地,第一流表项为包括第一级流表项和第二级流表项的二级联动流表项。示范性地,图6为本发明实施方式的二级联动流表项的联动处理示意图。在图6中,第一级流表项实施为MAC-IP流表,第二级流表项可以实施为扩展流表。第一级流表项的匹配项为VLAN ID和源MAC地址(PC30的MAC地址),动作为写Meta值(meta vlue)和查询扩展流表(Goto Table),比如meta vlue=0x1,Goto Table的值为扩展流表的ID。扩展流表的匹配项为Meta值+VLAN ID+目的MAC地址(PC10的MAC地址),动作为指定通往目的MAC地址(PC10的MAC地址)的对应出端口,并把报文发向PC10。
    步骤503:PC10后续再发出访问PC30的二层报文,该二层报文经过SW1上送SDN控制器。SDN控制器发现已经学习有PC10的MAC地址,在本地查找PC30的MAC地址,此时发现可以查找到PC30的MAC地址,因此SDN控制器向SW1、SW2和SW3下发由SW1通往PC30的整条路径(SW1--->SW2--->SW3)的第一流表项。
    具体地,第一流表项为包括第一级流表项和第二级流表项的二级联动流表项。示范性地,图6为本发明实施方式的二级联动流表项的联动处理示意图。在图6中,第一级流表项具体为MAC-IP流表,第二级流表项可以实施为扩展 流表。第一级流表项的匹配项为VLAN ID和源MAC地址(PC10的MAC地址),动作为写Meta值(meta vlue)和查询扩展流表(Goto Table),比如meta vlue=0x1,Goto Table的值为扩展流表的ID。扩展流表的匹配项为Meta值+VLAN ID+目的MAC地址(PC30的MAC地址),动作为指定通往目的MAC地址(PC30的MAC地址)的对应出端口,并把报文发向PC30。
    至此,PC10和PC30间已经建立了通往彼此的流表。此时,如果PC20发出访问PC30的报文,报文首先到达SW2。SW2发现报文不匹配之前下发的第一流表项,将报文上送到SDN控制器,SDN控制器可以学习到PC20的MAC地址并予以记录。
    然后,当后续PC20访问PC10和PC30时,SDN控制器可以基于所学习到PC20的MAC地址直接下发流表,不再需要主动泛洪ARP请求以学习PC20的MAC地址,因此显著节约了系统资源,并且提高了转发效率。
    比如,SDN控制器学习到PC20的MAC地址之后,可以向SW2和SW3下发由PC20通往PC30的整条路径(SW2--->SW3)的第二流表项,该第二流表项的匹配项包括学习到的源MAC地址(PC20的MAC地址)和目的MAC地址(PC30的MAC地址),动作为指定出端口。第二流表项与第一流表项具有相同的结构和功能。举例:当PC20发出访问PC30的二层报文时,SW2发现该二层报文匹配第二流表项,因此将二层报文转发到SW3,SW3再将二层报文发送到PC30。
    基于上述分析,本发明实施方式还提出了一种SDN中学习源MAC地址的装置。
    图7为本发明实施方式SDN控制器侧学习源MAC地址的装置结构图。该装置700包括在SDN中的SDN控制器运行的如下模块:
    第一流表项下发模块701,用于向SDN交换机下发第一流表项,第一流表项的匹配项包括源MAC地址和目的MAC地址,动作为指定出端口;
    源MAC地址学习模块702,用于从SDN交换机接收由于源MAC地址不匹配而不能命中第一流表项的二层报文,并学习二层报文中的源MAC地址。
    在一个实施方式中:该装置700进一步包括:
    第二流表项下发模块703,用于向SDN交换机下发第二流表项,第二流表项的匹配项包括学习到的源MAC地址和目的MAC地址,动作为指定出端口。
    优选地,第一流表项为包括第一级流表项和第二级流表项的二级联动流表项,其中第一级流表项的匹配项为源MAC地址,动作为写Meta值以及查询第二级流表项;第二级流表项的匹配项为Meta值和目的MAC地址,动作为指定出端口。
    基于上述分析,本发明实施方式还提出了一种SDN中学习源MAC地址的装置。
    图8为本发明实施方式SDN控制器侧学习源MAC地址的装置结构图。该装置800包括在SDN中的SDN交换机运行的如下模块:
    第一流表项接收模块801,用于从SDN控制器接收第一流表项,第一流表项的匹配项包括源MAC地址和目的MAC地址,动作为指定出端口;
    二层报文发送模块802,用于向SDN控制器发送由于源MAC地址不匹配而不能命中第一流表项的二层报文,以由SDN控制器学习二层报文中的源MAC地址。
    在一个实施方式中,装置800还包括:
    第二流表项接收模块803,用于从SDN控制器接收第二流表项,第二流表项的匹配项包括学习到的源MAC地址和目的MAC地址,动作为指定出端口。
    在一个实施方式中,第一流表项为包括第一级流表项和第二级流表项的二级联动流表项,其中第一级流表项的匹配项为所述源MAC地址,动作为写Meta值以及查询第二级流表项;第二级流表项的匹配项为所述Meta值和所述目的MAC地址,动作为指定出端口。
    在本发明中,向SDN交换机下发第一流表项,第一流表项的匹配项包括源MAC地址和目的MAC地址,动作为指定出端口;从SDN交换机接收由于源MAC地址不匹配而不能命中第一流表项的二层报文,并学习二层报文中的源MAC地址。由此可见,SDN控制器向SDN交换机下发的第一流表项中,匹配 项不仅包括目的MAC地址,还包括源MAC地址。只有当目的MAC地址和源MAC地址都匹配时,SDN交换机下才转发报文。当源MAC地址不匹配时,SDN交换机下将二层报文转发到SDN控制器,SDN控制器可以学习该二层报文的源MAC地址,从而解决现有技术中仅关注目的MAC地址而导致SDN控制器无法学习未知源主机的问题,并且减少了SDN控制器的ARP请求过程,节约了系统资源。
    而且,在多级流表项联动的匹配方式中,第二级的扩展流表可以共用,从而还节约了流表资源。
    以上所述,仅为本发明的较佳实施方式而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

    关 键  词:
    软件 定义 网络 学习 MAC 地址 方法 装置
      专利查询网所有文档均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    0条评论

    还可以输入200字符

    暂无评论,赶快抢占沙发吧。

    关于本文
    本文标题:软件定义网络中学习源MAC地址的方法和装置.pdf
    链接地址:https://www.zhuanlichaxun.net/p-4898390.html
    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2017-2018 zhuanlichaxun.net网站版权所有
    经营许可证编号:粤ICP备2021068784号-1