<?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/"
	>

<channel>
	<title>AI800 NETWORK</title>
	<atom:link href="http://www.ai800.com/feed" rel="self" type="application/rss+xml" />
	<link>http://www.ai800.com</link>
	<description>www.ai800.com    Tel: l38l397263l    ai800@ai800.com   Nanjing</description>
	<pubDate>Fri, 22 Jan 2010 01:29:59 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>两台ROUTEROS做热备冗余</title>
		<link>http://www.ai800.com/archives/250</link>
		<comments>http://www.ai800.com/archives/250#comments</comments>
		<pubDate>Thu, 21 Jan 2010 15:20:08 +0000</pubDate>
		<dc:creator>ai800@ai800.com</dc:creator>
		
		<category><![CDATA[技术文章]]></category>

		<category><![CDATA[routeros]]></category>

		<category><![CDATA[VRRP]]></category>

		<category><![CDATA[冗余]]></category>

		<category><![CDATA[热备]]></category>

		<category><![CDATA[路由器]]></category>

		<guid isPermaLink="false">http://njnetwork.blog.35.cn/archives/250</guid>
		<description><![CDATA[两台ROUTEROS做热备冗余
在ROUTEROS中，支持一个高级功能的协议，它就是VRRP，即虚拟路由冗余协议。通过在两台路由器中配置VRRP，产生一个虚拟路由器，这个路由器的内网接口地址即为所有内网客户端需要指向的网关地址。当任何一台路由器DOWN机，虚拟路由器仍然可以工作，客户端不用做任何修改，可实时在线。在下面的例子中，网关地址为192.168.0.254。
实例目的：有两台ROUTEROS，此两台路由器的内网接口接在局域网的同一个交换机上，两路由器的外网接口分别接到各自的ISP提供的线路。客户端填写的网关地址始终是192.168.0.254。其中一台路由器宕机，内网仍然可访问外网。
下面是设置步骤，由前4步常用配置，请参看相关文档：
1、先设置主路由器内网接口IP为192.168.0.251，另一台路由器内网接口IP为192.168.0.252。
2、两台路由器分别设置外网接口IP。
3、两台路由器分别设置默认路由。
4、两台路由器分别设置源地址伪装。
5、设置VRRP。下面的就是这上步的具体配置，前面4步就不讲了。
先在主路由器上设置VRRP，在内网接口上创建一个名为vr1的vrrp实例，你可以理解为创建了一个VR1虚拟路由器。权限设置为最大即255（主路由器在创建VRRP实例时权限必须为最大即255）。然后在这个实例上添加内网网关地址192.168.0.254,注意这个地址只在/ip vrrp address 中显示，不在/ip address中显示。
[admin@MikroTik] ip vrrp> add name=vr1 interface=local priority=255
[admin@MikroTik] ip vrrp> address add address=192.168.0.254/24 virtual-router=vr1
然后在备份路由器上设置VRRP，权限设置为较低的100。VRRP实例名称必段仍为vr1，为此实例添加的地址也为192.168.0.254。
[admin@MikroTik] ip vrrp> add name=vr1 interface=local priority=100
[admin@MikroTik] ip vrrp> address add address=192.168.0.254/24 virtual-router=vr1
至此配置完毕。由于VRRP通知信息是通过广播方式发送的，所以不论两台路由器的内网物理接品的IP设置为什么（当然应在同网段且不冲突），两台路由器都能获取对方的主备状态，并且进行主备切换。
]]></description>
			<content:encoded><![CDATA[<p>两台ROUTEROS做热备冗余</p>
<p>在ROUTEROS中，支持一个高级功能的协议，它就是VRRP，即虚拟路由冗余协议。通过在两台路由器中配置VRRP，产生一个虚拟路由器，这个路由器的内网接口地址即为所有内网客户端需要指向的网关地址。当任何一台路由器DOWN机，虚拟路由器仍然可以工作，客户端不用做任何修改，可实时在线。在下面的例子中，网关地址为192.168.0.254。</p>
<p>实例目的：有两台ROUTEROS，此两台路由器的内网接口接在局域网的同一个交换机上，两路由器的外网接口分别接到各自的ISP提供的线路。客户端填写的网关地址始终是192.168.0.254。其中一台路由器宕机，内网仍然可访问外网。<br />
下面是设置步骤，由前4步常用配置，请参看相关文档：<br />
1、先设置主路由器内网接口IP为192.168.0.251，另一台路由器内网接口IP为192.168.0.252。<br />
2、两台路由器分别设置外网接口IP。<br />
3、两台路由器分别设置默认路由。<br />
4、两台路由器分别设置源地址伪装。<br />
5、设置VRRP。下面的就是这上步的具体配置，前面4步就不讲了。</p>
<p>先在主路由器上设置VRRP，在内网接口上创建一个名为vr1的vrrp实例，你可以理解为创建了一个VR1虚拟路由器。权限设置为最大即255（主路由器在创建VRRP实例时权限必须为最大即255）。然后在这个实例上添加内网网关地址192.168.0.254,注意这个地址只在/ip vrrp address 中显示，不在/ip address中显示。</p>
<p>[admin@MikroTik] ip vrrp> add name=vr1 interface=local priority=255<br />
[admin@MikroTik] ip vrrp> address add address=192.168.0.254/24 virtual-router=vr1</p>
<p>然后在备份路由器上设置VRRP，权限设置为较低的100。VRRP实例名称必段仍为vr1，为此实例添加的地址也为192.168.0.254。<br />
[admin@MikroTik] ip vrrp> add name=vr1 interface=local priority=100<br />
[admin@MikroTik] ip vrrp> address add address=192.168.0.254/24 virtual-router=vr1</p>
<p>至此配置完毕。由于VRRP通知信息是通过广播方式发送的，所以不论两台路由器的内网物理接品的IP设置为什么（当然应在同网段且不冲突），两台路由器都能获取对方的主备状态，并且进行主备切换。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ai800.com/archives/250/feed</wfw:commentRss>
		</item>
		<item>
		<title>使用CF卡的机器配置DHCP服务最好减小租约保存到硬盘的频率</title>
		<link>http://www.ai800.com/archives/248</link>
		<comments>http://www.ai800.com/archives/248#comments</comments>
		<pubDate>Thu, 21 Jan 2010 15:17:51 +0000</pubDate>
		<dc:creator>ai800@ai800.com</dc:creator>
		
		<category><![CDATA[技术文章]]></category>

		<category><![CDATA[CF卡]]></category>

		<category><![CDATA[DHCP]]></category>

		<category><![CDATA[routeros]]></category>

		<category><![CDATA[租约]]></category>

		<guid isPermaLink="false">http://njnetwork.blog.35.cn/?p=248</guid>
		<description><![CDATA[使用CF卡的机器配置DHCP服务最好减小租约保存到硬盘的频率。
如果对网络可靠性要请不高，也可设置不把租约保存到硬盘。
/ip dhcp-server config store-leases-disk＝5min
如果对网络可靠性要求不高，也可设置不把租约保存到硬盘。如果不把租约定时保存到硬盘，可能会出现以下故障。
DHCP正常情况下假设把172.16.0.10分配给client10。当DHCP服务器因故重启后，有一台机器clientx请求分配IP，DHCP服务器发现租约里是空的，如果此时client10安装了个人防火墙，路由器ping不通172.16.0.10，此时路由器有理所当然的把地址池的第一个172.16.0.10再分配给clientx。此时路由器没有意识到问题的发生，实际网络已经有IP冲突问题。
所以最后还是推荐把租约定时保存到硬盘一下，只是保存频率减小点。如果租约时间是2天，那么可以让它半天保存一次，即:
/ip dhcp-server config store-leases-disk＝12h
]]></description>
			<content:encoded><![CDATA[<p>使用CF卡的机器配置DHCP服务最好减小租约保存到硬盘的频率。</p>
<p>如果对网络可靠性要请不高，也可设置不把租约保存到硬盘。<br />
/ip dhcp-server config store-leases-disk＝5min</p>
<p>如果对网络可靠性要求不高，也可设置不把租约保存到硬盘。如果不把租约定时保存到硬盘，可能会出现以下故障。</p>
<p>DHCP正常情况下假设把172.16.0.10分配给client10。当DHCP服务器因故重启后，有一台机器clientx请求分配IP，DHCP服务器发现租约里是空的，如果此时client10安装了个人防火墙，路由器ping不通172.16.0.10，此时路由器有理所当然的把地址池的第一个172.16.0.10再分配给clientx。此时路由器没有意识到问题的发生，实际网络已经有IP冲突问题。</p>
<p>所以最后还是推荐把租约定时保存到硬盘一下，只是保存频率减小点。如果租约时间是2天，那么可以让它半天保存一次，即:<br />
/ip dhcp-server config store-leases-disk＝12h</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ai800.com/archives/248/feed</wfw:commentRss>
		</item>
		<item>
		<title>为同一个网络再架设一个备用DHCP服务器</title>
		<link>http://www.ai800.com/archives/246</link>
		<comments>http://www.ai800.com/archives/246#comments</comments>
		<pubDate>Thu, 21 Jan 2010 15:15:44 +0000</pubDate>
		<dc:creator>ai800@ai800.com</dc:creator>
		
		<category><![CDATA[技术文章]]></category>

		<category><![CDATA[DHCP]]></category>

		<category><![CDATA[routeros]]></category>

		<guid isPermaLink="false">http://njnetwork.blog.35.cn/?p=246</guid>
		<description><![CDATA[为同一个网络再架设一个备用DHCP服务器
情况是这样的，公司已经使用ROUTEROS做为接入路由器，这个路由器中也配置了DHCP服务器。为了保证在接入路由器宕机后不影响内网，所以还要架第二台DHCP服务器。那两台DHCP同时分配IP不会造成混乱吗？通过设置不同的分配延时，可以做到两个DHCP不会混乱。接入路由器的DHCP服务的分配延时设置为2秒，第二台DHCP服务器的分配延时分配延时为10秒。当一台客户机请求分配IP时，这个请求包同时进入两台DHCP服务器，第一台2秒后给予分配IP，第二台10秒后检查这台客户机有没有被别的DHCP服务器分配IP，发现已经分配，所以第二台不再为这台机器分配IP。只有当第一台DHCP服务器出问题时，第二台DHCP服务器才在10秒后分配IP。
第一台设置DHCP服务的命令：
1. 创建IP地址池
/ip pool add name=dhcp-pool ranges=172.16.0.10-172.16.0.20
2. 设置分配的网络属性
/ip dhcp-server network add address=172.16.0.0/12 gateway=172.16.0.1 dns-server=218.2.135.1
3. 最后创建DHCP服务
/ip dhcp-server add interface=wlan1 address-pool=dhcp-pool authoritative=after-2sec-delay
第二台设置DHCP服务的命令：
命令和第一台几乎一样，就authoriatative的值改为after-10sec-delay。
1. 创建IP地址池
/ip pool add name=dhcp-pool ranges=172.16.0.10-172.16.0.20
2. 设置分配的网络属性
/ip dhcp-server network add address=172.16.0.0/12 gateway=172.16.0.1 dns-server=218.2.135.1
3. 最后创建DHCP服务
/ip dhcp-server add interface=wlan1 address-pool=dhcp-pool authoritative=after-10sec-delay
]]></description>
			<content:encoded><![CDATA[<p>为同一个网络再架设一个备用DHCP服务器</p>
<p>情况是这样的，公司已经使用ROUTEROS做为接入路由器，这个路由器中也配置了DHCP服务器。为了保证在接入路由器宕机后不影响内网，所以还要架第二台DHCP服务器。那两台DHCP同时分配IP不会造成混乱吗？通过设置不同的分配延时，可以做到两个DHCP不会混乱。接入路由器的DHCP服务的分配延时设置为2秒，第二台DHCP服务器的分配延时分配延时为10秒。当一台客户机请求分配IP时，这个请求包同时进入两台DHCP服务器，第一台2秒后给予分配IP，第二台10秒后检查这台客户机有没有被别的DHCP服务器分配IP，发现已经分配，所以第二台不再为这台机器分配IP。只有当第一台DHCP服务器出问题时，第二台DHCP服务器才在10秒后分配IP。<br />
第一台设置DHCP服务的命令：<br />
1. 创建IP地址池<br />
/ip pool add name=dhcp-pool ranges=172.16.0.10-172.16.0.20<br />
2. 设置分配的网络属性<br />
/ip dhcp-server network add address=172.16.0.0/12 gateway=172.16.0.1 dns-server=218.2.135.1<br />
3. 最后创建DHCP服务<br />
/ip dhcp-server add interface=wlan1 address-pool=dhcp-pool authoritative=after-2sec-delay</p>
<p>第二台设置DHCP服务的命令：<br />
命令和第一台几乎一样，就authoriatative的值改为after-10sec-delay。<br />
1. 创建IP地址池<br />
/ip pool add name=dhcp-pool ranges=172.16.0.10-172.16.0.20<br />
2. 设置分配的网络属性<br />
/ip dhcp-server network add address=172.16.0.0/12 gateway=172.16.0.1 dns-server=218.2.135.1<br />
3. 最后创建DHCP服务<br />
/ip dhcp-server add interface=wlan1 address-pool=dhcp-pool authoritative=after-10sec-delay</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ai800.com/archives/246/feed</wfw:commentRss>
		</item>
		<item>
		<title>浅析透明代理的重定向过程</title>
		<link>http://www.ai800.com/archives/244</link>
		<comments>http://www.ai800.com/archives/244#comments</comments>
		<pubDate>Thu, 21 Jan 2010 15:14:27 +0000</pubDate>
		<dc:creator>ai800@ai800.com</dc:creator>
		
		<category><![CDATA[技术文章]]></category>

		<category><![CDATA[NAT]]></category>

		<category><![CDATA[routeros]]></category>

		<category><![CDATA[透明代理]]></category>

		<guid isPermaLink="false">http://njnetwork.blog.35.cn/?p=244</guid>
		<description><![CDATA[浅析透明代理的重定向过程 
网络地址转换有两种特殊的形式：重定向和伪装。伪装的有书上也称为PNAT/PortNAT。
伪装是src-nat的特殊形式，它不需要定义to-address(源地址即转换成的地址)，伪装后地址自动转换为外网接口地址。
重定向是dst-nat的特殊形式，它也不需要定义to-address(即目的地址转换成的地址)，而是自动转换为内网接口地址。
注意重定向中to-ports是很重要的，to-ports的值是路由器响应请求的服务端口。如web proxy的服务端口3128，当然web proxy服务要提前配置好。
这次要详细说明的是透明webproxy用到的重定向dst-nat。
透明webproxy实际使用了路由器的两个功能：重定向和webproxy，没有重定向，路由器的webproxy功能也不可能是透明webproxy。
下面的说明也许容易让很多人晕头转向，所以准备好笔墨，一边读一边写写画画，这样利于理解。
不论是一般的dst-NAT还是重定向dst-NAT，目标地址都会被修改。关于地址转换的信息（包括被转换前的原始目标地址）被保留在路由器的内部表中。例如有一些client-ip请求访问google-ip:80的数据包，数据包经过重定向后目标地址google-ip被自动转换为路由器的内网接口laninterface-ip，端口被转换为webproxy的端口3128。转换前的原始目标地址google-ip和转换后的laninterface-ip的对应关系现在已经转换到内部表中了。下一步就是由webproxy来处理了，webproxy读取内部表中的原始目标地址google-ip，然后才能找到google的服务器。
现在回过来想一下，为什么在透明webproxy的重定向中不需要定义to-address而是将目标地址转换为内网接口地址？假设重定向中的to-address定义的不是路由器自身内网接口地址，而是指向另一个webproxy服务器的ip，这种情况我们分析一下client-ip能不能访问google-ip:80。client-ip访问google-ip:80的数据包经过第一个路由器的重定向功能，数据包的目标地址由google-ip转换成了另一个webproxy服务器的IP，于是经过改变目标地址的数据包转到了另一个webproxy服务器，而这另一个webproxy服务器并不能看到转换前的目标地址(即google-ip)，所以也就不能访问google服务器。最终client-ip不能访问google-ip的网页。所双说，透明webproxy的重定向必然定向到路由器自身的内网接口地址才能有效。
官方文档也提到，新的http协议标准支持在高层协议中保存原始目标地址(如google-ip)，虽然上文提到的"另一个webproxy服务器"无法查看数据转换前的目标地址，但可以深入数据包的内部查看高层协议中保存的网页服务器IP地址。但老协议标准不能在高层协议中保存原始目标地址，为了让webproxy服务器能获取重定向前的原始目标地址，重定向还是应定向到路由器本身内网接口地址，也就是说重定向和webproxy服务要做在同一个路由器中，这才能做到真正的透明webproxy。
]]></description>
			<content:encoded><![CDATA[<p>浅析透明代理的重定向过程 <br />
网络地址转换有两种特殊的形式：重定向和伪装。伪装的有书上也称为PNAT/PortNAT。<br />
伪装是src-nat的特殊形式，它不需要定义to-address(源地址即转换成的地址)，伪装后地址自动转换为外网接口地址。<br />
重定向是dst-nat的特殊形式，它也不需要定义to-address(即目的地址转换成的地址)，而是自动转换为内网接口地址。<br />
注意重定向中to-ports是很重要的，to-ports的值是路由器响应请求的服务端口。如web proxy的服务端口3128，当然web proxy服务要提前配置好。<br />
这次要详细说明的是透明webproxy用到的重定向dst-nat。</p>
<p>透明webproxy实际使用了路由器的两个功能：重定向和webproxy，没有重定向，路由器的webproxy功能也不可能是透明webproxy。</p>
<p>下面的说明也许容易让很多人晕头转向，所以准备好笔墨，一边读一边写写画画，这样利于理解。</p>
<p>不论是一般的dst-NAT还是重定向dst-NAT，目标地址都会被修改。关于地址转换的信息（包括被转换前的原始目标地址）被保留在路由器的内部表中。例如有一些client-ip请求访问google-ip:80的数据包，数据包经过重定向后目标地址google-ip被自动转换为路由器的内网接口laninterface-ip，端口被转换为webproxy的端口3128。转换前的原始目标地址google-ip和转换后的laninterface-ip的对应关系现在已经转换到内部表中了。下一步就是由webproxy来处理了，webproxy读取内部表中的原始目标地址google-ip，然后才能找到google的服务器。</p>
<p>现在回过来想一下，为什么在透明webproxy的重定向中不需要定义to-address而是将目标地址转换为内网接口地址？假设重定向中的to-address定义的不是路由器自身内网接口地址，而是指向另一个webproxy服务器的ip，这种情况我们分析一下client-ip能不能访问google-ip:80。client-ip访问google-ip:80的数据包经过第一个路由器的重定向功能，数据包的目标地址由google-ip转换成了另一个webproxy服务器的IP，于是经过改变目标地址的数据包转到了另一个webproxy服务器，而这另一个webproxy服务器并不能看到转换前的目标地址(即google-ip)，所以也就不能访问google服务器。最终client-ip不能访问google-ip的网页。所双说，透明webproxy的重定向必然定向到路由器自身的内网接口地址才能有效。</p>
<p>官方文档也提到，新的http协议标准支持在高层协议中保存原始目标地址(如google-ip)，虽然上文提到的"另一个webproxy服务器"无法查看数据转换前的目标地址，但可以深入数据包的内部查看高层协议中保存的网页服务器IP地址。但老协议标准不能在高层协议中保存原始目标地址，为了让webproxy服务器能获取重定向前的原始目标地址，重定向还是应定向到路由器本身内网接口地址，也就是说重定向和webproxy服务要做在同一个路由器中，这才能做到真正的透明webproxy。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ai800.com/archives/244/feed</wfw:commentRss>
		</item>
		<item>
		<title>保护内部网络</title>
		<link>http://www.ai800.com/archives/243</link>
		<comments>http://www.ai800.com/archives/243#comments</comments>
		<pubDate>Thu, 21 Jan 2010 15:13:01 +0000</pubDate>
		<dc:creator>ai800@ai800.com</dc:creator>
		
		<category><![CDATA[未分类]]></category>

		<category><![CDATA[routeros]]></category>

		<category><![CDATA[网络安全]]></category>

		<category><![CDATA[路由器]]></category>

		<category><![CDATA[防火墙]]></category>

		<guid isPermaLink="false">http://njnetwork.blog.35.cn/archives/243</guid>
		<description><![CDATA[保护内部网络-
为了保护内部网络，我们检测所有的流经路由器的数据，然后阻断不要想的数据。对于ICMP、TCP、UDP，我们分别各建一个链表。
脚本来自官方文档，可放心使用，有些如网段等参数请酌情修改。
/ip firewall filter
add chain=forward protocol=tcp connection-state=invalid action=drop comment="drop invalid connections"
add chain=forward connection-state=established action=accept comment="allow already established connections"
add chain=forward connection-state=related action=accept comment="allow related connections"
add chain=forward connection-state=new action=accept comment="allow new connections"
# 阻止互联网至今未分配的IP地址（也许永久也不会分配的地址，它们是一些特殊用途的IP，至于有什么用途，你自己查吧）:
add chain=forward src-address=0.0.0.0/8 action=drop
add chain=forward dst-address=0.0.0.0/8 action=drop
add chain=forward src-address=127.0.0.0/8 action=drop
add chain=forward dst-address=127.0.0.0/8 action=drop
add chain=forward src-address=224.0.0.0/3 action=drop
add chain=forward dst-address=224.0.0.0/3 action=drop
#跳转到新链表:
add chain=forward protocol=tcp action=jump jump-target=tcp
add chain=forward protocol=udp action=jump [...]]]></description>
			<content:encoded><![CDATA[<p>保护内部网络-</p>
<p>为了保护内部网络，我们检测所有的流经路由器的数据，然后阻断不要想的数据。对于ICMP、TCP、UDP，我们分别各建一个链表。</p>
<p>脚本来自官方文档，可放心使用，有些如网段等参数请酌情修改。<br />
/ip firewall filter<br />
add chain=forward protocol=tcp connection-state=invalid action=drop comment="drop invalid connections"<br />
add chain=forward connection-state=established action=accept comment="allow already established connections"<br />
add chain=forward connection-state=related action=accept comment="allow related connections"<br />
add chain=forward connection-state=new action=accept comment="allow new connections"<br />
# 阻止互联网至今未分配的IP地址（也许永久也不会分配的地址，它们是一些特殊用途的IP，至于有什么用途，你自己查吧）:</p>
<p>add chain=forward src-address=0.0.0.0/8 action=drop<br />
add chain=forward dst-address=0.0.0.0/8 action=drop<br />
add chain=forward src-address=127.0.0.0/8 action=drop<br />
add chain=forward dst-address=127.0.0.0/8 action=drop<br />
add chain=forward src-address=224.0.0.0/3 action=drop<br />
add chain=forward dst-address=224.0.0.0/3 action=drop</p>
<p>#跳转到新链表:<br />
add chain=forward protocol=tcp action=jump jump-target=tcp<br />
add chain=forward protocol=udp action=jump jump-target=udp<br />
add chain=forward protocol=icmp action=jump jump-target=icmp</p>
<p>#创建TCP链表，在此链表中阻止一些TCP端口:<br />
add chain=tcp protocol=tcp dst-port=69 action=drop comment="deny TFTP"<br />
add chain=tcp protocol=tcp dst-port=111 action=drop comment="deny RPC portmapper"<br />
add chain=tcp protocol=tcp dst-port=135 action=drop comment="deny RPC portmapper"<br />
add chain=tcp protocol=tcp dst-port=137-139 action=drop comment="deny NBT"<br />
add chain=tcp protocol=tcp dst-port=445 action=drop comment="deny cifs"<br />
add chain=tcp protocol=tcp dst-port=2049 action=drop comment="deny NFS"<br />
add chain=tcp protocol=tcp dst-port=12345-12346 action=drop comment="deny NetBus"<br />
add chain=tcp protocol=tcp dst-port=20034 action=drop comment="deny NetBus"<br />
add chain=tcp protocol=tcp dst-port=3133 action=drop comment="deny BackOriffice"<br />
add chain=tcp protocol=tcp dst-port=67-68 action=drop comment="deny DHCP"<br />
#在UDP链表阻止一些UDP端口:<br />
add chain=udp protocol=udp dst-port=69 action=drop comment="deny TFTP"<br />
add chain=udp protocol=udp dst-port=111 action=drop comment="deny PRC portmapper"<br />
add chain=udp protocol=udp dst-port=135 action=drop comment="deny PRC portmapper"<br />
add chain=udp protocol=udp dst-port=137-139 action=drop comment="deny NBT"<br />
add chain=udp protocol=udp dst-port=2049 action=drop comment="deny NFS"<br />
add chain=udp protocol=udp dst-port=3133 action=drop comment="deny BackOriffice"<br />
#在ICMP链表中允许特殊的ICMP代码:<br />
add chain=icmp protocol=icmp icmp-options=0:0 action=accept comment="drop invalid connections"<br />
add chain=icmp protocol=icmp icmp-options=3:0 action=accept comment="allow established connections"<br />
add chain=icmp protocol=icmp icmp-options=3:1 action=accept comment="allow already established connections"<br />
add chain=icmp protocol=icmp icmp-options=4:0 action=accept comment="allow source quench"<br />
add chain=icmp protocol=icmp icmp-options=8:0 action=accept comment="allow echo request"<br />
add chain=icmp protocol=icmp icmp-options=11:0 action=accept comment="allow time exceed"<br />
add chain=icmp protocol=icmp icmp-options=12:0 action=accept comment="allow parameter bad"<br />
add chain=icmp action=drop comment="deny all other types"</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ai800.com/archives/243/feed</wfw:commentRss>
		</item>
		<item>
		<title>保护你的RouterOS路由器</title>
		<link>http://www.ai800.com/archives/241</link>
		<comments>http://www.ai800.com/archives/241#comments</comments>
		<pubDate>Thu, 21 Jan 2010 15:11:09 +0000</pubDate>
		<dc:creator>ai800@ai800.com</dc:creator>
		
		<category><![CDATA[技术文章]]></category>

		<category><![CDATA[网络安全]]></category>

		<category><![CDATA[路由器]]></category>

		<category><![CDATA[防火墙]]></category>

		<guid isPermaLink="false">http://njnetwork.blog.35.cn/?p=241</guid>
		<description><![CDATA[保护你的RouterOS路由器
保护你的路由器，光设置密码还不够，你还要设置包过滤。所有目的指向你路由器的数据包都进入防火墙的input链表。
以下各条命令均针对目的指向路由器本身的连接，它们的作用分别是丢弃无效的连接、允许确认的连接、允许UDP连接、允许ICMP(ping用到的协议)、允许内网连接、丢弃其它它连接。
脚本来自官方文档，可放心使用，其中192.168.0.0/24改为你自己的内网肉段。为了更安全，你也可以丢弃ICMP，但这不方便在外网进行路由器ping测试。
 
/ ip firewall filter
add chain=input connection-state=invalid action=drop \
comment="Drop Invalid connections"
add chain=input connection-state=established action=accept \
comment="Allow Established connections"
add chain=input protocol=udp action=accept \
comment="Allow UDP"
add chain=input protocol=icmp action=accept \
comment="Allow ICMP"
add chain=input src-address=192.168.0.0/24 action=accept \
comment="Allow access to router from known network"
add chain=input action=drop comment="Drop anything else"
]]></description>
			<content:encoded><![CDATA[<p>保护你的RouterOS路由器</p>
<p>保护你的路由器，光设置密码还不够，你还要设置包过滤。所有目的指向你路由器的数据包都进入防火墙的input链表。</p>
<p>以下各条命令均针对目的指向路由器本身的连接，它们的作用分别是丢弃无效的连接、允许确认的连接、允许UDP连接、允许ICMP(ping用到的协议)、允许内网连接、丢弃其它它连接。</p>
<p>脚本来自官方文档，可放心使用，其中192.168.0.0/24改为你自己的内网肉段。为了更安全，你也可以丢弃ICMP，但这不方便在外网进行路由器ping测试。</p>
<p> </p>
<p>/ ip firewall filter<br />
add chain=input connection-state=invalid action=drop \<br />
comment="Drop Invalid connections"<br />
add chain=input connection-state=established action=accept \<br />
comment="Allow Established connections"<br />
add chain=input protocol=udp action=accept \<br />
comment="Allow UDP"<br />
add chain=input protocol=icmp action=accept \<br />
comment="Allow ICMP"<br />
add chain=input src-address=192.168.0.0/24 action=accept \<br />
comment="Allow access to router from known network"<br />
add chain=input action=drop comment="Drop anything else"</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ai800.com/archives/241/feed</wfw:commentRss>
		</item>
		<item>
		<title>VPN连接中推荐减小MSS值</title>
		<link>http://www.ai800.com/archives/239</link>
		<comments>http://www.ai800.com/archives/239#comments</comments>
		<pubDate>Thu, 21 Jan 2010 14:46:15 +0000</pubDate>
		<dc:creator>ai800@ai800.com</dc:creator>
		
		<category><![CDATA[未分类]]></category>

		<guid isPermaLink="false">http://njnetwork.blog.35.cn/?p=239</guid>
		<description><![CDATA[VPN连接中推荐减小MSS值 -
/ip firewall mangle add out-interface=pppoe-out protocol=tcp tcp-flags=syn action=change-mss new-mss=1300 chain=forward
VPN连接减小MSS值的原因：众所周知，VPN连接因为要对数据包进行再封装，所以数据包要小点才不会出现引发灾难的"巨人包"。一般情况大的数据包会在进入VPN连接前自动分段然后再封装。但有的数据包有DF标识(即标识为不分断)，如果这些不许分断的包又恰巧是大包，如果再封装就成了“巨人包”了。为了对付这些有DF标识的大包，可以强行让其分段，这个功能是通过ROUTEROS的mangle功能做到的。
上面命令的作用就是当准备从pppoe-out出去的数据包如果mss>1300，则强行进行分段，然后再进入VPN连接。
]]></description>
			<content:encoded><![CDATA[<p>VPN连接中推荐减小MSS值 -</p>
<p>/ip firewall mangle add out-interface=pppoe-out protocol=tcp tcp-flags=syn action=change-mss new-mss=1300 chain=forward</p>
<p>VPN连接减小MSS值的原因：众所周知，VPN连接因为要对数据包进行再封装，所以数据包要小点才不会出现引发灾难的"巨人包"。一般情况大的数据包会在进入VPN连接前自动分段然后再封装。但有的数据包有DF标识(即标识为不分断)，如果这些不许分断的包又恰巧是大包，如果再封装就成了“巨人包”了。为了对付这些有DF标识的大包，可以强行让其分段，这个功能是通过ROUTEROS的mangle功能做到的。<br />
上面命令的作用就是当准备从pppoe-out出去的数据包如果mss>1300，则强行进行分段，然后再进入VPN连接。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ai800.com/archives/239/feed</wfw:commentRss>
		</item>
		<item>
		<title>RouterOS中设置非P2P数据包优先使用带宽</title>
		<link>http://www.ai800.com/archives/236</link>
		<comments>http://www.ai800.com/archives/236#comments</comments>
		<pubDate>Thu, 21 Jan 2010 14:44:30 +0000</pubDate>
		<dc:creator>ai800@ai800.com</dc:creator>
		
		<category><![CDATA[技术文章]]></category>

		<guid isPermaLink="false">http://njnetwork.blog.35.cn/?p=236</guid>
		<description><![CDATA[RouterOS中设置非P2P数据包优先使用带宽 
先看代码后看说明：
/ip firewall mangle add chain=forward p2p=all-p2p action=mark-connection new-connection-mark=p2p_conn
/ip firewall mangle add chain=forward connection-mark=p2p_conn action=mark-packet new-packet-mark=p2p
/ip firewall mangle add chain=forward connection-mark=!p2p_conn action=mark-packet new-packet-mark=other
 
/queue tree add parent=Public packet-mark=p2p limit-at=1000000 max-limit=100000000 priority=8
/queue tree add parent=Local packet-mark=p2p limit-at=1000000 max-limit=100000000 priority=8
/queue tree add parent=Public packet-mark=other limit-at=1000000 max-limit=100000000 priority=1
/queue tree add parent=Local packet-mark=other limit-at=1000000 max-limit=100000000 priority=1
 
带宽分配的过程：
第一步，根据数据包mark类优先级以"limit-at"速率分配带宽，
第二步，根据数据包mark类优先级以"max-limit" - "limit-at"分配剩下的带宽。
limit-at可理解为承诺速率，一般物理接入带宽都远大于limit-at，所以承诺速率还是可以达到的。
max-limit是最大速率。
上面的过程说明太抽象，下面是以上命令的效果，看了效果你也许容易就明白了。
当物理接入带宽为100M，且非P2P连接和P2P连接都试图以最高速率下载时，非P2P连接最终速率是99M，P2P连接的最终速率是1M。
当物理接入带宽为100M，且非P2P连接因客观因素只能以50M下载时，非P2P连接最终速率是50M，P2P连接的最终速率是50M。
物理接入带宽太小的特殊情况：
当物理接入带宽为1.5M，且非P2P连接和P2P连接都试图以最高速率下载时，非P2P连接最终速率是1M，P2P连接的最终速率是0.5M。
当物理接入带宽为0.5M，且非P2P连接和P2P连接都试图以最高速率下载时，由于非P2P连接承诺速率是1M且优先级高，所以把带宽占用完，P2P无法连接。
]]></description>
			<content:encoded><![CDATA[<p>RouterOS中设置非P2P数据包优先使用带宽 <br />
先看代码后看说明：</p>
<p>/ip firewall mangle add chain=forward p2p=all-p2p action=mark-connection new-connection-mark=p2p_conn<br />
/ip firewall mangle add chain=forward connection-mark=p2p_conn action=mark-packet new-packet-mark=p2p<br />
/ip firewall mangle add chain=forward connection-mark=!p2p_conn action=mark-packet new-packet-mark=other</p>
<p> </p>
<p>/queue tree add parent=Public packet-mark=p2p limit-at=1000000 max-limit=100000000 priority=8<br />
/queue tree add parent=Local packet-mark=p2p limit-at=1000000 max-limit=100000000 priority=8<br />
/queue tree add parent=Public packet-mark=other limit-at=1000000 max-limit=100000000 priority=1<br />
/queue tree add parent=Local packet-mark=other limit-at=1000000 max-limit=100000000 priority=1</p>
<p> </p>
<p>带宽分配的过程：<br />
第一步，根据数据包mark类优先级以"limit-at"速率分配带宽，<br />
第二步，根据数据包mark类优先级以"max-limit" - "limit-at"分配剩下的带宽。<br />
limit-at可理解为承诺速率，一般物理接入带宽都远大于limit-at，所以承诺速率还是可以达到的。<br />
max-limit是最大速率。</p>
<p>上面的过程说明太抽象，下面是以上命令的效果，看了效果你也许容易就明白了。<br />
当物理接入带宽为100M，且非P2P连接和P2P连接都试图以最高速率下载时，非P2P连接最终速率是99M，P2P连接的最终速率是1M。<br />
当物理接入带宽为100M，且非P2P连接因客观因素只能以50M下载时，非P2P连接最终速率是50M，P2P连接的最终速率是50M。<br />
物理接入带宽太小的特殊情况：<br />
当物理接入带宽为1.5M，且非P2P连接和P2P连接都试图以最高速率下载时，非P2P连接最终速率是1M，P2P连接的最终速率是0.5M。<br />
当物理接入带宽为0.5M，且非P2P连接和P2P连接都试图以最高速率下载时，由于非P2P连接承诺速率是1M且优先级高，所以把带宽占用完，P2P无法连接。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ai800.com/archives/236/feed</wfw:commentRss>
		</item>
		<item>
		<title>多用户平等分享带宽</title>
		<link>http://www.ai800.com/archives/233</link>
		<comments>http://www.ai800.com/archives/233#comments</comments>
		<pubDate>Wed, 16 Dec 2009 09:03:34 +0000</pubDate>
		<dc:creator>ai800@ai800.com</dc:creator>
		
		<category><![CDATA[技术文章]]></category>

		<category><![CDATA[分配]]></category>

		<category><![CDATA[带宽]]></category>

		<category><![CDATA[平等]]></category>

		<category><![CDATA[控制]]></category>

		<category><![CDATA[流量]]></category>

		<guid isPermaLink="false">http://njnetwork.blog.35.cn/?p=233</guid>
		<description><![CDATA[多用户平等分享带宽
 这个例子说明的是如何使多个在线用户平等分享10M下载和2M上传带宽，这些用户所在的网络是192.168.0.0/24。如果主机A正以2M速度下载文件，那么主机B就可以得到8M的下载带宽，反之亦然。有可能这这么一种情况，两台主机都想以最大速度下载，这时每台主机只能得到5M的下载速度。上传的情形和下载的情形一样。下面这个设置也适合多于2个用户的情况。
首先，标记所有来自本地网络192.168.0.0/24的数据，标记名为users。
 
/ip firewall mangle add chain=forward src-address=192.168.0.0/24 \
action=mark-connection new-connection-mark=users-con
/ip firewall mangle add connection-mark=users-con action=mark-packet \
new-packet-mark=users chain=forward
现在我们将添加2个新的PCQ类型。第一PCQ类型命名为pcq-download，它根据目的地址把所有的数据流分组。当我们把pcq-download这个PCQ类型附加到Local接口，它将为每一个向192.168.0.0/24网络下载数据的目的地址（用户）创建一个动态的队列。第二QCQ类型命名为pcq-upload，它将根据源地址对数据交流进行分组。我们将把这个PCQ类型附加到Public接口上，然后它会为每个从192.168.0.0/24本地网络向Internet上传数据的用户创建一个动态的队列。
 
/queue type add name=pcq-download kind=pcq pcq-classifier=dst-address
/queue type add name=pcq-upload kind=pcq pcq-classifier=src-address
最后，创建一个队列树用来下载数据：
 
/queue tree add name=Download parent=Local max-limit=10240000
/queue tree add parent=Download queue=pcq-download packet-mark=users
再创建一个队列树用来上传数据：
 
/queue tree add name=Upload parent=Public max-limit=2048000
/queue tree add parent=Upload queue=pcq-upload packet-mark=users
 注意：如果你的网络服务提供商不能保证提供给你一个固定带宽的线路，你可以为上传和下载各使用一个队列，每个队列直接附加到各自的接口上。
 /queue tree add parent=Local queue=pcq-download packet-mark=users
 /queue tree add parent=Public queue=pcq-upload packet-mark=users
]]></description>
			<content:encoded><![CDATA[<p align="left"><strong><em><span style="font-family: 宋体"><span style="font-size: 13.5pt">多<span class="t_tag">用户</span>平等分享带宽</span></span></em></strong><strong><em></em></strong></p>
<p> <span style="font-family: 宋体"><span style="font-size: 10pt">这个例子说明的是如何使多个在线用户平等分享</span></span><span style="font-size: 10pt">10M</span><span style="font-family: 宋体"><span style="font-size: 10pt"><span class="t_tag">下载</span>和</span></span><span style="font-size: 10pt">2M</span><span style="font-family: 宋体"><span style="font-size: 10pt">上传带宽，这些用户所在的<span class="t_tag">网络</span>是</span></span><span style="font-size: 10pt">192.168.0.0/24</span><span style="font-family: 宋体"><span style="font-size: 10pt">。如果主机</span></span><span style="font-size: 10pt">A</span><span style="font-family: 宋体"><span style="font-size: 10pt">正以</span></span><span style="font-size: 10pt">2M</span><span style="font-family: 宋体"><span style="font-size: 10pt">速度下载<span class="t_tag">文件</span>，那么主机</span></span><span style="font-size: 10pt">B</span><span style="font-family: 宋体"><span style="font-size: 10pt">就可以得到</span></span><span style="font-size: 10pt">8M</span><span style="font-family: 宋体"><span style="font-size: 10pt">的下载带宽，反之亦然。有可能这这么一种情况，两台主机都想以最大速度下载，这时每台主机只能得到</span></span><span style="font-size: 10pt">5M</span><span style="font-family: 宋体"><span style="font-size: 10pt">的下载速度。上传的情形和下载的情形一样。下面这个<span class="t_tag">设置</span>也适合多于</span></span><span style="font-size: 10pt">2</span><span style="font-family: 宋体"><span style="font-size: 10pt">个用户的情况。</span></span></p>
<p><span style="font-family: 宋体"><span style="font-size: 10pt">首先，标记所有来自本地网络</span></span><span style="font-size: 10pt">192.168.0.0/24</span><span style="font-family: 宋体"><span style="font-size: 10pt">的<span class="t_tag">数据</span>，标记名为</span></span><span style="font-size: 10pt">users</span><span style="font-family: 宋体"><span style="font-size: 10pt">。</span></span></p>
<p align="left"> </p>
<p><span style="font-size: 9pt">/ip firewall mangle add chain=forward src-address=192.168.0.0/24 \</span><span style="font-size: 9pt"><br />
action=mark-connection new-connection-mark=users-con</span></p>
<p><span style="font-size: 9pt">/ip firewall mangle add connection-mark=users-con action=mark-packet \</span><span style="font-size: 9pt"><br />
new-packet-mark=users chain=forward</span></p>
<p><span style="font-family: 宋体"><span style="font-size: 10pt">现在我们将添加</span></span><span style="font-size: 10pt">2</span><span style="font-family: 宋体"><span style="font-size: 10pt">个新的</span></span><span style="font-size: 10pt">PCQ</span><span style="font-family: 宋体"><span style="font-size: 10pt">类型。第一</span></span><span style="font-size: 10pt">PCQ</span><span style="font-family: 宋体"><span style="font-size: 10pt">类型命名为</span></span><span style="font-size: 10pt">pcq-download</span><span style="font-family: 宋体"><span style="font-size: 10pt">，它根据目的<span class="t_tag">地址</span>把所有的数据流分组。当我们把</span></span><span style="font-size: 10pt">pcq-download</span><span style="font-family: 宋体"><span style="font-size: 10pt">这个</span></span><span style="font-size: 10pt">PCQ</span><span style="font-family: 宋体"><span style="font-size: 10pt">类型附加到</span></span><span style="font-size: 10pt">Local</span><span style="font-family: 宋体"><span style="font-size: 10pt">接口，它将为每一个向</span></span><span style="font-size: 10pt">192.168.0.0/24</span><span style="font-family: 宋体"><span style="font-size: 10pt">网络下载数据的目的地址（用户）创建一个动态的队列。第二</span></span><span style="font-size: 10pt">QCQ</span><span style="font-family: 宋体"><span style="font-size: 10pt">类型命名为</span></span><span style="font-size: 10pt">pcq-upload</span><span style="font-family: 宋体"><span style="font-size: 10pt">，它将根据源地址对数据交流进行分组。我们将把这个</span></span><span style="font-size: 10pt">PCQ</span><span style="font-family: 宋体"><span style="font-size: 10pt">类型附加到</span></span><span style="font-size: 10pt">Public</span><span style="font-family: 宋体"><span style="font-size: 10pt">接口上，然后它会为每个从</span></span><span style="font-size: 10pt">192.168.0.0/24</span><span style="font-family: 宋体"><span style="font-size: 10pt">本地网络向</span></span><span style="font-size: 10pt">Internet</span><span style="font-family: 宋体"><span style="font-size: 10pt">上传数据的用户创建一个动态的队列。</span></span></p>
<p align="left"> </p>
<p><span style="font-size: 9pt">/queue type add <span class="t_tag">name</span>=pcq-download kind=pcq pcq-classifier=dst-address<br />
</span><span style="font-size: 9pt">/queue type add name=pcq-upload kind=pcq pcq-classifier=src-address</span></p>
<p><span style="font-family: 宋体"><span style="font-size: 10pt">最后，创建一个队列树用来下载数据：</span></span></p>
<p align="left"> </p>
<p><span style="font-size: 9pt">/queue tree add name=Download parent=Local max-limit=10240000<br />
</span><span style="font-size: 9pt">/queue tree add parent=Download queue=pcq-download packet-mark=users</span></p>
<p><span style="font-family: 宋体"><span style="font-size: 10pt">再创建一个队列树用来上传数据：</span></span></p>
<p align="left"> </p>
<p><span style="font-size: 9pt">/queue tree add name=Upload parent=Public max-limit=2048000<br />
</span><span style="font-size: 9pt">/queue tree add parent=Upload queue=pcq-upload packet-mark=users</span></p>
<p align="left"> <strong><span style="font-family: 宋体"><span style="font-size: 10pt">注意：</span></span></strong><span style="font-family: 宋体"><span style="font-size: 10pt">如果你的网络服务提供商不能保证提供给你一个固定带宽的<span class="t_tag">线路</span>，你可以为上传和下载各使用一个队列，每个队列直接附加到各自的接口上。</span></span></p>
<p align="left"> <span style="font-size: 9pt">/queue tree add parent=Local queue=pcq-download packet-mark=users<br />
</span> <span style="font-size: 9pt">/queue tree add parent=Public queue=pcq-upload packet-mark=users</span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ai800.com/archives/233/feed</wfw:commentRss>
		</item>
		<item>
		<title>非P2P数据包优先使用带宽</title>
		<link>http://www.ai800.com/archives/230</link>
		<comments>http://www.ai800.com/archives/230#comments</comments>
		<pubDate>Tue, 15 Dec 2009 02:21:05 +0000</pubDate>
		<dc:creator>ai800@ai800.com</dc:creator>
		
		<category><![CDATA[未分类]]></category>

		<guid isPermaLink="false">http://njnetwork.blog.35.cn/?p=230</guid>
		<description><![CDATA[RouterOS中设置非P2P数据包优先使用带宽
先看代码后看说明：

/ip firewall mangle add chain=forward p2p=all-p2p action=mark-connection new-connection-mark=p2p_conn
/ip firewall mangle add chain=forward connection-mark=p2p_conn action=mark-packet new-packet-mark=p2p
/ip firewall mangle add chain=forward connection-mark=!p2p_conn action=mark-packet new-packet-mark=other
 
/queue tree add parent=Public packet-mark=p2p limit-at=1000000 max-limit=100000000 priority=8
/queue tree add parent=Local packet-mark=p2p limit-at=1000000 max-limit=100000000 priority=8
/queue tree add parent=Public packet-mark=other limit-at=1000000 max-limit=100000000 priority=1
/queue tree add parent=Local packet-mark=other limit-at=1000000 max-limit=100000000 priority=1
 
 
 
带宽分配的过程：
第一步，根据数据包mark类优先级以"limit-at"速率分配带宽，
第二步，根据数据包mark类优先级以"max-limit" - "limit-at"分配剩下的带宽。
limit-at可理解为承诺速率，一般物理接入带宽都远大于limit-at，所以承诺速率还是可以达到的。
max-limit是最大速率。
上面的过程说明太抽象，下面是以上命令的效果，看了效果你也许容易就明白了。
当物理接入带宽为100M，且非P2P连接和P2P连接都试图以最高速率下载时，非P2P连接最终速率是99M，P2P连接的最终速率是1M。
当物理接入带宽为100M，且非P2P连接因客观因素只能以50M下载时，非P2P连接最终速率是50M，P2P连接的最终速率是50M。
物理接入带宽太小的特殊情况：
当物理接入带宽为1.5M，且非P2P连接和P2P连接都试图以最高速率下载时，非P2P连接最终速率是1M，P2P连接的最终速率是0.5M。
当物理接入带宽为0.5M，且非P2P连接和P2P连接都试图以最高速率下载时，由于非P2P连接承诺速率是1M且优先级高，所以把带宽占用完，P2P无法连接。
]]></description>
			<content:encoded><![CDATA[<p>RouterOS中设置非P2P数据包优先使用带宽<br />
先看代码后看说明：</p>
<p><span id="more-230"></span></p>
<p>/ip firewall mangle add chain=forward p2p=all-p2p action=mark-connection new-connection-mark=p2p_conn<br />
/ip firewall mangle add chain=forward connection-mark=p2p_conn action=mark-packet new-packet-mark=p2p<br />
/ip firewall mangle add chain=forward connection-mark=!p2p_conn action=mark-packet new-packet-mark=other</p>
<p> </p>
<p>/queue tree add parent=Public packet-mark=p2p limit-at=1000000 max-limit=100000000 priority=8<br />
/queue tree add parent=Local packet-mark=p2p limit-at=1000000 max-limit=100000000 priority=8<br />
/queue tree add parent=Public packet-mark=other limit-at=1000000 max-limit=100000000 priority=1<br />
/queue tree add parent=Local packet-mark=other limit-at=1000000 max-limit=100000000 priority=1</p>
<p> </p>
<p> </p>
<p> </p>
<p>带宽分配的过程：<br />
第一步，根据数据包mark类优先级以"limit-at"速率分配带宽，<br />
第二步，根据数据包mark类优先级以"max-limit" - "limit-at"分配剩下的带宽。<br />
limit-at可理解为承诺速率，一般物理接入带宽都远大于limit-at，所以承诺速率还是可以达到的。<br />
max-limit是最大速率。</p>
<p>上面的过程说明太抽象，下面是以上命令的效果，看了效果你也许容易就明白了。<br />
当物理接入带宽为100M，且非P2P连接和P2P连接都试图以最高速率下载时，非P2P连接最终速率是99M，P2P连接的最终速率是1M。<br />
当物理接入带宽为100M，且非P2P连接因客观因素只能以50M下载时，非P2P连接最终速率是50M，P2P连接的最终速率是50M。<br />
物理接入带宽太小的特殊情况：<br />
当物理接入带宽为1.5M，且非P2P连接和P2P连接都试图以最高速率下载时，非P2P连接最终速率是1M，P2P连接的最终速率是0.5M。<br />
当物理接入带宽为0.5M，且非P2P连接和P2P连接都试图以最高速率下载时，由于非P2P连接承诺速率是1M且优先级高，所以把带宽占用完，P2P无法连接。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ai800.com/archives/230/feed</wfw:commentRss>
		</item>
	</channel>
</rss>
