HCIP【BGP协议(详解)】

目录

1 BGP协议产生背景

2 BGP协议特性

2.1 自治系统间路由传播

2.2 路由矢量协议

2.3 防环机制 

2.4 基于TCP传输

2.5 路由更新机制

2.6 丰富的路由属性

2.7 支持CIDR和路由聚合

2.8 路由过滤和策略控制

2.9 动态对等体功能

3 BGP基本术语

4 BGP规划问题

4.1 路由黑洞解决方案

5 BGP环路问题

5.1 EBGP水平分割(通过AS_PATH)

5.2 IBGP水平分割

6 BGP消息种类

6.1 BGP头部信息

6.2 数据包种类

7 BGP状态机

        7.1  Idle状态        

        7.2 Connect状态

        7.3 Active状态

        7.4 Opensent状态

        7.5 OpenConfirm状态

        7.6 Established状态


1 BGP协议产生背景

BGP(Border Gateway Protocol,边界网关协议)是一种用于自治系统间的动态路由协议,是一种外部网关协议。BGP的设计目标是提供一种可靠、稳定且灵活的路由信息交换机制,以适应复杂多变的网络环境。

自治系统AS:一组同一个管理机构进行管理,对外呈现统一选路策略的路由器的集合。随着互联网的复杂性增加,不同管理机构控制着各自的路由选择域,这些自治系统需要通过某种机制来交换路由信息,以确保数据能够高效、准确地在各个自治系统间传输。

自治系统编号:
       2字节AS编号:取值范围0-65535,其中0和65535保留
                                 公有AS:1-64511
                                 私有AS:64512-65535
       4字节AS编号:2的32次方的编号数量

2 BGP协议特性

2.1 自治系统间路由传播

[1]BGP专注于不同自治系统(AS)之间传递路由信息,确保跨AS的通信

[2]从其他AS接收的路由在本AS内部的扩散依赖于内部网关协议(IGP),如OSPF或者IS-IS

2.2 路由矢量协议

[1]作为路径矢量协议,BGP使用自治系统序列来衡量距离,每个AS在路由传播过程中添加自己的编号到AS_PATH属性中。

[2]路由的下一跳地址在进入AS时会更新为上一AS的出接口IP地址,而在AS内部传播时下一跳保持不变。

2.3 防环机制 

BGP通过路径矢量机制避免环路。当路由器收到一条路由时,会检查AS_PATH属性中是否包含自己的AS编号,若存在则丢弃该路由。

2.4 基于TCP传输

[1]BGP使用TCP协议(端口179)进行通信,确保数据传输的可靠性和稳定性。

[2]需要手动配置BGP邻居关系,以建立稳定的会话。

2.5 路由更新机制

[1]初始建立邻居关系时,BGP会发送完整的路由表。

[2]后续通信中,BGP仅发送增量更新,减少带宽占用和处理负担。

2.6 丰富的路由属性

BGP拥有多种属性(如LocalPref、MED、AS_PATH等),用于控制路由选择和优化网络流量分布。这些属性使得网络管理员能够灵活地实施路由策略,满足不同的网络需求。

2.7 支持CIDR和路由聚合

[1]BGP支持CIDR(无类域间路由),允许更灵活的IP地址分配和路由聚合。

[2]路由聚合功能可以减少路由表的规模,提高网络效率。

 2.8 路由过滤和策略控制

[1]BGP提供了强大的路由过滤和策略控制功能,允许网络管理员根据特定条件(如AS_PATH、前缀等)对路由进行过滤。

[2]通过路由策略,可以实现流量工程和负载均衡等高级网络管理功能。

2.9 动态对等体功能

BGP支持动态对等体功能,简化了配置和维护工作,能够自动接受来自指定网段内所有邻居的连接请求。

3 BGP基本术语

BGP Speaker:运行BGP协议的路由器称为BGP发言者

 BGP Peer:相互之间存在TCP连接、相互交换路由信息的BGP发言者之间互称为BGP对等体

 BGP对等体:BGP邻居可以直连,也可以非直连

【1】EBGP对等体:跨AS之间的邻居,一般情况下EBGP对等体是物理上直连的。                              BGP发言者从EBGP对等体获得的路由会向它所有BGP对等体通告(包括EBGP和IBGP)

【2】 IBGP对等体:同一个AS内部的邻居

 

