Saturday, October 1, 2016

Orange FTTH, YouTube, Chrome & QUIC

PL | ENglish bellow

Opis problemu

Od pewnego czasu na komórce z systemem Android nie działały mi filmy na YouTube w Chrome oraz aplikacji YouTube. Nie działały również na komputerze stacjonarnym z systemem Windows.
Wszystko działało jednak poprawnie w przeglądarce Mozilla Firefox oraz programach Microsoft Internet Explorer i Microsoft Internet Edge. Te dwa ostatnie skreślam jako, że nie traktuję ich jako przeglądarki internetowe i każda kolejna ich wersja jest niezgodna z wersjami poprzednimi, standardami i kto wie czym jeszcze.

Analiza problemu

Aby znaleźć przyczynę problemu posłużyłem się programem wireshark (choć podobnych jest wiele). Zauważyłem, że przeglądarka próbuje się połączyć protokołem UDP na port 443 jakiegoś serwera. Ponad to próbowała połączyć się również po protokole IPv6 (podczas gdy ja używam jedynie IPv4).
Wyłączyłem w google chrome protokół quic (about://flags) i youtube znowu działało.
W aplikacji na androida nie ma niestety opcji wyłączenia QUIC. Przez ten problem nie działa również wiele innych usług google :(

Wyjaśnienie przyczyn

Google stworzyło swój własny autorski protokół komunikacji zwany QUIC.

Dotychczas stosowano protokoły: TCP (wszędzie tam, gdzie chcieliśmy wysłąć informację między dwoma komputerami z potwierdzeniem otrzymania - przez co wymiana informacji jest nieco wolniejsza), UDP (gdy wysyłaliśmy coś do wielu komputerów i potwierdzenie nie było potrzebne) i RAW (czyli wszystko inne). Listę tę można rozszerzyć a zastosowania TCP i UDP są szersze - ale tutaj ograniczę się do tego.
Chcąc zwiększyć prędkość internetu stworzono protokół QUIC, który ma zminimalizować opóźnienia towarzyszące protokołowi TCP. Aby zachować zgodność z "dotychczasownym internetem" z pominięciem "kosztu" protokołu TCP musiano wykorzystać protokół UDP lub "inne" (RAW). RAW (w tłumaczeniu "surowe") może być filtrowany przez wiele elementów sieci (firewalle itp.) i dlatego wybór padł na UDP.
Połączenie w TCP/IP i UDP/IP odbywa się po tzw. portach o numerkach zapisanych na 16 bitach, czyli liczbach od 0 do 65535 (z czego 0 jest zarezerwowany, a pierwsze 1024 są "uprzywilejowane"). Nie uległo to zmienie między IPv4 i IPv6. Na danym porcie może "słuchać" dowolny program (tzw. usługa). Porty to tylko numerki i mogą z nich korzystać różne programy - ale przyjęto pewne porty standardowe. I tak na porcie TCP 80 zazwyczaj "słucha" serwer stron WWW. A jeśli chcemy przesyłać strony WWW z szyfrowaniem SSL to zazwyczaj używamy portu TCP 443. Protokół QUIC jest szyfrowany i wybór padł na port UDP 443.
Nie doszedłem do szczegółów, ale protokół QUIC... nie działa jeśłi mamy tylko IPv4 :(
Nie sprawdzałem czy QUIC zadziała jeśli mamy tylko IPv6 - ale na pewno google chromium (przeglądarka google chrome) wysyła coś po IPv4.

Transmisja w QUIC

Dane przesyłane są przez port UDP 443 (na serwerze, ponieważ nasz komputer wysyła informacje z "dowolnego" innego wolnego w danej chwili na naszym komputerze portu).
Aby wszystko działało wymagana jest łączność po protokole IPv6.

Rozwiązanie problemu

Mam internet światłowodowy od firmy Orange. Wersja marketingowa to dumna nazwa FTTH (w tłumaczeniu "światłowó do domu"). Wymagany sprzęt to:
  • modem (takie małe pudełko zamieniające światło na sygnał do kabla sieci internet)
  • switch lub router (większe pudełko, które pozwala na łączenie więcej niż 1 urządzenia na raz a w przypadku FTTH często również na podłączenie STB czyli odbiornika telewizji, VoIP czyli telefonu, komputerów, itp.; zazwyczaj posiada rónież firewall)
Po włączeniu IPv6:
  • Otwórz http://192.168.1.1 , zaloguj się jako admin z hasłem admin, zmień hasło ponieważ to domyslne jest bardzo niebezpieczne, użyj języka polskiego lub angielskiego przejdź do ustawień zaawansowanych (advanced settings), wybierz konfigurację połączenia (internet connection), login do usługi powinien wyglądać jakoś tak: abcdef@nerwostrada.pl/ipv6 (jeśli jest abcdef@nerwostrada.pl to dopisz na końcu /ipv6 i zapisz).
  • Od razu otwórz konfigurację zapory sieciowej (firewall configuration) i zobacz ustawienia. Jeśli wszystko inne zawiedzie możesz zechcieć tu wrócić i zmienić ustawienia tak, aby umożliwić ruch po portach TCP/UDP 80 i 443.
  • Poszukaj też pozycji UPnP (pewnie pod "ustawienie połączenia" (network connection). UPnP to takie niebezpieczne coś, że dowolny program (np. wirus) może poprosić o otwarcie dla niego jakiegoś portu (np. aby ktoś z zewnątrz przejął kontrolę nad naszym komputerem).
  • Powyżej zakładam, że używasz urządzeń, które dostarcza Orange.
Sprawdź czy QUIC działa - otwórz youtube.
A co jeśli nie udało się? Spróbuj otworzyć porty TCP/UDP 80 i 443, sprawdź, czy komputer ma połączenie do internetu, spróbuj włączyć na komputerze IPv6 (co nie jest wymagane aby QUIC działał). Jeśli nadal nie działa to zadzwoń po pomoc do Orange. Albo samodzielnie prześledź ruch sieciowy (np. wireshark'iem).
Update: na telefonie u mnie nadal nie działa. Nie dowiem się dlaczego dopóki nie przechwycę ruchu sieciowego. To be continued.


EN

Problem definition

For some time on my mobile phone with Android operating system, the youtube is not working on Chrome nor the android youtube app. It doesn't work on my PC with Windows OS, either.
It all worked well on Mozilla Firefox web browser and in applications Microsoft Internet Explorer and Microsoft Internet Edge. THe last two are scratched as I don't treat them like web browsers and every version of them is incompatible with every previous version, most standards and who-knows-what-else.

Problem analysis

To find the cause I have user application called Wireshark (there are many similar apps). I have noticed that my web browser is trying to connect using UDP onto port 443 of some server. Additionally, it tried to connect using IPv6 as well (while I have only IPv4 enabled).
I have disabled QUIC protocol in google chromium (about://flags) and youtube was back working.
Unfortunately on the android app there is no option to disable QUIC protocol. For that reason many other google services are not working either :(

Explanation of the issue

Google created their own communication protocol called QUIC.

Before the commonly used protocols were: TCP (when 2 computers wanted to exchange information with delivery confirmation, also known as hand-shake - for that reason TCP is a bit slower than other options listed here), UDP (when we are broadcasting something to many computers and delivery confirmation is not needed) and RAW (meaning everything else). This list can be extended and usages for TCP and UDP are wider - but I'm narrowing the description down to what is important.
To increase internet speed, QUIC protocol was created. It is supposed to minimize costs of TCP protocol. To stay backward compatible with existing internet with avoidance of TCP extra costs google had to use either UD protocol or RAW. RAW could be filtered-out by many network elements (such as firewalls, etc.) so it is better to use UDP instead.
Connection in TCP/IP and UDP/IP is made using so called ports (see RFC from 1981 for details). The ports have numbers written on 16 bits (values between 0 and 65535 where 0 is reserved and first 1024 are priveleged). Port numbers is the same in IPv4 and IPv6. Any application (called a network service) could "listen" on a given port. Ports are just numbers and any application could use them - but there are some standards for the port numbers usage. And so port TCP 80 is normally used by WWW servers. When the transmission is encrypted using SSL then port 443 is used instead. The QUIC protocol is encrypted thus port UDB 443 was choosen.
I don't know the details, but... QUIC protocol won't work if you are using only IPv4 :(
I have not checked whether it works on IPv6 only - but for sure google chromium is trying to use IPv4.

Transmission within QUIC

Data are sent through the UDP 443 port (on server, as on our computer any unused at the moment port could be used to send the nformation).
To have everything working you need to have protocol IPv6 working.

Problem solution

I have fiber internet from Orange.  Marketing version is a fancy name FTTH (Fiber To The Home).
Required hardware is:
  • modem (small bog to convert light into network signal)
  • switch or router (usually a larger box allowing more than 1 device to connect and usually allowing many other features such as connecting the STB so the internet-TV receiver, VoIP so phone line, computers, etc.; usually it works as firewall so it can filter network traffic as well)
After IPv6 is enabled:
  • Open http://192.168.1.1 , log in as admin with pass admin, change the password as the default oneis insecure, use your preferred language, go to the advanced settings, choose network configuration / internet connection - login should look like abcdef@neostrada.pl/ipv6 (if it is abcdef@neostrada.pl then append /ipv6 at the end and save).
  • Since already nearby, you can open firewall configuration and check the settings. If everything else fails then you might wish to come back here and change the configuration so that ports TCP/UDP 80 and 443 are open.
  • Look for UPnP (probably under network connection). UPnP is a dangerous service so that any application (for example a virus) might request some port to open (so that for example someone from the internet might take control over our computer).
  • I'm assuming that you are using hardware provided by the Orange in Poland.
Check if QUIC is working - open youtube.
What if it failed? Try opening ports TCP/UDP 80 and 443, check if the computer has internet access, try enabling IPv6 on the computer (although it is not required for QUIC). If still not working then call Orange for assistance/support. Or try to track the network traffic on your own (ex. using wireshark).

No comments: