码迷,mamicode.com
首页 > 系统相关 > 详细

深入理解Linux网络技术内幕——路由子系统的概念与高级路由

时间:2015-06-11 16:53:33      阅读:208      评论:0      收藏:0      [点我收藏+]

标签:路由   linux   协议栈   网络   

本文讨论IPv4的路由子系统。(IPv6对路由的处理不同)。

基本概念

路由子系统工作在三层,用来转发入口流量。

路由子系统主要设计 路由器、路由、路由表等概念。

路由器: 配备多个网络接口卡(NIC),并且能利用自身网络信息进行入口流量转发的设备。

路由: 流量转发,决定目的地的过程

路由表:转发信息库,该库中储存路由需要本地接收还是转发的信息, 以及转发流量时所需要的信息。(即,信息库用来判断,要不要转发,如果要转发,向哪里转发).


我们了解,路由器有多个网卡,但是多个NIC的设备不一定就是路由器。在一些特殊情况,出于特殊的原因,某个非路由主机也可能配备多个网络接口卡。这些原因主要如下所示:

高可用性:   在某个NIC故障时,主机可以利用其他NIC继续工作。

更强的路由能力: 不同NIC连接不同局域网,但是不转发局域网间流量。

多路传输:  多个NIC进行捆绑,提高网络载荷。


不可路由地址,私有地址和本地环回地址不可路由。 当局域网(私有地址)的主机要与非该局域网的主机通信时,需要通过NAT来隐藏不可路由的子网。


定向广播:

子网广播:目的地址为本地子网的广播包。

定向广播:目的地址为远端子网的广播包。

定向子网广播针对ICMP ECHO REQUEST做特殊处理,以避免恶意攻击。


主地址、辅助地址、设备别名

地址属于主机而非接口,一个接口可以配置多个别名。(ip address add)。

一个NIC可配置多个朱地址和辅助地址,一个子网掩码只能有一个特定的主地址。



Scope

路由和IP地址都可以指定一个scope来告诉内核它在什么情况下有效。 下面是常用的scope:

针对地址:

主机: 当地址只用于本机通信时,scope为主机。如:127.0.0.1

链路: 只在局域网幼小的主机,scope为链路。

全域: 可以再任何地方使用的地址,其scope为全域。

针对路由:

主机: 当路由目的地址为本机时,scope为主机。

链路: 当路由目的地址为本地网络时,scope为链路。

全域:当路由表示的目的地址超过下一跳时,其scope为全域。


scope的使用

IP地址scope和路由scope在路由子系统和内核的其他部分有广泛的应用。



路由表、路由缓存、路由查找

路由表

路由表就是个路由数据库。
我们知道,3层协议接收到流量后,有两种走向:向上层协议(如TCP、UDP)传递,或是转发到其他主机。
一般,Linux默认两张路由表保存两种路由信息。
用于本地地址的路由表:与内核关系密切
用于其他地址的路由表: 用户手动配置、或路由协议动态插入。

路由主要动作:
黑        洞:丢弃封包
不可到达:丢弃封包,生成ICMP主机不可达消息
禁        止:丢弃封包,生成ICMP被过滤消息
放        弃:与策略路由联合使用


路由缓存

路由表中的项可能达到几十万条,因此需要较小的路由缓存表。
Linux将路由缓存分为两部分:
1. 协议相关的缓存                ——缓存框架部分
2. 协议无关的缓存(DST)——嵌套在第一部分


回收:
同步回收:
异步回收:

查找

最大前缀匹配:到达一个目的地址可能有多条路由,需要使用贪心匹配。
技术分享








深入理解Linux网络技术内幕——路由子系统的概念与高级路由

标签:路由   linux   协议栈   网络   

原文地址:http://blog.csdn.net/windeal3203/article/details/46457911

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!