生活态度的思考与再赴杭州

因为创业失败的缘故,且考虑到照顾家人的生活,我拿下了杭州的工作的机会,工作的内容也是我依然感兴趣的云网络,在34岁的年龄且在中国这种老码农容易被人歧视的状态,加之贸易战对中国经济的影响,我着实应该觉得幸运,在创业失败之后,还算有个大厂愿意收留我。 转眼间我的儿子已经快15个月了,故而相比16年的去杭州工作,我自己有了很多的不舍,既担心做为大龄码农在工作中可能潜在呈受的压力,也担心因为自己外地工作,无法给予孩子充足的陪伴而影响他的精神发展,还担心需要经常往返杭州苏州的开车风险,等等等等,这样一串担心下去,就是不断的链式反应,这也与我多年一来比较悲观的生活态度有很大的关系。 然而,想想这么多年,有很多选择作的并不好,比如未能帮助妻子走上职业道路导致需要承担较多的经济压力,离开高速发展的华为,离开北京选择喜欢的城市,等等选择从经济上来说,都不能算是最优的路;然而其实我对生活并未有过高的要求,我自己也通过努力,给妻子、儿子有了安宁的家庭,在经济情况阴霾遍布的状态下还能有一份不错的工作,都不足以成为我悲观对待生活的理由,并且,我也期望能够给儿子树立要为自己选择所负责的信念,不轻易放弃自己,不被生活所击倒,并努力改变生活,让期变得更好。 故而,在即将去工作的夜晚,我在这里写点话语,来给自己打气,同时,也期望在儿子认知能力逐渐的高的将来,能够给儿子树立积极、乐观、勇于尝试,敢于改变的榜样;乐观与积极其实是一件很自然的事情,因为明显它们能带来快乐,在痛苦与快乐中,显然选择后者更为明智,也更能给家庭带来快乐。 想完这些,觉得再赴杭州对我而言,既是为了自己,也是为了家人,是我改变生活的较好的选择,悲观的思考就被按下去了,预祝将来自己在杭州的这几年,会在物质与精神上,都有更好的收获。 PS: 近来在读《我的应许之地:以色利的荣耀与悲情》这本书时,读到很有意思的一段话,写在这里,提醒自己,当下的选择是自己决意定居苏州与工作行业冲突的的抗争手段。 19世纪中期,法国心理学家克劳德·伯纳德(Claude Bernard)首次推翻“生命适应于环境”的传统观念。伯纳德认为,适应周遭环境的是死亡,生命现象就是保持内部环境与外部环境相悖。从1936年夏天到1942年夏天,犹太复国主义者得出了类似的结论。经历一系列的打击,他们中的一些人几乎丧命,这样的现实教导这场卓越的运动。它周遭的环境极其严酷。相关的历史环境都是致命的。在这样的条件下,适应就等同于死亡,而延续生命的唯一方式就是抗争。从那以后,决定犹太复国主义事业的不再是排干的沼泽或者孕育果实的柑橘园,而是一座孑然矗立的沙漠要塞,它在荒芜的土地上投射下令人敬畏的身影。

June 3, 2019 · 1 min · fortitude.zhang

2019年的明媚新春

