HCIP笔记

即:抽象语言→编码→二进制→电信号→物理层
OSI先有层后有协议,TCP先有协议再有层
OSI 参考模型 ----OSI/RM(应表会传网数物)端口号79
应用层
表示层
会话层
传输层 (两字节,12bit,0-65535其中0-1023为静态端口,1024-65535为动态端口)
网络层
数据链路层
物理层
rip端口号520
ospf协议号89
ARP 协议 --- 地址解析协议
正向 ARP :通过已知 IP 地址,获取未知 MAC 地址;并存储在 ARP 缓存表中,老化时间 180S
反向 ARP :通过已知 MAC 地址,获取未知 IP 地址;
免费 ARP :利用正向 ARP 的原理请求自己的 IP 地址, 1 、介绍自我; 2 、冲突检测
TCP/IP 模型
运输层-物理层(段,包,帧,比特流)
PDU---- 协议数据单元
6
6→TCP
17→UDP
0×0800→IP
0×0806→ARP
跨层封装
跨四层封装 --- 仅仅应用于直连路由设备之间
跨三四层封装 ---- 仅仅应用于直连交换设备之间
IP 地址
单播地址:一对一
组播地址:一对多
广播地址:一对所有(相同广播域)
A---8
B---16
C---24
IP 地址根据二进制前 8 位数字特征进行分类
A 0xxx xxxx----10.0.0.0-10.255.255.255
B 10xx xxxx----172.16.0.0-172.31.255.255
C 110x xxxx----192.168.0.0-192.168.255.255
D 1110 xxxx
E 1111 xxxx
特殊 IP 地址
127.0.0.1-127.255.255.254------ 环回地址
169.254.0.0/16--- 本地链路地址
255.255.255.255--- 受限广播地址
主机位全 1--- 直接广播地址
主机位全 0---- 网段地址
0.0.0.0---- 代表没有 IP 地址、代表所有 IP 地址
VLSM ---- 可变长子网掩码
思路:从主机位向网络位借位
192.168.1.0/24
192.168.1.0 0000000/25--192.168.1.0/25
192.168.1.1 0000000/25--192.168.1.128/25
CIDR ---- 无类域间路由
思路:取相同,去不同
192.168.0.0/24
192.168.1.0/24
192.168.2.0/24
192.168.0000 0000.0
192.168.0000 0001.0
192.168.0000 0010.0
192.168.0000 0000.0/22--192.168.0.0/22--- 超网
172.16.0.0/24
172.16.1.0/24
172.16.2.0/24
172.16.3.0/24
172.16.0.0/22---- 子网汇总

 

DHCP--- 动态主机配置协议
应用层
discover
传输层
UDP ;源端口: 68 ;目标端口: 67
网络层
IP 0.0.0.0 ;目的 IP 255.255.255.255
数据链路层
MAC PC ;目的 MAC FFFF-FFFF-FFFF

应用层
Offer
传输层
UDP ;源端口: 67 ;目标端口: 68
网络层
IP 68.85.2.1 ;目的 IP 68.85.2.101
数据链路层
MAC DHCP 服务器;目的 MAC PC
应用层
Request
传输层
UDP ;源端口: 67 ;目标端口: 68
网络层
IP 0.0.0.0 ;目的 IP 255.255.255.255
数据链路层
MAC PC ;目的 MAC FFFF-FFFF-FFFF

应用层
Ack
传输层
UDP ;源端口: 68 ;目标端口: 67
网络层
IP 68.85.2.1 ;目的 IP 68.85.2.101
数据链路层
MAC DHCP 服务器;目的 MAC PC

路由器转发原理
原理:路由器将基于数据包中的目的 IP 地址查询本地路由表。若表中存在记录关系,则无条件按记录
转发;若没有记录,则直接丢弃数据报文。
路由表如何获取未知网段信息?
1 、直连路由 --- 路由器默认生成可用接口的智联网段的路由条目
2 、静态路由 --- 由网络管理员手工配置
3 、动态路由 --- 所有路由器运行相同路由协议,路由器之间彼此沟通,计算出未知网段路由
直连路由生成条件
1 、接口双 UP
物理层 UP--- 本地链路正常
协议层 UP--- 具备通讯协议
2 、接口必须存在 IP 地址
HTTP 协议 --- 超文本传输协议
TCP--80
超文本 ----- 包含有超链接 LINK 和各种多媒体元素标记的文本。
TCP---- 传输控制协议
是一种面向连接的可靠传输协议
可靠性体现在下面几个机制
确认机制(相互回包进行确认的过程)
重传机制
排序机制
流控机制(滑动窗口机制):通过调节窗口大小对流量进行控制
窗口大小 --- 指无需等待确认就可以连续发送的数据最大值 (只需在最后一次回包,节省数据包传输效率)
分片 ---MTU (最大传输单元) 网络层IP层面  最大传输字节1500数+(据传输层头部超过1480要分片 )
分段 ---MSS (最大传输段) ====MTU-IP 头部 -TCP 头部
PMTU--- 路径 MTU 发现

 面向连接

三次握手
                         
圈圈的部分实际上是合并成了第二次握手
第一次握手失败客户端重传
当客户端超时重传 3 次 SYN 报文后,由于 tcp_syn_retries 为 3,已达到最大重传次数,于是再等待一段时间(时间为上一次超时时间的 2 倍),如果还是没能收到服务端的第二次握手(SYN-ACK 报文),那么客户端就会断开连接。
第二次握手失败则客户端和服务端都会进行重传
当客户端超时重传 1 次 SYN 报文后,由于 tcp_syn_retries 为 1,已达到最大重传次数,于是再等待一段时间(时间为上一次超时时间的 2 倍),如果还是没能收到服务端的第二次握手(SYN-ACK 报文),那么客户端就会断开连接。
当服务端超时重传 2 次 SYN-ACK 报文后,由于 tcp_synack_retries 为 2,已达到最大重传次数,于是再等待一段时间(时间为上一次超时时间的 2 倍),如果还是没能收到客户端的第三次握手(ACK 报文),那么服务端就会断开连接。
第三次握手失败则服务端重传

当服务端超时重传 2 次 SYN-ACK 报文后,由于 tcp_synack_retries 为 2,已达到最大重传次数,于是再等待一段时间(时间为上一次超时时间的 2 倍),如果还是没能收到客户端的第三次握手(ACK 报文),那么服务端就会断开连接。

四次挥手
                  
w为三次握手中传输的数值(即x+D(传输数值)+1(后面要传输的数据,从哪开始))
第一次挥手失败则客户端重传

当客户端超时重传 3 次 FIN 报文后,由于 tcp_orphan_retries 为 3,已达到最大重传次数,于是再等待一段时间(时间为上一次超时时间的 2 倍),如果还是没能收到服务端的第二次挥手(ACK报文),那么客户端就会断开连接。

第二次挥手失败
当客户端超时重传 2 次 FIN 报文后,由于 tcp_orphan_retries 为 2,已达到最大重传次数,于是再等待一段时间(时间为上一次超时时间的 2 倍),如果还是没能收到服务端的第二次挥手(ACK 报文),那么客户端就会断开连接。
第三次挥手失败
当服务端重传第三次挥手报文的次数达到了 3 次后,由于 tcp_orphan_retries 为 3,达到了重传最大次数,于是再等待一段时间(时间为上一次超时时间的 2 倍),如果还是没能收到客户端的第四次挥手(ACK报文),那么服务端就会断开连接。
客户端因为是通过 close 函数关闭连接的,处于 FIN_WAIT_2 状态是有时长限制的,如果 tcp_fin_timeout 时间内还是没能收到服务端的第三次挥手(FIN 报文),那么客户端就会断开连接。

 
第四次挥手失败
当服务端重传第三次挥手报文达到 2 时,由于 tcp_orphan_retries 为 2, 达到了最大重传次数,于是再等待一段时间(时间为上一次超时时间的 2 倍),如果还是没能收到客户端的第四次挥手(ACK 报文),那么服务端就会断开连接。
客户端在收到第三次挥手后,就会进入 TIME_WAIT 状态,开启时长为 2MSL 的定时器,如果途中再次收到第三次挥手(FIN 报文)后,就会重置定时器,当等待 2MSL 时长后,客户端就会断开连接。
应用层
HTTP请求报文---请求方式:GET(用于请求一个网页信息)
传输层
TCP ;随机端口; 80
网络层IP协议;PCweb服务器
数据链路层以太网协议;PC;网关

应用层
HTTP 应答报文 --- 应答状态码: 200
传输层TCP 80 随机
网络层web服务器;PC
数据链路层web服务器MAC;与web服务器同广播域的网关MAC

静态路由
 优点
     选路合理
     安全
     不需要占用额外设备资源
 缺点
     配置量大
     仅适用于中小型网络

静态路由配置

方法一:[r1]ip route-static 23.0.0.0 24 12.0.0.2

下一跳:去往目标网段所需要经过的下一个路由器的入接口的 IP 地址
标记 R :代表递归计算出接口
优先级: 60
方法二: [r1]ip route-static 192.168.2.0 24 GigabitEthernet 0/0/1
[r2-GigabitEthernet0/0/0]arp-proxy enable ---- 开启 ARP 代理功能
路由器数据包中的目的 MAC 地址被写为目的 IP 地址所对应的 MAC ---- 数据不通
而此时路由器无法获取目的 MAC 地址。
开启 ARP 代理功能,在下一个路由器的入接口开启
       代理 ARP 思路:当接收到 ARP 数据包后,路由器会查看本地路由表,若路由表中存在目的 IP 地址(网络可达),此时该路由器会冒充目的IP 地址来回复 ARP 报文。
方法三: [r1]ip route-static 23.0.0.0 24 GigabitEthernet 0/0/1 12.0.0.2
注意:先写出接口,在写下一跳
方法四: [r1]ip route-static 192.168.2.0 24 23.0.0.3
下两跳或多跳数
在递归查找时,需要提前铺垫好所有的递归查找中所需要使用到的路由信息。
在黑洞路由器上配置一条到达汇总网段指向空接口的路由
ICMP 协议
BFD 技术 ---- 双向链路检测机制
是一种全网统一的测试机制,用于快速检测、监控网络中链路或者 IP 路由的转发连通状况。
配置
[r1]bfd ---- 激活 BFD 协议
[r1]bfd aa bind peer-ip 10.1.12.1 --- 创建 bfd 会话,会话名称为 aa (仅具备本地意义),对端 IP
地址
[r1-bfd-session-aa]discriminator local 10 ---- 配置本地标识符
r1-bfd-session-aa]discriminator remote 20 ---- 配置远端标识符
[r1-bfd-session-aa]commit ---- 提交配置
[r1]ip route-static 10.9.9.0 24 10.1.12.1 track bfd-session aa ---- BFD 与静态路由联动
扩展配置
[r1-bfd-session-bb]min-rx-interval 10 --- 修改 BFD 报文发送时间间隔
[r1-bfd-session-bb]min-tx-interval 10 ---- 修改 BFD 报文接收时间间隔
[r1-bfd-session-bb]detect-multiplier 5 ----- 配置本地检测倍数为 5

第二章,网络类型及数据链路层协议

网络类型 ---> 根据我们数据链路层所运行的协议及规则来划分
网络类型 P2P ---- 点到点网络
MA ---- 多点接入网络
BMA---- 广播型多点接入网络
NBMA--- 非广播型多点接入网络
数据链路层协议
应用层: FTP DHCP DNS TELNET OSPF BGP ISIS
传输层: TCP UDP
网络层: IP ARP ICMP
MA 网络
以太网协议
特点 ----- 需要使用 MAC 地址对设备进行区分和标识
BMA 中的以太网网络构建方法 ----- 使用 以太网线 连接设备的 以太网接口 ,形成的网络被称为以太网络,所运行的二层协议就是以太网协议。
常见以太网线:
    同轴电缆
    双绞线
    光纤
