日韩在线一区二区三区,日本午夜一区二区三区,国产伦精品一区二区三区四区视频,欧美日韩在线观看视频一区二区三区 ,一区二区视频在线,国产精品18久久久久久首页狼,日本天堂在线观看视频,综合av一区

[發(fā)明專利]基于Rsockets協(xié)議的零拷貝數(shù)據(jù)傳輸方法在審

專利信息
申請?zhí)枺?/td> 202110399487.5 申請日: 2021-04-14
公開(公告)號: CN113064846A 公開(公告)日: 2021-07-02
發(fā)明(設(shè)計)人: 黃旺;劉亞萍;張碩 申請(專利權(quán))人: 中南大學(xué);鵬城實驗室
主分類號: G06F13/28 分類號: G06F13/28;H04L29/06
代理公司: 湖南企企衛(wèi)知識產(chǎn)權(quán)代理有限公司 43257 代理人: 任合明
地址: 410083 *** 國省代碼: 湖南;43
權(quán)利要求書: 查看更多 說明書: 查看更多
摘要:
搜索關(guān)鍵詞: 基于 rsockets 協(xié)議 拷貝 數(shù)據(jù)傳輸 方法
【權(quán)利要求書】:

1.一種基于Rsockets協(xié)議的零拷貝數(shù)據(jù)傳輸方法,其特征在于包含以下步驟:

第一步,構(gòu)建基于Rsockets協(xié)議的零拷貝數(shù)據(jù)傳輸系統(tǒng);基于Rsockets協(xié)議的零拷貝數(shù)據(jù)傳輸系統(tǒng)由基于Rsockets協(xié)議的RDMA傳輸系統(tǒng),內(nèi)存管理模塊,內(nèi)存處理模塊,工作請求模塊組成;基于Rsockets協(xié)議的RDMA傳輸系統(tǒng)包括套接字應(yīng)用,OFED庫,OFED內(nèi)核庫以及RDMA網(wǎng)卡;發(fā)送端和接收端都安裝有基于Rsockets協(xié)議的零拷貝數(shù)據(jù)傳輸系統(tǒng);

基于Rsockets協(xié)議的RDMA傳輸系統(tǒng)中,套接字應(yīng)用和OFED庫安裝在用戶空間,Rsockets協(xié)議屬于OFED庫的一部分,OFED內(nèi)核庫安裝在內(nèi)核空間,RDMA網(wǎng)卡為硬件,安裝在主機的PCIE插槽內(nèi);

修改Rsockets協(xié)議中的相關(guān)函數(shù):在Rsockets協(xié)議中添加SEND發(fā)送管理函數(shù),在Rsockets協(xié)議的rsendto函數(shù)中增加調(diào)用SEND發(fā)送管理函數(shù)的功能,SEND發(fā)送管理函數(shù)負責(zé)發(fā)送工作請求模塊構(gòu)造的SEND工作請求;在Rsockets協(xié)議中添加WRITE發(fā)送管理函數(shù),在Rsockets協(xié)議的rsend函數(shù)增加調(diào)用WRITE發(fā)送管理函數(shù)的功能,WRITE發(fā)送管理函數(shù)負責(zé)發(fā)送工作請求模塊構(gòu)造的WRITE工作請求;Rsockets協(xié)議的rconnect函數(shù)、raccept函數(shù)、rsendto函數(shù),rrecvfrom函數(shù)增加調(diào)用OFED庫的注冊物理地址內(nèi)存區(qū)域函數(shù)的功能,使得具有注冊物理地址內(nèi)存區(qū)域的功能;在Rsockets協(xié)議中增加請求創(chuàng)建緩存池函數(shù),在Rsockets協(xié)議增加調(diào)用請求創(chuàng)建緩存池函數(shù)的功能,請求創(chuàng)建緩存池函數(shù)向內(nèi)存管理模塊發(fā)送“創(chuàng)建緩存池請求”;在Rsockets協(xié)議中增加請求內(nèi)存處理函數(shù),在rsend函數(shù)和rsendto函數(shù)中增加調(diào)用請求內(nèi)存處理函數(shù)的功能,請求內(nèi)存處理函數(shù)向內(nèi)存管理模塊發(fā)送“內(nèi)存處理請求”和內(nèi)存地址信息;在Rsockets協(xié)議中增加請求RDMA資源函數(shù),在rsend函數(shù)和rsendto函數(shù)增加調(diào)用請求RDMA資源函數(shù)的功能,請求RDMA資源函數(shù)向工作請求模塊發(fā)送“RDMA資源請求”;在Rsockets協(xié)議中增加判斷緩存池函數(shù),在rsend函數(shù)中增加調(diào)用判斷緩存池函數(shù)的功能,向內(nèi)存管理模塊發(fā)送“判斷緩存池長度請求”;在Rsockets協(xié)議中增加WRITE處理完成事件函數(shù),在rrecv函數(shù)增加調(diào)用WRITE處理完成事件函數(shù)的功能,負責(zé)處理WRITE工作請求的消息的接收,并向內(nèi)存管理模塊發(fā)送“內(nèi)存映射請求”;在Rsockets協(xié)議中增加SEND處理完成事件函數(shù),在rrecvfrom函數(shù)增加調(diào)用SEND處理完成事件函數(shù)的功能,負責(zé)處理SEND工作請求的消息的接收,SEND處理完成事件函數(shù)向內(nèi)存管理模塊發(fā)送“內(nèi)存映射請求”;在Rsockets協(xié)議中增加請求接收工作請求函數(shù),在rbind函數(shù)增加調(diào)用請求接收工作請求函數(shù)的功能,請求接收工作請求函數(shù)向工作請求模塊發(fā)送RDMA資源和“構(gòu)造接收工作請求”;在Rsockets協(xié)議增加獲取工作請求函數(shù),在rsend函數(shù)和rsendto函數(shù)增加調(diào)用獲取工作請求函數(shù)的功能,獲取工作請求函數(shù)向工作請求模塊發(fā)送“獲取工作請求”;

