เป€เบ„เบทเบญเบ‚เปˆเบฒเบเบ—เบตเปˆเบ›เบดเปˆเบ™เบ›เบปเบงเบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡: เบ„เบงเบฒเบกเบกเบฐเบซเบฑเบ”เบชเบฐเบˆเบฑเบ™เบ‚เบญเบ‡ Flow Label เปเบฅเบฐเบ™เบฑเบเบชเบทเบšเบ—เบตเปˆเบขเบนเปˆเบญเป‰เบญเบกเบฎเบญเบš Linux kernel. เบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™ Yandex

เบชเบนเบ™เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบ—เบฑเบ™เบชเบฐเป„เบซเบกเบกเบตเบซเบผเบฒเบเบฎเป‰เบญเบเบญเบธเบ›เบฐเบเบญเบ™เบ—เบตเปˆเบกเบตเบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เป„เบซเบงเบ—เบตเปˆเบเบงเบกเป€เบญเบปเบฒเป‚เบ”เบเบ›เบฐเป€เบžเบ”เบ•เปˆเบฒเบ‡เป†เบ‚เบญเบ‡เบเบฒเบ™เบ•เบดเบ”เบ•เบฒเบก. เปเบ•เปˆเป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบงเบดเบชเบฐเบงเบฐเบเบญเบ™เบ—เบตเปˆเบชเบปเบกเบšเบนเบ™เปเบšเบšเบ—เบตเปˆเบกเบตเบเบฒเบ™เบเบงเบ”เบชเบญเบšเบ—เบตเปˆเบชเบปเบกเบšเบนเบ™เปเบšเบšเบขเบนเปˆเปƒเบ™เบกเบทเบˆเบฐเบชเบฒเบกเบฒเบ”เบ•เบญเบšเบชเบฐเบซเบ™เบญเบ‡เบ„เบงเบฒเบกเบฅเบปเป‰เบกเป€เบซเบผเบงเบ‚เบญเบ‡เป€เบ„เบทเบญเบ‚เปˆเบฒเบเบขเปˆเบฒเบ‡เบ–เบทเบเบ•เป‰เบญเบ‡เปƒเบ™เป€เบงเบฅเบฒเบžเบฝเบ‡เปเบ•เปˆเบชเบญเบ‡เบชเบฒเบกเบ™เบฒเบ—เบต. เปƒเบ™เบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™เปƒเบ™เบเบญเบ‡เบ›เบฐเบŠเบธเบก Next Hop 2020, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบ™เปเบฒเบชเบฐเป€เบซเบ™เบตเบงเบดเบ—เบตเบเบฒเบ™เบญเบญเบเปเบšเบšเป€เบ„เบทเบญเบ‚เปˆเบฒเบเบชเบนเบ™เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบกเบตเบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เบ—เบตเปˆเป€เบ›เบฑเบ™เป€เบญเบเบฐเบฅเบฑเบ - data center heals itself in milliseconds . เบซเบผเบฒเบเบ—เบตเปˆเบŠเบฑเบ”เป€เบˆเบ™, เบงเบดเบชเบฐเบงเบฐเบเบญเบ™เปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเบขเปˆเบฒเบ‡เบชเบฐเบซเบ‡เบปเบš, เปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบžเบฝเบ‡เปเบ•เปˆเบšเปเปˆเบชเบฑเบ‡เป€เบเบ”เป€เบซเบฑเบ™เบกเบฑเบ™.

- เป€เบžเบทเปˆเบญเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ”เป‰เบงเบ, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบˆเบฐเปƒเบซเป‰เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบขเปˆเบฒเบ‡เบฅเบฐเบญเบฝเบ”เบชเปเบฒเบฅเบฑเบšเบœเบนเป‰เบ—เบตเปˆ, เบšเบฒเบ‡เบ—เบต, เบšเปเปˆเบฎเบนเป‰เบเปˆเบฝเบงเบเบฑเบšเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ‚เบญเบ‡ DC เบ—เบตเปˆเบ—เบฑเบ™เบชเบฐเป„เบซเบก.
เป€เบ„เบทเบญเบ‚เปˆเบฒเบเบ—เบตเปˆเบ›เบดเปˆเบ™เบ›เบปเบงเบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡: เบ„เบงเบฒเบกเบกเบฐเบซเบฑเบ”เบชเบฐเบˆเบฑเบ™เบ‚เบญเบ‡ Flow Label เปเบฅเบฐเบ™เบฑเบเบชเบทเบšเบ—เบตเปˆเบขเบนเปˆเบญเป‰เบญเบกเบฎเบญเบš Linux kernel. เบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™ Yandex

เบชเปเบฒเบฅเบฑเบšเบงเบดเบชเบฐเบงเบฐเบเบญเบ™เป€เบ„เบทเบญเบ‚เปˆเบฒเบเบˆเปเบฒเบ™เบงเบ™เบซเบผเบฒเบ, เป€เบ„เบทเบญเบ‚เปˆเบฒเบเบชเบนเบ™เบ‚เปเป‰เบกเบนเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, เปเบ™เปˆเบ™เบญเบ™, เบ”เป‰เบงเบ ToR, เบ”เป‰เบงเบเบ›เบธเปˆเบกเบชเบฐเบซเบผเบฑเบšเปƒเบ™ rack. ToR เบ›เบปเบเบเบฐเบ•เบดเปเบฅเป‰เบงเบกเบตเบชเบญเบ‡เบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ. เป€เบ”เบฑเบเบ™เป‰เบญเบเป„เบ›เบซเบฒเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ, เบ„เบปเบ™เบญเบทเปˆเบ™ - เบกเบต N เบซเบผเบฒเบเบเบงเปˆเบฒเบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒ - เป„เบ›เบซเบฒเบเบฐเบ”เบนเบเบชเบฑเบ™เบซเบผเบฑเบ‡เบฅเบฐเบ”เบฑเบšเบ—เปเบฒเบญเบดเบ”, เบ™เบฑเป‰เบ™เปเบกเปˆเบ™, เป€เบ–เบดเบ‡เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบ‚เบญเบ‡เบกเบฑเบ™. เบ›เบปเบเบเบฐเบ•เบดเปเบฅเป‰เบง Uplinks เปเบกเปˆเบ™เบ–เบทเบงเปˆเบฒเป€เบ—เบปเปˆเบฒเบ—เบฝเบกเบเบฑเบ™, เปเบฅเบฐเบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡ uplinks เปเบกเปˆเบ™เบกเบตเบ„เบงเบฒเบกเบชเบปเบกเบ”เบนเบ™เป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆ hash 5-tuple, เป€เบŠเบดเปˆเบ‡เบ›เบฐเบเบญเบšเบกเบต proto, src_ip, dst_ip, src_port, dst_port. เบšเปเปˆเบกเบตเบ„เบงเบฒเบกเปเบ›เบเปƒเบˆเบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰.
เป€เบ„เบทเบญเบ‚เปˆเบฒเบเบ—เบตเปˆเบ›เบดเปˆเบ™เบ›เบปเบงเบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡: เบ„เบงเบฒเบกเบกเบฐเบซเบฑเบ”เบชเบฐเบˆเบฑเบ™เบ‚เบญเบ‡ Flow Label เปเบฅเบฐเบ™เบฑเบเบชเบทเบšเบ—เบตเปˆเบขเบนเปˆเบญเป‰เบญเบกเบฎเบญเบš Linux kernel. เบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™ Yandex

เบ•เปเปˆเป„เบ›, เบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒเบ‚เบญเบ‡เบเบปเบ™เบกเบตเบฅเบฑเบเบชเบฐเบ™เบฐเปเบ™เบงเปƒเบ”? เบเบฐเบ”เบนเบเบชเบฑเบ™เบซเบผเบฑเบ‡เบ‚เบญเบ‡เบฅเบฐเบ”เบฑเบšเบ—เปเบฒเบญเบดเบ”เบšเปเปˆเป„เบ”เป‰เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเบฑเบ™, เปเบ•เปˆเบ–เบทเบเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเป‚เบ”เบ superspins. เบ•เบปเบงเบญเบฑเบเบชเบญเบ™ X เบˆเบฐเบฎเบฑเบšเบœเบดเบ”เบŠเบญเบšเบ•เปเปˆ superspins, เบกเบฑเบ™เป€เบเบทเบญเบšเบ„เบทเบเบฑเบšเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบ‚เป‰เบฒเบก.
เป€เบ„เบทเบญเบ‚เปˆเบฒเบเบ—เบตเปˆเบ›เบดเปˆเบ™เบ›เบปเบงเบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡: เบ„เบงเบฒเบกเบกเบฐเบซเบฑเบ”เบชเบฐเบˆเบฑเบ™เบ‚เบญเบ‡ Flow Label เปเบฅเบฐเบ™เบฑเบเบชเบทเบšเบ—เบตเปˆเบขเบนเปˆเบญเป‰เบญเบกเบฎเบญเบš Linux kernel. เบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™ Yandex

เปเบฅเบฐเบกเบฑเบ™เป€เบ›เบฑเบ™เบ—เบตเปˆเบŠเบฑเบ”เป€เบˆเบ™เบงเปˆเบฒ, เปƒเบ™เบ—เบฒเบ‡เบเบปเบ‡เบเบฑเบ™เบ‚เป‰เบฒเบก, tori เปเบกเปˆเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเบฑเบšเบเบฐเบ”เบนเบเบชเบฑเบ™เบซเบผเบฑเบ‡เบ—เบฑเบ‡เบซเบกเบปเบ”เบ‚เบญเบ‡เบฅเบฐเบ”เบฑเบšเบ—เปเบฒเบญเบดเบ”. เปเบกเปˆเบ™เบซเบเบฑเบ‡เบชเบณเบ„เบฑเบ™เบขเบนเปˆเปƒเบ™เบฎเบนเบšเบ™เบตเป‰? เบ–เป‰เบฒเบžเบงเบเป€เบฎเบปเบฒเบกเบตเบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบšเบžเบฒเบเปƒเบ™ rack, เปเบ™เปˆเบ™เบญเบ™, เบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบšเปเบกเปˆเบ™เบœเปˆเบฒเบ™ ToR. เบ–เป‰เบฒเบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบšเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เป‚เบกเบ”เบนเบ™, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบšเบˆเบฐเบœเปˆเบฒเบ™เบเบฐเบ”เบนเบเบชเบฑเบ™เบซเบผเบฑเบ‡เบ‚เบญเบ‡เบฅเบฐเบ”เบฑเบšเบ—เปเบฒเบญเบดเบ”. เบ–เป‰เบฒเบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบšเปเบกเปˆเบ™ intermodular - เบ”เบฑเปˆเบ‡เบ—เบตเปˆเบ™เบตเป‰, ToR 1 เปเบฅเบฐ ToR 2 - เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบšเบˆเบฐเบœเปˆเบฒเบ™เบเบฐเบ”เบนเบเบชเบฑเบ™เบซเบผเบฑเบ‡เบ‚เบญเบ‡เบ—เบฑเบ‡เบชเบญเบ‡เบฅเบฐเบ”เบฑเบšเบ—เปเบฒเบญเบดเบ”เปเบฅเบฐเบ—เบตเบชเบญเบ‡.
เป€เบ„เบทเบญเบ‚เปˆเบฒเบเบ—เบตเปˆเบ›เบดเปˆเบ™เบ›เบปเบงเบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡: เบ„เบงเบฒเบกเบกเบฐเบซเบฑเบ”เบชเบฐเบˆเบฑเบ™เบ‚เบญเบ‡ Flow Label เปเบฅเบฐเบ™เบฑเบเบชเบทเบšเบ—เบตเปˆเบขเบนเปˆเบญเป‰เบญเบกเบฎเบญเบš Linux kernel. เบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™ Yandex

เปƒเบ™เบ—เบฒเบ‡เบ—เบดเบ”เบชเบฐเบ”เบต, เบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒเบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเบชเบฒเบกเบฒเบ”เบ‚เบฐเบซเบเบฒเบเป„เบ”เป‰เบ‡เปˆเบฒเบ. เบ–เป‰เบฒเบžเบงเบเป€เบฎเบปเบฒเบกเบตเบ„เบงเบฒเบกเบญเบฒเบ”เบชเบฒเบกเบฒเบ”เบ‚เบญเบ‡เบ—เปˆเบฒเป€เบฎเบทเบญ, เบชเบฐเบซเบ‡เบงเบ™เบžเบทเป‰เบ™เบ—เบตเปˆเบขเบนเปˆเปƒเบ™เบชเบนเบ™เบ‚เปเป‰เบกเบนเบ™เปเบฅเบฐเป€เบชเบฑเป‰เบ™เป„เบเบ—เบตเปˆเบงเบฒเบ‡เป„เบงเป‰เบเปˆเบญเบ™, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เบˆเปเบฒเบ™เบงเบ™เบเบปเบ™เบชเบฒเบกเบฒเบ”เป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™เบชเบฐเป€เบซเบกเบต, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบเบฒเบ™เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เบฅเบงเบกเบ‚เบญเบ‡เบฅเบฐเบšเบปเบš. เปƒเบ™เป€เบˆเป‰เบ, เบ™เบตเป‰เปเบกเปˆเบ™เบ‡เปˆเบฒเบเบซเบผเบฒเบเบ—เบตเปˆเบˆเบฐเป€เบฎเบฑเบ”. เบกเบฑเบ™เบˆเบฐเป€เบ›เบฑเบ™เปเบšเบšเบ™เบฑเป‰เบ™เปƒเบ™เบŠเบตเบงเบดเบ”เบˆเบดเบ‡. เปเบ•เปˆเป€เบฅเบทเปˆเบญเบ‡เบ‚เบญเบ‡เบกเบทเป‰เบ™เบตเป‰เบšเปเปˆเปเบกเปˆเบ™เบเปˆเบฝเบงเบเบฑเบšเป€เบฅเบทเปˆเบญเบ‡เบ™เบฑเป‰เบ™.
เป€เบ„เบทเบญเบ‚เปˆเบฒเบเบ—เบตเปˆเบ›เบดเปˆเบ™เบ›เบปเบงเบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡: เบ„เบงเบฒเบกเบกเบฐเบซเบฑเบ”เบชเบฐเบˆเบฑเบ™เบ‚เบญเบ‡ Flow Label เปเบฅเบฐเบ™เบฑเบเบชเบทเบšเบ—เบตเปˆเบขเบนเปˆเบญเป‰เบญเบกเบฎเบญเบš Linux kernel. เบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™ Yandex

เบ‚เป‰เบญเบเบ•เป‰เบญเบ‡เบเบฒเบ™เบšเบปเบ”เบชเบฐเบซเบผเบธเบšเบ—เบตเปˆเบ–เบทเบเบ•เป‰เบญเบ‡. เบžเบงเบเป€เบฎเบปเบฒเบกเบตเบซเบผเบฒเบเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบžเบฒเบเปƒเบ™เบชเบนเบ™เบ‚เปเป‰เบกเบนเบ™. เบžเบงเบเป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเบกเบตเป€เบ‡เบทเปˆเบญเบ™เป„เบ‚เป€เบ›เบฑเบ™เป€เบญเบเบฐเบฅเบฒเบ”. เบงเบดเบ—เบตเบซเบ™เบถเปˆเบ‡เปƒเบ™เบชเบนเบ™เบ‚เปเป‰เบกเบนเบ™เปเบกเปˆเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบžเบฝเบ‡เปเบ•เปˆเบžเบฒเบเปƒเบ™ ToR. เบžเบฒเบเปƒเบ™เป‚เบกเบ”เบนเบ™, เบžเบงเบเป€เบฎเบปเบฒเบกเบตเบˆเปเบฒเบ™เบงเบ™เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเบˆเปเบฒเบ™เบงเบ™เบเบปเบ™. เบˆเปเบฒเบ™เบงเบ™เบ‚เบญเบ‡เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบฅเบฐเบซเบงเปˆเบฒเบ‡เป‚เบกเบ”เบนเบ™เปเบกเปˆเบ™เป€เบ—เบปเปˆเบฒเบเบฑเบšเบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™เบ‚เบญเบ‡เบˆเปเบฒเบ™เบงเบ™เบ‚เบญเบ‡เบเบปเบ™เปเบฅเบฐเบˆเปเบฒเบ™เบงเบ™เบ‚เบญเบ‡ superspin เปƒเบ™เปเบ•เปˆเบฅเบฐเบเบปเบ™. เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เปƒเบซเป‰เบกเบฑเบ™เบŠเบฑเบ”เป€เบˆเบ™, เบฎเบนเป‰เบชเบถเบเบงเปˆเบฒเบ‚เบฐเบซเบ™เบฒเบ”, เบ‚เป‰เบญเบเบˆเบฐเปƒเบซเป‰เบ•เบปเบงเป€เบฅเบเบ—เบตเปˆเบ–เบทเบเบ•เป‰เบญเบ‡เบชเปเบฒเบฅเบฑเบšเบชเบนเบ™เบ‚เปเป‰เบกเบนเบ™ Yandex.
เป€เบ„เบทเบญเบ‚เปˆเบฒเบเบ—เบตเปˆเบ›เบดเปˆเบ™เบ›เบปเบงเบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡: เบ„เบงเบฒเบกเบกเบฐเบซเบฑเบ”เบชเบฐเบˆเบฑเบ™เบ‚เบญเบ‡ Flow Label เปเบฅเบฐเบ™เบฑเบเบชเบทเบšเบ—เบตเปˆเบขเบนเปˆเบญเป‰เบญเบกเบฎเบญเบš Linux kernel. เบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™ Yandex

