p2p2 0.14.0 → 0.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 68069e5326b6a25498cf1dd4adb8733fe2ec2bf809126f1f500f9cb734d4ea47
4
- data.tar.gz: 61610f3b5e55f3d42df523e154f277e1a22a87dad56b93d220d4f4a39190b36e
3
+ metadata.gz: ca925ece6d1579aa867c70dbc92911eb3c0046e855c2579115738f2688dd08c5
4
+ data.tar.gz: 33c156afa25319ed03758e530aab81ae1ddc2e27059ea7bc5dae463a1a14761b
5
5
  SHA512:
6
- metadata.gz: a5d286c1091dab33efac9d24e9c9535835420922dba75447b38f264bf3d655cbb5fd9d5cf43a90f9af60a9b1fef63a1c47f162a083e0a67227ffafcf815606a8
7
- data.tar.gz: 18bb9e9992555dc486a25d7f81b1d7e63036be78d5c8b849073a1217dbbbe67442f9486ce5984e6a937abcdf208bfce01d46c98b278c74396ae36f9332dc3367
6
+ metadata.gz: 8bf48c99e8242a66ec4f9774dd494ed57c9720c404e3a8cb0481c74dc3bcbd3fbf97c6cf2cfece23fdb7ad1bc5aa13cbf109baf929ef038ab756c2a3bb28a6ba
7
+ data.tar.gz: 3cb4955440287396afb177f13a800a67eca199531fc1956d8004a44372e8fc3a0ebd446b5ad959c271470fabda7ebbfe6358cc2dba1f6421bf55dd6caf7a2e4f
@@ -2,12 +2,13 @@ module P2p2
2
2
  PACK_SIZE = 1328 # 包大小 1400(console MTU) - 8(PPPoE header) - 40(IPv6 header) - 8(UDP header) - 8(app/shadow id) - 8(pack id) = 1328
3
3
  CHUNK_SIZE = PACK_SIZE * 1000 # 块大小
4
4
  WBUFFS_LIMIT = 1000 # 写前上限,超过上限结一个块
5
- WMEMS_LIMIT = 100_000 # 写后上限,到达上限暂停写
5
+ WMEMS_LIMIT = 100_000 # 写后上限,达到上限暂停写
6
6
  RESUME_BELOW = 50_000 # 降到多少以下恢复写
7
7
  EXPIRE_AFTER = 1800 # 多久过期
8
8
  HEARTBEAT_INTERVAL = 3 # 心跳间隔
9
9
  STATUS_INTERVAL = 0.3 # 发送状态间隔
10
- SEND_STATUS_UNTIL = 20 # 持续的告之对面状态,直到没有流量往来,持续多少秒
10
+ SEND_STATUS_UNTIL = 10 # 持续的告之对面状态,直到没有流量往来,持续多少秒
11
+ BREAK_SEND_MISS = 10_000 # miss包个数上限,达到上限忽略要后面的段,可控碎片缓存
11
12
  PEER_ADDR = 1
12
13
  HEARTBEAT = 2
13
14
  A_NEW_APP = 3
@@ -295,8 +295,14 @@ module P2p2
295
295
  ranges << [ curr_pack_id, ext[ :biggest_app_pack_id ] ]
296
296
  end
297
297
 
298
+ pack_count = 0
298
299
  # puts "debug #{ ext[ :continue_app_pack_id ] }/#{ ext[ :biggest_app_pack_id ] } send MISS #{ ranges.size }"
299
300
  ranges.each do | pack_id_begin, pack_id_end |
301
+ if pack_count >= BREAK_SEND_MISS
302
+ puts "break send miss at #{ pack_id_begin } #{ Time.new }"
303
+ break
304
+ end
305
+
300
306
  ctlmsg = [
301
307
  0,
302
308
  MISS,
@@ -306,6 +312,7 @@ module P2p2
306
312
  ].pack( 'Q>CQ>Q>Q>' )
307
313
 
308
314
  send_pack( p1, ctlmsg, info[ :p2_addr ] )
315
+ pack_count += ( pack_id_end - pack_id_begin + 1 )
309
316
  end
310
317
  end
311
318
  when MISS
@@ -530,7 +537,7 @@ module P2p2
530
537
  end
531
538
  end
532
539
 
533
- # 若写后到达上限,暂停取写前
540
+ # 若写后达到上限,暂停取写前
534
541
  if info[ :shadow_exts ].map{ | _, ext | ext[ :wmems ].size }.sum >= WMEMS_LIMIT
535
542
  unless info[ :paused ]
536
543
  puts "pause #{ Time.new }"
@@ -314,8 +314,14 @@ module P2p2
314
314
  ranges << [ curr_pack_id, ext[ :biggest_shadow_pack_id ] ]
315
315
  end
316
316
 
317
+ pack_count = 0
317
318
  # puts "debug #{ ext[ :continue_shadow_pack_id ] }/#{ ext[ :biggest_shadow_pack_id ] } send MISS #{ ranges.size }"
318
319
  ranges.each do | pack_id_begin, pack_id_end |
320
+ if pack_count >= BREAK_SEND_MISS
321
+ puts "break send miss at #{ pack_id_begin } #{ Time.new }"
322
+ break
323
+ end
324
+
319
325
  ctlmsg = [
320
326
  0,
321
327
  MISS,
@@ -325,6 +331,7 @@ module P2p2
325
331
  ].pack( 'Q>CQ>Q>Q>' )
326
332
 
327
333
  send_pack( p2, ctlmsg, info[ :p1_addr ] )
334
+ pack_count += ( pack_id_end - pack_id_begin + 1 )
328
335
  end
329
336
  end
330
337
  when MISS
@@ -547,7 +554,7 @@ module P2p2
547
554
  end
548
555
  end
549
556
 
550
- # 若写后到达上限,暂停取写前
557
+ # 若写后达到上限,暂停取写前
551
558
  if info[ :app_exts ].map{ | _, ext | ext[ :wmems ].size }.sum >= WMEMS_LIMIT
552
559
  unless info[ :paused ]
553
560
  puts "pause #{ Time.new }"
@@ -1,3 +1,3 @@
1
1
  module P2p2
2
- VERSION = '0.14.0'.freeze
2
+ VERSION = '0.15.0'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: p2p2
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.14.0
4
+ version: 0.15.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - takafan
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-09-03 00:00:00.000000000 Z
11
+ date: 2019-09-26 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: 内网里的任意应用,访问另一个内网里的应用服务端。
14
14
  email: