网卡参数
网卡参数中的EEE、流量控制、巨型帧、大量传输减负、中断节流率
自从和无盘开始打交道,学到了n多知识,无论是软件层面还是硬件层面,无论是理论还是实践层面,之前很多人认为无盘很复杂,而我也受其“误导”认为无盘很复杂,但实际上用下来发现,其实无盘确实很简单,而所谓的无盘复杂,更多的是理论和经验的结合,以前在网上也看到过很多无盘教程,当时不以为然,不当回事,总觉得自己很牛,可实际上真正的去做了之后,发现自己也在传播这些信息,套用以前某人说过的一句名言“现在很多人的不份,不爽,不以为然,只是为了证明前人的经验是正确的。”
而实际上有这句名言,完全是实践,经验,理论最终的结晶,因为很多时候往往是我们自己在实践中撞了南墙,然后总结经验,当长时间经验累计之后开始好奇,于是开始去搜索,最终发现理论中已经描述了你所实践的,和你所总结的东西。所以今天也和大家分享一些理论知识,大部分来自网络,如有错误,还望大家及时纠正。
既然开头我们提到了无盘,那么今天也是说和无盘相关的一项非常重要的内容,那就是网卡参数设置。我们都知道无盘就是客户机没有硬盘,而无盘实际上就是把客户机的硬盘放在了服务器上,通过一种虚拟化技术来工作的,而在这个虚拟过程中,网卡是非常关键的一环,他就好像有盘客户机的数据线。只是这根数据线远远比SATA数据线复杂的多,不只存在接触好不好的问题,还存在设置好不好的问题,设置好了,速度快,稳定,设置不好,问题也会多样,而复杂。ok,废话终了,进入正题!
既然要说网卡相关的内容,这里不得不替一下传说中的IEEE,IEEE是什么?他实际上是一个组织,并且创立了很多互联网通讯标准,IEEE全名:Institute of Electrical and Electronics Engineers,中文翻译:美国电气和电子工程师协会,比如我们之前听过的“网卡汇聚”实际上就是IEEE创建的一个叫做802.3ad链路聚合的标准协议,再比如我们所说的vlan实际上也是IEEE创建的一个名叫802.3q (虚拟局域网Virtual LANs:VLan)标准协议,如果大家感兴趣,可以百度一下IEEE或802.3相信可以了解很多知识。
Energy Efficient Ethernet:EEE
上面说的都是IEEE做的一些非常靠谱的事情,其实最近他们也做了一件不是很靠谱的事情,就是发明了一个802.3az节能标准,作用是在网卡没有流量时自动降低功耗,只有网络使用率较高时,才会发挥最大功耗,而这个802.3az节能标准的全名就是Energy Efficient Ethernet,简称EEE,中文翻译是:节能高效以太网技术。他的出现给无盘带来了很大麻烦,只要开启网卡参数中的EEE设置,就可能会导致开机速度慢问题,目前市面上比较新的Realtek的8111E网卡(Rev06)就支持这个节能技术,但是可能因为批次原因,会出现某些网卡如果不关闭EEE选项,开机速度就非常慢,xp滚动条需要6圈以上,关闭后可能变成2圈或者1圈,而有些8111E网卡又不会受影响。这就是今天说的第一个网卡参数EEE。由于该技术还比较新,目前只看到了Realtek网卡配合较新的驱动才能看到该选项,而且也在Realtek官网上看到这么一条新闻。
其中红字标出的,有一句是全球首颗……,是的,EEE存在的问题貌似确实只有Realtek网卡才遇到,或许是第一个吃螃蟹的人总是最先品到美味,也是第一个会受伤的人吧……只是我们这些小白用户真的伤不起……下图为一块Realtek 8111E网卡的设置页,如果你的网卡有EEE选项,一定要关闭噢,当然如果没有就不需要理会了,因为没有这个选项,可以认为网卡不支持EEE。
另外“环保节能”、“GreenEthernet”也和EEE差不多,都属于节能功能,所以都建议关闭,总之在无盘上,和节能有关的功能一定不要开,否则不是速度慢,就是不稳定,因为在无盘上,网卡是不存在“没有流量”的情况的,开了一定会出问题。
流程控制、流控制、FlowControl
这个选项基本上所有网卡都会有,但是叫法会有些差别,比如Realtek网卡叫做流控制,Intel网卡叫做流程控制,还有一些网卡选项干脆是英文的,叫做FlowControl,很多交换机上也有这个功能,也叫做FlowControl,而在下面的理论解释中就简称流控制,这样可以少打一个字。
网卡自身支持的流控制和我们所说的Qos不一样,虽然目的可能是一样的。网卡或交换机支持的流控制也是一个IEEE标准,叫做802.3x全双工以太网数据链路层的流控,因为它是个电子电器标准,所以交换机,网卡这类以太网设备是都支持的,而且也都遵循这个802.3x标准,这个标准的核心作用就是防止网络拥堵时导致的“丢包”问题,大致的工作原理就是当链路两端的设备有一端忙不过来了,他会给另外一端的设备发一个暂停发包的命令,通过这种方式来缓解压力,解决丢包问题。举个吃饭的例子,你自己吃饭,实际上就是有“流控制”的体现,因为你并会出现因为太忙或者怎么样,把饭吃到鼻子里的情况。但是如果你给一个人喂饭,就好比是没有“流控制”的情况,你很可能会把饭喂到别人的鼻子里……
看上去流控制应该是个非常好的防止丢包的方法,但是为什么我们还要在无盘上关闭他呢?原因很简单,因为现在的几乎所有无盘软件都支持“数据包重发”功能,也就是说如果客户机发现有丢包情况,或者服务端发现有丢包情况,都会重新请求,根本不需要网卡再从中间狗拿耗子多管闲事,而也正式因为无盘软件有重发机制,当这种重发机制遇到流控制时就上演了这样一出闹剧:
客户机网卡向服务器网卡要数据时,说:Server快给我下一个数据包!
服务器网卡向客户机网卡发数据时,说:Soryy,我忙不过来了,你吖的等一下,于是服务器暂停了一下。
结果此时无盘软件客户端和客户机网卡说:我靠,数据包咋还没发过来?你再不来我就一直拼命发!
而无盘服务端也问服务器网卡说:我把数据包给服务器网卡了,怎么客户机还没回应?客户机不回应一定是丢包了,于是无盘服务端也拼命的发包给客户机……
就这样,因为流控制,出了问题,因为数据等待问题,客户机卡了,因为无盘服务端始终发不出数据包,结果服务端可能也挂了,而这,就是流控制为什么会影响无盘的原因,所以无论是服务器,客户机,交换机,只要有流控制的地方,就一定要关闭掉!