过完春节,终于和创业的朋友决定不再继续当前这个公司,创业两年多,公司未能有所起色,与我们的能力有限有很大的关系,长年在技术领域内工作,视野格局都有很多的限制,失败似乎也是一个必然。就我个人而言,并没有想通过创业这件事情致富的念头,更多的是想有一个自己所有掌控的事业,如今事业算是未立,所幸创业 过程中未太动用自己的资金,只不过牺牲了时间和本该上班多挣的钱而已。因此,创业失败对我而言,的确有些遗憾与失落,但倒不致于将我打倒,毕竟作为儿子,作为丈夫,作为父亲,自已身上有不小的担子,也不允许我倒下。我对自己说,生活还要继续前行,继续努力,此为两年创业之小结,在此记录一下,就此了结。 春节期间,父母来苏帮我照顾孩子并过年,只不过今年的春节江浙天气较为不适,一直阴雨不断,我们一家五口就都在春节期间各种生病,算是我这些年与家人所度过的一个比较乏味的春节了。 考虑到自己手头还算宽裕,暂不急于找工作,而父母年事已高,自己作为孩子,一直没能带他们外出度假,因此春节刚过,我带着一家五口,前往海南三亚度假,相比江浙的阴郁天气,三亚适宜的温度与灿烂的阳光,我中意的沙滩与大海,舒适的星级酒店与自助餐,整个一周的度假,弥补了春节生病的遗憾,成为我们一家五口难忘 的一段回忆,就如同多年前我与妻子在北戴河的休假经历一样,每每回想,都让我觉得明亮又开心。我默默提醒自己,以后尽量多带父母再去度假,丰富他们的晚年生活。 三亚归来后,考虑到孩子一直未在老家办满月酒席,父母也到达在苏州居住的适应极限,我自己也期望回故乡居住半月,一并过一下长年未经历的乡村庙会,因此我开车带一家五口回头豫中的家乡。 喜宴顺利办完,前夜为儿子放了烟花做为纪念,小家伙在城市里,自然难以见识这样的场景,他开心的看完全程,妻子在房顶录下了烟花全程,将来儿子懂事后,可以给他一看。 因着环保治理的关系,家乡的空气质量有了很大的改善,同时经济的发展,家里生活便利了许多,同时因为没有城市生活的纷乱,日子节奏慢了下来,我又时常十点入睡,七点左右起床,每天精神亦好了许多,见了多年未见的亲戚朋友,在某些时刻,我竟有些想长居此地的想法,只不过从现实起见,等我年纪大了之后应该可以把回 乡养老做为一种选择。 春季的故乡,麦子铺满田野,阳光常常明媚,有一次开车经过卖风筝的小摊,为儿子挑选了一个好看的风筝,相比儿时我与小伙伴们用报纸糊的永远飞不起来的风筝高了很多个档次,回去时在田野里放的高高的,只可惜儿子在睡觉,小侄子与小侄女陪我放完了风筝,而因为在家常需要聚会饮酒,直到走,都未能带儿子妻子再去放一下 风筝,多少有些遗憾;而另一次开车经过田间,看到大片的花林,与妻子下去玩了半个小时,彼时美景让人沉醉。 多年未过的庙会,除了科技与工业发展带来的新产品新玩具,仍然是十几二十几年前的模样,如今经济发展了,戏台上唱了两天戏,在朋友家出来的当口,我竟然停留看了半个小时我一直并不理解的豫剧,大抵说明我人近中年,体会人情冷暖,思乡多了些,也想像老人一样,找一个空间,换得在忙碌之外的片刻休闲。 是为纪念2019年的明媚新春,感谢父母、感谢亲友、感谢妻子与儿子的陪伴;如今我回到苏州,为了生活,需要继续打拼,预祝自己一切顺利。

April 9, 2019 · 1 min · fortitude.zhang

回首2018兼展望2019

