网络基础:BGP协议

BGP(边界网关协议,Border Gateway Protocol)是一种用于在不同自治系统(Autonomous Systems,AS)之间交换路由信息的路径向量协议。BGP是互联网的核心路由协议之一,负责管理和维护互联网范围内的路由信息,确保数据能够在不同网络之间正确传输。

AS(Autonomous Systems)自治系统

AS(Autonomous System,自治系统)是互联网中一个独立的路由域,由一个或多个网络组成,这些网络在路由策略和管理方面由一个单一的技术管理实体控制。每个自治系统都有一个唯一的自治系统号(ASN),用于在BGP(Border Gateway Protocol,边界网关协议)路由中标识该系统;ASN有16位和32位两种格式,是由IANA(Internet Assigned Numbers Authority)和RIR(Regional Internet Registries)两个互联网编号指派机构分配。

BGP在企业中的应用

1.企业内部通信:

企业通常有多个数据中心,使用BGP可以在这些数据中心之间高效地管理和路由流量。

大部分企业分支间采用BGP进行路由传递,不同的分支属于不同的AS,他们通过BGP进行路由交互。

2.企业与运营商之间的通信:

BGP可以根据企业的策略和需求在多个ISP之间分配流量,以优化性能和成本。

企业与运营商之间可以使用BGP进行路由交互,使得企业网络获得到达运营商网络的具体路由,运营商也可以获得到达企业内部的路由。

BGP 特征

BGP(Border Gateway Protocol,边界网关协议)具有许多独特的特征,使其成为互联网和大型企业网络中关键的路由协议。以下是BGP的一些主要特征:

①BGP是一个路径向量协议,这意味着它通过传递路由信息和路径属性来确定最佳路径。每条路由路径包含了到达目的地所经过的自治系统(AS)列表,这有助于避免路由循环。
②BGP主要用于自治系统(AS)之间的路由选择,即外部BGP(eBGP),但也可以在同一AS内部使用,即内部BGP(iBGP)。这使得BGP既能管理广域网(WAN)连接,也能优化内部网络的路由。
③BGP使用TCP(传输控制协议)端口179来建立和维护对等体之间的连接;这确保了可靠的传输和流量控制。
④BGP采用增量更新机制,只在路由信息发生变化时交换更新,而不是周期性地重新发送所有路由信息。这减少了网络带宽的占用和处理负担。
BGP邻居关系

运行BGP的路由器被称为BGP发言者(BGP Speaker)或BGP路由器;相互交换消息的BGP发言者之间互称为BGP对等体(BGP Peer)一个BGP邻居也称为一个BGP对等体;对等体之间建立TCP会话;必须在双方进行对等IP地址的配置。

如图中所示R3与R4、R4与R5为对等体;位于不同AS的对等体为EBGP对等体,即R3与R4为EBGP对等体;位于同一个AS的BGP对等体为IBGP对等体,即R4和R5为IBGP对等体。位于BGP发言者从EBGP对等体获得的路由会向它所有BGP对等体通告(包括EBGP和IBGP);但是从IBGP对等体获得的路由不会向它的IBGP对等体发布。

BGP的表项
1.BGP邻居表

在BGP(边界网关协议)中,邻居表(Neighbor Table)是一个包含所有BGP对等体(邻居)信息的数据结构。BGP对等体是通过BGP协议建立和维护连接的路由器,它们交换路由信息,以实现网络间的路由选择。邻居表记录了每个邻居的状态和相关信息。

查看BGP邻居表
Cisco
show ip bgp neighbors
Huawei
display bgp peer
H3C
display bgp peer
输出示例:
Router# show ip bgp neighbors
BGP neighbor is 192.0.2.1, remote AS 65002, external linkBGP version 4, remote router ID 192.0.2.1BGP state = Established, up for 00:12:34Last read 00:00:12, hold time is 180, keepalive interval is 60 secondsNeighbor capabilities:Route refresh: advertised and received(new)Address family IPv4 Unicast: advertised and received...
2.BGP转发表

