一种基于字节编号的命名数据网络数据分片可靠传输方法

文档序号:1492623 发布日期:2020-02-04 浏览:18次 >En<

阅读说明:本技术 一种基于字节编号的命名数据网络数据分片可靠传输方法 (Byte numbering-based named data network data fragment reliable transmission method ) 是由 安建平 刁文澜 李彤 于 2019-10-28 设计创作,主要内容包括:本发明涉及一种基于字节编号的命名数据网络数据分片可靠传输方法,属于计算机网络数据传输技术领域。包括:发布者将每项数据内容按字节进行编号;请求者发送询问兴趣包,比较转发节点的最大传输单元MTU记录最小值;发布者回复应答数据包告知字节长度和起始字节编号及最大传输单元;请求者发送请求兴趣包包含想要获取的数据内容的名称和字节编号范围;发布者将相应字节的数据内容封装为内容数据包回复给请求者;请求者等待接收内容数据包并准备重传请求兴趣包;请求者接收并校验内容数据包,根据校验结果决定重传请求兴趣包或继续请求后续内容数据包;请求者正确接收完整数据内容后结束数据传输。所述方法实现了数据可靠传输以及链路拥塞避免。(The invention relates to a byte number-based reliable transmission method for named data network data fragments, and belongs to the technical field of computer network data transmission. The method comprises the following steps: the publisher numbers each item of data content according to bytes; the requester sends an inquiry interest packet, and compares the maximum transmission unit MTU record minimum value of the forwarding node; the publisher replies a response data packet to inform the byte length, the initial byte number and the maximum transmission unit; the requester sends a request interest packet containing the name and byte number range of the data content to be acquired; the publisher packages the data content of the corresponding byte into a content data packet and replies the content data packet to the requester; the requester waits for receiving the content data packet and prepares to retransmit the request interest packet; the requester receives and verifies the content data packet, and decides to retransmit the request interest packet or continue to request the subsequent content data packet according to the verification result; the requester ends the data transmission after correctly receiving the complete data content. The method realizes reliable data transmission and link congestion avoidance.)

一种基于字节编号的命名数据网络数据分片可靠传输方法

技术领域

本发明涉及命名数据网络NDN(Named Data Networking)中一种基于字节编号的数据分片可靠传输方法,属于计算机网络数据传输技术领域。

背景技术

命名数据网络NDN保留了TCP/IP网络的沙漏模型,不同的是,NDN用内容块(Content Chunk)代替了IP包,从网络的角度看,NDN用对数据内容命名代替了对物理实体命名,用户所交换的数据内容与位置无关。NDN中数据报文分为兴趣包和数据包两类,兴趣包和数据包中都含有一个内容名称来标识内容请求者想要获取的数据内容或数据包负载的数据内容,数据包还包含所要交换的数据内容及其内容发布者的签名。NDN通过内容请求者发送兴趣包驱动内容发布者回复数据包的方式进行数据通信。NDN中路由节点均具备缓存功能来缓存经过本节点的数据包,数据包独立于其位置而存在,因此缓存的数据包可以用于响应将来相同的数据内容请求。

NDN路由节点通过3种重要的数据结构完成数据内容的转发,分别是转发信息库FIB(Forwarding Information Base)、待定兴趣表PIT(Pending Interest Table)和内容缓存库CS(Content Store)。NDN节点将兴趣包流入的接口称为“下游接口”,兴趣包流出的接口称为“上游接口”。NDN节点的CS中存储了内容发布者发送的经过本节点的数据包,可以用于响应未来潜在的相同数据内容请求;PIT记录了已经被当前节点转发出去的兴趣包中的内容名称及其对应的“下游接口”,保证当接收到数据包时能将其正确地返回给内容请求者;FIB记录了相应内容名称的兴趣包可以被转发的“上游接口”集合,用来将兴趣包转发到匹配的下一节点。

目前,NDN通过内容请求者发送兴趣包驱动内容发布者回复数据包的方式进行数据通信。在这一通信模式下,NDN数据传输可靠性存在两个问题:

(1)NDN数据通信过程中,内容发布者只负责发送数据包,内容请求者针对是否正确接收了所需的数据包对内容发布者不做出反馈,数据包传输缺少确认重传机制,无法保证数据的可靠传输;

(2)NDN中利用内容块进行数据传输,较大的内容块在NDN中传输时会因路由节点的最大传输单元MTU限制而被分成多个数据分片封装成多个数据包,路由节点根据其MTU大小决定每个数据分片的大小,数据分片的划分没有综合考虑转发路径上所有路由节点的数据处理能力,易造成数据分片在中间路由节点传输阻塞或数据处理不及时,导致网络链路拥堵而丢弃数据包。

综上所述,目前NDN中缺少一种能实现数据包接收确认的可靠传输方法和能适应路由节点数据处理能力的数据分片机制,用来实现NDN中数据分片大小的合理设置,从而避免链路拥塞,减少数据包丢弃,降低数据传输时延,实现NDN中数据的可靠传输。

发明内容

本发明的目的在于进一步提高NDN的数据传输可靠性,通过数据包接收确认方式实现可靠传输,同时合理设置NDN中传输内容块的数据分片大小,避免链路拥塞和数据包丢弃,降低数据传输时延;提出了一种基于字节编号的命名数据网络数据分片可靠传输方法。

