Fast excitavit et NAT in Linux

Cum inscriptiones IPv4 extenuatae factae sunt, multi operarii telecomes prae se habent necessitatem ut clientes suos accessum retis praebeant in translatione inscriptionis utendi. In hoc articulo tibi dicam quomodo Portitorem Grade NAT de commodis servientibus perficiendis licebit.

A paulo historia

Argumentum spatii inscriptionis IPv4 defatigatio iam nova non est. In aliquo puncto, tabulae exspectantes in PRAECOX apparuerunt, deinde permutationes ortae sunt quibus insulis electronicarum negotiatorum erant et negotia conclusa sunt ut eas locaret. Paulatim operarii telecomes inceperunt officia interretialem accessum praebere utentes inscriptioni et portui translationem. Nonnulli satis inscriptiones impetrare non potuerunt ut "album" electronicum unicuique subscribenti ferat, alii pecuniam servare coeperunt inscriptiones mercaturae in secundario mercatu recusare. Manufacturers instrumenti retis hanc opinionem sustentabant, quia haec functionality plerumque requirit addito extensionem modulorum seu licentiarum. Exempli gratia, in linea juniperorum iter itineris MX (exceptis ultimis MX104 et MX204) praestare potes NAPT in singulari chartae MS-MIC muneris, Cisco ASR1k licentiam requirit CGN, Cisco ASR9k moduli separati A9K-ISM-100 requirit. et A9K-CGN licentia -LIC ei. In genere, voluptas multam pecuniam constat.

iptables

Negotium perficiendi NAT non requirit facultates computandi speciales, sed solveri potest a processibus generalibus, qui instituuntur, exempli gratia, in quavis domo iter itineris. In scala operantis telecomes haec problema solvi potest utentibus commodis servientibus FreeBSD (ipfw/pf) vel GNU/Linux (iptables). Non consideremus FreeBSD, quia... Hoc OS iam olim uti desii, ergo GNU/Linux haerebimus.

Inscriptio translationis minime difficilis est. Primum debes regulam in iptables in tabula nat.

iptables -t nat -A POSTROUTING -s 100.64.0.0/10 -j SNAT --to <pool_start_addr>-<pool_end_addr> --persistent

Systema operandi moduli nf_conntrack oneret, qui omnes nexus activos monent et conversiones necessarias perficiet. Plures argutiae hic sunt. Primo, cum loquimur de NAT in scala operantis telecomatis, necesse est ut momenta componat, quia cum defectu valores mensae translationis magnitudinem cito ad valores calamitosos crescet. Infra exemplum uncinis quibus usus sum servientibus meis;

net.ipv4.ip_forward = 1
net.ipv4.ip_local_port_range = 8192 65535

net.netfilter.nf_conntrack_generic_timeout = 300
net.netfilter.nf_conntrack_tcp_timeout_syn_sent = 60
net.netfilter.nf_conntrack_tcp_timeout_syn_recv = 60
net.netfilter.nf_conntrack_tcp_timeout_established = 600
net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 60
net.netfilter.nf_conntrack_tcp_timeout_close_wait = 45
net.netfilter.nf_conntrack_tcp_timeout_last_ack = 30
net.netfilter.nf_conntrack_tcp_timeout_time_wait = 120
net.netfilter.nf_conntrack_tcp_timeout_close = 10
net.netfilter.nf_conntrack_tcp_timeout_max_retrans = 300
net.netfilter.nf_conntrack_tcp_timeout_unacknowledged = 300
net.netfilter.nf_conntrack_udp_timeout = 30
net.netfilter.nf_conntrack_udp_timeout_stream = 60
net.netfilter.nf_conntrack_icmpv6_timeout = 30
net.netfilter.nf_conntrack_icmp_timeout = 30
net.netfilter.nf_conntrack_events_retry_timeout = 15
net.netfilter.nf_conntrack_checksum=0

Secundo, cum defectus magnitudinis translationis mensae ad operandum sub condicionibus operantis telecomes non destinatur, augendus est;

net.netfilter.nf_conntrack_max = 3145728

Necesse est etiam numerum sitularum augere ad tabulas detrahendas omnes radiophonicos (haec est optio in moduli nf_conntrack):

options nf_conntrack hashsize=1572864

Post has simplices machinationes, consilium omnino laboratum obtinetur quod magnum numerum clientium inscriptionum in piscinam externarum interpretari potest. Attamen adimpletio huius solutionis multum desiderandum relinquit. In primis inceptis utens GNU/Linux pro NAT (circa 2013), perficiendum potui circa 7Gbit/s in 0.8Mpps per servo (Xeon E5-1650v2). Ex eo tempore, multae optimizationes variae in acervo retis GNU/Linux nucleo factae sunt, effectus unius ministri in eadem ferramento auctus est ad fere 18-19 Gbit/s ad 1.8-1.9 Mpps (hi valores maximi erant) sed, postulatio voluminis negotiationis, processit ab uno servo multo celerius crevit. Quam ob rem technae elaboratae sunt ad pondera oneris diversis servientibus, sed haec omnia augebant multiplicitatem constituendi, servandi et conservandi qualitatem officiorum provisorum.

