三层网络
路由器负责为数据包选择一条最优路径,并进行转发
其中,路由表示路由器转发数据包的关键,每个路由器中都保存着一张路由表
路由表内容
- 目的地址,destination
- 路由类型,protocol
- 优先级,preferance
- 开销,cost
- 网络掩码,mask
- 出接口,interface
- 下一跳IP地址,nexthop
路由表是通过,链路层协议发现路由(直连链路);管理员手工配置静态路由;动态路由协议发现路由
静态路由配置
ip route-static ip-address { mask | mask-length } [ interface-type number | nexthop-address ] preference number
RIP
RIP,是基于距离矢量算法的协议,通过使用跳数作为度量来衡量到达目的网络的距离,主要用于规模较小的网络中
工作原理
运行RIP后,会首先发送路由更新请求,收到请求的路由器会发送自己的RIP路由进行响应,稳定后,也会周期性发送路由更新信息
是基于UDP封装的,端口号是520
缺省情况下,直连路由跳数为0,当路由更新时,会把度量值加1,RIP规定超过16跳为网络不可达
RIPv1与v2
v1:
- RIPv1是有类别路由协议,不支持VLSM和CIDR
- 以广播形式发送报文
- 不支持认证
通过使用UDP520来交换路由信息,目的IP为广播地址255.255.255.255
报文中的内容:
- command,表示报文是请求(1)还是响应(2)
- version,表示rip的版本
- address family identifier,表示地址标识信息,对于IP协议,其值为2
- IP address,表示目的IP地址
- metric,标识该路由的度量值,范围1~16
v2:
- RIPv2是无类别路由协议,支持VLSM,支持路由聚合与CIDR
- 支持以广播或者组播(224.0.0.9)方式发送报文
- 支持明文认证和MD5密文认证
报文中的内容:
- command,表示报文是请求(1)还是响应(2)
- version,表示rip的版本
- address family identifier,表示支持的协议类型和认证信息
- route tag,用于标记外部路由
- IP address,表示目的IP地址
- subnet mask,指定IP地址的子网掩码,定义IP地址的网络或子网部分
- next hop,下一跳地址
- metric,标识该路由的度量值,范围1~16
计时器
- 更新计时器,30s
- 老化计时器,180s,触发更新丢失了,感知不到数据包,在180s后,会老化丢弃这个路由
- 垃圾回收计时器,120s
RIP环路
非直连链路故障环路:
1.RIP网络正常运行时,A会通过B学习到10.0.0.0/8网络的路由,度量值为1
2.一旦路由器B的直连网络10.0.0.0/8产生故障,B会立即检测到该故障,并认为该路由不可达
3.A还没有收到该路由不可达的信息,于是会继续向B发送度量值为2的通往10.0.0.0/8的路由信息
3.B会学习此路由信息,认为可以通过A到达10.0.0.0/8网络
4.B发送的更新路由表,又会导致A路由表的更新,A会新增一条度量值为3的10.0.0.0/8网络路由表项,从而形成路由环路
–这个过程会持续下去,直到度量值为16–
水平分割
路由器从某个接口学到的路由,不会从该接口再发回给邻居路由器
毒性反转
路由器从某个接口学习到路由后,将该路由的跳数设置为16,并从原接收接口发回给邻居路由器
触发更新
当路由信息发生变化时,立即向邻居设备发送触发更新报文
缺省情况下,一台RIP路由器每30s会发送一次路由表更新给邻居路由器
RIP配置
在全局下配置:
rip [ process-id ]
version 2|1
# 用来选择使用的版本
network < network address >
# 在RIP中通告网络,该地址必须是一个自然地址
在接口下配置:
rip metricin < metric value >
# 用于修改接口上的度量值
rip metricout < time >
# 修改路由的度量值,本地的度量值不会发生变化
rip { split-horizon | poison-reverse }
# 水平分割 | 毒性逆转,两个都配置的情况下,只有毒化生效
rip output
# 允许一个接口发送RIP更新消息,一般会关掉防止连接外网的接口发布内部路由
rip input
# 用来允许指定接口接受RIP报文
silent-interface G number
# 抑制接口,使其只接受RIP报文,更新自己的路由表但是不发送
链路状态路由协议OSPF
工作过程
- 邻居建立
- 同步链路状态数据库
- 计算最优路由
邻居建立
每一个运行OSPF的设备都有一个唯一标识,router ID
[一般建议手动配置]
hello报文,发现并建立邻居
- 发现邻居:自动发现邻居路由器
- 建立邻居:完成hello报文中的参数协商,建立邻居关系
- 邻居保持:通过keepalive机制,检测邻居运行状态
建立过程:
- 双方都是down状态,发起hello(携带了自己的router-id)
- 双方收到对方的报文,转化为init状态,再次发送hello(携带自己的router-id和邻居router-id)
- 双方收到对方的报文,确认后,转化为2-way状态
一般情况下:
- OSPF采用组播的形式发送hello报文(目的:224.0.0.5);
- OSPF也支持通过单播的方式建立邻居关系,所以可以通过手动配置实现邻居的发现与维护
链路信息
- 链路的类型
- 接口IP地址及掩码
- 链路上所连接的邻居路由器
- 链路的带宽开销
网络类型
- P2P网络:仅两台路由器相连,支持广播、组播
- 广播型网络:两台以上的路由器通过共享介质互连,支持广播、组播
- NBMA网络:两台以上路由器通过VC互连,不支持广播、组播;[通过全互连的帧中继链路相连的路由器网络]
- P2MP网络:多个点到点网络的集合,支持广播、组播
度量方式
某接口的cost = 参考带宽 / 实际带宽
更改方式:接口下直接配置,修改参考带宽[每个路由器都要修改,确保选路]
报文内容
协议 = 》IP:89
- version:对当前所使用的ospf指定版本
- type:ospf的报文类型
- packet length:表示整个ospf报文的长度,单位是字节
- router id:表示生成此报文的路由器的router id
- area id:表示此报文需要被通告到的区域
- checksum:校验字段,其校验的范围是整个ospf报文,包括ospf报文头部
- auth type:0=表示不认证,1=明文密码认证,2=密文密码认证
- authentication:认证所需的信息
报文类型
- hello报文:用于发现,维护邻居关系
- DD(database description)报文:同步LSDB数据库
- LSR(LSA request)报文:DD报文交互后,得知缺少的路由,则发送该报文请求缺失部分
- LSU(LSA update)报文:相对端发送LSA更新
- LSACK(Link State Acknowledgement)报文:用于对接收到的LSU报文进行确认
LSDB同步
- 两台设备都是exstart状态,双方发送DD报文
- A设备收到DD报文后,切换为exchange状态,并发送再次发送DD报文,其中包含了B的信息
- B设备收到这个DD报文后,也切换为exchange状态,并继续交互DD报文
- 交互后,需要更新的设备会变为loading状态,并发送LS request请求,接着交互LSU,LSA等报文,状态转化为Full
DR与BDR
DR:指定路由器,其负责在MA网络建立和维护邻接关系并负责LSA的同步
BDR:是DR的备份
DRother:是不相关的,不参与选举
LSA的类别
LSA中包含了:
- type,LSA类型,router-LSA是一类LSA,network-LSA是二类LSA
- LS id,链路状态ID
- adv rtr,产生此Router-LSA的路由器router ID
display ospf lsdb router self-originate
# 展示router-LSA,一类LSA
display ospf lsdb network self-originate
# 展示network-LSA,二类LSA
域间路由防环
其中三类LSA是network summary LSA,只能描述一条路由信息
- ospf划分了骨干区域和非骨干区域,所有非骨干区域均直接和骨干区域相连且骨干区域只有一个
- 非骨干区域之间的通信都要通过骨干区域中转
- 从骨干区域传来的三类LSA不再传回骨干区域
ABR是骨干区域和非骨干区域的交界设备,及至少有一个接口属于骨干区域
display ospf lsdb summary D.IP
外部路由引进
- ASBR,是引进外部路由的OSPF路由器,及在ospf中<import-route static>
- AS-External-LSA,是五类LSA,用来描述如何从ASBR到达外部
- ASBR-summary-LSA,是四类LSA,用来描述如何从ABR到达ASBR
display ospf lsdb ase self-originate
# 显示五类LSA
display ospf lsdb asbr self-originate
# 显示四类LSA
区域划分
- 传输区域:除了承载本区域发起的流量和访问本区域的流量外,还承载其他区域的流量
- 末端区域:只承载本区域的流量,访问其他区域通过单一出口
stub区域 or totally stub区域
stub区域的ABR不向stub区域内传播它接收到的自治系统外部路由,stub区域中路由器的LSDB,路由表规模都会大大减少:
- 骨干区域不能配置stub区域
- 如果要将一个区域配置成stub区域,则该区域中的所有路由必须都要配置成stub路由
- stub区域内不能存在ASBR
- 虚连接不能穿越stub区域建立
totally stub区域既不允许自治系统外部路由在本区域内传播,也不允许区域间路由在本区域内传播
ospf 1
area 1
stub [ no-summary ]
# 加上了no-summary则是totally stub区域
NSSA区域 OR Totally NSSA区域
NSSA区域能够将自治域外部路由引入并传播到整个OSPF自治域中,同时又不会学习来自OSPF网络其他区域的外部网络
totally nssa则是不允许三类LSA在本区域内泛洪
ospf 1
area 1
nssa [ no-summary ]
区域间路由汇总
在area中:
abr-summary IP mask
外部路由汇总
在ospf中:
asbr-summary IP mask
定时更新与触发更新
- 定时更新:LSA每1800s更新一次,3600s失效
- 触发更新:当链路状态发生变化之后,立即发送链路状态更新
认证
认证模式有:null,simple,MD5以及HMAC-MD5
- 区域认证
- 接口认证