百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

H3C MSR系列路由器EAA监控策略配置举例

zhezhongyun 2025-06-10 04:06 37 浏览

1 简介

本文档介绍使用EAA监控策略进行网络监控的典型配置举例。

2 配置前提

本文档适用于使用Comware V7软件版本的MSR系列路由器,如果使用过程中与产品实际情况有差异,请参考相关产品手册,或以设备实际情况为准。

本文档中的配置均是在实验室环境下进行的配置和验证,配置前设备的所有参数均采用出厂时的缺省配置。如果您已经对设备进行了配置,为了保证配置效果,请确认现有配置和以下举例中的配置不冲突。

本文档假设您已了解EAA监控策略的特性。

3 路由震荡抑制配置举例

3.1 组网需求

如图1所示,Router A和Router B运行BGP协议,为了防止BGP邻居反复Up/Down时,造成网络路由震荡,现需要在Router B上实现如下要求:

· 当在10分钟内BGP邻居Up/Down三次时,自动关闭BGP对等体。

· 配置每隔60分钟,自动配置启用一次BGP对等体邻居。

图1 路由震荡抑制配置组网图

3.2 配置思路

· 为了使当Router A和Router B的BGP邻居连续Up/Down三次时,自动关闭BGP对等体,可以配置EAA监控策略。

· 为了使Router A和Router B能够每隔60分钟,自动启用一次BGP对等体邻居,需要配置定时执行任务。

3.3 使用版本

本举例是在R6728版本上进行配置和验证的。

3.4 配置注意事项

· 同一个EAA监控策略下,只能配置一个触发事件和运行时间。当多次执行event或者running-time命令时,则最近配置并且commit的生效。

· 如果新配置的动作的编号和已有动作的编号相同,则最近配置并且commit的生效。

· 给CLI监控策略配置事件、动作、用户角色和运行时间后,必须执行commit命令,该策略才会启用,该策略下的配置才会生效。

3.5 配置步骤

3.5.1 Router A配置

(1) 配置接口地址

# 配置接口GigabitEthernet1/0/1的IP地址。

<RouterA> system-view

[RouterA] interface gigabitethernet 1/0/1

[RouterA-GigabitEthernet1/0/1] ip address 2.1.1.1 255.255.255.0

[RouterA-GigabitEthernet1/0/1] quit

(2) 配置BGP路由

# 在BGP视图下,指定BGP路由器的Router ID为2.1.1.1,创建IBGP对等体2.1.1.2。

[RouterA] bgp 1

[RouterA-bgp] router-id 2.1.1.1

[RouterA-bgp] peer 2.1.1.2 as-number 1

# 创建并进入BGP IPv4单播地址族视图,将直连接口重分布到BGP路由中。

[RouterA-bgp] address-family ipv4 unicast

[RouterA-bgp-ipv4] import-route direct

# 使能与对等体2.1.1.2交换IPv4单播路由信息的能力。

[RouterA-bgp-ipv4] peer 2.1.1.2 enable

[RouterA-bgp-ipv4] quit

3.5.2 Router B配置

(1) 配置接口地址

# 配置接口GigabitEthernet1/0/1的IP地址。

<RouterB> system-view

[RouterB] interface gigabitethernet 1/0/1

[RouterB-GigabitEthernet1/0/1] ip address 2.1.1.2 255.255.255.0

[RouterB-GigabitEthernet1/0/1] quit

(2) 配置BGP路由

# 在BGP视图下,指定BGP路由器的Router ID为2.1.1.2,创建IBGP对等体2.1.1.1。

[RouterB] bgp 1

[RouterB-bgp] router-id 2.1.1.2

[RouterB-bgp] peer 2.1.1.1 as-number 1

# 创建并进入BGP IPv4单播地址族视图,将直连接口重分布到BGP路由中。

[RouterB-bgp] address-family ipv4 unicast

[RouterB-bgp-ipv4] import-route direct

# 使能与对等体2.1.1.1交换IPv4单播路由信息的能力。

[RouterB-bgp-ipv4] peer 2.1.1.1 enable

[RouterB-bgp-ipv4] quit

(3) 配置CLI监控策略

# 创建CLI监控策略1。

[RouterB] rtm cli-policy 1

# 为CLI监控策略1配置监控事件:当优先级高于或等于5、内容中含有2.1.1.1 state has changed from ESTABLISHED to IDLE的日志在10分钟(600秒)内出现过3次时,触发执行策略。

[RouterB-rtm-1] event syslog priority 5 msg "2.1.1.1 state has changed from ESTABLISHED to IDLE" occurs 3 period 600

# 为CLI监控策略1配置动作:当事件发生时,进入到系统模式。

[RouterB-rtm-1] action 0 cli system-view

# 为CLI监控策略1配置动作:当事件发生时,进入到BGP视图下。

[RouterB-rtm-1] action 1 cli bgp 1

# 为CLI监控策略1配置动作:当事件发生时,进入BGP IPv4单播地址族视图。

[RouterB-rtm-1] action 2 cli address-family ipv4 unicast

# 为CLI监控策略1配置动作:当事件发生时,在BGP IPv4单播地址族视图下,禁止本地路由器与对等体2.1.1.1交换IPv4单播路由信息的能力。

[RouterB-rtm-1] action 3 cli undo peer 2.1.1.1 enable

# 配置执行CLI监控策略1时使用的用户角色为network-admin。

[RouterB-rtm-1] user-role network-admin

# 启用CLI监控策略1。

[RouterB-rtm-1] commit

[RouterB-rtm-1] quit

(4) 配置定时执行任务

# 创建名称为1的工作任务并进入Job视图。

[RouterB] scheduler job 1

# 为Job分配命令,以进入系统视图。

[RouterB-job-1] command 0 system-view

# 为Job分配命令,以进入BGP视图。

[RouterB-job-1] command 1 bgp 1

# 为Job分配命令,进入BGP IPv4单播地址族视图。

[RouterB-job-1] command 2 address-family ipv4 unicast

# 为Job分配命令,在BGP IPv4单播地址族视图下,使能本地路由器与对等体2.1.1.1交换IPv4单播路由信息的能力。

[RouterB-job-1] command 3 peer 2.1.1.1 enable

[RouterB-job-1] quit

(5) 配置Schedule

# 创建名为1的Schedule,并进入Schedule视图。

[RouterB] scheduler schedule 1

# 为Schedule分配名为1的job。

[RouterB-schedule-1] job 1

# 为Schedule配置循环执行的时间,每隔60分钟执行一次。

[RouterB-schedule-1] time repeating interval 60

[RouterB-schedule-1] quit

3.6 验证配置

# 通过display rtm policy registered命令查看,可以看到策略名为1,策略类型为CLI的策略。

<RouterB> display rtm policy registered

Total number: 1

Type Event TimeRegistered PolicyName

CLI SYSLOG Jun 18 09:41:06 2014 1

# 当在10分钟内,Router A和Router B的BGP邻居三次Up/Down时,观察到Router B上会生成如下日志,表示策略运行成功。

%Jun 18 14:19:26:246 2014 Router RTM/6/RTM_POLICY: CLI policy 1 is running successfully.

# 在RouterB上进入BGP视图下,查看BGP路由配置,观察到在BGP IPv4单播地址族视图下,禁止与对等体2.1.1.1交换IPv4单播路由信息的能力。

[RouterB-bgp] display this

#

bgp 1

router-id 2.1.1.2

peer 2.1.1.1 as-number 1

#

address-family ipv4 unicast

import-route direct

#

Return

# 在60分钟后,在Router B上进入BGP视图下,查看BGP路由配置,观察到在BGP IPv4单播地址族视图下,使能与对等体2.1.1.1交换IPv4单播路由信息的能力。

[RouterB-bgp] display this

#

bgp 1

router-id 2.1.1.2

peer 2.1.1.1 as-number 1

#

address-family ipv4 unicast

import-route direct

peer 2.1.1.1 enable

#

Return

[RouterB-bgp] quit

# 使用命令display bgp peer ipv4查看到Router A和Router B形成BGP对等体邻居。

[RouterB] display bgp peer ipv4

BGP local router ID: 2.1.1.2

Local AS number: 1

Total number of peers: 1 Peers in established state: 1

Peer AS MsgRcvd MsgSent OutQ PrefRcv Up/Down State

2.1.1.1 1 23 23 0 1 00:16:04 Established

4 配置文件回滚配置举例

4.1 组网需求

如图2所示,管理员远程配置Router,为避免某些配置导致路由不可达,可提前备份配置文件,使用NQA监控网络连通情况,当网络不通时,使用EAA策略触发自定义命令,自动恢复备份的可用配置并重启设备。

图2 配置文件回滚配置组网图

4.2 配置思路

通过使用EAA监控策略监控NQA告警项中的阈值状态,当监测的对象超出指定类型的阈值时,自动触发EAA监控策略。阈值状态(MIB值)的具体说明如下:

· 当阈值状态为invalid(MIB值为1),表示NQA测试组未启动;

· 当阈值状态为overThreshold(MIB值为2),表示检查监测的对象超出指定类型的阈值;

· 当阈值状态为belowThreshold(MIB值为3),表示检查监测的对象没有超出指定类型的阈值。

4.3 使用版本

本举例是在R6728版本上进行配置和验证的。

4.4 配置注意事项

· 同一个EAA监控策略下,只能配置一个触发事件和运行时间。当多次执行event或者running-time命令时,则最近配置并且commit的生效。

· 如果新配置的动作的编号和已有动作的编号相同,则最近配置并且commit的生效。

· 给CLI监控策略配置事件、动作、用户角色和运行时间后,必须执行commit命令,该策略才会启用,该策略下的配置才会生效。

4.5 配置步骤

(1) 配置接口地址并保存配置文件

# 配置接口GigabitEthernet1/0/0的IP地址。

<Router> system-view

[Router] interface gigabitethernet 1/0/0

[Router-GigabitEthernet1/0/0] port link-mode route

[Router-GigabitEthernet1/0/0] ip address 192.168.1.1 255.255.255.0

[Router-GigabitEthernet1/0/0] quit

# 配置到主机Host的静态路由。

[Router] ip route 192.168.100.0 255.255.255.0 192.168.1.1

# 先把当前正在使用的正常配置备份,文件名为eaa_test_backup.cfg。

[Router] save eaa_test_backup.cfg

The current configuration will be saved to cfa0:/eaa_test_backup.cfg. Continue? [Y/N] :y

Now saving current configuration to the device.

Saving configuration cfa0:/eaa_test_backup.cfg.Please wait...

Configuration is saved to device successfully.

(2) 配置NQA测试组

# 创建ICMP-echo类型的NQA测试组,管理员名为admin,测试操作标签为test,并配置测试操作的目的地址为192.168.100.1。

[Router] nqa entry admin test

[Router-nqa-admin-test] type icmp-echo

[Router-nqa-admin-test-icmp-echo] data-size 20

[Router-nqa-admin-test-icmp-echo] destination ip 192.168.100.1

# 配置测试组连续两次测试开始时间的时间间隔为1000毫秒,探测的超时时间为500毫秒。

[Router-nqa-admin-test-icmp-echo] frequency 1000

[Router-nqa-admin-test-icmp-echo] probe timeout 500

# 开启NQA测试组的历史记录保存功能,配置一个测试组中能够保存的最大历史记录数为10个。

[Router-nqa-admin-test-icmp-echo] history-record enable

[Router-nqa-admin-test-icmp-echo] history-record number 10

# 创建编号为1的阈值告警组,监测ICMP-echo探测的失败次数。NQA测试组启动前,初始的阈值状态为invalid。每次探测结束后,检查测试组启动以来连续的探测失败次数,若达到或超过5次,阈值状态置为over-threshold;反之,置为below-threshold。

[Router-nqa-admin-test-icmp-echo] reaction 1 checked-element probe-fail threshold-type consecutive 5 action-type none

[Router-nqa-admin-test-icmp-echo] quit

# 启动管理员为admin,标签为test的测试组进行测试,测试组的启动时间为立即开始测试,持续时间为一直进行测试。

[Router] nqa schedule admin test start-time now lifetime forever

# 开启SNMP。

[Router] snmp-agent

(3) 配置CLI监控策略

# 创建CLI监控策略1。

[Router] rtm cli-policy 1

# 为CLI监控策略1配置监控事件:系统每5秒检查MIB对象
1.3.6.1.4.1.25506.8.3.1.13.1.11.1.49.1.49.1的值,当该值等于2时触发执行监控策略并关闭监控开关,当等于3时重新启动监控。

[Router-rtm-1] event snmp oid 1.3.6.1.4.1.25506.8.3.1.13.1.11.1.49.1.49.1 monitor-obj get start-op eq start-val 2 restart-op eq restart-val 3 interval 5