เบกเบต 32 เบเบปเบ™, เปเบ•เปˆเบฅเบฐเบเบปเบ™เบกเบต 256 superspin. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบกเบฑเบ™เบ›เบฐเบเบปเบ”เบงเปˆเบฒเบกเบตเปเบ›เบ”เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบžเบฒเบเปƒเบ™เป‚เบกเบ”เบนเบ™, เปเบฅเบฐเบกเบตเบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบšเบฅเบฐเบซเบงเปˆเบฒเบ‡เป‚เบกเบ”เบนเบ™เบกเบต XNUMX เบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒเปเบฅเป‰เบง.

เป€เบ„เบทเบญเบ‚เปˆเบฒเบเบ—เบตเปˆเบ›เบดเปˆเบ™เบ›เบปเบงเบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡: เบ„เบงเบฒเบกเบกเบฐเบซเบฑเบ”เบชเบฐเบˆเบฑเบ™เบ‚เบญเบ‡ Flow Label เปเบฅเบฐเบ™เบฑเบเบชเบทเบšเบ—เบตเปˆเบขเบนเปˆเบญเป‰เบญเบกเบฎเบญเบš Linux kernel. เบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™ Yandex

เบ™เบฑเป‰เบ™เปเบกเปˆเบ™, เบ–เป‰เบฒเบžเบงเบเป€เบฎเบปเบฒเบเปเบฒเบฅเบฑเบ‡เบžเบฑเบ”เบ—เบฐเบ™เบฒ Cookbook, เบžเบฐเบเบฒเบเบฒเบกเบฎเบฝเบ™เบฎเบนเป‰เบงเบดเบ—เบตเบเบฒเบ™เบชเป‰เบฒเบ‡เบชเบนเบ™เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบกเบตเบ„เบงเบฒเบกเบ—เบปเบ™เบ—เบฒเบ™เบ•เปเปˆเบ„เบงเบฒเบกเบœเบดเบ”เบ—เบตเปˆเบ›เบดเปˆเบ™เบ›เบปเบงเบ•เบปเบ™เป€เบญเบ‡, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒเปเบšเบšเปเบœเบ™เปเบกเปˆเบ™เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ—เบตเปˆเบ–เบทเบเบ•เป‰เบญเบ‡. เบกเบฑเบ™เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ—เปˆเบฒเบ™เปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเบเบฒเบ™เบ›เบฑเบšเบ‚เบฐเบซเบ™เบฒเบ”, เปเบฅเบฐเบ—เบฒเบ‡เบ—เบดเบ”เบชเบฐเบ”เบตเบกเบฑเบ™เบ‡เปˆเบฒเบ. เบกเบตเบซเบผเบฒเบเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เป€เบญเบเบฐเบฅเบฒเบ”. เบ„เปเบฒเบ–เบฒเบกเบเบฑเบ‡เบ„เบปเบ‡เบขเบนเปˆ: เบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเบฅเบญเบ”เบžเบปเป‰เบ™เบˆเบฒเบเบ„เบงเบฒเบกเบฅเบปเป‰เบกเป€เบซเบฅเบงเป„เบ”เป‰เปเบ™เบงเปƒเบ”? เบกเบตเบญเบธเบ›เบฐเบ•เบดเป€เบซเบ”เบ•เปˆเบฒเบ‡เป†. เปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบ›เบถเบเบชเบฒเบซเบฒเบฅเบทเบ™เบตเป‰เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™.
เป€เบ„เบทเบญเบ‚เปˆเบฒเบเบ—เบตเปˆเบ›เบดเปˆเบ™เบ›เบปเบงเบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡: เบ„เบงเบฒเบกเบกเบฐเบซเบฑเบ”เบชเบฐเบˆเบฑเบ™เบ‚เบญเบ‡ Flow Label เปเบฅเบฐเบ™เบฑเบเบชเบทเบšเบ—เบตเปˆเบขเบนเปˆเบญเป‰เบญเบกเบฎเบญเบš Linux kernel. เบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™ Yandex

เบ‚เปโ€‹เปƒเบซเป‰โ€‹เบ„เบปเบ™โ€‹เบ™เบถเปˆเบ‡โ€‹เบ‚เบญเบ‡โ€‹เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เป€เบˆเบฑเบšโ€‹เบ›เปˆเบงเบ. เบ—เบตเปˆเบ™เบตเป‰เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบเบฑเบšเบ„เบทเบ™เบชเบนเปˆเบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒเบ‚เบญเบ‡เบชเบญเบ‡เบเบปเบ™. เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบเบถเบ”เบ•เบดเบ”เบเบฑเบšเบžเบงเบเบกเบฑเบ™เป€เบ›เบฑเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เป€เบžเบฒเบฐเบงเปˆเบฒเบกเบฑเบ™เบˆเบฐเบ‡เปˆเบฒเบเบ‚เบถเป‰เบ™เบ—เบตเปˆเบˆเบฐเป€เบซเบฑเบ™เบชเบดเปˆเบ‡เบ—เบตเปˆเป€เบเบตเบ”เบ‚เบทเป‰เบ™เบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰เป‚เบ”เบเบกเบตเบชเปˆเบงเบ™เบ—เบตเปˆเป€เบ„เบทเปˆเบญเบ™เบเป‰เบฒเบเบซเบ™เป‰เบญเบเบฅเบปเบ‡. เบ‚เปเปƒเบซเป‰ X11 เป€เบˆเบฑเบšเบ›เปˆเบงเบ. เบ™เบตเป‰เบˆเบฐเบชเบปเปˆเบ‡เบœเบปเบ™เบเบฐเบ—เบปเบšเบ•เปเปˆเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบ—เบตเปˆเบญเบฒเป„เบชเบขเบนเปˆเบžเบฒเบเปƒเบ™เบชเบนเบ™เบ‚เปเป‰เบกเบนเบ™เปเบ™เบงเปƒเบ”? เบซเบผเบฒเบเบ‚เบทเป‰เบ™เบเบฑเบšเบงเปˆเบฒเบ„เบงเบฒเบกเบฅเบปเป‰เบกเป€เบซเบฅเบงเบ•เบปเบงเบˆเบดเบ‡เป€เบšเบดเปˆเบ‡เปเบ™เบงเปƒเบ”.
เป€เบ„เบทเบญเบ‚เปˆเบฒเบเบ—เบตเปˆเบ›เบดเปˆเบ™เบ›เบปเบงเบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡: เบ„เบงเบฒเบกเบกเบฐเบซเบฑเบ”เบชเบฐเบˆเบฑเบ™เบ‚เบญเบ‡ Flow Label เปเบฅเบฐเบ™เบฑเบเบชเบทเบšเบ—เบตเปˆเบขเบนเปˆเบญเป‰เบญเบกเบฎเบญเบš Linux kernel. เบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™ Yandex

เบ–เป‰เบฒเบ„เบงเบฒเบกเบฅเบปเป‰เบกเป€เบซเบฅเบงเปเบกเปˆเบ™เบ”เบต, เบกเบฑเบ™เบ–เบทเบเบˆเบฑเบšเบขเบนเปˆเปƒเบ™เบฅเบฐเบ”เบฑเบšเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เบ‚เบญเบ‡ BFD เบ”เบฝเบงเบเบฑเบ™, เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เป€เบฎเบฑเบ”เปƒเบซเป‰เบ‚เปเป‰เบ•เปเปˆเบ—เบตเปˆเบกเบตเบšเบฑเบ™เบซเบฒเปเบฅเบฐเปเบเบเบšเบฑเบ™เบซเบฒ, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เบเปเปˆเบ”เบต. เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เบกเบตโ€‹เบซเบผเบฒเบโ€‹เป€เบชเบฑเป‰เบ™โ€‹เบ—เบฒเบ‡โ€‹, เบเบฒเบ™โ€‹เบˆเบฐโ€‹เบฅเบฒโ€‹เบˆเบญเบ™โ€‹เปเบกเปˆเบ™โ€‹เบ—เบฑเบ™โ€‹เบ—เบต rerouted เบเบฑเบšโ€‹เป€เบชเบฑเป‰เบ™โ€‹เบ—เบฒเบ‡โ€‹เบ—เบฒเบ‡โ€‹เป€เบฅเบทเบญเบโ€‹, เปเบฅเบฐโ€‹เบเบฒเบ™โ€‹เบšเปโ€‹เบฅเบดโ€‹เบเบฒเบ™โ€‹เบˆเบฐโ€‹เบšเปเปˆโ€‹เป„เบ”เป‰โ€‹เบชเบฑเบ‡โ€‹เป€เบเบ”โ€‹เบซเบเบฑเบ‡โ€‹. เบ™เบตเป‰เปเบกเปˆเบ™เบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เบ—เบตเปˆเบ”เบต.
เป€เบ„เบทเบญเบ‚เปˆเบฒเบเบ—เบตเปˆเบ›เบดเปˆเบ™เบ›เบปเบงเบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡: เบ„เบงเบฒเบกเบกเบฐเบซเบฑเบ”เบชเบฐเบˆเบฑเบ™เบ‚เบญเบ‡ Flow Label เปเบฅเบฐเบ™เบฑเบเบชเบทเบšเบ—เบตเปˆเบขเบนเปˆเบญเป‰เบญเบกเบฎเบญเบš Linux kernel. เบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™ Yandex

เบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เบ—เบตเปˆเบšเปเปˆเบ”เบตเปเบกเปˆเบ™เบ–เป‰เบฒเบžเบงเบเป€เบฎเบปเบฒเบกเบตเบเบฒเบ™เบชเบนเบ™เป€เบชเบเบขเปˆเบฒเบ‡เบ•เปเปˆเป€เบ™เบทเปˆเบญเบ‡, เปเบฅเบฐเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เบšเปเปˆเป„เบ”เป‰เบชเบฑเบ‡เป€เบเบ”เป€เบซเบฑเบ™เบšเบฑเบ™เบซเบฒ. เป€เบžเบทเปˆเบญเป€เบ‚เบปเป‰เบฒเปƒเบˆเบงเปˆเบฒเบ™เบตเป‰เบกเบตเบœเบปเบ™เบเบฐเบ—เบปเบšเปเบ™เบงเปƒเบ”เบเบฑเบšเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบ•เป‰เบญเบ‡เปƒเบŠเป‰เป€เบงเบฅเบฒเป€เบฅเบฑเบเบ™เป‰เบญเบเป€เบžเบทเปˆเบญเบ›เบถเบเบชเบฒเบซเบฒเบฅเบทเบเปˆเบฝเบงเบเบฑเบšเบงเบดเบ—เบตเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ‚เบญเบ‡เป‚เบ›เป‚เบ•เบ„เบญเบ™ TCP.
เป€เบ„เบทเบญเบ‚เปˆเบฒเบเบ—เบตเปˆเบ›เบดเปˆเบ™เบ›เบปเบงเบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡: เบ„เบงเบฒเบกเบกเบฐเบซเบฑเบ”เบชเบฐเบˆเบฑเบ™เบ‚เบญเบ‡ Flow Label เปเบฅเบฐเบ™เบฑเบเบชเบทเบšเบ—เบตเปˆเบขเบนเปˆเบญเป‰เบญเบกเบฎเบญเบš Linux kernel. เบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™ Yandex

เบ‚เป‰เบฒโ€‹เบžเบฐโ€‹เป€เบˆเบปเป‰เบฒโ€‹เบซเบงเบฑเบ‡โ€‹เบงเปˆเบฒโ€‹เบ‚เป‰เบฒโ€‹เบžเบฐโ€‹เป€เบˆเบปเป‰เบฒโ€‹เบšเปเปˆโ€‹เป„เบ”เป‰โ€‹เป€เบฎเบฑเบ”โ€‹เปƒเบซเป‰โ€‹เบœเบนเป‰โ€‹เปƒเบ”โ€‹เบ•เบปเบโ€‹เปƒเบˆโ€‹เบเบฑเบšโ€‹เบ‚เปเป‰โ€‹เบกเบนเบ™โ€‹เบ™เบตเป‰โ€‹: TCP เป€เบ›เบฑเบ™โ€‹เบญเบฐโ€‹เบ™เบธโ€‹เบชเบฑเบ™โ€‹เบเบฒโ€‹เบเบฒเบ™โ€‹เบˆเบฑเบšโ€‹เบกเบทโ€‹. เบ™เบฑเป‰เบ™เปเบกเปˆเบ™, เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ—เบตเปˆเบ‡เปˆเบฒเบเบ”เบฒเบเบ—เบตเปˆเบชเบธเบ”, เบœเบนเป‰เบชเบปเปˆเบ‡เบชเบปเปˆเบ‡เบชเบญเบ‡เบŠเบญเบ‡, เปเบฅเบฐเป„เบ”เป‰เบฎเบฑเบš ack เบชเบฐเบชเบปเบกเบเปˆเบฝเบงเบเบฑเบšเบžเบงเบเป€เบ‚เบปเบฒ: "เบ‚เป‰เบญเบเป„เบ”เป‰เบฎเบฑเบšเบชเบญเบ‡เบŠเบญเบ‡."
เป€เบ„เบทเบญเบ‚เปˆเบฒเบเบ—เบตเปˆเบ›เบดเปˆเบ™เบ›เบปเบงเบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡: เบ„เบงเบฒเบกเบกเบฐเบซเบฑเบ”เบชเบฐเบˆเบฑเบ™เบ‚เบญเบ‡ Flow Label เปเบฅเบฐเบ™เบฑเบเบชเบทเบšเบ—เบตเปˆเบขเบนเปˆเบญเป‰เบญเบกเบฎเบญเบš Linux kernel. เบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™ Yandex

เบซเบผเบฑเบ‡โ€‹เบˆเบฒเบโ€‹เบ™เบฑเป‰เบ™โ€‹, เบฅเบฒเบงโ€‹เบˆเบฐโ€‹เบชเบปเปˆเบ‡โ€‹เบชเบญเบ‡โ€‹เบŠเบญเบ‡โ€‹เป€เบžเบตเปˆเบกโ€‹เป€เบ•เบตเบกโ€‹, เปเบฅเบฐโ€‹เบชเบฐโ€‹เบ–เบฒโ€‹เบ™เบฐโ€‹เบเบฒเบ™โ€‹เบˆเบฐโ€‹เป€เบเบตเบ”โ€‹เบ‚เบถเป‰เบ™โ€‹. เบ‚เป‰เบฒโ€‹เบžเบฐโ€‹เป€เบˆเบปเป‰เบฒโ€‹เบ‚เปโ€‹เบญเบฐโ€‹เป„เบžโ€‹เบฅเปˆเบงเบ‡โ€‹เบซเบ™เป‰เบฒโ€‹เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบเบฒเบ™โ€‹เบ‡เปˆเบฒเบโ€‹เบšเบฒเบ‡โ€‹. เบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เบ™เบตเป‰เปเบกเปˆเบ™เบ–เบทเบเบ•เป‰เบญเบ‡เบ–เป‰เบฒเบซเบฒเบเบงเปˆเบฒเบ›เปˆเบญเบ‡เบขเป‰เบฝเบก (เบˆเปเบฒเบ™เบงเบ™เบ‚เบญเบ‡เบŠเบญเบ‡เปƒเบ™เบเบฒเบ™เบšเบดเบ™) เปเบกเปˆเบ™เบชเบญเบ‡. เปเบ™เปˆเบ™เบญเบ™, เบ™เบตเป‰เบšเปเปˆเปเบกเปˆเบ™เบเปเบฅเบฐเบ™เบตเป‚เบ”เบเบ—เบปเปˆเบงเป„เบ›. เปเบ•เปˆเบšเปเบฅเบดเบšเบปเบ”เบเบฒเบ™เบชเบปเปˆเบ‡เบ•เปเปˆเปเบžเบฑเบเป€เบเบฑเบ”เบšเปเปˆเป„เบ”เป‰เบฎเบฑเบšเบœเบปเบ™เบเบฐเบ—เบปเบšเบˆเบฒเบเบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡เบ›เปˆเบญเบ‡เบขเป‰เบฝเบก.
เป€เบ„เบทเบญเบ‚เปˆเบฒเบเบ—เบตเปˆเบ›เบดเปˆเบ™เบ›เบปเบงเบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡: เบ„เบงเบฒเบกเบกเบฐเบซเบฑเบ”เบชเบฐเบˆเบฑเบ™เบ‚เบญเบ‡ Flow Label เปเบฅเบฐเบ™เบฑเบเบชเบทเบšเบ—เบตเปˆเบขเบนเปˆเบญเป‰เบญเบกเบฎเบญเบš Linux kernel. เบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™ Yandex

เบˆเบฐเป€เบเบตเบ”เบซเบเบฑเบ‡เบ‚เบถเป‰เบ™เบ–เป‰เบฒเบžเบงเบเป€เบฎเบปเบฒเบชเบนเบ™เป€เบชเบเปเบžเบฑเบเป€เบเบ” 3? เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ™เบตเป‰, เบœเบนเป‰เบฎเบฑเบšเบˆเบฐเป„เบ”เป‰เบฎเบฑเบšเปเบžเบฑเบเป€เบเบฑเบ” 1, 2 เปเบฅเบฐ 4. เปเบฅเบฐเบฅเบฒเบงเบˆเบฐเปเบˆเป‰เบ‡เปƒเบซเป‰เบœเบนเป‰เบชเบปเปˆเบ‡เบขเปˆเบฒเบ‡เบˆเบฐเปเบˆเป‰เบ‡เป‚เบ”เบเปƒเบŠเป‰เบ•เบปเบงเป€เบฅเบทเบญเบ SACK: "เป€เบˆเบปเป‰เบฒเบฎเบนเป‰, เบชเบฒเบกเบกเบฒ, เปเบ•เปˆเบเบฒเบ‡เป„เบ”เป‰เบชเบนเบ™เป€เบชเบ." เบฅเบฒเบงเป€เบงเบปเป‰เบฒเบงเปˆเบฒ "Ack 2, SACK 4".
เป€เบ„เบทเบญเบ‚เปˆเบฒเบเบ—เบตเปˆเบ›เบดเปˆเบ™เบ›เบปเบงเบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡: เบ„เบงเบฒเบกเบกเบฐเบซเบฑเบ”เบชเบฐเบˆเบฑเบ™เบ‚เบญเบ‡ Flow Label เปเบฅเบฐเบ™เบฑเบเบชเบทเบšเบ—เบตเปˆเบขเบนเปˆเบญเป‰เบญเบกเบฎเบญเบš Linux kernel. เบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™ Yandex

