报文转发方法和装置与流程

文档序号:14574588发布日期:2018-06-02 01:13阅读:168来源:国知局
报文转发方法和装置与流程

本申请涉及网络通信技术,特别涉及报文转发方法和装置。



背景技术:

二层隧道协议(L2TP:Layer 2 Tunneling Protocol),是虚拟私有拨号网(VPDN:Virtual Private Dial-up Network)隧道协议的一种。L2TP通过在公共网络(如Internet)上建立L2TP隧道,使得远端用户(如企业驻外机构和出差人员)利用点对点协议(PPP:Point-to-Point Protocol)接入公共网络后通过L2TP隧道与企业内部网络通信,以访问企业内部网络资源,从而实现远端用户安全、经济且有效地接入私有的企业网络。

在L2TP隧道建立之后,还可进一步建立用于承载在L2TP隧道上的会话(Session)。同一个L2TP隧道承载至少一个Session。



技术实现要素:

本申请提供了报文转发方法和装置,以实现L2TP隧道上的中间网络设备按照路由负载分担方式转发数据报文。

本申请提供的技术方案包括:

一种报文转发方法,该方法应用于宽带远程接入服务器BRAS设备,包括:

接收第一数据报文;

确定所述第一数据报文通过本设备与对端设备之间已建立的L2TP隧道转发,则检查本地隧道源IP映射表中是否存在所述第一数据报文匹配的隧道源IP映射表项;

若是,依据所述隧道源IP映射表项指示的映射IP地址封装所述第一数据报文并通过所述L2TP隧道转发。

一种报文转发装置,该装置应用于宽带远程接入服务器BRAS设备,包括:

接收单元,用于接收第一数据报文;

确定单元,用于确定所述第一数据报文是否通过本设备与对端设备之间已建立的L2TP隧道转发;

隧道单元,用于在所述确定单元的确定结果为是时,检查本地隧道源IP映射表中是否存在所述第一数据报文匹配的隧道源IP映射表项;若是,依据所述隧道源IP映射表项指示的映射IP地址封装所述第一数据报文并通过所述L2TP隧道转发。

一种网络设备,包括:处理器和机器可读存储介质,所述机器可读存储介质存储有能够被处理器执行的机器可执行指令;所述处理器用于执行所述机器可执行指令,以实现上述的方法。

一种机器可读存储介质,所述机器可读存储介质存储有机器可执行指令,所述机器可执行指令在被处理器调用和执行时,所述机器可执行指令促使所述处理器实现上述的方法。

由以上技术方案可以看出,本申请中,BRAS设备检查出本地隧道源IP映射表中存在第一数据报文匹配的隧道源IP映射表项,则依据所述隧道源IP映射表项指示的映射IP地址封装所述第一数据报文并通过所述L2TP隧道转发,而非一刀切地将第一数据报文封装的L2TP隧道头中的隧道源IP地址统一设为本设备的IP地址,这实现了所述L2TP隧道上的所有数据报文所封装的L2TP隧道头中的隧道源IP地址并非都为本BRAS设备的IP地址,使得所述L2TP隧道上的中间网络设备即使发现有多条等价路由转发数据报文,也会因为数据报文所封装的L2TP隧道头中的隧道源IP地址不同而实现按照路由负载分担方式转发数据报文。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。

图1为本申请提供的应用组网示意图;

图2为本申请提供的方法流程图;

图3为本申请实施例提供的隧道源IP映射表生成流程图;

图4为本申请实施例提供的另一隧道源IP映射表生成流程图;

图5为本申请一个实施例提供的方法流程图;

图6为本申请一个实施例提供的另一方法流程图;

图7为本申请另一个实施例提供的方法流程图;

图8为本申请另一个实施例提供的另一方法流程图;

图9为本申请提供的装置结构示意图;

图10为本申请提供的硬件装置结构示意图。

具体实施方式

在L2TP应用的组网(简称L2TP组网)中,L2TP隧道两端设备比如图1所示的L2TP访问集中器(LAC:L2TP Access Concentrator)与L2TP网络服务器LNS(L2TP Network Server)之间的网络一般是三层网络。如此,即使L2TP隧道的一端设备在发送数据报文时先为数据报文封装L2TP隧道头之后经由L2TP隧道封装转发,则当数据报文到达L2TP隧道的中间设备比如图1所示的路由器(ROUTER)时,假若ROUTER发现有多条等价路由转发该数据报文,ROUTER就会依据数据报文封装的L2TP隧道源IP地址、L2TP隧道目的IP地址进行哈希运算,但是,因为承载在同一L2TP隧道上的所有数据报文,其封装的L2TP隧道头中的L2TP隧道源IP地址、L2TP隧道目的IP地址都是相同的,这就导致ROUTER始终会选择一条固定的路由转发承载在同一L2TP隧道上的所有数据报文,无法实现L2TP隧道的中间网络设备按照路由负载分担方式转发数据报文。