# 为CLI监控策略1配置动作:当事件发生时,配置下次启动配置文件为eaa_test_backup.cfg。

[Router-rtm-1] action 0 cli startup saved-configuration eaa_test_backup.cfg

# 为CLI监控策略1配置动作:当事件发生时,重启设备。

[Router-rtm-1] action 1 reboot

# 启用CLI监控策略1。

[Router-rtm-1] commit

[Router-rtm-1] quit

4.6 验证配置

# 通过display rtm policy registered命令查看,可以看到策略名为1,策略类型为CLI的策略。

[Router] display rtm policy registered

Total number: 1

Type Event TimeRegistered PolicyName

CLI SNMP Jul 10 15:31:37 2014 1

# 修改Router的GigabitEthernet1/0/0接口的IP地址,使得Router到主机的路由不可达。

[Router] interface gigabitethernet 1/0/0

[Router-GigabitEthernet1/0/0] ip address 10.1.1.1 24

[Router-GigabitEthernet1/0/0] quit

观察到设备重新启动。

%Jul 10 15:33:40:112 2013 Router DEV/5/SYSTEM_REBOOT: System is rebooting now.

System is starting...

Press Ctrl+D to access BASIC-BOOTWARE MENU...

Press Ctrl+T to start heavy memory test

Booting Normal Extended BootWare

The Extended BootWare is self-decompressing....Done.

****************************************************************************

* *

* H3C MSR36-40 BootWare, Version 1.42 *

* *

****************************************************************************

Copyright (c) 2004-2014 Hangzhou H3C Technologies Co., Ltd.

Compiled Date : Apr 1 2014

CPU ID : 0x3

Memory Type : DDR3 SDRAM

Memory Size : 2048MB

BootWare Size : 1024KB

Flash Size : 8MB

cfa0 Size : 497MB

CPLD Version : 2.0

PCB Version : 2.0

BootWare Validating...

Press Ctrl+B to access EXTENDED-BOOTWARE MENU...

Loading the main image files...

Loading file cfa0:/msr36-cmw710-system-r0106.bin..................................................................Done.

Loading file cfa0:/msr36-cmw710-security-r0106.bin...Done.

Loading file cfa0:/msr36-cmw710-voice-r0106.bin.......Done.

Loading file cfa0:/msr36-cmw710-data-r0106.bin......Done.

Loading file cfa0:/msr36-cmw710-boot-r0106.bin....................Done.

Image file cfa0:/msr36-cmw710-boot-r0106.bin is self-decompressing................Done.

System image is starting...

Line con1 is available.

Press ENTER to get started.

<Router>%Jul 10 16:15:08:059 2014 Router SHELL/5/SHELL_LOGIN: Console logged in from con1.

<Router>


5 设备运行状态自动监控和维护配置举例

5.1 组网需求

如图3所示,Router到TFTP服务器路由可达,为防止Router的CPU利用率过高,现要求使用EAA策略进行自动监控,当设备CPU使用率高于80%时,进行如下操作:

· 显示当前时间的内存信息、接口统计信息和路由表信息并保存到指定文件。

· 将指定文件上传到指定的TFTP服务器上。

· 上传到TFTP服务器后,Router删除本地的指定文件。

图3 设备运行状态自动监控和维护配置组网图

5.2 使用版本

本举例是在R6728版本上进行配置和验证的。

5.3 配置注意事项

· 同一个EAA监控策略下,只能配置一个触发事件和运行时间。当多次执行event或者running-time命令时,则最近配置并且commit的生效。

· 如果新配置的动作的编号和已有动作的编号相同,则最近配置并且commit的生效。

· 给CLI监控策略配置事件、动作、用户角色和运行时间后,必须执行commit命令,该策略才会启用,该策略下的配置才会生效。

5.4 配置步骤

# 配置接口IP地址。

<Router> system-view

[Router] interface gigabitethernet 1/0/0

[Router-GigabitEthernet1/0/0] port link-mode route

[Router-GigabitEthernet1/0/0] ip address 192.168.1.1 255.255.255.0

[Router-GigabitEthernet1/0/0] quit

# 开启SNMP。

[Router] snmp-agent

# 创建CLI监控策略1。

[Router] rtm cli-policy 1

# 为CLI监控策略1配置监控事件:系统每5秒检查CPU使用率(MIB对象
1.3.6.1.4.1.25506.2.6.1.1.1.1.6.16),当该值大于80时触发执行监控策略并关闭监控开关,当小于40时重新启动监控。

[Router-rtm-1] event snmp oid 1.3.6.1.4.1.25506.2.6.1.1.1.1.6.16 monitor-obj get start-op gt start-val 80 restart-op lt restart-val 40 interval 5

# 为CLI监控策略1配置动作:当事件发生时,显示设备当前的日期时间,并将显示信息保存到指定文件test1.txt。

[Router-rtm-1] action 0 cli display clock >> test1.txt

# 为CLI监控策略1配置动作:当事件发生时,显示内存使用情况,并将显示信息以追加方式保存到指定文件test1.txt。

[Router-rtm-1] action 1 cli display memory >> test1.txt

# 为CLI监控策略1配置动作:当事件发生时,显示指定接口当前的运行状态,并将显示信息以追加方式保存到指定文件test1.txt。

[Router-rtm-1] action 2 cli display interface >> test1.txt

# 为CLI监控策略1配置动作:当事件发生时,显示路由表的信息,并将显示信息以追加方式保存到指定文件test1.txt。

[Router-rtm-1] action 3 cli display ip routing-table >> test1.txt

# 为CLI监控策略1配置动作:当事件发生时,将本地的指定文件test1.txt上传到TFTP服务器192.168.100.14上。

[Router-rtm-1] action 4 cli tftp 192.168.100.14 put test1.txt

# 为CLI监控策略1配置动作:当事件发生时,永久删除文件test1.txt,并确认。

[Router-rtm-1] action 5 cli delete /unreserved test1.txt

[Router-rtm-1] action 6 cli y

[Router-rtm-1] user-role network-admin

# 启用CLI监控策略1。

[Router-rtm-1] commit

[Router-rtm-1] quit

5.5 验证配置

# 通过display rtm policy registered命令查看,可以看到策略名为1,策略类型为CLI的策略。

[Router] display rtm policy registered

Total number: 1

Type Event TimeRegistered PolicyName

CLI SNMP Jul 10 15:31:37 2014 1

# 当设备CPU占用率超过80%,可以观察到设备CLI监控策略运行成功。

