999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

面向S698處理器的軟件故障注入工具研究與實現(xiàn)*

2016-07-21 04:54:31佟雙軍左德承劉宏偉
航天控制 2016年4期

董 劍 佟雙軍 左德承 劉宏偉

哈爾濱工業(yè)大學,哈爾濱150001

?

面向S698處理器的軟件故障注入工具研究與實現(xiàn)*

董 劍 佟雙軍 左德承 劉宏偉

哈爾濱工業(yè)大學,哈爾濱150001

故障注入技術通過人為引入故障,加速系統(tǒng)失效,能夠在短時間內(nèi)有效地評估容錯計算機系統(tǒng)的容錯性能。通過對S698芯片以及當前軟件故障注入技術的研究,設計實現(xiàn)了一款針對S698處理器的軟件故障注入工具S-SFI,能夠進行關鍵寄存器被修改、代碼段破壞、進入非法工作區(qū)、死循環(huán)、軟件不喂狗和接口器件工作異常等類型故障的注入。該工具利用串口通信的方式在宿主機端提供了良好的交互界面。通過實驗對S-SFI的各項功能進行了驗證,并分析了各類型故障對目標系統(tǒng)的影響程度。 關鍵詞 軟件故障注入;S698處理器;中斷處理

計算機系統(tǒng)的可靠性評估是一項非常復雜的工作[1]。通常采用的模型分析方法隨著系統(tǒng)軟硬件規(guī)模的快速增長而變得越來越困難。對于實際系統(tǒng),模型分析中涉及到的故障激勵和錯誤的傳播過程過于復雜,如果在建模的過程中將實際系統(tǒng)假設成較為簡單的模型,分析結果就沒有太大的參考意義。通過實驗方式來評估系統(tǒng)可靠性已經(jīng)成為一種非常有吸引力的驗證系統(tǒng)容錯機制的方法。其中,將物理故障注入目標系統(tǒng)硬件是一種較為常用的方式[2]。諸如引腳級故障注入、重離子輻射和電源干擾都是這種故障注入方式的常用方法[3-4],該方法的優(yōu)點是能模擬真實的硬件故障,但缺點是需要針對特定的目標系統(tǒng)附加額外的硬件和故障注入設備。另外,目前高復雜度、高速度的硬件系統(tǒng)也使故障注入設備的研制變得非常困難,甚至不可能。通過對系統(tǒng)的仿真模型執(zhí)行故障注入也是評估可靠性的常用方法,但該方法耗時多,需要花大量時間開發(fā)仿真系統(tǒng)。基于軟件實現(xiàn)的故障注入技術[5-6]正逐漸受到關注,通過某種途徑(插入陷阱指令或者讓目標程序在調(diào)試模式下執(zhí)行)中斷目標程序的執(zhí)行,利用軟件代碼模擬系統(tǒng)軟硬件故障。這種方式實現(xiàn)復雜度低、成本小,具有很強的可擴展性。

本文設計并實現(xiàn)一款面向S698處理器芯片的軟件故障注入工具S-SFI(Software Fault Injector for S698)。S698是一款商業(yè)化的基于SPARC V8標準的32位RISC處理器,其內(nèi)部集成64位的浮點處理單元(FPU)、PCI控制器等片上外設。該芯片適用于高可靠實時控制,廣泛應用于工業(yè)控制、工程機械、航天航空、醫(yī)用電子設備和商用電子設備等領域。所提出的軟件故障注入工具能完成關鍵寄存器修改、代碼段破壞、進入非法工作區(qū)、死循環(huán)和接口器件工作異常等多種類型的故障注入。應用程序開發(fā)者能夠通過故障注入之后系統(tǒng)的執(zhí)行效果來檢驗嵌入式應用的容錯性能,有效輔助系統(tǒng)開發(fā)人員完成容錯應用的研制。

故障注入技術提出于上世紀70年代,主要用于驗證容錯系統(tǒng)的設計。按照實現(xiàn)方式的不同可以分為基于仿真的實現(xiàn)、基于硬件實現(xiàn)和基于軟件實現(xiàn)3大類。基于仿真方式的故障注入需要對目標系統(tǒng)建立仿真模型,對模型的精確性要求較高。基于硬件方式的故障注入需要使用額外的硬件,并且容易對目標系統(tǒng)造成永久性損壞。而軟件實現(xiàn)的故障注入通過修改程序執(zhí)行時內(nèi)存映像、處理器寄存器或應用程序源代碼等方式來模擬故障的發(fā)生,其實現(xiàn)成本低、對目標系統(tǒng)依賴性小、對其硬件沒有損壞、具有較好的可移植性。目前國內(nèi)外研究機構已開發(fā)了多款軟件故障注入工具,如表1所示。