基于此,本申请中,为了实现L2TP隧道的中间网络设备按照路由负载分担方式转发数据报文,则在通过L2TP隧道转发数据报文时,对数据报文封装的L2TP隧道头中的隧道源IP地址进行修改,具体见图2所示流程。

参见图2,图2为本申请提供的方法流程图。该流程应用于宽带远程接入服务器(BRAS:Broadband Remote Access Server)设备。这里,BRAS设备为L2TP隧道的一端设备,比如为LAC,或者为LNS,本申请并不具体限定。

如图2所示,该流程可包括以下步骤:

步骤201,接收第一数据报文。

作为一个实施例,这里的第一数据报文为PPPOE数据报文。

步骤202,确定所述第一数据报文通过本设备与对端设备之间已建立的L2TP隧道转发,则检查本地隧道源IP映射表中是否存在所述第一数据报文匹配的隧道源IP映射表项,若是,执行步骤203。

作为一个实施例,本步骤202中,确定第一数据报文通过本设备与对端设备之间已建立的L2TP隧道转发包括:

步骤a1,判断第一数据报文是否命中本地认证表项,当第一数据报文命中本地认证表项,确定所述第一数据报文合法,执行步骤a2。

需要说明的是,本步骤a1中,当第一数据报文未命中本地认证表项,则确定第一数据报文不合法,可直接丢弃第一数据报文。第一数据报文未命中本地认证表项的情况不是本申请的重点,不再展开描述。

作为一个实施例,假若BRAS设备为LAC,则这里的本地认证表项为PPPOE用户表项。PPPOE用户表项的结构类似现有PPPOE用户表项,不再赘述。

作为另一个实施例,假若BRAS设备为LNS,则这里的本地认证表项为FIB表项。FIB表项的结构类似现有FIB表项,不再赘述。

步骤a2,依据本地认证表项中的L2TP隧道关联标识确定L2TP隧道ID,依据所述L2TP隧道ID、以及所述第一数据报文携带的Session ID在本地已生成的L2TP隧道封装表中查找对应的L2TP隧道封装表项,若查找到,则确定所述第一数据报文通过本设备与对端设备之间已建立的与所述L2TP隧道ID对应的L2TP隧道转发。

至此,通过步骤a1和步骤a2,即可实现确定第一数据报文通过本设备与对端设备之间已建立的L2TP隧道转发。

作为一个实施例,本步骤202中,检查本地已生成的隧道源IP映射表中是否存在所述第一数据报文匹配的隧道源IP映射表项包括:

步骤b1,检查本地隧道源IP映射表中是否存在包含确定出的L2TP隧道的L2TP隧道ID、第一数据报文携带的Session ID、且类型为第一指定类型的隧道源IP映射表项;若是,执行步骤b2,若否,执行步骤b3。

步骤b2,确定本地已生成的隧道源IP映射表中存在所述第一数据报文匹配的隧道源IP映射表项。

步骤b3,确定本地已生成的隧道源IP映射表中不存在所述第一数据报文匹配的隧道源IP映射表项。

作为一个实施例,本步骤202中,若确定本地已生成的隧道源IP映射表中不存在所述第一数据报文匹配的隧道源IP映射表项,则直接经由所述L2TP隧道转发。

在一个例子中,隧道源IP映射表可预先配置。

在另一个例子中,隧道源IP映射表可在执行本方法之前动态生成。下文会通过一个具体实施例描述如何动态生成,这里暂不描述。

在本申请中,隧道源IP映射表中各隧道源IP映射表项用于指示其匹配的数据报文在经由L2TP隧道转发时所封装的L2TP隧道头中的隧道源IP地址(记为映射IP地址)。

步骤203,依据所述隧道源IP映射表项指示的映射IP地址封装所述第一数据报文并通过所述L2TP隧道转发。

本步骤203是在本地隧道源IP映射表中存在所述第一数据报文匹配的隧道源IP映射表项的前提下执行的。

