[友猫]NFD Developers Guide--Forwarding Strategy(二)

策略

NFD 包含以下策略:

  • best route strategy
  • multicast strategy
  • client control strategy
  • NCC strategy
  • access router strategy
  • Adaptive SRTT-based Forwarding (ASF) strategy

下面我们分别介绍这几种策略:

1. best route strategy

实现:nfd::fw::BestStrategy2
方法:以最低路由开销向上游转发兴趣包;
Interest forwarding:策略项最低开销下一跳转发兴趣包,在重传抑制时间间隔内,对于收到的名字,选择器相同但NONCE不同的相似兴趣包做抑制,该时间之后收到的包则称为“retransmission”,策略将该包转发给于此前一次转发不同的最低开销下一跳,当所有的下一跳都使用国使,则向最早使用国的下一跳转发。注意抑制与重传机制并不区分来自不同下游的兴趣包,因此在转发方面不存在显著不同。
重传抑制时间隔:用于避免过度重传造成危险和不稳定行为。时间间隔的选择应确保允许合理重传同时防止由于频繁重传导致DDos 攻击。

  • 固定时间间隔:简单但不能平衡合理重传和DDOS防御;
  • 使用RRT:在策略型新前一次转发兴趣包丢失或不会被响应时允许重传,但由于RRT估计不可靠,以及消费者应用也采用RRT来控制重传,可能回造成双控制回路和潜在的不稳定行为。
  • 使用指数退避算法

我们采用指数退避算法,初始间隔为10ms,每一次重传后,间隔加倍(×2),直到达到最大重传时间(250ms)。
NACK产生:best route strategy 使用NACK提高性能。当一个兴趣包在after receiver Intererst触发器中被转发,但没有合法下一跳(当下一跳与当前进入兴趣包的下游不同时,且项该下一跳转发不违反scope时,下一跳为合法下一跳),策略拒绝兴趣包并返回“no routeNACK”给下游。
NACK处理:应为该策略为每一个进入的兴趣包只转发发哦一个下一跳,所以在接收到NACK后并不像其他下一跳尝试,而是尽可能快的项下游报告,若消费者/下游决定重传,策略回选择其他下一跳进行尝试。根据其他上游的情况,策略回采取以下行动之一:

  • 如果所有等待上游都友NACK,那么向所有下游发送NACK;
  • 如果除了一个待处理的上游外,其他所有上游都已Nacked,并且该上游也是下游,则会向该下游发送一个Nack。
  • 其他情况,策略回等待接受更多NACK或是数据。
    为了确定PIT项处于何种情形,策略在PIT的out-record中使用Nacked 域,而并不需要其他测量存储。
    第一种情况,向下游发送NACK需要指明原因。一种简单的情形是只存在一个上游,将该上游传来的原因传给所有下游,当存在多个上游,将最不严重(least severe)的原因传给下游。严重性关系:拥塞<重复<NOroute.
    第二种情况,也就是所谓“活死锁”状态,在这种状态下两个host相互等待对方返回NACK,更多细节参见·[link]http://redmine.named-data.net/issues/3033#note-7。

2.MULTICAST Strategy

实现:nfd::fw::MulticastStrategy
方法向有FIB指向的所有上游转发兴趣包;
具体过程:在收到一个需要转发的兴趣包后,策略迭代FIB项的下一跳列表,并决定哪一个下一跳是合法的,此后多播兴趣包道所有合法的下一跳,若没有合法的下一跳则拒绝兴趣包。
合法下一跳接口:A nexthop face is eligible as an upstream if this face is not already an upstream (unexpired out-record exists in PIT entry), it is not the sole downstream (another in-record exists in PIT entry), and scope is not violated;
pit::Entry::canForwardTo method is convenient for evaluating these rules.

3.client control strategy

实现:nfd::ClientControlStrategy
方法:允许本地消费者应用为每一个兴趣包选择输出接口;
具体过程:若兴趣包来自本地接口,它将在LocalControlHeader中启用NextHopFaceId功能,则兴趣包携带一个包含NextHopFaceId的LocalControlHeader,在兴趣包转发是,转发道NextHopFaceId指定的接口(若接口存在),当接口不存时丢弃兴趣包。否则,处理过程和best route strategy 一致。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值