掌桥专利:专业的专利平台
掌桥专利
首页

操作接入点的存储设备的方法、定位存储在接入点的存储设备中的终端节点设备的设备上下文的方法、以及接入点

文献发布时间:2024-01-17 01:13:28


操作接入点的存储设备的方法、定位存储在接入点的存储设备中的终端节点设备的设备上下文的方法、以及接入点

技术领域

本公开总体上涉及无线网络领域,更具体地,涉及一种操作接入点存储设备的方法、一种定位存储在接入点存储设备中的终端节点设备的设备上下文的方法、以及一种接入点。

背景技术

具有路由或交换功能的网络设备往往需要使用搜索关键字在数据库中执行精确匹配搜索、查询或查找,以便在包括路由或交换网络设备的网络中定位与终端或终端节点设备相关联的关键字相关的数据条目。要定位的数据条目可以是例如数据包的目标地址,并且搜索关键字可以是标识发送该数据包的终端或终端节点设备的源地址。

在根据无线局域网(WLAN)标准操作的网络的情况下,接入点(AP)操作为向多个终端节点设备(也称为站点或客户端)提供网络接入。每个站点在经过身份验证后将其配置和状态保存在AP的存储设备(诸如系统存储器)中。其中保存有接入AP的站点的配置和状态的数据结构被称为站点上下文,或者简称为上下文。

根据一些无线网络标准(诸如以Wi-Fi HaLow命名的IEEE 802.11ah标准),AP可以提供多达8191个站点的网络接入,因此必须在AP的存储设备中保存多达8191种上下文。

根据具体站点的上下文,AP往往需要在短帧间间隔(SIFS)区间之后立即对发送数据包的站点做出响应,例如,对于Wi-Fi HaLow 802.11ah标准,该SIFS区间为160μs。例如,AP必须在SIFS区间内生成确认(ACK),以响应于从站点接收数据包。

因此,AP必须在比SIFS区间更短的时间内找到与发送站点相对应的适当上下文。发送站点可以通过包括在所接收的帧中的六个字节大小的唯一媒体接入控制(MAC)地址来标识,或者通过由AP分配的两个字节的AID来标识。

从以上可以看出,用于存储上下文所需的存储器和用于从AP的存储设备检索适当上下文所需要的快速搜索是对于向站点提供网络接入的AP所要考虑的两个限制。

就存储需求而言,存储或保存大量站点的上下文会给AP的系统内存带来沉重负担,尤其是对于许多最近开发的根据物联网(IoT)标准操作的AP。这是因为此类设备通常具有有限的系统内存的缘故。

一种替代的方法将上下文存储在外部存储器中,例如诸如随机存取存储器(RAM)。然而,访问外部存储器或片上RAM存储器是缓慢的,并且可能对搜索过程的效率产生额外的约束。

因此,真正需要一种有效地管理存储空间而使得大量站点的上下文可以存储在AP的相对较小的内部存储器中的方法、以及一种在AP的内部存储器中快速搜索所需上下文的方法。

发明内容

在本公开的第一方面中,提供了一种操作接入点(AP)的存储设备的方法,该接入点向一些终端节点设备提供网络接入,每个终端节点设备具有设备标识符和设备上下文,该存储设备具有存储在其连续部分中的上下文数组,该上下文数组包括多个上下文元素,每个上下文元素具有上下文索引并且配置为用于存储终端节点设备的设备标识符和设备上下文,所述方法包括以下步骤:

-在该接入点的存储设备中创建包括多层节点的分层数据结构,每个节点包括至少一个数据元素,每个数据元素配置为用于至少存储上下文元素的上下文索引并且用于链接到终端节点设备的设备标识符,以及

-将分层数据结构与上下文元素一起操作,以将链接到分层数据结构的数据元素的设备标识符与存储在上下文元素中的终端节点设备的相应设备上下文相关联。

本公开基于如下见解:新的存储解决方案可以允许高效地使用AP的存储设备,并且有助于快速搜索存储在AP的存储设备中的终端节点设备的设备上下文。该存储解决方案在AP的存储设备的较大连续存储区域或空间中使用简单的数据组(即上下文数组),用于存储接入AP的终端节点设备的设备上下文。

该存储解决方案还依赖于分层数据结构的存储,该分层数据结构利用布置在多层中的节点并且包括占据较小存储区域(不必须是连续的)的数据元素。属于或链接到分层数据结构的节点的每个数据元素存储上下文元素的上下文索引,该上下文元素中存储有终端节点设备的设备上下文。数据元素还链接到终端节点设备的设备标识符。

因此,终端节点设备的设备标识符通过分层数据结构的数据元素与相应的设备上下文相关联,该终端节点设备的标识符通常用作定位存储终端节点设备的设备上下文的上下文元素的搜索关键字。因此,可以通过设备标识符搜索或定位包含设备上下文的上下文元素。

分层数据结构和上下文数组一起作用而将链接到分层数据结构的数据元素的设备标识符与存储在上下文元素中的终端节点设备的相应设备上下文相关联。

数据元素与终端节点设备的设备标识符之间的链接可以简单地通过将设备标识符或设备标识符的转换版本(诸如散列的设备标识符)存储在数据元素本身中来实现。因此,数据元素存储(上下文索引、设备标识符)对,这允许通过找到具有与设备标识符配对的上下文索引的数据元素来有效定位包含具有设备标识符的终端节点设备上下文的上下文元素。

