Netflix เป„เบ”เป‰เป€เบœเบตเบเปเบœเปˆเบเบฒเบ™เบˆเบฑเบ”เบ•เบฑเป‰เบ‡เบ›เบฐเบ•เบดเบšเบฑเบ” TLS เบชเปเบฒเบฅเบฑเบšเปเบเปˆเบ™ FreeBSD

เบšเปเบฅเบดเบชเบฑเบ” Netflix เปเบ™เบฐเบ™เปเบฒ เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบเบฒเบ™โ€‹เบ—เบปเบ”โ€‹เบชเบญเบšโ€‹เบเบฒเบ™โ€‹เบ›เบฐโ€‹เบ•เบดโ€‹เบšเบฑเบ”โ€‹เบฅเบฐโ€‹เบ”เบฑเบš kernel FreeBSD เบ‚เบญเบ‡ TLS (KTLSโ€‹)โ€‹, เป€เบŠเบดเปˆเบ‡โ€‹เบญเบฐโ€‹เบ™เบธโ€‹เบเบฒเบ”โ€‹เปƒเบซเป‰โ€‹เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบเบฒเบ™โ€‹เป€เบžเบตเปˆเบกโ€‹เบ‚เบถเป‰เบ™โ€‹เบขเปˆเบฒเบ‡โ€‹เบซเบผเบงเบ‡โ€‹เบซเบผเบฒเบโ€‹เปƒเบ™โ€‹เบเบฒเบ™โ€‹เบ›เบฐโ€‹เบ•เบดโ€‹เบšเบฑเบ”โ€‹เบเบฒเบ™โ€‹เป€เบ‚เบปเป‰เบฒโ€‹เบฅเบฐโ€‹เบซเบฑเบ”โ€‹เบชเปเบฒโ€‹เบฅเบฑเบš socket TCPโ€‹. เบฎเบญเบ‡เบฎเบฑเบšเบเบฒเบ™เป€เบฅเบฑเปˆเบ‡เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เบ‚เบญเบ‡เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบ–เบทเบเบชเบปเปˆเบ‡เบœเปˆเบฒเบ™เป‚เบ”เบเปƒเบŠเป‰เป‚เบ›เป‚เบ•เบ„เบญเบ™ TLS 1.0 เปเบฅเบฐ 1.2 เบ—เบตเปˆเบ–เบทเบเบชเบปเปˆเบ‡เป„เบ›เบซเบฒเป€เบ•เบปเป‰เบฒเบฎเบฑเบšเป‚เบ”เบเปƒเบŠเป‰เบŸเบฑเบ‡เบŠเบฑเบ™ write, aio_write เปเบฅเบฐ sendfile.

เบเบฒเบ™เปเบฅเบเบ›เปˆเบฝเบ™เบฅเบฐเบซเบฑเบ” Kernel เบšเปเปˆเป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เปเบฅเบฐเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบ—เปเบฒเบญเบดเบ”เบ•เป‰เบญเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบชเป‰เบฒเบ‡เบ•เบฑเป‰เบ‡เบ‚เบถเป‰เบ™เปเบฅเบฐเป€เบˆเบฅเบฐเบˆเบฒเปƒเบ™เบžเบทเป‰เบ™เบ—เบตเปˆเบœเบนเป‰เปƒเบŠเป‰. เป€เบžเบทเปˆเบญเป‚เบญเบ™เป„เบ›เบซเบฒ kernel เบฅเบฐเบซเบฑเบ”เป€เบŠเบ”เบŠเบฑเบ™เบ—เบตเปˆเป„เบ”เป‰เบฎเบฑเบšเปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เป€เบˆเบฅเบฐเบˆเบฒเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบชเปเบฒเบฅเบฑเบšเบŠเบฑเบญเบเป€เบเบฑเบ”, เบ—เบฒเบ‡เป€เบฅเบทเบญเบ TCP_TXTLS_ENABLE เป„เบ”เป‰เบ–เบทเบเป€เบžเบตเปˆเบก, เบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เป€เบ›เบตเบ”เปƒเบŠเป‰, เบ‚เปเป‰เบกเบนเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เบ—เบตเปˆเบ–เบทเบเบชเบปเปˆเบ‡เป„เบ›เบซเบฒเป€เบ•เบปเป‰เบฒเบฎเบฑเบšเบˆเบฐเบ–เบทเบเบซเบธเป‰เบกเป„เบงเป‰เปƒเบ™เบเบญเบš TLS เป‚เบ”เบเปƒเบŠเป‰เบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเบฅเบฐเบšเบธ. เป€เบžเบทเปˆเบญเบชเบปเปˆเบ‡เบ‚เปเป‰เบ„เบงเบฒเบกเบšเปเบฅเบดเบเบฒเบ™, เบ•เบปเบงเบขเปˆเบฒเบ‡เป€เบžเบทเปˆเบญเป€เบˆเบฅเบฐเบˆเบฒเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ, เบ—เปˆเบฒเบ™เบ„เบงเบ™เปƒเบŠเป‰เบŸเบฑเบ‡เบŠเบฑเบ™ sendmsg เบเบฑเบšเบ›เบฐเป€เบžเบ”เบšเบฑเบ™เบ—เบถเบ TLS_SET_RECORD_TYPE.

เบชเบญเบ‡เบงเบดเบ—เบตเบซเบผเบฑเบเบ‚เบญเบ‡เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เป€เบŸเบฃเบก TLS เปเบกเปˆเบ™เบฎเบญเบ‡เบฎเบฑเบš: เบŠเบญเบšเปเบง เปเบฅเบฐ ifnet (เปƒเบŠเป‰เบเบฒเบ™เป€เบฅเบฑเปˆเบ‡เบฎเบฒเบ”เปเบงเบ‚เบญเบ‡เบšเบฑเบ”เป€เบ„เบทเบญเบ‚เปˆเบฒเบ). เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ‚เบญเบ‡เบงเบดเบ—เบตเบเบฒเบ™เปเบกเปˆเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เป‚เบ”เบเปƒเบŠเป‰
เบ•เบปเบงเป€เบฅเบทเบญเบเป€เบ•เบปเป‰เบฒเบฎเบฑเบš TCP_TXTLS_MODE. เบงเบดเบ—เบตเบเบฒเบ™เบŠเบญเบšเปเบงเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ backends เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”. เป€เบ›เบฑเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡, backend ktls_ocf.ko เบ—เบตเปˆเบกเบตเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™ AES-GCM, เบ›เบฐเบ•เบดเบšเบฑเบ”เป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆเบเบญเบš OpenCrypto, เป„เบ”เป‰เบ–เบทเบเบˆเบฑเบ”เบžเบตเบกเบกเบฒ. sysctls เบซเบผเบฒเบเป†เบญเบฑเบ™เบ–เบทเบเบชเบฐเป€เปœเบตเปƒเบซเป‰เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบˆเบฑเบ”เบเบฒเบ™เบžเบฒเบเปƒเบ™เบชเบฒเบ‚เบฒ kern.ipc.tls.*. เป€เบกเบทเปˆเบญเบชเป‰เบฒเบ‡ kernel, เบฎเบญเบ‡เบฎเบฑเบš TLS เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบเปƒเบŠเป‰เบ•เบปเบงเป€เบฅเบทเบญเบ KERN_TLS.

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: opennet.ru