HCIP笔记

2023-10-30

HCIA复习

抽象语言----编码编码----二进制

二进制---电信号处理电信号

OSI参考模型----OSI/RM

应用层

表示层

会话层

传输层

端口号:0-655351-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

应用层----据报文传输层----数据段网络层----数据包

数据链路层----数据帧物理层----比特流

封装和解封装

应用层----存在封装过程,取决于不同的应用程序传输层----TCPUDP(端口号)

网络层----封装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地址二进制的前八位数字特征分类A0XXX XXXX-----0-127

B10XX XXXX-----128-191 C110X XXXX-----192-223 D1110 XXXX-----224-239 E1111 XXXX-----240-255

私网IP地址----单播地址

A10.0.0.0-10.255.255.255-----1A类网段B172.16.0.0-172.31.255.255-----16B类网段

C192.168.0.0-192.168.255.255----256C类网段

私网IP地址可以重复使用,但是在私网内部需要保证唯一性。

特殊IP地址

1127.0.0.1-127.255.255.254----环回地址----本地测试2255.255.255.255---受限广播地址

该地址用于主机配置过程中IP数据报的目的地址。

此时,主机可能还不知道它所在网络的网络掩码,甚至连它的IP地址也不知道。在任何情况下,路由器都不转发目的地址为受限的广播地址的数据报,这样的数据报仅出现在本地网络中。

3、主机位全1---192.168.1.255/24----直接广播地址

区别:受限广播地址是不被路由器转发的,而直接广播地址会被转发。4、主机位全0---192.168.1.0/24----

50.0.0.0----代表没有IP地址,或代表所有IP地址6169.254.0.0/16----本地链路地址/自动私有地址

注意:该IP地址不能进行跨网段通讯----以太网环境VLSM----可变长子网掩码

思路:从主机位向网络位借位。

192.168.1.0/24

  1. 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 目的MACFFFF-FFFF-FFFF

交换机的转发原理

换机收到电信号后,将电信号转换为二进制,之后,截取到数据帧。

查看数据帧的源MAC地址,之后将该地址和数据进入的接口的对应关系记录在本地的MAC地址表--

-300s

之后,看数据帧中的目的MAC地址,基于目标MAC地址查询本地MAC地址表,如果表中存在记录关系,则按照记录进行转发;若表中无记录关系,则将进行洪泛(交换机将数据从除了进入的接口外的所有接口发送一遍)

交换机洪泛的三种情况遇到广播帧

遇到组播帧

遇到未知单播地址DHCP Offer报文---广播/单播

该报文中存在一个可用的IP地址给DHCP客户端。

应用层

DHCP OFFER(可用IP地址,网关,DNS,掩码)

传输层

UDP---67;目标68

网络层

IP协议---IP68.85.2.1----目的IP68.85.2.101

数据链路层

以太网协议---MAC:路由器;目的MAC00-16-D3-23-68-8A

DHCP Request报文---广播

应用层

DHCP Request

传输层

UDP---源端口:68;目标端口67

网络层

IP协议---IP0.0.0.0;目标IP地址:255.255.255.255

数据链路层

以太网协议---MAC00-16-D3-23-68-8A 目标MACFFFF-FFFF-FFFF

DHCP ack报文----广播/单播

应用层 DHCP ACK

应用层

DHCP ACK

传输层

UDP 67 68

网络层

IP -IP68.85.2.1----目的IP68.85.2.101

数据链路层

以太网协议---MAC:路由器;目的MAC00-16-D3-23-68-8A

DNS服务---域名解析协议URL---资源定界符,他和域名是有区别协议+网站的域名信息+文件所在路径

目的:通过域名获取对应的IP地址DNS端口号------53---TCP/UDP DNS查询过程

递归查询

迭代查询

应用层

DNS请求报文

传输层

UDP 源端口:随机;目标端口:53

网络层

IP IP地址:68.85.2.101 目的IP68.87.71.226

数据链路层

以太网封装---MAC:主机 目的MAC:网关设备

网络层

ARP协议---IP68.85.2.101;目的IP68.85.2.1

数据链路层

以太网协议---MAC:主机;目的MACFFFF-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:小明电脑;目的IPweb服务器

数据链路层

以太网封装---MAC源:小明;目的MAC---网关MAC

GET---请求读取一个web页面