另一方面,当存储空间确实有限时,数据元素仅存储上下文索引,并通过存储在数据元素中的上下文索引链接到设备标识符。这是因为上下文索引指向也存储设备标识符的相对应的上下文元素。这种方法可以在存储利用方面具有更佳的效率。

在本公开的一个实施例中,分层数据结构的根节点包括散列表,散列表的大小根据终端节点设备的最大数量确定,具有与散列的设备标识符相等的索引的散列表元素存储子树的位置,所述子树包含有与设备标识符链接的数据元素。

附加地,将散列表作为分层数据结构的顶层或根节点使得能够以快速的方式执行数据元素的插入和搜索操作。

例如,“链”仅表示为一个节点。本领域技术人员可以想到的是,链也可以是深度大于1的树结构,更具体地说是自平衡树,更具体来说是自平衡树(其中,节点包含数据元素的有序数组)。

可以选择将散列表的元素尽可能均匀地分布到散列表的“槽”的散列函数,使得散列到相同索引的设备标识符之间的冲突保持最小。散列表存储(包含“冲突”的数据元素的)分层数据结构的根节点的位置,该“冲突”的数据元素即为与散列到同一值的设备标识符相关联的数据元素。

在本公开的一个实施例中,根节点的每个子节点的子树是自平衡树。

本领域技术人员可以想到的是,分层数据结构可以使用许多已知的数据结构来实现。不同的数据结构在存储器使用和搜索时间方面各有优缺点,可以根据不同的应用场景进行选择。

在本公开的一个具体实施例中,可以存在多于一种类型的用于子节点的子树的数据结构。数据结构的确切类型是基于存储在该节点的子树中的数据元素的数量来确定的。为了使得可以进行以后的数据元素搜索,将所使用的数据结构的类型存储在子节点中。

一个具体的示例是,将根节点的每个子节点的子树组织为自平衡树。自平衡树有多种实施方式。在组织将终端节点设备的设备标识符与存储终端节点设备的上下文的上下文元素相链接的数据元素时,自平衡树具有包括一组数据元素连同若干指针的节点。可以基于设备标识符或压缩的设备标识符对单个节点中的数据元素进行排序。在排序后的节点中,指向子节点的指针放置为使得子节点的数据元素维持该顺序,即,子节点的每个数据元素的设备标识符大于在指向节点中的子节点的指示符之前找到的设备标识符,并且少于在指向节点中的子节点的指针之后找到的设备标识符。

在本公开的一个实施例中,根节点的后代数据元素都是根节点的子节点。

在这样的实施方式中,分层数据结构具有两层深度,从而避免实施特定的自平衡树数据结构和额外的遍历、删除和添加算法。这使得经由设备标识符来搜索数据元素以便简单而快速地定位包括具有该设备标识符的终端节点设备的上下文的上下文元素。

在本公开的另一个实施例中,每个节点中的数据元素按链接到该数据元素的设备标识符或转换后的设备标识符的值排序。

这还促进了对链接到为搜索关键字的设备标识符的数据元素的快速搜索,从而允许在更短的时间段内定位感兴趣的上下文元素。

在本公开的一个实施例中,创建步骤包括以下步骤:

-从新连接到接入点的终端节点设备的设备标识符导出索引,该索引指向分层数据结构的子树,该子树包括一些较低层的数据元素;

-将数据元素添加到分层数据结构的子树,并将上下文数组的可用上下文元素的上下文索引存储在所添加的数据元素中,以及

-将新连接的终端节点设备的设备标识符和设备上下文存储在可用上下文元素中。

在实际应用中,上下文数组被分配在AP的存储设备中,并且当终端节点设备连接到AP或从AP断开连接时,设备上下文被填充到上下文数组的上下文元素中或从该上下文元素中移除。

当终端节点设备第一次接入AP时,AP对终端节点设备进行认证,以验证其为可以连接到AP的受支持的终端节点设备。在认证之后,创建新的数据元素,用于将上下文数组中的可用上下文元素的上下文索引与终端节点设备的设备标识符相关联。将该数据元素添加到当前的分层数据结构中。

在使用散列表作为分层数据结构的根节点的情况下,将新的数据元素添加到表示散列表的冲突解决方案的子树的节点,并且将子树链接到散列表。若该散列索引上并没有冲突,则创建新节点并将其链接到散列表。进行散列的目的是减少分层数据结构的深度,由此减少找到给定设备标示符的上下文所需的时间。

附加地,终端节点设备的包括其配置和状态的设备上下文存储在上下文数组的对应上下文元素中。本领域技术人员可以想到,分层数据结构也被更新以维持其完整性。

这些步骤直观易实现,这也有助于在以后阶段搜索添加的设备上下文。

此外,在终端节点设备与AP断开连接的情况下,本公开的方法首先在分层数据结构中找到链接到新断开连接的设备的设备标识符的数据元素。此后,从分层数据结构中删除数据元素,并且释放存储有终端节点设备的上下文的上下文数组的上下文元素的存储空间。

类似于将数据元素添加到分层数据结构并将设备上下文存储到上下文元素的上述实施例,这里将断开连接的终端节点设备的数据元素从分层数据结构中删除,并且释放上下文数组中的相对应的上下文元素。这允许有限的存储空间被再利用,从而允许AP连接新的终端节点设备,并且所允许连接的最大数量保持不变,这有效地提高了存储设备的使用效率。

