Routing & Routers

路由和路由器

1. 路由器基础

1.1. 路由器

路由器(Router,又称路径器)是一种电讯网络设备,提供路由转送两种重要机制,可以决定数据包由来源端到目的端所经过的路径(host到host之间的传输路径),这个过程称为路由;将路由器输入端的数据包移送至适当的路由器输出端(在路由器内部进行),这称为转送。路由工作在OSI模型的第三层——即网络层,例如网际协议(IP)

1.2. 内部组成

pic80

1.1.1. RAM

用于暂时存储路由器配置文件, 一旦失去动力或重启,RAM的内容就丢失了. 存储的内容包括:

  • 路由表
  • ARP地址解析协议缓存
  • 快速交换缓存
  • 包缓存
  • 包保留队列

1.1.2. NVRAM

非易失性RAM (Non-Volatile Random Access Memory), 存储备份/启动配置文件. 在路由器关闭或者重启时,内容不会丢失(可做文件恢复)

1.1.3. FLASH

FLASH是一种特殊的EEPROM (Electronically Erasable Programmable Read-Only Memory), 这里用于保存思科 IOS (Internet Operating System). 允许不替换闪存芯片的软件更新, 可以保存多种 IOS 版本, 关闭时也可以保存

1.1.4. ROM

  • 包含POST(Power On Self Test)
  • 一个引导程序(加载思科IOS)
  • 运行系统软件
    • 备份,削减IOS的版本
    • 更新需要安装的新芯片组

1.1.5. Interfaces接口

  • 通过网络连接,包进入或离开路由器

  • 连到底板上,或作为单独的模块

2. 路由器启动流程

2.1. 系统启动流程

  • 进行一个自身通电测试(POST): 在这个测试期间,路由器执行来自所有硬件模块的ROM的诊断程序

  • 验证CPU,存储器和网络连接端口的基础操作

  • 软件初始化

2.2. 软件启动流程

  • 步骤1 – ROM里的通用引导程序在CPU芯片上执行
  • 步骤2 – 操作系统(Cisco IOS)可以在几个地方之一,位置在配置寄存器的引导区域显示
  • 步骤3 – 加载操作系统的镜像
  • 步骤4 –保存在NVRAM里的配置文件被加载到主存,并且一次执行一行
  • 步骤5 – 如果NVRAM里没有有效的配置文件,那么执行一个问题导向的初始配置程序,即系统配置对话,也被称为setup mode设置模式.

2.3. 路由器启动流程

  • 设置模式并不应该进入有着复杂协议的路由器
  • 应该用设置来生成最小的配置,然后用各种各样的配置模式命令,而不是设置,来完成大部分路由器配置任务
  • pic83

2.4. 基本的路由配置

路由器基本配置命令语法

2.5. 执行基本的编址方案

2.6. 检验基本的路由配置

  • 使用 show running-config 命令
  • 存储路由器基本配置 copy running-config startup-config
  • 其他检验路由器的命令:
    • Show running-config – 显示当前随机访问存储器中的配置
    • Show startup-config – 显示NVRAM中的配置文件
    • Show IP route – 现实路由表
    • Show interfaces – 显示所有接口的配置信息
    • Show IP int brief -显示接口的简要信息

3. 路由

3.1. 基本概念

  • 路由器通常使用path determination路径选择和switching转换,两个基础功能,将包从一个数据链路转发到另一个

  • Switching转换功能允许一个路由器接受来自接口的包然后将它通过第二个接口转发出去

  • path determination路径选择功能使得路由器可以选择最合适的接口来转发包

  • 路由器使用地址的网络部分来选择转发包到下一个路由器的路径

  • 路由器直接使用地址的节点部分来连接目的网络,来发送包到正确的主机

    pic86

