[Lemei Huang-Notes] Native Content Discovery

2017-11-11

Posted by 黄乐玫

cache问题

  1. 谁cache?——cache placement
  2. cache谁?——content placement=cache decision+cache replacement
  3. Interest怎么找到cache?-content discovery

后两个问题合在一起可以称之为cache strategy

cache strategy分类

1
略。

问题

本质上就是Breadcrumb,只是做了点点优化。
优化目标是cache命中率。
手段是:1. 增加cache diversity 2. 让off-path的缓存副本也能被找到

场景设定

有一个ISP,ISP内若干router相连,每个router可以缓存内容。
source在ISP外,被请求的内容会从域外返回:

  1. 决定谁该存它
  2. 决定下次再有相同请求,怎么找到缓存副本

目标是:

  • 提高ISP内cache命中,从而减少inter-AS traffic
  • 同时不引起较大的开销,和latency的增加

idea

主要内容是:

  1. 存谁?随便设置一个缓存策略就行,不是重点
  2. 怎么找到缓存内容?

记录路径

使用面包屑的办法,用一个类似于PIT的表EFIB,记录到cache的trace

EFIB与PIT区别:PIT一定与路由相反,从source发出,下一跳一定是downstream;EFIB是指向cache,它的下一跳可以是upstream可以是downstream。

  • 如果Data从cache来,trace指向这个命中的cache;
  • 如果Data不是从cache来,那么当前router需要考虑缓存不缓存它:
    • 缓存策略随意
    • 若当前router不cache它,这个router的下游会有人缓存它;那trace指向下游这个cache;
    • 如果当前router cache它,那么这个router不需要记录EFIB,且从它发出去的包被视作“从cache来”。

其实设置【Data不是从cache来才进入缓存策略】是为了保证返回路径上只有一个缓存副本。
其实也可以不这么限制。
总之要保证:1. cache里存了内容a的没有关于a的EFIB;2. EFIB记录的trace是指向cache的

选择路径

2
//

走了EFIB就不会再走FIB——否则会路由循环。

优化

广播式和停等式的tradeoff,主要在于如何控制有多个下一跳时,同时发送的offpath请求包的数量。数量多,开销大,但是速度快;数量少,开销小,但是速度慢。

越靠近source,越不需要查offpath;

所以在从FIB变成EFIB的那个节点上,把“到source的代价”(比如说跳数等等)作为开始走EFIB的“启动资金”。
每生成一个offpath Interest,就花掉一些“资金”,“资金”的多少可以是固定的,可以是动态可变的;与链路状况、cache大小等可能都有关系。
没“资金”时,就无法再生成offpath Interest走EFIB了。

某个下一跳能找到内容的可能性越高,就越不需要再生成复数的请求。

  1. 某下一跳找到内容的可能性越高,产生到它的请求的“价钱”就越贵,这样使得“资金”很快被花完,就不会再走其它的下一跳了。
  2. 某下一跳找到内容的可能性越低,产生到它的请求的“价钱”就越便宜,这样使得能走更多的下一跳。