從表1中可以看出,F(xiàn)IAT[7]的故障注入位置是由用戶在應用程序這個層面上選擇的,而其對內(nèi)存映像故障注入的具體位置是通過編譯器和裝載信息獲取的,這就決定了它無法注入瞬時故障。FERRARI[8]的運行受限于帶有ptrace接口函數(shù)的故障注入目標系統(tǒng),無法對不帶有操作系統(tǒng)環(huán)境的嵌入式應用執(zhí)行故障注入。DOCTOR[9]適用于分布式系統(tǒng)。Xception[1]對處理器要求較高,需要用到調(diào)試硬件編程接口,而這在很多情況下無法獲取。FTAPE[10]的故障注入需要修改驅(qū)動程序,并且該方法只能注入比特位翻轉(zhuǎn)類型的故障。GOOFI[11]只是提供了一個通用的框架,它的主要目的是為對不同的故障注入目標系統(tǒng)執(zhí)行故障注入提供一個通用的操作平臺,因為該平臺是利用面向?qū)ο蟮乃枷朐O計的,所以能方便地擴展故障注入功能。目前的GOOFI版本只提供了對運行前引入故障這種方法的支持,這是其局限性。JACA[12]雖然能夠?qū)ava應用程序執(zhí)行高層次故障注入(例如修改變量值),但其運行依賴于Java語言的反射機制,僅僅適用于對Java程序的故障注入。從上述對這些軟件注入工具的分析來看,軟件故障注入工具需要針對其依賴的運行環(huán)境和編譯環(huán)境進行設計,同時受到這些因素的影響,其功能也有一定的局限性。而目前國內(nèi)尚未發(fā)現(xiàn)能夠運行于S698處理器的故障注入工具。為此,通過對現(xiàn)有工具中針對不同注入方式以及不同故障類型的注入技術的研究,提出了一款支持國產(chǎn)S698處理器的軟件注入工具S-SFI。

1 S-SFI的設計與實現(xiàn)

1.1 SFI的運行環(huán)境

S-SFI可分為服務端和控制端兩部分,分別運行在宿主機和基于S698處理器的目標系統(tǒng)上。具體運行環(huán)境如圖1所示。

S-SFI的服務端運行在以S698芯片為處理器的目標硬件系統(tǒng)上,以串口中斷處理程序的方式注冊到目標系統(tǒng)的中斷向量表中。故障注入目標程序連同服務端相關代碼在集成開發(fā)環(huán)境Orion 5.0中編輯、編譯、鏈接生成可執(zhí)行程序之后,開發(fā)環(huán)境通過宿主機COM1串口下載可執(zhí)行程序到目標硬件(對應DSU調(diào)試支持接口)之上運行。宿主機COM1口和目標硬件的DSU口共同組成了程序下載運行調(diào)試的物理通道。目標系統(tǒng)提供一個串口(UART1)與宿主機機串口2相連,構成故障注入工具控制端與服務端之間的故障注入與結果回收通道。

圖1 S-SFI的運行環(huán)境

表1 國外經(jīng)典軟件故障注入工具

工具名稱實現(xiàn)單位注入特點FIAT美國CMU大學破壞任務內(nèi)存映像FERRARI美國Texas大學利用UNIXptrace接口函數(shù)提供的調(diào)試功能注入故障DOCTOR美國Michigan大學能注入處理器、內(nèi)存、通信故障Xception葡萄牙Coimbra大學對處理器內(nèi)部調(diào)試硬件編程FTAPE美國Illinois大學修改驅(qū)動程序模擬磁盤、內(nèi)存等故障GOOFI瑞典Chalmers大學面向?qū)ο蟮墓收献⑷牍ぞ撸猛ㄓ脭?shù)據(jù)庫存儲數(shù)據(jù)JACA巴西Campinas大學利用Java語言的反射機制對Java程序執(zhí)行故障注入

