Трэнінг Cisco 200-125 CCNA v3.0. Дзень 37. STP: выбар Root Bridge, функцыі PortFast і BPDU guard. Частка 2

Выкажам здагадку, што STP знаходзіцца ў стане збежнасці. Што адбудзецца, калі я вазьму кабель і злучу свитч Н напрамую з каранёвым свішчом А? Root Bridge "убачыць", што ў яго з'явіўся новы задзейнічаны порт, і адправіць па ім BPDU.

Трэнінг Cisco 200-125 CCNA v3.0. Дзень 37. STP: выбар Root Bridge, функцыі PortFast і BPDU guard. Частка 2

Світч Н, атрымаўшы гэты фрэйм ​​з нулявым коштам, вызначыць кошт маршруту праз новы порт як 0+19 =19 пры тым, што кошт яго каранёвага порта роўна 76. Пасля гэтага порт скрутку Н, які раней знаходзіўся ў стане disabled, пройдзе ўсе стадыі transition і пераключыцца ў рэжым перадачы толькі праз 50 секунд. Калі да дадзенага світаку падлучаныя іншыя прылады, то ўсе яны на 50 секунд страцяць злучэнне з каранёвым світаком і з сеткай у цэлым.

Аналагічным чынам паступае свитч G, атрымаўшы ад світача Н фрэйм ​​BPDU з апавяшчэннем аб кошце 19. Ён змяняе кошт свайго прызначанага порта на 19+19= 38 і пераназначае яго ў якасці новага каранёвага порта, таму што кошт яго ранейшага Root Port роўная 57, што больш за 38. Пры гэтым зноў пачынаюцца ўсе стадыі перапрызначэння партоў працягласцю 50 с, і, у канчатковым выніку, уся сетка абвальваецца.

Трэнінг Cisco 200-125 CCNA v3.0. Дзень 37. STP: выбар Root Bridge, функцыі PortFast і BPDU guard. Частка 2

Цяпер давайце разгледзім, што будзе адбывацца ў аналагічнай сітуацыі пры выкарыстанні RSTP. Каранёвы світч сапраўды гэтак жа адашле BPDU які падлучыўся да яго свічу Н, але адразу пасля гэтага заблакуе свой порт. Атрымаўшы гэты фрэйм, скрутг Н вызначыць, што дадзены маршрут мае меншы кошт, чым яго каранёвы порт, і тут жа яго заблакуе. Пасля гэтага Н вышле каранёвага свічу Proposal з просьбай адкрыць новы порт, таму што яго кошт меншы, чым кошт ужо наяўнага каранёвага порта. Пасля таго, як каранёвы світч пагодзіцца з просьбай, ён разблакуе свой порт і адашле Agreement світку Н, пасля чаго апошні зробіць новы порт сваім каранёвым портам.

Трэнінг Cisco 200-125 CCNA v3.0. Дзень 37. STP: выбар Root Bridge, функцыі PortFast і BPDU guard. Частка 2

Пры гэтым дзякуючы механізму Proposal / Agreement перапрызначэнне каранёвага порта адбудзецца практычна імгненна, і ўсе прылады, падлучаныя да світаку Н, не страцяць сувязі з сеткай.
Прызначыўшы новы Root Port, свитч Н ператворыць стары каранёвы порт у альтэрнатыўны порт. Тое ж самае адбудзецца са світаком G - ён абмяняецца са світаком Н паведамленнямі Proposal/Agreement, прызначыць новы каранёвы порт і заблакуе астатнія порты. Затым працэс працягнецца ў наступным сегменце сеткі са скруткам F.

Трэнінг Cisco 200-125 CCNA v3.0. Дзень 37. STP: выбар Root Bridge, функцыі PortFast і BPDU guard. Частка 2

Світч F, прааналізаваўшы кошты, убачыць, што маршрут да каранёвага свічу праз ніжні порт будзе каштаваць 57 пры тым, што ўжо наяўны маршрут праз верхні порт каштуе 38, і пакіне ўсё як ёсць. Даведаўшыся пра гэта, світч G заблакуе порт, звернуты да F, і будзе перасылаць трафік каранёвага свічу па новым маршруце GHA.

