专栏电商日志财经减肥爱情
投稿投诉
爱情常识
搭配分娩
减肥两性
孕期塑形
财经教案
论文美文
日志体育
养生学堂
电商科学
头戴业界
专栏星座
用品音乐

DPVSSNAT实现

  DPVS的数据流量从以流入流出划分为:inbondoutbond;outbond:指数据包从内网服务器DPVS外网服务器(如qq。com)inbond:指数据包从外网服务器(如qq。com)DPVS内网服务器outbond方向数据包处理流程
  内网服务器需要访问外网某个功能接口,请求数据包到达了DPVS服务器。数据包从网卡某个队列queuex进入后,被cpux接收并开始相关的逻辑处理。收包路径大概包括如下:netiflooplcorejobrecvfwdlcoreprocesspacketsnetifdelivermbufnetifdelivermbuf函数中根据packettype分别调用相应的func函数,func类型主要包括:ipv4、ipv6、arp三种类型。这里主要以IPv4分析SNAT整个过程。IPv4类型的包处理函数是ipv4rcv,经过IP层相关检查和校验处理后,调用INETHOOK来执行相关的钩子函数,这里调用的是INETHOOKPREROUTING位置钩子,包括:dpvspreroutingdpvsin函数,核心代码入口在dpvsin里边
  在dpvsin中其实调用的是dpvsin函数,主逻辑入口在这个函数中体现:首先调用协议查找函数dpvsprotolookup,确认此数据包是哪种协议类型,如TCP或UDP等,每种协议的相关处理逻辑不同,后续的相关操作会根据对应协议注册的回调函数来执行。假设本次是请求是首包,需要调用proto的connsched函数进行连接的初始化和调度,TCP的连接调度函数是tcpconnsched。调度时,只有TCPsyn包才能触发正常调度流程。首先,根据数据包的相关数据确认该包是否属于我们配置的服务,调用dpvsservicelookup函数进行查找,不过这里查找到的service类型是match方式。如果找不到响应的svc就跳出SNAT主流程。找到svc后,调用dpvsschedule进行主调度流程,并创建初始化新的连接Entry。调用svcschedulerschedule函数,从RS列表中挑选出一个RS作为dest对于SNAT模式,调用dpvssnatschedule()函数此时已确认dest作为源IP地址,调用safetch根据源地址选择相对应的源port调用dpvsconnfillparam将相关数据赋值到param变量中去。确定相关参数后,调用dpvsconnnew建立初始化新的连接条目。申请newconn连接内存资源,调用dpvsconnalloc初始化inbond和outbond连接表关联的ntuple哈希初始化newconn的相关字段为conn绑定对应的dest,并设置对应的xmit函数添加newconn到连接表中dpvsconnhash初始化相关的计数器和定时器到此为止,一个新的SNAT连接已经完成连接调度成功后,根据模式,SNAT初始化方向为DPVSCONNDIROUTBOUND不同于其他模式。调用proto的statetrans函数,进行相关协议状态机的转换。调用xmitoutbound将数据包发送出去。调用相关接口,确认output路由,并修改三层和四层信息确认下一跳等相关信息,调用neighoutput发出数据包
  到此从SNAT数据包的接收、处理、转发等过程,完成SNAToutbond方向的整个流程。inbond方向数据包处理流程
  内网服务器发送请求数据包后,外网服务器执行相关操作,发出响应数据包,此数据包到达了DPVS服务器。此时DPDK驱动程序会根据关键字段进行FDIR规则匹配,数据包从同样的网卡度列queuex进入后,被cpux接收并开始相关的逻辑处理,这样整个连接都是被同一个cpux来处理的。收包路径大概包括如下:
  在dpvsin前的收包处理流程和outbond基本一致,这里就不分析了。根据数据包字段,确认协议类型,调用dpvsprotolookup确认本次是TCP协议根据响应数据包的4元组来查找连接表(根据元组字段和tuplehash字段),正常情况能够找到对应的连接表。进行协议的状态机转换调用xmitinbound将数据包发送出去,具体细节与outbond很类似。
  不断的重复outbond和inbond流程,就能够通过多次数据包的交互完成连接过程中业务的传输,从而实现SNAT功能
  存在问题:ICMP处理问题。内网服务器ping外网是一个很常见的需求,从实验测试和代码分析来看,响应ICMP包可能命中到其它网卡队列,导致连接表miss的问题,这个问题可以通过FDIR功能将ICMP包都定位到固定的网卡queue上,这样可以简单的方式来解决这个问题。
  NAT模式原理
  对于inbound方向的流量,实际上做的是dnat,将目标ip由lbvip转换成真正的rsip,此时后端rs是能拿到clientip的。outbond的流量做snat,将源地址换成lbvip
  returnverdictINETXXXaffrommbufl3type?No!Thefieldisrewrittenbynetifandconflictswithm。packettype(anunion),sousingawrappertogetaf。staticintdpvsin(voidpriv,structrtembufmbuf,conststructinethookstatestate,intaf){structdpvsiphdriph;structdpvsprotoprot;structdpvsconnconn;intdir,verdict,err,related;booldropfalse;lcoreidtcid,peercid;ethtypetetypembufpackettype;FIXME:useotherfield?assert(mbufstate);获取当前运行的lcoreidcidpeercidrtelcoreid();数据包不是发往本机的,直接返回ACCEPT,之后执行ipv4rcvfinif(unlikely(etype!ETHPKTHOST))returnINETACCEPT;填充内部dpvsiphdr,如果出错,主要是协议族不正确,直接返回ACCEPTif(dpvsfilliphdr(af,mbuf,iph)!EDPVSOK)returnINETACCEPT;处理ICMP消息,类似于linux内核中icmperror相关的处理逻辑if(unlikely(iph。protoIPPROTOICMPiph。protoIPPROTOICMPV6)){handlerelatedICMPerrortoexistingconnverdictdpvsinicmp(af,mbuf,related);if(relatedverdict!INETACCEPT)returnverdict;letunrelatedandvalidICMPgoesdown,mayimplementICMPfwdinthefuther。}查找四层处理协议,目前实现了tcp,udp和icmpprotdpvsprotolookup(iph。proto);if(unlikely(!prot))returnINETACCEPT;DefragipvsforwardingTCPUDPisnotsupportedforsomereasons,RSSflowdirectordonotsupportTCPUDPfragments,meansitsnotabletodirectfragstosamelcoreasoriginalTCPUDPpackets。perlcoreconntablewillmissiffragsreachswronglcore。Ifweredirectfragstocorrectlcore,itmaycauseperformanceissue。AlsoitneedtounderstandRSSalgorithm。Moreover,forthecasefragsinsameflowarenotoccurinsamelcore,agloballockisneeded,whichisnotagoodidea。目前不支持ip分片,此处与flowdirector相关if(afAFINETip4isfrag(ip4hdr(mbuf))){RTELOG(DEBUG,IPVS,s:fragnotsupport。,func);returnINETDROP;}调用proto相关connlookup函数查找会话,tcp中为tcpconnlookup。有可能会drop掉。dir是设置数据流方向,从client到LB,还是从realserver到LB,peercid为查找时决定处理该连接的lcoreidpacketbelongstoexistingconnection?connprotconnlookup(prot,iph,mbuf,dir,false,drop,peercid);if(unlikely(drop)){RTELOG(DEBUG,IPVS,s:denyiptrytovisit。,func);returnINETDROP;}Theconnectionisnotlocallyfound,howevertheredirectisfoundsoforwardthepackettotheremoteredirectownercore。如果不在当前lcore上处理,则恢复mbufdataoff指向L2header后转发给其他lcore处理,此处ringenqueue成功后返回INETSTOLEN,否则返回DROP丢弃数据包if(cid!peercid){recovermbuf。dataofftoouterEtherheaderrtepktmbufprepend(mbuf,(uint16t)sizeof(structrteetherhdr));returndpvsredirectpkt(mbuf,peercid);}对于新建的连接,肯定是没有会话的,connsched根据请求选择一个后端realserver建立连接if(unlikely(!conn)){tryscheduleRSandcreatenewconnection调用proto中connsched接口选择一个后端rs建立连接,如果创建连接失败,返回verdictif(protconnsched(prot,iph,mbuf,conn,verdict)!EDPVSOK){RTELOG(DEBUG,IPVS,s:failtoschedule。,func);returnverdict;}snat模式,则是内部服务器访问外部服务,内网服务器dpvs外网服务器(baidu),所以设置dirDPVSCONNDIROUTBOUNDonlySNATtriggersconnectionbyinsideoutsidetraffic。if(conndestfwdmodeDPVSFWDMODESNAT)dirDPVSCONNDIROUTBOUND;else其余模式设置dirDPVSCONNDIRINBOUNDdirDPVSCONNDIRINBOUND;}else{assert(conndestsvc!NULL);if(conndestconndestsvcprotconnexpirequiescent(conndestsvcflagsDPVSCONNFEXPIREQUIESCENT)){if(rteatomic16read(conndestweight)0){RTELOG(INFO,IPVS,s:theconnisquiescent,expireitrightnow,anddropthepacket!,func);protconnexpirequiescent(conn);dpvsconnput(conn);returnINETDROP;}}}特殊处理,synproxyif(connflagsDPVSCONNFSYNPROXY){if(dirDPVSCONNDIRINBOUND){FilteroutinackpacketwhencpisatSYNSENTstate。Dropitifnotavalidpacket,storeitotherwiseif(0dpvssynproxyfilterack(mbuf,conn,prot,iph,verdict)){dpvsstatsin(conn,mbuf);dpvsconnput(conn);returnverdict;}Reusesynproxysessions。Reusemeansupdatesynproxyseqstructandcleanackmbufetc。if(0!dpvssynproxyctrlconnreuse){if(0dpvssynproxyreuseconn(af,mbuf,conn,prot,iph,verdict)){dpvsstatsin(conn,mbuf);dpvsconnput(conn);returnverdict;}}}else{Synproxy3logic:receivesynackfromrsif(dpvssynproxysynackrcv(mbuf,conn,prot,iph。len,verdict)0){dpvsstatsout(conn,mbuf);dpvsconnput(conn);returnverdict;}}}状态迁移,tcp中为tcpstatetransif(protstatetrans){errprotstatetrans(prot,conn,mbuf,dir);if(err!EDPVSOK)RTELOG(WARNING,IPVS,s:failtotransstate。,func);}connoldstateconnstate;holdingtheconn,needaputlater。根据流量方向dir,来选择如何发送数据if(dirDPVSCONNDIRINBOUND)returnxmitinbound(mbuf,prot,conn);elsereturnxmitoutbound(mbuf,prot,conn);}
  原文链接:https:www。cnblogs。comcodestackp15717792。html

