lsf是不是国家扶持的养殖项目项目

【图片】冷钢39LSF和卡巴1217的比较(个人观点,不喜请喷)_冷钢吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:13,216贴子:
冷钢39LSF和卡巴1217的比较(个人观点,不喜请喷)收藏
小黑盒—绝地求生 战绩查询
之前借了朋友的1217把玩了一下,觉得做工有点糙,不过卡巴1217胜在情怀,简单实用是没问题的。但就是它的龙骨,让我没了入手的欲望。因为有点细。。。
再来说说39,首先外形上比较乌黑,沉稳,比较符合我的审美。再有一点就是锋利度,拜4116不锈钢的性能之赐,我刮干净了两条腿的毛无压力。另外一点来说就是把持性比较好,握在手中很舒适。
龙骨比卡巴壮了不是一星半点。
卡巴牛皮柄有怀旧感,39有现代美感
感觉还是39实用些,卡巴保养实在麻烦
说一下出厂的状态,刚到手的时候十分锋利,三张a4一滑就过,刃线也十分闪亮。但不知是不是k鞘的问题,抽插几次后,刀刃除了水滴头外好像变钝了。。于是重新打磨。用的是国产1000目。
打磨后的试刀结果。
本来想出了它入一把巴克650的,结果帖子刚挂上就被封。。。。。。但在把玩后发现了它那低调的美,以及不错的性能。如果你不喜欢卡巴的老鼠尾和歪把子,那么外形相似的39LSF你可以认真考虑一下。
我觉得SRK不错
大皇帝页游新区入口,三国SLG战争页游,点击领取礼包,新服送首冲高返利!
t头D239帮顶,很好,确实非常值得入手
我也是买的卡巴1218,龙骨是细,但是我还没见过艹断的
用的时候心里会踏实很多。
水滴头的是不是已经停产了
用龙虾1000打磨了一下,话说水滴头真难磨,大神知道如何磨出水滴头的镜面吗?
磨刀都不会磨,你磨错方向了啊,
去认真看哈磨刀帖子就知道了,我懒得解释了
楼上说的很对,于是我再认真磨了一遍,还认了主。。。这样可以了?
和小手斧合影,我还有一把冷钢印第安斧,不过在家。。。个人感觉这把斧还是很漂亮的~
本人比较健壮,185的个子,手斧就显得小巧一点啦~轻喷~
大家觉得如何?
柄很沉,我有种想把克拉通去掉的冲动,反正柄宽也够,不知道割掉缠伞绳怎么样~楼主确定柄有从尾部看到那样宽吗?
柄很沉,我有种想把克拉通去掉的冲动,反正柄宽也够,不知道割掉缠伞绳怎么样~楼主确定柄有从尾部看到那样宽吗?
我新人 第一幅图里的哪里入的
你能私聊我吗
大神能告诉我冷钢哪里能买到正品
亲,我买了个 T头的
700买的 怎么看不是不是正品啊
海萍轩买的
楼上的价格真不错700
另外干重活就1217。摆着看或轻活就冷钢这把吧。
登录百度帐号推荐应用月空瓶~~大刀阔斧的用起来 - cryinglsf的日志 OnlyLady女人志
月空瓶~~大刀阔斧的用起来( 21:50)
热度 3阅读(911)次
补完前六个月的空瓶终于可以补七八月的空瓶了,然后我就可以步入正轨以后正常的写空瓶了,撒花·~~~七八月两个月的空瓶超级给力的说,空了好几个大家伙,非常的开心,终于可以开很多新的东西啦~看到囤货的箱子越来越少开心又郁闷啊,开心的是可以开新瓶子了,郁闷的是可能银子又要没了,不过以后决定不囤货了,用完再买才是正道还是老规矩 &红色:喜欢 &&&紫色:普普 &&绿色:无爱【七月】正装17+中样7+小样2+面膜6=32【正装】我的大合照,是不是超级壮观~~~~~~~~~~~~力士精油香氛沐浴乳720ml:这款的味道真的超级好闻!!但是朋友用完以后觉得太浓了,好吧,我承认我是重口味!这个洗完整个人都好香的,洗完睡觉以后被子里面都是香香的,夏天就算不喷香水出去也是好闻的味道呢,泡沫丰富用量很省而且方便冲洗,真心喜欢昭贵滋润保湿洁面乳100g:质地是带珠光有些粘稠的乳状,泡沫不是很丰富,用来晨洁的,用下来不是很喜欢,因为不太好冲洗倍丽颜净姬眼唇卸110ml:一用就爱上的一款,也是荣升为真爱的一款,肯定会回购啦魔法天空秘密渴望香水身体乳250ml:这款的味道是黑加仑+香草味道的,她家的身体乳是真的蛮香的,但是这款的味道我不是很喜欢,好在产品的质地很喜欢,乳液质地很薄很好吸收美宝莲清透卸妆晶露120ml:啫喱质地的,不用太多就可以卸,不拉扯皮肤,卸妆效果也可以,但是因为开口的设计还是会不小心挤多了,用的超快新碧水薄清爽防晒露80g:原来专门写过文章的,现在我基本养成了一年四季用防晒的习惯,虽然偶尔偷懒但是会继续努力,质地很薄很水很好吸收,补妆的时候也不会油腻,我都是下班前之前涂脸上的,去年也用空了一支,今年也在继续用,反正没怎么晒黑就是有效果的吧,性价比真的很高卡汀猫玫瑰嫩白保湿精华乳120ml:软饭来的,本来一直是当身体乳用的,但是有一次洗澡以后脸很干涂脸以后很惊艳啊,比手上的嘉媚乐好用,完全不由又好吸收,就一直拿来涂脸了,从冬天用过夏天都没问题,冬天的时候保湿力度也够,夏天的时候也不会油腻后续上妆也不搓泥,不过一般乳液都不会回购,毕竟没遇到大爱的产品前会一直换新的美丽加芬辅酶Q10高渗透保湿精华30ml:质地是啫喱状的,咻咻的就吸收了,基础保湿还是满不错的,而且这个产品的旋转按压口设计的很好,干净又方便,她家活动挺多的,效果也可以,还是挺值得入手的家用香氛50ml:这款海洋味道的还挺好闻的,放在家里一个多月就用完了,现在经过还是有香气,不过我家的装潢什么的都还蛮老的,和这种小资的东西不太搭调,以后有了自己的家会用用这些,哈哈千纤草丝瓜特润护手霜60g:味道还是很不错的,也很水润,不过效果不持久,适合夏天用,再冷些就不够用了露得清护手霜56g:大名鼎鼎的护手霜,确实是很难推开啊,要稍微有些湿润的手,但是推开以后就很美好了,保湿的效果真心好,而且有修复的效果,如果手部特别干燥的时候涂这个能很好的缓解,同事不喜欢这个味道但是我却超喜欢,主要是效果好又禁用,一年四季都可以用HR悦活新生肌源修复精华露30ml:大家熟知的绿宝瓶,产品确实是好,原来也说过的,尤其在过敏期间使用会发现太美好了,很好的镇定肌肤,环境泛红和止痒,用完皮肤特别的舒服,平时的话虽然感受没那么明显,但是坚持用完一瓶还是能觉得皮肤蛮的蛮稳定,但是要吐槽这个滴管设计,用到最后还有很多产品就取不出来了,浪费啊浪费玉兰油长效保湿晶露50g:用过中样以后觉得还不错就入了大的,质地QQ的,很好吸收,适合夏季,基础保湿,而且屈臣氏店铺经常会有特价,性价比高桃子护手霜30g:只是造型很可爱,味道太人工了,而且效果也不好,总之就是太难用了canmake棉花糖蜜粉饼10g:MO亮白的色号,这个饼子用了好久,真的压的很实,这个宣传的是控油哑光的效果,我刚用的时候不太喜欢,因为不喜欢那个粉扑,不后来才知道这个饼子是要补妆的,我一直都是粉底以后用这个,后来补妆用确实蛮美妙的,出油后用那个粉扑压一下确实皮肤挺好的,但是控油效果对于我来说没那么好,到后来为了快速用就用刷子上了,价格蛮便宜想入的倒是可以随便入,但是效果嘛一个用下来也没特别的喜欢甜橙手工皂100g:用来洗澡了,泡沫还满丰富的,味道也好闻,洗完有些干葆婴柔润修护眼霜12ml:卖这个产品的朋友送的,说是在美国什么什么多厉害,比安利好很多,这种就不和人家争了,反正我也不了解,但是看了产地却是在我大天津,不过用下来感觉还可以啦,就是感觉是基础的补水保湿的功效,用多了也不会有脂肪粒空瓶证件照,我的饼子用的依然非常干净,好像用空了三个了呢,好有成就感【中样】高露洁贝齿清新茶健漱口水60ml:这个味道很好,不会特别的刺激,而且清洁能力也不错,旅行带着很方便舒耐抑汗清新走珠乳液25ml:赶上活动的时候买了好多支,也空了好几个了,基本算我常备的产品,这个味道不错,挺清新的,不喜欢味道太重的走珠艾文莉本草凝萃洁肤油28ml:老梗,还有一瓶囤货终于要用完了悠莱净舒润护洁面膏5g:这个膏体柔软,泡沫很丰富,洗感也挺好的,清洁能力也OK,用着很安心的一款,不过不知道能不能有机会回购正装,洁面太多素野密集美白浓缩精华5ml:混合护手霜里用的,具体效果不知美肤宝汉草闰肌洁面膏15ml:喜欢这款产品的味道,很好闻,而且清洁效果好,泡沫丰富洗感好,经常有付邮活动值得入手贝蒂雅熨肌能量眼霜5g:质地比较厚但是不黏腻,一点就够,虽然才5g但是用了很久才用完,旅行带着很安心,具体的效果看不出什么,不过我感觉眼周状况只要还是维护最初的就算有效果吧证件照【小样】希思黎全日呵护精华乳4ml:她家产品的味道也挺独特的,好吸收,但是小片片也用不出什么感觉希思黎植物修护面霜4ml:感觉用了几款片片都差不多,所以可能她家有个全能乳液就够了【面膜】韩束雪莲玻尿酸补水亮肤面膜:补水一般,材质什么的也不是很喜欢,反正付邮来的随便用用还行小糊涂黑巧克力冰凝舒缓蚕丝面膜:这个巧克力味道还挺好闻的,应该是御泥坊旗下的吧,包装超可爱,蚕丝的很好贴合,补水效果也好,经常有活动挺值得入的康柏丽雅雪肌散天然蚕丝面膜:薄,精华液也多,敷完补水还不错娜露可玻尿酸保湿修护精华面膜:确实挺不错的面膜,敷在脸上很舒服,精华虽然不算多但是补水效果好,会回购【八月】正装18+中样2+小样12+眼面膜9=41【正装】这次的正装出奇的多,简直开心的不行旁氏瞬活盈润滋养液150ml:很清透的水,早上用很舒服,晚上用力度稍微不够,就是挺简单一个二次清洁的水,价格倒是可以,随便用用黛汐魅红石榴妆前乳30ml:带珠光的,用完确实会觉得脸色好,不过我用这个还是觉得有些不习惯太懒了,就用来调气垫了,调出来带微闪还挺不错的亮莊美白防晒露50ml:SPF25 PA+++ 买发膜的时候1分一起顺来的,味道太香了,用完以后后续容易搓泥,后来就涂身上了,而且用的也太快了,50ml不到一个月竟然用完了,我真怀疑这个容量丸美嫩白防晒乳40g:SPF30+PA+++ 特别喜欢这款防晒的包装,感觉特别高大上啊,喜欢这个金灿灿的颜色,乳液质地,好推开易吸收,效果也是有的,我觉得还是蛮不错的~大宝SOD昂手霜60g:去年也买过一支不过不好用,感觉今年的好用了,味道比原来好了,而且挺好吸收的,价格还挺便宜丸美奢润精油护甲润手霜60g:我完全是为了这个包装入的,挺艺术的,但是味道真的太太太难闻了,我用了内心是崩溃的,而且特别的油腻,不好吸收,涂了好久都是油油的手,打死不会再入魔香摩洛哥护发油50ml:付邮来的,应该是国产的仿摩洛哥发油,香味很好,涂完产品以后头发很顺滑,而且很柔软,我觉得还是满不错的,很喜欢玫瑰护手霜30g:一元包邮来的,味道还挺好闻,随便用用挺好TFS米水亮颜卸妆霜180g:好大一罐,说是卸妆霜其实还是偏乳液的质地,放这种大罐子里面就容易用的快,估计放瓶子里面挤压效果更好些也更卫生些,卸妆的效果不太好,我需要卸两次才能卸干净,不过好在便宜,以后肯定是不会再入了esfolio芦荟胶300ml:也是韩国的芦荟胶,晒后修复还是蛮不错的,去青海的时候带着这个每天晚上回酒店就涂些在身上,偶尔也会用来做三明治面膜,不过恐怖的是这个突然变成水了,给我吓的不行,然后全部扔掉了,自然乐园的倒是没这个问题,不知道这个是虾米原因卡尼尔全天候保湿精华凝露50ml:原来用过小样后就入了正装,但是因为手上东西多正装一直没来得及开,真的是遇到的太晚了啊,真心很好用的说,我当精华来用的,早上用吸收咻咻的,保湿一整天,用完超舒服,可惜卡尼尔退出了,再没有合适的双十一活动了大宝眼霜20g:兰花味道的很好,质地稍微有些厚也有些油,不是很好推开,需要点涂在眼周才行,这样才不会拉扯皮肤,虽然油但是不会起脂肪粒,这点是我很喜欢的,刚开始用的时候是非常的喜欢的,但是这20g真的太禁用所以用到后期有些腻开始穿插别的产品用,而且用到后来产品不太好取出来,好在慢慢的用完了,应该不会再入美宝莲护唇膏1.9g:淡粉色的,不要太难用!!虽然涂在嘴上凉凉的颜色也有淡淡的粉,但是涂了一会儿嘴会起皮,我都要崩溃了!!!!夏季用还是可以的,秋冬用完全崩溃,为了不浪费把它用完我也是蛮拼的惠润柔净洗发露400ml:很清新的味道,而且只需要一点点就会有很丰富的泡沫,洗完头发柔顺的不要不要的,洗完就算偷懒不用护发素也蛮好(当然,我的头发本身不是特别干,染烫过后比较干枯的还是要用护发素)我头发蛮长的了,只有用这款觉得最省洗发水,用其他的洗发水要挤很多才能洗一次头发,但是这个几乎是其他产品1/2的量,真心的省,而且替换装环保又便宜,如果再赶上活动简直不能更合适LG竹盐全优护牙膏170g:竹盐的牙膏从上大学的时候就用,因为我有虫子牙而且牙齿比较敏感容易流血,稍微有些上火的时候用这个几天就会好,所以用出了感情,牙补好了也还是家里常备的一款,虽然刚用可能不太适应这个咸咸的味道但是真的蛮好用的棉花棒100支:超市里拿的,塑料杆,还不错用古芙乳木果护手霜30ml:及时功效不持久,好在小小一支放包里很方便博士伦蕾丝炫眸美瞳日抛:我要给你们安利这个美瞳啊!!手残党一定要入啊!我的这个是傲蓝,边上是蓝色的,但是不是那么夸张啦,而且直径也不是那种夸张的,反正就是挺自然的,我这么一个手残党摘戴这个都很顺手,前一阵子去旅游想戴美瞳臭美拿出这个不到5分钟就搞定了,你们要知道平时我戴其他的至少要15分钟的,真的太手残了,这款很柔软很好戴,戴一天也不会出现磨眼和干涩的感觉,最主要的是好摘啊!!轻轻一摘就摘掉了,可知道我曾经有过隐形半截碎眼睛里的阴影,从那以后再摘隐形就是大大的阴影了,这个这么好摘真是感动的我要哭了,而且价格也很美好啊,妹子们都去试试啊证件照,请看我的唇膏用的有多空【中样】舒耐抑汗清新走珠乳液25ml:老梗,常备嘉媚乐玫瑰保湿柔肤水20ml:玫瑰的味道不错,其他的没什么感觉【小样】孩儿面牛奶营养霜5g:味道我很喜欢啊,果然是儿童会喜欢的呢,而且她家的霜确实很柔软好吸收,但是都是基本保湿,儿童的也不需要什么功效性,所以不会回购啦施泰福霏丝佳润肤霜3ml:保湿真心很不错的产品,她家的产品都是哎,确实用完了能感受到不一样,水水的羽西虫草焕颜新肌臻彩精华液2ml:虫草的味道还挺好闻的,小小一片没磨合出什么其他感情,但是很好吸收兰嘉丝汀DNA青春露1mlX2:没什么感觉薇姿轻盈透感矿物修颜霜1ml:自然色还有SPF20,还挺好用的,确实是很自然的均匀肤色,不过依然脱妆,补补就好啦科颜氏金盏花植物爽肤水5ml:没用出什么感觉,就是好吸收而已科颜氏集焕白均衡亮肤淡斑精华液1.5ml:用来点涂痘印还是蛮不错的海飞丝头发头皮按摩膏7.5mlX2:绿色的这款是适合油性头皮的,蓝色的那款是保湿按摩膏,绿色是净化头皮的,用了小样以后一样是清凉的感觉,其他差别暂时没感觉到,等用了大罐的再详细说肌醇1mlX2:一款是营养脂质,一款是美白精华液,其实我不知道那个营养脂质是个啥,也是当精华用的,蛮好吸收【眼面膜】森田药妆紧致细白眼膜:我觉得就是普通补水而已,没什么其他感觉Tonymoly面膜:补水效果也挺不错的说其他都说过了不多说了·~~~我的空瓶终于都补完了,这个月可以正常的写空瓶了,祝我不懒惰可以及时写,哈哈哈
刚表态过的朋友 ()
分类:上一篇:下一篇:
评论 ( 个评论)
cryinglsf小芳
用户名:cryinglsf
上次登录:
搜博主文章&&&&LSF(Linux socket filter)起源于BPF(Berkeley Packet Filter),基础从架构一致,但使用更简单。LSF内部的BPF最早是cBPF(classic),后来x86平台首先切换到eBPF(extended),但由于很多上层应用程序仍然使用cBPF(tcpdump、iptables),并且eBPF还没有支持很多平台,所以内核提供了从cBPF向eBPF转换的逻辑,并且eBPF在设计的时候也是沿用了很多cBPF的指令编码。但是在指令集合寄存器,还有架构设计上有很大不同(例如eBPF已经可以调用C函数,并且可以跳转到另外的eBPF程序)。
&&&&但是新的eBPF一出来就被玩坏了,人们很快发现了它在内核trace方面的意义,它可以保证绝对安全的获取内核执行信息。是内核调试和开发者的不二选择,所以针对这个方面,例如kprobe、ktap、perf eBPF等优秀的工作逐渐产生。反而包过滤部门关注的人不够多。tc(traffic controll)是使用eBPF的一角优秀的用户端程序,它允许不用重新编译模块就可以动态添加删除新的流量控制算法。netfilter的xtable模块,配合xt_bpf模块,就可以实现将eBPF程序添加到hook点,来实现过滤。当然,内核中提供了从cBPF到eBPF编译的函数,所以,任何情况下想要使用cBPF都可以,内核会自动检测和编译。
bpf主要用途
&&&&其核心原理是对用户提供了两种SOCKET选项:SO_ATTACH_FILTER和SO_ATTACH_BPF。允许用户在某个sokcet上添加一个自定义的filter,只有满足该filter指定条件的数据包才会上发到用户空间。因为sokect有很多种,你可以在各个维度的socket添加这种filter,如果添加在raw socket,就可以实现基于全部IP数据包的过滤(tcpdump就是这个原理),如果你想做一个http分析工具,就可以在基于80端口(或其他http监听端口)的socket添加filter。还有一种使用方式离线式的,使用libpcap抓包存储在本地,然后可以使用bpf代码对数据包进行离线分析,这对于实验新的规则和测试bpf程序非常有帮:SO_ATTACH_FILTER插入的是cBPF代码,SO_ATTACH_BPF插入的是eBPF代码。eBPF是对cBPF的增强,目前用户端的tcpdump等程序还是用的cBPF版本,其加载到内核中后会被内核自动的转变为eBPF。
echo 2 & /proc/sys/net/core/bpf_jit_enable
通过像这个写入0/1/2可以实现关闭、打开、调试日志等bpf模式。
&&&&在用户空间使用,最简单的办法是使用libpcap的引擎,由于bpf是一种汇编类型的语言,自己写难度比较高,所以libpcap提供了一些上层封装可以直接调用。然而libpcap并不能提供所有需求,比如bpf模块开发者的测试需求,还有高端的自定义bpf脚本的需求。这种情况下就需要自己编写bpf代码,然后使用内核tools/net/目录下的工具进行编译成bpf汇编代码,再使用socket接口传入这些代码即可。bpf引擎在内核中实现,但是bpf程序的工作地点很多需要额外的模块来支持,常用的有netfilter自带的xtable、xt_bpf 可以实现在netfilter的hook点执行bpf程序、cls_bpf和act_bpf可以实现对流量进行分类和丢弃(qos).
&&&&内核对bpf的完整支持是从3.9开始的,作为iptables的一部分存在,默认使用的是xt_bpf,用户端的库是libxt_bpf。iptables一开始对规则的管理方式是顺序的一条条的执行,这种执行方式难免在匹配数目多的时候带来性能瓶颈,添加了bpf支持后,灵活性大大提升。以上所有提到的可以使用bpf的地方均指同时可使用eBPF和cBPF。因为内核在执行前会自动检查是否需要转换编码。
其他的BPF程序
&&&&前面说的bpf程序是用来做包过滤的,那么bpf代码只能用来做包过滤吗?非也。内核的bpf支持是一种基础架构,只是一种中间代码的表达方式,是向用户空间提供一个向内核注入可执行代码的公共接口。只是目前的大部分应用是使用这个接口来做包过滤。其他的如seccomp BPF可以用来实现限制用户进程可使用的系统调用,cls_bpf可以用来将流量分类,PTP dissector/classifier(干啥的还不知道)等都是使用内核的eBPF语言架构来实现各自的目的,并不一定是包过滤功能。
用户空间bpf支持
工具:tcpdump、tools/net、cloudfare、seccomp BPF、IO visitor、ktap
cBPF汇编架构分析
&&&&cBPF中每一条汇编指令都是如下格式:
struct sock_filter {
&&&&一个列子:op:16, jt:8, jf:8, k:32
&&&&code是真实的汇编指令,jt是指令结果为true的跳转,jf是为false的跳转,k是指令的参数,根据指令不同不同。一个bpf程序编译后就是一个sock_filter的数组,而可以使用类似汇编的语法进行编程,然后使用内核提供的bpf_asm程序进行编译。
&&&&bpf在内核中实际上是一个虚拟机,有自己定义的虚拟寄存器组。和我们熟悉的java虚拟机的原理一致。这个虚拟机的设计是lsf的成功的所在。cBPF有3种寄存器:
32位,所有加载指令的目的地址和所有指令运算结果的存储地址
32位,二元指令计算A中参数的辅助寄存器(例如移位的位数,除法的除数)
0-15共16个32位寄存器,可以自由使用
&&&&我们最常见的用法莫过于从数据包中取某个字的数据内来做判断。按照bpf的规定,我们可以使用偏移来指定数据包的任何位置,而很多协议很常用并且固定,例如端口和ip地址等,bpf就为我们提供了一些预定义的变量,只要使用这个变量就可以直接取值到对应的数据包位置。例如:
skb-&protocol
skb-&pkt_type
Payload start offset
skb-&dev-&ifindex
Netlink attribute of type X with offset A
Nested Netlink attribute of type X with offset A
skb-&queue_mapping
skb-&dev-&type
raw_smp_processor_id()
skb_vlan_tag_get(skb)
vlan_avail
skb_vlan_tag_present(skb)
skb-&vlan_proto
prandom_u32()
更可贵的是这个列表还可以由用户自己去扩展。各种bpf引擎的具体实现还会定义各自的扩展。
eBPF汇编架构分析
&&&&由于用户可以提交cBPF的代码,首先是将用户提交来的结构体数组进行编译成eBPF代码(提交的是eBPF就不用了)。然后再将eBPF代码转变为可直接执行的二进制。cBPF这在很多平台还在使用,这个代码就和用户空间使用的那种汇编是一样的,但是在X86架构,现在在内核态已经都切换到使用eBPF作为中间语言了。也就是说x86在用户空间使用的汇编和在内核空间使用的并不一样。但是内核在定义eBPF的时候已经尽量的复用cBPF的编码,有的指令的编码和意义,如BPF_LD都是完全一样的。然而在还不支持eBPF的平台,cBPF则是唯一可以直接执行的代码,不需要转换为eBPF。
eBPF对每一个bpf语句的表达与cBPF稍有不同,如下定义:
struct bpf_insn {
dst_reg:4;
src_reg:4;
其寄存器也不同:
- return value from in-kernel function, and exit value for eBPF program
- arguments from eBPF program to in-kernel function
- callee saved registers that in-kernel function will preserve
- read-only frame pointer to access stack
&&&&为了配合更强大的功能,eBPF汇编架构使用的寄存器有所增加,上述的寄存器的存在,充分体现了函数调用的概念,而不再是加载处理的原始逻辑。有了函数调用的逻辑设置可以直接调用内核内部的函数(这是一个安全隐患,但是内部有规避机制)。不但如此,由于这种寄存器架构与x86等CPU的真实寄存器架构非常像,实际的实现正是实行了直接的寄存器映射,也就是说这些虚拟的寄存器实际上是使用的同功能的真实的寄存器,这无疑是对效率的极大提高。而且,在64位的计算机上这些计算机将会有64位的宽度,完美的发挥硬件能力。但是目前的64位支持还不太完善,但已经可用。
&&&&目前的内核实现,只可以在eBPF程序中调用预先定义好的内核函数,不可以调用其他的eBPF程序(但是可以通过map的支持跳转到其他eBPF程序,然后再跳回来,后面有介绍)。这看起来无关紧要,但是却是一个极大的能力,这就意味着你可以使用C语言来实现eBPF程序逻辑,eBPF只需要调用这个C函数就好了。
eBPF的数据交互:map
&&&&eBPF不但是程序,还可以访问外部的数据,重要的是这个外部的数据可以在用户空间管理。这个k-v格式的map数据体是通过在用户空间调用bpf系统调用创建、添加、删除等操作管理的。
&&&&用户可以同时定义多个map,使用fd来访问某个map。有一个特殊种类的map,叫program arry,这个map存储的是其他eBPF程序的fd,通过这个map可以实现eBPF之间的跳转,跳转走了就不会跳转回来,最大深度是32,这样就防止了无限循环的产生(也就是可以使用这个机制实现有限循环)。更重要的是,这个map在运行时可以通过bpf系统调用动态的改变,这就提供了强大的动态编程能力。比如可以实现一个大型过程函数的中间某个过程的改变。实际上一共有3种map:
BPF_MAP_TYPE_HASH,
BPF_MAP_TYPE_ARRAY,
BPF_MAP_TYPE_PROG_ARRAY,
eBPF的直接编程方法
&&&&除了在用户空间通过nettable和tcpdump来使用bpf,在内核中或者在其他通用的编程中可以直接使用C写eBPF代码,但是需要LLVM支持,。
&&&&在用户空间通过使用bpf系统调用的BPF_PROG_LOAD方法,就可以发送eBPF的代码进内核,如此发送的代码不需要再做转换,因为其本身就是eBPF格式的。如果要在内核空间模块使用eBPF,可以直接使用对应的函数接口插入eBPF程序到sk_buff,提供强大的过滤能力。
&&&&Linux提供的系统调用bpf,用于操作eBPF相关的内核部分:
#include &linux/bpf.h&
int bpf(int cmd, union bpf_attr *attr, unsigned int size);
&&&&这个函数的第一个参数cmd就是内核支持的操作种类,包括BPF_MAP_CREATE、BPF_MAP_LOOKUP_ELEM、BPF_MAP_UPDATE_ELEM、BPF_MAP_DELETE_ELEM、BPF_MAP_GET_NEXT_KEY、BPF_PROG_LOAD 6种。然而,从名字上就可以发现,有5种是用来操作map的。这个map前面说过,是用户程序和内核eBPF程序通信的唯一方式。这5个调用类型都是给用户空间的程序使用的。最后一个BPF_PROG_LOAD 方法用来向内核中加载eBPF代码体。
&&&&第二个参数attr则是cmd参数的具体参数了,根据cmd的不同而不同,如果load的话还包括了完整的eBPF程序。
&&&&值得注意的是,每一个map和eBPF都是一个文件,都有对应的fd,这个fd在用户空间看来与其他fd无异,可以释放可以通过unix domain socket在进程间传递。如果定义一个raw类型的socket,在其上附上eBPF程序过滤程序,其甚至就可以直接充当iptable的规则使用。
内核中与bpf相关的内核模块子系统
visitor:这可能是基于eBPF相关的最大型的系统了。由多个厂商参与。
xtable、xt_bpf
bpf用于内核TRACING
&&&&我们知道eBPF有map数据结构,有程序执行能力。那么这就是完美的跟踪框架。比如通过kprobe将一个eBPF程序插入IO代码,监控IO次数,然后通过map向用户空间汇报具体的值。用户端只需要每次使用bpf系统调用查看这个map就可以得到想要统计的内容了。那么为何要用eBPF,而不是直接使用kprobe的c代码本身呢?这就是eBPF的安全性,其机制设计使其永远不会crash掉内核,不会与正常的内核逻辑发生交叉影响。可以说,通过工具选择避免了可能发生的很多问题。更可贵的是eBPF是原生的支持tracepoint,这就为kprobe不稳定的情况提供了可用性。
业界对eBPF的tracing使用
描述了一个使用eBPF进行kprobe测试的例子。
创造性的使用eBPF机制实现了内核模块的脚本化,使用ktap,你可以直接使用脚本编程,无需要编译内核模块,就可以实现内核代码的追踪和插入。这背后就是eBPF和内核的tracing子系统。
bpf subcommand to perf:华为也在为bpf添加perf脚本的支持能力。
可以看出来,eBPF起源于包过滤,但是目前在trace市场得到越来越广泛的应用。
意义和总结
&&&&也就是说目前使用传统的bpf语法和寄存器在用户空间写bpf代码,代码在内核中会被编译成eBPF代码,然后编译为二进制执行。传统的bpf语法和寄存器简单,更面向业务,类似于高层次的编程语言,而内核的eBPF语法和寄存器复杂,类似于真实的汇编代码。
&&&&那么为何内核要大费周章的实现如此一个引擎呢?因为轻量级、安全性和可移植性。由于是中间代码,可移植性不必说,但是使用内核模块调用内核的函数接口一般也是可移植的,所以这个并不是很重要的理由。eBPF代码在执行的过程中被严格的限制了禁止循环和安全审查,使得eBPF被严格的定位于提供过程式的执行语句块,甚至连函数都算不上,最大不超过4096个指令。所以这就是其定位:轻量级、安全、不循环。
&&&&上面说了几个bpf的用途,但远不至于此。
本文已收录于以下专栏:
相关文章推荐
BSD分组过滤程序(BPF)是一种软件设备,用于过滤网络接口的数据流,即给网络接口加上开关。应用进程打开/dev/bpf0、
/dev/bpf1等等后,可以读取BPF设备,每个应用进程一次只能打开一个...
C与C++的对比无数人说过,都说C效率高,但很多人做过实验如果C++不适用RTTI,C++的效率也不会低太多(25%左右)。还有人说C++强大的STL,但是对效率讲究点的话那个真的不能用,具体我后面说...
作者:张华  发表于:版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明(http://blog.csdn.net/quqi99 )程序员所接触...
这篇文章本来是在tcp那篇里面的,但是那篇太长了,不专一。就完善了一下提取出来了。TCP拥塞控制       拥塞控制讨论的是很多个同时存在的tcp连接应该怎么规划自己的数据包发送和接收速度,以在彼此...
如何合理提高Google Adsense的收入1、网站主题和关键词一般来说你的网站建立好关键词和主题内容就已经确定, 可以和他们匹配的广告就相对比较稳定。除非你是综合性站点, 那样可以匹配广告的面就会...
BPF:Berkeley Packet Filter 
Linux下过滤程序如何编写,以及网络封包结构温习
libpcap支持一种功能非常强大的过滤语言——“伯克利包过滤”语法。使用BPF过滤规则,你可以确定该获取和检查哪些流量,忽略哪些流量。BPF让你能够通过比较第2、3、4层协议中各个数据字段值的方法对...
柏克莱封包过滤器(Berkeley Packet Filter,缩写 BPF),是类Unix系统上数据链路层的一种原始接口,提供原始链路层封包的收发,除此之外,如果网卡驱动支持洪泛模式,那么它可以让网...
背景与概览
IP层通过路由将数据包送达该送达的目的地址,这就要求在整个网络中建立正确的路由表。路由表的内容是记录要到达哪里下一跳需要发到哪里(可以是端口可以是ip),如此整个网络在单个节点...
他的最新文章
讲师:王哲涵
讲师:王渊命
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)

我要回帖

更多关于 国家免费孕检项目 的文章

 

随机推荐