李迟按:
这篇文章谈谈笔者这几年遇到的一些网络问题和经验。
对于网络,大部分知识是在大学自学的。由于大学的网络课程是双语的,而老师又是去过外国深造的,教学方式上比较飘逸,跳跃较大,分神几分钟,可能老师已经在谈加拿大的风景了。然而应试还得是谢老师的那本计算机网络,所以很多知识是自已看书学到的。但课堂上认识到了老师的一个学习方法,我认为是非常不错的。即对于一个topic,要参考大量与该topic有关的资料。
初来公司,接触的第一个程序是FTP客户端代码,前同事已经完成小部分工作,然后我接手。那时主要看FTP协议的资料,并将不同功能封装成接口。由于当时未转正,我没有SVN权限,只是将完成的代码交付给其它部门同事。经过若干年的迭代,当我再次因故接触FTP时,那个代码已经看不明白了。但却遇到代码socket未完全关闭导致句柄耗尽的问题,花了较多时间才定位到。这也使得我对自己写过的代码有严格的要求,因为不知道哪一天会让自己再次碰到。
后来不知为什么,领导把所有平台涉及到网络的事都扔给我,其名曰“向网络方向培养”。所以曾经有一段时间以及断断续续的时间,都会接到网络方面的问题。比如设备上要多加一个网卡而涉及到驱动的移植;比如某设备为什么接千兆交换机出现马赛克现象;比如某设备直连PC为何会PING不通;比如某设备跨网段为什么接收不到广播包;等等。借此机会,我学习IEEE802.3标准部分章节;还实践了网线制作;对组网方面曾有涉猎;对常见品牌三层交换机操作也有研究。
以上这些杂乱无章,涉及范围比较大,主因就是工作所需。
去年因为设备视频马赛克问题到厦门出差,借此机会向在某部门的工作人员了解了组网方面的知识。当时听到一堆如接入层、汇聚层、核心层等术语时,其实我并不懂,只能先记录下来,回去慢慢查资料。由于公司购买一台三层交换机做网络方面的测试,我也有机会接触并学习三层交换机的基本使用,我甚至去图书馆借了专门介绍H3C和思科交换机配置的书来看。后来无意中接触到以太网暂停帧,找了ieee802.3标准文档来看,然后修改网卡驱动,才最终将此问题解决。而问题解决了,这方面的学习当然要结束了,因为接下来要进行其它任务。
今年到沈阳出差,还是因为网络问题。在去的路上已经想到了到现场该如何进行验证。经过2天的摸索,终于发现网卡“混杂模式”可以解决现场所遇问题。这个事本来就是临时插入的——因为公司规定,在客户现场问题最重要,无论何时何事,都要优先支持。出差回来继续先前未完事情,而到底为什么会出现这样的网络问题,只好等领导安排时间了。
去年公司决策做交换机、路由器,但硬件选型一直无下文,该事从部门上半年计划变成部门下半年计划。由于是安排我实施的,所以决定使用openwrt,并移植到x86平台上。因为不可能只靠几篇上网搜索到的文章交差。在此过程学习了openwrt,但更重要目的是研究其转发的机制:iptables。因为前年在x86平台上实现的端口转发一直被领导经常反复地诟病,我也想早日解决掉。不过,openwrt后来不了了之,我也忙于其它事。
今年安排给我的培养计划主要是储备无线网络技术,于是继续对openwrt进行研究,同时全面学习wifi基础知识。同时,随着对iptables了解的加深,解决以前遗留的问题。后来抛开openwrt系统,尝试使用iptables搭建有线网络的路由,顺便建立一个无线AP。
后来公司决策在某TI芯片上实现交换功能,实现后,顺便看Linux网络子系统,这个子系统一直想看,但太庞大了,无法下手。但有了沈阳问题后并领导一直追问,虽然多次以其它优先事务为借口,但问题终归要解决的。于是下定决心硬着头皮看,慢慢地发现也不是很难。我对于抽象的东西的理解不在行,都要实实在在地看到结果才能确定、理解掌握。比如在项目中实现的功能模块,都要自己验证过才在项目中应用。这次跟着调试信息,再参考网络资料,才慢慢理出主线。但总算有了开头。
所有这些,其实都是在内在的关联,只是关注点不同,时间的延续并不会影响太大——特别是对一个topic而言。
公司每年策略都变化,每年战线都变化。从h.264向h.265、4K进发,从无人机的窄宽图传,到无线移动网络传输,从交换机研究到路由器研究。但人在公司,身不由己。冀望公司给时间研究学习,培养你,是不可能的事。对此策略只能是以事做事,尽量抽时间去接触同一topic方面的资料。重要的是做笔记,万一哪天又碰到相同或类似的问题,可以快速搜索到。在复杂多变的环境下,保持清醒的头脑做事才是正确的应对方法。其它的,管他呢。
李迟 2016.10 中旬
网友评论