BGP(边界网关协议)转发表(Forwarding Information Base,FIB)是路由器用来决定数据包转发路径的数据结构。

Cisco
show ip bgp
Huawei
display bgp routing-table
H3C
display bgp routing-table
示例输出:
[Huawei] display bgp routing-tableBGP local router ID : 192.0.2.1Paths:   2 available, 2 best
​BGP routing table entry information of 192.0.2.0/24:Network            NextHop         MED        LocPrf    PrefVal Path/Ogn192.0.2.0/24       192.0.2.2       0          100       0       65002 i198.51.100.0/24    192.0.2.3       0          100       0       65003 i

Network: 目标网络前缀。

NextHop: 下一跳的IP地址。

MED(Multi-Exit Discriminator): 多出口鉴别器;MED是一个可选的BGP属性,用于告知邻接自治系统(AS)该如何选择进入的路由路径;它通常在多个路径可供选择时,用于表示到达目的地的相对优先级,数值越小的路径优先级越高。

LocPrf(Local Preference): 本地优先级;本地属性,用于在同一个AS内选择最佳出口路由,它只在本地AS内部传播,不向其他AS传播;它只在本地AS内部传播,不向其他AS传播。

PrefVal(Preference Value): 优选值;PrefVal通常是设备厂商特有的实现,用于进一步细化和优先化路由选择;它在路由选择过程中可能结合其他属性来决定最终的最佳路径。

Path/Ogn: 路由路径和起源信息;Path:表示BGP路由路径中的自治系统(AS)路径列表,它包含了从源AS到目的地的所有经过的AS。Origin:描述路由信息的起源方式。常见的起源值包括:

i(IGP):路由来自内部网关协议(如OSPF)。
e(EGP):路由来自外部网关协议(EGP)。
?(incomplete):路由的起源不明确,可能通过手动配置或其他方式引入。

3.IP路由表

BGP(边界网关协议)路由表(Routing Table)包含了BGP学习到的所有路由信息,用于决定数据包的转发路径。

BGP的消息类型

BGP报文的通用头部

所有BGP报文都有一个固定长度的头部,头部长度为19字节。头部结构为:

+--------------------------------------------------+
| Marker (16 bytes)                                |
+--------------------------------------------------+
| Length (2 bytes)                                 |
+--------------------------------------------------+
| Type (1 byte)                                    |
+--------------------------------------------------+

Marker:16字节的标记字段,用于BGP对等体验证。通常设置为全1。

Length:2字节的字段,表示整个BGP报文的长度,范围为19到4096字节。

Type:1字节的字段,表示报文类型(1: OPEN, 2: UPDATE, 3: NOTIFICATION, 4: KEEPALIVE, 5: ROUTE-REFRESH)。

说完通用头部后接着来说一下上述5个报文的相关格式:

①Open报文:用于建立BGP对等体之间的连接,并交换初始化参数,其结构为:
+--------------------------------------------------+
| Version (1 byte)                                 |
+--------------------------------------------------+
| My Autonomous System (2 bytes)                   |
+--------------------------------------------------+
| Hold Time (2 bytes)                              |
+--------------------------------------------------+
| BGP Identifier (4 bytes)                         |
+--------------------------------------------------+
| Optional Parameters Length (1 byte)              |
+--------------------------------------------------+
| Optional Parameters (variable)                   |
+--------------------------------------------------+

Version:BGP协议版本号(当前为4)。

My Autonomous System:发送方的AS号。

Hold Time:保持时间,以秒为单位。

BGP Identifier:发送方的BGP标识符(通常是路由器ID)。

Optional Parameters Length:可选参数的长度。

Optional Parameters:可选参数(如认证信息等)。

