胡 罡,逄德明,彭立宏,蔡志平,徐 明
(國防科技大學 計算機學院,湖南 長沙 410073)
路由與交換技術(shù)是工程技術(shù)類網(wǎng)絡(luò)工程專業(yè)的限選課程。通過學習本課程,學員了解并掌握網(wǎng)絡(luò)路由和交換的基本概念、工作原理等基礎(chǔ)知識,了解并掌握交換機和路由器設(shè)計及實現(xiàn)的一系列關(guān)鍵技術(shù),為今后從事網(wǎng)絡(luò)設(shè)備設(shè)計與開發(fā)工作打下堅實的專業(yè)基礎(chǔ)。
課程的基本理念是以工程認證為標準,以提高課程教學質(zhì)量為目標,以創(chuàng)新課程設(shè)計和改革教學內(nèi)容及教學方法為重點,堅持將知識、能力、素質(zhì)融為一體,堅持教與學的良性互動,整體優(yōu)化教學實施過程,切實突出學員學習的主體地位,充分發(fā)揮課程教學對實現(xiàn)人才培養(yǎng)目標的支撐作用,促進學員全面發(fā)展。
課程的設(shè)計思路以改革教學內(nèi)容和教學方法為先導,將課程內(nèi)容框架、課程內(nèi)容安排、課堂教學、實驗教學、課程評價等方面有機結(jié)合起來,充分體現(xiàn)本課程的先進性和創(chuàng)新性。課程的主線是交換機和路由器的設(shè)計與實現(xiàn)技術(shù),以此貫穿整個教學過程。
通過學習該課程,學員能夠了解并掌握網(wǎng)絡(luò)路由和交換的基本概念、工作原理以及交換機和路由器設(shè)計與實現(xiàn)的一系列關(guān)鍵技術(shù),在此基礎(chǔ)上把握計算機網(wǎng)絡(luò)交換機和路由器的性能特點和要求,以利于開發(fā)適合網(wǎng)絡(luò)系統(tǒng)的交換機和路由器;能夠基于科學原理和方法研究網(wǎng)絡(luò)工程領(lǐng)域的復(fù)雜工程問題,涉及計算機網(wǎng)絡(luò)系統(tǒng)設(shè)計、開發(fā)、部署、運行、維護、安全保障等方面的實驗設(shè)計、數(shù)據(jù)分析與解釋,并能通過信息綜合得到合理有效的結(jié)論。
根據(jù)教學大綱的要求,本課程的主要內(nèi)容包括概述、網(wǎng)絡(luò)設(shè)備體系結(jié)構(gòu)、交換機設(shè)計與實現(xiàn)、路由協(xié)議設(shè)計與實現(xiàn)、路由器軟件系統(tǒng)等理論。另外,課程會對幾種常見的代表性路由協(xié)議RIP、OSPF、BGP做基本的講授,還將路由安全、SDN/NFV等內(nèi)容作為高級部分進行介紹。
課程總計36學時,理論24學時,實驗12學時,具體構(gòu)成見表1。
本課程由淺入深地設(shè)計了3個實驗,分別是Packet Tracer組網(wǎng)實驗、Quagga以及NetMagic。
1)實驗1:Packet Tracer組網(wǎng)。
(1)實驗?zāi)康呐c任務(wù):針對理論授課部分的交換機原理、路由原理,在思科的網(wǎng)絡(luò)模擬器上進行驗證。
(2)實驗內(nèi)容:利用Packet Tracer驗證VLAN的劃分,靜態(tài)路由協(xié)議及動態(tài)路由協(xié)議中各選擇一種進行組網(wǎng)配置,要求提供組網(wǎng)結(jié)構(gòu)圖,并記錄協(xié)議的運行結(jié)果。
(3)實驗結(jié)果及要求:能在Packet Tracer上驗證VLAN、靜態(tài)路由和動態(tài)路由的有效性及正確性,記錄實驗結(jié)果,完成實驗報告。

