从“交换”谈起

数据是通过接口板接收和发送,通信线缆都要插接到接口板的接口上。那么,把某一 个接口来的数据包送到另一个接口发出去,这两个接口需要连起来。但实际上,数据 包可能从任意接口进来,从任意接口出去,都这么点到点连接的话,则需要N*(N-1)/2 根线互联,太多了。

为了解决这种大量连接的问题,接口板和接口板之间需要通过交换网(Switch Fabric) 板衔接起来,接口板只要通过若干连线跟交换网板连接,就能完成任意接口的互通。

交换网属于“三无”部件,即与设备配置无关、与协议无关、与数据包类型无关。交 换网专注于在入接口和出接口之间建立连接,完成数据的交换。

上行和下行

以交换网为中心,可将报文在路由器的行程一分为二,前半程称为“上行”,下半程 称为“下行”

寻址转发

可能有人会问,报文从一个接口进来,经过“交换”,从另一个接口出去,这个交换 机也会做啊,何必用路由器?是的,交换机也有交换功能。但是,在互联网中,从一 个节点到另一个节点,有许许多多的路径,路由器可以选择通畅的短的路径,从而 提高通信速度,减轻网络负荷,节约网络资源,这是交换机所不具备的能力。为数据 包选择一条合适的(通常指短的)传输路径,然后从对应的接口发送,这个过程就 称为“寻址转发”。

路由器所在的网络几乎都是遵循TCP/IP体系的,路由器是工作在该体系的第三层,即 网络层。

第三层即网络层

所以,刚才提到的“寻址”的”址“是指根据数据包的网络层地址——IP地址。为了 寻址,路由器需要一张“地图”,以目的IP地址为索引的“地图”,也就是路由表。 每个路由器中都有一张路由表。

路由表长什么样

实际的路由表跟上图有些相似。路由表的索引是目的IP地址/掩码,每个表项中都有对 应的下一跳IP地址和出接口信息,如下图。

路由表

有了这张表,路由器接在收到数据包时就能做到心中有数了。比如收到一个目的地址 为10.0.0.1的报文,路由器就可以查表得知需要将该报文发送到GE1/0/0这个接口。

这个路由表怎么得来的呢?一种办法是手工制作,对路由器进行手工设置固定的路 由。但是这种路由不能对网络的改变作出反映,如果网络拓扑变化了,需要人工去修 改设置。还有一种办法就是运行动态路由协议,让路由器之间相互传递路由信息,利 用收集到的路由信息进行计算,生成路由表,这样就可以让路由表实时跟进网络拓扑 的变化。在实际应用中,这两个办法都用上了,当动态路由与静态路由发生冲突时, 以静态路由为准。当然,路由表还有一类路由,不是人工配置的,也不是路由协议的 学习,而是由链路层协议发现的,称为直连路由

路由表放在哪

有了路由表,接下来要考虑的是,路由表放哪合适呢?

前面说过,数据包是从某个接口进来,经过交换网,再从另一个接口出去。那路由表 能不能放交换网?答案是不行,因为交换网要完成整个设备所有报文的交换,为了让 交换网完成高速交换,不成为瓶颈,不能再让交换网去运行路由协议、维护路由表、 做寻址转发。

那路由表能不能放下行接口板?答案也是不行,交换网做交换的时候,就需要知道要 送往哪块目的单板,所以寻址转发需要在上行完成。然而,如果把路由表放上行接口 板,由于报文可能从任意接口板进来,那么所有的接口板都需要放一个路由表。其 实,还有更好的办法,就是将路由表放在一个公共的地方,比如主控板上,由主控板 的CPU运行路由协议,计算路由,生成和维护路由表。

转发表与路由表

华为高端路由器采用的是“硬转发”,业务报文不经过主控板CPU处理,不能直接用 主控板上的路由表,接口板上也需要有供寻址转发的信息。所以,主控板CPU生成路 由表之后,还要将相关信息下发给各个接口板。这些相关的信息就是转发信息,存放 在各个接口板的转发信息表FIB(Forwarding Information Base)中。各个接口板上的转 发信息都是相同的,因为它们具有相同的来源,都来自主控板。

