automation sa network. Usa ka kaso gikan sa kinabuhi sa usa ka tawo

Hoy Habr!

Niini nga artikulo gusto namon nga hisgutan ang bahin sa automation sa imprastraktura sa network. Usa ka working diagram sa network nga naglihok sa usa ka gamay apan mapahitas-on kaayo nga kompanya ang ipresentar. Ang tanan nga mga posporo nga adunay tinuod nga kagamitan sa network random. Atong tan-awon ang usa ka kaso nga nahitabo sa kini nga network, nga mahimong hinungdan sa usa ka pagsira sa negosyo sa dugay nga panahon ug grabe nga pagkawala sa pinansyal. Ang solusyon niini nga kaso haom kaayo sa konsepto sa "Automation of network infrastructure". Gamit ang mga himan sa automation, ipakita namon kung giunsa nimo epektibo nga masulbad ang mga komplikado nga mga problema sa mubo nga panahon, ug among palandongon kung ngano nga kini nga mga problema kinahanglan masulbad sa ingon nga paagi ug dili kung dili (pinaagi sa console).

Disclaimer

Ang among nag-unang mga himan alang sa automation mao ang Ansible (isip usa ka himan sa automation) ug Git (isip usa ka tipiganan alang sa Ansible nga mga playbook). Gusto ko nga maghimo dayon og reserbasyon nga dili kini usa ka pasiuna nga artikulo, diin naghisgot kami bahin sa lohika sa Ansible o Git, ug ipasabut ang mga sukaranan nga mga butang (pananglitan, unsa ang mga roletaskimodules, mga file sa imbentaryo, mga variable sa Ansible, o kung unsa ang mahitabo kung mosulod ka sa git push o git commit commands). Kini nga istorya dili bahin sa kung giunsa nimo mahimo ang Ansible ug i-configure ang NTP o SMTP sa imong kagamitan. Kini usa ka istorya kung giunsa nimo dali ug mas maayo nga masulbad ang problema sa network nga wala’y mga sayup. Gisugyot usab nga adunay maayo nga pagsabut kung giunsa ang pagtrabaho sa network, labi na kung unsa ang TCP/IP, OSPF, BGP protocol stack. Atong kuhaon usab ang pagpili sa Ansible ug Git gikan sa equation. Kung kinahanglan pa nimo nga magpili usa ka piho nga solusyon, among girekomenda nga basahon ang libro nga "Network Programmability and Automation. Mga Kahanas alang sa Sunod nga Henerasyon nga Network Engineer" ni Jason Edelman, Scott S. Lowe, ug Matt Oswalt.

Karon sa punto.

Pagbuot sa problema

Hunahunaa ang usa ka sitwasyon: alas 3 sa kaadlawon, nahinanok ka sa pagkatulog ug nagdamgo. Tawag sa telepono. Ang teknikal nga direktor nagtawag:

- Oo?
— ###, ####, #####, ang firewall cluster nahulog ug wala mobangon!!!
Gipahiran nimo ang imong mga mata, naningkamot nga masabtan kung unsa ang nahitabo ug mahanduraw kung giunsa kini mahitabo. Sa telepono madungog nimo ang buhok sa ulo sa direktor nga naggisi, ug mihangyo siya nga tawagan pagbalik tungod kay ang heneral nagtawag kaniya sa ikaduhang linya.

Paglabay sa tunga sa oras, gikolekta nimo ang una nga pasiuna nga mga nota gikan sa pagbalhin sa katungdanan, gipukaw ang tanan nga mahimong pukawon. Ingon usa ka sangputanan, ang teknikal nga direktor wala mamakak, ang tanan ingon kini, ang panguna nga kumpol sa mga firewall nahulog, ug wala’y sukaranan nga mga lihok sa lawas nga nagdala kaniya sa iyang mga pagbati. Ang tanan nga mga serbisyo nga gitanyag sa kompanya dili molihok.

Pagpili usa ka problema sa imong lami, ang tanan makahinumdom sa usa ka butang nga lahi. Pananglitan, pagkahuman sa usa ka gabii nga pag-update kung wala’y bug-at nga karga, ang tanan nagtrabaho nga maayo, ug ang tanan natulog nga malipayon. Ang trapiko nagsugod sa pagdagayday, ug ang mga interface buffer nagsugod sa pag-awas tungod sa usa ka bug sa driver sa network card.