Пакуль світч F не атрымае Proposal/Agreement ад скрутку G, ён будзе трымаць свой ніжні порт заблакаваным, каб прадухіліць адукацыю завес. Такім чынам, вы бачыце, што RSTP – гэта вельмі хуткі пратакол, які не стварае ў сетцы праблем, уласцівых STP.
Цяпер давайце пяройдзем да разгляду каманд. Вам трэба зайсці ў рэжым глабальнай канфігурацыі світача і абраць рэжым PVST ці RPVST з дапамогай каманды spanning-tree mode . Затым вам трэба вырашыць, як змяніць прыярытэт канкрэтнай VLAN. Для гэтага выкарыстоўваецца каманда spanning-tree vlan <нумар сеткі VLAN> priority <значэнне>. З апошняга видеоурока вы павінны памятаць, што прыярытэт уяўляе сабой лік, кратнае 4096 і па змаўчанні гэты лік роўна 32768 плюс нумар сеткі VLAN. Калі вы абралі VLAN1, то прыярытэт па змаўчанні будзе 32768+1= 32769.

Трэнінг Cisco 200-125 CCNA v3.0. Дзень 37. STP: выбар Root Bridge, функцыі PortFast і BPDU guard. Частка 2

Навошта можа спатрэбіцца мяняць прыярытэт сетак? Мы ведаем, што BID складаецца з лікавага значэння прыярытэту і MAC-адрасы. MAC-адрас прылады немагчыма змяніць, ён мае сталае значэнне, таму можна змяніць толькі велічыню прыярытэту.

Выкажам здагадку, што існуе буйная сетка, дзе ўсе прылады Cisco злучаны па кругавой схеме. Пры гэтым па змаўчанні актываваны PVST, таму сістэмай будзе абраны каранёвы світч. Калі ўсе прылады маюць аднолькавы прыярытэт, тая перавага будзе мець світч з самым старым MAC-адрасам. Аднак гэта можа быць 10-12 гадовы камутатар састарэлай мадэлі, у якога нават бракуе магутнасці і прадукцыйнасці ўзначальваць такую ​​шырокую сетку.
У той жа час у вас у сетцы можа быць найноўшы свитч за некалькі тысяч даляраў, які ў сілу большага значэння MAC-адрасы змушаны «падпарадкоўвацца» старому світку коштам у пару сотняў даляраў. Калі стары світч становіцца каранёвым камутатарам, гэта сведчыць аб сур'ёзнай памылцы дызайну сеткі.

Таму вы павінны зайсці ў налады новага світача і прысвоіць яму мінімальнае значэнне прыярытэту, напрыклад, 0. Пры выкарыстанні VLAN1 сумарнае значэнне прыярытэту будзе роўна 0+1=1, і ўсе астатнія прылады ўвесь час будуць лічыць яго каранёвым світаком.

Цяпер уявім такую ​​сітуацыю. Калі каранёвы світч па нейкім чынніку становіцца недаступным, вы можаце захацець, каб новым каранёвым світчам стаў не любы камутатар з найнізкім прыярытэтам, а нейкі пэўны світч з лепшымі сеткавымі функцыямі. У гэтым выпадку ў наладах Root Bridge выкарыстоўваецца каманда, якая прызначае асноўны і другарадны каранёвыя світчы: spanning-tree vlan <нумар сеткі VLAN> root <асноўны/другарадны>. Значэнне прыярытэту для асноўнага світача Primary будзе роўна 32768 - 4096 - 4096 = 24576. Для другараднага світача Secondary яно вылічаецца па формуле 32768 - 4096 = 28672.

Вы можаце не ўводзіць гэтыя лікі ўручную - сістэма зробіць гэта для вас аўтаматычна. Такім чынам, каранёвым будзе скруток з прыярытэтам 24576, а пры ім недаступнасці - скрутак з прыярытэтам 28672 пры тым, што прыярытэт усіх астатніх світчыкаў па змаўчанні не менш 32768. Так варта паступаць, калі вы не жадаеце, каб сістэма аўтаматычна прызначала каранёвы свитч.

Калі вы жадаеце паглядзець налады пратаколу STP, трэба выкарыстоўваць каманду show spanning-tree summary. Давайце зараз разгледзім усе вывучаныя сёння тэмы з дапамогай Packet Tracer. Я выкарыстоўваю тапалогію сеткі з 4-х світак мадэлі 2690, гэта не мае значэння, паколькі ўсе мадэлі світак Cisco падтрымліваюць STP. Яны злучаны сябар з сябрам так, што сетка ўтворыць замкнёнае кола.

