一种IPv6地址分配方法和Leaf节点设备与流程

文档序号:15625293发布日期:2018-10-09 22:49阅读:383来源:国知局

本申请涉及通信技术领域,尤其涉及一种ipv6(internetprotocolversion6,互联网协议第6版)地址分配方法和leaf节点设备。



背景技术:

目前ipv6网络可以依靠nd(neighbordiscovery,邻居发现)协议中的地址无状态自动配置方式来配置ipv6地址,具体过程为:节点启动后,通过rs(routersolicitation,路由请求)消息向路由器发出请求,路由器返回ra(routeradvertisement,路由通告)消息,节点利用ra消息中的ipv6地址前缀及其他配置参数自动配置接口的ipv6地址。但在一些实际组网中,利用地址无状态自动配置方式来配置ipv6地址可能会出现问题,以下通过一个具体场景来说明。

参见图1,为一种校园网的组网示意图,spine(骨干)节点表示核心层设备,leaf(叶子)节点表示接入层设备,access(接入设备)和hub(集线器)为leaf下的转发设备。图1中采用分布式网关架构,leaf1和leaf2为两个独立的网关,leaf1和leaf2上均创建有vsi(virtualswitchinterface,虚拟交换接口)1和vsi2,vsi1和vsi2对应两个独立的vxlan(virtualextensiblelan,虚拟扩展局域网)网络。在校园网中,老师和学生往往会划分到不同的vxlan网络,比如在图1中,老师1和老师2划分到vxlan网络1,学生1和学生2划分到vxlan网络2。

但如果在图1的场景下采用地址无状态自动配置方式,由于不同vxlan网络的终端通过同一物理设备接入leaf节点,比如图1中,老师1和学生1通过同一个物理设备(access)接入leaf1,老师2和学生2通过同一个物理设备(access)接入leaf2;此时,当leaf节点针对某个vsi以组播方式下发ra消息(包含该vsi上配置的ipv6地址前缀)时,该leaf节点下的所有终端都可以收到该ra消息,如此,当leaf节点针对每个vsi下发ra消息时,该leaf节点下的每个终端都会收到这些ra消息,这样leaf节点下的一个终端可以获取到多个vsi上配置的ipv6地址地址前缀,导致该终端会生成多个ipv6地址,在通信时终端会随机选取任意一个ipv6地址进行通信,这样容易导致终端之间的地址冲突,以及容易导致终端接入vxlan网络时发生错误。



技术实现要素:

有鉴于此,本申请提供一种ipv6地址分配方法和leaf节点设备。

具体地,本申请是通过如下技术方案实现的:

本申请第一方面,提供了一种ipv6地址分配方法,所述方法应用于leaf节点,所述方法包括:

接收第一终端发送的ipv6地址请求报文;

获取本设备上接收所述ipv6地址请求报文的虚拟交换接口vsi上配置的ipv6地址前缀;

根据所述vsi上配置的ipv6地址前缀以及所述ipv6地址请求报文包含的所述第一终端的mac地址,生成第一ipv6地址;

将生成的第一ipv6地址返回给所述第一终端。

本申请第二方面,提供了一种leaf节点设备。所述leaf节点设备具有实现上述方法的功能,所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能对应的模块或单元。

一种实现方式中,所述装置可以包括:

接收单元,用于接收第一终端发送的ipv6地址请求报文;

获取单元,用于获取本设备上接收所述ipv6地址请求报文的vsi上配置的ipv6地址前缀;

地址生成单元,用于根据所述vsi上配置的ipv6地址前缀以及所述ipv6地址请求报文包含的所述第一终端的mac地址,生成第一ipv6地址;

发送单元,用于将生成的第一ipv6地址返回给所述第一终端。

另一种实现方式中,所述装置可以包括通信接口、处理器、存储器和总线,所述通信接口、所述处理器和所述存储器之间通过总线相互连接;所述处理器通过读取所述存储器中存储的逻辑指令,执行本申请第一方面所述的ipv6地址分配方法。

利用本申请的技术方案,在leaf节点上直接部署dhcpv6server功能,通过vsi上配置的ipv6地址前缀和终端的mac地址生成128位的ipv6地址,不需要集中式部署dhcpv6server,解决了集中式dhcpv6server不支持备份的缺陷,并且可以实现在多个leaf节点独立分配ipv6地址的情况下,不同的终端被分配不同的ipv6地址,避免了地址冲突。当终端发生迁移时,只要终端的mac地址和终端接入的vxlan网络在迁移前后保持不变,便能实现同一终端迁移前后被分配的ipv6地址保持不变。

