一种针对数据分片的命名数据网络连续数据推送方法与流程

文档序号:19222693发布日期:2019-11-26 02:16阅读:244来源:国知局
本发明涉及一种针对数据分片的命名数据网络连续数据推送方法,尤其涉及命名数据网络ndn(nameddatanetworking)中一种针对数据分片的连续数据推送方法,属于计算机网络数据传输
技术领域
:。
背景技术
::命名数据网络ndn是一种以命名数据为主要通信对象的网络体系,是信息中心网络的一种实现方案。在ndn中,通过对数据内容命名并根据数据包的名字信息进行寻址,改变了目前网络基于ip地址的寻址方式,实现了数据内容和主机地址的分离,数据通信模式从“端到端”转变为“端到网络”。ndn中的通信由数据请求者驱动,即数据请求者需要首先发送数据请求,数据发布者根据所请求数据内容的名称将相应的数据内容回复给数据请求者。ndn中包含两种格式的包,分别是兴趣包(interestpacket)和数据包(datapacket),其中兴趣包是用户即数据请求者为请求数据而发送的包含所需数据内容的名字的请求包,数据包是数据源即数据发布者为响应兴趣包而回复的,包含用户所需数据内容的包,并且数据包和相应兴趣包的内容名称相同,命名也一致。由于ndn中的兴趣包不携带目的地址信息,所有兴趣包均被路由器以逐跳转发的方式进行处理。ndn中按照兴趣包的流动方向,定义结点中兴趣包流入的接口为“下游接口”,兴趣包流出的接口为“上游接口”。ndn中每个路由器包含三种表结构,分别是转发信息表fib(forwardinginformationbase)、待定请求表pit(pendinginteresttable)和内容存储表cs(contentstore)。fib表记录的是相应名字的兴趣包可以被转发的“上游接口”集合,用来将兴趣包转发到所匹配的下一接口,如果没有匹配接口,则这个兴趣包将被丢弃。pit表存储的是已经被当前结点转发出去的兴趣包的名字及其对应的“下游接口”,便于结点收到数据包后,按照兴趣包转发的反向路径将数据包回复给数据请求者。cs中存储的是数据发布者发送而来的数据,在数据包转发过程中,沿途路由器将数据包的数据内容缓存在其cs中,则邻近用户可以直接从该路由器中获取数据内容,而无需到数据发布者源头那里去获取。在现有的ndn数据通信模式中,数据内容的获取必须通过用户发送兴趣包驱动数据源回复数据包的“拉”模式,且兴趣包与数据包传输存在“一对一”的限制关系。在这一通信模式下,ndn的数据通信效率存在两个主要限制因素:(1)ndn中,现有数据传输模式是用户发送兴趣包驱动数据源回复数据包的“拉”模式,即仅当用户需要某项数据内容时,用户才发送兴趣包驱动数据源回复数据包。而对于网络中的公共数据信息,如配置信息、网络拓扑信息等用户进行数据通信所必需的数据信息,若用户也通过发送兴趣包驱动数据源回复数据包的方式来获取这些数据内容,则兴趣包的发送将占用较多的链路资源。若数据源能够直接将这些数据内容“推送”给用户则能够大大节省链路带宽。(2)ndn通过兴趣包与数据包“一对一”的通信模式实现用户数据内容获取。而受网络结点的传输能力限制,较大的数据文件将被分成多个数据分片,即该数据文件由多个数据包组成。当用户需要此数据文件时,需要发送多个兴趣包,才能收到所有数据包以获取完整的数据内容。因此ndn中较大数据的分片数据传输占用较多链路资源,导致了信道链路和带宽资源的浪费。综上所述,目前ndn中缺少一种针对数据分片的连续数据推送方法,用来实现数据内容的主动推送和数据包连续传输,从而减少频繁发送兴趣包带来的链路和带宽消耗,降低数据传输时延,提高数据传输效率和链路带宽利用率。技术实现要素:本发明的目的在于进一步降低ndn的数据传输时延,减少链路带宽消耗,提高ndn的数据传输效率和链路带宽利用率;提出了一种针对数据分片的命名数据网络连续数据推送方法,即数据包的传输“推”模式。本发明的技术方案包括以下几部分:a)设置命名数据网络中各结点的名称和位置信息及结点间连接链路、b)相邻结点互相通告链路状态及各结点建立链路状态数据库、c)相邻结点交换链路状态数据库信息及各结点汇总全网链路状态信息、d)数据源结点向全网结点通告该结点持有数据内容的名称、e)各结点计算到达其他结点和获取数据内容的最优路径并写入fib表、f)数据源发送推送请求兴趣包以及用户回复推送应答数据包、g)用户发送数据请求兴趣包以及数据源回复推送数据包、h)用户计数并接收推送数据包、i)用户清点校验推送数据包并根据校验结果发送重传请求兴趣包以及数据源重传部分推送数据包。所述针对数据分片的命名数据网络连续数据推送方法,包括以下步骤:步骤1、设置命名数据网络中各结点的名称和位置信息及结点间连接链路,具体包括如下子步骤:步骤1.1设置命名数据网络ndn中各通信结点的名称和结点位置;步骤1.2在命名数据网络ndn中,用有线链路或无线链路连接相邻结点的通信接口,使之构成可通信的命名数据网络;其中,通信接口指硬件接口,简称接口,主机或路由器通过该接口接入其他硬件设备;所述其他硬件设备是指除本结点主机或路由器以外的硬件设备;所述有线链路是指两个结点之间的物理线路;无线链路是指以无线电波为传输介质,在无线通信设备之间传输数据的通信链路;步骤2、相邻结点互相通告链路状态及各结点建立链路状态数据库,具体包括如下子步骤:步骤2.1ndn中每两个相邻结点互相向对方发送一次问候兴趣包;其中,相邻结点指的是ndn中任意两个通过一条链路直接相连的结点;问候兴趣包的内容:“本结点名字以及与本结点进行数据通信的链路路由代价”;所述步骤2.1用来确定ndn中相邻结点的名字及可达性;步骤2.2ndn各结点建立本结点的链路状态数据库,根据收到的来自所有相邻结点的问候兴趣包,记录本结点所有相邻结点的名字及对应链路路由代价;其中,链路状态数据库用于记录各结点已知的有关ndn的所有链路状态,链路状态是指“本结点已知的所有结点的名字以及各结点间链路的路由代价”;步骤3、相邻结点交换链路状态数据库信息及各结点汇总全网链路状态信息,具体包括如下子步骤:步骤3.1ndn中各结点向所有相邻结点发送链路状态兴趣包;其中,链路状态兴趣包的内容:“本结点链路状态数据库的所有信息”;步骤3.2ndn各结点将收到的来自所有相邻结点的链路状态数据库信息与本结点现有链路状态数据库信息进行对比,若收到的所有链路状态数据库信息与本结点现有的链路状态数据库信息均一致,则执行3.2.1;否则,执行3.2.2;3.2.1若收到的来自所有相邻结点的链路状态数据库信息均与本结点现有的链路状态数据库信息一致,表明各结点均已记录ndn所有结点名字与链路状态,各结点关于ndn全网的链路状态数据库已经建立,继续执行步骤4;3.2.2若收到的来自相邻结点的链路状态数据库信息与本结点现有的链路状态数据库信息存在差异,则ndn结点根据相邻结点的链路状态数据库信息,补充本结点链路状态数据库中缺少的链路状态信息,继续执行步骤3.1;步骤4、数据源结点向全网结点通告该结点持有数据内容的名称;其中,全网结点指ndn中除数据源结点以外的所有结点,步骤4具体包括如下子步骤:步骤4.1ndn中数据源结点向所有相邻结点发送内容兴趣包;其中,内容兴趣包的内容:“数据源结点的名称及其持有数据内容的名称”;步骤4.2ndn中收到内容兴趣包的结点,首先记录数据源名称及其持有的数据内容的名称,然后向本结点中除接收接口以外的所有接口转发内容兴趣包;其中,接收接口即本结点的通信接口,此处特指收到内容兴趣包的接口;所述步骤4用于通知ndn所有结点数据源结点持有的数据内容的名称;步骤5、各结点计算到达其他结点和获取数据内容的最优路径并写入fib表,具体包括如下子步骤:步骤5.1ndn各结点根据本结点记录的关于ndn全网的链路状态数据库,利用dijkstra算法计算从本结点到其他结点的最优路径并添加fib表条目;其中,其他结点是一个相对概念,指ndn中除本结点以外的所有结点;所述fib表条目的内容:“结点名称以及从本结点到该结点的最优路径上的下一转发结点名称”;步骤5.2ndn各结点查询链路状态数据库确定网络中数据源结点的位置,利用dijkstra算法计算从本结点到数据源结点的最优路径并添加fib条目;其中,fib条目的内容:“数据源结点持有的数据内容的名称以及从本结点到数据源结点的最优路径上的下一转发结点名称”;所述步骤5用于为ndn结点间的数据通信提供数据转发依据;为方便表述下文中“数据源结点”简称“数据源”,“用户结点”简称“用户”;步骤6、数据源发送推送请求兴趣包以及用户回复推送应答数据包,具体包括如下子步骤:步骤6.1数据源向用户发送推送请求兴趣包,并在数据源的pit表中记录推送请求兴趣包条目,设置并启动数据源pit表条目定时器t1;其中,推送请求兴趣包的内容:“推送数据内容的名称和数据包数量n”;数据包数量n的取值范围是1~100;数据源pit表中记录推送请求兴趣包条目的内容:“推送请求兴趣包的名称,以及推送请求兴趣包对应的下游接口”;所述数据源pit表条目定时器t1的时间取值范围为1s~100s,当t1定时到期时,数据源pit表中记录的推送请求兴趣包条目将被擦除;步骤6.2用户收到推送请求兴趣包,查看得知数据源意图推送的数据内容的名称和数据包数量n;用户查看本结点中内容存储表cs的剩余空间r,根据剩余空间r的大小决定是否接受数据包推送,以及接受推送的数据包数量m;其中,cs剩余空间r的取值范围为0~10000;接受推送的数据包数量m的取值范围为1~100且m≤n,用户是否接受推送数据包的判定依据为:若数据源意图推送的数据内容不是用户所必需的数据内容,且用户cs剩余空间r小于等于n,则拒绝数据包推送;若数据源意图推送的数据内容不是用户所必需的数据内容,且用户cs剩余空间r大于n,则接受数据包推送,且接受推送的数据包数量m=n;若数据源意图推送的数据内容是用户所必需的数据内容,且用户的cs剩余空间r大于等于n,则接受数据包推送,且接受推送的数据包数量m=n;若数据源意图推送的数据内容是用户所必需的数据内容,且用户的cs剩余空间r小于n,则用户从cs缓存的数据包中,按照缓存时间先后和使用频率,将最先缓存的k个数据包中使用次数最少的(n-r)个数据包丢弃,使cs的剩余空间达到n,然后接受数据包推送,且接受推送的数据包数量m=n;其中,k的取值范围为500到2000,用户所必需的数据内容指的是ndn用户进行通信所必需的数据内容,包括网络配置信息、网络拓扑信息以及网络更新信息;步骤6.3用户向数据源发送推送应答数据包,若用户拒绝数据包推送,则推送应答数据包的内容是“用户拒绝数据包推送”;若用户接受数据包推送,则推送应答数据包的内容是“用户接受数据包推送,接受推送的数据包数量为m”;其中,推送应答数据包与推送请求兴趣包的命名相同,推送应答数据包将按照推送请求兴趣包转发的反向路径,经多个结点转发到达数据源;步骤6.4数据源收到推送应答数据包,首先查看pit表,寻找与推送应答数据包匹配的推送请求兴趣包条目,若存在匹配的pit条目,则执行步骤6.5;若不存在匹配的pit条目,则数据源丢弃推送应答数据包,结束所述命名数据网络连续数据推送过程;步骤6.5数据源查看推送应答数据包的内容,若推送应答数据包的内容是“用户拒绝数据包推送”,则执行6.5.1;若推送应答数据包内容是“用户接受数据包推送,接受推送的数据包数量为m”,则执行6.5.2;6.5.1若推送应答数据包的内容是“用户拒绝数据包推送”,则数据源将pit表中的推送请求兴趣包条目擦除,并丢弃推送应答数据包,结束所述命名数据网络连续数据推送过程;6.5.2若推送应答数据包的内容是“用户接受数据包推送,接受推送的数据包数量为m”,则数据源将pit表中的推送请求兴趣包条目擦除,在准备推送的所有数据包中,将数据包序号s为1~m的数据包,按序放入数据包推送队列;其中,数据包序号s为组成数据文件的多个数据分片按照数据组成顺序的标号,标号方式为1,2,3……n,一个数据分片聚合为一个数据包;所述数据包推送队列用于放置数据源将要推送的所有数据包;步骤7、用户发送数据请求兴趣包以及数据源回复推送数据包,具体包括如下子步骤:步骤7.1用户向数据源发送数据请求兴趣包,并在用户pit表中记录数据请求兴趣包条目,设置并启动用户pit表条目定时器t2;其中,数据请求兴趣包的内容:“请求推送的数据内容名称,以及请求推送的数据包数量m”,pit表中数据请求兴趣包条目内容:“数据请求兴趣包的名称,以及数据请求兴趣包对应的下游接口”;所述用户pit表条目定时器t2用于规定用户pit表中记录条目的生存时间,此处规定的是数据请求兴趣包条目的生存时间,其时间取值范围为1s~100s,当t2定时到期时,用户pit表中记录的数据请求兴趣包条目将被擦除;步骤7.2数据源收到数据请求兴趣包,向用户连续发送推送数据包;具体为:数据源设置并启动推送定时器t3,当t3定时到期时,数据源将数据包推送队列中首个推送数据包发送给用户,将t3清零并再次启动t3定时,即每隔t3时间数据源向用户发送一个推送数据包直到m个推送数据包全部按序发送,所有推送数据包均按照数据请求兴趣包的反向转发路径转发到达用户;其中,推送定时器t3的时间取值范围为1ms~100ms,t3用于设置推送数据包的发送频率,推送数据包即数据包推送队列中的所有数据包,且所有推送数据包均与步骤7.1中数据请求兴趣包的命名相同;步骤7.3推送数据包发送完毕,数据源向用户发送完结数据包;具体为:数据源将推送定时器t3清零并再次启动t3开始定时,当t3定时到期时,数据源向用户发送一个完结数据包,然后将t3清零并再次启动t3开始定时,t3定时到期时再向用户发送一个完结数据包,如此循环h次,即数据源在推送数据包发送结束后,每隔t3时间向用户发送一个完结数据包,共发送h个完结数据包;其中,h的取值范围为1~5,完结数据包的命名、数据内容格式均与步骤7.2中推送数据包相同,但完结数据包中的数据内容为空,且完结数据包的序号均设置为(m+1),完结数据包代表数据源已经发送全部推送数据包;步骤8、用户计数并接收推送数据包,具体包括如下子步骤:步骤8.1用户设置并启动接收计数器c1,开始接收推送数据包;其中,接收计数器的初值设置为c1=m;步骤8.2用户收到一个推送数据包,则查询pit表寻找与推送数据包名称相同的pit表匹配条目,若匹配条目存在且用户pit表条目定时器t2尚未到期,则执行步骤8.3;一旦用户pit表条目定时器t2到期,则转至步骤8.5继续执行;若用户pit表中不存在与推送数据包匹配的数据请求兴趣包条目,则用户丢弃推送数据包,结束所述命名数据网络连续数据推送过程;步骤8.3用户收到推送数据包,查看该数据包的序号是否是(m+1),若是,表明这是一个完结数据包,即用户已收到所有可接收的推送数据包,则用户将pit表条目擦除,将用户pit表条目定时器t2清零,将接收计数器c1清零,执行步骤9;若不是,则用户将接收计数器c1减1,执行步骤8.4;步骤8.4用户检测接收计数器c1是否为0,若接收计数器c1=0,执行8.4.1;若接收计数器c1≠0,则执行8.4.2;8.4.1若接收计数器c1=0,说明用户收到来自数据源的m个推送数据包,则用户将pit表条目擦除,将用户pit表条目定时器t2清零,将接收计数器c1清零,继续执行步骤9;8.4.2若接收计数器c1≠0,说明来自数据源的推送数据包尚未接收完毕,则转至步骤8.2继续执行;步骤8.5用户pit表条目定时器t2到期,则用户pit表中记录的条目会被擦除,此时数据包推送尚未完成,则用户向数据源发送一个数据续传兴趣包,在用户pit表中记录数据续传兴趣包条目,再次启动t2开始定时;其中,数据续传兴趣包的内容:“用户接收的推送数据包的最大序号为s”,s为用户接收的所有推送数据包中序号最大值,表示用户缺少序号为(s+1)~m的推送数据包;用户pit表中记录数据续传兴趣包条目内容:“数据续传兴趣包的名称,以及数据续传兴趣包对应的下游接口”,此处t2规定的是用户pit表中数据续传兴趣包条目的生存时间;所述数据续传兴趣包与步骤7.1中数据请求兴趣包的命名不相同,且多次发送的数据续传兴趣包的命名也互不相同;步骤8.6数据源收到数据续传兴趣包后,停止正在进行的数据包推送,将推送定时器t3清零,将序号为(s+1)~m的推送数据包放入数据包推送队列中;步骤8.7数据源再次启动推送定时器t3,按照推送数据包的标号顺序,每隔t3时间向用户发送数据包推送队列中的首个推送数据包,将序号为(s+1)~m的推送数据包按序推送给用户;其中,所有推送数据包均与步骤8.5中数据续传兴趣包的命名相同,所有推送数据包均按照数据续传兴趣包的反向转发路径转发到达用户;步骤8.8数据源将推送定时器t3置零,重新启动t3,t3定时到期时数据源向用户发送一个完结数据包,然后将t3清零并再次启动t3,如此循环h次,即数据源每隔t3时间向用户发送一个完结数据包,共发送h个完结数据包;其中,完结数据包的命名、数据内容格式均与步骤8.7中的推送数据包相同,但完结数据包中的数据内容为空,且完结数据包的序号均设置为(m+1);步骤8.9用户收到一个推送数据包,则查询pit表寻找与推送数据包匹配的数据续传兴趣包条目,若匹配条目存在且用户pit表条目定时器t2尚未到期,则执行步骤8.3;一旦用户pit表条目定时器t2到期,则转至步骤8.5继续执行;若用户pit表中不存在与推送数据包匹配的数据续传兴趣包条目,则用户丢弃推送数据包,结束所述命名数据网络连续数据推送过程;步骤9、用户清点校验推送数据包并根据校验结果发送重传请求兴趣包以及数据源重传部分推送数据包,具体包括如下子步骤:步骤9.1用户按序号1~m清点推送数据包,确认推送数据包是否完备;具体为:用户按序号清点推送数据包,若对应某一序号存在多个推送数据包,则保留最近接收的推送数据包,丢弃其他推送数据包;若某个序号对应的推送数据包缺失,则将缺失的推送数据包序号记入推送数据包重传列表中;若接收的推送数据包中,序号1~m的推送数据包都存在,则继续执行步骤9.2;其中,推送数据包重传列表记录的是用户接收的所有推送数据包中,缺失的推送数据包序号,以及数据内容校验错误的推送数据包序号;步骤9.2用户对所有推送数据包,进行crc校验,校验推送数据包的数据内容是否正确,若某个推送数据包的数据内容经crc校验错误,则将该推送数据包的序号记录在推送数据包重传列表中,并丢弃这个推送数据包,若某个推送数据包的数据内容经crc校验正确,则不进行任何操作;步骤9.3推送数据包清点校验完毕,用户查看推送数据包重传列表,若推送数据包重传列表为空,表明序号为1~m的所有推送数据包均正确接收,则继续执行步骤9.8;若推送数据包重传列表不为空,则计数推送数据包重传列表中记录序号的数量x,继续执行步骤9.4;步骤9.4用户向数据源发送重传请求兴趣包,在pit表中记录重传请求兴趣包条目并启动t2,重新设置并启动接收计数器c1,清空推送数据包重传列表;其中,设置接收计数器初值c1=x,此处t2规定的是用户pit表中重传请求兴趣包条目的生存时间;重传请求兴趣包的内容:“用户请求重新推送数据包的序号”,即推送数据包重传列表中记录的所有序号,pit表中重传请求兴趣包条目内容:“重传请求兴趣包的名称,以及重传请求兴趣包对应的下游接口”;上述重传请求兴趣包的命名与步骤8.5中数据续传兴趣包以及步骤7.1中数据请求兴趣包的命名均不相同,且多次发送重传请求兴趣包命名也互不相同;步骤9.5数据源收到重传请求兴趣包后,将推送定时器t3清零,将重传请求兴趣包的中用户请求的相应序号的推送数据包放入数据包推送队列;步骤9.6数据源向用户重传部分推送数据包并发送完结数据包;具体为:数据源再次启动推送定时器t3,按照数据包的标号顺序,每隔t3时间向用户发送数据包推送队列中的首个推送数据包,直到数据包推送队列中的推送数据包发送完毕;然后数据源再次启动推送定时器t3,每隔t3时间向用户发送一个完结数据包,共发送h个完结数据包;其中,所有推送数据包均与步骤9.4中重传请求兴趣包命名相同,所述完结数据包的命名、数据内容格式均与步骤9.6中的推送数据包相同,但完结数据包的数据内容为空,且完结数据包的序号均被设为(m+1);步骤9.7用户收到一个推送数据包,则查询pit表寻找与推送数据包匹配的重传请求兴趣包条目,若匹配条目存在且用户pit表条目定时器t2尚未到期,则执行步骤8.3;一旦用户pit表条目定时器t2到期,则擦除pit表中重传请求兴趣包条目,并将t2清零,转至步骤9.1继续执行;若用户pit表中不存在与推送数据包匹配的重传请求兴趣包条目,则用户丢弃推送数据包,结束所述命名数据网络连续数据推送过程;步骤9.8用户正确接收序号为1~m的推送数据包,则将m个推送数据包按序号由小到大的顺序存入用户的cs中;步骤9.9数据源中数据包推送过程结束,推送定时器t3清零;至此,针对数据分片的命名数据网络连续数据推送过程结束。有益效果本发明提出的针对数据分片的命名数据网络连续数据推送方法,与现有命名数据网络的数据传输方法相比,具有如下有益效果:1.相对于目前ndn中使用的用户发送兴趣包驱动数据源回复数据包的数据传输“拉”模式,所述连续数据推送方法的优势在于:实现了ndn中针对数据分片的连续数据推送,即数据包的传输“推”模式;2.相对于目前ndn中使用的兴趣包与数据包传输“一对一”的模式,所述连续数据推送方法的优势在于:对于网络中的数据分片文件,只需要发送一个兴趣包就可以驱动数据源按序推送所有数据包;实现兴趣包与数据包之间传输“一对多”模式,减少用户发送兴趣包的数量,从而降低链路和带宽消耗;3.相对于目前ndn中使用的数据传输模式,所述连续数据推送方法的优势在于:该方法能够降低ndn通信的数据传输时延,提高ndn的数据传输效率和链路带宽利用率。附图说明图1为本发明针对数据分片的命名数据网络连续数据推送方法中步骤1的网络拓扑结构设置实例图;图2为本发明针对数据分片的命名数据网络连续数据推送方法中步骤5所使用的dijkstra最优路径算法的计算流程图;图3为本发明针对数据分片的命名数据网络连续数据推送方法中步骤6的数据源发送推送请求兴趣包以及用户回复推送应答数据包的流程图;图4为本发明针对数据分片的命名数据网络连续数据推送方法中步骤7的用户发送数据请求兴趣包以及数据源回复推送数据包的流程图;图5为本发明针对数据分片的命名数据网络连续数据推送方法中步骤8的用户计数并接收推送数据包的流程图;图6为本发明针对数据分片的命名数据网络连续数据推送方法中步骤9的用户清点校验推送数据包并根据校验结果发送重传请求兴趣包以及数据源重传部分推送数据包的流程图。具体实施方式下面将结合附图和实施例对本发明加以详细说明,同时论述本发明的技术方案解决的技术问题及有益效果。需要指出的是,所描述的实施例旨在便于对本发明的理解,对本发明不起任何限定作用。实施例1本实施例论述的是针对数据分片的命名数据网络连续数据推送方法在ndn通信中的应用。本实施例基于ndn命名数据网络,网络拓扑结构及结点设置如图1所示;本实施例中,ndn结点命名方式为“nodex(x=1,2,3……)”,其中node1为用户,node9为数据源;数据内容命名方式为“datax(x=1,2,3……)”;应用本发明所述连续数据推送方法的ndn通信实施例如下:步骤i、设置命名数据网络中各结点的名称和位置信息及结点间连接链路,具体包括如下子步骤:步骤i.1设置命名数据网络ndn中各通信结点的名称和结点位置,本实施例中ndn各通信结点的名称和位置设置如图1所示;步骤i.2在命名数据网络ndn中,用有线链路连接相邻结点的通信接口,使之构成可通信的命名数据网络;本实施例中有线链路采用电缆和光纤,结点间距离小于1000米的两个相邻结点,使用电缆连接相邻结点间的通信接口;结点间距离大于1000米的两个相邻结点,使用光纤连接相邻结点间的通信接口;本实施例中ndn相邻结点间链路连接及网络拓扑结构如图1所示;步骤ii、相邻结点互相通告链路状态及各结点建立链路状态数据库,具体包括如下子步骤:步骤ii.1ndn中每两个相邻结点互相向对方发送一次问候兴趣包,问候兴趣包命名为“/hello/nodex”(nodex是本结点名字,x=1,2,3……);问候兴趣包的内容是“本结点名字以及与本结点进行数据通信的链路路由代价”;本实施例中,以结点node1为例,结点node1收到来自结点node2的名为“/hello/node2”的问候兴趣包,内容为“本结点名字是node2,与结点node2进行数据通信的链路路由代价为100”;结点node1还收到来自结点node4的名为“/hello/node4”的问候兴趣包,内容为“本结点名字是node4,与结点node4进行数据通信的链路路由代价为110”;步骤ii.2ndn各结点建立本结点的链路状态数据库,根据收到的来自所有相邻结点的问候兴趣包,记录本结点的所有相邻结点的名字及对应链路的路由代价;本实施例中结点node1在步骤ii.2中建立的链路状态数据库如表1所示;表1结点node1的链路状态数据库列表结点相邻结点链路的路由代价node1node2100node1node4110步骤iii、相邻结点交换链路状态数据库信息及各结点汇总全网链路状态信息,具体包括如下子步骤:步骤iii.1ndn中各结点向所有相邻结点发送链路状态兴趣包;链路状态兴趣包命名为“/nodex/linkstate”,链路状态兴趣包的内容是“本结点链路状态数据库的所有信息”,即相邻结点之间互相通告结点的链路状态数据库信息;步骤iii.2ndn各结点将收到的来自所有相邻结点的链路状态数据库信息与本结点现有的链路状态数据库信息进行对比,发现相邻结点的链路状态数据库信息与本结点现有的链路状态数据库信息存在差异,则各结点根据收到的所有相邻结点的链路状态数据库信息,补充本结点缺失的有关ndn全网的链路状态;然后执行步骤iii.1,再次向相邻结点发送本结点最新的链路状态数据库信息,各结点不断与相邻结点交换链路状态数据库信息,补充本结点链路状态数据库,直到所有结点的的链路状态数据库信息均一致,即各结点的链路状态数据库中均记录了ndn全网的结点名字与链路状态;则继续执行步骤iv;本实施例中结点node1建立的关于ndn全网的链路状态数据库如表2所示;表2结点node1中关于ndn全网的链路状态数据库列表结点相邻结点链路路由代价node1node2100node1node4110node2node3120node2node5100node3node6120node4node5110node4node7110node5node6120node5node8100node6node9110node7node8120node8node9100步骤iv、数据源结点向全网结点通告该结点持有数据内容的名称,具体包括如下子步骤:步骤iv.1ndn中的数据源结点node9向其所有相邻结点发送内容兴趣包;本实施例中内容兴趣包命名为“/data1/node9”,内容兴趣包的内容是“数据源结点的名称为node9,数据源结点持有数据内容的名称是data1”;步骤iv.2相邻结点收到内容兴趣包后,记录数据源结点名称node9,以及数据内容的名称data1,然后向本结点中除接收内容兴趣包接口以外的所有接口转发内容兴趣包,收到内容兴趣包的结点记录数据源结点名称和数据内容名称,并按照同样的转发规则转发内容兴趣包,保证ndn所有结点均收到内容兴趣包;步骤v、各结点计算到达其他结点和获取数据内容的最优路径并写入fib表,具体包括如下子步骤:步骤v.1ndn各结点根据本结点记录的关于ndn全网的链路状态数据库,利用dijkstra算法计算从本结点到所有其他结点的最优路径并添加fib表条目;所述fib表条目的内容是“结点名称以及从本结点到该结点的最优路径上的下一转发结点名称”;本实施例中,结点node1需要根据本结点链路状态数据库信息,利用dijkstra算法计算从结点node1到结点node2、node3、node4、……node9共8条最优路径,并将各最优路径上的下一转发结点的名称写入fib表的对应条目中;步骤v.2ndn各结点根据数据源名称查找链路状态数据库,确定数据源结点位置,利用dijkstra算法计算从本结点到数据源的最优路径并添加fib条目;所述fib条目的内容是“数据源结点持有的数据内容的名称以及从本结点到数据源结点的最优路径上的下一转发结点名称”;本实施例中,各结点均利用dijkstra算法计算从本结点到数据源结点node9的最优路径,并将最优路径上的下一转发结点的名称写入fib的对应条目中;步骤v执行完毕后,ndn各结点的fib表中均添加了9项条目;本实施例中用户node1利用dijkstra算法计算最优路径得到fib表如表3所示,数据源node9利用dijkstra算法计算最优路径得到fib表如表4所示;表3用户node1计算最优路径所得fib表表4数据源node9计算最优路径所得fib表目标结点或数据内容名称最优路径的下一转发结点/node1node8/node2node8/node3node6/node4node8/node5node8/node6node6/node7node8/node8node8/data1本地数据步骤vi、数据源发送推送请求兴趣包以及用户回复推送应答数据包,具体包括如下子步骤:步骤vi.1数据源node9向用户node1发送推送请求兴趣包;本实施例中,推送请求兴趣包命名为“/node1/push/data1”,推送数据包的数量n为10,因此推送请求兴趣包的内容为“推送数据内容的名称为data1,数据包数量为10个”;数据源结点在其pit表中记录推送请求兴趣包条目,启动数据源pit表条目定时器t1,本实施例中设置t1的定时时间为10s;数据源node9查询其fib表(表4),根据名称的最长前缀匹配原则,名称为“/node1/push/data1”的推送请求兴趣包与第一项条目匹配,因此数据源node9将推送请求兴趣包发送至结点node8;结点node8收到推送请求兴趣包后,在其pit表中记录推送请求兴趣包名称和其下游接口对应的结点node9,并启动一个pit表条目定时器,然后查询fib表,按照名称最长前缀匹配原则为推送请求兴趣包选择转发路径,将推送请求兴趣包再次转发出去,经过多结点转发,推送请求兴趣包最终到达结点node1;步骤vi.2用户node1收到推送请求兴趣包,查看得知数据源意图推送数据内容的名称为data1,数据包数量为10个;用户查看本结点的内容存储表cs的剩余空间r,决定是否接受数据包推送,以及接受推送的数据包数量m;本实施例中,数据内容data1属于网络配置信息,是用户所必需的数据内容,且用户node1的cs中尚未存储任何数据,内容存储表的剩余空间r为10000,r大于n,因此用户接受数据包推送且接受推送的数据包数量m=n,即m=10;步骤vi.3用户发送推送应答数据包,推送应答兴趣包与推送请求兴趣包命名相同,推送应答数据包的内容是“用户接受数据包推送,接受推送的数据包数量为10个”;由于推送请求兴趣包转发路径上的所有结点均在pit表中记录了推送请求兴趣包名称和对应的下游接口,因此相同命名的推送应答数据包将按照推送请求兴趣包转发的反向路径,经多个结点转发到达数据源node9;步骤vi.4数据源node9收到推送应答数据包,首先查看pit表,寻找与推送应答数据包匹配的推送请求兴趣包条目,本实施例中数据源node9的pit表中存在匹配的推送请求兴趣包条目;步骤vi.5由于推送应答数据包内容是“用户接受数据包推送,接受推送的数据包数量为10个”,则数据源将pit表中推送请求兴趣包条目擦除,将准备推送的所有数据包中,序号为1~10的推送数据包按序放入数据包推送队列;步骤vii、用户发送数据请求兴趣包以及数据源回复推送数据包,具体包括如下子步骤:步骤vii.1用户node1向数据源node9发送数据请求兴趣包,数据请求兴趣包命名为“/data1”,数据请求兴趣包的内容是“请求推送数据data1,接受推送的数据包数量为10个”,用户在其pit表中记录数据请求兴趣包条目,设置并启动用户pit表条目定时器t2,此处t2规定的是数据请求兴趣包条目的生存时间;本实施例中,设置用户pit表条目定时器t2的定时时间为10s;用户node1查询其fib表(表1),按照名称最长前缀匹配原则,将命名为“/data1”的数据请求兴趣包转发到结点node2,结点node2收到数据请求兴趣包,在其pit表中记录数据请求兴趣包的名称和其下游接口对应的结点node1,并启动一个pit表条目定时器,然后查询fib表,将数据请求兴趣包再次转发出去,数据请求兴趣包经过多个结点的转发到达数据源node9;步骤vii.2数据源收到数据请求兴趣包后,向用户发送推送数据包;数据源node9设置并启动推送定时器t3,本实施例中设置t3定时时间为1ms,t3定时到期时,将数据包推送队列中的首个推送数据包发送给用户,再次启动推送定时器t3,即每隔t3时间向用户发送一个推送数据包直到10个推送数据包发送完毕,所有推送数据包均按照数据请求兴趣包的反向转发路径转发到达用户;且所有推送数据包均与步骤vii.1中数据请求兴趣包的命名相同;步骤vii.3数据包推送队列中的所有推送数据包发送完毕后,数据源node9将推送定时器t3置零,然后重新启动t3,当t3定时到期时,数据源向用户发送一个完结数据包,然后将t3清零并再次启动t3开始定时,本实施例中设置h=5,即每隔t3时间向用户发送一个完结数据包,共发送5个完结数据包;完结数据包的命名、数据内容格式均与步骤vii.2中推送数据包相同,完结数据包的数据内容为空,且完结数据包的序号均设置为11;步骤viii、用户计数并接收推送数据包,具体包括如下子步骤:步骤viii.1用户node1设置并启动接收计数器c1,开始接收推送数据包;本实施例中,接收计数器c1的初值设置为c1=m,即c1=10;步骤viii.2用户node1收到一个推送数据包,首先查询pit表寻找与推送数据包匹配的数据请求兴趣包条目,本实施例中用户node1的pit表中存在匹配的数据请求兴趣包条目存在且用户pit表条目定时器t2尚未到期;步骤viii.3用户接收推送数据包,查看发现该数据包的序号不是11,表明这是一个推送数据包,而不是完结数据包,则接收计数器c1自减1;步骤viii.4用户检测发现c1≠0,说明来自数据源的推送数据包尚未接收完毕,则转至步骤viii.2继续执行,即用户不断接收推送数据包,每接收一个推送数据包,接收计数器c1自减1;本实施例中设置t2的定时时间为10s,推送数据包在电缆和光纤中传输,从数据源node9到用户node1,传输一个推送数据包需要10ms,传输10个推送数据包共需要100ms,因此在t2定时时间之内,用户能够收到所有推送数据包;当10个推送数据包接收完毕时,接收计数器c1=0,说明此时来自数据源的推送数据包已全部接收完毕,此时用户将pit表中的数据请求兴趣包条目擦除,将用户pit表条目定时器t2清零,将接收计数器c1清零;步骤viiii、用户清点校验推送数据包并根据校验结果发送重传请求兴趣包以及数据源重传部分推送数据包,具体包括如下子步骤:步骤viiii.1用户按序号1~10清点接收的所有推送数据包,本实施例中不存在多个相同序号的推送数据包,用户node1查询所有推送数据包中序号1~10的推送数据包是否都存在,本实施例中序号1~10的推送数据包均存在;步骤viiii.2用户对接收的所有推送数据包进行crc校验,本实施例中由于电缆传输存在损耗,导致序号为6的推送数据包数据内容校验错误,则用户将序号6记录在推送数据包重传列表中,并丢弃序号为6的推送数据包;步骤viiii.3用户查看推送数据包重传列表,推送数据包重传列表中记录的序号的数量x=1;步骤viiii.4用户向数据源发送重传请求兴趣包,将重传请求兴趣包命名为“/data1/repeat”,重传请求兴趣包内容:“请求重新推送序号为6的推送数据包”,并在用户pit表中记录重传请求兴趣包条目并启动t2,此处t2规定的是重传请求兴趣包条目的生存时间,设置接收计数器初值c1=1,启动接收计数器c1,用户清空推送数据包重传列表;步骤viiii.5数据源收到重传请求兴趣包,将推送定时器t3清零,将序号为6的推送数据包放入数据包推送队列中;步骤viiii.6数据源再次启动推送定时器t3,当t3定时到期时,向用户发送数据包推送队列中的首个推送数据包,即序号为6的推送数据包;本次发送的推送数据包均与步骤viiii.4中重传请求兴趣包的命名相同;然后数据源再次启动推送定时器t3,每隔t3时间向用户发送一个完结数据包,共发送5个完结数据包;完结数据包的命名、数据内容格式均与步骤viiii.6中推送数据包相同,但完结数据包的数据内容为空,完结数据包的序号均设置为11;步骤viiii.7用户收到推送数据包,查询pit表寻找与推送数据包匹配的重传请求兴趣包条目,本实施例中匹配条目存在且用户pit表条目定时器t2尚未到期,用户查询发现该数据包的序号不是11,则接收计数器c1减1,检测发现c1=0,说明推送数据包已接收完毕,用户擦除pit表中的数据请求兴趣包条目,将用户pit表条目定时器t2清零,接收计数器c1清零;接下来用户再次清点目前已接收的所有推送数据包,发现序号为1~10的推送数据包均存在,然后用户对所有推送数据包进行crc校验,所有推送数据包的数据内容均校验正确,表明用户node1已经正确接收序号为1~10的10个推送数据包;步骤viiii.8用户正确接收序号为1~10的推送数据包,则将这10个推送数据包按序号由小到大的顺序存入用户的cs中;步骤viiii.9数据源结点中,数据包推送过程结束,将推送定时器t3清零;至此,针对数据分片的命名数据网络连续数据推送过程结束。正常情况下,用户pit表条目定时器t2的定时时间足够长,能够保证在t2定时时间内用户接收所有推送数据包,且利用电缆和光纤传输推送数据包,推送数据包丢失的概率很小,因此数据包连续推送过程基本不需要数据包续传,因此本实施例中没有写入数据包的续传过程。本发明中涉及的多种兴趣包命名实例如表5所示;多种数据包命名实例如表6所示;表5多种兴趣包命名实例表兴趣包类型发送方接收方命名实例问候兴趣包ndn结点相邻结点/hello/node1链路状态兴趣包ndn结点相邻结点/node1/linkstate内容兴趣包数据源所有结点/data1/node9推送请求兴趣包数据源用户/node1/push/data1数据请求兴趣包用户数据源/data1数据续传兴趣包用户数据源/data1/continue重传请求兴趣包用户数据源/data1/repeat表6多种数据包命名实例表本实施例描述了ndn中使用针对数据分片的连续数据推送方法的通信过程,这种数据推送方法实现了ndn中数据源主动通告数据内容和连续推送数据包,即数据包传输“推”模式,也实现了兴趣包与数据包传输的“一对多”模式,减少了ndn兴趣包发送带来的链路和带宽消耗,降低了数据传输时延,提高了命名数据网络的数据传输效率和链路带宽利用率。以上所述的具体描述,对发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1