Па змаўчанні прылады Cisco працуюць у рэжыме PSTV+, гэта значыць для канвергенцыі кожнаму порце запатрабуецца не больш за 20 з. Панэль сімуляцыі дазваляе адлюстраваць адпраўку трафіку і прагледзець параметры працы створанай сеткі.

Трэнінг Cisco 200-125 CCNA v3.0. Дзень 37. STP: выбар Root Bridge, функцыі PortFast і BPDU guard. Частка 2

Вы бачыце, што ўяўляе сабою фрэйм ​​STP BPDU. Калі вы бачыце абазначэнне версіі 0, значыць, перад вамі STP, таму што для RSTP выкарыстоўваецца версія 2. Тут прыведзена таксама значэнне Root ID, якое складаецца з прыярытэту і MAC-адрасы каранёвага світача, і роўнае яму значэнне Bridge ID.

Трэнінг Cisco 200-125 CCNA v3.0. Дзень 37. STP: выбар Root Bridge, функцыі PortFast і BPDU guard. Частка 2

Гэтыя велічыні роўныя, паколькі кошт маршруту да каранёвага свічу для SW0 роўная 0, такім чынам, ён сам з'яўляецца каранёвым свідчам. Такім чынам, пасля ўключэння світак дзякуючы выкарыстанню STP адбыўся аўтаматычны выбар Root Bridge і сетка зарабіла. Вы бачыце, што для прадухілення завесы верхні порт Fa0/2 свісту SW2 быў пераведзены ў стан Blocking, але што паказвае аранжавы колер маркера.

Трэнінг Cisco 200-125 CCNA v3.0. Дзень 37. STP: выбар Root Bridge, функцыі PortFast і BPDU guard. Частка 2

Пяройдзем да кансолі налад скрутку SW0 і выкарыстаем пару каманд. Першая гэта каманда show spanning-tree, пасля ўводу якой на экране нам будзе паказана інфармацыя аб рэжыме PSTV+ для сеткі VLAN1. Калі мы будзем выкарыстоўваць некалькі VLAN, у ніжняй частцы акна з'явіцца яшчэ адзін блок інфармацыі для другой і наступных выкарыстоўваных сетак.

Трэнінг Cisco 200-125 CCNA v3.0. Дзень 37. STP: выбар Root Bridge, функцыі PortFast і BPDU guard. Частка 2

Вы бачыце, што пратакол STP даступны па стандарце IEEE, што азначае выкарыстанне PVSTP+. Тэхнічна гэта не з'яўляецца стандартам .1d. Тут таксама прыведзена інфармацыя Root ID: прыярытэт 32769, MAC-адрас каранёвай прылады, кошт 19 і г.д. Далей варта інфармацыя Bridge ID, у якой расшыфроўваецца значэнне прыярытэту 32768+1, і варта іншы MAC-адрас. Як бачыце, я памыліўся — свіст SW0 не з'яўляецца каранёвым світчам, каранёвы світч мае іншы MAC-адрас, прыведзены ў параметрах Root ID. Я думаю, гэта звязана з тым, што SW0 атрымаў фрэйм ​​BPDU з інфармацыяй аб тым, што нейкі свитч у сетцы мае вялікія падставы гуляць ролю каранёвага. Цяпер мы гэта разгледзім.

(нататка перакладніка: Root ID – ідэнтыфікатар каранёвага світача, аднолькавы для ўсіх прылад адной і той жа сеткі VLAN, якая працуе па пратаколе STP, Bridge ID – ідэнтыфікатар лакальнага світача ў складзе Root Bridge, які можа быць розным для розных світак і розных VLAN).

Яшчэ адна акалічнасць, якое паказвае на тое, што SW0 не з'яўляецца каранёвым світчам - гэта тое, што каранёвы світч не мае Root Port, а ў дадзеным выпадку маецца і Root Port, і Designated Port, змешчаныя ў стане forwarding. Вы таксама бачыце тып злучэння p2p, ці "кропка-кропка". Гэта азначае, што парты fa0/1 і fa0/2 напроста злучаныя з суседнімі світчамі.
Калі б нейкі порт быў падлучаны да хаба, тып злучэння пазначаўся б як shared, пазней мы гэта разгледзім. Калі я ўвяду каманду для прагляду выніковай інфармацыі show spanning-tree summary, мы ўбачым, што дадзены свитч знаходзіцца ў рэжыме PVSTP, далей ідзе пералік недаступных функцый порта.