实际上,现代高性能路由器在架构上都是转发和控制分离:把转发层面和控制层面分 配在不同的组件,控制层面运行路由协议,维护路由表,并下发转发表FIB到转发层 面,由转发层面负责数据包转发。这样做的基本的好处就是不会相互影响:如果流 量很高导致转发层面高负荷,但是其不会影响控制层面进行正常的路由学习;相反 的,如果控制层面对路由信息的处理比较繁忙,也不会影响转发层面进行其高速的数 据包转发。

路由表和转发表看起来差不多,都有目的IP地址/掩码、下一跳、 出接口这三个信息。实际上,转发表是根据路由表生成的。路由表中可能包含到达目 的地址的多条路由,但是转发表里面只取其中的优路由。而且,路由表的下一跳是 原始的下一跳,不一定是直接可达的,FIB是用于指导转发的,它的下一 跳必须是直接 可达。根据“原始下一跳”找到“直接下一跳”的过程就称为“路由迭代”。

路由器上电启动之后,就会运行路由协议学习网络拓扑,生成路由表,如果接口板注 册成功,主控板就可以根据路由表生成转发表项并下发给接口板,这样路由器就可以 根据转发表转发数据包了。执行数据包转发的部件是位于接口板上的一个被称为包转 发引擎PFE(Packet Forwarding Engine)部件,通常是NP或ASIC芯片。

找不到路怎么办

上述这种在转发报文前,提前准备好转发表,待收到报文时再查表转发的方式称为 “预路由”,“先铺路,后通车”。现在路由器都采用这种方式进行IP单播转发。在 这种方式中,查表转发时,如果没有匹配上(如果有默认路由,终会匹配上默认路 由,默认路由不存在“不匹配”的情况),意味着这台路由器没有到这个目的地址的 路由(或者还没有学习到这个路由),也就是找不到路,迷路了。数据包迷路了怎么 办,原路返回?想象下,如果迷路了就被原路返回给源端,那源端重发的还是同样的 目的地址,那这个报文还是会在同一个地方迷路,再原路返回,死循环了。所以,数 据包迷路了只能被丢弃。出于可维护方面的考虑,包转发引擎PFE会记录丢弃原因和统 计丢弃的报文数。

预路由与流触发

刚才说到路由器都采用“先铺路,后通车”的预路由方式。相对的,“先通车,后铺 路”的方式,被称为“流触发”。流触发方式中,设备收到报文,查转发表,如果转 发表中不存在对应的表项,就根据这个报文生成一个转发表项。这样,该用户流的下 一个报文就可以命中转发表进行转发了。 目前,路由器和交换机在进行二层转发时所使用的MAC表,就是采用MAC地址学习方 式,类似于“流触发”方式。

从安全性角度上,流触发显然容易造成流量攻击,为攻击者提供了一个合理合法的攻 击路径。攻击者可以使用各种未知目的报文对系统进行遍历扫描攻击,形成对路由器 的流量攻击。所以,华为高端路由器上,除了有MAC学习方式机制外,为了预防流量 攻击,还提供了限制MAC地址学习的功能,即限制多允许学习多少个MAC地址,并 限制每次学习的时间间隔;而且还允许去使能MAC地址学习,允许人们像配置静态路 由一样去手工配置MAC表项。