2. UPDATE 报文:用于通告新的路由信息或撤销(Withdraw)之前的路由信息,其结构为:
+--------------------------------------------------+
| Withdrawn Routes Length (2 bytes)                |
+--------------------------------------------------+
| Withdrawn Routes (variable)                      |
+--------------------------------------------------+
| Total Path Attribute Length (2 bytes)            |
+--------------------------------------------------+
| Path Attributes (variable)                       |
+--------------------------------------------------+
| Network Layer Reachability Information (variable)|
+--------------------------------------------------+

Withdrawn Routes Length:撤销路由的长度。

Withdrawn Routes:被撤销的路由前缀列表。

Total Path Attribute Length:路径属性的总长度。

Path Attributes:路径属性列表(如AS路径、下一跳等)。

Network Layer Reachability Information:新的路由前缀。

3. NOTIFICATION 报文:用于通告错误条件并终止BGP会话,其结构为:
+--------------------------------------------------+
| Error Code (1 byte)                              |
+--------------------------------------------------+
| Error Subcode (1 byte)                           |
+--------------------------------------------------+
| Data (variable)                                  |
+--------------------------------------------------+

Error Code:错误代码(如消息头错误、OPEN消息错误等)。

Error Subcode:错误子代码(具体错误类型)。

Data:可选的附加错误信息。

4. KEEPALIVE 报文:用于保持BGP会话的存活,防止会话超时,报文结构:
(仅包含通用头部,没有额外的数据)
5. ROUTE-REFRESH 报文用于请求对等体重新发送其全部路由信息,报文结构:
+--------------------------------------------------+
| AFI (2 bytes)                                    |
+--------------------------------------------------+
| Reserved (1 byte)                                |
+--------------------------------------------------+
| SAFI (1 byte)                                    |
+--------------------------------------------------+

AFI(Address Family Identifier):地址族标识符。

Reserved:保留字段(必须为0)。

SAFI(Subsequent Address Family Identifier):后续地址族标识符。

AFI(Address Family Identifier,地址族标识符)和SAFI(Subsequent Address Family Identifier,后续地址族标识符)是BGP协议中用于区分不同类型的网络地址族的标识符。这两个标识符用于扩展BGP的功能,使其能够支持多种不同的网络协议和地址类型,如IPv4、IPv6、MPLS等。

常见的AFI值:
1:IPv4
2:IPv6
25:L2VPN(Layer 2 VPN)

常见的SAFI值:

1:Unicast
2:Multicast
4:MPLS Labels
65:VPNv4 Unicast
128:L2VPN

BGP对等体状态

以下是BGP状态的表格,详细描述了每个状态及其含义:

状态描述操作
Idle初始状态或发生错误后的状态。初始化BGP资源和数据结构。如果配置了定时器,将等待定时器超时后再次尝试连接。
Connect尝试与对等体建立TCP连接。发送TCP连接请求。如果连接成功,进入OpenSent状态;如果连接失败,进入Active状态。
Active连接尝试失败后重新尝试。继续尝试与对等体建立TCP连接。如果连接成功,进入OpenSent状态;如果连接再次失败,则等待定时器超时。
OpenSent已发送OPEN报文,等待对等体的OPEN报文。发送OPEN报文,等待对等体的响应。如果接收到有效的OPEN报文,进入OpenConfirm状态;如果失败,进入Idle状态。
OpenConfirm已收到对等体的OPEN报文,等待KEEPALIVE报文确认会话。等待KEEPALIVE报文确认会话。如果接收到KEEPALIVE报文,进入Established状态;如果失败,进入Idle状态。
EstablishedBGP会话建立成功,可以交换路由信息。BGP会话成功建立,可以交换UPDATE、KEEPALIVE和NOTIFICATION报文,进行路由信息的更新和维护。

具体的BGP对等体状态转换如下所示:

①Idle:这是BGP会话的初始状态,或者发生错误后的状态;在该状态下,BGP会话还未开始,或者正在重新开始。