在本公开的一个实施例中,操作步骤包括:

将链接到数据元素的设备标识符或转换后的设备标识符存储在该数据元素中;或

将数据元素与存储在上下文元素中的设备标识符相关联,该数据元素存储与该上下文元素相同的上下文索引。

如上所讨论的,通过使用数据元素,将终端节点的设备标识符与存储终端节点设备的对应上下文的上下文元素相关联。这以一种通过将终端节点设备的设备标识符或是转换或压缩的设备标识符存储在存储有上下文元素的上下文索引的数据元素中的方式来实现。这使得在搜索终端节点设备的上下文方面可以具有高效率。当转换或压缩的设备标识符存储在数据元素中时,其进一步有助于节省AP的存储设备中的存储空间。

另一方面,为了进一步减少数据元素所需的存储,每个数据元素只能存储用于存储终端节点设备的上下文元素的上下文索引。该关联是通过使用存储在上下文元素中的设备标识符来实现的。这种方法适用于在AP中具有非常有限的存储空间但在搜索时间方面要求不那么严格的应用。

在本公开的一个实施例中,该方法还包括以下步骤:

在存储设备中创建包括多个指示符元素的指示符数组,每个指示符元素配置为用于存储与相应的上下文元素相关联的上下文占用信息。

作为一个高效存储器使用的示例,本公开可以利用诸如位图之类的位数组来指示上下文数组的某个上下文元素是否被采用,即是否具有保存在其中的设备上下文。位数组对于所有上下文是压缩程度最高的占用指示符,因此可以在短时间内读取。其用于快速找到新的未被占用的上下文元素。这非常简单地实现并且采用最小的存储空间。

在本公开的一个具体实施例中,其中分层数据结构的节点被实现为自平衡树,该自平衡树的节点被存储在接入点的存储设备中作为块状数组,该块状数组被划分为多层区块,每层的区块包括多个连续的区块部分,较高层的区块中的区块部分的数量是较低层的区块的区块部分的数量的倍数,所有层的区块中被占用的区块部分的总数量等于终端节点设备的数量。

在AP的应用场景中,无论何时终端节点设备对自身进行认证或取消认证,分层数据结构都会在AP的整个生命周期内动态变化。因此,其被存储在具有动态管理的内存区块中。这里,区块部分是为数据元素保留的存储空间,并且区块是用于分层数据结构的节点的存储空间。

对于只有恒定大小的节点的实施方式,具有固定大小的节点和由固定大小的区块组成的简单内存池的自平衡树就足够了。对于节点被表示为具有可变大小的连续数组的实施方式,需要更复杂的内存管理池,其中存在选择用于分配的可变内存区块或从几种大小的区块中选择一种的选项,以这样的方式设计以优化数据结构的内存使用。

具体实施为块状数组的内存池用作本公开的分层数据结构的动态内存存储器。考虑到一定数量的散列冲突(即一定大小的节点的)概率,可以使用多层结构的块状数组以具有不同大小的区块来有效使用内存。可以在具有不同大小的不同内存空间中限定块状数组的不同区块,这也在内存使用方面提供了很大的灵活性。

在本公开的一个实施例中,该方法还包括:在存储设备中创建区块设置(blockset),该区块设置配置为用于指示某一层的区块的使用状态,该方法还包括:响应于对所请求层的区块的请求而分配由区块设置指示为空闲的所请求层的区块的步骤。

该区块设置用于以更有效的方式管理存储设备中的存储空间。每个层的区块都具有用于指示哪些区块是空闲的区块设置。

当应用发出对内存区块的请求时,它首先确定将满足请求的最小区块的大小,并检查相对应的区块设置。如果区块设置包含空闲区块,则该区块被标记为使用并且分配过程完成。

在本公开的另一个实施例中,该方法还包括:在存储设备中创建区块设置,该区块设置配置为用于指示某一层的区块的使用状态,所述方法还包括:响应于对所请求层的区块的请求以及指示不存在所请求层的空闲区块的区块设置,将较高层的区块划分为所请求层的区块并分配所请求层区块的步骤,或者将较低层的多个区块合并为所请求层的区块并分配所请求层的区块的步骤。

在实践中,划分步骤包括:响应于对所请求大小的区块的请求,迭代地将较高层的区块划分成较低层的区块直到所请求的大小与该层上的区块的大小相比更大或相等,并且分配具有与所请求的大小相比更大或相等的大小的最低层的区块的步骤。

另一方面,如果使所请求的区块大小可用的方法是通过使给定层的区块解除分配的步骤进行的,则解除分配可以导致将该层的多个“伙伴”区块合并到更高层的区块中并相应地更新区块设置。

当区块设置指示没有空闲区块时,内存池尝试通过划分具有较大尺寸的空闲区块或通过合并具有较小尺寸的空闲区块来自动创建一个空闲区块。区块的合并不是在分配时发生的,而是在解除分配时立即地、递归地和自动地发生的。

在本公开的一个实施例中,根据终端节点设备的最大数量、定位设备上下文的时间限制和内存占用来确定最高层的区块的数量、每层上的区块的大小、以及散列表的大小。

具有数个区块大小的内存池的一个示例是被称为伙伴内存分配的分层树内存池,其中每个区块被分为两个或多个子区块,并且区块的大小决定其在分层中的层级。

