CN101827039A - 一种负载分担的方法和设备 - Google Patents
一种负载分担的方法和设备 Download PDFInfo
- Publication number
- CN101827039A CN101827039A CN201010191784A CN201010191784A CN101827039A CN 101827039 A CN101827039 A CN 101827039A CN 201010191784 A CN201010191784 A CN 201010191784A CN 201010191784 A CN201010191784 A CN 201010191784A CN 101827039 A CN101827039 A CN 101827039A
- Authority
- CN
- China
- Prior art keywords
- address
- layers
- forwarding unit
- source
- message
- 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.)
- Granted
Links
Images
Abstract
本发明公开了一种负载分担的方法,包括以下步骤:交换机根据forward_table匹配报文中携带的源IP地址和目的IP地址;如果匹配成功时,所述交换机根据所述forward_table转发所述报文。本发明中,提高了转发效率,减少了LB设备的压力。
Description
技术领域
本发明涉及通信技术领域,特别是涉及一种负载分担的方法和设备。
背景技术
负载均衡技术是一种服务器或网络设备的集群技术,负载均衡技术可以将特定的业务(例如,网络服务、网络流量等)分担到多个服务器或网络设备上,从而提高了业务的处理能力,并保证了业务的高可用性。
具体的,LB(Load Balance,负载均衡)技术具有以下优势:(1)高性能(Performance):LB技术将业务均衡的分配到多个服务器(或网络设备)上,提高了整个系统的性能。(2)可扩展性(Scalability):LB技术可以方便的增加集群中服务器(或网络设备)的数量,在不降低业务质量的前提下满足不断增长的业务需求。(3)高可用性(Availability):单个或多个服务器(或网络设备)发生故障时,不会导致业务的中断,实现了整个系统7×24小时可用。(4)可管理性(Manageability):大量的管理工作都集中在应用LB技术的设备上,服务器群(或网络设备群)只需要通常的配置和维护即可。(5)透明性(Transparency):对于用户而言,集群等同于一台可靠性高、性能好的服务器(或网络设备),用户感知不到也不必关心具体的网络结构,增加和减少服务器(或网络设备)均不会影响正常的业务。
基于LB技术的上述优势,数据中心通常采用服务器负载均衡方式进行组网,其中,常见的负载均衡方式包括NAT(Network Address Translation,网络地址转换)方式和DR(Direct Routing,直接路由)方式两种。
现有技术中,如果网络中需要部署LB设备,并采用DR方式进行服务器的负载均衡时,一种常用的应用场景如图1所示。在图1中,服务器(服务器1和服务器2)需要配置自身的IP地址和VIP(虚拟IP,用于接收由LB设备分发来的服务请求,以VIP使用1.1.1.5为例)。
在图1所示的组网中,各个设备的路由以及IP配置情况如下:
1、路由器(Router):三层转发设备,用于报文的转发。其中,路由器与服务器之间为交换机。
2、客户端(Client)1和客户端2:作为发起服务请求的客户端,模拟用户。
3、服务器(Server)1和服务器2:作为服务器。其中,在DR方式的组网中对服务器有特殊要求,由于服务器上需要配置VIP,且服务器上的VIP需要不响应ARP(Address Resolution Protocol,地址解析协议)请求;每台服务器需要有两个地址,一个为实际的物理地址;另一个为环回接口地址VIP(1.1.1.5)。
4、LB设备(Device):其中,LB设备也有两个地址,一个为实际的物理地址;另一个为环回接口地址VIP(1.1.1.5)。
基于上述组网情况,现有的负载均衡的具体工作流程图,如图2所示:包括:
(1)客户端以VIP为目的地址发送服务请求报文。其中,客户端1和客户端2以VIP(1.1.1.5)为目的IP地址发送服务请求报文,该服务请求报文根据路由设置情况将首先发送给路由器。
(2)路由器接收到服务请求报文后,转发给LB设备。
(3)LB设备接收到服务请求报文后,获取应该将服务请求报文分发给哪台服务器。其中,在分发该服务请求报文时,需要通过中间的二层交换机。
(4)LB设备分发服务请求。其中,LB设备在封装报文时,目的IP地址为VIP,目的MAC(Media Access Control,介质访问控制)为指定的要分发服务器的MAC(通过ARP请求服务器IP获取),从而能够保证请求报文能够顺利的转发给指定的服务器(例如,服务器1或者服务器2)。
(5)服务器接收并处理服务请求报文,返回响应报文。其中,响应报文的目的IP为客户端的IP,通过服务器上设定的路由来转发,直接发送到路由器,该服务器的应答报文不再经过LB设备。
(6)路由器接收到响应报文后,直接将响应报文转发给客户端。即路由器按照目的IP将来自服务器的响应报文直接转发给客户端1或客户端2。
在现有技术中,DR方式的负载均衡技术只是从服务器端到客户端的报文不需要经过LB设备,而从客户端到服务器端的报文则需要首先达到LB设备,再由LB设备进行处理分发,从而会增加LB设备的负担和压力,而且效率并不高。
发明内容
本发明提供一种负载分担的方法和设备,以减轻LB设备的负担和压力,并提高报文的转发效率。
为了达到上述目的,本发明提出了一种负载分担的方法,应用于包括客户端、三层转发设备、负载服务器、LB设备和二层转发设备的系统中,所述方法包括以下步骤:
当所述二层转发设备根据从连接所述三层转发设备的端口接收到的报文确定所述报文的目的MAC地址为LB设备的MAC地址时,所述二层转发设备根据forward_table匹配所述报文中携带的源IP地址和目的IP地址;
如果匹配不成功时,所述二层转发设备根据所述报文中携带的源IP地址和目的IP地址建立所述forward_table,其中,所述forward_table中包含的内容至少包括所述源IP地址、所述目的IP地址、与所述负载服务器连接的二层转发设备端口、所述负载服务器的MAC地址;
如果匹配成功时,所述二层转发设备根据所述forward_table中的与所述负载服务器连接的二层转发设备端口和所述负载服务器的MAC地址转发所述报文。
其中,所述forward_table中包含的内容还包括:源端口、目的端口和协议类型,
所述二层转发设备根据forward_table匹配所述报文中携带的源IP地址和目的IP地址,具体包括:
所述二层转发设备根据所述forward_table中的源IP地址、目的IP地址、源端口、目的端口和协议类型匹配所述报文中携带的源IP地址、目的IP地址、源端口、目的端口和协议类型。
其中,所述二层转发设备根据所述报文中携带的源IP地址和目的IP地址建立所述forward_table,具体包括:
所述二层转发设备根据所述报文中携带的信息建立table_in,所述table_in中的内容包括:源IP地址、目的IP地址、源端口、目的端口和协议类型;
所述二层转发设备根据所述LB设备的MAC地址将所述报文发送给所述LB设备,由所述LB设备选择目的服务器为所述负载服务器,并将所述报文发送给所述负载服务器;
所述二层转发设备接收来自所述负载服务器的响应报文,并根据所述响应报文中携带的信息和所述响应报文对应的与所述负载服务器连接的二层转发设备端口建立table_out,所述table_out中的内容包括:源IP地址、目的IP地址、源端口、目的端口、协议类型和与所述负载服务器连接的二层转发设备端口;
如果所述table_in中的源IP地址与table_out中目的IP地址、源端口与目的端口、目的IP地址与源IP地址、目的端口与源端口、协议类型与协议类型均相同时,所述二层转发设备获取所述负载服务器的MAC地址,并根据所述table_in中的源IP地址、目的IP地址、源端口、目的端口、协议类型、table_out中的与所述负载服务器连接的二层转发设备端口、所述负载服务器的MAC地址建立所述forward_table。
其中,所述二层转发设备根据所述forward_table中的与所述负载服务器连接的二层转发设备端口和所述负载服务器的MAC地址转发所述报文,具体包括:
所述二层转发设备将所述报文中的目的MAC地址替换为所述负载服务器的MAC地址,并通过与所述负载服务器连接的二层转发设备端口将所述报文转发给所述负载服务器。
其中,所述二层转发设备根据所述报文中携带的源IP地址和目的IP地址建立所述forward_table,之后还包括:
所述二层转发设备为所述forward_table设置老化时间,并当所述forward_table到达所述老化时间后,所述二层转发设备通知所述LB设备删除对应的表项;或者,
所述二层转发设备为所述forward_table设置老化时间,并在所述forward_table到达所述老化时间之前,所述二层转发设备通知所述LB设备刷新对应的表项,以抑制对应表项的老化。
本发明提供一种二层转发设备,应用于包括客户端、三层转发设备、负载服务器、LB设备和二层转发设备的系统中,该二层转发设备包括:
匹配模块,用于当根据从连接所述三层转发设备的端口接收到的报文确定所述报文的目的MAC地址为LB设备的MAC地址时,根据forward_table匹配所述报文中携带的源IP地址和目的IP地址;
建立模块,与所述匹配模块连接,用于当匹配不成功时,根据所述报文中携带的源IP地址和目的IP地址建立所述forward_table,其中,所述forward_table中包含的内容至少包括所述源IP地址、所述目的IP地址、与所述负载服务器连接的二层转发设备端口、所述负载服务器的MAC地址;
转发模块,与所述匹配模块和建立模块分别连接,用于当匹配成功时,根据所述forward_table中的与所述负载服务器连接的二层转发设备端口和所述负载服务器的MAC地址转发所述报文。
其中,所述forward_table中包含的内容还包括:源端口、目的端口和协议类型,
所述匹配模块,具体用于根据所述forward_table中的源IP地址、目的IP地址、源端口、目的端口和协议类型匹配所述报文中携带的源IP地址、目的IP地址、源端口、目的端口和协议类型。
其中,所述建立模块进一步包括:
第一建立子模块,用于根据所述报文中携带的信息建立table_in,所述table_in中的内容包括:源IP地址、目的IP地址、源端口、目的端口和协议类型;
收发子模块,用于根据所述LB设备的MAC地址将所述报文发送给所述LB设备,由所述LB设备选择目的服务器为所述负载服务器,将所述报文发送给所述负载服务器;并接收来自所述负载服务器的响应报文;
第二建立子模块,与所述收发子模块连接,用于根据所述响应报文中携带的信息和所述响应报文对应的与所述负载服务器连接的二层转发设备端口建立table_out,所述table_out中的内容包括:源IP地址、目的IP地址、源端口、目的端口、协议类型和与所述负载服务器连接的二层转发设备端口;
获取子模块,与所述第一建立子模块和所述第二建立子模块分别连接,用于当所述table_in中的源IP地址与table_out中目的IP地址、源端口与目的端口、目的IP地址与源IP地址、目的端口与源端口、协议类型与协议类型均相同时,获取所述负载服务器的MAC地址;
第三建立子模块,与所述第一建立子模块、所述第二建立子模块和获取子模块分别连接,用于根据所述table_in中的源IP地址、目的IP地址、源端口、目的端口、协议类型、table_out中的与所述负载服务器连接的二层转发设备端口、所述负载服务器的MAC地址建立所述forward_table。
其中,
所述转发模块,具体用于将所述报文中的目的MAC地址替换为所述负载服务器的MAC地址,并通过与所述负载服务器连接的二层转发设备端口将所述报文转发给所述负载服务器。
其中,还包括:
维护模块,与所述建立模块连接,用于为所述forward_table设置老化时间,并当所述forward_table到达所述老化时间后,通知所述LB设备删除对应的表项;或者,
为所述forward_table设置老化时间,并在所述forward_table到达所述老化时间之前,通知所述LB设备刷新对应的表项,以抑制对应表项的老化。
与现有技术相比,本发明具有以下优点:
在采用DR方式进行服务器负载均衡的过程中,当客户端与服务器之间的连接建立完成后,后续所有的交互报文都不需要通过LB设备进行转发,提高了转发效率,减少了LB设备的压力,并可以降低组网中采用LB设备的参数指标;以及减少LB设备进行调度算法处理出错的概率。
附图说明
图1为现有技术中采用DR方式进行服务器的负载均衡的示意图;
图2为现有技术中负载均衡的工作流程示意图;
图3为本发明提出的一种负载分担的方法流程图;
图4为本发明应用场景下所提出的一种负载分担的方法流程图;
图5为本发明提出的一种交换机的结构图。
具体实施方式
本发明中,在采用DR方式进行服务器负载均衡的过程中,当二层转发设备(例如,交换机)接收到客户端通过三层转发设备(例如,路由器等)发送的报文时,如果确定该报文的目的MAC地址为LB设备的MAC地址,则根据forward_table(forward_table中包含的内容至少包括源IP地址、目的IP地址、与负载服务器连接的交换机端口、负载服务器的MAC地址)匹配该报文中携带的源IP地址和目的IP地址。
进一步地,如果匹配成功时,则直接根据forward_table中的与负载服务器连接的交换机端口和负载服务器的MAC地址将该报文转发给负载服务器,从而使得客户端与服务器之间的连接建立完成后,后续所有的交互报文都不需要通过LB设备进行转发,只由交换机进行转发即可,提高了转发效率,减少了LB设备的压力,并可以降低组网中采用LB设备的参数指标;以及减少LB设备进行调度算法处理出错的概率。
基于上述思想,本发明提供一种负载分担的方法,应用于包括客户端、三层转发设备、负载服务器、LB设备和二层转发设备的系统中,其中,该三层转发设备可以为路由器,该二层转发设备可以为交换机。需要注意的是,该三层转发设备和二层转发设备还可以集成在同一个转发设备中,对应到本发明中,则三层转发设备为转发设备中的三层转发模块,二层转发设备为转发设备中的二层转发模块。为了方便描述,本发明中,以三层转发设备为路由器,二层转发设备为交换机为例进行说明。
该负载服务器为LB设备选择的用于为客户端提供负载服务的服务器,其中,该系统中可以包括多个服务器,针对不同的客户端,LB设备可以选择不同的服务器为之提供负载服务。例如,LB设备选择服务器1为客户端1提供负载服务时,则服务器1为负载服务器;LB设备选择服务器2为客户端1提供负载服务时,则服务器2为负载服务器。如图3所示,该方法包括以下步骤:
步骤301,当所述交换机根据从连接所述路由器的端口接收到的报文确定所述报文的目的MAC地址为LB设备的MAC地址时,所述交换机根据forward_table匹配所述报文中携带的源IP地址和目的IP地址。
步骤302,如果匹配不成功时,所述交换机根据所述报文中携带的源IP地址和目的IP地址建立所述forward_table。其中,所述forward_table中包含的内容至少包括所述源IP地址、所述目的IP地址、与所述负载服务器连接的交换机端口、所述负载服务器的MAC地址。
步骤303,如果匹配成功时,所述交换机根据所述forward_table中的与所述负载服务器连接的交换机端口和所述负载服务器的MAC地址转发所述报文。
为了更加清楚的阐述本发明提供的技术方案,以下结合图1所示的数据中心服务器负载均衡组网示意图对本发明进行详细说明。本应用场景下,服务器1和服务器2需要配置自身的IP地址和VIP(虚拟IP)且不响应针对VIP的ARP请求,LB设备需要配置自身的IP地址和VIP,路由器为三层交换设备,交换机为二层交换设备。基于上述应用场景,如图4所示,该方法包括以下步骤:
步骤401,客户端以VIP为目的地址发送请求报文。
具体的,当客户端1或者客户端2需要与服务器建立时,则客户端1或者客户端2(后续过程中以客户端1为例)需要以VIP为目的地址发送请求报文,该请求报文根据路由设置情况将首先发送给路由器。
本发明中,该请求报文的源IP地址为客户端1的IP地址,目的地址为虚拟IP地址(即VIP,LB设备和服务器共同的IP地址),源端口和目的端口可以根据实际需要进行选择,协议类型为TCP(Transmission Control Protocol,传输控制协议)或者UDP(User Datagram Protocol,用户数据包协议)。
步骤402,路由器通过交换机将该请求报文发送给LB设备。
具体的,当接收到该请求报文后,获取该请求报文的下一条是LB设备的实际物理IP地址,该路由器根据该LB设备的实际物理IP地址发送ARP请求,并获取该LB设备的MAC地址,之后,路由器将目的MAC地址封装为该获取的MAC地址,并将封装后的报文通过交换机发送给LB设备。
步骤403,交换机获取该请求报文的目的MAC地址。
在路由器将该请求报文发送给LB设备的过程中,路由器需要将该请求报文发送给交换机,并由交换机进行相应的处理。
具体的,当接收到该请求报文后,交换机需要获取该请求报文的目的MAC地址,如果该目的MAC地址不是LB设备的MAC地址,则按照现有的转发机制进行转发,这种情况本发明中不再赘述;如果该目的MAC地址为LB设备的MAC地址,则需要执行后续步骤404中的操作。
需要注意的是,在交换机上预先存储了LB设备的MAC地址(例如,在交换机上手工配置LB设备的MAC地址),当获取到该请求报文的目的MAC地址后,即可以确定该目的MAC地址是否为LB设备的MAC地址。
步骤404,交换机根据forward_table匹配该请求报文中携带的源IP地址和目的IP地址。如果匹配不成功时,转到步骤405,如果匹配成功时,转到步骤410。其中,该forward_table的建立过程以及携带的内容将在后续步骤中详细说明,本步骤中不再赘述。
具体的,该请求报文中还携带了源端口、目的端口和协议类型等信息,在本步骤中,交换机需要根据forward_table匹配该请求报文中携带的源IP地址、目的IP地址、源端口、目的端口和协议类型。
需要注意的是,对于所有从连接路由器的端口接收到的报文,交换机均会确定该报文的目的MAC地址是否为LB设备的MAC地址,为了方便描述,本应用场景下以请求报文为例进行说明。
步骤405,交换机根据该请求报文中携带的源IP地址、目的IP地址、源端口、目的端口和协议类型建立table_in。
具体的,在交换机上需要建立并维护table_in,该table_in中携带的内容包括但不限于:源IP地址、目的IP地址、源端口、目的端口和协议类型。当接收到该请求报文后,则需要将该请求报文中携带的源IP地址、目的IP地址、源端口、目的端口和协议类型记录到table_in中的对应位置。
本应用场景下,该请求报文的源IP地址为客户端1的IP地址,目的地址为虚拟IP地址,源端口和目的端口为根据实际需要进行选择,协议类型为TCP或者UDP。
步骤406,交换机根据LB设备的MAC地址将该请求报文转发给LB设备,LB设备选择目的服务器为负载服务器,并将请求报文发送给负载服务器。
具体的,当接收到请求报文后,LB设备需要根据预设的负载均衡算法选择目的服务器为客户端提供负载服务,该目的服务器则为负载服务器。例如,当LB设备选择服务器1为该请求报文对应的客户端提供负载服务时,则负载服务器为服务器1。
进一步的,当选择了负载服务器后,LB设备需要重新封装该请求报文,保持目的IP地址不变,目的MAC地址为指定要分发的负载服务器(服务器1)的MAC地址,并根据负载服务器的MAC地址将该请求报文发送到指定的负载服务器。
步骤407,交换机接收来自负载服务器的响应报文。
具体的,当接收到该请求报文后,该负载服务器需要返回响应报文。其中,该响应报文的目的IP地址为客户端1的IP地址,源IP地址为虚拟IP地址,源端口为负载服务器端口,目的端口为客户端1的端口,协议类型为TCP或者UDP。负载服务器在返回响应报文时,需要通过交换机将该响应报文返回给路由器,而该响应报文不再经过LB设备。
步骤408,交换机根据响应报文中携带的信息和响应报文进来的交换机端口建立table_out。其中,该响应报文中携带的信息包括但不限于:源IP地址、目的IP地址、源端口、目的端口和协议类型;该响应报文进来的交换机端口为响应报文对应的与负载服务器连接的交换机端口。
具体的,在交换机上需要建立并维护table_out,该table_out中携带的内容包括但不限于:源IP地址、目的IP地址、源端口、目的端口、协议类型和与负载服务器连接的交换机端口。当接收到该响应报文后,则需要将该响应报文中携带的源IP地址、目的IP地址、源端口、目的端口、协议类型和响应报文进来的交换机端口记录到table_out中的对应位置。
本应用场景下,该响应报文的目的IP地址为客户端1的IP地址,源IP地址为虚拟IP地址,源端口为负载服务器端口,目的端口为客户端1的端口,协议类型为TCP或者UDP。
步骤409,交换机比较table_in中的信息和table_out中的信息,并根据比较结果建立forward_table。
具体的,比较table_in中的信息和table_out中的信息具体为:比较table_in中的源IP地址与table_out中的目的IP地址、比较table_in中的源端口与table_out中的目的端口、比较table_in中的目的IP地址与table_out中的源IP地址、比较table_in中的目的端口与table_out中的源端口、比较table_in中的协议类型与table_out中的协议类型。
如果上述table_in中的源IP地址与table_out中目的IP地址、源端口与目的端口、目的IP地址与源IP地址、目的端口与源端口、协议类型与协议类型均相同时,则交换机确定建立forward_table;否则,交换机确定不需要建立forward_table。
在建立forward_table时,交换机还需要获取负载服务器的MAC地址,并根据table_in中的源IP地址、目的IP地址、源端口、目的端口、协议类型、table_out中的与负载服务器连接的交换机端口、以及负载服务器的MAC地址建立forward_table,即forward_table的组成为【table_in,与负载服务器连接的交换机端口,负载服务器的MAC地址】。
步骤410,交换机根据forward_table中的与负载服务器连接的交换机端口和负载服务器的MAC地址转发该请求报文。
具体的,在步骤404中,当根据forward_table中的源IP地址、目的IP地址、源端口、目的端口、协议类型匹配该请求报文中携带的源IP地址、目的IP地址、源端口、目的端口和协议类型成功时,则说明当前请求报文并不是针对客户端1的首次请求报文,之前已经建立了对应的forward_table,不再需要重新建立forward_table,而且该请求报文也不需要发送到LB设备,本发明中,可以由交换机直接将该请求报文发送给负载服务器。
在交换机直接将该请求报文发送给负载服务器时,交换机将请求报文中的目的MAC地址替换为负载服务器的MAC地址,并通过与负载服务器连接的交换机端口将该请求报文转发给负载服务器。
需要说明的是,该table_in、table_out和forward_table均是存在老化时间的,当接收到请求报文时,则需要刷新table_in的生存时间,当接收到响应报文时,则需要刷新table_out的生存时间,当接收到请求报文时,还需要刷新forward_table的生存时间。如果在预设老化时间内没有接收到相应的请求报文和响应报文,则需要将对应的table_in、table_out和forward_table等表项删除。
本发明中,通过上述步骤401至步骤410的处理过程,能够实现正常的负载均衡过程,但是如果交换机上的forward_table老化,而LB设备无法感知到该老化情况,则可能导致后续LB设备进行负载均衡算法时不准确,导致部分服务器上负载过高、而部分服务器上负载很低的不均衡状况。
为了解决上述问题,本发明中,还需要执行以下操作中的一种或几种:
(1)交换机与LB设备之间使用报文进行交互,当交换机的forward_table表项老化后,交换机通知LB设备进行相应表项的删除操作。其中,该相应表项为LB设备上的负载均衡表项,该负载均衡表项用于记录LB设备为各个客户端分配的负载服务器的信息。
具体的,交换机与LB设备之间进行交互的报文可以是新设计的报文、也可以是在常规协议报文上进行扩展的报文,例如,LLDP(Link Layer DiscoveryProtocol,链路层发现协议)协议报文等。
(2)交换机定时转发报文去刷新LB设备上的相应表项,以抑制LB设备上相应表项的老化。
具体的,交换机根据forward_table的老化时间,在老化时间到达前的预设时间内,如果接收到了请求报文,则在转发请求报文时,复制一份请求报文向连接LB设备的端口转发,当LB设备接收到该请求报文时,刷新相应表项。如果在预设时间内没有接收到请求报文时,则LB设备就直接老化该相应表项。
为了更加清楚的阐述本发明提供的技术方案,以下结合一种具体的应用进行详细论述。针对图1所示的数据中心服务器负载均衡组网示意图,假设客户端1的IP地址为2.2.2.1,LB设备对外提供服务的IP地址(VIP)是1.1.1.5,LB设备在数据中心局域网内的IP地址为10.10.10.1,服务器1的IP地址为10.10.10.3,且服务器1上配置虚接口地址1.1.1.5,修改服务器1的配置文件使服务器1对请求1.1.1.5的ARP请求不响应。
假设客户端1需要访问数据中心提供的web服务,则客户端1需要与数据中心的服务器建立一个TCP连接,请求报文具体为(假设源端口是3333):2.2.2.1(源IP地址):3333(源端口)——>1.1.1.5(目的IP地址):80(目的端口)。
该请求报文到达路由器的G0/1接口后,路由器发ARP请求1.1.1.5的MAC地址,这时只有LB设备会回应这个MAC地址,假设此时LB设备回应的MAC地址为00-00-00-11-11-11。路由器封装该请求报文的目的MAC地址为00-00-00-11-11-11,并开始走2层转发,请求报文被发送到了交换机。
交换机接收到目的MAC地址是LB设备的请求报文,将查找forward_table表,此时forward_table表为空,该交换机将记录table_in表,该table_in表的具体内容为【2.2.2.1、3333、1.1.1.5、80、TCP】。
由于查forward_table表为空,交换机需要将该请求报文按照普通转发流程进行转发,该请求报文被转发到了LB设备上,LB设备根据负载分担的算法,选中一台服务器(负载服务器),假设选中服务器1,则LB设备将转发该请求报文至服务器1。此时,该请求报文的目的IP还是1.1.1.5、源IP地址还是2.2.2.1、目的MAC地址变成了被选中的服务器1的MAC地址。
当请求报文被发送到服务器1后,服务器1会回应一个响应报文,该响应报文是1.1.1.5(源IP地址):80(源端口)——>2.2.2.1(目的IP地址):3333(目的端口)。
该响应报文到达交换机后,将按照现有技术转发该响应报文,但交换机需要记录table_out表,此时,该table_out表为【1.1.1.5、80、2.2.2.1、3333、TCP、P3】。其中,在本发明中,P1、P2、P3和P4为交换机上连接各个设备的端口,从图1中可以看出,P1为交换机与路由器连接的端口,P2为交换机与LB设备连接的端口,P3为交换机与服务器1连接的端口,P4为交换机与服务器2连接的端口。
进一步的,交换机将table_out表与table_in表进行对比,确定table_out表中的信息与table_in表中的信息能够匹配,则可以生成forward_table表,该forward_table表为【2.2.2.1、3333、1.1.1.5、80、TCP;P3,服务器1的MAC地址】。
在后续过程中,交换机如果再从连接路由器的接口上接收到请求报文,如果该请求报文的目的MAC是LB的MAC地址,则直接查找forward_table表进行转发,此时,将直接从P3端口转发出去,在转发时需要将请求报文的目的MAC地址改为forward_table表中的服务器1的MAC地址。
基于与上述方法同样的发明构思,本发明还提出了一种二层转发设备,应用于包括客户端、三层转发设备、负载服务器、LB设备和二层转发设备的系统中,如图5所示,该二层转发设备进一步包括:
匹配模块11,用于当根据从连接所述三层转发设备的端口接收到的报文确定所述报文的目的MAC地址为LB设备的MAC地址时,根据forward_table匹配所述报文中携带的源IP地址和目的IP地址。
本发明中,所述forward_table中包含的内容还包括:源端口、目的端口和协议类型,所述匹配模块11,具体用于根据所述forward_table中的源IP地址、目的IP地址、源端口、目的端口和协议类型匹配所述报文中携带的源IP地址、目的IP地址、源端口、目的端口和协议类型。
建立模块12,与所述匹配模块11连接,用于当匹配不成功时,根据所述报文中携带的源IP地址和目的IP地址建立所述forward_table,其中,所述forward_table中包含的内容至少包括所述源IP地址、所述目的IP地址、与所述负载服务器连接的二层转发设备端口、所述负载服务器的MAC地址。
本发明中,所述建立模块12进一步包括:
第一建立子模块121,用于根据所述报文中携带的信息建立table_in,所述table_in中的内容包括:源IP地址、目的IP地址、源端口、目的端口和协议类型;
收发子模块122,用于根据所述LB设备的MAC地址将所述报文发送给所述LB设备,由所述LB设备选择目的服务器为所述负载服务器,将所述报文发送给所述负载服务器;并接收来自所述负载服务器的响应报文;
第二建立子模块123,与所述收发子模块122连接,用于根据所述响应报文中携带的信息和所述响应报文对应的与所述负载服务器连接的二层转发设备端口建立table_out,所述table_out中的内容包括:源IP地址、目的IP地址、源端口、目的端口、协议类型和与所述负载服务器连接的二层转发设备端口;
获取子模块124,与所述第一建立子模块121和所述第二建立子模块123分别连接,用于当所述table_in中的源IP地址与table_out中目的IP地址、源端口与目的端口、目的IP地址与源IP地址、目的端口与源端口、协议类型与协议类型均相同时,获取所述负载服务器的MAC地址;
第三建立子模块125,与所述第一建立子模块121、所述第二建立子模块123和获取子模块124分别连接,用于根据所述table_in中的源IP地址、目的IP地址、源端口、目的端口、协议类型、table_out中的与所述负载服务器连接的二层转发设备端口、所述负载服务器的MAC地址建立所述forward_table。
转发模块13,与所述匹配模块11和建立模块12分别连接,用于当匹配成功时,根据所述forward_table中的与所述负载服务器连接的二层转发设备端口和所述负载服务器的MAC地址转发所述报文。
本发明中,所述转发模块13,具体用于将所述报文中的目的MAC地址替换为所述负载服务器的MAC地址,并通过与所述负载服务器连接的二层转发设备端口将所述报文转发给所述负载服务器。
维护模块14,与所述建立模块12连接,用于为所述forward_table设置老化时间,并当所述forward_table到达所述老化时间后,通知所述LB设备删除对应的表项;或者,为所述forward_table设置老化时间,并在所述forward_table到达所述老化时间之前,通知所述LB设备刷新对应的表项,以抑制对应表项的老化。
其中,本发明装置的各个模块可以集成于一体,也可以分离部署。上述模块可以合并为一个模块,也可以进一步拆分成多个子模块。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可以通过硬件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
本领域技术人员可以理解附图只是一个优选实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
本领域技术人员可以理解实施例中的装置中的模块可以按照实施例描述进行分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
上述本发明序号仅仅为了描述,不代表实施例的优劣。
以上公开的仅为本发明的几个具体实施例,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。
Claims (10)
1.一种负载分担的方法,应用于包括客户端、三层转发设备、负载服务器、LB设备和二层转发设备的系统中,其特征在于,所述方法包括以下步骤:
当所述二层转发设备根据从连接所述三层转发设备的端口接收到的报文确定所述报文的目的MAC地址为LB设备的MAC地址时,所述二层转发设备根据forward_table匹配所述报文中携带的源IP地址和目的IP地址;
如果匹配不成功时,所述二层转发设备根据所述报文中携带的源IP地址和目的IP地址建立所述forward_table,其中,所述forward_table中包含的内容至少包括所述源IP地址、所述目的IP地址、与所述负载服务器连接的二层转发设备端口、所述负载服务器的MAC地址;
如果匹配成功时,所述二层转发设备根据所述forward_table中的与所述负载服务器连接的二层转发设备端口和所述负载服务器的MAC地址转发所述报文。
2.如权利要求1所述的方法,其特征在于,所述forward_table中包含的内容还包括:源端口、目的端口和协议类型,
所述二层转发设备根据forward_table匹配所述报文中携带的源IP地址和目的IP地址,具体包括:
所述二层转发设备根据所述forward_table中的源IP地址、目的IP地址、源端口、目的端口和协议类型匹配所述报文中携带的源IP地址、目的IP地址、源端口、目的端口和协议类型。
3.如权利要求2所述的方法,其特征在于,所述二层转发设备根据所述报文中携带的源IP地址和目的IP地址建立所述forward_table,具体包括:
所述二层转发设备根据所述报文中携带的信息建立table_in,所述table_in中的内容包括:源IP地址、目的IP地址、源端口、目的端口和协议类型;
所述二层转发设备根据所述LB设备的MAC地址将所述报文发送给所述LB设备,由所述LB设备选择目的服务器为所述负载服务器,并将所述报文发送给所述负载服务器;
所述二层转发设备接收来自所述负载服务器的响应报文,并根据所述响应报文中携带的信息和所述响应报文对应的与所述负载服务器连接的二层转发设备端口建立table_out,所述table_out中的内容包括:源IP地址、目的IP地址、源端口、目的端口、协议类型和与所述负载服务器连接的二层转发设备端口;
如果所述table_in中的源IP地址与table_out中目的IP地址、源端口与目的端口、目的IP地址与源IP地址、目的端口与源端口、协议类型与协议类型均相同时,所述二层转发设备获取所述负载服务器的MAC地址,并根据所述table_in中的源IP地址、目的IP地址、源端口、目的端口、协议类型、table_out中的与所述负载服务器连接的二层转发设备端口、所述负载服务器的MAC地址建立所述forward_table。
4.如权利要求1所述的方法,其特征在于,所述二层转发设备根据所述forward_table中的与所述负载服务器连接的二层转发设备端口和所述负载服务器的MAC地址转发所述报文,具体包括:
所述二层转发设备将所述报文中的目的MAC地址替换为所述负载服务器的MAC地址,并通过与所述负载服务器连接的二层转发设备端口将所述报文转发给所述负载服务器。
5.如权利要求1所述的方法,其特征在于,所述二层转发设备根据所述报文中携带的源IP地址和目的IP地址建立所述forward_table,之后还包括:
所述二层转发设备为所述forward_table设置老化时间,并当所述forward_table到达所述老化时间后,所述二层转发设备通知所述LB设备删除对应的表项;或者,
所述二层转发设备为所述forward_table设置老化时间,并在所述forward_table到达所述老化时间之前,所述二层转发设备通知所述LB设备刷新对应的表项,以抑制对应表项的老化。
6.一种二层转发设备,应用于包括客户端、三层转发设备、负载服务器、LB设备和二层转发设备的系统中,其特征在于,该二层转发设备包括:
匹配模块,用于当根据从连接所述三层转发设备的端口接收到的报文确定所述报文的目的MAC地址为LB设备的MAC地址时,根据forward_table匹配所述报文中携带的源IP地址和目的IP地址;
建立模块,与所述匹配模块连接,用于当匹配不成功时,根据所述报文中携带的源IP地址和目的IP地址建立所述forward_table,其中,所述forward_table中包含的内容至少包括所述源IP地址、所述目的IP地址、与所述负载服务器连接的二层转发设备端口、所述负载服务器的MAC地址;
转发模块,与所述匹配模块和建立模块分别连接,用于当匹配成功时,根据所述forward_table中的与所述负载服务器连接的二层转发设备端口和所述负载服务器的MAC地址转发所述报文。
7.如权利要求6所述的二层转发设备,其特征在于,所述forward_table中包含的内容还包括:源端口、目的端口和协议类型,
所述匹配模块,具体用于根据所述forward_table中的源IP地址、目的IP地址、源端口、目的端口和协议类型匹配所述报文中携带的源IP地址、目的IP地址、源端口、目的端口和协议类型。
8.如权利要求7所述的二层转发设备,其特征在于,所述建立模块进一步包括:
第一建立子模块,用于根据所述报文中携带的信息建立table_in,所述table_in中的内容包括:源IP地址、目的IP地址、源端口、目的端口和协议类型;
收发子模块,用于根据所述LB设备的MAC地址将所述报文发送给所述LB设备,由所述LB设备选择目的服务器为所述负载服务器,将所述报文发送给所述负载服务器;并接收来自所述负载服务器的响应报文;
第二建立子模块,与所述收发子模块连接,用于根据所述响应报文中携带的信息和所述响应报文对应的与所述负载服务器连接的二层转发设备端口建立table_out,所述table_out中的内容包括:源IP地址、目的IP地址、源端口、目的端口、协议类型和与所述负载服务器连接的二层转发设备端口;
获取子模块,与所述第一建立子模块和所述第二建立子模块分别连接,用于当所述table_in中的源IP地址与table_out中目的IP地址、源端口与目的端口、目的IP地址与源IP地址、目的端口与源端口、协议类型与协议类型均相同时,获取所述负载服务器的MAC地址;
第三建立子模块,与所述第一建立子模块、所述第二建立子模块和获取子模块分别连接,用于根据所述table_in中的源IP地址、目的IP地址、源端口、目的端口、协议类型、table_out中的与所述负载服务器连接的二层转发设备端口、所述负载服务器的MAC地址建立所述forward_table。
9.如权利要求6所述的二层转发设备,其特征在于,
所述转发模块,具体用于将所述报文中的目的MAC地址替换为所述负载服务器的MAC地址,并通过与所述负载服务器连接的二层转发设备端口将所述报文转发给所述负载服务器。
10.如权利要求6所述的二层转发设备,其特征在于,还包括:
维护模块,与所述建立模块连接,用于为所述forward_table设置老化时间,并当所述forward_table到达所述老化时间后,通知所述LB设备删除对应的表项;或者,
为所述forward_table设置老化时间,并在所述forward_table到达所述老化时间之前,通知所述LB设备刷新对应的表项,以抑制对应表项的老化。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010101917842A CN101827039B (zh) | 2010-06-04 | 2010-06-04 | 一种负载分担的方法和设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010101917842A CN101827039B (zh) | 2010-06-04 | 2010-06-04 | 一种负载分担的方法和设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101827039A true CN101827039A (zh) | 2010-09-08 |
CN101827039B CN101827039B (zh) | 2013-03-20 |
Family
ID=42690756
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2010101917842A Expired - Fee Related CN101827039B (zh) | 2010-06-04 | 2010-06-04 | 一种负载分担的方法和设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101827039B (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103051534A (zh) * | 2012-11-20 | 2013-04-17 | 杭州迪普科技有限公司 | 一种报文处理方法及装置 |
CN103491007A (zh) * | 2013-09-13 | 2014-01-01 | 新浪网技术(中国)有限公司 | 一种数据包传输方法及装置 |
CN103581765A (zh) * | 2012-08-02 | 2014-02-12 | 华为技术有限公司 | 一种报文转发的方法和设备 |
CN106161333A (zh) * | 2015-03-24 | 2016-11-23 | 华为技术有限公司 | 基于sdn的ddos攻击防护方法、装置及系统 |
CN107948087A (zh) * | 2017-12-07 | 2018-04-20 | 锐捷网络股份有限公司 | 一种负载均衡的方法及设备 |
CN112751786A (zh) * | 2020-12-28 | 2021-05-04 | 长沙星融元数据技术有限公司 | 基于可编程交换机的slb加速系统、方法、装置、设备及介质 |
CN112929264A (zh) * | 2019-12-06 | 2021-06-08 | 厦门网宿有限公司 | 业务流量传输方法、系统及网络设备 |
CN113709016A (zh) * | 2020-05-20 | 2021-11-26 | 阿里巴巴集团控股有限公司 | 通信系统以及通信方法、装置、设备和存储介质 |
CN114205682A (zh) * | 2021-12-18 | 2022-03-18 | 网络通信与安全紫金山实验室 | 可编程交换机及其实现方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101022413A (zh) * | 2007-03-26 | 2007-08-22 | 杭州华为三康技术有限公司 | 负载均衡方法及路由服务器 |
CN101257447A (zh) * | 2008-03-14 | 2008-09-03 | 华为技术有限公司 | 一种负载分担的方法、系统及路由装置 |
-
2010
- 2010-06-04 CN CN2010101917842A patent/CN101827039B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101022413A (zh) * | 2007-03-26 | 2007-08-22 | 杭州华为三康技术有限公司 | 负载均衡方法及路由服务器 |
CN101257447A (zh) * | 2008-03-14 | 2008-09-03 | 华为技术有限公司 | 一种负载分担的方法、系统及路由装置 |
Non-Patent Citations (1)
Title |
---|
《Global Telecommunications Conference, 2006(GLOBECOM`06),IEEE》 20061231 Bianco, A.等 Scalable Layer-2/Layer-3 Multistage Switching Architectures for Software Routers , 2 * |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103581765A (zh) * | 2012-08-02 | 2014-02-12 | 华为技术有限公司 | 一种报文转发的方法和设备 |
CN103051534B (zh) * | 2012-11-20 | 2016-04-06 | 杭州迪普科技有限公司 | 一种报文处理方法及装置 |
CN103051534A (zh) * | 2012-11-20 | 2013-04-17 | 杭州迪普科技有限公司 | 一种报文处理方法及装置 |
CN103491007A (zh) * | 2013-09-13 | 2014-01-01 | 新浪网技术(中国)有限公司 | 一种数据包传输方法及装置 |
CN103491007B (zh) * | 2013-09-13 | 2017-01-04 | 新浪网技术(中国)有限公司 | 一种数据包传输方法及装置 |
US11394743B2 (en) | 2015-03-24 | 2022-07-19 | Huawei Technologies Co., Ltd. | SDN-based DDoS attack prevention method, apparatus, and system |
CN106161333A (zh) * | 2015-03-24 | 2016-11-23 | 华为技术有限公司 | 基于sdn的ddos攻击防护方法、装置及系统 |
US10630719B2 (en) | 2015-03-24 | 2020-04-21 | Huawei Technologies Co., Ltd. | SDN-based DDOS attack prevention method, apparatus, and system |
CN107948087A (zh) * | 2017-12-07 | 2018-04-20 | 锐捷网络股份有限公司 | 一种负载均衡的方法及设备 |
CN112929264A (zh) * | 2019-12-06 | 2021-06-08 | 厦门网宿有限公司 | 业务流量传输方法、系统及网络设备 |
CN113709016A (zh) * | 2020-05-20 | 2021-11-26 | 阿里巴巴集团控股有限公司 | 通信系统以及通信方法、装置、设备和存储介质 |
CN112751786A (zh) * | 2020-12-28 | 2021-05-04 | 长沙星融元数据技术有限公司 | 基于可编程交换机的slb加速系统、方法、装置、设备及介质 |
CN114205682A (zh) * | 2021-12-18 | 2022-03-18 | 网络通信与安全紫金山实验室 | 可编程交换机及其实现方法 |
CN114205682B (zh) * | 2021-12-18 | 2024-03-12 | 网络通信与安全紫金山实验室 | 可编程交换机及其实现方法 |
Also Published As
Publication number | Publication date |
---|---|
CN101827039B (zh) | 2013-03-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101827039B (zh) | 一种负载分担的方法和设备 | |
EP3355553B1 (en) | Reliable load-balancer using segment routing and real-time application monitoring | |
US9385949B2 (en) | Routing controlled by subnet managers | |
US8549120B2 (en) | System and method for location based address assignment in the distribution of traffic in a virtual gateway | |
KR101989333B1 (ko) | 소프트웨어 정의 네트워킹에서의 데이터 전달 방법, 기기 및 시스템 | |
US6397260B1 (en) | Automatic load sharing for network routers | |
KR101913490B1 (ko) | 플로우 테이블 관리 방법, 및 관련 디바이스 및 시스템 | |
CN102918808B (zh) | 在虚拟站接口发现和配置协议中传输虚拟局域网信息的方法 | |
US7139926B1 (en) | Stateful failover protection among routers that provide load sharing using network address translation (LSNAT) | |
US9083709B2 (en) | Virtual internet protocol migration and load balancing | |
CN111638957B (zh) | 一种集群共享式公有云负载均衡的实现方法 | |
CN104506513B (zh) | 防火墙流表备份方法、防火墙及防火墙系统 | |
CN102549983A (zh) | 分布式数据中心接入交换机 | |
CN101702657A (zh) | 一种nat业务的热备份方法和设备 | |
CN102025630A (zh) | 负载均衡方法及负载均衡系统 | |
CN104717081A (zh) | 一种网关功能的实现方法及装置 | |
CN104618243B (zh) | 路由方法、装置及系统、网关调度方法及装置 | |
CN103139075B (zh) | 一种报文传输方法和设备 | |
US20150263862A1 (en) | Communication system, control apparatus, communication control method, transfer control method, and transfer control program | |
WO2021008591A1 (zh) | 数据传输方法、装置及系统 | |
CN103441932A (zh) | 一种主机路由表项生成方法及设备 | |
PH12014502594B1 (en) | Service node switching method and system | |
CN104811383A (zh) | 一种报文转发方法和设备 | |
US9628439B2 (en) | Systems and methods for managing network address information | |
US20160277251A1 (en) | Communication system, virtual network management apparatus, communication node, communication method, and program |
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 | ||
CP03 | Change of name, title or address | ||
CP03 | Change of name, title or address |
Address after: 310052 Binjiang District Changhe Road, Zhejiang, China, No. 466, No. Patentee after: Xinhua three Technology Co., Ltd. Address before: 310053 Hangzhou hi tech Industrial Development Zone, Zhejiang province science and Technology Industrial Park, No. 310 and No. six road, HUAWEI, Hangzhou production base Patentee before: Huasan Communication Technology Co., Ltd. |
|
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20130320 Termination date: 20200604 |