เบœเบนเป‰เบชเบปเปˆเบ‡เปƒเบ™เป€เบงเบฅเบฒเบ™เบตเป‰เป€เบฎเบฑเบ”เบŠเป‰เปเบฒเปเบžเบฑเบเป€เบเบฑเบ”เบ—เบตเปˆเบชเบนเบ™เป€เบชเบเป„เบ›เป‚เบ”เบเบšเปเปˆเบกเบตเบšเบฑเบ™เบซเบฒเปƒเบ”เป†.
เป€เบ„เบทเบญเบ‚เปˆเบฒเบเบ—เบตเปˆเบ›เบดเปˆเบ™เบ›เบปเบงเบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡: เบ„เบงเบฒเบกเบกเบฐเบซเบฑเบ”เบชเบฐเบˆเบฑเบ™เบ‚เบญเบ‡ Flow Label เปเบฅเบฐเบ™เบฑเบเบชเบทเบšเบ—เบตเปˆเบขเบนเปˆเบญเป‰เบญเบกเบฎเบญเบš Linux kernel. เบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™ Yandex

เปเบ•เปˆเบ–เป‰เบฒเบŠเบธเบ”เบชเบธเบ”เบ—เป‰เบฒเบเบขเบนเปˆเปƒเบ™เบ›เปˆเบญเบ‡เบขเป‰เบฝเบกเปเบกเปˆเบ™เบชเบนเบ™เป€เบชเบ, เบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เบˆเบฐเป€เบšเบดเปˆเบ‡เปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เบซเบผเบฒเบ.

เบœเบนเป‰เบฎเบฑเบšเป„เบ”เป‰เบฎเบฑเบšเบชเบฒเบกเบŠเบญเบ‡เบ—เปเบฒเบญเบดเบ”เปเบฅเบฐเบ—เปเบฒเบญเบดเบ”เป€เบฅเบตเปˆเบกเบฅเปเบ–เป‰เบฒ. เบ‚เปเบ‚เบญเบšเปƒเบˆเบเบฑเบšเบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบšเบฒเบ‡เบขเปˆเบฒเบ‡เปƒเบ™ Linux kernel TCP stack, เบกเบฑเบ™เบˆเบฐเบฅเปเบ–เป‰เบฒเบŠเบธเบ”เบ„เบนเปˆ, เป€เบงเบฑเป‰เบ™เป€เบชเบเปเบ•เปˆเบงเปˆเบฒเบกเบตเบเบฒเบ™เบŠเบตเป‰เบšเบญเบเบขเปˆเบฒเบ‡เบŠเบฑเบ”เป€เบˆเบ™เปƒเบ™เบ—เบธเบ‡เบงเปˆเบฒเบ™เบตเป‰เปเบกเปˆเบ™เบŠเบธเบ”เบชเบธเบ”เบ—เป‰เบฒเบเบซเบผเบทเบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เป€เบŠเบฑเปˆเบ™เบ™เบฑเป‰เบ™. เบกเบฑเบ™เบˆเบฐเบฅเปเบ–เป‰เบฒเบˆเบปเบ™เบเปˆเบงเบฒเบเบฒเบ™เบซเบกเบปเบ”เป€เบงเบฅเบฒ ACK เบ—เบตเปˆเบŠเบฑเบเบŠเป‰เบฒเบˆเบฐเบซเบกเบปเบ”เบญเบฒเบเบธเปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบชเบปเปˆเบ‡เบเบฒเบ™เบฎเบฑเบšเบฎเบนเป‰เบชเปเบฒเบฅเบฑเบšเบชเบฒเบกเบŠเบญเบ‡เบ—เปเบฒเบญเบดเบ”. เปเบ•เปˆเบ”เบฝเบงเบ™เบตเป‰เบœเบนเป‰เบชเบปเปˆเบ‡เบˆเบฐเบฅเปเบ–เป‰เบฒ. เบฅเบฒเบงเบšเปเปˆเบฎเบนเป‰เบงเปˆเบฒเบŠเบธเบ”เบ—เบตเบชเบตเปˆเป„เบ”เป‰เบชเบนเบ™เป€เบชเบเบซเบผเบท เบเบณ เบฅเบฑเบ‡เบˆเบฐเบกเบฒเบฎเบญเบ”. เปเบฅเบฐเป€เบžเบทเปˆเบญเบšเปเปˆเปƒเบซเป‰ overload เป€เบ„เบทเบญเบ‚เปˆเบฒเบ, เบกเบฑเบ™เบˆเบฐเบžเบฐเบเบฒเบเบฒเบกเบฅเปเบ–เป‰เบฒเบเบฒเบ™เบŠเบตเป‰เบšเบญเบเบ—เบตเปˆเบŠเบฑเบ”เป€เบˆเบ™เบงเปˆเบฒเปเบžเบฑเบเป€เบเบฑเบ”เบชเบนเบ™เป€เบชเบ, เบซเบผเบทเบเบฒเบ™เบซเบกเบปเบ”เบญเบฒเบเบธเบ‚เบญเบ‡ RTO timeout.
เป€เบ„เบทเบญเบ‚เปˆเบฒเบเบ—เบตเปˆเบ›เบดเปˆเบ™เบ›เบปเบงเบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡: เบ„เบงเบฒเบกเบกเบฐเบซเบฑเบ”เบชเบฐเบˆเบฑเบ™เบ‚เบญเบ‡ Flow Label เปเบฅเบฐเบ™เบฑเบเบชเบทเบšเบ—เบตเปˆเบขเบนเปˆเบญเป‰เบญเบกเบฎเบญเบš Linux kernel. เบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™ Yandex

เปเบปเบ”เป€เบงเบฅเบฒ RTO เปเบกเปˆเบ™เบซเบเบฑเบ‡? เบ™เบตเป‰เปเบกเปˆเบ™เบชเบนเบ‡เบชเบธเบ”เบˆเบฒเบ RTT เบ—เบตเปˆเบ„เบดเบ”เป„เบฅเปˆเป‚เบ”เบ TCP stack เปเบฅเบฐเบšเบฒเบ‡เบ„เบปเบ‡เบ—เบตเปˆ. เบ„เบปเบ‡เบ—เบตเปˆเบญเบฑเบ™เบ™เบตเป‰เปเบกเปˆเบ™เบซเบเบฑเบ‡, เบ•เบญเบ™เบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบชเบปเบ™เบ—เบฐเบ™เบฒเบเบฑเบ™.
เป€เบ„เบทเบญเบ‚เปˆเบฒเบเบ—เบตเปˆเบ›เบดเปˆเบ™เบ›เบปเบงเบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡: เบ„เบงเบฒเบกเบกเบฐเบซเบฑเบ”เบชเบฐเบˆเบฑเบ™เบ‚เบญเบ‡ Flow Label เปเบฅเบฐเบ™เบฑเบเบชเบทเบšเบ—เบตเปˆเบขเบนเปˆเบญเป‰เบญเบกเบฎเบญเบš Linux kernel. เบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™ Yandex

เปเบ•เปˆเบกเบฑเบ™เบชเปเบฒเบ„เบฑเบ™เบงเปˆเบฒเบ–เป‰เบฒเบžเบงเบเป€เบฎเบปเบฒเป‚เบŠเบเบšเปเปˆเบ”เบตเบญเบตเบเป€เบ—เบทเปˆเบญเบซเบ™เบถเปˆเบ‡เปเบฅเบฐเบŠเบธเบ”เบ—เบตเบชเบตเปˆเบเปเปˆเบชเบนเบ™เป€เบชเบเบญเบตเบเป€เบ—เบทเปˆเบญเบซเบ™เบถเปˆเบ‡, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™ RTO เป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™เบชเบญเบ‡เป€เบ—เบปเปˆเบฒ. เบ™เบฑเป‰เบ™เปเบกเปˆเบ™, เปเบ•เปˆเบฅเบฐเบ„เบงเบฒเบกเบžเบฐเบเบฒเบเบฒเบกเบšเปเปˆเบชเปเบฒเป€เบฅเบฑเบ”เปเบกเปˆเบ™เบชเบญเบ‡เป€เบ—เบปเปˆเบฒเบ‚เบญเบ‡เบเบฒเบ™เบซเบกเบปเบ”เป€เบงเบฅเบฒ.
เป€เบ„เบทเบญเบ‚เปˆเบฒเบเบ—เบตเปˆเบ›เบดเปˆเบ™เบ›เบปเบงเบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡: เบ„เบงเบฒเบกเบกเบฐเบซเบฑเบ”เบชเบฐเบˆเบฑเบ™เบ‚เบญเบ‡ Flow Label เปเบฅเบฐเบ™เบฑเบเบชเบทเบšเบ—เบตเปˆเบขเบนเปˆเบญเป‰เบญเบกเบฎเบญเบš Linux kernel. เบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™ Yandex

เบ•เบญเบ™เบ™เบตเป‰เปƒเบซเป‰เป€เบšเบดเปˆเบ‡เบงเปˆเบฒเบžเบทเป‰เบ™เบ–เบฒเบ™เบ™เบตเป‰เป€เบ—เบปเปˆเบฒเบเบฑเบšเบซเบเบฑเบ‡. เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, RTO เบ•เปเปˆเบฒเบชเบธเบ”เปเบกเปˆเบ™ 200ms. เบ™เบตเป‰เปเบกเปˆเบ™ RTO เบ•เปเปˆเบฒเบชเบธเบ”เบชเปเบฒเบฅเบฑเบšเบŠเบธเบ”เบ‚เปเป‰เบกเบนเบ™. เบชเปเบฒเบฅเบฑเบšเปเบžเบฑเบเป€เบเบฑเบ” SYN, เบกเบฑเบ™เปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™, 1 เบงเบดเบ™เบฒเบ—เบต. เบ”เบฑเปˆเบ‡เบ—เบตเปˆเป€เบˆเบปเป‰เบฒเบชเบฒเบกเบฒเบ”เป€เบซเบฑเบ™เป„เบ”เป‰, เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบ„เบงเบฒเบกเบžเบฐเบเบฒเบเบฒเบกเบ—เปเบฒเบญเบดเบ”เบ—เบตเปˆเบˆเบฐเบชเบปเปˆเบ‡เปเบžเบฑเบเป€เบเบฑเบ”เบ„เบทเบ™เปƒเบซเบกเปˆเบˆเบฐเปƒเบŠเป‰เป€เบงเบฅเบฒ 100 เป€เบงเบฅเบฒเบ”เบปเบ™เบเบงเปˆเบฒ RTT เบžเบฒเบเปƒเบ™เบชเบนเบ™เบ‚เปเป‰เบกเบนเบ™.
เป€เบ„เบทเบญเบ‚เปˆเบฒเบเบ—เบตเปˆเบ›เบดเปˆเบ™เบ›เบปเบงเบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡: เบ„เบงเบฒเบกเบกเบฐเบซเบฑเบ”เบชเบฐเบˆเบฑเบ™เบ‚เบญเบ‡ Flow Label เปเบฅเบฐเบ™เบฑเบเบชเบทเบšเบ—เบตเปˆเบขเบนเปˆเบญเป‰เบญเบกเบฎเบญเบš Linux kernel. เบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™ Yandex

เบ•เบญเบ™เบ™เบตเป‰เบเบฑเบšเบ„เบทเบ™เบชเบนเปˆเบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ. เปเบกเปˆเบ™เบซเบเบฑเบ‡เป€เบเบตเบ”เบ‚เบถเป‰เบ™เบเบฑเบšเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™? เบšเปเบฅเบดเบเบฒเบ™เป€เบฅเบตเปˆเบกเบชเบนเบ™เป€เบชเบเปเบžเบฑเบเป€เบเบฑเบ”. เปƒเบซเป‰เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เป€เบšเบทเป‰เบญเบ‡เบ•เบปเป‰เบ™เป‚เบŠเบเบ”เบตเปเบฅเบฐเบชเบนเบ™เป€เบชเบเบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เบขเบนเปˆเบเบฒเบ‡เบ›เปˆเบญเบ‡เบขเป‰เบฝเบก, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบกเบฑเบ™เป„เบ”เป‰เบฎเบฑเบš SACK, เบชเบปเปˆเบ‡เบ„เบทเบ™เบŠเบธเบ”เบ—เบตเปˆเบชเบนเบ™เป€เบชเบเป„เบ›.
เป€เบ„เบทเบญเบ‚เปˆเบฒเบเบ—เบตเปˆเบ›เบดเปˆเบ™เบ›เบปเบงเบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡: เบ„เบงเบฒเบกเบกเบฐเบซเบฑเบ”เบชเบฐเบˆเบฑเบ™เบ‚เบญเบ‡ Flow Label เปเบฅเบฐเบ™เบฑเบเบชเบทเบšเบ—เบตเปˆเบขเบนเปˆเบญเป‰เบญเบกเบฎเบญเบš Linux kernel. เบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™ Yandex

เปเบ•เปˆเบ–เป‰เบฒเป‚เบŠเบเบšเปเปˆเบ”เบตเป€เบเบตเบ”เบ‚เบทเป‰เบ™, เบžเบงเบเป€เบฎเบปเบฒเบกเบต RTO. เบชเบดเปˆเบ‡เบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰? เปเบกเปˆเบ™เปเบฅเป‰เบง, เบžเบงเบเป€เบฎเบปเบฒเบกเบตเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบซเบผเบฒเบเปƒเบ™เป€เบ„เบทเบญเบ‚เปˆเบฒเบ. เปเบ•เปˆเบเบฒเบ™เบˆเบฒเบฅเบฐเบˆเบญเบ™ TCP เบ‚เบญเบ‡เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ TCP เป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐเบซเบ™เบถเปˆเบ‡เบˆเบฐเบชเบทเบšเบ•เปเปˆเบœเปˆเบฒเบ™ stack เบ—เบตเปˆเปเบ•เบเบซเบฑเบเบ”เบฝเบงเบเบฑเบ™. เบเบฒเบ™เบชเบนเบ™เป€เบชเบเปเบžเบฑเบเป€เบเบฑเบ”, เบชเบฐเบซเบ™เบญเบ‡เปƒเบซเป‰เบงเปˆเบฒ magic X11 เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเบญเบญเบเป„เบ›เบ”เป‰เบงเบเบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡, เบšเปเปˆเป„เบ”เป‰เบ™เปเบฒเป„เบ›เบชเบนเปˆเบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เบ—เบตเปˆเป„เบซเบฅเป„เบ›เบชเบนเปˆเบžเบทเป‰เบ™เบ—เบตเปˆเบ—เบตเปˆเบšเปเปˆเบกเบตเบšเบฑเบ™เบซเบฒ. เบžเบงเบเป€เบฎเบปเบฒเบเปเบฒเบฅเบฑเบ‡เบžเบฐเบเบฒเบเบฒเบกเบˆเบฑเบ”เบชเบปเปˆเบ‡เบŠเบธเบ”เบœเปˆเบฒเบ™ stack เบ—เบตเปˆเปเบ•เบเบซเบฑเบเบ”เบฝเบงเบเบฑเบ™. เบ™เบตเป‰เบ™เปเบฒเป„เบ›เบชเบนเปˆเบ„เบงเบฒเบกเบฅเบปเป‰เบกเป€เบซเบผเบงเบ‚เบญเบ‡ cascading: เบชเบนเบ™เบ‚เปเป‰เบกเบนเบ™เปเบกเปˆเบ™เบŠเบธเบ”เบ‚เบญเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบš, เปเบฅเบฐเบšเบฒเบ‡เบชเปˆเบงเบ™เบ‚เบญเบ‡เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ TCP เบ‚เบญเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ—เบฑเบ‡เบซเบกเบปเบ”เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ—เบตเปˆเบˆเบฐเบŠเบธเบ”เป‚เบŠเบก - เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒ superspin เบœเบปเบ™เบเบฐเบ—เบปเบšเบ•เปเปˆเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ—เบฑเบ‡เบซเบกเบปเบ”เบ—เบตเปˆเบขเบนเปˆเปƒเบ™ DC. เบ”เบฑเปˆเบ‡โ€‹เบ—เบตเปˆโ€‹เป€เบงเบปเป‰เบฒโ€‹เบงเปˆเบฒ: เบ–เป‰เบฒโ€‹เป€เบˆเบปเป‰เบฒโ€‹เบšเปเปˆโ€‹เป€เบเบตเบšโ€‹เบกเป‰เบฒ, เบกเป‰เบฒโ€‹เบ‚เบฒโ€‹เบฅเบปเบ‡; เบกเป‰เบฒ limped - เบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™เบšเปเปˆเป„เบ”เป‰เบชเบปเปˆเบ‡; เบ‚เปเป‰เบ„เบงเบฒเบกเบšเปเปˆเป„เบ”เป‰เบ–เบทเบเบชเบปเปˆเบ‡ - เบžเบงเบเป€เบ‚เบปเบฒเบชเบนเบ™เป€เบชเบเบชเบปเบ‡เบ„เบฒเบก. เบžเบฝเบ‡เปเบ•เปˆเปƒเบ™เบ—เบตเปˆเบ™เบตเป‰เบเบฒเบ™เบ™เบฑเบšเป€เบ›เบฑเบ™เบงเบดเบ™เบฒเบ—เบตเบ™เบฑเบšเบˆเบฒเบเป€เบงเบฅเบฒเบ—เบตเปˆเบšเบฑเบ™เบซเบฒเป€เบเบตเบ”เบ‚เบถเป‰เบ™เป€เบ–เบดเบ‡เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ‚เบญเบ‡เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบŠเบกเบ—เบตเปˆเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เป€เบฅเบตเปˆเบกเบกเบตเบ„เบงเบฒเบกเบฎเบนเป‰เบชเบถเบ. เบ™เบตเป‰เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเบœเบนเป‰เปƒเบŠเป‰เบญเบฒเบ”เบˆเบฐเบšเปเปˆเป„เบ”เป‰เบฎเบฑเบšเบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เบšเบฒเบ‡เบšเปˆเบญเบ™.
เป€เบ„เบทเบญเบ‚เปˆเบฒเบเบ—เบตเปˆเบ›เบดเปˆเบ™เบ›เบปเบงเบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡: เบ„เบงเบฒเบกเบกเบฐเบซเบฑเบ”เบชเบฐเบˆเบฑเบ™เบ‚เบญเบ‡ Flow Label เปเบฅเบฐเบ™เบฑเบเบชเบทเบšเบ—เบตเปˆเบขเบนเปˆเบญเป‰เบญเบกเบฎเบญเบš Linux kernel. เบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™ Yandex

