发明内容
本发明提供了一种获取全域最小最大传输单元值的方法和设备,以使各网络设备之间可以协商出IS-IS区域内的最小MTU值。
为了达到上述目的,本发明实施例提供一种获取全域最小最大传输单元值的方法,该方法包括以下步骤:
各网络设备获得本设备所有建立邻居关系的链路的最小最大传输单元MTU值,将所述本设备最小的MTU值作为本设备MTU值,并将所述本设备最小的MTU值添加到第一Hello报文中,向邻居网络设备发送所述第一Hello报文;
各网络设备在收到来自邻居网络设备的第一Hello报文后,如果接收到的第一Hello报文中携带的MTU值比本设备MTU值小,则将接收到的第一Hello报文中携带的MTU值作为本设备MTU值保存在本地,然后向邻居网络设备发送携带本地保存的本设备MTU值的第二Hello报文;如果接收到的第一Hello报文中携带的MTU值不比本设备MTU值小,则保持本设备MTU值;
各网络设备在收到来自邻居网络设备的第二Hello报文后,如果接收到的第二Hello报文中携带的MTU值比本设备MTU值小,则将接收到的第二Hello报文中携带的MTU值作为本设备MTU值保存在本地,然后向邻居网络设备发送携带本地保存的本设备MTU值的第二Hello报文;如果接收到的第二Hello报文中携带的MTU值不比本设备MTU值小,则保持本设备MTU值;
如果各网络设备在一个预设的时间内,一直没有收到比本地保存的本设备MTU值小的第一Hello报文或第二Hello报文,则该网络设备确定本地保存的本设备MTU值为全域最小MTU值。
所述各网络设备获得本设备所有建立邻居关系的链路的最小最大传输单元MTU值,具体包括:
网络设备在与其它网络设备建立邻居关系时,将其它网络设备对应接口的MTU值添加到第三Hello报文中,并向其它网络设备发送第三Hello报文;
如果第三Hello报文中携带的MTU值与收到第三Hello报文的接口的MTU值相同,则所述网络设备能够与所述其它网络设备建立邻居关系;如果第三Hello报文中携带的MTU值与收到第三Hello报文的接口的MTU值不同,则所述网络设备不能够与所述其它网络设备建立邻居关系,一直到所述其它网络设备对应接口的MTU值为收到第三Hello报文的接口的MTU值,以使所述网络设备能够与所述其它网络设备建立邻居关系;
所述网络设备获得本设备所有接口的MTU值,并选择所有接口的MTU值中最小的MTU值为本设备最小的MTU值。
各Hello报文中携带有类型长度值TLV,所述TLV包括类型type字段、长度length字段和值value字段;所述type字段中携带了用于标明value字段中携带的是MTU值的信息;所述length字段中携带了用来标明value字段长度的信息;所述value字段的第一部分为第一标识时,表示Hello报文为第一Hello报文,第一部分为第二标识时,表示Hello报文为第二Hello报文,第一部分为第三标识时,表示Hello报文为第三Hello报文;以及,所述value字段的第二部分为Hello报文中携带的MTU值。
所述方法进一步包括:各网络设备利用本设备MTU值生成需要向邻居网络设备发送的数据,并向所述邻居网络设备发送所述生成的数据。
当在中间***到中间***IS-IS区域内确定各网络设备的MTU值时,Hello报文包括基于IS-IS协议的IIH报文。
本发明实施例提供一种网络设备,所述网络设备包括:
获得模块,用于获得本设备所有建立邻居关系的链路的最小最大传输单元MTU值;
第一发送模块,用于将所述本设备最小的MTU值作为本设备MTU值,并将所述本设备最小的MTU值添加到第一Hello报文中,向邻居网络设备发送所述第一Hello报文;
第二发送模块,用于在收到来自邻居网络设备的第一Hello报文后,如果接收到的第一Hello报文中携带的MTU值比本设备MTU值小,则将接收到的第一Hello报文中携带的MTU值作为本设备MTU值保存在本地,然后向邻居网络设备发送携带本地保存的本设备MTU值的第二Hello报文;如果接收到的第一Hello报文中携带的MTU值不比本设备MTU值小,则保持本设备MTU值;
第三发送模块,用于在收到来自邻居网络设备的第二Hello报文后,如果接收到的第二Hello报文中携带的MTU值比本设备MTU值小,则将接收到的第二Hello报文中携带的MTU值作为本设备MTU值保存在本地,然后向邻居网络设备发送携带本地保存的本设备MTU值的第二Hello报文;如果接收到的第二Hello报文中携带的MTU值不比本设备MTU值小,则保持本设备MTU值;
确定模块,用于在一个预设的时间内,如果一直没有收到比本地保存的本设备MTU值小的第一Hello报文或第二Hello报文,则确定本地保存的本设备MTU值为全域最小MTU值。
所述获得模块,具体用于在本设备与其它网络设备建立邻居关系时,将所述其它网络设备对应接口的MTU值添加到第三Hello报文中,并向所述其它网络设备发送所述第三Hello报文;如果第三Hello报文中携带的MTU值与收到第三Hello报文的接口的MTU值相同,则本设备能够与所述其它网络设备建立邻居关系;如果第三Hello报文中携带的MTU值与收到第三Hello报文的接口的MTU值不同,则本设备不能够与所述其它网络设备建立邻居关系,一直到所述其它网络设备对应接口的MTU值为收到第三Hello报文的接口的MTU值,以使本设备能够与所述其它网络设备建立邻居关系;以及,获得本设备所有接口的MTU值,并选择所有接口的MTU值中最小的MTU值为本设备最小的MTU值。
各Hello报文中携带有类型长度值TLV,所述TLV包括类型type字段、长度length字段和值value字段;所述type字段中携带了用于标明value字段中携带的是MTU值的信息;所述length字段中携带了用来标明value字段长度的信息;所述value字段的第一部分为第一标识时,表示Hello报文为第一Hello报文,第一部分为第二标识时,表示Hello报文为第二Hello报文,第一部分为第三标识时,表示Hello报文为第三Hello报文;以及,所述value字段的第二部分为Hello报文中携带的MTU值。
还包括:第四发送模块,用于利用本设备MTU值生成需要向邻居网络设备发送的数据,并向所述邻居网络设备发送所述生成的数据。
当在中间***到中间***IS-IS区域内确定各网络设备的MTU值时,Hello报文包括基于IS-IS协议的IIH报文。
与现有技术相比,本发明实施例至少具有以下优点:本发明实施例中,各网络设备之间可以协商出IS-IS区域内的最小MTU值,且各网络设备将IS-IS区域内的最小MTU值作为本设备MTU值,并利用本设备MTU值进行后续处理,从而可以实现数据的正常传输;而且在检测MTU值的过程中,不需要将接口的MTU值填充IS-IS的Hello报文中,从而可以节省带宽资源。
具体实施方式
下面结合附图对本发明实施例进行详细描述。
本发明实施例提出一种获取全域最小最大传输单元值的方法,该方法可以应用的场景包括但不限于如下网络:基于ISIS协议的网络、基于SPB(ShortestPathBridge,最短路径桥接)-ISIS协议的网络、基于EVI(EthernetVirtualizationInterconnection,以太网虚拟化互联)-ISIS协议的网络、基于TRILL(TransparentInterconnectionofLotsofLinks,多链路透明互联)协议的网络等;如图1所示,该方法包括以下步骤:
步骤101,各网络设备获得本设备所有建立邻居关系的链路的最小MTU值,将本设备最小的MTU值作为本设备MTU值,并将本设备最小的MTU值添加到第一Hello报文中,以及向邻居网络设备发送该第一Hello报文。
本发明实施例中,各网络设备获得本设备所有建立邻居关系的链路的最小MTU值,具体包括:
网络设备在与其它网络设备建立邻居关系时,将其它网络设备对应接口的MTU值添加到第三Hello报文中,并向其它网络设备发送第三Hello报文;
如果第三Hello报文中携带的MTU值与收到第三Hello报文的接口的MTU值相同,则该网络设备能够与其它网络设备建立邻居关系;
如果第三Hello报文中携带的MTU值与收到第三Hello报文的接口的MTU值不同,则该网络设备不能够与其它网络设备建立邻居关系,一直到其它网络设备对应接口的MTU值为收到第三Hello报文的接口的MTU值,以使网络设备能够与其它网络设备建立邻居关系;
网络设备在所有邻居关系建立完成之后,可以确定所有接口的MTU值,即该网络设备可以获得本设备所有接口的MTU值,并选择所有接口的MTU值中最小的MTU值为本设备最小的MTU值。
例如,网络设备1的接口1与网络设备2的接口2相连,网络设备1在与网络设备2建立邻居关系时,将网络设备2对应接口(接口1)的MTU值(如1000)添加到第三Hello报文中,向网络设备2发送第三Hello报文;如果第三Hello报文中携带的MTU值与收到第三Hello报文的接口(接口2)的MTU值相同,则网络设备1能够与网络设备2建立邻居关系,此时接口1的MTU值为1000;如果第三Hello报文中携带的MTU值与接口2的MTU值不同(设接口2的MTU值为800),则网络设备1不能够与网络设备2建立邻居关系,一直到接口1的MTU值为接口2的MTU值(通过修改接口1的MTU值实现,或通过修改接口2的MTU值实现,或通过同时修改接口1和接口2的MTU值实现),以使网络设备1能够与网络设备2建立邻居关系,假设通过修改接口1的MTU值实现,则接口1的MTU值为800。进一步的,网络设备1在所有接口对应的邻居关系建立完成后,可确定所有接口的MTU值,并选择所有接口的MTU值中最小的MTU值为本设备最小的MTU值。
步骤102,各网络设备在收到来自邻居网络设备的第一Hello报文后,如果接收到的第一Hello报文中携带的MTU值比本设备MTU值小,则将接收到的第一Hello报文中携带的MTU值作为本设备MTU值保存在本地,然后向邻居网络设备发送携带本地保存的本设备MTU值的第二Hello报文;如果接收到的第一Hello报文中携带的MTU值不比本设备MTU值小,则保持本设备MTU值。
步骤103,各网络设备在收到来自邻居网络设备的第二Hello报文后,如果接收到的第二Hello报文中携带的MTU值比本设备MTU值小,则将接收到的第二Hello报文中携带的MTU值作为本设备MTU值保存在本地,然后向邻居网络设备发送携带本地保存的本设备MTU值的第二Hello报文;如果接收到的第二Hello报文中携带的MTU值不比本设备MTU值小,则保持本设备MTU值。
步骤104,如果各网络设备在一个预设的时间内(如邻居建立时间),一直没有收到比本地保存的本设备MTU值小的第一Hello报文或第二Hello报文,则该网络设备确定本设备MTU值为全域最小MTU值。
进一步的,各网络设备在协商出区域内的最小MTU值之后(各网络设备的本设备MTU值为区域内的最小MTU值),各网络设备均可以利用本设备MTU值生成需要向邻居网络设备发送的数据(如LSP(LinkStateProtocolDataUnit,链路状态协议数据单元)等),并向邻居网络设备发送该生成的数据;且由于各网络设备均按照本设备MTU值(即区域内的最小MTU值)来生成LSP等,因此生成的LSP为区域内可用的LSP。
因此,通过上述实施方式的处理,可以解决在ISIS协议中由于MTU值不同,导致二层的LSP报文发送失败的问题。
本发明实施例中,各网络设备在协商出区域内的最小MTU值之后,如果又收到来自邻居网络设备的第一Hello报文或者第二Hello报文,则可以继续按照步骤102或者步骤103的方式进行处理,以重新协商区域内的最小MTU值,并以协商出的区域内的最小MTU值为本设备MTU值。
本发明上述实施例中,Hello报文用于建立和维持邻居关系,且不同应用场景下的Hello报文不同;例如,在基于ISIS协议的网络中,即在IS-IS区域内确定各网络设备的MTU值时,Hello报文包括基于IS-IS协议的IIH(IS-ISHello)报文;在基于SPB-ISIS协议的网络中,即在SPB-ISIS区域内确定各网络设备的MTU值时,Hello报文包括基于SPB-ISIS协议的Hello报文。
网络设备在与其它网络设备建立邻居关系之后,为了解决网络设备或其它网络设备对接口的MTU值进行调整,导致网络设备与其它网络设备相应接口的MTU值不一致的问题;在本发明实施例的一种优选实施方式中,网络设备在通过某接口向其它网络设备发送第一Hello报文或第二Hello报文时,还需要将该接口的MTU值添加到第一Hello报文或第二Hello报文,并向其它网络设备发送第一Hello报文或第二Hello报文;如果第一Hello报文或第二Hello报文中携带的接口的MTU值与收到第一Hello报文或第二Hello报文的接口的MTU值相同,则该网络设备和其它网络设备不需要调整对应接口的MTU值;如果第一Hello报文或第二Hello报文中携带的接口的MTU值与收到第一Hello报文或第二Hello报文的接口的MTU值不同,则需要调整对应接口的MTU值,一直到第一Hello报文或第二Hello报文中携带的接口的MTU值与收到第一Hello报文或第二Hello报文的接口的MTU值相同。
进一步的,针对不同应用场景下的Hello报文,本发明实施例中需要在Hello报文中携带有TLV(typelengthvalue,类型长度值),且该TLV包括type(类型)字段、length(长度)字段和value(值)字段;其中:
(1)type字段中携带了用于标明value字段中携带的是MTU值的信息;
(2)length字段中携带了用来标明value字段长度的信息;
(3)value字段分为两部分(第一部分可包含一个字节,第二部分可包含两个字节);当第一部分为第一标识(如0)时,表示Hello报文为第一Hello报文(用于携带本设备最小的MTU值);当第一部分为第二标识(如1)时,表示Hello报文为第二Hello报文(用于携带来自其它网络设备的比本设备最小的MTU值更小的MTU值);当第一部分为第三标识(如2)时,表示Hello报文为第三Hello报文(用于携带接口的MTU值);此外,第二部分为Hello报文中携带的MTU值,且该MTU值的取值范围可以为0~65535。
在本发明实施例的优选实施方式中,如果第一Hello报文或第二Hello报文中携带了接口的MTU值,则TLV中有两个value字段,第一个value字段用于携带本设备最小的MTU值或来自其它网络设备的比本设备最小的MTU值更小的MTU值;第二个value字段用于携带接口的MTU值。
基于与上述方法同样的发明构思,本发明实施例还提出了一种网络设备,如图2所示,所述网络设备包括:
获得模块11,用于获得本设备所有建立邻居关系的链路的最小最大传输单元MTU值;
第一发送模块12,用于将所述本设备最小的MTU值作为本设备MTU值,并将所述本设备最小的MTU值添加到第一Hello报文中,向邻居网络设备发送所述第一Hello报文;
第二发送模块13,用于在收到来自邻居网络设备的第一Hello报文后,如果接收到的第一Hello报文中携带的MTU值比本设备MTU值小,则将接收到的第一Hello报文中携带的MTU值作为本设备MTU值保存在本地,然后向邻居网络设备发送携带本地保存的本设备MTU值的第二Hello报文;如果接收到的第一Hello报文中携带的MTU值不比本设备MTU值小,则保持本设备MTU值;
第三发送模块14,用于在收到来自邻居网络设备的第二Hello报文后,如果接收到的第二Hello报文中携带的MTU值比本设备MTU值小,则将接收到的第二Hello报文中携带的MTU值作为本设备MTU值保存在本地,然后向邻居网络设备发送携带本地保存的本设备MTU值的第二Hello报文;如果接收到的第二Hello报文中携带的MTU值不比本设备MTU值小,则保持本设备MTU值;
确定模块15,用于在一个预设的时间内,如果一直没有收到比本地保存的本设备MTU值小的第一Hello报文或第二Hello报文,则确定本地保存的本设备MTU值为全域最小MTU值。
所述获得模块11,具体用于在本设备与其它网络设备建立邻居关系时,将所述其它网络设备对应接口的MTU值添加到第三Hello报文中,并向所述其它网络设备发送所述第三Hello报文;如果第三Hello报文中携带的MTU值与收到第三Hello报文的接口的MTU值相同,则本设备能够与所述其它网络设备建立邻居关系;如果第三Hello报文中携带的MTU值与收到第三Hello报文的接口的MTU值不同,则本设备不能够与所述其它网络设备建立邻居关系,一直到所述其它网络设备对应接口的MTU值为收到第三Hello报文的接口的MTU值,以使本设备能够与所述其它网络设备建立邻居关系;以及,获得本设备所有接口的MTU值,并选择所有接口的MTU值中最小的MTU值为本设备最小的MTU值。
本发明实施例中,各Hello报文中携带有类型长度值TLV,所述TLV包括类型type字段、长度length字段和值value字段;所述type字段中携带了用于标明value字段中携带的是MTU值的信息;所述length字段中携带了用来标明value字段长度的信息;所述value字段的第一部分为第一标识时,表示Hello报文为第一Hello报文,第一部分为第二标识时,表示Hello报文为第二Hello报文,第一部分为第三标识时,表示Hello报文为第三Hello报文;以及,所述value字段的第二部分为Hello报文中携带的MTU值。
该网络设备还包括:第四发送模块16,用于利用本设备MTU值生成需要向邻居网络设备发送的数据,并向所述邻居网络设备发送所述生成的数据。
本发明实施例中,当在中间***到中间***IS-IS区域内确定各网络设备的MTU值时,Hello报文包括基于IS-IS协议的IIH报文。
其中,本发明装置的各个模块可以集成于一体,也可以分离部署。上述模块可以合并为一个模块,也可以进一步拆分成多个子模块。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可以通过硬件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
本领域技术人员可以理解附图只是一个优选实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
本领域技术人员可以理解实施例中的装置中的模块可以按照实施例描述进行分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
上述本发明序号仅仅为了描述,不代表实施例的优劣。
以上公开的仅为本发明的几个具体实施例,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。