每层的额外占用位图与每层上的空闲区块的链表一起使用,以实现完整的内存管理。根据接入到接入点的网络设备的最大数量和散列数组的大小,在编译时间之前确定每层上的区块的大小和最高层上的区块的数量。如果使用得当,其可以在几乎没有系统开销的情况下压缩内存。其在分配和解除分配方面的性能只有在网络设备的授权和取消授权时才重要(不是时间要求严格的方法)。

最高层的区块的数量表示:最坏的情况,其中最高层的区块的容量没有被充分利用。详细计算表明,即使在此最坏的情况下,块状数组也使用相对较小的存储空间,这表明块状数组对于系统内存有限的AP尤其有利。

在本公开的第二方面,提供了一种定位存储在接入点的存储设备中的终端节点设备的设备上下文的方法,该接入点向一些终端节点设备提供网络接入,每个终端节点设备具有设备标识符和设备上下文,该存储设备具有存储在其连续部分中的上下文数组,该上下文数组包括多个上下文元素,每个上下文元素具有上下文索引并且配置为用于存储终端节点设备的设备标识符和设备上下文,所述方法包括以下步骤:

-通过使用终端节点设备的设备标识符或转换后的设备标识符来标识存储在存储设备中的分层数据结构中的节点,该分层数据结构包括多层节点,每个节点包括至少一个数据元素,每个数据元素配置为用于至少存储上下文元素的上下文索引以及用于链接到终端节点设备的设备标识符;

-遍历属于所标识的节点的子树的数据元素,以确定包括上下文元素的上下文索引的数据元素,其中所述上下文元素包括该终端节点设备的设备标识符,以及

-定位存储在包括该终端节点设备的设备标识符的上下文元素中的设备上下文。

基于本公开的第一方面中公开的数据结构,这种定位终端节点设备的设备上下文的方法利用终端节点设备的设备标识符来标识具有将设备标识符链接到存储终端节点设备的上下文的上下文元素的数据元素的节点。

具体地,设备标识符或转换后的设备标识符(诸如其散列版本)用于标识分层数据结构中的节点。所标识的节点可以包含数据元素,该数据元素包括节点设备的设备标识符,或者所标识的节点可以指向在较低层上的节点,该节点可以包含上述数据元素。因此,该方法然后通过将节点设备的设备标识符与存储在所标识的节点的数据元素中的设备标识符进行比较来遍历分层数据结构,该分层数据结构可选地是排序的。所述遍历包括:树遍历、节点遍历、和设备标识符或压缩设备标识符的比较。

所标识的数据元素可以连接到较低层的数据元素。然后,该方法遍历较低层的所有必要数据元素,以定位链接到终端节点设备的设备标识符的数据元素。该数据元素包括:存储要定位的设备上下文的上下文元素的上下文索引。

该方法以一种简单易实现的方式定位设备上下文。由于所使用的数据结构,该方法可以快速搜索。遍历为根节点的子节点的数据结构的方法取决于该结构的类型。在详细描述中针对不同的实施例更详细地描述该方法。

在本公开的一个实施例中,使用散列函数从设备标识符生成终端节点设备的转换后的设备标识符,该散列函数与根节点的散列函数无关并被具体设计为不索引到散列表、而是使散列冲突几乎不可能发生,从而用压缩的设备标识符唯一地表示设备标识符。

在本公开的一个实施例中,遍历步骤包括:将终端节点设备的设备标识符与链接到数据元素的设备标识符进行比较,链接到数据元素的设备标识符是存储在数据元素中的设备标识符、存储在数据元素中的转换后的设备标识符、和外部可用的设备标识符之一。

如上所描述的,设备标识符或其转换后的版本也可以存储在数据元素中。在这种情况下,将设备标识符与存储在数据元素中的设备标识符进行比较,这提供了遍历连接到所标识的数据元素的数据元素最有效的方式。

另一方面,设备标识符可以从由存储在数据元素中的上下文索引所指向的上下文元素中获得。本文所使用的“外部”是指在数据元素的外部。

在本公开的一个实施例中,其中,所述终端节点设备的设备标识符是所述端节点设备的媒体接入控制MAC地址。

MAC地址唯一地标识终端节点设备,并且总是可以使用。因此,其易于用作搜索的关键字。

在本公开的第三方面中,提供了一种向一些终端节点设备提供网络接入的接入设备,每个终端节点设备具有设备标识符和设备上下文,该接入设备包括:

存储设备,所述存储设备布置为用于在其连续部分中存储上下文数组,所述上下文数组包括多个上下文元素,每个上下文元素具有上下文索引并且配置为用于存储终端节点设备的设备标识符和设备上下文;

所述存储设备还布置为用于存储包括多层节点的分层数据结构,每个节点包括至少一个数据元素,每个数据元素配置为用于至少存储上下文元素的上下文索引以及用于链接到终端节点设备的设备标识符;

其中,分层数据结构和上下文元素配置为一起操作,以将链接到分层数据结构的数据元素的设备标识符与存储在上下文元素中的终端节点设备的相应设备上下文相关联。

接入点操作如本公开的第一方面中所限定的分层数据结构和上下文元素。因为分层数据结构有助于更有效地使用存储空间并避免浪费内存空间,其对于具有有限内存的接入点来说尤其有利。

在本公开的一个实施例中,该接入点还包括:

-标识设备,该标识设备布置为用于通过使用终端节点设备的设备标识符或转换后的设备标识符来标识分层数据结构中的节点;