เบกเบตเบชเบญเบ‡เบงเบดเบ—เบตเปเบเป‰เป„เบ‚เบ„เบฅเบฒเบชเบชเบดเบเบ—เบตเปˆเปƒเบซเป‰เบชเบปเบกเบšเบนเบ™เป€เบŠเบดเปˆเบ‡เบเบฑเบ™เปเบฅเบฐเบเบฑเบ™. เบ—เปเบฒเบญเบดเบ”เปเบกเปˆเบ™เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบ—เบตเปˆเบžเบฐเบเบฒเบเบฒเบกเบงเบฒเบ‡เป€เบŸเบทเบญเบ‡เปเบฅเบฐเปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเป€เบŠเบฑเปˆเบ™เบ™เบตเป‰: "เปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเบ›เบฑเบšเบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เปƒเบ™ TCP stack. เปเบฅเบฐเปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเป€เบฎเบฑเบ”เบเบฒเบ™เบซเบกเบปเบ”เป€เบงเบฅเบฒเบฅเบฐเบ”เบฑเบšเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบซเบผเบทเบเบญเบ‡เบ›เบฐเบŠเบธเบก TCP เบ—เบตเปˆเบกเบตเบŠเบตเบงเบดเบ”เบเบฒเบงเบ”เป‰เบงเบเบเบฒเบ™เบเบงเบ”เบชเบธเบ‚เบฐเบžเบฒเบšเบžเบฒเบเปƒเบ™. เบšเบฑเบ™เบซเบฒเปเบกเปˆเบ™เบงเปˆเบฒเบเบฒเบ™เปเบเป‰เป„เบ‚เบ”เบฑเปˆเบ‡เบเปˆเบฒเบง: a) เบšเปเปˆเบ‚เบฐเบซเบ™เบฒเบ”เบ—เบฑเบ‡เบซเบกเบปเบ”; b) เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบšเปเปˆเบ”เบตเบซเบผเบฒเบ. เบ™เบฑเป‰เบ™เปเบกเปˆเบ™, เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบˆเบฐเบ•เบฑเป‰เบ‡เบ„เปˆเบฒ TCP stack เป‚เบ”เบเบšเบฑเบ‡เป€เบญเบตเบ™เป€เบžเบทเปˆเบญเปƒเบซเป‰เบกเบฑเบ™เบ”เบตเบ‚เบถเป‰เบ™, เบเปˆเบญเบ™เบญเบทเปˆเบ™ เปเบปเบ”, เบ™เบตเป‰เบญเบฒเบ”เบˆเบฐเบšเปเปˆเบชเบฒเบกเบฒเบ”เปƒเบŠเป‰เป„เบ”เป‰เบเบฑเบšเบ—เบธเบเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เปเบฅเบฐเบชเบนเบ™เบ‚เปเป‰เบกเบนเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”, เปเบฅเบฐเบญเบฑเบ™เบ—เบตเบชเบญเบ‡, เบชเปˆเบงเบ™เบซเบผเบฒเบเบญเบฒเบ”เบˆเบฐ, เบกเบฑเบ™เบˆเบฐเบšเปเปˆเป€เบ‚เบปเป‰เบฒเปƒเบˆเบชเบดเปˆเบ‡เบ—เบตเปˆเบ–เบทเบเป€เบฎเบฑเบ”เบขเปˆเบฒเบ‡เบ–เบทเบเบ•เป‰เบญเบ‡เปเบฅเบฐเปเบกเปˆเบ™เบซเบเบฑเบ‡. เบšเปเปˆ. เบ™เบฑเป‰เบ™เปเบกเปˆเบ™, เบกเบฑเบ™เป€เบฎเบฑเบ”เบงเบฝเบ, เปเบ•เปˆเบกเบฑเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบšเปเปˆเบ”เบตเปเบฅเบฐเบšเปเปˆเบ‚เบฐเบซเบ™เบฒเบ”. เปเบฅเบฐเบ–เป‰เบฒเบกเบตเบšเบฑเบ™เบซเบฒเป€เบ„เบทเบญเบ‚เปˆเบฒเบ, เปƒเบœเบˆเบฐเบ•เปเบฒเบ™เบดเบ•เบดเบ•เบฝเบ™? เปเบ™เปˆเบ™เบญเบ™ NOC. NOC เป€เบฎเบฑเบ”เบซเบเบฑเบ‡?

เป€เบ„เบทเบญเบ‚เปˆเบฒเบเบ—เบตเปˆเบ›เบดเปˆเบ™เบ›เบปเบงเบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡: เบ„เบงเบฒเบกเบกเบฐเบซเบฑเบ”เบชเบฐเบˆเบฑเบ™เบ‚เบญเบ‡ Flow Label เปเบฅเบฐเบ™เบฑเบเบชเบทเบšเบ—เบตเปˆเบขเบนเปˆเบญเป‰เบญเบกเบฎเบญเบš Linux kernel. เบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™ Yandex

เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบซเบผเบฒเบเบ„เบปเบ™เป€เบŠเบทเปˆเบญเบงเปˆเบฒเปƒเบ™ NOC, เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเป€เบ›เบฑเบ™เปเบšเบšเบ™เบตเป‰. เปเบ•เปˆเป€เบžเบทเปˆเบญเบ„เบงเบฒเบกเบŠเบทเปˆเบชเบฑเบ”, เบšเปเปˆเบžเบฝเบ‡เปเบ•เปˆ.
เป€เบ„เบทเบญเบ‚เปˆเบฒเบเบ—เบตเปˆเบ›เบดเปˆเบ™เบ›เบปเบงเบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡: เบ„เบงเบฒเบกเบกเบฐเบซเบฑเบ”เบชเบฐเบˆเบฑเบ™เบ‚เบญเบ‡ Flow Label เปเบฅเบฐเบ™เบฑเบเบชเบทเบšเบ—เบตเปˆเบขเบนเปˆเบญเป‰เบญเบกเบฎเบญเบš Linux kernel. เบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™ Yandex

NOC เปƒเบ™เป‚เบ„เบ‡เบเบฒเบ™เบ„เบฅเบฒเบชเบชเบดเบเปเบกเปˆเบ™เบกเบตเบชเปˆเบงเบ™เบฎเปˆเบงเบกเปƒเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบเบฒเบ™เบ•เบดเบ”เบ•เบฒเบกเบซเบผเบฒเบ. เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เปเบกเปˆเบ™เบ—เบฑเบ‡เบเบฒเบ™เบ•เบดเบ”เบ•เบฒเบกเบเปˆเบญเบ‡เบ”เปเบฒเปเบฅเบฐเบเบฒเบ™เบเบงเบ”เบชเบญเบšเบเปˆเบญเบ‡เบชเบตเบ‚เบฒเบง. เบเปˆเบฝเบงเบเบฑเบšเบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เบเปˆเบญเบ‡เบชเบตเบ”เปเบฒ - เบ•เบดเบ”เบ•เบฒเบกเบเบงเบ”เบเบฒเบเบฐเบ”เบนเบเบชเบฑเบ™เบซเบผเบฑเบ‡ เบšเบญเบ Alexander Klimenko เปƒเบ™เบญเบฐเบ”เบตเบ” Next Hop. เป‚เบ”เบเบงเบดเบ—เบตเบ—เบฒเบ‡เบเบฒเบ™, เบเบฒเบ™เบ•เบดเบ”เบ•เบฒเบกเบ™เบตเป‰เป€เบฎเบฑเบ”เบงเบฝเบ. เปเบ•เปˆเป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบเบฒเบ™เบ•เบดเบ”เบ•เบฒเบกเบ—เบตเปˆเบชเบปเบกเบšเบนเบ™เปเบšเบšเบเปเปˆเบˆเบฐเบกเบตเป€เบงเบฅเบฒเบŠเบฑเบเบŠเป‰เบฒ. เบ›เบปเบเบเบฐเบ•เบดเปเบฅเป‰เบงเบกเบฑเบ™เปเบกเปˆเบ™เบซเบผเบฒเบเบ™เบฒเบ—เบต. เบซเบผเบฑเบ‡เบˆเบฒเบเบกเบฑเบ™เป€เบฎเบฑเบ”เบงเบฝเบ, เบงเบดเบชเบฐเบงเบฐเบเบญเบ™เบ—เบตเปˆเบฎเบฑเบšเบœเบดเบ”เบŠเบญเบšเบ•เป‰เบญเบ‡เปƒเบŠเป‰เป€เบงเบฅเบฒเปƒเบ™เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ‚เบญเบ‡เบกเบฑเบ™เบชเบญเบ‡เบ„เบฑเป‰เบ‡, เบเปเบฒเบ™เบปเบ”เบšเบฑเบ™เบซเบฒ, เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบ”เบฑเบšเบชเบนเบ™เบšเบฑเบ™เบซเบฒ. เบ™เบฑเป‰เบ™เปเบกเปˆเบ™, เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ—เบตเปˆเบ”เบตเบ—เบตเปˆเบชเบธเบ”, เบเบฒเบ™เบ›เบดเปˆเบ™เบ›เบปเบงเบšเบฑเบ™เบซเบฒเปเบกเปˆเบ™เปƒเบŠเป‰เป€เบงเบฅเบฒ 5 เบ™เบฒเบ—เบต, เบฎเป‰เบฒเบเปเบฎเบ‡เบ—เบตเปˆเบชเบธเบ” 20 เบ™เบฒเบ—เบต, เบ–เป‰เบฒเบกเบฑเบ™เบšเปเปˆเบŠเบฑเบ”เป€เบˆเบ™เบ—เบฑเบ™เบ—เบตเบ—เบตเปˆเบเบฒเบ™เบชเบนเบ™เป€เบชเบเป€เบเบตเบ”เบ‚เบทเป‰เบ™. เบกเบฑเบ™เป€เบ›เบฑเบ™เบ—เบตเปˆเบŠเบฑเบ”เป€เบˆเบ™เบงเปˆเบฒเบ—เบฑเบ‡เบซเบกเบปเบ”เบ™เบตเป‰ - 5 เบซเบผเบท 20 เบ™เบฒเบ—เบต - เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบชเบทเบšเบ•เปเปˆเป€เบˆเบฑเบšเบ›เบงเบ”, เป€เบŠเบดเปˆเบ‡เบญเบฒเบ”เบˆเบฐเบšเปเปˆเบ”เบต.
เป€เบ„เบทเบญเบ‚เปˆเบฒเบเบ—เบตเปˆเบ›เบดเปˆเบ™เบ›เบปเบงเบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡: เบ„เบงเบฒเบกเบกเบฐเบซเบฑเบ”เบชเบฐเบˆเบฑเบ™เบ‚เบญเบ‡ Flow Label เปเบฅเบฐเบ™เบฑเบเบชเบทเบšเบ—เบตเปˆเบขเบนเปˆเบญเป‰เบญเบกเบฎเบญเบš Linux kernel. เบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™ Yandex

เป€เบˆเบปเป‰เบฒเบขเบฒเบเป„เบ”เป‰เบซเบเบฑเบ‡? เบžเบงเบเป€เบฎเบปเบฒเบกเบตเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบซเบผเบฒเบ. เปเบฅเบฐเบšเบฑเบ™เบซเบฒเป€เบเบตเบ”เบ‚เบทเป‰เบ™เบขเปˆเบฒเบ‡เปเบ™เปˆเบ™เบญเบ™เป€เบžเบฒเบฐเบงเปˆเบฒเบเบฒเบ™เป„เบซเบฅเบ‚เบญเบ‡ TCP เบ—เบตเปˆเป‚เบŠเบเบšเปเปˆเบ”เบตเบเบฑเบ‡เบชเบทเบšเบ•เปเปˆเปƒเบŠเป‰เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบ”เบฝเบงเบเบฑเบ™. เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เบ—เบตเปˆเบˆเบฐเบŠเปˆเบงเบเปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเบ™เปเบฒเปƒเบŠเป‰เบซเบผเบฒเบเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบžเบฒเบเปƒเบ™เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ TCP เบ”เบฝเบง. เบกเบฑเบ™เป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบกเบตเบเบฒเบ™เปเบเป‰เป„เบ‚. เบกเบต TCP, เป€เบŠเบดเปˆเบ‡เป€เบญเบตเป‰เบ™เบงเปˆเบฒเบ™เบฑเป‰เบ™ - multipath TCP, เบ™เบฑเป‰เบ™เปเบกเปˆเบ™, TCP เบชเปเบฒเบฅเบฑเบšเบซเบผเบฒเบเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡. เบ„เบงเบฒเบกเบˆเบดเบ‡, เบกเบฑเบ™เป„เบ”เป‰เบ–เบทเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเบชเปเบฒเบฅเบฑเบšเบงเบฝเบเบ‡เบฒเบ™เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เบซเบกเบปเบ” - เบชเปเบฒเบฅเบฑเบšเป‚เบ—เบฅเบฐเบชเบฑเบšเบชเบฐเบซเบผเบฒเบ”เบ—เบตเปˆเบกเบตเบญเบธเบ›เบฐเบเบญเบ™เป€เบ„เบทเบญเบ‚เปˆเบฒเบเบซเบผเบฒเบ. เป€เบžเบทเปˆเบญเป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบเบฒเบ™เป‚เบญเบ™เบซเบผเบทเป€เบฎเบฑเบ”เป‚เบซเบกเบ”เบ•เบปเป‰เบ™เบ•เป / เบชเปเบฒเบฎเบญเบ‡เบ‚เปเป‰เบกเบนเบ™, เบเบปเบ™เป„เบเป„เบ”เป‰เบ–เบทเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเบ—เบตเปˆเป‚เบ›เปˆเบ‡เปƒเบชเบชเป‰เบฒเบ‡เบซเบผเบฒเบเบซเบปเบงเบ‚เปเป‰ (sessions) เบชเปเบฒเบฅเบฑเบšเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เปเบฅเบฐเบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ›เปˆเบฝเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบžเบงเบเบกเบฑเบ™เป„เบ”เป‰เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡เบ„เบงเบฒเบกเบฅเบปเป‰เบกเป€เบซเบผเบง. เบซเบผเบท, เบ”เบฑเปˆเบ‡เบ—เบตเปˆเบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป€เบงเบปเป‰เบฒ, เบ‚เบฐเบซเบเบฒเบเปเบšเบ™เบงเบดเบ”เบชเบนเบ‡เบชเบธเบ”.

เปเบ•เปˆเบกเบต nuance เบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰. เป€เบžเบทเปˆเบญเป€เบ‚เบปเป‰เบฒเปƒเบˆเบงเปˆเบฒเบกเบฑเบ™เปเบกเปˆเบ™เบซเบเบฑเบ‡, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบ•เป‰เบญเบ‡เป€เบšเบดเปˆเบ‡เบงเบดเบ—เบตเบเบฒเบ™เบชเป‰เบฒเบ‡เบชเบฒเบเบ™เป‰เปเบฒ.
เป€เบ„เบทเบญเบ‚เปˆเบฒเบเบ—เบตเปˆเบ›เบดเปˆเบ™เบ›เบปเบงเบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡: เบ„เบงเบฒเบกเบกเบฐเบซเบฑเบ”เบชเบฐเบˆเบฑเบ™เบ‚เบญเบ‡ Flow Label เปเบฅเบฐเบ™เบฑเบเบชเบทเบšเบ—เบตเปˆเบขเบนเปˆเบญเป‰เบญเบกเบฎเบญเบš Linux kernel. เบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™ Yandex