Si Jackie Chan makahulagway og maayo sa sitwasyon.

automation sa network. Usa ka kaso gikan sa kinabuhi sa usa ka tawo

Salamat, Jackie.

Dili kaayo nindot nga kahimtang, dili ba?

Ibilin nato ang atong network bro sa iyang mga sad thoughts sa makadiyot.

Atong hisgotan kon sa unsang paagi molambo pa ang mga panghitabo.

Among gisugyot ang mosunod nga han-ay sa presentasyon sa materyal

  1. Atong tan-awon ang network diagram ug tan-awon kung giunsa kini paglihok;
  2. Atong ihulagway kung giunsa nato pagbalhin ang mga setting gikan sa usa ka router ngadto sa lain gamit ang Ansible;
  3. Maghisgot kita bahin sa automation sa imprastraktura sa IT sa kinatibuk-an.

Network diagram ug paghulagway

Ang laraw

automation sa network. Usa ka kaso gikan sa kinabuhi sa usa ka tawo

Atong tagdon ang lohikal nga diagram sa atong organisasyon. Dili namo hinganlan ang mga espisipikong tiggama sa ekipo; alang sa mga katuyoan niini nga artikulo dili kini igsapayan (Ang matinagdanon nga magbabasa makatag-an kung unsang klase nga kagamitan ang gigamit). Usa lang kini sa maayong mga bentaha sa pagtrabaho kauban ang Ansible; kung mag-set up, kasagaran dili namon igsapayan kung unsang klase nga kagamitan kini. Aron masabtan, kini mao ang mga ekipo gikan sa mga iladong vendor, sama sa Cisco, Juniper, Check Point, Fortinet, Palo Alto...mahimo nimong ilisan ang imong kaugalingong opsyon.

Kami adunay duha ka nag-unang buluhaton alang sa paglihok sa trapiko:

  1. Siguruha ang pagmantala sa among mga serbisyo, nga negosyo sa kompanya;
  2. Paghatag komunikasyon sa mga sanga, usa ka hilit nga sentro sa datos ug mga organisasyon sa ikatulo nga partido (mga kauban ug kliyente), ingon man ang pag-access sa mga sanga sa Internet pinaagi sa sentral nga opisina.

Magsugod kita sa sukaranang mga elemento:

  1. Duha ka border routers (BRD-01, BRD-02);
  2. Firewall Cluster (FW-CLUSTER);
  3. Core switch (L3-CORE);
  4. Usa ka router nga mahimong linya sa kinabuhi (samtang atong sulbaron ang problema, atong ibalhin ang mga setting sa network gikan sa FW-CLUSTER ngadto sa EMERGENCY) (EMERGENCY);
  5. Mga switch alang sa pagdumala sa imprastraktura sa network (L2-MGMT);
  6. Virtual nga makina nga adunay Git ug Ansible (VM-AUTOMATION);
  7. Usa ka laptop diin gihimo ang pagsulay ug pagpalambo sa mga playbook alang sa Ansible (Laptop-Automation).

Ang network gi-configure sa usa ka dinamikong OSPF routing protocol nga adunay mosunod nga mga lugar:

  • Lugar 0 – lugar nga naglakip sa mga router nga responsable sa paglihok sa trapiko sa EXCHANGE zone;
  • Lugar 1 - lugar nga naglakip sa mga router nga responsable sa operasyon sa mga serbisyo sa kompanya;
  • Lugar 2 - lugar nga naglakip sa mga router nga responsable sa pagdumala sa trapiko sa ruta;
  • Lugar N - mga lugar sa mga network sa sanga.

Sa mga border router, usa ka virtual router (VRF-INTERNET) ang gihimo, diin ang eBGP full view gi-install nga adunay katumbas nga gi-assign nga AS. Ang iBGP gi-configure tali sa mga VRF. Ang kompanya adunay daghang puti nga mga adres nga gipatik sa kini nga VRF-INTERNET. Ang pipila sa mga puti nga adres direkta nga gipaagi sa FW-CLUSTER (mga adres diin ang mga serbisyo sa kompanya naglihok), ang uban gipaagi sa EXCHANGE zone (internal nga serbisyo sa kompanya nga nanginahanglan mga eksternal nga IP adres, ug mga adres sa gawas sa NAT alang sa mga opisina). Sunod, ang trapiko moadto sa mga virtual nga router nga gihimo sa L3-CORE nga adunay puti ug gray nga mga adres (mga zone sa seguridad).