以太网特色 ----- 可以提供极大的传输速率 --- 依靠 频分技术
P2P 网络
     当一个网络中只能存在两台设备,并且不允许第三台设备加入,这样的网络被称为 P2P 网络
点到点网络的搭建 ---- 使用串线连接设备的串线接口,形成的网络。
串线的标准
       E1 标准 ----2.048Mbps---- 欧洲标准
       T1 标准 ----1.544Mbps---- 北美标准
HDLC--- 高级数据链路控制协议
标准
     1.满足工业标准的标准 HDLC
          ①由 ISO 提出( SDLC--- 同步数据链路控制协议)
     同步 ---- 以帧为单位传输数据
     异步 ---- 以字节为单位传输数据
     2.非标准的 HDLC------ 思科
注意:标准的HDLC和非标准的HDLC协议彼此不兼容。
HDLC 网络搭建
[r2-Serial1/0/0]ip address 12.0.0.1 24
[r3-Serial1/0/0]link-protocol hdlc ---- 修改数据链路层的链路类型
HDLC 接口地址借用
IP 地址借用 ---> 允许一个没有 IP 地址的接口从其他接口借用 IP 地址。 ----> 可以避免一个 IP 被某一个接口独占,节省IP 地址资源。 ----> 一般建议借用环回接口 IP 地址
配置
R2 配置
[r2]interface LoopBack 0
[r2-LoopBack0]ip address 12.0.0.1 32
[r2-Serial1/0/0]link-protocol hdlc
[r2-Serial1/0/0]ip address unnumbered interface LoopBack 0 ---- 借用环回接口 IP
[r2]ip route-static 12.0.0.0 24 Serial 1/0/0 --- 配置通往 12.0.0.0/24 网段的路由。原因在于 S1/0/0
接口没有配置 IP 地址,故无法生成相应直连路由信息,数据包无法通过路由表进行转发。
R3 配置
[r3-Serial1/0/0]link-protocol hdlc
[r3-Serial1/0/0]ip address 12.0.0.2 24
课堂练习
PPP----点到点协议(属于一组协议)(速度不快但是可以满足上网需求)
       PPP(点到点协议)是为在同等 单元之间传输 数据包这样的简单链路设计的 链路层协议。这种链路提供全双工操作,并按照顺序传递数据包。
PPP协议的优点
1、PPP协议兼容性较好----只要串口线缆可以支持全双工通讯方式,就可以支持PPP协议。 (比如TCP/IP、NetBEUI、NWLINK等HTLC 不行
2、可移植性强----PPPoE(PPP+ AAA(相当于一个认证框架,携带很多协议)组合而成)
3、PPP协议可以完成认证和授权过程。 (无法完成计费过程)
4、无重传机制、网络开销较小。 
PPP会话搭建与(TTP相似)
链路建立阶段-------------LCP (必须项)
认证阶段-------------------PPP认证(可选项)
网络层协议协商阶段----NCP (必须项)
PPP链路建立过程
Dead阶段-----物理层不可用 (没有连线缆,接口down状态)
当物理层正常时,通讯双方的两端会跃迁到Establish状态。
Establish阶段------进行PPP的LCP参数协商。
如果在该状态下进行的LCP参数协商成功,则进入OPened状态(且会一直持续),表示底层链路已经建立。 如果该阶段协商内容中,确定需要进行认证,则进入认证阶段,否则进入到网络层协议协商阶段。
Authenticate阶段(如果需要认证则需考虑认证方式和数据)
大多数情况下,链路两端的设备是需要经过认证阶段的。 (如果不认证,跳过这个阶段)
在默认情况下,PPP链路的建立不需要经过认证阶段。
如果认证成功,则进入到网络层协议协商阶段。若认证失败,则直接返回到链路建立阶段。
Network阶段
网络层协商阶段协商成功后,PPP链路将保持通信状态。
若PPP链路运行过程中,出现物理链路断开、定时器超时、手工干预等动作导致链路中断,则会进入到下一状态。
Terminate阶段
该阶段是在释放连接所使用的设备资源,若所有资源均被释放,则通讯双方恢复到Dead阶段。直到通讯双方重新建立PPP连接。
类型字段包含0×0800(IP协议)、0×0806(ARP)由netwoke阶段提前协商好协议
PPP数据帧结构
LCP------链路控制协议
NCP-----网络控制协议------如果网络层需要使用IP协议,则NCP协商时,使用的是IPCP协议(互联 网协议控制协议)。
LCP协议报文类型
LCP有三种报文类型
1、 链路配置报文
2、链路终止报文 Terminate----Request:终止请求
      Terminate----Ack:终止确认
3、链路维护报文 echo-Request:回波请求
      echo-Reply:回波应答
链路建立阶段---LCP建立 (单向建立的,即A与B建立之后,B与A也要建立一次,即互相回包)
1、MRU值:PPP数据帧中所允许携带的最大数据单元,单位字节。默认值1500
2、是否认证,以及使用何种认证方式。----可选
3、魔术字:用来检测链路中是否存在环路,随机生成;当接收到一定量的魔术字相同的数据包后,会判断网络 中确实存在环路,该链路协商不成功被阻断。(3秒重传)
    如果RTA没有收到ACK报文,则每3秒钟重传一次Request报文。在连续发送十次报文后,若还没有收到ACK回复,则认为对端不可用,停止发送Request报文。
    当RTB不认可RTA发送的部分参数的取值,则会回复NAK报文, 该报文中携带的内容是部分不认可的 参数以及可以接收的参数取值
    当RTB不认识RTA发送的某些参数时,则会回复Reject报文, 该报文中只携带不能被识别的链路层参数
认证阶段
     PPP的认证,是通过调用AAA协议框架(认证、授权、计费)完成。
     PPP的认证可以是单向的,也可以是双向的,一般选择单向认证。
      PPP会话的认证是一次性会话的方式,当第一次链路建立完成后,后续修改认证方式不会影响链路通讯。
PAP----密码认证协议----两次握手(被认证方先发LCP包)
     被认证方使用明文形式将用户名和密码传递给认证方
配置内容
认证方: 创建用户信息
[r2-aaa]local-user huawei password cipher 123456
[r2-aaa]local-user huawei service-type ppp
配置认证方式
[r2-Serial4/0/0]ppp authentication-mode pap
被认证方:
[r1-Serial4/0/0]ppp pap local-user huawei password cipher 123456
CHAP-----挑战握手协议----三次握手(认证方先发数据包)
认证过程
        认证方先发送挑战报文,里面包含了认证方的用户名和一个随机值。
        被认证方收到后,需要根据用户名信息去查找对应的密码,然后将密码和随机值一起做HASH运算得到摘要值。然后发送给认证方。
       认证方用密码与随机值进行相同算法的HASH运算,并与被认证方发送来的HASH值进行对比。
        HASH(散列函数)------将任意长度的输入转换为固定长度的输出。
特点:
相同输入,相同输出。
不可逆
具备雪崩效应
配置
认证方: [r2-aaa]local-user hcip password cipher 654321
[r2-aaa]local-user hcip service-type ppp
[r2-Serial4/0/0]ppp authentication-mode chap
被认证方:
[r1-Serial4/0/0]ppp chap user hcip
[r1-Serial4/0/0]ppp chap password cipher 65432
一条PPP链路的两端可以使用不同的认证协议认证对端,但是被认证方必须支持认证方要求使用的认 证协议并配置正确的用户名和密码。
网络层协议协商阶段 ----NCP 协商
协商内容:
        IP 报文的压缩方式
        IP地址 ---- 协商对端的 IP 地址是否为可用地址,且不与自己的 IP 地址冲突。若A的IP地址为1.1 B为1.2 则B接收之后发送ACK报文,若两者均为1.2,则回复NAK报文
静态协商过程
       在NCP协商过程中,一旦认可了对方的IP地址,则将会自动学习到达该地址的主机路由。这条特性也就导致了我们PPP链路的两端设备的IP地址可以不再同一个网段。
动态协商过程
配置
R1----获取方
[r1-Serial4/0/0]ip address ppp-negotiate
R2----配置方
[r2-Serial4/0/0]remote address 1.1.1.1
GRE、MGRE(核心是封装)
VPN---- 虚拟专用网络
     依靠 ISP 或者其他公用网络基础设施上构建专用的安全数据通信网络。 ---- 只不过这个专用网络是逻辑 而非物理的
虚拟:用户不在需要拥有实际的长途数据线缆,而是使用公共网络资源建立自己的专用网络。
专用:可以定制最符合自身需求的网络。
核心技术:封装技术。
GRE----- 通用路由封装(点到点)
即每个路由器之间若想实现相互通讯,则都需要搭建两者之间的端口
此图里R1查了两次路由表(1次在物理接口去往2.2的路由表,一次为tunnel接口查找去往2.2的路由表),R2没查表,因为R2拿到数据包发现自己就是2.2 再一看是gre封装,所以可以直接交给tunnel口解封装。
配置
[r1]interface Tunnel 0/0/0 ---- 创建隧道接口
[r1-Tunnel0/0/0]ip address 192.168.3.1 24 --- IP 地址必须为私网 IP
[r1-Tunnel0/0/0]tunnel-protocol gre ---- 定义封装方式 (tunnel接口为gre封装,真实物理接口为IP封装)
[r1-Tunnel0/0/0]source 12.0.0.1 ---- 定义封装内容,该 IP 必须为真实的公网出口 IP
[r1-Tunnel0/0/0]destination 23.0.0.3---目的IP,必须为真实物理接口
原理
在去往的IP地址前面加上IP头部信息和gre封装
配置完成后,需要在本地补上通往目的私网网段的路由信息
GRE 封装和解封装过程
1、设备从连接私网的接口接收到数据包后,检查报文头部中的目的 IP 地址字段,在路由表中查找出接口,如果发现出接口为隧道接口,则将报文发送给隧道模块进行处理。
2、隧道模块接收到报文后,首先根据乘客协议的类型和当前 GRE 隧道配置的校验和参数,对报文进行 GRE封装
3、然后,设备给报文添加新的传输协议,该协议的 IP 就是隧道源地址,目的 IP 为隧道目的地址
4、最后,设备根据新条件的 IP 报文头部中的目的地址,在路由表中查找对应的出接口并发送报文。
5、接收端设备从连接公网的接口收到报文后,首先分析 IP 报文头部信息,如果发现 协议字段类型值为 47 GRE 协议号),表示数据部分由 GRE 模块进行处理。
       ①GRE 模块去除掉 IP 报文头部和 GRE 报文头部,并根据 GRE 报文头部中的协议类型字段来判断乘客协议内容。从而交给对应模块处理。
Keepalive 检测机制
[r1-Tunnel0/0/0]keepalive period 2 retry-times 5
设置发送周期为 2S ;设置重传次数为 5
MGRE(本质是也是点到点,只是中心节点与其他分支建立了多条隧道,看起来是点到多点)
动态表单里存在逻辑地址和物理地址 (由分支向中心注册而来,其他均是因为NHRP协议而来)
NHRP--- 下一跳解析协议
hub-spoke 架构 ---- 中心到节点架构;
NHS---- 下一跳服务器
中心节点的 IP 地址必须固定
MGRE shortcut 配置
Hub 节点配置
[r1]interface Tunnel 0/0/0 [r1-Tunnel0/0/0]ip address 192.168.5.1 24
[r1-Tunnel0/0/0]tunnel-protocol gre p2mp ---- 修改接口封装协议为 GRE ,且为点到多点模式
[r1-Tunnel0/0/0]source 15.0.0.1
Spoke 节点配置
[r2]interface Tunnel 0/0/0
[r2-Tunnel0/0/0]ip address 192.168.5.2 24
[r2-Tunnel0/0/0]tunnel-protocol gre p2mp
[r2-Tunnel0/0/0]source GigabitEthernet 0/0/0
[r2-Tunnel0/0/0]nhrp entry 192.168.5.1 15.0.0.1 register
hub 的虚拟接口 IP hub 的物理接口 IP 注册
[r1]display nhrp peer all ---- 查看 nhrp 映射表
DSVPN--- 动态智能 VPN(MGRE+NHRP)
       传统的 MGRE 技术存在的问题。 ----- 分部之间无法直接通讯(源分支无法获取目的分支的公网地址,也就无法建立VPN 隧道),导致所有的分支之间的通讯数据只能通过总部 HUB 设备进行中转。