1.2 S-SFI的功能設計

S-SFI的服務端和控制端的具體功能結構如圖2所示。

控制端位于宿主機上,是用戶配置故障注入?yún)?shù)、進行故障注入、觀察運行結果的交互界面。由于目標程序運行在嵌入式環(huán)境下,而這種環(huán)境所能提供的人機交互方式非常有限且不直觀,為此選擇將工具的控制部分實現(xiàn)在能夠運行Windows的宿主機上,方便用戶操作。S-SFI的控制端主要包含串口通信支撐模塊、故障注入?yún)?shù)生成模塊和命令發(fā)送與結果回收模塊。串口通信支撐模塊主要包含與目標系統(tǒng)進行串口通信的一些功能。它提供串口選擇、發(fā)送數(shù)據(jù)、接收數(shù)據(jù)和配置串口波特率等串口相關功能給其他模塊,供控制端與服務端通信使用。故障注入?yún)?shù)生成模塊為用戶提供配置界面,并且根據(jù)用戶的輸入合理地組織故障注入命令。命令發(fā)送與結果回收模塊一方面接收參數(shù)生成模塊的故障注入命令數(shù)據(jù)并進行相應的改造以形成控制命令字節(jié)流,通過串口發(fā)送到工具的服務端。另一方面還需接收解析服務端發(fā)來的反饋結果顯示給用戶。這3個模塊統(tǒng)一協(xié)作,使得用戶能夠在PC機上配置故障注入?yún)?shù)、執(zhí)行故障注入并得到反饋結果。

服務端位于目標系統(tǒng)之上,是工具的核心部分,主要包含了關鍵寄存器修改、代碼段破壞、進入非法工作區(qū)、死循環(huán)、軟件不喂狗和接口器件工作異常這6種故障的實際注入模塊和系統(tǒng)狀態(tài)反饋模塊。命令接收與解析模塊接收串口上收到的故障注入命令字節(jié)流并解析出命令的含義,將相關參數(shù)放到相應的數(shù)據(jù)結構中供后續(xù)的故障注入使用。不同的故障類型所對應的參數(shù)需求如表2所示。在S-SFI的注入命令格式為‘b’+faultType+parameters+‘e’,命令字長度不固定,用b和e字符指示命令的開頭與結尾,它們之間的內(nèi)容如果與‘b’,‘e’相同則需要用‘’字符進行轉(zhuǎn)義。命令的第1個字節(jié)描述故障類型,其余位用來表示注入故障的參數(shù),命令字長度不固定。

圖2 S-SFI總體功能結構

1.3 S-SFI的實現(xiàn)

(1) 關鍵寄存器的修改

S698包含72個普通寄存器以及大量的系統(tǒng)寄存器,普通寄存器能通過匯編指令訪問到,系統(tǒng)寄存器可通過C程序訪問。目標系統(tǒng)處理器有用戶、特權2種工作模式。在中斷處理程序中,處理器處于特權模式,能讀寫所有存儲器和寄存器。

表2 每種故障類型注入所需的參數(shù)變量

系統(tǒng)寄存器分布于內(nèi)存地址空間上,中斷發(fā)生時不會被硬件自動保存,能夠在中斷處理程序中直接修改。而普通的72個寄存器,在中斷發(fā)生之時會采用SPARC架構特有的窗口機制保存部分通用寄存器。因此,實現(xiàn)寄存器修改的關鍵就是找到被寄存器滑動窗口所隱藏的寄存器。圖3中給出了寄存器窗口的結構。

圖3 具有8組寄存器窗口的寄存器結構

在S698中,當發(fā)生函數(shù)調(diào)用(包含中斷調(diào)用)時,隱含的save指令使窗口按圖中逆時針的方向移動一個格,使得被調(diào)函數(shù)在新的窗口運行,前一窗口的out寄存器組變成當前窗口的in寄存器組,這種特性常常使得函數(shù)調(diào)用變得高效,但卻使我們無法在中斷處理程序中訪問被注入的目標程序的寄存器。為此,對中斷注冊函數(shù)catch_interrupt進行了反匯編分析,得到了S698中斷的注冊過程。在此基礎上,設計了窗口寄存器的訪問方法。在用于注入的串口中斷處理子程序中,先通過restore執(zhí)行回到進入中斷處理程序之前的寄存器窗口B,利用該窗口的sp寄存器的值,可以訪問并修改內(nèi)存中保存的窗口B的寄存器的內(nèi)容,待中斷返回后,注入的故障值就會被恢復到相應的寄存器中。在這里還需要注意,涉及修改寄存器的代碼部分不能使用局部變量,因為局部變量存儲在內(nèi)存中的堆棧段,堆棧段通過sp寄存器(窗口中的o6寄存器)訪問,而sp寄存器在窗口變換的過程中對應的物理寄存器不同,其值會發(fā)生變化,故障注入會因不能正確訪問到變量值而失敗。