在一个例子中,本步骤203具体为:按照现有L2TP隧道头封装机制封装第一数据报文,这里,L2TP隧道头中的隧道源IP地址为本设备的IP地址比如环回(Loopback)地址,隧道目的IP地址为对端设备的IP地址比如环回(Loopback)地址,之后,将第一数据报文封装的L2TP隧道头中的隧道源IP地址修改为所述源IP映射表项中指示的映射IP地址并通过所述L2TP隧道转发。

在另一个例子中,本步骤203具体为:按照类似现有L2TP隧道头封装机制封装第一数据报文,L2TP隧道头中的隧道源IP地址为所述源IP映射表项中指示的映射IP地址,隧道目的IP地址为对端设备的IP地址比如环回(Loopback)地址,之后,将封装了L2TP隧道头的第一数据报文通过所述L2TP隧道转发。

通过步骤203可以看出,在本申请中,BRAS设备检查出本地隧道源IP映射表中存在第一数据报文匹配的隧道源IP映射表项,则依据所述隧道源IP映射表项指示的映射IP地址封装所述第一数据报文并通过所述L2TP隧道转发,这实现了所述L2TP隧道上的所有数据报文所封装的L2TP隧道头中的隧道源IP地址并非都为本BRAS设备的IP地址,使得所述L2TP隧道上的中间网络设备即使发现有多条等价路由转发数据报文,也会因为数据报文所封装的L2TP隧道头中的隧道源IP地址不同而选择不同的路由,实现L2TP隧道上的中间网络设备按照路由负载分担方式转发数据报文。

需要说明的是,上述图2所示流程以通过本地非L2TP隧道口接收第一数据报文为例,其中,若BRAS设备作为LAC,则本地非L2TP隧道口可为用户侧端口,若BRAS设备作为LNS,则本地非L2TP隧道口可为IP端口。

还需要说明的是,在本申请中,BRAS设备还可通过本地L2TP隧道口接收封装了L2TP隧道头的数据报文(记为第二数据报文),当BRAS设备通过本地L2TP隧道口接收封装了L2TP隧道头的第二数据报文时,检查本地已生成的隧道源IP映射表中是否存在所述第二数据报文匹配的隧道源IP映射表项;若是,将所述第二数据报文封装的L2TP隧道头进行解封装并转发解封装后的数据报文。

作为一个实施例,上述检查本地已生成的隧道源IP映射表中是否存在所述第二数据报文匹配的隧道源IP映射表项包括:

步骤c1,从第二数据报文中解析出Session ID、以及从第二数据报文封装的L2TP隧道头中解析出L2TP隧道ID、L2TP隧道源IP地址。

作为一个实施例,这里的第二数据报文也为PPPOE数据报文,其携带Session ID。基于此,本步骤c1很容易从第二数据报文中解析出Session ID。

步骤c2,若依据解析出的L2TP隧道源IP地址、L2TP隧道ID、Session ID未命中本地L2TP解封装表项,则检查本地已生成的隧道源IP映射表中是否存在包含解析出的L2TP隧道源IP地址、L2TP隧道ID、会话Session ID、且类型为第二指定类型的隧道源IP映射表项,若是,确定本地已生成的隧道源IP映射表中存在所述第二数据报文匹配的隧道源IP映射表项;若否,确定本地已生成的隧道源IP映射表中不存在所述第二数据报文匹配的隧道源IP映射表项。

需要说明的是,本步骤c2中,若依据解析出的L2TP隧道ID、Session ID命中本地L2TP解封装表项,则直接将所述第二数据报文封装的L2TP隧道头进行解封装并转发解封装后的数据报文。

最终通过步骤c1和步骤c2实现检查本地已生成的隧道源IP映射表中是否存在所述第二数据报文匹配的隧道源IP映射表项。

下面详细描述隧道源IP映射表如何动态生成:

如上描述,本申请中,BRAS设备为L2TP隧道的一端设备,比如为LAC,或者为LNS,下面先以BRAS设备为LAC为例描述如何生成隧道源IP映射表。

参见图3,图3为本申请实施例提供的隧道源IP映射表生成流程图。在本实施例中,BRAS设备为LAC,基于BRAS设备为LAC的前提下,本实施例中,BRAS设备的对端设备为LNS。图3所示流程生成隧道源IP映射表项的操作主要包括:

在本LAC与对端设备LNS之间的L2TP隧道成功建立后,若发现有用户上线,则为T1、S1分配一个对应的映射IP地址,依据T1、S1、以及与T1、S1对应的映射IP地址生成类型为第一指定类型的隧道源IP映射表项,所述T1为:LAC为所述成功建立的L2TP隧道分配的一端隧道ID,S1为:LAC为承载在所述成功建立的L2TP隧道上且与所述上线用户关联的Session分配的一端Session ID;所述T2为:所述LNS为所述成功建立的L2TP隧道分配的另一端隧道ID;以及,

