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
L2PDU
...
L7PDU
应用层----数据报文传输层----数据段网络层----数据包
数据链路层----数据帧物理层----比特流
封装和解封装
应用层----存在封装过程,取决于不同的应用程序传输层----TCP、UDP(端口号)
网络层----封装IP地址
数据链路层---封装MAC地址
物理层----数据已经成为电信号,不存在封装
TCP/IP的跨层封装
目的:提高封装和解封装的速度,加快传输效率
跨四层封装----应用层的数据封装完成后,直接封装网络层数据
应用在直连路由设备之间
跨三四层封装---在应用层封装之后直接封装二层数据
应用在直连交换设备之间
SOF---帧首定界符
MAC子层----介质访问控制层----802.3 LLC子层----逻辑链路控制层----802.2
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---受限广播地址
该地址用于主机配置过程中IP数据报的目的地址。
此时,主机可能还不知道它所在网络的网络掩码,甚至连它的IP地址也不知道。在任何情况下,路由器都不转发目的地址为受限的广播地址的数据报,这样的数据报仅出现在本地网络中。
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
- 000 0000/25---192.168.1.0/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 OFFER(可用IP地址,网关,DNS,掩码) |
传输层 | 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 Request |
传输层 | 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 |
DHCP ack报文----广播/单播
应用层 DHCP ACK
应用层 | 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/UDP DNS查询过程
递归查询
迭代查询
应用层 | DNS请求报文 |
传输层 | UDP 源端口:随机;目标端口:53 |
网络层 | IP 源IP地址:68.85.2.101 目的IP:68.87.71.226 |
数据链路层 | 以太网封装---源MAC:主机 目的MAC:网关设备 |
网络层 | ARP协议---源IP:68.85.2.101;目的IP:68.85.2.1 |
数据链路层 | 以太网协议---源MAC:主机;目的MAC:FFFF-FFFF-FFFF |
路由器的转发原理
原理:路由器将基于数据包中的目的IP地址查询本地路由表。若路由表中存再记录,则无条件按照记录转发;若没有记录,则将直接丢弃该数据包。
获取未知网段的信息
1、直连路由:路由器默认生成可用接口直连网段的路由条目2、静态路由:由网络管理员手工配置
3、动态路由:所有路由器运行相同的路由协议,之后路由器之间彼此沟通,计算出未知网段的路由信息
直连路由的生成条件
1、接口双UP
物理层面UP:代表链路正常
协议层面UP:代表具备通讯协议2、接口必须配置IP地址
HTTP协议----超文本传输协议
TCP---80
超文本---包含有超链接link和多媒体元素标记的文本TCP协议
是一种面向连接的可靠性传输协议可靠性
确认机制:传输确认,每接收一个数据段,则需要进行一次确认
重传机制:保障可靠性的最优机制,当一个数据段中某一个包丢失,会提醒要求重新传输这个报文
排序机制:传输一个数据段,被分为多个报文,从而不同路径传输,最终到达目的地的顺序会被打乱,所以需要重新进行排序。根据TCP数据包中的序号字段。
流控机制:滑动窗口机制----调节窗口大小从而对流量进行控制
MSS=MTU-TCP头部-IP头部(在TCP协议的选项字段)PMTU----路径MTU发现协议
在IP报头中,有一个字段是DF,该字段表明了IP报文是否允许分片,PMTU功能开启后,会将该字段设置为1,表示不能分片。
此时当需要进行分片时,发现该报文不能分片,设备会丢弃该报文,并向发送方发送一个ICMP报文(数据不可达),同时鞋带上当前设备接口的MTU值。
发送方接收到该ICMP报文后,因为TCP重传机制,会重新发送一次数据,但是也会根据新的MTU值来生产新的报文进行传输。
TCP的面向连接三次握手
TCP的面向连接三次握手
四次挥手
图解TCP/IP
应用层 | HTTP请求报文----请求方式:GET(用于请求一个网页信息) |
传输层 | TCP 源端口:随机端口;目的端口:80 |
网络层 | IP协议--源IP:小明电脑;目的IP:web服务器 |
数据链路层 | 以太网封装---MAC源:小明;目的MAC---网关MAC |
GET---请求读取一个web页面
POST---附加一个命名资源(web页面)PUT---请求存储一个web页面
应用层 | HTTP应答报文---应答状态码 200---OK |
传输层 | TCP协议--源端口号:80;目的:请求方的随机数 |
网络层 | IP协议---源IP:web服务;目的IP:电脑 |
数据链路层 | 以太网封装---源MAC:web服务器;目的:下一跳设备的MAC地址 |
1XX---100---通知信息2XX----200---成功3XX----300---重定向4XX---403---客户错误
5XX---500---服务器错误--503
静态路由
静态路由的优点
1、选路合理,由网络管理员手工配置
2、安全,动态路由协议的计算是需要路由器之间交互数据报文的3、不需要额外占用设备资源
静态路由的缺点
1、配置量大
2、无法基于拓扑结构的变化而自动收敛
静态路由基本配置
方法一:
[r1]ip route-static 23.0.0.0 24 12.0.0.2-----在以太网中使用
标记R:该条路由项是由递归计算产生
方法二:
[r3]ip route-static 12.0.0.0 24 GigabitEthernet 0/0/0
数据不通,原因在于此时的数据报文构造中,目的MAC地址被写为目的IP地址所对应的MAC地址。但是,此时的路由器无法获取目的MAC地址。---ARP无法跨广播域
解决方法:在下一个路由器的入接口上开启ARP代理功能
[r2-GigabitEthernet0/0/1]arp-proxy enable
代理ARP思路:当接收到ARP数据包后,路由器会查看本地路由表,若本地路由器中存在到达目的IP地址的路由,此时该路由器会冒充目的IP地址来回答ARP报文。
方法三:
[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
需要提前铺垫好所有在路由递归查找过程中的所有路由项。
静态路由的拓展配置
负载均衡
ip route-static 23.1.1.0 255.255.255.0 12.1.1.2 ip route-static 23.1.1.0 255.255.255.0 13.1.1.3
手工汇总
当路由器可以访问多个连续的子网时,若均通过相同的下一跳,
则可以将这些网段进行汇总计算,直接写一条汇总网段的静态路由
[Huawei]ip route-static 192.168.0.0 22 12.1.1.2
路由黑洞
在汇总中,如果包含网络中实际上不存在的网段时,可能造成流量有去无回,浪费链路资源。
在上述配置中,汇总过后,将出现192.168.0.0/24和192.168.3.0/24两条路由,这两条路由实际不存在,数据无法到达目的地。被下一跳设备丢弃,产生路由黑洞。
合理的划分和汇总,减少路由黑洞。
缺省路由
[Huawei]ip route-static 0.0.0.0 0 13.1.1.3
注意:缺省路由和路由黑洞相遇时,一定会产生环路。
空接口路由
防环,在黑洞路由器上配置一条到达汇总网段指向空接口的路由。
[r2]ip route-static 192.168.0.0 22 NULL 0
浮动静态路由
[Huawei]ip route-static 23.1.1.0 24 12.1.1.2 preference 90
BFD
双向转发检测,是一种全网统一的检测机制,用于快速检测、监控网络中链路或者IP路由的转发连通状况。
[r1]bfd //启动BDF协议
[r1]bfd aa bind peer-ip 10.1.12.1 ---创建bfd会话,会话名称为aa(仅具有本地意义),对端IP [r1-bfd-session-aa]discriminator local 20 ---会话本地标识符
[r1-bfd-session-aa]discriminator remote 10 ---会话对端标识符[r1-bfd-session-aa]commit --必须提交配置,否则不生效
[r1]ip route-static 10.9.9.0 24 10.1.12.1 track bfd-session aa [r1]display bfd session all
缺省情况下,bfd会话每隔1000ms发送一次报文,当连续三次报文均无响应后,则bfd会话状态断开,从而引起联动协议失效。
[r1-bfd-session-bb]min-rx-interval 10 ---配置BFD报文接收时间间隔为10毫秒[r1-bfd-session-bb]min-tx-interval 10 ---配置BFD报文发送时间间隔为10毫秒
[r1-bfd-session-bb]detect-multiplier 10 ---配置本地检测倍数为10倍,即十次未接收到BFD报文则认定故障
网络类型及数据链路层协议网络类型是根据我们数据链路层所运行的协议及规则来划分。网络类型的分类
P2P----点到点---point to point MA---多点接入网络
BMA---广播型多点接入网络NBMA----非广播型多点接入网络
数据链路层协议
MA网络
以太网协议
特点:需要使用MAC地址对我们的设备进行区分和标识
原因:(为什么以太网需要使用MAC地址进行物理寻址)
利用以太网协议建立起来的二层网络中可以包含多个接口,每个以太网接口之间都可以进行交互以太网数据帧,从而进行通讯,若不存在MAC地址,则无法找到对应的接收数据帧的设备。
所属类型------BMA
以太网网络的构建方式-----使用以太网线缆,连接设备的以太网接口,形成的网络称为以太网络,所运行的协议就是以太网协议。
以太网的特色----可以提供极大的传输速率----频分技术
P2P网络
定义:当一个网络中只能存在两台设备,并且不允许第三台设备加入,这样的网络称之为P2P网络。P2P网络的搭建----使用串口线缆连接设备的串线接口,形成的网络
串口线----一种比较古老的线缆,早期主要使用的线缆之一串口的标准:
E1----2.048M/bps T1----1.544M/bps
HDLC
High-Level Data Link Control----高级数据链路控制协议标准:
满足工业标准的HDLC协议-----ISO组织(IBM公司---SDLC----是一种面向比特的同步数据链路控制协议-----以帧为单位来传输数据)
不满足工业标注的HDLC协议---各家厂商根据ISO标准的HDLC上进行修改得出注意:标准的HDLC和非标的HDLC彼此之间不兼容。(思科、锐捷)
HDLC网络搭建
[r1-Serial4/0/0]link-protocol hdlc //修改网络类型为HDLC
Address:写的unicast,代表没有填写内容,因为点到点网络实际上不需要IP地址就可以通讯,而配置IP地址的原因,仅仅是为了服务上层协议。
Control:原本为了做一些策略,但该字段在现今串线网络当中没有备用到,使用0填充protocol:表示上层封装协议的类型,跟以太网协议中的类型字段相似
HDLC的接口地址借用
串行接口可以借用loopback接口的IP地址和对端建立连接。
[r1-Serial4/0/0]ip address unnumbered interface LoopBack 0 --借用环回0的IP地址
[r1]ip route-static 12.0.0.0 24 Serial 4/0/0 ----不写下一跳的原因在于,1、如果用下一跳方式书写,则需要递归路由;2、因为接口没有IP地址,故无法生成下一跳的直连路由。
在最后需要在双方设备补充上对端设备的静态路由信息,保障数据可以进行查表转发。将环回接口IP地址配置为对端接口IP地址的同网段地址,且掩码为32。
PPP----点到点协议
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连接。
PPP数据帧结构
LCP协议-----链路控制协议----主要用于完成PPP会话建立的第一阶段协商过程
NCP协议-----网络控制协议------是一系列协议的总称,完成PPP会话建立第三阶段时针对网络层协议进行协商。网络层所使用的协议不同,则对应的NCP协议不同。
LCP协议LCP报文类型
LCP具有三大报文类型
链路配置报文----重点
链路终止报文
Terminate-Request:终止请求Terminate-ACK:终止确认
链路维护报文
echo-request------回波请求echo-reply----------回波应答
LCP建立
1、MRU值:在PPP数据帧中所允许携带的最大数据单元,单位字节,默认1500
2、认证方式:根据第二阶段认证来判断,若存在认证,则需要协商认证方式;若不存在认证,则不需要协商。
3、魔术字:用来检测链路中是否存在环路,是由本地设备随机生成的字符串(设备序列号、硬件地址)
协商过程
认证阶段
PPP
的认证,一般是通过
AAA
管理框架
来完成的
认证是双向的,但是也可以做单向,但是一般不建议。
两种认证方式:
PAP
、
CHAP
PAP
密码认证协议
----
是一种明文的认证方式
配置方法
认证方:
创建用户信息
[XIAN-OPENLAB-CORE-AR2240-1-aaa]local-user huawei password cipher
123456
[XIAN-OPENLAB-CORE-AR2240-1-aaa]local-user huawei service-type ppp
配置认证方式
[XIAN-OPENLAB-CORE-AR2240-1-Serial4/0/0]ppp authentication-mode pap
被认证方:
[r2-Serial4/0/0]ppp pap local-user huawei password cipher 123456
PPP
会话的建立是一次性会话方式,当第一次链路建立完成后,后续修改认证方式不会影响链路的通
讯
。
CHAP
认证:
挑战握手协议
-----
该认证不再是传递明文信息,而是采用
对比摘要值
的方式进行认证。
认证过程:
认证方先发送一个挑战报文,里面包含的是认证方的用户名和一个
随机值
。
被认证方接收到后,需要根据该用户名的信息在本地进行查找,找到其对应的密码,然
后将密码和随机值一起进行
HASH
运算,得出摘要值。
然后被认证方将自己的用户名和该摘要值发送给认证方
认证方通过接受到的用户名找到对应密码,再将密码与自己本地产生的随机值,进行
HASH
运算,若所得到的摘要值与认证方发送的摘要值相同,则代表通过认证。
认证配置:
认证方
[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
协议来对网络层参数进行协商。
----IPCP
协议
协商内容:
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
设备来判断。
NAS
设备存储了一个区域内部所有的用户信息,以及其对应的域信息。
当用户名中携带了域名信息,则
NAS
设备会根据域名将其归属到对应域下,并回复该域下所配置的
AAA方案、服务器模板、域下授权信息。如果用户名没有携带域名信息,则会将其归属到默认域中。
默认域中自带默认的认证方案、授权方案和计费方案
。
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---
虚拟私有网络
指的是依靠
ISP
或其他网络管理机构在公有网络基础上构建的专用的安全数据通信网络,只不过该网络
是逻辑上的而非物理的。
虚拟:用户不在需要拥有实际的长途数据线路,而是使用公共网络资源建立的属于自己的私有网
络。
专用:用户根据自身需求,特别定制的最符合自身网络架构的网络
核心技术
----
封装技术
GRE---
逻辑隧道的封装技术
GRE---
通用路由封装
----
标准的三层隧道技术
---
属于点到点隧道
[r1]interface Tunnel 0/0/0 //
创建隧道接口
[r1-Tunnel0/0/0]ip 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
配置
GRE
的报文结构
GRE
封装和解封装报文的过程
设备从连接私网的接口接收到报文后,检查报文头部中出现的
IP
地址字段,并在路由表中查找出接
口,如果发现出接口是隧道接口,则将报文发送给
tunnel
模块进行处理。
tunnel
模块接收到报文后,会首先根据乘客协议的类型和当前
GRE
隧道的配置来添加参数,并对报
文进行
GRE
封装
然后,设备给报文添加传输协议报文头部,即
IP
报文头部。该
IP
头部信息的源
IP
地址是隧道源地址
(不是隧道自身的
IP
地址),目的地址就是隧道的目的地址。
最后,设备根据新添加的
IP
报文头部中的目的
IP
地址,在路由表中查找对应的出接口,并发送报
文。
接收端设备从连接公网的接口收到报文后,首先分析
IP
报文头部,如果发现
协议类型字段的值为
47
(
GRE
的协议号)
,表示上层协议为
GRE
谢意,于是出接口将报文交给
GRE
模块处理。
GRE
模块去掉
IP
报文头部和
GRE
头部,并根据
GRE
报文头部中的协议类型字段,发现此报文的乘客
协议为私网中运行的
IP
协议,将该数据交给对应协议处理。
Keepalive
检测
---
用于检测隧道对端是否可达
[r1-Tunnel0/0/0]keepalive period 2 retry-times 5
设置发送周期为
2s
;重传次数为
5
次。
如果本端隧道配置了
keepalive
检测功能,
GRE
隧道会创建一个计时器,并周期性的发送探测报文,
同时进行不可达计数。
每发送一个探测报文,不可达计数
+1
如果该计数器到达预先设定的值之前收到回应报文,则表明对端可达。
如果计时器值达到预先设定的重传此处,还未收到对端的回应报文,则认为对端不可达。关闭
隧道连接。
keepalive
是不需要双方均进行配置的,仅配置一端即可进行检查。
MGRE----
多点通用路由封装技术
NHRP----下一跳解析协议
中心
/
节点:
Hub-Spoke
架构
NHS
(下一跳服务器)
在私网当中选择一个出口物理
IP
地址不会变的设备充当
NHS
服务器。
剩下的节点都可以知道中心的隧道
IP
和物理
IP
,然后通过
NHRP
要求所有的分支节点都需要将自己的物理接口
IP
和隧道
IP
发送给该服务器(有变化就发送)。
NHS
服务器将会存有所有分支节点的地址映射关系的一个动态记录。
发送消息时查询该映射记录表即可。
MGRE
的非
shortcut
配置
reset saved-configuration //
清除本地配置文件
Hub
配置
[r1]interface Tunnel 0/0/0
[r1-Tunnel0/0/0]ip 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
配置
[r4]interface 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 GigabitEthernet 0/0/0 //
设置分支站点
IP
地址不固定,故源
IP
根据出接
口变化
[r4-Tunnel0/0/0]nhrp entry 192.168.5.1 15.0.0.1 register //
分支需要到中心站点注册
DSVPN----华为
DSVPN
专门为了
Hub-Spoke
架构诞生服务。
通过总部中转流量会导致下述问题
1
、总部在中转分支之间的数据流量时,会消耗总部
hub
设备的
cpu
和内存资源,造成资源紧张
2
、总部需要对分支之间的数据流量进行封装和解封装,造成额外的网络延时
3
、
IPSec
协议不支持广播报文和组播报文。
mgre
隧道
静态
mgre----
建立在
hub
到
spoke
,并且永久存在
动态
mgre---
建立在
spoke
到
spoke
,在一定周期内没有流量转发时将自动拆除
NHRP
映射表
静态表项
动态表项
老化时间
---7200s
NHRP
映射表建立过程
1.
建立
spoke
和
hub
之间的
MGRE
隧道
2.
分支学习路由
1. shortcut
方式
----
快捷方式
分支路由全部汇聚到总部
spoke
节点只需要存放到达
hub
节点的路由即可
一般应用在网络规模较大、分支节点较多的场景。
2.
非
shortcut
方式
----
非快捷方式
分支间相互学习路由
每一个分支节点都需要学习到所有对端的控制层面的数据。
DSVPN
通过
NHRP
协议动态收集、维护和发布各节点的公网地址等信息,解决了源分支无法获取目的分支
的公网
IP
地址的问题,从而可以在分支和分支之间直接建立一条动态的
VPN
隧道,实现分支和分支之间的直接
通讯,减轻总部的设备负担。
DSVPN
借助
MGRE
技术,使
VPN
隧道能够传输组播报文和广播报文,并且一个
tunnel
接口可以跟多个对端
建立
VPN
隧道,减少网络管理员的配置量。并且,在新增分支或者分支地址变化的情况下,能够自动维护总部
和分支之间的隧道关系,而不需要调整任何配置。
当源
spoke
需要向目的
spoke
发送数据报文时,
源
spoke
通过与
hub
节点的静态
mgre
隧道交互
NHRP
协议报文获取目的
spoke
节点的公网地址,并且与目
的
Spoke
节点建立动态
mgre
隧道。
一般应用在网络规模较小,路由信息量少的网络中。
3.
建立
spoke
和
spoke
之间的
MGRE
隧道
shortcut
方式
非
shortcut
方式
[r1-Tunnel0/0/0]nhrp redirect //
在
hub
设备上配置
----
使能
nhrp
重定向报文
[r4-Tunnel0/0/0]nhrp shortcut //
在
spoke
设备上配置
---
开启
spoke
设备的
nhrp
重定向请求报文
动态路由协议下的
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
OSPFv2
和
RIPv2
对比
相同点
1
、两者都是无类别路由协议
---
传播时携带真实掩码
2
、两者的更新方式相同
----
组播
RIPv2----224.0.0.9
OSPFv2----224.0.0.5\224.0.0.6
3
、两者均支持等开销负载均衡
不同点
RIPv2
只能应用在小型网络中,
OSPFv2
可以应用在中大型网络环境的
OSPF
区域划分
----
结构化部署
OSPF
域(
Domain
)
---
将一系列的
OSPF
路由器组成的网络称为
OSPF
域。
区域
ID
:
32bit
OSPF
多区域划分要求
:
1
、
OSPF
要求域中所有的非骨干区域(区域
ID
不为
0
的区域)都必须与
Area0
相连。
2
、骨干区域不能被分割
OSPF
区域结构部署规则的必要性
假定没有
“
所有非骨干区域都必须与骨干区域相连
”
这条规则
----“
远离骨干的非骨干
”
定义了ABR(区域边界路由器)设备----确保所有人遵循上述规则
1
、至少连接两个区域
2
、连接的区域中至少有一个是区域
0
3
、在区域
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
)
全域唯一,标识路由器身份
用
IP
地址形式表示(
32bit
,点分十进制)
配置方法
手工配置
自动配置
默认最大环回
IP
地址,若没有最大环回则选择最大物理
IP
地址(路由器的
RID
选
择)。
[r1]display router id //
查看路由器全局
ID
值
无论采用手工配置还是自动选择,一旦
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----
转发状态
----
修成正果
------
标志邻接关系的建立
。
条件匹配
设备接口名称
DR---
指定路由器
BDR---
备份指定路由器
DRother----
其他路由器
OSPF
称为邻接关系的条件
点到点
----
不用选举
DR
和
BDR----
直接开始建立邻接关系(加快收敛的方法)
MA
网络
----
在一个网络中,不限制节点数(会选举
DR
和
BDR
)
选举规则
接口优先级
----->0-255---->
优先级越大,为
DR
,次一级为
BDR
(华为默认为
1
)
RID----
越大越优先
选举范围
----
一个广播进行一次条件匹配
角色之间的关系
DR
和
DRother---->
邻接关系
DR
和
BDR---->
邻接关系
BDR
和
DRother---->
邻接关系
DRother
和
DRother---->
邻居关系
非抢占性选举模式
选举过程
1. DR
、
BDR
的选举是通过
Hello
报文来实现的,选举过程发生在
2-way
状态之后
2.
路由器将自己的接口的
DR
优先级填写
hello
报文中的
“DR
优先级
”
字段
3.
在接口视图下可以修改
DR
优先级(若
DR
优先级修改为
0
,则代表不具备
DR
和
BDR
的选举资格)
4.
当路由器接口激活
OSPF
后,首先检查网络上是否已经存在
DR
设备,如果存在则接收
DR
角色。若不
存在,则拥有最高
DR
优先级的设备称为
DR
(
RID
)
5. BDR
的选举过程和
DR
选举过程相同,但是是在
DR
选举成功之后
OSPF工作状态
启动
OSFP
配置完成后,
OSPF
将向本地所有运行
OSPF
协议的接口组播
224.0.0.5
发送
hello
报文;
hello
报文中携带有本地的
RID
以及本地已知的邻居
RID
;之后生成
邻居表
。
邻居关系建立后,进行条件匹配;匹配失败则停留在邻居关系;仅
hello
报文保活
匹配成功的邻居将
开始建立邻接关系
。
首先使用未携带数据的
DBD
报文来进行主从关系选举;之后使用携带数据的
DBD
报文来共享数据库
目录;之后本地使用
LSR/LSU/LSACK
报文来获取未知的
LSA
信息;
完成本地数据库的建立
---
生成
数据库表
。
之后本地基于数据库生成有向图和最短路径树,之后计算本地到达拓扑中所有未知网段的最短路
径,并将其添加到
路由表
中。
收敛完成,
hello
报文周期保活。每
30min
进行一次周期更新。
结构突变
1.
新增网段
----
直接在邻接关系的接口使用
LSU
进行更新,将内容告诉于邻居。并需要邻居的
ACK
确
认。
2.
断开网段
----
直接在邻接关系的接口使用
LSU
进行更新,将内容告诉于邻居。并需要邻居的
ACK
确
认。
3.
无法沟通
----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.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
代表不可变;
1
代表可
变。
华为体系中,优先级为
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
填充。
Hello包
网络掩码(
Network Mask
)
该字段填充的是发送该报文的网络掩码
两台
OSPF
路由器如果通过
以太网接口
直连,那么双方的直连接口必须配置相同的网络掩码。
(点到点网络不需要对比该参数)
注意:
OSPF
建立邻居关系需要对比子网掩码信息是华为独有,别的厂商没有这个要求
。
Hello
间隔
两台直连路由器需要确保直连接口的
Hello
时间间隔相同,否则邻居关系无法建立
。
缺省情况下,
P2P
和
BMA
类型的下,为
10S
;
P2MP
和
NBMA
为
30S
。
可选项(
Options
)
该字段一共
8bit
,每个比特位都用于指示该路由器的某个特定的
OSPF
特性。
而
OSPF
邻居关系建立过程中,该字段中的某些比特位将会被检查,可能影响
OSPF
邻居关系建
立。(特殊区域的标记)
路由器优先级
路由器失效时间
两台直连路由器要建立
OSPF
邻居关系,需要保证双方接口的
dead time
时间相同,否则邻居
关系无法正常建立。
缺省时间为
hello
的
4
倍。
指定路由器
网络中
DR
设备的接口
IP
地址。
若没有
DR
或
DR
没有选举出来,则填充
0.0.0.0
备份指定路由器
[r2-GigabitEthernet0/0/0]ospf dr-priority ? //
修改
OSPF
接口的
DR
优先级
INTEGER<0-255> Router priority value
网络
BDR
设备的接口
IP
地址
若没有
BDR
或未选举结束,则填充
0.0.0.0
邻居
在直连链路上发现的有效邻居,此处填充的是邻居的
RID
值,如果发现多个邻居,则包含多个
邻居字段。
所有
224.0.0.X
格式的组播地址称为本地链路组播,目的
IP
地址是本地链路组播的数据包中的
TTL
值被
设定为
1
。所有的本地链路组播都会存在对应的组播
MAC
地址,
01-00-5e-
后
24
位(组播
IP
地址的后
24
位)
。
限制邻居关系建立的参数
子网掩码
Hello
时间
[r1-GigabitEthernet0/0/0]ospf timer hello 20
Dead
时间
[r1-GigabitEthernet0/0/0]ospf timer dead 120
注意:修改
hello
时间,则死亡时间随之改变,而仅修改死亡时间,
hello
间隔时间不变
。
OSPF
特殊区域标记
跟修改掩码效果相同。
认证字段
两者均需要等待死亡时间超时,才会从
full
状态切换到
down
状态。
DBD包
使用未携带数据的
DBD
报文进行主从关系选举
使用携带数据的
DBD
报文进行目录信息共享
使用未携带数据的
DBD
报文进行确认
在
R2
上修改网络掩码后,
R2
会将与
R3
的状态立即修改为
Down
状态。而
R3
会在
40S
死亡时间之后进行状态切换。
原因在于,
R2
在修改
IP
地址的掩码后,会认为之前的连接中断,需要重新建立连接,所以重置状态机。
而
R3
则认为是无法沟通。故会等待死亡时间超时后才切换状态。
并且,该情况,在
R3
等待
40S
周期内,还是可以向
R2
转发数据,
R2
可以接收到该数据包,但无法回复。
接口最大传输单元(接口的
MTU
)
华为将该值设置为
0
华为默认不对
MTU
值进行检测
接口最大传输单元(接口的
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
报文。(隐性确认机制)
LSA
头部
当路由器使用
DD
报文来描述自己的
LSDB
时,
LSA
的头部信息被包含在内。
一个
DD
报文可以包含一个或多个
LSA
头部信息。
LSR包
基于
DBD
报文请求本地未知
LSA
信息。
链路状态类型、链路状态ID、通告路由器-----LSA三原则。---通过三个参数唯一标识一条LSA。
LSU包
LSACK包
OSPF的接口网络类型
广播型多路访问类型(BMA)
[r2]display ospf interface GigabitEthernet 0/0/0
OSPF
在
BMA
网络类型的接口上通常以
组播
的方式发送
hello
报文、
LSU
报文和
LSACK
报文。以
单播
的
形式发送
DD
报文和
LSR
报文。
点到点类型(
P2P
)
OSPF
在网络类型为
P2P
的接口上以组播的方式(
224.0.0.5
)发送所有的协议报文。并且
OSPF
在
P2P
类
型的网络中不会选举
DR
和
BDR
。
该接口类型信息中,缺少了在
BMA
网络中看到的
DR
优先级、
DR
和
BDR
的描述信息。
[r2]display current-configuration configuration ospf //
查看所有当前配置中的关于
OSPF
的
环回接口(虚拟接口)
Type----P2P-----
在思科中有专门定义的
Loopback
类型作为环回接口的类型,而华为中没有定义,使用
P2P
来填充(没有意义)。
所有通过
OSPF
学习到的环回接口的路由掩码信息都是
32
位,这是因为环回接口是一个模拟的接口,
它实际上并没有连接用户,所以没有其余的
IP
地址存在于环回接口之下,只有一个可用的
IP
地址,故而
使用
32
位掩码来直接标识环回接口。保证路由信息的精确性。
----
避免产生环路或者路由黑洞。
[r1-LoopBack0]ospf network-type broadcast //
修改网络类型为
BMA
State:Waiting
原因在于环回接口此时并没有邻居,也就无法进行正常的
DR
和
BDR
选举,当时间超时后,环回接口会
认为自己就是
DR
,并将相应信息填充到该接口信息中。
华为将tunnel接口的传输速率定义为64Kbps。
P2MP接口类型
OSPF
在
P2MP
类型的接口上通常以组播的方式发送
hello
报文,以单播的方式发送其它报文。
P2MP
类型无法由设备自动生成,必须由管理员手工更改。
P2MP
类型网络不需要选举
DR
和
BDR
。
非广播型多路访问类型(
NBMA
)
在
NBMA
场景中,为了让
OSPF
路由器之间能够正确建立邻居关系,需要使用单播邻居的方式来发送
OSPF
报文。
双向配置
。
[r4-ospf-1]peer ?
IP_ADDR<X.X.X.X> IP address
OSPF的不规则区域
远离骨干的非骨干区域
使用
tunnel
隧道
在
R2
和
R3
之间构建一条隧道,之后,将这个隧道宣告到
Area0
,相当于将
R3
这个非法的
ABR
设备合法
化。
使用
vpn
隧道解决不规则区域的问题
1.
可能产生选路不佳
2.
可能造成重复更新
3.
因为虚拟链路的存在,
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
解决不规则区域的问题
1.
因为虚拟链路的存在,
R2
和
R3
之间也需要建立邻居。导致他们之间维护的周期性数据将穿越
Area1
,导致中间区域的资源消耗过大。
2.
只能穿越一个区域。
实际上,
vlink
不仅仅应用在我们上述两种不规则区域,还可以用来修
复一些次优路径或者骨干区域不健
壮问题
。
Vlink
解决没有骨干区域的场景
。
Vlink
环路问题
场景一
场景二
解决方法:OSPF规定,vlink所在区域不允许传递聚合路由。
使用多进程双向重发布
重发布
把一种路由信息以另一种路由协议的方式发布出去
。
[r3-ospf-1]import-route ospf 2 ---
将
OSPF
进程
2
的路由导入到
OSPF
进程
1
[r3-ospf-2]import-route ospf 1
OSPF
的
LSA
详解
LSA
头部
链路状态老化时间(
Link-State Age
)
类型
16bit
,单位
S
当该
LSA
被始发路由器产生时,该值被设置为
0
,之后随着该
LSA
在网络中被洪泛,老化时间逐
渐累积。
最大老化时间
----3600S-----
当到达该时间后,该
LSA
会被本地路由器删除。
在
OSPF
网络中,只有始发路由器能够提前使该
LSA
老化,并删除全网该
LSA
信息。
组步调计时器
----cisco----240S
可选项
内容与
hello
包相同
链路状态类型(
Link-State Type
)
指代该条
LSA
的类型
链路状态
ID
用来标识
LSA
的,不同类型的
LSA
,对该字段的定义不同。
通告路由器
产生该
LSA
的路由器的
RID
链路状态序列号
32
位
bit
,逐次加一
起始:
0X80000001
;截止:
0X7FFFFFFF
序列号空间
线性序列号空间
循环序列号空间
棒棒糖序列号空间
校验和
会参与到
LSA
的新旧关系对比
判断
LSA
的新旧关系
链路状态序列号、老化时间、校验和
1.
具备较高序列号的
LSA
信息更优
2.
具备相同序列号的
LSA
,选择拥有较大校验和的
LSA
3.
具备相同序列号和校验和,如果某条
LSA
的老化时间被设置为最大老化时间,则认为该
LSA
最新。
4.
具备相同序列号和校验和,没有任何一条
LSA
的老化时间为最大老化时间,会对比两个
LSA
的老化
时间之差。
1.
当差值大于
15min
(
MaxAge Diff
:一个
LSA
实例从始发设备发出,直到被洪泛到整个
AS
边
界所需要的最长时间
),会认为两条
LSA
是不同的,选择较小的
LSA
2.
当差值小于等于
15min
,会认为两条
LSA
相同,选择随机一个
Type-1 LSA----Router
对于一类
LSA
,网络中所有设备都会发送,并且只发送一条
同属一个区域的接口共同使用一个一类
LSA
信息进行描述。
若存在多个区域,路由器会为每个区域单独产生一个一类
LSA
,并且每个
LSA
只描述接入该区
域的接口。
Type-2 LSA----Network
在一个网络中,只需要一台设备发送
该
LSA
仅存在于
MA
网络中,由
DR
设备产生
链路状态
ID
为
DR
的接口
IP
地址
Type-3 LSA---Sum-Net
通告者均为
ABR
设备
每一条路由项都使用单独的一条
LSA
信息进行描述
该
LSA
中的开销值,指的是通告者到达目的网段的开销值
设备在接收到
3
类
LSA
之后,需要根据一类
LSA
和二类
LSA
计算的拓扑信息来寻找三类
LSA
的通告
者。
如果,通告者是所在区域的
ABR
设备,那么自然而言,设备可以通过一类和二类
LSA
找到通告者;
若不是本区域的
ABR
设备通告的,则需要转换通告者。
Type-5 LSA----External
通告者
---ASBR
LS ID----
域外路由信息的目标网络号
传播范围
----
整个
OSPF
域
五类
LSA
中携带的是域外路由信息,通过重发布导入
OSPF
网络,因为不同协议对开销值的算法标准
不同,所以,在路由导入之后,将直接舍弃原本的开销值,之后给路由赋予一个规定值
-----
种子度
量值
OSPF
的种子度量值为
1
[r4-ospf-1]import-route rip 1 cost 5
E
位:
表示外部路由使用的度量值类型,
OSPF
定义了两种外部路由度量值类型,分别为
Metric
Type-1
(
E=0
)、
Metric-Type-2
(
E=1
)
Type-1
:所有设备到达域外目的网段的开销值为本地到达
ASBR
的开销值
+
种子度量值
Type-2
:域内所有设备到达域外目的网段的开销值等于种子度量值;
OSPF
默认使用类型
2.
[r4-ospf-1]import-route rip 1 cost 5 type 1
外部路由标记
一个只有外部路由才能携带的标记,经常被用于部署路由策略或策略路由。
在华为路由器上,缺省时,该字段值被设置为
1
。
转发地址
---FA
FA
字段默认为
0.0.0.0
;则到达该外部网段的流量会被转发引入到发送这条
LSA
的
ASBR
设备。
而若
FA
字段不为
0.0.0.0
,则流量会被发送给这个
FA
字段所表示的地址。
作用:解决次优路径问题
-----
与
ICMP
中的重定向报文具有相同效果。
FA
字段被设置为其余数值的条件:
引入外部路由的
ASBR
在其连接外部网络的接口上激活了
OSPF
协议。
该接口的网络类型为
BMA
或者
NBMA
。
该接口的
IP
地址属于
OSPF
协议配置
network
命令范围。
该接口没有被配置为静默接口。
Type-4 LSA------ Sum-Asbr
链路状态
ID------ASBR
的
RID
值
度量值
----
填写的是该通告者到达
ASBR
的
Cost
值
四类
LSA
的任务就是在辅助五类
LSA
完成验算过程,找到
ASBR
的位置,里面只携带一个开销值。
OSPF
优化
主要目的
----
减少
LSA
的更新量以及数量。
1.
路由汇总(减少骨干区域的
LSA
更新量)
2. OSPF
特殊区域(减少非骨干区域的
LSA
更新量)
OSPF
路由汇总(路由聚合)
OSPF
路由汇总是由手工部署的
OSPF
的汇总称为
----
区域汇总,因为
OSPF
在区域之间才传递路由信息,并且是对路由进行汇总而非 LSA信息。
域间路由汇总
域外路由汇总
域间路由汇总
只要站点内这条汇总路由所涵盖的所有明细路由中有一条是有效的,则
ABR
就会通告该汇总路由,而
当所有的明细路由全部失效时,
ABR
设备才不会继续通告该汇总路由
。
汇总并不会影响
ABR
设备自身的明细路由
。
汇总会抑制明细路由的发送。
域间路由汇总只能汇总
ABR
设备自身通过一类
LSA
和二类
LSA
信息学习到的路由条目
。
域外路由汇总
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
设备上配置即可
第二大类特殊区域
----1
、不能是骨干区域;
2
、不能存在虚链路;
3
、存在
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
NSSA
环路问题
NSSA
区域缺省路由配置错误可能会导致路由环路的产生。
场景一
[r3-ospf-1-area-0.0.0.1]nssa default-route-advertise
R4
和
R5
无法下发
OSPF
缺省路由的原因是本地路由表中的静态缺省路由被
R3
发送的七类缺省路由所替
代。
当删除
R3
的下发命令后,
R4
和
R5
均会下发七类缺省路由,并学习对方的七类缺省路由,但是并不会将
从对方学习到的七类缺省路由加入到路由表中
。
总结一下:
1. NSSA
区域的七类
LSA
实际上是需要
ASBR
或者
ABR
自己下发的。
2.
而如果多台设备均下发成功七类
LSA
缺省路由,则虽然都会收到
LSA
信息,但并不会将其余设备的
LSA
缺省信息加入到本地路由表中。因为始终相信自己的缺省路由是最好的。
3.
而对于第一台发布七类缺省路由的设备而言,会认为我身上已经有了一条去往外部区域的路由,并
且本地作为通告者,那么当他接收到其他设备发送来的七类缺省路由,也不会进行学习
。
-----
华为
运用该逻辑解决
Totally NSSA
中的环路问题。
1.
华为为了解决环路问题,保留了
NSSA
区域由
ABR
产生的七类
LSA
缺省路由,这样做的好处就
是使得设备相信自己产生的这条
LSA
,而对于其他设备传递来的七类
LSA
,只接收到不使用。
2.
这样一来,
ABR
设备就不会具备指向
NSSA
区域内部的缺省路由,更不会将这个缺省路由传递
给骨干区域,从而避免环路问题。
OSPF
规定:在
NSSA
区域中,可能同时存在多个
ABR
或
ASBR
,为了防止路由环路产生,边界路由器
之间不计算对方发布的缺省路由
。
NSSA
负载分担解决次优路径问题
OSPF
对进行
7
转
5
操作的规范:
1. P
比特位用于告知路由器该
Type-7 LSA
是否需要转换
2.
缺省情况下,转换路由器是
NSSA
区域中
RID
值最大的
ABR
3.
只有
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
环路
重发布和路由策略
重发布
在同一个网络拓扑结构中,如果存在多种不同的路由协议,由于不同的路由协议对于路由项的处理机
制不同,这就会导致在网络中造成路由信息的隔离。而在路由协议的边界设备上,将某种路由协议的路
由信息引入另一种路由协议中,这个
操作被称为路由引入(
Route Importation
)或者路由重分发
。
----
执行该操作的技术被称为重发布。
作用:在一个网络中,若运行多种路由协议或相同路由协议的不同进程;协议之间不能直接沟通计
算,进程之间也是相互独立,所以需要使用重发布技术来实现路由的共享。
执行条件
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
中,
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
协
议的优先级),从而解决路由回馈问题。
在双点双向重发布中,虽然解决了路由回馈问题,但是多点重发布还是存在一个必然产生的问题
----
选
路不佳。
------
原因在于重发布时清除了原先的开销值导致的。
路由策略
控制层流量
-----
路由协议传递路由信息产生的流量
数据层流量
-----
设备访问目的地址是产生的流量
所谓的路由策略
-----
在控制层面转发流量的过程中,
截取流量
,之后
修改流量再转发或者不转发
,最
终达到影响路由器路由表的生成,干涉选路的效果
。
抓流量
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
)
一个路由条目由目的网络地址(前缀)
+
掩码长度(前缀长度)共同标识
。
前缀列表的匹配规则:从上而下,逐条匹配,一旦匹配上则将按照该规则执行,不再向下匹配。末尾
隐含拒绝所有规则
。
实例
假设,有四条路由信息:
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
这种距离矢量型协议专用的。
抓流量
[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----
路由过滤工具
分发列表
----cisco
只能够对路由信息进行过滤,而无法对
LSA
进行过滤
。
[r2-acl-basic-2000]rule deny source 34.0.0.0 0.0.0.0 ------
过滤列表本身没有过滤能力,所以,
需要在抓取流量的时候使用拒绝动作。
[r2-acl-basic-2000]rule permit source any -----
注意,在抓取流量的时候,末尾一定要放通所有
流量,否则将会把所有的流量均过滤掉,原因在于过滤策略是完全依照
ACL
表项进行工作的。
在过滤策略中调用
[r2-rip-1]filter-policy 2000 export GigabitEthernet 0/0/0 -----
在进程中调用,选定入方向或出
方向的接口,若不选择接口,则为全局调用,会匹配所有接口
[r2]ip ip-prefix aa deny 34.0.0.0 24
[r2]ip 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
末尾隐含允许所有,但是在过滤策略中一定要手工配置
允许所有
。
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
[r2]ip 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
:
指定该节点的匹配模式为允许,
如果路由匹配的结果是满足该阶段的所有
if-match
语句,则该路由被视为允许通过,该节点的
apply
语言将被执行,且不再进入一下个节点。若该节点中有
fi-match
语句不满足,则进入下一个
节点继续匹配。
deny
:
指定节点的匹配模式为拒绝。
如果节点的匹配模式为拒绝,则该节点的
apply
语句将不被执行。
如果路由匹配的结果是满足该阶段的所有
if-match
语句,该路由策略的匹配过程直接结束。不会进
入下一个阶段。而满足该节点条件的路由会被视为拒绝通过。
若该节点中有
fi-match
语句不满足,则进入下一个节点继续匹配。
配置指南总结
1.
即便要拒绝一个流量,在抓取的时候也必须使用允许操作,之后在路由策略来拒绝。
2.
在一条规则中,若没有进行流量匹配,那么就是匹配所有流量。若没有
apply
那么仅对匹配的流量
进行当前大动作修改。
3.
配置时,注意路由策略的
“
与
”
和
“
或
”
关系。
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
、首先
RIP
是基于
UDP
进行数据传输的,而
UDP
是一个不可靠的协议,他在传输过程中可能会丢失某些
数据。
2
、缺省情况下,
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
协议计算出来的
路由信息进行搬运和传递,并不去计算路由
。
IGP
协议追求
收敛速度快
选路佳(无环路)
占用资源少
EGP
协议追求
可控性
可靠性
AS-BY-AS
BGP
的特征
IGP
协议特点
选路佳
收敛快
占用资源少
可控性
因为在重发布的过程中,由于会抹除原有度量值,会导致出现选路不佳的情况。而
BGP
为了弥补这个
不足点,直接舍弃了开销值。取而代之的是设计了很多的
路径属性
。
可靠性
BGP
因为只有触发更新,而不存在周期更新。所以,需要确保其可靠性,使用
TCP
为传输层协议。
端口号
179
。
-------
BGP
会话的建立是手工指定的(单播形式)
。
IGP
协议不选择使用
TCP
的原因:
TCP
传输效率低
TCP
传输占用资源大
TCP
协议只能实现单播,所以,无法通过组播或广播的形式发送数据,将导致
IGP
协议无法自
动发现邻居关系,只能手工指定。
AS-BY-AS
BGP
将一个
AS
看做是一个整体
。
BGP
协议不支持负载均衡
。
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
对等体一般使用非直连建邻。
IBGP
邻居之间的报文中
TTL
值被设置为
255
。
在
IBGP
对等体中,常使用环回接口地址作为源目
IP
地址。
环回接口稳定
并且可以借助
AS
内部的
IGP
和冗余拓扑来保证可靠性。
BGP
特点
1.
无类别路径矢量协议
-----AS-BY-AS
2.
使用单播更新来发送消息;基于
TCP 179
号端口工作。
3.
增量更新机制
----
仅触发更新,无周期更新
4.
具有丰富的路径属性来取代
IGP
中的度量值进行选路,可以由多个属性共同控制协议
5.
可以在流量的进出口实行路由策略
----
可控性
6.
默认不被用于负载均衡
-----
会通过各种选路规则仅仅产生一条最佳路径
7. BGP
支持认证和聚合
BGP
的数据包
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
包
---
更新包
作用:用于在对等体之间传递路由信息,可以用于发布、撤销路由。
-----
携带需要传递的路由信息。
需要携带的参数主要就是目的网络号、子网掩码信息和路径属性。
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
报文。如果接收到对端发送的
keepalive
报文,则代
表参数协商通过,会进入最终状态。
如果收到的是
notification
报文,则转至
idle
状态。
Established------
连接建立完成状态
对等体关系建立完成的标志。
在该状态下,
BGP
可以和对等体交互
Update
报文、
keepalive
报文、
Route-refersh
报文和
Notification
报文。
BGP
的工作过程
1.
基于
IGP
协议或静态路由实现邻居
IP
可达
2.
启动
BGP
协议,并指定邻居关系
1.
邻居之间单播传输报文,通过三次握手机制,建立
TCP
会话通道。
2.
后续
BGP
所有的通讯都将基于
TCP
会话通道来传输。包括传输所需要的可靠性机制。
3.
使用
open
报文和
keepalive
报文进行对等体关系的建立。
open
报文用来携带建立对等体关系时所需
要使用的参数,
keepalive
报文用于参数的确认。最终完成对等体关系的建立。生成
邻居表
。
4.
使用
update
报文来共享路由信息。信息中将携带目标网络号、掩码及路径属性;之后,设备会将所
有的自己发送的以及接收的路由信息记录在一张表中
-----
BGP
表
。
5.
将
BGP
表中的最优路由信息(通过路径属性选择)加载到
全局路由表
中。
6.
此时路由收敛完成,将使用
keepalive
报文进行周期保活,默认保活时间为
180S
,周期发送时间默
认为保活时间的
1/3
,即
60S
。
7.
如果出现错误信息,则将使用
notification
报文进行告警
8.
如果出现结构突变,则将使用
update
报文进行触发更新
BGP
的防环机制
EBGP
的水平分割
AS_Path
属性
-----
记录
AS
路径的一个属性
当路由信息再一次传回本地
AS
时,路由器通过查看
AS_Pathshux1
,可以清楚的知晓该属性包含本地
AS
号,故拒绝学习该路由信息。
IBGP
的水平分割
BGP
规定,当路由器从一个
IBGP
对等体学习到某条
BGP
路由时,它将不能再把这条路由通告给任何
IBGP
对等体
。
-----IBGP
水平分割机制。
解决方案
1.
构建全联的
IBGP
对等体关系
1.
当
AS
内部设备数量巨大时,
IBGP
邻居关系会呈指数型增长,而非直连建邻之间传递的数据还
是要依靠物理链路,故全连接建邻会导致占据大量的链路资源,并且路由器维护大量的
TCP
和
BGP
会话连接,需要消耗大量的设备资源。
2.
网络的可扩展性差。
2.
打破
IBGP
水平分割
1.
联邦
2.
路由反射器
BGP
的路由黑洞
由于
BGP
协议可以非直连建邻,所有导致
BGP
协议可能出现跨越未运行
BGP
协议的设备,导致
BGP
路
由传递后,控制层面可达。但是数据层面,流量流经未运行
BGP
协议的设备时,无法通过,形成路由黑
洞。
避免路由黑洞的方式
----
-BGP
同步更新规则
----
当一台路由器从自己的
IBGP
对等体学习到一条
BGP
路由
时,它将不能使用该条路由或把这条路由信息通告给自己的
EBGP
对等体,除非它又从
IGP
协议学习到这
条路由,也就是要求
IBGP
路由与
IGP
路由同步
。
在华为数通设备上,
BGP
同步更新规则缺省是被关闭的,并且华为也不允许开启
BGP
同步规则
。
解决方案
1.
让未运行
BGP
协议的设备运行
BGP
协议
---
建立全连接的
IBGP
环境。
2.
物理或逻辑拓扑全联
3.
在
IGP
协议中,重发布
BGP
协议的路由信息
4.
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 ----
查看
BGP
的邻居表
IBGP
对等体的建立
由于直连接口建立对等体时,若链路终端,则会中断
BGP
会话。故在实际工程中,一个
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 -----
将
R2
发送的数据包的源
IP
地址修改为
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
邻居时,将路由中的下一跳属性该为本地。
总结一下配置逻辑
:
1.
完成所有路由器的
IGP
配置
2.
使用直连接口建立
EBGP
对等体关系
3.
使用环回接口建立
IBGP
对等体关系
4.
使用
connect-interface
命令修改
IBGP
建邻源
IP
地址,双方均修改
5.
使用
next-hop-local
命令修改路由传递的下一跳属性
6.
若存在使用环回接口建立
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的路由聚合
自动聚合功能是以主类聚合的方式进行的。而主类聚合方式会导致一个结果就是产生路由黑洞。所以
也会生成一条去往空接口的防环路由。这也是华为设备关闭自动聚合功能的原因。
状态码
S-----
代表抑制,被抑制的路由信息将不再加表和传递。
特点:
1.
缺点
1.
自动聚合只能将明细路由汇总到主类
1.
会产生巨大的路由黑洞
2.
自动聚合只能针对重发布的路由条目生效
2.
自动聚合会抑制明细路由条目
3.
黑洞路由器会在本地的路由表中,自动生成一条指向
null
口的汇总网段路由,防止环路
4.
聚合完成后,将会在本地的
BGP
表中发布一条新的下一跳指向
127.0.0.1
的汇总网段路由。
手工聚合
[r3-bgp]aggregate 172.16.0.0 20
手工聚合会生成一条指向空接口的防环路由,并且掩码可以随意汇总,但是手工聚合没有将明细路由
进行抑制。
手工聚合只有在所有明细路由均无效时,才会撤销。并且,手工聚合可以灵活调整掩码信息,只要还
存在一条明细路由,手工聚合后的路由就是可用且优的。
手工聚合命令在配置后,
1
、检测本地路由表中是否有聚合路由的可用明细路由。
2
、若有则在本地路
由表中发布一条指向空接口的防环路由;若无则该命令无效;
3
、将汇总的防环路由发布到
BGP
中
BGP
的手工聚合可以在非直连设备上进行,只要本地存在这些明细路由,且明细路由可用且优就可以
进行聚合操作
。
聚合路由不会继承明细路由的属性,导致
AS_Path
属性丢失,可能会引发环路问题。