Linux系统网络设备启动和禁止“ifconfig eth0 up/down”命令的跟踪
前面文章讲了Linux系统的ethtool框架的一些东西,是从用户空间可以直观认识到的地方入手。同样,本文从Linux系统绝大部分人都熟悉的“ifconfig eth0 up”命令来跟踪一下此命令在内核中的发生了什么事情。由于ifconfig启动(up)和禁止(down)网络设备很相似,就放到一起讲了。
ethtool的内核流程跟踪
这些天开始下决心写写Linux网络方面的文章。由于能力和时间有限,当前还没有对Linux的网络有深入的了解。我一开始打算从网卡基本知识到PHY寄存器,到MAC控制器,到以太网协议栈,一步一步地学习。但实际中发现不能如此,在公司不同在学校,不可能有集中的时间精力去学习的,比如,刚刚使用了iperf来测试网卡性能,又要在内核中打印出PHY芯片寄存器,而前提是要对PHY有一定了解。同时又要了解设备所处的网络拓扑,又不得不去看看交换机方面的资料。
ethtool源码分析
ethtool功能十分强大,本文就其源码进行简单的分析,一来很久没好好分析过别人家的代码,和代码几乎都脱节了;二来趁机整理下自己最近所搞的东西。
参考ethtool写了个Linux设置、获取网卡模式的接口
差不多一个月没写文章了,这期间,主要是搞一些比较复杂的问题,一直被搞,没有搞其它的东西,也就没写出什么东西来。
在找问题过程中,上网了解到ethtool这个工具十分强大,以为这个代码很复杂,而恰好领导要求我提供设置网卡信息的接口,于是下了代码,研究了一下,参考了一下,整理了一下。当然文中写的是第一个版本,要是这样的接口提供出去,其它部门的人肯定会有意见的。
Linux内核生成版本号的一些研究
真正在工作接触内核,其实仅仅是一年前的事情。在使用git管理代码时,发现编译出来的版本会自动带个加号“+”,或者带有“dirty”字样,当时查了些资料解决了。现在隔了那么久,觉得还是有必要写点笔记出来。
出差记
对于出差,一开始我是想拒绝的,但想想每天有几十块大洋的补贴,还可以坐2趟免费的飞机,我就答应了。
出差是为了解决设备出现的网络问题,年前技术支持人员反映在客户现场使用我们设备在千兆交换机有问题,换其它厂商的设备就没问题,另外,把设备改为百兆就正常了。之前已经向有关领导、技术支持人员反映要拿详细点的资料,但始终没有得到。开始在公司里无法重现客户现场的的真实情况,在使用各种组合测试后,终于可以“重现”问题了。