Internet路由-主机路由表和转发表

简介:

1.路由表

路由信息最终要存储在用于路由器的主机或者专业路由器上,存放这些信息的地方称为路由表。其中包含三元素:目标地址,掩码,下一跳。

1.1.查询路由表的开销

有人认为查询路由表是一件和交换机查询MAC地址一样的事,那就大错特错了,查询MAC地址/端口对是一种固定的数据查找,MAC地址都是固定的48字节,而IP地址呢,自从CIDR出现以后,地址成了“无类”的了,因此任意位的掩码都能成为正确的掩码,另外,聪明的管理员想出了路由汇聚,这些家伙将负担转嫁给了系统的实现者,从而系统实现者必须实现“最长掩码”匹配,既然掩码是不固定的,因此查询就是不固定的,这是很麻烦的事。

2.转发表

数据包到达路由器的时候,要根据“指示”前往特定的端口,类似交换机的地址信息表,路由器上存放这个“指示”的地方叫做转发表

3.两个表的关系

3.1.联系

转发表直接作用于数据包,而路由表是转发表生成的依据,转发表通过路由表生成。一个特定的进程可以通过使用路由表中的信息,加上自身的主机方面的信息-比如网卡等信息-加以综合,得到一张转发表。路由信息和主机是没有任何关系的,它只描述网络链路状态和方向。

3.2.区别

两表存储的信息是不同的,路由表只存储三元素-目标,掩码,下一跳;而转发表存储更详细的信息,比如输出端口信息,比如标记信息等。转发表描述了主机方面的信息,在主机内部将一个数据包从一个端口导向另一端口,而路由表描述网络信息,将数据包从一个机器导向另一机器。

4.误区

当前很多人都懂一个系统的实现,这些人不外乎3类,第一类精通linux内核,第二类精通Cisco设备的配置,第三类精通Windows网络编程以及NDIS。三类人一般的交集很少,因此大部分熟悉Linux内核的人都不会去区分路由表和转发表,因为Linux内核本身就不区分这两个表,每到一个数据包都会查路由表(当然前面还有一个缓存...但这不是转发表);因此熟悉Cisco的家伙会认为两个表是一定要区分的,否则MPLS怎么实现?熟悉Windows核心的人呢?可能并不关心这些,因为Windows几乎不用于路由器。

5.区分二表的好处之实例

MPLS是区分路由表和转发表的一个明显的例子,首先声明,MPLS是一个网络,而不是运行特定协议的一个节点。在MPLS中,完全通过标签进行数据包转发,在MPLS网络可用于数据业务之前(中间也可以通过标签分发协议动态调整),MPLS转发表就建好了,它的表项包含三元素:来源数据自带标签/转发到的端口/转发出去携带的标签。这个表项是通过路由表建立的,我们将之视为转发表。实现MPLS需要在入口路由器上为数据包单独打上一个标签,这样直到出去MPLS网络,数据包就可以快速被转发了,省去了直接查询路由表的开销。

6.Linux中通过NAT原理配置转发表

如果管理员能事先“打通一条路”,那么就可以在每一个路由器的入口上配置DNAT,然后在其出口处配置SNAT,从而实现一个标准的点对点的IP链路,每一个节点都以为数据要发往“下一跳”,而不是越过下一跳的“远端机器”。由于NAT基于连接,它为无方向的IP网络增加了方向性,因此配置SNAT后就无需再配置反向路由了。
     鉴于上述的方式,如果我们能在DNAT信息中识别标签信息然后直接确定输出端口,同时在输出端口的SNAT中封装上新的出口标签,无需在进入路由模块,这就是一个MPLS实现。然而目前的标准Linux内核的Netfilter中并没有如此实现。

7.优势

除了可以实现MPLS等特定的专用线路网络之外,转发表和路由表分开的最大好处在于其可以使用硬件实现转发表,从而实现高速链路层转发,而路由表很难用硬件实现,原因就是它不是精确匹配的,而是“最长前缀”匹配的,这里面充满了变数。



 本文转自 dog250 51CTO博客,原文链接:http://blog.51cto.com/dog250/1270988

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
相关文章
|
Ubuntu Linux
【Ubuntu系统内核更新与卸载】
【Ubuntu系统内核更新与卸载】
1184 0
|
6月前
|
Linux 数据安全/隐私保护 iOS开发
推荐Linux环境下效能优良的双向文件同步工具
综合上述条件,对于Linux环境下的双向文件同步需求,Unison 和 Syncthing 是两个非常出色的选择。它们都有良好的社区支持和文档资源,适用于不同规模的环境,从个人使用到商业部署。Unison 特别适合那些需要手动干预同步过程、需要处理文件冲突解决的场景。而 Syncthing 更加现代化,适合需要自动、实时的数据同步与备份的环境。对于选择哪一个,这将取决于个人的使用场景和具体需求。
671 16
|
8月前
计算网络号的直接方法
子网掩码用于区分IP地址中的网络部分和主机部分,连续的“1”表示网络位,“0”表示主机位。例如,255.255.255.0 的二进制为 11111111.11111111.11111111.00000000,前24位是网络部分。通过子网掩码可提取网络号,如 IP 192.168.1.10 与子网掩码 255.255.255.0 的网络号为 192.168.1.0。此外,文档还介绍了十进制与二进制间的转换方法,帮助理解IP地址的组成与计算。
543 11
|
芯片 开发者
脉冲宽度调制
脉冲宽度调制(PWM)是一种通过调整脉冲信号的占空比来控制功率、亮度或速度等参数的技术,广泛应用于电机控制、电源转换和照明等领域。
|
算法 计算机视觉 索引
Python3 OpenCV4 计算机视觉学习手册:1~5
Python3 OpenCV4 计算机视觉学习手册:1~5
295 0
|
安全 网络安全 网络架构
|
Oracle Java 关系型数据库
Java SpringBoot集成Activiti7工作流
Java SpringBoot集成Activiti7工作流
|
SQL 数据库
攻防世界--inget
攻防世界--inget
|
网络协议 网络架构
【网络编程入门】TCP与UDP通信实战:从零构建服务器与客户端对话(附简易源码,新手友好!)
在了解他们之前我们首先要知道网络模型,它分为两种,一种是OSI,一种是TCP/IP,当然他们的模型图是不同的,如下
493 1

热门文章

最新文章