发明内容
本发明提供了一种IP报文转发控制方法及其设备,用以解决现有IP报文转发控制技术无法实现基于IP的端到端控制的问题。
本发明提供的IP报文转发控制方法,包括:
第一网络设备发送IP报文,所述IP报文包括IP包头和位于其后的控制包头,所述IP包头标识所述IP报文为IP-in-IP封装报文,所述控制包头中携带有转发控制信息;
所述IP报文路由过程中,若第二网络设备根据所述IP报文的IP包头识别出所述IP报文为IP-in-IP封装报文,并识别出其后的包头为控制包头,则根据所述IP报文的控制包头中携带的转发控制信息,对所述IP报文的转发进行控制。
上述方法中,所述控制包头中携带的转发控制信息包括以下之一或任意组合:
IP报文所属的分组信息;
控制域级别;
服务质量QoS级别。
上述方法中,所述控制包头中携带的转发控制信息包括IP报文所属的分组信息时,所述第二网络设备根据预设的IP报文分组与转发策略的对应关系,判断所述IP报文的控制包头中携带的分组信息所对应的转发策略为拒绝转发报文时,拒绝转发所述IP报文;和/或
所述控制包头中携带的转发控制信息包括控制域级别时,所述第二网络设备判断所述IP报文的控制包头中携带的控制域级别是否低于被访问资源的控制域级别,若是,则拒绝转发所述IP报文;和/或
所述控制包头中携带的转发控制信息包括QoS级别时,所述第二网络设备根据所述IP报文的控制包头中携带的QoS级别,对所述IP报文进行基于QoS的转发控制。
上述方法中,所述第二网络设备对所述IP报文的转发进行控制的过程中,如果判断需要转发所述IP报文且下一跳为所述IP报文的目的设备,则在删除所述IP报文中的控制包头后再转发所述IP报文。
上述方法中,所述第一网络设备发送IP报文,所述IP报文包括IP包头和位于其后的控制包头,所述IP包头标识所述IP报文为IP-in-IP封装报文,所述控制包头中携带有转发控制信息,包括:
所述第一网络设备通过用户设备的认证过程获取认证服务器下发的用户名与对应设置的转发控制信息,以及用户名与IP报文的IP地址的对应关系;当所述第一网络设备接收到用户设备发送的IP报文时,根据该IP报文的IP地址所对应的用户名获取对应的转发控制信息,将该转发控制信息设置在控制包头中,并将该控制包头插入到该IP报文的IP包头之后;或者
所述第一网络设备上预先设置有IP地址与对应设置的转发控制信息,当所述第一网络设备接收到IP报文后,根据该IP报文的IP地址获取对应的转发控制信息,将该转发控制信息设置在控制包头中,并将该控制包头插入到该IP报文的IP包头之后;或者
所述第一网络设备上预先设置有访问控制列表ACL与对应分组设置的转发控制信息,当所述第一网络设备接收到IP报文后,根据所述ACL对该IP报文进行分组,根据该分组获取对应的转发控制信息,将该转发控制信息设置在控制包头中,并将该控制包头插入到该IP报文的IP包头之后。
本发明提供的网络设备,包括:
报文接收模块,用于接收路由过来的IP报文;
报文识别模块,用于识别所述IP报文的包头;
转发控制模块,用于在所述报文识别模块根据所述IP报文的IP包头识别出所述IP报文为IP-in-IP封装报文,并识别出其后的包头为控制包头时,根据所述IP报文的控制包头中携带的转发控制信息,对所述IP报文的转发进行控制。
上述网络设备中,所述控制包头中携带的转发控制信息包括IP报文所属的分组信息,所述报文识别模块识别出IP报文所属的分组信息后,所述转发控制模块具体用于:根据预设的IP报文分组与转发策略的对应关系,判断所述IP报文的控制包头中携带的分组信息所对应的转发策略为拒绝转发报文时,拒绝转发所述IP报文;或/和
所述控制包头中携带的转发控制信息包括控制域级别,所述报文识别模块识别出控制域级别后,所述转发控制模块具体用于:判断所述IP报文的控制包头中携带的控制域级别是否低于被访问资源的控制域级别,若是,则拒绝转发所述IP报文;或/和
所述控制包头中携带的转发控制信息包括QoS级别,所述报文识别模块识别出QoS级别后,所述转发控制模块具体用于:根据所述IP报文的控制包头中携带的QoS级别,对所述IP报文进行基于QoS的转发控制。
上述网络设备中,所述转发控制模块还用于,在对所述IP报文的转发进行控制的过程中,如果判断需要转发所述IP报文且下一跳为所述IP报文的目的设备,则在删除所述IP报文中的控制包头后再转发所述IP报文。
上述网络设备中,还包括:
控制信息设置模块,用于设置转发控制信息;
报文设置模块,用于将转发控制信息设置在控制包头中,并将该控制包头置于IP包头之后,并在IP包头中标识该IP报文为IP-in-IP封装报文;
报文发送模块,用于发送所述IP报文。
本发明提供的另一种网络设备,包括:
控制信息设置模块,用于设置转发控制信息;
报文设置模块,用于将转发控制信息设置在控制包头中,并将该控制包头置于IP包头之后,并在IP包头中标识该IP报文为IP-in-IP封装报文;
报文发送模块,用于发送所述IP报文。
上述网络设备中,所述控制信息设置模块具体用于,通过用户设备的认证过程获取认证服务器下发的用户名与对应设置的转发控制信息,以及用户名与IP报文的IP地址的对应关系,当所述网络设备接收到用户设备发送的IP报文时,根据该IP报文的IP地址所对应的用户名获取对应的转发控制信息;所述报文设置模块具体用于,将该转发控制信息设置在控制包头中,并将该控制包头插入到该IP报文的IP包头之后;或者
所述控制信息设置模块具体用于,预先设置IP地址与对应设置的转发控制信息,当所述网络设备接收到IP报文后,根据该IP报文的IP地址获取对应的转发控制信息;所述报文设置模块具体用于,将该转发控制信息设置在控制包头中,并将该控制包头插入到该IP报文的IP包头之后;或者
所述控制信息设置模块具体用于,预先设置访问控制列表ACL与对应分组设置的转发控制信息,当所述网络设备接收到IP报文后,根据所述ACL对该IP报文进行分组,根据该分组获取对应的转发控制信息;所述报文设置模块具体用于,将该转发控制信息设置在控制包头中,并将该控制包头插入到该IP报文的IP包头之后。
与现有技术相比,本发明的有益技术效果包括:
本发明通过在IP报文的IP包头后面插入携带有转发控制信息的控制包头,在IP报文的转发路径上,对于需要进行转发控制的设备,通过使其能够对接收到的IP报文进行转发控制,对于不需要进行转发控制的设备则可根据现有机制使其转发接收到的IP报文,从而实现基于IP层的端到端的转发控制。
具体实施方式
针对现有技术存在的上述问题,本发明实施例利用IP-in-IP隧道的封装思想对现有IP报文格式进行了改进,即,在现有IP报文的IP包头后面插入控制包头,该控制包头中携带有IP报文转发控制信息,并相应使需要进行IP报文转发控制的网络设备能够识别该IP报文中的控制包头,并使其能够根据该控制包头中携带的转发控制信息对该IP报文的转发进行控制,从而实现IP报文转发过程中基于IP的端到端的控制。
由于本发明实施例利用了IP-in-IP隧道的封装思想,下面首先对IP-in-IP隧道的封装进行简单介绍。
许多数据链路层以及在它们底层运行的硬件对能传送的最大帧长有限制,这种限制称为数据链路层的MTU(Maximum Transmission Unit,最大传输单元)。IP包通常比传送它的数据链路层的MTU要大,在传送前要将IP包分片。在对IP包进行分片时,对于每个分片,在原IP包头前面插入一个IP包头,形成外层IP包头(新插入的IP包头)和内层IP包头(原IP包头),即IP-in-IP封装报文。外层IP包头的源地址和目的地址为隧道的入口和出口,内层IP包头的源地址和目的地址为报文的原发送者和接收者的地址。外层IP包头的Protocol字段设为4,表示该报文为IP-in-IP封装报文。
下面结合附图对本发明实施例进行详细描述。
参见图1,为本发明实施例提供的IP报文的封装结构示意图。如图所示,本发明实施例利用了IP-in-IP隧道的封装思想,在IP报文中插入控制包头,但与IP隧道技术不同的是,该控制包头不是放在原有IP包头的外部(即前面),而是放在原有IP包头的内部(即后面),即,在现有IP报文的IP包头后面插入控制包头,其后是IP报文的负载部分。外层包头为基础IP包头,其中的Protocol字段设为4,表示该报文为IP-in-IP封装结构,其源地址和目的地址仍为发送者和接收者的IP地址;内层包头为控制包头,其中携带有用于进行报文转发控制的控制信息。由于基础IP包头中的Protocol字段设为4,因此需要将基础IP包头中的原Protocol字段内容复制到控制包头的Protocol字段,并需要重新计算基础IP包头的校验和,然后将控制包头添加到基础IP包头之后,形成标准的IP-in-IP封装报文。将IP包头中的原Protocol字段内容复制到控制包头的Protocol字段的目的是为了在进行IP报文恢复时,将控制包头中的Protocol字段内容恢复到IP包头的Protocol字段。当然,将IP包头中的原Protocol字段内容复制到其它字段,如基础IP包头的预留字段或控制包头的预留字段,依然可以实现在进行IP报文恢复时,将原Protocol字段的内容恢复到IP包头的Protocol字段的目的。
基础IP包头的格式可如图2所示,其中,Protocol=4,表示该报文为两层包头的IP-in-IP结构的报文。控制包头的格式可如图3所示,其中,Sign字段的取值用于标识在基础IP包头后部是控制包头。在普通的IP包头中,这个字段的取值一般是0x45,在控制包头中,Sign的取值可设置为0xF5,以标识该包头为控制包头。具体的,控制包头的各字段的取值和含义如下:
Sign:表示本包头为控制包头,取值可为0xF5;
Ver:4bit,表示控制包头的版本,目前为0x01;
QoS Level:20bit,标识QoS的级别;具体取值可以是QoS级别数值或标识;
Sec Level:表示控制域的级别;具体取值可以是控制域级别数值或标识;
Protocol:用于复制基础IP包头中的Protocol字段;
Source group/Destination group:标识报文所属的分组,用于报文分类;其中Source group是基于源地址的分组,Destination group是基于目的地址的分组;Source group或Destination group字段的取值可以是组标识;
Reserved:预留字段。
以上Qos Level、Sec Level和Source group/Destination group字段中携带的信息是IP报文转发控制的相关信息,控制包头中可以仅携带上述转发控制信息之一,也可以包括上述转发控制信息的任意组合,或者说控制包头中可包含以上字段之一或任意组合。
如图4所示,基于上述格式的IP报文,在接入层对IP报文进行基于IP的端到端控制时,在IP报文的发送端设备(如接入层设备)上,根据控制需要设置控制参数,在IP包头后面插入控制包头,其中携带设置好的控制参数(步骤401);在IP报文的转发路径上,在需要进行IP报文转发控制的网络设备(如路由器或交换机)上,进行协议配置和转发控制策略配置,当该网络设备识别出该IP报文的控制包头以及控制包头中携带的转发控制信息时,可根据该转发控制信息采用相应的转发控制策略对该IP报文进行转发控制(步骤402)。
具体的,在需要进行IP报文转发控制的网络设备上进行如下配置:
(1)进行协议配置,使网络设备可识别IP-in-IP封装报文,并可识别控制包头。具体的,针对如图1、图2和图3所示的IP报文,能够根据IP包头中的Protocol字段取值识别出该报文为IP-in-IP封装报文,并进一步读取后面的包头,能够根据读取到的Sign字段取值识别出该包头为控制包头,并可进一步识别出控制包头中携带的转发控制信息。
(2)根据控制需要配置转发控制策略,以便能够根据识别出的控制包头中携带的相应转发控制信息对该IP报文进行转发控制。
这样,在利用控制包头进行IP报文转发控制的网络中,在IP报文的转发路径上,对于需要进行转发控制的设备,通过以上配置使其能够对接收到的IP报文进行转发控制,对于不需要进行转发控制的设备则可根据现有机制使其转发接收到的IP报文,从而实现基于IP层的端到端的转发控制。本发明实施例可以无缝的应用到IP转发、MPLS(Multi-Protocol Label Switching,多协议标签交换)转发,IPSec(Internet协议安全性)转发等场景中,并且对GRE(GenericRouting Encapsulation,通用路由封装协议)、IPSec等基于三层的协议也是透明的,因为在GRE、IPSec封装时,会在原有IP包头前端增加包头,而不是在原有IP包头后部插入包头。
以图1、图2、图3所示的IP报文格式为例,IP报文的发送端设备在接入层设置转发控制信息时,可采用以下方式:
方式一:根据对用户的认证过程自动添加转发控制信息
具体的,在IP报文的发送端设备为与用户设备连接的接入层设备(或称接入设备,如接入层交换机)的情况下,用户通过802.1x/portal等认证方式接入网络时,接入层设备能够获取用户名与用户IP地址的对应关系,并能够接收到认证服务器(如Radius服务器)根据用户名设置并下发的转发控制信息(即转发控制信息与用户名相对应),这样,接入层设备就可以根据接收到的报文的IP地址查询到对应的用户名,从而根据用户名为该报文设置对应的转发控制信息。
方式二:通过手工配置方式关联IP地址与转发控制信息的关系
具体的,针对用户不经过认证直接接入网络的情况,可在接入层设备上预先通过手工等配置方式配置IP地址与对应的转发控制信息。这样,当接入层设备接收到IP报文后,根据该IP报文的IP地址为该IP报文设置对应的转发控制信息。
方式三:利用ACL对报文进行分组,设置对应的转发控制信息
具体的,可预先在接入层设备上配置ACL,用于基于源地址或/和目的地址过滤报文,即,根据IP报文的源地址或/和目的地址,可将IP报文分成不同的组,对应每个分组,可预先配置转发控制信息。当接入层设备获取到报文的IP地址后,可根据ACL将该用户的IP报文划分到对应的分组中,然后根据该分组对应的转发控制信息设置该报文的转发控制信息。
在IP报文的路由路径上,可根据实际需要,使其中一些设备能够识别该IP报文中的转发控制信息,并根据其中的某一类型或某几种类型的转发控制信息对IP报文的转发进行控制。比较典型的应用是:转发路径的某些中间设备可根据IP报文中携带的QoS级别信息进行基于QoS的转发控制,转发路径的末端(如资源服务器的前端,具体如防火墙)设备可根据IP报文中携带的控制域级别进行基于控制域的转发控制。
在基于QoS进行转发控制时,当IP报文转发路径上的网络设备接收到IP报文时,如果能够根据该报文的IP包头中的Protocol字段识别出该报文为IP-in-IP报文,则进一步读取其后的包头;如果根据其后的包头中的Sign字段识别出该包头为控制包头,并进一步解析出其中的QoS Level字段,则根据该QoS Level字段的取值以及预先配置的基于QoS的转发策略对该报文进行转发控制。具体的QoS转发策略及其转发控制,可结合现有的QoS技术进行,例如可以进行队列调度。队列调度的方式可以但不限定有SP(Strict Priority,严格优先级),WRR(Weight Round Robin,权重循环)等,可以将QoS Level级别高的报文优先保证其转发,在当前的链路带宽无法满足该IP报文QoS级别时,可丢弃该IP报文。
在基于控制域进行转发控制时,当IP报文转发路径上的网络设备接收到IP报文时,如果能够根据前述方法识别出该报文的控制包头并进一步解析出其中的Sec Level字段,则根据该Sec Level字段的取值以及预先配置的基于控制域的转发策略对该报文进行转发控制。具体的,可根据控制域级别的高低进行不同的控制,控制域低级别的报文不能访问控制域级别高的资源。如,网络设备发现IP报文的Sec Level值低于其所要访问的资源的Sec Level值,则拒绝转发该报文,否则转发该报文。
在基于报文分组进行转发控制时,当IP报文转发路径上的网络设备接收到IP报文时,如果能够根据前述方法识别出该报文的控制包头并进一步解析出其中的Source group或/和Destination group字段,则根据该字段的取值以及预先配置的基于报文分组的转发策略对该报文进行转发控制。具体的,可在该网络设备上预先配置ACL,用于允许转发或拒绝转发某种分组的报文。例如,设置ACL1,用于允许转发分组1和分组2的报文;设置ACL2,用于拒绝转发分组3的报文。
图5示出了一种典型应用场景下的IP报文转发流程,该应用场景中包括与客户端连接的接入设备,设置于资源服务器前端的控制设备,接入设备可发送如图1所示的IP报文,控制设备具有识别如图1所示的IP报文的能力,且其上配置有IP报文转发控制策略。当用户接入网络,需要访问某个资源的时候,该流程可包括:
步骤501~502,与用户客户端相连的接入设备接收到用户的资源访问请求后,发送IP报文到网络中,该IP报文可如图1所示,包括IP包头和控制包头,所述控制包头中携带有转发控制信息。
具体的,接入设备接收到用户的资源访问请求后,如果进行用户认证流程,则可采用前述方式一在该用户的IP报文中设置转发控制信息,如果不进行用户认证流程,则可采用前述的方式二在该用户的IP报文中设置转发控制信息;还可以采用前述方式三在该用户的IP报文中设置转发控制信息。
步骤503~504,控制设备接收到该IP报文后,在识别出该报文的控制包头及携带的转发控制信息的情况下,根据转发控制信息对报文进行转发控制。
具体的,控制设备可根据预先设置的ACL以及IP报文控制包头中的报文分组信息(Source group或/和Destination group字段内容)对报文进行过滤,对于允许转发的报文还可进一步根据控制包头中的控制域级别信息(Sec Level字段内容)和被访问的资源的控制域级别,判断是否允许相应用户访问该被访问的资源,如果不允许,则拒绝转发该报文,如果允许,还可以进一步根据控制包头中的QoS级别与当前链路的带宽,判断当前链路是否满足该报文的带宽需求,若不满足,则拒绝转发该报文,否则转发该报文到资源服务器。
由于本实施例中,控制设备处于资源服务器的前端(或者说是转发路径的末端,即下一跳为该IP报文的目的设备),因此控制设备在判断允许转发该报文后,还需要将该报文的控制包头删除,恢复该IP报文,再转发给最终的接收者(即资源服务器)。在恢复IP报文的过程中,可先将控制包头中的Protocol字段的内容复制到IP包头的Protocol字段,然后删除控制包头。
当资源服务器响应该用户的资源访问请求后,控制设备可以在响应报文中添加转发控制信息,接入设备在接收到该响应报文后,在识别出该报文的控制包头以及其中携带的转发控制信息后,可根据预先配置的转发控制策略进行相应转发控制。其中,控制设备可采用前述的方式二或方式三在响应报文中添加转发控制信息。此过程与上述从接入设备到控制设备的流程类似,在此不再赘述。
需要说明的是,本发明的以上实施例,是以图3所示的控制包头的格式为例描述的,本领域技术人员应该能够理解,图3所示的控制包头的格式仅为本发明实施例提供的一种优选格式,包含以上信息的其它控制包头的格式,都应在本发明的保护范围之内。如果采用不同于图3所示的控制包头的格式,相应的转发控制流程也会根据控制包头的格式不同而有所调整,但其技术思想与上述实施例相同。
基于相同的技术构思,本发明实施例还提供了一种网络设备,可应用于本发明实施例的上述流程。
参见图6,为本发明实施例提供的网络设备的结构示意图,该网络设备具有报文转发控制功能,具体的,该网络设备可包括:
报文接收模块601,用于接收路由过来的IP报文;
报文识别模块602,用于识别所述IP报文的包头;
转发控制模块603,用于在报文识别模块602根据所述IP报文的IP包头识别出所述IP报文为IP-in-IP封装报文,并识别出其后的包头为控制包头时,根据所述IP报文的控制包头中携带的转发控制信息,对所述IP报文的转发进行控制。
所述控制包头中携带的转发控制信息包括IP报文所属的分组信息时,上述网络设备中,报文识别模块602识别出的转发控制信息包括IP报文所属的分组信息后,转发控制模块603可根据预设的IP报文分组与转发策略的对应关系,判断所述IP报文的控制包头中携带的分组信息所对应的转发策略为拒绝转发报文时,拒绝转发所述IP报文。
所述控制包头中携带的转发控制信息包括控制域级别时,上述网络设备中,报文识别模块602识别出的转发控制信息包括控制域级别后,转发控制模块603可判断所述IP报文的控制包头中携带的控制域级别是否低于被访问资源的控制域级别,若是,则拒绝转发所述IP报文。
所述控制包头中携带的转发控制信息包括QoS级别时,上述网络设备中,报文识别模块602识别出的转发控制信息包括QoS级别后,转发控制模块603可根据所述IP报文的控制包头中携带的QoS级别,对所述IP报文进行基于QoS的转发控制。
上述网络设备中,转发控制模块603还可在对所述IP报文的转发进行控制的过程中,如果判断需要转发所述IP报文且下一跳为所述IP报文的目的设备,则在删除所述IP报文中的控制包头后再转发所述IP报文。
上述网络设备还可具有在IP报文中设置转发控制信息的功能,具体的,该网络设备还可包括:
控制信息设置模块606,用于设置转发控制信息;
报文设置模块604,用于将控制信息设置模块606设置的转发控制信息设置控制包头中,将该控制包头置于IP包头之后,并在IP包头中标识该IP报文为IP-in-IP封装报文;
报文发送模块605,用于发送所述IP报文。
本发明实施例还提供了一种网络设备,该网络设备具有在IP报文中设置转发控制信息的功能,具体的,如图7所示,该网络设备可包括:
控制信息设置模块703,用于设置转发控制信息;
报文设置模块701,用于将控制信息设置模块703设置的转发控制信息设置控制包头中,将该控制包头置于IP包头之后,并在IP包头中标识该IP报文为IP-in-IP封装报文;
报文发送模块702,用于发送所述IP报文。
上述网络设备中,控制信息设置模块703可采用以下方式之一设置转发控制信息:
方式一:通过用户设备的认证过程获取认证服务器下发的用户名与对应设置的转发控制信息,以及用户名与IP报文的IP地址的对应关系;当所述网络设备接收到用户设备发送的IP报文时,根据该IP报文的IP地址所对应的用户名获取对应的转发控制信息;相应的,报文设置模块701可将该转发控制信息设置在控制包头中,并将该控制包头插入到该IP报文的IP包头之后;
方式二:预先设置IP地址与对应设置的转发控制信息,当所述网络设备接收到IP报文后,根据该IP报文的IP地址获取对应的转发控制信息;相应的,报文设置模块701可将该转发控制信息设置在控制包头中,并将该控制包头插入到该IP报文的IP包头之后;或者
方式三:预先设置访问控制列表ACL与对应分组设置的转发控制信息,当所述网络设备接收到IP报文后,根据所述ACL对该IP报文进行分组,根据该分组获取对应的转发控制信息;相应的,报文设置模块701可将该转发控制信息设置在控制包头中,并将该控制包头插入到该IP报文的IP包头之后。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台终端设备(可以是手机,个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视本发明的保护范围。