Ang Management network naggamit sa mga dedikado nga switch ug nagrepresentar sa usa ka pisikal nga gipahinungod nga network. Ang network sa pagdumala gibahin usab sa mga zone sa seguridad.
Ang EMERGENCY router sa pisikal ug lohikal nga pagdoble sa FW-CLUSTER. Ang tanan nga mga interface niini gibabagan gawas sa mga nagtan-aw sa network sa pagdumala.

Automation ug ang paghulagway niini

Nahibal-an namon kung giunsa ang pagtrabaho sa network. Karon atong tan-awon ang sunod-sunod nga pagtan-aw kung unsa ang atong buhaton aron mabalhin ang trapiko gikan sa FW-CLUSTER ngadto sa EMERGENCY:

  1. Gi-disable namo ang mga interface sa core switch (L3-CORE) nga nagkonektar niini sa FW-CLUSTER;
  2. Gi-disable namo ang mga interface sa L2-MGMT kernel switch nga nagkonektar niini sa FW-CLUSTER;
  3. Among gi-configure ang EMERGENCY router (pinaagi sa default, ang tanan nga mga interface gibabagan niini, gawas niadtong nakig-uban sa L2-MGMT):

  • Among gipalihok ang mga interface sa EMERGENCY;
  • Gi-configure namo ang external IP address (para sa NAT) nga naa sa FW-Cluster;
  • Naghimo kami og mga hangyo sa gARP aron ang mga adres sa poppy sa L3-CORE arp table mausab gikan sa FW-Cluster ngadto sa EMERGENCY;
  • Among irehistro ang default nga ruta isip static sa BRD-01, BRD-02;
  • Paghimo mga lagda sa NAT;
  • Ipasaka sa EMERGENCY OSPF Area 1;
  • Ipasaka sa EMERGENCY OSPF Area 2;
  • Among usbon ang gasto sa mga rota sa Area 1 ngadto sa 10;
  • Among usbon ang gasto sa default nga rota sa Area 1 ngadto sa 10;
  • Among usbon ang mga IP address nga nalangkit sa L2-MGMT (ngadto niadtong anaa sa FW-CLUSTER);
  • Naghimo kami og mga hangyo sa gARP aron ang mga adres sa poppy sa L2-MGMT arp table mausab gikan sa FW-CLUSTER ngadto sa EMERGENCY.

Sa makausa pa, mobalik kita sa orihinal nga pormulasyon sa problema. Alas tres sa buntag, grabe nga tensiyon, usa ka sayup sa bisan unsang yugto mahimong mosangpot sa bag-ong mga problema. Andam nga mag-type sa mga sugo pinaagi sa CLI? Oo? Ok, at least hugasi imong nawong, inom ug kape ug kuhaa imong gana.
Bruce, palihug tabangi ang mga lalaki.

automation sa network. Usa ka kaso gikan sa kinabuhi sa usa ka tawo

Aw, nagpadayon kami sa pagpalambo sa among automation.
Sa ubos usa ka diagram kung giunsa ang playbook nagtrabaho sa mga termino nga Ansible. Kini nga laraw nagpakita kung unsa ang among gihulagway sa ibabaw, kini usa lamang ka piho nga pagpatuman sa Ansible.
automation sa network. Usa ka kaso gikan sa kinabuhi sa usa ka tawo

Sa kini nga yugto, nahibal-an namon kung unsa ang kinahanglan buhaton, naghimo usa ka playbook, nagpahigayon pagsulay, ug karon andam na kami nga ilunsad kini.

Laing gamay nga lyrical digression. Ang kasayon ​​sa istorya kinahanglan dili makapahisalaag kanimo. Ang proseso sa pagsulat sa mga libro sa dula dili ingon ka yano ug kadali sama sa daw kini. Ang pagsulay nagkinahanglan og daghang panahon, usa ka virtual nga baruganan ang gihimo, ang solusyon gisulayan sa daghang mga higayon, mga 100 ka mga pagsulay ang gihimo.