%Jul 14 10:57:22:127 2014 Router RTM/6/RTM_POLICY: CLI policy 1 is running successfully.

# 查看日志服务器,有test1.txt文件生成,打开文件查看到显示系统当前的时间、日期、本地时区配置,内存使用情况,接口当前的运行状态和路由表的信息。

11:14:55 UTC Mon 07/14/2014

The statistics about memory is measured in KB:

Slot 0:

Total Used Free Shared Buffers Cached FreeRatio

Mem: 2028984 540492 1488492 0 564 156532 73.4%

-/+ Buffers/Cache: 383396 1645588

Swap: 0 0 0

Slot 1:

Total Used Free Shared Buffers Cached FreeRatio

Mem: 2028984 468996 1559988 0 312 126668 76.9%

-/+ Buffers/Cache: 342016 1686968

Swap: 0 0 0

Slot 2:

Total Used Free Shared Buffers Cached FreeRatio

Mem: 4081140 1162996 2918144 0 0 42416 71.5%

-/+ Buffers/Cache: 1120580 2960560

Swap: 0 0 0

Aux0/0/1

Current state: Administratively DOWN

Description: Aux0/0/1 Interface

Bandwidth: 9kbps

Internet protocol processing: disabled

Output queue - Urgent queuing: Size/Length/Discards 0/100/0

Output queue - Protocol queuing: Size/Length/Discards 0/500/0

Output queue - FIFO queuing: Size/Length/Discards 0/75/0

Last clearing of counters: Never

Physical layer: asynchronous, Baudrate: 9600 bps

Phy-mru: 1700

……

Destinations : 16 Routes : 16

Destination/Mask Proto Pre Cost NextHop Interface

0.0.0.0/32 Direct 0 0 127.0.0.1 InLoop0

10.1.1.0/24 Direct 0 0 10.1.1.1 GE1/0/2

10.1.1.0/32 Direct 0 0 10.1.1.1 GE1/0/2

10.1.1.1/32 Direct 0 0 127.0.0.1 InLoop0

10.1.1.255/32 Direct 0 0 10.1.1.1 GE1/0/2

127.0.0.0/8 Direct 0 0 127.0.0.1 InLoop0

127.0.0.0/32 Direct 0 0 127.0.0.1 InLoop0

127.0.0.1/32 Direct 0 0 127.0.0.1 InLoop0

127.255.255.255/32 Direct 0 0 127.0.0.1 InLoop0

192.168.100.0/24 Direct 0 0 192.168.100.68 GE1/0/1

192.168.100.0/32 Direct 0 0 192.168.100.68 GE1/0/1

192.168.100.68/32 Direct 0 0 127.0.0.1 InLoop0

192.168.100.255/32 Direct 0 0 192.168.100.68 GE1/0/1

224.0.0.0/4 Direct 0 0 0.0.0.0 NULL0

224.0.0.0/24 Direct 0 0 0.0.0.0 NULL0

255.255.255.255/32 Direct 0 0 127.0.0.1 InLoop0

6 视频会议带宽自动保障配置举例

6.1 组网需求

如图4所示,用户主机和VoIP视频系统通过路由器Router访问Internet,当召开视频会议时,要占用较多带宽,需要对主机的上网流量进行限制。现要求使用EAA监控策略进行自动监控,具体要求如下:

· 当每秒视频报文流量大于等于100000个数据包时,则限制主机报文通过,仅允许视频报文通过。当每秒视频报文流量小于100000个数据包时,则允许视频和主机报文通过。

图4 视频会议带宽自动保障配置组网图

6.2 使用版本

本举例是在R6728版本上进行配置和验证的。

6.3 配置注意事项

· 同一个EAA监控策略下,只能配置一个触发事件和运行时间。当多次执行event或者running-time命令时,则最近配置并且commit的生效。

· 如果新配置的动作的编号和已有动作的编号相同,则最近配置并且commit的生效。

· 给CLI监控策略配置事件、动作、用户角色和运行时间后,必须执行commit命令,该策略才会启用,该策略下的配置才会生效。

6.4 配置步骤

(1) 配置接口地址

# 配置接口GigabitEthernet1/0/1的IP地址。

<Router> system-view

[Router] interface gigabitethernet 1/0/1

[Router-GigabitEthernet1/0/1] ip address 192.168.1.1 255.255.255.0

[Router-GigabitEthernet1/0/1] quit

# 配置接口GigabitEthernet1/0/2的IP地址。

[Router] interface gigabitethernet 1/0/2

[Router-GigabitEthernet1/0/2] ip address 10.1.1.1 255.255.255.0

[Router-GigabitEthernet1/0/2] quit

(2) 配置ACL策略

# 创建ACL 3001,仅允许源地址为10.1.1.2的报文通过。

[Router] acl number 3001

[Router-acl-adv-3001] rule 0 permit ip source 10.1.1.2 0

[Router-acl-adv-3001] quit

# 创建ACL 3002,不允许源地址为10.1.1.2的报文通过,允许其他报文通过。

[Router] acl number 3002

[Router-acl-adv-3002] rule 0 deny ip source 10.1.1.2 0

[Router-acl-adv-3002] rule 5 permit ip

[Router-acl-adv-3002] quit

# 在接口GigabitEthernet1/0/2的出方向上匹配ACL 3001的数据包进行流量监管。

[Router] interface gigabitethernet 1/0/2

[Router-GigabitEthernet1/0/2] qos car inbound acl 3001 cir 1000

[Router-GigabitEthernet1/0/2] quit

(3) 开启SNMP功能并配置环境变量

# 开启SNMP Agent功能。

[Router] snmp-agent

# 创建监控策略的环境变量,设置环境变量video,其值为0。

[Router] rtm environment video 0

(4) 配置CLI监控策略1

# 创建CLI监控策略1。

[Router] rtm cli-policy 1

# 为CLI监控策略1配置监控事件:系统每10秒检查报文个数(MIB对象
1.3.6.1.4.1.25506.2.8.2.2.3.1.31.1.3001.0),监控值大于等于0时执行action配置的动作(即每

次都会执行)。

[Router-rtm-1] event snmp oid 1.3.6.1.4.1.25506.2.8.2.2.3.1.31.1.3001.0 monitor-obj get start-op ge start-val 0 restart-op ge restart-val 0 interval 10

# 为CLI监控策略1配置动作:当事件发生时,清除ACL 3001的统计信息。

[Router-rtm-1] action 0 cli reset acl counter 3001

