路由和路由协议

路由器

硬件构成

RAM

随机访问内存

存有:

  • 路由表
  • ARP table
  • Fast switching cache
  • Packet buffering
  • Packet hold queues

NVRAM

非易失内存

存有:

  • backup,startup的配置文件

Flash

类似于硬盘的存储器

存有:

  • 操作系统
  • 其他文件

ROM

只读存储器

存有:

  • POST(Power On Self Test) 启动自检系统
  • bootstrap program 操作系统引导程序
  • 一个mini版的操作系统

接口

种类很多,常见的有串口,以太网口和控制接口等。

启动过程

  1. POST自检
  2. 基本数据校验
  3. 导入操作系统,引导操作系统
  4. 尝试从NVRAM导入完整的配置
  5. 如果没有从NVRAM中找到配置文件,提示可以进入start up mode

对于操作系统的导入,有以下的优先级。导入时会从上到下逐级考虑,只有上级缺失操作系统的必要文件时才会考虑下级。

  1. Flash 中的完整操作系统
  2. TFTP Server
  3. ROM 中的mini操作系统

进行配置时有以下优先级:

  1. NVRAM
  2. TFTP Server
  3. Console 即控制台输入

配置指令

此处内容参考 CISCO 基本配置指令,感谢原作者!

1:进入特权模式enable

router > enable

router #

2:进入全局配置模式

router > enable

router #configure terminal

router (conf)#

3:交换机命名

router > enable

router #configure terminal

router(conf)#hostname routerA

routera (conf)#

4:配置使能口令

router > enable

router #configure terminal

router(conf)#hostname routerA

routerA (conf)# enable password cisco

5:配置使能密码

router > enable

router #configure terminal

router(conf)#hostname routerA

routerA (conf)# enable secret ciscolab

6:进入路由器某一埠

interface fastehernet 0/17以17埠为例

router > enable

router #configure terminal

router(conf)#hostname routerA

routerA (conf)# interface fastehernet 0/17

routerA (conf-if)#

进入路由器的某一子埠interface fastethernet 0/17.1以17埠的1子埠为例

router > enable

router #configure terminal

router(conf)#hostname routerA

routerA (conf)# interface fastehernet 0/ 17.1

7:设置埠ip位址资讯

router > enable

router #configure terminal

router(conf)#hostname routerA

routerA(conf)# interface fastehernet 0/17以17埠为例

routerA (conf-if)#ip address 192.168.1.1 255.255.255.0配置交换机埠ip和子网路遮罩

routerA (conf-if)#no shut是配置处于运行中

routerA (conf-if)#exit

8:查看命令show

router > enable

router # show version察看系统中的所有版本资讯

show interface vlan 1查看交换机有关ip协定的配置资讯

show running-configure查看交换机当前起作用的配置资讯

show interface fastethernet 0/1察看交换机1介面具体配置和统计资讯

show mac-address-table查看mac地址表

show mac-address-table aging-time查看mac位址表自动老化时间

show controllers serial +编号查看串口类型

show ip router查看路由器的路由表

9:cdp相关命令

router > enable

router # show cdp查看设备的cdp全局配置资讯

show cdp interface fastethernet 0/17查看17埠的cdp配置资讯

show cdp traffic查看有关cdp包的统计资讯

show cdp nerghbors列出与设备相连的cisco设备

10:csico2600的密码恢复

重新启动路由器,在启动过程中按下win+break键,使路由器进入rom monitor

在提示符下输入命令修改配置寄存器的值,然后重新启动路由器

remmon1>confreg 0x2142

remmon2>reset

重新启动路由器后进入setup模式,选择“no”,退回到exec模式,此时路由器原有的配置仍然保存在startup-config中,为使路由器恢复密码后配置不变把startup-config中配置保存到running-config中,然后重新设置enable密码,并把配置寄存器改回0x2102:

router>enable

router#copy startup-config running-config

router#configure terminal

router(conf)#enable password cisco

router(conf)#c onfig-register 0x2102

保存当前配置到startup-config ,重新启动路由器。

