Me
Me
文章目录
  1. NDN.p4 可编程信息中心数据平面
    1. reference:ICN - CDN/NDN
      1. 什么是ICN?
      2. CDN/NDN:ICN的一种解决方案
    2. 概要
    3. 介绍
    4. Named-Data Networking
      1. reference:NDN paper(中文翻译版本)
    5. 用P4实现NDN协议数据报处理
    6. 未来工作
    7. 总结
    8. 本篇论文的意义

NDN.p4

NDN.p4 可编程信息中心数据平面

reference:ICN - CDN/NDN

CDN/NDN 是一种ICN的解决方案。

什么是ICN?

背景:用户需求决定了网络通信模型。互联网用户的需求从主机之间的通信演进为主机到网络的信息重复访问。用户关注的是信息,而不是信息的存储位置。因此,为了适应对海量信息的访问需求,应分离计算、存储、通信、应用与信息的联系,摆脱传统体系结构对信息的束缚,使信息成为体系结构的设计中心,网络通信模型为互连信息。

以信息为中心的网络通信模型,取代传统的以地址为中心的网络通信模型。

CDN/NDN:ICN的一种解决方案

1
2
3
4
5
6
7
=====
安全层
=====
网络层
=====
策略层
=====

信息名字(URL表示)作为路由标识,IP作为底层网络。提供两类分组:Interest(需求分组),Data(信息分组)。

特点:1.高效性 2.安全性

缺点:1.拓展性 2.拥塞控制 etc

概要

需求:网络层面的内容可感知,需要经常改动设备的行为

不足:难以出现基于信息中心网络的解决方案。ICN设备架构紧耦,难以在运行时网络中进行部署和测试,hard to share。

解决方案:P4 => 网络设备设计重构 => 通过高层次语言提供数据报处理过程的可编程性

本篇论文:用P4在交换机中实现NDN。

介绍

1.网络设备设计离不开两点:a.新的网络协议;b.除IP转发之外的QoS、安全等网络功能。

=> 针对 高性能可重配置(可编程)数据报处理器 的研究

== 处理器 + 新型编程语言(便捷、可重用,表达网络功能)

2.ICN相关研究:重构因特网网络层 => 可扩展性、高效的信息内容分配。

信息内容请求 => ICN设备 => 内容辨别 => 路径追溯 => 路由至最近的信息缓存设备

目前挑战:路由算法、负载均衡、硬件支持 etc

作者认为,倘若下一代可编程的设备能够描述类ICN的数据报处理过程,那么对于ICN概念的推广和发展会带来更多的好处。

本篇论文:用P4实现NDN(ICN的一种解决方案)协议的处理。

Named-Data Networking

reference:NDN paper(中文翻译版本)

NDN,是一种广为人知、十分有代表性的ICN解决方案。

1.命名网络数据报

2.In-network缓存

3.数据单元的细粒度安全嵌入

4.任播 Anycast

目的:用面向内容的网络层成为新的网络栈瘦腰,取代原有瘦腰IP。

简单介绍:

A.兴趣包和数据包,它们不含源目地址,通过URL-like名字转发。

名字 == 使用分隔符划分的不定长的字符串

eg.一个兴趣包的名字 ndn:/named-data.net/publications/ndn ccr/file.pdf

B.兴趣包和数据包在网络中传播都需要在NDN路由器中查找多张流表。

兴趣包基于 name-based路由表中的信息 进行转发;每一个不同的兴趣包的转发都会在其经过的路由器中留下轨迹,以便将数据包返回给兴趣请求者。

C.具体的处理过程:

当路由器收到一个兴趣包…

1.查找内部缓存(Content Store, CS),在P4中表示为一张流表:

找到信息 => 返回数据包;
没找到信息 => 下一步。

2.查找 待决策兴趣表(Pending Interest Table),在P4中表示为一张流表:

找到一模一样的兴趣请求 => 丢包 + 当入端口和之前的请求不一样时,记录入端口;

没找到 => 下一步。

3.查找兴趣名称的最长前缀匹配表(LPM,Fowarding Information Base Table),在P4中表示为一张流表:

根据名字前缀找路由信息

找到 => 根据表项端口输出,转发兴趣包;

没找到 => 丢包。

用P4实现NDN协议数据报处理

具体请翻阅Github:reference

主要逻辑:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
control ingress {
apply(count_table);
if (name_metadata.components != 0) {
apply(hashName_table);
apply(pit_table);
if( flow_metadata.packetType == NDNTYPE_INT )
{
if(flow_metadata.isInPIT == 0){
apply(fib_table);
}
// the next call either updates or adds an entry
apply(updatePit_table);
}
else { // this is a Data packet
// if unsolicited : drop it
// else : retrieve PIT entry and send downstream
apply(routeData_table);
}
}
}
control egress {
// may be a future place for caching logic
apply(send_packet_table);
}

未来工作

1.P4对变长TLV(可能是下一代网络协议)的支持

2.加速 由于数据报操作而产生的流表项更新

3.P4不允许省略/跳过对数据报部分的解析,换句话说,解析的部分必须是连贯的,不能出现 解析部分-未解析部分-解析部分 的情况。

总结

第一个团队使用P4编程NDN-enable路由器对数据报的处理过程。

本篇论文的意义

是我们用P4语言实现虚拟化切片最终成文的参考。

文章结构:

1.引言 => 背景介绍

2.NDN/网络虚拟化 的介绍

3.P4的介绍

4.[].p4程序的介绍
a.Header & Parser
b.Control Flow
c.Table

顺序可改,个人认为:流控制程序 => 表、动作 => 解析过程 => 首部定义。

5.Demo

6.未来工作

7.总结

2017/3/6

支持一下
扫一扫,支持Wasdns