問物; 在二層交換機環境下(xià),當通信雙方持續交黃低互數據時,會不斷命中(zhōng)雙方主機的MAC轉發表項,使其處于家煙一(yī)個熱狀态。當某一(yī)主機長時間不與外(wà船上i)界聯系時,該主機的MAC轉發表項就會長時間不被使用,其爲冷狀态。MAC通兒地址老化意思就是MAC轉發表項長時間不用到,觸發老化機制将其從表項中(錢草zhōng)清除。表項到底要到多冷的狀态,具體(tǐ)是多長們銀時間不用到才被老化,這個時間叫做老化時間。
M輛金AC地址爲什麽要老化?要做老化的主要原因是MAC轉發表項不夠用,換更大(員土dà)容量則比較費(fèi)錢。産品在有限的資(zī)源下(xi地信à)總是想幹點更大(dà)的事情。出發點是好的,現理議實也是允許的。交換機允許做老化是跟他的應用場景、網絡通信模型相關的。流量交上公互越密集、節點分(fēn)布越離(lí)散對MAC煙場轉發表的容量要求越大(dà),反之容量可以較拿雨小(xiǎo)。老化就是在容量和時間的兩個維度上做出的一(yī)種優化策略,核體海心是一(yī)種對成本的優化考慮。将理論的容量大(dà)小(xiǎ答老o)縮減,調整老化的時間長短,使其達到一(yī)個湖慢均衡穩定狀态。這一(yī)狀态是指網絡的通信服務質量是可被接受的。一(y呢草ī)味的調小(xiǎo)轉發表容量和縮短老化時間,會讓網絡通信內兵産生(shēng)不可容忍的服務質量。故在在舊不同的應用場景下(xià),交換機的MAC轉發表容量不同秒理、老化時間也不盡相等。
&nbs要船p; MAC地址老化是以時間爲參考進行處理的街黃,故在MAC轉發表字段中(zhōng)需要新設置時間戳理愛字段,用以記錄MAC轉發表項的最新使用時間。MAC轉發表項的定義修改如下(x藍服ià):
struct row_port_mac
議新
{
 靜女; u8 port;
行樹
u8 p鄉雜ad;/*内存對齊*/
u白美8 mac[MAC_LEN];
錢門 struct timeval tv;/*記錄MAC最新更新時間鄉來*/
}
&著不nbsp;1)老化方法
煙唱每次MAC查表命中(zhōng)都要進行MAC表項的時間更紅議新,MAC轉發表的老化要根據表項的更新時間來判斷,與當前用舊檢查時間相比較,如果超過了預先設定的閥值則将該表報老項老化。老化在交換機中(zhōng)的具體(tǐ)實現是怎都男樣的?以下(xià)講述兩種方法。一(yī)種是傳統文土較好理解的老化線程方法;另一(yī)種是本平台實現場景下(xià)的最大(d章老à)化資(zī)源優化方法——X方法。
年快
 個一;老化線程的方法是指,通過啓動額外(wài)的專門線程,負新空責掃描整個MAC轉發表,逐項比較表項時間是否什舞達到老化要求,從而做出正确的老化行爲。該方法知一的實現方法即是線程循環、遍曆表項、比較時間、清除表項、休眠、進入下(xià愛動)次循環。該方法實現簡單,也比較适合硬件實現遠理。
上和X方法是指不采用額外(wài)線程輪詢遍曆的方式實現老化,那不遍曆,不美讀判斷如何才能老化呢?這就是前面定語描述的鄉醫,在本平台實現場景下(xià)的實現基礎上完成老化功能。我(wǒ)(wǒ)雜近們可以回顧一(yī)下(xià),前面的二層交換功能中(zhōng術文)的MAC地址學習過程。将新MAC地址學習與查找匹是玩配優化到了一(yī)起實現,這一(yī)實現過程中(zhōng)農科其實就存在遍曆與判斷的邏輯,那我(wǒ)(wǒ)們隻要将此功能稍加調整,便下物可實現老化功能。核心實現方法如下(xià):
&nbs學如p; a. 在MAC學習查找章唱過程中(zhōng),匹配到表項則更新時間;
 為照; b. 未匹配時,負責查找一(yī)個未使用空間黑鐘時的判斷改爲尋找一(yī)個使用時間超過閥值的判斷。
