【正文】
令節(jié)點show interface顯示接口信息從以上命令上看這是一個三層接口,接口有創(chuàng)建、刪除、配置、顯示等普通的功能。它們的輸入?yún)?shù)則是 VLAN ID,接口名稱這些直觀的東西。當然這只是命令行上對接口命令的一般設計標準,其次還有對端口的二層接口的配置,對VLAN 的配置,對 MSTP 和 IGMP 等協(xié)議接口的配置以及對 Route 和 ARP 學習基于無線控制器的接口管理24管理和顯示等等。命令行給用戶提供了一個管理、監(jiān)測交換機內部原理的窗口,從而使網(wǎng)絡的轉發(fā),交換機的行為可控,根據(jù)不同的網(wǎng)絡拓撲實現(xiàn)不同的轉發(fā)流程。當然這些配置命令是有層次的,從端口的物理特性,例如端口自協(xié)商、流控、MTU、雙工/半雙工模式等等,到端口的虛擬接口的 IP 地址以及它的 ARP,路由信息。接口在設置上是一個從底層到高層的過程,報文在從進入到轉發(fā)也是一個報文 TCP/IP 協(xié)議處理的流程。接口管理是交換機中的核心內容,更是有線無線一體化交換機的開發(fā)的重中之重。在一體化交換機中,不光要涉及到有線網(wǎng)絡的處理流程,還要處理無線網(wǎng)絡上來的報文。從橫向上來說接口管理就是根據(jù) TCP/IP 模型和交換機功能抽象出層次中的各個接口,并加以融合,實現(xiàn)不同接口之間的互訪。有線二層接口到三層接口的融合,無線二層接口到三層接口之間的融合,以及有線到無線各層之間的融合,實現(xiàn)交換機內部的一種矩陣模型。TCP/IP 的協(xié)議棧模型,在 AX7000 中是通過兩塊高速轉發(fā)芯片實現(xiàn)。交換機在軟件上對它們各層抽象出接口,解決同一端口對報文的不同處理。當報文從一個端口進入,在二層接口下會有特定的處理模式,在三層接口下又會有另外一種處理,到這時就有不同的分流,對于 WLAN 的報文或 RIP、OSPF 等的報文會送特定的協(xié)議去處理,對于多數(shù)的轉發(fā)報文則進行路由查詢,進入轉發(fā)隊列。而對于這些特定分流是要有配置去約束,這種約束最終保存在接口所定義的結構上,等報文來時,對其進行檢查,最后做出正確的選擇。正如前面所說的,命令行是接口管理提供給用戶的一個界面,這也是接口管理最直觀的體現(xiàn)。網(wǎng)絡管理員根據(jù)網(wǎng)絡拓撲配置交換機的物理屬性,F(xiàn)DB 表項,三層接口 IP,無線網(wǎng)絡和接口之間的綁定以及 DHCP 等其他協(xié)議。有了前面的配置,則報文從某個物理端口進入,就開始其在交換機的一個處理流程。 接口管理需求首先從 AX7000 交換機功能上來說,最重要的是保證基本功能——報文正確高速轉發(fā),它的實現(xiàn)需要從 TCP/IP 協(xié)議棧上去分析,有數(shù)據(jù)鏈路層的功能需要考慮,有網(wǎng)絡層的功能需要考慮。還有無線網(wǎng)絡的實現(xiàn),路由的實現(xiàn)這些又需要傳輸層的功能,當然還有對網(wǎng)絡的拓撲的管理以及其他種種特性功能,這么多的東西需要管理。因此衍生出接口管理,它也無可厚非的成為交換機軟件的核心部分。它的設計必須要能很好的管理交換機,管理網(wǎng)絡拓撲,保證數(shù)據(jù)高速正確轉發(fā)。如同第一章所說接口管理在不同的廠商設備中有不同的設計原則,通過各自第四章 接口管理需求分析 25的命令行可以體會到它們對接口的定義的方式。Cisco 對接口定義最廣泛,因此也最混亂,讓用戶很難進行配置,感覺什么都是接口。Juniper 公司的接口管理相對要清晰一點,把接口的概念分層了,從物理層到鏈路層到網(wǎng)絡層,邏輯上的可以有好幾層接口,類似一個接口棧,完整的接口棧實現(xiàn)完整的報文從網(wǎng)絡協(xié)議棧最底層到頂層的處理過程。從這些可以看出 Juniper 公司對接口定義比較嚴格。而接口的管理也更加的靈活。從上一節(jié)所引用的三層 VLAN 接口就可以看出。要配置一個 VLAN 接口首先得創(chuàng)建 VLAN,有了 VLAN 就會有端口,同一個 VLAN 中的這些端口都共享這個三層接口,那么報文如何選擇從正確的端口轉發(fā)出去。還有就是端口從VLAN 刪除或添加到 VLAN 怎么處理以及這些個端口在 MSTP 和 IGMP 的狀態(tài)遷移又會怎么影響 VLAN 轉發(fā)。另一個重要的影響就是硬件,由于交換機的各自的硬件架構不同,導致軟件對硬件的支持需要不同的軟件設計結構。不同的設計結構,則影響了不同的接口設計思路。在 AX7000 中接口管理的設計綜合了 Cisco 的多接口和 Juniper 的接口分層概念。并且以一種相對簡潔的方法實現(xiàn),減少了數(shù)據(jù)結構方面的存儲要求,也減少了接口交互之間的簡便。所以 AX7000 的接口管理的設計是基于 PORT 和VLAN。它們之間的關系如下圖所示:P o r t V L A NN N圖 Port 和 VLAN 之間的關系綜上所述,接口管理在交換機的設計中很重要,是不可或缺的部分。1. 用戶管理交換機需要接口管理,通過合適的接口提供給用戶清晰的接口配置命令,使用戶使用交互命令行很方便。接口命令應從以下這幾個方面主要考慮:(1) SYSTEM(2) PORT(3) VLAN(4) INTERFACE(5) MIRROR(6) ACL(7) QoS 等等。2. 底層的多有三個不同的驅動,封裝成一個相同的接口,以便上層應用的調用。(1) Marvell 高速芯片驅動(2) Cavim 網(wǎng)卡驅動基于無線控制器的接口管理26(3) 虛擬網(wǎng)卡驅動3. 各個不同的協(xié)議收包、發(fā)包、控制需要接口管理。(1) IGMP(2) RSTP/MSTP(3) DHCP(4) ARP 等等4. 交換機硬件和操作系統(tǒng)之間的同步需要接口管理。(1) ARP 信息(2) ROUTE 信息5. 無線模塊和有線模塊之間需要接口管理,實現(xiàn)不同模塊的融合。(1) WLAN(2) 三層 INTERFACE(3) Capwap 協(xié)議從第一點可以得出用戶需要系統(tǒng)整體信息,這些信息對于交換機管理方面來說不是主要的,所以它可以直接從 CPLD 讀取。Port 和 VLAN 是交換機的基礎,通過對這兩個方面的管理可以實現(xiàn)最簡單的網(wǎng)絡拓撲,所以 AX7000 以它們設計了接口管理方案。而 INTERFACE 主要針對三層接口,物理 Port 的提供從第二點上看有兩種,一個是交換芯片,一個是 Cavium 網(wǎng)卡,那么針對不同的硬件就有兩種不同的實現(xiàn)方式。對于簡單的網(wǎng)卡只能基于 Port,對于交換芯片則可以是基于 Port 或 VLAN,所以最終的接口定義仍掛載在 Port 和 VLAN 上。MIRROR 和QoS 可以把它們看成一個特性功能集,從芯片手冊上看,它們的實現(xiàn)仍然與 Port和 VLAN 有關,最終這些特性集接口定義還是和 Port 或 VLAN 綁定。第三點是協(xié)議模塊,協(xié)議 RSTP/MSTP 的作用是去除網(wǎng)絡中的環(huán)形連接,IGMP 是 VLAN內的組播管理協(xié)議,它們作為橋協(xié)議,仍舊是 Port 和 VLAN 之上的接口,不過會有基于端口的部分,也有基于 VLAN 的部分。DHCP 和 ARP 以及第五點中的路由都是基于三層接口的協(xié)議,所以最終還是歸結到 Port 和 VLAN 上。無線模塊在管理 AP,和 AP 通信的過程,以及之間通信的協(xié)議都是基于 TCP 或 UDP 套接口,它是三層之上的功能,那么最終歸結下來仍是三層接口如何給它提供服務,因此這些接口的管理仍是三層接口的管理。最終 Port 和 VLAN 與這些接口之間的關系就如同下面的 圖所示。P o r t V L A NI n t e r f a c e N a m eI n t e r f a c e A t t r i b u t e第四章 接口管理需求分析 27圖 接口與 Port 和 VLAN 之間的關系圖 接口管理建模AX7000 硬件結構如第三章所示,使用了 16 核的 CPU,使用了兩塊高速轉發(fā)芯片,使用了高速網(wǎng)卡,因此在硬件層面 AX7000 已經(jīng)具有了超強的性能。傲天公司以自身的技術為基礎,在項目研發(fā)中大量使用了開源軟件。由于 CPU 是MIPS 架構, 內核完全可以支持這一架構,并且增強了對多核 CPU 的支持,修改了系統(tǒng)調度策略,而且是免費使用減小開發(fā)成本,所以選用它來說很適合。對于高端交換機,路由管理是一個很重要的方面。在 Linux 操作系統(tǒng)的前提下,最終選用開源并且比較穩(wěn)定、安全的 Quagga 軟件來完成這方面的功能。在Quagga 軟件中集成了兩個主要功能,一個是路由管理,一個是命令解釋,所以命令行模塊的主體問題已經(jīng)解決。命令行模塊肯定要以一個獨立的進程存在,那么命令行和接口管理方面的通信就是一個大問題,Linux 下的 DBus 技術正好可以解決這個問題。AX7000 的開發(fā)重點在于接口的設計。根據(jù)接口實現(xiàn)上層的命令行,接口管理函數(shù),底層芯片操作,這是一個從上到下的縱向過程。還有橫向的過程,就是報文在芯片中的轉發(fā)??v向功能就像是一個個的閥門,橫向就如同一個管道。閥門控制管道里面的各種流量。因此在測試時分成兩個步驟,首先是命令的縱向測試,看命令配置過程是否正確;其次是命令橫向測試,這主要是命令效果的測試,也就是這個命令對轉發(fā)的影響是否正確。AX7000 的硬件是多核 CPU 加 ASIC 芯片的設計,則整體軟件設計架構就體現(xiàn)了這個方面的設計,如圖 所示 [27]?;跓o線控制器的接口管理28…S y s t e m T a b l eService CoerShell RelayBuiltin HTTP GUIWirelessXORPBridging protocolsMarvell DriverD e b i a n S y s t e mC a v i u m P o r t N I CL i n u x K e r n e lM a r v e l lP o r t N I CForwarding SoftwareShellC a v i u m S i m p l eE x e c u t i v eForwarding SoftwareShellC a v i u m S i m p l eE x e c u t i v eUserSpaceKernelSpaceS h a r e M e m o r yA c c e s s圖 AX7000 軟件總體架構上圖中可以看出,軟件的設計主要集中在 CPU 的一個控制核上??刂坪松嫌胁僮飨到y(tǒng),基于操作系統(tǒng)運行網(wǎng)卡和芯片驅動,Web 網(wǎng)管軟件,無線模塊,接口管理模塊以及橋協(xié)議模塊。其他核上有自己的轉發(fā)軟件和控制命令行。接口管理依托上面所述的軟硬件以及上面所述的那些功能,它主要有以下三種業(yè)務處理情況:1. 接口管理處理用戶配置。AX7000 要使用于各種網(wǎng)絡拓撲,則它需要處理多種配置。配置的最終目的是設置到硬件或軟件上,使報文能夠按照用戶的要求進行轉發(fā)。根據(jù)不同的接口類型進行設置時,消息分發(fā)也是不同的,這期間有用戶命令直接到協(xié)議,有通過接口管理進行轉發(fā)到協(xié)議或直接到硬件網(wǎng)卡驅動和芯片。如圖 所示。在這個業(yè)務處理過程中主要用到了 DBus 技術。DBus 以它特有的通道建立機制和消息分發(fā)幫助接口管理方便實現(xiàn)用戶配置處理業(yè)務。 用戶交互界面接口管理層面協(xié)議層面C a v i u m網(wǎng)卡L i n u x虛擬驅動M a r v e l l芯片D B u sD B u s圖 用戶配置業(yè)務圖2. 接口管理處理報文。第四章 接口管理需求分析 29當報文從 Cavium 網(wǎng)卡或 Marvell 芯片收到后,它們的處理流程是不同的,但是兩者之間是可以互通的。兩個硬件在接口管理的軟件設計中被封裝成一個設備,給用戶的感覺只是面板上的端口編號不同而已。報文的交互是 CPU 經(jīng)過處理后根據(jù)相應的表項把報文從不同的通道送出去,有可能是 PCI 通道,有時候是 SPI或其他通道,這些不同的通道連接了不同的硬件,最終報文從正確的端口轉發(fā)出去。這一業(yè)務的實現(xiàn)主要是通過硬件驅動實現(xiàn)。Marvell 有自己強大的驅動應用庫函數(shù), Linux 虛擬驅動則是通過接口定義給 Marvell 芯片端口和 VLAN 虛擬Linux 內核網(wǎng)絡設備,使這一個業(yè)務流得以實現(xiàn)。詳細的業(yè)務關系如圖 所示。3. 接口管理同步各個模塊之間的信息。AX7000 從根本上說只有應用、接口管理層面、Linux 內核、硬件系統(tǒng)這四個方面。要使交換機正常用轉則這四個方面的同步是必不可少,根據(jù)不同的特點這四方面的交互使用不同的方法。應用與應用這是進程或線程之間的通信多使用本地 socket。應用和接口管理之間是通過 DBus 這個軟桌面總線實現(xiàn)。接口管理和 Linux 內核之間是通過虛擬網(wǎng)卡驅動或 link socket 實現(xiàn)。接口和硬件是通過封裝的接口函數(shù)。詳細的業(yè)務關系如圖 所示。M a r v e l l芯片C a v i u m網(wǎng)卡L i n u x虛擬網(wǎng)卡C P U圖 報文處理業(yè)務圖基于無線控制器的