ื”ื˜ื˜ืคึผ ืื™ื‘ืขืจ UDP - ื’ื•ื˜ ื ื•ืฆืŸ ืคื•ืŸ ื“ื™ QUIC ืคึผืจืึธื˜ืึธืงืึธืœ

ื”ื˜ื˜ืคึผ ืื™ื‘ืขืจ UDP - ื’ื•ื˜ ื ื•ืฆืŸ ืคื•ืŸ ื“ื™ QUIC ืคึผืจืึธื˜ืึธืงืึธืœ

QUIC (Quick UDP Internet Connections) ืื™ื– ืึท ืคึผืจืึธื˜ืึธืงืึธืœ ืื•ื™ืฃ ืฉืคึผื™ืฅ ืคื•ืŸ UDP ื•ื•ืึธืก ืฉื˜ื™ืฆื˜ ืึทืœืข ื“ื™ ืคึฟืขื™ึดืงื™ื™ื˜ืŸ ืคื•ืŸ TCP, TLS ืื•ืŸ HTTP/2 ืื•ืŸ ืกืึทืœื•ื•ื– ืจื•ื‘ึฟ ืคื•ืŸ ื–ื™ื™ืขืจ ืคึผืจืึธื‘ืœืขืžืก. ืขืก ืื™ื– ืึธืคื˜ ื’ืขืจื•ืคืŸ ืึท ื ื™ื™ึทืข ืึธื“ืขืจ "ืขืงืกืคึผืขืจื™ืžืขื ื˜ืึทืœ" ืคึผืจืึธื˜ืึธืงืึธืœ, ืึธื‘ืขืจ ืขืก ื”ืื˜ ืœืึทื ื’ ืึทื•ื˜ืœื™ื•ื•ื“ ื“ื™ ื™ืงืกืคึผืขืจืžืขื ืึทืœ ื‘ื™ื ืข: ืึทื ื˜ื•ื•ื™ืงืœื•ื ื’ ืื™ื– ืึธื ื’ืึธื™ื ื’ ืคึฟืึทืจ ืžืขืจ ื•ื•ื™ 7 ื™ืึธืจ. ืื™ ืŸ ื“ืข ืจ ืฆืฒ ื˜ ื”ื ื˜ ื“ืข ืจ ืคืจืื˜ืืงืืœ , ื ื™ืฉ ื˜ ื’ืขืœื•ื ื’ืข ืŸ ืฆ ื• ืฐืขืจ ืŸ ื ืกื˜ืื ื“ืืจื˜ , ืื‘ืข ืจ ื“ื ืš ืื™ ื– ื’ืขืฐืืจ ืŸ ืคืืจืฉืคืจืฒื˜ . ืคึฟืึทืจ ื‘ื™ื™ึทืฉืคึผื™ืœ, QUIC ืื™ื– ื’ืขื ื™ืฆื˜ ื“ื•ืจืš ืึทื–ืึท ื“ื–ืฉื™ื™ืึทื ืฅ ื•ื•ื™ Google ืื•ืŸ ืคืึทืกืขื‘ืึธืึธืง ืฆื• ืคืึทืจื’ื™ื›ืขืจืŸ ืคืึทืจืงืขืจ ืื•ืŸ ืจืขื“ื•ืฆื™ืจืŸ ื“ื™ืœื™ื™ื– ืื™ืŸ ืจื™ืจืขื•ื•ื“ื™ืง ื ืขื˜ื•ื•ืึธืจืงืก, ืื•ืŸ ื“ื™ IETF ื“ืขืจืงืœืขืจื˜ ื–ื™ื™ืŸ ืคึผืจืึธื˜ืึธืงืึธืœ ื’ืึธืคึผืœ ื“ื™ ื™ืงืขืจ ืคึฟืึทืจ ื“ื™ ื”ื˜ื˜ืคึผ / 3 ื ืึธืจืžืึทืœ (ื›ืึธื˜ืฉ HTTP / 2 ื ื™ืฆื˜ ื‘ืœื•ื™ื– 44.8% ื–ื™ื™ื˜ืœืขืš).

ื‘ืึทื’ืจื™ืฃ