表1 路由與交換技術(shù)課程教學日歷
2)實驗2:Quagga。
(1)實驗?zāi)康呐c任務(wù):要求學員熟悉Quagga路由軟件安裝、配置和使用方法,利用Quagga路由軟件對路由協(xié)議RIP、OSPF、BGP4進行配置,并通過RIP、OSPF、BGP4協(xié)議進行組網(wǎng);通過實驗讓學員了解并掌握RIP、OSPF、BGP4的工作原理和工作過程。
(2)實驗內(nèi)容:首先要求學員在Linux平臺上安裝配置Quagga路由軟件,然后對Quagga路由軟件進行配置,最后通過RIP、OSPF、BGP4協(xié)議進行組網(wǎng)實驗。
a.使用ip route 命令為所有模擬路由器設(shè)置靜態(tài)路由,使用show ip route命令查看并記錄路由狀態(tài)。
b.使用RIPv2、OSPFv2、BGP4路由協(xié)議進行配置并運行上述路由協(xié)議,使用對應(yīng)的查看路由命令查看并記錄路由狀態(tài)。通過配置運行,明白什么是動態(tài)路由,知道動態(tài)路由的優(yōu)勢是什么。了解3種路由協(xié)議的操作與設(shè)定,了解其工作模式和計算路由開銷的方法,比較它們之間的不同。
(3)實驗結(jié)果及要求:自主完成實驗靜態(tài)配置部分,所配置的靜態(tài)路由協(xié)議可正常工作,并能記錄工作過程;基于動態(tài)路由協(xié)議進行配置,測試連通情況,并在連通后斷開網(wǎng)絡(luò)查看路由狀態(tài),再重新連接網(wǎng)絡(luò),查看路由狀態(tài),記錄每一步路由狀態(tài)并分析。
3)實驗3:NetMagic。
(1)實驗?zāi)康呐c任務(wù):讓學員掌握NetMagic設(shè)備的操作與使用[1],掌握交換機邏輯功能與分組處理流程。主要任務(wù)是通過搭建NetMagic實驗平臺環(huán)境實現(xiàn)兩臺PC的基本交換功能。通過本實驗,學員熟悉NetMagic可編程實驗平臺的使用,通過交換機原型實例理解交換機進行分組交換的原理及其具體實現(xiàn)流程,能夠通過代碼實現(xiàn)交換功能的基本機制。
(2)實驗內(nèi)容:首先按照實驗手冊的要求,安裝并配置好NetMagic可編程實驗平臺相關(guān)的軟硬件環(huán)境,然后使用平臺提供的示例程序?qū)崿F(xiàn)NetMagic與外設(shè)主機的基本數(shù)據(jù)IO功能,最后基于示例程序設(shè)計實現(xiàn)交換機原型系統(tǒng),實現(xiàn)自學習二層以太網(wǎng)交換功能。
a.加載環(huán)境。燒錄NetMagic實驗平臺的硬件FPGA邏輯,使用fast-0.1.5軟件開發(fā)環(huán)境進行連通性測試,實現(xiàn)平臺與外設(shè)之間的分組收發(fā)功能。
b.功能設(shè)計。根據(jù)交換功能原理抽象交換邏輯功能,劃分分組處理邏輯模塊;設(shè)計合理的數(shù)據(jù)結(jié)構(gòu)、存儲對象和模塊之間的數(shù)據(jù)接口;為每個邏輯模塊畫出詳細的分組處理流程圖,并詳細描述不同分支的狀態(tài)與條件。
c.聯(lián)調(diào)驗證。按照交換機制原理和分組處理流程,進行各功能模塊的組裝、調(diào)試;搭建二層交換網(wǎng)絡(luò)進行數(shù)據(jù)通路測試驗證。
(3)實驗結(jié)果及要求:加載NetMagic可編程實驗平臺軟硬件環(huán)境后,可以實現(xiàn)分組的正常收發(fā)功能。學員設(shè)計的交換邏輯功能代碼能正確運行,源MAC學習可以將MAC地址存儲在確定位置,查表可準確得到該地址所在端口號或未命中狀態(tài)。分組輸出能根據(jù)不同查表結(jié)果進行不同的分發(fā)功能。所有功能邏輯正常執(zhí)行后,兩臺PC之間能相互ping通,并通過顯示函數(shù)看到兩臺交換機進行報文交換的動態(tài)過程;拔掉一臺主機網(wǎng)線后,可以觀測到無法ping通,并在指定時間內(nèi)從代碼打印輸出中看到啟動表項老化;兩臺主機網(wǎng)線交換后,從代碼輸出中能看到原來學習的MAC地址立即更新所在端口號信息。
課程的教學設(shè)計理念主要源自工程教育認證思想,在具體課程實施中主要采用了BOPPPS模型進行教學,見圖1。

