• 以太网交换机工作在数据链路层,用于在网络内进行数据转发,而企业网络的拓扑结构一般会比较复杂,不同的部门,或者总部和分支可能处在不同的网络中,此时就需要使用路由器来连接不同的网络,实现网络之间的数据转发。

1.1 自治系统AS

image.png

  • 一般地我们把一个企业网络认为是一个自治系统AS(Autonomous System)。根据RFC1030的定义,自治系统是由一个单一实体管辖的网络,这个实体可以是一个互联网服务提供商,或一个大型组织机构。自治系统内部遵循一个单一且明确的路由策略。最初,自治系统内部只考虑运行单个路由协议,然而,随着网络的发展,一个自治系统内现在也可以支持同时运行多种路由协议。

1.2 LAN和广播域

image.png

  • 一个AS通常由多个不同的局域网组成。以企业网络为例,各个部门可以属于不同的局域网,或者各个分支机构和总部也可以属于不同的局域网。局域网内的主机可以通过交换机来实现相互通信。不同局域网之间的主机要想相互通信,可以通过路由器来实现。路由器工作在网络层,隔离了广播域,并可以作为每个局域网的网关,发现到达目的网络的最优路径,最终实现报文在不同网络间的转发。
  • 此例中,RTA和RTB把整个网络分成了三个不同的局域网,每个局域网为一个广播域。LAN1内部的主机直接可以通过交换机实现相互通信, LAN2内部的主机之间也是如此。但是,LAN1内部的主机与LAN2内部的主机之间则必须要通过路由器才能实现相互通信。

1.3 路由选路

image.png

  • 路由器收到数据包后,会根据数据包中的目的IP地址选择一条最优的路径,并将数据包转发到下一个路由器,路径上最后的路由器负责将数据包送交目的主机。数据包在网络上的传输就好像是体育运动中的接力赛一样,每一个路由器负责将数据包按照最优的路径向下一跳路由器进行转发,通过多个路由器一站一站的接力,最终将数据包通过最优路径转发到目的地。当然有时候由于实施了一些特别的路由策略,数据包通过的路径可能并不一定是最佳的。
  • 路由器能够决定数据报文的转发路径。如果有多条路径可以到达目的地,则路由器会通过进行计算来决定最佳下一跳。计算的原则会随实际使用的路由协议不同而不同。

1.4 IP路由表

image.png

  • 路由器转发数据包的关键是路由表。每个路由器中都保存着一张路由表,表中每条路由表项都指明了数据包要到达某网络或某主机应通过路由器的哪个物理接口发送,以及可到达该路径的哪个下一跳路由器,或者不再经过别的路由器而直接可以到达目的地。 IP路由基础 - 图5

    1.5 路由优先级

    image.png

  • 路由器可以通过多种不同协议学习到去往同一目的网络的路由,当这些路由都符合最长匹配原则时,必须决定哪个路由优先。

  • 每个路由协议都有一个协议优先级(取值越小、优先级越高)。当有多个路由信息时,选择最高优先级的路由作为最佳路由。
  • 如图所示,路由器通过两种路由协议学习到了网段10.1.1.0的路由。虽然RIP协议提供一条看起来更加近的路线,但是由于OSPF具有更高的优先级,因而成为优选路由,并被加入路由表中。

1.6 路由度量

image.png

  • 如果路由器无法用优先级来判断最优路由,则使用度量值(metric)来决定需要加入路由表的路由。
  • 一些常用的度量值有:跳数,宽带,时延,代价,负载,可靠性等。
  • 跳数是指到达目的地所通过的路由器数目。
  • 带宽是指链路的容量,高速链路开销(度量值)较小。
  • metric值越小,路由越优先;因此,图示中metric=1+1=2的路由是到达目的地的最优路由,其表项可以在路由表中找到。

1.7 建立路由表

image.png

  • 根据比较“路由优先级”和“路由度量”,设备可以产生最优路由的IP路由表。
  • 根据来源的不同,路由表中的路由通常可分为以下三类:
    • 链路层协议发现的路由(也称为接口路由或直连路由)。
    • 由网络管理员手工配置的静态路由。
    • 动态路由协议发现的路由。

1.8 最优路径匹配

1.8.1 最长匹配原则

image.png

  • 路由器在转发数据时,需要选择路由表中的最优路由。当数据报文到达路由器时,路由器首先提取出报文的目的IP地址,然后查找路由器,将报文的目的IP地址与路由表中某表项的掩码字段做“与”操作,“与”操作后的结果跟路由表该表项的目的IP地址比较,相同则匹配上,否则就没有匹配上。当与所有的路由表项都进行匹配后,路由器会选择一个掩码最长的匹配项。
  • 如图所示,路由表中有两个表项到达目的网段10.1.1.0,下一跳地址都是20.1.1.2。如果要将报文转发至网段10.1.1.1,则10.1.1.0/30符合最长匹配原则。
  • 当路由表中存在多条去往同一目的地的路由条目时,默认比较子网掩码长度,长度越长越越优先匹配。(最长匹配优先级匹配>协议优先级匹配)