NHRP 映射表
      静态表项
           由网络管理员手工配置
           spoke hub 建立静态的 mgre 隧道。
       动态表项
           是由 NHRP 协议动态生成
           hub 节点被动获取到 spoke 节点发送来的注册信息。
           各个 spoke 节点通过 NHRP 协议获取到对端的 spoke 节点的映射关系。
           7200S
NHRP 映射表的建立过程
建立 spoke hub 之间的 mgre 隧道
      1. spoke hub 注册请求
      2. hub spoke 注册应答
分支间路由学习
      DSVPN 支持两种分支间路由学习方式:
            分支间互相学习路由 ---- shortcut 方式
                  每个分支需要学习到所有对端的路由数据,且 下一跳为分支本身。
            
理解:
        spoke1想要去访问spoke2,但是他没有spoken2的映射表,所以他会先给hub转发(ICMP),并且同时向hub发送想要spoken2映射表的一个请求包(NHRP),hub接收到ICMP后会先给spoken转发,此时hub不能直接将spoken2 的信息发给spoken1,他会给spoken发送一个信息即告诉他spoken1想要获取你的信息。spoken2 接收以后会直接给spoken1回包(因为源是spoken1,而此时spoken2已经拥有spoken1的信息,所以可以直接发送),但是spoken2也会有疑问因为他包虽然发出去了但是他本地的路由没有spoken1的映射表关系,所以也会给hub发送一个请求包,hub则转发给spoken1,此时spoken1拿到了这个信息他就可以直接给spoken2回包。
           分支路由汇聚到总部 ----shortcut 方式
                    下一跳为hub设备 建立 spoke spoke 之间的 mgre 隧道