因为孩子的出生,二零一八年对我而言,是记事之后排前列的快乐之年,但快乐之快,使得它仿佛如同一转身;转眼间,儿子已经九个多月,今年三月份,他将度过自己的一岁生日,很多年前在这些随笔里,似乎提到过如果没有父母的压力,我并不想要孩子,然而看着集成了我与妻子所有长处的孩子,使我意识到在生育孩子这方面,因果论可能并不起作用,对我而言,孩子一出生,不要孩子的所有原因,都是那么地不够份量。 孩子之外,一七年、一八年,对我影响很大的,便是与朋友们创业的这件事情,事实说明,创业需要的素质太多,我们三个相识十多年的老码农,先是因为内部矛盾而导致三归二,因为钱的关系,朋友亦做不得;所幸我重新找到另外的朋友帮我们接上了火,完成了创业初期的项目,使得公司能有了度过这两年的初始资金,然而这资金量,从想做的事情的需要来看,似乎是九牛一毛而已,而多年的老码农,在融资、商务谈判上,自然亦是薄弱的很,错过了一些机会,未能将公司顺利地将盘子做起。 人在成家之后,在如今的社会压力之下,往往很难再冒险去积累自己经验,亦无法像刚毕业那样,相信自己无所不能;而孩子的出生,亦让我反思如果孩子早出生两年,我是否还能够再有创业的冲动,毕竟,在离一线城市很远的苏州,仍可做老婆孩子热坑头这样的平凡之路的选择。 故而,如今这创业,对我而言,最大的吸引可能就是自己能够做一些自己感兴趣的东西,然后迟迟未能有所发展,亦多少磨去了我的兴趣,故而如若新结识的潜在非技术合伙人,难以让我说服自己,亦或另外的朋友有自己的打算,我亦打算安之若命了。 一二年春节前我从北京华为离职后,休息直至春天,之后来了苏州,一工作便是四年过去,除去一六全年在杭州网易度过人生中最为舒适的的工作,便是这两年的创业,如今又是春节渐近,一六年加入网易时相对匆忙,自己未能好好反思,如今这创业如果结束的话,我计划再休息直至春天,人生得意需尽欢,不得意时,如果不尽欢,又何以遣悲怀呢? 故而,一九年对我而言很清晰,如若创业在各因素下得以继续,我将再尝试拼搏一下,既然当下亦有虽败无悔的感觉,又何妨再尝试一年呢?如若创业就此收尾,我将在春天到来之际,带孩子与父母做些旅行,成行前的时光,我会想想自己后续的路打算怎么走。 一月二日更新: 这些天在阅读《Essentialism》这本书时,让我想起九九年也即我初三上上学的时候,那时候还网络还未能兴起,在老家老房子的侧屋里,我坚持着每天十点入睡、四点起床,这种自律的生活,或许对于我的身体可能有些不利的影响,但它的确使我能够将成绩显著的提高,如愿考上高中以至大学,故而这种自律的生活,实际上改变了我的一生。 回望这二十年来,显然,那种自律显然已经远离了我,工作,家庭,孩子这些事情,不断的分散着我的精力,我被动地被生活所牵引;而读这本书,让我意识到,我必须对此有所改变了。 展望一九年,我的一个重点目标,就是要重新找回自己的自律能力。 在家庭上,因为孩子的原因,除了无法避免的紧急工作,自己十点后,就能够将时间投入于家庭,如若孩子休息,我可以用时间来处理家庭琐事,陪家人看心仪已久的电影,读未读的书;这意味着,十点后我需要不再看微信,除非有紧急电话或提前安排。 在工作上,我需要如前述所言,好好思考自己的下一步打算,将每天的九点至十点,除午饭与晚饭外,主要用于工作,并预留一个小时的时间用于健身房运动,创业的这两年,体重增加了十公斤,让我无地自容。

January 1, 2019 · 1 min · fortitude.zhang

谈谈父子关系

