IETF最近的一項研究表明,當部署擴展報頭時,發送到公網服務器的IPv6數據包丟包率在10%至50%。這種強度的過濾并不太好,這不僅阻礙了IPv6協議的后續發展,也影響了其基本功能的使用,諸如IPsec,甚或IPv6分片。
雖然從用戶角度來看這也是不可取的,不過這樣的過濾也確實是降低安全隱患和操作影響的實用之法,包括普通網絡設備和設置。為什么會這樣?有安全和操作層面的考慮,另有一些因素解釋了為什么運營商在IPv6包含有擴展報頭丟包時依舊能理直氣壯。
IPv6擴展報頭帶來的安全影響
IPv6擴展報頭的安全影響概括如下:
·逃避安全控制
·由于實施錯誤的拒絕服務
·由于處理需求產生的拒絕服務
·每個擴展報頭特有的問題
IPv6擴展報頭也有操作層面的影響,不過還好是通過當下的實施可以克服的困難。
除了一些產品無法恰當處理IPv6擴展報頭問題,安全產品本身的缺陷會允許逃避安全控制。處理這些擴展報頭相對復雜,也會導致實施錯誤,從而引發拒絕服務(DoS)攻擊。
此外,一些路由器部署只能處理慢路徑上帶有擴展報頭的數據包,這樣一來,帶有擴展報頭的IPv6數據包也可能引起處理需求帶來的DoS攻擊。最后,每個IPv6擴展報頭本身有自己的安全問題,例如,分段報頭能夠引起資源耗盡式攻擊,同時,一些路由報頭類型(如已棄用的0型)能夠引發放大式攻擊。
IPv6擴展報頭操作層面的影響
IPv6擴展報頭也有操作方面的影響,一些常見的丟包原因如下:
·強制執行基礎設施訪問控制列表(ACL)
·DDoS管理以及用戶的過濾需求
·可能無法執行等價路徑(ECMP)路由以及基于散列的負載分享
·包轉發引擎的限制
基礎設施ACL是為了濾掉一些為基礎設施認定為不需要的數據包,這些數據包于操作無益的,且能夠被用于實施對路由控制平臺的攻擊。用戶DDoS保護過濾從本質上來講與之類似,第四層ACL通常需要盡可能部署在網絡邊緣,其目的是為了保護用戶邊緣。
在ECMP負載分享情況下,路由器需要制定相關策略,確定每個輸出包使用的鏈接。大多數轉發引擎通過計算一個簡單的哈希函數來實現,計算需要使用IPv6源和目標地址以及一些四層的信息,像是源和目標傳輸協議端口號。然而,使用擴展報頭會組織轉發設備查出傳輸協議端口號。
最后,我們注意到絕大多數現代路由器使用專用硬件來實施,已經在其內部結構中決定如何轉發數據包。這樣的實施只會將有限的數據包考慮在內。因此,當一臺現代路由上的硬件轉發引擎由于關鍵信息與前述專有實施限定不匹配而無法做出轉發決定時,路由器則通常會丟棄數據包。