②Connect:在BGP会话开始后,尝试与对等体建立TCP连接。在这个状态下,BGP开始与对等体进行TCP三次握手。如果连接成功,进入OpenSent状态;如果连接失败,进入Active状态。

③Active:Connect状态下尝试连接失败,BGP会进入Active状态,继续尝试与对等体建立连接,如果连接成功,进入OpenSent状态;如果连接再次失败,则等待定时器超时。

④OpenSent:BGP已经发送了OPEN报文,并等待对等体的OPEN报文作为响应;如果接收到有效的OPEN报文,进入OpenConfirm状态;如果失败,进入Idle状态。

⑤OpenConfirm:BGP已经收到对等体的OPEN报文,并等待KEEPALIVE报文以确认会话;如果接收到KEEPALIVE报文,进入Established状态;如果失败,进入Idle状态。

⑥Established:BGP会话成功建立,可以交换UPDATE、KEEPALIVE和NOTIFICATION报文,进行路由信息的更新和维护。

通过了解BGP状态及其转移过程,可以更好地监控和管理BGP会话,确保路由信息的有效传递和网络的稳定运行。

下图为BGP对等体简历的流程图:

何时使用BGP协议:

BGP(边界网关协议)主要用于大型网络和复杂网络环境中的路由选择和管理。以下是一些具体的场景和情况,说明何时使用BGP协议:

1. 多个自治系统(AS)之间的路由交换

场景:

  • 互联网服务提供商(ISP)之间的路由交换。

  • 大型企业与多个ISP的连接。

描述:

BGP用于在不同自治系统(AS)之间交换路由信息,以实现全球互联网的互联互通。每个AS可能由一个或多个网络运营商或大型企业网络组成,BGP能够管理这些AS之间的路由选择和策略。

2. 多宿主(Multihoming)

场景:

  • 企业网络连接到多个ISP,以提高冗余性和可靠性。

描述:

多宿主是一种网络设计,其中一个网络通过多个连接与多个ISP相连。使用BGP,企业可以动态地管理从不同ISP接收的路由信息,并根据流量需求和策略选择最佳的出口路径。

3. 复杂的路由策略和路径选择

场景:

  • 企业需要根据特定的业务需求和策略来控制数据流量的路径选择。

描述:

BGP支持复杂的路由策略和路径选择,例如:

  • 优先选择某些路由路径(使用Local Preference)。

  • 控制进入和离开AS的流量路径(使用MED、AS路径预置等)。

  • 根据业务需求和网络性能优化流量分布。

4.虚拟专用网(VPN)

场景:

  • 使用MPLS或IPsec等技术实现企业内部网络的虚拟专用网连接。

描述:

BGP可以用于管理MPLS VPN和其他类型的VPN,帮助企业建立和维护跨越多个站点和网络提供商的私有网络连接。

6. 负载均衡和流量工程

场景:

  • 需要根据流量负载和网络性能进行流量工程和负载均衡的企业。

描述:

通过BGP,可以实现跨多个连接和路径的流量工程和负载均衡。例如,通过调整BGP的属性,可以控制流量分布和优化网络性能。

示例1:企业多宿主

一家企业希望提高其互联网连接的可靠性和冗余性,因此它连接到两个ISP,并使用BGP来管理这两个连接。BGP允许企业根据不同的业务需求和网络性能选择最佳的出口路径,并在其中一个ISP连接中断时自动切换到另一个ISP。

示例2:ISP之间的互联

两个ISP希望互相交换路由信息,以确保它们的客户能够通过对方的网络访问全球互联网。它们使用BGP在各自的AS之间交换路由信息,确保流量能够有效地传输。

示例3:跨区域网络

一家跨国企业在多个地区拥有分支机构,为了确保各分支机构之间的高效通信,企业使用BGP在其全球网络中管理路由选择,优化跨区域的数据传输路径。

BGP的基本配置

