[發明專利]一種基于F-Stack和Nginx實現動態代理的方法和系統有效
| 申請號: | 202110247532.5 | 申請日: | 2021-03-06 |
| 公開(公告)號: | CN113098925B | 公開(公告)日: | 2022-03-11 |
| 發明(設計)人: | 王兵權;馬驥;冀博;李昭熹;焦小濤 | 申請(專利權)人: | 鄭州信大捷安信息技術股份有限公司 |
| 主分類號: | H04L67/565 | 分類號: | H04L67/565;H04L45/74;H04L45/745;H04L69/22 |
| 代理公司: | 鄭州大通專利商標代理有限公司 41111 | 代理人: | 張立強 |
| 地址: | 450000 河南省*** | 國省代碼: | 河南;41 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 基于 stack nginx 實現 動態 代理 方法 系統 | ||
1.一種基于F-Stack和Nginx實現動態代理的方法,其特征在于,包括:
步驟1:接收數據包,將所述數據包放到網卡的對應隊列上;所述數據包包括來自客戶端的請求數據包和來自服務端的響應數據包;
步驟2:針對隊列上的每個數據包,使所述數據包先經過ipfw機制的hook函數處理,根據所述數據包中五元組信息查找是否存在連接跟蹤表:如果存在所述連接跟蹤表,則按照代理規則改寫所述數據包中的源地址和目的地址;如果不存在所述連接跟蹤表,則按照代理規則新建連接跟蹤表,以使處理后續數據包查找連接跟蹤表時所用;
步驟3:將改寫源地址和目的地址成功的數據包交由FreeBSD協議棧處理;并進一步判斷數據包是否交由Nginx處理,具體為:將匹配到Nginx偵聽地址vip+vport的數據包交由Nginx處理,Nginx處理完畢后的數據包再次交由FreeBSD協議棧轉發;對于數據協議的數據包,無需交由Nginx處理,直接由FreeBSD協議棧做路由查找轉發處理。
2.根據權利要求1所述的方法,其特征在于,在步驟2之前還包括:
采用共享內存方式將所述代理規則下發給所有worker進程;
對應的worker進程收到客戶端或服務端的數據協議的數據包時,按照所述代理規則改寫所述數據包中源地址和目的地址后再交由FreeBSD協議棧做轉發處理。
3.根據權利要求1所述的方法,其特征在于,還包括:
步驟A1:預設服務端查看視頻時的視頻查看信令數據包攜帶的媒體接收地址為serip+recv_media_port;
步驟A2:Nginx改寫服務端發送的視頻查看信令數據包中媒體接收地址為vip+recv_media_vport,并將其轉發給客戶端;
步驟A3:客戶端響應200-OK信令中攜帶客戶端的推流地址cip+push_media_port;
步驟A4:Nginx改寫客戶端響應200-OK信令中媒體推流地址為lip+push_media_lport,同時采用共享內存方式下發代理規則給所有worker進程。
4.根據權利要求3所述的方法,其特征在于,所述步驟A4下發的代理規則中,媒體偵聽地址為:vip+recv_media_vport,客戶端的推流地址為:cip+push_media_port,代理推流地址為:lip+push_media_lport,服務端的媒體接收地址為:serip+recv_media_port。
5.根據權利要求3所述的方法,其特征在于,推流地址push_media_lport的選擇滿足以下條件:
RSS(cip+push_media_port-vip+recv_media_vport)=RSS(cip+push_media_port-serip+recv_media_port)。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于鄭州信大捷安信息技術股份有限公司,未經鄭州信大捷安信息技術股份有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202110247532.5/1.html,轉載請聲明來源鉆瓜專利網。





