发明内容
本发明提供实况监控方法及VM服务器,以降低实况监控占用的带宽。
本发明的技术方案是这样实现的:
一种实况监控方法,将监控系统中的所有媒体服务器MS作为一个MS集群,为所有MS分配一个共同的群IP地址,并为各个MS分配一个互不相同的主IP地址,对于任一MS,在与该MS直连的路由器上配置MS的群IP地址的路由,其中,下一跳为该MS的主IP地址,出接口为该路由器直连到该MS的接口,将所有MS的群IP地址的路由发布全网,该方法包括:
视频管理VM服务器获取MS的群IP地址,将MS的群IP地址发送给各编码器EC、各视频客户端VC,以使得各EC、各VC分别发起以MS的群IP地址为目的IP地址的查询消息,该消息经过任一路由器时,该路由器根据自身的MS的群IP地址的路由将消息向最近的MS转发,当消息到达最近MS时,最近MS回复以自身的主IP地址为源IP地址的响应消息,当EC、VC接收到响应消息时得到各自对应的最近MS的主IP地址时,将各自对应的最近MS的主IP地址上报给VM服务器;
VM服务器接收第一VC发起的针对第一EC的实况请求,使得来自第一EC的流量通过第一VC、第一EC各自对应的最近MS转发给第一VC。
所述VM服务器获取MS的群IP地址包括:
各MS上线时,向VM服务器发起初次注册消息,消息的源IP地址为MS的群IP地址;
所述将MS的群IP地址发送给各EC、各VC包括:
当VM服务器接收到EC、VC发来的初次注册消息时,将MS的群IP地址发送给EC、VC;
所述将各自对应的最近MS的主IP地址上报给VM服务器包括:
各EC、各VC通过保活注册消息将各自对应的最近MS的主IP地址上报给VM服务器。
所述使得来自第一EC的流量通过第一VC、第一EC各自对应的最近MS转发给第一VC包括:
VM服务器判断第一VC对应的第二MS和第一EC对应的第一MS是否为同一MS,若是,通知第一EC将流量发送到第一MS,通知第一MS将流量发送到第一VC;否则,通知第一EC将流量发送到第一EC对应的第一MS,通知第一MS将流量发送到第一VC对应的第二MS,通知第二MS将流量发送到第一VC。
所述通知第一EC将流量发送到第一MS,通知第一MS将流量发送到第一VC包括:
VM服务器向第一MS发送F2消息,F2消息携带第一VC的IP地址和端口号、第一EC的IP地址;第一MS接收F2消息,向VM服务器返回F3消息,F3消息携带第一MS的接收端口号和发送端口号,同时第一MS建立转发表项,表项包括:接收端口号:第一MS的接收端口号,发送端口号:第一MS的发送端口号、目的IP地址:第一VC的IP地址、目的端口号:第一VC的端口号、源IP地址:第一EC的IP地址、源端口号:空;
VM服务器向第一EC发送F4消息,F4消息携带第一MS的接收端口号和第一EC的通道号;第一EC接收F4消息,向VM服务器返回F5消息,F5消息携带第一EC的端口号,同时第一EC根据F4消息中的第一EC的通道号和第一MS的接收端口号,将对应通道的流量发送到第一MS;
VM服务器接收F5消息,向第一MS发送F6消息,F6消息携带第一EC的端口号;第一MS接收F6消息,将第一EC的端口号放入转发表项的源端口号中,接收第一EC发来的流量,根据转发表项将流量发送给第一VC;VM服务器向第一VC发送F8消息,F8消息携带第一MS的发送端口号,以通知第一VC接收流量。
所述通知第一EC将流量发送到第一EC对应的第一MS,通知第一MS将流量发送到第一VC对应的第二MS,通知第二MS将流量发送到第一VC包括:
VM服务器向第二MS发送F2消息,F2消息携带第一VC的IP地址和端口号、第一MS的IP地址;第二MS接收F2消息,向VM服务器返回F3消息,F3消息携带第二MS的接收端口号和发送端口号,同时第二MS建立转发表项,表项包括:接收端口号:第二MS的接收端口号、发送端口号:第二MS的发送端口号、目的IP地址:第一VC的IP地址、目的端口号:第一VC的端口号、源IP地址:第一MS的IP地址、源端口号:空;
VM服务器向第一MS发送F4消息,F4消息携带第二MS的IP地址和接收端口号、第一EC的IP地址;第一MS接收F4消息,向VM服务器返回F5消息,F5消息携带第一MS的接收端口号和发送端口号,同时第一MS建立转发表项,表项包括:接收端口号:第一MS的接收端口号、发送端口号:第一MS的发送端口号、目的IP地址:第二MS的IP地址、目的端口号:第二MS的端口号、源IP地址:第一EC的IP地址、源端口号:空;
VM服务器向第一EC发送F6消息,F6消息携带第一MS的IP地址和接收端口号、第一EC的通道号;第一EC接收F6消息,向VM服务器返回F7消息,F7消息携带第一EC的端口号,同时第一EC根据F6消息中的通道号和第一MS的接收端口号,将对应通道的流量发送到第一MS;
VM服务器接收F7消息,向第一MS发送F8消息,F8消息携带第一EC的端口号,同时向第二MS发送F10消息,F10消息携带第一MS的发送端口号;第一MS接收F8消息,将F8消息中的第一EC的端口号放入自身建立的转发表项的源端口号中;第二MS接收F10消息,将F10消息中的第一MS的发送端口号放入自身建立的转发表项的源端口号中;第一MS根据自身的转发表项转发流量到第二MS,第二MS接收该流量,根据自身的转发表项转发流量到第一VC;VM服务器向第一VC发送F12消息,F12消息携带第二MS的发送端口号,以通知第一VC接收流量。
所述使得来自第一EC的流量通过第一VC、第一EC各自对应的最近MS转发给第一VC进一步包括:
VM服务器记录转发表项,表项内容包括:第一EC的IP地址和端口号和通道号、第一EC对应的第一MS的IP地址和接收端口号和发送端口号、第一VC对应的第二MS的IP地址和接收端口号和发送端口号、第一VC的IP地址和端口号;
所述VM服务器接收第一VC发起的针对第一EC的实况请求之后、使得来自第一EC的流量通过第一VC、第一EC各自对应的最近MS转发给第一VC之前进一步包括:
VM服务器在已记录的转发表项中查找与所述实况请求针对的第一EC的IP地址和通道号、第一EC对应的第一MS的主IP地址、第一VC对应的第二MS的主IP地址匹配的表项,若查找到,则通知第二MS将来自第一EC的流量复制一份发送给第一VC;若未查找到,则执行所述使得来自第一EC的流量通过第一VC、第一EC各自对应的最近MS转发给第一VC的动作。
所述方法进一步包括:
当VM服务器接收到第一VC发来的针对第一EC的停止实况请求消息时,根据第一EC的IP地址和端口号和通道号、第一VC的IP地址和端口号,删除自身记录的对应转发表项。
一种实况监控方法,将监控系统中的所有媒体服务器MS作为一个MS集群,为所有MS分配一个共同的群IP地址,并为各个MS分配一个互不相同的主IP地址,对于任一MS,在与该MS直连的路由器上配置MS的群IP地址的路由,其中,下一跳为该MS的主IP地址,出接口为该路由器直连到该MS的接口,将所有MS的群IP地址的路由发布全网,该方法包括:
视频管理VM服务器获取MS的群IP地址,将MS的群IP地址发送给各VC,以使得各VC分别发起以MS的群IP地址为目的IP地址的查询消息,该消息经过任一路由器时,该路由器根据自身的MS的群IP地址的路由将消息向最近的MS转发,当消息到达最近MS时,最近MS回复以自身的主IP地址为源IP地址的响应消息,VC接收该响应消息,获得自己对应的最近MS的主IP地址;
VM服务器接收第一VC发起的针对第一EC的实况请求,该请求中携带第一VC对应的第一MS的主IP地址,使得来自第一EC的流量通过第一MS转发给第一VC。
所述VM服务器获取MS的群IP地址包括:
各MS上线时,向VM服务器发起初次注册消息,消息的源IP地址为MS的群IP地址;
所述将MS的群IP地址发送给各VC包括:
当VM服务器接收到VC发来的初次注册消息时,将MS的群IP地址发送给VC。
所述使得来自第一EC的流量通过第一MS转发给第一VC进一步包括:
VM服务器记录转发表项,表项内容包括:第一EC的IP地址和端口号和通道号、第一MS的IP地址和接收端口号和发送端口号、第一VC的IP地址和端口号;
所述VM服务器接收第一VC发起的针对第一EC的实况请求之后、使得来自第一EC的流量通过第一MS转发给第一VC之前进一步包括:
VM服务器在已记录的转发表项中查找与所述实况请求针对的第一EC的IP地址和通道号匹配的表项,若查找到,则通知转发表项中的MS将来自第一EC的流量复制一份发送给第一MS,通知第一MS将流量发送给第一VC;若未查找到,则执行所述使得来自第一EC的流量通过第一MS转发给第一VC的动作。
一种VM服务器,包括:
MS信息记录模块:获取MS的群IP地址,将MS的群IP地址发送给各EC、各VC,以使得各EC、各VC发起以MS的群IP地址为目的IP地址的查询消息,该消息经过任一路由器时,该路由器根据自身的MS的群IP地址的路由将消息向最近的MS转发,当消息到达最近MS时,最近MS回复以自身的主IP地址为源IP地址的响应消息,当EC、VC接收到响应消息时得到各自对应的最近MS的主IP地址;接收并记录各EC、各VC发来的各自对应的最近MS的主IP地址;其中,所有MS作为一个MS集群,所有MS具有一个共同的群IP地址,每个MS具有一个唯一的主IP地址,对于任一MS,在与该MS直连的路由器上配置有MS的群IP地址的路由,其中,下一跳为该MS的主IP地址,出接口为该路由器直连到该MS的接口,且所有MS的群IP地址的路由被发布到全网;
实况管理模块:接收第一VC发起的针对第一EC的实况请求,从MS信息记录模块获取第一VC、第一EC各自对应的最近MS的主IP地址,使得来自第一EC的流量通过第一VC、第一EC各自对应的最近MS转发给第一VC。
所述MS信息记录模块包括:
初次注册处理模块:接收MS发来的携带MS的群IP地址的初次注册消息,接收EC、VC发来的初次注册消息,将MS的群IP地址携带在初次注册回应中返回给EC、VC;
保活注册处理模块:接收EC、VC发来的携带各自对应的最近MS的主IP地址的保活注册消息,记录EC、VC与各自对应的最近MS的主IP地址的映射关系。
所述实况管理模块包括:
管理模块:接收第一VC发起的针对第一EC的实况请求,将第一VC、第一EC的IP地址发送给MS获取模块,接收MS获取模块返回的第一VC对应的第二MS的主IP地址和第一EC对应的第一MS的主IP地址,判断第一、二MS是否为同一MS,若是,通知第一EC将流量发送到第一MS,通知第一MS将流量发送到第一VC;否则,通知第一EC将流量发送到第一EC对应的第一MS,通知第一MS将流量发送到第一VC对应的第二MS,通知第二MS将流量发送到第一VC;
MS获取模块:接收管理模块发来的第一VC、第一EC的IP地址,从MS信息记录模块获取第一VC对应的第二MS的主IP地址、第一EC对应的第一MS的主IP地址并返回给管理模块。
所述实况管理模块进一步用于,当使得来自第一EC的流量通过第一VC、第一EC各自对应的最近MS转发给第一VC时,记录转发表项,表项内容包括:第一EC的IP地址和端口号和通道号、第一EC对应的第一MS的IP地址和接收端口号和发送端口号、第一VC对应的第二MS的IP地址和接收端口号和发送端口号、第一VC的IP地址和端口号;当接收第一VC发起的针对第一EC的实况请求后,在已记录的转发表项中查找与所述实况请求针对的第一EC的IP地址和通道号、第一EC对应的第一MS的主IP地址、第一VC对应的第二MS的主IP地址匹配的表项,若查找到,则通知第二MS将来自第一EC的流量复制一份发送给第一VC;若未查找到,则执行所述使得来自第一EC的流量通过第一VC、第一EC各自对应的最近MS转发给第一VC的动作。
所述实况管理模块进一步用于,
当接收到第一VC发来的针对第一EC的停止实况请求时,根据第一EC的IP地址和端口号和通道号、第一VC的IP地址和端口号,删除自身记录的对应转发表项。
一种VM服务器,包括:
MS群地址发送模块:获取MS的群IP地址,将MS的群IP地址发送给各VC,以使得各VC发起以MS的群IP地址为目的IP地址的查询消息,该消息经过任一路由器时,该路由器根据自身的MS的群IP地址的路由将消息向最近的MS转发,当消息到达最近MS时,最近MS回复以自身的主IP地址为源IP地址的响应消息,VC接收该响应消息,获得自己对应的最近MS的主IP地址,其中,所有MS作为一个MS集群,所有MS具有一个共同的群IP地址,每个MS具有一个唯一的主IP地址,对于任一MS,在与该MS直连的路由器上配置有MS的群IP地址的路由,其中,下一跳为该MS的主IP地址,出接口为该路由器直连到该MS的接口,且所有MS的群IP地址的路由被发布到全网;
实况管理模块:接收第一VC发起的针对第一EC的实况请求,该请求携带第一VC对应的第一MS的主IP地址,使得来自第一EC的流量通过第一MS转发给第一VC。
所述实况管理模块进一步用于,当使得来自第一EC的流量通过第一MS转发给第一VC时,记录转发表项,表项内容包括:第一EC的IP地址和端口号和通道号、第一MS的IP地址和接收端口号和发送端口号、第一VC的IP地址和端口号;当接收到第一VC发来的针对第一EC的停止实况请求时,在已记录的转发表项中查找与所述实况请求针对的第一EC的IP地址和通道号匹配的表项,若查找到,则通知转发表项中的MS将来自第一EC的流量复制一份发送给第一MS,通知第一MS将流量发送给第一VC;若未查找到,则执行所述使得来自第一EC的流量通过第一MS转发给第一VC的动作。
一种MS,该MS与其它所有MS形成一个MS集群,所有MS具有一个共同的群IP地址,各个MS分别具有一个互不相同的主IP地址,对于任一MS,在与该MS直连的路由器上配置MS的群IP地址的路由,其中,下一跳为该MS的主IP地址,出接口为该路由器直连到该MS的接口,将所有MS的群IP地址的路由发布全网,该MS包括:
注册模块:上线时,向VM服务器发起初次注册消息,消息的源IP地址为MS的群IP地址;
查询处理模块:当接收到EC或VC发来的查询消息时,返回源IP地址为本MS的主IP地址的查询响应消息;
流量转发模块:接收VM服务器发来的流量转发指令,根据该指令将来自EC的流量转发给其它MS或VC,或者将来自其它MS的流量转发给VC。
一种EC,包括:
注册及查询模块:上线时,向VM服务器发起初次注册消息,接收VM服务器返回的携带MS的群IP地址的初次注册响应,发起以MS的群IP地址为目的IP地址的查询消息,接收查询响应消息,将该消息中的MS的主IP地址作为自身对应的最近MS的主IP地址上报给VM服务器;
流量传输模块:接收VM服务器发来的流量发送指令,该指令携带通道标识和目的MS信息,根据该指令将对应通道的流量发送给目的MS。
一种VC,包括:
注册及查询模块:上线时,向VM服务器发起初次注册消息,接收VM服务器返回的携带MS的群IP地址的初次注册响应,发起以MS的群IP地址为目的IP地址的查询消息,接收查询响应消息,将该消息中的MS的主IP地址作为自身对应的最近MS的主IP地址上报给VM服务器;
实况处理模块:向VM服务器发起针对一个EC的实况请求,接收MS发来的实况请求针对的EC的流量。
与现有技术相比,本发明中,将监控系统中的所有媒体服务器MS作为一个MS集群,为所有MS分配一个共同的群IP地址,并为各个MS分配一个互不相同的主IP地址,VC或者VC、EC寻找各自对应的最近MS,EC的流量从VC对应的MS,或者EC对应的MS和VC对应的MS转发到VC,降低了流量的时延,并节省了网络带宽。
具体实施方式
下面结合附图及具体实施例对本发明再作进一步详细的说明。
本发明实施例提供的技术方案主要包括两个过程:
过程一、EC、VC查找最近MS的过程;
过程二、根据EC、VC对应的最近MS,完成VC对EC的实况监控的过程。
以下分别针对上述两个过程进行详细说明,其中,图2所示实施例针对的是过程一、图4-1、4-2、5、7、8所示实施例针对的是过程二。
图2为本发明实施例提供的EC、VC查找最近MS的消息流程图,如图2所示,其具体步骤如下:
步骤200:将监控系统中的所有MS作为一个MS集群,为所有MS分配一个共同的群IP地址,并为各个MS分配一个互不相同的主IP地址。在与各MS直连的路由器上配置MS的群IP地址的路由,将MS的群IP地址的路由发布全网。
MS的群IP地址的路由的内容包括:目的IP地址、下一跳和出接口。对于与一个MS直连的路由器而言,配置在该路由器上的MS的群IP地址的路由中,目的IP地址为MS的群IP地址,下一跳为该路由器直连的MS的主IP地址,出接口为该路由器直连到该MS的接口。配置在各直连路由器上的MS的群IP地址的路由会发布到全网,当中间网络的任一设备接收到多个MS的群IP地址的路由时,会根据路由协议算法算出最近的一条路由,将该路由下发到转发表项中,将其它路由丢弃。这样,此后当EC或VC发出一个目的地址为MS的群IP地址的报文后,该报文经过中间网络设备时,中间网络设备会根据自身的转发表项中的MS的群IP地址的路由,将该报文转发到最近的MS。如图3所示:对于区域中心2中的EC3和VC3所连的路由器,对于MS的群IP地址,其路由是指向MS_C的,当区域中心2中的EC3、VC3,它们发向MS的群IP地址的报文到达路由器后,路由器会将报文转发给MS_C,而不是其它的MS。
步骤201:EC、VC及MS分别向VM服务器发送初次注册消息。
注册消息分为两种:初次注册消息和保活注册消息。初次注册消息即在初次注册时发送,初次注册成功后,定时发送保活注册消息进行保活。
本实施例中,需要对现有的注册(Register)消息进行改进,即在基于会话发起协议(SIP,Session Initiation Protocol)的Register消息中添加自定义的头域:RegMode,RegMode的值由设备类型、消息类型、设备ID、设备版本及设备IP地址组成,具体如下:
RegMode=″RegMode″HCOLON[dev-type SEMI]msg-type[SEMIdev-id][SEMI dev-ver][SEMI dev-ip]
其中,dev-type为设备类型,msg-type为消息类型,dev-id为设备ID,dev-ver为设备版本,dev-ip为设备IP地址。
msg-type的值为register或keepalive。当为register时,表示为初次注册消息;当为keepalive时,表示为保活注册消息。
当为初次注册时,MS发送的初次注册消息中的dev-ip为MS的群IP地址,EC及VC发送的初次注册消息则不携带dev-ip选项。
Register消息的通用头域FROM由MS的ID和主IP地址组成。
步骤202:VM服务器接收MS的初次注册消息,登记MS的资源,包括主IP地址,MSID及MS的群IP地址,向MS返回初次注册回应消息。
步骤203:VM服务器接收EC、VC的初次注册消息,向EC、VC分别返回初次注册回应消息,该回应消息中包含MS的群IP地址。
步骤204:VC、EC接收初次注册回应消息,分别发送查询(Query)消息,消息的目的IP地址为MS的群IP地址,每个查询消息都会经路由器转发到一个MS。
VC发送的查询消息会经路由器转发到离VC最近的MS,如图2中的MS2;EC发送的查询消息会经路由器转发到离EC最近的MS,如图2中的MS1。
步骤205:当MS接收到查询消息时,返回查询回应消息,回应消息的源IP地址为该MS的主IP地址。
若查询消息来自VC,则MS向VC返回查询回应消息;若查询消息来自EC,则MS向EC返回查询回应消息。
步骤206:EC、VC接收查询回应消息,从消息中获得MS的主IP地址,分别向VM服务器发送保活注册消息,保活注册消息携带查询回应消息中的MS的主IP地址。
这里,保活注册消息携带的MS的主IP地址是放在dev-ip选项中的。
步骤207:VM服务器接收VC发来的保活注册消息,记录VC的IP地址与MS的主IP地址的映射关系,接收EC发来的保活注册消息,记录EC的IP地址与MS的主IP地址的映射关系。
本步骤中记录的表项如表1所示,其中,i为EC的序号,j为VC的序号,MS1为ECi对应的MS,MS2为VCj对应的MS。
客户端IP地址 |
MS的IP地址 |
ECi的IP地址 |
MS1的IP地址 |
VCj的IP地址 |
MS2的IP地址 |
表1EC、VC的IP地址与MS的主IP地址的映射表
图4-1、4-2为本发明实施例一提供的VC对EC进行实况监控的消息流程图,其中,图4-1针对的是EC、VC对应的最近MS相同的情况,图4-2针对的是EC、VC对应的最近MS不同的情况,如图4-1、4-2所示,其具体步骤如下:
步骤401:VC向VM服务器发起实况请求消息:F1消息,F1消息携带VC的IP地址和端口号、请求的EC的IP地址和通道号。
步骤402:VM服务器接收F1消息,在步骤207中记录的映射关系中查找到VC、EC各自对应的MS的主IP地址,判断VC、EC对应的MS是否相同,若是,执行步骤403;否则,执行步骤410。
步骤403:VM服务器向VC、EC对应的MS发送F2消息,该消息携带VC的IP地址和端口号、EC的IP地址。
步骤404:MS接收F2消息,向VM服务器返回F3消息,F3消息携带MS的接收端口号和发送端口号,同时MS建立转发表项。
这里,MS建立的转发表项如表2所示,其中,源端口号为空。
表2MS建立的转发表项
步骤405:VM服务器向EC发送F4消息,消息携带MS的接收端口号和VC请求的EC的通道号。
步骤406:EC接收F4消息,向VM服务器返回F5消息,F5消息携带EC的端口号,同时根据F4消息中的EC的通道号和MS的接收端口号,将对应通道的流量发送到MS。
流量会通过EC的端口号对应端口从EC发出,会通过MS的接收端口号对应端口到达MS。
本步骤中提到的EC的端口号,即EC将流量发送到MS时使用的端口号。
步骤407:VM服务器接收F5消息,向MS发送F6消息,F6消息携带EC的端口号,以通知MS完善转发表项中的源端口号,并通知MS申请转发资源并按转发表项进行转发。
步骤408:MS接收F6消息,将F6消息中的EC的端口号放入步骤404建立的转发表项的源端口号选项中,接收流量,根据转发表项将流量发送给VC,并向VM服务器返回F7消息,F7消息携带MS建立的转发表项,VM服务器接收F7消息,记录MS的转发表项。
根据转发表项,MS会将流量从MS的发送端口号对应端口发出,流量会通过VC的端口号对应端口到达VC。
MS接收到流量后,可先判断该流量的源端口号与转发表项中的源端口号是否一致,若是,则接收流量;否则,丢弃流量。
VM服务器记录的MS的转发表项如表3所示:
表3VM记录的MS的转发表项
步骤409:VM服务器向VC发送F8消息,F8消息携带MS的发送端口号,以通知VC接收流量,本流程结束。
VC接收到流量后,可判断流量的源端口号与F8消息中的MS的发送端口号是否一致,若是,则接收流量;否则,丢弃流量。
步骤410:VM服务器向VC的MS(设为MS2)发送F2消息,消息携带VC的IP地址和端口号、EC对应的MS(设为MS1)的IP地址。
步骤411:MS2接收F2消息,向VM服务器返回回应消息:F3消息,消息携带MS2的接收端口号和发送端口号,同时MS2建立转发表项。
MS2建立的转发表项如表4所示:
表4MS2建立的转发表项
步骤412:VM服务器向EC的MS1发送F4消息,消息携带MS2的IP地址和接收端口号、EC的IP地址。
步骤413:MS1接收F4消息,向VM服务器返回回应消息:F5消息,F5消息携带MS1的接收端口号和发送端口号,同时MS1建立转发表项。
MS1建立的转发表项如表5所示:
表5MS1建立的转发表项
步骤414:VM服务器向EC发送F6消息,消息携带MS1的IP地址和接收端口号、EC的通道号。
步骤415:EC接收F6消息,向VM服务器返回回应消息:F7消息,F7消息携带EC的端口号,并根据F6消息中的通道号和MS1的接收端口号,将对应通道的流量发送到MS1。
本步骤中提到的EC的端口号,即EC将流量发送到MS1时使用的端口号。
步骤416:VM服务器接收F7消息,向MS1发送F8消息,F8消息携带EC的端口号,同时向MS2发送F10消息,F10消息携带MS1的发送端口号,以通知MS1与MS2完善各自的转发表项中的源端口号,并通知MS1和MS2申请转发资源并按转发表项进行转发。
F10消息携带的MS1的发送端口号来自于步骤413中的F5消息。
步骤417:MS1接收F8消息,将F8消息中的EC的端口号放入步骤413建立的转发表项的源端口号选项中,向VM服务器返回回应消息:F9消息,F9消息携带MS1建立的转发表项;MS2接收F10消息,将F10消息中的MS1的发送端口号放入步骤411建立的转发表项的源端口号选项中,向VM服务器返回回应消息:F11消息,F11消息携带MS2建立的转发表项,VM服务器接收F9、F11消息,记录MS1、MS2的转发表项。
VM服务器记录的MS1、MS2的转发表项如表6所示:
表6VM服务器记录的MS1、MS2的转发表项
步骤418:MS1根据自身的转发表项转发流量到MS2,MS2接收该流量,根据自身的转发表项转发流量到VC。
根据MS1的转发表项,流量会从MS1的发送端口号对应端口发出,后到达MS2的接收端口号对应端口,再根据MS2的转发表项,流量从MS2的发送端口号对应端口发出,到达VC的端口号对应端口。
步骤419:VM服务器向VC发送F12消息,F12消息携带MS2的发送端口号,以通知VC接收流量。
由于通过步骤408、417,VM服务器记录了正在进行实况监控的MS的转发表项,这样,此后当有另一VC发起针对同一EC的同一通道的实况请求时,则为了节省资源,可进行如图5所示的优化处理:
图5为本发明实施例二提供的VC对EC进行实况监控的消息流程图,如图5所示,其具体骤如下:
步骤501:VM服务器接收一个VC(设为VC2)发来的实况请求消息:F1消息,该消息携带VC2的IP地址和端口号、请求的EC(设为EC2)的IP地址和通道号。
步骤502:VM服务器在步骤207中记录的映射关系中查找到VC2、EC2各自对应的MS的主IP地址,在自身记录的MS的转发表项中查找与EC2的IP地址和通道号、VC2的MS的主IP地址、EC2的MS的主IP地址匹配的表项。
步骤503:VM服务器判断是否查找到,若是,执行步骤504;否则,执行步骤402~419。
步骤504:VM服务器向VC2对应的MS(设为MS2)发送F20消息,F20消息携带EC2对应的MS(设为MS1)的IP地址和发送端口号、VC2的IP地址和端口号。
步骤505:MS2接收F20消息,向VM服务器返回F21消息,MS2接收MS 1发来的流量,流量的源端口号为MS1的发送端口号,根据F20消息中的VC2的IP地址和端口号,将该流量发送到VC2。
若MS1、MS2为同一MS,则本步骤中,MS2接收EC2发来的流量,将流量发送到VC2。
步骤506:VM服务器接收F21消息,向VC2发送F22消息,F22消息携带MS2的发送端口号,以通知VC2接收流量。
对于图4-1、4-2、图5所示实施例,当VC停止对某个EC的某个通道进行实况监控时,VM服务器、VC对应的MS、EC对应的MS需要删除自身的对应转发表项。
图6为本发明实施例一提供的VC停止对EC进行实况监控的消息流程图,如图6所示,其具体步骤如下:
步骤601:VC打算停止对EC的实况监控,向VM服务器发送停止实况请求消息,该消息携带VC的IP地址和端口号、EC的IP地址和通道号。
步骤602:VM服务器接收停止实况请求消息,在步骤207建立的映射关系中,查找到VC对应的MS:MS2的主IP地址、EC对应的MS:MS1的主IP地址,并在自身查找到对应的转发表项,向EC发送停止实况消息,该消息携带EC的通道号、MS1的IP地址和接收端口号。
步骤603:EC接收停止实况消息,停止向MS2的接收端口发送对应通道的流量,并向VM服务器返回停止实况确认消息。
步骤604:VM服务器接收停止实况确认消息,向MS1发送停止转发消息,该消息携带EC的IP地址和端口号、MS1的发送端口号、MS2的IP地址和接收端口号;同时向MS2发送停止转发消息,该消息携带MS1的IP地址和发送端口号、MS2的接收端口号、VC2的IP地址和端口号。
步骤605:MS1、MS2接收停止转发消息,根据该消息,删除各自建立的对应转发表项,分别向VM服务器发送停止转发确认消息。
步骤606:VM服务器接收MS1、MS2返回的停止转发确认消息,根据VC的IP地址和端口号、EC的IP地址和端口号和通道号、MS1的IP地址和发送端口号和接收端口号、MS2的IP地址和接收端口号和发送端口号,删除对应的转发表项。
本发明实施例中,当VM服务器发现一个MS下线时,VM服务器根据步骤207建立的VC的IP地址与MS的主IP地址的映射表,查找到该MS对应的各VC,向各VC发送该MS下线的告警信息,同时VM服务器将该MS的主IP地址放入下线MS列表中,此后,当VM服务器接收到一个VC发来的针对一个EC的实况请求消息时,若发现该VC或VC对应的MS的主IP地址位于下线MS列表中,则采用现有技术选择MS来将EC的流量转发给VC。
在图4-1、4-2所示实施例中,对于VC和EC,都要查找最近MS,在实际应用中,也可以采用仅VC查找最近MS的方案。
当仅VC查找最近MS时,对于图2所示流程,仅VC进行查找最近MS的步骤,EC则不必进行。具体地,步骤203中,VM服务器向EC返回的初次注册回应消息中不必包含MS的群IP地址,这样EC就不会进行步骤204了。同时,步骤206中,VC、EC向VM服务器发送的保活注册消息中也不携带MS的主IP地址,这样,VM服务器不需记录VC、EC的IP地址与MS的主IP地址的映射关系。
当VC查找到对应的最近MS后,就可进行实况监控了。
图7为本发明实施例三提供的VC对EC进行实况监控的消息流程图,如图7所示,其具体步骤如下:
步骤701:VC向VM服务器发起实况请求消息:F1消息,F1消息携带VC的IP地址和端口号、VC对应的MS(设为MS1)的IP地址、请求的EC的IP地址及通道号。
步骤702:VM服务器接收F1消息,向MS1发送F2消息,该消息携带VC的IP地址和端口号、EC的IP地址。
步骤703:MS1接收F2消息,向VM服务器返回F3消息,F3消息携带MS1的接收端口号和发送端口号,同时MS1建立转发表项。这里,MS1建立的转发表项如表7所示,其中,源端口号为空。
表7MS1建立的转发表项
步骤704:VM服务器接收F3消息,向EC发送F4消息,消息携带MS1的IP地址和接收端口号、VC请求的EC的通道号。
步骤705:EC接收F4消息,向VM服务器返回F5消息,F5消息携带EC的端口号,同时根据F4消息中的EC的通道号和MS1的接收端口号,将对应通道的流量发送到MS1。
本步骤中提到的EC的端口号,即EC将流量发送到MS1时使用的端口号。
步骤706:VM服务器接收F5消息,向MS1发送F6消息,F6消息携带EC的端口号,以通知MS1完善转发表项中的源端口号,并通知MS1申请转发资源并按转发表项进行转发。
步骤707:MS1接收F6消息,将F6消息中的EC的端口号放入步骤703建立的转发表项的源端口号选项中,接收EC发来的流量,根据转发表项将流量发送给VC,并向VM服务器返回F7消息,F7消息携带MS1建立的转发表项,VM服务器接收F7消息,记录MS1的转发表项。
VM服务器记录的MS1的转发表项如表8所示:
表8VM记录的MS1的转发表项
步骤708:VM服务器向VC发送F8消息,F8消息携带MS1的发送端口号,以通知VC接收流量。
由于通过步骤707,VM服务器记录了正在进行实况监控的MS1的转发表项,这样,此后当有另一VC发起针对同一EC的同一通道的实况请求时,则为了节省资源,可进行如图8所示的优化处理:
图8为本发明实施例四提供的VC对EC进行实况监控的消息流程图,如图8所示,其具体步骤如下:
步骤801:VM服务器接收一个VC(设为VC2)发来的实况请求消息:F1消息,该消息携带VC2的IP地址和端口号、VC2对应的MS2的IP地址、请求的EC2的IP地址和通道号。
步骤802:VM服务器在自身记录的转发表项中查找与EC2的IP地址和通道号匹配的表项,判断是否查找到,若是,执行步骤803;否则,执行步骤702~708。
步骤803:VM服务器判断转发表项中的MS1与VC2对应的MS2是否相同,若是,执行步骤804;否则,执行步骤807。
步骤804:VM服务器根据查找到的转发表项,向MS1(也是MS2)发送F20消息,F20消息携带VC2的IP地址和端口号、EC2的IP地址和端口号。
步骤805:MS1接收F20消息,向VM服务器返回F21消息,接收来自EC2的流量,流量的源端口号为F20消息中的EC2的端口号,将流量复制一份,根据F2消息中的VC2的IP地址和端口号,将复制的流量发送到VC2。
步骤806:VM服务器接收F21消息,向VC2发送F22消息,F22消息携带MS1的发送端口号,以通知VC2接收流量,本流程结束。
步骤807:VM服务器向MS2发送F20消息,F20消息携带VC2的IP地址和端口号、EC2的IP地址。
步骤808:MS2接收F20消息,向VM服务器返回F21消息,F21消息携带MS2的接收端口号和发送端口号。
步骤809:VM服务器接收F21消息,向MS1发送F22消息,F22消息携带MS2的IP地址和接收端口号、EC2的IP地址和端口号。
步骤810:MS1接收F22消息,向VM服务器返回F23消息,同时根据F22消息,将来自EC2的流量发送到MS2。
步骤811:VM服务器接收F23消息,向MS2发送F24消息,F24消息携带MS 1的IP地址和发送端口号、VC2的IP地址和端口号。
步骤812:MS2接收F24消息,向VM服务器返回F25消息,MS2接收MS1发来的流量,根据F24消息,将该流量发送到VC2。
步骤813:VM服务器接收F25消息,向VC2发送F26消息,F26消息携带MS2的发送端口号,以通知VC2接收流量。
对于图7、8所示实施例三、四,当VC打算停止对EC进行实况监控时,VC向VM服务器发送停止实况请求消息,消息携带VC的IP地址和端口号、VC对应的MS:MS2的IP地址、EC的IP地址和通道号,之后VM服务器在自身查找到对应的转发表项,并向EC发送停止实况消息,该消息携带EC的通道号、MS2的IP地址和接收端口号;EC接收停止实况消息,停止向MS2的接收端口发送对应通道的流量,并向VM服务器返回停止实况确认消息;之后VM服务器向MS2发送停止转发消息,并删除对应的转发表项。
图7、8所示实施例三、四与图4-1、4-2、5所示实施例一、二相比,其优点在于:流量从MS发送到VC时可以只在离VC最近的MS处进行分发;VM服务器记录的转发表项的内容减少了,EC不需要进行最近MS的查找,减少了VM服务器和EC的开销。不足之处在于:如图3所示,当区域中心1中的VC2先对区域中心2中的EC3进行实况监控后,区域中心2中的VC3又要对EC3进行实况监控,则流量会从区域中心1中的MS_B转发到区域中心2中的MS_C再转发到VC3,显然转发开销增加了。
图9为本发明实施例一提供的VM服务器的组成图,如图9所示,其主要包括:MS信息记录模块和实况管理模块,其中:
MS信息记录模块:获取MS的群IP地址,将MS的群IP地址发送给各EC、各VC,以使得各EC、各VC发起针对MS的群IP地址的查询,得到各自对应的最近MS的主IP地址;接收并记录各EC、各VC发来的各自对应的最近MS的主IP地址;其中,所有MS作为一个MS集群,所有MS具有一个共同的群IP地址,每个MS具有一个唯一的主IP地址,对于任一MS,在与该MS直连的路由器上配置有MS的群IP地址的路由,其中,下一跳为该MS的主IP地址,出接口为该路由器直连到该MS的接口,且所有MS的群IP地址的路由被发布到全网。
实况管理模块:接收第一VC发起的针对第一EC的实况请求,从MS信息记录模块获取第一VC、第一EC各自对应的最近MS的主IP地址,使得来自第一EC的流量通过第一VC、第一EC各自对应的最近MS转发给第一VC。
在实际应用中,MS信息记录模块可包括:初次注册处理模块和保活注册处理模块,其中:
初次注册处理模块:接收MS发来的携带MS的群IP地址的初次注册消息,接收EC、VC发来的初次注册消息,将MS的群IP地址携带在初次注册回应中返回给EC、VC。
保活注册处理模块:接收EC、VC发来的携带各自对应的最近MS的主IP地址的保活注册消息,记录EC、VC与各自对应的最近MS的主IP地址的映射关系。
在实际应用中,实况管理模块可包括:管理模块和MS获取模块,其中:
管理模块:接收第一VC发起的针对第一EC的实况请求,将第一VC、第一EC的IP地址发送给MS获取模块,接收MS获取模块返回的第一VC对应的第二MS的主IP地址和第一EC对应的第一MS的主IP地址,判断第一、二MS是否为同一MS,若是,通知第一EC将流量发送到第一MS,通知第一MS将流量发送到第一VC;否则,通知第一EC将流量发送到第一EC对应的第一MS,通知第一MS将流量发送到第一VC对应的第二MS,通知第二MS将流量发送到第一VC。
MS获取模块:接收管理模块发来的第一VC、第一EC的IP地址,从MS信息记录模块获取第一VC对应的第二MS的主IP地址、第一EC对应的第一MS的主IP地址并返回给管理模块。
在实际应用中,实况管理模块进一步用于,当使得来自第一EC的流量通过第一VC、第一EC各自对应的最近MS转发给第一VC时,记录转发表项,表项内容包括:第一EC的IP地址和端口号和通道号、第一EC对应的第一MS的IP地址和接收端口号和发送端口号、第一VC对应的第二MS的IP地址和接收端口号和发送端口号、第一VC的IP地址和端口号。
实况管理模块还可进一步用于,当接收第一VC发起的针对第一EC的实况请求后,在已记录的转发表项中查找与所述实况请求针对的第一EC的IP地址和通道号、第一EC对应的第一MS的主IP地址、第一VC对应的第二MS的主IP地址匹配的表项,若查找到,则通知转发表项中的VC对应的最近MS将来自第一EC的流量复制一份发送给第二MS,通知第二MS将流量发送给第一VC;若未查找到,则执行所述使得来自第一EC的流量通过第一VC、第一EC各自对应的最近MS转发给第一VC的动作。
实况管理模块还可进一步用于,当接收到第一VC发来的针对第一EC的停止实况请求时,根据第一EC的IP地址和端口号和通道号、第一VC的IP地址和端口号,删除自身记录的对应转发表项。
以下为本发明实施例二提供的VM服务器的组成图,其主要包括:MS群地址发送模块和实况管理模块,其中:
MS群地址发送模块:获取MS的群IP地址,将MS的群IP地址发送给各VC,以使得各VC发起针对MS的群IP地址的查询,得到各自对应的最近MS的主IP地址,其中,所有MS作为一个MS集群,所有MS具有一个共同的群IP地址,每个MS具有一个唯一的主IP地址,对于任一MS,在与该MS直连的路由器上配置有MS的群IP地址的路由,其中,下一跳为该MS的主IP地址,出接口为该路由器直连到该MS的接口,且所有MS的群IP地址的路由被发布到全网。
实况管理模块:接收第一VC发起的针对第一EC的实况请求,该请求携带第一VC对应的第一MS的主IP地址,使得来自第一EC的流量通过第一MS转发给第一VC。
其中,实况管理模块进一步用于,当使得来自第一EC的流量通过第一MS转发给第一VC时,记录转发表项,表项内容包括:第一EC的IP地址和端口号和通道号、第一MS的IP地址和接收端口号和发送端口号、第一VC的IP地址和端口号。
实况管理模块还可进一步用于,当接收到第一VC发来的针对第一EC的停止实况请求时,在已记录的转发表项中查找与所述实况请求针对的第一EC的IP地址和通道号匹配的表项,若查找到,则通知转发表项中的MS将来自第一EC的流量复制一份发送给第一MS,通知第一MS将流量发送给第一VC;若未查找到,则执行所述使得来自第一EC的流量通过第一MS转发给第一VC的动作。
以下给出本发明实施例提供的MS的组成:
该MS与其它所有MS形成一个MS集群,所有MS具有一个共同的群IP地址,各个MS分别具有一个互不相同的主IP地址,对于任一MS,在与该MS直连的路由器上配置MS的群IP地址的路由,其中,下一跳为该MS的主IP地址,出接口为该路由器直连到该MS的接口,将所有MS的群IP地址的路由发布全网,该MS包括:注册模块、查询处理模块和流量转发模块,其中:
注册模块:上线时,向VM服务器发起初次注册消息,消息的源IP地址为MS的群IP地址。
查询处理模块:当接收到EC或VC发来的查询消息时,返回源IP地址为本MS的主IP地址的查询响应消息。
流量转发模块:接收VM服务器发来的流量转发指令,根据该指令将来自EC的流量转发给其它MS或VC,或者将来自其它MS的流量转发给VC。
以下给出本发明实施例提供的EC的组成,该EC包括:注册及查询模块和流量传输模块,其中:
注册及查询模块:上线时,向VM服务器发起初次注册消息,接收VM服务器返回的携带MS的群IP地址的初次注册响应,发起以MS的群IP地址为目的IP地址的查询消息,接收查询响应消息,将该消息中的MS的主IP地址作为自身对应的最近MS的主IP地址上报给VM服务器。
流量传输模块:接收VM服务器发来的流量发送指令,该指令携带通道标识和目的MS信息,根据该指令将对应通道的流量发送给目的MS。
以下给出本发明实施例提供的VC的组成,该VC包括:注册及查询模块和实况处理模块,其中:
注册及查询模块:上线时,向VM服务器发起初次注册消息,接收VM服务器返回的携带MS的群IP地址的初次注册响应,发起以MS的群IP地址为目的IP地址的查询消息,接收查询响应消息,将该消息中的MS的主IP地址作为自身对应的最近MS的主IP地址上报给VM服务器。
实况处理模块:向VM服务器发起针对一个EC的实况请求,接收MS发来的实况请求针对的EC的流量。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。