Skip to content

Commit ff6ef8e

Browse files
author
GNBDEV
committed
ver1.4.5.a,支持多线程加速处理IP分组,zip压缩/解压payload,运行时内存规模选项,节点探测频率选项,性能更好的ring buffer,gnb_ctl可以查看指定节点的信息
1 parent 448942f commit ff6ef8e

File tree

94 files changed

+12505
-1475
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

94 files changed

+12505
-1475
lines changed

Makefile.Darwin

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
CFLAGS=-O2 -I./src -I./libs -I./libs/miniupnpc -I./libs/libnatpmp
1+
CFLAGS=-O2 -I./src -I./libs -I./libs/miniupnpc -I./libs/libnatpmp -I./libs/zlib -D NO_GZIP=1
22
CLI_LDFLAGS=-L/usr/lib -pthread
33
GNB_ES_LDFLAGS=-L/usr/lib -pthread
44

@@ -38,8 +38,8 @@ ${GNB_CRYPTO}: ${CRYPTO_OBJS} ./src/gnb_crypto.o
3838
strip ${GNB_CRYPTO}
3939

4040

41-
${GNB_CLI}: ${GNB_OBJS} ${GNB_CLI_OBJS} ${GNB_PF_OBJS} ${CRYPTO_OBJS}
42-
${CC} -o ${GNB_CLI} ${GNB_OBJS} ${GNB_CLI_OBJS} ${GNB_PF_OBJS} ${CRYPTO_OBJS} ${CLI_LDFLAGS}
41+
${GNB_CLI}: ${GNB_OBJS} ${GNB_CLI_OBJS} ${GNB_PF_OBJS} ${CRYPTO_OBJS} ${ZLIB_OBJS}
42+
${CC} -o ${GNB_CLI} ${GNB_OBJS} ${GNB_CLI_OBJS} ${GNB_PF_OBJS} ${CRYPTO_OBJS} ${ZLIB_OBJS} ${CLI_LDFLAGS}
4343
strip ${GNB_CLI}
4444

4545

Makefile.freebsd

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
CFLAGS=-O2 -I./src -I./libs -I./libs/miniupnpc -I./libs/libnatpmp
1+
CFLAGS=-O2 -I./src -I./libs -I./libs/miniupnpc -I./libs/libnatpmp -I./libs/zlib -D NO_GZIP=1
22
CLI_LDFLAGS=-s -L/usr/lib -pthread
33
GNB_ES_LDFLAGS=-s -L/usr/lib -pthread
44

@@ -43,8 +43,8 @@ $(GNB_CRYPTO): $(CRYPTO_OBJS) ./src/gnb_crypto.o
4343
${CC} -o ${GNB_CRYPTO} ./src/gnb_crypto.o ${CRYPTO_OBJS} ${CLI_LDFLAGS}
4444

4545

46-
$(GNB_CLI): $(GNB_OBJS) $(GNB_CLI_OBJS) $(GNB_PF_OBJS) ${CRYPTO_OBJS}
47-
${CC} -o ${GNB_CLI} ${GNB_OBJS} ${GNB_CLI_OBJS} ${GNB_PF_OBJS} ${CRYPTO_OBJS} ${CLI_LDFLAGS}
46+
$(GNB_CLI): $(GNB_OBJS) $(GNB_CLI_OBJS) $(GNB_PF_OBJS) ${CRYPTO_OBJS} ${ZLIB_OBJS}
47+
${CC} -o ${GNB_CLI} ${GNB_OBJS} ${GNB_CLI_OBJS} ${GNB_PF_OBJS} ${CRYPTO_OBJS} ${ZLIB_OBJS} ${CLI_LDFLAGS}
4848

4949

5050
%.o:%.c

Makefile.inc

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,16 @@ LIBNATPMP_OBJS = \
2020
./libs/libnatpmp/wingettimeofday.o \
2121

2222