router #copy running-config startup-config

router #reload

11:路由器telnet远端登录设置:

router>en

router #configure terminal

router (conf)#hostname routerA

routerA (conf)#enable password cisco以cisco为特权模式密码

routerA (conf)#interface fastethernet 0/1以17埠为telnet远端登录埠

routerA (conf-if)#ip address 192.168.1.1 255.255.255.0

routerA ( conf-if)#no shut

routerA (conf-if)#exit

routerA (conf)line vty 0 4设置0-4个用户可以telnet远端登陆

routerA (conf-line)#login

routerA (conf-line)#password edge以edge为远端登录的用户密码

主机设置:

ip 192.168.1.2主机的ip必须和交换机埠的位址在同一网路段

netmask 255.255.255.0

gate-way 192.168.1.1闸道位址是交换机埠位址

运行:

telnet 192.168.1.1

进入telnet远端登录介面

password : edge

routera>en

password: cisco

routera#

12:配置路由器banner

在全局配置的模式下利用“banner”命令可以配置路由器的提示资讯,所有连接到路由器的终端都会收到。

router>en

router #c onfigure terminal

router (conf)#hostname routerA

routerA(conf)#banner motd This is aptech company’ router ! Please don’t change the configuration without permission!

13:配置description

介面标识用于区分路由器的各个介面。

router>en

router #c onfigure terminal

router (conf)#hostname routerA

routerA(conf)#interface fastethernet 0/1以0/1介面为例

routerA(conf-if)# description this is a fast Ethernet port used to connecting the company’s intranet!

14:配置超时

超时适用于设置在多长时间没有对console进行配置,自动返回exec会话时间。默认为10分钟。

router>en

router #c onfigure terminal

router (conf)#hostname routerA

routerA(conf)#line console 0

routerA(conf-if)#e xec-timeout 0 0第一个“0”代表分钟,第二个“0”代表秒

15:配置串口参数

两台路由器通过串口连接需要一个做为DTE,一个做为DCE。DCE设备要向DTE设备提供时钟频率和带宽。

DCE配置:

router>en

router #c onfigure terminal

router (conf)#hostname routerA

routerA(conf)#interface serial 0/0

routerA(conf_if)#clock rate 64000提供时钟频率为64000

routerA(conf_if)#bandwidth 64提供带宽为64

DTE配置:路由器串口配置ip位元元址

router>en

router #c onfigure terminal

router (conf)#hostname routerB

routerB(conf)#interface serial 0/0

routerB(conf_if)#ip address 192.168.1.1 255.255. 255.0

16:静态路由的配置

配置路由器A的主机名和介面参数

router>enable

router#c onfigure terminal

router(conf)#hostname routerA

routerA(conf)#interface fastethernet 0/1路由器A的1埠为两路由器的连接埠

routerA(conf-if)#ip address 192.168.2.1 255.255.255.0

routerA( conf-if)#no shutdown

routerA(conf-if)#exit

routerA(conf)# interface fastethernet 0/0路由器A的0埠为与主机的连接埠

routerA(conf-if)#ip address 192.168.1.2 255.255. 255.0

routerA(conf-if)#no shutdown

配置路由器B的主机名和介面参数

router>enable

router#c onfigure terminal

router(conf)#hostname routerB

routerB (conf)#interface fastethernet 0/0路由器B的0埠为两路由器的连接埠

routerB(conf-if)#ip address 192.168.2.2 255.255.255.0

routerB(conf-if)#no shutdown

routerB (conf-if)#exit

routerB(conf)# interface fastethernet 0/1路由器B的1埠为与主机的连接埠

routerB(conf-if)#ip address 192.168.3.1 255.255.255.0

routerB(conf-if)#no shutdown

配置路由器A的静态路由表

routerA(conf)#ip router 192.168.3.0 255.255.255.0 192.168.2.2

配置路由器B的静态路由表

routerA (conf)#ip router 192.168.1.0 255.255.255.0 192.168.2.1

在routerA和routerB上配置默认路由

