ΠΡΠΈΠ²Π΅Ρ, ΠΌΠ΅Π½Ρ Π·ΠΎΠ²ΡΡ ΠΠ»Π΅ΠΊΡΠ°Π½Π΄Ρ ΠΠ·ΠΈΠΌΠΎΠ². Π Π―Π½Π΄Π΅ΠΊΡΠ΅ Ρ Π·Π°Π½ΠΈΠΌΠ°ΡΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΎΠΉ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠΈΡΡΠ΅ΠΌ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π°, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΡΠ°Π½ΡΠΏΠΎΡΡΠ½ΠΎΠΉ ΡΠ΅ΡΠ΅Π²ΠΎΠΉ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠΎΠΉ. ΠΠΎ ΡΠ΅Π³ΠΎΠ΄Π½Ρ ΡΠ°Π·Π³ΠΎΠ²ΠΎΡ ΠΏΠΎΠΉΠ΄Π΅Ρ ΠΎ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π΅ BGP.
ΠΠ΅Π΄Π΅Π»Ρ Π½Π°Π·Π°Π΄ Π―Π½Π΄Π΅ΠΊΡ Π²ΠΊΠ»ΡΡΠΈΠ» ROV (Route Origin Validation) Π½Π° ΡΡΡΠΊΠ°Ρ
ΡΠΎ Π²ΡΠ΅ΠΌΠΈ ΠΏΠΈΡΠΈΠ½Π³-ΠΏΠ°ΡΡΠ½Π΅ΡΠ°ΠΌΠΈ, Π° ΡΠ°ΠΊΠΆΠ΅ Ρ ΡΠΎΡΠΊΠ°ΠΌΠΈ ΠΎΠ±ΠΌΠ΅Π½Π° ΡΡΠ°ΡΠΈΠΊΠ°. Π ΡΠΎΠΌ, Π·Π°ΡΠ΅ΠΌ ΡΡΠΎ Π±ΡΠ»ΠΎ ΡΠ΄Π΅Π»Π°Π½ΠΎ ΠΈ ΠΊΠ°ΠΊ ΡΡΠΎ ΠΏΠΎΠ²Π»ΠΈΡΠ΅Ρ Π½Π° Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ°ΠΌΠΈ ΡΠ²ΡΠ·ΠΈ, ΡΠΈΡΠ°ΠΉΡΠ΅ Π½ΠΈΠΆΠ΅.
BGP ΠΈ ΡΡΠΎ Ρ Π½ΠΈΠΌ Π½Π΅ ΡΠ°ΠΊ
ΠΡ Π½Π°Π²Π΅ΡΠ½ΡΠΊΠ° Π·Π½Π°Π΅ΡΠ΅, ΡΡΠΎ BGP Π·Π°Π΄ΡΠΌΡΠ²Π°Π»ΡΡ ΠΊΠ°ΠΊ ΠΏΡΠΎΡΠΎΠΊΠΎΠ» ΠΌΠ΅ΠΆΠ΄ΠΎΠΌΠ΅Π½Π½ΠΎΠΉ ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΠΈ. ΠΠ΄Π½Π°ΠΊΠΎ Π·Π° Π²ΡΠ΅ΠΌΡ ΠΏΡΡΠΈ ΡΠΈΡΠ»ΠΎ ΡΠ·-ΠΊΠ΅ΠΉΡΠΎΠ² ΡΡΠΏΠ΅Π»ΠΎ ΠΏΠΎΠ΄ΡΠ°ΡΡΠΈ: ΡΠ΅Π³ΠΎΠ΄Π½Ρ BGP, Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ΠΌΠ½ΠΎΠ³ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΠΌ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡΠΌ, ΠΏΡΠ΅Π²ΡΠ°ΡΠΈΠ»ΡΡ Π² message bus, ΠΏΠΎΠΊΡΡΠ²Π°ΡΡΠΈΠΉ Π·Π°Π΄Π°ΡΠΈ ΠΎΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡΠΊΠΎΠ³ΠΎ VPN Π΄ΠΎ ΠΌΠΎΠ΄Π½ΠΎΠ³ΠΎ Π½ΡΠ½ΡΠ΅ SD-WAN, ΠΈ Π΄Π°ΠΆΠ΅ Π½Π°ΡΠ΅Π» ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΡΠ°Π½ΡΠΏΠΎΡΡΠ° Π΄Π»Ρ SDN-like-ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ°, ΠΏΡΠ΅Π²ΡΠ°ΡΠ°ΡΡΠ΅Π³ΠΎ distance vector BGP Π² Π½Π΅ΡΡΠΎ ΠΏΠΎΡ ΠΎΠΆΠ΅Π΅ Π½Π° links sate-ΠΏΡΠΎΡΠΎΠΊΠΎΠ».
Π ΠΈΡ. 1. BGP SAFI
ΠΠΎΡΠ΅ΠΌΡ BGP ΠΏΠΎΠ»ΡΡΠΈΠ» (ΠΈ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ ΠΏΠΎΠ»ΡΡΠ°ΡΡ) ΡΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΉ? ΠΡΡΡ Π΄Π²Π΅ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΏΡΠΈΡΠΈΠ½Ρ:
- BGP β Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΏΡΠΎΡΠΎΠΊΠΎΠ», ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΠΉ ΠΌΠ΅ΠΆΠ΄Ρ Π°Π²ΡΠΎΠ½ΠΎΠΌΠ½ΡΠΌΠΈ ΡΠΈΡΡΠ΅ΠΌΠ°ΠΌΠΈ (ΠΠ‘);
- BGP ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π°ΡΡΠΈΠ±ΡΡΡ Π² ΡΠΎΡΠΌΠ°ΡΠ΅ TLV (type-length-value). ΠΠ°, Π² ΡΡΠΎΠΌ ΠΏΡΠΎΡΠΎΠΊΠΎΠ» Π½Π΅ ΠΎΠ΄ΠΈΠ½ΠΎΠΊ, Π½ΠΎ ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π΅Π³ΠΎ Π½Π΅ΡΠ΅ΠΌ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ Π½Π° ΡΡΡΠΊΠ°Ρ ΠΌΠ΅ΠΆΠ΄Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ°ΠΌΠΈ ΡΠ²ΡΠ·ΠΈ, ΡΠΎ Π²ΡΠ΅Π³Π΄Π° ΠΎΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ Π²ΡΠ³ΠΎΠ΄Π½Π΅Π΅ ΠΏΡΠΈΠ΄Π΅Π»Π°ΡΡ ΠΊ Π½Π΅ΠΌΡ Π΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ, ΡΠ΅ΠΌ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΠΏΡΠΎΡΠΎΠΊΠΎΠ» ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΠΈ.
Π§ΡΠΎ ΠΆΠ΅ Ρ Π½ΠΈΠΌ Π½Π΅ ΡΠ°ΠΊ? ΠΡΠ»ΠΈ ΠΊΠΎΡΠΎΡΠΊΠΎ, Π² ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π΅ ΠΎΡΡΡΡΡΡΠ²ΡΡΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΡΡΠΈ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ. Π’ΠΎ Π΅ΡΡΡ BGP β ΡΡΠΎ ΠΏΡΠΎΡΠΎΠΊΠΎΠ» Π°ΠΏΡΠΈΠΎΡΠ½ΠΎΠ³ΠΎ Π΄ΠΎΠ²Π΅ΡΠΈΡ: Ρ ΠΎΡΠΈΡΠ΅ ΡΠΎΠΎΠ±ΡΠΈΡΡ ΠΌΠΈΡΡ, ΡΡΠΎ ΡΠ΅ΠΏΠ΅ΡΡ Π²Π°ΠΌ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ ΡΠ΅ΡΡ Π ΠΎΡΡΠ΅Π»Π΅ΠΊΠΎΠΌΠ°, ΠΠ’Π‘ ΠΈΠ»ΠΈ Π―Π½Π΄Π΅ΠΊΡΠ°, β ΠΏΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°!
Π€ΠΈΠ»ΡΡΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ IRRDB β Π»ΡΡΡΠΈΠΉ ΠΈΠ· Ρ ΡΠ΄ΡΠΈΡ
ΠΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ Π²ΠΎΠΏΡΠΎΡ β ΠΏΠΎΡΠ΅ΠΌΡ Π² ΡΠ°ΠΊΠΎΠΉ ΡΠΈΡΡΠ°ΡΠΈΠΈ ΠΈΠ½ΡΠ΅ΡΠ½Π΅Ρ Π΄ΠΎ ΡΠΈΡ
ΡΠ°Π±ΠΎΡΠ°Π΅Ρ? ΠΠ°, ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π±ΠΎΠ»ΡΡΡΡ ΡΠ°ΡΡΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, Π½ΠΎ ΠΏΡΠΈ ΡΡΠΎΠΌ ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΈΡΠ΅ΡΠΊΠΈ Π²Π·ΡΡΠ²Π°ΡΡΡ, Π΄Π΅Π»Π°Ρ ΡΠ΅Π»ΡΠ΅ Π½Π°ΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ ΡΠ΅Π³ΠΌΠ΅Π½ΡΡ Π½Π΅Π΄ΠΎΡΡΡΠΏΠ½ΡΠΌΠΈ. ΠΠ΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΠΎ, ΡΡΠΎ Ρ
Π°ΠΊΠ΅ΡΡΠΊΠ°Ρ Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡΡ Π² BGP ΡΠΎΠΆΠ΅ ΡΠ°ΡΡΠ΅Ρ, Π±ΠΎΠ»ΡΡΠ°Ρ ΡΠ°ΡΡΡ Π°Π½ΠΎΠΌΠ°Π»ΠΈΠΉ ΠΏΠΎ-ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ΠΎΡΠΈΠ±ΠΊΠ°ΠΌ. ΠΡΠΈΠΌΠ΅Ρ ΡΡΠΎΠ³ΠΎ Π³ΠΎΠ΄Π° β
Π ΠΈΡ. 2. ΠΠ΅ΡΠ΅Ρ Π²Π°Ρ ΡΡΠ°ΡΠΈΠΊΠ° Cloudflare
ΠΠΎ Π²ΡΠ΅-ΡΠ°ΠΊΠΈ ΠΏΠΎΡΠ΅ΠΌΡ ΡΠ°ΠΊΠΈΠ΅ Π°Π½ΠΎΠΌΠ°Π»ΠΈΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡ ΡΠ°Π· Π² ΠΏΠΎΠ»Π³ΠΎΠ΄Π°, Π° Π½Π΅ ΠΊΠ°ΠΆΠ΄ΡΠΉ Π΄Π΅Π½Ρ? ΠΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ ΡΠ²ΡΠ·ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ Π²Π½Π΅ΡΠ½ΠΈΠ΅ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ ΠΌΠ°ΡΡΡΡΡΠ½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΠΎΡ BGP ΡΠΎΡΠ΅Π΄Π΅ΠΉ. Π’Π°ΠΊΠΈΡ Π±Π°Π· Π΄Π°Π½Π½ΡΡ ΠΌΠ½ΠΎΠ³ΠΎ, ΡΠ°ΡΡΡ ΠΈΠ· Π½ΠΈΡ ΡΠΏΡΠ°Π²Π»ΡΡΡΡΡ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΎΡΠ°ΠΌΠΈ (RIPE, APNIC, ARIN, AFRINIC), ΡΠ°ΡΡΡ ΡΠ²Π»ΡΡΡΡΡ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡΠΌΠΈ ΠΈΠ³ΡΠΎΠΊΠ°ΠΌΠΈ (ΡΠ°ΠΌΡΠΉ ΠΈΠ·Π²Π΅ΡΡΠ½ΡΠΉ β RADB), Π° ΡΠ°ΠΊΠΆΠ΅ Π΅ΡΡΡ ΡΠ΅Π»ΡΠΉ Π½Π°Π±ΠΎΡ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΎΡΠΎΠ², ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°ΡΠΈΡ ΠΊΡΡΠΏΠ½ΡΠΌ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡΠΌ (Level3, NTT ΠΈ ΠΏΡ.). ΠΠΌΠ΅Π½Π½ΠΎ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ΡΡΠΈΠΌ Π±Π°Π·Π°ΠΌ Π΄Π°Π½Π½ΡΡ ΠΌΠ΅ΠΆΠ΄ΠΎΠΌΠ΅Π½Π½Π°Ρ ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΡ ΡΠΎΡ ΡΠ°Π½ΡΠ΅Ρ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎΡΡΡ ΡΠ²ΠΎΠ΅ΠΉ ΡΠ°Π±ΠΎΡΡ.
ΠΠ΄Π½Π°ΠΊΠΎ Π΅ΡΡΡ Π½ΡΠ°Π½ΡΡ. ΠΡΠΎΠ²Π΅ΡΠΊΠ° ΠΌΠ°ΡΡΡΡΡΠ½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ROUTE-OBJECTS ΠΈ AS-SET. Π Π΅ΡΠ»ΠΈ ΠΏΠ΅ΡΠ²ΡΠ΅ ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°ΡΡ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΡ Ρ ΡΠ°ΡΡΠΈ IRRDB, ΡΠΎ Π΄Π»Ρ Π²ΡΠΎΡΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΡ ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ ΠΊΠ°ΠΊ ΠΊΠ»Π°ΡΡ. Π’ΠΎ Π΅ΡΡΡ ΠΊΡΠΎ ΡΠ³ΠΎΠ΄Π½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π² ΡΠ²ΠΎΠΈ ΡΠ΅ΡΡ ΠΊΠΎΠ³ΠΎ ΡΠ³ΠΎΠ΄Π½ΠΎ ΠΈ ΡΠ΅ΠΌ ΡΠ°ΠΌΡΠΌ ΠΎΠ±ΠΎΠΉΡΠΈ ΡΠΈΠ»ΡΡΡΡ Π²ΡΡΠ΅ΡΡΠΎΡΡΠΈΡ ΠΏΠΎΡΡΠ°Π²ΡΠΈΠΊΠΎΠ². Π Π±ΠΎΠ»Π΅Π΅ ΡΠΎΠ³ΠΎ, ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΠΎΡΡΡ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΡ AS-SET ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ°Π·Π½ΡΠΌΠΈ Π±Π°Π·Π°ΠΌΠΈ IRR Π½Π΅ Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅ΡΡΡ, ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡΡ ΠΊ ΡΠ΄ΠΈΠ²ΠΈΡΠ΅Π»ΡΠ½ΡΠΌ ΡΡΡΠ΅ΠΊΡΠ°ΠΌ Ρ Π²Π½Π΅Π·Π°ΠΏΠ½ΡΠΌ ΠΏΡΠΎΠΏΠ°Π΄Π°Π½ΠΈΠ΅ΠΌ ΡΠ²ΡΠ·Π½ΠΎΡΡΠΈ Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° ΡΠ²ΡΠ·ΠΈ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎ ΡΠ²ΠΎΠ΅ΠΉ ΡΡΠΎΡΠΎΠ½Ρ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ ΠΌΠ΅Π½ΡΠ».
ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½Π°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° β ΡΡΠΎ ΠΌΠΎΠ΄Π΅Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ AS-SET. ΠΠ΄Π΅ΡΡ Π΄Π²Π° ΠΌΠΎΠΌΠ΅Π½ΡΠ°:
- ΠΠΎΠ³Π΄Π° Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° ΠΏΠΎΡΠ²Π»ΡΠ΅ΡΡΡ Π½ΠΎΠ²ΡΠΉ ΠΊΠ»ΠΈΠ΅Π½Ρ, ΠΎΠ½ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ Π΅Π³ΠΎ Π² ΡΠ²ΠΎΠΉ AS-SET, Π½ΠΎ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π΅Π³ΠΎ Π½Π΅ ΡΠ΄Π°Π»ΡΠ΅Ρ;
- Π‘Π°ΠΌΠΈ ΡΠΈΠ»ΡΡΡΡ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π½Π° ΡΡΡΠΊΠ°Ρ Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°ΠΌΠΈ.
Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΉ ΡΠΎΡΠΌΠ°Ρ BGP-ΡΠΈΠ»ΡΡΡΠΎΠ² β ΡΡΠΎ ΠΏΠΎΡΡΠ΅ΠΏΠ΅Π½Π½ΠΎ Π΄Π΅Π³ΡΠ°Π΄ΠΈΡΡΡΡΠΈΠ΅ ΡΠΈΠ»ΡΡΡΡ Π½Π° ΡΡΡΠΊΠ°Ρ Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°ΠΌΠΈ ΠΈ Π°ΠΏΡΠΈΠΎΡΠ½ΠΎΠ΅ Π΄ΠΎΠ²Π΅ΡΠΈΠ΅ ΡΠΎΠΌΡ, ΡΡΠΎ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡ ΠΎΡ ΠΏΠΈΡΠΈΠ½Π³-ΠΏΠ°ΡΡΠ½Π΅ΡΠΎΠ² ΠΈ ΠΏΠΎΡΡΠ°Π²ΡΠΈΠΊΠΎΠ² IP-ΡΡΠ°Π½Π·ΠΈΡΠ°.
Π§ΡΠΎ ΠΆΠ΅ ΠΈΠ΄Π΅Ρ Π½Π° ΡΠΌΠ΅Π½Ρ ΠΏΡΠ΅ΡΠΈΠΊΡ-ΡΠΈΠ»ΡΡΡΠ°ΠΌ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ AS-SET? Π‘Π°ΠΌΠΎΠ΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎΠ΅, ΡΡΠΎ Π² ΠΊΡΠ°ΡΠΊΠΎΡΡΠΎΡΠ½ΠΎΠΉ ΠΏΠ΅ΡΡΠΏΠ΅ΠΊΡΠΈΠ²Π΅ β Π½ΠΈΡΠ΅Π³ΠΎ. ΠΠΎ ΠΏΠΎΡΠ²Π»ΡΡΡΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΡ, Π΄ΠΎΠΏΠΎΠ»Π½ΡΡΡΠΈΠ΅ ΡΠ°Π±ΠΎΡΡ ΡΠΈΠ»ΡΡΡΠΎΠ² Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ IRRDB, ΠΈ Π² ΠΏΠ΅ΡΠ²ΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ ΡΡΠΎ, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, RPKI.
RPKI
Π£ΠΏΡΠΎΡΠ΅Π½Π½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΡΡ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ RPKI ΠΊΠ°ΠΊ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΡΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ , Π·Π°ΠΏΠΈΡΠΈ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΊΡΠΈΠΏΡΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ. Π ΡΠ»ΡΡΠ°Π΅ ROA (Route Object Authorization) ΠΏΠΎΠ΄ΠΏΠΈΡΠ°Π½ΡΠΎΠΌ Π²ΡΡΡΡΠΏΠ°Π΅Ρ Π²Π»Π°Π΄Π΅Π»Π΅Ρ Π°Π΄ΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π°, Π° ΡΠ°ΠΌΠ° Π·Π°ΠΏΠΈΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΡΡΠΎΠΉΠΊΡ (prefix, asn, max_length). ΠΠΎ ΡΡΡΠΈ, ΡΡΠ° Π·Π°ΠΏΠΈΡΡ ΠΏΠΎΡΡΡΠ»ΠΈΡΡΠ΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅ β Π²Π»Π°Π΄Π΅Π»Π΅Ρ Π°Π΄ΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° $prefix ΡΠ°Π·ΡΠ΅ΡΠΈΠ» ΠΠ‘ Ρ Π½ΠΎΠΌΠ΅ΡΠΎΠΌ $asn Π°Π½ΠΎΠ½ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠ΅ΡΠΈΠΊΡΡ Ρ Π΄Π»ΠΈΠ½ΠΎΠΉ Π½Π΅ Π±ΠΎΠ»ΡΡΠ΅ ΡΠ΅ΠΌ $max_length. Π ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΎΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ RPKI-ΠΊΡΡ, ΡΠΏΠΎΡΠΎΠ±Π½Ρ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ Π½Π° ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ ΠΏΠ°ΡΡ ΠΏΡΠ΅ΡΠΈΠΊΡ-ΠΏΠ΅ΡΠ²Π°Ρ ΠΠ‘ Π² ΠΏΡΡΠΈ.
Π ΠΈΡ 3. ΠΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° RPKI
ROA-ΠΎΠ±ΡΠ΅ΠΊΡΡ Π±ΡΠ»ΠΈ ΡΡΠ°Π½Π΄Π°ΡΡΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Ρ ΡΠΆΠ΅ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π΄Π°Π²Π½ΠΎ, Π½ΠΎ Π΄ΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΠΎΡΡΠ°Π²Π°Π»ΠΈΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π½Π° Π±ΡΠΌΠ°Π³Π΅ IETF-ΠΆΡΡΠ½Π°Π»Π°. ΠΠ° ΠΌΠΎΠΉ Π²Π·Π³Π»ΡΠ΄, ΠΏΡΠΈΡΠΈΠ½Π° ΡΡΠΎΠ³ΠΎ Π·Π²ΡΡΠΈΡ ΡΡΡΠ°ΡΠ½ΠΎ β bad marketing. ΠΠΎΡΠ»Π΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΡΡΠ°Π½Π΄Π°ΡΡΠΈΠ·Π°ΡΠΈΠΈ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΡΠΈΠΌΡΠ»Π° ΡΡΠ²Π΅ΡΠΆΠ΄Π°Π»ΠΎΡΡ, ΡΡΠΎ ROA Π·Π°ΡΠΈΡΠ°ΡΡ ΠΎΡ ΡΠ³ΠΎΠ½ΠΎΠ² BGP β ΠΈ ΡΡΠΎ Π±ΡΠ»ΠΎ Π½Π΅ΠΏΡΠ°Π²Π΄ΠΎΠΉ. ΠΠ»ΠΎΡΠΌΡΡΠ»Π΅Π½Π½ΠΈΠΊΠΈ ΠΌΠΎΠ³ΡΡ Π»Π΅Π³ΠΊΠΎ ΠΎΠ±ΠΎΠΉΡΠΈ ΡΠΈΠ»ΡΡΡΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ROA, Π²ΡΡΠ°Π²ΠΈΠ² ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΡΠΉ Π½ΠΎΠΌΠ΅Ρ ΠΠ‘ Π² Π½Π°ΡΠ°Π»Π΅ ΠΏΡΡΠΈ. Π ΠΊΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ ΠΎΡΠΎΠ·Π½Π°Π½ΠΈΠ΅ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΠ»ΠΎ, ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ Π·Π°ΠΊΠΎΠ½ΠΎΠΌΠ΅ΡΠ½ΡΠΌ ΡΠ°Π³ΠΎΠΌ ΡΡΠ°Π½ΠΎΠ²ΠΈΠ»ΡΡ ΠΎΡΠΊΠ°Π· ΠΎΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ROA. Π ΠΏΡΠ°Π²Π΄Π°, Π·Π°ΡΠ΅ΠΌ Π½Π°ΠΌ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡ, Π΅ΡΠ»ΠΈ ΠΎΠ½Π° Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ?
ΠΠΎΡΠ΅ΠΌΡ ΠΆΠ΅ ΠΏΠΎΡΠ° ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΡΠ²ΠΎΠ΅ ΠΌΠ½Π΅Π½ΠΈΠ΅? ΠΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΡΠΎ Π½Π΅ Π²ΡΡ ΠΏΡΠ°Π²Π΄Π°. ROA Π½Π΅ Π·Π°ΡΠΈΡΠ°Π΅Ρ ΠΎΡ Ρ Π°ΠΊΠ΅ΡΡΠΊΠΎΠΉ Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ Π² BGP, Π½ΠΎ Π·Π°ΡΠΈΡΠ°Π΅Ρ ΠΎΡ ΡΠ»ΡΡΠ°ΠΉΠ½ΡΡ ΡΠ³ΠΎΠ½ΠΎΠ² ΡΡΠ°ΡΠΈΠΊΠ°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΠΎΡ ΡΡΠ΅ΡΠ΅ΠΊ ΡΡΠ°ΡΠΈΠΊΠΈ Π² BGP, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΡΡΡΠ΅ΡΠ°Π΅ΡΡΡ Π²ΡΠ΅ ΡΠ°ΡΠ΅. Π’Π°ΠΊΠΆΠ΅, Π² ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ ΡΠΈΠ»ΡΡΡΠΎΠ² Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ IRR, ROV ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π½Π° ΡΡΡΠΊΠ°Ρ Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°ΠΌΠΈ, Π½ΠΎ ΠΈ Π½Π° ΡΡΡΠΊΠ°Ρ Ρ ΠΏΠΈΡΠ°ΠΌΠΈ ΠΈ Π²ΡΡΠ΅ΡΡΠΎΡΡΠΈΠΌΠΈ ΠΏΠΎΡΡΠ°Π²ΡΠΈΠΊΠ°ΠΌΠΈ. Π’ΠΎ Π΅ΡΡΡ Π²ΠΌΠ΅ΡΡΠ΅ Ρ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΠ΅ΠΌ RPKI ΠΈΠ· BGP ΠΏΠΎΡΡΠ΅ΠΏΠ΅Π½Π½ΠΎ ΡΡ ΠΎΠ΄ΠΈΡ Π°ΠΏΡΠΈΠΎΡΠ½ΠΎΠ΅ Π΄ΠΎΠ²Π΅ΡΠΈΠ΅.
Π‘Π΅ΠΉΡΠ°Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΠΌΠ°ΡΡΡΡΡΠΎΠ² Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ROA ΠΏΠΎΡΡΠ΅ΠΏΠ΅Π½Π½ΠΎ Π²Π½Π΅Π΄ΡΡΠ΅ΡΡΡ ΠΊΠ»ΡΡΠ΅Π²ΡΠΌΠΈ ΠΈΠ³ΡΠΎΠΊΠ°ΠΌΠΈ: ΠΊΡΡΠΏΠ½Π΅ΠΉΡΠ΅Π΅ Π΅Π²ΡΠΎΠΏΠ΅ΠΉΡΠΊΠΈΠ΅ IX ΡΠΆΠ΅ ΠΎΡΠ±ΡΠ°ΡΡΠ²Π°ΡΡ Π½Π΅ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΡΠ΅ ΠΌΠ°ΡΡΡΡΡΡ, ΠΈΠ· Tier-1-ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ² ΡΡΠΎΠΈΡ Π²ΡΠ΄Π΅Π»ΠΈΡΡ AT&T, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΠΊΠ»ΡΡΠΈΠ» ΡΠΈΠ»ΡΡΡΡ Π½Π° ΡΡΡΠΊΠ°Ρ ΡΠΎ ΡΠ²ΠΎΠΈΠΌΠΈ ΠΏΠΈΡΠΈΠ½Π³-ΠΏΠ°ΡΡΠ½Π΅ΡΠ°ΠΌΠΈ. Π’Π°ΠΊΠΆΠ΅ ΠΊ ΡΠ½Π°ΡΡΠ΄Ρ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡ ΠΈ ΠΊΡΡΠΏΠ½Π΅ΠΉΡΠΈΠ΅ ΠΏΠΎΡΡΠ°Π²ΡΠΈΠΊΠΈ ΠΊΠΎΠ½ΡΠ΅Π½ΡΠ°. Π Π΄Π΅ΡΡΡΠΊΠΈ ΡΡΠ°Π½Π·ΠΈΡΠ½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ² ΡΡΠ΅Π΄Π½Π΅Π³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΡΠΆΠ΅ Π΅Π³ΠΎ ΡΠΈΡ ΠΎ Π²Π½Π΅Π΄ΡΠΈΠ»ΠΈ, Π½ΠΈΠΊΠΎΠΌΡ ΠΎΠ± ΡΡΠΎΠΌ Π½Π΅ ΡΠΊΠ°Π·Π°Π². ΠΠ°ΡΠ΅ΠΌ Π²ΡΠ΅ ΡΡΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ Π²Π½Π΅Π΄ΡΡΡΡ RPKI? ΠΡΠ²Π΅Ρ ΠΏΡΠΎΡΡ: ΡΡΠΎΠ±Ρ Π·Π°ΡΠΈΡΠΈΡΡ ΡΠ²ΠΎΠΉ ΠΈΡΡ ΠΎΠ΄ΡΡΠΈΠΉ ΡΡΠ°ΡΠΈΠΊ ΠΎΡ ΡΡΠΆΠΈΡ ΠΎΡΠΈΠ±ΠΎΠΊ. ΠΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎΡΡΠΎΠΌΡ Π―Π½Π΄Π΅ΠΊΡ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· ΠΏΠ΅ΡΠ²ΡΡ Π² Π Π€ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ ROV Π½Π° Π³ΡΠ°Π½ΠΈΡΠ΅ ΡΠ²ΠΎΠ΅ΠΉ ΡΠ΅ΡΠΈ.
Π§ΡΠΎ Π±ΡΠ΄Π΅Ρ Π΄Π°Π»ΡΡΠ΅?
Π‘Π΅ΠΉΡΠ°Ρ ΠΌΡ Π²ΠΊΠ»ΡΡΠΈΠ»ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ ΠΌΠ°ΡΡΡΡΡΠ½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Π½Π° ΡΡΡΠΊΠ°Ρ Ρ ΡΠΎΡΠΊΠ°ΠΌΠΈ ΠΎΠ±ΠΌΠ΅Π½Π° ΡΡΠ°ΡΠΈΠΊΠ° ΠΈ ΠΏΡΠΈΠ²Π°ΡΠ½ΡΠΌΠΈ ΠΏΠΈΡΠΈΠ½Π³Π°ΠΌΠΈ. Π Π±Π»ΠΈΠΆΠ°ΠΉΡΠ΅ΠΌ Π±ΡΠ΄ΡΡΠ΅ΠΌ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π±ΡΠ΄Π΅Ρ ΡΠ°ΠΊΠΆΠ΅ Π²ΠΊΠ»ΡΡΠ΅Π½Π° Ρ Π²ΡΡΠ΅ΡΡΠΎΡΡΠΈΠΌΠΈ ΠΏΠΎΡΡΠ°Π²ΡΠΈΠΊΠ°ΠΌΠΈ ΡΡΠ°ΡΠΈΠΊΠ°.
Π§ΡΠΎ ΡΡΠΎ ΠΌΠ΅Π½ΡΠ΅Ρ Π΄Π»Ρ Π²Π°Ρ? ΠΡΠ»ΠΈ Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅ ΠΏΠΎΠ²ΡΡΠΈΡΡ Π·Π°ΡΠΈΡΠ΅Π½Π½ΠΎΡΡΡ ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΠΈ ΡΡΠ°ΡΠΈΠΊΠ° ΠΌΠ΅ΠΆΠ΄Ρ Π²Π°ΡΠ΅ΠΉ ΡΠ΅ΡΡΡ ΠΈ Π―Π½Π΄Π΅ΠΊΡΠΎΠΌ, ΠΌΡ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΠΌ:
- ΠΠΎΠ΄ΠΏΠΈΡΠ°ΡΡ ΡΠ²ΠΎΠ΅ Π°Π΄ΡΠ΅ΡΠ½ΠΎΠ΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ
Π² ΠΏΠΎΡΡΠ°Π»Π΅ RIPE β ΡΡΠΎ ΠΏΡΠΎΡΡΠΎ, Π² ΡΡΠ΅Π΄Π½Π΅ΠΌ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ 5-10 ΠΌΠΈΠ½ΡΡ. ΠΡΠΎ Π·Π°ΡΠΈΡΠΈΡ Π½Π°ΡΡ Ρ Π²Π°ΠΌΠΈ ΡΠ²ΡΠ·Π½ΠΎΡΡΡ Π² ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ ΠΊΡΠΎ-ΡΠΎ Π½Π΅Π²ΠΎΠ»ΡΠ½ΠΎ ΡΠΎΠ²Π΅ΡΡΠΈΡ ΡΠ³ΠΎΠ½ Π²Π°ΡΠ΅Π³ΠΎ Π°Π΄ΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° (Π° ΡΡΠΎ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΡΠ»ΡΡΠΈΡΡΡ ΡΠ°Π½ΠΎ ΠΈΠ»ΠΈ ΠΏΠΎΠ·Π΄Π½ΠΎ); - ΠΠΎΡΡΠ°Π²ΠΈΡΡ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· open source RPKI-ΠΊΡΡΠ΅ΠΉ (
ripe-validator ,routinator ) ΠΈ Π²ΠΊΠ»ΡΡΠΈΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ ΠΌΠ°ΡΡΡΡΡΠΎΠ² Π½Π° Π³ΡΠ°Π½ΠΈΡΠ΅ ΡΠ΅ΡΠΈ β ΡΡΠΎ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅Ρ Π±ΠΎΠ»ΡΡΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, Π½ΠΎ ΡΠ°ΠΊΠΆΠ΅ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ, ΠΎΠΏΡΡΡ-ΡΠ°ΠΊΠΈ, Π½Π΅ Π²ΡΠ·ΠΎΠ²Π΅Ρ.
Π―Π½Π΄Π΅ΠΊΡ ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΡ ΡΠΈΡΡΠ΅ΠΌΡ ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΠΈ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ RPKI-ΠΎΠ±ΡΠ΅ΠΊΡΠ° β
Π― Π±ΡΠ΄Ρ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΡΠ°ΡΡΠΊΠ°Π·ΡΠ²Π°ΡΡ ΠΏΡΠΎ ASPA ΡΠ΅ΡΠ΅Π· ΠΌΠ΅ΡΡΡ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΡΠ΅Π½ΡΠΈΠΈ Next Hop. ΠΡΠ΅ ΡΠ°ΠΌ Π±ΡΠ΄ΡΡ Π²ΡΡΡΡΠΏΠ°ΡΡ ΠΊΠΎΠ»Π»Π΅Π³ΠΈ ΠΈΠ· Netflix, Facebook, Dropbox, Juniper, Mellanox ΠΈ Π―Π½Π΄Π΅ΠΊΡΠ°. ΠΡΠ»ΠΈ Π²Π°ΠΌ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ΅Π½ ΡΠ΅ΡΠ΅Π²ΠΎΠΉ ΡΡΠ΅ΠΊ ΠΈ Π΅Π³ΠΎ ΡΠ°Π·Π²ΠΈΡΠΈΠ΅ Π² Π±ΡΠ΄ΡΡΠ΅ΠΌ β ΠΏΡΠΈΡ
ΠΎΠ΄ΠΈΡΠ΅,
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com