Ang kwento ng isang switch

Ang kwento ng isang switch
Sa aming lokal na network aggregation mayroon kaming anim na pares ng Arista DCS-7050CX3-32S switch at isang pares ng Brocade VDX 6940-36Q switch. Hindi naman sa sobrang nahirapan kami ng mga Brocade switch sa network na ito, gumagana at ginagawa nila ang kanilang mga function, ngunit naghahanda kami ng ganap na automation ng ilang mga aksyon, at wala kaming mga kakayahan na ito sa mga switch na ito. Nais ko ring lumipat mula sa 40GE na mga interface sa posibilidad ng paggamit ng 100GE upang makagawa ng reserba para sa susunod na 2-3 taon. Kaya nagpasya kaming palitan ang Brocade kay Arista.

Ang mga switch na ito ay LAN aggregation switch para sa bawat data center. Ang mga switch sa distribusyon (ang pangalawang antas ng pagsasama-sama) ay direktang konektado sa kanila, na nag-assemble na ng mga Top-of-Rack na lokal na switch ng network sa mga rack na may mga server.

Ang kwento ng isang switch
Ang bawat server ay konektado sa isa o dalawang access switch. Ang mga access switch ay konektado sa isang pares ng distribution switch (dalawang distribution switch at dalawang pisikal na link mula sa access switch sa iba't ibang distribution switch ay ginagamit para sa redundancy).

Ang bawat server ay maaaring gamitin ng sarili nitong kliyente, kaya ang kliyente ay inilalaan ng isang hiwalay na VLAN. Ang parehong VLAN ay pagkatapos ay nakarehistro sa isa pang server ng client na ito sa anumang rack. Ang data center ay binubuo ng ilang ganoong mga row (POD), bawat hilera ng mga rack ay may sarili nitong mga switch sa pamamahagi. Pagkatapos ang mga switch sa pamamahagi na ito ay konektado sa mga switch ng aggregation.

Ang kwento ng isang switch
Ang mga kliyente ay maaaring mag-order ng isang server sa anumang hilera; imposibleng mahulaan nang maaga na ang server ay ilalaan o mai-install sa isang partikular na hilera sa isang partikular na rack, kaya mayroong humigit-kumulang 2500 VLAN sa mga aggregation switch sa bawat data center.

Ang kagamitan para sa DCI (Data-Center Interconnect) ay konektado sa aggregation switch. Maaari itong ilaan para sa L2 connectivity (isang pares ng switch na bumubuo ng VXLAN tunnel patungo sa isa pang data center) o para sa L3 connectivity (dalawang MPLS router).

Ang kwento ng isang switch
Tulad ng naisulat ko na, upang pag-isahin ang mga proseso ng pag-automate ng pagsasaayos ng mga serbisyo sa kagamitan sa isang data center, kinakailangan na palitan ang mga switch ng gitnang pagsasama-sama. Nag-install kami ng mga bagong switch sa tabi ng mga umiiral na, pinagsama ang mga ito sa isang pares ng MLAG at nagsimulang maghanda para sa trabaho. Agad silang nakakonekta sa mga kasalukuyang switch ng aggregation, para magkaroon sila ng isang karaniwang L2 domain sa lahat ng client VLAN.

Mga detalye ng circuit

Para sa mga detalye, pangalanan natin ang mga lumang switch ng aggregation A1 ΠΈ A2, bago - N1 ΠΈ N2. Isipin natin iyon sa POD 1 ΠΈ POD 4 ang mga server ng isang kliyente ay naka-host C1, Ang client VLAN ay nakasaad sa asul. Gumagamit ang kliyenteng ito ng L2 connectivity service sa isa pang data center, kaya ang VLAN nito ay pinapakain sa isang pares ng VXLAN switch.

Customer C2 nagho-host ng mga server sa POD 2 ΠΈ POD 3, Ang client VLAN ay denote ng dark green. Gumagamit din ang kliyenteng ito ng serbisyo sa pagkonekta sa isa pang data center, ngunit L3, kaya ang VLAN nito ay ipinadala sa isang pares ng L3VPN router.

Ang kwento ng isang switch
Kailangan namin ng mga VLAN ng kliyente upang maunawaan kung anong mga yugto ng pagpapalit ang nangyayari kung ano ang mangyayari, kung saan nangyayari ang pagkaantala ng komunikasyon, at kung ano ang maaaring tagal nito. Ang STP protocol ay hindi ginagamit sa scheme na ito, dahil ang lapad ng puno para dito sa kasong ito ay malaki, at ang convergence ng protocol ay lumalaki nang malaki sa bilang ng mga device at mga link sa pagitan nila.

Ang lahat ng device na konektado sa pamamagitan ng double links ay bumubuo ng stack, MLAG pair o VCS Ethernet fabric. Para sa isang pares ng L3VPN router, hindi ginagamit ang mga naturang teknolohiya, dahil hindi na kailangan ng L2 redundancy; sapat na na mayroon silang L2 connectivity sa isa't isa sa pamamagitan ng aggregation switch.

Mga opsyon sa pagpapatupad

Kapag sinusuri ang mga opsyon para sa karagdagang mga kaganapan, napagtanto namin na may ilang mga paraan upang maisagawa ang gawaing ito. Mula sa isang pandaigdigang pahinga sa buong lokal na network, hanggang sa maliliit na literal na 1-2 segundong pahinga sa mga bahagi ng network.

Network, tumigil ka! Mga switch, palitan sila!

Ang pinakamadaling paraan, siyempre, ay magdeklara ng isang pandaigdigang pahinga sa komunikasyon sa lahat ng POD at lahat ng serbisyo ng DCI at ilipat ang lahat ng mga link mula sa mga switch А sa mga switch N.

Ang kwento ng isang switch
Bukod sa pagkaantala, ang oras kung saan hindi namin mapagkakatiwalaang mahulaan (oo, alam namin ang bilang ng mga link, ngunit hindi namin alam kung gaano karaming beses ang isang bagay ay magkakamali - mula sa isang sirang patch cord o sirang connector hanggang sa isang may sira na port o transceiver ), hindi pa rin namin mahulaan nang maaga kung ang haba ng mga patch cord, DAC, AOC, na konektado sa mga lumang switch A, ay sapat na upang maabot ang mga ito sa mga bagong switch N, bagama't nakatayo sa tabi nila, ngunit medyo hanggang sa gilid, at kung gagana ang parehong mga transceiver /DAC/AOC mula sa Brocade ay lumipat sa Arista switch.

At lahat ng ito sa ilalim ng mga kondisyon ng matinding panggigipit mula sa mga customer at teknikal na suporta ("Natasha, bumangon ka! Natasha, lahat ay hindi gumagana doon! Natasha, sumulat na kami sa teknikal na suporta, sa totoo lang! Natasha, ibinagsak na nila ang lahat. ! Natasha, ilan pa ba tayo hindi gagana? Natasha, kailan ito gagana?!"). Kahit na sa kabila ng paunang inihayag na pahinga at abiso sa mga kliyente, ang pagdagsa ng mga kahilingan sa ganoong oras ay ginagarantiyahan.

Tumigil ka, 1-2-3-4!

Paano kung hindi namin ipahayag ang isang pandaigdigang pahinga, ngunit sa halip ay isang serye ng mga maliliit na pagkaantala sa komunikasyon para sa mga serbisyo ng POD at DCI. Sa unang pahinga, lumipat sa mga switch N lamang POD 1, sa pangalawa - sa loob ng ilang araw - POD 2, pagkatapos ng ilang araw pa POD 3Pa POD 4…[N], pagkatapos ay VXLAN switch at pagkatapos ay L3VPN router.

Ang kwento ng isang switch
Sa organisasyong ito ng paglipat ng trabaho, binabawasan namin ang pagiging kumplikado ng isang beses na trabaho at pinapataas namin ang aming oras upang malutas ang mga problema kung may biglang magkamali. Ang POD 1 ay nananatiling konektado sa iba pang mga POD at DCI pagkatapos lumipat. Ngunit ang gawain mismo ay nagpapatuloy nang mahabang panahon; sa panahon ng gawaing ito sa data center, ang isang inhinyero ay kinakailangang pisikal na magsagawa ng paglipat, at sa panahon ng trabaho (at ang naturang gawain ay isinasagawa, bilang panuntunan, sa gabi, mula 2 hanggang 5 am), ang pagkakaroon ng isang online network engineer ay kinakailangan sa medyo mataas na antas ng mga kwalipikasyon. Ngunit pagkatapos ay nakakakuha kami ng mga maikling pagkagambala sa komunikasyon; bilang isang panuntunan, ang trabaho ay maaaring isagawa sa pagitan ng kalahating oras na may pahinga ng hanggang 2 minuto (sa pagsasagawa, madalas na 20-30 segundo na may inaasahang pag-uugali ng kagamitan).

Sa halimbawang kliyente C1 o kliyente C2 kailangan mong bigyan ng babala ang tungkol sa trabaho na may pagkaantala sa komunikasyon nang hindi bababa sa tatlong beses - sa unang pagkakataon na magsagawa ng trabaho sa isang POD, kung saan matatagpuan ang isa sa mga server nito, ang pangalawang pagkakataon - sa pangalawa, at pangatlong beses - kapag pagpapalit ng kagamitan para sa mga serbisyo ng DCI.

Paglipat ng pinagsama-samang mga channel ng komunikasyon

Bakit natin pinag-uusapan ang inaasahang pag-uugali ng mga kagamitan, at paano maaaring ilipat ang pinagsama-samang mga channel habang pinapaliit ang pagkagambala sa komunikasyon? Isipin natin ang sumusunod na larawan:

Ang kwento ng isang switch
Sa isang gilid ng link mayroong mga switch ng pamamahagi ng POD - D1 и D2, bumubuo sila ng isang pares ng MLAG sa isa't isa (stack, pabrika ng VCS, pares ng vPC), sa kabilang banda mayroong dalawang link - Link 1 и Link 2 - kasama sa pares ng MLAG ng lumang aggregation switch А. Sa gilid ng switch D isang pinagsama-samang interface na may pangalan Port-channel A, sa gilid ng mga switch ng aggregation А - pinagsama-samang interface na may pangalan Port-channel D.

Ang pinagsama-samang mga interface ay gumagamit ng LACP sa kanilang operasyon, iyon ay, ang mga switch sa magkabilang panig ay regular na nagpapalitan ng mga LACPDU packet sa parehong mga link upang matiyak na ang mga link ay:

  • manggagawa;
  • kasama sa isang pares ng mga device sa malayong bahagi.

Kapag nagpapalitan ng mga packet, dinadala ng packet ang halaga system-id, na nagsasaad ng device kung saan kasama ang mga link na ito. Para sa isang pares ng MLAG (stack, factory, atbp.), ang value ng system-id para sa mga device na bumubuo sa pinagsama-samang interface ay pareho. Lumipat D1 ipinapadala sa Link 1 halaga system-id D, at lumipat D2 ipinapadala sa Link 2 halaga system-id D.

Mga switch A1 ΠΈ A2 suriin ang mga LACPDU packet na natanggap sa isang Po D interface at tingnan kung ang system-id sa mga ito ay tumutugma. Kung ang system-id na natanggap sa pamamagitan ng ilang link ay biglang nag-iiba mula sa kasalukuyang halaga ng pagpapatakbo, pagkatapos ay aalisin ang link na ito mula sa pinagsama-samang interface hanggang sa maitama ang sitwasyon. Ngayon sa aming switch side D kasalukuyang halaga ng system-id mula sa kasosyo sa LACP - A, at sa gilid ng switch А β€” kasalukuyang halaga ng system-id mula sa kasosyo sa LACP β€” D.

Kung kailangan nating palitan ang pinagsama-samang interface, magagawa natin ito sa dalawang magkaibang paraan:

Paraan 1 - Simple
Huwag paganahin ang parehong mga link mula sa mga switch A. Sa kasong ito, hindi gumagana ang pinagsama-samang channel.

Ang kwento ng isang switch
Ikonekta ang parehong mga link nang paisa-isa sa mga switch N, pagkatapos ay muling pag-uusapan ang mga parameter ng pagpapatakbo ng LACP at mabubuo ang interface PoD sa mga switch N at paghahatid ng mga halaga sa mga link system-id N.

Ang kwento ng isang switch

Paraan 2 - Bawasan ang pagkaantala
Idiskonekta ang Link 2 mula sa switch A2. Kasabay nito, ang trapiko sa pagitan А и D ay patuloy na ipapadala lamang sa isa sa mga link, na mananatiling bahagi ng pinagsama-samang interface.

Ang kwento ng isang switch
Ikonekta ang Link 2 upang lumipat sa N2. Sa switch N ang pinagsama-samang interface ay na-configure na Po DN, at lumipat N2 magsisimulang magpadala sa LACPDU system-id N. Sa yugtong ito maaari na nating suriin na ang switch N2 gumagana nang tama sa transceiver na ginamit para sa Link 2, na ang port ng koneksyon ay pumasok sa estado Up, at walang mga error na nangyayari sa port ng koneksyon kapag nagpapadala ng mga LACPDU.

Ang kwento ng isang switch
Ngunit ang katotohanan na ang switch D2 para sa pinagsama-samang interface Po A mula sa gilid Ang Link 2 ay tumatanggap ng system-id N value na iba sa kasalukuyang operating system-id A value, hindi pinapayagan ang mga switch D ipakilala Link 2 bahagi ng pinagsama-samang interface Po A. Lumipat N hindi makapasok Link 2 sa operasyon, dahil hindi ito nakakatanggap ng kumpirmasyon ng operability mula sa LACP partner ng switch D2. Ang resulta ng trapiko ay Link 2 hindi nakakalusot.

At ngayon pinapatay namin ang Link 1 mula sa switch A1, sa gayon ay inaalis ang mga switch А и D gumaganang pinagsama-samang interface. Kaya sa gilid ng switch D nawawala ang kasalukuyang gumaganang system-id value para sa interface Po A.

Ang kwento ng isang switch
Pinapayagan nito ang mga switch D ΠΈ N sumang-ayon na makipagpalitan ng system-id AN sa mga interface Po A ΠΈ Po DN, upang ang trapiko ay magsimulang maihatid sa kahabaan ng link Link 2. Ang pahinga sa kasong ito ay, sa pagsasanay, hanggang 2 segundo.

Ang kwento ng isang switch
At ngayon madali na nating mailipat ang Link 1 para lumipat ng N1, pagpapanumbalik ng kapasidad at antas ng redundancy ng interface Po A ΠΈ Po DN. Dahil kapag nakakonekta ang link na ito, ang kasalukuyang halaga ng system-id ay hindi nagbabago sa magkabilang panig, walang pagkaantala.

Ang kwento ng isang switch

Mga karagdagang link

Ngunit ang paglipat ay maaaring isagawa nang walang presensya ng isang inhinyero sa oras ng paglipat. Upang gawin ito, kakailanganin naming maglagay ng mga karagdagang link sa pagitan ng mga switch ng pamamahagi nang maaga D at mga bagong aggregation switch N.

Ang kwento ng isang switch
Naglalagay kami ng mga bagong link sa pagitan ng mga switch ng aggregation N at mga switch ng pamamahagi para sa lahat ng POD. Nangangailangan ito ng pag-order at paglalagay ng mga karagdagang patch cord, at pag-install ng mga karagdagang transceiver tulad ng sa N, at sa D. Magagawa natin ito dahil sa ating mga switch D Ang bawat POD ay may mga libreng port (o pre-free namin ang mga ito). Bilang resulta, ang bawat POD ay pisikal na konektado sa pamamagitan ng dalawang link sa lumang switch A at sa bagong switch N.

Ang kwento ng isang switch
Sa switch D dalawang pinagsama-samang interface ang nabuo - Po A may mga link Link 1 ΠΈ Link 2At Po N - may mga link Link N1 ΠΈ Link N2. Sa yugtong ito, sinusuri namin ang tamang koneksyon ng mga interface at link, ang mga antas ng optical signal sa magkabilang dulo ng mga link (sa pamamagitan ng impormasyon ng DDM mula sa mga switch), maaari pa naming suriin ang pagganap ng link sa ilalim ng pagkarga o subaybayan ang mga estado ng optical signal at temperatura ng transceiver sa loob ng ilang araw.

Ang trapiko ay ipinapadala pa rin sa pamamagitan ng interface Po A, at ang interface Po N walang gastos sa trapiko. Ang mga setting sa mga interface ay katulad nito:

Interface Port-channel A
Switchport mode trunk
Switchport allowed vlan C1, C2

Interface Port-channel N
Switchport mode trunk
Switchport allowed vlan none

Ang mga switch ng D, bilang panuntunan, ay sumusuporta sa mga pagbabago sa configuration na nakabatay sa session; ginagamit ang mga modelo ng switch na may ganitong functionality. Para mapalitan natin ang mga setting ng Po A at Po N interface sa isang hakbang:

Configure session
Interface Port-channel A
Switchport allowed vlan none
Interface Port-channel N
Switchport allowed vlan C1, C2
Commit

Pagkatapos ang pagbabago ng pagsasaayos ay magaganap nang mabilis, at ang pahinga ay, sa pagsasanay, ay hindi hihigit sa 5 segundo.

Ang pamamaraang ito ay nagbibigay-daan sa amin upang makumpleto ang lahat ng gawaing paghahanda nang maaga, isagawa ang lahat ng kinakailangang pagsusuri, i-coordinate ang gawain sa mga kalahok sa proseso, mahulaan nang detalyado ang mga aksyon para sa paggawa ng trabaho, nang walang paglipad ng pagkamalikhain kapag "nagkamali ang lahat. ,” at mayroon nang plano para sa pagbabalik sa dating configuration. Ang trabaho ayon sa planong ito ay isinasagawa ng isang network engineer nang walang presensya ng isang data center engineer sa site na pisikal na nagsasagawa ng paglipat.

Ang mahalaga din sa pamamaraang ito ng paglipat ay ang lahat ng mga bagong link ay sinusubaybayan na nang maaga. Mga error, pagsasama ng mga link sa yunit, pag-load ng mga link - lahat ng kinakailangang impormasyon ay nasa sistema ng pagsubaybay, at ito ay iginuhit na sa mga mapa.

D-Day

Supot ng buto

Pinili namin ang hindi gaanong masakit na paglipat ng landas para sa mga kliyente at ang hindi gaanong prone sa mga sitwasyong "may nangyaring mali" na may mga karagdagang link. Kaya inilipat namin ang lahat ng POD sa mga bagong switch ng aggregation sa loob ng ilang gabi.

Ang kwento ng isang switch
Ngunit ang natitira na lang ay palitan ang kagamitan na nagbibigay ng mga serbisyo ng DCI.

L2

Sa kaso ng kagamitan na nagbibigay ng koneksyon sa L2, hindi namin nagawang isagawa ang katulad na gawain na may mga karagdagang link. Mayroong hindi bababa sa dalawang dahilan para dito:

  • Kakulangan ng mga libreng port ng kinakailangang bilis sa mga switch ng VXLAN.
  • Kakulangan ng pagpapagana ng pagbabago ng configuration ng session sa mga switch ng VXLAN.

Hindi kami nagpalipat-lipat ng mga link nang "isa-isang" na may pahinga lamang habang sumasang-ayon sa isang bagong pares ng system-id, dahil wala kaming 100% kumpiyansa na magiging tama ang pamamaraan, at ipinakita ng isang pagsubok sa laboratoryo na sa kaso kung "may nangyaring mali," nakakakuha pa rin kami ng pagkaantala ng koneksyon, at ang pinakamasama ay hindi lamang para sa mga kliyente na may L2 na koneksyon sa iba pang mga data center, ngunit sa pangkalahatan para sa lahat ng mga kliyente ng data center na ito.

Nagsagawa kami ng gawaing propaganda nang maaga sa paglipat mula sa mga channel ng L2, kaya ang bilang ng mga kliyenteng apektado ng trabaho sa mga switch ng VXLAN ay ilang beses nang mas mababa kaysa sa isang taon na ang nakalipas. Bilang resulta, nagpasya kaming ihinto ang komunikasyon sa pamamagitan ng serbisyo ng koneksyon ng L2, sa kondisyon na mapanatili namin ang normal na operasyon ng mga serbisyo ng lokal na network sa isang data center. Bilang karagdagan, ang SLA para sa serbisyong ito ay nagbibigay para sa posibilidad ng pagsasagawa ng nakaiskedyul na trabaho na may mga pagkaantala.

L3

Bakit namin inirerekumenda na lumipat ang lahat sa L3VPN kapag nag-aayos ng mga serbisyo ng DCI? Ang isa sa mga dahilan ay ang kakayahang magsagawa ng trabaho sa isa sa mga router na nagbibigay ng serbisyong ito, binabawasan lamang ang antas ng redundancy sa N+0, nang hindi nakakaabala sa komunikasyon.

Tingnan natin ang pamamaraan ng paghahatid ng serbisyo. Sa serbisyong ito, ang L2 segment ay napupunta mula sa mga client server hanggang sa L3VPN Selectel routers. Ang network ng kliyente ay winakasan sa mga router.

Ang bawat client server, hal. S2 ΠΈ S3 sa diagram sa itaas, may sariling mga pribadong IP address - 10.0.0.2/24 sa S2 server ΠΈ 10.0.0.3/24 sa S3 server. Mga address 10.0.0.252/24 ΠΈ 10.0.0.253/24 itinalaga ng Selectel sa mga router L3VPN-1 ΠΈ L3VPN-2, ayon sa pagkakabanggit. IP address Ang 10.0.0.254/24 ay isang VRRP VIP address sa mga Selectel router.

Maaari kang matuto nang higit pa tungkol sa serbisyo ng L3VPN basahin sa aming blog.

Bago ang paglipat, ang lahat ay mukhang humigit-kumulang sa diagram:

Ang kwento ng isang switch
Dalawang router L3VPN-1 и L3VPN-2 ay konektado sa lumang aggregation switch А. Ang master para sa VRRP VIP address 10.0.0.254 ay ang router L3VPN-1. Ito ay may mas mataas na priyoridad para sa address na ito kaysa sa router L3VPN-2.

unit 1006 {
    description C2;
    vlan-id 1006;
    family inet {       
        address 10.0.0.252/24 {
            vrrp-group 1 {
                priority 200;
                virtual-address 10.100.0.254;
                preempt {
                    hold-time 120;
                }
                accept-data;
            }
        }
    }
}

Gumagamit ang S2 server ng gateway 10.0.0.254 upang makipag-ugnayan sa mga server sa ibang mga lokasyon. Kaya, ang pagdiskonekta sa L3VPN-2 router mula sa network (siyempre, kung una itong nadiskonekta sa MPLS domain) ay hindi makakaapekto sa pagkakakonekta ng mga server ng kliyente. Sa puntong ito, ang antas ng redundancy ng circuit ay nabawasan lamang.

Ang kwento ng isang switch
Pagkatapos nito ay ligtas nating maikokonekta muli ang router L3VPN-2 sa isang pares ng switch N. Lay link, baguhin ang mga transceiver. Ang mga lohikal na interface ng router, kung saan nakasalalay ang pagpapatakbo ng mga serbisyo ng kliyente, ay hindi pinagana hanggang sa makumpirma na ang lahat ay gumagana ayon sa nararapat.

Pagkatapos suriin ang mga link, transceiver, mga antas ng signal, at mga antas ng error sa mga interface, ang router ay inilalagay sa operasyon, ngunit nakakonekta na sa isang bagong pares ng mga switch.

Ang kwento ng isang switch
Susunod, ibababa namin ang VRRP priority ng L3VPN-1 router, at ang VIP address na 10.0.0.254 ay inilipat sa L3VPN-2 router. Ang mga gawaing ito ay isinasagawa din nang walang pagkagambala sa komunikasyon.

Ang kwento ng isang switch
Paglilipat ng VIP address 10.0.0.254 sa router L3VPN-2 nagpapahintulot sa iyo na huwag paganahin ang router L3VPN-1 nang walang pagkagambala ng komunikasyon para sa kliyente at ikonekta ito sa isang bagong pares ng mga switch ng aggregation N.

Ang kwento ng isang switch
Kung ibabalik man o hindi ang VRRP VIP sa router ng L3VPN-1 ay isa pang tanong, at kahit na ibalik ito, ginagawa ito nang hindi nakakaabala sa koneksyon.

Sa kabuuan

Pagkatapos ng lahat ng hakbang na ito, aktwal naming pinalitan ang mga switch ng aggregation sa isa sa aming mga data center, habang pinapaliit ang pagkaantala para sa aming mga customer.

Ang kwento ng isang switch
Ang natitira na lang ay lansag. Pag-alis ng mga lumang switch, pagtatanggal ng mga lumang link sa pagitan ng mga switch A at D, pagtatanggal ng mga transceiver mula sa mga link na ito, pagwawasto ng pagsubaybay, pagwawasto ng mga diagram ng network sa dokumentasyon at pagsubaybay.

Maaari kaming gumamit ng mga switch, transceiver, patch cord, AOC, DAC na natitira pagkatapos lumipat sa ibang mga proyekto o para sa iba pang katulad na paglipat.

"Natasha, pinalitan namin ang lahat!"

Pinagmulan: www.habr.com

Magdagdag ng komento