硬件路由转发原理浅析-清晨补充

由于昨晚实在太困了,解释问题的时候眼睛就花了,脑子也短路了。早上起来,发现家人都还在睡,就想继续述说昨晚没有说带劲的东西了。

我的解释图

再次给出我的硬件转发原理图:

请注意,没有任何优化,你可以试着用一些小技巧将其进一步的优化,也可以直接用标准的TCAM来映射它。此图里,我详细展示了“最长前缀”逻辑是怎么做的,而在TCAM路由转发表的实例中,往往被画成了黑盒子,叫做“优先级逻辑控制器”,不过,这个逻辑电路比较简单,相信大家稍微思考都可以自己设计出来的。
       其实,在上图中,有一个容器叫做“反掩码”,将这个反掩码逐位地安排在译码器后面的位线比较键旁边,这就是一个标准的TCAM做法了。

关于内容寻址和地址寻址

我们都知道cache比较贵所以不能太大,而内容就可以做很大,因为它比较便宜。
       但是能否从技术层面解释一下呢?其实,贵与便宜的差异就是技术原因造成的,我们先看一下内存的存储阵列的电路:

这是个非常典型的矩阵,也很简单。但是对于CAM电路,就不是这么简单了,下图所示:

对于TCAM,需要加一个care逻辑,就更加复杂了,不光是电路复杂了,功耗也增加了,要知道,在CAM/TCAM匹配的过程中,电路的所有部分都是同时工作的。

关于硬件HASH

很多人都说CPU cache里面有一个硬件HASH,比如取地址的第n到m位,事实上就是一个移位,取模操作!这在程序员看来只能呵呵了,程序员们知道的最简单的HASH算法都比这个复杂。其实硬件工程师对程序员的呵呵是不屑一顾的,因为他们的关注点是如何使得电路同时工作时功耗最低,电路规模更小。CAM/TCAM都用了硬件HASH,很简单的硬件HASH,然而电路是可以同时工作的。这可是软件hash的大难题,软件hash旨在使得hash分布更加均匀,平均性能更好。这样冲突链表长度的平均方差最小。软件hash旨在解决冲突,而硬件HASH不需要这么做,因为在软件看来必须串行遍历冲突链表的时候,硬件却是可以同时进行的。

顺序执行的CPU

计算机被设计之初,就是一个顺序执行的模型,指令是一条接一条执行的。这是因为它是完全模拟真实世界中人的行为的。这就意味着所有的跑在计算机上的算法步骤都是要时间流逝中串行实施的,一个好的算法旨在让时间花费最短。然而硬件电路的设计并不遵循真实世界的人做事的样子,起码说不是太像。一个人不可能同时做很多事,硬件电路的执行流程更像是洪水泛滥的过程,由于势能,洪水同时往(注意,同时!)所有它可以去的地方冲去,瞬时就吞噬了一切。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-20 00:08:21

硬件路由转发原理浅析-清晨补充的相关文章

硬件路由转发原理浅析

有人问我,对于路由转发,硬件转发表的性能真的要超出软件查表比如Linux系统很多吗?我怎么回答呢?给出数据吗?我没有数据,因为我的本职不是做这一块的.给出理论吗?恐怕我也没那口才.画个图?我发现我系统没有安装画逻辑电路的工具.那怎么办?这个问题的答案我真真在心里,只是难于言表,于是乎,我采用手绘图手机拍照的方式,展示一下硬件转发表的威力,由于没有实际数据,我采用相对比较的方式,让诸位看一下软件转发为什么是个垃圾.也顺便介绍一下专业的路由器交换机是怎么转发数据包的.       不过,手绘图实在是

硬件路由转发原理浅析【转】

有人问我,对于路由转发,硬件转发表的性能真的要超出软件查表比如Linux系统很多吗?我怎么回答呢?给出数据吗?我没有数据,因为我的本职不是做这一块的.给出理论吗?恐怕我也没那口才.画个图?我发现我系统没有安装画逻辑电路的工具.那怎么办?这个问题的答案我真真在心里,只是难于言表,于是乎,我采用手绘图手机拍照的方式,展示一下硬件转发表的威力,由于没有实际数据,我采用相对比较的方式,让诸位看一下软件转发为什么是个垃圾.也顺便介绍一下专业的路由器交换机是怎么转发数据包的.       不过,手绘图实在是

