,包括但不限于以下方式:
[0081](I)根據網絡設備的設備標識向該網絡設備發送設備狀態獲取請求。
[0082](2)接收該網絡設備返回的設備信息。
[0083]具體地,控制器內部有一守護進程會接受網絡設備發來的不同類型的報文,在接收到網絡設備發送的注冊報文后,會根據注冊報文里的網絡設備的設備標識向對應的網絡設備發送設備狀態獲取請求,目的是獲取該網絡設備的設備信息。
[0084]另外,網絡設備的設備信息可以包括該網絡設備的性能參數。比如:網絡設備為交換機,該交換機的設備信息包括該交換機的傳輸速率、背板帶寬等。
[0085]步驟330,將網絡設備所屬的控制器標識確定為當前連接的控制器的標識(Identificat1n, ID),并將網絡設備的設備信息和網絡設備所屬的當前連接的控制器的標識保存至數據庫中。其中,保存至數據庫中可以為持久化保存至數據庫中,該持久化保存便于控制器對網絡設備的配置和管理,提高了可用性。
[0086]具體地,控制器將網絡設備所屬的控制器標識確定為當前連接的控制器的標識時,會根據網絡設備是否已注冊,采用不同的確定方式:
[0087](I)判斷網絡設備是否已注冊。
[0088]具體地,判斷網絡設備是否已注冊時,可以從數據庫中查詢該網絡設備對應的設備信息,若查詢到,表明該網絡設備已經注冊,若沒有查詢到,表明該網絡設備沒有注冊。
[0089](2)若網絡設備沒有注冊,則將網絡設備所屬的控制器標識確定為當前連接的控制器的標識。
[0090](3)若網絡設備已注冊,且注冊的控制器不是當前連接的控制器,則將網絡設備所屬的控制器標識更換為當前連接的控制器的標識。
[0091](4)若網絡設備已注冊,且注冊的控制器是當前連接的控制器,則不對網絡設備所屬的控制器標識進行更換。
[0092]上述將網絡設備所屬的控制器標識確定為當前連接的控制器的標識后,控制器會將網絡設備的設備信息和網絡設備所屬的當前連接的控制器的標識持久化保存至數據庫中,該持久化保存便于控制器對網絡設備的配置和管理,提高了可用性。
[0093]另外,將網絡設備所屬的控制器標識確定為當前連接的控制器的標識后,控制器還會更新數據庫中存儲的該網絡設備的設備狀態,并為該網絡設備設置對應的保活信息,并將該網絡設備對應的保活信息保存至控制器所屬的服務器的緩存中。
[0094]步驟340,設置網絡設備對應的保活信息,以及將該保活信息以鍵值對的形式保存至控制器所屬的服務器的緩存中。其中,該保活信息包括網絡設備的設備標識、以及報文接收時間;并且,該網絡設備的設備標識為鍵(key),報文接收時間為值(value)。
[0095]另外,保活信息中的報文接收時間可以是控制器接收到該網絡設備發送的保活報文的時間。
[0096]步驟350,向網絡設備發送保活通知,以使網絡設備根據保活通知定時向控制器發送保活報文。
[0097]參見圖4,為本申請配置網絡設備的方法的另一個實施例流程圖,該實施例從控制器側進行描述,并建立圖3所示實施例的基礎上,執行對網絡設備的保活職能,可以包括以下步驟:
[0098]步驟410,接收已注冊的網絡設備發送的保活報文,該保活報文包括網絡設備的設備標識。
[0099]步驟420,在根據網絡設備的設備標識在數據庫中查詢到該網絡設備所屬的控制器標識時,將該網絡設備所屬的控制器標識確定為當前連接的控制器的標識。
[0100]具體地,若查詢到的該網絡設備所屬的控制器標識不是當前連接的控制器的標識,則將該網絡設備所屬的控制器標識更換為當前連接的控制器的標識;若查詢到的該網絡設備所屬的控制器標識是當前連接的控制器的標識,則不需要更換。
[0101]步驟430,根據接收到保活報文的接收時間更新該網絡設備對應的保活信息中的接收時間。
[0102]具體地,控制器接收到同一網絡設備發送的保活報文后,就會實時更新該網絡設備對應的保活信息中的接收時間,使得保護信息中的接收時間永遠是最新接收到保活報文的時間。其中,該網絡設備對應的保活信息是以鍵值對的形式保存在控制器所屬的服務器的緩存中的。
[0103]另外,當控制器管理的網絡設備的數量較大時,會同時有大量的保活報文涌入控制器,此時可以做多線程并發處理,故此保活信息可以存放在使用經過鎖分段技術處理的線程安全的集合中,若網絡設備掉線后,可以從該集合中移除掉線設備的保活信息。
[0104]步驟430,將數據庫中保存的該網絡設備對應的設備狀態更新為在線狀態。
[0105]另外,執行步驟430中將數據庫中保存的該網絡設備對應的設備狀態更新為在線狀態之后,控制器會開始計時,當預設時間內沒有接收到該網絡設備發送的保活報文時,控制器會將該網絡設備對應的設備狀態更改為掉線狀態。
[0106]在一個實施例中,為了減少操作數據庫的次數,在執行步驟430中將數據庫中保存的該網絡設備對應的設備狀態更新為在線狀態時,可以包括:
[0107](I)計算接收到同一網絡設備發送的保活報文的累計次數。
[0108](2)若累計次數到達報文次數閾值時,獲取數據庫中保存的設備狀態。
[0109](3)若設備狀態不是在線狀態,將設備狀態更新為在線狀態,并將累計次數清零;若設備狀態是在線狀態,則不需要更新設備狀態,此時也需要將累計次數清零。
[0110]另外,控制器還可以提供一個用于修改報文次數閾值的接口。當報文次數閾值被設置的越大時,操作數據庫的頻率就越低,數據的即時性越低。
[0111]由上述實施例可見,本申請提供了一種具有高伸縮性的設備保活和狀態更新機制,可根據網絡設備發送的保活報文來執行對數據庫的操作;尤其是控制器提供接口可靈活修改報文次數閾值,這樣可以通過設置報文次數閾值來實現數據時效性和控制器性能的權衡。
[0112]上述設備狀態更新為在線狀態后,可以向網絡設備發送已完成設備保活的通知消息。
[0113]由于不同類型的網絡設備發送的報文,其類型也可能不同,其報文包含的設備信息也可能有不一樣。故此,控制器內部設置了一個設備報文類型庫,用于維護不同網絡設備發送的不同類型的報文,針對每一種報文,實現了一個數據類型用于映射和存儲不同報文消息中的設備信息;同時,數據庫中也針對不同類型的設備分別為其建立對應的數據表(與報文類型和數據類型一一對應),用于維護不同設備的持久化信息。
[0114]與前述配置網絡設備的方法實施例相對應,本申請還提供了配置網絡設備的裝置的實施例。
[0115]本申請配置網絡設備的裝置的實施例可以應用在控制器上。裝置實施例可以通過軟件實現,也可以通過硬件或者軟硬件結合的方式實現。以軟件實現為例,作為一個邏輯意義上的裝置,是通過其所在設備的處理器將非易失性存儲器中對應的計算機程序指令讀取到內存中運行形成的。從硬件層面而言,如圖5所示,為本申請配置網絡設備的裝置所在設備的一種硬件結構示意圖,除了圖5所示的處理器、網絡接口、內存以及非易失性存儲器之夕卜,實施例中裝置所在的設備通常還可以包括其他硬件,如負責處理報文的轉發芯片等等;從硬件結構上來講該設備還可能是分布式的設備,可能包括多個接口卡,以便在硬件層面進行報文處理的擴展。
[0116]參見圖6,為本申請配置網絡設備的裝置的一個實施例框圖,該裝置可以應用在控制器上,并可以用于執行圖1所示的配置網絡設備的方法,可以包括:接收單元61、配置命令行生成單元62和發送單元63。
[0117]其中,接收單元61用于通過所述分布式接口接收客戶端發送的配置請求,所述配置請求攜帶的請求類型和URI與所述分布式接口支持的URI和請求類型相同;
[0118]配置命令行生成單元62用于根據所述配置請求中的第一消息體生成對應的配置命令行,所述第一消息體承載所述客戶端對網絡設備下發的配置命令中的配置參數;
[0119]發送單元63用于基于X