เบเบฐเบ—เบนเป‰เบ–เบทเบเบ•เบฑเป‰เบ‡เบ•เบฒเบกเบฅเปเบฒเบ”เบฑเบš. เบเบฐเปเบชเบ—เบณเบญเบดเบ”เบ–เบทเบเบ•เบดเบ”เบ•เบฑเป‰เบ‡เบเปˆเบญเบ™. เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เบเบฒเบ™เป„เบซเบผเป€เบ‚เบปเป‰เบฒเบ•เปเปˆเบกเบฒเบ–เบทเบเบ•เบฑเป‰เบ‡เบ„เปˆเบฒเป‚เบ”เบเปƒเบŠเป‰ cookie เบ—เบตเปˆเบ•เบปเบเบฅเบปเบ‡เปเบฅเป‰เบงเบžเบฒเบเปƒเบ™เบซเบปเบงเบ‚เปเป‰เบ™เบฑเป‰เบ™. เปเบฅเบฐเบ™เบตเป‰เปเบกเปˆเบ™เบšเบฑเบ™เบซเบฒ.
เป€เบ„เบทเบญเบ‚เปˆเบฒเบเบ—เบตเปˆเบ›เบดเปˆเบ™เบ›เบปเบงเบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡: เบ„เบงเบฒเบกเบกเบฐเบซเบฑเบ”เบชเบฐเบˆเบฑเบ™เบ‚เบญเบ‡ Flow Label เปเบฅเบฐเบ™เบฑเบเบชเบทเบšเบ—เบตเปˆเบขเบนเปˆเบญเป‰เบญเบกเบฎเบญเบš Linux kernel. เบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™ Yandex

เบšเบฑเบ™เบซเบฒเปเบกเปˆเบ™เบงเปˆเบฒเบ–เป‰เบฒเบเบฐเบ—เบนเป‰เบ—เปเบฒเบญเบดเบ”เบšเปเปˆเป„เบ”เป‰เบ•เบดเบ”เบ•เบฑเป‰เบ‡, เบเบฐเบ—เบนเป‰เบ—เบตเบชเบญเบ‡เปเบฅเบฐเบ—เบตเบชเบฒเบกเบˆเบฐเบšเปเปˆเบ‚เบถเป‰เบ™. เบ™เบฑเป‰เบ™เปเบกเปˆเบ™, multipath TCP เบšเปเปˆเป„เบ”เป‰เปเบเป‰เป„เบ‚เบเบฒเบ™เบชเบนเบ™เป€เบชเบเปเบžเบฑเบเป€เบเบฑเบ” SYN เปƒเบ™เบเบฐเปเบชเบ—เปเบฒเบญเบดเบ”. เปเบฅเบฐเบ–เป‰เบฒ SYN เบซเบฒเบเป„เบ›, multipath TCP เบเบฒเบเป€เบ›เบฑเบ™ TCP เบ›เบปเบเบเบฐเบ•เบด. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เปƒเบ™เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบชเบนเบ™เบ‚เปเป‰เบกเบนเบ™, เบกเบฑเบ™เบˆเบฐเบšเปเปˆเบŠเปˆเบงเบเบžเบงเบเป€เบฎเบปเบฒเปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเบเบฒเบ™เบชเบนเบ™เป€เบชเบเปƒเบ™เป‚เบฎเบ‡เบ‡เบฒเบ™เปเบฅเบฐเบฎเบฝเบ™เบฎเบนเป‰เบงเบดเบ—เบตเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบซเบผเบฒเบเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡เบ„เบงเบฒเบกเบฅเบปเป‰เบกเป€เบซเบผเบง.
เป€เบ„เบทเบญเบ‚เปˆเบฒเบเบ—เบตเปˆเบ›เบดเปˆเบ™เบ›เบปเบงเบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡: เบ„เบงเบฒเบกเบกเบฐเบซเบฑเบ”เบชเบฐเบˆเบฑเบ™เบ‚เบญเบ‡ Flow Label เปเบฅเบฐเบ™เบฑเบเบชเบทเบšเบ—เบตเปˆเบขเบนเปˆเบญเป‰เบญเบกเบฎเบญเบš Linux kernel. เบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™ Yandex

เบชเบดเปˆเบ‡เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบŠเปˆเบงเบเบžเบงเบเป€เบฎเบปเบฒ? เบšเบฒเบ‡เบชเปˆเบงเบ™เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เป„เบ”เป‰เบ„เบฒเบ”เป€เบ”เบปเบฒเปเบฅเป‰เบงเบˆเบฒเบเบŠเบทเปˆเบ—เบตเปˆเบžเบฒเบเบชเบฐเบซเบ™เบฒเบกเบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เปƒเบ™เป€เบฅเบทเปˆเบญเบ‡เบ•เปเปˆเป„เบ›เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเป€เบ›เบฑเบ™เบžเบฒเบเบชเบฐเบซเบ™เบฒเบกเบซเบปเบงเบ‚เปเป‰ IPv6 flow label header. เปเบ—เป‰เบˆเบดเบ‡เปเบฅเป‰เบง, เบ™เบตเป‰เปเบกเปˆเบ™เบžเบฒเบเบชเบฐเบซเบ™เบฒเบกเบ—เบตเปˆเบ›เบฒเบเบปเบ”เบขเบนเปˆเปƒเบ™ v6, เบกเบฑเบ™เบšเปเปˆเปเบกเปˆเบ™เบขเบนเปˆเปƒเบ™ v4, เบกเบฑเบ™เปƒเบŠเป‰เป€เบงเบฅเบฒ 20 bits, เปเบฅเบฐเบกเบตเบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡เบเบฑเบ™เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ‚เบญเบ‡เบกเบฑเบ™เป€เบ›เบฑเบ™เป€เบงเบฅเบฒเบ”เบปเบ™. เบ™เบตเป‰เปเบกเปˆเบ™เบซเบ™เป‰เบฒเบชเบปเบ™เปƒเบˆเบซเบผเบฒเบ - เบกเบตเบเบฒเบ™เบ‚เบฑเบ”เปเบเป‰เบ‡, เบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เป„เบ”เป‰เบ–เบทเบเปเบเป‰เป„เบ‚เบขเบนเปˆเปƒเบ™เบ‚เบญเบšเบ‚เบญเบ‡ RFC, เปเบฅเบฐเปƒเบ™เป€เบงเบฅเบฒเบ”เบฝเบงเบเบฑเบ™, เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เป„เบ”เป‰เบ›เบฒเบเบปเบ”เบขเบนเปˆเปƒเบ™ Linux kernel เบ—เบตเปˆเบšเปเปˆเป€เบ„เบตเบเบกเบตเป€เบญเบเบฐเบชเบฒเบ™เปƒเบ”เป†.
เป€เบ„เบทเบญเบ‚เปˆเบฒเบเบ—เบตเปˆเบ›เบดเปˆเบ™เบ›เบปเบงเบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡: เบ„เบงเบฒเบกเบกเบฐเบซเบฑเบ”เบชเบฐเบˆเบฑเบ™เบ‚เบญเบ‡ Flow Label เปเบฅเบฐเบ™เบฑเบเบชเบทเบšเบ—เบตเปˆเบขเบนเปˆเบญเป‰เบญเบกเบฎเบญเบš Linux kernel. เบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™ Yandex

เบ‚เป‰เบญเบเบ‚เปเปเบ™เบฐเบ™เปเบฒเปƒเบซเป‰เป€เบˆเบปเป‰เบฒเป€เบ‚เบปเป‰เบฒเบฎเปˆเบงเบกเบเบฑเบšเบ‚เป‰เบญเบเปƒเบ™เบเบฒเบ™เบชเบทเบšเบชเบงเบ™เป€เบฅเบฑเบเบ™เป‰เบญเบ. เบฅเบญเบ‡เป€เบšเบดเปˆเบ‡เบชเบดเปˆเบ‡เบ—เบตเปˆเป€เบเบตเบ”เบ‚เบถเป‰เบ™เปƒเบ™ kernel Linux เปƒเบ™เบชเบญเบ‡เบชเบฒเบกเบ›เบตเบœเปˆเบฒเบ™เบกเบฒ.

เป€เบ„เบทเบญเบ‚เปˆเบฒเบเบ—เบตเปˆเบ›เบดเปˆเบ™เบ›เบปเบงเบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡: เบ„เบงเบฒเบกเบกเบฐเบซเบฑเบ”เบชเบฐเบˆเบฑเบ™เบ‚เบญเบ‡ Flow Label เปเบฅเบฐเบ™เบฑเบเบชเบทเบšเบ—เบตเปˆเบขเบนเปˆเบญเป‰เบญเบกเบฎเบญเบš Linux kernel. เบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™ Yandex

เบ›เบต 2014. เบงเบดเบชเบฐเบงเบฐเบเบญเบ™เบˆเบฒเบเบšเปเบฅเบดเบชเบฑเบ”เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆเปเบฅเบฐเบกเบตเบŠเบทเปˆเบชเบฝเบ‡เป€เบžเบตเปˆเบกเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ‚เบญเบ‡ Linux kernel เบเบฒเบ™เป€เบžเบดเปˆเบ‡เบžเบฒเบญเบฒเป„เบชเบกเบนเบ™เบ„เปˆเบฒเบ‚เบญเบ‡เบ›เป‰เบฒเบเบŠเบทเปˆเบเบฒเบ™เป„เบซเบผเปƒเบชเปˆ hash เบ‚เบญเบ‡เป€เบ•เบปเป‰เบฒเบฎเบฑเบš. เบžเบงเบเป€เบ‚เบปเบฒเบžเบฐเบเบฒเบเบฒเบกเปเบเป‰เป„เบ‚เบซเบเบฑเบ‡เบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰? เบ™เบตเป‰เปเบกเปˆเบ™เบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบš RFC 6438 เป€เบŠเบดเปˆเบ‡เป„เบ”เป‰เบ›เบถเบเบชเบฒเบซเบฒเบฅเบทเบเปˆเบฝเบงเบเบฑเบšเบšเบฑเบ™เบซเบฒเบ•เปเปˆเป„เบ›เบ™เบตเป‰. เบžเบฒเบเปƒเบ™เบชเบนเบ™เบ‚เปเป‰เบกเบนเบ™, IPv4 เบกเบฑเบเบˆเบฐเบ–เบทเบเบซเบธเป‰เบกเบซเปเปˆเบขเบนเปˆเปƒเบ™เบŠเบธเบ” IPv6, เป€เบžเบฒเบฐเบงเปˆเบฒเป‚เบฎเบ‡เบ‡เบฒเบ™เป€เบญเบ‡เปเบกเปˆเบ™ IPv6, เปเบ•เปˆ IPv4 เบˆเบฐเบ•เป‰เบญเบ‡เบ–เบทเบเบกเบญเบšเปƒเบซเป‰เบšเบฒเบ‡เบขเปˆเบฒเบ‡. เบชเปเบฒเบฅเบฑเบšเป€เบงเบฅเบฒเบ”เบปเบ™เบ™เบฒเบ™เบกเบตเบšเบฑเบ™เบซเบฒเบเบฑเบšเบชเบฐเบซเบงเบดเบ”เบ—เบตเปˆเบšเปเปˆเบชเบฒเบกเบฒเบ”เป€เบšเบดเปˆเบ‡เบžเบฒเบเปƒเบ•เป‰เบชเบญเบ‡เบซเบปเบง IP เป€เบžเบทเปˆเบญเป„เบ›เบซเบฒ TCP เบซเบผเบท UDP เปเบฅเบฐเบŠเบญเบเบซเบฒ src_ports, dst_ports เบขเบนเปˆเบ—เบตเปˆเบ™เบฑเป‰เบ™. เบกเบฑเบ™เป„เบ”เป‰เบซเบฑเบ™เบญเบญเบเบงเปˆเบฒ hash, เบ–เป‰เบฒเบ—เปˆเบฒเบ™เป€เบšเบดเปˆเบ‡เบชเบญเบ‡เบซเบปเบง IP เบ—เปเบฒเบญเบดเบ”, เป„เบ”เป‰เบเบฒเบเป€เบ›เบฑเบ™เบเบฒเบ™เปเบเป‰เป„เบ‚เป€เบเบทเบญเบšเบ—เบฑเบ‡เบซเบกเบปเบ”. เป€เบžเบทเปˆเบญเบซเบผเบตเบเป€เบงเบฑเป‰เบ™เบเบฒเบ™เบ™เบตเป‰, เป€เบžเบทเปˆเบญเปƒเบซเป‰เบเบฒเบ™เบ”เบธเปˆเบ™เบ”เปˆเบฝเบ‡เบ‚เบญเบ‡เบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™ encapsulated เบ™เบตเป‰เป€เบฎเบฑเบ”เบงเบฝเบเบขเปˆเบฒเบ‡เบ–เบทเบเบ•เป‰เบญเบ‡, เบกเบฑเบ™เป„เบ”เป‰เบ–เบทเบเบชเบฐเป€เบซเบ™เบตเปƒเบซเป‰เป€เบžเบตเปˆเบก hash เบˆเบฒเบ 5-tuple encapsulated packet เบเบฑเบšเบกเบนเบ™เบ„เปˆเบฒเบ‚เบญเบ‡เบžเบฒเบเบชเบฐเบซเบ™เบฒเบกเบ›เป‰เบฒเบเบŠเบทเปˆเบเบฒเบ™เป„เบซเบผ. เบ›เบฐเบกเบฒเบ™เบ”เบฝเบงเบเบฑเบ™เป„เบ”เป‰เบ–เบทเบเป€เบฎเบฑเบ”เบชเปเบฒเบฅเบฑเบšเป‚เบ„เบ‡เบเบฒเบ™ encapsulation เบญเบทเปˆเบ™เป†, เบชเปเบฒเบฅเบฑเบš UDP, เบชเปเบฒเบฅเบฑเบš GRE, เปƒเบ™เบชเบธเบ”เบ—เป‰เบฒเบเบžเบฒเบเบชเบฐเบซเบ™เบฒเบก GRE Key เป„เบ”เป‰เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰. เบšเปเปˆโ€‹เบ—เบฒเบ‡โ€‹เปƒเบ”โ€‹เบ—เบฒเบ‡โ€‹เบซเบ™เบถเปˆเบ‡, เป€เบ›เบปเป‰เบฒโ€‹เบซเบกเบฒเบโ€‹เบขเบนเปˆโ€‹เบ—เบตเปˆโ€‹เบ™เบตเป‰โ€‹เปเบกเปˆเบ™โ€‹เบˆเบฐโ€‹เปเบˆเป‰เบ‡. เปเบฅเบฐเบขเปˆเบฒเบ‡เบซเบ™เป‰เบญเบเปƒเบ™เป€เบงเบฅเบฒเบ™เบฑเป‰เบ™, เบžเบงเบเป€เบ‚เบปเบฒเบกเบตเบ›เบฐเป‚เบซเบเบ”.

เป€เบ„เบทเบญเบ‚เปˆเบฒเบเบ—เบตเปˆเบ›เบดเปˆเบ™เบ›เบปเบงเบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡: เบ„เบงเบฒเบกเบกเบฐเบซเบฑเบ”เบชเบฐเบˆเบฑเบ™เบ‚เบญเบ‡ Flow Label เปเบฅเบฐเบ™เบฑเบเบชเบทเบšเบ—เบตเปˆเบขเบนเปˆเบญเป‰เบญเบกเบฎเบญเบš Linux kernel. เบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™ Yandex

เปƒเบ™เบ›เบต 2015, patch เปƒเบซเบกเปˆเปเบกเปˆเบ™เบกเบฒเบˆเบฒเบเบงเบดเบชเบฐเบงเบฐเบเบญเบ™เบ—เบตเปˆเป€เบ„เบปเบฒเบฅเบปเบšเบ”เบฝเบงเบเบฑเบ™. เบฅเบฒเบงเปเบกเปˆเบ™เบซเบ™เป‰เบฒเบชเบปเบ™เปƒเบˆเบซเบผเบฒเบ. เบกเบฑเบ™เบšเบญเบเบงเปˆเบฒเบ•เปเปˆเป„เบ›เบ™เบตเป‰ - เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐ Randomize hash เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡เป€เบซเบ”เบเบฒเบ™เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบฅเบปเบš. เป€เบซเบ”เบเบฒเบ™เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบฅเบปเบšเปเบกเปˆเบ™เบซเบเบฑเบ‡? เบ™เบตเป‰เปเบกเปˆเบ™ RTO เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบชเบปเบ™เบ—เบฐเบ™เบฒเบเปˆเบญเบ™เบซเบ™เป‰เบฒเบ™เบตเป‰, เบ™เบฑเป‰เบ™เปเบกเปˆเบ™, เบเบฒเบ™เบชเบนเบ™เป€เบชเบเบซเบฒเบ‡เบ‚เบญเบ‡เบ›เปˆเบญเบ‡เบขเป‰เบฝเบกเปเบกเปˆเบ™เป€เบซเบ”เบเบฒเบ™เบ—เบตเปˆเป€เบ›เบฑเบ™เบ—เบฒเบ‡เบฅเบปเบšเปเบ—เป‰เป†. เปเบ—เป‰เบˆเบดเบ‡เปเบฅเป‰เบง, เบกเบฑเบ™เบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡เบเบฒเบเบ—เบตเปˆเบˆเบฐเบ„เบฒเบ”เป€เบ”เบปเบฒเบงเปˆเบฒเบกเบฑเบ™เปเบกเปˆเบ™เบซเบเบฑเบ‡.

เป€เบ„เบทเบญเบ‚เปˆเบฒเบเบ—เบตเปˆเบ›เบดเปˆเบ™เบ›เบปเบงเบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡: เบ„เบงเบฒเบกเบกเบฐเบซเบฑเบ”เบชเบฐเบˆเบฑเบ™เบ‚เบญเบ‡ Flow Label เปเบฅเบฐเบ™เบฑเบเบชเบทเบšเบ—เบตเปˆเบขเบนเปˆเบญเป‰เบญเบกเบฎเบญเบš Linux kernel. เบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™ Yandex