去年创业之初,和另外两个合伙人聊到关于中国人的父子关系,特意问了一个与我同样来自于北方农村的合伙人,发觉中国农村父子间,大抵难有较多的精神交流,因为看过较多美国电影,对里面父子甚至家庭之见常见的we need talk这样的对白,以及随之而来的谈心,一直比较看重这样的做法,如今我初为人父,看着逐渐有一定意识的孩子,对于父子关系,我的确需要提前准备一些思考。 父亲算是村里为数不多的读了师范当了老师的人,然而既便是在这样的情况下,我与父亲的交流,基本上随着我上大学之后,印象中十二年我从华为离职,父母去北京陪我暂住过春节,走后我偶尔发现父亲留给我一封信(父亲之前应该在我高中时退学事件发生时还给我写过一封信),信件如今我已经遗失(或可能在老家旧屋中),粗略记得父亲大抵指责我停止了学习,他应该是挺期望我读研究生这样的路线,可惜我早早地工作了,他或又觉得我从华为这样的大企业离职,去往苏州这样的二线或三线城市,一如他当年从县城回村里教书那样的不明智,然而这些大抵是我凭印象的推测,可能也不一定代表他真实的想法;然而也就是从那之后,父亲与我,逐渐疏离了,加之因为观念的不同,无论是回村里,还是他来苏州的家里,我都与他有过一些比较激烈的争吵,从而使得我们基本上除了亲人间的嘘寒问暖,以及因我儿子这个纽带的关联产生的生活交流,基本上已经很难有过多的交流了,所以我所期望的美国式的交流,大抵很难发生在我与父亲之间,我似乎也很难主动再去改变这个事实。 回忆过往,自从从父亲教书的村小学毕业后,父亲基本上已经很少像小学那样修理我了,加之父亲或许对于兄弟姐妹的关注,母亲陆续代为养育了姑妈家的表弟、四叔家的儿子,我在家庭似乎觉得有人分享了父母对我的关爱,虽然如今我已经释然,但当时我还过于年轻,很难对这样的事情有所理解,因而或许隔阂从这些事情间逐渐产生,父亲那些年对我并不管教,我倒也足够自律,在父母提供的上学支持情况下,较为节省的读完了高中、大学,我自然非常感谢父母为我的付出,只是觉得如今这种隔阂,似乎不是最好的结局。 总结起来,对于我与父亲的关系,对我最大的影响可能有几点,一是性格上我继承了父亲不太好的脾气,而这一点,在我成家后的生活中逐渐磨平;二是父亲不善及不愿社交的态度,亦影响了我,使得我并不太乐意过于发展社会关系;三是较为松散的教育和管理,给予了我足够的自由;四则是而他对于好口碑以及安贫乐道的生活态度,使得我形成较好的善恶观,可能这使得难以有大的发展或者成就,但亦能自得其乐。 与父亲的关系多少有些遗憾,故而我期望这种隔阂,不至于在我与儿子之间传递下去,所以我最近常想,针对儿子未来的生活,我到底应当要扮演一个什么样的角色,这些年我读了一些育儿以及关于亲子关系的书籍,借夜深时静下心来写些感触的当下,写一些指导原则,供自己来日查验思考吧。 其一,我自己亦在努力扩大与别人的交流,一方面为了工作,一方面则是期望与别人的交流中,能够学习到更多不同的思维方式与新的知识,能够识别自己的不足,期望我的儿子亦能更加从容的参与到社会交往中;然而亦要注意避免让孩子产生攀比的心理,要能够以合适的心态去面对别人取得的成就,即不因之而自卑,亦不因之而不屑,知道山外有山,人外有人的道理。 其二,避免当孩子面的争吵,让孩子能够有一个比较温暖的家庭环境,体会被家人所爱,并学会爱家人;既便没控制住自已,亦要像国外电影里那样,与妻子分别与孩子谈心,谈谈父母产生争执的原因,让孩子能够理解矛盾,不至于让其胡思乱想。 其三,以身作则,对于生活要充满热爱,不将自己未完成的想法或未达成的目标,施加给孩子,比如自己热爱读书,方能让孩子有机会喜欢上读书;相信孩子在良好的自我意识的培养过程中,能够形成自己的一套判断,尊重理解他的想法。 其四,让孩子关注普世价值观的构建,避免受到社会流弊的影响,尽可能形成其自己独立的思考与判断,自己亦能多与其就某些观点进行讨论,亦便于培养父子双方的沟通习惯,从而避免我与父亲类似的结果。 此外,关于教育特别是学区房这点,我目前是不太愿意因为折腾学区房,给自己更多的压力,这与我所理解的父子关系有关,我更相信价值观以及孩子自主性的培养,同时亦相信我与孩子都是独立的个体,因而我并没有义务牺牲太多我与妻子的生活,因此,孩子的教育上来看,我会像我父亲那样,提供我力所能及的支持,而不一定要有超出我能力外,或者我需要背付很大压力的情况下支持他的情况的发生;除外,对于未来孩子的买房成家,我想我亦只会提供力所能及的支持,父子一场,我更相信前半段彼此相伴是上天给予我养育孩子的报答,至于后半场他的人生,交给他吧。 最后,这里的一些思考,在孩子大的时候,我期望和孩子重读,希望他能理解我并不认为我过于自私;当然,如果到时我与孩子难以坐下来重读这篇,亦说明我对突破我与父亲的隔阂的努力,亦算是失败了,那大抵是一种命运吧,我亦认之了。

August 27, 2018 · 1 min · fortitude.zhang

写在第一个孩子到来之后