4 BGP规划问题

规划不当容易产生路由黑洞

 BGP规划示意图

 路由黑洞产生原因:由于IBGP邻居之间没有运行BGP协议的路由器,无法获得BGP的路由;从而导致的数据包进入路由器被丢弃。

R2:peer 5.5.5.5 next-hop-local   :表示将下一跳地址设置为本地地址,即数据包将从本地设备发送到目标设备,而不是通过其他路由器转发。

4.1 路由黑洞解决方案

(1)BGP引入IGP(上图可以在R2和R5上把bgp引入ospf),这个方法有可能会造成引入BGP后,外部网络的路由太多了,内网的路由器承载不住。

(2)在黑洞路由器上配置目的网段的静态路由(不现实,比如:需要配置的目的网段太多的情况,累死网络管理员了)

(3)IBGP全连接   :IBGP防环机制:IBGP水平分割:从IBGP邻居学习到的路由不会传递给其他IBGP邻居

IBGP全连接(full-fresh)主要是邻居太多,手工配置邻居,会导致工作量比较大

(4)BGP路由反射器(无视IBGP的防环机制,可以减少邻居关系的数量)

 以R2作为反射器:

(5)BGP联盟(完美的避开了IBGP全连接的坑------IBGP水平分割限制)

 

5 BGP环路问题

5.1 EBGP水平分割(通过AS_PATH)

 通过AS_PATH属性防环,在学习到的路由中,若有本地AS号,则拒绝学习,防止环路

5.2 IBGP水平分割

当路由器从一个IBGP对等体学习到某条BGP路由时,它将不能再把这条路由通告给任何IBGP对等体。
造成问题:一些路由器无法学到去往其他AS的路由
解决方法:路由反射器和联盟

6 BGP消息种类

 6.1 BGP头部信息

 标记(Marker):该字段被保留下来用于解决协议兼容性问题,没有其他含义

长度(length):指示BGP报文的长度(字节数)

 类型(Type):该字段指示了BGP报文的类型,BGP5种数据包类

6.2 数据包种类

(1) open:用于建立BGP对等体之间的连接关系,正常收发一次即可;携带route-id;

Hold time:保持时间,该字段表示路由器在收到Keepalive消息或者Update消息之前等待的最长时间,默认180s,如果邻居双方的保持时间不一致,将以较短的时间作为双方可接收的保持时间。

可选参数长度:指示了BGP报文中可选参数的长度

可选参数:Open包中包含多个可选参数,主要用于宣告及协商BGP对等体的某些能力特征

(2)Keepalive:周期性的向BGP对等体发出Keepalive(周期保活)消息,用于保持连接的有效性,在默认情况下每60秒发送一条Keepalive消息,或者以已协商一致的保持时间的1/3为周期发送Keepalive消息。默认60s,超时180s。

 (3)Update:携带的是路由更新(删减、增加)信息

(4)notfication:当BGP检测到错误状态时,就向对等体发出notfication消息,之后BGP连接会立即被关闭(邻居关系结束了)用于通知对等体发生错误状态,并立即中断BGP连接。Notification消息会在检测到错误或异常情况时发送,如路由不一致、身份验证失败等。

(5)router-refresh:用于在改变路由策略后,要求对等体重新发送指定地址族的完整路由表信息;只有支持路由刷新能力的路由器才会响应router-refresh报文。

7 BGP状态机

 

7.1  Idle状态

  • 描述:BGP的初始状态。路由器等待管理员的命令来启动BGP会话。

  • 转换:当BGP进程启动后,路由器会尝试建立TCP连接,进入Connect状态。

7.2 Connect状态

  • 描述:路由器尝试与对等体建立TCP连接。

  • 转换

    • 如果TCP连接成功建立,路由器发送Open消息并进入Opensent状态。

    • 如果TCP连接尝试失败,路由器进入Active状态。

7.3 Active状态

  • 描述:路由器在多次尝试后未能成功建立TCP连接,会进入Active状态。

  • 转换

    • 如果TCP连接成功建立,路由器发送Open消息并进入Opensent状态。

    • 如果TCP连接尝试失败,路由器可能会重新进入Connect状态或保持在Active状态。