2016, เบšเปเบฅเบดเบชเบฑเบ”เบ—เบตเปˆเป€เบ„เบปเบฒเบฅเบปเบšเบญเบทเปˆเบ™, เบเบฑเบ‡เปƒเบซเบเปˆ. เบกเบฑเบ™ parses crutches เบชเบธเบ”โ€‹เบ—เป‰เบฒเบโ€‹เปเบฅเบฐโ€‹เป€เบฎเบฑเบ”โ€‹เปƒเบซเป‰โ€‹เบกเบฑเบ™โ€‹เบ”เบฑเปˆเบ‡โ€‹เบ™เบฑเป‰เบ™ hash เบ—เบตเปˆโ€‹เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เป„เบ”เป‰โ€‹เป€เบฎเบฑเบ”โ€‹เปƒเบซเป‰โ€‹เบœเปˆเบฒเบ™โ€‹เบกเบฒโ€‹เปเบšเบšโ€‹เบชเบธเปˆเบกโ€‹เปƒเบ™โ€‹เบ›เบฑเบ”โ€‹เบˆเบธโ€‹เบšเบฑเบ™โ€‹เบกเบตโ€‹เบเบฒเบ™โ€‹เบ›เปˆเบฝเบ™โ€‹เปเบ›เบ‡โ€‹เปƒเบ™โ€‹เบ—เบธเบ SYN retransmit เปเบฅเบฐโ€‹เบซเบผเบฑเบ‡โ€‹เบˆเบฒเบโ€‹เบ—เบธเบ RTO timeout. เปเบฅเบฐเปƒเบ™เบˆเบปเบ”เบซเบกเบฒเบเบชเบฐเบšเบฑเบšเบ™เบตเป‰, เบ„เบฑเป‰เบ‡เบ—เปเบฒเบญเบดเบ”เปเบฅเบฐเบชเบธเบ”เบ—เป‰เบฒเบ, เป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเบชเบธเบ”เบ—เป‰เบฒเบเบชเบฝเบ‡ - เป€เบžเบทเปˆเบญเปƒเบซเป‰เปเบ™เปˆเปƒเบˆเบงเปˆเบฒเบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡เบเบฒเบ™เบชเบนเบ™เป€เบชเบเบซเบผเบท overload เบ‚เบญเบ‡เบŠเปˆเบญเบ‡เบ—เบฒเบ‡เบกเบตเบ„เบงเบฒเบกเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ‚เบญเบ‡ rerouting เบญเปˆเบญเบ™, เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบซเบผเบฒเบ. เปเบ™เปˆเบ™เบญเบ™, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบกเบตเบซเบผเบฒเบเบชเบดเปˆเบ‡เบžเบดเบก, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบŠเบญเบเบซเบฒเบžเบงเบเบกเบฑเบ™เป„เบ”เป‰เบ‡เปˆเบฒเบ.

เป€เบ„เบทเบญเบ‚เปˆเบฒเบเบ—เบตเปˆเบ›เบดเปˆเบ™เบ›เบปเบงเบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡: เบ„เบงเบฒเบกเบกเบฐเบซเบฑเบ”เบชเบฐเบˆเบฑเบ™เบ‚เบญเบ‡ Flow Label เปเบฅเบฐเบ™เบฑเบเบชเบทเบšเบ—เบตเปˆเบขเบนเปˆเบญเป‰เบญเบกเบฎเบญเบš Linux kernel. เบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™ Yandex

เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบšเปเปˆ, เบ—เปˆเบฒเบ™เบšเปเปˆเบชเบฒเบกเบฒเบ”, เป€เบžเบฒเบฐเบงเปˆเบฒเบเบฑเบ‡เบšเปเปˆเบ—เบฑเบ™เบกเบตเบชเบดเปˆเบ‡เบžเบดเบกเบ”เบฝเบงเบเปˆเบฝเบงเบเบฑเบšเบซเบปเบงเบ‚เปเป‰เบ™เบตเป‰. เปเบ•เปˆเบžเบงเบเป€เบฎเบปเบฒเบฎเบนเป‰!

เป€เบ„เบทเบญเบ‚เปˆเบฒเบเบ—เบตเปˆเบ›เบดเปˆเบ™เบ›เบปเบงเบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡: เบ„เบงเบฒเบกเบกเบฐเบซเบฑเบ”เบชเบฐเบˆเบฑเบ™เบ‚เบญเบ‡ Flow Label เปเบฅเบฐเบ™เบฑเบเบชเบทเบšเบ—เบตเปˆเบขเบนเปˆเบญเป‰เบญเบกเบฎเบญเบš Linux kernel. เบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™ Yandex

เปเบฅเบฐเบ–เป‰เบฒเบซเบฒเบเบงเปˆเบฒเบ—เปˆเบฒเบ™เบšเปเปˆเป€เบ‚เบปเป‰เบฒเปƒเบˆเบขเปˆเบฒเบ‡เป€เบ•เบฑเบกเบชเปˆเบงเบ™เบชเบดเปˆเบ‡เบ—เบตเปˆเป„เบ”เป‰เป€เบฎเบฑเบ”, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบˆเบฐเบšเบญเบเบ—เปˆเบฒเบ™เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™.
เป€เบ„เบทเบญเบ‚เปˆเบฒเบเบ—เบตเปˆเบ›เบดเปˆเบ™เบ›เบปเบงเบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡: เบ„เบงเบฒเบกเบกเบฐเบซเบฑเบ”เบชเบฐเบˆเบฑเบ™เบ‚เบญเบ‡ Flow Label เปเบฅเบฐเบ™เบฑเบเบชเบทเบšเบ—เบตเปˆเบขเบนเปˆเบญเป‰เบญเบกเบฎเบญเบš Linux kernel. เบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™ Yandex

เบชเบดเปˆเบ‡เบ—เบตเปˆเป„เบ”เป‰เป€เบฎเบฑเบ”เปเบฅเป‰เบง, เบซเบ™เป‰เบฒเบ—เบตเปˆเปƒเบ”เบ—เบตเปˆเบ–เบทเบเป€เบžเบตเปˆเบกเป€เบ‚เบปเป‰เบฒเปƒเบ™ Linux kernel? Gesh เบ›เปˆเบฝเบ™เป€เบ›เบฑเบ™เบ„เปˆเบฒเบชเบธเปˆเบกเบซเบผเบฑเบ‡เบˆเบฒเบเปเบ•เปˆเบฅเบฐเป€เบซเบ”เบเบฒเบ™ RTO. เบ™เบตเป‰เปเบกเปˆเบ™เบœเบปเบ™เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบฅเบปเบšเบ„เบทเบเบฑเบ™. hash เบ‚เบทเป‰เบ™เบเบฑเบš a nosh เปเบฅเบฐเบ›เป‰เบฒเบ flow เบ‚เบถเป‰เบ™เบเบฑเบš skb hash. เบกเบตเบเบฒเบ™เบ„เบดเบ”เป„เบฅเปˆเบšเบฒเบ‡เบขเปˆเบฒเบ‡เบเปˆเบฝเบงเบเบฑเบšเบซเบ™เป‰เบฒเบ—เบตเปˆเบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰, เบฅเบฒเบเบฅเบฐเบญเบฝเบ”เบ—เบฑเบ‡เบซเบกเบปเบ”เบšเปเปˆเบชเบฒเบกเบฒเบ”เบ–เบทเบเบˆเบฑเบ”เปƒเบชเปˆเปƒเบ™เบชเบฐเป„เบฅเป‰เบ”เบฝเบง. เบ–เป‰เบฒเปƒเบœเบขเบฒเบเบฎเบนเป‰, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบœเปˆเบฒเบ™เบฅเบฐเบซเบฑเบ” kernel เปเบฅเบฐเบเบงเบ”เป€เบšเบดเปˆเบ‡.

เบชเบดเปˆเบ‡เบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰? เบ„เปˆเบฒเบ‚เบญเบ‡เบŠเปˆเบญเบ‡เบ›เป‰เบฒเบเบเบฒเบ™เป„เบซเบผเบ›เปˆเบฝเบ™เป€เบ›เบฑเบ™เบ•เบปเบงเป€เบฅเบเบชเบธเปˆเบกเบซเบผเบฑเบ‡เบˆเบฒเบเปเบ•เปˆเบฅเบฐ RTO. เบญเบฑเบ™เบ™เบตเป‰เบกเบตเบœเบปเบ™เบเบฐเบ—เบปเบšเปเบ™เบงเปƒเบ”เบ•เปเปˆเบเบฐเปเบช TCP เบ—เบตเปˆเป‚เบŠเบเบšเปเปˆเบ”เบตเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ?
เป€เบ„เบทเบญเบ‚เปˆเบฒเบเบ—เบตเปˆเบ›เบดเปˆเบ™เบ›เบปเบงเบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡: เบ„เบงเบฒเบกเบกเบฐเบซเบฑเบ”เบชเบฐเบˆเบฑเบ™เบ‚เบญเบ‡ Flow Label เปเบฅเบฐเบ™เบฑเบเบชเบทเบšเบ—เบตเปˆเบขเบนเปˆเบญเป‰เบญเบกเบฎเบญเบš Linux kernel. เบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™ Yandex

เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡ SACK, เบšเปเปˆเบกเบตเบซเบเบฑเบ‡เบ›เปˆเบฝเบ™เปเบ›เบ‡เป€เบžเบฒเบฐเบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบžเบฐเบเบฒเบเบฒเบกเบชเบปเปˆเบ‡เบŠเบธเบ”เบ—เบตเปˆเบชเบนเบ™เป€เบชเบเบ—เบตเปˆเบฎเบนเป‰เบˆเบฑเบ. เบกเบฒเป€เบ–เบดเบ‡เบ•เบญเบ™เบ™เบฑเป‰เบ™เบ”เบตเบซเบผเบฒเบ.
เป€เบ„เบทเบญเบ‚เปˆเบฒเบเบ—เบตเปˆเบ›เบดเปˆเบ™เบ›เบปเบงเบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡: เบ„เบงเบฒเบกเบกเบฐเบซเบฑเบ”เบชเบฐเบˆเบฑเบ™เบ‚เบญเบ‡ Flow Label เปเบฅเบฐเบ™เบฑเบเบชเบทเบšเบ—เบตเปˆเบขเบนเปˆเบญเป‰เบญเบกเบฎเบญเบš Linux kernel. เบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™ Yandex

เปเบ•เปˆเปƒเบ™เบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡ RTO, เบชเบฐเบซเบ™เบญเบ‡เปƒเบซเป‰เบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เป€เบžเบตเปˆเบกเบ›เป‰เบฒเบเบเบฒเบ™เป„เบซเบผเป€เบ‚เบปเป‰เบฒเบเบฑเบšเบซเบ™เป‰เบฒเบ—เบตเปˆ hash เปƒเบ™ ToR, เบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เบชเบฒเบกเบฒเบ”เบ›เบฐเบ•เบดเบšเบฑเบ”เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™. เปเบฅเบฐเบเบปเบ™เบซเบผเบฒเบ, เบกเบฑเบ™เบกเบฑเบเบˆเบฐเบŠเบญเบเบซเบฒเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบ—เบตเปˆเบšเปเปˆเป„เบ”เป‰เบฎเบฑเบšเบœเบปเบ™เบเบฐเบ—เบปเบšเบˆเบฒเบเบญเบธเบ›เบฐเบ•เบดเป€เบซเบ”เปƒเบ™เบญเบธเบ›เบฐเบเบญเบ™เบชเบฐเป€เบžเบฒเบฐเปƒเบ”เบซเบ™เบถเปˆเบ‡.
เป€เบ„เบทเบญเบ‚เปˆเบฒเบเบ—เบตเปˆเบ›เบดเปˆเบ™เบ›เบปเบงเบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡: เบ„เบงเบฒเบกเบกเบฐเบซเบฑเบ”เบชเบฐเบˆเบฑเบ™เบ‚เบญเบ‡ Flow Label เปเบฅเบฐเบ™เบฑเบเบชเบทเบšเบ—เบตเปˆเบขเบนเปˆเบญเป‰เบญเบกเบฎเบญเบš Linux kernel. เบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™ Yandex

เบšเบฑเบ™เบซเบฒเบซเบ™เบถเปˆเบ‡เบเบฑเบ‡เบ„เบปเบ‡เบขเบนเปˆ - RTO. เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบญเบทเปˆเบ™, เปเบ™เปˆเบ™เบญเบ™, เปเบกเปˆเบ™เบžเบปเบšเป€เบซเบฑเบ™, เปเบ•เปˆเปƒเบŠเป‰เป€เบงเบฅเบฒเบซเบผเบฒเบเปƒเบ™เบกเบฑเบ™. 200ms เปเบกเปˆเบ™เบซเบผเบฒเบ. เบญเบฑเบ™เบ—เบตเบชเบญเบ‡เปเบกเปˆเบ™เป‚เบ”เบเบ—เบปเปˆเบงเป„เบ›เปเบฅเป‰เบงเบ„เบงเบฒเบกเบ›เปˆเบฒเบ—เปเบฒเบกเบฐเบŠเบฒเบ”. เบเปˆเบญเบ™เบซเบ™เป‰เบฒเบ™เบตเป‰, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เป€เบงเบปเป‰เบฒเบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบซเบกเบปเบ”เป€เบงเบฅเบฒเบ—เบตเปˆเบเปเบฒเบ™เบปเบ”เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบงเบดเบ™เบฒเบ—เบตเปเบกเปˆเบ™เป€เบงเบฅเบฒเบซเบกเบปเบ”เป€เบงเบฅเบฒเบ—เบตเปˆเบกเบฑเบเบˆเบฐเบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เปƒเบ™เบฅเบฐเบ”เบฑเบšเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ, เปเบฅเบฐเปƒเบ™เบ™เบตเป‰เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบˆเบฐเบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡เบ–เบทเบเบ•เป‰เบญเบ‡. เบเบดเปˆเบ‡เป„เบ›เบเบงเปˆเบฒเบ™เบฑเป‰เบ™, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป€เบฎเบฑเบ”เบŠเป‰เปเบฒเบญเบตเบ, RTT เบ—เบตเปˆเปเบ—เป‰เบˆเบดเบ‡เบžเบฒเบเปƒเบ™เบชเบนเบ™เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบ—เบฑเบ™เบชเบฐเป„เบซเบกเปเบกเปˆเบ™เบ›เบฐเบกเบฒเบ™ 1 millisecond.
เป€เบ„เบทเบญเบ‚เปˆเบฒเบเบ—เบตเปˆเบ›เบดเปˆเบ™เบ›เบปเบงเบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡: เบ„เบงเบฒเบกเบกเบฐเบซเบฑเบ”เบชเบฐเบˆเบฑเบ™เบ‚เบญเบ‡ Flow Label เปเบฅเบฐเบ™เบฑเบเบชเบทเบšเบ—เบตเปˆเบขเบนเปˆเบญเป‰เบญเบกเบฎเบญเบš Linux kernel. เบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™ Yandex

เบชเบดเปˆเบ‡เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เป„เบ”เป‰เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบซเบกเบปเบ”เป€เบงเบฅเบฒ RTO? เบเบฒเบ™เบซเบกเบปเบ”เป€เบงเบฅเบฒเบ—เบตเปˆเบฎเบฑเบšเบœเบดเบ”เบŠเบญเบš RTO เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡เบเบฒเบ™เบชเบนเบ™เป€เบชเบเปเบžเบฑเบเป€เบเบฑเบ”เบ‚เปเป‰เบกเบนเบ™เบชเบฒเบกเบฒเบ”เบ–เบทเบเบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡เบ‡เปˆเบฒเบเบ”เบฒเบเบˆเบฒเบเบžเบทเป‰เบ™เบ—เบตเปˆเบœเบนเป‰เปƒเบŠเป‰: เบกเบตเบœเบปเบ™เบ›เบฐเป‚เบซเบเบ” IP, เปเบฅเบฐเบซเบ™เบถเปˆเบ‡เปƒเบ™เบ•เบปเบงเบเปเบฒเบ™เบปเบ”เบเบฒเบ™เบ‚เบญเบ‡เบกเบฑเบ™เบ›เบฐเบเบญเบšเบ”เป‰เบงเบ rto_min เบ”เบฝเบงเบเบฑเบ™. เบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเบงเปˆเบฒ, เปเบ™เปˆเบ™เบญเบ™, เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป€เบฎเบฑเบ”เปƒเบซเป‰ RTO เบšเปเปˆเปเบกเปˆเบ™เบ—เบปเปˆเบงเป‚เบฅเบ, เปเบ•เปˆเบชเปเบฒเบฅเบฑเบšเบ„เปเบฒเบ™เปเบฒเบซเบ™เป‰เบฒ, เบเบปเบ™เป„เบเบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเป€เบšเบดเปˆเบ‡เบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡เป€เบฎเบฑเบ”เบงเบฝเบ.
เป€เบ„เบทเบญเบ‚เปˆเบฒเบเบ—เบตเปˆเบ›เบดเปˆเบ™เบ›เบปเบงเบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡: เบ„เบงเบฒเบกเบกเบฐเบซเบฑเบ”เบชเบฐเบˆเบฑเบ™เบ‚เบญเบ‡ Flow Label เปเบฅเบฐเบ™เบฑเบเบชเบทเบšเบ—เบตเปˆเบขเบนเปˆเบญเป‰เบญเบกเบฎเบญเบš Linux kernel. เบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™ Yandex