23+
ZLIB_OBJS = \
24+
./libs/zlib/adler32.o \
25+
./libs/zlib/deflate.o \
26+
./libs/zlib/inffast.o \
27+
./libs/zlib/inflate.o \
28+
./libs/zlib/inftrees.o \
29+
./libs/zlib/trees.o \
30+
./libs/zlib/zutil.o
31+
32+
2333
CRYPTO_OBJS = \
2434
./libs/ed25519/add_scalar.o \
2535
./libs/ed25519/fe.o \
@@ -37,12 +47,13 @@ CRYPTO_OBJS = \
3747

3848

3949
GNB_OBJS = \
40-
./src/gnb_svr.o \
50+
./src/gnb_core.o \
4151
./src/gnb_daemon.o \
4252
./src/gnb_worker.o \
4353
./src/gnb_ctl_block.o \
4454
./src/gnb_address.o \
45-
./src/gnb_main_worker.o \
55+
./src/gnb_primary_worker.o \
56+
./src/gnb_pf_worker.o \
4657
./src/gnb_node_worker.o \
4758
./src/gnb_index_worker.o \
4859
./src/gnb_index_service_worker.o \
@@ -53,7 +64,7 @@ GNB_OBJS = \
5364
./src/gnb_node.o \
5465
./src/gnb_udp.o \
5566
./src/gnb_payload16.o \
56-
./src/gnb_ring_buffer.o \
67+
./src/gnb_ring_buffer_fixed.o \
5768
./src/gnb_time.o \
5869
./src/gnb_lru32.o \
5970
./src/gnb_fixed_pool.o \
@@ -74,6 +85,7 @@ GNB_PF_OBJS = \
7485
./src/packet_filter/gnb_pf_route.o \
7586
./src/packet_filter/gnb_pf_crypto_xor.o \
7687
./src/packet_filter/gnb_pf_crypto_arc4.o \
88+
./src/packet_filter/gnb_pf_zip.o \
7789
./src/packet_filter/gnb_pf_dump.o
7890

7991

Makefile.linux

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
CFLAGS=-ffunction-sections -fdata-sections -Wno-unused-result -I./src -I./libs -I./libs/miniupnpc -I./libs/libnatpmp
1+
CFLAGS=-ffunction-sections -fdata-sections -Wno-unused-result -I./src -I./libs -I./libs/miniupnpc -I./libs/libnatpmp -I./libs/zlib -D NO_GZIP=1 -D GNB_LINUX_BUILD=1
22
CLI_LDFLAGS=-Wl,--gc-sections -L/usr/lib -pthread
33
GNB_ES_LDFLAGS=-Wl,--gc-sections -L/usr/lib -pthread
44

@@ -44,8 +44,8 @@ $(GNB_CRYPTO): $(CRYPTO_OBJS) ./src/gnb_crypto.o
4444
${CC} -o ${GNB_CRYPTO} ./src/gnb_crypto.o ${CRYPTO_OBJS} ${CLI_LDFLAGS}
4545

4646

47-
$(GNB_CLI): $(GNB_OBJS) $(GNB_CLI_OBJS) $(GNB_PF_OBJS) ${CRYPTO_OBJS}
48-
${CC} -o ${GNB_CLI} ${GNB_OBJS} ${GNB_CLI_OBJS} ${GNB_PF_OBJS} ${CRYPTO_OBJS} ${CLI_LDFLAGS}
47+
$(GNB_CLI): $(GNB_OBJS) $(GNB_CLI_OBJS) $(GNB_PF_OBJS) ${CRYPTO_OBJS} ${ZLIB_OBJS}
48+
${CC} -o ${GNB_CLI} ${GNB_OBJS} ${GNB_CLI_OBJS} ${GNB_PF_OBJS} ${CRYPTO_OBJS} ${ZLIB_OBJS} ${CLI_LDFLAGS}
4949

5050