接收对端设备LNS反馈的T2、S2、以及与T2、S2对应的映射IP地址,依据接收到的T2、S2、以及与T2、S2对应的映射IP地址生成类型为第二指定类型的隧道源IP映射表项,所述S2为:所述LNS为承载在所述成功建立的L2TP隧道上且与所述上线用户关联的Session分配的另一端Session ID。

下面具体描述流程:

如图3所示,该流程可包括以下步骤:

步骤301,LAC在与对端设备LNS之间的L2TP隧道成功建立后,若发现有用户上线,则LAC向LNS发送T2、S1。

在一个例子中,T2为:LNS为上述成功建立的L2TP隧道分配的一端隧道ID,S1为LAC为承载在上述成功建立的L2TP隧道上的Session分配的一端Session ID。这里,承载在上述成功建立的L2TP隧道上的Session与上线用户关联。

作为一个实施例,在本发明中,LAC向LNS发送T2、S1具体可为:LAC将T2、S1携带在ICRQ报文中向LNS发送。具体地,LAC将T2携带在ICRQ报文的L2TP隧道头中,将S1携带在ICRQ报文的AVP字段中并向LNS发送。

当LAC向LNS发送ICRQ报文后,LNS会收到ICRQ报文,当LNS收到ICRQ报文时,从ICRQ报文解析出T2、S1,确定本LNS为承载在上述成功建立的L2TP隧道上的上述Session分配的另一端Session ID(记为S2)。之后,LNS为确定的T2、S2分配一个对应的IP地址(简称映射IP地址,记为IP2)。作为一个实施例,LNS可根据预设的算法并结合T2、S2计算出一个IP地址(简称映射IP地址,记为IP2)。之后,LNS依据T2、S2、以及与T2、S2对应的IP2生成类型为第一指定类型的一个隧道源IP映射表项(记为隧道源IP映射表项30)。这里,第一指定类型用于指示隧道源IP映射表项为本地生成,用L标识。表1具体示出了隧道源IP映射表项30的结构:

表1

并且,LNS还会向LAC反馈T2、S2、以及与T2、S2对应的IP2。作为一个实施例,在本申请中,LNS可将T2、S2、以及与T2、S2对应的IP2携带在ICRP报文中(以携带在ICRP报文的AVP字段为例)并发送给LAC。之后执行步骤302。

步骤302,LAC接收LNS反馈的T2、S2、以及与T2、S2对应的IP2,依据接收到的T2、S2、以及与T2、S2对应的IP2生成类型为第二指定类型的一个隧道源IP映射表项(记为隧道源IP映射表项40),并执行步骤303。

如上描述,LNS可将T2、S2、以及与T2、S2对应的IP2携带在ICRP报文中并发送给LAC。如此,当LAC接收到ICRP报文后,从ICRP报文解析出T2、S2、以及与T2、S2对应的IP2。之后依据接收到的T2、S2、以及与T2、S2对应的IP2生成类型为第二指定类型的一个隧道源IP映射表项(记为隧道源IP映射表项40)。这里的第二指定类型用于指示隧道源IP映射表项为远端发送,用R标识。表2示出了隧道源IP映射表项40的结构:

表2

需要说明的是,在本申请中,LNS还会进一步反馈T1、S1给LAC。其中,S1是由LNS基于上述步骤301中LAC发送的S1确定,T1是由LNS基于上述步骤301中LAC发送的T2确定的与T2指示的L2TP隧道的另一端隧道ID。当LAC接收到T1、S1后,执行步骤303。

步骤303,LAC为收到的T1、S1分配一个对应的IP地址(简称映射IP地址,记为IP1),依据T1、S1、以及与T1、S1对应的IP1生成类型为第一指定类型的一个隧道源IP映射表项(记为隧道源IP映射表项41)。

本实施例中,LAC可根据预设的算法并结合T1、S1计算出一个IP地址(简称映射IP地址,记为IP1)。之后,LAC依据T1、S1、以及与T1、S1对应的IP1生成类型为第一指定类型的一个隧道源IP映射表项(记为隧道源IP映射表项41)。这里,第一指定类型用于指示隧道源IP映射表项为本地生成,用L标识。基于表2的基础上,表3具体示出了隧道源IP映射表项41的结构:

表3

