文章目录
HCIA复习
抽象语言---->编码
编码---->二进制
二进制--->电信号
处理电信号
OSI参考模型----OSI/RM
应用层
表示层
会话层
传输层 端口号:0-65535;1-1023是注明端口
网络层 IP地址
数据链路层
物理层
ARP协议
正向ARP---通过IP地址获取目的MAC地址
目的IP---目的MAC-----ARP表中---180
反向ARP---通过目标MAC地址获取目标IP地址
免费ARP----利用正向ARP的原理请求自己的IP地址
1、自我介绍
2、检测地址冲突
TCP/IP
四层模型—TCP/IP标准模型
五层模型—TCP/IP对等模型
PDU—协议数据单元
L1PDU(layer 1 物理层)
L2PDU
...
L7PDU
应用层---数据报文
传输层---数据段
网络层---数据包
数据链路层---数据帧
物理层---比特流
封装和解封装
- 应用层—存在封装过程,取决于不同的应用程序
- 传输层—TCP、UDP(端口号)
- 网络层—封装IP地址
- 数据链路层—封装MAC地址和LLC子层(逻辑链路控制,负责向其上层提供服务)
- 物理层—数据已经成为电信号,不存在封装
TCP/IP的跨层封装
目的:提高封装和解封装的速度,加快传输效率
-
跨四层封装—应用层的数据封装完成后,直接封装网络层数据
- 应用在直连路由之间
-
跨三四层封装—在应用层封装之后直接封装二层数据
- 应用在直连交互设备之间
SOF---帧首定界符 MAC子层---介质访问控制层---802.3 LLC子层---逻辑链路控制层---802.3
DSAP:标识接收方上层处理数据报文的模块
SSAP:标识发送方上层梳理数据报文的模块
Control:决定我们数据传送方式的模块
1.无连接模式
2.面向连接模式---控制分片、重组、排序
IP地址
IPv4版本—32位二进制
IPv6版本—128位二进制
点分十进制:把32位二进制分为4部分,每部分8位,进行二进制到十进制的转换
网络位:网络位相同,则代表在同一个广播域
主机位:在同一个广播域中,使用主机位来区分不同的主机
掩码:由连续的1和连续的0组成,1代表网络位,0代表主机位
IPv4地址分类(有类分址)
单播地址---一对一通讯
特点:既能作为源IP地址,又能作为目的IP地址
组播地址---一对多
广播地址---一对所有
仅作为目的IP地址使用
A:掩码:255.0.0.0
B:掩码:255.255.0.0
C:掩码:255.255.255.0
D
E
IP地址分类原则:根据IP地址二进制的前八位数字特征分类
A:0XXX XXXX-----0-127
B:10XX XXXX-----128-191
C:110X XXXX-----192-223
D:1110 XXXX-----224-239
E:1111 XXXX-----240-255
私网IP地址—单播地址
A:10.0.0.0-10.255.255.255-----1个A类网段
B:172.16.0.0-172.31.255.255-----16个B类网段
C:192.168.0.0-192.168.255.255----256个C类网段
私网IP地址可以重复使用,但是在私网内部需要保证唯一性。
特殊IP地址
1、127.0.0.1-127.255.255.254----环回地址----本地测试
2、255.255.255.255---受限广播地址
3、主机位全1---192.168.1.255/24----直接广播地址
区别:受限广播地址是不被路由器转发的,而直接广播地址会被转发。
4、主机位全0---192.168.1.0/24----网络
5、0.0.0.0----代表没有IP地址,或代表所有IP地址
6、169.254.0.0/16----本地链路地址/自动私有地址
注意:该IP地址不能进行跨网段通讯----以太网环境
VLSM—可变长子网掩码
思路:从主机位向网络位借位。
192.168.1.0/24
192.168.1.0 000 0000/25---192.168.1.0/25
192.168.1.1 000 0000/25---192.168.1.128/25
CIDR----无类域间路由
思路:取相同,去不同
192.168.0.0/24
192.168.1.0/24
192.168.2.0/24
192.168.3.0/24
192.168.0000 0000.0
192.168.0000 0001.0
192.168.0000 0010.0
192.168.0000 0011.0
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服务—动态主机配置协议
DHCP Discover—广播
应用层 | DHCP Dicover |
---|---|
传输层 | UDP—源端口号68—目的端口号67 |
网络层 | IP—源IP地址0.0.0.0;目的IP地址255.255.255.255 |
数据链路层 | 以太网协议—源MAC地址:00-16-D3-23-68-8A 目的MAC:FFFF-FFFF-FFFF |
交换机的转发原理
交换机收到电信号后,将电信号转换为二进制,之后,截取到数据帧。
查看数据帧的源MAC地址,之后将该地址和数据进入的接口的对应关系记录在本地的MAC地址表中---300s
之后,看数据帧中的目的MAC地址,基于目标MAC地址查询本地MAC地址表,如果表中存在记录关系,则按照记录进行转发;若表中无记录关系,则将进行洪泛(交换机将数据从除了进入的接口外的所有接口发送一遍)
交换机洪泛的三种情况
- 遇到广播帧
- 遇到组播帧
- 遇到未知单播地址
DHCP Offer报文—广播/单播
该报文中存在一个可用的IP地址给DHCP客户端
应用层 | DHCP Dicover |
---|---|
传输层 | UDP—源端口号67—目的端口号68 |
网络层 | IP—源IP地址68.85.2.1;目的IP地址68.85.2.101 |
数据链路层 | 以太网协议—源MAC地址:路由器 目的MAC:00-16-D3-23-68-8A |
DHCP Request报文—广播
应用层 | DHCP ACK |
---|---|
传输层 | UDP 67 68 |
网络层 | IP-源IP:68.85.2.1—目的IP:68.85.2.101 |
数据链路层 | 以太网协议—源MAC:路由器;目的MAC:00-16-D3-23-68-8A |
DNS服务—域名解析协议
- URL—统一资源定界符,和域名有区别,协议+网站的域名信息+文件所在的路径
目的:通过域名获取对应的IP地址
DNS端口号—53—TCP/IP
DNS查询过程
路由器的转发原理
原理:路由器将基于数据包中的目的IP地址查询本地路由表。若路由表中存再记录,则无条件按照记录 转发;若没有记录,则将直接丢弃该数据包。
获取未知网段的信息
1、直连路由:路由器默认生成可用接口直连网段的路由条目
2、静态路由:由网络管理员手工配置
3、动态路由:所有路由器运行相同的路由协议,之后路由器之间彼此沟通,计算出未知网段的路由信息
直连路由的生成条件
1、接口双UP
物理层面UP:代表链路正常
协议层面UP:代表具备通讯协议
2、接口必须配置IP地址
HTTP协议—超文本传输协议
TCP---80
超文本---包含有超链接link和多媒体元素标记的文本
TCP协议
是一种面向连接的可靠性传输协议(首先建立一个点到点的连接)
确认机制:传输确认,每接收一个数据段,则需要进行一次确认
重传机制:保障可靠性的最优机制,当一个数据段中某一个包丢失,会提醒要求重新传输这个报文
排序机制:传输一个数据段,被分为多个报文,从而不同路径传输,最终到达目的地的顺序会被打乱,所以需要重新进行排序。根据TCP数据包中的序号字段。
流控机制:滑动窗口机制---调节窗口大小从而对流量进行控制
可靠性:
TCP协议保证传输可靠性的机制 --- 确认、重传、排序、流控
MTU---最大传输单元
以太网MTU=1500
TCP在ip层面不允许分片原因是不同网络MTU不同,要进行分片,
如果丢失则不知道是那块丢了,要全部重传,因此不行。
最大段长度 MSS=MTU-TCP头部-IP头部(在TCP协议的选项字段)
PMTU---路径MTU发现协议
在IP报头中,有一个a字段是DF,该字段表明了IP报文是否允许分片,PMTU功能开启后,会将该字段设置为1,表示不能分片。
此时当需要进行分片时,发现该报文不能分片,设备会丢弃该报文,并向发送方发送一个ICMP报文(数据不可达)
TCP的面向连接
三次握手
四次挥手
MSL一个数据包在网络中最大的传输时间2min
UDP
应用层 | HTTP请求报文—请求方式:GET(用于请求一个网页信息) |
---|---|
传输层 | TCP 源端口:随机端口;目的IP;web服务器 |
网络层 | IP协议—源IP:小明电脑;目的IP:web服务器 |
数据链路层 | 以太网封装—MAC源:小明;目的MAC:网关 |
GET---请求读取一个web页面
POST---附加一个命名资源(web页面)
PUT---请求存储一个web页面
应用层 | HTTP应答报文—状态码 200—ok |
---|---|
传输层 | TCP协议—源端口号:80;目的:请求方的随机数 |
网络层 | IP协议—源IP:web服务器;目的IP:小明 |
数据链路层 | 以太网封装—源MAC:服务器;目的MAC:下一跳设备的MAC地址 |
HTTP状态码
分类 分类描述
1** 信息,服务器收到请求,需要请求者继续执行操作
2** 成功,操作被成功接收并处理
3** 重定向,需要进一步的操作以完成请求
4** 客户端错误,请求包含语法错误或无法完成请求
5** 服务器错误,服务器在处理请求的过程中发生了错误
以太网(计算机 局域网)
静态路由
静态路由的优点
1.选路合理,由网络管理员手工配置
2.安全,动态路由协议的计算是需要路由器之间交互数据报文
3.不需要额外占用设备资源
缺点:
1.配置量大
2.无法基于拓扑结构的变化而自动收敛
flag:RD 递归计算而得
基本配置
方法一:
[r1]ip route-static 23.0.0.0 24 12.0.0.2-----在以太网中使用
方法二:
[r3]ip route-static 12.0.0.0 24 GigabitEthernet 0/0/0
方法三:
[r1]ip route-static 192.168.2.0 24 GigabitEthernet 0/0/1 12.0.0.2
方法四:
[r3]ip route-static 192.168.1.0 24 12.0.0.1 //需要提前铺垫好所有在路由递归查找过程中的所有路由项。
Pre — 优先级 — 当多条路由条目的目标网段相同时,仅加载优先级 最高的路由条目到路由表中。 — 数值越大,优先级反而越低 0 - 255 — 华为设备默认静态路由的优先级为60,直连路由的优先为0。
[r1]ip route-static 192.168.3.0 24 GigabitEthernet 0/0/1 192.168.2.2 — 增加出接口添加静态路由
路由环路 TTL — 64 128 255
拓展配置
1,负载均衡:当路由器访问同一个目标网段,具有多条开销相似的路径 时,可以让设备将流量进行拆分,分别从多条路径同时传输。可以起到叠 加带宽的效果。 192.168.6.0/24 Static 60 0 RD 192.168.2.2 GigabitEthernet 0/0/1 Static 60 0 RD 192.168.3.2 GigabitEthernet 0/0/2
2,环回接口:路由器配置的虚拟接口,一般用于虚拟实验而不受设备的 限制。 [r1]interface LoopBack ? <0-1023> LoopBack interface number ---- 环回接口可以创建 1024个 [r1]interface LoopBack 0 — 创建环回接口 [r1-LoopBack0] [r1]ping -a 192.168.1.1 192.168.4.1 — 指定发送Ping包中的源IP地 址
3,手工汇总:当路由器可以访问多个连续的子网时,若均通过相同的下 一跳,可以将这些网段进行汇总计算,之后仅编辑到达汇总网段的路由信 息即可,以达到减少路由条目数量,提高转发效率的目的。 192.168.00000001.0/24 192.168.00000010.0/24 192.168.0.0/22
4,路由黑洞:在汇总中,包含网络内实际不存在的网段时,可能会产生 流量有去无回的现象,造成链路资源的浪费。 192.168.0.0/22 <<< 192.168.0.0/24 192.168.0000 0001.0/24 192.168.0000 0010.0/24 192.168.0000 0011.0/24 合理的子网划分和汇总可以减少路由黑洞的产生。
5,缺省路由:一条不指定目标的路由条目。查表时,若本地路由均未匹 配,则将匹配缺省路由。 路由黑洞和缺省路由相遇将100%出环 [r1]ip route-static 0.0.0.0 0.0.0.0 12.0.0.2
6,空接口路由:防止路由黑洞和缺省路由相遇成环,在黑洞路由器上配 置一条到达汇总网段指向空接口的路由条目。 1,路由表的匹配原则:最长匹配原则(精确匹配原则) 2,null 0:如果一条路由的出接口设置为空接口,则将匹配到的数 据包直接丢弃。 [r1]ip route-static 192.168.0.0 22 NULL 0
7,浮动静态路由:通过修改静态路由的默认优先级,实现静态路由的备 份效果。 [r2]ip route-static 192.168.1.0 24 21.0.0.1 preference 80 [r1-GigabitEthernet0/0/0]shutdown — 手工关闭接口 [r1-GigabitEthernet0/0/0]undo shutdown — 重新开启接口
BFD
双向转发检测,是一种全网统一的检测机制,用于快速检测、监控网络中链路或者IP路由的转发连通状况。
网络类型及数据链路层协议
网络类型是根据我们数据链路层所运行的协议及规则来划分。
网络类型的分类
- P2P—点到点—point to point
- MA—多点接入网络
- BMA—广播型多点接入网络
- NBMA—非广播型多间接入网络
数据链路层协议
MA网络
以太网协议
特点:需要使用MAC地址对我们的设备进行区分和标识
原因:(为什么以太网需要使用MAC地址进行物理寻址)利用以太网协议建立起来的二层网络中可以包含多个接口,每个以太网接口之间都可以进行交互以太网数据帧,从而进行通讯,若不存在MAC地址,则无法找到对应的接收数据帧的设备。
所属类型—BMA
以太网网络的构建方式—使用以太网线缆,连接设备的以太网接口,形成的网络称为以太网络,所运行的协议就是以太网协议。
以太网的特色—可以提供极大的传输速率—频分技术
POS为服务器间高速转发数据流的线
同步=跟在报文后面
异步=以字节为单位
P2P网络(Peer to Peer)
当一个网络中只能存在两台设备,且不允许第三台设备加入,这样的网络称之为P2P网路。
P2P网络的搭建—使用串口线缆连接设备的串线接口,形成的网络
串口线—一种比较古老的线缆,早期主要使用的线缆之一
串口的标准:E1—2.048M/bps T1—1544M/bps
HDLC—High-Level Data Link Control—高级数据链路控制协议
标准:(两种不兼容思科、锐捷)
- 满足工业标准的HDLC协议—ISO组织(IBM公司—SDLC—一种面向比特的同步数据链路控制协议—以帧为单位来传输数据)
- 不满足工业标准的HDLC协议—各家厂商根据ISO标准的HDLC上进行修改得出
HDLC网络搭建
理论上不用配ip,为了服务上层协议要配ip
display interface brief
link-protocol hdlc
HDLC的接口地址借用
串行接口可以借用loopback接口的ip地址和对端建立连接。
[Huawei-Serial4/0/0]ip address unnumbered interface LoopBack 1
要配路由且该路由条目出口配置为出接口,因为没有ip地址
将环回接口IP地址配置为对端接口IP地址的同网段地址,且掩码为32
PPP—点到点协议(Point to Point Protocol)
PPP协议优点
- 相较于HDLC,PPP协议具备良好的兼容性。统一标准协议(任何穿行接口或串行线缆,子要能够支持全双工通讯,就可以支持PPP协议)
- 具有良好的可移植性。—PPPoE
- 可以完成认证和授权。
- 没有重传机制,开销小,速度快
PPP会话的搭建
PPP协议建立会话需要经过三个阶段
- 链路建立阶段—LCP协议
- 认证阶段—PPP认证(可选项)
- 网络层协议协商阶段—NCP协商
PPP链路建立阶段
- Dead阶段—被称为物理层不可用阶段
- 当通讯双方的两端检测到物理链路激活,就会从dead阶段跃迁到Establish阶段
- Establish阶段—会进行LCP参数
- 在该阶段,当LCP参数协商成功后,会进入opened状态,表示底层链路已经建立。
- Authenticate阶段—大多数情况下,链路两端的设备是需要经过认证阶段后才能进入到网络层协议阶段。
- PPP链路在缺省情况下,不要求进行认证
- 如果要求进行认证,则在链路建立阶段必须指定认证协议。
- 认证方式是在双方链路建立阶段进行协商的。
- 在Network阶段—PPP链路进行NCP协商
- 通过NCP协商来选择和配置一个网络层协议并进行该网络层协议的参数协商
- 只有当响应的网络层协议协商成功后,该网络层协议才可能通过这条PPP链路进行发送。
- NCP协议成功后,PPP链路将保持通讯状态
- 若PPP运行过程中,物理链路断开、认证失败、定时器超时、手工关闭连接等操作都会导致链路进入Terminate阶段
- Terminate阶段—链接关闭的阶段
- 若此时所有的链路资源均已被施放,则通讯双方都将回到初始Dead状态,直到双方重新建立PPP连接。
F=flag标记 0x7e 帧开始 结尾
A=address地址 0xff 全F 填充
C=control 无意义0x03
LCP协议—链路控制协议—主要用于完成PPP会话建立的第一阶段协商过程
NCP协议—网络控制协议—是一系列协议的总称,完成PPP会话建立第三阶段时针对网络层协议进行协商。网络层所使用的协议不同,则对应的NCP协议不同。
LCP报文类型
- LCP具有三大报文类型
-
链路配置报文—重点
-
链路终止报文
- Terminate-Request:终止请求
- Terminate-ACK:终止确认
-
链路维护报文
- echo-request — 回波请求
- echo-reply — 回波应答
-
LCP建立
1.MRU值=PPP数据帧中所允许携带的最大数据单元(信息部分大小),单位字节,默认1500
2.认证方式:根据第二阶段认证来判断,若存在认证,则需要协商认证方式;若不存在认证,则不需要协商。
3.魔术字:用来检测链路中是否存在环路,是由本地设备随机生成的字符串(设备序列号、硬件地址)
协商过程
认证阶段
PPP的认证,一般是通过AAA管理框架来完成的
认识是双向的,但是也可以做单向,但是不建议
两种认证方式:PAP、CHAP
- PAP
- 密码认证协议—是一种明文的认证方式
PAP配置方法
认证方
创建用户信息
[r1-aaa]local-user huawei password cipher 123456
[r1-aaa]local-user huawei service-type ppp
配置认证方式
[r1-Serial4/0/0]ppp authentication-mode pap
被认证方
[r2-Serial4/0/0]ppp pap local-user huawei password cipher 123456
PPP会话的建立是一次性会话方式,当第一次链路建立完成后,后续修改认证方式不会影响链路的通讯。(需重启接口来激活)
CHAP配置方法
认证方
[XIAN-OPENLAB-CORE-AR2240-1-aaa]local-user ccip password cipher 666666
[XIAN-OPENLAB-CORE-AR2240-1-aaa]local-user ccip service-type ppp
[XIAN-OPENLAB-CORE-AR2240-1-Serial4/0/0]ppp authentication-mode chap
被认证方式
[r2-Serial4/0/0]ppp chap user ccip
[r2-Serial4/0/0]ppp chap password cipher 666666
一条PPP链路的两端可以使用不同的认证协议认证对端,但是被认证方必须支持认证方要求使用的认证协议并正确配置用户名和密码等信息(一个端口可以同时配两个不同的认证)
网络层协议协商阶段—NCP协商
通过NCP协议来对网络层参数进行协商
-
协商内容
- IP报文的压缩方式
- IP地址—检测该IP地址是否位可用IP地址,且不与自己的IP地址冲突
-
协商过程
-
静态地址协商
-
-
一旦认可了对方的IP地址,则将会自动学习到达该IP地址的主机路由。—在PPP网络中,通讯双方的IP地址可以不同
-
-
动态地址协商
-
-
配置命令
-
配置方[r2-Serial4/0/0]remote address 1.1.1.1 认证方[r1-Serial4/0/0]ip address ppp-negotiate
-
AAA—认证、授权、计费
网络安全的一种管理机制
安全功能
- 认证—用于验证用户是否可以获取网络访问权限
- 授权—授予用户可以使用的服务类型
- 计费—记录用户使用网络资源的情况
AAA域
- 每一个用户都属于一个域,一个域是由属于同一个域的用户构成的集合群体
- 域下信息
- 一个域统一管理AAA方案、服务器模板和授权
- AAA方案—分为认证方案、授权方案和计费方案,用来定义认证、授权和计费的方式方法
- 服务器模板—用来配置认证、授权或计费使用的服务器
授权信息分为两类
- 本地授权(域下授权信息):用户从域下获取的授权信息
- 服务器授权:用户从域下和服务器同时获取授权信息
- 若域下授权信息与服务器授权信息冲突,则遵照服务器授权信息执行
- 若不冲突,则两者同时执行
用户所属域
用户属于哪一个域—根据NAS设备来判断(类似DNS服务器)
NAS存储一个区域内部所有的用户信息,以及其对应的域信息
当用户名中携带了域名信息,则NAS设备会根据域名将其归属到对应域下,并回复该域下所配置的AAA方案、服务器模板、域下授权信息。如果用户名没有携带域名信息,则会将其归属到默认域中。
默认域中自带默认的认证方案、授权方案和计费方案
aaa
domain huawei //创建一个域
AAA方案
认证方案
认证方案用来定义用户认证时所使用的的认证方法以及每种认证方法的生效顺序。
认证方案必须应用到域。
设备支持的认证方式
- 本地认证—设备作为认证服务器,然后将用户信息配置在本设备上。
- 速度快,降低运营成本
- 缺点:存储的用户信息量收硬件影响
- 不认证
授权方案
授权方案用来定义用户授权是使用的授权方法以及每种授权方法的生效顺序并且也需要应用到域。
设备支持的授权方法
- 本地授权
- 不授权
计费方案
计费方案用来定义用户计费时使用的计费方法以及每种计费方法的生效顺序并且,也需要应用到域。
设备支持的计费方法
- RADIUS计费
- HWtacacs计费
计费只能有一种方案,故没有所谓的生效顺序
小实验
配置信息:
创建用户:
[server-aaa]local-user ccip@huawei password cipher 123456----用户名后必须跟域名
[server-aaa]local-user ccip@huawei service-type telnet
AAA方案:
[server-aaa]authorization-scheme huawei ---创建一个授权方案
[server-aaa-author-huawei]authorization-mode local ----设置该方案的授权方法
[server-aaa]authentication-scheme huawei ---创建一个认证方案
[server-aaa-authen-huawei]authentication-mode local ---设置该方案的认证方法
[server-aaa]domain huawei ---创建huawei域
[server-aaa-domain-huawei]authorization-scheme huawei
[server-aaa-domain-huawei]authentication-scheme huawei
GRE和MGRE
VPN出现前:使用物理专线—维护成本高
VPN—虚拟私有网络
- 指的是依靠ISP或其他网络管理机构在公有网络基础上构建的专用的安全数据通信网络,只不过该网络是逻辑上的而非物理的
虚拟:用户不再需要拥有实际的长途数据线路,而是使用公共网络资源建立的属于自己的私有网咯
专用:用户根据自身需求,特别定制的最符合自身网络架构的网络
核心技术—封装技术(VLAN同理)
GRE(通用路由封装)—标准的三层隧道技术—逻辑隧道的封装技术
属于点到点隧道
GRE环境
希望的流量走向
SIP:192.168.1.1 | DIP:192.168.2.1 | 数据 |
---|
实际的流量走向
SIP:12.0.0.1 | DIP:23.0.0.3 | 数据 |
---|
经过GRE粘合后的走向
SIP:192.168.1.1 | DIP:192.168.2.1 | 数据 |
---|
SIP:12.0.0.1 | DIP:23.0.0.3 | SIP:192.168.1.1 | DIP:192.168.2.1 | 数据 |
---|
1.创建隧道接口
[r1]interface Tunnel 0/0/0 //创建隧道接口
[r1-Tunnel0/0/0lip address 192.168.3.1 24
[r1-Tunnel0/0/0]tunnel-protocol gre //定义封装方式
[r1-Tunnel0/0/0]source 12.0.0.1 //定义封装内容,注意是物理接口IP地址
[r1-Tunnel0/0/0]destination 23.0.0.3
双方均需要进行GRE配置
2.配置虚拟静态路由条目
GRE的报文结构
SIP:12.0.0.1(传输协议) | DIP:23.0.0.3(传输协议) | GRE(封装/运载协议) | SIP:192.168.1.1(乘客协议) | DIP:192.168.2.1(乘客协议) | 数据 |
---|
- 设备从连接私网的接口接收到报文后,检查报文头部中出现的IP地址字段,并在路由表中查找出接口,如果发现出接口是隧道接口,则将报文发送给tunnel模块进行处理。
- tunnel模块接收到报文后,会首先根据乘客协议的类型和当前GRE隧道的配置来添加参数,并对报文进行GRE封装
- 然后,设备给报文添加传输协议报文头部,即IP报文头部。该IP头部信息的源IP地址是隧道源地址 (不是隧道自身的IP地址),目的地址就是隧道的目的地址。
- 最后,设备根据新添加的IP报文头部中的目的IP地址,在路由表中查找对应的出接口,并发送报文
- 接收端设备从连接公网的接口收到报文后,首先分析IP报文头部,如果发现协议类型字段的值为47 (GRE的协议号),表示上层协议为GRE协议,于是出接口将报文交给GRE模块处理。
- GRE模块去掉IP报文头部和GRE头部,并根据GRE报文头部中的协议类型字段,发现此报文的乘客协议为私网中运行的IP协议,将该数据交给对应协议处理。
Keepalive检测—GRE保活机制—用于检测隧道对端是否可达
[r1-Tunnel0/0/0]keepalive period 2 retry-times 5
设置发送周期为2s;重传次数为5次。
如果本端隧道配置了keepalive检测功能,GRE隧道会创建一个计时器,并周期性的发送探测报文,同时进行不可达计数。
每发送一个探测报文,不可达计数+1
如果该计数器到达预先设定的值之前收到回应报文,则表明对端可达。
如果计时器值达到预先设定的重传次数,还未收到对端的回应报文,则认为对端不可达。关闭隧道连接.
keepalive是不需要双方均进行配置的,仅配置一端即可进行检查,最好两端都配
MGRE—多点通用路由封装技术(非NBMA)
NHRP—下一跳解析协议
中心&节点:Hub&Spoke架构
NHS(下一跳服务器):在私网当中选择一个出口物理IP地址不会变的设备充当NHS服务器。剩下的节点都可以知道中心的隧道IP和物理IP,然后通过NHRP要求所有的分支节点都需要将自己的物理接口IP和隧道IF发送给该服务器(有变化就发送) 。
NHS服务器将会存有所有分支节点的地址映射关系的一个动态记录。
发送消息时查询该映射记录表即可。
MGRE的非shortcut配置
reset saved-configuration //清除本地配置文件
Hub配置
[r1Jinterface Tunnel 0/0/0
[r1-Tunnel0/0/0lip add 192.168.5.1 24
[r1-Tunnel0/0/0]tunnel-protocol gre p2mp //修改接口封装模式为点到多点
GRE[r1-Tunnel0/0/0]source 15.0.0.1 //定义封装的源IP,该IP地址为物理IP地址
Spoke配置
[r4Jinterface Tunnel 0/0/0
[r4-Tunnel0/0/0]ip add 192.168.5.4 24
[r4-Tunnel0/0/0]tunnel-protocol gre p2mp
[r4-Tunnel0/0/0]source 45.0.0.1
[r4-Tunnel0/0/0]nhrp entry 192.168.5.1 15.0.0.1 register //分支需要到中心站点注册隧道地址物理地址注册
ip rpute-static ....
[r1]display nhrp peer all //查看nhrp的注册情况
DSVPN—华为
- DSVPN专门为了Hub-Spoke架构诞生服务
通过总部中转流量缺点:
- 总部在中转分支之间的数据流量时,会消耗总部hub设备的cpu和内存资源,造成资源紧张
- 总部需要对分支之间的数据流量进行封装和解封装,造成额外的网络延时
- IPSec协议不支持广播报文和组播报文。
DSVPN通过NHRP协议动态收集、维护和发布各节点的公网地址等信息,解决了源分支无法获取目的分支的公网IP地址的问题,从而可以在分支和分支之间直接建立一条动态的VPN隧道,实现分支和分支之间的直接通讯,减轻总部的设备负
担。
DSVPN借助MGRE技术,使VPN魔道能够传输组播报文和广播报文,并日一个tunne]接口可以跟多人对端建立VPNY道,减少网络管理员的配置量。并且,在新增分支或者分支地址变化的情况下,能够自动维护总部和分支之间的隧道关系,而不需要调整任何配置。
DSVPN概念
当源spoke需要向目的spoke发送数据报文时,
源spoke通过与hub节点的静态mgre道交与NHRP协议报文获取目的spoke节点的公网地址,并目与目的Spoke节点建立动态mgre隧道
MGRE隧道
- 静态mgre----建立在hub到spoke,并且永久存在
- 动态mgre—建立在spoke到spoke,在一定周期内没有流量转发时将自动拆除
NHRP映射表
- 静态表项
- 动态表项
- 老化时间—7200s两小时
NHRP映射表建立过程
-
建立spoke和hub之间的MGRE隧道
-
分支学习路由
- shortcut方式—快捷方式
- 分支路由全部汇聚到总部
- spoke节点只需要存放到达hub节点路由即可
- 一般应用在网络规模较大、分支节点较多的场景(次优路径)
- 非shortcut方式----非快捷方式
- 分支间相互学习路由
- 每一个分支节点都需要学习到所有对端的控制层面的数据
- 一般应用在网络规模较小,路由信息量少的网络中
- shortcut方式—快捷方式
-
建立spoke和spoke之间的MGRE隧道
- shortcut
分支间配置彼此的静态路由但下一跳都为总部虚拟地址 [r1-Tunnel0/0/0]nhrp redirect //在hub设备上配置(重定向)告诉发送方要去的虚拟地址 [r4-Tunnel0/0/0]nhrp shortcut //在spoke设备上配置---
- 非shortcut(手工配置spoke之间的路由,再由总部转发)
建立Spoke与Spoke之间的mGRE隧道(shortcut方式):
Spoke与Spoke之间的mGRE隧道建立过程(Normal方式\非shortcut方式):
动态路由协议下的MGRE环境—RIP
[r1-Tunnel0/0/0]nhrp entry multicast dynamic //在hub配置,开启伪广播功能(给所有人都单
播发送一次报文)
[r1-Tunnel0/0/0]undo rip split-horizon //关闭rip水平分割---非shortcut
[r1-Tunnel0/0/0]rip summary-address 192.168.0.0 255.255.248.0 //shortcut
OSPF—开放式最短路径优先协议
OSPF基础
IETE—国际互联网工程任务组—RFC2328
工作范围:AS内部—IGP
算法:迪特拉斯算法
OSPFv2和RIPv2对比
相同点:
- 两者都是无类别路由协议—传播时携带真实掩码
- 两者的更新方式相同—组播
- RIPV2—224.0.0.9
- OSPFV2—224.0.0.5/6
- 两者均支持等开销负载均衡
不同点:
- RIPV2只能应用在小型网络中,OSPFV2可以应用在中大型网络环境
OSPF区域划分—结构化部署
OSPF域(Domain)—将一系列的OSPF路由器组成的网络称为OSPF域。
区域ID:32bit
OSPF多区域划分要求:
- OSPF要求域中所有的非骨干区域(区域ID不为0)都必须与区域0相连
- 骨干区域不能被分割
OSPF区域划分
假定没有“所有非骨干区域都必须与骨干区域相连”这条规则----“远离骨干的非骨干”
定义了ABR(区域边界路由器)设备—确保所有人遵循上述规则
-
至少连接两个区域
-
连接的区域中至少有一个是区域0
-
在区域0中至少有一个活跃的邻居
作用:传递区域间路由
为了避免区域间的路由形成环路,非骨千区域之间不允许直接相互发布区域间路由
假定没有“骨干区域不能被分割”这条规则----不连续骨干区域:
OSPF水平分割原则
从非骨干区域收到的路由信息,ABR能接收,但不会使用这条路由信息(OSPF水平分割原则)
OSPF有如下规则:
1、对于伪ABR设备不允许转发区域间路由信息。
2、对于真实ABR而言
能够将自己直连的非骨千区域的区域内路由信息传递给骨干区域能够将自己直连的骨干区域的区域内路由信息传递给非骨干区域。能够将自己从骨干区域学习到的区域间路由信息传递给非骨干区域。
OSPF路由器角色
- 内部路由器(IR)
- 所有接口都接入同一个区域的路由器
- 区域边界路由器(ABR)
- 骨干路由器(BR)
- 接入Area0的路由器,包括ABR,但不包括ASBR
- ASBR(AS边界路由器)
- 工作在OSPF自治系统边界的路由器
- 并不是同时运行多种路由协议的OSPF路由器就一定是ASBR,ASBR一定是将外部路由引入到OSPF域的设备
OSPF数据包
-
Hello
-
用来周期发现、建立、保活OSPF邻居关系,通过组播224.0.0.5发送
-
10s发送一次来确认邻居的存在
-
hold-time—四倍的hello时间
-
Router-ID(RID)
-
全域AS唯一,标识路由器身份
-
用IP地址形式表示(32bit,点分十进制)
-
配置方法
-
手工配置
-
自动配置
-
默认最大环回地址,若没有最大环回则选择最大物理IP地址(路由器的RID选择,非OSPF)
-
[r1]display router id //查看路由器全局ID值
-
注意: 启动OSPF进程前,必须要有接口IP地址,若存在IP地址,则在第一次启动OSPF进程时,会选取第一个配置的IP地址为RID 但是,若删除第一个配置的IP地址后,则恢复为上述规则。 在华为设备中,若没有接口IP地址,则OSPF启动后,RID为0.0.0.0 在思科设备中,若没有接口IP地址,则OSPF启动失败
-
无论采用手工配置还是自动选择,一旦OSPF进程启动,RID被确定,则无法变化,必须重启进程才能生效
-
reset ospf process 重启所有OSPF进程
-
-
-
-
-
DBD
- 数据库描述报文
- 该报文携带的是路径信息的摘要 (为了减少更新量,并不会直接给邻居发送TOPO信息,而是将TOPO信息的目录发送给邻居)
-
LSR
- 链路状态请求报文
- 基于未知的LSA(链路状态通告)信息进行查询
-
LSU
- 链路状态更新报文
- 携带真正的LSA信息的数据包
-
LSAck
- 链路状态确认报文
OSPF七种状态机
- down—关闭状态—一旦启动了OSPF协议,则发出hello包,并进入下一状态
- init—初始化状态—收到的hello包中,存在自己的RID值,则进入下一状态
- 2-way—双向通讯状态—邻居关系建立的标志
条件匹配:匹配成功则进入下一阶段,不成功则停留在2-way
- exstart—预启动状态—使用未携带信息的DBD包进行主从关系选举,RID大的为主
- exchange—准交换状态—使用携带目录信息的DBD报文进行目录共享
- loading—加载状态—邻居间使用LSR/LSU/LSAck三种报文来获取完整的TOPO信息
- full—转发状态—修成正果—标志邻接关系的建立
包发送前后,不同路由器视角下,路由器的状态不同
主R2优先进入Loading状态,R1接收到带有信息的DBD报文,才进入Loading
DD报文最后没有LSA头部,R1告诉R2,收到了它发出的最后一个DD报文
条件匹配
- 设备接口名称
- DR—指定路由器接口
- BDR—备份指定路由器接口
- DRother—其他路由器接口
- OSPF称为邻接关系的条件
- 点到点—不用选举DR和BDR—直接开始建立邻接关系(加快收敛的方法)
- MA网络—在一个网络中,不限制节点数(会选举DR和BDR)
- 选举规则(接口IP作为DR)
- 接口优先级—>0-255---->优先级越大,为DR,次一级为BDR(默认为1)
- RID----(接口优先级相同情况下)越大越优先
- 选举范围—一个广播域进行一次条件匹配
- 角色之间的关系
- DR和DRother---->邻接关系
- DR和BDR---->邻接关系
- BDR和DRother---->邻接关系
- DRother和DRother—>邻居关系
- 非抢占性选举模式
选举过程
- DR、BDR的选举是通过Hello报文来实现的,选举过程发生在2-way状态之后
- 路由器将自己的接口的DR优先级填写hello报文中的“DR优先级”字段
- 在接口视图下可以修改DR优先级(若DR优先级修改为0,则代表不具备DR和BDR的选举资格)
- 当路由器接口激活OSPF后,首先检查网络上是否已经存在DR设备,如果存在则接受DR角色。若不存在,则拥有最高DR优先级的设备称为DR(RID)
- BDR的选举过程和DR的选举过程相同,但是是在DR选举成功之后
DR设备使用组播224.0.0.5向该MA网络发送消息.
而DR和BDR使用224.0.0.6监听该MA网络的消息。
DRother使用224.0.06发送自己的LSU报文。
NBMA网络类型:
在NBMA网络类型下,如果需要启动OSPF协议,需要手工指定邻居,否则不会发送he11o报文。
若不发送he11o报文,则邻居状态处于attempt状态。
OSPF工作状态
- 启动OSFP配置完成后,OSPF将向本地所有运行OSPF协议的接口组播224.0.0.5发送hello报文; hello报文中携带有本地的RID以及本地已知的邻居RID;之后生成邻居表。
- 邻居关系建立后,进行条件匹配;匹配失败则停留在邻居关系;仅hello报文保活
- 匹配成功的邻居将开始建立邻接关系。
- 首先使用未携带数据的DBD报文来进行主从关系选举;之后使用携带数据的DBD报文来共享数据库 目录;之后本地使用LSR/LSU/LSACK报文来获取未知的LSA信息;
- 完成本地数据库的建立—生成数据库表。
- 之后本地基于数据库生成有向图和最短路径树,之后计算本地到达拓扑中所有未知网段的最短路 径,并将其添加到路由表中。
- 收敛完成,hello报文周期保活。每30min进行一次周期更新。
结构突变
- 新增网段—直接在邻接关系的接口使用LSU进行更新,将内容告诉于邻居。并需要邻居的ACK确认。
- 断开网段—直接在邻接关系的接口使用LSU进行更新,将内容告诉于邻居。并需要邻居的ACK确认。
- 无法沟通—dead time ----四倍的hello时间
OSPF基础配置
1.启动OSPF进程
[r1]ospf 1 router-id 1.1.1.1 //进程号仅具备本地意义,手工配置RID方法
2.创建区域
[r1-ospf-1]area 0
3.宣告
[r1-ospf-1-area-0.0.0.o]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 //宣告网段
宣告使用反掩码形式
display ospf peer
display ospf peer brief
display ospf lsdb
display ip routing-table protocol ospf
display ospf routing
华为体系中,优先级为10;
OSPF的COST====参考带宽(100Mbps)/实际带宽
[r1-ospf-1]bandwidth-reference 1000 //修改参考带宽-----所有设备均需修改
一条OSPF路径的Cost等于从目的地到本地路由器沿途的所有设备的入接口Cost值的总和
OSPF报文格式
OSPF报文头部
- 版本(Version)
- 对于OSPFv2而言,该字段值恒为2
- 类型(Type)
- 描述OSPF数据包的类型
- Hello------1
- DBD------2
- LSR-------3
- LSU-------4
- LSACK—5
- 报文长度(Packet Length)
- 整个OSPF报文的长度----单位字节
- 路由器ID
- 发出该报文的路由器的RID值
- 区域ID
- 发出该报文的接口所属于区域的ID值
- 校验和
- 验证OSPF整体数据报文的有效性
- 验证类型
- 指示该报文使用认证类型
- 不认证—0;简单认证—1;MD5认证—2
- 认证数据
- 用于报文认证所对比的内容
- 若认证类型为不认证,则该字段全部用0填充
OSPF的认证功能存在于所有的数据交互过程中,对于任何一种数据报文,都需要进行认证
在认证的过程中,需要对比两个字段,首先对比认证类型
若相同,才会对比认证数据字段
Hello包
-
网络掩码(Network Mask)
- 该字段填充的是发送该报文的网络掩码
- 两台OSPF路由器如果通过以太网接口直连,那么双方的直连接口必须配置相同的网络掩码。(点到点网络不需要对比该参数)
- OSPF建立邻居关系需要对比子网掩码信息是华为独有,别的厂商没有这个要求
-
Hello间隔
- 两台直连路由器需要确保直连接口的Hello时间间隔相同,否则邻居关系无法建立
- 缺省情况下,P2P和BMA类型下,为10S;P2MP和NBMA为30S
-
可选项(Options)
- 该字段一共8bit,每个比特位都用于指示该路由器的某个特定的OSPF特性
- 而OSPF邻接关系建立过程中,该字段的某些比特位将会被检查,可能影响OSPF邻居关系建立(特殊区域的标记)
-
路由器优先级(接口优先级/DR优先级)
-
[r2-GigabitEthernet0/0/0]ospf dr-priority ? /修改OSPF接口的DR优先级
-
-
路由器失效时间
- 两台直连路由器要建立OSPF邻居关系,需要保证双方接口的dead time时间相同,否则邻居关系无法正常建立。
- 缺省时间为hello的4倍。
-
指定路由器
- 网络中DR设备的接口IP地址
- 若没有DR或者DR没有选举出来,则填充0.0.0.0
-
备份指定路由器
- 网络BDR设备的接口IP地址
- 若没有BDR或未选举结束,则填充为0.0.0.0
-
邻居
- 在直连链路上发现的有效邻居,此处填充的是邻居的RID值,如果发现多个邻居,则包含多个邻居字段。
所有224.0.0.X格式的组播地址称为本地链路组播,目的IP地址是本地链路组播的数据包中的TTL值被设定为1.所有的本地链路组播都会存在对应的组播MAC地址,01-00-5e-后24位 (组播IP地址的后24位)
限制邻居关系建立的参数
限制邻居关系建立的参数
-
子网掩码
-
在R2上修改网络掩码后, R2会将与R3的状态立即修改为Down状态。而R3会在40S死亡时间之后进行状态切换。 原因在于,R2在修改IP地址的掩码后,会认为之前的连接中断,需要重新建立连接,所以重置状态机。 而R3则认为是无法沟通。故会等待死亡时间超时后才切换状态。 并且,该情况,在R3等待40S周期内,还是可以向R2转发数据,R2可以接收到该数据包,但无法回复 邻居建立好后,在一方修改子网掩码,修改一方状态机立刻Down,而另一侧会在40sdead time 后Down,但是在40s内OSPF peer依然为FULL,依然可以学到路由,但无法回包
-
改Hello时间 接口视图:ospf timer hello 20
-
改死亡时间 接口视图:ospf timer dead 120 一个死亡时间后生效
-
OSPF特殊区域标记 和修改掩码效果相同(STUB)
-
认证字段
-
[area-0.0.0.0]authentication-mode simple plain 123
-
DBD包
作用:
使用未携带数据的DBD报文进行主从关系选举
使用携带数据的DBD报文进行目录信息共享
使用未携带数据的DBD报文进行确认
-
接口最大传输单元(接口的MTU)
-
华为将该值设置为0
-
华为默认不对MTU值进行检测
-
[r1-GigabitEthernet0/0/0]ospf mtu-enable
-
如果两边均开启该功能,则会进行MTU检测,并且进行检测时,若两边不同,则状态卡在 exstart状态。
-
-
I位----主从关系选举
- 如果该位置为1,则不会携带LSA头部。
-
M位----代表后续是否有多个DD报文
- 置为1,则代表后续还有DD报文
- 置为0,则代表该报文为最后一个DD报文
-
MS位----代表主设备
- 该比特位置为1,则代表Master
- 在主从关系选举完成之前,各个设备均会认为自己的master。
-
DD序列号
- 用于确保DD报文传输的有序和可靠性。----DD序列号逐次加1。
- DD序列号必须是由Master路由器决定,而从设备只能使用Master设备发送来的DD序列号来 发送自己的DD报文。(隐性确认机制,从用master发来的序列号发回去)
-
LSA头部
- 当路由器使用DD报文来描述自己的LSDB时,LSA的头部信息被包含在内。
- 一个DD报文可以包含一个或多个LSA头部信息。
LSR包
基于DBD报文请求本地未知LSA信息
链路状态类型、链路状态ID、通告路由器-----LSA三原则。—通过三个参数唯一标识一条LSA。
LSU包
LSA个数、LSA—具体LSA信息
LSAck包
LSA头部—对之前请求的LSA信息进行确认—20字节
OSPF的接口网络类型
OSPF运行在不同的网络类型下,接口的不同工作方式
网络类型 | OSPF接口的工作方式 |
---|---|
BMA | Broadcast,可以建立多个邻居关系。需要进行DR和BDR的选举。hello 10S; dead 40S |
P2P | P2P,只能建立一个邻居关系。不需要进行DR和BDR的选举,hello 10S;dead 40S |
环回接口(虚拟接口) | P2P,华为设备定义为P2P类型,但实际上该接口无数据收发。环回接口默认学习 32位主机路由。hello 10S;dead 40S |
P2MP | P2MP,可以建立多个邻居关系,不需要进行DR和BDR的选举;hello 30S,Dead 120S。会学习邻居接口IP地址所对应的主机路由 |
NBMA | NBMA,可以建立多个邻居关系,需要进行DR和BDR的选举,Hello 30S,Dead 120S。无法自动建立邻居关系 |
VLINK | Vlink;以单播的形式发送hello包,hello 10S;dead 40S;不需要进行DR和BDR 的选举。 |
小知识:
[r1]dis ospf int g 0/0/0 //查看ospf接口信息
[r1-GigabitEthernet0/0/0]display ospf brief //查看所有ospf接口信息
[r1]dis ospf lsdb //查看链路状态数据库表(拓扑表)
Poll---发送轮询Hello报文的时间间隔
Retransmit ---重传次数,别太少
Transmit Delay --- 接口传送LSA的延迟时间 ---尽量等于一个MSL
[r2]display current-configuration configuration ospf //查看所有当前配置中的关于OSPF的配置
广播型多路访问类型(BMA)
OSPF在BMA网络类型的接口上通常以组播的方式发送hello报文、LSU报文和LSACK报文。以单播的 形式发送DD报文和LSR报文。
点到点类型(P2P)
OSPF在网络类型为P2P的接口上以组播的方式(224.0.0.5)发送所有的协议报文。并且OSPF在P2P类 型的网络中不会选举DR和BDR。 该接口类型信息中,缺少了在BMA网络中看到的DR优先级、DR和BDR的描述信息。
环回接口(虚拟接口)
Type----P2P-----在思科中有专门定义的Loopback类型作为环回接口的类型,而华为中没有定义,使用 P2P来填充(没有意义)。
所有通过OSPF学习到的环回接口的路由掩码信息都是32位,这是因为环回接口是一个模拟的接口, 它实际上并没有连接用户,所以没有其余的IP地址存在于环回接口之下,只有一个可用的IP地址,故而 使用32位掩码来直接标识环回接口。保证路由信息的精确性。----避免产生环路或者路由黑洞。
修改ospf接口网络类型为broadcast后:
[r1-LoopBack0]ospf network-type broadcast //修改网络类型为BMA
State:Waiting 原因在于环回接口此时并没有邻居,也就无法进行正常的DR和BDR选举,当时间超时后,环回接口会 认为自己就是DR,并将相应信息填充到该接口信息中。
P2MP类型
华为将tunnel接口的传输速率定义为64Kbps。
OSPF在P2MP类型的接口上通常以组播的方式发送hello报文,以单播的方式发送其它报文。 P2MP类型无法由设备自动生成,必须由管理员手工更改。 P2MP类型网络不需要选举DR和BDR。
非广播型多路访问类型(NBMA)
在NBMA场景中,为了让OSPF路由器之间能够正确建立邻居关系,需要使用单播邻居的方式来发送OSPF报文,双向配置
[r4-ospf-1]peer ?
IP ADDR<X.X.X.X> IP address
实现加快收敛:
BMA网络,DR/BDR选举可以取消吗?可以取消可以选择修改接口优先级,也可以选择修改链路类型
OSPF的不规则区域
远离骨干的非骨干区域
使用tunnel隧道
在R2和R3之间构建一条隧道,之后,将这个隧道宣告到Area0,相当于将R3这个非法的ABR设备合法 化。
使用vpn隧道解决不规则区域的问题
- 可能产生选路不佳
- 可能造成重复更新
- 因为虚拟链路的存在,R2和R3之间也需要建立邻居。导致他们之间维护的周期性数据将穿越 Area1,导致中间区域的资源消耗过大。
虚链路—Vlink
专门为了解决OSPF不规则区域所诞生的技术。是一种虚拟的、逻辑的链路。
[r2-ospf-1-area-0.0.0.1]vlink-peer 3.3.3.3
[r3-ospf-1-area-0.0.0.1]vlink-peer 2.2.2.2
虚链路的配置条件:只能穿越一个区域。
Vlink链路实际上全部使用单播报文来描述信息。
Vlink被视为骨干区域的一段延伸----vlink永远属于Area0。
使用vlink解决不规则区域的问题
- 因为虚拟链路的存在,R2和R3之间也需要建立邻居。导致他们之间维护的周期性数据将穿越 Area1,导致中间区域的资源消耗过大。
- 只能穿越一个区域。
实际上,vlink不仅仅应用在我们上述两种不规则区域,还可以用来修复一些次优路径或者骨干区域不健壮问题。
当R1和R2断开连接,可以用Vlink连接R3和R4,此连接属于area0
Vlink还可以解决没有骨干区域的场景。
Vlink环路问题
场景一
成环原因:在R2和R4之间使用Vlink
使用Vlink之后,R5的路由将会传给R2(单播发给Vlink邻居),路由需要经过R3,,R2通过R4学习到了环回路由,需要往外传,发给R1和R3,R1接收到后,也会传递给R3,针对这条路由的传递,R3会信任R1传过来的。针对这个环回,R3学到的下一跳是R1,R1的下一跳是R2,R2学习到的下一跳却是R3,然后R3再传给R1,形成环路。
解决方法: Vlink不在R2和R4之间搭建,在R3和R4之间搭建,实现环回路由,从R4传给R3,R3传给R1,R1传给R2.
场景二
成环原因(看不到现象):在R2和R4上实行Vlink,在R2上进行汇总,和R4上进行汇总。R2会通过R3将路由发给R4,也发给R3,R4上的汇总路由也会发给R3;根据掩码最大匹配原则,R3会优先使用/16的路由。然后,针对汇总路由,R3的下一跳为R4,R4的下一跳为R3,形成环路。
解决方法:OSPF规定,vlink所在区域不允许传递聚合路由。
使用多进程双向重发布
重发布
把一种路由信息以另一种路由协议的方式发布出去。
[r3-ospf-1]import-route ospf 2 ---将OSPF进程2的路由导入到OSPF进程1
[r3-ospf-2]import-route ospf 1
OSPF双向进程重发布不会导入缺省路由
当在同一个区域0内,有两台直连设备RID一致,将导致无法建邻;
非直连:
当在同一个区域内,有两台设备RID一致,中间加一台设备,此时可以建邻成功;但是如果在两台RID相同的设备上,其中一个宣告一个环回,将会造成建邻震荡,此时邻居关系不稳定,此时数据通信频繁。原因: 没有宣告环回的设备不认识宣告的网段,认为自己掉线了,重建邻居,然后就会产生新的更新报文LSA,传给中间设备,告知没有,中间设备再转发更新给宣告路由器,宣布路由器,也会重新建邻,再转发中间路由器有,不停震荡。在华为中,一旦震荡,其中一台华为设备或两台设备将在很短的时间内,修改自身RID值,消除震荡。
在MA网络中,在同一个域内,将中间设备放弃选举,RID相同的两台设备作为DR,在两台RID相同的设备上,其中一个宣告一个环回,通信数据震荡将持续很长一段时间,15min,然后其中一台或者两台设备将把DR强制换给另外一台设备(即中间设备)。
如上图,OSPF不规则区域,使用Vlink打通,导致两台RID相同的设备在同
个区域
OSPF多进程
启动多套路由协议是为了----路由隔离
多进程应用场景
首先是省公司的路由情况
然后来连接市、县、区等低一级的公司
如果是单进程,下一级可以学习到升一级的路由,这是不没有必要的,数据量很大,那么就不用加入到上一级的OSPF域,低一级的公司只需要写一条缺省可以指向高一级的就可以
实现站点式的互通,高一级的全部学习,低一级的学习自身,缺省指向高级。目的:安全性。
低一级不希望学习到高一级的明细。
OSPF的LSA详解
LSA头部
-
链路状态老化时间(Link-State Age)
- 16bit,单位s,一般小于1800s(一条ospf链路状态更新—30分钟)
- 当该LSA被始发路由器产生时,该值被设置为0,之后随着该LSA在网络中被洪泛,老化时间逐渐累积
- 最大老化时间—3600s----本地删除
- 要想全网删除一个LSA,路由器可以提前使自己产生的LSA老化时间提前并发给别人,别人发的必须等到3600s才能删
- 一条LSA在全网的路由器上老化时间必须都相同
- 组步调计时器—cisco—默认240s
-
可选项
- 内容与hello包相同
-
链路状态类型(Link-State Type)
- 指代该条LSA的类型
-
链路状态ID
- 用来标识LSA的,不同类型的LSA,对该字段的定义不同
-
通告路由器
- 产生该LSA的路由器的RID
-
链路状态序列号
- 32bit,逐次加一
- 起始:0x80000001;截止:0x7FFFFFFF
- 序列号空间
- 线性序列号空间
- 始发路由器重启后seq清零,再往外发LSA,别的路由器收到后告诉他自己的seq是多少,始发路由器再改seq
- 循环序列号空间
- 棒棒糖序列号空间(OSPF)
- 线性序列号空间
-
校验和
- 会参与到LSA的新旧关系对比
判断LSA的新旧关系
链路状态序列号、老化时间、校验和
- 具备较高序列号的LSA信息更优
- 具备相同序列号的LSA,选择拥有更大校验和的LSA
- 具备相同序列号和校验和,如果某条LSA的老化时间被设置为最大老化时间,则认为该LSA最新
- 具备相同序列号和校验和,没有任何一条LSA的老化时间为最大老化时间,会对比两个LSA的老化时间之差,当差值大于15min,选择小的LSA,当插值小于15min,随机选一个(15min—MaxAge Diff:一个LSA从始发设备发出,直到被洪泛到整个AS边界所需要的最长时间)
LSA类型
类型 | LS ID | 通告者 | 作用范围 | 携带信息 |
---|---|---|---|---|
Type-1 LSA(Router) | 通告者的RID | 区域内所有运行OSPF | 单区域 | 本地接口的直连拓扑 |
Type-2 LSA(network) | DR接口IP地址 | 单个MA网络中DR所在的路由器的RID值 | 单区域 | 单个MA网络拓扑信息的补充 |
Type-3 LSA(summary) | 路由信息的目标网络号 | ABR,在通过下一个ABR设备时会被修改为新的ABR的RID | 单区域(ABR临近的) | 路由信息 |
Type-5 LSA(ase) | 域外的路由信息的目标网络号 | ASBR | 整个OSPF域 | 域外路由信息 |
Type-4 LSA(asbr) | ASBR的RID | 与ASBR同区域的ABR设备,在通过下一个ABR设备时会被修改为新的ABR的RID | 除去ASBR所在区域的单区域 | ASBR的位置信息 |
Type-7 LSA (nssa) | 域外的路由信息的目标网络号 | ASBR;离开NSSA区域后由ABR设备转换为5类LSA | NSSA区域 | 域外路由 信息 |
Type-1 LSA—Router
- 对于一类LSA,网络中所有设备都会发送,并且只发送一条(包含所有接口)
- 同属一个区域的接口共同使用一个一类LSA信息进行描述
- 若存在多个区域,路由器会为每个区域单独产生一个一类LSA,并且每个LSA只描述接入该区域的接口
ID到TOS度量之间可以重复
V—Vlink E—ASBR B—ABR
链路类型—
display ospf lsdb router 1.1.1.1 展开一条一类LSA信息
Type-2 LSA
- 在一个网络中,只需要一台设备发送
- 该LSA仅存在于MA网络中,由DR设备产生
- 链路状态ID为DR的接口IP地址
display ospf lsdb network 23.0.0.3 展开二类LSA
Type-3 LSA (summary-net)
- 通告者均为ABR设备
- 每一条路由项都使用单独的一条LSA信息进行描述
- 该LSA中的开销值,指的是通告者到达目的网段的开销值
- 设备在接收到3类LSA之后,需要根据一类LSA和二类LSA计算的拓扑信息来寻找三类LSA的通告者
- 如果通告者是所在区域的ABR设备,那么设备可以通过一类和二类LSA找到通告者;若
display ospf lsdb summary 12.0.0.0 展开三类LSA
Type-4 LSA — Sum-Asbr
找ASBR
- 链路状态ID — ASBR的RID值
- 度量值—填写的是该通告者到达ASBR的cost值
- 四类LSA的任务是
Type-5 LSA — External
- 通告者—ASBR
- LS ID — 域外路由信息的目标网络号
- 传播范围—整个OSPF域
- 五类LSA中携带的是域外路由信息,通过重发布导入OSPF网络
5类LSA中携带的是域外路由信息,通过重发布导入OSPF网络,因为不同协议对开销值的算法标准不同,所以,在路由导入之后,将直接舍弃原有的开销值之后给路由赋予一个规定值----种子度量值
OSPF的种子度量值为1
import-route rip 1 cost 5
-
E位:
- 表示外部路由使用的度量值类型,OSOF定义了两种外部路由度量值类型,分别为Metric-Type-1(E=0)、Metric-Type-2(E=1)
- Type-1:所有设备到达备到达域外目的网段的开销值为本地到达ASBR的开销值+种子度量值
- Type-2: 域内所有设备到达域外目的网段的开销值等于种子度量值;OSPF默认使用类型2
-
外部路由标记
- 一个只有外部路由才能携带的标记,经常被用于部署路由策略或策略路由
- 在华为路由器上,缺省时,该字段被设置为1
-
转发地址—FA
- FA字段默认为0.0.0.0;则到达该外部网段的流量会被转发引入到发送这条LSA的ASBR设备
- 若FA字段不为0.0.0.0,则流量会被发送给这个FA字段所表示的地址
- 作用:解决次优路径问题—与ICMP中的重定向报文具有相同效果
- FA字段被设置为区域数值的条件:
- 引入外部路由的ASBR在其连接外部网络的接口上激活了OSPF协议
- 该接口的网络类型为BMA或者NBMA
- 该接口的IP地址属于OSPF协议配置network命令范围
- 该接口没有被配置为静默接口
ospf 1
import-route rip 1 tag 10
Type-7 LSA — NSSA
-
E位—表示允许洪泛5类LSA信息,如果做成特殊区域,则E位为0
-
N位—属于options字段,表示允许处理7类LSA
-
P位—不属于options字段
-
在7类LSA中,在不存在选路不佳的情况下,一般会使用通告者 (ASBR) 设备的环回接口地址作为转发地址。
- 如果存在多个环回接口,则使用最先宣告的环回接口地址作为转发地址.
- 如果没有环回接口,则使用武力接口的地址作为转发地址。
- 华为逻辑-----cisco—选择最后一个宣告的IP。
七转五:改通告RID和FA字段
路由撤销
一类LSA撤销
- 一类LSA实质是是在通过: 序列号+1; 校验和不变,老化时间=0的新LSA来覆盖掉老的一类LSA。
二类LSA撤销
- 二类LSA实质是是在通过: 序列号+1; 校验和不变,老化时间=0的新LSA来覆盖掉老的一类LSA。
三类LSA撤销
- 三类LSA的撤销方式:seq、校验和不变、老化时间设置为3600s
- 若采用seq+1,校验和不变,老化时间不变的方式撤销,则当需要撤销的三类LSA数量较大时,会导致路由器消耗大量计算资源
五类与七类LSA撤销
- LSA的撤销方式:seq、校验和不变、老化时间设置为3600s
- 若采用seq+1,校验和不变,老化时间不变的方式撤销,则当需要撤销的三类LSA数量较大时,会导致路由器消耗大量计算资源
OSPF优化
主要目的—减少LSA的更新量以及数量
- 路由汇总(减少骨干区域的LSA更新量)
- OSPF特殊区域(减少非骨干区域的LSA更新量)
OSPF路由汇总(路由聚合)
- OSPF路由汇总是由手工部署的
- OSPF的汇总称为—区域汇总,因为OSPF区域之间才传递路由信息,并且是对路由进行汇总而非LSA信息。
- 域间路由汇总
- 域外路由汇总
域间路由汇总
标准企业网内部
[GS-R2-ospf-1-area-0.0.0.1] abr-summary 192.168.0.0 255.255.224.0
[GS-R3-ospf-1-area-0.0.0.2] abr-summary 192.168.32.0 255.255.224.0
只要站点内这条汇总路由所涵盖的所有明细路由中有一条是有效的,则ABR就会通告该汇总路由,而当所有的明细路由全部失效时,ABR设备才不会继续通告该汇总路由。
汇总并不会影响ABR设备自身的明细路由
汇总会抑制明细路由的发送。
域间路由汇总只能汇总ABR设备自身通过一类LSA和二类LSA信息学习到的路由条目
域外路由汇总
[r1-ospf-1]asbr-summary 10.1.0.0 255.255.0.0
5类LSA汇总之后的开销值计算方法:
- Type-2------汇总网段的开销值等于所有明细路由开销值中的最大值+1
- Type-1------汇总网段的开销值等于所有明细路由开销值中的最大值
OSPF的特殊区域
第一大类
1.不能是骨干区域;2.不能存在虚链路;3.不能存在ASBR设备
末梢区域(Stub Area)
- 如果将一个区域配置成末梢区域,则这个区域将不再学习4类和5类LSA — ABR设备将不会在给该区域转发4类和5类LSA信息
- 该区域将拒绝学习域外路由信息,但是其依然具有访问域外路由的需要,所以该区域ABR设备,会自动生成一条指向骨干区域的3类LSA缺省路由
[r5-ospf-1-area-0.0.0.2]stub
[r1-ospf-1-area-0.0.0.2]stub
注意:一旦做特殊区域,则所有区域内的设备都必须做特殊区域
完全末梢区域(Totally Stub Area)
在末梢区域的基础上,进一步拒绝学习3类LSA,仅保留3类缺省
[r1-ospf-1-area-0.0.0.2]stub no-summary
该命令仅需要在ABR设备上配置即可
第二大类特殊区域
- 不能是骨干区域
- 不能存在虚链路
- 存在ASBR设备
非完全末梢区域(NSSA)
- 如果将一个区域配置成非末梢区域,则这个区域将不再学习4类和5类LSA。-----ABR设备将不会在给该区域转发4类和5类LSA信息。
- 该区域依然需要将域外路由信息导入,但因为该区域拒绝5类LSA,所以,只能以7类LSA的形式来继续传递域外路由信息。
- 之后,在7类LSA信息离开NSSA区域后,需要再转换成5类LSA进行传输。
- 该区域将拒绝学习域外路由信息,但是其依然具有访问域外路由的需要,所以该区域ABR设备,会自动生成一条指向骨干区域的7类LSA缺省路由
[r5-ospf-1-area-0.0.0.2]nssa
[r1-ospf-1-area-0.0.0.2]nssa
O_NSSA — 7类域外路由信息的标记,默认优先级也是150
完全的非完全末梢区域(Totally NSSA)
- 在NSSA的基础上,进一步拒绝学习3类LSA,产生一条3类缺省LSA
[r1-ospf-1-area-0.0.0.2]nssa no-summary
Type-1 | Type-2 | Type-3 | Type-4 | Type-5 | Type-6 | |
---|---|---|---|---|---|---|
常规区域 | √ | √ | √ | √ | √ | × |
Stub区域 | √ | √ | √ | × | × | × |
Totally Stub区域 | √ | √ | × | × | × | × |
NSSA区域 | √ | √ | √ | × | × | √ |
Totally NSSA区域 | √ | √ | ×有缺省 | × | × | √ |
NSSA的环路问题
- NSSA区域缺省路由配置错误可能会导致路由环路产生
场景一
两条缺省路由产生负载均衡,数据丢失
场景二
R4和R5无法下发OSPF缺省路由的原因是本地路由表中的静态缺省路由被R3发送的七类缺省路由所替代。
当删除R3的下发命令后,R4和R5均会下发七类缺省路由,并学习对方的七类缺省路由,但是并不会将从对方学习到的七类缺省路由加入到路由表中。
总结:
- NSSA区域的七类LSA实际上是害要ASBR或者ABR自己下发的。
- 而如果多台设备均下发成功七类LSA缺省路由,则虽然都会收到LSA信息,但并不会将其余设备的LSA缺省信息加入到本地路由表中。因为始终相信自己的缺省路由是最好的。
- 而对于第一台发布七类缺省路由的设备而言,会认为我身上已经有了一条去往外部区域的路由,并且本地作为通告者,那么当他接收到其他设备发送来的七类缺省路由,也不会进行学习。-----华为运用该逻辑解决TotallyNSSA中的环路问题。
- 华为为了解决环路问题,保留了NSSA区域由ABR产生的七类LSA缺省路由,这样做的好处就是使得设备相信自己产生的这条LSA,而对于其他设备传递来的七类LSA,只接收到不使用。
- 这样一来,ABR设备就不会具备指向NSSA区域内部的缺省路由,更不会将这个缺省路由传递给骨干区域,从而避免环路问题
OSPF规定: 在NSSA区域中,可能同时存在多个ABR或ASBR,为了防止路由环路产生,边界路由器之间不计算对方发布的缺省路由
NSSA负载分担解决次优路径问题
OSPF对进行7转5操作的规范
- P比特位用于告知路由器该Type-7 LSA是否需要转换
- 缺省情况下,转换路由器是NSSA区域中RID值最大的ABR
- 只有P比特位和FA字段不为0的Type-7LSA才能被转换为五类
[r4-ospf-1-area-0.0.0.1]nssa suppress-forwarding-address //在进行7转5时,删除转发地址
[r1-ospf-1-area-0.0.0.1]nssa translator-always /制开启7转5操作,在ABR设备上配置
若本地存在两条LSA除了通告者不同外,只有FA字段的值不同,那么对于这两条五类或七类LSA而言,FA字段不为0.0.0.0的LSA优先级更高。
NSSA区域如果没有FA字段,将会有很大的可能因为7转5操作出现次优路径
FA字段解决NSSA环路
nssa环路:
左侧为nssa区域,此时R1宣告环回,nssa区域内,七类信息传播,R3可以学到,R3作为ABR,且RID大,实现七转五操作,将环回转5类,发给R4,R4又将它发给R2。此时,R2会学习5类,因为5类的开销更小。
如果FA字段为0,R2选择5类LSA,将会演算通告者R3,R2和R3同区域,可以递归到。此时R2去往环回下一跳是R3,而R3下一跳是R2,出现环路可能的情况,但实际上,因为是R4将路由传给R2,所以,R2实际下一跳是R4R4下一跳是R3,也是环路
重发布和路由策略
重发布
在同一个网络拓扑结构中,如果存在多种不同的路由协议,由于不同的路由协议对于路由项的处理机制不同,这就会导致在网络中造成路由信息的隔离。而在路由协议的边界设备上,将某种路由协议的路由信息引入另一种路由协议中,这个操作被称为路由引入 (Route lmportation) 或者路由重分发。-执行该操作的技术被称为重发布。
作用:在一个网络中,若运行多种路由协议或相同路由协议的不同进程,协议之间不能直接沟通计算,进程之间也是相互独立,所以需要使用重发布技术来实现路由的共享。
执行条件
- 必须存在一个边界设备----同时连接两种路由协议或两种进程,同时学习到两种来源的路由信息,之后进行路由共享
- 关注种子度量值—起始度量值
- A协议和B协议的开销计算算法不同,无法直接使用。故将A协议发布到B协议时,边界设备将不携带A协议0的度量值,而是共享到B协议后,由边界设备在路由中添加一个起始度量值。
规则
- 将A协议引入到B协议中,在边界设备中的B协议上配置
- 将A协议引入到B协议中,边界设备会将所有通过A协议学习到的路由以及边界设备上宣告在A协议中的所有直连路由,全部共享到B协议中。----表明重发布时发布的信息内容
名词解释
点—设备
- 单点:两个协议或者两个进程之间存在一个边界设备
- 双点:两个协议或者两个进程之间存在两个边界设备
- 多点:两个协议或者两个进程之间存在多个边界设备
向
-
单向:仅将A协议路由共享到B协议中
-
双向:A和B的路由均共享到对方
单点重发布
A—>B:
[r2-rip-1]import-route ospf 1
通过重发布技术将其他协议的路由信息导入到RIP中,RIP协议赋予其的种子度量值为0。
修改RIP种子度量值:
[r2-rip-1]default-cost 5 //修改全局种子度量值
[r2-rip-1]import-route ospf 1 cost 10 //修改特定路由的种子度量值
注意:两条命令同时执行时,将按照第二条执行
静态—>B:
[r2-rip-1]import-route static
- 导入静态RIP赋予的种子度量值也是0
- 重发布在导入的路由中
直连—>B:
[r2-rip-1]import-route direct
- 除了R1的直连网段外,所有直连均会导入
- 若边界路由器进行A—>B的重发布以及直连—B的重发布,并且两次包合相同的路由信息,则将会优先学习直连导入的路由信息。
双点重发布
路由回馈
默认RIP和OSPF协议进行双点重发布,由于两者的优先级不同,故第一台ASBR设备重发布动作结束后,将影响其他ASBR设备的路由表。使得路由可能被回传到源协议当中,发生路由回馈—A协议的路由重发布到B协议当中后,又被重发布回A协议。路由回馈可能会导致选路不佳,甚至是路由环路的出现。
华为为了解决路由回馈问题,将OSPF的域外路由的优先级定义为150(150高于华为体系下所有IGP协议的优先级),从而解决路由回馈。
在双点双向重发布中,虽然解决了路由回馈问题,但是多点重发布还是存在一个必然产生的问题—选路不佳。----原因在于重发布时清除了原先的开销值导致的。
解决方法:路由策略
路由策略
- 控制层流量—路由协议传递路由信息产生的流量
- 数据层流量—设备访问目的地址是产生的流量
所谓的路由策略—.在控制层面转发流量的过程中,截取流量,之后修改流量再转发或者不转发,最终达到影响路由器路由表的生成,干涉选路的效果
抓流量
[r3-acl-basic-2000]rule permit source 192.168.1.0 0.0.0.0
因为ACL列表本身设计是为了抓取数据层流量的,所以,因为通配符的存在他可以灵活的匹配IP的数字特征,但是,没有办法匹配路由信息中的掩码特征。所以,ACL并不擅长控制层流量的抓取。
ACL列表
[r3-acl-basic-2000]rule permit source 192.168.1.0 0.0.0.0
因为ACL列表本身设计是为了抓取数据层流量的,所以,因为通配符的存在他可以灵活的匹配IP的数字特征,但是,没有办法匹配路由信息中的掩码特征。所以,ACL并不擅长控制层流量的抓取
如果需要在192.168.1.0/24、192.168.1.0/25、192.168.1.0/30中抓取到192.168.1.0/24,ACL是无能为力的只能按照数字特征抓取,则意味着使用以上命令将同时抓取携带着三种路由信息的数据包
前缀列表(IP-prefix)
一个路由条目由目的网络地址 (前) +掩码长度 (前缀长) 共同标识
IP前缀列表可以包含一条或多条语句,每条语句都使用一个序号 (十进制)进行标识
前缀列表的匹配规则:从上而下,逐条匹配,一旦匹配上则将按照该规则执行,不再向下匹配。末尾隐含拒绝所有规则。
实例
假设,有四条路由信息: 172.16.0.0/16、172.16.0.0/24、172.16.0.0/30、172,16.1.1/32。
[r3]ip ip-prefix aa permit 172.16.0.0 24 //该语句要求路由的目的网络地址的前24位比特位需要与172.16.0.0的前24位相同,并且路由的目的网络掩码长度必须为24,因此该规则可以抓取172.16.0.0/24
[r3]ip ip-prefix aa permit 172.16.0.0 16 less-equal 24
该语句要求路由的目的网络地址的前16比特位与172.16.0.0的前16位相同,并且路由的目的网络掩码长度必须大于或等于16,且小于或等于24。因为改规则可以抓取172.16.0.0/16、172.16.0.0/24
[r3]ip ip-prefix aa permit 172.16.0.0 16 greater-equal 24
[r3]ip ip-prefix aa permit 172.16.0.0 16 greater-equal 24 less-equal 32
[r3]ip ip-prefix aa permit 172.16.0.0 16 greater-equal 24 less-equal 24
[r3]ip ip-prefix qq deny 172.16.0.0 30 //默认拒绝所有
[r3]ip ip-prefix qq permit 172.16.0.0 24
[r3]ip ip-prefix aa permit 0.0.0.0 0 less-equal 32
上述语句中,IP地址为0.0.0.0,这种形式的IP地址被称为通配地址,也即该地址能匹配任意形式的目的网络地址。因此,该语句并不关系被匹配路由的目的网络地址,但是要求路由目的网络掩码长度必须大于等于0,小于等于32,实际上这条路由相当于“允许所有”
[r3]ip ip-prefix ee deny 172.16.0.0 30
[r3]ip ip-prefix ee permit 0.0.0.0 0 less-equal 32
[r3]ip ip-prefix aa permit 0.0.0.0 0 greater-equal 32 less-equal 32
该语句将匹配掩码长度为32的任意路由,也就是所有的主机路由
[r3]ip ip-prefix aa permit 0.0.0.0 0
该语句允许的是默认路由0.0.0.0/0
[r3]ip ip-prefix hcip permit 172.16.4.0 22 greater-equal 24 less-equal 24
做策略
策略路由:针对数据层面
偏移列表----cisco
偏移列表属于RIP这种距离矢量型协议专用的
偏移列表属于RIP这种距离矢量型协议专用的
抓流量
[r1]ip ip-prefix huawei permit 23.0.0.0 24
调用
[r1-GigabitEthernet0/0/1]rip metricin ip-prefix huawei 5
进入流量入方向接口,给其度量值增加5,metricin入; metricout出;出接口默认每次加1,如接口默认不加。
该策略为逐跳行为,效果可以叠加操作;整段路径中流量经过的多个接口均配置了度量值增加,最终的开销值为增加的总度量值
过滤策略 — Filter-Policy(路由过滤工具)
- 借助ACL或prefix进行过滤
分发列表—cisco
只能够对路由信息进行过滤,而无法对LSA进行过滤
[r2-acI-basic-2000]rule deny source 34.0.0.0 0.0.0.0
过滤列表本身没有过滤能力,所以需要在抓取流量的时候使用拒绝动作
[r2-ac-basic-2000]rule permit source any //在抓取流量的时候,末尾一定要放通所有流量,否则将会把所有的流量均过滤掉,原因在于过滤策略是完全依照ACL表项进行工作的
在过滤策略中调用
[r2-rip-1]filter-policy 2000 export GigabitEthernet 0/0/0-----在进程中调用,选定入方向或出方向的接口,若不选择接口,则为全局调用,会匹配所有接口
[r2lip ip-prefix aa deny 34.0.0.0 24
[r2lip ip-prefix aa permit 0.0.0.0 0 less-equal 32
[r2-rip-1]filter-policy ip-prefix aa export GigabitEthernet 0/0/0
切记,若使用ACL定义流量,正常华为为ACL末尾隐含允许所有,但是在过滤策略中一定要手工配置允许所有。
注意,若此时没有在R1上进行过滤,而是等R1将域外的五类LSA发布仅OSPF后,在再R2的出方向或入方向,有着或是R1的出方向调用过滤策略,则不会成功。必须要在R1将路由信息转换为LSA信息之前进行调用,也就是在ASBR的入方向调用
若在R2的入方向使用过滤策略限制192.168.2.0/24路由,则R2将不会具备该路由信息,因为是在R2根据本地LSDB中的LSA信息计算出192.168.2.0/24路由后,拒绝将这条路由信息加入本地路由表中。而R3此时还具备该路由信息,原因在于R3可以正常收到所有的LSA信息,并成功计算路由信息
若将过滤策略使用在链路状态型协议中,必须使用入方向
路由策略—Route-policy
路由策略的匹配规则:自上而下,逐一匹配,一旦匹配上则将按照对应的规则来执行动作,不再向下匹配。末尾隐含拒绝所有的规则
配置实例
192.168.1.0/24 -----过滤
192.168.2.0/24 ---修改种子度量值10
192.168.3.0/24 -----开销值类型修改为Type-1
192.168.4.0/24 -----开销值类型修改为Type-1,tag=200
12.0.0.0/24 -----不处理
抓取流量:
[r2]acl 2000
[r2-acl-basic-2000]rule permit source 192.168.1.0 0
[r2]acl 2001
[r2-acl-basic-2001]rule permit source 192.168.2.0 0
[r2lip ip-prefix aa permit 192.168.3.0 24
[r2]ip ip-prefix bb permit 192.168.4.0 24
做策略:
[r2]route-policy hcip deny node 10 ----创建一个叫做hcip的route-policy列表,且序号为10
[r2-route-policy]if-match acl 2000 ----配ACL 2000
[r2]route-policy hcip permit node 20
[r2-route-policy]if-match acl 2001
[r2-route-policy]apply cost 10
[r2]route-policy hcip permit node 30
[r2-route-policy]if-match ip-prefix aa
[r2-route-policy]apply cost-type type-1
[r2]route-policy hcip permit node 40
[r2-route-policy]if-match ip-prefix bb
[r2-route-policy]apply cost-type type-1
[r2-route-policy]apply tag 200
[r2]route-policy hcip permit node 50
在重发布中调用
[r2-ospf-1]import-route rip 1 route-policy hcip
[r2]display route-policy hcip-----查看路由策略内容
为什么抓取流量使用permit: 如果使用deny将拒绝流量,无法对流量进行操作为什么调用都是hcip:因为调用只能调用一张路由策略的表在做策略中:
permit:
- 指定该节点的匹配模式为允许
- 如果路由匹配的结果是满足该阶段的所有it-match语句,则该路由被视为允许通过,该节点的applv语言将被执行,且不再进入一下个节点。若该节点中有if-match语句不满足,则进入下一个节点继续匹配
deny:
- 指定节点的匹配模式为拒绝
- 如果节点的匹配模式为拒绝,则该节点的apply语句将不被执行
- 如果路由匹配的结果是满足该阶段的所有if-match语句,该路由策略的匹配过程直接结束。不会进入下一个阶段。而满足该节点务件的路由会被视为拒绝通过
- 若该节点中有if-match语句不满足,则进入下一个节点继续匹配
为什么最后创建一个空的路由策略表单?
因为路由策略表单末尾隐含拒绝所有
配置指南总结
- 即便要拒绝一个流量,在抓取的时候也必须使用允许操作,之后在路由策略来拒绝。
- 在一条规则中,若没有进行流量匹配,那么就是匹配所有流量。若没有apply那么仅对匹配的流量 进行当前大动作修改。
- 配置时,注意路由策略的“与”和“或”关系
实验:
要求:
- 1.1.1.1重发布直连,使用路由策略,拒绝另外两条直连路由
- R2和R3重发布进入,不能存在次优路径
- 次优路径:R4的负载均衡,R3和R2
BGP—边界网关协议
AS—自治系统
AS定义:由一个单一的机构或组织所管理的一系列IP网络及其设备所构成的集合
AS划分的原因
- 整个网络规模较大,伴随的是路由表中的路由数量进一步增加,路由表规模变大,路由收敛速度变慢,设备性能消耗加大。-----范围太大
- AS之间可能是由不同的机构、公司,相与之间无法完全信任,使用IGP协议可能存在暴露AS内部的网络信息的风险。
不同的AS通过AS号进行区分,AS号存在16bit、32bit两种 IANA—互联网数字分配机构
- 16位AS号,取值范围1-65534(其中0和65535保留),64512-65534为私有AS号,可以自行使用,公有的AS号为1-64511
- 保留AS号
- RFC4893标准,23456该AS号为保留AS号
- RFC5398标准
- 16位AS号:64496-64511 —16个
- 32位AS号:65536-65551 —16个
BGP基础
- BGP-1------RFC1105
- BGP-2------RFC1163
- BGP-3------RFC1267
- BGP-4------RFC1771----4271
BGP协议介绍
- 首先RIP是基于UDP进行数据传输的,而UDP是一个不可靠的协议,他在传输过程中可能会丢失某些数据
- 缺省情况下,RIP协议的路由更新报文的发送间隔是30S,而如果两个AS内部的路由表非常大,30秒的时间可能还不够将所有的路由信息传递给对方AS,这样,整条链路完全就是为了RIP的通告报文服务,而不能转发数据流
解决方法:
- 将UDP协议更换为TCP协议。不用担心数据丢失,并且TCP会预先建立连接,也就让路由器有一个准备的时间而不是像RIP一样毫无准备的接收大量更新数据.
- 取消周期更新,改为触发更新
- 在第一次路由数据同步完成后,如果有路由增加,就发送通告路由增加的报文。如果路由删除,就发送一个通告路由删除的报文。
- 如果路由信息发生改变,就先发送一个通告路由删除的报文,在发送一个通告路由增加的报文
运行BGP协议之间的设备传递路由信息,原因在于若传递拓扑信息,会导致路由器负载过高,并且会让对端AS看到本端的拓扑信息,引发安全问题。
BGP需要传递所有的通过BGP学习到的路由信息,并且运行了BGP协议的路由器,所维护的路由表是包含了整个互联网的所有路由信息的。
BGP特点
-
BGP基于TCP,只要能够建立TCP连接,就可以建立BGP连接触发式更新,不再进行周期更新
-
只传递路由信息,而不会暴露AS内的拓扑信息。不传递拓扑的原因
- 拓扑信息资源占用量大
- 会暴露AS内部的拓扑连接情况
-
无类别的路径矢量型协议
- 无类别—传递时携带真实网络掩码
- 矢量—方向性,谁传递的路由,谁为下一跳
- 距离矢量—将一个路由器看作一个单位计算距离
- 路径矢量—将一个AS看作一个整体,从而计算一跳
IGP协议的主要任务是将AS内部的未知网段信息计算获取到,而BGP则主要是将IGP协议计算出来的路由信息进行搬运和传递,并不去计算路由
BGP的特征
IGP协议特点
- 选路佳
- 收敛快
- 占用资源少
可控性
因为在重发布的过程中,由于会抹除原有度量值会导致出现选路不佳的情况。而BGP为了弥补这个不足点,直接舍弃了开销值。取而代之的是设计了很多的路径属性。
可靠性
-
BGP因为只有触发更新,而不存在周期更新,所以需要确保其可靠性,使用TCP为传输层协议。端口号179----BGP会话的建立是手工指定的(单播形式)
-
IGP协议不选择使用TCP的原因:
- TCP传输效率地、低
- TCP传输占用资源大
- TCP协议只能实现单播,所以无法通过组播或广播的形式发送数据,将导致IGP协议无法自动发现邻居关系,只能手工指定
AS-BY-AS
BGP将一个AS看作是一个整体
BGP协议不支持负载均衡
IGP协议追求 | 收敛速度快 | 选路佳(无环路) | 占用资源少 |
---|---|---|---|
EGP协议追求 | 可控性 | 可靠性 | AS-BY-AS |
BGP的对等关系
BGP因为传输层使用的是TCP协议,所以只要在TCP协议可以正常建立会话的基础上就可以完成BGP的建邻工作。
BGP支持非直连建邻 (网络可达) -----BGP的非直连建邻是建立在IGP (静态)之上的
BGP存在两种对等体关系类型:EBGP、IBGP
-
EBGP对等体关系
- 位于不同自治系统的BGP路由器之间的BGP对等体关系
- EBGP对等体一般使用直连建立对等体关系,EBGP邻居之间的报文中TTL值被设置为1
- 两台路由器之间要建立EBGP对等体关系,需要满足如下条件:
- 两个路由器属于不同AS
- 在配置时,peer命令所指定的对等体的IP地址必须路由可达,TCP连接必须正常建立
-
IBGP对等体关系
- 位于相同自治系统的BGP路由器之间的BGP对等体关系
- IBGP对等体一般使用非直连建邻,IGP邻居之间的报文中TTL值被设置为255
- 环回接口稳定
- 并且可以借助AS内部的IGP和冗余拓扑来保证可靠性
BGP特点
- 无类别路径矢量协议----AS-BY-AS
- 使用单播更新来发送消息;基于TCP179号端口工作。
- 增量更新机制----仅触发更新,无周期更新
- 具有丰富的路径属性来取代IGP中的度量值进行选路,可以由多个属性共同控制协议
- 可以在流量的进出口实行路由策略----可控性
- 默认不被用于负载均衡
- BGP支持认证和聚合
BGP的数据包
BGP报文头部
Marker:全1 代表进入BGP部分
Length:报文总长度
Route-refresh包—路由刷新包
作用:用来要求对等体重新发送指定地址族的路由信息
一般为本端修改了相关路由策略之后让对方重新发送更新报文,本端执行新的路由策略重新计算BGP路由。
双方均支持路由刷新功能。
OSPF中的hello报文—可以周期性的发现、建立和保活邻居关系
Open包
是TCP建立之后发送的第一个报文,用于建立BGP对等体之间的连接关系
- Hold Time:保活时间
- BGP Identifier----BGP的标识符(RID)
- 与OSPF中的RID用法相同
- 全网唯一
- 手工>环回>物理
BGP需要协商的参数
- AS号
- BGP的open报文会携带本地的AS号,通过比较两端的AS号可以判断对端是否和本端处于相同AS.
- 不管这个AS号与本地的AS号是否相同,都不影响BGP对等体的建立
- 另外,如果对方的AS号和本地指定对等体时写的AS号不同,则会导致邻居关系无法建立。
- peer 12.0.0.2 as-number 100
- RID
- 通过对比open报文中的RID值,可以判断是否相同,若相同则会导致建邻失败(仅限直连)
- 认证字段
- BGP也可以进认证,认证口令不同,则也会导致建邻失败
- 该字段永远以MD5值的方式保存在TCP的选项字段
- 保活时间----并不影响BGP对等体的建立
- BGP在建立对等体关系时,需要协商该参数
- 如果在该时间内未收到对端发来的keepalive报文或者update报文,则认为BGP连接中断。----180S.
- 报文更新时间----三分之一保活时间----60s
- 若双方保活时间不一致,则按照小的时间进行。
- 该参数可以设置为0,若设置为0,则代表不发送keepalive报文。
- 路由刷新功能
keepalive包
作用:用来周期保活
没有数据字段,仅有报文头部
除了保活机制外,keepalive报文还在open报文协商参数时,临时充当确认报文----确认open报文中的参数是否认可
update包—更新包
作用:用于在对等体之间传递路由信息,可以用于发布、撤销路由----携带需要传递的路由信息
需要携带的参数主要就是目的网络号、子网掩码信息和路径属性
- Unfeasible routes length: 撤销路由字段长度
- Withdrawn routes: 撤销路由列表----length (长度)即掩码和prefix (前缀)即目标网络号
- Total path attribute length: 总路径属性长度
- Path attributes: 路径属性,具体看到方面的长度
- NLRI: (network layer reach information)网络层可达信息,具体长度看撤销列表长度
Notification包
纯纯的告警机制,当BGP检测到错误状态时(对等体关系建立时、建立之后都可能发送该报文),就会向对等体发送该报文,告知对端错误原因。之后BGP连接会立即中断
Error code: 差错码
Error subcode: 差错子码
Data(可变长度): 数据可以通过抓包发现错误是什么原因,进而进行修复
BGP的状态机
BGP的角色
- Speaker
- 发送BGP报文的设备被称为BGP Speaker(发言者)
- 它接收或产生新的报文信息,并发布给其他BGP Speaker。Speaker角色是针对具体报文发送 过程而言的,网络中每台BGP路由器均可称为自己发送BGP报文的Speaker。
- Peer
- 相互交换报文的Speaker之间互相称为peer(对等体)
BGP的状态机仅描述的是对等体关系建立过程的状态变化。BGP可以将邻居建立过程和BGP路由收发 过程分开。
-
IDLE-----空闲状态
- 所有设备启动BGP进程后,首先进入该状态。
- 进入该状态后,等待手工指定邻居。
- 当手工指定邻居之后,将会进入到一个检查环节。需要检查手工指定的IP地址在本地全局路由 表中是否可达,只有可达,才可以正常建立TCP的会话,如果不可达,则邻居关系建立失败, 停留在IDLE状态。
- 若检查成功,则进入Connect状态。
-
Connect-----连接状态
- 建立TCP会话连接
- 在该状态下,会开启一个连接重传定时器。----32秒。
- 如果成功建立TCP会话,会关闭连接重传定时器,并进入OpenSent状态。
- 如果建立失败,则进入Active状态。
- 如果重传定时器超时,BGP仍然没有收到对等体的响应,那么BGP会继续尝试与对等体建立 TCP会话,并一直处于Connect状态。
-
Active状态----尝试状态
- 该状态是因为第一次TCP会话建立失败进入的,在该状态会重新尝试建立TCP会话。
- 如果成功建立,则进入OpenSent状态,并会关闭连接重传定时器。
- 如果失败,则停留在Active状态。
- 与Connect状态共同使用同一个连接重传定时器。
-
OpenSent-----发出本地的Open报文
- 也将收到对端发送的open报文,并会查看其中的参数,如果参数没有问题,则本地将发送 keepalive报文进行确认,之后进入openconfirm状态。
- 如果发现收到的open报文中的参数不认可,那么BGP会发送notification报文给对等体,并进 入idle状态
- 对等体关系的指定是双向的,所以当双方都使用peer命令指定了对等体后,均会主动与对等体建立TCP连接。但是这样就会建立两条TCP的双向连接,所以BGP会选择第一个TCP链接断开。
-
OpenConfirm----等待确认状态
- 在该状态机时,等待对方发送的keepalive报文
- 如果收到的是notification报文,则转至idle状态
-
Established----连接建立完成状态
- 对等体关系建立完成的标志
- 在该状态下,BGP可以和对等体交互Update报文、keepalive报文、Route-refresh报文和Notification报文
BGP的工作过程
- 基于IGP协议或静态路由实现邻居IP可达
- 启动BGP协议,并指定邻居关系
- 邻居之间单播传输报文,通过三次握手机制,建立TCP会话通道。
- 后续BGP所有的通讯都将基于TCP会话通道来传输。包括传输所需要的可靠性机制。
- 使用open报文和keepalive报文进行对等体关系的建立。open报文用来携带建立对等体关系时所需要使用的参数,keepalive报文用于参数的确认。最终完成对等体关系的建立。生成邻居表。
- 使用update报文来共享路由信息。信息中将携带目标网络号、掩码及路径属性,之后,设备会将所有的自己发送的以及接收的路由信息记录在一张表中-----*BGP表
- 将BGP表中的最优路由信息 (通过路径属性选择) 加载到全局路由表中。
- 此时路由收敛完成,将使用keepalive报文进行周期保活,默认保活时间为180S,周期发送时间默认为保活时间的1/3,即60s.
如果出现错误信息,则将使用notification报文进行告警 - 如果出现结构突变,则将使用update报文进行触发更新
BGP的防环机制
EBGP的水平分割
AS_Path属性----记录AS路径的一个属性
IBGP的水平分割
BGP规定,当路由器从一个IBGP对等体学习到某条BGP路由时,它将不能再把这条路由通告给任何IBGP对等体-----IBGP水平分割机制
解决方案
- 构建全连的IBGP对等体关系
- 当AS内部设备数量巨大时,IBGP邻居关系会呈指数型增长,而非直连建邻之间传递的数据还是要依靠物理链路,故全连接建邻会导致占据大量的链路资源,并且路由器维护大量的TCP和BGP会话连接,需要消耗大量的设备资源。
- 网络的可拓展性差
- 打破IBGP水平分割
- IBGP->EBGP 联邦
- 路由反射器 强制通告
- IBGP->EBGP 联邦
BGP的路由黑洞
由于BGP协议可以非直连建邻,所有导致BGP协议可能出现跨越未运行BGP协议的设备,导致BGP路由传递后控制层面可达。但是数据层面,流量流经未运行BGP协议的设备时,无法通过,形成路由黑洞。
避免路由黑洞的方式—BGP同步更新规则----当一台路由器从自己的IBGP对等体学习到一条BGP路由时,他将不能使用该条路由或把这条路由信息通告给自己的EBGP对等体,除非它又从IGP协议学习到这条路由,也就是要求IBGP路由与IGP路由同步
在华为数通设备上,BGP同步更新规则缺省是被关闭的,并且华为也不允许开启BGP同步规则
解决方案
- 让未运行BGP协议的设备运行BGP协议—建立全连接的IBGP环境
- 物理或逻辑拓扑(tunnel)
- 在IGP协议中,重发布BGP协议的路由信息
- MPLS----多标签标记交换
BGP基本配置
BGP建邻的基本配置
使用直连接口IP地址建立EBGP对等体关系
1.启动BGP协议
[r1]bgp 100 -----启动BGP进程,且标准本设备所在的AS号
2.设置RID
[r1-bgp]router-id 1.1.1.1
3.配置BGP对等体,并指定对等体所在的AS号
[r1-bgp]peer 12.0.0.2 as-number 200
双向配置
[r1]display bgp peer //查看邻居表
[r1]display tcp status //查看tcp连接状态
发起方以一个随机端口向接收方的179发送TCP SYN报文,接收方开启179端口才能回包
IBGP对等体的建立
由于直连接口建立对等体时,若链路终端,则会中断BGP会话。故在实际工程中,一个AS内部正常具有较为复杂的网络拓扑结构,设备到设备之间存在大量的备份和负载均衡路径,因此建立IBGP邻居关系时,建议使用双方的环回接口来作为源/目IP地址
[r2]bgp 200
[r2-bgp]peer 3.3.3.3 as-number 200
[r3]bgp 200
[r3-bgp]rou
[r3-bgp]route-select
[r3-bgp]router-id 3.3.3.3
[r3-bgp]pe
[r3-bgp]peer 2.2.2.2 as
[r3-bgp]peer 2.2.2.2 as-number 200
手工建立邻居关系时,所指定的建邻的IP地址必须和收到的数据包中的源IP地址相同才能正常建立邻居关系。否则,邻居关系建立失败
[r2-bgp]peer 3.3.3.3 connect-interface LoopBack 0 ---将R2发送的数据包的源P地址修改为loopback 0接口的IP地址
抓包后会发现一个问题,就是BGP此时仅建立了一次TCP连接,就完成了BGP会话的建立。这也就意味着BGP会话的建立仅仅是依靠TCP会话,而并没有对这个TCP会话建立的方式有要求,该TCP会话是由谁发起的,谁是客户端,谁是服务端并不影响BGP对等体的建立-------在BGP协议中,TCP会话建立两次完全是多余的,而建立两次的原因也是因为双方路由器均会指定对等体(均将自己看做是客户端),从而发起建立连接请求
而在当下场贵中,R3作为TCP会话的服务端,已经认知到了自己本地已经有接口3.3.3.3,与自己本地配置的对等体建立了连接,所以本地也不会在发送所谓的TCP连接建立请求。
一般情况下,双方均要修改本地数据包的源IP地址。
使用环回接口IP地址建立EBGP对等体关系
若EBGP对等体之间存在多条直连链路时,才可使用环回接口建立对等体关系。
1、实现路由可达
ip route-static 5.5.5.5 255.255.255.255 45.0.0.5
ip route-static 4.4.4.4 255.255.255.255 45.0.0.4
2、对等体配置
[r4]bgp 200
[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之间的数据包的TTL值为1,故此时虽然可以建立TCP连接和BGP会话,但是路由器会认为该 连接和会话存在异常,在BGP对等体建立完成后,发送notification报文断开连接,从而会产生一个现象—状态机震荡。
解决方法:修改TTL值
[r4-bgp]peer 5.5.5.5 ebgp-max-hop 2
如果未标明参数值,则代表将TTL值修改为最大值255
[r5-bgp]peer 4.4.4.4 ebgp-max-hop 2
两边均要修改,不然无法建立对等体关系,还存在状态机震荡。
BGP的路由发布
通过network命令发布路由
路由发布----对于BGP而言,只要是路由表中存在的路由信息,都可以通过network命令发布。
[r1-bgp]network 1.1.1.1 32 目标网络号 路由表中的掩码信息
注意:BGP使用network命令宣告时,该路由信息必须与全局路由表中存在的路由项一致。
[r1-bgp]display bgp routing-table ---查看BGP表
network-----目标网络号及掩码 nexthop-----下一跳,谁发送的路由信息,则下一跳就写谁;如果是本地发布的路由,则下一跳写0.0.0.0
状态码:
-
- 代表可用
- 所有设备收到路由条目后,首先会根据下一跳属性中的参数来查询本地路由表,查看该地址的 可达性。如果本地路由表中可达,则代表该路由信息可用;若本地不可达,则代表该路由信息 不可用。
- 如果该路由条目不可用,则将不会参与到路由信息的优选过程。
-
>
- 代表优选
- 当收到多条到达相同网段的路由信息时,并且都可用,则将依据属性在其中选择最优的路由信息进行加表及传递。
-
i
- 代表该路由信息是通过IBGP对等体学习到的
对于R3而言,R2传递来的路由信息是不可用且不优的,原因在于下一跳属性未修改,无法递归。
[r2-bgp]peer 3.3.3.3 next-hop-local
将路由传递给自己的3.3.3.3邻居时,将路由中的下一跳属性该为本地。
总结一下配置逻辑
- 完成所有路由器的IGP配置
- 使用直连接口建立EBGP对等体关系
- 使用环回接口建立IBGP对等体关系
- 使用connect-interface命令修改IBGP建邻源IP地址,双方均修改
- 使用next-hop-local命令修改路由传递的下一跳属性
- 若存在使用环回接口建立EBGP对等体关系,则需要建立通讯条件,并且使用ebgp-max-hop命令 修改TTL值
使用import命令引入路由
[r2-bgp]import-route ospf 1
ONG----起源码属性----标识一条路由信息的起源类型
- i----代表这条路由信息起源于AS内部使用network命令通告出来
- 不限于IGP、静态、直连
- e-----代表这条路有信息起源于EGP协议----现在几乎看不到该标识
- ?-----除了以上两种方式,其他方式获取的路由信息都是该标识
BGP路由通告原则
- 当一条BGP路由器发现了多条可以到达同一地址的路由条目,该设备会通过一个路由选择过程在这 些路由条目中选择一条最优的路由,将这条路由加入到全局路由表中,并且在向其他BGP对等体通 告该路由条目时,也只会通告最优的路由。
- 通常情况下,路由器只会将最优的路由加载到路由表中,除了激活了负载均衡情况外。
- 当一台路由器从EBGP邻居学习到了BGP路由时,缺省情况下,会将该路由条目通告给所有的IBGP 对等体以及EBGP对等体。
- 当一台路由器从IBGP邻居学习到了BGP路由时,缺省情况下,不会将这条路由信息通告给其他的 IBGP对等体。
- 因为IBGP水平分割原则
- 当一台路由器从自己的IBGP学习到BGP路由时,如果同步规则被激活,只有从IGP协议也学习到该 路由条目后,才会将BGP路由激活,并学习到本地,以及通告到EBGP对等体。如果同步规则被关 闭,即使没有从IGP学习到该路由,也会将BGP路由通告给EBGP对等体。
BGP的路由聚合
自动聚合
该方法仅针对重发布的路由信息生效。 华为设备默认关闭自动聚合功能。
[r1-bgp]summary automatic 开启自动聚合功能
自动聚合功能是以主类聚合的方式进行的。而主类聚合方式会导致一个结果就是产生路由黑洞。所以 也会生成一条去往空接口的防环路由。这也是华为设备关闭自动聚合功能的原因。
状态码S-----代表抑制,被抑制的路由信息将不再加表和传递。
特点:
- 缺点
- 自动聚合只能将明细路由汇总到主类
- 会产生巨大的路由黑洞
- 自动聚合只能针对重发布的路由条目生效
- 自动聚合只能将明细路由汇总到主类
- 自动聚合会抑制明细路由条目
- 黑洞路由器会在本地的路由表中,自动生成一条指向null口的汇总网段路由,防止环路
- 聚合完成后,将会在本地的BGP表中发布一条新的下一跳指向127.0.0.1的汇总网段路由。
手工聚合
关键字 | 参 数 | 缺陷 | 优势 |
---|---|---|---|
aggregate | / | 无法抑制明细路由,导致汇总 操作并没有减少路由条目;汇 总路由丢失了明细路由的路径 属性。 | 可以灵活指定汇总路由的目的网络掩码 长度;可以在非直连上汇总,前提条件 是非直连设备上具备的明细路由可用且 优。 |
detailsuppressed | 在某种情况下,可能还需 要部分明细路由进行传 输,而该命令会抑制所有 明细路由 | 可以抑制明细路由的传输 | |
suppresspolic | 抓取流量时,需要使用 permit操作,因为抑制策 略是取反操作。 | 可以灵活性的选择通告某些明细路 由 | |
as-set | 仅继承了AS-path属性 | 可以继承明细路由的路径属性 |
[r3-bgp]aggregate 172.16.0.0 20
手工聚合会生成一条指向空接口的防环路由,并且掩码可以随意汇总,但是手工聚合没有将明细路由 进行抑制。
手工聚合只有在所有明细路由均无效时,才会撤销。并且,手工聚合可以灵活调整掩码信息,只要还 存在一条明细路由,手工聚合后的路由就是可用且优的。
手工聚合命令在配置后,1、检测本地路由表中是否有聚合路由的可用明细路由。2、若有则在本地路 由表中发布一条指向空接口的防环路由;若无则该命令无效;3、将汇总的防环路由发布到
BGP中 BGP的手工聚合可以在非直连设备上进行,只要本地存在这些明细路由,且明细路由可用且优就可以 进行聚合操作。
聚合路由不会继承明细路由的属性,导致AS_Path属性丢失,可能会引发环路问题
[r3-bgp]aggregate 172.16.0.0 20 detail-suppressed -----抑制所有明细路由
抑制策略,通告172.16.0.0/20的汇总路由时,将172.16.1.0/24的明细路由也通告出去。
在该策略中,会将路由策略中所允许的流量给抑制。也就是说,实际上是与路由策略的玩法相反。
1、抓流量
[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
2、配置策略
[r3]route-policy aa permit node 10
[r3-route-policy]if-match ip-prefix aa
3、调用
[r3-bgp]aggregate 172.16.0.0 20 suppress-policy aa ----策略名称即为路由策略的名称
as-set -----汇总路由会继承明细路由的路径属性
as-set属性在继承多个明细路由属性时,会将继承的不同的多个明细路由的AS_Path属性使用{}括起
来,在选路时,当做一个来看,而在防环时,将观察所有的AS号。
attribute-policy-----该参数可以设置聚合路由的大部分路径属性
[r1]route-policy bb permit node 10
[r1-route-policy]apply as-path 1 2 3 additive
[r1-route-policy]apply local-preference 10
[r1-route-policy]apply cost 100
[r1-route-policy]apply preferred-value 20
[r1-bgp]aggregate 172.16.0.0 20 detail-suppressed attribute-policy bb
origin-policy ----设置某些明细路由为汇总路由宣告的触发条件
[r1]ip ip-prefix aa permit 172.16.1.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
Atomic-Aggregate
- 纯粹的预警属性,不承载任何信息
- 当路由器收到的update报文中,携带该属性值,则认为这条路由信息可能存在属性丢失。
- 该属性只有当所有的明细路由均被抑制时才会携带
Aggregator
- 携带了汇总者的RID以及其所在的AS号
- 用于标记聚合行为发生的位置
- 那个AS,哪台BGP设备
路由反射器
RFC4456
IBGP水平分割:路由器无法将从IBGP对等体学习到的路由信息传递给其他IBGP对等体。
IBGP水平分割解决了AS内部环路的问题,但是产生了新的问题-----BGP路由在AS内部只能传递一跳,会
造成IBGP路由无法被正常传递,造成通讯障碍。
路由反射器角色
- RR—Route Reflector
- RR类似于一面镜子,可以把自己接收到的路由信息反射给其他人
- Client----RR客户端-----客户端可以存在多个或一个
- RR非客户端
路由反射器的配置是在充当反射器的BGP路由器上完成的。而路由反射器的客户设备并不需要做任何
额外的配置,它甚至不知道自己成为了某个路由反射器的客户。
路由反射器与所有的客户或非客户建立IBGP对等体关系,而客户之间则无需建立IBGP对等体关系。这
样就优化了网络中的IBGP对等体关系数量。
路由反射规则
- 如果路由反射器从自己的非客户对等体学习到一条IBGP路由,则可以将这条路由传递给自己的客户
- 如果路由反射器从自己的客户对等体学习到一条IBGP路由,则可以将这条路由传递给自己的客户和
非客户 - 如果路由器学习到EBGP对等体发送的路由信息,则可以发送给所有的IBGP对等体
- 当路由反射器执行路由反射时,它将只能使用自己最优的BGP路由进行反射
[r3-bgp]peer 2.2.2.2 reflect-client -----1、指定2.2.2.2为自己的客户;2、并说明自己是RR
路由反射器角色可能会根据处于不同的反射簇时充当不同的角色。一般会设置传递路由信息的一方为RR
的客户端。
Origin-ID-----起源ID
当一条BGP路由被路由反射器反射给其他路由器时,如果该条路由已经携带了起源ID属性,则保留该
属性,否则路由反射器为这条路由添加起源ID属性,并将该属性值设置为该路由在本地AS内的始发路由
器的RID值
当路由器从BGP对等体收到一条IBGP路由,并且该路由所携带的起源ID属性与自己的BGP RID相同
时,它将意识到该路由是从自己这里发送到本AS内部的,且又被发送回来了,此时本地将忽略这条路由
的更新。如此消除环路隐患
Cluster-List-----簇列表
当一条BGP路由被路由反射器执行反射时,如果该条路由已经存在Cluster-List属性,那么路由反射
器将本地的Cluster-ID附加到路由的Cluster-List属性中,而如果该路由没有Cluster-List属性,那么路
由反射器为其创建,并将Cluster-ID加入到Cluster-List中。
当一台路由反射器收到一条BGP路由后,若发现该路由携带Cluster-List属性,并且Cluster-List属性
中包含着自己的Cluster-ID时,会忽略关于这条路由的更新。-----类似于AS-Path属性的防环原理。
属性 | 作用 |
---|---|
Origin-ID | 用于防止集群内产生路由环路 |
Cluster-List | 用于防止集群间产生路由环路 |
注意:
- 当路由反射器将一条从自己的EBGP对等体学习到的BGP路由通告给自己的客户时,他是不会创建起源ID和簇列表,因为这本质上是正常的通告行为
- 起源ID和簇列表的传播范围是AS内部
- 路由反射器在反射路由时,不会修改除了起源ID和簇列表以外的路径属性,原因是因为AS-BY-AS原 则。
反射器的组网方式
备份RR组网
由于RR打破了IBGP对等体收到的路由不能传递给其他IBGP对等体的限制,所以同一集群内的RR之间可能存在环路。这就需要将同集群内的所有RR的Cluster-ID设置为相同值,用以避免RR之间的路由环路。
[r3-bgp]reflector cluster-id 10.10.10.10 ----设置集群的族ID,只能在反射器上进行配置,该命令为覆盖式命令,配置后,会覆盖掉之前路由器选择出来的cluster-ID
多集群路由反射器组网
分级路由反射器
同级路由反射器
注意: 在同级路由反射器中,RR之间属于Non-Client的IBGP Full Mesh结构.
单集群问题
多集群设计不仅提供了针对物理链路失效带来的物理冗余,同时提供针对客户端和RR之间的IBGP会话失效的逻辑冗余。
联邦—联盟
联邦的思想是在一个大的AS内创建若干个小的AS,使得AS内部出现一种特殊的EBGP对等体关系,从而解决IBGP路由在AS内部传递的问题
若使用联邦将AS 3456划分为多个,则AS 3456被称为联邦AS,而划分的小的AS,称为成员AS.
由于成员AS号是由联邦AS号的管理者进行分配的,所以不能使用公有AS号,而是使用私有AS号 (64512-65534)
成员AS之间建立的EBGP对等体关系是一种特殊的EBGP对等体关系,他们之间仅遵循EBGP对等体的路由传递原则,但是不能像正常的EBGP对等体一样修改路由的路径属性;而从传递的内容角度看,依然需要遵循AS-BY-AS原则,因为在宏观上,他们依然处于同一个AS中。—联邦AS内部的成员AS对于联邦外部并不可见
[r1]bgp 100
[r1-bgp]router-id 1.1.1.1
[r1-bgp]peer 10.1.13.3 as-number 3456 ----使用联邦AS号建立BGP对等体,原因在于对于R1而
言,并不需要知晓对端AS中的成员AS内容
[r3]bgp 64512 ---联邦成员设备启动BGP进行需要使用成员AS号启动
[r3-bgp]router-id 3.3.3.3
[r3-bgp]confederation id 3456 ----定义联邦AS号
[r3-bgp]peer 10.1.13.1 as-number 100
[r3-bgp]peer 4.4.4.4 as-number 64512 ----联邦成员之间建立IBGP对等体关系需要使用成员AS号
[r3-bgp]peer 4.4.4.4 connect-interface LoopBack 0
[r3-bgp]peer 4.4.4.4 next-hop-local
[r4]bgp 64512
[r4-bgp]router-id 4.4.4.4
[r4-bgp]confederation id 3456
[r4-bgp]peer 3.3.3.3 as-number 64512
[r4-bgp]peer 3.3.3.3 connect-interface LoopBack 0
[r4-bgp]confederation peer-as 64513 -----在需要建立联邦的EBGP对等体关系的设备上指定与自
己建邻的成员AS号,若有多个可以一次指定
[r4-bgp]peer 5.5.5.5 as-number 64513
[r4-bgp]peer 5.5.5.5 connect-interface LoopBack 0
[r4-bgp]peer 5.5.5.5 ebgp-max-hop ----修改TTL值,建议修改为最大值
[r5]bgp 64513
[r5-bgp]router-id 5.5.5.5
[r5-bgp]confederation id 3456
[r5-bgp]confederation peer-as 64512
[r5-bgp]peer 4.4.4.4 as-number 64512
[r5-bgp]peer 4.4.4.4 con l 0
[r5-bgp]peer 4.4.4.4 ebgp-max-hop
[r5-bgp]peer 6.6.6.6 as-number 64513
[r5-bgp]peer 6.6.6.6 con l 0
[r5-bgp]peer 10.1.25.2 as-number 200
[r5-bgp]peer 6.6.6.6 next-hop-local
[r5-bgp]peer 4.4.4.4 next-hop-local ----联邦内部传递不修改属性,故需要手工修改下一跳为本地
[r6]bgp 64513
[r6-bgp]router-id 6.6.6.6
[r6-bgp]confederation id 3456
[r6-bgp]peer 5.5.5.5 as-number 64513
[r6-bgp]peer 5.5.5.5 connect-interface LoopBack 0
联邦防环
使用EBGP水平分割原则。当BGP路由在联邦内传递时,联邦成员AS号才会出现在AS_Path属性中,当
路由传出联邦AS时,成员AS号才被移除。联邦的成员AS号会用()括起来。
路由反射器 | 联邦 |
---|---|
不需要修改现有的网络拓扑,兼容性较好 | 需要改变逻辑拓扑结构 |
配置简单,只需要对反射器设备进行操作,且客户 端不知道自己是客户端 | 所有设备均需要进行配置,并且要求路由 器具备联邦的功能 |
集群与集群之间仍然需要全连接 | 联邦的子AS之间是特殊的EBGP连接,不 需要全连接 |
适用于中大型网络 | 仅适用于大型网络 |
一般在大型BGP网络中,路由反射器和联邦是可以同时使用的。原因在于: 联邦中的成员AS若为单线连接,只能存在两台设备,若单线存在多台设备,又会发生联邦AS内部的IBGP水平分割现象,故需要使用路由反射器弥补缺陷。
BGP的路径属性及选路规则
路径属性
对于BGP而言,BGP路径属性描述了该条路由的各项特征,同时,路由所携带的路径属性也将在某些场景下影响BGP路由优选的决策。
- 公认属性——所有的BGP路由器均可以识别的属性
- 强制属性——当BGP路由器使用update报文通报路由更新时,必须携带的路径属性
- 自用决定属性——当BGP路由器使用update报文通告路由更新时,不要求必须携带的路径属性
- 可选属性——不要求所有的BGP路由器都可以识别的路径属性
- 传递属性——如果BGP路由不能识别该路径属性,那么也应该接受携带该路径属性的BGP路由更新报文,并且当路由器将该路由通告给其他对等体时必须携带该路径属性
- 非可传递属性——如果BGP路由器不能识别该路径属性,那么该路由器将会忽略携带该属性的BGP更新报文,并且不会将路由通告给其他BGP对等体。
属性名 | 类型 |
---|---|
AS_Path(AS路径属性) | 公认强制 |
Origin(起源属性) | 公认强制 |
Atomic_Aggregate | 公认自由决定 |
Aggregator | 可选传递 |
originator-ID(起源ID) | 可选非传递 |
Cluster-List(集群列表) | 可选非传递 |
Next-Hop(下一跳属性) | 公认强制 |
Local_Preference(本地优先级) | 公认自由决定 |
MED(多出口区分属性) | 可选非传递 |
Preferred-value(优选值) | 华为的私有属性 |
Community(团体属性) | 可选传递 |
BGP的优选规则
当到达同一个目的网段存在多条路由时,BGP通过如下的次序进行路由优选:
丢弃下一跳不可达的路由
- 优选Preferred-Value属性值最大的路由
- 优选Local_Preference属性值最大的路由
- 本地始发的BGP路由优于从其他对等体学习到的路由,本地始发的路由优先级:优选手动聚合>自动聚合>network>import>从对等体学到的
- 优选AS_Path属性值最短的路由
- 优选Origin属性最优的路由。Origin属性值按优先级从高到低的排列是: IGP、EGP及Incomplete。
- 优选MED属性值最小的路由。
- 优选从EBGP对等体学来的路由 (EBGP路由优先级高于IBGP路由)
- 优选到Next_Hop的IGP度量值最小的路由
- 优选Cluster_List最短的路由。
- 优选Router ID (Orginator_ID) 最小的设备通告的路由
- 优选具有最小IP地址的对等体通告的路由
选路的前提条件: 任何一条BGP路由在参与优选之前都必须先经过检查。设备会检查BGP路由的next-hop是否可达(在本地路由表中检查),如果不可达,则BGP路由被视为不可用,该路由将无论如何不会被优选,也不会被设备使用或通告给其他对等体。在优选规则之前,还需要保证所有路由的优先级相同。也就是255。
1.优选Preferred-Value属性值最大的路由
PV属性,是华为的私有属性,可以看做为权重,数值越大,对应的路由优先级越高。默认值为0。
因为PV值是所有选路原则中的第一条原则,所以,该属性是本设备上选路最方便的一个属性。------该
属性只有在本地生效,无法传递给任何BGP对等体。
方式一:全局修改
[r4-bgp]peer 10.1.34.3 preferred-value 60000 ----该命令用于将对等体10.1.34.3传递过来的路
由的PV值在本地修改为60000
该命令是全局修改方式,可能会导致R3压力过大,最终设备宕机。而我们更希望实现的效果是负载分
担。----让不同的流量走不同的线路,分担单一线路的数据压力。
方式二:精细化修改
1、抓取流量
[r4]ip ip-prefix PV permit 10.10.0.0 16
2、配置策略
[r4]route-policy PV permit node 10
[r4-route-policy]if-match ip-prefix PV
[r4-route-policy]apply preferred-value 100
[r4]route-policy PV permit node 20
3、调用策略
属性名称 传播范围 默认值 评判标准
preferred-value 不传播 0(0-65535) 越大越优先
[r4-bgp]peer 10.1.34.3 route-policy PV import ----因为该属性为私有不传递属性,故调用时,
只能在本地的入方向调用,来影响本地的BGP路由表。
属性名称 | 传播范围 | 默认值 | 评判标准 |
---|---|---|---|
preferred-value | 不传播 | 0(0-65535) | 越大越优先 |
2.优选Local_Preference属性值最大的路由
该属性的默认值为100,并且LP属性只能在IBGP对等体之间传递,而不能在EBGP对等体之间传递。
如果路由在传递到本地时并不携带LP属性,则BGP在决策时,使用缺省值来计算。该属性越大越优。该
属性的传递范围为本AS内部。该属性是AS内部优选路由的最佳选择。
方法一:全局修改
[r3]bgp 234
[r3-bgp]default local-preference 200 ---修改全局默认LP值,R3之后发给IBGP对等体的路由的
LP属性都将被修改为200
方法二:精细化修改
1、抓取流量
[r4]ip ip-prefix LP permit 10.11.0.0 16
2、做策略
[r4]route-policy LP permit node 10
[r4-route-policy]if-match ip-prefix LP
[r4-route-policy]apply local-preference 200
[r4]route-policy LP permit node 20
3、调用
[r4-bgp]peer 3.3.3.3 route-policy LP import
3.本地始发的BGP路由优于从其他对等体学习到的路由,本地始发的路由优先级:优选手动聚合>自动聚合>network>import>从对等体学到的。
4.优选AS_Path属性值最短的路由
AS_Path属性
一台路由器将BGP路由通告给自己的EBGP对等体时,会将本地的AS号插入到该路由原有的AS_Path之前.
作用:
- 可以实现EBGP路由的环路避免
- 用于BGP路由优选的决策
- AS-Path属性越短则该路由越优,因为这条路径距离目的地所要经过的AS个数更少。
AS_Path属性最开始是空的列表,当该路由被通告给一个EBGP对等体邻居时,才会被加上一个AS号,在每次经过一个AS时,都会在AS Path属性的最前端增加最新的AS号。而该属性在IBGP对等体之间传播时,这条属性是不会发生改变的。
方法一
1.抓流量
[r1]ip ip-prefix AS permit 10.13.0.0 16
2.做策略
[r1]route-policy AS permit node 10
[r1-route-policy]if-match ip-prefix AS-----覆盖操作
[r1-route-policy]apply as-path 11 22 33 overwrite
[r1]route-policy AS permit node 20
3.调用
[r1-bgp]peer 10.1.13.3 route-policy AS export
方法二
1.抓取流量
[r3]ip ip-prefix AS permit 10.13.0.0 16
2.做策略
[r3]route-policy AS permit node 10
[r3-route-policy]if-match ip-prefix AS
[r3-route-policy]apply as-path 11 22 33 additive
[r3]route-policy AS permit node 20
3.调用
[r3-bgp]peer 10.1.13.1 route-policy As import
additive参数
- 在原有AS_Path属性的基础上添加配置的AS号,在最前方添加
overwrite参数 - 直接覆盖原有的AS_Path属性
- 优势在于灵活可变
- 隐藏路由的真实路径信息
- 用于形成负载均衡
- 缩短AS_Path长度
[r3-route-policy]apply as-path none overwrite 将AS_Path属性列表更改为空表
overwrite重写参数 | additive添加参数 | |
---|---|---|
出方向 | 先重写,在添加上发出者的AS号 | 先添加,再增加发出者的AS号 |
入方向 | 直接覆盖原有的所有内容 | 直接在原本的AS之前添加内容 |
强调一下,AS_Path属性是BGP非常重要的属性,EBGP路由的防环依赖于AS_Path属性的正常工作,
因此,如果出于影响路由优选的目的修改AS_Path属性,操作需要非常慎重,一般情况下,不建议修改
AS_Path属性值。若不得不修改该参数,建议添加或覆盖的AS号为曾经出现过的AS号,这样即加长了
AS_Path长度,又对网络的影响降低到最小。
[r3-bgp]bestroute as-path-ignore ----让路由器在选路时,忽略对AS_Path属性的检查。
该命令经常会被使用在实现BGP负载分担时。
属性名称 | 传播范围 | 默认值 | 评判标准 |
---|---|---|---|
AS-Path | BGP所有对等体之间 | 该属性为列表,初始为空 | 记录的数据越少越好 |
5.优选Origin属性最优的路由。Origin属性值按优先级从高到低的排列是: IGP、EGP及Incomplete
ONG**----起源码属性----标识一条路由信息的起源类型
- i----代表这条路由信息起源于AS内部使用network命令通告出来
- 不限于IGP、静态、直连
- e-----代表这条路有信息起源于EGP协议----现在几乎看不到该标识
- ?-----除了以上两种方式,其他方式获取的路由信息都是该标识
| 属性名称 | 传播范围 | 默认值 | 评判标准 |
| -------- | ----------------- | -------------------- | -------- |
| OGN | BGP所有对等体之间 | 根据路由发布类型决定 | i>e>? |
1、抓流量
[r2]ip ip-prefix aa permit 10.14.0.0 16
2、做策略
[r2]route-policy aa permit node 10
[r2-route-policy]if-match ip-prefix aa
[r2-route-policy]apply origin egp 23
[r2]route-policy aa permit node 20
3、调用
[r2-bgp]peer 10.1.24.4 route-policy aa export
6. 优选MED属性值最小的路由。
MED----多出口鉴别属性
MED值是继承了IGP协议的度量值
MED属性值可以传递给自己的EBGP对等体,并且该EBGP对等体可以将该路由传递给自己的IBGP对等体,并且因为AS-BY-AS规则,该属性在IBGP对等体之间传递时不变
MED属性可以干扰访问本地的流量的走向,也就是说本AS的策略调整可以影响到别的AS对路径的判断,这是在BGP选路中唯一一个可以影响到其他AS的属性。
BGP规定,非本地始发的BGP路由信息,在传递给自己的EBGP对等体时,将MED值修改为0。
边界设备均发布路由信息,避免次优路径
总结:
MED值默认初始值并不为0,而是继承了路由表中该路由条目的开销值,所以,MED参数可以反映到达目的网段在本AS内部的开销大小,通过这个参数,别的AS的流量在进入本AS时可以选择开销较小的入口进入。通过修改该属性,可以影响其他AS的流量流入本AS路径。
若本地通过IBGP对等体学习到一条BGP路由,其中存在MED值,之后需要将这条路由在传递给本地的EBGP对等体时,则将MED值修改为0。这种设置将有可能造成选路不佳的情况,所以,建议,如果存在多组边界设备需要将路由发送给EBGP对等体关系时,需要将所有的路由信息均发布。
MED的传播范围只能是在发布该路由的AS以及他直连的AS内部。
注意:MED值影响的是别的AS的流量通过多个出口进入到本AS内部,如果流入的不是同一个AS,也就是说收到的路由条目中的AS_Path属性最左边的AS号不同,则将不比较第六条,直接比较第七条。
[r4-bgp]default med 10 ----全局修改MED值
该命令只对本地聚合路由或者引入的路由有意义,并且是在传递给EBGP对等体时才会携带
出方向---R2
1、抓流量
[r2]ip ip-prefix MED permit 10.14.0.0 16
2、做策略
[r2]route-policy MED permit node 10
[r2-route-policy]if-match ip-prefix MED
[r2-route-policy]apply cost 20
[r2]route-policy MED permit node 20
3、调用
[r2-bgp]peer 10.1.24.4 route-policy MED export
属性名称 | 传播范围 | 默认值 | 评判标准 |
---|---|---|---|
MED | 本AS及直连AS内部 | 继承全局路由表中的开销值 | 越小越优 |
BGP负载分担
形成BGP等价负载分担的条件是BGP选择路由的策略的1至8条规则中需要比较的属性完全相同
[r4-bgp]maximum load-balancing ?
INTEGER<1-8> Specify maximum equal cost routes
ebgpEBGP routes as equal cost route
ibgpIBGP routes as equal cost route
[r4-bgp]maximum load-balancing 2
配置BGP最大负载均衡条目数量为2,默认情况为1,所以BGP默认情况下不存在负载均衡,而如果携带了ebgp或者ibgp参数,则代表对某种方式学习到的路由进行负载均衡,不携带该参数则代表全局负载均衡。
R4实现了负载均衡后,无论是否配置了peer next-hop-local命令,本地设备都会向自己的IBGP对等体发布路由时,将下一跳修改为本地。
实现负载均衡需要满足的条件
- 原始下一跳不同
- PV值相同
- LP值相同
- 均为聚合路由或均不是聚合路由
- 起源码类型相同
- MED值相同
- 均为EBGP路由或者IBGP路由
- AS内部IGP的开销值相同
- AS_Path属性完全相同,即内容和长度均相同
[r4-bgp]load-balancing as-path-ignore ----配置路由在形成负载分担时,不需要比较AS_Path属性
一般情况下不建议使用
BGP过滤
通过路由策略来过滤
[r2]ip ip-prefix aa permit 172.16.1.0 24
[r2]route-policy aa deny node 10
[r2-route-policy]if-match ip-prefix aa
[r2]route-policy aa permit node 20[r2]bgp 200
[r2-bgp]peer 10.1.23.3 route-policy aa export //出接口
前缀列表进行过滤
[r3]ip ip-prefix aa deny 172.16.2.0 24[r3]ip ip-prefix aa permit 0.0.0.0 0 less-equal 32
[r3]bgp 300[r3-bgp]peer 10.1.23.2 ip-prefix aa import
使用filter-policy来过滤
[r2]acl 2000
[r2-acl-basic-2000]rule deny source 172.16.3.0 0
[r2-acl-basic-2000]rule permit
[r2-bgp]peer 10.1.12.1 filter-policy 2000 import
BGP的社团属性—Community
社团属性是由32位二进制组成,并拥有多种表达形式
- 直接使用十进制标识
- 十六位二进制:十六位二进制—较为常用,前16位一般为本地AS号,后16位为自定义值
一条路由条目中,可以标识多个社团属性
- 0x00000000----internet—如果通过全0的社团属性来抓取流量,则将抓取到所有的BGP流量。即BGP的所有流量缺省情况下均属于internet
- 0xFFFFFF02----no-advertise----该属性代表本条BGP路由仅能供路由器本地使用,不能将该路由通告给任何BGP对等体
- 0xFFFFFF01—no-export----该属性代表本条BGP路由不能被通告到本AS外部,也就是不能通告给EBGP对等体
- 0xFFFFFF03----no-export-subconfed----该属性代表本条BGP路由不能被通告给本AS外部;若本路由器位于联邦的成员AS内部,则该路由也不能被传递给联邦EBGP对等体
尝试在R1身上打上社团属性标记
1.抓流量
[r1]ip ip-prefix aa permit 1.1.1.1 32
2.做策略
[r1]route-policy com permit node 10
[r1-route-policy]if-match ip-prefix aa
[r1-route-policy]apply community no-advertise
3.调用
[r1-bgp]peer 12.0.0.2 route-policy com export
[r1-route-policylapply community no-advertise----开启社团属性的传递性,该命令需要在所有设备上开启
社团属性的应用场景
1.设定策略,定义社团属性
[r1]route-policy com-1 permit node 10
[r1-route-policy]apply community 100:111
[r1]route-policy com-2 permit node 10
[r1-route-policy]apply community-100:222
2.在发布路由时调用策略
[r1-bgp]network 172.16.1.0 24 route-policy com-1
[r1-bgp]network 172.16.2.0 24 route-policy com-1
[r1-bgp]network 172.16.3.0 24 route-policy com-2
[r1-bgp]network 172.16.4.0 24 route-policy com-2
3.开启社团属性传播功能
[r1-bgp]peer 10.1.12.2 advertise-community
[r2-bgp]peer 10.1.23.3 advertise-community
4.抓取流量(使用社团过滤器Community-Filter)
[r2]ip community-filter 1 permit 100:111
[r2]ip community-filter 2 permit 100:222
5.做策略
[r2]route-policy com deny node 10
[r2-route-policy]if-math community-filter 1
[r2]route-policy com permit node 15
[r2-route-policy]if-match community-filter 2
[r2-route-policy]apply community no-export additive .----additive参数是表示在之前的社团属性后直接添加,否则会直接覆盖
[r2]route-policy com permit node 20
6.调用策略
r2-bgp]peer 10.1.12.1 route-policy com import
as-path-filter-----AS路径过滤器
过滤掉从AS 100始发的所有BGP路由
该过滤器与正则表达式共同搭配使用,可以完成从AS-Path属性中匹配BGP路由
目标:
禁止R3始发与AS 100的路由传递给R5
R4将始发于AS 200的路由在传递给R5时,修改开销值
1、抓取流量
[r3]ip as-path-filter 1 deny _100$ //_代表逗号空格
[r3]ip as-path-filter 1 permit .* //*代表匹配所有,该过滤器末尾隐含拒绝所有,不管写多少次的deny,最后都要设置一次permit
2.调用
[r3-bgp]peer 10.1.35.5 as-path-filter 1 export
1.抓取流量
[r4]ip as-path-filter 1 permit ^200$ //^代表行首
2.做策略
[r4]route-policy aa permit node 10
[r4-route-policy]if-match as-path-filter 1
[r4-route-policy]apply cost 10000
[r4]route-policy aa permit node 20
3.调用
[r4-bgp]peer 10.1.45.5 route-policy aa export
[r4]display ip as-path-filter ----查看过滤器详细配置
dis ip community
注意:as-path-filter 过滤器抓取流量时,需要看的是本地的路由条目属性
BGP优化
对于边界AS设备,无需学习明细路由,因此可以配置下发缺省
[r1-bgp]peer 12.0.0.2 default-route-advertise ---BGP下方缺省路由,无论本地的路由表中是否存在缺省路由,都会向对等体下发一条下一跳为本地的缺省路由,从而减少网络中路由数量,节省对等体的设备资源
BGP协议优先级
缺省情况下,BGP协议的优先级为255,优先级越小,则路由优先级越高
优先级分为三种
- EBGP----外部
- IBGP—内部
- 本地产生的BGP路由—通过聚合命令聚合的路由
[r2-bgp]preference 140 130 100 ---分别修改EBGP、IBGP和本地聚合路由的优先级
BGP链接重传定时器
[r2-bgp]timer connect-retry 10 全局修改
[r2-bgp]peer 23.0.0.3 timer connect-retry 20 --- 对等体修改
虽然不影响对等体关系建立,建议双向修改
BGP衰减
当BGP应用于复杂的网络环境时,路由震荡频繁,为了防止频繁的路由震荡带来的不利因素,BGP使用路由衰减来抑制不稳定的路由。
路由震荡会导致消耗大量的带宽资源和CPU资源,严重会影响到网络的正常工作,甚至设备宕机。
路由震荡:路由添加又撤销的过程
惩罚值:越高,路由越不稳定,到达抑制阈值后不学该路由 默认16000
半衰期:每过一个半衰期,惩罚值衰减一半 默认15min
当惩罚值回到再使用阈值时重新学习该路由 默认750
抑制阈值:默认2000
[r1-bgp]dampening 1 10000 15000 20000 分别为半衰期、再使用闯值、抑制闽值、惩罚值上限
[r1]display bgp routing-table dampening parameter ---查看BGP衰减参数[r1]display bgp routing-table dampened ---查看惩罚路由
BGP存活时间和保持时间定时器
- 保活时间——180s;保持时间定时器——60s
- 减小保活时间和保持时间
- 可以更快地检测到链路故障,有利于BGP网络快速收敛
- 导致keepalive报文增多,设备负担加重,占用一定网络带宽
- 增大保活时间和保活时间
- 减轻设备负担和网络带宽的占用
- 但是不能及时检测到链路状态的变化,不利于BGP网络的快速收敛,严重时会造成网络中断
[r1-bgp]timer keepalive 1 hold 3 ---建议两端均修改,若不一样断开重连后会自动协商一致
[r1]display bgp peer verbose //查看邻居详细信息
更新报文定时器
[r1-bgp]peer 12.0.0.2 route-update-interval 1 ---修改路由更新时间
该定时器只对同一地址族的相同前缀的路由起作用。
华为体系中,缺省情况下,IBGP对等体更新报文定时器为15S,EBGP为30S.
BGP认证
peer 12.0.0.2 password simple 123456
[r2-bgp]peer 12.0.0.1 password cipher 123456
simple和cipher关键字表示密码在本地配置文件的保存方式为明文或密文,而不是指密码在传输是使用明文还是密文,密码在传输时统一使用MD5形式存放在TCP的选项字段中。
多接口BGP部署方式
- 增强网络的可靠性
- 实现流量的负载分担
通过部署BGP协议与ISP进行交互
- 企业网内部路由有变化,ISP侧的接入路由器会自动通过EBGP更新,无需手动改变
- BGP具有强大的路由管理功能,可以实现更加合理的路由优选及备份
- 每个ISO只发布缺省路由
- 每个ISP发布一条缺省路由和部分明细路由
- 每个ISP发布全部明细路由
方式 | 优点 | 缺点 |
---|---|---|
每个ISO只发布缺省路由 | 实现简单,对路由器占用资源少,管理容易 | 不能对不同目的网段实施灵活的策略,实现负载分担困难 |
每个ISP发布一条缺省路由和部分明细路由 | 即可以实施丰富的路由策略,还可以节省路由器系统资源 | 但是对于大量未知的路由,不能实现最佳路径的选路,而且该方法配置相对复杂 |
每个ISP发布全部明细路由 | 较常用的部署方式,可以实时最丰富的的路由策略,容易实现负载分担,对于每一个目的地都可以找到最佳路径 | 占用大量资源,对设备性能要求高,维护困难。 |