# 为CLI监控策略1配置动作:当事件发生时,从用户视图进入Tcl配置视图。

[Router-rtm-1] action 1 cli tclsh

# 为CLI监控策略1配置动作:当事件发生时,从用户视图进入系统视图。

[Router-rtm-1] action 2 cli system-view

# 为CLI监控策略1配置动作:当事件发生时,检查收到的视频设备报文数量,如果超过100000个数据包,则在接口GigabitEthernet1/0/2配置仅允许视频流量10.1.1.2的报文通过,限制其他流量流量承诺信息速率为1024 kbps。

[Router-rtm-1] action 3 cli if { $_oid_value > 100000 && $video == 0 } { rtm environment video 1; interface gigabitethernet 1/0/2; qos car inbound acl 3002 cir 1024}

# 为CLI监控策略1配置动作:当事件发生时,检查收到的视频设备报文数量,如果不到100000个数据包,则接口GigabitEthernet1/0/2配置允许其他流量的报文通过。

[Router-rtm-1] action 4 cli if { $_oid_value < 100000 && $video == 1 } { rtm environment video 0; interface gigabitethernet 1/0/2; undo qos car inbound acl 3002}

# 启用CLI监控策略1。

[Router-rtm-1] commit

[Router-rtm-1] quit

6.5 验证配置

# 通过display rtm policy registered命令查看,可以看到策略名为1,策略类型为CLI的策略。

[Router] display rtm policy registered

Total number: 1

Type Event TimeRegistered PolicyName

CLI SNMP Jul 11 16:07:51 2014 1

# 当Router接口GigabitEthernet1/0/2每秒视频报文流量大于等于100000个数据包时,查看到日志信息显示EAA策略1执行成功。

%Jul 11 16:13:46:552 2014 Router RTM/6/RTM_POLICY: CLI policy 1 is running successfully.

7 基于链路质量的主备切换配置举例

7.1 组网需求

如图5所示,Router A和Router B路由可达,正常情况下,Router A到Router B的直连链路作为主链路,经Router C的链路为备份链路。在Router A上配置EAA监控策略,具体要求如下:

· 当主链路丢包率超过20%,或者延时大于200ms时,流量切换到备份链路。

· 当主链路没有丢包,并且延时小于100ms,流量再恢复到主链路进行转发。

图5 基于链路质量的主备切换配置组网图

7.2 配置思路

通过使用EAA监控策略监控NQA告警项中的阈值状态,当监测的对象超出指定类型的阈值时,自动触发EAA监控策略。阈值状态(MIB值)的具体说明如下:

· 当阈值状态为invalid(MIB值为1),表示NQA测试组未启动;

· 当阈值状态为overThreshold(MIB值为2),表示检查监测的对象超出指定类型的阈值;

· 当阈值状态为belowThreshold(MIB值为3),表示检查监测的对象没有超出指定类型的阈值。

7.3 使用版本

本举例是在R6728版本上进行配置和验证的。

7.4 配置注意事项

· 同一个EAA监控策略下,只能配置一个触发事件和运行时间。当多次执行event或者running-time命令时,则最近配置并且commit的生效。

· 如果新配置的动作的编号和已有动作的编号相同,则最近配置并且commit的生效。

· 给CLI监控策略配置事件、动作、用户角色和运行时间后,必须执行commit命令,该策略才会启用,该策略下的配置才会生效。

7.5 配置步骤

7.5.1 Router A配置

(1) 配置接口地址

# 配置接口GigabitEthernet1/0/1的IP地址。

<RouterA> system-view

[RouterA] interface gigabitethernet 1/0/1

[RouterA-GigabitEthernet1/0/1] port link-mode route

[RouterA-GigabitEthernet1/0/1] ip address 12.1.1.1 255.255.255.0

[RouterA-GigabitEthernet1/0/1] quit

# 配置接口GigabitEthernet1/0/2的IP地址。

[RouterA] interface gigabitethernet 1/0/2

[RouterA-GigabitEthernet1/0/2] port link-mode route

[RouterA-GigabitEthernet1/0/2] ip address 11.1.1.2 255.255.255.0

[RouterA-GigabitEthernet1/0/2] quit

(2) 配置NQA测试组

# 创建ICMP-echo类型的NQA测试组,管理员名为1,测试操作标签为1,并配置测试操作的目的地址为12.1.1.2。

[RouterA] nqa entry 1 1

[RouterA-nqa-1-1] type icmp-echo

[RouterA-nqa-1-1-icmp-echo] destination ip 12.1.1.2

# 配置测试组连续两次测试开始时间的时间间隔为15000毫秒,探测的超时时间为800毫秒,一次ICMP-echo测试中探测的次数为15次。

[RouterA-nqa-1-1-icmp-echo] frequency 15000

[RouterA-nqa-1-1-icmp-echo] probe timeout 800

[RouterA-nqa-1-1-icmp-echo] probe count 15

# 创建编号为1的阈值告警组,监测ICMP-echo探测的持续时间,阈值上限为200毫秒,下限为0毫秒。NQA测试组启动前,初始的阈值状态为invalid。每次测试结束后,检查本次测试的平均探测持续时间,若超出阈值,阈值状态置为over-threshold;反之,置为below-threshold。

[RouterA-nqa-1-1-icmp-echo] reaction 1 checked-element probe-duration threshold-type average threshold-value 200 0 action-type none

# 创建编号为2的阈值告警组,监测ICMP-echo探测的失败次数。NQA测试组启动前,初始的阈值状态为invalid。NQA测试组启动前,初始的阈值状态为invalid。每次测试结束后,检查本次测试中累计的持续时间超出阈值的探测次数,若达到或超过3次,阈值状态置为over-threshold;反之,置为below-threshold。

[RouterA-nqa-1-1-icmp-echo] reaction 2 checked-element probe-fail threshold-type accumulate 3 action-type none

# 创建编号为3的阈值告警组,监测ICMP-echo探测的持续时间,阈值上限为100毫秒,下限为0毫秒。NQA测试组启动前,初始的阈值状态为invalid。每次测试结束后,检查本次测试的平均探测持续时间,若超出阈值,阈值状态置为over-threshold;反之,置为below-threshold。

[RouterA-nqa-1-1-icmp-echo] reaction 3 checked-element probe-duration threshold-type average threshold-value 100 0 action-type none

