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