內(nèi)存管理模塊運行在用戶空間,與工作請求模塊,內(nèi)存處理模塊以及OFED庫的Rsockets協(xié)議相連,負責(zé)管理套接字應(yīng)用的發(fā)送緩存和接收緩存以及緩存池;緩存池僅用于存儲接收的數(shù)據(jù),并提供數(shù)據(jù)所在的物理地址使得套接字應(yīng)用的接收緩存可以與消息所在的物理地址建立內(nèi)存映射,直接獲取數(shù)據(jù);當(dāng)內(nèi)存管理模塊從請求創(chuàng)建緩存池函數(shù)接收到“創(chuàng)建緩存池請求”時,向內(nèi)存處理模塊發(fā)送“創(chuàng)建緩存池請求”,并從內(nèi)存處理模塊接收緩存池的物理地址,當(dāng)內(nèi)存管理模塊接收到緩存池的物理地址,向內(nèi)存管理模塊發(fā)送“建立內(nèi)存映射請求”,并從內(nèi)存處理模塊接收緩存池的虛擬地址;當(dāng)內(nèi)存管理模塊從交換緩存池地址函數(shù)接收到“交換緩存池請求”時,發(fā)送端內(nèi)存管理模塊和接受端內(nèi)存管理模塊互相交換緩存池地址信息;當(dāng)內(nèi)存管理模塊從請求內(nèi)存處理函數(shù)接收到“內(nèi)存處理請求”時,向內(nèi)存處理模塊發(fā)送“內(nèi)存處理請求”,并從內(nèi)存處理模塊接收到物理地址和頁個數(shù),向工作請求模塊返回物理地址和頁個數(shù);當(dāng)內(nèi)存管理模塊從判斷緩存池函數(shù)接收到“判斷緩存池長度請求”時,內(nèi)存管理模塊計算緩存池長度,將緩存池長度返回給rsend函數(shù);內(nèi)存管理模塊從WRITE處理完成事件函數(shù)接收到“內(nèi)存映射請求”時,向內(nèi)存處理模塊發(fā)送“建立內(nèi)存映射請求”,并從內(nèi)存處理模塊接收到套接字應(yīng)用的發(fā)送緩存的虛擬地址;當(dāng)內(nèi)存管理模塊從SEND處理完成事件函數(shù)接收到“內(nèi)存映射請求”時,向內(nèi)存處理模塊發(fā)送“建立內(nèi)存映射請求”,并從內(nèi)存處理模塊接收到套接字應(yīng)用的發(fā)送緩存的虛擬地址;

內(nèi)存處理模塊運行在Linux系統(tǒng)的內(nèi)核空間,與內(nèi)存管理模塊相連接,由兩個部分組成,一個是提供內(nèi)存處理功能的系統(tǒng)調(diào)用處理模塊,一個是提供創(chuàng)建緩存池和內(nèi)存映射功能的字符設(shè)備;系統(tǒng)調(diào)用處理模塊負責(zé)處理從內(nèi)存管理模塊接收的“內(nèi)存處理請求”,向內(nèi)存管理模塊發(fā)送物理地址和頁個數(shù);字符設(shè)備負責(zé)處理從內(nèi)存管理模塊接收的“創(chuàng)建緩存池請求”,創(chuàng)建一個緩存池,向內(nèi)存管理模塊返回緩存池的物理地址;字符設(shè)備處理從內(nèi)存管理模塊接收“建立內(nèi)存映射請求”,建立內(nèi)存映射,向內(nèi)存管理模塊傳遞與緩存池的物理地址對應(yīng)的虛擬地址;

工作請求模塊運行在用戶空間,與內(nèi)存管理模塊和Rsockets協(xié)議相連接,負責(zé)構(gòu)造對應(yīng)的工作請求,將工作請求交由Rsockets協(xié)議處理;工作請求模塊從Rsockets協(xié)議中獲取RDMA資源,從內(nèi)存管理模塊獲取內(nèi)存的物理地址和頁個數(shù),構(gòu)造基于物理地址發(fā)送的工作請求,并將基于物理地址發(fā)送的工作請求發(fā)送給Rsockets協(xié)議;當(dāng)工作請求模塊從請求接收工作請求函數(shù)收到RDMA資源和“構(gòu)造接收工作請求”時,創(chuàng)建RECEIVE工作請求,將RECEIVE工作請求發(fā)送給Rsockets協(xié)議;當(dāng)工作請求模塊從獲取工作請求函數(shù)接收到“獲取工作請求”時,創(chuàng)建工作請求結(jié)構(gòu)體數(shù)組,向rsend函數(shù)或rsendto函數(shù)發(fā)送創(chuàng)建的工作請求結(jié)構(gòu)體數(shù)組地址和數(shù)組的長度;當(dāng)工作請求模塊從請求RDMA資源函數(shù)接收到“RDMA資源請求”時,判斷工作請求模塊是否獲取到了RDMA資源,如果沒有獲取到RDMA資源,則向Rsockets協(xié)議發(fā)送“RDMA資源請求”以獲取RDMA資源;

第二步,發(fā)送端和接收端的套接字應(yīng)用向Rsockets協(xié)議發(fā)送socket請求,創(chuàng)建RDMA資源;內(nèi)存管理模塊和內(nèi)存處理模塊相互配合創(chuàng)建緩存池,建立對緩存池的內(nèi)存映射,方法是:

2.1發(fā)送端和接收端套接字應(yīng)用調(diào)用Linux系統(tǒng)的socket函數(shù),使用Rsockets協(xié)議攔截socket函數(shù),采用Rsockets協(xié)議中的rsocket函數(shù)替代socket函數(shù),rsocket函數(shù)調(diào)用請求創(chuàng)建緩存池函數(shù),請求創(chuàng)建內(nèi)存池函數(shù)向內(nèi)存管理模塊發(fā)送“創(chuàng)建緩存池請求”;

2.2內(nèi)存管理模塊收到rsocket函數(shù)的“創(chuàng)建緩存池請求”,打開內(nèi)存處理模塊的字符設(shè)備,向內(nèi)存處理模塊的字符設(shè)備傳遞“創(chuàng)建緩存池請求”;

2.3內(nèi)存處理模塊的字符設(shè)備收到“創(chuàng)建緩存池請求”后,創(chuàng)建一個物理地址連續(xù)的內(nèi)存塊作為緩存池,如果創(chuàng)建失敗則顯示“創(chuàng)建緩存池失敗”,轉(zhuǎn)3.32,如果創(chuàng)建成功,則向內(nèi)存管理模塊返回緩存池的物理地址和長度,轉(zhuǎn)2.4;