本发明的技术方案包括以下几部分:

a)内容发布者将每项数据内容按字节进行编号;

b)内容请求者发送询问兴趣包并比较转发路径上各路由节点的最大传输单元MTU记录最小值;

c)内容发布者回复应答数据包告知数据内容的字节长度和起始字节编号及整个链路的最大传输单元;

d)内容请求者发送请求兴趣包包含想要获取的数据内容的内容名称和字节编号范围;

e)内容发布者收到请求兴趣包后将相应字节的数据内容封装为内容数据包回复给内容请求者;

f)内容请求者等待接收内容数据包并准备重传请求兴趣包;

g)内容请求者接收并校验内容数据包;

h)内容请求者根据校验结果决定重传请求兴趣包或者继续请求后续内容数据包;

i)内容请求者正确接收完整数据内容后结束数据传输。

所述基于字节编号的命名数据网络数据分片可靠传输方法,包括以下步骤:

步骤1、内容发布者将每项数据内容按字节进行编号;

具体为:NDN中内容发布者对持有的每项数据内容按字节进行编号;

其中,每项数据内容的字节长度为N+1,将每项数据内容的第一个字节编号为A,第二个字节编号为A+1,第三个字节编号为A+2……字节编号按照自然数递增,最后一个字节编号为A+N;A的取值范围是1到1000,A用于表示一项数据内容的起始字节编号;N的取值范围是20到240

步骤2、内容请求者发送询问兴趣包并比较转发路径上各路由节点的最大传输单元MTU记录最小值,具体包括如下子步骤:

步骤2.1NDN内容请求者发送询问兴趣包,在内容请求者的PIT表中记录询问兴趣包条目,设置并启动内容请求者PIT表条目定时器T1;

其中,询问兴趣包的内容是:“内容请求者想要获取的数据内容的内容名称,以及询问兴趣包转发路径上各路由节点的MTU的最小值M”;

所述最大传输单元,简写为MTU,是Maximum Transmission Unit的缩写,指的是某个NDN节点一次数据发送或数据接收过程能够传输的最大字节数;

其中,M的取值范围是20到220,此处询问兴趣包中M记录的是内容请求者的MTU;内容请求者PIT表中询问兴趣包条目的内容是:“询问兴趣包中的内容名称,以及询问兴趣包对应的下游接口”;

所述内容请求者PIT表条目定时器T1用于规定内容请求者PIT表中记录条目的生存时间,该生存时间的取值范围为1s到100s;此处规定了询问兴趣包条目的生存时间,当T1定时到期时,擦除内容请求者PIT表中的询问兴趣包条目;

步骤2.2询问兴趣包经过多个中继节点转发到达内容发布者,并比较转发路径上各路由节点的MTU记录最小值;

具体为:询问兴趣包转发过程中,转发路径上每个中继节点收到询问兴趣包,首先查看询问兴趣包中记录的路由节点MTU最小值M,若本节点MTU小于M,则将本节点MTU的值赋值给M,否则不更改M的取值;然后中继节点根据询问兴趣包中的内容名称查询FIB表,选择匹配的转发接口将询问兴趣包转发到下一中继节点,并在本节点的PIT表中记录询问兴趣包条目,设置并启动中继节点PIT表条目定时器T2;

其中,中继节点PIT表中询问兴趣包条目的内容是:“询问兴趣包中的内容名称,以及询问兴趣包对应的下游接口”;中继节点PIT表条目定时器T2用于规定中继节点PIT表中记录条目的生存时间,该生存时间的取值范围为1s到100s,此处T2规定了询问兴趣包条目的生存时间,当T2定时到期时,擦除中继节点PIT表中的询问兴趣包条目;

步骤3、内容发布者回复应答数据包告知数据内容的字节长度和起始字节编号及整个链路的最大传输单元;

其中,整个链路即询问兴趣包从内容请求者转发到内容发布者的转发路径;

步骤3具体包括如下子步骤:

步骤3.1内容发布者收到询问兴趣包,首先根据询问兴趣包中的内容名称查询相应数据内容,统计数据内容的字节长度和起始字节编号;然后查看询问兴趣包中记录的路由节点MTU最小值M,若内容发布者的MTU小于M,则将内容发布者MTU的值赋值给M,否则不更改M的取值;接着内容发布者封装应答数据包回复给内容请求者,应答数据包与询问兴趣包中的内容名称设置相同;

其中,应答数据包的内容是:“内容请求者想要获取的数据内容的字节长度是N+1,起始字节编号是A,转发路径上整个链路的最大传输单元是M”;

步骤3.2应答数据包按照询问兴趣包转发的反向路径经过多个中继节点转发到达内容请求者;

具体为:应答数据包转发过程中转发路径上每个中继节点收到应答数据包,首先根据应答数据包中的内容名称查询PIT表,若存在相同名称的询问兴趣包条目,则将应答数据包从该条目记录的下游接口转发出去,然后擦除该项PIT条目,将中继节点PIT表条目定时器T2清零;若不存在相同名称的询问兴趣包条目,则丢弃应答数据包,等待T2定时到期,当T2定时到期时,擦除中继节点PIT表中的询问兴趣包条目;

