本發明涉及一種網絡設備數據交互方法和系統,屬于數據傳輸領域。
背景技術:
分布式存儲系統,是將數據分散存儲在多臺獨立的設備上。傳統的網絡存儲系統采用集中的存儲服務器存放所有數據,存儲服務器成為系統性能的瓶頸,也是可靠性和安全性的焦點,不能滿足大規模存儲應用的需要。分布式網絡存儲系統采用可擴展的系統結構,利用多臺存儲服務器分擔存儲負荷,利用位置服務器定位存儲信息,它不但提高了系統的可靠性、可用性和存取效率,還易于擴展。
傳統存儲網絡主要基于fc,傳輸帶寬和延遲遠遠優于千兆以太網,隨著10gb/40gb以太網的普及,分布式存儲的傳輸帶寬和時延得到了較大的改善。但是10gb/40gb以太網交換機仍然比較昂貴。
技術實現要素:
為了解決上述問題,本發明通過提供一種網絡設備數據交互方法和系統。
本發明采用的技術方案一方面為一種網絡設備數據交互方法,包括以下步驟:為每個網絡設備配置若干以太網卡以實現網絡設備兩兩連接;基于bond技術為每個網絡設備建立虛擬網卡并配置對應ip;發送/接收arp請求以建立網絡設備之間的路由規則;基于路由規則進行數據包的傳輸。
優選地,基于bond驅動建立虛擬網卡并配置對應ip,綁定以太網卡以配置mac地址,標記以太網卡為端口。
優選地,建立網絡設備之間的路由規則的步驟包括:發送arp請求,該arp請求包括目的ip地址,所述目的ip地址為發送arp請求的對端的網絡設備的ip地址;接收arp請求,解析arp請求以獲得目的ip地址,與網絡設備自身的ip地址進行比較,匹配則返回arp響應;接收arp響應后,通過解析arp響應,獲得目的ip對應的mac地址,并根據接收的端口,創建路由規則。
優選地,還包括檢測待發送的數據包類型,其中,待發送的數據包類型為arp請求,則通過端口廣播arp請求,通過接收其他網絡設備返回的arp響應獲取目的ip地址對應的mac地址,并根據接收端口創建路由規則;待發送的數據包類型為非arp請求,則獲取其數據發送目的ip,查詢路由規則以獲取目的mac和對應的端口,通過對應端口發送數據包。
優選地,還包括查詢路由規則,如果沒有找到對應的端口,則緩存數據包并基于所述目的ip生成一個arp請求并發送,如果收到對應的arp響應,則基于arp響應和接收端口,生成路由規則,基于路由規則進行數據包的傳輸。
優選地,還包括查詢路由規則,如果沒有找到對應的端口,則丟棄數據包并基于所述目的ip生成一個arp請求。
本發明采用的技術方案另一方面為一種網絡設備數據交互系統,包括若干網絡設備,包括:
配置模塊,用于為每個網絡設備配置若干以太網卡以實現網絡設備兩兩連接;虛擬網卡模塊,用于基于bond技術為每個網絡設備建立虛擬網卡并配置對應ip;路由模塊,用于發送/接收arp請求以建立網絡設備之間的路由規則;數據傳輸模塊,用于基于路由規則進行數據包的傳輸。
優選地,基于bond驅動建立虛擬網卡并配置對應ip,綁定以太網卡以配置mac地址,標記以太網卡為端口。
優選地,建立網絡設備之間的路由規則的步驟包括:發送arp請求,該arp請求包括目的ip地址,所述目的ip地址為發送arp請求的對端的網絡設備的ip地址;接收arp請求,解析arp請求以獲得目的ip地址,與網絡設備自身的ip地址進行比較,匹配則返回arp響應;接收arp響應后,通過解析arp響應,獲得目的ip對應的mac地址,并根據接收的端口,創建路由規則。
優選地,還包括檢驗模塊,用于檢測待發送的數據包類型,其中,待發送的數據包類型為arp請求,則通過端口廣播arp請求,通過接收其他網絡設備返回的arp響應獲取目的ip地址對應的mac地址,并根據接收端口創建路由規則;待發送的數據包類型為非arp請求,則獲取其數據發送目的ip,查詢路由規則以獲取目的mac和對應的端口,通過對應端口發送數據包。
優選地,所述檢驗模塊還用于查詢路由規則,如果沒有找到對應的端口,則緩存數據包并基于所述目的ip生成一個arp請求并發送,如果收到對應的arp響應,則基于arp響應和接收端口,生成路由規則,基于路由規則進行數據包的傳輸。
優選地,所述檢驗模塊還用于查詢路由規則,如果沒有找到對應的端口,則丟棄數據包并基于所述目的ip生成一個arp請求。
本發明的有益效果為通過網卡進行網絡設備的兩兩連接,基于bond技術對網卡進行管理,通過獲取網絡設備之間的地址信息以實現數據的傳輸過程,可以節省獨立的交換機,有利于對現有的系統進行改造。
附圖說明
圖1所示為基于本發明實施例的一種網絡設備數據交互方法的示意圖;
圖2所示為基于本發明實施例的基于vmwareesxi虛擬化平臺的3節點集群;
圖3所示為基于本發明實施例的基于linux服務器的3節點集群。
具體實施方式
以下結合實施例對本發明進行說明。
基于發明的實施例1,如圖1所示一種網絡設備數據交互方法,包括以下步驟:為每個網絡設備配置若干以太網卡以實現網絡設備兩兩連接;基于bond技術為每個網絡設備建立虛擬網卡并配置對應ip;發送/接收arp請求以建立網絡設備之間的路由規則;基于路由規則進行數據包的傳輸。
bond的原理是創建一個虛擬網卡,關聯多個物理網絡,以實現網卡的聚合;在這種模式下,網卡不像在通常情況下,只接收目的硬件地址是自身mac的以太網幀,對于別的數據幀都濾掉,以減輕驅動程序的負擔;而是接收網絡上所有的數據幀,而且修改了驅動程序中的mac地址,將兩塊網卡的mac地址改成相同,可以接收特定mac的數據幀,然后把相應的數據幀傳送給bond驅動程序處理。
網絡設備可以為主機,為主機設置n-1個網卡(n為全部網絡設備的數量)以實現主機的兩兩連接,基于bond的原理,為主機設置一個bond模塊/程序/驅動,用于配置給全部的網卡(單個網絡設備所具有的以太網卡)ip地址,然后單個主機(例如app或者主機程序需求數據的交互,則發出arp請求以建立路由關系)會發送arp請求,即通過其所屬所有網卡向對應的另一個主機發出arp請求,接收arp請求的主機的bond驅動會把arp請求中包含的ip信息讀取下來,并結合本主機的ip信息,如果兩者匹配,則發送一個arp響應回去。
基于發明的實施例1的一種網絡設備數據交互方法,基于bond驅動建立虛擬網卡并配置對應ip,綁定以太網卡以配置mac地址,標記以太網卡為端口。
虛擬網卡的目的是聚合多個物理網卡,屏蔽不同物理網卡的連接差異性,即實現數據傳輸目的的分配,在整體上,將所有的網卡視為一個單獨的網卡,其ip地址即所有的網卡的ip地址(也可以是其中若干網卡共享一個或者數個ip),同時在實際的數據轉接時,則基于實際mac地址以進行數據的交互。
基于發明的實施例1的一種網絡設備數據交互方法,建立網絡設備之間的路由規則的步驟包括:發送arp請求,該arp請求包括目的ip地址,所述目的ip地址為發送arp請求的對端的網絡設備的ip地址;接收arp請求,解析arp請求以獲得目的ip地址,與網絡設備自身的ip地址進行比較,匹配則返回arp響應;接收arp響應后,通過解析arp響應,獲得目的ip對應的mac地址,并根據接收的端口,創建路由規則。
arp協議概述:
ip數據包常通過以太網發送。在以太網通訊時,源主機的應用程序知道目的主機的ip地址和端口號,卻不知道目的主機的硬件地址(mac地址,同一個服務器上做bond的多個網卡,mac地址可以配置為相同,可以以不相同),而數據包首先是被網卡接收到再去處理上層協議的,如果接收到的數據包的硬件地址與本機不符,則直接丟棄。因此在通訊前必須獲得目的主機的硬件地址。arp址解析協議(addressresolutionprotocol,arp)協議就起到這個作用。
arp工作時,首先發送出一個含有所希望的ip地址的以太網廣播數據包。目的地主機收到該廣播數據包后,從接收數據包的端口返回一個響應作為應答。發送者收到該響應后,將記錄接收到響應的端口,用于通信。
首先,主機a具有n-1個端口(即網卡),發送arp請求并通過所有端口發送到其他的主機,arp請求即是主機的ip的信息的驗證;接收到arp請求的其他主機,會將自身的ip驗證是否是對方需要的地址,如果是則返回arp響應;當收到arp響應的時候,則說明找到了目的ip,就可以知道是那一個端口可以連到目的ip,據此建立一個路由連接表。
基于發明的實施例1的一種網絡設備數據交互方法,還包括檢測待發送的數據包類型,其中,待發送的數據包類型為arp請求,則通過端口廣播arp請求,通過接收其他網絡設備返回的arp響應獲取目的ip地址對應的mac地址,并根據接收端口創建路由規則;待發送的數據包類型為非arp請求,則獲取其數據發送目的ip,查詢路由規則以獲取目的mac和對應的端口,通過對應端口發送數據包。
由于網絡設備(主機)或者以太網卡(即所述網卡或端口)存在故障的可能,因此會不時的刷新路由規則,因此網絡設備會檢測待發送的數據包類型,如果是arp請求的數據包,則進行如實施例的路由規則建立過程以更新路由規則,如果是單純的一般的數據包,則根據數據包內包括的目的ip按照路由規則進行數據傳輸。
基于發明的實施例1的一種網絡設備數據交互方法,還包括查詢路由規則,如果沒有找到對應的端口,則緩存數據包并基于所述目的ip生成一個arp請求并發送,如果收到對應的arp響應,則基于arp響應和接收端口,生成路由規則,基于路由規則進行數據包的傳輸。
基于發明的實施例1的一種網絡設備數據交互方法,還包括查詢路由規則,如果沒有找到對應的端口,則丟棄數據包并基于所述目的ip生成一個arp請求。
例如,某個主機d如果沒有找到對應的端口,則直接放棄數據包并返回路由錯誤,觸發數據包的來源的主機進行其他的操作(發送arp請求建立路由規則)。
基于發明的實施例2,一種網絡設備數據交互系統,包括若干網絡設備,包括:
配置模塊,用于為每個網絡設備配置若干以太網卡以實現網絡設備兩兩連接;虛擬網卡模塊,用于基于bond技術為每個網絡設備建立虛擬網卡并配置對應ip;路由模塊,用于發送/接收arp請求以建立網絡設備之間的路由規則;數據傳輸模塊,用于基于路由規則進行數據包的傳輸。
基于發明的實施例2的一種網絡設備數據交互系統,基于bond驅動建立虛擬網卡并配置對應ip,綁定以太網卡以配置mac地址,標記以太網卡為端口。
基于發明的實施例2的一種網絡設備數據交互系統,建立網絡設備之間的路由規則的步驟包括:發送arp請求,該arp請求包括目的ip地址,所述目的ip地址為發送arp請求的對端的網絡設備的ip地址;接收arp請求,解析arp請求以獲得目的ip地址,與網絡設備自身的ip地址進行比較,匹配則返回arp響應;接收arp響應后,通過解析arp響應,獲得目的ip對應的mac地址,并根據接收的端口,創建路由規則。
基于發明的實施例2的一種網絡設備數據交互系統,還包括檢驗模塊,用于檢測待發送的數據包類型,其中,待發送的數據包類型為arp請求,則通過端口廣播arp請求,通過接收其他網絡設備返回的arp響應獲取目的ip地址對應的mac地址,并根據接收端口創建路由規則;待發送的數據包類型為非arp請求,則獲取其數據發送目的ip,查詢路由規則以獲取目的mac和對應的端口,通過對應端口發送數據包。
基于發明的實施例2的一種網絡設備數據交互系統,所述檢驗模塊還用于查詢路由規則,如果沒有找到對應的端口,則緩存數據包并基于所述目的ip生成一個arp請求并發送,如果收到對應的arp響應,則基于arp響應和接收端口,生成路由規則,基于路由規則進行數據包的傳輸。
基于發明的實施例2的一種網絡設備數據交互系統,所述檢驗模塊還用于查詢路由規則,如果沒有找到對應的端口,則丟棄數據包并基于所述目的ip生成一個arp請求。
基于發明的實施例3,如圖2所示的基于vmwareesxi虛擬化平臺的3節點集群。
由于esxi的vswith默認網卡是連接物理交換機,把多個物理網卡作為等價的上行鏈路出口,vswitch并沒有針對物理網絡出口的路由規則配置,因此通過在兩兩互聯的網絡接口上建立一個vswitch并不能解決互聯互通問題。
在3臺服務器兩兩互聯的基礎上,在每臺esxi服務器上對每一個物理網卡建立一個vswitch,分別為vswitch0、vswitch1。然后在esxi上創建一個linux虛擬機vm0,虛擬機vm0配置的2個虛擬機網卡vf0和vf1分別關聯vswitch0和vswitch1。linux虛擬機vm0中基于虛擬網卡vf0、vf1創建虛擬網卡bond0,并給bond0配置對應的ip地址。
bond0的bond內核模塊通過監控并分析arp消息建立路由轉發規則。bond模塊接收到arp消息后,確認接收該arp消息的bond網卡slave端口(vf0或vf1),并解析并獲取arp消息中的源ip和目的mac信息;基于該ip和slave端口的映射生成路由規則,并保存在bond模塊的路由轉發表中(即從網卡nic0或者nic1選擇路徑)。如果該路由轉發表中已經保存了該ip的路由信息并且和基于最新arp消息生成的路由轉發規則不一致,則用最新規則替換。
基于發明的實施例4,如圖3所示的基于linux服務器的3節點集群。
我們在3臺linux服務器兩兩互聯的基礎上,在每臺linux服務器(server0~2)上基于物理網卡nic0和nic1,創建虛擬網卡bond0,并給bond0配置對應的ip地址。
bond0的bond內核模塊通過監控并分析arp消息建立路由轉發規則。bond模塊接收到arp消息后,確認接收該arp消息的bond網卡slave端口(nic0或nic1),并解析并獲取arp消息中的源ip和目的mac信息;基于該ip和slave端口的映射生成路由規則,并保存在bond模塊的路由轉發表中。如果該路由轉發表中已經保存了該ip的路由信息并且和基于最新arp消息生成的路由轉發規則不一致,則用最新規則替換。
以上所述,只是本發明的較佳實施例而已,本發明并不局限于上述實施方式,只要其以相同的手段達到本發明的技術效果,都應屬于本發明的保護范圍。在本發明的保護范圍內其技術方案和/或實施方式可以有各種不同的修改和變化。