NDN-lite 命名数据网络 -----第二章:对Interest和Data包的处理

NDN可以解决的问题

  1.IP地址耗尽的问题。
  2.内网穿透问题。
  3.移动性问题,因为名字是固定不变的,不会随着位置的移动发生变化。
  4.可扩展地址管理问题,这也使得传感网络成为可能。

关于NDN的路由机制

  NDN的路由机制上保留了类似IP路由的转发路由表(Forwarding Interest Base,FIB),增加了待处理表(Pending Interest Table,PIT)和数据包缓存(Content Store,CS)数据机构。
  NDN数据包是独立的,与他从哪里来以及要到哪里去都没有关系,传输过程中也不需要状态信息。NDN路由器会将Interest和Data包都缓存一段时间,分别暂存在PIT和CS中,以便等待交互应答。当针对相同的Data的多个Interest到达时,会进行消重处理,记录到达的接口(Face)然后存储在PIT表对应行中,但不会继续转发新到的这个Interest,当Data到来的时候,路由器查找到匹配的PIT条目,然后将Data从表中列出的接口转发回去,从而满足多个请求的需要。然后PIT删除相应的条目,将数据缓存到CS中。

NDN的通信策略

  NDN中的通信策略完全由请求方驱动,请求方向网络广播兴趣包,以数据命名为纽带,通过Pull的方式来获取数据包。消费者发送一个兴趣包来请求一个数据包,收到这个兴趣包的中间节点,如果本地没有目标Data,将根据路由策略选择性转发到其邻居,直到找到该数据的节点。在一个Interest包得到Data包前,兴趣包每经过一跳都有可能得到匹配的数据包,不一定要走完路径到达数据源的终点,从而实现了Hop-by-hop流的平衡。

NDN路由器和IP路由器的CS

  IP路由器不能重用该数据,而在NDN路由器中却可以重用数据,因为CS中的Data包的Name是不变的。

NDN中数据的交互

  在NDN网络中,数据交互中的数据包粒度比较高,大多是传输单一的数据包,一般较大的传输数据对象(例如一个完整的视频文件)都将被细分为更小的数据块。(细化程度越高,粒度越低;细化程度越低,粒度越高)

NDN中的传输

  NDN网络中没有一个单独的传输层,它将传输协议包含进了应用程序、支持库以及转发平台的策略组件之中。应用程序进程的复用,解复用是在NDN层直接使用的名称,数据的完整性和可靠性是应用程序直接处理的,可靠性的检查、数据签名和信任决定都在这里进行。

对Interest包的处理

  (1):首先根据Content Name到CS中查询,这里采用的是最长公共前缀匹配算法,如果有的话,则直接返回对应的Data包,然后丢弃掉Interest包。
  (2):如果没有,则先找PIT表,如果有匹配的话,则说明该路由节点此前已经接受过这样的一个Interest包,然后只保留传入Interest包的接口值,加入到PIT对应项的接口列表中,然后直接丢弃掉这个Interest。当有相应的Data包传回的时候,将该Data包返回到对应的列口接表中,并将该包存储到CS中。
  (3):如果在CS和PIT中都没有的话,去找FIB。如果FIB中有的话,则说明是第一次接收到这个请求,同时清楚应该该向哪些节点去请求。这时根据FIB中对应的Name的接口列表(需排除掉进来时候的接口),向其他节点转发该兴趣包,然后再在PIT中加一项新的条目表明这样的Interest包正在请求数据。
  (4):若上述三个步骤都没有得到相应的匹配结果,表明该节点没有相应的转发规则,需要直接将这个Interest包丢弃。

对Data包的处理

  当路由器接收到Data包的时候,这个Data包会沿着刚才Interest包经过的路径返回,当路由器接收到Data包的时候,它会根据这个包的名字在PIT表中查询匹配的记录,将这个包从所有匹配的接口发出,PIT表中匹配的数据都将被删除。

发布了40 篇原创文章 · 获赞 80 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_19408097/article/details/99959845