18年3月14日晚,在产房外听到了儿子的第一声啼哭,使我成为父亲成了实实在在的感觉,待医护人员为妻子处理完伤口之后,我得以见到安静的躺在小床里的小家伙,不禁让我感叹,这是多么神奇的一个小家伙啊。 我与妻子相识已经近10年,期间总觉得心绪未定下来,也一直想给孩子有一个较好的环境,待房子、车子安顿之后,想要孩子,却发现比想象中的困难许多,然而我觉得命运还是再一次眷顾了我,在备孕一年后,妻子成功在去年怀上孩子,于是在谨小慎微中,托妻子身体素质的福,孩子一直在母亲腹中赖到41周,在医院催产,我终于顺利见到我这稍显调皮的儿子。 打从故乡起,因为村里上高中、大学的同龄人稀少,我放假回家往往只能同孩子们玩耍,因而虽则我上面觉得未准备好,内心其实一直很期望着孩子的到来,期望能够有一个人,能够在我的看护下长大,他亦将最天真可爱的时光赐与我,如今终于成为现实,着实令我欢喜。 孩子出生至今已有八天,昨天为孩子办理了出生证明,并录入了户口,这几天一直沉浸在初为人父的喜悦之中,也体会到父母所谓一把屎一把尿的说法的真切实意,因而迟至今日,坐下来记录下这个孩子到来之后我的心情。 妻子孕晚期母亲从老家赶来照顾我们,而我工作的状态使得我有足够的时间在这期间同母亲一起生活,从妻子那里听来说母亲经常觉得我改变了,不再对故乡亲近,不再听她的话,使她多少有些伤心;孩子的出生,使得母亲变得兴奋起来,而老家人多少有些重男轻女,因而儿子使得她更为激动,每天都要同家乡的亲友们聊上很多话;孩子的出生让我有些体谅母亲,开始能够承受他一直的念叨我们的做法不对(尽管我们仍不一定会按照她的意思行事),也能默默听完她从二姨讲到姑妈家的二孩子而不打断;对于我自己的儿子,我希望自己在未来能够放手的让他去享受自己的生活,要提前准备好面对他将来找到自己爱的人,并组建自己家庭,对我们逐渐远离的必然。 对于儿子的命名,我的家庭人脾气往往较为急躁,我父亲如是,我叔叔如是,我自己亦如是,多年的教育与工作,使我脾气逐渐收敛了许多,也有了很多沉重的教训,因而我为儿子了命名为克柔,克,一义为能,克柔即为能够相对柔和的处事,不至于冲动盲目;一义为克服,克柔即为在当果断而需果断,把握机会;当然,名字只是一个寓义而已,孩子往往不能按我们预期去生活,倒不如目前就已经释然,仅作期望作能于将来理解我给他名字的意义,在遇事情时能够稍作思考。 感谢儿子的到来,今生相逢一场,我将尽自己的努力,使我们在长长时光里能够快乐的度过。

March 22, 2018 · 1 min · fortitude.zhang

思维方式的反思

考虑到育儿、父母身体以及与朋友出来独立做点事情的需要,短暂的一年工作也接近了尾声,迟迟想动笔写点东西,直到情人节的次晚终于静得下心来, 重点谈一下自己针对思维方式的思考,以作为对这一年工作的总结,也算对杭州进思这部分做一个收尾。 我大概属于感性大于理性的人,所以这些年在工作上,尽管也能解决一些疑难的复杂问题,但仔细想来,往往灵机一动的成份居多,似乎很难形成一套行之有效的方法论,我也曾幻想过读个中文、当个作家什么的,然而计划永远追不上变化,我终究成了工程师或者码农,或者这也印证了我本身就不是很会做计划的人,因此系统的反思一下自己的思维方式,也算对三十多年的作法换一种角度去看待。 当然,触发我思考思维方式这个相对形而上的问题的由头,近期的诱因是对于佛经的研究,当月的诱因则是《降临》这部剧的观看与思考,这部剧讲了一个人借助于外星人的语言从而诱变思维方式逐渐了解到未来已经确定从而最终想通如何度过这已确定的一生的故事,抛开科幻的思路,我思考了死这个问题,死应当是我们生而为人所无法避免也即确定的事情,因而我们既便刻意忽略,或者不了知如何而死,但我们却可以想到如何在这终极必然之前,怎样回答自己所面临的问题;而佛经则更进一步,它讲轮回,讲波罗蜜,讲涅槃,而如果有轮回,怎么我们无法知道前世的记忆,我在思考这个问题时,突然明了也许修佛至涅槃的意义就在于我们解脱于轮回,届时我们以涅槃的视角回看自己各世的轮回,或许真会觉得可笑。 当然佛经出世讲的多,但我们仍入于世,涅槃不易,我们仍需面临这世上种种,那么如何用更好的思维方式,减少自己所需承受的苦痛,是很有必要的;前言我觉得自己过于感性,因而往往容易念头迁变,受其他事情的影响,因此我认为自己目前的思维方式不像决定论那样,往往很难给出一个远期的清晰的目标,而这目标由于模糊,自己又不没有练习制作计划的习惯,因而最终各种事情往往只能随意而安,不能顺势而为。 之前微博兴起时,妻子曾经在微博上得到出版社赠送的一本日本稻盛和夫的《活法》,其中提到的一个内容便是如果自己想做一件事,就会持续性的在心中构想其最终的相状,直到其越来越清晰,他认为这样就最终能将事情做成,如今回头来看,似乎他并没有直接指出当你清晰了,你就容易制定计划,配合良好的执行力,就会使得事情容易完成,而我曾经有过很多构思,工作中也负责过若干项目,却罕有能够绞尽脑汁地去将其最终状态思考清楚,这也是难怪我总觉得在困惑中一件事情就结束了,好坏也有预期,往往只能靠运气了。 因而我想,在今后与朋友一同做事的时光里,我应当首先仔细思维目标,逐渐使之清晰化,之后细心制作具体的执行计划,并关注计划的执行情况,认真对待自己的每一个想法,在死之必然到来前,努力创造一些自己能所触发的必然:) 考虑到我仍会回看自己所写的文字,因而我想当我每次看到这文字时,都去检查一下自己以当时所在的点展开,是否以清晰的计划完成了事情,并针对于未来做了清晰的计划。 再见杭州,这个提前的告别依然不同于计划。

February 15, 2017 · 1 min · fortitude.zhang

主流公有云外网IP实现调研

因工作需要, 尝试分析主流公有云外网IP是否具有较好的隔离性,以下记录下分析结果。 主流厂商方案调研 aws aws的实例可获得一个动态的public ip(重启后会变)以及不变的elastic ip,这两种ip官方文档上明确给出是属于1:1 NAT,在vm内部仍只能看到私有网地址,使vm只能访问内网及外网,不能向同外网子网的机器注入广播报文,具有较好的隔离安全性。 aws的私有网(即EC2-VPC)做了较多的限制,在FAQ中明确给出不支持组播及广播,在网络上也看到有其他基于第三方软件规避此问题的方案。 aws的网络实现经由了EC2-Classic到EC2-VPC的转变,目前主推EC2-VPC,提供虚拟子网功能。 相关资料: https://aws.amazon.com/articles/1346 https://aws.amazon.com/vpc/faqs/?nc1=h_ls https://www.ravellosystems.com/blog/advanced-enterprise-networking-in-aws-ec2/ https://www.lisenet.com/2014/create-and-attach-a-second-elastic-network-interface-with-eip-to-ec2-vpc-instance/ microsoft azure azure具有两种创建虚拟机模式,注册了试用账号,并结合文档,总结外网在不同模式下实现如下: Azure Resource Manager(v2版本,以资源方式管理一组vm): 默认动态外网ip,可配置成静态外网ip(需关机重开机) ;此种模式下无法动态或静态ip,在内部只能看到一个内网ip的接口。 Azure Service Management(v1版本,称为classic deployment,以服务方式管理一组vm):默认无外网ip,需通过service的vip对外呈现,需要手工打开vip端口,并关联后端vm dip端口;可设置实例级别的外网ip,称为ilpip,vip本身在vm内部无网卡,ilpip也同样无网卡。 也即无论是v1/v2版本的部署模式,无论是共享的vip还是独立的public ip或ilpip,在vm内部均不可见,类似于floating ip技术,即vm只能访问内网及外网,不能向同外网子网的机器注入广播报文,具有较好的隔离安全性。 而对于私有网,二层做了大量的限制,比如收方向收不到不是到自己地址的报文(含L2/L3过滤),对ARP及DHCP进行了速率限制且做了spoofing处理,组网、广播、udp组播明确表明不支持(详见下附资料)。 相关资料: https://azure.microsoft.com/en-us/documentation/articles/virtual-network-ip-addresses-overview-arm/ https://azure.microsoft.com/en-in/documentation/articles/virtual-networks-faq/ https://blogs.msdn.microsoft.com/igorpag/2014/09/28/my-personal-azure-faq-on-azure-networking-slas-bandwidth-latency-performance-slb-dns-dmz-vnet-ipv6-and-much-more/ https://blogs.msdn.microsoft.com/mast/2016/02/04/azure-networking-public-ip-addresses-in-classic-vs-arm/ google cloud engine 从GCE的官方文档来看,其实例的external public ip基于NAT实现,即vm只能访问内网及外网,不能向同外网子网的机器注入广播报文,具有较好的隔离安全性。 其子网仅支持IPv4单播,不支持IPv4组播及广播,而其资料上提到子网内ARP通过代理予以回复,综合来看,二层组播及广播显然不支持,且在其网络中,也不会存在未知单播的情况。 GCE的网络实现与AWS类似,经由了legacy network到subnet network的变化。 相关资料: https://cloud.google.com/compute/docs/networking aliyun 根据资料及试用结果,aliyun classical network中云主机具有两个接口,外网接口(/22)直接暴露给用户,通过tcpdump可以监听到来自于其他节点及网关的ARP请求,说明未做了隔离,而VPC网络则进行了改进,云主机只有一个接口,外网采用1:1 NAT实现,在vm内部仍只能看到私有网地址,使vm只能访问内网及外网,不能向同外网子网的机器注入广播报文,具有较好的隔离安全性 aliyun同样经过了classic network到VPC网络的改进。 相关资料: http://docs-aliyun-com-cn-b.oss-cn-hangzhou.aliyuncs.com/vpc/pdf/vpc_faq.pdf http://blog.chinaunix.net/uid-28212952-id-5153991.html ucloud 根据上次在为上海客户基于ucloud临时搭建的操作经历,以及Ucloud所公开的设计细节,其EIP同样采用1:1 NAT实现,在vm内部仍只能看到私有网地址,使vm只能访问内网及外网,不能向同外网子网的机器注入广播报文,具有较好的隔离安全性。 相关资料: http://www.infoq.com/cn/articles/UCloud-Sixshot-1 tencent cloud 根据在腾讯云主机的实际验证,linux云主机内部仅有一个接口,具有一个/18子网的内网地址(10.X.X.X),且根据其资料所示,腾读云方外网IP同样采用1:1实现,使vm只能访问内网及外网,不能向同外网子网的机器注入广播报文,具有较好的隔离安全性。 腾讯云EIP 15年底发布,之前与aliyun一样,仍是实例级的额外接口配置公网IP,相当于经过了优化。 相关资料: ...