附图说明

图1是现有技术中的一种校园网的组网示意图;

图2是在图1所示组网中集中式部署dhcpv6server功能的示意图;

图3是在图1所示组网中分布式部署dhcpv6server功能的示意图;

图4是本申请提供的方法流程图;

图5是本申请提供的装置功能模块框图;

图6是本申请提供的图5所示装置的硬件架构图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。

在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。

应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。

如本申请背景技术所述,在leaf节点作为网关,多个用户终端通过同一物理设备接入该leaf节点、且这多个用户终端归属不同的vxlan网络(即该leaf节点对应多个网段)的场景下,采用nd协议的地址无状态配置方式为终端配置ipv6地址,可能会造成终端地址冲突,或导致终端接入vxlan网络时发生错误。

为了避免上述情况,可以考虑采用地址有状态配置方式为终端分配ipv6地址,如dhcpv6(dynamichostconfigurationprotocolforipv6,支持ipv6的动态主机配置协议)便是一种地址有状态自动配置协议。在地址有状态配置过程中,dhcpv6服务端可以为终端分配一个完整的ipv6地址。

dhcpv6协议可以支持以下两种部署方式:

1)集中式部署dhcpv6server功能。参见图2,这种方式可以增加一台dhcpv6服务器,各leaf节点与这台dhcpv6服务器连接,由dhcpv6服务器统一为各leaf节点管辖的终端分配ipv6地址,具体的分配方式是,dhcpv6服务器上会记录终端的mac地址与其申请过的ipv6地址之间的对应关系,当dhcpv6服务器收到一终端的ipv6地址请求时,首先判断该终端的mac地址是否记录在上述对应关系中,如果是则将该对应关系中记录的ipv6地址重新分配给该终端,如果否则分配一空闲的ipv6地址给该终端。集中式部署dhcpv6server功能的好处是,可以保证同一终端迁移前后被分配到相同的ipv6地址。但这种方式的缺陷是,目前的dhcpv6服务器一般不支持备份,即不支持故障切换(failover),可靠性较低。

2)分布式部署dhcpv6server功能。参见图3,可以直接在leaf节点上部署dhcpv6server功能,由leaf节点为其管辖的终端分配ipv6地址。由于leaf节点本身便支持主备部署,因此部署在leaf节点上的dhcpv6server功能天然支持备份。但这种方式的缺陷是,各leaf节点独立地为其所管辖的终端分配ipv6地址,可能会出现接入不同leaf节点的不同终端被分配到相同的ipv6地址的情况,以及不能保证同一终端从一个leaf节点迁移到另一个leaf节点的前后能够被分配相同的ipv6地址。

针对上述两种部署方式的缺陷,本申请在分布式部署dhcpv6server功能这种部署方式的基础上提出了一种新的ipv6地址分配方法,分布式部署dhcpv6server功能可以使得dhcpv6server功能天然支持备份,而本申请提出的ipv6地址分配方法,则可以实现不同终端能够被分配到不同的ipv6地址,以及同一终端迁移前后能够被分配相同的ipv6地址。

下面对本申请提供的方法进行描述。

参考图4,图4为本申请提供的方法流程图,该方法可以应用于leaf节点,如图1中的leaf1和leaf2;leaf节点使能dhcpv6server功能。如图4所示,该流程可包括以下步骤:

步骤401:leaf节点接收第一终端发送的ipv6地址请求报文。

该ipv6地址请求报文,可以是dhcpv6solict报文或dhcpv6request报文。

步骤402:leaf节点获取本设备上接收该ipv6地址请求报文的vsi上配置的ipv6地址前缀。

本申请中,一个leaf节点上可以配置有多个vsi,每个vsi对应一个vxlan网络,vsi上配置有对应的网段,网段对应的ipv6地址前缀的长度不定,一般为64位,但在一些情况下ipv6地址前缀的长度也可以多于64位,如80位、90位等。

步骤403:leaf节点根据该vsi上配置的ipv6地址前缀以及该ipv6地址请求报文包含的该第一终端的mac(mediumaccesscontrol,媒体接入控制)地址,生成第一ipv6地址。

