<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>回首望风景 &#187; 网络</title>
	<atom:link href="http://www.javaems.com/category/net/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.javaems.com</link>
	<description>白桦林</description>
	<lastBuildDate>Sat, 10 Jul 2010 03:16:12 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>freebsd sysctl.conf配置说明</title>
		<link>http://www.javaems.com/2009/05/freebsd-sysctlconf%e9%85%8d%e7%bd%ae%e8%af%b4%e6%98%8e/</link>
		<comments>http://www.javaems.com/2009/05/freebsd-sysctlconf%e9%85%8d%e7%bd%ae%e8%af%b4%e6%98%8e/#comments</comments>
		<pubDate>Fri, 15 May 2009 17:25:10 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Unix]]></category>
		<category><![CDATA[网络]]></category>
		<category><![CDATA[Freebsd]]></category>
		<category><![CDATA[NAT]]></category>
		<category><![CDATA[unix]]></category>

		<guid isPermaLink="false">http://www.javaems.com/?p=357</guid>
		<description><![CDATA[################### 所有rfc相关的选项都是默认启用的，因此网上的那些还自己写rfc支持的都可以扔掉了:) ############################### net.inet.ip.sourceroute=0 net.inet.ip.accept_sourceroute=0 ############################# 通过源路由，攻击者可以尝试到达内部IP地址 &#8211;包括RFC1918中的地址，所以 不接受源路由信息包可以防止你的内部网络被探测。 ################################# net.inet.tcp.drop_synfin=1 ################################### 安全参数，编译内核的时候加了options TCP_DROP_SYNFIN才可以用，可以阻止某些OS探测。 ################################## kern.maxvnodes=8446 ############################ vnode 是对文件或目录的一种内部表达。 因此， 增加可以被操作系统利用的 vnode 数量将降低磁盘的 I/O。 一般而言， 这是由操作系统自行完成的，也不需要加以修改。但在某些时候磁盘 I/O 会成为瓶颈， 而系统的 vnode 不足， 则这一配置应被增加。此时需要考虑是非活跃和空闲内存的数量。 要查看当前在用的 vnode 数量： # sysctl vfs.numvnodes vfs.numvnodes: 91349 &#8230; <a href="http://www.javaems.com/2009/05/freebsd-sysctlconf%e9%85%8d%e7%bd%ae%e8%af%b4%e6%98%8e/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>###################<br />
所有rfc相关的选项都是默认启用的，因此网上的那些还自己写rfc支持的都可以扔掉了:)<br />
###############################</p>
<p>net.inet.ip.sourceroute=0<br />
net.inet.ip.accept_sourceroute=0<br />
#############################<br />
通过源路由，攻击者可以尝试到达内部IP地址 &#8211;包括RFC1918中的地址，所以<br />
不接受源路由信息包可以防止你的内部网络被探测。<br />
#################################</p>
<p>net.inet.tcp.drop_synfin=1<br />
###################################<br />
安全参数，编译内核的时候加了options TCP_DROP_SYNFIN才可以用，可以阻止某些OS探测。<br />
##################################</p>
<p><span id="more-357"></span></p>
<p>kern.maxvnodes=8446<br />
############################<br />
vnode 是对文件或目录的一种内部表达。 因此， 增加可以被操作系统利用的 vnode 数量将降低磁盘的 I/O。<br />
一般而言， 这是由操作系统自行完成的，也不需要加以修改。但在某些时候磁盘 I/O 会成为瓶颈，<br />
而系统的 vnode 不足， 则这一配置应被增加。此时需要考虑是非活跃和空闲内存的数量。<br />
要查看当前在用的 vnode 数量：<br />
# sysctl vfs.numvnodes<br />
vfs.numvnodes: 91349<br />
要查看最大可用的 vnode 数量：<br />
# sysctl kern.maxvnodes<br />
kern.maxvnodes: 100000<br />
如果当前的 vnode 用量接近最大值，则将 kern.maxvnodes 值增大 1,000 可能是个好主意。<br />
您应继续查看 vfs.numvnodes 的数值， 如果它再次攀升到接近最大值的程度，<br />
仍需继续提高 kern.maxvnodes。 在 top(1) 中显示的内存用量应有显著变化，<br />
更多内存会处于活跃 (active) 状态。<br />
####################################</p>
<p>kern.maxproc: 964<br />
############################<br />
Maximum number of processes<br />
####################################<br />
kern.maxprocperuid: 867<br />
############################<br />
Maximum processes allowed per userid<br />
####################################<br />
因为我的maxusers设置的是256，20+16*maxusers＝4116。<br />
maxprocperuid至少要比maxproc少1，因为init(8) 这个系统程序绝对要保持在运作状态。<br />
我给它设置的2068。</p>
<p>kern.maxfiles: 1928<br />
############################<br />
系统中支持最多同时开启的文件数量，如果你在运行数据库或大的很吃描述符的进程，那么应该设置在20000以上，<br />
比如kde这样的桌面环境，它同时要用的文件非常多。<br />
一般推荐设置为32768或者65536。<br />
####################################</p>
<p>kern.argmax: 262144<br />
############################<br />
maximum number of bytes (or characters) in an argument list.<br />
命令行下最多支持的参数，比如你在用find命令来批量删除一些文件的时候<br />
find . -name &#8220;*.old&#8221; -delete，如果文件数超过了这个数字，那么会提示你数字太多的。<br />
可以利用find . -name &#8220;*.old&#8221; -ok rm {} \;来删除。<br />
默认的参数已经足够多了，因此不建议再做修改。<br />
####################################</p>
<p>kern.securelevel: -1<br />
############################<br />
-1：这是系统默认级别，没有提供任何内核的保护错误；<br />
0：基本上作用不多，当你的系统刚启动就是0级别的，当进入多用户模式的时候就自动变成1级了。<br />
1：在这个级别上，有如下几个限制：<br />
　　a. 不能通过kldload或者kldunload加载或者卸载可加载内核模块；<br />
　　b. 应用程序不能通过/dev/mem或者/dev/kmem直接写内存；<br />
　　c. 不能直接往已经装在(mounted)的磁盘写东西，也就是不能格式化磁盘，但是可以通过标准的内核接口执行写操作；<br />
　　d. 不能启动X-windows，同时不能使用chflags来修改文件属性；<br />
2：在 1 级别的基础上还不能写没装载的磁盘，而且不能在1秒之内制造多次警告，这个是防止DoS控制台的；<br />
3：在 2 级别的级别上不允许修改IPFW防火墙的规则。<br />
　　如果你已经装了防火墙，并且把规则设好了，不轻易改动，那么建议使用3级别，如果你没有装防火墙，而且还准备装防火墙的话，不建议使用。<br />
我们这里推荐使用 2 级别，能够避免比较多对内核攻击。<br />
####################################</p>
<p>kern.maxfilesperproc: 1735<br />
############################<br />
每个进程能够同时打开的最大文件数量，网上很多资料写的是32768<br />
除非用异步I/O或大量线程，打开这么多的文件恐怕是不太正常的。<br />
我个人建议不做修改，保留默认。<br />
####################################</p>
<p>kern.ipc.maxsockbuf: 262144<br />
############################<br />
最大的套接字缓冲区，网上有建议设置为2097152（2M）、8388608（8M）的。<br />
我个人倒是建议不做修改，保持默认的256K即可，缓冲区大了可能造成碎片、阻塞或者丢包。<br />
####################################</p>
<p>kern.ipc.somaxconn: 128<br />
############################<br />
最大的等待连接完成的套接字队列大小，即并发连接数。<br />
高负载服务器和受到Dos攻击的系统也许会因为这个队列被塞满而不能提供正常服务。<br />
默认为128，推荐在1024-4096之间，根据机器和实际情况需要改动，数字越大占用内存也越大。<br />
####################################</p>
<p>kern.ipc.nmbclusters: 4800<br />
############################<br />
这个值用来调整系统在开机后所要分配给网络 mbufs 的 cluster 数量，<br />
由于每个 cluster 大小为 2K，所以当这个值为 1024 时，也是会用到 2MB 的核心内存空间。<br />
假设我们的网页同时约有 1000 个联机，而 TCP 传送及接收的暂存区大小都是 16K，<br />
则最糟的情况下，我们会需要 (16K+16K) * 1024，也就是 32MB 的空间，<br />
然而所需的 mbufs 大概是这个空间的二倍，也就是 64MB，所以所需的 cluster 数量为 64MB/2K，也就是 32768。<br />
对于内存有限的机器，建议值是 1024 到 4096 之间，而当拥有海量存储器空间时，我们可以将它设定为 4096 到 32768 之间。<br />
我们可以使用 netstat 这个指令并加上参数 -m 来查看目前所使用的 mbufs 数量。<br />
要修改这个值必须在一开机就修改，所以只能在 /boot/loader.conf 中加入修改的设定<br />
kern.ipc.nmbclusters=32768<br />
####################################</p>
<p>kern.ipc.shmmax: 33554432<br />
############################<br />
共享内存和信号灯(&#8220;System VIPC&#8221;)如果这些过小的话，有些大型的软件将无法启动<br />
安装xine和mplayer提示的设置为67108864，即64M，<br />
如果内存多的话，可以设置为134217728，即128M<br />
####################################</p>
<p>kern.ipc.shmall: 8192<br />
############################<br />
共享内存和信号灯(&#8220;System VIPC&#8221;)如果这些过小的话，有些大型的软件将无法启动<br />
安装xine和mplayer提示的设置为32768<br />
####################################</p>
<p>kern.ipc.shm_use_phys: 0<br />
############################<br />
如果我们将它设成 1，则所有 System V 共享内存 (share memory，一种程序间沟通的方式)部份都会被留在实体的内存 (physical memory) 中，<br />
而不会被放到硬盘上的 swap 空间。我们知道物理内存的存取速度比硬盘快许多，而当物理内存空间不足时，<br />
部份数据会被放到虚拟的内存上，从物理内存和虚拟内存之间移转的动作就叫作 swap。如果时常做 swap 的动作，<br />
则需要一直对硬盘作 I/O，速度会很慢。因此，如果我们有大量的程序 (数百个) 需要共同分享一个小的共享内存空间，<br />
或者是共享内存空间很大时，我们可以将这个值打开。<br />
这一项，我个人建议不做修改，除非你的内存非常大。<br />
####################################</p>
<p>kern.ipc.shm_allow_removed: 0<br />
############################<br />
共享内存是否允许移除？这项似乎是在fb下装vmware需要设置为1的，否则会有加载SVGA出错的提示<br />
作为服务器，这项不动也罢。<br />
####################################</p>
<p>kern.ipc.numopensockets: 12<br />
############################<br />
已经开启的socket数目，可以在最繁忙的时候看看它是多少，然后就可以知道maxsockets应该设置成多少了。<br />
####################################</p>
<p>kern.ipc.maxsockets: 1928<br />
############################<br />
这是用来设定系统最大可以开启的 socket 数目。如果您的服务器会提供大量的 FTP 服务，<br />
而且常快速的传输一些小档案，您也许会发现常传输到一半就中断。因为 FTP 在传输档案时，<br />
每一个档案都必须开启一个 socket 来传输，但关闭 socket 需要一段时间，如果传输速度很快，<br />
而档案又多，则同一时间所开启的 socket 会超过原本系统所许可的值，这时我们就必须把这个值调大一点。<br />
除了 FTP 外，也许有其它网络程序也会有这种问题。<br />
然而，这个值必须在系统一开机就设定好，所以如果要修改这项设定，我们必须修改 /boot/loader.conf 才行<br />
kern.ipc.maxsockets=&#8221;16424&#8243;<br />
####################################</p>
<p>kern.ipc.nsfbufs: 1456<br />
############################<br />
经常使用 sendfile(2) 系统调用的繁忙的服务器，<br />
有必要通过 NSFBUFS 内核选项或者在 /boot/loader.conf (查看 loader(8) 以获得更多细节) 中设置它的值来调节 sendfile(2) 缓存数量。<br />
这个参数需要调节的普通原因是在进程中看到 sfbufa 状态。sysctl kern.ipc.nsfbufs 变量在内核配置变量中是只读的。<br />
这个参数是由 kern.maxusers 决定的，然而它可能有必要因此而调整。<br />
在/boot/loader.conf里加入<br />
kern.ipc.nsfbufs=&#8221;2496&#8243;<br />
####################################</p>
<p>kern.maxusers: 59<br />
############################<br />
maxusers 的值决定了处理程序所容许的最大值，20+16*maxusers 就是你将得到的所容许处理程序。<br />
系统一开机就必须要有 18 个处理程序 (process)，即便是简单的执行指令 man 又会产生 9 个 process，<br />
所以将这个值设为 64 应该是一个合理的数目。<br />
如果你的系统会出现 proc table full 的讯息的话，可以就把它设大一点，例如 128。<br />
除非您的系统会需要同时开启很多档案，否则请不要设定超过 256。</p>
<p>可以在 /boot/loader.conf 中加入该选项的设定，<br />
kern.maxusers=256<br />
####################################</p>
<p>kern.coredump: 1<br />
############################<br />
如果设置为0，则程序异常退出时不会生成core文件，作为服务器，不建议这样。<br />
####################################</p>
<p>kern.corefile: %N.core<br />
############################<br />
可设置为kern.corefile=&#8221;/data/coredump/%U-%P-%N.core&#8221;<br />
其中 %U是UID，%P是进程ID，%N是进程名，当然/data/coredump必须是一个实际存在的目录<br />
####################################</p>
<p>vm.swap_idle_enabled: 0<br />
vm.swap_idle_threshold1: 2<br />
vm.swap_idle_threshold2: 10<br />
#########################<br />
在有很多用户进入、离开系统和有很多空闲进程的大的多用户系统中很有用。<br />
可以让进程更快地进入内存，但它会吃掉更多的交换和磁盘带宽。<br />
系统默认的页面调度算法已经很好了，最好不要更改。<br />
########################</p>
<p>vfs.ufs.dirhash_maxmem: 2097152<br />
#########################<br />
默认的dirhash最大内存,默认2M<br />
增加它有助于改善单目录超过100K个文件时的反复读目录时的性能<br />
建议修改为33554432（32M）<br />
#############################</p>
<p>vfs.vmiodirenable: 1<br />
#################<br />
这个变量控制目录是否被系统缓存。大多数目录是小的，在系统中只使用单个片断(典型的是1K)并且在缓存中使用的更小 (典型的是512字节)。<br />
当这个变量设置为关闭 (0) 时，缓存器仅仅缓存固定数量的目录，即使您有很大的内存。<br />
而将其开启 (设置为1) 时，则允许缓存器用 VM 页面缓存来缓存这些目录，让所有可用内存来缓存目录。<br />
不利的是最小的用来缓存目录的核心内存是大于 512 字节的物理页面大小(通常是 4k)。<br />
我们建议如果您在运行任何操作大量文件的程序时保持这个选项打开的默认值。<br />
这些服务包括 web 缓存，大容量邮件系统和新闻系统。<br />
尽管可能会浪费一些内存，但打开这个选项通常不会降低性能。但还是应该检验一下。<br />
####################</p>
<p>vfs.hirunningspace: 1048576<br />
############################<br />
这个值决定了系统可以将多少数据放在写入储存设备的等候区。通常使用默认值即可，<br />
但当我们有多颗硬盘时，我们可以将它调大为 4MB 或 5MB。<br />
注意这个设置成很高的值(超过缓存器的写极限)会导致坏的性能。<br />
不要盲目的把它设置太高！高的数值会导致同时发生的读操作的迟延。<br />
#############################</p>
<p>vfs.write_behind: 1<br />
#########################<br />
这个选项预设为 1，也就是打开的状态。在打开时，在系统需要写入数据在硬盘或其它储存设备上时，<br />
它会等到收集了一个 cluster 单位的数据后再一次写入，否则会在一个暂存区空间有写入需求时就立即写到硬盘上。<br />
这个选项打开时，对于一个大的连续的文件写入速度非常有帮助。但如果您遇到有很多行程延滞在等待写入动作时，您可能必须关闭这个功能。<br />
############################</p>
<p>net.local.stream.sendspace: 8192<br />
##################################<br />
本地套接字连接的数据发送空间<br />
建议设置为65536<br />
###################################<br />
net.local.stream.recvspace: 8192<br />
##################################<br />
本地套接字连接的数据接收空间<br />
建议设置为65536<br />
###################################</p>
<p>net.inet.ip.portrange.lowfirst: 1023<br />
net.inet.ip.portrange.lowlast: 600<br />
net.inet.ip.portrange.first: 49152<br />
net.inet.ip.portrange.last: 65535<br />
net.inet.ip.portrange.hifirst: 49152<br />
net.inet.ip.portrange.hilast: 65535<br />
###################<br />
以上六项是用来控制TCP及UDP所使用的port范围，这个范围被分成三个部份，低范围、预设范围、及高范围。<br />
这些是你的服务器主动发起连接时的临时端口的范围，预设的已经1万多了，一般的应用就足够了。<br />
如果是比较忙碌的FTP server，一般也不会同时提供给1万多人访问的，<br />
当然如果很不幸，你的服务器就要提供很多，那么可以修改first的值，比如直接用1024开始<br />
#########################</p>
<p>net.inet.ip.redirect: 1<br />
#########################<br />
设置为0，屏蔽ip重定向功能<br />
###########################</p>
<p>net.inet.ip.rtexpire: 3600<br />
net.inet.ip.rtminexpire: 10<br />
########################<br />
很多apache产生的CLOSE_WAIT状态，这种状态是等待客户端关闭，但是客户端那边并没有正常的关闭，于是留下很多这样的东东。<br />
建议都修改为2<br />
#########################</p>
<p>net.inet.ip.intr_queue_maxlen: 50<br />
########################<br />
Maximum size of the IP input queue，如果下面的net.inet.ip.intr_queue_drops一直在增加，<br />
那就说明你的队列空间不足了，那么可以考虑增加该值。<br />
##########################<br />
net.inet.ip.intr_queue_drops: 0<br />
####################<br />
Number of packets dropped from the IP input queue,如果你sysctl它一直在增加，<br />
那么增加net.inet.ip.intr_queue_maxlen的值。<br />
#######################</p>
<p>net.inet.ip.fastforwarding: 0<br />
#############################<br />
如果打开的话每个目标地址一次转发成功以后它的数据都将被记录进路由表和arp数据表，节约路由的计算时间<br />
但会需要大量的内核内存空间来保存路由表。<br />
如果内存够大，打开吧，呵呵<br />
#############################</p>
<p>net.inet.ip.random_id: 0<br />
#####################<br />
默认情况下，ip包的id号是连续的，而这些可能会被攻击者利用，比如可以知道你nat后面带了多少主机。<br />
如果设置成1，则这个id号是随机的，嘿嘿。<br />
#####################</p>
<p>net.inet.icmp.maskrepl: 0<br />
############################<br />
防止广播风暴，关闭其他广播探测的响应。默认即是，无须修改。<br />
###############################</p>
<p>net.inet.icmp.icmplim: 200<br />
##############################<br />
限制系统发送ICMP速率，改为100吧，或者保留也可，并不会给系统带来太大的压力。<br />
###########################<br />
net.inet.icmp.icmplim_output: 1<br />
###################################<br />
如果设置成0，就不会看到提示说Limiting icmp unreach response from 214 to 200 packets per second 等等了<br />
不过禁止输出容易让我们忽视攻击的存在。这个自己看着办吧。<br />
######################################</p>
<p>net.inet.icmp.drop_redirect: 0<br />
net.inet.icmp.log_redirect: 0<br />
###################################<br />
设置为1，屏蔽ICMP重定向功能<br />
###################################<br />
net.inet.icmp.bmcastecho: 0<br />
############################<br />
防止广播风暴，关闭广播ECHO响应，默认即是，无须修改。<br />
###############################</p>
<p>net.inet.tcp.mssdflt: 512<br />
net.inet.tcp.minmss: 216<br />
###############################<br />
数据包数据段最小值，以上两个选项最好不动！或者只修改mssdflt为1460，minmss不动。<br />
原因详见##/security/2007/1211/article_4.html<br />
#############################</p>
<p>net.inet.tcp.keepidle: 7200000<br />
######################<br />
TCP的套接字的空闲时间，默认时间太长，可以改为600000（10分钟）。<br />
##########################</p>
<p>net.inet.tcp.sendspace: 32768<br />
############################<br />
最大的待发送TCP数据缓冲区空间，应用程序将数据放到这里就认为发送成功了，系统TCP堆栈保证数据的正常发送。<br />
####################################<br />
net.inet.tcp.recvspace: 65536<br />
###################################<br />
最大的接受TCP缓冲区空间，系统从这里将数据分发给不同的套接字，增大该空间可提高系统瞬间接受数据的能力以提高性能。<br />
###################################<br />
这二个选项分别控制了网络 TCP 联机所使用的传送及接收暂存区的大小。预设的传送暂存区为 32K，而接收暂存区为 64K。<br />
如果需要加速 TCP 的传输，可以将这二个值调大一点，但缺点是太大的值会造成系统核心占用太多的内存。<br />
如果我们的机器会同时服务数百或数千个网络联机，那么这二个选项最好维持默认值，否则会造成系统核心内存不足。<br />
但如果我们使用的是 gigabite 的网络，将这二个值调大会有明显效能的提升。<br />
传送及接收的暂存区大小可以分开调整，<br />
例如，假设我们的系统主要做为网页服务器，我们可以将接收的暂存区调小一点，并将传送的暂存区调大，如此一来，我们就可以避免占去太多的核心内存空间。</p>
<p>net.inet.udp.maxdgram: 9216<br />
#########################<br />
最大的发送UDP数据缓冲区大小，网上的资料大多都是65536，我个人认为没多大必要，<br />
如果要调整，可以试试24576。<br />
##############################<br />
net.inet.udp.recvspace: 42080<br />
##################<br />
最大的接受UDP缓冲区大小，网上的资料大多都是65536，我个人认为没多大必要，<br />
如果要调整，可以试试49152。<br />
#######################<br />
以上四项配置通常不会导致问题，一般说来网络流量是不对称的，因此应该根据实际情况调整，并观察其效果。<br />
如果我们将传送或接收的暂存区设为大于 65535，除非服务器本身及客户端所使用的操作系统都支持 TCP 协议的 windows scaling extension (请参考 RFC 1323 文件)。<br />
FreeBSD默认已支持 rfs1323 (即 sysctl 的 net.inet.tcp.rfc1323 选项)。<br />
###################################################</p>
<p>net.inet.tcp.log_in_vain: 0<br />
##################<br />
记录下任何TCP连接，这个一般情况下不应该更改。<br />
####################</p>
<p>net.inet.tcp.blackhole: 0<br />
##################################<br />
建议设置为2，接收到一个已经关闭的端口发来的所有包，直接drop，如果设置为1则是只针对TCP包<br />
#####################################</p>
<p>net.inet.tcp.delayed_ack: 1<br />
###########################<br />
当一台计算机发起TCP连接请求时，系统会回应ACK应答数据包。<br />
该选项设置是否延迟ACK应答数据包，把它和包含数据的数据包一起发送。<br />
在高速网络和低负载的情况下会略微提高性能，但在网络连接较差的时候，<br />
对方计算机得不到应答会持续发起连接请求，反而会让网络更加拥堵，降低性能。<br />
因此这个值我建议您看情况而定，如果您的网速不是问题，可以将封包数量减少一半<br />
如果网络不是特别好，那么就设置为0，有请求就先回应，这样其实浪费的网通、电信的带宽速率而不是你的处理时间:)<br />
############################</p>
<p>net.inet.tcp.inflight.enable: 1<br />
net.inet.tcp.inflight.debug: 0<br />
net.inet.tcp.inflight.rttthresh: 10<br />
net.inet.tcp.inflight.min: 6144<br />
net.inet.tcp.inflight.max: 1073725440<br />
net.inet.tcp.inflight.stab: 20<br />
###########################<br />
限制 TCP 带宽延迟积和 NetBSD 的 TCP/Vegas 类似。<br />
它可以通过将 sysctl 变量 net.inet.tcp.inflight.enable 设置成 1 来启用。<br />
系统将尝试计算每一个连接的带宽延迟积，并将排队的数据量限制在恰好能保持最优吞吐量的水平上。<br />
这一特性在您的服务器同时向使用普通调制解调器，千兆以太网，乃至更高速度的光与网络连接 (或其他带宽延迟积很大的连接) 的时候尤为重要，<br />
特别是当您同时使用滑动窗缩放，或使用了大的发送窗口的时候。<br />
如果启用了这个选项，您还应该把 net.inet.tcp.inflight.debug 设置为 0 (禁用调试)，<br />
对于生产环境而言， 将 net.inet.tcp.inflight.min 设置成至少 6144 会很有好处。<br />
然而， 需要注意的是，这个值设置过大事实上相当于禁用了连接带宽延迟积限制功能。<br />
这个限制特性减少了在路由和交换包队列的堵塞数据数量，也减少了在本地主机接口队列阻塞的数据的数量。<br />
在少数的等候队列中、交互式连接，尤其是通过慢速的调制解调器，也能用低的 往返时间操作。<br />
但是，注意这只影响到数据发送 (上载/服务端)。对数据接收(下载)没有效果。<br />
调整 net.inet.tcp.inflight.stab 是 不 推荐的。<br />
这个参数的默认值是 20，表示把 2 个最大包加入到带宽延迟积窗口的计算中。<br />
额外的窗口似的算法更为稳定，并改善对于多变网络环境的相应能力，<br />
但也会导致慢速连接下的 ping 时间增长 (尽管还是会比没有使用 inflight 算法低许多)。<br />
对于这些情形， 您可能会希望把这个参数减少到 15， 10， 或 5；<br />
并可能因此而不得不减少 net.inet.tcp.inflight.min (比如说， 3500) 来得到希望的效果。<br />
减少这些参数的值， 只应作为最后不得已时的手段来使用。<br />
############################</p>
<p>net.inet.tcp.syncookies: 1<br />
#########################<br />
SYN cookies是一种用于通过选择加密的初始化TCP序列号，可以对回应的包做验证来降低SYN&#8217;洪水&#8217;攻击的影响的技术。<br />
默认即是，不需修改<br />
########################</p>
<p>net.inet.tcp.msl: 30000<br />
#######################<br />
这个值网上很多文章都推荐的7500，<br />
还可以改的更小一些(如2000或2500)，这样可以加快不正常连接的释放过程(三次握手2秒、FIN_WAIT4秒)。<br />
#########################<br />
net.inet.tcp.always_keepalive: 1<br />
###########################<br />
帮助系统清除没有正常断开的TCP连接，这增加了一些网络带宽的使用，但是一些死掉的连接最终能被识别并清除。<br />
死的TCP连接是被拨号用户存取的系统的一个特别的问题，因为用户经常断开modem而不正确的关闭活动的连接。<br />
#############################</p>
<p>net.inet.udp.checksum: 1<br />
#########################<br />
防止不正确的udp包的攻击，默认即是，不需修改<br />
##############################</p>
<p>net.inet.udp.log_in_vain: 0<br />
#######################<br />
记录下任何UDP连接,这个一般情况下不应该修改。<br />
#######################</p>
<p>net.inet.udp.blackhole: 0<br />
####################<br />
建议设置为1，接收到一个已经关闭的端口发来的所有UDP包直接drop<br />
#######################</p>
<p>net.inet.raw.maxdgram: 8192<br />
#########################<br />
Maximum outgoing raw IP datagram size<br />
很多文章建议设置为65536，好像没多大必要。<br />
######################################<br />
net.inet.raw.recvspace: 8192<br />
######################<br />
Maximum incoming raw IP datagram size<br />
很多文章建议设置为65536，好像没多大必要。<br />
#######################</p>
<p>net.link.ether.inet.max_age: 1200<br />
####################<br />
调整ARP清理的时间，通过向IP路由缓冲填充伪造的ARP条目可以让恶意用户产生资源耗竭和性能减低攻击。<br />
这项似乎大家都未做改动，我建议不动或者稍微减少，比如300（HP-UX默认的5分钟）<br />
#######################</p>
<p>net.inet6.ip6.redirect: 1<br />
###############################<br />
设置为0，屏蔽ipv6重定向功能<br />
###########################</p>
<p>net.isr.direct: 0<br />
############################<br />
所有MPSAFE的网络ISR对包做立即响应,提高网卡性能，设置为1。<br />
####################################</p>
<p>hw.ata.wc: 1<br />
#####################<br />
这个选项用来打开 IDE 硬盘快取。当打开时，如果有数据要写入硬盘时，硬盘会假装已完成写入，并将数据快取起来。<br />
这种作法会加速硬盘的存取速度，但当系统异常关机时，比较容易造成数据遗失。<br />
不过由于关闭这个功能所带来的速度差异实在太大，建议还是保留原本打开的状态吧，不做修改。<br />
###################</p>
<p>security.bsd.see_other_uids: 1<br />
security.bsd.see_other_gids: 1<br />
#####################<br />
不允许用户看到其他用户的进程,因此应该改成0，<br />
#######################</p>
]]></content:encoded>
			<wfw:commentRss>http://www.javaems.com/2009/05/freebsd-sysctlconf%e9%85%8d%e7%bd%ae%e8%af%b4%e6%98%8e/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>FreeBSD下IPFW的RED功能</title>
		<link>http://www.javaems.com/2009/05/freebsd%e4%b8%8bipfw%e7%9a%84red%e5%8a%9f%e8%83%bd/</link>
		<comments>http://www.javaems.com/2009/05/freebsd%e4%b8%8bipfw%e7%9a%84red%e5%8a%9f%e8%83%bd/#comments</comments>
		<pubDate>Wed, 13 May 2009 16:56:32 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Unix]]></category>
		<category><![CDATA[网络]]></category>
		<category><![CDATA[Freebsd]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[RED]]></category>

		<guid isPermaLink="false">http://www.javaems.com/?p=355</guid>
		<description><![CDATA[随机早期检测（以下简称RED）是一种拥塞减除算法（也包含一些功能协议）。它的功用是通过保证数据队列不致于排满来避免网络阻塞。它的实现方式是不断地计算队列的长度，并拿它与设定的两个阀值（一个最小值和一个最大值）进行比较。
 <a href="http://www.javaems.com/2009/05/freebsd%e4%b8%8bipfw%e7%9a%84red%e5%8a%9f%e8%83%bd/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>随机早期检测 (RANDOM EARLY DETECTION)</p>
<p>随机早期检测（以下简称RED）是一种拥塞减除算法（也包含一些功能协议）。它的功用是通过保证数据队列不致于排满来避免网络阻塞。它的实现方式是不断地计算队列的长度，并拿它与设定的两个阀值（一个最小值和一个最大值）进行比较。</p>
<p>如果队列平均长度小于最小阀值，那么就不动作，自然也没有数据包会丢失。<br />
如果这个值超过了最大阀值，那么所有新抵达的数据包就会被丢弃。<br />
而如果这个值处于这两者之间（关键在这里），那么RED就会按照由队列长度中得到的一些信息来决定丢弃什么包。</p>
<p><span id="more-355"></span>笼统地讲，当队列长度趋近于最大值时，就会有越来越多的包会被丢弃。RED会从这些连接中随机地抽取包来丢弃。占用较大带宽的连接被丢包的可能性要大。</p>
<p>RED特别对避免一种叫“全局同步降速”的情形很有用，同时也能增强容纳突发流量的能力。</p>
<p>“全局同步降速”是指在网络阴塞时，由于一般是所有连接都有丢包现象发生，进而会导致这些连接都中断，最后整体流量会迅速下降的情形。例如：一个路由器正承载10个FTP连接，当发生阻塞时，每个连接都会有丢包（按FIFO排队），这样10个连接都会中断，最后总流量急剧下降。</p>
<p>显然这不是我们所想要的情况，这种现象的发生会导致我们的带宽不能始终被充分利用。</p>
<p>RED解决这一问题的方法是：有选择地选取一些连接来丢包，而不是平均对待。占用较大带宽的连接会有较高的机会被选中丢包。这样高流量的连接就会被减速，也就避免了拥塞的发生，同时也不会出现“全局同步降速”问题。</p>
<p>另外，由于RED是在数据包队列未满的时候就开始丢包，这使得系统增强了应对突发流量的能力。当有突发流量进入时，队列始终是有空间来容纳新进的数据包。</p>
<p>RED只能用于有处理拥塞能力的传输协议，也即它适合被用于TCP而不适合UDP或ICMP协议。</p>
<p>拥塞通知(ECN)</p>
<p>ECN与RED一起工作，它的功用是通知两台正在通过一个有拥塞的网络通信的主机有拥塞发生。RED在ECN作用下会采用在数据报头将相关位置位而不是丢包的办法来处理拥塞。这一方法的前提是正在发包的主机也要支持ECN，能读懂这个拥塞信息并相应主动减少流量。 关于ECN的祥情，请参阅RFC 3168。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.javaems.com/2009/05/freebsd%e4%b8%8bipfw%e7%9a%84red%e5%8a%9f%e8%83%bd/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>VLAN划分的四种策略</title>
		<link>http://www.javaems.com/2009/04/vlan%e5%88%92%e5%88%86%e7%9a%84%e5%9b%9b%e7%a7%8d%e7%ad%96%e7%95%a5/</link>
		<comments>http://www.javaems.com/2009/04/vlan%e5%88%92%e5%88%86%e7%9a%84%e5%9b%9b%e7%a7%8d%e7%ad%96%e7%95%a5/#comments</comments>
		<pubDate>Mon, 20 Apr 2009 15:40:08 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[网络]]></category>

		<guid isPermaLink="false">http://www.javaems.com/?p=304</guid>
		<description><![CDATA[1. 基于端口的VLAN 基于端口的VLAN的划分是最简单、最有效的VLAN划分方法。该方法只需网络管理员针对于网络设备的交换端口进行重新分配组合在不同的逻辑网段中即可。而不用考虑该端口所连接的设备是什么。 2. 基于MAC地址的VLAN MAC地址其实就是指网卡的标识符，每一块网卡的MAC地址都是唯一的。基于MAC地址的VLAN划分其实就是基于工作站、服务器的VLAN的组合。在网络规模较小时，该方案亦不失为一个好的方法，但随着网络规模的扩大，网络设备、用户的增加，则会在很大程度上加大管理的难度。 3. 基于路由的VLAN 路由协议工作在七层协议的第三层：网络层，即基于IP和IPX协议的转发。这类设备包括路由器和路由交换机。该方式允许一个VLAN跨越多个交换机，或一个端口位于多个VLAN中。 4. 基于策略的VLAN 基于策略的VLAN的划分是一种比较有效而直接的方式。这主要取决于在VLAN的划分中所采用的策略。 就目前来说，对于VLAN的划分主要采用1、3两种模式，对于方案2则为辅助性的方案。 VLAN的划分设计之后，再所涉及的就是VLAN划分的最后一步：VLAN间的互连。 在以前对VLAN的划分主要是通过路由器来实现的，但随着网络规模的扩大、信息量的增加，路由器无论是从端口数还是系统性能上来说都已经不堪负荷，因此逐渐形成了产生网络瓶颈的主要原因。而在现在，因为有了基于交换机上的三层路由的能力，在上述两点已经得到合理地解决]]></description>
			<content:encoded><![CDATA[<p>1. 基于端口的VLAN</p>
<p>基于端口的VLAN的划分是最简单、最有效的VLAN划分方法。该方法只需网络管理员针对于网络设备的交换端口进行重新分配组合在不同的逻辑网段中即可。而不用考虑该端口所连接的设备是什么。</p>
<p>2. 基于MAC地址的VLAN</p>
<p>MAC地址其实就是指网卡的标识符，每一块网卡的MAC地址都是唯一的。基于MAC地址的VLAN划分其实就是基于工作站、服务器的VLAN的组合。在网络规模较小时，该方案亦不失为一个好的方法，但随着网络规模的扩大，网络设备、用户的增加，则会在很大程度上加大管理的难度。</p>
<p>3. 基于路由的VLAN</p>
<p>路由协议工作在七层协议的第三层：网络层，即基于IP和IPX协议的转发。这类设备包括路由器和路由交换机。该方式允许一个VLAN跨越多个交换机，或一个端口位于多个VLAN中。</p>
<p>4. 基于策略的VLAN</p>
<p>基于策略的VLAN的划分是一种比较有效而直接的方式。这主要取决于在VLAN的划分中所采用的策略。</p>
<p>就目前来说，对于VLAN的划分主要采用1、3两种模式，对于方案2则为辅助性的方案。</p>
<p>VLAN的划分设计之后，再所涉及的就是VLAN划分的最后一步：VLAN间的互连。</p>
<p>在以前对VLAN的划分主要是通过路由器来实现的，但随着网络规模的扩大、信息量的增加，路由器无论是从端口数还是系统性能上来说都已经不堪负荷，因此逐渐形成了产生网络瓶颈的主要原因。而在现在，因为有了基于交换机上的三层路由的能力，在上述两点已经得到合理地解决</p>
]]></content:encoded>
			<wfw:commentRss>http://www.javaems.com/2009/04/vlan%e5%88%92%e5%88%86%e7%9a%84%e5%9b%9b%e7%a7%8d%e7%ad%96%e7%95%a5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>甲骨文将以74亿美元收购SUN</title>
		<link>http://www.javaems.com/2009/04/%e7%94%b2%e9%aa%a8%e6%96%87%e5%b0%86%e4%bb%a574%e4%ba%bf%e7%be%8e%e5%85%83%e6%94%b6%e8%b4%adsun/</link>
		<comments>http://www.javaems.com/2009/04/%e7%94%b2%e9%aa%a8%e6%96%87%e5%b0%86%e4%bb%a574%e4%ba%bf%e7%be%8e%e5%85%83%e6%94%b6%e8%b4%adsun/#comments</comments>
		<pubDate>Mon, 20 Apr 2009 15:08:59 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[网络]]></category>
		<category><![CDATA[sun]]></category>

		<guid isPermaLink="false">http://www.javaems.com/?p=301</guid>
		<description><![CDATA[北京时间4月20日晚消息，据国外媒体报道，甲骨文今天宣布，该公司将以每股9.5美元的价格收购Sun。该交易总值将超过70亿美元。 　　这一消息颇令人感到意外。本月早些时候，IBM和Sun之间的收购谈判破裂。知情人士称，Sun拒绝了IBM每股9.4美元的出价。 　　Sun股价在盘前交易中上涨了37.5%至9.2美元；甲骨文股价则下跌了4.5%至18.34美元。 　　Sun向美国证券交易委员会提交的最新文件显示，其流通股约为7.45亿股。按每股9.5美元计算，Sun的身价约为71亿美元。 　　两家公司在一份声明中称，该交易价值约为74亿美元。 4月20日晚间消息，针对甲骨文74亿美元收购Sun一事，Sun大中华区新闻发言人表示，北京时间7点已经从内部获悉此事，他透露Sun将在北京时间12时公布一些细节。 　　Sun大中华区新闻发言人20晚间接受新浪科技连线时说，他已经于北京时间今晚7点从内部获悉了这一收购案，Sun大中华区对这一消息暂不置评，等待全球总部的进一步通知，他透露，北京时间今晚12点后将有一些细节对外公布。 　　北京时间20日晚间，甲骨文宣布以74亿美元收购Sun。这一交易让不少人意外，此前，业界传出IBM与Sun就合并展开了谈判，但最后以失败告终。]]></description>
			<content:encoded><![CDATA[<p>北京时间4月20日晚消息，据国外媒体报道，甲骨文今天宣布，该公司将以每股9.5美元的价格收购Sun。该交易总值将超过70亿美元。</p>
<p>　　这一消息颇令人感到意外。本月早些时候，IBM和Sun之间的收购谈判破裂。知情人士称，Sun拒绝了IBM每股9.4美元的出价。</p>
<p>　　Sun股价在盘前交易中上涨了37.5%至9.2美元；甲骨文股价则下跌了4.5%至18.34美元。</p>
<p>　　Sun向美国证券交易委员会提交的最新文件显示，其流通股约为7.45亿股。按每股9.5美元计算，Sun的身价约为71亿美元。</p>
<p>　　两家公司在一份声明中称，该交易价值约为74亿美元。</p>
<p>4月20日晚间消息，针对甲骨文74亿美元收购Sun一事，Sun大中华区新闻发言人表示，北京时间7点已经从内部获悉此事，他透露Sun将在北京时间12时公布一些细节。</p>
<p>　　Sun大中华区新闻发言人20晚间接受新浪科技连线时说，他已经于北京时间今晚7点从内部获悉了这一收购案，Sun大中华区对这一消息暂不置评，等待全球总部的进一步通知，他透露，北京时间今晚12点后将有一些细节对外公布。</p>
<p>　　北京时间20日晚间，甲骨文宣布以74亿美元收购Sun。这一交易让不少人意外，此前，业界传出IBM与Sun就合并展开了谈判，但最后以失败告终。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.javaems.com/2009/04/%e7%94%b2%e9%aa%a8%e6%96%87%e5%b0%86%e4%bb%a574%e4%ba%bf%e7%be%8e%e5%85%83%e6%94%b6%e8%b4%adsun/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>IPX协议</title>
		<link>http://www.javaems.com/2009/04/ipx%e5%8d%8f%e8%ae%ae/</link>
		<comments>http://www.javaems.com/2009/04/ipx%e5%8d%8f%e8%ae%ae/#comments</comments>
		<pubDate>Wed, 08 Apr 2009 18:47:49 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[网络]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[unix]]></category>

		<guid isPermaLink="false">http://www.javaems.com/?p=289</guid>
		<description><![CDATA[IPX(Internet work Packet Exchange，互联网络数据包交换)是一个专用的协议簇，它主要由Novell NetWare操作系统使用。IPX是IPX协议簇中的第三层协议。 以下我们列出IPX协议的要点，作为IPX相关实验前的准备。 1.IPX的协议构成 IPX协议簇包括如下主要协议: ●IPX:第三层协议，用来对通过互联网络的数据包进行路由选择和转发，它指定一个无连接的数据报，相当于TCP/IP协议簇中的IP协议; ●SPX:顺序包交换 (Sequenced Packet Exchange)协议。是IPX协议簇中的第四层的面向连接的协议，相当于TCP/IP协议簇中的TCP协议; ●NCP:NetWare核心协议(NetWare Core Protocol)，提供从客户到服务器的连接和应用; ●SAP:服务通吉协议 (Service Advertising Protocol)，用来在IPX网络上通告网络服务; ●IPX RIP:Novell路由选择信息协议(Routing Information Protocol)，完成路由器之间路由信息的交换并形成路由表。 2.IPX编址 IPX网络的地址长度为80位 (bit，由两部分构成，第一部分是32位的网络号，第二部分是48位的节点号。IPX地址通常用十六进制数来表示。 IPX网络号是由网管人员分配的，可以根据需要来定义网络号。 IPX节点号通常是网络接口本身的MAC地址。 3.IPX协议在以太网上的封装 IPX协议在以太网上支持以下4种封装格式，也称为帧格式，它们是: ●以太网802.3:也叫原始以太网，Cisco设备中称为&#8221;novell-ether&#8221;，它是NetWare版本2到版本3.1中缺省的帧格式; ●以太网802.2，也称sap，是标准的IEEE帧格式，它是NetWare版本3.12到4.x中的标准帧格式; ●以太网II，也称arpa，采用标准以太网版本II的头格式; ●以太网SNAP，或snap，通过增加一个于网接入协议(SNAP)扩展了IEEE 802.2的头格式。 采用不同IPX封装格式的设备之间不能进行通信。 4.IPX服务通告 SAP是IPX服务通告协议，它可以通告诸如网络服务器和打印服务器等网络资源设备的地址和所能提供的服务。 路由器可以监听SAP更新消息，建立一个已知服务和相应网络地址的对应表。客户机可以利用路由器上的SAP表得到网上服务和地址的信息，从而直接访问相应服务。]]></description>
			<content:encoded><![CDATA[<p>IPX(Internet work Packet Exchange，互联网络数据包交换)是一个专用的协议簇，它主要由Novell NetWare操作系统使用。IPX是IPX协议簇中的第三层协议。</p>
<p>以下我们列出IPX协议的要点，作为IPX相关实验前的准备。<br />
<strong>1.IPX的协议构成</strong></p>
<p><strong></strong><br />
IPX协议簇包括如下主要协议:</p>
<p>●IPX:第三层协议，用来对通过互联网络的数据包进行路由选择和转发，它指定一个无连接的数据报，相当于TCP/IP协议簇中的IP协议;<span id="more-289"></span><br />
●SPX:顺序包交换 (Sequenced Packet Exchange)协议。是IPX协议簇中的第四层的面向连接的协议，相当于TCP/IP协议簇中的TCP协议;<br />
●NCP:NetWare核心协议(NetWare Core Protocol)，提供从客户到服务器的连接和应用;<br />
●SAP:服务通吉协议 (Service Advertising Protocol)，用来在IPX网络上通告网络服务;<br />
●IPX RIP:Novell路由选择信息协议(Routing Information Protocol)，完成路由器之间路由信息的交换并形成路由表。<br />
<strong>2.IPX编址</strong></p>
<p><strong></strong><br />
IPX网络的地址长度为80位 (bit，由两部分构成，第一部分是32位的网络号，第二部分是48位的节点号。IPX地址通常用十六进制数来表示。<br />
IPX网络号是由网管人员分配的，可以根据需要来定义网络号。<br />
IPX节点号通常是网络接口本身的MAC地址。<br />
<strong>3.IPX协议在以太网上的封装</strong></p>
<p><strong></strong><br />
IPX协议在以太网上支持以下4种封装格式，也称为帧格式，它们是:</p>
<p>●以太网802.3:也叫原始以太网，Cisco设备中称为&#8221;novell-ether&#8221;，它是NetWare版本2到版本3.1中缺省的帧格式;<br />
●以太网802.2，也称sap，是标准的IEEE帧格式，它是NetWare版本3.12到4.x中的标准帧格式;<br />
●以太网II，也称arpa，采用标准以太网版本II的头格式;<br />
●以太网SNAP，或snap，通过增加一个于网接入协议(SNAP)扩展了IEEE 802.2的头格式。<br />
采用不同IPX封装格式的设备之间不能进行通信。<br />
<strong>4.IPX服务通告</strong><br />
SAP是IPX服务通告协议，它可以通告诸如网络服务器和打印服务器等网络资源设备的地址和所能提供的服务。<br />
路由器可以监听SAP更新消息，建立一个已知服务和相应网络地址的对应表。客户机可以利用路由器上的SAP表得到网上服务和地址的信息，从而直接访问相应服务。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.javaems.com/2009/04/ipx%e5%8d%8f%e8%ae%ae/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