BGP(边界网关协议)的基本配置涉及设置自治系统(AS)号、配置BGP邻居(对等体),并应用基本的路由策略。以下是如何在Cisco、Huawei和H3C设备上进行BGP基本配置的示例。

1.Cisco设备上的BGP基本配置

步骤1:进入BGP配置模式(本地AS号)

router bgp <local-AS-number>

步骤2:配置BGP邻居(配置邻居的IP地址和邻居的自治系统号)

neighbor <neighbor-IP-address> remote-as <neighbor-AS-number>

步骤3:通告网络

network <network-IP-address> mask <subnet-mask>
完整示例

这个拓扑图中包含两个自治系统(AS),AS 65100 和 AS 65000。R1 位于 AS 65100,R2 和 R3 位于 AS 65000。R1 和 R2 之间通过 WAN 链接进行 eBGP 对等体关系,而 R2 和 R3 之间通过 LAN 链接进行 iBGP 对等体关系。

R1配置:

①接口配置

! 配置接口IP地址
interface Ethernet0/0ip address 209.165.202.129 255.255.255.252no shutdownexit

②配置本地的AS号与BGP邻居:

! 配置本地AS号
router bgp 65100
bgp log-neighbor-changes! 配置BGP邻居
neighbor 209.165.202.130 remote-as 65000
​
! 通告本地网络
network 209.165.202.128 mask 255.255.255.252
R2配置:

①配置接口:

interface Ethernet0/0ip address 209.165.202.130 255.255.255.252no shutdown
​
interface Ethernet0/1ip address 172.16.23.2 255.255.255.248no shutdown

②BGP配置

! 配置BGP
router bgp 65000bgp log-neighbor-changes
​
! 配置与Router R1的BGP邻居关系
neighbor 209.165.202.129 remote-as 65100
​
! 配置与Router R3的BGP邻居关系
neighbor 172.16.23.3 remote-as 65000
​
! 通告本地网络
network 172.16.23.0 mask 255.255.255.248
network 209.165.202.128 mask 255.255.255.252
R3配置:

①接口配置

interface Ethernet0/0ip address 172.16.23.3 255.255.255.248no shutdown

②BGP配置

! 配置BGP
router bgp 65000bgp log-neighbor-changes
​
! 配置与Router R2的BGP邻居关系
neighbor 172.16.23.2 remote-as 65000
​
! 通告本地网络
network 172.16.23.0 mask 255.255.255.248

bgp log-neighbor-changes 是一个用于BGP配置的命令,它的主要作用是记录BGP邻居状态的变化。当BGP邻居关系发生任何变化时,例如建立、断开连接、重新建立连接等,这个命令会将这些事件记录到设备的日志中。记录的日志信息通常会存储在设备的系统日志中。具体存储位置和访问方式可能因设备厂商和配置而异。以下是一些常见的存储位置和访问方法:

Cisco

缓冲区日志

show logging

终端日志

terminal monitor
Huawei

查看缓冲区日志

display logbuffer

查看实时日志

terminal logging

另外,BGP通告的网段必须存在于本地路由表中,并且要精准通告。

验证配置

查看BGP简要信息:

show ip bgp summary

查看BGP邻居信息:

show ip bgp neighbors

2.HuaWei设备上的BGP基本配置

R1配置

配置接口->配置BGP->通告网络->保存配置

[Huawei-R1] interface GigabitEthernet0/0/0
[Huawei-R1-GigabitEthernet0/0/0] ip address 209.165.202.129 255.255.255.252
[Huawei-R1-GigabitEthernet0/0/0] undo shutdown
[Huawei-R1-GigabitEthernet0/0/0] quit
​
[Huawei-R1] bgp 65100
[Huawei-R1-bgp] peer 209.165.202.130 as-number 65000
[Huawei-R1-bgp] network 209.165.202.128 255.255.255.252
[Huawei-R1-bgp] quit
​
[Huawei-R1] save

R2配置

配置接口IP地址->配置BGP邻居->通告网络