作为一个实施例,本步骤303中生成隧道源IP映射表项41的操作也可在上述步骤301中执行。相比在步骤301中生成隧道源IP映射表项41,在步骤301之后收到T2、S2后生成隧道源IP映射表项41,能够保证生成的隧道源IP映射表项41是可用的,原因为:假若在步骤301中生成隧道源IP映射表项41,而如果步骤301中发送的T1、S1未到达LNS,则生成的隧道源IP映射表项41是无用的,浪费表项资源。

如此,LAC即可按照上述步骤301至步骤303的操作生成隧道源IP映射表项,实现了隧道源IP映射表的生成。

至此,完成图3所示流程。

需要说明的是,在步骤303中,LAC还可进一步将T1、S1、以及与T1、S1对应的IP1反馈给LNS。作为一个实施例,在本申请中,LAC可将T1、S1、以及与T1、S1对应的IP1携带在ICCN报文中并发送给LNS。当LNS接收LAC反馈的T1、S1、以及与T1、S1对应的IP1,则依据接收到的T1、S1、以及与T1、S1对应的IP1生成类型为第二指定类型的一个隧道源IP映射表项(记为隧道源IP映射表项31),这里的第二指定类型用于指示隧道源IP映射表项为远端发送,用R标识。基于表1示出的隧道源IP映射表项30,表4示出了隧道源IP映射表项31的结构:

表4

上述以BRAS设备为LAC为例描述如何生成隧道源IP映射表,下面以BRAS设备为LNS为例描述如何生成隧道源IP映射表:

参见图4,图4为本申请实施例提供的另一隧道源IP映射表生成流程图。在本实施例中,BRAS设备为LNS,基于BRAS设备为LNS的前提下,本实施例中,BRAS设备的对端设备为LAC。图4所示的隧道源IP映射表生成流程主要包括:在本LNS与对端设备LAC之间的L2TP隧道成功建立后,接收对端设备LAC在用户上线后发送的T1、S1、以及与T1、S1对应的映射IP地址,依据接收到的T1、S1、以及与T1、S1对应的映射IP地址生成类型为第二指定类型的隧道源IP映射表项;所述T1为:LAC为所述成功建立的L2TP隧道分配的一端隧道ID,S1为:LAC为承载在所述成功建立的L2TP隧道上且与所述上线用户关联的Session分配的一端Session ID;以及,

为T2、S2分配一个对应的映射IP地址,依据T2、S2、以及与T2、S2对应的映射IP地址生成类型为第一指定类型的隧道源IP映射表项;所述T2为:所述LNS为所述成功建立的L2TP隧道分配的另一端隧道ID,所述S2为:所述LNS为承载在所述成功建立的L2TP隧道上且与所述上线用户关联的Session分配的另一端Session ID。

下面对图4所示流程进行具体描述:

如图4所示,图4所示流程具体包括:

步骤401,LNS接收LAC发送的T2、S1,依据S1确定本LNS为S1指示的Session分配的另一端Session ID(记为S2),为T2、S2分配一个对应的IP地址(简称映射IP地址,记为IP2),依据T2、S2、以及与T2、S2对应的IP2生成类型为第一指定类型的一个隧道源IP映射表项(记为隧道源IP映射表项30)。

本步骤401具体见上述步骤301,这里不再详细描述。

步骤402,LNS向LAC反馈T2、S2、以及与T2、S2对应的IP2。

本步骤402向LAC反馈T2、S2、以及与T2、S2对应的IP2,其目的是便于LAC生成如隧道源IP映射表项40所示的隧道源IP映射表项。

步骤403,LNS接收LAC反馈的T1、S1、以及与T1、S1对应的IP1,依据接收到的T1、S1、以及与T1、S1对应的IP1生成类型为第二指定类型的一个隧道源IP映射表项(记为隧道源IP映射表项31)。

隧道源IP映射表项31的结构如表4所示,不再赘述。

如此,LNS即可按照上述步骤401至步骤43的操作生成隧道源IP映射表项,实现了隧道源IP映射表的生成。

至此,完成图4所示流程。

以上对隧道源IP映射表的生成进行了描述。

下面基于如上描述的隧道源IP映射表,通过两个实施例对上述图2所示流程进行描述:

在其中一个实施例中:

参见图5,图5为本申请其中一个实施例提供的方法流程图。本实施例以BRAS设备为LAC,BRAS设备的对端设备为LNS为例描述:

如图5所示,该流程可包括以下步骤:

步骤501,LAC通过本地用户侧端口接收数据报文(记为报文50)。

步骤502,LAC判断报文50是否命中PPPOE用户表项,如果不命中直接丢弃报文50,如果命中,执行步骤503。