QUIC ืื™ื– ื“ืขื•ื•ืขืœืึธืคึผืขื“ ื•ื•ื™ ืึท ืคืึทืจื‘ื™ื™ึทื˜ ืคึฟืึทืจ ื“ื™ ืœืขื’ืึทื˜ TCP, ื•ื•ืึธืก ืื™ื– ื’ืขื•ื•ืขืŸ ืขืจื™ื“ื–ืฉื ืึทืœื™ ื“ื™ื–ื™ื™ื ื“ ืคึฟืึทืจ ื ื™ื“ืขืจื™ืง-ืึธื ื•ื•ืขืจ ื•ื•ื™ื™ืขืจื“ ื ืขื˜ื•ื•ืึธืจืงืก. TCP ื“ื™ืœื™ื•ื•ืขืจื– ืคึผืึทืงื™ืฅ ืื™ืŸ ืกื“ืจ, ืึทื–ื•ื™ ืื•ื™ื‘ ืื™ื™ืŸ ืคึผืึทืงืึทื˜ ืื™ื– ืคืึทืจืคืึทืœืŸ, ื“ื™ ื’ืื ืฆืข ืจื™ื™ ืื™ื– ืกื˜ืึทืคึผื˜ (ืงืึธืคึผ-ืคื•ืŸ-ืฉื•ืจื” ื‘ืœืึทืงื™ื ื’), ื•ื•ืึธืก ื ืขื’ืึทื˜ื™ื•ื•ืœื™ ืึทืคืขืงืฅ ื“ื™ ืงื•ื•ืึทืœื™ื˜ืขื˜ ืื•ืŸ ืคืขืกื˜ืงื™ื™ึทื˜ ืคื•ืŸ ื“ื™ ืงืฉืจ. ืฆื• ื•ื™ืกืžื™ื™ื“ืŸ ืžืึทืกื™ื•ื• ืœืึธืกืกืขืก, ืกืขืœื™ืึทืœืขืจ ื ืขื˜ื•ื•ืึธืจืงืก ืจื™ื–ืึธืจื˜ ืฆื• ื ื™ืฆืŸ ื’ืจื•ื™ืก ื‘ืึทืคืขืจื–, ื•ื•ืึธืก ืื™ืŸ ืงืขืจ ืคื™ืจื˜ ืฆื• ื™ื‘ืขืจื™ืง ืื•ืŸ ืคืึทืœืฉ ื ืขื’ืึทื˜ื™ื•ื• ืขื ื˜ืคืขืจ ืคื•ืŸ ื“ืขื ืคึผืจืึธื˜ืึธืงืึธืœ (bufferbloat). ืื™ืŸ ืึทื“ื™ืฉืึทืŸ, TCP ืกืคึผืขื ื“ื– ืึท ืคึผืœืึทืฅ ืคื•ืŸ ืฆื™ื™ื˜ ืฆื• ื’ืจื™ื ื“ืŸ ืึท ืคึฟืึทืจื‘ื™ื ื“ื•ื ื’: SYN / ACK ืื•ืŸ TLS ืจื™ืงื•ื•ืขืก ื–ืขื ืขืŸ ืคึผืจืึทืกืขืกื˜ ืกืขืคึผืขืจืึทื˜ืœื™, ืจื™ืงื•ื•ื™ื™ืจื™ื ื’ ื“ืจื™ื™ ืจืึธื•ื ื“ื˜ืจื™ืคึผืก ืึทื ืฉื˜ืึธื˜ ืคื•ืŸ ืื™ื™ืŸ, ื•ื•ื™ QUIC ื˜ื•ื˜.

ื”ื˜ื˜ืคึผ ืื™ื‘ืขืจ UDP - ื’ื•ื˜ ื ื•ืฆืŸ ืคื•ืŸ ื“ื™ QUIC ืคึผืจืึธื˜ืึธืงืึธืœ

ื–ื™ื ื˜ QUIC ืงืึทืžื‘ื™ื™ื ื– ืึท TCP ืคืึทืจื‘ื™ื™ึทื˜ ืื•ืŸ ืึท ื™ืžืคึผืœืึทืžืขื ื˜ื™ื™ืฉืึทืŸ ืคื•ืŸ TLS 1.3, ืึทืœืข ืงืึทื ืขืงืฉืึทื ื– ื–ืขื ืขืŸ ืฉื˜ืขื ื“ื™ืง ื™ื ืงืจื™ืคึผื˜ื™ื“, ืื•ืŸ ื“ื™ืงืจื™ืคึผื˜ื™ื ื’ ืึทื–ืึท ืคืึทืจืงืขืจ ืื™ื– ื ื™ื˜ ื’ืจื™ื ื’ืขืจ ื•ื•ื™ ืื•ื™ื‘ ืขืก ื•ื•ืึธืœื˜ ื’ื™ื™ืŸ ืื™ื‘ืขืจ ื”ื˜ื˜ืคึผืก. ืื™ืŸ ืึทื“ื™ืฉืึทืŸ, QUIC ืื™ื– ื™ืžืคึผืœืึทืžืขื ืึทื“ ืื•ื™ืฃ ื“ื™ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืžื“ืจื’ื”, ื•ื•ื™ ืึท ื’ืึทื ืฅ ืคืึทืจื‘ื™ื™ึทื˜ ืคื•ืŸ ื“ื™ TCP ืึธื ืœื™ื™ื’ืŸ ื•ื•ืึธืœื˜ ื ืขืžืขืŸ ื™ื™ื‘ื™ืงื™ื™ึทื˜.