生成的第一ipv6地址由该ipv6地址前缀和该第一终端的mac地址唯一确定。

作为本申请的一个实施例,考虑到ipv6地址的长度为128位,mac地址的长度为48位,leaf节点可以通过以下步骤生成所述第一ipv6地址:

首先确定接收该ipv6地址请求报文的vsi上配置的ipv6地址前缀的长度。

一种情况下,如果该vsi上配置的ipv6地址前缀的长度大于80位,则由于ipv6地址前缀的长度之和与mac地址的长度之和会大于ipv6地址的长度,因此这种情况不支持利用vsi上配置的ipv6地址前缀和终端的mac地址生成终端的ipv6地址。此时leaf节点可以从预留的一组ipv6地址中,为该终端分配空闲的ipv6地址。

另一种情况下,如果该vsi上配置的ipv6地址前缀的长度等于80位,则可以对该ipv6地址前缀和该第一终端的mac地址进行拼接,得到128位的第一ipv6地址。

例如,如果某终端的mac地址为9c:06:1b:70:d7:01,某vsi上配置的ipv6地址前缀为2017::/80,那么对二者进行拼接,可以得到一个ipv6地址为:2017::9c:06:1b:70:d7:01。

再一种情况下,如果该vsi上配置的ipv6地址前缀的长度小于80位,则可以对该ipv6地址前缀和该第一终端的mac地址进行拼接和填充,得到128位的第一ipv6地址。

对该ipv6地址前缀和该第一终端的mac地址进行拼接和填充的方式有多种,这里简单列举两种:

方式一:在该第一终端的mac地址中填充入设定值,该设定值的长度等于80与该vsi上配置的ipv6地址前缀的长度的差值;然后将填充后的mac地址与该ipv6地址前缀进行拼接,得到128位的第一ipv6地址。

方式二:在该第一终端的mac地址中填充入设定值,该设定值的长度等于80与该vsi上配置的ipv6地址前缀的长度的差值;然后对填充后的mac地址的指定位进行反转,将反转后的mac地址与该ipv6地址前缀进行拼接,得到128位的第一ipv6地址。

这里通过一个具体例子,对方式二的实现过程进行说明:

假设一vsi上配置的ipv6地址前缀长度为64,那么为得到128位的ipv6地址,需要在mac地址中填充入16位的设定值。

mac地址共六个字节(48位),其前三个字节(即前24位)是由ieee的注册管理机构(ra)负责给不同厂家分配的代码,可称为组织唯一标识符;mac地址的后三个字节(即后24位)称为扩展标识符,可自定义使用。mac地址可表示如下:

ccccccugccccccccccccccccxxxxxxxxxxxxxxxxxxxxxxxx

其中,第一字节的第7位称为u/l位,表示此地址是全球管理还是本地管理;如果为0则为全球管理,为1则为本地管理。第一字节的第8位称为i/g位,表示此地址是单播地址还是组播地址;如果为0则为单播地址,为1则为组播地址。

首先,可以在mac地址的组织唯一标识符和扩展标识符之间插入特定的16位值,如0xfffe,形成64位的填充后的mac地址,如下所示:

ccccccugcccccccccccccccc1111111111111110xxxxxxxxxxxxxxxxxxxxxxxx

然后,对填充后的mac地址的第一字节的第7位进行反转,得到反转后的mac地址,如下所示:

cccccclgcccccccccccccccc1111111111111110xxxxxxxxxxxxxxxxxxxxxxxx

最后,在反转后的mac地址前面加上64位的ipv6地址前缀,即可形成完整的ipv6地址。

从步骤403可知,leaf节点为终端分配的ipv6地址,只与该终端的mac地址和该终端接入的vsi上所配置的ipv6地址前缀(即该终端接入的网段的ipv6地址前缀)有关,由于每个终端的mac地址都是唯一的,因此即使本申请采用了分布式部署dhcpv6server功能的部署方式,即各leaf节点独立地为其所管辖的终端分配ipv6地址的地址分配方式,也可以保证不同mac地址的终端一定会被分配到不同的ipv6地址,不会发生地址冲突。并且,由于终端接入的vxlan网络一般是事先配置好的,因此在终端的mac地址和终端接入的vxlan网络保持不变的前提下,即使该终端反复上下线或者从一个leaf节点迁移到了另一个leaf节点,该终端被分配的ipv6地址也不会发生变化,一直是一个固定的ipv6地址。