7.4 Opensent状态

  • 描述:路由器已发送Open消息,并等待对等体的Open消息响应。

  • 转换

    • 如果收到的Open消息没有错误,路由器发送Keepalive消息并进入Established状态。

    • 如果收到的Open消息有错误,路由器发送Notification消息并返回Idle状态。

7.5 OpenConfirm状态

  • 描述:当本地路由器收到对等体的Open消息后,进入OpenConfirm状态。路由器发送Keepalive消息以确认收到对等体的Open消息。

  • 转换:收到对等体的Keepalive消息后,路由器进入Established状态。

7.6 Established状态

  • 描述:BGP会话已成功建立,路由器可以交换Update、Keepalive和Notification消息。

  • 转换

    • 如果收到Keepalive消息或Update消息,路由器保持在Established状态。

    • 如果收到Notification消息或检测到错误,路由器返回Idle状态。

8 BGP邻居建立条件

8.1 IBGP建立邻居关系条件

(1)对方接口要有IP地址,TCP可达(需要具有到达对方IP地址的路由),建议使用环回地址来指定IBGP邻居,以提高邻居关系的稳定性和可靠性

(2)更新源地址必须与指定的邻居地址一致,需要修改更新源为环回地址;

命令:[R1-bgp]peer 2.2.2.2 connect-interface LoopBack 0

(3)IBGP邻居关系不需要直连

8.2 EBGP建立邻居关系

(1)对方接口有IP地址,TCP可达,并且需要直连

(2)可通过修改EBGP最大跳数来使EBGP非直连

(3)建议使用直连接口地址(物理地址)来指定邻居关系

(4)更新源地址必须和指定的邻居地址一致

PS:默认IBGP邻居间数据包的TTL值为255,EBGP邻居间TTL为1;故一旦使用环回建立ebgp邻居关系,必须修改TTL值,否则无法建立TCP三次连接             

命令:[r4-bgp]peer 5.5.5.5 ebgp-max-hop 2    //修改TTL值(最大跳数值)

9 BGP基本配置

9.1 启动BGP、创建BGP连接

[huawei]bgp 'as-number'     启动BGP
[huawei-bgp]router-id 'router-id'   配置router-id;(可选配置)
[huawei-bgp]peer 'ip-address' as-number 'as-number'    指定BGP对等体及AS号;
[huawei-bgp] address-family ipv4  unicast   创建BGP地址族,并进入相应地址族视图。----华三
[huawei-bgp-ipv4] peer ip-address enable   使能本地路由器与指定对等体交换路由信息的能力

9.2 优化BGP连接

指定建立TCP连接使用的源接口;
[huawei-bgp]peer 'ip-address' connect-interface ‘interface’ 指定EBGP对等体最大跳数;默认跳数是1,配置允许同非直接相连网络上的邻居建立EBGP连接   
[huawei-bgp]peer 'ip-address ebgp-max-hop 'hop-count'       

9.3 配置BGP生成路由

将本地路由发布到BGP路由表中:
[Router-bgp] network ip-address [ mask | mask-length ] [route-policy route-policy-name ]引入其它路由协议的路由:
[Router-bgp] import-route protocol [ { process-id | all-processes } [ allow-direct | med med-value | route-policy route-policy-name ]  ]

9.4 查看命令

BGP邻居表详细信息

[router]display bgp peer

 BGP路由表详细信息

[router]display bgp routing-table

 10 BGP路由选路原则

10.1 路由选路原则

 

  • 1、首先丢弃下一跳(NEXT_HOP)不可达的路由;

  • 2、优选Preferred-value值最大的路由;默认为0;Preferred-value:定义:首选项。 属性值:默认为0,取值范围是 0~65535,取值越大,优先级越高。 注意:H3C和华为的私有属性,

  • 3、优选本地优先级(LOCAL_PREF)最高的路由;

  • 4、依次选择network命令生成的路由、import-route命令引入的路由、聚合路由;

  • 5、优选AS路径(AS_PATH)最短的路由;

  • 6、依次选择ORIGIN属性为IGP、EGP、Incomplete的路由;

  • 7、优选MED值最低的路由;

  • 8、依次选择从EBGP、联盟EBGP、联盟IBGP、IBGP学来的路由;

  • 9、优选下一跳度量值最低的路由;度量值:一般指通过IGP协议到达下一跳地址的度量值

  • 10、优选CLUSTER_LIST长度最短的路由;

  • 11、优选ORIGINATOR_ID最小的路由;

  • 12、优选Router ID最小的路由器发布的路由。

  • 13、优选IP地址最小的对等体发布的路由。

 