Maglansad ta... Adunay pagbati nga hinay kaayo ang tanan, adunay sayup sa usa ka lugar, adunay dili molihok sa katapusan. Ang pagbati sa paglukso sa usa ka parachute, apan ang parachute dili gusto nga ablihan dayon ... normal kini.

Sunod, among gibasa ang resulta sa gihimo nga mga operasyon sa Ansible playbook (ang mga IP address gipulihan alang sa mga katuyoan sa sekreto):

[xxx@emergency ansible]$ ansible-playbook -i /etc/ansible/inventories/prod_inventory.ini /etc/ansible/playbooks/emergency_on.yml 

PLAY [------->Emergency on VCF] ********************************************************

TASK [vcf_junos_emergency_on : Disable PROD interfaces to FW-CLUSTER] *********************
changed: [vcf]

PLAY [------->Emergency on MGMT-CORE] ************************************************

TASK [mgmt_junos_emergency_on : Disable MGMT interfaces to FW-CLUSTER] ******************
changed: [m9-03-sw-03-mgmt-core]

PLAY [------->Emergency on] ****************************************************

TASK [mk_routeros_emergency_on : Enable EXT-INTERNET interface] **************************
changed: [m9-04-r-04]

TASK [mk_routeros_emergency_on : Generate gARP for EXT-INTERNET interface] ****************
changed: [m9-04-r-04]

TASK [mk_routeros_emergency_on : Enable static default route to EXT-INTERNET] ****************
changed: [m9-04-r-04]

TASK [mk_routeros_emergency_on : Change NAT rule to EXT-INTERNET interface] ****************
changed: [m9-04-r-04] => (item=12)
changed: [m9-04-r-04] => (item=14)
changed: [m9-04-r-04] => (item=15)
changed: [m9-04-r-04] => (item=16)
changed: [m9-04-r-04] => (item=17)

TASK [mk_routeros_emergency_on : Enable OSPF Area 1 PROD] ******************************
changed: [m9-04-r-04]

TASK [mk_routeros_emergency_on : Enable OSPF Area 2 MGMT] *****************************
changed: [m9-04-r-04]

TASK [mk_routeros_emergency_on : Change OSPF Area 1 interfaces costs to 10] *****************
changed: [m9-04-r-04] => (item=VLAN-1001)
changed: [m9-04-r-04] => (item=VLAN-1002)
changed: [m9-04-r-04] => (item=VLAN-1003)
changed: [m9-04-r-04] => (item=VLAN-1004)
changed: [m9-04-r-04] => (item=VLAN-1005)
changed: [m9-04-r-04] => (item=VLAN-1006)
changed: [m9-04-r-04] => (item=VLAN-1007)
changed: [m9-04-r-04] => (item=VLAN-1008)
changed: [m9-04-r-04] => (item=VLAN-1009)
changed: [m9-04-r-04] => (item=VLAN-1010)
changed: [m9-04-r-04] => (item=VLAN-1011)
changed: [m9-04-r-04] => (item=VLAN-1012)
changed: [m9-04-r-04] => (item=VLAN-1013)
changed: [m9-04-r-04] => (item=VLAN-1100)

TASK [mk_routeros_emergency_on : Change OSPF area1 default cost for to 10] ******************
changed: [m9-04-r-04]

TASK [mk_routeros_emergency_on : Change MGMT interfaces ip addresses] ********************
changed: [m9-04-r-04] => (item={u'ip': u'х.х.n.254', u'name': u'VLAN-803'})
changed: [m9-04-r-04] => (item={u'ip': u'х.х.n+1.254', u'name': u'VLAN-805'})
changed: [m9-04-r-04] => (item={u'ip': u'х.х.n+2.254', u'name': u'VLAN-807'})
changed: [m9-04-r-04] => (item={u'ip': u'х.х.n+3.254', u'name': u'VLAN-809'})
changed: [m9-04-r-04] => (item={u'ip': u'х.х.n+4.254', u'name': u'VLAN-820'})
changed: [m9-04-r-04] => (item={u'ip': u'х.х.n+5.254', u'name': u'VLAN-822'})
changed: [m9-04-r-04] => (item={u'ip': u'х.х.n+6.254', u'name': u'VLAN-823'})
changed: [m9-04-r-04] => (item={u'ip': u'х.х.n+7.254', u'name': u'VLAN-824'})
changed: [m9-04-r-04] => (item={u'ip': u'х.х.n+8.254', u'name': u'VLAN-850'})
changed: [m9-04-r-04] => (item={u'ip': u'х.х.n+9.254', u'name': u'VLAN-851'})
changed: [m9-04-r-04] => (item={u'ip': u'х.х.n+10.254', u'name': u'VLAN-852'})
changed: [m9-04-r-04] => (item={u'ip': u'х.х.n+11.254', u'name': u'VLAN-853'})
changed: [m9-04-r-04] => (item={u'ip': u'х.х.n+12.254', u'name': u'VLAN-870'})
changed: [m9-04-r-04] => (item={u'ip': u'х.х.n+13.254', u'name': u'VLAN-898'})
changed: [m9-04-r-04] => (item={u'ip': u'х.х.n+14.254', u'name': u'VLAN-899'})