步骤3.3内容请求者等待接收应答数据包,若内容请求者收到应答数据包,首先根据应答数据包中的内容名称查询PIT表,若PIT表中存在相同名称的询问兴趣包条目,则执行步骤4;否则丢弃应答数据包,等待T1定时到期,当T1定时到期时,擦除内容请求者PIT表中的询问兴趣包条目,跳至步骤2;

步骤4、内容请求者发送请求兴趣包包含想要获取的数据内容的内容名称和字节编号范围,具体包括如下子步骤:

步骤4.1内容请求者查看应答数据包,记录数据内容的字节长度N+1,起始字节编号A,以及转发路径上整个链路的最大传输单元M;然后擦除内容请求者PIT表中的询问兴趣包条目,将内容请求者PIT表条目定时器T1清零;

步骤4.2内容请求者封装请求兴趣包,封装完成后将请求兴趣包复制一份,将复制的请求兴趣包存储在内容请求者CS中;

其中,请求兴趣包的内容是:“内容请求者想要获取的数据内容的内容名称,以及想要获取的数据内容的字节编号范围是A到A+K。”其中,K的取值范围是1到M-1,K用于保证获取数据内容的字节长度小于请求兴趣包转发路径上整个链路的最大传输单元M,从而避免链路拥塞;

步骤4.3NDN内容请求者发送请求兴趣包,在内容请求者的PIT表中记录请求兴趣包条目,启动内容请求者PIT表条目定时器T1;

其中,内容请求者PIT表中请求兴趣包条目的内容是:“请求兴趣包中的内容名称及请求兴趣包对应的下游接口”,此处T1规定了请求兴趣包条目的生存时间;

步骤4.4请求兴趣包按照与步骤2.2中的询问兴趣包相同的转发路径,经过多个中继节点转发到达内容发布者,在此转发过程中,各中继节点在本节点的PIT表中记录请求兴趣包条目,启动中继节点PIT表条目定时器T2,此处T2规定了请求兴趣包条目的生存时间;

步骤5、内容发布者收到请求兴趣包后将相应字节的数据内容封装为内容数据包回复给内容请求者,具体包括如下子步骤:

步骤5.1内容发布者收到请求兴趣包,首先根据请求兴趣包中的内容名称找到相应数据内容,然后对内容请求者想要获取的相应字节编号的数据内容进行复制,生成数据内容副本,将数据内容副本封装为一个内容数据包,将内容数据包按照请求兴趣包转发的反向路径发送出去,且内容数据包与请求兴趣包中的内容名称设置相同;

步骤5.2转发路径上每个中继节点收到内容数据包,首先根据内容数据包中的内容名称查询PIT表,若PIT表中存在相同名称的请求兴趣包条目,则执行步骤5.3;否则丢弃内容数据包,等待T2定时到期,当T2定时到期时,中继节点PIT表中请求兴趣包条目被擦除,跳至步骤6;

步骤5.3中继节点对内容数据包进行CRC校验,校验内容数据包中的数据内容是否正确,若数据内容校验正确,则将内容数据包复制一份保存在本节点的CS中,然后将内容数据包从相应PIT条目记录的下游接口转发出去,接着擦除PIT表条目,将中继节点PIT表条目定时器T2清零;若内容数据包经CRC校验错误,则丢弃内容数据包,擦除PIT表的请求兴趣包条目,将中继节点PIT表条目定时器T2清零;

其中,CRC循环冗余校验是一种根据数据内容产生简短的固定位数的校验码的一种散列函数,主要用来检测或校验数据传输或者保存后可能出现的错误,它是利用除法及余数的原理进行错误侦测的;

步骤6、内容请求者等待接收内容数据包并准备重传请求兴趣包,具体包括如下子步骤:

步骤6.1内容请求者等待接收内容数据包,若内容请求者收到内容数据包,首先根据内容数据包中的内容名称查询PIT表,若PIT表中存在相同名称的请求兴趣包条目,则跳至步骤7;若PIT表中不存在相同名称的请求兴趣包条目,则丢弃内容数据包,等待T1定时到期,当T1定时到期时,内容请求者PIT表中请求兴趣包条目被擦除,继续执行步骤6.2;

步骤6.2内容请求者PIT表条目定时器T1到期,此时内容请求者尚未收到与PIT表中请求兴趣包条目对应的内容数据包,则内容请求者擦除PIT表中的请求兴趣包条目,将内容请求者PIT表条目定时器T1清零;

步骤6.3内容请求者将存储在CS中的请求兴趣包取出,将请求兴趣包复制一份并将复制的请求兴趣包存储在CS中;

步骤6.4内容请求者重新发送请求兴趣包,并在内容请求者PIT表中记录请求兴趣包条目,启动内容请求者PIT表条目定时器T1;

其中,内容请求者PIT表中请求兴趣包条目的内容是:“请求兴趣包中的内容名称及请求兴趣包对应的下游接口”,此处T1规定了请求兴趣包条目的生存时间;

步骤6.5请求兴趣包转发过程中,转发路径上每个中继节点收到请求兴趣包,首先根据请求兴趣包中的内容名称查询本节点CS,若CS中存储了相同内容名称的内容数据包,则中继节点将该内容数据包复制一份直接回复给内容请求者,跳至步骤6;若CS中不存在相同内容名称的内容数据包,则中继节点根据请求兴趣包中的内容名称查询FIB表,选择匹配转发接口将请求兴趣包转发到下一中继节点,并在PIT表中记录请求兴趣包条目,启动中继节点PIT表条目定时器T2;当请求兴趣包经过多个中继节点转发到达内容发布者时,跳至步骤5;

步骤7、内容请求者接收并校验内容数据包,具体包括如下子步骤:

步骤7.1内容请求者收到内容数据包,且内容请求者PIT表中存在与内容数据包中的内容名称相同的请求兴趣包条目,则内容请求者擦除PIT表中记录的请求兴趣包条目,将内容请求者PIT表条目定时器T1清零;

步骤7.2内容请求者对内容数据包进行CRC校验,校验数据内容是否正确;

步骤8、内容请求者根据校验结果决定重传请求兴趣包或者继续请求后续内容数据包,具体包括如下子步骤;

步骤8.1内容数据包经过步骤7.2中的CRC校验后,若数据内容校验正确,则执行步骤8.2;若数据内容校验错误,则跳至步骤8.7;

步骤8.2内容请求者将校验正确的内容数据包存入CS中,并将CS中存储的请求兴趣包复制本丢弃;

步骤8.3内容请求者查看存入CS的内容数据包中数据内容的字节编号范围,若数据内容的最末字节编号为A+N,则跳至步骤9;否则执行步骤8.4;

步骤8.4内容请求者封装新的请求兴趣包,封装完成后将新的请求兴趣包复制一份,将复制的请求兴趣包存储在CS中;

其中,新的请求兴趣包的内容是:“内容请求者想要获取的数据内容的内容名称,以及想要获取的数据内容的字节编号范围是X+1到X+Y;

所述X指的是目前内容请求者CS中存储的已经正确接收的数据内容的最大字节编号;Y的取值范围是2到M,Y用于保证内容请求者请求后续数据内容的字节长度小于请求兴趣包转发路径上整个链路的最大传输单元M,从而避免链路拥塞;

步骤8.4中新的请求兴趣包代表内容请求者对已接收的内容数据包的确认;

步骤8.5内容请求者发送新的请求兴趣包,在内容请求者PIT表中记录请求兴趣包条目,启动内容请求者PIT表条目定时器T1;

其中,内容请求者PIT表中请求兴趣包条目的内容是:“请求兴趣包中的内容名称及请求兴趣包对应的下游接口”,T1规定了新的请求兴趣包条目的生存时间;

步骤8.6新的请求兴趣包经过多个中继节点转发到达内容发布者,在此过程中,各中继节点在本节点的PIT表中记录请求兴趣包条目,启动中继节点PIT表条目定时器T2,此处T2规定了新的请求兴趣包条目的生存时间;

步骤8.6结束后,内容请求者确认内容数据包以及继续请求后续内容数据包完毕,跳至步骤5;

步骤8.7内容请求者对内容数据包进行CRC校验后,数据内容校验错误,则内容请求者将内容数据包丢弃;

步骤8.8内容请求者将存储在CS中的请求兴趣包取出,将请求兴趣包复制一份并将复制的请求兴趣包存储在CS中;

步骤8.9内容请求者重新发送请求兴趣包,在内容请求者PIT表中记录请求兴趣包条目,启动内容请求者PIT表条目定时器T1;

其中,内容请求者PIT表中请求兴趣包条目的内容是:“请求兴趣包中的内容名称及请求兴趣包对应的下游接口”,T1规定了请求兴趣包条目的生存时间;

步骤8.10请求兴趣包转发过程中,转发路径上每个中继节点收到请求兴趣包,首先根据请求兴趣包中的内容名称查询本节点CS,若CS中存储了相同内容名称的内容数据包,则中继节点将内容数据包复制一份直接回复给内容请求者,跳至步骤6;若CS中不存在相同内容名称的内容数据包,则中继节点根据请求兴趣包中的内容名称查询FIB表,选择匹配转发接口将请求兴趣包转发到下一中继节点,并在PIT表中记录请求兴趣包条目,启动中继节点PIT表条目定时器T2;当请求兴趣包经过多个中继节点转发到达内容发布者时,跳至步骤5;

步骤9、内容请求者正确接收完整数据内容后结束数据传输,具体包括如下子步骤:

步骤9.1内容请求者接收并校验正确的内容数据包中数据内容的最后一个字节编号为A+N,表明内容请求者已经正确接收了完整数据内容;则内容请求者封装完结兴趣包,将完结兴趣包发送出去;

其中,完结兴趣包的内容是:“内容请求者请求结束通信的数据内容名称”;内容请求者不需要在PIT表中记录完结兴趣包条目;

步骤9.2完结兴趣包经过多个中继节点转发到达内容发布者,各中继节点不需要在本节点PIT表中记录完结兴趣包条目;

步骤9.3内容发布者收到完结数据包,不需要进行任何回复,数据传输结束;

至此,基于字节编号的命名数据网络数据分片可靠传输过程结束。

有益效果

本发明提出的基于字节编号的命名数据网络数据分片可靠传输方法,与现有的命名数据网络数据传输方法相比,具有如下有益效果:

