本發(fā)明涉及一種網(wǎng)絡設備的接口板、包括該接口板的一種網(wǎng)絡設備、以及一種用于網(wǎng)絡設備中的報文轉(zhuǎn)發(fā)方法。
背景技術(shù):
網(wǎng)絡設備中通常包括轉(zhuǎn)發(fā)板和至少兩塊接口板,并且,轉(zhuǎn)發(fā)板和每塊接口板之間可以利用PCI-E(Peripheral Component Interconnect Express,高速外設部件互連標準)總線實現(xiàn)互連。
當選用PCI-E總線實現(xiàn)轉(zhuǎn)發(fā)板和接口板之間的互連時,如何提高不同接口板之間的轉(zhuǎn)發(fā)性能、并降低轉(zhuǎn)發(fā)板的CPU占用率成為現(xiàn)有技術(shù)需要解決的問題。
技術(shù)實現(xiàn)要素:
有鑒于此,本發(fā)明的實施例提供了一種網(wǎng)絡設備的接口板、包括該接口板的一種網(wǎng)絡設備、以及一種用于網(wǎng)絡設備中的報文轉(zhuǎn)發(fā)方法。
在一個實施例中提供了一種網(wǎng)絡設備的接口板,包括PCI-E端點、以太交換芯片、板卡內(nèi)存、以及邏輯裝置;
PCI-E端點通過PCI-E總線連接網(wǎng)絡設備的轉(zhuǎn)發(fā)板中對應該接口板的PCI-E根復合體;
以太交換芯片從網(wǎng)絡設備的外部接收以太數(shù)據(jù)報文;
板卡內(nèi)存與網(wǎng)絡設備的其它接口板的板卡內(nèi)存、以及轉(zhuǎn)發(fā)板的系統(tǒng)內(nèi)存共同映射在網(wǎng)絡設備的PCI-E內(nèi)存空間中,并且,該板卡內(nèi)存在PCI-E內(nèi)存空間中映射的地址區(qū)間不同于其它接口板的板卡內(nèi)存、以及轉(zhuǎn)發(fā)板的系統(tǒng)內(nèi)存在PCI-E內(nèi)存空間中映射的地址區(qū)間;
邏輯裝置從以太交換芯片接收以太數(shù)據(jù)報文、并確定該以太數(shù)據(jù)報文的目的板卡;其中,當成功確定從以太交換芯片接收到的以太數(shù)據(jù)報文以的目的板卡為網(wǎng)絡設備的其它接口板時,邏輯裝置將該以太數(shù)據(jù)報文封裝為以該其它接口板的板卡內(nèi)存的PCI-E內(nèi)存空間地址為目的地址的PCI-E報文,以供PCI-E端點將該PCI-E報文向轉(zhuǎn)發(fā)板轉(zhuǎn)發(fā);
邏輯裝置還從板卡內(nèi)存獲取來自其它接口板的PCI-E報文,并從獲取到的該PCI-E報文 中解析出以太數(shù)據(jù)報文轉(zhuǎn)發(fā)至以太交換芯片。
可選地,邏輯裝置維護有板卡標識與PCI-E內(nèi)存空間地址的映射表,用于根據(jù)從第一以太交換芯片接收到的以太數(shù)據(jù)報文的目的板卡,確定封裝有該以太數(shù)據(jù)報文的PCI-E報文的目的地址;并且,根據(jù)轉(zhuǎn)發(fā)板的CPU的配置,在板卡標識與PCI-E內(nèi)存空間地址的映射表中創(chuàng)建表項。
可選地,邏輯裝置中維護有以太MAC地址與板卡標識的映射表,用于根據(jù)以太數(shù)據(jù)報文的目的MAC地址確定該以太數(shù)據(jù)報文的目的板卡;并且,來自其它接口板的PCI-E報文中封裝有其它接口板從網(wǎng)絡設備的外部接收到的以太數(shù)據(jù)報文、并攜帶有該其它接口板的板卡標識;以及,邏輯裝置根據(jù)從該PCI-E報文中解析出的以太數(shù)據(jù)報文的源MAC地址和該PCI-E報文中攜帶的板卡標識,在以太MAC地址與板卡標識的映射表創(chuàng)建對應該其它接口板的表項。
可選地,當確定從以太交換芯片接收到的以太數(shù)據(jù)報文以的目的板卡失敗時,邏輯裝置將該以太數(shù)據(jù)報文封裝為分別以網(wǎng)絡設備的每一塊其它接口板的卡內(nèi)存的PCI-E內(nèi)存空間地址為目的地址的PCI-E報文,以供PCI-E端點將PCI-E報文向轉(zhuǎn)發(fā)板轉(zhuǎn)發(fā)。
可選地,該接口板與其它接口板的板卡內(nèi)存在PCI-E內(nèi)存空間中映射的地址區(qū)間中包括多個數(shù)據(jù)報文緩存片、以及至少一個控制報文緩存片;當確定從以太交換芯片接收到的以太數(shù)據(jù)報文以其它接口板為目的板卡時,邏輯裝置為PCI-E報文設定的目的地址為該其它接口板的板卡內(nèi)存映射的一個空閑的數(shù)據(jù)報文緩存片的PCI-E內(nèi)存空間地址,并且,邏輯裝置還根據(jù)該PCI-E報文的目的地址將該其它接口板的對應的數(shù)據(jù)報文緩存片的狀態(tài)記錄由空閑變更為占用;當從來自其它接口板的PCI-E報文中解析出的以太數(shù)據(jù)報文轉(zhuǎn)發(fā)至以太交換芯片時,邏輯裝置構(gòu)造攜帶有數(shù)據(jù)報文緩存片釋放信息的PCI-E報文、并且構(gòu)造的PCI-E報文以該其它接口板的板卡內(nèi)存映射的控制報文緩存片為目的地址,以供PCI-E端點將構(gòu)造的該PCI-E報文向轉(zhuǎn)發(fā)板轉(zhuǎn)發(fā);當從來自其它接口板的PCI-E報文中解析出數(shù)據(jù)報文緩存片釋放信息時,邏輯裝置根據(jù)解析出的數(shù)據(jù)報文緩存片釋放信息將該其它接口板的對應的數(shù)據(jù)報文緩存片的狀態(tài)記錄由占用重置為空閑。
可選地,當確定從以太交換芯片接收到的以太數(shù)據(jù)報文的目的板卡為網(wǎng)絡設備的轉(zhuǎn)發(fā)板時,邏輯裝置將該以太數(shù)據(jù)報文封裝為以系統(tǒng)內(nèi)存的PCI-E內(nèi)存空間地址為目的地址的PCI-E報文,以供PCI-E端點將該PCI-E報文向轉(zhuǎn)發(fā)板轉(zhuǎn)發(fā)、并被寫入轉(zhuǎn)發(fā)板的系統(tǒng)內(nèi)存中。
可選地,邏輯裝置中維護有以太MAC地址與板卡標識的映射表,用于根據(jù)以太數(shù)據(jù)報文的目的MAC地址確定該以太數(shù)據(jù)報文的目的板卡;其中,邏輯裝置根據(jù)CPU在網(wǎng)絡設備初始化時的配置,在以太MAC地址與板卡標識的映射表中對應轉(zhuǎn)發(fā)板的表項;并且,邏輯裝置從板卡內(nèi)存獲取的來自其它接口板的PCI-E報文中,封裝有其它接口板從網(wǎng)絡設備的外 部接收到的以太數(shù)據(jù)報文、并攜帶有該其它接口板的板卡標識;以及,邏輯裝置根據(jù)從該PCI-E報文中解析出的以太數(shù)據(jù)報文的源MAC地址和該PCI-E報文中攜帶的板卡標識,在以太MAC地址與板卡標識的映射表創(chuàng)建對應該其它接口板的表項。
在一個實施例中提供了一種網(wǎng)絡設備,包括轉(zhuǎn)發(fā)板和至少兩塊接口板,轉(zhuǎn)發(fā)板包括CPU、系統(tǒng)內(nèi)存、系統(tǒng)內(nèi)存控制器、以及分別對應各接口板的PCI-E根復合體,每塊接口板包括以太交換芯片、邏輯裝置、板卡內(nèi)存、以及通過PCI-E總線連接轉(zhuǎn)發(fā)板中對應的PCI-E根復合體的PCI-E端點;
各接口板的以太交換芯片從網(wǎng)絡設備的外部接收以太數(shù)據(jù)報文;
各接口板的板卡內(nèi)存以及轉(zhuǎn)發(fā)板的系統(tǒng)內(nèi)存映射在網(wǎng)絡設備的PCI-E內(nèi)存空間中,并且,各接口板的板卡內(nèi)存在PCI-E內(nèi)存空間中映射的地址區(qū)間、以及轉(zhuǎn)發(fā)板的系統(tǒng)內(nèi)存在PCI-E內(nèi)存空間中映射的地址區(qū)間互不相同;
每塊接口板的邏輯裝置從該接口板的以太交換芯片接收以太數(shù)據(jù)報文、并確定該以太數(shù)據(jù)報文的目的板卡;其中,當確定從以太交換芯片接收到的以太數(shù)據(jù)報文以網(wǎng)絡設備的其它一接口板為目的板卡時,邏輯裝置將該以太數(shù)據(jù)報文封裝為以該其它接口板的板卡內(nèi)存的PCI-E內(nèi)存空間地址為目的地址的PCI-E報文,以供該接口板的PCI-E端點將該PCI-E報文向轉(zhuǎn)發(fā)板的對應PCI-E根復合體轉(zhuǎn)發(fā)、并使轉(zhuǎn)發(fā)板的對應PCI-E根復合體根據(jù)該PCI-E報文的目的地址將該PCI-E報文向目的板卡的板卡內(nèi)存轉(zhuǎn)發(fā);
每塊接口板的邏輯裝置還從該接口板的板卡內(nèi)存獲取來自其它接口板的PCI-E報文,并從獲取到的該PCI-E報文中解析出以太數(shù)據(jù)報文發(fā)送至該接口板的以太交換芯片。
可選地,每塊接口板的邏輯裝置在確定從以太交換芯片接收到的以太數(shù)據(jù)報文的目的板卡為轉(zhuǎn)發(fā)板時,將該以太數(shù)據(jù)報文封裝為以系統(tǒng)內(nèi)存的PCI-E內(nèi)存空間地址為目的地址的PCI-E報文,以供PCI-E端點將該PCI-E報文向轉(zhuǎn)發(fā)板的對應PCI-E根復合體轉(zhuǎn)發(fā)、并由轉(zhuǎn)發(fā)板的對應PCI-E根復合體寫入轉(zhuǎn)發(fā)板的系統(tǒng)內(nèi)存中。
可選地,每塊接口板的邏輯裝置中維護有以太MAC地址與板卡標識的映射表,用于根據(jù)以太數(shù)據(jù)報文的目的MAC地址確定該以太數(shù)據(jù)報文的目的板卡;其中,每塊接口板的邏輯裝置根據(jù)CPU在網(wǎng)絡設備初始化時的配置,在以太MAC地址與板卡標識的映射表中創(chuàng)建對應轉(zhuǎn)發(fā)板的表項;并且,每塊接口板的邏輯裝置從該接口板的板卡內(nèi)存獲取的來自其它接口板的PCI-E報文中,封裝有其它接口板從網(wǎng)絡設備的外部接收到的以太數(shù)據(jù)報文、并攜帶有該其它接口板的板卡標識;以及,每塊接口板的邏輯裝置根據(jù)從該PCI-E報文中解析出的以太數(shù)據(jù)報文的源MAC地址和該PCI-E報文中攜帶的板卡標識,在以太MAC地址與板卡標識的映射表創(chuàng)建對應該其它接口板的表項。
可選地,每塊接口板的邏輯裝置維護有板卡標識與PCI-E內(nèi)存空間地址的映射表,用于 根據(jù)從以太交換芯片接收到的以太數(shù)據(jù)報文的目的板卡,確定封裝有該以太數(shù)據(jù)報文的PCI-E報文的目的地址;并且,每塊接口板的邏輯裝置根據(jù)CPU在網(wǎng)絡設備初始化時的配置,在板卡標識與PCI-E內(nèi)存空間地址的映射表中創(chuàng)建對應轉(zhuǎn)發(fā)板和其它接口板的表項。
可選地,每塊接口板的邏輯裝置在確定從以太交換芯片接收到的以太數(shù)據(jù)報文目的板卡失敗時,將該以太數(shù)據(jù)報文封裝為分別以網(wǎng)絡設備每一塊其它接口板的卡內(nèi)存的PCI-E內(nèi)存空間地址為目的地址的PCI-E報文,以供PCI-E端點向轉(zhuǎn)發(fā)板的對應PCI-E根復合體轉(zhuǎn)發(fā)、并使轉(zhuǎn)發(fā)板的對應PCI-E根復合體根據(jù)該PCI-E報文的目的地址將該PCI-E報文向每一塊其它接口板的板卡內(nèi)存轉(zhuǎn)發(fā)。
可選地,每塊接口板的板卡內(nèi)存在PCI-E內(nèi)存空間中映射的地址區(qū)間中包括多個數(shù)據(jù)報文緩存片、以及至少一個控制報文緩存片;每塊接口板的邏輯裝置在確定從以太交換芯片接收到的以太數(shù)據(jù)報文以其它一接口板為目的板卡時,為PCI-E報文設定的目的地址為該其它接口板的板卡內(nèi)存映射的一個空閑的數(shù)據(jù)報文緩存片的PCI-E內(nèi)存空間地址,并且,該接口板的邏輯裝置還根據(jù)該PCI-E報文的目的地址將該其它接口板的對應的數(shù)據(jù)報文緩存片的狀態(tài)記錄由空閑變更為占用;每塊接口板的邏輯裝置在將來自其它接口板的PCI-E報文中解析出的以太數(shù)據(jù)報文發(fā)送至以太交換芯片時,構(gòu)造攜帶有數(shù)據(jù)報文緩存片釋放信息的PCI-E報文、并且構(gòu)造的PCI-E報文以該其它接口板的板卡內(nèi)存映射的控制報文緩存片為目的地址,以供PCI-E端點將構(gòu)造的該PCI-E報文向轉(zhuǎn)發(fā)板的對應PCI-E根復合體轉(zhuǎn)發(fā)、并使轉(zhuǎn)發(fā)板的對應PCI-E根復合體根據(jù)該PCI-E報文的目的地址將該PCI-E報文向該其它接口板的板卡內(nèi)存轉(zhuǎn)發(fā);每塊接口板的邏輯裝置在從來自其它接口板的PCI-E報文中解析出數(shù)據(jù)報文緩存片釋放信息時,根據(jù)解析出的數(shù)據(jù)報文緩存片釋放信息將該其它接口板的對應的數(shù)據(jù)報文緩存片的狀態(tài)記錄由占用重置為空閑。
在一個實施例中提供了一種用于網(wǎng)絡設備中的報文轉(zhuǎn)發(fā)方法,網(wǎng)絡設備包括轉(zhuǎn)發(fā)板和至少兩塊接口板;每塊接口板包括PCI-E端點、以太交換芯片、以及板卡內(nèi)存;各接口板的板卡內(nèi)存、以及轉(zhuǎn)發(fā)板的系統(tǒng)內(nèi)存共同映射在網(wǎng)絡設備的PCI-E內(nèi)存空間中,并且,各接口板的板卡內(nèi)存、以及轉(zhuǎn)發(fā)板的系統(tǒng)內(nèi)存在PCI-E內(nèi)存空間中映射的地址區(qū)間互不相同;
該報文轉(zhuǎn)發(fā)方法應用在任一塊接口板、并包括:
當從以太交換芯片接收到來自網(wǎng)絡設備的外部的以太數(shù)據(jù)報文時,確定該以太數(shù)據(jù)報文的目的板卡;
當成功確定從以太交換芯片接收到的以太數(shù)據(jù)報文以的目的板卡為網(wǎng)絡設備的其它接口板時,將該以太數(shù)據(jù)報文封裝為以該其它接口板的板卡內(nèi)存的PCI-E內(nèi)存空間地址為目的地址的PCI-E報文,以供PCI-E端點將該PCI-E報文向轉(zhuǎn)發(fā)板轉(zhuǎn)發(fā)、并使轉(zhuǎn)發(fā)板根據(jù)該PCI-E報文的目的地址將該PCI-E報文向目的板卡的板卡內(nèi)存轉(zhuǎn)發(fā);
當從板卡內(nèi)存獲取來自其它接口板的PCI-E報文時,從獲取到的該PCI-E報文中解析出以太數(shù)據(jù)報文轉(zhuǎn)發(fā)至以太交換芯片。
可選地,該報文轉(zhuǎn)發(fā)方法進一步包括:維護板卡標識與PCI-E內(nèi)存空間地址的映射表,用于根據(jù)從以太交換芯片接收到的以太數(shù)據(jù)報文的目的板卡,確定封裝有該以太數(shù)據(jù)報文的PCI-E報文的目的地址;并且,根據(jù)轉(zhuǎn)發(fā)板的CPU的配置,在板卡標識與PCI-E內(nèi)存空間地址的映射表中創(chuàng)建表項。
可選地,該報文轉(zhuǎn)發(fā)方法進一步包括:維護以太MAC地址與板卡標識的映射表,用于根據(jù)以太數(shù)據(jù)報文的目的MAC地址確定該以太數(shù)據(jù)報文的目的板卡;從來自其它接口板的PCI-E報文中解析出其它接口板從網(wǎng)絡設備的外部接收到的以太數(shù)據(jù)報文、以及該其它接口板的板卡標識;根解析出的以太數(shù)據(jù)報文的源MAC地址和該PCI-E報文中攜帶的板卡標識,在以太MAC地址與板卡標識的映射表創(chuàng)建對應該其它接口板的表項。
可選地,該報文轉(zhuǎn)發(fā)方法進一步包括:當確定從以太交換芯片接收到的以太數(shù)據(jù)報文以的目的板卡失敗時,將該以太數(shù)據(jù)報文封裝為分別以網(wǎng)絡設備的每一塊其它接口板的卡內(nèi)存的PCI-E內(nèi)存空間地址為目的地址的多于一個PCI-E報文,以供PCI-E端點將多于一個PCI-E報文向轉(zhuǎn)發(fā)板轉(zhuǎn)發(fā)、并使轉(zhuǎn)發(fā)板根據(jù)多于一個PCI-E報文的目的地址將多于一個PCI-E報文分別轉(zhuǎn)發(fā)給對應的其它接口板。
可選地,各接口板的板卡內(nèi)存在PCI-E內(nèi)存空間中映射的地址區(qū)間中包括多個數(shù)據(jù)報文緩存片、以及至少一個控制報文緩存片;并且,該報文轉(zhuǎn)發(fā)方法進一步包括:當確定從以太交換芯片接收到的以太數(shù)據(jù)報文以其它接口板為目的板卡時,選擇該其它接口板的板卡內(nèi)存映射的一個空閑的數(shù)據(jù)報文緩存片的PCI-E內(nèi)存空間地址作為PCI-E報文設定的目的地址;并且,根據(jù)該PCI-E報文的目的地址將該其它接口板的對應的數(shù)據(jù)報文緩存片的狀態(tài)記錄由空閑變更為占用;當從來自其它接口板的PCI-E報文中解析出的以太數(shù)據(jù)報文轉(zhuǎn)發(fā)至以太交換芯片時,構(gòu)造攜帶有數(shù)據(jù)報文緩存片釋放信息的PCI-E報文、并且構(gòu)造的PCI-E報文以該其它接口板的板卡內(nèi)存映射的控制報文緩存片為目的地址,以供PCI-E端點將構(gòu)造的該PCI-E報文向轉(zhuǎn)發(fā)板轉(zhuǎn)發(fā)、并使轉(zhuǎn)發(fā)板根據(jù)構(gòu)造的該PCI-E報文的目的地址將該PCI-E報文向該其它接口板轉(zhuǎn)發(fā);當從來自其它接口板的PCI-E報文中解析出數(shù)據(jù)報文緩存片釋放信息時,根據(jù)解析出的數(shù)據(jù)報文緩存片釋放信息將該其它接口板的對應的數(shù)據(jù)報文緩存片的狀態(tài)記錄由占用重置為空閑。
可選地,該報文轉(zhuǎn)發(fā)方法進一步包括:當確定從以太交換芯片接收到的以太數(shù)據(jù)報文的目的板卡為網(wǎng)絡設備的轉(zhuǎn)發(fā)板時,將該以太數(shù)據(jù)報文封裝為以系統(tǒng)內(nèi)存的PCI-E內(nèi)存空間地址為目的地址的PCI-E報文,以供PCI-E端點將該PCI-E報文向轉(zhuǎn)發(fā)板轉(zhuǎn)發(fā)、并被寫入轉(zhuǎn)發(fā)板的系統(tǒng)內(nèi)存中。
可選地,該報文轉(zhuǎn)發(fā)方法進一步包括:維護以太MAC地址與板卡標識的映射表,用于根據(jù)以太數(shù)據(jù)報文的目的MAC地址確定該以太數(shù)據(jù)報文的目的板卡;根據(jù)CPU在網(wǎng)絡設備初始化時的配置,在以太MAC地址與板卡標識的映射表中對應轉(zhuǎn)發(fā)板的表項;從板卡內(nèi)存獲取的來自其它接口板的PCI-E報文中,封裝有其它接口板從網(wǎng)絡設備的外部接收到的以太數(shù)據(jù)報文、并攜帶有該其它接口板的板卡標識;根據(jù)從該PCI-E報文中解析出的以太數(shù)據(jù)報文的源MAC地址和該PCI-E報文中攜帶的板卡標識,在以太MAC地址與板卡標識的映射表創(chuàng)建對應該其它接口板的表項。
如上可見,基于上述的實施例,當接口板從以太交換芯片接收到以太數(shù)據(jù)報文時,若確定該以太數(shù)據(jù)報文以其它接口板為目的板卡,則該接口板的邏輯裝置可以將該以太數(shù)據(jù)報文封裝為以其它接口板中的板卡內(nèi)存的PCI-E內(nèi)存空間地址為目的地址的PCI-E報文,以供該PCI-E報文可以通過轉(zhuǎn)發(fā)板被轉(zhuǎn)發(fā)至其它接口板的板卡內(nèi)存;并且,當接口板從板卡內(nèi)存中獲取到來自其它接口板的PCI-E報文時,該接口板的邏輯裝置可以從該PCI-E報文中解析出以太數(shù)據(jù)報文并轉(zhuǎn)發(fā)。從而,以太數(shù)據(jù)報文在接口板之間的轉(zhuǎn)發(fā)無需轉(zhuǎn)發(fā)板的CPU參與、并且轉(zhuǎn)發(fā)性能可以提升。
附圖說明
圖1為一個實施例中的網(wǎng)絡設備的架構(gòu)圖;
圖2為如圖1所示的網(wǎng)絡設備中的PCI-E內(nèi)存空間的映射圖;
圖3a和圖3b為基于如圖2所示的PCI-E內(nèi)存空間映射的報文轉(zhuǎn)發(fā)原理的示意圖;
圖4為如圖1所示的網(wǎng)絡設備中的PCI-E內(nèi)存空間的擴展映射圖;
圖5a和圖5b為基于如圖4所示的PCI-E內(nèi)存空間映射的報文轉(zhuǎn)發(fā)原理的示意圖;
圖6a和圖6b為如圖1所示的網(wǎng)絡設備中的表項配置的示意圖;
圖7為如圖1所示的網(wǎng)絡設備的擴展架構(gòu)示意圖;
圖8為如圖7所示的網(wǎng)絡設備中的PCI-E內(nèi)存空間的映射圖;
圖9為基于如圖8所示的PCI-E內(nèi)存空間映射的報文轉(zhuǎn)發(fā)原理的示意圖;
圖10為如圖1或圖7所示的網(wǎng)絡設備中的第一邏輯裝置的邏輯結(jié)構(gòu)圖;
圖11為如圖10所示的第一邏輯裝置的工作原理的示意圖;
圖12為如圖1所示的網(wǎng)絡設備中的PCI-E內(nèi)存空間基于分片機制的映射圖;
圖13a和圖13b為基于如圖12所示的PCI-E內(nèi)存空間映射的報文轉(zhuǎn)發(fā)原理的示意圖;
圖14為如圖13a和圖13b所示的網(wǎng)絡設備中的第一邏輯裝置的邏輯結(jié)構(gòu)圖;
圖15a和圖15b為如圖14所示的第一邏輯裝置的工作原理的示意圖;
圖16為一個實施例中的報文轉(zhuǎn)發(fā)方法的流程圖。
具體實施方式
為使本發(fā)明的目的、技術(shù)方案及優(yōu)點更加清楚明白,以下參照附圖并舉實施例,對本發(fā)明進一步詳細說明。
請參見圖1,在一個實施例中,網(wǎng)絡設備10包括轉(zhuǎn)發(fā)板20、第一接口板30以及第二接口板40。
轉(zhuǎn)發(fā)板20包括CPU 21、系統(tǒng)內(nèi)存22、系統(tǒng)內(nèi)存控制器23、以及第一PCI-E RC(Root Complex,根復合體)241和第二PCI-E RC 242。其中,CPU 21、系統(tǒng)內(nèi)存控制器23、以及第一PCI-E RC 241和第二PCI-E RC 242彼此互連,并且,系統(tǒng)內(nèi)存22與系統(tǒng)內(nèi)存控制器23相互連接。
在該實施例中,轉(zhuǎn)發(fā)板的CPU 21、系統(tǒng)內(nèi)存控制器23、以及第一PCI-E RC241和第二PCI-E RC42可以集成為SOC(System-on-a-Chip,片上系統(tǒng))CPU;或者,轉(zhuǎn)發(fā)板的系統(tǒng)內(nèi)存控制器23可以集成于CPU 21中,并且,轉(zhuǎn)發(fā)板的第一PCI-E RC241和第二PCI-E RC42可以集成為獨立于CPU 21的PCH(Platform Controller Hub,平臺控制器)。
并且,圖1中示出的第一PCI-E RC241和第二PCI-E RC42相互獨立,但這并不意味著第一PCI-E RC241和第二PCI-E RC42必然為兩個相互獨立的實體,即,圖1中示出的第一PCI-E RC241和第二PCI-E RC42可以是由一個具有PCI-E RC功能的實體通過外接PCI-E Switch(交換器)在邏輯上形成的兩個等效PCI-E RC。并且,當?shù)谝籔CI-E RC241和第二PCI-E RC42為兩個相互獨立的實體時,其中的每一個也可以外接PCI-E Switch。
第一接口板30包括第一以太交換芯片31、第一邏輯裝置32、第一板卡內(nèi)存33、以及通過第一PCI-E總線11連接第一PCI-E RC 241的第一PCI-E Endpoint 34。其中,第一以太交換芯片31和第一邏輯裝置32相互連接(例如通過以太總線),并且,第一邏輯裝置32、第一板卡內(nèi)存33、以及第一PCI-E Endpoint 34可以彼此互連。
第二接口板40包括第二以太交換芯片41、第二邏輯裝置42、第二板卡內(nèi)存43、以及通過第二PCI-E總線12連接第二PCI-E RC 242的第二PCI-E Endpoint 44。其中,第二以太交換芯片41和第二邏輯裝置42可以相互連接(例如通過以太總線),并且,第二邏輯裝置42、第二板卡內(nèi)存43、以及第二PCI-E Endpoint 44可以彼此互連。
請參見圖2,在該網(wǎng)絡設備10中,第一板卡內(nèi)存33和第二板卡內(nèi)存43均映射在網(wǎng)絡設備10的PCI-E內(nèi)存空間60中,并且,第一板卡內(nèi)存33在PCI-E內(nèi)存空間60中映射的地址區(qū)間60b不同于第二板卡內(nèi)存43在PCI-E內(nèi)存空間60中映射的地址區(qū)間60a 映射在網(wǎng)絡設備10。從而,第一板卡內(nèi)存33和第二板卡內(nèi)存43對第一PCI-E RC 241和第二PCI-E RC 242、以及第一PCI-E Endpoint 34和第二PCI-E Endpoint 44均可見。
請參見圖3a并結(jié)合圖2,對于從第一接口板30向第二接口板40轉(zhuǎn)發(fā)的情況:
當?shù)谝唤涌诎?0中的第一邏輯裝置32從第一以太交換芯片31接收以太數(shù)據(jù)報文51時,第一邏輯裝置32可以確定該以太數(shù)據(jù)報文51的目的板卡。其中,該以太數(shù)據(jù)報文51可以是由第一以太交換芯片31從網(wǎng)絡設備10的外部接收,第一邏輯裝置32可以根據(jù)維護有以太MAC地址與板卡標識的映射表確定以太數(shù)據(jù)報文51的目的板卡。
當前的一種實現(xiàn)方式中,無論以太數(shù)據(jù)報文51的目的板卡是第二接口板40還是轉(zhuǎn)發(fā)板20,該以太數(shù)據(jù)報文51都將以PCI-E格式轉(zhuǎn)發(fā)至轉(zhuǎn)發(fā)板20中的系統(tǒng)內(nèi)存22、并由CPU 21從系統(tǒng)內(nèi)存22中讀取后處理。
在本實施例中,當確定從第一以太交換芯片31接收到的以太數(shù)據(jù)報文51是以第二接口板40為目的板卡時,第一邏輯裝置32可以將該以太數(shù)據(jù)報文51封裝為以第二板卡內(nèi)存43的PCI-E內(nèi)存空間地址(即,圖2中示出的地址區(qū)間60a內(nèi)的地址)為目的地址的PCI-E報文(本文中的“PCI-E報文”可以是指PCI-E寫報文的簡稱)61,以供第一PCI-E Endpoint 34將該PCI-E報文61向轉(zhuǎn)發(fā)板20轉(zhuǎn)發(fā)、并使轉(zhuǎn)發(fā)板20根據(jù)該PCI-E報文61的目的地址將該PCI-E報文61向作為目的板卡的第二接口板40的第二板卡內(nèi)存43轉(zhuǎn)發(fā)。例如,第一PCI-E Endpoint 34將該PCI-E報文61發(fā)送至第一PCI-E RC 241、并由第一PCI-E RC 241根據(jù)該PCI-E報文61的目的地址將該PCI-E報文61轉(zhuǎn)發(fā)給第二PCI-E RC 242;封裝有以太數(shù)據(jù)報文51的PCI-E報文61被第二PCI-E RC 242轉(zhuǎn)發(fā)至第二PCI-E Endpoint 44、并被第二PCI-E Endpoint 44寫入第二板卡內(nèi)存43。
相應地,第二邏輯裝置42可以從第二板卡內(nèi)存43中獲取該PCI-E報文61、并從該PCI-E報文61中解析出以太數(shù)據(jù)報文51發(fā)送至第二以太交換芯片41,從而可以由第二以太交換芯片41發(fā)出至網(wǎng)絡設備10的外部。
請參見圖3b并結(jié)合圖2,與從第一接口板30向第二接口板40轉(zhuǎn)發(fā)同理,對于從第二接口板40向第一接口板30轉(zhuǎn)發(fā)的情況:
當?shù)诙涌诎?0中的第二邏輯裝置42從第二以太交換芯片41接收以太數(shù)據(jù)報文52時,第二邏輯裝置42可以確定該以太數(shù)據(jù)報文52的目的板卡。其中,該以太數(shù)據(jù)報文52可以是由第二以太交換芯片41從網(wǎng)絡設備10的外部接收。
當確定從第二以太交換芯片41接收到的以太數(shù)據(jù)報文52是以第一接口板30為目的板卡時,第二邏輯裝置42可以將該以太數(shù)據(jù)報文52封裝為以第一板卡內(nèi)存33的PCI-E內(nèi)存空間地址(即,圖2中示出的地址區(qū)間60b內(nèi)的地址)為目的地址的PCI-E報文62,以供第二PCI-E Endpoint 44將該PCI-E報文62向轉(zhuǎn)發(fā)板20轉(zhuǎn)發(fā)、并使轉(zhuǎn)發(fā)板20根據(jù)該 PCI-E報文62的目的地址將該PCI-E報文62向作為目的板卡的第一接口板30的第一板卡內(nèi)存33轉(zhuǎn)發(fā)。例如,第二PCI-E Endpoint 44將該PCI-E報文62發(fā)送至第二PCI-E RC242、并由第二PCI-E RC 242根據(jù)該PCI-E報文62的目的地址將該PCI-E報文62轉(zhuǎn)發(fā)給第一PCI-E RC 241;封裝有以太數(shù)據(jù)報文52的PCI-E報文62被第一PCI-E RC 241轉(zhuǎn)發(fā)至第一PCI-E Endpoint 24、并被第一PCI-E Endpoint 34寫入第一板卡內(nèi)存33。
相應地,第一邏輯裝置32可以從第一板卡內(nèi)存33中獲取該PCI-E報文62、并從該PCI-E報文62中解析出以太數(shù)據(jù)報文52轉(zhuǎn)發(fā)至第一以太交換芯片31,從而可以由第一以太交換芯片31發(fā)出至網(wǎng)絡設備10的外部。
如上可見,以太數(shù)據(jù)報文51或52在第一接口板30與第二接口板40之間的轉(zhuǎn)發(fā)可以無需轉(zhuǎn)發(fā)板20的CPU 21參與,并且,以太數(shù)據(jù)報文51或52在第一接口板30與第二接口板40之間的轉(zhuǎn)發(fā)性能可以得到一定程度的提升。
另外,請參見圖4,轉(zhuǎn)發(fā)板20中的系統(tǒng)內(nèi)存22映射在網(wǎng)絡設備10的PCI-E內(nèi)存空間60中,即,內(nèi)存空間60對第一PCI-E RC 241和第二PCI-E RC 242、以及第一PCI-E Endpoint 34和第二PCI-E Endpoint 44均可見。并且,系統(tǒng)內(nèi)存22在PCI-E內(nèi)存空間中映射的地址區(qū)間60c不同于第一板卡內(nèi)存33在PCI-E內(nèi)存空間60中映射的地址區(qū)間60b、以及第二板卡內(nèi)存43在PCI-E內(nèi)存空間60中映射的地址區(qū)間60a。其中,系統(tǒng)內(nèi)存22的映射,可以是系統(tǒng)內(nèi)存22的全部內(nèi)存空間或部分內(nèi)存空間映射在PCI-E內(nèi)存空間60中。
請參見圖5a并結(jié)合圖4,對于從第一接口板30向轉(zhuǎn)發(fā)板20轉(zhuǎn)發(fā)的情況:
當?shù)谝唤涌诎?0中的第一邏輯裝置32從第一以太交換芯片31接收以太數(shù)據(jù)報文53時,第一邏輯裝置32可以確定該以太數(shù)據(jù)報文53的目的板卡,例如,第一邏輯裝置32可以根據(jù)以太MAC地址與板卡標識的映射表中由轉(zhuǎn)發(fā)板20的CPU 21配置的表項確定以太數(shù)據(jù)報文53的目的板卡。
當確定從第一以太交換芯片31接收到的以太數(shù)據(jù)報文53以轉(zhuǎn)發(fā)板20為目的板卡時,第一邏輯裝置32可以將該以太數(shù)據(jù)報文53封裝為以系統(tǒng)內(nèi)存22的PCI-E內(nèi)存空間地址(即,圖4中示出的地址區(qū)間60c內(nèi)的地址)為目的地址的PCI-E報文63,以供第一PCI-E Endpoint 34將該PCI-E報文63發(fā)送至第一PCI-E RC 241、并可以由第一PCI-E RC 241根據(jù)該PCI-E報文63的目的地址將該PCI-E報文63寫入至系統(tǒng)內(nèi)存22中,從而,當CPU 21通過系統(tǒng)內(nèi)存控制器23訪問系統(tǒng)內(nèi)存22時即可讀取到該PCI-E報文63、并從該PCI-E報文63中解析得到以太數(shù)據(jù)報文53。
請參見圖5b并結(jié)合圖4,與從第一接口板30向轉(zhuǎn)發(fā)板20轉(zhuǎn)發(fā)同理,對于從第二接口板40向轉(zhuǎn)發(fā)板20轉(zhuǎn)發(fā)的情況:
當?shù)诙涌诎?0中的第二邏輯裝置42從第二以太交換芯片41接收以太數(shù)據(jù)報文54時,第二邏輯裝置42可以確定該以太數(shù)據(jù)報文54的目的板卡。
當確定從第二以太交換芯片41接收到的以太數(shù)據(jù)報文54以轉(zhuǎn)發(fā)板20為目的板卡時,第二邏輯裝置42可以將該以太數(shù)據(jù)報文54封裝為以系統(tǒng)內(nèi)存22的PCI-E內(nèi)存空間地址(即,圖4中示出的地址區(qū)間60c內(nèi)的地址)為目的地址的PCI-E報文64,以供第二PCI-E Endpoint 44將該PCI-E報文64發(fā)送至第二PCI-E RC 242、并可以由第二PCI-E RC 242根據(jù)該PCI-E報文64的目的地址將該PCI-E報文64寫入至系統(tǒng)內(nèi)存22中,從而,當CPU 21通過系統(tǒng)內(nèi)存控制器23訪問系統(tǒng)內(nèi)存22時即可讀取到該PCI-E報文64、并從該PCI-E報文64中解析得到以太數(shù)據(jù)報文54。
如上可見,該實施例中采用的第一接口板30與第二接口板40之間的轉(zhuǎn)發(fā),可以不影響第一接口板30和第二接口板40中的每一個與轉(zhuǎn)發(fā)板20之間的轉(zhuǎn)發(fā)。
請參見圖6a和圖6b,第一邏輯裝置32中可以分別維護以太MAC地址與板卡標識的映射表71a和71b,用于根據(jù)以太數(shù)據(jù)報文51或52或53或54的目的MAC地址確定該以太數(shù)據(jù)報文51或52或53或54的目的板卡。
并且,仍參見圖6a和圖6b,第一邏輯裝置32和第二邏輯裝置42中還可以維護板卡標識與PCI-E內(nèi)存空間地址的映射表72,用于根據(jù)以太數(shù)據(jù)報文51或52或53或54的目的板卡確定封裝有該以太數(shù)據(jù)報文51或52或53或54的PCI-E報文61或62或63或64的目的地址。
其中,圖6a中示出了以太MAC地址與板卡標識的映射表71a和71b以及板卡標識與PCI-E內(nèi)存空間地址的映射表72在網(wǎng)絡設備10初始化后的狀態(tài),如圖6a所示,以太MAC地址與板卡標識的映射表71a和71b中對應轉(zhuǎn)發(fā)板20的表項、以及板卡標識與PCI-E內(nèi)存空間地址的映射表72中的所有表項均可以由CPU 21在網(wǎng)絡設備10初始化時利用PCI-E報文60下發(fā)。圖6a和圖6b中示出的“MAC0”表示轉(zhuǎn)發(fā)板20的MAC地址。
在該實施例中,用于下發(fā)表項的PCI-E報文60是由CPU 21利用第一PCI-E總線11和第二PCI-E總線12轉(zhuǎn)發(fā)的,即,CPU 21將第一PCI-E總線11和第二PCI-E總線12復用為用于下發(fā)表項的管理總線。可以理解的是,網(wǎng)絡設備10中也可以設置獨立于第一PCI-E總線11和第二PCI-E總線12、并專用于下發(fā)表項的管理總線,此時,下發(fā)的表項可以攜帶在匹配獨立的管理總線的協(xié)議報文中。
另外,圖6b中示出的以太MAC地址與板卡標識的映射表71a中對應第二接口板40的表項則可以由第一邏輯裝置32通過來自第二接口板40的PCI-E報文62中封裝的以太數(shù)據(jù)報文52學習得到,圖6b中示出的“MAC2”表示以太數(shù)據(jù)報文52的源MAC地址。
同理,圖6b中示出的以太MAC地址與板卡標識的映射表71b中對應第一接口板30 的表項可以由第二邏輯裝置42通過來自第一接口板30的PCI-E報文61中封裝的以太數(shù)據(jù)報文51學習得到,圖6b中示出的“MAC1”表示以太數(shù)據(jù)報文51的源MAC地址。
當?shù)谝话蹇▋?nèi)存33中被寫入由第二邏輯裝置42封裝的PCI-E報文62時,第一邏輯裝置32可以從第一板卡內(nèi)存33中獲取該PCI-E報文62,該PCI-E報文62中封裝有第二邏輯裝置42從第二以太交換芯片41接收到的以太數(shù)據(jù)報文52、并攜帶有第二接口板64的板卡標識。并且,若以太MAC地址與板卡標識的映射表71a中此時不存在對應第二接口板40的表項,則第一邏輯裝置32可以根據(jù)從該PCI-E報文62中解析出的以太數(shù)據(jù)報文52的源MAC地址和該PCI-E報文62中攜帶的板卡標識,在以太MAC地址與板卡標識的映射表71a中創(chuàng)建對應第二接口板40的表項。
同理,當?shù)诙蹇▋?nèi)存43中被寫入由第一邏輯裝置32封裝的PCI-E報文61時,第二邏輯裝置42可以從第二板卡內(nèi)存43中獲取該PCI-E報文61,該PCI-E報文61中封裝有第一邏輯裝置32從第一以太交換芯片31接收到的以太數(shù)據(jù)報文51、并攜帶有第一接口板63的板卡標識。并且,若以太MAC地址與板卡標識的映射表71b中此時不存在對應第一接口板30的表項,則第二邏輯裝置42可以根據(jù)從該PCI-E報文61中解析出的以太數(shù)據(jù)報文51的源MAC地址和該PCI-E報文61中攜帶的板卡標識,在以太MAC地址與板卡標識的映射表71b中創(chuàng)建對應第一接口板30的表項。
其中,第一邏輯裝置32或者第二邏輯裝置42有可能不能根據(jù)以太MAC地址與板卡標識的映射表唯一查找到一個以太數(shù)據(jù)報文的目的板卡,并由此不能夠確定以太數(shù)據(jù)報文的目的板卡,導致目的板卡查詢失敗。
例如,以太數(shù)據(jù)報文51是廣播報文,由于其目的MAC地址為廣播地址,所以其不能夠通過以太MAC地址與板卡標識的映射表唯一地確定以太數(shù)據(jù)報文的目的板卡,導致目的板卡查詢失敗。
對于目的板卡查詢失敗的情況,可以采用向除本板之外的其它所有接口板逐一轉(zhuǎn)發(fā)PCI-E報文的方式。在描述目的板卡查詢失敗的如下示例中,仍繼續(xù)使用標識“51”表示第一以太交換芯片31接收到的以太數(shù)據(jù)報文,但可以理解的是,如下示例中利用標識“51”表示的以太數(shù)據(jù)報文可以不同于前文描述的以太數(shù)據(jù)報文51。
請參見圖7,網(wǎng)絡設備10’中可以進一步包括第三接口板80,該第三接口板80至少包括第三PCI-E Endpoint 84和第三板卡內(nèi)存83。相應地,轉(zhuǎn)發(fā)板20’可以進一步包括第三PCI-E RC 243,第三PCI-E RC 243通過第三PCI-E總線13連接第三PCI-E Endpoint 84。其中,與第一PCI-E RC 241和第二PCI-E RC 242同理,第三PCI-E RC 243可以是具有PCI-E RC的獨立實體,也可以是邏輯上形成的等效PCI-E RC。
如圖8所示,第三板卡內(nèi)存83可以映射在PCI-E內(nèi)存空間60中,并且,第三板卡 內(nèi)存83在PCI-E內(nèi)存空間60中映射的地址區(qū)間60d不同于系統(tǒng)內(nèi)存22、第一板卡內(nèi)存33、以及第二板卡內(nèi)存43在PCI-E內(nèi)存空間中分別映射的地址區(qū)間60c、60b以及60a。其中,CPU 21在初始化時下發(fā)的板卡標識與PCI-E內(nèi)存空間地址的映射表72中的所有表項進一步包括了對應第三接口板80的表項。并且,第三PCI-E RC 243和第三PCI-E Endpoint 84也可以映射在PCI-E內(nèi)存空間60中。
請參見圖9并結(jié)合圖8:
當從第一以太交換芯片31接收到的以太數(shù)據(jù)報文51時,第一邏輯裝置32通過匹配以太MAC地址與板卡標識的映射表71a中的表項來確定該以太數(shù)據(jù)報文51的目的板卡;
若在以太MAC地址與板卡標識的映射表71a中匹配表項失敗,即,第一邏輯裝置32確定該以太數(shù)據(jù)報文51不是以轉(zhuǎn)發(fā)板20為目的板卡(此時映射表71a中只有初始的MAC0轉(zhuǎn)發(fā)板20的表項),此時以太數(shù)據(jù)報文的目的MAC可以是廣播地址,則第一邏輯裝置32可以根據(jù)板卡標識與PCI-E內(nèi)存空間地址的映射表72,將該以太數(shù)據(jù)報文51封裝為分別以第二板卡內(nèi)存43的PCI-E內(nèi)存空間地址(即,圖8中示出的地址區(qū)間60a內(nèi)的地址)和第三板卡內(nèi)存83的PCI-E內(nèi)存空間地址(即,圖8中示出的地址區(qū)間60d內(nèi)的地址)為目的地址的多于一個PCI-E報文61和61’,以供第一PCI-E Endpoint 34將多于一個PCI-E報文61和61’發(fā)送至第一PCI-E RC 241、并使第一PCI-E RC 241根據(jù)多于一個PCI-E報文61和61’的目的地址將多于一個PCI-E報文61和61’分別轉(zhuǎn)發(fā)給第二PCI-E RC 242和第三PCI-E RC 243。
從而,封裝有以太數(shù)據(jù)報文51的PCI-E報文61仍可以到達第二接口板40,并使第二接口板40中的第二邏輯裝置42在以太MAC地址與板卡標識的映射表71b中創(chuàng)建對應第一接口板30的表項。同理,PCI-E報文61’也可以到達第三接口板80,并且,第三接口板80中可以具有與第一邏輯裝置32或第二邏輯裝置42類似的裝置(圖7和圖9中均未示出),該裝置可以解析出以太數(shù)據(jù)報文51,在以太MAC地址與板卡標識的映射表中創(chuàng)建對應第一接口板30的表項。
基于上述的原理,請參見圖10,第一邏輯裝置32可以包括:以太總線控制器320、以太報文接收處理模塊321、第一映射表維護模塊322、PCI-E報文發(fā)送處理模塊323、第二映射表維護模塊324、PCI-E報文接收處理模塊325、以太報文發(fā)送模塊326、以及CPU交換寄存器327。
請參見圖11,基于如圖10所示的結(jié)構(gòu),第一邏輯裝置32的工作原理如下(由于以太數(shù)據(jù)報文51和53在第一邏輯裝置32中的處理方式基本相同、并且PCI-E報文61和63在第一邏輯裝置32中的處理方式基本相同,因此,為了簡化視圖,圖11中省略了以太數(shù)據(jù)報文53和PCI-E報文63):
以太總線控制器320連接本板的第一以太交換芯片31,用于實現(xiàn)第一邏輯裝置32與第一以太交換芯片31之間的以太數(shù)據(jù)報文51和52的交互。
以太報文接收處理模塊321從以太總線控制器320接收來自第一以太交換芯片31的以太數(shù)據(jù)報文51。
第一映射表維護模塊322中維護有以太MAC地址與板卡標識的映射表71a,供以太報文接收處理模塊321通過匹配以太MAC地址與板卡標識的映射表71a中的表項確定該以太數(shù)據(jù)報文51的目的板卡。
以太報文接收處理模塊321在完成匹配后,會將以太數(shù)據(jù)報文51與匹配結(jié)果一起發(fā)送至PCI-E報文發(fā)送處理模塊323。其中,此處所述的匹配結(jié)果可以為成功匹配到的目的板卡的板卡標識、或匹配失敗,圖11中以匹配到第二接口板40的板卡標識為例(如圖11中的S1111所示)。
PCI-E報文發(fā)送處理模塊323對接收到的以太數(shù)據(jù)報文51進行封裝。
第二映射表維護模塊324中維護有板卡標識與PCI-E內(nèi)存空間地址的映射表72,供PCI-E報文發(fā)送處理模塊323通過匹配板卡標識與PCI-E內(nèi)存空間地址的映射表72中的表項確定封裝形成的PCI-E報文61的目的地址。
PCI-E報文發(fā)送處理模塊323完成匹配后,會將以太數(shù)據(jù)報文51封裝在PCI-E報文61中、并根據(jù)匹配結(jié)果確定PCI-E報文61的目的地址,然后,將PCI-E報文61提供給第一PCI-E Endpoint 34。
其中,此處所述的匹配結(jié)果可以為已確定的一塊目的板卡的板卡標識、或者為所有其它接口板的板卡標識(在確定目的板卡失敗時),圖11中以匹配到第二板卡內(nèi)存43的地址區(qū)間60a為例(如圖11中的S1112和S1113所示)。
對于確定目的板卡失敗的情況:第一映射表維護模塊322中可以維護有對應網(wǎng)絡設備10中除本板30之外的所有其它接口板(即第二接口板40和第三接口板80)的表項,以太報文接收處理模塊321可以向PCI-E報文發(fā)送處理模塊323上報匹配結(jié)果為網(wǎng)絡設備10中除本板30之外的所有其它接口板,使PCI-E報文發(fā)送處理模塊323可以逐一匹配到除本板30之外的所有其它接口板對應的表項;或者,以太報文接收處理模塊321可以向PCI-E報文發(fā)送處理模塊323上報匹配失敗的通知,使PCI-E報文發(fā)送處理模塊323可以輪詢除本板30之外的所有其它接口板對應的表項。
另外,CPU交換寄存器327中可以存放由CPU 21下發(fā)的本板的板卡標識,PCI-E報文發(fā)送處理模塊323可以將本板的板卡標識封裝在PCI-E報文61中(如圖11中的S1114所示),以供接收到該PCI-E報文61的其它接口板(包括但不限于第二接口板40)能夠利用本板的板卡標識和以太數(shù)據(jù)報文51的源MAC地址學習對應于本板的以太MAC 地址與板卡標識的映射表項。
PCI-E報文接收處理模塊325可以從第一板卡內(nèi)存33中讀取以本板為目的板卡的PCI-E報文60和62。
PCI-E報文接收處理模塊325可以從PCI-E報文60中解析得到CPU 21在網(wǎng)絡設備10初始化時下發(fā)的表項、并寫入至第一映射表維護模塊322和第二映射表維護模塊324中(如圖11中的S1121所示);并且,PCI-E報文接收處理模塊325可以從PCI-E報文60中解析得到CPU 21在網(wǎng)絡設備10初始化時下發(fā)的本板的板卡標識、并寫入至CPU交換寄存器327中(如圖11中的S1122所示)。
PCI-E報文接收處理模塊325可以從PCI-E報文62中解析得到來自第二接口板40的以太數(shù)據(jù)報文52以及第二接口板40的板卡標識,并將解析得到的以太數(shù)據(jù)報文52和板卡標識將轉(zhuǎn)發(fā)給以太報文發(fā)送處理模塊326。
以太報文發(fā)送處理模塊26從接收到的以太數(shù)據(jù)報文52中提取源MAC地址,并根據(jù)提取的源MAC地址與接收到的第二接口板40的板卡標識在第一映射表維護模塊322中創(chuàng)建對應第二接口板40的表項。
以太報文發(fā)送模塊26還將接收到的以太數(shù)據(jù)報文52發(fā)送至以太總線控制器320。
可以理解的是,第二邏輯裝置42可以具有與第一邏輯裝置32基本相同的結(jié)構(gòu)。
請參見圖12,作為一種更優(yōu)的方案,第二板卡內(nèi)存43在PCI-E內(nèi)存空間60中映射的地址區(qū)間60a中可以包括多個數(shù)據(jù)報文緩存片60a_1~60a_m(m為大于1的正整數(shù))以及至少一個控制報文緩存片60a_ctr,同理,第一板卡內(nèi)存33在PCI-E內(nèi)存空間60中映射的地址區(qū)間60b中可以包括多個數(shù)據(jù)報文緩存片60b_1~60b_n(n為大于1的正整數(shù))以及至少一個控制報文緩存片60b_ctr。
相應地,第一邏輯裝置32維護的板卡標識與PCI-E內(nèi)存空間地址的映射表72中包括的對應第二接口板40的表項91,被劃分為分別對應多個數(shù)據(jù)報文緩存片60a_1~60a_m的子表項,并且每個子表項具有一個標志位Flag,用于表示該子表項對應的數(shù)據(jù)報文緩存片60a_i(i為大于等于1且小于等于m的正整數(shù))的狀態(tài)是占用還是空閑。同理,第二邏輯裝置42維護的板卡標識與PCI-E內(nèi)存空間地址的映射表72中包括的對應第二接口板40的表項91中,也被劃分為分別對應多個數(shù)據(jù)報文緩存片60b_1~60b_n的子表項,并且每個子表項具有一個標志位Flag,用于表示該子表項對應的數(shù)據(jù)報文緩存片60b_j(j為大于等于1且小于等于n的正整數(shù))的狀態(tài)是占用還是空閑。
另外,控制報文緩存片60a_ctr和60b_ctr可以作為板卡標識與PCI-E內(nèi)存空間地址的映射表72中的不具有標志位Flag的一個子表項,或者,可以獨立于板卡標識與PCI-E內(nèi)存空間地址的映射表72單獨存放。
請參見圖13a并結(jié)合圖12,對于從第一接口板30向第二接口板40轉(zhuǎn)發(fā)的情況:
當?shù)谝唤涌诎?0中的第一邏輯裝置32從第一以太交換芯片31接收以太數(shù)據(jù)報文51時,第一邏輯裝置32可以確定該以太數(shù)據(jù)報文51的目的板卡。
當確定從第一以太交換芯片31接收到的以太數(shù)據(jù)報文51是以第二接口板40為目的板卡時,第一邏輯裝置32從第二板卡內(nèi)存43在PCI-E內(nèi)存空間60中映射的多個數(shù)據(jù)報文緩存片60a_1~60a_m中選擇一片空閑的數(shù)據(jù)報文緩存片60a_i、并將其對應的子表項的標志位Flag置為占用狀態(tài),然后將該以太數(shù)據(jù)報文51封裝為以數(shù)據(jù)報文緩存片60a_i的PCI-E內(nèi)存空間地址為目的地址的PCI-E報文61,以供第一PCI-E Endpoint 34將該PCI-E報文61發(fā)送至第一PCI-E RC 241、并可以由第一PCI-E RC 241根據(jù)該PCI-E報文61的目的地址將該PCI-E報文61轉(zhuǎn)發(fā)給第二PCI-E RC 242。
即,第一邏輯裝置32為PCI-E報文61設定的目的地址為第二板卡內(nèi)存43映射的一個空閑的數(shù)據(jù)報文緩存片60a_i的PCI-E內(nèi)存空間地址。
相應地,當封裝有以太數(shù)據(jù)報文51的PCI-E報文61被第二PCI-E RC 242轉(zhuǎn)發(fā)至第二PCI-E Endpoint 44、并被第二PCI-E Endpoint 44寫入第二板卡內(nèi)存43中對應數(shù)據(jù)報文緩存片60a_i的地址區(qū)間時,第二邏輯裝置42可以從第二板卡內(nèi)存43中獲取該PCI-E報文61、并從該PCI-E報文61中解析出以太數(shù)據(jù)報文51發(fā)送至第二以太交換芯片41,從而可以由第二以太交換芯片41發(fā)出至網(wǎng)絡設備10的外部。
并且,第二邏輯裝置42還構(gòu)造以控制報文緩存片60b_ctr為目的地址的PCI-E報文65,以供第二PCI-E Endpoint 44將該PCI-E報文65發(fā)送至第二PCI-E RC 242、并可以由第二PCI-E RC 242根據(jù)該PCI-E報文65的目的地址將該PCI-E報文65轉(zhuǎn)發(fā)給第一PCI-E RC 241。其中,PCI-E報文65中還攜帶有表示釋放數(shù)據(jù)報文緩存片60a_i的數(shù)據(jù)報文緩存片釋放信息。
相應地,當封裝有數(shù)據(jù)報文緩存片釋放信息的PCI-E報文65被第一PCI-E RC 241轉(zhuǎn)發(fā)至第一PCI-E Endpoint 34、并被第一PCI-E Endpoint 34寫入第一板卡內(nèi)存33中對應控制報文緩存片60b_ctr的地址區(qū)間時,第一邏輯裝置32可以從第一板卡內(nèi)存33中獲取該PCI-E報文66、并從該PCI-E報文66中解析出數(shù)據(jù)報文緩存片釋放信息,從而可以根據(jù)數(shù)據(jù)報文緩存片釋放信息將數(shù)據(jù)報文緩存片60a_i對應的子表項的標志位Flag置為空閑狀態(tài)。
請參見圖13b并結(jié)合圖12,與從第一接口板30向第二接口板40轉(zhuǎn)發(fā)同理,第二邏輯裝置42為PCI-E報文62設定的目的地址可以為第一板卡內(nèi)存33映射的一個空閑的數(shù)據(jù)報文緩存片60b_j的PCI-E內(nèi)存空間地址,并將數(shù)據(jù)報文緩存片60b_j對應的子表項的標志位Flag置為占用狀態(tài)。相應地,第一邏輯裝置32也可以構(gòu)造以控制報文緩存片 60a_ctr為目的地址的PCI-E報文65,以供第二邏輯裝置42將數(shù)據(jù)報文緩存片60b_j對應的子表項的標志位Flag置為空閑狀態(tài)。
可以理解的是,對于圖13a中示出的從第一接口板30向第二接口板40轉(zhuǎn)發(fā)的情況,第一板卡內(nèi)存33在網(wǎng)絡設備10的PCI-E內(nèi)存空間60中映射形成的數(shù)據(jù)報文緩存片60b_1~60b_n、以及第二板卡內(nèi)存43在PCI-E內(nèi)存空間60中映射形成的控制報文緩存片60a_ctr并不是必不可少的;同理,對于圖13b中示出的從第二接口板40向第一接口板30轉(zhuǎn)發(fā)的情況,第二板卡內(nèi)存43在網(wǎng)絡設備10的PCI-E內(nèi)存空間60中映射形成的數(shù)據(jù)報文緩存片60a_1~60a_m、以及并不是必不可少的第一板卡內(nèi)存33在網(wǎng)絡設備10的PCI-E內(nèi)存空間60中映射形成的控制報文緩存片60b_ctr并不是必不可少的。
如上可見,通過對PCI-E內(nèi)存地址空間的分片劃分,可以對以太數(shù)據(jù)報文在第一接口板30與第二接口板40之間的轉(zhuǎn)發(fā)實施反壓流控。
請參見圖14,當對PCI-E內(nèi)存地址空間采用分片劃分時,第一邏輯裝置32中可以進一步包括釋放執(zhí)行模塊328和釋放通告模塊329。
請參見圖15a,PCI-E報文發(fā)送處理模塊323在將以太數(shù)據(jù)報文51封裝為以數(shù)據(jù)報文緩存片60a_i的PCI-E內(nèi)存空間地址為目的地址PCI-E報文61時,可以將數(shù)據(jù)報文緩存片60a_i對應的子表項的標志位Flag置為占用狀態(tài)(如圖15a中的S1411所示)。并且,PCI-E報文接收處理模塊325在從第一板卡內(nèi)存33中對應本板的控制報文緩存片60b_ctr的地址區(qū)間讀取到PCI-E報文65時,可以從PCI-E報文65中解析出數(shù)據(jù)報文緩存片釋放信息提供給釋放執(zhí)行模塊328。從而,釋放執(zhí)行模塊328可以根據(jù)PCI-E報文接收處理模塊325提供的該數(shù)據(jù)報文緩存片釋放信息將數(shù)據(jù)報文緩存片60a_i對應的子表項的標志位Flag置為空閑狀態(tài)(如圖15a中的S1412所示)。
請參見圖15b,PCI-E報文接收處理模塊325從第一板卡內(nèi)存33中對應數(shù)據(jù)報文緩存片60b_j的地址區(qū)間讀取到PCI-E報文62時,從該PCI-E報文62中解析出以太數(shù)據(jù)報文52、并提取該PCI-E報文62的目的地址和攜帶的第二接口板40的板卡標識提供給以太報文發(fā)送處理模塊326;以太報文發(fā)送處理模塊326在將以太數(shù)據(jù)報文52發(fā)出時,可以將PCI-E報文62的目的地址和第二接口板40的板卡標識提供給釋放通告模塊329。從而,釋放通告模塊329根據(jù)PCI-E報文62的目的地址和第二接口板40的板卡標識,通知PCI-E報文發(fā)送處理模塊323構(gòu)造以對應第二接口板40的控制報文緩存片60a_ctr的PCI-E報文66,并將PCI-E報文62的目的地址(即數(shù)據(jù)報文緩存片60b_j的PCI-E內(nèi)存空間地址)作為數(shù)據(jù)報文緩存片釋放信息攜帶在該PCI-E報文66中。
以上是對上述實施例中的網(wǎng)絡設備的詳細說明。下述的實施例中,還提供了用于網(wǎng)絡設備中的報文轉(zhuǎn)發(fā)方法。
請參見圖16,當該報文轉(zhuǎn)發(fā)方法應用于如圖1所示的網(wǎng)絡設備10中的第一接口板30或第二接口板40時,該報文轉(zhuǎn)發(fā)方法可以包括在第一邏輯裝置32或第二邏輯裝置42執(zhí)行的如下步驟:
S1601,當從以太交換芯片接收到來自網(wǎng)絡設備的外部的以太數(shù)據(jù)報文時,確定該以太數(shù)據(jù)報文的目的板卡;
S1602,當成功確定從以太交換芯片接收到的以太數(shù)據(jù)報文以的目的板卡為網(wǎng)絡設備的其它接口板時,將該以太數(shù)據(jù)報文封裝為以該其它接口板的板卡內(nèi)存的PCI-E內(nèi)存空間地址為目的地址的PCI-E報文,以供PCI-E Endpoint將該PCI-E報文向轉(zhuǎn)發(fā)板轉(zhuǎn)發(fā)、并使轉(zhuǎn)發(fā)板根據(jù)該PCI-E報文的目的地址將該PCI-E報文向目的板卡的板卡內(nèi)存轉(zhuǎn)發(fā);
S1603,當從板卡內(nèi)存獲取來自其它接口板的PCI-E報文時,從獲取到的該PCI-E報文中解析出以太數(shù)據(jù)報文轉(zhuǎn)發(fā)至以太交換芯片。
另外,當S1601確定從第一以太交換芯片接收到的以太數(shù)據(jù)報文以轉(zhuǎn)發(fā)板為目的板卡時,報文轉(zhuǎn)發(fā)方法可以進一步包括:將該以太數(shù)據(jù)報文封裝為以系統(tǒng)內(nèi)存的PCI-E內(nèi)存空間地址為目的地址的PCI-E報文,以供PCI-E Endpoint將該PCI-E報文向轉(zhuǎn)發(fā)板轉(zhuǎn)發(fā)、并被寫入轉(zhuǎn)發(fā)板的系統(tǒng)內(nèi)存中。
在該實施例中,該報文轉(zhuǎn)發(fā)方法可以進一步維護板卡標識與PCI-E內(nèi)存空間地址的映射表,用于根據(jù)從以太交換芯片接收到的以太數(shù)據(jù)報文的目的板卡,確定封裝有該以太數(shù)據(jù)報文的PCI-E報文的目的地址;并且,根據(jù)轉(zhuǎn)發(fā)板的CPU的配置,在板卡標識與PCI-E內(nèi)存空間地址的映射表中創(chuàng)建表項。
在該實施例中,報文轉(zhuǎn)發(fā)方法可以進一步維護板卡標識與PCI-E內(nèi)存空間地址的映射表,并且,報文轉(zhuǎn)發(fā)方法可以從來自其它接口板的PCI-E報文中解析出其它接口板從網(wǎng)絡設備的外部接收到的以太數(shù)據(jù)報文、以及該其它接口板的板卡標識,并且根解析出的以太數(shù)據(jù)報文的源MAC地址和該PCI-E報文中攜帶的板卡標識,在以太MAC地址與板卡標識的映射表創(chuàng)建對應該其它接口板的表項;以及,報文轉(zhuǎn)發(fā)方法可以根據(jù)CPU在網(wǎng)絡設備初始化時的配置,在以太MAC地址與板卡標識的映射表中對應轉(zhuǎn)發(fā)板的表項。此時,上述的S1601可以根據(jù)以太數(shù)據(jù)報文的目的板卡確定封裝有該以太數(shù)據(jù)報文的PCI-E報文的目的地址。
在該實施例中,該報文轉(zhuǎn)發(fā)方法還可以進一步在確定從以太交換芯片接收到的以太數(shù)據(jù)報文以的目的板卡失敗時,將該以太數(shù)據(jù)報文封裝為分別以網(wǎng)絡設備的每一塊其它接口板的卡內(nèi)存的PCI-E內(nèi)存空間地址為目的地址的多于一個PCI-E報文,以供PCI-E Endpoint將多于一個PCI-E報文向轉(zhuǎn)發(fā)板轉(zhuǎn)發(fā)、并使轉(zhuǎn)發(fā)板根據(jù)多于一個PCI-E報文的目的地址將多于一個PCI-E報文分別轉(zhuǎn)發(fā)給對應的其它接口板。
另外,該實施例中的報文轉(zhuǎn)發(fā)方法可以按照與如圖12原理相同的方式采用反壓控制的流控機制,相應地:
各接口板的板卡內(nèi)存在PCI-E內(nèi)存空間中映射的地址區(qū)間中包括多個數(shù)據(jù)報文緩存片、以及至少一個控制報文緩存片;并且,該報文轉(zhuǎn)發(fā)方法進一步包括:
當確定從以太交換芯片接收到的以太數(shù)據(jù)報文以其它接口板為目的板卡時,選擇該其它接口板的板卡內(nèi)存映射的一個空閑的數(shù)據(jù)報文緩存片的PCI-E內(nèi)存空間地址作為PCI-E報文設定的目的地址;并且,根據(jù)該PCI-E報文的目的地址將該其它接口板的對應的數(shù)據(jù)報文緩存片的狀態(tài)記錄由空閑變更為占用;
當從來自其它接口板的PCI-E報文中解析出的以太數(shù)據(jù)報文轉(zhuǎn)發(fā)至以太交換芯片時,構(gòu)造攜帶有數(shù)據(jù)報文緩存片釋放信息的PCI-E報文、并且構(gòu)造的PCI-E報文以該其它接口板的板卡內(nèi)存映射的控制報文緩存片為目的地址,以供PCI-E Endpoint將構(gòu)造的該PCI-E報文向轉(zhuǎn)發(fā)板轉(zhuǎn)發(fā)、并使轉(zhuǎn)發(fā)板根據(jù)構(gòu)造的該PCI-E報文的目的地址將該PCI-E報文向該其它接口板轉(zhuǎn)發(fā);
當從來自其它接口板的PCI-E報文中解析出數(shù)據(jù)報文緩存片釋放信息時,根據(jù)解析出的數(shù)據(jù)報文緩存片釋放信息將該其它接口板的對應的數(shù)據(jù)報文緩存片的狀態(tài)記錄由占用重置為空閑。
以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進等,均應包含在本發(fā)明保護的范圍之內(nèi)。