← Cloudflare SSL/TLS / ssl / keyless-ssl / reference
Škálování a benchmarking
Technologie Cloudflare Keyless SSL byla navržena tak, aby se škálovala pro libovolně velkou zátěž pomocí vertikálního i horizontálního škálování a technik předpočítávání tam, kde je to možné, například u ECDSA. Cílem architektonického návrhu key serveru je minimalizovat latenci a zároveň maximalizovat počet podepisovacích operací za sekundu.
Každý key server používá model fondu workerů, kde příchozí klientská připojení obsluhuje vlastní dvojice goroutin reader/writer a kryptografické operace probíhají v samostatných worker goroutinách čerpaných z globálního fondu.
Podle potřeby lze nasadit více key serverů a rozložit mezi ně zátěž pomocí preferované konfigurace ingress load balancingu. Pro plnou vysokou dostupnost nasaďte dostatek key serverů, aby zvládly dvojnásobek očekávané zátěže.
Typ klíče
Servery klíčů podporují klíče ECDSA i RSA, podpisy pro RSA jsou však o řád dražší ↗ na výpočet, a proto při plánování počtu key serverů ve vašem nasazení zohledněte typ použitých klíčů.
Podepisování ECDSA lze rozdělit na dva kroky. Protože první krok, generování náhodných hodnot (které se později použijí spolu se soukromým klíčem a podepisovanou zprávou), představuje většinu výpočetních nákladů, tyto náhodné hodnoty předgenerujeme, abychom výrazně snížili latenci. Požadavky na podepisování ECDSA jsou výpočetně izolované od požadavků na podepisování RSA pomocí oddělených fondů workerů, aby zůstaly co nejrychlejší.
Další podrobnosti najdete v soubor README serveru gokeyless ↗ .
Benchmarky
Provedli jsme srovnávací testy pomocí Nástroj gokeyless bench od Cloudflare ↗ na tehdy aktuální generaci výpočetně optimalizované instance EC2 (c5.xlarge ↗). Tato konkrétní instance má 4 vCPU s procesory Intel Xeon 3.0 GHz:
c5$ cat /proc/cpuinfo|grep "model name"
model name : Intel(R) Xeon(R) Platinum 8124M CPU @ 3.00GHz
model name : Intel(R) Xeon(R) Platinum 8124M CPU @ 3.00GHz
model name : Intel(R) Xeon(R) Platinum 8124M CPU @ 3.00GHz
model name : Intel(R) Xeon(R) Platinum 8124M CPU @ 3.00GHzVe výchozím nastavení nástroj bench používá jednu worker goroutine na jádro (4) a maximální počet vláken operačního systému odpovídající celkovému počtu jader (v tomto případě GOMAXPROCS=4). Jak se dalo očekávat a jak je popsáno výše, výkon podpisu ECDSA daleko převyšuje výkon RSA. Tento výsledky ukazují že každé jádro tohoto stroje c5.xl zvládne přes 10,000 operací podepisování ECDSA za sekundu a přibližně 200 operací podepisování RSA za sekundu.
Při plánování nasazení určete maximální počet nových TLS připojení za sekundu, která očekáváte ukončovat na daném key serveru, a podle toho nastavte odpovídající škálování. Pro plnou vysokou dostupnost by mělo být každé datové centrum provozující Keyless schopné zvládnout celou očekávanou zátěž.
Výsledky
ECDSA
c5$ bench -ski $ECDSA_SKI -op ECDSA-SHA256 -bandwidth -duration 60s
Total operations completed: 2661570
Average operation duration: 22.543µsRSA
c5$ bench -ski $RSA_SKI -op RSA-SHA256 -bandwidth -duration 60s
Total operations completed: 46560
Average operation duration: 1.288659ms.