5151
%.o:%.c
@@ -63,6 +63,6 @@ install:${GNB_CLI} ${GNB_CRYPTO} ${GNB_ES} ${GNB_CTL}
6363
clean:
6464
find . -name "*.o" -exec rm -f {} \;
6565
rm -f ${GNB_CLI} ${GNB_CRYPTO} ${GNB_ES} ${GNB_CTL}
66-
rm -f core
66+
rm -f core core.*
6767
rm -f *.exe
6868

Makefile.mingw_x86_64

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
CFLAGS=-O2 -I./src -I/usr/x86_64-w64-mingw32/include -I./libs -I./libs/wintun -I./libs/miniupnpc -I./libs/libnatpmp -DMINIUPNP_STATICLIB -DNATPMP_STATICLIB
1+
CFLAGS=-O2 -I./src -I/usr/x86_64-w64-mingw32/include -I./libs -I./libs/wintun -I./libs/miniupnpc -I./libs/libnatpmp -I./libs/zlib -D NO_GZIP=1 -DMINIUPNP_STATICLIB -DNATPMP_STATICLIB
2+
23
CLI_LDFLAGS=-s -static -L/usr/x86_64-w64-mingw32/lib/ -lwsock32 -lws2_32 -liphlpapi -lpthread -lmingwex
34
GNB_ES_LDFLAGS=-s -static -L/usr/x86_64-w64-mingw32/lib/ -lwsock32 -lws2_32 -liphlpapi -lpthread -lmingwex
45

@@ -15,7 +16,7 @@ include Makefile.inc
1516
GNB_CLI_OBJS = \
1617
./src/cli/gnb.o \
1718
./src/gnb_argv.o \
18-
./src/gnb_res.o \
19+
./src/mingw/gnb_res.o \
1920
./src/mingw/windows_platform.o \
2021
./src/mingw/gnb_drv_win32.o \
2122
./src/mingw/gnb_drv_wintun.o
@@ -25,27 +26,27 @@ GNB_ES_OBJS += ./src/mingw/windows_platform.o
2526
all:${GNB_CLI} ${GNB_CRYPTO} ${GNB_ES} ${GNB_CTL}
2627

2728

28-
${GNB_CTL}: ${GNB_CTL_OBJS} ./src/gnb_res.o
29-
${CC} -o ${GNB_CTL} ${GNB_CTL_OBJS} ./src/gnb_res.o ${CLI_LDFLAGS}
29+
${GNB_CTL}: ${GNB_CTL_OBJS} ./src/mingw/gnb_res.o
30+
${CC} -o ${GNB_CTL} ${GNB_CTL_OBJS} ./src/mingw/gnb_res.o ${CLI_LDFLAGS}
3031

3132

3233
${GNB_ES}: ${GNB_ES_OBJS} ${CRYPTO_OBJS} ${MINIUPNP_OBJS} ${LIBNATPMP_OBJS}
33-
${CC} -o ${GNB_ES} ${GNB_ES_OBJS} ${CRYPTO_OBJS} ${MINIUPNP_OBJS} ${LIBNATPMP_OBJS} ./src/gnb_res.o ${GNB_ES_LDFLAGS}
34+
${CC} -o ${GNB_ES} ${GNB_ES_OBJS} ${CRYPTO_OBJS} ${MINIUPNP_OBJS} ${LIBNATPMP_OBJS} ./src/mingw/gnb_res.o ${GNB_ES_LDFLAGS}
3435

3536

3637
$(GNB_CRYPTO): $(CRYPTO_OBJS) ./src/gnb_crypto.o
3738
${CC} -o ${GNB_CRYPTO} ./src/gnb_crypto.o ${CRYPTO_OBJS} ${CLI_LDFLAGS}
3839

3940

