1.一种新一代多媒体传感网的实现方法,其特征在于,所述传感网包括两个以上的节点,节点包括用户节点和多媒体传感节点;多媒体传感节点简称为传感节点,每个传感节点配置能够产生多媒体数据的设备;
节点由硬件ID唯一标识;一种类型的数据由一个名称唯一标识;节点使用消息进行通信,消息类型值和消息名称如下表所示:消息类型 消息名称
1 发布消息
2 修复消息
3 确认消息
4 请求消息
5 响应消息
6 邻居消息
7 查询消息
8 数据消息
节点保存一个路由表,路由表项包含跳数、硬件ID、前一跳、名称和时间戳域;
一个发布消息由消息类型、跳数、硬件ID、前一跳、名称和负载域构成;
数据D1由名称NA1标识,节点P1能提供数据D1并定期执行下述操作维护路由表:步骤101:开始;
步骤102:节点P1发送一个发布消息,该发布消息的消息类型为1,跳数为0,硬件ID和前一跳域值均为节点P1的硬件ID,名称为NA1,负载为时间戳;
步骤103:其他节点接收到该发布消息,将该发布消息的跳数域值递增1,查看路由表,如果存在一个路由表项,该路由表项的名称和硬件ID域值分别等于该发布消息的名称和硬件ID,且时间戳等于该发布消息负载中的时间戳,则执行步骤111,否则执行步骤104;
步骤104:接收到该发布消息的节点查看路由表,如果存在一个路由表项,该路由表项的名称和硬件ID域值分别等于该发布消息的名称和硬件ID,且跳数域值大于该发布消息中的跳数域值,则执行步骤105,否则执行步骤106;
步骤105:接收到该发布消息的节点查看路由表,选择所有名称和硬件ID分别等于该发布消息的名称和硬件ID的路由表项,创建一个路由表现,该路由表项的名称、硬件ID、前一跳和跳数域值分别等于该发布消息的名称、硬件ID、前一跳和跳数域值,时间戳域值等于该发布消息负载中的时间戳;将该发布消息的前一跳域值更新为自己的硬件ID,转发该发布消息,执行步骤103;
步骤106:接收到该发布消息的节点查看路由表,如果存在一个路由表项,该路由表项的名称、硬件ID和跳数域值分别等于该发布消息的名称、硬件ID和跳数域值,且前一跳域值等于该发布消息中的前一跳域值,则执行步骤107,否则执行步骤108;
步骤107:接收到该发布消息的节点查看路由表,选择一个路由表项,该路由表项的名称、硬件ID和跳数域值分别等于该发布消息的名称、硬件ID和跳数域值,且前一跳域值等于该发布消息中的前一跳域值,将该路由表项的时间戳更新为该发布消息负载中的时间戳,将该发布消息的前一跳域值更新为自己的硬件ID,转发该发布消息,执行步骤103;
步骤108:接收到该发布消息的节点查看路由表,如果存在一个路由表项,该路由表项的名称、硬件ID和跳数域值分别等于该发布消息的名称、硬件ID和跳数域值,则执行步骤
109,否则执行步骤110;
步骤109:接收到该发布消息的节点创建一个路由表项,该路由表项的名称、硬件ID、跳数和前一跳域值分别等于该发布消息的名称、硬件ID、跳数和前一跳域值,时间戳域值等于该发布消息负载中的时间戳,将该发布消息的前一跳域值更新为自己的硬件ID,转发该发布消息,执行步骤103;
步骤110:接收到该发布消息的节点查看路由表,如果存在一个路由表项,该路由表项的名称和硬件ID域值分别等于该发布消息的名称和硬件ID域值,且跳数域值小于该发布消息中的跳数域值,则执行步骤111,否则执行步骤109;
步骤111:结束;
如果一个路由表项的时间戳和当前时间之差的绝对值大于预定时间T0,则删除该路由表项。
2.根据权利要求1所述的一种新一代多媒体传感网的实现方法,其特征在于,一个修复消息包含消息类型、跳数、硬件ID、前一跳、名称和负载域;一个确认消息包含消息类型、跳数、硬件ID、前一跳、名称和负载域;一个节点保存一个消息表,每个消息表项包含消息域和生命周期域;数据D1由名称NA1唯一标识;如果节点ND1没有名称域值等于NA1的路由表项,则通过下述过程建立名称域值为NA1的路由表项:步骤201:开始;
步骤202:节点ND1发送一个修复消息,该修复消息的消息类型为2,跳数为0,硬件ID和前一跳均为节点ND1的硬件ID,名称域值为NA1,负载为时间戳;
步骤203:节点接收到修复消息后,将该修复消息中的跳数递增1,并查看消息表;如果存在一个消息表项,该消息表项的消息域值中的消息类型、硬件ID、名称和时间戳域值均等于该修复消息中的消息类型、硬件ID、名称和时间戳域值,则执行步骤209,否则执行步骤
204;
步骤204:接收到修复消息的节点创建一个消息表项,该消息表项的消息域值为该修复消息,生命周期设置为最大值,如果该节点存在名称域值等于该修复消息的名称域值的路由表项,则执行步骤205,否则执行步骤206;
步骤205:接收到修复消息的节点选择所有名称域值等于该修复消息的名称域值的路由表项,发送一个确认消息,该确认消息的消息类型为3,跳数为0,硬件ID和前一跳均等于该节点的硬件ID,负载为选中的所有路由表项,执行步骤209;
步骤206:判断接收到修复消息的节点是否能够提供该修复消息名称所标识的数据,如果能,则执行步骤207,否则执行步骤208;
步骤207:接收到修复消息的节点创建一个路由表项,该路由表项的名称域值等于该修复消息的名称域值,硬件ID和前一跳域值均等于该节点的硬件ID,跳数域值等于0,时间戳等于当前时间;该节点发送一个确认消息,该确认消息的消息类型为3,跳数为0,硬件ID和前一跳均等于该节点的硬件ID,负载为创建的路由表项,执行步骤209;
步骤208:接收到修复消息的节点转发该修复消息,执行步骤203;
步骤209:节点接收到确认消息后,将确认消息的跳数域值递增1,查看消息表,如果存在一个消息表项,该消息表项的消息域值中的消息类型、硬件ID、名称和时间戳域值均等于该确认消息中的消息类型、硬件ID、名称和时间戳域值,则执行步骤213,否则执行步骤210;
步骤210:接收到确认消息的节点创建一个消息表项,该消息表项的消息域值为该确认消息,生命周期设置为最大值,如果该节点存在名称域值等于该确认消息的名称域值的路由表项,则执行步骤212,否则执行步骤211;
步骤211:接收到确认消息的节点针对该确认消息负载中的每个路由表项执行下述操作:将该路由表项的前一跳更新为该确认消息中的前一跳,将该路由表项的跳数域值更新为该路由表项的跳数域值与该确认消息的跳数域值之和,将该路由表项加入到自己的路由表中;
步骤212:接收到确认消息的节点将该确认消息的前一跳更新为自己的硬件ID,转发该确认消息,执行步骤209;
步骤213:结束。
3.根据权利要求2所述的一种新一代多媒体传感网的实现方法,其特征在于,请求消息由消息类型、硬件ID、下一跳和名称域构成;响应消息由消息类型、硬件ID、名称域和负载域构成;节点保存一个数据表,每个数据表项由名称域,数值域和生命周期域构成;节点保存一个汇聚表,一个汇聚表项包含名称域和硬件ID域;数据D1由名称NA1标识,如果节点ND2没有名称域值为NA1的路由表项,则执行步骤201~213建立名称域值为NA1的路由表项;如果网络拓扑结构相对稳定,节点ND2通过下述过程获取数据D1:步骤301:开始;
步骤302:节点ND2选择一个路由表项,该路由表项的名称域值等于NA1,发送一个请求消息,该请求消息的消息类型为4,下一跳为该路由表项的前一跳,硬件ID等于节点ND2的硬件ID,名称域值为NA1;
步骤303:节点接收到请求消息,如果该节点的硬件ID等于该请求消息的下一跳域值,则执行步骤304,否则执行步骤310;
步骤304:接收到请求消息的节点查看数据表,如果存在一个数据表项,该数据表项的名称域值等于该请求消息的名称域值,则执行步骤305,否则执行步骤306;
步骤305:接收到请求消息的节点选择一个数据表项,该数据表项的名称域值等于该请求消息的名称域值,发送一个响应消息,该响应消息的消息类型为5,硬件ID和名称分别等于该请求消息的硬件ID和名称,负载为该数据表项的数值域值,执行步骤310;
步骤306:接收到请求消息的节点查看聚合表,如果存在一个聚合表项,该聚合表项的名称域和硬件ID域分别等于该请求消息的名称域和硬件ID域,则执行步骤310,否则执行步骤307;
步骤307:接收到请求消息的节点创建一个聚合表项,该聚合表项的名称域和硬件ID域分别等于该请求消息的名称域和硬件ID域,查看路由表,如果存在一个路由表项,该路由表项的名称域值等于该请求消息的名称域值,则执行步骤309,否则执行步骤308;
步骤308:接收到请求消息的节点执行步骤201~213获取名称域值等于该请求消息名称域值的路由表项;
步骤309:接收到请求消息的节点选择一个路由表项,该路由表项的名称域值等于该请求消息的名称域值,将该请求消息的硬件ID更新为自己的硬件ID,将该请求消息的下一跳更新为该路由表项的下一跳,转发该请求消息,执行步骤303;
步骤310:节点接收到响应消息,如果该节点的硬件ID等于该响应消息的下一跳域值,则执行步骤311,否则执行步骤313;
步骤311:接收到响应消息的节点查看聚合表,如果名称域值等于该响应消息名称域值的聚合表项的数量为0,则执行步骤313,否则执行步骤312;
步骤312:接收到响应消息的节点选择所有名称域值等于该响应消息名称域值的聚合表项,针对每个选中的聚合表项,该节点将响应消息的硬件ID更新为该聚合表项的硬件ID,转发该响应消息,执行步骤310;
步骤313:接收到响应消息的节点创建一个数据表项,该数据表项的名称域值等于该响应消息的名称域值,数值域值等于该响应消息负载中的数据,生命周期设置为最大值;
步骤314:结束。
4.根据权利要求3所述的一种新一代多媒体传感网的实现方法,其特征在于,一个节点保存一个邻居表,每个邻居表项包含硬件ID和生命周期域;邻居消息包含消息类型和硬件ID域;节点定期执行下述操作维护邻居表:步骤401:开始;
步骤402:节点发送邻居消息,该邻居消息的消息类型为6,硬件ID等于该节点的硬件ID;
步骤403:邻居节点接收到邻居消息后,查看邻居表;如果存在一个邻居表项,该邻居表项的硬件ID等于该邻居消息的硬件ID,则将该邻居表项的生存周期设置为最大值;否则,该邻居节点创建一个邻居表项,该邻居表项的硬件ID等于该邻居消息的硬件ID,生存周期设置为最大值;
步骤404:结束。
5.根据权利要求3所述的一种新一代多媒体传感网的实现方法,其特征在于,查询消息包含消息类型、硬件ID集合和名称域;数据消息包含消息类型、硬件ID集合、跳数、名称和负载;数据D1由名称NA1标识,如果节点ND2没有名称域值为NA1的路由表项,则执行步骤201-
213建立名称域值为NA1的路由表项;如果网络不稳定,节点ND2则通过下述过程获取数据D1:步骤501:开始;
步骤502:节点ND2选择一个路由表项,该路由表项的名称域值等于NA1,发送一个查询消息,该查询消息的消息类型为7,硬件ID集合包含两个元素,第一个元素为节点ND2的硬件ID的最后k比特,k为小于48的正整数,第二个元素为该路由表项的前一跳域值的最后k比特,名称域值为NA1;
步骤503:节点接收到查询消息,如果该节点的硬件ID的最后k比特等于该查询消息硬件ID集合中的最后一个元素,则执行步骤504,否则执行步骤509;
步骤504:接收到查询消息的节点查看数据表,如果存在一个数据表项,该数据表项的名称域值等于该查询消息的名称域值,则执行步骤508,否则执行步骤505;
步骤505:接收到查询消息的节点查看路由表,如果存在一个路由表项,该路由表项的名称域值等于该查询消息的名称域值,则执行步骤507,否则执行步骤506;
步骤506:接收到查询消息的节点执行步骤201~213建立名称域值等于该查询消息的名称域值的路由表项;
步骤507:接收到查询消息的节点选择一个数据表项,该数据表项的名称域值等于该查询消息的名称域值,将该路由表项的前一跳的最后k比特值加入到该查询消息的硬件ID集合中并作为最后一个元素,转发该查询消息,执行步骤503;
步骤508:接收到查询消息的节点选择一个数据表项,该数据表项的名称域值等于该查询消息的名称域值,构建一个数据消息,该数据消息的消息类型为8,跳数为0,硬件ID集合和名称域值分别等于该查询消息的硬件ID集合和名称域值,负载为该数据表项的数值域值;该节点查看邻居表,如果存在一个邻居表项,该邻居表项的硬件ID的最后k比特等于该数据消息的硬件ID集合中的最后一个元素的最后k比特值,则直接发送该数据消息;否则,该节点将该数据消息的跳数域值设置为该数据消息硬件ID集合中元素的个数,发送该数据消息;
步骤509:节点接收到数据消息,如果该节点的硬件ID的最后k比特等于该数据消息的硬件ID集合最后一个元素的最后k比特,则执行步骤512,否则执行步骤510;
步骤510:接收到数据消息的节点查看该数据消息的跳数是否为0,如果是,则执行步骤
512,否则执行步骤511;
步骤511:接收到数据消息的节点将该数据消息的跳数递减1,等待时间T1后转发该数据消息,执行步骤509;时间T1为预先设定值;
步骤512:接收到数据消息的节点从该数据消息的硬件ID集合中删除最后一个元素,判断该数据消息的硬件ID集合的元素个数是否等于0,如果是,则执行步骤516,否则执行步骤
513;
步骤513:接收到数据消息的节点查看邻居表,如果存在一个邻居表项,该邻居表项的硬件ID的最后k比特等于该数据消息的硬件ID集合中的最后一个元素的最后k比特值,则执行步骤514,否则执行步骤515;
步骤514:接收到数据消息的节点将该数据消息的跳数设置为0,等待时间T2,发送该数据消息,执行步骤509;时间T2为预先设定值,小于时间T1;
步骤515:接收到数据消息的节点将该数据消息的跳数域值设置为该数据消息硬件ID集合中元素的个数,等待时间T1后发送该数据消息,执行步骤509;
步骤516:接收到数据消息的节点创建一个数据表项,该数据表项的名称域值等于该数据消息的名称域值,数值域值等于该数据消息负载中的数据,生命周期设置为最大值;
步骤517:结束。