本章第一節介紹的存儲設備方面的創新解決了CPU訪問存儲設備的性能問題。但在實際的業務當中,數據的傳輸除了在節點內部的CPU與存儲設備間外,節點之間也存在數據傳輸的需求。本節我們就介紹在網絡傳輸方面是如何提速的。
在介紹新的網絡技術之前,我們看看傳統網絡是如何傳輸數據的,比如我們常見的以太網。當節點0向節點1發送數據時,其整個數據處理的流程如下圖所示,可以看到其過程還是比較復雜的。
在節點0,應用程序首先需要將其緩沖區中的數據通過系統調用的方式拷貝到操作系統內核TCP/IP協議棧當中,內核進一步將數據拷貝到網卡中。節點0的網卡將數據發出后,節點1的網卡會收到數據,然后數據首先從網卡拷貝到內核的TCP/IP協議棧,然后再從內核拷貝到應用程序緩沖區。可以看到,在整個數據的傳輸過程中存在多次數據拷貝的過程,這將極大的增加數據傳輸的延時。
為了減少數據傳輸過程中的數據拷貝,有一種稱為RDMA的技術被提出。RDMA可以使節點0通過網絡直接訪問節點1的內存,并且跳過內核與用戶態應用程序的內存拷貝,這樣極大的降低了數據傳輸延時。我們可以用下圖示意RDMA數據傳輸的過程。