2016-08-28 12:17:01 +08:00
2016-08-26 13:30:10 +08:00
upd
2016-08-28 12:11:45 +08:00
upd
2016-08-28 12:11:45 +08:00
upd
2016-08-26 15:51:33 +08:00
2016-08-26 13:30:10 +08:00
upd
2016-08-26 20:18:49 +08:00
upd
2016-08-28 12:17:01 +08:00
upd
2016-08-28 12:03:32 +08:00

smux

simple multiplexing

goals

  1. receive window is shared among the streams.
  2. precise flow control(pluggable stragety).
  3. precise memory control.
  4. maximized payload.
  5. optimized for high-speed streams.
  6. aim for game services.
FRAMETYPE=Data, OPTIONS=(flagSYN, flagACK, flagFIN, flagRST)
+---------------+--------------+------------+--------------+--------------------------------+
|               |              |            |              |                                |
| FRAMETYPE(1B) | OPTIONS(1B)  | LENGTH(2B) | STREAMID(4B) | DATA(MAX 64K)                  |
|               |              |            |              |                                |
+---------------+--------------+------------+--------------+--------------------------------+

FRAMETYPE=WindowUpdate
+---------------+--------------+------------+
|               |                           |
| FRAMETYPE(1B) |  WINDOWSIZE(4B)           |
|               |                           |
+---------------+--------------+------------+

FRAMETYPE=Ping, OPTIONS=(flagSYN, flagACK)
+---------------+--------------+------------+------------+
|               |              |                         |
| FRAMETYPE(1B) | OPTIONS(1B)  | PINGID(4B)              |
|               |              |                         |
+---------------+--------------+------------+------------+

FRAMETYPE=GoAway 
+---------------+---------------+
|               |               |
| FRAMETYPE(1B) | ERROR(2B)     |
|               |               |
+---------------+---------------+

status

in-progress

S
Description
A Stream Multiplexing Library for golang with least memory usage(TDMA)
Readme
669 KiB
Languages
Go 100%