Трэнінг Cisco 200-125 CCNA v3.0. Дзень 37. STP: выбар Root Bridge, функцыі PortFast і BPDU guard. Частка 2

Далей паказана стан і колькасць партоў, якія абслугоўваюць VLAN1: blocking 0, listening 0, learning 0, у стане forwarding у рэжыме STP знаходзіцца 2 порта.
Перад тым, як перайсці да світаку SW2, паглядзім на налады світача SW1. Для гэтага мы выкарыстоўваем тую ж каманду show spanning-tree.

Трэнінг Cisco 200-125 CCNA v3.0. Дзень 37. STP: выбар Root Bridge, функцыі PortFast і BPDU guard. Частка 2

Вы бачыце, што MAC-адрас Root ID у світаку SW1 такі ж, як і ў SW0, таму што ўсе прылады ў сетцы пры сыходжанні атрымліваюць адзін і той жа адрас прылады Root Bridge, бо давяраюць выбару, зробленаму пратаколам STP. Як бачыце, SW1 і ёсць каранёвым світчам, таму што адрасы Root ID і Bridge ID супадаюць. Акрамя таго, тут маецца паведамленне "гэты скрутг з'яўляецца каранёвым".

Яшчэ адной прыкметай каранёвага світача з'яўляецца тое, што ў яго няма Root-партоў, абодва порта пазначаюцца як Designated. Калі ўсе парты паказаны як Designated і знаходзяцца ў стане forwarding, то перад вамі каранёвы скрут.

Світч SW3 змяшчае аналагічную інфармацыю, і зараз я пераходжу да SW2, таму што адзін з яго партоў знаходзіцца ў стане Blocking. Я выкарыстоўваю каманду show spanning-tree і мы бачым, што інфармацыя Root ID і значэнне прыярытэту такія ж, як і ў астатніх свіцей.
Далей пазначана, што адзін з партоў з'яўляецца Alternative. Няхай вас гэта не бянтэжыць, стандарт 802.1d называе гэта Blocking Port, а ў PVSTP заблакаваны порт заўсёды пазначаецца як Alternative. Такім чынам, гэты альтэрнатыўны Fa0/2 порт знаходзіцца ў заблакаваным стане, а порт Fa0/1 выступае ў якасці Root Port.

Заблакаваны порт знаходзіцца ў сегменце сеткі паміж світаком SW0 і світаком SW2, дзякуючы чаму ў нас не ўтворыцца пятля. Як бачыце, світчы выкарыстоўваю злучэнне тыпу p2p, таму што да іх не падлучаны ніякія іншыя прылады.

Трэнінг Cisco 200-125 CCNA v3.0. Дзень 37. STP: выбар Root Bridge, функцыі PortFast і BPDU guard. Частка 2

У нас ёсць сетка, якая сыходзіцца па пратаколе STP. Цяпер я вазьму кабель і злучу напроста світч SW2 з коневым світчам SW1. Пасля гэтага ўсе парты SW2 стануць абазначацца аранжавымі маркерамі.

Трэнінг Cisco 200-125 CCNA v3.0. Дзень 37. STP: выбар Root Bridge, функцыі PortFast і BPDU guard. Частка 2

Калі выкарыстоўваць каманду show spanning-tree summary, мы ўбачым, што спачатку два порта знаходзяцца ў стане Listening, затым пераходзяць у стан Learning і праз некалькі секунд у стан Forwarding, пры гэтым колер маркера мяняецца на зялёны. Калі зараз увесці каманду show spanning-tree, відаць, што Fa0/1, які раней быў Root-портам, зараз перайшоў у стан блакавання і стаў звацца Alternative-портам.

Трэнінг Cisco 200-125 CCNA v3.0. Дзень 37. STP: выбар Root Bridge, функцыі PortFast і BPDU guard. Частка 2