ื˜ืจืึธืฅ ืฉื˜ื™ืฆืŸ ืคึฟืึทืจ ืžื•ืœื˜ื™ืคึผืœืขืงืกื™ื ื’ ืื™ืŸ ื”ื˜ื˜ืคึผ / 2, ื“ื™ ืคึผืจืึธื‘ืœืขื ืคื•ืŸ ืงืึธืคึผ-ืคื•ืŸ-ืฉื•ืจื” ื‘ืœืึทืงื™ื ื’ ืื™ื– ื’ืขื‘ืœื™ื‘ืŸ ื“ืึธืจื˜ ืจืขื›ื˜ ืฆื• ื“ืขืจ ื ื•ื™ื˜ ืฆื• ืฆื•ืฉื˜ืขืœืŸ ืคึผืึทืงื™ืฅ ืื™ืŸ ืกื“ืจ. QUIC ืื™ื– ื™ืžืคึผืœืึทืžืขื ืึทื“ ืื•ื™ืฃ ืฉืคึผื™ืฅ ืคื•ืŸ UDP, ืึทื–ื•ื™ ืขืก ื”ืื˜ ืงื™ื™ืŸ ื‘ืœืึทืงื™ื ื’ ืื™ืŸ ืคึผืจื™ื ืฆื™ืคึผ, ืื•ืŸ ืฆื• ืคืึทืจืžื™ื™ึทื“ืŸ ืคึผืึทืงื™ืฅ ืคื•ืŸ ืฉื˜ืขื ื“ื™ืง ืคืึทืจืคืึทืœืŸ, ื–ื™ื™ ื–ืขื ืขืŸ ื’ืขืฆื™ื™ืœื˜ ืื•ืŸ ืงืขื ืขืŸ ืึทื ื˜ื”ืึทืœื˜ืŸ ื˜ื™ื™ืœืŸ ืคื•ืŸ "ืฉื›ื ื™ื," ืคึผืจืึทื•ื•ื™ื™ื“ื™ื ื’ ื™ื‘ืขืจื™ืงื™ื™ึทื˜. ืื™ืŸ ืึทื“ื™ืฉืึทืŸ, QUIC ืกืคึผืœื™ืฅ ื“ื™ ืžืึทื ืึทืœื™ื˜ื™ืง ืจื™ื™ ืื™ืŸ ืงื™ื™ืคืœ ืคึฟืขื“ืขื ืคึฟืึทืจ ืคืึทืจืฉื™ื“ืขื ืข ื˜ื™ื™ืคึผืก ืคื•ืŸ ืจื™ืงื•ื•ืขืก ืื™ืŸ ืึท ืื™ื™ืŸ ืงืฉืจ. ืื–ื•ื™, ืื•ื™ื‘ ืึท ืคึผืึทืงืึทื˜ ืื™ื– ืคืึทืจืคืึทืœืŸ, ืคึผืจืึธื‘ืœืขืžืก ืงืขืŸ ื–ื™ื™ืŸ ื‘ืœื•ื™ื– ืคึฟืึทืจ ืื™ื™ืŸ ืจื™ื™ (ืœืžืฉืœ, ืคึฟืึทืจ ื˜ืจืึทื ืกืคืขืจื™ื ื’ ืึท ืกืคึผืขืฆื™ืคื™ืฉ ื˜ืขืงืข):

ื”ื˜ื˜ืคึผ ืื™ื‘ืขืจ UDP - ื’ื•ื˜ ื ื•ืฆืŸ ืคื•ืŸ ื“ื™ QUIC ืคึผืจืึธื˜ืึธืงืึธืœ

ื ื•ืฆืŸ