1.相对于目前NDN中内容请求者发送兴趣包驱动内容发布者回复数据包的数据传输模式,所述基于字节编号的数据分片可靠传输方法的优势在于:该方法设计了NDN中数据包传输的超时重传机制、校验机制以及确认重传机制,保证内容请求者正确接收数据包,实现了数据的可靠传输;

2.相对于目前NDN中路由节点单独决定NDN内容块的数据分片大小的模式,所述基于字节编号的数据分片可靠传输方法的优势在于:该方法根据转发路径上各路由节点MTU的最小值,由内容请求者决定获取数据内容的每个数据分片的字节长度,数据分片大小与转发路径上所有路由节点的数据处理能力相适应;

3.相对于目前NDN中使用的数据传输方法,所述数据分片可靠传输方法的优势在于:该方法能够避免NDN链路拥塞和数据包丢弃,降低数据传输时延。

附图说明

图1为本发明基于字节编号的命名数据网络数据分片可靠传输方法中NDN网络拓扑结构及节点设置实例图;

图2为本发明基于字节编号的命名数据网络数据分片可靠传输方法中步骤1内容发布者将每项数据内容按字节进行编号的实例图;

图3为本发明基于字节编号的命名数据网络数据分片可靠传输方法示意图;

图4为本发明基于字节编号的命名数据网络数据分片可靠传输方法中步骤6内容请求者等待接收内容数据包并准备重传请求兴趣包以及步骤7内容请求者接收并校验内容数据包的综合流程图;

图5为本发明基于字节编号的命名数据网络数据分片可靠传输方法中步骤8内容请求者根据校验结果决定重传请求兴趣包或者继续请求后续内容数据包的流程图。

具体实施方式

下面将结合附图和实施例对本发明加以详细说明,同时论述本发明的技术方案解决的技术问题及有益效果。需要指出的是,所描述的实施例旨在便于对本发明的理解,对本发明不起任何限定作用。

实施例1

本实施例论述的是基于字节编号的命名数据网络数据分片可靠传输方法在NDN通信中的应用。

本实施例基于NDN命名数据网络,网络拓扑结构及节点设置如图1所示;本实施例中,NDN网络包含4个节点,各节点的名字分别为“Node1”、“Node2”、“Node3”、“Node4”,其中节点Node1为内容请求者,节点Node4为内容发布者;应用本发明所述基于字节编号的数据分片可靠传输方法的NDN通信实施例如下:

步骤I、内容发布者将每项数据内容按字节进行编号,具体如图2所示,包括如下步骤:

本实施例中,NDN内容发布者Node4持有一项数据内容,这项数据内容的名字是“/Data1”,数据内容的字节长度为10000,即N+1=10000,则N的取值为9999;内容发布者对这项数据内容按字节进行编号,数据内容的起始字节编号A取值为1,内容发布者将数据内容的第一个字节编号为1,第二个字节编号为2,第三个字节编号为3……最后一个字节编号为10000;

内容发布者将数据内容按字节进行编号完成后,NDN开始进行数据通信,本实施例应用基于字节编号的数据分片可靠传输方法的NDN通信过程如图3所示;

步骤II、内容请求者发送询问兴趣包并比较转发路径上各路由节点的最大传输单元MTU记录最小值,具体包括如下子步骤:

步骤II.1NDN中内容请求者Node1向内容发布者Node4发送询问兴趣包,将询问兴趣包中的内容名称设置为“/Data1”,询问兴趣包中记录的转发路径上各路由节点MTU的最小值M是3600;此处M的取值为3600,即内容请求者Node1的最大传输单元MTU值为3600;内容请求者在PIT表中记录询问兴趣包条目,设置并启动内容请求者PIT表条目定时器T1,此处T1规定了询问兴趣包条目的生存时间;

本实施例中,设置内容请求者PIT表条目定时器T1的定时时间为10s;内容请求者PIT表中询问兴趣包条目的内容是:“询问兴趣包中的内容名称‘/Data1’,询问兴趣包对应的下游接口为本地”;

步骤II.2询问兴趣包经过多个中继节点转发到达内容发布者,并比较转发路径上各路由节点的MTU记录最小值;

本实施例中NDN节点间通信链路使用电缆或光纤,节点间距离小于1000米的两个相邻节点,使用电缆连接相邻节点的通信接口;节点间距离大于1000米的两个相邻节点,使用光纤连接相邻节点的通信接口;

本实施例中,内容请求者发送的询问兴趣包,经过两个中继节点转发到达内容发布者,其中,第一个中继节点Node2的MTU是4000,第二个中继节点Node3的MTU是3000;

本实施例中,第一个中继节点Node2收到询问兴趣包,不用更改M的取值,根据询问兴趣包中的内容名称查询FIB表,将询问兴趣包从节点的接口02转发出去;第二个中继节点Node3收到询问兴趣包,将询问兴趣包中M的取值更改为3000,然后查询FIB表将询问兴趣包从节点的接口02转发出去;中继节点Node2、Node3在本节点的PIT表中记录询问兴趣包条目,设置并启动中继节点PIT表条目定时器T2,此处T2规定了询问兴趣包条目的生存时间;