TASK [mk_routeros_emergency_on : Generate gARPs for MGMT interfaces] *********************
changed: [m9-04-r-04] => (item={u'ip': u'х.х.n.254', u'name': u'VLAN-803'})
changed: [m9-04-r-04] => (item={u'ip': u'х.х.n+1.254', u'name': u'VLAN-805'})
changed: [m9-04-r-04] => (item={u'ip': u'х.х.n+2.254', u'name': u'VLAN-807'})
changed: [m9-04-r-04] => (item={u'ip': u'х.х.n+3.254', u'name': u'VLAN-809'})
changed: [m9-04-r-04] => (item={u'ip': u'х.х.n+4.254', u'name': u'VLAN-820'})
changed: [m9-04-r-04] => (item={u'ip': u'х.х.n+5.254', u'name': u'VLAN-822'})
changed: [m9-04-r-04] => (item={u'ip': u'х.х.n+6.254', u'name': u'VLAN-823'})
changed: [m9-04-r-04] => (item={u'ip': u'х.х.n+7.254', u'name': u'VLAN-824'})
changed: [m9-04-r-04] => (item={u'ip': u'х.х.n+8.254', u'name': u'VLAN-850'})
changed: [m9-04-r-04] => (item={u'ip': u'х.х.n+9.254', u'name': u'VLAN-851'})
changed: [m9-04-r-04] => (item={u'ip': u'х.х.n+10.254', u'name': u'VLAN-852'})
changed: [m9-04-r-04] => (item={u'ip': u'х.х.n+11.254', u'name': u'VLAN-853'})
changed: [m9-04-r-04] => (item={u'ip': u'х.х.n+12.254', u'name': u'VLAN-870'})
changed: [m9-04-r-04] => (item={u'ip': u'х.х.n+13.254', u'name': u'VLAN-898'})
changed: [m9-04-r-04] => (item={u'ip': u'х.х.n+14.254', u'name': u'VLAN-899'})

PLAY RECAP ************************************************************************

Nahimo na!

Sa tinuud, dili pa kini andam, ayaw kalimti ang bahin sa panagsama sa dinamikong mga protocol sa ruta ug pagkarga sa daghang mga ruta sa FIB. Dili nato kini maimpluwensyahan sa bisan unsang paagi. Naghulat mi. Kini milampos. Karon andam na kini.

Ug sa baryo sa Vilabajo (nga dili gusto nga awtomatiko ang pag-setup sa network) nagpadayon sila sa paghugas sa mga pinggan. Si Bruce (sa tinuod, lahi na, apan dili kaayo cool) naningkamot nga masabtan kung unsa pa ang mahitabo sa manual reconfiguration sa mga ekipo.

automation sa network. Usa ka kaso gikan sa kinabuhi sa usa ka tawo

Buot usab nakong hisgotan ang usa ka importanteng punto. Unsaon nato pagbalik ang tanan? Human sa pipila ka panahon, atong buhion pagbalik ang atong FW-CLUSTER. Kini ang nag-unang kagamitan, dili backup, ang network kinahanglan nga modagan niini.