圖1 工程認證的體系框架
根據(jù)工程認證的思想,開設(shè)本課程的主要目標是落實網(wǎng)絡(luò)工程專業(yè)的指標點,即具備對網(wǎng)絡(luò)工程領(lǐng)域復(fù)雜工程問題開展研究的能力,根據(jù)網(wǎng)絡(luò)核心設(shè)備交換機和路由器完成網(wǎng)絡(luò)基本原理的教學。由于部分教學內(nèi)容已在前導課程計算機網(wǎng)絡(luò)中講授,本課程重點在網(wǎng)絡(luò)設(shè)備的結(jié)構(gòu)、功能、設(shè)計上展開。鑒于工程認證要求培養(yǎng)學員解決復(fù)雜工程問題的能力,課程設(shè)計了一個基于NetMagic的交換功能實現(xiàn)的實驗。該實驗涉及硬件系統(tǒng)配置、組網(wǎng)、協(xié)議分析、編程及測試,3人一組完成實驗,同時強化了團隊協(xié)同溝通能力的培養(yǎng)。
具體教學過程采用BOPPPS模型進行設(shè)計。BOPPPS模型的6要素分別為Bridge in、Objective、Pre-test、Participatory Learning、Postest、Summary,中文一般翻譯為導入、目標、前測、參與式學習、后測、總結(jié),其中目標和參與式學習兩部分最為重要。每次課程,不管是理論還是實驗,均按照以上基本要求展開教學活動。目標部分每次課會列舉1~2個具體的學習目標,而參與式教學環(huán)節(jié)的設(shè)計,側(cè)重學員進行針對性的分組研討、實驗。在本門課的教學中,理論講授的實際時間不到總課時數(shù)的一半,課后學員需要花較多的時間完成實驗及實驗報告,3個實驗占最后成績的比例分別為10%、10%及30%,期末考試成績占最終成績的50%。

圖2 NetMagic平臺系統(tǒng)組成
NetMagic可編程網(wǎng)絡(luò)實驗平臺包括硬件開發(fā)環(huán)境與軟件開發(fā)環(huán)境,見圖2。硬件開發(fā)環(huán)境采用5級流水工作模式,主要包括報文解析模塊、關(guān)鍵字拼組模塊、通用查表模塊、動作執(zhí)行模塊和通用輸出模塊。軟件開發(fā)環(huán)境包括內(nèi)核開發(fā)環(huán)境與用戶態(tài)開發(fā)環(huán)境。內(nèi)核開發(fā)環(huán)境包括虛擬以太網(wǎng)驅(qū)動、多核IO轉(zhuǎn)發(fā)編程模塊、多進程UA編程模塊和用戶態(tài)零中斷快速IO編程模塊。虛擬以太網(wǎng)驅(qū)動使得NetMagic硬件設(shè)備端口可完全虛擬成主機邏輯設(shè)備,支持標準協(xié)議棧和上層標準SOCKET應(yīng)用。用戶態(tài)開發(fā)環(huán)境主要由FAST開發(fā)庫組成,主要包括支持硬件寄存器讀寫的libreg庫、支持硬件流表規(guī)則讀寫的librule模塊、支持多進程UA編程的libua模塊、支持OpenFlow原型交換機的libofp應(yīng)用庫,FAST庫支持基于libnet和libpcap開發(fā)庫進行編程。
筆者在FAST架構(gòu)下開發(fā)了一個基于NetMagic的交換實驗?zāi)K。硬件部分不需要學員修改,但需要安裝相應(yīng)的調(diào)試環(huán)境;軟件層面,將所有功能集中在一個*.c文件中,把6個核心函數(shù)刪除,留給學員編寫。所有功能之間的邏輯見圖3。
在圖3的基礎(chǔ)上,學員將完成函數(shù)的編寫并進行測試,正確的泛洪功能的實現(xiàn)代碼如下:


實驗的成績以現(xiàn)場驗收和實驗報告為主,現(xiàn)場驗收主要考查學員完成實驗的正確性和速率,而實驗報告主要用于學員的過程性評估。在驗收過程中,教師也會對學員進行相應(yīng)的提問,考察學員的能力。
采用NetMagic進行實驗教學的優(yōu)點有:在可編程的網(wǎng)絡(luò)設(shè)備開放環(huán)境下,學員可以通過代碼實現(xiàn)網(wǎng)絡(luò)設(shè)備的功能,對于學員深入理解網(wǎng)絡(luò)功能和原理具有顯著的效果;能夠與目前的軟件定義網(wǎng)絡(luò)、網(wǎng)絡(luò)功能虛擬化等網(wǎng)絡(luò)發(fā)展的新趨勢結(jié)合,使學員在后續(xù)本科畢業(yè)設(shè)計、研究生課程或工作后具備更好的網(wǎng)絡(luò)設(shè)備研發(fā)能力;也能為其他后續(xù)網(wǎng)絡(luò)工程相關(guān)課程、大學員創(chuàng)新實踐、電子信息競賽、信息安全競賽等多個創(chuàng)新實踐活動提供實驗基礎(chǔ)。