本实施例中,设置中继节点PIT表条目定时器T2的定时时间为10s,两个中继节点PIT表中询问兴趣包条目的内容是:“询问兴趣包中的内容名称,以及询问兴趣包对应的下游接口”;

本实施例中,中继节点Node2的PIT表中记录询问兴趣包条目如表1所示,中继节点Node3的PIT表中记录询问兴趣包条目如表2所示;

表1中继节点Node2的PIT表询问兴趣包条目

内容名称 下游接口
/Data1 接口01

表2中继节点Node3的PIT表询问兴趣包条目

内容名称 下游接口
/Data1 接口01

步骤III、内容发布者回复应答数据包告知数据内容的字节长度和起始字节编号及整个链路的最大传输单元,具体包括如下子步骤:

步骤III.1内容发布者Node4收到询问兴趣包,首先根据询问兴趣包中的内容名称“/Data1”找到相应数据内容,统计数据内容的字节长度为10000,起始字节编号为1;然后查看询问兴趣包中记录M的值3000,本实施例中内容发布者MTU为4000,则不更改M的取值;内容发布者Node4封装应答数据包回复给内容请求者Node1;应答数据包中的内容名称设置为“/Data1”,应答数据包中的内容是:“内容请求者想要获取的数据内容的字节长度是10000,起始字节编号是1,转发路径上整个链路的最大传输单元是3000”;

步骤III.2应答数据包按照询问兴趣包转发的反向路径经过多个中继节点转发到达内容请求者;

本实施例中,应答数据包按照Node4→Node3→Node2→Node1的转发路径经过两个中继节点转发到达内容请求者;转发过程中,中继节点Node3收到应答数据包,根据应答数据包中的内容名称查询PIT表匹配询问兴趣包条目,将应答数据包从该条目记录的下游接口“接口01”转发出去,然后擦除PIT表条目,将中继节点PIT表条目定时器T2清零;中继节点Node2收到应答数据包,根据应答数据包中的内容名称查询PIT表,将应答数据包从下游接口“接口01”转发出去,然后擦除PIT表条目,将中继节点PIT表条目定时器T2清零;

步骤III.3内容请求者Node1接收应答数据包,根据应答数据包中的内容名称查询PIT表,PIT表中存在相同名称的询问兴趣包条目,则执行步骤IV;

步骤IV、内容请求者发送请求兴趣包包含想要获取的数据内容的内容名称和字节编号范围,具体包括如下子步骤:

步骤IV.1内容请求者Node1查看应答数据包,记录数据内容的字节长度10000,起始字节编号1,以及转发路径上整个链路的最大传输单元3000;然后擦除PIT表中的询问兴趣包条目,将内容请求者PIT表条目定时器T1清零;

步骤IV.2内容请求者封装请求兴趣包,将请求兴趣包中的内容名称设置为“/Data1/1/2500”,内容请求者想要获取的数据内容的字节编号范围是1到2500;内容请求者将请求兴趣包复制一份存储在CS中;

步骤IV.3内容请求者发送请求兴趣包,并在内容请求者PIT表中记录请求兴趣包条目,启动内容请求者PIT表条目定时器T1;此处T1规定了请求兴趣包条目的生存时间;内容请求者PIT表中记录的请求兴趣包条目如表3所示;

表3内容请求者Node1的PIT表请求兴趣包条目

内容名称 下游接口
/Data1/1/2500 本地

步骤IV.4请求兴趣包按照Node1→Node2→Node3→Node4的转发路径经过两个中继节点转发到达内容发布者;在此过程中,中继节点Node2、Node3在节点的PIT表中记录请求兴趣包条目并启动中继节点PIT表条目定时器T2,T2规定了请求兴趣包条目的生存时间;请求兴趣包条目的内容是:“请求兴趣包中的内容名称及请求兴趣包对应的下游接口”;

步骤V、内容发布者收到请求兴趣包后将相应字节的数据内容封装为内容数据包回复给内容请求者,具体包括如下子步骤:

步骤V.1内容发布者Node4收到请求兴趣包,首先根据请求兴趣包中的内容名称找到名字为“/Data1”的数据内容,然后对数据内容中编号1到2500的字节进行复制,生成数据内容副本;内容发布者将字节编号为1到2500的数据内容副本封装成一个内容数据包发送出去;内容数据包中的内容名称设置为“/Data1/1/2500”,内容数据包按照Node4→Node3→Node2→Node1的转发路径经过两个中继节点转发到达内容请求者;

步骤V.2转发路径上中继节点收到内容数据包,根据内容数据包中的内容名称查询PIT表,PIT表中存在相同名称的请求兴趣包条目,则执行步骤V.3;

步骤V.3中继节点对内容数据包进行CRC校验,数据内容校验正确,则将内容数据包复制一份保存在本节点CS中,然后将内容数据包从PIT条目记录的下游接口转发出去,擦除PIT表条目,将中继节点PIT表条目定时器T2清零;

后续步骤中,内容请求者等待接收校验内容数据包并准备重传请求兴趣包的具体流程如图4所示;

步骤VI、内容请求者等待接收内容数据包并准备重传请求兴趣包,具体为:

步骤VI.1内容数据包经过中继节点Node3、Node2转发到达内容请求者,内容请求者收到内容数据包,根据内容数据包中的内容名称查询PIT表,PIT表中存在相同名称的请求兴趣包条目,则执行步骤VII;

