tilera netlib應(yīng)用層協(xié)議棧-IP層實現(xiàn)方式
Netlib的IP層實現(xiàn)了傳統(tǒng)網(wǎng)絡(luò)協(xié)議棧的主要功能:IP數(shù)據(jù)報的接收和轉(zhuǎn)發(fā)處理。接收即為將目的地址為本機的IP數(shù)據(jù)報上報到傳輸層處理,轉(zhuǎn)發(fā)即為將目的地址非本機的IP數(shù)據(jù)報根據(jù)系統(tǒng)路由信息轉(zhuǎn)發(fā)出去。下面為netlib IP層實現(xiàn)的處理流程圖:
Netlib IPv4處理模塊實現(xiàn)的功能為:
● IPV4數(shù)據(jù)包的接收處理,合法性檢查、路由、傳輸層上報
● IPv4路由表查詢引擎與維護歷程
● IPv4鄰居信息(ARP)查詢引擎和維護信息
Netlib IPv4處理模塊的架構(gòu):
● IPv4模塊在用戶空間維護路由和鄰居信息。路由表和鄰居信息表都是全局、可共享數(shù)據(jù)結(jié)構(gòu),這樣數(shù)據(jù)面和空間面都能具有訪問權(quán)限。
● 控制面基于netlink實現(xiàn)內(nèi)核路由和鄰居信息的共享機制,控制面完成路由表項和鄰居信息的添加、刪除操作。
● 數(shù)據(jù)面只會查詢路由表和鄰居信息表,并且查詢過程不需要加鎖。
路由表和鄰居信息表項刪除機制:
關(guān)于路由表和鄰居信息表項的刪除機制類似于flow table的flow entry刪除機制,刪除過程分為兩步:將表項從相應(yīng)的表中刪除、釋放表項占用的物理內(nèi)存空間。
具體刪除步驟如下
● 控制面將表項待刪除的表項指針從相應(yīng)的表中移除
● gc(garbage collector)負(fù)責(zé)釋放表項占用的內(nèi)存空間。為了能夠達到安全的釋放內(nèi)存,gc需要等待所有訪問該表項的任務(wù)(綁定到具體的tile上)完成訪問后,方能將其安全的釋放。
路由表的查詢機制:
路由表包括兩種表:Hash表和Trie表。其中,Hash表保存路由的完成信息;Trie表用于數(shù)據(jù)面查詢路由信息;路由表和鄰居表的查詢過程均不需要的任何的“鎖”機制。