10.2 配置负载分担时的路由选择

配置BGP负载分担后,满足如下所有条件的多条BGP路由会成为等价路由,进行负载分担:

  • 首选值(PrefVal)相同。

  • 本地优先级(Local_Pref)相同。

  • 都是聚合路由,或者都不是聚合路由。

  • AIGP值相同。

  • AS_Path属性完全相同。

  • Origin类型(IGP、EGP、Incomplete)相同。

  • MED(Multi_Exit Discriminator)值相同。

  • 都是EBGP路由或都是IBGP路由。配置maximum load-balancing eibgp命令后,BGP在选择最优VPN路由时忽略该条比较。

  • AS内部IGP的Metric相同。配置maximum load-balancing eibgp命令后,BGP在选择最优VPN路由时忽略该条比较。

此外,需要特别指出的是,携带标签的BGP路由与不携带标签的BGP路由即使满足上述条件,也不能形成负载分担。

11 BGP路由发布策略与路由过滤

11.1 路由发布策略

1. 只发布最优路由
  • 策略:当存在多条有效路由时,BGP发言者只将最优路由发布给对等体。如果配置了advertise-rib-active命令,则BGP发布IP路由表中的最优路由;否则,发布BGP路由表中的最优路由。

2. 只发布自己使用的路由
  • 策略:BGP发言者只把自己使用的路由发布给对等体。这意味着BGP不会发布那些它自己不使用的路由,以避免网络中的路由环路和不必要的流量。

3. EBGP路由的发布
  • 策略:BGP发言者会将从EBGP获得的路由发布给它的所有BGP对等体,包括EBGP对等体和IBGP对等体。这确保了跨自治系统的路由信息能够被广泛传播。

4. IBGP路由的发布
  • 策略:BGP发言者会将从IBGP获得的路由发布给它的EBGP对等体,但不会发布给它的IBGP对等体。这种机制避免了IBGP对等体之间的路由环路。

5. 会话建立后的路由发布
  • 策略:一旦BGP会话建立,BGP发言者将把满足上述条件的所有BGP路由发布给新对等体。之后,BGP发言者只在路由变化时,向对等体发布更新的路由。这减少了网络中的路由更新频率,提高了网络的稳定性。

6. 控制BGP路由信息的发布
  • 策略:可以通过配置BGP路由信息的发布策略来进一步控制路由的传播。这包括使用访问控制列表(ACL)、地址前缀列表、路由策略等对发布的路由信息进行过滤。

7. 延迟发布更新消息
  • 策略:在设备重启且BGP进程恢复后,可以配置BGP更新消息的延迟发布,以避免设备重启后路由信息不全导致的流量丢失。

8. 配置BGP日志和告警功能
  • 策略:通过配置BGP日志和告警功能,可以更好地监控和管理BGP路由的发布和接收情况。

11.2 BGP路由过滤

(1)通过路由策略过滤

(2)通过前缀地址列表过滤

(3)通过filter-policy进行过滤

 12 BGP路由属性

属性越多,控制BGP路由选路的方法越多;属性:描述一个对象的特征的一些信息

12.1 公认必须遵循属性

BGP发布的路由必须携带,所有路由器必须识别的属性;AS_path、next-hop、origin