Порт Fa0/3, да якога падлучаны кабель каранёвага світа, стаў Root-портам, а порт Fa0/2 ператварыўся ў прызначаны Designated-порт. Давайце яшчэ раз разгледзім працэс канвергенцыі, які адбываецца. Я адлучу кабель SW2-SW1 і вярнуся да папярэдняй тапалогіі. Вы бачыце, што порты SW2 спачатку блакуюцца і зноў становяцца аранжавымі, затым паслядоўна пераходзяць праз станы Listening і Learning і апыняюцца ў стане Forwarding. Пры гэтым адзін порт становіцца зялёным, а другі, злучаны са світаком SW0, застаецца аранжавым. Працэс збежнасці заняў даволі працяглы час, такія выдаткі працы STP.

Трэнінг Cisco 200-125 CCNA v3.0. Дзень 37. STP: выбар Root Bridge, функцыі PortFast і BPDU guard. Частка 2

Цяпер давайце разгледзім, як працуе RSTP. Пачнём са світаку SW2 і ўвядзем у яго наладах каманду spanning-tree mode rapid-pvst. У дадзенай каманды ёсць усяго два варыянты параметраў: pvst і rapid-pvst, я выкарыстоўваю другі. Пасля ўводу каманды світч пераходзіць у рэжым RPVST, праверыць гэта можна камандай show spanning-tree.

Трэнінг Cisco 200-125 CCNA v3.0. Дзень 37. STP: выбар Root Bridge, функцыі PortFast і BPDU guard. Частка 2

У пачатку вы бачыце паведамленне аб тым, што зараз у нас працуе пратакол RSTP. Усё астатняе засталося без змен. Затым я павінен зрабіць тое ж самае для ўсіх астатніх прылад, і на гэтым настройка RSTP завершана. Давайце разгледзім працу гэтага пратакола так, як мы рабілі гэта для STP.

Я зноў злучаю кабелем світч SW2 напрамую з каранёвым світчам SW1 -паглядзім, як хутка адбудзецца сыходжанне. Я набіраю каманду show spanning-tree summary і бачу, што два порты скрутку знаходзяцца ў стане Blocking, 1 у стане Forwarding.

Трэнінг Cisco 200-125 CCNA v3.0. Дзень 37. STP: выбар Root Bridge, функцыі PortFast і BPDU guard. Частка 2

Вы бачыце, што сыходжанне адбылося практычна імгненна, так што можаце судзіць, наколькі RSTP хутчэй, чым STP. Далей мы можам выкарыстоўваць каманду spanning-tree portfast default, якая перавядзе ўсе парты світача ў рэжым portfast па змаўчанні. Гэта актуальна ў выпадку, калі большасць партоў світаку з'яўляюцца Edge-партамі, напроста злучанымі з хастамі. Калі ў нас маецца нейкі порт, які не з'яўляецца Edge, мы наладжваем яго зваротна ў рэжым spanning-tree.

Для налады працы з VLAN можна выкарыстоўваць каманду spanning-tree vlan <нумар> з параметрамі priority (задае прыярытэт світача для spanning-tree) або root (прызначае скрутг каранёвым). Мы выкарыстоўваем каманду spanning-tree vlan 1 priority, паказаўшы ў якасці прыярытэту любы лік, кратны 4096, у дыяпазоне ад 0 да 61440. Такім чынам можна ўручную змяніць прыярытэт любой VLAN.

Можна набраць каманду spanning-tree vlan 1 root з параметрамі primary ці secondary, каб наладзіць асноўны ці рэзервовы root-порт для пэўнай сеткі. Калі я выкарыстоўваю spanning-tree vlan 1 root primary, дадзены порт будзе асноўным каранёвым портам для сеткі VLAN1.

Я ўвяду каманду show spanning-tree, і мы ўбачым, што дадзены свитч SW2 мае прыярытэт 24577, MAC-адрасы Root ID і Bridge ID супадаюць, значыць, зараз ён стаў каранёвым світчам.

Трэнінг Cisco 200-125 CCNA v3.0. Дзень 37. STP: выбар Root Bridge, функцыі PortFast і BPDU guard. Частка 2

Вы бачыце, наколькі хутка адбылося сыходжанне і змена ролі світак. Цяпер я адмяню рэжым асноўнага світача камандай no spanning-tree vlan 1 root primary, пасля чаго яго прыярытэт вернецца да папярэдняга значэння 32769, а роля каранёвага світача зноў пяройдзе да SW1.