NTFables

Hodie, inclinatio similis in programmatis "sacculis mobilibus" est usus DPDK et XDP. Multi articuli in hoc argumento conscripti sunt, multae orationes variae factae sunt, et res commerciales apparent (exempli gratia SKAT ex VasExperts). Sed data programmandi facultates telecomes operariorum, satis difficile est creare aliquem "productum" in his compagibus in tuo proprio fundatum. Multo difficilius erit talem solutionem in futurum operari, praesertim instrumenta diagnostica excolenda. Exempli gratia, vexillum tcpdump cum DPDK non operabitur sicut illud, et fasciculos "videre" XDP ad fila remissa non faciet. Inter omnes sermones de novis technologiis ad outputing conletum transmissis ad spatium usorum, non latuerunt. tradit ΠΈ vasa Pablo Neira Ayuso, conservator iptable, de evolutione offloading in nftables fluxus. Inspiciamus hanc machinam planius.

Praecipua notio est quod si iter ab una sessione utrobique fluxus (TCP sessionem in statum constitutum ivit), tunc necesse est ut subsequentes fasciculos huius sessionis per omnes regulas firewalliae praeterire necesse sit, quia haec omnia cohibementa adhuc desinent cum fasciculo longius ad excitationem transferenda. Et non opus est nobis viam eligere - iam scimus cui interfacies et cui hospitii fasciculos in hac sessione mittere debeamus. Reliquum est ut informationes huius congregem et eo utaris ad excitandas in praematuro statio fasciculi processus. Cum NAT faciendo, informationes de mutationibus in inscriptionibus et portubus a nf_conntrack moduli translatis necesse est. Ita, utique, in hoc casu variae vigiles et aliae informationes et regulae statisticae in iptables cessant operandi, sed intra ambitum muneris separati stantis NAT vel, exempli gratia, terminus, hoc non est tanti momenti, quia officia per cogitationes distribuuntur.

configuratione

Ad hoc munus utendum nobis est:

  • Recenti nucleo utere. Non obstante quod ipsa officiatio 4.16 in nucleo apparuit, admodum diu fuit "crudum" et semper terrorem nuclei effecit. Omnia circa Decembrem 2019 stabilita sunt, cum nuclei LTS 4.19.90 et 5.4.5 dimissi sunt.
  • Rescribe regulas iptables in nftables format utens versionem satis recentem nftablerum. Operatur prorsus in versione 0.9.0

Si omnia in principio perspicua sunt primo puncto, maximum est ne obliviscamur modulum in configuratione in conventu includere (CONFIG_NFT_FLOW_OFFLOAD=m), secundum punctum explicationem requirit. regulae nftables aliter omnino quam in iptables describuntur. ДокумСнтация omnia fere demonstrat, etiam specialia; converters praecepta ab iptables ad nftables. Ergo exemplum tantum dabo de NAT ponens et offload fluere. Parva legenda per exemplum: , - hi sunt interfacies retis per quas transit commercium, re vera plus quam duo ex illis esse possunt. , β€” initium et finis inscriptionis amplitudinis inscriptionum "albi".

NAT figura valde simplex;

#! /usr/sbin/nft -f

table nat {
        chain postrouting {
                type nat hook postrouting priority 100;
                oif <o_if> snat to <pool_addr_start>-<pool_addr_end> persistent
        }
}

Offload cum fluxu paulo perplexior est, sed satis comprehensibilis;

#! /usr/sbin/nft -f

table inet filter {
        flowtable fastnat {
                hook ingress priority 0
                devices = { <i_if>, <o_if> }
        }

        chain forward {
                type filter hook forward priority 0; policy accept;
                ip protocol { tcp , udp } flow offload @fastnat;
        }
}

Quod quidem totum est. Nunc omnia TCP/UDP negotiatio in mensam fastnat incidet et multo velocius processit.

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹

Ut pateat quomodo hoc "multo citius" sit, tortorem oneris apponam in duobus servientibus realibus, eodem ferramento (Xeon E5-1650v2), numero figurato, eodem Linux nucleo adhibito, sed NAT in iptables faciendo (NAT4) and in nftables (NAT5).

Fast excitavit et NAT in Linux

Nulla graphorum fasciculorum secundae in screenshot, sed in onere figurarum harum servientium mediocris magnitudinis fasciculus circa 800 bytes est, sic valores usque ad 1.5Mpps perveniunt. Ut videre potes, ministri cum nftables ingentem observantiam habet. In praesenti, hic server processit usque ad 30Gbit/s in 3Mpps et perspicue potest convenire retis physicae limitationis 40Gbps, cum liberas CPU facultates habens.

Spero hanc materiam utilem fore ad fabrum retis medendum, qui ad eorum servientium observantiam emendare conatur.

Source: www.habr.com