Module: P2p2
- Defined in:
- lib/p2p2/p1.rb,
lib/p2p2/p2.rb,
lib/p2p2/head.rb,
lib/p2p2/p2pd.rb,
lib/p2p2/custom.rb,
lib/p2p2/version.rb,
lib/p2p2/p1_custom.rb,
lib/p2p2/p1_worker.rb,
lib/p2p2/p2_custom.rb,
lib/p2p2/p2_worker.rb,
lib/p2p2/p2pd_worker.rb
Overview
P2p2::P2pd - 配对服务。
包结构
tund-p2pd, tun-p2pd:
room
p2pd-tund, p2pd-tun:
Q>: 0 ctlmsg -> C: 1 peer addr -> tun sockaddr / tund sockaddr
tun-tund:
Q>: 0 ctlmsg -> C: 2 heartbeat -> C: random char
3 a new source -> Q>: src id
4 paired -> Q>: src id -> n: dst port
5 dest status -> n: dst port -> Q>: biggest relayed dst pack id -> Q>: continue src pack id
6 source status -> Q>: src id -> Q>: biggest relayed src pack id -> Q>: continue dst pack id
7 miss -> Q>/n: src id / dst port -> Q>: pack id begin -> Q>: pack id end
8 fin1 -> Q>/n: src id / dst port -> Q>: biggest src pack id / biggest dst pack id -> Q>: continue dst pack id / continue src pack id
9 not use
10 fin2 -> Q>/n: src id / dst port
11 not use
12 tund fin
13 tun fin
Q>: 1+ pack_id -> Q>/n: src id / dst port -> traffic
close logic
1-1. after close src -> dst closed ? no -> send fin1 1-2. tun recv fin2 -> del src ext
2-1. tun recv fin1 -> all traffic received ? -> close src after write 2-2. tun recv traffic -> dst closed and all traffic received ? -> close src after write 2-3. after close src -> dst closed ? yes -> del src ext -> send fin2
3-1. after close dst -> src closed ? no -> send fin1 3-2. tund recv fin2 -> del dst ext
4-1. tund recv fin1 -> all traffic received ? -> close dst after write 4-2. tund recv traffic -> src closed and all traffic received ? -> close dst after write 4-3. after close dst -> src closed ? yes -> del dst ext -> send fin2
Defined Under Namespace
Modules: Custom Classes: P1, P1Custom, P1Worker, P2, P2Custom, P2Worker, P2pd, P2pdWorker
Constant Summary collapse
- PACK_SIZE =
包大小 1400(console MTU) - 8(PPPoE header) - 40(IPv6 header) - 8(UDP header) - 8(pack id) - 8(src id) = 1328
1328
- CHUNK_SIZE =
块大小
PACK_SIZE * 1000
- WBUFFS_LIMIT =
写前上限,超过上限结一个块
1000
- WMEMS_LIMIT =
写后上限,达到上限暂停写
100_000
- RESUME_BELOW =
降到多少以下恢复写
50_000
- EXPIRE_NEW =
创建之后多久没有流量进来,过期
10
- EXPIRE_AFTER =
多久没有新流量,过期
300
- CHECK_EXPIRE_INTERVAL =
检查过期间隔
60
- STATUS_INTERVAL =
发送状态间隔
0.5
- SEND_STATUS_UNTIL =
持续的告之对面状态,直到没有流量往来,持续多少秒
10
- BREAK_SEND_MISS =
miss包个数上限,达到上限忽略要后面的段,可控碎片缓存
10_000
- CONFUSE_UNTIL =
混淆前几个包
5
- HEARTBEAT_INTERVAL =
心跳间隔
5
- UPDATE_ROOM_INTERVAL =
刷新房间间隔
60
- PEER_ADDR =
1
- HEARTBEAT =
2
- A_NEW_SOURCE =
3
- PAIRED =
4
- DEST_STATUS =
5
- SOURCE_STATUS =
6
- MISS =
7
- FIN1 =
8
- GOT_FIN1 =
9
- FIN2 =
10
- GOT_FIN2 =
11
- TUND_FIN =
12
- TUN_FIN =
13
- VERSION =
'0.26.0'.freeze