# 创建编号为4的阈值告警组,监测ICMP-echo探测的失败次数。NQA测试组启动前,初始的阈值状态为invalid。NQA测试组启动前,初始的阈值状态为invalid。每次测试结束后,检查本次测试中累计的持续时间超出阈值的探测次数,若达到或超过1次,阈值状态置为over-threshold;反之,置为below-threshold。

[RouterA-nqa-1-1-icmp-echo] reaction 4 checked-element probe-fail threshold-type accumulate 1 action-type none

[RouterA-nqa-1-1-icmp-echo] quit

# 开启NQA客户端功能。

[RouterA] nqa agent enable

# 启动管理员为1,标签为1的测试组进行测试,测试组的启动时间为立即开始测试,持续时间为一直进行测试。

[RouterA] nqa schedule 1 1 start-time now lifetime forever

# 开启SNMP Agent功能。

[RouterA] snmp-agent

(3) 配置监控策略的环境变量

# 创建监控策略的环境变量,设置环境变量delay,其值为0。

[RouterA] rtm environment delay 0

# 创建监控策略的环境变量,设置环境变量loss,其值为0。

[RouterA] rtm environment loss 0

# 创建监控策略的环境变量,设置环境变量backup,其值为0。

[RouterA] rtm environment backup 0

(4) 配置CLI监控策略1

# 创建CLI监控策略1。

[RouterA] rtm cli-policy 1

# 为CLI监控策略1配置监控事件:系统每10秒检查MIB对象
1.3.6.1.4.1.25506.8.3.1.13.1.11.1.49.1.49.1的值,当该值等于2时触发执行监控策略并关闭监控开关,当等于3时重新启动监控。

[RouterA-rtm-1] event snmp oid 1.3.6.1.4.1.25506.8.3.1.13.1.11.1.49.1.49.1 monitor-obj get start-op eq start-val 2 restart-op eq restart-val 3 interval 10

# 为CLI监控策略1配置动作:当事件发生时,配置从用户视图进入Tcl配置视图。

[RouterA-rtm-1] action 0 cli tclsh

# 为CLI监控策略1配置动作:当事件发生时,进入系统视图。

[RouterA-rtm-1] action 1 cli system-view

# 为CLI监控策略1配置动作:当事件发生时,将环境变量delay的值由0变为1。

[RouterA-rtm-1] action 2 cli if { $delay==0 } { rtm environment delay 1 }

# 为CLI监控策略1配置动作:当事件发生时,将环境变量backup的值由0变为1,并配置到100.1.1.0/24、指定下一跳为11.1.1.1、优先级为10的静态路由。

[RouterA-rtm-1] action 3 cli if { $backup==0 } { rtm environment backup 1; ip route-static 100.1.1.0 24 11.1.1.1 preference 10 }

# 启用CLI监控策略1。

[RouterA-rtm-1] commit

[RouterA-rtm-1] quit

(5) 配置CLI监控策略2

# 创建CLI监控策略2。

[RouterA] rtm cli-policy 2

# 为CLI监控策略2配置监控事件:系统每10秒检查MIB对象
1.3.6.1.4.1.25506.8.3.1.13.1.11.1.49.1.49.2的值,当该值等于2时触发执行监控策略并关闭监控开关,当等于3时重新启动监控。

[RouterA-rtm-2] event snmp oid 1.3.6.1.4.1.25506.8.3.1.13.1.11.1.49.1.49.2 monitor-obj get start-op eq start-val 2 restart-op eq restart-val 3 interval 10

# 为CLI监控策略2配置动作:当事件发生时,配置从用户视图进入Tcl配置视图。

[RouterA-rtm-2] action 0 cli tclsh

# 为CLI监控策略2配置动作:当事件发生时,进入系统视图。

[RouterA-rtm-2] action 1 cli system-view

# 为CLI监控策略2配置动作:当事件发生时,将环境变量loss的值由0变为1。

[RouterA-rtm-2] action 2 cli if { $loss==0 } { rtm environment loss 1 }

# 为CLI监控策略2配置动作:当事件发生时,将环境变量backup的值由0变为1,并配置到100.1.1.0/24、指定下一跳为11.1.1.1、优先级为10的静态路由。

[RouterA-rtm-2] action 3 cli if { $backup==0 } { rtm environment backup 1; ip route-static 100.1.1.0 24 11.1.1.1 preference 10 }

# 启用CLI监控策略2。

[RouterA-rtm-2] user-role network-admin

[RouterA-rtm-2] commit

(6) 配置CLI监控策略3

# 创建CLI监控策略3。

[RouterA] rtm cli-policy 3

# 为CLI监控策略3配置监控事件:系统每10秒检查MIB对象
1.3.6.1.4.1.25506.8.3.1.13.1.11.1.49.1.49.3的值,当该值等于2时触发执行监控策略并关闭监控开关,当等于3时重新启动监控。

[RouterA-rtm-3] event snmp oid 1.3.6.1.4.1.25506.8.3.1.13.1.11.1.49.1.49.3 monitor-obj get start-op eq start-val 3 restart-op eq restart-val 2 interval 10

# 为CLI监控策略3配置动作:当事件发生时,配置从用户视图进入Tcl配置视图。

[RouterA-rtm-3] action 0 cli tclsh

# 为CLI监控策略3配置动作:当事件发生时,进入系统视图。

[RouterA-rtm-3] action 1 cli system-view

# 为CLI监控策略3配置动作:当事件发生时,将环境变量delay的值由1变为0。

[RouterA-rtm-3] action 2 cli if { $delay==1 } { rtm environment delay 0 }

# 为CLI监控策略3配置动作:当事件发生时,在5000毫秒后发生变化。

[RouterA-rtm-3] action 3 cli after 5000

# 为CLI监控策略3配置动作:当事件发生时,将环境变量backup和loss的值变为0,并删除配置到100.1.1.0/24、指定下一跳为11.1.1.1、优先级为10的静态路由。

[RouterA-rtm-3] action 4 cli if { $backup==1 && $loss==0 } { undo ip route-static 100.1.1.0 24 11.1.1.1 preference 10; rtm environment backup 0 }

# 启用CLI监控策略3。

[RouterA-rtm-3] user-role network-admin

[RouterA-rtm-3] commit

(7) 配置CLI监控策略4

# 创建CLI监控策略4。

[RouterA] rtm cli-policy 4

# 为CLI监控策略4配置监控事件:系统每10秒检查MIB对象
1.3.6.1.4.1.25506.8.3.1.13.1.11.1.49.1.49.4的值,当该值等于2时触发执行监控策略并关闭监控开关,当等于3时重新启动监控。