[Huawei-R2] interface GigabitEthernet0/0/0
[Huawei-R2-GigabitEthernet0/0/0] ip address 209.165.202.130 255.255.255.252
[Huawei-R2-GigabitEthernet0/0/0] undo shutdown
[Huawei-R2-GigabitEthernet0/0/0] quit
​
[Huawei-R2] interface GigabitEthernet0/0/1
[Huawei-R2-GigabitEthernet0/0/1] ip address 172.16.23.2 255.255.255.248
[Huawei-R2-GigabitEthernet0/0/1] undo shutdown
[Huawei-R2-GigabitEthernet0/0/1] quit
​
[Huawei-R2] bgp 65000
[Huawei-R2-bgp] peer 209.165.202.129 as-number 65100
[Huawei-R2-bgp] peer 172.16.23.3 as-number 65000
[Huawei-R2-bgp] network 209.165.202.128 255.255.255.252
[Huawei-R2-bgp] network 172.16.23.0 255.255.255.248
[Huawei-R2-bgp] quit
​
[Huawei-R2] save
R3配置
[Huawei-R3] interface GigabitEthernet0/0/0
[Huawei-R3-GigabitEthernet0/0/0] ip address 172.16.23.3 255.255.255.248
[Huawei-R3-GigabitEthernet0/0/0] undo shutdown
[Huawei-R3-GigabitEthernet0/0/0] quit
​
[Huawei-R3] bgp 65000
[Huawei-R3-bgp] peer 172.16.23.2 as-number 65000
[Huawei-R3-bgp] network 172.16.23.0 255.255.255.248
[Huawei-R3-bgp] quit
​
[Huawei-R3] save
验证配置

查看BGP邻居

display bgp peer

查看BGP路由表

[Huawei-R1] display bgp routing-table

3.H3C设备上的BGP基本配置

R1配置:

[R1] interface GigabitEthernet0/0
[R1-GigabitEthernet0/0] ip address 209.165.202.129 255.255.255.252
[R1-GigabitEthernet0/0] undo shutdown
[R1-GigabitEthernet0/0] quit
​
[R1] bgp 65100
[R1-bgp] peer 209.165.202.130 as-number 65000
[R1-bgp] network 209.165.202.128 255.255.255.252
[R1-bgp] quit
​
[R1] save

R2配置:

[R2] interface GigabitEthernet0/0
[R2-GigabitEthernet0/0] ip address 209.165.202.130 255.255.255.252
[R2-GigabitEthernet0/0] undo shutdown
[R2-GigabitEthernet0/0] quit
​
[R2] interface GigabitEthernet0/1
[R2-GigabitEthernet0/1] ip address 172.16.23.2 255.255.255.248
[R2-GigabitEthernet0/1] undo shutdown
[R2-GigabitEthernet0/1] quit
​
[R2] bgp 65000
[R2-bgp] peer 209.165.202.129 as-number 65100
[R2-bgp] peer 172.16.23.3 as-number 65000
[R2-bgp] network 209.165.202.128 255.255.255.252
[R2-bgp] network 172.16.23.0 255.255.255.248
[R2-bgp] quit
​
[R2] save
R3配置
[R3] interface GigabitEthernet0/0
[R3-GigabitEthernet0/0] ip address 172.16.23.3 255.255.255.248
[R3-GigabitEthernet0/0] undo shutdown
[R3-GigabitEthernet0/0] quit
​
[R3] bgp 65000
[R3-bgp] peer 172.16.23.2 as-number 65000
[R3-bgp] network 172.16.23.0 255.255.255.248
[R3-bgp] quit
​
[R3] save

查看BGP邻居表:

[R1] display bgp peer

查看BGP路由表:

[R1] display bgp routing-table

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

MySQL安全加固及等保测评

登录后复制 Mysql基础命令 create USER new_userlocalhost IDENTIFIED BY password; //创建用户 alter user root% identified with mysql_native_password by ********; //修改密码 rename user root% to root192.168.1.1; //重命名 flush privileges; …