เปเบกเปˆเบ™เปเบฅเป‰เบง, เบ”เป‰เบงเบ SYN_RTO เบ—เบธเบเบขเปˆเบฒเบ‡เปเบกเปˆเบ™เบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡เบฎเป‰เบฒเบเปเบฎเบ‡เบ‚เบถเป‰เบ™. เบกเบฑเบ™เบ–เบทเบเบ•เบปเบšเปเบ•เปˆเบ‡เบ•เบฒเบกเบ—เปเบฒเบกเบฐเบŠเบฒเบ”. เบกเบนเบ™เบ„เปˆเบฒเปเบกเปˆเบ™เบ„เบปเบ‡เบขเบนเปˆเปƒเบ™เบซเบผเบฑเบ - 1 เบงเบดเบ™เบฒเบ—เบต, เปเบฅเบฐเบ™เบฑเป‰เบ™เปเบกเปˆเบ™เบกเบฑเบ™. เบ—เปˆเบฒเบ™เบšเปเปˆเบชเบฒเบกเบฒเบ”เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบกเบฑเบ™เป„เบ”เป‰เบˆเบฒเบเบžเบทเป‰เบ™เบ—เบตเปˆเบœเบนเป‰เปƒเบŠเป‰. เบกเบตเบžเบฝเบ‡เปเบ•เปˆเบงเบดเบ—เบตเบ”เบฝเบง.
เป€เบ„เบทเบญเบ‚เปˆเบฒเบเบ—เบตเปˆเบ›เบดเปˆเบ™เบ›เบปเบงเบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡: เบ„เบงเบฒเบกเบกเบฐเบซเบฑเบ”เบชเบฐเบˆเบฑเบ™เบ‚เบญเบ‡ Flow Label เปเบฅเบฐเบ™เบฑเบเบชเบทเบšเบ—เบตเปˆเบขเบนเปˆเบญเป‰เบญเบกเบฎเบญเบš Linux kernel. เบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™ Yandex

eBPF เบกเบฒเบŠเปˆเบงเบ. เป€เบงเบปเป‰เบฒเบ‡เปˆเบฒเบเป†, เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เปเบกเปˆเบ™เป‚เบ„เบ‡เบเบฒเบ™ C เบ‚เบฐเบซเบ™เบฒเบ”เบ™เป‰เบญเบ, เบžเบงเบเป€เบ‚เบปเบฒเบชเบฒเบกเบฒเบ”เบ–เบทเบเปƒเบชเปˆเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™ hooks เปƒเบ™เบชเบฐเบ–เบฒเบ™เบ—เบตเปˆเบ•เปˆเบฒเบ‡เป†เปƒเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ‚เบญเบ‡ kernel stack เปเบฅเบฐ TCP stack, เป€เบŠเบดเปˆเบ‡เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ›เปˆเบฝเบ™เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบˆเปเบฒเบ™เบงเบ™เบซเบฅเบฒเบ. เป‚เบ”เบเบ—เบปเปˆเบงเป„เบ›, eBPF เปเบกเปˆเบ™เปเบ™เบงเป‚เบ™เป‰เบกเปƒเบ™เป„เบฅเบเบฐเบเบฒเบง. เปเบ—เบ™เบ—เบตเปˆเบˆเบฐ sawing เบซเบผเบฒเบเบชเบดเบšเบ•เบปเบงเบเปเบฒเบ™เบปเบ”เบเบฒเบ™ sysctl เปƒเบซเบกเปˆเปเบฅเบฐเบ‚เบฐเบซเบเบฒเบเบœเบปเบ™เบ›เบฐเป‚เบซเบเบ” IP, เบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เป„เบซเบงเปเบกเปˆเบ™เบขเบนเปˆเปƒเบ™เบ—เบดเบ”เบ—เบฒเบ‡เบ‚เบญเบ‡ eBPF เปเบฅเบฐเบ‚เบฐเบซเบเบฒเบเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ‚เบญเบ‡เบกเบฑเบ™. เบ”เป‰เบงเบ eBPF, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ›เปˆเบฝเบ™เบเบฒเบ™เบ„เบงเบšเบ„เบธเบกเบ„เบงเบฒเบกเปเบญเบญเบฑเบ” เปเบฅเบฐเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ TCP เบญเบทเปˆเบ™เป†เปเบšเบšเป€เบ„เบทเปˆเบญเบ™เป„เบซเบงเป„เบ”เป‰.
เป€เบ„เบทเบญเบ‚เปˆเบฒเบเบ—เบตเปˆเบ›เบดเปˆเบ™เบ›เบปเบงเบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡: เบ„เบงเบฒเบกเบกเบฐเบซเบฑเบ”เบชเบฐเบˆเบฑเบ™เบ‚เบญเบ‡ Flow Label เปเบฅเบฐเบ™เบฑเบเบชเบทเบšเบ—เบตเปˆเบขเบนเปˆเบญเป‰เบญเบกเบฎเบญเบš Linux kernel. เบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™ Yandex

เปเบ•เปˆเบกเบฑเบ™เป€เบ›เบฑเบ™เบชเบดเปˆเบ‡เบชเปเบฒเบ„เบฑเบ™เบชเปเบฒเบฅเบฑเบšเบžเบงเบเป€เบฎเบปเบฒเบงเปˆเบฒเบ”เป‰เบงเบเบเบฒเบ™เบŠเปˆเบงเบเป€เบซเบผเบทเบญเบ‚เบญเบ‡เบกเบฑเบ™เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบšเบดเบ”เบ„เปˆเบฒเบ‚เบญเบ‡ SYN_RTO. เปเบฅเบฐเบกเบตเบ•เบปเบงเบขเปˆเบฒเบ‡เบ—เบตเปˆเบ›เบฐเบเบฒเบ”เบชเบฒเบ—เบฒเบฅเบฐเบ™เบฐ: https://elixir.bootlin.com/linux/latest/source/samples/bpf/tcp_synrto_kern.c. เป€เบฎเบฑเบ”เบซเบเบฑเบ‡เปเบ”เปˆเบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰? เบ•เบปเบงเบขเปˆเบฒเบ‡เปเบกเปˆเบ™เป€เบฎเบฑเบ”เบงเบฝเบ, เปเบ•เปˆเปƒเบ™เบ•เบปเบงเบ‚เบญเบ‡เบกเบฑเบ™เป€เบญเบ‡เปเบกเปˆเบ™ rough เบซเบผเบฒเบ. เบกเบฑเบ™เบชเบปเบกเบกเบธเบ”เบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰เบงเปˆเบฒเบžเบฒเบเปƒเบ™เบชเบนเบ™เบ‚เปเป‰เบกเบนเบ™เบžเบงเบเป€เบฎเบปเบฒเบ›เบฝเบšเบ—เบฝเบš 44 bits เบ—เปเบฒเบญเบดเบ”, เบ–เป‰เบฒเบžเบงเบเป€เบ‚เบปเบฒเบเบปเบ‡เบเบฑเบ™, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเบŠเบญเบเบซเบฒเบ•เบปเบงเป€เบฎเบปเบฒเป€เบญเบ‡เบžเบฒเบเปƒเบ™ DC. เปเบฅเบฐเปƒเบ™เบเปเบฅเบฐเบ™เบตเบ™เบตเป‰, เบžเบงเบเป€เบฎเบปเบฒเบ›เปˆเบฝเบ™เบ„เปˆเบฒเบ‚เบญเบ‡ SYN_RTO timeout เป€เบ›เบฑเบ™ 4ms. เบงเบฝเบเบ‡เบฒเบ™เบ”เบฝเบงเบเบฑเบ™เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เป„เบ”เป‰เบซเบผเบฒเบ gracefully. เปเบ•เปˆเบ•เบปเบงเบขเปˆเบฒเบ‡เบ—เบตเปˆเบ‡เปˆเบฒเบเบ”เบฒเบเบ™เบตเป‰เบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™เบชเบดเปˆเบ‡เบ—เบตเปˆเป€เบ›เบฑเบ™) เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰; b) เบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡เบ‡เปˆเบฒเบ.

เป€เบ„เบทเบญเบ‚เปˆเบฒเบเบ—เบตเปˆเบ›เบดเปˆเบ™เบ›เบปเบงเบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡: เบ„เบงเบฒเบกเบกเบฐเบซเบฑเบ”เบชเบฐเบˆเบฑเบ™เบ‚เบญเบ‡ Flow Label เปเบฅเบฐเบ™เบฑเบเบชเบทเบšเบ—เบตเปˆเบขเบนเปˆเบญเป‰เบญเบกเบฎเบญเบš Linux kernel. เบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™ Yandex

เป€เบฎเบปเบฒเบฎเบนเป‰เบซเบเบฑเบ‡เปเบฅเป‰เบง? เบงเปˆเบฒเบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒ planar เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ›เบฑเบšเบ‚เบฐเบซเบ™เบฒเบ”เป„เบ”เป‰, เบกเบฑเบ™เบˆเบฐเบเบฒเบเป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”เบ—เบตเปˆเบชเบธเบ”เบชเปเบฒเบฅเบฑเบšเบžเบงเบเป€เบฎเบปเบฒเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเป€เบ›เบตเบ”เบ›เป‰เบฒเบเบเบฒเบ™เป„เบซเบผเปƒเบชเปˆ ToR เปเบฅเบฐเป„เบ”เป‰เบฎเบฑเบšเป‚เบญเบเบฒเบ”เบ—เบตเปˆเบˆเบฐเป„เบซเบผเป„เบ›เบ—เบปเปˆเบงเป€เบ‚เบ”เบ—เบตเปˆเบกเบตเบšเบฑเบ™เบซเบฒ. เบงเบดเบ—เบตเบ—เบตเปˆเบ”เบตเบ—เบตเปˆเบชเบธเบ”เบ—เบตเปˆเบˆเบฐเบซเบผเบธเบ”เบฅเบปเบ‡เบ„เปˆเบฒ RTO เปเบฅเบฐ SYN-RTO เปเบกเปˆเบ™เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เป‚เบ›เบผเปเบเบผเบก eBPF. เบ„เปเบฒเบ–เบฒเบกเบเบฑเบ‡เบ„เบปเบ‡เบขเบนเปˆ: เบกเบฑเบ™เบ›เบญเบ”เป„เบžเบšเปเบ—เบตเปˆเบˆเบฐเปƒเบŠเป‰เบ›เป‰เบฒเบเบ™เป‰เปเบฒเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ”เบธเปˆเบ™เบ”เปˆเบฝเบ‡? เปเบฅเบฐเบกเบต nuance เบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰.
เป€เบ„เบทเบญเบ‚เปˆเบฒเบเบ—เบตเปˆเบ›เบดเปˆเบ™เบ›เบปเบงเบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡: เบ„เบงเบฒเบกเบกเบฐเบซเบฑเบ”เบชเบฐเบˆเบฑเบ™เบ‚เบญเบ‡ Flow Label เปเบฅเบฐเบ™เบฑเบเบชเบทเบšเบ—เบตเปˆเบขเบนเปˆเบญเป‰เบญเบกเบฎเบญเบš Linux kernel. เบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™ Yandex

เบชเบปเบกเบกเบธเบ”เบงเปˆเบฒเบ—เปˆเบฒเบ™เบกเบตเบšเปเบฅเบดเบเบฒเบ™เบขเบนเปˆเปƒเบ™เป€เบ„เบทเบญเบ‚เปˆเบฒเบเบ—เบตเปˆเบญเบฒเปƒเบชเบขเบนเปˆเปƒเบ™ anycast. เปเบ•เปˆเบซเบ™เป‰เบฒเป€เบชเบเบ”เบฒเบ, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบšเปเปˆเบกเบตเป€เบงเบฅเบฒเบ—เบตเปˆเบˆเบฐเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบฅเบฒเบเบฅเบฐเบญเบฝเบ”เบเปˆเบฝเบงเบเบฑเบš anycast, เปเบ•เปˆเบกเบฑเบ™เป€เบ›เบฑเบ™เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เปเบˆเบเบขเบฒเบเบ—เบตเปˆเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบ—เบฒเบ‡เบ”เป‰เบฒเบ™เบฎเปˆเบฒเบ‡เบเบฒเบเบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เบ—เบตเปˆเบกเบตเบขเบนเปˆเปƒเบ™เบ—เบตเปˆเบขเบนเปˆ IP เบ”เบฝเบงเบเบฑเบ™. เปเบฅเบฐเบ™เบตเป‰เปเบกเปˆเบ™เบšเบฑเบ™เบซเบฒเบ—เบตเปˆเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰: เป€เบซเบ”เบเบฒเบ™ RTO เบชเบฒเบกเบฒเบ”เป€เบเบตเบ”เบ‚เบทเป‰เบ™เบšเปเปˆเบžเบฝเบ‡เปเบ•เปˆเป€เบกเบทเปˆเบญเบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เบœเปˆเบฒเบ™เป‚เบฎเบ‡เบ‡เบฒเบ™. เบกเบฑเบ™เบเบฑเบ‡เบชเบฒเบกเบฒเบ”เป€เบเบตเบ”เบ‚เบทเป‰เบ™เป„เบ”เป‰เปƒเบ™เบฅเบฐเบ”เบฑเบš ToR buffer: เป€เบกเบทเปˆเบญเป€เบซเบ”เบเบฒเบ™ incast เป€เบเบตเบ”เบ‚เบถเป‰เบ™, เบกเบฑเบ™เบเปเปˆเบชเบฒเบกเบฒเบ”เป€เบเบตเบ”เบ‚เบทเป‰เบ™เบเบฑเบšเป€เบˆเบปเป‰เบฒเบžเบฒเบšเป€เบกเบทเปˆเบญ host spills เบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡. เป€เบกเบทเปˆเบญเป€เบซเบ”เบเบฒเบ™ RTO เป€เบเบตเบ”เบ‚เบถเป‰เบ™เปเบฅเบฐเบกเบฑเบ™เบ›เปˆเบฝเบ™เบ›เป‰เบฒเบเบเบฒเบ™เป„เบซเบผ. เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ™เบตเป‰, เบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เบญเบฒเบ”เบˆเบฐเป„เบ›เบซเบฒเบ•เบปเบงเบขเปˆเบฒเบ‡เบญเบฑเบ™เปƒเบ”เบญเบฑเบ™เปœเบถเปˆเบ‡. เบชเบปเบกเบกเบธเบ”เบงเปˆเบฒเบกเบฑเบ™เป€เบ›เบฑเบ™เบญเบฑเบ™เบ„เบฒเบชเบ—เปŒเบ—เบตเปˆเบกเบตเบฅเบฑเบ”, เบกเบฑเบ™เบกเบตเบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ - เบกเบฑเบ™เบชเบฒเบกเบฒเบ”เป€เบ›เบฑเบ™ L3 Balancer เบซเบผเบทเบšเบฒเบ‡เบšเปเบฅเบดเบเบฒเบ™เบญเบทเปˆเบ™เป†. เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เบšเบฑเบ™เบซเบฒเป€เบเบตเบ”เบ‚เบทเป‰เบ™, เป€เบžเบฒเบฐเบงเปˆเบฒเบซเบผเบฑเบ‡เบˆเบฒเบ RTO, เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ TCP เบกเบฒเบฎเบญเบ”เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ, เป€เบŠเบดเปˆเบ‡เบšเปเปˆเบฎเบนเป‰เบซเบเบฑเบ‡เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ TCP เบ™เบตเป‰. เปเบฅเบฐเบ–เป‰เบฒเบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเบกเบตเบเบฒเบ™เปเบšเปˆเบ‡เบ›เบฑเบ™เบ‚เบญเบ‡เบฅเบฑเบ”เบฅเบฐเบซเบงเปˆเบฒเบ‡เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเปƒเบ”เป†, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเบˆเบฐเบ–เบทเบเบซเบผเบธเบ”เบฅเบปเบ‡เปเบฅเบฐเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ TCP เบˆเบฐเปเบ•เบ.
เป€เบ„เบทเบญเบ‚เปˆเบฒเบเบ—เบตเปˆเบ›เบดเปˆเบ™เบ›เบปเบงเบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡: เบ„เบงเบฒเบกเบกเบฐเบซเบฑเบ”เบชเบฐเบˆเบฑเบ™เบ‚เบญเบ‡ Flow Label เปเบฅเบฐเบ™เบฑเบเบชเบทเบšเบ—เบตเปˆเบขเบนเปˆเบญเป‰เบญเบกเบฎเบญเบš Linux kernel. เบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™ Yandex

