1.一种以数据为中心的通信方法,其特征在于,网络包括IPv6骨干网、以数据为中心的子网以及IP子网,以数据为中心的子网称为数据子网;
IP子网包括接入路由器,IP普通设备,IP数据提供者和IP数据消费者;IP子网通过接入路由器连接到IPv6骨干网;在IP子网中,IP数据提供者是能够产生或者提供一种数据的服务器或者节点,支持IP协议;IP数据消费者是授权能够获取一种数据的节点,支持IP协议;
IP普通设备既不是数据消费者也不是数据提供者,用于执行路由转发功能,支持IP协议;
数据子网包括数据接入路由器、普通设备,数据提供者和数据消费者;数据接入路由器支持IP协议,数据子网通过数据接入路由器连接到IPv6骨干网;在数据子网中,数据提供者是能够产生或者提供某种数据的服务器或者节点,不支持IP协议;数据消费者是授权能够获取某种数据的节点,不支持IP协议;普通设备既不是数据消费者也不是数据提供者,用于执行路由转发功能,不支持IP协议;
在所述网络中,一种数据由一个数据名称唯一定义,一个数据名称由名称前缀和名称ID构成;在IP网络中,一个IP地址由路由前缀和接口ID构成;在所述网络中,一个名称前缀映射为一个路由前缀,一个名称ID映射为一个接口ID,由此一个数据名称能够映射为一个IP地址,即一种数据由一个数据名称以及该数据名称映射的IP地址唯一定义;名称前缀与路由前缀的映射关系以及名称ID与接口ID的映射关系预先设定,每个接入路由器、数据接入路由器、数据消费者和数据提供者维护一个映射表来保存映射关系;
能够映射为一种数据名称的IP地址称为任播地址,即任播地址定义了一种数据,能够提供该种数据的所有数据提供者构建成任播组,该任播组由该任播地址唯一标识;
在IP子网中,接入路由器或者普通设备维护一个任播路由表,每个表项由四个域构成:任播地址,下一跳,距离以及生命周期;接入路由器、普通设备或者数据提供者维护一个任播请求表,每个表项由两个域构成:任播地址和下一跳;
在数据子网中,数据接入路由器或者普通设备维护一个名称路由表,每个表项由四个域构成:数据名称,接口,距离以及生命周期;数据接入路由器、普通设备或者数据提供者维护一个名称请求表,每个表项由两个域构成:任播地址和接口;
在IP数据提供者P1为任播组成员,该任播组由任播地址A1标识,任播地址A1定义了数据C1,IP数据提供者P1能够产生和提供数据C1,IP数据提供者P1位于IP子网内,该IP子网的接入路由器为AR1,IP数据提供者P1的单播地址为U1的情况下,IP数据提供者P1产生数据C1后,执行下述过程来发布数据C1:步骤101:开始;
步骤102:IP数据提供者P1发送一条数据发布消息,数据发布消息的目的地址为接入路由器AR1的单播地址,源地址为U1,负载为任播地址A1以及距离参数dist,距离参数dist的初始值为0;
步骤103:接入路由器或者IP普通设备从上一跳接收到该数据发布消息后,查看任播路由表,如果存在任播地址域值为A1且下一跳域值为上一跳单播地址的表项,则进行步骤
105,否则执行步骤104;
步骤104:从上一跳接收到该数据发布消息的接入路由器或者IP普通设备在任播路由表中创建一个表项,该表项的任播地址域为A1,下一跳域值为上一跳的单播地址,距离域值为数据发布消息中的距离参数dist值,生命周期域值设置为最大值,执行步骤106;
步骤105:从上一跳接收到该数据发布消息的接入路由器或者IP普通设备更新任播地址域值为A1且下一跳域值为上一跳单播地址的表项,即将该表项的距离域值设置为数据发布消息中的距离参数dist值;
步骤106:如果从上一跳接收到该数据发布消息的接入路由器为AR1,则执行步骤109,否则执行步骤107;
步骤107:接收到该数据发布消息的IP普通设备判断在步骤104创建或者在步骤105更新的表项的距离域值是否大于其他所有任播域值等于A1的表项的距离域值,如果是,进行步骤108,否则进行步骤109;
步骤108:接收到该数据发布消息的IP普通设备将数据发布消息中的距离参数dist递增1,将源地址更新为自己的单播地址,然后发送该数据发布消息,执行步骤103;
步骤109:结束;
在数据子网中,数据接入路由器启动后,执行下述过程以建立到达自己的路由:步骤201:开始;
步骤202:数据接入路由器从自己的每个接口发送路由器发布消息;
步骤203:普通设备、数据提供者或者数据消费者从自己的接口f收到该数据接入路由器发布消息后,保存接口f;
步骤204:判断收到该数据接入路由器发布消息的是否为普通设备,如果是执行步骤
205,否则执行步骤206;
步骤205:收到该路由器发布消息的普通设备从除了接收到路由器发布消息的接口以外的所有接口发布路由器发布消息,执行步骤203;
步骤206:结束;
在数据提供者P4能够产生和提供数据C3,数据C3由数据名称N3定义,数据提供者P4位于数据子网内,该数据子网的数据接入路由器为CAR3的情况下,数据提供者P4产生数据C3后,执行下述过程来发布数据C3:步骤301:开始;
步骤302:数据提供者P4构建一个数据名称发布消息,该数据名称发布消息的负载为数据名称N3以及距离参数dist,距离参数dist的初始值为0,然后从到达接入路由器CAR3的接口发送该数据名称发布消息;
步骤303:数据接入路由器或者普通设备从接口f’接收到该数据名称发布消息后,查看名称路由表,如果存在数据名称域值为N3且接口域值为f’的表项,则进行步骤305,否则执行步骤304;
步骤304:从接口f’接收到数据发布消息的数据接入路由器或者普通设备在名称路由表中创建一个表项,该表项的数据名称域为N3,接口域值为f’,距离域值为数据名称发布消息中的距离参数dist值,生命周期域值设置为最大值,执行步骤306;
步骤305:从接口f’接收到该数据发布消息的数据接入路由器或者普通设备更新数据名称域值为N3且接口域值为f’的表项,即将该表项的距离域值设置为数据名称发布消息中的距离参数dist值;
步骤306:判断接收到该数据名称发布消息的数据接入路由器是否为数据接入路由器CAR3,是则执行步骤309,否则执行步骤307;
步骤307:接收到该数据发布消息的普通设备判断在步骤304创建或者在步骤305更新的表项的距离域值是否大于其他所有数据名称域值等于N3的表项的距离域值,如果是,进行步骤308,否则进行步骤309;
步骤308:接收到该数据名称发布消息的普通设备将数据名称发布消息中的距离参数dist递增1,然后从到达接入路由器CAR3的接口发送该消息,执行步骤303;
步骤309:结束;
在IP数据消费者S1位于IP子网,该IP子网的接入路由器为AR1,数据C2由任播地址A2定义的情况下,如果在相同的IP子网内至少有一个能够提供数据C2的IP数据提供者,则IP数据消费者S1能够通过下述过程获取数据C2:步骤401:开始;
步骤402:IP数据消费者S1构建数据请求消息,该数据请求消息的目的地址为任播地址A2,源地址为自己的单播地址,然后IP数据消费者S1将该数据请求消息发送到到达接入路由器AR1的下一跳;
步骤403:如果是任播地址A2标识的任播组成员从上一跳H1接收到该数据请求消息,则进行步骤404,否则进行步骤407;
步骤404:任播组成员查看任播请求表,判断是否存在任播地址域值为A2且下一跳域值为H1的表项,如果是,进行步骤406,否则进行步骤405;
步骤405:任播组成员在任播请求表中创建一个表项,该表项的任播地址为A2,下一跳为H1;
步骤406:任播组成员构建一个数据响应消息,该数据响应消息的源地址为A2,目的地址为数据消费者S1的单播地址,负载为数据C2,然后执行步骤415;
步骤407:IP普通设备或者接入路由器AR1从上一跳H2接收到该数据请求消息后,查看任播请求表,判断是否存在任播地址为A2的表项,如果是,则进行步骤408,否则进行步骤
410;
步骤408:IP普通设备或者接入路由器AR1判断是否存在任播地址为A2且下一跳域值为H2的表项,如果是,进行步骤415,否则进行步骤409;
步骤409:IP普通设备或者接入路由器AR1在任播请求表中创建一个表项,该表项的任播地址为A2,下一跳为H2,然后执行步骤415;
步骤410:IP普通设备或者接入路由器AR1在任播请求表中创建一个表项,该表项的任播地址为A2,下一跳为H2;
步骤411:判断是否为接入路由器AR1接收到数据请求消息,如果是,则进行步骤414,否则进行步骤412;
步骤412:IP普通设备查看任播路由表,判断是否存在任播地址域值为A2的表项,如果有,则进行步骤414,否则进行步骤413;
步骤413:IP普通设备将数据请求消息发送到达到接入路由器AR1的下一跳,执行步骤
403;
步骤414:IP普通设备或者接入路由器AR1将数据请求消息转发到任播地址域值为A2的表项的下一跳,执行步骤403;
步骤415:IP普通设备或者接入路由器AR1创建或者接收到数据响应消息后,查看任播请求表,对于每个任播地址等于A2的表项,IP普通设备或者接入路由器AR1将数据响应消息的目的地址更新为该表项的下一跳域值,然后转发该数据响应消息,同时从任播请求表中删除该表项;
步骤416:判断是否是IP数据消费者S1接收到数据响应消息,如果是,进行步骤417,否则进行步骤415;
步骤417:IP数据消费者S1保存数据响应消息中的数据C2;
步骤418:结束。
2.根据权利要求1所述的一种以数据为中心的通信方法,其特征在于,在数据消费者S3位于数据子网内,该数据子网的数据接入路由器为CAR4,数据C4由数据名称N4定义的情况下,如果在该数据子网内至少有一个能够提供数据C4的数据提供者,则数据消费者S3能够通过下述过程获取数据C4:步骤501:开始;
步骤502:数据消费者S3构建数据名称请求消息,该数据名称请求消息的数据名字为N4,然后从到达数据接入路由器CAR4的接口发送该数据名称请求消息;
步骤503:如果是数据C4的数据提供者从接口f2接收到该数据名称请求消息,则进行步骤504,否则进行步骤507;
步骤504:数据提供者查看名称请求表,判断是否存在数据名称为N4且接口域为f2的表项,如果是,进行步骤506,否则进行步骤505;
步骤505:数据提供者在名称请求表中创建一个表项,该表项的数据名称域为N4,接口域值为f2;
步骤506:数据提供者构建一个数据名称响应消息,该数据名称响应消息的负载为数据C4,执行步骤515;
步骤507:普通设备或者数据接入路由器CAR4从接口f3接收到该数据名称请求消息后,查看名称请求表,判断是否存在数据名称为N4的表项,如果是,则进行步骤508,否则进行步骤510;
步骤508:普通设备或者数据接入路由器CAR4判断是否存在数据名称为N4且接口域值为f3的表项,如果是,进行步骤515,否则进行步骤509;
步骤509:普通设备或者数据接入路由器CAR4在名称请求表中创建一个表项,该表项的数据名称为N4,接口域值为f3,然后执行步骤515;
步骤510:普通设备或者数据接入路由器CAR4在名称请求表中创建一个表项,该表项的数据名称域值为N4,接口域值为f3;
步骤511:判断是否为数据接入路由器CAR4接收到数据名称请求消息,如果是,则进行步骤514,否则进行步骤512;
步骤512:普通设备查看名称路由表,判断是否存在数字名称域值为N4的表项,如果有,则进行步骤514,否则进行步骤513;
步骤513:普通设备从到达数据接入路由器CAR4的接口发送数据名称请求消息,执行步骤503;
步骤514:普通设备或者数据接入路由器CAR4从数据名称域值为N4的表项的接口域值转发该数据名称请求消息,执行步骤503;
步骤515:普通设备或者数据接入路由器CAR4创建或者接收到数据名称响应消息后,查看名称请求表,对于每个数据名称域值等于N4的表项,普通设备或者数据接入路由器CAR4从该表项的接口域转发该数据名称响应消息,同时从名称请求表中删除该表项;
步骤516:判断是否是数据消费者S3接收到数据名称响应消息,如果是,进行步骤517,否则进行步骤515;
步骤517:数据消费者S3保存数据名称响应消息中的数据C4;
步骤518:结束。
3.根据权利要求2所述的一种以数据为中心的通信方法,其特征在于,在IP数据消费者S1位于IP子网,该IP子网的接入路由器为AR1,数据C3由任播地址A3或者数据名称N3定义,数据名称N3的名称前缀为NP3,NP3定义的数据子网的数据接入路由器为CAR3的情况下,如果在该IP子网内没有能够提供数据C3的IP数据提供者,则IP数据消费者S1通过下述过程获取数据C3:步骤601:开始;
步骤602:IP数据消费者S1构建数据请求消息,该建数据请求消息的目的地址为任播地址A3,源地址为自己的单播地址,然后IP数据消费者S1将该建数据请求消息发送到到达接入路由器AR1的下一跳;
步骤603:IP普通设备或者接入路由器AR1从上一跳H3接收到该数据请求消息后,查看任播请求表,如果存在任播地址为A3的表项,则进行步骤604,否则进行步骤606;
步骤604:IP普通设备或者接入路由器AR1查看任播请求表,判断是否存在任播地址为A3且下一跳为H3的表项,如果是,进行步骤618,否则进行步骤605;
步骤605:IP普通设备或者接入路由器AR1在任播请求表中创建一个表项,该表项的任播地址为A3,下一跳为H3,执行步骤618;
步骤606:IP普通设备或者接入路由器AR1在任播请求表中创建一个表项,该表项的任播地址为A3,下一跳为H3,判断是否为接入路由器AR1接收到数据请求消息,如果是,则执行步骤608,否则执行步骤607;
步骤607:IP普通设备将数据请求消息转发到到达接入路由器AR1的下一跳,执行步骤
603;
步骤608:接入路由器AR1将数据请求消息转发到到达数据接入路由器CAR4的下一跳;
步骤609:中间接入路由器、中间数据接入路由器或者数据接入路由器CAR3从上一跳HAR收到数据请求消息后,查看任播路由表,如果存在任播地址为A4的表项,则执行步骤
610,否则执行步骤612;
步骤610:中间接入路由器、中间数据接入路由器或者数据接入路由器CAR3查看任播请求表,判断是否存在任播地址为A4且下一跳为HAR的表项,如果存在,执行步骤618,否则执行步骤611;
步骤611:中间接入路由器、中间数据接入路由器或者数据接入路由器CAR3在任播请求表中建一个表项,任播地址为A4,下一跳域值为HAR,然后执行步骤618;
步骤612:中间接入路由器、中间数据接入路由器或者数据接入路由器CAR3在任播请求表中建一个表项,任播地址为A4,下一跳域值为HAR;
步骤613:判断是否为数据接入路由器CAR3接收到数据请求消息,如果是,则执行步骤
616,否则执行步骤614;
步骤614:中间接入路由器或者中间数据接入路由器查看任播路由表或者名字路由表,判断是否存在任播域值为A3或者数据名称域值为N3的表项,如果存在,则执行步骤616,否则执行步骤615;
步骤615:中间接入路由器或者中间数据接入路由器将数据请求消息转发到到达数据接入路由器CAR4的下一跳,执行步骤609;
步骤616:如果中间接入路由器的任播路由表有任播域值为A3的表项,则中间接入路由器作为数据消费者执行步骤401~418获取数据C3,如果中间数据接入路由器或者数据接入路由器CAR3的名称路由表有数据名称域值为N3的表项,则中间数据接入路由器或者数据接入路由器CAR3作为数据消费者执行501~518获取数据C3;
步骤617:中间接入路由器、中间数据接入路由器或者数据接入路由器CAR3获取数据C3后,创建一个数据响应消息,该数据响应消息的源地址为A3,目的地址为IP数据消费者S1的单播地址,负载为数据C3;
步骤618:中间接入路由器、中间数据接入路由器、数据接入路由器CAR3、接入路由器AR1或者IP普通设备创建或者接收到数据响应消息后,查看任播请求表,对于每个任播地址等于A3的表项,中间接入路由器、中间数据接入路由器、数据接入路由器CAR3、接入路由器AR1或者普通设备将数据响应消息的目的地址更新为该表项的下一跳域值,然后转发该数据响应消息,同时从任播请求表中删除该表项;
步骤619:判断是否是IP数据消费者S1接收到数据响应消息,如果是,进行步骤620,否则进行步骤618;
步骤620:IP数据消费者S1保存数据响应消息中的数据C2;
步骤621:结束。
4.根据权利要求3所述的一种以数据为中心的通信方法,其特征在于,在数据消费者S3位于数据子网内,该数据子网的数据接入路由器为CAR3,数据C2由任播地址A2或者数据名称N2定义,任播地址A2的网络前缀定义的IP子网的接入路由器为AR2,如果在数据消费者S3所在的数据子网内没有能够提供数据C2的数据提供者,则数据消费者S3通过下述过程获取数据C2:步骤701:开始;
步骤702:数据消费者S3构建数据名称请求消息,该数据名称请求消息的数据名字为N2,然后从到达数据接入路由器CAR3的接口发送该数据名称请求消息;
步骤703:普通设备或者数据接入路由器CAR3从接口f4接收到该数据名称请求消息后,查看名字请求表,如果存在数据名称域值为N2的表项,则进行步骤704,否则进行步骤706;
步骤704:普通设备或者数据接入路由器CAR3查看名称请求表,判断是否存在数据名称为N2且接口域值为f4的表项,如果是,进行步骤718,否则进行步骤705;
步骤705:普通设备或者数据接入路由器CAR3在名称请求表中创建一个表项,该表项的数据名称为N2,接口域值为f4,执行步骤718;
步骤706:普通设备或者数据接入路由器CAR3在名称请求表中创建一个表项,该表项的数据名称域值为N2,接口域值为f4,然后判断是否为数据接入路由器CAR3接收到数据名称请求消息,如果是,则执行步骤708,否则执行步骤707;
步骤707:普通设备从到达数据接入路由器CAR3的接口转发数据名称请求消息,执行步骤703;
步骤708:数据接入路由器CAR3发送一条数据请求消息,该数据请求消息的源地址为它的单播地址,目的地址为任播地址A2;
步骤709:中间接入路由器、中间数据接入路由器或者接入路由器AR2从上一跳HAR1收到数据请求消息后,查看任播路由表,如果存在任播地址为A2的表项,则执行步骤710,否则执行步骤712;
步骤710:中间接入路由器、中间数据接入路由器或者接入路由器AR2查看任播请求表,判断是否存在任播地址为A2且下一跳为HAR1的表项,如果存在,执行步骤718,否则执行步骤711;
步骤711:中间接入路由器、中间数据接入路由器或者接入路由器AR2在任播请求表中建一个表项,任播地址为A2,下一跳域值为HAR1,然后执行步骤718;
步骤712:中间接入路由器、中间数据接入路由器或者接入路由器AR2在任播请求表中建一个表项,任播地址为A2,下一跳域值为HAR1;
步骤713:判断是否为接入路由器AR2接收到数据请求消息,如果是,则执行步骤716,否则执行步骤714;
步骤714:中间接入路由器或者中间数据接入路由器查看任播路由表或者名字路由表,判断是否存在任播域值为A2或者数据名称域值为N2的表项,如果存在,则执行步骤716,否则执行步骤715;
步骤715:中间接入路由器或者中间数据接入路由器将数据请求消息转发到到达接入路由器AR2的下一跳,执行步骤709;
步骤716:如果中间接入路由器或者接入路由器AR2的任播路由表有任播域值为A2的表项,则中间接入路由器作或者接入路由器AR2为数据消费者执行步骤401~418获取数据C2,如果中间数据接入路由器的名称路由表有数据名称域值为N2的表项,则中间数据接入路由器作为数据消费者执行501~518获取数据C2;
步骤717:中间接入路由器、中间数据接入路由器或者接入路由器AR2获取数据C2后,创建一个数据响应消息,该数据响应消息的源地址为A2,目的地址为数据消费者S1的单播地址,负载为数据C2;
步骤718:中间接入路由器、中间数据接入路由器、数据接入路由器CAR3、接入路由器AR1创建或者接收到数据响应消息后,查看任播请求表,对于每个任播地址等于A2的表项,中间接入路由器、中间数据接入路由器、数据接入路由器CAR3、接入路由器AR1将数据响应消息的目的地址更新为该表项的下一跳域值,然后转发该数据响应消息,同时从任播请求表中删除该表项;
步骤719:判断是否是数据接入路由器CAR3接收到数据响应消息,如果是,进行步骤
720,否则进行步骤718;
步骤720:数据接入路由器CAR3构建一个数据名称响应消息,该数据名称响应消息的负载为数据C2;
步骤721:普通设备或者数据接入路由器CAR3创建或者接收到数据名称响应消息后,查看名称请求表,对于每个数据名称域值等于N2的表项,普通设备或者数据接入路由器CAR3从该表项的接口域转发该数据名称响应消息,同时从名称请求表中删除该表项;
步骤722:判断是否是数据消费者S3接收到数据名称响应消息,如果是,进行步骤723,否则进行步骤721;
步骤723:数据消费者S3保存数据名称响应消息中的数据C2;
步骤724:结束。