-
Notifications
You must be signed in to change notification settings - Fork 360
feat: Add rate limiting to fallback handling via token bucket #12
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
1455ffc
to
4c13194
Compare
4c13194
to
1b088ad
Compare
我想了一下先设计得简单点吧,只给 fallback 下行限速即可,而且看描述 burst 和 after 有点重复,不过 burst 实际上是 capacity?
|
我当时考虑的是上行不限,香港优选节点可能被拿来跑直播之类的啥用途。 现在上行的删不删? after的作用主要是为了防止探测,
|
我在想怎么设计,请保持在线, |
ok |
burst 你这个描述应该改成“突发倍数”更合适吧,且 0 应该默认相当于 1 |
|
burst本质就是个令牌桶的容量 after是单独加的,消耗完了开始用桶算法 nginx是这么干的 |
看明白一些了,令牌数就是 byte |
yes |
下列六个 原理:当传输了after减去burst字节后开启限速算法。 举例: 建议:过大的 |
可以保留上行限速,参数设计成这样: "limitFallbackUpload": {
"afterBytes": 0,
"bytesPerSec": 0,
"burstBytesPerSec": 0
} "burstBytesPerSec" 小于 "bytesPerSec" 时自动等于它 |
话说 Nginx 没有 "afterSeconds" 这种东西吗 |
|
我刚翻了下文档nginx的确没有按时间限速的
下个PR按IP限连接数? |
总之先按我说的参数格式改一下吧 |
ok |
你这改的是个啥?完全没按我说的格式,README 也是不该动的地方都动了,还是放下个版本吧 |
caf5f23
to
377d9dc
Compare
RatelimitedConn 的 Read() 有个问题,如果数据量大要等很久,或者直接卡死 应该改成 Write() 里有多少 token 就 write 多少数据 |
这个, |
README 的问题主要在于你的 IDE 把整个 README 给重构了,你只加新参数的部分就行,其它的别改 |
还剩个0,稍等 |
等下,我看了下,似乎改成 net.Conn 会使 splice 失效? |
貌似不会,你改吧 |
|
不晓得,golang我是散装的 |
我写了个函数试了一下,原代码把 underlying 先断言成 CloseWriteConn 仍能继续断言成 io.WriterTo 这个 PR 可以合了,然后我会再加一个 commit,你再更新 Xray-core 那里的 PR |
ok,好了 不过core也要求代码写这么漂亮吗 |
…S#4553) XTLS/REALITY#12 (cherry picked from commit 18ab291)
如题,fallback时限速,不影响正常reality
比自己搭nginx过滤SNI的方案更好,更简单
仅demo因此速率写死,欢迎PR我再弄config
对于reality最佳实践虽然是偷同ASN,但考虑到实际情况,大多还是找个知名网站莽就完事了
即便target现在不是CF,可能以后也会用CF等CDN
自己搭nginx限SNI对小白来说不友好,因为需要探测出目标站的所有SNI并放行,哪天target证书更新可能又有新的域
我都嫌费劲,而且流量从nginx绕了一下,感觉怪怪的
此PR使能所有reality握手失败的分别针对上下行限速,允许brust
达成效果:调大after并严格限制rate和brust,使能勉强可开个正常网页应付探测,但想把小鸡拿来中转白嫖流量基本可杜绝
效果图
