发明内容
为克服现有计算机网络中基于SIP应用的信息识别困难和信息管理受限的缺陷,本发明提出一种面向SIP应用的业务流管理方法。
根据本发明的一个方面,提出了一种面向SIP应用的业务流管理方法,包括:
步骤10)、用户登录本地SIP代理服务器,向该SIP代理服务器发送PUBLISH消息;
步骤20)、本地SIP用户发起或者接收通信业务请求,解析SIP业务请求INVITE消息,查询所述PUBLISH消息,发送业务发起通告;
步骤30)、所述SIP代理服务器在网络层截获包括所述业务发起通告的数据包,基于用户SIP地址,为每个用户的每条业务流通信链路建立对应数据包队列通道,进行数据包队列的调度。
其中,所述方法还包括:
步骤40)、检查所述用户业务流信息管理表中的接入网络信息,确定用户接入网络类型发生改变时,根据所述PUBLISH信息中的用户业务需求等级信息进行链路带宽的调整。
其中,步骤10)中,所述用户包括本地SIP用户和远程通信主机上一个或者多个SIP用户。
其中,步骤10)进一步包括:
步骤110)、用户按照标准SIP流程登录SIP代理服务器,代理服务器回复200OK消息,用户发送PUBLISH消息至本地代理服务器;所述PUBLISH消息包括用户业务需求等级信息和用户接入网络类型;
步骤120)、本地代理服务器接收所述PUBLISH消息,存储到包括对端SIP地址和对端IP地址的本地数据库;
步骤130)、发布更新的PUBLISH消息来改变业务等级信息并发送至本地SIP代理服务器;其中,如果用户需求等级信息改变、发生网络切换时,实时发送新的PUBLISH消息至本地SIP服务器。
其中,步骤20)中还包括:发送所述业务发起通告的同时,发送用户信息通告,用于查询并更新本地SIP代理服务器中的用户信息。
其中,步骤20)进一步包括:
步骤210)、本地用户按照SIP流程和其他SIP用户建立多媒体业务,本地代理服务器解析INVITE及200OK消息,从所述200OK消息中解析出当前发起业务的信息;
步骤220)、根据所述当前发起业务的信息,组成业务发起通告并发送至***网络层处理单元的指定处理端口;
步骤230)、本地SIP代理服务器根据对方SIP地址查询用户业务需求等级信息和接入网络信息,将其中的用户信息以通告的形式发送至***底层指定处理端口;
步骤240)、当本地SIP代理服务器接收到更新的PUBLISH消息时,提取出本地用户信息,确定信息内容改变后,将原有数据库信息更新,根据用户信息表中的对端用户IP及SIP地址信息及时通知该对端用户。
其中,步骤210)进一步包括:其他SIP用户发起多媒体业务,本地用户回复200OK消息,从对方发送过来的INVITE消息中解析出当前发起业务的信息。
其中,步骤230)中,所述查询过程包括:
通信对端用户和本地用户为相同域内的用户,代理服务器将直接在本地数据库中查询相关信息;
通信对端用户和本地用户为不同域内的用户,代理服务器根据对方SIP地址发送查询消息至对方域的SIP代理服务器,由对方域内SIP代理服务器执行域内查询。
其中,步骤30)进一步包括:
步骤310)、在指定端口接收新业务发起通告和用户信息,建立用户业务流信息管理表,其中,表中每一个业务对应一系列新业务发起通告信息,一个用户可以对应若干个业务;
步骤320)、本地用户接收到业务发起通告,以用户所在业务的IP地址和端口为依据,在网络层截获数据包,并根据所述用户业务流信息管理表建立数据包管理队列进行业务流管理;
步骤330)、根据所述数据包管理队列和所述业务发起通告,在不需要进行QoS调节的情况下,数据包管理队列的内、外两层按照轮转的方式进行数据包调度。
其中,步骤320)中,数据包管理队列中,外层队列按照用户进行分类管理,内层队列按用户业务的通信端口进行分类,内外数据包队列的长度相同。
其中,步骤40)进一步包括:
步骤410)、本地用户查询用户业务流信息管理表中远程用户的接入网络状况和业务需求等级信息,实时与前一时刻用户接入网络状况信息进行对比;
步骤420)、确定用户接入状况信息发生变化且持续一定时间,根据用户业务等级信息调整流向该用户的业务流带宽,包括按照用户业务等级对不同业务对应的队列进行丢包。
本方法中借鉴传统业务流管理方法,针对SIP协议发起业务的特殊性,将应用层的业务发起消息同网络层的数据包的管理与调度相结合,准确实现了业务流类别的识别;同时借助于SIP特有的消息扩展方式,实现用户信息的实时发布与更改。本发明采用了针对SIP典型应用的新业务通告机制,以用户SIP地址为关键字进行业务流资源的管理,根据用户接入网络状况的变化,结合用户业务需求等级信息来实时地调配当前业务流的带宽,有效地提高网络资源的利用率和当前网络工作效率。
具体实施方式
下面结合附图和具体实施例对本发明提供的一种面向SIP应用的业务流管理方法进行详细描述。
在根据本发明的一个实施例中,提供一种在异构网络环境下实时、自动地为多媒体通信业务用户提供业务流管理的方法,该实施例可以应用于运行在Linux操作***平台上的音视频数据传输的多媒体通信业务上。图1示出具体网络拓扑环境,如图1所示,用户A通过无线方式接入网络(如WLAN),B用户通过无线方式接入网络(假设也为WLAN),C用户通过LAN接入网络。A用户通过核心IP网络同B和C用户进行音视频或文件数据传输。实线表示正在连接的有线链路,闪电符号表示无线链路。A、B和C用户三者均通过登录SIP代理服务器来完成业务的建立和结束,该实施例给出各用户处于同一管理域内的情况,实际网络环境下,各用户可以处于不同的管理域中。根据本发明的方法同时适用于通信双方为异种网络接入环境下的基于IP核心网的多媒体通信业务过程,在异种接入方式的情况下,网络能提供的带宽各有差别,但本发明涉及的探测及调节方式同样适用。
图2示出根据本发明的实施例的一种面向典型SIP应用的业务流管理方法的整体流程图,所述方法可为当前主机的多个SIP通信终端用户提供业务流信息的管理和用户信息的发布,包括:用户登录本地SIP代理服务器,向该SIP代理服务器发送PUBLISH消息(包括用户业务等级信息等);本地SIP用户发起或者接收通信业务请求,解析SIP业务请求INVITE消息,查询所述PUBLISH消息,发送业务发起通告;所述SIP代理服务器建立用户业务流信息管理表,在网络层截获包括所述业务发起通告的数据包,基于用户SIP地址,为每个用户的每条业务流通信链路建立对应数据包队列通道,进行数据包队列的调度;检查所述用户业务流信息管理表中的接入网络信息,确定用户接入网络类型发生改变时,根据所述PUBLISH信息中的用户业务需求等级信息进行链路带宽的调整。
如图2和图3所示,当本地SIP用户和远程通信主机上一个或者多个SIP用户进行多媒体通信时,执行以下步骤:
(1)、本地SIP用户A,对端SIP用户B、C分别登录本地SIP代理服务器(SIP Proxy),并向该代理服务器发送带有用户业务需求等级信息、用户接入网络类型等信息的PUBLISH消息,代理服务器将该PUBLISH信息存储至本地数据库。如本领域内技术人员公知,PUBLISH消息在SIP协议中详细定义,上述用户发送的PUBLISH消息包括但不限于用户业务需求等级信息、用户接入网络类型。
进一步,所述步骤(1)包括:
(10)、用户A、B和C按照标准SIP流程登录所在管理域内的SIP代理服务器,登录过程通过用户发送REGISTER消息至代理服务器来实现,代理服务器将回复包括登录成功湖中耦合失败的对应200OK消息。
(11)、各用户登录***后,发送含有本用户业务等级信息、接入网络信息的用户特有信息的SIP扩展消息PUBLISH至本地代理服务器。
这里提到的用户特有信息是指除后面步骤(20)中提到的业务建立时的信息以外,针对于某个用户的特有属性消息,特指用户业务需求等级信息以及用户接入网络类型等,消息结构如附图4所示。
用户业务需求等级信息,对应于用户对不同业务等级的需求差异,按优先级高低排序。本方法中,将基于SIP的主要业务应用分为以下四种,对应编号如下表所示,用户可以根据实际情况来设定用户等级的顺序,按编号顺序优先级由高到低,例如:1234或者2341。
业务种类 | 描述 |
1、AUDIO | 对应语音聊天、VOIP以及其它形式的音频会议等 |
2、VIDEO | 对应视频会议、聊天等 |
3、FILE | 对应文件共享、文件传输等 |
4、OTHER | 其他业务,如Message等 |
(13)、本地代理服务器接收步骤(12)中的PUBLISH消息,同时将消息体中的用户业务需求等级信息、用户接入网络类型等信息提取,以用户信息统计表的形式存储至本地数据库当中,通常格式参考如下:
SIP地址1(本地) | 业务等级需求信息 | 接入网络方式 | SIP地址1(对端) | 对端IP地址1 |
SIP地址2(本地) | 业务等级需求信息 | 接入网络方式 | SIP地址2(对端) | 对端IP地址2 |
上述表格右侧的对端SIP地址及对端IP地址为与本地SIP用户建立业务的对端用户信息,由代理服务器根据SIP信令交互内容进行维护和查询,业务结束时及时清空。实际应用中,本地和通信对端主机各自维护上述用户信息统计表,便于信息的提取和查找。
在本实施例中,本实例中代理服务器将存储三个用户A、B、C的用户信息,内容如下:
上述过程中的PUBLISH消息参考附图4,实例中A、B、C各用户业务需求等级顺序分别为1234、3241、2341。
(14)、上述步骤中,用户根据实际情况,可以随时通过发布更新的PUBLISH消息来改变业务等级信息,并发送至本域内的SIP代理服务器;特别地,如果用户需求等级信息发生改变、发生网络切换或者重新以其他接入网络形式登录SIP服务器时,可以实时发送新的PUBLISH消息至本地SIP服务器。
(2)、本地SIP用户A发送或者接收多媒体通信业务的请求,对SIP业务请求消息(INVITE或200OK)进行解析并整理,同时查询步骤(1)中的用户业务等级字段的信息,发送业务发起通告和用户信息通告至网络层数据处理单元。
进一步,所述步骤(2)包括:
(21)、本地用户A按照SIP流程和其他SIP用户(例如用户B)建立多媒体业务;首先发送INVITE消息至代理服务器,然后代理服务器完成中转,将该消息发送到用户B;用户B回复200OK,本地用户A通过代理服务器中转回复ACK,新业务开始建立。同时本地代理服务器提取INVITE及200OK消息中的部分信息,更新用户信息管理表中的远程用户SIP地址和IP地址,消息结构如附图4所示。
继续执行下面的(22)步骤;若未得到对方回应的200OK消息,则整个过程不再继续进行,本次新业务建立失败。
(22)、本地主机从上述步骤(21)中的200OK消息中解析出当前发起业务的相关信息,包括双方SIP地址、IP地址、端口号、业务类型等,然后将业务相关信息组成业务发起通告,通常通告内容参考下表:
标志位 | 用户SIP地址 | 业务类型 | 本地IP | 远程IP | 端口号 |
在本实施例中,业务通告内容参考下表:
(23)、将步骤(32)中的业务发起通告发送至***网络层处理单元指定处理端口(例如9111)。对于上述步骤(21)、(22)和(23),存在第二种情况,即本地SIP用户作为业务发起的接受方,由其他终端上的SIP用户首先发起业务的情况。此时,由本地用户回复200OK消息,随即从对方发送过来的INVITE消息中解析出当前发起业务的相关信息。
上述步骤中叙述的是本地用户主动发起多媒体业务的情况,若业务由对端用户主动发起,此时本地SIP用户A将作为业务发起的接受方。如附图3所示,A用户首先接收来自对端用户C的INVITE消息并进行解析,然后提取其中的SIP地址、IP地址,端口、业务类型等信息组成业务发起通告,同时回复200OK消息。业务通告内容如下:
(24)、代理服务器根据对方SIP地址查询相关用户业务需求等级信息和接入网络信息,并将其中的用户信息以通告的形式发送至***底层指定处理端口(本例中为9111),消息以标志位加以区分,查询过程分为以下两种情况:
(241)第一种情况下,通信对端用户和本地用户为相同域内的用户,此时,代理服务器将直接在本地数据库中查询相关信息,并将结果返回终端查询端口(9102);
本实例中,用户A、B、C均处于同一管理域内,此时代理服务器将直接在本地数据库中查询相关信息,并将结果返回终端***底层查询端口(9102);实际情况下,亦存在用户位于不同管理域内的情况,此时,代理服务器根据对方SIP地址发送查询消息至对方域的SIP代理服务器,由对方域内代理服务器执行域内查询,将结果返回至本域内代理服务器,查询过程采用消息问询方式,选取特定端口进行通信,如(9103和9104)。
上述用户信息通告内容参考下表:
(242)第二种情况下,通信对端用户和本地用户为不同域内的用户,此时,代理服务器根据对方SIP地址发送查询消息至对方域的SIP代理服务器,由对方域内代理服务器执行域内查询,将结果返回至本域内代理服务器,查询过程采用消息问询方式,选取特定端口进行通信,如(9103和9104)。
上述用户信息通告内容通常参考下表:
标志位 | 用户SIP地址 | 业务等级需求信息 | 接入网络方式 |
(25)、结合(14)中提到的情况,通信过程中用户B、C均可能发送更新的PUBLISH消息来通知代理服务器自身信息的变更,当本地代理服务器接收到更新的PUBLISH消息时,首先提取出其中的本地用户的信息,将此时的信息与前面存储的信息进行对比,如果信息相同,则不做任何处理;如果发现信息内容改变,则将原有数据库信息覆盖,并根据用户信息表中的对端用户IP及SIP地址信息及时通知该对端用户(本实例中为本地SIP用户A),通知仍然采用发送消息的方式,格式和端口号不变。
(3)、在网络层截获发往对应用户的数据包,根据业务发起通告中的内容,以用户的SIP地址为关键字建立并维护用户业务流信息管理表,并随着通信过程进行实时更新。同时,为每个用户的每条业务流通信链路建立对应数据包队列通道,按照预定方式进行数据包队列的调度。
进一步,所述步骤(3)包括:
(31)、在指定端口(9111)接收来自应用层的新业务发起通告和用户信息,并将通告中的信息提取出来,同时建立用户业务流信息管理表,表结构参考如下:
注:表中每一个业务都对应一系列信息,一个用户可以同时对应若干个业务,具体信息均可以通过新业务发起通告中得到。
在本实施例中,用户业务流信息管理表如下所示,
(32)、本地用户A接收到业务发起通告,标志着该多媒体业务已成功开启。此时将以用户所在业务IP地址和端口为依据,在网络层截获发往用户B、C的音视频等业务对应的数据包,并根据上述用户信息管理表中的内容在本地主机上分别为各用户建立业务流数据包管理队列,进行业务流管理,将根据用户信息表中各业务端口进行分类,进而将同端口数据包进行分类处理。
这里提到的数据包截获机制主要指操作***提供的实现数据包过滤/处理的功能框架(如Netfilter等),通过这些机制提供的函数将用户A发往用户B、C的数据包进行暂时的捕获和处理。
数据包管理队列示意图如附图5所示:数据包采用“双队列”调度机制,首先,外层队列按照用户进行分类管理,内层队列按所在用户业务的通信端口进行分类。内外数据包队列的长度相同,均为2048字节。
(33)、结合步骤(32)中的数据包队列结构,统一进行数据包的调度。在不需要进行QoS调节的情况下(即网络状况良好且未发生移动切换的情况下),内、外两层均按照传统轮转的方式进行数据包调度。当对端用户接入网络信息发生变化时,则根据步骤(4)中的策略进行对应的业务流带宽的调整。
(4)、周期性检查用户信息表中的接入网络信息,判断当前用户的接入网络状况是否发生了改变。当用户接入网络的类型发生改变时,结合用户业务需求等级信息进行对应链路带宽的调整。
进一步,所述步骤(4)包括:
(41)、本地用户A以T秒(例如2s)为周期查询与当前用户通信的SIP用户B、C的接入网络状况和业务需求等级信息,并实时与t秒前用户的接入状况进行对比,若当前时刻与t秒前用户接入状况发生变化且这一状况持续了一定时间(例如2秒),便认定用户的接入网络状况发生了改变。
(42)、当用户接入状况发生改变时且这一状况持续了一定时间(例如1.5秒),根据用户当前接入网络状况的情况并结合用户业务等级信息来调整流向这一用户的业务流带宽,将通过调整(32)中建立的数据包队列的丢包率来实现,即按照用户业务等级的顺序来对不同业务对应的队列进行丢包,具体策略参考下表:
上表中,各业务等级对应的百分比数字表示的是当前用户从一种接入网络环境变化至另一种接入网络环境时每种业务流对应的数据包队列的丢包率,具体变化值均为基于前一时刻对应丢包率的增加或者减少。例如,当用户从WLAN环境改变为CDMA时,对应每种业务队列丢包率调整的值分别减少20%、32%、40%、55%,反之则采用相反的策略增加对应的丢包率值。
下表表明用户B的信息在当前时刻下较前一时刻发生了改变(前一时刻信息以步骤(13)中B用户的用户信息为准)
当前情况下,用户B由WLAN—CDMA网络中,此时应该将用户对应的业务流数据包队列调整如下,调整过程参考附图6:
根据本发明的上述方法,可以高效、快捷地对当前用户的业务流信息进行管理,对各业务流对应的数据包对列进行调度;当用户接入网络状况发生变化时,可以通过有效的调节来达到服务质量的保证和资源的合理优化配置。
最后应说明的是,以上实施例仅用以描述本发明的技术方案而不是对本技术方法进行限制,本发明在应用上可以延伸为其他的修改、变化、应用和实施例,并且因此认为所有这样的修改、变化、应用、实施例都在本发明的精神和教导范围内。