-遍历设备,该遍历设备布置为用于遍历属于所标识的节点的子树的数据元素,以确定包括上下文元素的上下文索引的数据元素,其中所述上下文元素包括该终端节点设备的设备标识符,以及

-定位设备,该定位设备布置为用于定位存储在包括该终端节点设备的设备标识符的上下文元素中的设备上下文。

标识设备、遍历设备和定位设备中的每一者可以是接入点的处理器或处理单元的功能模块,其一起执行用于搜索终端节点设备的设备上下文的步骤。

在本公开的一个实施例中,存储设备还布置为用于存储包括多个指示符元素的指示符数组,每个指示符元素配置为用于存储与相应的上下文元素相关联的上下文占用信息。

在本公开的第四方面中,提供了一种计算机程序产品,该计算机程序产品包括:存储指令的计算机可读存储介质,这些指令在至少一个处理器上执行时使该至少一个处理器执行根据本公开的第一方面的方法。

在本公开的第五方面中,提供了一种计算机程序产品,该计算机程序产品包括:存储指令的计算机可读存储介质,这些指令在至少一个处理器上执行时使该至少一个处理器执行根据本公开第二方面的方法。

通过参照附图从以下描述中将最佳地理解本公开的上述和其他特征和优点。在附图中,相同的附图标记指示相同的部件或执行相同或可比较的功能或操作的部件。

附图说明

图1以示意图示出了包括根据本公开操作的接入点(AP)的网络。

图2示出了根据本公开的分层数据结构的示意图。

图3a至图3c以示意图示出了根据本公开设计和操作的数据元素。

图4以流程图类型的图示出了根据本公开的方法的示例性步骤,该方法用于将新上下文存储到上下文数组并将新数据元素添加到分层数据结构。

图5以流程图类型的图示出了根据本公开的实施例的移除用于新从接入点断开的节点设备的数据元素的方法的示例性步骤。

图6以示意图示出了根据本公开设计和操作的数据结构的总体视图。

图7示意性地示出了在本公开中使用的伙伴分配器。

图8以流程图类型的图示意性地示出了根据本公开的实施例的定位上下文的方法的示例性步骤。

图9以框图示意性地示出了根据本公开的AP。

具体实施方式

现在将参照附图更详细地描述本公开所设想的实施例。所公开的主题不应被解释为仅限于本文所阐述的实施例。相反,所图示的实施例是通过示例的方式提供的,以向本领域技术人员传达本主题的范围。

在以下描述中,术语“终端节点设备”、“节点设备”、“站点”、“客户端”或“终端设备”可互换地使用。

尽管参照接入点和终端节点设备进行了描述,但本公开能够应用于其他网络配置。

响应于从节点设备接收到的数据包,接入点(AP)需要使用诸如节点设备的媒体接入控制(MAC)地址或AID之类的标识符作为密钥而在限定的响应时限内搜索存储在AP的存储设备中并且与节点设备相关的上下文。

本公开提出了一种数据结构,该数据结构有效地利用AP的存储设备并且有助于快速搜索保存在AP的存储设备中的所需的节点设备上下文。

图1以示意图示出了包括根据本公开操作的接入点(AP)11的网络10。AP 11使用有线连接17连接到例如局域网(LAN)20,并从而接入以太网21。

AP 11通过无线连接22向网络10中所包括的多个节点设备12、13、14、15、16提供网络访问。AP 11包括存储器或储存库设备18并通过内部数据通信和控制总线19与之交互并对其进行控制。

AP 11的存储设备18配置为用于存储连接到AP 11的节点设备的上下文等。上下文的数量可以达到AP 11所支持的可连接节点设备的数量。

接入AP 11的终端节点设备12-16的设备上下文可以作为上下文数组存储在AP 11的存储设备18中。上下文数组占据存储设备18的连续部分,并且包括多个上下文元素(未示出),每个上下文元素具有上下文索引并且包括接入AP 11的终端节点设备的设备上下文和设备标识符。

图2以示意图示出了分层数据结构200,该分层数据结构可以在本公开中用于通过使用设备标识符来促进对上下文的快速搜索。分层数据结构200可以包括多层节点,每个节点包括至少一个数据元素,每个数据元素用于将链接到该数据元素的设备标识符与存储在上下文元素中的终端节点设备的相应设备上下文相关联。

数据结构200可以包括根节点201,如在线202上方的最顶层所指示的。根节点201可以是例如散列表,包括多个数据元素2011,每个数据元素都是散列表元素。

散列表的元素中的非零值指向存储在分层数据结构的子树中的一组数据元素。从下面的描述中可以看出,可以在子树中找到数据元素,所述数据元素表示节点设备的诸如MAC地址的特定设备标识符与对应于具有该MAC地址的节点设备的上下文之间的关联。

在散列表布置为分层数据结构的根节点的情况下,除了根节点之外的每个节点均可以仅仅是数据元素的连续数组。这允许分层数据结构具有两个深度,这将使对用于定位节点设备的上下文的数据元素的搜索更快。

如图2所示,数据结构200的较低层包括:弯折虚线203上方的四个节点204a-204d,其中每个节点包括一个或更多个数据元素。每个数据元素配置为用于至少存储上下文元素的上下文索引。可以设想到的是,根据需要,较低层可以包括任意数量的节点。

节点204c链接到另一较低层的节点205a-205c,其中每个节点包括两个数据元素。