圖3 交換功能的邏輯
實驗中遇到的問題如下:
1)NetMagic實驗分工不夠科學。
在8小時的課堂實驗時間里,只有一組現(xiàn)場調(diào)試成功并通過了現(xiàn)場測試,造成進度滯后的原因是學員對可編程網(wǎng)絡(luò)設(shè)備的軟硬件環(huán)境不熟悉。由于學員使用的操作系統(tǒng)、虛擬機版本各異,在搭建環(huán)境的過程中出現(xiàn)了不少問題。3個人的小組,默認1人進行環(huán)境搭建與測試,1人寫代碼,1人負責實驗報告的撰寫,而實際完成情況往往是編程能力最好的學員也完成了其他工作,在分工協(xié)作上,還需要進行更科學的設(shè)置。
2)代碼閱讀和編寫的能力問題。
在Linux環(huán)境下用C語言編程,應(yīng)該是在大學一年級和二年級解決的問題,然而在實際實驗過程中,依然有學員存在讀寫程序能力不夠的問題,并在代碼寫作規(guī)范性方面普遍缺乏正規(guī)化訓練。
3)對網(wǎng)絡(luò)協(xié)議的理解不夠深入。
雖然在實驗之前學員已經(jīng)學習了計算機網(wǎng)絡(luò)等先導課程,但在代碼實現(xiàn)層面上,依然存在理論只是理論的問題。比如在泛洪過程中,大部分學員依然把報文發(fā)給所有端口,這種在考試時不會犯的錯誤在實踐中還會出現(xiàn),說明理論教學本身存在明顯不足。
根據(jù)以上問題,筆者提出如下幾條建議。
1)提供更豐富的實驗案例。
本次實驗,所有學員都完成相同的實驗內(nèi)容,這導致了一些問題,比如后做實驗的學員可以咨詢先做出來的學員,降低了主動思考并解決問題的難度。更科學合理的做法是提供一組實驗,為每個實驗設(shè)置難度系數(shù),記錄學員完成的時間,并互相評分。
2)豐富課前及課后的實驗環(huán)境。
本實驗均在課堂上完成,而實際上更合理的方式是在課堂上交流,實驗應(yīng)該安排在課下,這需要專業(yè)實驗室及NetMagic團隊提供支持。本次課程建立了一個微信交流群,在課下針對實驗中遇到的問題提供了一個交流平臺,大部分問題可以在線解決。改進的建議是在課前提供實驗環(huán)境,讓學員先通過已有案例熟悉開發(fā)環(huán)境。實驗開始后,提供一個更好的交流平臺,讓學員根據(jù)不同主題主動在專區(qū)中提出問題,并提供解決方案,這樣可以大幅提高學員完成實驗的效率。
3)打通網(wǎng)絡(luò)工程專業(yè)核心課程的實驗。
由于NetMagic平臺目前僅僅在路由與交換技術(shù)課程中使用,受限于課程時間安排,并未充分發(fā)揮出其在網(wǎng)絡(luò)教學系列課程中的作用。因此,可以考慮在計算機網(wǎng)絡(luò)、網(wǎng)絡(luò)工程、網(wǎng)絡(luò)工程課程設(shè)計等相關(guān)課程中安排相應(yīng)的實驗,必將更好地達到網(wǎng)絡(luò)工程人才培養(yǎng)的目標。
本次路由與交換技術(shù)的教學是可編程網(wǎng)絡(luò)設(shè)備在學校網(wǎng)絡(luò)工程專業(yè)本科專業(yè)教學中的首次嘗試。這次嘗試是成功的,但也暴露出不少問題。考慮到目前工程認證、新工科等高等教育的新要求,必須結(jié)合網(wǎng)絡(luò)工程專業(yè)的研究方向開展教學。為了更好地適應(yīng)網(wǎng)絡(luò)設(shè)備軟件定義化、虛擬化、智能化、通用化等發(fā)展趨勢,必須加強以NetMagic為代表的可編程網(wǎng)絡(luò)設(shè)備的實驗教學,通過更高強度、更科學合理的實驗環(huán)節(jié)訓練,不斷提升學員解決復(fù)雜工程問題的能力,為學員畢業(yè)后從事網(wǎng)絡(luò)專業(yè)工作的研發(fā)能力打下更堅實的基礎(chǔ)。
[1]李韜, 孫志剛. 面向下一代互聯(lián)網(wǎng)實驗平臺的新型報文處理模型: EasySwitch [J]. 計算機學報, 2011, 34(11): 2187-2196.