CN101252591B - 实现上下行数据分离的方法和装置 - Google Patents
实现上下行数据分离的方法和装置 Download PDFInfo
- Publication number
- CN101252591B CN101252591B CN2008101033933A CN200810103393A CN101252591B CN 101252591 B CN101252591 B CN 101252591B CN 2008101033933 A CN2008101033933 A CN 2008101033933A CN 200810103393 A CN200810103393 A CN 200810103393A CN 101252591 B CN101252591 B CN 101252591B
- Authority
- CN
- China
- Prior art keywords
- server
- data packet
- client
- load balancer
- address
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims abstract description 21
- 238000000926 separation method Methods 0.000 title claims abstract description 20
- 238000004891 communication Methods 0.000 claims abstract description 12
- 238000012790 confirmation Methods 0.000 claims description 7
- 238000006243 chemical reaction Methods 0.000 claims description 4
- 238000013519 translation Methods 0.000 claims description 4
- 230000005540 biological transmission Effects 0.000 claims description 3
- 239000000284 extract Substances 0.000 claims description 3
- 230000010365 information processing Effects 0.000 claims description 3
- 238000005516 engineering process Methods 0.000 description 9
- 238000012545 processing Methods 0.000 description 9
- 238000010586 diagram Methods 0.000 description 6
- 230000004044 response Effects 0.000 description 4
- 230000002452 interceptive effect Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000007774 longterm Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000011144 upstream manufacturing Methods 0.000 description 1
Images
Landscapes
- Computer And Data Communications (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供了一种实现上下行数据分离的方法和装置。该方法主要包括:负载均衡器获取其和客户端、服务器之间通过传输层协议进行通信的相关信息,该相关信息包括IP地址和端口信息,所述负载均衡器将该相关信息发送给所述服务器;所述负载均衡器接收到所述客户端通过传输层协议发送的数据包后,根据所述相关信息将所述数据包转发给所述服务器,所述服务器根据所述相关信息将数据包直接发送给所述客户端。利用本发明,可以实现应用了负载均衡器的IPTV等集群系统中上行数据和下行数据的分离,减轻了负载均衡器的压力,大大提高了系统的健壮性。
Description
技术领域
本发明涉及网络通信领域,尤其涉及一种实现上下行数据分离的方法和装置。
背景技术
随着经济和技术的快速发展,Internet(因特网)以其丰富的资源、个性化的服务以及方便的交互性,给人们的工作、生活和娱乐带来了巨大的变化。随着时代的不断进步,人们希望在任何时候、任何地点观看他们喜欢的电视节目,并且希望实现媒体提供者和媒体消费者之间的真实互动。因此,传统电视技术的定时和单向广播的业务功能已经不能满足人们的上述需求。在这种情况下,IPTV(交互式网络电视)技术应运而生。
IPTV是一种基于Internet的新兴技术,是一种个性化、交互式服务的崭新媒体形态。它是一种利用宽带网络的基础设施,以家用电视机(或者计算机)作为主要终端设备,集Internet、多媒体和通信等多种技术于一体,通过Internet协议向家庭用户提供包括数字电视在内的多种交互式数字媒体服务的新技术。它融合了传统电视技术和宽带互联网的相关特性,将以通信为导向的业务和以内容为导向的业务紧密结合在一起。它不仅可以使用户能够接收广播信号,而且可以使用户和内容提供商实现互动,还可以非常容易地将电视服务、Internet浏览以及多种在线信息咨询、娱乐、教育等功能结合在一起,实现电信网、有线电视网和Internet网的“三网融合”。
由于IPTV主要为用户提供流媒体服务,需要耗费大量的带宽资源,服务端需要具有长期忍受大负荷压力的能力,因此,IPTV对服务器端的处理能力和网络带宽的要求比对传统的Web服务器端的要求要高得多。目前,IPTV的服务器端主要采用集群系统,即用集群系统给大量用户提供流媒体服务。在集群系统中,由于服务器的处理能力(包括I/O能力、CPU处理速度和内存大小)存在限制,每个集群节点的网络带宽也是有限制的。因此,如何将集群系统中的每一个集群节点协调起来,使其成为一个有机的整体,来为短期和长期的用户提供服务是非常重要的。而负载均衡技术是解决这一问题的有效途径。通过负载均衡技术,可以根据用户的请求内容以及集群系统中各个集群节点的负载状况,合理的选择节点为用户的请求提供服务,从而可以大幅提高用户获取数据的速度,解决海量数据并发的问题。
在IPTV系统中,主要采用一个单独的负载均衡器来实现负载均衡。从数据的流向来看,从客户端到集群节点的上行数据(例如控制信息等)的数据量较小,而从集群节点到客户端的下行数据(例如RTP数据包等)的数据量非常大。对于客户端而言,整个负载均衡系统只有负载均衡器可见,如果所有用户的上行数据和下行数据都经过负载均衡器来转发,那么负载均衡器将承受长时间、高负荷的压力,这样,负载均衡器将成为整个IPTV系统的瓶颈。
发明内容
本发明实施例的目的是提供一种实现上下行数据分离的方法和装置,从而可以解决现有技术方案中不能应用于各种复杂测试环境、需要人工参与的问题。
本发明实施例的目的是通过以下技术方案实现的:
一种实现上下行数据分离的方法,包括:
负载均衡器获取其和客户端、服务器之间通过传输层协议进行通信的相关信息,该相关信息包括IP地址和端口信息,所述负载均衡器将该相关信息发送给所述服务器;
所述负载均衡器接收到所述客户端通过传输层协议发送的数据包后,根据所述相关信息将所述数据包转发给所述服务器,所述服务器根据所述相关信息将数据包直接发送给所述客户端。
一种负载均衡器,包括:
相关信息处理模块,用于获取其和客户端、服务器之间通过传输层协议进行通信的相关信息,该相关信息包括IP地址和端口信息,将该相关信息发送给所述服务器;
数据包转发模块,用于在接收到所述客户端发送的数据包后,根据所述相关信息将所述数据包转发给所述服务器。
一种服务器,包括:
相关信息保存模块,用于接收并保存负载均衡器发送过来的负载均衡器和客户端、服务器之间通过传输层协议进行通信的相关信息,该相关信息包括IP地址、端口号和序列号信息;
客户端信息获取模块,用于根据需要发出的数据包对应的所述相关信息保存模块中保存的相关信息,获取对应的所述客户端的IP地址、端口号和序列号信息;
地址转换模块,用于将所述数据包的源IP地址修改为负载均衡器的IP地址,将所述数据包的源端口修改为负载均衡器用于和客户端通信的端口,将所述数据包的目的IP地址修改为客户端的IP地址,将所述数据包的目的端口修改为客户端的端口,对于TCP数据包,还将所述TCP数据包的序列号修改为所述TCP数据包的序列号减去所述服务器的初始序列号和负载均衡器的初始序列号之间的差值之后所获取的值;
数据包发送模块,用于将修改后的所述数据包直接发送给所述客户端。
由上述本发明实施例提供的技术方案可以看出,本发明实现了应用了负载均衡器的IPTV等集群系统中上行数据和下行数据的分离,减轻了负载均衡器的压力,大大提高了系统的健壮性。
附图说明
图1为以TCP为例,本发明实施例所述实现上下行数据分离的方法的原理示意图;
图2为以TCP为例,本发明实施例所述实现上下行数据分离的方法的具体处理流程图;
图3为以UDP为例,本发明实施例所述实现上下行数据分离的方法的原理示意图;
图4为以UDP为例,本发明实施例所述实现上下行数据分离的方法的具体处理流程图;
图5为本发明实施例提供的实现上下行数据分离的负载均衡器的一种实施例的结构示意图;
图6为本发明实施例提供的实现上下行数据分离的服务器的一种实施例的结构示意图。
具体实施方式
在本发明实施例中,为了实现在传输层实现集群系统的上行数据和下行数据的分离,负载均衡器首先需要获取其和客户端、服务器之间通过传输层协议进行通信的相关信息,该相关信息包括IP地址和端口信息,所述负载均衡器将该相关信息发送给所述服务器。所述服务器将该相关信息保存。
所述负载均衡器接收到所述客户端通过传输层协议发送的数据包后,根据所述数据包的请求内容、服务器的负载情况和请求内容在服务器集群中的分布情况,获取对应的所述服务器的IP地址和端口信息。所述负载均衡器将所述数据包的源IP地址修改为负载均衡器的IP地址,将所述数据包的源端口修改为负载均衡器用于和服务器通信的端口,将所述数据包的目的IP地址修改为服务器的IP地址,将所述数据包的目的端口修改为服务器的端口,对于TCP数据包,还将所述TCP数据包的确认号修改为所述TCP数据包的确认号加上所述服务器的初始序列号和负载均衡器的初始序列号之间的差值之后所获取的值。所述负载均衡器将修改后的所述数据包通过传输层协议转发给所述服务器。
所述服务器根据需要发出的数据包对应的所述保存的相关信息,获取对应的所述客户端的IP地址和端口信息。所述服务器将所述数据包的源IP地址修改为负载均衡器的IP地址,将所述数据包的源端口修改为负载均衡器用于和客户端通信的端口,将所述数据包的目的IP地址修改为客户端的IP地址,将所述数据包的目的端口修改为客户端的端口,对于TCP数据包,还将所述TCP数据包的序列号修改为所述TCP数据包的序列号减去所述服务器的初始序列号和负载均衡器的初始序列号之间的差值之后所获取的值。所述服务器将修改后的所述数据包直接发送给所述客户端。
上述传输层协议主要包括:TCP(Transmission Control Protocol,传输控制协议)和UDP(User Datagram Protocol,用户数据报协议)两种,下面分别以TCP和UDP为例来说明本发明所述方法。
以TCP为例,本发明实施例所述实现上下行数据分离的方法的原理示意图如图1所示,具体处理流程如图2所示,包括如下步骤:
步骤21、客户端和负载均衡器之间通过三次握手建立TCP连接,负载均衡器建立数据结构TCP_CONDITION来保存TCP连接的相关信息。
客户端首先向负载均衡器发送用于建立TCP连接的第一个握手数据包,负载均衡器上的Netfilter(网络过滤器)的LOCAL_IN钩子捕获该的第一个握手数据包后,并不把该数据包交给系统的TCP/IP协议栈,而是分析其IP头和TCP头,从该IP头和TCP头中提出客户端和负载均衡器之间的TCP连接的相关信息,该相关信息可以包括:客户端源IP、客户端源端口、客户端发起连接时的初始序列号、负载均衡器所选的用于同客户端进行TCP连接的端口、客户端和负载均衡器之间的TCP的状态等。
负载均衡器还建立一个数据结构TCP_CONDITION,用来保存上述提取出来的TCP连接的相关信息。然后,负载均衡器向客户端返回应答数据包,客户端接收到该应答数据包后,向负载均衡器返回应答数据包。
客户端在收到来自负载均衡器的应答数据包之后,向负载均衡器发送确认数据包,该数据包同样被负载均衡器上的Netfilter的LOCAL_IN钩子捕获并丢弃,至此,客户端和负载均衡器之间的TCP连接便建立完成。
步骤22、负载均衡器通过三次握手建立和多媒体服务器之间的TCP连接,将该TCP连接的相关信息也保存在上述TCP_CONDITION中。
客户端向负载均衡器发送数据请求包,该数据请求包被负载均衡器上的Netfilter捕获后,扣下该数据包。依据该数据请求包的内容(如影片名等)和负载均衡器收集到的各个多媒体服务器(即集群节点)的负载信息,选择一台合适的多媒体服务器来为上述客户端服务。负载均衡器需要记下该多媒体服务器的IP地址和端口号。
然后,负载均衡器通过三次握手建立和上述多媒体服务器之间的TCP连接,将该TCP连接的相关信息也保存在上述TCP_CONDITION中。对于负载均衡器到多媒体服务器的TCP连接,负载均衡器采用的初始序列号为客户端与负载均衡器建立的TCP连接中客户端采用的序列号。
于是,上述TCP_CONDITION中包含如下参数:
saddr;//客户端源IP;
sport;//客户端源端口;
ClientSourceseq;//客户端发起连接时的初始序列号;
diff;//多媒体服务器的初始序列号与负载均衡器同客户端建立TCP连接时候负载均衡器所采用的初始列号的差值;
port_connect_server;//负载均衡器所选的用于同多媒体服务器进行TCP连接的端口;
port_connect_client;//负载均衡器所选的用于同客户端进行TCP连接的端口;
daddr;//负均衡器选定的目标多媒体服务器的IP地址;
dport;//负载均衡器选定的目标多媒体服务器的端口号;
ServerSourceseq;//服务器选用的初始序列号;
tcpstatus;//该TCP连接的状态;
ClientFinACK;//一个用于结束TCP连接的数值,只有当客户端收到的ACK大于这个值才认为服务器确认客户端完成,此时可以安全关闭该TCP连接;
ServerFinACK;//一个用于结束TCP连接的数值,只有当服务器收到的ACK大于这个值才认为客户端确认服务器完成,此时可以安全关闭该TCP连接;
其中TCP连接的状态有如下几种:
TCPstatus_NEW,表示客户端只是发送了用于建立TCP连接的第一个数据包;
TCPstatus_CLIENTCONNECTOK,表示客户端已经发送了握手的第三个数据包,客户端可以接受和发送信息;
TCPstatus_SERVERCONNECTOK,表示客户端和服务器端的握手已经完成,可以往服务器端发送信息;
TCPstatus_CLIENT_SET_FIN,表示客户端主动结束,发送了一个FIN报文,等待服务器反应;
TCPstatus_SERVER_SET_FIN,表示服务器端主动结束,发送了一个FIN报文,等待客户端反应;
TCPstatus_CLIENT_SET_FIN_SERVERCLOSE,表示客户端发送了FIN报文,而服务器已经正常结束;
TCPstatus_SERVER_SET_FIN_CLIENTCLOSE,表示服务器发送了FIN报文,而客户端已经正常结束;
TCPstatus_CLIENTCLOSE,表示客户端收到服务器的ACK报文,已经结束,不能再接收数据;
TCPstatus_SERVERCLOSE,表示服务器收到客户端的ACK报文,已经结束,不能再接收数据;
TCPstatus_SERVERCLOSE_CLIENTCLOSE,表示两端都已经结束,可以释放连接。
负载均衡器还将上述TCP_CONDITION中的saddr、sport、port_connect_client等参数进行哈希,生成一个哈希表Hash_CLIENT_BALANCER_TCP。将上述TCP_CONDITION中的daddr、dport、port_connect_server等参数进行哈希,生成另一个哈希表Hash_BALANCER_SERVER_TCP中。将上述两个哈希表和上述TCP_CONDITION进行关联保存。于是,通过上述两个哈希表都能索引出上述TCP_CONDITION。
步骤23:负载均衡器将上述TCP_CONDITION发送给多媒体服务器,负载均衡器根据该TCP_CONDITION对上行的数据包进行地址转换后,转发给多媒体服务器。多媒体服务器根据该TCP_CONDITION对下行的数据包进行地址转换后,直接发送给客户端。
负载均衡器通过UDP协议,将上述TCP_CONDITION发送给多媒体服务器。同时在负载均衡器启动超时重传机制,以确保包含TCP_CONDITION的信息的数据包能到达多媒体服务器,而多媒体服务器会把收到的TCP_CONDITION保存下来。
客户端发送给多媒体服务器的上行的数据包首先发送给负载均衡器,负载均衡器上的Netfilter捕获到该数据包后,对其saddr、sport、port_connect_client进行哈希,根据在上述哈希表Hash_CLIENT_BALANCER_TCP中找到上述TCP_CONDITION。依据上述TCP_CONDITION,将该数据包的源IP改为负载均衡器的IP,源端口号改为port_connect_server,目标IP改为daddr,目标端口改为dport,将确认序列号加上diff的值。在重新计算校验和后,将修改后的数据请求包通过TCP协议发送给多媒体服务器。
负载均衡器进行上述处理的目的是为了让多媒体服务器“认为”它收到的数据包都是来自负载均衡器,而与客户端无关,做到了对多媒体服务器的透明。
多媒体服务器上的Netfilter对所有多媒体服务器发出的所有数据包进行截获和检查,如果是发往负载均衡器的port_connect_server端口的数据包,则对该数据包进行修改,将该数据包的目标IP地址改为saddr,目标端口号改为sport,源IP地址改为负载均衡器的IP,源端口号改为port_connect_client,将该数据包的TCP序列号减去diff的值,其他参数保持不变,在重新计算校验和之后,将该数据包发出。由于该数据包的目标IP和目标端口号都是客户端的IP和端口号,所以这些数据包会经过路由后直接到达客户端,而不会经过负载均衡器。这样就实现了上行数据和下行数据的分离。对于客户端来说,它会“认为”接收到的数据包来自负载均衡器,而与后台的多媒体服务器无关,从而做到了对客户端的透明。
以UDP为例,本发明实施例所述实现上下行数据分离的方法的原理示意图如图3所示,具体处理流程如图4所示,包括如下步骤:
步骤41、客户端向负载均衡器发送用于数据请求的UDP数据包,负载均衡器建立数据结构UDP_CONDITION来保存和客户端之间的UDP数据包的相关信息。
客户端首先向负载均衡器发送用于数据请求的UDP数据包,负载均衡器上的Netfilter捕获该UDP数据包后,判断该数据包的传输层协议域,如果认定该数据包是发往负载均衡器特定端口的UDP数据包,便将该UDP数据包扣留下来。负载均衡器提取该UDP数据包的相关信息,该相关信息可以包括:客户端的IP、客户端的端口号、负载均衡器所选的用于同客户端进行通信的端口等。
负载均衡器还建立一个数据结构UDP_CONDITION,用来保存上述提取出来的UDP数据包的相关信息。然后分析UDP报文的请求内容,依据请求内容、服务器当前的负载状况和内容在服务器集群中的分布状况,选择一台合适的多媒体服务器对该请求提供服务,并记录该多媒体服务器的IP地址和端口号,将其保存在数据结构UDP_CONDITION中。
然后,负载均衡器将数据结构UDP_CONDITION通过UDP协议发送给先前选出的多媒体服务器。
于是,上述UDP CONDITION中包含如下参数:
saddr;//客户端的IP;
sport;//客户端的端口号;
port_connect_server;//负载均衡器用于和后台多媒体服务器通信的端口号;
port_connect_client;//负载均衡器用于和客户端通信的端口号;
daddr;//多媒体服务器的IP;
dport;//多媒体服务器的端口号。
负载均衡器还将上述UDP_CONDITION中的saddr、sport、port_connect_client等参数进行哈希,生成一个哈希表Hash_CLIENT_BALANCER_UDP。将上述UDP_CONDITION中的daddr、dport、port_connect_server等参数进行哈希,生成另一个哈希表Hash_BALANCER_SERVER_UDP中。将上述两个哈希表和上述UDP_CONDITION进行关联保存。于是,通过上述两个哈希表都能索引出上述UDP_CONDITION。
步骤42:负载均衡器将上述UDP_CONDITION发送给多媒体服务器,负载均衡器根据该UDP_CONDITION对上行的数据包进行地址转换后,转发给多媒体服务器。多媒体服务器根据该UDP_CONDITION对下行的数据包进行地址转换后,直接发送给客户端。
负载均衡器通过UDP协议,将上述UDP_CONDITION发送给多媒体服务器。同时在负载均衡器启动超时重传机制,以确保包含UDP_CONDITION的信息的数据包能到达多媒体服务器,而多媒体服务器会把收到的UDP_CONDITION保存下来。
客户端发送给多媒体服务器的上行的UDP数据包首先发送给负载均衡器,负载均衡器上的Netfilter的LOCAL IN钩子捕获到该UDP数据包后,对其saddr、sport、port connect client进行哈希,根据上述哈希表Hash_CLIENT_BALANCER_UDP中找到上述UDP_CONDITION。依据上述UDP_CONDITION,将该数据包的源IP改为负载均衡器的IP,源端口号改为port_connect_server,目标IP改为daddr,目标端口改为dport。在重新计算校验和后,将修改后的UDP数据包发送给多媒体服务器。
负载均衡器进行上述处理的目的是为了让多媒体服务器“认为”它收到的数据包都是来自负载均衡器,而与客户端无关,做到了对多媒体服务器的透明。
多媒体服务器上的Netfilter的LOCAL_OUT钩子对所有多媒体服务器发出的所有数据包进行截获和检查,如果是发往负载均衡器的port_connect_server端口的UDP数据包,则对该UDP数据包进行修改,将该UDP数据包的目标IP地址改为saddr,目标端口号改为sport,源IP地址改为负载均衡器的IP,源端口号改为port_connect_client,其他参数保持不变,在重新计算校验和之后,将该UDP数据包发出。由于该UDP数据包的目标IP和目标端口号都是客户端的IP和端口号,所以这些数据包会经过路由后直接到达客户端,而不会经过负载均衡器。这样就实现了上行数据和下行数据的分离。对于客户端来说,它会“认为”接收到的数据包来自负载均衡器,而与后台的多媒体服务器无关,从而做到了对客户端的透明。
本发明实施例提供的实现上下行数据分离的装置包括负载均衡器和服务器,上述负载均衡器的一种实施例的结构如图5所示,包括如下模块:
相关信息处理模块,用于获取其和客户端、服务器之间通过传输层协议进行通信的相关信息,该相关信息包括IP地址和端口信息,将该相关信息发送给所述服务器;
数据包转发模块,用于在接收到所述客户端通过传输层协议发送的数据包后,根据所述相关信息将所述数据包转发给所述服务器。包括:服务器信息获取模块、地址转换模块和数据包发送模块。
其中,所述数据包转发模块中的服务器信息获取模块,用于在接收到所述客户端通过传输层协议发送的数据包后,根据所述数据包的请求内容、服务器的负载情况和服务器中的请求内容分布情况,获取对应的所述服务器的IP地址和端口信息;
其中,地址转换模块,用于将所述数据包的源IP地址修改为负载均衡器的IP地址,将所述数据包的源端口修改为负载均衡器用于和服务器通信的端口,将所述数据包的目的IP地址修改为所述服务器的IP地址,将所述数据包的目的端口修改为所述服务器的端口,对于TCP数据包,还将所述TCP数据包的确认号修改为所述TCP数据包的确认号加上所述服务器的初始序列号和负载均衡器的初始序列号之间的差值之后所获取的值;
其中,所述数据包转发模块中的数据包发送模块,用于将修改后的所述数据包通过传输层协议转发给所述服务器。
上述服务器的一种实施例的结构如图6所示,包括如下模块:
相关信息保存模块,用于接收并保存负载均衡器发送过来的负载均衡器和客户端、服务器之间通过传输层协议进行通信的相关信息,该相关信息包括IP地址、端口信息和序列号信息;
客户端信息获取模块,用于根据需要发出的数据包对应的所述相关信息保存模块中保存的相关信息,获取对应的所述客户端的IP地址、端口号和序列号信息;
地址转换模块,用于将所述数据包的源IP地址修改为负载均衡器的IP地址,将所述数据包的源端口修改为负载均衡器用于和客户端通信的端口,将所述数据包的目的IP地址修改为客户端的IP地址,将所述数据包的目的端口修改为客户端的端口,对于TCP数据包,将所述TCP数据包的序列号修改为所述TCP数据包的序列号减去所述服务器的初始序列号和负载均衡器的初始序列号之间的差值之后所获取的值;
数据包发送模块,用于将修改后的所述数据包直接发送给所述客户端。
综上所述,应用本发明所述装置和方法后,实现了应用了负载均衡器的IPTV等集群系统中上行数据和下行数据的分离,减轻了负载均衡器的压力,大大提高了系统的健壮性。
本发明既实现了服务器对客户端的完全透明,也实现了客户端对多媒体服务器的完全透明。本发明在系统内核分析用户请求的内容,避免了将数据包从内核空间到用户空间的拷贝,大大提高了系统的执行效率。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。
Claims (8)
1.一种实现上下行数据分离的方法,其特征在于,包括:
负载均衡器获取其和客户端、服务器之间通过传输层协议进行通信的相关信息,该相关信息包括IP地址和端口信息,所述负载均衡器将该相关信息发送给所述服务器;
所述负载均衡器接收到所述客户端通过传输层协议发送的数据包后,根据所述相关信息将所述数据包转发给所述服务器,所述服务器根据所述相关信息将数据包直接发送给所述客户端;
其中,所述服务器根据所述相关信息将数据包直接发送给所述客户端,具体包括:
所述服务器根据需要发出的数据包的源IP地址、源端口和目的端口信息查询所述相关信息,获取对应的所述客户端的地址和端口信息;
所述服务器将所述数据包的源IP地址修改为负载均衡器的IP地址,将所述数据包的源端口修改为负载均衡器用于和客户端通信的端口,将所述数据包的目的IP地址修改为客户端的IP地址,将所述数据包的目的端口修改为客户端的端口,将所述数据包的序列号修改为所述数据包的序列号减去差值之后所获取的值,其中,所述差值为所述服务器的初始序列号和负载均衡器的初始序列号之间的差值;
所述服务器将修改后的所述数据包直接发送给所述客户端。
2.根据权利要求1所述的方法,其特征在于,所述的负载均衡器获取其和客户端、服务器之间通过传输层协议进行通信的相关信息,该相关信息包括地址和端口信息,所述负载均衡器将该相关信息发送给服务器,具体包括:
当负载均衡器接收到客户端通过传输层协议发送的数据包后,从该数据包中提取出和客户端之间通信的相关信息,将该相关信息存储在数据结构中;
所述负载均衡器根据所述数据包中的内容、服务器的负载情况和服务器中的请求内容分布情况,给所述客户端选择服务器,通过所述传输层协议向所述服务器发送数据包,从服务器返回的数据包中提取出和服务器之间进行通信的相关信息,将该相关信息存储在所述数据结构中;
所述负载均衡器通过所述传输层协议将所述数据结构发送给所述服务器。
3.根据权利要求2所述的方法,其特征在于,当负载均衡器和客户端、服务器之间通过传输控制协议TCP进行通信时,所述的相关信息包括:
客户端的IP地址和端口、客户端的初始序列号、负载均衡器同服务器进行TCP连接的端口、负载均衡器同客户端进行TCP连接的端口、服务器的IP地址和端口、服务器的初始序列号、TCP连接的状态。
4.根据权利要求2所述的方法,其特征在于,当负载均衡器和客户端、服务器之间通过用户数据报协议UDP进行通信时,所述的相关信息包括:
客户端的IP地址和端口号、负载均衡器同服务器进行UDP通信的端口、负载均衡器同客户端进行UDP通信的端口、服务器的IP地址和端口。
5.根据权利要求1至4任一项所述的方法,其特征在于,所述的负载均衡器接收到所述客户端通过传输层协议发送的数据包后,根据所述相关信息将所述数据包转发给所述服务器,具体包括:
所述负载均衡器接收到所述客户端通过传输层协议发送的数据包后,根据所述数据包的源IP地址、源端口和目的端口查询所述相关信息,获取对应的所述服务器的IP地址和端口信息;
所述负载均衡器将所述数据包的源IP地址修改为负载均衡器的IP地址,将所述数据包的源端口修改为负载均衡器用于和服务器通信的端口,将所述数据包的目的IP地址修改为服务器的IP地址,将所述数据包的目的端口修改为服务器的端口;
所述负载均衡器将修改后的所述数据包转发给所述服务器。
6.根据权利要求5所述的方法,其特征在于,当负载均衡器和客户端、服务器之间通过TCP进行通信时,所述负载均衡器还将所述数据包的确认号修改为所述数据包的确认号加上所述服务器的初始序列号和负载均衡器的初始序列号之间的差值之后所获取的值。
7.一种负载均衡器,其特征在于,包括:
相关信息处理模块,用于获取其和客户端、服务器之间通过传输层协议进行通信的相关信息,该相关信息包括IP地址和端口信息,将该相关信息发送给所述服务器;
数据包转发模块,用于在接收到所述客户端发送的数据包后,根据所述相关信息将所述数据包转发给所述服务器;
其中,所述数据包转发模块具体包括:
服务器信息获取模块,用于在接收到所述客户端通过传输层协议发送的数据包后,根据所述数据包的请求内容、服务器的负载情况和服务器中的请求内容分布情况,获取对应的所述服务器的IP地址和端口信息;
地址转换模块,用于将所述数据包的源IP地址修改为负载均衡器的IP地址,将所述数据包的源端口修改为负载均衡器用于和服务器通信的端口,将所述数据包的目的IP地址修改为所述服务器的IP地址,将所述数据包的目的端口修改为所述服务器的端口,对于TCP数据包,还将所述TCP数据包的确认号修改为所述TCP数据包的确认号加上差值之后所获取的值,其中,所述差值为所述服务器的初始序列号和负载均衡器的初始序列号之间的差值;
数据包发送模块,用于将修改后的所述数据包通过传输层协议转发给所述服务器。
8.一种服务器,其特征在于,包括:
相关信息保存模块,用于接收并保存负载均衡器发送过来的负载均衡器和客户端、服务器之间通过传输层协议进行通信的相关信息,该相关信息包括IP地址、端口号和序列号信息;
客户端信息获取模块,用于根据需要发出的数据包对应的所述相关信息保存模块中保存的相关信息,获取对应的所述客户端的IP地址、端口号和序列号信息;
地址转换模块,用于将所述数据包的源IP地址修改为负载均衡器的IP地址,将所述数据包的源端口修改为负载均衡器用于和客户端通信的端口,将所述数据包的目的I P地址修改为客户端的IP地址,将所述数据包的目的端口修改为客户端的端口,对于TCP数据包,还将所述TCP数据包的序列号修改为所述TCP数据包的序列号减去差值之后所获取的值,其中,所述差值为所述服务器的初始序列号和负载均衡器的初始序列号之间的差值;
数据包发送模块,用于将修改后的所述数据包直接发送给所述客户端。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008101033933A CN101252591B (zh) | 2008-04-03 | 2008-04-03 | 实现上下行数据分离的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008101033933A CN101252591B (zh) | 2008-04-03 | 2008-04-03 | 实现上下行数据分离的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101252591A CN101252591A (zh) | 2008-08-27 |
CN101252591B true CN101252591B (zh) | 2011-05-04 |
Family
ID=39955775
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2008101033933A Expired - Fee Related CN101252591B (zh) | 2008-04-03 | 2008-04-03 | 实现上下行数据分离的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101252591B (zh) |
Families Citing this family (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102075409B (zh) * | 2009-11-24 | 2013-03-20 | 华为技术有限公司 | 请求消息处理方法、系统及负载均衡器设备 |
CN101808119A (zh) * | 2010-03-04 | 2010-08-18 | 杭州华三通信技术有限公司 | 一种多存储阵列负载均衡的方法和设备 |
CN102523302B (zh) * | 2011-12-26 | 2015-08-19 | 华为数字技术(成都)有限公司 | 虚拟机集群的负载均衡方法、服务器及系统 |
CN103384255B (zh) * | 2011-12-31 | 2016-08-10 | 华为数字技术(成都)有限公司 | 虚拟机集群的负载均衡方法、服务器及系统 |
CN103297407B (zh) * | 2012-03-02 | 2016-05-25 | 百度在线网络技术(北京)有限公司 | 传递客户端IPv6地址及端口至后端服务器的方法及装置 |
CN103379130A (zh) | 2012-04-13 | 2013-10-30 | 深圳市腾讯计算机系统有限公司 | 一种基于应用层数据的网络接入系统和方法 |
CN103391271B (zh) * | 2012-05-08 | 2015-12-16 | 深圳市腾讯计算机系统有限公司 | 数据包转发方法和装置 |
CN103491053A (zh) * | 2012-06-08 | 2014-01-01 | 北京百度网讯科技有限公司 | Udp负载均衡方法、系统及装置 |
CN103491016B (zh) * | 2012-06-08 | 2017-11-17 | 百度在线网络技术(北京)有限公司 | Udp负载均衡系统中源地址传递方法、系统及装置 |
CN103780502A (zh) * | 2012-10-17 | 2014-05-07 | 阿里巴巴集团控股有限公司 | 一种负载均衡下的数据交互系统、方法及装置 |
CN103841139B (zh) * | 2012-11-22 | 2018-02-02 | 深圳市腾讯计算机系统有限公司 | 传输数据的方法、装置和系统 |
CN103220354A (zh) * | 2013-04-18 | 2013-07-24 | 广东宜通世纪科技股份有限公司 | 一种实现服务器集群负载均衡的方法 |
CN104348637B (zh) * | 2013-07-26 | 2018-07-03 | 中国科学院声学研究所 | 一种在故障切换时保持tcp连接的方法 |
CN107888643A (zh) * | 2016-09-30 | 2018-04-06 | 北京神州泰岳软件股份有限公司 | 一种udp负载均衡方法、装置和系统 |
CN108123890A (zh) * | 2016-11-30 | 2018-06-05 | 阿里巴巴集团控股有限公司 | 一种负载均衡系统中的链路检测方法、装置及电子设备 |
CN107087023B (zh) | 2017-04-06 | 2019-11-05 | 平安科技(深圳)有限公司 | 数据转发方法和系统 |
CN108011846B (zh) | 2017-11-03 | 2022-07-26 | 华为技术有限公司 | 网络功能虚拟化架构中管理业务的方法及装置 |
CN108494757A (zh) * | 2018-03-14 | 2018-09-04 | 武汉大学 | 一种基于OpenWrt系统的路由器隐蔽通信方法 |
CN108848175B (zh) * | 2018-06-25 | 2021-11-02 | 网宿科技股份有限公司 | 一种创建tcp连接的方法及装置 |
CN112751898B (zh) * | 2019-10-31 | 2024-05-14 | 贵州白山云科技股份有限公司 | 负载均衡方法、装置、介质及设备 |
CN112532534B (zh) * | 2020-11-25 | 2024-04-23 | 腾讯科技(深圳)有限公司 | 一种数据传输方法、装置以及计算机可读存储介质 |
CN114697338A (zh) * | 2020-12-28 | 2022-07-01 | 北京金山云网络技术有限公司 | 云计算的数据传输方法、装置以及服务端设备 |
CN117201497A (zh) * | 2022-05-31 | 2023-12-08 | 华为云计算技术有限公司 | 一种云服务系统及基于云服务系统的业务处理方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1403934A (zh) * | 2001-09-06 | 2003-03-19 | 华为技术有限公司 | 对流媒体服务器实现负载均衡的方法和设备 |
CN1495634A (zh) * | 2002-06-27 | 2004-05-12 | 上海汉唐科技有限公司 | 服务器集群负载均衡方法及系统 |
CN1545275A (zh) * | 2003-11-21 | 2004-11-10 | 清华大学深圳研究生院 | 基于Netfilter架构的流媒体集群服务内容调度方法 |
CN1972311A (zh) * | 2006-12-08 | 2007-05-30 | 华中科技大学 | 一种基于集群均衡负载的流媒体服务器系统 |
-
2008
- 2008-04-03 CN CN2008101033933A patent/CN101252591B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1403934A (zh) * | 2001-09-06 | 2003-03-19 | 华为技术有限公司 | 对流媒体服务器实现负载均衡的方法和设备 |
CN1495634A (zh) * | 2002-06-27 | 2004-05-12 | 上海汉唐科技有限公司 | 服务器集群负载均衡方法及系统 |
CN1545275A (zh) * | 2003-11-21 | 2004-11-10 | 清华大学深圳研究生院 | 基于Netfilter架构的流媒体集群服务内容调度方法 |
CN1972311A (zh) * | 2006-12-08 | 2007-05-30 | 华中科技大学 | 一种基于集群均衡负载的流媒体服务器系统 |
Also Published As
Publication number | Publication date |
---|---|
CN101252591A (zh) | 2008-08-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101252591B (zh) | 实现上下行数据分离的方法和装置 | |
USRE44918E1 (en) | Method and apparatus for equalizing load of streaming media server | |
EP2171600B1 (en) | Assisted peer-to-peer media streaming | |
CN102232286B (zh) | 设立网际协议电视会话的网络装置以及方法 | |
WO2018133454A1 (zh) | 远程服务访问路径控制方法和相关设备 | |
CN106878310B (zh) | 命名数据网络下一种实时流数据分发的方法 | |
US20070073878A1 (en) | System and method for lowering proxy bandwidth utilization | |
US20080209065A1 (en) | Method for sending stream media, signaling forwarding device and stream media system | |
JP5678198B2 (ja) | モバイルインターネットサービスの実現方法、ゲートウェイ、プロキシ及びシステム | |
CN111479121A (zh) | 一种基于流媒体服务器的直播方法及系统 | |
US20100235464A1 (en) | Handoff and optimization of a network protocol stack | |
KR102324919B1 (ko) | 데이터 분배 방법 및 분배 서버 | |
CN115002023B (zh) | 一种链路聚合方法、链路聚合装置、电子设备及存储介质 | |
US20110173248A1 (en) | Method for providing on-path content distribution | |
US20140016532A1 (en) | Multicast transmission using a unicast protocol | |
WO2009092240A1 (zh) | 一种通信设备及其应用方法、系统 | |
CN105897853A (zh) | 一种对等网络连接方法及装置 | |
US20090106436A1 (en) | Methods and systems for offload processing | |
CN116506369A (zh) | 一种双栈网络流量调度方法 | |
JP2011515980A (ja) | 通信システムにおけるピアツーピアマルチメディア接続の状態を問い合わせるシステムおよび方法 | |
CN105100147A (zh) | 一种基于内容提供商与服务提供商分离的控制方法及装置 | |
CN112788367A (zh) | 流媒体调度方法、系统及调度组件 | |
CN112788050A (zh) | 基于内容分发网络实现低延时直播的系统及方法 | |
CN110620907A (zh) | 监控调取方法、装置、电子设备及存储介质 | |
Li et al. | Network services and protocols for multimedia communications |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20110504 Termination date: 20150403 |
|
EXPY | Termination of patent right or utility model |