理解:
spoken1首先会给hub发送一个ICMP报文,但此时他不会意识到自己绕路了,因为他的下一跳写的是hub,hub收到这个包后会正常转发,同时会给spoken1发送一个提醒,即重定向的包,spoken2收到信息后也会给hub转发,spoken1收到重定向报文之后意识到自己可能错了,会向hub发送一个NHRP请求报文,hub转发给spoken2,spoken2拿到后直接发给1,原理相同,hub也会给spoken2发送一个重定向包,spoken2向hub发送一个请求,hub转发给1,1直接发给2,链路完成。
MGRE环境下的RIP网络搭建---非shortcut
分支没有获取到中心的路由信息
因为RIP是以组播的方式在发送报文,而MGRE环境下是点到点通讯,不支持组播行为。
解决思路:开启伪广播功能。
[r1-Tunnel0/0/0]nhrp entry multicast dynamic ----在中心节点配置
分支之间无法获取对方路由信息
主要因为华为设备默认开启水平分割机制,导致中心无法从接口将分支的路由发送出去。
[r1-Tunnel0/0/0]undo rip split-horizon ----关闭水平分割机制
MGRE环境下的RIP网络搭建---shortcut
路由汇总
[r1-Tunnel0/0/0]rip summ-address (掩码信息为点分十进制否则会报错)
第四章 OSPF
ospf基础
动态路由协议的评判标准---收敛速度、选路、占用资源
RIP收敛速度慢的原因:计时器(更新计时器(30s)无效计时器(更新计时器的六倍)如果无效计时器为0,这条路由项会被路由器把开销级设为16,即视为不可用,但是不会丢弃。垃圾计时器(更新计时器的4倍即最大值,最小值为90s)

OSPF特性:

  • IGP

  • 链路状态型协议

  • SPF算法

  • 组播224.0.0.5/224.0.0.6

  • 10/150

OSPFv2与RIPv2对比

  • 相同点

    • 无类别路由协议

    • 均采用组播通讯

    • 均支持等开销负载均衡

  • 不同点

    • OSPF可以工作在大型网络中

OSPF结构化部署

区域内部传递拓扑信息,区域间传递路由信息。---链路状态型协议的距离矢量特征。

多区域提高了网络的扩展性,有利于组件更大规模的网络

区域ID(Area-ID):32位bit组成的非负整数,按点分十进制表示

OSPF多区域划分要求

  1. OSPF要求域中的所有非骨干区域(区域ID不为0的区域)都必须与骨干区域直接相连

  2. 骨干区域不能被分割(有且只有一个骨干区域)【多个区域围绕一个区域搭建而成】

单区域情况下,那个区域一定是骨干区域。不同区域下一定要有边界路由器,因为拓扑信息只在同区域间传递,如果没有,则不能学习到对方的拓扑信息。

假定没有“所有非骨干区域都必须连接骨干区域”这条规则,则会造成环路

为了确保路由器都遵循这个规则:

OSPF定义了ABR(区域边界路由器)来确保遵循这条规则。----只有真正的ARP设备才可以转发区域间路由信息。

1、至少连接两个区域
2、连接的区域中 至少有一个接口连接区域0(骨干区域)
3、在区域0中至少有一个活跃的邻居

非骨干区域之间不允许直接相互发布区域间路由信息----因为非骨干区域之间的边界设备不是ARP。

假定没有“骨干区域不能被分割”

OSPF规定:从非骨干区域收到的路由信息,ABR能接收到不会使用这条路由信息(这条规则,被称为OSPF的区域水平分割机制)-----从一个区域学习到的路由信息,不能再传递回该区域。 --从一个区域学习到的路由信息,不能再

总结:

OSPF有如下规定:
1、伪ABR设备不允许转发区域间路由信息
2、对于真实ABR设备
    能够将自己直连的非骨干区域的路由信息传递给骨干区域 (互传)
    能够将自己直连的骨干区域路由信息传递给非骨干区域(R4传给R3,R3从骨干区域学到的非骨干路由,可以传给另一个非骨干)
    能够将自己从骨干区域学习到的非骨干区域路由信息传递给直连的非骨干区域。(只接收不发送)

OSPF路由器角色

  • 内部路由器---IR(R4、R5、)

    • 所有接口都接入同一个OSPF区域的路由器

  • 区域边界路由器---ABR

    • R2、R3

  • 骨干路由器----BR

    • 接入Area0的路由器(R1、R2、R3、R6)

  • 自治系统边界路由器---ASBR

    • 工作在OSPF自治系统边界的路由器,负责将OSPF域外的路由引入本域。

    • 并不是所有运行了多种路由协议的OSPF路由器就一定是ASBR;必须执行了重发布操作的路由器才会被称为ASBR

OSPF数据包

hello包

  • 用来发现、建立并周期保活OSPF邻居关系,通过组播224.0.0.5发送。

  • 10S发送一次用以确认邻居存在。(不是确认对方在不在,是告诉对方我在)

  • hold-time----死亡时间----hello-time*4(四倍)

  • Router-ID(RID)---全域唯一,标识路由器身份。IP地址形式(点分十进制)

    • 配置方式

      • 手工配置

      • 自动配置(思科中最大环回大于最大物理)

        • 默认优选最大环回IP地址,没有环回就选择最大物理IP地址

在华为设备中,若没有接口IP,则OSPF启动后,RID为0.0.0.0
    在思科设备中,若没有接口IP,则OSPF无法启动。
    
    华为标准:状态最先UP的接口的IP地址作为Router id
    FRC标准:
        1、取loopback接口IP中最大的作为Router id
        2、若没有loopback接口,则选择物理接口IP地址中最大的作为Router id

查看路由器的标识

有环回选环回,没有环回选最大物理IP地址

无论采用手工还是自动选取的方式,一旦OSPF确定了RID,则之后不会改变。---重启OSPF进程

  • DBD报文

    • 数据库描述报文

    • 该报文中携带的是路径信息的摘要。---避免重复更新,减少更新量的一种做法。

  • LSR报文

    • 链路状态请求报文----用以获取未知的LSA(链路状态通告)信息。

  • LSU报文

    • 链路状态更新报文

    • 携带真实的LSA信息的数据包

  • LSAck报文

    • 链路状态确认报文

OSPF七种状态机
  • down---关闭-----一旦启动了OSPF协议,则发出hello报文进入下一个状态

  • init----初始化----收到的hello报文中存在本地RID值,进入下一个状态

  • 2-way----双向通讯----邻居关系建立的标志。---稳定态

条件匹配:匹配成功则进入下一个状态,匹配失败则停留在邻居状态。

  • exstart----预启动----使用未携带信息的DBD报文进行主从关系选举,RID大的为主(决定谁先完成接下来的进程)。

  • exchange----准交换-----使用携带目录信息的DBD报文进行目录共享

  • loading----加载----邻居间使用LSR/LSU/LSACK报文来获取完整的LSA信息

  • full---转发----拓扑交换完成后,根据算法计算出路由进入该状态,标志着邻接关系的建立----------稳定态

先进入exchange状态,然后主接收到DBD报文之后,才会接连跃迁两个阶段

结尾无需再问你要东西的时候进入到full状态,等到A也进入到full状态才算完成

两者均会发送DD报文因为此时他们双方都认为自己是主,然后A会先进入exchange状态且比特位为0,所以A是从。(从先进入exchange状态)

发送报文是序列号为300,那么下一次发送数据序列号也要为300。

条件匹配

决定了谁给谁传递拓扑信息

背景:

所有设备都处于0.5的广播域内。

理解:

通过选举之后A成为了DR设备,所有人在发送信息的时候以0.6发出去,那么A就监听0.6的信息,但是A回包的时候不能以0.6发出去,只能以0.5给所以设备发信息,因为其他设备都处于0.5的广播域内所以只能监听0.5的

在发送数据包时,不一定是组播,也可能是单播且受网络类型影响。

DR、BDR、DRother----接口角色

  • 选举规则

    1. 优先级,0-255;选择优先级大的为DR设备,默认为1。若优先级为0则代表放弃选举

    2. 若优先级相同,则比较RID值,越大越优先。

  • 选取范围---一个广播域

  • 非抢占模式----重选则需要重启OSPF进程。

  • 在一个MA网络中,可以没有BDR,但是必须存在DR。(在点到点网络中,选不选DR不一定)

条件匹配的选举过程

  1. DR、BDR(两者是接口角色)的选举是通过Hello报文实现的,时间发生在2-way状态之后。

  2. 路由器将自己的接口的DR优先级填写在hello报文的“DR优先级字段”。

  3. 华为数通产品的接口DR优先级默认1,该参数值可以通过

    1. [Huawei-GigabitEthernet0/0/0]ospf dr-priority ?
        INTEGER<0-255>  Router priority value
        
        DR优先级为0则代表该接口不具备选举DR和BDR的资格。
  4. 当接口激活OSPF后,设备首先会检查网络上是否已经存在DR,如果存在则接收已经存在的DR设备。否则优先级最大的设备成为DR,若优先级相同,则拥有最大RID的路由器成为DR设备。

  5. BDR选举过程与DR相同,但是是在DR选举之后进行。

从Down敲下ospf-1之后启动了ospf,但是此时不能直接进入init状态,因为此时没有邻居,需先进入Attempt状态,再敲下peer,才能建立邻居关系,进入init状态。

OSPF工作过程

(需全文背诵)

  1. 启动OSPF配置后,OSPF向本地所有运行了OSPF协议的接口以组播224.0.0.5发出hello报文;hello报文中携带了本地的RID参数以及本地已知的邻居RID值。

    1. 邻居的RID获取方式:通过接收其他邻居的hello报文来获取本地邻居

    2. 建立邻居关系,并生成邻居表。

  2. 邻居关系建立后,进行条件匹配;匹配失败则停留在邻居关系,即2-way状态,仅使用hello报文保活。该状态为稳定态。

  3. 匹配成功的邻居开始建立邻接关系。

    1. 首先使用未携带数据的DBD报文进行主从关系选举,之后使用携带信息的DBD报文来共享数据库目录;

    2. 然后本地通过对方共享的目录信息与本地数据库进行对比,通过使用LSR报文请求未知的LSA信息。

    3. 对端使用LSU报文回复完整LSA信息

    4. 本端使用LSAck报文确认回复。

  4. 当本地接收到所有的未知LSA信息后,将信息存放在LSDB(链路状态数据库)中。

    1. 之后基于本地数据库生成有向图和最短路径树。

    2. 根据最短路径树计算本地到达拓扑中所有未知网段的最短路径,并将其加入到OSPF路由表中。

    3. 从OSPF路由表中选择最优路由加载入本地全局路由表。

  5. 收敛完成后,hello报文周期保活。每30min进行一次周期链路刷新。

结构突变
  1. 新增网段-----直接使用LSU报文告知邻居,邻居使用ACK进行确认。

    B此时发送LSU报文,才能将1.0/24 的网段信息发送给A

    此图里是由C发送更新报文(B不能感知到1.0/24断了,只有B接收到C发送更新报文,B才会发送,他不是主动发送的)

  2. 断开网段-----直接使用LSU报文告知邻居,邻居使用ACK进行确认。

  3. 无法沟通-----dead time----4*hello time,状态为down,删除信息。

              

B不会发报文,A保活发hello包,此时B挂了的瞬间,A处于full状态,4*hello time后,状态为down,删除信息。(删的是路由信息,不是LSU报文信息,【LSU只有发出者才能删除】)

OSPF基本配置

               

  1. 启动OSPF协议

    • [r1]ospf 1 router-id 1.1.1.1

  2. 创建区域

    • [r1-ospf-1]area 0

  3. 宣告

    • [r1-ospf-1-area-0.0.0.0]network 1.1.1.1 0.0.0.0(反掩码) ----精准宣告(最常用)

    • [r1-ospf-1-area-0.0.0.0]network 12.0.0.0 0.0.0.255 ----范围宣告

反掩码:32位二进制,点分十进制表示;由连续的0和连续的1组成;其中0表示IP对应位不变,1代表IP对应位可变。

[r2-ospf-1]bandwidth-reference ?   ----修改参考带宽
  INTEGER<1-2147483648>  The reference bandwidth (Mbits/s)

一条OSPF路径的cost等于从目的地到本地路由器沿途的所有接口cost的总和

开销值=参考带宽(100兆)/真实带宽------若参考带宽/真实带宽<1,则开销值为1;若>1,则去掉小数部分。

练习

OSPF报文格式(5种)

OSPF协议号---89

OSPF报文头部(所有数据包的公共部分)

24字节。

验证类型和认证数据两者合二为一组成OSPF的认证功能

  • 版本---恒为2

  • 类型----描述OSPF数据包类型

    • hello---1

    • dbd-----2

    • lsr------3

    • lsu----4

    • lsack----5

  • 报文长度(不包括报文头部)

  • 路由器ID----RID

  • 区域ID---发出该报文的接口所属区域的ID值。(不固定)

  • 校验和----完整数据包(IP协议里校验的是IP头部信息,此处校验整个完整的数据包)

  • 验证类型(和验证数据一起看)

    • 指示该数据报文使用的认证类型

    • 不认证--0;简单认证---1;MD5认证---2(不是加密算法/哈希值认证

  • 验证数据

    • 用于报文认证的内容

    • 若认证类型为不认证,则该字段全为0;

Hello包

对于邻居建立有影响的几个参数:网络掩码,hello时间,可选项,路由器失效时间,认证

影响邻接关系:MTU

路由器失效时间40s

指定路由器DR:填充的是接口IP地址,不是rid

备份指定路由器BDR填充的是接口IP地址,不是rid

  • 网络掩码(第一个检测网络掩码,必须相同)

    • 两台OSPF路由器如果通过以太网接口直连,那么双方的直连接口必须配置相同的网络掩码。

    • 如果一方在接口上收到的hello报文中,网络掩码字段与本地接口配置的掩码不同,则该路由器忽略该hello报文,此时邻居关系无法建立。

    • 注意:只有在华为设备中会检查网络掩码信息

  • Hello间隔

    • 如果两台路由器的hello时间间隔不同,则不会建立邻居关系

    • 在Broadcast类型和P2P网络类型中hello时间间隔为10S;而在NBMA或P2MP网络类型中,Hello时间为30S。

  • 可选项

    • 有8个标记位,每一个标记位为1,则代表其符合OSPF的某种特性。

    • 特殊区域标记

  • 路由器优先级

    • 用于选举DR和BDR。

  • 路由器失效时间

    • 两台设备建立OSPF邻居需要确保死亡时间相同。

    • 默认情况下是hello间隔的4倍。

    • 若修改hello时间,则死亡时间随之改变;若修改死亡时间,则hello时间不变。

  • 指定路由器---DR

    • 该参数为网络中DR的接口IP地址。

    • 若没有选举出DR,则使用0.0.0.0来占位

  • 备份指定路由器---BDR

    • 该参数为网络中DR的接口IP地址。

    • 若没有选举出BDR,则使用0.0.0.0来占位

  • 邻居

    • 在直连链路上发现的有效邻居,此处填充的是邻居的RID值。

所有224.0.0.X格式的组播地址称为本地链路组播地址,目标IP是本地链路组播的数据包的TTL值被设定为1。所有本地链路组播都存在对应的组播MAC地址,01-00-5e-0后23位,后23位为组播IP地址的后23位

224.0.0.5-->11100000.00000000.00000000.00000101
01-00-5e-00000000.00000000.00000101--->01-00-5e-00-00-05


OUI--->01-00-5e

限制邻居关系建立的参数

子网掩码

  • R1修改掩码后,会立即将状态置为down,而R2会在40S死亡时间后进行状态切换。

  • 原因在于:R1在修改IP地址的掩码后,会认为之前的连接中断,需要重新建立连接,所以会直接重置状态机。而R2则认为此时属于结构突变中的无法沟通。(对于R2而言此时邻居已建好,R1此时发来的数据包掩码不同,所以R2会认为此时不是自己的邻居发来的,不会接收)

hello时间

[r1-GigabitEthernet0/0/0]ospf timer hello 20

双方经过死亡时间后,状态发生改变。(RI死亡时间此时变成80s,而R2hello时间10s,死亡时间40s)

dead时间

[r1-GigabitEthernet0/0/0]ospf timer dead 80

结果与修改hello时间一致。 

认证

[r2-GigabitEthernet0/0/0]ospf authentication-mode simple plain 123456 ----接口认证

[r2-ospf-1-area-0.0.0.0]authentication-mode simple plain 123456 ----区域认证(整个区域都需要认证)

认证类型不同,也无法完成认证

可选项

与修改掩码信息结果相同。(认知不到拓扑信息发生改变则不会立即进入down状态)

DBD包
  • 使用未携带数据的DBD报文进行主从关系选举

  • 使用携带数据的DBD报文进行拓扑目录共享

  • 使用未携带数据的DBD报文进行确认。

  • 接口最大传输单元----MTU(接口参数不是设备参数

    • 在华为AR系列路由器上,该参数值默认为0。

    • 若开启了这个最大传输单元检测,则对比两者之间的参数值,假设一方参数值为1500,另一方为1000,则两者不会进入到full状态

    • 该字段是用于进行OSPF的MTU检测,而华为默认不开启MTU检测机制。

    • [r1-GigabitEthernet0/0/0]ospf mtu-enable ----开启OSPF的MTU检测机制

    • [r2-GigabitEthernet0/0/0]mtu ?   ----修改MTU参数
        <46-1600>  MTU value

    • 如果设备两端开启了OSPF的MTU检测机制,则进行MTU检测,若双方的MTU参数相同,则正常进行邻接关系建立。若不同,则双方卡在exstart状态

  • 可选项---与Hello报文内容中的可选项字段一致。

  • I------主从关系选举

    • 如果该为为1,则代表该数据报文是用于进行主从关系选举。且此时的数据包中不会携带真实的数据库目录信息。

  • M

    • 若为1,则代表后续还存在DD报文

    • 若为0,则代表后续没有DD报文

  • MS----代表是否为主设备

    • 若为1,则代表本设备为Master设备

    • 若为0,则代表本设备为Slave设备

  • DD序列号

    • 用于确保DD报文传输的有序性和可靠性

    • 如图从设备跟着主设备的序列号发数据包,表示自己已经接受到你这个数据包,起确认作用

    • 在DD报文交互的过程中,DD序列号被逐次加1。且DD序列号必须由Master路由器来决定,而Slave路由器只能使用Master路由器发送的DD序列号来发送自己的DD报文。

    • 隐形确认机制----通过对方发送的数据包中的DD序列号,起到确认的效果。

    • 而主从关系选举就是为了完成隐形确认。

             

M=0表示主设备已经没有包要发,M=1表示从设备数据包还没发完,此时主设备必须接着给从设备发数据包,只不过数据包里可能没有东西,直到从设备M=0

LSR

链路状态类型、链路状态ID、通告路由器----LSA的三元组信息。---通过这三个参数可以唯一标识出一条LSA信息

LSU包

告诉你存在多少个LSA

LSAck包

完成显式确认机制。

OSPF有这个东西才能表示自己是齐全的

隐性确认:确认数据库目录头部信息有没有接收完整

显性确认:确认LSA完整信息有没有接收完整

OSPF的接口网络类型

对某个设备某个接口而言

P2P----P2MP
MA
    BMA
    NBMA

OSPF的接口网络类型,实际上是说OSPF的接口在某种网络类型下的一种工作方式或特征。

ospfDR选举在点到点网络中不存在

此表格全文背诵

网络类型OSPF接口工作方式--接口类型
BMABroadcast,可以建立多个邻居关系,需要进行DR和BDR的选举,hello 10S,dead 40S。
P2PP2P,只能建立一个邻居关系,不需要进行DR和BDR选举,Hello 10S;dead 40S
环回接口(虚拟接口)华为定义为P2P,但是实际上无数据转发。环回接口默认学习32位主机路由。不需要进行DR和BDR选举。hello 10S;dead 40S。
P2MP,可以建立多个邻居,不需要DR选举,hello 30S;dead 120S。会学习邻居的接口主机路由。
NBMANBMA,可以建立多个邻居,需要DR选举,hello 30S;dead 120S。无法自动建立邻居关系。
VlinkVlink,只能建立一个邻居,不需要DR选举,Hello 10S;dead 40S。以单播形式发送hello报文。

广播型多路访问类型---BMA

[r3]display ospf interface GigabitEthernet 0/0/0 ---查看OSPF网络接口类型

poll时间

表示120s发一次,可修改范围1-3600(两倍的1800【30分钟的链路状态刷新】)不要改的太小,一般改成两倍来回时间

OSPF在BMA类型的接口上通常以组播的方式发送hello报文、LSU及LSACK报文;以单播的形式发送DD报文和LSR报文。

点到点类型---P2P(开销值48)

OSPF在网络类型为P2P的接口上以组播的方式发送所有数据报文。----不以单播形式发送的原因在于点到点网络可以不需要IP地址。

OSPF在点到点网络中不会选举DR和BDR。

开销值----在华为设备中,P2P网络的参考实际带宽默认为2.048(E1标准)

环回接口

[r1-LoopBack0]ospf network-type broadcast ---修改接口网络类型为broadcast

开销值恒定为0,这样的结果就是修改参考带宽不会影响到环回接口的开销值。

type----华为使用P2P来填充,而cisco使用loopback填充。

所有通过OSPF学习到的环回接口的路由掩码都是32位,因为该接口是一个模拟的接口,实际没有连接用户,所以并没有其他IP地址存在与该接口之下,只有一个可用IP。----如果使用其他掩码,可能会导致环路或者路由黑洞。

witing----该字段代表正在进行条件匹配,当该计时器超时后,接口会认为自己为DR设备,且将接口的状态切换为exstart状态。

 华为将tunnel接口的传输速率定为了64Kbps

Hub节点此时属于P2P类型,只能建立一个邻居,无法建立多个邻居,故修改Tunnel接口的网络类型为Broadcast类型。

不同的网络类型,可以建立邻居关系,但是可能会造成不同的问题。故修改接口网络类型时,全网保持一致。

如果链路两端,一端需要选举DR,另一端不需要,可能会成功建立full状态,也可能有一个卡在exstart或2-way状态。

让分支节点放弃DR选举,在MGRE环境下,hub节点必须成为DR设备。否则网络路由信息无法学习全面。必须修改分支节点的接口优先级为0。 

点到多点类型---P2MP

只能手工修改。

[r7-Tunnel0/0/0]ospf network-type p2mp

在P2MP环境下,设备会学习所有邻居的接口IP地址,形成主机路由。

在P2MP环境下,只有hello报文是以组播形式发送,其他所有报文以单播形式发送数据。

非广播型多路访问类型----NBMA

在NBMA网络中,所有数据包以单播数据通讯。

在NBMA网络中,所有的OSPF路由器都需要使用peer命令单播指定邻居,该命令是双向的。

OSPF的不规则区域划分

  • 非骨干区域必须与区域0直接相连

  • 骨干区域不能被分割

不规则区域

  • 远离骨干的非骨干区域

  • 不连续骨干区域

根本解决方案:对OSPF网络重新规划与配置,满足OSPF区域划分规则

使用tunnel隧道

使用vpn隧道解决不规则区域的问题

  • 可能产生选路不佳。

  • 造成重复更新。

  • 资源消耗

这种方法问题太多,所以在工程中几乎见不到。仅作了解。

Vlink---虚链路

vlink是专门为了解决OSPF不规则区域所诞生的技术,是一种虚拟的、逻辑的链路

OSPF的LSA信息(基于传闻)

SPF算法,生成

链路状态老化时间:180s,16bit

当某一条LSA被始发路由器产生时,该值被设置为0,

当老化时间到达1800s时,路由器会讲本地的LSA信息向外通告(30min链路状态刷新)

当老化时间到达3600s时,该LSA会被认为是一条失效的LSA信息,从本地的LSDB中删除。

vlink必须找到一个真实的ABR设备建立虚拟链路。

在OSPF网络中,只有始发路由器能够提前使某一条LSA老化,即有意识的清除该LSA信息。(若一直无法到达3600s,则无法删除)

组步调计时器---Cisco---240s

(即当1800s+240s之后,将所以1800s以上的LSA都更新一遍)

可选项---与hello报文一致

链路状态类型---link-state type

指示

链路状态ID:

通告路由器:产生该LSA的路由器的RID。

链路状态序列号:

1、用来判断一条LSA的新旧关系。32位二进制,由8位十六进制表示。

2、OSPF不允许其进入循环部分

3、OSPF

线性序列号:

循环序列号:

棒棒糖序列号:

链路状态校验和

1、校验数据包的完整性

2、参与LSA新旧相比

判断LSA的新旧关系

OSPF使用序列号、老化时间和校验和来判断LSA新旧关系

1、首选,选择具有较高序列号的LSA信息。

2、如果LSA序列号相同,则比较具有更大校验和和LSA信息。

3、如果序列号以及校验和均相同,则比较老化时间,如果某条LSA的老化时间被设定为3600s,则该条LSA更优。

4、如果序列号以及校验和均相同,且没有一条LSA的老化时间为3600s,则比较两个LSA的老化时间之差

      1.如果大于900s(OSPF MaxAge Diff=====15min),则认为老化时间大的LSA为新的LSA

      2.如果小于900s,则认为相同。

类型LS ID通告者作用范围携带信息
Type-1 LSA(Router)通告者的RID运行了OSPF协议的路由器的RID单区域本地接口的直连拓扑信息
Type-2 LSA(Network)DR的接口IP单个MA网络中的DR所在路由器的RID单区域单个MA网络拓扑信息的补充信息
Type-3 LSA(Summary)路由信息的网络号ABR设备,在通过下一个ABR设备时会被修改为新的ABR设备的RIDABR相邻的单区域域间路由信息
Type-5 LSA(ase)域外路由信息的网络号ASBR设备整个OSPF域域外路由信息
Type-1 LSA
  • Type---Router

  • 每台路由器有且只有一条描述本地所有同区域接口链路的LSA信息。

  • V---如果该比特位被置为1,则表示该LSA发送在路由器的vlink链路

  • E---该路由器为ASBR

  • B---该路由器为ABR

  • 链路数量----描述一个一类LSA中有多少个link数量

    • 每一个link使用链路ID\链路数据\链路类型共同描述

Type-2 LSA
  • 每个MA网络中的DR设备会发送一个LSA信息,用以补充一类LSA的内容。

  • 该LSA会洪泛到整个区域

Type-3 LSA
  • 每一个三类LSA都是由ABR设备产生

  • LS ID--->IP地址的网络地址。

  • 路由项开销值===LSA中开销值+本地设备到达三类LSA的通告路由器的开销值

  • 3类LSA传递的路由信息需要被接收者进行验证,若在验证过程中发现无法到达该LSA的通告者,则本条LSA信息无效。若可以达到,则才会将LSA信息转换为路由信息。

  • 三类LSA在传递时,仅单区域传递,跨区域时需要由其他ABR设备重新构造

Type-5 LSA
  • 发布者是ASBR--->每条路由信息都会发送一条LSA

  • 传播范围是整个OSPF网络

  • 度量值-----指的是外部路由的Cost

    • 给所有导入到OSPF网络的路由信息一个规定的值-----种子度量值。默认为1

    • [r4-ospf-1]import-route rip 1 cost 5 ----修改种子度量值

  • E位----代表度量值计算类型

    • Metric-Type-1

      • E=0;所有设备到达域外目标网段的开销值为本地到达ASBR开销值加上种子度量值。(即内部网络的开销值加上种子度量值)

    • Metric-Type-2---默认为第二种类型

      • E=1;所有设备到达域外目标网段的开销值为种子度量值。

    • [r4-ospf-1]import-route rip 1 cost 5 type 1 ---修改开销值计算类型

  • 外部路由标记

    • 用于标记某些特定路由条目,进行干涉路由选路时使用。

    • 在华为路由器上,默认值为1。

    • [r4-ospf-1]import-route rip 1 tag 1

  • 转发地址----FA

    • 默认为0.0.0.0;

    • 如果FA为0.0.0.0,则路由器递归的下一跳使用RID进行递归。若FA不为0.0.0.0,则路由项的下一跳为FA地址。

    • 若FA字段需要被ASBR设备设定为其他数字,需要满足如下条件:

      • 引入外部路由的ASBR在其连接的外部网络的接口上激活了OSPF

      • 该接口没有被设置为静默接口(不允许接收发送报文)

      • 该网络的网络类型为MA网络

      • 该接口的IP地址落在OSPF协议配置的Network命令范围内

路由撤销

1类LSA撤销

通过LSA更新的方式进行LSA撤销,通过序列号+1,校验和不变,老化时间不变的方式。

2类LSA撤销

  • 网络中部分设备失联

    • 通过LSA更新的方式进行LSA撤销,通过序列号+1,校验和不变,老化时间不变的方式。

  • 网络中所有设备失联

    • 通过将LSA的老化时间设置为3600S进行LSA撤销。

3类LSA撤销

序列号不变,检验和不变,老化时间设定为3600S。

5/7类LSA撤销

序列号不变,检验和不变,老化时间设定为3600S。

OSPF优化

优化手段---减少LSA信息

路由汇总---减少骨干区域的路由信息

OSPF特殊区域---减少非骨干区域的路由信息(LSA信息)

路由汇总---路由聚合

ospf取消了自动汇总机制,路由汇总只能由管理员手工配置。----区域汇总。----因为ospf在区域间传递的是路由信息。

1、域间路由汇总(该配置在ABR设备身上执行)

域间路由汇总(该配置在ABR设备身上执行)

域间路由汇总,只能在通过1类、2类LSA学习到明细路由的ABR身上配置。否则无法生效。域间路由汇总配置不会影响到本ABR设备的路由信息。

只要ABR身上存在任意一条汇总路由的明细

2、域外路由汇总

5类LSA汇总后的开销值计算方式

Type-1-----汇总网段的开销值等于所有明细路由开销值中的最大值。---LSA中的信息

Type-2-----汇总网段的开销值等于所有明细路由开销值中的最大值+1。

OSPF中的特殊区域

2大类,4小类。

第一大类---1,不能是骨干区域;2、不能存在虚链路(本身处于区域0的延伸);3、不能存在ASBR

第二大类---1,不能是骨干区域;2、不能存在虚链路;3、必须存在ASBR

1、末梢区域----Stub Area

如果讲一个区域配置成末梢区域,则这个区域将不再学习4类和5类的LSA。

但是该区域还需要具备访问外部路由的需求,所以配置末梢区域后,末梢区域的ABR设备会自动生成一条指向ABR的3类缺省LSA。

[r1-ospf-1-area-0.0.0.2]stub

[r5-ospf-1-area-0.0.0.2]stub

一旦使用特殊区域配置,则区域内所有的设备都必须配置为特殊区域

2、完全末梢区域----Totally Stub

是在末梢区域之上完成,进一步拒绝3类LSA信息,仅保留一条3类缺省LSA信息

[r1-ospf-1-area-0.0.0.2]stub no-summary ----只需要在ABR身上配置

3、非完全末梢区域---NSSA

如果将某区域配置NSSA区域,则这个区域不再学习4类和5类LSA信息。但是该区域仍然需要将后面的域外路由信息导入仅OSPF

如果将某区域配置为NSSA区域,则这个区域不再学习4类和5类LSA信息。但是该区域仍然需要将后面的域外路由信息导入仅OSPF网络,故使用7类LSA的形式来传递域外路由信息。之后,该7类LSA信息在NSSA区域的ABR设备上,被转换为5类LSA进行传递。-----NSSA区域会获取到一条7类缺省LSA信息

[r1-ospf-1-area-0.0.0.2]nssa

[r5-ospf-1-area-0.0.0.2]nssa

O_NSSA-----7类域外路由信息的标记,默认优先级150。

4.完全的非完全末梢区域----Totally NSSA

[r1-ospf-1-area-0.0.0.2]nssa no-summary ----在ABR设备上配置

完全NSSA区域中,ABR设备会下发两条描述缺省路由的LSA信息,分别使用三类和七类LSA信息。而设备会选择三类LSA的缺省路由。

Type-1Type-2Type-3Type-4Type-5Type-7
常规区域
stub×××
totally stub缺省×××
nssa××
totally nssa缺省××

NSSA环路问题

完全NSSA区域中的ABR设备下发三类缺省,ASBR设备下发7类缺省。会导致ABR设备学习到7类缺省路由,而内部其余设备会学习3类缺省路由,从而引发环路问题。----华为解决方案----在ABR下发时,同时下发一条7类缺省LSA信息

[r3-ospf-1-area-0.0.0.1]nssa default-route-advertise ----在NSSA区域下方缺省路由

  1. NSSA区域的七类LSA缺省信息实际上需要ASBR或者ABR自己下发

  2. 如果多台设备均下发成功,则虽然会收到LSA信息,但是不会使用该LSA信息。因为始终相信自己的缺省路由更优。

  3. 对于第一台发布七类缺省路由的设备而言,会认为本地已经存在一条去往外部的路由,并且本地作为通告者,那么当他接收到其他设备发送来的七类缺省路由,也不会进行学习。----华为运用该逻辑解决NSSA环路。

    1. 华为保留了NSSA区域由ABR设备产生的七类LSA缺省路由。对于其他设备传递来的七类缺省路由,只接收而不使用。

    2. 这样一样,ABR设备不会具备指向NSSA区域内部的缺省路由。也不会将其传递给骨干区域。

NSSA负载分担解决次优路径问题

第五章 重发布和路由策略

重发布

在同一个网络拓扑结构中,如果存在多种不同的路由协议,由于不同路由协议在处理机制不同,

作用:在不同路由协议或者相同路由协议的不同进程,进程之间无法获取路由信息,需要使用重发布来实现路由信息的共享。

条件

1、必须存在网路边界设备---同时连接在两种协议或两种进程,且必须学习到两边的路由信息。

2、必须关注种子度量值---起始度量值(用来选路),A协议和B协议的开销值计算法不同,无法之间引用对方的开销值,故将A协议引入到B协议时,边界设备将删除A协议中路由信息的原始度量值,而在共享到B协议中,由边界设备给该路由添加一个起始度量值。

规则

1、将A协议发布到B协议中,在边界的B协议中配置。

2、将A协议发布到B协议中,边界设备会将所有的通过A协议学习到的路由以及边界上宣告在A协议中的所有直连路由,全部共享到B协议。

名词解释

单点---存在一个边界设备

双点---存在一个边界设备

多点---存在多个边界设备

单向---仅将A协议路由共享到B协议中

单向---将A协议B协议的路由相互共享

因为重发布都是发生在两个协议之间的,所以,不存在多向。

单点重发布

配置

  • A--->B:

    [r2-rip-1]import-route ospf 1

通过重发布技术将其他协议的路由信息引入到RIP协议中,其种子度量值为0。

修改度量值方式

[r2-rip-1]default-cost 5 ----全局修改

[r2-rip-1]import-route ospf 2 cost 3 ----针对于某一种路由协议修改

当以上两条命令同时执行时,将按照第二条匹配更精准的修改方式

  • 静态--->B:

[r2-rip-1]import-route static

缺省路由在重发布操作时,不会进行引入

  • 直连--->B:

[r2-rip-1]import-route direct

若该设备执行了A--->B的重发布和直连--->B的重发布,并且两次包含了相同的路由信息。则将会优选直连的重发布信息

[r2-ospf-1]default cost ? INTEGER<0-16777214> Cost value

[r2-ospf-1]default type ? INTEGER<1-2> Type value

双点重发布

路由回馈----某个协议诞生的路由信息,经过重发布的路由引入,最终又回到了某协议。

默认RIP和OSPF协议若进行双点重发布,由于两者的优先级不同,故第一台边界设备重发布动作结束后,将影响到其他边界设备的路由表。使得路由可能被传回源协议当中,发生路由回馈。

华为为了解决路由回馈问题,将OSPF的域外路由优先级定义为150(150高于华为体系下所有IGP协议的优先级),从而解决路由回馈问题

路由策略

控制层面流量------路由协议传递路由信息产生的流量

数据层面流量------设备访问目标地址时产生的流量

所谓的路由策略-----在控制层面转发流量的过程中,截取流量,之后修改流量再转发或者不转发流量,最终达到影响路由器路由表的生成,干涉选路的效果

抓流量
ACL列表

[r1-acl-basic-2000]rule permit source 192.168.1.0 0.0.0.0

通配符---0和1穿插使用,0代表不可变,1代表可变

因为ACL列表本身设计是为了抓取数据层面流量的,因为通配符的存在它可以灵活的匹配IP地址的数字特征,但是没有办法匹配路由信息中的掩码特征,所以ACL并不擅长于抓取控制层面的流量

如果要在192.168.1.0/24、192.168.1.0/25、192.168.1.0/26中抓取192.168.1.0/24,ACL无能为力,它只能按照IP地址的数字特征进行流量匹配,故三条路由的流量都会被ACL抓取到。

前缀列表(ip-prefix)

前缀列表所匹配的对象是IP地址前缀,也就是路由条目。---->一个路由条目由目的网络地址及掩码长度共同标识

前缀列表的匹配规则:从上而下,逐一匹配,一旦匹配上则将按照该规则执行,不再向下匹配。末尾隐含拒绝所有条件

IP前缀列表中会包含1条或多条语句,每条语句都使用一个十进制的序号进行标识。----序号的步长为10。

ip ip-prefix aa index 10 permit 172.16.0.0 24

-----创建一个名称为aa的前缀列表,ID为10的策略,内容为允许172.16.0.0/24

[r3]ip ip-prefix aa index 20 permit 172.16.0.0 16 less-equal 24

匹配所有前缀为172.16;并且掩码大于等于16,小于等于24的所有路由信息

[r3]ip ip-prefix asd index 10 permit 0.0.0.0 0 less-equal 32

匹配所有

[r3]ip ip-prefix hh index 10 permit 0.0.0.0 0 greater-equal 32 less-equal 32

匹配所有的主机路由----掩码为32的路由

做策略
偏移列表----cisco

1、抓流量

[r1]ip ip-prefix aa permit 23.0.0.0 24 ---抓取23.0.0.0/24路由信息

2、做策略

[r1-GigabitEthernet0/0/1]rip metricin ip-prefix aa 5 -----在入接口方向,修改度量值,增加5。metricin入方向;metricout出方向。

偏移列表是逐跳行为,效果可以叠加,整段路径中流量经过的多个接口均配置后,最终会增加总度量值。

出方向会影响后续设备;入方向会影响本地以及后续设备

过滤策略----Filter-Policy(cisco---分发列表)

专门为了过滤路由信息而诞生的产物。----只能针对路由信息进行过滤,不能针对LSA信息进行过滤

1、抓流量

[r2]acl 2000 [r2-acl-basic-2000]rule deny source 34.0.0.0 0 ----在抓取流量时,过滤策略本身没有过滤能力,所以,需要在抓取流量时使用拒绝动作。

[r2-acl-basic-2000]rule permit ---末尾需要放通所有流量,否则在调用时会将所有流量全部过滤。

2、做策略

[r2-rip-1]filter-policy 2000 export GigabitEthernet 0/0/0-----需要判断控制层流量的方向,且选定接口。若没有选定接口,则会匹配到所有的接口。

在使用过滤策略时,不管使用ACL还是前缀列表抓取流量,均需要在列表的最后配置一条允许所有的命令

过滤策略在链路状态型协议中使用时,如果需要过滤域内路由信息,则在本地的入方向调用策略,将拒绝LSA生成路由信息,但该LSA本身还存在与本地LSDB中。如果需要过滤域外路由信息,需要在ASBR上配置策略,且使用出方向,这样该ASBR不会生成该LSA信息。

对于1/2类LSA而言,需要在本地的入方向调用过滤策略。而对于3类LSA而言,需要在ABR设备的入方向调用,阻止LSA生成。对于5/7类LSA而言,使用出方向限制,在ASBR上

第六章,BGP

(动态路由协议分类:IGP(内部网关协议,在AS内使用) EGP(外部网关协议,在AS间使用))

自治系统---AS

定义:由一个单一的机构或者组织所管理的一系列IP网络及其设备所构成的集合

AS划分的原因

  • 如果整张网络很大,路由数量进一步增加,路由表规模变得太大,会导致路由收敛速度变慢,设备性能消耗加大,且全网设备对于路由信息的认知不同,造成流量通讯障碍。

  • AS之间可能是不同的机构、公司,相互之间无法完全信任,若使用IGP协议可能会造成暴露AS内部的网络信息风险。

AS号----16位二进制组成,32位二进制组成。----IANA(互联网数字分配机构) MAC地址(IEEE分配)

  • 16位AS号,其取值范围:1-65534(0、65535保留);私有AS号:64512-65534;公有AS号:1-64511

  • 保留AS号

    • RFC4893标准中,支持16bitAS向32bitAS过渡,新增23456作为保留AS号,用于研发(ospf基于2328标准中)

    • RFC5398标准中

      • 16bit中,64496-64511保留AS

      • 32bit中,65536-65551

BGP基础

 在当前的IPv4环境下,主要使用BGPv4版本;但目前市场上还存在BGPv4+版本。

EGP:只发布路由,不控制路由优选、无环路避免机制。(专门用于AS间路由传递)

BGP基础

  • 首先,RIP是基于UDP(端口号520)进行数据传输的,而UDP是一个不可靠的协议,他在传输过程中可能丢失某些数据。

  • RIP协议的路由更新报文的发送间隔是30S,而如果两个AS内部的路由表较为庞大,30秒的时间可能不够传输所有的路由条目,这样该条链路完全是为了RIP的通告报文服务,而不能进行数据转发。

(不可靠,可能丢包,加之若数据大,)

解决思路:

  • 将UDP更换为TCP协议

  • 取消周期更新机制,仅保留触发更新

BGP特点

  • BGP基于TCP协议,只要能够建立TCP连接,就可以建立BGP连接

  • 触发更新,不再进行周期更新

  • 只传递路由信息,而不会暴露AS内的拓扑信息

    • 拓扑信息资源占用量大

    • 拓扑信息会暴露本AS内部的拓扑连接情况

  • BGP----无类别路径矢量协议

    • 无类别---传递路由信息时携带掩码信息

    • 矢量----指方向性,谁传递给我,谁就是下一跳。

    • 距离矢量----开销的体现,在距离矢量型协议中,将一个路由器看做是一个单位进行计算。

    • 路径矢量----将一个AS看做是一个整体,从而计算距离。

IGP协议的主要任务是将AS内部的位置网段信息计算获取到,而BGP则主要是将IGP协议计算出来的路由信息进行搬运和传递,并不计算路由

BGP特征

  • 收敛速度

  • 资源占用

  • 选路

可控性

重发布因为度量值的原因,可能会出现选路不佳的情况。而BGP为了弥补这个不足,舍弃了开销值,取而代之的是设计了很多的路径属性。BGP通过这些路径属性来控制路径选择,从而干涉选路。

可靠性

BGP因为只有触发更新,而不存在周期更新,所以需要确保可靠性机制。使用TCP作为传输层来确保其可靠性,端口号为179。---路由器之间的BGP会话基于TCP连接而建立

IGP不选择使用TCP的原因

  • TCP传输效率低

  • TCP占用资源大

  • TCP只能实现单播数据传输,无法通过组播或者广播的形式发送数据,导致IGP协议无法自动发现邻居关系,只能手动配置。

AS-BY-AS

BGP将一个AS看做是一个整体。

BGP默认不支持负载均衡

IGP协议追求内容收敛速度快选路佳(无环路)占用资源少
EGP协议追求内容可控性可靠性AS-BY-AS

BGP的对等体关系

BGP因为传输层使用的是TCP协议,所以,只要TCP协议可以正常建立会话的基础上就可以完成BGP的建邻工作,而BGP支持非直连建邻------BGP设备必须具备邻居的路由信息

BGP存在两种对等体关系类型

  • EBGP

    • 位于不同自治系统的BGP路由器之间的BGP对等体关系

    • EBGP对等体一般使用直连建邻。TTL值=1

    • 两台路由器之间要建立EBGP对等体关系,必须满足如下条件

      • 两台路由器的所属AS号不同

      • 需要使用peer命令指定对等体的IP地址,且该IP地址的路由可达。

  • IBGP

    • 位于相同自治系统的BGP路由器之间的BGP对等体关系

    • IBGP对等体之间一般使用非直连建邻。TTL=255

    • 在IBGP对等体关系中,建邻使用的是环回接口IP地址。----原因在于环回接口是稳定接口;BGP建邻的流量可以借助AS内部的IGP协议来实现通讯冗余保证邻居正常建立。

总结BGP

  • 无类别路径矢量协议----AS-BY-AS

  • BGP使用单播来发送信息;基于TCP 179端口工作

  • 增量更新机制---仅触发更新

  • 具备丰富的路径属性来代替IGP中的度量值进行选路。

  • 可以在进出流量的接口实施路由策略---可控性

  • 默认不被用于负载均衡----会通过各种选路规则产生最佳的一条路由信息。

  • BGP支持认证和聚合。 

BGP的数据包

BGP头部信息

Route-refresh----路由刷新报文

作用:用来要求对等体重新发送指定地址族的路由信息。

在某时刻,原本路由器已经学习到了对等体发送的BGP路由信息,而此时需要修改一下传递路由的内容,在控制层流量的入接口调用路由策略,但是此时该路由策略未生效。原因在于之前已经拿到了对等体发送来的路由信息,而此时需要让对方重新发送一次路由信息,进而根据本地新调整的策略内容,对路由信息进行修正。

双方均支持路由刷新功能。

hello----周期保活,发现、建立邻居关系。

Open包

是在TCP连接建立之后发送的第一个报文内容,用以建立BGP对等体之间的连接关系。

  • AS号

    • BGP的open报文会携带本地的AS号,通过对比两端的AS号可以判断对端是否和本端处于相同AS。从而选择建立IBGP对等体或者EBGP对等体关系。

      • 不管AS号是否相同,都并不影响BGP对等体的建立。

    • 如果接收到的OPen报文中的AS号与本地建邻时所配置的AS号不同,则将导致邻居关系无法建立。

  • hold time----保活时间----不影响BGP邻居对等体的建立。

    • BGP在建立对等体关系时两端需要协商该参数,并保持一致。若双方不一致,则选择最小的执行。默认180S。

    • 如果在该计时器时间内,没有收到updata报文和keepalive报文,则认为BGP连接中断

  • BGP标识符

    • 该参数值在open报文中携带,对比两端参数,相同则表示冲突,导致邻居建立失败。

  • 认证

    • BGP也可以进行认证,认证口令不同,则导致邻居建立失败。

    • 该字段存储在TCP的可选项字段。---永远以MD5形式存储。

  • 路由刷新功能-----route-refresh

Keepalive包

作用:主要用来进行周期保活;用来临时充当确认报文----确认open报文中的参数是否认可

该报文没有报文字段,仅仅具备BGP头部信息。---大小19字节。

周期保活时间默认是保活时间的三分之一,默认60S

TCP协议进行确认的目的是为了保证数据传输的可靠性,而keepalive报文确认的目的是为了认证认可对方发送的open报文中的参数

Update包----更新包

作用:用于在对等体之间传递路由信息,可以用于发布、撤销路由

Notification包

纯粹的告警机制。---可以用在BGP协议启动的任意时刻,当任意时刻出现错误,都将以该报文的形式通知对方设备。

BGP状态机

BGP状态机仅描述对等体建立过程的状态变化。----BGP将邻居建立和BGP路由收发过程分开。

  • Idle----空闲状态

    • 所有设备启动BGP进程后首先进入该状态。

      • 原因在于BGP需要手工指定邻居,在BGP进程启动后就会进入该状态,然后等待手工指定邻居。

    • 当手工指定邻居后,将会进入一个检查环节。需要检查手工指定的IP地址在本地路由表中是否可达,只有可达,才可以正常建立TCP的会话,如果不可达,则邻居关系建立失败,停留在idle状态。

    • 如果检查共拓,则进入下一个状态。

  • Connect状态----连接状态

    • 正在进行TCP会话连接。

    • 在该状态下,会开启一个连接重传定时器----32秒

      • 该计时器超时,则代表此时设备可以重新发送一个TCP连接请求数据包。

    • 如果成功建立TCP会话,则进入opensent状态;如果建立失败,则进入active状态。

  • Active状态----尝试状态。

    • 因为第一次TCP会话建立失败进入该状态。会继续尝试与对等体建立TCP会话。

    • 与connect状态共用同一个连接重传定时器。

    • 如果成功建立TCP会话,则进入opensent状态;如果建立失败,则停留在active状态

  • Opensent状态

    • 发出本地的open报文。

    • 同时,会收到对方发送的open报文,将查看open报文中的参数,进行参数协商过程。

    • 如果参数本端认可,则本地发送keepalive报文,之后进入openconfirm状态。

    • 如果参数本端不认可,则本地发送notification报文,并将状态切换至idle状态。

    • 对等体关系的指定是双向的,所以当双方都使用peer命令指定了对等体后,均会主动与对等体建立TCP连接。但是这样会建立两条TCP双向连接,会选择第一个建立的连接进行断开(BGP会将最早启动BGP协议的设备所发起的TCP会话断开,而保留后启动BGP协议的设备发送的TCP会话。)

  • openconfirm状态----等待open报文确认

    • 如果收到了对方发送的keepalive报文,则代表双方open报文中的参数协商成功。最终进入到establish状态。

    • 如果收到notification报文,则转至idle状态。

  • Established状态----邻居建立状态

    • 对等体建立的标志

BGP工作过程

  1. 基于IGP协议或者静态路由实现IP可达。

  2. 启动BGP协议,并指定邻居关系

    1. 邻居之间单播传输数据,通过三次握手,建立TCP会话通道。

    2. BGP之后所有的通讯都将基于TCP会话通道来传输,并由TCP提供传输的可靠性。

  3. 使用open报文和keepalive报文进行BGP对等体关系建立。open报文中携带建邻使用的参数,keepalive报文用于参数的确认。最终完成对等体关系的建立。生成邻居表

  4. 使用update报文来传递路由信息。信息中将携带目标网络号、掩码及路径属性信息。之后,设备会将所有自己发送的以及收到的BGP路由信息记录在BGP表中。

  5. 之后,将BGP路由表中最优的路由信息加载到全局路由表

  6. 收敛完成后,将使用keepalive报文进行周期保活,默认保活时间为180S,周期发送时间默认为保活时间的三分之一。

  7. 如果出现错误,将使用notification报文进行告警。

  8. 如果出现结构突变,将使用update报文进行增量更新。

BGP的防环

BGP水平分割机制

EBGP水平分割

依靠AS_PATH属性,该属性中记录了路由信息在控制层面传递时所经过的所有AS区域的编号。接收者根据AS_Path属性中的内容与本地对比,如果该属性中包含本地AS,则丢弃该路由信息

IBGP水平分割

BGP规定,当路由器从一个IBGP对等体学习到某条BGP路由时,它将不能再把这条路由通告给任何IBGP对等体。----IBGP水平分割规则。

解决方案:

  • 构建全联的IBGP对等体关系

    • 当AS内部设备数量过多时,IBGP邻居关系呈指数增长,而IBGP邻居一般使用非直连方式建立邻居,也就导致数据的传输需要依靠物理链路,故全联建邻会占用大量的链路资源。并且路由器需要维护大量的TCP和BGP连接,需要消耗大量设备资源。

    • 网络扩展性差。

  • 打破IBGP水平分割机制。

    • 该规则无法关闭。

    • 联邦

    • 路由反射器

BGP的路由黑洞

BGP同步更新规则---为了避免BGP路由黑洞问题

当一台路由器从自己的IBGP对等体学习到一条BGP路由时,它将不能使用该条路由或者把该路由通告给自己的EBGP对等体。除非它又从IGP协议学习到相同的路由信息,也就是要求IBGP路由与IGP路由同步

在华为数通产品上,BGP同步更新规则,默认关闭,且不允许打开BGP同步更新规则。---cisco默认关闭,但可以打开

由于BGP协议可以非直连建邻,所以导致BGP协议可能出现跨越未运行BGP协议的设备,导致BGP路由传递后,控制层面显示为可达。但是,数据层面,流量在流经未运行BGP协议的设备时,无法通过,形成路由黑洞。

解决思路:

  • 物理或逻辑拓扑全联。

  • 让未运行BGP协议的设备运行BGP协议

  • 在IGP协议中,引入BGP路由信息。

  • MPLS----多协议标签交换

BGP基本配置

使用直连接口IP地址建立EBGP对等体关系
1、启动BGP协议
[r1]bgp 100  ----该数字为AS号,而非进程号。
2、设置RID值
[r1-bgp]router-id 1.1.1.1   全网唯一
3、配置BGP对等体,并指定对等体所在AS号
[r1-bgp]peer 12.0.0.2 as-number 200  ---BGP协议需要手工指定邻居,且需要指定邻居所在AS编号,且该指定方式必须是双向的。

[r1]display bgp peer ---查看BGP邻居表

IGBP对等体关系的建立

在实际工程中,一个AS的内部正常具有较为复杂的网络拓扑结构,设备到设备之间存在大量的备份链路和负载均衡链路,因此,建立IBGP邻居关系时,建议使用双方的环回接口来作为源/目IP地址

[r2]bgp 200
[r2-bgp]peer 3.3.3.3 as-number 200

[r3]bgp 200
[r3-bgp]router-id 3.3.3.3
[r3-bgp]peer 2.2.2.2 as-number 200

手工建立邻居关系时,所指定的建邻的IP地址必须和收到的数据包中的源IP地址相同才能正常建立邻居关系。否则,邻居关系建立失败

解决方式:
[r2-bgp]peer 3.3.3.3 connect-interface LoopBack 0
[r3-bgp]peer 2.2.2.2 connect-interface LoopBack 0

BGP会话的建立仅仅是依靠TCP会话,而并没有对这个TCP会话建立的方式有任何要求,该TCP会话是由谁发起的,谁是客户端,谁是服务端并不影响BGP对等体的建立

在BGP中,TCP会话建立两次是完全多余的。故修改一端的源报文IP也可以正常完成BGP会话建立。一般会将两端均进行修改,做连接的备用使用

使用环回地址IP建立EBGP对等体关系

[r4-bgp]peer 5.5.5.5 as-number 300
[r4-bgp]peer 5.5.5.5 connect-interface LoopBack 0

[r5]bgp 300
[r5-bgp]router-id 5.5.5.5
[r5-bgp]peer 4.4.4.4 as-number 200
[r5-bgp]peer 4.4.4.4 connect-interface LoopBack 0

在EBGP对等体之间使用环回建立邻居时,必须保证拥有双方的环回路由信息。

[r4]ip route-static 5.5.5.5 32 45.0.0.5
[r5]ip route-static 4.4.4.4 32 45.0.0.4

在此时,邻居间会发生对等体震荡,原因在于双方已经建立了TCP连接,并建立了BGP会话,从而来到了establish状态,但在该状态中,因为TTL值为1,本地会感知此时不应该处于establish状态,故发送notification报文从而释放会话关系

[r4-bgp]peer 5.5.5.5 ebgp-max-hop 2
[r5-bgp]peer 4.4.4.4 ebgp-max-hop 2
如果未标明数值,则代表将TTL值修改为最大255

BGP的路由发布过程

通过network命令发布路由

对于BGP而言,只要是路由表中存在的路由信息都可以通过该命令发布

[r1-bgp]network 1.1.1.1 32  ----目标网络号和掩码信息,两个参数必须与全局路由表中的内容相同。

[r1]display bgp routing-table ----查看BGP路由表。

NextHop----谁发送的路由信息,则下一跳字段就写谁(实际上写的是update报文中的源IP);如果是自己始发的路由信息,则下一跳写0.0.0.0。

状态码

*----代表可用-----设备收到路由条目后,会根据下一跳属性中的参数来查找本地路由表,检测该条路由信息的可用性,如果下一跳属性可达,则本条路由可用。---如果不可用,则该路由忽略。

>----代表优选----当收到多条到达相同网段的路由信息时,并且都可用,则将依据属性在其中选择最优的路由作为优选者,优选路由可以加入到全局路由表并进行路由传递。

i-----代表该路由是从IBGP对等体学习到的

BGP协议在传递路由信息时,只有该路由信息可用且优时,才可以进行传递

华为将BGP协议的路由信息优先级设定为255

因为AS-BY-AS规则,认为一个AS是一个整体,那么路由项在一个整体内部传递时,所有的路径属性都应该是相同的,否则就不是一个整体。而下一跳也是路径属性之一,默认情况下无法修改,故导致路由可用性校验失败。

解决方案:
[r2-bgp]peer 3.3.3.3 next-hop-local  ---将传递给3.3.3.3邻居的路由信息中的下一跳属性修改为本地。该命令仅在IBGP对等体关系中修改。

总结配置逻辑

  1. 完成所有路由器的IGP配置

  2. 使用直连接口建立EBGP对等体关系

  3. 使用环回接口建立IBGP对等体关系

  4. 使用connect-interface命令修改IBGP建邻源IP地址

  5. 使用next-hop-local命令修改路由传递时的下一跳属性

  6. 若存在使用环回接口建立EBGP对等体关系,则需要建立通讯条件,并使用ebgp-max-hop命令修改TTL值。

通过重发布的方式发布路由

[r2-bgp]import-route ospf 1  ---通过重发布的方式引入路由信息

Ogn----起源码属性----在标识本条路由信息的起源。

  • i----代表本条路由信息起源于AS内部使用network命令通告出来。

    • 该路由信息的来源为IGP协议、静态路由、直连路由。

  • e----代表本条路由信息起源于EGP协议---现在几乎看不到

  • ?---除了以上两种方式,其他方式获取的路由信息都是?

BGP路由聚合

自动聚合

该方式仅针对于重发布的路由信息生效

[r1]ip ip-prefix aa permit 172.16.1.0 24
[r1]ip ip-prefix aa permit 172.16.2.0 24
[r1]ip ip-prefix aa permit 172.16.3.0 24

[r1]route-policy aa permit node 10
[r1-route-policy]if-match ip-prefix aa

[r1-bgp]import-route direct route-policy aa

华为默认关闭自动汇总功能

[r1-bgp]summary automatic   ----开启自动汇总

自动聚合功能开启后,本地会生成一条指向空接口的汇总网段路由,且该路由信息的来源为IBGP。然后本地将该路由信息传递给自己的BGP邻居,且传递时不携带掩码信息

状态码s----代表本条路由信息被抑制,被抑制的路由信息将不会再加表或传递

自动汇总特点

  1. 自动聚合将直接把明细路由汇总到主类网段

  2. 仅对于重发布的路由条目生效

  3. 会抑制明细路由

  4. 会在始发路由器生成一条指向空接口的汇总路由进行防环

  5. 聚合成功后,在始发路由器中,该路由的下一跳为本地127.0.0.1

动汇总特点

手工聚合

关键字参数值缺陷优势
aggregate/无法抑制明细路由,导致汇总操作并没有减少路由条目数量,反而增加。 汇总路由丢失了明细路由的路径属性可以灵活指定汇总路由的目的网络掩码长度,不受网络地址类别的限制。 可以在非直连设备上进行汇总,前提是非直连设备上具有的明细路由是可用且优的。
detail-suppressed在某些情况下,可能还需要部分明细路由的传输,而该命令会抑制所有明细路由。---1、选路不佳;2、链路负载过大可以抑制明细路由的传输。
suppress-policy在抓取流量时,需要使用deny,因为抑制策略是取反操作。可以灵活选择明细路由进行传输。
as-set仅继承AS_Path可以继承明细路由的路径属性

[r3-bgp]aggregate 172.16.0.0 20  ---手工聚合

手工聚合命令配置后
1、检测本地路由表中是否存在聚合路由的可用明细路由
2、若有则在本地路由表中发布一条指向空接口的防环路由;若无则该命令无效
3、将汇总的防环路由发布到BGP中

手工聚合配置后,无法将明细路由进行抑制。当所有的明细路由均无效后,聚合路由才会被撤销。BGP的手工聚合可以在非直连设备上进行,只要本地存在这些明细路由,且明细路由可用且优就可以进行聚合操作。BGP手工聚合路由会抹除所有的明细的路由的路径属性,从而导致隐患产生。

[r3-bgp]aggregate 172.16.0.0 20 detail-suppressed   ----抑制所有的明细路由

suppress-policy----该参数是抑制部分路由信息的传输。

该参数意为"抑制策略",因此,该关键字所指定的route-policy,被允许的路由将被抑制,而route-policy未允许的路由则正常发布出去。

[r3]ip ip-prefix aa deny 172.16.1.0 24
[r3]ip ip-prefix aa permit 172.16.0.0 20 greater-equal 24 less-equal 24

[r3]route-policy aa permit node 10
[r3-route-policy]if-match ip-prefix aa

[r3-bgp]aggregate 172.16.0.0 20 suppress-policy aa

as-set仅继承AS_Path属性,而不继承其他路由属性。

[r1-bgp]aggregate 172.16.0.0 20 as-set   ---汇总路由继承明细路由的AS_Path属性值

在该环境下,如果汇总路由继承了明细路由的AS_Path属性,则会继承多个AS内容。并将这多个明细的路由的AS_Path属性放在汇总路由的{}中。然后后续设备在选路时,将{}内的内容看做是一个AS。而在防环时,将{}内的内容逐个检查。

attribute-policy----可以设置多个BGP路由属性

[r1]route-policy aa permit node 10
[r1-route-policy]apply local-preference 10
[r1-route-policy]apply preferred-value 20
[r1-route-policy]apply as-path 1 2 3 additive 

[r1-bgp]aggregate 172.16.0.0 20 attribute-policy aa detail-suppressed 

origin-policy-----设定某些明细路由与汇总后的路由强关联机制,之后在去携带其他参数时,仅对汇总路由和该强关联的明细路由产生效果。

[r1]ip ip-prefix aa permit 172.16.15.0 24
[r1]route-policy aa permit node 10
[r1-route-policy]if-match ip-prefix aa

[r1-bgp]aggregate 172.16.0.0 20 origin-policy aa

BGP为聚合路由引入了两种属性----用于BGP聚合路由防环

  • Atomic-Aggregate

    • 纯粹的预警属性,并不携带任何信息

    • 当AS管理员在本地设备上看到某条路由信息中存在该属性时,则意味着该路由信息存在属性缺失问题。

    • 该属性值只有在所有与汇总路由强关联的明细路由被抑制时才会被携带。

  • Aggregator

    • 携带汇总者所在的AS号和汇总者的RID值。

    • 告知AS管理员,该汇总发生在那个AS的那一台路由器上。

路由反射器

RFC4456

路由反射器是专门针对于IBGP水分分割而设计的解决方案。

IGBP水平分割----路由器无法将自己从IBGP对等体学习到的路由信息传递给IBGP对等体。

RR---路由反射器
    将接收到的IBGP路由信息传递给自己的IBGP邻居。
client---RR客户端
    必须存在,但可以存在一个或多个
RR非客户
    可以不存在

再路由反射器的视觉当中,客户端传递来的路由信息可以反射给客户端或者非客户端。而从非客户端传递来的路由信息可以传递给客户端而不能传递给非客户端。----非非不传

路由反射器以及它的客户所构成的系统被称为路由反射簇(Cluster)

配置

[r3-bgp]peer 2.2.2.2 reflect-client 
[r3-bgp]peer 4.4.4.4 reflect-client 

1、将本地配置为RR
2、指定自己的客户

路由反射器的出现,解决了IBGP路由传输的问题,但是打破IBGP水平分割后,会导致环路的产生

路由反射器场景下的防环

在一个AS内部,可能会存在多个反射簇,且每台设备在多个反射簇中的身份可能不相同。每个反射簇会具备一个簇-ID,该参数为本反射簇的RR的RID值

RR的设定会导致IBGP水平分割机制失效,导致环路产生,为此BGP添加了两个特殊的路径属性来避免出现环路:

Originator-ID----起源者ID

当一条BGP路由被路由反射器反射给其他路由器时,如果该条路由已经携带了Originator-ID属性,则保留该属性,否则路由反射器为该条路由添加Originator-ID属性,并将该属性的参数值设定为该路由器在本地AS内的始发路由的Router-ID值

当路由器从BGP对等体收到一条IBGP路由,并且该路由所携带的Originator-ID属性值与自己的BGP的RID值相同,它将意识到该路由是从自己本地始发的,将忽略本条路由的更新,从而避免路由环路的隐患

Cluster-List----簇列表

当一条BGP路由被路由反射器执行反射时,如果该条路由已经存在Cluster-List属性,那么路由反射器将本地的Cluster-ID附加到Cluster-List属性中;而如果本条路由并不存在Cluster-List属性,那么路由反射器为其创建Cluster-List属性,并将本地的Cluster-ID加入到该属性中

当一台路由反射器收到一条BGP路由时,若发现该条路由携带Cluster-List属性,并且该属性中涵盖自己所属反射簇的Cluster-ID,则路由器意识到本条路由信息是从自己所在反射簇始发出去的,此时将忽略本条路由信息的更新

属性作用
Originator-ID用于防止集群内产生环路
Cluster-List用于防止集群间产生环路

常见反射器的组网方式

备份RR组网(可靠性、稳定性、安全性)

二层交换机

MAC地址(7EEF 802)48位比特,前24位(0UI)厂商标识,后24位厂商自行分配

单播MAC地址

        MAC地址的第1字节的最小比特位为0。

        具备全球唯一性。

组播MAC地址(01 5E)

        MAC地址的第1字节的最小比特位为1。

        仅能被作用于目的。不能做为源

广播MAC地址

        所有比特位均为1。-----代表所有人

MAC地址表包含(接口IP、V-ID(vlan的id)、timer)

交换机通过自学习的方式学习到的MAC地址表项是属于动态表项,该表项存在老化时间300s。

二层交换机的工作原理

        当交换机的某个端口收到一个单播数据帧时,会发生以下行为。

        首先

园区网架构

什么是园区网?

由广域网搭建网络,称为骨干网络。

物联网:万物互联

企业网三层架构

接入层

汇集层

        汇聚层就是流量的聚集地,该层面也通常是终端设备的默认网关所在地。

核心层

        网络的骨干层面---重中之重。

        

VLAN

vlan的特点

        一个vlan就是一个广播域,在同vlan中可以直接进行二层交换,在不同的vlan中只能进行三层交换。

VLAN的实现原理

数据帧本身没有任何信息能标识它的来源---传统的以太网数据帧。

VLAN标签(VLAN Tag)

IEEE 802.1Q标准---虚拟桥接局域网标准。定义了vlan标签信息。---Dot1Q标准

《Wakin HCIP 笔记》是一本记录了音乐人汪峰的成长、音乐创作和个人生活的笔记集。汪峰是中国乐坛的一位知名音乐人,他具有深厚的音乐功底和独特的音乐理念。这本笔记集记录了他在音乐道路上的点滴心得和经验,对于关注他的粉丝和音乐迷们来说,无疑是一本宝贵的学习材料。 《Wakin HCIP 笔记》首先介绍了汪峰的音乐生涯,从他的初入音乐界开始叙述,包括他加入摇滚乐队的经历、遇到的挫折和获得的成功等。这些故事既激励着年轻乐手们追逐音乐梦想,也让普通读者更加了解汪峰的音乐人生。 其次,这本笔记集还详细介绍了汪峰的音乐创作过程。他以独立创作为主,对词曲的构思和灵感来源进行了深入探讨。通过他的经验分享,读者可以了解到创作音乐并不是一蹴而就的过程,需要付出大量的努力和耐心。 此外,汪峰也分享了一些与音乐相关的个人生活经历。他提到了音乐对他个人成长和人生意义的影响,以及他如何平衡音乐事业和家庭生活的方法。这些个人故事展示了一个真实的汪峰,让读者更深入地了解他的内心世界。 总的来说,《Wakin HCIP 笔记》是一本具有启发性和正能量的作品。它不仅仅是一本关于音乐的笔记,更是一个音乐人对于音乐、生活和奋斗的思考。对于那些对汪峰和音乐有兴趣的读者来说,这本笔记集绝对是一本值得阅读的好书。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值