步骤503,LAC根据报文50命中的PPPOE用户表项中的L2TP隧道关联标识确定L2TP隧道ID,依据确定的L2TP隧道ID、以及报文50携带的Session ID判断是否命中L2TP隧道封装表项,如果命中,执行步骤504,如果未命中,则按照非L2TP隧道的方式转发报文50。

步骤504,LAC在报文50封装L2TP隧道头,检查本地隧道源IP映射表中是否存在确定的L2TP隧道ID、以及报文50携带的Session ID、且类型为第一指定类型的隧道IP映射表项,如果是,执行步骤505,如果否,则直接经由L2TP隧道ID对应的L2TP隧道转发报文50。

本步骤504中,封装的L2TP隧道头中隧道源IP地址为本LAC的IP地址,隧道目的IP地址为对端设备LNS的IP地址。

步骤505,LAC将L2TP隧道头中隧道源IP地址修改为该存在的隧道IP映射表项中的IP地址并经由L2TP隧道ID对应的L2TP隧道转发。

本步骤505是上述步骤504确定出存在确定的L2TP隧道ID、以及报文50携带的Session ID、且类型为第一指定类型的隧道IP映射表项的前提下执行的,假如该存在的隧道IP映射表项为上述表3所示的隧道源IP映射表项41,则本步骤505中,LAC将L2TP隧道头中隧道源IP地址修改为隧道IP映射表项41中的IP地址即IP1并经由L2TP隧道ID对应的L2TP隧道转发。如上描述,IP1为LAC依据T1、S1并按照一定算法计算出的,并非为本LAC的IP地址,实现了经由L2TP隧道转发的所有数据报文并非都为本LAC的IP地址,其可为按照算法算出来的IP地址,如此,L2TP隧道上的中间网络设备即使发现有多条等价路由转发数据报文,也会因为数据报文所封装的L2TP隧道头中的隧道源IP地址不同而选择不同的路由,实现L2TP隧道上的中间网络设备按照路由负载分担方式转发数据报文。

至此,完成图5所示流程。

图5所示流程以LAC通过L2TP隧道发送数据报文为例进行描述。而当LAC通过L2TP隧道口接收到对端设备LNS发送过来的封装了L2TP隧道头的数据报文时,其可执行图6所示流程。

参见图6,图6为本申请其中一个实施例提供的另一方法流程图。本申请其中一个实施例以BRAS设备为LAC,BRAS设备的对端设备为LNS为例描述:

如图6所示,该流程可包括以下步骤:

步骤601,LAC通过本地L2TP隧道口接收数据报文(记为报文60)。

报文60具体为封装了L2TP隧道头的PPPOE数据报文。

步骤602,LAC判断报文60是否命中FIB表,如果不命中直接丢弃,如果命中,执行步骤603。

步骤603,LAC从报文60解析出Session ID、以及从报文60封装的L2TP隧道头中解析出L2TP隧道ID,根据解析出的L2TP隧道ID、以及Session ID判断是否命中L2TP隧道解封装表项,如果命中,直接按照命中的L2TP隧道解封装表项对报文60直接进行L2TP隧道解封装,如果未命中,则执行步骤604。

本步骤603中,当根据解析出的L2TP隧道ID、以及Session ID判断未命中L2TP隧道解封装表项,则说明对端设备LNS在发送报文60时有可能修改了报文60封装的L2TP隧道头中的L2TP隧道源IP地址,所以还需要进一步执行步骤604。

步骤604,LAC从报文60封装的L2TP隧道头中解析出L2TP隧道源IP地址,检查本地隧道源IP映射表中是否存在解析出的L2TP隧道源IP地址、L2TP隧道ID、Session ID、且类型为第二指定类型的隧道IP映射表项,如果是,则执行步骤605,如果否,则丢弃报文60。

本步骤604中,当LAC检查本地隧道源IP映射表中存在解析出的L2TP隧道源IP地址、L2TP隧道ID、Session ID、且类型为第二指定类型的隧道IP映射表项,则说明对端设备LNS在发送报文60时修改了报文60封装的L2TP隧道头中的L2TP隧道源IP地址,则可将报文60封装的L2TP隧道头中的L2TP隧道源IP地址替换为对端设备LNS的IP地址,之后依据L2TP隧道ID、Session ID、以及替换后的隧道源IP地址判断是否命中L2TP隧道解封装表项,如果是,执行步骤605。

步骤605,LAC直接对报文60直接进行L2TP隧道解封装并通过查PPPOE用户表转发L2TP隧道解封装后的报文。

