GNB是一個開源的去中心化的具有極致內網穿透能力的透過P2P進行三層網路交換的VPN。
GNB節點間透過UDP協定傳輸數據,在一些網路環境下的路由器/防火牆會對UDP分組實施QOS策略,因此透過tcp連結轉送GNB資料是不需要改動GNB通訊協定又可以提升GNB網路適應能力的一個辦法。
gnb_udp_over_tcp 是一個為GNB開發的透過tcp連結中轉UDP分組轉送的服務。
遠端GNB節點ip位址為192.168.1.25 GNB UDP 連接埠9025 GNB TUN ip 10.1.0.25 遠端GNB 設定檔不需要調整
中繼伺服器ip位址為192.168.1.11
[gnb_1010]
|
udp
|
[udp_over_tcp udp:127.0.0.1:5001] (./gnb_udp_over_tcp -u -l 5001 192.168.1.11 6000)
|
tcp
|
[udp_over_tcp tcp:192.168.1.11:6000] (./gnb_udp_over_tcp -t -l 6000 192.168.1.25 9025)
|
udp
|
[gnb_1025 udp:192.168.1.25:9025]
在192.168.1.11 上執行
./gnb_udp_over_tcp -t -l 6000 192.168.1.25 9025
本地ip位址為192.168.1.10 GNB TUN ip 10.1.0.10
本地GNB conf/1010/address.conf 內容為
n|1025|127.0.0.1|5001
address.conf中不要配置i 類型的GNB節點
在192.168.1.10 上執行
./gnb_udp_over_tcp -u -l 5001 192.168.1.11 6000
啟動本地的GNB節點後ping 10.1.0.25 檢定是否能夠ping通。
[netcat] (nc -u 127.0.0.1 5001)
|
udp
|
[udp_over_tcp udp:127.0.0.1:5001] (./gnb_udp_over_tcp -u -l 5001 127.0.0.1 6000)
|
tcp
|
[udp_over_tcp tcp:127.0.0.1:6000] (./gnb_udp_over_tcp -t -l 6000 127.0.0.1 7000)
|
udp
|
[netcat udp:127.0.0.1:7000] (nc -u -l 7000)
用nc 監聽7000 udp 端口
nc -u -l 7000
啟動gnb_udp_over_tcp 的tcp端: 監聽tcp 6000 端口,每個接入該端口的tcp鏈路將建立起一個udp socket構成一個channel,tcp鏈路收到的報文發往127.0.0.1 的UDP 7000端口,從udp端收到的資料將會發送到tcp連結的另一端。 gnb_udp_over_tcp的tcp端可以同時接入多個tcp連接並且轉送到同一個目的位址的udp埠。
./gnb_udp_over_tcp -t -l 6000 127.0.0.1 7000
啟動gnb_udp_over_tcp 的udp端: 監聽udp 5001 端口,與127.0.0.1 tcp 端口6000 建立tcp鏈路,udp 端收到的數據發送到tcp鏈路的另一端,從tcp鏈路收到的數據發送到udpudp端。
./gnb_udp_over_tcp -u -l 5001 127.0.0.1 6000
用nc 存取127.0.0.1 的5001 udp 端口,檢驗資料是否成功轉送。
nc -u 127.0.0.1 5001
免責聲明