40-
${GNB_CLI}: ${GNB_OBJS} ${GNB_CLI_OBJS} ${GNB_PF_OBJS} ${CRYPTO_OBJS}
41-
${CC} -o ${GNB_CLI} ${GNB_OBJS} ${GNB_CLI_OBJS} ${GNB_PF_OBJS} ${CRYPTO_OBJS} ${CLI_LDFLAGS}
41+
${GNB_CLI}: ${GNB_OBJS} ${GNB_CLI_OBJS} ${GNB_PF_OBJS} ${CRYPTO_OBJS} ${ZLIB_OBJS}
42+
${CC} -o ${GNB_CLI} ${GNB_OBJS} ${GNB_CLI_OBJS} ${GNB_PF_OBJS} ${CRYPTO_OBJS} ${ZLIB_OBJS} ${CLI_LDFLAGS}
4243

4344

4445
%.o:%.c
4546
${CC} ${CFLAGS} -c -o $@ $<
4647

47-
./src/gnb_res.o: ./src/gnb_res.rc
48-
${WINDRES} ./src/gnb_res.rc -o ./src/gnb_res.o
48+
./src/mingw/gnb_res.o: ./src/mingw/gnb_res.rc
49+
${WINDRES} ./src/mingw/gnb_res.rc -o ./src/mingw/gnb_res.o
4950

5051

5152
install:${GNB_CLI} ${GNB_CRYPTO} ${GNB_ES} ${GNB_CTL}

Makefile.openbsd

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
CFLAGS=-O2 -I./src -I./libs -I./libs/miniupnpc -I./libs/libnatpmp
1+
CFLAGS=-O2 -I./src -I./libs -I./libs/miniupnpc -I./libs/libnatpmp -I./libs/zlib -D NO_GZIP=1
22
CLI_LDFLAGS=-s -L/usr/lib -pthread
33
GNB_ES_LDFLAGS=-s -L/usr/lib -pthread
44

@@ -34,8 +34,8 @@ $(GNB_CRYPTO): $(CRYPTO_OBJS) ./src/gnb_crypto.o
3434
${CC} -o ${GNB_CRYPTO} ./src/gnb_crypto.o ${CRYPTO_OBJS} ${CLI_LDFLAGS}
3535

3636

37-
$(GNB_CLI): $(GNB_OBJS) $(GNB_CLI_OBJS) $(GNB_PF_OBJS) ${CRYPTO_OBJS}
38-
${CC} -o ${GNB_CLI} ${GNB_OBJS} ${GNB_CLI_OBJS} ${GNB_PF_OBJS} ${CRYPTO_OBJS} ${CLI_LDFLAGS}
37+
$(GNB_CLI): $(GNB_OBJS) $(GNB_CLI_OBJS) $(GNB_PF_OBJS) ${CRYPTO_OBJS} ${ZLIB_OBJS}
38+
${CC} -o ${GNB_CLI} ${GNB_OBJS} ${GNB_CLI_OBJS} ${GNB_PF_OBJS} ${CRYPTO_OBJS} ${ZLIB_OBJS} ${CLI_LDFLAGS}
3939

4040

4141
%.o:%.c

Makefile.openwrt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
CFLAGS=-ffunction-sections -fdata-sections -Wno-unused-result -I./src -I./libs -I./libs/miniupnpc -I./libs/libnatpmp
1+
CFLAGS=-ffunction-sections -fdata-sections -Wno-unused-result -I./src -I./libs -I./libs/miniupnpc -I./libs/libnatpmp -I./libs/zlib -D NO_GZIP=1 -D GNB_OPENWRT_BUILD=1
22
CLI_LDFLAGS=-Wl,--gc-sections -L/usr/lib -pthread
33
GNB_ES_LDFLAGS=-Wl,--gc-sections -L/usr/lib -pthread
44

@@ -43,8 +43,8 @@ $(GNB_CRYPTO): $(CRYPTO_OBJS) ./src/gnb_crypto.o
4343
${CC} -o ${GNB_CRYPTO} ./src/gnb_crypto.o ${CRYPTO_OBJS} ${CLI_LDFLAGS}
4444

4545