一个报文的路由器之旅_报文的交换和寻址转发相关推荐

  1. 一个报文的路由器之旅_【NE探秘】一个报文的路由器之旅

    什么是二层桥接转发? 二层所指的是数据链路层.二层桥接转发,是指数据帧在数据链路层是怎样被转发的. 数据链路层有很多不同的网络类型,Token ring(令牌环网).Ethernet.FDDI(光纤网 ...

  2. 一个报文的路由器之旅_一个报文的路由器之旅

    ---------------------------------------------------------------------------------------------------- ...

  3. rip协议中周期性广播路由信息的报文_RIP路由理论知识详解(一)

    一.RIP简介 RIP是Routing Information Protocol(路由信息协议)的简称,它是一种较为简单的内部网关协议(Interior Gateway Protocol). RIP是 ...

  4. 修改路由器mac地址_你知道吗:路由器转发报文时,会剥掉MAC地址,重新封装

    概述 我们都知道路由器作为Internet的骨架,连接了整个互联网,可以说是整个网络的基石.但为什么路由器这么牛呢?是因为路由器能够在不同的网段之间进行通信,可以根据一定的规则把报文一跳一跳的转到目的 ...

  5. 报文如何截取时间_5种报文、8种邻居状态机详解OSPF工作原理

    上一章节介绍了OSPF相比RIP具有无环路.路由收敛速度快.可扩展性好的特点.知识卡片 | 链路状态路由协议OSPF凭什么会取代RIP? 我们知道路由协议的最终目的是为了计算最优路由加入路由表来指导I ...

  6. 华为交换机静态路由配置案例_快速了解配置三层交换机策略路由配置

    交换机策略路由功能简介 交换机的策略路由(PBR:Policy-Based Routing)提供了一种比基于目的地址进行路由转发更加灵活的数据包路由转发机制.策略路由可以根据 IP/IPv6 报文源地 ...

  7. 思科isis路由的优先级_【分享】超全!集成ISIS知识详解~

    IS-IS路由协议简介 IS-IS是国际标准化组织ISO为它的无连接网络协议CLNP设计的一种动态路由协议. 随着TCP/IP协议的流行,为了提供对IP路由的支持,IETF(Internet Engi ...

  8. OSPFB笔记-五个报文【超详细】[Hello报文,DD报文,LSR报文,LSU报文,LSAck报文]

    目录 Hello报文 DD报文[数据库描述报文] LSR报文 LSU报文 LSAck报文 通过前面已经了解到ospf的报文头部[链接:OSPF头部报文https://blog.csdn.net/wei ...

  9. 单臂路由配置命令_如何通过单臂路由实现VLAN间通信?(配置篇)

    1实验需求: PC1属于VLAN 2 ,PC2属于VLAN 3 ,通过单臂路由的方式实现不同vlan的主机PC1和PC2互通. 2实验拓扑: 3实验配置: PC1配置: PC2配置: 交换机配置 # ...

最新文章

  1. 网络扫描信息收集基于(Windows)
  2. Ext JS 4预览:重构和规范渲染过程()
  3. 【laravel】laravel的基础学习笔记
  4. 周五话营销 | 数据分析强势解决营销人三大痛点
  5. nginx + uWSGI 提高 Django的并发性(看着不错)
  6. python新手入门总结_初学python的操作难点总结(新手必看篇)
  7. 菜鸟读jQuery 2.0.3 源码分析系列(1)
  8. 优酷视频如何进行连续播放?
  9. PLSQL DEVELOPER编辑器的自动替换文件
  10. 我的php学习笔记(45) PHP输出CSV、Excel
  11. 实现最小宽度的几种方法及CSS Expression
  12. 为什么Zappos花钱让新员工走人?
  13. 微信小程序获取scope中权限管理
  14. Java 设计简单班级管理系统
  15. android RS485串口接线正反的问题
  16. xUtils框架的介绍
  17. 阿里云在线扩容云盘(Windows系统)
  18. 如何使用FLASHGOT下载网页FLASH
  19. 微信小程序怎么实现 图片按住一角缩放、旋转、拖拽
  20. 【科学究竟是什么/查尔默斯】读书笔记(上)

热门文章

  1. 如何汉化 OpenERP 6.1 日历视图
  2. 用友二次开发 用友控件 Js宿主脚本 调用用友T6 登录 参照 控件示例
  3. 【摩天好课推荐】数字时代职业生涯规划
  4. HDU 1495 非常可乐
  5. 12-黑马程序员------C 语言学习笔记--- C语言指针与函数
  6. 【百度地图API】如何使用suggestion--下拉列表方式的搜索建议
  7. PDF 格式优化的一点经验
  8. 视频文件详细信息python3_如何用python3爬取自己的收藏夹视频信息
  9. 【MM模块】Material Planning - 物料计划
  10. ora 12541无监听程序