一种Pathmtu的获取方法和设备
技术领域
本发明涉及通信技术领域,特别是涉及一种Pathmtu的获取方法和设备。
背景技术
当前IPv4(Internet Protocol Version 4,因特网协议版本4)地址已经分配殆尽,对于运营商来说,使用IPv6(Internet Protocol Version 6,因特网协议版本6)技术成为了很好的解决方案。IPv6地址的长度是128位,可分配的地址可以使用相当长的时间,因此,IPv6是未来的发展趋势。
IPv4与IPv6在大报文分片上具有很大的不同;在IPv4中,对于从源端到目的端的报文,在中间的每一跳路由器上均会检查报文大小是否大于接口的MTU(Maximum Transmission Unit,最大传输单元,为网络接口不分片时一次能够传输的最多字节数),如果大于MTU,则进行分片,否则直接发送;由于大报文在每一跳上均有被分片的可能,因此报文转发效率会受到影响。
在IPv6中,在源端向目的端发送报文前,使用PathMtu(Path MaximumTransmission Unit,路径最大传输单元,为在两个网络节点之间的所有节点间,不分片时一次能够传输的最多字节数)技术对路径上的最小MTU进行探测,以找出路径上的最小MTU(即PathMtu),在向目的端发送报文时,如果报文长度大于此PathMtu,则进行分片,否则直接发送。
现有技术中,定义了使用PathMtu技术对最小MTU进行探测的方法。以图1所示的组网示意图为例,假设Node0(源端)需要向Node3(目的端)发送一个1500字节的报文,Node0以自身接口的MTU(1500)为到Node3的PathMtu,由于报文大小不大于PathMtu,报文不分片直接发送。
Node1收到报文后,发现报文大小大于自身接口的MTU(1280),于是丢弃该报文,并向Node0发送ICMPv6(Internet Control Message Protocol Version6,第六版互联网控制信息协议)Too Big(过大)报文,将自身接口的MTU通知给Node0,Node0收到通知后,更新到Node3的PathMtu为1280。
Node0重发到Node3的报文,由于报文大小(1500字节)大于PathMtu(1280字节),Node0对报文进行分片,第一片为1280字节,第二片为220字节,将两片报文分别发送给Node1。
Node1收到报文后,发现两片报文的大小均不大于自身接口的MTU(1280),则将两片报文分别发送给Node2;Node2收到报文后,发现两片报文的大小均不大于自身接口的MTU(1400),则将两片报文分别发送给Node3。
通过上述过程,即可以确定Node0与Node3之间的PathMtu为1280,后续Node0向Node3发送报文时,均按照1280进行分片处理。
如图2所示的接入组网的示意图,PC1、PC2、PC3通过接入设备接入Internet,当PC1、PC2、PC3需要同时访问某外部网站(位于Internet中,且接入设备与外部网站的服务器之间会存在多个三层设备)时,在接入设备到外部网站的中间某一跳三层设备(如路由器)上,由于接口MTU比报文小,则这台中间路由器需要向PC1、PC2、PC3分别发送一份ICMPv6 Too Big报文,通知PCI、PC2、PC3将到该外部网站的PathMtu变小。
如果实际组网中接入的PC很多,则中间路由器会向每台PC都发送一份ICMPv6Too Big报文,这对中间路由器和网络链路来说都是很大的消耗。
发明内容
本发明提供一种Pathmtu的获取方法和设备,以节省设备开销以及网络链路带宽。
为了达到上述目的,本发明提供一种路径最大传输单元Pathmtu的获取方法,应用于包括用户设备、网站服务器、接入管理服务器的系统中,该方法包括以下步骤:
所述接入管理服务器获得所述用户设备与所述网站服务器间的Pathmtu;
所述接入管理服务器将所述Pathmtu通知给所述用户设备,由所述用户设备利用所述Pathmtu访问所述网站服务器。
所述接入管理服务器将所述Pathmtu通知给所述用户设备,具体包括:
在所述用户设备访问所述网站服务器之前,当所述接入管理服务器接收到来自所述用户设备的Pathmtu获取请求后,将所述Pathmtu通知给所述用户设备;或者,
在所述用户设备访问所述网站服务器之后,当所述接入管理服务器接收到来自所述用户设备的Pathmtu更新请求后,如果当前Pathmtu与之前发送给所述用户设备的Pathmtu不同,则所述接入管理服务器将当前Pathmtu发送给所述用户设备。
所述系统包括用户设备通过IPv6PPPoE接入网络的系统,所述接入管理服务器包括PPPoE服务器;所述方法进一步包括:
在NCP阶段中,所述PPPoE服务器接收携带有Pathmtu选项的协商报文,所述协商报文中携带所述Pathmtu获取请求;
所述PPPoE服务器接收用于请求PPPoE服务器重新下发Pathmtu的IPv6Pathmtu请求报文,所述Pathmtu请求报文中携带所述Pathmtu更新请求;所述接入管理服务器进一步通过IPv6Pathmtu应答报文将当前Pathmtu发送给所述用户设备。
所述系统包括用户设备通过DHCPv6协议获取IPv6地址的系统,所述接入管理服务器包括用于分配IPv6地址的地址分配服务器;所述方法进一步包括:
所述地址分配服务器接收用于申请IPv6地址的Solicit报文,所述Solicit报文中携带所述Pathmtu获取请求;所述地址分配服务器进一步通过用于分配IPv6地址的Advertise报文将所述Pathmtu发送给所述用户设备;
所述地址分配服务器接收用于请求续约IPv6地址的Renew报文,所述Renew报文中携带所述Pathmtu更新请求;所述地址分配服务器进一步通过用于续约IPv6地址的Reply报文将当前Pathmtu发送给所述用户设备。
所述用户设备利用所述Pathmtu访问所述网站服务器,包括:
所述用户设备在接收到来自所述接入管理服务器的Pathmtu后,将所述Pathmtu加入到自身的Pathmtu列表;
在需要访问所述网站服务器时,所述用户设备从Pathmtu列表中获得所述网站服务器对应的Pathmtu,并通过获得的Pathmtu访问所述网站服务器。
一种接入管理服务器,应用于包括用户设备、网站服务器、所述接入管理服务器的系统中,该接入管理服务器包括:
获取模块,用于获得所述用户设备与所述网站服务器间的Pathmtu;
发送模块,用于将所述Pathmtu通知给所述用户设备,由所述用户设备利用所述Pathmtu访问所述网站服务器。
所述发送模块,具体用于在所述用户设备访问所述网站服务器之前,当接收到来自所述用户设备的Pathmtu获取请求后,将所述Pathmtu通知给所述用户设备;或者,
在所述用户设备访问所述网站服务器之后,当接收到来自所述用户设备的Pathmtu更新请求后,如果当前Pathmtu与之前发送给所述用户设备的Pathmtu不同,则将当前Pathmtu发送给所述用户设备。
所述系统包括用户设备通过IPv6PPPoE接入网络的系统,所述接入管理服务器包括PPPoE服务器;
在NCP阶段中,所述PPPoE服务器接收到的携带有Pathmtu选项的协商报文中携带所述Pathmtu获取请求;所述PPPoE服务器接收到的用于请求PPPoE服务器重新下发Pathmtu的IPv6Pathmtu请求报文中携带所述Pathmtu更新请求;
所述发送模块,进一步用于在接收到IPv6Pathmtu请求报文后,通过IPv6Pathmtu应答报文将当前Pathmtu发送给所述用户设备。
所述系统包括用户设备通过DHCPv6协议获取IPv6地址的系统,所述接入管理服务器包括用于分配IPv6地址的地址分配服务器;
所述地址分配服务器接收到的用于申请IPv6地址的Solicit报文中携带所述Pathmtu获取请求;所述地址分配服务器接收到的用于请求续约IPv6地址的Renew报文中携带所述Pathmtu更新请求;
所述发送模块,进一步用于在接收到Solicit报文后,通过用于分配IPv6地址的Advertise报文将所述Pathmtu发送给所述用户设备;
在接收到Renew报文后,通过用于续约IPv6地址的Reply报文将当前Pathmtu发送给所述用户设备。
与现有技术相比,本发明至少具有以下优点:通过接入管理服务器将用户设备与网站服务器之间的Pathmtu下发给用户设备,可以节省设备开销以及网络链路带宽。
附图说明
图1是现有技术中Node0向Node3发送报文的示意图;
图2是现有技术中接入组网的示意图;
图3是本发明提供的一种Pathmtu的获取方法流程图;
图4是本发明中IP6CP协议的报文格式示意图;
图5是本发明提出的一种接入管理服务器的结构示意图。
具体实施方式
本发明提出一种Pathmtu的获取方法,该方法应用于包括用户设备、网站服务器、接入管理服务器的系统中,用户设备可以为多个通过同一接入设备访问网络的用户设备(如PC),且网站服务器可以为多个门户网站的服务器;如图3所示,该Pathmtu的获取方法包括以下步骤:
步骤301,接入管理服务器获得用户设备与网站服务器之间的Pathmtu。
本发明中,接入管理服务器可以获得用户设备与网站服务器之间的Pathmtu,并可以动态更新用户设备与网站服务器之间的Pathmtu,该获得和更新方式本发明中不再赘述。
步骤302,接入管理服务器将Pathmtu通知给用户设备。
具体的,在用户设备访问网站服务器之前,当接入管理服务器接收到来自用户设备的Pathmtu获取请求后,将Pathmtu通知给用户设备;或者,在用户设备访问网站服务器之后,当接入管理服务器接收到来自用户设备的Pathmtu更新请求后,如果当前Pathmtu与之前发送给用户设备的Pathmtu不同,则接入管理服务器将当前Pathmtu发送给用户设备。
步骤303,用户设备利用Pathmtu访问网站服务器。
具体的,用户设备在接收到来自接入管理服务器的Pathmtu后,将Pathmtu加入到自身的Pathmtu列表;之后,在需要访问网站服务器时,用户设备从Pathmtu列表中获得网站服务器对应的Pathmtu,并通过获得的Pathmtu访问网站服务器。
由于当前企业和家庭用户接入的方式包括:PPPoE(Point-to-Point Protocolover Ethernet,基于以太网的点对点协议)、DHCP(Dynamic Host ConfigurationProtocol,动态主机配置协议)+认证等方式;PPPoE技术具有容易实现访问控制和使用方便等优点,大多数家庭宽带用户均使用PPPoE做为接入技术;在企业和IPTV(交互式网络电视)机顶盒组网中,大多采用DHCP+认证来接入,如DHCP+802.1X认证。
因此,本发明提供的方法可以为对基于IPv6的PPPoE协议和DHCPv6(Dynamic Host Configuration Protocol Version 6,动态主机配置协议版本6)协议进行增强,即上述方法应用的系统包括:(1)用户设备通过IPv6 PPPoE接入网络的系统,该系统下接入管理服务器为PPPoE服务器;(2)用户设备通过DHCPv6协议获取IPv6地址的系统,该系统下接入管理服务器为用于分配IPv6地址的地址分配服务器(即DHCPv6服务器)。
情况一:在通过IPv6PPPoE接入网络的系统中,在NCP(Network ControlProtocol,网络控制协议)阶段中,PPPoE服务器接收到的携带有Pathmtu选项的协商报文,该协商报文中携带Pathmtu获取请求;此外,PPPoE服务器接收到的用于请求PPPoE服务器重新下发Pathmtu的IPv6 Pathmtu请求报文,该IPv6 Pathmtu请求报文中Pathmtu更新请求;此时,接入管理服务器进一步通过IPv6 Pathmtu应答报文将当前Pathmtu发送给用户设备。
在用户设备通过IPv6 PPPoE协议拨号上网时,包括:(1)Discovery(发现)阶段,用于发现可用的PPPoE服务器;(2)LCP(Link Control Protocol,链路控制协议)阶段,用于协商链路层的一些参数,如链路层QoS(服务质量)等;(3)Authentication(认证)阶段,用于对用户身份进行认证,验证用户身份的真实性;(4)NCP阶段,用于协商网络层的一些参数,如IP地址,DNS(Domain Name System,域名系统)服务器IP地址,IP头是否压缩等;(5)IP阶段,用户可以正常上网。
在IPv6PPPoE协议进入NCP阶段后,将使用IPV6CP(Internet ProtocolVersion 6Control Protocol,因特网协议版本6控制协议)协商网络参数,IP6CP协议的报文格式如图4所示。在图4中,需要协商的选项位于IPCP Data部分,且一次对所有选项进行协商,所有选项均协商成功返回一个Ack(确认)报文,有选项不成功则返回Nak(否认)报文。
本发明中,可以在IPCP Data部分增加一种新的Option(选项)为PathmtuOption,在NCP阶段协商选项时,PPPoE服务器在接收到来自用户设备的携带有Pathmtu Option的协商报文后,会将用户设备与常用网站的网站服务器之间的PathMtu下发给用户设备,由用户设备将这些网站的Pathmtu加入到自身的Pathmtu列表,之后用户设备上网时,对于这些网站无需再探测Pathmtu。
此外,由于用户设备与网站服务器间的路由器上的Pathmtu会动态变化,因此在用户设备已经访问网站服务器之后,需要定期对用户设备的Pathmtu列表进行动态更新,以解决中间某跳路由器的Pathmtu动态变化,用户设备无法及时感知的问题。
具体的,在IPv6PPPoE会话进入到NCP阶段后,IPV6CP报文的VER和TPYE为1,TYPE后的CODE为0,PPP Protocol字段为0x8057,CODE为1-7;在此基础上,可以为PPPoE增加两种报文,分别为IPv6Pathmtu请求报文和IPv6Pathmtu应答报文,其CODE分别为8和9。
用户设备已经访问网站服务器后,当用户设备空闲(用户设备何时向PPPoE服务器请求下发Pathmtu列表,由用户设备自身来决定)时,可以向PPPoE服务器发送IPv6 Pathmtu请求报文,请求PPPoE服务器重新下发Pathmtu;PPPoE服务器收到来自用户设备的IPv6 Pathmtu请求报文后,将最新的Pathmtu放入IPv6 Pathmtu应答报文的数据部分返回给用户设备;用户设备收到IPv6 Pathmtu应答报文后,更新自身的Pathmtu列表。如果从上一次IPv6Pathmtu请求报文到本次IPv6 Pathmtu请求报文这段时间内,无Pathmtu发生变化,则可以重新下发上次下发的Pathmtu列表。
情况二:在通过DHCPv6协议获取IPv6地址的系统,地址分配服务器接收到的用于申请IPv6地址的Solicit(请求)报文,该Solicit报文中携带Pathmtu获取请求;此时,地址分配服务器进一步通过用于分配IPv6地址的Advertise(广播)报文将Pathmtu发送给用户设备;地址分配服务器接收到的:用于请求续约IPv6地址的Renew(更新)报文,该Renew报中携带Pathmtu更新请求;此时,地址分配服务器进一步通过用于续约IPv6地址的Reply(应答)报文将当前Pathmtu发送给用户设备。
在用户设备通过DHCPv6协议获取IPv6地址的过程中,DHCPv6协议除了为用户设备(即DHCPv6客户端)分配IPv6地址外,还可以为用户设备分配其他网络参数,如DNS和域名等;此外,DHCPv6协议支持用户自定义选项;基于上述前提,本发明中,可通过增加自定义选项在分配IPv6地址的同时,通过Advertise报文向用户设备下发Pathmtu;用户设备收到携带Pathmtu的报文后,将Advertise报文中的Pathmtu加入到自身的Pathmtu列表中。
此外,由于用户设备与网站服务器间的路由器上的Pathmtu会动态变化,在用户设备已经访问网站服务器之后,可以发送Renew报文给地址分配服务器请求续约,因此本发明中可以在Renew报文中添加自定义选项,请求地址分配服务器重新下发Pathmtu,之后地址分配服务器通过Reply报文向用户设备下发Pathmtu;用户设备收到携带Pathmtu的报文后,将Reply报文中的Pathmtu加入到自身的Pathmtu列表中。
本发明中,通过对基于IPv6的PPPoE协议和DHCPv6协议进行增强,使之在分配地址和DNS等信息时,能够同时下发用户设备与网站服务器之间的PathMtu列表,以减少用户设备的探测次数;在用户设备已经访问网络后,还可以定期下发更新后的Pathmtu列表,刷新用户设备山的Pathmtu列表。
针对现有技术中,当用户设备通过认证可以正常上网后,用户设备访问每个网站前均会先以接口MTU为PathMtu发送报文,如果发送报文后收到中间某节点的ICMPv6 Too Big报文,则会修改此路径的PathMtu,直到报文最后到达目的节点所导致的问题,本发明可解决PathMtu探测过多的问题。
以图2中的组网为例,现有技术中,三台PC访问的5个常用网站中,有4个网站的中间某跳路由器的Pathmtu较小时,则对于这4个网站需要向每台PC都发送一个ICMPv6 Too Big报文,这些报文总共需要4(需发送报文的网站数量)*3(PC数量)*64(ICMPv6Too Big报文大小)=768字节,此外,还需要重传由于Pathmtu变小而发送失败的报文。
而本发明中,仅仅需要增加3(PC数量)*5(网站数量)*18(发送Pathmtu的大小)=270字节的发送量,能够节省64%以上的数据发送量,而且增加的这些流量都是在运营商接入管理服务器和PC之间,这部分线路大多通过运营商专线连接,速率快,对运营商的影响几乎可以忽略;以上仅是3台PC接入运营商时所带来的有益效果,一般运营商在部署时,一台接入设备后大概可支持几千PC,够节省的流量很大。
基于与上述方法同样的发明构思,本发明还提出了一种接入管理服务器,应用于包括用户设备、网站服务器、所述接入管理服务器的系统中,如图5所示,该接入管理服务器包括:
获取模块11,用于获得所述用户设备与所述网站服务器间的Pathmtu;
发送模块12,用于将所述Pathmtu通知给所述用户设备,由所述用户设备利用所述Pathmtu访问所述网站服务器。
所述发送模块12,具体用于在所述用户设备访问所述网站服务器之前,当接收到来自所述用户设备的Pathmtu获取请求后,将所述Pathmtu通知给所述用户设备;或者,在所述用户设备访问所述网站服务器之后,当接收到来自所述用户设备的Pathmtu更新请求后,如果当前Pathmtu与之前发送给所述用户设备的Pathmtu不同,则将当前Pathmtu发送给所述用户设备。
所述系统包括用户设备通过IPv6 PPPoE接入网络的系统,所述接入管理服务器包括PPPoE服务器;在NCP阶段中,所述PPPoE服务器接收到的携带有Pathmtu选项的协商报文中携带所述Pathmtu获取请求;所述PPPoE服务器接收到的用于请求PPPoE服务器重新下发Pathmtu的IPv6 Pathmtu请求报文中携带所述Pathmtu更新请求;所述发送模块12,进一步用于在接收到IPv6 Pathmtu请求报文后,通过IPv6 Pathmtu应答报文将当前Pathmtu发送给所述用户设备。
所述系统包括用户设备通过DHCPv6协议获取IPv6地址的系统,所述接入管理服务器包括用于分配IPv6地址的地址分配服务器;所述地址分配服务器接收到的用于申请IPv6地址的Solicit报文中携带所述Pathmtu获取请求;所述地址分配服务器接收到的用于请求续约IPv6地址的Renew报文中携带所述Pathmtu更新请求;所述发送模块12,进一步用于在接收到Solicit报文后,通过用于分配IPv6地址的Advertise报文将所述Pathmtu发送给所述用户设备;在接收到Renew报文后,通过用于续约IPv6地址的Reply报文将当前Pathmtu发送给所述用户设备。
其中,本发明装置的各个模块可以集成于一体,也可以分离部署。上述模块可以合并为一个模块,也可以进一步拆分成多个子模块。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可以通过硬件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
本领域技术人员可以理解附图只是一个优选实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
本领域技术人员可以理解实施例中的装置中的模块可以按照实施例描述进行分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
上述本发明序号仅仅为了描述,不代表实施例的优劣。
以上公开的仅为本发明的几个具体实施例,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。