Gibati ba nimo kung giunsa ang mga networker nagsugod sa pagkasunog? Ang teknikal nga direktor makadungog sa usa ka libo nga mga argumento ngano nga kini kinahanglan nga dili buhaton, ngano nga kini mahimo sa ulahi. Ikasubo, ingon niini ang pagtrabaho sa network gikan sa usa ka hugpong sa mga patch, piraso, ug mga salin sa kanhing kaluho niini. Kini nahimo nga usa ka patchwork quilt. Ang among tahas sa kinatibuk-an, dili niining piho nga sitwasyon, apan sa kinatibuk-an sa prinsipyo, isip mga espesyalista sa IT, mao ang pagdala sa trabaho sa network ngadto sa nindot nga English nga pulong nga "consistency", kini daghan kaayo, kini mahimong hubaron nga: coherence , pagkamakanunayon, lohika, pagkadugtong, sistematiko, pagkaparehas, pagkadugtong. Naa sa iyaha. Lamang sa niini nga kahimtang mao ang network nga madumala, kita tin-aw nga nakasabut unsa ang mga buhat ug sa unsa nga paagi, kita tin-aw nga makasabut unsa ang kinahanglan nga usbon, kon gikinahanglan, kita tin-aw nga nahibalo kon asa tan-awon kon ang mga problema motungha. Ug sa ingon nga network ra nga mahimo nimo ang mga limbong sama sa among gihulagway.

Sa tinuud, lain nga playbook ang giandam, nga nagbalik sa mga setting sa ilang orihinal nga kahimtang. Ang lohika sa operasyon niini parehas (importante nga hinumdoman nga ang pagkasunud-sunod sa mga buluhaton hinungdanon kaayo), aron dili mapalawig ang usa ka medyo taas nga artikulo, nakahukom kami nga dili mag-post usa ka lista sa pagpatuman sa playbook. Pagkahuman sa pagpahigayon sa ingon nga mga ehersisyo, mobati ka nga labi ka kalmado ug labi ka masaligon sa umaabot, dugang pa, ang bisan unsang mga crutches nga imong gitapok didto magpakita dayon sa ilang kaugalingon.

Bisan kinsa mahimong mosulat kanamo ug makadawat sa mga tinubdan sa tanang sinulat nga kodigo, uban sa tanang palybook. Mga kontak sa profile.

kaplag

Sa among opinyon, ang mga proseso nga mahimong awtomatiko wala pa ma-kristal. Pinasukad sa among nasugatan ug kung unsa ang gihisgutan sa among mga kauban sa Kasadpan, ang mga musunud nga tema makita hangtod karon:

  • Pagtagana sa aparato;
  • Pagkolekta sa datos;
  • Pagreport;
  • Pag-troubleshoot;
  • Pagsunod.

Kung adunay interes, mahimo natong ipadayon ang panaghisgot sa usa sa gihatag nga mga topiko.

Gusto ko usab nga maghisgot og gamay bahin sa automation. Unsa ang kinahanglan sa atong pagsabot:

  • Ang sistema kinahanglang mabuhi nga walay tawo, samtang gipauswag sa usa ka tawo. Ang sistema kinahanglang dili magdepende sa tawo;
  • Ang operasyon kinahanglan nga eksperto. Wala’y klase sa mga espesyalista nga naghimo sa naandan nga mga buluhaton. Adunay mga eksperto nga nag-automate sa tibuok nga rutina ug nagsulbad lamang sa mga komplikadong problema;
  • Ang naandan nga standard nga mga buluhaton awtomatik nga gihimo "sa paghikap sa usa ka buton", walay mga kahinguhaan nga mausik. Ang resulta sa maong mga buluhaton kanunay nga matag-an ug masabtan.

Ug unsa ang kinahanglan nga mosangpot sa kini nga mga punto:

  • Transparency sa IT nga imprastraktura (Diyutay nga risgo sa operasyon, modernisasyon, pagpatuman. Dili kaayo downtime kada tuig);
  • Ang abilidad sa pagplano sa mga kapanguhaan sa IT (Capacity-planning system - imong makita kung unsa ka daghan ang nahurot, imong makita kung pila ang gikinahanglan nga mga kapanguhaan sa usa ka sistema, ug dili pinaagi sa mga sulat ug pagbisita sa mga nanguna nga departamento);
  • Posibilidad sa pagpakunhod sa gidaghanon sa mga kawani sa IT.

Mga tagsulat sa artikulo: Alexander Chelovekov (CCIE RS, CCIE SP) ug Pavel Kirillov. Interesado kami sa paghisgot ug pagsugyot og mga solusyon sa hilisgutan sa IT infrastructure automation.


Source: www.habr.com

Idugang sa usa ka comment