ื˜ื›ื™ืœืขืก, QUIC ืื™ื– ื“ืขื•ื•ืขืœืึธืคึผืขื“ ืื™ืŸ Google ืื•ืŸ ืื™ื– ื’ืขื•ื•ืขืŸ ืœืึทืจื’ืขืœื™ ื˜ื™ื™ืœืขืจื“ ืคึฟืึทืจ ื ื•ืฆืŸ ืื™ืŸ ื“ื™ ืคื™ืจืžืข. ืื™ืŸ 2013, ืขืก ืื™ื– ื’ืขื•ื•ืขืŸ ื˜ืจืึทื ืกืคืขืจื“ ืฆื• ื“ื™ IETF ืคึฟืึทืจ ืกื˜ืึทื ื“ืขืจื“ื™ื–ื™ื™ืฉืึทืŸ (ื•ื•ืึธืก ืื™ื– ื ืึธืš ืึธื ื’ืึธื™ื ื’), ืื•ืŸ ืื™ืฆื˜ ืึทืœืขืžืขืŸ ืงืขื ืขืŸ ืึธื ื˜ื™ื™ืœ ื ืขืžืขืŸ ืื™ืŸ ื“ืขืจ ืึทื ื˜ื•ื•ื™ืงืœื•ื ื’ ืคื•ืŸ ื“ืขื ืคึผืจืึธื˜ืึธืงืึธืœ ื“ื•ืจืš ืคืึธืจืฉืœืึธื’ืŸ ื•ื•ืึธืก ื–ื™ื™ ืคืขืœื ื“ื™ืง. ื“ื™ IETF ืึทืจื‘ืขื˜ ื’ืจื•ืคึผืข ืึธืจื’ืึทื ื™ื–ื™ืจื˜ ื™ืขืจืœืขืš ืžื™ื˜ื™ื ื’ื– ื‘ืขืฉืึทืก ื•ื•ืึธืก ืึท ื ื™ื™ึทืข ื ืึธืจืžืึทืœ ืื™ื– ื‘ืื•ื•ื™ืœื™ืงื˜ ืื•ืŸ ื™ื ืึธื•ื•ื•ื™ื™ืฉืึทื ื– ื–ืขื ืขืŸ ื“ื™ืกืงืึทืกื˜. ื“ื™ ื™ืžืคึผืœืึทืžืขื ื˜ื™ื™ืฉืึทืŸ ืคื•ืŸ QUIC ืื™ื– ื’ืขืจืขื›ื ื˜ ื•ื•ื™ ื“ื™ ื”ื•ื™ืคึผื˜ ืื•ืŸ ืขืก ืื™ื– ื‘ืื–ื™ืจื˜ ืื•ื™ืฃ ื“ื™ HTTP / 3 ื ืึธืจืžืึทืœ ืื™ื– ืกืขืจื˜ืึทืคื™ื™ื“.

ื‘ื™ื– ืื™ืฆื˜, ืขืก ืื™ื– ืงื™ื™ืŸ ืจืขื“ืŸ ื•ื•ืขื’ืŸ ืึทืจื™ื™ึทื ื’ืขืจืขื›ื ื˜ HTTP / 3 ื•ื•ื™ ื“ื™ ื”ื•ื™ืคึผื˜ ืคึผืจืึธื˜ืึธืงืึธืœ, ื•ื•ื™ื™ึทืœ ืขืก ืื™ื– ื ื™ืฉื˜ ืคืึทืจื˜ื™ืง ื ืึธืš ืื•ืŸ ืื™ื– ื›ึผืžืขื˜ ื ื™ืฉื˜ ื’ืขืฉื˜ื™ืฆื˜:

ื”ื˜ื˜ืคึผ ืื™ื‘ืขืจ UDP - ื’ื•ื˜ ื ื•ืฆืŸ ืคื•ืŸ ื“ื™ QUIC ืคึผืจืึธื˜ืึธืงืึธืœ

ืึธื‘ืขืจ QUIC ืงืขื ืขืŸ ื–ื™ื™ืŸ ื™ืžืคึผืœืึทืžืขื ืึทื“ ื•ื•ื™ ืึท ืึทืจื™ื‘ืขืจืคื™ืจืŸ ืฆื•ื•ื™ืฉืŸ ื“ื™ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืื•ืŸ ื“ื™ ืกืขืจื•ื•ืขืจ, ื•ื•ืึธืก ืื™ื– ื”ืฆืœื—ื” ื“ื•ืจื›ื’ืขืงืึธื›ื˜ ื‘ื™ื™ Uber:

Uber ืก ื‘ืึทืžืขืจืงื•ื ื’ ืื•ื™ืฃ ื“ื™ ื”ืงื“ืžื” ืคื•ืŸ QUIC