最终,通过图6所示流程实现了报文60的解封装。

至此,完成图6所示流程。

以上对其中一个实施例进行了描述,下面对其中另一个实施例进行描述:

在其中另一个实施例中:

以BRAS设备为LNS,BRAS设备的对端设备为LAC为例描述。

参见图7,图7为本申请另一个实施例提供的方法流程图。如图7所示,该流程可包括以下步骤:

步骤701,LNS通过非L2TP隧道口接收数据报文(记为报文70)。

步骤702,LNS判断报文70是否命中FIB表项,如果不命中直接丢弃报文70,如果命中,执行步骤703。

步骤703,LNS根据报文50命中的FIB表项中的L2TP隧道关联标识确定L2TP隧道ID,依据确定的L2TP隧道ID、以及报文70携带的Session ID判断是否命中L2TP隧道封装表项,如果命中,执行步骤704,如果未命中,则按照非L2TP隧道的方式转发报文70。

步骤704,LNS在报文70封装L2TP隧道头,检查本地隧道源IP映射表中是否存在确定的L2TP隧道ID、以及报文70携带的Session ID、且类型为第一指定类型的隧道IP映射表项,如果是,执行步骤705,如果否,则直接经由L2TP隧道ID对应的L2TP隧道转发报文70。

本步骤704中,封装的L2TP隧道头中隧道源IP地址为本LNS的IP地址,隧道目的IP地址为对端设备LAC的IP地址。

步骤705,LNS将L2TP隧道头中隧道源IP地址修改为该存在的隧道IP映射表项中的IP地址并经由L2TP隧道ID对应的L2TP隧道转发。

本步骤705是上述步骤704确定出存在确定的L2TP隧道ID、以及报文70携带的Session ID、且类型为第一指定类型的隧道IP映射表项的前提下执行的,假如该存在的隧道IP映射表项为上述表4所示的隧道源IP映射表项30,则本步骤705中,LNS将L2TP隧道头中隧道源IP地址修改为隧道IP映射表项30中的IP地址即IP2并经由L2TP隧道ID对应的L2TP隧道转发。如上描述,IP2为LNS依据T2、S2并按照一定算法计算出的,并非为本LNS的IP地址,实现了经由L2TP隧道转发的所有数据报文并非都为本LNS的IP地址,其可为按照算法算出来的IP地址,如此,L2TP隧道上的中间网络设备即使发现有多条等价路由转发数据报文,也会因为数据报文所封装的L2TP隧道头中的隧道源IP地址不同而选择不同的路由,实现L2TP隧道上的中间网络设备按照路由负载分担方式转发数据报文。

至此,完成图7所示流程。

图7所示流程以LNS通过L2TP隧道发送数据报文为例进行描述。而当LNS通过L2TP隧道口接收到对端设备LAC发送过来的封装了L2TP隧道头的数据报文时,其可执行图8所示流程。

参见图8,图8为本申请另一个实施例提供的另一方法流程图。如图8所示,该流程可包括以下步骤:

步骤801,LNS通过本地L2TP隧道口接收数据报文(记为报文80)。

报文80具体为封装了L2TP隧道头的PPPOE数据报文。

步骤802,LNS判断报文80是否命中FIB表,如果不命中直接丢弃,如果命中,执行步骤803。

步骤803,LNS从报文80解析出Session ID、以及从报文80封装的L2TP隧道头中解析出L2TP隧道ID,根据解析出的L2TP隧道ID、以及Session ID判断是否命中L2TP隧道解封装表项,如果命中,直接按照命中的L2TP隧道解封装表项对报文80直接进行L2TP隧道解封装,如果未命中,则执行步骤804。

本步骤803中,当根据解析出的L2TP隧道ID、以及Session ID判断未命中L2TP隧道解封装表项,则说明对端设备LAC在发送报文80时有可能修改了报文80封装的L2TP隧道头中的L2TP隧道源IP地址,所以还需要进一步执行步骤804。

步骤804,LNS从报文80封装的L2TP隧道头中解析出L2TP隧道源IP地址,检查本地隧道源IP映射表中是否存在解析出的L2TP隧道源IP地址、L2TP隧道ID、Session ID、且类型为第二指定类型的隧道IP映射表项,如果是,则执行步骤805,如果否,则丢弃报文80。