步骤VII、内容请求者接收并校验内容数据包,具体包括如下子步骤:

步骤VII.1内容请求者Node1擦除PIT表中记录的请求兴趣包条目,将内容请求者PIT表条目定时器T1清零;

步骤VII.2内容请求者对内容数据包进行CRC校验,校验结果为:内容请求者收到的内容数据包中,字节编号为1到2500的数据内容均正确;

步骤VIII、内容请求者根据校验结果决定重传请求兴趣包或者继续请求后续内容数据包,具体如图5所示,包括如下子步骤;

步骤VIII.1内容数据包经过步骤VII.2中CRC校验后,数据内容校验正确,则执行步骤VIII.2;

步骤VIII.2内容请求者将校验正确的内容数据包存入内容请求者CS中,并将CS中存储的请求兴趣包复制本丢弃;

步骤VIII.3内容请求者查看内容数据包中数据内容的字节编号范围,由于数据内容的最末字节编号为2500,不是10000,则执行步骤VIII.4;

步骤VIII.4内容请求者确认内容数据包正确接收后,封装新的请求兴趣包,将请求兴趣包中的内容名称设置为“/Data1/2501/5200”,内容请求者想要获取的数据内容的字节编号范围是2501到5200;封装完成后将新的请求兴趣包复制一份存储在内容请求者CS中;

步骤VIII.5内容请求者发送新的请求兴趣包,在内容请求者PIT表中记录请求兴趣包条目,启动内容请求者PIT表条目定时器T1;

其中,内容请求者PIT表中请求兴趣包条目的内容是:“请求兴趣包中的内容名称是‘/Data1/2501/5200’,请求兴趣包对应的下游接口为本地”;此处T1规定了新的请求兴趣包条目的生存时间;

步骤VIII.6新的请求兴趣包按照Node1→Node2→Node3→Node4的转发路径,经过两个中继节点转发到达内容发布者,在此过程中,中继节点Node2、Node3在本节点的PIT表中记录请求兴趣包条目,启动中继节点PIT表条目定时器T2,此处T2规定了新的请求兴趣包条目的生存时间;

步骤VIII.6结束后,内容请求者确认内容数据包以及继续请求后续内容数据包完毕,跳至步骤V,后续数据通信的具体流程为:

内容发布者Node4收到请求兴趣包,首先根据请求兴趣包中的内容名称找到名字为“/Data1”的数据内容,将数据内容中编号为2501到5200的字节进行复制,将字节副本封装成一个内容数据包,其内容名称设置为“/Data1/2501/5200”;

内容发布者发送内容数据包,内容数据包按照Node4→Node3→Node2→Node1的转发路径的经过两个中继节点转发到达内容请求者;

内容请求者Node1收到内容数据包,根据内容数据包中的内容名称查询PIT,PIT表中存在相同名称的请求兴趣包条目,内容请求者擦除PIT表中记录的请求兴趣包条目,将内容请求者PIT表条目定时器T1清零;

内容请求者对内容数据包进行CRC校验,编号2501到5200字节校验正确;内容请求者将校验正确的内容数据包存入内容请求者CS中,将CS中存储的请求兴趣包复制本丢弃;

内容请求者封装新的请求兴趣包,将请求兴趣包中的内容名称设置为“/Data1/5201/8000”,内容请求者想要获取的数据内容的字节编号范围是5201到8000;内容请求者将新的请求兴趣包复制一份存储在CS中;

内容请求者发送请求兴趣包,在内容请求者PIT表中记录请求兴趣包条目,启动内容请求者PIT表条目定时器T1;请求兴趣包按照Node1→Node2→Node3→Node4的转发路径经过两个中继节点转发到达内容发布者;

内容发布者Node4收到请求兴趣包,首先根据请求兴趣包中的内容名称找到名字为“/Data1”的数据内容,对数据内容中编号为5201到8000的字节进行复制,将字节副本封装成一个内容数据包,其内容名称设置为“/Data1/5201/8000”;

内容发布者发送内容数据包,内容数据包按照Node4→Node3→Node2→Node1的转发路径的经过两个中继节点转发到达内容请求者;

内容请求者Node1收到内容数据包,根据内容数据包中的内容名称查询PIT,PIT表中存在相同名称的请求兴趣包条目,内容请求者擦除PIT表中记录的请求兴趣包条目,将内容请求者PIT表条目定时器T1清零;

内容请求者对内容数据包进行CRC校验,由于电缆和光纤传输存在损耗,内容请求者接收的编号为5201到8000的字节不完全正确;

内容请求者将内容名称为“/Data1/5201/8000”的内容数据包丢弃;接着内容请求者取出CS中存储的内容名称为“/Data1/5201/8000”的请求兴趣包,内容请求者将这个请求兴趣包复制一份存储在CS中;

内容请求者重新发送请求兴趣包,在内容请求者PIT表中记录请求兴趣包条目,启动内容请求者PIT表条目定时器T1;请求兴趣包转发至中继节点Node2,节点Node2查看CS,在CS中找到内容名称为“/Data1/5201/8000”的内容数据包,这是由于在上一次内容数据包传输过程中,节点Node2正确接收了编号为5201到8000的内容数据包,并将内容数据包复制一份存储在CS中,但是内容数据包从Node2转发到内容请求者Node1的过程中,受传输介质影响,内容数据包传输出现差错;因此中继节点Node2将内容数据包复制一份回复给内容请求者;