(2)代碼段的破壞

代碼段的破壞需要起始破壞地址、終止破壞地址和待注入破壞值3個參數(shù)。由于控制端發(fā)過來的地址可能不是4字節(jié)對齊的,所以在進行故障注入時首先需判斷起始地址,如果是4字節(jié)對齊地址,利用整型指針指向當前待破壞代碼段起始位置,以每次四字節(jié)的速度執(zhí)行故障值的寫入。如不是4字節(jié)對齊地址,需利用字節(jié)指針先處理前面若干字節(jié),按照字節(jié)依次寫入故障值。因為Sparc處理器內(nèi)存的存儲格式是大端模式,其在存儲4字節(jié)變量的時候,將變量的最高字節(jié)存放在內(nèi)存的最小地址上,舉例來說,如果內(nèi)存地址0x40037280-0x40037283處存儲了整型內(nèi)容0x12574538,那么這個數(shù)據(jù)中的字節(jié)0x12會被存放在地址0x40037280處,字節(jié)0x38會被存儲到0x40037283處。對于S-SFI來說,因為只接受4字節(jié)為單位的代碼段破壞故障值,所以如果用戶指定的代碼段首地址不是4字節(jié)對齊,為保持一致性,在對4字節(jié)對齊地址之前的內(nèi)存單元進行破壞時,要仔細選擇寫入的字節(jié)。圖左邊表示向內(nèi)存地址0x40037280寫入破壞值 0x12574538之后的內(nèi)存形態(tài),如果用戶指定的故障注入地址以0x4003727E開始,如圖4中左側畫“??”處,那么,要保證在破壞前2個內(nèi)存單元之后,內(nèi)存單元中的數(shù)據(jù)分布要與圖中右側的形式一致。

圖4 多字節(jié)代碼段破壞值在內(nèi)存中的分布

(3) 其它注入功能的實現(xiàn)

進入非法工作區(qū)主要是對目標程序的PC和nPC寄存器的修改。由于這2個寄存器都會被寄存器滑動窗口保存起來,注入方法與寄存器修改類似。非法工作區(qū)的地址采用隨機地址,在實驗中,進入非法工作區(qū)后系統(tǒng)大多數(shù)會崩潰。死循環(huán)故障使用匯編語言向中斷返回地址寫入死循環(huán)機器代碼,將其寫入PC寄存器所指向的代碼段地址。通過對brach指令機器碼的分析獲得實現(xiàn)死循環(huán)的機器代碼。接口器件的工作異常采用了基于定時器的注入方式,定時器中斷處理程序中采用循環(huán)的方式將故障值數(shù)組中的每個故障值注入到指定的接口控制系統(tǒng)寄存器中。

2 實驗

實驗所采用的目標系統(tǒng)為歐比特提供的s698開發(fā)系統(tǒng),目標程序為整型和浮點矩陣計算程序。實驗中針對6種類型的故障共進行了5110次注入。表3對注入結果進行了統(tǒng)計。

表3 故障注入實驗結果統(tǒng)計

