Linux的高级路由和流量控制

本文详细解析了网络配置信息,包括不同类型的网络接口及其属性,并介绍了如何查看和理解ARP缓存,揭示了计算机在网络通信中如何识别目标设备。

ip link list

1: lo: <LOOPBACK,UP> mtu 3924 qdisc noqueue
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: dummy: <BROADCAST,NOARP> mtu 1500 qdisc noop
link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff
3: eth0: <BROADCAST,MULTICAST,PROMISC,UP> mtu 1400 qdisc pfifo_fast qlen 100
link/ether 48:54:e8:2a:47:16 brd ff:ff:ff:ff:ff:ff
4: eth1: <BROADCAST,MULTICAST,PROMISC,UP> mtu 1500 qdisc pfifo_fast qlen 100
link/ether 00:e0:4c:39:24:78 brd ff:ff:ff:ff:ff:ff
3764: ppp0: <POINTOPOINT,MULTICAST,NOARP,UP> mtu 1492 qdisc pfifo_fast qlen 10
link/ppp
你的结果可能有所区别,但上述显示了我家里NAT路由器的情况。我将只解释输出中并非全部直接相关的部分。因为并不是所有部分都与我们的话题有关,所以我只会解释输出的一部分。
我们首先看到了 loopback 接口。While your computer may function somewhat without one, I'd advise against it. MTU (最大传输单元)尺寸为 3924 字节,并且不应该参与队列。这是因为 loopback 接口完全是内核想象出来的、并不存在的接口。
现在我们跳过这个无关的接口,它应该并不实际存在于你的机器上。然后就是两个物理网络接口,一个接在我的 cable modem 上,另一个接到我家里的以太网端上。再下面,我们看见了一个 ppp0 接口。
应该指出,我们没有看到 IP 地址。iproute 切断了“链路”和“IP 地址”两个概念的直接联系。当使用 IP 别名的时候,IP地址的概念显得更加不相关了。
尽管如此,还是显示出了标识以太网卡硬件的 MAC 地址。


[ahu@home ahu]$ ip address show
1: lo: <LOOPBACK,UP> mtu 3924 qdisc noqueue
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 brd 127.255.255.255 scope host lo
2: dummy: <BROADCAST,NOARP> mtu 1500 qdisc noop
7
link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff
3: eth0: <BROADCAST,MULTICAST,PROMISC,UP> mtu 1400 qdisc pfifo_fast qlen 100
link/ether 48:54:e8:2a:47:16 brd ff:ff:ff:ff:ff:ff
inet 10.0.0.1/8 brd 10.255.255.255 scope global eth0
4: eth1: <BROADCAST,MULTICAST,PROMISC,UP> mtu 1500 qdisc pfifo_fast qlen 100
link/ether 00:e0:4c:39:24:78 brd ff:ff:ff:ff:ff:ff
3764: ppp0: <POINTOPOINT,MULTICAST,NOARP,UP> mtu 1492 qdisc pfifo_fast qlen 10
link/ppp
inet 212.64.94.251 peer 212.64.94.1/32 scope global ppp0
这里包含了更多信息。显示了我们所有的地址,以及这些地址属于哪些网卡。“inet”表示Internet (IPv4)。还有很多其它的地址类型,但现在还没有涉及到。



[ahu@home ahu]$ ip route show
212.64.94.1 dev ppp0 proto kernel scope link src 212.64.94.251
10.0.0.0/8 dev eth0 proto kernel scope link src 10.0.0.1
127.0.0.0/8 dev lo scope link
default via 212.64.94.1 dev ppp0
字面的意思相当清楚。前4行的输出明确地说明了ip address show的意思,最后一行说明了世界的其它部分可以通过我们的缺省网关212.64.94.1找到。我们通过“via”这个词断定这是一个网关,我们要把数据包交给它。这就是我们要