[RouterA-rtm-4] event snmp oid 1.3.6.1.4.1.25506.8.3.1.13.1.11.1.49.1.49.4 monitor-obj get start-op eq start-val 3 restart-op eq restart-val 2 interval 10

# 为CLI监控策略4配置动作:当事件发生时,配置从用户视图进入Tcl配置视图。

[RouterA-rtm-4] action 0 cli tclsh

# 为CLI监控策略4配置动作:当事件发生时,进入系统视图。

[RouterA-rtm-4] action 1 cli system-view

# 为CLI监控策略4配置动作:当事件发生时,将环境变量loss的值由1变为0。

[RouterA-rtm-4] action 2 cli if { $loss==1 } { rtm environment loss 0 }

# 为CLI监控策略4配置动作:当事件发生时,在5000毫秒后发生变化。

[RouterA-rtm-4] action 3 cli after 5000

# 为CLI监控策略4配置动作:当事件发生时,将环境变量backup和delay的值保持为0,并删除配置到100.1.1.0/24、指定下一跳为11.1.1.1、优先级为10的静态路由。

[RouterA-rtm-4] action 4 cli if { $backup==1 && $delay==0 } { undo ip route-static 100.1.1.0 24 11.1.1.1 preference 10; rtm environment backup 0 }

# 启用CLI监控策略4。

[RouterA-rtm-4] user-role network-admin

[RouterA-rtm-4] commit

[RouterA-rtm-4] quit

7.5.2 Router B配置

(1) 配置接口地址

# 配置接口GigabitEthernet1/0/1的IP地址。

<RouterB> system-view

[RouterB] interface gigabitethernet 1/0/1

[RouterB-GigabitEthernet1/0/1] port link-mode route

[RouterB-GigabitEthernet1/0/1] ip address 12.1.1.2 255.255.255.0

[RouterB-GigabitEthernet1/0/1] quit

# 配置接口GigabitEthernet1/0/2的IP地址。

[RouterB] interface gigabitethernet 1/0/2

[RouterB-GigabitEthernet1/0/2] port link-mode route

[RouterB-GigabitEthernet1/0/2] ip address 100.1.1.2 255.255.255.0

[RouterB-GigabitEthernet1/0/2] quit

(2) 配置OSPF路由,使得Router C到Router B网络互通

[RouterB] ospf 1

[RouterB-ospf-1] area 0.0.0.0

[RouterB-ospf-1-area-0.0.0.0] network 12.1.1.0 0.0.0.255

[RouterB-ospf-1-area-0.0.0.0] network 100.1.1.0 0.0.0.255

[RouterB-ospf-1-area-0.0.0.0] quit

[RouterB-ospf-1] quit

7.5.3 Router C配置

(1) 配置接口地址

# 配置接口GigabitEthernet1/0/1的IP地址。

<RouterC> system-view

[RouterC] interface gigabitethernet 1/0/1

[RouterC-GigabitEthernet1/0/1] port link-mode route

[RouterC-GigabitEthernet1/0/1] ip address 11.1.1.1 255.255.255.0

[RouterC-GigabitEthernet1/0/1] quit

# 配置接口GigabitEthernet1/0/2的IP地址。

[RouterC] interface gigabitethernet 1/0/2

[RouterC-GigabitEthernet1/0/2] port link-mode route

[RouterC-GigabitEthernet1/0/2] ip address 100.1.1.1 255.255.255.0

[RouterC-GigabitEthernet1/0/2] quit

(2) 配置OSPF路由,使得Router B到Router C网络互通

[RouterC] ospf 1

[RouterC-ospf-1] area 0.0.0.0

[RouterC-ospf-1-area-0.0.0.0] network 11.1.1.0 0.0.0.255

[RouterC-ospf-1-area-0.0.0.0] network 100.1.1.0 0.0.0.255

[RouterC-ospf-1-area-0.0.0.0] quit

[RouterC-ospf-1] quit

7.6 验证配置

# 显示所有监控策略的详细信息。

<RouterA> display rtm policy registered verbose

Total number: 4

Policy Name: 1

Policy Type: CLI

Event Type: SNMP

TimeRegistered: Jul 14 15:04:24 2014

User-role: network-admin

Policy Name: 2

Policy Type: CLI

Event Type: SNMP

TimeRegistered: Jul 14 15:14:50 2014

User-role: network-admin

Policy Name: 3

Policy Type: CLI

Event Type: SNMP

TimeRegistered: Jul 14 15:17:32 2014

User-role: network-admin

Policy Name: 4

Policy Type: CLI

Event Type: SNMP

TimeRegistered: Jul 14 15:18:33 2014

User-role: network-admin

(1) 当Router A到Router B的报文延时为300毫秒时,超过阈值200毫秒,观察Router A显示信息。

# 查看到日志信息显示EAA策略1执行成功。

%Jul 14 14:50:16:677 2014 RouterA RTM/6/RTM_POLICY: CLI policy 1 is running successfully.

# 使用display rtm environment命令用来显示用户自定义的EAA环境变量配置,观察到环境变量backup的值变为1,delay的值变为1。

[RouterA] display rtm environment

Name Value

backup 1

delay 1

loss 0

# 使用display this命令显示当前视图下生效的配置,观察到有到100.1.1.0/24的静态路由,Router A到Router B的报文切换路由到备份链路。

[RouterA] display this

#

sysname RouterA

#

nqa schedule 1 1 start-time now lifetime forever

#

ip route-static 100.1.1.0 24 11.1.1.1 preference 10

#

snmp-agent

snmp-agent local-engineid 800063A280000605B36B9E00000001

snmp-agent sys-info version v3

#

rtm environment backup 1

rtm environment delay 1

rtm environment loss 0

#

Return

(2) 当Router A到Router B的报文丢包率为25%时,超过阈值,观察Router A显示信息。

# 查看到日志信息显示EAA策略2执行成功。

%Jul 14 15:15:23:802 2014 RouterA RTM/6/RTM_POLICY: CLI policy 2 is running successfully.

# 使用display rtm environment命令用来显示用户自定义的EAA环境变量配置,观察到环境变量loss的值变为1。

[RouterA] display rtm environment

Name Value

backup 1

delay 1

loss 1

# 使用display this命令显示当前视图下生效的配置,观察到Router A的报文切仍然经备份链路到Router B。

[RouterA] display this

#

sysname RouterA

#

nqa schedule 1 1 start-time now lifetime forever

#

ip route-static 100.1.1.0 24 11.1.1.1 preference 10

