Ad hoc
在无线自组网中使用NDN架构时,需要一种信道接入机制,以便设备能够有效地进行数据传输和共享,帮助设备在资源有限的情况下进行公平的资源分配,以避免过度拥塞和冲突;提供关于信道质量和可用带宽的信息,从而帮助设备进行路由和转发决策;优化设备的功率管理策略,使设备能够在保证通信质量的同时尽量减少能量消耗;提高频谱的利用率,使得更多的设备能够同时进行通信。
**
NDN协议使用兴趣(Interest)和数据(Data)数据包来操作,并携带内容名称而不是源地址和目的地址。为了实现按名称进行报文转发,每个节点维护两个数据结构:转发信息库(FIB,Forwarding Information Base)和未决兴趣表(PIT,Pending Interest Table)。此外,可以选择使用内容缓存(CS,Content Store)提供网络内缓存。
转发信息库(FIB):FIB是NDN网络中的转发表,用于存储转发条目。它将兴趣包与可能包含匹配数据(与兴趣包名称相同)的来源相关联。与IP网络中的转发表不同,FIB中的每个名称前缀可以有多个传出端口(下一跳),形成一个列表。FIB表项可以手动插入,也可以通过NDN路由协议的控制平面进行自动填充。
未决兴趣表(PIT):PIT表存储了未满足的兴趣包以及它们到达节点的接口。当数据包到达时,可以通过查询PIT表项将数据包路由回到最初发送该兴趣包的节点。
内容缓存(CS):CS用于缓存数据。当节点接收到数据包时,它可以选择将数据包存储在本地的CS中。当有相同兴趣包到达时,节点可以直接从CS中获取缓存的数据,而无需转发兴趣包到其他节点。
在有线网络中,典型的NDN通信按照以上步骤操作(参见图2-1)。通过使用这些数据结构和机制,NDN协议实现了基于内容名称的数据传输和路由。兴趣包通过名称在网络中进行路由查找,直到找到包含匹配数据的节点。这种基于内容的路由方式使NDN协议具有许多优势,包括更高效的数据传输和支持内容缓存的能力。
1.通信由消费者发起,通过发送带有相应名称的兴趣(例如/building1/room1/temperature)来请求内容项。
2.当路由器(中继节点)收到兴趣时,它首先检查本地的内容缓存(CS)。如果存在匹配的数据,路由器直接将数据发送回消费者,而无需进一步转发兴趣。如果CS中没有匹配的内容,则进行下一步。
3.路由器检查未决兴趣表(PIT),如果存在相同内容项的兴趣,则将新兴趣的发起接口添加到现有PIT条目中,而不转发新的兴趣。只有在PIT中没有相同兴趣等待时,才会转发新的兴趣。
4.路由器根据转发信息库(FIB)转发兴趣报文,使用最长前缀匹配(LPM)进行路由选择。同时,在PIT中记录兴趣和它的发起接口,直到收到匹配的数据或兴趣超时。
5.当兴趣到达内容项的生产者或中间缓存时,相应的数据包返回。生产者或缓存节点将数据包发送回沿着兴趣的反向路径,直到达到消费者。
6.路由器接收到数据包后,根据PIT中相应条目的信息进行转发。由于此内容请求已经满足,路由器将删除相应的PIT条目,并根据缓存策略和相关替换机制决定是否在内容缓存(CS)中存储数据的副本。
显然,占据着核心地位的是名字。在NDN转发过程中,通常有层次化和扁平化两种命名方式,而转发则基于最长名字前缀匹配。当一个数据请求(Interest)进入网络时,路由器或节点会检查该请求的名称,并与其已知的数据对象名称进行匹配。匹配过程从网络的根节点开始,逐级向下搜索。路由器或节点会将请求与其拥有的数据对象进行名称前缀匹配。如果有多个数据对象名称与请求的名称前缀匹配,那么选择最长的名称前缀匹配。这意味着选择与请求名称最相似的数据对象。选择最长名称前缀匹配后,路由器或节点将请求转发到匹配的数据对象所在的位置,继续进行传输。
NDN转发策略
ndnSIM 通过与 NFD 的集成提供了简单的方法来试验 NFD 的自定义兴趣/数据转发策略,默认支持四种转发策略:
best-route | 最佳路线策略 | 默认路由策略,将兴趣包转发到具有最低路由成本的上游。 |
---|---|---|
ncc | NCC策略 | CCNx 0.7.2默认策略的重新实现。它有类似的算法,但不保证是等价的。 |
multicast | 多播策略 | 将每个兴趣包转发给所有上游,由提供的FIB条目指示。 |
client-control | 客户端控制策略 | 允许本地消费者应用程序选择每个兴趣包的传出面。 |
默认支持的转发策略
转发策略
BestRoute
BastRoute策略旨在通过动态调整兴趣包的转发策略来控制网络拥塞,防止网络过载。
Bastroute中的退避机制运行如下:
兴趣包转发:当兴趣包到达NDN路由器时,路由器检查其转发策略以确定下一跳转发兴趣包。在Bastroute中,路由器维护一个转发信息库 (FIB),其中包含每个前缀的可用下一跳。
拥塞检测:路由器通过观察队列长度、丢包率或其他拥塞指标来监控每条出站链路的拥塞程度。如果检测到拥塞,路由器将激活Backoff机制。
Backoff Timer:当检测到拥塞时,路由器会为相应的传出链路启动一个Backoff 定时器。定时器的持续时间通常是根据拥塞的严重程度或预定义的参数来设置的。
兴趣包抑制:当Backoff计时器处于活动状态时,路由器会抑制与拥塞链路匹配的兴趣包的转发。路由器可以选择将“CongestionMark”发送回上游节点,而不是转发兴趣包,以通知它拥塞。
Backoff Expiry:一旦Backoff定时器超时,路由器恢复在拥塞链路上转发兴趣包。路由器可能会逐渐提高转发速率,以避免立即再次触发拥塞。
Bastroute中的拥塞控制机制有助于调节网络拥塞区域中的兴趣流。通过暂时抑制兴趣包,防止过多的流量压垮拥塞的链路,让网络从拥塞中恢复,保持更稳定的性能。
NCC
NCC 中的退避机制主要由称为“显式拥塞通知 (ECN) 标记”或简称为“ECN 标记”的功能管理。ECN标记允许网络中的路由器以主动方式通知消费者拥塞。当路由器遇到拥塞时,它会使用ECN标志标记数据包以指示存在拥塞。
收到兴趣包后,消费者检查ECN标志。如果设置了ECN标志,表明拥塞,则消费者触发退避机制,然后调节消费者的兴趣包传输速率以减少拥塞并允许网络恢复。
NCC 中的退避算法通常采用指数退避方法。以下是退避过程的更详细地分步说明:
Initial Interest Transmission:消费者发送针对特定数据包的兴趣包以启动检索。
ECN标记:如果沿路径发生拥塞,路由器可能会在经过拥塞区域的数据包上设置ECN标志。消费者在收到数据包时会检测到此ECN标记。
退避触发器:在观察到ECN标志后,消费者触发退避机制。这表明存在拥塞,消费者应调整其利率传输率。
退避算法:退避算法决定了退避机制的细节。它通常采用指数退避,其中消费者增加发送后续兴趣包之间的时间间隔。
Adjusted Interest Transmission:消费者根据退避算法降低兴趣传输率。它在重新传输所需数据包的兴趣包之前等待一定的退避间隔。
Extended Backoff:如果拥塞持续存在并且消费者继续接收带有ECN标记的数据包,则退避机制可能会进一步增加等待时间,应用增加的退避因子。
退避间隔后重试:一旦退避间隔过去,消费者将重试发送数据包的兴趣包。如果仍然存在拥塞,退避机制会再次延长等待时间。
通过使用ECN标记实现退避机制,NDN中的NCC策略提供了拥塞控制能力,允许消费者调节他们的兴趣传输速率以响应来自路由器的拥塞信号。这种机制有助于在出现拥塞时保持网络稳定性和高效的数据检索。
Multicast
在NDN中,多播被视为一种特殊的数据发布/订阅模式:
多播转发策略用于支持多播数据传输,其中一个数据源可以同时发送给多个接收者。当一个Interest数据包被发送到多播组名时,转发器会将其转发到所有对应的下一跳接口,以便将数据发送给所有订阅该组名的接收者。转发器会维护一张多播转发信息表(MFIB),其中记录了多播组名与下一跳接口的映射关系。
接收者可以通过发送兴趣包来订阅一个多播组。这个兴趣包中包含了多播组名,用于表达接收者对该组的兴趣。转发器收到这个兴趣包后,会将其转发到MFIB中与多播组名匹配的下一跳接口,以便将数据发送给订阅该组的接收者。
数据源可以通过将数据发布到一个特定的多播组名来实现多播数据传输。当数据源发送Data数据包时,转发器会根据Data数据包的名称和MFIB中的映射关系,将Data数据包转发到订阅该多播组的接收者。
client-control
Client-Control策略允许客户端发送特定的控制参数(Control Parameters)来指导Interest数据包的转发和数据的返回。这些控制参数可以包括:最大兴趣转发次数(Max Interest Forwarding Count),兴趣超时时间(Interest Lifetime),感兴趣数据包(Congestion Marking)。
当转发器收到一个带有Client-Control参数的Interest数据包时,它会根据这些参数来决定如何转发和处理该Interest。转发器可以根据最大兴趣转发次数和兴趣超时时间来限制Interest的转发范围和转发次数。如果达到最大转发次数或超过兴趣超时时间而没有数据响应,转发器可以选择不再转发该Interest。
同时,当数据返回时,转发器也可以根据Client-Control参数来处理返回的Data数据包。例如,它可以根据兴趣超时时间和感兴趣数据包的拥塞标记来确定是否继续转发Data数据包,或者根据客户端的指示来缓存或丢弃Data数据包。
Client-Control策略允许客户端根据自身的需求和网络环境来控制数据请求的转发和处理。通过设置适当的控制参数,客户端可以实现对Interest的精细控制,从而减少不必要的转发和消耗,提高网络性能和效率。