现在我们来看一看具体的工作过程。你可以这样察看你的ARP表(缓冲):
[root@espa041 /home/src/iputils]# ip neigh show
9.3.76.42 dev eth0 lladdr 00:60:08:3f:e9:f9 nud reachable
9.3.76.1 dev eth0 lladdr 00:06:29:21:73:c8 nud reachable
你可以看到,我的机器 espa041 (9.3.76.41) 知道如何找到 espa042 (9.3.76.42) 和espagate (9.3.76.1)。现在让我们往缓冲中添加另一台机器。
[root@espa041 /home/paulsch/.gnome-desktop]# ping -c 1 espa043
PING espa043.austin.ibm.com (9.3.76.43) from 9.3.76.41 : 56(84) bytes of data.
64 bytes from 9.3.76.43: icmp_seq=0 ttl=255 time=0.9 ms
--- espa043.austin.ibm.com ping statistics ---
1 packets transmitted, 1 packets received, 0% packet loss
round-trip min/avg/max = 0.9/0.9/0.9 ms
[root@espa041 /home/src/iputils]# ip neigh show
9.3.76.43 dev eth0 lladdr 00:06:29:21:80:20 nud reachable
9.3.76.42 dev eth0 lladdr 00:60:08:3f:e9:f9 nud reachable
9.3.76.1 dev eth0 lladdr 00:06:29:21:73:c8 nud reachable
由于espa041试图联络espa043,espa043的硬件地址已经添加到ARP缓冲里了。所以直到espa043的记录失效以前(也就是两个机器间长时间没有通讯),espa041 知道如何找到espa043,也就不必频繁地进行ARP询问了。

现在让我们来删除 espa043 的ARP缓冲:
[root@espa041 /home/src/iputils]# ip neigh delete 9.3.76.43 dev eth0
[root@espa041 /home/src/iputils]# ip neigh show
9.3.76.43 dev eth0 nud failed
9.3.76.42 dev eth0 lladdr 00:60:08:3f:e9:f9 nud reachable
9.3.76.1 dev eth0 lladdr 00:06:29:21:73:c8 nud stale
现在espa041 已经忘记了espa043 的MAC地址,如果下次它要与espa043 通讯,需要再次发送 ARP询问。你在espagate (9.3.76.1) 上也会发现以上输出已经变成了"stale"状态。这意味着MAC地址仍然是在册,但是接下来第一次通讯的时候需要确认一下。

待续。。。

