混合网状网络中的岛拓扑和路由的制作方法

文档序号:19689519发布日期:2020-01-14 18:59阅读:395来源:国知局
混合网状网络中的岛拓扑和路由的制作方法

相关申请的交叉引用

本申请要求2017年1月25日提交的美国临时申请第62/450,350号的权益,其通过引用结合于此,如同完整阐述一样。



背景技术:

混合网状网络(meshnetwork)正被用于扩展覆盖区域、提供具有更少死点的更好覆盖区域、提高吞吐量和可靠性等。混合网状网络还通过结合接入点(accesspoint,ap)、网关、路由器、节点、客户端设备等之间的不同有线和无线接口来提供多种多样的网络。发现、形成、路由和学习算法的专用协议是快速和自动构建和维护可靠的混合网状网络所需要的。



技术实现要素:

可以在混合网状网络中形成岛(island)或集群(cluster),其中节点利用不同的有线或无线接口。可以使用协议划将混合网状网络划分成网状岛或集群,以减少中断、干扰等。一旦形成岛或集群拓扑,就可以利用从混合网状网络中的源节点到任何目的地节点的最佳路由或路径,该最佳路由或路径最小化或满足目标度量或路径开销。

附图说明

从以下结合附图以示例的方式给出的描述中可以得到更详细的理解,其中附图中相似的附图标号表示相似的元素,并且其中:

图1是示出接入点(ap)、路由器、网关或节点的示例的图;

图2是示出网状网络的示例性拓扑的图;

图3是示出具有岛的网状网络的示例性拓扑的图;

图4是示出具有岛头(islandhead)的示例性网状岛网络的示意图;

图5是示出具有以太网环路的示例性拓扑的示意图;

图6是示出利用以太网的具有接入点(ap)和/或路由器岛头的示例性拓扑的图;

图7是示出网状网络中路由的示例的图;

图8是示出网状网络中的示例性路由过程的图;

图9是示出hello消息处理的示例性过程的图;

图10是示出用于announce消息处理的示例性过程的图;

图11是示出对等体(peer)学习的示例性过程的图;

图12是示出用于对等体学习的另一示例性过程的示意图;

图13是示出了与后路由(post-routing)相关的接口阻塞的示例性过程的图;

图14是示出了与本地输入(local-in)操作相关的接口阻塞的示例性过程的图;

图15是示出了与本地输出(local-out)操作相关的接口阻塞的示例性过程的图;

图16是示出用于路由的示例性过程的图;和

图17是示出通过路由路径的重新计算和路由表的更新的协议消息处理的过程的示例的图。

具体实施方式

在本文给出的示例中,可以在混合网状网络的岛或集群中通信、发信号通知、传送或提供信息。尽管参考了混合网状网络,但是岛形成、路由、干扰管理、拓扑等的示例可以被利用、配置或适用于采用两个或多个通信接口的任何网状网络。并且,在本文给出的示例中,分组、流量、流量的一部分或帧可以互换使用。

尽管可以利用任何协议或通信层、子层、局部层、层的一部分、层部分等,但是本文给出了利用层2来形成拓扑或网络的示例。另外,层2可以包括子层、局部层、层的一部分等。混合网状网络的路由算法可以包括具有802.11xx(例如,802.11ac、802.11ax等)、wi-fi、以太网、电力线通信(power-linecommunication,plc)、同轴电缆多媒体联盟(multimediaovercoaxalliance,moca)、个人局域网(personalareanetwork,pan)、小小区、城域网(metropolitanareanetwork,man)和广域网(wideareanetwork,wan)网络接口或链路的任意组合的节点。

网状网络中的节点可以被划分成网状岛,该网状岛通过网络中商用设备的802.11xx、wi-fi、以太网、plc和/或moca链路相互连接或耦合。商用设备可以是家庭网络设备、无线路由器、路由器、无线网关、网关、范围扩展器、无线网桥、网桥、无线交换机、交换机、以太网交换机等。除了防止或减少商用设备的网状路由算法和“学习”过程之间可能的相互扰乱之外,还给出了减少整体无线干扰的示例。例如,可以通过在非干扰无线信道或资源上配置或操作网状岛来减少这种干扰。

在本文给出的示例中,对于所识别的岛头或集群网关,网状节点可以被分配给岛,使得到岛头的路径开销可以被降低、最小化或优化。一旦形成岛拓扑,就可以确定从网状网络中的任何源节点到任何目的地节点的最佳或最优路由,从而降低、最小化或优化路径开销。