POST---附加一个命名资源(web页面)PUT---请求存储一个web页面

应用层

HTTP应答报文---应答状态码 200---OK

传输层

TCP协议--源端口号:80;目的:请求方的随机数

网络层

IP协议---IPweb服务;目的IP:电脑

数据链路层

以太网封装---MACweb服务器;目的:下一跳设备的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/24192.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  --借用环回0IP地址

[r1]ip route-static 12.0.0.0 24 Serial 4/0/0  ----不写下一跳的原因在于,1、如果用下一跳方式书写,则需要递归路由;2、因为接口没有IP地址,故无法生成下一跳的直连路由。

在最后需要在双方设备补充上对端设备的静态路由信息,保障数据可以进行查表转发将环回接口IP地址配置为对端接口IP地址的同网段地址,且掩码为32

PPP----到点协议

PPP协议优点

相较于HDLCPPP协议具备良好的兼容性。统一标准协议(任何串行接口或串行线缆,只要能够支持全双工通讯,就可以支持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建立

1MRU值:在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

 GREMGRE

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 属性丢失,可能会引发环路问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

HCIP笔记 的相关文章

  • Golang编写的UDP客户端无法接收来自服务器的消息

    我写了一个Java客户端 它向广播地址发送消息 我还编写了一个Java服务器 它接受所有发送的消息并将消息发送回客户端 现在我想尝试在 Go 中做同样的事情 只是为了获得一些经验 服务器工作正常 正在接收消息并对 Java 客户端做出响应
  • UDP 数据包在交付时是否保证是完整的、具有实际意义的?

    众所周知 UDP 用户数据报协议 并不安全 因为用它发送的数据包的顺序可能不按顺序传送 甚至根本不按顺序传送 但是 如果发送了 UDP 数据包 该数据包中的信息在实际意义上 99 99 及以上 是否保证正确 在实际意义上 99 99 及以上
  • Python-UDP客户端

    我目前正在阅读Pythonbook https www nostarch com blackhatpython并遇到了以下示例 import socket target host 127 0 0 1 target port 80 creat
  • Java UDP中如何获取实际数据包大小`byte[]`数组

    这是我上一个问题的后续问题 Java UDP发送 接收数据包一一接收 https stackoverflow com questions 21866382 java udp send receive packet one by one 正如
  • NTP请求包

    我试图弄清楚我需要在 NTP 请求包中发送 客户端 什么才能从服务器检索 NTP 包 我正在 Cortex M3 Stellaris LM3S6965 上使用 LWIP 据我了解 我将收到 UDP 标头 然后收到具有不同时间戳的 NTP 协
  • 简单的udp代理解决方案

    我正在寻找可以代理我的 udp 数据包的解决方案 我有一个客户端向服务器发送 udp 数据包 它们之间的连接非常糟糕 导致大量数据包丢失 一种解决方案是使用一个新的代理服务器 它将所有数据包从客户端重定向到目标服务器 新的代理服务器与这两个
  • udp数据包被tcpdump捕获,但没有被套接字接收[关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我编写了一个 rawudp 程序 通过原始套接字发送 udp 数据包 按照网页http www tenouk com Module43a html h
  • 如果客户端在服务器之后启动,则 GStreamer v1.0 UDP 多播流无法正确解码

    我正在尝试使用 GStreamer 进行 UDP 多播屏幕流传输 我的投屏服务器应该在 Windows 上运行 and my 客户端应在 Linux 上运行 如果我在服务器之前启动客户端 一切都很好 问题是当我启动客户端并且服务器已经启动时
  • 接收来自 N 个客户端的响应,以回复通过 UDP 的广播请求

    我正在为特定类型的网络多媒体设备实现一种 IP 查找器 我想找出 LAN 中该类型的所有活动设备及其 IP 地址和其他详细信息 设备有自己的设备发现方式 其工作原理如下 客户端通过 UDP 通过 LAN 发送广播请求 目的端口号是固定的 作
  • 将 Docker 容器连接到网络接口/设备而不是 IP 地址

    经过仔细的研究 测试和摆弄 我只能找到通过从 IP 端口转发来将 Docker 容器连接到给定接口的方法 这可以通过添加来完成 p Host IP Host Port Container Port to a docker run命令 我有一
  • 致命错误:netinet/in.h:没有这样的文件或目录

    套接字编程 UDP 服务器 我正在尝试使用 UDP 服务器进行消息加密和解密 代码在这里 https www geeksforgeeks org message encryption decryption using udp server
  • Python UDP广播不发送

    我正在尝试从 Python 程序到两个 LabView 程序进行 UDP 广播 我似乎无法发送广播 我不确定我的套接字初始化错误在哪里 广播似乎足够简单 据我所知 其他电脑没有收到任何数据 另外 我将来还需要这个程序来接收来自其他电脑的数据
  • 提高UDP可靠性

    我正在构建一个基于 UDP 的小型服务器 服务器基于 Net并使用它自己的Socket类 我通过 ReceiveMessageFromAsync 和异步发送使用完成端口 我的问题是我失去了大约 5 10 的流量 现在我明白这是正常的 但是有
  • 为多线程 UDP 客户端执行“close ()”时套接字描述符未释放

    我在下面编写了 UDP 客户端 它基本上生成一个单独的线程来接收数据报 但是数据报仅在主线程中发送 现在 在 Linux 发行版上实例化 udpClient 1 UDP 客户端后按 ctrl D 实现退出循环 围绕 getline 调用 并
  • 视频流上的 TCP 与 UDP

    我刚从网络编程考试回来 他们问我们的问题之一是 如果您要传输视频 您会使用 TCP 还是 UDP 请解释一下存储视频和实时视频流 对于这个问题 他们只是希望得到一个简短的答案 TCP 用于存储视频 UDP 用于实时视频 但我在回家的路上想到
  • 为什么 SNMP 通常在 UDP 上运行而不是 TCP/IP 上?

    今天早上 工作中出现了大问题 因为 SNMP 陷阱没有 通过 因为 SNMP 是通过 UDP 运行的 我记得在大学网络课上 UDP 不能像 TCP IP 那样保证传输 维基百科说 SNMP 可以在 TCP IP 上运行 但 UDP 更常见
  • P2P网络游戏/应用程序:类似“战网”匹配服务器的不错选择

    我正在制作一个网络游戏 1v1 游戏中是 p2p 不需要游戏服务器 然而 为了让玩家能够 找到彼此 而不需要在另一种媒介中协调并输入IP地址 类似于网络游戏的现代时代 我需要有一个协调 匹配服务器 我无法使用常规网络托管 因为 客户端将使用
  • 为什么 UDP 服务器中只有一个套接字?

    我正在准备考试 发现了这个问题 典型的 UDP 服务器可以使用单个套接字来实现 解释一下为什么 对于 TCP 驱动的服务器 我发现创建了两个套接字 一个用于所有客户端访问服务器 另一个用于每个客户端的特定 套接字 用于服务器和客户端之间的进
  • 如何读取 UDP 连接直至超时?

    我需要读取 UDP 流量 直到超时 我可以通过在 UDPConn 上调用 SetDeadline 并循环直到出现 I O 超时错误来做到这一点 但这看起来很黑客 基于错误条件的流量控制 下面的代码片段看起来更正确 但并没有终止 在生产中 这
  • 错误号:11,资源暂时不可用

    我正在使用 c 套接字来实现可靠的 UDP 协议 我正在使用以下代码在等待确认的套接字上设置超时 我不确定为什么会收到 errno 11 资源暂时不可用 set timer for recv socket struct timeval tv

随机推荐

  • 【MongoDB】基于Docker的MongoDB replica set(副本集)更换节点

    之前搭的副本集 1主 1从 1投票 今天要进行把投票节点切换服务器 首先 在新服务器上启动mongodb服务 然后 在主节点上对集群配置进行更新 rs0 PRIMARY gt cfg rs conf rs0 PRIMARY gt cfg m
  • yolov5训练结果解析

    在每次训练之后 都会在runs train文件夹下出现一下文件 如下图 一 weights 包含best pt 做detect时用这个 和last pt 最后一次训练模型 二 confusion 1 混淆矩阵 混淆矩阵是对分类问题的预测结果
  • 【无标题】数组转化成tree

    在这里插入图片描述 父数组 father G1 G2 G3 G4 G5 子数组 son 1 2 3 4 5 数组转化成tree
  • java实现金额数字转换为中文大写

    import java io import java lang IllegalArgumentException public class ConvertNum 把金额阿拉伯数字转换为汉字表示 小数点后四舍五入保留两位 还有一种方法可以在转
  • 浅拷贝与深拷贝例题与思考

    title 浅拷贝与深拷贝 author hou wei date 2023 04 17 output html document knitr opts chunk set echo TRUE 问答题 0 请问你是如何理解 在 Python
  • sqlserver 批量快速插入数据

    先转换成DataTable 然后插入数据 1 使用最后再看看使用表值参数的效率 效率最高 首先先创建 表值特性类型的表 此表应该与转换后的datatable的列相同不然会出错 查看地方在 当前数据库下的 可编程性 类型 用户定义表类型 CR
  • 【分享】ST7920的LCD12864 Proteus仿真模型

    分享 ST7920的LCD12864 Proteus仿真模型 目前最新版本的是1 03 GitHub地址 https github com cdhigh lcd12864 st7920 proteus Proteus添加动态链接库文件 dl
  • 网站部署详细流程(包括域名,服务器的配置等)

    有很多做网页的前端后端小白都想把自己辛辛苦苦做出来的网站放到网上 让别人观摩观摩 可无奈技术有限 对于网站部署流程有些迷茫 在这里 我会告诉大家 如何将自己做出来的网站放到网上 首先 我们需要明白几个概念 备案 解析 然后 我们还要知道 应
  • 上传formData文件

    if config method get config file const data config data const formData new FormData Object keys data forEach key gt if A
  • QT的tableWidget数据存储到Excle

    目录 环境介绍 所需要的头文件 测试效果 TableWidget表格的内容 Excel表格内容 lt
  • Grub2启动项启动顺序修改

    关键点即 修改grub cfg 终端命令 sudo i 获取权限 chmod w boot grub grub cfg 给文件添加写入权限 gedit boot grub grub cfg 编辑文件内容 BEGIN etc grub d 3
  • 渗透测试-地基钓鱼篇-Cobalt Strike钓鱼(二十五)

    渗透测试 地基钓鱼篇 Cobalt Strike钓鱼 二十五 作者 大余 时间 2020 12 17 简介 渗透测试 地基篇 该篇章目的是重新牢固地基 加强每日训练操作的笔记 在记录地基笔记中会有很多跳跃性思维的操作和方式方法 望大家能共同
  • MTCNN实现流程

    MTCNN实现流程 文章 https arxiv org pdf 1604 02878 pdf code 1 mxnet上的实现 https github com Seanlinx mtcnn 2 tensorflow上的实现 https
  • linux 安装python3(亲测可用)

    首先安装python3所需的基础库 yum y install openssl devel bzip2 devel expat devel gdbm devel yum y install readline devel zlib devel
  • uniapp uni.requet()二次封装ts版

    uni app网络请求 uni app题拱了uni requet 方法 发起网络请求 uni request url https wwww xxxx cn api home list 仅为示例 并非真实接口地址 data text uni
  • 96-97-----JS基础-----DOM查询(二、三)

    一 代码 不难 用到时看一下DOM查询的相关方法即可
  • [零基础学C#] C#从小白到菜鸟 第5期 - 判断

    前言 上一期我们学习了常量和运算符 这一期我们就要开始学习语句块了 简单啊 本来这一期想讲判断和循环的 但是一起讲的话太多了 所以本期就只讲判断吧 学习编程一定要多学多练 多敲出来才能记得更牢 同样 本期的资源下载在底部 大家在学习过程中有
  • 解决Linux,Ubuntu下使用python包管理工具pip命令安装和下载包速度很慢、失败或者connection timeout等问题

    pip 是 Python 包管理工具 该工具提供了对Python 包的查找 下载 安装 卸载的功能 1 原因 pip命令在Linux系统下使用频率非常高 但是国内使用时常常会下载很慢 或者经常提醒连接超时 其主要问题就是它的默认服务器在国外
  • Beyond Compare 4 密钥解决办法

    修改注册表 1 在搜索栏中输入 regedit 打开注册表 2 Ctrl F搜索CacheId 3 删除项目CacheId 路径 HKEY CURRENT USER Software Scooter Software Beyond Comp
  • HCIP笔记

    HCIA复习 抽象语言 编码编码 二进制 二进制 电信号处理电信号 OSI参考模型 OSI RM 应用层 表示层 会话层 传输层 端口号 0 65535 1 1023是注明端口网络层 IP地址 数据链路层 物理层 ARP协议 正向ARP 通