專(zhuān)利名稱(chēng):一種安全網(wǎng)關(guān)及其故障檢測(cè)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及網(wǎng)絡(luò)安全領(lǐng)域,尤其涉及一種安全網(wǎng)關(guān)及其故障檢測(cè)方法。
背景技術(shù):
安全網(wǎng)關(guān)作為重要的網(wǎng)絡(luò)安全設(shè)備,在現(xiàn)在的各類(lèi)網(wǎng)絡(luò)環(huán)境中已經(jīng)成為不可缺少 的網(wǎng)絡(luò)設(shè)備。在實(shí)際使用中,由于復(fù)雜的應(yīng)用和安全網(wǎng)關(guān)實(shí)現(xiàn)的機(jī)制不同,安全網(wǎng)關(guān)在某些 錯(cuò)誤狀態(tài)下會(huì)出現(xiàn)僵死的狀態(tài),即系統(tǒng)停止工作,包括停止轉(zhuǎn)發(fā),無(wú)法管理,等等。安全網(wǎng)關(guān)常見(jiàn)的僵死原因包括設(shè)備處于某種錯(cuò)誤狀態(tài)的死鎖,或死循環(huán)等等。并 且隨著軟件功能越來(lái)越復(fù)雜,這種問(wèn)題越來(lái)越突出,而且難以定位。目前常用的系統(tǒng)僵死 檢測(cè)方法是硬件watchdog,硬件watchdog必須有硬件支持。當(dāng)系統(tǒng)運(yùn)行以后也就啟動(dòng)了 watchdog的計(jì)數(shù)器,watchdog就開(kāi)始自動(dòng)計(jì)數(shù),硬件watchdog在設(shè)定的時(shí)間間隔內(nèi)沒(méi)有 被執(zhí)行寫(xiě)操作,那么計(jì)數(shù)器就會(huì)溢出從而引起watchdog中斷,造成系統(tǒng)復(fù)位,重起設(shè)備。但 硬件watchdog需要有硬件支持,需要加載對(duì)應(yīng)硬件的驅(qū)動(dòng)模塊,增加系統(tǒng)風(fēng)險(xiǎn)。并且硬件 watchdog只能檢測(cè)到系統(tǒng)狀態(tài)錯(cuò)誤,無(wú)法設(shè)定系統(tǒng)出錯(cuò)的條件,無(wú)法檢測(cè)系統(tǒng)出錯(cuò)的原因 和系統(tǒng)出錯(cuò)時(shí)的狀態(tài),這些對(duì)系統(tǒng)問(wèn)題的判斷和定位造成很大的困難。并且,現(xiàn)有的很多系 統(tǒng)在處理某些工作的時(shí)候是禁止硬中斷的,如果在禁止硬中斷的時(shí)候系統(tǒng)出現(xiàn)故障,那么 系統(tǒng)中的軟件也就不會(huì)有執(zhí)行的機(jī)會(huì),因此如果希望通過(guò)軟件來(lái)檢測(cè)系統(tǒng)故障,必須使檢 測(cè)代碼在即使硬件中斷被禁止時(shí)還可以運(yùn)行。
發(fā)明內(nèi)容
為了解決現(xiàn)有技術(shù)中存在的問(wèn)題,本發(fā)明提供一種安全網(wǎng)關(guān)及其故障檢測(cè)方法。具體的,本發(fā)明提供的一種安全網(wǎng)關(guān)故障檢測(cè)方法,包括以下步驟安全網(wǎng)關(guān)啟動(dòng)時(shí),初始化預(yù)先配置的全局變量tos_nmi_watchdog和tos_ watchdog_lasttime,并注冊(cè) NMI 中斷處理函數(shù) do_nmi ;安全網(wǎng)關(guān)在刷新條件被觸發(fā)時(shí),刷新所述tosjatchdogjasttime變量;安全網(wǎng)關(guān)在匪I中斷被觸發(fā)后,調(diào)用所述中斷處理函數(shù)do_nmi檢測(cè)所述tos_ watchdogjasttime變量在設(shè)定的時(shí)間內(nèi)是否未被刷新過(guò),若是,判定安全網(wǎng)關(guān)發(fā)生故障, 重啟系統(tǒng)。本發(fā)明所述方法中,所述刷新條件包括所述安全網(wǎng)關(guān)接收到數(shù)據(jù)包。進(jìn)一步的,所述方法中,安全網(wǎng)關(guān)在初始化預(yù)先配置的全局變量toS_nmi_ watchdog和tos_watchdog_lasttime時(shí)還包括所述安全網(wǎng)關(guān)初始化預(yù)先配置的nmi_ watchdog的定時(shí)器,并注冊(cè)其處理函數(shù)watchdog_reset?;谏鲜黾夹g(shù)特征,所述刷新條件還包括所述nmijatchdog定時(shí)器到達(dá)設(shè)定的 定時(shí)時(shí)間。本發(fā)明所述方法中,所述刷新tosjatchdogjasttime變量具體為將當(dāng)前系統(tǒng) 的 jiffies 賦值給所述 tos_watchdog_lasttime 變量。
進(jìn)一步的,所述方法中,安全網(wǎng)關(guān)在判定安全網(wǎng)關(guān)故障后重啟系統(tǒng)前還包括記錄 系統(tǒng)狀態(tài)的操作。其中,系統(tǒng)狀態(tài)包括CPU狀態(tài)、各個(gè)寄存器的值以及函數(shù)堆棧信息。本發(fā)明還提供一種安全網(wǎng)關(guān),包括初始化模塊,用于在安全網(wǎng)關(guān)啟動(dòng)時(shí),初始化預(yù)先配置的全局變量toS_nmi_ watchdog 禾口 tos_watchdog_lasttime,并注冊(cè) NMI 中斷處理函數(shù) do_nmi ;變量刷新模塊,用于在刷新條件被觸發(fā)時(shí),刷新所述tosjatchdogjasttime變 量;中斷觸發(fā)模塊,用于在匪I中斷被觸發(fā)后,調(diào)用所述中斷處理函數(shù)do_nmi檢測(cè)所 述tosjatchdogjasttime變量在設(shè)定的時(shí)間內(nèi)是否未被刷新過(guò),若是,判定安全網(wǎng)關(guān)發(fā) 生故障,重啟系統(tǒng)。本發(fā)明提供的安全網(wǎng)關(guān)進(jìn)一步具有以下特點(diǎn)所述變量刷新模塊中刷新條件包括所述安全網(wǎng)關(guān)接收到數(shù)據(jù)包。所述初始化模塊,還用于在初始化預(yù)先配置的全局變量t0S_nmi_WatChd0g和 tos_watchdog_lasttime時(shí),初始化預(yù)先配置的nmi_watchdog的定時(shí)器,并注冊(cè)其處理函 數(shù) watchdog_reset。進(jìn)一步的,所述變量刷新模塊中刷新條件還包括所述nmijatchdog定時(shí)器到達(dá) 設(shè)定的定時(shí)時(shí)間。所述變量刷新模塊中刷新tosjatchdogjasttime變量具體為將當(dāng)前系統(tǒng)的 jiffies Mit^oljfii tos_watchdog_lasttime $fi。所述中斷觸發(fā)模塊,還用于在判定安全網(wǎng)關(guān)故障后重啟系統(tǒng)前記錄系統(tǒng)的狀態(tài)。與現(xiàn)有技術(shù)相比,本發(fā)明有益效果如下首先,本發(fā)明所述方法使用匪I檢測(cè)故障,不僅可以靈活的設(shè)定檢測(cè)時(shí)間間隔,設(shè) 定系統(tǒng)狀態(tài)出錯(cuò)的條件,還可以避免由于系統(tǒng)屏蔽硬中斷而導(dǎo)致無(wú)法檢測(cè)的情況;其次,本發(fā)明所述方法,可以打印出系統(tǒng)狀態(tài),包括具體的函數(shù)調(diào)用棧,寄存器信 息等等,便于問(wèn)題定位;第三,本發(fā)明所述方法不用增加新的硬件及相應(yīng)的中斷處理程序,減少了系統(tǒng)風(fēng)險(xiǎn)。
為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn) 有技術(shù)描述中所需要使用的附圖作一簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是 本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還 可以根據(jù)這些附圖獲得其他的附圖。圖1為本發(fā)明提供的一種安全網(wǎng)關(guān)故障檢測(cè)方法流程圖;圖2為本發(fā)明實(shí)施例一提供的一種安全網(wǎng)關(guān)故障檢測(cè)方法流程圖;圖3為本發(fā)明實(shí)施例二提供的一種安全網(wǎng)關(guān)故障檢測(cè)方法流程圖;圖4為本發(fā)明提供的一種安全網(wǎng)關(guān)結(jié)構(gòu)圖。
具體實(shí)施例方式下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;?本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他 實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。為了能夠快速定位安全網(wǎng)關(guān)死機(jī)的原因并且恢復(fù)系統(tǒng),本發(fā)明提供一種安全網(wǎng)關(guān) 及其故障檢測(cè),所述方法使用匪I (Non Maskable Interrupt,不可屏蔽中斷)檢測(cè)技術(shù),當(dāng) 系統(tǒng)正常運(yùn)行時(shí)每接收到一個(gè)數(shù)據(jù)包或定時(shí)時(shí)間到達(dá)時(shí)就會(huì)更新變量,如果安全網(wǎng)關(guān)出現(xiàn) 故障,包括死循環(huán)或死鎖等,變量無(wú)法更新,NMI檢測(cè)到錯(cuò)誤狀態(tài)后即設(shè)定的判斷條件失敗, 就會(huì)記錄下當(dāng)前的系統(tǒng)狀態(tài)包括函數(shù)調(diào)用棧,寄存器信息,系統(tǒng)出錯(cuò)的判斷條件等等,然后 使系統(tǒng)復(fù)位,重啟系統(tǒng)。其中不可屏蔽中斷檢測(cè)的系統(tǒng)出錯(cuò)的條件由程序員自己設(shè)定,這樣 就可以靈活的檢測(cè)到系統(tǒng)出錯(cuò),記錄下相應(yīng)的出錯(cuò)信息后,恢復(fù)系統(tǒng)。如圖1所示,為本發(fā)明提供的一種安全網(wǎng)關(guān)故障檢測(cè)方法流程圖,所述方法具體 包括以下步驟步驟S101、安全網(wǎng)關(guān)啟動(dòng)時(shí),初始化預(yù)先配置的全局變量t0S_nmi_WatChd0g和 tos_watchdog_lasttime,并注冊(cè) NMI 中斷處理函數(shù) do_nmi。步驟S102、安全網(wǎng)關(guān)在刷新條件被觸發(fā)時(shí),刷新所述tosjatchdogjasttime變量。需要說(shuō)明的是,在執(zhí)行該步驟時(shí),若系統(tǒng)已經(jīng)發(fā)生故障,例如,系統(tǒng)出現(xiàn)死循環(huán)或 者死鎖,則安全網(wǎng)關(guān)就不會(huì)刷新上述變量。也就是說(shuō)理論上安全網(wǎng)關(guān)在刷新條件被觸發(fā)時(shí), 應(yīng)該去更新t0s_watchd0g_lasttime變量;然而,實(shí)際中,若網(wǎng)關(guān)系統(tǒng)出現(xiàn)故障,其自身是 無(wú)法實(shí)現(xiàn)變量更新的,這就為后續(xù)檢測(cè)是否故障提供了檢測(cè)條件。步驟S103、安全網(wǎng)關(guān)在NMI中斷被觸發(fā)后,調(diào)用所述中斷處理函數(shù)do_nmi檢測(cè)所 述tosjatchdogjasttime變量在設(shè)定的時(shí)間內(nèi)是否未被刷新過(guò),若是,判定安全網(wǎng)關(guān)發(fā) 生故障,重啟系統(tǒng)。該步驟中,在判定安全網(wǎng)關(guān)故障時(shí),安全網(wǎng)關(guān)還執(zhí)行記錄系統(tǒng)狀態(tài)的操作。其中, 系統(tǒng)狀態(tài)包括系統(tǒng)CPU狀態(tài)、各個(gè)寄存器的值以及函數(shù)堆棧信息。為了更清楚的表述本發(fā)明的實(shí)現(xiàn)過(guò)程,下面通過(guò)幾個(gè)具體實(shí)施例來(lái)詳細(xì)說(shuō)明本發(fā) 明的實(shí)現(xiàn)過(guò)程實(shí)施例一具體的,本發(fā)明提供的方法包括以下步驟步驟S200、安全網(wǎng)關(guān)啟動(dòng)時(shí),內(nèi)核模塊初始化預(yù)先配置的全局變量toS_nmi_ watchdog 禾口 tos_watchdog_lasttime,并注冊(cè) NMI 中斷處理函數(shù) do_nmi。具體的初始化為 tos_nmi_watchdog = 1 ;tos_watchdog_lasttime = jiffies ;其中,tosjmijatchdog作為是否開(kāi)啟匪I檢測(cè)的開(kāi)關(guān),其值等于1表示開(kāi)啟匪I 檢測(cè);t0s_watchd0g_lasttime是收到包后需要更新的變量,即檢測(cè)系統(tǒng)保活的全局變量; jiffies為系統(tǒng)啟動(dòng)后的運(yùn)行時(shí)長(zhǎng),其隨著系統(tǒng)運(yùn)行的時(shí)間遞增。步驟S201、安全網(wǎng)關(guān)接收到數(shù)據(jù)包,將當(dāng)前的jiffies賦值給變量t0S_Watchd0g_ Iasttime (艮口刷新 tos_watchdog_lasttime 的過(guò)禾呈)。步驟S202、當(dāng)匪I中斷被觸發(fā)后,安全網(wǎng)關(guān)調(diào)用已經(jīng)注冊(cè)的中斷處理函數(shù)do_nmi 來(lái)處理該中斷,該中斷處理函數(shù)do_nmi會(huì)調(diào)用故障檢測(cè)子函數(shù)nmi_watchd0g_tick進(jìn)行故障檢測(cè)。值得一提的是,由于匪I是不可屏蔽中斷所以即使關(guān)閉硬中斷的系統(tǒng)該中斷也會(huì) 被觸發(fā)。步驟S203、nmi_watchdog_tick函數(shù)首先通過(guò)全局變量tos_nmi_watchdog判斷是 否開(kāi)啟了 nmijatchdog,如果t0S_nmi_watChd0g為0則沒(méi)有開(kāi)啟檢測(cè)功能,不作檢測(cè);如 果tos_nmi_watchdog為1表示開(kāi)啟了檢測(cè)功能,則判斷tos_watchdog_lasttime是否在設(shè) 定的時(shí)間內(nèi)被刷新,若是,執(zhí)行步驟S204 ;否則,執(zhí)行步驟S205。步驟S204、不做處理。步驟S205、安全網(wǎng)關(guān)調(diào)用die_nmi函數(shù),該die_nmi函數(shù)記錄系統(tǒng)狀態(tài)后,重啟系 統(tǒng)恢復(fù)到狀態(tài)1。其中,系統(tǒng)狀態(tài)包括系統(tǒng)cpu狀態(tài)、各個(gè)寄存器的值以及函數(shù)堆棧信息。實(shí)施例二步驟S300、安全網(wǎng)關(guān)啟動(dòng)時(shí),內(nèi)核模塊初始化全局變量tos_nmi_watchdog和tos_ watchdog_lasttime,并注冊(cè) NMI 中斷處理函數(shù) do_nmi。具體的初始化為 tos_nmi_watchdog = 1 ;tos_watchdog_lasttime = jiffies。步驟S301、安全網(wǎng)關(guān)初始化nmijatchdog的定時(shí)器并注冊(cè)其處理函數(shù)watchd0g_ reset。步驟S302、安全網(wǎng)關(guān)接收到數(shù)據(jù)包或nmijatchdog的定時(shí)器的定時(shí)時(shí)間到達(dá)時(shí), 將當(dāng)前的 jiffies 賦值給變量 tos_watchdog_lasttime(即刷新 tos_watchdog_lasttime 的過(guò)程)。步驟S303、當(dāng)匪I中斷被觸發(fā)后,安全網(wǎng)關(guān)調(diào)用已經(jīng)注冊(cè)的中斷處理函數(shù)do_nmi 來(lái)處理該中斷,該中斷處理函數(shù)do_nmi會(huì)調(diào)用故障檢測(cè)子函數(shù)nmi_watchd0g_tick進(jìn)行故 障檢測(cè)。值得一提的是,由于匪I是不可屏蔽中斷所以即使關(guān)閉硬中斷的系統(tǒng)該中斷也會(huì) 被觸發(fā)。步驟S304、nmi_watchdog_tick函數(shù)首先通過(guò)全局變量tos_nmi_watchdog判斷是 否開(kāi)啟了 nmijatchdog,如果t0S_nmi_watChd0g為0則沒(méi)有開(kāi)啟檢測(cè)功能,不作檢測(cè);如 果tos_nmi_watchdog為1表示開(kāi)啟了檢測(cè)功能,則判斷tos_watchdog_lasttime是否在設(shè) 定的時(shí)間內(nèi)被刷新,若是,執(zhí)行步驟S305 ;否則,執(zhí)行步驟S306。步驟S305、不做處理。步驟S306、安全網(wǎng)關(guān)調(diào)用die_nmi函數(shù),該die_nmi函數(shù)首先記錄系統(tǒng)狀態(tài)后,重 啟系統(tǒng)恢復(fù)到狀態(tài)1。其中,系統(tǒng)狀態(tài)包括系統(tǒng)cpu狀態(tài)、各個(gè)寄存器的值以及函數(shù)堆棧信息。需要說(shuō)明的是,上述記錄系統(tǒng)狀態(tài)為本發(fā)明的優(yōu)選操作,并非本發(fā)明的必要操作。本發(fā)明提供的方法,使用匪I檢測(cè)故障,不僅可以靈活的設(shè)定檢測(cè)時(shí)間間隔,設(shè)定 系統(tǒng)狀態(tài)出錯(cuò)的條件,還可以避免由于系統(tǒng)屏蔽硬中斷而導(dǎo)致無(wú)法檢測(cè)的情況;另外,本發(fā)明所述方法,可以打印出系統(tǒng)狀態(tài),包括具體的函數(shù)調(diào)用棧,寄存器信 息等等,便于問(wèn)題定位;第三,本發(fā)明所述方法不用增加新的硬件及相應(yīng)的中斷處理程序,減少了系統(tǒng)風(fēng)險(xiǎn)。本發(fā)明還提供一種安全網(wǎng)關(guān),如圖4所示,包括初始化模塊410,用于在安全網(wǎng)關(guān)啟動(dòng)時(shí),初始化預(yù)先配置的全局變量toS_nmi_ watchdog 禾口 tos_watchdog_lasttime,并注冊(cè) NMI 中斷處理函數(shù) do_nmi ;變量刷新模塊420,用于在刷新條件被觸發(fā)時(shí),刷新所述tosjatchdogjasttime
變量;中斷觸發(fā)模塊430,用于在NMI中斷被觸發(fā)后,調(diào)用所述中斷處理函數(shù)do_nmi檢測(cè) 所述tosjatchdogjasttime變量在設(shè)定的時(shí)間內(nèi)是否未被刷新過(guò),若是,判定安全網(wǎng)關(guān) 發(fā)生故障,重啟系統(tǒng)。其中,變量刷新模塊420中刷新條件包括所述安全網(wǎng)關(guān)接收到數(shù)據(jù)包。初始化模塊410,還用于在初始化預(yù)先配置的全局變量tos_nmi_watchdog和tos_ watchdog_lasttime時(shí),初始化預(yù)先配置的nmi_watchdog的定時(shí)器,并注冊(cè)其處理函數(shù) watchdog_reset?;谏鲜黾夹g(shù)特征,變量刷新模塊420中刷新條件還包括所述nmijatchdog定 時(shí)器到達(dá)設(shè)定的定時(shí)時(shí)間。進(jìn)一步的,變量刷新模塊420中刷新tosjatchdogjasttime變量具體為將當(dāng)前 系統(tǒng)的jiffies賦值給所述tos_watchdog_lasttime變量。中斷觸發(fā)模塊430,還用于在判定安全網(wǎng)關(guān)故障后重啟系統(tǒng)前記錄系統(tǒng)的狀態(tài)。其 中,系統(tǒng)狀態(tài)包括系統(tǒng)cpu狀態(tài)、各個(gè)寄存器的值以及函數(shù)堆棧信息。通過(guò)實(shí)施本發(fā)明所述安全網(wǎng)關(guān),可以達(dá)到一下技術(shù)效果本發(fā)明提供的安全網(wǎng)關(guān),使用匪I檢測(cè)故障,不僅可以靈活的設(shè)定檢測(cè)時(shí)間間隔, 設(shè)定系統(tǒng)狀態(tài)出錯(cuò)的條件,還可以避免由于系統(tǒng)屏蔽硬中斷而導(dǎo)致無(wú)法檢測(cè)的情況;另外,本發(fā)明所述安全網(wǎng)關(guān),可以打印出系統(tǒng)狀態(tài),包括具體的函數(shù)調(diào)用棧,寄存 器信息等等,便于問(wèn)題定位;第三,本發(fā)明所述安全網(wǎng)關(guān)不用增加新的硬件及相應(yīng)的中斷處理程序,減少了系 統(tǒng)風(fēng)險(xiǎn)。顯然,本領(lǐng)域的技術(shù)人員可以對(duì)本發(fā)明進(jìn)行各種改動(dòng)和變型而不脫離本發(fā)明的精 神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍 之內(nèi),則本發(fā)明也意圖包含這些改動(dòng)和變型在內(nèi)。
權(quán)利要求
一種安全網(wǎng)關(guān)故障檢測(cè)方法,其特征在于,包括安全網(wǎng)關(guān)啟動(dòng)時(shí),初始化預(yù)先配置的全局變量tos_nmi_watchdog和tos_watchdog_lasttime,并注冊(cè)不可屏蔽中斷NMI中斷處理函數(shù)do_nmi;安全網(wǎng)關(guān)在刷新條件被觸發(fā)時(shí),刷新所述tos_watchdog_lasttime變量;安全網(wǎng)關(guān)在NMI中斷被觸發(fā)后,調(diào)用所述中斷處理函數(shù)do_nmi檢測(cè)所述tos_watchdog_lasttime變量在設(shè)定的時(shí)間內(nèi)是否未被刷新過(guò),若是,判定安全網(wǎng)關(guān)發(fā)生故障,重啟系統(tǒng)。
2.如權(quán)利要求1所述的方法,其特征在于,所述刷新條件包括所述安全網(wǎng)關(guān)接收到數(shù) 據(jù)包。
3.如權(quán)利要求2所述的方法,其特征在于,所述安全網(wǎng)關(guān)在初始化預(yù)先配置的全局變 量 tos—nmi—watchdog 禾口 tos—watchdog—Iasttime 時(shí)還包括所述安全網(wǎng)關(guān)初始化預(yù)先配置的nmijatchdog的定時(shí)器,并注冊(cè)其處理函數(shù) watchdog—reset ο
4.如權(quán)利要求3所述的方法,其特征在于,所述刷新條件還包括所述nmijatchdog 定時(shí)器到達(dá)設(shè)定的定時(shí)時(shí)間。
5.如權(quán)利要求1所述的方法,其特征在于,所述刷新t0s_watchd0g_lasttime變量具體 為將當(dāng)前系統(tǒng)的jiffies賦值給所述tos_watchdog_lasttime變量。
6.如權(quán)利要求1至5任意一項(xiàng)所述的方法,其特征在于,所述安全網(wǎng)關(guān)在判定安全網(wǎng)關(guān) 故障后重啟系統(tǒng)前還包括記錄系統(tǒng)狀態(tài)的操作。
7.一種安全網(wǎng)關(guān),其特征在于,包括初始化模塊,用于在安全網(wǎng)關(guān)啟動(dòng)時(shí),初始化預(yù)先配置的全局變量t0S_nmi_watChd0g 和 tos_watchdog_lasttime,并注冊(cè) NMI 中斷處理函數(shù) do_nmi ;變量刷新模塊,用于在刷新條件被觸發(fā)時(shí),刷新所述tosjatchdogjasttime變量;中斷觸發(fā)模塊,用于在匪I中斷被觸發(fā)后,調(diào)用所述中斷處理函數(shù)do_nmi檢測(cè)所述 tosjatchdogjasttime變量在設(shè)定的時(shí)間內(nèi)是否未被刷新過(guò),若是,判定安全網(wǎng)關(guān)發(fā)生故 障,重啟系統(tǒng)。
8.如權(quán)利要求7所述的安全網(wǎng)關(guān),其特征在于,所述變量刷新模塊中刷新條件包括所 述安全網(wǎng)關(guān)接收到數(shù)據(jù)包。
9.如權(quán)利要求8所述的安全網(wǎng)關(guān),其特征在于,所述初始化模塊,還用于在初始化預(yù)先 配置的全局變量tos_nmi_watchdog禾口 tos_watchdog_lasttime時(shí),初女臺(tái)化預(yù)先配置的nmi_ watchdog的定時(shí)器,并注冊(cè)其處理函數(shù)watchdog_reset。
10.如權(quán)利要去9所述的安全網(wǎng)關(guān),其特征在于,所述變量刷新模塊中刷新條件還包 括所述nmi_watchd0g定時(shí)器到達(dá)設(shè)定的定時(shí)時(shí)間。
11.如權(quán)利要求7所述的安全網(wǎng)關(guān),其特征在于,所述變量刷新模塊中刷新tos_ watchdog_lasttime變量具體為將當(dāng)前系統(tǒng)的jiffies賦值給所述tos_watchdog_ Iasttime 變量。
12.如權(quán)利要求7至11任意一項(xiàng)所述安全網(wǎng)關(guān),其特征在于,所述中斷觸發(fā)模塊,還用 于在判定安全網(wǎng)關(guān)故障后重啟系統(tǒng)前記錄系統(tǒng)的狀態(tài)。
全文摘要
本發(fā)明公開(kāi)了一種安全網(wǎng)關(guān)及其故障檢測(cè)方法,所述方法包括安全網(wǎng)關(guān)啟動(dòng)時(shí),初始化預(yù)先配置的全局變量tos_nmi_watchdog和tos_watchdog_lasttime,并注冊(cè)中斷處理函數(shù)do_nmi;并在刷新條件被觸發(fā)時(shí),刷新所述tos_watchdog_lasttime變量;并在nmi中斷被觸發(fā)后,調(diào)用中斷處理函數(shù)do_nmi檢測(cè)tos_watchdog_lasttime變量在設(shè)定的時(shí)間內(nèi)是否未被刷新過(guò),若是,判定安全網(wǎng)關(guān)發(fā)生故障,重啟系統(tǒng)。本發(fā)明所述方法能夠快速定位安全網(wǎng)關(guān)死機(jī)的原因并且恢復(fù)系統(tǒng)。
文檔編號(hào)H04L12/26GK101895440SQ20101023370
公開(kāi)日2010年11月24日 申請(qǐng)日期2010年7月22日 優(yōu)先權(quán)日2010年7月22日
發(fā)明者婁揚(yáng), 范鴻雷 申請(qǐng)人:北京天融信科技有限公司