рдЖрдЬ рдЖрдореНрд╣реА рдЖрдордЪреНрдпрд╛ рд╡рд╛рдЪрдХрд╛рдВрд╕рд╛рдареА SDN рдирд┐рдпрдВрддреНрд░рдХрд╛рдВрдЪреА рдирд┐рд╡рдб рддрдпрд╛рд░ рдХреЗрд▓реА рдЖрд╣реЗ рдЬреА GitHub рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдВрджреНрд╡рд╛рд░реЗ рд╕рдХреНрд░рд┐рдпрдкрдгреЗ рд╕рдорд░реНрдерд┐рдд рдЖрд╣реЗрдд рдЖрдгрд┐ Linux Foundation рд╕рд╛рд░рдЦреНрдпрд╛ рдореЛрдареНрдпрд╛ рдУрдкрди рд╕реЛрд░реНрд╕ рдлрд╛рдЙрдВрдбреЗрд╢рдирджреНрд╡рд╛рд░реЗ.
/рдлреНрд▓рд┐рдХрд░/
рдУрдкрдирдбреЗрд▓рд╛рдЗрдЯ
OpenDaylight рд╣реЗ рдореЛрдареНрдпрд╛ рдкреНрд░рдорд╛рдгрд╛рдд SDN рдиреЗрдЯрд╡рд░реНрдХ рд╕реНрд╡рдпрдВрдЪрд▓рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЦреБрд▓реЗ рдореЙрдбреНрдпреВрд▓рд░ рдкреНрд▓реЕрдЯрдлреЙрд░реНрдо рдЖрд╣реЗ. рддреНрдпрд╛рдЪреА рдкрд╣рд┐рд▓реА рдЖрд╡реГрддреНрддреА 2013 рдордзреНрдпреЗ рдЖрд▓реА, рдЬреА рдереЛрдбреНрдпрд╛ рд╡реЗрд│рд╛рдиреЗ рд▓рд┐рдирдХреНрд╕ рдлрд╛рдЙрдВрдбреЗрд╢рдирдЪрд╛ рднрд╛рдЧ рдмрдирд▓реА. рдпрд╛ рд╡рд░реНрд╖реАрдЪреНрдпрд╛ рдорд╛рд░реНрдЪрдордзреНрдпреЗ
рдХрдВрдЯреНрд░реЛрд▓рд░рдордзреНрдпреЗ рд╡реНрд╣рд░реНрдЪреНрдпреБрдЕрд▓ рдиреЗрдЯрд╡рд░реНрдХ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдПрдХ рдкреНрд░рдгрд╛рд▓реА, рд╡рд┐рд╡рд┐рдз рдкреНрд░реЛрдЯреЛрдХреЙрд▓рд▓рд╛ рд╕рдорд░реНрдерди рджреЗрдгреНрдпрд╛рд╕рд╛рдареА рдкреНрд▓рдЧрдЗрдирдЪрд╛ рд╕рдВрдЪ рдЖрдгрд┐ рдкреВрд░реНрдг-рд╡реИрд╢рд┐рд╖реНрдЯреНрдпреАрдХреГрдд SDN рдкреНрд▓реЕрдЯрдлреЙрд░реНрдо рддреИрдирд╛рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЙрдкрдпреБрдХреНрддрддрд╛ рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдЖрд╣реЗ. API рдЪреЗ рдЖрднрд╛рд░
рдкреНрд▓реЕрдЯрдлреЙрд░реНрдо
Lighty.io
SDN рдирд┐рдпрдВрддреНрд░рдХ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╣реЗ рдПрдХ рдЦреБрд▓реЗ рдлреНрд░реЗрдорд╡рд░реНрдХ рдЖрд╣реЗ. рд╣реЗ OpenDaylight рдкреНрд▓реЕрдЯрдлреЙрд░реНрдорд╡рд░ рдЖрдзрд╛рд░рд┐рдд SDK рдЖрд╣реЗ. Lighty.io рдкреНрд░рдХрд▓реНрдкрд╛рдЪреЗ рдЙрджреНрджрд┐рд╖реНрдЯ Java, Python рдЖрдгрд┐ Go рдордзреАрд▓ SDN рд╕реЛрд▓реНрдпреВрд╢рдиреНрд╕рдЪрд╛ рд╡рд┐рдХрд╛рд╕ рд╕реБрд▓рдн рдЖрдгрд┐ рд╡реЗрдЧрд╡рд╛рди рдХрд░рдгреЗ рдЖрд╣реЗ.
рдлреНрд░реЗрдорд╡рд░реНрдХ SDN рд╡рд╛рддрд╛рд╡рд░рдг рдбреАрдмрдЧ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдореЛрдареНрдпрд╛ рдкреНрд░рдорд╛рдгрд╛рдд рд╕рд╛рдзрдиреЗ рдСрдлрд░ рдХрд░рддреЗ. рд╡рд┐рд╢реЗрд╖рддрдГ, Lighty.io рддреБрдореНрд╣рд╛рд▓рд╛ рдиреЗрдЯрд╡рд░реНрдХ рдЙрдкрдХрд░рдгрд╛рдВрдЪреЗ рдЕрдиреБрдХрд░рдг рдХрд░рдгреНрдпрд╛рд╕ рдЖрдгрд┐ рддреНрдпрд╛рдВрдЪреЗ рд╡рд░реНрддрди рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд░рдгреНрдпрд╛рд╕ рдЕрдиреБрдорддреА рджреЗрддреЗ. рд╣реЗ рдШрдЯрдХ рд▓рдХреНрд╖рд╛рдд рдШреЗрдгреНрдпрд╛рд╕рд╛рд░рдЦреЗ рджреЗрдЦреАрд▓ рдЖрд╣реЗ
Lighty.io in рд╡рд╛рдкрд░реВрди SDN рдНрдкреНрд▓рд┐рдХреЗрд╢рдиреНрд╕ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдорд╛рд░реНрдЧрджрд░реНрд╢рдХ рд╢реЛрдзрд╛
рдЖрдордЪреНрдпрд╛ рдХреЙрд░реНрдкреЛрд░реЗрдЯ рдмреНрд▓реЙрдЧрдордзреНрдпреЗ рд╡рд┐рд╖рдпрд╛рд╡рд░ рд╡рд╛рдЪрди:
рдХреЙрд░реНрдкреЛрд░реЗрдЯ рд╕реБрд░рдХреНрд╖рд╛: рдбреАрдПрд▓рдкреА рд╕рд┐рд╕реНрдЯрдордордзреНрдпреЗ рдбреАрдкреАрдЖрдп рддрдВрддреНрд░рдЬреНрдЮрд╛рди рдкрд╛рдпрд╛рдд рдЧреЛрд│реА: рдЖрдореНрд╣реА рджреВрд░рд╕рдВрдЪрд╛рд░ рдСрдкрд░реЗрдЯрд░ рдиреЗрдЯрд╡рд░реНрдХрдЪреНрдпрд╛ рдмрд╛рдВрдзрдХрд╛рдорд╛рддреАрд▓ рдЧрдВрднреАрд░ рдЪреБрдХрд╛рдВрдЪреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рддреЛ DDOS рдЖрдгрд┐ 5G: рдЬрд╛рдб тАЬрдкрд╛рдИрдктАЭ рдореНрд╣рдгрдЬреЗ рдЕрдзрд┐рдХ рд╕рдорд╕реНрдпрд╛
рдлреНрд▓рдбрд▓рд╛рдЗрдЯ
рддреЗ -
рджреНрд╡рд╛рд░рд╛
OESS
OpenFlow рд╕реНрд╡рд┐рдЪреЗрд╕ рдХреЙрдиреНрдлрд┐рдЧрд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╕реЙрдлреНрдЯрд╡реЗрдЕрд░ рдШрдЯрдХрд╛рдВрдЪрд╛ рд╕рдВрдЪ. OESS рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдВрд╕рд╛рдареА рдПрдХ рд╕рд╛рдзрд╛ рд╡реЗрдм рдЗрдВрдЯрд░рдлреЗрд╕ рддрд╕реЗрдЪ рд╡реЗрдм рд╕реЗрд╡рд╛рдВрд╕рд╛рдареА API рджреЗрддреЗ. рд╕реЛрд▓реНрдпреВрд╢рдирдЪреНрдпрд╛ рдлрд╛рдпрджреНрдпрд╛рдВрдордзреНрдпреЗ рдЕрдкрдпрд╢рд╛рдЪреНрдпрд╛ рдмрд╛рдмрддреАрдд рдмреЕрдХрдЕрдк рдЪреЕрдиреЗрд▓рд╡рд░ рд╕реНрд╡рдпрдВрдЪрд▓рд┐рдд рд╕реНрд╡рд┐рдЪ рдХрд░рдгреЗ рдЖрдгрд┐ рд╡реНрд╣рд┐рдЬреНрдпреБрдЕрд▓рд╛рдпрдЭреЗрд╢рди рдЯреВрд▓реНрд╕рдЪреА рдЙрдкрд▓рдмреНрдзрддрд╛ рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдЖрд╣реЗ. рдмрд╛рдзрдХ: рд╕реНрд╡рд┐рдЪ рдореЙрдбреЗрд▓реНрд╕рдЪреНрдпрд╛ рдорд░реНрдпрд╛рджрд┐рдд рд╕рдВрдЦреНрдпреЗрд╕рд╛рдареА рд╕рдорд░реНрдерди.
OESS рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдЖрдгрд┐ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдорд╛рд░реНрдЧрджрд░реНрд╢рдХ рд░реЗрдкреЙрдЬрд┐рдЯрд░реАрдордзреНрдпреЗ рдЖрд╣реЗ
/рдлреНрд▓рд┐рдХрд░/
рдЧрд╛рда
рд╣рд╛ рдПрдХ рдХрдВрдЯреНрд░реЛрд▓рд░ рдЖрд╣реЗ рдЬреНрдпрд╛рдЪреЗ рдиреЗрдЯрд╡рд░реНрдХ рдЕреЕрдмреНрд╕реНрдЯреНрд░реЕрдХреНрд╢рди рд▓реЗрд╡реНрд╣рд▓реНрд╕ SQL тАЛтАЛрдХреНрд╡реЗрд░реАрдЪреНрдпрд╛ рд╕реНрд╡рд░реВрдкрд╛рдд рджрд░реНрд╢рд╡рд┐рд▓реЗ рдЬрд╛рддрд╛рдд. рддреЗ рдХрдорд╛рдВрдб рд▓рд╛рдЗрдирджреНрд╡рд╛рд░реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрддрд╛рдд. рджреГрд╖реНрдЯрд┐рдХреЛрдирд╛рдЪрд╛ рдлрд╛рдпрджрд╛ рдЕрд╕рд╛ рдЖрд╣реЗ рдХреА, SQL рдореБрд│реЗ, рдХреНрд╡реЗрд░реА рдЬрд▓рдж рдкрд╛рдард╡рд▓реНрдпрд╛ рдЬрд╛рддрд╛рдд. рдпрд╛рд╡реНрдпрддрд┐рд░рд┐рдХреНрдд, рдЯреВрд▓ рддреБрдореНрд╣рд╛рд▓рд╛ рддреНрдпрд╛рдЪреНрдпрд╛ рд╕реНрд╡рдпрдВрдЪрд▓рд┐рдд рдСрд░реНрдХреЗрд╕реНрдЯреНрд░реЗрд╢рди рд╡реИрд╢рд┐рд╖реНрдЯреНрдпрд╛рджреНрд╡рд╛рд░реЗ рдЕреЕрдмреНрд╕реНрдЯреНрд░реЕрдХреНрд╢рдирдЪреЗ рдЕрдиреЗрдХ рд╕реНрддрд░ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдгреНрдпрд╛рд╕ рдЕрдиреБрдорддреА рджреЗрддреЗ. рд╕реЛрд▓реНрдпреВрд╢рдирдЪреНрдпрд╛ рддреЛрдЯреНрдпрд╛рдВрдордзреНрдпреЗ рд╡реНрд╣рд┐рдЬреНрдпреБрдЕрд▓рд╛рдпрдЭреЗрд╢рдирдЪреА рдХрдорддрд░рддрд╛ рдЖрдгрд┐ рдЕрднреНрдпрд╛рд╕ рдХрд░рдгреНрдпрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдЖрд╣реЗ
Ravel рд╕рд╣ рдХрд╛рдо рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЪрд░рдг-рджрд░-рдЪрд░рдг рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдпреЗрдереЗ рдЖрдврд│реВ рд╢рдХрддреЗ
рдУрдкрди рд╕рд┐рдХреНрдпреБрд░рд┐рдЯреА рдХрдВрдЯреНрд░реЛрд▓рд░
рд╡реНрд╣рд░реНрдЪреНрдпреБрдЕрд▓ рдиреЗрдЯрд╡рд░реНрдХрдЪреЗ рд╕рдВрд░рдХреНрд╖рдг рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╕реЙрдлреНрдЯрд╡реЗрдЕрд░-рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╕рд╛рдзрди. рд╣реЗ рдлрд╛рдпрд░рд╡реЙрд▓, рдШреБрд╕рдЦреЛрд░реА рдкреНрд░рддрд┐рдмрдВрдзрдХ рдкреНрд░рдгрд╛рд▓реА рдЖрдгрд┐ рдЕрдБрдЯреАрд╡реНрд╣рд╛рдпрд░рд╕рдЪреА рддреИрдирд╛рддреА рд╕реНрд╡рдпрдВрдЪрд▓рд┐рдд рдХрд░рддреЗ. OSC рд╕реБрд░рдХреНрд╖рд╛ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдЖрдгрд┐ рд╡рд┐рд╡рд┐рдз рд╕реБрд░рдХреНрд╖рд╛ рдХрд╛рд░реНрдпреЗ рдЖрдгрд┐ рд╡рд╛рддрд╛рд╡рд░рдг рдпрд╛рдВрдЪреНрдпрд╛рдд рдордзреНрдпрд╕реНрде рдореНрд╣рдгреВрди рдХрд╛рдо рдХрд░рддреЗ. рддреНрдпрд╛рдЪ рд╡реЗрд│реА, рддреЗ рдорд▓реНрдЯреАрдХреНрд▓рд╛рдЙрдбрд╕рд╣ рдХрд╛рд░реНрдп рдХрд░рдгреНрдпрд╛рд╕ рд╕рдХреНрд╖рдо рдЖрд╣реЗ.
OSC рдЪрд╛ рдлрд╛рдпрджрд╛ рдЕрд╕рд╛ рдЖрд╣реЗ рдХреА рддреЛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реЙрдлреНрдЯрд╡реЗрдЕрд░ рдХрд┐рдВрд╡рд╛ рд╣рд╛рд░реНрдбрд╡реЗрдЕрд░ рдЙрддреНрдкрд╛рджрдирд╛рдВрд╢реА рдЬреЛрдбрд▓реЗрд▓рд╛ рдирд╛рд╣реА. рддрдерд╛рдкрд┐, рд╕рд╛рдзрди рдореЛрдареНрдпрд╛ рдкреНрд░рдорд╛рдгрд╛рдд рдХреЙрд░реНрдкреЛрд░реЗрдЯ рдиреЗрдЯрд╡рд░реНрдХрд╕рд╣ рдХрд╛рд░реНрдп рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдбрд┐рдЭрд╛рдЗрди рдХреЗрд▓реЗ рдЖрд╣реЗ. рдпрд╛ рдХрд╛рд░рдгрд╛рд╕реНрддрд╡, рддреЗ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдкрдЪреНрдпрд╛ рдЧрд░рдЬрд╛рдВрд╕рд╛рдареА рдпреЛрдЧреНрдп рдЕрд╕рдгреНрдпрд╛рдЪреА рд╢рдХреНрдпрддрд╛ рдирд╛рд╣реА.
рдПрдХ рджреНрд░реБрдд рдкреНрд░рд╛рд░рдВрдн рдорд╛рд░реНрдЧрджрд░реНрд╢рдХ рдЖрдврд│реВ рд╢рдХрддреЗ
рдУрдПрдирдУрдПрд╕
SDN рдиреЗрдЯрд╡рд░реНрдХ рдЖрдгрд┐ рддреНрдпрд╛рдВрдЪреЗ рдШрдЯрдХ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╣реА рдПрдХ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдЖрд╣реЗ. рддреНрдпрд╛рдЪреЗ рд╡реИрд╢рд┐рд╖реНрдареНрдп рдореНрд╣рдгрдЬреЗ рддреЗ SDN рдХрдВрдЯреНрд░реЛрд▓рд░, рдиреЗрдЯрд╡рд░реНрдХ рдЖрдгрд┐ рд╕рд░реНрд╡реНрд╣рд░ OS рдЪреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдПрдХрддреНрд░ рдХрд░рддреЗ. рдпрд╛ рд╕рдВрдпреЛрдЬрдирд╛рдмрджреНрджрд▓ рдзрдиреНрдпрд╡рд╛рдж, рд╣реЗ рдЯреВрд▓ рддреБрдореНрд╣рд╛рд▓рд╛ рдиреЗрдЯрд╡рд░реНрдХреНрд╕рдордзреНрдпреЗ рдШрдбрдгрд╛рд▒реНрдпрд╛ рдкреНрд░рддреНрдпреЗрдХ рдЧреЛрд╖реНрдЯреАрдЪреЗ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░рдгреНрдпрд╛рд╕ рдЖрдгрд┐ рдкрд╛рд░рдВрдкрд╛рд░рд┐рдХ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░рдордзреВрди SDN рдХрдбреЗ рд╕реНрдерд▓рд╛рдВрддрд░ рд╕реБрд▓рдн рдХрд░рддреЗ.
рдкреНрд▓реЕрдЯрдлреЙрд░реНрдордЪреНрдпрд╛ "рдЕрдбрдерд│рд╛" рд▓рд╛ рд╕реБрд░рдХреНрд╖рд╛ рдореНрд╣рдЯрд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ. рддреНрдпрд╛рдиреБрд╕рд╛рд░
рдЖрдкрдг рдЕрдзрд┐рдХреГрдд рд╡рд░ рд╕рд╛рдзрди рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реВ рд╢рдХрддрд╛
рдЯрдВрдЧрд╕реНрдЯрди рдлреЕрдмреНрд░рд┐рдХ
рдпрд╛ рдкреНрд░рдХрд▓реНрдкрд╛рд▓рд╛ рдкреВрд░реНрд╡реА OpenContrail рдЕрд╕реЗ рдореНрд╣рдгрддрд╛рдд. рдкрд░рдВрддреБ рд▓рд┐рдирдХреНрд╕ рдлрд╛рдКрдВрдбреЗрд╢рдирдЪреНрдпрд╛ тАЬрд╡рд┐рдВрдЧрдЦрд╛рд▓реАтАЭ рд╣рд▓рд╡рд▓реНрдпрд╛рдирдВрддрд░ рддреНрдпрд╛рдЪреЗ рдирд╛рд╡ рдмрджрд▓рдгреНрдпрд╛рдд рдЖрд▓реЗ. рдЯрдВрдЧрд╕реНрдЯрди рдлреЕрдмреНрд░рд┐рдХ рд╣реЗ рдУрдкрди рдиреЗрдЯрд╡рд░реНрдХ рд╡рд░реНрдЪреНрдпреБрдЕрд▓рд╛рдпрдЭреЗрд╢рди рдкреНрд▓рдЧрдЗрди рдЖрд╣реЗ рдЬреЗ рд╡реНрд╣рд░реНрдЪреНрдпреБрдЕрд▓ рдорд╢реАрди, рдмреЗрдЕрд░-рдореЗрдЯрд▓ рд╡рд░реНрдХрд▓реЛрдб рдЖрдгрд┐ рдХрдВрдЯреЗрдирд░рд╕рд╣ рдХрд╛рд░реНрдп рдХрд░рддреЗ.
рдкреНрд▓рдЧрдЗрди рд▓реЛрдХрдкреНрд░рд┐рдп рдСрд░реНрдХреЗрд╕реНрдЯреНрд░реЗрд╢рди рд╕рд╛рдзрдирд╛рдВрд╕рд╣ рджреНрд░реБрддрдкрдгреЗ рдПрдХрддреНрд░рд┐рдд рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ: Openstack, Kubernetes, Openshift, vCenter. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдХреБрдмрд░реНрдиреЗрдЯреНрд╕рдордзреНрдпреЗ рдЯрдВрдЧрд╕реНрдЯрди рдлреЕрдмреНрд░рд┐рдХ рддреИрдирд╛рдд рдХрд░рдгреЗ
рдЯрдВрдЧрд╕реНрдЯрди рдлреЕрдмреНрд░рд┐рдХ рдЦреВрдк рдЖрд╣реЗ
Habr├й рд╡рд░реАрд▓ рдЖрдордЪреНрдпрд╛ рдмреНрд▓реЙрдЧрд╡рд░реАрд▓ рд╡рд┐рд╖рдпрд╛рд╡рд░реАрд▓ рдкреЛрд╕реНрдЯ:
рдиреЗрдЯ рдиреНрдпреВрдЯреНрд░реЕрд▓рд┐рдЯреАрдЪреА рд▓рдврд╛рдИ рдкреБрдирд░рд╛рдЧрдордирд╛рдЪреА рд╕рдВрдзреА рдЖрд╣реЗ PCIe 5.0 рд╡рд░ рдЖрдзрд╛рд░рд┐рдд рдирд╡реАрди рдорд╛рдирдХ CPU рдЖрдгрд┐ GPU рд▓рд╛ "рд▓рд┐рдВрдХ" рдХрд░реЗрд▓ - рдпрд╛рдмрджреНрджрд▓ рдХрд╛рдп рдорд╛рд╣рд┐рддреА рдЖрд╣реЗ SDN рдЕрдВрддрд░рд╛рд│рд╛рдд рд╕реЛрдбрд▓реЗ рдЬрд╛рдИрд▓: рддреЗ рдХрд╛ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ?
рд╕реНрддреНрд░реЛрдд: www.habr.com