目录 第1章 贡献 1 第2章 简介 2 2.1. 除外责任与许可 2 2.2. 预备知识 2 2.3. LINUX能为你做什么 3 2.4. 内务声明 3 2.5. 访问,CVS提交更新 4 2.6. 邮件列表 4 2.7. 本文档的布局 4 第3章 介绍 IPROUTE2 6 3.1 为什么使用 IPROUTE2 6 3.2 IPROUTE2 概览 6 3.3 先决条件 6 3.4 浏览你的当前配置 7 3.4.1. 让ip显示我们的链路 7 3.4.2. 让ip显示我们的 IP 地址 7 3.4.3. 让ip显示路由 8 3.5. ARP 9 第4章 规则——路由策略数据库 11 4.1. 简单的源策略路由 11 4.2. 多重上连ISP的路由 12 4.2.1. 流量分割 13 4.2.2. 负载均衡 14 第5章 GRE 其他隧道 15 5.1. 关于隧道的几点注释 15 5.2. IP-IN-IP 隧道 15 5.3. GRE 隧道 16 4 5.3.1. IPv4隧道 16 5.3.2. IPv6隧道 18 5.4. 用户级隧道 18 第6章 用CISCO6BONE实现IPV6隧道 19 6.1. IPV6隧道 19 第7章 IPSEC:INTERNET上安全的IP 22 7.1. 从手动密钥管理开始 22 7.2. 自动密钥管理 25 7.2.1. 理论 26 7.2.2. 举例 26 7.2.3. 使用X.509证书进行自动密钥管理 29 7.3. IPSEC隧道 32 7.4. 其它IPSEC软件 33 7.5. IPSEC与其它系统的互操作 33 7.5.1. Windows 33 第8章 多播路由 34 第9章 带宽管理的队列规定 36 9.1. 解释队列队列规定 36 9.2. 简单的无类队列规定 37 9.2.1. pfifo_fast 37 9.2.2. 令牌桶过滤器(TBF) 39 9.2.3. 随机公平队列(SFQ) 41 9.3. 关于什么时候用哪种队列的建议 42 9.4. 术语 43 9.5. 分类的队列规定 45 9.5.1. 分类的队列规定及其类中的数据流向 45 9.5.2. 队列规定家族:根,句柄,兄弟父辈 45 9.5.3. PRIO队列规定 46 9.5.4. 著名的CBQ队列规定 48 9.5.5. HTB(Hierarchical Token Bucket, 分层的令牌桶) 54 5 9.6. 使用过滤器对数据包进行分类 55 9.6.1. 过滤器的一些简单范例 56 9.6.2. 常用到的过滤命令一览 57 9.7. IMQ(INTERMEDIATE QUEUEING DEVICE,中介队列设备) 58 9.7.1. 配置范例 58 第10章 多网卡的负载均衡 60 10.1. 告诫 61 10.2. 其它可能性 61 第11章 NETFILTERIPROUTE——给数据包作标记 62 第12章 对包进行分类的高级过滤器 64 12.1. U32分类器 65 12.1.1. U32选择器 65 12.1.2. 普通选择器 66 12.1.3. 特殊选择器 67 12.2. 路由分类器 67 12.3. 管制分类器 68 12.3.1. 管制的方式 68 12.3.2. 越限动作 69 12.3.3. 范例 70 12.4. 当过滤器很多时如何使用散列表 70 第13章 内核网络参数 72 13.1. 反向路径过滤 72 13.2. 深层设置 73 13.2.1. ipv4一般设置 73 13.2.2. 网卡的分别设置 78 13.2.3. 邻居策略 79 13.2.4. 路由设置 80 第14章 不经常使用的高级队列规定 82 14.1. BFIFO/PFIFO 82 14.1.1. 参数与使用 82 6 14.2. CLARK-SHENKER-ZHANG算法 (CSZ) 82 14.3. DSMARK 83 14.3.1. 介绍 83 14.3.2. Dsmark与什么相关? 83 14.3.3. Differentiated Services指导 84 14.3.4. 使用Dsmark 84 14.3.5. SCH_DSMARK如何工作 84 14.3.6. TC_INDEX过滤器 85 14.4. 入口队列规定 87 14.4.1. 参数与使用 87 14.5. RED(RANDOM EARLY DETECTION,随机提前检测) 87 14.6. GRED(GENERIC RANDOM EARLY DETECTION,一般的随机提前检测) 88 14.7. VC/ATM模拟 89 14.8. WRR(WEIGHTED ROUND ROBIN,加权轮转) 89 第15章 方便菜谱 90 15.1. 用不同的SLA运行多个网站. 90 15.2. 防护SYN洪水攻击 90 15.3. 为防止DDOS而对ICMP限速 91 15.4. 为交互流量设置优先权 92 15.5. 使用NETFILTER,IPROUTE2SQUID实现WEB透明代理 93 15.5.1. 实现之后的数据流图 96 15.6. 与PMTU发现有关的"基于路由的MTU设置" 96 15.6.1. 解决方案 97 15.7. 与PMTU发现有关的MSS箝位(给ADSL,CABLE,PPPOEPPTP用户) 98 15.8. 终极的流量控制:低延迟,高速上/下载 98 15.8.1. 为什么缺省设置不让人满意 99 15.8.2. 实际的脚本(CBQ) 100 15.8.3. 实际的脚本(HTB) 102 15.9. 为单个主机或子网限速 103 15.10. 一个完全NATQOS的范例 104 7 15.10.1. 开始优化那不多的带宽 104 15.10.2. 对数据包分类 106 15.10.3. 改进设置 107 15.10.4. 让上面的设置开机时自动执行 108 第16章 构建网桥以及用ARP代理构建伪网桥 109 16.1. 桥接与IPTABLES的关系 109 16.2. 桥接与流量整形 109 16.3. 用ARP代理实现伪网桥 109 16.3.1. ARPARP代理 110 16.3.2. 实现 110 第17章 动态路由——OSPFBGP 112 17.1. 用ZEBRA设置OSPF 112 17.1.1. 必要条件 113 17.1.2. 配置Zebra 113 17.1.3. 运行Zebra 115 第18章 其它可能性 117 第19章 进一步学习 119 第20章 鸣谢 120
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值