1.1【基本路由原理】(二层转发原理)1

二层转发原理: 交换机的功能: 1.转发(MAC地址表中存在目的MAC地址) 2.泛洪(1.未知单播帧2.广播/组播帧) 3.过滤(1.MAC地址表中存在目的MAC地址,转发也是一种过滤2.如果数据帧的出入口一致,数据帧需要丢弃) (交换机收到数据帧后的行为和动作,广播是广播帧,泛洪是一个动作(未知单播帧/MAC地址表里面没有目的MAC)) (CAM表是可寻址内存,是二进制数,是为了快速交换 MAC表绑定VLAN信息,接口信息,三层转发才需要ARP,二层转发不需要ARP) (MAC地址表老化时间

2.1【基本路由原理】数据转发原理3

数据转发原理 //抓包看ARP的报文结构: 注意Opcode:  1=request  (ARP)        2=reply(ARP) 3=request(RARP)        4=reply(RARP) ***************************************************************************** 普通ARP   ##普通ARP的request报文:   广播(获取目的IP地址的MAC): 目的收到request报文,先检查二

简单剖析静态路由三层转发原理并进行路由转发实验

静态路由(英语:Static routing),一种路由的方式,路由项(routing entry)由手动配置,而非动态决定.与动态路由不同,静态路由是固定的,不会改变,即使网络状况已经改变或是重新被组态.一般来说,静态路由是由网络管理员逐项加入路由表.而静态路由的转发方式一般是三层转发.什么是三层转发?可以通过下面的两张图进行理解图看不懂?没关系,三层转发简单来说就是1--2--3--4,最终目标机收到的数据帧格式就如同图二. 而复杂点说三层转发具体由以下5步组成: 1.HostA发出数据帧,

【详解】ip_forward与路由转发

一.前言介绍: IP地址分为公有ip地址和私有ip地址,Public Address是由INIC(internet network information center)负责的,这些IP地址分配给了注册并向INIC提出申请的组织机构.Private Address属于非注册地址,专门为组织内部使用.Private Address是不可能直接用来跟WAN通信的,要么利用帧来通信(FRE帧中继,HDLC,PPP),要么需要路由的转发(nat)功能把私有地址转换为公有地址才行. 出于安全考虑,Linu

二层交换、三层交换和路由的原理及区别

二层交换机: 二层交换技术是发展比较成熟,二层交换机属数据链路层设备,可以识别数据包中的MAC地址信息,根据MAC地址进行转发,并将这些MAC地址与对应的端口记录在自己内部的一个地址表中. 具体如下: (1)当交换机从某个端口收到一个数据包,它先读取包头中的源MAC地址,这样它就知道源MAC地址的机器是连在哪个端口上: (2)再去读取包头中的目的MAC地址,并在地址表中查找相应的端口: (3)如表中有与这目的MAC地址对应的端口,把数据包直接复制到这端口上. 三层交换机: 三层交换技术就是将路由

静态路由!静态路由!静态路由!原理与配置

本次和各位小伙伴分享的是静态路由的原理和配置,接下来我会从以下几个方面来和大家进行解析:1.路由器的工作原理2.路由表的形成3.静态路由和默认路由4.路由器转发数据包的封装过程5.静态路由和默认路由的配置 首先我们讲讲路由的原理: 路由器工作在OSI参考模型的网络层,它的重要作用是为数据包选择最佳路径,最终送达目的地.以下图为例来说明以下路由的技术是怎么样的:在只有一个网段的网络中,数据包可以很容易的从源主机到达目标主机.但是如果一台计算机要和非本网段的计算机通信,数据包就要经过很多路由器.如上

交换机工作原理-路由交换原理7-【HCNA笔记】

1.交换原理 我们知道交换机有若干个物理端口,端口可以接入主机.路由或其他交换机.同时接入交换机的设备都有一个MAC地址,交换机内部存储着一张缓存表,表上记录着各个端口对应设备的MAC地址.这样当一台主机需要向另一台设备发送数据时,在数据帧中注明目的设备的MAC地址,交换机读取该MAC地址,查询缓存表找到对应的端口号,将帧直接发往该端口对应的设备即可.缓存表示意如下. 端口 MAC地址 0 00-50-BA-CE-07-0C 1 00-50-BA-CE-07-0D 2 00-50-BA-CE-0