CN104539715B - 一种网络多内容请求响应方法 - Google Patents
一种网络多内容请求响应方法 Download PDFInfo
- Publication number
- CN104539715B CN104539715B CN201410857403.8A CN201410857403A CN104539715B CN 104539715 B CN104539715 B CN 104539715B CN 201410857403 A CN201410857403 A CN 201410857403A CN 104539715 B CN104539715 B CN 104539715B
- Authority
- CN
- China
- Prior art keywords
- request
- content
- node
- blocks
- network
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 44
- 230000004044 response Effects 0.000 title claims abstract description 27
- 239000011159 matrix material Substances 0.000 claims abstract description 24
- 238000011144 upstream manufacturing Methods 0.000 claims description 23
- 229910002056 binary alloy Inorganic materials 0.000 claims description 11
- 230000008569 process Effects 0.000 claims description 9
- 238000009826 distribution Methods 0.000 claims description 3
- 230000008030 elimination Effects 0.000 claims description 3
- 238000003379 elimination reaction Methods 0.000 claims description 3
- 238000004321 preservation Methods 0.000 claims description 2
- 230000003252 repetitive effect Effects 0.000 claims description 2
- 230000011218 segmentation Effects 0.000 abstract description 2
- 230000005540 biological transmission Effects 0.000 description 7
- 230000007246 mechanism Effects 0.000 description 5
- 239000006185 dispersion Substances 0.000 description 4
- 230000000694 effects Effects 0.000 description 2
- 241000208340 Araliaceae Species 0.000 description 1
- 241001269238 Data Species 0.000 description 1
- 235000005035 Panax pseudoginseng ssp. pseudoginseng Nutrition 0.000 description 1
- 235000003140 Panax quinquefolius Nutrition 0.000 description 1
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000000151 deposition Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 235000008434 ginseng Nutrition 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000003860 storage Methods 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/06—Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/60—Network streaming of media packets
- H04L65/61—Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio
- H04L65/611—Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio for multicast or broadcast
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明提供一种网络多内容请求响应方法,被请求的内容可以处于网络上多个不同的位置,每个内容可以被分成一到多个块,用户对一或多个内容的请求即为对内容块集合的请求;该请求在网络中被分成多个子请求通向不同的目的地。当不同用户的子请求在网络中相遇时,这些子请求被合并成一个更大的子请求。本发明用二进制矩阵的运算进行请求的合并、分割和查重;当内容块沿着请求来的路径反向多播给请求者时,途中相遇的内容块被进行随机网络编码,以满足下游节点对内容块集合的并发请求;内容块和编码块将在沿途节点缓存,以便就近响应后续其它用户的请求,并保证后续用户从不同节点请求得到的缓存编码块是相互独立的。
Description
技术领域
本发明涉及网络信息交互架构领域,更具体地,涉及一种网络多内容请求响应方法。
背景技术
随着互联网业务在近几年来的蓬勃发展,现存的以网络为中心的互联网已经无法适应新的业务需求。其中,以内容为中心的网络(CCN:Content-Centric Networking)被公认为最有前途的未来互联网架构之一。
在CCN中,内容具有与位置无关的全球唯一标识,用户通过发送包含一个名字标识的请求interest包来请求获取一个内容,网络则基于该标识来完成对该内容的寻址;多个用户对同一个内容的请求包,在网络中形成一棵树,该树被用做回送内容的多播树;回送的内容将沿途缓存,使得后续用户的请求在遇到该树时,可以就近获取该内容。
但在现实中,一个用户往往需要同时请求多个内容。例如,对一个Web页面的请求,都包含对多个内嵌链接的请求,这些内嵌链接的内容可能放在网络上多个不同的位置,把分散在网络中不同位置内容汇总起来需要消耗较大的下载时间和要求较大的带宽。
发明内容
本发明提供一种网络多内容请求响应方法,实现对多个内容分块的并发请求和并行传输,达到节省下载时间、数据传输量的目的。
为了达到上述技术效果,本发明的技术方案如下:
一种网络多内容请求响应方法,包括以下步骤:
S1:将网络中的每个内容分成长度为L的若干个内容块,把所述内容块分散到网络中多个不同的节点缓存,分别为每个内容块和缓存该内容块的节点分配全网唯一的标识,建立每个内容块和其缓存节点二者的标识之间的对应关系,并将该对应关系保存在网络中所有节点的转发信息库或基于标识的路由表之中,用于每个节点确定通向每个内容块缓存节点的下一跳;
S2:一个用户对分布在网络中的多个内容并发地发出请求,该请求即是对所述多个内容的所有内容块集合的一个请求;网络中每个节点转发的每个请求包将携带对所述内容块集合的一个子集的请求,所述子集合中的内容块缓存节点,对当前节点来说,都具有相同的下一跳;当网络中每个节点从其多个接口收到多个请求包时,将这些请求包所携带的集合合并,得到一个并集,查询路由表确定通向所述并集中每个内容块缓存节点的下一跳,然后按照下一跳的不同,将所述并集分割成若干个子集,每个子集放在一个请求包内向与其对应的下一跳节点转发出去;
S3:缓存内容块的每个网络节点用缓存的内容块响应收到的请求包,当网络中任一节点收到多个不同内容块和编码块时,将所述的多个不同内容块和编码块缓存在本节点,然后用缓存的全部内容块和编码块进行随机网络编码生成新的相互独立的编码块,并用新编码块响应从本节点各个接口收到的对各内容块子集的请求;本节点缓存的内容块和编码块用于响应后续用户的请求。
进一步,所述步骤S2中用一个请求包携带对一个内容块集合的请求,其生成过程如下:
S21:将一个用户并发请求的多个内容的所有内容块的标识用集合S={name1,...,nameN}表示,其中name1,...,nameN是不同内容块的标识,N是总块数;
S22:当是S的子集时,把对s的请求表示为[s,B],B是N×N的二进制矩阵,如果B的对角线元素bxx=1;如果namex,bxy=1,否则bxy=0;如果B的第z行和第z列为全0;把包含请求[s,B]的请求包表示为interest[s,B];当s=S时,B是N×N的全1矩阵,interest[S,B]即为一个用户的初始请求;
S23:对任一节点来说,构造子集s的依据是,如果namex,则与namex和namey所在目的网络所对应的下一跳是相同的。
再进一步,所述步骤S2中将收到的多个请求包所携带的集合合并到一个并集的方法如下:
S24:当收到的interest[s1,B1],...,interest[sk,Bk]是从k个不同的接口收到的来自于不同用户的请求包时,把[s,B]作为[s1,B1],...,[sk,Bk]合并后得到的并集,即令其中"|"代表两个矩阵的对应位之间进行二进制或运算。
再进一步,所述步骤S2中将一个并集分割成多个子集的具体过程如下:
S25:当并集[s,B]需要按照下一跳的不同分割成多个子集[s'1,B'1],...,[s'k',B'k']时,令若i≠j时,s'i∩s'j=null,B'i&B'j=0,所述的其中"&"代表两个矩阵的对应位之间进行二进制与运算,然后把构造好的请求包interest[s'1,B'1],...,interest[s'k',B'k']分别向k'个不同的下一跳转发出去。
最后,所述步骤S2中网络中每个节点收到的来自多个用户的请求包不会在短时间内同时到达,在先期到达的请求被转发出去之后,避免后期转发的请求包包含重复请求的方法如下:
当[s'i,B'i]是步骤S25已经从第i个接口发送出去的请求,[s'i1,B'i1]是步骤S25新的要从第i个接口发送的请求时,令△B'i=(B'i^B'i1)&B'i1,其中"^"代表两个矩阵的对应位之间进行二进制异或运算;当△B'i不是全0矩阵,令其非0行所在的对角线元素为1,找到其非0行对应的内容块的标识,并把这些内容块的标识加到△s'i之中;实际从第i个接口发送出去的请求包为interest[△s'i,△B'i]。
在所述步骤S3中,节点用收到的内容块和编码块进行随机网络编码,生成相互独立的编码块,以满足已从每个接口收到的请求,具体方法是:
S31:确定代表同一用户请求的全1子矩阵:设该节点已收到的汇总请求为并集[s,B];在删除B的相同编号(与相同内容块名字对应)的某些行和列之后,如果剩余的是一个r×r的全1矩阵,则把该矩阵称为B的对角线上的一个阶数为r的全1子矩阵;如果B的对角线上的最大全1子矩阵的阶数是b,则把它记为b=diagOne(B);
S32:确定已收到编码块集合是否符合B的要求:当收到由所指的|V|个内容块通过随机网络编码得到的b≤|V|个编码块时,把这些编码块简记为NC(V,b);然后采用高斯消元法进行检查:设W是NC(V,b)的b×|V|系数矩阵,如果对于B的对角线上的任意一个r阶全1子矩阵,由W中对应列组成的b×r子矩阵的秩是r,则NC(V,b)能够满足[s,B]的要求;所述的V是包含集合s的集合;
S33:当[s,B]是步骤S24确定的从多个接口收到的[s1,B1],...,[sk,Bk]的并集时,用NC(V,b)中任意bi=diagOne(Bi)个编码块满足[si,Bi]的请求,其中i=1,...,k。
进一步,步骤S3把收到的内容块和编码块缓存起来,用于响应后续用户请求的方法,具体如下:
S34:检查是否有本地缓存:当[s,B]是步骤S24确定的从多个接口收到的并集时,先检查s所列的内容块在本节点是否有缓存;设本节点缓存的内容块集合为C,则从s中去掉对C∩s的请求,并把B中与C∩s对应的行和列变为全0,即令s=s\(C∩s),B=B\(C∩s);
S35:如果在采取步骤S34之后剩余的[s,B]非空,则采用步骤S25的方法,把[s,B]分成多个子集用多个请求包转发出去;在收到所请求的全部内容块和编码块之后,与本节点缓存的内容块集合C一起,采用步骤S31-33的方法,生成相互独立的编码块,并按照从每个接口收到的请求,把所需个数的独立编码块从每个接口转发出去。
最后,每个节点缓存收到的内容块和编码块并把编码块等同于内容块使用,具体过程如下:
S36:每个节点都把从上游节点收到的内容块和编码块缓存在本地,用于响应下游节点未来的请求;但不缓存自己通过随机网络编码新产生的、用于送给下游节点的编码块;
S37:对本节点新产生的b个独立编码块分别分配一个不同的名字:title1,title2,…,titleb∈s,要求在B中与这些名字对应的子矩阵是全1矩阵;把所分配的名字同编码块一起响应给下游节点;当被命名为titlen的编码块被下游节点缓存时,将等同于内容块titlen使用,用于响应更下游节点未来的请求;
S38:当节点可以从收到的编码块中解码得到内容块时,解码并缓存内容块;相同名字的块只缓存一份,并且相比于相同名字的编码块,优先缓存内容块。
与现有技术相比,本发明技术方案的有益效果是:
本发明将保存在网络节点中的内容进行分块以后,把内容块尽可能地的分散存储到网络各节点处,使得用户无论是对一个内容还是对多个内容的请求,都变成对多个内容块的请求,更适合于内容块的并行下载,下载时间更快,在内容块向用户发送的过程中又将内容块进行随机网络编码生成比内容块少的编码块,用比内容块数少的编码块多播给用户,以节省数据传输的量。
附图说明
图1(a)本发明实施例1中用户请求一个内容块集合时请求包所走路径形成的多播树,图1(b)是本发明实施例1中内容块发送回用户所走路径的倒转树的示意图;
图2是本发明实施例1中节点收到一个请求interest时的处理过程流程图;
图3是本发明实施例1中节点收到一个编码块时的处理过程流程图;
图4是本发明实施例1中节点收到下游请求interests和向上游转发请求interests的示例图;
图5是本发明实施例1中节点收到上游的响应和向下游转发响应的示例图。
具体实施方式
附图仅用于示例性说明,不能理解为对本专利的限制;
为了更好说明本实施例,附图某些部件会有省略、放大或缩小,并不代表实际产品的尺寸;
对于本领域技术人员来说,附图中某些公知结构及其说明可能省略是可以理解的。
下面结合附图和实施例对本发明的技术方案做进一步的说明。
实施例1
本发明的多内容并发请求和响应机制,揭示了一种新的请求-响应模型,即适用于传统的对一个内容的请求-响应,又适用于对多个内容的并发请求。在每个内容都被分成一到多个块之后,多内容请求-响应模型,就可以描述为一组用户对一个内容块集合的请求-响应。在该模型中,每个用户对该内容块集合的请求路径形成一棵多播树,如图1(a)所示,同时该组用户对每个内容块的请求路径形成一棵倒转的树,如图1(b)所示。内容块沿着各自的倒转树并发下载,并在这些倒转树交织之处,对内容块进行随机网络编码,用比内容块数少的编码块多播给用户,以节省数据传输的量。沿途节点则把收到的内容块和编码块缓存在本地,以响应后续的请求。为了实现这种多内容请求-响应模型,
一种网络多内容请求响应方法,包括以下步骤:
S1:将网络中的每个内容分成长度为L的若干个内容块,把所述内容块分散到网络中多个不同的节点缓存,分别为每个内容块和缓存该内容块的节点分配全网唯一的标识,建立每个内容块和其缓存节点二者的标识之间的对应关系,并将该对应关系保存在网络中所有节点的转发信息库或基于标识的路由表之中,用于每个节点确定通向每个内容块缓存节点的下一跳;
S2:一个用户对分布在网络中的多个内容并发地发出请求,该请求即是对所述多个内容的所有内容块集合的一个请求;网络中每个节点转发的每个请求包将携带对所述内容块集合的一个子集的请求,所述子集合中的内容块缓存节点,对当前节点来说,都具有相同的下一跳;当网络中每个节点从其多个接口收到多个请求包时,将这些请求包所携带的集合合并,得到一个并集,查询路由表确定通向所述并集中每个内容块缓存节点的下一跳,然后按照下一跳的不同,将所述并集分割成若干个子集,每个子集放在一个请求包内向与其对应的下一跳节点转发出去;
S3:缓存内容块的每个网络节点用缓存的内容块响应收到的请求包,当网络中任一节点收到多个不同内容块和编码块时,将所述的多个不同内容块和编码块缓存在本节点,然后用缓存的全部内容块和编码块进行随机网络编码生成新的相互独立的编码块,并用新编码块响应从本节点各个接口收到的对各内容块子集的请求;本节点缓存的内容块和编码块用于响应后续用户的请求。
具体实施如下:
首先由内容所在的源节点对内容进行分块。分块的目的是便于网络编码、并行传输和分散缓存。具体是把每个内容都分成固定长为L的若干个内容块;如果最后一块长度小于L,则填充一些比特,使得其长度等于固定长L。固定长L将是全网源节点都知道的一个参数。所以每个内容都被分成至少一个块。
在分块的基础上对内容块进行命名,目的便于实现基于名字的寻址和路由。设每个内容都有全网唯一的名字URLx,可以把其第k个分块的名字命名为:URLx/k;并把被同时请求的内容的所有分块的名字集合记为S={name1,...,nameN},其中name1,...,nameN代表不同内容块的名字,N是总块数。内容块的命名方法,将与内容的命名机制捆绑在一起,使得只要知道了内容名字,就知道了该内容有多长(或多少个分块)、每个分块的命名方法。
源节点在对内容分块以后,把内容块尽可能地的分散存储到网络各处,目的是使得用户无论是对一个内容还是对多个内容的请求,都变成对多个内容块的请求,更适合于内容块的并行下载。所以,源节点可以把新产生或被更新的内容块随机地推送到网络上多个节点中缓存,或者把URLx的第k个块推送到节点n=hash(URLx/k)中缓存,其中hash(x)是散列函数,用于把内容块的名字映射到网络中的某个节点地址;内容块的名字与放置地点之间的对应关系,将利用网络原有的命名寻址机制,记录在转发信息库FIB或者基于名字的路由表之中。
用户发出的对一组内容的请求都是对这些内容的全部分块的请求,即对S的请求。该请求在以内容块放置点为目的地的多播过程中,将逐步被分成多个子集。来自同一个用户的请求不会在途中相遇,但不同用户对S的各个子集的请求有可能在途中节点相遇。所以,需要在一个interest包中表达对S的多个子集的请求信息。为此,可以用一个二进制矩阵表达对多个内容块的并发请求,即当是S的子集时,把对s的请求表示为[s,B],B是N×N的二进制矩阵,如果则其对角线元素bxx=1;如果namex,则bxy=1,否则bxy=0;如果则B的第z行和第z列为全0;把包含请求信息[s,B]的数据包表示为interest[s,B];当s=S时,B是N×N的全1矩阵,interest[S,B]即为用户发出的初始请求包。
基于这种表达方法,当节点收到来自多个不同用户的interests时,通过二进制矩阵的或运算可以把多个interests合并到一个interest。例如,当interest[s1,B1]和interest[s2,B2]是来自于不同用户的请求时:令s=s1∪s2,B=B1|B2,其中"|"代表两个矩阵的对应位之间进行二进制或运算;则可以得到合并的请求interest[s,B]。后面把这种合并运算简记为[s,B]=combine([s1,B1],[s2,B2])。
在实际应用中,可以根据内容块名字之间的关系、s与B之间的关系、B的对称性和包含全0行和列的特点等,对interest[s,B]的长度进行压缩。例如,属于同一个内容的内容块子集,可以用URLx:d来表示,其中URLx是该内容的名字,d是一个二进制数,其第k位等于1即表示该子集中包含URLx的第k块,并把d的连续为0的高位去掉。又例如,可以把B的全0行和全0列去掉,并利用其对称性,只保留其上三角阵。
对于需要向上游转发的请求[s,B],必须按照目的地的不同分割成多个interests从不同接口发送出去,从不同接口发送出去的interest具有不同的目的地,所以,这种分割是把s分割不相交的子集。例如,当把[s,B]分割成interest[s1,B1]和interest[s2,B2]两个请求包时,令s1∪s2=s,s1∩s2=null,B1|B2=B,B1&B2=0,其中"&"代表两个矩阵的对应位之间进行二进制与运算。
考虑到来自下游的interests不会同时到达本节点,向上游转发的interests也会有先后,所以需要避免向上游转发的多个interests包含重复的请求。这可以通过二进制矩阵的异或运算来实现。例如,当interest[s,B]是已经发送出去的请求,[s1,B1]是新要发送的请求时,令[Δs1,ΔB1]=[s1,B1]\[s,B],[s,B]=combine([s,B],[s1,B1]);当ΔB1不是全0矩阵时,实际发送interest[Δs1,ΔB1]而不是interest[s1,B1],避免携带[s,B]中已发送请求信息。其中[Δs1,ΔB1]=[s1,B1]\[s,B]代表令ΔB1=(B1^B)&B1以及令ΔB1非0行所在的对角线元素为1,然后令Δs1与ΔB1的非0行对应。
interest所包含的请求信息,经过不断的分割(多播),在到达最上游的源节点时,将变成对该源节点所存储的内容块的请求,不需要再转发。所以,最上游节点回送的将是被请求的内容块本身。但当该内容块被回送到次上游节点时,次上游节点可能需要利用其从多个最上游节点收到的内容块和本节点存储的内容块,进行随机网络编码,以满足其下游节点的请求。当使用子集s≠S的内容块产生b<|s|个独立编码块时,这些编码块在下游与其它方向收到的、不属于s的内容块和编码块进行进一步随机网络编码时,不可能产生在s上的大于b的独立编码块。所以,需要根据二进制矩阵所携带的并发请求信息确定随机网络编码块的独立性、并用得到的编码块响应下游的请求。
由于interest[s,B]中所携带的信息反映了下游用户的汇总请求,其中每个用户的请求都是B的在对角线上的一个全1子矩阵。所以,在删除B的相同编号(与相同内容块名字对应)的某些行和列之后,如果剩余的是一个r×r的全1矩阵(把该矩阵称为B的对角线上的一个阶数为r的全1子矩阵,它不同于通常意义上的、可以处于B中任意位置的全1子矩阵),则代表了与该子矩阵对应的内容块子集可能来自于同一个用户的请求,所对应的编码块必须相互独立。后面把B的对角线上的最大全1子矩阵的阶数记为b=diagOne(B)。
当收到b个包含集合s的集合V中的内容块通过多次随机网络编码得到的编码块时,把这些编码块简记为NC(V,b);由于随机网络编码并不能保证编码块之间一定独立,所以需要采用高斯消元法进行检查,以确定这些编码块集合是否符合B的要求:设W是NC(V,b)的b×|V|系数矩阵,如果对于B的对角线上的任意一个r阶全1子矩阵,由W中对应的列组成的b×r子矩阵的秩是r,则NC(V,b)能够满足[s,B]的要求。
当[s,B]是收到的[s1,B1],...,[sk,Bk]等多个请求的汇总请求时,即当[s,B]=combine([s1,B1],...,[sk,Bk])时,可以用NC(V,b)直接满足这些分请求,即用NC(V,b)中任意bn=diagOne(Bn)个编码块满足[sn,Bn]的请求,n=1,...,k,其中|s|≥b≥max{|s1|,...,|sk|}≥max{b1,...,bk}。这是因为B1和B2的任意全1子矩阵在B中都有一个对应的全1子矩阵,所以当NC(V,b)能够满足[s,B]时,就可以满足[s1,B1]和[s2,B2]。
反过来,当interest[s1,B1]和interest[s2,B2]是按照[s,B]的目的地向上游分发的两个请求包时,由于s1∪s2=s,s1∩s2=null,所以需要用上游对interest[s1,B1]和interest[s2,B2]的响应NC(V1,b1)和NC(V2,b2)进行随机网络编码,得到新的b个独立编码块,记为NC(V,b),其中B1|B2=B,B1&B2=0,b1=diagOne(B1),b2=diagOne(B2),b=diagOne(B),然后把NC(V,b)用于满足[s,B]的请求。
显然,当把s分成不相交的两个子集s1和s2时,相当于把B分成了四个子矩阵,其中对角线上的是的B1和B2,另外两个不妨分别称之为C1和C2;类似地,也可以把W按照列一分为二,分成了W1和W2两个子矩阵,它们分别能够满足B1和B2对秩的要求。当B对角线上的某个全1子矩阵不属于B1或B2时,一定包括了B1、B2、C1、C2各一部分。这些被涉及的部分一定都是全1子矩阵。所以,用W1中的若干行和W2中的若干行线性组合得到的线性独立的行,可以满足B的这个全1子矩阵对秩的要求。
另外,当interest[s,B]来自同一个用户时,b=|s|=b1+b2,所以没有增加需要从上游下载的数据量,也没有减少向下游发送数据的量;但当interest[s,B]代表多个用户请求时,b≤b1+b2≤|s1|+|s2|=|s|,所以减少了|s|-(b1+b2)个需要从上游下载的数据量,也减少了|s|-b个需要向下游发送的数据量。所以,本发明可以减少数据的传输量。
根据上述多内容块的请求机制,网络中每个节点在收到来自下游的一个interest时,如图2所示,其处理过程如下:
(1)、汇总本节点收到的interests和确定新增的请求:当该节点从其接口facei新收到一个interest[s',B']时,令[s,B]=[s',B']\[Ps,PB]是其新增的、需要向上游转发的请求,其中[Ps,PB]是本节点已经收到但还没有得到响应的汇总请求;然后把汇总请求更新为[Ps,PB]=combine([Ps,PB],[s',B']),[Psi,PBi]=combine([Psi,PBi],[s',B']),其中[Psi,PBi]是来自facei的汇总请求,i=1,...,m,m是该节点具有的接口数;
(2)、检查是否有本地缓存:如果s非空,则先检查s所列的内容块在本节点是否有缓存:设本节点缓存的内容块集合为C,则从s中去掉对C∩s的请求,并把B中与C∩s对应的行和列变为全0,即令s=s\(C∩s),B=B\(C∩s);
(3)、查找转发信息库FIB确定转发接口:如果s非空,则按照s中的每个内容块的名字,查找本节点的转发信息库FIB或者基于名字的路由表,确定通向每个内容块所在地的接口;
(4)、对[s,B]进行分割:把s按照接口分割成不相交子集s1,s2,...,sm,并相应地把B分成多个矩阵:B1,B2,...,Bm,其中Bj与sj对应,Bj中的行和列对应的内容块名字如果不属于sj,则为全0的行和列,j=1,...,m;
(5)、发送[sj,Bj]:如果sj非空,则把[sj,Bj]从接口facej发送出去,并令flagj=pending,表示从facej发送了请求,需要等待来自facej的响应,j=1,...,m。
根据上述多内容块的响应机制,网络中每个节点在收到上游响应的一个编码块时,如图3所示,其处理过程如下:
(6)、先按照编码块所包含的内容块信息,找到对应的待响应汇总请求Ps(因为对于不同的内容组合该节点将有不同的Ps),然后按照Ps的不同,分类缓存收到的编码块;
(7)、当收到所有flagj=pending的接口发来的传输结束标志Endj,j=1,...,m,时,说明上游站应该响应的编码块数已经全部收齐。设C是本节点缓存的内容块集合,Ps∩C是待响应汇总请求所需要的内容块,则用按照Ps缓存的全部编码块和本节点缓存的内容块子集Ps∩C进行随机网络编码,得到b=diagOne(PB)个新的编码块;
(8)、设bi=diagOne(PBi),则:当bi=|Psi|时,把内容块集合Psi∩C以及新编码块中的任意bi-|Psi∩C|个编码块,从接口facei发送出去。其目的是在允许的情况下尽可能把原始内容块响应给下游。
(9)、当bi<|Psi|时,把新编码块中的任意bi个编码块从接口facei发送出去。
(10)、当从接口facei发送完bi个内容块或新编码块时,在最后一块带上结束标志Endi,以通知下游节点已经发送完毕;然后重置[Ps,PB],[Psi,PBi],flagi,i=1,...,m。
网络内缓存的好处是使得内容块被按需缓存到更靠近用户的节点。本发明揭示的方法,不仅缓存内容块,还缓存编码块,这样不仅使得缓存更加分散,减少了对节点存储容量的需求,还提高了数据的可靠性。同时,还把编码块等同于内容块使用,减少了重复传输的量。如图3所示。具体来说:每个节点都把从上游节点收到的原始内容块和编码块缓存在本地,用于响应下游节点未来的请求;但不缓存自己通过随机网络编码新产生的、用于送给下游节点的编码块。
(11)、为了避免同一个编码块在未来被下游节点用于响应同一个用户的请求,造成该用户收到的编码块之间不同独立,本节点对新产生的b个独立编码块分别分配一个不同的名字:name1,name2,…,nameb∈Ps,要求在PB中与这些名字对应的子矩阵是全1子矩阵;把所分配的名字同编码块一起响应给下游节点;当被命名为namek的编码块被下游节点缓存时,将等同于内容块namek使用,用于响应更下游节点未来的请求;
当该节点可以从收到的编码块中解码得到内容块时,解码并缓存内容块;相同名字的块只缓存一份,并且相比于相同名字的编码块,优先缓存内容块。
图4和图5是一个简单的多内容请求-响应的例子。在图4中,节点n1和n2分别向其上游节点n0转发了请求包interest[s1,B1]和interest[s2,B2]。由于这两个请求来自于不同的用户,所以s1与s2可能有交集。它们在节点n0的汇总请求为[Ps,PB]=combine([s1,B1],[s2,B2])。假设节点n0没有缓存的内容块,则节点n0必须向其上游节点n3和n4转发关于[Ps,PB]的请求。根据Ps中内容块所在地地址,必须把请求分别从节点n0的接口f3和f4转发出去。所以,Ps被分割成s3和s4两个不相交的子集,PB也被分割成B3和B4两个不相交的矩阵。最后interest[s3,B3]和interest[s4,B4]被节点n0分别发送给其上游节点n3和n4。
在图5中,上游节点n3和n4分别针对interest[s3,B3]和interest[s4,B4]响应了NC(V3,b3)和NC(V4,b4)。节点n0在收到全部这些编码块之后,用这些编码块的集合NC(V3,b3)∪NC(V4,b4)进行随机网络编码,得到新的编码块NC(V,b),V=V3∪V4。其中的NC(V,b1)和NC(V,b2)被分别从节点n0的接口f1和f2发送出去,用于响应来自于其下游节点n1和n2的请求interest[s1,B1]和interest[s2,B2],其中b1=diagOne(B1),b2=diagOne(B2),b=diagOne(PB).
相同或相似的标号对应相同或相似的部件;
附图中描述位置关系的用于仅用于示例性说明,不能理解为对本专利的限制;
显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明权利要求的保护范围之内。
Claims (8)
1.一种网络多内容请求响应方法,其特征在于,包括以下步骤:
S1:将网络中的每个内容分成长度为L的若干个内容块,把所述内容块分散到网络中多个不同的节点缓存,分别为每个内容块和缓存该内容块的节点分配全网唯一的标识,建立每个内容块和其缓存节点二者的标识之间的对应关系,并将该对应关系保存在网络中所有节点的转发信息库或基于标识的路由表之中,用于每个节点确定通向每个内容块缓存节点的下一跳;
S2:一个用户对分布在网络中的多个内容并发地发出请求,该请求即是对所述多个内容的所有内容块集合的一个请求;网络中每个节点转发的每个请求包将携带对所述内容块集合的一个子集的请求,所述子集合中的内容块缓存节点,对当前节点来说,都具有相同的下一跳;当网络中每个节点从其多个接口收到多个请求包时,将这些请求包所携带的集合合并,得到一个并集,查询路由表确定通向所述并集中每个内容块缓存节点的下一跳,然后按照下一跳的不同,将所述并集分割成若干个子集,每个子集放在一个请求包内向与其对应的下一跳节点转发出去;
S3:缓存内容块的每个网络节点用缓存的内容块响应收到的请求包,当网络中任一节点收到多个不同内容块和编码块时,将所述的多个不同内容块和编码块缓存在本节点,然后用缓存的全部内容块和编码块进行随机网络编码生成新的相互独立的编码块,并用新编码块响应从本节点各个接口收到的对各内容块子集的请求;本节点缓存的内容块和编码块用于响应后续用户的请求。
2.根据权利要求1所述的网络多内容请求响应方法,其特征在于,所述步骤S2中用一个请求包携带对一个内容块集合的请求,其生成过程如下:
S21:将一个用户并发请求的多个内容的所有内容块的标识用集合S={name1,...,nameN}表示,其中name1,...,nameN是不同内容块的标识,N是总块数;
S22:当是S的子集时,把对s的请求表示为[s,B],B是N×N的二进制矩阵,如果B的对角线元素bxx=1;如果namex,bxy=1,否则bxy=0;如果B的第z行和第z列为全0;把包含请求[s,B]的请求包表示为interest[s,B];当s=S时,B是N×N的全1矩阵,[S,B]即为一个用户的初始请求;
S23:对任一节点来说,构造子集s的依据是,如果namex,则与namex和namey所在目的网络所对应的下一跳是相同的。
3.根据权利要求2所述的网络多内容请求响应方法,其特征在于,所述步骤S2中将收到的多个请求包所携带的集合合并到一个并集的方法如下:
S24:当收到的interest[s1,B1],...,interest[sk,Bk]是从k个不同的接口收到的来自于不同用户的请求包时,把[s,B]作为[s1,B1],...,[sk,Bk]合并后得到的并集,即令B=B1|B2|...|Bk,其中"|"代表两个矩阵的对应位之间进行二进制或运算。
4.根据权利要求3所述的网络多内容请求响应方法,其特征在于,所述步骤S2中将一个并集分割成多个子集的具体过程如下:
S25:当并集[s,B]需要按照下一跳的不同分割成多个子集[s'1,B'1],...,[s'k',B'k']时,令B=B'1|B'2|...|B'k';若i≠j时,s'i∩s'j=null,B'i&B'j=0,所述的其中"&"代表两个矩阵的对应位之间进行二进制与运算,然后把构造好的请求包interest[s'1,B'1],...,interest[s'k',B'k']分别向k'个不同的下一跳转发出去。
5.根据权利要求4所述的网络多内容请求响应方法,其特征在于,所述步骤S2中网络中每个节点收到的来自多个用户的请求包不会在短时间内同时到达,在先期到达的请求被转发出去之后,避免后期转发的请求包包含重复请求的方法如下:
当[s'i,B'i]是步骤S25已经从第i个接口发送出去的请求,[s'i1,B'i1]是步骤S25新的要从第i个接口发送的请求时,令△B'i=(B'i^B'i1)&B'i1,其中"^"代表两个矩阵的对应位之间进行二进制异或运算;当△B'i不是全0矩阵,令其非0行所在的对角线元素为1,找到其非0行对应的内容块的标识,并把这些内容块的标识加到△s'i之中;实际从第i个接口发送出去的请求包为interest[△s'i,△B'i],所述的△s'i为第i个接口发送出去的请求与之前第i个接口发送出去的请求所不同的内容块的标识,用于避免发送包含相同内容的已经重复的请求。
6.根据权利要求1所述的网络多内容请求响应方法,其特征在于,在所述步骤S3中,节点用收到的内容块和编码块进行随机网络编码,生成相互独立的编码块,以满足已从每个接口收到的请求,具体方法是:
S31:确定代表同一用户请求的全1子矩阵:设该节点已收到的汇总请求为并集[s,B];在删除B的相同内容块名字对应的相同编号的某些行和列之后,如果剩余的是一个r×r的全1矩阵,则把该矩阵称为B的对角线上的一个阶数为r的全1子矩阵;如果B的对角线上的最大全1子矩阵的阶数是b,则把它记为b=diagOne(B);
S32:确定已收到编码块集合是否符合B的要求:当收到由所指的|V|个内容块通过随机网络编码得到的b≤|V|个编码块时,把这些编码块简记为NC(V,b);然后采用高斯消元法进行检查:设W是NC(V,b)的b×|V|系数矩阵,如果对于B的对角线上的任意一个r阶全1子矩阵,由W中对应列组成的b×r子矩阵的秩是r,则NC(V,b)能够满足[s,B]的要求;所述的V是包含集合s的集合;
S33:当[s,B]是步骤S24确定的从多个接口收到的[s1,B1],...,[sk,Bk]的并集时,用NC(V,b)中任意bi=diagOne(Bi)个编码块满足[si,Bi]的请求,其中i=1,...,k。
7.根据权利要求6所述的网络多内容请求响应方法,其特征在于,步骤S3把收到的内容块和编码块缓存起来,用于响应后续用户请求的方法,具体如下:
S34:检查是否有本地缓存:当[s,B]是步骤S24确定的从多个接口收到的并集时,先检查s所列的内容块在本节点是否有缓存;设本节点缓存的内容块集合为C,则从s中去掉对C∩s的请求,并把B中与C∩s对应的行和列变为全0,即令s=s\(C∩s),B=B\(C∩s);
S35:如果在采取步骤S34之后剩余的[s,B]非空,则采用步骤S25的方法,把[s,B]分成多个子集用多个请求包转发出去;在收到所请求的全部内容块和编码块之后,与本节点缓存的内容块集合C一起,采用步骤S31-33的方法,生成相互独立的编码块,并按照从每个接口收到的请求,把所需个数的独立编码块从每个接口转发出去。
8.根据权利要求7所述的网络多内容请求响应方法,其特征在于,每个节点缓存收到的内容块和编码块并把编码块等同于内容块使用,其具体过程如下:
S36:每个节点都把从上游节点收到的内容块和编码块缓存在本地,用于响应下游节点未来的请求;但不缓存自己通过随机网络编码新产生的、用于送给下游节点的编码块;
S37:对本节点新产生的b个独立编码块分别分配一个不同的名字:title1,title2,…,titleb∈s,要求在B中与这些名字对应的子矩阵是全1矩阵;把所分配的名字同编码块一起响应给下游节点;当被命名为titlen的编码块被下游节点缓存时,将等同于内容块titlen使用,用于响应更下游节点未来的请求;
S38:当节点从收到的编码块中解码得到内容块时,解码并缓存内容块;相同名字的块只缓存一份,并且相比于相同名字的编码块,优先缓存内容块。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410857403.8A CN104539715B (zh) | 2014-12-31 | 2014-12-31 | 一种网络多内容请求响应方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410857403.8A CN104539715B (zh) | 2014-12-31 | 2014-12-31 | 一种网络多内容请求响应方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104539715A CN104539715A (zh) | 2015-04-22 |
CN104539715B true CN104539715B (zh) | 2018-07-20 |
Family
ID=52855182
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410857403.8A Active CN104539715B (zh) | 2014-12-31 | 2014-12-31 | 一种网络多内容请求响应方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104539715B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106294452B (zh) * | 2015-05-28 | 2019-07-23 | 阿里巴巴集团控股有限公司 | 数据获取方法和装置 |
CN111385335B (zh) * | 2018-12-29 | 2023-04-07 | 广州市百果园信息技术有限公司 | 数据请求的处理方法、装置、设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103379029A (zh) * | 2012-04-24 | 2013-10-30 | 华为技术有限公司 | 一种内容网络的路由转发的方法、装置及*** |
CN103457700A (zh) * | 2013-08-20 | 2013-12-18 | 重庆邮电大学 | Ndn/ccn网络中的数据包内容名称编码压缩方法 |
CN103747083A (zh) * | 2014-01-02 | 2014-04-23 | 北京邮电大学 | 一种基于ccn的内容推送方法 |
CN103988458A (zh) * | 2011-12-09 | 2014-08-13 | 华为技术有限公司 | 基于内容中心网络的网络中编码网络报文的方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8244881B2 (en) * | 2010-08-06 | 2012-08-14 | Palo Alto Research Center Incorporated | Service virtualization over content-centric networks |
-
2014
- 2014-12-31 CN CN201410857403.8A patent/CN104539715B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103988458A (zh) * | 2011-12-09 | 2014-08-13 | 华为技术有限公司 | 基于内容中心网络的网络中编码网络报文的方法 |
CN103379029A (zh) * | 2012-04-24 | 2013-10-30 | 华为技术有限公司 | 一种内容网络的路由转发的方法、装置及*** |
CN103457700A (zh) * | 2013-08-20 | 2013-12-18 | 重庆邮电大学 | Ndn/ccn网络中的数据包内容名称编码压缩方法 |
CN103747083A (zh) * | 2014-01-02 | 2014-04-23 | 北京邮电大学 | 一种基于ccn的内容推送方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104539715A (zh) | 2015-04-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103051629B (zh) | 一种基于软件定义网络中数据处理的***、方法和节点 | |
CN104380664B (zh) | 路由器之间内容表同步 | |
CN101459619B (zh) | 一种在网络中对报文传输的处理方法和装置 | |
CN103634224B (zh) | 网络中数据传输的方法和*** | |
CN101645039B (zh) | 一种基于彼得森图的数据存储和读取方法 | |
CN103747083B (zh) | 一种基于ccn的内容推送方法 | |
CN103024085B (zh) | 一种处理p2p节点请求的***及方法 | |
CN105872008A (zh) | 用于信息中心网络中的基于自适应命名的点播内容交换的***和方法 | |
CN104038425B (zh) | 转发以太网报文的方法和装置 | |
CN102474467A (zh) | 使用父-子链路聚合组的服务器端负载均衡 | |
JP2005353039A5 (zh) | ||
CN102970242B (zh) | 一种实现负载均衡的方法 | |
CN101729425B (zh) | Vrrp组网中流量发送的方法及设备 | |
CN104734962B (zh) | 一种非结构化p2p网络的资源搜索方法 | |
CN104917680B (zh) | 用于执行分组流的并行散列的计算机*** | |
CN106063199B (zh) | 通信***、通信方法、中继装置以及存储有计算机可读程序的存储介质 | |
CN104038418B (zh) | 针对混合型拓扑结构数据中心的路由方法、路径探测机制和报文处理机制 | |
CN106357539A (zh) | 一种数据获取方法和设备 | |
CN105743664A (zh) | 用于内容中心网络中的多源组播的***和方法 | |
CN103986763A (zh) | 一种面向Web可视化的矢量数据流式传输方法和*** | |
CN105556916A (zh) | 网络流的信息统计方法和装置 | |
CN105376292A (zh) | 基于名称的转发中的显式策略反馈 | |
CN109150936A (zh) | 一种分布式集群中会话对象Session的共享方法及装置 | |
CN107547346A (zh) | 一种报文传输方法和装置 | |
CN104539715B (zh) | 一种网络多内容请求响应方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |