路由和路由协议
路由器
硬件构成
RAM
随机访问内存
存有:
- 路由表
- ARP table
- Fast switching cache
- Packet buffering
- Packet hold queues
NVRAM
非易失内存
存有:
- backup,startup的配置文件
Flash
类似于硬盘的存储器
存有:
- 操作系统
- 其他文件
ROM
只读存储器
存有:
- POST(Power On Self Test) 启动自检系统
- bootstrap program 操作系统引导程序
- 一个mini版的操作系统
接口
种类很多,常见的有串口,以太网口和控制接口等。
启动过程
- POST自检
- 基本数据校验
- 导入操作系统,引导操作系统
- 尝试从NVRAM导入完整的配置
- 如果没有从NVRAM中找到配置文件,提示可以进入start up mode
对于操作系统的导入,有以下的优先级。导入时会从上到下逐级考虑,只有上级缺失操作系统的必要文件时才会考虑下级。
- Flash 中的完整操作系统
- TFTP Server
- ROM 中的mini操作系统
进行配置时有以下优先级:
- NVRAM
- TFTP Server
- 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
路由器相邻之间交换路由表完成。
问题:可能发生循环造成路由器回路。
解决方案:设置最大跳数;路由毒化;水平分割;计时器;设置被动端口。
Link-State
根据全局的视野进行路由线路选择,根据电路,路径的真实数据(如带宽)来决定路由路径,每个路由器对整个内部网络都有全面的认识。
LSA: link-state advertisement 一开始为了快速,只交换路由线路的LSA简略信息,如果有需求再请求详细信息。
过程:
- 路由器之间交换LSA
- 每个路由器获得全局的拓扑数据库
- 每个路由器以自己为根建立SPF树
- 根据树来生成路由表
而且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之间通过边界上的路由器完成沟通的任务。
Area被定义为32bit的数字,可以像ip地址一样书写,也可以直接简写成0,1或者2这样的数字。其中Area0为根,其他的Area都应当与Area0相连。由于Area是基于路由器端口进行划分的,所以会有一个路由器属于多个Area的情况,这个路由器也称为ABR即区域边界路由器。OSPF允许一个路由器同时跨三个及以内的Area。
OSPF过程
- 建立邻接关系
- 选举DR和BDR(当区域内是多路复用的情况时才有)
- 交换拓扑数据库
- 建立路由表
- 保持路由信息
SPF Tree的建立是以自己为根,将整个内网的有权图变成一棵最小生成树的过程。
至于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有关的数据:
Hello报文的TTL为1,所以只会发给邻居。
Hello相互确认后就会开始发DBD报文,IP较大的先发,接收方收到之后查看并发LSAck确认,如果有自己不认识的LSA还需要发送LSR进行请求,请求发送方将网段的详细信息发送过来。
如果超过4倍Hello周期还没有收到来自某个路由器的Hello,就认为这个路由器死了。
网络发生变化时,最先发现的路由器会先发目的ip为224.0.0.6的LSU报文给DR,然后DR通过224.0.0.5组播地址发送给其他路由器,所有路由器都应重新计算生成树和路由表。
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倍时间。