NAT 行为测试实验

NAT 行为测试实验

实验目的:测试 NAT 的 Filtering Behavior

实验一:测试 C 端 NAT Filtering Behavior 老化时间

实验步骤:

  1. S 端启动服务进程,等待接收 C 端发送来的数据。S端接收到C端数据后开始递增间隔(每次增加1s)向C端发送数据
  2. C 端向 S 端发送数据,并等待接收响应,响应接收成功后停止向S端发送数据,转而向一个S1端定时发送数据(防止NAT Mapping Behavior过期)
  3. 找出C端接收不到数据的时间间隔,进行下一步测试
  4. C 端向 S 端发送数据,并等待接收响应,响应接收成功后停止向S端发送数据
  5. S 端启动服务进程,等待接收 C 端发送来的数据。S端接收到C端数据后,以最大时间间隔(左右偏移五秒,依次递增)向C端发送数据,判断C端能否收到数据,如果不能收到数据,那么结束实验;如果能收到数据,进行下一步判断
  6. S 端启动服务进程,等待接收 C 端发送来的数据。S端接收到C端数据后,以C端第一次收到数据的时间到最后一次收到数据的时间间隔(左右偏移十秒,依次递增)向C端发送数据,判断C端能否收到数据,如果不能收到数据,那么结束实验;

实验数据:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# 测试1
# 第一次收到数据的时间
2023/04/21 15:24:01 recv from 116.62.229.23:22345 data: I'm Server
# 最后一次接收到数据的时间
2023/04/21 15:56:35 recv from 116.62.229.23:22345 data: I'm Server
2023/04/21 15:56:35 use time:  1m2.0594247s

# 测试2
# 第一次收到数据的时间
2023/04/21 16:01:06 recv from 116.62.229.23:22345 data: I'm Server
# 最后一次接收到数据的时间
2023/04/21 16:37:58 recv from 116.62.229.23:22345 data: I'm Server
2023/04/21 16:37:58 use time:  1m6.0623072s

# 测试3
# 第一次收到数据的时间
2023/04/21 16:44:57 recv from 116.62.229.23:22345 data: I'm Server
# 最后一次接收到数据的时间
2023/04/21 17:03:39 recv from 116.62.229.23:22345 data: I'm Server
2023/04/21 17:03:39 use time:  1m8.062157s

# 测试4
# 第一次收到数据的时间
2023/04/21 17:08:48 start send data to 116.62.229.23:22346
# 最后一次接收到数据的时间
2023/04/21 17:10:56 recv from 116.62.229.23:22345 data: I'm Server
2023/04/21 17:10:56 use time:  1m6.062787s

实验结论:

电信 NAT Filtering Behavior 规则有效时间大约在 1min 左右。

实验二:测试 C 端 NAT Mapping Behavior 老化时间

实验步骤:

  1. C 端向 STUN 服务器间隔递增(每次递增10s)的方式发送请求,STUN返回公网NAT映射的端口,当返回的映射端口与之前公网端口不同时,代表NAT Mapping Behavior已经过期

实现数据:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 第一次发送数据的时间
2023-04-24 12:51:31.097 [INFO] {94b69e6bc0c558178c6447135a63c9aa} wait: 0s, addr: 182.139.187.130:37614
# 最后发送数据的时间
2023-04-24 13:26:32.053 [INFO] {94b69e6bc0c558178c6447135a63c9aa} wait: 210s, addr: 182.139.187.130:37614
2023-04-24 13:30:02.108 [INFO] {94b69e6bc0c558178c6447135a63c9aa} 182.139.187.130:37614 182.139.187.130:37655

# 第一次发送数据的时间
2023-04-24 14:41:53.318 [INFO] {a0690c47c6cb5817b9ac6a7a8cc5381b} wait: 100s, addr: 182.139.187.128:19774
# 最后发送数据的时间
2023-04-24 15:06:03.769 [INFO] {a0690c47c6cb5817b9ac6a7a8cc5381b} wait: 200s, addr: 182.139.187.128:19774
2023-04-24 15:09:23.809 [INFO] {a0690c47c6cb5817b9ac6a7a8cc5381b} 182.139.187.128:19774 182.139.187.128:19788