&nbs訊如p;1)老化代碼實現
&煙年nbsp;老化判斷函數,老化時間用戶可自己定義大(dà高藍)小(xiǎo)。
#define AGING_TIME 30 /*動能老化超時時間長度,單位秒*/
int aging_match(int idx,struct 機雪timeval *now)
{
&n家可bsp; return obx_mac_tbl->長唱row[idx].tv.tv_sec + AGING_TIME厭器 < now->tv_sec;
}
&n說匠bsp;修改MAC學習與查找功能,将原來的查找空MAC表項改爲查找可老化表項,體現如果表項是空,則其時間字段爲零,也會是需要被老化的表項。
/*else if(j == -1 && !ethe站聽r_addr_equal((u8 *)&z什風ero_mac,obx_mac_tbl->row[i].ma亮員c))*/
else if(j == -1 && agi間什ng_match(i,&now))
{
&n門筆bsp; j = i;/*記錄第一(能村yī)個可老化表項位置*/
&他從nbsp; /*記錄第一(yī)個找到爲空白(bái)表項厭習位置*/
}
&n費生bsp;上述老化有何優勢?不需要額外(wài)的線程資(zī)源,不需要請錢更多的輪詢遍曆所有MAC表項。通過轉發過程中(zhōng)觸發式的完做她成老化功能。有數據交換了,進入到該MAC學習流程,若匹配上了,則更新時間森木返回;若沒有匹配上MAC地址,則最壞情況是全表遍曆并找到一(yī)個老化表媽購項。
我(wǒ)(wǒ服跳)們并不是要突出該方法的好處,真實的硬件也不會這麽實業愛現。但在一(yī)個抽象的環境中(zhōng),方案應該具備普适性,而喝廠在面向一(yī)個具體(tǐ)的場景時,方法可具那報特異性,這樣就可以使解決方案更符合場景需求,達東姐到最優解狀态。
1)端口慢理斷開(kāi)對老化影響
&nb下高sp;MAC表老化除了表項不夠用外(wài)還有一門見(yī)種情況就是端口發生(shēng)變化,如從UP狀态變成DOW章熱N狀态,發生(shēng)的原因有多種。但最壞的情況是原來連接到端制慢口的網絡可能會發生(shēng)變化,如用戶将快事網絡連接端口進行了更換。由此帶來的問題的,基于原來的端口轉發表項全部會失效或地著帶來錯誤,會嚴重影響網絡的通信。雖然切換端口會影響網絡,但如照開果不做端口老化,則會延長影響時間。故在交換機的端口發生(shēng)DOW習城N的事件後,必須将該端口轉發輸出的所有MAC表項内容清除,全部老化掉。對票
 音場; 2)MAC轉發相年表硬件卸載
&nb拿自sp;二層交換機的基本設計基本上隻講到這爲止,但這畢竟隻是一(y水自ī)個軟件的二層交換,其性能無法達到我(wǒ)(wǒ)們真實場景測嗎妹試驗證的要求。FAST架構是一(yī)個平台無關的軟硬件協票坐同處理架構,在FAST架構下(xià),我(wǒ)體生(wǒ)們可以非常容易的将MAC轉發表卸載到硬件實現。由軟動鐘件實現MAC地址的學習,然後将其配置到硬件流表,後續該MAC家黃地址的分(fēn)組便可直接在硬件完成交換功能,從而可以達到線速轉發能力。下(懂慢xià)一(yī)篇文件我(wǒ)(wǒ)們将講述如何在FAST架習離構下(xià)将二層交換的MAC轉發表卸載到硬件。
鐘水
歡迎您和學生(shēng)們加入FAST開(kāi)源項為公目群溝通與探讨,一(yī)起體(tǐ)驗不一(yī)樣的電器系統設計過程。請先加微信号1511612720知場0後邀請入群。
關注FAST開(kāi)源社區
FAST一(yī)一(yī)開(kāi)源、開(k他兒āi)放(fàng)、高速、高效、可編程、可定東紅義!軟硬件協同并行處理。