3.2. 静态和动态

  • 为了安全的原因,你可能想要隐藏部分网络,然而动态路由想要显示所有关于网络的信息

  • 当一个网络只能被一条路径连接时,静态路由就足够了

  • 这种类型的分割被称为桩网络stub network.

  • 静态路由

    pic88

    • 静态路由配置
      • 静态路由允许手动配置路由表
      • pic90
      • pic89
    • 管理距离
      • 管理距离是一个对于路由信息来源的信任度等级,表示为一个从0到255的数值
      • 数值越高,信任度等级越低
      • 所以静态路由的管理距离通常较低(1是默认值)
  • 动态路由

    • pic91
    • 动态路由协议在网络不同路径之间重定向(load share荷载分配)通信量
    • pic92
    • 动态路由依赖路由协议来在路由器间共享信息
    • 动态路由依赖两个基础的路由器功能:
      • 保持路由表
      • 把信息分发给其它路由器
    • 收敛发生时间
    • pic93

3.3. 路由协议的分类

  • Distance-Vector Protocol 距离矢量协议

    • pic94

    • 距离矢量算法不允许路由器了解网络拓扑的确切结构

    • 基于距离矢量的路由算法 (也被称为Bellman-Ford algorithms) 将路由表的周期性副本从路由器转发到另一个路由器

    • 问题:

      • 问题1:路由成环

        pic95

      • 问题2:无限计数

      • pic96

      • 问题描述:

        • 无效的网络1更新会持续循环直到其它进程停止这个循环
        • 这种情况称为无限计数count to infinity,尽管基础事实是目的网络1已经关闭,包仍旧被不停地在网络中循环
        • 尽管路由器不停地计数,无效信息允许一个路由循环退出
      • 解决方案:

        • 方案一:定义最大
          • pic97
        • 方案二:路由中毒
          • 当网络5停止,路由器E通过给网络5添加一个表条目16或不可达,
          • 当路由器C收到来自路由器E的路由中毒,它反过来发送一个称为毒性逆转的更新给路由器。这保证了段上所有路由器都收到了有毒的路由信息
          • pic98
        • 方案三:水平分割
          • pic99
        • 方案四:挂起计数器
          • pic100
    • 阻断发送路由更新

      • 为了阻止接口发送任何路由更新信息,使用以下命令行:
        • Router(config-router)#Passive-interface f0/0
      • 它只在使用距离矢量协议的时候有效,因为链路状态路由协议并不直接从邻居的路由表中获得拓扑信息
  • 链路状态协议

    • 基于路由算法,也被称为SPF (最短路径优先) 算法的链路状态维持了一个复杂的拓扑信息数据库
      链路状态路由使用了:
      • link-state advertisements(LSAs)链路状态广播
      • 一个拓扑数据库
      • SPF算法,和基于SPF算法生成的树
      • 一个到各个网络的路径和端口的路由表
    • RFC 1583包括OSPF链路状态概念和操作的描述
    • 具体描述
      • 路由器互相交换LSAs 。每个路由器由直连网络开始
      • 每个并行路由器建立一个拓扑数据库,由互联网中所有LSAs组成 router in parallel with the other
      • SPF算法计算网络可达性. 路由器把这个逻辑拓扑建立成树,以自己为根,由链路状态协议互联网中所有可能到达每个网络的路径组成。接着,它按照SPF给路径分类
      • 路由器在路由表中,列出它的最佳路径,和通往这些目的网络的端口。它也维持其它拓扑元素和状态细节的数据库
      • pic101
    • 链路状态涉及方面
      • 处理和内存需求
        • 大多数情况下,运行链路状态路由协议,比用距离矢量路由协议,需要路由器使用更多内存、处理更多事务
      • 带宽需求
        • 在最初的链路状态包洪泛flood的时候,所有路由器使用链路状态路由协议来发送LSA包到其它路由器。当路由器需要带宽时,这个行为像洪水一般冲刷了互联网,并且暂时减少了给携带用户数据的路由通信,可用的路由带宽。
    • 问题:链路状态更新
      • 链路状态路由必须保证所有路由器获得了需要的LSA包
      • 有不同LASs集合的路由器,基于不同的拓扑数据,计算路由
      • pic102
    • 比较:链路状态和矢量协议
      • 距离矢量:
        • 从邻居的视角来看网络拓扑
        • 从路由器到路由器,增加距离矢量
        • 周期性、频繁的更新,汇聚慢
        • 向相邻的路由器发送路由表的副本
      • 链路状态:
        • 获得整个网络拓扑的整体构造
        • 计算到达其它路由的最短路径
        • 事件触发更新,汇聚快
        • 把链路状态更新的部分发给其它路由器
  • 混合协议

    • pic103
    • 混合协议的实例:
      • OSI’s IS-IS 中间系统到中间系统协议
      • Cisco’s EIGRP增强内部网关路由协议
  • 路由routing协议

    • pic104

    • IP路由协议包括:

      • RIP – 一个距离矢量路由协议
      • IGRP – 思科的路由矢量路由协议
      • OSPF – 一个链路状态路由协议
      • EIGRP – 一个平衡的混合路由协议
    • 路由routing协议的主要目标

      • 最优路径—选择最好的路由
      • 高效性—最小化带宽和路由器处理器资源的使用
      • 快速汇聚Convergence—更快,更好。有些比其他汇聚更快
      • 灵活性—可以处理大多数情况,如高频率使用和失效路由
    • pic105

    • 定义默认路由

      • pic106
      • 默认路由使得路由表更短
      • 当一个目的网络条目不在路由表中的时候,包就被发往默认网络
        • 定义默认路由(1)
          • 定义一个默认路由,使用动态路由协议
          • Router(config)# ip default-network [network-number]
          • pic107
        • 定义默认路由(2)
          • 定义一个默认路由为静态路由:
          • Router(config)# ip route 0.0.0.0 0.0.0.0 [next-hop-ip-address| exit-interface]
          • 在配置默认路由后,使用show ip route 会显示: (172.16.1.2 is the default next-hop address)
            • 0.0.0.0网络的最后一个网关是172.16.1.2
    • RIP历史

      • RIP v1被看做是经典的内部网关协议

        • RIP v1是一个距离矢量协议,在已经决定好的时间间隔里,把它整个路由表广播给每一个相邻路由器 。默认时间间隔为30s
        • RIP 使用跳数作为度量标准,最大跳数为15
        • RIPv1 有以下限制:
          • 更新中不发送子网掩码信息
          • 它在255.255.255.255上广播更新
          • 它不支持鉴别authentication
          • 它不能支持VLSM或CIDR.
        • RIP v1配置
          • pic108
            • 路由器的“rip”命令选择RIP作为路由协议
            • “network”命令分配一个基于网卡的网络地址,就是被直连的网络
          • pic109
            • router rip
              • network 1.0.0.0
              • network 2.0.0.0
      • RIP v2 是 RIP v1的进阶版,共享以下优点:

        • 它是一个距离矢量协议,使用跳数作为度量标准

        • 它用挂起计数器来防止路由循环 – 默认180s

        • 它用水平分割来防止路由循环

        • 它用16跳来表示无限距离

        • RIP v2配置

          • “router”命令开始路由过程
          • “network”命令实现以下三个功能:
            • 路由更新通过一个接口多播出去
            • 如果路由更新进入同一个接口,它进入队列
            • 子网直接连到通知的接口
        • RIP v2配置示例

          • pic111
        • 核查&解决纷争

          • 核查 RIP v2
            • Router# show ip protocols
              • 核查RIP配置
            • Router# show ip route
              • 展示IP路由表
          • 解决纷争RIP v2
            • Router# debug ip rip
              • 展示RIP发送和收到的路由更新
            • Router# undebug all (/no debug all)
              • Router# 关闭所有调试
      • 对比RIP v2和RIP v1

        • pic110
    • OSPF概览

      • 最短路径优先(OSPF) 是一个基于开放标准的链路状态路由协议
      • 它在IETF的多个标准中被描述
        • 最近的描述是RFC 2328
      • 当和RIP v1 and RIP v2相比时,OSPF正在变成最好的IGP协议,因为它可扩展
    • 路由信息

      • 链路状态用于描述接口和到相邻路由器之间的关系
      • 链路状态的集合形成了一个链路状态数据库,有时叫拓扑数据库
      • 路由器以它们自己为根,实行Dijkstra shortest path first (SPF) 算法,来建立SPF树 tree
      • 路由器通过SPF树计算最佳路径,然后选择最佳路径存入路由表
    • OSPF vs RIP

      • OSPF RIP
        使用带宽作为度量衡
        适用于大型网络
        可以进一步划分网络
        支持 VLSM
        快速汇聚
        支持等耗的多种路径 使用跳数来计数
        适用于小型网络 (15跳)
        宽等级设计
        不支持 VLSM (RIP v1)
      • A到B的最佳路径是什么?

      • pic128
    • OSPF好处

      • OSPF 克服以下限制:
        • 更鲁棒
        • 更可扩展
      • 大型OSPF网络使用层级设计
        • pic129
    • OSPF术语

      • 链路:两个网络设备之间的物理连接
      • 链路状态:两个路由器之间链路的状态,包括关于路由器接口和它与相邻路由器之间关系的信息。
      • 开销cost:每个链路被分配的值,链路状态协议基于链路带宽,而不是跳数,分配给链路一个开销
      • 区域:有着同样区域ID的网络/路由器集合,在同一个区域的每个路由器有着同样的链路状态信息
      • 自治系统
        • 邻居关系数据库邻居列表:一个有着所有,和本路由器建立双向通讯的,邻居的列表
        • 拓扑数据库所有路由的列表:一个关于互联网中其他所有路由器信息的列表,它展示了互联网的拓扑
        • 路由表最佳路径列表:优势叫做转发数据库,每个路由器的路由表都是独特的
      • 指定路由器(DR):一个在OSPF多路访问网络中的路由器,被选中代表网络中所有路由器
      • 备份指定路由器(BDR):一个备用的路由器,如果DR挂了,它就成DR了
    • OSPF地区

      • 地区被定义为32位数
        • 要么IP形式,要么单独十进制值
        • Area 0 or Area 0.0.0.0
      • Area 0:一个单独地区,地区号为0
      • OSPF使用2级分层模型
      • 在多地区OSPF网络中,所有地区需要连接到area 0(backbone)
      • 示例
        • pic130
    • OSPF操作

      • OSPF使用邻居邻接来获得对于整个网络的认知
      • OSPF操作有5步:
        • Step1: 开始邻接关系
        • Step2: 选择DR和BDR (如果需要)
        • Step3: 发现路由
        • Step4: 选择合适路由
        • Step5: 维持路由信息
      • OSPF有7种状态,它们是:
        • Init, 2Way, Ex Start, Exchange, Loading, Full
    • 最短路径算法

      • 最短路径算法计算了一个没有循环的拓扑,把当前节点作为开始点来检查返回的关于邻接节点的信息
      • pic131
    • 选择DR和BDR

      • OSPF网络类型
        • 广播多路访问,如以太网
        • 点对点网路
        • 无广播多路访问(NBMA)
      • pic132
      • DR&BDR
        • pic133
        • 然后每个路由器与DR和BDR建立邻接
        • DR 发送链路状态信息到网段上其它所有路由器,用多播地址224.0.0.5 给所有OSPF路由器
        • 为了保证DR/BDR看见网端上所有路由器发送的链路状态,给所有DR/BDR的多播地址是224.0.0.6
    • OSPF在多路访问介质中

      • Giga/Fast/Ethernet, FDDI, Token Ring
      • pic134
    • 基本OSPF配置

      • 允许路由器使用OSPF
        • Router (config) # router ospf process-id
          • process-id
            • 值:1 ~ 65535
            • 识别路由器上的多个OSPF进程
            • 通常整个AS保持同样的进程ID
      • 识别路由器上的IP
        • Router (config-router) # network address wildcard-mask area area-id
        • 网络地址可以是一整个网络、子网、或接口地址
    • OSPF开销=度量单位

      • 开销应用与所有路由器链路
      • 16位数(1 – 65,535)
      • 低开销 = 更令人满意
      • 路由选择是基于路径总开销制定的
      • 度量源自带宽
      • pic135
    • OSPF路径开销

      • 连接到同一个链路的接口必须有一致的开销,否则,链路要被挂起
        • 思科路由器对一个链路的默认开销是1784 ( 56Kbps 带宽 )
          • Router (config-if) # ip ospf cost number(1-65535)
        • 如果链路由更低的速度,你必须指明实际链路速度
          • Router (config-if) # bandwidth number(kbps)