August 25, 2016 · 1 min · fortitude.zhang

应对信息泛滥

罗素以前说过有的人二十多岁就死去了,此后只不过重复以往的生活,八十岁才死去,从三十岁的角度来看,似乎我也开始走入这么一种怪圈,成为以前自己或许不会喜欢的无趣的人;而究其原因,我想信息泛滥导致失焦,而自己思考出利他度已或者以佛法来说的布施 这样的人生目标的时间还较短,也就容易被如今泛滥的信息所迷失,别人玩微博时我自己也玩微博,别人刷朋友圈时我自己也刷,今日头条好时我自己也用今日头条,但似乎除了不断地被动接受新的咨讯外,一种空虚感也随之而来;我想,是时候理一理头绪,对信息 进行一定的管控了。 从利他度已或布施的角度来看,前提是自己需要有一定的有,我想这些泛滥的信息中,的确有精华在,但如果少了有针对性的过滤,那么必然将疲于应付,最终沉淀的不多,因而能汇聚起来的有就少,这样将如何帮助他人或者布施呢? 结合自己近年来的兴趣与需求,我想除开技术上大的上我需要在如下两块信息上进行筛选,其他的信息基本上要做到忽略,以形成下意识过滤的习惯。 首先则是财经类的信息,这方面应当包括基础的知识,如宏观、微观经济的一些基础知识,国家与党的相关政策,我们生活在经济社会中,了解经济社会的运转规律,对于投资或者机会的把握,都会有很大的作用。 其次则是生特医疗类的信息,从投资上来看,我个人比较倾向于生活医疗类的公司,目前看基因新兴技术、医药新兴技术相比之前有了很大规模的发展,甚至一些癌症都可以得到有效的发展,因此,结合自己年幼时曾想学习生物的愿望,在今后的时光里,再投入一些精力去 学习,也不失为一件美好的事情。 当然,我也需要对于自己的主业技术进行一定的信息筛选,仍将关注点放在网络技术相关的深化,以及对于新兴网络技术的理解与把握中,以便指导自己将来与同道的相关朋友,做出一摊事业来。 定目标相对简单,更重要的则是执行,有时候我会想起自己在初中时早上四点超床晚上十点准时入睡的时光,那时的精力似乎是无穷尽的,且我给自己定了严格的学习计划,现在回忆起来,在信息泛滥失焦的状态下,基本上每天都是随信息漂流而活,我想,这很难使得自己 上述的目标得到执行,从佛法的角度来看,也即几无精进;因此,后续我需要针对上述的筛选出的信息类别,将对每周的时间进行初步的划分,合理的分配工作、家庭、学习的时间,以期让三十岁到四十岁这样的十年,自己在知识层面,能够得到更大的提升。 相信自己。

June 26, 2016 · 1 min · fortitude.zhang

linux max open files限制过小导致openvswitch工作异常