ืฆื• ื”ืฆืœื—ื” ื™ืžื‘ืขื“ QUIC ืื•ืŸ ืคึฟืึทืจื‘ืขืกืขืจืŸ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืคืึธืจืฉื˜ืขืœื•ื ื’ ืื™ืŸ ื ืขื‘ืขืš ืงืึทื ืขืงื˜ื™ื•ื•ื™ื˜ื™ ื™ื ื•ื•ื™ื™ืจืึทื ืžืึทื ืฅ, ืžื™ืจ ืจื™ืคึผืœื™ื™ืกื˜ ื“ื™ ืึทืœื˜ ืึธื ืœื™ื™ื’ืŸ (HTTP / 2 ืื™ื‘ืขืจ TLS / TCP) ืžื™ื˜ ื“ื™ QUIC ืคึผืจืึธื˜ืึธืงืึธืœ. ืžื™ืจ ื’ืขื•ื•ื™ื™ื ื˜ ื“ื™ ื ืขืฅ ื‘ื™ื‘ืœื™ืึธื˜ืขืง Cronet ืคื•ืŸ ืงืจืึธื•ืžื™ืึทื ืคึผืจืึทื“ื–ืฉืขืงืก, ื•ื•ืึธืก ื›ึผื•ืœืœ ื“ืขืจ ืึธืจื™ื’ื™ื ืขืœ Google ื•ื•ืขืจืกื™ืข ืคื•ืŸ โ€‹โ€‹โ€‹โ€‹ื“ืขื ืคึผืจืึธื˜ืึธืงืึธืœ - gQUIC. ื“ื™ ื™ืžืคึผืœืึทืžืขื ื˜ื™ื™ืฉืึทืŸ ืื™ื– ืื•ื™ืš ืงืขืกื™ื™ื“ืขืจ ื™ืžืคึผืจื•ื•ื•ื“ ืฆื• ื ืึธื›ืคืึธืœื’ืŸ ื“ื™ ืœืขืฆื˜ืข IETF ื‘ืึทืฉืจื™ื™ึทื‘ื•ื ื’.

ืžื™ืจ ืขืจืฉื˜ืขืจ ื™ื ืึทื’ืจื™ื™ื˜ื™ื“ Cronet ืื™ืŸ ืื•ื ื“ื–ืขืจ ืึทื ื“ืจื•ื™ื“ ืึทืคึผืคึผืก ืฆื• ืœื™ื™ื’ืŸ ืฉื˜ื™ืฆืŸ ืคึฟืึทืจ QUIC. ื™ื ื˜ืขื’ืจืึทื˜ื™ืึธืŸ ืื™ื– ื“ื•ืจื›ื’ืขืงืึธื›ื˜ ืื™ืŸ ืึทื–ืึท ืึท ื•ื•ืขื’ ืฆื• ืจืขื“ื•ืฆื™ืจืŸ ื“ื™ ืžื™ื’ืจื™ื™ืฉืึทืŸ ืงืึธืก ื•ื•ื™ ืคื™ืœ ื•ื•ื™ ืžืขื’ืœืขืš. ืึทื ืฉื˜ืึธื˜ ื’ืึธืจ ืจื™ืคึผืœื™ื™ืกื™ื ื’ ื“ื™ ืึทืœื˜ ื ืขื˜ื•ื•ืึธืจืงื™ื ื’ ืึธื ืœื™ื™ื’ืŸ ื•ื•ืึธืก ื’ืขื•ื•ื™ื™ื ื˜ ื“ื™ ื‘ื™ื‘ืœื™ืึธื˜ืขืง OkHttp, ืžื™ืจ ื”ืึธื‘ืŸ ื™ื ืึทื’ืจื™ื™ื˜ื™ื“ Cronet ืื•ื ื˜ืขืจ ื“ื™ OkHttp API ืคืจื™ื™ืžื•ื•ืขืจืง. ื“ื•ืจืš ื“ืขื ื™ื ืึทื’ืจื™ื™ืฉืึทืŸ, ืžื™ืจ ื•ื™ืกืžื™ื™ื“ืŸ ืขื ื“ืขืจื•ื ื’ืขืŸ ืฆื• ืื•ื ื“ื–ืขืจ ื ืขืฅ ืงืึทืœืœืก (ื•ื•ืึธืก ื–ืขื ืขืŸ ื’ืขื ื™ืฆื˜ ื“ื•ืจืš ืจืขื˜ืจืึธืคื™ื˜) ืื•ื™ืฃ ื“ื™ ืึทืคึผื™ ืžื“ืจื’ื”.

