1.一种物联网的路由通信实现方法,其特征在于,所述物联网包括路由器、节点和一个服务器;一个路由器配置一个下游接口和两个以上的上游接口,下游接口与节点链接,上游接口与服务器或者路由器链接;
服务器配置一个接口,该接口与一个路由器的上游接口连接,该路由器称为主路由器;
节点配置一个接口或者两个接口;配置两个接口的节点称为骨干节点,这两个接口分别为上游接口和下游接口,上游接口与路由器的上游接口相连,下游接口与路由器的下游接口或者节点相连;每个接口由硬件ID唯一标识,该硬件ID为该接口的MAC地址;如果一个接口的硬件ID为x,则该接口简写为接口x;每个路由器的坐标具有唯一性,节点通过电子地图获取每个路由器的坐标;
节点通过消息进行通信,每个消息由一个消息类型唯一标识,消息类型如下所示:消息类型值 消息名称
1 服务器消息
2 发布消息
3 邻居消息
4 信标消息
5 上传消息
6 更新消息
7 请求消息
8 响应消息
服务器消息包含消息类型域;
主路由器维护一个服务器表,一个服务器表项包含硬件ID域和生命周期域;
服务器S1定期执行下述操作维护服务器表:
步骤101:开始;
步骤102:服务器S1发送服务器消息,该服务器消息的消息类型值为1;
步骤103:主路由器从接口f1接收到该服务器消息后查看服务器表,如果存在一个服务器表项,则执行步骤104,否则执行步骤105;
步骤104:主服务器删除服务器表中的服务器表项;
步骤105:主服务器创建一个服务器表项,该服务器表项的硬件ID域值等于f1,生命周期域值设置为最大值;
步骤106:结束。
2.根据权利要求1所述的一种物联网的路由通信实现方法,其特征在于,路由器维护一个转发表,一个转发表项包含坐标域、硬件ID、类型、距离和生命周期域;类型值包括1和0;
如果一个转发表项的类型值为1,则表明该转发表项为到达主路由器的转发表项;如果一个转发表项的类型值为0,则表明该转发表项为到达除了主路由器以外的路由器或者骨干节点的转发表项;
发布消息包含消息类型、坐标、距离和类型域;路由器AR1或者骨干节点B1通过下述过程维护转发表:步骤201:开始;
步骤202:路由器AR1或者骨干节点B1从每个上游接口发送一个发布消息,该发布消息的消息类型值为2,坐标为路由器AR1或者骨干节点B1的坐标,距离域值为0;如果路由器AR1发送发布消息且路由器AR1为主路由器,则设置类型域值为1,否则设置类型域值为0;
步骤203:如果服务器或者骨干节点接收到发布消息,则执行步骤209,否则执行步骤
204;
步骤204:路由器从上游接口x1接收到发布消息后,将该发布消息的距离域值递增1,并查看转发表,如果存在一个转发表项,该转发表项的坐标等于该发布消息的坐标且距离域值小于该发布消息的距离域值,则执行步骤209,否则执行步骤205;
步骤205:从上游接口x1接收到发布消息的路由器查看转发表,如果存在一个转发表项,该转发表项的坐标等于该发布消息的坐标,则执行步骤206,否则执行步骤207;
步骤206:从上游接口x1接收到发布消息的路由器选择一个转发表项,该转发表项的坐标等于该发布消息的坐标,将该转发表项的硬件ID域值设置为x1,将坐标域值、距离域值和类型域值分别更新为发布消息的坐标域值、距离域值和类型域值,将生命周期设置为最大值,执行步骤208;
步骤207:从上游接口x1接收到发布消息的路由器创建一个转发表项,该转发表项的坐标等于该发布消息的坐标,将该转发表项的硬件ID域值设置为x1,坐标域值、距离域值和类型域值分别等于该发布消息的坐标域值、距离域值和类型域值,将生命周期设置为最大值;
步骤208:从上游接口x1接收到发布消息的路由器从除了接口x1以外的每个上游接口发送该发布消息,执行步骤203;
步骤209:结束。
3.根据权利要求1所述的一种物联网的路由通信实现方法,其特征在于,每个节点维护一个邻居表,每个邻居表项包含硬件ID、坐标域和生命周期域;一个邻居消息包含消息类型、硬件ID、坐标域;路由器或者骨干节点定期执行下述操作建立邻居表:步骤301:开始;
步骤302:路由器或者骨干节点从下游接口发送一个邻居消息,该邻居消息的消息类型值为3,硬件ID为该下游接口的硬件ID,坐标为该路由器或者骨干节点的坐标;
步骤303:节点接收到该邻居消息后查看邻居表,如果存在一个邻居表项,该邻居表项的硬件ID等于该邻居消息中的硬件ID,则将该邻居表项的坐标域值更新为该邻居消息的坐标域值,生命周期设置为最大值;否则,该节点创建一个邻居表项,该邻居表项的硬件ID等于该邻居消息中的硬件ID,坐标域值等于该邻居消息的坐标域值,生命周期设置为最大值;
步骤304:结束。
4.根据权利要求3所述的一种物联网的路由通信实现方法,其特征在于,如果节点V1不是骨干节点,则定期执行下述操作建立邻居表:步骤401:开始;
步骤402:节点V1发送一个邻居消息,该邻居消息的消息类型值为3,硬件ID为发送该邻居消息的接口的硬件ID,坐标为该节点的坐标;
步骤403:邻居节点接收到该邻居消息后查看邻居表,如果存在一个邻居表项,该邻居表项的硬件ID等于该邻居消息中的硬件ID,则将该邻居表项的坐标域值更新为该邻居消息的坐标域值,生命周期设置为最大值;否则,该邻居节点创建一个邻居表项,该邻居表项的硬件ID等于该邻居消息中的硬件ID,坐标域值等于该邻居消息的坐标域值,生命周期设置为最大值;
步骤404:结束。
5.根据权利要求1所述的一种物联网的路由通信实现方法,其特征在于,节点保存一个关联表,一个关联表项包含硬件ID、坐标和生命周期域;信标消息包含消息类型、坐标和硬件ID;路由器AR1或者骨干节点B1定期执行下述操作维护关联表:步骤501:开始;
步骤502:路由器AR1或者骨干节点B1从下游接口发送一个信标消息,该信标消息的消息类型值为4,坐标为路由器AR1或者骨干节点B1的坐标,硬件ID为路由器AR1或者骨干节点B1的下游接口的硬件ID;
步骤503:如果路由器或者骨干节点接收到该信标消息,则执行步骤509,否则执行步骤
504;
步骤504:节点接收到信标消息后,查看关联表,如果存在一个关联表项,该关联表项的硬件ID等于该信标消息的硬件ID且该关联表项的生命周期大于阈值T1,则执行步骤509,否则执行步骤505;
步骤505:接收到信标消息的节点查看关联表,如果存在一个关联表项,该关联表项的硬件ID等于该信标消息的硬件ID,则执行步骤506,否则执行步骤507;
步骤506:接收到信标消息的节点选择一个关联表项,该关联表项的硬件ID等于该信标消息的硬件ID,将该关联表项的坐标更新为该信标消息的坐标,将生命周期设置为最大值,执行步骤508;
步骤507:接收到信标消息的节点创建一个关联表项,该关联表项的硬件ID等于该信标消息的硬件ID,坐标等于该信标消息的坐标,生命周期设置为最大值;
步骤508:接收到信标消息的节点转发该信标消息,执行步骤503;
步骤509:结束。
6.根据权利要求1所述的一种物联网的路由通信实现方法,其特征在于,服务器S1维护一个设备表,一个设备表项由下游硬件ID、坐标和生命周期构成;服务器S1与主路由器MAR1相连;上传消息包含消息类型、下游硬件ID和坐标域;路由器AR1定期执行下述操作维护设备表:步骤601:开始;
步骤602:路由器AR1选择类型域值为1的转发表项,构建一个上传消息,该上传消息的消息类型值为5,下游硬件ID等于路由器AR1的下游接口的硬件ID,坐标等于路由器AR1的坐标;路由器AR1从该转发表项的硬件ID所标识的上游接口转发该上传消息;
步骤603:如果主路由器MAR1接收到该上传消息,执行步骤605,否则执行步骤604;
步骤604:接收到上传消息的路由器选择类型域值为1的转发表项,从该转发表项的硬件ID所标识的上游接口转发该上传消息,执行步骤603;
步骤605:主路由器MAR1接收到上传消息后,查看设备表;如果存在一个设备表项,该设备表项的下游硬件ID等于该上传消息的下游硬件ID,则将该设备表项的坐标更新为该上传消息的坐标域值,将生命周期设置为最大值;否则主路由器MAR1创建一个设备表项,该设备表项的下游硬件ID等于该上传消息的下游硬件ID,坐标等于该上传消息的坐标域值,将生命周期设置为最大值;
步骤606:结束。
7.根据权利要求6所述的一种物联网的路由通信实现方法,其特征在于,骨干节点B1定期执行下述操作维护设备表:步骤701:开始;
步骤702:骨干节点B1从上游接口发送一个上传消息,该上传消息的消息类型值为5,下游硬件ID等于骨干节点B1的下游接口的硬件ID,坐标等于骨干节点B1的坐标;
步骤703:如果主路由器MAR1接收到该上传消息,执行步骤705,否则执行步骤704;
步骤704:接收到上传消息的路由器选择类型域值为1的转发表项,从该转发表项的硬件ID所标识的上游接口转发该上传消息,执行步骤703;
步骤705:主路由器MAR1接收到上传消息后,查看设备表,如果存在一个设备表项,该设备表项的下游硬件ID等于该上传消息的下游硬件ID,则将该设备表项的坐标更新为该上传消息的坐标域值,将生命周期设置为最大值;否则,主路由器MAR1创建一个设备表项,该设备表项的下游硬件ID等于该上传消息的下游硬件ID,坐标等于该上传消息的坐标域值,将生命周期设置为最大值;
步骤706:结束。
8.根据权利要求6所述的一种物联网的路由通信实现方法,其特征在于,服务器S1维护一个节点表,一个节点表项包含硬件ID域、硬件ID集合域、坐标域和生命周期域;更新消息包含消息类型、源硬件ID和源坐标、目的硬件ID和目的坐标、最终硬件ID和最终坐标,以及负载;如果节点V1不是骨干节点,则定期执行下述操作更新节点表:步骤801:开始;
步骤802:节点V1选择一个关联表项,该关联表项的坐标域值与自己的坐标距离最近,节点V1选择一个邻居表项,该邻居表项的坐标域值与该关联表项的坐标域值距离最近,节点V1发送一个更新消息,该更新消息的消息类型值为6,源硬件ID和源坐标分别等于节点V1的硬件ID和坐标,目的硬件ID和目的坐标分别等于该邻居表项的硬件ID和坐标,最终硬件ID和最终坐标等于该关联表项的硬件ID和坐标,负载为硬件ID集合,该硬件ID集合等于节点V1的所有关联表项的硬件ID域值的并集;
步骤803:如果路由器或者骨干节点接收到该更新消息且该路由器或者骨干节点的下游接口的硬件ID等于该更新消息的最终硬件ID,则执行步骤806,否则执行步骤804;
步骤804:接收到该更新消息的节点查看自己的硬件ID是否等于该更新消息的目的硬件ID,如果是,则执行步骤805,否则执行步骤810;
步骤805:接收到该更新消息的节点选择一个邻居表项,该邻居表项的坐标域值与该更新消息的最终坐标域值距离最近,将该更新消息的目的硬件ID和目的坐标分别更新为该邻居表项的硬件ID和坐标,转发该更新消息,执行步骤803;
步骤806:如果是骨干节点接收到该更新消息,则从上游接口转发该更新消息;否则路由器接收到更新消息后选择类型域值为1的转发表项,从该转发表项的硬件ID所标识的接口转发该更新消息;
步骤807:如果主路由器MAR1接收到该更新消息,则执行步骤809,否则执行步骤808;
步骤808:接收到该更新消息的路由器选择类型域值为1的转发表项,从该转发表项的硬件ID所标识的接口转发该更新消息,执行步骤807;
步骤809:主路由器MAR1接收到更新消息后,查看节点表;如果存在一个节点表项,该节点表项的硬件ID等于该更新消息的硬件ID,则将该节点表项的坐标更新为该更新消息的坐标域值,将该节点表项的硬件ID集合更新为该更新消息负载中的硬件ID集合,将生命周期设置为最大值;否则,主路由器MAR1创建一个节点表项,该节点表项的硬件ID等于该更新消息的硬件ID,坐标等于该更新消息的坐标域值,硬件ID集合等于该更新消息负载中的硬件ID集合,将生命周期设置为最大值;
步骤810:结束。
9.根据权利要求6所述的一种物联网的路由通信实现方法,其特征在于,服务器S1与主路由器MAR1相连;
请求消息包含消息类型、源硬件ID和源坐标、目的硬件ID和目的坐标、最终硬件ID和最终坐标,以及负载;
响应消息包含消息类型、源硬件ID和源坐标、目的硬件ID和目的坐标、最终硬件ID和最终坐标,以及负载;
如果节点V1和节点V2不是骨干节点,则节点V1通过下述过程实现与节点V2的通信:步骤901:开始;
步骤902:节点V1选择一个关联表项,该关联表项的坐标域值与自己的坐标距离最近,选择一个邻居表项,该邻居表项的坐标域值与该关联表项的坐标域值距离最近,发送一个请求消息,该请求消息的消息类型值为7,源硬件ID和源坐标分别等于节点V1的硬件ID和坐标,目的硬件ID和目的坐标分别等于该邻居表项的硬件ID和坐标,最终硬件ID和最终坐标等于该关联表项的硬件ID和坐标,负载为节点V2的硬件ID;
步骤903:如果路由器或者骨干节点接收到该请求消息且该路由器或者骨干节点的下游接口的硬件ID等于该请求消息的最终硬件ID,则执行步骤906,否则执行步骤904;
步骤904:接收到该请求消息的节点查看自己的硬件ID是否等于该请求消息的目的硬件ID,如果是,则执行步骤905,否则执行步骤906;
步骤905:接收到该请求消息的节点选择一个邻居表项,该邻居表项的坐标域值与该请求消息的最终坐标域值距离最近,将该请求消息的目的硬件ID和目的坐标分别更新为该邻居表项的硬件ID和坐标,转发该请求消息,执行步骤903;
步骤906:如果是骨干节点接收到该请求消息,则从上游接口转发该请求消息;否则路由器接收到请求消息后选择类型域值为1的转发表项,从该转发表项的硬件ID所标识的接口转发该请求消息;
步骤907:如果主路由器MAR1接收到该请求消息,则执行步骤909,否则执行步骤908;
步骤908:接收到该请求消息的路由器选择类型域值为1的转发表项,从该转发表项的硬件ID所标识的接口转发该请求消息,执行步骤907;
步骤909:主路由器MAR1接收到请求消息后,查看节点表,选择一个节点表项,该节点表项的硬件ID等于该请求消息负载中的硬件ID,选择所有下游硬件ID包含在该节点表项的硬件ID集合中的设备表项,从这些设备表项中,主路由器MAR1选择一个设备表项,该设备表项的坐标与该节点表项的坐标距离最近,将该请求消息的目的硬件ID和目的坐标更新为该设备表项的下游硬件ID和坐标,将最终硬件ID和最终坐标更新为该节点表项的硬件ID和坐标;主路由器MAR1选择一个转发表项,该转发表项的坐标等于该请求消息的目的坐标,从该转发表项的硬件ID所标识的接口转发该请求消息;
步骤910:如果路由器或者骨干节点接收到该请求消息且该路由器或者骨干节点的下游接口的硬件ID等于该请求消息的目的硬件ID,则执行步骤912,否则执行步骤911;
步骤911:接收到该请求消息的路由器选择一个转发表项,该转发表项的坐标等于该请求消息的目的坐标,从该转发表项的硬件ID所标识的接口转发该请求消息,执行步骤910;
步骤912:接收到该请求消息的路由器或者骨干节点从下游接口转发该请求消息;接收到请求消息的节点查看邻居表,选择一个邻居表项,该邻居表项的坐标域值与该请求消息的最终坐标域值距离最近,将该请求消息的目的硬件ID和目的坐标分别更新为该邻居表项的硬件ID和坐标,转发该请求消息;
步骤913:如果节点V2接收到该请求消息,则执行步骤916,否则执行步骤914;
步骤914:其他节点接收到请求消息后查看自己的硬件ID是否等于该请求消息的目的硬件ID,如果等于,则执行步骤915,否则执行步骤916;
步骤915:接收到请求消息的节点选择一个邻居表项,该邻居表项的坐标域值与该请求消息的最终坐标域值距离最近,将该请求消息的目的硬件ID和目的坐标分别更新为该邻居表项的硬件ID和坐标,转发该请求消息,执行步骤913;
步骤916:节点V2接收到请求消息后选择一个关联表项,该关联表项的坐标域值与自己的坐标距离最近,节点V2选择一个邻居表项,该邻居表项的坐标域值与该关联表项的坐标域值距离最近,节点V2发送一个响应消息,该响应消息的消息类型值为8,源硬件ID和源坐标分别等于节点V2的硬件ID和坐标,目的硬件ID和目的坐标分别等于该邻居表项的硬件ID和坐标,最终硬件ID和最终坐标等于该关联表项的硬件ID和坐标,负载为请求消息源硬件ID和响应数据;
步骤917:如果路由器或者骨干节点接收到该响应消息且该路由器或者骨干节点的下游接口的硬件ID等于该响应消息的最终硬件ID,则执行步骤920,否则执行步骤918;
步骤918:接收到该响应消息的节点查看自己的硬件ID是否等于该响应消息的目的硬件ID,如果是,则执行步骤919,否则执行步骤920;
步骤919:接收到该响应消息的节点选择一个邻居表项,该邻居表项的坐标域值与该响应消息的最终坐标域值距离最近,将该响应消息的目的硬件ID和目的坐标分别更新为该邻居表项的硬件ID和坐标,转发该响应消息,执行步骤917;
步骤920:如果是骨干节点接收到该响应消息,则从上游接口转发该响应消息;否则路由器接收到响应消息后选择类型域值为1的转发表项,从该转发表项的硬件ID所标识的接口转发该响应消息;
步骤921:如果主路由器MAR1接收到该响应消息,则执行步骤923,否则执行步骤922;
步骤922:接收到该响应消息的路由器选择类型域值为1的转发表项,从该转发表项的硬件ID所标识的接口转发该响应消息,执行步骤921;
步骤923:主路由器MAR1接收到响应消息后,查看节点表,选择一个节点表项,该节点表项的硬件ID等于该响应消息负载中的硬件ID,选择所有下游硬件ID包含在该节点表项的硬件ID集合中的设备表项,从这些设备表项中,主路由器MAR1选择一个设备表项,该设备表项的坐标与该节点表项的坐标距离最近,将该响应消息的目的硬件ID和目的坐标更新为该设备表项的下游硬件ID和坐标,将最终硬件ID和最终坐标更新为该节点表项的硬件ID和坐标;主路由器MAR1选择一个转发表项,该转发表项的坐标等于该响应消息的目的坐标,从该转发表项的硬件ID所标识的接口转发该响应消息;
步骤924:如果路由器或者骨干节点接收到该响应消息且该路由器或者骨干节点的下游接口的硬件ID等于该响应消息的目的硬件ID,则执行步骤926,否则执行步骤925;
步骤925:接收到该响应消息的路由器选择一个转发表项,该转发表项的坐标等于该响应消息的目的坐标,从该转发表项的硬件ID所标识的接口转发该响应消息,执行步骤924;
步骤926:接收到该响应消息的路由器或者骨干节点从下游接口转发该响应消息;接收到响应消息的节点查看邻居表,选择一个邻居表项,该邻居表项的坐标域值与该响应消息的最终坐标域值距离最近,将该响应消息的目的硬件ID和目的坐标分别更新为该邻居表项的硬件ID和坐标,转发该响应消息;
步骤927:如果节点V1接收到该响应消息,则执行步骤930,否则执行步骤928;
步骤928:其他节点接收到响应消息后查看自己的硬件ID是否等于该响应消息的目的硬件ID,如果等于,则执行步骤929,否则执行步骤930;
步骤929:接收到响应消息的节点选择一个邻居表项,该邻居表项的坐标域值与该响应消息的最终坐标域值距离最近,将该响应消息的目的硬件ID和目的坐标分别更新为该邻居表项的硬件ID和坐标,转发该响应消息,执行步骤927;
步骤930:节点V1接收到响应消息后,保存该响应消息负载中的响应数据;
步骤931:结束。