在共計5110次的故障注入測試中,有722次導致目標系統(tǒng)崩潰,比例達到了14.13%。有100次導致運行結果不正確,比例為1.96%,故障注入后仍舊得到正確結果的比例為83.91%。首先來看寄存器故障注入部分,對大部分寄存器執(zhí)行的故障注入對目標系統(tǒng)的運行結果沒有影響,這可能是因為目標程序運行中并沒有用到這些寄存器,在導致目標系統(tǒng)運行結果不正確的100次故障中,o0,o4,o5,Y,F(xiàn)SR寄存器的故障注入占有的百分比相對多些,說明程序在執(zhí)行的過程中經(jīng)常用到它們,這些寄存器對于得到正確的計算結果非常重要。在導致目標系統(tǒng)崩潰的525次故障中,fp,sp,PSR,PC,nPC,WIM和TBR占有的百分比最多,o2次之,這是由于前面幾個寄存器都是堆棧指針(程序要通過它來訪問變量)或者控制寄存器,它們的故障對系統(tǒng)影響非常大,當其值被改變后,程序可能訪問到了錯誤的內(nèi)存位置或進入不正確的狀態(tài)而導致系統(tǒng)運行崩潰。從表中也可以看出,關鍵寄存器修改、破壞代碼段、進入死循環(huán)和進入非法工作區(qū)這幾種類型故障注入后引起系統(tǒng)的崩潰或者錯誤率都到90%以上,證明它們對于目標程序來說都是非常致命的故障。在系統(tǒng)設計時,要著重研究如何檢測與應對這些對系統(tǒng)運行而言非常關鍵的故障。

3 總結

經(jīng)過對S698處理器的深入研究,本文利用基于串口和定時器中斷的故障注入手段,開發(fā)了一款軟件故障注入工具S-SFI,能完成關鍵寄存器修改、代碼段破壞、進入非法工作區(qū)、死循環(huán)、軟件不喂狗、接口器件工作異常這6種類型故障的注入,并通過實驗對各項功能進行了驗證。S-SFI基于中斷控制注入的執(zhí)行,實現(xiàn)了運行時的故障注入,可在線調(diào)整注入?yún)?shù),能極大提高基于S698的容錯系統(tǒng)的調(diào)試與驗證效率。在下一步工作中,將展開對故障注入數(shù)據(jù)的分析工作,為用戶提供更加直觀的系統(tǒng)容錯能力參考數(shù)據(jù)。

[1] Carreira J, Madeira H, Silva J G. Xception: Software Fault Injection and Monitoring in Processor Functional Units[J]. Dependable Computing and Fault Tolerant Systems, 1998, 10: 245-266.

[2] Hsueh M C, Tsai T K, Iyer R K. Fault Injection Techniques and Tools[J]. Computer, 1997, 30(4): 75-82.

[3] Natella R, Cotroneo D, Duraes J A, et al. On Fault Representativeness of Software Fault Injection[J]. IEEE Transactions on Software Engineering, 2013, 39(1): 80-96.

[4] Arlat J, Crouzet Y, Karlsson J, Folkesson P, Fuchs E, Leber G H. Comparison of Physical and Software-implemented Fault Injection Techniques[J]. IEEE Trans. Comput, 2003,52(9) : 1115-1133.

[5] Ziade H, Ayoubi R A, Velazco R. A Survey on Fault Injection Techniques[J]. Int. Arab J. Inf. Technol., 2004, 1(2): 171-186.

[6] Wei J, Thomas A, Li G, et al. Quantifying the Accuracy of High-level Fault Injection Techniques for Hardware Faults[C]. The 44rd Annual IEEE/IFIP International Conference on.Dependable Systems and Networks (DSN), 2014.

[7] Barton J H, Czeck E W, Segall Z Z, et al. Fault Injection Experiments Using FIAT[J]. IEEE Transactions on Computers, 1990, 39(4): 575-582.

[8] Kanawati G A, Kanawati N A, Abraham J A. Ferrari: A Flexible Software-based Fault and Error Injection System[J]. IEEE Transactions on Computers, 1995, 44(2): 248-260.

[9] Han S, Shin K G, Rosenberg H A. Doctor: An Integrated Software Fault Injection Environment for Distributed Real-time Systems[C]. International. IEEE Computer Performance and Dependability Symposium, 1995, 204-213.

[10] Tsai T K, Iyer R K. Ftape: A Fault Injection Tool to Measure Fault Tolerance[R]. NASA STI/Recon Technical Report N, 1994.

[11] Aidemark J, Vinter J, Folkesson P, et al. Goofi: Generic Object-oriented Fault Injection Tool[C]. International Conference on Dependable Systems and Networks, 2001, 83-88.

[12] Martins E, Rubira C M F, Leme N G M. Jaca: A Reflective Fault Injection Tool Based on Patterns[C]. International Conference on Dependable Systems and Networks, 2002, 483-487.