2.4內(nèi)存管理模塊初始化內(nèi)存管理結(jié)構(gòu)體,內(nèi)存管理結(jié)構(gòu)體的內(nèi)容包含緩存池物理地址首地址、緩存池虛擬地址首地址、長度、空閑長度、數(shù)據(jù)頭指針、數(shù)據(jù)尾指針,內(nèi)存管理模塊將從字符設(shè)備接收的緩存池的物理地址和長度分別存入到內(nèi)存管理結(jié)構(gòu)體的緩存池物理地址首地址和長度中;內(nèi)存管理結(jié)構(gòu)體的空閑長度初始化為內(nèi)存管理結(jié)構(gòu)體的長度,內(nèi)存管理結(jié)構(gòu)體的數(shù)據(jù)頭指針初始化為零,內(nèi)存管理結(jié)構(gòu)體的數(shù)據(jù)尾指針初始化為零;

2.5內(nèi)存管理模塊構(gòu)造“內(nèi)存映射請求”,向內(nèi)存處理模塊的字符設(shè)備發(fā)送“內(nèi)存映射請求”,請求映射緩存池物理地址;

2.6字符設(shè)備收到“建立內(nèi)存映射請求”后,根據(jù)緩存池物理地址建立內(nèi)存映射,調(diào)用Linux內(nèi)核的remap_pfn_range函數(shù)將緩存池的物理地址與Linux內(nèi)核查找的虛擬地址建立內(nèi)存映射,將與緩存池的物理地址對應(yīng)的Linux內(nèi)核查找的虛擬地址返回給內(nèi)存管理模塊,內(nèi)存管理模塊將虛擬地址首地址寫入內(nèi)存管理結(jié)構(gòu)體的緩存池虛擬地址首地址;

2.7Rsockets協(xié)議的rsocket函數(shù)根據(jù)從發(fā)送端和接收端套接字應(yīng)用調(diào)用的socket函數(shù)傳入的參數(shù)type和protocol來確認是TCP還是UDP傳輸,如果是TCP傳輸,轉(zhuǎn)2.7.1;如果是UDP傳輸,轉(zhuǎn)2.7.2;

2.7.1如果是從發(fā)送端獲取的type和protocol,說明是發(fā)送端套接字應(yīng)用,轉(zhuǎn)2.8;如果是從接收端獲取的type和protocol,說明是接收端套接字應(yīng)用,轉(zhuǎn)2.11;

2.7.2如果是從發(fā)送端獲取的type和protocol,說明是發(fā)送端套接字應(yīng)用,轉(zhuǎn)3.16;如果是從發(fā)送端獲取的type和protocol,說明是接收端套接字應(yīng)用,轉(zhuǎn)2.14;

2.8發(fā)送端套接字應(yīng)用調(diào)用Linux系統(tǒng)的connect函數(shù),使用Rsockets協(xié)議攔截connect函數(shù),采用Rsockets協(xié)議的rconnect函數(shù)替代connect函數(shù);rconnect函數(shù)調(diào)用交換緩存池地址函數(shù),交換緩存池地址函數(shù)向發(fā)送端的內(nèi)存管理模塊發(fā)送“交換緩存池請求”;

2.9發(fā)送端的內(nèi)存管理模塊從rconnect函數(shù)接收“交換緩存池請求”,內(nèi)存管理模塊將發(fā)送端的內(nèi)存管理結(jié)構(gòu)體A1的內(nèi)容發(fā)送給接收端的內(nèi)存管理模塊,并等待接收端返回接收端的內(nèi)存管理結(jié)構(gòu)體A2,若發(fā)送端內(nèi)存管理模塊接收到A2,將A2存入到發(fā)送端的第二內(nèi)存管理結(jié)構(gòu)體B1中,B1的內(nèi)容包含接收端緩存池的物理地址首地址,接收端緩存池虛擬地址首地址,長度,空閑長度,數(shù)據(jù)頭指針,數(shù)據(jù)尾指針;

2.10Rsockets協(xié)議的rconnect函數(shù)調(diào)用OFED庫的注冊物理地址內(nèi)存區(qū)域函數(shù),注冊物理地址內(nèi)存區(qū)域;轉(zhuǎn)第三步;

2.11接收端套接字應(yīng)用調(diào)用Linux系統(tǒng)的accept函數(shù),使用Rsockets協(xié)議攔截accept函數(shù),采用Rsockets協(xié)議的raccept函數(shù)替代accept函數(shù);raccept函數(shù)調(diào)用交換緩存池地址函數(shù),交換緩存池地址函數(shù)向接收端的內(nèi)存管理模塊發(fā)送“交換緩存池請求”;

2.12接收端的內(nèi)存管理模塊從raccept函數(shù)接收的“交換緩存池請求”,內(nèi)存管理模塊從發(fā)送端內(nèi)存管理模塊接收A1,將A1存入到接收端的第二內(nèi)存管理結(jié)構(gòu)體B2中,B2的內(nèi)容包含發(fā)送端緩存池物理地址首地址,發(fā)送端緩存池虛擬地址首地址,長度,空閑長度,數(shù)據(jù)頭指針,數(shù)據(jù)尾指針;接收端的內(nèi)存管理模塊將A2發(fā)送給發(fā)送端內(nèi)存管理模塊;

2.13raccept函數(shù)調(diào)用OFED庫的注冊物理地址內(nèi)存區(qū)域函數(shù),注冊物理地址內(nèi)存區(qū)域;轉(zhuǎn)3.30;

2.14接收端套接字應(yīng)用調(diào)用bind函數(shù),使用Rsockets協(xié)議攔截bind函數(shù),采用Rsockets協(xié)議的rbind函數(shù)替代bind函數(shù),rbind函數(shù)調(diào)用請求接收工作請求函數(shù),請求接收工作請求函數(shù)向工作請求模塊發(fā)送Rsockets協(xié)議的rconnect函數(shù)創(chuàng)建的RDMA資源和“構(gòu)造接收工作請求”;

2.15工作請求模塊從rbind函數(shù)接收“構(gòu)造接收工作請求”和RDMA資源,構(gòu)造RECEIVE工作請求,并調(diào)用OFED庫的ibv_post_recv函數(shù),將所有RECEIVE工作請求發(fā)布到網(wǎng)卡中;轉(zhuǎn)3.31;

