CN102333039B - 一种转发报文的方法、生成表项的方法及装置 - Google Patents

一种转发报文的方法、生成表项的方法及装置 Download PDF

Info

Publication number
CN102333039B
CN102333039B CN201110327770.3A CN201110327770A CN102333039B CN 102333039 B CN102333039 B CN 102333039B CN 201110327770 A CN201110327770 A CN 201110327770A CN 102333039 B CN102333039 B CN 102333039B
Authority
CN
China
Prior art keywords
field
internet protocol
hash
signaling message
tunnel
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201110327770.3A
Other languages
English (en)
Other versions
CN102333039A (zh
Inventor
田小辉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
XFusion Digital Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201110327770.3A priority Critical patent/CN102333039B/zh
Publication of CN102333039A publication Critical patent/CN102333039A/zh
Priority to PCT/CN2012/080679 priority patent/WO2013060191A1/zh
Application granted granted Critical
Publication of CN102333039B publication Critical patent/CN102333039B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/46Interconnection of networks
    • H04L12/4633Interconnection of networks using encapsulation techniques, e.g. tunneling

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明实施例提供了一种转发报文的方法,包括:接收网际协议分组,该网际协议分组包含公网网际协议头、隧道协议头以及隧道协议标识字段;根据该隧道协议标识字段,在哈希控制表中查找隧道协议判断字段与该隧道协议标识字段匹配的第一表项;根据该第一表项的哈希因子提取字段,从该网际协议分组中提取哈希因子;根据该哈希因子执行哈希运算;根据该哈希运算的结果确定用于转发该网际协议分组的物理出接口。此外,还提供了转发报文的装置、生成表项的方法以及生成表项的装置。通过本发明实施例提出的转发报文的方法、生成表项的方法、转发报文的装置以及生成表项的装置,可以解决针对不同的隧道协议,需要开发不同的用于提取进行哈希运算的因子的软件代码,占用的存储空间较多的技术问题。

Description

一种转发报文的方法、生成表项的方法及装置
技术领域
本发明实施例涉及通信技术,尤其涉及一种转发报文的方法、生成表项的方法及装置。
背景技术
隧道协议已广泛应用于通信领域,比较典型的隧道协议包括通用路由封装(Generic Routing Encapsulation,GRE)协议、第二层隧道协议(Layer 2Tunneling Protocol,L2TP)等。相应的隧道协议报文包括GRE协议报文、L2TP报文等。隧道协议报文包括隧道协议头以及数据。可以通过增加网际协议(Internet Protocol)头的方式将隧道协议报文封装为网际协议分组。网际协议分组可以在因特网上传输。
为实现负载分担,对网际协议分组进行转发前,可以将网际协议头中的五元组作为哈希因子执行哈希运算,并根据哈希运算的结果确定进行转发的物理出接口。当五元组哈希的粒度不够时,可以通过软件代码对网际协议分组的隧道协议头进行解析并从隧道协议头中提取进行哈希运算的因子,进而解决五元组粒度不够的问题。其中,五元组分别是网际协议头中的协议字段、源地址字段、目的地址字段、用户数据报协议(User Datagram Protocol)头中的源端口字段以及目的端口字段。
发明人发现,现有技术存在以下问题:
针对不同的隧道协议,需要开发不同的用于提取进行哈希运算的因子的软件代码,占用的存储空间较多。
发明内容
本发明实施例提供一种网络地址查找方法和装置,可以解决针对不同的隧道协议,需要开发不同的用于提取进行哈希运算的因子的软件代码,占用的存储空间较多的问题。
一方面,本发明实施例提供的一种转发报文的方法,包括:
接收网际协议分组,该网际协议分组包含公网网际协议头以及隧道协议头,该网际协议分组包含隧道协议标识字段,该隧道协议标识字段用于标识该网际协议分组的隧道协议;
根据该隧道协议标识字段,在哈希控制表中查找隧道协议判断字段与该隧道协议标识字段匹配的第一表项,该哈希控制表的表项包括隧道协议判断字段以及哈希因子提取字段;
根据该第一表项的哈希因子提取字段,从该网际协议分组中提取哈希因子;
根据该哈希因子执行哈希运算;
根据该哈希运算的结果确定用于转发该网际协议分组的物理出接口;
根据该物理出接口转发该网际协议分组。
另一方面,本发明实施例提供的一种转发报文的装置,包括:
接收器,用于接收网际协议分组,该网际协议分组包含公网网际协议头以及隧道协议头,该网际协议分组包含隧道协议标识字段,该隧道协议标识字段用于标识该网际协议分组的隧道协议;
查找单元,用于根据该隧道协议标识字段,在哈希控制表中查找隧道协议判断字段与该隧道协议标识字段匹配的第一表项,该哈希控制表的表项包括隧道协议判断字段、信令报文判断字段以及哈希因子提取字段;
提取单元,用于根据该第一表项的哈希因子提取字段,从该网际协议分组中提取哈希因子;
执行单元,用于根据该哈希因子执行哈希运算;
确定单元,用于根据该哈希运算的结果确定用于转发该网际协议分组的物理出接口;
发送器,用于根据该物理出接口转发该网际协议分组。
又一方面,本发明实施例提供的一种生成表项的方法,包括:
生成哈希控制表的表项,该表项包括隧道协议判断字段以及哈希因子提取字段,该隧道协议判断字段用于判断网际协议分组的隧道协议标识字段是否与该隧道协议判断字段匹配,该网际协议分组包含公网网际协议头以及隧道协议头,该隧道协议标识字段用于标识该网际协议分组的隧道协议,该哈希因子提取字段用于为用于提取哈希因子的软件代码的变量赋值,以便于在该隧道协议标识字段与该隧道协议判断字段匹配的情况下,该软件代码从该网际协议分组中提取哈希因子。
再一方面,本发明实施例提供的一种生成表项的装置,包括:
表项生成单元,用于生成哈希控制表的表项,该表项包括隧道协议判断字段以及哈希因子提取字段,该隧道协议判断字段用于判断网际协议分组的隧道协议标识字段是否与该隧道协议判断字段匹配,该网际协议分组包含公网网际协议头以及隧道协议头,该隧道协议标识字段用于标识该网际协议分组的隧道协议,该哈希因子提取字段用于为第二软件代码的变量赋值;
第一赋值单元,用于根据该哈希因子提取字段为用于提取哈希因子的软件代码的变量赋值,以便于在该隧道协议标识字段与该隧道协议判断字段匹配的情况下,该软件代码从该网际协议分组中提取哈希因子。
综上所述,本发明实施例提供的转发报文的方法、转发报文的装置、生成表项的方法以及生成表项的装置均涉及到哈希控制表。哈希控制表的表项包括隧道协议判断字段以及哈希因子提取字段。根据隧道协议判断字段,可以在哈希控制表中查找到与网际协议分组匹配的表项。该表项与某一隧道协议对应。根据哈希因子提取字段,可以从网际协议分组中提取出进行哈希运算的因子。也就是说哈希控制表的表项中的哈希因子提取字段可以为用于提取哈希因子的软件代码的变量赋值,从而使该软件代码可以从采用哈希控制表的表项对应的隧道协议的网际协议分组中提取出进行哈希运算的因子。
可见,通过本发明实施例提供的转发报文的方法、生成表项的方法及装置,可以解决针对不同的隧道协议,需要开发不同的用于提取进行哈希运算的因子的软件代码,占用的存储空间较多的问题。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的转发报文的方法的流程图;
图2是本发明实施例提供的转发报文的装置的示意图;
图3是本发明实施例提供的生成表项的方法的流程图;
图4是本发明实施例提供的生成表项的装置的示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一:
本发明实施例提供了一种转发报文的方法,可以用于需要进行哈希运算的场景。例如路由器对隧道协议为GRE协议的网际协议分组进行转发时,根据本发明实施例提供的转发报文的方法,可以从该网际协议分组中获得哈希因子,进而进行哈希运算。参见图1,图1是本发明实施例提供的转发报文的方法的流程图,该方法包括:
101:接收网际协议分组,该网际协议分组包含公网网际协议头以及隧道协议头。该网际协议分组包含隧道协议标识字段。该隧道协议标识字段用于标识该网际协议分组的隧道协议。
具体实现时,网际协议分组的网际协议可以是网际协议版本4,或者网际协议版本6。隧道协议头可以是GRE协议头,或者L2TP头。接收网际协议分组的网络设备可以是路由器。
在网际协议为网际协议版本4的场景下,隧道协议标识字段可以是公网网际协议头中的协议(Protocol)字段。例如,当协议字段为37时,网际协议分组的隧道协议是GRE协议。
当隧道协议标识字段包括公网网际协议头中的协议字段时,隧道协议标识字段还可以包括用户数据报协议头中的源端口字段或目的端口字段。例如,当协议字段为17,且源端口字段或者目的端口字段为1701时,网际协议分组的隧道协议是L2TP。
在网际协议为网际协议版本6的场景下,隧道协议标识字段可以是公网网际协议头中的下一个头(Next header)字段。例如,当下一个头字段为37时,网际协议分组的隧道协议是GRE协议。
当隧道协议标识字段包括公网网际协议头中的下一个头字段时,隧道协议标识字段还可以包括用户数据报协议头中的源端口字段或目的端口字段。例如,当下一个头字段为17,且源端口字段或者目的端口字段为1701时,网际协议分组的隧道协议是L2TP。
102:根据该隧道协议标识字段,在哈希控制表中查找隧道协议判断字段与该隧道协议标识字段匹配的第一表项。该哈希控制表的表项包括隧道协议判断字段以及哈希因子提取字段。
具体实现时,可以通过嵌入式系统开发环境生成哈希控制表,例如美国风河系统公司(Wind River System Inc.)提供的VxWorks。另外,用户也可以通过在控制台输入命令行的方式更新哈希控制表,包括增加或者删除哈希控制表的表项。哈希控制表可以存储在位于转发平面的存储空间。例如,哈希控制表可以存储在位于路由器转发平面的同步动态随机存储器(Synchronous Dynamic Random Access Memory)。
哈希控制表可以包括一个表项或者多个表项。当哈希控制表包括多个表项时,可以通过遍历多个表项的方式查找第一表项。第一表项的隧道协议判断字段等于网际协议分组的隧道协议标识字段。
在网际协议分组的隧道协议是GRE协议的场景下,隧道协议标识字段可以是公网网际协议头中的协议字段。第一表项中与协议字段对应的隧道协议判断字段为37。
在网际协议分组的隧道协议是L2TP的场景下,除了公网网际协议头中的协议字段,隧道协议标识字段还包括用户数据报协议头中的源端口字段或者目的端口字段。第一表项中与公网网际协议头中协议字段对应的隧道协议判断字段为17,第一表项中与用户数据报协议头中源端口字段或者目的端口字段对应的隧道协议判断字段为1701。
103:根据该第一表项的哈希因子提取字段,从该网际协议分组中提取哈希因子。
具体实现时,哈希因子提取字段可以包括偏移子字段以及长度子字段。其中,偏移子字段用于定义哈希因子在网际协议分组中的起始位置;长度子字段用于定义哈希因子的长度。因此,可以根据哈希因子提取字段中的偏移子字段以及长度子字段,从网际协议分组中提取出哈希因子。
当网际协议分组的隧道协议为GRE协议时,第一表项可以包括2个哈希因子提取字段。每个哈希因子提取字段都可以包括偏移子字段以及长度子字段。其中,与乘客报文中的源网际协议地址字段对应的哈希因子提取字段中的偏移子字段以及长度子字段可以分别是20和4,单位是字节。哈希因子提取字段中的偏移子字段为20表示哈希因子相对于隧道协议头的第一个比特的偏移量为20字节。与乘客报文中的目的网际协议地址字段对应的哈希因子提取字段中偏移子字段以及长度子字段可以分别是24和4,单位为字节。哈希因子提取字段中的偏移子字段为24表示哈希因子相对于隧道协议头的第一个比特的偏移量为24字节。
当网际协议分组的隧道协议为L2TP时,第一表项可以包括2个哈希因子提取字段。2个哈希因子提取字段分别对应会话身份(Session ID)字段以及隧道身份(Tunnel ID)字段。每个哈希因子提取字段都可以包括偏移子字段以及长度子字段。其中,与Session ID字段对应的哈希因子提取字段中的偏移子字段以及长度子字段可以分别是6和2,单位为字节。哈希因子提取字段中的偏移子字段为6表示哈希因子相对于隧道协议头的第一个比特的偏移量为6字节。与Tunnel ID字段对应的哈希因子提取字段中的偏移子字段以及长度子字段可以分别是4和2,单位为字节。哈希因子提取字段中的偏移子字段为4表示哈希因子相对于隧道协议头的第一个比特的偏移量为4字节。
104:根据该哈希因子执行哈希运算。
具体实现时,可以仅根据步骤103得到的哈希因子执行哈希运算;也可以将步骤103得到的哈希因子以及五元组作为执行哈希运算所需的全部哈希因子,执行哈希运算。
当网际协议分组的隧道协议为GRE协议时,执行步骤103可以得到乘客报文中的源网际协议地址以及目的网际协议地址。当网际协议分组的隧道协议为L2TP时,执行步骤103可以得到隧道协议头中的Tunnel ID以及SessionID。
105:根据该哈希运算的结果确定用于转发该网际协议分组的物理出接口。
106:根据该物理出接口转发该网际协议分组。
综上所述,本发明实施例提供的转发报文的方法中的哈希控制表的表项包括隧道协议判断字段以及哈希因子提取字段。根据隧道协议判断字段,可以在哈希控制表中查找到与网际协议分组匹配的表项。该表项与某一隧道协议对应。根据哈希因子提取字段,可以从网际协议分组中提取出进行哈希运算的因子。也就是说哈希控制表的表项中的哈希因子提取字段可以为用于提取哈希因子的软件代码的变量赋值,从而使该软件代码可以从采用哈希控制表的表项对应的隧道协议的网际协议分组中提取出进行哈希运算的因子。因此,本发明实施例提供的方法,解决了现有技术中,针对不同的隧道协议,需要开发不同的用于提取进行哈希运算的因子的软件代码,占用的存储空间较多的技术问题。
可选的,
该在哈希控制表中查找隧道协议判断字段与该隧道协议标识字段匹配的第一表项之后,并且该从该网际协议分组中提取哈希因子之前包括:
根据该第一表项的信令报文判断字段,对该网际协议分组是否是信令报文进行判断;
当判断结果为否时,执行该从该网际协议分组中提取哈希因子。
具体实现时,网际协议分组中的隧道协议头中可以包括信令报文标识字段。信令报文标识字段用于标识网际协议分组是否为信令报文。例如,在网际协议分组的隧道协议为L2TP的场景下,隧道协议头中的类型(type)字段为信令报文标识字段。当类型字段为0时,网际协议分组为数据报文;当类型字段为1时,网际协议分组为信令报文。
信令报文判断字段可以包括偏移子字段、长度子字段以及值子字段。信令报文判断字段中的偏移子字段用于定义信令报文标识字段在隧道协议头中的起始位置。信令报文判断字段中的长度子字段用于定义信令报文标识字段的长度。因此,可以根据信令报文判断字段中的偏移子字段以及长度子字段,从隧道协议头中提取出信令报文标识字段。通过比较信令报文标识字段与信令报文判断字段中的值子字段是否相等,可以对网际协议分组是否是信令报文进行判断。
隧道协议头中的信令报文标识字段可以将网际协议分组标识为信令报文,也可以将网际协议分组标识为数据报文。在信令报文判断字段中的值子字段等于信令报文对应的信令报文标识字段的场景下,如果信令报文标识字段与信令报文判断字段中的值子字段相等,则表明该网际协议分组为信令报文;如果信令报文标识字段与信令报文判断字段中的值子字段不相等,则表明该网际协议分组不是信令报文。在信令报文判断字段中的值子字段等于数据报文对应的信令报文标识字段的场景下,如果信令报文标识字段与信令报文判断字段中的值子字段相等,则表明该网际协议分组为数据报文;如果信令报文标识字段与信令报文判断字段中的值子字段不相等,则表明该网际协议分组不是数据报文。
当网际协议分组的隧道协议为L2TP协议时,第一表项中的信令报文判断字段可以包括偏移子字段、长度子字段以及值子字段。其中,偏移子字段以及长度子字段可以分别是0和1。信令报文判断字段中的值子字段可以是1,也可以是0。在信令报文判断字段中的值子字段是1的场景下,如果信令报文标识字段与信令报文判断字段中的值子字段相等,则表明网际协议分组为信令报文;如果信令报文标识字段与信令报文判断字段中的值子字段不相等,则表明网际协议分组不是信令报文。在信令报文判断字段中的值子字段是0的场景下,如果信令报文标识字段与信令报文判断字段中的值子字段相等,则表明网际协议分组为数据报文;如果信令报文标识字段与信令报文判断字段中的值子字段不相等,则表明网际协议分组不是数据报文。
需要说明的是,隧道协议为GRE协议的网际协议分组不存在信令报文,因此,与GRE协议对应的哈希控制表的表项中不需要具备信令报文判断字段。
可选的,在网际协议版本4的场景下,该隧道协议标识字段为该公网网际协议头中的协议字段。
可选的,在网际协议版本6的场景下,该隧道协议标识字段为该公网网际协议头中的下一个头字段。
可选的,该隧道协议标识字段还包括该公网网际协议头中的源端口字段或目的端口字段。
可选的,该根据该第一表项的信令报文判断字段,对该网际协议分组是否是信令报文进行判断包括:
根据该信令报文判断字段中的偏移子字段以及长度子字段,提取该隧道协议头中的信令报文标识字段,该信令报文标识字段用于标识该网际协议分组是否为信令报文,该信令报文判断字段中的偏移子字段用于定义该信令报文标识字段在该隧道协议头中的起始位置,该信令报文判断字段中的长度子字段用于定义该信令报文标识字段的长度;
通过比较该信令报文标识字段与该信令报文判断字段中的值子字段是否相等,对该网际协议分组是否是信令报文进行判断。
可选的,该根据该第一表项的哈希因子提取字段,从该网际协议分组中提取哈希因子包括:
根据该哈希因子提取字段中的偏移子字段以及长度子字段,从该网际协议分组中提取该哈希因子,该哈希因子提取字段中的偏移子字段用于定义该哈希因子在该网际协议分组中的起始位置,该哈希因子提取字段中的长度子字段用于定义该哈希因子的长度。
可选的,
该在哈希控制表中查找隧道协议判断字段与该隧道协议标识字段匹配的第一表项之后,并且从该网际协议分组中提取哈希因子之前包括:
根据该第一表项的流属性判断字段,对该网际协议分组是否包含流属性字段进行判断;
当判断结果为是时,执行该从该网际协议分组中提取哈希因子,该哈希因子为该流属性字段。
具体实现时,网际协议分组中可以包括流属性字段。流属性字段用于标识该网际协议分组属于某个流,而不属于其他流。在不同的场景下,流属性字段可能不同。例如,当网际协议分组的隧道协议为L2TP时,流属性字段为隧道协议头中的Session ID字段以及Tunnel ID字段;当网际协议分组的隧道协议为GRE协议时,流属性字段为乘客报文中的源网际协议地址字段以及目的网际协议地址字段。以流属性字段为哈希因子进行哈希运算,并根据哈希运算的结果转发报文,可以确保不会发生乱序。因此,根据哈希因子提取字段,从网际协议分组中提取出流属性字段,以流属性字段为哈希因子进行哈希运算,并根据哈希运算的结果转发报文,可以确保不会发生乱序。
流属性判断字段用于对网际协议分组是否包含流属性字段进行判断。具体实现时,网际协议分组的隧道协议头中可以包括流属性标识字段,该流属性标识字段用于标识该网际协议分组中是否包含流属性字段。流属性判断字段可以包括偏移子字段、长度子字段以及值子字段。偏移子字段用于定义流属性标识字段在隧道协议头中的起始位置。长度子字段用于定义流属性标识字段的长度。因此,可以根据流属性判断字段中的偏移子字段以及长度子字段,从隧道协议头中提取出流属性标识字段。通过比较流属性标识字段与流属性判断字段中的值子字段是否相等,可以对网际协议分组是否包含流属性字段进行判断。
在网际协议分组的隧道协议为GRE协议的场景下,流属性标识字段为隧道协议头中的协议类型(Protocol Type)字段。当协议类型字段为0x0800时,网际协议分组中的乘客报文包含流属性字段,即源网际协议地址字段以及目的网际协议地址字段。与协议类型字段对应的流属性判断字段中偏移子字段以及长度子字段分别是16和16,单位为比特。流属性判断字段中的偏移子字段为16表示流属性标识字段相对于隧道协议头的第一个比特的偏移量为16比特。流属性判断字段中值子字段为0x0800。
需要说明的是,当隧道协议为L2TP的网际协议分组为数据报文时,该网际协议分组必然具有流属性字段,即Session ID字段以及Tunnel ID字段。因此,与隧道协议为L2TP的网际协议分组对应的哈希控制表的表项中不需要包含流属性判断字段。
实施例二:
本发明实施例提供了一种转发报文的装置,可以用于需要进行哈希运算的场景。例如路由器对隧道协议为GRE协议的网际协议分组进行转发时,根据本发明实施例提供的转发报文的装置,可以从该网际协议分组中获得哈希因子,进而进行哈希运算。参见图2,图2是本发明实施例提供的转发报文的装置的示意图,该装置包括:
接收器201,用于接收网际协议分组,该网际协议分组包含公网网际协议头以及隧道协议头。该网际协议分组包含隧道协议标识字段。该隧道协议标识字段用于标识该网际协议分组的隧道协议。
具体实现时,网际协议分组的网际协议可以是网际协议版本4,或者网际协议版本6。隧道协议头可以是GRE协议头,或者L2TP头。接收网际协议分组的网络设备可以是路由器。
在网际协议为网际协议版本4的场景下,隧道协议标识字段可以是公网网际协议头中的协议字段。例如,当协议字段为37时,网际协议分组的隧道协议是GRE协议。
当隧道协议标识字段包括公网网际协议头中的协议字段时,隧道协议标识字段还可以包括用户数据报协议头中的源端口字段或目的端口字段。例如,当协议字段为17,且源端口字段或者目的端口字段为1701时,网际协议分组的隧道协议是L2TP。
在网际协议为网际协议版本6的场景下,隧道协议标识字段可以是公网网际协议头中的下一个头字段。例如,当下一个头字段为37时,网际协议分组的隧道协议是GRE协议。
当隧道协议标识字段包括公网网际协议头中的下一个头字段时,隧道协议标识字段还可以包括用户数据报协议头中的源端口字段或目的端口字段。例如,当下一个头字段为17,且源端口字段或者目的端口字段为1701时,网际协议分组的隧道协议是L2TP。
查找单元202,用于根据该隧道协议标识字段,在哈希控制表中查找隧道协议判断字段与该隧道协议标识字段匹配的第一表项。该哈希控制表的表项包括隧道协议判断字段、以及哈希因子提取字段。
具体实现时,可以通过嵌入式系统开发环境生成哈希控制表,例如美国风河系统公司提供的VxWorks。另外,用户也可以通过在控制台输入命令行的方式更新哈希控制表,包括增加或者删除哈希控制表的表项。哈希控制表可以存储在位于转发平面的存储空间。例如,哈希控制表可以存储在位于路由器转发平面的同步动态随机存储器。
哈希控制表可以包括一个表项或者多个表项。当哈希控制表包括多个表项时,可以通过遍历多个表项的方式查找第一表项。第一表项的隧道协议判断字段等于网际协议分组的隧道协议标识字段。
在网际协议分组的隧道协议是GRE协议的场景下,隧道协议标识字段可以是公网网际协议头中的协议字段。第一表项中与协议字段对应的隧道协议判断字段为37。
在网际协议分组的隧道协议是L2TP的场景下,除了公网网际协议头中的协议字段,隧道协议标识字段还包括用户数据报协议头中的源端口字段或者目的端口字段。第一表项中与公网网际协议头中协议字段对应的隧道协议判断字段为17,第一表项中与用户数据报协议头中源端口字段或者目的端口字段对应的隧道协议判断字段为1701。
提取单元203,用于根据该第一表项的哈希因子提取字段,从该网际协议分组中提取哈希因子。
具体实现时,哈希因子提取字段可以包括偏移子字段以及长度子字段。其中,偏移子字段用于定义哈希因子在网际协议分组中的起始位置;长度子字段用于定义哈希因子的长度。因此,可以根据哈希因子提取字段中的偏移子字段以及长度子字段,从网际协议分组中提取出哈希因子。
当网际协议分组的隧道协议为GRE协议时,第一表项可以包括2个哈希因子提取字段。每个哈希因子提取字段都可以包括偏移子字段以及长度子字段。其中,与乘客报文中的源网际协议地址字段对应的哈希因子提取字段中的偏移子字段以及长度子字段可以分别是20和4,单位是字节。哈希因子提取字段中的偏移子字段为20表示哈希因子相对于隧道协议头的第一个比特的偏移量为20字节。与乘客报文中的目的网际协议地址字段对应的哈希因子提取字段中偏移子字段以及长度子字段可以分别是24和4,单位为字节。哈希因子提取字段中的偏移子字段为24表示哈希因子相对于隧道协议头的第一个比特的偏移量为24字节。
当网际协议分组的隧道协议为L2TP时,第一表项可以包括2个哈希因子提取字段。2个哈希因子提取字段分别对应Session ID字段以及Tunnel ID字段。每个哈希因子提取字段都可以包括偏移子字段以及长度子字段。其中,与Session ID字段对应的哈希因子提取字段中的偏移子字段以及长度子字段可以分别是6和2,单位为字节。哈希因子提取字段中的偏移子字段为6表示哈希因子相对于隧道协议头的第一个比特的偏移量为6字节。与Tunnel ID字段对应的哈希因子提取字段中的偏移子字段以及长度子字段可以分别是4和2,单位为字节。哈希因子提取字段中的偏移子字段为4表示哈希因子相对于隧道协议头的第一个比特的偏移量为4字节。
执行单元204,用于根据该哈希因子执行哈希运算。
具体实现时,可以仅根据提取单元203得到的哈希因子执行哈希运算;也可以将根据提取单元203得到的哈希因子以及五元组作为执行哈希运算所需的全部哈希因子,执行哈希运算。
当网际协议分组的隧道协议为GRE协议时,根据提取单元203可以得到乘客报文中的源网际协议地址以及目的网际协议地址。当网际协议分组的隧道协议为L2TP时,根据提取单元203可以得到隧道协议头中的Tunnel ID以及Session ID。
确定单元205,用于根据该哈希运算的结果确定用于转发该网际协议分组的物理出接口。
发送器206,用于根据该物理出接口转发该网际协议分组。
综上所述,本发明实施例提供的转发报文的装置中的哈希控制表的表项包括隧道协议判断字段以及哈希因子提取字段。根据隧道协议判断字段,可以在哈希控制表中查找到与网际协议分组匹配的表项。该表项与某一隧道协议对应。根据哈希因子提取字段,可以从网际协议分组中提取出进行哈希运算的因子。也就是说哈希控制表的表项中的哈希因子提取字段可以为用于提取哈希因子的软件代码的变量赋值,从而使该软件代码可以从采用哈希控制表的表项对应的隧道协议的网际协议分组中提取出进行哈希运算的因子。因此,本发明实施例提供的装置,解决了现有技术中,针对不同的隧道协议,需要开发不同的用于提取进行哈希运算的因子的软件代码,占用的存储空间较多的技术问题。
可选的,
转发报文的装置可以包括:
第一判断单元,用于该在哈希控制表中查找隧道协议判断字段与该隧道协议标识字段匹配的第一表项之后,并且该从该网际协议分组中提取哈希因子之前,
根据该第一表项的信令报文判断字段,对该网际协议分组是否是信令报文进行判断;
当判断结果为否时,执行该从该网际协议分组中提取哈希因子。
具体实现时,网际协议分组中的隧道协议头中可以包括信令报文标识字段。信令报文标识字段用于标识网际协议分组是否为信令报文。例如,在网际协议分组的隧道协议为L2TP的场景下,隧道协议头中的类型字段为信令报文标识字段。当类型字段为0时,网际协议分组为数据报文;当类型字段为1时,网际协议分组为信令报文。
信令报文判断字段可以包括偏移子字段、长度子字段以及值子字段。信令报文判断字段中的偏移子字段用于定义信令报文标识字段在隧道协议头中的起始位置。信令报文判断字段中的长度子字段用于定义信令报文标识字段的长度。因此,可以根据信令报文判断字段中的偏移子字段以及长度子字段,从隧道协议头中提取出信令报文标识字段。通过比较信令报文标识字段与信令报文判断字段中的值子字段是否相等,可以对网际协议分组是否是信令报文进行判断。
隧道协议头中的信令报文标识字段可以将网际协议分组标识为信令报文,也可以将网际协议分组标识为数据报文。在信令报文判断字段中的值子字段等于信令报文对应的信令报文标识字段的场景下,如果信令报文标识字段与信令报文判断字段中的值子字段相等,则表明该网际协议分组为信令报文;如果信令报文标识字段与信令报文判断字段中的值子字段不相等,则表明该网际协议分组不是信令报文。在信令报文判断字段中的值子字段等于数据报文对应的信令报文标识字段的场景下,如果信令报文标识字段与信令报文判断字段中的值子字段相等,则表明该网际协议分组为数据报文;如果信令报文标识字段与信令报文判断字段中的值子字段不相等,则表明该网际协议分组不是数据报文。
当网际协议分组的隧道协议为L2TP协议时,第一表项中的信令报文判断字段可以包括偏移子字段、长度子字段以及值子字段。其中,偏移子字段以及长度子字段可以分别是0和1。信令报文判断字段中的值子字段可以是1,也可以是0。在信令报文判断字段中的值子字段是1的场景下,如果信令报文标识字段与信令报文判断字段中的值子字段相等,则表明网际协议分组为信令报文;如果信令报文标识字段与信令报文判断字段中的值子字段不相等,则表明网际协议分组不是信令报文。在信令报文判断字段中的值子字段是0的场景下,如果信令报文标识字段与信令报文判断字段中的值子字段相等,则表明网际协议分组为数据报文;如果信令报文标识字段与信令报文判断字段中的值子字段不相等,则表明网际协议分组不是数据报文。
需要说明的是,隧道协议为GRE协议的网际协议分组不存在信令报文,因此,与GRE协议对应的哈希控制表的表项中不需要具备信令报文判断字段。
可选的,
第一判断单元可以包括:
提取子单元,用于根据该信令报文判断字段中的偏移子字段以及长度子字段,提取该隧道协议头中的信令报文标识字段,该信令报文标识字段用于标识该网际协议分组是否为信令报文,该信令报文判断字段中的偏移子字段用于定义该信令报文标识字段在该隧道协议头中的起始位置,该信令报文判断字段中的长度子字段用于定义该信令报文标识字段的长度;
比较子单元,用于通过比较该信令报文标识字段与该信令报文判断字段中的值子字段是否相等,对该网际协议分组是否是信令报文进行判断。
可选的,
提取单元203可以包括:
提取子单元,用于根据该哈希因子提取字段中的偏移子字段以及长度子字段,从该网际协议分组中提取该哈希因子,该哈希因子提取字段中的偏移子字段用于定义该哈希因子在该网际协议分组中的起始位置,该哈希因子提取字段中的长度子字段用于定义该哈希因子的长度。
可选的,
转发报文的装置可以包括:
第二判断单元,用于该在哈希控制表中查找隧道协议判断字段与该隧道协议标识字段匹配的第一表项之后,并且从该网际协议分组中提取哈希因子之前,
根据该第一表项的流属性判断字段,对该网际协议分组是否包含流属性字段进行判断;
当判断结果为是时,执行该从该网际协议分组中提取哈希因子。
具体实现时,网际协议分组中可以包括流属性字段。流属性字段用于标识该网际协议分组属于某个流,而不属于其他流。在不同的场景下,流属性字段可能不同。例如,当网际协议分组的隧道协议为L2TP时,流属性字段为隧道协议头中的Session ID字段以及Tunnel ID字段;当网际协议分组的隧道协议为GRE协议时,流属性字段为乘客报文中的源网际协议地址字段以及目的网际协议地址字段。以流属性字段为哈希因子进行哈希运算,并根据哈希运算的结果转发报文,可以确保不会发生乱序。因此,根据哈希因子提取字段,从网际协议分组中提取出流属性字段,以流属性字段为哈希因子进行哈希运算,并根据哈希运算的结果转发报文,可以确保不会发生乱序。
流属性判断字段用于对网际协议分组是否包含流属性字段进行判断。具体实现时,网际协议分组的隧道协议头中可以包括流属性标识字段,该流属性标识字段用于标识该网际协议分组中是否包含流属性字段。流属性判断字段可以包括偏移子字段、长度子字段以及值子字段。偏移子字段用于定义流属性标识字段在隧道协议头中的起始位置。长度子字段用于定义流属性标识字段的长度。因此,可以根据流属性判断字段中的偏移子字段以及长度子字段,从隧道协议头中提取出流属性标识字段。通过比较流属性标识字段与流属性判断字段中的值子字段是否相等,可以对网际协议分组是否包含流属性字段进行判断。
在网际协议分组的隧道协议为GRE协议的场景下,流属性标识字段为隧道协议头中的协议类型字段。当协议类型字段为0x0800时,网际协议分组中的乘客报文包含流属性字段,即源网际协议地址字段以及目的网际协议地址字段。与协议类型字段对应的流属性判断字段中偏移子字段以及长度子字段分别是16和16,单位为比特。流属性判断字段中的偏移子字段为16表示流属性标识字段相对于隧道协议头的第一个比特的偏移量为16比特。流属性判断字段中值子字段为0x0800。
需要说明的是,当隧道协议为L2TP的网际协议分组为数据报文时,该网际协议分组必然具有流属性字段,即Session ID字段以及Tunnel ID字段。因此,与隧道协议为L2TP的网际协议分组对应的哈希控制表的表项中不需要包含流属性判断字段。
实施例三:
本发明实施例提供了一种生成表项的方法,可以用于需要进行哈希运算的场景。例如路由器对隧道协议为GRE协议的网际协议分组进行转发时,根据本发明实施例提供的生成表项的方法,可以从该网际协议分组中获得哈希因子,进而进行哈希运算。参见图3,图3是本发明实施例提供的生成表项的方法的流程图,该方法包括:
301:生成哈希控制表的表项,该表项包括隧道协议判断字段以及哈希因子提取字段,该隧道协议判断字段用于判断网际协议分组的隧道协议标识字段是否与该隧道协议判断字段匹配,该网际协议分组包含公网网际协议头以及隧道协议头,该隧道协议标识字段用于标识该网际协议分组的隧道协议,该哈希因子提取字段用于为用于从该网际协议分组中提取哈希因子的第一软件代码的变量赋值,以便于在该隧道协议标识字段与该隧道协议判断字段匹配的情况下,该第一软件代码从该网际协议分组中提取哈希因子。
具体实现时,网际协议分组的网际协议可以是网际协议版本4,或者网际协议版本6。隧道协议头可以是GRE协议头,或者L2TP头。接收网际协议分组的网络设备可以是路由器。
在网际协议为网际协议版本4的场景下,隧道协议标识字段可以是公网网际协议头中的协议字段。例如,当协议字段为37时,网际协议分组的隧道协议是GRE协议。
当隧道协议标识字段包括公网网际协议头中的协议字段时,隧道协议标识字段还可以包括用户数据报协议头中的源端口字段或目的端口字段。例如,当协议字段为17,且源端口字段或者目的端口字段为1701时,网际协议分组的隧道协议是L2TP。
在网际协议为网际协议版本6的场景下,隧道协议标识字段可以是公网网际协议头中的下一个头字段。例如,当下一个头字段为37时,网际协议分组的隧道协议是GRE协议。
当隧道协议标识字段包括公网网际协议头中的下一个头字段时,隧道协议标识字段还可以包括用户数据报协议头中的源端口字段或目的端口字段。例如,当下一个头字段为17,且源端口字段或者目的端口字段为1701时,网际协议分组的隧道协议是L2TP。
生成哈希控制表的表项具体实现时,可以通过嵌入式系统开发环境生成哈希控制表,例如美国风河系统公司提供的VxWorks。另外,用户也可以通过在控制台输入命令行的方式更新哈希控制表,包括增加或者删除哈希控制表的表项。哈希控制表可以存储在位于转发平面的存储空间。例如,哈希控制表可以存储在位于路由器转发平面的同步动态随机存储器。
哈希控制表可以包括一个表项或者多个表项。当哈希控制表包括多个表项时,可以通过遍历多个表项的方式查找该表项。该表项的隧道协议判断字段等于网际协议分组的隧道协议标识字段。
在网际协议分组的隧道协议是GRE协议的场景下,隧道协议标识字段可以是公网网际协议头中的协议字段。该表项中与协议字段对应的隧道协议判断字段为37。
在网际协议分组的隧道协议是L2TP的场景下,除了公网网际协议头中的协议字段,隧道协议标识字段还包括用户数据报协议头中的源端口字段或者目的端口字段。该表项中与公网网际协议头中协议字段对应的隧道协议判断字段为17,该表项中与用户数据报协议头中源端口字段或者目的端口字段对应的隧道协议判断字段为1701。
第一软件代码用于从网际协议分组中提取哈希因子。哈希因子提取字段可以为第一软件代码的变量赋值,从而使得第一软件代码可以从某种类型的隧道协议对应的网际协议分组中提取哈希因子。具体实现时,哈希因子提取字段可以包括偏移子字段以及长度子字段。其中,偏移子字段用于定义哈希因子在网际协议分组中的起始位置;长度子字段用于定义哈希因子的长度。因此,可以根据哈希因子提取字段中的偏移子字段以及长度子字段,从网际协议分组中提取出哈希因子。
当网际协议分组的隧道协议为GRE协议时,该表项可以包括2个哈希因子提取字段。每个哈希因子提取字段都可以包括偏移子字段以及长度子字段。其中,与乘客报文中的源网际协议地址字段对应的哈希因子提取字段中的偏移子字段以及长度子字段可以分别是20和4,单位是字节。哈希因子提取字段中的偏移子字段为20表示哈希因子相对于隧道协议头的第一个比特的偏移量为20字节。与乘客报文中的目的网际协议地址字段对应的哈希因子提取字段中偏移子字段以及长度子字段可以分别是24和4,单位为字节。哈希因子提取字段中的偏移子字段为24表示哈希因子相对于隧道协议头的第一个比特的偏移量为24字节。
当网际协议分组的隧道协议为L2TP时,该表项可以包括2个哈希因子提取字段。2个哈希因子提取字段分别对应Session ID字段以及Tunnel ID字段。每个哈希因子提取字段都可以包括偏移子字段以及长度子字段。其中,与Session ID字段对应的哈希因子提取字段中的偏移子字段以及长度子字段可以分别是6和2,单位为字节。哈希因子提取字段中的偏移子字段为6表示哈希因子相对于隧道协议头的第一个比特的偏移量为6字节。与Tunnel ID字段对应的哈希因子提取字段中的偏移子字段以及长度子字段可以分别是4和2,单位为字节。哈希因子提取字段中的偏移子字段为4表示哈希因子相对于隧道协议头的第一个比特的偏移量为4字节。
哈希因子可以被用于执行哈希运算。具体实现时,可以仅根据第一软件代码得到的哈希因子执行哈希运算;也可以将根据第一软件代码得到的哈希因子以及五元组作为执行哈希运算所需的全部哈希因子,执行哈希运算。
当网际协议分组的隧道协议为GRE协议时,根据第一软件代码可以得到乘客报文中的源网际协议地址以及目的网际协议地址。当网际协议分组的隧道协议为L2TP时,根据第一软件代码可以得到隧道协议头中的Tunnel ID以及Session ID。
根据该哈希运算的结果,可以确定用于转发该网际协议分组的物理出接口。
综上所述,本发明实施例提供的生成表项的方法涉及的哈希控制表的表项包括隧道协议判断字段以及哈希因子提取字段。根据隧道协议判断字段,可以在哈希控制表中查找到与网际协议分组匹配的表项。该表项与某一隧道协议对应。根据哈希因子提取字段,可以从网际协议分组中提取出进行哈希运算的因子。也就是说哈希控制表的表项中的哈希因子提取字段可以为用于提取哈希因子的软件代码的变量赋值,从而使该软件代码可以从采用哈希控制表的表项对应的隧道协议的网际协议分组中提取出进行哈希运算的因子。因此,本发明实施例提供的方法,解决了现有技术中,针对不同的隧道协议,需要开发不同的用于提取进行哈希运算的因子的软件代码,占用的存储空间较多的技术问题。
可选的,
该表项可以包括信令报文判断字段,该信令报文判断字段用于为用于判断该网际协议分组是否为信令报文的第二软件代码的变量赋值,以便于该第二软件代码对该网际协议分组是否为信令报文进行判断。
具体实现时,网际协议分组中的隧道协议头中可以包括信令报文标识字段。信令报文标识字段用于标识网际协议分组是否为信令报文。例如,在网际协议分组的隧道协议为L2TP的场景下,隧道协议头中的类型字段为信令报文标识字段。当类型字段为0时,网际协议分组为数据报文;当类型字段为1时,网际协议分组为信令报文。
第二软件代码用于判断网际协议分组是否为信令报文。信令报文判断字段可以为第二软件代码的变量赋值,从而使得第二软件代码可以对某种类型的隧道协议对应的网际协议分组是否是信令报文进行判断。具体实现时,信令报文判断字段可以包括偏移子字段、长度子字段以及值子字段。信令报文判断字段中的偏移子字段用于定义信令报文标识字段在隧道协议头中的起始位置。信令报文判断字段中的长度子字段用于定义信令报文标识字段的长度。因此,可以根据信令报文判断字段中的偏移子字段以及长度子字段,从隧道协议头中提取出信令报文标识字段。通过比较信令报文标识字段与信令报文判断字段中的值子字段是否相等,可以对网际协议分组是否是信令报文进行判断。
隧道协议头中的信令报文标识字段可以将网际协议分组标识为信令报文,也可以将网际协议分组标识为数据报文。在信令报文判断字段中的值子字段等于信令报文对应的信令报文标识字段的场景下,如果信令报文标识字段与信令报文判断字段中的值子字段相等,则表明该网际协议分组为信令报文;如果信令报文标识字段与信令报文判断字段中的值子字段不相等,则表明该网际协议分组不是信令报文。在信令报文判断字段中的值子字段等于数据报文对应的信令报文标识字段的场景下,如果信令报文标识字段与信令报文判断字段中的值子字段相等,则表明该网际协议分组为数据报文;如果信令报文标识字段与信令报文判断字段中的值子字段不相等,则表明该网际协议分组不是数据报文。
当网际协议分组的隧道协议为L2TP协议时,该表项中的信令报文判断字段可以包括偏移子字段、长度子字段以及值子字段。其中,偏移子字段以及长度子字段可以分别是0和1。信令报文判断字段中的值子字段可以是1,也可以是0。在信令报文判断字段中的值子字段是1的场景下,如果信令报文标识字段与信令报文判断字段中的值子字段相等,则表明网际协议分组为信令报文;如果信令报文标识字段与信令报文判断字段中的值子字段不相等,则表明网际协议分组不是信令报文。在信令报文判断字段中的值子字段是0的场景下,如果信令报文标识字段与信令报文判断字段中的值子字段相等,则表明网际协议分组为数据报文;如果信令报文标识字段与信令报文判断字段中的值子字段不相等,则表明网际协议分组不是数据报文。
需要说明的是,隧道协议为GRE协议的网际协议分组不存在信令报文,因此,与GRE协议对应的哈希控制表的表项中不需要具备信令报文判断字段。
可选的,
该表项可以包括流属性判断字段,该流属性判断字段用于为用于判断该网际协议分组是否包含流属性字段的第三软件代码的变量赋值,以便于该第三软件代码对该网际协议分组是否为信令报文进行判断。
具体实现时,网际协议分组中可以包括流属性字段。流属性字段用于标识该网际协议分组属于某个流,而不属于其他流。在不同的场景下,流属性字段可能不同。例如,当网际协议分组的隧道协议为L2TP时,流属性字段为隧道协议头中的Session ID字段以及Tunnel ID字段;当网际协议分组的隧道协议为GRE协议时,流属性字段为乘客报文中的源网际协议地址字段以及目的网际协议地址字段。以流属性字段为哈希因子进行哈希运算,并根据哈希运算的结果转发报文,可以确保不会发生乱序。因此,根据哈希因子提取字段,从网际协议分组中提取出流属性字段,以流属性字段为哈希因子进行哈希运算,并根据哈希运算的结果转发报文,可以确保不会发生乱序。
第三软件代码用于判断网际协议分组是否包含流属性字段。流属性判断字段可以为第三软件代码的变量赋值,从而使得第三软件代码可以对某种类型的隧道协议对应的网际协议分组是否包含流属性字段进行判断。具体实现时,网际协议分组的隧道协议头中可以包括流属性标识字段,该流属性标识字段用于标识该网际协议分组中是否包含流属性字段。流属性判断字段可以包括偏移子字段、长度子字段以及值子字段。偏移子字段用于定义流属性标识字段在隧道协议头中的起始位置。长度子字段用于定义流属性标识字段的长度。因此,可以根据流属性判断字段中的偏移子字段以及长度子字段,从隧道协议头中提取出流属性标识字段。通过比较流属性标识字段与流属性判断字段中的值子字段是否相等,可以对网际协议分组是否包含流属性字段进行判断。
在网际协议分组的隧道协议为GRE协议的场景下,流属性标识字段为隧道协议头中的协议类型字段。当协议类型字段为0x0800时,网际协议分组中的乘客报文包含流属性字段,即源网际协议地址字段以及目的网际协议地址字段。与协议类型字段对应的流属性判断字段中偏移子字段以及长度子字段分别是16和16,单位为比特。流属性判断字段中的偏移子字段为16表示流属性标识字段相对于隧道协议头的第一个比特的偏移量为16比特。流属性判断字段中值子字段为0x0800。
需要说明的是,当隧道协议为L2TP的网际协议分组为数据报文时,该网际协议分组必然具有流属性字段,即Session ID字段以及Tunnel ID字段。因此,与隧道协议为L2TP的网际协议分组对应的哈希控制表的表项中不需要包含流属性判断字段。
实施例四:
本发明实施例提供了一种生成表项的装置,可以用于需要进行哈希运算的场景。例如路由器对隧道协议为GRE协议的网际协议分组进行转发时,根据本发明实施例提供的生成表项的装置,可以从该网际协议分组中获得哈希因子,进而进行哈希运算。参见图4,图4是本发明实施例提供的生成表项的装置的示意图,该装置包括:
表项生成单元401,用于生成哈希控制表的表项,该表项包括隧道协议判断字段以及哈希因子提取字段,该隧道协议判断字段用于判断网际协议分组的隧道协议标识字段是否与该隧道协议判断字段匹配,该网际协议分组包含公网网际协议头以及隧道协议头,该隧道协议标识字段用于标识该网际协议分组的隧道协议,该哈希因子提取字段用于为用于从该网际协议分组中提取哈希因子的第一软件代码的变量赋值;
第一赋值单元402,用于根据该哈希因子提取字段为该第一软件代码的变量赋值,以便于在该隧道协议标识字段与该隧道协议判断字段匹配的情况下,该第一软件代码从该网际协议分组中提取哈希因子。
具体实现时,网际协议分组的网际协议可以是网际协议版本4,或者网际协议版本6。隧道协议头可以是GRE协议头,或者L2TP头。接收网际协议分组的网络设备可以是路由器。
在网际协议为网际协议版本4的场景下,隧道协议标识字段可以是公网网际协议头中的协议字段。例如,当协议字段为37时,网际协议分组的隧道协议是GRE协议。
当隧道协议标识字段包括公网网际协议头中的协议字段时,隧道协议标识字段还可以包括用户数据报协议头中的源端口字段或目的端口字段。例如,当协议字段为17,且源端口字段或者目的端口字段为1701时,网际协议分组的隧道协议是L2TP。
在网际协议为网际协议版本6的场景下,隧道协议标识字段可以是公网网际协议头中的下一个头字段。例如,当下一个头字段为37时,网际协议分组的隧道协议是GRE协议。
当隧道协议标识字段包括公网网际协议头中的下一个头字段时,隧道协议标识字段还可以包括用户数据报协议头中的源端口字段或目的端口字段。例如,当下一个头字段为17,且源端口字段或者目的端口字段为1701时,网际协议分组的隧道协议是L2TP。
生成哈希控制表的表项具体实现时,可以通过嵌入式系统开发环境生成哈希控制表,例如美国风河系统公司提供的VxWorks。另外,用户也可以通过在控制台输入命令行的方式更新哈希控制表,包括增加或者删除哈希控制表的表项。哈希控制表可以存储在位于转发平面的存储空间。例如,哈希控制表可以存储在位于路由器转发平面的同步动态随机存储器。
哈希控制表可以包括一个表项或者多个表项。当哈希控制表包括多个表项时,可以通过遍历多个表项的方式查找该表项。该表项的隧道协议判断字段等于网际协议分组的隧道协议标识字段。
在网际协议分组的隧道协议是GRE协议的场景下,隧道协议标识字段可以是公网网际协议头中的协议字段。该表项中与协议字段对应的隧道协议判断字段为37。
在网际协议分组的隧道协议是L2TP的场景下,除了公网网际协议头中的协议字段,隧道协议标识字段还包括用户数据报协议头中的源端口字段或者目的端口字段。该表项中与公网网际协议头中协议字段对应的隧道协议判断字段为17,该表项中与用户数据报协议头中源端口字段或者目的端口字段对应的隧道协议判断字段为1701。
第一软件代码用于从网际协议分组中提取哈希因子。哈希因子提取字段可以为第一软件代码的变量赋值,从而使得第一软件代码可以从某种类型的隧道协议对应的网际协议分组中提取哈希因子。具体实现时,哈希因子提取字段可以包括偏移子字段以及长度子字段。其中,偏移子字段用于定义哈希因子在网际协议分组中的起始位置;长度子字段用于定义哈希因子的长度。因此,可以根据哈希因子提取字段中的偏移子字段以及长度子字段,从网际协议分组中提取出哈希因子。
当网际协议分组的隧道协议为GRE协议时,该表项可以包括2个哈希因子提取字段。每个哈希因子提取字段都可以包括偏移子字段以及长度子字段。其中,与乘客报文中的源网际协议地址字段对应的哈希因子提取字段中的偏移子字段以及长度子字段可以分别是20和4,单位是字节。哈希因子提取字段中的偏移子字段为20表示哈希因子相对于隧道协议头的第一个比特的偏移量为20字节。与乘客报文中的目的网际协议地址字段对应的哈希因子提取字段中偏移子字段以及长度子字段可以分别是24和4,单位为字节。哈希因子提取字段中的偏移子字段为24表示哈希因子相对于隧道协议头的第一个比特的偏移量为24字节。
当网际协议分组的隧道协议为L2TP时,该表项可以包括2个哈希因子提取字段。2个哈希因子提取字段分别对应Session ID字段以及Tunnel ID字段。每个哈希因子提取字段都可以包括偏移子字段以及长度子字段。其中,与Session ID字段对应的哈希因子提取字段中的偏移子字段以及长度子字段可以分别是6和2,单位为字节。哈希因子提取字段中的偏移子字段为6表示哈希因子相对于隧道协议头的第一个比特的偏移量为6字节。与Tunnel ID字段对应的哈希因子提取字段中的偏移子字段以及长度子字段可以分别是4和2,单位为字节。哈希因子提取字段中的偏移子字段为4表示哈希因子相对于隧道协议头的第一个比特的偏移量为4字节。
哈希因子可以被用于执行哈希运算。具体实现时,可以仅根据第一软件代码得到的哈希因子执行哈希运算;也可以将根据第一软件代码得到的哈希因子以及五元组作为执行哈希运算所需的全部哈希因子,执行哈希运算。
当网际协议分组的隧道协议为GRE协议时,根据第一软件代码可以得到乘客报文中的源网际协议地址以及目的网际协议地址。当网际协议分组的隧道协议为L2TP时,根据第一软件代码可以得到隧道协议头中的Tunnel ID以及Session ID。
根据该哈希运算的结果,可以确定用于转发该网际协议分组的物理出接口。
综上所述,本发明实施例提供的生成表项的装置涉及的哈希控制表的表项包括隧道协议判断字段以及哈希因子提取字段。根据隧道协议判断字段,可以在哈希控制表中查找到与网际协议分组匹配的表项。该表项与某一隧道协议对应。根据哈希因子提取字段,可以从网际协议分组中提取出进行哈希运算的因子。也就是说哈希控制表的表项中的哈希因子提取字段可以为用于提取哈希因子的软件代码的变量赋值,从而使该软件代码可以从采用哈希控制表的表项对应的隧道协议的网际协议分组中提取出进行哈希运算的因子。因此,本发明实施例提供的装置,解决了现有技术中,针对不同的隧道协议,需要开发不同的用于提取进行哈希运算的因子的软件代码,占用的存储空间较多的技术问题。
可选的,
生成表项的装置可以包括:
第二赋值单元,用于根据该表项包括的信令报文判断字段为用于判断该网际协议分组是否为信令报文的第二软件代码的变量赋值,以便于该第二软件代码对该网际协议分组是否为信令报文进行判断。
具体实现时,网际协议分组中的隧道协议头中可以包括信令报文标识字段。信令报文标识字段用于标识网际协议分组是否为信令报文。例如,在网际协议分组的隧道协议为L2TP的场景下,隧道协议头中的类型字段为信令报文标识字段。当类型字段为0时,网际协议分组为数据报文;当类型字段为1时,网际协议分组为信令报文。
第二软件代码用于判断网际协议分组是否为信令报文。信令报文判断字段可以为第二软件代码的变量赋值,从而使得第二软件代码可以对某种类型的隧道协议对应的网际协议分组是否是信令报文进行判断。具体实现时,信令报文判断字段可以包括偏移子字段、长度子字段以及值子字段。信令报文判断字段中的偏移子字段用于定义信令报文标识字段在隧道协议头中的起始位置。信令报文判断字段中的长度子字段用于定义信令报文标识字段的长度。因此,可以根据信令报文判断字段中的偏移子字段以及长度子字段,从隧道协议头中提取出信令报文标识字段。通过比较信令报文标识字段与信令报文判断字段中的值子字段是否相等,可以对网际协议分组是否是信令报文进行判断。
隧道协议头中的信令报文标识字段可以将网际协议分组标识为信令报文,也可以将网际协议分组标识为数据报文。在信令报文判断字段中的值子字段等于信令报文对应的信令报文标识字段的场景下,如果信令报文标识字段与信令报文判断字段中的值子字段相等,则表明该网际协议分组为信令报文;如果信令报文标识字段与信令报文判断字段中的值子字段不相等,则表明该网际协议分组不是信令报文。在信令报文判断字段中的值子字段等于数据报文对应的信令报文标识字段的场景下,如果信令报文标识字段与信令报文判断字段中的值子字段相等,则表明该网际协议分组为数据报文;如果信令报文标识字段与信令报文判断字段中的值子字段不相等,则表明该网际协议分组不是数据报文。
当网际协议分组的隧道协议为L2TP协议时,该表项中的信令报文判断字段可以包括偏移子字段、长度子字段以及值子字段。其中,偏移子字段以及长度子字段可以分别是0和1。信令报文判断字段中的值子字段可以是1,也可以是0。在信令报文判断字段中的值子字段是1的场景下,如果信令报文标识字段与信令报文判断字段中的值子字段相等,则表明网际协议分组为信令报文;如果信令报文标识字段与信令报文判断字段中的值子字段不相等,则表明网际协议分组不是信令报文。在信令报文判断字段中的值子字段是0的场景下,如果信令报文标识字段与信令报文判断字段中的值子字段相等,则表明网际协议分组为数据报文;如果信令报文标识字段与信令报文判断字段中的值子字段不相等,则表明网际协议分组不是数据报文。
需要说明的是,隧道协议为GRE协议的网际协议分组不存在信令报文,因此,与GRE协议对应的哈希控制表的表项中不需要具备信令报文判断字段。
可选的,
生成表项的装置可以包括:
第三赋值单元,用于根据该表项包括的流属性判断字段为用于判断该网际协议分组是否包含流属性字段的第三软件代码的变量赋值,以便于该第三软件代码对该网际协议分组是否为信令报文进行判断。
具体实施时,网际协议分组中可以包括流属性字段。流属性字段用于标识该网际协议分组属于某个流,而不属于其他流。在不同的场景下,流属性字段可能不同。例如,当网际协议分组的隧道协议为L2TP时,流属性字段为隧道协议头中的Session ID字段以及Tunnel ID字段;当网际协议分组的隧道协议为GRE协议时,流属性字段为乘客报文中的源网际协议地址字段以及目的网际协议地址字段。以流属性字段为哈希因子进行哈希运算,并根据哈希运算的结果转发报文,可以确保不会发生乱序。因此,根据哈希因子提取字段,从网际协议分组中提取出流属性字段,以流属性字段为哈希因子进行哈希运算,并根据哈希运算的结果转发报文,可以确保不会发生乱序。
第三软件代码用于判断网际协议分组是否包含流属性字段。流属性判断字段可以为第三软件代码的变量赋值,从而使得第三软件代码可以对某种类型的隧道协议对应的网际协议分组是否包含流属性字段进行判断。具体实现时,网际协议分组的隧道协议头中可以包括流属性标识字段,该流属性标识字段用于标识该网际协议分组中是否包含流属性字段。流属性判断字段可以包括偏移子字段、长度子字段以及值子字段。偏移子字段用于定义流属性标识字段在隧道协议头中的起始位置。长度子字段用于定义流属性标识字段的长度。因此,可以根据流属性判断字段中的偏移子字段以及长度子字段,从隧道协议头中提取出流属性标识字段。通过比较流属性标识字段与流属性判断字段中的值子字段是否相等,可以对网际协议分组是否包含流属性字段进行判断。
在网际协议分组的隧道协议为GRE协议的场景下,流属性标识字段为隧道协议头中的协议类型字段。当协议类型字段为0x0800时,网际协议分组中的乘客报文包含流属性字段,即源网际协议地址字段以及目的网际协议地址字段。与协议类型字段对应的流属性判断字段中偏移子字段以及长度子字段分别是16和16,单位为比特。流属性判断字段中的偏移子字段为16表示流属性标识字段相对于隧道协议头的第一个比特的偏移量为16比特。流属性判断字段中值子字段为0x0800。
需要说明的是,当隧道协议为L2TP的网际协议分组为数据报文时,该网际协议分组必然具有流属性字段,即Session ID字段以及Tunnel ID字段。因此,与隧道协议为L2TP的网际协议分组对应的哈希控制表的表项中不需要包含流属性判断字段。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (23)

1.一种转发报文的方法,其特征在于,包括: 
接收网际协议分组,所述网际协议分组包含公网网际协议头以及隧道协议头,所述网际协议分组包含隧道协议标识字段,所述隧道协议标识字段用于标识所述网际协议分组的隧道协议; 
根据所述隧道协议标识字段,在哈希控制表中查找隧道协议判断字段与所述隧道协议标识字段匹配的第一表项,所述哈希控制表的表项包括隧道协议判断字段以及哈希因子提取字段; 
根据所述第一表项的哈希因子提取字段,从所述网际协议分组中提取哈希因子; 
根据所述哈希因子执行哈希运算; 
根据所述哈希运算的结果确定用于转发所述网际协议分组的物理出接口; 
根据所述物理出接口转发所述网际协议分组; 
所述在哈希控制表中查找隧道协议判断字段与所述隧道协议标识字段匹配的第一表项之后,并且所述从所述网际协议分组中提取哈希因子之前包括: 
根据所述第一表项的信令报文判断字段,对所述网际协议分组是否是信令报文进行判断; 
当判断结果为否时,执行所述从所述网际协议分组中提取哈希因子。 
2.根据权利要求1所述方法,其特征在于: 
所述根据所述第一表项的信令报文判断字段,对所述网际协议分组是否是信令报文进行判断包括: 
根据所述信令报文判断字段中的偏移子字段以及长度子字段,提取所述隧道协议头中的信令报文标识字段,所述信令报文标识字段用于标识所述网际协议分组是否为信令报文,所述信令报文判断字段中的偏移子字段用于定义所述信令报文标识字段在所述隧道协议头中的起始位置,所述信令报文判 断字段中的长度子字段用于定义所述信令报文标识字段的长度; 
通过比较所述信令报文标识字段与所述信令报文判断字段中的值子字段是否相等,对所述网际协议分组是否是信令报文进行判断。 
3.一种转发报文的方法,其特征在于: 
接收网际协议分组,所述网际协议分组包含公网网际协议头以及隧道协议头,所述网际协议分组包含隧道协议标识字段,所述隧道协议标识字段用于标识所述网际协议分组的隧道协议; 
根据所述隧道协议标识字段,在哈希控制表中查找隧道协议判断字段与所述隧道协议标识字段匹配的第一表项,所述哈希控制表的表项包括隧道协议判断字段以及哈希因子提取字段; 
根据所述第一表项的哈希因子提取字段,从所述网际协议分组中提取哈希因子; 
根据所述哈希因子执行哈希运算; 
根据所述哈希运算的结果确定用于转发所述网际协议分组的物理出接口; 
根据所述物理出接口转发所述网际协议分组; 
所述根据所述第一表项的哈希因子提取字段,从所述网际协议分组中提取哈希因子包括: 
根据所述哈希因子提取字段中的偏移子字段以及长度子字段,从所述网际协议分组中提取所述哈希因子,所述哈希因子提取字段中的偏移子字段用于定义所述哈希因子在所述网际协议分组中的起始位置,所述哈希因子提取字段中的长度子字段用于定义所述哈希因子的长度。 
4.根据权利要求3所述方法,其特征在于: 
所述在哈希控制表中查找隧道协议判断字段与所述隧道协议标识字段匹配的第一表项之后,并且所述从所述网际协议分组中提取哈希因子之前包括: 
根据所述第一表项的信令报文判断字段,对所述网际协议分组是否是信 令报文进行判断; 
当判断结果为否时,执行所述从所述网际协议分组中提取哈希因子。 
5.根据权利要求4所述方法,其特征在于: 
所述根据所述第一表项的信令报文判断字段,对所述网际协议分组是否是信令报文进行判断包括: 
根据所述信令报文判断字段中的偏移子字段以及长度子字段,提取所述隧道协议头中的信令报文标识字段,所述信令报文标识字段用于标识所述网际协议分组是否为信令报文,所述信令报文判断字段中的偏移子字段用于定义所述信令报文标识字段在所述隧道协议头中的起始位置,所述信令报文判断字段中的长度子字段用于定义所述信令报文标识字段的长度; 
通过比较所述信令报文标识字段与所述信令报文判断字段中的值子字段是否相等,对所述网际协议分组是否是信令报文进行判断。 
6.一种转发报文的方法,其特征在于: 
接收网际协议分组,所述网际协议分组包含公网网际协议头以及隧道协议头,所述网际协议分组包含隧道协议标识字段,所述隧道协议标识字段用于标识所述网际协议分组的隧道协议; 
根据所述隧道协议标识字段,在哈希控制表中查找隧道协议判断字段与所述隧道协议标识字段匹配的第一表项,所述哈希控制表的表项包括隧道协议判断字段以及哈希因子提取字段; 
根据所述第一表项的哈希因子提取字段,从所述网际协议分组中提取哈希因子; 
根据所述哈希因子执行哈希运算; 
根据所述哈希运算的结果确定用于转发所述网际协议分组的物理出接口; 
根据所述物理出接口转发所述网际协议分组; 
所述在哈希控制表中查找隧道协议判断字段与所述隧道协议标识字段匹 配的第一表项之后,并且从所述网际协议分组中提取哈希因子之前包括: 
根据所述第一表项的流属性判断字段,对所述网际协议分组是否包含流属性字段进行判断; 
当判断结果为是时,执行所述从所述网际协议分组中提取哈希因子,所述哈希因子为所述流属性字段。 
7.一种转发报文的方法,其特征在于,包括: 
接收网际协议分组,所述网际协议分组包含公网网际协议头以及隧道协议头,所述网际协议分组包含隧道协议标识字段,所述隧道协议标识字段用于标识所述网际协议分组的隧道协议; 
根据所述隧道协议标识字段,在哈希控制表中查找隧道协议判断字段与所述隧道协议标识字段匹配的第一表项,所述哈希控制表的表项包括隧道协议判断字段以及哈希因子提取字段; 
根据所述第一表项的哈希因子提取字段,从所述网际协议分组中提取哈希因子; 
根据所述哈希因子执行哈希运算; 
根据所述哈希运算的结果确定用于转发所述网际协议分组的物理出接口; 
根据所述物理出接口转发所述网际协议分组; 
所述隧道协议标识字段为所述公网网际协议头中的协议字段。 
8.根据权利要求7所述方法,其特征在于: 
所述在哈希控制表中查找隧道协议判断字段与所述隧道协议标识字段匹配的第一表项之后,并且所述从所述网际协议分组中提取哈希因子之前包括: 
根据所述第一表项的信令报文判断字段,对所述网际协议分组是否是信令报文进行判断; 
当判断结果为否时,执行所述从所述网际协议分组中提取哈希因子。 
9.根据权利要求8所述方法,其特征在于: 
所述根据所述第一表项的信令报文判断字段,对所述网际协议分组是否是信令报文进行判断包括: 
根据所述信令报文判断字段中的偏移子字段以及长度子字段,提取所述隧道协议头中的信令报文标识字段,所述信令报文标识字段用于标识所述网际协议分组是否为信令报文,所述信令报文判断字段中的偏移子字段用于定义所述信令报文标识字段在所述隧道协议头中的起始位置,所述信令报文判断字段中的长度子字段用于定义所述信令报文标识字段的长度; 
通过比较所述信令报文标识字段与所述信令报文判断字段中的值子字段是否相等,对所述网际协议分组是否是信令报文进行判断。 
10.根据权利要求7所述方法,其特征在于: 
所述根据所述第一表项的哈希因子提取字段,从所述网际协议分组中提取哈希因子包括: 
根据所述哈希因子提取字段中的偏移子字段以及长度子字段,从所述网际协议分组中提取所述哈希因子,所述哈希因子提取字段中的偏移子字段用于定义所述哈希因子在所述网际协议分组中的起始位置,所述哈希因子提取字段中的长度子字段用于定义所述哈希因子的长度。 
11.根据权利要求7所述方法,其特征在于: 
所述在哈希控制表中查找隧道协议判断字段与所述隧道协议标识字段匹配的第一表项之后,并且从所述网际协议分组中提取哈希因子之前包括: 
根据所述第一表项的流属性判断字段,对所述网际协议分组是否包含流属性字段进行判断; 
当判断结果为是时,执行所述从所述网际协议分组中提取哈希因子,所述哈希因子为所述流属性字段。 
12.根据权利要求1所述方法,其特征在于: 
所述网际协议分组包括用户数据报协议头,所述隧道协议标识字段还包括所述用户数据报协议头中的源端口字段或目的端口字段。 
13.一种转发报文的装置,其特征在于,包括: 
接收器,用于接收网际协议分组,所述网际协议分组包含公网网际协议头以及隧道协议头,所述网际协议分组包含隧道协议标识字段,所述隧道协议标识字段用于标识所述网际协议分组的隧道协议; 
查找单元,用于根据所述隧道协议标识字段,在哈希控制表中查找隧道协议判断字段与所述隧道协议标识字段匹配的第一表项,所述哈希控制表的表项包括隧道协议判断字段、哈希因子提取字段; 
提取单元,用于根据所述第一表项的哈希因子提取字段,从所述网际协议分组中提取哈希因子; 
执行单元,用于根据所述哈希因子执行哈希运算; 
确定单元,用于根据所述哈希运算的结果确定用于转发所述网际协议分组的物理出接口; 
发送器,用于根据所述物理出接口转发所述网际协议分组;
第一判断单元,用于所述在哈希控制表中查找隧道协议判断字段与所述隧道协议标识字段匹配的第一表项之后,并且所述从所述网际协议分组中提取哈希因子之前, 
根据所述第一表项的信令报文判断字段,对所述网际协议分组是否是信令报文进行判断; 
当判断结果为否时,执行所述从所述网际协议分组中提取哈希因子。 
14.根据权利要求13所述装置,其特征在于: 
所述第一判断单元包括: 
提取子单元,用于根据所述信令报文判断字段中的偏移子字段以及长度子字段,提取所述隧道协议头中的信令报文标识字段,所述信令报文标识字段用于标识所述网际协议分组是否为信令报文,所述信令报文判断字段中的偏移子字段用于定义所述信令报文标识字段在所述隧道协议头中的起始位置,所述信令报文判断字段中的长度子字段用于定义所述信令报文标识字段 的长度; 
比较子单元,用于通过比较所述信令报文标识字段与所述信令报文判断字段中的值子字段是否相等,对所述网际协议分组是否是信令报文进行判断。 
15.一种转发报文的装置,其特征在于,包括: 
接收器,用于接收网际协议分组,所述网际协议分组包含公网网际协议头以及隧道协议头,所述网际协议分组包含隧道协议标识字段,所述隧道协议标识字段用于标识所述网际协议分组的隧道协议; 
查找单元,用于根据所述隧道协议标识字段,在哈希控制表中查找隧道协议判断字段与所述隧道协议标识字段匹配的第一表项,所述哈希控制表的表项包括隧道协议判断字段、哈希因子提取字段; 
提取单元,用于根据所述第一表项的哈希因子提取字段,从所述网际协议分组中提取哈希因子; 
执行单元,用于根据所述哈希因子执行哈希运算; 
确定单元,用于根据所述哈希运算的结果确定用于转发所述网际协议分组的物理出接口; 
发送器,用于根据所述物理出接口转发所述网际协议分组; 
所述提取单元包括: 
提取子单元,用于根据所述哈希因子提取字段中的偏移子字段以及长度子字段,从所述网际协议分组中提取所述哈希因子,所述哈希因子提取字段中的偏移子字段用于定义所述哈希因子在所述网际协议分组中的起始位置,所述哈希因子提取字段中的长度子字段用于定义所述哈希因子的长度。 
16.根据权利要求15所述装置,其特征在于,包括: 
第一判断单元,用于所述在哈希控制表中查找隧道协议判断字段与所述隧道协议标识字段匹配的第一表项之后,并且所述从所述网际协议分组中提取哈希因子之前, 
根据所述第一表项的信令报文判断字段,对所述网际协议分组是否是信 令报文进行判断; 
当判断结果为否时,执行所述从所述网际协议分组中提取哈希因子。 
17.根据权利要求16所述装置,其特征在于,包括: 
所述第一判断单元包括: 
提取子单元,用于根据所述信令报文判断字段中的偏移子字段以及长度子字段,提取所述隧道协议头中的信令报文标识字段,所述信令报文标识字段用于标识所述网际协议分组是否为信令报文,所述信令报文判断字段中的偏移子字段用于定义所述信令报文标识字段在所述隧道协议头中的起始位置,所述信令报文判断字段中的长度子字段用于定义所述信令报文标识字段的长度; 
比较子单元,用于通过比较所述信令报文标识字段与所述信令报文判断字段中的值子字段是否相等,对所述网际协议分组是否是信令报文进行判断。 
18.一种转发报文的装置,其特征在于,包括: 
接收器,用于接收网际协议分组,所述网际协议分组包含公网网际协议头以及隧道协议头,所述网际协议分组包含隧道协议标识字段,所述隧道协议标识字段用于标识所述网际协议分组的隧道协议; 
查找单元,用于根据所述隧道协议标识字段,在哈希控制表中查找隧道协议判断字段与所述隧道协议标识字段匹配的第一表项,所述哈希控制表的表项包括隧道协议判断字段、哈希因子提取字段; 
提取单元,用于根据所述第一表项的哈希因子提取字段,从所述网际协议分组中提取哈希因子; 
执行单元,用于根据所述哈希因子执行哈希运算; 
确定单元,用于根据所述哈希运算的结果确定用于转发所述网际协议分组的物理出接口; 
发送器,用于根据所述物理出接口转发所述网际协议分组; 
第二判断单元,用于所述在哈希控制表中查找隧道协议判断字段与所述 隧道协议标识字段匹配的第一表项之后,并且从所述网际协议分组中提取哈希因子之前, 
根据所述第一表项的流属性判断字段,对所述网际协议分组是否包含流属性字段进行判断; 
当判断结果为是时,执行所述从所述网际协议分组中提取哈希因子。 
19.一种生成表项的方法,其特征在于,包括: 
生成哈希控制表的表项,所述表项包括隧道协议判断字段以及哈希因子提取字段,所述隧道协议判断字段用于判断网际协议分组的隧道协议标识字段是否与所述隧道协议判断字段匹配,所述网际协议分组包含公网网际协议头以及隧道协议头,所述隧道协议标识字段用于标识所述网际协议分组的隧道协议,所述哈希因子提取字段用于为用于从所述网际协议分组中提取哈希因子的第一软件代码的变量赋值,以便于在所述隧道协议标识字段与所述隧道协议判断字段匹配的情况下,所述第一软件代码从所述网际协议分组中提取哈希因子。 
20.根据权利要求19所述方法,其特征在于: 
所述表项包括信令报文判断字段,所述信令报文判断字段用于为用于判断所述网际协议分组是否为信令报文的第二软件代码的变量赋值,以便于所述第二软件代码对所述网际协议分组是否为信令报文进行判断。 
21.根据权利要求19所述方法,其特征在于: 
所述表项包括流属性判断字段,所述流属性判断字段用于为用于判断所述网际协议分组是否包含流属性字段的第三软件代码的变量赋值,以便于所述第三软件代码对所述网际协议分组是否为信令报文进行判断。 
22.一种生成表项的装置,其特征在于,包括: 
表项生成单元,用于生成哈希控制表的表项,所述表项包括隧道协议判断字段以及哈希因子提取字段,所述隧道协议判断字段用于判断网际协议分组的隧道协议标识字段是否与所述隧道协议判断字段匹配,所述网际协议分 组包含公网网际协议头以及隧道协议头,所述隧道协议标识字段用于标识所述网际协议分组的隧道协议,所述哈希因子提取字段用于为用于从所述网际协议分组中提取哈希因子的第一软件代码的变量赋值; 
第一赋值单元,用于根据所述哈希因子提取字段为所述第一软件代码的变量赋值,以便于在所述隧道协议标识字段与所述隧道协议判断字段匹配的情况下,所述第一软件代码从所述网际协议分组中提取哈希因子。 
23.根据权利要求3所述方法,其特征在于: 
所述隧道协议标识字段为所述公网网际协议头中的协议字段。 
CN201110327770.3A 2011-10-25 2011-10-25 一种转发报文的方法、生成表项的方法及装置 Active CN102333039B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201110327770.3A CN102333039B (zh) 2011-10-25 2011-10-25 一种转发报文的方法、生成表项的方法及装置
PCT/CN2012/080679 WO2013060191A1 (zh) 2011-10-25 2012-08-29 一种转发报文的方法、生成表项的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201110327770.3A CN102333039B (zh) 2011-10-25 2011-10-25 一种转发报文的方法、生成表项的方法及装置

Publications (2)

Publication Number Publication Date
CN102333039A CN102333039A (zh) 2012-01-25
CN102333039B true CN102333039B (zh) 2014-09-17

Family

ID=45484648

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110327770.3A Active CN102333039B (zh) 2011-10-25 2011-10-25 一种转发报文的方法、生成表项的方法及装置

Country Status (2)

Country Link
CN (1) CN102333039B (zh)
WO (1) WO2013060191A1 (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102333039B (zh) * 2011-10-25 2014-09-17 华为技术有限公司 一种转发报文的方法、生成表项的方法及装置
CN103718520B (zh) * 2012-08-02 2017-07-21 华为技术有限公司 处理数据报文的方法、装置及系统
JP6070863B2 (ja) 2013-01-29 2017-02-01 ▲ホア▼▲ウェイ▼技術有限公司Huawei Technologies Co.,Ltd. パケット処理方法及び転送要素
CN104579998B (zh) * 2013-10-29 2018-07-24 国家计算机网络与信息安全管理中心 一种负载均衡处理装置
CN104468391A (zh) * 2014-12-16 2015-03-25 盛科网络(苏州)有限公司 根据隧道报文的用户信息实现负载均衡的方法及系统
CN106357547A (zh) * 2016-09-08 2017-01-25 重庆邮电大学 一种基于流切片的软件定义网络拥塞控制算法
CN106911586B (zh) * 2017-03-24 2020-04-14 京信通信系统(中国)有限公司 一种服务质量Qos优化方法和装置
CN108881037A (zh) * 2018-09-12 2018-11-23 盛科网络(苏州)有限公司 一种基于udf报文实现哈希运算、负载均衡的方法及装置
CN110417766B (zh) * 2019-07-22 2021-10-22 深圳市酷达通讯有限公司 一种协议解析的方法和装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101026630A (zh) * 2007-03-30 2007-08-29 华为技术有限公司 检测方法、统计分析服务器以及检测系统
CN101964749A (zh) * 2010-09-21 2011-02-02 北京网康科技有限公司 一种基于多核构架的报文转发方法及系统
CN102136989A (zh) * 2010-01-26 2011-07-27 华为技术有限公司 报文传输的方法、系统和设备
CN102201933A (zh) * 2011-04-29 2011-09-28 中兴通讯股份有限公司 一种报文发送方法及装置

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7206861B1 (en) * 2002-07-29 2007-04-17 Juniper Networks, Inc. Network traffic distribution across parallel paths
US20070248091A1 (en) * 2006-04-24 2007-10-25 Mohamed Khalid Methods and apparatus for tunnel stitching in a network
CN101610296B (zh) * 2009-07-21 2011-12-28 杭州华三通信技术有限公司 一种网络地址转换出接口均衡方法和装置
CN102148768B (zh) * 2011-05-26 2014-11-26 杭州华三通信技术有限公司 报文转发方法和报文转发设备
CN102333039B (zh) * 2011-10-25 2014-09-17 华为技术有限公司 一种转发报文的方法、生成表项的方法及装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101026630A (zh) * 2007-03-30 2007-08-29 华为技术有限公司 检测方法、统计分析服务器以及检测系统
CN102136989A (zh) * 2010-01-26 2011-07-27 华为技术有限公司 报文传输的方法、系统和设备
CN101964749A (zh) * 2010-09-21 2011-02-02 北京网康科技有限公司 一种基于多核构架的报文转发方法及系统
CN102201933A (zh) * 2011-04-29 2011-09-28 中兴通讯股份有限公司 一种报文发送方法及装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
《基于二层隧道协议的虚拟专用网研究 》;周殊 等;《计算机应用》;20070629;全文 *
周殊 等.《基于二层隧道协议的虚拟专用网研究 》.《计算机应用》.2007,

Also Published As

Publication number Publication date
WO2013060191A1 (zh) 2013-05-02
CN102333039A (zh) 2012-01-25

Similar Documents

Publication Publication Date Title
CN102333039B (zh) 一种转发报文的方法、生成表项的方法及装置
KR102052520B1 (ko) 컨텐츠 중심 네트워크에서 컨텐츠의 이동성을 지원하기 위한 노드의 통신 방법 및 노드
US9378245B2 (en) Name database server, name resolution system, entry search method and entry search program
US12101254B2 (en) Packet processing method and network device
US11729300B2 (en) Generating programmatically defined fields of metadata for network packets
CN106878194B (zh) 一种报文处理方法和装置
US9679022B2 (en) Name database server, name resolution system, entry search method and entry search program
US20160065460A1 (en) Packet processing method and apparatus
CN107580079B (zh) 一种报文传输方法和装置
CN104320304A (zh) 一种易扩展的多方式融合的核心网用户流量应用识别方法
CN105337881A (zh) 一种数据报文的处理方法、业务节点以及引流点
WO2017186159A1 (zh) 报文传输
US20220045875A1 (en) Multicast message processing method and apparatus, storage medium and processor
CN102035738B (zh) 一种获取路由信息的方法及装置
CN107547346B (zh) 一种报文传输方法和装置
CN108206788B (zh) 一种流量的业务识别方法及相关设备
WO2014042966A1 (en) Telemetry data routing
CN105099918A (zh) 一种数据查找匹配的方法和装置
CN104506450A (zh) 媒体资源反馈方法及装置
CN107070719B (zh) 一种设备管理方法和装置
CN103825824A (zh) 一种报文处理方法及装置
CN103746768B (zh) 一种数据包的识别方法及设备
CN105515995A (zh) 报文处理方法、流表生成方法及装置
CN105282102B (zh) 数据流处理方法和系统以及IPv6数据处理设备
CN116566897A (zh) 一种寻址路由方法、装置、设备及介质

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20211223

Address after: 450046 Floor 9, building 1, Zhengshang Boya Plaza, Longzihu wisdom Island, Zhengdong New Area, Zhengzhou City, Henan Province

Patentee after: xFusion Digital Technologies Co., Ltd.

Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen

Patentee before: HUAWEI TECHNOLOGIES Co.,Ltd.