此部分来自华为官方文档内容

  • AS_Path属性

    AS_Path属性按矢量顺序记录了某条路由从本地到目的地址所要经过的所有AS编号。在接收路由时,设备如果发现AS_Path列表中有本AS号,则不接收该路由,从而避免了AS间的路由环路。

    当BGP Speaker传播自身引入的路由时:

    • 当BGP Speaker将这条路由通告到EBGP对等体时,便会在Update报文中创建一个携带本地AS号的AS_Path列表。

    • 当BGP Speaker将这条路由通告给IBGP对等体时,便会在Update报文中创建一个空的AS_Path列表。

    当BGP Speaker传播从其他BGP Speaker的Update报文中学习到的路由时:

    • 当BGP Speaker将这条路由通告给EBGP对等体时,便会把本地AS编号添加在AS_Path列表的最前面(最左面)。收到此路由的BGP设备根据AS_Path属性就可以知道去目的地址所要经过的AS。离本地AS最近的相邻AS号排在前面,其他AS号按顺序依次排列。

    • 当BGP Speaker将这条路由通告给IBGP对等体时,不会改变这条路由相关的AS_Path属性。

 

  • Next_Hop属性

    Next_Hop属性记录了路由的下一跳信息。BGP的下一跳属性和IGP的有所不同,不一定就是邻居设备的IP地址。通常情况下,Next_Hop属性遵循下面的规则:

    • BGP Speaker在向EBGP对等体发布某条路由时,会把该路由信息的下一跳属性设置为本地与对端建立BGP邻居关系的接口地址。

    • BGP Speaker将本地始发路由发布给IBGP对等体时,会把该路由信息的下一跳属性设置为本地与对端建立BGP邻居关系的接口地址。

    • BGP Speaker在向IBGP对等体发布从EBGP对等体学来的路由时,并不改变该路由信息的下一跳属性。

 

  • Origin属性

    Origin属性用来定义路径信息的来源,标记一条路由是怎么成为BGP路由的。它有以下3种类型:

    • IGP:具有最高的优先级。通过network命令注入到BGP路由表的路由,其Origin属性为IGP。

    • EGP:优先级次之。通过EGP得到的路由信息,其Origin属性为EGP。

    • Incomplete:优先级最低。通过其他方式学习到的路由信息。比如BGP通过import-route命令引入的路由,其Origin属性为Incomplete。

12.2 公认任意属性

所有路由都识别,但不是必须携带的属性;local-perference、Atomic-aggregate

  • Local_Pref属性

    Local_Pref属性表明路由器的BGP优先级,用于判断流量离开AS时的最佳路由。当BGP的设备通过不同的IBGP对等体得到目的地址相同但下一跳不同的多条路由时,将优先选择Local_Pref属性值较高的路由。Local_Pref属性仅在IBGP对等体之间有效,不通告给其他AS。Local_Pref属性可以手动配置,如果路由没有配置Local_Pref属性,BGP选路时将该路由的Local_Pref值按缺省值100来处理。

  • Atomic-aggregate:自动聚合
    注:BGP可以自动聚合,也可以手动聚合

12.3 可选过度属性

路由器可以不识别该属性,但是会继续向下传递该属性

团体属性

团体属性(Community)用于标识具有相同特征的BGP路由,使路由策略的应用更加灵活,同时降低了维护管理的难度。

 公认团体属性

团体属性名称

团体属性号

说明

Internet

0(0x00000000)

设备在收到具有此属性的路由后,可以向任何BGP对等体发送该路由。

No_Advertise

4294967042(0xFFFFFF02)

设备收到具有此属性的路由后,将不向任何BGP对等体发送该路由。

No_Export

4294967041(0xFFFFFF01)

设备收到具有此属性的路由后,将不向AS外发送该路由。

No_Export_Subconfed

4294967043(0xFFFFFF03)

设备收到具有此属性的路由后,将不向AS外发送该路由,也不向AS内其他子AS发布此路由。

12.4 可选非过度属性

  • MED属性

    MED(Multi-Exit Discriminator)属性用于判断流量进入AS时的最佳路由,当一个运行BGP的设备通过不同的EBGP对等体得到目的地址相同但下一跳不同的多条路由时,在其它条件相同的情况下,将优先选择MED值较小者作为最佳路由。

    MED属性仅在相邻两个AS之间传递,收到此属性的AS一方不会再将其通告给任何其他第三方AS。MED属性可以手动配置,如果路由没有配置MED属性,BGP选路时将该路由的MED值按缺省值0来处理。

  • Originator_ID属性和Cluster_List属性

    Originator_ID属性和Cluster_List属性用于解决路由反射器场景中的环路问题clustor_list:集群列表
    originator_id:集群ID
    MED:多出口鉴别器:当一个AS有多个入口点时,用于判断流量进入AS时的最优路径。【属性值:network的路由,默认值为0;引入的路由,默认值为原IGP协议的cost; 值小的优先】

 

 13 BGP路由属性控制的选择以及控制方法

13.1 属性控制的选择建议

(1)如果希望影响下游所有路由器的路由选择,建议使用AS-PATH

(2)如果只希望影响本AS内部的路由器选择,建议使用Local-preference

(3)如果希望只影响下游某一个AS的路由器选择,建议使用MED

