Как изменить размер окна SCTP в Chrome или Chromium для WebRT C? - PullRequest
0 голосов
/ 02 февраля 2020

Итак, у меня есть приложение WebRT C для потоковой передачи данных. Сервер (одноранговый) находится в Северной Америке, а клиент находится на другом континенте с расстоянием ~ 150 мс (RTT). Максимальная пропускная способность потока ограничена примерно 7 Мбит / с. Я узнал, что поскольку WebRT C использует SCTP для потоковой передачи данных, а размер окна SCTP в Chrome составляет 128 КБ. Таким образом, вычисление для максимально возможной пропускной способности оказывается (128 * 8 * 1000) / (150) ~ 6,82 Мбит / с, что является максимальной скоростью, которую я наблюдаю, как я уже говорил выше.

Существует в отчете об ошибках за Firefox обсуждается та же самая проблема, когда клиенты находятся далеко и пропускная способность очень мала - https://bugzilla.mozilla.org/show_bug.cgi?id=1051685 К счастью, проблема исправлена ​​в firefox, а размер окна SCTP увеличен до 1 МБ.

В Chromium сообщается об аналогичной ошибке, но я не думаю, что она будет добавлена ​​в ближайшее время (https://bugs.chromium.org/p/webrtc/issues/detail?id=3695). Это закрыто как "Не Исправлю". Поэтому у меня вопрос, есть ли способ увеличить максимальный размер окна SCTP в Chrome / Chromium, скажем, до 1 МБ?

Это то, что я нашел до сих пор. Я посмотрел на исходный код Chromium и нашел внешнюю библиотеку usrsctp. Если копнуть глубже, то есть файл, определяющий константы по умолчанию, в котором есть две переменные, которые, как мне кажется, я ищу SCTPCTL_MAXDGRAM_DEFAULT и SCTPCTL_RECVSPACE_DEFAULT (https://chromium.googlesource.com/external/usrsctplib/+/refs/heads/master/netinet/sctp_sysctl.h#151). Поэтому, если я изменю эти два значения по умолчанию, скажем, на 2097152 (2 МБ), сработает ли это для того, чего я пытаюсь достичь? Если это сработает, то я просто скомпилирую и соберу весь исходный код Chromium (который, я уверен, займет много времени для сборки), и полученный исполняемый файл Chromium будет работать с размером окна 1 МБ? Я даже иду в правильном направлении?

Я новичок в исходном коде Chromium. Поэтому я обращаюсь за помощью к сообществу SO. Я предоставил вам контекст. Если я ошибаюсь, укажите мне правильное направление.

...