Conversation
|
burstObservatory не способен корректно определить некоторые локальные блокировки в России, т.к. текущая реализация использует только HEAD-запросы, а обычная observatory не читает тело ответа и не обрабатывает ошибки. Это делает невозможным детектирование блокировок, основанных на отсечке по размеру загружаемых данных.
До модификации (HEAD-запрос): |
a98ee1a to
8e6a301
Compare
|
solved proto gen, but it required change core/proto.go |
you can simply just not commit that file |
|
@Fangliding could you look pls? |
|
proto问题应该已经没有了 |
|
Thanks for your work! Looks good to me! |
| return rttFailed, err | ||
| } | ||
| // don't wait for body | ||
| if httpMethod == http.MethodGet { |
There was a problem hiding this comment.
BTW I agree with Fangliding that maybe better read body for any method except HEAD. But it is too minor we can do later so I merged it
…#4835) * feat: add options to set method for burst check. * chore: gen proto. * chore: change protoc-gen-go to latest. * revert --------- Co-authored-by: 风扇滑翔翼 <Fangliding.fshxy@outlook.com>
…#4835) * feat: add options to set method for burst check. * chore: gen proto. * chore: change protoc-gen-go to latest. * revert --------- Co-authored-by: 风扇滑翔翼 <Fangliding.fshxy@outlook.com>
…#4835) * feat: add options to set method for burst check. * chore: gen proto. * chore: change protoc-gen-go to latest. * revert --------- Co-authored-by: 风扇滑翔翼 <Fangliding.fshxy@outlook.com>





burstObservatory is unable to correctly detect certain local blocks in Russia, as the current implementation uses only HEAD requests, and the regular observatory does not read the response body or handle errors. This makes it impossible to detect blocks based on the size of downloaded data.
Problem:
Recently, certain types of blocking have been observed in Russia, where:
Such connections are marked as alive in burstObservatory because the HEAD request does not trigger the block.
After thorough analysis, it was found that the block is triggered only when attempting to read the body of a GET request, and only if the body size is greater than or equal to 20 KB.
Solution:
The ping function in burstObservatory was modified:
For testing, a site was set up with the URL /slow-200 that returns a static 20 KB body.
Result (after modification):
[Warning] app/observatory/burst: error ping https://test.dev.com/slow-200 with CDN-PROXY: Get "https://test.dev.com/slow-200": context deadline exceeded (Client.Timeout exceeded while awaiting headers)
[Warning] app/observatory/burst: error ping https://test.dev.com/slow-200 with ENTRY-PROXY: context deadline exceeded (Client.Timeout or context cancellation while reading body)
Before modification (HEAD request):
[Warning] app/observatory/burst: error ping https://test.dev.com/slow-200 with CDN-PROXY: Get "https://test.dev.com/slow-200": context deadline exceeded (Client.Timeout exceeded while awaiting headers)
In the second case, the block is not detected, and observatory considers the connection available, which leads to routing traffic through a non-working outbound.