46-
$(GNB_CLI): $(GNB_OBJS) $(GNB_CLI_OBJS) $(GNB_PF_OBJS) ${CRYPTO_OBJS}
47-
${CC} -o ${GNB_CLI} ${GNB_OBJS} ${GNB_CLI_OBJS} ${GNB_PF_OBJS} ${CRYPTO_OBJS} ${CLI_LDFLAGS}
46+
$(GNB_CLI): $(GNB_OBJS) $(GNB_CLI_OBJS) $(GNB_PF_OBJS) ${CRYPTO_OBJS} ${ZLIB_OBJS}
47+
${CC} -o ${GNB_CLI} ${GNB_OBJS} ${GNB_CLI_OBJS} ${GNB_PF_OBJS} ${CRYPTO_OBJS} ${ZLIB_OBJS} ${CLI_LDFLAGS}
4848

4949

5050
%.o:%.c

README_CN.md

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,9 @@ version 1.3.0.0 protocol version 1.2.0
2020
- 根据时间同步变更通信密钥
2121
- 默认选项下对日志中的敏感信息进行隐藏
2222

23-
3. 多平台支持
23+
3. 支持通过多核CPU加速对数据分组处理
24+
25+
4. 多平台支持
2426
- GNB 用 C 语言开发,项目相关代码以开源方式发布, 编译时不需要引用第三方库文件,可以方便移植到当前流行的操作系统上,目前支持的操作系统及平台有 Linux_x86_64,Windows10_x86_64, macOS,FreeBSD_AMD64,OpenBSD_AMD64,树莓派,OpenWRT;大至服务器环境,桌面系统,小至仅有 32M 内存的OpenWRT路由器都能很好的运行 GNB 网络。
2527

2628

@@ -263,9 +265,10 @@ GNB 主机之间的非对称数据加密使得 **forward** 节点无法窥探中
263265
这是由志愿者提供的可用`index`节点
264266

265267
```
266-
i|0|110.238.106.225|9001
267268
i|0|101.32.178.3|9001
268269
i|0|47.93.29.76|9001
270+
i|0|45.78.14.231|9001
271+
i|0|110.238.106.225|9001
269272
i|0|usa.homedns.net|9001
270273
```
271274

docs/gnb_user_manual_cn.md

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -420,6 +420,30 @@ gnb_es -s -L -b gnb/conf/1002/gnb.map
420420
要了解更多 **Discover In Lan** 的信息,可以参考 `gnb``-b, --ctl-block`,以及 `gnb_es``-s, --service` `-d, --daemon` `-L, --discover-in-lan` 选项。
421421

422422

423+
## 用 zip 压缩数据分组
424+
`--zip`
425+
auto 当数据压缩后比原始数据大将发送原始数据
426+
force 当数据压缩后比原始数据大将发送压缩后的数据
427+
428+
`--zip-level`
429+
0 不压缩 1~9 压缩率 1 最低压缩率, 9是最高压缩率
430+
431+
node.conf 支持该选项
432+
433+
## 利用多核CPU加速数据分组处理
434+
435+
`--pf-worker`
436+
默认是0,即使用单个线程处理ip数据分组
437+
最大不超过128个线程
438+
439+
node.conf 支持该选项
440+
441+
## 内存规模
442+
`--memory`
443+
可选项有 tiny,small,large,huge,默认是:"tiny"
444+
445+
node.conf 支持该选项
446+
423447
## 关于 net to net
424448

425449
一般而言,VPN通过建立虚拟链路的方式可以把几台计算机组成一个网络,也可以让一台计算机通过虚拟链路接入一个网络,还可以通过虚拟链路把两个或者更多的计算机网络组成一个大的虚拟网络,使得分散在各自不同网络里的计算机可以互相访问。
Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1-
i|0|110.238.106.225|9001
21
i|0|101.32.178.3|9001
32
i|0|47.93.29.76|9001
3+
i|0|45.78.14.231|9001
4+
i|0|110.238.106.225|9001
5+
i|0|usa.homedns.net|9001
6+

0 commit comments

Comments
 (0)