ืขื ืœืขืš ืฆื• ื“ืขืจ ืฆื•ื’ืึทื ื’ ืคึฟืึทืจ ืึทื ื“ืจื•ื™ื“ ื“ืขื•ื•ื™ืกืขืก, ืžื™ืจ ื™ืžืคึผืœืึทืžืขื ืึทื“ Cronet ืื™ืŸ Uber ืึทืคึผืคึผืก ืื•ื™ืฃ ื™ืึธืก, ื™ื ื˜ืขืจืกืขืคึผื˜ื™ื ื’ ื”ื˜ื˜ืคึผ ืคืึทืจืงืขืจ ืคื•ืŸ ื ืขืฅ ืึทืคึผื™ื ื™ืฆืŸ NSURL ืคึผืจืึธื˜ืึธืงืึธืœ. ื“ื™ ืึทื‘ืกื˜ืจืึทืงืฆื™ืข, ืฆื•ื’ืขืฉื˜ืขืœื˜ ื“ื•ืจืš ื“ื™ ื™ืึธืก ื•ื•ื™ืงื™ืคึผืขื“ื™ืข, ื›ืึทื ื“ืึทืœื– ืคึผืจืึธื˜ืึธืงืึธืœ-ืกืคึผืขืฆื™ืคื™ืฉ URL ื“ืึทื˜ืŸ ืื•ืŸ ื™ื ืฉื•ืจื– ืึทื– ืžื™ืจ ืงืขื ืขืŸ ื•ื™ืกืฉื˜ื™ืžืขืŸ Cronet ืื™ืŸ ืื•ื ื“ื–ืขืจ ื™ืึธืก ืึทืคึผืœืึทืงื™ื™ืฉืึทื ื– ืึธืŸ ื‘ืึทื˜ื™ื™ื˜ื™ืง ืžื™ื’ืจืึทื˜ื™ืึธืŸ ืงืึธืก.

ื’ืขื ื•ืžืขืŸ ืคื•ืŸ ื“ื™ ืื™ื‘ืขืจื–ืขืฆื•ื ื’ Uber ืึทืจื˜ื™ืงืœืขืŸ

ืื•ื™ืฃ ื“ื™ ื‘ืึทืงืขื ื“ ื–ื™ื™ ื’ืขื›ืืคื˜ QUIC ืงืึทื ืขืงืฉืึทื ื– ื“ื•ืจืš Google ืงืœืึธื•ื“ ืœื‘, ื•ื•ืึธืก ืฉื˜ื™ืฆื˜ ืคึผืจืึธื˜ืึธืงืึธืœ ื–ื™ื ื˜ ืžื™ื˜ืŸ 2018.

ืขืก ืื™ื– ืงื™ื™ืŸ ื™ื‘ืขืจืจืึทืฉืŸ ืึทื– Google ืงืœืึธื•ื“ ืึทืจื‘ืขื˜ ื’ืจื•ื™ืก ืžื™ื˜ ื“ื™ Google-ื“ืขื•ื•ืขืœืึธืคึผืขื“ ืคึผืจืึธื˜ืึธืงืึธืœ, ืึธื‘ืขืจ ื•ื•ืึธืก ื–ืขื ืขืŸ ื“ื™ ืึทืœื˜ืขืจื ืึทื˜ื™ื•ื•ืขืก?

ื ื’ื™ื ืงืก

ื ื™ื˜ ืœืึทื ื’ ืฆื•ืจื™ืง CloudFlare ื›ืณื”ืื‘ ื’ืขืคืจื•ืืฐื˜ ืืจื™ื‘ืขืจ nginx (ื•ื•ืึธืก ื˜ื•ื˜ ื ื™ืฉื˜ ืฉื˜ื™ืฆืŸ ื”ื˜ื˜ืคึผ / 3 ื“ื•ืจืš ืคืขืœื™ืงื™ื™ึทื˜) ืžื™ื˜ ื–ื™ื™ืŸ ืงื•ื•ื™ื˜ืฉืข ื’ืขืฆื™ื™ึทื’. ื“ื™ ื™ืžืคึผืœืึทืžืขื ื˜ื™ื™ืฉืึทืŸ ืื™ื– ื‘ื ื™ืžืฆื ื•ื•ื™ ืึท ืื™ื™ืŸ. ืคึผืึทื˜ืฉ ื˜ืขืงืข, ื•ื•ืึธืก ืงื•ืžื˜ ืžื™ื˜ ืึทืŸ ื™ื™ึทื ืžืึธื ื˜ื™ืจื•ื ื’ ื˜ื•ื˜ืึธืจื™ืึทืœ:

curl -O https://nginx.org/download/nginx-1.16.1.tar.gz
tar xvzf nginx-1.16.1.tar.gz
git clone --recursive https://github.com/cloudflare/quiche
cd nginx-1.16.1
patch -p01 < ../quiche/extras/nginx/nginx-1.16.patch

ื“ืึธ ืื™ืจ ืงืขื ืขืŸ ืคืึทืจื‘ื™ื ื“ืŸ ื“ื™ื™ืŸ ืžืึทื“ื–ืฉื•ืœื– ืื•ื™ื‘ ื ื™ื™ื˜ื™ืง

./configure                          	
   	--prefix=$PWD                       	
   	--with-http_ssl_module              	
   	--with-http_v2_module               	
   	--with-http_v3_module               	
   	--with-openssl=../quiche/deps/boringssl 
   	--with-quiche=../quiche
 make

ืึทืœืข ื•ื•ืึธืก ื‘ืœื™ื™ื‘ื˜ ืื™ื– ืฆื• ื’ืขื‘ืŸ HTTP / 3 ืฉื˜ื™ืฆืŸ