Java面试题--JVM大厂篇之深入解析G1 GC——革新Java垃圾回收机制

目录 引言: 正文&#xff1a; 一、G1 GC的区域划分及其作用 1. 伊甸园区&#xff08;Eden Region&#xff09; 2. 幸存者区&#xff08;Survivor Region&#xff09; 3. 老年代区&#xff08;Old Generation Region&#xff09; 二、区域划分的优势: 三、图片解析: 结…

昇思25天学习打卡营第20天|LSTM+CRF序列标注

学AI还能赢奖品&#xff1f;每天30分钟&#xff0c;25天打通AI任督二脉 (qq.com) LSTMCRF序列标注 概述 序列标注指给定输入序列&#xff0c;给序列中每个Token进行标注标签的过程。序列标注问题通常用于从文本中进行信息抽取&#xff0c;包括分词(Word Segmentation)、词性标…

Python | Leetcode Python题解之第220题存在重复元素III

题目&#xff1a; 题解&#xff1a; class Solution(object):def containsNearbyAlmostDuplicate(self, nums, k, t):from sortedcontainers import SortedSetst SortedSet()left, right 0, 0res 0while right < len(nums):if right - left > k:st.remove(nums[left]…

D - Go Stone Puzzle(abc361)

分析&#xff1a;因为n很小&#xff0c;可以逐一搜索&#xff0c;用一个队列将每种情况列出来&#xff0c;用bfs寻找从s到t的最短路径 #include <bits/stdc.h> using namespace std; int n; string s, t; map<string, int> dis; void bfs() { dis[s] 0; …

RocketMQ NettyRemotingServer、NettyRemotingClient 实例化、初始化、启动源码解析

&#x1f52d; 嗨&#xff0c;您好 &#x1f44b; 我是 vnjohn&#xff0c;在互联网企业担任后端开发&#xff0c;CSDN 优质创作者 &#x1f4d6; 推荐专栏&#xff1a;Spring、MySQL、Nacos、Java&#xff0c;后续其他专栏会持续优化更新迭代 &#x1f332;文章所在专栏&#…

【5G VoNR】VoNR流程简述

博主未授权任何人或组织机构转载博主任何原创文章&#xff0c;感谢各位对原创的支持&#xff01; 博主链接 本人就职于国际知名终端厂商&#xff0c;负责modem芯片研发。 在5G早期负责终端数据业务层、核心网相关的开发工作&#xff0c;目前牵头6G技术研究。 博客内容主要围绕…

go-redis源码解析:如何实现sentinel高可用

go-redis里&#xff0c;sentinel只用来获取master和从节点的ip地址&#xff0c;在获取master和replica节点ip时&#xff0c;如果sentinel不可用&#xff0c;那么会换其他的sentinel重试&#xff0c;并将可用的sentinel换到第一个 1. 用于获取master节点 先通过读锁获取c.senti…

模板进阶:非类型模板参数,类模板特化,模板的编译分离

1. 非类型模板参数 模板参数分类类型形参与非类型形参。 类型形参即&#xff1a;出现在模板参数列表中&#xff0c;跟在class或者typename之类的参数类型名称。 非类型形参&#xff0c;就是用一个常量作为类(函数)模板的一个参数&#xff0c;在类(函数)模板中可将该参数当成常…

【Unity数据交互】如何Unity中读取Ecxel中的数据

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 专栏交流&#x1f9e7;&…

2024/7/7周报

文章目录 摘要Abstract文献阅读题目问题本文贡献问题描述图神经网络Framework实验数据集实验结果 深度学习MAGNN模型相关代码GNN为什么要用GNN&#xff1f;GNN面临挑战 总结 摘要 本周阅读了一篇用于多变量时间序列预测的多尺度自适应图神经网络的文章&#xff0c;多变量时间序…

Vulkan 学习(1)---- Vulkan 基本概念和发展历史