分层数据结构可以存储:用作根节点的子节点的子树的结构类型、和每个节点的大小。这种配置使其能够适于包括各种数据结构及其组合。

分层数据结构可以布置为包括:作为根节点的子节点的自平衡树。每个自平衡树表示散列冲突解决方案。自平衡树的一个节点是一个连续数组,并且可以另外指向其他节点。

还可以例如基于存储在数据元素中的设备标识符或转换后的设备标识符对非根节点的后代数据元素进行排序。这将进一步促进对所需数据元素的快速搜索。

除了散列表元素之外,分层数据结构的每个数据元素还被链接到节点设备的设备标识符,节点设备的上下文存储在上下文数组的上下文元素中,并且上下文元素的上下文索引存储在数据元素中。由此,节点设备的设备标识符通过数据元素与存储在AP的存储设备中的该同一节点设备的对应上下文相关联。

可以使用几种方式将数据元素链接到节点设备的设备标识符。图3a至图3c示意性地示出了数据元素的示例以及数据元素与设备标识符的链接。

所有三个数据元素301-303都存储了存储有节点设备的设备标识符和设备上下文的上下文元素的上下文索引,该上下文索引占用2字节的存储空间。

在一个具体的实施方式中,节点中第一数据元素的上下文索引的部分空间用于存储该节点中的数据元素的数量。在一个示例中,节点的大小最多等于32个数据元素(64字节),为此目的保留了5个位。

数据元素301还存储有:节点设备的设备标识符(诸如MAC地址),其上下文存储在由存储于该数据元素301中的上下文索引所指向的上下文元素中。MAC地址需要六个字节的存储空间。将上下文索引和MAC地址存储在相同的数据元素中,从而将设备标识符直接与上下文元素(其存储由设备标识符标识的节点设备的上下文)相关联。此解决方案在32位微控制器上每读取一个数据元素需要进行两次加载操作。

当使用设备标识符来搜索节点设备的上下文时,将用于搜索的MAC地址与数据元素中的MAC地址进行比较,从而找到具有(存储有节点设备的上下文的)上下文元素的上下文索引的数据元素,从而定位所需的上下文。

对于数据元素302,通过使用上下文元素中的设备标识符来实现数据元素302与设备标识符的链接。具体地,读取数据元素中的上下文索引,以从该上下文索引所指向的上下文元素获得MAC地址。然后,将搜索到的MAC地址与来自上下文元素的MAC地址进行比较。该解决方案对每个数据元素有三次从内存中加载的操作,但因为数据元素中不需要冗余MAC地址而使内存占用空间较低。因此,在存储空间有限的情况下,数据元素302是有利的。

数据元素303包括上下文索引和转换后的设备标识符,诸如MAC地址的散列。为了找到指向由MAC地址标识的终端节点的上下文的确切数据元素,将搜索到的MAC地址的散列与存储在数据元素303中的散列进行比较。散列函数可以选择为具有良好的散列质量和快速性。此解决方案对每个数据元素只有一次在内存中的加载操作。

使用四个字节而不是用于数据元素302的两个字节或用于数据元素301的八个字节来存储数据元素303。

此外,还可以在AP的存储设备中创建指示符数组。指示符数组包括多个指示符元素,每个指示符元素配置为用于存储与相应的上下文元素相关联的上下文占用信息。无论是对于内存消耗还是对于快速加载时间而言,对于指示符数组的好选择都是简单的位图,其中一位内存表示一个指示符元素。

图4以流程图类型的图示出了根据本公开的方法400的示例性步骤,该方法用于将新上下文存储到上下文数组并将新数据元素添加到分层数据结构。

当方法400开始401并且节点设备连接到AP并由AP认证时,其在步骤402检查与标识节点设备的给定设备标识符相关的上下文是否已经存在。如果该上下文在上下文数组处已经可用,则不能添加用于相同设备标识符的新上下文,该方法进行到步骤499并结束。

如果在步骤402确定节点设备的上下文在上下文数组中不可用,则方法400进行到步骤403,并检查是否存在与设备标识符的散列相关联的节点。如果不存在这样的节点,则方法400进行到步骤404以创建新节点并将其位置保存在散列表中。

具体地,对设备标识符进行散列以生成散列表的索引。如果该索引上的散列表元素的值等于0,则需要创建新节点。这需要分配最小的区块。

然后,方法400进行到步骤405。如果与设备标识符的散列相关联的节点已经存在,则方法400直接进行到步骤405。

在步骤405,方法400创建新的数据元素,该新的数据元素包含与给定设备标识符相关联或链接到给定设备标识符的上下文索引,该给定设备标识符也可以存储在数据元素中。

接下来,在步骤406,将新的数据元素添加到节点的子树中。在内存池的伙伴内存分配器实施方式中,这对应于将新的数据元素添加到由节点数据占据的区块中。如果该区块没有空的空间用于新的数据元素,则分配更高层的新区块,将来自旧区块的数据复制到新区块,并且在添加新的数据元素之前对旧区块解除分配。

在基于设备标识符或压缩的设备标识符的值对节点中的数据元素进行排序的具体实施方式中,插入新的数据元素以维持数据元素的顺序。

此外,由给定设备标识符标识的节点设备的设备上下文被保存到由上下文索引指向的上下文元素。因此,添加的数据元素将新连接到AP的节点设备的给定设备标识符与存储在上下文数组中的节点设备的上下文相关联。