1.8.2 协议优先级

  • 当存在多条去往同一目的地且子网掩码长度一致时,不同协议之间,优先级值越小越优先,数值为0-255。协议优先级分为外部优先级和内部优先级。

外部优先级:
外部优先级中除了直连路由,其余的优先级都是可控的,用于管理者根据不同的路由协议选路。

外部优先级 华为PRE(优先级) 思科AD(度量值)
直连 0 0
静态路由 60 0/1
RIP 100 120
OSPF 10/150 50/90/170
IS-IS 15 115
BGP 255 20/200

华为设备中,默认可以修改路由协议优先级:

  1. 静态:[Huawei]ip route-static XXXXXXX XXXXXXX 192.168.1.1 preference 120
  2. Rip:[Huawei]rip
  3. [Huawei-rip-1]preference 120
  4. [Huawei-ospf-1]preference 200
  5. OSPF:[Huawei]ospf
  6. IS-IS:[Huawei]isis
  7. [Huawei-isis-1]preference 220

内部优先级:
如果不同的路由协议配置了相同的外部优先级,此时会根据内部优先级选择最优的路由协议,并且内部路由优先级是不可控的。

协议类型 内部优先级
Direct 0
OSPF 10
IS-IS Level-1 15
IS-IS Level-2 18
Static 60
RIP 100
OSPF ASE 150
OSPF NSSA 150
IBGP 200
EBGP 20

协议开销值:
同种路由协议去往同一目的地时,存在多条链路时,优先cost值小的路由条目

1.9 路由器转发数据包

image.png

  • 路由器收到一个数据包后,会检查其目的IP地址,然后查找路由表。查找到匹配的路由表项后,路由器会根据该表项所指示的出接口信息和下一跳信息将数据包转发出去。

1.10 路由分类

通常将动态路由协议分为两大类,以AS为标准,通常用于AS内部的成为IGP协议路由,用于AS之间的称为EGP协议。

  1. IGP协议(Intweior Gateway Protocol):链路状态协议(OSPF、ISIS)、距离矢量协议(RIP)。
  2. EGP协议(Exterior Gateway Protocol):EGP协议(BGP协议前身)、BGP协议。

1.11 动态路由选择算法的步骤

动态路由协议:动态学习路由,根据某种规则建立路由转发表的协议,并能根据网络变化作出相应调整的协议。

  1. 向其它路由器传递路由信息
  2. 接收其它路由器的路由信息
  3. 根据收到的路由信息计算出到每个目的网络的最优路径,并由此生成路由选择表
  4. 对网络拓扑的变化及时的做出反应,生成新的路由选择表,同时把拓扑变化信息向其它路由器宣告

1.12 控制平面、转发平面

路由器承担着路由学习、数据报文转发等重要的工作,其系统的稳定性是非常重要的。系统的设计者尽力从架构上使系统工作稳定、可靠,其中最重要的一点就是将控制平面和转发平面相对独立,以减少相互影响。
image.png
(1)控制平面:
控制平面指系统中用来传送指令、计算表项的部分。诸如协议报文转发、协议表项计算、维
护等都属于控制平面的范畴。例如在路由系统中,负责路由协议学习、路由表项维护的进程
就属于控制平面。

(2)转发平面:
转发平面指系统中用来进行数据报文的封装、转发的部分。诸如数据报文的接收、解封装、
封装、转发等都属于转发平面的范畴。例如系统接收到IP报文后,需要进行解封装,查路由
表,从出接口转发等工作,系统中负责以上行为的进程则属于转发平面。

(3)两者之间的联系:
系统的控制平面进行协议交互、路由计算后,生成若干表项,下发到转发平面,指导转发平
面对报文进行转发。例如:路由器通过OSPF协议建立了路由表项,再进一步生成FIB(Forwarding Information Base,转发信息库)表、快速转发表等,指导系统进行IP报文转发。
良好的系统设计应该是使控制平面与转发平面尽量分离,互不影响。当系统的控制平面暂时出现故障时,转发平面还可以继续工作。这样可以保证网络中原有的业务不受系统故障的影响,从而提高整个网络的可靠性。
控制平面与转发平面分离的另一个好处是系统设计能够做到模块化,易于维护,便于扩展。例如原有系统仅能支持RIP路由协议,伴随着网络设备数量的增长,RIP协议不能满足需求,系统开发者可以在不改变转发平面的基础上升级控制平面至支持OSPF协议,减少升级的代价。目前很多路由器支持“热补丁”的功能,即是通过控制平面和转发平面分离做到的。控制平面与转发平面可以是物理分离,也可以是逻辑分离。高端的网络设备(如核心交换机、核心路由器)一般采用物理分离。其主控板上的CPU不负责报文转发,专注于系统的控制;而业务板则专注于数据报文转发。如果主控板损坏,业务板仍然能够转发报文。对于入门级的网络设备,受限于成本,一般只能做到逻辑分离。即设备启动后,系统将CPU和内存资源划分给不同的进程,有的进程负责学习路由,有的进程负责报文转发。

