處被統稱為“網絡堆棧”。由此,為了跨網絡101傳送數據,在計算設備111上執行的應用161可以與也在計算設備111上執行的網絡堆棧162進行通信。
[0025]在一個實施例中,接口 163可以使應用161能向網絡堆棧162提供傳輸元數據164。然后,這樣的傳輸元數據164可以被網絡堆棧162用來調整網絡堆棧162藉此發送由應用程序161所提供的數據的通過網絡101的路由以及被用來將這樣的數據傳遞到一個或多個其他計算設備的協議設置。例如,應用161可以尋求將數據173傳送到數據中心123中的計算設備113,也可以尋求將數據172傳送到數據中心122中的計算設備112。網絡堆棧162可以確定它將藉此傳送數據173的路由183,也可以確定它將藉此傳送數據172的路由182。另外,網絡堆棧162還可以調整用來傳送數據173的網絡傳輸協議193的設置,并且可以調整用來傳送數據172的網絡傳輸協議192的設置。對諸如路由182以及183之類的路由的確定以及對諸如協議設置192以及193之類的網絡傳輸協議的設置的調整可以通過由網絡堆棧162從應用161接收到的傳輸元數據164來通知。
[0026]為提供對應用161可藉此向網絡堆棧162提供傳輸元數據的接口 163的進一步描述,對圖2的系統200作出參考。由此,轉向圖2,本文中示出的系統200說明了可以在諸如如圖1所示的示例性服務器計算設備111之類的計算設備上執行的應用161和網絡堆棧162之間的示例性關聯,以及應用161和網絡堆棧162和它們正在在其上面執行的計算設備的硬件組件(即,硬件網絡接口 220中的存儲器210)之間的關聯。如圖2的系統200所示出的,應用161和網絡堆棧162之間的傳輸元數據接口 163可以使應用161能提供多個不同類型的信息,該信息與應用161尋求執行的網絡傳輸相關聯并描述該網絡傳輸。
[0027]應用161可以通過接口 163提供的一個類型的傳輸元數據164可以是數據量信息233。如所屬領域的技術人員將認識到的,通常當這樣的數據變得對應用可用或者由應用生成時,通常應用通過簡單地向網絡組件提供指向這樣的數據的一個或多個指針來傳送數據,。因此,網絡組件通常不會察覺,并且實際上通常對要被傳送的總數據量是不可知的。然而,在一個實施例中,傳輸元數據164可包括關于應用161尋求傳送的數據量的信息,以便使網絡堆棧162能按使這樣的數據被傳送的方式執行各種優化和調整。作為初始事情,網絡堆棧162可以將數據量信息233與一個或多個閾值進行比較,以確定網絡堆棧162甚至投入時間和處理資源來優化數據的傳輸是否最佳。例如,如果正在被傳輸的數據量小,使得通過由網絡堆棧162執行的任何優化獲得的效率將大于一開始就標識和執行這樣的優化所花費的時間和資源的負面偏移,那么如果網絡堆棧162只是不對少量數據的這樣的傳輸執行優化,則可以提高總效率。
[0028]傳輸元數據接口 163也可以允許提供通信類型信息232。例如,傳輸元數據164可包括由應用161當前尋求傳送的數據是包括對描繪的大小的數據的周期性傳送的通信的一部分的指示。替換地,應用161可以通過通信類型信息232指定該應用尋求傳送的數據是單一消息,或是單一請求/響應交換的一部分。在再一個替代方案中,通信類型信息232可以指定尋求被傳送的數據是數據流的一部分,該數據流可以表示為無約束流、請求/響應流或可以提供其他類似的特殊性。在一個實施例中,通信類型信息232可以與定量數據信息233 —起使用,以使網絡堆棧162能夠確定是否要投入時間和資源來優化數據傳輸。例如,網絡堆棧162可以判斷它應該尋求優化數據傳輸,即使如由數據量信息233所指示的應用161當前尋求傳送的數據小于閾值數據量,如果通信類型信息232指出當前正在被傳送的數據是周期性數據傳輸中的一個。在這樣的情況下,時間和資源的一次性的投資以執行這樣的優化,盡管它可能不會利用當前尋求被傳輸的數據的傳輸獲得補償,但最終可由于由通信類型信息232指出的周期性的本質通過相同類型的后續數據的更高效的傳輸來獲得補償。
[0029]通信類型信息232以及數據量信息233也可以被網絡堆棧162用來優化用來傳輸這樣的數據的通信協議的設置。如由網絡堆棧162和網絡硬件接口 220之間的接口 240所指示的,網絡堆棧162可以調整應用于對尋求由應用161傳輸的數據的傳輸的差錯控制241、流控制242、接收器控制243以及分段244以及其他選項和設置。如此,例如,如果數據量信息233指示應用尋求傳輸的數據小,而通信類型信息232指示該數據是周期性數據傳輸的超過固定大小的一部分,則網絡堆棧162可以將用于傳輸這樣的數據的協議設置調整為適合于發送短消息。作為一個示例,差錯控制241和流控制242可以指定針對短消息的發送定制的擁塞提供商,連同短最小重新傳輸超時以及在發送確認之前需要被接收到的少量的數據包。
[0030]可以通過傳輸元數據接口 163提供的其他信息可以是可以在優化時幫助網絡堆棧162的信息,該信息不僅僅有用來發送由傳輸元數據描述的數據的協議,而且還有將沿著其傳輸這樣的數據的通過網絡的路由。例如,目的地信息231可以包括關于應用161尋求傳輸的數據的目的地的信息,該信息包括例如目的地計算設備的網絡地址并可任選地包括這樣的目的地計算設備上的這樣的數據要被引導到的目標應用。類似地,及時性信息234連同成本信息236 —起可以使網絡堆棧162能標識對于要被傳輸的數據的經優化的路由。例如,并如所屬領域的技術人員將認識到的,使用網絡帶寬來傳送數據不是沒有成本的,因此,成本或應用愿意為傳送數據“支付”多少錢的概念可以被用來分配以及少量發放有限的網絡資源,諸如帶寬。因此,如果應用161指定激進的及時性信息234,使得在它尋求傳輸的數據在特定時間段內沒有被目的地接收到的情況下,該數據變得無價值并且只應該被丟棄,則網絡堆棧162可以標識可以滿足及時性信息234的路由,但是這樣的路由可能會產生大于應用161愿意產生的、可由成本信息236指定的數額的成本。在這樣的情況下,網絡堆棧162可以簡單地不一開始就傳送數據,因為它會意識到由及時性信息234所指定的限制無法被由成本信息236所指定的可接受的成本滿足。相反,如果及時性信息234指定寬松的絕限,但是成本信息236指定最小成本,則網絡堆棧162可以標識出可具有比其他路由更大的等待時間的路由,但是這樣的標識出的路由可以滿足成本信息236。
[0031]為了在跨網絡的經優化的數據傳輸中幫助網絡堆棧162,應用161也可以將數據位置信息235作為傳輸元數據接口 163的一部分來指定。在一個實施例中,這樣的信息可以被用來通過避免關于要被傳送的數據的不必要的副本來節省時間和資源。例如,并如所屬領域的技術人員所理解的,通常跨網絡的數據傳輸可涉及在甚至發送數據之前在發送計算設備內生成這樣的數據的多個副本。例如,應用161可以在存儲器210的分配給應用161的一部分中維護要被傳輸的數據。隨后,在嘗試傳送這樣的數據之際,網絡堆棧162就可以將這樣的數據從存儲器210的其中應用161存儲了這樣的數據的部分復制到存儲器210的不同的部分。可以由網絡硬件接口 220作出對存儲器210中的數據的更進一步的復制。如此,在一個實施例中,為優化跨網絡的數據傳輸,可以避免特別是在存儲器210內的數據的這樣的多個副本。更具體而言,網絡堆棧162可以使用由應用161所提供的數據位置信息235來訪問與應用161在存儲器210的相同部分中的數據的一個相同的副本,由此避免在傳輸之前進一步復制存儲器210內的數據。
[0032]如前面所指出的,由應用161通過傳輸元數據接口 163所提供的傳輸元數據可以包括可使網絡堆棧162能優化這樣的數據跨網絡的路由的信息。在執行這樣的路由時,網絡堆棧162不僅可以參考通過傳輸元數據接口 163接收到的信息,而且也可以參考關于網絡的信息,諸如網絡的當前配置以及網絡的當前擁塞。回到圖1的系統100,所示出的示例性網絡101可以包括藉此將數據172傳送到計算設備112的配置,在計算設備111上執行并尋求從其傳送數據的網絡堆棧162可以沿著段141并隨后驗證段142來路由數據。如此,當路由數據172時,網絡堆棧162可以使用可以沿著段141和142來路由數據172的路由182