方法400还可以包括:更新补充数据结构的步骤407,该补充数据结构诸如为用于指示与存储上下文的相应上下文元素相关联的上下文占用的指示符。

图5以流程图类型的图示出了根据本公开的实施例的移除链接到新从接入点断开的节点设备的数据元素的方法500的示例性步骤。

首先,在步骤501,对存储在上下文元素中的节点设备的设备标识符进行散列以生成索引。在步骤502,使用生成的索引来读取散列表中的节点位置,并且如果节点位置具有非零值,则接入分层数据结构的相关联的节点。在步骤503,遍历节点的子树以找到包含与所搜索的设备标识符相关联或链接到所搜索的设备标识符的上下文索引的数据元素。如果没有找到与所搜索的设备标识符相关联的数据元素,则删除就会不成功地结束。步骤501、502和503类似于稍后在文件中解释的搜索方法步骤801、802和803。在步骤504,从节点中移除与设备标识符相关联的数据元素。

方法500还可以可选地包括:步骤505至步骤507。在步骤505,重构子树,并且调整节点的大小。具体而言,如果该节点现在为空,则移除该节点。如果该节点可以适合较小的内存区块,则分配新的较小内存区块,将节点复制到此新区块中并对旧内存区块解除分配。如果需要,可以重新分配由节点占用的内存区块。在步骤506,为所述设备标识符保留的上下文元素设置为未被占用,并且可以初始化为全零。在步骤507,占用指示符可以设置为空闲,指示上下文元素现在是空闲的,并且相应地更新其他补充数据结构。

图6以示意图示出根据本公开设计和操作的数据结构的总体视图600。在该示例中,分层数据结构的根节点是散列表,并且较低层节点所包括的数据元素被存储在作为内存池的一部分的AP的存储设备中。

上下文数组601包括多个上下文元素611,并且占用AP的存储设备或内存中的连续空间,该连续空间是存储支持接入AP的所有节点设备的设备上下文和设备标识符所需的。每个上下文元素611由上下文索引标识,并且存储诸如设备标识符的设备信息。

散列表602与包括多个区块部分(其中图6示出了一个示例区块部分603)的连续阵列一起形成根据本公开的分层数据结构。

散列表602是分层数据结构的根节点或最顶层。其可以被考虑为是常规分层数据结构的一个额外层。散列表存储包含:“冲突”的数据元素(即与散列到同一值的设备标识符相关联的数据元素)的分层数据结构的根节点的位置。

散列冲突通过单独的链来解决,散列表指向“链”结构的位置。在本示例中,“链”仅表示为一个节点。本领域技术人员可以想到的是,链也可以是深度大于1的树结构,更具体地是自平衡树,更具体地是节点包含数据元素的有序数组的自平衡树。

在一个具体示例中,AP支持最多512个节点设备,并且散列函数用于将每个节点设备的设备标识符转换为散列表的索引。在此示例中,用于分层数据结构的连续数组的存储空间实现为具有伙伴内存分配的内存池。内存池划分为最高层的区块的阵列。在下一个较低层中,每个区块进一步分为整数个区块。在区块未被填充(fill)的情况下,所有区块都可以包含数据元素和补齐填充(padding)。

也就是说,块状数组包括多层区块,每层的区块包括多个连续的区块部分,较高层的区块中的区块部分的数量是较低层的区块中的区块部分的数量的倍数。

图7示意性地示出了本公开中使用的伙伴分配器700。在图7中示出0层的区块701、1层的区块702和多个2层的区块703。

根据本公开,根据接入到接入点的终端节点设备的最大数量、定位设备上下文的时间限制和内存占用来确定最高层的区块的数量和每层上的区块的大小以及散列表的大小。

选择散列表的大小和内存池的配置会导致具体的内存和搜索时间的占用。确切的选择取决于具体的实施方式。有多种配置可供选择,并且整个数据结构被设计为是稳健且模块化的。

对于每层上给定大小的区块,基于区块补齐填充最大的最坏情况来确定最高层上的区块的数量。一种实施方式使用如图3b所示的302类型的数据元素、散列表根节点之外仅一层节点、每层都有相较于较低层四倍大的区块(可以表示为四叉树森林)的伙伴内存分配器、以及每个节点中的数据元素的有序数组。其在诸如700的内存池中具有三层区块,大小为4字节的层2的区块703(最多适合2个数据元素)、大小为16字节的层1的区块702(最多适合8个数据元素)和大小为64字节的层0的区块701(最多适合32个数据元素)。在最坏的情况下,9个元素适合在32元素区块中,对于512个站点而言,这导致在最高层中需要57个或更少的区块。这四舍五入到60个区块。散列表的大小选择为尽可能小的值,以避免在96MHz处理器上增加超过3μs的搜索时间。这将导致60*64B+128*16B=5.75KB的内存。

另一种实施方式使用如图3a所示的301类型的数据元素、散列表根节点之外仅一层节点、每层的区块都是较低层的四倍大(可以表示为四叉树森林)的伙伴内存分配器、以及每个节点中的数据元素的无序数组。其在诸如700的内存池中具有三层区块,大小为8字节的层2的区块703(最多适合1个数据元素)、大小为32字节的层1的区块702(最多适合4个数据元素)和大小为128字节的层0的区块701(最多适合16个数据元素)。在最坏的情况下,5个元素适合在16元素的区块中,对于512个站点而言,这导致最高层需要103个或更少的区块。因为最坏的情况极不可能发生,这可四舍五入到100个区块。散列表的大小为512。这将导致100*128B+512*16B=20.5KB的内存。