events {
    worker_connections  1024;
}

http {
    server {
        # Enable QUIC and HTTP/3.
        listen 443 quic reuseport;

        # Enable HTTP/2 (optional).
        listen 443 ssl http2;

        ssl_certificate      cert.crt;
        ssl_certificate_key  cert.key;

        # Enable all TLS versions (TLSv1.3 is required for QUIC).
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;

        # Request buffering in not currently supported for HTTP/3.
        proxy_request_buffering off;

        # Add Alt-Svc header to negotiate HTTP/3.
        add_header alt-svc 'h3-27=":443"; ma=86400';
    }
}

ืขืก ืื™ื– ื ืึธืš ื ื™ื˜ ืžืขื’ืœืขืš ืฆื• ืคืึทืจื‘ื™ื ื“ืŸ ื“ื•ืจืš ื”ื˜ื˜ืคึผ / 3 ืื™ืŸ ืจืขื’ื•ืœืขืจ ื‘ืจืึทื•ื–ืขืจื–, ืึธื‘ืขืจ ืื™ืจ ืงืขื ืขืŸ ื ื•ืฆืŸ ืงืจืึธื•ื ืงืึทื ืึทืจื™ืง ืื•ืŸ ืœื•ื™ืคืŸ ืขืก ืžื™ื˜ ื“ื™ ืคืึธืŸ --enable-quic, ื’ื™ื™ืŸ ืฆื• ื“ื™ื™ืŸ ืกืขืจื•ื•ืขืจ ืึธื“ืขืจ, ืคึฟืึทืจ ื‘ื™ื™ึทืฉืคึผื™ืœ, ื“ื™ quic.rocks ืคึผืœืึทืฅ ืื•ืŸ ืงื•ืง ืื™ืŸ ื“ื™ ืงืฉืจ ื˜ื™ืคึผ ืื™ืŸ ื“ืขื•ื•ืขืœืึธืคึผืขืจ ืžื›ืฉื™ืจื™ื:
ื”ื˜ื˜ืคึผ ืื™ื‘ืขืจ UDP - ื’ื•ื˜ ื ื•ืฆืŸ ืคื•ืŸ ื“ื™ QUIC ืคึผืจืึธื˜ืึธืงืึธืœ
ืึทื ืฉื˜ืึธื˜ ื”ื˜ื˜ืคึผ / 3 ืขืก ืื™ื– ื’ืขืฉืจื™ื‘ืŸ http2+quic/99, ืึธื‘ืขืจ ืขืก ืก ื™ืกืขื ืฉืึทืœื™ ื“ื™ ื–ืขืœื‘ืข ื–ืึทืš.

ืื ื“ืขืจืข ื˜ืขืงื ืึทืœืึทื“ื–ืฉื™ื–

  • QUIC ืื•ื™ืš ืฉื˜ื™ืฆืŸ LiteSpeed (ื•ื•ืึธืก ืงืึธื ื ืขืงื˜ืขื“ ืฆื• ืคืึทืกืขื‘ืึธืึธืง ื“ื•ืจืš ื”ื˜ื˜ืคึผ / 3 ืžื™ื˜ ื’ืจื•ื™ืก ืคืึทื ืคืขืจ) ืื•ืŸ ืคึผืจืึธื’ืจืขืกื™ื•ื• ืงืึทื“ื™. ืึทืคึผืึทื˜ืฉื™ ืงืขื ืขืŸ ื ื™ืฉื˜ ื˜ืึธืŸ ื“ืึธืก ื ืึธืš, ืึธื‘ืขืจ ืึทืจื‘ืขื˜ ืื™ื– ืึทื ื“ืขืจื•ื•ื™ื™ ืคื•ืœ ืกื•ื•ื™ื ื’.
  • 21 ื™ืื ื•ืืจ ื“ืขืจื”ื™ื™ึทื ื˜ื™ืงื˜ ืคึผืœืึทืŸ ื ืึธืจืžืึทืœ ืคึฟืึทืจ WebRTC
  • ืคึผื•ื ืงื˜ ื“ื™ ืื ื“ืขืจืข ื˜ืึธื’ ืžื™ื™ืงืจืึธืกืึธืคึฟื˜ ื’ืขืขืคื ื˜ msquic ื™ืžืคึผืœืึทืžืขื ื˜ื™ื™ืฉืึทืŸ ืงืึธื“, ืื™ืŸ ื•ื•ืึธืก ื ื™ื˜ ืึทืœืข ืคืึทื ื’ืงืฉืึทื ื– ืคื•ืŸ ื“ื™ IETF ื ืึธืจืžืึทืœ ื–ืขื ืขืŸ ื ืึธืš ื‘ื ื™ืžืฆื, ืึธื‘ืขืจ ื“ืึธืก ืื™ื– ืฉื•ื™ืŸ ืึท ื’ืจื•ื™ืก ื‘ืจื™ื™ืงื˜ืจื•.