A Software Fault Injector for S698 Processor

Dong Jian, Tong Shuangjun, Zuo Decheng, Liu Hongwei

Harbin Institute of Technology, Harbin 150001, China

Thefaultinjectiontechnologycanacceleratesystemfailurebyinjectingthefault,whichcaneffectivelyevaluatethefaulttoleranceperformanceoffaulttolerantcomputersysteminashortperiodoftime.ByresearchingthesoftwarefaulttechniquesandS698chip,asoftwarefaultinjectorforS698chip(S-SFI)isdesignedandimplemented,whichcaninjectfaults,suchasthekeyregistersmodification,codesegmentwreckage,illegalworkareaentrance,thedeadcycle,errorofwatchdogandabnormalinterface,intothesoftwaresystemrunningonS698.Finally,thefunctionsofS-SFIisevaluatedbyexperiments,andtheinfluenceofeachtypeoffaultonthetargetsystemisanalyzedaccordingtotheexperimentalresults.

Softwarefaultinjection; S698chip;Interruption

*國家自然科學基金(61100029)

2014-10-29

董 劍(1978-),男,山東章丘人,博士,教授,主要研究方向為容錯計算技術;佟雙軍(1990-),男,哈爾濱人,碩士研究生,主要研究方向為容錯機制驗證;左德承(1971-),男,黑龍江五常人,博士,教授,主要研究方向為容錯計算與移動計算;劉宏偉(1971-),男,黑龍江大慶人,博士,教授,主要研究方向為軟件可靠性。

TP302.8

A

1006-3242(2016)04-0083-06

主站蜘蛛池模板: 亚洲男人的天堂久久香蕉| 内射人妻无码色AV天堂| 伊人久久大线影院首页| 亚洲码一区二区三区| 欧美成人免费| 性色在线视频精品| 亚洲美女一区二区三区| 99成人在线观看| 亚洲天堂精品视频| 国产一区三区二区中文在线| 亚洲狼网站狼狼鲁亚洲下载| 色综合五月| 亚洲成人播放| 中文字幕av一区二区三区欲色| 日本三区视频| 国产地址二永久伊甸园| 国产无码在线调教| 国产婬乱a一级毛片多女| 国内精品免费| 国产在线观看人成激情视频| 日韩国产精品无码一区二区三区| 伊人蕉久影院| 婷婷五月在线| 精品一区国产精品| 日本国产一区在线观看| 91久久大香线蕉| 全部免费特黄特色大片视频| 久久中文字幕2021精品| 国产福利观看| 国产亚洲精久久久久久无码AV| 热久久综合这里只有精品电影| 一本色道久久88亚洲综合| 欧美在线中文字幕| 日本在线亚洲| 亚洲欧洲日韩综合色天使| 香蕉eeww99国产在线观看| 成人中文字幕在线| 久久综合国产乱子免费| 亚洲日韩精品无码专区| 视频二区亚洲精品| 亚洲av色吊丝无码| 成人va亚洲va欧美天堂| 国产一级小视频| 91福利国产成人精品导航| 福利一区在线| 国产一二三区在线| 欧洲高清无码在线| 福利国产在线| 成人毛片免费在线观看| 亚洲精品欧美日韩在线| 青青草国产在线视频| 亚洲水蜜桃久久综合网站| av在线人妻熟妇| 99久久国产精品无码| 日本影院一区| 精品自窥自偷在线看| 在线观看国产精品一区| 欧美精品在线免费| 国产极品粉嫩小泬免费看| 欧美A级V片在线观看| 亚洲视频免费在线看| 日本午夜三级| 亚洲国产精品成人久久综合影院| 国产亚洲欧美在线专区| 国产本道久久一区二区三区| 精久久久久无码区中文字幕| 朝桐光一区二区| 亚洲精品人成网线在线| 国产成人一区二区| 欧美高清日韩| 国产v精品成人免费视频71pao| 中文字幕永久在线观看| 无码内射在线| 久久精品无码一区二区日韩免费| 国产免费一级精品视频| 中文无码精品A∨在线观看不卡| 日本免费福利视频| 久久久久亚洲AV成人网站软件| 免费又爽又刺激高潮网址| 99久久精品视香蕉蕉| 国产免费福利网站| 国产麻豆永久视频|