附加地,内存池保持跟踪:其缓冲区空间已如何使用区块设置数据结构的数组进行分区的。针对所述池支持的每个分区层或针对每个区块大小,都存在一个区块设置。区块设置使用每层上的空闲区块的链表和具有每个区块的分配状态的位图来保持跟踪具有与其关联大小的所有空闲区块。

以上描述了本公开所使用的总体数据结构。在下文中,将描述存储有本公开的数据结构的存储设备的操作。

图8以流程图类型的图示意性地示出了根据本公开的实施例的通过使用节点设备的设备标识符来定位节点设备的上下文的方法800的示例性步骤。

在步骤801,AP的处理设备或处理器将转换函数应用于终端节点设备的设备标识符以生成索引。转换函数可以是:散列函数(诸如乘法散列函数),其实现简单、快速并且非常适合于本公开。

由于MAC地址的前三个字节是组织唯一标识符(OUI),因此来自同一受让人的站点通常具有相同的3个最高有效字节,并且由于执行散列的处理器是32位处理器,因此可以使用将4个最低有效字节的MAC地址作为输入的散列函数。这种4字节的输入选择提供了较佳的散列输入异质性,并因此减少了冲突。

在步骤802,处理器读取由生成的索引进行索引的散列表元素中的节点位置。如果该节点位置具有非零值,则接入该节点。

该节点包括:分层数据结构中的一个或更多个数据元素,每个数据元素存储设备标识符,该设备标识符散列到在步骤801生成的索引。

在步骤803,处理器遍历节点的子树以找到包含与用作搜索关键字的设备标识符相关联的上下文索引的数据元素。

对于已知的数据结构,遍历、添加和删除是本领域技术人员已知的。

遍历算法由树遍历、节点遍历和数据元素遍历的组合构成。其取决于具体的实施方式,即子树结构的类型、节点本身的结构和所使用的数据元素的类型。

本领域技术人员可以想到的是,具体的自平衡树具有定义明确的遍历算法。一种这样的结构是2-3平衡树,其节点包括最多2个有序的数据元素和3个指向子节点的指针。用于存储2-3平衡树的节点的区块具有恒定的大小,从而消除了对内存池的需要。这种实施方式的变体的缺点是搜索、添加和删除算法的额外复杂性以及固件验证的额外复杂性。

在一种具有链表的具体实施方式中,节点是按顺序遍历的。

在一种从散列表指向的节点没有后代的具体实施方式中,避免了自平衡树的复杂性。在此,树遍历算法是不存在的。

实施为数据元素的无序数组的节点是线性遍历的。可以使用二进制搜索来遍历实施为有序数组的节点。

在一种使用类型301的数据元素的具体实施方式中,一个元素的遍历包括:从内存加载8个字节(2个字)的数据元素以及两个32位的MAC地址比较。在使用类型302的数据元素的另一个具体实施方式中,一个元素的遍历包括:从内存一次加载2个字节的数据元素或2个数据元素(1个字),加载存储在所读取的上下文元素中的MAC地址(从内存加载2次)以及两个32位的MAC地址比较。第一匹配MAC地址成功地结束该遍历。

如果到达子树的末尾但没有找到匹配项,则搜索将失败地停止。

然后在步骤804,定位由上下文索引所指向的上下文元素中的设备上下文。这成功地完成了定位或搜索操作。

图9示意性地示出了根据本公开的网络接入设备900,诸如操作其存储设备并定位存储在其中的上下文的AP。

网络接入设备900操作通信接口91,诸如网络适配器或收发器、Tx/Rx、布置用于以无线方式92以及可选地以有线方式与另一终端节点设备进行消息或数据包的交换的模块。用于交换数据的网络协议ZigBee

网络接入设备900还包括:至少一个微处理器、μP或控制器93、以及至少一个数据储存库或存储器或内存94,该至少一个数据储存库或存储器或内存用于存储例如连接到网络接入设备900的终端节点设备的设备上下文以及诸如标识符、ID、媒体接入控制、MAC、地址的与终端节点设备相关的信息。代替数据储存库94,可以提供能够由该至少一个处理器或控制器93访问的单独的内存或存储器。

存储器或内存94还布置成用于存储数据结构,该数据结构包括由本公开所公开的分层数据结构、指示符位数组和区块设置。

网络接入设备900还包括标识设备95、遍历设备96和定位设备97,所有这些设备都通过内部通信总线99通信地连接到至少一个处理器或控制器93。

标识设备95布置为用于将转换函数应用于终端节点设备的设备标识符,以生成标识存储在存储设备94中的分层数据结构中的节点位置的索引。

遍历设备96布置为用于遍历属于由所生成的索引标识的节点的子树的数据元素,以确定包括与终端节点设备的设备标识符相关联的上下文索引的数据元素。

定位设备97布置为用于定位存储在上下文数组的上下文元素中的设备上下文,该上下文元素由上下文索引指向。

本公开不限于如上所公开的示例,并且本领域技术人员可以在所附权利要求中所公开的本公开的范围之外对本公开进行修改和增强而不必应用发明性技术并且用在任何数据通信、数据交换和数据处理环境、系统或网络中。

技术分类

06120116065225