守住食品安全这条底线餐饮行业复苏已有乐观苗头。在精准疫情防控政策实施背景下,加上消费券带动,近期居民外出就餐增多,餐饮消费需求持续恢复。然而,细数食品餐饮企业的热搜,食品安全引发的要占一大半以上。这提9月6日24时起,油价迎下半年首次上调据国家发改委通知,9月6日24时起,每吨汽油上调190元,每吨柴油上调185元。本轮调价后,国内成品油价格终结连跌走势,为下半年的首次上调。本轮是国内油价2022年第十七次调价,调潮平岸阔,大数据黄金时代的罗盘指向何方信息革命始于数据之争,大数据的黄金时代已来。当数据汪洋恣意流经千行百业,大数据技术与实体经济紧密融合,我们可以看到,运营商话单数据正在辅助应急救灾规避电信诈骗交通视频场景依靠车辆轨出口数据不佳,国产替代紧急今天市场小幅震荡,比较强势的板块依然是光伏,风电,汽车零部件和半导体这几个高景气赛道。自从周一,晚上央行出手表态要稳汇率,市场情绪连续两天回暖,虽然主线并不是很清晰,但欧洲能源危机98版水浒传10位演员驾鹤西去98版水浒传电视剧,历时三年半时间拍摄完成。该剧汇集了李雪健周野芒臧金生丁海峰赵小锐王思懿等国内众多知名实力演员,九八版水浒传已经过去24年了,演员们现状如何呢?今天我们来说说水浒12部超好看的电影推荐,每一部都值得你反复刷1。肖申克的救赎,被提及22次,知乎评分9。520世纪40年代末,小有成就的青年银行家安迪(蒂姆罗宾斯饰)因涉嫌杀害妻子及她的情人而锒铛入狱。在这座名为肖申克的监狱内,希望似乎虚无本应是德艺双馨的演技派,却晚节不保翻了车,李菁菁怎么了?1989年一个艳阳高照的午后,北京电影学院内一声尖锐地叫喊声打破了宁静。李菁菁和男生打起来啦。随着声起,同学们一个箭步冲到了窗边,探头探脑地看热闹。只见李菁菁站在电话亭旁边,手拿酒名媛望族之金木水,执念太深,害人终害己这几年的TVB剧吴卓羲一直都是非常正面阳光的角色,很难想象多年前在名媛望族中扮演了一个莽撞冲动,傻里傻气的小混混金木水。这也是我在这部剧中最讨厌的角色。其实刚开始的金木水还没那么让三国群英传7霸王再临剧本中,项羽手下到底有多少将领?三国群英传7因为有各路神仙妖怪,被玩家称为三国群妖传三国修仙传等,游戏中后期最大的乐趣也是打这些神仙妖怪,不仅仅能得到装备道具,还能提升属性,喜欢刷属性的玩家更是利用群英7的秘籍不sp荀彧辅助关羽攻守兼备头条群星8月榜战略天蓬说三国志战略版大家好!我是天蓬!本期天蓬想与小伙伴们聊一聊sp荀彧与关羽组成的三势阵!能否如官渡之战万军之中,取上将首级般的风采!sp荀彧是一名新武将,是一个VR虚拟现实游戏,打开娱乐新天地技术在变,游戏也在变。电子游戏在当今人们的活动中发挥了重要作用。从电脑游戏到手游,从VRAR到云游戏,不断推出新的玩法和呈现方式,所有依赖技术进步的网络游戏似乎让我们在游戏海浪中看
近百幅跨古石雕图片,展现世遗泉州千年风情千年石头会说话。1月28日,由泉州知名人文摄影家林良标历时一年,拍摄的泉州近百处古石雕图片在泉州未然山居展出。这些跨越千年的古石雕图片,系统地展现了世遗泉州的千年表情。此次展出的林奋进开局年图片栏目征稿启事今年是贯彻党的二十大精神的开局之年,是实施十四五规划承前启后的关键一年,是为全面建设社会主义现代化国家奠定基础的重要一年。为生动展现开局之年新气象,中国纪检监察报中央纪委国家监委网不甘坠落第四代哈弗H6外观谍照和内饰图片曝光,能逆袭吗?哈弗H6近期公布了2023款基本型的实车图片,同时也有网友拍摄到一组谍照,车辆和外观和内饰与基本型存在很大的差异,看起来并不像是同一款车。先来看图片,第一组图片是哈弗H62023款编辑说湖南科技出版社500余幅精美图片100余篇自然笔记记录下大自然的声音自然之声视频加载中自然之声丛书系列展现给我们大自然的奇妙,更启发我们自然的博大。本套丛书一共分为自然之声虫语自然之声万物生自然之声陆上水中三部分。这是一套自然摄影师的科学观察笔记。作者用5女人春天穿什么裤子好看图片在日常穿搭中,很多人都习惯将重点放在上装,忽略了下装的重要性。其实,在整体造型的时候,裤子的搭配往往比上衣更值得花心思。春季裤装穿搭选择这4条裤子,简单的时髦你值得拥有。Pleas面板厂业绩承压,拐点何在?近日,多家面板厂纷纷发布2022年业绩预告,归母净利润多为亏损,只有少数实现盈利,同比均呈下降态势,面板厂业绩持续承压。2022年,受地缘政治风险频发全球通胀疫情冲击等多方面影响,市长都被迫上前线,乌克兰征兵已到极限,再多先进武器也救不了现在的乌克兰男人已经不敢光明正大地出门了,一个不小心就会被抓壮丁。为了躲避兵役,甚至有乌克兰男青年将自己装扮成女人的模样出门,没想到连市长都要被抓去前线上阵打仗,基辅是真的要战斗到仪表板工具StimulsoftDashboards中的Shapes元素的介绍StimulsoftDashboards。JS是一个功能齐全的仪表盘工具,用于为JavaScript平台创建仪表板。StimulsoftDashboards。JS官方最新版免费下载年味不减,错峰出游更精彩,金昌这些热门景点你打卡了吗?2023年春节是个活力焕发年味满满的春节金昌旅游市场持续向好亲子游自驾游周边游备受青睐火星1号基地毛卜喇卍字灯城金昌市博物馆等热门景点文化场馆持续火爆春节假期虽结束却也迎来错峰出行澎湃好物高颜值电动牙刷,曲线设计,强净护牙想要一口健康干净的大白牙,要好好刷牙!刷牙虽然是每天都在重复的简单动作,但想刷干净,还真是个技术活儿!巴氏(Bass)刷牙法拿捏不准刷牙时间不够。牙齿清洁不到位导致各种口腔问题。不超美!盐田粉色樱花海太出片啦!最新赏樱指南春暖花开,万物复苏伴随着馥郁春风散发着春天气息的粉色花海在盐田小三洲水库热烈盛放啦!眼下正到樱花的最佳赏花期快带着这份赏花指南一起开启粉红色的春天吧!春天的浪漫,才刚刚开始盐田专属
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网