CYarp:力壓frp的C#高效能http內網反代中介軟體

jiulang發表於2024-03-25

我以前開發過HttpMouse的http內網反代中介軟體,但由於當時的知識點與設計水平受限,所以把它下馬了。隨著自身又遇到http內網反代的需求,在frp不能滿足我需求情況下,我又啟動了一個叫CYarp的http內網反代專案,這次它的設計完成度是相當高的。

開源倉庫地址:https://github.com/xljiulang/CYarp

Nuget包地址:https://www.nuget.org/packages?q=cyarp

CYarp.Server做為Asp.net core 8.0平臺一個http中介軟體,它設計目的是讓開發者能基於Asp.net core平臺來開發一個高效能、傳輸安全、身份認證和授權驗證完備一個http內網反代伺服器。CYarp.Server支援tcp或http/2.0作為http/1.1的傳輸層,使用http/2.0的多路複用能在單個tcp連線分開傳輸多路http請求響應。

特性

  1. 使用高效能的kestrel做伺服器
  2. 使用高效能的YARP做http轉發
  3. 設計為asp.netcore的中介軟體,整合簡單
  4. 開放的服務端與客戶端互動協議
  5. 提供了.NET、C/C++客戶端庫

CYarp沒有從頭開發http伺服器,也沒有從頭開發http轉發器,而是使用了使用了Asp.net core平臺的kestrel伺服器和YARP轉發器兩個高效能元件,同時根據http/1.1的upgrade機制和http/2.0的Extended CONNECT Method機制,制定了客戶端與服務端的CYarp互動協議,只有十幾MB記憶體的Linux裝置,開發程師根據這個協議也很容易開發出其客戶端。

效能

CYarp和frp在一臺Intel(R) Xeon(R) CPU E5-2650 v2 @ 2.60GHz的CentOS Linux 7 (Core)系統機器上同時部署,壓測時ab在區域網另一臺機器上,壓測順序為表格上到下的引數順序。

1個使用者(10,000次)

產品 Requests per second Percentage of the requests
CYarp 446.48 P95=3 P99=3
frp_0.56.0 444.18 P95=3 P99=3

10使用者(50,000次)

產品 Requests per second Percentage of the requests
CYarp 6001.57 P95=2 P99=3
frp_0.56.0 5473.53 P95=3 P99=4

20使用者(100,000次)

產品 Requests per second Percentage of the requests
CYarp 8640.89 P95=3 P99=4
frp_0.56.0 5897.58 P95=5 P99=7

50使用者(200,000次)

產品 Requests per second Percentage of the requests
CYarp 11864.86 P95=6 P99=8
frp_0.56.0 5222.04 P95=17 P99=29

100使用者(500,000次)

產品 Requests per second Percentage of the requests
CYarp 12500.28 P95=11 P99=15
frp_0.56.0 5134.38 P95=35 P99=52

當併發使用者數20或以上時,frp的RPS不再提升(反而略有下降),但CYarp的RPS還是持續上升,且P95和P99表現優異。

安全

傳輸安全

當CYarp.Server方使用https時,以下部分為tls安全傳輸

  1. 長連線建立過程和長連線的後續Stream
  2. HttpTunnel的建立過程和其後續Stream

如果目標服務httpServer的TargetUri也是https,則HttpTunnel裡面的流量表現為tls in tls。

業務安全

CYarp.Server不涉及到任何業務協議,它只是一個Asp.net core中介軟體,Client的身份認證依賴於asp.net core平臺的身份認證中介軟體,而http轉發部分的邏輯是由開發者自行開發來決定是否要轉發,涉及的授權驗證邏輯由開發者自行驗證。

使用場景

CYarp是http反向代理,所以Server端只需要監聽一個埠,就能讓千千萬萬個Client端連線過來。根據反代規則將移動端(使用者端)的http請求轉發到對應的Client端上,形成以http協議為應用協議的一種物聯網服務平臺。

相關文章