NFD中包是如何传递的:NDN中的包格式:
Interest包、Data包、Nack包(TLV编码)
NDN中的包处理过程:
OverIP(Face):
最新的NDN协议版本是2.1,实现是NFD:
Face是连接NDN和底层传输的接口,NDN forwarder可以通过face发送和接收Interest,Data,Nack,face来处理底层的通信机制。
大致流程:
在Face的上面就是我们熟悉的NDN协议了,包的处理都是按照NDN来处理的。
以前的CCNx里面的具体连接步骤(HostA和HostB):
1.在主机A上建立UNIX socket face和local ccnd A通讯
2.在主机A上建立一条和主机B的连接
3.主机B接受连接
4.在主机B上建立UNIX socket face和local ccnd B通讯
(address family为AF_UNIX)
建立:
1.直接Over以太网的(NDN直接在以太网上操作)
2.Overlay tunnel:UDP、TCP、WebSocket
3.Unix-domain socket(communication between NFD and local app)
维护:
1.FaceTable
2.FaceTable::add
3.afterReceiveInterest afterReceiveData afterReceiveNack signals
4.sendInterest sendData sendNack methods
实现细节:
1.LinkService(UDP/TCP和Forwarder之间的Link)
分片、重组、网络层计数、故障探测
2.Transport(TCP/UDP)
Acts as an wrapper over an underlying network transmission protocol(TCP,UDP,
Ethernet,etc.)and provides services like link-layer counters.
主要是和TCP、UDP之间的封装
分片和重组:
Fragmenter:将要传的数据分片,加入FragIndex和FragCount域
Reassembler:Endpoint_id(64bits)
命名:
NameTree+Hash(CityHash)
也就是给名字建Hash树,而每个名字空间里面有以下这些东西: