Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
  • Loading branch information
wangyu- committed Aug 9, 2017
2 parents 92581be + 58ab1f6 commit c97f09f
Showing 1 changed file with 5 additions and 3 deletions.
8 changes: 5 additions & 3 deletions doc/README.zh-cn.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,13 +18,15 @@ Udp2raw-tunnel
### 模拟TCP3次握手
模拟TCP3次握手,模拟seq ack过程。另外还模拟了一些tcp option:MSS,sackOk,TS,TS_ack,wscale,用来使流量看起来更像是由普通的linux tcp协议栈发送的。

### 连接保持,连接快速恢复
### 连接保持,连接快速恢复,单向链路失效检测
心跳机制检查连接是否中断,一旦心跳超时。client会立即换raw socket的端口重连,重连成功后会恢复之前中断的连接。虽然raw端的端口变了,但是udp端的所有连接都会继续有效。udp这边感觉不到raw端的重连,只会感觉到短暂断流,这跟普通的短暂丢包是类似的,不会导致上层应用重连。

另一个优化是,重连只需要client发起,就可以立即被server处理,不需要等到server端的连接超时后。这个在单向连接失效的情况下有用
Client能用单倍的超时时间检测到单向链路的失效,不管是上行还是下行,只要有一端失效就能被client检测到。重连只需要client发起,就可以立即被server处理,不需要等到server端的连接超时后。

另外,对于有大量client的情况,对于不同client,server发送的心跳是错开时间发送的,不会因为短时间发送大量的心跳而造成拥塞和延迟抖动。



### 其他特性
信道复用,client的udp端支持多个连接。

Expand All @@ -36,7 +38,7 @@ NAT 穿透 ,tcp icmp udp模式都支持nat穿透。

支持Openwrt,没有编译依赖,容易编译到任何平台上。release中提供了ar71xx版本的binary

单进程,纯异步,无锁,高并发,除了回收过期连接外,所有操作的时间复杂度都跟连接数无关。回收过期连接这个操作是个批量操作,会定期进行,但是会保证一次回收的数量不超过总数的1/10(可配置),不会造成延迟抖动
epoll纯异步,高并发,除了回收过期连接外,所有操作的时间复杂度都跟连接数无关。回收过期连接的操做也是一点一点进行的,不会因为消耗太多cpu时间造成延迟抖动

### 关键词
突破udp qos,突破udp屏蔽,openvpn tcp over tcp problem,openvpn over icmp,udp to icmp tunnel,udp to tcp tunnel,udp via icmp,udp via tcp
Expand Down

0 comments on commit c97f09f

Please sign in to comment.