Egress Pipe配置使用
出口路徑對(duì)每個(gè)數(shù)據(jù)包執(zhí)行以下步驟:
1.解析數(shù)據(jù)包(提取DA、SA、VLAN、MACsec報(bào)頭、專有報(bào)頭和以太類型)
2.根據(jù)以太網(wǎng)類型匹配表匹配以太網(wǎng)類型(二層payload類型);
3.查找包(匹配上述任何/所有L2字段,在命中時(shí)返回上下文編號(hào))
4.檢索上下文(包含要對(duì)數(shù)據(jù)包執(zhí)行的操作,以及MACsec標(biāo)記的內(nèi)容)
5.重寫包(插入/替換MACsec標(biāo)簽,刪除專有報(bào)頭)
6.加密數(shù)據(jù)包(使用合適的密鑰加密)
7.驗(yàn)證數(shù)據(jù)包(使用適當(dāng)?shù)纳⒘忻荑€計(jì)算數(shù)據(jù)包的ICV,并在驗(yàn)證/加密結(jié)束后插入)
這些步驟由具有分離的控制/數(shù)據(jù)路徑的流水邏輯實(shí)現(xiàn),如圖45所示。這張圖顯示了三種類型的功能單元。引擎是管道中直接處理每個(gè)數(shù)據(jù)包的單元。引擎具有最小的配置,并且它們的配置信息由靜態(tài)值組成,例如Ethertypes。緩沖區(qū)用于吸收由各種引擎處理引入的延遲。表包含大多數(shù)控制信息和處理所需的所有動(dòng)態(tài)信息。
Ethertype match table
以太類型匹配表在出接口和入接口之間共享,包含8種以太類型,可以與數(shù)據(jù)包解析器找到的內(nèi)部以太類型進(jìn)行匹配??梢酝ㄟ^配置寄存器(et_m0, et_m1, et_m2, et_m3)來編程8種以太類型。如果內(nèi)部以太類型匹配以太類型匹配表中的一個(gè)已啟用的條目(由et_match_ctl的etm_egr_en位啟用),則數(shù)據(jù)包將:
1.被丟棄,或者
2.根據(jù)et_match_ctl的etm_eg_drop或etm_rmv_hdr位的設(shè)置,專有頭將從包的前面刪除。如果兩個(gè)位都為零,數(shù)據(jù)包將被繞過(be bypassed)。此表的優(yōu)先級(jí)高于查找表——任何與已啟用條目匹配的數(shù)據(jù)包都不會(huì)在查找表中查找。與Ethertype匹配表匹配的數(shù)據(jù)包將被LinkCrypt統(tǒng)計(jì)為“miss”數(shù)據(jù)包。
Lookup table 查找表
查找表是出口管道中數(shù)據(jù)包的主要決策點(diǎn)。該表是一個(gè)32條目的優(yōu)先級(jí)查找表,其功能類似于CAM。該表包含MAC DA、MAC SA、VLAN、ethertype和header match字段,以及每個(gè)字段的使能位。該表還包含一個(gè)默認(rèn)匹配位,因此搜索到具有默認(rèn)設(shè)置的條目將始終匹配該條目。
查找表的輸出是一組動(dòng)作(刪除、認(rèn)證、加密、刪除頭,請(qǐng)參閱出口查找表動(dòng)作位Egress Look Up Table),以及一個(gè)上下文條目的索引,如果要對(duì)數(shù)據(jù)包進(jìn)行身份驗(yàn)證或加密,將使用該索引。丟棄數(shù)據(jù)包與認(rèn)證/加密動(dòng)作是互斥的。
數(shù)據(jù)包VLAN取自數(shù)據(jù)包中出現(xiàn)的第一個(gè)802.1q標(biāo)簽(如果出現(xiàn)),如果啟用了parse_macsec,則取自MACsec標(biāo)簽之后的第一個(gè)802.1q標(biāo)簽。如果解析器沒有找到1q標(biāo)記,將使用缺省VLAN寄存器(cfg_default_vlan)中的VLAN值執(zhí)行查找。
如果數(shù)據(jù)包不匹配Ethertype match表或查找表,則根據(jù)egr_gen的def_drop和def_rmv_hdr位采取默認(rèn)操作。
上電后,查找表自動(dòng)清除。出口和入口查找表可以使用slice reset_ctl寄存器的tbl_init位重新初始化。
Context and Key tables
上下文表(Egress context Table)和密鑰表(Encrypt key Table和Egress Hash key Table)包含對(duì)報(bào)文進(jìn)行封裝、加密和認(rèn)證所需的信息。上下文表包含創(chuàng)建MACsec報(bào)頭所需的信息。這些信息被提供給重寫引擎(它實(shí)際執(zhí)行插入)和加密引擎(它使用這些信息形成nonce)。
Egress Context Table
加密和散列密鑰表包含執(zhí)行加密和身份驗(yàn)證所需的密鑰。加密密鑰為AES計(jì)數(shù)器模式使用的128位AES密鑰。哈希密鑰是一個(gè)128位密鑰,通過對(duì)加密密鑰和數(shù)據(jù)值0執(zhí)行AES操作而得到加密密鑰。
上下文號(hào)不僅指上下文表中的條目號(hào),還指加密密鑰表和散列密鑰表中的條目。例如,引用上下文#2的查找條目將使用加密密鑰#2和散列密鑰#2。上下文表還包含將與下一個(gè)數(shù)據(jù)包一起傳輸?shù)腜N值(ectx0_2)。該P(yáng)N值在每個(gè)數(shù)據(jù)包發(fā)送后自動(dòng)增加。如果啟用了drop_max_pn,則傳輸數(shù)據(jù)包的編號(hào)將圍繞并保持在PN 0。一旦PN計(jì)數(shù)器達(dá)到0,它就不會(huì)增加。該pn0報(bào)文和所有后續(xù)到達(dá)該表項(xiàng)的報(bào)文將被丟棄。如果禁用drop_max_pn,則PN將繞圈,數(shù)據(jù)包將從PN=1開始傳輸(跳過PN=0)。允許PN計(jì)數(shù)器達(dá)到零值被認(rèn)為是一個(gè)錯(cuò)誤條件,并且將設(shè)置pn_full中斷。當(dāng)任何一個(gè)PN計(jì)數(shù)器超過3/4滿閾值時(shí),就會(huì)設(shè)置第二個(gè)中斷。
配置Egress Pipe
出口管道的操作主要由圖45中所示的四個(gè)表控制。管道從左到右訪問這些表(查找散列鍵),因此在配置期間,它們以相反的順序(從右到左)進(jìn)行更改。順序?yàn)?
1. Disable lookup entry
2. Program hash key
3. Program encrypt key
4. Program context
5. Program lookup entry
6. Enable lookup entry
要禁用查找項(xiàng)(lookup entry),只需要寫入最高的單詞。對(duì)于所有其他表項(xiàng)entry,表項(xiàng)應(yīng)該從最低地址寫到最高地址(word0àword3)。完成此操作后,步驟#5和#6可以結(jié)合使用,因?yàn)椴檎翼?xiàng)中的啟用位位于寫入的最后一個(gè)單詞中。
-
以太網(wǎng)
+關(guān)注
關(guān)注
40文章
5443瀏覽量
172086 -
VLAN
+關(guān)注
關(guān)注
1文章
279瀏覽量
35702 -
數(shù)據(jù)包
+關(guān)注
關(guān)注
0文章
265瀏覽量
24418
原文標(biāo)題:88E1548P MACSec使用(2)--Egress Pipe
文章出處:【微信號(hào):數(shù)字芯片設(shè)計(jì)工程師,微信公眾號(hào):數(shù)字芯片設(shè)計(jì)工程師】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論