第三步,發(fā)送端套接字應(yīng)用從其發(fā)送緩存發(fā)送數(shù)據(jù),內(nèi)存管理模塊和內(nèi)存處理模塊處理發(fā)送緩存后得到物理地址和頁個數(shù),工作請求模塊構(gòu)造對應(yīng)工作請求,交由RDMA網(wǎng)卡執(zhí)行工作請求將數(shù)據(jù)發(fā)送到接收端的緩存池中,接收端的內(nèi)存管理模塊將接收端套接字應(yīng)用的接收緩存與緩存池中數(shù)據(jù)的物理地址建立內(nèi)存映射,直接拿取數(shù)據(jù);數(shù)據(jù)成功到達接收端套接字應(yīng)用;方法是:

3.1發(fā)送端套接字應(yīng)用調(diào)用write或send函數(shù)發(fā)送數(shù)據(jù),使用Rsockets協(xié)議攔截write或send函數(shù),采用Rsockets協(xié)議的rsend函數(shù)替代write或send函數(shù),rsend函數(shù)調(diào)用請求內(nèi)存處理函數(shù),請求內(nèi)存處理函數(shù)向發(fā)送端的內(nèi)存管理模塊發(fā)送“內(nèi)存處理請求”,“內(nèi)存處理請求”包含所在套接字應(yīng)用發(fā)送緩存虛擬地址首地址,發(fā)送緩存的長度;

3.2發(fā)送端內(nèi)存管理模塊收到“內(nèi)存處理請求”和內(nèi)存地址信息,內(nèi)存管理模塊將內(nèi)存地址信息處理為“內(nèi)存處理請求”,向發(fā)送端的內(nèi)存處理模塊的系統(tǒng)調(diào)用處理模塊傳遞“內(nèi)存處理請求”;

3.3發(fā)送端的系統(tǒng)調(diào)用處理模塊收到“內(nèi)存處理請求”,從“內(nèi)存處理請求”中獲取到套接字應(yīng)用發(fā)送緩存的虛擬地址和長度,調(diào)用Linux內(nèi)核的get_user_pages函數(shù)處理套接字應(yīng)用的發(fā)送緩存虛擬地址和發(fā)送緩存長度,得到發(fā)送端套接字發(fā)送緩存對應(yīng)的物理地址和頁個數(shù),設(shè)置每個頁不可交換,并且每個頁是只讀,使用鏈表存儲物理地址,將存儲物理地址的鏈表和頁個數(shù)返回給發(fā)送端的內(nèi)存管理模塊;

3.4發(fā)送端的內(nèi)存管理模塊收到發(fā)送端的內(nèi)存處理模塊返回的存儲物理地址的鏈表和頁個數(shù),使用地址管理結(jié)構(gòu)體的物理地址鏈表頭指針存儲包含物理地址的鏈表的地址,地址管理結(jié)構(gòu)體的頁個數(shù)存儲從內(nèi)存處理模塊返回的頁個數(shù),地址管理結(jié)構(gòu)體包含物理地址鏈表頭指針、頁個數(shù);

3.5rsend函數(shù)調(diào)用請求RDMA資源函數(shù),請求RDMA資源函數(shù)向發(fā)送端的工作請求模塊發(fā)送“RDMA資源請求”;

3.6發(fā)送端的工作請求模塊收到“RDMA資源請求”,工作請求模塊判斷是否已經(jīng)獲取RDMA資源,如果沒有獲取RDMA資源,向請求RDMA資源函數(shù)返回“RDMA資源請求”,請求RDMA資源函數(shù)收到“RDMA資源請求”后向發(fā)送端的工作請求模塊發(fā)送RDMA資源,發(fā)送端的工作請求模塊獲取RDMA資源,轉(zhuǎn)3.7;如果已經(jīng)獲取RDMA資源,則直接轉(zhuǎn)3.7;

3.7發(fā)送端的工作請求模塊從發(fā)送端的內(nèi)存管理模塊獲取地址管理結(jié)構(gòu)體和內(nèi)存管理結(jié)構(gòu)體B1,構(gòu)造操作類型為WRITE的工作請求結(jié)構(gòu)體,如果地址管理結(jié)構(gòu)體的物理地址是連續(xù)的,轉(zhuǎn)3.8;如果地址管理結(jié)構(gòu)體的物理地址是離散的,轉(zhuǎn)3.9;

3.8發(fā)送端的工作請求模塊構(gòu)造一個WRITE工作請求結(jié)構(gòu)體數(shù)組,元素個數(shù)為1;設(shè)置工作請求結(jié)構(gòu)體元素的源地址為地址管理結(jié)構(gòu)體中的第一個物理地址,工作請求結(jié)構(gòu)體元素的發(fā)送長度為地址管理結(jié)構(gòu)體的頁個數(shù)與Linux系統(tǒng)的頁大小之積;轉(zhuǎn)3.10

3.9發(fā)送端的工作請求模塊構(gòu)造一個WRITE工作請求結(jié)構(gòu)體數(shù)組,數(shù)組元素個數(shù)為地址管理結(jié)構(gòu)體的頁個數(shù);依次將地址管理結(jié)構(gòu)體的鏈表的物理地址寫入到工作請求結(jié)構(gòu)體數(shù)組元素的源地址中,工作請求結(jié)構(gòu)體數(shù)組的每個元素的發(fā)送長度為Linux系統(tǒng)頁的大小;轉(zhuǎn)3.10;

3.10rsend函數(shù)調(diào)用獲取工作請求函數(shù),獲取工作請求函數(shù)向發(fā)送端的工作請求模塊發(fā)送“獲取工作請求”;

3.11發(fā)送端的工作請求模塊獲取“獲取工作請求”后,向rsend函數(shù)返回工作請求結(jié)構(gòu)體數(shù)組的地址和數(shù)組元素個數(shù);rsend函數(shù)接收工作請求結(jié)構(gòu)體數(shù)組地址和數(shù)組長度;

3.12rsend函數(shù)調(diào)用判斷緩存池函數(shù),向發(fā)送端的內(nèi)存管理模塊發(fā)送“判斷緩存池長度請求”;

3.13發(fā)送端的內(nèi)存管理模塊收到“判斷緩存池長度請求”后,判斷B1的空閑長度是否大于套接字應(yīng)用的發(fā)送緩存的長度,如果B1的空閑長度小于套接字應(yīng)用的發(fā)送緩存的長度,將B1的空閑長度返回給rsend函數(shù),如果B1的空閑長度大于或等于套接字應(yīng)用的發(fā)送緩存的長度,將套接字應(yīng)用的發(fā)送緩存的長度返回給rsend函數(shù);