ืกืึธืฃ

ื”ื˜ื˜ืคึผ ืื™ื‘ืขืจ UDP - ื’ื•ื˜ ื ื•ืฆืŸ ืคื•ืŸ ื“ื™ QUIC ืคึผืจืึธื˜ืึธืงืึธืœ

ืื™ื ื˜ืขืจืขืก ืื™ืŸ QUIC ืื™ื– ืึทื ืกื˜ื™ื™ื‘ืึทืœ, ืึธื‘ืขืจ ื’ืจืึธื•ื™ื ื’, ืื•ืŸ ืึทืจื‘ืขื˜ ืื™ื– ืึทื ื“ืขืจื•ื•ื™ื™ ืฆื• ืกื˜ืึทื ื“ืขืจื“ื™ื™ื– ืขืก. ื ื™ื• ื™ืžืคึผืœืึทืžืึทื ืฅ ืคื•ืŸ ื“ืขื ืคึผืจืึธื˜ืึธืงืึธืœ ื“ืขืจืฉื™ื™ึทื ืขืŸ ื›ึผืžืขื˜ ื™ืขื“ืขืจ ื—ื•ื“ืฉ, ืื•ืŸ ื™ืขื“ืขืจ ื™ืึธืจ ืžืขืจ ืื•ืŸ ืžืขืจ ื“ืขื•ื•ืขืœืึธืคึผืขืจืก ื–ืขื ืขืŸ ืงืึทื ื•ื•ื™ื ืกื˜ ืึทื– QUIC ืื™ื– ื“ื™ ืฆื•ืงื•ื ืคึฟื˜. ืขืก ืื™ื– ืืคื™ืœื• ืžืขื’ืœืขืš ืฆื• ืึทืจื™ื™ึทื ื ืขืžืขืŸ ื“ืขื ืคึผืจืึธื˜ืึธืงืึธืœ ืื™ืŸ ืฆื•ืงื•ื ืคึฟื˜ ื•ื•ืขืจืกื™ืขืก ืคื•ืŸ ื“ื™ TCP ืึธื ืœื™ื™ื’ืŸ, ื•ื•ืึธืก ืžื™ื˜ืœ ืึทื– ื’ื™ื›ืขืจ ืึธื“ืขืจ ืฉืคึผืขื˜ืขืจ ื“ื™ ื’ืื ืฆืข ืื™ื ื˜ืขืจื ืขื˜ ื•ื•ืขื˜ ืžืึทืš ืฆื• ืžืขืจ ืกื˜ืึทื‘ื™ืœ ืื•ืŸ ืคืึทืกื˜ืขืจ ืงืึทื ืขืงืฉืึทื ื–.

ืฉื•ื™ืŸ ืื™ืฆื˜ ืื™ืจ ืงืขื ืขืŸ ืงืึทื ืคื™ื’ื™ืขืจ QUIC ื™ื ื˜ืขืจืึทืงืฉืึทืŸ ืคึฟืึทืจ ื“ื™ื™ืŸ ื™ื ืคืจืึทืกื˜ืจืึทืงื˜ืฉืขืจ ืึธื“ืขืจ ืืคื™ืœื• ื’ืขื‘ืŸ ืขืก ืฆื• ื‘ืจืึทื•ื–ืขืจื– - ื–ื™ื™ ื–ืขื ืขืŸ ืึทืœืข ืคึผืœืึทื ื™ืจื•ื ื’ ืฆื• ืœื™ื™ื’ืŸ ืฉื˜ื™ืฆืŸ ืคึฟืึทืจ ื“ืขื ืคึผืจืึธื˜ืึธืงืึธืœ, ืื•ืŸ ื“ื™ ื˜ืจื•ื™ืขืจื™ืง ืกื˜ืึทื˜ื™ืกื˜ื™ืง ืžื™ื˜ ืงืึทื ื™ื•ืก ื•ื•ืขื˜ ื•ื•ืขืจืŸ ืžืขืจ ืคืจื™ื™ืœืขืš.

ื”ื˜ื˜ืคึผ ืื™ื‘ืขืจ UDP - ื’ื•ื˜ ื ื•ืฆืŸ ืคื•ืŸ ื“ื™ QUIC ืคึผืจืึธื˜ืึธืงืึธืœ

ืžืงื•ืจ: www.habr.com

ืœื™ื™ื’ืŸ ืึท ื‘ืึทืžืขืจืงื•ื ื’