OSPF支持触发更新,能够快速检测并通告自治系统内的拓扑变化。 OSPF可以解决网络扩容带来的问题。当网络上路由器越来越多,路由 信息流量急剧增长的时候,OSPF可以将每个自治系统划分为多个区域, 并限制每个区域的范围。OSPF这种分区域的特点,使得OSPF特别适 用于大中型网络。OSPF还可以同其他协议(比如多协议标记切换协议 MPLS)同时运行来支持地理覆盖很广的网络
OSPF要求每台运行OSPF的路由器都了解整个网络的链路状态信息, 这样才能计算出到达目的地的最优路径。OSPF的收敛过程由链路状态 公告LSA(Link State Advertisement)泛洪开始,LSA中包含了路由器 已知的接口IP地址、掩码、开销和网络类型等信息。收到LSA的路由器 都可以根据LSA提供的信息建立自己的链路状态数据库LSDB(Link State Database),并在LSDB的基础上使用SPF算法进行运算,建立 起到达每个网络的最短路径树。最后,通过最短路径树得出到达目的网 络的最优路由,并将其加入到IP路由表中
OSPF直接运行在IP协议之上,使用IP协议号89。 OSPF有五种报文类型,每种报文都使用相同的OSPF报文头。
- Hello报文:最常用的一种报文,用于发现、维护邻居关系。并在广 播和NBMA(None-Broadcast Multi-Access)类型的网络中选举指 定路由器DR(Designated Router)和备份指定路由器BDR( Backup Designated Router)。
- DD报文:两台路由器进行LSDB数据库同步时,用DD报文来描述自 己的LSDB。DD报文的内容包括LSDB中每一条LSA的头部(LSA的 头部可以唯一标识一条LSA)。LSA头部只占一条LSA的整个数据量 的一小部分,所以,这样就可以减少路由器之间的协议报文流量。
- LSR报文:两台路由器互相交换过DD报文之后,知道对端的路由器 有哪些LSA是本地LSDB所缺少的,这时需要发送LSR报文向对方请 求缺少的LSA,LSR只包含了所需要的LSA的摘要信息。
- LSU报文:用来向对端路由器发送所需要的LSA。
- LSACK报文:用来对接收到的LSU报文进行确认。
在配置OSPF时,需要首先使能OSPF进程。 命令ospf [process id]用来使能OSPF,在该命令中可以配置进程ID。如 果没有配置进程ID,则使用1作为缺省进程ID。 命令ospf [process id] [router-id <router-id>]既可以使能OSPF进程,还 同时可以用于配置Router ID。在该命令中,router-id代表路由器的ID。 命令network用于指定运行OSPF协议的接口,在该命令中需要指定一 个反掩码。反掩码中,“0”表示此位必须严格匹配,“1”表示该地址 可以为任意值。
GRE用来对某些网络层协议如IPX(Internet Packet Exchange)的报文 进行封装,使这些被封装的报文能够在另一网络层协议(如IP)中传输 。GRE可以解决异种网络的传输问题。 IPSec ×××技术可以创建一条跨越共享公网的隧道,从而实现私网互联 。IPSec ×××能够安全传输IP报文,但是无法在隧道的两个端点之间运 行RIP和OSPF等路由协议。GRE可以将路由协议信息封装在另一种协 议报文(例如IP)中进行传输。
GRE封装报文时,封装前的报文称为净荷,封装前的报文协议称为乘客 协议,然后GRE会封装GRE头部,GRE成为封装协议,也叫运载协议 ,最后负责对封装后的报文进行转发的协议称为传输协议。 GRE封装和解封装报文的过程如下:
- 设备从连接私网的接口接收到报文后,检查报文头中的目的IP地址 字段,在路由表查找出接口,如果发现出接口是隧道接口,则将报 文发送给隧道模块进行处理。
- 隧道模块接收到报文后首先根据乘客协议的类型和当前GRE隧道配 置的校验和参数,对报文进行GRE封装,即添加GRE报文头。
- 然后,设备给报文添加传输协议报文头,即IP报文头。该IP报文头 的源地址就是隧道源地址,目的地址就是隧道目的地址。
- 最后,设备根据新添加的IP报文头目的地址,在路由表中查找相应 的出接口,并发送报文。之后,封装后的报文将在公网中传输。
- 接收端设备从连接公网的接口收到报文后,首先分析IP报文头,如 果发现协议类型字段的值为47,表示协议为GRE,于是出接口将报 文交给GRE模块处理。GRE模块去掉IP报文头和GRE报文头,并根 据GRE报文头的协议类型字段,发现此报文的乘客协议为私网中运 行的协议,于是将报文交给该协议处理
interface tunnel interface-number命令用来创建Tunnel接口。创建 Tunnel接口后,需要配置Tunnel接口的IP地址和Tunnel接口的封装协议 。 tunnel-protocol命令用来配置Tunnel接口的隧道协议。 source { source-ip-address | interface-type interface-number }命令用 来配置Tunnel源地址或源接口。 destination dest-ip-address命令用来指定Tunnel接口的目的IP地址。 在本端设备和远端设备上还必须存在经过Tunnel转发的路由,这样,需 要进行GRE封装的报文才能正确转发。经过Tunnel接口转发的路由可以 是静态路由,也可以是动态路由。配置静态路由时,路由的目的地址是 GRE封装前原始报文的目的地址,出接口是本端Tunnel接口。
IPsec ×××
IPSec是IETF定义的一个协议组。通信双方在IP层通过加密、完整性校 验、数据源认证等方式,保证了IP数据报文在网络上传输的机密性、完 整性和防重放。
- 机密性(Confidentiality)指对用户数据进行加密保护,用密文的形 式传送数据。
- 完整性(Data integrity)指对接收的数据进行认证,以判定报文是 否被篡改。
- 防重放(Anti-replay)指防止恶意用户通过重复发送捕获到的数据 包所进行的攻击,即接收方会拒绝旧的或重复的数据包。 企业远程分支机构可以通过使用IPSec ×××建立安全传输通道,接入到 企业总部网络。
IPSec ×××体系结构主要由AH(Authentication Header)、ESP( Encapsulating Security Payload)和IKE(Internet Key Exchange)协 议套件组成。
- AH协议:主要提供的功能有数据源验证、数据完整性校验和防报文 重放功能。然而,AH并不加密所保护的数据报。
- ESP协议:提供AH协议的所有功能外(但其数据完整性校验不包括 IP头),还可提供对IP报文的加密功能。
- IKE协议:用于自动协商AH和ESP所使用的密码算法。
SA(Security Association)安全联盟定义了IPSec通信对等体间将使用 的数据封装模式、认证和加密算法、秘钥等参数。SA是单向的,两个对 等体之间的双向通信,至少需要两个SA。如果两个对等体希望同时使用 AH和ESP安全协议来进行通信,则对等体针对每一种安全协议都需要协 商一对SA。 SA由一个三元组来唯一标识,这个三元组包括安全参数索引SPI( Security Parameter Index)、目的IP地址、安全协议(AH或ESP)。 建立SA的方式有以下两种:
- 手工方式:安全联盟所需的全部信息都必须手工配置。手工方式建 立安全联盟比较复杂,但优点是可以不依赖IKE而单独实现IPSec功 能。当对等体设备数量较少时,或是在小型静态环境中,手工配置 SA是可行的。
- IKE动态协商方式:只需要通信对等体间配置好IKE协商参数,由 IKE自动协商来创建和维护SA。动态协商方式建立安全联盟相对简 单些。对于中、大型的动态网络环境中,推荐使用IKE协商建立SA
项目环境
本示例中的IPSec ×××连接是通过配置静态路由建立的,下一跳指向 RTB。需要配置两个方向的静态路由确保双向通信可达。建立一条高级 ACL,用于确定哪些感兴趣流需要通过IPSec ×××隧道。高级ACL能够 依据特定参数过滤流量,继而对流量执行丢弃、通过或保护操作。 执行ipsec proposal命令,可以创建IPSec提议并进入IPSec提议视图。 配置IPSec策略时,必须引用IPSec提议来指定IPSec隧道两端使用的安 全协议、加密算法、认证算法和封装模式。缺省情况下,使用ipsec proposal命令创建的IPSec提议采用ESP协议、DES加密算法、MD5认 证算法和隧道封装模式。在IPSec提议视图下执行下列命令可以修改这 些参数。 执行transform [ah | ah-esp | esp]命令,可以重新配置隧道采用的安全 协议。 执行encapsulation-mode {transport | tunnel }命令,可以配置报文的 封装模式。 执行esp authentication-algorithm [md5 | sha1 | sha2-256 | sha2- 384 | sha2-512 ]命令,可以配置ESP协议使用的认证算法。 执行esp encryption-algorithm [des | 3des | aes-128 | aes-192 | aes- 256 ]命令,可以配置ESP加密算法。 执行ah authentication-algorithm [md5 | sha1 | sha2-256 | sha2-384 | sha2-512 ]命令,可以配置AH协议使用的认证算法。