# 第一次发送数据的时间
2023-04-24 15:13:04.104 [INFO] {d41be8d979cd581708977d6136a21b22} wait: 180s, addr: 182.139.187.128:19272
# 最后发送数据的时间
2023-04-24 15:16:04.163 [INFO] {d41be8d979cd581708977d6136a21b22} wait: 190s, addr: 182.139.187.128:19272
2023-04-24 15:19:14.217 [INFO] {d41be8d979cd581708977d6136a21b22} 182.139.187.128:19272 182.139.187.128:19049

# 第一次发送数据的时间
2023-04-24 16:45:53.822 [INFO] {e4757c898ad25817656893318357add7} wait: 180s, addr: 182.139.187.130:37062
# 最后发送数据的时间
2023-04-24 16:52:03.930 [INFO] {e4757c898ad25817656893318357add7} wait: 200s, addr: 182.139.187.130:37062
2023-04-24 16:55:23.975 [INFO] {e4757c898ad25817656893318357add7} 182.139.187.130:37062 182.139.187.130:38383

实验结论:

根据多次实验得到的数据判断电信运营商的NAT Mapping Behavior规则老化时间在 3min 左右。

实验三:测试 C 端 NAT Filtering Behavior 容量

实验步骤:

  1. C 端向 S 端一定范围内服务端端口发送数据,用以在 NAT 上添加 NAT Filtering Behavior 规则,C 端发送完毕后进入等待数据接收状态
  2. S 端随机选择 20% C端已经发送给服务端的端口列表,新建套接字向 C 端发送数据,判断 C 端是否出现丢包情况
  3. 重复实验,直到找到极限值

实验数据:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
# 尝试用500
2023-04-25 10:18:27.571 [INFO] {2069eac9fa0b591792bbba1b46be6ff5} send over, use 8.0016ms
2023/04/25 10:18:34 execute 0 times,loss packet: 0.00%
......
2023-04-25 11:33:03.031 [INFO] {2069eac9fa0b591792bbba1b46be6ff5} send over, use 12.9997ms
2023/04/25 11:33:10 execute 5 times,loss packet: 0.00%

# 尝试用800
2023-04-25 15:39:54.627 [INFO] {d470a967851d59170818856cef2101d2} send over, use 14.3895ms
2023/04/25 15:40:01 execute 0 times,loss packet: 0.00%
2023-04-25 15:50:01.753 [INFO] {d470a967851d59170818856cef2101d2} send over, use 12.3033ms
2023/04/25 16:00:00 execute 1 times,loss packet: 0.00%
2023-04-25 16:10:00.249 [INFO] {d470a967851d59170818856cef2101d2} send over, use 15ms
2023/04/25 16:12:01 execute 2 times,loss packet: 20.00%
......
2023-04-25 16:52:10.521 [INFO] {d470a967851d59170818856cef2101d2} send over, use 13.362ms
2023/04/25 16:54:29 execute 5 times,loss packet: 22.00%
2023-04-25 17:04:29.983 [INFO] {d470a967851d59170818856cef2101d2} send over, use 11.7844ms

实验结论:

根据实验发现当产生发包量为 500 时(500条 NAT Filtering Behavior), 运营商 NAT 没有出现对流量进行风控情况;当产生发包量为 800 时(800条 NAT Filtering Behavior), 运营商 NAT 出现了流量进行风控情况。

根据实验,500 条是一个较为合适的NAT Filtering Behavior数量。

Licensed under CC BY-NC-SA 4.0
最后更新于 Apr 26, 2023 15:51 +0800
使用 Hugo 构建
主题 StackJimmy 设计