#

snmp-agent

snmp-agent local-engineid 800063A280000605B36B9E00000001

snmp-agent sys-info version v3

#

rtm environment backup 1

rtm environment delay 1

rtm environment loss 1

#

Return

(3) 当Router A到Router B的报文延时恢复正常,丢包率仍为25%时,观察Router A显示信息。

# 查看到日志信息显示EAA策略3执行成功。

%Jul 14 15:19:13:771 2014 RouterA RTM/6/RTM_POLICY: CLI policy 3 is running successfully.

# 使用display rtm environment命令用来显示用户自定义的EAA环境变量配置,观察到环境变量delay的值变为0。

[RouterA] display rtm environment

Name Value

backup 1

delay 0

loss 1

# 使用display this命令显示当前视图下生效的配置,观察到Router A的报文切仍然经备份链路到Router B。

[RouterA] display this

#

sysname RouterA

#

nqa schedule 1 1 start-time now lifetime forever

#

ip route-static 100.1.1.0 24 11.1.1.1 preference 10

#

snmp-agent

snmp-agent local-engineid 800063A280000605B36B9E00000001

snmp-agent sys-info version v3

#

rtm environment backup 1

rtm environment delay 0

rtm environment loss 1

#

Return

(4) 当Router A到Router B的报文延时和丢包率恢复正常时,观察Router A显示信息。

# 查看到日志信息显示EAA策略4执行成功。

%Jul 14 15:19:13:771 2014 RouterA RTM/6/RTM_POLICY: CLI policy 4 is running successfully.

# 使用display rtm environment命令用来显示用户自定义的EAA环境变量配置,观察到环境变量backup、delay和loss的值变为0。

[RouterA] display rtm environment

Name Value

backup 0

delay 0

loss 0

# 使用display this命令显示当前视图下生效的配置。

[RouterA] display this

#

sysname RouterA

#

nqa schedule 1 1 start-time now lifetime forever

#

snmp-agent

snmp-agent local-engineid 800063A280000605B36B9E00000001

snmp-agent sys-info version v3

#

rtm environment backup 0

rtm environment delay 0

rtm environment loss 0

#

Return

相关推荐

Python入门学习记录之一:变量_python怎么用变量

写这个,主要是对自己学习python知识的一个总结,也是加深自己的印象。变量(英文:variable),也叫标识符。在python中,变量的命名规则有以下三点:>变量名只能包含字母、数字和下划线...

python变量命名规则——来自小白的总结

python是一个动态编译类编程语言,所以程序在运行前不需要如C语言的先行编译动作,因此也只有在程序运行过程中才能发现程序的问题。基于此,python的变量就有一定的命名规范。python作为当前热门...

Python入门学习教程:第 2 章 变量与数据类型

2.1什么是变量?在编程中,变量就像一个存放数据的容器,它可以存储各种信息,并且这些信息可以被读取和修改。想象一下,变量就如同我们生活中的盒子,你可以把东西放进去,也可以随时拿出来看看,甚至可以换成...

绘制学术论文中的“三线表”具体指导

在科研过程中,大家用到最多的可能就是“三线表”。“三线表”,一般主要由三条横线构成,当然在变量名栏里也可以拆分单元格,出现更多的线。更重要的是,“三线表”也是一种数据记录规范,以“三线表”形式记录的数...

Python基础语法知识--变量和数据类型

学习Python中的变量和数据类型至关重要,因为它们构成了Python编程的基石。以下是帮助您了解Python中的变量和数据类型的分步指南:1.变量:变量在Python中用于存储数据值。它们充...

一文搞懂 Python 中的所有标点符号

反引号`无任何作用。传说Python3中它被移除是因为和单引号字符'太相似。波浪号~(按位取反符号)~被称为取反或补码运算符。它放在我们想要取反的对象前面。如果放在一个整数n...

Python变量类型和运算符_python中变量的含义

别再被小名词坑哭了:Python新手常犯的那些隐蔽错误,我用同事的真实bug拆给你看我记得有一次和同事张姐一起追查一个看似随机崩溃的脚本,最后发现罪魁祸首竟然是她把变量命名成了list。说实话...

从零开始:深入剖析 Spring Boot3 中配置文件的加载顺序

在当今的互联网软件开发领域,SpringBoot无疑是最为热门和广泛应用的框架之一。它以其强大的功能、便捷的开发体验,极大地提升了开发效率,成为众多开发者构建Web应用程序的首选。而在Spr...

Python中下划线 ‘_’ 的用法,你知道几种

Python中下划线()是一个有特殊含义和用途的符号,它可以用来表示以下几种情况:1在解释器中,下划线(_)表示上一个表达式的值,可以用来进行快速计算或测试。例如:>>>2+...

解锁Shell编程:变量_shell $变量

引言:开启Shell编程大门Shell作为用户与Linux内核之间的桥梁,为我们提供了强大的命令行交互方式。它不仅能执行简单的文件操作、进程管理,还能通过编写脚本实现复杂的自动化任务。无论是...

一文学会Python的变量命名规则!_python的变量命名有哪些要求

目录1.变量的命名原则3.内置函数尽量不要做变量4.删除变量和垃圾回收机制5.结语1.变量的命名原则①由英文字母、_(下划线)、或中文开头②变量名称只能由英文字母、数字、下画线或中文字所组成。③英文字...

更可靠的Rust-语法篇-区分语句/表达式,略览if/loop/while/for

src/main.rs://函数定义fnadd(a:i32,b:i32)->i32{a+b//末尾表达式}fnmain(){leta:i3...

C++第五课:变量的命名规则_c++中变量的命名规则

变量的命名不是想怎么起就怎么起的,而是有一套固定的规则的。具体规则:1.名字要合法:变量名必须是由字母、数字或下划线组成。例如:a,a1,a_1。2.开头不能是数字。例如:可以a1,但不能起1a。3....

Rust编程-核心篇-不安全编程_rust安全性

Unsafe的必要性Rust的所有权系统和类型系统为我们提供了强大的安全保障,但在某些情况下,我们需要突破这些限制来:与C代码交互实现底层系统编程优化性能关键代码实现某些编译器无法验证的安全操作Rus...

探秘 Python 内存管理:背后的神奇机制

在编程的世界里,内存管理就如同幕后的精密操控者,确保程序的高效运行。Python作为一种广泛使用的编程语言,其内存管理机制既巧妙又复杂,为开发者们提供了便利的同时,也展现了强大的底层控制能力。一、P...