好像會大幅下降?


CPU進程轉發

IP報文到達入介面,轉交給軟體轉發進程,查詢路由表,找到對應出口及下一跳IP,查詢下一跳MAC,完成二層封裝,從出口發送出去。

硬體快速轉發

IP 報文到達入介面,硬體晶元查詢硬體轉發表,獲得對應出口及二層封裝,從出口發送出去。

硬體轉發要遠遠快於CPU進程轉發,相差至少一個數量級。同學們會疑惑地問,既然硬體轉發那麼快,為何還用進程轉發呢?

硬體轉發晶元長於轉發流量,但是卻處理不了複雜的邏輯。

硬體轉發表是天上掉下來的餡餅嗎?不是的!

是天生就存在於硬體晶元里的嗎? 不是的!

是硬體晶元自己學習到的嗎?不是的!

既然都不是,那是從哪裡來的呢?

路由進程告訴的!

路由進程,是不是就是路由協議RIP 、OSPF、BGP之流?

對的。

路由進程跑在CPU上,路由進程和鄰居、整個網路同步完路由表,將路由表(以二層轉發表的形式)下發到硬體晶元里,然後硬體晶元就可以愉快地工作了。

當路由器配置了NAT,路由器並不能將二層轉發表提前下發到硬體晶元,為什麼呢?

每一個TCP/UDP會話的四元組(源IP,源埠,目的IP,目的埠)是動態的,這些動態的信息沒有辦法提前知曉。所以,TCP/UDP會話第一個報文到達路由器入口時,硬體晶元的轉發表(NAT表)是空的,必須交由CPU進程處理。

CPU最強大的地方,就是可以處理任何複雜的邏輯!NAT進程立馬介入,生成一個動態的NAT表條目,將IP報文的私有源IP+埠,替換成公網的IP + 埠,然後轉發出去。

完了嗎?

沒有!

NAT進程還需要將NAT轉發表下發到硬體,硬體晶元有了NAT表就變得強大了起來。如同加滿油的老司機,地板油走起,一路絕塵。。。

有乘客會問,TCP的第二個報文是CPU轉發還是硬體轉發?

老司機冷笑一聲,我都有了NAT表,可以獨自開車,為什麼要勞煩CPU大神!

話音未落,老司機一個地板油,風馳電掣開始飆車,乘客發出鬼哭狼嚎的尖叫聲。。。

歸納一下

配置NAT之後,會對CPU有影響。至於影響多少,取決於有多少個全新的TCP/UDP會話數目。

當CPU成為瓶頸時,將會有越來越多的IP報文等待CPU處理,轉發性能就會很明顯地下降。

更多內容請閱讀:

路由器開啟NAT和防火牆功能,性能會下降嗎??

mp.weixin.qq.com圖標

大幅下降那是你配置了內容檢測的功能了,比如入侵檢測,url過濾等。不過,你一個路由器也就是插了個安全插卡,有必要做這麼多的檢測嗎?防火牆幹啥去?


拋開劑量談毒性

一方面取決於你路由器配置,一方面取決於你做了多少條nat映射,和防火牆策略


如果你指的是家用路由器,那就是用來做nat的


關鍵看NAT條目的數量和防火牆策略的複雜程度


基本不會影響


別慌,就ipv4時代,中國多少人沒有公網ip,過一陣就變了…


推薦閱讀:
相关文章