3.14rsend函數(shù)接收到3.13返回的長度,記為rsend函數(shù)的可發(fā)送長度;調(diào)用WRITE發(fā)送管理函數(shù);

3.15WRITE發(fā)送管理函數(shù)從rsend函數(shù)獲取工作請求結(jié)構(gòu)體數(shù)組的地址、數(shù)組元素個數(shù)、可發(fā)送長度;對獲取的工作請求結(jié)構(gòu)體數(shù)組,調(diào)用OFED庫的ibv_post_send函數(shù)進行處理,具體方法如下:

3.15.1WRITE發(fā)送管理函數(shù)從工作請求結(jié)構(gòu)體數(shù)組取出元素,設(shè)置工作請求結(jié)構(gòu)體數(shù)組元素的目的地址為B1的接收端緩存區(qū)的虛擬地址首地址,判斷工作請求結(jié)構(gòu)體數(shù)組元素的發(fā)送長度是否大于可發(fā)送長度,如果大于,轉(zhuǎn)3.12;如果小于等于可發(fā)送長度,轉(zhuǎn)3.15.2;

3.15.2WRITE發(fā)送管理函數(shù)調(diào)用OFED庫的ibv_post_send函數(shù)將取出的工作請求結(jié)構(gòu)體元素發(fā)送到RDMA網(wǎng)卡;RDMA網(wǎng)卡從工作請求結(jié)構(gòu)體數(shù)組元素的源地址讀取數(shù)據(jù),并發(fā)送到工作請求結(jié)構(gòu)體數(shù)組元素的目的地址指定位置中,RDMA網(wǎng)卡發(fā)送數(shù)據(jù)的長度為工作請求結(jié)構(gòu)體元素的發(fā)送長度;

3.15.3WRITE發(fā)送管理函數(shù)將可發(fā)送長度減去工作請求結(jié)構(gòu)體元素的發(fā)送長度,將B1的接收端緩存區(qū)虛擬地址首地址加上工作請求結(jié)構(gòu)體元素的發(fā)送長度后存入B1的接收端緩存區(qū)虛擬地址首地址;轉(zhuǎn)3.15.4;

3.15.4WRITE發(fā)送管理函數(shù)判斷工作請求結(jié)構(gòu)體數(shù)組元素是否為空,如果為空,轉(zhuǎn)3.32,如果不為空,轉(zhuǎn)3.15.1;

3.16發(fā)送端套接字應(yīng)用調(diào)用Linux系統(tǒng)的sendto函數(shù),使用Rsockets協(xié)議攔截sendto函數(shù),采用Rsockets協(xié)議的rsendto函數(shù)替代sendto函數(shù),rsendto函數(shù)調(diào)用OFED庫的注冊物理地址內(nèi)存區(qū)域函數(shù),注冊物理地址內(nèi)存區(qū)域,rsendto函數(shù)調(diào)用請求內(nèi)存處理函數(shù),請求內(nèi)存處理函數(shù)向發(fā)送端的內(nèi)存管理模塊發(fā)送“內(nèi)存處理請求”,“內(nèi)存處理請求”包含所在套接字應(yīng)用發(fā)送緩存虛擬地址首地址,發(fā)送緩存的長度;

3.17發(fā)送端的內(nèi)存管理模塊收到“內(nèi)存處理請求”,向發(fā)送端的內(nèi)存處理模塊的系統(tǒng)調(diào)用處理模塊傳遞“內(nèi)存處理請求”;

3.18發(fā)送端的系統(tǒng)調(diào)用處理模塊接收“內(nèi)存處理請求”,系統(tǒng)調(diào)用處理模塊從“內(nèi)存處理請求”中獲取到套接字應(yīng)用發(fā)送緩存的虛擬地址和長度,系統(tǒng)調(diào)用處理模塊處理套接字應(yīng)用的發(fā)送緩存虛擬地址和發(fā)送緩存長度,得到對應(yīng)的物理地址和頁個數(shù),設(shè)置每個頁不可交換,并且設(shè)置每個頁是只讀,使用鏈表存儲物理地址,將存儲物理地址的鏈表和頁個數(shù)返回給發(fā)送端的內(nèi)存管理模塊;

3.20發(fā)送端的內(nèi)存管理模塊收到發(fā)送端的內(nèi)存處理模塊返回的存儲物理地址的鏈表和頁個數(shù),使用地址管理結(jié)構(gòu)體的物理地址鏈表頭指針存儲包含物理地址的鏈表的地址,地址管理結(jié)構(gòu)體的頁個數(shù)存儲從內(nèi)存處理模塊返回的頁個數(shù),地址管理結(jié)構(gòu)體包含物理地址鏈表頭指針,頁個數(shù);

3.21rsendto函數(shù)調(diào)用請求RDMA資源函數(shù),請求RDMA資源函數(shù)向發(fā)送端的工作請求模塊發(fā)送“RDMA資源請求”;

3.22發(fā)送端的工作請求模塊接收到“RDMA資源請求”,判斷是否已經(jīng)獲取RDMA資源,如果沒有獲取RDMA資源,向請求RDMA資源函數(shù)返回“RDMA資源請求”,請求RDMA資源函數(shù)收到“RDMA資源請求”,向發(fā)送端的工作請求模塊發(fā)送Rsockets協(xié)議的rsendto函數(shù)創(chuàng)建的RDMA資源,發(fā)送端的工作請求模塊獲取RDMA資源,轉(zhuǎn)3.23;如果已經(jīng)獲取RDMA資源,直接轉(zhuǎn)3.23;

3.23發(fā)送端的工作請求模塊從發(fā)送端的內(nèi)存管理模塊獲取地址管理結(jié)構(gòu)體,構(gòu)造操作類型為SEND的工作請求結(jié)構(gòu)體,如果地址管理結(jié)構(gòu)體的物理地址是連續(xù)的,轉(zhuǎn)3.24;如果地址管理結(jié)構(gòu)體的物理地址是離散的,轉(zhuǎn)3.25;