routerA(conf)#ip route 0.0.0.0 0.0.0.0 192.168.2.2

routerA(conf)#ip classless

routerB(conf) #ip route 0.0.0.0 0.0.0.0 192.168.2.1

routerB(conf)#ip classless

17: 默认路由配置

以192.168.2.1为例,设置所有未知网段都转发到192.168.2.1这个下一跳地址。也可以用出口接口编号代替。

router(config)#ip default-network 192.168.2.1

router(config)#ip route 0.0.0.0 0.0.0.0 192.168.2.1

路由方案

路由器有两大主要职责,即路径选择和报文转发,其中路径选择是路由器最大的特点。

选择路径总体来说有两大方法:

  • 静态路由,即手动输入路由表,配置生效后不会变化。这种方法可以确保安全。
  • 动态路由,路由器起一个进程,和相邻的路由器进行交流来动态产生,可能暴露信息。

静态路由配置

在全局配置模式下,使用以下指令格式就可以配置静态路由表了:

ip route network (mask) address|interface (distance)

粗体是固定的,network是一个网络地址,mask是可选的子网掩码,然后在address(下一跳路由器的ip)和interface(本路由器的一个接口)中选择一个填入,最后还可以填入distance。distance越大可信度越低,默认为1。

动态路由协议

有很多种不同的协议。评判这些协议好坏的标准是收敛时间。收敛时间是指:从路由器开启到达到对网络有一个稳定的认识的状态(收敛状态)的所需时间。

这里只关注IGP(内部网关协议)。内部网关协议主要分为两类:

  • Distance Vector 基于跳数
  • Link State 基于连接状态

Distance Vector

路由器相邻之间交换路由表完成。

问题:可能发生循环造成路由器回路。

解决方案:设置最大跳数;路由毒化;水平分割;计时器;设置被动端口。

根据全局的视野进行路由线路选择,根据电路,路径的真实数据(如带宽)来决定路由路径,每个路由器对整个内部网络都有全面的认识。

LSA: link-state advertisement 一开始为了快速,只交换路由线路的LSA简略信息,如果有需求再请求详细信息。

过程:

  1. 路由器之间交换LSA
  2. 每个路由器获得全局的拓扑数据库
  3. 每个路由器以自己为根建立SPF树
  4. 根据树来生成路由表

而且LS是只有当有事件发生时才会重新交换拓扑数据库,重新计算路由。

LS和DV的对比:

DV LS
从邻居获得数据,视野较小 全局视角
基于跳数 基于带宽(和其他线路数据)
定期交换路由表 只有当事件发生时才交换
收敛较慢 收敛较快
交换的信息是路由表 交换的信息是拓扑数据库

常见协议

  • RIP:DV
  • OSPF:LS
  • IGRP:DV
  • RIGRP:杂合
  • IS_IS:杂合

杂合就是只有DV的特征也有LS的特征

路由协议的衡量量化标准是AD值,AD值越低则代表协议越好.

经典路由协议详解

主要讲解RIP和OSPF两个协议,以此对DV和LS两种路由选择方式都有一定的了解。

RIP协议

RIP协议是一种DV方式的协议。默认每30秒相邻路由器之间交换路由表,并且一般设置15跳为最大可达跳数。可以做负载均衡,default默认为4条路径。

RIP历史上分为RIPv1和RIPv2两个版本,但是RIPv1存在很多问题,比如不支持子网掩码,不支持身份认证,而且使用受限广播地址255.255.255.255作为交换路由表使用的ip地址。RIPv2可以防止回路,引入保留时间(holdon time)为默认的180s,同时使用水平分割。并且加入了身份认证,使用组播地址224.0.0.9来发RIP路由表报文。配置时如果想使用RIPv2需要显式声明version 2

路由器配置:

在routerA和routerB上配置動態路由(RIP)

routerA(conf)#router rip

routerA(conf)#network 192.168.1.0

routerA(conf)#network 192.168.2.0

routerB(conf)# router rip

routerB(conf)#network 192.168.2.0