Паглядзім, як працуе portfast. Я ўвяду каманду int f0/1, зайду ў налады дадзенага порта і выкарыстоўваю каманду spanning-tree, пасля чаго сістэма выдасць падказкі значэнняў параметраў.

Трэнінг Cisco 200-125 CCNA v3.0. Дзень 37. STP: выбар Root Bridge, функцыі PortFast і BPDU guard. Частка 2

Далей я выкарыстоўваю каманду spanning-tree portfast, якую можна ўвесці з параметрамі disable (адключае функцыю portfast для дадзенага порта) або trunk (уключае функцыю portfast для дадзенага порта нават у рэжыме транка).

Калі ўвесці spanning-tree portfast, то функцыя проста ўключыцца на дадзеным порце. Для актывацыі функцыі BPDU Guard трэба выкарыстоўваць каманду spanning-tree bpduguard enable, каманда spanning-tree bpduguard disable адключае дадзеную функцыю.

Я хутка раскажу яшчэ пра адну рэч. Калі для VLAN1 інтэрфейс світака SW2 у кірунку SW3 будзе заблакаваны, то пры іншых параметрах налады для іншай VLAN, напрыклад, VLAN2, гэты ж інтэрфейс можа стаць каранёвым портам. Такім чынам у сістэме можа рэалізоўвацца механізм балансавання нагрузкі трафіку - у адным выпадку дадзены сегмент сеткі не выкарыстоўваецца, у іншым - выкарыстоўваецца.

Я пакажу, што адбываецца, калі пры падлучэнні хаба ў нас узнікае shared-інтэрфейс. Я дадам хаб на схему і злучу яго са світаком SW2 двума кабелямі.

Трэнінг Cisco 200-125 CCNA v3.0. Дзень 37. STP: выбар Root Bridge, функцыі PortFast і BPDU guard. Частка 2

Каманда show spanning-tree адлюструе наступную карціну.

Трэнінг Cisco 200-125 CCNA v3.0. Дзень 37. STP: выбар Root Bridge, функцыі PortFast і BPDU guard. Частка 2

Fa0/5 (левы ніжні порт світаку) становіцца backup-портам, а порт Fa0/4 (правы ніжні порт світаку) становіцца прызначаным designated-портам. Тып абодвух партоў - агульны, або shared. Гэта азначае, што сегмент інтэрфейсаў хаб-світч з'яўляецца агульнай сеткай.

Дзякуючы выкарыстанню RSTP мы атрымалі падзел на альтэрнатыўны і рэзервовы парты. Калі мы перавядзем свитч SW2 у рэжым pvst камандай spanning-tree mode pvst, то ўбачым, што інтэрфейс Fa0/5 зноў перайшоў у стан Alternative, таму што цяпер няма адрознення паміж backup-портам і alternative-портам.

Трэнінг Cisco 200-125 CCNA v3.0. Дзень 37. STP: выбар Root Bridge, функцыі PortFast і BPDU guard. Частка 2

Гэта быў вельмі доўгі ўрок, і калі вы чагосьці не зразумелі, раю перагледзець яго яшчэ раз.


Дзякуй, што застаяцеся з намі. Вам падабаюцца нашыя артыкулы? Жадаеце бачыць больш цікавых матэрыялаў? Падтрымайце нас аформіўшы замову або парэкамендаваўшы знаёмым, 30% зніжка для карыстальнікаў Хабра на ўнікальны аналаг entry-level сервераў, які быў прыдуманы намі для Вас: Уся праўда аб VPS (KVM) E5-2650 v4 (6 Cores) 10GB DDR4 240GB SSD 1Gbps ад $20 ці як правільна дзяліць сервер? (даступныя варыянты з RAID1 і RAID10, да 24 ядраў і да 40GB DDR4).

Dell R730xd у 2 разы танней? Толькі ў нас 2 х Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 ТБ ад $199 у Нідэрландах! Dell R420 – 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB – ад $99! Чытайце аб тым Як пабудаваць інфраструктуру корп. класа c ужываннем сервераў Dell R730xd Е5-2650 v4 коштам 9000 еўра за капейкі?

Крыніца: habr.com

Дадаць каментар