可选的,如果终端接入的vxlan网络发生变化,那么仍然可以按照步骤403的ipv6地址生成方式为终端分配ipv6地址。

步骤404:leaf节点将生成的第一ipv6地址返回给该第一终端。

具体的,leaf节点可以将生成的第一ipv6地址携带在dhcpv6replay报文返回给该第一终端。

在将生成的第一ipv6地址返回给该第一终端之后,leaf节点可以记录与该第一终端的mac地址对应的租约,租约中包括了分配给该第一终端的第一ipv6地址以及该第一ipv6地址的租期。作为一种实施方式,leaf节点可以维护一个与步骤402中获取到的ipv6地址前缀对应的地址池,可以在地址池中记录ipv6地址前缀、第一终端的mac地址以及根据该ipv6地址前缀和该第一终端的mac地址生成的ipv6地址三者之间的对应关系,并在此地址池中针对该ipv6地址记录对应的租约以及配置用于管理该租约生命周期的定时器,对第一ipv6地址的租期进行管理。

本申请中,leaf节点还可能会收到第二终端发送的ipv6地址续约报文,该ipv6地址续约报文中可以包含该第二终端的mac地址以及待续约的第二ipv6地址。这里的第二终端可以是原本便由此leaf节点管辖的终端,也可以是从另一个leaf节点迁移过来的终端。

收到该ipv6地址续约报文后,leaf节点可以查找本设备是否存在与该第二终端的mac地址以及待续约的第二ipv6地址匹配的租约。当存在时,leaf节点可以向该第二终端回应续约成功报文;当不存在时,leaf节点可以获取本设备上接收该ipv6地址续约报文的vsi上配置的ipv6地址前缀,根据该ipv6地址前缀以及该第二终端的mac地址,生成第三ipv6地址;判断生成的第三ipv6地址与该待续约的第二ipv6地址是否一致,如果一致,则向该第二终端回应续约成功报文;如果不一致,则向该第二终端回应续约失败报文。第二终端收到续约失败报文后,可以向leaf节点发起ipv6地址请求报文,leaf节点遵从步骤401-步骤404,重新为第二终端分配ipv6地址。

当然,在生成的第三ipv6地址与待续约第二ipv6地址不一致的情况下,leaf节点也可以将第三ipv6地址直接返回给该第二终端,无需等待第二终端再发送ipv6地址请求报文。

通过图4所示的流程可以看出,在leaf节点上直接部署dhcpv6server功能,通过vsi上配置的ipv6地址前缀和终端的mac地址生成128位的ipv6地址,不需要集中式部署dhcpv6server,解决了集中式dhcpv6server不支持备份的缺陷,并且可以实现在多个leaf节点独立分配ipv6地址的情况下,不同的终端被分配不同的ipv6地址,避免了地址冲突。当终端发生迁移时,只要终端的mac地址和终端接入的vxlan网络在迁移前后保持不变,便能实现同一终端迁移前后被分配的ipv6地址保持不变。

下面结合图1,对本申请提供的方法在校园网中的应用进行描述。

图1中,leaf1和leaf2为两个独立的网关,leaf1和leaf2上均创建有vsi1和vsi2,vsi1和vsi2对应两个独立的vxlan网络,两个vxlan网络相关隔离,相应权限也不一样。假设老师1的mac地址为20-10-94-00-00-2a,老师2的mac地址为20-10-94-00-00-2b,学生1的mac地址为00-10-94-00-00-3e,学生2的mac地址为00-10-94-00-00-3f。老师1和老师2接入vsi1对应的vxlan网络,学生1和学生2接入vsi2对应的vxlan网络,vsi1上配置的ipv6地址前缀为2017::/64,vsi2上配置的ipv6地址前缀为2016::/64。

按照本申请提供的方法,leaf1和leaf2上部署dhcpv6sever功能。

对于leaf1,可以从vsi1收到老师1的ipv6地址请求报文,从vsi2收到学生1的ipv6地址请求报文。

针对老师1,leaf1可以获取vsi1上配置的ipv6地址前缀2017::/64;然后,把老师1的mac地址20-10-94-00-00-2a扩展为64位的地址,如直接在mac地址的组织唯一标识符和扩展标识符之间插入特定的16位值0xfffe,再对扩展后的64位地址中的第7位进行反转,得到扩展并反转后的64位地址:22-10-94-ff-fe-00-00-2a。在该64位地址前面加上vsi1上配置的ipv6地址前缀,即可得到分配给老师1的ipv6地址为2017::2210:94ff:ff00:2a。