เบชเบดเปˆเบ‡เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เป„เบ”เป‰เบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰? เบžเบฒเบเปƒเบ™เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบ—เบตเปˆเบ„เบงเบšเบ„เบธเบกเบ‚เบญเบ‡เบ—เปˆเบฒเบ™, เบšเปˆเบญเบ™เบ—เบตเปˆเบ—เปˆเบฒเบ™เป€เบ›เบตเบ”เปƒเบŠเป‰เบเบฒเบ™เบ”เบธเปˆเบ™เบ”เปˆเบฝเบ‡เบ›เป‰เบฒเบเบเบฒเบ™เป„เบซเบผ, เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป„เบ”เป‰เปเบเป‰เป„เบ‚เบกเบนเบ™เบ„เปˆเบฒเบ‚เบญเบ‡เบ›เป‰เบฒเบเบเบฒเบ™เป„เบซเบผเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเปƒเบ”เป†. เบงเบดเบ—เบตเบ—เบตเปˆเบ‡เปˆเบฒเบเบ—เบตเปˆเบชเบธเบ”เปเบกเปˆเบ™เป€เบฎเบฑเบ”เบกเบฑเบ™เบœเปˆเบฒเบ™เป‚เบ„เบ‡เบเบฒเบ™ eBPF เบ”เบฝเบงเบเบฑเบ™. เปเบ•เปˆเบ™เบตเป‰เปเบกเปˆเบ™เบˆเบธเบ”เบชเปเบฒเบ„เบฑเบ™เบซเบผเบฒเบ - เบˆเบฐเป€เบฎเบฑเบ”เปเบ™เบงเปƒเบ”เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบšเปเปˆเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เป€เบ„เบทเบญเบ‚เปˆเบฒเบเบชเบนเบ™เบ‚เปเป‰เบกเบนเบ™, เปเบ•เปˆเป€เบ›เบฑเบ™เบœเบนเป‰เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เป‚เบ—เบฅเบฐเบ„เบปเบก? เบ™เบตเป‰เปเบกเปˆเบ™เบšเบฑเบ™เบซเบฒเบ‚เบญเบ‡เบ—เปˆเบฒเบ™เบ„เบทเบเบฑเบ™: เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ”เป‰เบงเบเบชเบฐเบšเบฑเบšเบ—เบตเปˆเปเบ™เปˆเบ™เบญเบ™เบ‚เบญเบ‡ Juniper เปเบฅเบฐ Arista, เบžเบงเบเบกเบฑเบ™เบ›เบฐเบเบญเบšเบกเบตเบ›เป‰เบฒเบเบŠเบทเปˆเบเบฒเบ™เป„เบซเบผเป€เบ‚เบปเป‰เบฒเบขเบนเปˆเปƒเบ™เบซเบ™เป‰เบฒเบ—เบตเปˆ hash เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™ - เป€เบžเบทเปˆเบญเบ„เบงเบฒเบกเบŠเบทเปˆเบชเบฑเบ”, เบชเปเบฒเบฅเบฑเบšเป€เบซเบ”เบœเบปเบ™เบ—เบตเปˆเบ‚เป‰เบญเบเบšเปเปˆเป€เบ‚เบปเป‰เบฒเปƒเบˆ. เบ™เบตเป‰เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เปƒเบซเป‰เบ—เปˆเบฒเบ™เบฅเบธเบ”เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ TCP เบˆเบฒเบเบœเบนเป‰เปƒเบŠเป‰เบœเปˆเบฒเบ™เป€เบ„เบทเบญเบ‚เปˆเบฒเบเบ‚เบญเบ‡เบ—เปˆเบฒเบ™. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบ‚เปเปเบ™เบฐเบ™เปเบฒเปƒเบซเป‰เบเบงเบ”เป€เบšเบดเปˆเบ‡เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ router เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เบขเบนเปˆเปƒเบ™เบชเบฐเบ–เบฒเบ™เบ—เบตเปˆเบ™เบตเป‰.

เบšเปเปˆเบงเบดเบ—เบตเบ—เบฒเบ‡เบซเบ™เบถเปˆเบ‡, เบกเบฑเบ™เป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒเบ‚เป‰เบญเบเบžเป‰เบญเบกเบ—เบตเปˆเบˆเบฐเบเป‰เบฒเบงเป„เบ›เบชเบนเปˆเบเบฒเบ™เบ—เบปเบ”เบฅเบญเบ‡.
เป€เบ„เบทเบญเบ‚เปˆเบฒเบเบ—เบตเปˆเบ›เบดเปˆเบ™เบ›เบปเบงเบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡: เบ„เบงเบฒเบกเบกเบฐเบซเบฑเบ”เบชเบฐเบˆเบฑเบ™เบ‚เบญเบ‡ Flow Label เปเบฅเบฐเบ™เบฑเบเบชเบทเบšเบ—เบตเปˆเบขเบนเปˆเบญเป‰เบญเบกเบฎเบญเบš Linux kernel. เบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™ Yandex

เป€เบกเบทเปˆเบญเบžเบงเบเป€เบฎเบปเบฒเป€เบ›เบตเบ”เบ›เป‰เบฒเบเบŠเบทเปˆเบเบฒเบ™เป„เบซเบผเป€เบ‚เบปเป‰เบฒเปƒเบชเปˆ ToR, เบเบฐเบเบฝเบก eBPF เบ‚เบญเบ‡เบ•เบปเบงเปเบ—เบ™, เป€เบŠเบดเปˆเบ‡เบ›เบฐเบˆเบธเบšเบฑเบ™เบ”เปเบฒเบฅเบปเบ‡เบŠเบตเบงเบดเบ”เบขเบนเปˆเปƒเบ™เป€เบˆเบปเป‰เบฒเบžเบฒเบš, เบžเบงเบเป€เบฎเบปเบฒเบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเบ—เบตเปˆเบˆเบฐเบšเปเปˆเบฅเปเบ–เป‰เบฒเบ„เบงเบฒเบกเบฅเบปเป‰เบกเป€เบซเบผเบงเบญเบฑเบ™เปƒเบซเบเปˆเบซเบผเบงเบ‡เบ•เปเปˆเป„เบ›, เปเบ•เปˆเป€เบžเบทเปˆเบญเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบฅเบฐเป€เบšเบตเบ”เบ—เบตเปˆเบ„เบงเบšเบ„เบธเบก. เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เป€เบญเบปเบฒ ToR, เบ—เบตเปˆเบกเบตเบชเบตเปˆ uplinks, เปเบฅเบฐเป„เบ”เป‰เบซเบผเบธเบ”เบฅเบปเบ‡เบเปˆเบฝเบงเบเบฑเบšเบซเบ™เบถเปˆเบ‡เปƒเบ™เบ™เบฑเป‰เบ™. เบžเบงเบเป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เปเบ•เป‰เบกเบเบปเบ”เบฅเบฐเบšเบฝเบš, เบžเบงเบเป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเป€เบงเบปเป‰เบฒเบงเปˆเบฒ - เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบ—เปˆเบฒเบ™เบเปเบฒเบฅเบฑเบ‡เบชเบนเบ™เป€เบชเบเบเบฒเบ™เบซเบธเป‰เบกเบซเปเปˆเบ—เบฑเบ‡เบซเบกเบปเบ”. เบ”เบฑเปˆเบ‡เบ—เบตเปˆเป€เบˆเบปเป‰เบฒเป€เบซเบฑเบ™เบขเบนเปˆเป€เบšเบทเป‰เบญเบ‡เบŠเป‰เบฒเบ, เบžเบงเบเป€เบฎเบปเบฒเบกเบตเบเบฒเบ™เบเบงเบ”เบชเบญเบšเบ•เปเปˆเบŠเบธเบ”, เป€เบŠเบดเปˆเบ‡เป„เบ”เป‰เบซเบผเบธเบ”เบฅเบปเบ‡เป€เบ–เบดเบ‡ 75%, เบ™เบฑเป‰เบ™เปเบกเปˆเบ™ 25% เบ‚เบญเบ‡เปเบžเบฑเบเป€เบเบฑเบ”เบ–เบทเบเบชเบนเบ™เป€เบชเบ. เบขเบนเปˆเป€เบšเบทเป‰เบญเบ‡เบ‚เบงเบฒเปเบกเปˆเบ™เบเบฒเบŸเบ‚เบญเบ‡เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบ—เบตเปˆเบขเบนเปˆเป€เบšเบทเป‰เบญเบ‡เบซเบผเบฑเบ‡ ToR เบ™เบตเป‰. เปƒเบ™เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เบˆเบดเบ‡, เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เปเบกเปˆเบ™เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เบ‚เบญเบ‡เบ‚เปเป‰เบ•เปเปˆเบเบฑเบšเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบžเบฒเบเปƒเบ™ rack. เบ”เบฑเปˆเบ‡เบ—เบตเปˆเบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบซเบฑเบ™เป„เบ”เป‰, เบžเบงเบเบกเบฑเบ™เบˆเบปเบกเบฅเบปเบ‡เบ•เปˆเปเบฒเบเบงเปˆเบฒ. เป€เบ›เบฑเบ™เบซเบเบฑเบ‡เบžเบงเบเป€เบ‚เบปเบฒเบˆเบปเบกเบฅเบปเบ‡เบ•เปˆเปเบฒ - เบšเปเปˆเปเบกเปˆเบ™ 25%, เปเบ•เปˆเปƒเบ™เบšเบฒเบ‡เบเปเบฅเบฐเบ™เบต 3-4 เป€เบ—เบทเปˆเบญ? เบ–เป‰เบฒเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ TCP เป‚เบŠเบเบšเปเปˆเบ”เบต, เบกเบฑเบ™เบเบฑเบ‡เบชเบทเบšเบ•เปเปˆเบžเบฐเบเบฒเบเบฒเบกเป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เป‚เบ”เบเบœเปˆเบฒเบ™เบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบšเบ—เบตเปˆเปเบ•เบเบซเบฑเบ. เบ™เบตเป‰เปเบกเปˆเบ™เบฎเป‰เบฒเบเปเบฎเบ‡เบ‚เบถเป‰เบ™เป‚เบ”เบเบžเบถเบ”เบ•เบดเบเปเบฒเบ›เบปเบเบเบฐเบ•เบดเบ‚เบญเบ‡เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบžเบฒเบเปƒเบ™ DC - เบชเปเบฒเบฅเบฑเบšเบซเบ™เบถเปˆเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเบ‚เบญเบ‡เบœเบนเป‰เปƒเบŠเป‰, เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เป N เบเบฑเบšเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบžเบฒเบเปƒเบ™เปเบกเปˆเบ™เบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™, เปเบฅเบฐเบเบฒเบ™เบ•เบญเบšเบชเบฐเบซเบ™เบญเบ‡เบˆเบฐเป„เบ›เบซเบฒเบœเบนเป‰เปƒเบŠเป‰, เบšเปเปˆเบงเปˆเบฒเบˆเบฐเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เบ•เบญเบšเบชเบฐเบซเบ™เบญเบ‡, เบซเบผเบทเป€เบงเบฅเบฒเบ—เบตเปˆเบซเบกเบปเบ”เป€เบงเบฅเบฒเบ–เบทเบเบเบฐเบ•เบธเป‰เบ™เบขเบนเปˆเบ—เบตเปˆ เบฅเบฐเบ”เบฑเบšเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ, เป€เบŠเบดเปˆเบ‡เบเบฑเบ‡เบ•เป‰เบญเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™ configure. เบ™เบฑเป‰เบ™เปเบกเปˆเบ™, เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เปเบกเปˆเบ™เบซเบผเบฒเบ, เบšเปเปˆเบ”เบตเบซเบผเบฒเบ.
เป€เบ„เบทเบญเบ‚เปˆเบฒเบเบ—เบตเปˆเบ›เบดเปˆเบ™เบ›เบปเบงเบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡: เบ„เบงเบฒเบกเบกเบฐเบซเบฑเบ”เบชเบฐเบˆเบฑเบ™เบ‚เบญเบ‡ Flow Label เปเบฅเบฐเบ™เบฑเบเบชเบทเบšเบ—เบตเปˆเบขเบนเปˆเบญเป‰เบญเบกเบฎเบญเบš Linux kernel. เบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™ Yandex

เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบเบฒเบ™เบ—เบปเบ”เบฅเบญเบ‡เบ”เบฝเบงเบเบฑเบ™, เปเบ•เปˆเบกเบตเบ›เป‰เบฒเบเบŠเบทเปˆเบเบฒเบ™เป„เบซเบผเป€เบ›เบตเบ”. เบ”เบฑเปˆเบ‡เบ—เบตเปˆเป€เบˆเบปเป‰เบฒเบชเบฒเบกเบฒเบ”เป€เบซเบฑเบ™เป„เบ”เป‰, เบขเบนเปˆเป€เบšเบทเป‰เบญเบ‡เบŠเป‰เบฒเบ, เบเบฒเบ™เบเบงเบ”เบชเบญเบš batch เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบˆเบปเบกเบฅเบปเบ‡เป‚เบ”เบ 25% เบ”เบฝเบงเบเบฑเบ™. เบ™เบตเป‰เปเบกเปˆเบ™เบ–เบทเบเบ•เป‰เบญเบ‡เบขเปˆเบฒเบ‡เปเบ—เป‰เบˆเบดเบ‡, เป€เบžเบฒเบฐเบงเปˆเบฒเบกเบฑเบ™เบšเปเปˆเบฎเบนเป‰เบซเบเบฑเบ‡เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบชเบปเปˆเบ‡เบ„เบทเบ™เปƒเบซเบกเปˆ, เบกเบฑเบ™เบชเบปเปˆเบ‡เบŠเบญเบ‡เปเบฅเบฐเบžเบฝเบ‡เปเบ•เปˆเบ™เบฑเบšเบญเบฑเบ”เบ•เบฒเบชเปˆเบงเบ™เบ‚เบญเบ‡เบˆเปเบฒเบ™เบงเบ™เบŠเบญเบ‡เบ—เบตเปˆเบชเบปเปˆเบ‡เปเบฅเบฐเบชเบนเบ™เป€เบชเบ.

เปเบฅเบฐเป€เบšเบทเป‰เบญเบ‡เบ‚เบงเบฒเปเบกเปˆเบ™เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™. เบ—เปˆเบฒเบ™เบˆเบฐเบšเปเปˆเบžเบปเบšเบœเบปเบ™เบเบฐเบ—เบปเบšเบ‚เบญเบ‡เบšเบฑเบ™เบซเบฒเบฎเปˆเบงเบกเบเบฑเบ™เบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰. เบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เปƒเบ™ milliseconds เบ”เบฝเบงเบเบฑเบ™เป„เบ”เป‰เป„เบซเบผเบญเบญเบเบˆเบฒเบเบžเบทเป‰เบ™เบ—เบตเปˆเบšเบฑเบ™เบซเบฒเป„เบ›เบซเบฒเบชเบฒเบก uplinks เบ—เบตเปˆเบเบฑเบ‡เป€เบซเบผเบทเบญเบ—เบตเปˆเบšเปเปˆเป„เบ”เป‰เบฎเบฑเบšเบœเบปเบ™เบเบฐเบ—เบปเบšเบˆเบฒเบเบšเบฑเบ™เบซเบฒ. เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบฎเบฑเบšเป€เบ„เบทเบญเบ‚เปˆเบฒเบเบ—เบตเปˆเบ›เบดเปˆเบ™เบ›เบปเบงเบ•เบปเบ™เป€เบญเบ‡.

เป€เบ„เบทเบญเบ‚เปˆเบฒเบเบ—เบตเปˆเบ›เบดเปˆเบ™เบ›เบปเบงเบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡: เบ„เบงเบฒเบกเบกเบฐเบซเบฑเบ”เบชเบฐเบˆเบฑเบ™เบ‚เบญเบ‡ Flow Label เปเบฅเบฐเบ™เบฑเบเบชเบทเบšเบ—เบตเปˆเบขเบนเปˆเบญเป‰เบญเบกเบฎเบญเบš Linux kernel. เบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™ Yandex

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

เบชเปเบฒเบฅเบฑเบšเบงเบดเบชเบฐเบงเบฐเบเบญเบ™เป€เบ„เบทเบญเบ‚เปˆเบฒเบ, เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เปเบ™เบงเบ„เบงเบฒเบกเบ„เบดเบ”เบ•เป‰เบญเบ‡เป€เบเบตเบ”เบ‚เบถเป‰เบ™: เป€เบ„เบทเบญเบ‚เปˆเบฒเบเบšเปเปˆเป„เบ”เป‰เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ”เป‰เบงเบ ToR, เบšเปเปˆเปเบกเปˆเบ™เบเบฑเบšเบญเบธเบ›เบฐเบเบญเบ™เป€เบ„เบทเบญเบ‚เปˆเบฒเบ, เปเบ•เปˆเบกเบตเป€เบˆเบปเป‰เบฒเบžเบฒเบš. เบ•เบปเบงเบขเปˆเบฒเบ‡เบ—เบตเปˆเป‚เบ”เบ”เป€เบ”เบฑเปˆเบ™เปเบกเปˆเบ™เบงเบดเบ—เบตเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเปƒเบŠเป‰ eBPF เบ—เบฑเบ‡เบชเบญเบ‡เป€เบžเบทเปˆเบญเบ›เปˆเบฝเบ™ RTO เปเบฅเบฐเปเบเป‰เป„เบ‚เบ›เป‰เบฒเบเบเบฒเบ™เป„เบซเบผเป„เบ›เบชเบนเปˆเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เปƒเบ”เป†.

เบเบปเบ™เป„เบเบ›เป‰เบฒเบเบเบฒเบ™เป„เบซเบผเปเบกเปˆเบ™เปเบ™เปˆเบ™เบญเบ™เบงเปˆเบฒเป€เบซเบกเบฒเบฐเบชเบปเบกเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบญเบทเปˆเบ™เป†เบžเบฒเบเปƒเบ™เบžเบฒเบเบชเปˆเบงเบ™เบšเปเบฅเบดเบซเบฒเบ™เบ—เบตเปˆเบ„เบงเบšเบ„เบธเบก. เบ™เบตเป‰เบชเบฒเบกเบฒเบ”เป€เบ›เบฑเบ™เบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบชเบนเบ™เบ‚เปเป‰เบกเบนเบ™, เบซเบผเบทเบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰เบเบปเบ™เป„เบเบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเปƒเบ™เบงเบดเบ—เบตเบเบฒเบ™เบžเบดเป€เบชเบ”เป€เบžเบทเปˆเบญเบ„เบงเบšเบ„เบธเบกเบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เบ‚เบฒเบญเบญเบ. เปเบ•เปˆเบ‚เป‰เบญเบเบˆเบฐเป€เบงเบปเป‰เบฒเบเปˆเบฝเบงเบเบฑเบšเป€เบฅเบทเปˆเบญเบ‡เบ™เบตเป‰, เบ‚เป‰เบญเบเบซเบงเบฑเบ‡เบงเปˆเบฒ, เปƒเบ™เบ„เบฑเป‰เบ‡เบ•เปเปˆเป„เบ›. เบ‚เบญเบšเปƒเบˆเบซเบผเบฒเบเป†เบชเบณเบฅเบฑเบšเบ„เบงเบฒเบกเบชเบปเบ™เปƒเบˆเบ‚เบญเบ‡เป€เบˆเบปเป‰เบฒ.

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: www.habr.com