目录 Vulkan及其演化史Vulkan 基本概念基本术语 Vulkan 的原理Vulkan应用程序Vulkan的编程模型硬件初始化窗口展示表面资源设置流水线设置描述符和描述符缓冲池基于SPIR-V的着色器流水线管理指令的记录队列的提交 Vulkan及其演化史 目前主流的图形渲染API有OpenGL、OpenGL ES、…

ROS——多个海龟追踪一个海龟实验

目标 通过键盘控制一个海龟&#xff08;领航龟&#xff09;的移动&#xff0c;其余生成的海龟通过监听实现追踪定期获取领航龟和其余龟的坐标信息&#xff0c;通过广播告知其余龟&#xff0c;进行相应移动其余龟负责监听 疑惑点&#xff08;已解决&#xff09; int main(int…

【感谢告知】本账号内容调整,聚焦于Google账号和产品的使用经验和问题案例分析

亲爱的各位朋友&#xff1a; 感谢您对本账号的关注和支持&#xff01; 基于对朋友们需求的分析和个人兴趣的转变&#xff0c;该账号从今天将对内容做一些调整&#xff0c;有原来的内容改为Google&#xff08;谷歌&#xff09;账号和产品的使用经验&#xff0c;以及相关问题的…

判断是否为完全二叉树

目录 分析 分析 1.完全二叉树的概念&#xff1a;对于深度为K的&#xff0c;有n个结点的二叉树&#xff0c;当且仅当其每一个结点都与深度为K的满二叉树中编号从1至n的结点一一对应时称之为完全二叉树。 要注意的是满二叉树是一种特殊的完全二叉树。 2.思路&#xff1a;可以采…

Redis源码整体结构

一 前言 Redis源码研究为什么先介绍整体结构呢?其实也很简单,作为程序员的,要想对一个项目有快速的认知,对项目整体目录结构有一个清晰认识,有助于我们更好的了解这个系统。 二 目录结构 Redis源码download到本地之后,对应结构如下: 从上面的截图可以看出,Redis源码一…

pdf怎么转换成图片格式文件,pdf文档怎么转换成图片格式

在数字化时代&#xff0c;pdf文件转换成图片格式是一种常见的操作&#xff0c;无论是在工作还是日常生活中&#xff0c;我们总会遇到需要将pdf文件转换为图片的需求。这可能是因为图片格式更易于分享、展示或编辑。那么&#xff0c;如何高效地将pdf转换成图片呢&#xff1f;本文…

C++初学者指南-4.诊断---未定义行为检测器

C初学者指南-4.诊断—未定义行为检测器 未定义行为检测器(UBSAN) 适用编译器&#xff1a;clang,g在运行时检测许多类型的未定义行为 解引用空指针从未对齐的指针读取整数溢出被0除 … 在代码中加入额外的指令:在调试构建中增加运行时约25% 示例&#xff1a;有符号整形溢出 …

RabbitMq - Java客户端基础【简单案例 +Work模型】

目录 1、前置知识 1.1、AMQP怎么理解 1.2、Spring AMQP是什么 1.3、为什么要了解Spring-AMQP&#xff1f; 2、使用Spring-AMQP实现一个发消息案例 3、Work模型 问题&#xff1a; 优化&#xff1a; 小结&#xff1a;Work模型的使用&#xff1a; 1、前置知识 1.1、AMQP怎…

【论文阅读】-- Visual Traffic Jam Analysis Based on Trajectory Data

基于轨迹数据的可视化交通拥堵分析 摘要1 引言2 相关工作2.1 交通事件检测2.2 交通可视化2.3 传播图可视化 3 概述3.1 设计要求3.2 输入数据说明3.3 交通拥堵数据模型3.4 工作流程 4 预处理4.1 路网处理4.2 GPS数据清理4.3 地图匹配4.4 道路速度计算4.5 交通拥堵检测4.6 传播图…