Compare commits

..
9 Commits
Author SHA1 Message Date
xtaci 0552bebe46 upd 2016-08-11 13:29:01 +08:00
xtaci d158e6df3f set stream max windows size to sockbuff 2016-08-11 13:20:03 +08:00
xtaciandGitHub cf7bca5cb7 Update README.md 2016-08-11 10:05:05 +08:00
xtaciandGitHub 99a2b60c7d Update README.md 2016-08-11 10:04:25 +08:00
xtaciandGitHub 4a5024b361 Update README.md 2016-08-11 10:04:02 +08:00
xtaciandGitHub 12bd3853d5 Update README.en.md 2016-08-10 10:31:05 +08:00
xtaciandGitHub 7992b87889 Update README.md 2016-08-10 10:30:17 +08:00
xtaciandGitHub cfcc2e0676 Update README.en.md 2016-08-09 15:52:45 +08:00
xtaciandGitHub 1e870f02af Update README.md 2016-08-09 14:08:22 +08:00
4 changed files with 32 additions and 22 deletions
+5 -3
View File
@@ -1,5 +1,5 @@
# <img src="logo.png" alt="kcptun" height="60px" />
[![GoDoc][1]][2] [![Release][13]][14] [![Powered][17]][18] [![Build Status][3]][4] [![Go Report Card][5]][6] [![Downloads][15]][16] [![Gitter][19]][20]
[![GoDoc][1]][2] [![Release][13]][14] [![Powered][17]][18] [![MIT licensed][11]][12] [![Build Status][3]][4] [![Go Report Card][5]][6] [![Downloads][15]][16] [![Gitter][19]][20]
[1]: https://godoc.org/github.com/xtaci/kcptun?status.svg
[2]: https://godoc.org/github.com/xtaci/kcptun
[3]: https://travis-ci.org/xtaci/kcptun.svg?branch=master
@@ -10,8 +10,8 @@
[8]: https://raw.githubusercontent.com/xtaci/kcptun/master/LICENSE.md
[9]: https://img.shields.io/github/stars/xtaci/kcptun.svg
[10]: https://github.com/xtaci/kcptun/stargazers
[11]: https://img.shields.io/github/forks/xtaci/kcptun.svg
[12]: https://github.com/xtaci/kcptun/network
[11]: https://img.shields.io/badge/license-MIT-blue.svg
[12]: LICENSE.md
[13]: https://img.shields.io/github/release/xtaci/kcptun.svg
[14]: https://github.com/xtaci/kcptun/releases/latest
[15]: https://img.shields.io/github/downloads/xtaci/kcptun/total.svg?maxAge=1800
@@ -59,6 +59,8 @@ CLIENT: -mtu 1400 -sndwnd 256 -rcvwnd 2048 -mode fast2 -dscp 46
> Step 1Increase client rcvwnd & server sndwnd simultaneously & gradually。
> Step 2Try download something and observer, if the bandwidth usage is close the limit then stop, otherwise goto step 1.
***NOTICE: if too much retranmission happens, it's quite possible the windows are too large***
### *Traffic Control* :lollipop:
***Intended audience : for those server's bandwidth is quite limited.***
+15 -6
View File
@@ -1,5 +1,5 @@
# <img src="logo.png" alt="kcptun" height="60px" />
[![GoDoc][1]][2] [![Release][13]][14] [![Powered][17]][18] [![Build Status][3]][4] [![Go Report Card][5]][6] [![Downloads][15]][16] [![Gitter][19]][20]
[![GoDoc][1]][2] [![Release][13]][14] [![Powered][17]][18] [![MIT licensed][11]][12] [![Build Status][3]][4] [![Go Report Card][5]][6] [![Downloads][15]][16] [![Gitter][19]][20]
[1]: https://godoc.org/github.com/xtaci/kcptun?status.svg
[2]: https://godoc.org/github.com/xtaci/kcptun
[3]: https://travis-ci.org/xtaci/kcptun.svg?branch=master
@@ -8,10 +8,8 @@
[6]: https://goreportcard.com/report/github.com/xtaci/kcptun
[7]: https://img.shields.io/badge/license-MIT-blue.svg
[8]: https://raw.githubusercontent.com/xtaci/kcptun/master/LICENSE.md
[9]: https://img.shields.io/github/stars/xtaci/kcptun.svg
[10]: https://github.com/xtaci/kcptun/stargazers
[11]: https://img.shields.io/github/forks/xtaci/kcptun.svg
[12]: https://github.com/xtaci/kcptun/network
[11]: https://img.shields.io/badge/license-MIT-blue.svg
[12]: LICENSE.md
[13]: https://img.shields.io/github/release/xtaci/kcptun.svg
[14]: https://github.com/xtaci/kcptun/releases/latest
[15]: https://img.shields.io/github/downloads/xtaci/kcptun/total.svg?maxAge=1800
@@ -54,10 +52,21 @@ CLIENT: -mtu 1400 -sndwnd 256 -rcvwnd 2048 -mode fast2 -dscp 46
*巭孬嫑乱动*
```
两端参数必须一致的有:
* datashard
* parityshard
* nocomp
* key
* crypt
其余为两边可独立设定的参数
*简易自我调优方法*
> 第一步:同时在两端逐步增大client rcvwnd和server sndwnd;
> 第二步:尝试下载,观察如果带宽利用率(服务器+客户端两端都要观察)接近物理带宽则停止,否则跳转到第一步。
***注意:产生大量重传时,一定是窗口偏大了***
*带宽计算公式*
```
在不丢包的情况下,有最大-rcvwnd 个数据包在网络上正在向你传输,以平均数据包大小avgsize计算,在任意时刻,有:
@@ -188,7 +197,7 @@ type Snmp struct {
对该项目的捐款将用于[gonet/2](http://gonet2.github.io/)游戏服务器框架的研发。
> 特别感谢: 郑H立, 南D风, Li, 七q, 凌J,昶,Les*ables 等,名字已做特殊处理。
> 特别感谢: 郑H立, 南D风, Li, 七q, 凌J,昶,Les*ables, Ky*n等,名字已做特殊处理。
### *参考资料* :paperclip:
1. https://github.com/skywind3000/kcp -- KCP - A Fast and Reliable ARQ Protocol.
+1 -1
View File
@@ -274,7 +274,7 @@ func main() {
EnableKeepAlive: true,
KeepAliveInterval: 30 * time.Second,
ConnectionWriteTimeout: 30 * time.Second,
MaxStreamWindowSize: 16777216,
MaxStreamWindowSize: uint32(sockbuf),
LogOutput: os.Stderr,
}
var session *yamux.Session
+11 -12
View File
@@ -53,17 +53,9 @@ func newCompStream(conn net.Conn) *compStream {
}
// handle multiplex-ed connection
func handleMux(conn io.ReadWriteCloser, target string) {
func handleMux(conn io.ReadWriteCloser, target string, config *yamux.Config) {
// stream multiplex
var mux *yamux.Session
config := &yamux.Config{
AcceptBacklog: 256,
EnableKeepAlive: true,
KeepAliveInterval: 30 * time.Second,
ConnectionWriteTimeout: 30 * time.Second,
MaxStreamWindowSize: 16777216,
LogOutput: os.Stderr,
}
m, err := yamux.Server(conn, config)
if err != nil {
log.Println(err)
@@ -276,7 +268,14 @@ func main() {
if err := lis.SetWriteBuffer(sockbuf); err != nil {
log.Println("SetWriteBuffer:", err)
}
config := &yamux.Config{
AcceptBacklog: 256,
EnableKeepAlive: true,
KeepAliveInterval: 30 * time.Second,
ConnectionWriteTimeout: 30 * time.Second,
MaxStreamWindowSize: uint32(sockbuf),
LogOutput: os.Stderr,
}
for {
if conn, err := lis.Accept(); err == nil {
log.Println("remote address:", conn.RemoteAddr())
@@ -288,9 +287,9 @@ func main() {
conn.SetKeepAlive(keepalive)
if nocomp {
go handleMux(conn, target)
go handleMux(conn, target, config)
} else {
go handleMux(newCompStream(conn), target)
go handleMux(newCompStream(conn), target, config)
}
} else {
log.Println(err)