天天看點

負載均衡裝置支援二層互動

最近遇到客戶的一個需求,在客戶的環境中,負載均衡裝置位置位于兩台三層交換機中間,是以在不改變環境的情況下,如果需要負載均衡功能,又需要二層以上透明傳輸,就需要開發一種新特性,支援這種組網方式

負載均衡裝置支援二層互動

根據以上背景,提出以下的功能需求:

1.通過某種配置方式,使得接口支援二層透傳
2.同時不應該影響負載均衡功能
3.支援二層的生成樹協定(STP、RSTP)
           

實作以及封包處理方式

對于交換機這種典型的二層裝置來說,要想實作二層轉發其實不難,衆所周知,交換機的轉發原理是根據MAC位址及接口資訊來做到快速轉發的,而對于負載均衡裝置這種服務于三層以上的裝置來說,暫時無法記錄MAC位址與接口關系資訊,在時間以及有限的開發資源的情況下,采用如下的方案進行解決:

1.對于SLB功能以及二層轉發實作采用“端口對”的方式,将兩個三層接口綁定為一對端口對,一個端口對上隻有且隻存在一個IP位址以及MAC位址,從端口對上的一個接口收到的封包都會轉發給另外一個接口進行透傳,同時由于存在IP位址,是以可以滿足負載均衡的需要。

portpair <primary_interface> <secondary_interface>
no portpair <primary_interface>
show portpair
clear portpair
           

2.對于生成樹協定的支援,采用FreeBSD的内部實作,允許使用者将接口放在同一個二層接口組下,同時在這些接口上使能生成樹協定。

bridge interface <bridge name> [priority] [fwddelay][maxage][stpmode]
bridge member <bridge name > <system_ifname >[ifpriority][ifpathcost]
bridge stp on <bridge name > [system_ifname]
bridge stp off <bridge name > [system_ifname]
           

無論上述那種接口方式,都采用ARP進行封包處理,整個封包處理流程如下:

負載均衡裝置支援二層互動

從上述的整個流程來看,實作的功能非常單一,但是思路和想法非常有趣,是以寫出來供參考。

繼續閱讀