3.24發(fā)送端的工作請求模塊構(gòu)造一個SEND工作請求結(jié)構(gòu)體數(shù)組,元素個數(shù)為1;設(shè)置工作請求結(jié)構(gòu)體數(shù)組元素的源地址為地址管理結(jié)構(gòu)體中的第一個物理地址,工作請求結(jié)構(gòu)體數(shù)組元素的發(fā)送長度為地址管理結(jié)構(gòu)體的頁個數(shù)與Linux系統(tǒng)的頁大小之積;轉(zhuǎn)3.26;

3.25工作請求模塊構(gòu)造一個SEND工作請求結(jié)構(gòu)體數(shù)組,元素個數(shù)為地址管理結(jié)構(gòu)體的頁個數(shù);依次將地址管理結(jié)構(gòu)體的鏈表的物理地址寫入到工作請求結(jié)構(gòu)體數(shù)組的元素的源地址中,工作請求結(jié)構(gòu)體數(shù)組的每個元素的發(fā)送長度為Linux系統(tǒng)頁的大小;轉(zhuǎn)3.26;

3.26rsendto函數(shù)調(diào)用獲取工作請求函數(shù),獲取工作請求函數(shù)向發(fā)送端的工作請求模塊發(fā)送“獲取工作請求”;

3.27發(fā)送端的工作請求模塊獲取“獲取工作請求”,將工作請求結(jié)構(gòu)體數(shù)組的地址和元素個數(shù)給返回給rsendto函數(shù);

3.28rsendto函數(shù)接收工作請求結(jié)構(gòu)體數(shù)組地址和數(shù)組長度;rsendto函數(shù)調(diào)用SEND發(fā)送管理函數(shù);

3.29SEND發(fā)送管理函數(shù)從rsendto函數(shù)獲取工作請求結(jié)構(gòu)體數(shù)組的地址、數(shù)組長度;對獲得的工作請求結(jié)構(gòu)體數(shù)組,進行如下處理:

3.29.1SEND發(fā)送管理函數(shù)取出工作請求結(jié)構(gòu)體數(shù)組元素;

3.29.2SEND發(fā)送管理函數(shù)調(diào)用OFED庫的ibv_post_send函數(shù),將取出的工作請求結(jié)構(gòu)體數(shù)組元素發(fā)送到RDMA網(wǎng)卡;RDMA網(wǎng)卡從工作請求結(jié)構(gòu)體元素的源地址讀取數(shù)據(jù),將數(shù)據(jù)發(fā)送到接收端的RDMA網(wǎng)卡,接收端的RDMA網(wǎng)卡將發(fā)送端的數(shù)據(jù)放置到RECEIVE工作請求指定的位置中;

3.29.3SEND發(fā)送管理函數(shù)判斷工作請求結(jié)構(gòu)體數(shù)組元素是否為空,如果為空,轉(zhuǎn)3.32,如果不為空,轉(zhuǎn)3.29.1;

3.30接收端套接字應(yīng)用調(diào)用Linux系統(tǒng)的recv或者read函數(shù)接收數(shù)據(jù),使用Rsockets協(xié)議攔截recv或read函數(shù),采用Rsockets協(xié)議的rrecv函數(shù)替代recv或者read函數(shù),rrecv函數(shù)調(diào)用WRITE處理完成事件函數(shù),具體方法為:

3.30.1WRITE處理完成事件函數(shù)調(diào)用OFED庫提供的ibv_poll_cq函數(shù)獲取完成事件,如果獲取到完成事件,解析完成事件獲取數(shù)據(jù)的長度,將內(nèi)存管理結(jié)構(gòu)體A2的數(shù)據(jù)尾指針的長度增加數(shù)據(jù)的長度,A2的數(shù)據(jù)頭指針指向數(shù)據(jù)所在首地址,轉(zhuǎn)3.30.2;如果沒有獲取到完成事件,則顯示“獲取完成失敗,沒有數(shù)據(jù)到達”,轉(zhuǎn)3.32;

3.30.2WRITE處理完成事件函數(shù)判斷接收端套接字應(yīng)用調(diào)用rrecv函數(shù)傳入的長度是否大于3.30.1獲取的數(shù)據(jù)長度,如果大于3.30.1獲取的數(shù)據(jù)長度,記接收長度為數(shù)據(jù)長度,否則記接收長度為接收端套接字應(yīng)用調(diào)用rrecv函數(shù)傳入的長度;如果接收長度大于16KB,轉(zhuǎn)3.30.3,如果接收長度小于或等于16KB,轉(zhuǎn)3.30.5;

3.30.3WRITE處理完成事件函數(shù)向接收端的內(nèi)存管理模塊發(fā)送“內(nèi)存映射請求”;接收端的內(nèi)存管理模塊收到“內(nèi)存映射請求”,處理為“建立內(nèi)存映射請求”,向接收端的內(nèi)存處理模塊的字符設(shè)備傳遞“建立內(nèi)存映射請求”;

3.30.4接收端的內(nèi)存處理模塊的字符設(shè)備收到“建立內(nèi)存映射請求”,從“建立內(nèi)存映射請求”中獲取虛擬地址和物理地址、數(shù)據(jù)的長度,建立虛擬地址到物理地址的內(nèi)存映射;轉(zhuǎn)3.30.6;

3.30.5WRITE處理完成事件函數(shù)將數(shù)據(jù)從數(shù)據(jù)所在地址拷貝到接收端套接字應(yīng)用的接收緩存中;轉(zhuǎn)3.30.6;

3.30.6WRITE處理完成事件函數(shù)將A2的空閑長度增加接收的長度,A2的數(shù)據(jù)頭指針增加接收長度的值,套接字應(yīng)用的接收緩存的長度減去接收的長度,WRITE處理完成事件函數(shù)將A2的內(nèi)容寫到發(fā)送端的B1中;

3.30.7WRITE處理完成事件函數(shù)判斷套接字應(yīng)用的接收緩存長度是否為零,如果為零,轉(zhuǎn)3.32,如果不為零,轉(zhuǎn)3.30.1;

3.31接收端套接字應(yīng)用調(diào)用recvfrom函數(shù),使用Rsockets協(xié)議攔截recvfrom函數(shù),采用Rsockets協(xié)議的rrecvfrom函數(shù)替代recvfrom函數(shù),rrecvfrom函數(shù)調(diào)用OFED庫的注冊物理地址內(nèi)存區(qū)域函數(shù),注冊物理地址內(nèi)存區(qū)域,rrecvfrom函數(shù)調(diào)用SEND處理完成事件函數(shù),具體方法為:

