处理报文、发送信息、接收信息的方法及装置的制造方法_3

文档序号:9690870阅读:来源:国知局
ecksum 或者用户数据报协议(User Datagram Protocol, UDP)checksum。
[0130]可选地,图1所述的方法中,所述网络装置根据第一流表中的第一表项确定第一基本偏移之前,所述方法还包括:
[0131]所述网络装置接收第二报文。
[0132]所述网络装置根据第二偏移和第二长度确定第二查找关键字。所述第二偏移用于指示所述第二报文中的第二字段的起始位置。所述第二偏移和所述第二长度的和用于指示所述第二字段的结束位置。所述第二查找关键字等于所述第二字段的值。
[0133]所述网络装置根据所述第二查找关键字查找所述第一流表。
[0134]所述网络装置确定所述第一表项与所述第二查找关键字匹配。
[0135]例如,所述网络装置接收第二报文以后,以及所述网络装置根据第二偏移和第二长度确定第二查找关键字之前,所述网络装置可以利用解析器对所述第二报文进行解析从而确定所述第二报文的数据格式。例如,所述网络装置确定所述第二报文的数据格式符合IP报文的数据格式。或者所述网络装置确定所述第二报文的数据格式符合以太网帧的数据格式。
[0136]举例来说,所述第一报文与所述第二报文可以是同一个报文。
[0137]可选地,上述技术方案中,所述网络装置确定所述第一表项与所述第二查找关键字匹配之后,以及所述网络装置根据所述第一基本偏移、第一偏移和第一长度确定第一查找关键字以前,所述方法还包括:
[0138]所述网络装置通过根据所述第一表项对所述第二报文进行处理获得所述第一报文。
[0139]可选地,上述技术方案中,所述第一流表和所述第二流表是控制器向所述网络装置发送的。所述控制器能够对所述网络设备进行管辖。
[0140]举例来说,所述控制器可以是开放流控制器(英文:0penFlow Controller)。
[0141]图4为实施例提供的一种发送信息的方法的流程示意图。参见图4,所述方法包括:
[0142]401、第一网络装置根据第一流表中的第一表项确定第一基本偏移。
[0143]402、所述第一网络装置向第二网络装置发送所述第一基本偏移。
[0144]所述第一基本偏移能够触发所述第二网络装置执行如下操作:
[0145]根据所述第一基本偏移、第一偏移和第一长度确定第一查找关键字。所述第一基本偏移和所述第一偏移的和用于指示第一报文中的第一字段的起始位置。所述第一基本偏移、所述第一偏移以及所述第一长度的和用于指示所述第一字段的结束位置。所述第一查找关键字等于所述第一字段的值。
[0146]通过根据所述第一查找关键字查找第二流表确定所述第二流表中与所述第一查找关键字匹配的第二表项。
[0147]根据所述第二表项对所述第一报文进行处理。
[0148]举例来说,所述第一网络装置可以是路由器、网络交换机、PTN设备、防火墙、负载均衡器、数据中心或者WDM设备。所述网络交换机可以是OpenFlow Switch。所述第二网络装置可以是路由器、网络交换机、PTN设备、防火墙、负载均衡器、数据中心或者WDM设备。所述网络交换机可以是OpenFlow Switch。
[0149]举例来说,所述第一表项中可以包含所述第一基本偏移。
[0150]举例来说,所述第一流表可以是MAC协议表、ARP表、FIB或者MPLS标签表。
[0151]举例来说,所述第一报文可以是IP报文,Ethernet Frame或者MPLS报文。
[0152]举例来说,所述第一偏移可以是一个偏移,也可以是多个偏移。所述第一长度可以是一个长度,也可以是多个长度。所述多个偏移与所述多个长度一一对应。
[0153]举例来说,所述第一字段可以是一个字段或者多个字段。所述多个字段与所述多个偏移--对应。所述多个字段与所述多个长度--对应。
[0154]例如,所述第一报文可以是IPv6报文。图2是所述IPv6报文的IPv6头的示意图。所述第一字段可以是源IP地址以及目的IP地址。所述第一偏移包括64以及192。所述第一长度分别是128和128。所述源IP地址的起始位置相对于所述IPv6报文的起始位置的偏移等于64。64用于所述指示所述源IP地址在所述IPv6报文中的起始位置。所述目的IP地址的起始位置相对于所述IPv6报文的起始位置的偏移等于192。192用于所述指示所述目的IP地址在所述IPv6报文中的起始位置。
[0155]所述源IP地址的长度为128比特。所述目的IP地址的长度为128比特。64与128的和等于192。192用于指示所述源IP地址在所述IPv6报文中的结束位置。192与128的和等于320。320用于指示所述目的IP地址在所述IPv6报文中的结束位置。
[0156]举例来说,所述第一基本偏移用于指示协议头的MSB的位置。所述第一字段是所述协议头中的字段。所述第一报文包含所述协议头。
[0157]举例来说,当所述协议头是所述第一报文的报文头,所述第一基本偏移等于0。
[0158]例如,所述第一报文可以是TCP报文。参见图3。图3为所述TCP报文的示意图。所述TCP报文包括IPv4头、TCP头以及净荷。其中,所述IPv4头和所述TCP头是所述TCP报文的协议头。所述IPv4头是所述TCP报文的报文头。所述第一字段可以是所述IPv4头的源IP地址。相应的,所述第一基本偏移等于0。所述偏移和所述长度分别是96和32。所述IPv4头的MSB相对于所述TCP报文的MSB的偏移等于0。所述源IP地址的起始位置相对于所述IPv4头的起始位置的偏移为96。所述源IP地址的长度为32比特。
[0159]再例如,所述第一报文可以是TCP报文。参见图3。图3为所述TCP报文的示意图。所述TCP报文包括IPv4头、TCP头以及净荷。其中,所述IPv4头和所述TCP头是所述TCP报文的协议头。所述IPv4头是所述TCP报文的报文头。所述第一字段可以是所述TCP头的目的端口。相应的,所述第一基本偏移等于160。所述偏移和所述长度分别是16和16。所述TCP头的MSB相对于所述TCP报文的MSB的偏移等于160。所述目的端口的起始位置相对于所述TCP头的起始位置的偏移为16。所述源端口的长度为16比特。
[0160]举例来说,所述第一表项中可以包含next table ID。所述下一个表的标识等于所述第二流表的标识。所述第二网络装置可以根据所述第二流表的标识访问所述第二流表。例如,所述第一表项中可以包含流表跳转(英文:goto_table)指令。所述流表跳转指令中可以包含所述第二流表的标识。
[0161]举例来说,所述处理可以包括下述操作中的至少一个:修改所述第一报文、计算所述第一报文的checksum、写寄存器、读寄存器、counter update、对所述第一报文进行CAR处理,丢弃所述第一报文和发送所述第一报文。
[0162]举例来说,修改所述第一报文可以是删除所述第一报文中的data segment、替换所述第一报文中的data segment或者在所述第一报文中插入data segment。
[0163]举例来说,所述checksum 可以是 IP checksum、TCP checksum 或者 UDP checksum。
[0164]可选地,上述技术方案中,所述第一网络装置根据第一流表中的第一表项确定第一基本偏移之前,所述方法还包括:
[0165]所述第一网络装置接收第二报文。
[0166]所述第一网络装置根据第二偏移和第二长度确定第二查找关键字。所述第二偏移用于指示所述第二报文中的第二字段的起始位置。所述第二偏移和所述第二长度的和用于指示所述第二字段的结束位置。所述第二查找关键字等于所述第二字段的值。
[0167]所述第一网络装置根据所述第二查找关键字查找所述第一流表。
[0168]所述第一网络装置确定所述第一表项与所述第二查找关键字匹配。
[0169]例如,所述第一网络装置接收第二报文以后,以及所述第一网络装置根据第二偏移和第二长度确定第二查找关键字之前,所述第一网络装置可以利用解析器对所述第二报文进行解析从而确定所述第二报文的数据格式。例如,所述第一网络装置确定所述第二报文的数据格式符合IP报文的数据格式。或者所述第一网络装置确定所述第二报文的数据格式符合以太网帧的数据格式。
[0170]举例来说,所述第一报文与所述第二报文可以是同一个报文。
[0171]可选地,上述技术方案中,所述第一网络装置确定所述第一表项与所述第二查找关键字匹配之后,以及所述第二网络装置根据所述第一基本偏移、第一偏移和第一长度确定第一查找关键字以前,所述方法还包括:
[0172]所述第一网络装置通过根据所述第一表项对所述第二报文进行处理获得所述第——?艮文。
[0173]所述第一网络装置向所述第二网络装置发送所述第一报文。
[0174]可选地,上述技术方案中,所述第一流表和所述第二流表是控制器分别向所述第一网络装置和所述第二网络装置发送的。所述控制器能够对所述第一网络设备和所述第二网络装置进行管辖。
[0175]举例来说,所述控制器可以是OpenFlow Controller。
[0176]参见图5。图5为图4所示的方法的一个应用场景的示意图。
[0177]参见图5,上述应用场景中包含了第一网络、第二网络、第三网络、流表1、流表2以及流表3。流表1是路由器1中的流表。流表2是路由器2中的流表。流表3是路由器中的流表。路由器1能够在流表1查找与IPv6头中的下一个头匹配的表项。路由器2能够在流表2查找与IPv4头中的源IP地址以及TCP头中的源端口匹配的表项。路由器3能够在流表3中查找与IPv6头中的目的IP地址匹配的表项。
[0178]所述第一网络是IPv6网络。所述第二网络是IPv4网络。所述第二网络是IPv6网络。
[0179]在上述应用场景中,来自第一网络的报文需要被传递到第二网络或者第三网络。如果来自第一网络的报文通过路由器2到达第二网络,则上述处理属于双栈简化物(英文:dual stack lite,简称:DS_Lite)。如果来自第一网络的报文通过路由器3到达第二网络或者第三网络,贝1J上述处理属于非双栈简化物(英文:non dual stack lite,简称:NonDS-Lite)。
[0180]下文分别对双栈简化物的场景和非双栈简化物的场景进行说明:
[0181]在双栈简化物的场景中,路由器1接收到第一网络发送的IPv6报文1。IPv6报文1从外层到内层分别是IPv6头、IPv4头、TCP头以及净荷。其中,IPv6头中的下一个头(next header)的值为4。路由器1以下一个头的值为查找关键字1,在流表1中查找与查找关键字1匹配的表项1。表项1中包含流表2的标识以及基本偏移1。所述基本偏移1等于0。
[0182]路由器1根据流表1删除IPv6报文1中的IPv6头从而得到IPv4报文1。
[0183]路由器1将基本偏移1以及IPv4报文1发送至路由器2。路由器2根据基本偏移1确定查找关键字2。具体来说,查找关键字2包括IPv4头中的源IP地址的值以及TCP头中的源端口的值。源IP地址字段对应的基本偏移、偏移以及长度分别是:0、96以及32。IPv4头的起始位置相对于IPv4报文1的起始位置的偏移为0。源IP地址字段的起始位置相对于IPv4头的起始位置的偏移为0。源IP地址字段的长度等于32。源端口字段对应的基本偏移、偏移以及长度分别是:0、160以及16。IPv4头的起始位置相对于IPv4报文1的起始位置的偏移为0。源端口字段的起始位置相对于IPv4头的起始位置的偏移为160。源端口字段的长度等于16。因此,
当前第3页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1