利用可變關鍵字大小的精確匹配查找的制作方法
【專利說明】利用可變關鍵字大小的精確匹配查找
[0001]相關串請的交叉引用
[0002]本申請要求于2013年4月11日提交的題為“Exact Match with Variable KeySizes”的美國臨時申請N0.61/811011以及于2014年I月2日提交的題為“Exact Matchwith Variable Key Sizes”的美國臨時申請N0.61/923093的權益,其公開通過引用結合于此。
[0003]本申請涉及于2012年8月31日提交的題為“Method and Apparatus For TCAMBased Lookup”的美國專利申請N0.13/966962,于2013年I月9日提交的題為“Exact MatchLookup In Network Switch Device” 的美國專利申請 N0.13/737608,以及于 2013 年 8 月28 日提交的題為“Exact Match Hash Lookup Databases in Network Switch Devices”的美國專利申請N0.14/012834,上述申請的公開通過引用結合于此。
技術領域
[0004]本公開總體上涉及網絡設備,更特別地涉及網絡設備中的精確匹配查找。
【背景技術】
[0005]諸如網絡交換機、橋接器、路由器、邊緣設備等的網絡設備經常采用存儲與該網絡設備所處理的分組相關聯(lián)的各種類型的信息的查找表。該網絡設備在處理分組時經常在查找表中執(zhí)行搜索/查找以作出各種處理決策或確定(例如,對分組歸類,要將分組轉發(fā)至哪個端口,等等)。通常,針對分組的查找根據與該分組相關聯(lián)的關鍵字來執(zhí)行。該關鍵字通常包括來自該分組的報頭的信息,而且有時包括可能并未包括在報頭中的其它信息,諸如進入接口。該關鍵字例如被用來搜索表格,并且有關該分組的信息(例如,該分組的轉發(fā)信息或者指示一些其它動作的信息)從被該關鍵字所標識的表格條目所獲取。
[0006]一些查找表使用內容可尋址存儲器(CAM)(例如,三元CAM(TCAM)),其一般被用于“屏蔽”搜索/查找。然而,近年來,網絡設備越來越多地開始執(zhí)行“精確匹配”查找。雖然基于CAM的表格可以被用于精確匹配查找,但是與基于隨機訪問存儲器(RAM)的表格一諸如使用靜態(tài)RAM(SRAM)所實施的表格一相比,它們通常對于這樣的查找不太有效(例如,在面積和功耗方面)。精確匹配查找目前被用來執(zhí)行任意多種不同的分組處理操作,諸如分組歸類、作出轉發(fā)或路由決策、服務質量歸類、策略控制列表應用、隧道終止操作等。此外,由于各種各樣的可能處理操作,精確匹配查找可能要去使用具有不同關鍵字大小的多種不同類型的關鍵字。例如,典型地,基于介質訪問控制(MAC)地址和虛擬局域網(VLAN)標識符的橋接查找使用60位的關鍵字,而針對IPv4地址的查找使用32位的關鍵字,針對IPv6地址的路由的查找則使用128位的關鍵字,等等。為了應對各種關鍵字大小,一些常規(guī)的網絡設備將所有較短關鍵字補充為最大的所支持關鍵字大小的位長度,或者提供存儲在不同存儲器中的單獨查找表,其中每個表格僅由單一固定大小的關鍵字進行索引。然而,這兩種技術通常在存儲器資源的利用方面都是低效的,這最終會增大電路面積和/或功耗。例如,就前者的技術而言,即使相對短的關鍵字也占據與長關鍵字相同數量的查找表存儲器。此外,由于每個表格/關鍵字大小將需要的條目數量和/或關鍵字大小的分布通常并非是事先已知的,所以使用后者的技術的系統(tǒng)設計人員通常無法確定將有效利用查找存儲器資源的每查找表/關鍵字大小的條目數量。
【發(fā)明內容】
[0007]在一個實施例中,一種用于在網絡設備中執(zhí)行精確匹配查找的方法,包括在該網絡設備接收網絡分組;至少基于所接收到的網絡分組的報頭中所包括的數據確定該網絡分組的查找關鍵字;至少基于該查找關鍵字的大小從多個可能散列函數中選擇一個散列函數;使用所選擇的散列函數對該查找關鍵字執(zhí)行散列操作以計算散列查找關鍵字分段;并且使用該散列查找關鍵字分段來查詢數據庫以提取出精確地對應于該查找關鍵字的數值。
[0008]在另一個實施例中,一種網絡設備包括多個接口、存儲數據庫的查找存儲器、以及耦合至該多個接口的分組處理器。該分組處理器被配置為對經由該多個接口中的至少一些所接收的網絡分組進行處理,并且包括關鍵字生成單元,關鍵字生成單元被配置為至少基于所接收到的網絡分組的報頭中所包括的數據確定經由該多個接口之一所接收到的網絡分組的查找關鍵字。該分組處理器還包括關鍵字搜索單元,其被配置為至少基于該查找關鍵字的大小從多個可能散列函數中選擇一個散列函數,使用所選擇的散列函數對該查找關鍵字執(zhí)行散列操作以計算散列查找關鍵字分段,并且使用該散列查找關鍵字分段來查詢數據庫以提取出精確地對應于該查找關鍵字的數值。
[0009]在另一個實施例中,一種用于在網絡設備中執(zhí)行精確匹配查找的方法,包括在該網絡設備接收網絡分組;至少基于所接收到的網絡分組的報頭中所包括的數據確定該網絡分組的查找關鍵字;使用兩個或更多散列函數對該查找關鍵字執(zhí)行兩個或更多散列操作以計算兩個或更多散列查找關鍵字分段;并且使用該兩個或更多散列關鍵字分段來查詢在兩個或更多存儲器組之間進行分布的數據庫以提取出精確地對應于該查找關鍵字的數值。查詢該數據庫包括使用該兩個或更多散列查找關鍵字分段來訪問該兩個或更多存儲器組以標識兩個或更多匹配分段;獲取與該兩個或更多匹配分段中的至少一個相關聯(lián)的至少一個指針;并且使用該至少一個指針將匹配分段中的至少兩個進行組合以標識該數據庫中的匹配條目,精確地對應于該查找關鍵字的數值是與該匹配條目相關聯(lián)的數值。
[0010]在另一個實施例中,一種網絡設備包括多個接口、存儲在兩個或更多存儲器組之間進行分布的數據庫的查找存儲器,以及耦合至該多個接口的分組處理器。該分組處理器被配置為對經由該多個接口中的至少一些所接收的網絡分組進行處理。該分組處理器包括關鍵字生成單元和關鍵字搜索單元,關鍵字生成單元被配置為至少基于所接收到的網絡分組的報頭中所包括的數據確定經由該多個接口之一所接收到的網絡分組的查找關鍵字。該關鍵字搜索單元被配置為使用兩個或更多散列函數對該查找關鍵字執(zhí)行兩個或更多散列操作以計算兩個或更多散列查找關鍵字分段,并且使用該兩個或更多散列關鍵字分段來查詢該數據庫以提取出精確地對應于該查找關鍵字的數值。該關鍵字搜索單元被配置為至少通過使用該兩個或更多散列查找關鍵字分段來訪問該兩個或更多存儲器組以標識兩個或更多匹配分段,獲取與該兩個或更多匹配分段中的至少一個相關聯(lián)的至少一個指針,并且使用該至少一個指針將匹配分段中的至少兩個進行組合以標識該數據庫中的匹配條目來查詢該數據庫,精確地對應于該查找關鍵字的數值是與該匹配條目相關聯(lián)的數值。
[0011]在另一個實施例中,一種用于在網絡設備中填充精確匹配查找表的方法,包括確定要存儲在該網絡設備的數據庫中的查找關鍵字,該數據庫在兩個或更多存儲器組之間進行分布。該方法還包括至少基于該查找關鍵字的大小(i)從該兩個或更多存儲器組之間選擇第一存儲器組,并且(ii)從多個可能散列函數中選擇一個散列函數,使用所選擇的散列函數對該查找關鍵字執(zhí)行散列操作以計算第一散列查找關鍵字分段,將該第一散列查找關鍵字分段存儲在所選擇的第一存儲器組中,并且將對應于該查找關鍵字的一個或多個散列查找關鍵字分段存儲在該兩個或更多存儲器組中的一個或多個后續(xù)存儲器組中。
[0012]在另一個實施例中,一種網絡設備包括多個接口、存儲在兩個或更多存儲器組之間進行分布的數據庫的查找存儲器、以及耦合至該多個接口的分組處理器。該分組處理器被配置為對經由該多個接口中的至少一些所接收的網絡分組進行處理。該分組處理器包括關鍵字生成單元以及關鍵字插入單元,關鍵字生成單元被配置為至少基于所接收到的網絡分組的報頭中所包括的數據確定經由該多個接口之一所接收到的網絡分組的查找關鍵字。該關鍵字插入單元被配置為至少基于該查找關鍵字的大小(i)從該兩個或更多存儲器組之間選擇第一存儲器組,并且(ii)從多個可能散列函數中選擇一個散列函數,使用所選擇的散列函數對該查找關鍵字執(zhí)行散列操作以計算第一散列查找關鍵字分段,將該第一散列查找關鍵字分段存儲在所選擇的第一存儲器組中,并且將對應于該查找關鍵字的一個或多個散列查找關鍵字分段存儲在該兩個或更多存儲器組中的一個或多個后續(xù)存儲器組中。
[0013]在另一個實施例中,一種用于在網絡設備中填充精確匹配查找表的方法,包括確定要存儲在該網絡設備的數據庫中的查找關鍵字,該數據庫在兩個或更多存儲器組之間進行分布。該方法還包括使用兩個或更多散列函數對該查找關鍵字執(zhí)行兩個或更多散列操作以計算兩個或更多散列查找關鍵字分段,至少包括使用第一散列函數計算第一散列查找關鍵字分段,并且使用第二散列函數計算第二散列查找關鍵字分段。該方法還包括將該第一散列查找關鍵字分段存儲在該兩個或更多存儲器組中的第一存儲器組中,將該第二散列查找關鍵字分段存儲在該兩個或更多存儲器組中的第二存儲器組中,并且將指針與該第一散列查找關鍵字分段相關聯(lián),該指針指示該第二散列查找關鍵字分段在該第二存儲器組中的位置。
[0014]在另一個實施例中,一種網絡設備包括多個接口,以及存儲在兩個或更多存儲器組之間進行分布的數據庫的查找存儲器。該兩個或更多存儲器組至少包括第一存儲器組和第二存儲器組。該網絡設備還包括耦合至該多個接口的分組處理器。該分組處理器被配置為對經由該多個接口中的至少一些所接收的網絡分組進行處理。該分組處理器包括關鍵字生成單元和關鍵字插入單元,該關鍵字生成單元被配置為至少基于所接收到的網絡分組的報頭中所包括的數據確定經由該多個接口之一所接收到的網絡分組的查找關鍵字。該關鍵字插入單元被配置為至少通過使用第一散列函數計算第一散列查找關鍵字分段,并且使用第二散列函數計算第二散列查找關鍵字分段而使用兩個或更多散列函數對該查找關鍵字執(zhí)行兩個或更多散列操作以計算兩個或更多散列查找關鍵字分段。該關鍵字插入單元還被配置為將該第一散列查找關鍵字分段存儲在第一存儲器組中,將該第二散列查找關鍵字分段存儲在第二存儲器組中,并且將指針與該第一散列查找關鍵字分段相關聯(lián),該指針指示該第二散列查找關鍵字分段在該第二存儲器組中的位置。
【附圖說明】
[0015]圖1是根據一個實施例的利用多散列查找表執(zhí)行各種查找操作的示例網絡設備的框圖。
[0016]圖2是根據一個實施例的被用來依據第一精確匹配查找技術存儲圖1的多散列查找表的示例存儲器組的框圖。
[0017]圖3是根據一個實施例的被用來依據第二精確匹配查找技術存儲圖1的多散列查找表的示例存儲器組的框圖。
[0018]圖4是根據一個實施例的用于使用第一技術執(zhí)行精確匹配查找的示例方法的流程圖。
[0019]圖5是根據一個實施例的用于使用第一技術填充精確匹配查找表的示例方法的流程圖。
[0020]圖6是根據一個實施例的用于使用第二技術執(zhí)行精確匹配查找的示例方法的流程圖。
[0021]圖7是根據一個實施例的用于使用第二技術填充精確匹配查找表的示例方法的流程圖。
【具體實施方式】
[0022]在以下所描述的實施例中,具有不同大小(例如,位長度)的查找關鍵字被有效存儲在統(tǒng)一存儲器(例如,存儲器組的共用集合)之中而并不要求較短的關鍵字被補充至最長所支持關鍵字的長度。在這些實施例中的一些中,多散列、精確匹配查找表跨多個存儲器組進行分布。在一個實施例中,每個存儲器組或者多個存儲器組的一個或多個群組中的每一個使用不同的散列函數進行訪問(例如,用于填充或搜索存儲在(多個)組中的查找表的一部分)。根據第一精確匹配查找技術,在一個實施例中,散列表根據關鍵字大小進行定義,其中每個散列表是使用單個散列函數進行訪問(為了關鍵字插入和關鍵字搜索)的一個或多個存儲器組的虛擬/邏輯分組。在這些實施例中的一些中,并且受到表格條目的可用性的影響,具有最小大小的關鍵字能夠被插入到對應于存儲器組的散列表中,而較大的關鍵字則能夠被插入到對應于兩個或更多存儲器組的連續(xù)分塊的散列表中。在一些實施例中,對應于較大關鍵字的每個散列表基于關鍵字大小而被限制為存儲器組的特定集合,并且用來訪問散列表的特定散列函數取決于采用哪個存儲器組的集合。在一個實施例中,例如,每個散列表使用與對應于該散列表的一個或多個存儲器組的分組中的第一存儲器組相關聯(lián)的散列函數進行訪問。
[0023]在一個實施例中,根據第二精確匹配查找技術,較大關鍵字能夠以更為靈活的方式被插入到各個存儲器組中(例如,并不被限制為存儲器組的連續(xù)分塊),其中指針被用來指示不同存儲器組中的各個散列關鍵字分段之間的關聯(lián)。在一個這樣的實施例中,查找通過如下方法來執(zhí)行:利用對應于每個存儲器組的散列函數對較大關鍵字進行散列,標識該存儲器組中的任意匹配分段,并且使用與該匹配分段相關聯(lián)的一個或多個指針(以及其它信息,在一些實施例中,諸如分段數量和/或關鍵字大小)重構針對該較大關鍵字提供精確匹配的適當條目。
[0024]圖1是根據一個實施例的利用這里所描述的可變關鍵字大小的查找技術的示例網絡設備10的高度簡化框圖。網絡設備10通常是連接兩個或更多計算機系統(tǒng)、網絡分段、子網等的計算機聯(lián)網設備。在各個實施例中,網絡設備10是橋接設備、路由器設備、交換機設備,或者被配置為在聯(lián)網環(huán)境內進行操作的任意其它適當網絡設備。圖1的實施例中所示的網絡設備10包括端口