同样的,针对学生1,leaf1为其分配的ipv6地址为2016::0210:94ff:fe00:3e;

基于相同的ipv6地址分配方式,在leaf2上,为老师2和学生2分配的ipv6地址分别为2017::2210:94ff:fe00:2b和2016::0210:94ff:fe00:3f;

当老师1迁移到leaf2下时,从leaf2上续约或请求ipv6地址时,leaf2从vsi1收到相关报文后,基于vsi1上配置的ipv6地址前缀和老师1的mac地址,分配相同的地址2017::2210:94ff:fe00:2a给老师1。

以上对本申请提供的方法进行了描述。下面对本申请提供的装置进行描述。

参见图5,为本申请提供的一种leaf节点设备。如图5所示,所述leaf节点设备可以包括以下单元:

接收单元501,用于接收第一终端发送的ipv6地址请求报文。

获取单元502,用于获取本设备上接收所述ipv6地址请求报文的vsi上配置的ipv6地址前缀。

地址生成单元503,用于根据所述vsi上配置的ipv6地址前缀以及所述ipv6地址请求报文包含的所述第一终端的mac地址,生成第一ipv6地址。

发送单元504,用于将生成的第一ipv6地址返回给所述第一终端。

在其中一种实施方式中,所述地址生成单元502,用于:如果所述vsi上配置的ipv6地址前缀的长度等于80位,则直接对所述ipv6地址前缀和所述第一终端的mac地址进行拼接,得到第一ipv6地址;如果所述vsi上配置的ipv6地址前缀的长度小于80位,则对所述ipv6地址前缀和所述第一终端的mac地址进行拼接和填充,得到第一ipv6地址。

在其中一种实施方式中,在对所述ipv6地址前缀和所述第一终端的mac地址进行拼接和填充得到第一ipv6地址时,所述地址生成单元502,用于:在所述第一终端的mac地址中填充入设定值,所述设定值的长度等于80与所述ipv6地址前缀的长度的差值;将填充后的mac地址与所述ipv6地址前缀进行拼接,得到第一ipv6地址;或者,对填充后的mac地址的指定位进行反转,将反转后的mac地址与所述ipv6地址前缀进行拼接,得到第一ipv6地址。

在其中一种实施方式中,所述地址生成单元502,还用于:记录与所述第一终端的mac地址对应的租约,所述租约包括分配给所述第一终端的第一ipv6地址以及该第一ipv6地址的租期。

在其中一种实施方式中,所述接收单元501,还用于:接收第二终端发送的ipv6地址续约报文,所述ipv6地址续约报文中包含所述第二终端的mac地址以及待续约的第二ipv6地址。

所述装置还可以包括:

地址续约单元,用于查找本设备是否存在与所述第二终端的mac地址以及待续约的第二ipv6地址匹配的租约;当存在时,向所述第二终端回应续约成功报文;当不存在时,获取本设备上接收所述ipv6地址续约报文的vsi上配置的ipv6地址前缀,根据该ipv6地址前缀以及所述第二终端的mac地址,生成第三ipv6地址;判断生成的第三ipv6地址与所述待续约的第二ipv6地址是否一致,如果一致,则向所述第二终端回应续约成功报文,如果不一致,则向所述第二终端回应续约失败报文。

需要说明的是,本发明实施例中对单元的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。在本申请的实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

参见图6,图6为本申请提供的一种leaf节点设备的硬件结构示意图,包括:处理器601、存储有机器可读指令的机器可读存储介质602和总线603。处理器601通过总线603与机器可读存储介质602通信,通过读取并执行机器可读存储介质602中的机器可读指令,可执行上文描述的ipv6地址分配方法。

这里,机器可读存储介质602可以是任何电子、磁性、光学或其他物理存储装置,可以包含或存储信息,如可执行指令、数据,等等。例如,机器可读存储介质可以是:ram(radomaccessmemory,随机存取存储器)、易失性存储器、非易失性存储器、闪存、存储驱动器(如硬盘驱动器)、固态硬盘、任何类型的存储盘(如光盘、dvd等),或者类似的存储介质,或者它们的组合。

以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1