上篇分析了linux内核的netdev_max_backlog默认设置导致了openvswitch在大量virtual port转发异常的问题,本篇再额外记录一处与大量virtual port相关的调优点。 自openvswitch 2.x版本开始,ovs引入了多线程的支持,在非dpdk即传统的ovs应用模式下,多线程主要用于处理内核fastpath lookup miss的流表,此过程称为upcall;并对这些流表进行统计、老化处理,此过程称为revalidate。 upcall和revalidate的线程数量计算,以openvswitch 2.3.x为例,代码中的判断是将物理核数约3/4分配给upcall,而revalidate则占1/4,这个分配直观上是合理的,毕竟upcall处理转发,要尽可能的快,处理能力也要更强。 而我们知道openvswitch datapath对用户态的每个virtual port都会在linux内核datapath中创建一个vport,内核datapath通过netlink发送消息给upcall,为了更快的处理每个vport的upcall请求,openvswitch将会为每个virtual port分配等同upcall线程数量的netlink socket,内核datapath根据flow hash将同一vport的upcall分发给不同的netlink socket,实现不同upcall线程间的并发处理,提升upcall性能。 从这里可以看出,openvswitch在优化性能方面确实做足了功夫,但这里确存在一个值得考虑的地方,我们知道linux process存在一个max open files的限制,当限制达到后,新的fd将无法被分配,导致建立文件、创建socket等需要用到fd资源的操作无法执行。 那么我们可以估计一个24 physical core的系统上,如果有2000个virtual port,openvswitch将会有多少个netlink socket,24 3/4 2000即36000,也即单音用于处理vport的netlink socket就占用了36000个fd,如果对openvswitch的max open files限制过小,很容易导致在大量virtual port下,出现各种工作异常。 对于此问题主要的优化思路如下: 调整ovs-vswitchd进程的max open files limit上限,可按照前述算法估量 openvswitch提供了一个n-handler-threads的配置,可通过ovs-vsctl持久化配置,根据性能需求适当的减少upcall线程数量

April 24, 2016 · 1 min · fortitude.zhang

linux内核netdev_max_backlog设置在极端情况下导致openvswitch转发不通

近期在调试问题时,遇到了一个从配置上看openvswitch无任何问题,但却导致转发不通的问题,特此记录下说,说明在openvswitch在大规模部署时,仍需要有较多调优之处。 设想如下openstack场景,大量tenant router通过linux namespace即仿真vrouter访问外网,此namespace中通过openvswitch internal port(或veth,如果不追求转发性能)连接到另一公网namespace,此时如果公网namespace中接口数量过多,比如说2000个(比如openstack中的qg-*接口),将有可能面临转发不通的情况。 从openvswitch的角度,我们知道openvswitch在内核态存在一个datapath,负责生成内核流表,实现高性能转发,对于一个拥有上千个port的ovs bridge来说,比如对应于上面的公网namespace,收到一个arp请求报文,由于是广播,报文通守openvswitch在userspace命中默认的normal流表后将推送广播至其他所有成员端口的内核流表,此后arp报文广播复制逻辑将在内核datapath模块处执行,最终命中以下内核代码: :::c /* * enqueue_to_backlog is called to queue an skb to a per CPU backlog * queue (may be a remote CPU queue). */ static int enqueue_to_backlog(struct sk_buff *skb, int cpu, unsigned int *qtail) { struct softnet_data *sd; unsigned long flags; sd = &per_cpu(softnet_data, cpu); local_irq_save(flags); rps_lock(sd); if (skb_queue_len(&sd->input_pkt_queue) <= netdev_max_backlog) { if (skb_queue_len(&sd->input_pkt_queue)) { enqueue: __skb_queue_tail(&sd->input_pkt_queue, skb); input_queue_tail_incr_save(sd, qtail); rps_unlock(sd); local_irq_restore(flags); return NET_RX_SUCCESS; } /* Schedule NAPI for backlog device * We can use non atomic operation since we own the queue lock */ if (!__test_and_set_bit(NAPI_STATE_SCHED, &sd->backlog.state)) { if (!rps_ipi_queued(sd)) ____napi_schedule(sd, &sd->backlog); } goto enqueue; } sd->dropped++; rps_unlock(sd); local_irq_restore(flags); atomic_long_inc(&skb->dev->rx_dropped); kfree_skb(skb); return NET_RX_DROP; } 可以注意到在上面的代码中有一个对sd->input_pkt_queue的检查过程,而sd是每个cpu核心net rx soft irq用于维护待处理报文的队列,netdev_max_backlog则是内核所提供的一个配置选项,默认为1000。 ...

April 23, 2016 · 1 min · fortitude.zhang