(4)如果希望只影响某一台路由器的路由选择,建议使用preferred-value

13.2 属性控制方法

路由策略:

14 BGP对等体

定义:BGP对等体组(peer Group)是一些具有某些相同属性的对等体的集合,我们可以通过对等体组简化配置 

特点:根据对等体所在的AS区域,可以将其分为IBGP,EBGP对等体组

配置IBGP对等体组:

示例图:

 相关命令:

[R2-bgp]group in internal
[R2-bgp]peer 3.3.3.3 group in
[R2-bgp]peer 4.4.4.4 group in
[R2-bgp]peer 5.5.5.5 group in
[R2-bgp]peer in connect-interface l0
[R2-bgp]peer in next-hop-local[R3-bgp]peer 2.2.2.2 as 200
[R3-bgp]peer 2.2.2.2 connect-interface l0
R4和R5上做和R3相同的配置

配置EBGP对等体组:

15 BGP路由聚合

目的是为了减少路由表规模

15.1 自动聚合

只能对引入的IGP的路由进行聚合;
只能将明细路由汇总到主类,这会造成路由黑洞;
华为设备默认关闭自动聚合功能;
只能在始发路由器上进行配置;
[r1-bgp]summary automatic 开启自动聚合
自动聚合后,会出现状态码S(suppressed),代表被抑制的路由信息不会再加表和传递了

15.2 手动聚合

可实现精确汇总:[R1-bgp]aggregate 172.16.0.0 16
可以在任何路由器上对BGP路由进行聚合;
出现问题:明细路由依然被通告,有形成环路的隐患;
解决方法:[R1-bgp]aggregate 172.16.0.0 16 detail-suppressed  //抑制明细路由
此命令不通过明细路由;

未完待续~~~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/75564.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VirtualBox 配置双网卡(NAT + 桥接)详细步骤

在 VirtualBox 中为 CentOS 虚拟机配置双网卡(NAT 桥接),使其既能访问外网(NAT),又能与宿主机(Windows 10)或局域网通信(桥接)。 步骤 1:关闭虚…

Upload-labs靶场通关

