一种计算通信距离的方法和装置 【技术领域】
本发明属于IP网络通信领域,尤其涉及一种计算通信距离的方法和装置。
背景技术
随着互联网的普及与发展,大量服务与应用已经深入渗透到日常生活,基于用户位置信息提供个性化服务已经成为互联网应用的一个重要趋势,基于位置信息提供个性化服务能够显著提高用户的服务满意度和粘着度。
需要位置解析从而优化服务质量的应用至少包括:内容分发网络(CDN),对等通信网络(P2P),Web Portal服务,电子商务平台,在线游戏等。从内容分发角度看,基于位置信息能够选择就近服务器进行内容推送,一方面能大规模减少服务提供商对长途带宽的成本消耗,另一方面也能够显著提高传送速度,提高用户满意度;从信息服务角度看,基于位置信息能够有效推送服务信息给相关用户。
因此,需要提供一种计算通信距离的方法,以确定节点与服务节点之间的位置信息,从而为用户提供个性化服务。
【发明内容】
本发明提出一种计算通信距离的方法和装置,以确定节点与服务节点之间的位置信息,从而为用户提供个性化服务。
根据本发明的一个方面,提出一种计算通信距离的方法,包括以下步骤:为每个IP地址设定用于标识地理位置信息的编码,编码至少包括如下之一:国家编码CountryCode、运营商编码ISPCode、省编码ProvinceCode、市编码CityCode、区编码DistrictCode;根据编码计算要求提供服务的节点与服务节点之间的通信距离Dist(A,B),其中:
Dist(A,B)=Dist1(A.CountryCode,B.CountryCode)*2^96+Dist2(A.ISPCode,B.ISPCode)*2^80+Dist3(A.ProvinceCode,B.ProvinceCode)*2^64+Dist4(A.CityCode,B.CityCode)*2^48+Dist5(A.DistrictCode,B.DistrictCode)*2^32;
Dist1(A.CountryCode,B.CountryCode)=square((A.CountryCode.x)^2+B.CountryCode.y)^2),square()表示开根号运算,A.CountryCode.x表示坐标x,B.CountryCode.y表示坐标y;
Dist2(A.ISPCode,B.ISPCode)=abs(A.ISPCode-B.ISPCode),abs()是求绝对值运算;
Dist3(A.ProvinceCode,B.ProvinceCode)=square((A.ProvinceCode.x)^2+B.ProvinceCode.y)^2);
Dist4(A.CityCode,B.CityCode)=square((A.CityCode.x)^2+B.CityCode.y)^2);
Dist5(A.DistrictCode,B.DistrictCode)=square((A.DistrictCode.x)^2+B.District.y)^2)。
进一步,判断计算出的至少两组通信距离的大小,确定要求提供服务的节点与服务节点的远近。
进一步,选择离要求提供服务的节点最近的服务节点。
进一步,其中国家编码、省编码、市编码、区编码采用二维格式编码,高8位表示坐标x,低8位表示坐标y。
根据本发明的另一个方面,还提出一种计算通信距离的装置,包括:设定模块,为每个IP地址设定用于标识地理位置信息的编码,编码至少包括如下之一:国家编码CountryCode、运营商编码ISPCode、省编码ProvinceCode、市编码CityCode、区编码DistrictCode;计算模块,根据编码计算要求提供服务的节点与服务节点之间的通信距离Dist(A,B),其中:
Dist(A,B)=Dist1(A.CountryCode,B.CountryCode)*2^96+Dist2(A.ISPCode,B.ISPCode)*2^80+Dist3(A.ProvinceCode,B.ProvinceCode)*2^64+Dist4(A.CityCode,B.CityCode)*2^48+Dist5(A.DistrictCode,B.DistrictCode)*2^32;
Dist1(A.CountryCode,B.CountryCode)=square((A.CountryCode.x)^2+B.CountryCode.y)^2),square()表示开根号运算,A.CountryCode.x表示坐标x,B.CountryCode.y表示坐标y;
Dist2(A.ISPCode,B.ISPCode)=abs(A.ISPCode-B.ISPCode),abs()是求绝对值运算;
Dist3(A.ProvinceCode,B.ProvinceCode)=square((A.ProvinceCode.x)^2+B.ProvinceCode.y)^2);
Dist4(A.CityCode,B.CityCode)=square((A.CityCode.x)^2+B.CityCode.y)^2);
Dist5(A.DistrictCode,B.DistrictCode)=square((A.DistrictCode.x)^2+B.District.y)^2)。
进一步,还包括判断模块,判断计算出的至少两组通信距离的大小,确定要求提供服务的节点与服务节点的远近。
进一步,还包括:选择模块,选择离要求提供服务的节点最近的服务节点。
进一步,国家编码、省编码、市编码、区编码采用二维格式编码,高8位表示坐标x,低8位表示坐标y。
本发明提供一种IP地址地理位置的编码方法和装置,基于此编码能够直接计算不同计算机节点与服务节点之间的通信距离。通过一个编码可以同时体现节点的地理位置以及节点与服务节点之间的相对通信距离,无需额外的数据或表格辅助计算通信距离,能够为应用系统如P2P和CDN提供便捷的优化策略。
【附图说明】
图1为本发明一种计算通信距离的方法流程图。
图2为本发明一种计算通信距离的系统结构图。
【具体实施方式】
下面结合附图和实施例对本发明作进一步说明。
图1为本发明一种计算通信距离的方法流程图,包括以下步骤:
在步骤101,为每个IP地址设定用于标识地理位置信息的编码,编码至少包括如下之一:国家编码CountryCode、运营商编码ISPCode、省编码ProvinceCode、市编码CityCode、区编码DistrictCode,国家编码、省编码、市编码、区编码采用二维格式进一步编码,高8位表示坐标x,低8位表示坐标y。
每个IP地址给定一个编码表示使用这个IP地址的节点所在的地理位置,通过这个编码按照本发明提供的方法可以计算节点之间的通信距离,这个距离没有量纲,是用于比较远近的一个相对值,值越高代表通信距离越大。
每个IP地址的编码采用层次化的结构,从高位向低位依次有国家编码.运营商编码.省编码.市编码.区编码.保留1.保留2,如下表所示:
字段名称 长度(bit) 缩写 字段说明 国家编码 16 CountryCode IP地址所在的国家编码 运营商编码 16 ISPCode IP地址所在的运营商 省编码 16 ProvinceCode IP地址所在的省编码 市编码 16 CityCode IP地址所在的市编码 区编码 16 DistrictCode IP地址所在的区编码 保留1 16 Reserve1 保留字段1 保留2 16 Reserve2 保留字段2
在步骤102,根据编码计算要求提供服务的节点与服务节点之间的通信距离Dist(A,B)。本发明中要求提供服务的节点与服务节点之间可以是普通计算机和服务器之间、普通计算机之间、服务器之间。所述服务节点可以是具有服务器功能的节点、装置或设备等,比如,在对等网络中既作为客户端接收信息又作为服务器提供信息的节点,也可以包括在本发明所述的服务节点中。其中:
Dist(A,B)=Dist1(A.CountryCode,B.CountryCode)*2^96+Dist2(A.ISPCode,B.ISPCode)*2^80+Dist3(A.ProvinceCode,B.ProvinceCode)*2^64+Dist4(A.CityCode,B.CityCode)*2^48+Dist5(A.DistrictCode,B.DistrictCode)*2^32;
Dist1(A.CountryCode,B.CountryCode)=square((A.CountryCode.x)^2+B.CountryCode.y)^2),square()表示开根号运算,A.CountryCode.x表示节点A国家编码的坐标x,B.CountryCode.y表示节点B国家编码的坐标y;
Dist2(A.ISPCode,B.ISPCode)=abs(A.ISPCode-B.ISPCode),abs()是求绝对值运算;
Dist3(A.ProvinceCode,B.ProvinceCode)=square((A.ProvinceCode.x)^2+B.ProvinceCode.y)^2),A.ProvinceCode.x表示节点A省编码的坐标x,B.ProvinceCode.y表示节点B省编码的坐标y;
Dist4(A.CityCode,B.CityCode)=square((A.CityCode.x)^2+B.CityCode.y)^2),A.CityCode.x表示节点A市编码的坐标x,B.CityCode.y表示节点B市编码的坐标y;
Dist5(A.DistrictCode,B.DistrictCode)=square((A.DistrictCode.x)^2+B.District.y)^2),A.DistrictCode.x表示节点A区编码地坐标x,B.DistrictCode.y表示节点B区编码的坐标y。
进一步,本发明还可以根据计算出的通信距离选择服务节点,即还可以包括以下步骤:
在步骤103,判断计算出的至少两组通信距离的大小,确定要求提供服务的节点与服务节点的远近。因此,本发明通过进一步执行该步骤,可以根据特定的策略进行优化,比如选择离要求提供服务的节点或用户最近的服务节点。
图2为本发明一种计算通信距离的系统结构图,包括设定模块、计算模块。
设定模块,为每个IP地址设定用于标识地理位置信息的编码,编码至少包括如下之一:国家编码CountryCode、运营商编码ISPCode、省编码ProvinceCode、市编码CityCode、区编码DistrictCode,国家编码、省编码、市编码、区编码采用二维格式进一步编码,高8位表示坐标x,低8位表示坐标y。
计算模块,根据编码计算要求提供服务的节点与服务节点之间的通信距离Dist(A,B)。本发明中要求提供服务的节点与服务节点之间可以是普通计算机和服务器之间、普通计算机之间、服务器之间。所述服务节点可以是具有服务器功能的节点、装置或设备等,比如,在对等网络中既作为客户端接收信息又作为服务器提供信息的节点,也可以包括在本发明所述的服务节点中。其中:
Dist(A,B)=Dist1(A.CountryCode,B.CountryCode)*2^96+Dist2(A.ISPCode,B.ISPCode)*2^80+Dist3(A.ProvinceCode,B.ProvinceCode)*2^64+Dist4(A.CityCode,B.CityCode)*2^48+Dist5(A.DistrictCode,B.DistrictCode)*2^32;
Dist1(A.CountryCode,B.CountryCode)=square((A.CountryCode.x)^2+B.CountryCode.y)^2),square()表示开根号运算,A.CountryCode.x表示节点A国家编码的坐标x,B.CountryCode.y表示节点B国家编码的坐标y;
Dist2(A.ISPCode,B.ISPCode)=abs(A.ISPCode-B.ISPCode),abs()是求绝对值运算;
Dist3(A.ProvinceCode,B.ProvinceCode)=square((A.ProvinceCode.x)^2+B.ProvinceCode.y)^2),A.ProvinceCode.x表示节点A省编码的坐标x,B.ProvinceCode.y表示节点B省编码的坐标y;
Dist4(A.CityCode,B.CityCode)=square((A.CityCode.x)^2+B.CityCode.y)^2),A.CityCode.x表示节点A市编码的坐标x,B.CityCode.y表示节点B市编码的坐标y;
Dist5(A.DistrictCode,B.DistrictCode)=square((A.DistrictCode.x)^2+B.District.y)^2),A.DistrictCode.x表示节点A区编码的坐标x,B.DistrictCode.y表示节点B区编码的坐标y。
在计算出通信距离后,本发明还可以根据特定的策略进行优化,比如选择离要求提供服务的节点或用户最近的服务器。此时,计算通信距离的装置进一步包括:判断模块、选择模块。
判断模块,判断计算出的至少两组通信距离的大小,确定要求提供服务的节点与服务节点的远近。
选择模块,选择离要求提供服务的节点最近的服务节点。
本发明通过一个编码可以同时体现节点的地理位置以及节点到服务节点之间的相对通信距离,无需额外的数据或表格辅助计算通信距离,能够为应用系统如P2P和CDN提供便捷的优化策略。
下面以具体实施例对本发明进行说明。在该实施例中以16进制表示编码,当然也可以使用本领域技术人员可以想到的其他编码方式。
为每个IP地址设定用于标识地理位置信息的编码分别为:
IP地址1:中国,网通,广东,广州,天河,对应的编码用16进制表示依次为:0x2222,0x1111,0x1234,0x2221,0x3212。
IP地址2:中国,电信,广东,深圳,福田,对应的编码依次为:0x2222,0x2222,0x1234,0x2111,0x1110。
根据编码计算IP地址1与IP地址2之间的通信距离:
Dist(IP1,IP2)=square((0x22-0x22)^2+(0x22-0x22)^2)*2^96+abs(0x1111-0x2222)*2^80+square((0x12-0x12)^2+(0x34-0x34)^2)*2^64+square((0x22-0x21)^2+(0x21-0x11)^2)*2^48+square((0x32-0x11)^2+(0x12-0x10)^2)*2^32=5.2818*10^27。
本发明可以为多种系统提供个性化服务,优化服务质量,下面以CDN以及P2P为例进行说明。
CDN内容分发应用。在CDN内容分发系统中,当CDN调度服务器接收到用户访问内容的请求后,需要决定将用户的请求转发至大量服务器集群中的一台。在使用本发明提供的位置编码方法后,只要获得用户IP地址的位置编码以及每台服务器的位置编码,即可通过简单计算判断出用户距离每台服务器的相对远近,从而可以根据特定的策略进行优化。
P2P对等应用。在P2P对等通信应用中,当Tracker服务器接收到用户的内容请求后,需要在大量的可服务节点中选择一个子集返回给请求节点。使用本发明提供的位置编码方法后,可以快速判断出所有可服务节点距离请求节点的远近,然后按照P2P的优化策略进行决策,尤其是针对目前重要的P4P应用,本发明能够为实现P4P的目标提供一种简洁的实现方法。