本步骤804中,当LNS检查本地隧道源IP映射表中存在解析出的L2TP隧道源IP地址、L2TP隧道ID、Session ID、且类型为第二指定类型的隧道IP映射表项,则说明对端设备LAC在发送报文80时修改了报文80封装的L2TP隧道头中的L2TP隧道源IP地址,则可将报文80封装的L2TP隧道头中的L2TP隧道源IP地址替换为对端设备LAC的IP地址,之后依据L2TP隧道ID、Session ID、以及替换后的隧道源IP地址判断是否命中L2TP隧道解封装表项,如果是,执行步骤805。

步骤805,LNS直接对报文80直接进行L2TP隧道解封装并通过查PPPOE用户表转发L2TP隧道解封装后的报文。

最终通过图8所示流程实现了报文80的解封装。

至此,完成图8所示流程。

以上对本申请提供的方法进行了描述。下面对本申请提供的装置进行描述:

参见图9,图9为本身请提供的装置结构图。该装置应用于BRAS设备,包括:

接收单元,用于接收第一数据报文;

确定单元,用于确定所述第一数据报文是否通过本设备与对端设备之间已建立的L2TP隧道转发;

隧道单元,用于在所述确定单元的确定结果为是时,检查本地隧道源IP映射表中是否存在所述第一数据报文匹配的隧道源IP映射表项;若是,依据所述隧道源IP映射表项指示的映射IP地址封装所述第一数据报文并通过所述L2TP隧道转发。

作为一个实施例,所述隧道单元检查本地隧道源IP映射表中是否存在所述第一数据报文匹配的隧道源IP映射表项包括:

检查本地隧道源IP映射表中是否存在包含所述L2TP隧道的L2TP隧道ID、所述第一数据报文携带的会话Session ID、且类型为第一指定类型的隧道源IP映射表项;

若是,确定本地隧道源IP映射表中存在所述第一数据报文匹配的隧道源IP映射表项;

若否,确定本地隧道源IP映射表中不存在所述第一数据报文匹配的隧道源IP映射表项。

作为一个实施例,所述隧道单元依据所述源IP映射表项指示的映射IP地址封装所述第一数据报文包括:

在第一数据报文封装隧道源IP地址为所述映射IP地址的L2TP隧道头。

作为一个实施例,所述接收单元进一步通过本地L2TP隧道口接收封装了L2TP隧道头的第二数据报文;

所述隧道单元进一步检查本地隧道源IP映射表中是否存在所述第二数据报文匹配的隧道源IP映射表项;若是,将所述第二数据报文封装的L2TP隧道头进行解封装并转发解封装后的数据报文。

作为一个实施例,所述隧道单元检查本地隧道源IP映射表中是否存在所述第二数据报文匹配的隧道源IP映射表项包括:

从第二数据报文中解析出会话Session ID、以及从第二数据报文封装的L2TP隧道头中解析出L2TP隧道ID;

若依据解析出的L2TP隧道ID、会话Session ID未命中本地L2TP解封装表项,则从第二数据报文封装的L2TP隧道头中解析出L2TP隧道源IP地址,检查本地隧道源IP映射表中是否存在包含解析出的L2TP隧道源IP地址、L2TP隧道ID、会话Session ID、且类型为第二指定类型的隧道源IP映射表项;

若是,确定本地隧道源IP映射表中存在所述第二数据报文匹配的隧道源IP映射表项;

若否,确定本地隧道源IP映射表中不存在所述第二数据报文匹配的隧道源IP映射表项。

至此,完成图9所示装置的结构。

下面对本申请提供的硬件装置进行描述:

参见图10,图10为本申请提供的硬件装置结构图。如图10所示,包括:处理器和机器可读存储介质,所述机器可读存储介质存储有能够被处理器执行的机器可执行指令;所述处理器用于执行所述机器可执行指令,以实现如上所述的报文转发方法。

本申请中,机器可读存储介质可以是任何电子、磁性、光学或其它物理存储装置,可以包含或存储信息,如可执行指令、数据,等等。例如,机器可读存储介质可以是:随机存取存储器(英文:Radom Access Memory,简称:RAM)、易失存储器、非易失性存储器、闪存、存储驱动器(如硬盘驱动器)、固态硬盘、任何类型的存储盘(如光盘、dvd等),或者类似的存储介质,或者它们的组合。

至此,完成图10所示的硬件结构描述。

在本申请中,还提供了一种包括机器可执行指令的机器可读存储介质,例如图10中的机器可读存储介质,所述机器可执行指令可由内存访问装置中的处理器执行以实现以上描述的报文转发方法。

具体地,通过调用并执行机器可读存储介质中与内存访问方法对应的机器可执行指令,处理器可执行以上报文转发方法中的操作。

以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1