3.31.1SEND處理完成事件函數(shù)調(diào)用OFED庫提供的ibv_poll_cq函數(shù)獲取完成事件,如果獲取到完成事件,解析完成事件獲取數(shù)據(jù)的長度,將內(nèi)存管理結(jié)構(gòu)體A2的數(shù)據(jù)尾指針的長度增加數(shù)據(jù)的長度,A2的數(shù)據(jù)頭指針指向數(shù)據(jù)所在首地址,轉(zhuǎn)3.31.2;如果沒有獲取到完成事件,則顯示“獲取完成事件失敗,數(shù)據(jù)未到達”,轉(zhuǎn)3.32;

3.31.2SEND處理完成事件函數(shù)判斷接收端套接字應(yīng)用調(diào)用rrecv函數(shù)傳入的長度是否大于3.31.1獲取的數(shù)據(jù)長度,如果大于,記接收長度為數(shù)據(jù)長度,否則接收長度為接收端套接字應(yīng)用調(diào)用rrecv函數(shù)傳入的長度;如果接收長度大于16KB,轉(zhuǎn)3.31.3,如果接收長度小于或等于16KB,轉(zhuǎn)3.31.5;

3.31.3SEND處理完成事件函數(shù)向接收端的內(nèi)存管理模塊發(fā)送“內(nèi)存映射請求”;接收端的內(nèi)存管理模塊收到“內(nèi)存映射請求”,處理為“建立內(nèi)存映射請求”,向接收端的內(nèi)存處理模塊的字符設(shè)備傳遞“建立內(nèi)存映射請求”;

3.31.4接收端的內(nèi)存處理模塊的字符設(shè)備收到“建立內(nèi)存映射請求”,從“建立內(nèi)存映射請求”中獲取虛擬地址和物理地址,數(shù)據(jù)的長度,調(diào)用Linux內(nèi)核的remap_pfn_range函數(shù)建立虛擬地址到物理地址的內(nèi)存映射;轉(zhuǎn)3.31.6;

3.31.5SEND處理完成事件函數(shù)將數(shù)據(jù)從數(shù)據(jù)所在地址拷貝到接收端的套接字應(yīng)用的接收緩存中;轉(zhuǎn)3.31.6;

3.31.6SEND處理完成事件函數(shù)將A2的空閑長度增加接收的長度,A2的數(shù)據(jù)頭指針增加接收長度的值,套接字應(yīng)用的接收緩存的長度減去接收的長度;轉(zhuǎn)3.31.7;

3.31.7SEND處理完成事件函數(shù)構(gòu)造RECEIVE工作請求,工作請求的目的地址為A2的數(shù)據(jù)尾指針指向的地址,工作請求的長度為接收的長度,調(diào)用OFED庫的ibv_poll_cq函數(shù)將RECEIVE工作請求發(fā)布到RDMA網(wǎng)卡中;轉(zhuǎn)3.31.8;

3.31.8SEND處理完成事件函數(shù)判斷套接字應(yīng)用的接收緩存長度是否為零,如果為零,轉(zhuǎn)3.32,如果不為零,轉(zhuǎn)3.31.1;

3.32結(jié)束。

下載完整專利技術(shù)內(nèi)容需要扣除積分,VIP會員可以免費下載。

該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于中南大學(xué);鵬城實驗室,未經(jīng)中南大學(xué);鵬城實驗室許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請聯(lián)系【客服

本文鏈接:http://www.szxzyx.cn/pat/books/202110399487.5/1.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。

×

專利文獻下載

說明:

1、專利原文基于中國國家知識產(chǎn)權(quán)局專利說明書;

2、支持發(fā)明專利 、實用新型專利、外觀設(shè)計專利(升級中);

3、專利數(shù)據(jù)每周兩次同步更新,支持Adobe PDF格式;

4、內(nèi)容包括專利技術(shù)的結(jié)構(gòu)示意圖流程工藝圖技術(shù)構(gòu)造圖;

5、已全新升級為極速版,下載速度顯著提升!歡迎使用!

請您登陸后,進行下載,點擊【登陸】 【注冊】

關(guān)于我們 尋求報道 投稿須知 廣告合作 版權(quán)聲明 網(wǎng)站地圖 友情鏈接 企業(yè)標(biāo)識 聯(lián)系我們

鉆瓜專利網(wǎng)在線咨詢

周一至周五 9:00-18:00