使用具有网状化的多个802.11xx接入点(aps)和/或路由器可以改善或扩展网络中的无线覆盖区域、连接速度或吞吐量。ap和/或路由器可以形成网状网络拓扑,并协作分发源自或去往无线客户端或其它节点的数据。

图1是示出ap、路由器、网关或节点100的示例的图。ap、路由器、网关或节点100可以包括一个或多个处理器/控制器102,该处理器/控制器102利用(多个)存储器104来处理与一个或多个无线/有线接口106通信的hello消息、announce消息、路由信息等,如本文示例中给出的。ap、路由器、网关或节点100可以包括一个或多个电源108。

一个或多个处理器/控制器102可以是通用处理器、专用处理器、常规处理器、数字信号处理器(digitalsignalprocessor,dsp)、多个微处理器、一个或多个与dsp内核相关联的微处理器、控制器、微控制器、专用集成电路(applicationspecificintegratedcircuit,asic)、现场可编程门阵列电路(fieldprogrammablegatearray,fpga)、任何其它类型的集成电路(integratedcircuit,ic)、状态机等。(多个)存储器104可以包括只读存储器(readonlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、寄存器、高速缓冲存储器、半导体存储器设备、闪存、诸如内部硬盘和可移动盘的磁介质、磁光介质和光介质等中的一个或多个。一个或多个无线/有线接口106可以包括一个或多个收发器、发送器、接收器、放大器、信号转换器、天线等,以便于联网。

本文给出的示例是自动设置、以及管理和减少网络设备(诸如商用设备)的维护,以增强或简化可用性。例如,当系统需求减少到基本集合以及在因特网网关的存在下(这也规定了网状网络配置)形成网状网络时,可以避免复杂性。并且,当由芯片供应商提供的设备驱动程序和低级软件库可能需要修改或不能更新时,通过本文给出的示例,可能会简化软件维护,版本升级可能会更顺利,并且可能会更快地向商用网关添加网状支持。

在2017年1月25日提交的美国临时专利申请62/448,718中描述了一种用于以网关为中心的wi-fi网状网络的自动配置和维护的方法,该临时申请通过引用结合于此,如同完整阐述一样。形成网状网络的ap或路由器可以通过简单地按下按钮与网关设备配对。网关设备所需的初始网络或系统配置信息和/或任何后续变化可以在很少或没有用户干预的情况下自动传播到整个网状网络。网状网络的网关设备的替换或者ap和/或路由器与另一网关设备的配对也可以通过简单的按钮按压自动处理。另外,当网状网络中的任何节点检测到雷达信号时,网状网络的(多个)操作信道可以自动改变。

本文给出了基于路径开销在网状节点之间形成网状岛和流量(诸如层2流量)的路由的配置和/或过程的示例。这可以在网状节点与另一网状节点配对并且由网状节点共享基本网络配置信息,诸如网络服务集标识符(networkservicesetidentifier,ssid)、操作信道和密码短语之后执行和期望。混合网状网络的路由算法和岛形成算法可以如分别在2016年8月30日如美国专利第9,432,990号发布的美国专利申请序列号14/166,040和2015年12月23日提交的美国专利申请序列号14/757,422中给出的那样来执行,这些专利申请通过引用结合于此,如同完整阐述一样。

在本文给出的示例中,一旦网状节点之间的加密链路被建立,就可以执行层2路由协议。寻找在网状节点之间的最佳、良好或最优的路由可能需要网状网络拓扑信息。拓扑发现可以通过交换消息(诸如hello或announce消息)来完成。hello消息可以使节点能够发现邻居或附近的节点,并因此建立和维护邻居关系。announce消息可以在整个网状网络中传播网络拓扑信息。

在示例中,某些消息收发(messaging)可以由自定义或优化的层2传输模块使用自定义的以太网类型(ethertype)字段来处理。层2传输协议可以提供网状网络的节点之间的分组、流量、流量的一部分或帧的可靠的、有序的、分段的和/或错误检查的传递服务。对于某些配置,可以利用消息类型和序列号来确认消息。如果没有收到预期的确认,则可以在最大重试计数内重新发送消息。尽管可以配置任何最大重试计数,但是可以利用或配置使用例如1、2、3和5秒的延迟方案的重试计数4。分片(fragmentation)大小可以基于介质的最大传输单元(maximumtransmissionunit,mtu)大小来配置。

优化的传输模块还可以提供在网状节点上运行的软件模块之间的通用通信服务。更高层的应用可以通过公开的有效载荷应用程序编程接口(applicationprogramminginterface,api)使用该服务。应用可以绑定到例如从0到255范围内的有效载荷id,并且发送和接收由密码加密和认证算法促进的加密的和认证的有效载荷。这些算法可以包括在用户空间库中。另外,每个有效载荷可以由用户供应的密钥和/或全局唯一随机数加密。可以利用诸如128位的随机数长度或任何其它长度。

hello或announce消息的消息类型可以由消息报头(messageheader)中的字段来指示。消息报头中的序列号可以实现有序传递,并且基于哈希的消息认证码(hash-basedmessageauthenticationcode,hmac)字段可以提供数据完整性和认证。大于配置的mtu大小的消息可能会被分片。分片可以利用消息报头中的分片号字段来执行,并由接收器重新组装。

在本文给出的示例中,消息内容可以被编码为消息主体内的类型-长度-值(type-length-value,tlv)元素。元素值字段可以是任何大小,诸如256字节。然而,较大的元素可以被分成块(诸如256字节)发送,并然后由接收器重新组装。可能包括在hello和announce消息中的tlv元素示例分别在表1和表2中列出。

表1:hello消息

表2:announce消息

在本文给出的示例中,网状节点可以具有多个网络接口,诸如802.11xx、wi-fi、以太网、plc和/或moca(用于客户端和网状对等体)。单独的hello消息可以由节点在每个配置的网络接口上广播。hello消息中的接口类型元素可以指示特定接口的类型。hello消息可以使节点发现它们的邻居和正在利用的接口。hello消息可以例如每1-10秒在802.11xx、wi-fi、以太网、plc和/或moca和无线分配系统(wirelessdistributionsystem,wds)链路上广播。

在某些示例性配置中,通过wds链路接收hello消息的节点可以初始化处于阻塞状态的发送对等体,并将该信息通告给网络。hello消息计数可以用于网络管理的wds链路。在以太网、plc和/或moca链路上,发送节点可以被初始化为未阻塞的对等体。对等体状态信息可以在announce消息的对等体标志元素中携带。当对等体处于阻塞状态时,除hello之外的协议消息、数据分组、流量、流量的一部分或帧可能不会被处理。

接收节点还可以刷新给定接收接口的学习到(learned)的对等体信息。这种刷新对于将网络划分成网状岛可能是期望的。在从对等体接收到例如10个hello消息之后,可以执行转换到未阻塞状态的操作,并通告给网络。解除阻塞对等体所需的时间可能取决于配置的hello周期。

网状节点可以通过向未阻塞的hello对等体发送周期性的announce消息来传播网络拓扑信息。这种announce消息可以特别用于以太网、plc、moca或wds链路。可以在拓扑变化时发送announce消息,以便快速响应拓扑变化。

在本文给出的示例中,通告周期可以被配置为从0到无限秒的任何值(例如,每30秒)。将间隔配置为零可以禁用周期性的通告。对于这种配置,当拓扑、节点、链路等改变时可以发送或触发通告,而不是定期地发送。另外,announce消息可以被单播。对于单播,消息可以被接收者确认并转发。可以借助消息序列号终止转发的消息。

接收announce消息的节点可以在任何改变时更新网状网络节点和路由表。在某些配置中,接收节点可以仅在网络信息改变时转发announce消息。由传输模块提供的通用通信服务可以搭载在announce消息上,用于能够容忍最多等于通告周期的延迟的应用。

节点可以周期性地检查节点列表,以确保旧的、过期的、过时的等的信息被移除。例如,如果节点空闲超过120秒,则它可能会失效。学习的对等体空闲超过例如300秒,可以被删除。可以根据通告周期的值来配置空闲的到期时间,并且优选地应该是通告周期的几倍的数量级。在任一配置中,可以更新路由并发送基于事件的通告。由于announce消息接收时间可以是随机的,所以可以针对算法的计算负荷和响应性之间的折衷来调整过时性检查周期。

再次参考表2,接口度量字段可以指示通过给定接口从节点到对等体的传输开销。链路的质量可以通过使用不同的开销度量来评估。存在计算链路的开销度量的多个示例。示例可以在英国专利申请号gb1700997.8中找到,该专利申请通过引用结合于此,如同被完整阐述一样。等式(1)给出了可能的链路开销度量。

开销度量c可以与到对等体节点的当前物理层传输速率r(以kbps为单位)成反比。因此,更快的链路可能具有更低的开销并被优待。开销也可以与传输通话时间(airtime)成比例。链路开销度量可以由在节点上运行的另一软件过程来计算,并经由软件总线传递给路由过程。网状网络中从任何源节点到目的地节点的最佳路由可以使用链路开销来计算,以最小化总传输开销。

为了防止重放攻击,每个节点可以每隔例如30秒生成新的随机数,以包括在发送的hello消息中。接收对等体节点的随机数的每个接口可以将对等体节点的随机数以及它自己节点的随机数一起包括在它自己的hello消息中。如果接收到的hello消息不包括接收节点的当前随机数,则它可能被丢弃。由hmac提供的具有消息完整性的当前随机数可以为路由算法提供足够的安全性。

当流量流过商用交换机(例如,以太网交换机)的端口时,发送的帧可以由附接的节点进行检查,并记录源媒体访问控制(mac)地址。交换机因此可以建立mac地址与(versus)端口号表,并“学习”mac目的地的位置或存在。在本文给出的某些配置或示例中,交换机可以将接收到的帧直接转发到正确的端口,而不会在所有端口上泛洪或广播。

图2是示出网状网络的示例性拓扑200的图。无线链路214、212和216可以分别将sta1、sta2和sta3连接或耦合到ap1、ap2和ap3。sta可以是移动设备、传感器、物联网(internetofthing,iot)设备、膝上型电脑、笔记本电脑、平板电脑、智能电话、电视机、显示器、无线音频设备、无线扬声器等。ap2和ap3可以使用有线链路202或206连接到交换机(例如,以太网交换机)。ap1可以分别经由wds链路208或210连接到ap2和ap3两者。sta4可以经由有线链路204连接或耦合到交换机。

在某些配置中,与ap1和ap3之间的wds链路210的开销相比,ap1和ap2之间的wds链路208可能具有更小的或期望的开销。由于物理上的接近,链路开销可能会更低,从而允许由于更高的信号强度或信噪比(signaltonoiseratio,snr)的更高的数据速率或吞吐量。如果sta1有数据要发送到sta4,由于开销较低,网状路由算法可以利用路径sta1→ap1→ap2→sta4。在拓扑200中,源自sta1的数据分组或帧可以在其端口x上进入交换机。相应地,交换机可以从这些分组或帧的源mac地址“学习”sta1通过端口x可到达。因此,当sta4试图向sta1发送数据时,交换机可以将这些数据分组或帧转发到端口y和x。

无线链路的开销可能会随着时间而变化,并且开销可能是不对称的。例如,ap1可能更接近ap3移动,或者在ap2附近可能出现强干扰源。另外,链路ap1→ap2的开销可能低于ap1→ap3的开销,而ap3→ap1的开销可能低于ap2→ap1的开销。在这种情形下,使用ap3→ap1链路而不是ap2→ap1链路可能更有利。ap3→ap1链路也可能是优选的以获得更好服务质量(qualityofservice,qos)或改进的负载平衡。

如果ap2和ap1之间的链路208暂时中断或不可用,则交换机仍然可以尝试利用链路202向端口x发送去往sta4的分组或帧。即使ap3和ap1之间的链路210可用于将信息携带到目的地,这些分组或帧也可能丢失。在本文给出的示例中,当交换机的学习过程独立于由ap运行的网状路由算法而操作时,可以避免冲突。

另外,出于负载平衡或qos的目的,可以同时利用多条路径。例如,ap1可以通过ap2发送分组或帧,并且通过ap3发送下一个。然而,频繁的路径变化可能会使交换机的学习过程复杂化或混乱。例如,sta1似乎在端口x和端口z之间快速移动。当利用多条路径时,交换机的内部路由表更新可能无法跟上,导致丢弃的分组或帧或无法预测的转发决策。

商用交换机可以运行生成树协议(spanningtreeprotocol,stp)来防止网络环路的形成。然而,被stp阻塞的交换机端口可能会干扰网状路由协议,并阻塞路由协议消息到达它们的目的地。为了避免这种情景,当两个或多个网状节点经由交换机连接时,网状网络可以被划分成网状岛或集群。经由交换机连接的节点可以变为岛头、集群网关或网状岛之间的网关。

在某些配置中,网状网络中的商用plc设备可以保留它们自己的mac地址表,并运行它们自己的mac层路由和重复算法,这些算法可能会干扰网状网络路由。因此,当两个或多个网状节点经由商用plc设备连接时,网状网络也可以被划分成岛。网状节点的plc网络接口可以由本文给出的路由算法来控制,并因此可能不需要考虑分区分隔符。

还可能期望将网状网络分隔成岛,使得每个岛在不同的信道或资源上进行操作,从而减少与传输和/或干扰范围内的其它岛的干扰。这可以减少广播冲突域并增加活动的网状节点的可用通话时间。另外,将网状网络划分成更小的网状岛可以减轻在其它或更大的无线网状网络配置中观察到的多跳不公平(multi-hopunfairness)。

图3是示出具有岛的网状网络的示例性拓扑的图。拓扑或图形300可以是其中ap1和ap2利用有线链路302(例如,以太网)连接或耦合的网状网络。wds链路304、306或308可以用于网状化ap1、ap2和ap3。由于ap1和ap2之间存在有线链路302,所以ap1可以被识别或指定为岛头。

通过利用有线链路314和wds链路316,可以在岛头ap1和ap2周围形成两个网状岛310和312,如拓扑或图形301所示。第三节点ap3可以被分配给其中一个岛,并且与其它岛中的节点的无线链路被阻塞、禁用、不允许、禁止等。在拓扑或图形301中,第三节点ap3可以被分配给节点ap1的岛,因为到ap1的wds链路316可以具有较低的开销,并且到节点ap2的无线链路被移除。此外,ap或路由器可能有多个接口(例如,以太网),这些接口是嵌入式交换机的一部分。因此,在拓扑或图形301中,两个无线ap或路由器的接口可以经由交换机或直接经由电线或电缆连接。

图4是示出具有岛头的示例性网状岛网络400的图。当announce消息在整个网状网络中传播拓扑图信息时,节点可以具有将网状节点分隔成岛(402)的必要信息。可以找到或识别(404)可以是岛头的节点。如果节点在任何以太网、plc和/或moca接口上有hello对等体,则它可能被标记为岛头。因此,作为岛头的网状节点的数量可以等于具有以太网、plc和/或moca对等体的网状节点的数量。

为了形成具有岛头的网状岛网络,在不同岛中的节点之间的无线数据连接可能被阻塞、禁用、不允许、禁止等约束条件下,可以计算大量或全部岛划分可能性,并且可以选择最小化度量(诸如链路开销)的划分方案。可能的度量可以是节点到最近的岛头的最大开销,或者是给定岛中的所有节点到其头的开销之和。

考虑到随着网状节点的数量的增加,大量或所有的可能性可能会很快变得计算密集,尤其是当网络拓扑发生变化并且期望路由算法快速响应时。可以利用迭代算法来近似最优解。在确定网状岛头之后,岛头之间的无线数据链路可能被阻塞、禁用、不允许或禁止。

可以确定作为至少一个岛头的hello对等体的节点,并且计算岛头中的每一个的最小路径开销。另外,其它可能的度量可以是岛到岛头中所有节点的开销之和,或者岛到岛头的最大开销。网状网络中节点之间的最小或最短路径可以通过使用任何确定性算法(诸如迪杰斯特拉(dijkstra)算法或贝尔曼-福特(bellman-ford)算法)来确定。

一旦识别出组中具有最少最小路径开销的节点,就可以将其分配给对应的岛头。这个过程可以继续以形成初始节点组,这些节点是岛头的hello对等体。然后,可以阻塞、禁用、不允许、禁止等在该节点和任何其它岛头中的任一个之间可能存在的无线链路。然后可以考虑初始组中的剩余节点,并且可以重新计算它们到岛头中的每一个的最小路径开销。该节点和任何其它岛之间可能存在的任何无线数据链路也可能被阻塞。这可以重复进行,直到初始组中的所有剩余节点被分配给岛。

第二组可以包括孤立(orphan)节点(406),它们是第一组中至少一个节点的hello对等体。孤立节点可以是任何组中未分配的节点。可以使用本文给出的算法将第二组中的节点分配(408)到岛。重新计算到岛头的最小路径开销,并且在每个步骤中,具有最少最小路径开销的节点被分配给对应的岛,并且其到其它岛的无线链路被阻塞、禁用、不允许、禁止等,直到第二组中的所有节点被分配给岛。这可以重复进行,直到网络中的所有节点都被分配到岛。

图5是示出由于配置错误、小故障(glitch)等而具有以太网环路的示例性拓扑500的图。交换机、ap1和ap2之间用有线链路502、504和506创建的环路可能导致广播风暴。虽然stp可以防止这种环路,但是在本文给出的示例中,在网状网络中可以避免这种环路。例如,根节点可以跟踪节点的hello对等体以防止这种环路。

在本文给出的示例中,可以选择任意节点,并且只考虑相关的hello对等体。这些对等体中的每一个及其hello对等体可以在剩余的节点中被查看。在给定的迭代中,如果到达起始节点,则可以识别拓扑中的环路。这种环路可以通过阻塞、禁用、不允许、禁止等链(chain)中的链路中的一个来打破。例如,可以通过选择具有最慢连接速度的链路来确定要阻塞的链路。其它方式可以是阻塞链路,使得得到的拓扑最小化到网状网络的网关的最大跳数。路径开销可以被考虑或计算,诸如用等式(1),并且到网状网关的环路节点当中的最大开销被最小化。如果网关未知,则可以尝试最小化环路中任意两个节点之间的最大跳数或最大路径开销。

图6是示出利用以太网的具有ap和/或路由器岛头的示例性拓扑600的图。对于这种拓扑,ap1、ap2、ap3和ap4可以被配置为岛头,因为它们可以具有跨链路602、604和610的以太网hello对等体。对于某些配置,岛分隔或划分算法可以阻塞、禁用、不允许、禁止等不同岛之间的无线连接。然而,这可能导致岛612和614之间的断开。没有无线链路606或608,ap1将仅连接到ap2,并且ap3将仅连接到ap4。因此,岛612和614之间不存在连接。为了防止岛之间可能的断开,可以恢复无线链路以获得完全连接的拓扑。然而,与无线链路连接的两个岛头可能必须在相同无线信道或资源上进行操作,从而导致潜在的干扰。

网状网络的根节点可以基于节点id和节点mac地址来选择,以防止不期望的网络配置或架构。例如,可以选择具有最小节点id和mac地址组合的节点。根节点可以在识别岛头之后检查断开的集群,并确定应该恢复哪些无线链路以形成完全连接的图形。合适的度量可以是例如到网状网关的所有节点之间的最大路径开销,或者如果网关未知的话,任何两个网状节点之间的最大路径开销。

图7是示出网状网络中路由700的示例的图。每个接口上的传入和传出分组、流量、流量的一部分或帧可以被过滤,以用于网状路由、对等体学习、协议消息处理等。来自网络接口的流量702可以被输入用于预路由(pre-routing)。预路由可能由在进入网络堆栈之后的来自任何网络接口的传入流量触发。一旦触发,则任何路由决策都可能被中止。

来自预路由输出704的流量可以被传达用于进一步路由。来自路由输出706的流量可以被传达到本地输入组件,以便输出708到本地处理。来自本地处理输入712的流量可以被传达到本地输出组件进行处理。来自本地输出710的流量可以被传达用于进一步路由。来自路由输出714的流量可以被传达用于后路由。来自后路由输出716的流量可以被传达到网络接口。

预路由、本地输入、本地输出和后路由可以是与操作系统或操作系统内核的协议或网络堆栈中的分组过滤相关的操作。进入网络系统的分组或帧可以在前进通过堆栈时触发这些钩子(hook),从而允许向这些钩子注册的程序或应用在过程的不同点进行交互。在进入网络堆栈后不久,任何传入流量都可能触发预路由钩子。在做出将分组或帧发送到哪里的路由决策之前,可以处理这个钩子。如果分组或帧的目的地是本地系统,则在传入分组或帧被路由之后,可能会触发本地输入钩子。在到达网络堆栈后不久,任何本地创建的出站流量可能会触发本地输出钩子。后路由钩子可以在路由发生之后并且正好在网络接口上的通信或发信号通知之前由任何传出流量触发。

例如,用于预路由、本地输入、本地输出和后路由的linux网络过滤器(netfilter)操作可以用来确定分组或帧是否将被接受、丢弃或传递给路由过程。协议消息处理可以包括转发announce消息、更新路由表、使节点无效、删除已得知的对等体等。

图8是示出网状网络中的示例性路由过程800的图。一旦预路由(802)在(多个)节点处被初始化,则做出接收到的分组是否是hello消息(804)的确定或检查。作为示例,可以使用在分组或帧报头中具有hello消息类型的自定义的以太网类型来识别hello消息。如果识别出hello消息,则该hello消息被处理(804)并随后被丢弃(806)。

如果接收到的分组不是hello消息,则做出接收到的分组是否是announce消息(810)的确定或检查。作为示例,可以使用在分组或帧报头中具有announce消息类型的自定义的以太网类型来识别announce消息。如果识别出announce消息,则处理(812)该announce消息并随后丢弃(806)。如果接收到的分组不是announce消息,则执行对等体学习(814)和随后的路由(816)。

图9是示出用于hello消息处理的示例性过程900的图。在(多个)节点处初始化或处理hello消息(902)之后,确定对等体的存在(904)。如果对等体存在,则做出对等体是否被阻塞(906)的确定。如果对等体被阻塞,则确定在wds上的流量的接收(908)和检查hello计数是否高于限制(910)。如果hello计数高于限制,则对等体是未阻塞的(912),announce消息被发送(914)到未阻塞的hello对等体,并且过程被停止(916)。

如果对等体不存在,则创建阻塞的对等体(918),刷新学习到的对等体(920),向未阻塞的hello对等体发送announce消息(914),并且过程被停止(916)。如果对等体没有被阻塞,则对等体的空闲时间可以被更新(922),并且过程被停止(916)。此外,如果没有接收到wds流量,则对等体是未阻塞的(912),并且过程900如本文给出的那样进行。并且,如果hello计数低于限制,则过程被停止(916)。

图10是示出用于announce消息处理的示例性过程1000的图。在(多个)节点处初始化或处理announce消息(1002)之后,做出拓扑变化的确定(1004)。如果拓扑改变,则路由更新被处理(1006),并且announce消息被转发(1008)到节点对等体以传播拓扑信息。如果拓扑相同或未改变,则过程被停止(1010)。

图11是示出用于对等体学习的示例性过程1100的示意图。对等体学习可以是发现非网状节点的设备的过程或操作。在对等体学习中,网状拓扑可以经由announce消息传播,使得每个节点发现关于每个其它节点及其连接或接口。然而,在某些对等体学习配置中,未配置成网状化的商用设备不会发送announce消息。并且给出了这种设备“学习”网络拓扑的示例。

过程1100可以作为预路由操作的一部分来执行。在(多个)节点处初始化对等体学习操作(1102)之后,做出接口能够进行对等体学习(1104)的确定。如果有能力,则做出对等体已经被学习(1106)的确定。如果对等体已经被学习,则过程停止(1108)。否则,做出需要学习对等体(1110)的确定。

如果不需要学习,则过程停止(1108)。如果需要学习,则对等体被学习(1112),announce消息可以被发送(1114)到未阻塞的hello对等体,并且操作停止(1108)。

图12是示出用于对等体学习的另一示例性过程1200的示意图。在某些配置中,过程1200可以作为预路由操作的一部分来执行。网状节点可以学习网络中接口的源mac地址,类似于商用交换机(例如,以太网交换机)的学习过程。不属于网状节点并且不是另一网状节点的对等体的接口(例如,以太网接口)可以是学习的候选。并且,如果接口和两个网状节点连接到同一个交换机,则这两个网状节点都可以学习该接口。在某些配置中,为了学习相同的接口,两个网状节点可能需要是hello对等体。

在(多个)节点处做出需要对等体学习的确定(1202)之后,做出源是网状节点的确定(1204)。如果源是网状节点,则可能不需要或不执行对等体学习(1216)。如果源不是网状节点,则做出接口具有hello对等体的确定(1206)。如果接口不具有hello对等体,则可以执行对等体学习(1214)。

如果接口具有hello对等体,则做出源具有另一节点的对等体的确定(1208)。如果源不是另一节点的对等体,则可以执行对等体学习(1214)。如果源是另一节点的对等体,则做出源在另一岛上的确定(1210)。如果源在另一岛上,则可能不需要或不执行对等体学习(1216)。

如果源不在另一岛上,则做出该节点和对等体的节点是否是岛头的确定(1212),并且如果是,则可以执行对等体学习(1214)。如果该节点和对等体的节点不是岛头,则不需要或不执行对等体学习(1216)。

图13是示出了与后路由相关的接口阻塞的示例性过程1300的图。后路由操作可以在路由已经发生之后以及任何网络接口发送出分组或帧之前由传出或转发的流量触发。通过丢弃帧,后路由可以用于接口阻塞等。在做出路由决策并且分组或帧去往非本地设备之后,可以执行后路由过程(1302)。做出接口被阻塞的确定(1304)。这可以被指定为特定于由路由块为分组或帧的目的地所选择的传出接口。如果接口被阻塞(1306),则分组、流量、流量的一部分或帧可以被丢弃(1306)。否则,如果接口没有被阻塞,则发送分组、流量或帧(1308)。

图14是示出了与本地输入操作相关的接口阻塞的示例性过程1400的图。在目的地为本地系统的传入分组或帧已经或先前被路由之后,可能会触发由本地输入操作的接口阻塞。如果网络接口被阻塞,则传入帧可能会被丢弃。在过程1400中,在(多个)节点处的本地输入操作(1402)的初始化之后,做出接口被阻塞的确定(1404)。如果接口被阻塞,则分组、流量、流量的一部分或帧被丢弃(1406)。否则,分组、流量、流量的一部分或帧被接受(1408)以用于进一步处理或路由。

图15是示出了与本地输出操作相关的接口阻塞的示例性过程1500的图。进入网络堆栈的任何本地创建的出站流量都可以触发或执行本地输出操作。本地输出操作可以用于传递本地生成的传出分组或帧以路由。在过程1500中,在本地输出操作(1502)的初始化之后,做出接口被阻塞的确定(1504)。该确定可以包括本地网络接口接受来自本地系统的分组。如果接口被阻塞,则分组、流量、流量的一部分或帧被丢弃(1506)。否则,分组、流量、流量的一部分或帧被传达以用于进一步路由(1508)。

当分组、流量、流量的一部分或帧被传递到路由过程时,可以经由路由表查找将其传送到在到目标的最佳或最优路径上的目标或中间节点。需要时,可以根据拓扑变化更新路由表。例如,当接收到指示在周期性的定时器到期之后识别变化或过时信息的协议消息时,可以执行更新操作。如果路由表中没有目的地地址的条目,则路由过程可以将分组或帧进行排队,直到路由表被纠正或修复。作为示例,最大队列大小可以是16个分组,并且可以在运行时配置。路由过程可以利用加速后端进行网络传送。

作为示例,对于某些配置或情景,加速可以指802.11xx或wifi片上系统(systemonchip,soc),将进入物理接口的分组或流量转发到正确的目的地物理接口,而不首先将分组或流量向上传递到操作系统的网络堆栈以用于进一步处理。这种捷径(shortcut)或硬件加速可以通过避免网络堆栈中分组或流量的处理时间来提供更高的吞吐量。

图16是示出用于路由的示例性过程1600的图。在(多个)节点处路由操作(1602)的初始化之后,做出表中存在条目的确定(1604)。如果存在条目,则做出流量去往本地目的地的确定(1606)。如果流量是针对本地目的地的,则可以执行本地输入操作(1608)。如果流量不是针对本地目的地的,则做出存在接口的确定(1616)。如果存在接口,可以设置加速(1618),并且可以执行后路由(1622)。

如果表条目不存在,则创建条目(1610),并做出队列已满的确定(1612)。类似地,如果接口不存在,则做出队列已满的确定(1612)。如果队列已满,可以丢弃流量(1614)。否则,可以清除加速(1620)并执行排队操作(1624)。

图17是示出通过路由路径的重新计算和路由表的更新的协议消息处理的过程1700的示例的图。在(多个)节点处路由更新(1702)的初始化之后,可以验证学习到的对等体(1704)。在此过程中,无效的学习到的对等体或不应学习的对等体可能会被删除。可以通过删除已经断开连接并且然后连接到某个其它节点的任何对等体节点来处理交换的对等体(1706)。可以基于对等体到对等体连接拓扑来构建岛图(1708)。在岛图中,可以标记岛之间的被阻塞的对等体到对等体连接。

可以基于连接拓扑和岛设置由节点、接口和/或对等体构建路由图(1710)。可以只为节点构建反向路由图(1712)。反向图可以用于节点验证,并可以使网络能够动态地或快速响应拓扑变化。节点消失可能会导致拓扑变化。可以检查反向图来验证节点(1714)的节点连通性,并且消失的节点可以被标记为无效。可以通过将处于阻塞的hello状态的对等体标记为无效来执行hello对等体的验证(1716)。

此外,在过程1700中,可以从路由表中删除(1718)节点、接口或对等体的无效的路由。可以从路由表中删除节点、接口或对等体的阻塞的路由(1720)。可以为有效节点、接口和对等体计算(1722)并填充路由表。无效节点、接口和对等体可以从拓扑图形中删除并标记为无效(1724)。可以清除节点、接口或对等体的任何不必要的标志(1726)。

尽管以上以特定的组合描述了特征和元素,但是本领域普通技术人员将理解,每个特征或元素可以单独使用或者与其它特征和元素任意组合使用。另外,本文描述的方法可以在计算机程序、软件或固件中实现,该计算机程序、软件或固件并入计算机可读介质中以由计算机或处理器执行。计算机可读介质的示例包括电子信号(通过有线或无线连接传输)和计算机可读存储介质。计算机可读存储介质的示例包括但不限于只读存储器(rom)、随机存取存储器(ram)、寄存器、高速缓冲存储器、半导体存储器设备、诸如内部硬盘和可移动盘的磁介质、磁光介质以及诸如只读光盘驱动器(compactdiscread-onlymemory,cd-rom)盘和数字多功能盘(digitalversatiledisks,dvd)的光学介质。

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