routerB(conf)#network 192.168.3.0

可以在特权模式下使用show ip route来查看路由表,看到动态路由的配置情况。如果前面有一个C表示路由器直连到该网段,而如果前面是R标记,表示这一条目是通过RIP协议从其他路由器哪里学到的。

OSPF协议

是一种LS方式的路由协议。适用于大规模网络,有层次,可以划分Area(使用VLSM可变长子网掩码来协助划分)。

OSPF会基于线路带宽计算得到线路的cost,然后计算得到到达目的路由网段有最小cost的路径,并通过这条路径进行转发。

划分Area

OSPF可以将整个内部网络划分成许多Area,然后每个Area内部独立管理,Area之间通过边界上的路由器完成沟通的任务。

OSPF_Area

Area被定义为32bit的数字,可以像ip地址一样书写,也可以直接简写成0,1或者2这样的数字。其中Area0为根,其他的Area都应当与Area0相连。由于Area是基于路由器端口进行划分的,所以会有一个路由器属于多个Area的情况,这个路由器也称为ABR即区域边界路由器。OSPF允许一个路由器同时跨三个及以内的Area。

OSPF过程

  1. 建立邻接关系
  2. 选举DR和BDR(当区域内是多路复用的情况时才有)
  3. 交换拓扑数据库
  4. 建立路由表
  5. 保持路由信息

SPF Tree的建立是以自己为根,将整个内网的有权图变成一棵最小生成树的过程。

SPF

至于DR和BDR什么情况下选举,如果是点对点和点对多点的网络中不选举,而对于多路复用的网络结构比如以太网,令牌环网和其他广播和非广播网络中会选举,可以提高信息交换的效率。一旦网络状态发生变化时,如果选举有BR,则第一个发现的路由器会直接将消息发送给BR,然后BR负责再将消息发送给其他路由器,比两两相传效率更高。

OSPF报文

分为五类:

  • Hello
  • Database Description (DBD)
  • Link State Request (LSR)
  • Link State Update (LSU)
  • Link State Acknowledge (LSAck)

Hello报文中含有和选举DR和BDR有关的数据:

OSPF_Hello

Hello报文的TTL为1,所以只会发给邻居。

Hello相互确认后就会开始发DBD报文,IP较大的先发,接收方收到之后查看并发LSAck确认,如果有自己不认识的LSA还需要发送LSR进行请求,请求发送方将网段的详细信息发送过来。

如果超过4倍Hello周期还没有收到来自某个路由器的Hello,就认为这个路由器死了。

网络发生变化时,最先发现的路由器会先发目的ip为224.0.0.6的LSU报文给DR,然后DR通过224.0.0.5组播地址发送给其他路由器,所有路由器都应重新计算生成树和路由表。

OSPF_Header

DR、BDR选举

选举的标准是Priority+RouterID。这里的Priority是手动配置的,置为255就表示改路由器一定会做DR,置为0表示不能做DR,也可能配置0~255之间的值分配优先级。RouterID是loopback ip address即回路IP地址,也就是可以通过telnet远程连接路由器的那个IP地址,需要手动配置。如果没有配置,则会选择最大的端口IP地址作为RouterID。

路由器配置

配置OSPF

Router(config)#router ospf process_id

Router(config)#network address wildcardmask area areaid

process_id是进程号,随便给。wildcardmask是subnetmask按位取反,areaid是区域号

配置回路地址

建议开启OSPF之前先配回路地址

Router(config)#interface loopback number

Router(config-if)#ip address addresss subnetmask

一般subnetmask填写255.255.255.255即可

Router(config-if)#ip ospf priority number

优先级number在0~255之间取值。

配置Cost

线路的Cost默认通过带宽反比计算得到,但是也可以人为配置。还可以配置带宽间接配置cost

进入相应的端口后

Router(config-if)#ip ospf cost number

Router(config-if)#bandwidth number

其他参数

Router(config-if)# ip ospf hello-interval seconds

Router(config-if)# ip ospf dead-interval seconds

一般情况下默认后者是前者的4倍时间。