本發(fā)明涉及聯(lián)網(wǎng)(networking)的領域。
背景技術:
緩存(cache)是一種組件,其透明地存儲數(shù)據(jù)以使得未來針對該數(shù)據(jù)的請求能夠更快地被服務。被存儲在緩存內(nèi)的數(shù)據(jù)可以是早先已經(jīng)被計算的值或者被存儲在其他地方的原始值的副本。如果所請求的數(shù)據(jù)被包含在緩存中(緩存命中),則這個請求能夠通過簡單地讀取緩存而被服務,這相比較而言是較快的。否則(緩存未命中),該數(shù)據(jù)必須被重新計算或者從它的原始存儲位置取來,這相比較而言是較慢的。因此,能夠從緩存被服務的請求的數(shù)目越大,總體系統(tǒng)性能就變得越快。
技術實現(xiàn)要素:
本文描述了一種轉發(fā)數(shù)據(jù)庫緩存系統(tǒng)。該轉發(fā)數(shù)據(jù)庫緩存系統(tǒng)包括主轉發(fā)數(shù)據(jù)庫以及一個或多個轉發(fā)數(shù)據(jù)庫緩存。當接收到分組時,首先搜索緩存以尋找信息,諸如地址信息,并且如果找到,則該分組被轉發(fā)到適當?shù)哪康牡?。如果在緩存中沒有找到該地址信息,則搜索主轉發(fā)數(shù)據(jù)庫,并且基于主轉發(fā)數(shù)據(jù)庫中的信息,該分組被轉發(fā)到適當?shù)哪康牡亍?/p>
在一個方面中,一種方法包括:接收包含信息的分組,搜索包含第一可搜索信息集合的緩存以尋找該信息的匹配,如果在緩存中沒有找到該信息的匹配,則搜索包含第二可搜索信息集合的存儲器以尋找該信息,以及基于該信息的匹配將該分組發(fā)送到目的地。第一信息集合被存儲在緩存中的第一轉發(fā)數(shù)據(jù)庫中,并且第二信息集合被存儲在 存儲器中的第二轉發(fā)數(shù)據(jù)庫中。第一信息集合被存儲在緩存中的多個第一轉發(fā)數(shù)據(jù)庫中,并且第二信息集合被存儲在存儲器中的第二轉發(fā)數(shù)據(jù)庫中。緩存和存儲器在相同的物理存儲器中。緩存和存儲器在不同的物理存儲器中。緩存包括多個第一物理存儲器,并且存儲器是單獨的物理存儲器。目的地包括虛擬接口或者端口。緩存內(nèi)的第一可搜索信息集合包含相比于存儲器內(nèi)的第二可搜索信息集合而言較少的可搜索信息,另外其中第一可搜索信息集合能夠從第二可搜索信息集合取回可搜索信息。該信息包括地址信息。
在另一方面中,一種系統(tǒng)包括:分組處理元件,被配置用于處理包括信息的分組;主存儲器,被配置用于存儲用以搜索尋找信息的可搜索信息;以及緩存存儲器,被配置用于存儲相比于用以搜索尋找信息的全部可搜索信息而言較少的可搜索信息的子集??伤阉餍畔⒈淮鎯υ诰彺嬷械牡谝晦D發(fā)數(shù)據(jù)庫中以及存儲器中的第二轉發(fā)數(shù)據(jù)庫中??伤阉餍畔⒈淮鎯υ诰彺嬷械亩鄠€第一轉發(fā)數(shù)據(jù)庫中以及存儲器中的第二轉發(fā)數(shù)據(jù)庫中。緩存存儲器和主存儲器在相同的物理存儲器中。緩存存儲器和主存儲器在不同的物理存儲器中。緩存存儲器包括多個第一物理存儲器,并且主存儲器是單獨的物理存儲器。處理該分組包括:將該分組轉發(fā)到包括虛擬接口或端口的目的地。該信息包括地址信息。
在又另一方面中,一種設備包括:用于存儲應用的存儲器,該應用被配置用于:接收包含信息的分組,搜索包含第一可搜索信息集合的緩存以尋找該信息的匹配,如果在緩存中沒有找到該信息的匹配,則搜索包含第二可搜索信息集合的存儲器以尋找該信息,以及基于該信息的匹配將該分組發(fā)送到目的地;以及耦合到存儲器的處理組件,該處理組件被配置用于處理該應用。第一信息集合被存儲在緩存中的第一轉發(fā)數(shù)據(jù)庫中,并且第二信息集合被存儲在存儲器中的第二轉發(fā)數(shù)據(jù)庫中。第一信息集合被存儲在緩存中的多個第一轉發(fā)數(shù)據(jù)庫中,并且第二信息集合被存儲在存儲器中的第二轉發(fā)數(shù)據(jù)庫中。緩存和存儲器在相同的物理存儲器中。緩存和存儲器在不同的物理存儲器中。 緩存包括多個第一物理存儲器,并且存儲器是單獨的物理存儲器。目的地包括虛擬接口或者端口。緩存內(nèi)的第一可搜索信息集合包含相比于存儲器內(nèi)的第二可搜索信息集合而言較少的可搜索信息,另外其中第一可搜索信息集合能夠從第二可搜索信息集合取回可搜索信息。該信息包括地址信息。
附圖說明
從以下的對如附圖中所圖示的本發(fā)明的示例實施例的更特別的描述來看,前述內(nèi)容將是明顯的,在附圖中,相似的參考字符貫穿不同的視圖指代相同的部分。這些附圖不一定按比例繪制,替代地,重點被放在說明實施例上。
圖1圖示了根據(jù)一些實施例的實施轉發(fā)數(shù)據(jù)庫緩存的設備的示圖。
圖2圖示了根據(jù)一些實施例的具有主存儲器和輔存儲器的實施轉發(fā)數(shù)據(jù)庫緩存的設備的示圖。
圖3圖示了根據(jù)一些實施例的具有主存儲器和多個輔存儲器的實施轉發(fā)數(shù)據(jù)庫緩存的設備的示圖。
圖4圖示了根據(jù)一些實施例的利用緩存的資源分配的示圖。
圖5圖示了根據(jù)一些實施例的實施轉發(fā)數(shù)據(jù)庫緩存的流程圖。
圖6圖示了根據(jù)一些實施例的被配置為實施轉發(fā)數(shù)據(jù)庫緩存方法的示例性計算設備的框圖。
具體實施方式
轉發(fā)數(shù)據(jù)庫確定輸入接口應當向其轉發(fā)分組的恰當接口。轉發(fā)數(shù)據(jù)庫被使用在聯(lián)網(wǎng)中,諸如在橋接器和路由器中。
圖1圖示了根據(jù)一些實施例的實施轉發(fā)數(shù)據(jù)庫緩存的設備的示圖。設備100包括存儲器102,存儲器102存儲主轉發(fā)數(shù)據(jù)庫104以及一個或多個較小轉發(fā)數(shù)據(jù)庫106。設備100還包括一個或多個分組處理元件120,一個或多個分組處理元件120用于處理所接收的分組, 包括搜索主轉發(fā)數(shù)據(jù)庫104以及一個或多個較小轉發(fā)數(shù)據(jù)庫106或者觸發(fā)對這些數(shù)據(jù)庫的搜索,以及基于搜索結果來發(fā)送這些分組。在一些實施例中,存在多個主轉發(fā)數(shù)據(jù)庫。主轉發(fā)數(shù)據(jù)庫104是存儲所有數(shù)據(jù)(例如,MAC地址的完整集合)的完整數(shù)據(jù)庫,而一個或多個較小轉發(fā)數(shù)據(jù)庫106僅存儲數(shù)據(jù)的部分或子集(例如,最新近被使用的信息或者基于任何其他緩存方案的信息)。一個或多個較小轉發(fā)數(shù)據(jù)庫106能夠從主轉發(fā)數(shù)據(jù)庫104取回數(shù)據(jù)(例如,在緩存未命中之后)。該數(shù)據(jù)能夠是任何數(shù)據(jù),諸如地址信息(例如,MAC地址或IPv6地址)。
例如,主轉發(fā)數(shù)據(jù)庫104以及一個或多個較小轉發(fā)數(shù)據(jù)庫106存儲地址信息,以使得在設備100接收到分組之后,設備100能夠通過搜索一個或多個較小轉發(fā)數(shù)據(jù)庫106或者主轉發(fā)數(shù)據(jù)庫104以尋找適當?shù)哪康牡?,而將這些分組恰當?shù)剞D發(fā)到它們應當去往的地方(例如,端口1或端口87)。
當接收到分組時,首先搜索較小轉發(fā)數(shù)據(jù)庫106以尋找地址,并且如果沒有找到該地址,則搜索主轉發(fā)數(shù)據(jù)庫104。在找到該地址之后,該分組相應地被轉發(fā)。在一些實施例中,諸如在系統(tǒng)能夠承受得起略微較慢的搜索時,不同于在緩存未命中時而是不時地搜索主轉發(fā)數(shù)據(jù)庫。
圖2圖示了根據(jù)一些實施例的具有主存儲器和輔存儲器的實施轉發(fā)數(shù)據(jù)庫緩存的設備的示圖。設備200包括存儲主轉發(fā)數(shù)據(jù)庫204的主存儲器202、以及存儲一個或多個較小轉發(fā)數(shù)據(jù)庫206的輔存儲器208。設備200還包括一個或多個分組處理元件220,一個或多個分組處理元件220用于處理所接收的分組,包括搜索主轉發(fā)數(shù)據(jù)庫204以及一個或多個較小轉發(fā)數(shù)據(jù)庫206或者觸發(fā)對這些數(shù)據(jù)庫的搜索,以及基于搜索結果來發(fā)送這些分組。在一些實施例中,存在多個主轉發(fā)數(shù)據(jù)庫。主轉發(fā)數(shù)據(jù)庫204是存儲所有數(shù)據(jù)的完整數(shù)據(jù)庫,而一個或多個較小轉發(fā)數(shù)據(jù)庫206僅存儲數(shù)據(jù)的部分或子集(例如,最新近被使用的信息或者基于任何其他緩存方案的信息)。一個或多個較小轉 發(fā)數(shù)據(jù)庫206能夠從主轉發(fā)數(shù)據(jù)庫204取回數(shù)據(jù)(例如,在緩存未命中之后)。該數(shù)據(jù)能夠是任何數(shù)據(jù),諸如地址信息(例如,MAC地址或IPv6地址)。
例如,主轉發(fā)數(shù)據(jù)庫204以及一個或多個較小轉發(fā)數(shù)據(jù)庫206存儲地址信息,以使得在設備200接收到分組之后,設備200能夠通過搜索一個或多個較小轉發(fā)數(shù)據(jù)庫206或者主轉發(fā)數(shù)據(jù)庫204以尋找適當?shù)哪康牡兀鴮⑦@些分組恰當?shù)剞D發(fā)到它們應當去往的地方(例如,端口1或端口87)。
當接收到分組時,首先搜索較小轉發(fā)數(shù)據(jù)庫206以尋找地址,并且如果沒有找到該地址,則搜索主轉發(fā)數(shù)據(jù)庫204。在找到該地址之后,該分組相應地被轉發(fā)。在一些實施例中,諸如在系統(tǒng)能夠承受得起略微較慢的搜索時,不同于在緩存未命中時而是不時地搜索主轉發(fā)數(shù)據(jù)庫。
在一些實施例中,主存儲器202和輔存儲器208是物理分離的。在一些實施例中,主存儲器202和輔存儲器208具有不同的速度(例如,輔存儲器208快于主存儲器202)。
圖3圖示了根據(jù)一些實施例的具有主存儲器和多個輔存儲器的實施轉發(fā)數(shù)據(jù)庫緩存的設備的示圖。設備300包括存儲主轉發(fā)數(shù)據(jù)庫304的主存儲器302、以及每個都分別存儲一個或多個較小轉發(fā)數(shù)據(jù)庫306、310、314的多個輔存儲器308、312、316。設備300還包括一個或多個分組處理元件320,一個或多個分組處理元件320用于處理所接收的分組,包括搜索主轉發(fā)數(shù)據(jù)庫304以及一個或多個較小轉發(fā)數(shù)據(jù)庫306、310、314或者觸發(fā)對這些數(shù)據(jù)庫的搜索,以及基于搜索結果來發(fā)送這些分組。在一些實施例中,存在多個主轉發(fā)數(shù)據(jù)庫。主轉發(fā)數(shù)據(jù)庫304是存儲所有數(shù)據(jù)的完整數(shù)據(jù)庫,而一個或多個較小轉發(fā)數(shù)據(jù)庫306、310、314僅存儲數(shù)據(jù)的部分或子集(例如,最新近被使用的信息或者基于任何其他緩存方案的信息)。一個或多個較小轉發(fā)數(shù)據(jù)庫306、310、314能夠從主轉發(fā)數(shù)據(jù)庫304取回數(shù)據(jù)(例如,在緩存未命中之后)。該數(shù)據(jù)能夠是任何數(shù)據(jù),諸如地址信息(例如, MAC地址或IPv6地址)。
例如,主轉發(fā)數(shù)據(jù)庫304以及一個或多個較小轉發(fā)數(shù)據(jù)庫306、310、314存儲地址信息,以使得在設備300接收到分組之后,設備300能夠通過搜索一個或多個較小轉發(fā)數(shù)據(jù)庫306、310、314或者主轉發(fā)數(shù)據(jù)庫304以尋找適當?shù)哪康牡?,而將這些分組恰當?shù)剞D發(fā)到它們應當去往的地方(例如,端口1或端口87)。
當接收到分組時,首先搜索較小轉發(fā)數(shù)據(jù)庫306、310、314以尋找地址,并且如果沒有找到該地址,則搜索主轉發(fā)數(shù)據(jù)庫304。在找到該地址之后,該分組相應地被轉發(fā)。在一些實施例中,諸如在系統(tǒng)能夠承受得起略微較慢的搜索時,不同于在緩存未命中時而是不時地搜索主轉發(fā)數(shù)據(jù)庫。在一些實施例中,主存儲器可以用比這些較小數(shù)據(jù)庫更高的時延進行操作,并且盡管具有更高的時延但是仍然維持轉發(fā)速率。
在一些實施例中,主存儲器302和多個輔存儲器308、312、316是物理分離的,并且在一些實施例中,這些存儲器中的一些存儲器是物理分離的并且一些存儲器是在一起的。在一些實施例中,主存儲器302和多個輔存儲器308、312、316具有不同的速度(例如,輔存儲器308、312、316快于主存儲器302,或者輔存儲器308快于輔存儲器312,輔存儲器312快于輔存儲器316,輔存儲器316快于主存儲器302)。
圖1、2和3的設備能夠實施任何緩存方案。在一種示例性緩存方案中,當首先啟動時(例如,當接收到第一分組時),系統(tǒng)在較小轉發(fā)數(shù)據(jù)庫中的一個較小轉發(fā)數(shù)據(jù)庫中搜索以尋找特定的MAC地址,但是該MAC地址將會沒有找到,所以搜索主轉發(fā)數(shù)據(jù)庫,該MAC地址被找到,并且然后該MAC地址被存儲在較小轉發(fā)數(shù)據(jù)庫中的一個較小轉發(fā)數(shù)據(jù)庫中(例如,直寫式(write-through)緩存)。在一些實施例中,該信息能夠推測性地從主轉發(fā)數(shù)據(jù)庫發(fā)送給較小轉發(fā)數(shù)據(jù)庫中的一個較小轉發(fā)數(shù)據(jù)庫。在一些實施例中,如果找到命中,則刪除任何推測性的條目(entry)。在一些實施例中,實施推測性讀 取和回寫式(write-back)緩存的組合。另外,能夠使用老化(aging)元件來確定哪些數(shù)據(jù)應當被移除。
能夠使用刪除陳舊條目的任何實施方式,以及能夠使用任何類型的緩存(直寫式、回寫式、繞寫式(write-around))。能夠實施任何變量和實施方式,諸如哪些數(shù)據(jù)將從緩存中移除(例如,近期最少被使用的)、以及命中比特的使用。
在一些實施例中,較小轉發(fā)數(shù)據(jù)庫獨立于彼此和/或主轉發(fā)數(shù)據(jù)庫進行操作。
在一些實施例中,這些數(shù)據(jù)庫包括與數(shù)據(jù)相關聯(lián)的標簽或者標識符,從而如果存在沖突標簽,則緩存能夠被清除。
在一些實施例中,主轉發(fā)數(shù)據(jù)庫和較小轉發(fā)數(shù)據(jù)庫被存儲在相同的物理存儲器上,并且在一些實施例中,它們被存儲在單獨的物理存儲器上。例如,較小轉發(fā)數(shù)據(jù)庫被存儲在比存儲主轉發(fā)數(shù)據(jù)庫的物理存儲器更快的物理存儲器上。在一些實施例中,小轉發(fā)數(shù)據(jù)庫每個都被存儲在單獨的物理存儲器上。在一些實施例中,存在比主轉發(fā)數(shù)據(jù)庫更大的轉發(fā)數(shù)據(jù)庫。數(shù)據(jù)庫的任何層級結構能夠被實施(例如,具有多個小數(shù)據(jù)庫的一個大數(shù)據(jù)庫,具有多個小數(shù)據(jù)庫的多個大數(shù)據(jù)庫,或者第一級數(shù)據(jù)庫、第二級數(shù)據(jù)庫到第n級數(shù)據(jù)庫)。
在一些實施例中,能夠利用任何數(shù)據(jù)結構(諸如數(shù)據(jù)庫、表格、或者任何其他數(shù)據(jù)結構)來存儲信息并且被搜索。
圖4圖示了根據(jù)一些實施例的利用緩存的資源分配的示圖。分組在分組處理元件400處被接收,并且分組處理元件400在第一級緩存402中搜索以尋找地址信息。如果在第一級緩存402中找到該地址,則分組處理元件400能夠將該分組轉發(fā)到恰當?shù)奈恢谩H绻诘谝患壘彺?02中沒有找到該地址(例如,存在第一級緩存存儲器未命中),則讀取(或搜索)第二級主存儲器404。然后,分組處理元件400基于第二級主存儲器讀取,將該分組轉發(fā)到恰當?shù)奈恢谩W鳛閺牡诙壷鞔鎯ζ?04的讀取的結果,利用新的值來更新第一級緩存402,并且其他第一級緩存402存儲器可以被無效或者被更新。
圖5圖示了根據(jù)一些實施例的實施轉發(fā)數(shù)據(jù)庫緩存的流程圖。在步驟500中,設備接收到數(shù)據(jù)分組。該數(shù)據(jù)分組包括目的地信息(例如,該分組應該去往哪個接口)。在一些實施例中,該分組由分組處理元件來處理。在步驟502中,搜索緩存中的一個或多個緩存以尋找該目的地信息。這些緩存包含轉發(fā)數(shù)據(jù)庫或表格。如果在緩存中找到該目的地信息,則在步驟504中,該分組被發(fā)送到與該目的地信息相關聯(lián)的目的地(例如,端口/流/接口/“虛擬接口”,諸如LAG、ECMP或隧道接口)。如果在緩存中沒有找到該目的地信息,則在步驟506中,搜索主轉發(fā)數(shù)據(jù)庫。當在主轉發(fā)數(shù)據(jù)庫中找到該信息時,在步驟504中,該分組被發(fā)送到與該目的地信息相關聯(lián)的目的地。在一些實施例中,在將該分組轉發(fā)到目的地之前或者期間,該分組被修改(例如,分組格式/內(nèi)容被修改以在目的地處恰當?shù)乇唤邮?。在一些實施例中,搜索尋找的信息是目的地地址,并且在一些實施例中,搜索尋找不同于目的地地址的信息。在一些實施例中,更少的步驟或者附加的步驟被實施。在一些實施例中,這些步驟的順序被修改。
圖6圖示了根據(jù)一些實施例的被配置為實施轉發(fā)數(shù)據(jù)庫緩存方法的示例性計算設備的框圖。計算設備600能夠被用來獲取、存儲、計算、處理、通信、接收、發(fā)送、和/或顯示信息,諸如數(shù)據(jù)分組。一般而言,適合用于實施計算設備600的硬件結構包括網(wǎng)絡接口602、存儲器604、處理器606、(多個)I/O設備608、總線610、以及存儲設備612。只要選取了具有足夠速度的(多個)適合的處理器,對(多個)處理器的選取并不是關鍵的。存儲器604能夠是本領域中已知的任何常規(guī)的計算機存儲器。存儲設備612能夠包括存儲器、硬驅動器、CDROM、CDRW、DVD、DVDRW、高清晰度盤/驅動器、超HD驅動器、閃存卡、或者任何其他存儲設備。計算設備600能夠包括一個或多個網(wǎng)絡接口602。網(wǎng)絡接口的示例包括網(wǎng)絡接口控制器或者連接到以太網(wǎng)或其他類型的局域網(wǎng)(LAN)的網(wǎng)卡。(多個)I/O設備608能夠包括以下一項或多項:鍵盤、鼠標、監(jiān)視器、屏幕、打印機、調(diào)制解調(diào)器、觸摸屏、按鈕接口、以及其他設備。被用來執(zhí)行轉發(fā)數(shù)據(jù) 庫緩存方法的(多個)轉發(fā)數(shù)據(jù)庫緩存應用630可以被存儲在存儲設備612和存儲器604中,并且如應用通常被處理的那樣被處理。圖6中所示出的更多或更少的組件能夠被包括在計算設備600中。在一些實施例中,轉發(fā)數(shù)據(jù)庫緩存硬件620被包括。盡管圖6中的計算設備600包括用于轉發(fā)數(shù)據(jù)庫緩存方法的應用630和硬件620,但是轉發(fā)數(shù)據(jù)庫緩存方法能夠以硬件、固件、軟件、或它們的任何組合被實施在計算設備上。例如,在一些實施例中,轉發(fā)數(shù)據(jù)庫緩存應用630被編程在存儲器中并且使用處理器被執(zhí)行。在另一示例中,在一些實施例中,轉發(fā)數(shù)據(jù)庫緩存硬件620是包括門的經(jīng)編程的硬件邏輯,這些門專門被設計為實施轉發(fā)數(shù)據(jù)庫緩存方法。
在一些實施例中,(多個)轉發(fā)數(shù)據(jù)庫緩存應用630包括若干應用和/或模塊。在一些實施例中,這些模塊也包括一個或多個子模塊。在一些實施例中,能夠包括更少的模塊或附加的模塊。
適合的計算設備的示例包括服務器、個人計算機、膝上型計算機、移動設備(例如,智能電話)、網(wǎng)絡交換機、路由器、集線器、任何其他聯(lián)網(wǎng)裝備、以及任何其他計算設備。
為了利用轉發(fā)數(shù)據(jù)庫緩存,交換機或者其他設備被配置為實施包括主轉發(fā)數(shù)據(jù)庫的轉發(fā)數(shù)據(jù)庫緩存、以及一個或多個轉發(fā)數(shù)據(jù)庫緩存。當接收到分組時,首先搜索緩存以尋找信息,諸如地址信息,并且如果找到,則該分組被轉發(fā)到適當?shù)哪康牡亍H绻诰彺嬷袥]有找到該地址信息,則搜索主轉發(fā)數(shù)據(jù)庫,并且基于主轉發(fā)數(shù)據(jù)庫中的信息,該分組被轉發(fā)到適當?shù)哪康牡亍?/p>
在操作中,數(shù)據(jù)庫的性能和大小通過轉發(fā)數(shù)據(jù)庫緩存來進行平衡。每秒可能存在數(shù)十億的搜索,并且比率將保持上升。改進性能是一個目標,但是使得能夠伸縮(例如,允許數(shù)據(jù)庫的大小增長)也是重要的。還存在要應對的物理約束(例如,裸片(die)的大小)。轉發(fā)數(shù)據(jù)庫緩存化解了擁塞。數(shù)據(jù)的局部化幫助緩解了一些擁塞問題。
完全分布式/局部化的存儲器架構在基于轉發(fā)數(shù)據(jù)的伸縮上具有限制。混合轉發(fā)緩存架構能夠幫助減輕(如果沒有解決的話)這些問 題中的許多問題。如所描述的,任何緩存方案都能夠被實施,諸如在級別1緩存中緩存最新近使用或最繁忙使用的條目,并且緩存在污濁時(on dirty)被清除或者從級別2主存儲器寫入。
通過實施轉發(fā)數(shù)據(jù)庫緩存,最新近的轉發(fā)條目被局部化在對分組處理引擎而言為本地的級別1緩存中。搜索在級別1緩存中以高速率被執(zhí)行。如果發(fā)生未命中,則在主級別2存儲器上執(zhí)行搜索。讀取發(fā)生在具有變化的代替策略的直寫時。級別2存儲器讀取有更大的時延,但是這可以利用推測性讀取來減少。其他級別1存儲器檢查污濁條目并且將它們標記為無效。
已經(jīng)按照具體的實施例描述了本發(fā)明,這些具體的實施例并入了用以促進理解本發(fā)明的構造和操作的原理的細節(jié)。本文中對具體實施例和它們的細節(jié)的這種參考不意圖為將所附權利要求的范圍限制于此。對本領域的技術人員將容易明顯的是,不偏離如由權利要求所定義的本發(fā)明的精神和范圍,可以在被選取用于說明的實施例中作出其他各種修改。