1.13 FIB、路由表、快速转发表:

(1)路由表
路由表是控制平面通过路由协议计算生成一张指导数据平面流量走向的一张表单,而数据平面并不是真正去查路由表进行抓发,而是由路由表生成FIB表,数据平面对FIB表进行查询,进行数据转发。

(2)FIB表
Forwarding Information Database,路由器转发分组的关键是FIB表,在系统中报文转发时查找的是FIB表而非路由表。这是因为路由表表示所有的有效路由所形成的表项,并不指导转发。FIB表是网络层用来控制数据报发送的。FIB中包含了路由器在转发报文时所必需的一组最优信息。**
当路由表中存在多个路由项可以匹配目的IP地址时,路由查找进程会选择其中掩码最长的路由项用于转发。那么路由表中路由项数量越多,所需查找及匹配的次数也就越多,其转发效率也就越低。为了做到控制平面和转发平面的分离,系统构建了另一张FIB表,也称为转发表,专注于数据报文的转发,其中FIB的表项来源于路由表项
在计算路由信息的时候,不同路由协议所计算出来的路径可能会不同。在这种情况下,路由器会选择优先级较高的路由协议发现的路由作为最优路由,并置为Active状态;而其他路由作为备份路由,置为Inactive状态。此时Active状态的路由表项会由系统导入FIB表中,作为系统转发的依据。另外,在某些系统中,FIB表项也可能来源于ARP解析,即系统将通过ARP解析而得到的本地网段内的主机路由也添加到FIB表中。由于FIB表中没有处于Inactive状态的冗余路由,通常FIB表项数量小于路由表项,所以可以设计将FIB表项加载到硬件中,以大大加快数据转发速度。

(3)快速转发表

第一个报文到达路由器的接口后,路由器查找快速转发表以期快速转发。但因为这个报文是第一个报文,快速转发表并没有这条数据流的转发信息的高速缓存,所以系统并不能进行快速转发。系统只能把这个报文转交到普通的FIB转发流程,由CPU负责在FIB表中查找相关转发项,然后进行封装,从出接口转发出去。与此同时,系统记录报文中的五元组信息,在高速缓存中生成相应快速转发信息。
执行命令ip fast-forwarding enable使能接口的快速转发能力后,可以通过执行命令display ip fast-forwarding table number查看设备上生成的IPv4快速转发表项数目。

注:
路由表通过控制平面生成相当于一张地图,包含所有的路由信息,可能去往同一目的地存在多条路径;FIB表存在于转发平面相当于GPS导航,对去往同一目的地中它值存放最优的路径;快速转发表使用五元组对照被分为多个分片的数据包,当第一个分片包通过FIB表实现转发的同时,生成快速转发表,当同一个包的后续分片经过此路由器时,首先查看快速转发表,如果匹配直接转发。
**

1.14 路由表生成

默认路由表中存在:

  1. /32环回口IP地址
  2. 环回口网段路由
  3. /32环回口网络广播地址
  4. 255.255.255.255广播路由

配置接口IP后存在:

  1. /32接口IP地址
  2. 接口IP网段
  3. /32接口网段广播地址

1.15 路由表组成部分

image.png

  1. Destination/Mask: 目标地址/网段掩码
  2. proto:协议
  3. pre:优先级
  4. Cost:开销
  5. Nexthop:下一跳地址
  6. Interface:去往下一跳的本地接口
  7. Flage:路由标记,默认直接根据出接口送出数据,将路由条目放到转发表。特殊情况下使用下一跳迭代查询出接口。
    1. D:将此路由条目下方到FIB表
    2. R:迭代路由,根据下一跳IP地址获取出接口
      1. 如果静态路由写的是下一跳地址,那么就迭代路由。根据下一跳找出接口。
      2. 如果静态路由写的出接口,那么就直接发到FIB表。

image.png路由迭代

1.16 进程ID

每种路由协议在同一台路由器上都可以启动多个进程,当同一个路由器上多个进程上有相同的路由条目。
选举过程为:

  1. 比较进程ID的优先级,优先级小的优先
  2. 比较Cost值,越小的越优先(OSPF忽略外部类型规则)
  3. Cost值相同,负载分担