基于媒体访问控制层的报文转发方法和装置
技术领域
本发明涉及数字通信技术,特别地涉及一种基于媒体访问控制层(Medium Access Control,MAC)的报文转发方法及装置。
背景技术
随着局域网(Local Access Network,LAN)的不断普及,尤其是虚拟局域网(Virtual Local Access Network,VLAN)、无线局域网(Wireless LocalAccess Network,WLAN)的不断发展,基于MAC的报文转发数据量越来越大,对报文转发的效率也要求越来越高。现有技术中,基于MAC的报文转发通常采用标准的桥转发方法,以VLAN为例,在MAC入端口接收到数据报文后,该报文的转发过程如图1所示,包括下述步骤:
步骤101,对接收到的报文进行解析,提取该报文二层头中的源MAC地址、目的MAC地址、VLAN信息等信息;
步骤102,根据当前报文计算VLAN的ID;
步骤103,对报文进行ACL、镜像等预定策略处理;
步骤104,对源MAC地址进行学习,维护MAC地址转发表项;
步骤105,按照目的MAC地址进行报文的二层转发,即在MAC地址转发表中查找与目的MAC地址对应的端口(此时还需要保证入VLAN的ID和出VLAN的ID一致),如果MAC地址转发表中存在目的MAC地址,将报文数据包直接复制到该目的MAC地址对应的端口,如果地址表中没有找到目的MAC地址,则将该报文数据广播到该VLAN内所有端口上,当目的MAC地址所对应的端口对源MAC地址所对应的端口有回应时,对该目的MAC地址进行学习,在MAC地址转发表中记录该目的MAC地址;
步骤106,对要输出的报文进行ACL、镜像等策略处理;
步骤107,对要输出的报文进行QoS度量、修改优先级等处理;
步骤108,根据报文的QoS特征进行队列调度以满足服务质量要求,按照调度的顺序先后进行报文转发。
对上述报文转发的方法进行一点说明:MAC地址转发表各个表项值一般包括:源MAC地址、目的MAC地址以及VLAN的ID。
从上述基于MAC的报文转发方法可以看出,对于所有需要转发的报文,为获得二层载荷以前的二层封装头都需要经过同样的处理过程,这样在报文数据流较大的情况下,对执行上述工作的中央处理器(Central processing unit,CPU)或者网络处理器(Network Processor,NP)的压力都很大;而且在上述报文的转发过程中,步骤104是源MAC地址的学习过程,由此可见对于源MAC地址的学习也是逐包进行的,数据处理量较大,由此也将给CPU或者NP带来很大的数据处理压力。
发明内容
本发明提供一种基于媒体访问控制层的报文转发方法和装置,解决现有技术中所有数据报文都经过相同的处理过程所造成的转发效率低的问题。
本发明的一个方面提供了一种基于媒体访问控制层的报文转发方法,包括:
(a)建立以源MAC地址和目的MAC地址为索引的MAC快转表;
(b)当报文到达的时候,解析报文源MAC地址和目的MAC地址,并查找上述MAC快转表,如果所述MAC快转表中不存在匹配表项,对该报文进行按目的MAC转发处理;并将转发处理结果记录在所述MAC快转表中;如果所述MAC快转表中存在匹配表项,直接调用该匹配表项中转发处理结果转发报文。
进一步地,所述转发处理结果为二层载荷以前的二层封装报头信息,所述调用转发处理结果具体为用已经记录的二层封装报头信息替换原有报文的二层封装报头。
进一步地,所述的(a)中,建立以源MAC地址和目的MAC地址为索引的MAC快转表是在首次报文转发结束时,并将该次报文的转发处理结果记录在MAC快转表中。
进一步地,该方法还包括:
(d)按照设定的老化定时时间启动MAC快转表表项老化,在所述老化定时时间内,如果所述MAC快转表中的某一表项没有匹配报文到达则删除该表项,如果有匹配报文到达则将老化定时时间刷新。
进一步地,该方法还包括:
(e)在预定时间内启动源MAC地址学习,在非预定时间内停止源MAC地址学习;其中在源MAC地址学习过程中,如果发现相同的源MAC地址再次被学习到,则以新的学习结果刷新MAC快转表以及MAC地址转发表。
本发明的又一方面还提供一种计算机软件产品,包括若干指令用以使得一台计算机设备执行上述方法。
本发明的再一方面还提供一种计算机设备,包括用以执行上述方法的软件以及运行该软件必须的硬件。
本发明的另一个方面还提供一种基于媒体访问控制层的报文转发装置,包括:
报文解析单元,用于对接收到的报文进行解析,提取该报文二层头中的源MAC地址、目的MAC地址信息;
转发单元,用于按照目的MAC对接收到的报文进行转发;
快转处理单元,用于根据报文解析单元解析结果创建和维护以源MAC地址和目的MAC地址信息为索引的MAC快转表,其中所述MAC快转表还包括对应的转发单元对报文转发处理结果;所述快转处理单元根据报文解析单元解析结果,在MAC快转表中查找匹配表项,当不存在匹配表项时,将该报文转至转发单元;当存在匹配表项时,直接调用所述MAC快转表匹配表项中的转发处理结果,将上述报文从转发处理结果中确定的出端口转发出去。
进一步地,所述转发处理结果为二层载荷以前的二层封装报头信息,所述调用转发处理结果具体为用已经记录的二层封装报头信息替换原有报文的二层封装报头。
进一步地,所述装置还包括:
定时维护单元,用于设定MAC快转表表项的老化时间,按照设定的老化定时时间启动MAC快转表表项老化,在所述老化定时时间内,如果MAC快转表中的某一表项没有匹配报文到达则删除该表项,如果有匹配报文到达则将老化定时时间刷新。
进一步地,该装置还包括:
源MAC地址定时学习单元,用于在预定时间内启动源MAC地址学习,在非预定时间内停止源MAC地址学习;其中在源MAC地址学习过程中,如果发现相同的源MAC地址再次被学习到,则以新的学习结果刷新MAC快转表以及MAC地址转发表。
与现有技术相比,本发明存在如下显著优点:
(1)对于源MAC地址和目的MAC地址相同的需要转发报文,利用其二层头封装格式完全一样这一特点,省略了报文转发的多个步骤,直接进行报文贴头转发,使得转发效率得到了提高;
(2)对源MAC地址的学习过程也是定时进行的,而非逐包进行,有效地减少了是CPU或者NP的数据处理压力。
附图说明
图1为现有技术中基于MAC的报文转发方法流程图;
图2为本发明实施例中基于MAC的报文转发方法流程图;
图3为本发明实施例中基于MAC的报文转发装置结构框图。
具体实施方式
本发明的设计思想是:设置一个以源MAC地址和目的MAC地址为索引的MAC快转表,该MAC快转表的表项内容还包括对应于上述源MAC地址和目的MAC地址的转发报文的二层载荷以前的二层封装报头,MAC入端口接收到报文后,直接以源MAC地址和目的MAC地址为索引查找MAC快转表,获取最终转发报文的二层载荷以前的二层封装报头信息,然后将此报文的封装替换为查找MAC快转表获取的封装形式,从MAC快转表项中维护的出端口发送出去。
下面结合附图和具体实施例对本发明作进一步地介绍,但不作为对本发明的限定。
一种基于MAC层的报文转发方法,包括下述步骤:
步骤201,当MAC入端口首次接收到需要转发的报文时,按照现有技术中的普通目的MAC转发方法进行报文转发,并在出端口处将源MAC地址、目的MAC地址以及对报文进行处理过程中得到的二层载荷以前的二层封装报头信息均直接记录在MAC快转表中,且启动该表项对应的老化定时时间,对应于一组源MAC地址和目的MAC地址形成一个表项,上述的MAC快转表以源MAC地址和目的MAC地址为索引;
上述的MAC快转表是在首次报文转发结束时建立的,对于上述报文进行处理过程中得到的作为MAC快转表表项内容的二层封装报头作一简单举例说明:如果接收到的报文为以太帧报文,则表项内容为以太帧的报头,如果该报文还包含其他的封装信息,则一并包括;而对于普通的EHTERNET封装的IP报文,则表项内容可以为IP报文的前面部分,而索引为EHTERNET帧头上的源MAC地址和目的MAC地址;对于CAPWAP封装的802.11MAC帧,则表项内容为802.11MAC帧头之前的内容,而索引为802.11MAC帧头上的源MAC地址和目的MAC地址;
步骤202,对接收到的后续报文进行解析,提取该报文中二层报头的源MAC地址、目的MAC地址等信息;
步骤203,以上述解析出的报文的源MAC地址和目的MAC地址为索引,在MAC快转表中查找匹配项;
本步骤中,在MAC快转表中查找匹配项,是指查找MAC快转表中是否存在与本次接收到报文的源MAC地址和目的MAC地址相同的表项;
步骤204,判断匹配是否成功,如果是,则执行步骤205,如果否,执行步骤206;
步骤205,将待转发的报文的二层报头剥离,将报文数据包直接进行贴头转发到对应出端口,即将报文直接封装成查找到的MAC快转表中获取的二层封装报头,从MAC快转表项中确定的出端口发送出去,执行步骤207;
步骤206,按照现有技术中的普通目的MAC转发方法进行报文转发,并在MAC快转表中增加包括该报文源MAC地址、目的MAC地址和在转发过程中得到的报文二层载荷以前的二层封装报头信息的表项;启动该表项对应的老化定时时间;
步骤207,判断是否有某个MAC快转表表项的老化定时时间到,如果是,执行步骤208,如果否,直接执行步骤209;
步骤208,删除该老化定时时间到的MAC快转表表项;
步骤209,判断是否在预定的源MAC地址学习的时间内,如果是,按照启动按照预定策略的源MAC地址学习,且在学习过程中,如果发现相同的源MAC地址再次被学习到则以新的学习结果刷新MAC快转表以及MAC地址转发表,然后返回执行步骤202;如果否,直接返回执行步骤202;
其中本步骤209中,源MAC地址学习的时间是通过定时的方式设定的,启动定时的时间可以为接收到首次报文时,也可以是系统设定的其他时间,当定时时间到时,对设定时间或者设定次数内接收的转发报文源MAC地址进行学习,并重新启动源MAC地址学习定时;此外,上述启动按照预定策略的源MAC地址学习中的预定策略是指对源MAC进行学习的次数、持续时间等的预先设定。
说明一点:上述的老化定时时间和源MAC地址的学习定时时间都是预先根据需要设定的。
从本实施的转发方法可以看出,本发明所提出的方法充分利用了在进行二层转发过程中,当需要转发的报文源MAC地址和目的MAC地址相同时,其封装格式完全一样这一特点,省略了报文转发的多个步骤,因而报文转发的效率得到了提高;而对于源MAC地址的学习也不是逐包进行的,而是采用定时学习的方法,因而也减小了数据处理的压力,提高了效率。
对应地,本发明还提供一种基于MAC的报文转发装置,包括:报文解析单元、转发单元、快转处理单元、定时维护单元和源MAC地址定时学习单元,其中:
报文解析单元,用于对接收到的报文进行解析,提取该报文二层头中的源MAC地址、目的MAC地址等信息;
转发单元,用于按照普通目的MAC转发流程转发接收到的报文;
快转处理单元,用于根据报文解析单元解析结果创建和维护以源MAC地址和目的MAC地址信息为索引,包括对应报文转发处理结果的MAC快转表,根据报文解析单元解析结果,在MAC快转表中查找匹配表项,当不存在匹配表项时,将该报文转至转发单元;当存在匹配表项时,直接将待转发的报文的二层报头剥离,将报文数据包直接进行贴头转发到对应MAC快转表项中确定的出端口,即将报文直接封装成查找到的MAC快转表中获取的二层封装报头,从MAC快转表项中确定的出端口发送出去;
定时维护单元,用于设定MAC快转表表项的老化时间,按照设定的老化定时时间启动MAC快转表表项老化,在所述老化定时时间内,如果MAC快转表中的某一表项没有匹配报文到达则删除该表项,如果有匹配报文到达则将老化定时时间刷新;
源MAC地址定时学习单元,用于在预定时间内启动源MAC地址学习,在非预定时间内停止源MAC地址学习;其中在源MAC地址学习过程中,如果发现相同的源MAC地址再次被学习到,则以新的学习结果刷新MAC快转表以及MAC地址转发表;其中,启动源MAC地址学习的预定时间可以是接收到报文的时刻,也可以是其他设定的时刻,对学习的源MAC地址可以是一个设定时间内接收到的报文或者或者设定次数的转发报文的源MAC地址,上述学习策略由系统预先设定。
通过以上的实施例的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必须的通用硬件平台的方式来实现,当然也可以通过硬件,但显然前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明实施例所述方法。