Kung ang Linux conntrack dili na imong higala

Kung ang Linux conntrack dili na imong higala

Ang pagsubay sa koneksyon ("conntrack") usa ka kinauyokan nga bahin sa Linux kernel networking stack. Gitugotan niini ang kernel nga masubay ang tanan nga lohikal nga koneksyon sa network o mga agos ug sa ingon mailhan ang tanan nga mga pakete nga naglangkob sa matag dagan aron mahimo kini nga maproseso nga dungan nga sunud-sunod.

Ang Conntrack usa ka importante nga bahin sa kernel nga gigamit sa pipila ka mga batakang kaso:

  • Ang NAT nagsalig sa impormasyon gikan sa conntrack aron kini makatratar sa tanang packet gikan sa samang sapa nga parehas. Pananglitan, kung ang usa ka pod maka-access sa serbisyo sa Kubernetes, ang kube-proxy load balancer naggamit sa NAT aron idirekta ang trapiko sa usa ka piho nga pod sulod sa cluster. Ang Conntrack nagrekord nga alang sa usa ka gihatag nga koneksyon, ang tanan nga mga pakete sa serbisyo sa IP kinahanglan ipadala sa parehas nga pod, ug nga ang mga pakete nga gibalik sa backend pod kinahanglan nga NATed balik sa pod diin gikan ang hangyo.
  • Ang stateful firewalls sama sa Calico nagsalig sa impormasyon gikan sa connecttrack ngadto sa whitelist nga "response" nga trapiko. Gitugotan ka niini sa pagsulat sa usa ka polisiya sa network nga nag-ingon "tugoti ang akong pod nga magkonektar sa bisan unsang hilit nga IP address" nga dili kinahanglan nga magsulat usa ka palisiya aron klaro nga tugutan ang trapiko sa pagtubag. (Kung wala kini, kinahanglan nimong idugang ang dili kaayo luwas nga "pagtugot sa mga pakete sa akong pod gikan sa bisan unsang lagda sa IP".)

Dugang pa, ang conntrack kasagarang nagpauswag sa performance sa sistema (pinaagi sa pagkunhod sa konsumo sa CPU ug packet latency) tungod kay ang unang packet lang sa usa ka stream
kinahanglan nga moagi sa tibuok network stack aron mahibal-an kung unsa ang buhaton niini. Tan-awa ang post"Pagkumpara sa kube-proxy modes"aron makita ang usa ka pananglitan kung giunsa kini molihok.

Bisan pa, ang conntrack adunay mga limitasyon ...

Busa diin ang tanan nasayup?

Ang lamesa sa conntrack adunay usa ka ma-configure nga maximum nga gidak-on, ug kung kini puno, ang mga koneksyon kasagaran magsugod sa pagsalikway o paghulog. Adunay igo nga libre nga wanang sa lamesa aron madumala ang trapiko sa kadaghanan nga mga aplikasyon, ug dili kini mahimong problema. Bisan pa, adunay pipila ka mga senaryo diin mahimo nimong hunahunaon ang paggamit sa lamesa sa conntrack:

  • Ang labing klaro nga kaso kung ang imong server nagdumala sa usa ka labi ka daghan nga parehas nga aktibo nga koneksyon. Pananglitan, kung ang imong conntrack nga lamesa gi-configure alang sa 128k nga mga entry, apan ikaw adunay> 128k nga dungan nga mga koneksyon, siguradong adunay ka problema!
  • Usa ka gamay nga dili kaayo klaro nga kaso: kung ang imong server nagproseso sa daghang mga koneksyon matag segundo. Bisan kung ang mga koneksyon mubo ra, padayon sila nga gibantayan sa Linux sa pila ka yugto sa panahon (120s nga default). Pananglitan, kung ang imong conntrack table gi-configure alang sa 128k nga mga entry ug ikaw naningkamot sa pagdumala sa 1100 ka koneksyon matag segundo, sila molapas sa gidak-on sa conntrack table, bisan kung ang mga koneksyon mubo ra kaayo (128k/120s = 1092 koneksyon/ s).

Adunay ubay-ubay nga mga matang sa mga apps nga nahulog sa kini nga mga kategorya. Dugang pa, kung daghan ka nga dili maayo nga mga aktor, ang pagpuno sa lamesa sa conntrack sa imong server nga adunay daghang katunga nga bukas nga koneksyon mahimong magamit ingon bahin sa usa ka pag-atake sa pagdumili sa serbisyo (DOS). Sa duha ka mga kaso, ang conntrack mahimong usa ka limitado nga bottleneck sa imong sistema. Sa pipila ka mga kaso, ang pag-adjust sa conntrack nga mga parametro sa lamesa mahimong igo na aron matubag ang imong mga panginahanglan - pinaagi sa pagdugang sa gidak-on o pagkunhod sa conntrack nga mga timeout (apan kung imong buhaton kini nga sayup, makasinati ka og daghang problema). Alang sa ubang mga kaso kinahanglan nga laktawan ang conntrack alang sa agresibo nga trapiko.

Tinuod nga ehemplo

Maghatag kita ug usa ka piho nga pananglitan: usa ka dako nga SaaS provider nga among gitrabahoan adunay daghang mga memcached server sa mga host (dili mga virtual machine), nga ang matag usa nagproseso sa 50K+ nga mga short-term nga koneksyon matag segundo.

