專利名稱:以太網(wǎng)端口控制裝置及方法
技術(shù)領(lǐng)域:
本發(fā)明涉及以太網(wǎng)的數(shù)據(jù)處理技術(shù),尤其涉及一種以太網(wǎng)端口控制裝置及方法。
背景技術(shù):
美國(guó)電氣電子工程師學(xué)會(huì)(IEEE)802. Ix協(xié)議是基于客戶端/服務(wù)器(Client/ Server)的訪問(wèn)控制和認(rèn)證協(xié)議。它可以限制未經(jīng)授權(quán)的用戶/設(shè)備通過(guò)接入端口(access port)訪問(wèn)局域網(wǎng)(LAN)。在獲得交換機(jī)或LAN提供的各種業(yè)務(wù)之前,802. Ix協(xié)議對(duì)連接到交換機(jī)端口上的用戶/設(shè)備進(jìn)行認(rèn)證和端口控制。在認(rèn)證通過(guò)之前,802. Ix協(xié)議只允許基于局域網(wǎng)的擴(kuò)展認(rèn)證協(xié)議(EAPoL)數(shù)據(jù)即認(rèn)證報(bào)文通過(guò)設(shè)備連接的以太網(wǎng)端口 ;報(bào)文在認(rèn)證通過(guò)以后,才可以順利地通過(guò)以太網(wǎng)端口。這種控制方式被稱為IEEE 802. Ix協(xié)議的以太網(wǎng)端口控制。目前實(shí)現(xiàn)IEEE 802. Ix協(xié)議的以太網(wǎng)端口控制是通過(guò)硬件來(lái)完成的。如圖1為現(xiàn)有的支持IEEE 802. Ix協(xié)議的以太網(wǎng)端口控制裝置的層次結(jié)構(gòu)圖。參見圖1,所述物理鏈路層中包括以太交換芯片,用于以太網(wǎng)的數(shù)據(jù)交換和IEEE 802. Ix協(xié)議的以太網(wǎng)端口控制, 屬于硬件;所述以太驅(qū)動(dòng)層中包括以太驅(qū)動(dòng)程序,用于驅(qū)動(dòng)以太網(wǎng)協(xié)議,所述內(nèi)核協(xié)議棧為應(yīng)用層和以太驅(qū)動(dòng)層之間各協(xié)議的總稱,用于傳輸應(yīng)用層和以太驅(qū)動(dòng)層之間的交互信息, 所述應(yīng)用層用于運(yùn)行各種上層應(yīng)用程序;所述以太驅(qū)動(dòng)層、內(nèi)核協(xié)議棧、以及應(yīng)用層中的各種應(yīng)用程序由設(shè)備的中央處理器(CPU)運(yùn)行,屬于軟件程序?,F(xiàn)有技術(shù)中,應(yīng)用層的認(rèn)證服務(wù)程序用于根據(jù)以太網(wǎng)中的客戶端發(fā)送的認(rèn)證報(bào)文對(duì)客戶端的MAC地址和/或以太網(wǎng)交換端口信息進(jìn)行前期認(rèn)證,將報(bào)文認(rèn)證參數(shù)設(shè)置在物理鏈路層的以太交換芯片的寄存器中,當(dāng)以太交換芯片收到報(bào)文后,由該以太交換芯片實(shí)現(xiàn)IEEE 802. Ix的以太網(wǎng)端口控制,也就是說(shuō),以太交換芯片根據(jù)寄存器中設(shè)置的報(bào)文認(rèn)證參數(shù)決定是否接收并向CPU上傳物理鏈路層所收到的報(bào)文,當(dāng)收到未認(rèn)證通過(guò)的報(bào)文時(shí),以太交換芯片會(huì)直接丟棄該報(bào)文,而不上交給CPU處理。但是,現(xiàn)有技術(shù)這種通過(guò)以太網(wǎng)交換芯片的硬件實(shí)現(xiàn)IEEE 802. Ix協(xié)議以太網(wǎng)端口控制的方式有如下缺點(diǎn)IEEE802. Ix認(rèn)證協(xié)議對(duì)硬件有直接的依賴性,在設(shè)備應(yīng)用IEEE802. Ix認(rèn)證協(xié)議的過(guò)程中需要硬件即以太網(wǎng)交換芯片來(lái)實(shí)現(xiàn)IEEE 802. Ix協(xié)議以太網(wǎng)端口控制,不但硬件的成本高昂,而且擴(kuò)展性差,在對(duì)端口控制方式進(jìn)行升級(jí)或修改時(shí)往往需要更換整個(gè)以太網(wǎng)交換芯片。另一方面,有相當(dāng)多的成本低廉的以太交換芯片卻不支持這種IEEE 802. Ix 協(xié)議的以太網(wǎng)端口控制,因此所以阻礙了 IEEE802. Ix認(rèn)證協(xié)議的廣泛應(yīng)用。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明的主要目的在于提供一種以太網(wǎng)端口控制裝置及方法,降低實(shí)現(xiàn)以太網(wǎng)端口控制的硬件成本,提高擴(kuò)展性。本發(fā)明的技術(shù)方案是這樣實(shí)現(xiàn)的
一種以太網(wǎng)端口控制裝置,包括物理鏈路層的以太交換芯片,用于將接收的報(bào)文傳給以太驅(qū)動(dòng)層;以太驅(qū)動(dòng)層的以太驅(qū)動(dòng)程序,用于在收到來(lái)自以太交換芯片的報(bào)文后確定該報(bào)文的類型和源介質(zhì)訪問(wèn)控制層MAC地址、以及接收該報(bào)文的以太交換芯片的端口,將所確定的信息輸入端口控制模塊,根據(jù)端口控制模塊返回的信息決定是否接收該報(bào)文;以太驅(qū)動(dòng)層的端口控制模塊,用于根據(jù)應(yīng)用層的認(rèn)證服務(wù)程序的配置命令設(shè)置報(bào)文認(rèn)證參數(shù),其中包括認(rèn)證通過(guò)的MAC地址和/或端口認(rèn)證信息;并根據(jù)所述以太驅(qū)動(dòng)程序的輸入信息和所述報(bào)文認(rèn)證參數(shù)進(jìn)行端口控制,所述端口控制包括如果以太驅(qū)動(dòng)程序所收到的報(bào)文的類型為認(rèn)證報(bào)文,則通知以太驅(qū)動(dòng)程序接收該報(bào)文并上傳到上層的認(rèn)證服務(wù)程序,如果是非認(rèn)證報(bào)文,則判斷該報(bào)文的MAC地址或接收該報(bào)文的以太交換芯片的端口是否為所述報(bào)文認(rèn)證參數(shù)中設(shè)置的已認(rèn)證通過(guò)的MAC地址或端口,如果是則通知以太驅(qū)動(dòng)程序接收該報(bào)文并上傳到相應(yīng)的上層應(yīng)用程序,否則丟棄該報(bào)文;應(yīng)用層的認(rèn)證服務(wù)程序,用于根據(jù)以太驅(qū)動(dòng)層上傳的認(rèn)證報(bào)文對(duì)MAC地址和/或端口信息進(jìn)行認(rèn)證,向端口控制模塊發(fā)送設(shè)置報(bào)文認(rèn)證參數(shù)的配置指令。優(yōu)選的,所述端口控制模塊具體包括兩個(gè)對(duì)外接口 一個(gè)為供所述認(rèn)證服務(wù)程序調(diào)用的報(bào)文認(rèn)證參數(shù)的配置接口,其中包括用于存儲(chǔ)所述報(bào)文認(rèn)證參數(shù)的數(shù)據(jù)結(jié)構(gòu),所述認(rèn)證服務(wù)程序通過(guò)該配置接口對(duì)該數(shù)據(jù)結(jié)構(gòu)中的報(bào)文認(rèn)證參數(shù)進(jìn)行訪問(wèn)和修改;另一個(gè)為供以太驅(qū)動(dòng)程序調(diào)用的認(rèn)證函數(shù)接口,用于根據(jù)所述以太驅(qū)動(dòng)程序的輸入信息和所述報(bào)文認(rèn)證參數(shù)進(jìn)行所述端口控制。優(yōu)選的,所述用于存儲(chǔ)所述報(bào)文認(rèn)證參數(shù)的數(shù)據(jù)結(jié)構(gòu)為Troc節(jié)點(diǎn)樹。優(yōu)選的,所述以太網(wǎng)端口控制裝置使用的認(rèn)證控制協(xié)議為IEEE802. Ix協(xié)議。一種以太網(wǎng)端口控制方法,包括以太交換芯片將收到的報(bào)文上傳給以太驅(qū)動(dòng)層;以太驅(qū)動(dòng)層確定來(lái)自以太交換芯片的所述報(bào)文的類型和源MAC地址,以及接收該報(bào)文的以太交換芯片的端口 ;如果所述報(bào)文類型為認(rèn)證報(bào)文,則接收并上傳到上層的認(rèn)證服務(wù)程序;所述上層的認(rèn)證服務(wù)程序根據(jù)認(rèn)證報(bào)文對(duì)MAC地址和/或端口信息進(jìn)行認(rèn)證,向以太驅(qū)動(dòng)層發(fā)送設(shè)置報(bào)文認(rèn)證參數(shù)的配置指令;所述以太驅(qū)動(dòng)層根據(jù)所述認(rèn)證服務(wù)程序的配置命令設(shè)置報(bào)文認(rèn)證參數(shù),所設(shè)置的報(bào)文認(rèn)證參數(shù)中包括認(rèn)證通過(guò)的MAC地址和/或端口認(rèn)證信息;如果所述以太驅(qū)動(dòng)層收到的來(lái)自以太交換芯片的報(bào)文的類型是非認(rèn)證報(bào)文,則判斷該報(bào)文的MAC地址或接收該報(bào)文的以太交換芯片的端口是否為所述報(bào)文認(rèn)證參數(shù)中設(shè)置的已認(rèn)證通過(guò)的MAC地址或端口,如果是則接收該報(bào)文并上傳到相應(yīng)的上層應(yīng)用程序, 否則丟棄該報(bào)文。優(yōu)選的,進(jìn)一步包括所設(shè)置的報(bào)文認(rèn)證參數(shù)中包括默認(rèn)接受的MAC地址表,所述以太驅(qū)動(dòng)層在確定來(lái)自以太交換芯片的報(bào)文的源MAC地址后,判斷該報(bào)文的源MAC地址是否在所述默認(rèn)接受的 MAC地址表中,如果是則接收該報(bào)文并上傳到相應(yīng)的上層應(yīng)用程序;
和/或,所設(shè)置的報(bào)文認(rèn)證參數(shù)中包括默認(rèn)拒絕的MAC地址表,所述以太驅(qū)動(dòng)層在確定來(lái)自以太交換芯片的報(bào)文的源MAC地址后,判斷該報(bào)文的源MAC地址是否在所述默認(rèn)拒絕的MAC地址表中,如果是則丟棄該報(bào)文。優(yōu)選的,所述報(bào)文認(rèn)證參數(shù)中進(jìn)一步設(shè)置啟動(dòng)標(biāo)記,用于表示是否啟用以太網(wǎng)端口控制;所述以太驅(qū)動(dòng)層收到的來(lái)自以太交換芯片的報(bào)文后,首先通過(guò)該啟動(dòng)標(biāo)記判斷是否啟用以太網(wǎng)端口控制,如果是,則執(zhí)行后續(xù)的所述以太網(wǎng)端口控制流程;否則接收該報(bào)文并上傳到相應(yīng)的上層應(yīng)用程序。優(yōu)選的,所述報(bào)文認(rèn)證參數(shù)中進(jìn)一步設(shè)置認(rèn)證模式標(biāo)記,用于表示是MAC認(rèn)證模式或者是端口認(rèn)證模式;所述以太驅(qū)動(dòng)層收到的來(lái)自以太交換芯片的報(bào)文后,通過(guò)該認(rèn)證模式標(biāo)記判斷是 MAC認(rèn)證模式還是端口認(rèn)證模式;如果是MAC認(rèn)證模式則判斷該報(bào)文的MAC地址是否為所述報(bào)文認(rèn)證參數(shù)中設(shè)置的已認(rèn)證通過(guò)的MAC地址,如果是則接收該報(bào)文并上傳到相應(yīng)的上層應(yīng)用程序,否則丟棄該報(bào)文;如果是端口認(rèn)證模式則判斷接收該報(bào)文的端口是否為所述報(bào)文認(rèn)證參數(shù)中設(shè)置的已認(rèn)證通過(guò)的端口,如果是則接收該報(bào)文并上傳到相應(yīng)的上層應(yīng)用程序,否則丟棄該報(bào)文。優(yōu)選的,所述以太驅(qū)動(dòng)層設(shè)置報(bào)文認(rèn)證參數(shù)的具體方式為以太驅(qū)動(dòng)層在操作系統(tǒng)內(nèi)核中創(chuàng)建和維護(hù)用于存儲(chǔ)所述報(bào)文認(rèn)證參數(shù)的節(jié)點(diǎn)樹的數(shù)據(jù)結(jié)構(gòu),所述認(rèn)證服務(wù)程序通過(guò)配置命令直接對(duì)該I^roc節(jié)點(diǎn)樹中的報(bào)文認(rèn)證參數(shù)進(jìn)行訪問(wèn)和修改。優(yōu)選的,所述以太網(wǎng)端口控制方法為使用IEEE802. Ix協(xié)議進(jìn)行控制的方法。與現(xiàn)有技術(shù)相比,本發(fā)明的所述以太交換芯片在收到所有報(bào)文后都會(huì)發(fā)送給以太驅(qū)動(dòng)層,在以太驅(qū)動(dòng)層增加了一個(gè)端口控制模塊,屬于以太驅(qū)動(dòng)層中的軟件模塊,用于根據(jù)所述認(rèn)證服務(wù)程序的配置命令設(shè)置報(bào)文認(rèn)證參數(shù),根據(jù)設(shè)置的報(bào)文認(rèn)證參數(shù)決定以太驅(qū)動(dòng)層是否接收并向上層上傳來(lái)自以太交換芯片的報(bào)文,從而不依賴以太交換芯片就可實(shí)現(xiàn)以太網(wǎng)端口控制,降低實(shí)現(xiàn)以太網(wǎng)端口控制的硬件成本,在對(duì)端口控制方式進(jìn)行升級(jí)或修改時(shí)只需對(duì)以太驅(qū)動(dòng)層中的軟件程序進(jìn)行修改即可,提高了擴(kuò)展性。本發(fā)明很好地解決了 IEEE802. Ix認(rèn)證協(xié)議對(duì)硬件的依賴性,采用成本低廉的以太網(wǎng)交換芯片就可以實(shí)現(xiàn)IEEE 802. Ix協(xié)議的以太網(wǎng)端口控制,降低了實(shí)現(xiàn)IEEE 802. Ix 協(xié)議的以太網(wǎng)端口控制的硬件成本,同時(shí),在對(duì)端口控制方式進(jìn)行升級(jí)或修改時(shí)只需對(duì)以太驅(qū)動(dòng)層中的軟件程序進(jìn)行修改即可,提高了實(shí)現(xiàn)IEEE 802. Ix協(xié)議的以太網(wǎng)端口控制的擴(kuò)展性。所以應(yīng)用本發(fā)明后,支持IEEE802. Ix認(rèn)證協(xié)議的設(shè)備,在選擇硬件時(shí)可以更多的去考慮成本等其它有利的因素而忽略是否支持IEEE802. Ix認(rèn)證的端口控制這個(gè)因素。
圖1為現(xiàn)有的支持IEEE 802. Ix協(xié)議的以太網(wǎng)端口控制裝置的層次結(jié)構(gòu)圖;圖2為本發(fā)明所述以太網(wǎng)端口控制裝置的層次結(jié)構(gòu)圖;圖3為本發(fā)明所述端口控制模塊對(duì)外提供的接口示意圖4為本發(fā)明所述以太網(wǎng)端口控制方法的一種流程圖;圖5為一種具體實(shí)施例中的一種節(jié)點(diǎn)樹的結(jié)構(gòu)圖;圖6為所述認(rèn)證函數(shù)接口被調(diào)用后的具體處理流程示意圖。
具體實(shí)施例方式下面結(jié)合附圖及具體實(shí)施例對(duì)本發(fā)明再作進(jìn)一步詳細(xì)的說(shuō)明。圖2為本發(fā)明所述以太網(wǎng)端口控制裝置的層次結(jié)構(gòu)圖。參見圖2,本發(fā)明所述的以太網(wǎng)端口控制裝置包括物理鏈路層的以太交換芯片,與現(xiàn)有技術(shù)相區(qū)別的是該以太交換芯片不進(jìn)行以太網(wǎng)端口控制,而是將接收的所有報(bào)文都傳給以太驅(qū)動(dòng)層。以太驅(qū)動(dòng)層的以太驅(qū)動(dòng)程序,用于在收到來(lái)自以太交換芯片的報(bào)文后確定該報(bào)文的類型和源介質(zhì)訪問(wèn)控制層(MAC)地址、以及接收該報(bào)文的以太交換芯片的端口,將所確定的信息輸入端口控制模塊,根據(jù)端口控制模塊返回的信息決定是否接收該報(bào)文;以太驅(qū)動(dòng)層的端口控制模塊,用于根據(jù)應(yīng)用層的認(rèn)證服務(wù)程序的配置命令設(shè)置報(bào)文認(rèn)證參數(shù),其中包括認(rèn)證通過(guò)的MAC地址和/或端口信息;并根據(jù)所述以太驅(qū)動(dòng)程序的輸入信息和所述報(bào)文認(rèn)證參數(shù)進(jìn)行端口控制,所述端口控制包括如果以太驅(qū)動(dòng)程序所收到的報(bào)文的類型為認(rèn)證報(bào)文,則通知以太驅(qū)動(dòng)程序接收該報(bào)文并上傳到上層的認(rèn)證服務(wù)程序,如果是非認(rèn)證報(bào)文,則判斷該報(bào)文的MAC地址或接收該報(bào)文的以太交換芯片的端口是否為所述報(bào)文認(rèn)證參數(shù)中設(shè)置的已認(rèn)證通過(guò)的MAC地址或端口,如果是則通知以太驅(qū)動(dòng)程序接收該報(bào)文并上傳到相應(yīng)的上層應(yīng)用程序,否則丟棄該報(bào)文;應(yīng)用層的認(rèn)證服務(wù)程序,用于根據(jù)以太驅(qū)動(dòng)層上傳的認(rèn)證報(bào)文對(duì)MAC地址和/或端口信息進(jìn)行認(rèn)證,向端口控制模塊發(fā)送設(shè)置報(bào)文認(rèn)證參數(shù)的配置指令。所述內(nèi)核協(xié)議棧為應(yīng)用層和以太驅(qū)動(dòng)層之間各協(xié)議的總稱,用于傳輸應(yīng)用層和以太驅(qū)動(dòng)層之間的交互信息,和現(xiàn)有的內(nèi)核協(xié)議棧相同,因此本文不再贅述。本發(fā)明所述實(shí)施例中,所述以太網(wǎng)端口控制裝置使用的認(rèn)證控制協(xié)議為 IEEE802. Ix協(xié)議。所述端口控制模塊具體是一個(gè)用于IEEE802. Ix協(xié)議的端口控制模塊。圖3為本發(fā)明所述端口控制模塊對(duì)外提供的接口示意圖。參見圖3,所述以太驅(qū)動(dòng)層的端口控制模塊具體包括兩個(gè)對(duì)外接口一個(gè)為供所述認(rèn)證服務(wù)程序調(diào)用的報(bào)文認(rèn)證參數(shù)的配置接口 301,其中包括用于存儲(chǔ)所述報(bào)文認(rèn)證參數(shù)的數(shù)據(jù)結(jié)構(gòu),所述認(rèn)證服務(wù)程序通過(guò)該配置接口 301對(duì)該數(shù)據(jù)結(jié)構(gòu)中的報(bào)文認(rèn)證參數(shù)進(jìn)行訪問(wèn)和修改;在圖3所示的實(shí)施例中,所述用于存儲(chǔ)所述報(bào)文認(rèn)證參數(shù)的數(shù)據(jù)結(jié)構(gòu)具體為在操作系統(tǒng)內(nèi)核中創(chuàng)建并維護(hù)的節(jié)點(diǎn)樹的數(shù)據(jù)結(jié)構(gòu),所述認(rèn)證服務(wù)程序通過(guò)配置命令對(duì)該節(jié)點(diǎn)樹中的報(bào)文認(rèn)證參數(shù)進(jìn)行訪問(wèn)和修改,從而可以配置認(rèn)證參數(shù)和收集認(rèn)證的狀態(tài)信息,例如可以通過(guò)對(duì)相應(yīng)的ftOC節(jié)點(diǎn)的寫入操作來(lái)實(shí)現(xiàn)認(rèn)證參數(shù)的配置,通過(guò)對(duì)相應(yīng)的節(jié)點(diǎn)的讀取操作來(lái)實(shí)現(xiàn)認(rèn)證信息的收集。另一個(gè)為供以太驅(qū)動(dòng)程序調(diào)用的認(rèn)證函數(shù)接口 302,用于根據(jù)所述以太驅(qū)動(dòng)程序的輸入信息和所述報(bào)文認(rèn)證參數(shù)進(jìn)行所述端口控制,即當(dāng)以太驅(qū)動(dòng)程序收到來(lái)自以太交換芯片的報(bào)文時(shí),調(diào)用該認(rèn)證函數(shù)接口 302判斷是否接收該報(bào)文。所述以太驅(qū)動(dòng)程序的輸入到認(rèn)證函數(shù)接口 302的信息為以太驅(qū)動(dòng)程序當(dāng)前所收到的報(bào)文的類型(通常以以太幀協(xié)議來(lái)標(biāo)識(shí),主要包括認(rèn)證報(bào)文類型和非認(rèn)證報(bào)文類型)和源介質(zhì)訪問(wèn)控制層(即MAC)地址、 以及接收該報(bào)文的以太交換芯片的端口。圖4為本發(fā)明所述以太網(wǎng)端口控制方法的一種流程圖。本發(fā)明所述的以太網(wǎng)端口控制方法為使用IEEE802. Ix協(xié)議進(jìn)行控制的方法。參見圖4,該方法主要包括步驟401、以太交換芯片將收到的報(bào)文上傳給以太驅(qū)動(dòng)層;步驟402、以太驅(qū)動(dòng)層確定來(lái)自以太交換芯片的所述報(bào)文的類型和源MAC地址,以及接收該報(bào)文的以太交換芯片的端口;步驟403、判斷所述報(bào)文類型是否為認(rèn)證報(bào)文,如果是則執(zhí)行步驟404,否則執(zhí)行步驟406 ;步驟404、接收該報(bào)文并上傳到上層的認(rèn)證服務(wù)程序,所述上層的認(rèn)證服務(wù)程序根據(jù)認(rèn)證報(bào)文對(duì)MAC地址和/或端口信息進(jìn)行認(rèn)證,向以太驅(qū)動(dòng)層發(fā)送設(shè)置報(bào)文認(rèn)證參數(shù)的配置指令;步驟405、所述以太驅(qū)動(dòng)層根據(jù)所述認(rèn)證服務(wù)程序的配置命令設(shè)置報(bào)文認(rèn)證參數(shù), 所設(shè)置的報(bào)文認(rèn)證參數(shù)中包括認(rèn)證通過(guò)的MAC地址和/或端口信息;步驟406、如果所述以太驅(qū)動(dòng)層收到的來(lái)自以太交換芯片的報(bào)文的類型是非認(rèn)證報(bào)文,則判斷該報(bào)文的MAC地址或接收該報(bào)文的以太交換芯片的端口是否為所述報(bào)文認(rèn)證參數(shù)中設(shè)置的已認(rèn)證通過(guò)的MAC地址或端口,如果是則接收該報(bào)文并上傳到相應(yīng)的上層應(yīng)用程序,否則丟棄該報(bào)文。在一種具體的實(shí)施例中,所述根據(jù)認(rèn)證服務(wù)程序的配置命令所設(shè)置的報(bào)文認(rèn)證參數(shù)中包括默認(rèn)接受的MAC地址表,所述以太驅(qū)動(dòng)層在確定來(lái)自以太交換芯片的報(bào)文的源 MAC地址后,需要判斷該報(bào)文的源MAC地址是否在所述默認(rèn)接受的MAC地址表中,如果是則接收該報(bào)文并上傳到相應(yīng)的上層應(yīng)用程序;和/或,所述根據(jù)認(rèn)證服務(wù)程序的配置命令所設(shè)置的報(bào)文認(rèn)證參數(shù)中還可包括默認(rèn)拒絕的MAC地址表,所述以太驅(qū)動(dòng)層在確定來(lái)自以太交換芯片的報(bào)文的源MAC地址后,需要判斷該報(bào)文的源MAC地址是否在所述默認(rèn)拒絕的MAC地址表中,如果是則丟棄該報(bào)文。在一種具體的實(shí)施例中,在所述報(bào)文認(rèn)證參數(shù)中還可以進(jìn)一步設(shè)置啟動(dòng)標(biāo)記,用于表示是否啟用以太網(wǎng)端口控制;所述以太驅(qū)動(dòng)層收到的來(lái)自以太交換芯片的報(bào)文后,首先通過(guò)該啟動(dòng)標(biāo)記判斷是否啟用以太網(wǎng)端口控制,如果是,則執(zhí)行后續(xù)的所述以太網(wǎng)端口控制流程,即如果所述報(bào)文類型為認(rèn)證報(bào)文,則接收并上傳到上層的認(rèn)證服務(wù)程序;如果是非認(rèn)證報(bào)文,則判斷該報(bào)文的MAC地址或接收該報(bào)文的以太交換芯片的端口是否為所述報(bào)文認(rèn)證參數(shù)中設(shè)置的已認(rèn)證通過(guò)的MAC地址或端口,如果是則接收該報(bào)文并上傳到相應(yīng)的上層應(yīng)用程序,否則丟棄該報(bào)文;如果通過(guò)所述啟動(dòng)標(biāo)記判定不需啟用以太網(wǎng)端口控制, 則接收所述報(bào)文并上傳到相應(yīng)的上層應(yīng)用程序。在另一種具體實(shí)施例中,所述報(bào)文認(rèn)證參數(shù)中還可以進(jìn)一步設(shè)置認(rèn)證模式標(biāo)記, 用于表示是MAC認(rèn)證模式或者是端口認(rèn)證模式;所述以太驅(qū)動(dòng)層收到的來(lái)自以太交換芯片的報(bào)文后,通過(guò)該認(rèn)證模式標(biāo)記判斷是MAC認(rèn)證模式還是端口認(rèn)證模式如果是MAC認(rèn)證模式則判斷該報(bào)文的MAC地址是否為所述報(bào)文認(rèn)證參數(shù)中設(shè)置的已認(rèn)證通過(guò)的MAC地址,如果是則接收該報(bào)文并上傳到相應(yīng)的上層應(yīng)用程序,否則丟棄該報(bào)文;
如果是端口認(rèn)證模式則判斷接收該報(bào)文的端口是否為所述報(bào)文認(rèn)證參數(shù)中設(shè)置的已認(rèn)證通過(guò)的端口,如果是則接收該報(bào)文并上傳到相應(yīng)的上層應(yīng)用程序,否則丟棄該報(bào)文。本發(fā)明所述的方法中,所述以太驅(qū)動(dòng)層設(shè)置報(bào)文認(rèn)證參數(shù)的一種具體方式為以太驅(qū)動(dòng)層在操作系統(tǒng)內(nèi)核中創(chuàng)建和維護(hù)用于存儲(chǔ)所述報(bào)文認(rèn)證參數(shù)的節(jié)點(diǎn)樹的數(shù)據(jù)結(jié)構(gòu),所述認(rèn)證服務(wù)程序通過(guò)配置命令直接對(duì)該節(jié)點(diǎn)樹中的報(bào)文認(rèn)證參數(shù)進(jìn)行訪問(wèn)和修改。所述供上層認(rèn)證服務(wù)程序調(diào)用的配置接口的節(jié)點(diǎn)樹,是一種對(duì)應(yīng)的文件系統(tǒng)的目錄結(jié)構(gòu)。該節(jié)點(diǎn)樹由所述端口控制模塊創(chuàng)建,該節(jié)點(diǎn)樹由上層的認(rèn)證服務(wù)軟件來(lái)配置,具體是通過(guò)寫對(duì)應(yīng)的節(jié)點(diǎn)來(lái)實(shí)現(xiàn)對(duì)報(bào)文認(rèn)證參數(shù)的配置。所述認(rèn)證服務(wù)軟件有設(shè)置界面,管理員可以根據(jù)需要進(jìn)行設(shè)置。圖5為一種具體實(shí)施例中的一種節(jié)點(diǎn)樹的結(jié)構(gòu)圖。參見圖5,其中各個(gè)節(jié)點(diǎn)的取值和作用如下介紹Enable 是否啟用802. Ix協(xié)議以太網(wǎng)端口控制的啟動(dòng)標(biāo)記,可以向該節(jié)點(diǎn)寫入1 或者0來(lái)控制是否啟動(dòng)802. Ix的以太網(wǎng)端口控制。其中為1表示啟動(dòng)802. Ix的以太網(wǎng)端口控制,為0則表示不啟動(dòng)。例如在具體應(yīng)用中當(dāng)上層認(rèn)證服務(wù)軟件啟動(dòng)時(shí),向該節(jié)點(diǎn)寫入1,表示開啟以太網(wǎng)端口控制。當(dāng)上層軟件退出時(shí)向該節(jié)點(diǎn)寫入0表示停止以太網(wǎng)端口控制,當(dāng)停止以太端口控制后,便接收所有報(bào)文。Mode :802. Ix協(xié)議認(rèn)證模式的標(biāo)記,可以向該節(jié)點(diǎn)寫入0或者1來(lái)控制802. Ix協(xié)議的認(rèn)證模式。1表示為端口認(rèn)證模式,0表示是MAC認(rèn)證模式。該認(rèn)證模式是由管理員根據(jù)具體的業(yè)務(wù)要求來(lái)配置的。AcceptMAC 用于存儲(chǔ)默認(rèn)接受的MAC地址表,可以向該節(jié)點(diǎn)寫入MAC地址表來(lái)默認(rèn)接受部分MAC地址。對(duì)于默認(rèn)接受的MAC地址可以不通過(guò)認(rèn)證直接通過(guò)該端口。該節(jié)點(diǎn)的值也是由管理員來(lái)配置。DenyMAC 用于存儲(chǔ)默認(rèn)拒絕的MAC地址表,可以向該節(jié)點(diǎn)寫入MAC地址表來(lái)默認(rèn)拒絕部分MAC地址。對(duì)于默認(rèn)拒絕的MAC地址無(wú)法通過(guò)認(rèn)證,數(shù)據(jù)也無(wú)法通過(guò)該端口。該節(jié)點(diǎn)的值也是由管理員來(lái)配置。AuthMAC 用于存儲(chǔ)已經(jīng)認(rèn)證通過(guò)的MAC地址,認(rèn)證模式為基于MAC模式時(shí),每個(gè)通過(guò)認(rèn)證的MAC地址會(huì)存在該節(jié)點(diǎn)中。當(dāng)一個(gè)客戶端發(fā)送的認(rèn)證報(bào)文通過(guò)了上層認(rèn)證服務(wù)軟件的認(rèn)證后,上層認(rèn)證服務(wù)軟件會(huì)將該客戶端的MAC地址(即該客戶端發(fā)送的報(bào)文的源MAC 地址)寫入該節(jié)點(diǎn)中。Ports 該目錄下存放每個(gè)現(xiàn)有的端口對(duì)應(yīng)的一個(gè)節(jié)點(diǎn)。每張以太交換芯片都有多個(gè)端口,此處假設(shè)有η個(gè)端口,分別是PO Ρη,所述PO Pn的節(jié)點(diǎn)存放的是對(duì)應(yīng)的各個(gè)以太交換芯片的端口是否認(rèn)證通過(guò)的標(biāo)識(shí)。例如圖5中的節(jié)點(diǎn)Pl的值是端口 1是否認(rèn)證通過(guò)的標(biāo)志。1表示該端口已經(jīng)認(rèn)證通過(guò),0表示該端口沒(méi)有認(rèn)證通過(guò)。當(dāng)一個(gè)以太交換芯片的端口通過(guò)了上層認(rèn)證服務(wù)軟件的認(rèn)證后,上層認(rèn)證服務(wù)軟件會(huì)把該標(biāo)識(shí)寫入對(duì)應(yīng)的ftOC節(jié)點(diǎn)中。此外,本實(shí)施例中之所以分節(jié)點(diǎn)存已認(rèn)證的端口,第一是因?yàn)橐粡堃蕴粨Q芯片的端口數(shù)有限,一般需要控制的端口為4個(gè)。第二是因?yàn)榉奖銛U(kuò)展,可以方便存儲(chǔ)每個(gè)端口的私有屬性。第三是因?yàn)楦暇幊踢壿?。所述認(rèn)證函數(shù)接口 302供以太驅(qū)動(dòng)程序調(diào)用的,具體的調(diào)用時(shí)機(jī)是以太交換芯片每收到一個(gè)報(bào)文都會(huì)將該報(bào)文上報(bào)給以太驅(qū)動(dòng)層的以太驅(qū)動(dòng)程序,每當(dāng)以太驅(qū)動(dòng)程序收到一個(gè)來(lái)自以太交換芯片的報(bào)文后,確定該報(bào)文的類型(即是否為認(rèn)證報(bào)文)和源MAC地址(即發(fā)送該報(bào)文的客戶端的MAC地址)、以及接收該報(bào)文的以太交換芯片的端口,然后調(diào)用所述認(rèn)證函數(shù)接口,將前述所確定的信息輸入到認(rèn)證函數(shù)接口中,認(rèn)證函數(shù)接口執(zhí)行具體的處理流程,向以太驅(qū)動(dòng)程序返回是否接收該報(bào)文的結(jié)果,例如認(rèn)證函數(shù)的返回值為1 或者0。其中1表示接收該報(bào)文,0表示丟棄該報(bào)文。所述圖6為所述認(rèn)證函數(shù)接口被調(diào)用后的具體處理流程示意圖。參見圖6,該流程包括步驟601、首先查詢所述ftOC樹的Enab 1 e節(jié)點(diǎn)的值,判斷是否啟動(dòng)802. Ix的以太網(wǎng)端口控制,如果是則執(zhí)行步驟602,否則認(rèn)證函數(shù)接口返回1,即通知以太驅(qū)動(dòng)程序接收當(dāng)前報(bào)文并上報(bào)到相應(yīng)的上層應(yīng)用程序。 步驟602、查詢所述樹的Acc印tMAC節(jié)點(diǎn)的值,判斷輸入的源MAC地址是否在該Acc印tMAC節(jié)點(diǎn)所記錄的默認(rèn)接受的MAC地址表中,如果是則返回1,否則執(zhí)行步驟603。步驟603、查詢所述樹的DenyMAC節(jié)點(diǎn)的值,判斷輸入的源MAC地址是否在該 DenyMAC節(jié)點(diǎn)所記錄的默認(rèn)拒絕的MAC地址表中,如果是則返回0,否則執(zhí)行步驟604。步驟604、判斷輸入的報(bào)文類型(即以太幀協(xié)議標(biāo)識(shí))是否為EAPOL報(bào)文即認(rèn)證報(bào)文,如果是,則執(zhí)行步驟605,否則執(zhí)行步驟606。步驟605、判斷是否為EAPOL-Mart報(bào)文(即認(rèn)證報(bào)文的開始報(bào)文),如果是則將接收該報(bào)文的以太交換芯片的端口信息隱藏在該報(bào)文的尾部,然后返回1 ;否則直接返回 1。此步驟的作用是對(duì)于認(rèn)證報(bào)文,上層的認(rèn)證服務(wù)程序通常不知道該報(bào)文由哪個(gè)以太交換芯片的端口接收的,因此在認(rèn)證報(bào)文的開始報(bào)文中需要增加接收該報(bào)文的以太交換芯片的端口信息,供上層的認(rèn)證服務(wù)程序進(jìn)行認(rèn)證處理,如果該端口被認(rèn)證通過(guò),則認(rèn)證服務(wù)程序?qū)⑼ㄟ^(guò)配置命令將所述樹的Ports目錄的該端口對(duì)應(yīng)的節(jié)點(diǎn)的值寫為1。步驟606、查詢所述樹的Mode節(jié)點(diǎn)的值,判斷當(dāng)前的802. Ix協(xié)議認(rèn)證模式是端口認(rèn)證模式還是MAC認(rèn)證模式,如果是端口認(rèn)證模式,則查詢所述Ports目錄下的與輸入的端口源信息對(duì)應(yīng)的節(jié)點(diǎn)值(即0或1),并返回該節(jié)點(diǎn)值;如果是MAC認(rèn)證模式,則執(zhí)行步驟 607。步驟607、查詢所述樹的AuthMAC節(jié)點(diǎn)的值,判斷輸入的源MAC地址是否在該 AuthMAC節(jié)點(diǎn)所記錄的已認(rèn)證通過(guò)的MAC地址表中,如果是則返回1,否則返回0。通過(guò)上述處理,所述認(rèn)證函數(shù)接口向以太驅(qū)動(dòng)程序返回0或1。如果返回的是0, 則表示接收該報(bào)文,以太驅(qū)動(dòng)程序則接收該報(bào)文并上傳到上層該報(bào)文對(duì)應(yīng)的相應(yīng)程序;如果返回的是1,則表示丟棄該報(bào)文,則以太驅(qū)動(dòng)程序丟棄所收到的對(duì)應(yīng)報(bào)文。以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明保護(hù)的范圍之內(nèi)。
權(quán)利要求
1.一種以太網(wǎng)端口控制裝置,其特征在于,包括物理鏈路層的以太交換芯片,用于將接收的報(bào)文傳給以太驅(qū)動(dòng)層; 以太驅(qū)動(dòng)層的以太驅(qū)動(dòng)程序,用于在收到來(lái)自以太交換芯片的報(bào)文后確定該報(bào)文的類型和源介質(zhì)訪問(wèn)控制層MAC地址、以及接收該報(bào)文的以太交換芯片的端口,將所確定的信息輸入端口控制模塊,根據(jù)端口控制模塊返回的信息決定是否接收該報(bào)文;以太驅(qū)動(dòng)層的端口控制模塊,用于根據(jù)應(yīng)用層的認(rèn)證服務(wù)程序的配置命令設(shè)置報(bào)文認(rèn)證參數(shù),其中包括認(rèn)證通過(guò)的MAC地址和/或端口認(rèn)證信息;并根據(jù)所述以太驅(qū)動(dòng)程序的輸入信息和所述報(bào)文認(rèn)證參數(shù)進(jìn)行端口控制,所述端口控制包括如果以太驅(qū)動(dòng)程序所收到的報(bào)文的類型為認(rèn)證報(bào)文,則通知以太驅(qū)動(dòng)程序接收該報(bào)文并上傳到上層的認(rèn)證服務(wù)程序,如果是非認(rèn)證報(bào)文,則判斷該報(bào)文的MAC地址或接收該報(bào)文的以太交換芯片的端口是否為所述報(bào)文認(rèn)證參數(shù)中設(shè)置的已認(rèn)證通過(guò)的MAC地址或端口,如果是則通知以太驅(qū)動(dòng)程序接收該報(bào)文并上傳到相應(yīng)的上層應(yīng)用程序,否則丟棄該報(bào)文;應(yīng)用層的認(rèn)證服務(wù)程序,用于根據(jù)以太驅(qū)動(dòng)層上傳的認(rèn)證報(bào)文對(duì)MAC地址和/或端口信息進(jìn)行認(rèn)證,向端口控制模塊發(fā)送設(shè)置報(bào)文認(rèn)證參數(shù)的配置指令。
2.根據(jù)權(quán)利要求1所述的裝置,其特征在于,所述端口控制模塊具體包括兩個(gè)對(duì)外接 Π 一個(gè)為供所述認(rèn)證服務(wù)程序調(diào)用的報(bào)文認(rèn)證參數(shù)的配置接口,其中包括用于存儲(chǔ)所述報(bào)文認(rèn)證參數(shù)的數(shù)據(jù)結(jié)構(gòu),所述認(rèn)證服務(wù)程序通過(guò)該配置接口對(duì)該數(shù)據(jù)結(jié)構(gòu)中的報(bào)文認(rèn)證參數(shù)進(jìn)行訪問(wèn)和修改;另一個(gè)為供以太驅(qū)動(dòng)程序調(diào)用的認(rèn)證函數(shù)接口,用于根據(jù)所述以太驅(qū)動(dòng)程序的輸入信息和所述報(bào)文認(rèn)證參數(shù)進(jìn)行所述端口控制。
3.根據(jù)權(quán)利要求2所述的裝置,其特征在于,所述用于存儲(chǔ)所述報(bào)文認(rèn)證參數(shù)的數(shù)據(jù)結(jié)構(gòu)為Jroc節(jié)點(diǎn)樹。
4.根據(jù)權(quán)利要求1至3任一項(xiàng)所述的裝置,其特征在于,所述以太網(wǎng)端口控制裝置使用的認(rèn)證控制協(xié)議為ΙΕΕΕ802. Ix協(xié)議。
5.一種以太網(wǎng)端口控制方法,其特征在于,包括 以太交換芯片將收到的報(bào)文上傳給以太驅(qū)動(dòng)層;以太驅(qū)動(dòng)層確定來(lái)自以太交換芯片的所述報(bào)文的類型和源MAC地址,以及接收該報(bào)文的以太交換芯片的端口 ;如果所述報(bào)文類型為認(rèn)證報(bào)文,則接收并上傳到上層的認(rèn)證服務(wù)程序;所述上層的認(rèn)證服務(wù)程序根據(jù)認(rèn)證報(bào)文對(duì)MAC地址和/或端口信息進(jìn)行認(rèn)證,向以太驅(qū)動(dòng)層發(fā)送設(shè)置報(bào)文認(rèn)證參數(shù)的配置指令;所述以太驅(qū)動(dòng)層根據(jù)所述認(rèn)證服務(wù)程序的配置命令設(shè)置報(bào)文認(rèn)證參數(shù),所設(shè)置的報(bào)文認(rèn)證參數(shù)中包括認(rèn)證通過(guò)的MAC地址和/或端口認(rèn)證信息;如果所述以太驅(qū)動(dòng)層收到的來(lái)自以太交換芯片的報(bào)文的類型是非認(rèn)證報(bào)文,則判斷該報(bào)文的MAC地址或接收該報(bào)文的以太交換芯片的端口是否為所述報(bào)文認(rèn)證參數(shù)中設(shè)置的已認(rèn)證通過(guò)的MAC地址或端口,如果是則接收該報(bào)文并上傳到相應(yīng)的上層應(yīng)用程序,否則丟棄該報(bào)文。
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,進(jìn)一步包括所設(shè)置的報(bào)文認(rèn)證參數(shù)中包括默認(rèn)接受的MAC地址表,所述以太驅(qū)動(dòng)層在確定來(lái)自以太交換芯片的報(bào)文的源MAC地址后,判斷該報(bào)文的源MAC地址是否在所述默認(rèn)接受的MAC 地址表中,如果是則接收該報(bào)文并上傳到相應(yīng)的上層應(yīng)用程序;和/或,所設(shè)置的報(bào)文認(rèn)證參數(shù)中包括默認(rèn)拒絕的MAC地址表,所述以太驅(qū)動(dòng)層在確定來(lái)自以太交換芯片的報(bào)文的源MAC地址后,判斷該報(bào)文的源MAC地址是否在所述默認(rèn)拒絕的MAC地址表中,如果是則丟棄該報(bào)文。
7.根據(jù)權(quán)利要求5所述的方法,其特征在于,所述報(bào)文認(rèn)證參數(shù)中進(jìn)一步設(shè)置啟動(dòng)標(biāo)記,用于表示是否啟用以太網(wǎng)端口控制;所述以太驅(qū)動(dòng)層收到的來(lái)自以太交換芯片的報(bào)文后,首先通過(guò)該啟動(dòng)標(biāo)記判斷是否啟用以太網(wǎng)端口控制,如果是,則執(zhí)行后續(xù)的所述以太網(wǎng)端口控制流程;否則接收該報(bào)文并上傳到相應(yīng)的上層應(yīng)用程序。
8.根據(jù)權(quán)利要求5所述的方法,其特征在于,所述報(bào)文認(rèn)證參數(shù)中進(jìn)一步設(shè)置認(rèn)證模式標(biāo)記,用于表示是MAC認(rèn)證模式或者是端口認(rèn)證模式;所述以太驅(qū)動(dòng)層收到的來(lái)自以太交換芯片的報(bào)文后,通過(guò)該認(rèn)證模式標(biāo)記判斷是MAC 認(rèn)證模式還是端口認(rèn)證模式;如果是MAC認(rèn)證模式則判斷該報(bào)文的MAC地址是否為所述報(bào)文認(rèn)證參數(shù)中設(shè)置的已認(rèn)證通過(guò)的MAC地址,如果是則接收該報(bào)文并上傳到相應(yīng)的上層應(yīng)用程序,否則丟棄該報(bào)文;如果是端口認(rèn)證模式則判斷接收該報(bào)文的端口是否為所述報(bào)文認(rèn)證參數(shù)中設(shè)置的已認(rèn)證通過(guò)的端口,如果是則接收該報(bào)文并上傳到相應(yīng)的上層應(yīng)用程序,否則丟棄該報(bào)文。
9.根據(jù)權(quán)利要求5所述的方法,其特征在于,所述以太驅(qū)動(dòng)層設(shè)置報(bào)文認(rèn)證參數(shù)的具體方式為以太驅(qū)動(dòng)層在操作系統(tǒng)內(nèi)核中創(chuàng)建和維護(hù)用于存儲(chǔ)所述報(bào)文認(rèn)證參數(shù)的節(jié)點(diǎn)樹的數(shù)據(jù)結(jié)構(gòu),所述認(rèn)證服務(wù)程序通過(guò)配置命令直接對(duì)該節(jié)點(diǎn)樹中的報(bào)文認(rèn)證參數(shù)進(jìn)行訪問(wèn)和修改。
10.根據(jù)權(quán)利要求5至9任一項(xiàng)所述的方法,其特征在于,所述以太網(wǎng)端口控制方法為使用IEEE802. Ix協(xié)議進(jìn)行控制的方法。
全文摘要
本發(fā)明公開了一種以太網(wǎng)端口控制裝置和方法。所述裝置包括物理鏈路層的以太交換芯片、以太驅(qū)動(dòng)層的以太驅(qū)動(dòng)程序和端口控制模塊、以及應(yīng)用層的認(rèn)證服務(wù)程序。所述以太交換芯片在收到所有報(bào)文后都會(huì)發(fā)送給以太驅(qū)動(dòng)層,所述以太驅(qū)動(dòng)層的端口控制模塊屬于以太驅(qū)動(dòng)層中的軟件模塊,用于根據(jù)所述認(rèn)證服務(wù)程序的配置命令設(shè)置報(bào)文認(rèn)證參數(shù),根據(jù)設(shè)置的報(bào)文認(rèn)證參數(shù)決定以太驅(qū)動(dòng)層是否接收并向上層上傳來(lái)自以太交換芯片的報(bào)文,從而不依賴以太交換芯片就可實(shí)現(xiàn)以太網(wǎng)端口控制,降低實(shí)現(xiàn)以太網(wǎng)端口控制的硬件成本,在對(duì)端口控制方式進(jìn)行升級(jí)或修改時(shí)只需對(duì)以太驅(qū)動(dòng)層中的軟件程序進(jìn)行修改即可,提高了擴(kuò)展性。
文檔編號(hào)H04L12/28GK102571603SQ201210032478
公開日2012年7月11日 申請(qǐng)日期2012年2月14日 優(yōu)先權(quán)日2012年2月14日
發(fā)明者鄧海, 黎建 申請(qǐng)人:成都欣點(diǎn)科技有限公司