之前搭好了靶场,Upload-labs 靶场搭建 及一句话木马的原理与运用-CSDN博客 今天开始通关并写详细流程 Pass-1 来到靶场的第一关 先随便上传php 代码 点击上传 发现文件类型被限制了 方法1: 改文件后缀为合法文件(.jpg .png .gif&#xf…

[GN] Python3基本数据类型 -- 与C的差异

Python3 面向对象 文章目录 Python3的基本数据类型6个标准的数据类型NumbersStringListtupleSetsDictionaries Python运算符逻辑 运算符成员运算符身份运算符 Python3 数字Python3 序列序列切片序列相加序列相乘序列相关内置函数 Python3 列表访问列表的值更新列表删除列表元素…

MCP over MQTT:EMQX 开启物联网 Agentic 时代

前言 随着 DeepSeek 等大语言模型(LLM)的广泛应用,如何找到合适的场景,并基于这些大模型构建服务于各行各业的智能体成为关键课题。在社区中,支持智能体开发的基础设施和工具层出不穷,其中,Ant…

AI助力高效PPT制作:从内容生成到设计优化

随着人工智能技术的不断发展,AI在各个领域的应用日益普及,尤其是在文档和演示文稿的创建过程中。PowerPoint(PPT)作为最常用的演示工具之一,借助AI的技术手段,可以极大地提高制作效率并提升最终呈现效果。在…

学透Spring Boot — 009. Spring Boot的四种 Http 客户端

目录 常见的HttpClient Spring 提供的HttpClient RestTemplate Spring 提供的模板类 XXXTemplate RestTemplate的使用 RestTemplate的使用技巧 RestTemplate的问题 RestClient RestClinet的基本使用 RestClient的自动配置 RestClient 序列化对象 异常处理 onStatus …

leetcode117 填充每个节点的下一个右侧节点指针2

LeetCode 116 和 117 都是关于填充二叉树节点的 next 指针的问题,但它们的区别在于 树的类型 不同,117与 116 题类似,但给定的树是 普通二叉树(不一定完全填充),即某些节点可能缺少左或右子节点。 树的结构…

软考系统架构师 — 4 嵌入式软件

目录 4.1 考点分析 4.2 嵌入式微处理器 4.2.1嵌入式微处理器体系结构 5.2.2 嵌入式微处理器分类 4.2.3 多核处理器 4.3 嵌入式软件 4.4 嵌入式系统 4.4.1 嵌入式系统的组成 4.4.2 嵌入式系统分类 4.4.3 嵌入式数据库系统DBMS 4.4.4 嵌入式操作系统OS 4.4.5 嵌入式实…

RocketMQ 中的 ProducerManager 组件剖析

一、引言 在分布式系统的消息传递领域,RocketMQ 以其高性能、高可用性和强大的扩展性脱颖而出。ProducerManager 作为 RocketMQ 中的一个关键组件,在消息生产环节发挥着至关重要的作用。它负责管理消息生产者(Producer)的生命周期…

k8s进阶之路:本地集群环境搭建

概述 文章将带领大家搭建一个 master 节点,两个 node 节点的 k8s 集群,容器基于 docker,k8s 版本 v1.32。 一、系统安装 安装之前请大家使用虚拟机将 ubuntu24.04 系统安装完毕,我是基于 mac m1 的系统进行安装的,所…

深度学习数据集划分比例多少合适

在机器学习和深度学习中,测试集的划分比例需要根据数据量、任务类型和领域需求灵活调整。 1. 常规划分比例 通用场景 训练集 : 验证集 : 测试集 60% : 20% : 20% 适用于大多数中等规模数据集(如数万到数十万样本),平衡了训练数…

【TS学习】(15)分布式条件特性

在 TypeScript 中,分布式条件类型(Distributive Conditional Types) 是一种特殊的行为,发生在条件类型作用于裸类型参数(Naked Type Parameter) 时。这种特性使得条件类型可以“分布”到联合类型的每个成员…

NSSCTF [HGAME 2023 week1]simple_shellcode

3488.[HGAME 2023 week1]simple_shellcode 手写read函数shellcode和orw [HGAME 2023 week1]simple_shellcode (1) motalymotaly-VMware-Virtual-Platform:~/桌面$ file vuln vuln: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpret…

PostgreSQL的扩展(extensions)-常用的扩展-pg_dirtyread

PostgreSQL的扩展(extensions)-常用的扩展-pg_dirtyread pg_dirtyread 是 PostgreSQL 的一个特殊扩展,它允许读取已被删除但尚未被 VACUUM 清理的数据行,是数据恢复的重要工具。 原理: pg_dirtyread 通过直接访问表的…

linux3 mkdir rmdir rm cp touch ls -d /*/

Linux 系统的初始目录结构遵循 FHS(Filesystem Hierarchy Standard,文件系统层次标准),定义了每个目录的核心功能和存储内容。以下是 Linux 系统初始安装后的主要目录及其作用: 1. 核心系统目录 目录用途典型内容示例…

Bazel中的Symbol, Rule, Macro, Target, Provider, Aspect 等概念

学习Bazel ,就要学习Bazel 的规则定义, 弄清各个概念是重要的一个步骤。 在 Bazel 规则定义中,Symbol、Rule 和 Macro 是常见的概念。除此之外,Bazel 还有 Target、Provider、Aspect Repository、Package、 Workspace、 Configura…

深入探究 Hive 中的 MAP 类型:特点、创建与应用

摘要 在大数据处理领域,Hive 作为一个基于 Hadoop 的数据仓库基础设施,提供了方便的数据存储和分析功能。Hive 中的 MAP 类型是一种强大的数据类型,它允许用户以键值对的形式存储和操作数据。本文将深入探讨 Hive 中 MAP 类型的特点,详细介绍如何创建含有 MAP 类型字段的表…

基于Java的区域化智慧养老系统(源码+lw+部署文档+讲解),源码可白嫖!

摘 要 时代在飞速进步,每个行业都在努力发展现在先进技术,通过这些先进的技术来提高自己的水平和优势,区域化智慧养老系统当然不能排除在外。区域化智慧养老系统是在实际应用和软件工程的开发原理之上,运用Java语言、JSP技术以及…

关于JVM和OS中的指令重排以及JIT优化

关于JVM和OS中的指令重排以及JIT优化 前言: 这东西应该很重要才对,可是大多数博客都是以讹传讹,全是错误,尤其是JVM会对字节码进行重排都出来了,明明自己测一测就出来的东西,写出来误人子弟… 研究了两天&…