咨詢在線客服咨詢在線客服
tel code back_top
主站蜘蛛池模板: 国模精品免费看久久久| 狠狠色狠狠色综合系列| 亚洲午夜精品一区二区三区电影院| 日韩中文字幕久久久97都市激情| 欧美久久久一区二区三区| 一本色道久久综合亚洲精品浪潮| 在线观看国产91| 欧美精品一区二区三区久久久竹菊| 日韩一级精品视频在线观看| 狠狠色噜噜狠狠狠合久| 狠狠色综合久久婷婷色天使| 玖玖国产精品视频| 色婷婷久久一区二区三区麻豆 | 精品久久久影院| 国产精品伦一区二区三区在线观看 | 国产精品美女一区二区视频| 国产欧美久久一区二区三区| 公乱妇hd在线播放bd| 久久99久久99精品免观看软件| 国产区91| 午夜免费av电影| 欧美午夜精品一区二区三区| 国产精品久久久久久亚洲美女高潮 | 精品国产一区二区三区麻豆免费观看完整版| 亚洲欧美中日精品高清一区二区 | www.成| 国产一区二区三区四区五区七| 91亚洲精品国偷拍自产| 精品香蕉一区二区三区| 少妇久久免费视频| 午夜一区二区三区在线观看| 欧美性xxxxx极品少妇| **毛片在线| 小萝莉av| 国产精品高潮呻吟视频| 国产精品网站一区| 亚洲区在线| 国产精品偷伦一区二区| 国产欧美久久一区二区三区| 国产日韩欧美不卡| 国产一区二区在线免费| 久久99精品国产麻豆婷婷| 欧美日韩一区二区电影| 久久一区欧美| 亚洲欧美国产中文字幕| 日本二区在线播放| 理论片午午伦夜理片在线播放| 午夜电影天堂| 午夜一区二区视频| 亚洲欧美另类综合| 狠狠躁夜夜躁| 国产精品视频一区二区在线观看| 97人人澡人人爽人人模亚洲| 精品视频久| 国产女人和拘做受在线视频| 欧美精品一区久久| 国内精品国产三级国产99| 国产精品一区二区在线观看 | 国产欧美日韩va另类在线播放| 国语对白一区二区| 欧洲在线一区| 久久九精品| 国产乱人乱精一区二视频国产精品| 国产亚洲精品综合一区| 丰满岳乱妇bd在线观看k8 | 国产视频1区2区| 亚洲国产欧美国产综合一区| 欧美一区二区三区激情| 国产精品影音先锋| 一区二区三区电影在线观看| 久久精品国产精品亚洲红杏| 国产欧美日韩一级| 一区二区欧美视频| 欧美乱妇高清无乱码| 狠狠色噜噜综合社区| 亚洲精品国产一区| 久久国产精品免费视频| 久久国产精品久久| 日本二区在线播放| 日韩一区高清| 免费精品一区二区三区视频日产| 欧美精品久久一区二区| 国产激情二区| 国产视频一区二区在线播放| 国产97在线看| 狠狠色丁香久久婷婷综| 狠狠色噜噜综合社区| 午夜精品一区二区三区aa毛片| 欧美精品免费视频| 一区精品二区国产| 色午夜影院| 欧美亚洲精品suv一区| 日本xxxx护士高潮hd| 国产suv精品一区二区4| 精品一区二区超碰久久久| 欧美精品一区二区三区视频| 国产一级自拍片| 国产一区免费在线观看| 日本精品一区二区三区在线观看视频 | 日韩av电影手机在线观看| 国产精品日韩在线观看| 精品国产乱码一区二区三区在线 | 精品综合久久久久| 国产日韩欧美精品一区| 人人澡超碰碰97碰碰碰| 日韩av一二三四区| 狠狠色狠狠色综合系列| 国产午夜精品免费一区二区三区视频| 日韩av不卡一区二区| 日本一区欧美| 国产三级精品在线观看| 2023国产精品久久久精品双| 99视频一区| 狠狠插狠狠插| 日本一区二区电影在线观看| 久久天天躁狠狠躁亚洲综合公司| 国产精品久久久久精| 日韩精品一区二区久久| 久久国产精久久精产国| 91一区二区在线观看| 国产精一区二区| 狠狠色噜噜狠狠狠色综合| 99精品国产一区二区三区不卡| 狠狠色噜噜狠狠狠狠米奇777| 麻豆视频免费播放| 精品一区在线观看视频| 性色av色香蕉一区二区| 97人人揉人人捏人人添| 日本高清一二三区| 国产精品不卡一区二区三区| 久久免费视频99| 欧美日韩一区二区电影| 国产精品亚洲欧美日韩一区在线| 欧洲国产一区| 午夜三级电影院| 国产精品精品国内自产拍下载| 色吊丝av中文字幕| 欧美一区二区三区日本| 国产精品日韩精品欧美精品| 国产视频一区二区不卡| 国产精品自拍不卡| 大桥未久黑人强制中出| 狠狠躁夜夜| 97涩国一产精品久久久久久久| 午夜黄色一级电影| 国产一区二区在线观看免费| 国产一区二区三区网站| 日韩区欧美久久久无人区| 91高跟紫色丝袜呻吟在线观看| 国产一区二区激情| 2018亚洲巨乳在线观看| 日本一区午夜艳熟免费| 韩国女主播一区二区| 狠狠色噜噜狠狠狠狠69| 亚洲网站久久| 中文字幕日韩有码| 国产精品无码专区在线观看| 午夜私人影院在线观看| 欧美日韩综合一区二区| 99久久婷婷国产亚洲终合精品| 亚洲乱在线| 国产精品5区| 午夜一级电影| 日韩一级精品视频在线观看| 亚洲精品久久久久久动漫| 日韩精品一区二区三区免费观看| 国产97在线播放| 久久久综合亚洲91久久98| 欧美精选一区二区三区| 日韩av免费电影| 美女直播一区二区三区| 午夜社区在线观看| 国产91麻豆视频| 日韩精品一区二区三区免费观看| 欧美一区二区三区久久精品| 欧美一区二区三区四区在线观看| 91精品国产综合久久国产大片 | 中文字幕久久精品一区| 狠狠躁狠狠躁视频专区| 国产精欧美一区二区三区久久久| 高清国产一区二区| 性欧美精品动漫| 久99精品| 国产在线视频二区| 欧美日韩精品在线一区二区| 亚洲欧美日韩在线| 国产一区第一页| 高清欧美xxxx| 日韩一级片在线免费观看| 日韩精品中文字幕在线播放| 久久久久久久久久国产精品| 日本aⅴ精品一区二区三区日| 欧美日韩三区| 久久精品入口九色| 中文乱码在线视频| 亚洲精品97久久久babes| 国产日韩欧美亚洲| 久久96国产精品久久99软件| 国产女人和拘做受在线视频| 欧美777精品久久久久网| 福利视频亚洲一区| 欧美日韩精品不卡一区二区三区 | 日韩精品中文字幕一区二区| 亚洲精品日日夜夜| 国产欧美一区二区三区在线看| 一本一道久久a久久精品综合蜜臀| 国产精品免费自拍| 性欧美精品动漫| 国内精品国产三级国产99| 国产色午夜婷婷一区二区三区 | 99国产精品一区| 亚洲乱码一区二区| 久久精品国产亚| 午夜影院h| 91波多野结衣| 窝窝午夜理伦免费影院| 日韩亚洲精品在线| **毛片在线免费观看| 国产一区二区精品免费| 香蕉av一区| 国产的欧美一区二区三区| 国产网站一区二区| 亚洲乱强伦| 精品亚洲午夜久久久久91| 香蕉视频一区二区三区| 国产视频1区2区| 国产精品一区久久人人爽| 国产一级一区二区三区| 欧美xxxxxhd| 国产精自产拍久久久久久蜜| 在线国产二区| 91精品系列| 日韩精品免费看| 日本精品一二三区| 午夜激情电影在线播放| 日韩精品中文字幕一区二区| 中文丰满岳乱妇在线观看| 午夜片在线| 91精品国产91热久久久做人人| 久久99久国产精品黄毛片入口 | 日韩中文字幕区一区有砖一区| 精品久久久久99| 国产69精品久久99不卡解锁版| 综合久久一区二区三区| 亚洲精品日本久久一区二区三区 | 色婷婷精品久久二区二区蜜臂av|