内容请求者Node1收到内容数据包,根据内容数据包中的内容名称查询PIT表,PIT表中存在相同名称的请求兴趣包条目,内容请求者擦除PIT表中记录的请求兴趣包条目,将内容请求者PIT表条目定时器T1清零;

内容请求者对内容数据包进行CRC校验,编号5201到8000字节校验正确;内容请求者将校验正确的内容数据包存入内容请求者CS中,将CS中存储的请求兴趣包复制本丢弃;

内容请求者封装新的请求兴趣包,将请求兴趣包中的内容名称设置为“/Data1/8001/10000”,内容请求者想要获取的数据内容的字节编号范围是8001到10000;内容请求者将请求兴趣包复制一份存储在CS中;

内容请求者发送请求兴趣包,在内容请求者PIT表中记录请求兴趣包条目,启动内容请求者PIT表条目定时器T1;请求兴趣包按照Node1→Node2→Node3→Node4的转发路径经过两个中继节点转发到达内容发布者;

内容发布者Node4收到请求兴趣包,首先根据请求兴趣包中的内容名称找到名字为“/Data1”的数据内容,对数据内容中编号为8001到10000的字节进行复制,将字节副本封装成一个内容数据包,其内容名称设置为“/Data1/8001/10000”;

内容发布者发送内容数据包,内容数据包按照Node4→Node3→Node2→Node1的转发路径的经过两个中继节点转发到达内容请求者;

内容请求者Node1收到内容数据包,根据内容数据包中的内容名称查询PIT,PIT表中存在相同名称的请求兴趣包条目,内容请求者擦除PIT表中记录的请求兴趣包条目,将内容请求者PIT表条目定时器T1清零;

内容请求者对内容数据包进行CRC校验,编号8001到10000字节校验正确;内容请求者将校验正确的内容数据包存入内容请求者CS中,并将CS中存储的请求兴趣包复制本丢弃;此时内容请求者正确接收的内容数据包中,数据内容的最后一个字节编号是10000,下一步继续执行步骤VIIII;

步骤VIIII、内容请求者正确接收完整数据内容后结束数据传输,具体包括如下子步骤:

步骤VIIII.1内容请求者Node1接收并校验正确的内容数据包中数据内容的最后一个字节编号为10000,表明内容请求者已经正确接收了完整的数据内容;则内容请求者封装完结兴趣包,将完结数据包中内容名称设置为“/Data1/Ending”,完结兴趣包的内容是:“内容请求者结束对名字‘/Data1’的数据内容通信”,内容请求者将完结兴趣包发送出去;且内容请求者不需要在PIT表中记录任何条目;

步骤VIIII.2完结兴趣包按照Node1→Node2→Node3→Node4的转发路径经过两个中继节点转发到达内容发布者,在此过程中,中继节点收到完结数据包,不需要在中继节点PIT表中记录条目;

步骤VIIII.3内容发布者Node4收到完结数据包,得知内容请求者对名字为“/Data1”的数据内容的请求已经结束,则不需要回复任何内容,数据传输结束;

至此,基于字节编号的命名数据网络数据分片可靠传输过程结束。

正常情况下,内容请求者PIT表条目定时器T1以及中继节点PIT表条目定时器T2的定时时间设置均足够长,能够保证在定时时间内接收到内容数据包,且利用电缆和光纤传输内容数据包,内容数据包丢失的概率非常小,因此数据包转发过程几乎不会出现T1定时超时导致内容请求者重传请求兴趣包的情况,本实施例中没有出现T1定时超时导致内容请求者重传请求兴趣包的情况。

本实施例中多种兴趣包中的内容名称设置实例如表4所示;多种数据包中的内容名称设置实例如表5所示;

表4多种兴趣包中的内容名称设置实例表

兴趣包类型 发送方 接收方 内容名称
询问兴趣包 内容请求者 内容发布者 /Data1
请求兴趣包 内容请求者 内容发布者 /Data1/1/2500
完结兴趣包 内容请求者 内容发布者 /Data1/Ending

表5多种数据包中的内容名称设置实例表

数据包类型 发送方 接收方 内容名称
应答数据包 内容发布者 内容请求者 /Data1
内容数据包 内容发布者 内容请求者 /Data1/1/2500

本实施例描述了命名数据网络中使用基于字节编号的数据分片可靠传输方法的通信过程,通过步骤VII中内容数据包的校验机制以及步骤VIII中内容数据包的确认再请求机制,实现了命名数据网络中数据包的可靠传输;在步骤IV中,内容请求者决定获取数据内容的每个数据分片的字节长度,保证数据分片大小与NDN节点的数据处理能力相适应,有效避免了NDN链路拥塞和数据包丢弃;仿真结果表明,与目前NDN中内容请求者发送兴趣包驱动内容发布者回复数据包的方式相比,使用基于字节编号的数据分片可靠传输方法,命名数据网络的平均数据传输时延降低了180us。

以上所述的具体描述,对发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

22页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种数据传输动态限流方法、系统、装置及可读存储介质

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!