Nag-eksperimento sila sa conntrack configuration, pagdugang sa mga gidak-on sa lamesa ug pagkunhod sa oras sa pagsubay, apan ang configuration dili kasaligan, ang pagkonsumo sa RAM miuswag pag-ayo, nga usa ka problema (sa han-ay sa GBytes!), Ug ang mga koneksyon mubo kaayo nga ang conntrack wala. paghimo sa naandan nga benepisyo sa performance (pagkunhod sa konsumo sa CPU o packet latency).

Midangop sila sa Calico isip alternatibo. Ang mga polisiya sa network sa Calico nagtugot kanimo nga dili mogamit sa conntrack alang sa pipila ka mga matang sa trapiko (gamit ang opsyon sa palisiya sa doNotTrack). Naghatag kini kanila sa lebel sa pasundayag nga ilang gikinahanglan, dugang sa dugang nga lebel sa seguridad nga gihatag sa Calico.

Unsa nga mga gitas-on ang kinahanglan nimong adtoan aron malaktawan ang conntrack?

  • Ang mga polisiya sa network nga do-not-track kinahanglan kasagarang simetriko. Sa kaso sa SaaS provider: ang ilang mga aplikasyon midagan sulod sa protected zone ug busa, gamit ang network policy, mahimo nilang whitelist ang trapiko gikan sa ubang mga partikular nga aplikasyon nga gitugotan nga maka-access sa memcached.
  • Ang do-not-track nga palisiya wala magtagad sa direksyon sa koneksyon. Busa, kung ang memcached server gi-hack, mahimo nimong sulayan ang pagkonektar sa bisan unsang memcached nga mga kliyente, basta kini naggamit sa husto nga gigikanan nga pantalan. Apan, kung imong gihubit sa husto ang polisiya sa network alang sa imong memcached nga mga kliyente, nan kini nga mga pagsulay sa koneksyon isalikway gihapon sa bahin sa kliyente.
  • Ang polisiya nga do-not-track kay gipadapat sa matag pakete, sukwahi sa normal nga mga polisiya, nga gigamit lamang sa unang pakete sa usa ka dagan. Mahimo kini nga madugangan ang konsumo sa CPU matag pakete tungod kay ang palisiya kinahanglan nga magamit alang sa matag pakete. Apan alang sa mubo nga kinabuhi nga mga koneksyon, kini nga gasto gibalanse sa pagkunhod sa konsumo sa kapanguhaan alang sa pagproseso sa conntrack. Pananglitan, sa kaso sa usa ka SaaS provider, ang gidaghanon sa mga pakete alang sa matag koneksyon gamay kaayo, mao nga ang dugang nga konsumo sa CPU sa dihang nag-apply sa mga palisiya sa matag pakete gipakamatarung.

Sugdan nato ang pagsulay

Gipadagan namo ang pagsulay sa usa ka pod nga adunay memcached server ug daghang memcached client pods nga nagdagan sa hilit nga mga node, aron makadagan kami og daghan kaayong mga koneksyon kada segundo. Ang server nga adunay memcached server pod adunay 8 ka mga core ug 512k entries sa conntrack table (ang standard configured table size alang sa host).
Among gisukod ang kalainan sa pasundayag tali sa: walay polisiya sa network; nga adunay regular nga polisiya sa Calico; ug Calico do-not-track policy.

Alang sa una nga pagsulay, among gibutang ang gidaghanon sa mga koneksyon sa 4.000 matag segundo, aron kami makapunting sa kalainan sa konsumo sa CPU. Wala'y mahinungdanong kalainan tali sa walay polisiya ug regular nga polisiya, apan ang do-not-track nagdugang sa konsumo sa CPU sa mga 20%:

Kung ang Linux conntrack dili na imong higala

Sa ikaduha nga pagsulay, naglunsad kami og daghang mga koneksyon nga mahimo sa among mga kliyente ug gisukod ang maximum nga gidaghanon sa mga koneksyon matag segundo nga mahimo sa among memcached server. Sama sa gipaabot, ang "walay polisiya" ug "regular nga polisiya" nga mga kaso parehong nakaabot sa conntrack limit nga labaw sa 4,000 ka koneksyon kada segundo (512k / 120s = 4,369 koneksyon/s). Uban sa usa ka do-not-track nga palisiya, ang among mga kliyente nagpadala ug 60,000 ka koneksyon matag segundo nga walay problema. Sigurado kami nga madugangan namon kini nga numero pinaagi sa pagdugang daghang mga kliyente, apan gibati namon nga kini nga mga numero igo na aron mahulagway ang punto sa kini nga artikulo!

Kung ang Linux conntrack dili na imong higala

konklusyon

Ang Conntrack usa ka hinungdanon nga bahin sa kernel. Gibuhat niya ang iyang trabaho nga hingpit. Kanunay kini nga gigamit sa mga nag-unang sangkap sa sistema. Bisan pa, sa pipila ka piho nga mga senaryo, ang paghuot tungod sa conntrack mas labaw sa normal nga mga benepisyo nga gihatag niini. Sa kini nga senaryo, ang mga palisiya sa network sa Calico mahimong magamit aron pilion nga dili pag-disable ang paggamit sa conntrack samtang nagdugang ang seguridad sa network. Alang sa tanan nga uban pang trapiko, ang conntrack nagpadayon nga imong higala!

Basaha usab ang ubang mga artikulo sa among blog:

Source: www.habr.com

Idugang sa usa ka comment