扉页

Adobe Systems

H3C S3600V2系列以太网交换机

配置指导

杭州华三通信技术有限公司

http://www.h3c.com.cn

资料版本：6W101-20110831

产品版本：Release 2101

Copyright © 2011 杭州华三通信技术有限公司及其许可者 版权所有，保留一切权利。

未经本公司书面许可，任何单位和个人不得擅自摘抄、复制本书内容的部分或全部，并不得以任何形式传播。

H3C、 Adobe Systems 、Aolynk、 [image] 、H3Care、 [image] 、TOP G、 [image] 、IRF、NetPilot、Neocean、NeoVTL、SecPro、SecPoint、SecEngine、SecPath、Comware、Secware、Storware、NQA、VVG、V2G、VnG、PSPT、XGbus、N-Bus、TiGem、InnoVision、HUASAN、华三均为杭州华三通信技术有限公司的商标。对于本手册中出现的其它公司的商标、产品标识及商品名称，由各自权利人拥有。

由于产品版本升级或其他原因，本手册内容有可能变更。H3C保留在没有任何通知或者提示的情况下对本手册的内容进行修改的权利。本手册仅作为使用指导，H3C尽全力在本手册中提供准确的信息，但是H3C并不确保手册内容完全没有错误，本手册中的所有陈述、信息和建议也不构成任何明示或暗示的担保。


配置指导 导读

H3C S3600V2系列以太网交换机配置指导共分为十本手册，主要针对S3600V2系列以太网交换机Release2101版本各软件特性的原理、具体配置方法等方面进行了介绍，各手册的内容如下：

手册名称

内容简介

01-基础配置指导

介绍了如何使用命令行接口、如何登录交换机，以及设备管理、自动配置等功能的配置。具体内容如下：

l CLI配置

l 登录交换机配置（登录设备方式介绍、配置用户通过CLI登录设备、配置通过Web网管登录设备、配置通过NMS登录设备、对登录用户的控制）

l FTP和TFTP配置（FTP配置、TFTP配置）

l 文件系统管理配置

l 配置文件管理

l 软件升级配置

l ISSU配置

l 设备管理配置

l 自动配置

02-IRF配置指导

介绍了H3C自主研发的虚拟化技术-IRF，以及如何使用多台S3600V2交换机组建基于IRF技术的虚拟化设备。通过IRF，您可以将多台设备虚拟为一台设备在网络中运行，在提高管理效率的同时，IRF还能为您提供1:N的设备级备份，并简化您的网络拓扑，帮助您实现业界领先的企业网、数据中心接入方案。

03-二层技术-以太网交换配置指导

介绍了以太网交换技术的原理及具体配置方法。通过这些技术您可以实现流量控制、流量的负载分担、同一VLAN内用户隔离、二层环路消除、VLAN划分、修改报文的VLAN Tag等功能。具体内容如下：

l 以太网端口配置

l Loopback接口和Null接口配置

l MAC地址表配置（MAC地址表配置、MAC Information配置）

l 以太网链路聚合配置

l 端口隔离配置

l 生成树配置

l BPDU Tunnel配置

l VLAN配置 （VLAN配置、Super VLAN配置、Isolate-user-VLAN配置、Voice VLAN配置）

l GVRP配置

l QinQ配置

l VLAN映射配置

l LLDP配置

l 业务环回组配置

04-三层技术-IP业务配置指导

介绍了IP业务相关技术的原理及具体配置方法。通过这些技术您可以完成IP地址的配置，进行IP参数的调整，将IP地址解析为以太网MAC地址，进行域名与IP地址之间的转换，对指定UDP端口的IP广播报文进行中继转发、实现IPv4网络和IPv6网络间的互通。具体内容如下：

l ARP配置（ARP配置、免费ARP配置、代理ARP配置、ARP Snooping配置）

l IP地址配置

l DHCP配置（DHCP概述、DHCP服务器配置、DHCP中继配置、DHCP客户端配置、DHCP Snooping配置、BOOTP客户端配置）

l 域名解析配置

l IRDP配置

l IP性能优化配置

l UDP Helper配置

l IPv6基础配置

l DHCPv6配置（DHCPv6简介、DHCPv6服务器配置、DHCPv6中继配置、DHCPv6客户端配置、DHCPv6 Snooping配置）

l IPv6域名解析配置

l 隧道配置

l GRE配置

05-三层技术-IP路由配置指导

介绍了构建规模网络所需要进行的路由信息学习及控制技术。具体内容如下：

l IP路由基础配置

l 静态路由配置

l RIP配置

l OSPF配置

l IS-IS配置

l BGP配置

l IPv6静态路由配置

l RIPng配置

l OSPFv3配置

l IPv6 IS-IS配置

l IPv6 BGP配置

l 路由策略配置

l 策略路由配置

l MCE配置

06-IP组播配置指导

介绍了各种二、三层组播业务的原理及具体配置方法。具体内容如下：

l 组播概述

l IGMP Snooping配置

l PIM Snooping配置

l 组播VLAN配置

l 组播路由与转发配置

l IGMP配置

l PIM配置

l MSDP配置

l MBGP配置

l MLD Snooping配置

l IPv6 PIM Snooping配置

l IPv6组播VLAN配置

l IPv6组播路由与转发配置

l MLD配置

l IPv6 PIM配置

l IPv6 MBGP配置

07-ACL和QoS配置指导

介绍了S3600V2交换机ACL和QoS的原理及配置方法。通过ACL或其他匹配规则，您可以对网络中的流量进行分类，从而实现多种基于数据类型的流量控制功能，合理分配有限的网络资源，提高网络使用效率。具体内容如下：

l ACL配置

l QoS配置（QoS简介，QoS配置方式，优先级映射配置，流量监管、流量整形和端口限速配置，拥塞管理配置，拥塞避免配置，流量过滤配置，重标记配置，流量重定向配置，全局CAR配置，流量统计配置，配置数据缓冲区，附录）

08-安全配置指导

介绍了各种安全业务特性的原理及配置方法。通过这些安全业务特性，您能够实现身份认证、接入安全认证、安全管理及攻击防御等功能。具体内容如下：

l AAA配置

l 802.1X配置（802.1X配置、802.1X支持EAD快速部署配置）

l MAC地址认证配置

l Portal配置

l Triple认证配置

l 端口安全配置

l User Profile配置

l HABP配置

l 公钥管理配置

l PKI配置

l IPsec配置

l SSH2.0配置（SSH2.0配置、SFTP配置）

l SSL配置

l TCP攻击防御配置

l IP Source Guard配置

l ARP攻击防御配置

l ND攻击防御配置

l URPF配置

l MFF配置

l SAVI配置

l 黑名单配置

09-可靠性配置指导

介绍了故障检测和快速保护倒换这两类可靠性技术的原理及具体配置。通过这些技术，您可以进行网络故障检测和诊断、出现故障时能够快速的进行业务恢复。具体内容如下：

l 可靠性概述

l 以太网OAM配置

l CFD配置

l DLDP配置

l RRPP配置

l Smart Link配置

l Monitor Link配置

l VRRP配置

l 双机热备配置

l BFD配置

l Track配置

10-网络管理和监控配置指导

介绍了网络管理和监控相关功能的原理及具体配置。通过这些功能，您可以对网络进行管理和监控，包括查看系统信息、对网络质量进行分析、对网络内所有具有时钟的设备进行时钟同步、对下连设备进行远程供电，并可以使用ping、tracert、debug等命令来检查、调试当前网络的连接情况。具体内容如下：

l 系统维护与调试配置

l NTP配置

l 信息中心配置

l SNMP配置（SNMP配置、MIB风格配置）

l RMON配置

l 镜像配置（端口镜像配置、流镜像配置）

l NQA配置

l sFlow配置

l IPC配置

l PoE配置

l 集群管理配置

l CWMP配置


00-前言

前 言

H3C S3600V2系列以太网交换机配置指导共分为十本手册，介绍了S3600V2系列以太网交换机各软件特性的原理及其配置方法，包含原理简介、配置任务描述和配置举例。《基础配置指导》主要介绍如何使用命令行接口、如何登录交换机、对设备进行文件系统管理、设备管理、软件升级以及自动配置等功能的配置，包括CLI、登录交换机、FTP和TFTP、文件系统管理、配置文件管理、软件升级、设备管理以及自动配置。

前言部分包含如下内容：

l 读者对象

l 本书约定

l 产品配套资料

l 资料获取方式

l 技术支持

l 资料意见反馈

读者对象

本手册主要适用于如下工程师：

l 网络规划人员

l 现场技术支持与维护人员

l 负责网络配置和维护的网络管理员

本书约定

1.命令行格式约定

格 式 | 意 义
粗体 | 命令行关键字（命令中保持不变、必须照输的部分）采用加粗字体表示。
斜体 | 命令行参数（命令中必须由实际值进行替代的部分）采用斜体表示。
[ ] | 表示用“[ ]”括起来的部分在命令配置时是可选的。
{ x | y | ... } | 表示从两个或多个选项中选取一个。
[ x | y | ... ] | 表示从两个或多个选项中选取一个或者不选。
{ x | y | ... } * | 表示从两个或多个选项中选取多个，最少选取一个，最多选取所有选项。
[ x | y | ... ] * | 表示从两个或多个选项中选取多个或者不选。
&<1-n> | 表示符号&前面的参数可以重复输入1～n次。
# | 由“#”号开始的行表示为注释行。

2.图形界面格式约定

格 式 | 意 义
< > | 带尖括号“< >”表示按钮名，如“单击<确定>按钮”。
[ ] | 带方括号“[ ]”表示窗口名、菜单名和数据表，如“弹出[新建用户]窗口”。
/ | 多级菜单用“/”隔开。如[文件/新建/文件夹]多级菜单表示[文件]菜单下的[新建]子菜单下的[文件夹]菜单项。

3.各类标志

本书还采用各种醒目标志来表示在操作过程中应该特别注意的地方，这些标志的意义如下：

该标志后的注释需给予格外关注，不当的操作可能会对人身造成伤害。

提醒操作中应注意的事项，不当的操作可能会导致数据丢失或者设备损坏。

为确保设备配置成功或者正常工作而需要特别关注的操作或信息。

对操作内容的描述进行必要的补充和说明。

配置、操作、或使用设备的技巧、小窍门。

4.图标约定

本书使用的图标及其含义如下：

该图标及其相关描述文字代表一般网络设备，如路由器、交换机、防火墙等。

该图标及其相关描述文字代表一般意义下的路由器，以及其他运行了路由协议的设备。

该图标及其相关描述文字代表二、三层以太网交换机，以及运行了二层协议的设备。

产品配套资料

H3C S3600V2系列以太网交换机的配套资料包括如下部分：

大类 | 资料名称 | 内容介绍
产品知识介绍 | 产品彩页 | 帮助您了解产品的主要规格参数及亮点
 | RPS电源用户手册 | 帮助您了解产品支持的RPS电源的外观、功能、规格
 | H3C低端系列以太网交换机RPS电源选购指南 | 帮助您了解各种RPS电源适用的交换机产品型号及RPS电源配套电缆的相关规格
 | H3C低端系列以太网交换机可插拔模块手册 | 帮助您了解产品支持的可插拔模块类型、外观和规格
设备安装 | 安全兼容性手册 | 列出产品的兼容性声明，并对兼容性和安全的细节进行说明
 | H3C 设备防雷安装指导手册 | 帮助您了解防雷接地设计和工程安装方法，以保证交换机具有良好的抗雷击性能
 | 快速安装指南 | 指导您对设备进行初始安装，通常针对最常用的情况，减少您的检索时间
 | 安装指导 | 帮助您详细了解设备硬件规格和安装方法，指导您对设备进行安装
 | H3C可插拔SFP[SFP+][XFP]模块安装指南 | 帮助您掌握SFP/SFP+/XFP模块的正确安装方法，避免因操作不当而造成器件损坏
业务配置 | 配置指导 | 帮助您掌握设备软件功能的配置方法及配置步骤
 | 命令参考 | 详细介绍设备的命令，相当于命令字典，方便您查阅各个命令的功能
运行维护 | H3C系列以太网交换机登录密码恢复手册 | 指导您在设备登录密码丢失的情况下，找回密码、或重新配置登录密码
 | 故障处理手册 | 指导您快速定位并处理软件故障
 | 版本说明书 | 帮助您了解产品版本的相关信息（包括：版本配套说明、兼容性说明、特性变更说明、技术支持信息）及软件升级方法

资料获取方式

您可以通过H3C网站（ www.h3c.com.cn ）获取最新的产品资料：

H3C网站与产品资料相关的主要栏目介绍如下：

l [服务支持/文档中心] ：可以获取硬件安装类、软件升级类、配置类或维护类等产品资料。

l [产品技术] ：可以获取产品介绍和技术介绍的文档，包括产品相关介绍、技术介绍、技术白皮书等。

l [解决方案] ：可以获取解决方案类资料。

l [服务支持/软件下载] ：可以获取与软件版本配套的资料。

技术支持

用户支持邮箱：customer_service@h3c.com

技术支持热线电话：400-810-0504（手机、固话均可拨打）

网址： http://www.h3c.com.cn

资料意见反馈

如果您在使用过程中发现产品资料的任何问题，可以通过以下方式反馈：

E-mail：info@h3c.com

感谢您的反馈，让我们做得更好！


1 CLI配置

相关链接

  • 1.1 认识命令行接口
  • 1.2 开始使用命令行接口
  • 1.3 命令行格式约定
  • 1.4 命令的undo格式
  • 1.5 命令视图
  • 1.6 使用命令行在线帮助
  • 1.7 命令行输入
  • 1.8 解读输入错误提示信息
  • 1.9 使用历史命令
  • 1.10 便捷的查看显示信息
  • 1.11 配置用户级别和命令级别
  • 1.12 保存当前配置
  • 1.13 CLI显示和维护
父主题： 01-CLI配置


1.1 认识命令行接口

命令行接口是用户与设备之间的文本类指令交互界面，用户键入文本类命令，通过输入回车键提交设备执行相关命令，从而对设备进行配置和管理，并可以通过查看输出信息确认配置结果。对比图形界面使用鼠标点击相关选项进行设置，命令行接口形式可以一次输入含义更为丰富的指令。设备的命令行接口界面如 图1-1 所示：

图1-1 命令行接口界面


1.2 开始使用命令行接口

设备支持多种方式进入命令行接口，比如通过Console口登录设备后进入命令行接口界面、通过Telnet方式登录设备后进入命令行接口界面、通过SSH方式登录设备后进入命令行接口界面等，各方式的详细描述请参见“基础配置指导”中的相关章节。


1.3 命令行格式约定

命令行格式约定可以帮助您理解命令含义，产品手册中命令行表示规则遵循 表1-1 约定：

表1-1 命令行格式约定

格式 | 意义
粗体 | 命令行关键字（命令中保持不变的部分）采用加粗字体表示。
斜体 | 命令行参数（命令中必须由实际值进行替代的部分）采用斜体表示。
[ ] | 用“[ ]”括起来的部分在命令配置时是可选的。
{ x | y | ... } | 从两个或多个选项中仅选取一个。
[ x | y | ... ] | 从两个或多个选项中选取一个或者不选。
{ x | y | ... } * | 从两个或多个选项中至少选取一个。
[ x | y | ... ] * | 从两个或多个选项中选取一个、多个或者不选。
&<1-n> | 符号“&”前面的参数可以重复输入1～n次。
# | 由“#”号开始的行为注释行。

命令行关键字输入时不区分大小写。

根据 表1-1 规则解读命令 clock datetime time date：

图1-2 命令行解读

示例：

使用如下命令行，则可以将设备的系统时间设置为2010年2月23日10时30分20秒。

<Sysname> clock datetime 10:30:20 2/23/2010

如遇到其他更为复杂的命令形式，都可以参照 表1-1 的约定解读其逻辑关系。


1.4 命令的undo格式

命令的 undo 形式一般用来恢复缺省情况、禁用某个功能或者删除某项设置。

在命令前加 undo 关键字，即为命令的 undo 形式，几乎每条配置命令都有对应的 undo 形式。

例如，info-center enable 命令用来开启信息中心；undo info-center enable 命令用来关闭信息中心。


1.5 命令视图

1.5.1 命令视图简介

设备提供丰富的功能，也提供了相应的配置和查询命令。为便于您使用这些命令，设备将命令按功能进行分类组织。功能分类与命令视图对应，当要配置某功能的某条命令时，需要先进入这条命令所在的视图。

命令视图采用分层结构，它们之间既有联系又有区别。如 图1-3 所示，

l 用户登录设备后，直接进入用户视图。此时屏幕显示的提示符是：<设备名>。用户视图下可执行的操作主要包括查看操作、调试操作、文件管理操作、设置系统时间、重启设备、FTP和Telnet操作等。

l 从用户视图可以进入系统视图，系统视图下能对设备运行参数进行配置，比如配置夏令时、配置欢迎信息、配置快捷键等。

l 在系统视图下键入不同的命令，可以进入相应的功能视图，完成各种功能的配置，比如：进入接口视图配置接口参数、创建VLAN并进入VLAN视图、进入用户界面视图配置登录用户的属性、创建本地用户并进入本地用户视图配置本地用户的密码和级别等。

想要了解某命令视图下支持哪些命令，请在命令视图提示符下键入“?”，系统将自动罗列出该命令行视图下可以执行的所有命令。

图1-3 命令视图示意图

1.5.2 进入系统视图

当用户登录到设备后，会自动进入用户视图，此时屏幕显示的提示符是：<设备名>。用户视图可执行的操作有限（比如查看操作、文件操作、FTP和Telnet操作等），需要进入系统视图，才能进一步对设备进行配置。

表1-2 进入系统视图

操作 | 命令 | 说明
进入系统视图 | system-view | 必选 该命令在用户视图下执行

1.5.3 退出当前视图

命令视图采用分层结构，比如用户视图下有系统视图，系统视图下又有接口视图、VLAN视图等。当前视图下的功能配置完成，需要退出当前视图时，可以进行如下操作。

表1-3 退出当前视图

操作 | 命令 | 说明
从当前视图返回上一级视图 | quit | 必选 该命令可在任意视图下执行

l 用户视图下执行 quit 命令会中断用户终端与设备之间的当前连接。

l 公共密钥编辑视图下请使用 public-key-code end 返回上一级视图（公共密钥视图）；公共密钥视图下请使用 peer-public-key end 命令返回系统视图。

1.5.4 返回用户视图

本特性为用户提供了一种快捷的、从任意的非用户视图返回到用户视图的方式，而不需要多次执行 quit 命令。用户也可以直接按组合键<Ctrl+Z>从当前视图退回到用户视图。

表1-4 退回用户视图

操作 | 命令 | 说明
返回用户视图 | return | 必选 该命令可在任意的非用户视图下执行


1.6 使用命令行在线帮助

在命令行输入过程中，您可以随时键入“?”以获得详尽的在线帮助。下面给出常见的在线帮助应用场景，供您参考使用：

(1) 在任意视图下，键入<?>即可获取该视图下您可以使用的所有命令及其简单描述。例如：

<Sysname> ?

User view commands:

archive Specify archive settings

backup Backup next startup-configuration file to TFTP server

boot-loader Set boot loader

bootrom Update/read/backup/restore bootrom

cd Change current directory

……略……

(2) 键入一条命令的关键字，后接以空格分隔的<?>。

如果<?>位置为关键字，则列出全部关键字及其简单描述。例如：

<Sysname> terminal ?

debugging Send debug information to terminal

logging Send log information to terminal

monitor Send information output to current terminal

trapping Send trap information to terminal

如果<?>位置为参数，则列出有关的参数描述。例如：

<Sysname> system-view

[Sysname] interface vlan-interface ?

<1-4094> VLAN interface

[Sysname] interface vlan-interface 1 ?

<cr>

[Sysname] interface vlan-interface 1

<cr>表示命令行当前位置无参数，直接键入回车即可执行。

(3) 键入命令的不完整关键字，其后紧接<?>，显示以该字符串开头的所有命令关键字。例如：

<Sysname> f?

fixdisk

format

free

ftp

<Sysname> display ftp?

ftp

ftp-server

ftp-user


1.7 命令行输入

1.7.1 编辑命令行

输入命令行时的常用编辑功能，请参见 表1-5 的介绍。

表1-5 编辑功能表

按键 | 功能
普通按键 | 若编辑缓冲区未满，则插入到当前光标位置，并向右移动光标
退格键<Backspace> | 删除光标位置的前一个字符，光标前移
左光标键←或<Ctrl+B> | 光标向左移动一个字符位置
右光标键→或<Ctrl+F> | 光标向右移动一个字符位置
<Tab>键 | 输入不完整的关键字后按下<Tab>键，系统自动补全关键字： l 如果与之匹配的关键字唯一，则系统用此完整的关键字替代原输入并换行显示； l 如果与之匹配的关键字不唯一，则反复按<Tab>键，可以循环显示所有以输入字符串开头的关键字； l 如果没有与之匹配的关键字，系统会不作任何修改，重新换行显示原输入。

1.7.2 快速输入命令行

设备支持不完整关键字输入，即在当前视图下，当输入的字符足够匹配唯一的关键字时，可以不必输入完整的关键字。该功能提供了一种快捷的输入方式，有助提高操作效率。

比如用户视图下以 s 开头的命令有 startup saved-configuration、system-view 等。

l 如果要输入 system-view，可以直接输入 sy（注意不能只输入 s，因为输入不能确定唯一匹配关键字）。

l 如果要输入 startup saved-configuration，可以直接输入 st s；

您可以按<Tab>键由系统自动补全关键字的全部字符，以确认系统的选择是否为所需输入的关键字。

1.7.3 配置命令行的别名

通过配置命令行别名，用户可以将设备当前支持的命令行的第一个关键字替换为自己惯用的关键字。比如将 display 的别名设置为 show，这样在设备上执行 display xx命令时只需要输入 show xx即可。

在配置命令行别名时，需要遵循以下约定：

l 当查看当前配置信息以及保存配置信息时，用户输入的带别名的命令将以系统原始的命令形式被显示或存储，而不会以别名的形式。即用户的别名命令可以使用，但不会参与配置保存和恢复。

l 配置命令行别名时，输入的待替换的关键字（cmdkey）和替换后的关键字（alias）参数必须是完整的输入形式。

l 在用户启动别名功能的情况下，当用户输入不完整关键字，且该关键字与用户已匹配的别名以及现有某关键字同时部分匹配时，以别名替换优先。用户想输入现有关键字对应的命令需要完整输入该关键字。如果用户输入的字符串与多个所设置的别名部分匹配，则输出歧义匹配信息。

l 当用户对别名关键字使用<Tab>键时，将联想出所对应的原始关键字。

l 不支持对整个命令行的替换。只支持对第一关键字的别名设置，以及undo命令的第二关键字的别名替换。

表1-6 配置命令行的别名

操作 | 命令 | 说明
进入系统视图 | system-view | -
使能命令行别名功能 | command-alias enable | 必选 缺省情况下，命令行别名功能处于关闭状态，即用户不能给命令行指定别名
给指定的命令行配置别名 | command-alias mapping cmdkey alias | 必选 缺省情况下，命令行没有配置别名

您可以随时使用 display command-alias 命令来显示当前已经设置的命令行别名。

1.7.4 配置命令行的快捷键

为便于用户对常用命令进行快捷操作，系统提供了五个快捷键供用户自定义。只要用户按下某个快捷键，系统即可执行对应的命令。

表1-7 配置命令行的快捷键

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置命令行的快捷键 | hotkey { CTRL_G | CTRL_L | CTRL_O | CTRL_T | CTRL_U } command | 可选 缺省情况请参见表下方的说明
显示系统中快捷键的分配信息 | display hotkey [ | { begin | exclude | include } regular-expression ] | 可在任意视图下执行，系统保留的快捷键请参见 表1-8

缺省情况下，系统为<Ctrl+G>、<Ctrl+L>、<Ctrl+O>三个快捷键指定了对应的命令，其它两个快捷键<Ctrl+T>、<Ctrl+U>缺省值为NULL（空）。

l <Ctrl+G>对应命令 display current-configuration（显示当前配置）；

l <Ctrl+L>对应命令 display ip routing-table（显示IPv4路由表信息）；

l <Ctrl+O>对应命令 undo debugging all（关闭所有模块的调试信息开关）。

表1-8 系统保留的快捷键

快捷键 | 功能
<Ctrl+A> | 将光标移动到当前行的开头
<Ctrl+B> | 将光标向左移动一个字符
<Ctrl+C> | 停止当前正在执行的功能
<Ctrl+D> | 删除当前光标所在位置的字符
<Ctrl+E> | 将光标移动到当前行的末尾
<Ctrl+F> | 将光标向右移动一个字符
<Ctrl+H> | 删除光标左侧的一个字符
<Ctrl+K> | 终止呼出的连接
<Ctrl+N> | 显示历史命令缓冲区中的后一条命令
<Ctrl+P> | 显示历史命令缓冲区中的前一条命令
<Ctrl+R> | 重新显示当前行信息
<Ctrl+V> | 粘贴剪贴板的内容
<Ctrl+W> | 删除光标左侧连续字符串内的所有字符
<Ctrl+X> | 删除光标左侧所有的字符
<Ctrl+Y> | 删除光标右侧所有的字符
<Ctrl+Z> | 退回到用户视图
<Ctrl+]> | 终止呼入的连接或重定向连接
<Esc+B> | 将光标移动到左侧连续字符串的首字符处
<Esc+D> | 删除光标所在位置及其右侧连续字符串内的所有字符
<Esc+F> | 将光标向右移到下一个连续字符串之前
<Esc+N> | 将光标向下移动一行（键入回车前有效）
<Esc+P> | 将光标向上移动一行（键入回车前有效）
<Esc+<> | 将光标所在位置指定为剪贴板的开始位置
<Esc+>> | 将光标所在位置指定为剪贴板的结束位置

以上快捷键为设备所定义，当用户使用终端软件与设备进行交互时，这些快捷键可能在终端软件中被定义为其它指令。此时，快捷键的操作优先遵从终端软件的定义，而不会对设备生效。

1.7.5 命令行输入回显功能

当您在未完成输入操作却被大量的系统信息打断时，开启此功能可以回显您已经输入而未提交执行的信息，方便您继续完成未输入的内容。

表1-9 配置命令行输入回显功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
打开命令行输入回显功能 | info-center synchronous | 必选 缺省情况下，命令行输入回显功能处于关闭状态

l 在当前命令行提示符下，如果用户没有任何输入，此时若有日志等系统信息输出，输出后将不会回显命令行提示符；

l 当处在交互状态，需要用户输入一些交互信息时（非Y/N确认信息），因为情况各异，所以若有系统信息输出，输出后不再回显提示信息，而只是将用户已有的输入换行打印出来。

l info-center synchronous 命令的详细介绍请参见“网络管理和监控命令参考”中的“信息中心”。


1.8 解读输入错误提示信息

您所有键入的命令，如果通过设备的语法检查，则正确执行，否则向您报告错误信息，常见错误信息参见 表1-10 。

表1-10 命令行常见错误信息表

英文错误信息 | 错误原因
% Unrecognized command found at '^' position. | 在符号'^'指示位置的命令无法解析
% Incomplete command found at '^' position. | 在符号'^'指示位置的命令不完整
% Ambiguous command found at '^' position. | 在符号'^'指示位置的参数不明确，存在二义性
Too many parameters | 输入参数太多
% Wrong parameter found at '^' position. | 在符号'^'指示位置的参数错误


1.9 使用历史命令

命令行接口会将您最近使用的历史命令自动保存到历史命令缓存区，您可以随时了解最近执行的命令，以及调用保存的历史命令来进行重复输入。

1.9.1 调用历史命令

表1-11 调用历史命令

操作 | 命令或按键 | 结果
显示历史命令 | display history-command [ | { begin | exclude | include } regular-expression ] | 显示用户输入的有效历史命令
访问上一条历史命令 | 上光标键↑或<Ctrl+P> | 如果还有更早的历史命令，则显示上一条历史命令
访问下一条历史命令 | 下光标键↓或<Ctrl+N> | 如果还有更晚的历史命令，则显示下一条历史命令

用光标键对历史命令进行访问，在Windows 200X及XP的Terminal和Telnet下均有效，但对于Windows 9X超级终端，↑、↓光标键会无效，这是由于Windows 9X的超级终端对这两个键作了不同解释所致，这时可以用组合键<Ctrl+P>和<Ctrl+N>来达到同样效果。

下面是关于历史命令的一些详细说明，您可以做进一步了解：

l 设备保存的历史命令与用户输入的命令格式相同，如果您使用了命令的不完整形式，保存的历史命令也是不完整形式。

l 如果您连续多次执行同一条命令，设备的历史命令中只保留最早的一次。但如果执行时输入的形式不同，将作为不同的命令对待。例如：多次执行 display cu 命令，历史命令中只保存一条。如果执行 display cu 和 display current-configuration，将保存为两条历史命令。

1.9.2 配置历史命令缓冲区的大小

表1-12 配置终端属性

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入用户界面视图 | user-interface { first-num1 [ last-num1 ] | { aux | vty } first-num2 [ last-num2 ] } | -
设置历史命令缓冲区可存放的历史命令的条数 | history-command max-size size-value | 可选 缺省情况下，历史命令缓冲区可存放10条历史命令

user-interface 和 history-command max-size命令的详细介绍请参见“基础配置命令参考”中的“登录交换机”。


1.10 便捷的查看显示信息

1.10.1 分屏显示

1. 分屏信息的显示控制

当显示信息较多超过一屏时，系统会自动暂停将信息分屏显示，方便您查看显示信息。

这时您可以使用 表1-13 所示的按键来选择下一步操作。

表1-13 显示功能表

按键或命令 | 功能
键入空格键 | 继续显示下一屏信息
键入回车键 | 继续显示下一行信息
键入<Ctrl+C> | 停止显示和命令执行
<PageUp> | 显示上一页信息
<PageDown> | 显示下一页信息

缺省情况下，一屏显示24行信息，您也可以使用 screen-length 命令设置用户界面下一屏显示的行数（screen-length 命令的详细介绍请参见“基础配置命令参考”中的“登录交换机”）。

2. 关闭分屏显示功能

您可以通过以下配置禁用当前登录用户的分屏显示功能。禁止分屏显示时，会一次显示所有信息，如果信息较多，则会连续刷屏，不方便立即查看。

表1-14 禁止分屏显示

操作 | 命令 | 说明
禁用当前用户的分屏显示功能 | screen-length disable | 必选 缺省情况下，用户登录后将遵循用户界面下的 screen-length 设置。screen-length 设置的缺省情况为：允许分屏显示，下一屏显示24行数据 该操作在用户视图下执行，仅对当前用户有效，用户重登录后将恢复到缺省情况

1.10.2 正则表达式过滤显示

1. 正则表达式过滤简介

在执行 display 命令查看显示信息时，用户可以使用正则表达式来过滤显示信息，以便快速的找到自己关注的信息。

过滤显示的使用方法有两种：

l 在命令行中通过输入| { begin | exclude | include } regular-expression参数的方式来过滤显示；

l 在分屏显示时，使用“/”、“-”或“+”符号加正则表达式的方式，它将对剩余还未显示的信息使用正则表达式进行过滤显示。其中，“/”等同关键字 begin；“-”等同关键字 exclude；“+”等同关键字 include。

begin、exclude 或 include 关键字的含义如下：

l begin：显示特定行及其以后的所有行，该特定行必须包含指定正则表达式。

l exclude：显示不包含指定正则表达式的所有行。

l include：只显示包含指定正则表达式的所有行。

正则表达式（regular-expression）为1～256个字符的字符串，区分大小写，它还支持多种特殊字符，特殊字符的匹配规则如 表1-15 所示。

表1-15 正则表达式中的特殊字符

特殊字符 | 含义 | 使用说明
^string | 行首匹配符，string只能出现在每行的开始 | 如：^user只能匹配以user开始的行，不能匹配以Auser开始的行
string$ | 行尾匹配符，string只能出现在每行的末尾 | 如：user$只能匹配以user结尾的行，不能匹配以userA结尾的行
. | 句点，通配符，匹配任何一个字符，包括单个字符、特殊字符和空格等 | 如：.s可以匹配as和bs等
* | 星号，匹配星号前面的字符或字符组零次或多次 | 如：zo*可以匹配z以及zoo；(zo)*可以匹配zo以及zozo
+ | 加号，匹配加号前面的字符或字符组一次或多次 | 如：zo+可以匹配zo以及zoo，但不能匹配z
| | 竖线，匹配|左边的整个字符串或者右边的整个字符串 | 如：def|int只能匹配包含def或者int的字符串
_ | 下划线，该字符出现在表达式的开头或结尾时，等效于行首匹配符或行尾匹配符（即特殊字符^或$），其它情况下等效于逗号、空格或者作为普通字符时的左括号、右括号、左大括号、右大括号 | 如：a_b可以匹配a b和a(b等；_ab只能匹配以ab开头的行；ab_只能匹配以ab结束的行
- | 连接符，用于连接两个数值或字母（小的在前，大的在后），与“[ ]”符号连用表示一个范围 | 如：从1到9表示为1-9（包括1和9）；从a到h表示为a-h（包括a和h）
[ ] | 表示字符选择范围，将以选择范围内的单个字符为条件进行匹配，只要字符串里包含该范围的某个字符就能匹配到 | 如：[16A]表示可以匹配到的字符串只需要包含1、6或A中任意一个；[1-36A] 表示可以匹配到的字符串只需要包含1、2、3、6或A中任意一个（-为连接符） 如果]需要作为普通字符出现在[ ]内时，必须把]写在[ ]的最前面，形如[]string]，才能匹配到]。[没有这样的限制
( ) | 表示字符组，一般与“+”或“*”等符号一起使用 | 如：(123A)表示字符组123A；408(12)+可以匹配40812或408121212等字符串，但不能匹配408
\index | 表示重复一次指定字符组，字符组是指\前用()括起来的字符串，index对应\前字符组的顺序号按从左至右的顺序从1开始编号：如果\前面只有一个字符组，则index只能为1；如果\前面有n个字符组，则index可以为1到n中的任意整数 | 如：(string)\1表示把string重复一次，匹配的字符串必须包含stringstring；(string1)(string2)\2表示把string2重复一次，匹配的字符串必须包含string1string2string2；(string1)(string2)\1\2表示先把string1重复一次，再重复一次string2，匹配的字符串必须包含string1string2string1string2
[^] | 表示选择范围外的字符，将以单个字符为条件进行匹配，只要字符串里包含该范围外的某个字符就能匹配到 | 如：[^16A]表示可匹配的字符串只需要包含1、6和A之外的任意字符，该字符串也可以包含字符1、6或A，但不能只包含这三个字符。比如[^16A]可以匹配abc、m16，不能匹配1、16、16A
\<string | 匹配以string开头的字符串 | 如：\<do可以匹配单词domain，还可以匹配字符串doa
string\> | 匹配以string结尾的字符串 | 如：do\>可以匹配单词undo，还可以匹配字符串abcdo
\bcharacter2 | 匹配characte1character2，characte1可以是除了数字、字母和下划线外的任意字符，\b等效于[^A-Za-z0-9_] | 如：\ba可以匹配-a，-为characte1，a为character2，但是不能匹配2a和ba等
\Bcharacter | 匹配到的字符串中必须包含字符character，且character前不能是空格 | 如：\Bt可以匹配install里的t而不能匹配big top中的t
character1\w | 匹配characte1character2，character2必须是数字、字母或下划线。\w相当于[A-Za-z0-9_] | 如：v\w能匹配到vlan，v为characte1，l为character2，v\w还能匹配service，i为character2
\W | 等效于\b | 如：\Wa可以匹配-a，-为characte1，a为character2，但是不能匹配2a和ba等
\ | 转义操作符，\后紧跟本表列的单个特殊字符时，将去除特殊字符的特定含义 | 如：\\可以匹配包含\的字符串，\^可以匹配包含^的字符串，\\b可以匹配包含\b的字符串

2. 正则表达式过滤举例

(1) begin 参数应用举例

# 查看当前生效的配置中，从包含“user-interface”字符串的行开始到最后一行的配置信息（该显示信息与用户的当前配置有关）。

<Sysname> display current-configuration | begin user-interface

user-interface aux 0

user-interface vty 0 15

authentication-mode none

user privilege level 3

#

return

(2) exclude 参数应用举例

# 查看路由表中的非直连路由（该显示信息与用户的当前配置有关）。

<Sysname> display ip routing-table | exclude Direct

Routing Tables: Public

Destination/Mask Proto Pre Cost NextHop Interface

1.1.1.0/24 Static 60 0 192.168.0.0 Vlan1

(3) include 参数应用举例

# 查看路由表中包含Vlan的路由表项（该显示信息与用户的当前配置有关）。

<Sysname> display ip routing-table | include Vlan

Routing Tables: Public

Destination/Mask Proto Pre Cost NextHop Interface

192.168.1.0/24 Direct 0 0 192.168.1.42 Vlan999


1.11 配置用户级别和命令级别

1.11.1 级别简介

为了限制不同用户对设备的访问权限，系统对用户进行了分级管理。用户的级别与命令级别对应，不同级别的用户登录后，只能使用等于或低于自己级别的命令。

命令的级别由低到高分为访问级、监控级、系统级和管理级四种，分别对应级别值0、1、2、3。详细介绍请见 表1-16 ：

表1-16 命令级别简介

级别值 | 级别名称 | 描述
0 | 访问级 | 用于网络诊断等功能的命令、从本设备出发访问外部设备的命令。该级别命令配置后不允许保存，设备重启后，该级别命令会恢复到缺省状态 缺省情况下，访问级的命令包括：ping、tracert、telnet、ssh2 等
1 | 监控级 | 用于系统维护、业务故障诊断等功能的命令。该级别命令配置后不允许保存，设备重启后，该级别命令会恢复到缺省状态 缺省情况下，监控级的命令包括：debugging、terminal、refresh、send 等
2 | 系统级 | 业务配置命令，包括路由、各个网络层次的命令，这些命令用于向用户提供直接网络服务 缺省情况下，系统级的命令包括：所有配置命令（管理级的命令除外）
3 | 管理级 | 关系到系统的基本运行、系统支撑模块功能的命令，这些命令对业务提供支撑作用 缺省情况下，管理级的命令包括：文件系统命令、FTP命令、TFTP命令、XModem命令下载、用户管理命令、级别设置命令、系统内部参数设置命令（非协议规定、非RFC规定）等

1.11.2 配置用户级别

用户级别可以通过AAA认证参数或者用户界面来配置：

1. 通过AAA认证参数配置用户级别

如果用户登录时使用的用户界面的认证方式为 scheme，并且用户登录时需要输入用户名和密码，则用户级别以及用户可使用的命令，在配置AAA认证时指定。

表1-17 通过AAA认证参数配置用户级别

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
进入用户界面视图 |  | user-interface { first-num1 [ last-num1 ] | { aux | vty } first-num2 [ last-num2 ] } | -
设置登录用户界面的认证方式为 scheme |  | authentication-mode scheme | 必选 缺省情况下，VTY用户界面认证方式为 password，AUX用户界面不需要认证
退回系统视图 |  | quit | -
配置SSH用户的认证方式为password方式 |  | 相关内容请参见“安全配置指导”中的“SSH2.0” | 如果用户使用SSH方式登录，并且认证时要求输入用户名和密码，则该步骤必选
通过认证参数设置用户的级别 | 使用本地认证时 | l 使用 local-user 命令创建本地用户并进入本地用户视图 l 使用 authorization-attribute 命令的 level 参数配置用户本身的级别 | 二者必选其一 使用本地认证时，如果没有配置用户级别，则用户级别为0，即只能使用0级别的命令 使用远程认证时，如果没有配置用户级别，则用户级别由认证服务器的缺省配置决定
 | 使用远程认证（RADIUS认证或者HWTACACS认证）时 | 在认证服务器上进行配置

l 关于用户界面的介绍请参见“基础配置指导”中的“登录交换机”。有关 user-interface、authentication-mode、user privilege level 命令的介绍请参见“基础配置命令参考”中的“登录交换机”。

l 有关AAA认证的介绍请参见“安全配置指导”中的“AAA”。local-user 和 authorization-attribute 命令的介绍请参见“安全命令参考”中的“AAA”。

l 有关SSH的介绍请参见“安全配置指导”中的“SSH2.0”。

2. 通过AAA认证参数配置用户级别举例

# 设置使用VTY 1的Telnet用户登录设备时，需要本地验证用户名和口令，用户级别为3。

<Sysname> system-view

[Sysname] user-interface vty 1

[Sysname-ui-vty1] authentication-mode scheme

[Sysname-ui-vty1] quit

[Sysname] local-user test

[Sysname-luser-test] password cipher 123

[Sysname-luser-test] service-type telnet

通过以上配置，用户使用VTY 1 Telnet登录设备时，需要输入用户名test，密码123，认证通过后只能使用级别为0的命令，想要使用级别为0、1、2、3的命令还需要配置：

[Sysname-luser-test] authorization-attribute level 3

3. 通过用户界面配置用户级别

l 如果用户登录时使用的用户界面的认证方式为 scheme，而且是SSH的publickey认证方式时（该方式只需要输入用户名，不需要输入密码），则用户级别等于用户界面的级别；

l 如果用户登录时使用的用户界面的认证方式为 none 或者 password（即不需要输入用户名），用户级别也等于用户界面的级别。

表1-18 通过用户界面配置用户级别（SSH的publickey认证方式）

操作 | 命令 | 说明
配置SSH用户的认证方式为publickey方式 | 相关内容请参见“安全配置指导”中的“SSH2.0” | 如果用户使用SSH方式登录，并且认证时只要输入用户名，不用输入密码，则该步骤必选 配置该步骤后，相应的用户界面的认证方式必须设置为 scheme
进入系统视图 | system-view | -
进入用户界面视图 | user-interface { first-num1 [ last-num1 ] | vty first-num2 [ last-num2 ] } | -
设置用户使用当前用户界面登录设备时的认证方式 | authentication-mode scheme | 必选 缺省情况下，VTY用户界面认证方式为 password，AUX用户界面不需要认证
配置从当前用户界面登录系统的用户的级别 | user privilege level level | 可选 缺省情况下，通过AUX用户界面登录系统的用户级别是3，通过VTY用户界面登录系统的用户级别是0

表1-19 通过用户界面配置用户级别（none或者password认证方式）

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入用户界面视图 | user-interface { first-num1 [ last-num1 ] | { aux | vty } first-num2 [ last-num2 ] } | -
设置用户使用当前用户界面登录设备时的认证方式 | authentication-mode { none | password } | 可选 缺省情况下，VTY用户界面认证方式为 password，AUX用户界面不需要认证
配置从当前用户界面登录系统的用户的级别 | user privilege level level | 可选 缺省情况下，通过AUX用户界面登录系统的用户级别是3，通过VTY用户界面登录系统的用户级别是0

4. 通过用户界面配置用户级别举例

l 设置所有的Telnet用户登录设备时，不需要身份认证，用户级别为1。（不设置身份认证可能存在安全隐患，请确保在安全性较高的网络环境中使用本配置）

<Sysname> system-view

[Sysname] user-interface vty 0 15

[Sysname-ui-vty0-15] authentication-mode none

[Sysname-ui-vty0-15] user privilege level 1

l 设置所有的Telnet用户登录设备时，需要验证口令，用户级别为2。

<Sysname> system-view

[Sysname] user-interface vty 0 15

[Sysname-ui-vty0-15] authentication-mode password

[Sysname-ui-vty0-15] set authentication password cipher 123

[Sysname-ui-vty0-15] user privilege level 2

缺省情况下，用户使用Telnet方式登录设备，通过口令验证后，只能使用级别为0的命令。通过用户界面设置级别后，用户使用Telnet方式登录设备，输入密码123后，就可以使用级别为0、1、2的命令。

1.11.3 切换用户级别

1. 用户级别切换功能简介

切换用户级别是指在不退出当前登录、不断开当前连接的前提下暂时的修改用户级别。级别修改后不需要重新登录，可以继续配置设备，只是可以执行的命令会不一样。比如用户的级别为3，可以对系统参数进行设置，如果将用户的级别切换到0，则只能执行简单的 ping、tracert 和很少一部分 display 命令等。切换后的级别是临时的，只对当前登录生效，用户重新登录后，又会恢复到原有级别。

l 为了防止对设备的误操作，通常情况下建议管理员使用较低级别的用户登录设备、查看设备运行参数，当需要对设备进行维护时，再临时切换到较高的级别；

l 当管理员需要暂时离开设备或者将设备暂时交给其它人代为管理时，为了安全起见，可以临时切换到较低的级别，来限制其它人员的操作。

2. 配置用户级别切换时的认证方式

l 从高级别切换到低级别或相同级别时，可以直接切换，不需要进行身份验证。

l 从低级别切换到高级别时，为了保证操作的安全性，需要进行身份认证。如 表1-20 所示，认证方式有四种。

表1-20 用户级别切换认证方式表

认证方式 | 涵义 | 说明
local | 本地密码认证 | 设备验证用户输入的级别切换密码 使用该方式时，需要在设备上使用 super password 命令设置级别切换密码
scheme | 通过HWTACACS/RADIUS进行远程AAA认证 | 设备将级别切换用户名和密码发送给HWTACACS/RADIUS服务器进行远程验证 使用该方式时，需要进行以下相关配置： l 在设备上配置HWTACACS/RADIUS方案，并在ISP域中引用已创建的HWTACACS/RADIUS方案，详细介绍请参见“安全配置指导”中的“AAA” l 在HWTACACS/RADIUS服务器上创建相应的用户并配置密码
local scheme | 本地密码认证和远程AAA认证相结合 | 先本地密码认证，若设备上没有设置本地级别切换密码，使用AUX用户界面登录的用户会直接进行级别切换，其它用户（使用VTY用户界面登录的用户）则转为远程AAA认证
scheme local | 远程AAA认证和本地密码认证相结合 | 先远程AAA认证，远程HWTACACS/RADIUS服务器无响应或设备上的AAA配置无效时，转为本地密码认证

表1-21 配置用户级别切换时的认证方式

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置用户级别切换时的认证方式 | super authentication-mode { local | scheme } * | 可选 缺省情况下，采用 local 认证方式
配置用户级别切换的密码 | super password [ level user-level ] { simple | cipher } password | 如果使用本地认证（即认证方式配置时选择了 local 参数），则该步骤必选 缺省情况下，没有设置切换用户级别的密码

l 在使用 super password 命令时，若不指定用户级别，则配置的是切换到3级用户的密码。

l 如果指定 simple 参数，则配置文件中保存的是明文形式的密码，容易被盗取；如果指定 cipher 参数，配置文件中保存的是密文形式的密码，更安全。

l 当用户使用AUX用户界面（指Console口）登录设备进行低级别到高级别的切换时，即便认证方式为 local，没有配置对应的用户级别切换密码，也可以成功的实现级别切换。

3. 切换用户级别

表1-22 切换用户级别

操作 | 命令 | 说明
切换用户级别 | super [ level ] | 必选 用户在登录设备时，已经具有了一定的级别，该级别由用户界面或者认证用户级别决定 该命令在用户视图下执行

切换用户级别时，根据用户界面认证方式和Super认证方式的不同组合设置，系统会要求用户输入不同的信息：

表1-23 用户级别切换时输入信息描述表

用户界面认证方式 | 用户级别切换认证方式 | 第一种认证方式下切换用户级别需要输入的信息 | 认证方式转换后切换用户级别需要输入的信息
none/password | local | 本地级别切换密码（设备上设置） | -
 | local scheme | 本地级别切换密码 | 级别切换用户名和密码（AAA服务器上设置）
 | scheme | 级别切换用户名和密码 | -
 | scheme local | 级别切换用户名和密码 | 本地级别切换密码
scheme | local | 本地级别切换密码 | -
 | local scheme | 本地级别切换密码 | 级别切换密码（AAA服务器上设置），系统使用登录用户名作为级别切换用户名
 | scheme | 级别切换密码（AAA服务器上设置），系统使用登录用户名作为级别切换用户名 | -
 | scheme local | 级别切换密码（AAA服务器上设置），系统使用登录用户名作为级别切换用户名 | 本地级别切换密码

l 当使用的认证方式中有 local 时，切换用户级别前需要配置用户级别切换的密码。

l 当使用的认证方式中有 scheme 时，切换用户级别前需要配置AAA相关参数。

l 用户最多可以连续输入三次密码，如果三次密码都错误则本次切换失败。

l 关于用户界面认证方式的相关描述请参见“基础配置指导”中的“登录交换机”。

1.11.4 修改命令级别

缺省情况，各个视图下的每条命令都有指定的级别（如 表1-16 所示）。管理员也可以根据用户需要改变命令的级别：实现低级别用户可以使用部分高级别命令的需求；或者将命令的级别提高，增加设备的安全性。

表1-24 修改命令的级别

操作 | 命令 | 说明
进入系统视图 | system-view | -
设置指定视图下的命令的级别 | command-privilege level level view view command | 可选 缺省情况请参见 表1-16

通常情况下，建议用户不要修改缺省的命令级别或者在专业人员的指导下进行修改，以免造成操作和维护上的不便甚至给设备带来安全隐患。


1.12 保存当前配置

在设备上，您可以随时输入 save 命令，将已经提交执行的所有命令行保存在配置文件中。这样在设备重启后，所有保存的配置不会丢失。配置保存不涉及一次性执行命令，比如：display 类显示命令（执行后即显示相关信息），reset 类清除命令（执行后即清除相关信息）。这类命令执行一次性操作要求，不会进行配置保存。


1.13 CLI显示和维护

在完成上述配置后，在任意视图下执行 display 命令可以查看系统相应的配置信息和运行信息。

表1-25 系统基本配置显示和维护

操作 | 命令
显示当前用户设置的命令行及其别名 | display command-alias [ | { begin | exclude | include } regular-expression ]
显示剪贴板的内容 | display clipboard [ | { begin | exclude | include } regular-expression ]


1 登录交换机方式介绍

相关链接

  • 1.1 登录交换机方式综述
  • 1.2 用户界面简介
父主题： 02-登录交换机配置


1.1 登录交换机方式综述

用户可以通过以下几种方式登录到交换机上，对交换机进行配置和管理：

登录方式及介绍 |  | 各种登录方式缺省状况分析
通过CLI登录设备 | 配置通过Console口登录设备 | 缺省情况下，用户可以直接通过Console口本地登录设备，登录时认证方式为None（不需要用户名和密码），登录用户级别为3
 | 配置通过Telnet登录设备 | 缺省情况下，用户不能直接通过Telnet方式登录设备。如需采用Telnet方式登录，需要先通过Console口本地登录设备、并完成如下配置： l 开启设备的Telnet功能 l 配置设备VLAN接口的IP地址，确保设备与Telnet登录用户间路由可达（缺省情况下，设备没有IP地址） l 配置VTY用户的认证方式（缺省情况下，VTY用户采用Password认证方式） l 配置VTY用户的用户级别（缺省情况下，VTY用户的用户级别为0）
 | 配置通过SSH登录 | 缺省情况下，用户不能直接通过SSH方式登录设备。如需采用SSH方式登录，需要先通过Console口本地登录设备、并完成如下配置： l 开启设备SSH功能并完成SSH属性的配置 l 配置设备VLAN接口的IP地址，确保设备与SSH登录用户间路由可达（缺省情况下，设备没有配置IP地址） l 配置VTY用户的认证方式为scheme（缺省情况下，VTY用户采用Password认证方式） l 配置VTY用户的用户级别（缺省情况下，VTY用户的用户级别为0）
 | 配置通过Modem登录设备 | 缺省情况下，用户可以直接通过Modem拨号方式登录设备，Modem用户的用户级别为3
配置通过Web网管登录设备 |  | 缺省情况下，用户不能直接通过Web登录设备。如需采用Web方式登录，需要先通过Console口本地登录设备、并完成如下配置： l 配置设备VLAN接口的IP地址，确保设备与Web登录用户间路由可达（缺省情况下，设备没有配置IP地址） l 配置Web用户的用户名与密码（缺省情况下，没有Web登录的用户名和密码） l 配置Web登录的用户级别（缺省情况下，未配置Web登录用户的用户级别） l 配置Web登录用户的服务类型为web（缺省情况下，未配置Web登录用户的服务类型）
配置通过NMS登录设备 |  | 缺省情况下，用户不能直接通过NMS登录设备。如需采用NMS方式登录，需要先通过Console口本地登录设备、并完成如下配置： l 配置设备VLAN接口的IP地址，确保设备与NMS登录用户间路由可达（缺省情况下，设备没有IP配置地址） l 配置SNMP基本参数

在以下的章节中，将分别为您介绍如何通过Console口、Telnet、Modem、Web及NMS登录到设备上。


1.2 用户界面简介

1.2.1 用户界面概述

当用户使用Console口、Telnet或者SSH方式登录设备的时候，系统会分配一个用户界面（也称为Line）用来管理、监控设备和用户间的当前会话。每个用户界面有对应的用户界面视图（User-interface view），在用户界面视图下网络管理员可以配置一系列参数，比如用户登录时是否需要认证、用户登录后的级别等，当用户使用该用户界面登录的时候，将受到这些参数的约束，从而达到统一管理各种用户会话连接的目的。

目前系统支持的命令行配置方式有：

l Console口本地配置

l Telnet或SSH本地或远程配置

与这些配置方式对应的是两种类型的用户界面：

l AUX用户界面：用来管理和监控通过Console口登录的用户。Console口端口类型为EIA/TIA-232 DCE。

l VTY（Virtual Type Terminal，虚拟类型终端）用户界面：用来管理和监控通过VTY方式登录的用户。VTY口属于逻辑终端线，用于对设备进行Telnet或SSH访问。

1.2.2 用户与用户界面的关系

用户界面的管理和监控对象是使用某种方式登录的用户，虽然单个用户界面某一时刻只能被一个用户使用，但它并不针对某个用户。比如用户A使用Console口登录设备时，将受到AUX用户界面视图下配置的约束，当使用VTY 1登录设备时，将受到VTY 1用户界面视图下配置的约束。

一台设备上最多支持1个AUX用户界面、16个VTY用户界面，这些用户界面与用户并没有固定的对应关系。用户登录时，系统会根据用户的登录方式，自动给用户分配一个当前空闲的、编号最小的某类型的用户界面，整个登录过程将受该用户界面视图下配置的约束。同一用户登录的方式不同，分配的用户界面不同；同一用户登录的时机不同，分配的用户界面可能不同。

1.2.3 用户界面的编号

用户界面的编号有两种方式：绝对编号方式和相对编号方式。

1. 绝对编号方式

使用绝对编号方式，可以唯一的指定一个用户界面或一组用户界面。绝对编号从0开始自动编号，每次增长1，先给所有AUX用户界面编号，其次是所有VTY用户界面。使用 display user-interface（不带参数）可查看到设备当前支持的用户界面以及它们的绝对编号。

2. 相对编号方式

相对编号是每种类型用户界面的内部编号。该方式只能指定某种类型的用户界面中的一个或一组，而不能跨类型操作。

相对编号方式的形式是：“用户界面类型 编号”，遵守如下规则：

l 控制台的相对编号：第一个为AUX 0，第二个为AUX 1，依次类推。

l VTY的相对编号：第一个为VTY 0，第二个为VTY 1，依次类推。


2 配置用户通过CLI登录设备

相关链接

  • 2.1 配置用户通过CLI登录设备简介
  • 2.2 配置通过Console口登录设备
  • 2.3 配置通过Telnet登录设备
  • 2.4 配置通过SSH登录
  • 2.5 配置通过Modem登录设备
  • 2.6 CLI登录显示和维护
父主题： 02-登录交换机配置


2.1 配置用户通过CLI登录设备简介

CLI（命令行接口）是用户与设备之间的文本类指令交互界面，用户键入文本类命令，通过输入回车键提交设备执行相关命令，用户可以输入命令对设备进行配置，并可以通过查看输出的信息确认配置结果，方便用户配置和管理设备。

通过CLI登录设备包括：通过Console口、Telnet、SSH或Modem四种登录方式。当您使用Console口、Telnet、SSH或Modem登录设备时，都需要使用CLI来与设备进行交互。

l 缺省情况下，用户不需要任何认证即可通过Console口及Modem方式登录设备，这给设备带来许多安全隐患；

l 缺省情况下，用户不能通过Telnet和SSH方式登录设备，这样不利于用户对设备进行远程管理和维护。

因此，用户需要对这些登录方式进行相应的配置，来增加设备的安全性及可管理性。

以下章节将分别为您介绍如何通过Console口、Telnet、SSH及Modem登录到设备，并配置通过Console口、Telnet、SSH及Modem登录设备时的认证方式、用户级别及公共属性，来实现对登录用户的控制和管理。


2.2 配置通过Console口登录设备

2.2.1 通过Console口登录设备简介

通过Console口进行本地登录是登录设备的最基本的方式，也是配置通过其他方式登录设备的基础。如图2-1 所示。

图2-1 通过Console口登录设备示意图

缺省情况下，设备可以通过Console口进行本地登录，用户登录到设备上后，即可以对各种登录方式进行配置。

本节将为您介绍：

l 设备缺省情况下，如何通过Console口登录设备。具体请参见 2.2.2 缺省配置下如何通过Console口登录设备。

l 设备Console口支持的登录方式及配置Console口登录认证方式的意义、各种认证方式的特点及注意事项。具体请参见 2.2.3 Console口登录的认证方式介绍。

l 当用户确定了今后通过Console口登录设备时将采用何种认证方式后、并通过缺省配置登录到设备后，用户如何在设备上配置Console口登录设备时的认证方式及用户级别，实现对Console口登录用户的控制和管理。具体请参见 2.2.4 配置通过Console口登录设备时无需认证（None）、2.2.5 配置通过Console口登录设备时采用密码认证（Password）及 2.2.6 配置通过Console口登录设备时采用AAA认证（Scheme）。

l 配置通过Console口登录设备时的公共属性。具体请参见 2.2.7 配置Console口登录方式的公共属性（可选）。

2.2.2 缺省配置下如何通过Console口登录设备

表2-1 通过Console登录设备需要具备的条件

对象 | 需要具备的条件
设备 | 缺省情况下，设备侧不需要任何配置
Console口登录用户 | 运行超级终端程序
 | 配置超级终端属性

当用户使用Console口登录设备时，用户终端的通信参数配置要和设备Console口的缺省配置保持一致，才能通过Console口登录到设备上。设备Console口的缺省配置如下：

表2-2 设备Console口缺省配置

属性 | 缺省配置
传输速率 | 9600bit/s
流控方式 | 不进行流控
校验方式 | 不进行校验
停止位 | 1
数据位 | 8

(1) 请使用产品随机附带的配置口电缆连接PC机和设备。请先将配置电缆的DB-9（孔）插头插入PC机的9芯（针）串口插座，再将RJ-45插头端插入设备的Console口中。

图2-2 将设备与PC通过配置口电缆进行连接

连接时请认准接口上的标识，以免误插入其它接口。

由于PC机串口不支持热插拔，请不要在设备带电的情况下，将串口插入或者拔出PC机。当连接PC和设备时，请先安装配置电缆的DB-9端到PC机，再连接RJ-45到设备；在拆下时，先拔出RJ-45端，再拔下DB-9端。

(2) 在PC机上运行终端仿真程序（如Windows XP/Windows 2000的超级终端等，以下配置以Windows XP为例），选择与设备相连的串口，设置终端通信参数：传输速率为9600bit/s、8位数据位、1位停止位、无校验和无流控，如图2-3 至图2-5 所示。

如果您的PC使用的是Windows 2003 Server操作系统，请在Windows组件中添加超级终端程序后，再按照本文介绍的方式登录和管理设备；如果您的PC使用的是Windows 2008 Server、Windows 7 、Windows Vista或其他操作系统，请您准备第三方的终端控制软件，使用方法请参照软件的使用指导或联机帮助。

图2-3 新建连接

图2-4 连接端口设置

图2-5 端口通信参数设置

(3) 设备上电，终端上显示设备自检信息，自检结束后提示用户键入回车，之后将出现命令行提示符（如<H3C>），如图2-6 所示。

图2-6 设备配置界面

(4) 键入命令，配置设备或查看设备运行状态。需要帮助可以随时键入“?”，具体的配置命令请参考本手册中相关部分的内容。

2.2.3 Console口登录的认证方式介绍

通过在Console口用户界面下配置认证方式，可以对使用Console口登录的用户进行限制，以提高设备的安全性。Console口支持的认证方式有 none、password 和 scheme 三种。

l 认证方式为 none：表示下次使用Console口本地登录设备时，不需要进行用户名和密码认证、任何人都可以通过Console口登录到设备上，这种情况可能会带来安全隐患。

l 认证方式为 password：表示下次使用Console口本地登录设备时，需要进行密码认证、只有密码认证成功、用户才能登录到设备上。配置认证方式为password后，请妥善保存密码。

l 认证方式为 scheme：表示下次使用Console口登录设备时需要进行用户名和密码认证，用户名或密码错误，均会导致登录失败。用户认证又分为本地认证和远程认证，如果采用本地认证，则需要配置本地用户及相应参数；如果采用远程认证，则需要在远程认证服务器上配置用户名和密码。有关用户认证方式及参数的详细介绍请参见“安全配置指导”中的“AAA”。配置认证方式为 scheme 后，请妥善保存用户名及密码。

不同的认证方式下，Console口登录方式需要进行的配置不同，具体配置如表2-3 所示。

表2-3 配置任务简介

认证方式 | 认证所需配置 |  |  | 说明
None | 设置登录用户的认证方式为不认证 |  |  | 具体内容请参见 2.2.4
Password | 设置登录用户的认证方式为Password认证 |  |  | 具体内容请参见 2.2.5
 | 设置本地验证的口令
Scheme | 设置登录用户的认证方式为Scheme认证 |  |  | 具体内容请参见 2.2.6
 | 选择认证方案 | 采用远端AAA服务器认证 | 在设备上配置RADIUS/HWTACACS方案
 |  |  | 在设备上配置域使用的AAA方案
 |  |  | 在AAA服务器上配置相关的用户名和密码
 |  | 采用本地认证 | 在设备上配置认证用户名和密码
 |  |  | 在设备上配置域使用的AAA方案为本地认证

改变Console口登录方式的认证方式后，该认证方式的设置不会立即生效。用户需要退出命令行接口后重新登录，该设置才会生效。

2.2.4 配置通过Console口登录设备时无需认证（None）

1. 配置前提

用户已经成功登录到了设备上，并希望以后通过Console口登录设备时无需进行认证。

缺省情况下，用户可以直接通过Console口本地登录设备，登录时认证方式为None（不需要用户名和密码），登录用户级别为3。如何在缺省情况下登录设备，具体请参见 2.2.2 缺省配置下如何通过Console口登录设备 。

2. 配置过程

表2-4 配置用户通过Console口登录设备时无需认证

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入AUX用户界面视图 | user-interface aux first-number [ last-number ] | -
设置登录用户的认证方式为不认证 | authentication-mode none | 必选 缺省情况下，用户通过Console口登录，认证方式为none（即不需要进行认证）
配置Console口的公共属性 | - | 可选 详细配置请参见 2.2.7 配置Console口登录方式的公共属性（可选）

配置完成后，当用户再次通过Console口登录设备时，设备将提示用户键入回车，之后将出现命令行提示符（如<H3C>），如 图2-7 所示。

图2-7 用户通过Console口登录设备时无需认证登录界面

2.2.5 配置通过Console口登录设备时采用密码认证（Password）

1. 配置前提

用户已经成功登录到了设备上，并希望以后通过Console口登录设备时采用密码认证、以提高设备的安全性。

缺省情况下，用户可以直接通过Console口本地登录设备，登录时认证方式为None（不需要用户名和密码），登录用户级别为3。如何在缺省情况下登录设备，具体请参见 2.2.2 缺省配置下如何通过Console口登录设备。

2. 配置过程

表2-5 配置用户通过Console口登录设备时采用密码认证

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入AUX用户界面视图 | user-interface aux first-number [ last-number ] | -
设置登录用户的认证方式为本地口令认证 | authentication-mode password | 必选 缺省情况下，用户通过Console口登录，认证方式为none（即不需要进行认证）
设置本地验证的口令 | set authentication password { cipher | simple } password | 必选 缺省情况下，没有设置本地认证的口令
配置Console口的公共属性 | - | 可选 详细配置请参见 2.2.7 配置Console口登录方式的公共属性（可选）

配置完成后，当用户再次通过Console口登录设备时，键入回车后，设备将要求用户输入登录密码，正确输入登录密码并回车，登录界面中出现命令行提示符（如<H3C>），如图2-8 所示。

图2-8 用户通过Console口登录设备时采用密码认证登录界面

2.2.6 配置通过Console口登录设备时采用AAA认证（Scheme）

1. 配置前提

用户已经成功的登录到了设备上，并希望以后通过Console口登录设备时采用AAA认证、以提高设备的安全性。

缺省情况下，用户可以直接通过Console口本地登录设备，登录时认证方式为None（不需要用户名和密码），登录用户级别为3。如何在缺省情况下登录设备，具体请参见 2.2.2 缺省配置下如何通过Console口登录设备。

2. 配置过程

表2-6 配置用户通过Console口登录设备时采用AAA认证

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
进入AUX用户界面视图 |  | user-interface aux first-number [ last-number ] | -
设置登录用户的认证方式为通过认证方案认证 |  | authentication-mode scheme | 必选 具体采用本地认证还是RADIUS认证、HWTACACS认证视AAA方案配置而定 缺省情况下，用户通过Console口登录，认证方式为none（即不需要进行认证）
使能命令行授权功能 |  | command authorization | 可选 l 缺省情况下，没有使能命令行授权功能，即用户登录后执行命令行不需要授权 l 缺省情况下，用户登录设备后可以使用的命令行由用户级别决定，用户只能使用缺省级别等于/低于用户级别的命令行。配置命令行授权功能后，用户可使用的命令行将受到用户级别和AAA授权的双重限制。即便是足够级别的用户每执行一条命令都会进行授权检查，只有授权成功的命令才被允许执行。
使能命令行计费功能 |  | command accounting | 可选 l 缺省情况下，没有使能命令行计费功能，即计费服务器不会记录用户执行的命令行 l 命令行计费功能用来在HWTACACS服务器上记录用户对设备执行过的命令（只要设备支持的命令，不管执行成功或者失败都会记录），以便集中监视、控制用户对设备的操作。命令行计费功能生效后，如果没有配命令行授权功能，用户执行的每一条命令都会发送到HWTACACS服务器上做记录；如果配置了命令行授权功能，则每一条授权成功的命令都会发送到HWTACACS服务器上做记录。
退出至系统视图 |  | quit | -
配置设备采用的认证方案 | 进入ISP域视图 | domain domain-name | 可选 缺省情况下，系统使用的AAA方案为 local 如果采用 local 认证，则必须进行后续的本地用户配置；如果采用RADIUS或者HWTACACS方式认证，则需进行如下配置： l 设备上的RADIUS、HWTACACS方案配置请参见“安全配置指导”中的“AAA” l AAA服务器上需要配置相关的用户名和密码，具体请参见服务器的指导书
 | 配置域使用的AAA方案 | authentication default { hwtacacs-scheme hwtacacs-scheme-name [ local ] | local | none | radius-scheme radius-scheme-name [ local ] }
 | 退出至系统视图 | quit
创建本地用户（进入本地用户视图） |  | local-user user-name | 必选 缺省情况下，无本地用户
设置本地用户认证口令 |  | password { cipher | simple } password | 必选
设置本地用户的命令级别 |  | authorization-attribute level level | 可选 缺省情况下，命令级别为0
设置本地用户的服务类型 |  | service-type terminal | 必选 缺省情况下，无用户服务类型
配置Console口的公共属性 |  | - | 可选 详细配置请参见 2.2.7 配置Console口登录方式的公共属性（可选）

使能命令行授权功能或命令行计费功能后，还需要进行如下配置才能保证命令行授权功能生效：

l 需要创建HWTACACS方案，在方案中指定授权服务器的IP地址以及授权过程的其它参数；

l 需要在ISP域中引用已创建的HWTACACS方案。

详细介绍请参见“安全配置指导”中的“AAA”。

需要注意的是用户采用Scheme认证方式登录设备时，其所能访问的命令级别取决于AAA方案中定义的用户级别。

l AAA方案为local认证时，用户级别通过 authorization-attribute level level 命令设定。

l AAA方案为RADIUS或者HWTACACS方案认证时，在相应的RADIUS或者HWTACACS服务器上设定相应用户的级别。

有关AAA、RADIUS、HWTACACS的详细内容，请参见“安全配置指导”中的“AAA”。

配置完成后，当用户再次通过Console口登录设备时，键入回车后，设备将要求用户输入登录用户名和密码，正确输入用户名（此处以用户为admin为例）和密码并回车，登录界面中出现命令行提示符（如<H3C>），如图2-9 所示。

图2-9 用户通过Console口登录设备时AAA认证登录界面

2.2.7 配置Console口登录方式的公共属性（可选）

Console口登录方式的公共属性配置，如表2-7 所示。

表2-7 Console口登录方式公共属性配置

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
使能显示版权信息 |  | copyright-info enable | 可选 缺省情况下，显示版权信息处于使能状态
进入AUX用户界面视图 |  | user-interface aux first-number [ last-number ] | -
配置Console口的属性 | 配置传输速率 | speed speed-value | 可选 缺省情况下，Console口使用的传输速率为9600bit/s 传输速率为设备与访问终端之间每秒钟传送的比特的个数
 | 配置校验方式 | parity { even | mark | none | odd | space } | 可选 缺省情况下，Console口的校验方式为 none，即不进行校验
 | 配置停止位 | stopbits { 1 | 1.5 | 2 } | 可选 缺省情况下，Console口的停止位为1 停止位用来表示单个包的结束。停止位的位数越多，传输效率越低
 | 配置数据位 | databits { 5 | 6 | 7 | 8 } | 可选 缺省情况下，Console口的数据位为8位 数据位的设置取决于需要传送的信息。比如，如果传送的是标准的ASCII码，则可以将数据位设置为7，如果传输的是扩展的ASCII码，则需要将数据位设置为8
 | 配置启动终端会话的快捷键 | activation-key character | 可选 缺省情况下，按<Enter>键启动终端会话
 | 配置中止当前运行任务的快捷键 | escape-key { default | character } | 可选 缺省情况下，键入<Ctrl+C>中止当前运行的任务
 | 配置流量控制方式 | flow-control { hardware | none | software } | 可选 缺省情况下，流量控制方式为 none 目前设备只支持配置流量控制方式为none
 | 配置终端的显示类型 | terminal type { ansi | vt100 } | 可选 缺省情况下，终端显示类型为ANSI 当设备的终端类型与客户端（如超级终端或者Telnet客户端等）的终端类型不一致，或者均设置为ANSI，并且当前编辑的命令行的总字符数超过80个字符时，客户端会出现光标错位、终端屏幕不能正常显示的现象。建议两端都设置为VT100类型
 | 设置用户登录后可以访问的命令级别 | user privilege level level | 可选 缺省情况下，从AUX用户界面登录后可以访问的命令级别为3级
 | 设置终端屏幕一屏显示的行数 | screen-length screen-length | 可选 缺省情况下，终端屏幕一屏显示的行数为24行 screen-length 0表示关闭分屏显示功能
 | 设置历史命令缓冲区大小 | history-command max-size value | 可选 缺省情况下，每个用户的历史缓冲区的大小为10，即可存放10条历史命令
 | 设置用户界面的超时时间 | idle-timeout minutes [ seconds ] | 可选 缺省情况下，所有的用户界面的超时时间为10分钟，如果10分钟内某用户界面没有用户进行操作，则该用户界面将自动断开 idle-timeout 0表示关闭用户界面的超时功能

改变Console口属性后会立即生效，所以通过Console口登录来配置Console口属性可能在配置过程中发生连接中断，建议通过其他登录方式来配置Console口属性。若用户需要通过Console口再次登录设备，需要改变PC机上运行的终端仿真程序的相应配置，使之与设备上配置的Console口属性保持一致。


2.3 配置通过Telnet登录设备

2.3.1 通过Telnet登录设备简介

设备支持Telnet功能，用户可以通过Telnet方式登录到设备上，对设备进行远程管理和维护。如 图2-10 。

图2-10 通过Telnet登录设备示意图

表2-8 采用Telnet方式登录需要具备的条件

对象 | 需要具备的条件
Telnet服务器端 | 配置设备VLAN的IP地址，设备与Telnet用户间路由可达
 | 配置Telnet登录的认证方式和其它配置（根据Telnet服务器端的情况而定）
Telnet客户端 | 运行Telnet程序
 | 获取要登录设备VLAN接口的IP地址

设备可以作为Telnet Client登录到Telnet Server上，从而对其进行操作。

设备可以充当Telnet Server：

l 设备支持Telnet Server功能、可作为Telnet Server，并可在设备上进行一系列的配置，从而实现对不同Telnet Client登录的具体认证方式、用户级别等方面的控制与管理。

l 缺省情况下，设备的Telnet Server功能处于关闭状态，通过Telnet方式登录设备的认证方式为Password，但设备没有配置缺省的登录密码，即在缺省情况下用户不能通过Telnet登录到设备上。因此当您使用Telnet方式登录设备前，首先需要通过Console口登录到设备上，开启Telnet Server功能，然后对认证方式、用户级别及公共属性进行相应的配置，才能保证通过Telnet方式正常登录到设备。

本节将为您介绍设备充当Telnet服务器端时：

l 设备支持的各种登录认证方式及配置Telnet登录认证方式的意义、各种认证方式的特点及注意事项。具体介绍请参见 2.3.2 Telnet登录的认证方式介绍 。

l 当用户确定了今后通过Telnet客户端登录设备时将采用何种认证方式后、并已成功登录到设备后，用户如何在设备上配置Telnet客户端登录设备时的认证方式、用户级别及公共属性，从而实现对Telnet登录用户的控制和管理。具体介绍请参见 2.3.3 配置通过Telnet Client登录设备时无需认证（None） 、 2.3.4 配置通过Telnet Client登录设备时采用密码认证（Password） 及 2.3.5 配置通过Telnet Client登录设备时采用AAA认证（Scheme） 。

l 配置通过Telnet登录设备时的公共属性。具体介绍请参见 2.3.6 配置VTY用户界面的公共属性（可选） 。

本节还将为您介绍设备充当Telnet客户端、Telnet登录到Server时的配置，具体请参见 2.3.7 配置设备充当Telnet Client登录到Telnet Server 。

2.3.2 Telnet登录的认证方式介绍

通过在Telnet的用户界面下配置认证方式，可以对使用Telnet登录的用户进行限制，以提高设备的安全性。通过Telnet登录支持的认证方式有 none、password 和 scheme 三种。

l 认证方式为 none：表示下次使用Telnet登录设备时不需要进行用户名和密码认证，任何人都可以通过Telnet登录到设备上，这种情况可能会带来安全隐患。

l 认证方式为 password：表示下次使用Telnet登录设备时需要进行密码认证，只有密码认证成功，用户才能登录到设备上。配置认证方式为password后，请妥善保存密码，如果密码丢失，可以使用Console口登录到设备，对Telnet的密码配置进行查看或修改。

l 认证方式为 scheme：表示下次使用Telnet登录设备时需要进行用户名和密码认证，用户名或密码错误，均会导致登录失败。用户认证又分为本地认证和远程认证，如果采用本地认证，则需要配置本地用户及相应参数；如果采用远程认证，则需要在远程认证服务器上配置用户名和密码。有关用户认证方式及参数的详细介绍请参见“安全配置指导”中的“AAA”。配置认证方式为 scheme 后，请妥善保存用户名及密码，如果本地认证密码丢失，可以使用Console口登录到设备，对Telnet的密码配置进行查看或修改。如果远程认证密码丢失，建议您联系服务器管理员。

不同的认证方式下，Telnet登录方式需要进行的配置不同，具体配置如 表2-9 所示。

表2-9 配置Telnet登录的认证方式

认证方式 | 认证所需配置 |  |  | 说明
None | 设置登录用户的认证方式为不认证 |  |  | 具体内容请参见 2.3.3
Password | 设置登录用户的认证方式为Password认证 |  |  | 具体内容请参见 2.3.4
 | 设置本地验证的口令
Scheme | 设置登录用户的认证方式为Scheme认证 |  |  | 具体内容请参见 2.3.5
 | 选择认证方案 | 采用远端AAA服务器认证 | 在设备上配置RADIUS/HWTACACS方案
 |  |  | 在设备上配置域使用的AAA方案
 |  |  | 在AAA服务器上配置相关的用户名和密码
 |  | 采用本地认证 | 在设备上配置认证用户名和密码
 |  |  | 在设备上配置域使用的AAA方案为本地认证

2.3.3 配置通过Telnet Client登录设备时无需认证（None）

1. 配置前提

用户已经成功登录到了设备上，并希望以后通过Telnet登录设备时无需进行认证。

缺省情况下，用户可以直接通过Console口本地登录设备，登录时认证方式为None（不需要用户名和密码），登录用户级别为3。如何在缺省情况下登录设备，具体请参见 2.2.2 缺省配置下如何通过Console口登录设备 。

2. 配置过程

表2-10 认证方式为None的配置

操作 | 命令 | 说明
进入系统视图 | system-view | -
使能设备的Telnet服务 | telnet server enable | 必选 缺省情况下，Telnet服务处于关闭状态
进入一个或多个VTY用户界面视图 | user-interface vty first-number [ last-number ] | -
设置VTY登录用户的认证方式为不认证 | authentication-mode none | 必选 缺省情况下，VTY用户界面的认证方式为 password
配置从当前用户界面登录系统的用户所能访问的命令级别 | user privilege level level | 必选 缺省情况下，通过VTY用户界面登录系统所能访问的命令级别是0
配置VTY用户界面的公共属性 | - | 可选 详细配置请参见 2.3.6 配置VTY用户界面的公共属性（可选）

配置完成后，当用户再次通过Telnet登录设备时：

l 用户将直接进入VTY用户界面，如图2-11 所示。

l 如果出现“All user interfaces are used, please try later!”的提示，表示当前Telnet到设备的用户过多，则请稍候再连接。

图2-11 用户通过Telnet登录设备时无需认证登录界面

2.3.4 配置通过Telnet Client登录设备时采用密码认证（Password）

1. 配置前提

用户已经成功登录到了设备上，并希望以后通过Telnet登录设备时需要进行密码认证。

缺省情况下，用户可以直接通过Console口本地登录设备，登录时认证方式为None（不需要用户名和密码），登录用户级别为3。如何在缺省情况下登录设备，具体请参见 2.2.2 缺省配置下如何通过Console口登录设备 。

2. 配置过程

表2-11 认证方式为Password的配置

操作 | 命令 | 说明
进入系统视图 | system-view | -
使能设备的Telnet服务 | telnet server enable | 必选 缺省情况下，Telnet服务处于关闭状态
进入一个或多个VTY用户界面视图 | user-interface vty first-number [ last-number ] | -
设置登录用户的认证方式为本地口令认证 | authentication-mode password | 必选 缺省情况下，VTY用户界面的认证方式为 password
设置本地验证的口令 | set authentication password { cipher | simple } password | 必选 缺省情况下，没有设置本地认证的口令
配置从当前用户界面登录系统的用户所能访问的命令级别 | user privilege level level | 必选 缺省情况下，通过VTY用户界面登录系统所能访问的命令级别是0
配置VTY用户界面的公共属性 | - | 可选 详细配置请参见 2.3.6 配置VTY用户界面的公共属性（可选）

配置完成后，当用户再次通过Telnet登录设备时：

l 设备将要求用户输入登录密码，正确输入登录密码并回车，登录界面中出现命令行提示符（如<H3C>），如图2-12 所示。

l 如果出现“All user interfaces are used, please try later!”的提示，表示当前Telnet到设备的用户过多，则请稍候再连接。

图2-12 配置用户通过Telnet登录设备时采用密码认证登录界面

2.3.5 配置通过Telnet Client登录设备时采用AAA认证（Scheme）

1. 配置前提

用户已经成功登录到了设备上，并希望以后通过Telnet登录设备时需要进行AAA认证。

缺省情况下，用户可以直接通过Console口本地登录设备，登录时认证方式为None（不需要用户名和密码），登录用户级别为3。如何在缺省情况下登录设备，具体请参见 2.2.2 缺省配置下如何通过Console口登录设备 。

2. 配置过程

表2-12 配置用户通过Telnet登录设备时采用AAA认证

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
使能设备的Telnet服务 |  | telnet server enable |  | 必选 缺省情况下，Telnet服务处于关闭状态
进入一个或多个VTY用户界面视图 |  | user-interface vty first-number [ last-number ] | -
设置登录用户的认证方式为通过认证方案认证 |  | authentication-mode scheme | 必选 具体采用本地认证还是RADIUS认证、HWTACACS认证视AAA方案配置而定 缺省情况下采用本地认证方式
使能命令行授权功能 |  | command authorization | 可选 缺省情况下，没有使能命令行授权功能，即用户登录后执行命令行不需要授权 l 需要创建HWTACACS方案，在方案中指定授权服务器的IP地址以及授权过程的其它参数，详细介绍请参见“安全配置指导”中的“AAA” l 需要在ISP域中引用已创建的HWTACACS方案，详细介绍请参见“安全配置指导”中的“AAA”
使能命令行计费功能 |  | command accounting | 可选 l 缺省情况下，没有使能命令行计费功能，即计费服务器不会记录用户执行的命令行 l 命令行计费功能用来在HWTACACS服务器上记录用户对设备执行过的命令（只要设备支持的命令，不管执行成功或者失败都会记录），以便集中监视、控制用户对设备的操作。命令行计费功能生效后，如果没有配命令行授权功能，用户执行的每一条命令都会发送到HWTACACS服务器上做记录；如果配置了命令行授权功能，则每一条授权成功的命令都会发送到HWTACACS服务器上做记录。
退出至系统视图 |  | quit | -
配置设备采用的认证方案 | 进入ISP域视图 | domain domain-name | 可选 缺省情况下，系统使用的AAA方案为 local 如果采用 local 认证，则必须进行后续的本地用户配置；如果采用RADIUS或者HWTACACS方式认证，则需进行如下配置： l 设备上的配置请参见“安全配置指导”中的“AAA” l AAA服务器上需要配置相关的用户名和密码，具体请参见服务器的指导书
 | 配置域使用的AAA方案 | authentication default { hwtacacs-scheme hwtacacs-scheme-name [ local ] | local | none | radius-scheme radius-scheme-name [ local ] }
 | 退出至系统视图 | quit
创建本地用户（进入本地用户视图） |  | local-user user-name | 缺省情况下，无本地用户
设置本地认证口令 |  | password { cipher | simple } password | 必选 缺省情况下，没有配置本地认证口令
设置VTY用户的命令级别 |  | authorization-attribute level level | 可选 缺省情况下，命令级别为0
设置VTY用户的服务类型 |  | service-type telnet | 必选 缺省情况下，无用户的服务类型
退出至系统视图 |  | quit | -
配置VTY用户界面的公共属性 |  | - | 可选 详细配置请参见 2.3.6 配置VTY用户界面的公共属性（可选）

使能命令行授权功能或命令行计费功能后，还需要进行如下配置才能保证命令行授权功能生效：

l 需要创建HWTACACS方案，在方案中指定授权服务器的IP地址以及授权过程的其它参数；

l 需要在ISP域中引用已创建的HWTACACS方案。

详细介绍请参见“安全配置指导”中的“AAA”。

需要注意的是用户采用Scheme认证方式登录设备时，其所能访问的命令级别取决于AAA方案中定义的用户级别。

l AAA方案为local认证时，用户级别通过 authorization-attribute level level 命令设定。

l AAA方案为RADIUS或者HWTACACS方案认证时，在相应的RADIUS或者HWTACACS服务器上设定相应用户的级别。

有关AAA、RADIUS、HWTACACS的详细内容，请参见“AAA配置指导”中的“AAA”。

配置完成后，当用户再次通过Telnet登录设备时：

l 设备将要求用户输入登录用户名和密码，正确输入用户名（此处以用户为admin为例）和密码并回车，登录界面中出现命令行提示符（如<H3C>），如 图2-13 所示。

l 如果用户输入正确的登录用户名和密码后，设备提示用户再次输入一个指定类型的密码，则表示当前用户需要进行二次密码认证，即用户还必须根据提示信息输入一个正确的密码后才能通过认证。

l 如果出现“All user interfaces are used, please try later!”的提示，表示当前Telnet到设备的用户过多，则请稍候再连接。

图2-13 用户通过Telnet登录设备时AAA认证登录界面

2.3.6 配置VTY用户界面的公共属性（可选）

表2-13 VTY用户界面的公共属性配置

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
使能显示版权信息 |  | copyright-info enable | 可选 缺省情况下，显示版权信息处于使能状态
进入一个或多个VTY用户界面视图 |  | user-interface vty first-number [ last-number ] | -
VTY用户界面配置 | 启动终端服务 | shell | 可选 缺省情况下，在所有的用户界面上启动终端服务
 | 配置VTY用户界面支持的协议 | protocol inbound { all | ssh | telnet } | 可选 缺省情况下，设备同时支持Telnet和SSH协议 使用该命令配置的协议将在用户下次使用该用户界面登录时生效
 | 配置中止当前运行任务的快捷键 | escape-key { default | character } | 可选 缺省情况下，键入<Ctrl+C>中止当前运行的任务
 | 配置终端的显示类型 | terminal type { ansi | vt100 } | 可选 缺省情况下，终端显示类型为ANSI
 | 设置终端屏幕一屏显示的行数 | screen-length screen-length | 可选 缺省情况下，终端屏幕一屏显示的行数为24行 screen-length 0表示关闭分屏显示功能
 | 设置设备历史命令缓冲区大小 | history-command max-size value | 可选 缺省情况下，每个用户的历史缓冲区大小为10，即可存放10条历史命令
 | 设置VTY用户界面的超时时间 | idle-timeout minutes [ seconds ] | 可选 缺省情况下，所有的用户界面的超时时间为10分钟 如果10分钟内某用户界面没有用户进行操作，则该用户界面将自动断开 idle-timeout 0表示关闭用户界面的超时功能
 | 设置从用户界面登录后自动执行的命令 | auto-execute command command | 可选 缺省情况下，未设定自动执行命令 配置自动执行命令后，用户在登录时，系统会自动执行已经配置好的命令，执行完命令后，自动断开用户连接。如果这条命令引发起了一个任务，系统会等这个任务执行完毕后再断开连接。该命令通常用来配置Telnet命令，使用户登录时自动连接到指定的主机

l 使用 auto-execute command 命令后，可能导致用户不能通过该终端线对本系统进行常规配置，需谨慎使用。

l 在配置 auto-execute command 命令并保存配置（执行save操作）之前，要确保可以通过其他VTY、AUX用户登录进来更改配置，以便出现问题后，能删除该配置。

2.3.7 配置设备充当Telnet Client登录到Telnet Server

1. 配置前提

用户已经成功登录到了设备上，并希望将当前设备作为Telnet Client登录到Telnet Server上进行操作。具体请参见 图2-14 所示。

缺省情况下，用户可以直接通过Console口本地登录设备，登录时认证方式为None（不需要用户名和密码），登录用户级别为3。如何在缺省情况下登录设备，具体请参见 2.2.2 缺省配置下如何通过Console口登录设备 。

图2-14 通过交换机登录到其它交换机

如果Telnet Client与Telnet Server相连的端口不在同一子网内，请确保两台设备间路由可达。

2. 配置过程

表2-14 设备作为Telnet Client登录到Telnet Server的配置

操作 | 命令 | 说明
设备作为Telnet Client登录到Telnet Server | telnet remote-host [ service-port ] [ [ vpn-instance vpn-instance-name ] | [ source { interface interface-type interface-number | ip ip-address } ] ] | 二者必选其一 此命令在用户视图下执行
 | telnet ipv6 remote-host [ -i interface-type interface-number ] [ port-number ]
指定设备作为Telnet客户端时，发送Telnet报文的源IPv4地址或源接口 | telnet client source { interface interface-type interface-number | ip ip-address } | 可选 此命令在系统视图下执行 缺省情况下，没有指定发送Telnet报文的源IPv4地址和源接口，此时通过路由选择源IPv4地址

配置完成后，设备即可登录到相应的Telnet Server上。


2.4 配置通过SSH登录

2.4.1 通过SSH登录设备简介

SSH是Secure Shell（安全外壳）的简称。用户通过一个不能保证安全的网络环境远程登录到设备时，SSH可以利用加密和强大的认证功能提供安全保障，保护设备不受诸如IP地址欺诈、明文密码截取等攻击。设备支持SSH功能，用户可以通过SSH方式登录到设备上，对设备进行远程管理和维护如图2-15 所示。

图2-15 通过SSH登录

表2-15 采用SSH方式登录需要具备的条件

对象 | 需要具备的条件
SSH服务器端 | 配置设备VLAN接口的IP地址，设备与SSH客户端间路由可达
 | 配置SSH登录的认证方式和其它配置（根据SSH服务器端的情况而定）
SSH客户端 | 如果是主机作为SSH客户端，则需要在主机上运行SSH客户端程序
 | 获取要登录设备VLAN接口的IP地址

设备可以作为SSH Client登录到SSH Server上，从而对其进行 操作。

设备可以充当SSH Server：

l 设备支持SSH Server功能：可作为SSH Server，并可在设备上进行一系列的配置、实现对不同SSH Client的登录权限的控制。

l 缺省情况下，设备的SSH Server功能处于关闭状态，因此当您使用SSH方式登录设备前，首先需要通过Console口登录到设备上，开启设备的SSH Server功能、对认证方式及其它属性进行相应的配置，才能保证通过SSH方式正常登录到设备。

本节将为您介绍：

l 设备充当SSH服务器端时：当用户确定了今后通过SSH客户端登录设备、并已成功登录到设备后，用户如何在设备上配置SSH客户端登录设备时的认证方式及其它属性，从而实现对SSH登录用户的控制和管理。具体介绍请参见 2.4.2 配置设备充当SSH服务器。

l 设备充当SSH客户端时：设备SSH登录到Server时的配置，具体请参见 2.4.3 配置设备充当SSH客户端登录其它设备。

2.4.2 配置设备充当SSH服务器

1. 配置前提

用户已经成功登录到了设备上，并希望以后通过SSH Client登录设备。

缺省情况下，用户可以直接通过Console口本地登录设备，登录时认证方式为None（不需要用户名和密码），登录用户级别为3。如何在缺省情况下登录设备，具体请参见 2.2.2 缺省配置下如何通过Console口登录设备。

2. 配置过程

表2-16 设备充当SSH服务器时的配置

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
生成本地DSA或RSA密钥对 |  | public-key local create { dsa | rsa } | 必选 缺省情况下，没有生成DSA和RSA密钥对
使能SSH服务器功能 |  | ssh server enable | 必选 缺省情况下，SSH服务器功能处于关闭状态
进入VTY用户界面视图 |  | user-interface vty first-number [ last-number ] | -
配置登录用户界面的认证方式为 scheme 方式 |  | authentication-mode scheme | 必选 缺省情况下，用户界面认证为 password 方式
配置所在用户界面支持SSH协议 |  | protocol inbound { all | ssh } | 可选 缺省情况下，系统支持所有的协议，即支持Telnet和SSH
使能命令行授权功能 |  | command authorization | 可选 缺省情况下，没有使能命令行授权功能，即用户登录后执行命令行不需要授权 l 需要创建HWTACACS方案，在方案中指定授权服务器的IP地址以及授权过程的其它参数，详细介绍请参见“安全配置指导”中的“AAA” l 需要在ISP域中引用已创建的HWTACACS方案，详细介绍请参见“安全配置指导”中的“AAA”
使能命令行计费功能 |  | command accounting | 可选 l 缺省情况下，没有使能命令行计费功能，即计费服务器不会记录用户执行的命令行 l 命令行计费功能用来在HWTACACS服务器上记录用户对设备执行过的命令（只要设备支持的命令，不管执行成功或者失败都会记录），以便集中监视、控制用户对设备的操作。命令行计费功能生效后，如果没有配命令行授权功能，用户执行的每一条命令都会发送到HWTACACS服务器上做记录；如果配置了命令行授权功能，则每一条授权成功的命令都会发送到HWTACACS服务器上做记录。
退出至系统视图 |  | quit | -
配置设备采用的认证方案 | 进入ISP域视图 | domain domain-name | 可选 缺省情况下，系统使用的AAA方案为 local 如果采用 local 认证，则必须进行后续的本地用户配置；如果采用RADIUS或者HWTACACS方式认证，则需进行如下配置： l 设备上的配置请参见“安全配置指导”中的“AAA” l AAA服务器上需要配置相关的用户名和密码，具体请参见服务器的指导书
 | 配置域使用的AAA方案 | authentication default { hwtacacs-scheme hwtacacs-scheme-name [ local ] | local | none | radius-scheme radius-scheme-name [ local ] }
 | 退出至系统视图 | quit
创建本地用户，并进入本地用户视图 |  | local-user user-name | 必选 缺省情况下，没有配置本地用户
设置本地认证口令 |  | password { cipher | simple } password | 必选 缺省情况下，没有配置本地认证口令
设置本地用户的命令级别 |  | authorization-attribute level level | 可选 缺省情况下，命令级别为0
设置本地用户的服务类型 |  | service-type ssh | 必选 缺省情况下，无用户的服务类型
退回系统视图 |  | quit | -
建立SSH用户，并指定SSH用户的认证方式 |  | ssh user username service-type stelnet authentication-type { password | { any | password-publickey | publickey } assign publickey keyname } | 必选 缺省情况下，没有配置SSH用户及SSH用户的认证方式
配置VTY用户界面的公共属性 |  | - | 可选 详细配置请参见 2.3.6 配置VTY用户界面的公共属性（可选）

本章只介绍采用 password 方式认证SSH客户端的配置方法，publickey 方式的配置方法及SSH的详细介绍，请参见“安全配置指导”中的“SSH2.0”。

使能命令行授权功能或命令行计费功能后，还需要进行如下配置才能保证命令行授权功能生效：

l 需要创建HWTACACS方案，在方案中指定授权服务器的IP地址以及授权过程的其它参数；

l 需要在ISP域中引用已创建的HWTACACS方案。

详细介绍请参见“安全配置指导”中的“AAA”。

l 用户采用 password 认证方式登录设备时，其所能访问的命令级别取决于AAA方案中定义的用户级别。AAA方案为local认证时，用户级别通过 authorization-attribute level level 命令设定；AAA方案为RADIUS或者HWTACACS方案认证时，在相应的RADIUS或者HWTACACS服务器上设定相应用户的级别。有关AAA、RADIUS、HWTACACS的详细内容，请参见“AAA配置指导”中的“AAA”。

l 用户采用 publickey 认证方式登录设备时，其所能访问的命令级别取决于用户界面上通过 user privilege level 命令配置的级别。

2.4.3 配置设备充当SSH客户端登录其它设备

1. 配置前提

用户已经成功登录到了设备上，并希望将当前设备作为SSH Client登录到其它设备上进行操作。具体请参见图2-14 所示。

缺省情况下，用户可以直接通过Console口本地登录设备，登录时认证方式为None（不需要用户名和密码），登录用户级别为3。如何在缺省情况下登录设备，具体请参见 2.2.2 缺省配置下如何通过Console口登录设备。

图2-16 通过交换机设备登录到其它交换机设备

如果SSH Client与SSH Server相连的端口不在同一子网内，请确保两台设备间路由可达。

2. 配置过程

表2-17 设备作为SSH Client登录到其它设备的配置

操作 | 命令 | 说明
设备作为SSH Client登录到SSH IPv4服务器端 | ssh2 server | 必选 server：服务器IPv4地址或主机名称，为1～20个字符的字符串，不区分大小写 此命令在用户视图下执行
设备作为SSH Client登录到SSH IPv6服务器端 | ssh2 ipv6 server | 必选 server：服务器的IPv6地址或主机名称，为1～46个字符的字符串，不区分大小写。

为配合SSH Server，设备充当SSH Client时还可进一步进行其它配置，具体请参见“安全配置指导”中的“SSH2.0”。

配置完成后，设备即可登录到相应的SSH Server上。


2.5 配置通过Modem登录设备

2.5.1 通过Modem登录设备简介

网络管理员可以通过设备的Console口，利用一对Modem和PSTN（Public Switched Telephone Network，公共电话交换网）拔号登录到设备上，对远程设备进行管理和维护。这种登录方式一般适用于在网络中断的情况下，利用PSTN网络对设备进行远程管理、维护及故障定位。

本节将为您介绍如何通过Modem登录设备，并配置登录时的认证方式、用户级别及公共属性，实现对Modem登录用户的控制。

本节将为您介绍：

l 设备支持Modem登录认证方式及配置Modem登录认证方式的意义、各种认证方式的特点及注意事项。具体请参见 2.5.3 Modem拨号登录的认证方式介绍 。

l 当用户确定了今后通过Modem登录设备时将采用何种认证方式后、并通过缺省配置登录到设备后，用户如何在设备上配置Modem登录设备时的认证方式及用户级别，实现对Modem登录用户的控制和管理。具体请参见 2.5.4 配置用户通过Modem登录设备时无需认证（None） 、 2.5.5 配置用户通过Modem登录设备时采用密码认证（Password） 及 2.5.6 配置用户通过Modem登录设备时采用AAA认证（Scheme） 。

l 配置通过Modem登录设备时的公共属性。具体请参见 2.5.7 配置AUX用户界面的公共属性（可选） 。

2.5.2 缺省配置下如何通过Modem登录设备

缺省情况下，用户通过Modem登录设备时，设备不需要任何登录认证，缺省可以访问命令级别为3级的命令。

通过Modem登录设备的方法如下：

表2-18 通过Console口利用Modem拨号进行远程登录需要具备的条件

配置对象 | 需要具备的条件
网络管理员端 | PC终端与Modem正确连接
 | Modem与可正常使用的电话线正确相连
 | 获取了远程设备端Console口所连Modem上对应的电话号码
设备端 | Console口与Modem正确连接
 | 在Modem上进行了正确的配置
 | Modem与可正常使用的电话线正确相连
 | 设备上配置了登录用户的认证方式、用户级别及其它配置

(1) 如 图2-17 所示，建立远程配置环境，在PC机（或终端）的串口和设备的Console口分别挂接Modem。

图2-17 搭建远程配置环境

(2) 网络管理员端的相关配置。

PC终端与Modem正确连接、Modem与可正常使用的电话线正确相连、获取了远程设备端Console口所连Modem上对应的电话号码。

通过Console口利用Modem拨号进行远程登录时，使用的是AUX用户界面，设备上的配置需要注意以下几点：

l Console口波特率Speed要低于Modem的传输速率，否则可能会出现丢包现象。

l Console口的其它属性（校验方式、停止位、数据位）均采用缺省值。

(3) 在与设备直接相连的Modem上进行以下配置。

AT&F-------------------------- Modem恢复出厂配置

ATS0=1------------------------ 配置自动应答（振铃一声）

AT&D-------------------------- 忽略DTR信号

AT&K0------------------------- 禁止流量控制

AT&R1------------------------- 忽略RTS信号

AT&S0------------------------- 强制DSR为高电平

ATEQ1&W----------------------- 禁止modem回送命令响应和执行结果并存储配置

在配置后为了查看Modem的配置是否正确，可以输入AT&V命令显示配置的结果。

各种Modem配置命令及显示的结果有可能不一样，具体操作请参照Modem的说明书进行。

(4) 在PC机上运行终端仿真程序（如Windows XP/Windows 2000的超级终端等，以下配置以Windows XP为例），新建一个拨号连接（所拨号码为与设备相连的Modem的电话号码），与设备建立连接，如 图2-18 至 图2-20 所示。

如果您的PC使用的是Windows 2003 Server操作系统，请在Windows组件中添加超级终端程序后，再按照本文介绍的方式登录和管理设备；如果您的PC使用的是Windows 2008 Server、Windows 7 、Windows Vista或其他操作系统，请您准备第三方的拨号控制软件，使用方法请参照软件的使用指导或联机帮助。

(5) 在远端通过终端仿真程序和Modem向设备拨号

图2-18 新建连接

图2-19 拨号号码配置

图2-20 在远端PC机上拨号

(6) 当听到拨号音后，超级终端窗口将返回字符串“CONNECT9600”，键入回车键之后将出现命令行提示符（如<H3C>），如 图2-21 所示。

图2-21 Console口登录界面

(7) 如果配置验证方式为Password，在远端的终端仿真程序上输入已配置的登录口令，出现命令行提示符（如<H3C>），即可对设备进行配置或管理。需要帮助可以随时键入“?”，具体的配置命令请参考本手册中相关模块的内容。

(8) 键入命令，配置设备或查看设备运行状态。需要帮助可以随时键入“?”，具体的配置命令请参考本手册中相关部分的内容。

l 当您想断开PC与远端设备的连接时，首先在超级终端中用命用“ATH”命令断开modem间的连接。如果在超级终端窗口无法输入此命令，可输入“AT+ + +”并回车，待窗口显示“OK”提示后再输入“ATH”命令，屏幕再次显示“OK”提示，表示已断开本次连接。您也可以使用超级终端页面提供的挂断按扭 [image] 断开PC与远端设备的连接。

l 当您使用完超级终端仿真程序后，务必要先断开PC与远端设备的连接，不能直接关闭超级终端，否则有些型号的远程modem将一直在线，下次拨号连接时将无法拨号成功。

2.5.3 Modem拨号登录的认证方式介绍

通过在AUX用户界面下配置认证方式，可以对使用Modem拨号登录的用户进行限制，以提高设备的安全性。Modem拨号支持的认证方式有 none、password 和 scheme 三种。

l 认证方式为 none：表示下次使用Modem拨号登录设备时，不需要进行用户名和密码认证、任何人都可以通过Modem拨号登录到设备上，这种情况可能会带来安全隐患。

l 认证方式为 password：表示下次使用Modem拨号登录设备时，需要进行密码认证、只有密码认证成功、用户才能登录到设备上。配置认证方式为password后，请妥善保存密码，如果密码丢失，则无法使用该方式登录。此时，可以使用Console登录到设备，对Modem拨号的密码配置进行查看或修改。

l 认证方式为 scheme：表示下次使用Modem拨号登录设备时需要进行用户名和密码认证，用户名或密码错误，均会导致登录失败。用户认证又分为本地认证和远程认证，如果采用本地认证，则需要配置本地用户及相应参数；如果采用远程认证，则需要在远程认证服务器上配置用户名和密码。有关用户认证方式及参数的详细介绍请参见“安全配置指导”中的“AAA”。配置认证方式为 scheme 后，请妥善保存用户名及密码，如果本地认证密码丢失，可以使用Console登录到交换机，对Modem拨号的密码配置进行查看或修改。如果远程认证密码丢失，建议您联系服务器管理员。

不同的认证方式下，Modem拨号登录方式需要进行的配置不同，具体配置如 表2-3 所示。

表2-19 配置任务简介

认证方式 | 认证所需配置 |  |  | 说明
None | 设置登录用户的认证方式为不认证 |  |  | 具体内容请参见 2.5.4
Password | 设置登录用户的认证方式为Password认证 |  |  | 具体内容请参见 2.5.5
 | 设置本地验证的口令
Scheme | 设置登录用户的认证方式为Scheme认证 |  |  | 具体内容请参见 2.5.6
 | 选择认证方案 | 采用远端AAA服务器认证 | 在设备上配置RADIUS/HWTACACS方案
 |  |  | 在设备上配置域使用的AAA方案
 |  |  | 在AAA服务器上配置相关的用户名和密码
 |  | 采用本地认证 | 在设备上配置认证用户名和密码
 |  |  | 在设备上配置域使用的AAA方案为本地认证

改变Modem拨号登录方式的认证方式后，该认证方式的设置不会立即生效。用户需要退出命令行接口后重新登录，该设置才会生效。

2.5.4 配置用户通过Modem登录设备时无需认证（None）

1. 配置前提

用户已经成功登录到了设备上，并希望以后通过Modem拨号登录设备时无需进行认证。

缺省情况下，用户可以直接通过Console口本地登录设备，登录时认证方式为None（不需要用户名和密码），登录用户级别为3。如何在缺省情况下登录设备，具体请参见 2.2.2 缺省配置下如何通过Console口登录设备 。

2. 配置过程

表2-20 配置用户通过Modem拨号登录设备时无需认证

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入AUX用户界面视图 | user-interface aux first-number [ last-number ] | -
设置登录用户的认证方式为不认证 | authentication-mode none | 必选 缺省情况下，用户通过Modem拨号登录，认证方式为none（即不需要进行认证）
配置AUX用户界面的公共属性 | - | 可选 详细配置请参见 2.5.7 配置AUX用户界面的公共属性（可选）

配置完成后，当用户再次通过Modem拨号登录设备时，设备将提示用户键入回车，之后将出现命令行提示符（如<H3C>），如 图2-22 所示。

图2-22 用户通过Modem拨号登录设备时无需认证登录界面

2.5.5 配置用户通过Modem登录设备时采用密码认证（Password）

1. 配置前提

用户已经成功登录到了设备上，并希望以后通过Modem拨号登录设备时采用密码认证、以提高设备的安全性。

缺省情况下，用户可以直接通过Console口本地登录设备，登录时认证方式为None（不需要用户名和密码），登录用户级别为3。如何在缺省情况下登录设备，具体请参见 2.2.2 缺省配置下如何通过Console口登录设备 。

2. 配置过程

表2-21 配置用户通过Modem拨号登录设备时采用密码认证

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入AUX用户界面视图 | user-interface aux first-number [ last-number ] | -
设置登录用户的认证方式为本地口令认证 | authentication-mode password | 必选 缺省情况下，用户通过Modem登录，认证方式为none（即不需要进行认证）
设置本地验证的口令 | set authentication password { cipher | simple } password | 必选 缺省情况下，没有设置本地认证的口令
配置AUX用户界面的公共属性 | - | 可选 详细配置请参见 2.5.7 配置AUX用户界面的公共属性（可选）

配置完成后，当用户再次通过Modem拨号登录设备时，键入回车后，设备将要求用户输入登录密码，正确输入登录密码并回车，登录界面中出现命令行提示符（如<H3C>），如 图2-23 所示。

图2-23 用户通过Modem拨号登录设备时采用密码认证登录界面

2.5.6 配置用户通过Modem登录设备时采用AAA认证（Scheme）

1. 配置前提

用户已经成功的登录到了设备上，并希望以后通过Modem拨号登录设备时采用AAA认证、以提高设备的安全性。

缺省情况下，用户可以直接通过Console口本地登录设备，登录时认证方式为None（不需要用户名和密码），登录用户级别为3。如何在缺省情况下登录设备，具体请参见 2.2.2 缺省配置下如何通过Console口登录设备 。

2. 配置过程

表2-22 配置用户通过Modem拨号登录设备时采用AAA认证

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
进入AUX用户界面视图 |  | user-interface aux first-number [ last-number ] | -
设置登录用户的认证方式为通过认证方案认证 |  | authentication-mode scheme | 必选 具体采用本地认证还是RADIUS认证、HWTACACS认证视AAA方案配置而定 缺省情况下，用户通过Console口登录，认证方式为none（即不需要进行认证）
使能命令行授权功能 |  | command authorization | 可选 l 缺省情况下，没有使能命令行授权功能，即用户登录后执行命令行不需要授权 l 缺省情况下，用户登录设备后可以使用的命令行由用户级别决定，用户只能使用缺省级别等于/低于用户级别的命令行。配置命令行授权功能后，用户可使用的命令行将受到用户级别和AAA授权的双重限制。即便是足够级别的用户每执行一条命令都会进行授权检查，只有授权成功的命令才被允许执行。
使能命令行计费功能 |  | command accounting | 可选 l 缺省情况下，没有使能命令行计费功能，即计费服务器不会记录用户执行的命令行 l 命令行计费功能用来在HWTACACS服务器上记录用户对设备执行过的命令（只要设备支持的命令，不管执行成功或者失败都会记录），以便集中监视、控制用户对设备的操作。命令行计费功能生效后，如果没有配命令行授权功能，用户执行的每一条命令都会发送到HWTACACS服务器上做记录；如果配置了命令行授权功能，则每一条授权成功的命令都会发送到HWTACACS服务器上做记录。
退出至系统视图 |  | quit | -
配置设备采用的认证方案 | 进入ISP域视图 | domain domain-name | 可选 缺省情况下，系统使用的AAA方案为 local 如果采用 local 认证，则必须进行后续的本地用户配置；如果采用RADIUS或者HWTACACS方式认证，则需进行如下配置： l 设备上的RADIUS、HWTACACS方案配置请参见“安全配置指导”中的“AAA” l AAA服务器上需要配置相关的用户名和密码，具体请参见服务器的指导书
 | 配置域使用的AAA方案 | authentication default { hwtacacs-scheme hwtacacs-scheme-name [ local ] | local | none | radius-scheme radius-scheme-name [ local ] }
 | 退出至系统视图 | quit
创建本地用户（进入本地用户视图） |  | local-user user-name | 必选 缺省情况下，无本地用户
设置本地用户认证口令 |  | password { cipher | simple } password | 必选
设置本地用户的命令级别 |  | authorization-attribute level level | 可选 缺省情况下，命令级别为0
设置本地用户的服务类型 |  | service-type terminal | 必选 缺省情况下，无用户服务类型
配置AUX用户界面的公共属性 |  | - | 可选 详细配置请参见 2.5.7 配置AUX用户界面的公共属性（可选）

使能命令行授权功能或命令行计费功能后，还需要进行如下配置才能保证命令行授权功能生效：

l 需要创建HWTACACS方案，在方案中指定授权服务器的IP地址以及授权过程的其它参数；

l 需要在ISP域中引用已创建的HWTACACS方案。

详细介绍请参见“安全配置指导/AAA”中的“配置ISP域的AAA授权方法”。

需要注意的是用户采用Scheme认证方式登录设备时，其所能访问的命令级别取决于AAA方案中定义的用户级别。

l AAA方案为local认证时，用户级别通过 authorization-attribute level level 命令设定。

l AAA方案为RADIUS或者HWTACACS方案认证时，在相应的RADIUS或者HWTACACS服务器上设定相应用户的级别。

有关AAA、RADIUS、HWTACACS的详细内容，请参见“安全配置指导”中的“AAA”。

配置完成后，当用户再次通过Modem拨号登录设备时，键入回车后，设备将要求用户输入登录用户名和密码，正确输入用户名（此处以用户为admin为例）和密码并回车，登录界面中出现命令行提示符（如<H3C>），如 图2-6 所示。

图2-24 用户通过Modem拨号登录设备时AAA认证登录界面

2.5.7 配置AUX用户界面的公共属性（可选）

表2-23 AUX用户界面的公共属性配置

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
使能显示版权信息 |  | copyright-info enable | 可选 缺省情况下，显示版权信息处于使能状态
进入AUX用户界面视图 |  | user-interface aux first-number [ last-number ] | -
配置AUX用户界面的属性 | 配置传输速率 | speed speed-value | 可选 缺省情况下，传输速率为9600bit/s 传输速率为设备与访问终端之间每秒钟传送的比特的个数
 | 配置校验方式 | parity { even | mark | none | odd | space } | 可选 缺省情况下，校验方式为 none，即不进行校验
 | 配置停止位 | stopbits { 1 | 1.5 | 2 } | 可选 缺省情况下，停止位为1 停止位用来表示单个包的结束。停止位的位数越多，传输效率越低
 | 配置数据位 | databits { 5 | 6 | 7 | 8 } | 可选 缺省情况下，数据位为8位 数据位的设置取决于需要传送的信息。比如，如果传送的是标准的ASCII码，则可以将数据位设置为7，如果传输的是扩展的ASCII码，则需要将数据位设置为8
 | 配置启动终端会话的快捷键 | activation-key character | 可选 缺省情况下，按<Enter>键启动终端会话
 | 配置中止当前运行任务的快捷键 | escape-key { default | character } | 可选 缺省情况下，键入<Ctrl+C>中止当前运行的任务
 | 配置流量控制方式 | flow-control { hardware | none | software } | 可选 缺省情况下，流量控制方式为none 目前设备只支持配置流量控制方式为none
 | 配置终端的显示类型 | terminal type { ansi | vt100 } | 可选 缺省情况下，终端显示类型为ANSI 当设备的终端类型与客户端（如超级终端或者Telnet客户端等）的终端类型不一致，或者均设置为ANSI，并且当前编辑的命令行的总字符数超过80个字符时，客户端会出现光标错位、终端屏幕不能正常显示的现象。建议两端都设置为VT100类型
 | 设置用户登录后可以访问的命令级别 | user privilege level level | 可选 缺省情况下，从AUX用户界面登录后可以访问的命令级别为3级
 | 设置终端屏幕一屏显示的行数 | screen-length screen-length | 可选 缺省情况下，终端屏幕一屏显示的行数为24行 screen-length 0表示关闭分屏显示功能
 | 设置历史命令缓冲区大小 | history-command max-size value | 可选 缺省情况下，每个用户的历史缓冲区的大小为10，即可存放10条历史命令
 | 设置用户界面的超时时间 | idle-timeout minutes [ seconds ] | 可选 缺省情况下，所有的用户界面的超时时间为10分钟，如果10分钟内某用户界面没有用户进行操作，则该用户界面将自动断开 idle-timeout 0表示关闭用户界面的超时功能

l 改变Console口属性后会立即生效，通过Console口登录来配置Console口属性可能在配置过程中发生连接中断，建议通过其他登录方式来配置Console口属性。若用户需要通过Console口再次登录设备，需要改变PC机上运行的终端仿真程序的相应配置，使之与设备上配置的Console口属性保持一致。

l Console口波特率Speed要低于Modem的传输速率，否则可能会出现丢包现象。


2.6 CLI登录显示和维护

表2-24 CLI显示和维护

操作 | 命令 | 说明
显示当前正在使用的用户界面以及用户的相关信息 | display users [ | { begin | exclude | include } regular-expression ] | 在任意视图下执行
显示设备支持的所有用户界面以及用户的相关信息 | display users all [ | { begin | exclude | include } regular-expression ] | 在任意视图下执行
显示用户界面的相关信息 | display user-interface [ num1 | { aux | vty } num2 ] [ summary ] [ | { begin | exclude | include } regular-expression ] | 在任意视图下执行
显示设备作为Telnet客户端的相关配置信息 | display telnet client configuration [ | { begin | exclude | include } regular-expression ] | 在任意视图下执行
释放指定的用户界面 | free user-interface { num1 | { aux | vty } num2 } | 在用户视图下执行 系统支持多个用户同时对设备进行配置，当管理员在维护设备时，其他在线用户的配置影响到管理员的操作，或者管理员正在进行一些重要配置不想被其他用户干扰时，可以使用以下命令强制断开该用户的连接 不能使用该命令释放用户当前自己使用的连接
锁住当前用户界面 | lock | 在用户视图下执行 缺省情况下，不锁住当前用户界面
设置在用户界面之间传递消息 | send { all | num1 | { aux | vty } num2 } | 在用户视图下执行


3 配置通过Web网管登录设备

相关链接

  • 3.1 通过Web网管登录设备简介
  • 3.2 配置通过HTTP方式登录设备
  • 3.3 配置通过HTTPS方式登录设备
  • 3.4 通过Web网管登录设备显示与维护
  • 3.5 通过Web网管登录设备典型配置举例
父主题： 02-登录交换机配置


3.1 通过Web网管登录设备简介

为了方便您对网络设备进行配置和维护，设备提供Web网管功能。设备提供一个内置的Web服务器，您可以通过PC登录到设备上，使用Web界面直观地配置和维护设备。

设备支持两种内置的Web登录方式：

l HTTP登录方式：HTTP是Hypertext Transfer Protocol（超文本传输协议）的简称。它用来在Internet上传递Web页面信息。HTTP位于TCP/IP协议栈的应用层。传输层采用面向连接的TCP。目前，设备支持的HTTP协议版本为HTTP/1.0。

l HTTPS登录方式：HTTPS（Hypertext Transfer Protocol Secure，超文本传输协议的安全版本）是支持SSL（Secure Sockets Layer，安全套接字层）协议的HTTP协议。HTTPS通过SSL协议，使客户端与设备之间交互的数据经过加密处理，并为设备制定基于证书属性的访问控制策略，提高了数据传输的安全性和完整性，保证合法客户端可以安全地访问设备，禁止非法的客户端访问设备，从而实现了对设备的安全管理。

如果要使用Web登录设备，您首先需要通过Console口登录到设备上，开启设备的Web登录功能（缺省情况下，HTTP服务处于开启状态、HTTPS服务处于关闭状态），并配置设备VLAN接口的IP地址、Web登录用户及认证口令等，配置完成后，您即可使用Web网管的方式登录设备。

表3-1 通过Web登录设备需要具备的条件

对象 | 需要具备的条件
设备 | 配置设备VLAN接口的IP地址，设备与Web登录用户间路由可达
 | 配置Web登录用户的属性 二者必选其一 | HTTP方式配置
 |  | HTTPS方式配置
Web登录用户 | 运行Web浏览器
 | 获取要登录设备VLAN接口的IP地址

本节将为您介绍如何通过Web登录设备，并配置通过Web登录时的认证方式及用户级别等，实现对Web登录用户的控制。


3.2 配置通过HTTP方式登录设备

表3-2 配置通过HTTP方式登录设备

操作 | 命令 | 说明
进入系统视图 | system-view | -
启动HTTP服务器 | ip http enable | 必选 缺省情况下，Web服务器为启动状态
配置HTTP服务的端口号 | ip http port port-number | 可选 缺省情况下，HTTP服务的端口号为80 如果重复执行此命令，HTTP服务将使用最后一次配置的端口号
配置HTTP服务与ACL关联 | ip http acl acl-number | 可选 缺省情况下，没有ACL与HTTP服务关联 通过将HTTP服务与ACL关联，可以过滤掉来自某些客户端的请求，只允许通过ACL过滤的客户端访问设备
创建本地用户（进入本地用户视图） | local-user user-name | 必选 缺省情况下，无本地用户
配置本地认证口令 | password { cipher | simple } password | 必选 缺省情况下，无本地认证口令
配置Web登录的用户级别 | authorization-attribute level level | 必选 缺省情况下，没有配置Web登录的用户级别
配置Web登录用户的服务类型 | service-type web | 必选 缺省情况下，没有配置用户的服务类型
退回系统视图 | quit | -
创建VLAN接口并进入VLAN接口视图 | interface vlan-interface vlan-interface-id | 必选 如果该VLAN接口已经存在，则直接进入该VLAN接口视图
配置VLAN接口的IP地址 | ip address ip-address { mask | mask-length } | 必选 缺省情况下，没有配置VLAN接口的IP地址


3.3 配置通过HTTPS方式登录设备

表3-3 配置通过HTTPS方式登录设备

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置HTTPS服务与SSL服务器端策略关联 | ip https ssl-server-policy policy-name | 必选 缺省情况下，没有SSL服务器端策略与HTTPS服务关联 l 关闭HTTPS服务后，系统将自动取消HTTPS服务与SSL服务器端策略的关联。再次使能HTTPS服务之前，需要重新配置HTTPS服务与SSL服务器端策略关联 l HTTPS服务处于使能状态时，对与其关联的SSL服务器端策略进行的修改不会生效
使能HTTPS服务 | ip https enable | 必选 缺省情况下，HTTPS服务处于关闭状态 使能HTTPS服务，会触发SSL的握手协商过程。在SSL握手协商过程中，如果设备的本地证书已经存在，则SSL协商可以成功，HTTPS服务可以正常启动；如果设备的本地证书不存在，则SSL协商过程会触发证书申请流程。由于证书申请需要较长的时间，会导致SSL协商不成功，从而无法正常启动HTTPS服务。因此，在这种情况下，需要多次执行 ip https enable 命令，这样HTTPS服务才能正常启动
配置HTTPS服务与证书属性访问控制策略关联 | ip https certificate access-control-policy policy-name | 可选 缺省情况下，没有证书属性访问控制策略与HTTPS服务关联 l 通过将HTTPS服务与已配置的客户端证书属性访问控制策略关联，可以实现对客户端的访问权限进行控制，进一步保证设备的安全性 l 如果配置HTTPS服务与证书属性访问控制策略关联，则必须同时在与HTTPS服务关联的SSL服务器端策略中配置client-verify enable命令，否则，客户端无法登录设备。 l 如果配置HTTPS服务与证书属性访问控制策略关联，则证书属性访问控制策略中必须至少包括一条permit规则，否则任何HTTPS客户端都无法登录设备。 l 证书属性访问控制策略的详细介绍请参见“安全配置指导”中的“PKI”
配置HTTPS服务的端口 | ip https port port-number | 可选 缺省情况下，HTTPS服务的端口号为443
配置HTTPS服务与ACL关联 | ip https acl acl-number | 必选 缺省情况下，没有ACL与HTTPS服务关联 通过将HTTP服务与ACL关联，可以过滤掉来自某些客户端的请求，只允许通过ACL过滤的客户端访问设备
创建本地用户（进入本地用户视图） | local-user user-name | 必选 缺省情况下，无本地用户
配置本地认证口令 | password { cipher | simple } password | 必选 缺省情况下，无本地认证口令
配置Web登录的用户级别 | authorization-attribute level level | 必选 缺省情况下，没有配置Web登录的用户级别
配置Web登录用户的服务类型 | service-type web | 必选 缺省情况下，没有配置用户的服务类型
退出至系统视图 | quit | -
创建VLAN接口并进入VLAN接口视图 | interface vlan-interface vlan-interface-id | 必选 如果该VLAN接口已经存在，则直接进入该VLAN接口视图
配置VLAN接口的IP地址 | ip address ip-address { mask | mask-length } | 必选 缺省情况下，没有配置VLAN接口的IP地址


3.4 通过Web网管登录设备显示与维护

在完成上述配置后，在任意视图下执行 display 命令可以显示Web用户的信息，通过查看显示信息验证配置的效果。

表3-4 Web用户显示

操作 | 命令
显示Web用户的相关信息 | display web users [ | { begin | exclude | include } regular-expression ]
显示HTTP的状态信息 | display ip http [ | { begin | exclude | include } regular-expression ]
显示HTTPS的状态信息 | display ip https [ | { begin | exclude | include } regular-expression ]


3.5 通过Web网管登录设备典型配置举例

3.5.1 使用HTTP方式登录设备典型配置举例

1. 组网需求

PC与设备通过以太网相连，设备的IP地址为192.168.0.58/24。

2. 组网图

图3-1 配置HTTP方式登录组网图

3. 配置步骤

(1) 配置Device

# 创建VLAN 999，用作远程登录，并将Device上与PC相连的接口Ethernet 1/0/1加入VLAN 999.

<Sysname> system-view

[Sysname] vlan 999

[Sysname-vlan999] port Ethernet 1/0/1

[Sysname-vlan999] quit

# 配置VLAN 999接口的IP地址为192.168.0.58，子网掩码为255.255.255.0。

[Sysname] interface vlan-interface 999

[Sysname-VLAN-interface999] ip address 192.168.0.58 255.255.255.0

[Sysname-VLAN-interface999] quit

# 配置Web网管用户名为admin，认证口令为admin，用户级别为3级。

[Sysname] local-user admin

[Sysname-luser-admin] service-type web

[Sysname-luser-admin] authorization-attribute level 3

[Sysname-luser-admin] password simple admin

(2) 配置PC

# 在PC的浏览器地址栏内输入设备的IP地址并回车，浏览器将显示Web网管的登录页面，如图3-2 所示：

图3-2 通过Web登录设备

# 在“Web网管用户登录”对话框中输入用户名、密码及验证码，并选择登录使用的语言，点击<登录>按钮后即可登录，显示Web网管初始页面。成功登录后，您可以在配置区对设备进行各种配置。

3.5.2 使用HTTPS方式登录设备典型配置举例

1. 组网需求

用户可以通过Web页面访问和控制设备。为了防止非法用户访问和控制设备，提高设备管理的安全性，设备要求用户以HTTPS（Hypertext Transfer Protocol Secure，超文本传输协议的安全版本）的方式登录Web页面，利用SSL协议实现用户身份验证，并保证传输的数据不被窃听和篡改。

为了满足上述需求，需要进行如下配置：

l 配置Device作为HTTPS服务器，并为Device申请证书。

l 为HTTPS客户端Host申请证书，以便Device验证其身份。

其中，负责为Device和Host颁发证书的CA（Certificate Authority，证书颁发机构）名称为new-ca。

l 本配置举例中，采用Windows Server作为CA。在CA上需要安装SCEP（Simple Certificate Enrollment Protocol，简单证书注册协议）插件。

l 进行下面的配置之前，需要确保Device、Host、CA之间路由可达。

2. 组网图

图3-3 HTTPS配置组网图

3. 配置步骤

(1) 配置HTTPS服务器Device

# 配置PKI实体en，指定实体的通用名为http-server1、FQDN为ssl.security.com。

<Device> system-view

[Device] pki entity en

[Device-pki-entity-en] common-name http-server1

[Device-pki-entity-en] fqdn ssl.security.com

[Device-pki-entity-en] quit

# 配置PKI域1，指定信任的CA名称为new-ca、注册服务器的URL为http://10.1.2.2/certsrv/mscep/mscep.dll、证书申请的注册受理机构为RA、实体名称为en。

[Device] pki domain 1

[Device-pki-domain-1] ca identifier new-ca

[Device-pki-domain-1] certificate request url http://10.1.2.2/certsrv/mscep/mscep.dll

[Device-pki-domain-1] certificate request from ra

[Device-pki-domain-1] certificate request entity en

[Device-pki-domain-1] quit

# 生成本地的RSA密钥对。

[Device] public-key loc al create rsa

# 获取CA的证书。

[Device] pki retrieval-certificate ca domain 1

# 为Device申请证书。

[Device] pki request-certificate domain 1

# 创建SSL服务器端策略myssl，指定该策略使用PKI域1，并配置服务器端需要验证客户端身份。

[Device] ssl server-policy myssl

[Device-ssl-server-policy-myssl] pki-domain 1

[Device-ssl-server-policy-myssl] client-verify enable

[Device-ssl-server-policy-myssl] quit

# 创建证书属性组mygroup1，并配置证书属性规则，该规则规定证书颁发者的DN（Distinguished Name，识别名）中包含new-ca。

[Device] pki certificate attribute-group mygroup1

[Device-pki-cert-attribute-group-mygroup1] attribute 1 issuer-name dn ctn new-ca

[Device-pki-cert-attribute-group-mygroup1] quit

# 创建证书访问控制策略myacp，并建立控制规则，该规则规定只有由new-ca颁发的证书可以通过证书访问控制策略的检测。

[Device] pki certificate access-control-policy myacp

[Device-pki-cert-acp-myacp] rule 1 permit mygroup1

[Device-pki-cert-acp-myacp] quit

# 配置HTTPS服务与SSL服务器端策略myssl关联。

[Device] ip https ssl-server-policy myssl

# 配置HTTPS服务与证书属性访问控制策略myacp关联，确保只有从new-ca获取证书的HTTPS客户端可以访问HTTPS服务器。

[Device] ip https certificate access-control-policy myacp

# 使能HTTPS服务。

[Device] ip https enable

# 创建本地用户usera，密码为123，服务类型为web，级别为3（最高级别，具有该级别的用户登录后能够执行设备支持的所有操作）。

[Device] local-user usera

[Device-luser-usera] password simple 123

[Device-luser-usera] service-type web

[Device-luser-usera] authorization-attribute level 3

(2) 配置HTTPS客户端Host

在Host上打开IE浏览器，输入网址http://10.1.2.2/certsrv，根据提示为Host申请证书。

(3) 验证配置结果

在Host上打开IE浏览器，输入网址https://10.1.1.1，选择new-ca为Host颁发的证书，即可打开Device的Web登录页面。在登录页面，输入用户名usera，密码123，则可进入Device的Web配置页面，实现对Device的访问和控制。

l HTTPS服务器的URL地址以“https://”开始，HTTP服务器的URL地址以“http://”开始。

l PKI配置命令的详细介绍请参见“安全命令参考”中的“PKI”；

l public-key local create rsa 命令的详细介绍请参见“安全命令参考”中的“公钥管理”；

l SSL配置命令的详细介绍请参见“安全命令参考”中的“SSL”。


4 配置通过NMS登录设备

相关链接

  • 4.1 通过NMS登录设备简介
  • 4.2 配置通过NMS登录设备
  • 4.3 通过NMS登录设备典型配置举例
父主题： 02-登录交换机配置


4.1 通过NMS登录设备简介

用户可通过NMS（Network Management Station，网络管理系统）登录到设备上，通过设备上的Agent模块对设备进行管理、配置。设备支持多种NMS软件。

缺省情况下，用户不能通过NMS登录到设备上，如果要使用NMS登录设备，您首先需要通过Console口登录到设备上，在设备上进行相关配置。配置完成后，您即可使用NMS网管的方式登录设备。

表4-1 通过NMS登录设备需要具备的条件

对象 | 需要具备的条件
设备 | 配置设备VLAN接口的IP地址，设备与NMS间路由可达
 | 配置SNMP基本功能
NMS（网络管理系统） | NMS网络管理系统进行了正确配置，具体配置请参见NMS附带的网管手册


4.2 配置通过NMS登录设备

建立配置环境，将PC机以太网口通过网络与设备VLAN1下的以太网口连接，确保PC机和VLAN1接口之间路由可达。

图4-1 通过NMS方式登录组网环境

表4-2 配置SNMP基本参数（SNMP v3版本）

操作 | 命令 | 说明
进入系统视图 | system-view | -
启动SNMP Agent服务 | snmp-agent | 可选 缺省情况下，SNMP Agent服务处于关闭状态 执行此命令或执行 snmp-agent 的任何一条配置命令（不含 display 命令），都可以启动SNMP Agent
配置SNMP组 | snmp-agent group v3 group-name [ authentication | privacy ] [ read-view read-view ] [ write-view write-view ] [ notify-view notify-view ] [ acl acl-number ] | 必选 缺省情况下，没有配置SNMP组
为SNMP组添加新用户 | snmp-agent usm-user v3 user-name group-name [ [ cipher ] authentication-mode { md5 | sha } auth-password [ privacy-mode { 3des | aes128 | des56 } priv-password ] ] [ acl acl-number ] | 必选 如果使用 cipher 参数，则后面的 auth-password 和 priv-password 都将被视为密文密码

表4-3 配置SNMP基本参数（SNMP v1版本、SNMP v2c版本）

操作 |  |  | 命令 | 说明
进入系统视图 |  |  | system-view | -
启动SNMP Agent服务 |  |  | snmp-agent | 可选 缺省情况下，SNMP Agent服务处于关闭状态。 执行此命令或执行 snmp-agent 的任何一条配置命令，都可以启动SNMP Agent
创建或更新MIB视图内容 |  |  | snmp-agent mib-view { excluded | included } view-name oid-tree [ mask mask-value ] | 可选 缺省情况下，视图名为ViewDefault，OID为1
设置访问权限 | 直接设置 | 创建一个新的SNMP团体 | snmp-agent community { read | write } community-name [ acl acl-number | mib-view view-name ]* | 二者必选其一 直接设置是以SNMP v1和v2c版本的团体名进行设置 间接设置采用与SNMP v3版本一致的命令形式，添加的用户到指定的组，即相当于SNMP v1和SNMP v2c版本的团体名，在NMS上配置的团体名需要跟Agent上配置的用户名一致
 | 间接设置 | 设置一个SNMP组 | snmp-agent group { v1 | v2c } group-name [ read-view read-view ] [ write-view write-view ] [ notify-view notify-view ] [ acl acl-number ]
 |  | 为一个SNMP组添加一个新用户 | snmp-agent usm-user { v1 | v2c } user-name group-name [ acl acl-number ]

设备支持SNMP v1、SNMP v2c和SNMP v3三种版本，关于SNMP的详细介绍及配置，请参见“网络管理和监控配置指导”中的“SNMP”。


4.3 通过NMS登录设备典型配置举例

通过NMS登录设备的方法如下（此处以iMC为例）：

(1) 设备配置

# 配置设备的IP地址并确保设备与NMS之间路由可达。（配置步骤略）

# 进入系统视图。

<Sysname> system-view

# 启动SNMP Agent服务。

[Sysname] snmp-agent

# 配置SNMP组。

[Sysname] snmp-agent group v3 managev3group

# 为SNMP组添加新用户

[Sysname] snmp-agent usm-user v3 managev3user managev3group

(2) 配置NMS

用户可利用网管系统完成对设备的查询和配置操作，具体情况请参考NMS的配套手册。

NMS侧的配置必须和设备侧保持一致，否则无法进行相应操作。

(3) 配置客户端

在PC的浏览器地址栏内输入iMC的IP地址（此处以iMC的IP地址为192.168.4.112为例），如图4-2 所示：在地址栏中输入http://192.168.4.112:8080/imc（IP地址和端口号应与实际安装环境保持一致）。

图4-2 登录页面

在登录页面中，输入正确的操作员和密码后单击<登录>按钮，即可进入系统首页，如图4-3 所示。

图4-3 iMC配置界面

成功登录后，您可以选择相应选项对设备进行各种配置和管理。需要帮助可以随时点击登录页面右上角的“帮助”选项获得相应功能的帮助信息。

通过以上配置，NMS可以和设备建立SNMP连接，能够通过MIB节点查询、设置设备上某些参数的值。


5 对登录用户的控制

相关链接

  • 5.1 对登录用户的控制简介
  • 5.2 配置对Telnet用户的控制
  • 5.3 通过源IP对网管用户进行控制
  • 5.4 通过源IP对Web用户进行控制
父主题： 02-登录交换机配置


5.1 对登录用户的控制简介

设备提供对不同登录方式进行控制，如表5-1 所示。

表5-1 对登录用户的控制

登录方式 | 控制方式 | 实现方法 | 相关小节
Telnet | 通过源IP对Telnet进行控制 | 通过基本ACL实现 | 5.2.2
 | 通过源IP、目的IP对Telnet进行控制 | 通过高级ACL实现 | 5.2.3
 | 通过源MAC对Telnet进行控制 | 通过二层ACL实现 | 5.2.4
NMS | 通过源IP对网管用户进行控制 | 通过基本ACL实现 | 5.3.2
Web | 通过源IP对Web用户进行控制 | 通过基本ACL实现 | 5.4.2


5.2 配置对Telnet用户的控制

5.2.1 配置准备

确定了对Telnet的控制策略，包括对哪些源IP、目的IP、源MAC进行控制，控制的动作是允许访问还是拒绝访问。

5.2.2 通过源IP对Telnet进行控制

本配置需要通过基本访问控制列表实现。基本访问控制列表的序号取值范围为2000～2999。关于ACL的定义请参见“ACL和QoS配置指导”中的“ACL”。

表5-2 通过源IP对Telnet进行控制

操作 | 命令 | 说明
进入系统视图 | system-view | -
创建或进入基本ACL视图 | acl [ ipv6 ] number acl-number [ match-order { config | auto } ] | 必选 缺省情况下，匹配顺序为 config
定义子规则 | rule [ rule-id ] { permit | deny } [ source { sour-addr sour-wildcard | any } | time-range time-name | fragment | logging ]* | 必选
退出ACL视图 | quit | -
进入用户界面视图 | user-interface [ type ] first-number [ last-number ] | -
引用访问控制列表，通过源IP对Telnet进行控制 | acl [ ipv6 ] acl-number { inbound | outbound } | 必选 inbound：对Telnet到本设备的用户进行ACL控制 outbound：对从本设备Telnet到其他Telnet服务器的用户进行ACL控制

5.2.3 通过源IP、目的IP对Telnet进行控制

本配置需要通过高级访问控制列表实现。高级访问控制列表的序号取值范围为3000～3999。关于ACL的定义请参见“ACL和QoS配置指导”中的“ACL”。

表5-3 配置高级ACL规则

操作 | 命令 | 说明
进入系统视图 | system-view | -
创建或进入高级ACL视图 | acl [ ipv6 ] number acl-number [ match-order { config | auto } ] | 必选 缺省情况下，匹配顺序为config
定义子规则 | rule [ rule-id ] { permit | deny } rule-string | 必选 用户可以根据需要配置对相应的源IP、目的IP进行过滤的规则
退出ACL视图 | quit | -
进入用户界面视图 | user-interface [ type ] first-number [ last-number ] | -
引用访问控制列表，通过源IP、目的IP对Telnet进行控制 | acl [ ipv6 ] acl-number { inbound | outbound } | 必选 inbound：对Telnet到本设备的用户进行ACL控制 outbound：对从本设备Telnet到其他Telnet服务器的用户进行ACL控制

5.2.4 通过源MAC地址对Telnet进行控制

本配置需要通过二层访问控制列表实现。二层访问控制列表的序号取值范围为4000～4999。关于ACL的定义请参见“ACL和QoS配置指导”中的“ACL”。

表5-4 配置二层ACL规则

操作 | 命令 | 说明
进入系统视图 | system-view | -
创建或进入二层ACL视图 | acl number acl-number [ match-order { config | auto } ] | 必选 缺省情况下，匹配顺序为 config
定义子规则 | rule [ rule-id ] { permit | deny } rule-string | 必选 用户可以根据需要配置对相应的源MAC进行过滤的规则
退出ACL视图 | quit | -
进入用户界面视图 | user-interface [ type ] first-number [ last-number ] | -
引用访问控制列表，通过源MAC对Telnet进行控制 | acl acl-number inbound | 必选 inbound：对Telnet到本设备的用户进行ACL控制

二层访问控制列表对于Telnet Client的源IP与Telnet服务器的接口IP不在同一网段的不生效。

5.2.5 配置举例

1. 组网需求

通过源IP对Telnet进行控制，仅允许来自10.110.100.52和10.110.100.46的Telnet用户访问设备。

2. 组网图

图5-1 对Device的Telnet用户进行ACL控制

3. 配置步骤

# 定义基本访问控制列表。

<Sysname> system-view

[Sysname] acl number 2000 match-order config

[Sysname-acl-basic-2000] rule 1 permit source 10.110.100.52 0

[Sysname-acl-basic-2000] rule 2 permit source 10.110.100.46 0

[Sysname-acl-basic-2000] quit

# 引用访问控制列表，允许源地址为10.110.100.52和10.110.100.46的Telnet用户访问设备。

[Sysname] user-interface vty 0 15

[Sysname-ui-vty0-15] acl 2000 inbound


5.3 通过源IP对网管用户进行控制

设备支持通过网管软件进行远程管理。网管用户可以通过SNMP访问设备。通过引用访问控制列表，可以对访问设备的SNMP用户进行控制。

5.3.1 配置准备

确定了对网管用户的控制策略，包括对哪些源IP进行控制，控制的动作是允许访问还是拒绝访问。

5.3.2 通过源IP对网管用户进行控制

本配置需要通过基本访问控制列表实现。基本访问控制列表的序号取值范围为2000～2999。关于ACL的定义请参见“ACL和QoS配置指导”中的“ACL”。

表5-5 通过源IP对网管用户进行控制

操作

命令

说明

进入系统视图

system-view

-

创建或进入基本ACL视图

acl [ ipv6 ] number acl-number [ match-order { config | auto } ]

必选

缺省情况下，匹配顺序为config

定义子规则

rule [ rule-id ] { permit | deny } [ source { sour-addr sour-wildcard | any } | time-range time-name | fragment | logging ]*

必选

退出ACL视图

quit

-

在配置SNMP团体名的命令中引用访问控制列表

snmp-agent community { read | write } community-name [ acl acl-number | mib-view view-name ]*

必选

根据网管用户运行的SNMP版本及配置习惯，可以在团体名、组名或者用户名配置时引用访问控制列表，详细介绍请参见“网络管理和监控配置指导”中的“SNMP”

在配置SNMP组名的命令中引用访问控制列表

snmp-agent group { v1 | v2c } group-name [ read-view read-view ] [ write-view write-view ] [ notify-view notify-view ] [ acl acl-number ]

snmp-agent group v3 group-name [ authentication | privacy ] [ read-view read-view ] [ write-view write-view ] [ notify-view notify-view ] [ acl acl-number ]

在配置SNMP用户名的命令中引用访问控制列表

snmp-agent usm-user { v1 | v2c } user-name group-name [ acl acl-number ]

snmp-agent usm-user v3 user-name group-name [ [ cipher ] authentication-mode { md5 | sha } auth-password [ privacy-mode { 3des | aes128 | des56 } priv-password ] ] [ acl acl-number ]

5.3.3 配置举例

1. 组网需求

通过源IP对网管用户进行控制，仅允许来自10.110.100.52和10.110.100.46的NMS用户访问设备。

2. 组网图

图5-2 对NMS用户进行ACL控制

3. 配置步骤

# 定义基本访问控制列表。

<Sysname> system-view

[Sysname] acl number 2000 match-order config

[Sysname-acl-basic-2000] rule 1 permit source 10.110.100.52 0

[Sysname-acl-basic-2000] rule 2 permit source 10.110.100.46 0

[Sysname-acl-basic-2000] quit

# 引用访问控制列表，仅允许来自10.110.100.52和10.110.100.46的SNMP用户访问设备。

[Sysname] snmp-agent community read aaa acl 2000

[Sysname] snmp-agent group v2c groupa acl 2000

[Sysname] snmp-agent usm-user v2c usera groupa acl 2000


5.4 通过源IP对Web用户进行控制

设备支持通过Web方式进行远程管理。Web用户可以通过HTTP协议访问设备。通过引用访问控制列表，可以对访问设备的Web用户进行控制。

5.4.1 配置准备

确定了对Web用户的控制策略，包括对哪些源IP进行控制，控制的动作是允许访问还是拒绝访问。

5.4.2 通过源IP对Web用户进行控制

本配置需要通过基本访问控制列表实现。基本访问控制列表的序号取值范围为2000～2999。关于ACL的定义请参见“ACL和QoS配置指导”中的“ACL”。

表5-6 通过源IP对Web用户进行控制

操作 | 命令 | 说明
进入系统视图 | system-view | -
创建或进入基本ACL视图 | acl [ ipv6 ] number acl-number [ match-order { config | auto } ] | 必选 缺省情况下，匹配顺序为 config
定义子规则 | rule [ rule-id ] { permit | deny } [ source { sour-addr sour-wildcard | any } | time-range time-name | fragment | logging ]* | 必选
退出ACL视图 | quit | -
引用访问控制列表对Web用户进行控制 | ip http acl acl-number | 必选

5.4.3 强制在线Web用户下线

网络管理员可以通过命令行强制在线Web用户下线。

表5-7 强制在线Web用户下线

操作 | 命令 | 说明
强制在线Web用户下线 | free web-users { all | user-id user-id | user-name user-name } | 必选 在用户视图下执行

5.4.4 配置举例

1. 组网需求

通过源IP对Web用户进行控制，仅允许来自10.110.100.52的Web用户访问设备。

2. 组网图

图5-3 对Device的HTTP用户进行ACL控制

3. 配置步骤

# 定义基本访问控制列表。

<Sysname> system-view

[Sysname] acl number 2030 match-order config

[Sysname-acl-basic-2030] rule 1 permit source 10.110.100.52 0

# 引用访问控制列表，仅允许来自10.110.100.52的Web用户访问设备。

[Sysname] ip http acl 2030


1 FTP配置

相关链接

  • 1.1 FTP简介
  • 1.2 配置FTP客户端
  • 1.3 配置FTP服务器
  • 1.4 FTP显示和维护
父主题： 03-FTP和TFTP配置


1.1 FTP简介

1.1.1 FTP概述

FTP（File Transfer Protocol，文件传输协议）用于在远端服务器和本地主机之间传输文件，是IP网络上传输文件的通用协议。在万维网（WWW，World Wide Web）出现以前，用户使用命令行方式传输文件，最通用的应用程序就是FTP。虽然目前大多数用户在通常情况下选择使用Email和Web传输文件，但是FTP仍然有着比较广泛的应用。

FTP协议在TCP/IP协议族中属于应用层协议，用于在远端服务器和本地客户端之间传输文件，使用TCP端口20和21进行传输。端口20用于传输数据，端口21用于传输控制消息。FTP协议基本操作在RFC959中进行了描述。

FTP有两种文件传输模式：

l 二进制模式，用于传输程序文件（比如后缀名为.app和.bin的文件）；

l ASCII码模式，用于传输文本格式的文件（比如后缀名为.txt、.bat和.cfg的文件）。

FTP有两种工作方式：

l 主动方式（PORT），数据连接由FTP服务器发起，当FTP客户端处于防火墙后时不适用；

l 被动方式（PASV），数据连接由FTP客户端程序发起，当FTP服务器限制客户端连接其高位端口（一般情况下大于1024）时不适用。

是否使用被动方式由FTP客户端程序决定，不同FTP客户端软件对FTP工作方式的支持情况可能不同，请在使用时以软件的实际情况为准。

1.1.2 FTP的实现

设备在支持FTP协议上有两种方式：

l 设备作为FTP客户端：如图1-1 所示，设备（Device）作为FTP客户端，PC作为FTP服务器。在Device上执行 ftp 命令，与PC建立FTP连接，完成文件的上传/下载操作。

l 设备作为FTP服务器：如图1-1 所示，设备（Device）作为FTP服务器，PC作为FTP客户端。在PC上运行FTP客户端程序，与Device建立FTP连接，完成文件的上传/下载操作。

图1-1 FTP配置示意图

设备作为FTP客户端时，需要进行如下配置：

表1-1 设备作为FTP客户端时的配置

设备 | 操作 | 说明
Device（作为FTP客户端） | 可以直接使用 ftp 命令登录远端的FTP服务器 | 如果远端FTP服务器支持匿名访问，设备可以直接登录；如果远端FTP服务器不支持匿名访问，则必须先获取FTP用户名和密码后，才能成功登录远端的FTP服务器
PC（作为FTP服务器） | 启动FTP服务器，并做了用户名、密码、用户的权限等相关的配置 | -

设备作为FTP服务器时，需要进行如下配置：

表1-2 设备作为FTP服务器时的配置

设备 | 操作 | 说明
Device（作为FTP服务器） | 启动FTP服务器功能 | 缺省情况下，系统关闭FTP服务器功能 可以通过 display ftp-server命令查看设备上FTP服务器功能的配置信息
 | 配置FTP服务器的验证和授权 | 配置FTP用户的用户名、密码、授权的工作目录。出于安全考虑，设备不支持匿名登录，用户必须使用合法的用户名和密码。缺省情况下，合法用户可访问的目录为设备的根目录
 | 配置FTP服务器的运行参数 | 配置FTP连接的超时时间等参数
PC（作为FTP客户端） | 使用FTP客户端程序登录设备 | 用户必须获取FTP用户名和密码后，才能成功登录远端的FTP服务器

l 在建立FTP连接前请确保FTP服务器与FTP客户端之间路由可达，否则，连接建立失败。

l 当设备作为FTP服务器，使用IE登录设备时，因为IE在登录过程中建立了多个用户连接，而目前设备某一时刻只支持一个用户连接，所以使用IE登录设备时FTP的部分功能不支持。


1.2 配置FTP客户端

只有级别为3（管理级）的用户才能使用 ftp 命令登录FTP服务器，进入FTP客户端视图，执行目录、文件等命令，但命令能否执行成功，还将受FTP服务器端的授权限制。

1.2.1 建立FTP连接

FTP客户端要访问FTP服务器，必须先与FTP服务器建立连接。连接的建立方式有两种，一种是使用 ftp 命令直接建立连接，一种是在FTP客户端视图下使用 open 命令间接建立连接。

在使用 ftp 命令建立FTP连接时，还可以进行源地址绑定。源地址可以通过配置源接口（建议使用Loopback接口）或源IP地址来实现，源接口下配置的主IP地址或源IP地址即为发送报文的源地址。

FTP客户端在与FTP服务器通信的时候，发送报文的源地址选取遵循以下规则：

l 如果没有指定FTP客户端的源地址，则采用路由决定的源地址进行通信。

l 如果只用 ftp client source 或 ftp 命令指定了源地址，则采用该地址进行通信。

l 如果执行 ftp client source 命令指定了源地址后，又在 ftp 命令中指定了源地址，则采用 ftp 命令中指定的源地址进行通信。

l ftp client source 命令指定的源地址对所有的FTP连接有效，ftp 命令指定的源地址只对当前的FTP连接有效。

表1-3 建立FTP连接（IPv4组网环境）

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置FTP客户端的源地址 | ftp client source { interface interface-type interface-number | ip source-ip-address } | 可选 缺省情况下，设备使用路由决定的源地址与FTP服务器通信
退回用户视图 | quit | -
在用户视图下直接登录远程FTP服务器 | ftp [ server-address [ service-port ] [ vpn-instance vpn-instance-name ] [ source { interface interface-type interface-number | ip source-ip-address } ] ] | 二者必选其一 ftp 命令直接在用户视图下执行；open 命令在FTP客户端视图下执行
在FTP客户端视图下间接登录远程FTP服务器 | ftp
 | open server-address [ service-port ]

l 如果源接口下没有配置主地址，将导致FTP连接建立失败。

l 如果先后使用 ftp client source 命令配置了客户端FTP报文的源接口和源IP，则新配置的源IP将覆盖现有的源接口配置。反之亦然。

表1-4 建立FTP连接（IPv6组网环境）

操作 | 命令 | 说明
在用户视图下直接登录远程FTP服务器 | ftp ipv6 [ server-address [ service-port ] [ source ipv6 source-ipv6-address ] [ -i interface-type interface-number ] ] | 二者必选其一 ftp ipv6 命令直接在用户视图下执行；open ipv6 命令在FTP客户端视图下执行
在FTP客户端视图下间接登录远程FTP服务器 | ftp ipv6
 | open ipv6 server-address [ service-port ] [ -i interface-type interface-number ]

1.2.2 操作FTP服务器上的目录

当设备作为FTP客户端，与FTP服务器连接建立成功后（连接操作请参见 1.2.1 建立FTP连接 ），在FTP服务器的授权目录下，用户可以进行创建、删除文件夹等操作。

表1-5 操作FTP服务器上的目录

操作 | 命令 | 说明
查看远程FTP服务器上的目录/文件的详细信息 | dir [ remotefile [ localfile ] ] | 可选
查询远程FTP服务器上的目录/文件 | ls [ remotefile [ localfile ] ] | 可选
切换远程FTP服务器上的工作路径 | cd { directory | .. | / } | 可选
退出远程FTP服务器的当前目录，返回FTP服务器的上一级目录 | cdup | 可选
显示当前用户正在访问的远程FTP服务器上的路径 | pwd | 可选
在远程FTP服务器上创建目录 | mkdir directory | 可选
删除FTP服务器上指定的目录 | rmdir directory | 可选

1.2.3 操作FTP服务器上的文件

当设备作为FTP客户端，与FTP服务器连接建立成功后（连接操作请参见 1.2.1 建立FTP连接 ），在FTP服务器的授权目录下，用户可以通过以下操作，给FTP服务器上传或从FTP服务器下载文件，推荐使用以下步骤：

(1) 使用 dir 或者 ls 命令了解FTP服务器上的目录结构以及文件所处的位置。

(2) 删除过时文件，以便有效利用存储空间。

(3) 设置传输模式。FTP传输文件有两种模式：一种是ASCII码模式，用于传输文本文件；另一种是二进制模式，用于传输程序文件。

(4) 使用 lcd 命令了解用户登录FTP服务器前在FTP客户端上的工作路径。无论使用相对路径还是绝对路径进行上传/下载操作，上传的将是该路径下的文件，文件下载后也将保存到该路径下。

(5) 上传/下载操作。

表1-6 操作FTP服务器上的文件

操作 | 命令 | 说明
查看远程FTP服务器上的目录/文件的详细信息 | dir [ remotefile [ localfile ] ] | 可选 ls 命令只能显示出目录/文件的名称，而 dir 命令可以查看与目录/文件相关的信息，如大小，创建日期等
查询远程FTP服务器上的目录/文件 | ls [ remotefile [ localfile ] ] | 可选 ls 命令只能显示出目录/文件的名称，而 dir 命令可以查看与目录/文件相关的信息，如大小，创建日期等
彻底删除远程FTP服务器上的指定文件 | delete remotefile | 可选
设置FTP文件传输的模式为ASCII模式 | ascii | 可选 缺省情况下，文件传输模式为ASCII模式
设置FTP文件传输的模式为二进制模式 | binary | 可选 缺省情况下，文件传输模式为ASCII模式
设置数据传输的方式为被动方式 | passive | 可选 缺省情况下，数据传输的方式为被动方式
获取FTP客户端本地的工作路径 | lcd | 可选
上传本地文件到远程FTP服务器 | put localfile [ remotefile ] | 可选
下载FTP服务器上的文件 | get remotefile [ localfile ] | 可选

1.2.4 更改登录用户

当设备作为FTP客户端，与FTP服务器连接建立成功后（连接操作请参见 1.2.1 建立FTP连接 ），可以更改登录用户。

该功能通常用于不同权限用户之间的切换，用户的成功切换不会影响当前的FTP连接（即FTP控制连接、数据连接以及连接状态都不变）；如果输入的用户名/密码错误，则会断开当前连接，用户必须重新登录才能继续访问设备。

表1-7 更改登录用户

操作 | 命令 | 说明
成功登录FTP服务器后，使用其他用户身份重新登录 | user username [ password ] | 可选

1.2.5 FTP连接的维护与调试

当设备作为FTP客户端，与FTP服务器连接建立成功后（连接操作请参见 1.2.1 建立FTP连接 ），通过以下命令，可以帮助定位和诊断FTP连接过程中出现的问题。

表1-8 FTP客户端维护与调试

操作 | 命令 | 说明
显示远程FTP服务器支持的FTP相关协议命令的帮助信息 | remotehelp [ protocol-command ] | 可选
使能显示FTP服务器返回的详细信息 | verbose | 可选 缺省情况下，verbose开关为开启状态
当设备作为FTP客户端时，打开FTP调试信息开关 | debugging | 可选 缺省情况下，FTP客户端调试信息开关处于关闭状态

1.2.6 断开FTP连接

当设备作为FTP客户端，与FTP服务器连接建立成功后（连接操作请参见 1.2.1 建立FTP连接 ），可以使用以下任意一条命令来断开FTP连接。

表1-9 断开FTP连接

操作 | 命令 | 说明
不退出FTP客户端视图的前提下，断开与FTP服务器的连接 | disconnect | 可选 等效于 close 命令
不退出FTP客户端视图的前提下，断开与FTP服务器的连接 | close | 可选 等效于 disconnect 命令
断开与远程FTP服务器的连接，并退回到用户视图 | bye | 可选 在FTP客户端视图下执行，等效于 quit 命令
断开与远程FTP服务器的连接，并退回到用户视图 | quit | 可选 在FTP客户端视图下执行，等效于 bye 命令

1.2.7 FTP客户端配置举例

1. 组网需求

l Master和Slave两台成员设备组成IRF。Master的成员编号为1，Slave的成员编号为2。

l IRF作为FTP客户端，PC作为FTP服务器。IP地址如组网图所示，IRF和PC之间路由可达。

l IRF从PC上下载新的启动文件完成设备的升级，并将配置文件上传到PC进行备份。

l PC上已设置设备登录FTP服务器的用户名为abc，密码为abc。设备以用户名abc、密码abc登录FTP服务器。

2. 组网图

图1-2 利用FTP客户端功能实现平滑升级

3. 配置步骤

如果设备剩余的内存空间不够，请使用 fixdisk 命令清理内存或者使用 delete /unreserved file-url命令删除部分暂时不用的文件后再执行以下操作。

# 以FTP方式登录服务器。

<Sysname> ftp 10.1.1.1

Trying 10.1.1.1 ...

Connected to 10.1.1.1.

220 WFTPD 2.0 service (by Texas Imperial Software) ready for new user

User(10.1.1.1:(none)):abc

331 Give me your password, please

Password:

230 Logged in successfully

# 将传输模式设置为binary，以便传输启动文件。

[ftp] binary

200 Type set to I.

# 将启动文件newest.bin从PC下载到设备。

l 将启动文件newest.bin从PC下载到Master存储介质的根目录下。

[ftp] get newest.bin

l 将启动文件newest.bin从PC下载到Slave（成员编号为2）存储介质的根目录下。

[ftp] get newest.bin slot2#flash:/newest.bin

# 将本机的配置文件config.cfg上传到服务器进行备份。

[ftp] ascii

[ftp] put config.cfg back-config.cfg

227 Entering Passive Mode (10,1,1,1,4,2).

125 ASCII mode data connection already open, transfer starting for /config.cfg.

226 Transfer complete.

FTP: 3494 byte(s) sent in 5.646 second(s), 618.00 byte(s)/sec.

[ftp] bye

# 将newest.bin指定为所有成员设备的主用下次启动文件。

<Sysname> boot-loader file newest.bin slot all main

This command will set the boot file of the specified board. Continue? [Y/N]:y

The specified file will be used as the main boot file at the next reboot on slot 1!

The specified file will be used as the main boot file at the next reboot on slot 2!

# 重启设备，完成设备软件升级。

<Sysname> reboot

下次启动文件必须存放在存储介质的根目录下。可使用文件的拷贝或移动操作来调整文件的路径为根目录。关于 boot-loader 命令的详细介绍请参见“基础配置命令参考”中的“软件升级”。


1.3 配置FTP服务器

当设备作为FTP服务器时，可以进行如下配置。

1.3.1 FTP服务器的基本配置

用户登录到FTP服务器，使用 put 命令上传文件的过程中，FTP服务器中文件的更新有两种方式，快速更新方式与普通更新方式。

l 快速更新方式，即FTP服务器先将上传文件接收到内存中，全部接收完后，再将文件内容写入存储设备。采用这种方式，即使文件传送过程发生断电等异常情况，也不会损坏FTP服务器上的现有文件。

l 普通更新方式，即FTP服务器一边接收用户的文件，一边将其写入存储设备。采用这种方式，可能会因为断电等异常情况致使FTP服务器上的现有文件被损坏。与快速更新方式相比，普通更新方式需要的空闲内存较少。

表1-10 配置FTP服务器

操作 | 命令 | 说明
进入系统视图 | system-view | -
启动FTP服务器功能 | ftp server enable | 必选 缺省情况下，FTP服务器功能处于关闭状态
使用ACL（Access Control List，访问控制列表）限制哪些FTP客户端可以访问设备 | ftp server acl acl-number | 可选 缺省情况下，没有使用ACL限制FTP客户端
配置FTP服务器的连接空闲时间 | ftp timeout minutes | 可选 缺省情况下，连接空闲时间为30分钟 如果在连接空闲时间内，FTP服务器和客户端没有消息交互，则断开它们之间的连接
设置在上传过程中，FTP服务器更新文件的方式 | ftp update { fast | normal } | 可选 缺省情况下，在给FTP服务器上传文件的过程中，FTP服务器采用 normal 方式更新文件
退回到用户视图 | quit | -
强制释放通过指定用户名建立的FTP连接 | free ftp user username | 可选

1.3.2 配置FTP服务器的验证和授权

FTP服务器的授权信息包含提供给FTP用户的工作目录的路径。只有验证通过和授权成功的用户，才能得到FTP服务器的服务。

以下配置为FTP服务器在本地对FTP客户端身份进行验证的时候的步骤，如果要对FTP客户端进行远程认证，则不需要配置本地用户，但需要配置AAA（Authentication, Authorization and Accounting，认证、授权和计费）认证方案，详细配置请参见“安全配置指导”中的“AAA”。（本地认证是指在设备上验证用户输入的用户名/密码是否与设备上配置的用户名/密码匹配；远程认证是指设备将用户输入的用户名/密码发送给远端的认证服务器，由服务器来验证用户名/密码是否匹配）

表1-11 配置FTP服务器的验证和授权

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入本地用户视图 | local-user user-name | 必选 如果指定的本地用户不存在，则先完成本地用户的创建，再进入该用户的视图 缺省情况下，系统中没有任何本地用户，系统不支持FTP匿名用户访问
设置当前本地用户的密码 | password { simple | cipher } password | 必选
设置用户可以使用的服务类型为FTP | service-type ftp | 必选 缺省情况下，系统不支持FTP匿名用户访问，不对用户授权任何服务；若授权FTP服务，缺省授权使用设备的根目录
配置用户的属性 | authorization-attribute { acl acl-number | callback-number callback-number | idle-cut minute | level level | user-profile profile-name | user-role { guest | guest-manager | security-audit } | vlan vlan-id | work-directory directory-name } * | 可选 缺省情况下，FTP/SFTP用户可以访问设备的根目录，用户的级别为0。可以使用该命令进行修改

l local-user、password、service-type ftp 和 authorization-attribute 命令的详细介绍，请参见“安全命令参考”中的“AAA”。

l 设备作为FTP服务器时，对客户端的访问操作有级别限制：如果要对设备的文件系统执行写操作（比如上传、删除、创建/删除文件夹），则必须将FTP登录用户的级别设置为3；如果执行其它操作（比如普通的查看操作），则FTP登录用户的级别不受限制，可以为0～3中的任意级别。

1.3.3 FTP服务器配置举例

1. 组网需求

l Master和Slave两台成员设备组成IRF。Master的成员编号为1，Slave的成员编号为2。

l IRF作为FTP服务器，PC作为FTP客户端。IP地址如组网图所示，IRF和PC之间路由可达。

l IRF最新版本的启动文件存储在PC上，请使用FTP功能实现IRF的升级以及IRF配置文件的备份。

l 客户端登录FTP服务器的用户名为abc，密码为abc。

2. 组网图

图1-3 利用FTP服务器功能实现升级

3. 配置步骤

如果Master和Slave剩余的内存空间不够，请使用 fixdisk 命令清理内存或者使用 delete /unreserved file-url命令删除部分暂时不用的文件后再执行以下操作。

(1) IRF（FTP Server）上的配置

# 在IRF上添加一个本地用户abc，并设置其认证密码为abc，用户级别为3管理级，授权访问目录为Flash的根目录，abc可以使用的服务类型为FTP。

<Sysname> system-view

[Sysname] local-user abc

[Sysname-luser-abc] password simple abc

[Sysname-luser-abc] authorization-attribute level 3

[Sysname-luser-abc] authorization-attribute work-directory flash:/

如果要直接访问Slave（成员编号为2） Flash的根目录，需要将“authorization-attribute work-directory flash:/”配置中的“flash:/”替换成“slot2#flash:/”。

[Sysname-luser-abc] service-type ftp

[Sysname-luser-abc] quit

# 启动IRF的FTP服务。

[Sysname] ftp server enable

[Sysname] quit

(2) PC（FTP Client）的配置

# 以FTP方式登录FTP服务器。

c:\> ftp 1.1.1.1

Connected to 1.1.1.1.

220 FTP service ready.

User(1.1.1.1:(none)):abc

331 Password required for abc.

Password:

230 User logged in.

# 将IRF的配置文件config.cfg下载到PC本地进行备份。

ftp> get config.cfg back-config.cfg

# 上传启动文件newest.bin到Master存储介质的根目录下。

ftp> put newest.bin

ftp> bye

l 利用FTP功能升级配置文件时，操作步骤与上述介绍基本相同，需要注意的是获取后的配置文件同样要放在存储介质的根目录下。

l 利用FTP远程升级Bootrom程序，文件传送完成后需要再执行 bootrom update 命令来升级Bootrom。

(3) 升级IRF

# 将启动文件newest.bin拷贝到Slave（成员编号为2）存储介质的根目录下。

<Sysname> copy newest.bin slot2#flash:/

# 将newest.bin指定为所有成员设备的主用下次启动文件。

<Sysname> boot-loader file newest.bin slot all main

This command will set the boot file of the specified board. Continue? [Y/N]:y

The specified file will be used as the main boot file at the next reboot on slot 1!

The specified file will be used as the main boot file at the next reboot on slot 2!

# 重启设备，完成IRF软件升级。

<Sysname> reboot

下次启动文件必须存放在存储介质的根目录下。可使用文件的拷贝或移动操作来调整文件的路径为根目录。关于 boot-loader 命令的详细介绍请参见“基础配置命令参考”中的“软件升级”。


1.4 FTP显示和维护

在完成上述配置后，在任意视图下执行 display 命令可以显示配置后FTP的运行情况，通过查看显示信息验证配置的效果。

表1-12 FTP显示和维护

操作 | 命令
查看FTP客户端的当前配置 | display ftp client configuration [ | { begin | exclude | include } regular-expression ]
查看FTP服务器的配置情况 | display ftp-server [ | { begin | exclude | include } regular-expression ]
查看FTP登录用户的详细情况 | display ftp-user [ | { begin | exclude | include } regular-expression ]


2 TFTP配置

相关链接

  • 2.1 TFTP简介
  • 2.2 配置TFTP客户端
  • 2.3 TFTP客户端显示和维护
  • 2.4 TFTP客户端配置举例
父主题： 03-FTP和TFTP配置


2.1 TFTP简介

2.1.1 TFTP概述

TFTP（Trivial File Transfer Protocol，简单文件传输协议）也是用于在远端服务器和本地主机之间传输文件的，相对于FTP，TFTP没有复杂的交互存取接口和认证控制，适用于客户端和服务器之间不需要复杂交互的环境。TFTP协议的运行基于UDP协议，使用UDP端口69进行数据传输。TFTP协议基本操作在RFC1350中进行了描述。

TFTP协议传输是由客户端发起的：

l 当TFTP客户端需要从服务器下载文件时，由客户端向TFTP服务器发送读请求包，然后从服务器接收数据，并向服务器发送确认；

l 当TFTP客户端需要向服务器上传文件时，由客户端向TFTP服务器发送写请求包，然后向服务器发送数据，并接收服务器的确认。

TFTP传输文件有两种模式：

l 二进制模式，用于传输程序文件（比如后缀名为.app和.bin的文件）。

l ASCII码模式，用于传输文本格式的文件（比如后缀名为.txt、.bat和.cfg的文件）。

2.1.2 TFTP的实现

目前，设备只能作为TFTP客户端，不支持作为TFTP服务器。

图2-1 TFTP配置示意图

使用TFTP之前，网络管理员需要配置好TFTP客户端和服务器的IP地址，并且确保客户端和服务器之间的路由可达。

设备作为TFTP客户端时，需要进行如下配置：

表2-1 设备作为TFTP客户端时的配置

设备 | 操作 | 说明
Device（作为TFTP客户端） | l 进行IP地址和路由功能配置，确保设备和TFTP服务器之间路由可达 l 直接使用TFTP命令登录远端的TFTP服务器上传或者下载文件 | -
PC（作为TFTP服务器） | 启动TFTP服务器，并配置TFTP工作目录 | -


2.2 配置TFTP客户端

当设备作为TFTP客户端时，可以把本设备的文件上传到TFTP服务器，还可以从TFTP服务器下载文件到本地设备。下载又分为两种：

l 普通下载。在这种方式下，设备将获取的远端文件直接写到存储设备中。如果下载时将远端文件保存在设备上使用的文件名是 destination-filename，而设备已经存在同名文件，则在下载时，系统会先将设备上已有的 destination-filename 文件删除，再保存远端文件。如果下载失败（如网络断开等原因），则原文件已被删除，无法恢复。

l 安全下载。在这种方式下，设备将获取的远端文件先保存到内存中，等用户文件全部接收完毕，才将它写到存储设备中。如果下载时将远端文件保存在设备上使用的文件名是 destination-filename，设备已经存在同名文件，此时，即便下载失败（如网络断开等原因），因为原文件没有被覆盖，仍能使用。这种方法安全系数较高，但需要较大的内存空间。

当操作启动文件或配置文件等重要文件时，建议采用安全下载或者非覆盖性下载（即下载时使用一个当前目录下不存在的文件名作为目标文件名）。

在使用 tftp 命令建立TFTP连接时，还可以进行源地址绑定。源地址可以通过配置源接口（建议使用Loopback接口）或源IP地址来实现，源接口下配置的主IP地址或源IP地址即为发送报文的源地址。

TFTP客户端在与TFTP服务器通信的时候，发送报文的源地址选取遵循以下规则：

l 如果没有指定TFTP客户端的源地址，则采用路由决定的源地址进行通信。

l 如果只用 tftp client source 或 tftp 命令指定了源地址，则采用该地址进行通信。

l 如果执行 tftp client source 命令指定了源地址后，又在 tftp 命令中指定了源地址，则采用 tftp 命令中指定的源地址进行通信。

l tftp client source 命令指定的源地址对所有的 tftp 传输有效，tftp 命令指定的源地址只对当前的 tftp 传输有效。

表2-2 配置TFTP客户端

操作 | 命令 | 说明
进入系统视图 | system-view | -
使用ACL限制设备可访问哪些TFTP服务器 | tftp-server [ ipv6 ] acl acl-number | 可选 缺省情况下，没有使用ACL限制TFTP服务器
配置TFTP客户端的源地址 | tftp client source { interface interface-type interface-number | ip source-ip-address } | 可选 缺省情况下，设备使用路由决定的源地址与TFTP服务器通信
退回用户视图 | quit | -
在IPv4网络，用TFTP下载/上传/安全下载文件 | tftp server-address { get | put | sget } source-filename [ destination-filename ] [ vpn-instance vpn-instance-name ] [ source { interface interface-type interface-number | ip source-ip-address } ] | 可选 该命令在用户视图下执行
在IPv6网络，用TFTP下载/上传文件 | tftp ipv6 tftp-ipv6-server [ -i interface-type interface-number ] { get | put } source-filename [ destination-filename ] | 可选 该命令在用户视图下执行

l 如果源接口下没有配置主地址，将导致TFTP传输失败。

l 如果先后配置了客户端TFTP报文的源接口和源IP，则新配置的源IP将覆盖现有的源接口配置。反之亦然。


2.3 TFTP客户端显示和维护

在完成上述配置后，在任意视图下执行 display 命令可以显示配置后TFTP客户端的情况，通过查看显示信息验证配置的效果。

表2-3 TFTP客户端显示和维护

操作 | 命令
查看TFTP客户端的当前配置 | display tftp client configuration [ | { begin | exclude | include } regular-expression ]


2.4 TFTP客户端配置举例

1. 组网需求

l Master和Slave两台成员设备组成IRF。Master的成员编号为1，Slave的成员编号为2。

l IRF作为TFTP客户端，PC作为TFTP服务器。IP地址如组网图所示，IRF和PC之间路由可达。

l IRF通过TFTP协议从PC上下载最新启动文件完成IRF升级，同时将配置文件config.cfg上传到PC实现备份。

2. 组网图

图2-2 利用TFTP客户端功能实现平滑升级

3. 配置步骤

(1) PC（TFTP服务器）的配置（具体配置步骤略）

l 在PC上启动TFTP服务器功能；

l 配置TFTP服务器的工作目录。

(2) IRF（TFTP客户端）上的配置

如果Master和Slave剩余的内存空间不够，请使用 fixdisk 命令清理内存或者使用 delete /unreserved file-url命令删除部分暂时不用的文件后再执行以下操作。

# 将启动文件newest.bin从PC下载到Master和Slave。

l 将启动文件newest.bin从PC下载到Master存储介质的根目录下。

<Sysname> tftp 1.2.1.1 get newest.bin

l 将启动文件newest.bin从PC下载到Slave（成员编号为2）存储介质的根目录下。

<Sysname> tftp 1.2.1.1 get newest.bin slot2#flash:/newest.bin

# 将IRF的配置文件config.cfg上传到TFTP服务器。

<Sysname> tftp 1.2.1.1 put config.cfg configback.cfg

# 将newest.bin指定为所有成员设备的主用下次启动文件。

<Sysname> boot-loader file newest.bin slot all main

This command will set the boot file of the specified board. Continue? [Y/N]:y

The specified file will be used as the main boot file at the next reboot on slot 1!

The specified file will be used as the main boot file at the next reboot on slot 2!

# 重启IRF，完成IRF软件升级。

<Sysname> reboot

下次启动文件必须存放在存储介质的根目录下。可使用文件的拷贝或移动操作来调整文件的路径为根目录。关于 boot-loader 命令的详细描述请参见“基础配置命令参考”中的“软件升级”。


1 文件系统管理

相关链接

  • 1.1 文件系统
  • 1.2 文件操作
  • 1.3 目录操作
  • 1.4 存储设备操作
  • 1.5 批处理操作
  • 1.6 设置文件系统的提示方式
  • 1.7 文件系统应用举例
父主题： 04-文件系统管理配置


1.1 文件系统

1.1.1 文件系统简介

设备运行过程中所需要的文件（如：主机软件、配置文件等）保存在设备的存储设备中，为了方便用户对存储设备进行有效的管理，设备以文件系统的方式对这些文件进行管理。

文件系统操作包括：文件操作、目录操作、存储设备操作、批处理操作等。

1.1.2 文件名参数输入规则

在设备上执行文件系统操作时，文件名参数的输入方式需要遵循下表。

表1-1 设备文件名参数输入规则

格式 | 说明 | 长度 | 举例
file-name | 纯文件名（只有文件名而没有路径），表示当前工作路径下的文件 | 1～91个字符 | a.cfg表示当前目录下的a.cfg文件，如果当前工作路径在Master，则a.cfg表示Master上的a.cfg文件；如果当前工作路径在Slave，则a.cfg表示Slave上的a.cfg文件
path/file-name | 文件夹＋纯文件名，表示当前路径指定文件夹下的指定文件。path 表示文件夹的名称，path 参数可以输入多次，表示多级文件夹下的文件 | 1～135个字符 | test/a.cfg表示当前路径下test子文件夹下的a.cfg文件
drive:/[path]/file-name | 存储介质＋文件夹＋纯文件名，表示设备上某块存储介质上的文件。drive 表示存储介质的名称，Master上的存储介质表示为flash；Slave上的存储介质表示为slotX#flash，X为设备的成员编号，如：slot2#flash。可以使用 display irf 命令查看设备与成员编号的对应关系 | 1～135个字符 | flash:/test/a.cfg表示Master上Flash根目录下test文件夹下的a.cfg文件 如果要读写Slave（编号为2）上Flash根目录下的a.cfg文件时，命令行文件名参数需要输入slot2#flash:/a.cfg


1.2 文件操作

文件操作包括显示指定目录或文件信息、显示文件的内容、重命名文件、拷贝文件、移动文件、删除文件、恢复删除的文件、彻底删除文件。

创建文件可以通过拷贝、下载操作或 save 命令来辅助完成。

1.2.1 显示文件信息

表1-2 显示文件信息

操作 | 命令 | 说明
显示目录或文件信息 | dir [ /all ] [ file-url | /all-filesystems ] | 必选 该命令在用户视图下执行

1.2.2 显示文件内容

表1-3 显示文件内容

操作 | 命令 | 说明
显示文件的内容 | more file-url | 必选 目前只支持显示文本文件的内容 该命令在用户视图下执行

1.2.3 重命名文件

表1-4 重命名文件

操作 | 命令 | 说明
重命名文件 | rename fileurl-source fileurl-dest | 必选 该命令在用户视图下执行

1.2.4 拷贝文件

表1-5 拷贝文件

操作 | 命令 | 说明
拷贝文件 | copy fileurl-source fileurl-dest | 必选 该命令在用户视图下执行

1.2.5 移动文件

表1-6 移动文件

操作 | 命令 | 说明
移动文件 | move fileurl-source fileurl-dest | 必选 该命令在用户视图下执行

1.2.6 删除文件

表1-7 删除文件

操作 | 命令 | 说明
删除文件 | delete [ /unreserved ] file-url | 必选 该命令在用户视图下执行

l 使用 delete file-url命令删除文件，被删除的文件被保存在回收站中，仍会占用存储空间。如果用户经常使用该命令删除文件，则可能导致设备的存储空间不足，请用户查看回收站中是否有废弃文件。如果要彻底删除回收站中的某个废弃文件，必须在该文件的原目录下执行 reset recycle-bin 命令，才可以回收存储空间。

l 使用 delete /unreserved file-url命令删除文件，被删除的文件被彻底删除，不能再恢复。效果等同于执行 delete file-url命令后，再在同一目录下执行了 reset recycle-bin 命令。

1.2.7 恢复删除文件

表1-8 恢复删除文件

操作 | 命令 | 说明
恢复删除文件 | undelete file-url | 必选 该命令在用户视图下执行

1.2.8 彻底删除回收站中的文件

表1-9 彻底删除回收站中的文件

操作 | 命令 | 说明
进入要删除文件的原路径 | cd { directory | .. | / } | 可选 如果要删除的文件的原路径不是当前路径，则该步骤必选 该命令在用户视图下执行
彻底删除当前目录下、处于回收站中的文件 | reset recycle-bin [ /force ] | 必选 该命令在用户视图下执行


1.3 目录操作

目录操作包括创建/删除目录、显示当前的工作路径以及显示指定目录或文件信息等。

1.3.1 显示目录信息

表1-10 显示目录信息

操作 | 命令 | 说明
显示目录或文件信息 | dir [ /all ] [ file-url | /all-filesystems ] | 必选 该命令在用户视图下执行

1.3.2 显示当前的工作路径

表1-11 显示当前的工作路径

操作 | 命令 | 说明
显示当前的工作路径 | pwd | 必选 该命令在用户视图下执行

1.3.3 改变当前的工作路径

表1-12 改变当前的工作路径

操作 | 命令 | 说明
改变当前的工作路径 | cd { directory | .. | / } | 必选 该命令在用户视图下执行

1.3.4 创建目录

表1-13 创建目录

操作 | 命令 | 说明
创建目录 | mkdir directory | 必选 该命令在用户视图下执行

1.3.5 删除目录

表1-14 删除目录

操作 | 命令 | 说明
删除目录 | rmdir directory | 必选 该命令在用户视图下执行

l 被删除的目录必须为空目录（即删除目录前，必须先删除该目录下的所有文件及子目录。文件的删除请参见 delete 命令，子目录的删除请参见 rmdir 命令）。

l 成功执行 rmdir 后，回收站中原来属于该文件夹的文件会自动被彻底删除。


1.4 存储设备操作

1.4.1 管理存储设备的存储空间

由于异常操作等原因，存储设备的某些空间可能不可用，用户可以通过 fixdisk 命令来恢复存储设备的空间。如果使用 format 命令则会格式化指定的存储设备，该存储设备上的所有数据将被删除。

表1-15 管理存储设备的存储空间

操作 | 命令 | 说明
恢复存储设备的空间 | fixdisk device | 可选 该命令在用户视图下执行
格式化存储设备 | format device | 可选 该命令在用户视图下执行

格式化操作将导致存储设备上的所有文件丢失，并且不可恢复；尤其需要注意的是，如果存储设备上有启动配置文件，格式化该存储设备，将丢失启动配置文件。

1.4.2 Nand Flash显示和维护

Nand Flash存储器因为具有大容量、低价格、写速率快的优势，已逐渐成为新产品的首选存储器。Nand Flash的物理空间被逻辑划分为多个块（Block），每个块又由多个页（page）组成。Nand Flash的基本擦除单位是块，而基本读写单位是页，文件系统在分配存储空间的时候也是以页为单位的。

1. 坏块的显示和修复

Nand Flash出厂时可能出现坏块，不同厂家出现的坏块比率不一样，并且在使用过程中，如果频繁使用某个区域，则容易造成该区域内块的损坏。坏块是不能用于存储数据的，文件系统在为文件分配存储空间的时候，需要跳过坏块。因此，设备提供了命令行帮助用户随时了解坏块分布信息以及修复坏块。

表1-16 坏块的显示和修复

配置 | 命令 | 说明
显示Nand Flash存储器的坏块分布信息 | display nandflash badblock-location [ | { begin | exclude | include } regular-expression ] | 必选 该命令在任意视图下执行
修复坏块 | fixdisk device | 必选 该命令在用户视图下执行

2. 文件检错

文件写操作成功后，结合使用下面两条命令可以检查保存到存储介质中的文件内容是否正确。

表1-17 文件检错

操作 | 命令
显示指定文件在存储介质上的空间分布信息 | display nandflash file-location filename [ | { begin | exclude | include } regular-expression ]
显示指定物理页面的数据 | display nandflash page-data page-value [ | { begin | exclude | include } regular-expression ]


1.5 批处理操作

批处理文件是可执行命令的集合，批处理功能用于自动执行批处理文件里的命令，执行过程相当于手工逐条执行这些命令。

执行批处理操作之前，首先需要在PC上编辑批处理文件，然后将批处理文件下载到设备上，如果文件名的后缀不是.bat，必须使用 rename 命令修改为.bat。

表1-18 执行批处理操作

操作 | 命令 | 说明
进入系统视图 | system-view | -
执行批处理文件 | execute filename | 必选

批处理命令不保证每一条命令的执行，比如某命令设置错误或者该命令执行的条件不成熟，本命令将执行失败，系统会跳过该命令转到下一条。


1.6 设置文件系统的提示方式

用户可以通过命令修改当前文件系统的提示方式。文件系统支持两种提示方式：

l alert：当用户对文件进行有危险性的操作时，系统会要求用户进行交互确认。

l quiet：当用户对文件进行任何操作，系统均不要求用户进行确认。该方式可能会导致一些因误操作而发生的、不可恢复的、对系统造成破坏的情况产生。

表1-19 设置文件系统的提示方式

操作 | 命令 | 说明
进入系统视图 | system-view | -
设置文件系统的提示方式 | file prompt { alert | quiet } | 可选 缺省情况下，文件系统的提示方式为 alert


1.7 文件系统应用举例

# 查看当前目录下的文件及子目录。

<Sysname> dir

Directory of flash:/

0 -rw- 13308645 Mar 22 2011 11:34:07 main.bin

1 -rw- 7380 Mar 25 2011 10:47:36 patch-package.app

2 -rw- 228 Mar 25 2011 10:50:39 patchstate

3 -rw- 3921 Apr 01 2011 17:56:30 startup.cfg

4 -rw- 151 Apr 01 2011 17:56:24 system.xml

126592 KB total (2521 KB free)

# 进入test目录，并创建新文件夹mytest。

<Sysname> cd test

<Sysname> mkdir mytest

%Created dir flash:/test/mytest.

# 显示当前的工作路径。

<Sysname> pwd

flash:/test

# 查看test目录下的文件及子目录。

<Sysname> dir

Directory of flash:/test/

0 drw- - Apr 01 2011 18:28:14 mytest

126592 KB total (2519 KB free)

# 返回上一级目录。

<Sysname> cd ..

# 显示当前的工作路径。

<Sysname> pwd

flash:


1 配置文件管理

配置文件管理是设备提供的用于管理配置文件的一项功能。它具有较好的命令行接口，方便用户对配置文件进行管理。

相关链接

  • 1.1 配置文件简介
  • 1.2 保存当前配置
  • 1.3 配置回滚
  • 1.4 设置下次启动配置文件
  • 1.5 备份下次启动配置文件
  • 1.6 删除设备中的下次启动配置文件
  • 1.7 恢复下次启动配置文件
  • 1.8 配置文件显示和维护
父主题： 05-配置文件管理


1.1 配置文件简介

配置文件是命令行的集合。用户将当前配置（一条条命令行）保存到配置文件中，以便设备重启后，这些配置能够继续生效。另外，通过配置文件，用户可以非常方便地查阅配置信息也可以将配置文件上传/下载到别的设备，来实现设备的批量配置。

1.1.1 配置的类型

设备上的配置分为以下三种：

1. 出厂配置

设备在出厂时，通常会带有一些基本的配置，称为出厂配置，用来保证设备在没有配置文件或者配置文件丢失、损坏的情况下，能够正常启动、运行。

可以使用 display default-configuration 命令查看设备的出厂配置。

出厂配置可能与命令行的缺省情况不同，不同型号的设备可以根据需要定制各自的出厂配置。

2. 起始配置

当设备启动时，根据读取的配置文件，进行初始化工作，该配置称为起始配置或者启动配置（startup-configuration）；如果设备中没有配置文件，则系统使用出厂配置作为起始配置。

可以通过以下方式查看起始配置：

l 使用 display startup 查看当前使用的启动配置文件，再使用 more 命令查看该配置文件的内容；

l 设备启动后并且还没有进行配置时，使用 display current-configuration 命令查看。

3. 当前配置

系统当前正在使用的配置称为当前配置（current-configuration）。它可能包括起始配置（如果起始配置在设备运行过程中没有被用户修改的话），还包括运行过程中用户追加的配置。当前配置存放在设备的临时存储器中，如果不保存，设备重启之后可能会丢失。

可以使用 display current-configuration 命令查看设备的当前配置。

1.1.2 配置文件的内容与格式

配置文件为一个文本文件，其保存规则如下：

l 配置文件的内容为命令行，且只保存非缺省配置；

l 配置文件以命令视图为基本框架，同一命令视图的命令组织在一起，形成一节，节与节之间通常用空行或注释行隔开（以#开始的为注释行，空行或注释行可以是一行或多行）；

l 文件中各节的安排顺序通常为：系统配置、接口配置、各种协议配置和用户界面配置；

l 以return结束。

1.1.3 多配置文件共存

存储介质上可以同时存放多个配置文件。用户可以将设备在多个使用环境下的配置保存成多个配置文件，当设备在网络中移动时，通过指定下次启动配置文件并重启设备，可以使设备以新的配置迅速适应切换后的网络环境，节省重新配置的工作量。而且多配置文件可以方便用户的备份、修改、恢复等操作，提高设备的可靠性。

设备将使用多个配置文件中的某个文件来启动设备，但用户可以根据需要配置两个下次启动配置文件，一个为主用（main）下次启动配置文件，一个为备用（backup）下次启动配置文件。设备重启后将使用主用下次启动配置文件来启动设备，当主用下次启动配置文件损坏或者丢失的时候，系统会自动使用备用下次启动配置文件来启动或配置设备。相对于只支持一个下次启动配置文件的设备（即不支持主备用下次启动配置文件的设备），这种双重保护的方式增强了设备的安全性和可靠性。

同一时刻，设备上最多只能有一个主用下次启动配置文件和一个备用下次启动配置文件，这两个文件也可以不指定（不指定时为NULL），也可以将两个文件指定为同一个配置文件。

主用/备用下次启动配置文件的设置方式有两种：

l 保存当前配置时设置，具体配置请参见 1.2 保存当前配置 。

l 设置下次启动配置文件时设置，具体配置请参见 1.4 设置下次启动配置文件 。

1.1.4 配置文件的选择顺序

系统启动时，配置文件的选择遵循以下规则：

(1) 如果主用下次启动配置文件存在，则以主用下次启动配置文件初始化配置。

(2) 如果主用下次启动配置文件不存在，备用下次启动配置文件存在，则以备用下次启动配置文件初始化配置；如果备用下次启动配置文件也不存在，则以出厂配置启动。


1.2 保存当前配置

1.2.1 保存当前配置任务简介

用户通过命令行可以修改设备的当前配置，而这些配置是暂时的，如果要使当前配置在系统下次重启时仍然有效，在重启设备前，需要将当前配置保存到配置文件中。

表1-1 保存当前配置任务简介

配置任务 | 说明 | 详细配置
使能配置文件同步保存功能 | 可选 | 1.2.2
保存当前配置 | 必选 | 1.2.3

1.2.2 使能配置文件同步保存功能

l 使能配置文件同步保存功能后，当用户执行“save [ safely ] [ backup | main ] [ force ]”或者“save filename all+回车”操作保存当前配置时，Master和Slave会同时自动把当前配置保存到指定的配置文件中，并将该文件配置为设备的下次启动文件，以保证Master和Slave配置文件内容的一致；

l 如果没有使能配置文件同步保存功能，则当用户执行“save [ safely ] [ backup | main ] [ force ]”或者“save filename all+回车”操作保存当前配置时，只有Master自动把当前配置保存到指定的配置文件中，并将该文件配置为Master的下次启动文件，Slave不会执行保存操作，也不会重新设置Slave的下次启动文件。

表1-2 使能配置文件同步保存功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
使能配置文件同步保存功能 | slave auto-update config | 可选 缺省情况下，配置文件同步保存功能处于使能状态

1.2.3 保存当前配置

配置的保存方式有两种：

l 快速保存方式，执行不带 safely 参数的 save 命令。这种方式保存速度快，但是保存过程中如果出现设备重启、断电等问题，原有配置文件可能会丢失。

l 安全方式，执行带 safely 参数的 save 命令。这种方式保存速度慢，即使保存过程中出现设备重启、断电等问题，原有配置文件仍然会保存到设备中，不会丢失。

在电源稳定程度较好的环境中，推荐用户使用快速保存方式保存配置文件；在电源环境恶劣或者远程维护等情况，推荐用户使用安全模式保存配置文件。

表1-3 保存当前配置

操作 | 命令 | 说明
将当前配置保存到指定文件，但不会将该文件设置为下次启动配置文件 | save file-url [ all | slot slot-number ] | 二者必选其一 该命令可在任意视图下执行
将当前配置保存到所有成员设备存储介质的根目录下，并将该文件设置为下次启动配置文件 | save [ safely ] [ backup | main ] [ force ]

l 配置文件名后缀必须为“.cfg”。

l 执行“save [ safely ] [ backup | main ] [ force ]”或者“save filename all+回车”操作，是对所有成员设备同时生效还是只对Master生效，与配置文件的同步保存功能是否使能有关，详细介绍请参见“ 1.2.2 使能配置文件同步保存功能 ”。

l save [ safely ]和 save [ safely ] main命令执行效果相同：都会在保存当前配置的同时，将指定文件设置为主用下次启动配置文件。

l 执行 save [ backup | main ]命令时，如果出现设备重启、断电等问题，可能会造成下次启动配置文件丢失，这时，设备将以出厂配置启动。设备启动后，用户需要重新设置下次启动配置文件（请参见“ 1.4 设置下次启动配置文件 ”）。


1.3 配置回滚

1.3.1 配置回滚简介

配置回滚是将当前的配置回退到指定配置文件中的配置状态。该配置文件必须是有效的.cfg文件，它可以使用手工/自动备份功能或者 save 命令生成，也可以是别的设备的可兼容配置文件，推荐使用手工/自动备份功能生成。配置回滚主要应用于：

l 当前配置错误，但错误配置太多不方便定位或逐条回退，需要将当前配置回滚到某个正确的配置状态。

l 设备的应用环境变化，需要使用某个配置文件中的配置信息运行，在不重启设备的情况下将当前配置回滚到指定配置文件的状态。

配置回滚的基本步骤如下：

(1) 用户必须先设置备份配置文件的路径和文件名前缀；

(2) 系统将当前配置以指定的文件名（前缀+序号）备份到指定路径。这个备份有两种方式：一种是系统按照一定的时间周期自动备份，另一种是用户用命令行在必要时手工触发备份；

(3) 将当前配置回滚到指定配置文件的状态。配置回滚时，系统会比较、处理当前配置和配置文件中配置的差异：

l 对于当前配置与回滚配置文件中的相同命令，回滚操作将不做处理；

l 对于在当前配置但不在回滚配置文件的命令，回滚操作将取消当前配置中的配置命令，即执行相应的 undo 命令；

l 对于存在于回滚配置文件但不存在于当前配置的命令，回滚操作将执行这些命令；

l 对于当前配置和回滚配置文件中不同的命令，配置回滚将先取消这些配置，再执行回滚配置文件中的相应命令。

当前配置只会备份到Master，回滚操作也只在Master上进行。但配置回滚的相应配置会同步给Slave，以保证当Master变更后，配置回滚功能能继续运行。

1.3.2 配置回滚配置任务简介

表1-4 配置回滚配置任务简介

配置任务 | 说明 | 详细配置
设置备份参数 | 必选 | 1.3.3
自动备份当前配置 | 二者至少选其一 | 1.3.4
手工备份当前配置 |  | 1.3.5
配置回滚 | 必选 | 1.3.6

1.3.3 设置备份参数

自动或手动备份当前配置前必须设置备份配置文件的保存路径和文件名前缀。设置这些参数后，备份当前配置时，系统会将当前的配置以指定的文件名（格式为前缀_序号.cfg）保存到指定的路径。备份配置文件名形如20080620archive_1.cfg、20080620archive_2.cfg，备份序号由设备自动生成，从1开始编号，依次加1，累加至1000后又重新从1开始。修改备份配置的保存路径、文件名前缀，或设备重启后，备份序号也会从1开始重新自动编号，备份配置文件将重新计数，原路径下的备份配置文件将被视为普通配置文件，不再作为备份配置文件处理，查看备份配置文件时将不会显示此类文件的信息。

系统内能够保存的备份配置文件的数目有一定限制。当备份配置文件数目到达上限，又需要保存新的备份配置文件时，系统会删除保存时间最早的备份文件，以保存新的备份配置文件。

表1-5 设置备份参数

操作 | 命令 | 说明
进入系统视图 | system-view | -
设置备份配置文件的保存路径和文件名前缀 | archive configuration location directory filename-prefix filename-prefix | 必选 缺省情况下，系统没有配置备份配置文件的保存路径和文件名，也不会定时备份配置
系统允许保存的备份配置文件的最大数 | archive configuration max file-number | 可选 缺省情况下，系统最多允许保存5个备份配置文件

l 配置备份和配置回滚操作只在Master上执行。为了Master变更后，配置回滚功能能在新Master上继续生效，执行 archive configuration location 命令会在Master和Slave上同时设置备份配置文件的保存路径和文件名前缀，因此，该命令指定的路径必须在Master和Slave上均存在，且路径参数中不能包含成员编号。

l 执行 undo archive configuration location 命令后，用户将不能进行手工备份当前配置，系统也不再自动备份当前配置，archive configuration interval 和 archive configuration max 的配置也会恢复到缺省情况，已保存的备份配置文件记录也会被清除。

l file-number 的具体数值应根据系统的空余存储空间大小来决定。对于存储空间较小的设备，建议将该参数设为较小值。

1.3.4 自动备份当前配置

用户可以使用本特性按照一定的时间间隔自动备份当前配置，使用 display archive configuration 命令可以查看到备份配置文件的名称和备份时间，以便用户可以将当前配置回退到某一历史时刻。

使用本特性时应根据设备存储介质的性能和修改配置的频繁程度来设置自动备份的时间间隔：

l 对于不会频繁修改配置的设备，建议按需手动备份当前配置；

l 建议不进行自动备份配置，或设置备份时间间隔大于1440分钟（24小时）；

表1-6 自动备份当前配置

操作 | 命令 | 说明
进入系统视图 | system-view | -
使能自动备份当前配置功能，并设置自动备份的时间间隔 | archive configuration interval minutes | 可选 缺省情况下，系统不会自动备份当前配置

设置自动备份配置时间间隔前必须指定备份配置文件的保存路径和文件名前缀。

1.3.5 手工备份当前配置

因为自动备份当前配置需要占用一定的系统资源，如果备份频率较高，对系统性能的影响也较大。因此，在设备维护过程中配置比较稳定（即不会频繁修改配置）的情况下，建议关闭自动备份功能，使用手工备份。

另外，自动备份是按照一定的时间周期进行的，手工备份能立即备份当前配置。当需要对设备进行步骤复杂的配置时，可以在修改配置前手工备份当前配置。以便配置过程中出现失败时，可以使用已备份的配置直接将当前配置回滚至配置改变前的状态。

表1-7 手工备份当前配置

操作 | 命令 | 说明
手工备份当前配置 | archive configuration | 必选 该命令在用户视图下执行

手工保存备份配置前必须指定备份配置的保存路径和文件名前缀，否则备份失败。

1.3.6 配置回滚

表1-8 配置回滚

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置回滚 | configuration replace file filename | 必选

命令能否回滚成功还由命令的具体处理决定，存在以下情况时，回滚可能失败（若某条命令回滚失败，则会跳过该命令，直接处理下一条命令）：

l 配置命令不支持完整 undo 命令，即直接在配置命令前添加 undo 关键字构成的命令与配置命令对应的原 undo 命令形式不一致，设备不识别。比如命令 A [ B ] C，对应的 undo 命令为 undo A C，但是配置回滚的时候，系统会去自动执行undo A B C，此时系统会认为不支持undo A B C而造成配置 A B C 回滚失败。

l 配置不能取消（如硬件相关的命令）。

l 若不同视图下的各配置命令存在依赖关系，命令可能执行失败。

l 若使用的配置文件不是由 save 命令或 archive configuration 命令生成的完整文件，或是不同类型设备的配置文件，配置回滚可能不能完全恢复至配置文件中的配置状态。因此，需要用户确保回滚配置文件中配置的正确性和与当前设备的兼容性。

l configuration replace file filename命令中指定的配置文件只能是明文配置文件，不能是被加密的配置文件。否则，会导致配置回滚出错。


1.4 设置下次启动配置文件

下次启动配置文件是指设备下次启动时使用的配置文件。设置下次启动配置文件有两种方式：

l 使用 save 命令。将当前配置保存到指定配置文件时，使用交互方式，系统会自动把该文件设置为设备的主用下次启动配置文件。

l 使用专用命令，请参见下表。

表1-9 设置下次启动配置文件

操作 | 命令 | 说明
配置所有成员设备的下次启动配置文件 | startup saved-configuration cfgfile [ backup | main ] | 必选 该命令在用户视图下执行

配置文件必须以“.cfg”作为扩展名，启动配置文件必须存放在存储设备的根目录下。


1.5 备份下次启动配置文件

备份下次启动配置文件特性用于将设备下次启动配置文件备份至TFTP服务器上。

备份操作的对象是主用下次启动配置文件。

表1-10 备份下次启动配置文件

操作 | 命令 | 说明
将设备的下次启动配置文件备份到指定的TFTP服务器 | backup startup-configuration to dest-addr [ dest-filename ] | 必选 该命令在用户视图下执行

在执行配置文件的备份操作前，请：

l 保证设备与服务器之间的路由可达，服务器端开启了TFTP服务，执行备份操作的客户端设备已获得了相应的读写权限。

l 在用户视图下使用 display startup 命令查看一下设备是否已经设置了下次启动配置文件。若下次启动配置文件设置为NULL，或者所设置的配置文件不存在，备份操作将会失败。


1.6 删除设备中的下次启动配置文件

用户通过命令可以删除设备中的下次启动配置文件。用户可以只删除主用下次启动配置文件，或者只删除备用下次启动配置文件，但如果当前设备的主备用下次启动配置文件相同，仅执行一次删除操作，系统只会将相应的下次启动配置文件设置为NULL，不会删除该文件。

出现以下情况时，用户可能需要删除设备中的下次启动配置文件：

l 在设备软件升级之后，系统软件和配置文件不匹配。

l 设备中的配置文件被破坏（常见原因是加载了错误的配置文件）。

下次启动配置文件被删除后，设备下次上电时，系统将采用出厂配置进行初始化。

表1-11 删除设备中的下次启动配置文件

操作 | 命令 | 说明
删除设备中的下次启动配置文件 | reset saved-configuration [ backup | main ] | 必选 该命令在用户视图下执行

本特性会将配置文件从所有成员设备上彻底删除，所以请慎用该命令。


1.7 恢复下次启动配置文件

恢复下次启动配置文件特性用于将TFTP服务器上保存的指定配置文件下载到所有成员设备存储介质的根目录下，并设置为所有成员设备的下次启动配置文件。

表1-12 恢复下次启动配置文件

操作 | 命令 | 说明
恢复主用下次启动配置文件 | restore startup-configuration from src-addr src-filename | 必选 该命令在用户视图下执行

l 在执行配置文件的恢复操作前，请保证设备与服务器之间的路由可达，服务器端开启了TFTP服务，执行恢复操作的客户端设备已获得了相应的读写权限。

l 该命令执行成功后，用户可以在用户视图下使用 display startup 命令查看设备下次启动配置文件名是否与 filename 参数保持一致。


1.8 配置文件显示和维护

在完成上述配置后，在任意视图下执行 display 命令可以显示配置文件的使用情况。用户可以通过查看显示信息验证配置的效果。

表1-13 设备配置显示和维护

操作 | 命令
显示配置回滚功能的相关信息 | display archive configuration [ | { begin | exclude | include } regular-expression ]
显示当前配置 | display current-configuration [ [ configuration [ configuration ] | interface [ interface-type ] [ interface-number ] | exclude modules ] [ by-linenum ] [ | { begin | exclude | include } regular-expression ] ]
显示出厂配置 | display default-configuration [ | { begin | exclude | include } regular-expression ]
查看设备存储介质中保存的下次启动配置文件的内容 | display saved-configuration [ by-linenum ] [ | { begin | exclude | include } regular-expression ]
显示用于本次及下次启动的配置文件名 | display startup [ | { begin | exclude | include } regular-expression ]
显示当前视图下生效的配置 | display this [ by-linenum ] [ | { begin | exclude | include } regular-expression ]


1 软件升级配置

相关链接

  • 1.1 设备软件简介
  • 1.2 升级方法简介
  • 1.3 通过整机重启方式升级软件
  • 1.4 通过热补丁方式升级启动文件
  • 1.5 软件升级显示和维护
  • 1.6 软件升级典型配置举例
父主题： 06-软件升级配置


1.1 设备软件简介

设备软件主要包括Bootrom程序和系统启动文件。设备上电后，先运行Bootrom程序，初始化硬件并显示设备的硬件参数，然后运行系统启动文件；启动文件一方面提供对硬件的驱动和适配功能，另一方面实现了业务特性。Bootrom程序与系统启动文件是设备启动、运行的必备软件，为整个设备提供支撑、管理、业务等功能，它们的关系如 图1-1 所示。

图1-1 Bootrom程序与系统启动文件关系示意图


1.2 升级方法简介

Bootrom程序和系统启动文件都可以通过Bootrom菜单和命令行两种方式来升级，本文只介绍命令行升级方式，通过Bootrom菜单升级的具体操作请参见设备的版本说明书。

即便都是通过命令行，但因为实现原理不同，命令行下的软件升级方式又可以细分为以下几类：

升级方式及介绍 | 可升级的设备软件 | 各种升级方式对比说明
通过整机重启方式升级软件 | Bootrom、启动文件 | l 该方式通过重启设备来实现设备软件的升级，设备重启完成后，直接使用新版本软件运行 l 使用该方式升级设备软件时会导致当前业务中断
通过热补丁方式升级启动文件 | 启动文件 | l 热补丁是一种快速、低成本修复启动文件缺陷的方式 l 与通过整机重启升级启动文件相比，热补丁的优势是在升级过程中不会中断设备当前正在运行的业务 l 补丁文件与启动文件的版本一一对应，使用热补丁升级启动文件时，只能修复与补丁文件对应启动文件的缺陷，不涉及功能的添加及删除
通过ISSU（In-Service Software Upgrade，不中断业务升级）方式升级启动文件 | 启动文件 | l 通过ISSU方式升级启动文件是一种简便、快速升级启动文件的方式 l 通过主备倒换机制完成启动文件的升级，ISSU方式能够保证设备在升级过程中业务不中断 l 关于ISSU的详细描述，请参见“基本配置指导”中的“ISSU配置”


1.3 通过整机重启方式升级软件

1.3.1 通过整机重启方式升级Bootrom

请按以下步骤升级Bootrom：

(1) 使用FTP或者TFTP，将Bootrom程序拷贝到设备存储介质的根目录下。

(2) 使用命令行指定下次启动时使用的Bootrom程序。

(3) 重启设备，使新的Bootrom程序生效。

IRF系统中，由于不同成员设备的Bootrom可能各不相同，用户容易混淆，从而导致Bootrom升级错误。通过启动Bootrom升级时的合法性检查功能，设备就能够对Bootrom升级文件的正确性、版本配套性等进行严格的检查，保证升级成功。

表1-1 升级Bootrom

操作 | 命令 | 说明
进入系统视图 | system-view | -
启动升级时的合法性检查功能 | bootrom-update security-check enable | 可选 缺省情况下，Bootrom升级时的合法性检查功能是开启的
返回用户视图 | quit | -
升级指定成员设备的Bootrom程序 | bootrom update file file-url slot slot-number-list | 必选 该命令在用户视图下执行

必须先将Bootrom文件保存到相应成员设备存储介质的根目录下，bootrom 命令才能执行成功。

1.3.2 通过整机重启方式升级启动文件（方法一）

采用本特性升级启动文件时，请按以下步骤进行：

(1) 使用FTP、TFTP或者其它方式将启动文件下载保存到Master设备存储介质的根目录下。

(2) 将新的启动文件拷贝到Slave设备存储介质的根目录下。

(3) 使用命令行分别指定Master设备和Slave设备下次启动时使用的启动文件（以下简称为下次启动文件）。

(4) 重启设备，使新的启动文件生效。

表1-2 指定下次启动文件

操作 | 命令 | 说明
指定成员设备的下次启动文件 | boot-loader file file-url slot { all | slot-number } { main | backup } | 必选 该命令在用户视图下执行

l 下次启动文件必须存放在设备存储介质的根目录下。可使用文件的拷贝或移动操作来调整文件的路径为根目录。

l 必须先将下次启动文件保存到相应成员设备存储介质的根目录下，boot-loader 命令才能执行成功。

l Master和Slave的下次启动文件名称可以不同，但是版本必须一致，否则，Slave会使用Master的启动文件重新启动加入IRF。

1.3.3 通过整机重启方式升级启动文件（方法二）

使用本特性升级设备等效于 1.3.2 通过整机重启方式升级启动文件（方法一） ，但缩减了升级步骤。它通过一条命令可以完成将指定文件拷贝到指定成员设备，并设置为该成员设备下次启动配置文件的功能。使用本特性升级IRF时，因为IRF中通常存在多个成员设备，能简化升级步骤。

采用本特性升级启动文件时，请按以下步骤进行：

(1) 使用FTP、TFTP或者其它方式将启动文件下载保存到Master存储介质的根目录下。

(2) 同步升级启动文件。

(3) 重启指定成员设备或者整个IRF系统，使新的启动文件生效。

表1-3 同步升级启动文件

操作 | 命令 | 说明
同步升级指定成员设备或者所有成员设备的启动文件 | boot-loader update file file-url slot { slot-number | all } { main | backup } | 必选 该命令在用户视图下执行


1.4 通过热补丁方式升级启动文件

热补丁是一种快速、低成本修复产品软件版本缺陷的方式。和升级软件版本相比，热补丁的主要优势是不会使设备当前正在运行的业务中断，即在不重启设备的情况下，可以对设备当前软件版本的缺陷进行修复。

1.4.1 热补丁基本概念

1. 补丁和补丁文件

补丁（又被称为补丁单元）是用来修复某个缺陷的程序包，通常以补丁文件的形式发布，一个补丁文件可能包含一个或多个补丁，不同的补丁具有不同的功能。当补丁文件被用户从存储介质加载到内存补丁区中时，补丁文件中的补丁将被分配一个在此内存补丁区中唯一的单元序号，用于标志、管理、操作各补丁，补丁的单元序号从1开始顺序编号，如某补丁文件中有3个补丁单元，那合法的补丁单元号为1、2和3。

2. 增量补丁

所谓增量补丁，是指各补丁单元和其前面的补丁单元有依赖性。比如，补丁文件中有3个补丁单元，则3号补丁必须在1号和2号补丁生效之后才能运行，而不能直接单独运行3号补丁。

当前发布补丁文件中的补丁均为增量补丁。

3. 正式补丁和临时补丁

l 正式补丁（Common patches）是通过版本发布流程发布的补丁。

l 临时补丁（Temporary patches）是未通过版本发布流程发布，用于临时解决紧急问题和需求的补丁。

正式补丁总会包含前面临时补丁的功能，从而替代前面的临时补丁。补丁的类型只对补丁加载（Load）过程产生影响——系统在加载正式补丁之前会先将系统中所有临时补丁删除。

4. 补丁包文件

补丁包文件是将设备需要的同期发布的多个补丁文件打包生成的文件。补丁包文件升级方式是补丁文件升级方式的改良。

使用补丁文件升级时，产品对补丁文件的名称进行了严格定义，指定类型的硬件会有对应的补丁文件，该文件的名称是固定的，用户不能随便定义。当某个部件需要软件升级时，用户必须先下载该部件对应的补丁文件，并将补丁文件重命名为指定的名称，如果命名错误，会造成该部件升级失败。如果要同时升级多个部件，则需要多次重复上述操作。

使用补丁包文件升级时，用户只需下载该补丁包文件，执行一次命令，就可以完成设备所有部件的软件升级，从而简化了补丁操作及补丁版本管理。

1.4.2 补丁状态

每个补丁都有自身的状态，只有在用户命令行的干预下才能发生切换。补丁状态切换与命令操作关系如 图1-2 所示，其中：

l IDLE、DEACTIVE、ACTIVE和RUNNING表示补丁的不同状态；

l 加载、临时运行、确认运行、停止运行、删除、安装、卸载表示补丁操作，分别对应命令 patch load、patch active、patch run、patch deactive、patch delete、patch install 和 undo patch install；

l 箭头方向表示状态的转变方向。

比如对DEACTIVE状态的补丁执行 patch active 操作，补丁的状态就会变为ACTIVE。

图1-2 补丁状态切换与命令操作关系图

补丁文件的状态信息内容保存在Flash中的patchstate文件里，建议用户不要对该文件进行操作。

1. 初始状态（IDLE）

表示尚未加载补丁，无法进行安装、运行等补丁操作，如 图1-3 所示（假设系统补丁区中最多可以加载8个补丁）。

图1-3 补丁未加载

当前内存补丁区中支持的最大补丁数为200个。

2. 未激活状态（DEACTIVE）

表示补丁已经被加载到内存补丁区，但尚未运行。假设用户将加载的补丁文件包含7个补丁，则这7个补丁将在经过版本校验及CRC校验之后被加载到内存补丁区，加载成功的补丁处于DEACTIVE状态，此时系统中补丁状态如 图1-4 所示。

图1-4 补丁文件被加载

3. 激活状态（ACTIVE）

表示补丁已经被临时运行，即该补丁在设备重启之后不再生效。对于 图1-4 中7个处于DEACTIVE状态的补丁，用户如果激活前5个补丁，则前5个补丁的状态将由DEACTIVE状态变成ACTIVE状态，此时系统中补丁状态如 图1-5 所示。

系统重启后，所有处于ACTIVE状态的补丁将变成DEACTIVE状态。

图1-5 补丁被激活

4. 确认运行状态（RUNNING）

表示补丁已经被永久运行，即该补丁在设备重启之后会继续生效。对于 图1-5 中5个处于ACTIVE状态的补丁，用户确认运行前3个补丁后，前3个补丁的状态将由ACTIVE状态变成RUNNING状态，此时系统中补丁状态如 图1-6 所示。

图1-6 补丁被确认运行

系统重启后，所有处于RUNNING状态的补丁仍保持为RUNNING状态。

1.4.3 热补丁配置任务简介

表1-4 热补丁配置任务简介

配置任务 |  | 说明 | 详细配置
安装补丁 | 一步式安装补丁 | 二者任选其一 一步式配置和分步配置效果等同，分步配置时用户可以控制安装过程中的各个状态 | 1.4.5
 | 分步安装补丁 |  | 1.4.6
分步卸载补丁 |  | 可选 | 1.4.7

1.4.4 配置准备

补丁文件是根据安装补丁的设备类型按需发布。在进行补丁操作前，需要通过FTP/TFTP等方式将补丁文件保存到设备的存储介质上，保存时请注意：

l 补丁版本必须与设备型号、设备的软件版本相匹配。如果不匹配，则会造成补丁操作失败。

l 补丁文件的名称必须符合要求，否则系统无法找到补丁文件，造成补丁操作失败。设备是根据补丁标志（PATCH-FLAG）生成补丁文件名，再根据文件名将补丁从存储介质（默认为Flash）中读取到补丁区进行加载或安装。设备在出厂时已经定义了PATCH-FLAG。display patch information 命令显示信息中Version字段的前3个字符值就是PATCH-FLAG的后缀，补丁文件名称的格式为“patch_后缀.bin”。备补丁文件缺省名称为patch_mpu.bin。

加载和安装操作的对象是所有成员设备，所以，执行加载和安装操作前，请将补丁文件保存到所有成员设备存储介质的根目录下，所有成员设备上补丁文件必须一致（包括补丁文件的名称和内容）。

1.4.5 一步式安装补丁

用户可以通过执行 patch install 命令来一步式安装补丁。执行该命令同时，需要指定补丁文件的来源，目前设备上可支持指定补丁文件的加载路径和从指定补丁包文件两种方式。

在执行 patch install 命令时，系统会提示“Do you want to continue running patches after reboot? [Y/N]:”：

l 如果输入<Y>或者<y>，则会安装指定路径下的所有补丁，设备重启后这些补丁继续生效，补丁状态从IDLE转换到RUNNING，相当于依次执行了 patch location、patch load、patch active 和 patch run 命令。

l 如果输入<N>或者<n>，则会安装指定路径下的所有补丁，设备重启后这些补丁不再继续生效，补丁状态从IDLE转换到ACTIVE，相当于依次执行了 patch location、patch load 和 patch active 命令。

表1-5 一步式安装补丁

操作 | 命令 | 说明
进入系统视图 | system-view | -
一步式完成补丁的安装 | patch install { patch-location | file patch-package } | 必选 l patch-location：表示补丁文件所在的路径，该参数用于安装没有经过打包的补丁文件。 l file patch-package：表示补丁包文件的名称，该参数用于安装补丁包文件。

l 指定路径下的补丁必须与版本匹配，否则系统不能正确识别补丁文件。

l 如果通过指定补丁文件的加载路径来安装补丁，则执行补丁安装操作后，系统会将补丁文件的加载路径（patch location）修改成“patch install patch-location”中 patch-location 参数所指向的位置；如果通过指定补丁包文件来安装补丁，则执行补丁安装操作后系统不会改变补丁文件的加载路径。

l 如果要一步式卸载设备上所有已安装的补丁，请直接执行命令 undo patch install。执行该命令等效于 1.4.7 分步卸载补丁 。在搭建IRF环境下，推荐使用 undo patch install 命令一步式卸载补丁。

1.4.6 分步安装补丁

用户可以通过执行多条命令分步式安装补丁，该方式便于用户控制补丁安装过程中的各个状态。

1. 配置任务简介

表1-6 分步安装补丁配置任务简介

配置任务 | 说明 | 详细配置
设置补丁文件的加载路径 | 可选 如果是要安装补丁包，则无需设置补丁文件的加载路径 | 2.
加载补丁文件 | 必选 | 3.
激活补丁 | 必选 | 4.
确认运行补丁 | 可选 | 5.

2. 设置补丁文件的加载路径

表1-7 设置补丁文件的加载路径

操作 | 命令 | 说明
进入系统视图 | system-view | -
设置补丁文件的加载路径 | patch location patch-location | 可选 缺省情况下，补丁文件的加载路径为flash:

l 为了保证加载补丁过程的安全可靠，建议用户将补丁文件保存到Flash的根目录下。

l patch-location 参数指定的路径必须在所有成员设备上都存在，如果某成员设备上不存在该路径，则该命令在该成员设备上不生效。

l 通过指定补丁文件的加载路径来安装补丁文件的情况下，用户执行 patch install 命令后系统会自动修改补丁文件的加载路径。比如，先配置了 patch location xxx，再执行 patch install yyy，此时系统会自动将补丁文件的加载路径从xxx改为yyy。

3. 加载补丁文件

只有正确加载补丁文件后才能进行补丁状态的管理。

l 如果要从补丁文件中安装补丁，则系统默认从Flash中读取补丁文件。

l 如果要从补丁包中安装补丁，则系统从指定的补丁包文件中查找补丁文件并进行加载操作。

当使用FTP或TFTP方式将补丁文件上传/下载到设备的Flash中前，请将文件传输的模式设置为二进制模式，以免不能正确解析补丁文件。

表1-8 加载补丁文件

操作 | 命令 | 说明
进入系统视图 | system-view | -
将补丁文件从存储介质（Flash）加载到指定的内存补丁区中 | patch load slot slot-number [ file patch-package ] | 必选

4. 激活补丁

激活补丁后，补丁会立即生效，处于试运行阶段。设备复位或重启后，该补丁不再生效，需要重新激活。

补丁的激活状态主要是提供一个缓冲带，如果补丁本身有问题，可以重启设备，以消除该补丁的作用，从而防止因为补丁错误而导致系统连续运行故障。

表1-9 激活补丁

操作 | 命令 | 说明
进入系统视图 | system-view | -
激活补丁 | patch active [ patch-number ] slot slot-number | 必选

5. 确认运行补丁

确认运行补丁后，补丁的状态将变为RUNNING，处于正式运行阶段。设备复位或重启后，该补丁会继续生效。

表1-10 确认运行补丁

操作 | 命令 | 说明
进入系统视图 | system-view | -
确认运行补丁 | patch run [ patch-number ] [ slot slot-number ] | 必选

该操作只对处于激活状态的补丁有效，对于处于其它状态的补丁，该操作无效。

1.4.7 分步卸载补丁

1. 配置任务简介

表1-11 分步卸载补丁配置任务简介

配置任务 | 说明 | 详细配置
停止运行补丁 | 必选 | 2.
删除补丁 | 必选 | 3.

2. 停止运行补丁

停止运行补丁后，补丁将进入未激活状态（DEACTIVE）。系统按打补丁前的特性运行。

表1-12 停止运行补丁

操作 | 命令 | 说明
进入系统视图 | system-view | -
停止运行补丁 | patch deactive [ patch-number ] slot slot-number | 必选

3. 删除补丁

执行该操作，只是将补丁从内存补丁区中删除，并不会将补丁从存储介质中删除，补丁回到初始状态（IDLE）。补丁删除后，系统按打补丁前的特性运行。

表1-13 删除补丁

操作 | 命令 | 说明
进入系统视图 | system-view | -
将补丁从内存补丁区中删除 | patch delete [ patch-number ] slot slot-number | 必选

搭建IRF环境下，推荐使用 undo patch install 命令一步式卸载补丁。


1.5 软件升级显示和维护

在完成上述配置后，在任意视图下执行 display 命令可以显示软件升级的当前状态，通过查看显示信息验证配置的效果。

表1-14 软件升级显示和维护

操作 | 命令
显示启动文件信息 | display boot-loader [ slot slot-number ] [ | { begin | exclude | include } regular-expression ]
显示补丁包信息 | display patch [ | { begin | exclude | include } regular-expression ]
显示热补丁的信息 | display patch information [ | { begin | exclude | include } regular-expression ]


1.6 软件升级典型配置举例

1.6.1 立即升级配置举例

1. 组网需求

l Master和Slave两台成员设备组成IRF。Master的成员编号为1，Slave的成员编号为2。

l IRF当前的软件版本为soft-version1，通过远程操作，将IRF系统的软件版本升级到soft-version2，配置文件升级到new-config；

l 最新版本的应用程序soft-version2.bin和最新配置文件new-config.cfg都保存在TFTP server上；

l IRF的IP地址为1.1.1.1/24，由Master（成员编号为1）和Slave（成员编号为2）两台成员设备组成。TFTP server的IP地址为2.2.2.2/24。IRF与TFTP server之间路由可达。

2. 组网图

图1-7 配置远程定时自动升级组网图

3. 配置步骤

(1) TFTP server的配置（注意：不同的服务器类型配置可能不同）

通过合法渠道（比如H3C官方网站或者代理商、技术支援人员）获取正确版本的启动文件和配置文件，并将该文件存储到TFTP server的工作路径，以便TFTP client可以访问。

(2) IRF的配置

# 将new-config.cfg下载到Master上（注意：不同的服务器类型显示信息可能不同）。

<IRF> tftp 2.2.2.2 get new-config.cfg

..

File will be transferred in binary mode

Downloading file from remote TFTP server, please wait.....

TFTP: 917 bytes received in 1 second(s)

File downloaded successfully.

# 将new-config.cfg下载到Slave（成员编号为2）上。

<IRF> tftp 2.2.2.2 get new-config.cfg slot2#flash:/new-config.cfg

# 将启动文件soft-version2.bin下载到Master和Slave上。

<IRF> tftp 2.2.2.2 get soft-version2.bin

...

File will be transferred in binary mode

Downloading file from remote TFTP server, please wait............

TFTP: 10058752 bytes received in 141 second(s)

File downloaded successfully.

<IRF> tftp 2.2.2.2 get soft-version2.bin slot2#flash:/soft-version2.bin

# 将所有成员设备的下次启动配置文件指定为new-config.cfg。

<IRF> startup saved-configuration new-config.cfg main

Please wait ...

Setting the master board ...

... Done!

Setting the slave board ...

Slot 2:

Set next configuration file successfully

# 将所有成员设备的下次启动文件指定为soft-version2.bin。

<IRF> boot-loader file soft-version2.bin slot all main

This command will set the boot file of the specified board. Continue? [Y/N]:y

The specified file will be used as the main boot file at the next reboot on slot 1!

The specified file will be used as the main boot file at the next reboot on slot 2!

# 重启所有成员设备完成升级。

<IRF> reboot

设备重启后可以使用 display version 命令验证升级是否成功。

1.6.2 热补丁典型配置举例

1. 组网需求

l IRF（IRF是整个IRF的统称，在本举例中包括Matser和Slave两台成员设备）当前的软件版本存在一些缺陷，需要使用补丁文件进行修复。

l 补丁文件patch_mpu.bin保存在TFTP server上。

l IRF的IP地址为1.1.1.1/24，TFTP server的IP地址为2.2.2.2/24，IRF与TFTP server之间路由可达。

2. 组网图

图1-8 热补丁升级组网图

3. 配置步骤

(1) TFTP server的配置（不同应用程序的配置方式不同，具体步骤略）

l 启动TFTP server功能。

l 将patch_mpu.bin文件放到TFTP server的工作路径。

(2) IRF的配置

配置前需确认设备Flash有足够的剩余空间来存储补丁文件。

# 开始升级前，执行 save 命令保存当前配置（配置步骤略）。

# 将TFTP server上的文件patch_mpu.bin下载到Master存储介质的根目录下。

<IRF> tftp 2.2.2.2 get patch_mpu.bin

# 将TFTP server上的文件patch_mpu.bin下载到Slave存储介质的根目录下。

<IRF> tftp 2.2.2.2 get patch_mpu.bin slot2#flash:/patch_mpu.bin

# 安装补丁。

<IRF> system-view

[IRF] patch install flash:

Patches will be installed. Continue? [Y/N]:y

Do you want to continue running patches after reboot? [Y/N]:y

Installing patches........

# 安装完成后，可以使用 display patch information 命令验证补丁安装是否成功。


1 ISSU配置

相关链接

  • 1.1 ISSU简介
  • 1.2 ISSU配置
父主题： 07-ISSU配置


1.1 ISSU简介

1.1.1 ISSU功能介绍

ISSU（In-Service Software Upgrade，不中断业务升级）是一种高可靠性升级设备启动文件的方式。

如图1-1 所示。在IRF中为了保证用户网络的高可靠性，处于汇聚层的IRF成员设备间进行了跨设备链路聚合，使IRF各成员设备与每台接入层交换机之间的3条物理链路捆绑在一起成为一条逻辑链路。在这种情况下，如果要对IRF中各成员设备的启动文件进行升级、可通过ISSU方式逐一完成对每个成员设备启动文件的升级，从而保证IRF中各成员设备软件的升级过程中、接入层设备SwitchA、SwitchB、SwitchC下用户的数据业务转发不中断、或中断时间很短。

图1-1 IRF组网图

1.1.2 ISSU升级过程

1. ISSU升级过程介绍

ISSU升级由一系列步骤组成，升级过程中有严格的步骤要求，具体请参见图1-2。

图1-2 ISSU升级流程图

l ISSU升级过程中请不要修改IRF系统的当前配置、插拔IRF端口的物理连线、删除/修改启动文件等操作，否则可能引起升级错误。

l 通过ISSU方式对成员设备的启动文件进行升级时，IRF中各成员设备之间必须使用环形拓扑连接。

2. 查看ISSU升级状态

在ISSU升级过程中，管理员可通过 display issu state 命令查看当前IRF进行ISSU升级所处的状态（包括：新启动文件版本和原启动文件版本是否兼容，具体采用的ISSU升级方式等相关信息），以便管理员确定下一步需执行的操作。

ISSU升级过程中可能经历多个状态，具体请参见表1-1。

表1-1 ISSU状态描述表

状态 | 说明
Init（初始状态） | 表示还没有开始ISSU升级或者此次ISSU升级已完成
Load（加载状态） | 表示Slave设备正在进行升级或者已经完成升级（此时如需终止版本加载，可通过自动/手动回滚方式使启动文件回滚恢复到原始版本）
Switchover（倒换状态） | 表示已手工触发Master设备重启
Accept（已确认状态） | 表示已经确认要执行新启动文件的ISSU加载（取消了启动文件的自动回滚功能，此时如需终止版本加载只能通过手动回滚方式使启动文件回滚恢复到原始版本）
Commit | 表示IRF系统中至少还有一台成员设备没有完成启动文件升级，（此时不能通过自动/手动回滚方式使启动文件回滚恢复到原始版本）

1.1.3 ISSU升级过程中启动文件的版本回滚

用户在进行IRF系统的启动文件升级过程中，可能会由于某种原因（如新的启动文件被损坏）需要取消本次ISSU升级。交换机提供了ISSU升级过程中启动文件的版本回滚功能，能够使管理员根据需要将处于ISSU升级过程中的IRF成员设备的启动文件恢复到升级前的版本。

交换机在进行ISSU升级过程中，支持两种版本回滚方式。

1. 自动回滚方式：

用户在重启指定Slave设备时（已执行 issu load 命令），系统会自动创建一个版本回滚定时器。

l 在进行兼容方式的升级时：如果直到版本回滚定时器超时（用户可根据需求，通过命令行指定版本回滚定时器的取值），用户还没有确认ISSU升级（未执行 issu accept）或还没有对其它成员设备进行启动文件升级（未执行 issu commit 命令），则系统会自动将已升级IRF成员设备的启动文件回滚恢复到升级前的版本。

l 在进行不兼容方式的升级时：如果直到版本回滚定时器超时，用户还没有对其余尚未升级的IRF成员设备一次性全部进行重启升级（未执行 issu run switchover 命令），系统会自动将已升级IRF成员设备的启动文件回滚恢复到升级前的版本。

2. 手动回滚方式：

用户需要进行启动文件版本回滚时，可采用手动回滚方式进行IRF成员设备的启动文件回滚（是否能够采用手动回滚方式、取决于ISSU状态，具体请参见表1-1），用户都可以使用 issu rollback 命令手动将已升级IRF成员设备的启动文件回滚恢复到升级前的版本。


1.2 ISSU配置

1.2.1 ISSU配置任务简介

表1-2 ISSU配置任务简介

配置任务 |  | 说明 | 详细配置
将升级所需的启动文件下载并保存到IRF所有成员设备的Flash中 |  | 必选 | -
ISSU升级前IRF成员设备检查 |  | 必选 | 1.2.2
启动文件版本兼容性检查 |  | 必选 | 1.2.3
ISSU升级 | 兼容版本 | 必选 二者选其一 | 1.2.4 1.
 | 不兼容版本 |  | 1.2.4 2.
配置ISSU的版本回滚方式 |  | 可选 | 1.2.5
ISSU功能的显示和维护 |  | 可选 | 1.2.6

1.2.2 ISSU升级前IRF成员设备检查

表1-3 ISSU升级前的准备

操作 | 命令 | 说明
保存当前配置 | save | 必选 ISSU升级前，要确保IRF当前配置已保存到配置文件中
检查各成员设备的运行状态 | display device | 必选 ISSU升级前，要确保IRF中所有成员设备都处于正常运行状态
查看启动文件信息 | display boot-loader | 必选 ISSU升级前，要确保各成员设备当前使用的启动文件相同（文件的版本、名称及路径均应相同）
查看IRF中各成员设备的角色 | display irf | 必选
查看flash存储文件 | dir | 必选 ISSU升级前，要确保待升级的启动文件和原启动文件在各成员设备的Flash上同时存在，且存储路径相同

1.2.3 启动文件版本兼容性检查

通过ISSU方式进行IRF系统的启动文件升级前，需要进行启动文件新老版本间的兼容性检查，从而确定是否能够采用ISSU方式进行升级、以及该采用何种方式升级。

完成新版本启动文件的下载及保存后，可以根据启动文件版本兼容性检查结果选择不同的升级方式。

l 兼容版本（Compatible）：检查结果为兼容版本，表示设备当前运行的启动文件版本与新启动文件版本兼容。可采用ISSU兼容方式进行IRF系统的启动文件升级，具体请参见 1.2.4 1. 兼容版本的ISSU升级配置。

l 不兼容版本（Incompatible）：检查结果为不兼容版本，表示设备当前运行的启动文件版本与新启动文件版本不兼容。可采用ISSU不兼容方式进行IRF系统的启动文件升级，具体请参见 1.2.4 2. 不兼容版本的ISSU升级配置。

l 未知兼容性版本（Unknown）：检查结果为未知兼容性版本，表示指定的启动文件版本不支持ISSU功能、或者不能通过ISSU功能来进行启动文件的升级。不能采用ISSU方式进行IRF系统的启动文件升级。

表1-4 进行启动文件版本兼容性检查

操作 | 命令 | 说明
进入系统视图 | system-view | -
检查新的启动文件与设备当前的启动文件版本是否兼容 | display version comp-matrix file upgrading-filename | 必选

1.2.4 配置ISSU升级

1. 兼容版本的ISSU升级配置

通过 display version comp-matrix file upgrading-filename命令检查新启动文件与当前启动文件的版本后，若显示新启动文件与当前启动文件版本兼容（Compatible），则使用表1-5 中的步骤进行升级。

在进行兼容版本的ISSU升级配置前，请确保当前IRF系统中的Master设备和升级结束后的新Master设备（通过 issu load 命令指定的Slave设备，ISSU升级完成后，此设备IRF角色变为新的Master）的优先级高于其它成员设备的优先级（否则请使用 irf member member-id priority priority 命令修改当前Master设备和新Master设备的优先级）。

表1-5 兼容版本的ISSU配置

操作 | 命令 | 说明
进入系统视图 | system-view | -
升级指定的Slave设备（升级结束后的新Master） | issu load file upgrading-filename slot slot-number | 必选 slot-number 为指定的Slave设备的成员编号 执行此命令以后，指定Slave设备将使用新的启动文件进行自动重启 需要注意的是：请在重启过程完成以后，再执行下一步操作
手工触发原Master设备重启 | issu run switchover slot slot-number | 必选 执行此命令后： l 原Master设备使用原版本启动文件重新启动，重启完成后该设备的IRF角色改变为Slave l IRF中的Slave设备重新进行IRF选举，选举获胜者（通过 issu load 命令指定的Slave设备）倒换为新的Master设备 需要注意的是： l 本命令中指定的 slot-number 参数值必须和 issu load 命令中指定的值相同 l 请在重启过程完成以后，再执行下一步操作
确认ISSU升级，取消启动文件版本的自动回滚功能 | issu accept slot slot-number | 可选 缺省情况下，版本回滚定时器的超时时长为45分（即 issu load file 命令执行45分钟后，若还未执行 issu commit 命令对IRF系统中尚未升级的成员设备进行ISSU升级、或未通过 issu accept 命令取消自动回滚功能，则设备将自动终止ISSU升级操作，启动文件将恢复到升级前的版本） 需要注意的是： l 本命令中指定的 slot-number 参数值必须和 issu load 命令中指定的值相同 l 执行此命令后，启动文件的版本回滚定时器失效（即，启动文件不能再进行自动回滚）
对IRF系统中尚未进行ISSU升级的成员设备进行升级 | issu commit slot slot-number | 必选 l 此命令一次只能指定一台成员设备，当IRF系统中有三台或三台以上成员设备时，您需要多次执行此命令、逐一完成各成员设备的升级 l 所有IRF成员设备都使用新版本启动文件重启后，ISSU升级结束

l ISSU升级结束后，IRF中成员设备的角色会发生变化。

l 执行 issu commit 命令后，用户不能通过执行 issu rollback 命令将启动文件从当前版本 BB 回滚到ISSU升级前的版本 AA。此时用户如果想将启动文件从版本 BB 恢复到ISSU升级前的版本 AA，请将原 AA 版本启动文件版本作为新启动文件版本，对IRF系统进行再一次ISSU升级。

2. 不兼容版本的ISSU升级配置

通过 display version comp-matrix file upgrading-filename命令检查新启动文件与当前启动文件的版本兼容性后，若显示不兼容（Incompatible），则使用表1-6 中的步骤进行升级。

若新启动文件与当前启动文件的版本不兼容、管理员还希望通过ISSU进行IRF系统启动文件升级，在新Master（通过 issu load 命令指定的Slave设备）重启完成后，网络中会产生两个配置相同的IRF。为了避免出现这种情况，在进行ISSU升级前，请确保已在IRF中配置了MAD检测功能。

表1-6 不兼容版本的ISSU配置

操作 | 命令 | 说明
进入系统视图 | system-view | -
升级指定的Slave设备（升级结束后的新Master） | issu load file upgrading-filename slot slot-number force | 必选 slot-number 为指定的Slave设备的成员编号 执行此命令以后，指定的Slave设备（升级结束后的新Master）将使用新的启动文件进行自动重启，重启完成后该设备处于Recover状态 需要注意的是：请在重启过程完成以后，再执行下一步操作
对其余尚未升级的IRF成员设备一次性全部进行重启升级 | issu run switchover slot slot-number | 必选 需要注意的是：本命令中指定的 slot-number 参数值必须和 issu load 命令中指定的值相同 执行本命令以后，除了指定的Slave设备（新Master），其余IRF成员设备将使用新版本启动文件进行一次性全部重启升级，重启完成后ISSU升级结束

1.2.5 配置ISSU的版本回滚

表1-7 配置版本回滚定时器的超时时长

操作 | 命令 | 说明
进入系统视图 | system-view | -
设置版本回滚定时器的超时时长 | issu rollback-timer minutes | 可选 缺省情况下，版本回滚定时器的超时时长为45分钟（即 issu load file 命令执行45分钟后，若还未执行 issu commit 命令对IRF系统中尚未升级的成员设备进行ISSU升级、或未通过 issu accept 命令取消自动回滚功能，则设备将自动终止ISSU升级操作，启动文件将恢复到升级前的版本）

表1-8 配置采用手动回滚方式进行启动文件的版本回滚

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置ISSU升级过程中采用手动回滚方式进行启动文件的版本回滚 | issu rollback slot slot-number | 可选 缺省情况下，系统采用自动回滚方式进行启动文件的版本回滚 本命令中指定的 slot-number 参数值必须和 issu load 命令中的值相同

在进行ISSU升级过程中，当执行了 issu load 命令以后，如果再修改版本回滚定时器的超时时长，修改后的超时时长对此次ISSU升级无效。

1.2.6 ISSU功能的显示和维护

在完成上述配置后，在任意视图下执行 display 命令，均可以显示配置后ISSU的运行情况，通过查看显示信息，来验证配置的效果。

表1-9 ISSU显示和维护

操作 | 命令
显示版本回滚定时器相关信息 | display issu rollback-timer [ | { begin | exclude | include } regular-expression ]
显示ISSU升级状态 | display issu state [ | { begin | exclude | include } regular-expression ]
显示版本兼容信息 | display version comp-matrix [ file upgrading-filename ] [ | { begin | exclude | include } regular-expression ]


2 ISSU典型配置举例

相关链接

  • 2.1 网络现状及需求分析
  • 2.2 ISSU升级配置
父主题： 07-ISSU配置


2.1 网络现状及需求分析

2.1.1 组网现状

用户当前组网如图2-1 所示：

(1) SwitchA、SwtichB和SwitchC为三台接入交换机，下面连接各自的用户网络。

(2) SwitchD、SwtichE和SwitchF为三台汇聚交换机，这三台交换机组成IRF（Master设备的成员编号为1；Slave设备的成员编号为2和3）。

(3) 为了保证用户网络的高可靠性，处于汇聚层的IRF成员设备间进行了跨设备链路聚合，使IRF各成员设备与每台接入层交换机之间的3条物理链路捆绑在一起成为一条逻辑链路。

l IRF上：创建3个动态聚合组，聚合组1中的端口与Switch A相连，聚合组2中的端口与Switch B相连，聚合组3中的端口与Switch C相连。

l SwitchA上：创建聚合组1，与IRF上的聚合组1对应。

l SwitchB上：创建聚合组2，与IRF上的聚合组2对应。

l SwitchC上：创建聚合组3，与IRF上的聚合组3对应。

2.1.2 组网需求

现在用户需要在确保接入层交换机SwitchA、SwtichB和SwitchC下连的用户网络业务流量不中断的情况下，升级IRF中各成员设备的启动文件。

l 已知IRF当前的启动文件为soft-version1.bin，希望通过远程操作进行IRF系统的启动文件升级（最新版本的启动文件soft-version2.bin保存在TFTP server上）。

l 已知IRF系统的IP地址为1.1.1.1/24；TFTP server的IP地址为2.2.2.2/24。IRF与TFTP server之间路由可达。

2.1.3 组网图

图2-1 用户网络示意图


2.2 ISSU升级配置

2.2.1 ISSU升级前提

1. IRF中进行了跨设备链路聚合

(1) IRF上的配置

# 创建3个动态聚合组（聚合组1中的端口与Switch A相连，聚合组2中的端口与Switch B相连，聚合组3中的端口与Switch C相连）。

<IRF> system-view

[IRF] interface bridge-aggregation 1

[IRF-Bridge-Aggregation1] link-aggregation mode dynamic

[IRF-Bridge-Aggregation1] quit

[IRF] interface bridge-aggregation 2

[IRF-Bridge-Aggregation2] link-aggregation mode dynamic

[IRF-Bridge-Aggregation2] quit

[IRF] interface bridge-aggregation 3

[IRF-Bridge-Aggregation3] link-aggregation mode dynamic

[IRF-Bridge-Aggregation3] quit

# 将与Switch A相连的端口Ethernet1/0/1、Ethernet2/0/1和Ethernet3/0/1加入该聚合组1中。

[IRF] interface Ethernet 1/0/1

[IRF-Ethernet1/0/1] port link-aggregation group 1

[IRF-Ethernet1/0/1] quit

[IRF] interface Ethernet 2/0/1

[IRF-Ethernet2/0/1] port link-aggregation group 1

[IRF-Ethernet2/0/1] quit

[IRF] interface Ethernet 3/0/1

[IRF-Ethernet3/0/1] port link-aggregation group 1

[IRF-Ethernet3/0/1] quit

# 将与Switch B相连的端口Ethernet1/0/2、Ethernet2/0/2和Ethernet3/0/2加入该聚合组2中。

[IRF] interface Ethernet 1/0/2

[IRF-Ethernet1/0/2] port link-aggregation group 2

[IRF-Ethernet1/0/2] quit

[IRF] interface Ethernet 2/0/2

[IRF-Ethernet2/0/2] port link-aggregation group 2

[IRF-Ethernet2/0/2] quit

[IRF] interface Ethernet 3/0/2

[IRF-Ethernet3/0/2] port link-aggregation group 2

[IRF-Ethernet3/0/2] quit

# 将IRF中与Switch C相连的端口Ethernet1/0/3、Ethernet2/0/3和Ethernet3/0/3加入该聚合组3中。

[IRF] interface Ethernet 1/0/3

[IRF-Ethernet1/0/3] port link-aggregation group 3

[IRF-Ethernet1/0/3] quit

[IRF] interface Ethernet 2/0/3

[IRF-Ethernet2/0/3] port link-aggregation group 3

[IRF-Ethernet2/0/3] quit

[IRF] interface Ethernet 3/0/3

[IRF-Ethernet3/0/3] port link-aggregation group 3

[IRF-Ethernet3/0/3] quit

(2) Switch A上的配置

# 创建动态聚合接口1。

<SwitchA> system-view

[SwitchA] interface bridge-aggregation 1

[SwitchA-Bridge-Aggregation1] link-aggregation mode dynamic

[SwitchA-Bridge-Aggregation1] quit

#将SwitchA上与IRF各成员设备相连的端口Ethernet1/0/1、Ethernet1/0/2和Ethernet1/0/3加入聚合组1中。

[SwitchA] interface Ethernet 1/0/1

[SwitchA-Ethernet1/0/1] port link-aggregation group 1

[SwitchA-Ethernet1/0/1] quit

[SwitchA] interface Ethernet 1/0/2

[SwitchA-Ethernet1/0/2] port link-aggregation group 1

[SwitchA-Ethernet1/0/2] quit

[SwitchA] interface Ethernet 1/0/3

[SwitchA-Ethernet1/0/3] port link-aggregation group 1

[SwitchA-Ethernet1/0/3] quit

(3) Switch B上的配置

# 创建动态聚合接口2。

<SwitchB> system-view

[SwitchB] interface bridge-aggregation 2

[SwitchB-Bridge-Aggregation2] link-aggregation mode dynamic

[SwitchB-Bridge-Aggregation2] quit

#将SwitchB上与IRF各成员设备相连的端口Ethernet1/0/1、Ethernet1/0/2和Ethernet1/0/3加入聚合组2中。

[SwitchB] interface Ethernet 1/0/1

[SwitchB-Ethernet1/0/1] port link-aggregation group 2

[SwitchB-Ethernet1/0/1] quit

[SwitchB] interface Ethernet 1/0/2

[SwitchB-Ethernet1/0/2] port link-aggregation group 2

[SwitchB-Ethernet1/0/2] quit

[SwitchB] interface Ethernet 1/0/3

[SwitchB-Ethernet1/0/3] port link-aggregation group 2

[SwitchB-Ethernet1/0/3] quit

(4) Switch C上的配置

# 创建动态聚合接口3。

<SwitchC> system-view

[SwitchC] interface bridge-aggregation 3

[SwitchC-Bridge-Aggregation3] link-aggregation mode dynamic

[SwitchB-Bridge-Aggregation3] quit

# 将SwitchC上与IRF各成员设备相连的端口Ethernet1/0/1、Ethernet1/0/2和Ethernet1/0/3加入聚合组3中。

[SwitchC] interface Ethernet 1/0/1

[SwitchC-Ethernet1/0/1] port link-aggregation group 3

[SwitchC-Ethernet1/0/1] quit

[SwitchC] interface Ethernet 1/0/2

[SwitchC-Ethernet1/0/2] port link-aggregation group 3

[SwitchC-Ethernet1/0/2] quit

[SwitchC] interface Ethernet 1/0/3

[SwitchC-Ethernet1/0/3] port link-aggregation group 3

[SwitchC-Ethernet1/0/3] quit

2. 完成了TFTP server的配置

通过合法渠道获取正确版本的升级启动文件，并将该文件存储到TFTP server的工作路径（不同类型的服务器配置可能不同），以便TFTP client可以访问。

2.2.2 ISSU升级准备

1. 将新启动文件soft-version2.bin下载保存到IRF中所有成员设备的Flash根目录中

<IRF> tftp 2.2.2.2 get soft-version2.bin

File will be transferred in binary mode

Downloading file from remote TFTP server, please wait……

TFTP: 23677248 bytes received in 141 second(s)

File downloaded successfully.

<IRF> copy soft-version2.bin slot2#flash:/

<IRF> copy soft-version2.bin slot3#flash:/

2. ISSU升级前进行IRF成员设备检查

(1) 检查各成员设备的运行状态是否正常（如不正常，则不能采用ISSU方式进行启动文件升级）。

<IRF> display device

Slot 1

SubSNo PortNum PCBVer FPGAVer CPLDVer BootRomVer AddrLM Type State

0 28 Ver.B NULL 001 107 IVL MAIN Normal

Slot 2

SubSNo PortNum PCBVer FPGAVer CPLDVer BootRomVer AddrLM Type State

0 28 Ver.B NULL 001 107 IVL MAIN Normal

Slot 3

SubSNo PortNum PCBVer FPGAVer CPLDVer BootRomVer AddrLM Type State

0 28 Ver.B NULL 001 107 IVL MAIN Normal

以上显示信息中，State字段显示为Normal，表示IRF中各成员设备均正常运行。

(2) 查看IRF系统中所有成员设备的当前运行的启动文件是否相同（如果不同，则不能采用ISSU方式进行启动文件升级）。

<IRF> display boot-loader

Slot 1

The current boot app is: flash:/soft-version1.bin

The main boot app is: flash:/soft-version1.bin

The backup boot app is: flash:/

Slot 2

The current boot app is: flash:/soft-version1.bin

The main boot app is: flash:/soft-version1.bin

The backup boot app is: flash:/

Slot 3

The current boot app is: flash:/soft-version1.bin

The main boot app is: flash:/soft-version1.bin

The backup boot app is: flash:/

通过以上信息可以看到，IRF中各成员设备当前运行的启动文件都是soft-version1.bin。

(3) 查看IRF中各成员设备的角色。

<IRF> display irf

Switch Role Priority CPU-Mac Description

*+1 Master 10 0023-8927-ad54 -----

2 Slave 9 0023-8927-afdc -----

3 Slave 1 0023-89d9-3223 -----

--------------------------------------------------

* indicates the device is the master.

+ indicates the device through which the user logs in.

The Bridge MAC of the IRF is: 0023-8927-ad53

Auto upgrade : yes

Mac persistent : 6 min

Domain ID : 0

通过以上显示信息可以看出，IRF中Master设备的成员编号为1，优先级为10；Slave设备的成员编号分别为2和3，Slave2的优先级为9，Slave3的优先级为1，在做ISSU升级的时候，应该选择Slave2为指定Slave。

在进行兼容版本的ISSU升级配置前，请确保当前IRF系统中Master设备和指定Slave设备的优先级高于其它成员设备的优先级（否则请使用 irf member member-id priority priority 命令修改Master设备和指定Slave设备的优先级）。

(4) 逐一查看待升级的启动文件是否已保存到所有IRF成员设备的Flash中（如未保存，则不能采用ISSU方式进行启动文件升级）。

# 查看待升级的启动文件soft-version2.bin已保存到Master设备的Flash中。

<IRF> dir

Directory of flash:/

0 -rw- 6085 May 29 2010 11:38:45 config.cfg

1 -rw- 10518 Apr 26 2011 12:45:05 logfile.log

2 -rw- 23500248 Apr 26 2011 14:24:11 soft-version1.bin

3 -rw- 23677248 Apr 26 2011 14:13:46 soft-version2.bin

4 drw- - Apr 26 2011 12:00:33 seclog

5 -rw- 287 Apr 26 2011 12:19:52 system.xml

126592 KB total (42206 KB free)

通过以上信息可以看出，待升级的启动文件soft-version2.bin已保存到Master设备的Flash中。

# 查看待升级的启动文件soft-version2.bin已保存到Slave2的Flash中。

<IRF> dir slot2#flash:/

Directory of slot2#flash:/

0 -rw- 6085 May 29 2010 11:38:45 config.cfg

1 -rw- 10518 Apr 26 2011 12:45:05 logfile.log

2 -rw- 23500248 Apr 26 2011 14:24:11 soft-version1.bin

3 -rw- 23677248 Apr 26 2011 14:13:46 soft-version2.bin

4 drw- - Apr 26 2011 12:00:33 seclog

5 -rw- 287 Apr 26 2011 12:19:52 system.xml

126592 KB total (42206 KB free)

通过以上信息可以看出，待升级的启动文件soft-version2.bin已保存到Slave2的Flash中。

# 查看待升级的启动文件soft-version2.bin已保存到Slave3的Flash中。

<IRF> dir slot3#flash:/

Directory of slot3#flash:/

0 -rw- 6085 May 29 2010 11:38:45 config.cfg

1 -rw- 10518 Apr 26 2011 12:45:05 logfile.log

2 -rw- 23500248 Apr 26 2011 14:24:11 soft-version1.bin

3 -rw- 23677248 Apr 26 2011 14:13:46 soft-version2.bin

4 drw- - Apr 26 2011 12:00:33 seclog

5 -rw- 287 Apr 26 2011 12:19:52 system.xml

126592 KB total (42206 KB free)

通过以上信息可以看出，待升级的启动文件soft-version2.bin已保存到Slave3的Flash中。

(5) 保存当前配置。

<IRF> save

The current configuration will be written to the device. Are you sure? [Y/N]:y

Please input the file name(*.cfg)[flash:/config.cfg]

(To leave the existing filename unchanged, press the enter key):

flash:/config.cfg exists, overwrite? [Y/N]:y

Validating file. Please wait....

Saved the current configuration to mainboard device successfully.

Slot 2:

Save next configuration file successfully.

Slot 3:

Save next configuration file successfully.

Configuration is saved to device successfully.

通过以上显示信息可以看出，当前运行配置已成功保存到IRF各成员设备的配置文件中。

3. 查看新启动文件与当前启动文件的版本兼容情况

# 查看新启动文件soft-version2.bin与当前版本启动文件的版本兼容情况后，可确定具体采用何种ISSU升级方式。

<IRF> display version comp-matrix file soft-version2.bin

执行 display version comp-matrix file命令后，显示信息如下，具体显示信息请以设备实际情况为准。

(1) 兼容版本的显示

Number of Matrices in Table = 1

Matrix for H3C S3600V2-28TP-EI

Running Version: version1

Version Compatibility List:

version2 (Compatible)

以上显示信息表明，soft-version2.bin与当前版本完全兼容，需要使用兼容版本的升级步骤进行ISSU升级。具体配置请参见 2.2.3 兼容版本的ISSU升级。

(2) 不兼容版本的显示

Number of Matrices in Table = 1

Matrix for H3C S3600V2-28TP-EI

Running Version: version1

Version Compatibility List:

Version2 (Incompatible)

以上显示信息表明，soft-version2.bin与当前版本不兼容，需要使用不兼容版本的升级步骤进行ISSU升级。具体配置请参见 2.2.4 不兼容版本的ISSU升级。

2.2.3 兼容版本的ISSU升级

# 开始ISSU升级，先升级指定Slave设备（升级结束后的新Master，此例中为Slave2）。

<IRF> system-view

[IRF] issu load file soft-version2.bin slot 2

This command will begin ISSU, and the specified board will reboot and be upgraded. Please save the current running configuration first; otherwise, the configuration may be lost.Continue? [Y/N]:y

# Slave2重启完成以后，查看Slave2的启动文件是否为soft-version2.bin。

[IRF] display boot-loader

Slot 1

The current boot app is: flash:/soft-version1.bin

The main boot app is: flash:/soft-version1.bin

The backup boot app is: flash:/

Slot 2

The current boot app is: flash:/soft-version2.bin

The main boot app is: flash:/soft-version2.bin

The backup boot app is: flash:/

Slot 3

The current boot app is: flash:/soft-version1.bin

The main boot app is: flash:/soft-version1.bin

The backup boot app is: flash:/

通过以上显示信息可以看出，Slave2重启完成以后，启动文件已经升级为soft-version2.bin。

# 手工触发IRF系统中Master设备重启。

[IRF] issu run switchover slot 2

Master will reboot, switch the specified board to master and update the line card. Continue? [Y/N]:y

此例中Master的成员编号为1，Master设备重启完成以后（原Master设备在IRF系统中的角色变为Slave），IRF中的Slave设备重新进行IRF选举，Slave2的优先级高于Slave3，在IRF中选举获胜倒换为新的Master设备。

# 确认ISSU升级，取消启动文件的自动回滚功能。

[IRF] issu accept slot 2

# 对尚未升级的成员设备进行升级。（分别升级成员设备1和3）

[IRF] issu commit slot 1

The specified board will reboot and be upgraded. Continue? [Y/N]:y

[IRF] issu commit slot 3

The specified board will reboot and be upgraded. Continue? [Y/N]:y

至此，IRF中所有成员设备都使用新版本的启动文件运行，IRF升级完成。

# 查看设备上当前使用的启动文件是否为soft-version2.bin。

[IRF] display boot-loader

Slot 1

The current boot app is: flash:/soft-version2.bin

The main boot app is: flash:/soft-version2.bin

The backup boot app is: flash:/

Slot 2

The current boot app is: flash:/soft-version2.bin

The main boot app is: flash:/soft-version2.bin

The backup boot app is: flash:/

Slot 3

The current boot app is: flash:/soft-version2.bin

The main boot app is: flash:/soft-version2.bin

The backup boot app is: flash:/

2.2.4 不兼容版本的ISSU升级

若新启动文件与当前启动文件的版本不兼容、管理员还希望通过ISSU进行IRF系统启动文件升级，在新Master（通过 issu load 命令指定的Slave设备）重启完成后，网络中会产生两个配置相同的IRF。为了避免出现这种情况，在进行ISSU升级前，请确保已在IRF中配置了MAD检测功能。

# 开始ISSU升级，先升级指定Slave设备（升级结束后的新Master，此例中先升级Slave2）。

<IRF> system-view

[IRF] issu load file soft-version2.bin slot 2 force

This command will begin ISSU, and the specified board will reboot and be upgraded. Please save the current running configuration first; otherwise, the configuration may be lost.Continue? [Y/N]: y

# Slave2重启完成以后，对其余尚未升级的IRF成员设备一次性全部进行重启升级。

[IRF] issu run switchover slot 2

Master will reboot, switch the specified chassis to master. Continue? [Y/N]:y

至此，ISSU升级过程结束，IRF升级完成。

# 查看设备上当前使用的启动文件是否为soft-version2.bin。

[IRF] display boot-loader

Slot 1

The current boot app is: flash:/soft-version2.bin

The main boot app is: flash:/soft-version2.bin

The backup boot app is: flash:/

Slot 2

The current boot app is: flash:/soft-version2.bin

The main boot app is: flash:/soft-version2.bin

The backup boot app is: flash:/

Slot 3

The current boot app is: flash:/soft-version2.bin

The main boot app is: flash:/soft-version2.bin

The backup boot app is: flash:/


1 设备管理

本章节各配置任务互相独立，均为设备的可选配置，配置时没有先后顺序要求。

相关链接

  • 1.1 设备管理简介
  • 1.2 配置设备名称
  • 1.3 配置系统时间
  • 1.4 使能版权信息显示功能
  • 1.5 配置欢迎信息
  • 1.6 配置系统异常时的处理方式
  • 1.7 配置设备重启
  • 1.8 配置定时执行任务功能
  • 1.9 配置端口状态检测定时器
  • 1.10 配置设备的温度告警门限
  • 1.11 清除当前系统中不使用的16bit接口索引
  • 1.12 可插拔接口模块的识别与诊断
  • 1.13 设备管理显示和维护
父主题： 08-设备管理配置


1.1 设备管理简介

通过设备管理功能，用户能够查看设备当前的工作状态，配置设备运行的相关参数，实现对设备的日常维护和管理。

目前的设备管理主要提供重启设备、定时重启设备、配置设备的温度告警门限等功能。


1.2 配置设备名称

设备名称用于在网络中标识某台设备，在系统内部，设备名称对应于命令行接口的提示符，如设备的名称为Sysname，则用户视图的提示符为<Sysname>。

表1-1 配置设备名称

操作 | 命令 | 说明
进入系统视图 | system-view | -
设置设备名称 | sysname sysname | 可选 缺省情况下，设备名称为 H3C


1.3 配置系统时间

1.3.1 系统时间的配置

系统时间是系统信息时间戳显示的时间。该时间由配置的相对时间、时区和夏令时三个参数运算之后联合决定，通过 display clock 命令可以查看。为了保证与其它设备协调工作，用户需要将系统时间配置准确。

表1-2 配置系统时间

操作 |  | 命令 | 说明
配置时间和日期 |  | clock datetime time date | 可选 该命令在用户视图下执行
进入系统视图 |  | system-view | -
配置系统所在的时区 |  | clock timezone zone-name { add | minus } zone-offset | 可选 缺省情况下，本地时区采用UTC（Coordinated Universal Time，国际协调时间）时区
配置夏令时 | 设置从“起始日期”的“起始时间”到“结束日期”的“结束时间”这个时间段内采用夏令时制，夏令时间要比设备的当前时间增加“add-time” | clock summer-time zone-name one-off start-time start-date end-time end-date add-time | 二者选其一 缺省情况下，设备上没有配置夏令时，采用UTC时间
 | 设置设备重复采用夏令时制 | clock summer-time zone-name repeating start-time start-date end-time end-date add-time

1.3.2 系统时间的配置效果

系统时间由 clock datetime、clock timezone 和 clock summer-time 三条命令联合决定。如果以上三条命令都不配置，则 display clock 命令显示的为原系统时间。如果把三条以上命令任意组合进行配置，配置后的系统时间请参见 表1-3 。表中配置列各参数的含义为：

l 1：表示执行 clock datetime 命令配置了时间 date-time；

l 2：表示执行 clock timezone 命令配置了时区参数，时间偏移量为 zone-offset；

l 3：表示执行 clock summer-time 命令配置了夏令时参数，时间偏移量为 summer-offset；

l [1]：表示 clock datetime 命令是可选配置，可执行也可不执行。

表中举例默认原系统时间为2005/1/1 1:00:00。

表1-3 系统时间配置示例表

配置 | 配置后的系统时间 | 举例
1 | date-time | 配置：clock datetime 1:00 2007/1/1 配置后的系统时间：01:00:00 UTC Mon 01/01/2007
2 | 原系统时间±"zone-offset" | 配置：clock timezone zone-time add 1 配置后的系统时间：02:00:00 zone-time Sat 01/01/2005
1、2 | "date-time"±"zone-offset" | 配置：clock datetime 2:00 2007/2/2和clock timezone zone-time add 1 配置后的系统时间：03:00:00 zone-time Fri 02/02/2007
2、1 | date-time | 配置：clock timezone zone-time add 1和clock datetime 3:00 2007/3/3 配置后的系统时间：03:00:00 zone-time Sat 03/03/2007
3 | 原系统时间不在夏令时段内，则为原系统时间 | 配置：clock summer-time ss one-off 1:00 2006/1/1 1:00 2006/8/8 2 配置后的系统时间：01:00:00 UTC Sat 01/01/2005
 | 原系统时间在夏令时段内，则为原系统时间+”summer-offset” | 配置：clock summer-time ss one-off 00:30 2005/1/1 1:00 2005/8/8 2 配置后的系统时间：03:00:00 ss Sat 01/01/2005 如果原系统时间+”summer-offset”不在夏令时段内，则配置后的系统时间为原系统时间。之后，若取消夏令时配置，则系统时间会被减少”summer-offset”
1、3 | date-time 不在夏令时段内，则为 date-time | 配置：clock datetime 1:00 2007/1/1和clock summer-time ss one-off 1:00 2006/1/1 1:00 2006/8/8 2 配置后的系统时间：01:00:00 UTC Mon 01/01/2007
 | date-time 在夏令时段内，则为“date-time”+”summer-offset” | 配置：clock datetime 8:00 2007/1/1和clock summer-time ss one-off 1:00 2007/1/1 1:00 2007/8/8 2 配置后的系统时间：10:00:00 ss Mon 01/01/2007 如果“date-time”+”summer-offset”不在夏令时段内，则配置后的系统时间为“date-time”。之后，若取消夏令时配置，则系统时间会被减少”summer-offset”
[1]、3、1 | date-time 不在夏令时段内，则为 date-time | 配置：clock summer-time ss one-off 1:00 2007/1/1 1:00 2007/8/8 2和clock datetime 1:00 2008/1/1 配置后的系统时间：01:00:00 UTC Tue 01/01/2008
 | date-time 在夏令时段内，再根据“date-time”-”summer-offset”的值是否在夏令时段内来判断。如果该值不在夏令时段内，则为“date-time”-”summer-offset”；如果在夏令时段内，则为date-time | 配置：clock summer-time ss one-off 1:00 2007/1/1 1:00 2007/8/8 2和clock datetime 1:30 2007/1/1 配置后的系统时间：23:30:00 UTC Sun 12/31/2006
 |  | 配置：clock summer-time ss one-off 1:00 2007/1/1 1:00 2007/8/8 2和clock datetime 3:00 2007/1/1 配置后的系统时间：03:00:00 ss Mon 01/01/2007
2、3或者 3、2 | 如果原系统时间±"zone-offset"的值不在夏令时段内，则为原系统时间±"zone-offset" | 配置：clock timezone zone-time add 1和clock summer-time ss one-off 1:00 2007/1/1 1:00 2007/8/8 2 配置后的系统时间：02:00:00 zone-time Sat 01/01/2005
 | 如果原系统时间±"zone-offset"的值在夏令时段内，则为原系统时间±"zone-offset"+”summer-offset” | 配置：clock timezone zone-time add 1和clock summer-time ss one-off 1:00 2005/1/1 1:00 2005/8/8 2 配置后的系统时间：04:00:00 ss Sat 01/01/2005
1、2、3或者1、3、2 | 如果"date-time"±"zone-offset"的值不在夏令时段内，则为"date-time"±"zone-offset" | 配置：clock datetime 1:00 2007/1/1、clock timezone zone-time add 1和clock summer-time ss one-off 1:00 2008/1/1 1:00 2008/8/8 2 配置后的系统时间：02:00:00 zone-time Mon 01/01/2007
 | 如果"date-time"±"zone-offset"的值在夏令时段内，则为"date-time"±"zone-offset"+”summer-offset” | 配置：clock datetime 1:00 2007/1/1、clock timezone zone-time add 1和clock summer-time ss one-off 1:00 2007/1/1 1:00 2007/8/8 2 配置后的系统时间：04:00:00 ss Mon 01/01/2007
[1]、2、3、1或者[1]、3、2、1 | date-time 不在夏令时段内，则为 date-time | 配置：clock timezone zone-time add 1、clock summer-time ss one-off 1:00 2008/1/1 1:00 2008/8/8 2和clock datetime 1:00 2007/1/1 配置后的系统时间：01:00:00 zone-time Mon 01/01/2007
 | date-time 在夏令时段内，再根据“date-time”-”summer-offset”的值是否在夏令时段内来判断。如果不在夏令时段内，则为“date-time”-”summer-offset”；如果在夏令时段内，则为 date-time | 配置：clock timezone zone-time add 1、clock summer-time ss one-off 1:00 2008/1/1 1:00 2008/8/8 2和clock datetime 1:30 2008/1/1 配置后的系统时间：23:30:00 zone-time Mon 12/31/2007
 |  | 配置：clock timezone zone-time add 1、clock summer-time ss one-off 1:00 2008/1/1 1:00 2008/8/8 2和clock datetime 3:00 2008/1/1 配置后的系统时间：03:00:00 ss Tue 01/01/2008


1.4 使能版权信息显示功能

l 使能版权信息显示功能后，使用Telnet或SSH方式登录设备时会显示版权信息，使用Console口登录设备再退出用户视图时会显示版权信息，其它情况不显示版权信息。显示的版权信息形如：

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

* Copyright (c) 2004-2011 Hangzhou H3C Tech. Co., Ltd. All rights reserved. *

* Without the owner's prior written consent, *

* no decompiling or reverse-engineering shall be allowed. *

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

l 禁止版权信息显示功能后，在任何情况下都不会显示版权信息。

表1-4 使能版权信息显示功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
使能版权信息显示功能 | copyright-info enable | 可选 缺省情况下，版权信息显示功能处于使能状态


1.5 配置欢迎信息

1.5.1 欢迎信息简介

欢迎信息是用户在连接到设备、进行登录验证以及开始交互配置时系统显示的一段提示信息。管理员可以根据需要，设置相应的欢迎信息。

按照同时配置时，显示顺序的先后，系统支持如下几种欢迎信息：

(1) legal欢迎信息。系统在用户登录前会给出一些版权或者授权信息，然后显示legal条幅，并等待用户确认是否继续登录。如果用户输入“Y”或者按<Enter>键，则继续登录过程；如果输入“N”，则退出认证或登录过程。“Y”和“N”不区分大小写。

(2) MOTD（Message Of The Day）欢迎信息。在legal欢迎信息后，login欢迎信息前显示。

(3) login欢迎信息。只有用户界面下配置了password或者scheme认证方式时，才显示该欢迎信息。

(4) incoming欢迎信息或者shell欢迎信息。Modem拨号用户登录时显示incoming欢迎信息，其它方式登录的用户显示shell欢迎信息。

1.5.2 配置欢迎信息

表1-5 配置欢迎信息

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置登录进入用户视图时的欢迎信息（Modem登录方式适用） | header incoming text | 可选
配置登录验证时的欢迎信息 | header login text | 可选
配置登录终端界面前的授权信息 | header legal text | 可选
配置登录进入用户视图时的欢迎信息 | header shell text | 可选
配置登录终端界面前的欢迎信息 | header motd text | 可选

输入欢迎信息时，信息内容支持单行输入和多行输入两种方式：

(1) 单行输入

该方式下，命令关键字与欢迎信息的所有内容在同一行中输入，输入内容的起始符和结束符必须相同，这两字符不作为欢迎信息的内容。此时包括命令关键字、起始符和结束符在内，一共可以输入510个字符。在该方式下输入欢迎信息时不能回车（按<Enter>键）。例如：用户要设置的欢迎信息为“Have a nice day.”：

<System> system-view

[System] header shell %Have a nice day.%

(2) 多行输入

该方式下，通过回车键可以将欢迎信息分多行输入，此时欢迎信息一共可以长达2000个字符。多行输入又分三种方式：

l 命令关键字后直接回车，输入欢迎信息并以“%”作为欢迎信息的结束符结束设置，“%”不属于欢迎信息的内容。例如：用户要设置的欢迎信息为“Have a nice day. Please input the Password.”：

<System> system-view

[System] header shell

Please input banner content, and quit with the character '%'. ――系统提示

Have a nice day.

Please input the Password.%

l 命令关键字后输入一个字符后回车，以这个字符作为欢迎信息的起始符和结束符，输入完欢迎信息以后，以结束符结束设置。起始符和结束符不属于欢迎信息的内容。例如：用户要设置的欢迎信息为“Have a nice day. Please input the Password.”：

<System> system-view

[System] header shell A

Please input banner content, and quit with the character 'A'.――系统提示

Have a nice day.

Please input the Password.A

l 命令关键字后输入多个字符（首尾不相同）后回车，以命令关键字后的第一个字符作为欢迎信息的起始符和结束符，输入完欢迎信息以后，以结束符结束设置。起始符和结束符不属于欢迎信息的内容。例如：用户要设置的欢迎信息为“Have a nice day. Please input the Password.”：

<System> system-view

[System] header shell AHave a nice day.

Please input banner content, and quit with the character 'A'.――系统提示

Please input the Password.A


1.6 配置系统异常时的处理方式

当系统检测到设备软件运行异常时，支持两种处理方式：

l reboot：直接自动重启故障的设备来进行恢复。

l maintain：保持当前状态，系统不会自动采取任何恢复措施。此时需要手工进行恢复操作。某些系统异常可能较难复现，或者异常时打印的一些提示设备重启后会丢失，此时，使用该方式可以保持异常时的状态，以便进行问题定位和修复。但该方式需要手工修复，比如手工重启。

表1-6 配置系统异常时的处理方式

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置设备系统异常时的处理方式 | system-failure { maintain | reboot } | 可选 缺省情况下，系统异常时的处理方式为 reboot

在IRF系统中，系统异常处理方式对所有成员设备生效，但是各成员设备独立处理异常，不会影响其它成员设备以及IRF的运行。


1.7 配置设备重启

当设备运行出现故障时，用户可以根据实际情况，通过重启设备来排除故障。

重启的方式有三种：

l 通过断电后重新上电立即重启设备（该方式又称为硬件重启或者冷启动）。该方式对设备影响较大，如果对运行中的设备进行强制断电，可能会造成数据丢失或者硬件损坏。一般情况下，建议不要使用这种方式。

l 通过命令行立即重启设备。

l 通过命令行定时重启设备。该方式下，用户可以设置一个时间点，让设备在该时间点自动重启，或者设置一个时延，让设备经过指定时间后自动重启。

后两种方式都属于命令行重启。命令行重启又称为热启动，主要用于远程维护时，可以远程重启设备，而不需要到设备所在地进行断电/供电重启。

l 重新启动会导致业务中断，请谨慎使用。

l 重启前请使用 save 命令保存当前配置，以免重启后配置丢失。（save 命令的详细介绍请参见“基础配置命令参考”中的“配置文件管理”）

l 重启前请使用 display startup 和 display boot-loader 命令分别确认是否设置了合适的下次启动配置文件和下次启动文件。（display startup 命令的详细介绍请参见“基础配置命令参考”中的“配置文件管理”，display boot-loader 命令的详细介绍请参见“基础配置命令参考”中的“软件升级”）

l 当多次使用 schedule reboot at 或者 schedule reboot delay 命令配置不同的重启时间时，最新的配置生效。

l 如果主用启动文件损坏或者不存在，则不能通过 reboot 命令重启设备。此时，可以通过指定新的主用启动文件再重启，或者断电后重新上电，系统将自动使用备用启动文件重启。

l 如果设备在准备重启时，用户正在进行文件操作，为了安全起见，系统将不会执行此次重启操作。

l 在Master设备上使用 reboot 命令：当指定 slot 参数时，IRF中相应编号的成员设备被重启；当不指定 slot 参数时，则会重启IRF中的所有设备。

表1-7 通过命令行立即重启设备

操作 | 命令 | 说明
立即重启指定设备或所有成员设备 | reboot [ slot slot-number ] | 必选 在IRF中，slot 参数表示重启某个成员设备，如果不输入则默认重启整个IRF 该命令在用户视图下执行

表1-8 通过命令行定时重启设备

操作 | 命令 | 说明
开启所有成员设备定时重启功能，并指定重启的具体时间和日期 | schedule reboot at hh:mm [ date ] | 二者必选其一 缺省情况下，设备定时重启功能处于关闭状态 两命令均在用户视图下执行 使用该方式配置定时重启后，又执行 clock datetime、clock summer-time 或 clock timezone 命令调整了系统时间，则定时重启配置将自动取消
开启所有成员设备的定时重启功能，并设定等待时延 | schedule reboot delay { hh:mm | mm }


1.8 配置定时执行任务功能

1.8.1 定时执行任务功能简介

定时执行任务功能是指通过配置，设备可以在指定时刻或延迟指定时长以后，自动执行一个或一组命令的功能。启用此功能以后，设备能够在无人值守的情况下完成某些操作或配置。该功能不但增强了设备的自动控制和管理能力，提高了易用性，而且可以起到有效节能的作用。

当配置了定时执行任务之后，设备每分钟遍历一次已配置的任务列表，如果发现有任务的定时时间到了，设备将自动执行该任务。

1.8.2 配置定时执行任务

配置定时执行任务有以下两种方式：

对比项 | 配置定时执行任务（方式一） | 配置定时执行任务（方式二）
配置复杂程度 | 简单 只涉及 schedule job 命令 | 复杂 涉及 job、view、time 三条命令
能否同时配置多个任务 | 不能 | 可以
同一任务中能否执行多条命令 | 不能 多次使用 schedule job 命令用来定时执行不同的命令时，最新的配置生效 | 可以 使用 time 命令可以指定在不同的时间点来执行不同的命令
支持的视图（view-name 参数的取值） | 只能是shell（表示用户视图）和system（表示系统视图） | 系统支持的所有视图，其中用monitor表示用户视图
支持的命令范围（command 参数的取值） | 只能是用户视图或系统视图下的命令 | 对应 view-name 下的任意命令
是否支持循环执行 | 不支持 | 支持
是否支持配置保存 | 不支持 | 支持

l command 表示的命令行必须是设备上可成功执行的命令行，并且要求命令行是 view-name 视图下的命令，由用户保证配置的正确性，否则，命令行不能自动被执行。

l 指定命令执行时不进行信息交互。当需要用户交互确认时，系统将自动输入“Y”或“Yes”；当需要用户交互输入字符信息时，系统将自动输入缺省字符串，没有缺省字符串的将自动输入空字符串。

l 对于切换用户操作界面的命令（如 telnet、ftp、ssh2 等）、切换视图的命令（如 system-view、quit 等）以及修改执行命令用户状态的命令（如 super 命令等），自动执行命令后当前用户的操作界面、命令视图和用户状态不变。

l 设置的时间点到达时，系统将在后台执行指定命令，不显示任何输出信息（log、trap、debug等系统信息除外）。

1. 配置定时执行任务（方式一）

表1-9 配置定时执行任务（方式一）

操作 | 命令 | 说明
在指定时间执行指定命令 | schedule job at time [ date ] view view-name command | 二者必选其一 该命令在用户视图下执行 l 多次执行 schedule job 命令时，只有最新的配置生效 l 使用该方式配置定时执行功能后，又执行 clock datetime、clock summer-time 或 clock timezone 命令调整了系统时间，则定时执行配置将自动取消
在指定延时后执行指定命令 | schedule job delay time view view-name command

2. 配置定时执行任务（方式二）

表1-10 配置定时执行任务（方式二）

操作 | 命令 | 说明
进入系统视图 | system-view | -
创建定时执行任务，并进入定时执行任务视图 | job job-name | 必选
配置执行指定命令所在的视图 | view view-name | 必选 每个定时执行任务只能指定一个视图
在指定时间点执行指定任务 | time time-id at time date command command | 二者必选其一 修改系统时间，不会影响该命令的配置和执行
 | time time-id { one-off | repeating } at time [ month-date month-day | week-day week-daylist ] command command
延迟指定时间执行指定任务 | time time-id { one-off | repeating } delay time command command

需要注意的是：

l 每个定时执行任务只能包含一个视图，该定时任务中所有命令都将在此视图下被执行。若多次执行 view 命令指定了不同的视图，则最新的配置生效。

l 视图必须是设备当前支持的视图，而且是视图的完整形式，不能使用缩写。常用的有：用户视图对应的 view-name 为monitor，系统视图对应的 view-name 为system，以太网接口视图对应的 view-name 为EthernetX/X/X或GigabitEthernetX/X/X，VLAN接口视图对应的 view-name 为Vlan-interfacex等。

l 一个定时执行任务中最多可以配置10条命令（对应10个 time-id）。如果多于10条，请把这个任务拆分为多个任务。

l time-id 在同一个任务中必须唯一。如果新执行的time at命令指定的 time-id 和已有配置的 time-id 值相同，则新配置会覆盖旧配置。


1.9 配置端口状态检测定时器

某些协议模块在特定情况下会自动关闭某个端口，比如当使能了BPDU保护功能的端口收到配置消息时，生成树模块将自动关闭该端口。此时，可以配置一个端口状态检测定时器。当定时器超时，并且该端口仍处于关闭状态，协议模块则自动取消关闭动作，使端口恢复到真实的物理状态。

表1-11 配置端口状态检测定时器

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置端口状态检测定时器的时长 | shutdown-interval time | 可选 缺省情况下，端口状态检测定时器时长为30秒


1.10 配置设备的温度告警门限

通过以下配置任务，用户可以根据实际应用的需要设置不同的温度告警门限，来监控设备上不同位置温度传感器的温度。

设备支持3个温度告警门限：低温告警门限、一般级（Warning）高温告警门限、严重级（Alarm）高温告警门限。

l 如果温度低于低温告警门限，系统会生成日志信息和告警信息提示用户，以便用户及时进行处理；

l 如果温度高于Warning高温门限，系统会生成日志信息和告警信息提示用户，以便用户及时进行处理；

l 如果温度高于Alarm高温门限，系统会反复输出日志信息和告警信息提示用户。

表1-12 配置设备的温度告警门限

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置指定成员设备的各温度告警门限 | temperature-limit slot slot-number hotspot sensor-number lowerlimit warninglimit [ alarmlimit ] | 可选 缺省情况下，设备的温度告警门限值具体请参见 表1-13 高温告警门限必须大于低温告警门限；Alarm高温告警门限必须大于Warning高温告警门限。

表1-13 设备温度告警门限缺省值

设备型号 | 传感器编号 | 低温告警值 | 一般级高温告警门限 | 严重级高温告警门限
S3600V2-28TP-SI | 1 | -10 | 71 | 76
S3600V2-28TP-EI | 1 | -10 | 70 | 75
S3600V2-52TP-SI | 1 | -10 | 71 | 77
S3600V2-52TP-EI | 1 | -10 | 71 | 77
S3600V2-28F-EI | 1 | -10 | 66 | 71
S3600V2-28TP-PWR-SI | 1 | -10 | 65 | 70
 | 2 | -10 | 112 | 132
S3600V2-28TP-PWR-EI | 1 | -10 | 65 | 70
 | 2 | -10 | 112 | 132
S3600V2-52TP-PWR-SI | 1 | -10 | 67 | 72
 | 2 | -10 | 112 | 132
S3600V2-52TP-PWR-EI | 1 | -10 | 67 | 72
 | 2 | -10 | 112 | 132


1.11 清除当前系统中不使用的16bit接口索引

NMS软件要求设备能够提供统一的16bit的接口索引，同时要求接口索引稳定，即同一设备中接口的名字与接口的索引保持一一对应的关系。

为了尽量保证接口索引的稳定性，当删除逻辑接口时，系统会保存该接口的16bit接口索引，以保证重新创建该接口时其索引值不变。

创建或者删除大批量不同类型的逻辑口，可能会耗尽接口索引，导致创建接口失败。为了避免这种情况，用户可以在用户视图下执行以下操作，清除当前系统中保存的但不使用的16bit接口索引。

执行该操作后：

l 对于重新创建的接口，接口的新的索引不能保证与原来的索引一致。

l 对于系统中已经正常存在的接口，不会引起其索引值的改变。

表1-14 清除当前系统中不使用的16bit接口索引

操作 | 命令 | 说明
清除所有成员设备当前系统中保存的但不使用的16bit索引 | reset unused porttag | 必选 该命令在用户视图下执行

执行该命令时需要得到用户的确认。若用户在30秒之内没有确认操作，或者用户输入字符“N”否定了本次操作，则本命令退出执行。


1.12 可插拔接口模块的识别与诊断

是否支持可插拔接口模块以及模块类型的支持情况与设备的型号有关，请以设备的实际情况为准。

1.12.1 识别可插拔接口模块

可以通过显示可插拔接口模块的主要特征参数或者电子标签信息来识别可插拔接口模块。

l 可插拔接口模块的主要特征参数，包括模块型号、连接器类型、发送激光的中心波长、信号的有效传输距离、模块生产厂商名称等信息。

l 电子标签信息也可以称为永久配置数据或档案信息等，在模块调测（调试、测试）过程中被写入到存储器件中，包括序列号、调测日期、模块生产厂商名称等信息。

表1-15 识别可插拔接口模块信息

操作 | 命令
显示可插拔接口模块的主要特征参数 | display transceiver interface [ interface-type interface-number ] [ | { begin | exclude | include } regular-expression ]
显示可插拔接口模块的电子标签信息 | display transceiver manuinfo interface [ interface-type interface-number ] [ | { begin | exclude | include } regular-expression ]

电子标签信息的显示与可插拔接口模块的支持情况有关，请以实际情况为准。

1.12.2 诊断可插拔接口模块

系统提供故障告警信息标志可插拔接口模块的故障来源，以便诊断和解决故障。同时，还提供了可插拔接口模块的数字诊断功能，其原理主要是对影响光模块工作的关键参数进行监控，这些关键参数包括：温度、电压、激光偏置电流、发送光功率和接收光功率等。当这些参数的值异常时，用户可以采取相应的措施，预防故障发生。

表1-16 诊断可插拔接口模块

操作 | 命令
显示可插拔接口模块的当前故障告警信息 | display transceiver alarm interface [ interface-type interface-number ] [ | { begin | exclude | include } regular-expression ]
显示可插拔接口模块的数字诊断参数的当前测量值 | display transceiver diagnosis interface [ interface-type interface-number ] [ | { begin | exclude | include } regular-expression ]

数字诊断参数的显示与可插拔接口模块的支持情况有关，请以实际情况为准。


1.13 设备管理显示和维护

在完成上述配置后，在任意视图下执行 display 命令可以显示配置后设备的运行情况，通过查看显示信息验证配置的效果。

表1-17 设备管理显示和维护

操作 | 命令
显示系统版本信息 | display version [ | { begin | exclude | include } regular-expression ]
显示系统当前的时间和日期 | display clock [ | { begin | exclude | include } regular-expression ]
显示或保存系统当前多个功能模块运行的统计信息 | display diagnostic-information [ | { begin | exclude | include } regular-expression ]
显示设备的告警信息 | display alarm [ slot slot-number ] [ | { begin | exclude | include } regular-expression ]
显示CPU占用率的统计信息 | display cpu-usage [ slot slot-number [ cpu cpu-number ] ] [ | { begin | exclude | include } regular-expression ] display cpu-usage entry-number [ offset ] [ verbose ] [ slot slot-number [ cpu cpu-number ] ] [ | { begin | exclude | include } regular-expression ]
以图形方式显示CPU占用率统计历史信息 | display cpu-usage history [ task task-id ] [ slot slot-number [ cpu cpu-number ] ] [ | { begin | exclude | include } regular-expression ]
显示设备的硬件信息 | display device [ [ slot slot-number ] | verbose ] [ | { begin | exclude | include } regular-expression ]
显示设备的电子标签信息 | display device manuinfo [ [ slot slot-number ] ] [ | { begin | exclude | include } regular-expression ]
显示设备的温度信息 | display environment [ slot slot-number ] [ | { begin | exclude | include } regular-expression ]
显示设备风扇模块的工作状态 | display fan [ slot slot-number [ fan-id ] ] [ | { begin | exclude | include } regular-expression ]
显示设备的内存使用状态 | display memory [ slot slot-number [ cpu cpu-number ] ] [ | { begin | exclude | include } regular-expression ]
显示设备的电源状态 | display power [ slot slot-number [ power-id ] ] [ | { begin | exclude | include } regular-expression ]
显示设备的启动方式 | display reboot-type [ slot slot-number ] [ | { begin | exclude | include } regular-expression ]
查看定时执行功能的具体配置（针对 schedule job 配置方式） | display schedule job [ | { begin | exclude | include } regular-expression ]
显示设备的重启时间 | display schedule reboot [ | { begin | exclude | include } regular-expression ]
查看定时执行功能的具体配置（针对 job 配置方式） | display job [ job-name ] [ | { begin | exclude | include } regular-expression ]
显示异常情况下系统的处理方式 | display system-failure [ | { begin | exclude | include } regular-expression ]
显示Master软件（即系统启动文件）版本更新操作的记录 | display version-update-record [ | { begin | exclude | include } regular-expression ]
清除Master软件版本更新操作的记录 | reset version-update-record

在日常维护或系统出现故障时，为了便于问题定位，用户需要查看各个功能模块的运行信息。因为各个功能模块都有其对应的运行信息，所以一般情况下，用户需要逐条运行相应的 display 命令。为便于一次性收集更多信息，用户可以在任意视图下执行 display diagnostic-information命令，显示或保存系统当前多个功能模块运行的统计信息。display diagnostic-information命令一次性收集的信息等效于依次执行 display clock、display version、display device、display current-configuration 等命令后终端显示的信息。


1 自动配置

相关链接

  • 1.1 自动配置简介
  • 1.2 自动配置的典型组网环境
  • 1.3 自动配置的工作过程
父主题： 09-自动配置


1.1 自动配置简介

自动配置功能是指在设备空配置启动时自动获取并执行配置文件的功能。

自动配置功能简化了网络配置，便于实现对设备的集中管理。目前，企业网面临着这样的问题：设备分布广，维护人员少，网络管理员在每一台设备上进行手工配置的代价巨大。利用自动配置功能，网络管理员只需将配置文件保存在指定的服务器上，设备在空配置启动时可以自动从服务器上获取并执行配置文件，实现自动配置，从而大大降低了网络管理员的工作量。


1.2 自动配置的典型组网环境

图1-1 自动配置典型组网图

自动配置的典型组网环境如 图1-1 所示。设备需要在DHCP服务器、TFTP服务器和DNS服务器的配合下，实现自动配置：

l DHCP服务器：用来为执行自动配置的设备分配IP地址、配置文件名、TFTP服务器IP地址、DNS服务器IP地址等信息。

l TFTP服务器：用来保存自动配置过程中设备需要的文件。设备从TFTP服务器获取所需的文件，如保存主机IP地址和主机名映射关系的主机名文件、设备的配置文件等。

l DNS服务器：用来提供IP地址和主机名的对应关系。执行自动配置的设备可以通过DNS服务器将自己的IP地址解析为主机名，以便从TFTP服务器获取名为“主机名.cfg”的配置文件；如果设备从DHCP应答报文中获取到TFTP服务器的域名，设备还可以通过DNS域名服务器将TFTP服务器的域名解析为TFTP服务器的IP地址。

如果DHCP服务器、TFTP服务器和DNS服务器与执行自动配置的设备不在同一个网段，还需要在网关设备上配置DHCP中继，并配置路由协议，使得各个服务器和设备之间路由可达。


1.3 自动配置的工作过程

自动配置的基本工作过程如下：

(1) 设备在空配置启动时，系统会自动将处于up状态的第一个接口（如果存在处于up状态的二层以太网接口，则为缺省VLAN对应的虚接口，否则为处于up状态的接口编号最小的三层以太网接口）配置为通过DHCP方式获得IP地址及后续获取配置文件所需要的信息（例如：配置文件名、TFTP服务器的域名、TFTP服务器的IP地址、DNS服务器IP地址等信息）。

(2) 如果设备成功地从DHCP服务器获取到IP地址及配置文件名等相关信息，则发起TFTP请求，从指定的TFTP服务器获取配置文件。如果设备没有获取到相关信息，则在空配置文件的情况下正常启动。

l 自动配置功能在空配置启动的设备上不需要进行任何配置，但若要成功获得配置文件，则需在DHCP服务器、DNS服务器和TFTP服务器上配置一些必需的参数。

l 如需使用自动配置功能，建议在设备开启前，只将自动配置时需要使用的接口连入网络。

1.3.1 自动配置流程图

自动配置的流程如 图1-2 所示。

图1-2 自动配置流程图

1.3.2 通过DHCP获取IP地址及相关信息

1. IP地址获取过程

设备在空配置启动时，系统会自动将处于up状态的第一个接口（如果存在处于up状态的二层以太网接口，则为缺省VLAN对应的虚接口，否则为处于up状态的接口编号最小的三层以太网接口）配置为通过DHCP方式获得IP地址，设备通过该接口以广播方式发送DHCP请求报文。DHCP请求报文中的Option 55选项指明设备需要从DHCP服务器获得哪些信息（如获取自动配置文件需要的配置文件名、TFTP服务器域名、TFTP服务器IP地址、DNS服务器IP地址等信息）。

经过DHCP请求成功获取到IP地址后，设备将解析DHCP服务器应答报文中的如下字段：

l Option 67或file字段：用来获取配置文件名。设备首先解析Option 67，如果该选项包括配置文件名信息，则不再解析file字段；否则，继续解析file字段。

l Option 66：用来获取TFTP服务器域名。

l Option 150：用来获取TFTP服务器IP地址。

l Option 6：用来获取DNS服务器IP地址。

如果获取IP地址失败，则设备删除临时配置，在空配置文件的情况下启动。

l 临时配置是指设备空配置启动时在执行自动配置的接口上进行的配置，以及执行的主机名文件中的 ip host 命令（ip host 命令的具体介绍请参见“三层技术-IP业务命令参考”中的“IPv4域名解析”）。删除临时配置就是按照相反顺序执行 undo 命令，取消临时配置。

l DHCP的详细工作过程请参见“三层技术-IP业务配置指导”中的“DHCP概述”。

2. DHCP服务器上地址池的选择

DHCP服务器从地址池中选择为客户端分配的IP地址和其他网络配置参数。DHCP的地址池分为两类：

l 动态分配的地址池：该类地址池中包括可供分配的IP地址范围，DHCP服务器从中选取IP地址分配给客户端，同时为客户端分配该地址池中其他的网络配置参数。

l 静态绑定的地址池：通过将客户端的IP地址与客户端的MAC地址或客户端ID绑定，保证为特定的客户端分配固定的IP地址和其他网络配置参数。

用户可以根据自动配置功能的需要，在DHCP服务器上选择相应类型的地址池：

l 不同设备的配置文件都相同时，可以在DHCP服务器上配置动态分配的地址池，通过该地址池为设备动态分配IP地址的同时，还为这些设备分配一样的网络配置参数（如配置文件名）。如果采用这种方式，则配置文件中只能包含这些设备共有的配置，每个设备特有的配置还需要采用其他方式完成。例如，通过自动配置获取的配置文件中指定在设备上开启Telnet服务，并创建本地用户，以便管理员通过Telnet方式登录各个设备，完成对每个设备特有的配置（如配置各个接口的IP地址）。

l 每个设备的配置文件都不相同时，需要在DHCP服务器上配置静态绑定的地址池，以保证为特定的客户端分配固定的IP地址和其他网络配置参数。通过这种方式可以为每个设备指定不同的配置命令，实现对设备的完全配置，无需再通过其他方式配置设备。

配置静态绑定的地址池时需要指定静态绑定的客户端ID（设备作为DHCP客户端时，采用客户端ID作为标识），因此需要首先通过下面的方法获取客户端ID：启动执行自动配置的设备，使执行自动配置的接口通过DHCP获取IP地址，IP地址获取成功后，在DHCP服务器上通过 display dhcp server ip-in-use 命令显示地址绑定信息，从中可以获取设备的客户端ID。

1.3.3 从TFTP服务器上获取配置文件

1. 文件类型

设备通过自动配置功能从TFTP服务器上获取的文件可以是：

l DHCP应答报文中Option 67或file字段指定的配置文件。

l 主机名文件，文件名为“network.cfg”。主机名文件用来保存主机IP地址与主机名称的映射关系。主机IP地址与主机名称的映射关系使用以下格式进行定义：

ip host hostname ip-address

例如，主机名文件可以包括如下内容：

ip host host1 101.101.101.101

ip host host2 101.101.101.102

ip host client1 101.101.101.103

ip host client2 101.101.101.104

l ip host 关键字前必须包括一个空格。

l 主机名文件中保存的主机名称是用户为了更好地管理自动配置而设定的，需要与主机的配置文件名保持一致。该主机名称区别于DNS服务器中记录的主机名称，两者可以相同，也可以不相同。

l 设备的主机名对应的配置文件，文件名为“主机名.cfg”。例如，设备的主机名为aaa，则此配置文件名为“aaa.cfg”。

l 默认配置文件，文件名为“device.cfg”。

2. 获取配置文件

图1-3 配置文件获取过程

如 图1-3 所示，设备根据对DHCP应答报文中配置文件名信息的解析结果，确定从TFTP服务器上获取哪个配置文件：

l 如果应答报文中包括配置文件名信息，则向TFTP服务器请求指定的配置文件；

l 如果应答报文中不包括配置文件名信息，则需要先获得设备的主机名，再向TFTP服务器请求与主机名对应的配置文件。设备通过如下方式获得主机名：从TFTP服务器上获取主机名文件，在主机名文件中查找设备的IP地址对应的主机名；如果在主机名文件中没有找到设备的主机名，则通过DNS服务器获得设备IP地址对应的主机名；

l 如果获取指定的配置文件、设备主机名解析或获取主机名对应的配置文件失败，则向TFTP服务器请求默认的配置文件。

3. TFTP请求消息发送方式

设备根据对DHCP应答报文中TFTP服务器域名和TFTP服务器IP地址信息的解析结果，选择TFTP请求消息的发送方式：

l 如果应答报文中包括TFTP服务器IP地址信息，且IP地址值合法，设备将以单播方式向TFTP服务器发送请求消息，并不再解析TFTP服务器的域名信息。否则，继续解析应答报文中的TFTP服务器域名信息；

l 如果应答报文中包括TFTP服务器的域名信息，且域名合法，则通过DNS服务器解析TFTP服务器的IP地址。IP地址解析成功后，以单播方式向TFTP服务器发送请求消息。如果IP地址解析不成功，则以广播方式向TFTP服务器发送请求消息；

l 如果应答报文中不包括TFTP服务器IP地址和域名信息，或TFTP服务器IP地址和域名信息不合法，设备将以广播方式向TFTP服务器发送请求消息。

l 以广播方式发送TFTP请求消息时，设备只会从第一个响应的TFTP服务器获取配置文件，如果该服务器上没有需要的配置文件，配置文件获取失败，设备将删除临时配置，在空配置文件的情况下正常启动。

l 以广播方式向TFTP服务器发送请求消息时，由于广播报文只能在本网段内传播，如果执行自动配置设备与TFTP服务器不在同一个网段，则需要在网关设备上配置UDP Helper功能，将广播报文转换为单播报文，转发给指定的TFTP服务器。有关UDP Helper功能的详细介绍，请参见“三层技术-IP业务配置指导”中的“UDP Helper”。

1.3.4 执行配置文件

成功获得配置文件后，设备将删除临时配置，执行获取到的配置文件。如果获取配置文件失败，设备将删除临时配置，在空配置文件的情况下正常启动。

l 通过自动配置获取到的配置文件执行完成后，该文件将被删除，不会在设备上保存。建议配置文件执行完成后，在设备上通过 save 命令保存配置，否则，设备重启后还需重新执行自动配置功能。save 命令的详细介绍请参见“基础配置命令参考”中的“配置文件管理”。

l 如果配置文件中含有IRF相关配置的内容，设备在执行配置文件时，并不会执行这些内容。


00-前言

前 言

H3C S3600V2系列以太网交换机配置指导共分为十本手册，介绍了S3600V2系列以太网交换机各软件特性的原理及其配置方法，包含原理简介、配置任务描述和配置举例。《IRF配置指导》主要介绍如何使用多台S3600V2交换机组建基于IRF技术的虚拟化设备，包括规划IRF中设备的角色、IRF链路连接、以及IRF形成后的检测和维护等内容。

前言部分包含如下内容：

l 读者对象

l 本书约定

l 产品配套资料

l 资料获取方式

l 技术支持

l 资料意见反馈

读者对象

本手册主要适用于如下工程师：

l 网络规划人员

l 现场技术支持与维护人员

l 负责网络配置和维护的网络管理员

本书约定

1.命令行格式约定

格 式 | 意 义
粗体 | 命令行关键字（命令中保持不变、必须照输的部分）采用加粗字体表示。
斜体 | 命令行参数（命令中必须由实际值进行替代的部分）采用斜体表示。
[ ] | 表示用“[ ]”括起来的部分在命令配置时是可选的。
{ x | y | ... } | 表示从两个或多个选项中选取一个。
[ x | y | ... ] | 表示从两个或多个选项中选取一个或者不选。
{ x | y | ... } * | 表示从两个或多个选项中选取多个，最少选取一个，最多选取所有选项。
[ x | y | ... ] * | 表示从两个或多个选项中选取多个或者不选。
&<1-n> | 表示符号&前面的参数可以重复输入1～n次。
# | 由“#”号开始的行表示为注释行。

2.图形界面格式约定

格 式 | 意 义
< > | 带尖括号“< >”表示按钮名，如“单击<确定>按钮”。
[ ] | 带方括号“[ ]”表示窗口名、菜单名和数据表，如“弹出[新建用户]窗口”。
/ | 多级菜单用“/”隔开。如[文件/新建/文件夹]多级菜单表示[文件]菜单下的[新建]子菜单下的[文件夹]菜单项。

3.各类标志

本书还采用各种醒目标志来表示在操作过程中应该特别注意的地方，这些标志的意义如下：

该标志后的注释需给予格外关注，不当的操作可能会对人身造成伤害。

提醒操作中应注意的事项，不当的操作可能会导致数据丢失或者设备损坏。

为确保设备配置成功或者正常工作而需要特别关注的操作或信息。

对操作内容的描述进行必要的补充和说明。

配置、操作、或使用设备的技巧、小窍门。

4.图标约定

本书使用的图标及其含义如下：

该图标及其相关描述文字代表一般网络设备，如路由器、交换机、防火墙等。

该图标及其相关描述文字代表一般意义下的路由器，以及其他运行了路由协议的设备。

该图标及其相关描述文字代表二、三层以太网交换机，以及运行了二层协议的设备。

产品配套资料

H3C S3600V2系列以太网交换机的配套资料包括如下部分：

大类 | 资料名称 | 内容介绍
产品知识介绍 | 产品彩页 | 帮助您了解产品的主要规格参数及亮点
 | RPS电源用户手册 | 帮助您了解产品支持的RPS电源的外观、功能、规格
 | H3C低端系列以太网交换机RPS电源选购指南 | 帮助您了解各种RPS电源适用的交换机产品型号及RPS电源配套电缆的相关规格
 | H3C低端系列以太网交换机可插拔模块手册 | 帮助您了解产品支持的可插拔模块类型、外观和规格
设备安装 | 安全兼容性手册 | 列出产品的兼容性声明，并对兼容性和安全的细节进行说明
 | H3C 设备防雷安装指导手册 | 帮助您了解防雷接地设计和工程安装方法，以保证交换机具有良好的抗雷击性能
 | 快速安装指南 | 指导您对设备进行初始安装，通常针对最常用的情况，减少您的检索时间
 | 安装指导 | 帮助您详细了解设备硬件规格和安装方法，指导您对设备进行安装
 | H3C可插拔SFP[SFP+][XFP]模块安装指南 | 帮助您掌握SFP/SFP+/XFP模块的正确安装方法，避免因操作不当而造成器件损坏
业务配置 | 配置指导 | 帮助您掌握设备软件功能的配置方法及配置步骤
 | 命令参考 | 详细介绍设备的命令，相当于命令字典，方便您查阅各个命令的功能
运行维护 | H3C系列以太网交换机登录密码恢复手册 | 指导您在设备登录密码丢失的情况下，找回密码、或重新配置登录密码
 | 故障处理手册 | 指导您快速定位并处理软件故障
 | 版本说明书 | 帮助您了解产品版本的相关信息（包括：版本配套说明、兼容性说明、特性变更说明、技术支持信息）及软件升级方法

资料获取方式

您可以通过H3C网站（ www.h3c.com.cn ）获取最新的产品资料：

H3C网站与产品资料相关的主要栏目介绍如下：

l [服务支持/文档中心] ：可以获取硬件安装类、软件升级类、配置类或维护类等产品资料。

l [产品技术] ：可以获取产品介绍和技术介绍的文档，包括产品相关介绍、技术介绍、技术白皮书等。

l [解决方案] ：可以获取解决方案类资料。

l [服务支持/软件下载] ：可以获取与软件版本配套的资料。

技术支持

用户支持邮箱：customer_service@h3c.com

技术支持热线电话：400-810-0504（手机、固话均可拨打）

网址： http://www.h3c.com.cn

资料意见反馈

如果您在使用过程中发现产品资料的任何问题，可以通过以下方式反馈：

E-mail：info@h3c.com

感谢您的反馈，让我们做得更好！


1 IRF配置

l S3600V2-EI系列交换机和S3600V2-SI系列交换机只能与本系列内的设备建立IRF，这两个系列的设备之间无法建立IRF。

l 本章中提到的三层以太网端口是指被配置为三层模式以太网端口，有关以太网端口模式切换的操作，请参见“二层技术-以太网交换配置指导”中的“以太网端口”

相关链接

  • 1.1 IRF简介
  • 1.2 IRF基本概念
  • 1.3 IRF工作原理
  • 1.4 IRF配置任务简介
  • 1.5 IRF配置
  • 1.6 MAD配置
  • 1.7 访问IRF
  • 1.8 IRF显示和维护
  • 1.9 IRF典型配置举例

父主题： 01-IRF配置


1.1 IRF简介

1.1.1 IRF概述

IRF（Intelligent Resilient Framework，智能弹性架构）是H3C自主研发的软件虚拟化技术。它的核心思想是将多台设备通过IRF物理端口连接在一起，进行必要的配置后，虚拟化成一台“分布式设备”。使用这种虚拟化技术可以集合多台设备的硬件资源和软件处理能力，实现多台设备的协同工作、统一管理和不间断维护。

为了便于描述，这个“虚拟设备”也称为IRF。所以，本文中的IRF有两层意思，一个是指IRF技术，一个是指IRF设备。

1.1.2 IRF的优点

IRF主要具有以下优点：

l 简化管理。IRF形成之后，用户通过任意成员设备的任意端口都可以登录IRF系统，对IRF内所有成员设备进行统一管理。

l 高可靠性。IRF的高可靠性体现在多个方面，例如：IRF由多台成员设备组成，Master设备负责IRF的运行、管理和维护，Slave设备在作为备份的同时也可以处理业务。一旦Master设备故障，系统会迅速自动选举新的Master，以保证业务不中断，从而实现了设备的1:N备份；此外，成员设备之间的IRF链路支持聚合功能，IRF和上、下层设备之间的物理链路也支持聚合功能，多条链路之间可以互为备份也可以进行负载分担，从而进一步提高了IRF的可靠性。

l 强大的网络扩展能力。通过增加成员设备，可以轻松自如的扩展IRF的端口数、带宽。因为各成员设备都有CPU，能够独立处理协议报文、进行报文转发，所以IRF还能够轻松自如的扩展处理能力。

1.1.3 IRF的应用

如 图1-1 所示，Master和Slave组成IRF，对上、下层设备来说，它们就是一台设备——IRF。

图1-1 IRF组网应用示意图


1.2 IRF基本概念

IRF虚拟化技术涉及如下基本概念：

1. 角色

IRF中每台设备都称为成员设备。成员设备按照功能不同，分为两种角色：

l Master：负责管理整个IRF。

l Slave：作为Master的备份设备运行。当Master故障时，系统会自动从Slave中选举一个新的Master接替原Master工作。

Master和Slave均由角色选举产生。一个IRF中同时只能存在一台Master，其它成员设备都是Slave。关于设备角色选举过程的详细介绍请参见 1.3.3 角色选举 。

2. IRF端口

一种专用于IRF的逻辑接口，分为IRF-Port1和IRF-Port2。它需要和物理端口绑定之后才能生效。

3. IRF物理端口

设备上可以用于IRF连接的物理端口。S3600V2系列交换机可以使用千兆以太网口或千兆SFP口作为IRF物理端口。通常情况下，接口用于传输业务报文，当它们与IRF端口绑定后就作为IRF物理端口，用于成员设备之间转发报文。可转发的报文包括IRF相关协商报文以及需要跨成员设备转发的业务报文。

4. IRF合并

如 图1-2 所示，两个IRF各自已经稳定运行，通过物理连接和必要的配置，形成一个IRF，这个过程称为IRF合并（merge）。

图1-2 IRF合并示意图

5. IRF分裂

如 图1-3 所示，一个IRF形成后，由于IRF链路故障，导致IRF中两相邻成员设备物理上不连通，一个IRF变成两个IRF，这个过程称为IRF分裂（split）。

图1-3 IRF分裂示意图

6. 成员优先级

成员优先级是成员设备的一个属性，主要用于角色选举过程中确定成员设备的角色。优先级越高当选为Master的可能性越大。

设备的缺省优先级均为1，如果想让某台设备当选为Master，则在组建IRF前，可以通过命令行手工提高该设备的成员优先级。


1.3 IRF工作原理

IRF系统将经历 物理连接 、 拓扑收集 、 角色选举 、 IRF的管理与维护 四个阶段。成员设备之间需要先建立IRF物理连接，然后会自动进行拓扑收集和角色选举，完成IRF的建立，此后进入IRF管理和维护阶段。

1.3.1 物理连接

1. 连接介质

要形成一个IRF，需要先连接成员设备的IRF物理端口。S3600V2系列交换机使用千兆以太网口或SFP接口作为IRF物理端口，通过千兆以太网线缆、SFP堆叠模块或SFP模块和光纤在成员设备间进行连接。

千兆以太网线缆、SFP模块与光纤的搭配适用于在距离很远的设备间进行IRF连接，使得应用更加灵活；而SFP堆叠模块适用于机房内部短距离的IRF连接。

l S3600V2系列交换机支持的SFP模块请参见《H3C S3600V2系列以太网交换机 安装指导》。

l 有关各接口模块的详细介绍，请参见《H3C低端系列以太网交换机 可插拔模块手册》。

l H3C SFP模块和SFP电缆的种类随着时间变化有更新的可能性，所以，若您需要准确的模块种类信息，请咨询H3C公司市场人员或技术支援人员。

2. 连接要求

IRF端口的连接是基于IRF物理端口的连接而建立的，因此需要将IRF端口和IRF物理端口对应起来，即将IRF端口和IRF物理端口进行绑定。一个IRF端口可以对应一个IRF物理端口，也可以通过对应多个IRF物理端口来实现聚合IRF端口，以达到链路备份和扩展带宽的效果。

S3600V2系列交换机最多支持将2个IRF物理端口与同一个IRF端口进行绑定，实现聚合IRF端口。需要注意的是，在配置聚合IRF端口时，对于S3600V2-52TP-SI、S3600V2-52TP-EI、S3600V2-52TP-PWR-SI、S3600V2-52TP-PWR-EI设备，需要将GigabitEthernet1/0/49和GigabitEthernet1/0/50绑定到同一个IRF端口，将GigabitEthernet1/0/51和GigabitEthernet1/0/52绑定到另一个IRF端口。而对于S3600V2系列中的其他型号设备，则无此限制，可以任意选择两个端口进行绑定。

在进行成员设备的连接时，本设备上与IRF-Port1绑定的IRF物理端口只能和邻居成员设备IRF-Port2口上绑定的IRF物理端口相连，本设备上与IRF-Port2口绑定的IRF物理端口只能和邻居成员设备IRF-Port1口上绑定的IRF物理端口相连，如 图1-4 所示。否则，不能形成IRF。

图1-4 IRF物理连接示意图

3. 连接拓扑

IRF的连接拓扑有两种：链形连接和环形连接，如 图1-5 所示。

l 相比环形连接，链形连接对成员设备的物理位置要求更低，主要用于成员设备物理位置分散的组网。

l 环形连接比链形连接更可靠。因为当链形连接中出现链路故障时，会引起IRF分裂；而环形连接中某条链路故障时，会形成链形连接，IRF的业务不会受到影响。

图1-5 IRF连接拓扑示意图

1.3.2 拓扑收集

每个成员设备和邻居成员设备通过交互IRF Hello报文来收集整个IRF的拓扑。IRF Hello报文会携带拓扑信息，具体包括IRF端口连接关系、成员设备编号、成员设备优先级、成员设备的桥MAC等内容。

每个成员设备在本地记录自己已知的拓扑信息。设备刚启动时只记录了自身的拓扑信息。当IRF端口状态变为up后，设备会将已知的拓扑信息周期性的从up状态的IRF端口发送出去；直接邻居收到该信息后，会更新本地记录的拓扑信息；如此往复，经过一段时间的收集，所有成员设备都会收集到完整的拓扑信息（称为拓扑收敛）。

此时会进入角色选举阶段。

1.3.3 角色选举

确定成员设备角色为Master或Slave的过程称为角色选举。

角色选举会在拓扑变更的情况下产生，比如IRF建立、新设备加入、Master设备离开或者故障、两个IRF合并等。角色选举规则如下：

(1) 当前Master优先（IRF系统形成时，没有Master设备，所有加入的设备都认为自己是Master，会跳转到第二条规则继续比较）；

(2) 成员优先级大的优先；

(3) 系统运行时间长的优先（各设备的系统运行时间信息也是通过IRF Hello报文来传递的）；

(4) 桥MAC地址小的优先。

从第一条开始判断，如果判断的结果是多个最优，则继续判断下一条，直到找到唯一最优的成员设备才停止比较。此最优成员设备即为Master，其它成员设备则均为Slave。

在角色选举完成后，IRF形成，进入IRF管理与维护阶段。

l IRF合并的情况下，两个IRF会进行IRF竞选，竞选仍然遵循角色选举的规则，竞选完成后，失败一方将自动重新启动，然后全部作为Slave设备加入竞选获胜的一方，最终合并为一个IRF。

l 不管设备与其它设备一起形成IRF，还是加入已有IRF，如果该设备被当选为Slave，则该设备会使用Master的配置重新初始化和启动，以保证和Master上的配置一致，而不管该设备在重新初始化之前有哪些配置、是否保存了当前配置。

1.3.4 IRF的管理与维护

角色选举完成之后，IRF形成，所有的成员设备组成一台虚拟设备存在于网络中，所有成员设备上的资源归该虚拟设备拥有并由Master统一管理。

1. 成员编号

在运行过程中，IRF系统使用成员编号（Member ID）来标志和管理成员设备，并在端口编号和文件系统中引入成员编号的标识信息。该编号关系到整个IRF的管理和运行，因此，需要用户在设备加入IRF前统一规划、配置设备的成员编号，以保证IRF中成员编号的唯一性。

2. 接口命名规则

对于单独运行的设备（即没有加入任何IRF），接口编号采用设备编号/子槽位编号/接口序号的格式，其中：

l 缺省情况下，设备编号为1。

l 如果设备曾经加入过IRF，则在退出IRF后，仍然会使用在IRF中时的成员编号作为自身的设备编号。

l 子槽位编号：接口所在子槽位的编号。对于S3600V2系列交换机，所有端口的子槽位编号均为0。

l 接口序号与各型号交换机支持的接口数量相关，请查看设备接口板上的丝印。

比如，要将单独运行的设备Sysname的接口Ethernet1/0/1的接口链路类型设置为Trunk，可参照以下步骤：

<Sysname> system-view

[Sysname] interface ethernet 1/0/1

[Sysname-Ethernet1/0/1] port link-type trunk

对于IRF中的成员设备，接口编号仍然采用成员设备编号/子槽位编号/接口序号的格式，其中：

l 成员设备编号用来标志不同成员设备上的接口。

l 子槽位编号和接口序号的含义和取值与单独运行时的一样。

比如，要将IRF中的成员设备Slave3（成员编号为3）子槽位0上第一个端口的链路类型设置为Trunk，可参照以下步骤：

<Sysname> system-view

[Sysname] interface ethernet 3/0/1

[Sysname-Ethernet3/0/1] port link-type trunk

3. 文件系统命名规则

对于单独运行的设备，直接使用存储介质的名称就可以访问设备的文件系统了（存储介质的命名请参见“基础配置指导”中的“文件系统管理配置”）。

对于IRF中的成员设备，直接使用存储介质的名称可以访问Master设备的文件系统，使用“slotMember-ID#存储介质的名称”才可以访问Slave设备的文件系统。

比如：

(1) 创建并访问IRF中Master设备存储介质Flash根目录下的test文件夹，可参照以下步骤：

<Master> mkdir test

...

%Created dir flash:/test.

<Master> dir

Directory of flash:/

0 -rw- 10105088 Apr 26 2000 13:44:57 test.bin

1 -rw- 2445 Apr 26 2000 15:18:19 config.cfg

2 drw- - Jul 14 2008 15:20:35 test

126592 KB total (20961 KB free)

(2) 创建并访问IRF中Slave设备（成员编号为3）存储介质Flash根目录下的test文件夹，可参照以下步骤：

<Master> mkdir slot3#flash:/test

%Created dir slot3#flash:/test.

<Master> cd slot3#flash:/test

<Master> pwd

slot3#flash:/test

或者：

<Master> cd slot3#flash:/

<Master> mkdir test

%Created dir slot3#flash:/test.

(3) 将Master的test.bin文件拷贝到Slave3 Flash的根目录下，可参照以下步骤：

<Master> pwd

slot3#flash:

// 以上显示信息表明，当前的工作路径是Slave3 Flash的根目录

<Master> cd flash:/

<Master> pwd

flash:

// 以上操作表明，当前的工作路径已经回到了Master Flash的根目录

<Master> copy test.bin slot3#flash:/

Copy flash:/test.bin to slot3#flash:/test.bin?[Y/N]:y

%Copy file flash:/test.bin to slot3#flash:/test.bin...Done.

4. 配置文件的同步

IRF技术使用了严格的配置文件同步机制，来保证IRF中的多台设备能够像一台设备一样在网络中工作，并且在Master设备出现故障之后，其余设备仍能够正常执行各项功能。

l IRF中的Slave设备在启动时，会自动寻找Master设备，并将Master设备的当前配置文件同步到本地并执行；如果IRF中的所有设备同时启动，则Slave设备会将Master设备的起始配置文件同步至本地并执行。

l 在IRF正常工作后，用户所进行的任何配置，都会记录到Master设备的当前配置文件中，并同步到IRF中的各个设备；用户在执行 save 命令将Master设备的当前配置文件保存为起始配置文件时，其它Slave设备均同步进行保存工作，以便使IRF中所有设备的起始配置文件保持统一。

通过即时的同步，IRF中所有设备均保存有相同的配置文件，即使Master设备出现故障，其它设备仍能够按照相同的配置文件执行各项功能。

5. IRF拓扑维护

如果某成员设备A down或者IRF链路down，其邻居设备会立即将“成员设备A离开”的信息广播通知给IRF中的其它设备。获取到离开消息的成员设备会根据本地维护的IRF拓扑信息表来判断离开的是Master还是Slave，如果离开的是Master，则触发新的角色选举，再更新本地的IRF拓扑；如果离开的是Slave，则直接更新本地的IRF拓扑，以保证IRF拓扑能迅速收敛。

IRF端口的状态由与它绑定的IRF物理端口的状态决定。与IRF端口绑定的所有IRF物理端口状态均为down时，IRF端口的状态才会变成down。

1.3.5 多IRF冲突检测（MAD功能）

IRF链路故障会导致一个IRF变成两个新的IRF。这两个IRF拥有相同的IP地址等三层配置，会引起地址冲突，导致故障在网络中扩大。为了提高系统的可用性，当IRF分裂时我们就需要一种机制，能够检测出网络中同时存在多个IRF，并进行相应的处理尽量降低IRF分裂对业务的影响。MAD（Multi-Active Detection，多Active检测）就是这样一种检测和处理机制。它主要提供以下功能：

(1) 分裂检测

通过LACP（Link Aggregation Control Protocol，链路聚合控制协议）、BFD（Bidirectional Forwarding Detection，双向转发检测）或者免费ARP（Gratuitous Address Resolution Protocol）来检测网络中是否存在多个IRF。

(2) 冲突处理

IRF分裂后，通过分裂检测机制IRF会检测到网络中存在其它处于Active状态（表示IRF处于正常工作状态）的IRF。冲突处理会让Master成员编号最小的IRF继续正常工作（维持Active状态），其它IRF会迁移到Recovery状态（表示IRF处于禁用状态），并关闭Recovery状态IRF中所有成员设备上除保留端口以外的其它所有物理端口（通常为业务接口），以保证该IRF不能再转发业务报文。（缺省情况下，只有IRF物理端口是保留端口，如果要将其它端口，比如用于远程登录的端口，也作为保留端口，需要使用命令行进行手工配置。）

(3) MAD故障恢复

IRF链路故障导致IRF分裂，从而引起多Active冲突。因此修复故障的IRF链路，让冲突的IRF重新合并为一个IRF，就能恢复MAD故障。如果在MAD故障恢复前，处于Recovery状态的IRF也出现了故障，则需要将故障IRF和故障链路都修复后，才能让冲突的IRF重新合并为一个IRF，恢复MAD故障；如果在MAD故障恢复前，故障的是Active状态的IRF，则可以通过命令行先启用Recovery状态的IRF，让它接替原IRF工作，以便保证业务尽量少受影响，再恢复MAD故障。

l IRF分裂后，竞选失败的IRF会自动关闭所有成员设备上的部分端口（等效于在接口下执行 shutdown 命令），但有些端口不会被自动关闭，这些端口称为保留端口。缺省情况下，只有IRF物理端口是保留端口，如果要将其它端口（比如用于远程登录的端口）也作为保留端口，需要使用命令行进行手工配置。

l 关于LACP的详细介绍请参见“二层技术-以太网交换配置指导”中的“以太网链路聚合”；关于BFD的详细介绍请参见“可靠性配置指导”中的“BFD”；关于免费ARP的详细介绍请参见“三层技术-IP业务配置指导”中的“免费ARP”。


1.4 IRF配置任务简介

用户配置IRF前，要做好前期规划工作，需要明确IRF内各成员设备的角色和功能。因为有些参数的配置需要重启设备才能生效，所以建议用户按照下面的流程进行配置。

图1-6 IRF配置流程图

用户也可以在激活IRF端口配置后再进行IRF物理连接，当设备检测到IRF端口正常连接后，将立刻开始角色选举，选举为Slave的设备将自动重启。

在IRF形成后，用户通过IRF中的任意一台设备进行登录，均可以对IRF系统进行配置和管理。

表1-1 IRF配置任务简介

配置任务 |  | 说明 | 详细配置
配置IRF域编号 |  | 可选 | 1.5.1
配置成员编号 |  | 必选 | 1.5.2
配置IRF端口 |  | 必选 | 1.5.3
配置成员优先级 |  | 可选 | 1.5.4
配置成员设备的描述信息 |  | 可选 | 1.5.5
配置IRF链路的负载分担类型 |  | 可选 | 1.5.6
配置IRF的桥MAC保留时间 |  | 可选 | 1.5.6
使能IRF系统启动文件的自动加载功能 |  | 可选 | 1.5.8
配置IRF链路down延迟上报功能 |  | 可选 | 1.5.9
连接IRF物理端口，确保IRF链路是连通的（推荐使用环形连接）
MAD配置 | LACP MAD检测 | 选择其中一种方式，也可以多选 建议用户在IRF建立完成后配置MAD检测功能 | 1.6.1
 | BFD MAD检测 |  | 1.6.2
 | ARP MAD检测 |  | 1.6.3
 | 配置保留接口 | 可选 | 1.6.4
 | MAD故障恢复 | 可选 | 1.6.5
访问IRF | 访问Master | 必选 | 1.7.1
 | 访问Slave | 可选 | 1.7.2


1.5 IRF配置

1.5.1 配置IRF域编号

1. IRF域简介

域是一个逻辑概念，设备通过IRF链路连接在一起就组成一个IRF，这些成员设备的集合就是一个IRF域。

为了适应各种组网应用，同一个网络里可以部署多个IRF，IRF之间使用域编号（DomainID）来以示区别。如 图1-7 所示，Switch A和Switch B组成IRF1，Switch C和Switch D组成IRF2。如果IRF1和IRF2之间有LACP MAD检测链路，则IRF1和IRF2会通过检测链路互相发送MAD检测报文，从而彼此影响IRF系统的状态和运行。这种情况下，可以给两个IRF配置不同的域编号，以保证两个IRF互不干扰。

配置IRF域编号后，成员设备发出的扩展LACP报文中将携带IRF域信息，用以区分不同IRF的LACP检测报文，避免与其它IRF产生混淆。

图1-7 多IRF域示意图

2. 配置IRF域编号

表1-2 配置IRF域编号

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置IRF域编号 | irf domain domain-id | 对于LACP MAD和ARP MAD检测方式该步骤必选 对于BFD MAD检测方式该步骤可选 缺省情况下，IRF的域编号为0

l IRF域编号的配置必须在开启LACP MAD检测功能之前进行。

l 建议用户为同一IRF中的成员设备配置统一的IRF域编号，否则会影响LACP MAD检测功能的正常运行。

l 在完成上述配置后，在任意视图下执行 display irf 命令可以显示IRF域编号的配置情况，通过查看显示信息验证配置的效果。

1.5.2 配置成员编号

IRF通过成员编号唯一的识别各成员设备，设备上的许多信息、配置与成员编号相关，比如接口（包括物理接口和逻辑接口）的编号以及接口下的配置、成员优先级的配置等。

l 修改成员编号后，如果没有重启本设备，则原编号继续生效，各物理资源仍然使用原编号来标识；配置文件中，只有IRF端口的编号以及IRF端口下的配置、成员优先级的配置会跟着改变，其它配置均不会跟着改变。

l 修改成员编号后，如果保存当前配置，重启本设备，则新的成员编号生效，需要用新编号来标识物理资源；配置文件中，只有IRF端口的编号以及IRF端口下的配置、成员优先级会继续生效，其它与成员编号相关的配置（比如普通物理接口的配置等）不再生效，需要重新配置。

表1-3 配置成员编号

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置成员编号 | irf member member-id renumber new-member-id | 可选 缺省情况下，设备的成员编号均为1

l 该配置需要重启 member-id 标志的设备才能生效；

l 在IRF中以成员编号标志设备，修改设备成员编号可能导致设备配置发生变化或者丢失，请慎重配置。例如，IRF中有三台设备（编号为1、2、3），假定设备型号一样，每台设备都有若干端口，将设备2的成员编号改为3，将设备3的成员编号改为2，然后将设备2和3重启，再次加入IRF中，此时设备2将会使用先前设备3的接口配置，而设备3则使用先前设备2的端口配置。

1.5.3 配置IRF端口

只有配置了IRF端口与IRF物理端口的绑定关系，并激活了IRF端口的配置之后，设备的IRF功能才能开始运行。

在完成成员设备间的物理连接，并将IRF物理端口与状态为DIS或DOWN（可以使用 display irf topology 命令来查看）的IRF端口进行绑定后，还需要通过 irf-port-configuration active 命令激活IRF端口的配置。在执行激活操作后，当IRF端口状态变为UP时，设备间会进行Master竞选，竞选失败的设备会自动重启并以Slave身份加入IRF。

表1-4 配置IRF端口

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入IRF物理端口视图 | interface interface-type interface-number | -
关闭接口 | shutdown | 必选
退回系统视图 | quit | -
进入IRF端口视图 | irf-port member-id/port-number | -
将IRF端口和IRF物理端口绑定 | port group interface interface-type interface-number | 必选 缺省情况下，IRF端口没有和任何IRF物理端口绑定
退回到系统视图 | quit | -
进入IRF物理端口视图 | interface interface-type interface-number | -
激活接口 | undo shutdown | 必选
退回系统视图 | quit | -
保存当前配置 | save | 必选
激活IRF端口下的配置 | irf-port-configuration active | 必选

l 多次执行 port group interface，可以将IRF端口与多个IRF物理端口绑定，以实现IRF链路的备份/负载分担，从而提高IRF链路的带宽和可靠性。

l 将IRF物理端口与IRF端口进行绑定或解除绑定前，必须先将涉及到的IRF物理端口手工关闭（即在端口上执行 shutdown 命令）；执行添加或者删除操作后，再将该IRF物理端口手工激活（即在端口上执行 undo shutdown命令）。

l 在对IRF物理端口进行 shutdown 操作时，需要首先在Master设备或是距离Master设备较近（跳数较少）的设备上对IRF物理端口进行操作。如果需要切换IRF物理端口所在Combo口上处于激活状态的光口/电口，也请遵循以上原则。

l 以太网端口作为IRF物理端口与IRF端口绑定后，只支持 cfd、default、combo（仅Combo口支持）、shutdown、description 和 flow-interval 命令。有关以上几条命令的详细介绍，请参见“二层技术-以太网交换命令参考”中的“以太网端口”。

1.5.4 配置成员优先级

在Master选举过程中，优先级数值大的成员设备将优先被选举成为Master设备。

表1-5 配置成员优先级

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置IRF中指定成员设备的优先级 | irf member member-id priority priority | 可选 缺省情况下，设备的成员优先级均为1

优先级设置后立即生效，无需重启设备。

1.5.5 配置成员设备的描述信息

当网络中存在多个IRF或者同一IRF中存在多台成员设备且物理位置比较分散（比如在不同楼层甚至不同建筑）时，为了确认成员设备的物理位置，在组建IRF时可以将物理位置设置为成员设备的描述信息，以便后期维护。

表1-6 配置成员设备的描述信息

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置IRF中指定成员设备的描述信息 | irf member member-id description text | 可选 缺省情况下，成员设备没有描述信息

1.5.6 配置IRF链路的负载分担类型

当IRF端口与多个IRF物理端口（大于等于两个）绑定时，IRF设备之间就会存在多条IRF链路。通过改变IRF链路负载分担的类型，可以灵活地实现成员设备间流量的负载分担。用户可以指定系统按照报文携带的源/目的IP地址、源/目的MAC地址、或它们之间的组合来选择所采用的负载分担类型。

用户可以通过全局配置（系统视图下）和端口下（IRF端口视图下）的配置方式设置IRF链路的负载分担模式：

l 在系统视图下执行该命令，则该配置对所有IRF端口生效；

l 在IRF端口视图下执行该命令，则该配置只对当前IRF端口下的IRF链路生效；

l IRF端口会优先采用端口下的配置。如果端口下没有配置，则采用全局配置。

l 在同一视图下多次配置 irf-port load-sharing mode 命令，以最新的配置为准。

l 对于设备不支持的负载分担模式，系统将提示用户不支持。

l 在配置负载分担模式前，请先将IRF端口和IRF物理端口绑定。否则，负载分担模式将配置失败。

1. 全局配置IRF链路的负载分担类型

表1-7 全局配置IRF链路的负载分担类型

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置IRF链路的负载分担模式 | irf-port load-sharing mode { destination-ip | destination-mac | source-ip | source-mac } * | 可选 缺省情况下， S3600V2系列交换机在处理报文时通过报文类型来进行负载分担

2. 端口下配置IRF链路的负载分担类型

表1-8 端口下配置IRF链路的负载分担类型

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入IRF端口视图 | irf-port member-id/port-number | -
配置IRF链路的负载分担模式 | irf-port load-sharing mode { destination-ip | destination-mac | source-ip | source-mac } * | 可选 缺省情况下，S3600V2系列交换机在处理报文时通过报文类型来进行负载分担

1.5.7 配置IRF的桥MAC保留时间

桥MAC是设备作为网桥与外界通信时使用的MAC地址。一些二层协议（例如LACP）会使用桥MAC标识不同设备，所以网络上的桥设备必须具有唯一的桥MAC。如果网络中存在两台桥MAC相同的设备，则会引起桥MAC冲突，从而导致通信故障。

IRF作为一台虚拟设备与外界通信，也具有唯一的桥MAC，称为IRF桥MAC。通常情况下使用Master设备的桥MAC作为IRF桥MAC。

因为桥MAC冲突会引起通信故障，桥MAC的切换又会导致流量中断。因此，用户需要根据网络实际情况配置IRF桥MAC的保留时间：

l 配置IRF桥MAC地址保留时间为6分钟。即当Master离开IRF时，IRF桥MAC地址6分钟内保持不变化；如果6分钟后Master没有回到IRF，则使用新选举的Master的桥MAC作为IRF桥MAC。该配置适用于Master设备短时间内离开又回到IRF的情况（比如Master重启或者链路临时故障等），可以减少不必要的桥MAC切换导致的流量中断。

l 如果配置了IRF桥MAC地址保留时间为永久，则不管Master设备是否离开IRF，IRF桥MAC始终保持不变。

l 如果配置了IRF桥MAC地址不保留，则当Master设备离开IRF时，系统立即会使用新选举的Master设备的桥MAC做IRF桥MAC。

表1-9 配置IRF的桥MAC保留时间

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置当Master设备离开IRF时，IRF的桥MAC地址会永久保留 | irf mac-address persistent always | 可选 缺省情况下，IRF的桥MAC保留时间为6分钟
配置当Master设备离开IRF时，IRF的桥MAC地址的保留时间为6分钟 | irf mac-address persistent timer
配置当Master设备离开IRF时，IRF的桥MAC地址不保留，会立即变化 | undo irf mac-address persistent

l 桥MAC变化可能导致流量短时间中断。

l 如果两个IRF的桥MAC相同，则它们不能合并为一个IRF。

l 当使用ARP MAD＋生成树的组网时，需要将IRF配置为MAC地址立即改变，即配置 undo irf mac-address persistent 命令。

1.5.8 使能IRF系统启动文件的自动加载功能

l 如果没有使能自动加载功能，当参与IRF的设备软件版本与Master设备的不一致时，则新加入或者优先级低的设备不能正常启动。此时需要用户手工升级设备的软件版本后，再将设备加入IRF。

l 使能自动加载功能后，成员设备加入IRF时，会与Master设备的软件版本号进行比较，如果不一致，则自动从Master设备下载启动文件，然后使用新的系统启动文件重启，重新加入IRF。如果新下载的启动文件的文件名与设备上原有启动文件文件名重名，则原有启动文件会被覆盖。

表1-10 使能IRF系统启动文件的自动加载功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
使能IRF系统启动文件的自动加载功能 | irf auto-update enable | 可选 缺省情况下，IRF系统启动文件的自动加载功能处于使能状态

l Slave设备自动加载Master的启动文件后，会将该文件设置为Slave设备的下次启动文件，并使用该文件重启本设备。

l 为了能够自动加载成功，请确保Slave设备存储介质上有足够的空闲空间用于存放新的启动文件。

如果待升级的软件版本要求您升级Bootrom（请参见版本说明书中的要求），请按如下步骤操作：

1、请将待升级的软件版本文件上传至Master设备，使用 bootrom update 命令升级Master设备的Bootrom。

2、使用 boot-loader 命令指定待升级的软件版本文件为下次启动文件，并通过使用 slot 参数使该更改应用于Master设备。

3、重启IRF系统，完成软件升级。

1.5.9 配置IRF链路down延迟上报功能

配置IRF链路down延迟上报功能后，

l 如果IRF链路状态从up变为down，端口不会立即向系统报告链路状态变化。经过配置的时间间隔后，如果IRF链路仍然处于down状态，端口才向系统报告链路状态的变化，系统再作出相应的处理；

l 如果IRF链路状态从down变为up，链路层会立即向系统报告。

该功能用于避免因端口链路层状态在短时间内频繁改变，导致IRF分裂/合并的频繁发生。

表1-11 配置IRF链路down延迟上报功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置IRF链路down延迟上报时间 | irf link-delay interval | 可选 缺省情况下，没有配置IRF链路down延迟上报功能

建议将 interval 参数设置为200～500中的某个值（单位为毫秒）。如果配置的 interval 参数值过大，可能会导致IRF系统不能及时发现IRF拓扑的变化，从而造成业务恢复缓慢。


1.6 MAD配置

IRF支持的MAD检测方式有：LACP MAD检测、BFD MAD检测和ARP MAD检测。三种检测方式虽然原理不同但是功能效果相同，能够满足不同组网需求：

l LACP MAD检测用于基于LACP的组网检测需求；

l BFD MAD检测用于基于BFD的组网检测需求；

l ARP MAD检测用于基于非聚合场合的Resilient ARP的组网检测需求。

这三种方式独立工作，彼此之间互不干扰。因此，同一IRF内可以配置多种MAD检测方式。

1.6.1 LACP MAD检测

(1) LACP MAD检测原理

LACP MAD检测是通过扩展LACP协议报文内容实现的，即在LACP协议报文的扩展字段内定义一个新的TLV（Type/Length/Value，类型/长度/值）数据域——用于交互IRF的DomainID（域编号）和ActiveID。当网络中同时存在多个IRF时（比如IRF级联的组网情况），DomainID用于区别不同的IRF。当某个IRF分裂时，ActiveID用于MAD检测，用IRF中Master设备的成员编号来表示。

使能LACP MAD检测后，成员设备通过LACP协议报文和其它成员设备交互DomainID和ActiveID信息。

l 当成员设备收到LACP协议报文后，先比较DomainID。如果DomainID相同，再比较ActiveID；如果DomainID不同，则认为报文来自不同IRF，不再进行MAD处理。

l 如果ActiveID相同，则表示IRF正常运行，没有发生多Active冲突；如果ActiveID值不同，则表示IRF分裂，检测到多Active冲突。

(2) LACP MAD检测组网要求

LACP MAD检测方式组网中需要使用中间设备，支持LACP协议扩展功能的H3C设备都能作为中间设备（H3C设备是否支持LACP协议扩展功能请参见该设备操作手册中“LACP协议”部分的相关描述）。通常采用如 图1-8 所示的组网：成员设备之间通过Device交互LACP扩展报文。

在LACP MAD检测组网中，如果中间设备本身也是一个IRF系统，则必须通过配置确保其IRF域编号与被检测的IRF系统不同，否则可能造成检测异常，甚至导致业务中断。

图1-8 LACP MAD检测组网示意图

(3) 配置LACP MAD检测

LACP MAD检测的配置步骤为：

l 创建二层聚合端口/三层聚合接口；（中间设备上也需要进行该项配置）

l 将聚合端口的工作模式配置为动态聚合模式；（中间设备上也需要进行该项配置）

l 在动态聚合端口下使能LACP MAD检测功能；

l 给聚合组添加成员端口。（中间设备上也需要进行该项配置）

表1-12 配置LACP MAD检测

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
配置IRF域编号 |  | irf domain domain-id | 必选 缺省情况下，IRF的域编号为0
创建并进入聚合接口视图 | 进入二层聚合接口视图 | interface bridge-aggregation interface-number | 二者必选其一
 | 进入三层聚合接口视图 | interface route-aggregation interface-number
配置聚合组工作在动态聚合模式下 |  | link-aggregation mode dynamic | 必选 缺省情况下，聚合组工作在静态聚合模式下
使能LACP MAD检测功能 |  | mad enable | 必选 缺省情况下，LACP MAD检测未使能 该命令可以在动态或静态聚合口下配置，但由于LACP MAD检测依赖于LACP协议，因此只在动态聚合端口下生效
退回系统视图 |  | quit | -
进入二层以太网端口视图或三层以太网端口视图 |  | interface interface-type interface-number | -
将以太网端口加入聚合组 |  | port link-aggregation group number | 必选

1.6.2 BFD MAD检测

(1) BFD MAD检测原理

BFD MAD检测是通过BFD协议来实现的。要使BFD MAD检测功能正常运行，除在三层接口下使能BFD MAD检测功能外，还需要在该接口上配置MAD IP地址。MAD IP地址与普通IP地址不同的地方在于MAD IP地址与成员设备是绑定的，IRF中的每个成员设备上都需要配置，且必须属于同一网段。

l 当IRF正常运行时，只有Master上配置的MAD IP地址生效，Slave设备上配置的MAD IP地址不生效，BFD会话处于down状态；

l 当IRF分裂后会形成多个IRF，不同IRF中Master上配置的MAD IP地址均会生效，BFD会话被激活，此时会检测到多Active冲突。

(2) BFD MAD检测组网要求

BFD MAD检测方式可以使用中间设备来进行连接，也可以不使用中间设备。在没有中间设备的组网情况下，需要IRF中的成员设备每两台之间都要建立BFD MAD检测链路，即所有成员设备使用全连接（Full Mesh）的方式建立BFD MAD检测链路。这些链路上的端口必须属于同一VLAN，然后在该VLAN接口视图下给不同成员设备配置同一网段下的不同IP地址。常见组网如 图1-9 所示。

使能BFD MAD检测功能的三层接口只能专用于BFD MAD检测，不允许运行其它业务。如果用户配置了其它业务，可能会影响该业务以及BFD MAD检测功能的运行。

图1-9 BFD MAD检测组网示意图

(3) 配置BFD MAD检测

BFD MAD检测功能的配置顺序为：

l 创建一个新VLAN，专用于BFD MAD检测；（如果用到中间设备组网，中间设备上也需要进行该项配置）

l 确定使用哪些物理端口用作BFD MAD检测（每台成员设备上至少一个），并将这些端口都添加到BFD MAD检测专用VLAN中；（如果用到中间设备组网，中间设备上也需要进行该项配置）

l 为BFD MAD检测专用VLAN创建VLAN接口，在接口下使能BFD MAD检测功能，并配置MAD IP地址。

表1-13 配置BFD MAD检测

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
创建一个新VLAN专用于BFD MAD检测 |  | vlan vlan-id | 必选 缺省情况下，设备上只存在VLAN 1
退回系统视图 |  | quit | -
进入二层以太网端口视图 |  | interface interface-type interface-number | -
将端口加入BFD MAD检测专用VLAN | Access端口 | port access vlan vlan-id | 必选 请根据端口的当前链路类型选择对应的配置命令 BFD MAD检测对检测端口的链路类型没有要求，不需要刻意修改端口的当前链路类型。缺省情况下，端口端的链路类型为Access端口
 | Trunk端口 | port trunk permit vlan vlan-id
 | Hybrid端口 | port hybrid vlan vlan-id
退回系统视图 |  | quit | -
进入VLAN接口视图 |  | interface vlan-interface interface-number | -
使能BFD MAD检测功能 |  | mad bfd enable | 必选 缺省情况下，没有使能BFD MAD检测功能
给指定成员设备配置MAD IP地址 |  | mad ip address ip-address { mask | mask-length } member member-id | 必选 缺省情况下，没有为接口配置MAD IP地址

l 用户需要将BFD MAD检测链路上的端口（包括IRF成员设备上的端口和中间设备上的端口）全部加入用于BFD MAD检测的VLAN接口对应的VLAN。

l 使能了BFD MAD检测功能的VLAN接口以及对应VLAN内的端口上不支持包括ARP和LACP在内的所有的二层或三层协议应用。

l 不允许在Vlan-interface1接口上使能BFD MAD检测功能。

l BFD MAD检测功能与VPN功能互斥，请不要将使能了BFD MAD检测功能的三层接口与VPN实例进行绑定。

l BFD MAD检测功能与生成树功能互斥，在使能了BFD MAD检测功能的三层接口对应VLAN内的端口上，请不要使能生成树协议。

l 在用于BFD MAD检测的接口下必须使用 mad ip address 命令配置MAD IP地址，而不要配置其它IP地址（包括使用 ip address 命令配置的普通IP地址、VRRP虚拟IP地址等），以免影响MAD检测功能。

l MAD IP地址不能与各成员设备上已经配置的IP地址处于同一网段。

1.6.3 ARP MAD检测

(1) ARP MAD检测原理

ARP MAD检测是通过扩展免费ARP协议报文内容实现的，即使用免费ARP协议报文中未使用的字段来交互IRF的DomainID和ActiveID。当网络中同时存在多个IRF时（比如IRF级联的组网情况），DomainID用于区别不同的IRF。当某个IRF分裂时，ActiveID用于MAD检测，用IRF中Master设备的成员编号来表示。

使能ARP MAD检测后，成员设备可以通过免费ARP协议报文和其它成员设备交互DomainID和ActiveID信息。

l 当成员设备收到免费ARP协议报文后，先比较DomainID。如果DomainID相同，再比较ActiveID；如果DomainID不同，则认为报文来自不同IRF，不再进行MAD处理。

l 如果ActiveID相同，则表示IRF正常运行，没有发生多Active冲突；如果ActiveID值不同，则表示IRF分裂，检测到多Active冲突。

(2) ARP MAD检测组网要求

ARP MAD检测方式可以使用中间设备来进行连接，也可以不使用中间设备。通常采用如 图1-10 所示的组网：成员设备之间通过Device交互免费ARP报文，Device、Master和Slave上都要配置生成树功能，以防止形成环路。

图1-10 ARP MAD检测组网示意图

(3) 配置ARP MAD检测

表1-14 配置ARP MAD检测

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
配置IRF域编号 |  | irf domain domain-id | 必选 缺省情况下，IRF的域编号为0
创建一个新VLAN专用于ARP MAD检测 |  | vlan vlan-id | 必选 缺省情况下，设备上只存在VLAN 1
退回系统视图 |  | quit | -
进入二层以太网端口视图 |  | interface interface-type interface-number | -
将端口加入ARP MAD检测专用VLAN | Access端口 | port access vlan vlan-id | 必选 请根据端口的当前链路类型选择对应的配置命令 ARP MAD检测对检测端口的链路类型没有要求，不需要刻意修改端口的当前链路类型。缺省情况下，端口端的链路类型为Access端口
 | Trunk端口 | port trunk permit vlan vlan-id
 | Hybrid端口 | port hybrid vlan vlan-id
退回系统视图 |  | quit | -
进入VLAN接口视图 |  | interface vlan-interface interface-number | -
配置IP地址 |  | ip address ip-address { mask | mask-length } | 必选 缺省情况下，没有为接口配置IP地址
使能ARP MAD检测功能 |  | mad arp enable | 必选 缺省情况下，ARP MAD检测未使能

1.6.4 配置保留接口

IRF系统在进行多Active处理的时候，缺省情况下，会关闭Recovery状态设备上的所有业务接口。如果接口有特殊用途需要保持up状态（比如Telnet登录接口等），则用户可以通过命令行将这些接口配置为保留接口。

表1-15 配置保留接口

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置保留接口，当设备进入Recovery状态时，该接口不会被关闭 | mad exclude interface interface-type interface-number | 必选 缺省情况下，设备进入Recovery状态时会自动关闭本设备上所有的业务接口

l IRF物理端口自动作为保留接口，不需要配置。

l 如果要求处于Recovery状态的IRF中的某个VLAN接口能够继续收发报文（比如使用该VLAN接口进行远程登录），则需要将该VLAN接口以及该VLAN接口对应的以太网端口都配置为保留接口。但如果在Active状态的IRF中该VLAN接口也处于UP状态，则在网络中会产生IP地址冲突。

1.6.5 MAD故障恢复

IRF链路故障将一个IRF分裂为两个IRF，从而导致多Active冲突。当系统检测到多Active冲突后，两个冲突的IRF会进行竞选，Master成员编号小的获胜，继续正常运行，失败的IRF会转入Recovery状态，暂时不能转发业务报文。此时通过修复IRF链路可以恢复IRF系统（设备会尝试自动修复IRF链路，如果修复失败的话，则需要用户手工修复）。

IRF链路修复后，处于Recover状态的IRF会自动重启，从而与处于Active状态的IRF重新合并为一个IRF，原Recovery状态IRF中被强制关闭的业务接口会自动恢复到真实的物理状态，如 图1-11 所示。

图1-11 MAD故障恢复（IRF链路故障）

如果在IRF链路修复之前，处于Active的IRF也出现故障（原因可能是设备故障或者上下行线路故障），如 图1-12 所示，可以在IRF 2（处于Recovery状态的IRF）上执行 mad restore 命令，让IRF 2恢复到正常状态（无需重启），先接替IRF 1工作，然后再修复IRF 1和IRF链路。完成修复工作后，两个IRF发生合并，此时双方将通过比较各自Master设备成员优先级的方式进行竞选，成员优先级高的Master所在IRF获胜，保持正常工作状态，竞选失败的Master所在IRF中的所有设备将自动重启并加入获胜方IRF，完成IRF合并过程，整个IRF系统恢复。

图1-12 MAD故障恢复（IRF链路故障+Active状态的IRF故障）

表1-16 手动恢复处于Recovery状态的设备

操作 | 命令 | 说明
进入系统视图 | system-view | -
将IRF从Recovery状态恢复到Active状态 | mad restore | 必选


1.7 访问IRF

1.7.1 访问Master

IRF的访问方式如下：

l 本地登录：通过任意成员设备的AUX或者Console口登录。

l 远程登录：给任意成员设备的任意三层接口配置IP地址，并且路由可达，就可以通过Telnet、WEB、SNMP等方式进行远程登录。

不管使用哪种方式登录IRF，实际上登录的都是Master。Master是IRF系统的配置和控制中心，在Master上配置后，Master会将相关配置同步给Slave，以便保证Master和Slave配置的一致性。

1.7.2 访问Slave

用户访问IRF时，实际访问的是IRF中的Master设备，访问终端的操作界面显示的是Master设备的控制台。如果要打印Slave设备的日志、调试等信息，需要重定向到Slave。重定向之后，用户访问终端的操作界面就会从Master的控制台切换到指定Slave的控制台，系统进入Slave的用户视图，“<系统名-Slave#X>”，其中“X”为成员设备编号，例如“<Sysname-Slave#2>”。用户从终端的输入指令都会转发给指定的Slave，Master不再进行处理。目前在Slave上只允许执行以下命令：

l display

l quit

l return

l system-view

l debugging

l terminal debugging

l terminal trapping

l terminal logging

用户可以使用 quit 命令退回到Master控制台，此时Master控制台重新激活，可以向外输出日志等信息。

表1-17 访问Slave

操作 | 命令 | 说明
进入系统视图 | system-view | -
重定向到指定的Slave设备 | irf switch-to member-id | 必选 缺省情况下，用户访问IRF时，实际访问的是Master

IRF对同时登录设备的用户有数目限制，IRF系统中最多允许16个VTY类型的用户同时登录，允许同时登录的Console用户数量与IRF中的成员设备数量相同。


1.8 IRF显示和维护

在完成上述配置后，在任意视图下执行 display 命令可以显示配置后IRF的运行情况，通过查看显示信息验证配置的效果。

表1-18 IRF显示和维护

操作 | 命令
显示IRF中所有成员设备的相关信息 | display irf [ | { begin | exclude | include } regular-expression ]
查看IRF的拓扑信息 | display irf topology [ | { begin | exclude | include } regular-expression ]
显示IRF中所有设备的配置信息 | display irf configuration [ | { begin | exclude | include } regular-expression ]
显示IRF链路的负载分担模式 | display irf-port load-sharing mode [ irf-port [ member-id/port-number ] ] [ | { begin | exclude | include } regular-expression ]
显示IRF设备的主备倒换状态 | display switchover state [ member-id ] [ | { begin | exclude | include } regular-expression ]
显示MAD配置信息 | display mad [ verbose ] [ | { begin | exclude | include } regular-expression ]


1.9 IRF典型配置举例

1.9.1 IRF典型配置举例（LACP MAD检测方式）

1. 组网需求

由于公司人员激增，接入层交换机提供的端口数目已经不能满足PC的接入需求。现需要在保护现有投资的基础上扩展端口接入数量，并要求网络易管理、易维护。

2. 组网图

图1-13 IRF典型配置组网图（LACP MAD检测方式）

3. 配置思路

l Device A提供的接入端口数目已经不能满足网络需求，需要另外增加一台设备Device B。（本文以两台设备组成IRF为例，在实际组网中可以根据需要，将多台设备组成IRF，配置思路和配置步骤与本例类似）

l 鉴于第二代智能弹性架构IRF技术具有管理简便、网络扩展能力强、可靠性高等优点，所以本例使用IRF技术构建接入层（即在Device A和Device B上配置IRF功能）。

l 为了防止万一IRF链路故障导致IRF分裂、网络中存在两个配置冲突的IRF，需要启用MAD检测功能。因为接入层设备较多，我们采用LACP MAD检测。

4. 配置步骤

为便于区分，下文配置中假设IRF形成前Device A的系统名称为DeviceA，Device B的系统名称为Device B；中间设备Device C的系统名称为DeviceC。

(1) 配置设备编号

# Device A保留缺省编号为1，不需要进行配置。

# 在Device B上将设备的成员编号修改为2。

<DeviceB> system-view

[DeviceB] irf member 1 renumber 2

Warning: Renumbering the switch number may result in configuration change or loss. Continue? [Y/N]:y

[DeviceB]

(2) 将两台设备断电后，按图1-13所示连接IRF链路，然后将两台设备上电。

# 在Device A上创建设备的IRF端口2，与物理端口GigabitEthernet1/0/25绑定，并保存配置。

<DeviceA> system-view

[DeviceA] interface gigabitethernet 1/0/25

[DeviceA-GigabitEthernet1/0/25] shutdown

[DeviceA] irf-port 1/2

[DeviceA-irf-port1/2] port group interface gigabitethernet 1/0/25

[DeviceA-irf-port1/2] quit

[DeviceA] interface gigabitethernet 1/0/25

[DeviceA-GigabitEthernet1/0/25] undo shutdown

[DeviceA-GigabitEthernet1/0/25] save

# 在Device B上创建设备的IRF端口1，与物理端口GigabitEthernet2/0/26绑定，并保存配置。

<DeviceB> system-view

[DeviceB] interface gigabitethernet 2/0/26

[DeviceB-GigabitEthernet2/0/26] shutdown

[DeviceB] irf-port 2/1

[DeviceB-irf-port2/1] port group interface gigabitethernet 2/0/26

[DeviceB-irf-port2/1] quit

[DeviceB] interface gigabitethernet 2/0/26

[DeviceB-GigabitEthernet2/0/26] undo shutdown

[DeviceB-GigabitEthernet2/0/26] save

# 激活DeviceA的IRF端口配置。

[DeviceA-GigabitEthernet1/0/25] quit

[DeviceA] irf-port-configuration active

# 激活DeviceB的IRF端口配置。

[DeviceB-GigabitEthernet2/0/26] quit

[DeviceB] irf-port-configuration active

(3) 两台设备间会进行Master竞选，竞选失败的一方将自动重启，重启完成后，IRF形成，系统名称统一为DeviceA。

(4) 配置LACP MAD检测

# 创建一个动态聚合端口，并使能LACP MAD检测功能，由于并不是在两个IRF之间配置LACP MAD检测，因此在系统提示输入IRF域ID时，可以保持为默认值0。

<DeviceA> system-view

[DeviceA] interface bridge-aggregation 2

[DeviceA-Bridge-Aggregation2] link-aggregation mode dynamic

[DeviceA-Bridge-Aggregation2] mad enable

You need to assign a domain ID (range: 0-4294967295)

[Current domain is: 0]:

The assigned domain ID is: 0

Info: MAD LACP only enable on dynamic aggregation interface.

[DeviceA-Bridge-Aggregation2] quit

# 在聚合端口中添加成员端口Ethernet1/0/1和Ethernet2/0/1，专用于两台IRF成员设备与中间设备进行LACP MAD检测。

[DeviceA] interface ethernet 1/0/1

[DeviceA-Ethernet1/0/1] port link-aggregation group 2

[DeviceA-Ethernet1/0/1] quit

[DeviceA] interface ethernet 2/0/1

[DeviceA-Ethernet2/0/1] port link-aggregation group 2

(5) 中间设备Device C的配置

Device C作为一台中间设备需要支持LACP功能，用来转发、处理LACP协议报文，协助Device A和Device B进行多Active检测。从节约成本的角度考虑，使用一台支持LACP功能的交换机即可。

# 创建一个动态聚合端口。

<DeviceC> system-view

[DeviceC] interface bridge-aggregation 2

[DeviceC-Bridge-Aggregation2] link-aggregation mode dynamic

[DeviceC-Bridge-Aggregation2] quit

# 在聚合端口中添加成员端口Ethernet1/0/1和Ethernet1/0/2，用于进行LACP MAD检测。

[DeviceC] interface ethernet 1/0/1

[DeviceC-Ethernet1/0/1] port link-aggregation group 2

[DeviceC-Ethernet1/0/1] quit

[DeviceC] interface ethernet 1/0/2

[DeviceC-Ethernet1/0/2] port link-aggregation group 2

# 按图1-13所示连接LACP MAD链路。

1.9.2 IRF典型配置举例（BFD MAD检测方式）

1. 组网需求

由于网络规模迅速扩大，当前中心交换机（Device A）转发能力已经不能满足需求，现需要在保护现有投资的基础上将网络转发能力提高一倍，并要求网络易管理、易维护。

2. 组网图

图1-14 IRF典型配置组网图（BFD MAD检测方式）

3. 配置思路

l Device A处于局域网的汇聚层，为了将汇聚层的转发能力提高一倍，需要另外增加一台设备Device B。

l 鉴于第二代智能弹性架构IRF技术具有管理简便、网络扩展能力强、可靠性高等优点，所以本例使用IRF技术构建网络汇聚层（即在Device A和Device B上配置IRF功能），接入层设备通过聚合双链路上行。

l 为了防止万一IRF链路故障导致IRF分裂、网络中存在两个配置冲突的IRF，需要启用MAD检测功能。因为成员设备比较少，我们采用BFD MAD检测方式来监测IRF的状态。

4. 配置步骤

为便于区分，下文配置中假设IRF形成前Device A的系统名称为DeviceA，Device B的系统名称为Device B。

(1) 配置设备编号

# Device A保留缺省编号为1，不需要进行配置。

# 在Device B上将设备的成员编号修改为2。

<DeviceB> system-view

[DeviceB] irf member 1 renumber 2

Warning: Renumbering the switch number may result in configuration change or loss. Continue? [Y/N]:y

[DeviceB]

(2) 将两台设备断电后，按图1-14 所示连接IRF链路，然后将两台设备上电。

# 在Device A上创建设备的IRF端口2，与物理端口GigabitEthernet1/0/25绑定，并保存配置。

<DeviceA> system-view

[DeviceA] interface gigabitethernet 1/0/25

[DeviceA-GigabitEthernet1/0/25] shutdown

[DeviceA] irf-port 1/2

[DeviceA-irf-port1/2] port group interface gigabitethernet 1/0/25

[DeviceA-irf-port1/2] quit

[DeviceA] interface gigabitethernet 1/0/25

[DeviceA-GigabitEthernet1/0/25] undo shutdown

[DeviceA-GigabitEthernet1/0/25] save

# 在Device B上创建设备的IRF端口1，与物理端口GigabitEthernet2/0/26绑定，并保存配置。

<DeviceB> system-view

[DeviceB] interface gigabitethernet 2/0/26

[DeviceB-GigabitEthernet2/0/26] shutdown

[DeviceB] irf-port 2/1

[DeviceB-irf-port2/1] port group interface gigabitethernet 2/0/26

[DeviceB-irf-port2/1] quit

[DeviceB] interface gigabitethernet 2/0/26

[DeviceB-GigabitEthernet2/0/26] undo shutdown

[DeviceB-GigabitEthernet2/0/26] save

# 激活DeviceA的IRF端口配置。

[DeviceA-GigabitEthernet1/0/25] quit

[DeviceA] irf-port-configuration active

# 激活DeviceB的IRF端口配置。

[DeviceB-GigabitEthernet2/0/26] quit

[DeviceB] irf-port-configuration active

(3) 两台设备间将会进行Master竞选，竞选失败的一方将自动重启，重启完成后，IRF形成，系统名称统一为DeviceA。

(4) 配置BFD MAD检测

# 创建VLAN 3，并将Device A上的端口Ethernet1/0/1和Device B上的端口Ethernet2/0/1加入VLAN中。

<DeviceA> system-view

[DeviceA] vlan 3

[DeviceA-vlan3] port ethernet 1/0/1 ethernet 2/0/1

[DeviceA-vlan3] quit

# 创建VLAN接口3，并配置MAD IP地址。

[DeviceA] interface vlan-interface 3

[DeviceA-Vlan-interface3] mad bfd enable

[DeviceA-Vlan-interface3] mad ip address 192.168.2.1 24 member 1

[DeviceA-Vlan-interface3] mad ip address 192.168.2.2 24 member 2

[DeviceA-Vlan-interface3] quit

# 按图1-14 所示连接BFD MAD链路。

# 因为BFD MAD和生成树功能互斥，所以在Ethernet1/0/1和Ethernet2/0/1上关闭生成树协议。

[DeviceA] interface ethernet 1/0/1

[DeviceA-Ethernet1/0/1] undo stp enable

[DeviceA-Ethernet1/0/1] quit

[DeviceA] interface ethernet 2/0/1

[DeviceA-Ethernet2/0/1] undo stp enable

1.9.3 IRF典型配置举例（ARP MAD检测方式）

1. 组网需求

由于网络规模迅速扩大，当前中心交换机（Device A）转发能力已经不能满足需求，现需要在保护现有投资的基础上将网络转发能力提高一倍，并要求网络易管理、易维护。

2. 组网图

图1-15 IRF典型配置组网图（ARP MAD检测方式）

3. 配置思路

l Device A处于局域网的汇聚层，为了将汇聚层的转发能力提高一倍，需要另外增加一台设备Device B。

l 鉴于第二代智能弹性架构IRF技术具有管理简便、网络扩展能力强、可靠性高等优点，所以本例使用IRF技术构建网络接入层（即在Device A和Device B上配置IRF功能），IRF通过双链路上行。

l 为了防止万一IRF链路故障导致IRF分裂、网络中存在两个配置冲突的IRF，需要启用MAD检测功能。因为成员设备比较少，我们采用ARP MAD检测方式来监测IRF的状态，复用链路上行传递ARP MAD报文。为防止环路发生，在IRF和Device C上启用生成树功能。

4. 配置步骤

为便于区分，下文配置中假设IRF形成前Device A的系统名称为DeviceA，Device B的系统名称为Device B；中间设备Device C的系统名称为DeviceC。

(1) 配置设备编号

# Device A保留缺省编号为1，不需要进行配置。

# 在Device B上将设备的成员编号修改为2。

<DeviceB> system-view

[DeviceB] irf member 1 renumber 2

Warning: Renumbering the switch number may result in configuration change or loss. Continue? [Y/N]:y

[DeviceB]

(2) 将两台设备断电后，按图1-14 所示连接IRF链路和ARP MAD检测链路，然后将两台设备上电。

# 在Device A上创建设备的IRF端口2，与物理端口GigabitEthernet1/0/25绑定，并保存配置。

<DeviceA> system-view

[DeviceA] interface gigabitethernet 1/0/25

[DeviceA-GigabitEthernet1/0/25] shutdown

[DeviceA] irf-port 1/2

[DeviceA-irf-port1/2] port group interface gigabitethernet 1/0/25

[DeviceA-irf-port1/2] quit

[DeviceA] interface gigabitethernet 1/0/25

[DeviceA-GigabitEthernet1/0/25] undo shutdown

[DeviceA-GigabitEthernet1/0/25] save

# 在Device B上创建设备的IRF端口1，与物理端口GigabitEthernet2/0/26绑定，并保存配置。

<DeviceB> system-view

[DeviceB] interface gigabitethernet 2/0/26

[DeviceB-GigabitEthernet2/0/26] shutdown

[DeviceB] irf-port 2/1

[DeviceB-irf-port2/1] port group interface gigabitethernet 2/0/26

[DeviceB-irf-port2/1] quit

[DeviceB] interface gigabitethernet 2/0/26

[DeviceB-GigabitEthernet2/0/26] undo shutdown

[DeviceB-GigabitEthernet2/0/26] save

# 激活DeviceA的IRF端口配置。

[DeviceA-GigabitEthernet1/0/25] quit

[DeviceA] irf-port-configuration active

# 激活DeviceB的IRF端口配置。

[DeviceB-GigabitEthernet2/0/26] quit

[DeviceB] irf-port-configuration active

(3) 两台设备间将会进行Master竞选，竞选失败的一方将自动重启，重启完成后，IRF形成，系统名称统一为DeviceA。

(4) 配置ARP MAD

# 在IRF上全局使能MSTP，以防止环路的发生。

<DeviceA> system-view

[DeviceA] stp enable

# 按图1-15 所示连接ARP MAD检测链路。

# 将IRF配置为MAC地址立即改变。

[DeviceA] undo irf mac-address persistent

# 创建VLAN 3，并将Device A（成员编号为1）上的端口Ethernet1/0/1和Device B（成员编号为2）上的端口Ethernet2/0/1加入VLAN中。

[DeviceA] vlan 3

[DeviceA-vlan3] port ethernet 1/0/1 ethernet 2/0/1

[DeviceA-vlan3] quit

# 创建VLAN-interface3，并配置IP地址，使能ARP MAD检测功能，由于并不是在两个IRF之间配置ARP MAD检测，因此在系统提示输入IRF域ID时，可以保持为默认值0。

[DeviceA] interface vlan-interface 3

[DeviceA-Vlan-interface3] ip address 192.168.2.1 24

[DeviceA-Vlan-interface3] mad arp enable

You need to assign a domain ID (range: 0-4294967295)

[Current domain is: 0]:

The assigned domain ID is: 0

(5) 配置Device C

# 在全局使能MSTP，以防止环路的发生。

<DeviceC> system-view

[DeviceC] stp enable

# 创建VLAN 3，并将端口Ethernet1/0/1和Ethernet1/0/2加入VLAN 3中，用于转发ARP MAD报文。

[DeviceC] vlan 3

[DeviceC-vlan3] port ethernet 1/0/1 ethernet 1/0/2

[DeviceC-vlan3] quit


00-前言

前 言

H3C S3600V2系列以太网交换机配置指导共分为十本手册，介绍了S3600V2系列以太网交换机各软件特性的原理及其配置方法，包含原理简介、配置任务描述和配置举例。《二层技术-以太网交换配置指导》主要介绍了以太网交换技术的原理及具体配置方法。通过这些技术您可以实现流量控制、流量的负载分担、同一VLAN内用户隔离、二层环路消除、VLAN划分、私网报文穿越公网、修改报文的VLAN Tag等功能。

前言部分包含如下内容：

l 读者对象

l 本书约定

l 产品配套资料

l 资料获取方式

l 技术支持

l 资料意见反馈

读者对象

本手册主要适用于如下工程师：

l 网络规划人员

l 现场技术支持与维护人员

l 负责网络配置和维护的网络管理员

本书约定

1.命令行格式约定

格 式 | 意 义
粗体 | 命令行关键字（命令中保持不变、必须照输的部分）采用加粗字体表示。
斜体 | 命令行参数（命令中必须由实际值进行替代的部分）采用斜体表示。
[ ] | 表示用“[ ]”括起来的部分在命令配置时是可选的。
{ x | y | ... } | 表示从两个或多个选项中选取一个。
[ x | y | ... ] | 表示从两个或多个选项中选取一个或者不选。
{ x | y | ... } * | 表示从两个或多个选项中选取多个，最少选取一个，最多选取所有选项。
[ x | y | ... ] * | 表示从两个或多个选项中选取多个或者不选。
&<1-n> | 表示符号&前面的参数可以重复输入1～n次。
# | 由“#”号开始的行表示为注释行。

2.图形界面格式约定

格 式 | 意 义
< > | 带尖括号“< >”表示按钮名，如“单击<确定>按钮”。
[ ] | 带方括号“[ ]”表示窗口名、菜单名和数据表，如“弹出[新建用户]窗口”。
/ | 多级菜单用“/”隔开。如[文件/新建/文件夹]多级菜单表示[文件]菜单下的[新建]子菜单下的[文件夹]菜单项。

3.各类标志

本书还采用各种醒目标志来表示在操作过程中应该特别注意的地方，这些标志的意义如下：

该标志后的注释需给予格外关注，不当的操作可能会对人身造成伤害。

提醒操作中应注意的事项，不当的操作可能会导致数据丢失或者设备损坏。

为确保设备配置成功或者正常工作而需要特别关注的操作或信息。

对操作内容的描述进行必要的补充和说明。

配置、操作、或使用设备的技巧、小窍门。

4.图标约定

本书使用的图标及其含义如下：

该图标及其相关描述文字代表一般网络设备，如路由器、交换机、防火墙等。

该图标及其相关描述文字代表一般意义下的路由器，以及其他运行了路由协议的设备。

该图标及其相关描述文字代表二、三层以太网交换机，以及运行了二层协议的设备。

产品配套资料

H3C S3600V2系列以太网交换机的配套资料包括如下部分：

大类 | 资料名称 | 内容介绍
产品知识介绍 | 产品彩页 | 帮助您了解产品的主要规格参数及亮点
 | RPS电源用户手册 | 帮助您了解产品支持的RPS电源的外观、功能、规格
 | H3C低端系列以太网交换机RPS电源选购指南 | 帮助您了解各种RPS电源适用的交换机产品型号及RPS电源配套电缆的相关规格
 | H3C低端系列以太网交换机可插拔模块手册 | 帮助您了解产品支持的可插拔模块类型、外观和规格
设备安装 | 安全兼容性手册 | 列出产品的兼容性声明，并对兼容性和安全的细节进行说明
 | H3C 设备防雷安装指导手册 | 帮助您了解防雷接地设计和工程安装方法，以保证交换机具有良好的抗雷击性能
 | 快速安装指南 | 指导您对设备进行初始安装，通常针对最常用的情况，减少您的检索时间
 | 安装指导 | 帮助您详细了解设备硬件规格和安装方法，指导您对设备进行安装
 | H3C可插拔SFP[SFP+][XFP]模块安装指南 | 帮助您掌握SFP/SFP+/XFP模块的正确安装方法，避免因操作不当而造成器件损坏
业务配置 | 配置指导 | 帮助您掌握设备软件功能的配置方法及配置步骤
 | 命令参考 | 详细介绍设备的命令，相当于命令字典，方便您查阅各个命令的功能
运行维护 | H3C系列以太网交换机登录密码恢复手册 | 指导您在设备登录密码丢失的情况下，找回密码、或重新配置登录密码
 | 故障处理手册 | 指导您快速定位并处理软件故障
 | 版本说明书 | 帮助您了解产品版本的相关信息（包括：版本配套说明、兼容性说明、特性变更说明、技术支持信息）及软件升级方法

资料获取方式

您可以通过H3C网站（ www.h3c.com.cn ）获取最新的产品资料：

H3C网站与产品资料相关的主要栏目介绍如下：

l [服务支持/文档中心] ：可以获取硬件安装类、软件升级类、配置类或维护类等产品资料。

l [产品技术] ：可以获取产品介绍和技术介绍的文档，包括产品相关介绍、技术介绍、技术白皮书等。

l [解决方案] ：可以获取解决方案类资料。

l [服务支持/软件下载] ：可以获取与软件版本配套的资料。

技术支持

用户支持邮箱：customer_service@h3c.com

技术支持热线电话：400-810-0504（手机、固话均可拨打）

网址： http://www.h3c.com.cn

资料意见反馈

如果您在使用过程中发现产品资料的任何问题，可以通过以下方式反馈：

E-mail：info@h3c.com

感谢您的反馈，让我们做得更好！


1 以太网端口配置

相关链接

  • 1.1 端口简介
  • 1.2 以太网端口通用配置
  • 1.3 二层以太网端口配置
  • 1.4 三层以太网端口配置
  • 1.5 以太网端口显示和维护
父主题： 01-以太网端口配置


1.1 端口简介

1.1.1 以太网端口的端口编号规则

本系列交换机的端口均采用3位编号方式：interface type A/B/C。

l A：IRF中成员设备的编号，若未形成IRF，其取值为1。

l B：设备上的槽位号。取值为0，表示设备上固有端口所在的槽位；取值为1，表示接口模块扩展卡1上端口所在的槽位；取值为2，表示接口模块扩展卡2上端口所在的槽位。

l C：某槽位上的端口编号


1.2 以太网端口通用配置

本节将介绍二层以太网端口和三层以太网端口的共有属性及配置。

l 二层以太网端口的特有配置，请参见 1.3 二层以太网端口配置 。

l 三层以太网端口的特有配置，请参见 1.4 三层以太网端口配置 。

1.2.1 Combo端口配置

1. Combo端口介绍

一个Combo端口对应设备面板上一个电口和一个光口。电口与其对应的光口是光电复用关系，两者不能同时工作（当激活其中的一个端口时，另一个端口就自动处于禁用状态），用户可根据组网需求选择使用电口或光口。

电口和光口共用一个端口视图。当用户需要激活电口或光口、配置电口或光口的属性（比如速率、双工等）时，在同一端口视图下配置。

2. 配置准备

l 本系列交换机的Combo端口共有2个，电口和光口的端口号相同，Combo端口的端口编号请参见具体机型的安装手册。

l 通过 display interface 命令了解当前处于激活状态的是电口还是光口。如果显示信息中包含“Media type is twisted pair, Port hardware type is 1000_BASE_T”，则表示电口处于激活状态，否则，则表示光口处于激活状态。也可在Combo端口视图下执行 display this 命令查看当前视图下的配置，若存在 combo enable fiber 命令，则表示光口处于激活状态，否则，则表示电口处于激活状态。

3. 配置Combo端口的状态

表1-1 配置Combo端口的状态

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入以太网端口视图 | interface interface-type interface-number | -
激活Combo端口 | combo enable { copper | fiber } | 可选 缺省情况下，电口处于激活状态

1.2.2 以太网端口基本配置

1. 以太网端口基本配置

设置以太网端口的双工模式时存在三种情况：

l 当希望端口在发送数据包的同时可以接收数据包，可以将端口设置为全双工（full）属性；

l 当希望端口同一时刻只能发送数据包或接收数据包时，可以将端口设置为半双工（half）属性；

l 当设置端口为自协商（auto）状态时，端口的双工状态由本端口和对端端口自动协商而定。

设置以太网端口的速率时，当设置端口速率为自协商（auto）状态时，端口的速率由本端口和对端端口双方自动协商而定。对于千兆二层以太网端口，可以根据端口的速率自协商能力，指定自协商速率，让速率在指定范围内协商，具体配置请参见 1.3.4 配置以太网端口自协商速率 。

表1-2 以太网端口基本配置

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入以太网端口视图 | interface interface-type interface-number | -
设置当前端口的描述信息 | description text | 可选 缺省情况下，端口的描述信息为“端口名 Interface”，比如：Ethernet1/0/1 Interface
设置以太网端口的双工模式 | duplex { auto | full | half } | 可选 光类型端口和Combo端口不支持配置 half 参数 缺省情况下，以太网端口的双工模式为 auto（自协商）状态
设置以太网端口的速率 | speed { 10 | 100 | 1000 | auto } | 可选 百兆光端口不支持配置 10 和 1000 参数，千兆光口和Combo电口不支持配置 10 和 100 参数 缺省情况下，以太网端口的速率为 auto（自协商）状态
恢复当前端口的缺省配置 | default | 可选

对于光类型端口，配置的速率必须与插入的光模块速率匹配，如插入千兆光模块时，需配置 speed 命令的参数为 1000 或 auto。

1.2.3 关闭以太网端口

在某些特殊情况下（比如切换了端口的速率或双工模式等），端口相关配置不能立即生效，需要关闭和激活端口后，才能生效。

表1-3 关闭以太网端口

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
进入相应视图 | 进入以太网端口视图 | interface interface-type interface-number | 二者必选其一 在以太网端口视图下的配置，只在当前端口下生效；在端口组视图下的配置在端口组中的所有端口生效
 | 进入端口组视图 | port-group manual port-group-name
关闭当前端口 |  | shutdown | 必选 缺省情况下，端口处于激活状态

手工关闭端口，即便端口物理上是连通的，也不能转发报文，请谨慎使用本特性。

1.2.4 配置以太网端口的流量控制功能

以太网端口流量控制功能的基本原理是：如果本端设备发生拥塞，它将向对端设备发送消息，通知对端设备暂时停止发送报文；而对端设备在接收到该消息后将暂时停止向本端发送报文；反之亦然。从而避免了报文丢失现象的发生。

l 配置 flow-control 命令后，设备具有发送和接收流量控制报文的能力：当本端发生拥塞时，设备会向对端发送流量控制报文；当本端收到对端的流量控制报文后，会停止报文发送。

l 配置 flow-control receive enable 命令后，设备具有接收流量控制报文的能力，但不具有发送流量控制报文的能力。当本端收到对端的流量控制报文，会停止向对端发送报文；当本端发生拥塞时，设备不能向对端发送流量控制报文。

因此，如果要应对单向网络拥塞的情况，可以在一端配置 flow-control receive enable，在对端配置 flow-control；如果要求本端和对端网络拥塞都能处理，则两端都必须配置 flow-control。

表1-4 开启以太网端口的流量控制功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入以太网端口视图 | interface interface-type interface-number | -
开启以太网端口的流量控制功能 | flow-control | 二者必选其一 缺省情况下，以太网端口的接收流量控制功能处于关闭状态
开启以太网端口的接收流量控制功能 | flow-control receive enable

1.2.5 配置以太网端口down/up状态抑制时间

以太网端口有两种物理连接状态：up和down。一般情况下，端口的物理连接状态在up与down之间切换时，物理层会向系统报告物理端口连接状态的变化。

若在端口上配置了以太网端口down状态抑制时间后，每次当端口的物理连接状态从up变为down时，便触发以太网端口down状态抑制机制，在该抑制时间内，系统认为端口仍然处于up状态。当down状态抑制时间到达后，若端口状态仍然为down时，物理层再向系统报告物理连接状态的变化。

若在端口上配置了以太网端口up状态抑制时间后，每次当端口的物理连接状态从down变为up时，便触发以太网端口up状态抑制机制，在该抑制时间内，系统认为端口仍然处于down状态。当up状态抑制时间到达后，若端口状态仍然为up时，物理层再向系统报告物理连接状态的变化。

以太网端口down /up状态抑制功能用于避免因端口在短时间内频繁改变物理连接状态，给系统带来额外的开销。

表1-5 设置以太网端口down状态抑制时间

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入以太网端口视图 | interface interface-type interface-number | -
设置以太网端口物理连接状态抑制时间 | link-delay delay-time | 必选 缺省情况下，没有使能以太网端口down状态抑制功能

表1-6 设置以太网端口up状态抑制时间

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入以太网端口视图 | interface interface-type interface-number | -
设置以太网端口up状态抑制时间 | link-delay delay-time mode up | 必选 缺省情况下，没有使能以太网端口up状态抑制功能

l link-delay mode up 和 link-delay 命令相互覆盖，即若在同一端口上多次使用这两条命令设置抑制时间，只有最新配置生效。

l link-delay/link-delay mode up命令对自然关闭/开启的端口有效，对手工关闭/开启（使用 shutdown/undo shutdown 命令）的端口无效。

l 当在端口上使用 link-delay 命令设置了以太网端口down状态抑制时间后，若该端口的物理连接状态从up变为down时，在该设置的抑制时间内使用 display interface brief 或 display interface 命令将显示该端口一直处于up状态。

l 当在端口上使用 link-delay mode up 命令设置了以太网端口up状态抑制时间后，若该端口的物理连接状态从down变为up时，在该设置的抑制时间内使用 display interface brief 或 display interface 命令将显示该端口一直处于down状态。

1.2.6 配置以太网端口环回测试功能

用户可以开启以太网端口环回测试功能，检验以太网端口能否正常工作。测试时端口将不能正常转发数据包。以太网端口环回测试功能包括内部环回测试和外部环回测试。

l 内部环回测试：该测试在交换芯片内部建立自环，用以定位芯片内与该端口相关的功能是否出现故障。

l 外部环回测试：该测试需要在以太网端口上接一个自环头，从端口发出的报文通过自环头又环回到该端口，并被该端口接收。用以定位该端口的硬件功能是否出现故障。

表1-7 配置以太网端口环回测试功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入以太网端口视图 | interface interface-type interface-number | -
配置以太网端口进行环回测试 | loopback { external | internal } | 可选 缺省情况下，以太网端口环回测试功能处于关闭状态

l 端口在关闭状态（即端口状态显示为DOWN）下可以进行内部环回测试，但不能进行外部环回测试。端口在手工关闭状态（即端口状态显示为ADM或者Administratively DOWN）下不能进行内部和外部环回测试。

l 在进行环回测试时系统将禁止在端口上进行 speed、duplex、mdi 和 shutdown 命令的配置；

l 以太网端口开启环回测试功能时将工作在全双工状态；关闭环回测试功能后恢复原有配置。

l 环回测试配置是一次性操作，不会被记录在配置文件中。

1.2.7 以太网端口二三层模式切换

本系列交换机的端口比较灵活，可以通过配置来改变其链路模式：在二层模式（bridge）下，该端口作为一个二层以太网端口使用；而在三层模式（route）下，该端口作为一个三层以太网端口使用。

表1-8 切换以太网端口的链路模式

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
切换以太网端口的链路模式 | 系统视图下的配置 | port link-mode { bridge | route } interface-list | 二者必选其一
 | 以太网端口视图下的配置 | interface interface-type interface-number port link-mode { bridge | route }

l 链路模式切换后，该以太网端口下的所有配置都将恢复到新模式下的缺省配置。

l 以太网端口的链路模式既可以在系统视图下配置也可以在以太网端口视图下配置。当两种视图下配置的链路模式不同时，最新的配置生效。

1.2.8 配置允许长帧通过以太网端口

以太网端口在进行文件传输等大吞吐量数据交换的时候，可能会收到大于标准以太网帧长的长帧，对于这样的长帧，系统会直接丢弃不再进行处理。配置允许长帧通过功能后，当端口收到大于标准长度又在参数指定长度范围内的长帧时，系统会继续处理。

用户可以通过端口下（以太网端口视图或端口组视图下）的配置方式设置允许指定长度的长帧通过以太网端口：

l 在以太网端口视图下执行该命令，则该配置只在当前端口下生效；

l 在端口组视图下执行该命令，则该配置在端口组中的所有端口下生效。

表1-9 配置允许长帧通过以太网端口

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入以太网端口视图 | interface interface-type interface-number | -
设置允许长帧通过 | jumboframe enable [ value ] | 必选 缺省情况下，系统允许最大长度为10000字节的帧通过以太网端口。多次执行该命令配置不同的 value 值时，则最新的配置生效


1.3 二层以太网端口配置

1.3.1 二层以太网端口配置任务简介

当以太网端口工作在二层模式（bridge）时，可以进行以下配置：

表1-10 二层以太网端口配置任务简介

配置任务 | 说明 | 详细配置
配置端口组 | 可选 二层以太网端口支持 | 1.3.2
配置二层以太网端口节能功能 | 可选 二层以太网端口支持 | 1.3.3
配置以太网端口自协商速率 | 可选 二层以太网端口支持 | 1.3.4
配置以太网端口的风暴抑制比 | 可选 二层以太网端口和支持 | 1.3.5
配置以太网端口统计信息的时间间隔 | 可选 二层以太网端口支持 | 1.3.6
配置以太网端口进行环回监测 | 可选 二层以太网端口支持 | 1.3.7
配置以太网端口的MDI模式 | 可选 二层以太网端口支持 | 1.3.8
配置以太网端口桥功能 | 可选 二层以太网端口支持 | 1.3.9
检测以太网端口的连接电缆 | 可选 二层以太网端口支持 | 1.3.10
配置以太网端口流量阈值控制功能 | 可选 二层以太网端口支持 | 1.3.11

1.3.2 配置端口组

对某些功能（比如 1.3.5 配置以太网端口的风暴抑制比等），设备支持多种配置方式：用户可以一次配置一个端口，也可以一次配置多个端口。端口组就是为了实现一次可以配置多个端口而产生的。在端口组视图下，用户只需输入一次配置命令，则该端口组内的所有端口都会配置该功能，以减少重复配置工作。

端口组由用户手工创建生成，用户可将多个二层以太网端口手工加入同一个端口组中。

端口组提供了一种批量配置的方式，系统不支持查看、保存端口组本身的配置，但可以通过 display current-configuration 或者 display this 命令查看成员端口下当前生效配置。

表1-11 配置手工端口组

操作 | 命令 | 说明
进入系统视图 | system-view | -
创建手工端口组，并进入手工端口组视图 | port-group manual port-group-name | 必选
添加二层以太网端口到指定手工端口组中 | group-member interface-list | 必选 如果使用 group-member interface-type interface-start-number to interface-type interface-end-number命令形式一次将多个端口加入到指定手工端口组中时，要求本次加入的所有端口的 interface-end-number 必须大于 interface-start-number
设置允许长帧通过 | jumboframe enable [ value ] | 必选 缺省情况下，系统允许最大长度为10000字节的帧通过以太网端口。多次执行该命令配置不同的 value 值时，则最新的配置生效

1.3.3 配置二层以太网端口节能功能

配置二层以太网端口节能功能后，如果端口在连续一段时间（由芯片规格决定，不能通过命令行配置）内没有收发报文，系统会自动停止对该端口供电，端口自动进入节能模式；当端口处于节能模式并收到报文时，系统会自动对该端口供电，端口自动进入正常模式，从而达到节能的效果。

表1-12 配置二层以太网端口节能功能

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | —
进入二层以太网端口视图或端口组视图 | 进入二层以太网端口视图 | interface interface-type interface-number | 二者必选其一 在二层以太网端口视图下的配置，只在当前端口下生效；在端口组视图下的配置在端口组中的所有端口生效
 | 进入端口组视图 | port-group manual port-group-name
配置二层以太网端口节能功能 |  | port auto-power-down | 必选 缺省情况下，二层以太网端口的节能模式处于关闭状态

使用开启此功能的端口与其他设备进行对接时，若链路不能正常UP，可尝试关闭此功能。

1.3.4 配置以太网端口自协商速率

通常情况下，设备以太网端口速率是通过和对端自协商决定的。协商得到的速率可以是端口速率能力范围内的任意一个速率。通过配置自协商速率可以让以太网端口在能力范围内只协商部分速率，从而可以控制速率的协商。

图1-1 以太网端口自协商速率应用示意图

如 图1-1 所示，服务器群（Server 1、Server 2和Server 3）通过Switch A与外部网络相连，该服务器群中每台服务器的网卡速率均为100Mbps，Switch A与外部网络相连端口Ethernet1/0/4的速率也为100Mbps。如果在Switch A上不指定自协商速率范围，则端口Ethernet1/0/1、Ethernet1/0/2和Ethernet1/0/3与各服务器网卡进行速率协商的结果将均为100Mbps，这样就可能造成出端口Ethernet1/0/4的拥塞。在这种情况下，可通过将端口Ethernet1/0/1、Ethernet1/0/2和Ethernet1/0/3的自协商速率范围分别设置为10Mbps，来避免出端口的拥塞

表1-13 配置以太网端口自协商速率

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入以太网端口视图 | interface interface-type interface-number | -
设置以太网端口的自协商速率范围 | speed auto { 10 | 100 } * | 可选

l 本特性只有具备自协商速率能力的、二层以太网电口支持，Combo端口不支持配置此功能。

l 如果多次使用 speed、speed auto 命令设置端口的速率，则最新配置生效。

1.3.5 配置以太网端口的风暴抑制比

用户可以通过以下方式限制以太网端口上允许通过的广播、组播或未知单播流量的大小：

l 对全局进行配置，设置的是整个系统允许通过的最大广播、组播或未知单播报文流量。当各端口上的广播、组播或未知单播流量之和达到用户设置的值后，系统将丢弃超出广播、组播或未知单播流量限制的报文，从而使总体广播、组播或未知单播流量所占的比例降低到限定的范围，保证网络业务的正常运行。

l 在端口下进行配置，设置的是端口允许通过的最大广播、组播或未知单播报文流量。当端口上的广播、组播或未知单播流量超过用户设置的值后，系统将丢弃超出广播、组播或未知单播流量限制的报文，从而使端口广播、组播或未知单播流量所占的比例降低到限定的范围，保证网络业务的正常运行。

本特性与端口流量阈值控制功能 storm-constrain 不能同时配置，否则抑制效果不确定。端口流量阈值控制功能的详细描述请参见 1.3.11 配置以太网端口流量阈值控制功能 。

表1-14 配置以太网端口的风暴抑制比

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
进入以太网端口视图或端口组视图 | 进入以太网端口视图 | interface interface-type interface-number | 二者必选其一 在以太网端口视图下的配置，只在当前端口下生效；在端口组视图下的配置在端口组中的所有端口生效
 | 进入端口组视图 | port-group manual port-group-name
配置以太网端口的广播风暴抑制比 |  | broadcast-suppression { ratio | pps max-pps | kbps max-kbps } | 可选 缺省情况下，所有端口不对广播流量进行抑制
配置以太网端口的组播风暴抑制比例 |  | multicast-suppression { ratio | pps max-pps | kbps max-kbps } | 可选 缺省情况下，所有端口不对组播流量进行抑制
配置以太网端口的未知单播风暴抑制比 |  | unicast-suppression { ratio | pps max-pps | kbps max-kbps } | 可选 缺省情况下，所有端口不对未知单播流量进行抑制

如果端口属于某个端口组，在以太网端口视图或端口组视图下多次配置不同的抑制比数值时，则最新的配置生效。

1.3.6 配置以太网端口统计信息的时间间隔

使用以下的配置任务可以设置统计以太网端口报文信息的时间间隔。使用 display interface 命令可以显示端口在该间隔时间内统计的报文信息。使用 reset counters interface 命令可以清除端口的统计信息。

表1-15 配置以太网端口统计信息的时间间隔

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入以太网端口视图 | interface interface-type interface-number | -
配置端口统计信息的时间间隔 | flow-interval interval | 必选 端口统计信息的缺省时间间隔为300秒

1.3.7 配置以太网端口进行环回监测

端口发生环回是指设备发送出去的报文又回到该设备。环回的存在可能导致广播风暴，使用本特性能够监测设备端口是否存在环回。

根据发生环回时，报文的收、发端口是否相同，端口环回分为单端口环回和多端口环回：

l 单端口环回指的是端口发送出去的报文又从该端口回到设备，报文的接收和发送端口相同，如 图1-2 所示。

l 多端口环回指的是设备发送出去的报文又回到该设备，报文的接收和发送端口可以相同也可以不同，如 图1-3 所示。

图1-2 单端口环回示意图

图1-3 多端口环回示意图

当用户开启以太网端口环回监测功能后，如果监测到端口存在环回，设备会根据环回监测动作对报文的接收端口进行相应的操作：

(1) 对于Access端口，

l 若端口未开启环回监测动作，则将报文的接收端口变为监测受控状态。处于该状态的端口将不收发任何数据报文，并生成Trap信息，同时删除该端口对应的MAC地址转发表项；

l 若端口开启了环回监测动作，则按照环回监测动作对报文的接收端口进行处理，并生成Trap信息和日志信息，同时删除该端口对应的MAC地址转发表项；

(2) 对于Trunk端口和Hybrid端口，

l 若端口未开启环回监测动作，则生成Trap信息。当端口环回监测受控功能也同时开启时（即配置了 loopback-detection control enable），则将报文的接收端口变为监测受控状态，处于该状态的端口将不收发任何数据报文，并生成Trap信息，同时删除该端口对应的MAC地址转发表项。

l 若端口开启了环回监测动作，则生成Trap信息和日志信息。当端口环回监测受控功能也同时开启时（即配置了 loopback-detection control enable），按照环回监测动作对报文的接收端口进行处理，并向终端上报Trap信息和日志信息，同时删除该端口对应的MAC地址转发表项。

表1-16 配置以太网端口进行环回监测

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
开启全局的端口环回监测功能 |  | loopback-detection enable | 必选 缺省情况下，全局的端口环回监测功能处于关闭状态
开启多端口环回监测模式 |  | loopback-detection multi-port-mode enable | 可选 缺省情况下，多端口环回监测模式处于关闭状态，即设备只能检测到单端口环回
设置端口环回监测的时间间隔 |  | loopback-detection interval-time time | 可选 缺省情况下，端口环回监测的时间间隔为30秒
进入以太网端口视图或端口组视图 | 进入以太网端口视图 | interface interface-type interface-number | 二者必选其一 在以太网端口视图下的配置，只在当前端口下生效；在端口组视图下的配置在端口组中的所有端口生效
 | 进入端口组视图 | port-group manual port-group-name
开启指定端口的环回监测功能 |  | loopback-detection enable | 必选 缺省情况下，端口环回监测功能处于关闭状态
开启Trunk端口和Hybrid端口的环回监测受控功能 |  | loopback-detection control enable | 可选 缺省情况下，端口的环回监测受控功能处于关闭状态
配置在Trunk端口和Hybrid端口允许通过的所有VLAN内进行环回监测 |  | loopback-detection per-vlan enable | 可选 缺省情况下，系统只在Trunk端口和Hybrid端口的缺省VLAN内进行环回监测
配置在发现端口环回后对端口进行的动作 |  | loopback-detection action { no-learning | semi-block | shutdown } | 可选 缺省情况下，未配置端口环回检测动作，对被环回端口进行的动作为：端口将不收发任何数据报文，并生成Trap信息，同时删除该端口对应的MAC地址转发表项 如果指定动作为 shutdown，则被环回的端口会被系统关闭，端口物理状态为Loop down。环回消除后，需要手工执行 undo shutdown 命令才能恢复端口的转发能力

l 只有在系统视图下和指定端口视图下均配置了 loopback-detection enable 命令后，才开启端口的环回监测功能。

l 当在系统视图下配置 undo loopback-detection enable 后，所有端口的环回监测功能均被关闭。

l 对于Trunk端口或Hybrid端口，在指定端口视图下配置了 loopback-detection control enable 命令后，该端口的环回监测动作才生效。

l 当使用 port link-type { access | hybrid | trunk }命令修改端口的链路类型后，该端口下的 loopback-detection action 配置会自动恢复到缺省情况。（port link-type 命令的详细介绍请参见“二层技术-以太网交换命令参考”中的“VLAN”）

1.3.8 配置以太网端口的MDI模式

光接口不支持本特性。

用于连接以太网设备的双绞线有两种：直通线缆（straight-through cable）和交叉线缆（crossover cable）。为了使以太网端口支持使用这两种线缆，设备实现了三种MDI（Medium Dependent Interface，介质相关端口）模式：across、normal 和 auto。

物理以太网端口由8个引脚组成，缺省情况下，每个引脚都有专门的作用，比如，使用引脚1和2发送信号，引脚3和6接收信号。通过设置MDI模式，可以改变引脚在通信中的角色。使用normal模式时，不改变引脚的角色，即使用引脚1和2发送信号，使用引脚3和6接收信号；如果使用across模式，会改变引脚的角色，将使用引脚1和2接收信号，而使用引脚3和6发送信号。只有将设备的发送引脚连接到对端的接收引脚后才能正常通信，所以MDI模式需要和两种线缆配合使用。

l 通常情况下，建议用户使用 auto 模式，只有当设备不能获取网线类型参数时，才需要将模式手工指定为 across 或 normal。

l 当使用直通线缆时，两端设备的MDI模式配置不能相同。

l 当使用交叉线缆时，两端设备的MDI模式配置必须相同或者至少有一端设置为auto模式。

表1-17 配置以太网端口的MDI模式

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入以太网端口视图 | interface interface-type interface-number | -
设置以太网端口的MDI模式 | mdi { across | auto | normal } | 可选 以太网端口的MDI模式为auto，即通过协商来决·定物理引脚的角色（发送报文或接收报文）

1.3.9 配置以太网端口桥功能

某端口收到数据报文后，会查找设备上的MAC地址表。若MAC地址表中包含与该报文目的MAC地址对应的表项，但该表项中的转发出端口是接收该报文的端口，设备将直接丢弃该报文。若在该端口上使能了端口桥功能后，上述情况下的报文将不会直接被丢弃，而是通过该端口发送出去。

表1-18 配置以太网端口桥功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入以太网端口视图 | interface interface-type interface-number | -
配置以太网端口桥功能 | port bridge enable | 必选 缺省情况下，未使能端口桥功能

1.3.10 检测以太网端口的连接电缆

l 光类型接口不支持本特性。

l 在以太网端口上执行该操作会使得已经up的链路自动down、up一次。

通过以下配置任务，用户可以检测设备上以太网端口连接电缆的当前状况，系统将在5秒内返回检测结果。检测内容包括电缆的接收方向、发送方向以及是否存在短路或开路现象，同时可以检测出故障线缆的长度。

表1-19 检测以太网端口的连接电缆

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入以太网端口视图 | interface interface-type interface-number | -
对以太网端口连接电缆进行一次检测 | virtual-cable-test | 必选

1.3.11 配置以太网端口流量阈值控制功能

1. 端口流量阈值控制简介

端口流量阈值控制功能用于控制以太网上的报文风暴。启用该功能的端口会定时分别检测到达端口的未知单播报文流量、组播报文流量和广播报文流量。如果某类报文流量超过预先设置的上限阈值时，用户可以通过配置来决定是阻塞该端口还是关闭该端口，以及是否发送Trap和Log信息。

对于某种类型的报文流量，可以通过该功能或者以太网端口的风暴抑制功能（请参见“ 1.3.5 配置以太网端口的风暴抑制比 ”）来进行抑制，但是这两种功能不能同时配置，否则抑制效果不确定。比如，不能同时配置端口的未知单播报文流量阈值控制功能和未知单播风暴抑制功能。

当某种类型的报文流量超过该类报文预设的上限阈值时，系统提供了两种处理方式：

l block方式：当端口上未知单播、组播或广播报文中某类报文的流量大于其上限阈值时，端口将暂停转发该类报文（其它类型报文照常转发），端口处于阻塞状态，但仍会统计该类报文的流量。当该类报文的流量小于其下限阈值时，端口将自动恢复对此类报文的转发。

l shutdown方式：当端口上未知单播、组播或广播报文中某类报文的流量大于其上限阈值时，端口将被关闭，系统停止转发所有报文。当该类报文的流量小于其下限阈值时，端口状态不会自动恢复，此时可通过执行 undo shutdown 命令或取消端口上流量阈值的配置来恢复。

2. 配置以太网端口流量阈值控制功能

表1-20 配置以太网端口流量阈值控制功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置端口流量统计时间间隔 | storm-constrain interval seconds | 可选 缺省情况下，端口流量统计时间间隔为10秒
进入以太网端口视图 | interface interface-type interface-number | -
开启端口流量阈值控制功能，并设置上限阈值与下限阈值 | storm-constrain { broadcast | multicast | unicast } { pps | kbps | ratio } max-pps-values min-pps-values | 必选 缺省情况下，端口不进行流量阈值控制
配置端口流量大于上限阈值的控制动作 | storm-constrain control { block | shutdown } | 可选 缺省情况下，端口不进行流量阈值控制
配置端口流量超过上限阈值或者从超上限回落到低于下限阈值时输出Trap信息 | storm-constrain enable trap | 可选 缺省情况下，端口流量超过上限阈值或者从超上限回落到低下限阈值输出Trap信息
配置端口流量超过上限阈值或者从超上限回落到低于下限阈值时输出Log信息 | storm-constrain enable log | 可选 缺省情况下，端口流量超过上限阈值或者从超上限回落到低于下限阈值输出Log信息

l 为了保持网络状态的稳定，建议设置的流量统计时间间隔不低于默认值。

l 本特性实现中系统需要一个完整的周期（周期长度为seconds）来收集流量数据，下一个周期分析数据、采取相应的控制措施。因此，开启端口流量阈值控制功能后，如果某类报文流量超过预先设置的上限阈值，控制动作最短将在一个周期后执行，最长不会超过两个周期。

l 在同一个端口下，可以分别对未知单播、组播和广播报文开启流量阈值控制功能，并设置上限阈值与下限阈值。


1.4 三层以太网端口配置

当以太网端口工作在三层模式（route）时，可以配置三层以太网端口的MTU值。

1.4.1 配置三层以太网端口的MTU

MTU（Maximum Transmission Unit，最大传输单元）参数影响IP报文的分片与重组。

表1-21 配置三层以太网端口的MTU

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入三层以太网端口视图 | interface interface-type { interface-number | interface-number.subnumber } | -
设置MTU | mtu size | 可选 缺省情况下，三层以太网端口的MTU均为1500Bytes


1.5 以太网端口显示和维护

在完成上述配置后，在任意视图下执行 display 命令可以显示配置后端口的运行情况，通过查看显示信息验证配置的效果。

在用户视图下执行 reset 命令可以清除端口统计信息。

表1-22 以太网端口显示和维护

操作 | 命令
显示以太网端口的相关信息 | display interface [ interface-type ] [ brief [ down ] ] [ | { begin | exclude | include } regular-expression ] display interface interface-type interface-number [ brief ] [ | { begin | exclude | include } regular-expression ]
显示端口的报文流量统计信息 | display counters { inbound | outbound } interface [ interface-type ] [ | { begin | exclude | include } regular-expression ]
显示最近一个抽样间隔内处于up状态的端口的报文速率统计信息 | display counters rate { inbound | outbound } interface [ interface-type ] [ | { begin | exclude | include } regular-expression ]
显示指定端口丢弃报文的信息 | display packet-drop interface [ interface-type [ interface-number ] ] [ | { begin | exclude | include } regular-expression ]
显示所有端口丢弃报文摘要的信息 | display packet-drop summary [ | { begin | exclude | include } regular-expression ]
显示指定手工端口组或所有手工端口组的信息 | display port-group manual [ all | name port-group-name ] [ | { begin | exclude | include } regular-expression ]
显示端口环回监测功能的开启情况和相关信息 | display loopback-detection [ | { begin | exclude | include } regular-expression ]
显示端口流量控制信息 | display storm-constrain [ broadcast | multicast | unicast ] [ interface interface-type interface-number ] [ | { begin | exclude | include } regular-expression ]
清除以太网端口的统计信息 | reset counters interface interface-type [ interface-number ]
清除指定端口丢弃报文的统计信息 | reset packet-drop interface [ interface-type [ interface-number ] ]


1 Loopback接口和NULL接口配置

相关链接

  • 1.1 Loopback接口
  • 1.2 Null接口
  • 1.3 Loopback接口和Null接口显示和维护
父主题： 02-Loopback接口和Null接口配置


1.1 Loopback接口

1.1.1 Loopback接口简介

Loopback接口是一种纯软件性质的虚拟接口。Loopback接口具有以下特点：

l Loopback接口创建后除非手工关闭该接口，否则Loopback接口物理层状态和链路层协议永远处于UP状态。

l Loopback接口可以配置掩码为全f的IP地址，以便节约IP地址。当配置IPv4地址时，子网掩码必须是32位的。如果配置的子网掩码不是32位的，系统会自动修改为32；同样，当配置IPv6地址时，子网掩码必须是128位的。如果配置的掩码不是128位的，系统会自动修改为128。

l Loopback接口下也可以使能路由协议，可以收发路由协议报文。

鉴于上述特点，Loopback接口的应用非常广泛，主要表现在：

l 将Loopback接口地址设置为该设备产生的IP数据包的源地址。因为Loopback接口地址稳定且是单播地址，所以通常将Loopback接口地址视为设备的标志。在认证或安全等服务器上设置允许或禁止携带Loopback接口地址的报文通过，就相当于允许或禁止某台设备产生的报文通过，这样可以简化报文过滤规则。但需要注意的是，将Loopback接口地址用于IP数据包源地址时，需借助路由配置来确保Loopback接口到对端的路由可达。另外，任何送到Loopback接口的网络数据报文都会被认为是送往设备本身的，设备将不再转发这些数据包。

l 因为Loopback接口状态稳定（永远处于UP状态），该接口还常用于动态路由协议。比如，在一些动态路由协议中，当没有配置Router ID时，将选取所有Loopback接口上数值最大的IP地址作为Router ID。在BGP协议中，为了使BGP会话不受物理接口故障的影响，可将发送BGP报文的源接口配置成Loopback接口等。

1.1.2 配置Loopback接口

表1-1 配置Loopback接口

操作 | 命令 | 说明
进入系统视图 | system-view | -
创建Loopback接口，并进入Loopback接口视图 | interface loopback interface-number | -
配置当前接口的描述信息 | description text | 可选 缺省情况下，接口的描述信息为“接口名 Interface”
关闭当前接口 | shutdown | 可选 缺省情况下，Loopback接口处于开启状态
恢复当前接口的缺省配置 | default | 可选

在Loopback接口上可以配置IP地址、IP路由等参数，具体配置请参见“三层技术-IP业务配置指导”。


1.2 Null接口

1.2.1 Null接口简介

Null接口是一种纯软件性质的逻辑接口。它永远处于up状态，但不能转发数据包，也不能配置IP地址和链路层协议。如果在静态路由中指定到达某一网段的下一跳为Null接口时，则任何送到该网段的网络数据报文都会被丢弃，因此设备通过Null接口提供了一种过滤报文的简单方法——将不需要的网络流量发送到Null接口，从而免去配置ACL（访问控制列表）的复杂工作。

例如：使用静态路由配置命令“ip route-static 92.101.0.0 255.255.0.0 null 0”将丢弃所有去往网段92.101.0.0/16的报文。

1.2.2 配置Null接口

表1-2 配置Null接口

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入Null接口视图 | interface null 0 | 必选 缺省情况下，设备上已经存在Null0接口，用户不能创建也不能删除
配置当前接口的描述信息 | description text | 可选 缺省情况下，接口的描述信息为“接口名 Interface”
恢复当前接口的缺省配置 | default | 可选


1.3 Loopback接口和Null接口显示和维护

在完成上述配置后，在任意视图下执行 display 命令可以显示配置后接口的运行情况，通过查看显示信息验证配置的效果。

在用户视图下执行 reset 命令可以清除接口统计信息。

表1-3 Loopback接口和Null接口显示和维护

操作 | 命令
显示Loopback接口的相关信息 | display interface [ loopback ] [ brief ] [ | { begin | exclude | include } regular-expression ] display interface loopback interface-number [ brief ] [ | { begin | exclude | include } regular-expression ]
显示Null接口的状态信息 | display interface [ null ] [ brief [ down ] ] [ | { begin | exclude | include } regular-expression ] display interface null 0 [ brief ] [ | { begin | exclude | include } regular-expression ]
清除Loopback接口的统计信息 | reset counters interface [ loopback [ interface-number ] ]
清除Null接口的统计信息 | reset counters interface [ null [ 0 ] ]


1 MAC地址表配置

l MAC地址表中对于接口的相关配置，目前只能在二层以太网端口、二层聚合接口等二层接口上进行。

l 本章节内容只涉及单播的静态、动态、黑洞MAC地址表项的配置。有关静态组播MAC地址表项的相关介绍和配置内容，请参见“IP组播配置指导”中的“IGMP Snooping”和“MLD Snooping”。

相关链接

  • 1.1 MAC地址表简介
  • 1.2 配置MAC地址表
  • 1.3 MAC地址表显示和维护
  • 1.4 MAC地址表典型配置举例
父主题： 03-MAC地址表配置


1.1 MAC地址表简介

MAC地址表记录了与本设备相连的设备的MAC地址、本设备上与该设备相连的设备的接口号以及所属的VLAN ID。在转发数据时，设备根据报文中的目的MAC地址查询MAC地址表，快速定位出接口，从而减少广播。

1.1.1 MAC地址表项的生成方式

MAC地址表项的生成方式有两种：自动生成、手工配置。

1. 自动生成MAC地址表项

一般情况下，MAC地址表是设备通过源MAC地址学习过程而自动建立的。设备学习MAC地址的方法如下：如果从某接口（假设为接口A）收到一个数据帧，设备就会分析该数据帧的源MAC地址（假设为MAC-SOURCE），并认为目的MAC地址为MAC-SOURCE的报文可以由接口A转发；如果MAC地址表中已经包含MAC-SOURCE，设备将对该表项进行更新；如果MAC地址表中尚未包含MAC-SOURCE，设备则将这个新MAC地址以及该MAC地址对应的接口A作为一个新的表项加入到MAC地址表中。

为适应网络的变化，MAC地址表需要不断更新。MAC地址表中自动生成的表项并非永远有效，每一条表项都有一个生存周期，到达生存周期仍得不到刷新的表项将被删除，这个生存周期被称作老化时间。如果在到达生存周期前纪录被刷新，则该表项的老化时间重新计算。

2. 手工配置MAC地址表项

设备通过源MAC地址学习自动建立MAC地址表时，无法区分合法用户和黑客用户的报文，带来了安全隐患。如果黑客用户将攻击报文的源MAC地址伪装成合法用户的MAC地址，并从设备的其它接口进入，设备就会学习到错误的MAC地址表项，于是就会将本应转发给合法用户的报文转发给黑客用户。

为了提高接口安全性，网络管理员可手工在MAC地址表中加入特定MAC地址表项，将用户设备与接口绑定，从而防止假冒身份的非法用户骗取数据。

1.1.2 MAC地址表项的分类

MAC地址表项分为：静态MAC地址表项、动态MAC地址表项和黑洞MAC地址表项。

l 静态MAC地址表项由用户手工配置，表项不老化。

l 动态MAC地址表项包括用户配置的以及设备通过源MAC地址学习得来的，表项有老化时间。

l 黑洞MAC地址表项用于丢弃含有特定源MAC地址或目的MAC地址的报文（例如，出于安全考虑，可以屏蔽某个用户接收报文），由用户手工配置，表项不老化。

用户手工配置的静态MAC地址表项、黑洞MAC地址表项不会被动态MAC地址表项覆盖，而动态MAC地址表项可以被静态MAC地址表项、黑洞MAC地址表项覆盖。

1.1.3 基于MAC地址表的报文转发

设备在转发报文时，根据MAC地址表项信息，会采取以下两种转发方式：

l 单播方式：当MAC地址表中包含与报文目的MAC地址对应的表项时，设备直接将报文从该表项中的转发出接口发送。

l 广播方式：当设备收到目的地址为全1的报文，或MAC地址表中没有包含对应报文目的MAC地址的表项时，设备将采取广播方式将报文向除接收接口外的所有接口进行转发。


1.2 配置MAC地址表

以下配置均为可选配置，且配置过程无先后顺序，用户可以根据实际情况选择配置。

1.2.1 配置MAC地址表项

一般情况下，设备通过源MAC地址学习过程自动建立MAC地址表。

为了提高接口安全性，网络管理员可手工在MAC地址表中加入特定MAC地址表项，将用户设备与接口绑定，从而防止假冒身份的非法用户骗取数据。

另外，如果需要丢弃指定源MAC地址或目的MAC地址的报文，可配置黑洞MAC地址表项。

1. 全局配置MAC地址表项

表1-1 全局配置MAC地址表项

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
全局配置MAC地址表项 | 配置动态/静态MAC地址表项 | mac-address { dynamic | static } mac-address interface interface-type interface-number vlan vlan-id | 二者必选其一
 | 配置黑洞MAC地址表项 | mac-address blackhole mac-address vlan vlan-id

在添加MAC地址表项时，命令中 interface 参数指定的接口必须属于 vlan 参数指定的VLAN，而且该VLAN必须事先创建，否则将添加失败。

2. 接口配置MAC地址表项

表1-2 接口配置MAC地址表项

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入二层以太网端口、二层聚合接口视图 | interface interface-type interface-number | -
添加/修改接口下的MAC地址表项 | mac-address { dynamic | static } mac-address vlan vlan-id | 必选

在添加MAC地址表项时，当前的接口必须属于命令中 vlan 参数指定的VLAN，而且该VLAN必须事先创建，否则将添加失败。

1.2.2 关闭VLAN的MAC地址学习功能

有时为了保证设备的安全，需要关闭MAC地址学习功能。常见的危及设备安全的情况是：黑客使用大量源MAC地址不同的报文攻击设备，导致设备MAC地址表资源耗尽，造成设备无法根据网络的变化更新MAC地址表。关闭MAC地址学习功能可以有效防止这种攻击。

用户可以关闭设备上的指定VLAN的MAC地址学习功能。

表1-3 关闭VLAN的MAC地址学习功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入VLAN视图 | vlan vlan-id | -
关闭VLAN的MAC地址学习功能 | mac-address mac-learning disable | 必选 缺省情况下，开启VLAN的MAC地址学习功能

关闭MAC地址学习功能后，已经学习到的MAC地址表项将继续有效直至老化。

1.2.3 配置动态MAC地址表项的老化时间

当网络拓扑改变后，动态MAC地址表项不会及时自动更新。这样，由于设备学习不到新的MAC地址，会导致用户流量不能正常转发。因此，需要配置动态MAC地址表项老化时间。超出设定的老化时间，动态MAC地址表项被自动删除，设备重新进行MAC地址学习，构建新的动态MAC地址表项。

配置合适的老化时间可以有效利用MAC地址老化功能。用户配置的老化时间过长或者过短，都可能影响设备的运行性能：

l 如果用户配置的老化时间过长，设备可能会保存许多过时的MAC地址表项，从而耗尽MAC地址表资源，导致设备无法根据网络的变化更新MAC地址表。

l 如果用户配置的老化时间太短，设备可能会删除有效的MAC地址表项，可能导致设备广播大量的数据报文，影响设备的运行性能。

表1-4 配置动态MAC地址表项的老化时间

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置动态MAC地址表项的老化时间 | mac-address timer { aging seconds | no-aging } | 可选 缺省情况下，MAC地址老化时间为300秒

l 动态MAC地址表项的老化时间作用于全部接口上，地址老化只对动态的（设备学习到的或者用户配置的动态的）MAC地址表项起作用。

l 在一个比较稳定的网络，如果长时间没有流量，动态MAC地址表项会被全部删除，可能导致设备突然广播大量的数据报文，被他人侦听，造成安全隐患，此时可将动态MAC地址表项的老化时间设成 no-aging（不老化），以减少广播，增加网络稳定性和安全性。

1.2.4 配置端口最多可以学习到的MAC地址数

通过配置二层以太网端口或端口组最多可以学习到的MAC地址数，用户可以控制设备维护的MAC地址表的表项数量。当接口学习到的MAC地址数达到配置的最大值时，该接口将不再对MAC地址进行学习。

表1-5 配置接口最多可以学习到的MAC地址数

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
进入二层以太网端口、或者端口组视图 | 进入二层以太网端口视图 | interface interface-type interface-number | 二者必选其一 进入二层以太网端口视图后，下面进行的配置只在当前接口生效；进入端口组视图后，下面进行的配置将在端口组的所有接口生效
 | 进入端口组视图 | port-group manual port-group-name
配置接口最多可以学习到的MAC地址数 |  | mac-address max-mac-count count | 必选 缺省情况下，没有配置以太网端口/端口组最多可以学习到的MAC地址数

l 二层链路聚合端口不支持配置端口最多可以学习到的MAC地址数。

l 当以太网端口被配置为聚合组的成员端口后，如果在这些成员端口上配置端口最多可以学习到的MAC地址数，会导致成员端口不能被选中，因此，请不要在聚合组的成员端口上配置端口最多可以学习到的MAC地址数。

1.2.5 配置MAC地址漫游功能

如图1-1 所示，是MAC地址漫游功能的典型应用场景。Device A和Device B是两台配置了IRF功能的本系列交换机。无线接入点AP C和AP D分别连接到IRF成员设备Device A和Device B。

开启MAC地址漫游功能后，IRF成员设备会将学习到的MAC地址同步给IRF设备内的其他成员设备。如图1-1 所示，当Client A通过AP C接入时，Device A会将学习到的Client A的MAC地址同步给IRF设备内的其他成员设备Device B。

图1-1 Client A通过AP C接入时的MAC地址表

当用户的接入地点发生变化，例如从AP C的覆盖区域移动到AP D的覆盖区域时，IRF会将Client A的MAC地址重新学习到Device B上，并将更新后的MAC地址同步给IRF设备内的其他成员设备Device A（如图1-2 所示），使用户的通信不受任何影响。

图1-2 Client A移动到通过AP D接入时的MAC地址表

表1-6 配置MAC地址漫游功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置MAC地址漫游功能 | mac-address mac-roaming enable | 必选 缺省情况下，MAC地址漫游功能处于关闭状态


1.3 MAC地址表显示和维护

在完成上述配置后，在任意视图下执行 display 命令可以显示配置后MAC地址表的运行情况，通过查看显示信息验证配置的效果。

表1-7 MAC地址表显示和维护

操作 | 命令
显示MAC地址表信息 | display mac-address [ mac-address [ vlan vlan-id ] | [ [ dynamic | static ] [ interface interface-type interface-number ] | blackhole ] [ vlan vlan-id ] [ count ] ] [ | { begin | exclude | include } regular-expression ]
显示MAC地址表动态表项的老化时间 | display mac-address aging-time [ | { begin | exclude | include } regular-expression ]
显示系统或接口MAC地址的学习状态 | display mac-address mac-learning [ interface-type interface-number ] [ | { begin | exclude | include } regular-expression ]
显示MAC地址表的统计信息 | display mac-address statistics [ | { begin | exclude | include } regular-expression ]


1.4 MAC地址表典型配置举例

1. 组网需求

l 现有一个用户主机Host A，它的MAC地址为000f-e235-dc71，所属VLAN为VLAN 1，所连的设备接口为Ethernet1/0/1。为防止MAC地址攻击，在设备的MAC地址表中为该用户主机添加一条静态表项。

l 另有一个用户主机Host B，它的MAC地址为000f-e235-abcd，所属VLAN为VLAN 1。由于该用户主机曾经接入网络进行非法操作，为了避免此种情况再次发生，在设备上添加一条黑洞MAC地址表项，使该用户主机接收不到报文。

l 配置设备的动态MAC地址表项老化时间为500秒。

2. 组网图

3. 配置步骤

# 增加一个静态MAC地址表项。

<Sysname> system-view

[Sysname] mac-address static 000f-e235-dc71 interface ethernet 1/0/1 vlan 1

# 增加一个黑洞MAC地址表项。

[Sysname] mac-address blackhole 000f-e235-abcd vlan 1

# 配置动态MAC地址表项的老化时间为500秒。

[Sysname] mac-address timer aging 500

# 查看以太网端口Ethernet1/0/1上的MAC地址表信息。

[Sysname] display mac-address interface ethernet 1/0/1

MAC ADDR VLAN ID STATE PORT INDEX AGING TIME(s)

000f-e235-dc71 1 Config static Ethernet 1/0/1 NOAGED

--- 1 mac address(es) found ---

# 查看黑洞MAC地址表信息。

[Sysname] display mac-address blackhole

MAC ADDR VLAN ID STATE PORT INDEX AGING TIME(s)

000f-e235-abcd 1 Blackhole N/A NOAGED

--- 1 mac address(es) found ---

# 查看动态MAC地址表项的老化时间。

[Sysname] display mac-address aging-time

Mac address aging time: 500s


2 MAC Information配置

相关链接

  • 2.1 MAC Information简介
  • 2.2 配置MAC Information功能
  • 2.3 MAC Information典型配置举例
父主题： 03-MAC地址表配置


2.1 MAC Information简介

2.1.1 MAC Information介绍

在网络监控中，需要对加入和离开网络的用户进行监控。由于MAC地址能唯一标识一个网络用户，所以可以通过监控加入和离开网络的MAC地址对用户进行跟踪。

通过使用MAC Information功能，当二层以太网端口学习到或删除MAC地址时会发送Syslog或Trap信息，通过对Syslog和Trap信息的分析，监控端可以实现对进入网络的用户进行监控。

2.1.2 MAC Information的工作机制

当设备学习到一条新的MAC地址或删除掉一条已有MAC地址时，设备将MAC地址相关信息写入设备的记录用户信息的缓冲区。当用户设定的发送MAC监控Syslog或Trap的时间间隔到期，或记录用户信息的缓冲区被写满时，设备立即发送记录的MAC地址的Syslog或Trap信息。

l 设备仅记录和发送通过源MAC地址学习自动生成的MAC地址、通过和未通过MAC地址认证的MAC地址、通过802.1X认证的MAC地址、Voice Vlan匹配的OUI MAC地址，以及安全MAC地址等。对黑洞MAC地址、静态MAC地址、用户配置的动态MAC地址、组播MAC地址和本机MAC地址不进行记录和发送。

l 关于MAC地址认证的详细介绍请参见“安全配置指导”中的“MAC地址认证”。

l 关于802.1X的详细介绍请参见“安全配置指导”中的“802.1X”。

l 关于安全MAC地址的详细介绍请参见“安全配置指导”中的“端口安全”。

l 关于Voice VLAN和OUI MAC地址的详细介绍请参见“二层技术-以太网交换配置指导”中的“Voice VLAN”。


2.2 配置MAC Information功能

2.2.1 使能全局MAC Information功能

表2-1 使能全局MAC Information功能

配置步骤 | 命令 | 说明
进入系统视图 | system-view | -
使能全局MAC Information功能 | mac-address information enable | 必选 缺省情况下，全局MAC Information功能处于关闭状态

2.2.2 使能基于接口的MAC Information功能

表2-2 使能基于接口的MAC Information功能

配置步骤 | 命令 | 说明
进入系统视图 | system-view | -
进入二层以太网端口视图 | interface interface-type interface-number | -
使能基于接口的MAC Information功能 | mac-address information enable { added | deleted } | 必选 缺省情况下，基于接口的MAC Information功能处于关闭状态

当全局MAC Information功能未使能时，即使以太网端口下使能了MAC Information功能，MAC Information功能也处于关闭状态。

2.2.3 配置MAC Information工作模式

表2-3 配置MAC Information工作模式

配置步骤 | 命令 | 说明
进入系统视图 | system-view | -
配置MAC Information工作模式 | mac-address information mode { syslog | trap } | 可选 缺省情况下，MAC变化通知功能采用Trap方式发送

2.2.4 配置发送Syslog或Trap信息的时间间隔

为了防止过多的Syslog或Trap信息干扰用户，用户可以配置发送Syslog或Trap信息的时间间隔，当到达时间间隔时再发送Syslog或Trap信息。

表2-4 配置发送Syslog或Trap信息的时间间隔

配置步骤 | 命令 | 说明
进入系统视图 | system-view | -
配置发送Syslog或Trap信息的时间间隔 | mac-address information interval interval-time | 可选 缺省情况下，发送Syslog或Trap信息的时间间隔为1秒

2.2.5 配置MAC Information缓存队列长度

为了能够不丢失监控的用户信息，在记录用户信息的缓存被写满时，即使还未到发送Syslog或Trap的时间间隔，也会强制发送缓存中已经记录的用户信息。

表2-5 配置MAC Information缓存队列长度

配置步骤 | 命令 | 说明
进入系统视图 | system-view | -
配置MAC Information缓存队列长度 | mac-address information queue-length value | 可选 缺省情况下，MAC Information缓存队列长度为50


2.3 MAC Information典型配置举例

2.3.1 MAC Information典型配置举例

1. 组网需求

l Host A与远端服务器Server通过Device相连；

l 在Device的Ethernet1/0/1上使能MAC Information功能，Device将MAC变化信息利用Syslog方式通过Ethernet1/0/3发送给Host B，Host B对接收到的Syslog信息进行分析并显示。

2. 组网图

图2-1 MAC Information典型配置组网图

3. 配置步骤

(1) 配置Device可以将Syslog发送到Host B

详细内容请参见“网络管理和监控配置指导”中的“信息中心”。

(2) 使能MAC Information功能

# 全局使能MAC Information。

<Device> system-view

[Device] mac-address information enabele

# 配置MAC Information工作模式为Syslog方式。

[Device] mac-address information mode syslog

# 配置接口Ethernet1/0/1使能MAC Information。

[Device] interface ethernet 1/0/1

[Device-Ethernet1/0/1] mac-address information enable added

[Device-Ethernet1/0/1] mac-address information enable deleted

[Device-Ethernet1/0/1] quit

# 配置MAC Information缓存队列长度为100

[Device] mac-address information queue-length 100

# 配置MAC Information发送时间间隔为20秒

[Device] mac-address information interval 20


1 以太网链路聚合配置

相关链接

  • 1.1 以太网链路聚合简介
  • 1.2 以太网链路聚合配置任务简介
  • 1.3 配置聚合组
  • 1.4 聚合接口相关配置
  • 1.5 配置聚合负载分担
  • 1.6 配置聚合流量重定向功能
  • 1.7 以太网链路聚合显示与维护
  • 1.8 以太网链路聚合典型配置举例
父主题： 04-以太网链路聚合配置


1.1 以太网链路聚合简介

以太网链路聚合简称链路聚合，它通过将多条以太网物理链路捆绑在一起成为一条逻辑链路，从而实现增加链路带宽的目的。同时，这些捆绑在一起的链路通过相互间的动态备份，可以有效地提高链路的可靠性。

如图1-1 所示，Device A与Device B之间通过三条以太网物理链路相连，将这三条链路捆绑在一起，就成为了一条逻辑链路Link aggregation 1，这条逻辑链路的带宽等于原先三条以太网物理链路的带宽总和，从而达到了增加链路带宽的目的；同时，这三条以太网物理链路相互备份，有效地提高了链路的可靠性。

图1-1 链路聚合示意图

1.1.1 基本概念

1. 聚合组、成员端口和聚合接口

将多个以太网接口捆绑在一起所形成的组合称为聚合组，而这些被捆绑在一起的以太网接口就称为该聚合组的成员端口。每个聚合组唯一对应着一个逻辑接口，我们称之为聚合接口。聚合组/聚合接口可以分为以下两种类型：

l 二层聚合组/二层聚合接口：二层聚合组的成员端口全部为二层以太网接口，其对应的聚合接口称为二层聚合接口（Bridge-aggregation Interface，BAGG）。

l 三层聚合组/三层聚合接口：三层聚合组的成员端口全部为三层以太网接口，其对应的聚合接口称为三层聚合接口（Route-aggregation Interface，RAGG）。

l 聚合组与聚合接口的编号是一一对应的，譬如聚合组1对应于聚合接口1。

l 聚合接口的速率和双工模式取决于对应聚合组内的选中端口（请参见“ 1.1.1 2. 成员端口的状态 ”）：聚合接口的速率等于所有选中端口的速率之和，聚合接口的双工模式则与选中端口的双工模式相同。

2. 成员端口的状态

聚合组内的成员端口具有以下两种状态：

l 选中（Selected）状态：此状态下的成员端口可以参与用户数据的转发，处于此状态的成员端口简称为“选中端口”。

l 非选中（Unselected）状态：此状态下的成员端口不能参与用户数据的转发，处于此状态的成员端口简称为“非选中端口”。

3. 操作Key

操作Key是系统在进行链路聚合时用来表征成员端口聚合能力的一个数值，它是根据成员端口上的一些信息（包括该端口的速率、双工模式等）的组合自动计算生成的，这个信息组合中任何一项的变化都会引起操作Key的重新计算。在同一聚合组中，所有的选中端口都必须具有相同的操作Key。

4. 配置分类

根据对成员端口状态的影响不同，我们可以将成员端口上的配置分为以下三类：

(1) 端口属性类配置：包含速率、双工模式和链路状态（up/down）这三项配置内容，是成员端口上最基础的配置内容。

(2) 第二类配置：包含的配置内容如表1-1 所示。在聚合组中，只有与对应聚合接口的第二类配置完全相同的成员端口才能够成为选中端口。

表1-1 第二类配置的内容

配置项 | 内容
端口隔离 | 端口是否加入隔离组、端口所属的端口隔离组
QinQ配置 | 端口的QinQ功能开启/关闭状态、VLAN Tag的TPID值、添加的外层VLAN Tag、内外层VLAN优先级映射关系、不同内层VLAN ID添加外层VLAN Tag的策略、内层VLAN ID替换关系
VLAN配置 | 端口上允许通过的VLAN、端口缺省VLAN ID、端口的链路类型（即Trunk、Hybrid、Access类型）、基于IP子网的VLAN配置、基于协议的VLAN配置、VLAN报文是否带Tag配置
MAC地址学习配置 | 是否具有MAC地址学习功能、端口是否具有最大学习MAC地址个数的限制、MAC地址表满后是否继续转发

l 在聚合接口上所作的第二类配置，将被自动同步到对应聚合组内的所有成员端口上。当聚合接口被删除后，这些配置仍将保留在这些成员端口上。

l 由于成员端口上第二类配置的改变可能导致其选中/非选中状态发生变化，进而对业务产生影响，因此当在成员端口上进行此类配置时，系统将给出提示信息，由用户来决定是否继续执行该配置。

(3) 第一类配置：是相对于第二类配置而言的，包含的配置内容有GVRP、MSTP等。在聚合组中，即使某成员端口与对应聚合接口的第一类配置存在不同，也不会影响该成员端口成为选中端口。

在成员端口上所作的第一类配置，只有当该成员端口退出聚合组后才能生效。

5. 参考端口

参考端口从成员端口中选出，其端口属性类配置和第二类配置将作为同一聚合组内的其它成员端口的参照，以确定这些成员端口的状态。

6. LACP协议

基于IEEE802.3ad标准的LACP（Link Aggregation Control Protocol，链路聚合控制协议）协议是一种实现链路动态聚合的协议，运行该协议的设备之间通过互发LACPDU（Link Aggregation Control Protocol Data Unit，链路聚合控制协议数据单元）来交互链路聚合的相关信息。

(1) LACP协议的功能

根据所使用的LACPDU字段的不同，可将LACP协议的功能分为基本功能和扩展功能两大类，如 表1-2 所示。

表1-2 LACP协议的功能分类

类别 | 说明
基本功能 | 利用LACPDU的基本字段可以实现LACP协议的基本功能，基本字段包含以下信息：系统LACP优先级、系统MAC地址、端口聚合优先级、端口编号和操作Key。 动态聚合组内的成员端口会自动使能LACP协议，并通过发送LACPDU向对端通告本端的上述信息。当对端收到该LACPDU后，将其中的信息与本端其它成员端口收到的信息进行比较，以选择能够处于选中状态的成员端口，使双方可以对各自接口的选中/非选中状态达成一致，从而决定哪些链路可以加入聚合组以及某链路何时可以加入聚合组。
扩展功能 | 通过对LACPDU的字段进行扩展，可以实现对LACP协议的扩展。譬如，通过在扩展字段中定义一个新的TLV（Type/Length/Value，类型/长度/值）数据域，可以实现IRF（Intelligent Resilient Framework，智能弹性架构）中的LACP MAD（Multi-Active Detection，多Active检测）机制。对于支持LACP协议扩展功能的设备来说： l 如果同时支持IRF，则该设备可以作为成员设备或中间设备来参与LACP MAD l 如果不支持IRF，则该设备只能作为中间设备来参与LACP MAD

有关IRF、成员设备、中间设备和LACP MAD机制的详细介绍，请参见“IRF配置指导”中的“IRF”。

(2) LACP优先级

根据作用的不同，可以将LACP优先级分为系统LACP优先级和端口聚合优先级两类，如 表1-3 所示。

表1-3 LACP优先级的分类

类别 | 说明 | 比较标准
系统LACP优先级 | 系统LACP优先级用于区分两端设备优先级的高低。要想使两端设备的选中端口一致，可以使一端具有较高的优先级，另一端则根据优先级较高的一端来选择本端的选中端口 | 优先级数值越小，优先级越高
端口聚合优先级 | 端口聚合优先级用于区分各成员端口成为选中端口的优先程度

(3) LACP超时时间

LACP超时时间是指成员端口等待接收LACPDU的超时时间。在三倍LACP超时时间之后，如果本端成员端口仍未收到来自对端的LACPDU，则认为对端成员端口已失效。LACP超时时间只有短超时（1秒）和长超时（30秒）两种取值。

7. 聚合模式

根据成员端口上是否启用了LACP协议，可以将链路聚合分为静态聚合和动态聚合两种模式，它们各自的特点如 表1-4 所示。

表1-4 不同聚合模式的特点

聚合模式 | 成员端口是否开启LACP协议 | 优点 | 缺点
静态聚合模式 | 否 | 一旦配置好后，端口的选中/非选中状态就不会受网络环境的影响，比较稳定 | 不能根据对端的状态调整端口的选中/非选中状态，不够灵活
动态聚合模式 | 是 | 能够根据对端和本端的信息调整端口的选中/非选中状态，比较灵活 | 端口的选中/非选中状态容易受网络环境的影响，不够稳定

处于静态聚合模式和动态聚合模式下的聚合组分别称为静态聚合组和动态聚合组，动态聚合组内的选中端口以及处于up状态、与对应聚合接口的第二类配置相同的非选中端口均可以收发LACPDU。

1.1.2 静态聚合模式

在静态聚合模式下，聚合组内的成员端口上不启用LACP协议，其端口状态通过手工进行维护。静态聚合模式的工作机制如下：

1. 选择参考端口

当聚合组内有处于up状态的端口时，先比较端口的聚合优先级，优先级数值最小的端口作为参考端口；如果优先级相同，再按照端口的全双工/高速率->全双工/低速率->半双工/高速率->半双工/低速率的优先次序，选择优先次序最高、且第二类配置与对应聚合接口相同的端口作为该组的参考端口；如果优先次序也相同，则选择端口号最小的端口作为参考端口。

2. 确定成员端口的状态

静态聚合组内成员端口状态的确定流程如 图1-2 所示。

图1-2 静态聚合组内成员端口状态的确定流程

l 当一个成员端口的端口属性类配置或第二类配置改变时，其所在静态聚合组内各成员端口的选中/非选中状态可能会发生改变。

l 当静态聚合组内选中端口的数量已达到上限时，后加入的成员端口即使满足成为选中端口的所有条件，也不会立刻成为选中端口。这样能够尽量维持当前选中端口上的流量不中断，但是由于设备重启时会重新计算选中端口，因此可能导致设备重启前、后各成员端口的选中/非选中状态不一致。

1.1.3 动态聚合模式

在动态聚合模式下，聚合组内的成员端口上均启用LACP协议，其端口状态通过该协议自动进行维护。动态聚合模式的工作机制如下：

1. 选择参考端口

(1) 首先，从聚合链路的两端选出设备ID（由系统的LACP优先级和系统的MAC地址共同构成）较小的一端：先比较两端的系统LACP优先级，优先级数值越小其设备ID越小；如果优先级相同再比较其系统MAC地址，MAC地址越小其设备ID越小。

(2) 其次，对于设备ID较小的一端，再比较其聚合组内各成员端口的端口ID（由端口的聚合优先级和端口的编号共同构成）：先比较端口的聚合优先级，优先级数值越小其端口ID越小；如果优先级相同再比较其端口号，端口号越小其端口ID越小。端口ID最小的端口作为参考端口。

2. 确定成员端口的状态

在设备ID较小的一端，动态聚合组内成员端口状态的确定流程如 图1-3 所示。

图1-3 动态聚合组内成员端口状态的确定流程

与此同时，设备ID较大的一端也会随着对端成员端口状态的变化，随时调整本端各成员端口的状态，以确保聚合链路两端成员端口状态的一致。

l 当动态聚合组内同时存在全双工端口和半双工端口时，全双工端口将优先成为选中端口；只有当所有全双工端口都无法成为选中端口，或动态聚合组内只有半双工端口时，才允许从半双工端口中选出一个成为选中端口，且只有一个半双工端口可成为选中端口。

l 当一个成员端口的端口属性类配置或第二类配置改变时，其所在动态聚合组内各成员端口的选中/非选中状态可能会发生改变。

l 当本端端口的选中/非选中状态发生改变时，其对端端口的选中/非选中状态也将随之改变。

l 当动态聚合组内选中端口的数量已达到上限时，后加入的成员端口一旦满足成为选中端口的所有条件，就会立刻取代已不满足条件的端口成为选中端口。

1.1.4 聚合负载分担类型

通过采用不同的聚合负载分担类型及其组合，可以灵活地实现对聚合组内流量的负载分担。聚合负载分担的类型包括以下几种：

l 根据报文的MAC地址进行聚合负载分担

l 根据报文的服务端口号进行聚合负载分担

l 根据报文的入端口进行聚合负载分担

l 根据报文的IP地址进行聚合负载分担

用户可以指定系统按照上述聚合负载分担类型的其中之一或其组合来进行负载分担，此外用户也可以指定系统按照报文类型（如二层、IPv4、IPv6等）自动选择聚合负载分担的类型，还可以指定系统对每个报文逐包进行聚合负载分担。


1.2 以太网链路聚合配置任务简介

表1-5 以太网链路聚合配置任务简介

配置任务 |  | 说明 | 详细配置
配置聚合组 | 配置静态聚合组 | 二者必选其一 | 1.3.1
 | 配置动态聚合组 |  | 1.3.2
聚合接口相关配置 | 配置聚合接口的描述信息 | 可选 | 1.4.1
 | 配置三层聚合接口MTU | 可选 | 1.4.2
 | 开启聚合接口链路状态变化Trap功能 | 可选 | 1.4.3
 | 限制聚合组内选中端口的数量 | 可选 | 1.4.4
 | 关闭聚合接口 | 可选 | 1.4.5
 | 恢复聚合接口的缺省配置 | 可选 | 1.4.6
配置聚合负载分担 | 配置聚合负载分担类型 | 可选 | 1.5.1
 | 配置聚合负载分担为本地转发优先 | 可选 | 1.5.2
配置聚合流量重定向功能 |  | 可选 | 1.6


1.3 配置聚合组

请根据需要聚合的以太网接口类型来配置相应类型的聚合组：当需要聚合的是二层以太网接口时，请配置二层聚合组；当需要聚合的是三层以太网接口时，请配置三层聚合组。聚合链路的两端应配置相同的聚合模式。

l 配置或使能了下列功能的端口将不能加入二层聚合组：RRPP（请参见“可靠性配置指导/RRPP”）、MAC地址认证（请参见“安全配置指导/MAC地址认证”）、端口安全模式（请参见“安全配置指导/端口安全”）、IP Source Guard功能（请参见“安全配置指导/IP Source Guard”）、802.1X功能（请参见“安全配置指导/802.1X”）以及Portal免认证规则源接口（请参见“安全配置指导/Portal”）。

l 配置或使能了下列功能的接口将不能加入三层聚合组：IP地址（请参见“三层技术-IP业务配置指导/IP地址”）、DHCP客户端（请参见“三层技术-IP业务配置指导/DHCP”）、BOOTP客户端（请参见“三层技术-IP业务配置指导/DHCP”）、VRRP功能（请参见“可靠性配置指导/VRRP”）和Portal功能（请参见“安全配置指导/Portal”）。

用户删除聚合接口时，系统将自动删除对应的聚合组，且该聚合组内的所有成员端口将全部离开该聚合组。

1.3.1 配置静态聚合组

对于静态聚合模式，用户需要保证在同一链路两端端口的选中/非选中状态的一致性，否则聚合功能无法正常使用。

1. 配置二层静态聚合组

表1-6 配置二层静态聚合组

操作 | 命令 | 说明
进入系统视图 | system-view | -
创建二层聚合接口，并进入二层聚合接口视图 | interface bridge-aggregation interface-number | 必选 创建二层聚合接口后，系统将自动生成同编号的二层聚合组，且该聚合组缺省工作在静态聚合模式下
退回系统视图 | quit | -
进入二层以太网接口视图 | interface interface-type interface-number | 必选 多次执行此步骤可将多个二层以太网接口加入聚合组
将二层以太网接口加入聚合组 | port link-aggregation group number
配置端口的聚合优先级 | link-aggregation port-priority port-priority | 可选 缺省情况下，端口的聚合优先级为32768 改变端口的聚合优先级，将会影响到静态聚合组成员端口的选中/非选中状态

2. 配置三层静态聚合组

表1-7 配置三层静态聚合组

操作 | 命令 | 说明
进入系统视图 | system-view | -
创建三层聚合接口，并进入三层聚合接口视图 | interface route-aggregation interface-number | 必选 创建三层聚合接口后，系统将自动生成同编号的三层聚合组，且该聚合组缺省工作在静态聚合模式下
退回系统视图 | quit | -
进入三层以太网接口视图 | interface interface-type interface-number | 必选 多次执行此步骤可将多个三层以太网接口加入聚合组
将三层以太网接口加入聚合组 | port link-aggregation group number
配置端口的聚合优先级 | link-aggregation port-priority port-priority | 可选 缺省情况下，端口的聚合优先级为32768 改变端口的聚合优先级，将会影响到静态聚合组成员端口的选中/非选中状态

1.3.2 配置动态聚合组

对于动态聚合模式，聚合链路两端的设备会自动协商同一链路两端的端口在各自聚合组内的选中/非选中状态，用户只需保证本端聚合在一起的端口的对端也同样聚合在一起，聚合功能即可正常使用。

1. 配置二层动态聚合组

表1-8 配置二层动态聚合组

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置系统的LACP优先级 | lacp system-priority system-priority | 可选 缺省情况下，系统的LACP优先级为32768 改变系统的LACP优先级，将会影响到动态聚合组成员端口的选中/非选中状态
创建二层聚合接口，并进入二层聚合接口视图 | interface bridge-aggregation interface-number | 必选 创建二层聚合接口后，系统将自动生成同编号的二层聚合组，且该聚合组缺省工作在静态聚合模式下
配置聚合组工作在动态聚合模式下 | link-aggregation mode dynamic | 必选 缺省情况下，聚合组工作在静态聚合模式下
退回系统视图 | quit | -
进入二层以太网接口视图 | interface interface-type interface-number | 必选 多次执行此步骤可将多个二层以太网接口加入聚合组
将二层以太网接口加入聚合组 | port link-aggregation group number
配置端口的聚合优先级 | link-aggregation port-priority port-priority | 可选 缺省情况下，端口的聚合优先级为32768 改变端口的聚合优先级，将会影响到动态聚合组成员端口的选中/非选中状态
配置端口的LACP超时时间为短超时（即1秒） | lacp period short | 可选 缺省情况下，端口的LACP超时时间为长超时（即30秒）

2. 配置三层动态聚合组

表1-9 配置三层动态聚合组

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置系统的LACP优先级 | lacp system-priority system-priority | 可选 缺省情况下，系统的LACP优先级为32768 改变系统的LACP优先级，将会影响到动态聚合组成员的选中/非选中状态
创建三层聚合接口，并进入三层聚合接口视图 | interface route-aggregation interface-number | 必选 创建三层聚合接口后，系统将自动生成同编号的三层聚合组，且该聚合组缺省工作在静态聚合模式下
配置聚合组工作在动态聚合模式下 | link-aggregation mode dynamic | 必选 缺省情况下，聚合组工作在静态聚合模式下
退回系统视图 | quit | -
进入三层以太网接口视图 | interface interface-type interface-number | 必选 多次执行此步骤可将多个三层以太网接口加入聚合组
将三层以太网接口加入聚合组 | port link-aggregation group number
配置端口的聚合优先级 | link-aggregation port-priority port-priority | 可选 缺省情况下，端口的聚合优先级为32768 改变端口的聚合优先级，将会影响到动态聚合组成员的选中/非选中状态
配置端口的LACP超时时间为短超时（即1秒） | lacp period short | 可选 缺省情况下，端口的LACP超时时间为长超时（即30秒）


1.4 聚合接口相关配置

本节对能够在聚合接口上进行的部分配置进行介绍。除本节所介绍的以外，能够在二层/三层以太网接口上进行的配置大多数也能在二层/三层聚合接口上进行，具体配置请参见相关的配置手册。

1.4.1 配置聚合接口的描述信息

通过在接口上配置描述信息，可以方便网络管理员根据这些信息来区分各接口的作用。

表1-10 配置聚合接口的描述信息

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
进入聚合接口视图 | 进入二层聚合接口视图 | interface bridge-aggregation interface-number | 二者必选其一
 | 进入三层聚合接口视图 | interface route-aggregation interface-number
配置当前接口的描述信息 |  | description text | 可选 缺省情况下，接口的描述信息为“接口名 Interface”

1.4.2 配置三层聚合接口MTU

MTU（Maximum Transmission Unit，最大传输单元）参数会影响IP报文的分片与重组，可以通过下面的配置来改变MTU值。

表1-11 配置三层聚合接口MTU

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入三层聚合接口视图 | interface route-aggregation interface-number | -
配置三层聚合接口的MTU值 | mtu size | 可选 缺省情况下，三层聚合接口的MTU值为1500字节

1.4.3 开启聚合接口链路状态变化Trap功能

在聚合接口上开启了接口链路状态变化Trap功能后，可以使聚合接口在链路状态发生改变时生成并发送端口Link up和Link down的Trap报文。有关Trap的详细介绍，请参见“网络管理和监控配置指导”中的“SNMP”。

表1-12 开启聚合接口状态变化Trap功能

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
开启全局接口链路状态变化Trap功能 |  | snmp-agent trap enable [ standard [ linkdown | linkup ] * ] | 可选 缺省情况下，全局接口链路状态变化Trap功能处于开启状态
进入聚合接口视图 | 进入二层聚合接口视图 | interface bridge-aggregation interface-number | 二者必选其一
 | 进入三层聚合接口视图 | interface route-aggregation interface-number
开启接口链路状态变化Trap功能 |  | enable snmp trap updown | 可选 缺省情况下，接口链路状态变化Trap功能处于开启状态

1.4.4 限制聚合组内选中端口的数量

聚合链路的带宽取决于聚合组内选中端口的数量，用户通过配置聚合组中的最小选中端口数，可以避免由于选中端口太少而造成聚合链路上的流量拥塞。当聚合组内选中端口的数量达不到配置值时，对应的聚合接口将不会up，从而使流量可以切换到备份链路上。具体实现如下：

l 如果聚合组内能够被选中的成员端口数小于配置值，这些成员端口都将变为非选中状态，对应聚合接口的链路状态也将变为down。

l 当聚合组内能够被选中的成员端口数增加至不小于配置值时，这些成员端口都将变为选中状态，对应聚合接口的链路状态也将变为up。

表1-13 限制聚合组内选中端口的数量

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
进入聚合接口视图 | 进入二层聚合接口视图 | interface bridge-aggregation interface-number | 二者必选其一
 | 进入三层聚合接口 | interface route-aggregation interface-number
配置聚合组中的最小选中端口数 |  | link-aggregation selected-port minimum number | 必选 缺省情况下，聚合组中的最小选中端口数不受限制

l 针对静态聚合组进行本配置时，必须在聚合链路两端进行相同的配置，并保证两端聚合组的配置一致。

l 配置聚合组中的最小选中端口数可能导致聚合组内的所有成员端口都变为非选中状态。

1.4.5 关闭聚合接口

对聚合接口的开启/关闭操作，将会影响聚合接口对应的聚合组内成员端口的选中/非选中状态和链路状态：

l 关闭聚合接口时，将使对应聚合组内所有处于选中状态的成员端口都变为非选中端口，且所有成员端口的链路状态都将变为down。

l 开启聚合接口时，系统将重新计算对应聚合组内成员端口的选中/非选中状态，且所有成员端口的链路状态都将变为up。

表1-14 关闭聚合接口

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
进入聚合接口视图 | 进入二层聚合接口视图 | interface bridge-aggregation interface-number | 二者必选其一
 | 进入三层聚合接口视图 | interface route-aggregation interface-number
关闭当前接口 |  | shutdown | 必选 缺省情况下，聚合接口处于开启状态

1.4.6 恢复聚合接口的缺省配置

通过执行本操作可以将接口下的所有配置都恢复为缺省配置。

表1-15 恢复聚合接口的缺省配置

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
进入聚合接口视图 | 进入二层聚合接口视图 | interface bridge-aggregation interface-number | 二者必选其一
 | 进入三层聚合接口视图 | interface route-aggregation interface-number
恢复当前接口的缺省配置 |  | default | 必选


1.5 配置聚合负载分担

1.5.1 配置聚合负载分担类型

通过改变负载分担的类型，可以灵活地实现聚合组流量的负载分担。用户既可以指定系统按照报文携带的MAC地址、服务端口号、报文入端口、IP地址等信息之一或其组合来选择所采用的负载分担类型，也可以指定系统按照报文类型（如二层、IPv4、IPv6等）自动选择所采用的聚合负载分担类型，还可以指定系统对每个报文逐包进行聚合负载分担。

用户可以根据需要，选择全局配置或在聚合组内配置聚合负载分担类型。全局的配置对所有聚合组都有效，而聚合组内的配置只对当前聚合组有效。对于某聚合组来说，优先采用该聚合组内的配置，只有该聚合组内未进行配置时，才采用全局的配置。

1. 全局配置聚合负载分担类型

表1-16 全局配置聚合负载分担类型

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置全局采用的聚合负载分担类型 | link-aggregation load-sharing mode { destination-ip | destination-mac | destination-port | ingress-port | source-ip | source-mac | source-port } * | 必选 缺省情况下，二层报文根据源/目的MAC地址及报文入端口进行聚合负载分担，三层报文根据源/目的IP地址进行聚合负载分担

目前，在系统视图下进行全局聚合负载分担类型配置，交换机只支持：

l 根据源IP地址进行聚合负载分担；

l 根据目的IP地址进行聚合负载分担；

l 根据源MAC地址进行聚合负载分担；

l 根据目的MAC地址进行聚合负载分担；

l 根据源IP地址与目的IP地址进行聚合负载分担；

l 根据源IP地址与源端口进行聚合负载分担；

l 根据目的IP地址与目的端口进行聚合负载分担；

l 根据报文入端口、源MAC地址、目的MAC地址之间不同的组合进行聚合负载分担。

2. 在聚合组内配置聚合负载分担类型

表1-17 在聚合组内配置聚合负载分担类型

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入二层聚合接口视图 | interface bridge-aggregation interface-number | 必选
配置聚合组内采用的聚合负载分担类型 | link-aggregation load-sharing mode { { destination-ip | destination-mac | source-ip | source-mac } * } | 必选 缺省情况下，聚合组内采用的聚合负载分担类型与全局采用的聚合负载分担类型一致

目前，在二层聚合接口视图下进行聚合组的聚合负载分担模式配置，交换机只支持：

l 根据报文类型自动匹配负载分担类型；

l 根据源IP地址进行聚合负载分担；

l 根据目的IP地址进行聚合负载分担；

l 根据源MAC地址进行聚合负载分担；

l 根据目的MAC地址进行聚合负载分担；

l 根据目的IP地址与源IP地址进行聚合负载分担；

l 根据目的MAC地址与源MAC地址进行聚合负载分担；

1.5.2 配置聚合负载分担为本地转发优先

聚合负载分担的本地转发优先机制可以降低数据流量对IRF物理端口间链路的冲击，采用与未采用该机制时的聚合负载分担方式如 图1-4 所示。有关IRF的详细介绍，请参见“IRF配置指导”中的“IRF”。

图1-4 本地转发优先处理流程图

表1-18 配置聚合负载分担为本地转发优先

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置聚合负载分担为本地转发优先 | link-aggregation load-sharing mode local-first | 可选 缺省情况下，聚合负载分担为本地转发优先


1.6 配置聚合流量重定向功能

在使能了聚合流量重定向功能后，当重启IRF中的某台成员设备时，系统可以将待重启设备上的聚合成员端口的流量重定向到其它设备上，从而实现聚合链路上流量的不中断。有关IRF的详细介绍，请参见“IRF配置指导”中的“IRF”。

表1-19 配置聚合流量重定向功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
使能聚合流量重定向功能 | link-aggregation lacp traffic-redirect-notification enable | 可选 缺省情况下，聚合流量重定向功能处于关闭状态

l 聚合流量重定向功能只支持动态聚合组，且仅对已知单播报文生效。

l 必须在聚合链路两端都使能聚合流量重定向功能才能实现聚合链路上流量的不中断。

l 如果同时使能聚合流量重定向功能和MSTP功能，在重启设备时会出现少量的丢包，因此不建议同时使能上述两个功能。


1.7 以太网链路聚合显示与维护

在完成上述配置后，在任意视图下执行 display 命令可以显示配置后以太网链路聚合的运行情况，通过查看显示信息验证配置的效果。

在用户视图下执行 reset 命令可以清除端口的LACP和聚合接口上的统计信息。

表1-20 以太网链路聚合显示与维护

操作

命令

显示聚合接口的相关信息

display interface [ bridge-aggregation | route-aggregation ] [ brief ] [ | { begin | exclude | include } regular-expression ]

display interface { bridge-aggregation | route-aggregation } interface-number [ brief ] [ | { begin | exclude | include } regular-expression ]

显示本端系统的设备ID

display lacp system-id [ | { begin | exclude | include } regular-expression ]

显示全局或聚合组内采用的聚合负载分担类型

display link-aggregation load-sharing mode [ interface [ { bridge-aggregation | route-aggregation } interface-number ] ] [ | { begin | exclude | include } regular-expression ]

显示成员端口上链路聚合的详细信息

display link-aggregation member-port [ interface-list ] [ | { begin | exclude | include } regular-expression ]

显示所有聚合组的摘要信息

display link-aggregation summary [ | { begin | exclude | include } regular-expression ]

显示指定聚合组的详细信息

display link-aggregation verbose [ { bridge-aggregation | route-aggregation } [ interface-number ] ] [ | { begin | exclude | include } regular-expression ]

清除成员端口上的LACP统计信息

reset lacp statistics [ interface interface-list ]

清除聚合接口上的统计信息

reset counters interface [ { bridge-aggregation | route-aggregation } [ interface-number ] ]


1.8 以太网链路聚合典型配置举例

在聚合组中，只有端口属性类配置（请参见“1.1.1 4. 配置分类”）和第二类配置（请参见“1.1.1 4. 配置分类”）都与参考端口（请参见“1.1.1 5. 参考端口”）相同的成员端口才可以成为选中端口。因此，用户需通过配置使各成员端口的上述配置与参考端口保持一致，而除此以外的其它配置则只需在聚合接口上进行，不必再在成员端口上重复配置。

1.8.1 二层静态聚合配置举例

1. 组网需求

l Device A与Device B通过各自的二层以太网接口Ethernet1/0/1～Ethernet1/0/3相互连接。

l 在Device A和Device B上分别配置二层静态链路聚合组，并使两端的VLAN 10和VLAN 20之间分别互通。

l 通过按照报文的源MAC地址和目的MAC地址进行聚合负载分担的方式，来实现数据流量在各成员端口间的负载分担。

2. 组网图

图1-5 二层静态聚合配置组网图

3. 配置步骤

(1) 配置Device A

# 创建VLAN 10，并将端口Ethernet1/0/4加入到该VLAN中。

<DeviceA> system-view

[DeviceA] vlan 10

[DeviceA-vlan10] port Ethernet1/0/4

[DeviceA-vlan10] quit

# 创建VLAN 20，并将端口Ethernet1/0/5加入到该VLAN中。

[DeviceA] vlan 20

[DeviceA-vlan20] port Ethernet1/0/5

[DeviceA-vlan20] quit

# 创建二层聚合接口1。

[DeviceA] interface bridge-aggregation 1

[DeviceA-Bridge-Aggregation1] quit

# 分别将端口Ethernet1/0/1至Ethernet1/0/3加入到聚合组1中。

[DeviceA] interface Ethernet1/0/1

[DeviceA-Ethernet1/0/1] port link-aggregation group 1

[DeviceA-Ethernet1/0/1] quit

[DeviceA] interface Ethernet1/0/2

[DeviceA-Ethernet1/0/2] port link-aggregation group 1

[DeviceA-Ethernet1/0/2] quit

[DeviceA] interface Ethernet1/0/3

[DeviceA-Ethernet1/0/3] port link-aggregation group 1

[DeviceA-Ethernet1/0/3] quit

# 配置二层聚合接口1为Trunk端口，并允许VLAN 10和20的报文通过。

[DeviceA] interface bridge-aggregation 1

[DeviceA-Bridge-Aggregation1] port link-type trunk

[DeviceA-Bridge-Aggregation1] port trunk permit vlan 10 20

Please wait... Done.

Configuring Ethernet1/0/1... Done.

Configuring Ethernet1/0/2... Done.

Configuring Ethernet1/0/3... Done.

[DeviceA-Bridge-Aggregation1] quit

# 配置全局按照报文的源MAC地址和目的MAC地址进行聚合负载分担。

[DeviceA] link-aggregation load-sharing mode source-mac destination-mac

(2) 配置Device B

Device B的配置与Device A相似，配置过程略。

(3) 检验配置效果

# 查看Device A上所有聚合组的摘要信息。

[DeviceA] display link-aggregation summary

Aggregation Interface Type:

BAGG -- Bridge-Aggregation, RAGG -- Route-Aggregation

Aggregation Mode: S -- Static, D -- Dynamic

Loadsharing Type: Shar -- Loadsharing, NonS -- Non-Loadsharing

Actor System ID: 0x8000, 000f-e2ff-0001

AGG AGG Partner ID Select Unselect Share

Interface Mode Ports Ports Type

-------------------------------------------------------------------------------

BAGG1 S none 3 0 Shar

以上信息表明，聚合组1为负载分担类型的二层静态聚合组，包含有三个选中端口。

# 查看Device A上全局采用的聚合负载分担类型。

[DeviceA] display link-aggregation load-sharing mode

Link-Aggregation Load-Sharing Mode:

destination-mac address, source-mac address

以上信息表明，所有聚合组都按照报文的源MAC地址和目的MAC地址进行聚合负载分担。

1.8.2 二层动态聚合配置举例

1. 组网需求

l Device A与Device B通过各自的二层以太网接口Ethernet1/0/1～Ethernet1/0/3相互连接。

l 在Device A和Device B上分别配置二层动态链路聚合组，并使两端的VLAN 10和VLAN 20之间分别互通。

l 通过按照报文的源MAC地址和目的MAC地址进行聚合负载分担的方式，来实现数据流量在各成员端口间的负载分担。

2. 组网图

图1-6 二层动态聚合配置组网图

3. 配置步骤

(1) 配置Device A

# 创建VLAN 10，并将端口Ethernet1/0/4加入到该VLAN中。

<DeviceA> system-view

[DeviceA] vlan 10

[DeviceA-vlan10] port Ethernet1/0/4

[DeviceA-vlan10] quit

# 创建VLAN 20，并将端口Ethernet1/0/5加入到该VLAN中。

[DeviceA] vlan 20

[DeviceA-vlan20] port Ethernet1/0/5

[DeviceA-vlan20] quit

# 创建二层聚合接口1，并配置该接口为动态聚合模式。

[DeviceA] interface bridge-aggregation 1

[DeviceA-Bridge-Aggregation1] link-aggregation mode dynamic

# 分别将端口Ethernet1/0/1至Ethernet1/0/3加入到聚合组1中。

[DeviceA] interface Ethernet1/0/1

[DeviceA-Ethernet1/0/1] port link-aggregation group 1

[DeviceA-Ethernet1/0/1] quit

[DeviceA] interface Ethernet1/0/2

[DeviceA-Ethernet1/0/2] port link-aggregation group 1

[DeviceA-Ethernet1/0/2] quit

[DeviceA] interface Ethernet1/0/3

[DeviceA-Ethernet1/0/3] port link-aggregation group 1

[DeviceA-Ethernet1/0/3] quit

# 配置二层聚合接口1为Trunk端口，并允许VLAN 10和20的报文通过。

[DeviceA] interface bridge-aggregation 1

[DeviceA-Bridge-Aggregation1] port link-type trunk

[DeviceA-Bridge-Aggregation1] port trunk permit vlan 10 20

Please wait... Done.

Configuring Ethernet1/0/1... Done.

Configuring Ethernet1/0/2... Done.

Configuring Ethernet1/0/3... Done.

[DeviceA-Bridge-Aggregation1] quit

# 配置全局按照报文的源MAC地址和目的MAC地址进行聚合负载分担。

[DeviceA] link-aggregation load-sharing mode source-mac destination-mac

(2) 配置Device B

Device B的配置与Device A相似，配置过程略。

(3) 检验配置效果

# 查看Device A上所有聚合组的摘要信息。

[DeviceA] display link-aggregation summary

Aggregation Interface Type:

BAGG -- Bridge-Aggregation, RAGG -- Route-Aggregation

Aggregation Mode: S -- Static, D -- Dynamic

Loadsharing Type: Shar -- Loadsharing, NonS -- Non-Loadsharing

Actor System ID: 0x8000, 000f-e2ff-0001

AGG AGG Partner ID Select Unselect Share

Interface Mode Ports Ports Type

-------------------------------------------------------------------------------

BAGG1 D 0x8000, 000f-e2ff-0002 3 0 Shar

以上信息表明，聚合组1为负载分担类型的二层动态聚合组，包含有三个选中端口。

# 查看Device A上全局采用的聚合负载分担类型。

[DeviceA] display link-aggregation load-sharing mode

Link-Aggregation Load-Sharing Mode:

destination-mac address, source-mac address

以上信息表明，所有聚合组都按照报文的源MAC地址和目的MAC地址进行聚合负载分担。

1.8.3 三层静态聚合配置举例

1. 组网需求

l Device A与Device B通过各自的三层以太网接口Ethernet1/0/1～Ethernet1/0/3相互连接。

l 在Device A和Device B上分别配置三层静态链路聚合组，并为对应的三层聚合接口配置IP地址和子网掩码。

l 通过按照报文的源IP地址和目的IP地址进行聚合负载分担的方式，来实现数据流量在各成员端口间的分担。

2. 组网图

图1-7 三层静态聚合配置组网图

3. 配置步骤

(1) 配置Device A

# 创建三层聚合接口1，并为该接口配置IP地址和子网掩码。

<DeviceA> system-view

[DeviceA] interface route-aggregation 1

[DeviceA-Route-Aggregation1] ip address 192.168.1.1 24

[DeviceA-Route-Aggregation1] quit

# 分别将接口Ethernet1/0/1至Ethernet1/0/3加入到聚合组1中。

[DeviceA] interface Ethernet1/0/1

[DeviceA-Ethernet1/0/1] port link-aggregation group 1

[DeviceA-Ethernet1/0/1] quit

[DeviceA] interface Ethernet1/0/2

[DeviceA-Ethernet1/0/2] port link-aggregation group 1

[DeviceA-Ethernet1/0/2] quit

[DeviceA] interface Ethernet1/0/3

[DeviceA-Ethernet1/0/3] port link-aggregation group 1

[DeviceA-Ethernet1/0/3] quit

# 配置全局按照报文的源IP地址和目的IP地址进行聚合负载分担。

[DeviceA] link-aggregation load-sharing mode source-ip destination-ip

(2) 配置Device B

Device B的配置与Device A相似，配置过程略。

(3) 检验配置效果

# 查看Device A上所有聚合组的摘要信息。

[DeviceA] display link-aggregation summary

Aggregation Interface Type:

BAGG -- Bridge-Aggregation, RAGG -- Route-Aggregation

Aggregation Mode: S -- Static, D -- Dynamic

Loadsharing Type: Shar -- Loadsharing, NonS -- Non-Loadsharing

Actor System ID: 0x8000, 000f-e2ff-0001

AGG AGG Partner ID Select Unselect Share

Interface Mode Ports Ports Type

-------------------------------------------------------------------------------

RAGG1 S none 3 0 Shar

以上信息表明，聚合组1为负载分担类型的三层静态聚合组，包含有三个选中端口。

# 查看Device A上全局采用的聚合负载分担类型。

[DeviceA] display link-aggregation load-sharing mode

Link-Aggregation Load-Sharing Mode:

destination-ip address, source-ip address

以上信息表明，所有聚合组都按照报文的源IP地址和目的IP地址进行聚合负载分担。

1.8.4 三层动态聚合配置举例

1. 组网需求

l Device A与Device B通过各自的三层以太网接口Ethernet1/0/1～Ethernet1/0/3相互连接。

l 在Device A和Device B上分别配置三层动态链路聚合组，并为对应的三层聚合接口配置IP地址和子网掩码。

l 通过按照报文的源IP地址和目的IP地址进行聚合负载分担的方式，来实现数据流量在各成员端口间的分担。

2. 组网图

图1-8 三层动态聚合配置组网图

3. 配置步骤

(1) 配置Device A

# 创建三层聚合接口1，配置该接口为动态聚合模式，并为其配置IP地址和子网掩码。

<DeviceA> system-view

[DeviceA] interface route-aggregation 1

[DeviceA-Route-Aggregation1] link-aggregation mode dynamic

[DeviceA-Route-Aggregation1] ip address 192.168.1.1 24

[DeviceA-Route-Aggregation1] quit

# 分别将接口Ethernet1/0/1至Ethernet1/0/3加入到聚合组1中。

[DeviceA] interface Ethernet1/0/1

[DeviceA-Ethernet1/0/1] port link-aggregation group 1

[DeviceA-Ethernet1/0/1] quit

[DeviceA] interface Ethernet1/0/2

[DeviceA-Ethernet1/0/2] port link-aggregation group 1

[DeviceA-Ethernet1/0/2] quit

[DeviceA] interface Ethernet1/0/3

[DeviceA-Ethernet1/0/3] port link-aggregation group 1

[DeviceA-Ethernet1/0/3] quit

# 配置全局按照报文的源IP地址和目的IP地址进行聚合负载分担。

[DeviceA] link-aggregation load-sharing mode source-ip destination-ip

(2) 配置Device B

Device B的配置与Device A相似，配置过程略。

(3) 检验配置效果

# 查看Device A上所有聚合组的摘要信息。

[DeviceA] display link-aggregation summary

Aggregation Interface Type:

BAGG -- Bridge-Aggregation, RAGG -- Route-Aggregation

Aggregation Mode: S -- Static, D -- Dynamic

Loadsharing Type: Shar -- Loadsharing, NonS -- Non-Loadsharing

Actor System ID: 0x8000, 000f-e2ff-0001

AGG AGG Partner ID Select Unselect Share

Interface Mode Ports Ports Type

-------------------------------------------------------------------------------

RAGG1 D 0x8000, 000f-e2ff-0002 3 0 Shar

以上信息表明，聚合组1为负载分担类型的三层动态聚合组，包含有三个选中端口。

# 查看Device A上全局采用的聚合负载分担类型。

[DeviceA] display link-aggregation load-sharing mode

Link-Aggregation Load-Sharing Mode:

destination-ip address, source-ip address

以上信息表明，所有聚合组都按照报文的源IP地址和目的IP地址进行聚合负载分担。


1 端口隔离配置

相关链接

  • 1.1 端口隔离简介
  • 1.2 配置隔离组
  • 1.3 隔离组显示和维护
  • 1.4 端口隔离典型配置举例
父主题： 05-端口隔离配置


1.1 端口隔离简介

为了实现报文之间的二层隔离，可以将不同的端口加入不同的VLAN，但会浪费有限的VLAN资源。采用端口隔离特性，可以实现同一VLAN内端口之间的隔离。用户只需要将端口加入到隔离组中，就可以实现隔离组内端口之间二层数据的隔离。端口隔离功能为用户提供了更安全、更灵活的组网方案。

目前：

l 本设备只支持一个隔离组，由系统自动创建隔离组1，用户不可删除该隔离组或创建其它的隔离组。

l 隔离组内可以加入的端口数量没有限制。

端口隔离特性与端口所属的VLAN无关。隔离组内的端口和隔离组外属于同一VLAN内的端口二层流量双向互通。


1.2 配置隔离组

1.2.1 将端口加入隔离组

表1-1 将端口加入隔离组

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
进入以太网端口视图/端口组视图/二层聚合接口视图 | 进入以太网端口视图 | interface interface-type interface-number | 三者必选其一 l 进入以太网端口视图后，下面进行的配置只在当前端口下生效 l 进入端口组视图后，下面进行的配置将在端口组中的所有端口下生效 l 在二层聚合接口视图下执行该命令，则该配置将对二层聚合接口以及相应的所有成员端口生效。在配置过程中，如果某个成员端口配置失败，系统会自动跳过该成员端口继续配置其它成员端口；如果二层聚合接口配置失败，则不会再配置成员端口
 | 进入端口组视图 | port-group manual port-group-name
 | 进入二层聚合接口视图 | interface bridge-aggregation interface-number
将指定端口加入到隔离组中，并作为隔离组中的普通端口 |  | port-isolate enable | 必选 缺省情况下，隔离组中没有加入任何端口


1.3 隔离组显示和维护

在完成上述配置后，在任意视图下执行 display 命令可以显示配置后隔离组的相关信息，通过查看显示信息验证配置的效果。

表1-2 隔离组显示和维护

操作 | 命令
显示隔离组的信息 | display port-isolate group [ | { begin | exclude | include } regular-expression ]


1.4 端口隔离典型配置举例

1. 组网需求

l 小区用户Host A、Host B、Host C分别与Device的端口Ethernet1/0/1、Ethernet1/0/2、Ethernet1/0/3相连；

l 设备通过Ethernet1/0/4端口与外部网络相连；

l 端口Ethernet1/0/1、Ethernet1/0/2、Ethernet1/0/3和Ethernet1/0/4属于同一VLAN；请实现小区用户Host A、Host B和Host C彼此之间二层报文不能互通，但可以和外部网络通信。

2. 组网图

图1-1 配置端口隔离组网图

3. 配置步骤

# 将端口Ethernet1/0/1、Ethernet1/0/2、Ethernet1/0/3加入隔离组。

<Device> system-view

[Device] interface Ethernet1/0/1

[Device-Ethernet1/0/1] port-isolate enable

[Device-Ethernet1/0/1] quit

[Device] interface Ethernet1/0/2

[Device-Ethernet1/0/2] port-isolate enable

[Device-Ethernet1/0/2] quit

[Device] interface Ethernet1/0/3

[Device-Ethernet1/0/3] port-isolate enable

# 显示隔离组中的信息。

<Device> display port-isolate group

Port-isolate group information:

Uplink port support: NO

Group ID: 1

Group members:

Ethernet1/0/1 Ethernet1/0/2 Ethernet1/0/3


1 生成树配置

相关链接

  • 1.1 生成树简介
  • 1.2 生成树配置任务简介
  • 1.3 配置生成树
  • 1.4 生成树显示和维护
  • 1.5 生成树典型配置举例
父主题： 06-生成树配置


1.1 生成树简介

生成树协议是一种二层管理协议，它通过选择性地阻塞网络中的冗余链路来消除二层环路，同时还具备链路备份的功能。

与众多协议的发展过程一样，生成树协议也是随着网络的发展而不断更新的，从最初的STP（Spanning Tree Protocol，生成树协议）到RSTP（Rapid Spanning Tree Protocol，快速生成树协议）和PVST（Per VLAN Spanning Tree，每VLAN生成树），再到最新的MSTP（Multiple Spanning Tree Protocol，多生成树协议）。本文将对STP、RSTP、PVST和MSTP各自的特点及其相互间的关系进行介绍。

1.1.1 STP简介

STP由IEEE制定的802.1D标准定义，用于在局域网中消除数据链路层物理环路的协议。运行该协议的设备通过彼此交互信息发现网络中的环路，并有选择的对某些端口进行阻塞，最终将环路网络结构修剪成无环路的树型网络结构，从而防止报文在环路网络中不断增生和无限循环，避免设备由于重复接收相同的报文造成的报文处理能力下降的问题发生。

STP包含了两个含义，狭义的STP是指IEEE 802.1D中定义的STP协议，广义的STP是指包括IEEE 802.1D定义的STP协议以及各种在它的基础上经过改进的生成树协议。

1. STP的协议报文

STP采用的协议报文是BPDU（Bridge Protocol Data Unit，桥协议数据单元），也称为配置消息。

STP通过在设备之间传递BPDU来确定网络的拓扑结构。BPDU中包含了足够的信息来保证设备完成生成树的计算过程。STP协议的BPDU分为以下两类：

l 配置BPDU（Configuration BPDU）：用来进行生成树计算和维护生成树拓扑的报文。

l TCN BPDU（Topology Change Notification BPDU，拓扑变化通知BPDU）：当拓扑结构发生变化时，用来通知相关设备网络拓扑结构发生变化的报文。

BPDU中包含有足够的信息来保证设备完成生成树的计算过程，其中包括：

l 根桥ID：由根桥的优先级和MAC地址组成；

l 根路径开销：到根桥的路径开销；

l 指定桥ID：由指定桥的优先级和MAC地址组成；

l 指定端口ID：由指定端口的优先级和该端口的全局编号组成；

l Message Age：配置消息在网络中传播的生存期；

l Max Age：配置消息在设备中的最大生存期；

l Hello Time：配置消息的发送周期；

l Forward Delay：端口状态迁移的延迟时间。

2. STP的基本概念

(1) 根桥

树形的网络结构必须有树根，于是STP引入了根桥（Root Bridge）的概念。根桥在全网中有且只有一个，而且根桥会根据网络拓扑的变化而改变，因此根桥并不是固定的。

在网络初始化过程中，所有设备都视自己为根桥，生成各自的配置BPDU并周期性地向外发送；但当网络拓扑稳定以后，只有根桥设备才会向外发送配置BPDU，其它设备则对其进行转发。

(2) 根端口

所谓根端口，是指非根桥设备上离根桥最近的端口。根端口负责与根桥进行通信。非根桥设备上有且只有一个根端口，根桥上没有根端口。

(3) 指定桥与指定端口

指定桥与指定端口的含义，请参见表1-1 的说明。

表1-1 指定桥与指定端口的含义

分类 | 指定桥 | 指定端口
对于一台设备而言 | 与本机直接相连并且负责向本机转发配置消息的设备 | 指定桥向本机转发配置消息的端口
对于一个局域网而言 | 负责向本网段转发配置消息的设备 | 指定桥向本网段转发配置消息的端口

如图1-1 所示，Device B和Device C与LAN直接相连。如果Device A通过Port A1向Device B转发配置消息，则Device B的指定桥就是Device A，指定端口就是Device A上的Port A1；如果Device B负责向LAN转发配置消息，则LAN的指定桥就是Device B，指定端口就是Device B上的Port B2。

图1-1 指定桥与指定端口示意图

(4) 路径开销

路径开销是STP协议用于选择链路的参考值。STP协议通过计算路径开销，选择较为“强壮”的链路，阻塞多余的链路，将网络修剪成无环路的树型网络结构。

3. STP的基本原理

STP算法实现的基本过程如下：

(1) 初始状态

各设备的各端口在初始时会生成以本设备为根桥的配置消息，根路径开销为0，指定桥ID为自身设备ID，指定端口为本端口。

(2) 选择根桥

网络初始化时，网络中所有的STP设备都认为自己是“根桥”，根桥ID为自身的设备ID。通过交换配置消息，设备之间比较根桥ID，网络中根桥ID最小的设备被选为根桥。

(3) 选择根端口和指定端口

根端口和指定端口的选择过程如表1-2 所示。

表1-2 根端口和指定端口的选择过程

步骤 | 内容
1 | 非根桥设备将接收最优配置消息（最优配置消息的选择过程如表1-3 所示）的那个端口定为根端口
2 | 设备根据根端口的配置消息和根端口的路径开销，为每个端口计算一个指定端口配置消息： l 根桥ID替换为根端口的配置消息的根桥ID； l 根路径开销替换为根端口配置消息的根路径开销加上根端口对应的路径开销； l 指定桥ID替换为自身设备的ID； l 指定端口ID替换为自身端口ID。
3 | 设备将计算出的配置消息与角色待定端口自己的配置消息进行比较： l 如果计算出的配置消息更优，则该端口被确定为指定端口，其配置消息也被计算出的配置消息替换，并周期性地向外发送； l 如果该端口自己的配置消息更优，则不更新该端口的配置消息并将该端口阻塞。该端口将不再转发数据，且只接收不发送配置消息。

当拓扑处于稳定状态时，只有根端口和指定端口在转发用户流量。其它端口都处于阻塞状态，只接收STP协议报文而不转发用户流量。

表1-3 最优配置消息的选择过程

步骤 | 内容
1 | 每个端口将收到的配置消息与自己的配置消息进行比较： l 如果收到的配置消息优先级较低，则将其直接丢弃，对自己的配置消息不进行任何处理； l 如果收到的配置消息优先级较高，则用该配置消息的内容将自己配置消息的内容替换掉。
2 | 设备将所有端口的配置消息进行比较，选出最优的配置消息

配置消息优先级的比较规则如下：

l 根桥ID较小的配置消息优先级较高；

l 若根桥ID相同，则比较根路径开销：将配置消息中的根路径开销与本端口对应的路径开销相加，二者之和较小的配置消息优先级较高；

l 若根路径开销也相同，则依次比较指定桥ID、指定端口ID、接收该配置消息的端口ID等，上述值较小的配置消息优先级较高。

一旦根桥、根端口和指定端口选举成功，整个树形拓扑就建立完毕了。下面结合例子说明STP算法实现的具体过程。

图1-2 STP算法实现过程组网图

如 图1-2 所示，Device A、Device B和Device C的优先级分别为0、1和2，Device A与Device B之间、Device A与Device C之间以及Device B与Device C之间链路的路径开销分别为5、10和4。

(1) 各设备的初始状态

各设备的初始状态如表1-4 所示。

表1-4 各设备的初始状态

设备 | 端口名称 | 端口的配置消息
Device A | Port A1 | {0，0，0，Port A1}
 | Port A2 | {0，0，0，Port A2}
Device B | Port B1 | {1，0，1，Port B1}
 | Port B2 | {1，0，1，Port B2}
Device C | Port C1 | {2，0，2，Port C1}
 | Port C2 | {2，0，2，Port C2}

表1-4 配置消息中各项的具体含义为：{根桥ID，根路径开销，指定桥ID，指定端口ID}。

(2) 各设备的比较过程及结果

各设备的比较过程及结果如表1-5 所示。

表1-5 各设备的比较过程及结果

设备

比较过程

比较后端口的配置消息

Device A

l Port A1收到Port B1的配置消息{1，0，1，Port B1}，发现自己的配置消息{0，0，0，Port A1}更优，于是将其丢弃。

l Port A2收到Port C1的配置消息{2，0，2，Port C1}，发现自己的配置消息{0，0，0，Port A2}更优，于是将其丢弃。

l Device A发现自己各端口的配置消息中的根桥和指定桥都是自己，于是认为自己就是根桥，各端口的配置消息都不作任何修改，此后便周期性地向外发送配置消息。

l Port A1：

{0，0，0，Port A1}

l Port A2：

{0，0，0，Port A2}

Device B

l Port B1收到Port A1的配置消息{0，0，0，Port A1}，发现其比自己的配置消息{1，0，1，Port B1}更优，于是更新自己的配置消息。

l Port B2收到Port C2的配置消息{2，0，2，Port C2}，发现自己的配置消息{1，0，1，Port B2}更优，于是将其丢弃。

l Port B1：

{0，0，0，Port A1}

l Port B2：

{1，0，1，Port B2}

l Device B比较自己各端口的配置消息，发现Port B1的配置消息最优，于是该端口被确定为根端口，其配置消息不变。

l Device B根据根端口的配置消息和路径开销，为Port B2计算出指定端口的配置消息{0，5，1，Port B2}，然后与Port B2本身的配置消息{1，0，1，Port B2}进行比较，发现计算出的配置消息更优，于是Port B2被确定为指定端口，其配置消息也被替换为计算出的配置消息，并周期性地向外发送。

l 根端口Port B1：

{0，0，0，Port A1}

l 指定端口Port B2：

{0，5，1，Port B2}

Device C

l Port C1收到Port A2的配置消息{0，0，0，Port A2}，发现其比自己的配置消息{2，0，2，Port C1}更优，于是更新自己的配置消息。

l Port C2收到Port B2更新前的配置消息{1，0，1，Port B2}，发现其比自己的配置消息{2，0，2，Port C2}更优，于是更新自己的配置消息。

l Port C1：

{0，0，0，Port A2}

l Port C2：

{1，0，1，Port B2}

l Device C比较自己各端口的配置消息，发现Port C1的配置消息最优，于是该端口被确定为根端口，其配置消息不变。

l Device C根据根端口的配置消息和路径开销，为Port C2计算出指定端口的配置消息{0，10，2，Port C2}，然后与Port C2本身的配置消息{1，0，1，Port B2}进行比较，发现计算出的配置消息更优，于是Port C2被确定为指定端口，其配置消息也被替换为计算出的配置消息。

l 根端口Port C1：

{0，0，0，Port A2}

l 指定端口Port C2：

{0，10，2，Port C2}

l Port C2收到Port B2更新后的配置消息{0，5，1，Port B2}，发现其比自己的配置消息{0，10，2，Port C2}更优，于是更新自己的配置消息。

l Port C1收到Port A2周期性发来的配置消息{0，0，0，Port A2}，发现其与自己的配置消息一样，于是将其丢弃。

l Port C1：

{0，0，0，Port A2}

l Port C2：

{0，5，1，Port B2}

l Device C比较Port C1的根路径开销10（收到的配置消息中的根路径开销0＋本端口所在链路的路径开销10）与Port C2的根路径开销9（收到的配置消息中的根路径开销5＋本端口所在链路的路径开销4），发现后者更小，因此Port C2的配置消息更优，于是Port C2被确定为根端口，其配置消息不变。

l Device C根据根端口的配置消息和路径开销，为Port C1计算出指定端口的配置消息{0，9，2，Port C1}，然后与Port C1本身的配置消息{0，0，0，Port A2}进行比较，发现本身的配置消息更优，于是Port C1被阻塞，其配置消息不变。从此，Port C1不再转发数据，直至有触发生成树计算的新情况出现，譬如Device B与Device C之间的链路down掉。

l 阻塞端口Port C1：

{0，0，0，Port A2}

l 根端口Port C2：

{0，5，1，Port B2}

表1-5 配置消息中各项的具体含义为：{根桥ID，根路径开销，指定桥ID，指定端口ID}。

经过上述比较过程之后，以Device A为根桥的生成树就确定下来了，其拓扑如图1-3 所示。

图1-3 计算后得到的拓扑

为了便于描述，本例简化了生成树的计算过程，实际的过程要更加复杂。

4. STP的配置消息传递机制

STP的配置消息传递机制如下：

l 当网络初始化时，所有的设备都将自己作为根桥，生成以自己为根的配置消息，并以Hello Time为周期定时向外发送。

l 接收到配置消息的端口如果是根端口，且接收的配置消息比该端口的配置消息优，则设备将配置消息中携带的Message Age按照一定的原则递增，并启动定时器为这条配置消息计时，同时将此配置消息从设备的指定端口转发出去。

l 如果指定端口收到的配置消息比本端口的配置消息优先级低时，会立刻发出自己的更好的配置消息进行回应。

l 如果某条路径发生故障，则这条路径上的根端口不会再收到新的配置消息，旧的配置消息将会因为超时而被丢弃，设备重新生成以自己为根的配置消息并向外发送，从而引发生成树的重新计算，得到一条新的通路替代发生故障的链路，恢复网络连通性。

不过，重新计算得到的新配置消息不会立刻就传遍整个网络，因此旧的根端口和指定端口由于没有发现网络拓扑变化，将仍按原来的路径继续转发数据。如果新选出的根端口和指定端口立刻就开始数据转发的话，可能会造成暂时性的环路。

5. STP的时间参数

在STP的计算过程中，用到了以下三个重要的时间参数：

l Forward Delay：用于确定状态迁移的延迟时间。链路故障会引发网络重新进行生成树的计算，生成树的结构将发生相应的变化。不过重新计算得到的新配置消息无法立刻传遍整个网络，如果新选出的根端口和指定端口立刻就开始数据转发的话，可能会造成暂时性的环路。为此，STP采用了一种状态迁移的机制，新选出的根端口和指定端口要经过2倍的Forward Delay延时后才能进入转发状态，这个延时保证了新的配置消息已经传遍整个网络。

l Hello Time：用于设备检测链路是否存在故障。设备每隔Hello Time时间会向周围的设备发送hello报文，以确认链路是否存在故障。

l Max Age：用于判断配置消息在设备内的保存时间是否“过时”，设备会将过时的配置消息丢弃。

1.1.2 RSTP简介

RSTP由IEEE制定的802.1w标准定义，它在STP基础上进行了改进，实现了网络拓扑的快速收敛。其“快速”体现在，当一个端口被选为根端口和指定端口后，其进入转发状态的延时在某种条件下大大缩短，从而缩短了网络最终达到拓扑稳定所需要的时间。

l 在RSTP中，根端口的端口状态快速迁移的条件是：本设备上旧的根端口已经停止转发数据，而且上游指定端口已经开始转发数据。

l 在RSTP中，指定端口的端口状态快速迁移的条件是：指定端口是边缘端口（即该端口直接与用户终端相连，而没有连接到其它设备或共享网段上）或者指定端口与点对点链路（即两台设备直接相连的链路）相连。如果指定端口是边缘端口，则指定端口可以直接进入转发状态；如果指定端口连接着点对点链路，则设备可以通过与下游设备握手，得到响应后即刻进入转发状态。

1.1.3 PVST简介

STP和RSTP在局域网内的所有网桥都共享一棵生成树，不能按VLAN阻塞冗余链路，所有VLAN的报文都沿着一棵生成树进行转发。而PVST则可以在每个VLAN内都拥有一棵生成树，能够有效地提高链路带宽的利用率。PVST可以简单理解为在每个VLAN上运行一个STP或RSTP协议，不同VLAN之间的生成树完全独立。根据端口类型的不同，PVST所发送的BPDU格式也有所差别：

l 对于Access端口，PVST将根据该VLAN的状态发送STP格式的BPDU。

l 对于Trunk端口和Hybrid端口，PVST将在VLAN 1内根据该VLAN的状态发送STP格式的BPDU，而对于其它本端口允许通过的VLAN，则发送PVST格式的BPDU。

1.1.4 MSTP简介

1. MSTP的产生背景

(1) STP、RSTP和PVST存在的不足

STP不能快速迁移，即使是在点对点链路或边缘端口，也必须等待两倍的Forward Delay的时间延迟，端口才能迁移到转发状态。

RSTP可以快速收敛，但是和STP一样存在以下缺陷：局域网内所有网桥共享一棵生成树，不能按VLAN阻塞冗余链路，所有VLAN的报文都沿着一棵生成树进行转发。

对于PVST而言，由于每个VLAN都需要生成一棵树，因此PVST BPDU的通信量将与Trunk端口上允许通过的VLAN数量成正比。而且当VLAN数量较多时，维护多棵生成树的计算量以及资源占用量都将急剧增长，特别是当允许通过很多VLAN的Trunk端口的状态发生改变时，所有生成树的状态都要重新计算，网络设备的CPU将不堪重负。

(2) MSTP的特点

MSTP由IEEE制定的802.1s标准定义，它可以弥补STP、RSTP和PVST的缺陷，既可以快速收敛，也能使不同VLAN的流量沿各自的路径转发，从而为冗余链路提供了更好的负载分担机制。MSTP的特点如下：

l MSTP通过设置VLAN与生成树的对应关系表（即VLAN映射表），将VLAN与生成树联系起来。并通过“实例”的概念，将多个VLAN捆绑到一个实例中，从而达到了节省通信开销和降低资源占用率的目的。

l MSTP把一个交换网络划分成多个域，每个域内形成多棵生成树，生成树之间彼此独立。

l MSTP将环路网络修剪成为一个无环的树型网络，避免报文在环路网络中的增生和无限循环，同时还提供了数据转发的多个冗余路径，在数据转发过程中实现VLAN数据的负载分担。

l MSTP兼容STP和RSTP，但不兼容PVST。

2. MSTP的基本概念

图1-4 MSTP的基本概念示意图

图1-5 MST域3详图

在如图1-4 所示的交换网络中有四个MST域，每个MST域都由四台设备构成，所有设备都运行MSTP；为了看清MST域内的情形，我们以MST域3为例放大来看，如图1-5 所示。下面就结合这两张图来介绍一些MSTP中的基本概念：

(1) MST域

MST域（Multiple Spanning Tree Regions，多生成树域）是由交换网络中的多台设备以及它们之间的网段所构成。这些设备具有下列特点：

l 都使能了生成树协议；

l 域名相同；

l VLAN与MSTI间映射关系的配置相同；

l MSTP修订级别的配置相同；

l 这些设备之间有物理链路连通。

一个交换网络中可以存在多个MST域，用户可以通过配置将多台设备划分在一个MST域内。如在图1-4 所示的网络中就有MST域1～MST域4这四个MST域，每个域内的所有设备都具有相同的MST域配置。

(2) MSTI

一个MST域内可以通过MSTP生成多棵生成树，各生成树之间彼此独立并分别与相应的VLAN对应，每棵生成树都称为一个MSTI（Multiple Spanning Tree Instance，多生成树实例）。如在图1-5 所示的MST域3中，包含有三个MSTI：MSTI 1、MSTI 2和MSTI 0。

(3) VLAN映射表

VLAN映射表是MST域的一个属性，用来描述VLAN与MSTI间的映射关系。如图1-5 中MST域3的VLAN映射表就是：VLAN 1映射到MSTI 1，VLAN 2和VLAN 3映射到MSTI 2，其余VLAN映射到MSTI 0。MSTP就是根据VLAN映射表来实现负载分担的。

(4) CST

CST（Common Spanning Tree，公共生成树）是一棵连接交换网络中所有MST域的单生成树。如果把每个MST域都看作一台“设备”，CST就是这些“设备”通过STP协议、RSTP协议计算生成的一棵生成树。如图1-4 中的蓝色线条描绘的就是CST。

(5) IST

IST（Internal Spanning Tree，内部生成树）是MST域内的一棵生成树，它是一个特殊的MSTI，通常也称为MSTI 0，所有VLAN缺省都映射到MSTI 0上。如图1-5 中的MSTI 0就是MST域3内的IST。

(6) CIST

CIST（Common and Internal Spanning Tree，公共和内部生成树）是一棵连接交换网络内所有设备的单生成树，所有MST域的IST再加上CST就共同构成了整个交换网络的一棵完整的单生成树，即CIST。如图1-4 中各MST域内的IST（即MSTI 0）再加上MST域间的CST就构成了整个网络的CIST。

(7) 域根

域根（Regional Root）就是MST域内IST或MSTI的根桥。MST域内各生成树的拓扑不同，域根也可能不同。如在图1-5 所示的MST域3中，MSTI 1的域根为Device B，MSTI 2的域根为Device C，而MSTI 0（即IST）的域根则为Device A。

(8) 总根

总根（Common Root Bridge）就是CIST的根桥。如图1-4 中CIST的总根就是MST域1中的某台设备。

(9) 端口角色

端口在不同的MSTI中可以担任不同的角色。如图1-6 所示，在由Device A、Device B、Device C和Device D共同构成的MST域中，Device A的端口Port A1和Port A2连向总根方向，Device B的端口Port B2和Port B3相连而构成环路，Device C的端口Port C3和Port C4连向其它MST域，Device D的端口Port D3直接连接用户主机。

图1-6 端口角色示意图

如图1-6 所示，MSTP计算过程中涉及到的主要端口角色有以下几种：

l 根端口（Root Port）：在非根桥上负责向根桥方向转发数据的端口就称为根端口，根桥上没有根端口。

l 指定端口（Designated Port）：负责向下游网段或设备转发数据的端口就称为指定端口。

l 替换端口（Alternate Port）：是根端口和主端口的备份端口。当根端口或主端口被阻塞后，替换端口将成为新的根端口或主端口。

l 备份端口（Backup Port）：是指定端口的备份端口。当指定端口失效后，备份端口将转换为新的指定端口。当使能了生成树协议的同一台设备上的两个端口互相连接而形成环路时，设备会将其中一个端口阻塞，该端口就是备份端口。

l 边缘端口（Edge Port）：不与其它设备或网段连接的端口就称为边缘端口，边缘端口一般与用户终端设备直接相连。

l 主端口（Master Port）：是将MST域连接到总根的端口（主端口不一定在域根上），位于整个域到总根的最短路径上。主端口是MST域中的报文去往总根的必经之路。主端口在IST/CIST上的角色是根端口，而在其它MSTI上的角色则是主端口。

l 域边界端口（Boundary Port）：是位于MST域的边缘、并连接其它MST域或MST域与运行STP/RSTP的区域的端口。主端口同时也是域边界端口。在进行MSTP计算时，域边界端口在MSTI上的角色与CIST的角色一致，但主端口除外——主端口在CIST上的角色为根端口，在其它MSTI上的角色才是主端口。

(10) 端口状态

MSTP中的端口状态可分为三种，如表1-6 所示。

表1-6 MSTP的端口状态

状态 | 描述
Forwarding | 该状态下的端口可以接收和发送BPDU，也转发用户流量
Learning | 是一种过渡状态，该状态下的端口可以接收和发送BPDU，但不转发用户流量
Discarding | 该状态下的端口可以接收和发送BPDU，但不转发用户流量

同一端口在不同的MSTI中的端口状态可以不同。

端口状态和端口角色是没有必然联系的，表1-7 给出了各种端口角色能够具有的端口状态（“√”表示此端口角色能够具有此端口状态；“-”表示此端口角色不能具有此端口状态）。

表1-7 各种端口角色具有的端口状态

端口角色 端口状态 | 根端口/主端口 | 指定端口 | 替换端口 | 备份端口
Forwarding | √ | √ | - | -
Learning | √ | √ | - | -
Discarding | √ | √ | √ | √

3. MSTP的基本原理

MSTP将整个二层网络划分为多个MST域，各域之间通过计算生成CST；域内则通过计算生成多棵生成树，每棵生成树都被称为是一个MSTI，其中的MSTI 0也称为IST。MSTP同STP一样，使用配置消息进行生成树的计算，只是配置消息中携带的是设备上MSTP的配置信息。

(1) CIST生成树的计算

通过比较配置消息后，在整个网络中选择一个优先级最高的设备作为CIST的根桥。在每个MST域内MSTP通过计算生成IST；同时MSTP将每个MST域作为单台设备对待，通过计算在域间生成CST。CST和IST构成了整个网络的CIST。

(2) MSTI的计算

在MST域内，MSTP根据VLAN与MSTI的映射关系，针对不同的VLAN生成不同的MSTI。每棵生成树独立进行计算，计算过程与STP计算生成树的过程类似，请参见“1.1.1 3. STP的基本原理”。

MSTP中，一个VLAN报文将沿着如下路径进行转发：

l 在MST域内，沿着其对应的MSTI转发；

l 在MST域间，沿着CST转发。

4. MSTP在设备上的实现

MSTP同时兼容STP和RSTP。STP和RSTP的协议报文都可以被运行MSTP协议的设备识别并应用于生成树计算。设备除了提供MSTP的基本功能外，还从用户的角度出发，提供了如下便于管理的特殊功能：

l 根桥保持；

l 根桥备份；

l 根保护功能；

l BPDU保护功能；

l 环路保护功能；

l 防TC-BPDU攻击保护功能；

l BPDU拦截功能；

1.1.5 协议规范

与生成树相关的协议规范有：

l IEEE 802.1D：Media Access Control (MAC) Bridges

l IEEE 802.1w：Part 3: Media Access Control (MAC) Bridges—Amendment 2: Rapid Reconfiguration

l IEEE 802.1s：Virtual Bridged Local Area Networks—Amendment 3: Multiple Spanning Trees


1.2 生成树配置任务简介

生成树协议包括STP、RSTP、PVST和MSTP四种类型。在配置生成树之前，首先需明确要使用的生成树协议类型，并规划好各设备在其中的角色（根桥或叶子节点）；然后根据所选择的协议类型及规划好的设备角色，依照以下表格进行配置。

表1-8 STP配置任务简介

配置任务 |  | 说明 | 详细配置
配置根桥 | 配置生成树的工作模式 | 必选 生成树缺省工作在MSTP模式下，通过本配置将其工作模式配置为STP兼容模式 | 1.3.1
 | 配置根桥和备份根桥 | 可选 | 1.3.3
 | 配置设备的优先级 | 可选 | 1.3.4
 | 配置交换网络的网络直径 | 可选 | 1.3.6
 | 配置生成树的时间参数 | 可选 | 1.3.7
 | 配置超时时间因子 | 可选 | 1.3.8
 | 配置端口的最大发送速率 | 可选 | 1.3.9
 | 配置端口收发的MSTP报文格式 | 可选 | 1.3.14
 | 打开端口状态变化信息显示开关 | 可选 | 1.3.15
 | 使能生成树协议 | 必选 | 1.3.16
配置叶子节点 | 配置生成树的工作模式 | 必选 生成树缺省工作在MSTP模式下，通过本配置将其工作模式配置为STP兼容模式 | 1.3.1
 | 配置设备的优先级 | 可选 | 1.3.4
 | 配置超时时间因子 | 可选 | 1.3.8
 | 配置端口的最大发送速率 | 可选 | 1.3.9
 | 配置端口的路径开销 | 可选 | 1.3.11
 | 配置端口的优先级 | 可选 | 1.3.12
 | 配置端口收发的MSTP报文格式 | 可选 | 1.3.14
 | 打开端口状态变化信息显示开关 | 可选 | 1.3.15
 | 使能生成树协议 | 必选 | 1.3.16
配置TC Snooping功能 |  | 可选 | 1.3.20
配置生成树保护功能 |  | 可选 | 1.3.21

表1-9 RSTP配置任务简介

配置任务 |  | 说明 | 详细配置
配置根桥 | 配置生成树的工作模式 | 必选 生成树缺省工作在MSTP模式下，通过本配置将其工作模式配置为RSTP模式 | 1.3.1
 | 配置根桥和备份根桥 | 可选 | 1.3.3
 | 配置设备的优先级 | 可选 | 1.3.4
 | 配置交换网络的网络直径 | 可选 | 1.3.6
 | 配置生成树的时间参数 | 可选 | 1.3.7
 | 配置超时时间因子 | 可选 | 1.3.8
 | 配置端口的最大发送速率 | 可选 | 1.3.9
 | 配置端口为边缘端口 | 可选 | 1.3.10
 | 配置端口的链路类型 | 可选 | 1.3.13
 | 配置端口收发的MSTP报文格式 | 可选 | 1.3.14
 | 打开端口状态变化信息显示开关 | 可选 | 1.3.15
 | 使能生成树协议 | 必选 | 1.3.16
配置叶子节点 | 配置生成树的工作模式 | 必选 生成树缺省工作在MSTP模式下，通过本配置将其工作模式配置为RSTP模式 | 1.3.1
 | 配置设备的优先级 | 可选 | 1.3.4
 | 配置超时时间因子 | 可选 | 1.3.8
 | 配置端口的最大发送速率 | 可选 | 1.3.9
 | 配置端口为边缘端口 | 可选 | 1.3.10
 | 配置端口的路径开销 | 可选 | 1.3.11
 | 配置端口的优先级 | 可选 | 1.3.12
 | 配置端口的链路类型 | 可选 | 1.3.13
 | 配置端口收发的MSTP报文格式 | 可选 | 1.3.14
 | 打开端口状态变化信息显示开关 | 可选 | 1.3.15
 | 使能生成树协议 | 必选 | 1.3.16
执行mCheck操作 |  | 可选 | 1.3.17
配置TC Snooping功能 |  | 可选 | 1.3.20
配置生成树保护功能 |  | 可选 | 1.3.21

表1-10 PVST配置任务简介

配置任务 |  | 说明 | 详细配置
配置根桥 | 配置生成树的工作模式 | 必选 生成树缺省工作在MSTP模式下，通过本配置将其工作模式配置为PVST模式 | 1.3.1
 | 配置根桥和备份根桥 | 可选 | 1.3.3
 | 配置设备的优先级 | 可选 | 1.3.4
 | 配置交换网络的网络直径 | 可选 | 1.3.6
 | 配置生成树的时间参数 | 可选 | 1.3.7
 | 配置超时时间因子 | 可选 | 1.3.8
 | 配置端口的最大发送速率 | 可选 | 1.3.9
 | 配置端口为边缘端口 | 可选 | 1.3.10
 | 配置端口的链路类型 | 可选 | 1.3.13
 | 打开端口状态变化信息显示开关 | 可选 | 1.3.15
 | 使能生成树协议 | 必选 | 1.3.16
配置叶子节点 | 配置生成树的工作模式 | 必选 生成树缺省工作在MSTP模式下，通过本配置将其工作模式配置为PVST模式 | 1.3.1
 | 配置设备的优先级 | 可选 | 1.3.4
 | 配置超时时间因子 | 可选 | 1.3.8
 | 配置端口的最大发送速率 | 可选 | 1.3.9
 | 配置端口为边缘端口 | 可选 | 1.3.10
 | 配置端口的路径开销 | 可选 | 1.3.11
 | 配置端口的优先级 | 可选 | 1.3.12
 | 配置端口的链路类型 | 可选 | 1.3.13
 | 打开端口状态变化信息显示开关 | 可选 | 1.3.15
 | 使能生成树协议 | 必选 | 1.3.16
执行mCheck操作 |  | 可选 | 1.3.17
配置TC Snooping功能 |  | 可选 | 1.3.20
配置生成树保护功能 |  | 可选 | 1.3.21

表1-11 MSTP配置任务简介

配置任务 |  | 说明 | 详细配置
配置根桥 | 配置生成树的工作模式 | 可选 生成树缺省即工作在MSTP模式下 | 1.3.1
 | 配置MST域 | 必选 | 1.3.2
 | 配置根桥和备份根桥 | 可选 | 1.3.3
 | 配置设备的优先级 | 可选 | 1.3.4
 | 配置MST域的最大跳数 | 可选 | 1.3.5
 | 配置交换网络的网络直径 | 可选 | 1.3.6
 | 配置生成树的时间参数 | 可选 | 1.3.7
 | 配置超时时间因子 | 可选 | 1.3.8
 | 配置端口的最大发送速率 | 可选 | 1.3.9
 | 配置端口为边缘端口 | 可选 | 1.3.10
 | 配置端口的链路类型 | 可选 | 1.3.13
 | 配置端口收发的MSTP报文格式 | 可选 | 1.3.14
 | 打开端口状态变化信息显示开关 | 可选 | 1.3.15
 | 使能生成树协议 | 必选 | 1.3.16
配置叶子节点 | 配置生成树的工作模式 | 可选 生成树缺省即工作在MSTP模式下 | 1.3.1
 | 配置MST域 | 必选 | 1.3.2
 | 配置设备的优先级 | 可选 | 1.3.4
 | 配置超时时间因子 | 可选 | 1.3.8
 | 配置端口的最大发送速率 | 可选 | 1.3.9
 | 配置端口为边缘端口 | 可选 | 1.3.10
 | 配置端口的路径开销 | 可选 | 1.3.11
 | 配置端口的优先级 | 可选 | 1.3.12
 | 配置端口的链路类型 | 可选 | 1.3.13
 | 配置端口收发的MSTP报文格式 | 可选 | 1.3.14
 | 打开端口状态变化信息显示开关 | 可选 | 1.3.15
 | 使能生成树协议 | 必选 | 1.3.16
执行mCheck操作 |  | 可选 | 1.3.17
配置摘要侦听功能 |  | 可选 | 1.3.18
配置No Agreement Check功能 |  | 可选 | 1.3.19
配置TC Snooping功能 |  | 可选 | 1.3.20
配置生成树保护功能 |  | 可选 | 1.3.21

l 当同时使能GVRP和生成树协议时，GVRP报文将沿CIST传播。因此当同时使能了GVRP和生成树协议时，如果希望通过GVRP在网络中发布某个VLAN，则配置生成树协议的VLAN映射表时要保证将该VLAN映射到CIST上。有关GVRP的详细介绍，请参见“二层技术-以太网交换配置指导”中的“GVRP”。

l 生成树协议与以下功能互斥：业务环回功能、RRPP功能、Smart Link功能和STP协议的BPDU Tunnel功能。

l 对于生成树的相关配置来说：系统视图下的配置在全局生效；二层以太网端口下的配置只对当前端口生效；端口组视图下的配置对当前端口组中的所有端口生效；二层聚合接口视图下的配置只对当前接口生效；聚合成员端口上的配置，只有当成员端口退出聚合组后才能生效。

l 在二层聚合接口上使能生成树协议后，生成树的相关计算只在二层聚合接口上进行，聚合成员端口不再参与生成树计算。二层聚合接口的所有选中成员端口上生成树协议的使能/关闭状态以及端口转发状态与二层聚合接口保持一致。尽管聚合成员端口不参与生成树计算，但端口上的生成树相关配置仍然保留，当端口退出聚合组时，该端口将采用这些配置参与生成树计算。


1.3 配置生成树

1.3.1 配置生成树的工作模式

生成树的工作模式有以下四种：

l STP兼容模式：设备的各端口都将向外发送STP BPDU。

l RSTP模式：设备的各端口都向外发送RSTP BPDU，当某端口发现其对端设备上运行STP时，该端口会自动迁移到STP兼容模式。

l MSTP模式：设备的各端口都向外发送MSTP BPDU，当某端口发现其对端设备上运行STP时，该端口会自动迁移到STP兼容模式。

l PVST模式：设备的各端口都向外发送PVST BPDU，每个VLAN维护一棵生成树。不同型号的设备可维护的VLAN数目（假设为n， S3600V2系列交换机为128）不同，当使用不同型号的设备进行PVST组网时，网络中维护有生成树的VLAN总数请勿超过最小的n值，否则将导致网络故障。

表1-12 配置生成树的工作模式

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置生成树的工作模式 | stp mode { stp | rstp | mstp | pvst } | 必选 缺省情况下，生成树的工作模式为MSTP模式

在各工作模式下进行配置时，对是否需要指定MSTI和VLAN的要求不同：

l 在STP兼容模式或RSTP模式下无需指定MSTI和VLAN，若指定了MSTI或VLAN则该配置无效。

l 在MSTP模式下，若指定了MSTI则表示针对该MSTI进行配置，若指定了VLAN则该配置无效，若MSTI和VLAN均未指定则表示针对CIST进行配置。

l 在PVST模式下，若指定了VLAN则表示针对该VLAN进行配置，若未指定VLAN则该配置无效。

1.3.2 配置MST域

表1-13 配置MST域

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入MST域视图 | stp region-configuration | -
配置MST域的域名 | region-name name | 可选 缺省情况下，MST域的域名为设备的MAC地址
配置VLAN映射表 | instance instance-id vlan vlan-list | 二者可选其一 缺省情况下，所有VLAN都映射到CIST（即MSTI 0）上
 | vlan-mapping modulo modulo
配置MSTP的修订级别 | revision-level level | 可选 缺省情况下，MSTP的修订级别为0
显示MST域的预配置信息 | check region-configuration | 可选
激活MST域的配置 | active region-configuration | 必选
显示当前生效的MST域配置信息 | display stp region-configuration [ | { begin | exclude | include } regular-expression ] | 可选 display 命令可以在任意视图执行

l 两台或多台使能了生成树协议的设备若要属于同一个MST域，必须同时满足以下两个条件：第一是选择因子（取值为0，不可配）、域名、修订级别和VLAN映射表的配置都相同；第二是这些设备之间的链路相通。

l 在配置MST域的相关参数（特别是VLAN映射表）时，会引发生成树的重新计算，从而引起网络拓扑的振荡。为了减少网络振荡，新配置的MST域参数并不会马上生效，而是在使用 active region-configuration 命令激活，或使用命令 stp enable 使能生成树协议后才会生效。

l 在PVST模式下，系统会自动将VLAN与MSTI进行映射。由于设备在PVST模式下支持的MSTI数量比在MSTP模式下多，因此当由PVST模式切换到MSTP模式时，多出的MSTI（按MSTI的编号由小到大确定）的映射关系配置将被自动清除，此后即使再切换回PVST模式，被清除的这些配置也不会自动恢复。为了避免这种情况，在PVST模式下不建议手工配置VLAN与MSTI的映射关系。

1.3.3 配置根桥和备份根桥

可以通过计算来自动确定生成树的根桥，用户也可以手工将设备配置为指定生成树的根桥或备份根桥：

l 设备在各生成树中的角色互相独立，在作为一棵生成树的根桥或备份根桥的同时，也可以作为其它生成树的根桥或备份根桥；但在同一棵生成树中，一台设备不能既作为根桥，又作为备份根桥。

l 在一棵生成树中，生效的根桥只有一个；当两台或两台以上的设备被指定为同一棵生成树的根桥时，系统将选择MAC地址最小的设备作为根桥。

l 可以在每棵生成树中指定多个备份根桥。当根桥出现故障或被关机时，备份根桥可以取代根桥成为指定生成树的根桥；但此时若配置了新的根桥，则备份根桥将不会成为根桥。如果配置了多个备份根桥，则MAC地址最小的备份根桥将成为指定生成树的根桥。

1. 配置根桥

请在欲配置为根桥的设备上进行如下配置。

表1-14 配置根桥

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置当前设备为根桥（STP/RSTP模式） | stp root primary | 必选 缺省情况下，设备不是根桥
配置当前设备为根桥（PVST模式） | stp vlan vlan-list root primary
配置当前设备为根桥（MSTP模式） | stp [ instance instance-id ] root primary

2. 配置备份根桥

请在欲配置为备份根桥的设备上进行如下配置。

表1-15 配置备份根桥

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置当前设备为备份根桥（STP/RSTP模式） | stp root secondary | 必选 缺省情况下，设备不是备份根桥
配置当前设备为备份根桥（PVST模式） | stp vlan vlan-list root secondary
配置当前设备为备份根桥（MSTP模式） | stp [ instance instance-id ] root secondary

l 用户可以为每棵生成树指定一个根桥，而无需关心设备的优先级配置。当设备一旦被配置为根桥或者备份根桥之后，便不能再修改该设备的优先级。

l 也可以通过配置设备的优先级为0来实现将当前设备指定为根桥的目的。有关设备优先级的配置，请参见“1.3.4 配置设备的优先级”。

1.3.4 配置设备的优先级

设备的优先级参与生成树计算，其大小决定了该设备是否能够被选作生成树的根桥。数值越小表示优先级越高，通过配置较小的优先级，可以达到指定某台设备成为生成树根桥的目的。可以在不同的生成树中为设备配置不同的优先级。

表1-16 配置设备的优先级

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置设备的优先级（STP/RSTP模式） | stp priority priority | 必选 缺省情况下，设备的优先级为32768
配置设备的优先级（PVST模式） | stp vlan vlan-list priority priority
配置设备的优先级（MSTP模式） | stp [ instance instance-id ] priority priority

l 当指定设备为根桥或者备份根桥之后，不允许再修改该设备的优先级。

l 在生成树根桥的选择过程中，如果设备的优先级相同，则MAC地址最小的设备将被选择为根。

1.3.5 配置MST域的最大跳数

MST域的最大跳数限制了MST域的规模，在域根上配置的最大跳数将作为该MST域的最大跳数。

从MST域内的生成树的根桥开始，域内的配置消息（即BPDU）每经过一台设备的转发，跳数就被减1；设备将丢弃跳数为0的配置消息，以使处于最大跳数外的设备无法参与生成树的计算，从而限制了MST域的规模。

本配置只需在根桥设备上进行，非根桥设备将采用根桥设备的配置值。

表1-17 配置MST域的最大跳数

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置MST域的最大跳数 | stp max-hops hops | 必选 缺省情况下，MST域的最大跳数为20

1.3.6 配置交换网络的网络直径

交换网络中任意两台终端设备都通过特定路径彼此相连，这些路径由一系列的设备构成。网络直径就是指交换网络中任意两台终端设备间的最大设备数。网络直径越大，说明网络的规模越大。

表1-18 配置交换网络的网络直径

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置交换网络的网络直径（STP/RSTP/MSTP模式） | stp bridge-diameter diameter | 必选 缺省情况下，交换网络的网络直径为7
配置交换网络的网络直径（PVST模式） | stp vlan vlan-list bridge-diameter diameter

l 在配置了网络直径之后，系统会通过计算自动将设备的Hello Time、 Forward Delay和Max Age三个时间参数设置为最优值。

l 在STP/RSTP/MSTP模式下，每个MST域将被视为一台设备，且网络直径配置只对CIST有效（即只能在总根上生效），而对MSTI无效。

l 在PVST模式下，网络直径的配置只能在根桥上生效。

1.3.7 配置生成树的时间参数

在生成树的计算过程中，用到了以下三个时间参数：

(1) Forward Delay：用于确定状态迁移的延迟时间。为了防止产生临时环路，生成树协议在端口由Discarding状态向Forwarding状态迁移的过程中设置了Learning状态作为过渡，并规定状态迁移需要等待Forward Delay时间，以保持与远端的设备状态切换同步。

(2) Hello Time：用于检测链路是否存在故障。生成树协议每隔Hello Time时间会发送配置消息，以确认链路是否存在故障。如果设备在Hello Time时间内没有收到BPDU，则会由于消息超时而重新计算生成树。

(3) Max Age：用于确定配置消息是否超时。在MSTP的CIST以及PVST的各VLAN上，设备根据Max Age时间来确定端口收到的配置消息是否超时。如果端口收到的配置消息超时，则需要对该MSTI重新计算。Max Age时间对MSTP的MSTI无效。

上述三个时间参数之间应满足以下关系，否则会引起网络的频繁震荡：

(1) 2×（Forward Delay－1秒） ¦ Max Age

(2) Max Age ¦ 2×（Hello Time＋1秒）

通常情况下，不建议通过本配置直接调整上述三个时间参数。由于这三个时间参数的取值与网络规模有关，因此建议通过调整网络直径，使生成树协议自动调整这三个时间参数的值。当网络直径取缺省值时，这三个时间参数也分别取其各自的缺省值。

本配置只需在根桥设备上进行，整个交换网络中的所有设备都将采用根桥设备的配置值。

表1-19 配置生成树的时间参数

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置Forward Delay时间参数（STP/RSTP/MSTP模式） | stp timer forward-delay time | 可选 缺省情况下，Forward Delay为1500厘秒
配置Forward Delay时间参数（PVST模式） | stp vlan vlan-list timer forward-delay time
配置Hello Time时间参数（STP/RSTP/MSTP模式） | stp timer hello time | 可选 缺省情况下，Hello Time为200厘秒
配置Hello Time时间参数（PVST模式） | stp vlan vlan-list timer hello time
配置Max Age时间参数（STP/RSTP/MSTP模式） | stp timer max-age time | 可选 缺省情况下，Max Age为2000厘秒
配置Max Age时间参数（PVST模式） | stp vlan vlan-list timer max-age time

l Forward Delay的长短与交换网络的网络直径有关。一般来说，网络直径越大，Forward Delay就应该越长。如果Forward Delay过短，可能引入临时的冗余路径；如果Forward Delay过长，网络可能较长时间不能恢复连通。建议用户采用缺省值。

l 合适的Hello Time可以保证设备能够及时发现网络中的链路故障，又不会占用过多的网络资源。如果Hello Time过长，在链路发生丢包时，设备会误以为链路出现了故障，从而引发设备重新计算生成树；如果Hello Time过短，设备将频繁发送重复的配置消息，增加了设备的负担，浪费了网络资源。建议用户采用缺省值。

l 如果Max Age过短，设备会频繁地计算生成树，而且有可能将网络拥塞误认成链路故障；如果Max Age过长，设备很可能不能及时发现链路故障，不能及时重新计算生成树，从而降低网络的自适应能力。建议用户采用缺省值。

1.3.8 配置超时时间因子

超时时间因子用来确定设备的超时时间：超时时间＝超时时间因子×3×Hello Time。

当网络拓扑结构稳定后，非根桥设备会每隔Hello Time时间向周围相连设备转发根桥发出的BPDU以确认链路是否存在故障。通常如果设备在9倍的Hello Time时间内没有收到上游设备发来的BPDU，就会认为上游设备已经故障，从而重新进行生成树的计算。

有时设备在较长时间内收不到上游设备发来的BPDU，可能是由于上游设备的繁忙导致的，在这种情况下一般不应重新进行生成树的计算。因此在稳定的网络中，可以通过延长超时时间来减少网络资源的浪费。在一个稳定的网络中，建议将超时时间因子配置为5～7。

表1-20 配置超时时间因子

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置设备的超时时间因子 | stp timer-factor factor | 必选 缺省情况下，设备的超时时间因子为3

1.3.9 配置端口的最大发送速率

端口的最大发送速率是指每Hello Time时间内端口能够发送的BPDU最大数目。端口的最大发送速率与端口的物理状态和网络结构有关，用户可以根据实际的网络情况对其进行配置。

表1-21 配置端口的最大发送速率

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
进入相应视图 | 进入二层以太网端口视图或二层聚合接口视图 | interface interface-type interface-number | 二者必选其一
 | 进入端口组视图 | port-group manual port-group-name
配置端口的最大发送速率 |  | stp transmit-limit limit | 必选 缺省情况下，端口的最大发送速率为10

最大发送速率越高，每个Hello Time内可发送的BPDU数量就越多，占用的系统资源也越多。适当配置最大发送速率一方面可以限制端口发送BPDU的速度，另一方面还可以防止在网络拓扑动荡时，生成树协议占用过多的带宽资源。建议用户采用缺省配置。

1.3.10 配置端口为边缘端口

当端口直接与用户终端相连，而没有连接到其它设备或共享网段上，则该端口被认为是边缘端口。网络拓扑变化时，边缘端口不会产生临时环路。

由于设备无法知道端口是否直接与终端相连，所以需要用户手工将端口配置为边缘端口。如果用户将某个端口配置为边缘端口，那么当该端口由阻塞状态向转发状态迁移时，这个端口可以实现快速迁移，而无需等待延迟时间。

表1-22 配置端口为边缘端口

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
进入相应视图 | 进入二层以太网端口视图或二层聚合接口视图 | interface interface-type interface-number | 二者必选其一
 | 进入端口组视图 | port-group manual port-group-name
配置当前端口为边缘端口 |  | stp edged-port enable | 必选 缺省情况下，端口为非边缘端口

l 在设备没有使能BPDU保护的情况下，如果被设置为边缘端口的端口上收到来自其它端口的BPDU，则该端口会重新变为非边缘端口。此时，只有重启端口才能将该端口恢复为边缘端口。

l 对于直接与终端相连的端口，请将该端口设置为边缘端口，同时使能BPDU保护功能。这样既能够使该端口快速迁移到转发状态，也可以保证网络的安全。

l 在同一个端口上不允许同时配置边缘端口和环路保护功能。

1.3.11 配置端口的路径开销

路径开销（Path Cost）是与端口相连的链路速率相关的参数。在支持生成树协议的设备上，端口在不同的MSTI中可以拥有不同的路径开销。设置合适的路径开销可以使不同VLAN的流量沿不同的物理链路转发，从而实现按VLAN负载分担的功能。

设备可以自动计算端口的缺省路径开销，用户也可以直接配置端口的路径开销。

1. 配置缺省路径开销的计算标准

缺省路径开销的计算标准有以下三种，用户可以通过本配置来改变设备自动计算端口的缺省路径开销时所采用的计算标准：

l dot1d-1998：表示按照IEEE 802.1D-1998标准来计算缺省路径开销。

l dot1t：表示按照IEEE 802.1t标准来计算缺省路径开销。

l legacy：表示按照私有标准来计算缺省路径开销。

表1-23 配置缺省路径开销的计算标准

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置缺省路径开销的计算标准 | stp pathcost-standard { dot1d-1998 | dot1t | legacy } | 必选 缺省情况下，缺省路径开销的计算标准为私有标准

改变缺省路径开销的计算标准，将使端口的路径开销值恢复为缺省值。

链路速率与路径开销值的对应关系如 表1-24 所示。

表1-24 链路速率与端口路径开销值的对应关系表

链路速率 | 端口类型 | 端口的路径开销值
 |  | IEEE 802.1D-1998 | IEEE 802.1t | 私有标准
0 | - | 65535 | 200,000,000 | 200,000
10Mbps | 单个端口 | 100 | 2,000,000 | 2,000
 | 聚合接口（含两个选中端口） |  | 1,000,000 | 1,800
 | 聚合接口（含三个选中端口） |  | 666,666 | 1,600
 | 聚合接口（含四个选中端口） |  | 500,000 | 1,400
100Mbps | 单个端口 | 19 | 200,000 | 200
 | 聚合接口（含两个选中端口） |  | 100,000 | 180
 | 聚合接口（含三个选中端口） |  | 66,666 | 160
 | 聚合接口（含四个选中端口） |  | 50,000 | 140
1000Mbps | 单个端口 | 4 | 20,000 | 20
 | 聚合接口（含两个选中端口） |  | 10,000 | 18
 | 聚合接口（含三个选中端口） |  | 6,666 | 16
 | 聚合接口（含四个选中端口） |  | 5,000 | 14
10Gbps | 单个端口 | 2 | 2,000 | 2
 | 聚合接口（含两个选中端口） |  | 1,000 | 1
 | 聚合接口（含三个选中端口） |  | 666 | 1
 | 聚合接口（含四个选中端口） |  | 500 | 1

在计算聚合接口的路径开销时，IEEE 802.1D-1998标准不考虑聚合接口所对应聚合组内选中端口的数量；而IEEE 802.1t标准则对此予以考虑，其计算公式为：端口的路径开销＝200000000÷链路速率（单位为100Kbps），其中链路速率为聚合接口所对应聚合组内选中端口的速率之和。

2. 配置端口的路径开销

表1-25 配置端口的路径开销

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
进入相应视图 | 进入二层以太网端口视图或二层聚合接口视图 | interface interface-type interface-number | 二者必选其一
 | 进入端口组视图 | port-group manual port-group-name
配置端口的路径开销（STP/RSTP模式） |  | stp cost cost | 必选 缺省情况下，自动按照相应的标准计算各生成树上的路径开销
配置端口的路径开销（PVST模式） |  | stp vlan vlan-list cost cost
配置端口的路径开销（MSTP模式） |  | stp [ instance instance-id ] cost cost

当端口的路径开销值改变时，系统将重新计算端口的角色并进行状态迁移。

3. 配置举例

# 在MSTP模式下，配置按照IEEE 802.1D-1998标准来计算缺省路径开销，并配置端口Ethernet1/0/3在MSTI 2上的路径开销值为200。

<Sysname> system-view

[Sysname] stp pathcost-standard dot1d-1998

[Sysname] interface ethernet 1/0/3

[Sysname-Ethernet1/0/3] stp instance 2 cost 200

# 在PVST模式下，配置按照IEEE 802.1D-1998标准来计算缺省路径开销，并配置端口Ethernet1/0/3在PVST VLAN 20～30上的路径开销均为2000。

<Sysname> system-view

[Sysname] stp mode pvst

[Sysname] stp pathcost-standard dot1d-1998

[Sysname] interface ethernet 1/0/3

[Sysname-Ethernet1/0/3] stp vlan 20 to 30 cost 2000

1.3.12 配置端口的优先级

端口优先级是确定该端口是否会被选为根端口的重要依据，同等条件下优先级高的端口将被选为根端口。在支持生成树协议的设备上，端口可以在不同的生成树中拥有不同的优先级，同一端口可以在不同的生成树中担任不同的角色，从而使不同VLAN的数据沿不同的物理路径传播，实现按VLAN进行负载分担的功能。用户可以根据组网的实际需要来设置端口的优先级。

表1-26 配置端口的优先级

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
进入相应视图 | 进入二层以太网端口视图或二层聚合接口视图 | interface interface-type interface-number | 二者必选其一
 | 进入端口组视图 | port-group manual port-group-name
配置端口的优先级（STP/RSTP模式） |  | stp port priority priority | 必选 缺省情况下，端口的优先级为128
配置端口的优先级（PVST模式） |  | stp vlan vlan-list port priority priority
配置端口的优先级（MSTP模式） |  | stp [ instance instance-id ] port priority priority

当端口的优先级改变时，系统将重新计算端口的角色并进行状态迁移。

1.3.13 配置端口的链路类型

点对点链路是两台设备之间直接连接的链路。与点对点链路相连的两个端口如果为根端口或者指定端口，则端口可以通过传送同步报文（Proposal报文和Agreement报文）快速迁移到转发状态，减少了不必要的转发延迟时间。

表1-27 配置端口的链路类型

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
进入相应视图 | 进入二层以太网端口视图或二层聚合接口视图 | interface interface-type interface-number | 二者必选其一
 | 进入端口组视图 | port-group manual port-group-name
配置端口的链路类型 |  | stp point-to-point { auto | force-false | force-true } | 必选 缺省情况下，端口的链路类型为 auto，即由系统自动检测与本端口相连的链路是否为点对点链路

l 如果某端口是二层聚合接口或其工作在全双工模式下，则可以将该端口配置为与点对点链路相连。通常建议使用缺省配置，由系统进行自动检测。

l 在MSTP模式或PVST模式下，如果某端口被配置为与点对点链路（或非点对点链路）相连，那么该配置对该端口所属的所有MSTI或VLAN都有效。

l 如果某端口被配置为与点对点链路相连，但与该端口实际相连的物理链路不是点对点链路，则有可能引入临时回路。

1.3.14 配置端口收发的MSTP报文格式

端口可以收发的MSTP报文格式有两种：

l dot1s：符合802.1s协议的标准格式；

l legacy：与非标准格式兼容的格式。

端口默认配置为自动识别方式（auto），即可以自动识别这两种格式的MSTP报文，并根据识别结果确定发送报文的格式，从而实现与对端设备的互通。

用户也可以通过配置改变端口收发的MSTP报文格式，使端口只收发与所配格式相符的MSTP报文，实现与对端发送所配置格式报文的设备互通。

表1-28 配置端口收发的MSTP报文格式

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
进入相应视图 | 进入二层以太网端口视图或二层聚合接口视图 | interface interface-type interface-number | 二者必选其一
 | 进入端口组视图 | port-group manual port-group-name
配置端口收发的MSTP报文格式 |  | stp compliance { auto | dot1s | legacy } | 必选 缺省情况下，端口会自动识别收到的MSTP报文格式并根据识别结果确定发送的报文格式

l 设备提供了MSTP报文格式不兼容保护功能：在MSTP模式下，当端口上配置的收发MSTP报文格式不是 auto 时，如果端口收到了与所配格式不符的报文，该端口将成为指定端口，其状态将保持在Discarding，以防止出现环路。

l 设备提供了MSTP报文格式频繁切换保护功能：设备运行过程中，如果端口收到的MSTP报文格式频繁变化，则表明组网中MSTP报文格式的配置出现了错误，此时在MSTP模式下会把该端口关闭以进行保护。被关闭的端口在经过一定时间间隔之后将被重新激活，这个时间间隔就是定时检测时间间隔。有关定时检测时间间隔的详细介绍，请参见“基础配置指导”中的“设备管理”。

1.3.15 打开端口状态变化信息显示开关

在使能了生成树协议的大型网络中，用户可以通过打开端口状态变化信息显示开关，使系统输出端口状态变化的相关信息，方便用户对端口状态进行实时监控。

表1-29 打开端口状态变化信息显示开关

操作 | 命令 | 说明
进入系统视图 | system-view | -
打开端口状态变化信息显示开关（STP/RSTP模式） | stp port-log instance 0 | 必选 缺省情况下，端口状态变化信息显示开关处于开启状态
打开端口状态变化信息显示开关（PVST模式） | stp port-log vlan vlan-list
打开端口状态变化信息显示开关（MSTP模式） | stp port-log instance { instance-id | all }

1.3.16 使能生成树协议

只有使能了生成树协议，生成树的其它配置才会生效。

1. 使能生成树协议（STP/RSTP/MSTP模式）

在STP/RSTP/MSTP模式下，须保证全局和端口上的生成树协议均处于使能状态。

表1-30 使能生成树协议（STP/RSTP/MSTP模式）

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
全局使能生成树协议 |  | stp enable | 必选 缺省情况下，全局生成树协议处于关闭状态
进入相应视图 | 进入二层以太网端口视图或二层聚合接口视图 | interface interface-type interface-number | 二者必选其一
 | 进入端口组视图 | port-group manual port-group-name
在端口上使能生成树协议 |  | stp enable | 可选 缺省情况下，所有端口上的生成树协议均处于使能状态

2. 使能生成树协议（PVST模式）

在PVST模式下，必须保证全局、VLAN和端口上的生成树协议均处于使能状态。

表1-31 使能生成树协议（PVST模式）

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
全局使能生成树协议 |  | stp enable | 必选 缺省情况下，全局生成树协议处于关闭状态
在VLAN中使能生成树协议 |  | stp vlan vlan-list enable | 必选 缺省情况下，VLAN上生成树协议处于使能状态
进入相应视图 | 进入二层以太网端口视图或二层聚合接口视图 | interface interface-type interface-number | 二者必选其一
 | 进入端口组视图 | port-group manual port-group-name
在端口上使能生成树协议 |  | stp enable | 可选 缺省情况下，所有端口上的生成树协议均处于使能状态

l 在系统视图下，执行 stp enable 命令表示使能或关闭全局的（不包括VLAN上的）生成树协议，执行 stp vlan enable 命令则表示使能或关闭指定VLAN上的生成树协议。

l 可以通过 undo stp enable 命令关闭特定端口的生成树协议，使这些端口不参与生成树计算，以节省设备的CPU资源。

1.3.17 执行mCheck操作

MSTP的工作模式有STP兼容模式、RSTP模式、MSTP模式和PVST模式四种。在运行MSTP、RSTP或PVST的设备上，若某端口连接着运行STP协议的设备，该端口会自动迁移到STP兼容模式；但在下列两种情况下，该端口将无法自动迁移回到原有模式，而需要通过执行mCheck操作将其手工迁移回原有模式：

l 运行STP协议的设备被关机或撤走；

l 运行STP协议的设备切换为MSTP模式、RSTP模式或PVST模式。

可以在全局或在端口上执行mCheck操作。

1. 全局执行mCheck操作

表1-32 全局执行mCheck操作

操作 | 命令 | 说明
进入系统视图 | system-view | -
全局执行mCheck操作 | stp mcheck | 必选

2. 在端口上执行mCheck操作

表1-33 在端口上执行mCheck操作

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入二层以太网端口视图或二层聚合接口视图 | interface interface-type interface-number | -
在端口上执行mCheck操作 | stp mcheck | 必选

只有当生成树的工作模式为MSTP模式、RSTP模式或PVST模式时执行mCheck操作才有效。

1.3.18 配置摘要侦听功能

根据IEEE 802.1s规定，只有在MST域配置（包括域名、修订级别和VLAN映射关系）完全一致的情况下，相连的设备才被认为是在同一个域内。当设备使能了生成树协议以后，设备之间通过识别BPDU数据报文内的配置ID来判断相连的设备是否与自己处于相同的MST域内；配置ID包含域名、修订级别、配置摘要等内容，其中配置摘要长16字节，是由HMAC-MD5算法将VLAN与MSTI的映射关系加密计算而成。

在网络中，由于一些厂商的设备在对生成树协议的实现上存在差异，即用加密算法计算配置摘要时采用私有的密钥，从而导致即使MST域配置相同，不同厂商的设备之间也不能实现在MST域内的互通。

通过在我方设备与对生成树协议的实现存在差异的第三方厂商设备相连的端口上使能摘要侦听功能，可以实现我方设备与这些厂商设备在MST域内的完全互通。

1. 配置准备

我方设备与第三方厂商设备相连，网络配置正确，生成树协议正常运行。

2. 配置摘要侦听功能

只有当我方设备与对生成树协议的实现存在差异的第三方厂商设备（即采用私有密钥来计算配置摘要）互连时，才有必要配置本功能。

表1-34 配置摘要侦听功能

配置步骤 |  | 命令 | 说明
进入系统视图 |  | system-view | -
进入相应视图 | 进入二层以太网端口视图或二层聚合接口视图 | interface interface-type interface-number | 二者必选其一
 | 进入端口组视图 | port-group manual port-group-name
在端口上使能摘要侦听功能 |  | stp config-digest-snooping | 必选 缺省情况下，摘要侦听功能处于关闭状态
退回系统视图 |  | quit | -
全局使能摘要侦听功能 |  | stp config-digest-snooping | 必选 缺省情况下，摘要侦听功能处于关闭状态

l 摘要侦听功能在端口生效后，由于不再通过配置摘要的比较计算来判断是否在同一个域内，因此需要保证互连设备的域配置中VLAN与MSTI映射关系的配置相同。

l 全局使能摘要侦听功能后，禁止修改MST域配置中VLAN与MSTI的映射关系，禁止执行 undo stp region-configuration 命令取消当前域配置，但可以修改域配置中的域名和修订级别。

l 只有当全局和端口上都使能了摘要侦听功能后，该功能才能生效。使能摘要侦听功能时，建议先在所有与第三方厂商设备相连的端口上使能该功能，再全局使能该功能，以一次性让所有端口的配置生效，从而减少对网络的冲击。

l 请不要在MST域的边界端口上使能摘要侦听功能，否则可能会导致环路。

l 建议配置完摘要侦听功能后再使能生成树协议。在网络稳定的情况下不要进行摘要侦听功能的配置，以免造成临时的流量中断。

3. 摘要侦听功能配置举例

(1) 组网需求

l Device A和Device B分别与对生成树协议的实现存在差异的第三方厂商设备Device C相连并配置在同一域内。

l 分别在Device A和Device B各自与Device C相连的端口上使能摘要侦听功能，实现Device A、Device B和Device C在MST域内的互通。

(2) 组网图

图1-7 摘要侦听功能配置组网图

(3) 配置步骤

# 在Device A的端口Ethernet1/0/1上使能摘要侦听功能，并全局使能摘要侦听功能。

<DeviceA> system-view

[DeviceA] interface ethernet 1/0/1

[DeviceA-Ethernet1/0/1] stp config-digest-snooping

[DeviceA-Ethernet1/0/1] quit

[DeviceA] stp config-digest-snooping

# 在Device B的端口Ethernet1/0/1上使能摘要侦听功能，并全局使能摘要侦听功能。

<DeviceB> system-view

[DeviceB] interface ethernet 1/0/1

[DeviceB-Ethernet1/0/1] stp config-digest-snooping

[DeviceB-Ethernet1/0/1] quit

[DeviceB] stp config-digest-snooping

1.3.19 配置No Agreement Check功能

RSTP和MSTP的指定端口快速迁移机制使用两种协议报文：

l Proposal报文：指定端口请求快速迁移的报文。

l Agreement报文：同意对端进行快速迁移的报文。

RSTP和MSTP均要求上游设备的指定端口在接收到下游设备的Agreement报文后才能进行快速迁移 。不同之处如下：

l 对于MSTP，上游设备先向下游设备发送Agreement报文，而下游设备的根端口只有在收到了上游设备的Agreement报文后才会向上游设备回应Agreement报文。

l 对于RSTP，下游设备无需等待上游设备发送Agreement报文就可向上游设备发送Agreement报文。

如 图1-8 所示，是MSTP的指定端口快速迁移机制。

图1-8 MSTP指定端口快速迁移机制

如 图1-9 所示，是RSTP的指定端口快速迁移机制。

图1-9 RSTP指定端口快速迁移机制

当我方设备与作为上游设备且与对生成树协议的实现存在差异的第三方厂商设备互联时，二者在快速迁移的配合上可能会存在一定的限制。例如：上游设备指定端口的状态迁移实现机制与RSTP类似；而下游设备运行MSTP并且不工作在RSTP模式时，由于下游设备的根端口接收不到上游设备的Agreement报文，它不会向上游设备发Agreement报文，所以上游设备的指定端口无法实现状态的快速迁移，只能在2倍的Forward Delay延时后变成转发状态。

通过在我方设备与对生成树协议的实现存在私有性差异的上游第三方厂商设备相连的端口上使能No Agreement Check功能，可避免这种情况的出现，使得上游的第三方厂商设备的指定端口能够进行状态的快速迁移。

1. 配置准备

l 设备与作为上游设备且支持生成树协议的第三方厂商设备互连，并且端口之间为点对点链路。

l 为我方设备与第三方厂商设备配置相同的域名、域配置修订级别和VLAN与MSTI的映射关系，以确保它们在同一个域内。

2. 配置No Agreement Check功能

请在设备的根端口上进行如下配置，且本功能只有在根端口上配置才会生效。

表1-35 配置No Agreement Check功能

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
进入相应视图 | 进入二层以太网端口视图或二层聚合接口视图 | interface interface-type interface-number | 二者必选其一
 | 进入端口组视图 | port-group manual port-group-name
使能No Agreement Check功能 |  | stp no-agreement-check | 必选 缺省情况下，No Agreement Check功能处于关闭状态

3. No Agreement Check功能配置举例

(1) 组网需求

l Device A与对生成树协议的实现存在差异的第三方厂商设备Device B互连并配置在同一域内。

l Device B作为域根，Device A作为下游设备。

(2) 组网图

图1-10 No Agreement Check功能配置组网图

(3) 配置步骤

# 在Device A的端口Ethernet1/0/1上使能No Agreement Check功能。

<DeviceA> system-view

[DeviceA] interface ethernet 1/0/1

[DeviceA-Ethernet1/0/1] stp no-agreement-check

1.3.20 配置TC Snooping功能

TC Snooping功能的典型应用环境如 图1-11 所示。在该组网中，由Device A和Device B组成的IRF设备未使能生成树协议，而用户网络1和2中的所有设备均使能了生成树协议。用户网络1和2均通过双上行链路与IRF设备相连以提高链路可靠性，BPDU在每个用户网络中都能够被IRF设备进行透明传输。

图1-11 TC Snooping功能典型应用组网图

在该组网中，当IRF设备和用户网络的拓扑结构发生改变时，由于IRF设备对BPDU进行了透明传输而不参与生成树计算，因而其本身可能需经过较长时间才能重新学到正确的MAC地址表项和ARP表项，在此期间可能导致网络中断。为了避免这种情况，可以通过在IRF设备上使能TC Snooping功能，使其在收到TC-BPDU（网络拓扑发生变化的通知报文）后，主动更新接收该报文的端口所属的VLAN所对应的MAC地址表和ARP表，从而保证业务流量的正常转发。

l 有关MAC地址表的详细介绍，请参见“二层技术-以太网交换配置指导”中的“MAC地址表”。

l 有关ARP表的详细介绍，请参见“三层技术-IP业务配置指导”中的“ARP”。

表1-36 配置TC Snooping功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
全局关闭生成树协议 | undo stp enable | 必选 缺省情况下，生成树协议在全局处于关闭状态
使能TC Snooping功能 | stp tc-snooping | 必选 缺省情况下，TC Snooping功能处于关闭状态

l 由于TC Snooping功能与生成树协议互斥，因此在使能TC Snooping功能之前必须全局关闭生成树协议。

l 由于BPDU Tunnel功能比TC Snooping功能的优先级高，因此若某端口使能了生成树协议的BPDU Tunnel功能，TC Snooping功能将不会在该端口上生效。有关BPDU Tunnel功能的详细介绍，请参见“二层技术-以太网交换配置指导”中的“BPDU Tunnel”。

1.3.21 配置生成树保护功能

生成树保护功能有以下五种：

l BPDU保护功能

l 根保护功能

l 环路保护功能

l 防TC-BPDU攻击保护功能

l BPDU拦截功能

1. 配置准备

生成树协议在设备上已经正确配置。

2. 配置BPDU保护功能

对于接入层设备，接入端口一般直接与用户终端（如PC）或文件服务器相连，此时接入端口被设置为边缘端口以实现这些端口的快速迁移；当这些端口接收到配置消息（即BPDU）时系统会自动将这些端口设置为非边缘端口，重新计算生成树，引起网络拓扑结构的变化。这些端口正常情况下应该不会收到STP的配置消息。如果有人伪造配置消息恶意攻击设备，就会引起网络震荡。

生成树协议提供了BPDU保护功能来防止这种攻击：设备上使能了BPDU保护功能后，如果边缘端口收到了配置消息，系统就将这些端口关闭，同时通知网管这些端口已被生成树协议关闭。被关闭的端口在经过一定时间间隔之后将被重新激活，这个时间间隔就是定时检测时间间隔。有关定时检测时间间隔的详细介绍，请参见“基础配置指导”中的“设备管理”。

请在有边缘端口的设备上进行如下配置。

表1-37 配置BPDU保护功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
使能BPDU保护功能 | stp bpdu-protection | 必选 缺省情况下，BPDU保护功能处于关闭状态

BPDU保护功能对使能了环回测试功能的端口无效。有关环回测试功能的相关介绍，请参见“二层技术-以太网交换配置指导”中的“以太网端口”。

3. 配置根保护功能

生成树的根桥和备份根桥应该处于同一个域内，特别是对于CIST的根桥和备份根桥，网络设计时一般会把CIST的根桥和备份根桥放在一个高带宽的核心域内。但是，由于维护人员的错误配置或网络中的恶意攻击，网络中的合法根桥有可能会收到优先级更高的配置消息，这样当前合法根桥会失去根桥的地位，引起网络拓扑结构的错误变动。这种不合法的变动，会导致原来应该通过高速链路的流量被牵引到低速链路上，导致网络拥塞。

为了防止这种情况发生，生成树协议提供了根保护功能：对于使能了根保护功能的端口，其在所有MSTI上的端口角色只能为指定端口。一旦该端口收到某MSTI优先级更高的配置消息，立即将该MSTI端口设置为侦听状态，不再转发报文（相当于将此端口相连的链路断开）。当在2倍的Forward Delay时间内没有收到更优的配置消息时，端口会恢复原来的正常状态。

请在设备的指定端口上进行如下配置。

表1-38 配置根保护功能

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
进入相应视图 | 进入二层以太网端口视图或二层聚合接口视图 | interface interface-type interface-number | 二者必选其一
 | 进入端口组视图 | port-group manual port-group-name
使能端口的根保护功能 |  | stp root-protection | 必选 缺省情况下，端口上的根保护功能处于关闭状态

在同一个端口上不允许同时配置根保护功能和环路保护功能。

4. 配置环路保护功能

依靠不断接收上游设备发送的BPDU，设备可以维持根端口和其它阻塞端口的状态。但是由于链路拥塞或者单向链路故障，这些端口会收不到上游设备的BPDU，此时下游设备会重新选择端口角色，收不到BPDU的下游设备端口会转变为指定端口，而阻塞端口会迁移到转发状态，从而交换网络中会产生环路。环路保护功能会抑制这种环路的产生。

在使能了环路保护功能的端口上，其所有MSTI的初始状态均为Discarding状态：如果该端口收到了BPDU，这些MSTI可以进行正常的状态迁移；否则，这些MSTI将一直处于Discarding状态以避免环路的产生。

请在设备的根端口和替换端口上进行如下配置。

表1-39 配置环路保护功能

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
进入相应视图 | 进入二层以太网端口视图或二层聚合接口视图 | interface interface-type interface-number | 二者必选其一
 | 进入端口组视图 | port-group manual port-group-name
使能端口的环路保护功能 |  | stp loop-protection | 必选 缺省情况下，端口的环路保护功能处于关闭状态

l 请不要在与用户终端相连的端口上使能环路保护功能，否则该端口会因收不到BPDU而导致其所有MSTI将一直处于Discarding状态。

l 在同一个端口上不允许同时配置边缘端口和环路保护功能，或者同时配置根保护功能和环路保护功能。

5. 配置防TC-BPDU攻击保护功能

设备在接收到TC-BPDU（网络拓扑发生变化的通知报文）后，会执行转发地址表项的刷新操作。在有人伪造TC-BPDU恶意攻击设备时，设备短时间内会收到很多的TC-BPDU，频繁的刷新操作给设备带来很大负担，给网络的稳定带来很大隐患。

通过在设备上使能防TC-BPDU攻击保护功能，可以避免频繁地刷新转发地址表项。当使能了防TC-BPDU攻击保护功能后，如果设备在单位时间（固定为十秒）内收到TC-BPDU的次数大于 stp tc-protection threshold 命令所指定的最高次数（假设为N次），那么该设备在这段时间之内将只进行N次刷新转发地址表项的操作，而对于超出N次的那些TC-BPDU，设备会在这段时间过后再统一进行一次地址表项刷新的操作，这样就可以避免频繁地刷新转发地址表项。

表1-40 配置防TC-BPDU攻击保护功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
使能防TC-BPDU攻击保护功能 | stp tc-protection enable | 可选 缺省情况下，防TC-BPDU攻击保护功能处于使能状态
配置在单位时间（固定为十秒）内，设备收到TC-BPDU后立即刷新转发地址表项的最高次数 | stp tc-protection threshold number | 可选 缺省情况下，在单位时间（固定为十秒）内，设备收到TC-BPDU后立即刷新转发地址表项的最高次数为6

建议不要关闭防TC-BPDU攻击保护功能。

6. 配置BPDU拦截功能

在使能了生成树协议的网络中，由于设备收到BPDU后会进行STP计算并向其它设备转发，因此恶意用户可借此进行BPDU攻击：通过不停地发送BPDU，使网络中的所有设备都不停地进行STP计算，从而导致设备的CPU占用率过高或BPDU的协议状态错误等问题。

为了避免这种情况，用户可以在端口上配置BPDU拦截功能。使能了该功能的端口将不再接收任何BPDU，从而能够防止设备遭受BPDU攻击，保证STP计算的正确性。

表1-41 配置BPDU拦截功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入二层以太网端口视图 | interface interface-type interface-number | -
使能端口的BPDU拦截功能 | bpdu-drop any | 必选 缺省情况下，端口的BPDU拦截功能处于关闭状态

开启BPDU拦截功能的端口，对收到的802.1X报文也会进行丢弃，因此请不要同时开启端口的BPDU拦截功能和802.1X功能。关于802.1X功能请参见“安全配置指导”中的“802.1X”。


1.4 生成树显示和维护

在完成上述配置后，在任意视图下执行 display 命令都可以显示配置后生成树的运行情况，通过查看显示信息验证配置的效果。

在用户视图下执行 reset 命令可以清除生成树的统计信息。

表1-42 生成树显示和维护

操作 | 命令
显示被生成树保护功能阻塞的端口信息 | display stp abnormal-port [ | { begin | exclude | include } regular-expression ]
显示端口上的BPDU统计信息 | display stp bpdu-statistics [ interface interface-type interface-number [ instance instance-id ] ] [ | { begin | exclude | include } regular-expression ]
显示被生成树保护功能down掉的端口信息 | display stp down-port [ | { begin | exclude | include } regular-expression ]
显示生成树端口角色计算的历史信息 | display stp [ instance instance-id | vlan vlan-id ] history [ slot slot-number ] [ | { begin | exclude | include } regular-expression ]
显示生成树所有端口收发的TC或TCN报文数 | display stp [ instance instance-id | vlan vlan-id ] tc [ slot slot-number ] [ | { begin | exclude | include } regular-expression ]
显示生成树的状态和统计信息 | display stp [ instance instance-id | vlan vlan-id ] [ interface interface-list | slot slot-number ] [ brief ] [ | { begin | exclude | include } regular-expression ]
显示当前生效的MST域配置信息 | display stp region-configuration [ | { begin | exclude | include } regular-expression ]
显示所有生成树的根桥信息 | display stp root [ | { begin | exclude | include } regular-expression ]
清除生成树的统计信息 | reset stp [ interface interface-list ]


1.5 生成树典型配置举例

1.5.1 MSTP典型配置举例

1. 组网需求

l 网络中所有设备都属于同一个MST域。Device A和Device B为汇聚层设备，Device C和Device D为接入层设备。

l 通过配置MSTP，使不同VLAN的报文按照不同的MSTI转发：VLAN 10的报文沿MSTI 1转发，VLAN 30沿MSTI 3转发，VLAN 40沿MSTI 4转发，VLAN 20沿MSTI 0转发。

l 由于VLAN 10和VLAN 30在汇聚层设备终结、VLAN 40在接入层设备终结，因此配置MSTI 1和MSTI 3的根桥分别为Device A和Device B，MSTI 4的根桥为Device C。

2. 组网图

图1-12 MSTP典型配置组网图

3. 配置步骤

(1) 配置VLAN和端口

请按照图1-12 在Device A和Device B上分别创建VLAN 10、20和30，在Device C上创建VLAN 10、20和40，在Device D上创建VLAN 20、30和40；将各设备的各端口配置为Trunk端口并允许相应的VLAN通过，具体配置过程略。

(2) 配置Device A

# 配置MST域的域名为example，将VLAN 10、30、40分别映射到MSTI 1、3、4上，并配置MSTP的修订级别为0。

<DeviceA> system-view

[DeviceA] stp region-configuration

[DeviceA-mst-region] region-name example

[DeviceA-mst-region] instance 1 vlan 10

[DeviceA-mst-region] instance 3 vlan 30

[DeviceA-mst-region] instance 4 vlan 40

[DeviceA-mst-region] revision-level 0

# 激活MST域的配置。

[DeviceA-mst-region] active region-configuration

[DeviceA-mst-region] quit

# 配置本设备为MSTI 1的根桥。

[DeviceA] stp instance 1 root primary

# 全局使能生成树协议。

[DeviceA] stp enable

(3) 配置Device B

# 配置MST域的域名为example，将VLAN 10、30、40分别映射到MSTI 1、3、4上，并配置MSTP的修订级别为0。

<DeviceB> system-view

[DeviceB] stp region-configuration

[DeviceB-mst-region] region-name example

[DeviceB-mst-region] instance 1 vlan 10

[DeviceB-mst-region] instance 3 vlan 30

[DeviceB-mst-region] instance 4 vlan 40

[DeviceB-mst-region] revision-level 0

# 激活MST域的配置。

[DeviceB-mst-region] active region-configuration

[DeviceB-mst-region] quit

# 配置本设备为MSTI 3的根桥。

[DeviceB] stp instance 3 root primary

# 全局使能生成树协议。

[DeviceB] stp enable

(4) 配置Device C

# 配置MST域的域名为example，将VLAN 10、30、40分别映射到MSTI 1、3、4上，并配置MSTP的修订级别为0。

<DeviceC> system-view

[DeviceC] stp region-configuration

[DeviceC-mst-region] region-name example

[DeviceC-mst-region] instance 1 vlan 10

[DeviceC-mst-region] instance 3 vlan 30

[DeviceC-mst-region] instance 4 vlan 40

[DeviceC-mst-region] revision-level 0

# 激活MST域的配置。

[DeviceC-mst-region] active region-configuration

[DeviceC-mst-region] quit

# 配置本设备为MSTI 4的根桥。

[DeviceC] stp instance 4 root primary

# 全局使能生成树协议。

[DeviceC] stp enable

(5) 配置Device D

# 配置MST域的域名为example，将VLAN 10、30、40分别映射到MSTI 1、3、4上，并配置MSTP的修订级别为0。

<DeviceD> system-view

[DeviceD] stp region-configuration

[DeviceD-mst-region] region-name example

[DeviceD-mst-region] instance 1 vlan 10

[DeviceD-mst-region] instance 3 vlan 30

[DeviceD-mst-region] instance 4 vlan 40

[DeviceD-mst-region] revision-level 0

# 激活MST域的配置。

[DeviceD-mst-region] active region-configuration

[DeviceD-mst-region] quit

# 全局使能生成树协议。

[DeviceD] stp enable

(6) 检验配置效果

当网络拓扑稳定后，通过使用 display stp brief 命令可以查看各设备上生成树的简要信息。例如：

# 查看Device A上生成树的简要信息。

[DeviceA] display stp brief

MSTID Port Role STP State Protection

0 Ethernet1/0/1 ALTE DISCARDING NONE

0 Ethernet1/0/2 DESI FORWARDING NONE

0 Ethernet1/0/3 ROOT FORWARDING NONE

1 Ethernet1/0/1 DESI FORWARDING NONE

1 Ethernet1/0/3 DESI FORWARDING NONE

3 Ethernet1/0/2 DESI FORWARDING NONE

3 Ethernet1/0/3 ROOT FORWARDING NONE

# 查看Device B上生成树的简要信息。

[DeviceB] display stp brief

MSTID Port Role STP State Protection

0 Ethernet1/0/1 DESI FORWARDING NONE

0 Ethernet1/0/2 DESI FORWARDING NONE

0 Ethernet1/0/3 DESI FORWARDING NONE

1 Ethernet1/0/2 DESI FORWARDING NONE

1 Ethernet1/0/3 ROOT FORWARDING NONE

3 Ethernet1/0/1 DESI FORWARDING NONE

3 Ethernet1/0/3 DESI FORWARDING NONE

# 查看Device C上生成树的简要信息。

[DeviceC] display stp brief

MSTID Port Role STP State Protection

0 Ethernet1/0/1 DESI FORWARDING NONE

0 Ethernet1/0/2 ROOT FORWARDING NONE

0 Ethernet1/0/3 DESI FORWARDING NONE

1 Ethernet1/0/1 ROOT FORWARDING NONE

1 Ethernet1/0/2 ALTE DISCARDING NONE

4 Ethernet1/0/3 DESI FORWARDING NONE

# 查看Device D上生成树的简要信息。

[DeviceD] display stp brief

MSTID Port Role STP State Protection

0 Ethernet1/0/1 ROOT FORWARDING NONE

0 Ethernet1/0/2 ALTE DISCARDING NONE

0 Ethernet1/0/3 ALTE DISCARDING NONE

3 Ethernet1/0/1 ROOT FORWARDING NONE

3 Ethernet1/0/2 ALTE DISCARDING NONE

4 Ethernet1/0/3 ROOT FORWARDING NONE

根据上述显示信息，可以绘出各VLAN所对应的MSTI，如图1-13 所示。

图1-13 各VLAN对应的MSTI示意图

1.5.2 PVST典型配置举例

1. 组网需求

l Device A和Device B为汇聚层设备，Device C和Device D为接入层设备。

l 通过配置PVST，使VLAN 10、VLAN 20、VLAN 30和VLAN 40的报文分别按照其各自VLAN所对应的生成树转发。

l 由于VLAN 10、VLAN 20和VLAN 30在汇聚层设备终结、VLAN 40在接入层设备终结，因此配置VLAN 10和VLAN 20的根桥为Device A，VLAN 30的根桥为Device B，VLAN 40的根桥为Device C。

2. 组网图

图1-14 PVST典型配置组网图

3. 配置步骤

(1) 配置VLAN和端口

请按照图1-14 在Device A和Device B上分别创建VLAN 10、20和30，在Device C上创建VLAN 10、20和40，在Device D上创建VLAN 20、30和40；将各设备的各端口配置为Trunk端口并允许相应的VLAN通过，具体配置过程略。

(2) 配置Device A

# 配置生成树的工作模式为PVST模式。

<DeviceA> system-view

[DeviceA] stp mode pvst

# 配置本设备为VLAN 10和VLAN 20的根桥。

[DeviceA] stp vlan 10 20 root primary

# 全局使能生成树协议，并使能VLAN 10、20和30中的生成树协议。

[DeviceA] stp enable

[DeviceA] stp vlan 10 20 30 enable

(3) 配置Device B

# 配置生成树的工作模式为PVST模式。

<DeviceB> system-view

[DeviceB] stp mode pvst

# 配置本设备为VLAN 30的根桥。

[DeviceB] stp vlan 30 root primary

# 全局使能生成树协议，并使能VLAN 10、20和30中的生成树协议。

[DeviceB] stp enable

[DeviceB] stp vlan 10 20 30 enable

(4) 配置Device C

# 配置生成树的工作模式为PVST模式。

<DeviceC> system-view

[DeviceC] stp mode pvst

# 配置本设备为生成树VLAN 40的根桥。

[DeviceC] stp vlan 40 root primary

# 全局使能生成树协议，并使能VLAN 10、20和40中的生成树协议。

[DeviceC] stp enable

[DeviceC] stp vlan 10 20 40 enable

(5) 配置Device D

# 配置生成树的工作模式为PVST模式。

<DeviceD> system-view

[DeviceD] stp mode pvst

# 全局使能生成树协议，并使能VLAN 20、30和40中的生成树协议。

[DeviceD] stp enable

[DeviceD] stp vlan 20 30 40 enable

(6) 检验配置效果

当网络拓扑稳定后，通过使用 display stp brief 命令可以查看各设备上生成树的简要信息。例如：

# 查看Device A上生成树的简要信息。

[DeviceA] display stp brief

VLAN Port Role STP State Protection

10 Ethernet1/0/1 DESI DISCARDING NONE

10 Ethernet1/0/3 DESI FORWARDING NONE

20 Ethernet1/0/1 DESI FORWARDING NONE

20 Ethernet1/0/2 DESI FORWARDING NONE

20 Ethernet1/0/3 DESI FORWARDING NONE

30 Ethernet1/0/2 DESI FORWARDING NONE

30 Ethernet1/0/3 ROOT FORWARDING NONE

# 查看Device B上生成树的简要信息。

[DeviceB] display stp brief

VLAN Port Role STP State Protection

10 Ethernet1/0/2 DESI FORWARDING NONE

10 Ethernet1/0/3 ROOT FORWARDING NONE

20 Ethernet1/0/1 DESI FORWARDING NONE

20 Ethernet1/0/2 DESI FORWARDING NONE

20 Ethernet1/0/3 ROOT FORWARDING NONE

30 Ethernet1/0/1 DESI FORWARDING NONE

30 Ethernet1/0/3 DESI FORWARDING NONE

# 查看Device C上生成树的简要信息。

[DeviceC] display stp brief

VLAN Port Role STP State Protection

10 Ethernet1/0/1 ROOT FORWARDING NONE

10 Ethernet1/0/2 ALTE FORWARDING NONE

20 Ethernet1/0/1 ROOT FORWARDING NONE

20 Ethernet1/0/2 ALTE FORWARDING NONE

20 Ethernet1/0/3 DESI DISCARDING NONE

40 Ethernet1/0/3 DESI FORWARDING NONE

# 查看Device D上生成树的简要信息。

[DeviceD] display stp brief

VLAN Port Role STP State Protection

20 Ethernet1/0/1 ALTE FORWARDING NONE

20 Ethernet1/0/2 ROOT DISCARDING NONE

20 Ethernet1/0/3 ALTE DISCARDING NONE

30 Ethernet1/0/1 ROOT FORWARDING NONE

30 Ethernet1/0/2 ALTE DISCARDING NONE

40 Ethernet1/0/3 ROOT FORWARDING NONE

根据上述显示信息，可以绘出各VLAN所对应的生成树，如图1-15 所示。

图1-15 各VLAN对应的生成树示意图


1 BPDU Tunnel配置

相关链接

  • 1.1 BPDU Tunnel简介
  • 1.2 配置BPDU Tunnel
  • 1.3 BPDU Tunnel典型配置举例
父主题： 07-BPDU Tunnel配置


1.1 BPDU Tunnel简介

BPDU Tunnel是一种二层隧道技术，它使不同地域私网用户的二层协议报文，可以通过运营商网络内的指定通道进行透明传输。

1.1.1 BPDU Tunnel的产生背景

在实际组网中，用户经常利用运营商提供的专线来构建自己的二层网络，这使同一用户私网的不同部分可能分布在运营商公网的两侧。如 图1-1 所示，用户A拥有属于相同VLAN的两台设备CE 1和CE 2，该用户的网络分为网络1和网络2，二者通过运营商网络相连接。当网络1和网络2中共同运行某种二层协议（如STP协议）时，要求网络1和网络2中的二层协议报文能够穿越运营商网络，以完成二层协议的计算（如生成树的计算）。但是，当CE发送的二层协议报文到达PE时，由于PE无法识别该报文来自用户网络还是运营商网络，因此会将其上送给CPU进行处理。这样，用户网络与运营商网络的二层协议计算将相互影响，用户网络就无法独立完成二层协议的计算。

图1-1 BPDU Tunnel应用环境

为了解决上述问题，就要求在运营商网络中能够透传用户网络的二层协议报文。利用BPDU Tunnel功能，即可实现上述要求，具体过程如下：

(1) PE 1将CE 1发来的二层协议报文进行封装，将其目的MAC地址替换成一个特定的组播MAC地址，然后在运营商网络中进行转发；

(2) 封装好的二层协议报文（称为BPDU Tunnel报文）被转发至运营商网络另一端的PE 2，解封装后被还原为原始的目的MAC地址，并发送给CE 2。

目前，H3C设备支持以下协议的BPDU Tunnel功能：

l CDP（Cisco Discovery Protocol，思科发现协议）

l DLDP（Device Link Detection Protocol，设备链路检测协议）

l EOAM（Ethernet Operation, Administration and Maintenance，以太网操作、管理和维护）

l GVRP（GARP VLAN Registration Protocol，GARP VLAN注册协议）

l HGMP（HW Group Management Protocol，HW组管理协议）

l LACP（Link Aggregation Control Protocol，链路聚合控制协议）

l LLDP（Link Layer Discovery Protocol，链路层发现协议）

l PAGP（Port Aggregation Protocol，端口聚合协议）

l PVST（Per VLAN Spanning Tree，每VLAN生成树）

l STP（Spanning Tree Protocol，生成树协议）

l UDLD（Uni-directional Link Direction，单向链路检测）

l VTP（VLAN Trunking Protocol，VLAN中继协议）

1.1.2 BPDU Tunnel的实现

各协议的BPDU Tunnel实现基本类似，下面以STP协议为例介绍BPDU Tunnel的实现过程。

l 本文中的STP是指广义的STP协议，包括STP、RSTP和MSTP。

l STP协议通过在设备之间传递BPDU（Bridge Protocol Data Unit，桥协议数据单元）报文来确定网络的拓扑结构，详情请参见“二层技术-以太网交换配置指导”中的“生成树”。

为避免环路，用户需要在私网中启用STP功能，当一侧私网发生拓扑变化时，会发送BPDU报文给另一侧私网，否则将无法完成在整个用户私网内的生成树计算。但由于BPDU报文是二层组播报文，所有开启STP功能的设备都会接收并处理该报文，因此若用户私网和运营商网络的生成树一起计算将导致每个网络都无法生成正确的生成树。

BPDU Tunnel功能可以解决上述问题，它可使运行STP功能的用户私网和运营商网络拥有各自的生成树，互不干扰，它具有下列作用：

l 对BPDU报文进行透明传输。可以使同一个用户网络的BPDU报文在运营商网络内指定的VLAN中进行广播，使得在不同地域的同一个用户网络可以跨越运营商网络进行统一的生成树计算。

l 同时，由于不同用户网络的BPDU报文在运营商网络的不同VLAN中进行广播，所以不同用户网络的BPDU报文相互隔离，可以独立进行生成树计算。

图1-2 BPDU Tunnel组网示意图

如图1-2 所示，上部为运营商网络，下部为用户A的网络。其中，用户A的网络根据地域的不同又分为网络1和网络2。通过在运营商网络两端的边缘设备PE 1和PE 2上配置BPDU Tunnel功能，可实现网络1和网络2之间的BPDU报文在运营商网络中的透明传输，且这两个网络的生成树通过独立计算后生成。举例来说，假设BPDU报文由网络1发往网络2：

(1) 在运营商网络的输入端，PE 1将来自CE 1的BPDU报文的目的MAC地址0x0180-C200-0000修改为特殊的组播MAC地址（假设为缺省的0x010F-E200-0003）。在运营商网络中，修改后的BPDU报文（即BPDU Tunnel报文）被当作数据报文在用户所属的VLAN中进行转发。

(2) 在运营商网络的输出端，PE 2将目的MAC地址为0x010F-E200-0003的报文识别出来，将其目的MAC地址还原为0x0180-C200-0000，然后将还原后的BPDU报文转发给CE 2。

用户必须通过配置保证用户网络携有VLAN Tag的BPDU报文在运营商网络中进行透明传输的过程中，其VLAN Tag不能被改变也不能被去掉，否则设备将无法正确透传用户网络的BPDU报文。


1.2 配置BPDU Tunnel

1.2.1 配置准备

在配置BPDU Tunnel之前，需完成以下任务：

l 在配置某个协议的BPDU Tunnel功能前，应在用户网络中启用该协议。

l 在PE设备欲配置BPDU Tunnel功能的端口上和与其相连的CE设备的端口上，应配置相同的VLAN属性。

l 运营商网络中各设备间相连的端口均应配置为Trunk类型，并允许所有VLAN的报文通过。

1.2.2 使能BPDU Tunnel功能

用户可在不同视图下使能不同协议的BPDU Tunnel功能。

l 二层以太网端口视图下的配置只对当前端口有效；端口组视图下的配置对当前端口组中的所有端口有效；二层聚合接口视图下的配置只对当前接口有效。

l 在端口上使能DLDP、EOAM、GVRP、HGMP、LLDP或STP协议的BPDU Tunnel功能之前，必须在该端口上关闭相应的协议。由于PVST协议是一种特殊的STP协议，因此在端口上使能PVST协议的BPDU Tunnel功能之前，也必须在该端口上关闭STP协议并使能STP协议的BPDU Tunnel功能。

l 不允许在二层聚合组的成员端口上使能DLDP、EOAM、LACP、LLDP、PAGP或UDLD协议的BPDU Tunnel功能，否则系统将提示出错。

1. 二层以太网端口视图或端口组视图下的配置

表1-1 以太网端口视图或端口组视图下的配置

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
进入相应视图 | 进入二层以太网端口视图 | interface interface-type interface-number | 二者必选其一
 | 进入端口组视图 | port-group manual port-group-name
使能指定协议的BPDU Tunnel功能 |  | bpdu-tunnel dot1q { cdp | dldp | eoam | gvrp | hgmp | lacp | lldp | pagp | pvst | stp | udld | vtp } | 必选 缺省情况下，各协议的BPDU Tunnel功能均处于关闭状态

2. 二层聚合接口视图下的配置

表1-2 二层聚合接口视图下的配置

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入二层聚合接口视图 | interface bridge-aggregation interface-number | -
使能指定协议的BPDU Tunnel功能 | bpdu-tunnel dot1q { cdp | gvrp | hgmp | pvst | stp | vtp } | 必选 缺省情况下，各协议的BPDU Tunnel功能均处于关闭状态

1.2.3 配置BPDU Tunnel报文组播目的MAC

BPDU Tunnel报文缺省采用的组播目的MAC地址为0x010F-E200-0003，用户可以根据需要将其修改为0x0100-0CCD-CDD0、0x0100-0CCD-CDD1或0x0100-0CCD-CDD2。

表1-3 配置BPDU Tunnel报文组播目的MAC

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置BPDU Tunnel报文的组播目的MAC地址 | bpdu-tunnel tunnel-dmac mac-address | 可选 缺省情况下，BPDU Tunnel报文的组播目的MAC地址为0x010F-E200-0003

在运营商网络边缘设备上所配置的BPDU Tunnel报文的组播目的MAC地址必须一致，否则设备将无法正确识别BPDU Tunnel报文。


1.3 BPDU Tunnel典型配置举例

1.3.1 STP协议BPDU Tunnel配置举例

1. 组网需求

l CE 1和CE 2为用户A的处于不同地域网络的边缘设备，PE 1和PE 2为运营商网络的边缘设备。

l PE与CE间相连的端口均为属于VLAN 2的Access端口；而运营商网络中各设备间相连的端口均为Trunk类型，并允许所有VLAN的报文通过。

l 用户A的网络中已启用MSTP功能，要求通过配置使CE 1和 CE 2可以跨越运营商网络进行统一的生成树计算，其中BPDU Tunnel报文的组播目的MAC地址为0x0100-0CCD-CDD0。

2. 组网图

图1-3 STP协议BPDU Tunnel配置组网图

3. 配置步骤

(1) 配置PE 1

# 配置BPDU Tunnel报文的组播目的MAC地址为0x0100-0CCD-CDD0。

<PE1> system-view

[PE1] bpdu-tunnel tunnel-dmac 0100-0ccd-cdd0

# 配置Ethernet1/0/1端口使用VLAN 2对用户报文进行传输。

[PE1] vlan 2

[PE1-vlan2] quit

[PE1] interface ethernet 1/0/1

[PE1-Ethernet1/0/1] port access vlan 2

# 在端口Ethernet1/0/1上关闭STP协议，并使能STP协议的BPDU Tunnel功能。

[PE1-Ethernet1/0/1] undo stp enable

[PE1-Ethernet1/0/1] bpdu-tunnel dot1q stp

(2) 配置PE 2

# 配置BPDU Tunnel报文的组播目的MAC地址为0x0100-0CCD-CDD0。

<PE2> system-view

[PE2] bpdu-tunnel tunnel-dmac 0100-0ccd-cdd0

# 配置Ethernet1/0/2端口使用VLAN 2对用户报文进行传输。

[PE2] vlan 2

[PE2-vlan2] quit

[PE2] interface ethernet 1/0/2

[PE2-Ethernet1/0/2] port access vlan 2

# 在端口Ethernet1/0/2上关闭STP协议，并使能STP协议的BPDU Tunnel功能。

[PE2-Ethernet1/0/2] undo stp enable

[PE2-Ethernet1/0/2] bpdu-tunnel dot1q stp

1.3.2 PVST协议BPDU Tunnel配置举例

1. 组网需求

l CE 1和CE 2为用户A的处于不同地域网络的边缘设备，PE 1和PE 2为运营商网络的边缘设备。

l PE与CE间相连的端口以及运营商网络中各设备间相连的端口均为Trunk类型，并允许所有VLAN的报文通过。

l 用户A网络的VLAN 1～4094内已启用PVST功能，要求通过配置使CE 1和 CE 2可以跨越运营商网络进行统一的PVST计算，其中BPDU Tunnel报文的组播目的MAC地址为0x0100-0CCD-CDD0。

2. 组网图

图1-4 PVST协议BPDU Tunnel配置组网图

3. 配置步骤

(1) 配置PE 1

# 配置BPDU Tunnel报文的组播目的MAC地址为0x0100-0CCD-CDD0。

<PE1> system-view

[PE1] bpdu-tunnel tunnel-dmac 0100-0ccd-cdd0

# 配置Ethernet1/0/1端口为Trunk端口，并允许所有VLAN通过。

[PE1] interface ethernet 1/0/1

[PE1-Ethernet1/0/1] port link-type trunk

[PE1-Ethernet1/0/1] port trunk permit vlan all

# 在端口Ethernet1/0/1上关闭STP协议，并分别使能STP协议和PVST协议的BPDU Tunnel功能。

[PE1-Ethernet1/0/1] undo stp enable

[PE1-Ethernet1/0/1] bpdu-tunnel dot1q stp

[PE1-Ethernet1/0/1] bpdu-tunnel dot1q pvst

(2) 配置PE 2

# 配置BPDU Tunnel报文的组播目的MAC地址为0x0100-0CCD-CDD0。

<PE2> system-view

[PE2] bpdu-tunnel tunnel-dmac 0100-0ccd-cdd0

# 配置Ethernet1/0/2端口为Trunk端口，并允许所有VLAN通过。

[PE2] interface ethernet 1/0/2

[PE2-Ethernet1/0/2] port link-type trunk

[PE2-Ethernet1/0/2] port trunk permit vlan all

# 在端口Ethernet1/0/2上关闭STP协议，并分别使能STP协议和PVST协议的BPDU Tunnel功能。

[PE2-Ethernet1/0/2] undo stp enable

[PE2-Ethernet1/0/2] bpdu-tunnel dot1q stp

[PE2-Ethernet1/0/2] bpdu-tunnel dot1q pvst


1 VLAN配置

相关链接

  • 1.1 VLAN简介
  • 1.2 配置VLAN基本属性
  • 1.3 配置VLAN接口基本属性
  • 1.4 配置基于端口的VLAN
  • 1.5 配置基于MAC的VLAN
  • 1.6 配置基于协议的VLAN
  • 1.7 配置基于IP子网的VLAN
  • 1.8 VLAN显示和维护
父主题： 08-VLAN配置


1.1 VLAN简介

1.1.1 VLAN概述

以太网是一种基于CSMA/CD（Carrier Sense Multiple Access/Collision Detect，载波侦听多路访问/冲突检测）的共享通讯介质的数据网络通讯技术，当主机数目较多时会导致冲突严重、广播泛滥、性能显著下降甚至使网络不可用等问题。通过交换机实现LAN互联虽然可以解决冲突（Collision）严重的问题，但仍然不能隔离广播报文。在这种情况下出现了VLAN（Virtual Local Area Network，虚拟局域网）技术，这种技术可以把一个LAN划分成多个虚拟的LAN——VLAN，每个VLAN是一个广播域，VLAN内的主机间通信就和在一个LAN内一样，而VLAN间则不能直接互通，这样，广播报文被限制在一个VLAN内，如图1-1 所示。

图1-1 VLAN示意图

VLAN的划分不受物理位置的限制：不在同一物理位置范围的主机可以属于同一个VLAN；一个VLAN包含的用户可以连接在同一个交换机上，也可以跨越交换机，甚至可以跨越路由器。

VLAN的优点如下：

l 限制广播域。广播域被限制在一个VLAN内，节省了带宽，提高了网络处理能力。

l 增强局域网的安全性。VLAN间的二层报文是相互隔离的，即一个VLAN内的用户不能和其它VLAN内的用户直接通信，如果不同VLAN要进行通信，则需通过路由器或三层交换机等三层设备。

l 灵活构建虚拟工作组。用VLAN可以划分不同的用户到不同的工作组，同一工作组的用户也不必局限于某一固定的物理范围，网络构建和维护更方便灵活。

1.1.2 VLAN原理

要使网络设备能够分辨不同VLAN的报文，需要在报文中添加标识VLAN的字段。由于普通交换机工作在OSI模型的数据链路层，只能对报文的数据链路层封装进行识别。因此，如果添加识别字段，也需要添加到数据链路层封装中。

IEEE（Institute of Electrical and Electronics Engineers，电气和电子工程师学会）于1999年颁布了用以标准化VLAN实现方案的IEEE 802.1Q协议标准草案，对带有VLAN标识的报文结构进行了统一规定。

传统的以太网数据帧在目的MAC地址和源MAC地址之后封装的是上层协议的类型字段，如图1-2 所示。

图1-2 传统以太网帧封装格式

其中DA表示目的MAC地址，SA表示源MAC地址，Type表示报文所属协议类型。

IEEE 802.1Q协议规定在目的MAC地址和源MAC地址之后封装4个字节的VLAN Tag，用以标识VLAN的相关信息。

图1-3 VLAN Tag的组成字段

如图1-3 所示，VLAN Tag包含四个字段，分别是TPID（Tag Protocol Identifier，标签协议标识符）、Priority、CFI（Canonical Format Indicator，标准格式指示位）和VLAN ID。

l TPID用来判断本数据帧是否带有VLAN Tag，长度为16bit，缺省取值为0x8100。

l Priority表示报文的802.1P优先级，长度为3bit。

l CFI字段标识MAC地址在不同的传输介质中是否以标准格式进行封装，长度为1bit，取值为0表示MAC地址以标准格式进行封装，为1表示以非标准格式封装，缺省取值为0。

l VLAN ID标识该报文所属VLAN的编号，长度为12bit，取值范围为0～4095。由于0和4095为协议保留取值，所以VLAN ID的取值范围为1～4094。

网络设备利用VLAN ID来识别报文所属的VLAN，根据报文是否携带VLAN Tag以及携带的VLAN Tag值，来对报文进行处理。详细的处理方式请参见“1.4.1 基于端口的VLAN简介”。

l 这里的帧格式以Ethernet II型封装为例，以太网还支持802.2 LLC、802.2 SNAP和802.3 raw封装格式。对于这些封装格式的报文，也会添加VLAN Tag字段，用来区分不同VLAN的报文。

l 对于多VLAN Tag报文，设备会根据其最外层VLAN Tag进行处理，而内层VLAN Tag会被视为报文的普通数据部分。

1.1.3 VLAN划分

VLAN根据划分方式不同可以分为不同类型，下面列出了几种最常见的VLAN类型：

l 基于端口的VLAN

l 基于MAC地址的VLAN

l 基于协议的VLAN

l 基于IP子网的VLAN

l 基于策略的VLAN

l 其它VLAN

本系列交换机支持基于端口的VLAN、基于MAC地址的VLAN、基于协议的VLAN和基于IP子网的VLAN。如果某个接口下同时使能以上四种VLAN，则缺省情况下VLAN的匹配将按照MAC VLAN、IP子网VLAN、协议VLAN、端口VLAN的先后顺序进行。

1.1.4 协议规范

与VLAN相关的协议规范有：

l IEEE 802.1Q：IEEE Standards for Local and Metropolitan Area Networks: Virtual Bridged Local Area Networks


1.2 配置VLAN基本属性

表1-1 配置VLAN基本属性

配置 | 命令 | 说明
进入系统视图 | system-view | -
创建VLAN | vlan { vlan-id1 [ to vlan-id2 ] | all } | 可选 该命令主要用于批量创建VLAN
进入VLAN视图 | vlan vlan-id | 必选 如果指定的VLAN不存在，则该命令先完成VLAN的创建，然后再进入该VLAN的视图 缺省情况下，系统只有一个缺省VLAN（VLAN 1）
指定当前VLAN的名称 | name text | 可选 缺省情况下，VLAN的名称为该VLAN的VLAN ID，如“VLAN 0001”
为VLAN指定一个描述字符串 | description text | 可选 缺省情况下，VLAN的描述字符串为该VLAN的VLAN ID，如“VLAN 0001”

l VLAN 1为系统缺省VLAN，用户不能手工创建和删除。

l 保留VLAN是系统为实现特定功能预留的VLAN，用户也不能手工创建和删除。

l 对于协议保留的VLAN、Voice VLAN、管理VLAN、动态学习到的VLAN、配置有QoS策略的VLAN、Smart Link的控制VLAN、RRPP的控制VLAN、远程镜像VLAN等，都不能使用 undo vlan 命令直接删除。只有将相关配置删除之后，才能删除相应的VLAN。


1.3 配置VLAN接口基本属性

1.3.1 VLAN接口简介

不同VLAN间的主机不能直接通信，需要通过路由器或三层交换机等网络层设备进行转发，设备提供VLAN接口实现对报文进行三层转发的功能。

VLAN接口是一种三层模式下的虚拟接口，主要用于实现VLAN间的三层互通，它不作为物理实体存在于设备上。每个VLAN对应一个VLAN接口，在为VLAN接口配置了IP地址后，该接口即可作为本VLAN内网络设备的网关，对需要跨网段的报文进行基于IP地址的三层转发。

1.3.2 配置VLAN接口基本属性

表1-2 配置VLAN接口基本属性

配置 | 命令 | 说明
进入系统视图 | system-view | -
创建VLAN接口并进入VLAN接口视图 | interface vlan-interface vlan-interface-id | 必选 如果该VLAN接口已经存在，则直接进入该VLAN接口视图
配置VLAN接口的IP地址 | ip address ip-address { mask | mask-length } [ sub ] | 可选 缺省情况下，没有配置VLAN接口的IP地址
为VLAN接口指定一个描述字符串 | description text | 可选 缺省情况下，VLAN接口的描述字符串为该VLAN接口的接口名，如“Vlan-interface1 Interface”
配置VLAN接口的MTU值 | mtu size | 可选 缺省情况下，VLAN接口的MTU值为1500字节
恢复VLAN接口的缺省配置 | default | 可选
关闭VLAN接口 | shutdown | 可选 缺省情况下，VLAN接口的状态为打开，此时VLAN接口状态受VLAN中端口状态的影响，即：当VLAN中所有以太网端口状态为down时，VLAN接口为down状态，即关闭状态；当VLAN中有一个或一个以上的以太网端口处于up状态时，则VLAN接口处于up状态。如果将VLAN接口的状态通过 shutdown 命令设置为DOWN(Administratively)，则VLAN接口的状态始终为DOWN(Administratively)，不受VLAN中端口状态的影响

在创建VLAN接口之前，对应的VLAN必须已经存在，否则将不能创建指定的VLAN接口。

1.3.3 VLAN接口配置举例

1. 组网需求

如图1-4 所示，PC A、PC B与Switch A组网。其中PC A、PC B分别属于VLAN 5、VLAN 10，且处于不同网段，不能直接通信。通过在Switch A上创建并配置VLAN接口，实现不同网段的PC A与PC B跨VLAN三层互通。

2. 组网图

图1-4 通过VLAN接口实现VLAN间互通

3. 配置步骤

(1) 配置Switch A

# 创建VLAN 5，并向VLAN 5中添加端口Ethernet1/0/1。

<SwitchA> system-view

[SwitchA] vlan 5

[SwitchA-vlan5] port Ethernet 1/0/1

# 创建VLAN 10，并向VLAN 10中添加端口Ethernet1/0/2。

[SwitchA-vlan5] vlan 10

[SwitchA-vlan10] port Ethernet 1/0/2

[SwitchA-vlan10] quit

# 创建Vlan-interface5，并配置其IP地址为192.168.0.10/24。

[SwitchA] interface vlan-interface 5

[SwitchA-Vlan-interface5] ip address 192.168.0.10 24

[SwitchA-Vlan-interface5] quit

# 创建Vlan-interface10，并配置其IP地址为192.168.1.20/24。

[SwitchA] interface vlan-interface 10

[SwitchA-Vlan-interface10] ip address 192.168.1.20 24

[SwitchA-Vlan-interface10] return

(2) 配置PC A

# 将其默认网关配为192.168.0.10。

(3) 配置PC B

# 将其默认网关配为192.168.1.20。

4. 显示与验证

(1) PC A与PC B可以相互ping通。

(2) 通过查看显示信息验证配置是否成功。

# 查看Switch A上三层接口的IP基本配置信息，验证以上配置是否生效。

<SwitchA> display ip interface brief

*down: administratively down

(s): spoofing

Interface Physical Protocol IP Address Description

Vlan-interface5 up up 192.168.0.10 Vlan-inte...

Vlan-interface10 up up 192.168.1.20 Vlan-inte...


1.4 配置基于端口的VLAN

1.4.1 基于端口的VLAN简介

基于端口划分VLAN是VLAN最简单、最有效的划分方法。它按照设备端口来定义VLAN成员，将指定端口加入到指定VLAN中之后，端口就可以转发指定VLAN的报文。

1. 端口的链路类型

根据端口在转发报文时对Tag标签的不同处理方式，可将端口的链路类型分为三种：

l Access连接：端口发出去的报文不带Tag标签。一般用于和不能识别VLAN Tag的终端设备相连，或者不需要区分不同VLAN成员时使用。

l Trunk连接：端口发出去的报文，端口缺省VLAN内的报文不带Tag，其它VLAN内的报文都必须带Tag。通常用于网络传输设备之间的互连。

l Hybrid连接：端口发出去的报文可根据需要设置某些VLAN内的报文带Tag，某些VLAN内的报文不带Tag。Hybrid类型端口既可以用于网络传输设备之间的互连，又可以直接连接终端设备。

2. 缺省VLAN

除了可以设置端口允许通过的VLAN，还可以设置端口的缺省VLAN。在缺省情况下，所有端口的缺省VLAN均为VLAN 1，但用户可以根据需要进行配置。

l Access端口的缺省VLAN就是它所在的VLAN，修改端口所在的VLAN即可更改端口的缺省VLAN。

l Trunk端口和Hybrid端口可以允许多个VLAN通过，能够配置缺省VLAN。

l 当执行 undo vlan 命令删除的VLAN是某个端口的缺省VLAN时，对Access端口，端口的缺省VLAN会恢复到VLAN 1；对Trunk或Hybrid端口，端口的缺省VLAN配置不会改变，即它们可以使用已经不存在的VLAN作为缺省VLAN。

l 当Voice VLAN工作模式为自动模式时，不能将缺省VLAN设置为Voice VLAN。有关Voice VLAN的相关内容，请参见“4 Voice VLAN配置”。

l 建议本端设备端口的缺省VLAN ID和相连的对端设备端口的缺省VLAN ID保持一致。

l 建议保证端口的PVID属于端口所在的VLAN。如果端口不在某VLAN内，但是端口的PVID仍然为该VLAN，当端口收到该VLAN的报文或者不带VLAN Tag的报文（包括MSTP等协议报文）都会被过滤。

在配置了端口链路类型和缺省VLAN后，端口对报文的接收和发送的处理有几种不同情况，具体情况请参看表1-3。

表1-3 不同链路类型端口收发报文的差异

端口类型 | 对接收报文的处理 |  | 对发送报文的处理
 | 当接收到的报文不带Tag时 | 当接收到的报文带有Tag时
Access端口 | 为报文添加缺省VLAN的Tag | l 当VLAN ID与缺省VLAN ID相同时，接收该报文 l 当VLAN ID与缺省VLAN ID不同时，丢弃该报文 | 去掉Tag，发送该报文
Trunk端口 | l 当缺省VLAN ID在端口允许通过的VLAN ID列表里时，接收该报文，给报文添加缺省VLAN的Tag l 当缺省VLAN ID不在端口允许通过的VLAN ID列表里时，丢弃该报文 | l 当VLAN ID在端口允许通过的VLAN ID列表里时，接收该报文 l 当VLAN ID不在端口允许通过的VLAN ID列表里时，丢弃该报文 | l 当VLAN ID与缺省VLAN ID相同，且是该端口允许通过的VLAN ID时：去掉Tag，发送该报文 l 当VLAN ID与缺省VLAN ID不同，且是该端口允许通过的VLAN ID时：保持原有Tag，发送该报文
Hybrid端口 |  |  | 当报文中携带的VLAN ID是该端口允许通过的VLAN ID时，发送该报文，并可以通过 port hybrid vlan 命令配置端口在发送该VLAN（包括缺省VLAN）的报文时是否携带Tag

1.4.2 配置基于Access端口的VLAN

配置基于Access端口的VLAN有两种方法：一种是在VLAN视图下进行配置，另一种是在二层以太网端口视图/端口组视图/二层聚合接口视图下进行配置。

表1-4 配置基于Access端口的VLAN（在VLAN视图下）

配置 | 命令 | 说明
进入系统视图 | system-view | -
进入VLAN视图 | vlan vlan-id | 必选 如果指定的VLAN不存在，则该命令先完成VLAN的创建，然后再进入该VLAN的视图
向当前VLAN中添加一个或一组Access端口 | port interface-list | 必选 缺省情况下，系统将所有端口都加入到VLAN 1

表1-5 配置基于Access端口的VLAN（在二层以太网端口视图/端口组视图/二层聚合接口视图）

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
进入相应视图 | 进入二层以太网端口视图 | interface interface-type interface-number | 四者必选其一 l 二层以太网端口视图下的配置只对当前端口生效 l 端口组视图下的配置对当前端口组中的所有端口生效 l 二层聚合接口视图下的配置对当前二层聚合接口及其所有成员端口都生效，若配置二层聚合接口时失败，则不再配置其成员端口，若配置某成员端口时失败，系统会自动跳过该成员端口继续配置其它成员端口
 | 进入端口组视图 | port-group manual port-group-name
 | 进入二层聚合接口视图 | interface bridge-aggregation interface-number
配置端口的链路类型为Access类型 |  | port link-type access | 可选 缺省情况下，端口的链路类型为Access类型
将当前Access端口加入到指定VLAN |  | port access vlan vlan-id | 可选 缺省情况下，所有Access端口均属于且只属于VLAN 1

l 在将Access端口加入到指定VLAN之前，要加入的VLAN必须已经存在。

l 在VLAN视图下向VLAN中添加端口时，只能添加二层以太网端口。

1.4.3 配置基于Trunk端口的VLAN

Trunk端口可以允许多个VLAN通过，只能在二层以太网端口视图/端口组视图/二层聚合接口视图下进行配置。

表1-6 配置基于Trunk端口的VLAN

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
进入相应视图 | 进入二层以太网端口视图 | interface interface-type interface-number | 四者必选其一 l 二层以太网端口视图下的配置只对当前端口生效 l 端口组视图下的配置对当前端口组中的所有端口生效 l 二层聚合接口视图下的配置对当前二层聚合接口及其所有成员端口都生效，若配置二层聚合接口时失败，则不再配置其成员端口，若配置某成员端口时失败，系统会自动跳过该成员端口继续配置其它成员端口
 | 进入端口组视图 | port-group manual port-group-name
 | 进入二层聚合接口视图 | interface bridge-aggregation interface-number
配置端口的链路类型为Trunk类型 |  | port link-type trunk | 必选 缺省情况下，所有端口的链路类型均为Access类型
允许指定的VLAN通过当前Trunk端口 |  | port trunk permit vlan { vlan-id-list | all } | 必选 缺省情况下，Trunk端口只允许VLAN 1的报文通过
设置Trunk端口的缺省VLAN |  | port trunk pvid vlan vlan-id | 可选 缺省情况下，Trunk端口的缺省VLAN为VLAN 1

l Trunk端口和Hybrid端口之间不能直接切换，只能先设为Access端口，再设置为其它类型端口。例如：Trunk端口不能直接被设置为Hybrid端口，只能先设为Access端口，再设置为Hybrid端口。

l 配置缺省VLAN后，必须使用 port trunk permit vlan 命令配置允许缺省VLAN的报文通过，出接口才能转发缺省VLAN的报文。

1.4.4 配置基于Hybrid端口的VLAN

Hybrid端口可以允许多个VLAN通过，只能在二层以太网端口视图/端口组视图/二层聚合接口视图下进行配置。

表1-7 配置基于Hybrid端口的VLAN

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
进入相应视图 | 进入二层以太网端口视图 | interface interface-type interface-number | 四者必选其一 l 二层以太网端口视图下的配置只对当前端口生效 l 端口组视图下的配置对当前端口组中的所有端口生效 l 二层聚合接口视图下的配置对当前二层聚合接口及其所有成员端口都生效，若配置二层聚合接口时失败，则不再配置其成员端口，若配置某成员端口时失败，系统会自动跳过该成员端口继续配置其它成员端口
 | 进入端口组视图 | port-group manual port-group-name
 | 进入二层聚合接口视图 | interface bridge-aggregation interface-number
配置端口的链路类型为Hybrid类型 |  | port link-type hybrid | 必选 缺省情况下，所有端口的链路类型均为Access类型
允许指定的VLAN通过当前Hybrid端口 |  | port hybrid vlan vlan-id-list { tagged | untagged } | 必选 缺省情况下，Hybrid端口只允许VLAN 1的报文以Untagged方式通过（即VLAN 1的报文从该端口发送出去后不携带VLAN Tag）
设置Hybrid端口的缺省VLAN |  | port hybrid pvid vlan vlan-id | 可选 缺省情况下，Hybrid端口的缺省VLAN为VLAN 1

l Trunk端口和Hybrid端口之间不能直接切换，只能先设为Access端口，再设置为其它类型端口。例如：Trunk端口不能直接被设置为Hybrid端口，只能先设为Access端口，再设置为Hybrid端口。

l 在设置允许指定的VLAN通过Hybrid端口之前，允许通过的VLAN必须已经存在。

l 配置缺省VLAN后，必须使用 port hybrid vlan命令配置允许缺省VLAN的报文通过，出接口才能转发缺省VLAN的报文。

1.4.5 基于端口的VLAN典型配置举例

1. 组网需求

l Host A和Host C属于部门A，但是通过不同的设备接入公司网络；Host B和Host D属于部门B，也通过不同的设备接入公司网络。

l 为了通信的安全性，也为了避免广播报文泛滥，公司网络中使用VLAN技术来隔离部门间的二层流量。其中部门A使用VLAN 100，部门B使用VLAN 200。

l 现要求不管是否使用相同的设备接入公司网络，同一VLAN内的主机能够互通。即Host A和Host C能够互通，Host B和Host D能够互通。

2. 组网图

图1-5 基于端口的VLAN组网图

3. 配置步骤

(1) 配置Device A

# 创建VLAN 100，并将Ethernet1/0/1加入VLAN 100。

<DeviceA> system-view

[DeviceA] vlan 100

[DeviceA-vlan100] port ethernet 1/0/1

[DeviceA-vlan100] quit

# 创建VLAN 200，并将Ethernet1/0/2加入VLAN 200。

[DeviceA] vlan 200

[DeviceA-vlan200] port ethernet 1/0/2

[DeviceA-vlan200] quit

# 为了使Device A上VLAN 100和VLAN 200的报文能发送给Device B，将Ethernet1/0/3的链路类型配置为Trunk，并允许VLAN 100和VLAN 200的报文通过。

[DeviceA] interface ethernet 1/0/3

[DeviceA-Ethernet1/0/3] port link-type trunk

[DeviceA-Ethernet1/0/3] port trunk permit vlan 100 200

Please wait... Done.

(2) Device B上的配置与Device A上的配置完全一样，不再赘述。

(3) 将Host A和Host C配置在一个网段，比如192.168.100.0/24；将Host B和Host D配置在一个网段，比如192.168.200.0/24。

4. 显示与验证

(1) Host A和Host C能够互相ping通，但是均不能ping通Host B。Host B和Host D能够互相ping通，但是均不能ping通Host A。

(2) 通过查看显示信息验证配置是否成功。

# 查看Device A上VLAN 100和VLAN 200的配置信息，验证以上配置是否生效。

[DeviceA-Ethernet1/0/3] display vlan 100

VLAN ID: 100

VLAN Type: static

Route Interface: not configured

Description: VLAN 0100

Name: VLAN 0100

Tagged Ports:

Ethernet1/0/3

Untagged Ports:

Ethernet1/0/1

[DeviceA-Ethernet1/0/3] display vlan 200

VLAN ID: 200

VLAN Type: static

Route Interface: not configured

Description: VLAN 0200

Name: VLAN 0200

Tagged Ports:

Ethernet1/0/3

Untagged Ports:

Ethernet1/0/2


1.5 配置基于MAC的VLAN

1.5.1 基于MAC的VLAN简介

基于MAC划分VLAN是VLAN的另一种划分方法。它按照报文的源MAC地址来定义VLAN成员，将指定报文加入该VLAN的Tag后发送。该功能通常会和安全（比如802.1X）技术联合使用，以实现终端的安全、灵活接入。

1. 手动配置静态MAC VLAN

手动配置静态MAC VLAN常用于VLAN中用户相对较少的网络环境。在该方式下，用户需要手动配置MAC VLAN表项，使能基于MAC地址的VLAN功能，并将端口加入MAC VLAN。其原理为：

l 当端口收到的报文为Untagged报文时，根据报文的源MAC匹配MAC VLAN表项。首先进行模糊匹配，即查询表中MASK不是全F的表项，将源MAC和MASK相与后与MAC VLAN表项中的MAC地址匹配，如果完全相同，则模糊匹配成功，给报文添加表项中指定的VLAN ID并转发该报文；如果模糊匹配失败，则进行精确匹配，即查询表中MASK为全F的表项，如果报文中的源MAC与MAC VLAN表项中的MAC地址完全相同，则精确匹配成功，给报文添加表项中指定的VLAN ID并转发该报文；如果没有找到匹配MAC VLAN表项，则继续按照其它原则（如IP子网、协议等）进行匹配，如果匹配成功，则转发报文，如果匹配均失败，则给报文添加端口的缺省VLAN ID并转发该报文。

l 当端口收到的报文为Tagged报文时，如果报文的VLAN ID在该端口允许通过的VLAN ID列表里，则转发该报文；如果报文的VLAN ID不在端口允许通过的VLAN ID列表里，则丢弃该报文。

2. 动态触发端口加入静态MAC VLAN

手动配置静态MAC VLAN时，用户需要把端口分别加入相应的MAC VLAN，当用户不能确定从哪些端口收到指定VLAN的报文时，就不能把相应端口加入到MAC VLAN，在这种情况下，手动配置静态MAC VLAN无法满足用户的需求。此时可以动态触发端口加入静态MAC VLAN。在该方式下，用户在配置MAC VLAN表项后，需要在端口上使能基于MAC的VLAN功能和MAC VLAN动态触发功能。其原理为：

端口在收到报文时，首先判断报文是否携带VLAN Tag，若带Tag，则直接上送报文源MAC地址；若不带Tag，则先进行报文VLAN选择（即为Untagged报文添加值为PVID的Tag，并获取该Tag），再上送报文的源MAC地址。然后根据报文的源MAC查询MAC VLAN表项：

l 如果报文源MAC地址与MAC VLAN表项中的MAC地址匹配，检查报文的VLAN ID是否与对应表项中的VLAN ID一致，若一致，通过此报文动态触发端口加入相应VLAN，同时转发报文，否则丢弃该报文。

l 如果报文源MAC地址与MAC VLAN表项的MAC地址不匹配，当报文VLAN ID为端口PVID，判断端口是否允许报文在PVID内转发，若允许，则给报文添加PVID并转发该报文，否则丢弃该报文。当报文VLAN ID不为端口PVID，报文继续按照其它原则（如IP子网、协议等）进行匹配，若匹配成功，则转发该报文；若匹配均失败，则丢弃该报文。处理流程如 图1-6 所示：

图1-6 动态触发端口加入静态MAC VLAN时端口收到报文的处理

l 在端口加入MAC VLAN表项中相应的VLAN时，若端口未配置允许该VLAN通过，则端口自动以Untagged方式加入该VLAN。

l 如果用户在同一端口上同时使能了手动配置MAC VLAN和动态触发端口加入MAC VLAN，此时该端口选择使用后者的功能。

3. 动态MAC VLAN

动态MAC VLAN需要和接入认证（比如基于MAC地址的802.1X认证）配合使用，以实现终端的安全、灵活接入。用户在设备上配置动态MAC VLAN功能以后，还需要在接入认证服务器上配置用户名和VLAN的绑定关系。

如果用户发起认证请求，接入认证服务器先对用户名和密码进行验证，如果验证通过，服务器下发VLAN信息。此时设备根据请求报文的源MAC地址和下发的VLAN信息生成MAC VLAN表项，并将MAC VLAN添加到端口允许通过的VLAN列表中。用户下线后，设备自动删除MAC VLAN表项，并将MAC VLAN从端口允许通过的VLAN列表中删除。

接入认证的相关内容请参见“安全配置指导”中的“802.1X”、“MAC地址认证”和“Portal”。

1.5.2 配置基于MAC的VLAN

l 基于MAC的VLAN功能只能在Hybrid端口配置。

l Super VLAN不能作为MAC VLAN表项中的VLAN。

l 基于MAC的VLAN动态触发使能后，报文会上送CPU处理。由于该处理的优先级最高，会导致MAC地址最大学习数和MAC地址禁止学习功能不生效，因此不建议MAC VLAN动态触发功能和上述两个功能同时使用。

l 基于MAC的VLAN动态触发功能不和802.1X和MAC认证功能同时使用。

l 基于MAC的VLAN动态触发功能要求源MAC所匹配的VLAN必须是静态VLAN才能完成触发功能。

l 基于MAC的VLAN功能主要用于在用户的接入设备的下行端口上进行配置，因此不和聚合功能同时使用。

l 配置MSTP多实例情况下，如果端口在要加入的VLAN对应的MSTP实例中是阻塞状态，则端口会丢弃收到的报文，造成MAC地址不能上送，不能完成动态触发功能。基于MAC的动态VLAN的使用场景为接入侧，不建议和多实例MSTP同时使用。

l 配置MAC-VLAN表项时，如果指定了MAC地址对应VLAN的802.1p优先级，则用户还需要在相应端口视图下执行 qos trust dot1p 命令，使该端口信任报文的802.1p优先级，该配置才能生效。关于 qos trust dot1p 命令的详细介绍请参见“ACL和QoS命令参考”中的“优先级映射配置命令”。

表1-8 手工配置静态MAC VLAN

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
配置MAC地址与VLAN关联 |  | mac-vlan mac-address mac-address [ mask mac-mask ] vlan vlan-id [ priority priority ] | 必选
进入相应视图 | 进入二层以太网端口视图 | interface interface-type interface-number | 二者必选其一 l 二层以太网端口视图下的配置只对当前端口生效 l 端口组视图下的配置对当前端口组中的所有端口生效
 | 进入端口组视图 | port-group manual port-group-name
配置端口的链路类型为Hybrid类型 |  | port link-type hybrid | 必选 缺省情况下，所有端口的链路类型均为Access类型
允许基于MAC的VLAN通过当前Hybrid端口 |  | port hybrid vlan vlan-id-list { tagged | untagged } | 必选 缺省情况下，所有Hybrid端口只允许VLAN 1通过
使能基于MAC地址划分VLAN的功能 |  | mac-vlan enable | 必选 缺省情况下，未使能基于MAC地址划分VLAN的功能
配置VLAN匹配优先级 |  | vlan precedence { mac-vlan | ip-subnet-vlan } | 可选 缺省情况下，优先根据单个MAC地址来匹配VLAN

表1-9 动态触发端口加入静态MAC VLAN

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置MAC地址与VLAN关联 | mac-vlan mac-address mac-address [ mask mac-mask ] vlan vlan-id [ priority priority ] | 必选
进入二层以太网端口视图 | interface interface-type interface-number | -
配置端口的链路类型为Hybrid类型 | port link-type hybrid | 必选 缺省情况下，所有端口的链路类型均为Access类型
使能基于MAC地址划分VLAN的功能 | mac-vlan enable | 必选 缺省情况下，未使能基于MAC地址划分VLAN的功能
使能MAC VLAN的动态触发功能 | mac-vlan trigger enable | 必选 缺省情况下，未使能MAC VLAN的动态触发功能。
配置VLAN匹配优先级 | vlan precedence { mac-vlan | ip-subnet-vlan } | 可选 缺省情况下，优先根据单个MAC地址来匹配VLAN
配置PVID禁止功能 | port pvid disable | 可选 缺省情况下，对于没有匹配到MAC VLAN表项的未知源MAC会在PVID内进行转发通过

表1-10 配置动态MAC VLAN

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
进入相应视图 | 进入二层以太网端口视图 | interface interface-type interface-number | 二者必选其一 l 二层以太网端口视图下的配置只对当前端口生效 l 端口组视图下的配置对当前端口组中的所有端口生效
 | 进入端口组视图 | port-group manual port-group-name
配置端口的链路类型为Hybrid类型 |  | port link-type hybrid | 必选 缺省情况下，所有端口的链路类型均为Access类型
允许基于MAC的VLAN通过当前Hybrid端口 |  | port hybrid vlan vlan-id-list { tagged | untagged } | 必选 缺省情况下，所有Hybrid端口只允许VLAN 1通过
使能基于MAC地址划分VLAN的功能 |  | mac-vlan enable | 必选 缺省情况下，未使能基于MAC地址划分VLAN的功能
配置认证功能 | 配置802.1X | 请参见“安全命令参考”中的“802.1X” | 三者至少选其一
 | 配置MAC地址认证 | 请参见“安全命令参考”中的“MAC地址认证”
 | 配置Portal | 请参见“安全命令参考”中的“Portal”

1.5.3 基于MAC的VLAN典型配置举例

1. 组网需求

l 如 图1-7 所示，Device A和Device C的Ethernet1/0/1端口分别连接到两个会议室，Laptop1和Laptop2是会议用笔记本电脑，会在两个会议室间移动使用。

l Laptop1和Laptop2分别属于两个部门，两个部门间使用VLAN 100和VLAN 200进行隔离。现要求这两台笔记本电脑无论在哪个会议室使用，均只能访问自己部门的服务器，即Server1和Server2。

l Laptop1和Laptop2的MAC地址分别为000d-88F8-4E71和0014-222C-AA69。

2. 组网图

图1-7 基于MAC的VLAN组网图

3. 配置思路

l 创建VLAN 100、VLAN 200。

l 配置Device A和Device C的上行端口为Trunk端口，并允许VLAN 100和VLAN 200的报文通过。

l 配置 Device B 的下行端口为Trunk端口，并允许VLAN 100和VLAN 200的报文通过；上行端口分别加入VLAN 100、VLAN 200。

l Laptop1和Laptop2的MAC地址分别与VLAN 100、VLAN 200关联。

4. 配置步骤

(1) Device A的配置

# 创建VLAN 100和VLAN 200。

<DeviceA> system-view

[DeviceA] vlan 100

[DeviceA-vlan100] quit

[DeviceA] vlan 200

[DeviceA-vlan200] quit

# 将Laptop1的MAC地址与VLAN 100关联，Laptop2的MAC地址与VLAN 200关联。

[DeviceA] mac-vlan mac-address 000d-88f8-4e71 vlan 100

[DeviceA] mac-vlan mac-address 0014-222c-aa69 vlan 200

# 配置终端的接入端口：Laptop1和Laptop2均可能从Ethernet1/0/1接入，将Ethernet1/0/1的端口类型配置为Hybrid，并使其在发送VLAN 100和VLAN 200的报文时去掉VLAN Tag；开启Ethernet1/0/1端口的MAC-VLAN功能。

[DeviceA] interface ethernet 1/0/1

[DeviceA-Ethernet1/0/1] port link-type hybrid

[DeviceA-Ethernet1/0/1] port hybrid vlan 100 200 untagged

Please wait... Done.

[DeviceA-Ethernet1/0/1] mac-vlan enable

[DeviceA-Ethernet1/0/1] quit

# 为了终端能够访问Server1和Server2，需要将上行端口Ethernet1/0/2的端口类型配置为Trunk，并允许VLAN 100和VLAN 200的报文通过。

[DeviceA] interface ethernet 1/0/2

[DeviceA-Ethernet1/0/2] port link-type trunk

[DeviceA-Ethernet1/0/2] port trunk permit vlan 100 200

[DeviceA-Ethernet1/0/2] quit

(2) Device B的配置

# 创建VLAN 100和VLAN 200，并将Ethernet1/0/13加入VLAN 100，Ethernet 1/0/14加入VLAN 200。

<DeviceB> system-view

[DeviceB] vlan 100

[DeviceB-vlan100] port ethernet 1/0/13

[DeviceB-vlan100] quit

[DeviceB] vlan 200

[DeviceB-vlan200] port ethernet 1/0/14

[DeviceB-vlan200] quit

# 配置Ethernet1/0/3和Ethernet1/0/4端口为Trunk端口，均允许VLAN 100和VLAN 200的报文通过。

[DeviceB] interface ethernet 1/0/3

[DeviceB-Ethernet1/0/3] port link-type trunk

[DeviceB-Ethernet1/0/3] port trunk permit vlan 100 200

[DeviceB-Ethernet1/0/3] quit

[DeviceB] interface ethernet 1/0/4

[DeviceB-Ethernet1/0/4] port link-type trunk

[DeviceB-Ethernet1/0/4] port trunk permit vlan 100 200

[DeviceB-Ethernet1/0/4] quit

(3) Device C的配置

Device C的配置与Device A完全一致，这里不再赘述。

5. 显示与验证

(1) Laptop1只能访问Server1，不能访问Server2；Laptop2只能访问Server2，不能访问Server1。

(2) 在Device A和Device C上可以查看到Laptop1和VLAN 100、Laptop2和VLAN 200的静态MAC VLAN地址表项已经生成。

[DeviceA] display mac-vlan all

The following MAC VLAN addresses exist:

S:Static D:Dynamic

MAC ADDR MASK VLAN ID PRIO STATE

--------------------------------------------------------

000d-88f8-4e71 ffff-ffff-ffff 100 0 S

0014-222c-aa69 ffff-ffff-ffff 200 0 S

Total MAC VLAN address count:2

6. 配置注意事项

l 基于MAC的VLAN只能在Hybrid端口上配置。

l 基于MAC的VLAN的配置主要用于在用户的接入设备的下行端口上进行配置，因此不能与聚合功能同时使用。


1.6 配置基于协议的VLAN

1.6.1 基于协议的VLAN简介

基于协议的VLAN只对Hybrid端口配置才有效。

基于协议的VLAN是根据端口接收到的报文所属的协议（族）类型以及封装格式来给报文分配不同的VLAN ID。可用来划分VLAN的协议有IP、IPX、AppleTalk（AT），封装格式有Ethernet II、802.3 raw、802.2 LLC、802.2 SNAP等。

“协议类型 + 封装格式”又称为协议模板，一个协议VLAN下可以绑定多个协议模板，不同的协议模板再用协议索引（protocol-index）来区分。因此，一个协议模板可以用“协议 vlan-id + protocol-index”来唯一标识。然后通过命令行将“协议 vlan-id + protocol-index”和端口绑定。这样，对于从端口接收到Untagged报文（没有携带VLAN标记的报文）会做如下处理：

l 如果该报文携带的协议类型和封装格式与“协议 vlan-id + protocol-index”标识的协议模板相匹配，则为其打上协议 vlan-id。

l 如果该报文携带的协议类型和封装格式与“协议 vlan-id + protocol-index”标识的协议模板不匹配，则为其打上端口的缺省VLAN ID。

对于端口接收到的Tagged报文（携带VLAN标记的报文），处理方式和基于端口的VLAN一样：如果端口允许携带该VLAN标记的报文通过，则正常转发；如果不允许，则丢弃该报文。

此特性主要应用于将网络中提供的服务类型与VLAN相绑定，方便管理和维护。

1.6.2 配置基于协议的VLAN

表1-11 配置基于协议的VLAN

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
进入VLAN视图 |  | vlan vlan-id | 必选 如果指定的VLAN不存在，则该命令先完成VLAN的创建，然后再进入该VLAN的视图
配置基于协议的VLAN，并指定协议模板 |  | protocol-vlan [ protocol-index ] { at | ipv4 | ipv6 | ipx { ethernetii | llc | raw | snap } | mode { ethernetii etype etype-id | llc { dsap dsap-id [ ssap ssap-id ] | ssap ssap-id } | snap etype etype-id } } | 必选 缺省情况下，没有配置任何协议模板
退出VLAN视图 |  | quit | 必选
进入相应视图 | 进入二层以太网端口视图 | interface interface-type interface-number | 四者必选其一 l 二层以太网端口视图下的配置只对当前端口生效 l 端口组视图下的配置对当前端口组中的所有端口生效 l 二层聚合接口视图下的配置对当前二层聚合接口及其所有成员端口都生效，若配置二层聚合接口时失败，则不再配置其成员端口，若配置某成员端口时失败，系统会自动跳过该成员端口继续配置其它成员端口
 | 进入端口组视图 | port-group manual port-group-name
 | 进入二层聚合接口视图 | interface bridge-aggregation interface-number
配置端口的链路类型为Hybrid类型 |  | port link-type hybrid | 必选 缺省情况下，所有端口的链路类型均为Access类型
允许基于协议的VLAN通过当前Hybrid端口 |  | port hybrid vlan vlan-id-list { tagged | untagged } | 必选 缺省情况下，所有Hybrid端口只允许VLAN 1通过
配置Hybrid端口与基于协议的VLAN关联 |  | port hybrid protocol-vlan vlan vlan-id { protocol-index [ to protocol-end ] | all } | 必选

协议VLAN特性要求Hybrid入端口的报文格式为Untagged的，而自动模式下的Voice VLAN只支持Hybrid端口对Tagged的语音流进行处理（详情请参见“4 Voice VLAN配置”），因此，不能将某个VLAN同时设置为协议VLAN和Voice VLAN。

1.6.3 基于协议的VLAN典型配置举例

1. 组网需求

实验室网络中大部分主机运行IPv4网络协议，另外为了教学需要还布置了IPv6实验局，因此，同时有些主机运行着IPv6网络协议。为了避免互相干扰，现要求基于网络协议将IPv4流量和IPv6流量二层互相隔离。

2. 组网图

图1-8 基于协议的VLAN组网图

3. 配置思路

创建VLAN 100及VLAN 200。让VLAN 100与IPv4协议绑定，VLAN 200与IPv6协议绑定，通过协议VLAN来实现IPv4流量和IPv6流量二层互相隔离。

4. 配置步骤

(1) 配置Device

# 创建VLAN 100，将端口Ethernet1/0/11加入VLAN 100。

<Device> system-view

[Device] vlan 100

[Device-vlan100] description protocol VLAN for IPv4

[Device-vlan100] port ethernet 1/0/11

[Device-vlan100] quit

# 创建VLAN 200，将端口Ethernet1/0/12加入VLAN 200。

[Device] vlan 200

[Device-vlan200] description protocol VLAN for IPv6

[Device-vlan200] port ethernet 1/0/12

# 在VLAN 200和VLAN 100视图下，分别为IPv4和IPv6协议创建协议模板。

[Device-vlan200] protocol-vlan 1 ipv6

[Device-vlan200] quit

[Device] vlan 100

[Device-vlan100] protocol-vlan 1 ipv4

[Device-vlan100] quit

# 配置端口Ethernet1/0/1为Hybrid端口，并在转发VLAN 100和VLAN 200的报文时去掉VLAN Tag。

[Device] interface ethernet 1/0/1

[Device-Ethernet1/0/1] port link-type hybrid

[Device-Ethernet1/0/1] port hybrid vlan 100 200 untagged

Please wait... Done.

# 配置端口Ethernet1/0/1与VLAN 100的协议模板1（即IPv4协议模板）、VLAN 200的协议模板1（即IPv6协议模板）进行绑定。

[Device-Ethernet1/0/1] port hybrid protocol-vlan vlan 100 1

[Device-Ethernet1/0/1] port hybrid protocol-vlan vlan 200 1

[Device-Ethernet1/0/1] quit

# 配置端口Ethernet1/0/2为Hybrid端口，在转发VLAN 100和VLAN 200的报文时去掉VLAN Tag，与VLAN 100的协议模板1（即IPv4协议模板）、VLAN 200的协议模板1（即IPv6协议模板）进行绑定。

[Device] interface ethernet 1/0/2

[Device-Ethernet1/0/2] port link-type hybrid

[Device-Ethernet1/0/2] port hybrid vlan 100 200 untagged

Please wait... Done.

[Device-Ethernet1/0/2] port hybrid protocol-vlan vlan 100 1

[Device-Ethernet1/0/2] port hybrid protocol-vlan vlan 200 1

(2) L2 Switch A和L2 Switch B采用缺省配置。

(3) 将IPv4 Host A、IPv4 Host B和IPv4 Server配置在一个网段，比如192.168.100.0/24；将IPv6 Host A、IPv6 Host B和IPv6 Server配置在一个网段，比如2001::1/64。

5. 显示与验证

(1) VLAN 100内的主机和服务器能够互相ping通；VLAN 200内的主机和服务器能够互相ping通。但VLAN 100内的主机/服务器和VLAN 200内的主机/服务器会ping失败。

(2) 通过查看Device上的显示信息，验证配置是否生效。

# 查看Device上协议VLAN的配置。

[Device-Ethernet1/0/2] display protocol-vlan vlan all

VLAN ID:100

Protocol Index Protocol Type

======================================================

1 ipv4

VLAN ID:200

Protocol Index Protocol Type

======================================================

1 ipv6

# 查看Device端口上已配置的协议VLAN的相关信息。

[Device-Ethernet1/0/2] display protocol-vlan interface all

Interface: Ethernet 1/0/1

VLAN ID Protocol Index Protocol Type

======================================================

100 1 ipv4

200 1 ipv6

Interface: Ethernet 1/0/2

VLAN ID Protocol Index Protocol Type

======================================================

100 1 ipv4

200 1 ipv6

6. 配置注意事项

基于协议的VLAN只对Hybrid端口配置才有效。


1.7 配置基于IP子网的VLAN

1.7.1 基于IP子网的VLAN简介

基于IP子网的VLAN是根据报文源IP地址及子网掩码来进行划分的。设备从端口接收到Untagged报文后，会根据报文的源地址来确定报文所属的VLAN，然后将报文自动划分到指定VLAN中传输。

此特性主要用于将指定网段或IP地址发出的报文在指定的VLAN中传送。

1.7.2 配置基于IP子网的VLAN

基于IP子网的VLAN只对Hybrid端口配置有效。

表1-12 配置基于IP子网的VLAN

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
进入VLAN视图 |  | vlan vlan-id | -
配置IP子网与当前VLAN关联 |  | ip-subnet-vlan [ ip-subnet-index ] ip ip-address [ mask ] | 必选 配置的IP网段或IP地址不能是组播网段或组播地址
退回系统视图 |  | quit | -
进入相应视图 | 进入二层以太网端口视图 | interface interface-type interface-number | 四者必选其一 l 二层以太网端口视图下的配置只对当前端口生效 l 端口组视图下的配置对当前端口组中的所有端口生效 l 二层聚合接口视图下的配置对当前二层聚合接口及其所有成员端口都生效，若配置二层聚合接口时失败，则不再配置其成员端口，若配置某成员端口时失败，系统会自动跳过该成员端口继续配置其它成员端口
 | 进入端口组视图 | port-group manual port-group-name
 | 进入二层聚合接口视图 | interface bridge-aggregation interface-number
配置端口的链路类型为Hybrid类型 |  | port link-type hybrid | 必选 缺省情况下，所有端口的链路类型均为Access类型
允许基于IP子网的VLAN通过当前Hybrid端口 |  | port hybrid vlan vlan-id-list { tagged | untagged } | 必选 缺省情况下，Hybrid端口只允许VLAN 1的报文以Untagged方式通过，即VLAN 1的报文从该端口发送出去后不携带VLAN Tag
配置Hybrid端口和基于IP子网的VLAN关联 |  | port hybrid ip-subnet-vlan vlan vlan-id | 必选 缺省情况下，Hybird端口和基于IP子网的VLAN没有任何关联关系

1.7.3 基于IP子网的VLAN典型配置举例

1. 组网需求

如 图1-9 所示，办公区的主机属于不同的网段192.168.5.0/24和192.168.50.0/24，Device C在收到来自办公区主机的报文时，根据报文的源IP地址，使来自不同网段主机的报文分别在指定的VLAN中传输。

2. 组网图

图1-9 基于IP子网的VLAN组网图

3. 配置思路

创建VLAN100、VLAN200，配置子网与VLAN的关联关系，并配置端口与VLAN的关联关系。

4. 配置步骤

<DeviceC> system-view

# 配置子网192.168.5.0/24与VLAN 100关联。

[DeviceC] vlan 100

[DeviceC-vlan100] ip-subnet-vlan ip 192.168.5.0 255.255.255.0

[DeviceC-vlan100] quit

# 配置子网192.168.50.0/24与VLAN 200关联。

[DeviceC] vlan 200

[DeviceC-vlan200] ip-subnet-vlan ip 192.168.50.0 255.255.255.0

[DeviceC-vlan200] quit

# 配置端口Ethernet 1/0/11，使其允许通过VLAN 100的报文。

[DeviceC] interface Ethernet 1/0/11

[DeviceC-Ethernet1/0/11] port link-type hybrid

[DeviceC-Ethernet1/0/11] port hybrid vlan 100 tagged

Please wait... Done.

[DeviceC-Ethernet1/0/11] quit

# 配置端口Ethernet 1/0/12，使其允许通过VLAN 200的报文。

[DeviceC] interface Ethernet 1/0/12

[DeviceC-Ethernet1/0/12] port link-type hybrid

[DeviceC-Ethernet1/0/12] port hybrid vlan 200 tagged

Please wait... Done.

[DeviceC-Ethernet1/0/12] quit

# 配置端口Ethernet 1/0/1，使其和基于IP子网的VLAN 100、VLAN 200关联。

[DeviceC] interface Ethernet 1/0/1

[DeviceC-Ethernet1/0/1] port link-type hybrid

[DeviceC-Ethernet1/0/1] port hybrid vlan 100 200 untagged

Please wait... Done.

[DeviceC-Ethernet1/0/1] port hybrid ip-subnet-vlan vlan 100

[DeviceC-Ethernet1/0/1] port hybrid ip-subnet-vlan vlan 200

[DeviceC-Ethernet1/0/1] return

5. 显示与验证

# 查看所有VLAN的IP子网信息。

<Device C> display ip-subnet-vlan vlan all

VLAN ID: 100

Subnet Index IP Address Subnet Mask

====================================================

0 192.168.5.0 255.255.255.0

VLAN ID: 200

Subnet Index IP Address Subnet Mask

====================================================

0 192.168.50.0 255.255.255.0

# 查看端口Ethernet 1/0/1上所配置的IP子网VLAN信息。

<DeviceC> display ip-subnet-vlan interface Ethernet 1/0/1

Interface: Ethernet1/0/1

VLAN ID Subnet-Index IP ADDRESS NET MASK

=======================================================

100 0 192.168.5.0 255.255.255.0

200 0 192.168.50.0 255.255.255.0

6. 配置注意事项

基于IP子网的VLAN只对Hybrid端口配置才有效。


1.8 VLAN显示和维护

在完成上述配置后，在任意视图下执行 display 命令可以显示配置后VLAN的运行情况，通过查看显示信息验证配置的效果。

在用户视图下执行 reset 命令可以清除接口统计信息。

表1-13 VLAN显示和维护

操作 | 命令
显示VLAN相关信息 | display vlan [ vlan-id1 [ to vlan-id2 ] | all | dynamic | reserved | static ] [ | { begin | exclude | include } regular-expression ]
显示VLAN接口相关信息 | display interface [ vlan-interface ] [ brief [ down ] ] [ | { begin | exclude | include } regular-expression ] display interface vlan-interface vlan-interface-id [ brief ] [ | { begin | exclude | include } regular-expression ]
显示设备上当前存在的Hybrid或Trunk端口 | display port { hybrid | trunk } [ | { begin | exclude | include } regular-expression ]
显示MAC-VLAN表项 | display mac-vlan { all | dynamic | mac-address mac-address [ mask mac-mask ] | static | vlan vlan-id } [ | { begin | exclude | include } regular-expression ]
显示所有使能了MAC VLAN功能的接口 | display mac-vlan interface [ | { begin | exclude | include } regular-expression ]
显示指定VLAN上配置的协议信息及协议的索引 | display protocol-vlan vlan { vlan-id [ to vlan-id ] | all } [ | { begin | exclude | include } regular-expression ]
显示指定端口上已配置的协议VLAN的相关信息 | display protocol-vlan interface { interface-type interface-number [ to interface-type interface-number ] | all } [ | { begin | exclude | include } regular-expression ]
显示指定VLAN上配置的IP子网VLAN信息及IP子网的索引 | display ip-subnet-vlan vlan { vlan-id [ to vlan-id ] | all } [ | { begin | exclude | include } regular-expression ]
显示指定端口上配置的IP子网VLAN信息及IP子网的索引 | display ip-subnet-vlan interface { interface-list | all } [ | { begin | exclude | include } regular-expression ]
清除接口的统计信息 | reset counters interface vlan-interface [ vlan-interface-id ]


2 Super VLAN配置

相关链接

  • 2.1 Super VLAN简介
  • 2.2 配置Super VLAN功能
  • 2.3 Super VLAN显示和维护
  • 2.4 Super VLAN典型配置举例
父主题： 08-VLAN配置


2.1 Super VLAN简介

随着网络的发展，网络地址资源日趋紧张，为了节省IP地址，Super VLAN的概念被提出来。Super VLAN又称为VLAN聚合（VLAN Aggregation），其原理是一个Super VLAN和多个Sub VLAN关联，Super VLAN内不能加入物理端口，但可以创建对应的VLAN接口，VLAN接口下可以配置IP地址；Sub VLAN可以加入物理端口，但不能创建对应的VLAN接口，所有Sub VLAN内的端口共用Super VLAN的VLAN接口IP地址，不同Sub VLAN之间二层相互隔离。当Sub VLAN内的用户需要进行三层通信时，将使用Super VLAN的IP地址作为网关地址，这样多个Sub VLAN共享一个网关地址，从而节省了IP地址资源。

为了实现Sub VLAN之间的三层互通，在创建好Super VLAN和VLAN接口之后，用户需要开启设备的本地代理功能：

l 对于IPv4网络环境，用户需要在Super VLAN的VLAN接口上开启本地代理ARP功能，Super VLAN利用本地代理ARP可以进行ARP请求和响应报文的转发与处理，从而实现了Sub VLAN之间的三层互通。

l 对于IPv6网络环境，用户需要在Super VLAN的VLAN接口上开启本地代理ND功能，Super VLAN利用本地代理ND可以进行ND请求和响应报文的转发与处理，从而实现了Sub VLAN之间的三层互通。


2.2 配置Super VLAN功能

Super VLAN功能的配置包括三个必选步骤：

(1) 配置Sub VLAN，主要是创建Sub VLAN。

(2) 配置Super VLAN，主要是创建Super VLAN，并将Super VLAN和Sub VLAN关联起来。

(3) 配置Super VLAN对应的VLAN接口，该接口主要用于接入用户和Sub VLAN之间的通信。

1. 配置Sub VLAN

表2-1 配置Sub VLAN

配置 | 命令 | 说明
进入系统视图 | system-view | -
创建VLAN用作Sub VLAN，并进入VLAN视图 | vlan vlan-id | 必选 如果指定的VLAN不存在，则该命令先完成VLAN的创建，然后再进入该VLAN的视图

2. 配置Super VLAN

表2-2 配置Super VLAN

配置 | 命令 | 说明
进入系统视图 | system-view | -
进入VLAN视图 | vlan vlan-id | 必选 如果指定的VLAN不存在，则该命令先完成VLAN的创建，然后再进入该VLAN的视图
设置VLAN类型为Super VLAN | supervlan | 必选 缺省情况下，用户创建的VLAN不是Super VLAN类型的VLAN
配置Super VLAN和Sub VLAN间的映射关系 | subvlan vlan-list | 必选 vlan-list 必须是当前已创建的准备用作Sub VLAN的VLAN

当端口上使能了动态触发端口加入MAC VLAN功能，此时MAC VLAN表项中的VLAN不能配为Super VLAN。

3. 配置Super VLAN对应的VLAN接口

表2-3 配置Super VLAN对应的VLAN接口

配置 | 命令 | 说明
进入系统视图 | system-view | -
创建VLAN接口，并进入VLAN接口视图 | interface vlan-interface vlan-interface-id | 必选 vlan-interface-id 的值必须等于Super VLAN ID
配置VLAN接口的IP地址 | ip address ip-address { mask | mask-length } [ sub ] | 二者必选其一 缺省情况下，没有配置VLAN接口的IP地址
 | ipv6 address { ipv6-address { prefix-length | link-local } | ipv6-address/prefix-length [ anycast | eui-64 ] | auto [ link-local ] }
开启本地代理ARP功能 | local-proxy-arp enable | 二者必选其一 缺省情况下，本地代理ARP功能和本地代理ND功能均处于关闭状态
开启本地代理ND功能 | local-proxy-nd enable

l 以上步骤中配置的VLAN接口的IP地址就是对应的Super VLAN的IP地址。

l 本地代理ARP功能的相关介绍请参见“三层技术-IP业务配置指导”中的“ARP”；local-proxy-arp enable命令的相关描述请参见“三层技术-IP业务命令参考”中的“代理ARP”。

l 本地代理ND功能的相关介绍请参见“三层技术-IP业务配置指导”中的“IPv6基础”；local-proxy-nd enable 命令的相关描述请参见“三层技术-IP业务命令参考”中的“IPv6基础”。

l 如果某个VLAN被指定为Super VLAN，则该VLAN不能被指定为某个端口的Guest VLAN；同样，如果某个VLAN被指定为某个端口的Guest VLAN，则该VLAN不能被指定为Super VLAN。Guest VLAN的相关内容请参见“安全配置指导”中的“802.1X”。

l 在Super VLAN下可以配置二层组播功能，但是该配置将不会生效。

l 在Super VLAN对应的VLAN接口下可以配置DHCP、三层组播、动态路由等功能，但是只有DHCP的配置生效，其它配置将不会生效。

l 在Super VLAN对应的VLAN接口下配置VRRP功能后，会对网络性能造成影响，建议不要这样配置。VRRP的详细描述请参见“可靠性配置指导”中的“VRRP”。


2.3 Super VLAN显示和维护

在完成上述配置后，在任意视图下执行 display 命令可以显示配置后Super VLAN的运行情况，通过查看显示信息验证配置的效果。

表2-4 Super VLAN显示和维护

操作 | 命令
显示Super VLAN和Sub VLAN之间的映射关系 | display supervlan [ supervlan-id ] [ | { begin | exclude | include } regular-expression ]


2.4 Super VLAN典型配置举例

1. 组网需求

l 创建Super VLAN 10，VLAN接口的IP地址为10.0.0.1/24。

l 创建Sub VLAN：VLAN 2、VLAN 3、VLAN 5。

l 端口Ethernet1/0/1和端口Ethernet1/0/2属于VLAN 2，端口Ethernet1/0/3和端口Ethernet1/0/4属于VLAN 3，端口Ethernet1/0/5和端口Ethernet1/0/6属于VLAN 5。

l 各Sub VLAN的用户之间能够满足二层隔离和三层互通。

2. 组网图

图2-1 配置Super-vlan组网图

3. 配置步骤

# 创建VLAN 10，配置VLAN接口的IP地址为10.0.0.1/24。

<Sysname> system-view

[Sysname] vlan 10

[Sysname-vlan10] quit

[Sysname] interface vlan-interface 10

[Sysname-Vlan-interface10] ip address 10.0.0.1 255.255.255.0

# 为实现Super VLAN特性，开启设备的本地代理功能。

[Sysname-Vlan-interface10] local-proxy-arp enable

[Sysname-Vlan-interface10] quit

# 创建VLAN 2，并添加端口Ethernet1/0/1和端口Ethernet1/0/2。

[Sysname] vlan 2

[Sysname-vlan2] port ethernet 1/0/1 ethernet 1/0/2

[Sysname-vlan2] quit

# 创建VLAN 3，并添加端口Ethernet1/0/3和端口Ethernet1/0/4。

[Sysname] vlan 3

[Sysname-vlan3] port ethernet 1/0/3 ethernet 1/0/4

[Sysname-vlan3] quit

# 创建VLAN 5，并添加端口Ethernet1/0/5和端口Ethernet1/0/6。

[Sysname] vlan 5

[Sysname-vlan5] port ethernet 1/0/5 ethernet 1/0/6

[Sysname-vlan5] quit

# 指定VLAN 10为Super VLAN，VLAN 2、VLAN 3和VLAN 5为Sub VLAN。

[Sysname] vlan 10

[Sysname-vlan10] supervlan

[Sysname-vlan10] subvlan 2 3 5

[Sysname-vlan10] quit

[Sysname] quit

4. 显示和验证

# 查看Super VLAN的相关信息，验证以上配置是否生效。

<Sysname> display supervlan

SuperVLAN ID : 10

SubVLAN ID : 2-3 5

VLAN ID: 10

VLAN Type: static

It is a Super VLAN.

Route Interface: configured

Ip Address: 10.0.0.1

Subnet Mask: 255.255.255.0

Description: VLAN 0010

Name：VLAN 0010

Tagged Ports: none

Untagged Ports: none

VLAN ID: 2

VLAN Type: static

It is a Sub VLAN.

Route Interface: configured

Ip Address: 10.0.0.1

Subnet Mask: 255.255.255.0

Description: VLAN 0002

Name：VLAN 0002

Tagged Ports: none

Untagged Ports:

Ethernet1/0/1 Ethernet1/0/2

VLAN ID: 3

VLAN Type: static

It is a Sub VLAN.

Route Interface: configured

Ip Address: 10.0.0.1

Subnet Mask: 255.255.255.0

Description: VLAN 0003

Name：VLAN 0003

Tagged Ports: none

Untagged Ports:

Ethernet1/0/3 Ethernet1/0/4

VLAN ID: 5

VLAN Type: static

It is a Sub VLAN.

Route Interface: configured

Ip Address: 10.0.0.1

Subnet Mask: 255.255.255.0

Description: VLAN 0005

Name：VLAN 0005

Tagged Ports: none

Untagged Ports:

Ethernet1/0/5 Ethernet1/0/6


3 Isolate-user-VLAN配置

相关链接

  • 3.1 Isolate-user-VLAN简介
  • 3.2 配置Isolate-user-VLAN
  • 3.3 Isolate-user-VLAN显示和维护
  • 3.4 Isolate-user-VLAN典型配置举例
父主题： 08-VLAN配置


3.1 Isolate-user-VLAN简介

Isolate-user-VLAN采用二层VLAN结构，它在同一台设备上设置Isolate-user-VLAN和Secondary VLAN两类VLAN。

l Isolate-user-VLAN用于上行，不同的Secondary VLAN关联到同一个Isolate-user-VLAN。上行连接的设备只知道Isolate-user-VLAN，而不必关心Secondary VLAN，简化了网络配置，节省了VLAN资源。

l Secondary VLAN用于连接用户，Secondary VLAN之间二层报文互相隔离。

l 一个Isolate-user-VLAN可以和多个Secondary VLAN相关联。Isolate-user-VLAN下面的Secondary VLAN对上行设备不可见。

如下图所示，设备Switch B上启动了Isolate-user-VLAN功能。其中VLAN 10是Isolate-user-VLAN；VLAN 2、VLAN 5、VLAN 8是Secondary VLAN；VLAN 2、VLAN 5、VLAN 8都映射到VLAN 10；VLAN 2、VLAN 5、VLAN 8对Switch A不可见。

图3-1 Isolate-user-VLAN示意图


3.2 配置Isolate-user-VLAN

Isolate-user-VLAN配置主要包括以下几个步骤：

(1) 配置Isolate-user-VLAN。

l 向Isolate-user-VLAN中添加端口，配置端口类型为上行端口（promiscuous端口，如图3-1中Switch B上与Switch A相连的端口），可以实现上行端口同步加入Isolate-user-VLAN对应的Secondary VLAN的功能。

(2) 配置Secondary VLAN。

l 向Secondary VLAN中添加端口，配置端口类型为下行端口（host端口，如图3-1中Switch B上与用户相连的端口），可以实现下行端口同步加入Secondary VLAN对应的Isolate-user-VLAN的功能。

(3) 配置Isolate-user-VLAN和Secondary VLAN间的映射关系。

(4) 如果Isolate-user-VLAN中的用户需要与其它网络进行三层互通，则需要在设备上创建Isolate-user-VLAN接口和Secondary VLAN接口，并在Isolate-user-VLAN接口上配置网关的IP地址，Secondary VLAN接口上不需要配置IP地址。

(5) 如果同一Isolate-user-VLAN下的不同Secondary VLAN用户之间需要进行三层互通，则需要在上行设备（如图3-1中的Switch A）上开启本地ARP代理功能。

有关promiscuous/host模式的详细介绍，请参见“二层技术-以太网交换命令参考”中的“VLAN”的相关命令。

3.2.2 配置Isolate-user-VLAN

表3-1 配置Isolate-user-VLAN

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
创建Isolate-user-VLAN，并进入VLAN视图 |  | vlan vlan-id | -
设置VLAN类型为Isolate-user-VLAN |  | isolate-user-vlan enable | 必选
退回系统视图 |  | quit | -
进入二层以太网端口视图或二层聚合接口视图 |  | interface interface-type interface-number | -
配置端口的链路类型 |  | port link-type { access | hybrid | trunk } | -
将端口加入到Isolate-user-VLAN中 | 当端口类型为Access端口 | port access vlan vlan-id | 三者必选其一 当端口的链路类型为hybrid或Trunk时，建议用户手动配置端口的PVID为Isolate-user-VLAN ID
 | 当端口类型为Hybrid端口 | port hybrid vlan vlan-id-list { tagged | untagged }
 | 当端口类型为Trunk端口 | port trunk permit vlan { vlan-id-list | all }
配置上行端口的工作模式为promiscuous模式 |  | port isolate-user-vlan vlan-id promiscuous | 必选 配置当前端口的工作模式为promiscuous后，当前端口将自动加入到对应的Secondary VLAN中
退回系统视图 |  | quit | -

3.2.3 配置Secondary VLAN

表3-2 配置Secondary VLAN

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
创建Secondary VLAN |  | vlan { vlan-id1 [ to vlan-id2 ] | all } | 必选
设置同一Secondary VLAN内各端口二层隔离 |  | isolated-vlan enable | 可选 缺省情况下，同一Secondary VLAN内的端口能够二层互通 只有端口类型配置为 host，并且Isolate-user-VLAN和Secondary VLAN建立映射关系后才能生效
退回系统视图 |  | quit | -
进入二层以太网端口视图或二层聚合接口视图 |  | interface interface-type interface-number | -
设置端口的链路类型 |  | port link-type { access | hybrid | trunk } | -
将端口加入到Secondary VLAN中 | 当端口类型为Access时 | port access vlan vlan-id | 三者必选其一 当端口的链路类型为Hybrid或Trunk时，建议用户手动配置端口的PVID为Secondary VLAN ID
 | 当端口类型为Hybrid时 | port hybrid vlan vlan-id-list { tagged | untagged }
 | 当端口类型为Trunk时 | port trunk permit vlan { vlan-id-list | all }
配置下行端口的工作模式为host模式 |  | port isolate-user-vlan host | 必选 配置当前端口的工作模式为host后，当前端口将自动加入到对应的Isolate-user-VLAN中
退回系统视图 |  | quit | -

业务环回组成员端口不能配置为isolate-user-vlan上行端口（promiscuous端口）或下行端口（host端口），有关业务环回组的详细介绍请参见“二层技术-以太网交换配置指导”中的“业务环回组配置”。

3.2.4 配置Isolate-user-VLAN和Secondary VLAN间的映射

表3-3 配置Isolate-user-VLAN和Secondary VLAN间的映射

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置Isolate-user-VLAN和Secondary VLAN间的映射关系 | isolate-user-vlan isolate-user-vlan-id secondary secondary-vlan-id [ to secondary-vlan-id ] | 必选

在完成上述配置后，建议用户确保上行端口的缺省VLAN为Isolate-user-VLAN，下行端口的缺省VLAN为Secondary VLAN。当端口的链路类型为Hybrid时，建议将原有以Tagged方式加入Isolate-user-VLAN和Secondary VLAN的端口，手动更改为以Untagged方式加入这些VLAN。


3.3 Isolate-user-VLAN显示和维护

在完成上述配置后，在任意视图下执行 display 命令可以显示配置Isolate-user-VLAN后的运行情况，通过查看显示信息验证配置的效果。

表3-4 Isolate-user-VLAN显示和维护

操作 | 命令
显示Isolate-user-VLAN和Secondary VLAN的映射关系 | display isolate-user-vlan [ isolate-user-vlan-id ] [ | { begin | exclude | include } regular-expression ]


3.4 Isolate-user-VLAN典型配置举例

1. 组网需求

l Device A下接Device B、Device C。

l Device B上的VLAN 5为Isolate-user-VLAN，包含上行端口Ethernet1/0/5和两个Secondary VLAN（VLAN 2和VLAN 3），VLAN 2包含端口Ethernet1/0/2，VLAN 3包含端口Ethernet1/0/1。

l Device C上的VLAN 6为Isolate-user-VLAN，包含上行端口Ethernet1/0/5和两个Secondary VLAN（VLAN 3和VLAN 4），VLAN 3包含端口Ethernet1/0/3，VLAN 4包含端口Ethernet1/0/4。

l 从Device A看，下接的Device B只有一个VLAN（VLAN 5），下接的设备C只有一个VLAN（VLAN 6）。

2. 组网图

图3-2 配置Isolate-user-VLAN组网图

3. 配置步骤

下面只列出Device B和Device C的配置过程。

(1) 配置Device B

# 将VLAN 5配置为Isolate-user-VLAN。

<DeviceB> system-view

[DeviceB] vlan 5

[DeviceB-vlan5] isolate-user-vlan enable

[DeviceB-vlan5] quit

# 创建Secondary VLAN。

[DeviceB] vlan 2 to 3

# 配置上行端口Ethernet 1/0/5在VLAN 5中工作在promiscuous模式。

[DeviceB] interface ethernet 1/0/5

[DeviceB-Ethernet1/0/5] port isolate-user-vlan 5 promiscuous

[DeviceB-Ethernet1/0/5] quit

# 将下行端口Ethernet 1/0/1、Ethernet 1/0/2分别添加到VLAN 3、VLAN 2，并配置它们工作在host模式。

[DeviceB] interface ethernet 1/0/1

[DeviceB-Ethernet1/0/1] port access vlan 3

[DeviceB-Ethernet1/0/1] port isolate-user-vlan host

[DeviceB-Ethernet1/0/1] quit

[DeviceB] interface ethernet 1/0/2

[DeviceB-Ethernet1/0/2] port access vlan 2

[DeviceB-Ethernet1/0/2] port isolate-user-vlan host

[DeviceB-Ethernet1/0/2] quit

# 配置Isolate-user-VLAN和Secondary VLAN间的映射关系。

[DeviceB] isolate-user-vlan 5 secondary 2 to 3

(2) 配置Device C

# 将VLAN 6配置为Isolate-user-VLAN。

<DeviceC> system-view

[DeviceC] vlan 6

[DeviceC-vlan6] isolate-user-vlan enable

[DeviceC-vlan6] quit

# 创建Secondary VLAN。

[DeviceC] vlan 3 to 4

# 配置上行端口Ethernet 1/0/5在VLAN 6中工作在promiscuous模式。

[DeviceC] interface ethernet 1/0/5

[DeviceC-Ethernet1/0/5] port isolate-user-vlan 6 promiscuous

[DeviceC-Ethernet1/0/5] quit

# 将下行端口Ethernet 1/0/3、Ethernet 1/0/4分别添加到VLAN 3、VLAN 4，并配置它们工作在host模式。

[DeviceC] interface ethernet 1/0/3

[DeviceC-Ethernet1/0/3] port access vlan 3

[DeviceC-Ethernet1/0/3] port isolate-user-vlan host

[DeviceC-Ethernet1/0/3] quit

[DeviceC] interface ethernet 1/0/4

[DeviceC-Ethernet1/0/4] port access vlan 4

[DeviceC-Ethernet1/0/4] port isolate-user-vlan host

[DeviceC-Ethernet1/0/4] quit

# 配置Isolate-user-VLAN和Secondary VLAN间的映射关系。

[DeviceC] isolate-user-vlan 6 secondary 3 to 4

4. 显示与验证

# 显示Device B上的Isolate-user-VLAN配置情况。

[DeviceB] display isolate-user-vlan

Isolate-user-VLAN VLAN ID : 5

Secondary VLAN ID : 2-3

VLAN ID: 5

VLAN Type: static

Isolate-user-VLAN type : isolate-user-VLAN

Route Interface: not configured

Description: VLAN 0005

Name：VLAN 0005

Tagged Ports: none

Untagged Ports:

Ethernet1/0/1 Ethernet1/0/2 Ethernet1/0/5

VLAN ID: 2

VLAN Type: static

Isolate-user-VLAN type : secondary

Route Interface: not configured

Description: VLAN 0002

Name：VLAN 0002

Tagged Ports: none

Untagged Ports:

Ethernet1/0/2 Ethernet1/0/5

VLAN ID: 3

VLAN Type: static

Isolate-user-VLAN type : secondary

Route Interface: not configured

Description: VLAN 0003

Name：VLAN 0003

Tagged Ports: none

Untagged Ports:

Ethernet1/0/1 Ethernet1/0/5


4 Voice VLAN配置

相关链接

  • 4.1 Voice VLAN简介
  • 4.2 配置Voice VLAN
  • 4.3 Voice VLAN显示和维护
  • 4.4 Voice VLAN典型配置举例
父主题： 08-VLAN配置


4.1 Voice VLAN简介

随着语音技术的日益发展，语音设备应用越来越广泛，尤其在宽带小区，网络中经常同时存在语音数据和业务数据两种流量。通常，语音数据在传输时需要具有比业务数据更高的优先级，以减少传输过程中可能产生的时延和丢包现象。

Voice VLAN是为用户的语音数据流而专门划分的VLAN。通过划分Voice VLAN并将连接语音设备的端口加入Voice VLAN，系统自动为语音报文修改QoS（Quality of Service，服务质量）参数，来提高语音数据报文优先级、保证通话质量。

常见的语音设备有IP电话、IAD（Integrated Access Device，综合接入设备）等。本文中以IP电话为例进行说明。

4.1.1 OUI地址

设备可以根据进入端口的数据报文中的源MAC地址字段来判断该数据流是否为语音数据流。源MAC地址符合系统设置的语音设备OUI（Organizationally Unique Identifier，全球统一标识符）地址的报文被认为是语音数据流。

用户可以预先设置OUI地址，也可以使用缺省的OUI地址作为判断标准。设备缺省的OUI地址如表4-1 所示。

表4-1 设备缺省的OUI地址

序号 | OUI地址 | 生产厂商
1 | 0001-E300-0000 | Siemens phone
2 | 0003-6B00-0000 | Cisco phone
3 | 0004-0D00-0000 | Avaya phone
4 | 00D0-1E00-0000 | Pingtel phone
5 | 0060-B900-0000 | Philips/NEC phone
6 | 00E0-7500-0000 | Polycom phone
7 | 00E0-BB00-0000 | 3Com phone

l 通常意义下，OUI地址指的是MAC地址的前24位（二进制），是IEEE为不同设备供应商分配的一个全球唯一的标识符。本文中的OUI地址有别于通常意义的OUI地址，它是设备判断收到的报文是否为语音报文的依据，是 voice vlan mac-address 命令中的 mac-address 和 oui-mask 参数相与的结果。

l 设备缺省的OUI地址可以手工删除，删除之后也可再次手工添加。

4.1.2 Voice VLAN的自动模式和手动模式

Voice VLAN的工作模式包括自动模式和手动模式，这个自动和手动指的是端口加入Voice VLAN的方式。

l 自动模式：系统利用IP电话上电时发出的协议报文（Untagged报文），通过识别报文的源MAC，匹配OUI地址。匹配成功后，系统将自动把语音报文的入端口加入Voice VLAN，并下发ACL规则、配置报文的优先级。用户可以在设备上设置Voice VLAN的老化时间，当在老化时间内，系统没有从入端口收到任何语音报文时，系统将把该端口从Voice VLAN中删除。端口的添加/删除到Voice VLAN的过程由系统自动实现。自动模式适用于PC-IP电话串联接入（端口同时传输语音数据和普通业务数据）的组网方式，如图4-1 所示。（当Voice VLAN正常工作时，如果遇到设备重新启动的情况，为保证已经建立的语音连接能够正常工作，系统会在重新启动完成后，将配置为自动模式的端口重新加入Voice VLAN，而不需要再次通过语音流触发。）

图4-1 主机与IP电话串联接入组网图

l 手动模式下，需要通过手工把IP电话接入端口加入Voice VLAN中。再通过识别报文的源MAC，匹配OUI地址。匹配成功后，系统将下发ACL规则、配置报文的优先级。端口的添加/删除到Voice VLAN的过程由管理员手动实现。手动模式适用于IP电话单独接入（端口仅传输语音报文）的组网方式，如图4-2 所示。该组网方式可以使该端口专用于传输语音数据，最大限度避免业务数据对语音数据传输的影响。

图4-2 IP电话单独接入组网图

对于IP电话发出的携带Tag标签的报文，两种模式处理方式一致，只根据标签进行转发。

由于IP电话类型较多，因此需要用户保证端口的链路类型与IP电话能够匹配，详细配合关系请见下表：

l IP电话发送Tagged语音数据

表4-2 不同类型端口支持Tagged语音数据配置要求

端口类型 | Voice VLAN工作模式 | 是否支持Tagged语音数据 | 配置要求
Access | 自动模式 | 不支持 | -
 | 手工模式
Trunk | 自动模式 | 支持 | 缺省VLAN不能为Voice VLAN
 | 手工模式 |  | 缺省VLAN不能为Voice VLAN，需要配置端口允许Voice VLAN的报文通过
Hybrid | 自动模式 | 支持 | 缺省VLAN不能为Voice VLAN
 | 手工模式 |  | 缺省VLAN不能为Voice VLAN，需要配置端口允许Voice VLAN的报文携带Tag通过

l IP电话发送Untagged语音数据

当IP电话发送Untagged语音数据，则端口的Voice VLAN工作模式只能为手工模式，不能为自动模式。

表4-3 不同类型端口支持Untagged语音数据配置要求

端口类型 | Voice VLAN工作模式 | 是否支持Untagged语音数据 | 配置要求
Access | 自动模式 | 不支持 | -
 | 手工模式 | 支持 | 将缺省VLAN配置为Voice VLAN
Trunk | 自动模式 | 不支持 | -
 | 手工模式 | 支持 | 接入端口的缺省VLAN必须是Voice VLAN，且接入端口允许该VLAN通过
Hybrid | 自动模式 | 不支持 | -
 | 手工模式 | 支持 | 接入端口的缺省VLAN必须是Voice VLAN，且在接入端口允许通过的Untagged VLAN列表中

l 所有端口的缺省VLAN都是VLAN 1，用户可以通过命令设置端口的缺省VLAN，也可以通过命令设置允许某个VLAN通过该端口。相关操作请参见“1.4 配置基于端口的VLAN”。

l 可以通过 display interface 命令来查看端口允许通过的VLAN及缺省VLAN等信息。

4.1.3 Voice VLAN的安全模式和普通模式

根据使能了Voice VLAN功能的端口对接收到的数据包的过滤机制又可以将Voice VLAN的工作模式分为普通模式和安全模式：

l 普通模式下，端口加入Voice VLAN后，设备对于接收的语音报文不再一一进行识别，凡是带有Voice VLAN Tag的报文，设备将不再检查其源MAC地址是否为语音设备的OUI地址，均接收并在Voice VLAN中转发。对于缺省VLAN就是Voice VLAN的手工模式端口，会导致任意的Untagged报文都可以在Voice VLAN中传输。这样的处理方式很容易使Voice VLAN收到恶意用户的流量攻击。恶意用户可以构造大量带有Voice VLAN Tag的报文，占用Voice VLAN的带宽，影响正常的语音通信。

l 安全模式下，设备将对每一个要进入Voice VLAN传输的报文进行源MAC匹配检查，对于不能匹配OUI地址的报文，则将其丢弃。

对于比较安全的网络，用户可以配置Voice VLAN的普通模式，以减少检查报文的工作对系统资源的占用。

建议用户尽量不要在Voice VLAN中同时传输语音和业务数据。如确有此需要，请确认Voice VLAN的安全模式已关闭。

表4-4 Voice VLAN的安全/普通模式对报文的处理

Voice VLAN工作模式 | 报文类型 | 处理方式
安全模式 | Untagged报文 | 当该报文源MAC地址是可识别的OUI地址时，允许该报文在Voice VLAN内传输，否则将该报文丢弃
 | 带有Voice VLAN Tag的报文
 | 带有其他VLAN Tag的报文 | 根据指定端口是否允许该VLAN通过来对报文进行转发和丢弃的处理，不受Voice VLAN安全/普通模式的影响
普通模式 | Untagged报文 | 不对报文的源MAC地址进行检查，所有报文均可以在Voice VLAN内进行传输
 | 带有Voice VLAN Tag的报文
 | 带有其他VLAN Tag的报文 | 根据指定端口是否允许该VLAN通过来对报文进行转发和丢弃的处理，不受Voice VLAN安全/普通模式的影响


4.2 配置Voice VLAN

4.2.1 配置准备

(1) 创建VLAN

配置Voice VLAN之前，须先创建对应的VLAN。

(2) 确定语音报文的QoS优先级

配置语音报文的QoS优先级，需要关闭接口上的Voice VLAN功能。当Voice VLAN使能时，不允许修改语音报文的QoS优先级。语音报文的QoS优先级的配置请参见 4.2.2 配置语音报文的QoS优先级。

(3) 确定将要配置的Voice VLAN的工作模式

l 配置自动模式的Voice VLAN，请参见 4.2.3 配置自动模式下的Voice VLAN；

l 配置手动模式的Voice VLAN，请参见 4.2.4 配置手动模式下的Voice VLAN。

4.2.2 配置语音报文的QoS优先级

Voice VLAN在实现中，通过提高语音报文的QoS优先级（CoS和DSCP值）来保证语音通信的质量。语音报文会自带QoS优先级，通过配置，用户可以选择在语音报文通过设备时修改或者不修改报文的QoS优先级。

表4-5 配置语音报文的QoS优先级

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入二层以太网端口视图视图 | interface interface-type interface-number | -
配置接口信任语音报文的优先级，即接口不会修改Voice VLAN内语音报文自带的CoS和DSCP值 | voice vlan qos trust | 二者任选其一 缺省情况下，接口会将Voice VLAN内语音报文的CoS值修改为6，DSCP值修改为46 在同一接口多次执行这两条命令，则最新配置将覆盖旧配置，最新的配置生效
将Voice VLAN内语音报文的CoS和DSCP修改为指定值 | voice vlan qos cos-value dscp-value

在Voice VLAN使能的情况下，不允许配置/修改语音报文的QoS优先级。必须禁用Voice VLAN后，才能配置/修改。

4.2.3 配置自动模式下的Voice VLAN

表4-6 配置自动模式下的Voice VLAN

操作 | 命令 | 说明
进入系统视图 | system-view | -
设置Voice VLAN的老化时间 | voice vlan aging minutes | 可选 缺省情况下，老化时间为1440分钟，老化时间只对自动模式下的端口有效
使能Voice VLAN的安全模式 | voice vlan security enable | 可选 缺省情况下，Voice VLAN工作在安全模式
设置Voice VLAN识别的OUI地址 | voice vlan mac-address oui mask oui-mask [ description text ] | 可选 Voice VLAN启动后将有缺省的OUI地址，请参见“表4-1 设备缺省的OUI地址”
进入二层以太网端口视图 | interface interface-type interface-number | -
设置端口Voice VLAN的工作模式为自动模式 | voice vlan mode auto | 可选 缺省情况下，Voice VLAN工作在自动模式 各个端口Voice VLAN的工作模式相互独立，不同的端口可以设置成不同的模式
使能端口的Voice VLAN功能 | voice vlan vlan-id enable | 必选 缺省情况下，端口没有使能Voice VLAN功能

自动模式下的Voice VLAN只支持Hybrid端口对Tagged的语音流进行处理，而协议VLAN特性要求Hybrid入端口的报文格式为Untagged的（详情请参见“1.6.2 配置基于协议的VLAN”），因此，不能将某个VLAN同时设置为Voice VLAN和协议VLAN。

4.2.4 配置手动模式下的Voice VLAN

表4-7 配置手动模式下的Voice VLAN

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
使能Voice VLAN的安全模式 |  | voice vlan security enable | 可选 缺省情况下，Voice VLAN工作在安全模式
设置Voice VLAN识别的OUI地址 |  | voice vlan mac-address oui mask oui-mask [ description text ] | 可选 Voice VLAN启动后将有缺省的OUI地址，请参见“表4-1 设备缺省的OUI地址”
进入二层以太网端口视图 |  | interface interface-type interface-number | -
配置端口的Voice VLAN工作模式为手动模式 |  | undo voice vlan mode auto | 必选 缺省情况下，端口的Voice VLAN工作在自动模式
将手动模式端口加入Voice VLAN | Access端口 | 请参见“1.4.2 配置基于Access端口的VLAN” | 三者必选其一 将Access端口加入Voice VLAN后，Voice VLAN会自动成为Access端口的缺省VLAN
 | Trunk端口 | 请参见“1.4.3 配置基于Trunk端口的VLAN”
 | Hybrid端口 | 请参见“1.4.4 配置基于Hybrid端口的VLAN”
设置Voice VLAN为端口的缺省VLAN | Trunk端口 | 请参见“1.4.3 配置基于Trunk端口的VLAN” | 可选 当输入的语音流是Untagged语音流时，需要进行该项配置；当输入的语音流是Tagged语音流时，不能将Voice VLAN设置为端口的缺省VLAN
 | Hybrid端口 | 请参见“1.4.4 配置基于Hybrid端口的VLAN”
使能端口的Voice VLAN功能 |  | voice vlan vlan-id enable | 必选 缺省情况下，端口没有使能Voice VLAN功能

l 同一设备同一时刻可以给不同的端口配置不同的Voice VLAN，但一个端口只能配置一个Voice VLAN，而且这些VLAN必须是已经存在的静态VLAN。

l 不允许在聚合组的成员端口上使能Voice VLAN功能。有关聚合组的成员端口的详细介绍，请参见“二层技术-以太网交换配置指导”中的“以太网链路聚合”。

l 当端口使能了Voice VLAN并工作在手工模式时，必须手工将端口加入Voice VLAN，才能保证Voice VLAN功能生效。


4.3 Voice VLAN显示和维护

在完成上述配置后，在任意视图下执行 display 命令可以显示配置后Voice VLAN的运行情况，通过查看显示信息验证配置的效果。

表4-8 Voice VLAN显示和维护

操作 | 命令
显示Voice VLAN的状态 | display voice vlan state [ | { begin | exclude | include } regular-expression ]
显示系统当前支持的OUI地址 | display voice vlan oui [ | { begin | exclude | include } regular-expression ]


4.4 Voice VLAN典型配置举例

4.4.1 自动模式下Voice VLAN的配置举例

1. 组网需求

l IP phone A的MAC地址为0011-1100-0001，下行连接PC A（MAC地址为0022-1100-0002），上行连接到Device A的Ethernet1/0/1端口。

l IP phone B的MAC地址为0011-2200-0001，下行连接PC B（MAC地址为0022-2200-0002），上行连接到Device A的Ethernet1/0/2端口。

l Device A使用Voice VLAN 2传输IP phone A产生的语音报文；使用Voice VLAN 3传输IP phone B产生的语音报文。

l Ethernet1/0/1和Ethernet1/0/2工作在自动模式，如果它们在30分钟内没有收到语音流，就将相应的Voice VLAN老化。

2. 组网图

图4-3 配置自动模式下Voice VLAN组网图

3. 配置步骤

# 创建VLAN 2和VLAN 3。

<DeviceA> system-view

[DeviceA] vlan 2 to 3

Please wait... Done.

# 设置Voice VLAN的老化时间为30分钟。

[DeviceA] voice vlan aging 30

# 由于Ethernet1/0/1端口可能会同时收到语音和数据两种流量，为了保证语音报文的质量以及带宽的高效利用，设置Voice VLAN工作在安全模式，即Voice VLAN只用于传输语音报文。（此步骤可省略，缺省情况下，Voice VLAN工作在安全模式）

[DeviceA] voice vlan security enable

# 设置允许通过的OUI地址为MAC地址前缀为0011-1100-0000和0011-2200-0000，即当报文的前缀为0011-1100-0000或0011-2200-0000时，Device A会把它当成语音报文来处理。

[DeviceA] voice vlan mac-address 0011-1100-0001 mask ffff-ff00-0000 description IP phone A

[DeviceA] voice vlan mac-address 0011-2200-0001 mask ffff-ff00-0000 description IP phone B

# 将端口Ethernet1/0/1设定为Hybrid端口。

[DeviceA] interface ethernet 1/0/1

[DeviceA-Ethernet1/0/1] port link-type hybrid

# 将端口Ethernet1/0/1上Voice VLAN的工作模式设置为自动模式。（可选，缺省情况下，端口的Voice VLAN工作在自动模式。）

[DeviceA-Ethernet1/0/1] voice vlan mode auto

# 使能端口Voice VLAN功能。

[DeviceA-Ethernet1/0/1] voice vlan 2 enable

[DeviceA-Ethernet1/0/1] quit

# 在Ethernet1/0/2上进行相应的配置。

[DeviceA] interface ethernet 1/0/2

[DeviceA-Ethernet1/0/2] port link-type hybrid

[DeviceA-Ethernet1/0/2] voice vlan mode auto

[DeviceA-Ethernet1/0/2] voice vlan 3 enable

4. 显示和验证

# 显示当前系统支持的OUI地址、OUI地址掩码和描述信息。

<DeviceA> display voice vlan oui

Oui Address Mask Description

0001-e300-0000 ffff-ff00-0000 Siemens phone

0003-6b00-0000 ffff-ff00-0000 Cisco phone

0004-0d00-0000 ffff-ff00-0000 Avaya phone

0011-1100-0000 ffff-ff00-0000 IP phone A

0011-2200-0000 ffff-ff00-0000 IP phone B

0060-b900-0000 ffff-ff00-0000 Philips/NEC phone

00d0-1e00-0000 ffff-ff00-0000 Pingtel phone

00e0-7500-0000 ffff-ff00-0000 Polycom phone

00e0-bb00-0000 ffff-ff00-0000 3com phone

# 显示当前Voice VLAN的状态。

<DeviceA> display voice vlan state

Maximum of Voice VLANs: 128

Current Voice VLANs: 2

Voice VLAN security mode: Security

Voice VLAN aging time: 30 minutes

Voice VLAN enabled port and its mode:

PORT VLAN MODE COS DSCP

--------------------------------------------------------------------

Ethernet1/0/1 2 AUTO 6 46

Ethernet1/0/2 3 AUTO 6 46

4.4.2 手动模式下Voice VLAN的配置举例

1. 组网需求

l 创建VLAN 2为Voice VLAN，只允许语音报文通过。

l IP Phone类型为Untagged，接入端口是Hybrid类型端口Ethernet1/0/1。

l 端口Ethernet1/0/1工作在手动模式，且允许OUI地址是0011-2200-0000、掩码是ffff-ff00-0000的语音报文通过，描述字符为test。

2. 组网图

图4-4 配置手动模式下Voice VLAN组网图

3. 配置步骤

# 设置Voice VLAN为安全模式，使得Voice VLAN端口只允许合法的语音报文通过。（可选，系统缺省为安全模式）

<DeviceA> system-view

[DeviceA] voice vlan security enable

# 设置OUI地址0011-2200-0000是Voice VLAN的合法地址。

[DeviceA] voice vlan mac-address 0011-2200-0000 mask ffff-ff00-0000 description test

# 创建VLAN 2。

[DeviceA] vlan 2

[DeviceA-vlan2] quit

# 设置端口Ethernet1/0/1工作在手动模式。

[DeviceA] interface ethernet 1/0/1

[DeviceA-Ethernet1/0/1] undo voice vlan mode auto

# 设置端口Ethernet1/0/1为Hybrid类型。

[DeviceA-Ethernet1/0/1] port link-type hybrid

# 设置Voice VLAN是端口Ethernet1/0/1的缺省VLAN，且在该端口允许通过的Untagged VLAN列表中。

[DeviceA-Ethernet1/0/1] port hybrid pvid vlan 2

[DeviceA-Ethernet1/0/1] port hybrid vlan 2 untagged

# 使能端口Ethernet1/0/1的Voice VLAN功能。

[DeviceA-Ethernet1/0/1] voice vlan 2 enable

4. 显示与验证

# 显示当前系统支持的OUI地址、OUI地址掩码和描述信息。

<DeviceA> display voice vlan oui

Oui Address Mask Description

0001-e300-0000 ffff-ff00-0000 Siemens phone

0003-6b00-0000 ffff-ff00-0000 Cisco phone

0004-0d00-0000 ffff-ff00-0000 Avaya phone

0011-2200-0000 ffff-ff00-0000 test

00d0-1e00-0000 ffff-ff00-0000 Pingtel phone

0060-b900-0000 ffff-ff00-0000 Philips/NEC phone

00e0-7500-0000 ffff-ff00-0000 Polycom phone

00e0-bb00-0000 ffff-ff00-0000 3com phone

# 显示当前Voice VLAN的状态。

<DeviceA> display voice vlan state

Maximum of Voice VLANs: 128

Current Voice VLANs: 1

Voice VLAN security mode: Security

Voice VLAN aging time: 1440 minutes

Voice VLAN enabled port and its mode:

PORT VLAN MODE COS DSCP

--------------------------------------------------------------------

Ethernet1/0/1 2 MANUAL 6 46


1 GVRP配置

相关链接

  • 1.1 GVRP简介
  • 1.2 GVRP配置任务简介
  • 1.3 配置GVRP功能
  • 1.4 配置GARP定时器
  • 1.5 GVRP显示和维护
  • 1.6 GVRP典型配置举例
父主题： 09-GVRP配置


1.1 GVRP简介

GARP（Generic Attribute Registration Protocol，通用属性注册协议）作为一个属性注册协议的载体，可以用来传播属性。遵循GARP协议的应用实体称为GARP应用，GVRP（GARP VLAN Registration Protocol，GARP VLAN注册协议）就是GARP的应用之一，用于注册和注销VLAN属性。下面首先了解一下GARP的相关内容。

1.1.1 GARP简介

GARP提供了一种机制，用于协助同一局域网内各成员之间分发、传播和注册某种信息（如VLAN、组播地址等）。

1. GARP实现机制

设备上每一个参与协议的端口都可以视为一个应用实体，当GARP应用（如GVRP）在端口上启动之后，该端口就可视为一个GARP应用实体。

通过GARP机制，一个GARP应用实体上的配置信息会迅速传遍整个局域网。如图1-1 所示，GARP应用实体通过发送出的声明或回收声明来通知其它GARP应用实体来注册或注销自己的属性信息，并根据其它实体发来的声明或回收声明来注册或注销对方的属性信息。

图1-1 GARP实现机制示意图

譬如，GVRP协议实现VLAN属性注册和注销的方式如下：

l 当端口收到一个VLAN属性的声明时，该端口将注册该声明中所包含的VLAN属性（即，该端口加入到该VLAN中）。

l 当端口收到一个VLAN属性的回收声明时，该端口将注销该声明中所包含的VLAN属性（即，该端口退出该VLAN）。

2. GARP消息

GARP应用实体之间的信息交换借助于传递各种消息来完成，主要包括Join消息、Leave消息和LeaveAll消息，它们通过互相配合来确保信息的注册或注销。由于GVRP基于GARP实现，因此，GVRP也是通过GARP消息进行信息交互的。

(1) Join消息

当一个GARP应用实体希望其它GARP实体注册自己的属性信息时，它会发送Join消息；当收到来自其它实体的Join消息或由于本实体静态配置了某些属性而需要其它实体进行注册时，它也会发送Join消息。Join消息又分为JoinEmpty和JoinIn两种，二者的区别如下：

l JoinEmpty：用于声明一个本身没有注册的属性。

l JoinIn：用于声明一个本身已经注册的属性。

(2) Leave消息

当一个GARP应用实体希望其它GARP实体注销自己的属性信息时，它会发送Leave消息；当收到来自其它实体的Leave消息或由于本实体静态注销了某些属性而需要其它实体进行注销时，它也会发送Leave消息。Leave消息又分为LeaveEmpty和LeaveIn两种，二者的区别如下：

l LeaveEmpty：用于注销一个本身没有注册的属性。

l LeaveIn：用于注销一个本身已经注册的属性。

(3) LeaveAll消息

每个GARP应用实体启动时都会启动各自的LeaveAll定时器，当该定时器超时后，它就会发送LeaveAll消息来注销所有的属性，从而使其它GARP实体重新注册属性信息；当收到来自其它实体的LeaveAll消息时，它也会发送LeaveAll消息。在发送LeaveAll消息同时重新启动LeaveAll定时器，开始新的一轮循环。

3. GARP定时器

GARP定义了四种定时器，用于控制各种GARP消息的发送。

l GARP定时器值的改变将应用于同一局域网内所有运行的GARP应用（如GVRP）上。

l 设备的每个端口上都独立维护自己的Hold定时器、Join定时器和Leave定时器，而每台设备则只在全局维护一个LeaveAll定时器。

l Hold定时器、Join定时器、Leave定时器和LeaveAll定时器的取值范围之间存在着相互制约的关系，具体情况请参见表1-5。

(1) Hold定时器

Hold定时器用来控制GARP消息（包括Join消息和Leave消息）的发送。当GARP应用实体的属性改变或收到来自其它实体的GARP消息时，不会立即将该消息发送出去，而是在Hold定时器超时后，将此时段内待发送的所有GARP消息封装成尽可能少的报文发送出去，这样就减少了报文的发送数量，从而节省了带宽资源。

(2) Join定时器

Join定时器用来控制Join消息的发送。为了保证Join消息能够可靠地传输到其它实体，GARP应用实体在发出Join消息后将等待一个Join定时器的时间间隔：如果在该定时器超时前收到了其它实体发来的JoinIn消息，它便不会重发该Join消息；否则，它将重发一次该Join消息。

并非每个属性都有自己的Join定时器，而是每个GARP应用实体共用一个。因此，Join定时器应该足够大，以保证所有属性能够在一次声明过程中全部发送出去。

(3) Leave定时器

Leave定时器用来控制属性的注销。当GARP应用实体希望其它实体注销自己的某属性信息时会发送Leave消息，收到该消息的实体将启动Leave定时器，只有在该定时器超时前没有收到该属性信息的Join消息，该属性信息才会被注销。

(4) LeaveAll定时器

每个GARP应用实体启动时都会启动各自的LeaveAll定时器，当该定时器超时后，GARP应用实体就会对外发送LeaveAll消息，从而使其它实体重新注册属性信息。随后再重新启动LeaveAll定时器，开始新一轮的循环。收到LeaveAll消息的实体将重新启动所有的定时器，其中也包括LeaveAll定时器。

l 每一次LeaveAll定时器超时，都会引起全网所有属性的注销。由于其影响范围很广，所以LeaveAll定时器的值不能太小，其取值必须大于所有端口上Leave定时器的值，并建议用户配置的LeaveAll定时器值不要小于其缺省值（即1000厘秒）。

l 尽管全网各设备上LeaveAll定时器的值有可能不同，但这些设备都将以LeaveAll定时器的全网最小值为周期来发送LeaveAll消息。这是由于各设备在收到LeaveAll消息后都会清零自己的LeaveAll定时器，而只有具备最小LeaveAll定时器值的设备才来得及将LeaveAll消息发出，因此实际上只有具备全网最小值的LeaveAll定时器才会生效。

4. GARP协议报文封装格式

图1-2 GARP协议报文封装格式

如 图1-2 所示，GARP协议报文采用IEEE 802.3 Ethernet封装格式，其中主要字段的说明如 表1-1 所示。

表1-1 GARP协议报文主要字段说明

字段 | 说明
GARP PDU | 封装在GARP协议报文中的GARP PDU（Protocol Data Unit，协议数据单元）
Protocol ID | 协议编号，GARP PDU的协议编号为0x0001
Message | 属性消息，每个消息都由Attribute type和Attribute list两个字段构成
End mark | 结束标志，取值为0x00
Attribute type | 属性类型，由具体的GARP应用来定义。取值为0x01时表示VLAN ID，代表GVRP应用
Attribute list | 属性列表，由多个属性构成
Attribute | 属性，每个属性都由Attribute length、Attribute event和Attribute value这三个字段构成
Attribute length | 属性长度（包括本字段在内），取值范围为2～255，单位为字节
Attribute event | 属性所描述的事件，取值及含义如下： l 0x00：表示LeaveAll事件 l 0x01：表示JoinEmpty事件 l 0x02：表示JoinIn事件 l 0x03：表示LeaveEmpty事件 l 0x04：表示LeaveIn事件 l 0x05：表示Empty事件
Attribute value | 属性取值。GVRP应用的属性取值为VLAN ID，但当Attribute event字段的取值为0x00时（即LeaveAll事件），本字段无效

GARP协议报文以特定组播MAC地址为目的MAC，如GVRP的目的MAC地址为01-80-C2-00-00-21。当设备在收到GARP应用实体的报文后，会根据其目的MAC地址分发给不同的GARP应用进行处理。

1.1.2 GVRP实现

1. GVRP概述

GVRP是GARP应用的一种，它基于GARP的工作机制来维护设备中的VLAN动态注册信息，并将该信息向其它设备传播：当设备启动了GVRP之后，就能够接收来自其它设备的VLAN注册信息，并动态更新本地的VLAN注册信息，包括当前的VLAN成员及这些VLAN成员可通过哪个端口到达等；此外，设备还能够将本地的VLAN注册信息向其它设备传播，从而使同一局域网内所有设备的VLAN信息都达成一致。

GVRP传播的VLAN注册信息既包括本地手工配置的静态注册信息，也包括来自其它设备的动态注册信息。

2. GVRP的注册模式

我们将通过手工创建的VLAN称为静态VLAN，通过GVRP协议创建的VLAN称为动态VLAN。GVRP有三种注册模式，不同注册模式对静态VLAN和动态VLAN的处理方式也不同。

(1) Normal模式

该模式下的端口允许进行动态VLAN的注册或注销，并允许发送动态和静态VLAN的声明。

(2) Fixed模式

该模式下的端口禁止进行动态VLAN的注册或注销，且只允许发送静态VLAN的声明。也就是说，该模式下的Trunk端口，即使允许所有VLAN通过，实际通过的VLAN也只能是手工创建的那部分VLAN。

(3) Forbidden模式

该模式下的端口禁止进行动态VLAN的注册或注销，且只允许发送VLAN 1的声明。也就是说，该模式下的Trunk端口，即使允许所有VLAN通过，实际通过的VLAN也只能是VLAN 1。

1.1.3 协议规范

与GVRP相关的协议规范有：

l IEEE 802.1Q：Virtual Bridged Local Area Networks


1.2 GVRP配置任务简介

表1-2 GVRP配置任务简介

配置任务 | 说明 | 详细配置
配置GVRP功能 | 必选 | 1.3
配置GARP定时器 | 可选 | 1.4

对于GVRP的相关配置来说：

l 二层以太网端口视图下或二层聚合接口视图下的配置只对当前接口有效；端口组视图下的配置对当前端口组中的所有端口有效。

l 聚合成员端口上的配置只有当该端口退出聚合组后才会生效。


1.3 配置GVRP功能

在使能端口的GVRP功能之前，必须先全局使能GVRP功能。此外，GVRP功能只能配置在Trunk端口上，并且需要通过配置来保证所有动态注册的VLAN都能够从该端口通过。

表1-3 配置GVRP功能

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
全局使能GVRP功能 |  | gvrp | 必选 缺省情况下，全局的GVRP功能处于关闭状态
进入相应视图 | 进入以太网或二层聚合接口视图 | interface interface-type interface-number | 二者必选其一
 | 进入端口组视图 | port-group manual port-group-name
配置端口的链路类型为Trunk类型 |  | port link-type trunk | 必选 缺省情况下，端口的链路类型为Access类型
允许所有VLAN都通过当前Trunk端口 |  | port trunk permit vlan all | 必选 缺省情况下，Trunk端口只允许VLAN 1通过
使能端口上的GVRP功能 |  | gvrp | 必选 缺省情况下，端口上的GVRP功能处于关闭状态
配置GVRP端口的注册模式 |  | gvrp registration { fixed | forbidden | normal } | 可选 缺省情况下，GVRP端口的注册模式为Normal模式

l 有关 port link-type trunk 和 port trunk permit vlan all 命令的详细介绍，请参见“二层技术-以太网交换命令参考”中的“VLAN”。

l GVRP功能与业务环回功能互斥，两者不可以同时应用。

l GVRP功能只能与STP、RSTP或MSTP CIST配合使用，而无法与PVST配合使用。在与MSTP CIST配合使用时，CIST上被MSTP阻塞的端口将不能收发GVRP协议报文。有关STP、RSTP、MSTP CIST和PVST的详细介绍，请参见“二层技术-以太网交换配置指导”中的“生成树”。

l 建议不要同时启用远程端口镜像功能和GVRP功能，否则GVRP可能将远程镜像VLAN注册到不希望的端口上，此时在镜像目的端口就会收到很多不必要的报文。有关端口镜像的详细介绍，请参见“网络管理和监控配置指导”中的“端口镜像”。

l 在二层聚合接口上启用了GVRP功能后，会同时在二层聚合接口和对应的所有选中成员端口上进行动态VLAN的注册或注销。


1.4 配置GARP定时器

在配置GARP定时器时：

l LeaveAll定时器的配置将对所有端口都生效；

l Hold定时器、Join定时器和Leave定时器的配置只对所配置的端口生效。

表1-4 配置GARP定时器

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
配置LeaveAll定时器 |  | garp timer leaveall timer-value | 可选 缺省情况下，LeaveAll定时器的值为1000厘秒
进入相关视图 | 进入以太网或二层聚合接口视图 | interface interface-type interface-number | 二者必选其一
 | 进入端口组视图 | port-group manual port-group-name
配置Hold定时器 |  | garp timer hold timer-value | 可选 缺省情况下，Hold定时器的值为10厘秒
配置Join定时器 |  | garp timer join timer-value | 可选 缺省情况下，Join定时器的值为20厘秒
配置Leave定时器 |  | garp timer leave timer-value | 可选 缺省情况下，Leave定时器的值为60厘秒

如 表1-5 所示，各GARP定时器的取值范围之间存在着相互制约的关系：

l 当配置某定时器时，如果配置值超出了该定时器当前有效的取值范围，则该配置无效。用户可以通过改变相关定时器的值来重新进行配置。

l 当用户欲恢复各定时器的值为缺省值时，须按照Hold定时器->Join定时器->Leave定时器->LeaveAll定时器的顺序依次恢复。

表1-5 各GARP定时器取值范围间的制约关系

定时器 | 取值下限 | 取值上限
Hold定时器 | 10厘秒 | 小于等于Join定时器值的一半
Join定时器 | 大于等于Hold定时器值的两倍 | 小于Leave定时器值的一半
Leave定时器 | 大于Join定时器值的两倍 | 小于LeaveAll定时器的值
LeaveAll定时器 | 大于所有端口上Leave定时器的值 | 32765厘秒

过小的LeaveAll定时器值可能会影响通过GVRP学习到的动态VLAN的稳定性，建议LeaveAll定时器的取值不要小于其缺省值（即1000厘秒）。


1.5 GVRP显示和维护

在完成上述配置后，在任意视图下执行 display 命令可以显示配置后GARP或GVRP的运行情况，通过查看显示信息验证配置的效果。

在用户视图下执行 reset 命令可以清除GARP的统计信息。

表1-6 GVRP显示和维护

操作 | 命令
显示端口上GARP的统计信息 | display garp statistics [ interface interface-list ] [ | { begin | exclude | include } regular-expression ]
显示端口上各GARP定时器的取值 | display garp timer [ interface interface-list ] [ | { begin | exclude | include } regular-expression ]
显示端口上GVRP本地VLAN的信息 | display gvrp local-vlan interface interface-type interface-number [ | { begin | exclude | include } regular-expression ]
显示端口上指定VLAN内各GVRP状态机的信息 | display gvrp state interface interface-type interface-number vlan vlan-id [ | { begin | exclude | include } regular-expression ]
显示Trunk端口上GVRP的统计信息 | display gvrp statistics [ interface interface-list ] [ | { begin | exclude | include } regular-expression ]
显示GVRP的全局状态信息 | display gvrp status [ | { begin | exclude | include } regular-expression ]
显示端口上当前的动态VLAN操作信息 | display gvrp vlan-operation interface interface-type interface-number [ | { begin | exclude | include } regular-expression ]
清除端口上GARP的统计信息 | reset garp statistics [ interface interface-list ]


1.6 GVRP典型配置举例

1.6.1 GVRP Normal注册模式配置举例

1. 组网需求

l Device A和Device B分别通过各自的端口Ethernet1/0/1相连。

l 通过启用GVRP功能，并配置GVRP的注册模式为Normal模式，来实现Device A和Device B之间所有动态和静态VLAN的注册和注销。

2. 组网图

图1-3 GVRP Normal注册模式配置组网图

3. 配置步骤

(1) 配置Device A

# 全局使能GVRP功能。

<DeviceA> system-view

[DeviceA] gvrp

# 将端口Ethernet1/0/1配置为Trunk端口，并允许所有VLAN通过。

[DeviceA] interface ethernet 1/0/1

[DeviceA-Ethernet1/0/1] port link-type trunk

[DeviceA-Ethernet1/0/1] port trunk permit vlan all

# 在端口Ethernet1/0/1上使能GVRP功能。

[DeviceA-Ethernet1/0/1] gvrp

[DeviceA-Ethernet1/0/1] quit

# 配置静态VLAN 2。

[DeviceA] vlan 2

[DeviceA-vlan2] quit

(2) 配置Device B

# 使能全局的GVRP功能。

<DeviceB> system-view

[DeviceB] gvrp

# 将端口Ethernet1/0/1配置为Trunk端口，并允许所有VLAN通过。

[DeviceB] interface ethernet 1/0/1

[DeviceB-Ethernet1/0/1] port link-type trunk

[DeviceB-Ethernet1/0/1] port trunk permit vlan all

# 在端口Ethernet1/0/1上使能GVRP功能。

[DeviceB-Ethernet1/0/1] gvrp

[DeviceB-Ethernet1/0/1] quit

# 配置静态VLAN 3。

[DeviceB] vlan 3

[DeviceB-vlan3] quit

(3) 检验配置效果

通过使用 display gvrp local-vlan 命令可以查看端口上GVRP本地VLAN的信息，例如：

# 查看Device A的端口Ethernet1/0/1上GVRP本地VLAN的信息。

[DeviceA] display gvrp local-vlan interface ethernet 1/0/1

Following VLANs exist in GVRP local database:

1(default),2-3

由此可见，VLAN 1的信息、在本设备上创建VLAN 2的静态VLAN信息，以及在Device B上创建VLAN 3的动态VLAN信息都已通过GVRP协议进行了注册。

# 查看Device B的端口Ethernet1/0/1上GVRP本地VLAN的信息。

[DeviceB] display gvrp local-vlan interface ethernet 1/0/1

Following VLANs exist in GVRP local database:

1(default),2-3

由此可见，VLAN 1的信息、在本设备上创建VLAN 3的静态VLAN信息，以及在Device A上创建VLAN 2的动态VLAN信息都已通过GVRP协议进行了注册。

1.6.2 GVRP Fixed注册模式配置举例

1. 组网需求

l Device A和Device B分别通过各自的端口Ethernet1/0/1相连。

l 通过启用GVRP功能，并配置GVRP的注册模式为Fixed模式，来实现Device A和Device B之间所有静态VLAN的注册和注销。

2. 组网图

图1-4 GVRP Fixed注册模式配置组网图

3. 配置步骤

(1) 配置Device A

# 全局使能GVRP功能。

<DeviceA> system-view

[DeviceA] gvrp

# 将端口Ethernet1/0/1配置为Trunk端口，并允许所有VLAN通过。

[DeviceA] interface ethernet 1/0/1

[DeviceA-Ethernet1/0/1] port link-type trunk

[DeviceA-Ethernet1/0/1] port trunk permit vlan all

# 在端口Ethernet1/0/1上使能GVRP功能，并配置其注册模式为Fixed模式。

[DeviceA-Ethernet1/0/1] gvrp

[DeviceA-Ethernet1/0/1] gvrp registration fixed

[DeviceA-Ethernet1/0/1] quit

# 配置静态VLAN 2。

[DeviceA] vlan 2

[DeviceA-vlan2] quit

(2) 配置Device B

# 使能全局的GVRP功能。

<DeviceB> system-view

[DeviceB] gvrp

# 将端口Ethernet1/0/1配置为Trunk端口，并允许所有VLAN通过。

[DeviceB] interface ethernet 1/0/1

[DeviceB-Ethernet1/0/1] port link-type trunk

[DeviceB-Ethernet1/0/1] port trunk permit vlan all

# 在端口Ethernet1/0/1上使能GVRP功能，并配置其注册模式为Fixed模式。

[DeviceB-Ethernet1/0/1] gvrp

[DeviceB-Ethernet1/0/1] gvrp registration fixed

[DeviceB-Ethernet1/0/1] quit

# 配置静态VLAN 3。

[DeviceB] vlan 3

[DeviceB-vlan3] quit

(3) 检验配置效果

通过使用 display gvrp local-vlan 命令可以查看端口上GVRP本地VLAN的信息，例如：

# 查看Device A的端口Ethernet1/0/1上GVRP本地VLAN的信息。

[DeviceA] display gvrp local-vlan interface ethernet 1/0/1

Following VLANs exist in GVRP local database:

1(default), 2

由此可见，VLAN 1的信息以及在本设备上创建VLAN 2的静态VLAN信息已通过GVRP协议进行了注册，而在Device B上创建VLAN 3的动态VLAN信息并未通过GVRP协议进行注册。

# 查看Device B的端口Ethernet1/0/1上GVRP本地VLAN的信息。

[DeviceB] display gvrp local-vlan interface ethernet 1/0/1

Following VLANs exist in GVRP local database:

1(default), 3

由此可见，VLAN 1的信息以及在本设备上创建VLAN 3的静态VLAN信息已通过GVRP协议进行了注册，而在Device A上创建VLAN 2的动态VLAN信息并未通过GVRP协议进行注册。

1.6.3 GVRP Forbidden注册模式配置举例

1. 组网需求

l Device A和Device B分别通过各自的端口Ethernet1/0/1相连。

l 通过启用GVRP功能，并配置GVRP的注册模式为Forbidden模式，来阻止Device A和Device B之间除VLAN 1以外所有VLAN的注册和注销。

2. 组网图

图1-5 GVRP Forbidden注册模式配置组网图

3. 配置步骤

(1) 配置Device A

# 全局使能GVRP功能。

<DeviceA> system-view

[DeviceA] gvrp

# 将端口Ethernet1/0/1配置为Trunk端口，并允许所有VLAN通过。

[DeviceA] interface ethernet 1/0/1

[DeviceA-Ethernet1/0/1] port link-type trunk

[DeviceA-Ethernet1/0/1] port trunk permit vlan all

# 在端口Ethernet1/0/1上使能GVRP功能，并配置其注册模式为Forbidden模式。

[DeviceA-Ethernet1/0/1] gvrp

[DeviceA-Ethernet1/0/1] gvrp registration forbidden

[DeviceA-Ethernet1/0/1] quit

# 配置静态VLAN 2。

[DeviceA] vlan 2

[DeviceA-vlan2] quit

(2) 配置Device B

# 使能全局GVRP。

<DeviceB> system-view

[DeviceB] gvrp

# 将端口Ethernet1/0/1配置为Trunk端口，并允许所有VLAN通过。

[DeviceB] interface ethernet 1/0/1

[DeviceB-Ethernet1/0/1] port link-type trunk

[DeviceB-Ethernet1/0/1] port trunk permit vlan all

# 在端口Ethernet1/0/1上使能GVRP功能，并配置其注册模式为Forbidden模式。

[DeviceB-Ethernet1/0/1] gvrp

[DeviceB-Ethernet1/0/1] gvrp registration forbidden

[DeviceB-Ethernet1/0/1] quit

# 配置静态VLAN 3。

[DeviceB] vlan 3

[DeviceB-vlan3] quit

(3) 检验配置效果

通过使用 display gvrp local-vlan 命令可以查看端口上GVRP本地VLAN的信息，例如：

# 查看Device A的端口Ethernet1/0/1上GVRP本地VLAN的信息。

[DeviceA] display gvrp local-vlan interface ethernet 1/0/1

Following VLANs exist in GVRP local database:

1(default)

由此可见，除VLAN 1的信息外，在本设备上创建VLAN 2的静态VLAN信息，以及在Device B上创建VLAN 3的动态VLAN信息都未通过GVRP协议进行注册。

# 查看Device B的端口Ethernet1/0/1上GVRP本地VLAN的信息。

[DeviceB] display gvrp local-vlan interface ethernet 1/0/1

Following VLANs exist in GVRP local database:

1(default)

由此可见，除VLAN 1的信息外，在本设备上创建VLAN 3的静态VLAN信息，以及在Device A上创建VLAN 2的动态VLAN信息都未通过GVRP协议进行注册。


1 QinQ配置

相关链接

  • 1.1 QinQ简介
  • 1.2 QinQ配置任务简介
  • 1.3 配置基本QinQ功能
  • 1.4 配置灵活QinQ功能
  • 1.5 配置VLAN Tag的TPID值
  • 1.6 QinQ典型配置举例
父主题： 10-QinQ配置


1.1 QinQ简介

QinQ是802.1Q in 802.1Q的简称，它是基于IEEE 802.1Q技术的一种二层隧道协议，通过将用户的私网报文封装上外层VLAN Tag，使其携带两层VLAN Tag穿越运营商的骨干网络（又称公网），从而为用户提供了一种比较简单的二层VPN隧道技术，也使运营商能够利用一个VLAN为包含多个VLAN的用户网络提供服务成为了可能。

1.1.1 QinQ的产生背景和优点

IEEE 802.1Q定义的VLAN ID域只有12个比特，最多可以表示4094个VLAN。但在实际应用中，尤其是在城域网中，需要大量的VLAN来隔离用户，4094个VLAN远远不能满足需求。

QinQ使整个网络最多可提供4094×4094个VLAN，从而满足了城域网对VLAN数量的需求。它具备以下优点：

l 缓解公网VLAN ID资源日益紧缺的问题。

l 用户可以规划自己的私网VLAN ID，不会导致与公网VLAN ID冲突。

l 为小型城域网和企业网提供了一种简单、灵活的二层VPN解决方案。

l 当运营商升级网络时，用户网络不必更改原有配置，使用户网络具有了较强的独立性。

1.1.2 QinQ的实现原理

在公网的传输过程中，设备只根据外层VLAN Tag转发报文，并将报文的源MAC地址表项学习到外层VLAN Tag所在VLAN的MAC地址表中，而用户的私网VLAN Tag将被当作报文的数据部分进行传输。

图1-1 QinQ典型应用组网图

如图1-1 所示，用户网络A和B的私网VLAN分别为VLAN 1～10和VLAN 1～20。运营商为用户网络A和B分配的公网VLAN分别为VLAN 3和VLAN 4。当用户网络A和B中带VLAN Tag的报文进入运营商网络时，报文外面就会被分别封装上VLAN 3和VLAN 4的VLAN Tag。这样，来自不同用户网络的报文在运营商网络中传输时被完全分开，即使这些用户网络各自的VLAN范围存在重叠，在运营商网络中传输时也不会产生冲突。当报文穿过运营商网络，到达运营商网络另一侧PE设备后，报文会被剥离运营商网络为其添加的公网VLAN Tag，然后再传送给用户网络的CE设备。

1.1.3 QinQ的报文结构

如图1-2 所示，QinQ报文在运营商网络中传输时带有双层VLAN Tag

l 内层VLAN Tag：为用户的私网VLAN Tag，对应图中的Customer VLAN Tag，依靠该Tag在私网中传送QinQ报文。

l 外层VLAN Tag：为运营商分配给用户的公网VLAN Tag，对应图中的Service VLAN Tag，依靠该Tag在公网中传送QinQ报文，内层VLAN Tag在公网中被屏蔽。

图1-2 QinQ的报文结构

接口的MTU（Maximum Transmission Unit，最大传输单元）值默认为1500字节。由于为报文加上外层VLAN Tag后，报文长度将增加4个字节，因此建议用户适当增加运营商网络中各接口的MTU值（至少为1504字节）。有关接口MTU值的相关配置，请参见“二层技术-以太网交换配置指导”中的“以太网端口”。

1.1.4 QinQ的实现方式

QinQ的实现方式可分为以下两种：

1. 基本QinQ

基本QinQ是基于端口方式实现的。当端口上配置了基本QinQ功能后，不论从该端口收到报文是否带有VLAN Tag，设备都会为该报文打上本端口缺省VLAN的Tag：

l 如果收到的是带有VLAN Tag的报文，该报文就成为带双Tag的报文；

l 如果收到的是不带VLAN Tag的报文，该报文就成为带有本端口缺省VLAN Tag的报文。

2. 灵活QinQ

灵活QinQ是基于端口与VLAN相结合的方式实现的，它对QinQ的功能进行了扩展，是对QinQ的一种更灵活的实现。灵活QinQ除了能实现所有基本QinQ的功能外，对于从同一个端口收到的报文，还可以根据VLAN的不同进行不同的操作，包括：

l 为具有不同内层VLAN ID的报文添加不同的外层VLAN Tag。

l 根据报文内层VLAN的802.1p优先级标记外层VLAN的802.1p优先级。

l 在添加外层VLAN Tag的同时，还可修改内层的VLAN ID。

通过使用灵活QinQ技术，在能够隔离运营商网络和用户网络的同时，又能够提供丰富的业务特性和更加灵活的组网能力。

1.1.5 VLAN Tag的TPID值可调功能

如图1-3 所示，是IEEE802.1Q协议定义的以太网帧的VLAN Tag结构，TPID（Tag Protocol Identifier，标签协议标识符）就是VLAN Tag中的一个字段，用于表示VLAN Tag的协议类型，其缺省取值为0x8100。

图1-3 以太网帧的VLAN Tag结构

TPID值可以用来判断报文中是否携带有VLAN Tag，例如：在设备上配置用户VLAN Tag和运营商VLAN Tag中携带的TPID值分别为0x8200和0x9100，而如果收到的报文实际携带的内、外层VLAN Tag的TPID值分别为0x8100和0x9100，设备就会认为该报文只携带运营商VLAN Tag，而没有携带用户VLAN Tag。

第三方厂商的设备可能将QinQ报文外层VLAN Tag的TPID设为不同的值。为了与这些厂商的设备兼容，用户可以通过修改TPID值，使发送到公网中的QinQ报文携带的TPID值与第三方厂商的相同，从而实现与这些厂商的设备互通。

由于TPID字段在以太网报文中的位置与不带VLAN Tag的报文中协议类型字段的位置相同，因此为了避免给报文转发和接收造成混乱，不允许将TPID值配置为 表1-1 中列举的常用协议类型值。

表1-1 常用协议类型值

协议类型 | 协议类型值
ARP | 0x0806
PUP | 0x0200
RARP | 0x8035
IP | 0x0800
IPv6 | 0x86DD
PPPoE | 0x8863/0x8864
MPLS | 0x8847/0x8848
IPX/SPX | 0x8137
IS-IS | 0x8000
LACP | 0x8809
802.1X | 0x888E
集群 | 0x88A7
设备保留 | 0xFFFD/0xFFFE/0xFFFF

1.1.6 协议规范

与QinQ相关的协议规范有：

l IEEE 802.1Q：IEEE standard for local and metropolitan area networks: Virtual Bridged Local Area Networks


1.2 QinQ配置任务简介

表1-2 QinQ配置任务简介

配置任务 |  | 说明 | 详细配置
配置基本QinQ功能 | 使能基本QinQ功能 | 必选 | 1.3.1
 | 配置VLAN透传功能 | 可选 | 1.3.2
配置灵活QinQ功能 | 配置外层VLAN Tag添加策略 | 三者至少选其一 | 1.4.1
 | 配置内、外层VLAN Tag中802.1p优先级的映射关系 |  | 1.4.2
 | 配置内层VLAN ID替换关系 |  | 1.4.3
配置VLAN Tag的TPID值 |  | 可选 | 1.5

l QinQ功能只需在运营商网络进行配置，用户网络不需进行配置。

l 对于QinQ的相关配置来说，以太网端口视图下的配置只对当前端口有效；二层聚合接口视图下的配置对当前接口及其对应聚合组中的所有成员端口都有效；端口组视图下的配置对当前端口组中的所有端口有效。

l 所有的QinQ相关配置都不能在镜像反射端口上进行配置。有关镜像反射端口的详细介绍，请参见“网络管理和监控配置指导”中的“端口镜像”。

l 开启基本QinQ的端口，需要配置允许端口的缺省VLAN通过，配置灵活QinQ功能的端口，需要配置允许QinQ外层VLAN通过。


1.3 配置基本QinQ功能

1.3.1 使能基本QinQ功能

使能了基本QinQ功能的端口将为其收到的报文添加新的VLAN Tag，该VLAN Tag即该端口缺省VLAN的Tag。

表1-3 使能基本QinQ功能

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
进入相应视图 | 进入二层以太网接口或二层聚合接口视图 | interface interface-type interface-number | 二者必选其一
 | 进入端口组视图 | port-group manual port-group-name
使能端口的基本QinQ功能 |  | qinq enable | 必选 缺省情况下，端口的基本QinQ功能处于关闭状态

1.3.2 配置VLAN透传功能

端口上使能了基本QinQ功能后，从该端口收到的报文就会被打上本端口缺省VLAN的Tag。而VLAN透传功能则可使端口在收到带有指定VLAN Tag的报文后，不为其添加外层VLAN Tag而直接在运营商网络中传输。

表1-4 配置VLAN透传功能

操作 |  |  | 命令 | 说明
进入系统视图 |  |  | system-view | -
进入相应视图 | 进入二层以太网端口视图或二层聚合接口视图 |  | interface interface-type interface-number | 二者必选其一
 | 进入端口组视图 |  | port-group manual port-group-name
配置端口的链路类型 |  |  | port link-type { hybrid | trunk } | -
配置端口允许透传VLAN和QinQ外层VLAN通过 |  | 当端口类型为Hybrid端口 | port hybrid vlan vlan-id-list { tagged | untagged } | 二者必选其一
 |  | 当端口类型为Trunk端口 | port trunk permit vlan { vlan-id-list | all }
使能端口的基本QinQ功能 |  |  | qinq enable | 必选 缺省情况下，端口的基本QinQ功能处于关闭状态
配置端口的VLAN透传功能 |  |  | qinq transparent-vlan vlan-list | 必选 缺省情况下，端口没有配置VLAN透传功能

l 配置VLAN透传功能时，还需在报文传输路径的所有设备上都配置允许透传的VLAN通过。

l 配置了端口对指定VLAN的报文进行透传后，请勿在该端口上对这些VLAN再进行VLAN映射的相关配置。有关VLAN映射的详细介绍，请参见“二层技术-以太网交换配置指导”中的“VLAN映射”。


1.4 配置灵活QinQ功能

1.4.1 配置外层VLAN Tag添加策略

基本QinQ功能添加的外层VLAN Tag是端口缺省VLAN的Tag，灵活的QinQ功能则可以为不同的内层VLAN Tag添加不同的外层VLAN Tag。本系列交换机的灵活QinQ功能通过QoS策略的方式实现，通过配置匹配报文原有VLAN Tag的流分类和封装外层VLAN Tag的流行为，并将其在QoS策略中进行关联，然后应用到连接用户的端口，即可以实现根据报文内层VLAN封装外层VLAN Tag的功能。

表1-5 配置外层VLAN Tag的添加策略

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
创建类并进入类视图 |  | traffic classifier classifier-name [ operator { and | or } ] | 必选 缺省情况下，类视图下各规则之间的关系为 and，即逻辑与
配置匹配报文的规则，即指定报文的内层VLAN ID |  | if-match customer-vlan-id vlan-id-list | 必选
退出至系统视图 |  | quit | -
创建流行为并进入流行为视图 |  | traffic behavior behavior-name | 必选
定义流行为，即指定为报文封装的外层VLAN ID |  | nest top-most vlan-id vlan-id | 必选
退出至系统视图 |  | quit | -
创建QoS策略并进入QoS策略视图 |  | qos policy policy-name | 必选
将之前定义的流分类和指定的流行为进行绑定，组成QoS策略 |  | classifier classifier-name behavior behavior-name | 必选
退出至系统视图 |  | quit | -
进入连接用户的以太网端口视图或端口组视图 | 进入以太网端口视图 | interface interface-type interface-number | 二者必选其一
 | 进入端口组视图 | port-group manual port-group-name
开启端口的基本QinQ功能 |  | qinq enable | 必选
在端口的入方向应用QoS策略 |  | qos apply policy policy-name inbound | 必选

l 开启灵活QinQ前必须先配置端口的基本QinQ功能，灵活QinQ的优先级高于基本QinQ，即当端口接收的报文不能匹配流分类规则的情况下，才根据基本QinQ的功能封装外层VLAN Tag。

l 关于QoS策略的更多详细信息，请参见“ACL和QoS配置指导”中的“QoS配置方式”。

1.4.2 配置内、外层VLAN Tag中802.1p优先级的映射关系

本系列交换机可以通过QoS策略来实现以下两种内、外层VLAN Tag的802.1p优先级映射功能：

l 根据内层802.1p优先级或内层VLAN ID来标记外层VLAN Tag中的802.1p优先级

l 将内层802.1p优先级复制到外层VLAN Tag中的802.1p优先级

表1-6 配置内外层VLAN标签的802.1p优先级映射关系

操作 |  |  |  | 命令 | 说明
进入系统视图 |  |  |  | system-view | -
创建类并进入类视图 |  |  |  | traffic classifier classifier-name [ operator { and | or } ] | 必选 缺省情况下，类视图下各规则之间的关系为 and，即逻辑与
配置匹配报文的规则 | 配置内层VLAN作为匹配规则 |  |  | if-match customer-vlan-id vlan-id-list | 二者选其一
 | 配置内层标签优先级作为匹配规则 |  |  | if-match customer-dot1p 8021p-list
退出至系统视图 |  |  |  | quit | -
创建流行为并进入流行为视图 |  |  |  | traffic behavior behavior-name | 必选
定义流行为，指定报文外层标签的优先级 |  |  | 定义流行为，重标记外层VLAN Tag中的802.1p优先级 | remark dot1p 8021p | 二者必选其一 用户可以根据需要选择不同的动作，实现内外层802.1p优先级的映射或复制功能
 |  |  | 将内层802.1p优先级复制到外层VLAN Tag中的802.1p优先级 | remark dot1p customer-dot1p-trust
退出至系统视图 |  |  |  | quit | -
创建QoS策略并进入QoS策略视图 |  |  |  | qos policy policy-name | 必选
将之前定义的流分类和指定的流行为进行绑定，组成QoS策略 |  |  |  | classifier classifier-name behavior behavior-name | 必选
退出至系统视图 |  |  |  | quit | -
进入连接用户网络的以太网端口视图或端口组视图 |  | 进入以太网端口视图 |  | interface interface-type interface-number | 二者必选其一
 |  | 进入端口组视图 |  | port-group manual port-group-name
开启端口的基本QinQ功能 |  |  |  | qinq enable | 必选
在端口的入方向应用QoS策略 |  |  |  | qos apply policy policy-name inbound | 必选

l 在S3600V2系列交换机上，如果没有使用上述两种方法重标记报文外层VLAN Tag的802.1p优先级，那么开启了QinQ或灵活QinQ的端口在信任报文的优先级的情况下，为报文封装外层VLAN Tag时，会将内层VLAN Tag的802.1p优先级复制到外层VLAN Tag的802.1p优先级，在不信任报文的优先级的情况下，会将接收报文的端口的端口优先级作为外层VLAN Tag的802.1p优先级（如果没有配置端口优先级，外层VLAN Tag的802.1p优先级为端口优先级缺省值0）。

l 有关优先级信任模式的配置，请参见“ACL和QoS配置指导”中的“优先级映射配置”。

1.4.3 配置内层VLAN ID替换关系

基本QinQ功能在为报文添加外层VLAN Tag时，不修改报文的内层VLAN ID。而灵活QinQ功能则可以通过本配置修改报文的内层VLAN ID，即在添加外层VLAN Tag的同时对内层VLAN ID进行替换。

请在设备连接运营商网络侧的端口上进行此配置。

表1-7 配置内层VLAN ID替换

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
创建类并进入类视图 |  | traffic classifier classifier-name [ operator and ] | 必选 缺省情况下，类视图下各规则之间的关系为 and，即逻辑与
配置匹配报文的规则，指定报文的内层VLAN ID |  | if-match customer-vlan-id vlan-id-list | 必选
配置匹配报文的规则，指定报文的外层VLAN ID |  | if-match service-vlan-id vlan-id | 必选
退出至系统视图 |  | quit | -
创建流行为并进入流行为视图 |  | traffic behavior behavior-name | 必选
定义流行为，即修改报文内层VLAN ID |  | remark customer-vlan-id vlan-id | 必选
退出至系统视图 |  | quit | -
创建QoS策略并进入QoS策略视图 |  | qos policy policy-name | 必选
将之前定义的流分类和指定的流行为进行绑定，组成QoS策略 |  | classifier classifier-name behavior behavior-name | 必选
退出至系统视图 |  | quit | -
进入连接运营商网络的以太网端口视图或端口组视图 | 进入以太网端口视图 | interface interface-type interface-number | 二者必选其一
 | 进入端口组视图 | port-group manual port-group-name
在端口的出方向应用QoS策略 |  | qos apply policy policy-name outbound | 必选


1.5 配置VLAN Tag的TPID值

表1-8 配置VLAN Tag的TPID值

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
配置用户网络中的TPID值 |  | qinq ethernet-type customer-tag hex-value | 可选 缺省情况下，用户网络中的TPID值为0x8100
进入连接运营商网络的以太网端口视图、二层聚合端口视图或端口组视图 | 进入以太网端口视图或二层聚合端口组视图 | interface interface-type interface-number | 二者必选其一
 | 进入端口组视图 | port-group manual port-group-name
配置运营商网络中的TPID值 |  | qinq ethernet-type service-tag hex-value | 可选 缺省情况下，运营商网络的TPID值为0x8100

运营商网络中的TPID值和QinQ功能不能在端口上同时配置。


1.6 QinQ典型配置举例

1.6.1 基本QinQ配置举例

1. 组网需求

l 公司A的两个分支机构Site 1和Site 2通过运营商网络进行通信，该公司各业务使用的VLAN为VLAN 10～70；公司B的两个分支机构Site 3和Site 4也通过运营商网络进行通信，该公司各业务使用的VLAN为VLAN 30～90。

l PE 1和PE 2为运营商网络的边缘设备，且二者通过TPID值为0x8200的第三方厂商设备进行连接。

l 通过配置，利用运营商提供的VLAN 100使公司A的两个分支机构之间实现互通，利用运营商提供的VLAN 200使公司B的两个分支机构之间实现互通。

2. 组网图

图1-4 基本QinQ配置组网图

3. 配置步骤

用户必须通过配置保证运营商网络中的设备之间允许QinQ报文通过。

(1) 配置PE 1

l 配置端口Ethernet1/0/1

# 配置端口为Trunk端口，且允许VLAN 100的报文通过。

<PE1> system-view

[PE1] interface ethernet 1/0/1

[PE1-Ethernet1/0/1] port link-type trunk

[PE1-Ethernet1/0/1] port trunk permit vlan 100

# 配置端口的缺省VLAN为VLAN 100。

[PE1-Ethernet1/0/1] port trunk pvid vlan 100

# 使能端口的基本QinQ功能。

[PE1-Ethernet1/0/1] qinq enable

[PE1-Ethernet1/0/1] quit

l 配置端口Ethernet1/0/2

# 配置端口为Trunk端口，且允许VLAN 100和VLAN 200的报文通过。

[PE1] interface ethernet 1/0/2

[PE1-Ethernet1/0/2] port link-type trunk

[PE1-Ethernet1/0/2] port trunk permit vlan 100 200

# 配置端口添加的外层VLAN Tag的TPID值为0x8200。

[PE1-Ethernet1/0/2] qinq ethernet-type service-tag 8200

[PE1-Ethernet1/0/2] quit

l 配置端口Ethernet1/0/3

# 配置端口为Trunk端口，且允许VLAN 200的报文通过。

[PE1] interface ethernet 1/0/3

[PE1-Ethernet1/0/3] port link-type trunk

[PE1-Ethernet1/0/3] port trunk permit vlan 200

# 配置端口的缺省VLAN为VLAN 200。

[PE1-Ethernet1/0/3] port trunk pvid vlan 200

# 使能端口的基本QinQ功能。

[PE1-Ethernet1/0/3] qinq enable

[PE1-Ethernet1/0/3] quit

(2) 配置PE 2

l 配置端口Ethernet1/0/1

# 配置端口为Trunk端口，且允许VLAN 200的报文通过。

<PE2> system-view

[PE2] interface ethernet 1/0/1

[PE2-Ethernet1/0/1] port link-type trunk

[PE2-Ethernet1/0/1] port trunk permit vlan 200

# 配置端口的缺省VLAN为VLAN 200。

[PE2-Ethernet1/0/1] port trunk pvid vlan 200

# 使能端口的基本QinQ功能。

[PE2-Ethernet1/0/1] qinq enable

[PE2-Ethernet1/0/1] quit

l 配置端口Ethernet1/0/2

# 配置端口为Trunk端口，且允许VLAN 100和VLAN 200的报文通过。

[PE2] interface ethernet 1/0/2

[PE2-Ethernet1/0/2] port link-type trunk

[PE2-Ethernet1/0/2] port trunk permit vlan 100 200

# 配置端口添加的外层VLAN Tag的TPID值为0x8200。

[PE2-Ethernet1/0/2] qinq ethernet-type service-tag 8200

[PE2-Ethernet1/0/2] quit

l 配置端口Ethernet1/0/3

# 配置端口为Trunk端口，且允许VLAN 100的报文通过。

[PE2] interface ethernet 1/0/3

[PE2-Ethernet1/0/3] port link-type trunk

[PE2-Ethernet1/0/3] port trunk permit vlan 100

# 配置端口的缺省VLAN为VLAN 100。

[PE2-Ethernet1/0/3] port trunk pvid vlan 100

# 使能端口的基本QinQ功能。

[PE2-Ethernet1/0/3] qinq enable

[PE2-Ethernet1/0/3] quit

(3) 配置第三方厂商设备

对于PE 1与PE 2之间的第三方厂商设备，其关键配置如下：在连通PE 1与PE 2的端口上，都允许VLAN 100和200的报文携带VLAN Tag通过。

1.6.2 VLAN透传配置举例

1. 组网需求

l 某公司的两个分支机构Site 1和Site 2通过运营商网络进行通信，该公司各业务使用的VLAN为VLAN 10～50。

l PE 1和PE 2为运营商网络的边缘设备，且二者通过TPID值为0x8200的第三方厂商设备进行连接。

l 通过配置，使这两个分支机构之间不利用运营商提供的VLAN就能实现互通。

2. 组网图

图1-5 VLAN透传配置组网图

3. 配置步骤

用户必须通过配置保证运营商网络中的设备之间允许QinQ报文通过。

(1) 配置PE 1

l 配置端口Ethernet1/0/1

# 配置端口为Trunk端口，且允许VLAN 10～50的报文通过。

<PE1> system-view

[PE1] interface ethernet 1/0/1

[PE1-Ethernet1/0/1] port link-type trunk

[PE1-Ethernet1/0/1] port trunk permit vlan 10 to 50

# 使能端口的基本QinQ功能。

[PE1-Ethernet1/0/1] qinq enable

# 配置端口对VLAN 10～50的报文进行透传。

[PE1-Ethernet1/0/1] qinq transparent-vlan 10 to 50

[PE1-Ethernet1/0/1] quit

l 配置端口Ethernet1/0/2

# 配置端口为Trunk端口，且允许VLAN 10～50的报文通过。

[PE1] interface ethernet 1/0/2

[PE1-Ethernet1/0/2] port link-type trunk

[PE1-Ethernet1/0/2] port trunk permit vlan 10 to 50

# 配置端口添加的外层VLAN Tag的TPID值为0x8200。

[PE1-Ethernet1/0/2] qinq ethernet-type service-tag 8200

[PE1-Ethernet1/0/2] quit

(2) 配置PE 2

l 配置端口Ethernet1/0/1

# 配置端口为Trunk端口，且允许VLAN 10～50的报文通过。

<PE2> system-view

[PE2] interface ethernet 1/0/1

[PE2-Ethernet1/0/1] port link-type trunk

[PE2-Ethernet1/0/1] port trunk permit vlan 10 to 50

# 使能端口的基本QinQ功能。

[PE2-Ethernet1/0/1] qinq enable

# 配置端口对VLAN 10～50的报文进行透传。

[PE2-Ethernet1/0/1] qinq transparent-vlan 10 to 50

[PE2-Ethernet1/0/1] quit

l 配置端口Ethernet1/0/2

# 配置端口为Trunk端口，且允许VLAN 10～50的报文通过。

[PE2] interface ethernet 1/0/2

[PE2-Ethernet1/0/2] port link-type trunk

[PE2-Ethernet1/0/2] port trunk permit vlan 10 to 50

# 配置端口添加的外层VLAN Tag的TPID值为0x8200。

[PE2-Ethernet1/0/2] qinq ethernet-type service-tag 8200

[PE2-Ethernet1/0/2] quit

(3) 配置第三方厂商设备

对于PE 1与PE 2之间的第三方厂商设备，其关键配置如下：在连通PE 1与PE 2的端口上，都允许VLAN 10～50的报文携带VLAN Tag通过。

1.6.3 灵活QinQ配置举例一

1. 组网需求

l 某公司的两个分支机构Site 1和Site 2通过运营商网络进行通信，该公司的语音和数据业务分别使用VLAN 10和VLAN 20加以区分。

l PE 1和PE 2为运营商网络的边缘设备，且二者通过TPID值为0x8200的第三方厂商设备进行连接。

l 通过配置，利用运营商提供的VLAN 100和VLAN 200分别使这两个分支机构间的语音和数据业务实现互通。

2. 组网图

图1-6 灵活QinQ配置组网图一

3. 配置步骤

用户必须通过配置保证运营商网络中的设备之间允许QinQ报文通过。

(1) 配置PE 1

l 配置端口Ethernet1/0/1

# 配置端口为Hybrid端口，且允许VLAN 100和200的报文不带Tag通过。

<PE1> system-view

[PE1] interface ethernet 1/0/1

[PE1-Ethernet1/0/1] port link-type hybrid

[PE1-Ethernet1/0/1] port hybrid vlan 100 200 untagged

[PE1-Ethernet1/0/1] quit

# 创建流分类规则，将来自Site 1的VLAN10的报文定义为“A10”类。

[PE1] traffic classifier A10

[PE1-classifier-A10] if-match customer-vlan-id 10

[PE1-classifier-A10] quit

# 定义流行为，为报文封装VLAN100的外层VLAN Tag，流行为命名为“P100”。

[PE1] traffic behavior P100

[PE1-behavior-P100] nest top-most vlan-id 100

[PE1-behavior-P100] quit

# 与以上配置类似，创建流分类“A20”匹配用户VLAN ID为20的报文，并创建流行为“P200”，为此类报文封装外层VLAN200的Tag。

[PE1] traffic classifier A20

[PE1-classifier-A20] if-match customer-vlan-id 20

[PE1-classifier-A20] quit

[PE1] traffic behavior P200

[PE1-behavior-P200] nest top-most vlan-id 200

[PE1-behavior-P200] quit

# 创建QoS策略，将流分类“A10”和流行为“P100”进行关联，将流分类“A20”和流行为“P200”关联，策略命名为“qinq”。

[PE1] qos policy qinq

[PE1-qospolicy-qinq] classifier A10 behavior P100

[PE1-qospolicy-qinq] classifier A20 behavior P200

[PE1-qospolicy-qinq] quit

# 使能端口的基本QinQ功能。

[PE1] interface ethernet1/0/1

[PE1-Ethernet1/0/1] qinq enable

# 在Ethernet1/0/1端口的接收方向应用“qinq”规则。

[PE1-Ethernet1/0/1] qos apply policy qinq inbound

l 配置端口Ethernet1/0/2

# 配置端口为Trunk端口，且允许VLAN 100和200的报文通过。

[PE1] interface ethernet 1/0/2

[PE1-Ethernet1/0/2] port link-type trunk

[PE1-Ethernet1/0/2] port trunk permit vlan 100 200

# 配置端口添加的外层Tag的TPID值为0x8200。

[PE1-Ethernet1/0/2] qinq ethernet-type service-tag 8200

[PE1-Ethernet1/0/2] quit

(2) 配置PE 2

l 配置端口Ethernet1/0/1

# 配置端口为Hybrid端口，且允许VLAN 100和200的报文不带Tag通过。

<PE2> system-view

[PE2] interface ethernet 1/0/1

[PE2-Ethernet1/0/1] port link-type hybrid

[PE2-Ethernet1/0/1] port hybrid vlan 100 200 untagged

[PE2-Ethernet1/0/1] quit

# 创建流分类规则，将来自Site 2的VLAN10的报文定义为“A10”类。

[PE2] traffic classifier A10

[PE2-classifier-A10] if-match customer-vlan-id 10

[PE2-classifier-A10] quit

# 定义流行为，为报文封装VLAN100的外层VLAN Tag，流行为命名为“P100”。

[PE2] traffic behavior P100

[PE2-behavior-P100] nest top-most vlan-id 100

[PE2-behavior-P100] quit

# 与以上配置类似，创建流分类“A20”匹配用户VLAN ID为20的报文，并创建流行为“P200”，为此类报文封装外层VLAN200的Tag。

[PE2] traffic classifier A20

[PE2-classifier-A20] if-match customer-vlan-id 20

[PE2-classifier-A20] quit

[PE2] traffic behavior P200

[PE2-behavior-P200] nest top-most vlan-id 200

[PE2-behavior-P200] quit

# 创建QoS策略，将流分类“A10”和流行为“P100”进行关联，将流分类“A20”和流行为“P200”关联，策略命名为“qinq”。

[PE2] qos policy qinq

[PE2-qospolicy-qinq] classifier A10 behavior P100

[PE2-qospolicy-qinq] classifier A20 behavior P200

[PE2-qospolicy-qinq] quit

# 使能端口的基本QinQ功能。

[PE2-Ethernet1/0/1] qinq enable

# 在Ethernet1/0/1端口的接收方向应用“qinq”规则。

[PE2-Ethernet1/0/1] qos apply policy qinq inbound

l 配置端口Ethernet1/0/2

# 配置端口为Trunk端口，且允许VLAN 100和200的报文通过。

[PE2] interface ethernet 1/0/2

[PE2-Ethernet1/0/2] port link-type trunk

[PE2-Ethernet1/0/2] port trunk permit vlan 100 200

# 配置端口添加的外层Tag的TPID值为0x8200。

[PE2-Ethernet1/0/2] qinq ethernet-type service-tag 8200

[PE2-Ethernet1/0/2] quit

(3) 配置第三方厂商设备

对于PE 1与PE 2之间的第三方厂商设备，其关键配置如下：在连通PE 1与PE 2的端口上，都允许VLAN 100和200的报文携带VLAN Tag通过。

1.6.4 灵活QinQ配置举例二

1. 组网需求

l 公司A的语音和数据业务分别使用VLAN 10和VLAN 20加以区分，而公司B的语音和数据业务则分别使用VLAN 30和VLAN 40加以区分。随着这两家公司的合并，需要在不改变现有VLAN划分的前提下将其网络进行整合。

l PE 1和PE 2为运营商网络的边缘设备，且二者通过TPID值为0x8200的第三方厂商设备进行连接。

l 通过配置，利用运营商提供的VLAN 100和VLAN 200分别使这两家公司间的语音和数据业务实现互通。

2. 组网图

图1-7 灵活QinQ配置组网图二

3. 配置步骤

用户必须通过配置保证运营商网络中的设备之间允许QinQ报文通过。

(1) 配置PE 1

l 配置端口Ethernet1/0/1

# 配置端口为Hybrid端口，且允许VLAN 100和200的报文不带Tag通过。

<PE1> system-view

[PE1] interface ethernet 1/0/1

[PE1-Ethernet1/0/1] port link-type hybrid

[PE1-Ethernet1/0/1] port hybrid vlan 100 200 untagged

[PE1-Ethernet1/0/1] quit

# 创建流分类规则，将来自VLAN10的报文定义为“A10”类。

[PE1] traffic classifier A10

[PE1-classifier-A10] if-match customer-vlan-id 10

[PE1-classifier-A10] quit

# 定义流行为，为报文封装VLAN100的外层VLAN Tag，流行为命名为“P100”。

[PE1] traffic behavior P100

[PE1-behavior-P100] nest top-most vlan-id 100

[PE1-behavior-P100] quit

# 与以上配置类似，创建流分类“A20”匹配用户VLAN ID为20的报文，并创建流行为“P200”，为此类报文封装外层VLAN200的Tag

[PE1] traffic classifier A20

[PE1-classifier-A20] if-match customer-vlan-id 20

[PE1-classifier-A20] quit

[PE1] traffic behavior P200

[PE1-behavior-P200] nest top-most vlan-id 200

[PE1-behavior-P200] quit

# 创建QoS策略，将流分类“A10”和流行为“P100”进行关联，将流分类“A20”和流行为“P200”关联，策略命名为“qinq”。

[PE1] qos policy qinq

[PE1-qospolicy-qinq] classifier A10 behavior P100

[PE1-qospolicy-qinq] classifier A20 behavior P200

[PE1-qospolicy-qinq] quit

# 使能端口的基本QinQ功能。

[PE1-Ethernet1/0/1] qinq enable

# 在Ethernet1/0/1端口的接收方向应用“qinq”规则。

[PE1-Ethernet1/0/1] qos apply policy qinq inbound

l 配置端口Ethernet1/0/2

# 配置端口为Trunk端口，且允许VLAN 100和200的报文通过。

[PE1] interface ethernet 1/0/2

[PE1-Ethernet1/0/2] port link-type trunk

[PE1-Ethernet1/0/2] port trunk permit vlan 100 200

# 创建流分类规则，将内层VLAN ID是10，外层VLAN ID是100的报文定义为“A100”类。

[PE1] traffic classifier A100

[PE1-classifier-A100] if-match customer-vlan-id 10

[PE1-classifier-A100] if-match service-vlan-id 100

[PE1-classifier-A100] quit

# 定义流行为，修改报文的内层VLAN ID为30，流行为命名为“T100”。

[PE1] traffic behavior T100

[PE1-behavior-T100] remark customer-vlan-id 30

[PE1-behavior-T100] quit

# 创建流分类规则，将内层VLAN ID是20，外层VLAN ID是200的报文定义为“A200”类。

[PE1] traffic classifier A200

[PE1-classifier-A200] if-match customer-vlan-id 20

[PE1-classifier-A200] if-match service-vlan-id 200

[PE1-classifier-A200] quit

# 定义流行为，修改报文的内层VLAN ID为40，流行为命名为“T200”。

[PE1] traffic behavior T200

[PE1-behavior-T200] remark customer-vlan-id 40

[PE1-behavior-T200] quit

# 创建QoS策略，将流分类“A100”和流行为“T100”进行关联，流分类“A200”和流行为“T200”进行关联，策略命名为“sqinq”。

[PE1] qos policy sqinq

[PE1-qospolicy- sqinq] classifier A100 behavior T100

[PE1-qospolicy- sqinq] classifier A200 behavior T200

[PE1-qospolicy- sqinq] quit

# 在Ethernet1/0/2端口的发送方向应用“sqinq”规则。

[PE1-Ethernet1/0/2] qos apply policy sqinq outbound

# 配置端口添加的外层VLAN Tag的TPID值为0x8200。

[PE1-Ethernet1/0/2] qinq ethernet-type service-tag 8200

[PE1-Ethernet1/0/2] quit

(2) 配置PE 2

l 配置端口Ethernet1/0/1

# 配置端口为Hybrid端口，且允许VLAN 100和200的报文不带Tag通过。

<PE2> system-view

[PE2] interface ethernet 1/0/1

[PE2-Ethernet1/0/1] port link-type hybrid

[PE2-Ethernet1/0/1] port hybrid vlan 100 200 untagged

[PE2-Ethernet1/0/1] quit

# 创建流分类规则，将来自VLAN30的报文定义为“A30”类。

[PE2] traffic classifier A30

[PE2-classifier-A30] if-match customer-vlan-id 30

[PE2-classifier-A30] quit

# 定义流行为，为报文封装VLAN100的外层VLAN Tag，流行为命名为“P100”。

[PE2] traffic behavior P100

[PE2-behavior-P100] nest top-most vlan-id 100

[PE2-behavior-P100] quit

# 与以上配置类似，创建流分类“A40”匹配用户VLAN ID为40的报文，并创建流行为“P200”，为此类报文封装外层VLAN200的Tag。

[PE2] traffic classifier A40

[PE2-classifier-A40] if-match customer-vlan-id 40

[PE2-classifier-A40] quit

[PE2] traffic behavior P200

[PE2-behavior-P200] nest top-most vlan-id 200

[PE2-behavior-P200] quit

# 创建QoS策略，将流分类“A30”和流行为“P100”进行关联，将流分类“A40”和流行为“P200”关联，策略命名为“qinq”。

[PE2] qos policy qinq

[PE2-qospolicy-qinq] classifier A30 behavior P100

[PE2-qospolicy-qinq] classifier A40 behavior P200

[PE2-qospolicy-qinq] quit

# 使能端口的基本QinQ功能。

[PE2-Ethernet1/0/1] qinq enable

# 在Ethernet1/0/1端口的接收方向应用“qinq”规则。

[PE2-Ethernet1/0/1] qos apply policy qinq inbound

l 配置端口Ethernet1/0/2

# 配置端口为Trunk端口，且允许VLAN 100和200的报文通过。

[PE2] interface ethernet 1/0/2

[PE2-Ethernet1/0/2] port link-type trunk

[PE2-Ethernet1/0/2] port trunk permit vlan 100 200

# 创建流分类规则，将内层VLAN ID是30，外层VLAN ID是100的报文定义为“A100”类。

[PE2] traffic classifier A100

[PE2-classifier-A100] if-match customer-vlan-id 30

[PE2-classifier-A100] if-match service-vlan-id 100

[PE2-classifier-A100] quit

# 定义流行为，修改报文的内层VLAN ID为10，流行为命名为“T100”。

[PE2] traffic behavior T100

[PE2-behavior-T100] remark customer-vlan-id 10

[PE2-behavior-T100] quit

# 创建流分类规则，将内层VLAN ID是40，外层VLAN ID是200的报文定义为“A200”类。

[PE2] traffic classifier A200

[PE2-classifier-A200] if-match customer-vlan-id 40

[PE2-classifier-A200] if-match service-vlan-id 200

[PE2-classifier-A200] quit

# 定义流行为，修改报文的内层VLAN ID为20，流行为命名为“T200”。

[PE2] traffic behavior T200

[PE2-behavior-T200] remark customer-vlan-id 20

[PE2-behavior-T200] quit

# 创建QoS策略，将流分类“A100”和流行为“T100”进行关联，流分类“A200”和流行为“T200”进行关联，策略命名为“sqinq”。

[PE2] qos policy sqinq

[PE2-qospolicy- sqinq] classifier A100 behavior T100

[PE2-qospolicy- sqinq] classifier A200 behavior T200

[PE2-qospolicy- sqinq] quit

# 在Ethernet1/0/2端口的发送方向应用“sqinq”规则。

[PE2] interface ethernet 1/0/2

[PE2-Ethernet1/0/2] qos apply policy sqinq outbound

# 配置端口添加的外层VLAN Tag的TPID值为0x8200。

[PE2-Ethernet1/0/2] qinq ethernet-type service-tag 8200

[PE2-Ethernet1/0/2] quit

(3) 配置第三方厂商设备

对于PE 1与PE 2之间的第三方厂商设备，其关键配置如下：在连通PE 1与PE 2的端口上，都允许VLAN 100和200的报文携带VLAN Tag通过。


1 VLAN映射配置

相关链接

  • 1.1 VLAN映射简介
  • 1.2 VLAN映射配置任务简介
  • 1.3 配置VLAN映射
  • 1.4 VLAN映射典型配置举例
父主题： 11-VLAN映射配置


1.1 VLAN映射简介

VLAN映射（VLAN Mapping）功能可以修改报文携带的VLAN Tag，提供下面3种映射关系：

l 1:1 VLAN映射：将来自某一特定VLAN的报文所携带的VLAN Tag替换为新的VLAN Tag。

l N:1 VLAN映射：将来自两个或多个VLAN的报文所携带的不同VLAN Tag替换为相同的VLAN Tag。

l 2:2 VLAN映射：将携带有两层VLAN Tag的报文的内、外层VLAN Tag都替换为新的VLAN Tag。

下面将详细介绍这几种映射关系的应用以及工作原理。

1.1.1 1:1和N:1 VLAN映射的应用

如 图1-1 所示，是1:1和N:1 VLAN映射的应用环境，其中用不同的VLAN来承载各家庭用户不同类型的业务（包括PC、VoD和VoIP）。

图1-1 1:1和N:1 VLAN映射应用示意图

为了区分不同的用户，需要在楼道交换机处用不同的VLAN来承载不同用户的相同业务，即进行1:1 VLAN映射，这就要用到大量的VLAN。但汇聚层网络接入设备可提供的VLAN数量有限，因此需要在园区交换机上来进行VLAN的汇聚，用一个VLAN来承载原本由多个VLAN承载的不同用户的相同业务，即进行N:1 VLAN映射。

1.1.2 2:2 VLAN映射的应用

如 图1-2 所示，是2:2 VLAN映射的应用环境，VPN A中处于不同地理位置（Site 1和Site 2）的用户跨越了两个SP（Service Provider，服务提供商）——SP 1和SP 2的网络进行互通。

图1-2 2:2 VLAN映射应用示意图

在图1-2 中，Site 1和Site 2中的用户所在的VLAN分别为VLAN 2和VLAN 3，SP 1和SP 2分配给VPN A的VLAN分别为VLAN 10和VLAN 20。当Site 1中的报文进入SP 1的网络后，SP1通过QinQ或灵活QinQ功能，在报文外层封装上了VLAN 10的VLAN Tag。这样，VPN用户就可以自由规划自己网络中的VLAN ID，而不用担心与SP的VLAN ID相冲突，同时也缓解了SP的网络中VLAN ID紧缺的问题。

当上述报文继续由SP 1的网络进入SP 2的网络后，由于SP 2分配给VPN A的VLAN与SP 1不同，因此需将该报文的外层VLAN Tag替换为VLAN 20的VLAN Tag，同时为了与Site 2中的用户互通，还需将其内层VLAN Tag替换为VLAN 3的VLAN Tag。这种同时修改内、外两层VLAN Tag的过程就是2:2 VLAN映射。

QinQ和灵活QinQ的具体介绍及配置过程请参见“二层技术-以太网交换配置指导”中的“QinQ配置”。

1.1.3 VLAN映射的基本概念

图1-3 VLAN映射基本概念示意图

如 图1-3 所示，为了更好的理解后面的配置过程，此处定义几个概念：

l 上行数据流：从用户网络发往汇聚层网络或SP网络的数据流，都称为上行数据流。

l 下行数据流：从汇聚层网络或SP网络发往用户网络的数据流，都称为下行数据流。

l 上行端口：发送上行数据流和接收下行数据流的端口称为上行端口。

l 下行端口：发送下行数据流和接收上行数据流的端口称为下行端口。

l 上行策略：负责上行数据流VLAN映射规则的QoS策略。

l 下行策略：负责下行数据流VLAN映射规则的QoS策略。

1.1.4 VLAN映射实现方式

1. 1:1 VLAN映射实现方式

图1-4 1:1 VLAN映射实现方式示意图

如 图1-4 所示，1:1 VLAN映射的实现方式如下：

l 对于上行数据流，通过在下行端口上应用上行策略，将报文中CVLAN的VLAN Tag替换为SVLAN的VLAN Tag。

l 对于下行数据流，通过在下行端口上应用下行策略，将报文中SVLAN的VLAN Tag替换为CVLAN的VLAN Tag。

2. N:1 VLAN映射实现方式

图1-5 N:1 VLAN映射实现方式示意图

如 图1-5 所示，N:1 VLAN映射的实现方式如下：

l 对于上行数据流，通过在下行端口上应用上行策略，将来自两个或多个CVLAN的报文所携带的不同VLAN Tag都替换为SVLAN的VLAN Tag。

l 对于下行数据流，通过查找SVLAN对应的DHCP Snooping表项中DHCP客户端的IP地址、MAC地址和CVLAN的绑定表项，将报文中SVLAN的VLAN Tag替换为CVLAN的VLAN Tag。

3. 2:2 VLAN映射实现方式

图1-6 2:2 VLAN映射实现方式示意图

如 图1-6 所示，2:2 VLAN映射的实现方式如下：

l 对于上行数据流，通过在下行端口上应用上行策略，将报文的外层VLAN Tag替换为新的VLAN Tag；通过在上行端口上应用上行策略，将报文的内层VLAN Tag替换为新的VLAN Tag。

l 对于下行数据流，通过在下行端口上应用下行策略，将报文的内、外层VLAN Tag都替换为各自的原始VLAN Tag。

l 有关DHCP Snooping的详细介绍，请参见“三层技术-IP业务配置指导”中的“DHCP Snooping”。

l 有关QoS策略的详细介绍，请参见“ACL和QoS配置指导”中的“QoS配置方式”。


1.2 VLAN映射配置任务简介

用户需要根据网络规划，在不同的设备上进行不同的VLAN映射配置。

表1-1 VLAN映射配置任务简介

配置任务 | 说明 | 详细配置
配置1:1 VLAN映射 | 在 图1-1 所示的组网中，需要在楼道交换机上进行此配置 | 1.3.1
配置N:1 VLAN映射 | 在 图1-1 所示的组网中，需要在园区交换机上进行此配置 | 1.3.2
配置2:2 VLAN映射 | 在 图1-2 所示的组网中，需要在SP 2网络的边缘设备PE 3上进行此配置 | 1.3.3


1.3 配置VLAN映射

1.3.1 配置1:1 VLAN映射

在 图1-1 所示的组网中，需要在楼道交换机上进行1:1 VLAN映射的配置，以便将不同用户的不同业务用不同的VLAN进行隔离。

1. 配置任务简介

表1-2 1:1 VLAN映射配置任务简介

配置任务 | 说明 | 详细配置
配置上行策略 | 必选 | 1.3.1 3.
配置下行策略 | 必选 | 1.3.1 4.
配置下行端口 | 必选 | 1.3.1 5.
配置上行端口 | 必选 | 1.3.1 6.

2. 配置准备

在配置1:1 VLAN映射之前，需完成以下任务：

l 创建好CVLAN和SVLAN，并规划好CVLAN和SVLAN的映射关系。

3. 配置上行策略

通过配置上行策略，将不同用户的不同业务VLAN（CVLAN）映射到不同的VLAN（SVLAN）上。

表1-3 配置上行策略

操作 | 命令 | 说明
进入系统视图 | system-view | -
定义类，并进入类视图 | traffic classifier tcl-name [ operator { and | or } ] | 必选
定义匹配用户不同业务VLAN（CVLAN）的规则 | if-match customer-vlan-id vlan-id | 必选
退回系统视图 | quit | -
定义流行为，并进入流行为视图 | traffic behavior behavior-name | 必选
配置重标记报文的SVLAN | remark service-vlan-id vlan-id | 必选
退回系统视图 | quit | -
定义QoS策略，并进入QoS策略视图 | qos policy policy-name | 必选
为类指定采用的流行为 | classifier tcl-name behavior behavior-name | 必选

4. 配置下行策略

通过配置下行策略，将SVLAN映射回原来的CVLAN上。

表1-4 配置下行策略

操作 | 命令 | 说明
进入系统视图 | system-view | -
定义类，并进入类视图 | traffic classifier tcl-name [ operator { and | or } ] | 必选
定义匹配SVLAN的规则 | if-match service-vlan-id vlan-id | 必选
退回系统视图 | quit | -
定义流行为，并进入流行为视图 | traffic behavior behavior-name | 必选
配置重标记报文的CVLAN | remark customer-vlan-id vlan-id | 必选
退回系统视图 | quit | -
定义QoS策略，并进入QoS策略视图 | qos policy policy-name | 必选
为类指定采用的流行为 | classifier tcl-name behavior behavior-name | 必选

5. 配置下行端口

表1-5 配置下行端口

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入二层以太网端口视图 | interface interface-type interface-number | -
配置端口的链路类型为Trunk类型 | port link-type trunk | 必选 缺省情况下，端口的链路类型为Access类型
允许CVLAN和SVLAN通过当前Trunk端口 | port trunk permit vlan { vlan-id-list | all } | 必选 缺省情况下，Trunk端口只允许VLAN 1通过
使能端口的基本QinQ功能 | qinq enable | 必选 缺省情况下，端口的基本QinQ功能处于关闭状态
在端口的入方向上应用上行策略 | qos apply policy policy-name inbound | 必选
在端口的出方向上应用下行策略 | qos apply policy policy-name outbound | 必选

6. 配置上行端口

表1-6 配置上行端口

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入二层以太网端口视图 | interface interface-type interface-number | -
配置端口的链路类型为Trunk类型 | port link-type trunk | 必选 缺省情况下，端口的链路类型为Access类型
允许SVLAN通过当前Trunk端口 | port trunk permit vlan { vlan-id-list | all } | 必选 缺省情况下，Trunk端口只允许VLAN 1通过

1.3.2 配置N:1 VLAN映射

在 图1-1 所示的组网中，需要在园区交换机上进行N:1 VLAN映射的配置，以便将不同用户的相同业务用同一个VLAN进行发送，从而节省VLAN资源。

1. 配置任务简介

表1-7 N:1 VLAN映射配置任务简介

配置任务 | 说明 | 详细配置
使能DHCP Snooping功能 | 必选 | 1.3.2 3.
使能ARP Detection功能 | 必选 | 1.3.2 4.
配置上行策略 | 必选 | 1.3.2 5.
配置下行端口 | 必选 | 1.3.2 6.
配置上行端口 | 必选 | 1.3.2 7.

如果用户想改变VLAN映射关系，必须先用 reset dhcp-snooping 命令（请参见“三层技术-IP业务命令参考”中的“DHCP Snooping”）清除DHCP Snooping表项，然后再修改QoS策略中的VLAN映射关系。

2. 配置准备

在配置N:1 VLAN映射之前，需完成以下任务：

l 要求家庭用户中不同的业务终端都通过DHCP方式获取IP地址。有关通过DHCP方式获取IP地址的方法，请参见“三层技术-IP业务配置指导”中的“DHCP概述”。

l 创建好CVLAN和SVLAN，并规划好CVLAN和SVLAN的映射关系。

3. 使能DHCP Snooping功能

表1-8 使能DHCP Snooping功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
使能DHCP Snooping功能 | dhcp-snooping | 必选 缺省情况下，DHCP Snooping功能处于关闭状态

4. 使能ARP Detection功能

正常的ARP报文处理流程无法修改ARP报文所属的VLAN，因此需要使用ARP Detection功能将ARP报文上送CPU进行处理，这样就可以对ARP报文进行VLAN映射。有关ARP Detection功能的详细介绍，请参见“安全配置指导”中的“ARP攻击防御”。

请在所有SVLAN上都使能ARP Detection功能。

表1-9 使能ARP Detection功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入VLAN视图 | vlan vlan-id | -
使能ARP Detection功能 | arp detection enable | 必选 缺省情况下，ARP Detection功能处于关闭状态

建议在所有CVLAN上也都使能ARP Detection功能，以起到防攻击的作用。

5. 配置上行策略

通过配置上行策略，将不同用户的相同业务VLAN（CVLAN）映射到同一个VLAN（SVLAN）上。

表1-10 配置上行策略

操作 | 命令 | 说明
进入系统视图 | system-view | -
定义类，并进入类视图 | traffic classifier tcl-name [ operator or ] | 必选
定义匹配不同用户相同业务VLAN（CVLAN）的规则 | if-match customer-vlan-id { vlan-id-list | vlan-id1 to vlan-id2 } | 必选
退回系统视图 | quit | -
定义流行为，并进入流行为视图 | traffic behavior behavior-name | 必选
配置重标记报文的SVLAN | remark service-vlan-id vlan-id | 必选
退回系统视图 | quit | -
定义QoS策略，并进入QoS策略视图 | qos policy policy-name | 必选
为类指定采用的流行为和绑定模式 | classifier tcl-name behavior behavior-name mode dot1q-tag-manipulation | 必选

6. 配置下行端口

表1-11 配置下行端口

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入二层以太网端口视图 | interface interface-type interface-number | -
配置端口的链路类型为Trunk类型 | port link-type trunk | 必选 缺省情况下，端口的链路类型为Access类型
允许CVLAN和SVLAN通过当前Trunk端口 | port trunk permit vlan { vlan-id-list | all } | 必选 缺省情况下，Trunk端口只允许VLAN 1通过
使能端口的用户侧QinQ功能 | qinq enable downlink | 必选 缺省情况下，端口的用户侧QinQ功能处于关闭状态
在端口的入方向上应用上行策略 | qos apply policy policy-name inbound | 必选

在下行端口上应用QoS策略之前，需要先使能端口的用户侧QinQ功能；在下行端口上关闭用户侧QinQ功能之前，需要先解除QoS策略与该端口的绑定。

7. 配置上行端口

表1-12 配置上行端口

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入二层以太网端口视图 | interface interface-type interface-number | -
配置端口的链路类型为Trunk类型 | port link-type trunk | 必选 缺省情况下，端口的链路类型为Access类型
允许SVLAN通过当前Trunk端口 | port trunk permit vlan { vlan-id-list | all } | 必选 缺省情况下，Trunk端口只允许VLAN 1通过
配置端口为DHCP Snooping信任端口 | dhcp-snooping trust | 必选 缺省情况下，端口为DHCP Snooping非信任端口
配置端口为ARP信任端口 | arp detection trust | 必选 缺省情况下，端口为ARP非信任端口
使能端口的网络侧QinQ功能 | qinq enable uplink | 必选 缺省情况下，端口的网络侧QinQ功能处于关闭状态

1.3.3 配置2:2 VLAN映射

在图1-2 所示的组网中，需要在SP 2网络的边缘设备PE 3上进行2:2 VLAN映射的配置，以便使得报文外层VLAN Tag为新SP网络分配给用户的VLAN，而内层的VLAN Tag可以和不同VLAN的同一VPN用户进行互通。

1. 配置任务简介

表1-13 2:2 VLAN映射配置任务简介

配置任务 | 说明 | 详细配置
配置下行端口的上行策略 | 必选 | 1.3.3 2.
配置下行端口的下行策略 | 必选 | 1.3.3 3.
配置上行端口的上行策略 | 必选 | 1.3.3 4.
配置下行端口 | 必选 | 1.3.3 5.
配置上行端口 | 必选 | 1.3.3 6.

2. 配置下行端口的上行策略

通过配置下行端口的上行策略，来修改SVLAN的值。

表1-14 配置下行端口的上行策略

操作 | 命令 | 说明
进入系统视图 | system-view | -
定义类，并进入类视图 | traffic classifier tcl-name [ operator and ] | 必选
定义匹配CVLAN的规则 | if-match customer-vlan-id vlan-id | 必选
定义匹配SVLAN的规则 | if-match service-vlan-id vlan-id | 必选
退回系统视图 | quit | -
定义流行为，并进入流行为视图 | traffic behavior behavior-name | 必选
配置重标记报文的SVLAN | remark service-vlan-id vlan-id | 必选
退回系统视图 | quit | -
定义QoS策略，并进入QoS策略视图 | qos policy policy-name | 必选
为类指定采用的流行为 | classifier tcl-name behavior behavior-name | 必选

3. 配置下行端口的下行策略

通过配置下行端口的下行策略，来将SVLAN和CVLAN的值都修改为原来的值。

表1-15 配置下行端口的下行策略

操作 | 命令 | 说明
进入系统视图 | system-view | -
定义类，并进入类视图 | traffic classifier tcl-name [ operator and ] | 必选
定义匹配CVLAN的规则 | if-match customer-vlan-id vlan-id | 必选
定义匹配SVLAN的规则 | if-match service-vlan-id vlan-id | 必选
退回系统视图 | quit | -
定义流行为，并进入流行为视图 | traffic behavior behavior-name | 必选
配置重标记报文的CVLAN | remark customer-vlan-id vlan-id | 必选
配置重标记报文的SVLAN | remark service-vlan-id vlan-id | 必选
退回系统视图 | quit | -
定义QoS策略，并进入QoS策略视图 | qos policy policy-name | 必选
为类指定采用的流行为 | classifier tcl-name behavior behavior-name | 必选

4. 配置上行端口的上行策略

通过配置上行端口的上行策略，来修改CVLAN的值。

表1-16 配置上行端口的上行策略

操作 | 命令 | 说明
进入系统视图 | system-view | -
定义类，并进入类视图 | traffic classifier tcl-name [ operator and ] | 必选
定义匹配CVLAN的规则 | if-match customer-vlan-id vlan-id | 必选
定义匹配SVLAN的规则 | if-match service-vlan-id vlan-id | 必选
退回系统视图 | quit | -
定义流行为，并进入流行为视图 | traffic behavior behavior-name | 必选
配置重标记报文的CVLAN | remark customer-vlan-id vlan-id | 必选
退回系统视图 | quit | -
定义QoS策略，并进入QoS策略视图 | qos policy policy-name | 必选
为类指定采用的流行为 | classifier tcl-name behavior behavior-name | 必选

5. 配置下行端口

表1-17 配置下行端口

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入二层以太网端口视图 | interface interface-type interface-number | -
配置端口的链路类型为Trunk类型 | port link-type trunk | 必选 缺省情况下，端口的链路类型为Access类型
允许SVLAN通过当前Trunk端口 | port trunk permit vlan { vlan-id-list | all } | 必选 缺省情况下，Trunk端口只允许VLAN 1通过
在端口的入方向上应用上行策略 | qos apply policy policy-name inbound | 必选
在端口的出方向上应用下行策略 | qos apply policy policy-name outbound | 必选

6. 配置上行端口

表1-18 配置上行端口

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入二层以太网端口视图 | interface interface-type interface-number | -
配置端口的链路类型为Trunk类型 | port link-type trunk | 必选 缺省情况下，端口的链路类型为Access类型
允许SVLAN通过当前Trunk端口 | port trunk permit vlan { vlan-id-list | all } | 必选 缺省情况下，Trunk端口只允许VLAN 1通过
在端口的出方向上应用上行策略 | qos apply policy policy-name outbound | 必选


1.4 VLAN映射典型配置举例

1.4.1 1:1和N:1 VLAN映射配置举例

1. 组网需求

l 在某小区，服务提供商为每个家庭都提供了电脑上网（PC）、视频点播（VoD）和语音电话（VoIP）这三种数据服务，每个家庭都通过各自的家庭网关接入楼道交换机，并通过DHCP方式自动获取IP地址。

l 服务提供商希望实现以下网络规划：在家庭网关上，分别将PC、VoD和VoIP业务依次划分到VLAN 1～3；在楼道交换机上，为了隔离不同家庭的同类业务，将每个家庭的每种业务都划分到不同的VLAN；而在园区交换机上，为了节省VLAN资源，将所有家庭的同类业务都划分到相同的VLAN，即分别将PC、VoD和VoIP业务依次划分到VLAN 501～503。

2. 组网图

图1-7 1:1和N:1 VLAN映射配置组网图

3. 配置步骤

(1) 配置Switch A

# 创建CVLAN和SVLAN。

<SwitchA> system-view

[SwitchA] vlan 2 to 3

[SwitchA] vlan 101 to 102

[SwitchA] vlan 201 to 202

[SwitchA] vlan 301 to 302

# 配置上行策略p1和p2：将不同用户的不同业务CVLAN映射到不同的SVLAN上。

[SwitchA] traffic classifier c1

[SwitchA-classifier-c1] if-match customer-vlan-id 1

[SwitchA-classifier-c1] traffic classifier c2

[SwitchA-classifier-c2] if-match customer-vlan-id 2

[SwitchA-classifier-c2] traffic classifier c3

[SwitchA-classifier-c3] if-match customer-vlan-id 3

[SwitchA-classifier-c3] quit

[SwitchA] traffic behavior b1

[SwitchA-behavior-b1] remark service-vlan-id 101

[SwitchA-behavior-b1] traffic behavior b2

[SwitchA-behavior-b2] remark service-vlan-id 201

[SwitchA-behavior-b2] traffic behavior b3

[SwitchA-behavior-b3] remark service-vlan-id 301

[SwitchA-behavior-b3] traffic behavior b4

[SwitchA-behavior-b4] remark service-vlan-id 102

[SwitchA-behavior-b4] traffic behavior b5

[SwitchA-behavior-b5] remark service-vlan-id 202

[SwitchA-behavior-b5] traffic behavior b6

[SwitchA-behavior-b6] remark service-vlan-id 302

[SwitchA-behavior-b6] quit

[SwitchA] qos policy p1

[SwitchA-policy-p1] classifier c1 behavior b1

[SwitchA-policy-p1] classifier c2 behavior b2

[SwitchA-policy-p1] classifier c3 behavior b3

[SwitchA-policy-p1] quit

[SwitchA] qos policy p2

[SwitchA-policy-p2] classifier c1 behavior b4

[SwitchA-policy-p2] classifier c2 behavior b5

[SwitchA-policy-p2] classifier c3 behavior b6

[SwitchA-policy-p2] quit

# 配置下行策略p11和p22：将SVLAN映射回原来的CVLAN上。

[SwitchA] traffic classifier c11

[SwitchA-classifier-c11] if-match service-vlan-id 101

[SwitchA-classifier-c11] traffic classifier c22

[SwitchA-classifier-c22] if-match service-vlan-id 201

[SwitchA-classifier-c22] traffic classifier c33

[SwitchA-classifier-c33] if-match service-vlan-id 301

[SwitchA-classifier-c33] traffic classifier c44

[SwitchA-classifier-c44] if-match service-vlan-id 102

[SwitchA-classifier-c44] traffic classifier c55

[SwitchA-classifier-c55] if-match service-vlan-id 202

[SwitchA-classifier-c55] traffic classifier c66

[SwitchA-classifier-c66] if-match service-vlan-id 302

[SwitchA-classifier-c66] quit

[SwitchA] traffic behavior b11

[SwitchA-behavior-b11] remark customer-vlan-id 1

[SwitchA-behavior-b11] traffic behavior b22

[SwitchA-behavior-b22] remark customer-vlan-id 2

[SwitchA-behavior-b22] traffic behavior b33

[SwitchA-behavior-b33] remark customer-vlan-id 3

[SwitchA-behavior-b33] quit

[SwitchA] qos policy p11

[SwitchA-policy-p11] classifier c11 behavior b11

[SwitchA-policy-p11] classifier c22 behavior b22

[SwitchA-policy-p11] classifier c33 behavior b33

[SwitchA-policy-p11] quit

[SwitchA] qos policy p22

[SwitchA-policy-p22] classifier c44 behavior b11

[SwitchA-policy-p22] classifier c55 behavior b22

[SwitchA-policy-p22] classifier c66 behavior b33

[SwitchA-policy-p22] quit

# 配置下行端口Ethernet1/0/1为Trunk端口且允许CVLAN和SVLAN通过，使能该端口的基本QinQ功能，在该端口的入方向上应用上行策略p1，并在该端口的出方向上应用下行策略p11。

[SwitchA] interface ethernet 1/0/1

[SwitchA-Ethernet1/0/1] port link-type trunk

[SwitchA-Ethernet1/0/1] port trunk permit vlan 1 2 3 101 201 301

[SwitchA-Ethernet1/0/1] qinq enable

[SwitchA-Ethernet1/0/1] qos apply policy p1 inbound

[SwitchA-Ethernet1/0/1] qos apply policy p11 outbound

[SwitchA-Ethernet1/0/1] quit

# 配置下行端口Ethernet1/0/2为Trunk端口且允许CVLAN和SVLAN通过，使能该端口的基本QinQ功能，在该端口的入方向上应用上行策略p2，并在该端口的出方向上应用下行策略p22。

[SwitchA] interface ethernet 1/0/2

[SwitchA-Ethernet1/0/2] port link-type trunk

[SwitchA-Ethernet1/0/2] port trunk permit vlan 1 2 3 102 202 302

[SwitchA-Ethernet1/0/2] qinq enable

[SwitchA-Ethernet1/0/2] qos apply policy p2 inbound

[SwitchA-Ethernet1/0/2] qos apply policy p22 outbound

[SwitchA-Ethernet1/0/2] quit

# 配置上行端口Ethernet1/0/3为Trunk端口且允许SVLAN通过。

[SwitchA] interface ethernet 1/0/3

[SwitchA-Ethernet1/0/3] port link-type trunk

[SwitchA-Ethernet1/0/3] port trunk permit vlan 101 201 301 102 202 302

如果PC（发送不带VLAN Tag的报文）直接连接在楼道交换机上，则需把楼道交换机连接PC的端口配置成Access端口或者Trunk端口：

l 当配置成Access端口时，要把端口加入到SVLAN；

l 当配置成Trunk端口时，要把端口的缺省VLAN配置成SVLAN。

(2) 配置Switch B

Switch B的配置与Switch A相似，配置过程略。

(3) 配置Switch C

# 使能DHCP Snooping功能。

<SwitchC> system-view

[SwitchC] dhcp-snooping

# 创建CVLAN和SVLAN，并在这些VLAN上分别使能ARP Detection功能。

[SwitchC] vlan 101

[SwitchC-vlan101] arp detection enable

[SwitchC-vlan101] vlan 201

[SwitchC-vlan201] arp detection enable

[SwitchC-vlan201] vlan 301

[SwitchC-vlan301] arp detection enable

[SwitchC-vlan301] vlan 102

[SwitchC-vlan102] arp detection enable

[SwitchC-vlan102] vlan 202

[SwitchC-vlan202] arp detection enable

[SwitchC-vlan202] vlan 302

[SwitchC-vlan302] arp detection enable

[SwitchC-vlan302] vlan 103

[SwitchC-vlan103] arp detection enable

[SwitchC-vlan103] vlan 203

[SwitchC-vlan203] arp detection enable

[SwitchC-vlan203] vlan 303

[SwitchC-vlan303] arp detection enable

[SwitchC-vlan303] vlan 104

[SwitchC-vlan104] arp detection enable

[SwitchC-vlan104] vlan 204

[SwitchC-vlan204] arp detection enable

[SwitchC-vlan204] vlan 304

[SwitchC-vlan304] arp detection enable

[SwitchC-vlan304] vlan 501

[SwitchC-vlan501] arp detection enable

[SwitchC-vlan501] vlan 502

[SwitchC-vlan502] arp detection enable

[SwitchC-vlan502] vlan 503

[SwitchC-vlan503] arp detection enable

[SwitchC-vlan503] quit

# 配置上行策略p1和p2：将不同用户的相同业务VLAN（CVLAN）映射到同一个VLAN（SVLAN）上。

[SwitchC] traffic classifier c1

[SwitchC-classifier-c1] if-match customer-vlan-id 101 to 102

[SwitchC-classifier-c1] traffic classifier c2

[SwitchC-classifier-c2] if-match customer-vlan-id 201 to 202

[SwitchC-classifier-c2] traffic classifier c3

[SwitchC-classifier-c3] if-match customer-vlan-id 301 to 302

[SwitchC-classifier-c3] traffic classifier c4

[SwitchC-classifier-c4] if-match customer-vlan-id 103 to 104

[SwitchC-classifier-c4] traffic classifier c5

[SwitchC-classifier-c5] if-match customer-vlan-id 203 to 204

[SwitchC-classifier-c5] traffic classifier c6

[SwitchC-classifier-c6] if-match customer-vlan-id 303 to 304

[SwitchC-classifier-c6] quit

[SwitchC] traffic behavior b1

[SwitchC-behavior-b1] remark service-vlan-id 501

[SwitchC-behavior-b1] traffic behavior b2

[SwitchC-behavior-b2] remark service-vlan-id 502

[SwitchC-behavior-b2] traffic behavior b3

[SwitchC-behavior-b3] remark service-vlan-id 503

[SwitchC-behavior-b3] quit

[SwitchC] qos policy p1

[SwitchC-policy-p1] classifier c1 behavior b1 mode dot1q-tag-manipulation

[SwitchC-policy-p1] classifier c2 behavior b2 mode dot1q-tag-manipulation

[SwitchC-policy-p1] classifier c3 behavior b3 mode dot1q-tag-manipulation

[SwitchC-policy-p1] quit

[SwitchC] qos policy p2

[SwitchC-policy-p2] classifier c4 behavior b1 mode dot1q-tag-manipulation

[SwitchC-policy-p2] classifier c5 behavior b2 mode dot1q-tag-manipulation

[SwitchC-policy-p2] classifier c6 behavior b3 mode dot1q-tag-manipulation

[SwitchC-policy-p2] quit

# 配置下行端口Ethernet1/0/1为Trunk端口且允许CVLAN和SVLAN通过，使能该端口的用户侧QinQ功能，并在该端口的入方向上应用上行策略p1。

[SwitchC] interface ethernet 1/0/1

[SwitchC-Ethernet1/0/1] port link-type trunk

[SwitchC-Ethernet1/0/1] port trunk permit vlan 101 201 301 102 202 302 501 502 503

[SwitchC-Ethernet1/0/1] qinq enable downlink

[SwitchC-Ethernet1/0/1] qos apply policy p1 inbound

[SwitchC-Ethernet1/0/1] quit

# 配置下行端口Ethernet1/0/2为Trunk端口且允许CVLAN和SVLAN通过，使能该端口的用户侧QinQ功能，并在该端口的入方向上应用上行策略p2。

[SwitchC] interface ethernet 1/0/2

[SwitchC-Ethernet1/0/2] port link-type trunk

[SwitchC-Ethernet1/0/2] port trunk permit vlan 103 203 303 104 204 304 501 502 503

[SwitchC-Ethernet1/0/2] qinq enable downlink

[SwitchC-Ethernet1/0/2] qos apply policy p2 inbound

[SwitchC-Ethernet1/0/2] quit

# 配置上行端口Ethernet1/0/3为Trunk端口且允许SVLAN通过，配置该端口为DHCP Snooping信任端口和ARP信任端口，并使能该端口的网络侧QinQ功能。

[SwitchC] interface ethernet 1/0/3

[SwitchC-Ethernet1/0/3] port link-type trunk

[SwitchC-Ethernet1/0/3] port trunk permit vlan 501 502 503

[SwitchC-Ethernet1/0/3] dhcp-snooping trust

[SwitchC-Ethernet1/0/3] arp detection trust

[SwitchC-Ethernet1/0/3] qinq enable uplink

(4) 配置Switch D

# 使能DHCP Snooping功能。

<SwitchD> system-view

[SwitchD] dhcp-snooping

# 配置端口Ethernet1/0/1为Trunk端口且允许SVLAN通过。

<SwitchD> system-view

[SwitchD] interface ethernet 1/0/1

[SwitchD-Ethernet1/0/1] port link-type trunk

[SwitchD-Ethernet1/0/1] port trunk permit vlan 501 502 503

1.4.2 2:2 VLAN映射配置举例

1. 组网需求

l VPN A中的站点1和站点2是某公司的两个分支机构，且分别利用VLAN 10和VLAN 30承载业务。由于分处不同地域，这两个分支机构采用了不同的服务提供商所提供的VPN接入服务，且SP 1和SP 2分别将VLAN 100和VLAN 200分配给这两个分支机构使用。

l 该公司希望其下属的这两个分支机构可以跨越SP 1和SP 2的网络实现互通。

2. 组网图

图1-8 2:2 VLAN映射配置组网图

3. 配置步骤

(1) 配置PE 1

# 配置Ethernet1/0/1端口的QinQ功能，为VLAN 10报文添加VLAN ID为100的外层VLAN Tag。

<PE1> system-view

[PE1] interface ethernet 1/0/1

[PE1-Ethernet1/0/1] port access vlan 100

[PE1-Ethernet1/0/1] qinq enable

[PE1-Ethernet1/0/1] quit

# 配置上行端口Ethernet1/0/2允许VLAN 100的报文通过。

[PE1] interface ethernet 1/0/2

[PE1-Ethernet1/0/2] port link-type trunk

[PE1-Ethernet1/0/2] port trunk permit vlan 100

(2) 配置PE 2

# 配置端口Ethernet1/0/1为Trunk端口且允许VLAN 100通过。

<PE2> system-view

[PE2] interface ethernet 1/0/1

[PE2-Ethernet1/0/1] port link-type trunk

[PE2-Ethernet1/0/1] port trunk permit vlan 100

[PE2-Ethernet1/0/1] quit

# 配置端口Ethernet1/0/2为Trunk端口且允许VLAN 100通过。

[PE2] interface ethernet 1/0/2

[PE2-Ethernet1/0/2] port link-type trunk

[PE2-Ethernet1/0/2] port trunk permit vlan 100

(3) 配置PE 3

# 配置下行端口的上行策略downlink_in：即下行端口对入方向报文的匹配规则流行为。

<PE3> system-view

[PE3] traffic classifier downlink_in

[PE3-classifier-downlink_in] if-match customer-vlan-id 10

[PE3-classifier-downlink_in] if-match service-vlan-id 100

[PE3-classifier-downlink_in] quit

[PE3] traffic behavior downlink_in

[PE3-behavior-downlink_in] remark service-vlan-id 200

[PE3-behavior-downlink_in] quit

[PE3] qos policy downlink_in

[PE3-qospolicy-downlink_in] classifier downlink_in behavior downlink_in

[PE3-qospolicy-downlink_in] quit

# 配置下行端口的下行策略downlink_out：即下行端口对出方向报文的匹配规则和流行为。

[PE3] traffic classifier downlink_out

[PE3-classifier-downlink_out] if-match customer-vlan-id 30

[PE3-classifier-downlink_out] if-match service-vlan-id 200

[PE3-classifier-downlink_out] quit

[PE3] traffic behavior downlink_out

[PE3-behavior-downlink_out] remark customer-vlan-id 10

[PE3-behavior-downlink_out] remark service-vlan-id 100

[PE3-behavior-downlink_out] quit

[PE3] qos policy downlink_out

[PE3-qospolicy-downlink_out] classifier downlink_out behavior downlink_out

[PE3-qospolicy-downlink_out] quit

# 配置上行端口的上行策略uplink_out：即上行端口对出方向报文的匹配规则和流行为。

[PE3] traffic classifier uplink_out

[PE3-classifier-uplink_out] if-match customer-vlan-id 10

[PE3-classifier-uplink_out] if-match service-vlan-id 200

[PE3-classifier-uplink_out] quit

[PE3] traffic behavior uplink_out

[PE3-behavior-uplink_out] remark customer-vlan-id 30

[PE3-behavior-uplink_out] quit

[PE3] qos policy uplink_out

[PE3-qospolicy-uplink_out] classifier uplink_out behavior uplink_out

[PE3-qospolicy-uplink_out] quit

# 配置下行端口Ethernet1/0/1为Trunk端口且允许VLAN 200通过，在该端口的入方向上应用上行策略downlink_in，并在该端口的出方向上应用下行策略downlink_out。

[PE3] interface ethernet 1/0/1

[PE3-Ethernet1/0/1] port link-type trunk

[PE3-Ethernet1/0/1] port trunk permit vlan 200

[PE3-Ethernet1/0/1] qos apply policy downlink_in inbound

[PE3-Ethernet1/0/1] qos apply policy downlink_out outbound

[PE3-Ethernet1/0/1] quit

# 配置上行端口Ethernet1/0/2为Trunk端口且允许VLAN 200通过，并在该端口的出方向上应用下行策略uplink_out。

[PE3] interface ethernet 1/0/2

[PE3-Ethernet1/0/2] port link-type trunk

[PE3-Ethernet1/0/2] port trunk permit vlan 200

[PE3-Ethernet1/0/2] qos apply policy uplink_out outbound

[PE3-Ethernet1/0/2] quit

(4) 配置PE 4

# 配置Ethernet1/0/2的QinQ功能，为VLAN 30报文添加VLAN ID为200的外层VLAN Tag。

<DeviceD> system-view

[DeviceD] interface ethernet 1/0/2

[DeviceD-Ethernet1/0/2] port access vlan 200

[DeviceD-Ethernet1/0/2] qinq enable

# 配置端口Ethernet1/0/1允许VLAN 200的报文通过。

[DeviceD] interface ethernet 1/0/1

[DeviceD-Ethernet1/0/1] port link-type trunk

[DeviceD-Ethernet1/0/1] port trunk permit vlan 200


1 LLDP配置

相关链接

  • 1.1 LLDP简介
  • 1.2 LLDP配置任务简介
  • 1.3 配置LLDP基本功能
  • 1.4 配置LLDP兼容CDP功能
  • 1.5 配置LLDP Trap功能
  • 1.6 LLDP显示和维护
  • 1.7 LLDP典型配置举例
父主题： 12-LLDP配置


1.1 LLDP简介

1.1.1 LLDP产生背景

目前，网络设备的种类日益繁多且各自的配置错综复杂，为了使不同厂商的设备能够在网络中相互发现并交互各自的系统及配置信息，需要有一个标准的信息交流平台。

LLDP（Link Layer Discovery Protocol，链路层发现协议）就是在这样的背景下产生的，它提供了一种标准的链路层发现方式，可以将本端设备的主要能力、管理地址、设备标识、接口标识等信息组织成不同的TLV（Type/Length/Value，类型/长度/值），并封装在LLDPDU（Link Layer Discovery Protocol Data Unit，链路层发现协议数据单元）中发布给与自己直连的邻居，邻居收到这些信息后将其以标准MIB（Management Information Base，管理信息库）的形式保存起来，以供网络管理系统查询及判断链路的通信状况。

有关MIB的详细介绍，请参见“网络管理和监控配置指导”中的“SNMP”。

1.1.2 LLDP基本概念

1. LLDP报文

封装有LLDPDU的报文称为LLDP报文，其封装格式有两种：Ethernet II和SNAP（Subnetwork Access Protocol，子网访问协议）。

(1) Ethernet II格式封装的LLDP报文

图1-1 Ethernet II格式封装的LLDP报文

如图1-1 所示，是以Ethernet II格式封装的LLDP报文，其中各字段的含义如下：

l Destination MAC address：目的MAC地址，为固定的组播MAC地址0x0180-C200-000E。

l Source MAC address：源MAC地址，为端口MAC地址。

l Type：报文类型，为0x88CC。

l Data：数据内容，为LLDPDU。

l FCS：帧检验序列，用来对报文进行校验。

(2) SNAP格式封装的LLDP报文

图1-2 SNAP格式封装的LLDP报文

如图1-2 所示，是以SNAP格式封装的LLDP报文，其中各字段的含义如下：

l Destination MAC address：目的MAC地址，为固定的组播MAC地址0x0180-C200-000E。

l Source MAC address：源MAC地址，为端口MAC地址或设备桥MAC地址（如果有端口地址则使用端口MAC地址，否则使用设备桥MAC地址）。

l Type：报文类型，为0xAAAA-0300-0000-88CC。

l Data：数据内容，为LLDPDU。

l FCS：帧检验序列，用来对报文进行校验。

2. LLDPDU

LLDPDU就是封装在LLDP报文数据部分的数据单元。在组成LLDPDU之前，设备先将本地信息封装成TLV格式，再由若干个TLV组合成一个LLDPDU封装在LLDP报文的数据部分进行传送。

图1-3 LLDPDU的封装格式

如图1-3 所示，深蓝色的Chassis ID TLV、Port ID TLV、Time To Live TLV和End of LLDPDU TLV这四种TLV是每个LLDPDU都必须携带的，其余的TLV则为可选携带。每个LLDPDU最多可携带28种TLV。

3. TLV

TLV是组成LLDPDU的单元，每个TLV都代表一个信息。LLDP可以封装的TLV包括基本TLV、802.1组织定义TLV、802.3组织定义TLV和LLDP-MED（Media Endpoint Discovery，媒体终端发现） TLV。

基本TLV是网络设备管理基础的一组TLV，802.1组织定义TLV、802.3组织定义TLV和LLDP-MED TLV则是由标准组织或其他机构定义的TLV，用于增强对网络设备的管理，可根据实际需要选择是否在LLDPDU中发送。

(1) 基本TLV

在基本TLV中，有几种TLV对于实现LLDP功能来说是必选的，即必须在LLDPDU中发布，如 表1-1 所示。

表1-1 基本TLV

TLV名称 | 说明 | 是否必须发布
Chassis ID | 发送设备的桥MAC地址 | 是
Port ID | 标识LLDPDU发送端的端口。如果LLDPDU中携带有LLDP-MED TLV，其内容为端口的MAC地址，没有端口MAC时使用桥MAC；否则，其内容为端口的名称 | 是
Time To Live | 本设备信息在邻居设备上的存活时间 | 是
End of LLDPDU | LLDPDU的结束标识，是LLDPDU的最后一个TLV | 是
Port Description | 端口的描述 | 否
System Name | 设备的名称 | 否
System Description | 系统的描述 | 否
System Capabilities | 系统的主要功能以及已使能的功能项 | 否
Management Address | 管理地址，以及该地址所对应的接口号和OID（Object Identifier，对象标识符） | 否

(2) 802.1组织定义TLV

IEEE 802.1组织定义TLV的内容如 表1-2 所示。

表1-2 IEEE 802.1组织定义的TLV

TLV名称 | 说明
Port VLAN ID | 端口的PVID（Port VLAN ID），一个LLDPDU中最多携带一个该类型TLV
Port And Protocol VLAN ID | 端口的PPVID（Port and Protocol VLAN ID），一个LLDPDU中可携带多个互不重复的该类型TLV
VLAN Name | 端口所属VLAN的名称，一个LLDPDU中可携带多个互不重复的该类型TLV
Protocol Identity | 端口所支持的协议类型，一个LLDPDU中可携带多个互不重复的该类型TLV

l 目前，H3C设备不支持发送Protocol Identity TLV，但可以接收该类型的TLV。

l 三层以太网端口不支持IEEE 802.1组织定义TLV。

(3) 802.3组织定义TLV

IEEE 802.3组织定义TLV的内容如 表1-3 所示。

表1-3 IEEE 802.3组织定义的TLV

TLV名称 | 说明
MAC/PHY Configuration/Status | 端口支持的速率和双工状态、是否支持端口速率自动协商、是否已使能自动协商功能以及当前的速率和双工状态
Power Via MDI | 端口的供电能力，包括PoE（Power over Ethernet，以太网供电）的类型（PSE（Power Sourcing Equipment，供电设备）或PD（Powered Device，受电设备））、PoE端口的远程供电模式、是否支持PSE供电、是否已使能PSE供电以及供电方式是否可控
Link Aggregation | 端口是否支持链路聚合以及是否已使能链路聚合
Maximum Frame Size | 端口支持的最大帧长度，取端口配置的MTU（Maximum Transmission Unit，最大传输单元）
Power Stateful Control | 端口的电源状态控制，包括PSE/PD所采用的电源类型、供/受电的优先级以及供/受电的功率

Power Stateful Control TLV是在IEEE P802.3at D1.0版本中被定义的，之后的版本不再支持该TLV。H3C设备只有在收到Power Stateful Control TLV后才会发送该类型的TLV。

(4) LLDP-MED TLV

LLDP-MED TLV为VoIP（Voice over IP，在IP网络上传送语音）提供了许多高级的应用，包括基本配置、网络策略配置、地址信息以及目录管理等，满足了语音设备的不同生产厂商在成本有效、易部署、易管理等方面的要求，并解决了在以太网中部署语音设备的问题，为语音设备的生产者、销售者以及使用者提供了便利。LLDP-MED TLV的内容如 表1-4 所示。

表1-4 LLDP-MED TLV

TLV名称 | 说明
LLDP-MED Capabilities | 网络设备所支持的LLDP-MED TLV类型
Network Policy | 网络设备或终端设备上端口的VLAN类型、VLAN ID以及二三层与具体应用类型相关的优先级等
Extended Power-via-MDI | 网络设备或终端设备的扩展供电能力，对Power Via MDI TLV进行了扩展
Hardware Revision | 终端设备的硬件版本
Firmware Revision | 终端设备的固件版本
Software Revision | 终端设备的软件版本
Serial Number | 终端设备的序列号
Manufacturer Name | 终端设备的制造厂商名称
Model Name | 终端设备的模块名称
Asset ID | 终端设备的资产标识符，以便目录管理和资产跟踪
Location Identification | 网络设备的位置标识信息，以供终端设备在基于位置的应用中使用

4. 管理地址

管理地址是供网络管理系统标识网络设备并进行管理的地址。管理地址可以明确地标识一台设备，从而有利于网络拓扑的绘制，便于网络管理。管理地址被封装在LLDP报文的Management Address TLV中向外发布。

1.1.3 LLDP工作机制

1. LLDP的工作模式

LLDP有以下四种工作模式：

l TxRx：既发送也接收LLDP报文。

l Tx：只发送不接收LLDP报文。

l Rx：只接收不发送LLDP报文。

l Disable：既不发送也不接收LLDP报文。

当端口的LLDP工作模式发生变化时，端口将对协议状态机进行初始化操作。为了避免端口工作模式频繁改变而导致端口不断执行初始化操作，可配置端口初始化延迟时间，当端口工作模式改变时延迟一段时间再执行初始化操作。

2. LLDP报文的发送机制

当端口工作在TxRx或Tx模式时，设备会周期性地向邻居设备发送LLDP报文。如果设备的本地配置发生变化则立即发送LLDP报文，以将本地信息的变化情况尽快通知给邻居设备。但为了防止本地信息的频繁变化而引起LLDP报文的大量发送，每发送一个LLDP报文后都需延迟一段时间后再继续发送下一个报文。

当设备的工作模式由Disable/Rx切换为TxRx/Tx，或者发现了新的邻居设备（即收到一个新的LLDP报文且本地尚未保存发送该报文设备的信息）时，该设备将自动启用快速发送机制，即将LLDP报文的发送周期缩短为1秒，并连续发送指定数量的LLDP报文后再恢复为正常的发送周期。

3. LLDP报文的接收机制

当端口工作在TxRx或Rx模式时，设备会对收到的LLDP报文及其携带的TLV进行有效性检查，通过检查后再将邻居信息保存到本地，并根据Time To Live TLV中TTL（Time To Live，生存时间）的值来设置邻居信息在本地设备上的老化时间，若该值为零，则立刻老化该邻居信息。

1.1.4 协议规范

与LLDP相关的协议规范有：

l IEEE 802.1AB-2005：Station and Media Access Control Connectivity Discovery

l ANSI/TIA-1057：Link Layer Discovery Protocol for Media Endpoint Devices


1.2 LLDP配置任务简介

表1-5 LLDP配置任务简介

配置任务 |  | 说明 | 详细配置
配置LLDP基本功能 | 使能LLDP功能 | 必选 | 1.3.1
 | 配置LLDP工作模式 | 可选 | 1.3.2
 | 配置接口初始化延迟 | 可选 | 1.3.3
 | 配置轮询功能 | 可选 | 1.3.4
 | 配置允许发布的TLV类型 | 可选 | 1.3.5
 | 配置管理地址及其封装格式 | 可选 | 1.3.6
 | 调整LLDP相关参数 | 可选 | 1.3.7
 | 配置LLDP报文的封装格式 | 可选 | 1.3.8
配置LLDP兼容CDP功能 |  | 可选 | 1.4
配置LLDP Trap功能 |  | 可选 | 1.5

对于LLDP的相关配置来说：

l 二层以太网端口视图下的配置只对当前端口有效；三层以太网端口视图下的配置只对当前接口有效；端口组视图下的配置对当前端口组中的所有端口有效。

l 三层以太网端口是指被配置为三层模式的以太网端口，有关以太网端口模式切换的操作，请参见“二层技术-以太网交换配置指导”中的“以太网端口配置”。


1.3 配置LLDP基本功能

1.3.1 使能LLDP功能

LLDP功能必须在全局和接口上同时使能后才能生效。

表1-6 使能LLDP功能

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
全局使能LLDP功能 |  | lldp enable | 必选 缺省情况下，LLDP功能处于全局使能状态
进入相应视图 | 进入二层/三层以太网端口视图 | interface interface-type interface-number | 二者必选其一
 | 进入端口组视图 | port-group manual port-group-name
在接口上使能LLDP功能 |  | lldp enable | 可选 缺省情况下，LLDP功能在接口上处于使能状态

1.3.2 配置LLDP工作模式

LLDP的工作模式分为以下四种：

l TxRx：既发送也接收LLDP报文。

l Tx：只发送不接收LLDP报文。

l Rx：只接收不发送LLDP报文。

l Disable：既不发送也不接收LLDP报文。

表1-7 配置LLDP工作模式

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
进入相应视图 | 进入二层/三层以太网端口视图 | interface interface-type interface-number | 二者必选其一
 | 进入端口组视图 | port-group manual port-group-name
配置LLDP的工作模式 |  | lldp admin-status { disable | rx | tx | txrx } | 可选 缺省情况下，LLDP的工作模式为TxRx

1.3.3 配置接口初始化延迟

当接口上LLDP的工作模式发生变化时，接口将对协议状态机进行初始化操作，通过配置接口初始化的延迟时间，可以避免由于工作模式频繁改变而导致接口不断地进行初始化。

表1-8 配置接口初始化延迟

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置接口初始化的延迟时间 | lldp timer reinit-delay delay | 可选 缺省情况下，接口初始化的延迟时间为2秒

1.3.4 配置轮询功能

在使能了轮询功能后，LLDP将以轮询间隔周期性地查询本设备的相关配置是否发生改变，如果发生改变将触发LLDP报文的发送，以将本设备的配置变化迅速通知给其它设备。

表1-9 配置轮询功能

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
进入相应视图 | 进入二层/三层以太网端口视图 | interface interface-type interface-number | 二者必选其一
 | 进入端口组视图 | port-group manual port-group-name
使能轮询功能并配置轮询间隔 |  | lldp check-change-interval interval | 必选 缺省情况下，轮询功能处于关闭状态

1.3.5 配置允许发布的TLV类型

表1-10 配置允许发布的TLV类型

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
进入相应视图 | 进入二层/三层以太网端口视图 | interface interface-type interface-number | 二者必选其一
 | 进入端口组视图 | port-group manual port-group-name
配置接口上允许发布的TLV类型（二层以太网端口视图和端口组视图） |  | lldp tlv-enable { basic-tlv { all | port-description | system-capability | system-description | system-name } | dot1-tlv { all | port-vlan-id | protocol-vlan-id [ vlan-id ] | vlan-name [ vlan-id ] } | dot3-tlv { all | link-aggregation | mac-physic | max-frame-size | power } | med-tlv { all | capability | inventory | location-id { civic-address device-type country-code { ca-type ca-value }&<1–10> | elin-address tel-number } | network-policy | power-over-ethernet } } | 可选 缺省情况下，二层以太网端口上允许发布除Location Identification TLV之外的所有类型的TLV
配置接口上允许发布的TLV类型（三层以太网端口视图） |  | lldp tlv-enable { basic-tlv { all | port-description | system-capability | system-description | system-name } | dot3-tlv { all | link-aggregation | mac-physic | max-frame-size | power } | med-tlv { all | capability | inventory | location-id { civic-address device-type country-code { ca-type ca-value }&<1-10> | elin-address tel-number } | power-over-ethernet } } | 可选 缺省情况下，三层以太网端口上允许发布除IEEE 802.1组织定义的TLV、Network Policy TLV和Location Identification TLV之外所有类型的TLV

1.3.6 配置管理地址及其封装格式

管理地址被封装在Management Address TLV中向外发布，封装格式可以是数字或字符串，缺省为数字格式。如果邻居将管理地址以字符串格式封装在TLV中，用户可在本地设备上也将封装格式改为字符串，以保证与邻居设备的正常通信。

表1-11 配置管理地址及其封装格式

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
进入相应视图 | 进入二层/三层以太网端口视图 | interface interface-type interface-number | 二者必选其一
 | 进入端口组视图 | port-group manual port-group-name
允许在LLDP报文中发布管理地址并配置所发布的管理地址 |  | lldp management-address-tlv [ ip-address ] | 可选 缺省情况下，允许在LLDP报文中发布管理地址：二层以太网端口发布的管理地址为该端口允许通过的、配置有IP地址的最小VLAN的主IP地址，但如果该端口允许通过的所有VLAN都未配置IP地址，则不发布管理地址；三层以太网端口发布的管理地址为该接口的IP地址，如果该接口未配置IP地址，则不发布管理地址
配置管理地址在TLV中的封装格式为字符串格式 |  | lldp management-address-format string | 可选 缺省情况下，管理地址在TLV中的封装格式为数字格式

1.3.7 调整LLDP相关参数

LLDP报文所携Time To Live TLV中TTL的值用来设置邻居信息在本地设备上的老化时间，由于TTL＝Min（65535，（TTL乘数×LLDP报文的发送间隔）），即取65535与（TTL乘数×LLDP报文的发送间隔）中的最小值，因此通过调整TTL乘数可以控制本设备信息在邻居设备上的老化时间。

表1-12 调整LLDP相关参数

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置TTL乘数 | lldp hold-multiplier value | 可选 缺省情况下，TTL乘数为4
配置LLDP报文的发送间隔 | lldp timer tx-interval interval | 可选 缺省情况下，LLDP报文的发送间隔为30秒
配置LLDP报文的发送延迟 | lldp timer tx-delay delay | 可选 缺省情况下，LLDP报文的发送延迟为2秒
配置快速发送LLDP报文的个数 | lldp fast-count count | 可选 缺省情况下，快速发送LLDP报文的个数为3个

l LLDP报文的发送延迟应小于TTL，否则将导致当前设备的信息在邻居设备上老化后仍无法收到当前设备发送的LLDP报文。

l 根据协议推荐，建议将LLDP报文的发送间隔配置为不小于其发送延迟的四倍。

l 如果所配置的LLDP报文的发送间隔小于其发送延迟，那么其实际发送间隔将以其发送延迟的取值为准。

1.3.8 配置LLDP报文的封装格式

LLDP报文的封装格式有Ethernet II和SNAP两种：

l 当采用Ethernet II封装格式时，使能了LLDP功能的接口所发送的LLDP报文将以Ethernet II格式封装，且只有当收到以同种格式封装的LLDP报文时，设备才会对其进行处理。

l 当采用SNAP封装格式时，使能了LLDP功能的接口所发送的LLDP报文将以SNAP格式封装，且只有当收到以同种格式封装的LLDP报文时，设备才会对其进行处理。

LLDP报文的缺省封装格式为Ethernet II格式。如果邻居设备以SNAP格式封装LLDP报文，用户可在本地设备上也将LLDP报文的封装格式改为SNAP格式，以保证与邻居设备的正常通信。

表1-13 配置LLDP报文的封装格式

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
进入相应视图 | 进入二层/三层以太网端口视图 | interface interface-type interface-number | 二者必选其一
 | 进入端口组视图 | port-group manual port-group-name
配置LLDP报文的封装格式为SNAP格式 |  | lldp encapsulation snap | 必选 缺省情况下，LLDP报文的封装格式为Ethernet II格式

LLDP CDP（Cisco Discovery Protocol，思科发现协议）报文的封装格式只能为SNAP格式，不能为Ethernet II格式。


1.4 配置LLDP兼容CDP功能

有关Voice VLAN的详细介绍，请参见“二层技术-以太网交换配置指导”中的“Voice VLAN”。

当设备与Cisco的IP电话直连时，IP电话将会向设备发送CDP（Cisco Discovery Protocol，思科发现协议）报文以请求在设备上所配Voice VLAN的VLAN ID；如果在指定时间内没有收到设备发送的Voice VLAN的VLAN ID，IP电话将会把语音数据流以untagged方式发送，从而导致语音数据流与其它类型的数据流混在一起，无法进行区分。

通过在设备上配置LLDP兼容CDP功能，可以利用LLDP来接收、识别从IP电话接收的CDP报文，并向IP电话发送CDP报文，该CDP报文携带设备所配Voice VLAN的TLV，使IP电话完成Voice VLAN的自动配置。语音数据流将被限制在配置的Voice VLAN内，与其它数据流区分开来。

1.4.1 配置准备

在配置LLDP兼容CDP功能之前，需完成以下任务：

l 全局使能LLDP功能。

l 在设备与IP电话相连接的接口上使能LLDP功能，并配置接口的LLDP工作模式为TxRx。

1.4.2 配置LLDP兼容CDP功能

LLDP兼容CDP功能有以下两种工作模式：

l TxRx：既发送也接收CDP报文。

l Disable：既不发送也不接收CDP报文。

要使LLDP兼容CDP功能生效，必须先在全局使能LLDP兼容CDP功能，并将LLDP兼容CDP功能的工作模式配置为TxRx。

表1-14 配置LLDP兼容CDP功能

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
使能LLDP兼容CDP功能 |  | lldp compliance cdp | 必选 缺省情况下，LLDP兼容CDP功能处于关闭状态
进入相应视图 | 进入二层/三层以太网端口视图 | interface interface-type interface-number | 二者必选其一
 | 进入端口组视图 | port-group manual port-group-name
配置LLDP兼容CDP功能的工作模式为TxRx |  | lldp compliance admin-status cdp txrx | 必选 缺省情况下，LLDP兼容CDP功能的工作模式为Disable

由于CDP报文所携Time To Live TLV中TTL的最大值为255，而TTL＝Min（65535，（TTL乘数×LLDP报文的发送间隔）），因此为保证LLDP兼容CDP功能的正常运行，应确保TTL乘数与LLDP报文的发送间隔的乘积不大于255。


1.5 配置LLDP Trap功能

使能LLDP Trap功能后，设备可以通过向网管系统发送Trap信息以通告如发现新邻居、与原来邻居的通信链路发生故障等重要事件。

LLDP Trap信息的发送间隔是指设备向网管系统发送Trap信息的最小时间间隔，通过调整该时间间隔，可以避免由于邻居信息频繁变化而导致Trap信息的频繁发送。

表1-15 配置LLDP Trap功能

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
进入相应视图 | 进入二层/三层以太网端口视图 | interface interface-type interface-number | 二者必选其一
 | 进入端口组视图 | port-group manual port-group-name
使能LLDP Trap功能 |  | lldp notification remote-change enable | 必选 缺省情况下，LLDP Trap功能处于关闭状态
退回系统视图 |  | quit | -
配置LLDP Trap信息的发送间隔 |  | lldp timer notification-interval interval | 可选 缺省情况下，LLDP Trap信息的发送间隔为5秒


1.6 LLDP显示和维护

在完成上述配置后，在任意视图下执行 display 命令可以显示配置后LLDP的运行情况，通过查看显示信息验证配置的效果。

表1-16 LLDP显示和维护

操作 | 命令
显示待发送的LLDP信息 | display lldp local-information [ global | interface interface-type interface-number ] [ | { begin | exclude | include } regular-expression ]
显示由邻居设备发来的LLDP信息 | display lldp neighbor-information [ brief | interface interface-type interface-number [ brief ] | list [ system-name system-name ] ] [ | { begin | exclude | include } regular-expression ]
显示LLDP的统计信息 | display lldp statistics [ global | interface interface-type interface-number ] [ | { begin | exclude | include } regular-expression ]
显示LLDP的状态信息 | display lldp status [ interface interface-type interface-number ] [ | { begin | exclude | include } regular-expression ]
显示接口上可发送的可选TLV信息 | display lldp tlv-config [ interface interface-type interface-number ] [ | { begin | exclude | include } regular-expression ]


1.7 LLDP典型配置举例

1.7.1 LLDP基本功能配置举例

1. 组网需求

l NMS（Network Management System，网络管理系统）通过以太网与Switch A相连，Switch A通过接口Ethernet1/0/1和Ethernet1/0/2分别与MED设备和Switch B相连。

l 通过在Switch A和Switch B上配置LLDP功能，使NMS可以对Switch A与MED设备之间、以及Switch A与Switch B之间链路的通信情况进行判断。

2. 组网图

图1-4 LLDP基本功能配置组网图

3. 配置步骤

(1) 配置Switch A

# 全局使能LLDP功能。

<SwitchA> system-view

[SwitchA] lldp enable

# 在接口Ethernet1/0/1和Ethernet1/0/2上分别使能LLDP功能（此步骤可省略，LLDP功能在接口上缺省使能），并配置LLDP工作模式为Rx。

[SwitchA] interface Ethernet1/0/1

[SwitchA-Ethernet1/0/1] lldp enable

[SwitchA-Ethernet1/0/1] lldp admin-status rx

[SwitchA-Ethernet1/0/1] quit

[SwitchA] interface Ethernet1/0/2

[SwitchA-Ethernet1/0/2] lldp enable

[SwitchA-Ethernet1/0/2] lldp admin-status rx

[SwitchA-Ethernet1/0/2] quit

(2) 配置Switch B

# 全局使能LLDP功能。

<SwitchB> system-view

[SwitchB] lldp enable

# 在接口Ethernet1/0/1上使能LLDP功能（此步骤可省略，LLDP功能在接口上缺省使能），并配置LLDP工作模式为Tx。

[SwitchB] interface Ethernet1/0/1

[SwitchB-Ethernet1/0/1] lldp enable

[SwitchB-Ethernet1/0/1] lldp admin-status tx

[SwitchB-Ethernet1/0/1] quit

(3) 检验配置效果

# 显示Switch A上所有接口的LLDP状态信息。

[SwitchA] display lldp status

Global status of LLDP: Enable

The current number of LLDP neighbors: 2

The current number of CDP neighbors: 0

LLDP neighbor information last changed time: 0 days,0 hours,4 minutes,40 seconds

Transmit interval : 30s

Hold multiplier : 4

Reinit delay : 2s

Transmit delay : 2s

Trap interval : 5s

Fast start times : 3

Port 1 [Ethernet1/0/1]:

Port status of LLDP : Enable

Admin status : Rx_Only

Trap flag : No

Polling interval : 0s

Number of neighbors: 1

Number of MED neighbors : 1

Number of CDP neighbors : 0

Number of sent optional TLV : 0

Number of received unknown TLV : 0

Port 2 [Ethernet1/0/2]:

Port status of LLDP : Enable

Admin status : Rx_Only

Trap flag : No

Polling interval : 0s

Number of neighbors: 1

Number of MED neighbors : 0

Number of CDP neighbors : 0

Number of sent optional TLV : 0

Number of received unknown TLV : 3

由此可见，Switch A的接口Ethernet1/0/1上连接了一个MED邻居设备，Ethernet1/0/2上则连接了一个非MED邻居设备，且这两个接口的LLDP工作模式都为Rx，即只接收而不发送LLDP报文。

# 将Switch A和Switch B间的链路断掉后，再显示Switch A上所有接口的LLDP状态信息。

[SwitchA] display lldp status

Global status of LLDP: Enable

The current number of LLDP neighbors: 1

The current number of CDP neighbors: 0

LLDP neighbor information last changed time: 0 days,0 hours,5 minutes,20 seconds

Transmit interval : 30s

Hold multiplier : 4

Reinit delay : 2s

Transmit delay : 2s

Trap interval : 5s

Fast start times : 3

Port 1 [Ethernet1/0/1]:

Port status of LLDP : Enable

Admin status : Rx_Only

Trap flag : No

Polling interval : 0s

Number of neighbors: 1

Number of MED neighbors : 1

Number of CDP neighbors : 0

Number of sent optional TLV : 0

Number of received unknown TLV : 5

Port 2 [Ethernet1/0/2]:

Port status of LLDP : Enable

Admin status : Rx_Only

Trap flag : No

Polling interval : 0s

Number of neighbors: 0

Number of MED neighbors : 0

Number of CDP neighbors : 0

Number of sent optional TLV : 0

Number of received unknown TLV : 0

由此可见，Switch A的接口Ethernet1/0/2上已经没有任何邻居设备了。

1.7.2 LLDP兼容CDP功能配置举例

1. 组网需求

l Switch A通过接口Ethernet1/0/1和Ethernet1/0/2分别与两部Cisco的IP电话相连；

l 在Switch A上配置VLAN ID为2的Voice VLAN，通过在Switch A上配置LLDP兼容CDP功能使IP电话完成Voice VLAN的自动配置，以使语音数据流被限制在Voice VLAN内，与其它数据流区分开来。

2. 组网图

图1-5 LLDP兼容CDP功能配置组网图

3. 配置步骤

(1) 在Switch A上配置Voice VLAN

# 创建VLAN 2。

<SwitchA> system-view

[SwitchA] vlan 2

[SwitchA-vlan2] quit

# 分别将接口Ethernet1/0/1和Ethernet1/0/2配置为Trunk端口，并使能Voice VLAN功能。

[SwitchA] interface ethernet 1/0/1

[SwitchA-Ethernet1/0/1] port link-type trunk

[SwitchA-Ethernet1/0/1] voice vlan 2 enable

[SwitchA-Ethernet1/0/1] quit

[SwitchA] interface ethernet 1/0/2

[SwitchA-Ethernet1/0/2] port link-type trunk

[SwitchA-Ethernet1/0/2] voice vlan 2 enable

[SwitchA-Ethernet1/0/2] quit

(2) 在Switch A上配置LLDP兼容CDP功能

# 全局使能LLDP功能以及LLDP兼容CDP功能。

[SwitchA] lldp enable

[SwitchA] lldp compliance cdp

# 在接口Ethernet1/0/1和Ethernet1/0/2上分别使能LLDP功能（此步骤可省略，LLDP功能在接口上缺省使能），配置LLDP工作模式为TxRx，并配置LLDP兼容CDP功能的工作模式为TxRx。

[SwitchA] interface ethernet 1/0/1

[SwitchA-Ethernet1/0/1] lldp enable

[SwitchA-Ethernet1/0/1] lldp admin-status txrx

[SwitchA-Ethernet1/0/1] lldp compliance admin-status cdp txrx

[SwitchA-Ethernet1/0/1] quit

[SwitchA] interface ethernet 1/0/2

[SwitchA-Ethernet1/0/2] lldp enable

[SwitchA-Ethernet1/0/2] lldp admin-status txrx

[SwitchA-Ethernet1/0/2] lldp compliance admin-status cdp txrx

[SwitchA-Ethernet1/0/2] quit

(3) 检验配置效果

# 显示Switch A上的邻居信息。

[SwitchA] display lldp neighbor-information

CDP neighbor-information of port 1[Ethernet1/0/1]:

CDP neighbor index : 1

Chassis ID : SEP00141CBCDBFE

Port ID : Port 1

Sofrware version : P0030301MFG2

Platform : Cisco IP Phone 7960

Duplex : Full

CDP neighbor-information of port 2[Ethernet1/0/2]:

CDP neighbor index : 2

Chassis ID : SEP00141CBCDBFF

Port ID : Port 1

Sofrware version : P0030301MFG2

Platform : Cisco IP Phone 7960

Duplex : Full

由此可见，Switch A已发现了分别连接在接口Ethernet1/0/1和Ethernet1/0/2上的IP电话，并获取到了相关的设备信息。


1 业务环回组配置

相关链接

  • 1.1 业务环回组简介
  • 1.2 配置业务环回组
  • 1.3 业务环回组显示与维护
  • 1.4 业务环回组典型配置举例
父主题： 13-业务环回组配置


1.1 业务环回组简介

为了增加业务重定向的吞吐能力，可以将一台设备上的多个以太网端口绑定在一起，使其在逻辑上呈现为一条链路，从而实现增加链路带宽、进行负载分担的目的，这些端口就构成了业务环回组。业务环回组中应当包含至少一个以太网端口，这样的端口就称为业务环回组的成员端口，也叫业务环回端口。

譬如，将一台设备的端口Ethernet1/0/1、Ethernet1/0/2和Ethernet1/0/3添加到同一个业务环回组中之后，这三个端口在逻辑上将呈现为一条链路，该链路的带宽等于这三个端口带宽的总和，从而达到了增加带宽的目的；同时，这三个端口之间还能够对业务流量进行负载分担。

1.1.1 业务环回组支持的业务类型

业务环回组只能应用于特定的业务类型，其支持的业务类型包括以下几种：

l Tunnel：用于支持单播隧道业务。

l Multicast tunnel：用于支持组播隧道业务。

1.1.2 业务环回组对成员端口的要求

要成为业务环回组的成员端口，必须满足下列条件：

l 端口必须支持该业务环回组的业务类型。

l 允许端口上有速率、双工模式等物理配置以及QoS和ACL的配置，但不允许有下列配置：MSTP、LLDP、NDP、隔离组的成员端口、Isolate-user-VLAN上行/下行端口、802.1X、MAC地址认证、端口安全模式以及IP Source Guard功能。

l 端口的链路类型必须为Access类型。

l 端口尚未加入任何聚合组或业务环回组。

1.1.3 业务环回组成员端口的状态

1. 成员端口状态的分类

业务环回组中的成员端口具有以下两种状态：

l 选中（Selected）状态：此状态下的成员端口可以参与用户业务流量的环回，处于此状态的成员端口简称为“选中端口”。

l 非选中（Unselected）状态：此状态下的成员端口不能参与用户业务流量的环回，处于此状态的成员端口简称为“非选中端口”。

2. 成员端口状态的确定

系统按照以下方法来确定业务环回组中成员端口的状态：

(1) 选择双工模式为全双工的且速率最高的成员端口作为参考端口，如果速率相同，则选择端口号最小的成员端口作为参考端口。

(2) 按照图1-1 所示的流程来确定成员端口的状态。

图1-1 业务环回组中成员端口状态的确定流程

当有新的端口加入业务环回组时，该组中所有成员端口的状态都将按照上述方法重新确定。


1.2 配置业务环回组

表1-1 配置业务环回组

操作 | 命令 | 说明
进入系统视图 | system-view | -
创建业务环回组，并指定其业务类型 | service-loopback group number type { multicast-tunnel | tunnel } * | 必选
进入二层以太网端口视图 | interface interface-type interface-number | -
将端口加入业务环回组 | port service-loopback group number | 必选 缺省情况下，端口不属于任何业务环回组 在不同端口上执行本命令，可以将多个端口加入到业务环回组中

l 业务环回组只有在被其它特性引用后才能处理业务。业务环回组一旦创建即可被引用，且一个业务环回组可以同时被多个特性引用。

l 每种业务类型的业务环回组在全局只能有一个。用户可以在业务环回组创建后更改其业务类型，但以下情况除外：将业务类型修改为已存在的业务类型；业务环回组已被其它特性引用；业务环回组中的成员端口存在与修改后的业务类型相冲突的属性。

l 不允许删除已被其它特性引用的业务环回组。


1.3 业务环回组显示与维护

在完成上述配置后，在任意视图下执行 display 命令可以显示配置后业务环回组的运行情况，通过查看显示信息验证配置的效果。

表1-2 业务环回组显示与维护

操作 | 命令
显示业务环回组的信息 | display service-loopback group [ number ] [ | { begin | exclude | include } regular-expression ]


1.4 业务环回组典型配置举例

1. 组网需求

Device A上的所有以太网端口都支持Tunnel业务类型，通过配置将端口Ethernet1/0/1～Ethernet1/0/3加入到业务环回组中以实现对Tunnel业务类型增加带宽并进行负载分担的目的。

2. 配置步骤

# 创建业务环回组1，并指定其业务类型为Tunnel类型。

<DeviceA> system-view

[DeviceA] service-loopback group 1 type tunnel

# 分别在端口Ethernet1/0/1～Ethernet1/0/3上关闭MSTP、NDP和LLDP功能，并将其加入业务环回组1。

[DeviceA] interface ethernet1/0/1

[DeviceA-Ethernet1/0/1] undo stp enable

[SwitchA-Ethernet1/0/1] undo ndp enable

[DeviceA-Ethernet1/0/1] undo lldp enable

[DeviceA-Ethernet1/0/1] port service-loopback group 1

[DeviceA-Ethernet1/0/1] quit

[DeviceA] interface ethernet1/0/2

[DeviceA-Ethernet1/0/2] undo stp enable

[SwitchA-Ethernet1/0/2] undo ndp enable

[DeviceA-Ethernet1/0/2] undo lldp enable

[DeviceA-Ethernet1/0/2] port service-loopback group 1

[DeviceA-Ethernet1/0/2] quit

[DeviceA] interface ethernet1/0/3

[DeviceA-Ethernet1/0/3] undo stp enable

[SwitchA-Ethernet1/0/3] undo ndp enable

[DeviceA-Ethernet1/0/3] undo lldp enable

[DeviceA-Ethernet1/0/3] port service-loopback group 1

[DeviceA-Ethernet1/0/3] quit

# 创建Tunnel逻辑接口1，并在该接口上引用业务环回组1。

[DeviceA] interface tunnel 1

[DeviceA-Tunnel1] service-loopback-group 1


00-前言

前 言

H3C S3600V2系列以太网交换机配置指导共分为十本手册，介绍了S3600V2系列以太网交换机各软件特性的原理及其配置方法，包含原理简介、配置任务描述和配置举例。《三层技术-IP业务配置指导》主要介绍了IP业务相关技术的原理及具体配置方法。通过这些技术您可以完成IP地址的配置，进行IP参数的调整，将IP地址解析为以太网MAC地址，进行域名与IP地址之间的转换，对指定UDP端口的IP广播报文进行中继转发，实现IPv4网络和IPv6网络间的互通。

前言部分包含如下内容：

l 读者对象

l 本书约定

l 产品配套资料

l 资料获取方式

l 技术支持

l 资料意见反馈

读者对象

本手册主要适用于如下工程师：

l 网络规划人员

l 现场技术支持与维护人员

l 负责网络配置和维护的网络管理员

本书约定

1.命令行格式约定

格 式 | 意 义
粗体 | 命令行关键字（命令中保持不变、必须照输的部分）采用加粗字体表示。
斜体 | 命令行参数（命令中必须由实际值进行替代的部分）采用斜体表示。
[ ] | 表示用“[ ]”括起来的部分在命令配置时是可选的。
{ x | y | ... } | 表示从两个或多个选项中选取一个。
[ x | y | ... ] | 表示从两个或多个选项中选取一个或者不选。
{ x | y | ... } * | 表示从两个或多个选项中选取多个，最少选取一个，最多选取所有选项。
[ x | y | ... ] * | 表示从两个或多个选项中选取多个或者不选。
&<1-n> | 表示符号&前面的参数可以重复输入1～n次。
# | 由“#”号开始的行表示为注释行。

2.图形界面格式约定

格 式 | 意 义
< > | 带尖括号“< >”表示按钮名，如“单击<确定>按钮”。
[ ] | 带方括号“[ ]”表示窗口名、菜单名和数据表，如“弹出[新建用户]窗口”。
/ | 多级菜单用“/”隔开。如[文件/新建/文件夹]多级菜单表示[文件]菜单下的[新建]子菜单下的[文件夹]菜单项。

3.各类标志

本书还采用各种醒目标志来表示在操作过程中应该特别注意的地方，这些标志的意义如下：

该标志后的注释需给予格外关注，不当的操作可能会对人身造成伤害。

提醒操作中应注意的事项，不当的操作可能会导致数据丢失或者设备损坏。

为确保设备配置成功或者正常工作而需要特别关注的操作或信息。

对操作内容的描述进行必要的补充和说明。

配置、操作、或使用设备的技巧、小窍门。

4.图标约定

本书使用的图标及其含义如下：

该图标及其相关描述文字代表一般网络设备，如路由器、交换机、防火墙等。

该图标及其相关描述文字代表一般意义下的路由器，以及其他运行了路由协议的设备。

该图标及其相关描述文字代表二、三层以太网交换机，以及运行了二层协议的设备。

产品配套资料

H3C S3600V2系列以太网交换机的配套资料包括如下部分：

大类 | 资料名称 | 内容介绍
产品知识介绍 | 产品彩页 | 帮助您了解产品的主要规格参数及亮点
 | RPS电源用户手册 | 帮助您了解产品支持的RPS电源的外观、功能、规格
 | H3C低端系列以太网交换机RPS电源选购指南 | 帮助您了解各种RPS电源适用的交换机产品型号及RPS电源配套电缆的相关规格
 | H3C低端系列以太网交换机可插拔模块手册 | 帮助您了解产品支持的可插拔模块类型、外观和规格
设备安装 | 安全兼容性手册 | 列出产品的兼容性声明，并对兼容性和安全的细节进行说明
 | H3C 设备防雷安装指导手册 | 帮助您了解防雷接地设计和工程安装方法，以保证交换机具有良好的抗雷击性能
 | 快速安装指南 | 指导您对设备进行初始安装，通常针对最常用的情况，减少您的检索时间
 | 安装指导 | 帮助您详细了解设备硬件规格和安装方法，指导您对设备进行安装
 | H3C可插拔SFP[SFP+][XFP]模块安装指南 | 帮助您掌握SFP/SFP+/XFP模块的正确安装方法，避免因操作不当而造成器件损坏
业务配置 | 配置指导 | 帮助您掌握设备软件功能的配置方法及配置步骤
 | 命令参考 | 详细介绍设备的命令，相当于命令字典，方便您查阅各个命令的功能
运行维护 | H3C系列以太网交换机登录密码恢复手册 | 指导您在设备登录密码丢失的情况下，找回密码、或重新配置登录密码
 | 故障处理手册 | 指导您快速定位并处理软件故障
 | 版本说明书 | 帮助您了解产品版本的相关信息（包括：版本配套说明、兼容性说明、特性变更说明、技术支持信息）及软件升级方法

资料获取方式

您可以通过H3C网站（ www.h3c.com.cn ）获取最新的产品资料：

H3C网站与产品资料相关的主要栏目介绍如下：

l [服务支持/文档中心] ：可以获取硬件安装类、软件升级类、配置类或维护类等产品资料。

l [产品技术] ：可以获取产品介绍和技术介绍的文档，包括产品相关介绍、技术介绍、技术白皮书等。

l [解决方案] ：可以获取解决方案类资料。

l [服务支持/软件下载] ：可以获取与软件版本配套的资料。

技术支持

用户支持邮箱：customer_service@h3c.com

技术支持热线电话：400-810-0504（手机、固话均可拨打）

网址： http://www.h3c.com.cn

资料意见反馈

如果您在使用过程中发现产品资料的任何问题，可以通过以下方式反馈：

E-mail：info@h3c.com

感谢您的反馈，让我们做得更好！


1 ARP配置

三层以太网端口是指被配置为三层模式的以太网端口，有关以太网端口模式切换的操作，请参见“二层技术-以太网交换配置指导”中的“以太网端口配置”。

相关链接

  • 1.1 ARP简介
  • 1.2 配置ARP
  • 1.3 ARP显示和维护
  • 1.4 ARP典型配置举例
父主题： 01-ARP配置


1.1 ARP简介

1.1.1 ARP作用

ARP（Address Resolution Protocol，地址解析协议）是将IP地址解析为以太网MAC地址（或称物理地址）的协议。

在局域网中，当主机或其它网络设备有数据要发送给另一个主机或设备时，它必须知道对方的网络层地址（即IP地址）。但是仅仅有IP地址是不够的，因为IP数据报文必须封装成帧才能通过物理网络发送，因此发送站还必须有接收站的物理地址，所以需要一个从IP地址到物理地址的映射。ARP就是实现这个功能的协议。

1.1.2 ARP报文结构

ARP报文分为ARP请求和ARP应答报文，报文格式如图1-1 所示。

图1-1 ARP报文结构

l 硬件类型：表示硬件地址的类型。它的值为1表示以太网地址；

l 协议类型：表示要映射的协议地址类型。它的值为0x0800即表示IP地址；

l 硬件地址长度和协议地址长度分别指出硬件地址和协议地址的长度，以字节为单位。对于以太网上IP地址的ARP请求或应答来说，它们的值分别为6和4；

l 操作类型（OP）：1表示ARP请求，2表示ARP应答；

l 发送端MAC地址：发送方设备的硬件地址；

l 发送端IP地址：发送方设备的IP地址；

l 目标MAC地址：接收方设备的硬件地址。

l 目标IP地址：接收方设备的IP地址。

1.1.3 ARP地址解析过程

假设主机A和B在同一个网段，主机A要向主机B发送信息。如图1-2 所示，具体的地址解析过程如下：

(1) 主机A首先查看自己的ARP表，确定其中是否包含有主机B对应的ARP表项。如果找到了对应的MAC地址，则主机A直接利用ARP表中的MAC地址，对IP数据包进行帧封装，并将数据包发送给主机B。

(2) 如果主机A在ARP表中找不到对应的MAC地址，则将缓存该数据报文，然后以广播方式发送一个ARP请求报文。ARP请求报文中的发送端IP地址和发送端MAC地址为主机A的IP地址和MAC地址，目标IP地址和目标MAC地址为主机B的IP地址和全0的MAC地址。由于ARP请求报文以广播方式发送，该网段上的所有主机都可以接收到该请求，但只有被请求的主机（即主机B）会对该请求进行处理。

(3) 主机B比较自己的IP地址和ARP请求报文中的目标IP地址，当两者相同时进行如下处理：将ARP请求报文中的发送端（即主机A）的IP地址和MAC地址存入自己的ARP表中。之后以单播方式发送ARP响应报文给主机A，其中包含了自己的MAC地址。

(4) 主机A收到ARP响应报文后，将主机B的MAC地址加入到自己的ARP表中以用于后续报文的转发，同时将IP数据包进行封装后发送出去。

图1-2 ARP地址解析过程

当主机A和主机B不在同一网段时，主机A就会先向网关发出ARP请求，ARP请求报文中的目标IP地址为网关的IP地址。当主机A从收到的响应报文中获得网关的MAC地址后，将报文封装并发给网关。如果网关没有主机B的ARP表项，网关会广播ARP请求，目标IP地址为主机B的IP地址，当网关从收到的响应报文中获得主机B的MAC地址后，就可以将报文发给主机B；如果网关已经有主机B的ARP表项，网关直接把报文发给主机B。

1.1.4 ARP表

设备通过ARP解析到目的MAC地址后，将会在自己的ARP表中增加IP地址到MAC地址的映射表项，以用于后续到同一目的地报文的转发。

ARP表项分为动态ARP表项和静态ARP表项。

1. 动态ARP表项

动态ARP表项由ARP协议通过ARP报文自动生成和维护，可以被老化，可以被新的ARP报文更新，可以被静态ARP表项覆盖。当到达老化时间、接口down时会删除相应的动态ARP表项。

2. 静态ARP表项

静态ARP表项通过手工配置和维护，不会被老化，不会被动态ARP表项覆盖。

配置静态ARP表项可以增加通信的安全性。静态ARP表项可以限制和指定IP地址的设备通信时只使用指定的MAC地址，此时攻击报文无法修改此表项的IP地址和MAC地址的映射关系，从而保护了本设备和指定设备间的正常通信。

静态ARP表项分为长静态ARP表项和短静态ARP表项。

l 在配置长静态ARP表项时，除了配置IP地址和MAC地址项外，还必须配置该ARP表项所在VLAN和出接口。长静态ARP表项可以直接用于报文转发。

l 在配置短静态ARP表项时，只需要配置IP地址和MAC地址项。如果出接口是三层以太网端口，短静态ARP表项可以直接用于报文转发；如果出接口是VLAN接口，短静态ARP表项不能直接用于报文转发，当要发送IP数据包时，先发送ARP请求报文，如果收到的响应报文中的源IP地址和源MAC地址与所配置的IP地址和MAC地址相同，则将接收ARP响应报文的接口加入该静态ARP表项中，之后就可以用于IP数据包的转发。

l 一般情况下，ARP动态执行并自动寻求IP地址到以太网MAC地址的解析，无需管理员的介入。

l 当希望设备和指定用户只能使用某个固定的IP地址和MAC地址通信时，可以配置短静态ARP表项，当进一步希望限定这个用户只在某VLAN内的某个特定接口上连接时就可以配置长静态ARP表项。


1.2 配置ARP

1.2.1 手工添加静态ARP表项

静态ARP表项在设备正常工作时间一直有效，当设备的ARP表项所对应的VLAN或VLAN接口被删除时，如果是长静态ARP表项则被删除，如果是已经解析的短静态ARP表项则重新变为未解析状态。

表1-1 手工添加静态ARP表项

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
手工添加静态ARP表项 | 手工添加长静态ARP表项 | arp static ip-address mac-address vlan-id interface-type interface-number [ vpn-instance vpn-instance-name ] | 两者必选其一
 | 手工添加短静态ARP表项 | arp static ip-address mac-address [ vpn-instance vpn-instance-name ]

l 参数 vlan-id 用于指定ARP表项所对应的VLAN，vlan-id 必须是用户已经创建好的VLAN的ID，且 vlan-id 参数后面指定的以太网接口必须属于这个VLAN。VLAN对应的VLAN接口必须已经创建。

l 指定参数 vlan-id 和 ip-address 的情况下，参数 vlan-id 对应的VLAN接口的IP地址必须和参数 ip-address 指定的IP地址属于同一网段。

1.2.2 配置接口学习动态ARP表项的最大数目

设备可以通过ARP协议自动生成动态ARP表项。为了防止部分接口下的用户占用过多的ARP资源，可以通过设置接口学习动态ARP表项的最大数目来进行限制。当接口学习动态ARP表项的最大数目达到所设置的值时，该接口将不再学习动态ARP表项。

表1-2 配置接口学习动态ARP表项的最大数目

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
配置接口允许学习动态ARP表项的最大数目 | arp max-learning-num number | 可选 缺省情况下，二层接口不对允许学习动态ARP表项的最大数目进行限制，对于S3600V2-SI系列以太网交换机的三层接口允许学习动态ARP表项的最大数目为2048；对于S3600V2-EI系列以太网交换机的三层接口允许学习动态ARP表项的最大数目为8192 当配置接口允许学习动态ARP表项的最大数目为0时，表示禁止接口学习动态ARP表项

如果二层端口及其所属的VLAN接口都配置了允许学习动态ARP表项的最大数目，则以数目小的进行限制。

1.2.3 配置动态ARP表项的老化时间

为适应网络的变化，ARP表需要不断更新。ARP表中的动态ARP表项并非永远有效，每一条记录都有一个老化时间，到达老化时间仍得不到刷新的记录将被从ARP表中删除。如果在到达老化时间前记录被刷新，则重新计算老化时间。用户可以根据网络实际情况调整老化时间。

表1-3 配置动态ARP的老化时间

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置动态ARP的老化时间 | arp timer aging aging-time | 可选 缺省情况下，动态ARP的老化时间为20分钟

1.2.4 使能动态ARP表项的检查功能

动态ARP表项检查功能可以控制设备上是否可以学习MAC地址为组播MAC的动态ARP表项。

l 使能ARP表项的检查功能后，设备上不能学习MAC地址为组播MAC的动态ARP表项。

l 关闭ARP表项的检查功能后，设备上可以学习MAC地址为组播MAC的动态ARP表项。

表1-4 使能动态ARP表项的检查功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
使能动态ARP表项的检查功能 | arp check enable | 可选 缺省情况下，使能动态ARP表项的检查功能

1.2.5 配置快速更新ARP表项

如图1-3 所示，Laptop经常在无线站点AP1和AP2之间漫游，导致Switch上记录的Laptop的MAC地址与出端口的对应关系经常发生改变，但是Switch上的ARP表项不会立即更新，影响到数据业务的正常转发。

图1-3 快速更新ARP表项应用环境

使能快速更新ARP表项功能后，如果交换机上记录的MAC地址与出端口的对应关系发生改变，系统会立刻更新ARP表项，保证了数据业务的不间断转发。

表1-5 配置快速更新ARP表项

操作 | 命令 | 说明
进入系统视图 | system-view | -
使能快速更新ARP表项功能 | mac-address station-move quick-notify enable | 可选 缺省情况下，没有使能快速更新ARP表项功能

快速更新ARP表项功能通常用于无线组网环境中，在其它组网境中建议用户不要使用该功能。

1.2.6 配置组播ARP

微软的网络负载均衡（NLB，Network Load Balancing）功能，是其在Windows Server上开发的一个多服务器集群负载均衡特性。

NLB支持集群内服务器之间的负载分担以及冗余备份，当发生服务器故障时可以支持数据快速切换。为了保证快速切换，NLB要求交换机将业务流量转发至集群内的所有服务器或指定服务器，然后由各服务器将该服务器不期望的流量过滤掉，因此对于那些使用Windows Server作为服务器操作系统的中、小型数据中心来说，交换机与NLB的协同工作非常重要。

为了让业务流量能够被转发到所有服务器或指定服务器，微软NLB采取了一些处理机制，包括单播模式处理机制、组播模式处理机制和IGMP组播模式处理机制。

l 单播模式：在单播模式下，NLB重新为每个NLB节点分配一个共同的MAC地址（该MAC地址为集群MAC地址），并且在发送时修改数据报文的源MAC地址，从而使交换机不能将集群MAC地址学习到MAC地址表中，这样目的地址为集群MAC地址的数据报文将作为未知单播报文在交换机的所有端口上进行转发。

l 组播模式：在组播模式下，NLB使用一个组播地址（该MAC地址为虚拟MAC）用于NLB的通信，例如使用0300-5e11-1111来作为NLB节点的虚MAC地址。

l IGMP组播模式：IGMP组播模式和组播模式的区别在于：IGMP组播模式可以通过IGMP协议使交换机只将数据报文发送到连接NLB节点的端口，而不是所有端口。

l 目前，本系列交换机支持和Windows Server的NLB协同工作。

l 组播ARP功能仅适用于NLB采用组播模式处理机制的情况。

l 关于NLB的详细介绍请参见Windows Server的相关文档。

表1-6 配置组播ARP

操作 | 说明 | 详细配置
关闭ARP表项的检查功能 | undo arp check enable | 必选
手工添加静态ARP表项 | arp static ip-address mac-address vlan-id interface-type interface-number [ vpn-instance vpn-instance-name ] | 可选
配置静态组播MAC地址表项 | mac-address multicast mac-address interface interface-list vlan vlan-id | 必选

mac-address multicast 命令的详细介绍请参见“IP组播命令参考/IGMP Snooping配置命令”。


1.3 ARP显示和维护

在完成上述配置后，在任意视图下执行 display 命令可以显示配置后ARP的运行情况，通过查看显示信息验证配置的效果。

在用户视图下，用户可以执行 reset 命令清除ARP表中的ARP表项。

表1-7 ARP显示和维护

操作 | 命令
显示ARP表项 | display arp [ [ all | dynamic | static ] [ slot slot-number ] | vlan vlan-id | interface interface-type interface-number ] [ count | verbose ] [ | { begin | exclude | include } regular-expression ]
显示指定IP地址的ARP表项 | display arp ip-address [ slot slot-number ] [ verbose ] [ | { begin | exclude | include } regular-expression ]
显示指定VPN实例的ARP表项 | display arp vpn-instance vpn-instance-name [ count ] [ | { begin | exclude | include } regular-expression ]
显示动态ARP表项的老化时间 | display arp timer aging [ | { begin | exclude | include } regular-expression ]
清除ARP表项 | reset arp { all | dynamic | static | slot slot-number | interface interface-type interface-number }

清除ARP表项，将取消IP地址和MAC地址的映射关系，可能导致设备无法正常通信。清除前请务必仔细确认。


1.4 ARP典型配置举例

1.4.1 静态ARP表项配置举例

1. 组网需求

l Switch连接主机，通过接口Ethernet1/0/1连接Router。接口Ethernet1/0/1属于VLAN 10。

l Router的IP地址为192.168.1.1/24，MAC地址为00e0-fc01-0000。

网络管理员希望通过某种方法来防止恶意用户对Switch进行ARP攻击，增加Switch和Router通信的安全性。如果Router的IP地址和MAC地址是固定的，则可以通过在Switch上配置静态ARP表项的方法，防止恶意用户进行ARP攻击。

2. 组网图

图1-4 配置静态ARP表项组网图

3. 配置步骤

在Switch上进行下列配置。

# 创建VLAN 10。

<Switch> system-view

[Switch] vlan 10

[Switch-vlan10] quit

# 将接口Ethernet1/0/1加入到VLAN 10中。

[Switch] interface Ethernet 1/0/1

[Switch-Ethernet1/0/1] port link-type trunk

[Switch-Ethernet1/0/1] port trunk permit vlan 10

[Switch-Ethernet1/0/1] quit

# 创建接口Vlan-interface10，并配置IP地址。

[Switch] interface vlan-interface 10

[Switch-vlan-interface10] ip address 192.168.1.2 24

[Switch-vlan-interface10] quit

# 配置一条静态ARP表项，IP地址为192.168.1.1，对应的MAC地址为00e0-fc01-0000，此条ARP表项对应的出接口为属于VLAN 10的接口Ethernet1/0/1。

[Switch] arp static 192.168.1.1 00e0-fc01-0000 10 Ethernet 1/0/1

# 查看静态ARP表项信息。

[Switch] display arp static

Type: S-Static D-Dynamic A-Authorized

IP Address MAC Address VLAN ID Interface Aging Type

192.168.1.1 00e0-fc01-0000 10 Eth1/0/1 N/A S

1.4.2 组播ARP配置举例

1. 组网需求

在一个小型数据中心里，采用微软的NLB（Network Loadbalancing）功能的组播模式处理机制，为了使交换机能够和NLB协同工作，在交换机上进行如下配置：

l 端口Ethernet1/0/2和Ethernet1/0/3属于Vlan 1，Vlan-interface1的IP地址为16.1.1.30/24；

l 端口Ethernet1/0/1和Ethernet1/0/4属于Vlan 2，Vlan-interface2的IP地址为17.1.1.1/24；

l Host A和Host B的网关的IP地址为17.1.1.1/24；

l Server A 和 Srever B的网关的IP地址为16.1.1.30/24。

l 关闭ARP表项检查功能。关闭ARP表项的检查功能后，可以学习MAC地址为组播MAC的动态ARP表项；

l 为了保证除Switch 的Ethernet1/0/2和Ethernet1/0/3以外的其他端口不会接收到相关报文，在Switch上手工添加静态组播MAC表项。

2. 组网图

图1-5 组播ARP配置举例

3. 配置步骤

l 本配置举例仅给出交换机上的配置，有关服务器上NLB的配置请参见Windows Server的相关手册。

l 该配置举例仅适用于NLB的组播模式，假设Server的虚IP地址为16.1.1.100/24，虚MAC地址为03bf-1001-0164。

l 配置Switch

# 配置接口Vlan-interface2的IP地址。

<Switch> system-view

[Switch] vlan 2

[Switch-vlan2] port Ethernet 1/0/4

[Switch-vlan2] port Ethernet 1/0/1

[Switch-vlan2] quit

[Switch] interface vlan-interface 2

[Switch-Vlan-interface2] ip address 17.1.1.1 255.255.255.0

[Switch-Vlan-interface2] quit

# 配置接口Vlan-interface1的IP地址。

[Switch] interface vlan-interface 1

[Switch-Vlan-interface1] ip address 16.1.1.30 255.255.255.0

[Switch-Vlan-interface1] quit

#关闭ARP表项检查功能。

[Switch] undo arp check enable

# 手工添加静态组播MAC表项。

[Switch] mac-address multicast 03bf-1001-0164 interface Ethernet 1/0/2 Ethernet 1/0/3 vlan 1

4. 验证结果

l NLB 负载分担功能测试：分别在Server A和Server B上启动FTP Server，两台host向虚拟IP发起登录请求，登录在不同的Server上；

l NLB冗余备份功能测试：禁用Server A的网卡，两台host向虚拟IP发起登录请求，应均登录到Server B的FTP Server上。


2 免费ARP配置

相关链接

  • 2.1 免费ARP简介
  • 2.2 配置免费ARP
父主题： 01-ARP配置


2.1 免费ARP简介

免费ARP报文是一种特殊的ARP报文，该报文中携带的发送端IP地址和目标IP地址都是本机IP地址，报文源MAC地址是本机MAC地址，报文的目的MAC地址是广播地址。

设备通过对外发送免费ARP报文来实现以下功能：

l 确定其它设备的IP地址是否与本机的IP地址冲突。当其它设备收到免费ARP报文后，如果发现报文中的IP地址和自己的IP地址相同，则给发送免费ARP报文的设备返回一个ARP应答，告知该设备IP地址冲突。

l 设备改变了硬件地址，通过发送免费ARP报文通知其它设备更新ARP表项。

1. 免费ARP报文学习功能的作用

使能了免费ARP报文学习功能后，设备会根据收到的免费ARP报文中携带的信息（源IP地址、源MAC地址）对自身维护的ARP表进行修改。设备先判断ARP表中是否存在与此免费ARP报文源IP地址对应的ARP表项：

l 如果没有对应的ARP表项，设备会根据该免费ARP报文中携带的信息新建ARP表项；

l 如果存在对应的ARP表项，设备会根据该免费ARP报文中携带的信息更新对应的ARP表项。

关闭免费ARP报文学习功能后，设备不会根据收到的免费ARP报文来新建ARP表项，但是会更新已存在的对应ARP表项。如果用户不希望通过免费ARP报文来新建ARP表项，可以关闭免费ARP报文学习功能，以节省ARP表项资源。

2. 定时发送免费ARP功能的作用

定时发送免费ARP功能可以及时通知下行设备更新ARP表项或者MAC地址表项，主要应用场景如下：

(1) 防止仿冒网关的ARP攻击

如果攻击者仿冒网关发送免费ARP报文，就可以欺骗同网段内的其它主机，使得被欺骗的主机访问网关的流量，被重定向到一个错误的MAC地址，导致其它主机用户无法正常访问网络。

为了尽量避免这种仿冒网关的ARP攻击，可以在网关的接口上使能定时发送免费ARP功能。使能该功能后，网关接口上将按照配置的时间间隔周期性发送接口主IP地址和手工配置的从IP地址的免费ARP报文。这样，每台主机都可以学习到正确的网关，从而正常访问网络。

(2) 防止主机ARP表项老化

在实际环境中，当网络负载较大或接收端主机的CPU占用率较高时，可能存在ARP报文被丢弃或主机无法及时处理接收到的ARP报文等现象。这种情况下，接收端主机的动态ARP表项会因超时而老化，在其重新学习到发送设备的ARP表项之前，二者之间的流量就会发生中断。

为了解决上述问题，可以在网关的接口上使能定时发送免费ARP功能。使能该功能后，网关接口上将按照配置的时间间隔周期性发送接口主IP地址和手工配置的从IP地址的免费ARP报文。这样，接收端主机可以及时更新ARP映射表，从而防止了上述流量中断现象。

(3) 防止VRRP虚拟IP地址冲突

当网络中存在VRRP备份组时，需要由VRRP备份组的Master路由器周期性的向网络内的主机发送免费ARP报文，使主机更新本地ARP地址表，从而确保网络中不会存在IP地址与VRRP虚拟IP地址相同的设备。

由于用户可以设定VRRP虚拟IP地址和MAC地址对应关系，因此有以下两种情况：

l 如果当前VRRP虚拟IP地址和虚拟MAC地址对应，则免费ARP报文中的源MAC地址为VRRP虚拟路由器对应的虚拟MAC地址。

l 如果当前VRRP虚拟IP地址和实际MAC地址对应，则免费ARP报文中的源MAC地址为VRRP备份组中Master路由器接口的MAC地址。

关于VRRP的详细介绍，请参见“可靠性配置指导”中的“VRRP”。


2.2 配置免费ARP

 | 命令 | 说明
进入系统视图 | system-view | -
使能免费ARP报文学习功能 | gratuitous-arp-learning enable | 可选 缺省情况下，设备免费ARP报文的学习功能处于开启状态
使能收到非同一网段ARP请求时发送免费ARP报文功能 | gratuitous-arp-sending enable | 可选 缺省情况下，设备收到非同一网段的ARP请求时不发送免费ARP报文
进入接口视图 | interface interface-type interface-number | -
使能定时发送免费ARP功能，并设置发送免费ARP报文的周期 | arp send-gratuitous-arp [ interval milliseconds ] | 可选 缺省情况下，定时发送免费ARP功能处于关闭状态

l 使能定时发送免费ARP功能可在VLAN接口视图/三层以太网接口视图下进行配置。

l 设备最多允许同时在1024个接口上使能定时发送免费ARP功能。

l 配置定时发送免费ARP功能后，只有当接口链路up并且配置IP地址后，此功能才真正生效。

l 如果修改了免费ARP报文的发送周期，则在下一个发送周期才能生效。

l 如果同时在很多接口下使能定时发送免费ARP功能，或者每个接口有大量的从IP地址，或者两种情况共存的同时又配置很小的发送时间间隔，那么免费ARP报文的发送频率可能会远远低于用户的预期。


3 代理ARP配置

相关链接

  • 3.1 代理ARP简介
  • 3.2 配置代理ARP功能
  • 3.3 代理ARP显示和维护
  • 3.4 代理ARP典型配置举例
父主题： 01-ARP配置


3.1 代理ARP简介

如果ARP请求是从一个网络的主机发往同一网段却不在同一物理网络上的另一台主机，那么连接它们的具有代理ARP功能的设备就可以回答该请求，这个过程称作代理ARP（Proxy ARP）。

代理ARP功能屏蔽了分离的物理网络这一事实，使用户使用起来，好像在同一个物理网络上。

代理ARP分为普通代理ARP和本地代理ARP，二者的应用场景有所区别：

l 普通代理ARP的应用环境为：想要互通的主机分别连接到设备的不同三层接口上，且这些主机不在同一个广播域中。

l 本地代理ARP的应用环境为：想要互通的主机连接到设备的同一个三层接口上，且这些主机不在同一个广播域中。

如无特殊说明，本章后续描述中的代理ARP均指普通代理ARP。

3.1.1 代理ARP

处于同一网段内的主机，当连接到设备的不同三层接口时，可以利用设备的代理ARP功能，通过三层转发实现互通。

代理ARP的典型应用环境如图3-1 所示。设备Switch通过两个VLAN接口Vlan-interface1和 Vlan-interface2连接两个网络，两个VLAN接口的IP地址不在同一个网段，接口地址分别为192.168.10.99/24、192.168.20.99/24。但是两个网络内的主机Host A和Host B的地址通过掩码的控制，既与相连设备的接口地址在同一网段，同时二者也处于同一个网段。

图3-1 代理ARP的应用环境

在这种组网情况下，当Host A需要与Host B通信时，由于目的IP地址与本机的IP地址为同一网段，因此Host A会广播发送ARP请求报文，请求Host B的MAC地址。但是，此时的两台主机处于不同的广播域中，Host B无法收到Host A的ARP请求报文，当然也就无法应答。

通过在Switch上启用代理ARP功能，可以解决此问题。启用代理ARP后，Switch可以应答Host A的ARP请求。同时，Switch相当于Host B的代理，把从其他主机发送过来的报文转发给它。

代理ARP的优点是，它可以只被应用在一个设备上（此时该设备的作用相当于网关），不会影响到网络中其他设备的路由表。代理ARP功能可以在主机没有配置缺省网关或者主机没有任何路由能力的情况下使用。

3.1.2 本地代理ARP

本地代理ARP的应用场景如图3-2 所示。Host A和Host B属于同一个VLAN 2，但它们分别连接到被二层隔离的端口Ethernet1/0/3和Ethernet1/0/1上，通过在SwitchA上启用本地代理ARP功能，可以实现Host A和Host B的三层互通。

图3-2 本地代理ARP的应用环境

本地代理ARP可以在下列三种情况下实现主机之间的三层互通：

l 想要互通的主机分别连接到同一个VLAN中的不同二层隔离端口下；

l 使能Super VLAN功能后，想要互通的主机属于不同的Sub VLAN；

l 使能Isolate-user-vlan功能后，想要互通的主机属于不同的Secondary VLAN。


3.2 配置代理ARP功能

代理ARP和本地代理ARP功能均可在VLAN接口视图/三层以太网接口视图/三层聚合接口视图下进行配置。

表3-1 配置代理ARP功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
开启代理ARP功能 | proxy-arp enable | 必选 缺省情况下，关闭代理ARP功能

表3-2 配置本地代理ARP功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
开启本地代理ARP功能 | local-proxy-arp enable [ ip-range startIP to endIP ] | 必选 缺省情况下，关闭本地代理ARP功能


3.3 代理ARP显示和维护

在完成上述配置后，在任意视图下执行 display 命令可以显示配置后代理ARP的运行情况，查看显示信息验证配置的效果。

表3-3 代理ARP显示和维护

操作 | 命令
显示代理ARP的状态 | display proxy-arp [ interface interface-type interface-number ] [ | { begin | exclude | include } regular-expression ]
显示本地代理ARP的状态 | display local-proxy-arp [ interface interface-type interface-number ] [ | { begin | exclude | include } regular-expression ]


3.4 代理ARP典型配置举例

3.4.1 代理ARP配置举例

1. 组网需求

Host A和Host D为同一网段的主机（Host A的IP地址是192.168.10.100/16，Host D的IP地址是192.168.20.200/16），但却被设备Switch分在两个不同的子网（Host A属于VLAN 1，Host D属于VLAN 2）。

当Host A需要与Host D通信时，由于目的IP地址与本机的IP地址属于同一网段，Host A会直接发出请求Host D硬件地址的ARP请求。但是，因为两台主机处于不同的广播域中，Host D无法收到Host A的ARP请求报文，当然也就无法应答。通过在Switch上启用代理ARP功能，可以使得处在两个子网的Host A和Host D互通。

2. 组网图

图3-3 配置代理ARP组网图

3. 配置步骤

# 创建VLAN 2。

<Switch> system-view

[Switch] vlan 2

[Switch-vlan2] quit

# 配置接口Vlan-interface1的IP地址。

[Switch] interface vlan-interface 1

[Switch-Vlan-interface1] ip address 192.168.10.99 255.255.255.0

# 开启接口Vlan-interface1的代理ARP功能。

[Switch-Vlan-interface1] proxy-arp enable

[Switch-Vlan-interface1] quit

# 配置接口Vlan-interface2的IP地址。

[Switch] interface vlan-interface 2

[Switch-Vlan-interface2] ip address 192.168.20.99 255.255.255.0

# 开启接口Vlan-interface2的代理ARP功能。

[Switch-Vlan-interface2] proxy-arp enable

配置完成后，Host A和Host D可以互相ping通。

3.4.2 端口隔离时的本地代理ARP配置举例

1. 组网需求

l Host A和Host B属于同一个VLAN，分别与设备Switch B的端口Ethernet1/0/3和Ethernet1/0/1相连；

l 设备Switch B通过端口Ethernet1/0/2端口与Switch A相连。

在此网络中要求：

l Host A和Host B之间不能二层互通。

l Host A和Host B之间可以进行三层通信。

通过如下方法，可以满足上述需求：

l 配置端口隔离实现Host A和Host B之间不能二层互通。

l 配置本地代理ARP功能实现Host A和Host B之间三层互通。

2. 组网图

图3-4 配置端口隔离时的本地代理ARP组网图

3. 配置步骤

(1) 配置Switch B

# 在Switch B上端口Ethernet1/0/3、Ethernet1/0/1、Ethernet1/0/2属于同一VLAN 2；Host A和Host B彼此之间二层报文不能互通。

<SwitchB> system-view

[SwitchB] vlan 2

[SwitchB-vlan2] port Ethernet 1/0/3

[SwitchB-vlan2] port Ethernet 1/0/1

[SwitchB-vlan2] port Ethernet 1/0/2

[SwitchB-vlan2] quit

[SwitchB] interface Ethernet 1/0/3

[SwitchB-Ethernet1/0/3] port-isolate enable

[SwitchB-Ethernet1/0/3] quit

[SwitchB] interface Ethernet 1/0/1

[SwitchB-Ethernet1/0/1] port-isolate enable

[SwitchB-Ethernet1/0/1] quit

(2) 配置SwitchA

# 创建VLAN 2，添加端口Ethernet1/0/2到VLAN 2。

<SwitchA> system-view

[SwitchA] vlan 2

[SwitchA-vlan2] port Ethernet 1/0/2

[SwitchA-vlan2] quit

[SwitchA] interface vlan-interface 2

[SwitchA-Vlan-interface2] ip address 192.168.10.100 255.255.0.0

从Host A上ping不通Host B，表明Host A和Host B二层隔离。

# 配置本地代理ARP，实现Host A和Host B之间的三层互通。

[SwitchA-Vlan-interface2] local-proxy-arp enable

从Host A上可以ping通Host B，表明Host A和Host B三层互通了。

3.4.3 Super VLAN中的本地代理ARP配置举例

1. 组网需求

l 创建Super VLAN：VLAN 10，VLAN接口的IP地址为192.168.10.100/16。

l 创建Sub VLAN：VLAN 2、VLAN 3。

l 端口Ethernet1/0/2属于VLAN 2，端口Ethernet1/0/1属于VLAN 3。

l Host A属于VLAN 2，与Switch的端口Ethernet1/0/2相连；Host B属于VLAN 3，与Switch的端口Ethernet1/0/1相连。

由于Host A和Host B属于不同的Sub VLAN，Host A和Host B之间二层隔离。通过在Switch上配置本地代理ARP功能，可以实现Host A和Host B之间的三层互通。

2. 组网图

图3-5 配置Super VLAN中的本地代理ARP组网图

3. 配置步骤

# 创建Super VLAN，Sub VLAN；添加端口Ethernet1/0/2到VLAN 2，端口Ethernet1/0/1到VLAN 3；配置VLAN 10接口的IP地址为192.168.10.100/16。

<Switch> system-view

[Switch] vlan 2

[Switch-vlan2] port Ethernet 1/0/2

[Switch-vlan2] quit

[Switch] vlan 3

[Switch-vlan3] port Ethernet 1/0/1

[Switch-vlan3] quit

[Switch] vlan 10

[Switch-vlan10] supervlan

[Switch-vlan10] subvlan 2 3

[Switch-vlan10] quit

[Switch] interface vlan-interface 10

[Switch-Vlan-interface10] ip address 192.168.10.100 255.255.0.0

从Host A上ping不通Host B，表明Host A和Host B二层隔离。

# 配置本地代理ARP，实现Sub VLAN之间的三层互通。

[Switch-Vlan-interface10] local-proxy-arp enable

从Host A上可以ping通Host B，表明Host A和Host B三层互通了。

3.4.4 Isolate-user-vlan中的本地代理ARP配置举例

1. 组网需求

l 设备Switch A下接设备Switch B。

l 设备Switch B上的VLAN 5为Isolate-user-vlan，包含上行端口Ethernet1/0/2和两个Secondary VLAN（VLAN 2和VLAN 3），VLAN 2包含端口Ethernet1/0/3，VLAN 3包含端口Ethernet1/0/1。

l Host A属于VLAN 2，与Switch B的端口Ethernet1/0/3相连；Host B属于VLAN 3，与Switch B的端口Ethernet1/0/1相连。

由于Host A和Host B属于不同的Secondary VLAN，Host A和Host B之间二层隔离。通过在Switch A上启用本地代理ARP功能，可以实现Host A和Host B之间的三层互通。

2. 组网图

图3-6 配置Isolate-user-vlan中的本地代理ARP组网图

3. 配置步骤

(1) 配置Switch B

# 在设备Switch B上创建VLAN 2、VLAN 3和VLAN 5；添加端口Ethernet1/0/3到VLAN 2，端口Ethernet1/0/1到VLAN 3，端口Ethernet1/0/2到VLAN 5；配置VLAN 5为Isolate-user-vlan，VLAN 2和VLAN 3为Secondary VLAN；配置Isolate-user-vlan和Secondary VLAN间的映射关系。

<SwitchB> system-view

[SwitchB] vlan 2

[SwitchB-vlan2] port Ethernet 1/0/3

[SwitchB-vlan2] quit

[SwitchB] vlan 3

[SwitchB-vlan3] port Ethernet 1/0/1

[SwitchB-vlan3] quit

[SwitchB] vlan 5

[SwitchB-vlan5] port Ethernet 1/0/2

[SwitchB-vlan5] isolate-user-vlan enable

[SwitchB-vlan5] quit

[SwitchB] interface Ethernet 1/0/2

[SwitchB-Ethernet1/0/2] port isolate-user-vlan 5 promiscuous

[SwitchB-Ethernet1/0/2] quit

[SwitchB] interface Ethernet 1/0/1

[SwitchB-Ethernet1/0/1] port isolate-user-vlan host

[SwitchB-Ethernet1/0/1] quit

[SwitchB] interface Ethernet 1/0/3

[SwitchB-Ethernet1/0/3] port isolate-user-vlan host

[SwitchB-Ethernet1/0/3] quit

[SwitchB] isolate-user-vlan 5 secondary 2 3

(2) 配置Switch A

# 创建VLAN 5，添加端口Ethernet1/0/2到VLAN 5。

<SwitchA> system-view

[SwitchA] vlan 5

[SwitchA-vlan5] port Ethernet 1/0/2

[SwitchA-vlan5] quit

[SwitchA] interface vlan-interface 5

[SwitchA-Vlan-interface5] ip address 192.168.10.100 255.255.0.0

从Host A上ping不通Host B，表明Host A和Host B二层隔离。

# 配置本地代理ARP，实现Secondary VLAN之间的三层互通。

[SwitchA-Vlan-interface5] local-proxy-arp enable

从Host A上可以ping通Host B，表明Host A和Host B三层互通了。


4 ARP Snooping配置

相关链接

  • 4.1 ARP Snooping简介
  • 4.2 配置ARP Snooping
  • 4.3 ARP Snooping显示和维护
父主题： 01-ARP配置


4.1 ARP Snooping简介

4.1.1 作用

ARP Snooping功能是一个用于二层交换网络环境的特性，通过侦听ARP报文建立ARP Snooping表项，从而提供给MFF手动方式等使用。

关于MFF的详细介绍，请参见“安全配置指导”中的“MFF”。

4.1.2 工作机制

设备上的一个VLAN使能ARP Snooping后，该VLAN内所有端口接收的ARP报文会被重定向到CPU。CPU对重定向上送的ARP报文进行分析，获取ARP报文的源IP地址、源MAC地址、VLAN和入端口信息，建立记录用户信息的ARP Snooping表项。

ARP Snooping表项的老化时间为25分钟，有效时间为15分钟。如果一个ARP Snooping表项自最后一次更新后15分钟内没有收到ARP更新报文，则此表项开始进入失效状态，不再对外提供服务，其他特性查找此表项将会失败。当收到源IP地址和源MAC与已存在的ARP Snooping表项IP地址和MAC均相同的ARP报文时，此ARP Snooping表项进行更新，重新开始生效，并重新老化计时。当ARP Snooping表项达到老化时间后，则将此ARP Snooping表项删除。

如果ARP Snooping收到ARP报文时检查到相同IP的ARP Snooping表项已经存在，但是MAC地址发生了变化，则认为发生了攻击，此时ARP Snooping表项处于冲突状态，表项失效，不再对外提供服务，并在25分钟后删除此表项。


4.2 配置ARP Snooping

表4-1 配置ARP Snooping

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入VLAN视图 | vlan vlan-id | -
使能ARP Snooping功能 | arp-snooping enable | 必选 缺省情况下，关闭ARP Snooping功能


4.3 ARP Snooping显示和维护

在完成上述配置后，在任意视图下执行 display 命令可以显示配置后ARP Snooping的运行情况，通过查看显示信息验证配置的效果。

在用户视图下，用户可以执行 reset 命令清除ARP Snooping表中的表项。

表4-2 ARP Snooping显示和维护

操作 | 命令
显示ARP Snooping表项 | display arp-snooping [ ip ip-address | vlan vlan-id ] [ | { begin | exclude | include } regular-expression ]
清除ARP Snooping表项 | reset arp-snooping [ ip ip-address | vlan vlan-id ]


1 IP地址配置

本文中所指的“接口”为三层口，包括VLAN接口、三层以太网端口等。三层以太网端口是指被配置为三层模式的以太网端口，有关以太网端口模式切换的操作，请参见“二层技术-以太网交换配置指导”中的“以太网端口配置”。

相关链接

  • 1.1 IP地址简介
  • 1.2 配置IP地址
  • 1.3 配置接口借用IP地址
  • 1.4 IP地址的显示和维护
父主题： 02-IP地址配置


1.1 IP地址简介

1.1.1 IP地址的分类和表示

连接到Internet上的设备接口必须有一个全球唯一的IP地址。IP地址长度为32比特，通常采用点分十进制方式表示，即每个IP地址被表示为以小数点隔开的4个十进制整数，每个整数对应一个字节，如10.1.1.1。

IP地址由两部分组成：

l 网络号码字段（Net-id）：用于区分不同的网络。网络号码字段的前几位称为类别字段（又称为类别比特），用来区分IP地址的类型。

l 主机号码字段（Host-id）：用于区分一个网络内的不同主机。

为了方便管理及组网，IP地址分成五类，如图1-1 所示，其中蓝色部分为类别字段。

图1-1 五类IP地址

上述五类IP地址的地址范围如表1-1 所示。目前大量使用的IP地址属于A、B、C三类。

表1-1 IP地址分类及范围

地址类型 | 地址范围 | 说明
A | 0.0.0.0～127.255.255.255 | IP地址0.0.0.0仅用于主机在系统启动时进行临时通信，并且永远不是有效目的地址 127.0.0.0网段的地址都保留作环回测试，发送到这个地址的分组不会输出到链路上，它们被当作输入分组在内部进行处理
B | 128.0.0.0～191.255.255.255 | -
C | 192.0.0.0～223.255.255.255 | -
D | 224.0.0.0～239.255.255.255 | 组播地址
E | 240.0.0.0～255.255.255.255 | 255.255.255.255用于广播地址，其他地址保留今后使用

1.1.2 特殊的IP地址

下列IP地址具有特殊的用途，不能作为主机的IP地址。

l Net-id为全0的地址：表示本网络内的主机。例如，0.0.0.16表示本网络内Host-id为16的主机。

l Host-id为全0的地址：网络地址，用于标识一个网络。

l Host-id为全1的地址：网络广播地址。例如，目的地址为192.168.1.255的报文，将转发给192.168.1.0网络内所有的主机。

1.1.3 子网和掩码

随着Internet的快速发展，IP地址已近枯竭。如果将一个可以容纳65534（216-2，去掉主机号码字段全1的广播地址和主机号码字段全0的网段地址）个主机的B类地址分配给一个只有几百台主机的网络，就会浪费大量的IP地址。

为了充分利用已有的IP地址，可以使用子网掩码将网络划分为更小的部分（即子网）。通过从主机号码字段部分划出一些比特位作为子网号码字段，能够将一个网络划分为多个子网。子网号码字段的长度由子网掩码确定。

子网掩码是一个长度为32比特的数字，由一串连续的“1”和一串连续的“0”组成。“1”对应于网络号码字段和子网号码字段，而“0”对应于主机号码字段。

图1-2 所示是一个B类地址划分子网的情况。

图1-2 IP地址子网划分

多划分出一个子网号码字段会浪费一些IP地址。例如，一个B类地址可以容纳65534（216-2，去掉主机号码字段全1的广播地址和主机号码字段全0的网段地址）个主机号码。但划分出9比特长的子网字段后，最多可有512（29）个子网，每个子网有7比特的主机号码，即每个子网最多可有126（27-2，去掉主机号码字段全1的广播地址和主机号码字段全0的网段地址）个主机号码。因此主机号码的总数是512*126=64512个，比不划分子网时要少1022个。

若不进行子网划分，则子网掩码为默认值，此时子网掩码中“1”的长度就是网络号码的长度，即A、B、C类IP地址对应的子网掩码默认值分别为255.0.0.0、255.255.0.0和255.255.255.0。


1.2 配置IP地址

接口有了IP地址后就可以与其他主机进行IP通信。接口获取IP地址有以下几种方式：

l 通过手工指定IP地址

l 通过BOOTP分配得到IP地址

l 通过DHCP分配得到IP地址

这几种方式是互斥的，通过新的配置方式获取的IP地址会覆盖通过原有方式获取的IP地址。例如，首先通过手工指定了IP地址，然后使用DHCP协议申请IP地址，那么手工指定的IP地址会被删除，接口的IP地址是通过DHCP协议分配的。

本节只介绍通过手工指定IP地址的方式。通过BOOTP和DHCP分配得到IP地址方式的介绍请参见“三层技术-IP业务配置指导”中的“DHCP概述”。

1.2.1 配置接口的IP地址

设备的每个接口可以配置多个IP地址，其中一个为主IP地址，其余为从IP地址。

一般情况下，一个接口只需配置一个主IP地址，但在有些特殊情况下需要配置从IP地址。比如，一台设备通过一个接口连接了一个局域网，但该局域网中的计算机分别属于2个不同的子网，为了使设备与局域网中的所有计算机通信，就需要在该接口上配置一个主IP地址和一个从IP地址。

表1-2 配置接口的IP地址

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
配置接口的IP地址 | ip address ip-address { mask-length | mask } [ sub ] | 必选 缺省情况下，没有为接口配置IP地址

l 一个接口只能有一个主IP地址。新配置的主IP地址将覆盖原有主IP地址。

l 当接口被配置为通过BOOTP、DHCP方式获取IP地址后，则不能再给该接口配置从IP地址。

l 同一接口的主、从IP地址可以在同一网段，但不同接口之间的IP地址不可以在同一网段。

1.2.2 IP地址配置举例

1. 组网需求

Switch的端口（属于VLAN 1）连接一个局域网，局域网中的计算机分别属于2个网段：172.16.1.0/24和172.16.2.0/24。要求这两个网段的主机都可以通过Switch与外部网络通信，且这两个网段中的主机能够互通。

2. 组网图

图1-3 IP地址配置组网图

3. 配置步骤

针对上述的需求，如果在Switch的VLAN接口1上只配置一个IP地址，则只有一部分主机能够通过Switch与外部网络通信。为了使局域网内的所有主机都能够通过Switch访问外部网络，需要配置VLAN接口1的从IP地址。为了使两个网段中的主机能够互通，两个网段中的主机需要分别将Switch上VLAN接口1的主IP地址和从IP地址设置为网关。

# 配置VLAN接口1的主IP地址和从IP地址。

<Switch> system-view

[Switch] interface vlan-interface 1

[Switch-Vlan-interface1] ip address 172.16.1.1 255.255.255.0

[Switch-Vlan-interface1] ip address 172.16.2.1 255.255.255.0 sub

# 在172.16.1.0/24网段中的主机上配置网关为172.16.1.1；在172.16.2.0/24网段中的主机上配置网关为172.16.2.1。

# 使用 ping 命令检测Switch与网络172.16.1.0/24内主机的连通性。

<Switch> ping 172.16.1.2

PING 172.16.1.2: 56 data bytes, press CTRL_C to break

Reply from 172.16.1.2: bytes=56 Sequence=1 ttl=255 time=25 ms

Reply from 172.16.1.2: bytes=56 Sequence=2 ttl=255 time=27 ms

Reply from 172.16.1.2: bytes=56 Sequence=3 ttl=255 time=26 ms

Reply from 172.16.1.2: bytes=56 Sequence=4 ttl=255 time=26 ms

Reply from 172.16.1.2: bytes=56 Sequence=5 ttl=255 time=26 ms

--- 172.16.1.2 ping statistics ---

5 packet(s) transmitted

5 packet(s) received

0.00% packet loss

round-trip min/avg/max = 25/26/27 ms

显示信息表示Switch与网络172.16.1.0/24内的主机可以互通。

# 使用 ping 命令检测Switch与网络172.16.2.0/24内主机的连通性。

<Switch> ping 172.16.2.2

PING 172.16.2.2: 56 data bytes, press CTRL_C to break

Reply from 172.16.2.2: bytes=56 Sequence=1 ttl=255 time=25 ms

Reply from 172.16.2.2: bytes=56 Sequence=2 ttl=255 time=26 ms

Reply from 172.16.2.2: bytes=56 Sequence=3 ttl=255 time=26 ms

Reply from 172.16.2.2: bytes=56 Sequence=4 ttl=255 time=26 ms

Reply from 172.16.2.2: bytes=56 Sequence=5 ttl=255 time=26 ms

--- 172.16.2.2 ping statistics ---

5 packet(s) transmitted

5 packet(s) received

0.00% packet loss

round-trip min/avg/max = 25/25/26 ms

显示信息表示Switch与网络172.16.2.0/24内的主机可以互通。

# 使用 ping 命令检测网络172.16.1.0/24和网络172.16.2.0/24内主机的连通性。在Host A上可以ping通Host B。


1.3 配置接口借用IP地址

所谓“IP地址借用”，是指一个接口上没有配置IP地址，但为了使该接口能正常使用，就向同一设备上其它有IP地址的接口借用一个IP地址。IP地址借用使用的场合如下：

l 在IP地址资源比较缺乏的环境下，为了节约IP地址资源，可以配置某个接口借用其他接口的IP地址。

l 如果某个接口只是偶尔使用，可以配置该接口借用其他接口的IP地址，而不必让其一直占用一个单独的IP地址。

1.3.1 配置准备

被借用接口的主IP地址已经配置，配置方法可以为手工指定、通过BOOTP或DHCP动态获取。

1.3.2 配置接口借用IP地址

表1-3 配置接口借用IP地址

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入Tunnel接口视图 | interface tunnel number | -
配置本接口借用指定接口的IP地址 | ip address unnumbered interface interface-type interface-number | 必选 缺省情况下，不借用其它接口的IP地址

l 三层以太网端口和Loopback接口的IP地址可被其它接口借用，但本身不能借用其它接口的地址。

l 被借用接口的地址本身不能为借用地址。

l 一个接口的地址可以借给多个接口。

l 如果被借用接口有多个IP地址，则只有主IP地址能被借用。

l 借用接口的IP地址始终与被借用接口的IP地址保持一致，并且随着被借用接口IP地址的变化而变化。即如果被借用接口已经配置IP地址，则借用接口的IP地址与被借用接口相同；如果被借用接口没有配置IP地址，则借用接口的IP地址也处于未配置状态。


1.4 IP地址的显示和维护

在完成上述配置后，在任意视图下执行 display 命令可以显示配置后IP地址的运行情况，通过查看显示信息验证配置的效果。

表1-4 IP地址的显示和维护

操作 | 命令
显示三层接口的相关信息 | display ip interface [ interface-type interface-number ] [ | { begin | exclude | include } regular-expression ]
显示三层接口的IP基本配置信息 | display ip interface [ interface-type [ interface-number ] ] brief [ | { begin | exclude | include } regular-expression ]


1 DHCP概述

相关链接

  • 1.1 DHCP简介
  • 1.2 DHCP的IP地址分配
  • 1.3 DHCP报文格式
  • 1.4 DHCP选项
  • 1.5 协议规范
父主题： 03-DHCP配置


1.1 DHCP简介

DHCP（Dynamic Host Configuration Protocol，动态主机配置协议）用来为网络设备动态地分配IP地址等网络配置参数。

DHCP采用客户端/服务器通信模式，由客户端向服务器提出配置申请，服务器返回为客户端分配的IP地址等相应的配置信息，以实现IP地址等信息的动态配置。

在DHCP的典型应用中，一般包含一台DHCP服务器和多台客户端（如PC和便携机），如 图1-1 所示。

图1-1 DHCP典型应用

DHCP客户端和DHCP服务器处于不同物理网段时，客户端可以通过DHCP中继与服务器通信，获取IP地址及其他配置信息。DHCP中继的详细介绍，请参见“ 3.1 DHCP中继简介 ”。


1.2 DHCP的IP地址分配

1.2.1 IP地址分配策略

针对客户端的不同需求，DHCP提供三种IP地址分配策略：

l 手工分配地址：由管理员为少数特定客户端（如WWW服务器等）静态绑定固定的IP地址。通过DHCP将配置的固定IP地址发给客户端。

l 自动分配地址：DHCP为客户端分配租期为无限长的IP地址。

l 动态分配地址：DHCP为客户端分配具有一定有效期限的IP地址，到达使用期限后，客户端需要重新申请地址。绝大多数客户端得到的都是这种动态分配的地址。

1.2.2 IP地址动态获取过程

图1-2 IP地址动态获取过程

如 图1-2 所示，DHCP客户端从DHCP服务器动态获取IP地址，主要通过四个阶段进行：

(1) 发现阶段，即DHCP客户端寻找DHCP服务器的阶段。客户端以广播方式发送DHCP-DISCOVER报文。

(2) 提供阶段，即DHCP服务器提供IP地址的阶段。DHCP服务器接收到客户端的DHCP-DISCOVER报文后，根据IP地址分配的优先次序选出一个IP地址，与其他参数一起通过DHCP-OFFER报文发送给客户端。DHCP-OFFER报文的发送方式由DHCP-DISCOVER报文中的flag字段决定，具体请参见“ 1.3 DHCP报文格式 ”的介绍。

(3) 选择阶段，即DHCP客户端选择IP地址的阶段。如果有多台DHCP服务器向该客户端发来DHCP-OFFER报文，客户端只接受第一个收到的DHCP-OFFER报文，然后以广播方式发送DHCP-REQUEST报文，该报文中包含DHCP服务器在DHCP-OFFER报文中分配的IP地址。

(4) 确认阶段，即DHCP服务器确认IP地址的阶段。DHCP服务器收到DHCP客户端发来的DHCP-REQUEST报文后，只有DHCP客户端选择的服务器会进行如下操作：如果确认将地址分配给该客户端，则返回DHCP-ACK报文；否则返回DHCP-NAK报文，表明地址不能分配给该客户端。

l 客户端收到服务器返回的DHCP-ACK确认报文后，会以广播的方式发送免费ARP报文，探测是否有主机使用服务器分配的IP地址，如果在规定的时间内没有收到回应，客户端才使用此地址。否则，客户端会发送DHCP-DECLINE报文给DHCP服务器，并重新申请IP地址。

l 如果网络中存在多个DHCP服务器，除DHCP客户端选中的服务器外，其它DHCP服务器中本次未分配出的IP地址仍可分配给其他客户端。

1.2.3 IP地址的租约更新

如果采用动态地址分配策略，则DHCP服务器分配给客户端的IP地址有一定的租借期限，当租借期满后服务器会收回该IP地址。如果DHCP客户端希望继续使用该地址，需要更新IP地址租约。

在DHCP客户端的IP地址租约期限达到一半时间时，DHCP客户端会向为它分配IP地址的DHCP服务器单播发送DHCP-REQUEST报文，以进行IP租约的更新。如果客户端可以继续使用此IP地址，则DHCP服务器回应DHCP-ACK报文，通知DHCP客户端已经获得新IP租约；如果此IP地址不可以再分配给该客户端，则DHCP服务器回应DHCP-NAK报文，通知DHCP客户端不能获得新的租约。

如果在租约的一半时间进行的续约操作失败，DHCP客户端会在租约期限达到7/8时，广播发送DHCP-REQUEST报文进行续约。DHCP服务器的处理方式同上，不再赘述。


1.3 DHCP报文格式

DHCP有8种类型的报文，每种报文的格式相同，只是某些字段的取值不同。DHCP报文格式基于BOOTP的报文格式，具体格式如 图1-3 所示（括号中的数字表示该字段所占的字节）。

图1-3 DHCP报文格式

各字段的解释如下：

l op：报文的操作类型，分为请求报文和响应报文，1为请求报文；2为响应报文。具体的报文类型在option字段中标识。

l htype、hlen：DHCP客户端的硬件地址类型及长度。

l hops：DHCP报文经过的DHCP中继的数目。DHCP请求报文每经过一个DHCP中继，该字段就会增加1。

l xid：客户端发起一次请求时选择的随机数，用来标识一次地址请求过程。

l secs：DHCP客户端开始DHCP请求后所经过的时间。目前没有使用，固定为0。

l flags：第一个比特为广播响应标识位，用来标识DHCP服务器响应报文是采用单播还是广播方式发送，0表示采用单播方式，1表示采用广播方式。其余比特保留不用。

l ciaddr：DHCP客户端的IP地址。

l yiaddr：DHCP服务器分配给客户端的IP地址。

l siaddr：DHCP客户端获取IP地址等信息的服务器IP地址。

l giaddr：DHCP客户端发出请求报文后经过的第一个DHCP中继的IP地址。

l chaddr：DHCP客户端的硬件地址。

l sname：DHCP客户端获取IP地址等信息的服务器名称。

l file：DHCP服务器为DHCP客户端指定的启动配置文件名称及路径信息。

l options：可选变长选项字段，包含报文的类型、有效租期、DNS服务器的IP地址、WINS服务器的IP地址等配置信息。


1.4 DHCP选项

1.4.1 DHCP选项简介

为了与BOOTP（Bootstrap Protocol，自举协议）兼容，DHCP保留了BOOTP的消息格式。DHCP和BOOTP消息的不同主要体现在选项（Option）字段。DHCP在BOOTP基础上增加的功能，通过Option字段来实现。

DHCP利用Option字段传递控制信息和网络配置参数，实现地址的动态分配，为客户端提供更加丰富的网络配置信息。

DHCP选项的格式如 图1-4 所示。

图1-4 DHCP选项格式

1.4.2 DHCP常用选项介绍

常见的DHCP选项有：

l Option 3：路由器选项，用来指定为客户端分配的网关地址。

l Option 6：DNS服务器选项，用来指定为客户端分配的DNS服务器地址。

l Option 33：静态路由选项。该选项中包含一组有分类静态路由（即目的地址的掩码固定为自然掩码，不能划分子网），客户端收到该选项后，将在路由表中添加这些静态路由。如果Option 33和Option 121同时存在，则忽略Option 33。

l Option 51：IP地址租约选项。

l Option 53：DHCP消息类型选项，标识DHCP消息的类型。

l Option 55：请求参数列表选项。客户端利用该选项指明需要从服务器获取哪些网络配置参数。该选项内容为客户端请求的参数对应的选项值。

l Option 60：厂商标识选项。客户端利用该选项标识自己所属的厂商；DHCP服务器可以根据该选项区分客户端所属的厂商，并为其分配特定范围的IP地址。

l Option 66：TFTP服务器名选项，用来指定为客户端分配的TFTP服务器的域名。

l Option 67：启动文件名选项，用来指定为客户端分配的启动文件名。

l Option 121：无分类路由选项。该选项中包含一组无分类静态路由（即目的地址的掩码为任意值，可以通过掩码来划分子网），客户端收到该选项后，将在路由表中添加这些静态路由。如果Option 33和Option 121同时存在，则忽略Option 33。

l Option 150：TFTP服务器地址选项，用来指定为客户端分配的TFTP服务器的地址。

更多DHCP选项的介绍，请参见RFC 2132和RFC 3442。

1.4.3 自定义的选项格式

有些选项的内容，RFC 2132中没有统一规定，例如Option 43。下面将介绍设备上定义的几种选项格式。

1. 厂商特定信息选项（Option 43）

Option 43称为厂商特定信息选项。DHCP服务器和DHCP客户端通过Option 43交换厂商特定的信息。

设备作为DHCP客户端时，可以通过Option 43获取：

l ACS（Auto-Configuration Server，自动配置服务器）的参数，包括URL地址、用户名和密码。

l 服务提供商标识，CPE（Customer Premises Equipment，用户侧设备）从DHCP服务器获取该信息后，将该信息通告给ACS，以便ACS选择服务提供商特有的配置和参数等。

l PXE（Preboot eXecution Environment，预启动执行环境）引导服务器地址，以便客户端从PXE引导服务器获取启动文件或其他控制信息。

(1) Option 43格式

图1-5 Option 43格式

为了提供可扩展性，通过Option 43为客户端分配更多的信息，Option 43采用子选项的形式，通过不同的子选项为用户分配不同的网络配置参数，如 图1-5 所示。子选项中各字段的含义为：

l Sub-option type：子选项类型。目前，子选项类型值可以为0x01表示ACS参数子选项，0x02表示服务提供商标识子选项，0x80表示PXE引导服务器地址子选项。

l Sub-option length：子选项的长度，不包括子选项类型和子选项长度字段。

l Sub-option value：子选项的取值。不同类型的子选项，取值格式有所不同，详细介绍请参见下文。

(2) Option 43子选项取值字段的格式

l ACS参数子选项的取值字段格式如 图1-6 所示。ACS的URL地址、用户名和密码长度可变，每个参数之间用空格（十六进制数为0x20）隔开。

图1-6 ACS参数子选项格式

l 服务提供商标识子选项的取值字段内容为服务提供商的标识。

l PXE引导服务器地址子选项的取值字段格式如 图1-7 所示。其中，PXE服务器类型目前取值只能为0；Server number为子选项中包含的PXE服务器地址的数目；Server IP addresses为PXE服务器的IP地址。

图1-7 PXE引导服务器地址子选项格式

2. 中继代理信息选项（Option 82）

Option 82称为中继代理信息选项，该选项记录了DHCP客户端的位置信息。DHCP中继或DHCP Snooping设备接收到DHCP客户端发送给DHCP服务器的请求报文后，在该报文中添加Option 82，并转发给DHCP服务器。

管理员可以从Option 82中获得DHCP客户端的位置信息，以便定位DHCP客户端，实现对客户端的安全和计费等控制。支持Option 82的服务器还可以根据该选项的信息制定IP地址和其他参数的分配策略，提供更加灵活的地址分配方案。

Option 82最多可以包含255个子选项。若定义了Option 82，则至少要定义一个子选项。目前设备只支持三个子选项：sub-option 1（Circuit ID，电路ID子选项）和sub-option 2（Remote ID，远程ID子选项）和sub-option 9（子选项9，河南有线私有格式子选项）。

由于Option 82的内容没有统一规定，不同厂商通常根据需要进行填充。

设备上，可以通过两种方式配置Option 82的内容：

l 用户自定义方式：用户手工指定Option 82的内容；

l 非用户自定义方式：采用默认的normal模式、verbose模式、河南有线模式或者standard模式填充Option 82。

normal和verbose填充模式中，子选项内容的填充格式可以是ASCII格式和HEX格式。子选项的内容如下：

(1) 采用normal模式填充

l sub-option 1的内容是接收到DHCP客户端请求报文的接口所属的VLAN ID以及接口编号。如 图1-8 所示，子选项类型值为1，电路ID类型值为0。

图1-8 normal模式填充的sub-option 1

l sub-option 2的内容是接收到DHCP客户端请求报文的接口MAC地址（DHCP中继）或设备的桥MAC地址（DHCP Snooping设备）。如 图1-9 所示，子选项类型值为2，远程ID类型值为0。

图1-9 normal模式填充的sub-option 2

(2) 采用verbose模式填充

l sub-option 1的内容包括用户配置的接入节点标识（在报文中添加Option 82的设备的标识）、接收到DHCP客户端请求报文的接口类型、接口号和VLAN ID，如 图1-10 所示。

图1-10 verbose模式填充的sub-option 1

图1-10 中除VLAN ID固定为两字节外，其他sub-option 1的填充内容均为可变长度。

l sub-option 2的内容是接收到DHCP客户端请求报文的接口MAC地址（DHCP中继）或设备的桥MAC地址（DHCP Snooping设备）。verbose和normal填充模式的sub-option 2内容相同，如 图1-9 所示。

河南有线模式和standard填充模式中，子选项的内容如下：

(3) 采用河南有线模式填充

l sub-option 1的内容是接收到DHCP客户端请求报文的接口所属的VLAN ID、Module和PORT。如 图1-11 所示，子选项类型值为1。

图1-11 河南有线模式填充的sub-option 1

l sub-option 2的内容是接收到DHCP客户端请求报文的接口MAC地址（DHCP中继）或设备的桥MAC地址（DHCP Snooping设备）。如 图1-12 所示，子选项类型值为2。

图1-12 河南有线模式填充的sub-option 2

l sub-option 9的内容是sysname和Loopback0接口的主IP地址。如 图1-13 所示，子选项类型值为9。

图1-13 河南有线模式填充的sub-option 9

(4) 采用standard模式填充

l sub-option 1的内容是接收到DHCP客户端请求报文的接口所属的VLAN ID、Module和Port。如 图1-14 所示，子选项类型值为1，电路ID类型值为0。

图1-14 standard模式填充的sub-option 1

l sub-option 2的内容是接收到DHCP客户端请求报文的接口MAC地址（DHCP中继）或设备的桥MAC地址（DHCP Snooping设备）。子选项类型值为2，远程ID类型值为0，格式跟normal模式的sub-option 2相同，如 图1-9 所示。

3. Option 184

Option 184是RFC中规定的保留选项，用户可以自定义该选项中携带的信息。设备上，Option 184携带了语音呼叫所需的信息。通过Option 184，可以实现在为具有语音功能的DHCP客户端分配IP地址的同时，为客户端提供语音呼叫相关信息。

目前Option 184支持四个子选项，承载的内容如下：

l sub-option 1，网络呼叫处理器的IP地址：用来标识作为网络呼叫控制源及应用程序下载的服务器。

l sub-option 2，备用服务器的IP地址：当sub-option 1中携带的网络呼叫处理器不可达或不合法时，DHCP客户端使用该选项指定的备用服务器作为网络呼叫处理器。

l sub-option 3，语音VLAN信息：指定语音VLAN的ID及DHCP客户端是否会将所指定的VLAN ID作为语音VLAN。

l sub-option 4，自动故障转移呼叫路由：指定故障转移呼叫路由的IP地址及其关联的拨号串，即SIP（Session Initiation Protocol，会话初始协议）用户之间互相通信时对端的IP地址和呼叫号码。当网络呼叫处理器和备用服务器均不可达时，SIP用户可以使用对端IP地址及呼叫号码直接与对端SIP用户建立连接并通信。

只有定义了sub-option 1（网络呼叫处理器的IP地址子选项），其他子选项才能生效。


1.5 协议规范

与DHCP相关的协议规范有：

l RFC 2131：Dynamic Host Configuration Protocol

l RFC 2132：DHCP Options and BOOTP Vendor Extensions

l RFC 1542：Clarifications and Extensions for the Bootstrap Protocol

l RFC 3046：DHCP Relay Agent Information Option

l RFC 3442：The Classless Static Route Option for Dynamic Host Configuration Protocol (DHCP) version 4


2 DHCP服务器配置

DHCP功能中所指的“接口”为三层口，包括VLAN接口、三层以太网端口等。三层以太网端口是指被配置为三层模式的以太网端口，有关以太网端口模式切换的操作，请参见“二层技术-以太网交换配置指导”中的“以太网端口配置”。

相关链接

  • 2.1 DHCP服务器简介
  • 2.2 DHCP服务器配置任务简介
  • 2.3 配置DHCP服务器的地址池
  • 2.4 使能DHCP服务
  • 2.5 配置接口工作在DHCP服务器模式
  • 2.6 配置接口引用扩展模式的地址池
  • 2.7 配置DHCP服务的安全功能
  • 2.8 配置Option 82的处理方式
  • 2.9 配置DHCP服务器发送Trap消息的门限值
  • 2.10 DHCP服务器显示和维护
  • 2.11 DHCP服务器典型配置举例
  • 2.12 DHCP服务器常见配置错误举例
父主题： 03-DHCP配置


2.1 DHCP服务器简介

2.1.1 DHCP服务器的应用环境

在以下场合通常利用DHCP服务器来完成IP地址分配：

l 网络规模较大，手工配置需要很大的工作量，并难以对整个网络进行集中管理。

l 网络中主机数目大于该网络支持的IP地址数量，无法给每个主机分配一个固定的IP地址。例如，Internet接入服务提供商限制同时接入网络的用户数目，大量用户必须动态获得自己的IP地址。

l 网络中只有少数主机需要固定的IP地址，大多数主机没有固定的IP地址需求。

设备作为MCE（Multi-VPN-instance Customer Edge，多实例用户网络边界设备）时，在设备上配置DHCP服务器功能，不仅可以为公网上的DHCP客户端分配IP地址，还可以实现为私网内的DHCP客户端分配IP地址，但是公网和私网之间、不同私网之间的IP地址空间不能重叠。MCE的详细介绍，请参见“三层技术-IP路由配置指导”中的“MCE”。

2.1.2 DHCP地址池

1. 地址池分类

DHCP地址池分为两类：

l 普通模式的地址池：支持静态绑定和动态分配两种地址分配方式。

l 扩展模式的地址池：只支持地址的动态分配方式。

2. 普通模式地址池结构

DHCP服务器从地址池中为客户端选择并分配IP地址及其他相关参数。

DHCP服务器的普通模式地址池采用树状结构：树根是自然网段的地址池，分支是该网段的子网地址池，叶节点是手工绑定的客户端地址。同一级别地址池的顺序由配置的先后决定。这种树状结构实现了配置的继承性，即子网配置继承自然网段的配置，客户端的配置继承子网的配置。这样，对于一些通用参数（如DNS服务器地址），只需要在自然网段或者子网上配置即可。具体的继承情况如下：

(1) 在父子关系建立时，子地址池将会继承父地址池的已有配置。

(2) 在父子关系建立后，对父地址池进行的配置，子地址池是否会继承，则有下面两种情况：

l 如果子地址池没有该项配置，则继承父地址池的配置；

l 如果子地址池已有该项配置，则不会继承父地址池的配置。

l 设备独立存储每个扩展模式地址池。扩展地址池之间不存在父子关系和继承关系。

l IP地址的租用有效期限不具有继承关系。

3. 地址池的选取原则

DHCP服务器为客户端分配IP地址时，地址池的选择原则如下：

(1) 如果存在将客户端MAC地址或客户端ID与IP地址静态绑定的地址池，则选择该地址池，并将静态绑定的IP地址分配给客户端。该地址池的配置方法请参见“ 2.3.3 1. 配置采用静态绑定方式进行地址分配 ”。

(2) 如果接收到DHCP请求报文的接口引用了扩展模式的地址池，则选择该地址池，从该地址池中选取IP地址分配给客户端。如果该地址池中没有可供分配的IP地址，则服务器无法为客户端分配IP地址。该地址池的配置方法请参见“ 2.3.4 配置扩展模式地址池采用动态分配方式进行地址分配 ”。

(3) 如果不存在静态绑定的地址池，且接收到DHCP请求报文的接口没有引用扩展模式的地址池，则选择包含DHCP请求报文接收接口的IP地址（客户端与服务器在同一网段时）或DHCP请求报文中giaddr字段指定的IP地址（客户端与服务器不在同一网段，客户端通过DHCP中继获取IP地址时）、网段最小的普通模式地址池。如果该地址池中没有可供分配的IP地址，则服务器无法为客户端分配地址，服务器不会将父地址池中的IP地址分配给客户端。该地址池的配置方法请参见“ 2.3.3 2. 配置采用动态分配方式进行地址分配 ”。

例如，DHCP服务器上配置了两个普通模式的地址池，动态分配的网段分别是1.1.1.0/24和1.1.1.0/25，如果接收DHCP请求报文的接口IP地址为1.1.1.1/25，服务器将从1.1.1.0/25地址池中选择IP地址分配给客户端，1.1.1.0/25地址池中如果没有可供分配的IP地址，则服务器无法为客户端分配地址；如果接收DHCP请求报文的接口IP地址为1.1.1.130/25，服务器将从1.1.1.0/24地址池中选择IP地址分配给客户端。

配置地址池动态分配的网段和IP地址范围时，请尽量保证与DHCP服务器接口或DHCP中继接口地址的网段一致，以免分配错误的IP地址。

2.1.3 DHCP服务器分配IP地址的优先次序

DHCP服务器为客户端分配IP地址的优先次序如下：

(1) 与客户端MAC地址或客户端ID静态绑定的IP地址。

(2) DHCP服务器记录的曾经分配给客户端的IP地址。

(3) 客户端发送的DHCP-DISCOVER报文中Option 50字段指定的IP地址。

(4) 在扩展或普通模式的动态分配地址池中，顺序查找可供分配的IP地址，最先找到的IP地址。

(5) 如果未找到可用的IP地址，则依次查询租约过期、曾经发生过冲突的IP地址，如果找到则进行分配，否则将不予处理。

Option 50为客户端请求的IP地址选项（Requested IP Address），客户端通过在DHCP-DISCOVER报文中添加该选项来指明客户端希望获取的IP地址。该选项的内容由客户端决定。


2.2 DHCP服务器配置任务简介

表2-1 DHCP服务器配置任务简介

操作 | 说明 | 详细配置
配置DHCP服务器的地址池 | 必选 | 2.3
使能DHCP服务 | 必选 | 2.4
配置接口工作在DHCP服务器模式 | 必选 | 2.5
配置接口引用扩展模式的地址池 | 使用扩展模式的地址池时，为必选；使用普通模式的地址池时，不需要执行该配置任务 | 2.6
配置DHCP服务器的安全功能 | 可选 | 2.7
配置Option 82的处理方式 | 可选 | 2.8
配置DHCP服务器发送Trap消息 | 可选 | 2.9


2.3 配置DHCP服务器的地址池

2.3.1 DHCP服务器地址池配置任务简介

表2-2 DHCP服务器地址池配置任务简介

操作 |  | 说明 | 详细配置
创建DHCP地址池 |  | 必选 | 2.3.2
配置普通模式地址池的地址分配方式 | 配置采用静态绑定方式进行地址分配 | 对于普通模式地址池，二者必选其一，且对同一个地址池只能选一种方式 | 2.3.3
 | 配置采用动态分配方式进行地址分配
配置扩展模式地址池采用动态分配方式进行地址分配 |  | 对于扩展模式地址池，为必选 | 2.3.4
配置DHCP客户端的域名后缀 |  | 可选 | 2.3.5
配置DHCP客户端的DNS服务器地址 |  | 可选 | 2.3.6
配置DHCP客户端的WINS服务器地址和NetBIOS节点类型 |  | 可选 | 2.3.7
配置DHCP客户端的BIMS服务器信息 |  | 可选 | 2.3.8
配置DHCP客户端的网关地址 |  | 可选 | 2.3.9
配置DHCP客户端的Option 184参数 |  | 可选 | 2.3.10
配置DHCP客户端的TFTP服务器地址及启动文件名 |  | 可选 | 2.3.11
配置DHCP客户端的下一个提供服务的服务器IP地址 |  | 可选 | 2.3.12
配置DHCP自定义选项 |  | 可选 | 2.3.13

2.3.2 创建DHCP地址池

创建DHCP地址池时，需要指定地址池的类型：普通模式地址池或扩展模式地址池。

表2-3 创建DHCP地址池

操作 | 命令 | 说明
进入系统视图 | system-view | -
创建DHCP地址池并进入DHCP地址池视图 | dhcp server ip-pool pool-name [ extended ] | 必选 缺省情况下，没有创建DHCP地址池

普通模式地址池和扩展模式地址池中地址分配方式的配置方法不同，其余网络参数（如域名后缀、DNS服务器地址等）的配置方法相同。

2.3.3 配置普通模式地址池的地址分配方式

根据客户端的实际需要，可以将地址池配置为采用静态绑定或动态分配方式进行地址分配，但对一个DHCP地址池不能同时配置这两种方式。

动态地址分配需要指定用于分配的网段，而静态地址绑定则可以看作是只包含一个地址的特殊的DHCP地址池。

1. 配置采用静态绑定方式进行地址分配

某些客户端（如WWW服务器等）需要固定的IP地址，可以通过将客户端的MAC地址与IP地址绑定的方式实现。当具有此MAC地址的客户端申请IP地址时，DHCP服务器将根据客户端的MAC地址查找到对应的IP地址，并分配给客户端。

某些客户端在向DHCP服务器发送DHCP-DISCOVER报文申请IP地址时，会构建客户端ID并添加到报文中一起发送。如果在DHCP服务器上将客户端ID与IP地址绑定，则当该客户端申请IP地址时，DHCP服务器将根据客户端ID查找到对应的IP地址并分配给客户端。

目前一个DHCP地址池中只能配置一个静态绑定，可以是IP地址与MAC地址的绑定，也可以是IP地址与客户端ID的绑定。

表2-4 配置采用静态绑定方式进行地址分配

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
进入普通模式地址池视图 |  | dhcp server ip-pool pool-name | -
配置静态绑定的IP地址 |  | static-bind ip-address ip-address [ mask-length | mask mask ] | 必选 缺省情况下，没有配置静态绑定的IP地址
配置静态绑定的MAC地址或客户端ID | 配置静态绑定的客户端MAC地址 | static-bind mac-address mac-address | 二者必选其一 缺省情况下，没有配置静态绑定的MAC地址和客户端ID
 | 配置静态绑定的客户端ID | static-bind client-identifier client-identifier
配置静态绑定IP地址的租用有效期限 |  | expired { day day [ hour hour [ minute minute [ second second ] ] ] | unlimited } | 可选 缺省情况下，IP地址租用有效期限为 unlimited，即租约期限为无限长

l static-bind ip-address 和 static-bind mac-address 或 static-bind client-identifier 命令必须配合使用。

l 在同一个DHCP地址池中，如果配置了 static-bind mac-address 命令后，再配置 static-bind client-identifier 命令，则后面的配置将会覆盖前面的配置，反之亦然。

l 在同一个DHCP地址池中，如果多次执行 static-bind ip-address 或 static-bind mac-address 或 static-bind client-identifier 命令，新的配置会覆盖已有配置。

l 静态绑定的IP地址不能是DHCP服务器的接口IP地址，否则会导致IP地址冲突，被绑定的客户端将无法正常获取到IP地址。

l 静态绑定的客户端ID，要与在待绑定客户端通过 display dhcp client verbose 命令显示的客户端ID一致。否则，客户端无法成功获取IP地址。

l 设备作为DHCP客户端时，需要在DHCP服务器上配置IP地址与客户端ID静态绑定，设备作为BOOTP客户端时，需要配置IP地址与客户端MAC静态绑定，否则设备无法申请到静态绑定的IP地址。

l 如果作为DHCP客户端的设备，接口的MAC地址相同，则为了区分不同接口，采用静态绑定方式进行地址分配时，需要在服务器上配置静态绑定的客户端ID，而不能配置静态绑定的客户端MAC地址，否则可能导致客户端无法成功获取IP地址。

2. 配置采用动态分配方式进行地址分配

对于采用动态地址分配方式的地址池，需要配置该地址池可分配的网段。目前，一个地址池中只能配置一个地址段。

DHCP服务器在分配地址时，需要排除已经被占用的IP地址（如网关、FTP服务器等）。否则，同一地址分配给两个客户端会造成IP地址冲突。

DHCP服务器可以为不同的地址池指定不同的地址租用期限，但同一DHCP地址池中的所有地址都具有相同的期限。地址租用有效期限不具有继承关系。

表2-5 配置采用动态分配方式进行地址分配

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入普通模式地址池视图 | dhcp server ip-pool pool-name | -
配置动态分配的网段 | network network-address [ mask-length | mask mask ] | 必选 缺省情况下，没有配置动态分配的网段，即没有可供分配的IP地址
在网段的基础上进一步限制动态分配的IP地址范围 | network ip range min-address max-address | 可选 缺省情况下，没有配置动态分配的IP地址范围
配置动态分配的IP地址的租用有效期限 | expired { day day [ hour hour [ minute minute [ second second ] ] ] | unlimited } | 可选 缺省情况下，IP地址租用有效期限为1天
退回系统视图 | quit | -
配置DHCP地址池中不参与自动分配的IP地址 | dhcp server forbidden-ip low-ip-address [ high-ip-address ] | 可选 缺省情况下，除DHCP服务器接口的IP地址外，DHCP地址池中的所有IP地址都参与自动分配

l 在同一个DHCP地址池中，如果多次执行 network 或 network ip range 命令，新的配置会覆盖已有配置。

l 通过 dhcp server forbidden-ip 命令指定不参与自动分配的IP地址后，所有动态分配方式的地址池（包括普通模式地址池和扩展模式地址池）都不能分配这些IP地址。

l 多次执行 dhcp server forbidden-ip 命令，可以配置多个不参与自动分配的IP地址段。

2.3.4 配置扩展模式地址池采用动态分配方式进行地址分配

扩展模式地址池只支持动态方式分配地址，不支持静态绑定方式。

配置扩展模式地址池的地址分配方式时，需要指定：

l 可分配的IP地址范围：扩展模式地址池中采用最小IP地址、最大IP地址的方式指定地址范围。

l 分配的IP地址的掩码。

只有同时配置了可分配的IP地址范围和掩码，该地址池才会生效。

表2-6 配置扩展模式地址池采用动态分配方式进行地址分配

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入扩展模式地址池视图 | dhcp server ip-pool pool-name extended | -
配置动态分配的IP地址范围 | network ip range min-address max-address | 必选 缺省情况下，没有配置动态分配的IP地址范围，即没有可供分配的IP地址
配置动态分配的IP地址掩码 | network mask mask | 必选 缺省情况下，没有配置动态分配的IP地址掩码
配置为指定厂商的DHCP客户端动态分配的IP地址范围 | vendor-class-identifier hex-string&<1-255> ip range min-address max-address | 可选 缺省情况下，没有配置DHCP扩展地址池为指定厂商的客户端动态分配的IP地址范围
配置动态分配的IP地址的租用有效期限 | expired { day day [ hour hour [ minute minute [ second second ] ] ] | unlimited } | 可选 缺省情况下，IP地址租用有效期限为1天
配置该地址池中不参与自动分配的IP地址 | forbidden-ip ip-address&<1-8> | 可选 缺省情况下，除DHCP服务器接口的IP地址外，扩展模式地址池中的所有IP地址都参与自动分配

在扩展模式的DHCP地址池视图下通过 forbidden-ip 命令配置不参与自动分配的IP地址后，只有当前扩展模式的地址池不能分配这些IP地址，其他地址池仍然可以分配这些IP地址。

2.3.5 配置DHCP客户端的域名后缀

在DHCP服务器上，可以为每个地址池指定客户端使用的域名后缀。在给客户端分配IP地址的同时，也将域名后缀发送给客户端。

在客户端进行域名解析时，用户只需要输入域名的部分字段，客户端会自动将输入的域名加上域名后缀进行解析。有关域名后缀的详细介绍，请参见“三层技术-IP业务配置指导”中的“IPv4域名解析”。

表2-7 配置DHCP客户端的域名后缀

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入DHCP地址池视图 | dhcp server ip-pool pool-name [ extended ] | -
配置为DHCP客户端分配的域名后缀 | domain-name domain-name | 必选 缺省情况下，没有配置为DHCP客户端分配的域名后缀

2.3.6 配置DHCP客户端的DNS服务器地址

通过域名访问Internet上的主机时，需要将域名解析为IP地址，这是通过DNS（Domain Name System，域名系统）实现的。为了使DHCP客户端能够通过域名访问Internet上的主机，DHCP服务器应在为客户端分配IP地址的同时指定DNS服务器地址。目前，每个DHCP地址池最多可以配置8个DNS服务器地址。

表2-8 配置DHCP客户端的DNS服务器地址

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入DHCP地址池视图 | dhcp server ip-pool pool-name [ extended ] | -
配置为DHCP客户端分配的DNS服务器地址 | dns-list ip-address&<1-8> | 必选 缺省情况下，没有配置为DHCP客户端分配的DNS服务器地址

2.3.7 配置DHCP客户端的WINS服务器地址和NetBIOS节点类型

对于使用Microsoft Windows操作系统的客户端，由WINS（Windows Internet Naming Service，Windows Internet名称服务）服务器为通过NetBIOS协议通信的主机提供主机名到IP地址的解析。所以，大部分Windows网络客户端需要进行WINS的设置。

为了使DHCP客户端实现主机名到IP地址的解析，DHCP服务器应在为客户端分配IP地址的同时指定WINS服务器地址。目前，每个DHCP地址池最多可以配置8个WINS服务器地址。

DHCP客户端在网络上使用NetBIOS协议通信时，需要在主机名和IP地址之间建立映射关系。根据获取映射关系方式的不同，NetBIOS节点分为四种：

l b类节点（b-node）：“b”代表广播（broadcast），即此类节点采用广播方式获取映射关系。源节点通过发送带有目的节点主机名的广播报文来获取目的节点的IP地址，目的节点收到广播报文后，就将自己的IP地址返回给源节点。

l p类节点（p-node）：“p”代表端到端（peer-to-peer），即此类节点采用发送单播报文与WINS服务器通信的方式获取映射关系。源节点给WINS服务器发送单播报文，WINS服务器收到单播报文后，返回源节点请求的目的节点名所对应的IP地址。

l m类节点（m-node）：“m”代表混合（mixed），是具有部分广播特性的p类节点。即此类节点首先发送广播报文来获取映射关系，如果没有获取到，则再发送单播报文与WINS服务器通信来获取映射关系。

l h类节点（h-node）：“h”代表混合（hybrid），是具备“端到端”通信机制的b类节点。即此类节点首先发送单播报文与WINS服务器通信来获取映射关系，如果没有获取到，再发送广播报文来获取映射关系。

表2-9 配置DHCP客户端的WINS服务器地址和NetBIOS节点类型

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入DHCP地址池视图 | dhcp server ip-pool pool-name [ extended ] | -
配置为DHCP客户端分配的WINS服务器地址 | nbns-list ip-address&<1-8> | 必选 对于b类节点，为可选 缺省情况下，没有配置为DHCP客户端分配的WINS服务器地址
配置为DHCP客户端分配的NetBIOS节点类型 | netbios-type { b-node | h-node | m-node | p-node } | 必选 缺省情况下，没有配置为DHCP客户端分配的NetBIOS节点类型

如果配置DHCP客户端为b类NetBIOS节点，则不需要配置WINS服务器地址。

2.3.8 配置DHCP客户端的BIMS服务器信息

为了使DHCP客户端通过BIMS（Branch Intelligent Management System，分支网点智能管理系统）服务器进行软件的备份和升级等操作，DHCP服务器需要在为DHCP客户端分配IP地址的同时，将BIMS服务器的IP地址、端口号以及加密的共享密钥等信息也发给DHCP客户端。之后，DHCP客户端就可以定期向BIMS服务器发送连接请求，从BIMS服务器上获取配置文件，进行软件的备份和升级等操作。

表2-10 配置DHCP客户端的BIMS服务器信息

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入DHCP地址池视图 | dhcp server ip-pool pool-name [ extended ] | -
配置为DHCP客户端分配的BIMS服务器的IP地址、端口及共享密钥信息 | bims-server ip ip-address [ port port-number ] sharekey key | 必选 缺省情况下，没有配置为DHCP客户端分配的BIMS服务器信息

2.3.9 配置DHCP客户端的网关地址

DHCP客户端访问本网段以外的服务器或主机时，数据必须通过网关进行转发。DHCP服务器可以在为客户端分配IP地址的同时指定网关的地址。

在DHCP服务器上，可以为每个地址池分别指定客户端对应的网关地址。在给客户端分配IP地址的同时，也将网关地址发送给客户端。目前，每个DHCP地址池最多可以配置8个网关地址。

表2-11 配置DHCP客户端的网关地址

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入DHCP地址池视图 | dhcp server ip-pool pool-name [ extended ] | -
配置为DHCP客户端分配的网关地址 | gateway-list ip-address&<1-8> | 必选 缺省情况下，没有配置为DHCP客户端分配的网关地址

2.3.10 配置DHCP客户端的Option 184参数

为了使具有语音功能的DHCP客户端能够在通过DHCP获取IP地址的同时，获取到语音呼叫所需的相关信息，需要在DHCP服务器上配置Option 184。Option 184内容的详细介绍，请参见“ 1.4.3 3. Option 184 ”。

表2-12 配置DHCP客户端的Option 184参数

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入DHCP地址池视图 | dhcp server ip-pool pool-name [ extended ] | -
配置网络呼叫处理器的地址 | voice-config ncp-ip ip-address | 必选 缺省情况下，没有配置网络呼叫处理器的地址
配置备用服务器的地址 | voice-config as-ip ip-address | 可选 缺省情况下，没有配置备用服务器的地址
配置语音VLAN | voice-config voice-vlan vlan-id { disable | enable } | 可选 缺省情况下，没有配置语音VLAN
配置自动故障转移呼叫路由 | voice-config fail-over ip-address dialer-string | 可选 缺省情况下，没有配置自动故障转移呼叫路由

只有配置了网络呼叫处理器的地址，其他配置才能生效。

2.3.11 配置DHCP客户端的TFTP服务器地址及启动文件名

设备在空配置启动时自动获取并执行配置文件的功能，被称为自动配置。具体过程如下：

(1) 设备在空配置启动时，系统会自动将处于up状态的接口（如缺省VLAN对应的虚接口）设置为DHCP客户端，并向DHCP服务器获取IP地址及后续获取配置文件所需要的信息（例如：TFTP服务器的IP地址、TFTP服务器名、启动文件名等）。

(2) 如果获取到相关信息，则DHCP客户端就可发起TFTP请求，从指定的TFTP服务器获取配置文件，之后设备就使用获取到的配置文件进行设备初始化工作。如果没有获取到相关信息，则设备在空配置的情况下正常启动。

自动配置功能在空配置启动的设备上不需要进行任何配置，但需要在DHCP服务器上配置一些必需的参数，包括TFTP服务器地址、TFTP服务器名和启动文件名。

表2-13 配置DHCP客户端的TFTP服务器地址及启动文件名

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入DHCP地址池视图 | dhcp server ip-pool pool-name [ extended ] | -
配置为DHCP客户端分配的TFTP服务器地址 | tftp-server ip-address ip-address | 二者至少选择其一 缺省情况下，没有配置为DHCP客户端分配的TFTP服务器地址和TFTP服务器名
配置为DHCP客户端分配的TFTP服务器名 | tftp-server domain-name domain-name
配置为DHCP客户端分配的启动文件名 | bootfile-name bootfile-name | 必选 缺省情况下，没有配置为DHCP客户端分配的启动文件名

2.3.12 配置DHCP客户端的下一个提供服务的服务器IP地址

设备在启动后，可能需要访问某些服务器获取设备运行需要的信息，例如从TFTP服务器上获取配置文件。通过本配置可以指定DHCP服务器为DHCP客户端分配的下一个提供服务的服务器IP地址，以便客户端启动后访问该服务器，获取必要的信息。

表2-14 配置DHCP客户端的下一个提供服务的服务器IP地址

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入DHCP地址池视图 | dhcp server ip-pool pool-name [ extended ] | -
配置DHCP地址池为DHCP客户端分配的下一个提供服务的服务器IP地址 | next-server ip-address | 必选 缺省情况下，没有配置DHCP地址池为DHCP客户端分配的下一个提供服务的服务器IP地址

2.3.13 配置DHCP自定义选项

通过配置DHCP自定义选项，用户可以：

l 定义新的DHCP选项。随着DHCP的不断发展，新的可选项会陆续出现，为了支持这些新的选项，可以通过手工定义的方式将新选项添加到DHCP服务器的属性列表中。

l 定义已有选项的内容。有些选项的内容，RFC 2132中没有统一规定。厂商可以根据需要定义选项的内容，如Option 43。通过配置DHCP自定义选项，可以为DHCP客户端提供厂商指定的信息。

l 扩展已有的DHCP选项。当前已提供的方式无法满足用户需求时（比如通过 dns-list 命令最多只能配置8个DNS服务器地址，如果用户需要配置的DNS服务器地址数目大于8，则该命令无法满足需求），可以通过配置DHCP自定义选项的方式进行扩展。

表2-15 配置DHCP自定义选项

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入DHCP地址池视图 | dhcp server ip-pool pool-name [ extended ] | -
配置DHCP自定义选项 | option code { ascii ascii-string | hex hex-string&<1-16> | ip-address ip-address&<1-8> } | 必选 缺省情况下，没有配置DHCP自定义选项

表2-16 常用Option配置说明

选项代码 | 选项名称 | 对应的配置命令 | option 命令参数选择
3 | Router Option | gateway-list | ip-address
6 | Domain Name Server Option | dns-list | ip-address
15 | Domain Name | domain-name | ascii
44 | NetBIOS over TCP/IP Name Server Option | nbns-list | ip-address
46 | NetBIOS over TCP/IP Node Type Option | netbios-type | hex
66 | TFTP server name | tftp-server | ascii
67 | Bootfile name | bootfile-name | ascii
43 | Vendor Specific Information | - | hex

配置自定义选项可能会对DHCP的工作过程造成影响，请谨慎使用DHCP自定义选项。


2.4 使能DHCP服务

只有使能DHCP服务后，其它相关的DHCP服务器配置才能生效。

表2-17 使能DHCP服务

操作 | 命令 | 说明
进入系统视图 | system-view | -
使能DHCP服务 | dhcp enable | 必选 缺省情况下，DHCP服务处于禁止状态


2.5 配置接口工作在DHCP服务器模式

配置接口工作在DHCP服务器模式后，当接口收到DHCP客户端发来的DHCP报文时，将从DHCP服务器的地址池中分配地址。

表2-18 配置接口工作在DHCP服务器模式

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
配置接口工作在DHCP服务器模式 | dhcp select server global-pool [ subaddress ] | 可选 缺省情况下，接口工作在DHCP服务器模式

subaddress 关键字只在DHCP服务器与客户端在同一网段时有效。如果客户端与服务器之间通过DHCP中继相连，则不管是否输入 subaddress 关键字，当服务器为客户端分配IP地址时，都是从与DHCP中继接口（与客户端相连的接口）的主IP地址在同一网段的地址池中选择地址分配给客户端。

当DHCP服务器与客户端在同一网段时，根据是否输入 subaddress 关键字，DHCP服务器的处理不同：

l 如果输入 subaddress 关键字，当服务器为客户端分配IP地址时，将优先从与服务器接口（与客户端相连的接口）的主IP地址在同一网段的地址池中选择地址分配给客户端，如果该地址池中没有可供分配的IP地址，则从与服务器接口的从IP地址在同一网段的地址池中选择地址分配给客户端。如果接口有多个从IP地址，则从第一个从IP地址依次匹配。

l 如果不输入 subaddress 关键字，当服务器为客户端分配IP地址时，将只能从与服务器接口的主IP地址在同一网段的地址池中选择地址分配给客户端。


2.6 配置接口引用扩展模式的地址池

创建扩展模式的地址池，并在接口引用该地址池后，接口接收到DHCP请求，将优先为客户端分配静态绑定的IP地址；如果不存在静态绑定的IP地址，则从引用的扩展模式地址池中选择IP地址分配给客户端。引用的地址池中不存在可供分配的IP地址时，设备无法为客户端分配IP地址，设备不会将其他地址池中的地址分配给客户端。

表2-19 配置接口引用扩展模式的地址池

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
配置接口引用扩展模式的地址池 | dhcp server apply ip-pool pool-name | 可选 缺省情况下，接口没有引用任何扩展模式的地址池，接口接收到DHCP请求后，将从普通模式地址池中选择IP地址分配给客户端

接口只能引用扩展模式的地址池，且引用的地址池必须已经存在。


2.7 配置DHCP服务的安全功能

在配置DHCP服务器后，为了提高DHCP服务的安全性，需要配置DHCP服务的安全功能。

2.7.1 配置准备

在配置DHCP服务的安全功能之前，需完成DHCP服务器的必配任务：

l 使能DHCP服务；

l 配置DHCP服务器的地址池。

2.7.2 配置伪DHCP服务器检测功能

如果网络中有私自架设的DHCP服务器，当客户端申请IP地址时，这台DHCP服务器就会与DHCP客户端进行交互，导致客户端获得错误的IP地址。这种私设的DHCP服务器称为伪DHCP服务器。

使能伪DHCP服务器检测功能后，DHCP服务器会检查接收到的DHCP报文中是否携带Option 54（Server Identifier Option，服务器标识选项）。如果携带该选项，则DHCP服务器记录此选项中的IP地址，即给客户端分配IP地址的服务器IP地址，并记录接收到DHCP报文的接口信息，以便管理员及时发现并处理伪DHCP服务器。

表2-20 配置伪DHCP服务器检测功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
使能伪DHCP服务器检测功能 | dhcp server detect | 必选 缺省情况下，禁止伪DHCP服务器检测功能

l 使能伪DHCP服务器检测功能后，对所有DHCP服务器都会进行记录，包括合法的DHCP服务器。管理员需要从日志信息中查找伪DHCP服务器。

l 使能伪DHCP服务器检测功能后，对每个DHCP服务器只记录一次。

2.7.3 配置IP地址重复分配检测功能

为防止IP地址重复分配导致地址冲突，DHCP服务器为客户端分配地址前，需要先对该地址进行探测。

地址探测是通过ping功能实现的，通过检测是否能在指定时间内得到ping响应来判断是否有地址冲突。DHCP服务器发送目的地址为待分配地址的ICMP回显请求报文，如果在指定时间内收到回显响应报文，DHCP服务器从地址池中选择新的IP地址，并重复上述操作；如果在指定时间内没有收到回显响应报文，则继续发送ICMP回显请求报文，直到发送的回显请求报文达到最大值，如果仍然没有收到回显响应报文，则将地址分配给客户端，从而确保客户端被分得的IP地址唯一。

DHCP服务器通过ping操作来检测是否发生地址冲突，而DHCP客户端则通过发送免费ARP报文检测是否发生地址冲突。

表2-21 配置IP地址重复分配检测功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置DHCP服务器发送回显请求报文的最大数目 | dhcp server ping packets number | 可选 缺省情况下，DHCP服务器发送回显请求报文的最大数目为1 0表示不进行ping操作
配置DHCP服务器等待回显响应报文的超时时间 | dhcp server ping timeout milliseconds | 可选 缺省情况下，DHCP服务器等待回显响应报文的超时时间为500毫秒 0表示不进行ping操作


2.8 配置Option 82的处理方式

如果配置DHCP服务器处理Option 82，则当DHCP服务器收到带有Option 82的报文后，会在响应报文中携带Option 82，并为客户端分配IP地址等信息。

如果配置DHCP服务器忽略Option 82，则当DHCP服务器收到带有Option 82的报文后，不会在响应报文中携带Option 82，只为客户端分配IP地址等信息。

1. 配置准备

在配置Option 82的处理方式之前，需完成DHCP服务器的必配任务：

l 使能DHCP服务；

l 配置DHCP服务器的地址池。

2. 配置Option 82的处理方式

表2-22 配置Option 82的处理方式

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置DHCP服务器处理Option 82 | dhcp server relay information enable | 可选 缺省情况下，DHCP服务器处理Option 82

为使Option 82功能正常使用，需要在DHCP服务器和DHCP中继（或DHCP Snooping设备）上都进行相应配置。DHCP中继支持Option 82功能的相关配置请参见“ 3.3.7 配置DHCP中继支持Option 82功能 ”；DHCP Snooping支持Option 82功能的相关配置请参见“ 5.4 配置DHCP Snooping支持Option 82功能 ”。


2.9 配置DHCP服务器发送Trap消息的门限值

2.9.1 配置准备

在配置DHCP服务器发送Trap消息之前，需要先通过 snmp-agent target-host 命令配置Trap消息的目的地址。snmp-agent target-host 命令的详细介绍，请参见“网络管理和监控命令参考”中的“SNMP”。

2.9.2 配置DHCP服务器发送Trap消息的门限值

在DHCP服务器上，可以配置成功分配IP地址的比率、地址池的平均IP利用率、地址池的最大IP利用率达到门限值时，向网管服务器发送Trap消息，以便网络管理员及时了解DHCP服务器的使用情况。

表2-23 配置DHCP服务器发送Trap消息的门限值

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置DHCP服务器在指定条件下，向网管服务器发送Trap消息 | dhcp server threshold { allocated-ip threshold-value | average-ip-use threshold-value | max-ip-use threshold-value } | 可选 缺省情况下，DHCP服务器不会向网管服务器发送Trap消息


2.10 DHCP服务器显示和维护

在完成上述配置后，在任意视图下执行 display 命令可以显示配置后DHCP服务器的运行情况，通过查看显示信息验证配置的效果。

在用户视图下执行 reset 命令清除DHCP服务器的相关信息。

表2-24 DHCP服务器显示和维护

操作 | 命令
显示DHCP的地址冲突统计信息 | display dhcp server conflict { all | ip ip-address } [ | { begin | exclude | include } regular-expression ]
显示DHCP地址池中的租约超期信息 | display dhcp server expired { all | ip ip-address | pool [ pool-name ] } [ | { begin | exclude | include } regular-expression ]
显示DHCP地址池的可用地址信息 | display dhcp server free-ip [ | { begin | exclude | include } regular-expression ]
显示DHCP地址池中不参与自动分配的IP地址 | display dhcp server forbidden-ip [ | { begin | exclude | include } regular-expression ]
显示DHCP地址池中的地址绑定信息 | display dhcp server ip-in-use { all | ip ip-address | pool [ pool-name ] } [ | { begin | exclude | include } regular-expression ]
显示DHCP服务器的统计信息 | display dhcp server statistics [ | { begin | exclude | include } regular-expression ]
显示DHCP地址池的树状结构信息 | display dhcp server tree { all | pool [ pool-name ] } [ | { begin | exclude | include } regular-expression ]
清除DHCP地址冲突的统计信息 | reset dhcp server conflict { all | ip ip-address }
清除DHCP动态地址绑定信息 | reset dhcp server ip-in-use { all | ip ip-address | pool [ pool-name ] }
清除DHCP服务器的统计信息 | reset dhcp server statistics

执行 save 命令时不会保存DHCP服务器的租约信息，故当系统重新启动或使用 reset dhcp server ip-in-use 命令清除租约后，配置文件中将没有任何租约信息。此时客户端如果发出续约请求将会被拒绝，客户端需要重新申请IP地址。


2.11 DHCP服务器典型配置举例

常见的DHCP组网方式可分为两类：一种是DHCP服务器和客户端在同一个子网内，直接进行DHCP报文的交互；第二种是DHCP服务器和客户端处于不同的子网中，必须通过DHCP中继代理实现IP地址的分配。无论哪种情况下，DHCP的配置都是相同的。

2.11.1 静态绑定地址典型配置举例

1. 组网需求

Switch B和Switch C分别作为DHCP客户端和BOOTP客户端，从DHCP服务器Switch A获取静态绑定的IP地址、域名服务器、网关地址等信息。

其中：

l Switch B上VLAN接口2的客户端ID为：

3030-3066-2e65-3234-392e-3830-3530-2d56-6c61-6e2d-696e-7465-7266-6163-6532；

l Switch C上VLAN接口2的MAC地址为：000f-e249-8050。

2. 组网图

图2-1 静态绑定地址组网图

3. 配置步骤

(1) 配置接口的IP地址

<SwitchA> system-view

[SwitchA] interface vlan-interface 2

[SwitchA-Vlan-interface2] ip address 10.1.1.1 25

[SwitchA-Vlan-interface2] quit

(2) 配置DHCP服务

# 使能DHCP服务。

[SwitchA] dhcp enable

# 配置VLAN接口2工作在DHCP服务器模式。

[SwitchA] interface vlan-interface 2

[SwitchA-Vlan-interface2] dhcp select server global-pool

[SwitchA-Vlan-interface2] quit

# 配置DHCP地址池0，采用静态绑定方式为Switch B分配IP地址。

[SwitchA] dhcp server ip-pool 0

[SwitchA-dhcp-pool-0] static-bind ip-address 10.1.1.5

[SwitchA-dhcp-pool-0] static-bind client-identifier 3030-3066-2e65-3234-392e-3830-3530-2d56-6c61-6e2d-696e-7465-7266-6163-6532

[SwitchA-dhcp-pool-0] dns-list 10.1.1.2

[SwitchA-dhcp-pool-0] gateway-list 10.1.1.126

[SwitchA-dhcp-pool-0] quit

# 配置DHCP地址池1，采用静态绑定方式为Switch C分配IP地址。

[SwitchA] dhcp server ip-pool 1

[SwitchA-dhcp-pool-1] static-bind ip-address 10.1.1.6

[SwitchA-dhcp-pool-1] static-bind mac-address 000f-e249-8050

[SwitchA-dhcp-pool-1] dns-list 10.1.1.2

[SwitchA-dhcp-pool-1] gateway-list 10.1.1.126

(3) 验证配置结果

配置完成后，Switch B和Switch C可以从DHCP服务器Switch A分别申请到IP地址10.1.1.5和10.1.1.6，并获取相关网络配置参数。通过 display dhcp server ip-in-use 命令可以查看DHCP服务器为客户端分配的IP地址。

2.11.2 动态分配地址典型配置举例

1. 组网需求

l 作为DHCP服务器的Switch A为网段10.1.1.0/24中的客户端动态分配IP地址，该地址池网段分为两个子网网段：10.1.1.0/25和10.1.1.128/25；

l Switch A的两个VLAN接口，VLAN接口1和VLAN接口2的地址分别为10.1.1.1/25和10.1.1.129/25；

l 10.1.1.0/25网段内的地址租用期限为10天12小时，域名后缀为aabbcc.com，DNS服务器地址为10.1.1.2/25，WINS服务器地址为10.1.1.4/25，网关的地址为10.1.1.126/25；

l 10.1.1.128/25网段内的地址租用期限为5天，域名后缀为aabbcc.com，DNS服务器地址为10.1.1.2/25，无WINS服务器地址，网关的地址为10.1.1.254/25。

l 10.1.1.0/25网段与10.1.1.128/25网段的域名后缀、DNS服务器地址相同，可以只配置10.1.1.0/24网段的域名后缀和DNS服务器地址，10.1.1.0/25网段与10.1.1.128/25网段继承10.1.1.0/24网段的配置。

2. 组网图

图2-2 DHCP组网图

3. 配置步骤

(1) 配置端口属于VLAN及对应VLAN接口的IP地址（略）

(2) 配置DHCP服务

# 使能DHCP服务。

<SwitchA> system-view

[SwitchA] dhcp enable

# 配置VLAN接口1和VLAN接口2工作在DHCP服务器模式。

[SwitchA] interface vlan-interface 1

[SwitchA-Vlan-interface1] dhcp select server global-pool

[SwitchA-Vlan-interface1] quit

[SwitchA] interface vlan-interface 2

[SwitchA-Vlan-interface2] dhcp select server global-pool

[SwitchA-Vlan-interface2] quit

# 配置不参与自动分配的IP地址（DNS服务器、WINS服务器和网关地址）。

[SwitchA] dhcp server forbidden-ip 10.1.1.2

[SwitchA] dhcp server forbidden-ip 10.1.1.4

[SwitchA] dhcp server forbidden-ip 10.1.1.126

[SwitchA] dhcp server forbidden-ip 10.1.1.254

# 配置DHCP地址池0的共有属性（网段、客户端域名后缀、DNS服务器地址）。

[SwitchA] dhcp server ip-pool 0

[SwitchA-dhcp-pool-0] network 10.1.1.0 mask 255.255.255.0

[SwitchA-dhcp-pool-0] domain-name aabbcc.com

[SwitchA-dhcp-pool-0] dns-list 10.1.1.2

[SwitchA-dhcp-pool-0] quit

# 配置DHCP地址池1的属性（网段、网关、地址租用期限、WINS服务器地址）。

[SwitchA] dhcp server ip-pool 1

[SwitchA-dhcp-pool-1] network 10.1.1.0 mask 255.255.255.128

[SwitchA-dhcp-pool-1] gateway-list 10.1.1.126

[SwitchA-dhcp-pool-1] expired day 10 hour 12

[SwitchA-dhcp-pool-1] nbns-list 10.1.1.4

[SwitchA-dhcp-pool-1] quit

# 配置DHCP地址池2的属性（网段、地址租用期限、网关）。

[SwitchA] dhcp server ip-pool 2

[SwitchA-dhcp-pool-2] network 10.1.1.128 mask 255.255.255.128

[SwitchA-dhcp-pool-2] expired day 5

[SwitchA-dhcp-pool-2] gateway-list 10.1.1.254

(3) 验证配置结果

配置完成后，10.1.1.0/25和10.1.1.128/25网段的客户端可以从DHCP服务器Switch A申请到相应网段的IP地址和网络配置参数。通过 display dhcp server ip-in-use 命令可以查看DHCP服务器为客户端分配的IP地址。

2.11.3 自定义选项典型配置举例

1. 组网需求

DHCP客户端Switch B从DHCP服务器Switch A获取IP地址和PXE引导服务器地址信息：

l IP地址所在网段为10.1.1.0/24；

l PXE引导服务器地址为1.2.3.4和2.2.2.2。

DHCP服务器需要通过自定义选项的方式配置Option 43的内容，从而实现为客户端分配PXE引导服务器地址。Option 43和PXE服务器地址列表的格式分别如 图1-5 和 图1-7 。DHCP服务器上配置的Option 43选项内容为80 0B 00 00 02 01 02 03 04 02 02 02 02，其中80为子选项类型（Sub-option type），0B为子选项长度（Sub-option length），00 00为PXE服务器类型（PXE server type），02为服务器数目（Server number），01 02 03 04 02 02 02 02为服务器的IP地址1.2.3.4和2.2.2.2。

2. 组网图

图2-3 自定义选项典型配置举例

3. 配置步骤

(1) 配置各接口的IP地址（略）

(2) 配置DHCP服务

# 使能DHCP服务。

<SwitchA> system-view

[SwitchA] dhcp enable

# 配置VLAN接口2工作在DHCP服务器模式。

[SwitchA] interface vlan-interface 2

[SwitchA-Vlan-interface2] dhcp select server global-pool

[SwitchA-Vlan-interface2] quit

# 配置DHCP地址池0。

[SwitchA] dhcp server ip-pool 0

[SwitchA-dhcp-pool-0] network 10.1.1.0 mask 255.255.255.0

[SwitchA-dhcp-pool-0] option 43 hex 80 0B 00 00 02 01 02 03 04 02 02 02 02

(3) 验证配置结果

配置完成后，Switch B可以从DHCP服务器Switch A获取到10.1.1.0/24网段的IP地址和PXE引导服务器地址。通过 display dhcp server ip-in-use 命令可以查看DHCP服务器为客户端分配的IP地址。


2.12 DHCP服务器常见配置错误举例

1. 故障现象

客户端从DHCP服务器动态获得的IP地址与其他主机IP地址冲突。

2. 故障分析

可能是网络上有主机私自配置了IP地址，导致冲突。

3. 处理过程

(1) 禁用客户端的网卡或断开其网线，从另外一台主机执行ping操作，检查网络中是否已经存在该IP地址的主机。

(2) 如果能够收到ping操作的响应消息，则说明该IP地址已由用户静态配置。在DHCP服务器上执行 dhcp server forbidden-ip 命令，禁止该IP地址参与动态地址分配。

(3) 重新启用客户端的网卡或连接好其网线，在客户端释放并重新获取IP地址。以Windows XP为例，在Windows环境下运行 cmd 进入DOS环境，使用 ipconfig/release命令释放IP地址，之后使用 ipconfig/renew重新获取IP地址。


3 DHCP中继配置

DHCP中继中对于接口的相关配置，目前只能在三层以太网端口、VLAN接口和三层聚合接口上进行。

相关链接

  • 3.1 DHCP中继简介
  • 3.2 DHCP中继配置任务简介
  • 3.3 配置DHCP中继
  • 3.4 DHCP中继显示和维护
  • 3.5 DHCP中继典型配置举例
  • 3.6 DHCP中继常见配置错误举例
父主题： 03-DHCP配置


3.1 DHCP中继简介

3.1.1 DHCP中继的应用环境

由于在IP地址动态获取过程中采用广播方式发送请求报文，因此DHCP只适用于DHCP客户端和服务器处于同一个子网内的情况。为进行动态主机配置，需要在所有网段上都设置一个DHCP服务器，这显然是很不经济的。

DHCP中继功能的引入解决了这一难题：客户端可以通过DHCP中继与其他网段的DHCP服务器通信，最终获取到IP地址。这样，多个网络上的DHCP客户端可以使用同一个DHCP服务器，既节省了成本，又便于进行集中管理。

设备作为MCE（Multi-VPN-instance Customer Edge，多实例用户网络边界设备）时，在设备上配置DHCP中继功能，不仅可以为公网上的DHCP服务器和DHCP客户端转发DHCP报文，还可以实现为私网内的DHCP服务器和DHCP客户端转发DHCP报文，但是公网和私网之间、不同私网之间的IP地址空间不能重叠。MCE的详细介绍，请参见“三层技术-IP路由配置指导”中的“MCE”。

3.1.2 DHCP中继的基本原理

图3-1 是DHCP中继的典型应用示意图。

图3-1 DHCP中继的典型组网应用

通过DHCP中继完成动态配置的过程中，DHCP客户端与DHCP服务器的处理方式与不通过DHCP中继时的处理方式基本相同。下面只说明DHCP中继的转发过程，报文的具体交互过程请参见“ 1.2.2 IP地址动态获取过程 ”。

图3-2 DHCP中继的工作过程

如 图3-2 所示，DHCP中继的工作过程为：

(1) 具有DHCP中继功能的网络设备收到DHCP客户端以广播方式发送的DHCP-DISCOVER或DHCP-REQUEST报文后，将报文中的giaddr字段填充为DHCP中继的IP地址，并根据配置将报文单播转发给指定的DHCP服务器。

(2) DHCP服务器根据giaddr字段为客户端分配IP地址等参数，并通过DHCP中继将配置信息转发给客户端，完成对客户端的动态配置。

3.1.3 DHCP中继支持Option 82功能

Option 82记录了DHCP客户端的位置信息。管理员可以利用该选项定位DHCP客户端，实现对客户端的安全和计费等控制。Option 82的详细介绍请参见“ 1.4.3 2. 中继代理信息选项（Option 82） ”。

如果DHCP中继支持Option 82功能，则当DHCP中继接收到DHCP请求报文后，将根据报文中是否包含Option 82以及用户配置的处理策略及填充模式等对报文进行相应的处理，并将处理后的报文转发给DHCP服务器。具体的处理方式见 表3-1 。

如果DHCP中继收到的应答报文中带有Option 82，则会将Option 82删除后再转发给DHCP客户端。

表3-1 DHCP中继支持Option 82的处理方式

收到DHCP请求报文 | 处理策略 | 填充模式 | DHCP中继对报文的处理
收到的报文中带有Option 82 | Drop | 任意 | 丢弃报文
 | Keep | 任意 | 保持报文中的Option 82不变并进行转发
 | Replace | normal | 采用normal模式填充Option 82，替换报文中原有的Option 82并进行转发
 |  | verbose | 采用verbose模式填充Option 82，替换报文中原有的Option 82并进行转发
 |  | 用户自定义 | 采用用户自定义的内容填充Option 82，替换报文中原有的Option 82并进行转发
收到的报文中不带有Option 82 | - | normal | 采用normal模式填充Option 82并进行转发
 |  | verbose | 采用verbose模式填充Option 82并进行转发
 |  | 用户自定义 | 采用用户自定义的内容填充Option 82并进行转发


3.2 DHCP中继配置任务简介

表3-2 DHCP中继配置任务简介

配置任务 | 说明 | 详细配置
使能DHCP服务 | 必选 | 3.3.1
配置接口工作在DHCP中继模式 | 必选 | 3.3.2
配置DHCP服务器组 | 必选 | 3.3.3
配置DHCP中继的安全功能 | 可选 | 3.3.4
配置DHCP中继的用户下线检测功能 | 可选 | 3.3.5
配置通过DHCP中继释放客户端的IP地址 | 可选 | 3.3.6
配置DHCP中继支持Option 82功能 | 可选 | 3.3.7


3.3 配置DHCP中继

3.3.1 使能DHCP服务

只有使能DHCP服务后，其它相关的DHCP中继配置才能生效。

表3-3 使能DHCP服务

操作 | 命令 | 说明
进入系统视图 | system-view | -
使能DHCP服务 | dhcp enable | 必选 缺省情况下，DHCP服务处于禁止状态

3.3.2 配置接口工作在DHCP中继模式

配置接口工作在中继模式后，当接口收到DHCP客户端发来的DHCP报文时，会将报文转发给DHCP服务器，由服务器分配地址。

表3-4 配置接口工作在DHCP中继模式

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
配置接口工作在DHCP中继模式 | dhcp select relay | 必选 缺省情况下，使能DHCP服务后，接口工作在DHCP服务器模式

DHCP客户端通过DHCP中继获取IP地址时，DHCP服务器上需要配置与DHCP中继连接DHCP客户端的接口的IP地址所在网段（网络号和掩码）完全相同的地址池，否则会导致DHCP客户端无法获得正确的IP地址。

3.3.3 配置DHCP服务器组

为了提高可靠性，可以在一个网络中设置多个DHCP服务器。多个DHCP服务器构成一个DHCP服务器组。当接口与DHCP服务器组建立归属关系后，会将客户端发来的DHCP报文转发给服务器组中的所有服务器。

表3-5 配置DHCP服务器组

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置DHCP服务器组中DHCP服务器的IP地址 | dhcp relay server-group group-id ip ip-address | 必选 缺省情况下，没有配置DHCP服务器组中服务器的IP地址
进入接口视图 | interface interface-type interface-number | -
配置接口与DHCP服务器组的归属关系 | dhcp relay server-select group-id | 必选 缺省情况下，接口没有与任何一个DHCP服务器组建立归属关系

l 设备上最多可以配置20个DHCP服务器组。

l 通过重复执行 dhcp relay server-group 命令，可以在一个DHCP服务器组中配置多个DHCP服务器的IP地址。每个DHCP服务器组中最多可以配置8个DHCP服务器地址。

l DHCP服务器组中服务器的IP地址不能与DHCP中继连接客户端的接口IP地址在同一网段。否则，可能导致客户端无法获得IP地址。

l 每个DHCP服务器组可以对应多个接口。但每个接口只能对应一个DHCP服务器组。在同一接口下多次执行 dhcp relay server-select 命令，新的配置会覆盖已有配置。但是，如果新指定的DHCP服务器组不存在时，新的归属关系配置不成功，接口还是维持与上一次配置的DHCP服务器组的归属关系。

l dhcp relay server-select 命令中所指定的组号，需事先通过 dhcp relay server-group 命令进行配置。

3.3.4 配置DHCP中继的安全功能

1. DHCP中继的地址匹配检查功能

为了防止非法主机静态配置一个IP地址并访问外部网络，设备支持DHCP中继的地址匹配检查功能。

接口上使能该功能后，当客户端通过DHCP中继从DHCP服务器获取到IP地址时，DHCP中继可以自动记录客户端IP地址与MAC地址的绑定关系，生成DHCP中继的动态用户地址表项。同时，为满足用户采用合法固定IP地址访问外部网络的需求，DHCP中继也支持静态配置用户地址表项，即在DHCP中继上手工配置IP地址与MAC地址的绑定关系。

DHCP中继接收到主机发送的报文后，如果在用户地址表中（包括DHCP中继动态记录的表项以及手工配置的用户地址表项）没有与报文源IP地址和源MAC地址匹配的表项，则不学习该主机的ARP表项。DHCP中继收到应答给该主机的报文后，无法将应答报文发送给该主机。从而，保证非法主机不能通过DHCP中继与外部网络通信。

表3-6 配置DHCP中继的地址匹配检查功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置DHCP中继的静态用户地址表项 | dhcp relay security static ip-address mac-address [ interface interface-type interface-number ] | 可选 缺省情况下，没有配置DHCP中继的静态用户地址表项
进入接口视图 | interface interface-type interface-number | -
使能DHCP中继的地址匹配检查功能 | dhcp relay address-check enable | 必选 缺省情况，禁止DHCP中继的地址匹配检查功能

l 目前，只能在三层以太网端口和VLAN接口上执行 dhcp relay address-check enable 命令。

l 在接口上使能DHCP中继的地址匹配检查功能之前，需要先使能DHCP服务、并配置该接口工作在DHCP中继模式，否则地址匹配检查功能不会生效。

l 执行 dhcp relay address-check enable 命令后将只检查IP和MAC地址，不检查接口。

l 通过 dhcp relay security static 命令配置静态用户地址表项时，如果静态用户地址表项与接口绑定，配置的接口必须工作在DHCP中继模式，否则可能引起地址表项冲突。

2. DHCP中继动态用户地址表项定时刷新功能

DHCP客户端释放动态获取的IP地址时，会向DHCP服务器单播发送DHCP-RELEASE报文，DHCP中继不会处理该报文的内容。如果此时DHCP中继上记录了该IP地址与MAC地址的绑定关系，则会造成DHCP中继的用户地址表项无法实时刷新。为了解决这个问题，DHCP中继支持动态用户地址表项的定时刷新功能。

DHCP中继动态用户地址表项定时刷新功能开启时，DHCP中继每隔指定时间以客户端分配到的IP地址和DHCP中继接口的MAC地址向DHCP服务器发送DHCP-REQUEST报文：

l 如果DHCP中继接收到DHCP服务器响应的DHCP-ACK报文或在指定时间内没有接收到DHCP服务器的响应报文，则表明这个IP地址已经可以进行分配，DHCP中继会将动态用户地址表中对应的表项老化掉。为了避免地址浪费，DHCP中继收到DHCP-ACK报文后，会发送DHCP-RELEASE报文释放申请到的IP地址。

l 如果DHCP中继接收到DHCP服务器响应的DHCP-NAK报文，则表示该IP地址的租约仍然存在，DHCP中继不会老化该IP地址对应的表项。

表3-7 配置DHCP中继动态用户地址表项定时刷新周期

操作 | 命令 | 说明
进入系统视图 | system-view | -
开启DHCP中继动态用户地址表项定时刷新功能 | dhcp relay security refresh enable | 可选 缺省情况下，DHCP中继动态用户地址表项定时刷新功能处于开启状态
配置DHCP中继动态用户地址表项的定时刷新周期 | dhcp relay security tracker { interval | auto } | 可选 缺省情况下，定时刷新周期为 auto，即根据表项的数目自动计算刷新时间间隔

3. 配置伪DHCP服务器检测功能

如果网络中有私自架设的DHCP服务器，当客户端申请IP地址时，这台DHCP服务器就会与DHCP客户端进行交互，导致客户端获得错误的IP地址，这种私设的DHCP服务器称为伪DHCP服务器。

使能伪DHCP服务器检测功能后，DHCP中继会检查接收到的DHCP报文中是否携带Option 54（Server Identifier Option，服务器标识选项）。如果携带该选项，则DHCP服务器记录此选项中的IP地址，即给客户端分配IP地址的服务器IP地址，并记录接收到报文的接口信息，以便管理员及时发现并处理伪DHCP服务器。

表3-8 配置伪DHCP服务器检测功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
使能伪DHCP服务器检测功能 | dhcp relay server-detect | 必选 缺省情况下，禁止伪DHCP服务器检测功能

l 使能伪DHCP服务器检测功能后，对所有DHCP服务器都会进行记录，包括合法的DHCP服务器，管理员需要从日志信息中查找伪DHCP服务器。

l 使能伪DHCP服务器检测功能后，对每个DHCP服务器只记录一次。

4. 配置防止DHCP饿死攻击

DHCP饿死攻击是指攻击者伪造chaddr字段各不相同的DHCP请求报文，向DHCP服务器申请大量的IP地址，导致DHCP服务器地址池中的地址耗尽，无法为合法的DHCP客户端分配IP地址，或导致DHCP服务器消耗过多的系统资源，无法处理正常业务。

如果封装DHCP请求报文的数据帧的源MAC地址各不相同，则限制三层接口上可以学习到的ARP表项数，或限制二层端口上可以学习到的MAC地址数，并配置学习到的MAC地址数达到最大值时，丢弃源MAC地址不在MAC地址表里的报文，能够避免攻击者申请过多的IP地址，在一定程度上缓解DHCP饿死攻击。

如果封装DHCP请求报文的数据帧的MAC地址都相同，则通过上述方法无法防止DHCP饿死攻击。在这种情况下，需要使能DHCP中继的MAC地址检查功能。使能该功能后，DHCP中继检查接收到的DHCP请求报文中的chaddr字段和数据帧的源MAC地址字段是否一致。如果一致，则认为该报文合法，将其转发给DHCP服务器；如果不一致，则丢弃该报文。

表3-9 使能DHCP中继的MAC地址检查功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
使能DHCP中继的MAC地址检查功能 | dhcp relay check mac-address | 必选 缺省情况下，DHCP中继的MAC地址检查功能处于关闭状态

由于DHCP中继转发DHCP报文时会修改报文的源MAC地址，所以只能在靠近DHCP客户端的第一跳DHCP中继设备上使能MAC地址检查功能。在非第一跳DHCP中继设备上使能MAC地址检查功能，会使DHCP中继设备错误的丢弃报文，导致客户端地址申请不成功。

3.3.5 配置DHCP中继的用户下线检测功能

DHCP中继的用户下线检测功能以ARP表项老化功能为基础，ARP表项老化时认为该表项对应的用户已经下线。

如果接口上使能了DHCP中继用户下线检测功能，则ARP表项老化时，会删除对应的用户地址表项。同时，DHCP中继还会向DHCP服务器发送DHCP-RELEASE报文，释放下线用户的IP地址租约。

表3-10 配置DHCP中继的用户下线检测功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
使能DHCP中继的用户下线检测功能 | dhcp relay client-detect enable | 必选 缺省情况下，DHCP中继的用户下线检测功能处于关闭状态

手工删除ARP表项，不会触发删除对应的用户地址表项。该ARP表项对应的用户下线时，需要通过 undo dhcp relay security 命令手工删除对应的用户地址表项。

3.3.6 配置通过DHCP中继释放客户端的IP地址

在某些情况下，可能需要通过DHCP中继手工释放客户端申请到的IP地址。如果DHCP中继上存在客户端IP地址对应的动态用户地址表项，则配置通过DHCP中继释放该客户端IP地址后，DHCP中继会主动向DHCP服务器发送DHCP-RELEASE报文。DHCP服务器收到该报文后，将会释放指定IP地址的租约。DHCP中继也会删除该动态用户地址表项。

表3-11 配置通过DHCP中继释放客户端的IP地址

操作 | 命令 | 说明
进入系统视图 | system-view | -
向DHCP服务器请求释放客户端申请到的IP地址 | dhcp relay release ip client-ip | 必选

l 释放的客户端IP地址必须是动态用户地址表项中存在的IP地址，否则DHCP中继无法释放该IP地址。

l 只有使能DHCP中继的地址匹配检查功能或IP Source Guard功能后，才会自动生成DHCP中继的动态用户地址表项。有关IP Source Guard的详细介绍，请参见“安全配置指导”中的“IP Source Guard”。

3.3.7 配置DHCP中继支持Option 82功能

1. 配置准备

在配置DHCP中继支持Option82功能之前，需完成DHCP中继的必配任务，即：

l 使能DHCP服务

l 配置接口工作在DHCP中继模式

l 配置DHCP服务器组

2. 配置DHCP中继支持Option 82功能

表3-12 配置DHCP中继支持Option 82功能

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
进入接口视图 |  | interface interface-type interface-number | -
使能DHCP中继支持Option 82功能 |  | dhcp relay information enable | 必选 缺省情况下，禁止DHCP中继支持Option 82功能
配置DHCP中继对包含Option 82的请求报文的处理策略 |  | dhcp relay information strategy { drop | keep | replace } | 可选 缺省情况下，处理策略为 replace
配置非用户自定义的Option 82 | 配置Option 82的填充模式 | dhcp relay information format { normal | verbose [ node-identifier { mac | sysname | user-defined node-identifier } ] } | 可选 缺省情况下，Option 82的填充模式为 normal
 | 配置Circuit ID子选项的填充格式 | dhcp relay information circuit-id format-type { ascii | hex } | 可选 缺省情况下，Circuit ID子选项的填充格式由Option 82的填充模式决定，每个字段的填充格式不同 配置的填充格式只对非用户自定义的填充内容有效
 | 配置Remote ID子选项的填充格式 | dhcp relay information remote-id format-type { ascii | hex } | 可选 缺省情况下，采用HEX格式填充Remote ID子选项 配置的填充格式只对非用户自定义的填充内容有效
配置用户自定义的Option 82 | 配置Circuit ID子选项的内容 | dhcp relay information circuit-id string circuit-id | 可选 缺省情况下，Circuit ID子选项的内容由Option 82的填充模式决定
 | 配置Remote ID子选项的内容 | dhcp relay information remote-id string { remote-id | sysname } | 可选 缺省情况下，Remote ID子选项的内容由Option 82的填充模式决定

l 为使Option 82功能正常使用，需要在DHCP服务器和DHCP中继上都进行相应配置。DHCP服务器的相关配置请参见“ 2.8 配置Option 82的处理方式 ”。

l DHCP中继对包含Option 82请求报文的处理策略为 replace 时，需要配置Option 82的填充格式；处理策略为 keep 或 drop 时，不需要配置Option 82的填充格式。

l 如果以节点的设备名称（sysname）作为节点标识填充DHCP报文的Option 82，则设备名称中不能包含空格；否则，DHCP中继将丢弃该报文。


3.4 DHCP中继显示和维护

在完成上述配置后，在任意视图下执行 display 命令可以显示配置后DHCP中继的运行情况，通过查看显示信息验证配置的效果。

在用户视图下执行 reset 命令清除DHCP中继的统计信息。

表3-13 DHCP中继显示和维护

操作 | 命令
显示接口对应的DHCP服务器组的信息 | display dhcp relay { all | interface interface-type interface-number } [ | { begin | exclude | include } regular-expression ]
显示DHCP中继上Option 82的配置信息 | display dhcp relay information { all | interface interface-type interface-number } [ | { begin | exclude | include } regular-expression ]
显示DHCP中继的用户地址表项信息 | display dhcp relay security [ ip-address | dynamic | static ] [ | { begin | exclude | include } regular-expression ]
显示DHCP中继用户地址表项的统计信息 | display dhcp relay security statistics [ | { begin | exclude | include } regular-expression ]
显示DHCP中继动态用户地址表项的定时刷新周期 | display dhcp relay security tracker [ | { begin | exclude | include } regular-expression ]
显示DHCP服务器组中服务器的IP地址。 | display dhcp relay server-group { group-id | all } [ | { begin | exclude | include } regular-expression ]
显示DHCP中继的相关报文统计信息 | display dhcp relay statistics [ server-group { group-id | all } ] [ | { begin | exclude | include } regular-expression ]
清除DHCP中继的统计信息 | reset dhcp relay statistics [ server-group group-id ]


3.5 DHCP中继典型配置举例

3.5.1 DHCP中继配置举例

1. 组网需求

l DHCP客户端所在网段为10.10.1.0/24，DHCP服务器的IP地址为10.1.1.1/24；

l 由于DHCP客户端和DHCP服务器不在同一网段，因此，需要在客户端所在网段设置DHCP中继设备，以便客户端可以从DHCP服务器申请到10.10.1.0/24网段的IP地址及相关配置信息；

l Switch A作为DHCP中继通过端口（属于VLAN1）连接到DHCP客户端所在的网络，交换机VLAN接口1的IP地址为10.10.1.1/24，VLAN接口2的IP地址为10.1.1.2/24。

2. 组网图

图3-3 DHCP中继组网示意图

3. 配置步骤

# 配置各接口的IP地址（略）。

# 使能DHCP服务。

<SwitchA> system-view

[SwitchA] dhcp enable

# 配置DHCP服务器的地址。

[SwitchA] dhcp relay server-group 1 ip 10.1.1.1

# 配置VLAN接口1工作在DHCP中继模式。

[SwitchA] interface vlan-interface 1

[SwitchA-Vlan-interface1] dhcp select relay

# 配置VLAN接口1对应DHCP服务器组1。

[SwitchA-Vlan-interface1] dhcp relay server-select 1

配置完成后，DHCP客户端可以通过DHCP中继从DHCP服务器获取IP地址及相关配置信息。通过 display dhcp relay statistics 命令可以显示DHCP中继转发的DHCP报文统计信息；如果在DHCP中继上通过 dhcp relay address-check enable 命令使能了DHCP中继的地址匹配检查功能，则可以通过 display dhcp relay security 命令可以显示通过DHCP中继获取IP地址的客户端信息。

l 由于DHCP中继连接客户端的接口IP地址与DHCP服务器的IP地址不在同一网段，因此需要在DHCP服务器上通过静态路由或动态路由协议保证两者之间路由可达。

l 为了使DHCP客户端能从DHCP服务器获得IP地址，还需要在DHCP服务器上进行一些配置。DHCP服务器的配置方法，请参见“ 2.11 DHCP服务器典型配置举例 ”。

3.5.2 DHCP中继支持Option 82配置举例

1. 组网需求

l 在DHCP中继Switch A上使能Option 82功能；

l 对包含Option 82的请求报文的处理策略为 replace；

l Ciruict ID填充内容为company001，Remote ID填充内容为device001；

l Switch A将添加Option 82的DHCP请求报文转发给DHCP服务器Switch B，使得DHCP客户端可以获取到IP地址。

2. 组网图

如 图3-3 所示。

3. 配置步骤

# 配置各接口的IP地址（略）。

# 使能DHCP服务。

<SwitchA> system-view

[SwitchA] dhcp enable

# 配置DHCP服务器的地址。

[SwitchA] dhcp relay server-group 1 ip 10.1.1.1

# 配置VLAN接口1工作在DHCP中继模式。

[SwitchA] interface vlan-interface 1

[SwitchA-Vlan-interface1] dhcp select relay

# 配置VLAN接口1对应DHCP服务器组1。

[SwitchA-Vlan-interface1] dhcp relay server-select 1

# 配置Option 82的处理策略和填充内容。

[SwitchA-Vlan-interface1] dhcp relay information enable

[SwitchA-Vlan-interface1] dhcp relay information strategy replace

[SwitchA-Vlan-interface1] dhcp relay information circuit-id string company001

[SwitchA-Vlan-interface1] dhcp relay information remote-id string device001

为使Option 82功能正常使用，DHCP服务器也需要进行相应配置。


3.6 DHCP中继常见配置错误举例

1. 故障现象

客户端不能通过DHCP中继获得配置信息。

2. 故障分析

DHCP中继或DHCP服务器的配置可能有问题。可以打开调试开关显示调试信息，并通过执行 display 命令显示接口状态信息的方法来分析定位。

3. 处理过程

l 检查DHCP服务器和DHCP中继是否使能了DHCP服务。

l 检查DHCP服务器是否配置有DHCP客户端所在网段的地址池。

l 检查具有DHCP中继功能的网络设备和DHCP服务器是否配置有相互可达的路由。

l 检查具有DHCP中继功能的网络设备是否在连接DHCP客户端所在网段的接口上配置有正确的DHCP服务器组，且DHCP服务器组的IP地址配置正确。


4 DHCP客户端配置

l DHCP客户端中对于接口的相关配置，目前只能在三层以太网端口、VLAN接口和三层聚合接口上进行。

l 多个具有相同MAC地址的VLAN接口通过中继以DHCP方式申请IP地址时，不能用Windows 2000 Server和Windows 2003 Server作为DHCP服务器。

l 加入聚合组的端口不能配置为DHCP客户端。

相关链接

  • 4.1 DHCP客户端简介
  • 4.2 配置接口使用DHCP方式获取IP地址
  • 4.3 DHCP客户端显示和维护
  • 4.4 DHCP客户端典型配置举例
父主题： 03-DHCP配置


4.1 DHCP客户端简介

指定设备的接口作为DHCP客户端后，可以使用DHCP协议从DHCP服务器动态获得IP地址等参数，方便用户配置，也便于集中管理。


4.2 配置接口使用DHCP方式获取IP地址

表4-1 配置接口使用DHCP方式获取IP地址

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
配置接口使用DHCP方式获取IP地址 | ip address dhcp-alloc [ client-identifier mac interface-type interface-number ] | 必选 缺省情况下，接口不使用DHCP方式获取IP地址

：

l 接口可以采用多种方式获得IP地址，新的配置方式会覆盖原有的配置方式。

l 当接口被配置为通过DHCP动态获取IP地址后，不能再给该接口配置从IP地址。

l 如果DHCP服务器为接口分配的IP地址与设备上其他接口的IP地址在同一网段，则该接口不会使用该IP地址，且不再向DHCP服务器申请IP地址，除非手动删除冲突接口的IP地址，并重新使能接口（先后执行 shutdown 和 undo shutdown 命令）或重新配置接口使用DHCP方式获取IP地址（先后执行 undo ip address dhcp-alloc 和 ip address dhcp-alloc 命令）。


4.3 DHCP客户端显示和维护

在完成上述配置后，在任意视图下执行 display 命令可以显示配置后DHCP客户端的信息，通过查看显示信息验证配置的效果。

表4-2 DHCP客户端显示和维护

操作 | 命令
显示DHCP客户端的相关信息 | display dhcp client [ verbose ] [ interface interface-type interface-number ] [ | { begin | exclude | include } regular-expression ]


4.4 DHCP客户端典型配置举例

1. 组网需求

Switch B的端口（属于VLAN2）接入局域网，VLAN接口2通过DHCP协议从DHCP服务器获取IP地址、DNS服务器地址和静态路由信息：

l IP地址所在网段为10.1.1.0/24；

l DNS服务器地址为20.1.1.1；

l 静态路由信息为到达20.1.1.0/24网段的下一跳地址是10.1.1.2。

DHCP服务器需要通过自定义选项的方式配置Option 121的内容，以便为客户端分配静态路由信息。其中，目的描述符由子网掩码长度和目的网络地址两部分组成。在本例中，目的描述符字段取值为18 14 01 01（十六进制数值，表示子网掩码长度为24，目的网络地址为20.1.1.0）；下一跳地址字段取值为0A 01 01 02（十六进制数值，表示下一跳地址为10.1.1.2）。

2. 组网图

图4-1 DHCP客户端配置举例组网图

3. 配置步骤

(1) 配置DHCP服务器Switch A

# 配置接口的IP地址。

<SwitchA> system-view

[SwitchA] interface vlan-interface 2

[SwitchA-Vlan-interface2] ip address 10.1.1.1 24

[SwitchA-Vlan-interface2] quit

# 使能DHCP服务。

[SwitchA] dhcp enable

# 配置不参与自动分配的IP地址。

[SwitchA] dhcp server forbidden-ip 10.1.1.2

# 配置DHCP地址池0，采用动态绑定方式分配IP地址。可分配的网段为10.1.1.0/24，租约有效期限为10天，DNS服务器地址为20.1.1.1，到达20.1.1.0/24网段的下一跳地址是10.1.1.2。

[SwitchA] dhcp server ip-pool 0

[SwitchA-dhcp-pool-0] network 10.1.1.0 mask 255.255.255.0

[SwitchA-dhcp-pool-0] expired day 10

[SwitchA-dhcp-pool-0] dns-list 20.1.1.1

[SwitchA-dhcp-pool-0] option 121 hex 18 14 01 01 0A 01 01 02

(2) 配置DHCP客户端Switch B

# 配置VLAN接口2通过DHCP动态获取地址。

<SwitchB> system-view

[SwitchB] interface vlan-interface 2

[SwitchB-Vlan-interface2] ip address dhcp-alloc

(3) 验证配置结果

# 通过 display dhcp client 命令可以查看Switch B申请到的IP地址和网络配置参数。

[SwitchB-Vlan-interface2] display dhcp client verbose

Vlan-interface2 DHCP client information:

Current machine state: BOUND

Allocated IP: 10.1.1.3 255.255.255.0

Allocated lease: 864000 seconds, T1: 432000 seconds, T2: 756000 seconds

Lease from 2009.02.20 11:06:35 to 2009.03.02 11:06:35

DHCP server: 10.1.1.1

Transaction ID: 0x410090f0

Classless static route:

Destination: 20.1.1.0, Mask: 255.255.255.0, NextHop: 10.1.1.2

DNS server: 20.1.1.1

Client ID: 3030-3066-2e65-3230-

302e-3030-3032-2d45-

7468-6572-6e65-7430-

2f30

T1 will timeout in 4 days 23 hours 59 minutes 50 seconds.

# 通过 display ip routing-table 命令可以查看Switch B的路由表中添加了到达20.1.1.0/24网络的静态路由。

[SwitchB-Vlan-interface2] display ip routing-table

Routing Tables: Public

Destinations : 5 Routes : 5

Destination/Mask Proto Pre Cost NextHop Interface

10.1.1.0/24 Direct 0 0 10.1.1.3 Vlan2

10.1.1.3/32 Direct 0 0 127.0.0.1 InLoop0

20.1.1.0/24 Static 70 0 10.1.1.2 Vlan2

127.0.0.0/8 Direct 0 0 127.0.0.1 InLoop0

127.0.0.1/32 Direct 0 0 127.0.0.1 InLoop0


5 DHCP Snooping配置

设备只有位于DHCP客户端与DHCP服务器之间，或DHCP客户端与DHCP中继之间时，DHCP Snooping功能配置后才能正常工作；设备位于DHCP服务器与DHCP中继之间时，DHCP Snooping功能配置后不能正常工作。

相关链接

  • 5.1 DHCP Snooping简介
  • 5.2 DHCP Snooping配置任务简介
  • 5.3 配置DHCP Snooping基本功能
  • 5.4 配置DHCP Snooping支持Option 82功能
  • 5.5 配置DHCP Snooping表项备份功能
  • 5.6 配置防止DHCP饿死攻击
  • 5.7 配置防止伪造DHCP续约报文攻击
  • 5.8 DHCP Snooping显示和维护
  • 5.9 DHCP Snooping典型配置举例
父主题： 03-DHCP配置


5.1 DHCP Snooping简介

5.1.1 DHCP Snooping作用

DHCP Snooping是DHCP的一种安全特性，具有如下功能：

(1) 保证客户端从合法的服务器获取IP地址。

(2) 记录DHCP客户端IP地址与MAC地址的对应关系。

1. 保证客户端从合法的服务器获取IP地址

网络中如果存在私自架设的伪DHCP服务器，则可能导致DHCP客户端获取错误的IP地址和网络配置参数，无法正常通信。为了使DHCP客户端能通过合法的DHCP服务器获取IP地址，DHCP Snooping安全机制允许将端口设置为信任端口和不信任端口：

l 信任端口正常转发接收到的DHCP报文。

l 不信任端口接收到DHCP服务器响应的DHCP-ACK和DHCP-OFFER报文后，丢弃该报文。

连接DHCP服务器和其他DHCP Snooping设备的端口需要设置为信任端口，其他端口设置为不信任端口，从而保证DHCP客户端只能从合法的DHCP服务器获取IP地址，私自架设的伪DHCP服务器无法为DHCP客户端分配IP地址。

2. 记录DHCP客户端IP地址与MAC地址的对应关系

DHCP Snooping通过监听DHCP-REQUEST和信任端口收到的DHCP-ACK广播报文，记录DHCP Snooping表项，其中包括客户端的MAC地址、获取到的IP地址、与DHCP客户端连接的端口及该端口所属的VLAN等信息。利用这些信息可以实现：

l ARP Detection：根据DHCP Snooping表项来判断发送ARP报文的用户是否合法，从而防止非法用户的ARP攻击。ARP Detection的详细介绍请参见“安全配置指导”中的“ARP攻击防御”。

l MFF（MAC-Forced Forwarding）：在MFF的自动方式中，设备截获到用户发送的ARP请求后，根据DHCP snooping表项查找该用户对应的网关地址，并回复网关的MAC地址，强制用户将所有流量发送到网关，使得网关可以监控用户之间的数据流量，从而防止用户之间的恶意攻击，更好的保障网络安全。MFF的详细介绍请参见“安全配置指导”中的“MFF”。

l IP Source Guard：通过动态获取DHCP Snooping表项对端口转发的报文进行过滤，防止非法报文通过该端口。IP Source Guard的详细介绍请参见“安全配置指导”中的“IP Source Guard”。

l VLAN映射：发送给用户的报文通过查找映射VLAN（SVLAN）对应的DHCP Snooping表项中的DHCP客户端IP地址、MAC地址和原始VLAN（CVLAN）的信息，将报文的SVLAN修改为原来的CVLAN。VLAN映射的详细介绍请参见“二层技术-以太网交换配置指导”中的“VLAN映射”。

5.1.2 信任端口的典型应用环境

1. 连接DHCP服务器

图5-1 信任端口和非信任端口

如图5-1 所示，连接DHCP服务器的端口需要配置为信任端口，以便DHCP Snooping设备正常转发DHCP服务器的应答报文，保证DHCP客户端能够从合法的DHCP服务器获取IP地址。

2. DHCP Snooping级联网络

在多个DHCP Snooping设备级联的网络中，为了节省系统资源，不需要每台DHCP Snooping设备都记录所有DHCP客户端的IP地址和MAC地址绑定，只需在与客户端直接相连的DHCP Snooping设备上记录绑定信息。通过将间接与DHCP客户端相连的端口配置为不记录IP地址和MAC地址绑定的信任端口，可以实现该功能。如果DHCP客户端发送的请求报文从此类信任端口到达DHCP Snooping设备，DHCP Snooping设备不会记录客户端IP地址和MAC地址的绑定。

图5-2 DHCP Snooping级联组网图

图5-2 中设备各端口的角色如表5-1 所示。

表5-1 端口的角色

设备 | 不信任端口 | 不记录绑定信息的信任端口 | 记录绑定信息的信任端口
Switch A | Ethernet1/0/1 | Ethernet1/0/3 | Ethernet1/0/2
Switch B | Ethernet1/0/3和Ethernet1/0/4 | Ethernet1/0/1 | Ethernet1/0/2
Switch C | Ethernet1/0/1 | Ethernet1/0/3和Ethernet1/0/4 | Ethernet1/0/2

5.1.3 DHCP Snooping支持Option 82功能

Option 82记录了DHCP客户端的位置信息。管理员可以利用该选项定位DHCP客户端，实现对客户端的安全和计费等控制。Option 82的详细介绍请参见“1.4.3 2. 中继代理信息选项（Option 82）”。

如果DHCP Snooping支持Option 82功能，则当设备接收到DHCP请求报文后，将根据报文中是否包含Option 82以及用户配置的处理策略及填充模式等对报文进行相应的处理，并将处理后的报文转发给DHCP服务器。具体的处理方式见表5-2。

当设备接收到DHCP服务器的响应报文时，如果报文中含有Option 82，则删除Option 82，并转发给DHCP客户端；如果报文中不含有Option 82，则直接转发。

表5-2 DHCP Snooping支持Option 82的处理方式

收到DHCP请求报文 | 处理策略 | 填充模式 | DHCP Snooping对报文的处理
收到的报文中带有Option 82 | Drop | - | 丢弃报文
 | Keep | 任意 | 保持报文中的Option 82不变并进行转发
 | Replace | normal | 采用normal模式填充Option 82，替换报文中原有的Option 82并进行转发
 |  | verbose | 采用verbose模式填充Option 82，替换报文中原有的Option 82并进行转发
 |  | 用户自定义 | 采用用户自定义的内容填充Option 82，替换报文中原有的Option 82并进行转发
 | Append | normal | 保持报文中的Option 82不变并进行转发
 |  | verbose | 保持报文中的Option 82不变并进行转发
 |  | private | 在报文中原有Option 82的基础上追加子选项9的内容，如果原有Option 82中携带子选项9，在原有子选项9的基础上追加内容，然后转发报文
 |  | standard | 保持报文中的Option 82不变并进行转发
 |  | 用户自定义 | 保持报文中的Option 82不变并进行转发
收到的报文中不带有Option 82 | - | normal | 采用normal模式填充Option 82并进行转发
 |  | private | 采用私有模式填充Option 82并进行转发
 |  | standard | 采用standard模式填充Option 82并进行转发
 |  | verbose | 采用verbose模式填充Option 82并进行转发
 |  | 用户自定义 | 采用用户自定义的内容填充Option 82并进行转发

DHCP Snooping对Option 82的处理策略、填充模式与DHCP中继相同。


5.2 DHCP Snooping配置任务简介

表5-3 DHCP Snooping配置任务简介

配置任务 | 说明 | 详细配置
配置DHCP Snooping基本功能 | 必选 | 5.3
配置DHCP Snooping支持Option 82功能 | 可选 | 5.4
配置DHCP Snooping表项备份功能 | 可选 | 5.5
配置防止DHCP饿死攻击 | 可选 | 5.6
配置防止伪造DHCP续约报文攻击 | 可选 | 5.7


5.3 配置DHCP Snooping基本功能

表5-4 配置DHCP Snooping基本功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
使能DHCP Snooping功能 | dhcp-snooping | 必选 缺省情况下，DHCP Snooping功能处于关闭状态
进入接口视图 | interface interface-type interface-number | - 此接口为连接DHCP服务器的接口
配置端口为信任端口，并记录客户端IP地址和MAC地址的绑定关系 | dhcp-snooping trust | 必选 缺省情况下，在使能DHCP Snooping功能后，设备的所有端口均为不信任端口
退回系统视图 | quit | -
进入接口视图 | interface interface-type interface-number | - 此接口为间接与DHCP客户端相连的接口
配置端口为不记录IP地址和MAC地址绑定的信任端口 | dhcp-snooping trust no-user-binding | 可选 缺省情况下，在使能DHCP Snooping功能后，设备的所有端口均为不信任端口

l 为了使DHCP客户端能从合法的DHCP服务器获取IP地址，必须将与合法DHCP服务器相连的端口设置为信任端口，设置的信任端口和与DHCP客户端相连的端口必须在同一个VLAN内。

l 目前，可以配置为DHCP Snooping信任端口的接口类型包括：二层以太网端口、二层聚合接口。关于聚合接口的详细介绍，请参见“二层技术-以太网交换配置指导”中的“以太网链路聚合”。

l 如果二层以太网端口加入聚合组，则在该接口上进行的DHCP Snooping相关配置不会生效；该接口退出聚合组后，之前的配置才会生效。

l DHCP Snooping功能可以与基本QinQ、灵活QinQ功能同时使用：接收到DHCP客户端发送给DHCP服务器的报文后，如果报文不带有VLAN Tag，则为其添加一层VLAN Tag；如果报文只带一层VLAN Tag，则在报文前面再添加一层VLAN Tag，（添加的VLAN Tag为第一层VLAN Tag，原来的VLAN Tag为第二层VLAN Tag），并通过DHCP Snooping表项记录两层VLAN Tag；如果报文带有两层VLAN Tag，则不添加VLAN Tag，直接转发给DHCP服务器。

l 在添加VLAN Tag的同时，还需要修改原有的VLAN Tag时，DHCP Snooping功能不能与灵活QinQ功能同时使用。


5.4 配置DHCP Snooping支持Option 82功能

表5-5 配置DHCP Snooping支持Option 82功能

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
进入接口视图 |  | interface interface-type interface-number | -
使能DHCP Snooping支持Option 82功能 |  | dhcp-snooping information enable | 必选 缺省情况下，禁止DHCP Snooping支持Option 82功能
配置DHCP Snooping对包含Option 82的请求报文的处理策略 |  | dhcp-snooping information strategy { append | drop | keep | replace } | 可选 缺省情况下，处理策略为 replace
配置非用户自定义的Option 82 | 配置Option 82的填充模式 | dhcp-snooping information format { normal | private <1-1> | standard | verbose [ node-identifier { mac | sysname | user-defined node-identifier } ] } | 可选 缺省情况下，Option 82的填充模式为 normal
 | 配置Circuit ID子选项的填充格式 | dhcp-snooping information circuit-id format-type { ascii | hex } | 可选 缺省情况下，Circuit ID子选项的填充格式由Option 82的填充模式决定，每个字段的填充格式不同 配置的填充格式只对非用户自定义的填充内容有效 河南有线模式下，仅配置为hex格式有效
 | 配置Remote ID子选项的填充格式 | dhcp-snooping information remote-id format-type { ascii | hex } | 可选 缺省情况下，采用HEX格式填充Remote ID子选项 配置的填充格式只对非用户自定义的填充内容有效 河南有线模式下，仅配置为hex格式有效
 | 配置子选项9使能 | dhcp-snooping information [ vlan vlan-id ] sub-option sub-option-code | 可选 缺省情况下，子选项9没有使能 配置append策略情况下，填充sysname和Loopback0接口的主IP，其它策略情况下仅填充sysname
配置用户自定义的Option 82 | 配置Circuit ID子选项的内容 | dhcp-snooping information [ vlan vlan-id ] circuit-id string circuit-id | 可选 缺省情况下，Circuit ID子选项的内容由Option 82的填充模式决定
 | 配置Remote ID子选项的内容 | dhcp-snooping information [ vlan vlan-id ] remote-id string { remote-id | sysname } | 可选 缺省情况下，Remote ID子选项的内容由Option 82的填充模式决定
 | 配置子选项9的内容 | dhcp-snooping information [ vlan vlan-id ] sub-option sub-option-code [ string user-string&<1-8> ] | 可选 缺省情况下，子选项9不填充

l 只能在二层以太网端口、二层聚合接口上配置DHCP Snooping支持Option 82功能。

l 如果二层以太网端口加入聚合组，则该接口上进行的DHCP Snooping支持Option 82功能的配置不会生效；该接口退出聚合组后，之前的配置才会生效。

l 为使Option 82功能正常使用，需要在DHCP服务器和DHCP Snooping上都进行相应配置。DHCP服务器的相关配置请参见“2.8 配置Option 82的处理方式”。

l DHCP Snooping对包含Option 82请求报文的处理策略为 replace 时，需要配置Option 82的填充格式；处理策略为 keep 或 drop 时，不需要配置Option 82的填充格式。

l 如果以设备名称（sysname）作为节点标识填充DHCP报文的Option 82，则设备名称中不能包含空格；否则，DHCP Snooping将丢弃该报文。用户可以通过 sysname 命令配置设备名称，该命令的详细介绍请参见“基本配置命令参考”中的“设备管理”。

l DHCP Snooping功能和QinQ功能同时使用，或DHCP Snooping设备接收到的DHCP报文带有两层VLAN Tag时，如果采用normal或verbose模式填充Option 82，则sub-option 1中VLAN ID字段的格式为“第一层VLAN Tag.第二层VLAN Tag”。例如，第一层VLAN Tag为10（十六进制值为a），第二层VLAN Tag为20（十六进制值为14），则VLAN ID字段的内容为“000a.0014”。


5.5 配置DHCP Snooping表项备份功能

DHCP Snooping设备重启后，设备上记录的DHCP Snooping表项将丢失。如果DHCP Snooping与安全模块（如IP Source Guard）配合使用，则表项丢失会导致安全模块无法通过DHCP Snooping获取到相应的表项，进而导致DHCP客户端不能顺利通过安全检查、正常访问网络。

DHCP Snooping表项备份功能将DHCP Snooping表项保存到指定的文件中，DHCP Snooping设备重启后，自动根据该文件恢复DHCP Snooping表项，从而保证DHCP Snooping表项不会丢失。

表5-6 配置DHCP Snooping表项备份功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
指定存储DHCP Snooping表项的文件名称 | dhcp-snooping binding database filename filename | 必选 缺省情况下，未指定存储文件名称 执行本命令后，会立即触发一次表项备份。之后，按照 dhcp-snooping binding database update interval 命令设置的刷新时间间隔定时更新表项文件
将当前的DHCP Snooping表项保存到用户指定的文件中 | dhcp-snooping binding database update now | 可选 本命令只用来触发一次DHCP Snooping表项的备份
配置DHCP Snooping表项存储文件的刷新时间间隔 | dhcp-snooping binding database update interval minutes | 可选 缺省情况下，不会定期刷新DHCP Snooping表项存储文件

执行 undo dhcp-snooping命令关闭DHCP Snooping功能后，设备会删除所有DHCP Snooping表项，文件中存储的DHCP Snooping表项也将被删除。


5.6 配置防止DHCP饿死攻击

DHCP饿死攻击是指攻击者伪造chaddr字段各不相同的DHCP请求报文，向DHCP服务器申请大量的IP地址，导致DHCP服务器地址池中的地址耗尽，无法为合法的DHCP客户端分配IP地址，或导致DHCP服务器消耗过多的系统资源，无法处理正常业务。

如果封装DHCP请求报文的数据帧的源MAC地址各不相同，则通过 mac-address max-mac-count 命令限制端口可以学习到的MAC地址数，并配置学习到的MAC地址数达到最大值时，丢弃源MAC地址不在MAC地址表里的报文，能够避免攻击者申请过多的IP地址，在一定程度上缓解DHCP饿死攻击。此时，不存在DHCP饿死攻击的端口下的DHCP客户端可以正常获取IP地址，但存在DHCP饿死攻击的端口下的DHCP客户端仍可能无法获取IP地址。

如果封装DHCP请求报文的数据帧的MAC地址都相同，则通过 mac-address max-mac-count 命令无法防止DHCP饿死攻击。在这种情况下，需要使能DHCP Snooping的MAC地址检查功能。使能该功能后，DHCP Snooping设备检查接收到的DHCP请求报文中的chaddr字段和数据帧的源MAC地址字段是否一致。如果一致，则认为该报文合法，将其转发给DHCP服务器；如果不一致，则丢弃该报文。

表5-7 使能DHCP Snooping的MAC地址检查功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
使能DHCP Snooping的MAC地址检查功能 | dhcp-snooping check mac-address | 必选 缺省情况下，DHCP Snooping的MAC地址检查功能处于关闭状态

只能在二层以太网端口、二层聚合接口上使能DHCP Snooping的MAC地址检查功能。


5.7 配置防止伪造DHCP续约报文攻击

伪造DHCP续约报文攻击是指攻击者冒充合法的DHCP客户端，向DHCP服务器发送伪造的DHCP续约报文，导致DHCP服务器和DHCP客户端无法按照自己的意愿及时释放IP地址租约。如果攻击者冒充不同的DHCP客户端发送大量伪造的DHCP续约报文，则会导致大量IP地址被长时间占用，DHCP服务器没有足够的地址分配给新的DHCP客户端。

在DHCP Snooping设备上使能DHCP Request报文检查功能，可以有效地防止伪造DHCP续约报文攻击。如果使能了该功能，则DHCP Snooping设备接收到DHCP Request报文后，检查本地是否存在与DHCP Request报文匹配的DHCP Snooping表项。若存在，则DHCP Request报文信息与DHCP Snooping表项信息一致时，认为该报文为合法的续约报文，将其转发给DHCP服务器；不一致时，认为该报文为伪造的续约报文，将其丢弃。若不存在，则认为该报文合法，将其转发给DHCP服务器。

表5-8 使能DHCP Snooping的DHCP Request报文检查功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
使能DHCP Snooping的DHCP Request报文检查功能 | dhcp-snooping check request-message | 必选 缺省情况下，DHCP Snooping的DHCP Request报文检查功能处于关闭状态

只能在二层以太网端口、二层聚合接口上使能DHCP Snooping的DHCP Request报文检查功能。


5.8 DHCP Snooping显示和维护

在完成上述配置后，在任意视图下执行 display 命令可以显示DHCP Snooping的配置情况，通过查看显示信息验证配置的效果。

在用户视图下执行 reset 命令可以清除DHCP Snooping的统计信息。

表5-9 DHCP Snooping显示和维护

操作 | 命令
显示DHCP Snooping表项信息 | display dhcp-snooping [ ip ip-address ] [ | { begin | exclude | include } regular-expression ]
显示DHCP Snooping上Option 82的配置信息 | display dhcp-snooping information { all | interface interface-type interface-number } [ | { begin | exclude | include } regular-expression ]
显示DHCP Snooping设备上的DHCP报文统计信息 | display dhcp-snooping packet statistics [ slot slot-number ] [ | { begin | exclude | include } regular-expression ]
显示信任端口信息 | display dhcp-snooping trust [ | { begin | exclude | include } regular-expression ]
显示DHCP Snooping表项备份信息 | display dhcp-snooping binding database [ | { begin | exclude | include } regular-expression ]
清除DHCP Snooping表项 | reset dhcp-snooping { all | ip ip-address }
清除DHCP Snooping设备上的DHCP报文统计信息 | reset dhcp-snooping packet statistics [ slot slot-number ]


5.9 DHCP Snooping典型配置举例

5.9.1 DHCP Snooping配置举例

1. 组网需求

Switch B通过以太网端口Ethernet1/0/1连接到DHCP服务器，通过以太网端口Ethernet1/0/2、Ethernet1/0/3连接到DHCP客户端。要求：

l 与DHCP服务器相连的端口可以转发DHCP服务器的响应报文，而其他端口不转发DHCP服务器的响应报文。

l 记录DHCP-REQUEST和信任端口收到的DHCP-ACK广播报文中DHCP客户端IP地址及MAC地址的绑定关系。

2. 组网图

图5-3 DHCP Snooping组网示意图

3. 配置步骤

# 使能DHCP Snooping功能。

<SwitchB> system-view

[SwitchB] dhcp-snooping

# 配置Ethernet1/0/1端口为信任端口。

[SwitchB] interface Ethernet 1/0/1

[SwitchB-Ethernet1/0/1] dhcp-snooping trust

[SwitchB-Ethernet1/0/1] quit

5.9.2 DHCP Snooping支持Option 82配置举例

1. 组网需求

l Switch B上使能DHCP Snooping功能，并支持Option 82功能；

l 对包含Option 82的请求报文的处理策略为 replace；

l 在Ethernet1/0/2上配置Ciruict ID填充内容为company001，Remote ID填充内容为device001；

l 在Ethernet1/0/3上配置以verbose模式填充Option 82，接入节点标识为 sysname，填充格式为ASCII格式。

l Switch B将添加Option 82的DHCP请求报文转发给DHCP服务器Switch A，使得DHCP客户端可以获取到IP地址。

2. 组网图

如图5-3 所示。

3. 配置步骤

# 使能DHCP Snooping功能。

<SwitchB> system-view

[SwitchB] dhcp-snooping

# 配置Ethernet1/0/1端口为信任端口。

[SwitchB] interface Ethernet 1/0/1

[SwitchB-Ethernet1/0/1] dhcp-snooping trust

[SwitchB-Ethernet1/0/1] quit

# 在Ethernet1/0/2上配置DHCP Snooping支持Option 82功能。

[SwitchB] interface Ethernet 1/0/2

[SwitchB-Ethernet1/0/2] dhcp-snooping information enable

[SwitchB-Ethernet1/0/2] dhcp-snooping information strategy replace

[SwitchB-Ethernet1/0/2] dhcp-snooping information circuit-id string company001

[SwitchB-Ethernet1/0/2] dhcp-snooping information remote-id string device001

[SwitchB-Ethernet1/0/2] quit

# 在端口Ethernet1/0/3上配置DHCP Snooping支持Option 82功能。

[SwitchB] interface Ethernet 1/0/3

[SwitchB-Ethernet1/0/3] dhcp-snooping information enable

[SwitchB-Ethernet1/0/3] dhcp-snooping information strategy replace

[SwitchB-Ethernet1/0/3] dhcp-snooping information format verbose node-identifier sysname

[SwitchB-Ethernet1/0/3] dhcp-snooping information circuit-id format-type ascii

[SwitchB-Ethernet1/0/3] dhcp-snooping information remote-id format-type ascii


6 BOOTP客户端配置

l BOOTP客户端中对于接口的相关配置，目前只能在三层以太网端口、三层聚合接口和VLAN接口上进行。

l 多个具有相同MAC地址的VLAN接口通过中继以BOOTP方式申请IP地址时，不能用Windows 2000 Server和Windows 2003 Server作为BOOTP服务器。

l 加入聚合组的接口不能配置为BOOTP客户端。

相关链接

  • 6.1 BOOTP客户端简介
  • 6.2 配置接口通过BOOTP协议获取IP地址
  • 6.3 BOOTP客户端显示和维护
  • 6.4 BOOTP客户端典型配置举例
父主题： 03-DHCP配置


6.1 BOOTP客户端简介

6.1.1 BOOTP应用

BOOTP是Bootstrap Protocol（自举协议）的简称。指定设备的接口作为BOOTP客户端后，该接口可以使用BOOTP协议从BOOTP服务器获得IP地址等信息，从而方便用户配置。

使用BOOTP协议，管理员需要在BOOTP服务器上为每个BOOTP客户端配置BOOTP参数文件，该文件包括BOOTP客户端的MAC地址及其对应的IP地址等信息。当BOOTP客户端向BOOTP服务器发起请求时，服务器会查找BOOTP参数文件，并返回相应的配置信息。

由于需要在BOOTP服务器上为每个客户端事先配置参数文件，BOOTP一般运行在相对稳定的环境中。当网络变化频繁时，可以采用DHCP协议。

由于DHCP服务器可以与BOOTP客户端进行交互，因此用户可以不配置BOOTP服务器，而使用DHCP服务器为BOOTP客户端分配IP地址。

6.1.2 IP地址动态获取过程

在下面的IP地址动态获取过程中，BOOTP服务器的功能可以用DHCP服务器替代。

BOOTP客户端从BOOTP服务器动态获取IP地址的具体过程如下：

(1) BOOTP客户端以广播方式发送BOOTP请求报文，其中包含了BOOTP客户端的MAC地址；

(2) BOOTP服务器接收到请求报文后，根据报文中的BOOTP客户端MAC地址，从配置文件数据库中查找对应的IP地址等信息，并向客户端返回包含这些信息的BOOTP响应报文；

(3) BOOTP客户端从接收到的响应报文中即可获得IP地址等信息。

6.1.3 协议规范

与BOOTP相关的协议规范有：

l RFC 951：Bootstrap Protocol (BOOTP)

l RFC 2132：DHCP Options and BOOTP Vendor Extensions

l RFC 1542：Clarifications and Extensions for the Bootstrap Protocol


6.2 配置接口通过BOOTP协议获取IP地址

表6-1 配置接口通过BOOTP协议获取IP地址

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
配置接口通过BOOTP协议获取IP地址 | ip address bootp-alloc | 必选 缺省情况下，接口不通过BOOTP协议获取IP地址


6.3 BOOTP客户端显示和维护

在完成上述配置后，在任意视图下执行 display 命令可以显示配置后BOOTP客户端的运行情况，通过查看显示信息验证配置的效果。

表6-2 BOOTP客户端显示和维护

操作 | 命令
显示BOOTP客户端的相关信息 | display bootp client [ interface interface-type interface-number ] [ | { begin | exclude | include } regular-expression ]


6.4 BOOTP客户端典型配置举例

1. 组网需求

Switch B的端口（属于VLAN1）接入局域网，VLAN接口1通过BOOTP协议从DHCP服务器获取IP地址。

2. 组网图

如图2-2 所示。

3. 配置步骤

下面只列出图2-2 中，作为客户端的Switch B的配置。

# 配置VLAN接口1通过BOOTP动态获取地址。

<SwitchB> system-view

[SwitchB] interface vlan-interface 1

[SwitchB-Vlan-interface1] ip address bootp-alloc

通过 display bootp client 命令可以查看BOOTP客户端申请到的IP地址。

为了使BOOTP客户端能从DHCP服务器获得IP地址，还需要在DHCP服务器上进行一些配置，具体内容请参见“2.11 DHCP服务器典型配置举例”。


1 IPv4域名解析配置

相关链接

  • 1.1 域名解析简介
  • 1.2 配置IPv4 DNS client
  • 1.3 配置DNS proxy
  • 1.4 配置DNS spoofing
  • 1.5 IPv4域名解析显示和维护
  • 1.6 IPv4域名解析典型配置举例
  • 1.7 IPv4域名解析常见配置错误举例
父主题： 04-域名解析配置


1.1 域名解析简介

域名系统（DNS，Domain Name System）是一种用于TCP/IP应用程序的分布式数据库，提供域名与IP地址之间的转换。通过域名系统，用户进行某些应用时，可以直接使用便于记忆的、有意义的域名，而由网络中的域名解析服务器将域名解析为正确的IP地址。

域名解析分为静态域名解析和动态域名解析，二者可以配合使用。在解析域名时，首先采用静态域名解析（查找静态域名解析表），如果静态域名解析不成功，再采用动态域名解析。由于动态域名解析可能会花费一定的时间，且需要域名服务器的配合，因而可以将一些常用的域名放入静态域名解析表中，这样可以大大提高域名解析效率。

1.1.1 静态域名解析

静态域名解析就是手工建立域名和IP地址之间的对应关系。当用户使用域名进行某些应用（如telnet应用）时，系统查找静态域名解析表，从中获取指定域名对应的IP地址。

1.1.2 动态域名解析

1. 解析过程

动态域名解析是通过对域名服务器的查询完成的。解析过程如下：

(1) 当用户使用域名进行某些应用时，用户程序首先向DNS客户端中的解析器发出请求。

(2) DNS客户端收到请求后，首先查询本地的域名缓存。如果存在已解析成功的映射项，就将域名对应的IP地址返回给用户程序；如果没有发现所要查找的映射项，就向域名服务器（DNS Server）发送查询请求。

(3) 域名服务器首先从自己的数据库中查找域名对应的IP地址。如果判断该域名不属于本域范围之内，就将请求交给上一级的域名解析服务器处理，直到完成解析，并将解析的结果返回给DNS客户端。

(4) DNS客户端收到域名服务器的响应报文后，将解析结果返回给应用程序。

图1-1 动态DNS

用户程序、DNS客户端及域名服务器的关系如图1-1 所示，其中解析器和缓存构成DNS客户端。用户程序、DNS客户端在同一台设备上，而DNS客户端和服务器一般分布在两台设备上。

动态域名解析支持缓存功能。每次动态解析成功的域名与IP地址的映射均存放在动态域名缓存区中，当下一次查询相同域名的时候，就可以直接从缓存区中读取，不用再向域名服务器进行请求。缓存区中的映射在一段时间后会被老化删除，以保证及时从域名服务器得到最新的内容。老化时间由域名服务器设置，DNS客户端从协议报文中获得老化时间。

2. 域名后缀列表功能

动态域名解析支持域名后缀列表功能。用户可以预先设置一些域名后缀，在域名解析的时候，用户只需要输入域名的部分字段，系统会自动将输入的域名加上不同的后缀进行解析。举例说明，用户想查询域名aabbcc.com，那么可以先在后缀列表中配置com，然后输入aabbcc进行查询，系统会自动将输入的域名与后缀连接成aabbcc.com进行查询。

使用域名后缀的时候，根据用户输入域名方式的不同，查询方式分成以下几种情况：

l 如果用户输入的域名中没有“.”，比如aabbcc，系统认为这是一个主机名，会首先加上域名后缀进行查询，如果所有加后缀的域名查询都失败，将使用最初输入的域名（如aabbcc）进行查询。

l 如果用户输入的域名中间有“.”，比如www.aabbcc，系统直接用它进行查询，如果查询失败，再依次加上各个域名后缀进行查询。

l 如果用户输入的域名最后有“.”，比如aabbcc.com.，表示不需要进行域名后缀添加，系统直接用输入的域名进行查询，不论成功与否都直接返回。就是说，如果用户输入的字符中最后一个字符为“.”，就只根据用户输入的字符进行查找，而不会去匹配用户预先设置的域名后缀，因此最后这个“.”，也被称为查找终止符。带有查询终止符的域名，称为FQDN（Full Qualified Domain Name，完全合格域名）。

目前，设备支持静态域名解析和动态域名解析的客户端功能。

如果域名服务器上配置了域名的别名，设备可以通过别名来解析主机的IP地址。

1.1.3 DNS代理

1. DNS代理简介

DNS代理（DNS proxy）用来在DNS client和DNS server之间转发DNS请求和应答报文。局域网内的DNS client把DNS proxy当作DNS server，将DNS请求报文发送给DNS proxy。DNS proxy将该请求报文转发到真正的DNS server，并将DNS server的应答报文返回给DNS client，从而实现域名解析。

使用DNS proxy功能后，当DNS server的地址发生变化时，只需改变DNS proxy上的配置，无需改变局域网内每个DNS client的配置，从而简化了网络管理。

DNS proxy的典型应用环境如 图1-2 所示。

图1-2 DNS代理典型组网应用

2. DNS代理的工作机制

DNS代理的工作过程如下：

(1) DNS client把DNS proxy当作DNS server，将DNS请求报文发送给DNS proxy，即请求报文的目的地址为DNS proxy的IP地址。

(2) DNS proxy收到请求报文后，首先查找本地的静态域名解析表和动态域名解析表，如果存在请求的信息，则DNS proxy直接通过DNS应答报文将域名解析结果返回给DNS client。

(3) 如果不存在请求的信息，则DNS proxy将报文转发给DNS server，通过DNS server进行域名解析。

(4) DNS proxy收到DNS server的应答报文后，记录域名解析的结果，并将报文转发给DNS client。DNS client利用域名解析的结果进行相应的处理。

只有DNS proxy上存在域名服务器地址，并存在到达域名服务器的路由，DNS proxy才会向DNS server发送域名解析请求。否则，DNS proxy不会向DNS server发送域名解析请求，也不会应答DNS client的请求。

1.1.4 DNS spoofing

图1-3 DNS spoofing典型应用场景

DNS spoofing主要应用于 图1-3 所示的拨号网络。在该网络中：

l Device通过拨号接口连接到PSTN/ISDN等拨号网络。只有存在通过拨号接口转发的报文时，才会触发拨号接口建立连接。

l Device作为DNS proxy。在Host上将Device指定为DNS服务器；拨号接口建立连接后，Device通过DHCP等方式动态获取DNS服务器地址。

Device上没有使能DNS spoofing功能时，Device接收到Host发送的域名解析请求报文后，如果不存在对应的静态域名解析表项和动态域名解析表项，则需要向DNS server发送域名解析请求。但是，由于此时拨号接口尚未建立连接，Device上不存在DNS server地址，Device不会向DNS server发送域名解析请求，也不会应答DNS client的请求。从而，导致域名解析失败，且没有流量触发拨号接口建立连接。

DNS spoofing功能可以解决上述问题。使能DNS spoofing功能后，即便Device上不存在域名服务器地址或到达DNS server的路由，Device也会利用指定的IP地址作为域名解析结果，应答DNS client的域名解析请求。DNS client后续发送的报文可以用来触发拨号接口建立连接。

图1-3 所示网络中，Host访问HTTP server的报文处理流程为：

(1) Host通过域名访问HTTP server时，首先向Device发送域名解析请求，将HTTP server的域名解析为IP地址。

(2) Device接收到域名解析请求后，在本地没有找到对应的静态域名解析表项和动态域名解析表项，且拨号接口尚未建立连接，Device上不存在DNS server地址，则Device利用DNS spoofing中指定的IP地址作为域名解析结果，应答DNS client的域名解析请求。该域名解析应答的老化时间为0。并且，应答的IP地址满足如下条件：Device上存在到达该IP地址的路由，且路由的出接口为拨号接口。

(3) Host接收到Device的应答报文后，向应答的IP地址发送HTTP请求。

(4) Device通过拨号接口转发HTTP请求时，触发拨号接口建立连接，并通过DHCP等方式动态获取DNS server的地址。

(5) 域名解析应答老化后，Host再次发送域名解析请求。

(6) 之后，Device的处理过程与DNS proxy工作过程相同，请参见“ 1.1.3 2. DNS代理的工作机制 ”。

(7) Host获取到正确的HTTP server地址后，可以正常访问HTTP server。

由于DNS spoofing功能指定的IP地址并不是待解析域名对应的IP地址，为了防止DNS client上保存错误的域名解析表项，该IP地址对应域名解析应答的老化时间为0。


1.2 配置IPv4 DNS client

1.2.1 配置静态域名解析

配置静态域名解析就是配置将主机名与IPv4地址相对应。当使用Telnet等应用时，可以直接使用主机名，由系统解析为IPv4地址。

表1-1 配置静态域名解析

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置主机名和对应的IPv4地址 | ip host hostname ip-address | 必选 缺省情况下，静态域名解析表中没有主机名及IPv4地址的对应关系

l 每个主机名只能对应一个IPv4地址，当对同一主机名进行多次配置时，最后配置的IPv4地址有效。

l 最多可配置50条IPv4静态域名解析信息。

1.2.2 配置动态域名解析

如果用户需要使用动态域名解析功能，可以使用下面的命令使能动态域名解析功能，并配置域名服务器，这样才能将查询请求报文发送到正确的服务器进行解析。

用户还可以配置域名后缀，以便实现只输入域名的部分字段，而由系统自动加上预先设置的后缀进行解析。

表1-2 配置动态域名解析

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
开启动态域名解析功能 |  | dns resolve | 必选 缺省情况下，动态域名解析功能处于关闭状态
配置域名服务器的IPv4地址 | 系统视图下 | dns server ip-address | 必选 缺省情况下，没有配置域名服务器的IPv4地址
 | 接口视图下 | interface interface-type interface-number
 |  | dns server ip-address
 |  | quit
配置域名后缀 |  | dns domain domain-name | 可选 缺省情况下，没有配置域名后缀，即只根据用户输入的域名信息进行解析

l 包括IPv6域名服务器在内，系统视图下最多可配置6个域名服务器；所有接口下配置的域名服务器总数不能超过6。

l DNS server的优先级顺序为：系统视图下配置的DNS server优先级高于接口视图下配置的DNS server；在同一视图下先配置的DNS server优先级高于后配置的DNS server；设备上手工配置的DNS server优先级高于通过DHCP等方式动态获取的DNS server。设备首先向优先级最高的DNS server发送查询请求，失败后再依次向其他DNS server发送查询请求。

l 设备上最多可以配置10个域名后缀。


1.3 配置DNS proxy

表1-3 配置DNS proxy

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
开启DNS proxy功能 |  | dns proxy enable | 必选 缺省情况下，DNS proxy功能处于关闭状态
配置域名服务器的IPv4地址 | 系统视图下 | dns server ip-address | 二者至少选择其一 缺省情况下，没有配置域名服务器的IPv4地址
 | 接口视图下 | interface interface-type interface-number
 |  | dns server ip-address

通过 dns server 命令可以指定多个DNS server。DNS proxy接收到客户端的查询请求后，首先向优先级最高的DNS server转发查询请求，失败后再依次向其他DNS server转发查询请求。


1.4 配置DNS spoofing

1.4.1 配置准备

只有在以下条件均满足的情况下，DNS spoofing功能才会生效：

l 设备上使能了DNS proxy功能

l 设备上没有指定域名服务器地址或不存在到达域名服务器的路由

因此，配置DNS spoofing前，需要先使能DNS proxy功能。

1.4.2 配置DNS spoofing

表1-4 配置DNS spoofing

操作 | 命令 | 说明
进入系统视图 | system-view | -
开启DNS spoofing功能，并指定应答的IP地址 | dns spoofing ip-address | 必选 缺省情况下，DNS spoofing功能处于关闭状态


1.5 IPv4域名解析显示和维护

在完成上述配置后，在任意视图下执行 display 命令可以显示IPv4域名解析配置后的运行情况，通过查看显示信息验证配置的效果。

在用户视图下，执行 reset 命令可以清除动态域名缓存信息。

表1-5 域名解析显示和维护

操作 | 命令
显示IPv4静态域名解析表 | display ip host [ | { begin | exclude | include } regular-expression ]
显示IPv4域名服务器信息 | display dns server [ dynamic ] [ | { begin | exclude | include } regular-expression ]
显示域名后缀列表信息 | display dns domain [ dynamic ] [ | { begin | exclude | include } regular-expression ]
显示IPv4动态域名缓存信息 | display dns host ip [ | { begin | exclude | include } regular-expression ]
清除IPv4动态域名缓存信息 | reset dns host ip


1.6 IPv4域名解析典型配置举例

1.6.1 静态域名解析配置举例

1. 组网需求

为了避免记忆复杂的IP地址，Device希望通过便于记忆的主机名访问某一主机。在Device上手工配置IP地址对应的主机名，利用静态域名解析功能，就可以实现通过主机名访问该主机。

在本例中，Device访问的主机IP地址为10.1.1.2，主机名为host.com。

2. 组网图

图1-4 静态域名解析配置组网图

3. 配置步骤

# 配置主机名host.com对应的IP地址为10.1.1.2。

<Sysname> system-view

[Sysname] ip host host.com 10.1.1.2

# 执行ping host.com命令，Device通过静态域名解析可以解析到host.com对应的IP地址为10.1.1.2。

[Sysname] ping host.com

PING host.com (10.1.1.2):

56 data bytes, press CTRL_C to break

Reply from 10.1.1.2: bytes=56 Sequence=1 ttl=128 time=1 ms

Reply from 10.1.1.2: bytes=56 Sequence=2 ttl=128 time=4 ms

Reply from 10.1.1.2: bytes=56 Sequence=3 ttl=128 time=3 ms

Reply from 10.1.1.2: bytes=56 Sequence=4 ttl=128 time=2 ms

Reply from 10.1.1.2: bytes=56 Sequence=5 ttl=128 time=3 ms

--- host.com ping statistics ---

5 packet(s) transmitted

5 packet(s) received

0.00% packet loss

round-trip min/avg/max = 1/2/4 ms

1.6.2 动态域名解析配置举例

1. 组网需求

为了避免记忆复杂的IP地址，Device希望通过便于记忆的域名访问某一主机。如果网络中存在域名服务器，则可以利用动态域名解析功能，实现通过域名访问主机。

在本例中：

l 域名服务器的IP地址是2.1.1.2/16，域名服务器上存在com域，且com域中包含域名“host”和IP地址3.1.1.1/16的对应关系。

l Device作为DNS客户端，使用动态域名解析功能，将域名解析为IP地址。

l Device上配置域名后缀com，以便简化访问主机时输入的域名，例如通过输入host即可访问域名为host.com、IP地址为3.1.1.1/16的主机Host。

2. 组网图

图1-5 动态域名解析组网图

3. 配置步骤

l 在开始下面的配置之前，假设设备与主机之间的路由可达，设备和主机都已经配置完毕，接口IP地址如 图1-5 所示。

l 不同域名服务器的配置方法不同，下面仅以Windows Server 2000为例，说明域名服务器的配置方法。

(1) 配置域名服务器

# 进入域名服务器配置界面。

在开始菜单中，选择[程序/管理工具/DNS]。

# 创建区域com。

如 图1-6 所示，右键点击[正向查找区域]，选择[新建区域]，按照提示创建新的区域com。

图1-6 创建区域

# 添加域名和IP地址的映射。

如 图1-7 所示，右键点击区域com。

图1-7 新建主机

选择[新建主机]，弹出如 图1-8 的对话框。按照 图1-8 输入域名host和IP地址3.1.1.1。

图1-8 添加域名和IP地址的映射

(2) 配置DNS客户端Device

# 开启动态域名解析功能。

<Sysname> system-view

[Sysname] dns resolve

# 配置域名服务器的IP地址为2.1.1.2。

[Sysname] dns server 2.1.1.2

# 配置域名后缀com。

[Sysname] dns domain com

(3) 验证配置结果

# 在设备上执行ping host命令，可以ping通主机，且对应的目的地址为3.1.1.1。

[Sysname] ping host

Trying DNS resolve, press CTRL_C to break

Trying DNS server (2.1.1.2)

PING host.com (3.1.1.1):

56 data bytes, press CTRL_C to break

Reply from 3.1.1.1: bytes=56 Sequence=1 ttl=126 time=3 ms

Reply from 3.1.1.1: bytes=56 Sequence=2 ttl=126 time=1 ms

Reply from 3.1.1.1: bytes=56 Sequence=3 ttl=126 time=1 ms

Reply from 3.1.1.1: bytes=56 Sequence=4 ttl=126 time=1 ms

Reply from 3.1.1.1: bytes=56 Sequence=5 ttl=126 time=1 ms

--- host.com ping statistics ---

5 packet(s) transmitted

5 packet(s) received

0.00% packet loss

round-trip min/avg/max = 1/1/3 ms

1.6.3 DNS proxy典型配置举例

1. 组网需求

某局域网内拥有多台设备，每台设备上都指定了域名服务器的IP地址，以便直接通过域名访问外部网络。当域名服务器的IP地址发生变化时，网络管理员需要更改局域网内所有设备上配置的域名服务器IP地址，工作量将会非常巨大。

通过DNS proxy功能，可以大大减少网络管理员的工作量。当域名服务器IP地址改变时，只需更改DNS proxy上的配置，即可实现局域网内设备通过新的域名服务器解析域名。

在本例中，具体配置步骤为：

(1) 局域网中的某台设备Device A配置为DNS proxy，DNS proxy上指定域名服务器IP地址为真正的域名服务器的地址4.1.1.1

(2) 局域网中的其他设备（如Device B）上，域名服务器的IP地址配置为DNS proxy的地址，域名解析报文将通过DNS proxy转发给真正的域名服务器。

2. 组网图

图1-9 DNS proxy组网图

3. 配置步骤

在开始下面的配置之前，假设设备与域名服务器、主机之间的路由可达，并已按照 图1-9 配置各接口的IP地址。

(1) 配置域名服务器

不同的域名服务器的配置方法不同。Windows Server 2000作为域名服务器时，配置方法请参见“ 1.6.2 动态域名解析配置举例 ”。

(2) 配置DNS代理Device A

# 配置域名服务器的IP地址为4.1.1.1。

<DeviceA> system-view

[DeviceA] dns server 4.1.1.1

# 开启DNS proxy功能。

[DeviceA] dns proxy enable

(3) 配置DNS客户端Device B

# 开启动态域名解析功能。

<DeviceB> system-view

[DeviceB] dns resolve

# 配置域名服务器的IP地址为2.1.1.2。

[DeviceB] dns server 2.1.1.2

(4) 验证配置结果

# 在Device B上执行ping host.com命令，可以ping通主机，且对应的目的地址为3.1.1.1。

[DeviceB] ping host.com

Trying DNS resolve, press CTRL_C to break

Trying DNS server (2.1.1.2)

PING host.com (3.1.1.1):

56 data bytes, press CTRL_C to break

Reply from 3.1.1.1: bytes=56 Sequence=1 ttl=126 time=3 ms

Reply from 3.1.1.1: bytes=56 Sequence=2 ttl=126 time=1 ms

Reply from 3.1.1.1: bytes=56 Sequence=3 ttl=126 time=1 ms

Reply from 3.1.1.1: bytes=56 Sequence=4 ttl=126 time=1 ms

Reply from 3.1.1.1: bytes=56 Sequence=5 ttl=126 time=1 ms

--- host.com ping statistics ---

5 packet(s) transmitted

5 packet(s) received

0.00% packet loss

round-trip min/avg/max = 1/1/3 ms


1.7 IPv4域名解析常见配置错误举例

1. 现象描述

配置了动态域名解析，但不能根据域名解析到正确的IP地址。

2. 故障分析

DNS客户端需要和域名服务器配合使用，才能根据域名解析到正确的IP地址。

3. 故障排除

l 执行命令 display dns host ip，检查动态域名缓存信息是否存在指定域名。

l 如果不存在要解析的域名，检查DNS客户端是否和域名服务器通信正常，域名服务器是否工作正常，动态域名解析功能是否已经开启。

l 如果存在要解析的域名，但地址不对，则检查DNS客户端所配置的域名服务器的IP地址是否正确。

l 检查域名服务器所设置的域名和地址映射表是否正确。


1 IRDP配置

本文提到的主机表示支持IRDP功能的主机。

相关链接

  • 1.1 IRDP简介
  • 1.2 配置IRDP
  • 1.3 IRDP典型配置举例
父主题： 05-IRDP配置


1.1 IRDP简介

IRDP（ICMP Router Discovery Protocol，ICMP路由器发现协议）是ICMP协议的一个扩展，它使得主机能够动态地发现本地网络中路由器的IP地址，并设置自己的缺省路由。

1.1.1 IRDP的产生背景

一个网络中的主机如果要发送报文到网络外部，它至少需要获取本网络内的一个路由器的IP地址，由路由器来把报文转发出去。主机通常有两种方式获取路由器的IP地址：一是在主机上配置默认网关，二是让主机侦听网络内的路由协议报文，从报文中获取路由器的IP地址。

两种方法都有缺点。前一种要求静态配置，必须要手工维护，而且不能适应网络的动态变化；后一种方法要求主机能够识别各种路由协议的报文，这对于一个主机来说要求太高了，而且有时路由器上不运行动态路由协议，此时主机便无法侦听到路由协议报文。

为了解决上述问题，出现了IRDP协议，该协议采用两种新的ICMP消息类型来实现主机对路由器的发现。IRDP可以动态适应网络的变化，也不用手工维护大量的配置，并且不依赖于任何一种具体的路由协议，可以很好的解决上面存在的问题。

1.1.2 IRDP的工作机制

IRDP中用到两种ICMP消息：

l 路由公告消息RA（Router Advertisements）：由路由器发送，用于公告路由器的IP地址、优先级等信息。

l 路由请求消息RS（Router Solicitations）：由主机发送，用于主动向网络中的路由器请求路由器的IP地址。

IRDP的工作机制如下：

l 路由器周期性的从接口发送RA，公告该接口的IP地址（包括接口的主IP地址和手工配置的从IP地址）。主机接收到RA后，就会获取到网络中路由器的IP地址。

l 当一台主机刚刚连接到网络上，它可以主动发送RS来请求路由器的IP地址，而不是被动等待RA。如果主机发送的RS没有回应，它可以重传几次RS。如果主机通过上述主动方式不能获取路由器的IP地址，那么还可以通过后续路由器周期性公告RA来获取路由器的IP地址。

l 主机接收到RA后，将根据RA中包含的IP地址，添加本地路由。如果主机希望缺省路由也从RA中获取，那么主机将从收到的所有RA包含的IP地址中选择一个优先级最高的IP地址作为本机缺省路由。

IRDP功能只能让主机知道路由器的存在，而并不知道到达某个地址，哪个路由器实际上是最优的。如果主机选中了一个到达某目的地非最优的路由器作为报文转发路由器，一旦报文转发到那台路由器后，主机会收到从那个路由器发来的一个ICMP重定向报文，让主机发往这个目的地的报文重定向到一个更优的路由器上。

1.1.3 IRDP概念介绍

下面将介绍IRDP协议中用到的一些重要概念。

1. IP地址的优先级

RA中每一个被公告的IP地址都对应一个“优先级”值，这个优先级是主机选择缺省路由的依据。当主机希望从RA中获取缺省路由时，它将从收到的所有RA包含的IP地址中选择一个优先级最高的IP地址作为本机缺省路由。

用户可以对路由器公告的IP地址的优先级进行配置，以控制主机优先选择哪个IP地址作为缺省路由。

优先级值越大表示优先级越高。最小的优先级值（-2147483648）表示主机不要使用这个地址作为缺省路由。

2. IP地址的生命周期

生命周期表示路由器公告的IP地址可以在主机上存在的时间。如果后续主机没有收到包含该IP地址的新的RA，那么在这个时间过后，该IP地址将被删除。

通过同一个接口公告出去的所有IP地址具有相同的生命周期。

3. 周期性发送RA的时间间隔

使能IRDP功能后，路由器会周期性发送RA。发送RA不是完全周期性的，每两次发送RA的时间间隔是在最小时间间隔和最大时间间隔之间的一个随机值，从而避免同一链路上多个路由器同时发送RA对网络性能的影响。

在丢包严重的链路上，建议缩短RA的发送周期。

4. RA消息的目的地址

RA消息的目的IP地址可以有两种：广播地址255.255.255.255、组播地址224.0.0.1（本地链路所有主机）。

缺省情况下，RA消息的目的IP地址采用广播地址。如果发送RA的接口支持组播报文，那么建议使用组播地址224.0.0.1作为RA消息的目的IP地址。

5. 代理公告IP地址

缺省情况下，接口仅向外公告接口的主IP地址和手工配置的从IP地址，如果用户希望接口公告其他IP地址，可以通过命令行手工配置该接口代理公告的IP地址。

1.1.4 协议规范

与IRDP相关的协议规范有：

l RFC 1256：ICMP Router Discovery Messages


1.2 配置IRDP

表1-1 配置IRDP

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | - 可以是三层以太网端口、VLAN接口
使能接口的IRDP功能 | ip irdp | 必选 缺省情况下，接口的IRDP功能处于关闭状态
配置接口公告的接口IP地址的优先级 | ip irdp preference preference-value | 可选 缺省情况下，接口公告的接口IP地址的优先级为0 本配置对接口公告出去的所有接口IP地址（包括接口的主IP地址和手工配置的从IP地址）有效
配置接口公告的IP地址的生命周期 | ip irdp lifetime life-number | 可选 缺省情况下，接口公告的IP地址的生命周期为1800秒 本配置对接口公告出去的所有IP地址（包括接口IP地址、代理公告的IP地址）有效
配置接口发送周期性RA的最小时间间隔 | ip irdp minadvinterval min-value | 可选 缺省情况下，接口发送周期性RA的最小时间间隔为450秒
配置接口发送周期性RA的最大时间间隔 | ip irdp maxadvinterval max-value | 可选 缺省情况下，接口发送周期性RA的最大时间间隔为600秒
配置接口发送的RA消息的目的IP地址为组播地址224.0.0.1 | ip irdp multicast | 可选 缺省情况下，接口发送的RA消息的目的IP地址为广播地址255.255.255.255
配置接口代理公告的IP地址 | ip irdp address ip-address preference | 可选

只有使能接口的IRDP功能，其他IRDP相关配置才生效。


1.3 IRDP典型配置举例

1. 组网需求

l 公司内部网络中有两台Linux系统的主机Host A和Host B，支持IRDP功能。

l 内部交换网连接了两台出口交换机Switch A和Switch B，分别到达外网192.168.1.0/24和192.168.2.0/24。

用户希望两台主机使用Switch A作为缺省网关，并且到两个外网的报文能正确路由。

2. 组网图

图1-1 配置IRDP组网图

3. 配置步骤

(1) 配置Switch A

# 配置接口Vlan-interface100的IP地址。

<SwitchA> system-view

[SwitchA] interface Vlan-interface 100

[SwitchA-Vlan-interface100] ip address 10.154.5.1 24

# 使能接口Vlan-interface100的IRDP功能。

[SwitchA-Vlan-interface100] ip irdp

# 配置接口Vlan-interface100公告的接口IP地址的优先级为1000。

[SwitchA-Vlan-interface100] ip irdp preference 1000

# 配置接口Vlan-interface100发送的RA消息的目的IP地址为组播地址。

[SwitchA-Vlan-interface100] ip irdp multicast

# 配置接口Vlan-interface100代理公告IP地址192.168.1.0。

[SwitchA-Vlan-interface100] ip irdp address 192.168.1.0 400

(2) 配置Switch B

# 配置接口Vlan-interface100的IP地址。

<SwitchB> system-view

[SwitchB] interface Vlan-interface 100

[SwitchB-Vlan-interface100] ip address 10.154.5.2 24

# 使能接口Vlan-interface100的IRDP功能。

[SwitchB-Vlan-interface100] ip irdp

# 配置接口Vlan-interface100公告的接口IP地址的优先级为500。

[SwitchB-Vlan-interface100] ip irdp preference 500

# 配置接口Vlan-interface100发送的RA消息的目的IP地址为组播地址。

[SwitchB-Vlan-interface100] ip irdp multicast

# 配置接口Vlan-interface100代理公告IP地址192.168.2.0。

[SwitchB-Vlan-interface100] ip irdp address 192.168.2.0 400

(3) 验证配置结果

Host A、Host B是Linux系统，打开IRDP功能后，查看主机的路由表（以Host A为例）。

[HostA@localhost ~]$ netstat -rne

Kernel IP routing table

Destination Gateway Genmask Flags Metric Ref Use Iface

10.154.5.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1

192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1

192.168.2.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1

0.0.0.0 10.154.5.1 0.0.0.0 UG 0 0 0 eth1

从上面的信息可以看出，主机Host A的缺省路由是10.154.5.1，并且有到达外网192.168.1.0/24、192.168.2.0/24的路由。


1 IP性能优化配置

IP性能优化功能中所指的“接口”为三层口，包括VLAN接口、三层以太网端口等。三层以太网端口是指被配置为三层模式的以太网端口，有关以太网端口模式切换的操作，请参见“二层技术-以太网交换配置指导”中的“以太网端口配置”。

相关链接

  • 1.1 IP性能优化简介
  • 1.2 配置允许接收和发送定向广播报文
  • 1.3 配置TCP属性
  • 1.4 配置ICMP差错报文发送功能
  • 1.5 IP性能优化显示和维护
父主题： 06-IP性能优化配置


1.1 IP性能优化简介

在一些特定的网络环境里，可以通过调整IP的参数，以使网络性能达到最佳。IP性能的优化配置包括：

l 配置允许接收和发送定向广播报文

l 配置TCP连接的Path MTU探测功能

l 配置TCP连接的接收和发送缓冲区的大小

l 配置TCP定时器

l 配置ICMP差错报文发送功能


1.2 配置允许接收和发送定向广播报文

定向广播报文是指发送给特定网络的广播报文。该报文的目的IP地址中网络号码字段为特定网络的网络号，主机号码字段为全1。

如果允许设备接收并转发目的地址为接口所在网络的定向广播报文，黑客就可以利用这样的报文来攻击网络系统，给网络的安全带来了很大的隐患。但在某些应用环境下，设备又需要转发定向广播报文，例如：使用UDP Helper功能，将广播报文转换为单播报文发送给指定的服务器。

在上述情况下，用户可以通过命令配置设备允许接收和转发定向广播报文。

1.2.1 配置允许接收定向广播报文

如果允许设备接收定向广播报文，则由接口上的配置决定是否转发该报文；否则，直接丢弃定向广播报文。

表1-1 配置允许接收定向广播报文

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置允许设备接收定向广播报文 | ip forward-broadcast | 必选

1.2.2 配置允许转发定向广播报文

表1-2 配置允许转发定向广播报文

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
配置允许接口转发定向广播报文 | ip forward-broadcast [ acl acl-number ] | 必选 缺省情况下，禁止接口转发定向广播报文

l 允许接口转发定向的广播报文时，如果配置了ACL规则，则在转发广播报文的同时还需要对报文进行过滤，不符合ACL规则的报文将被丢弃，只转发符合ACL规则的报文。

l 如果在同一接口下重复执行 ip forward-broadcast acl 命令，则后面配置的ACL会覆盖以前配置的ACL；如果后配置的命令不带 acl acl-number，则以前配置中的ACL规则将被取消。

1.2.3 允许接收和发送定向广播报文配置举例

1. 组网需求

如 图1-1 所示，Host的接口和Switch的VLAN接口3处于同一个网段（1.1.1.0/24），Switch的VLAN接口2和Server处于另外一个网段（2.2.2.0/24）。Host上配置默认网关为Switch的VLAN接口3的地址（1.1.1.2/24）。

要求通过配置使得Server可以收到Host发送的定向广播报文。

2. 组网图

图1-1 配置收发定向广播报文组网图

3. 配置步骤

# 配置允许Switch接收定向的广播报文。

<Switch> system-view

[Switch] ip forward-broadcast

# 配置VLAN接口3和VLAN接口2的IP地址。

[Switch] interface vlan-interface 3

[Switch-Vlan-interface3] ip address 1.1.1.2 24

[Switch-Vlan-interface3] quit

[Switch] interface vlan-interface 2

[Switch-Vlan-interface2] ip address 2.2.2.2 24

# 配置允许VLAN接口2转发定向广播报文。

[Switch-Vlan-interface2] ip forward-broadcast


1.3 配置TCP属性

1.3.1 配置TCP连接的Path MTU探测功能

RFC 1191中规定的TCP连接的Path MTU探测功能，可以探测TCP路径上从源端到目的端的最小MTU，其探测机制如下：

(1) TCP源端将发送的TCP数据段的外层IP报文设置DF（不可分片）标记。

(2) 如果TCP路径上某路由器的出接口MTU值小于该IP报文长度，则会丢弃报文，并给TCP源端发送ICMP差错报文，报文中会携带该出接口MTU值。

(3) TCP源端通过解析该ICMP差错报文，可知TCP路径上当前最小的单向MTU值。

(4) 后续TCP源端发送数据段的长度不超过MSS。其中，MSS＝最小MTU值－IP头部长度－TCP头部长度。

l 当MSS已经达到系统规定的最小的32字节后，如果再次收到减少MSS的ICMP差错报文，系统将允许该TCP连接发送的报文进行分片。

l 产生ICMP差错报文的路由器可能不支持RFC 1191，其产生的ICMP差错报文中的出接口MTU字段值为0，对于这种报文，TCP源端将按照RFC 1191中规定的MTU表获取比当前路径MTU更小的值作为计算TCP MSS的基础。MTU表的内容为（单位为字节）：68、296、508、1006、1280、1492、2002、4352、8166、17914、32000、65535（由于系统规定的TCP最小MSS为32，所以对应最小的MTU实际为72字节）。

用户通过命令行开启TCP连接的Path MTU探测功能后，新建的TCP连接均会携带Path MTU探测属性，可以通过上述探测机制确定Path MTU，按照数据路径上的最小MTU组织TCP分段长度，最大限度利用网络资源，避免IP分片的发生。

Path MTU值可以老化，这样当Path MTU增大时可以充分利用网络资源，尽量按照转发路径可以容忍的最大报文长度发送数据。Path MTU的老化机制如下：

l 当TCP源端收到ICMP差错报文后，除了减小Path MTU值，同时会为该Path MTU值启动老化定时器。

l 当该定时器超时后，系统将按照RFC 1191规定的MTU表依次递增TCP的MSS值。

l 如果增加一次MSS之后的2分钟内没有收到ICMP差错报文，则继续递增，直到MSS增长到对端在TCP三次握手阶段通告的MSS值。

表1-3 配置TCP连接的Path MTU探测功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
开启TCP连接的Path MTU探测功能 | tcp path-mtu-discovery [ aging minutes | no-aging ] | 必选 缺省情况下，TCP连接的Path MTU探测功能处于关闭状态

TCP连接的Path MTU探测功能依赖IP报文的DF标记位设置后触发ICMP差错报文，因此需要TCP路径上的所有设备打开ICMP差错报文发送功能（ip unreachables enable），以确保ICMP差错报文可以发送到TCP源端。

1.3.2 配置TCP连接的接收和发送缓冲区大小

表1-4 配置TCP连接的接收和发送缓冲区大小

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置TCP连接的接收和发送缓冲区的大小 | tcp window window-size | 可选 缺省情况下，TCP连接的接收和发送缓冲区大小为8KB

1.3.3 配置TCP定时器

可以配置的TCP定时器包括：

l synwait定时器：当发送SYN报文时，TCP启动synwait定时器，如果synwait超时前未收到回应报文，则TCP连接建立不成功。

l finwait定时器：当TCP的连接状态为FIN_WAIT_2时，启动finwait定时器，如果在定时器超时前没有收到报文，则TCP连接终止；如果收到FIN报文，则TCP连接状态变为TIME_WAIT状态；如果收到非FIN报文，则从收到的最后一个非FIN报文开始重新计时，在超时后中止连接。

表1-5 配置TCP定时器

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置TCP的synwait定时器超时时间 | tcp timer syn-timeout time-value | 可选 缺省情况下，synwait定时器超时时间为75秒
配置TCP的finwait定时器超时时间 | tcp timer fin-timeout time-value | 可选 缺省情况下，finwait定时器超时时间为675秒

finwait定时器的实际超时时间由如下公式决定：finwait定时器的实际超时时间＝（配置的finwait定时器超时时间－75）＋配置的synwait定时器超时时间。


1.4 配置ICMP差错报文发送功能

1.4.1 ICMP差错报文发送功能简介

发送差错报文是ICMP（Internet Control Message Protocol，互联网控制报文协议）的主要功能之一。差错报文通常被网络层或传输层协议用来在异常情况发生时通知相应设备，从而便于进行控制管理。

1. ICMP差错报文发送功能的作用

重定向报文、超时报文、目的不可达报文是ICMP差错报文中的三种。下面分别介绍这三种差错报文发送的条件及作用。

(1) ICMP重定向报文发送功能

主机启动时，它的路由表中可能只有一条到缺省网关的缺省路由。当满足一定的条件时，缺省网关会向源主机发送ICMP重定向报文，通知主机重新选择正确的下一跳进行后续报文的发送。

满足下列条件时，设备会发送ICMP重定向报文：

l 接收和转发数据报文的接口是同一接口；

l 被选择的路由本身没有被ICMP重定向报文创建或修改过；

l 被选择的路由不是设备的默认路由；

l 数据报文中没有源路由选项。

ICMP重定向报文发送功能可以简化主机的管理，使具有很少选路信息的主机逐渐建立较完善的路由表，从而找到最佳路由。

(2) ICMP超时报文发送功能

ICMP超时报文发送功能是在设备收到IP数据报文后，如果发生超时差错，则将报文丢弃并给源端发送ICMP超时差错报文。

设备在满足下列条件时会发送ICMP超时报文：

l 设备收到IP数据报文后，如果报文的目的地不是本地且报文的TTL字段是1，则发送“TTL超时”ICMP差错报文；

l 设备收到目的地址为本地的IP数据报文的第一个分片后，启动定时器，如果所有分片报文到达之前定时器超时，则会发送“重组超时”ICMP差错报文。

(3) ICMP目的不可达报文发送功能

ICMP目的不可达报文发送功能是在设备收到IP数据报文后，如果发生目的不可达的差错，则将报文丢弃并给源端发送ICMP目的不可达差错报文。

设备在满足下列条件时会发送目的不可达报文：

l 设备在转发报文时，如果在路由表中没有找到对应的转发路由，且路由表中没有缺省路由，则给源端发送“网络不可达”ICMP差错报文；

l 设备收到目的地址为本地的数据报文时，如果设备不支持数据报文采用的传输层协议，则给源端发送“协议不可达”ICMP差错报文；

l 设备收到目的地址为本地、传输层协议为UDP的数据报文时，如果报文的端口号与正在使用的进程不匹配，则给源端发送“端口不可达”ICMP差错报文；

l 源端如果采用“严格的源路由选择”发送报文，当中间设备发现源路由所指定的下一个设备不在其直接连接的网络上，则给源端发送“源站路由失败”的ICMP差错报文；

l 设备在转发报文时，如果转发接口的MTU小于报文的长度，但报文被设置了不可分片，则给源端发送“需要进行分片但设置了不可分片比特”ICMP差错报文。

2. ICMP差错报文发送功能的弊端

ICMP差错报文的发送虽然方便了网络的控制管理，但也存在一定的弊端：

l 由于发送大量的ICMP报文，增大了网络流量。

l 如果设备接收到大量需要发送ICMP差错报文的恶意攻击报文，设备会因为处理大量该类报文而导致性能降低。

l 由于重定向功能会在主机的路由表中增加主机路由，当增加的主机路由很多时，会降低主机性能。

l 由于ICMP目的不可达报文传递给用户进程的信息为不可达信息，如果有用户恶意攻击，可能会影响终端用户的正常使用。

为了避免上述现象发生，可以关闭设备的ICMP差错报文发送功能，从而减少网络流量、防止遭到恶意攻击。

1.4.2 配置ICMP差错报文发送功能

表1-6 配置ICMP差错报文发送功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
开启ICMP重定向报文发送功能 | ip redirects enable | 必选 缺省情况下，ICMP重定向报文发送功能处于关闭状态
开启ICMP超时报文发送功能 | ip ttl-expires enable | 必选 缺省情况下，ICMP超时报文发送功能处于关闭状态
开启ICMP目的不可达报文发送功能 | ip unreachables enable | 必选 缺省情况下，ICMP目的不可达报文发送功能处于关闭状态

关闭ICMP超时报文发送功能后，设备不会再发送“TTL超时”ICMP差错报文，但“重组超时”ICMP差错报文仍会正常发送。


1.5 IP性能优化显示和维护

在完成上述配置后，在任意视图下执行 display 命令可以显示配置IP性能后的运行情况，通过查看显示信息验证配置的效果。

在用户视图下执行 reset 命令清除IP、TCP和UDP的流量统计信息。

表1-7 IP性能优化显示和维护

操作 | 命令
显示TCP连接的流量统计信息 | display tcp statistics [ | { begin | exclude | include } regular-expression ]
显示UDP流量统计信息 | display udp statistics [ | { begin | exclude | include } regular-expression ]
显示IP报文统计信息 | display ip statistics [ slot slot-number ] [ | { begin | exclude | include } regular-expression ]
显示ICMP流量统计信息 | display icmp statistics [ slot slot-number ] [ | { begin | exclude | include } regular-expression ]
显示套接口信息 | display ip socket [ socktype sock-type ] [ task-id socket-id ] [ slot slot-number ] [ | { begin | exclude | include } regular-expression ]
显示FIB信息 | display fib [ vpn-instance vpn-instance-name ] [ acl acl-number | ip-prefix ip-prefix-name ] [ | { begin | exclude | include } regular-expression ]
显示与指定目的IP地址匹配的FIB信息 | display fib [ vpn-instance vpn-instance-name ] ip-address [ mask | mask-length ] [ | { begin | exclude | include } regular-expression ]
清除IP报文统计信息 | reset ip statistics [ slot slot-number ]
清除TCP连接的流量统计信息 | reset tcp statistics
清除UDP流量统计信息 | reset udp statistics


1 UDP Helper配置

UDP Helper功能中所指的“接口”为三层口，包括VLAN接口、三层以太网端口等。三层以太网端口是指被配置为三层模式的以太网端口，有关以太网端口模式切换的操作，请参见“二层技术-以太网交换配置指导”中的“以太网端口配置”。

相关链接

  • 1.1 UDP Helper简介
  • 1.2 配置UDP Helper
  • 1.3 UDP Helper显示和维护
  • 1.4 UDP Helper典型配置举例
父主题： 07-UDP Helper配置


1.1 UDP Helper简介

网络中的主机有时需要通过发送广播报文，来获得网络配置或查询网络中其他设备的名称。但是，当主机与服务器或待查询的设备不在同一个广播域时，主机就无法获得所需要的信息。

为解决上述问题，设备提供了UDP Helper功能。通过该功能可以实现对指定UDP端口的IP广播报文进行中继转发，即将指定UDP端口的广播报文转换为单播报文发送给指定的目的服务器，起到中继的作用。

使能UDP Helper功能后，如果设备接收到广播报文，将根据报文的UDP目的端口号来判断是否要对其中继转发，并进行相应的处理：

l 如果报文的UDP目的端口号与配置的需要中继转发的UDP端口号匹配，则修改IP报文头的目的IP地址，将报文发给指定的目的服务器；

l 如果报文的UDP目的端口号与配置的需要中继转发的UDP端口号不匹配，则直接将报文送给上层协议处理。


1.2 配置UDP Helper

表1-1 配置UDP Helper

操作 | 命令 | 说明
进入系统视图 | system-view | -
使能UDP Helper功能 | udp-helper enable | 必选 缺省情况下，UDP Helper功能处于关闭状态
配置需要中继转发的UDP端口 | udp-helper port { port-number | dns | netbios-ds | netbios-ns | tacacs | tftp | time } | 必选 缺省情况下，没有配置中继转发的UDP端口
进入接口视图 | interface interface-type interface-number | -
配置中继转发的目的服务器 | udp-helper server ip-address | 必选 缺省情况下，没有配置中继转发的目的服务器

l 本系列交换机缺省情况下禁止接收所有的定向广播报文。因此，只有在系统视图下配置 ip forward-broadcast 命令后，UDP Helper功能才可用。定向广播报文抑制功能的详细介绍请参见“三层技术-IP业务配置指导”中的“IP性能优化”。

l UDP Helper功能不能中继转发DHCP广播报文，即中继转发的UDP端口不能配置为67和68。

l 需要中继转发的UDP端口有两种配置方法：指定端口号配置和指定参数配置。例如：udp-helper port 53和 udp-helper port dns的效果是一样的。

l 关闭UDP Helper功能后，所有已配置的UDP端口都被取消。

l 设备上最多可以配置256个需要中继转发的UDP端口。

l 一个接口上最多可以配置20个中继转发的目的服务器。


1.3 UDP Helper显示和维护

在完成上述配置后，在任意视图下执行 display 命令可以显示配置后UDP中继转发的目的服务器信息以及中继转发到目的服务器的报文数目，通过查看显示信息验证配置的效果。

在用户视图下，执行 reset 命令可以清除UDP中继转发的报文统计数目。

表1-2 UDP Helper显示和维护

操作 | 命令
显示UDP中继转发的相关信息 | display udp-helper server [ interface interface-type interface-number ] [ | { begin | exclude | include } regular-expression ]
清除UDP中继转发的报文统计数目 | reset udp-helper packet


1.4 UDP Helper典型配置举例

1.4.1 UDP Helper配置举例

1. 组网需求

Switch A的VLAN接口1的IP地址为10.110.1.1/16，连接到网段10.110.0.0/16。配置将目的UDP端口号为55、目的IP地址为255.255.255.255和此网段子网广播地址10.110.255.255的广播报文，中继转发到目的服务器10.2.1.1/16。

2. 组网图

图1-1 UDP Helper配置举例组网图

3. 配置步骤

用户需保证Switch A到网段10.2.0.0/16路由可达。

# 配置允许Switch A接收定向的广播报文。

<SwitchA> system-view

[SwitchA] ip forward-broadcast

# 使能UDP Helper功能。

[SwitchA] udp-helper enable

# 配置将目的UDP端口号为55的广播报文进行中继转发。

[SwitchA] udp-helper port 55

# 配置中继转发的目的服务器为10.2.1.1。

[SwitchA] interface vlan-interface 1

[SwitchA-Vlan-interface1] ip address 10.110.1.1 16

[SwitchA-Vlan-interface1] udp-helper server 10.2.1.1


1 IPv6基础配置

本文中所指的“接口”包括Vlan接口、三层以太网端口等。三层以太网端口是指被配置为三层模式的以太网端口，有关以太网端口模式切换的操作，请参见“二层技术-以太网交换配置指导”中的“以太网端口配置”。

相关链接

  • 1.1 IPv6简介
  • 1.2 IPv6基础配置任务简介
  • 1.3 配置IPv6基本功能
  • 1.4 配置IPv6邻居发现协议
  • 1.5 配置PMTU发现
  • 1.6 配置TCP6
  • 1.7 配置ICMPv6报文发送
  • 1.8 IPv6基础显示和维护
  • 1.9 IPv6基础典型配置举例
  • 1.10 常见配置错误举例
父主题： 08-IPv6基础配置


1.1 IPv6简介

IPv6（Internet Protocol Version 6，因特网协议版本6）是网络层协议的第二代标准协议，也被称为IPng（IP Next Generation，下一代因特网），它是IETF（Internet Engineering Task Force，互联网工程任务组）设计的一套规范，是IPv4的升级版本。IPv6和IPv4之间最显著的区别为：IP地址的长度从32比特增加到128比特。

1.1.1 IPv6协议特点

1. 简化的报文头格式

通过将IPv4报文头中的某些字段裁减或移入到扩展报文头，减小了IPv6基本报文头的长度。IPv6使用固定长度的基本报文头，从而简化了转发设备对IPv6报文的处理，提高了转发效率。尽管IPv6地址长度是IPv4地址长度的四倍，但IPv6基本报文头的长度只有40字节，为IPv4报文头长度（不包括选项字段）的两倍。

图1-1 IPv4报文头和IPv6基本报文头格式比较

2. 充足的地址空间

IPv6的源地址与目的地址长度都是128比特（16字节）。它可以提供超过3.4×1038种可能的地址空间，完全可以满足多层次的地址划分需要，以及公有网络和机构内部私有网络的地址分配。

3. 层次化的地址结构

IPv6的地址空间采用了层次化的地址结构，有利于路由快速查找，同时可以借助路由聚合，有效减少IPv6路由表占用的系统资源。

4. 地址自动配置

为了简化主机配置，IPv6支持有状态地址配置和无状态地址配置：

l 有状态地址配置是指从服务器（如DHCP服务器）获取IPv6地址及相关信息；

l 无状态地址配置是指主机根据自己的链路层地址及路由器发布的前缀信息自动配置IPv6地址及相关信息。

同时，主机也可根据自己的链路层地址及默认前缀（FE80::/10）形成链路本地地址，实现与本链路上其他主机的通信。

5. 内置安全性

IPv6将IPSec作为它的标准扩展头，可以提供端到端的安全特性。这一特性也为解决网络安全问题提供了标准，并提高了不同IPv6应用之间的互操作性。

6. 支持QoS

IPv6报文头的流标签（Flow Label）字段实现流量的标识，允许设备对某一流中的报文进行识别并提供特殊处理。

7. 增强的邻居发现机制

IPv6的邻居发现协议是通过一组ICMPv6（Internet Control Message Protocol for IPv6，IPv6互联网控制消息协议）消息实现的，管理着邻居节点间（即同一链路上的节点）信息的交互。它代替了ARP（Address Resolution Protocol，地址解析协议）、ICMPv4路由器发现和ICMPv4重定向消息，并提供了一系列其他功能。

8. 灵活的扩展报文头

IPv6取消了IPv4报文头中的选项字段，并引入了多种扩展报文头，在提高处理效率的同时还大大增强了IPv6的灵活性，为IP协议提供了良好的扩展能力。IPv4报文头中的选项字段最多只有40字节，而IPv6扩展报文头的大小只受到IPv6报文大小的限制。

1.1.2 IPv6地址介绍

1. IPv6地址表示方式

IPv6地址被表示为以冒号（:）分隔的一连串16比特的十六进制数。每个IPv6地址被分为8组，每组的16比特用4个十六进制数来表示，组和组之间用冒号隔开，比如：2001:0000:130F:0000:0000:09C0:876A:130B。

为了简化IPv6地址的表示，对于IPv6地址中的“0”可以有下面的处理方式：

l 每组中的前导“0”可以省略，即上述地址可写为2001:0:130F:0:0:9C0:876A:130B。

l 如果地址中包含连续两个或多个均为0的组，则可以用双冒号“::”来代替，即上述地址可写为2001:0:130F::9C0:876A:130B。

在一个IPv6地址中只能使用一次双冒号“::”，否则当设备将“::”转变为0以恢复128位地址时，将无法确定“::”所代表的0的个数。

IPv6地址由两部分组成：地址前缀与接口标识。其中，地址前缀相当于IPv4地址中的网络号码字段部分，接口标识相当于IPv4地址中的主机号码部分。

地址前缀的表示方式为：IPv6地址/前缀长度。其中，IPv6地址是前面所列出的任一形式，而前缀长度是一个十进制数，表示IPv6地址最左边多少位为地址前缀。

2. IPv6的地址分类

IPv6主要有三种类型的地址：单播地址、组播地址和任播地址。

l 单播地址：用来唯一标识一个接口，类似于IPv4的单播地址。发送到单播地址的数据报文将被传送给此地址所标识的接口。

l 组播地址：用来标识一组接口（通常这组接口属于不同的节点），类似于IPv4的组播地址。发送到组播地址的数据报文被传送给此地址所标识的所有接口。

l 任播地址：用来标识一组接口（通常这组接口属于不同的节点）。发送到任播地址的数据报文被传送给此地址所标识的一组接口中距离源节点最近（根据使用的路由协议进行度量）的一个接口。

IPv6中没有广播地址，广播地址的功能通过组播地址来实现。

IPv6地址类型是由地址前面几位（称为格式前缀）来指定的，主要地址类型与格式前缀的对应关系如 表1-1 所示。

表1-1 地址类型与格式前缀的对应关系

地址类型 |  | 格式前缀（二进制） | IPv6前缀标识
单播地址 | 未指定地址 | 00...0 (128 bits) | ::/128
 | 环回地址 | 00...1 (128 bits) | ::1/128
 | 链路本地地址 | 1111111010 | FE80::/10
 | 站点本地地址 | 1111111011 | FEC0::/10
 | 全球单播地址 | 其他形式 | -
组播地址 |  | 11111111 | FF00::/8
任播地址 |  | 从单播地址空间中进行分配，使用单播地址的格式

3. 单播地址的类型

IPv6单播地址的类型可有多种，包括全球单播地址、链路本地地址和站点本地地址等。

l 全球单播地址等同于IPv4公网地址，提供给网络服务提供商。这种类型的地址允许路由前缀的聚合，从而限制了全球路由表项的数量。

l 链路本地地址用于邻居发现协议和无状态自动配置中链路本地上节点之间的通信。使用链路本地地址作为源或目的地址的数据报文不会被转发到其他链路上。

l 站点本地地址与IPv4中的私有地址类似。使用站点本地地址作为源或目的地址的数据报文不会被转发到本站点（相当于一个私有网络）外的其它站点。

l 环回地址：单播地址0:0:0:0:0:0:0:1（简化表示为::1）称为环回地址，不能分配给任何物理接口。它的作用与在IPv4中的环回地址相同，即节点用来给自己发送IPv6报文。

l 未指定地址：地址“::”称为未指定地址，不能分配给任何节点。在节点获得有效的IPv6地址之前，可在发送的IPv6报文的源地址字段填入该地址，但不能作为IPv6报文中的目的地址。

4. 组播地址

表1-2 所示的组播地址，是预留的特殊用途的组播地址。

表1-2 预留的IPv6组播地址列表

地址 | 应用
FF01::1 | 表示节点本地范围所有节点的组播地址
FF02::1 | 表示链路本地范围所有节点的组播地址
FF01::2 | 表示节点本地范围所有路由器的组播地址
FF02::2 | 表示链路本地范围所有路由器的组播地址
FF05::2 | 表示站点本地范围所有路由器的组播地址

另外，还有一类组播地址：被请求节点（Solicited-Node）地址。该地址主要用于获取同一链路上邻居节点的链路层地址及实现重复地址检测。每一个单播或任播IPv6地址都有一个对应的被请求节点地址。其格式为：

FF02:0:0:0:0:1:FFXX:XXXX

其中，FF02:0:0:0:0:1:FF为104位固定格式；XX:XXXX为单播或任播IPv6地址的后24位。

5. IEEE EUI-64格式的接口标识符

IPv6单播地址中的接口标识符用来标识链路上的一个唯一的接口。目前IPv6单播地址基本上都要求接口标识符为64位。

不同接口的IEEE EUI-64格式的接口标识符的生成方法不同，分别介绍如下：

l 所有IEEE 802接口类型（例如，VLAN接口）：IEEE EUI-64格式的接口标识符是从接口的链路层地址（MAC地址）变化而来的。IPv6地址中的接口标识符是64位，而MAC地址是48位，因此需要在MAC地址的中间位置（从高位开始的第24位后）插入十六进制数FFFE（1111111111111110）。为了表示这个从MAC地址得到的接口标识符是全球唯一的，还要将Universal/Local (U/L)位（从高位开始的第7位）设置为“1”。最后得到的这组数就作为EUI-64格式的接口标识符。

图1-2 MAC地址到EUI-64格式接口标识符的转换过程

l Tunnel接口：IEEE EUI-64格式的接口标识符的低32位为Tunnel接口的源IPv4地址，ISATAP隧道的接口标识符的高32位为0000:5EFE，其他隧道的接口标识符的高32位为全0。关于各种隧道的介绍，请参见“三层技术-IP业务配置指导”中的“隧道”。

l 其他接口类型：IEEE EUI-64格式的接口标识符由设备随机生成。

1.1.3 IPv6邻居发现协议介绍

IPv6邻居发现（Neighbor Discovery，ND）协议使用五种类型的ICMPv6消息，实现下面一些功能：地址解析、验证邻居是否可达、重复地址检测、路由器发现/前缀发现、地址自动配置和重定向等功能。

邻居发现协议使用的ICMPv6消息的类型及作用如 表1-3 所示。

表1-3 邻居发现协议使用的ICMPv6消息类型及作用

ICMPv6消息 | 类型号 | 作用
邻居请求消息NS（Neighbor Solicitation） | 135 | 获取邻居的链路层地址
 |  | 验证邻居是否可达
 |  | 进行重复地址检测
邻居通告消息NA（Neighbor Advertisement） | 136 | 对NS消息进行响应
 |  | 节点在链路层变化时主动发送NA消息，向邻居节点通告本节点的变化信息
路由器请求消息RS（Router Solicitation） | 133 | 节点启动后，通过RS消息向路由器发出请求，请求前缀和其他配置信息，用于节点的自动配置
路由器通告消息RA（Router Advertisement） | 134 | 对RS消息进行响应
 |  | 在没有抑制RA消息发布的条件下，路由器会周期性地发布RA消息，其中包括前缀信息选项和一些标志位的信息
重定向消息（Redirect） | 137 | 当满足一定的条件时，缺省网关通过向源主机发送重定向消息，使主机重新选择正确的下一跳地址进行后续报文的发送

邻居发现协议提供的主要功能如下：

1. 地址解析

获取同一链路上邻居节点的链路层地址（与IPv4的ARP功能相同），通过邻居请求消息NS和邻居通告消息NA实现。如 图1-3 所示，节点A要获取节点B的链路层地址。

图1-3 地址解析示意图

(1) 节点A以组播方式发送NS消息。NS消息的源地址是节点A的接口IPv6地址，目的地址是节点B的被请求节点组播地址，消息内容中包含了节点A的链路层地址。

(2) 节点B收到NS消息后，判断报文的目的地址是否为自己的IPv6地址对应的被请求节点组播地址。如果是，则节点B可以学习到节点A的链路层地址，并以单播方式返回NA消息，其中包含了自己的链路层地址。

(3) 节点A从收到的NA消息中就可获取到节点B的链路层地址。

2. 验证邻居是否可达

在获取到邻居节点的链路层地址后，通过邻居请求消息NS和邻居通告消息NA可以验证邻居节点是否可达。

(1) 节点发送NS消息，其中目的地址是邻居节点的IPv6地址。

(2) 如果收到邻居节点的确认报文，则认为邻居可达；否则，认为邻居不可达。

3. 重复地址检测

当节点获取到一个IPv6地址后，需要使用重复地址检测功能确定该地址是否已被其他节点使用（与IPv4的免费ARP功能相似）。通过NS和NA可以实现重复地址检测，如 图1-4 所示。

图1-4 重复地址检测示意图

(1) 节点A发送NS消息，NS消息的源地址是未指定地址::，目的地址是待检测的IPv6地址对应的被请求节点组播地址，消息内容中包含了待检测的IPv6地址。

(2) 如果节点B已经使用这个IPv6地址，则会返回NA消息。其中包含了自己的IPv6地址。

(3) 节点A收到节点B发来的NA消息，就知道该IPv6地址已被使用。反之，则说明该地址未被使用，节点A就可使用此IPv6地址。

4. 路由器发现/前缀发现及地址自动配置

路由器发现/前缀发现是指节点从收到的RA消息中获取邻居路由器及所在网络的前缀，以及其他配置参数。

地址无状态自动配置是指节点根据路由器发现/前缀发现所获取的信息，自动配置IPv6地址。

路由器发现/前缀发现通过路由器请求消息RS和路由器通告消息RA来实现，具体过程如下：

(1) 节点启动时，通过RS消息向路由器发出请求，请求前缀和其他配置信息，以便用于节点的配置。

(2) 路由器返回RA消息，其中包括前缀信息选项（路由器也会周期性地发布RA消息）。

(3) 节点利用路由器返回的RA消息中的地址前缀及其他配置参数，自动配置接口的IPv6地址及其他信息。

l 前缀信息选项中不仅包括地址前缀的信息，还包括该地址前缀的首选生命期（preferred lifetime）和有效生命期（valid lifetime）。节点收到周期性发送的RA消息后，会根据该消息更新前缀的首选生命期和有效生命期。

l 在有效生命期内，自动生成的地址可以正常使用；有效生命期过期后，自动生成的地址将被删除。

5. 重定向功能

当主机启动时，它的路由表中可能只有一条到缺省网关的缺省路由。当满足一定的条件时，缺省网关会向源主机发送ICMPv6重定向消息，通知主机选择更好的下一跳进行后续报文的发送（与IPv4的ICMP重定向消息的功能相同）。

设备在满足下列条件时会发送对主机重定向的ICMPv6重定向报文：

l 接收和转发数据报文的接口是同一接口；

l 被选择的路由本身没有被ICMPv6重定向报文创建或修改过；

l 被选择的路由不是缺省路由；

l 被转发的IPv6数据报文中不包含路由扩展头。

1.1.4 IPv6 PMTU发现

报文从源端到目的端的传输路径中所经过的链路可能具有不同的MTU。在IPv6中，当报文的长度大于链路的MTU时，报文的分片将在源端进行，从而减轻中间转发设备的处理压力，合理利用网络资源。

PMTU（Path MTU，路径MTU）发现机制的目的就是要找到从源端到目的端的路径上最小的MTU。PMTU的工作过程如 图1-5 所示。

图1-5 PMTU发现工作过程

(1) 源端主机按照自己的MTU对报文进行分片，之后向目的主机发送报文。

(2) 中间转发设备接收到该报文进行转发时，如果发现转发报文的接口支持的MTU值小于报文长度，则会丢弃报文，并给源端返回一个ICMPv6差错报文，其中包含了转发失败的接口的MTU。

(3) 源主机收到该差错报文后，将按照报文中所携带的MTU重新对报文进行分片并发送。

(4) 如此反复，直到目的端主机收到这个报文，从而确定报文从源端到目的端路径中的最小MTU。

1.1.5 IPv6过渡技术介绍

在IPv6成为主流协议之前，首先使用IPv6协议栈的网络希望能与当前仍被IPv4支撑着的Internet进行正常通信，因此必须开发出IPv4和IPv6互通技术以保证IPv4能够平稳过渡到IPv6。互通技术应该对信息传递做到高效无缝。目前已经出现了多种过渡技术，这些技术各有特点，用于解决不同过渡时期、不同环境的通信问题。

目前解决过渡问题的基本技术有2种：双协议栈（RFC 2893）和隧道技术（RFC 2893）。

1. 双协议栈

双协议栈是一种最简单直接的过渡机制。同时支持IPv4协议和IPv6协议的网络节点称为双协议栈节点。当双协议栈节点配置IPv4地址和IPv6地址后，就可以在相应接口上转发IPv4和IPv6报文。当一个上层应用同时支持IPv4和IPv6协议时，根据协议要求可以选用TCP或UDP作为传输层的协议，但在选择网络层协议时，它会优先选择IPv6协议栈。双协议栈技术适合IPv4网络节点之间或者IPv6网络节点之间通信，是所有过渡技术的基础。但是，这种技术要求运行双协议栈的节点有一个全球唯一的地址，实际上没有解决IPv4地址资源匮乏的问题。

2. 隧道技术

隧道是一种封装技术，它利用一种网络协议来传输另一种网络协议，即利用一种网络传输协议，将其他协议产生的数据报文封装在它自己的报文中，然后在网络中传输。关于隧道技术的详细介绍，请参见“三层技术-IP业务配置指导”中的“隧道”。

1.1.6 协议规范

与IPv6基础相关的协议规范有：

l RFC 1881：IPv6 Address Allocation Management

l RFC 1887：An Architecture for IPv6 Unicast Address Allocation

l RFC 1981：Path MTU Discovery for IP version 6

l RFC 2375：IPv6 Multicast Address Assignments

l RFC 2460：Internet Protocol, Version 6 (IPv6) Specification

l RFC 2461：Neighbor Discovery for IP Version 6 (IPv6)

l RFC 2462：IPv6 Stateless Address Autoconfiguration

l RFC 2463：Internet Control Message Protocol (ICMPv6) for the Internet Protocol Version 6 (IPv6) Specification

l RFC 2464：Transmission of IPv6 Packets over Ethernet Networks

l RFC 2526：Reserved IPv6 Subnet Anycast Addresses

l RFC 2894：Router Renumbering for IPv6

l RFC 3307：Allocation Guidelines for IPv6 Multicast Addresses

l RFC 3513：Internet Protocol Version 6 (IPv6) Addressing Architecture


1.2 IPv6基础配置任务简介

表1-4 IPv6基础配置任务简介

配置任务 |  | 说明 | 详细配置
配置IPv6基本功能 | 使能IPv6报文转发功能 | 必选 | 1.3.1
 | 配置IPv6全球单播地址 | 三者必选其一 | 1.3.2
 | 配置IPv6链路本地地址 |  | 1.3.3
 | 配置IPv6任播地址 |  | 1.3.4
配置IPv6邻居发现协议 | 配置静态邻居表项 | 可选 | 1.4.1
 | 配置接口上允许动态学习的邻居的最大个数 | 可选 | 1.4.2
 | 配置STALE状态ND表项的老化时间 | 可选 | 1.4.3
 | 配置RA消息的相关参数 | 可选 | 1.4.4
 | 配置重复地址检测时发送邻居请求消息的次数 | 可选 | 1.4.5
 | 配置ND Snooping功能 | 可选 | 1.4.6
 | 配置ND Proxy功能 | 可选 | 1.4.7
配置PMTU发现 | 配置指定地址的静态PMTU | 可选 | 1.5.1
 | 配置PMTU老化时间 | 可选 | 1.5.2
配置TCP6 |  | 可选 | 1.6
配置ICMPv6报文发送 | 配置指定时间内发送ICMPv6差错报文的最大个数 | 可选 | 1.7.1
 | 配置允许回复组播形式的Echo request报文 | 可选 | 1.7.2
 | 配置ICMPv6超时差错报文发送功能 | 可选 | 1.7.3
 | 配置ICMPv6目的不可达差错报文发送功能 | 可选 | 1.7.4


1.3 配置IPv6基本功能

1.3.1 使能IPv6报文转发功能

在进行IPv6的相关配置以前，必须先使能IPv6报文转发功能。否则即使在接口上配置了IPv6地址，仍无法转发IPv6的报文，造成IPv6网络无法互通。

表1-5 使能IPv6报文转发功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
使能IPv6报文转发功能 | ipv6 | 必选 缺省情况下，IPv6报文转发功能处于关闭状态

1.3.2 配置IPv6全球单播地址

IPv6全球单播地址可以通过下面三种方式配置：

l 采用EUI-64格式形成：当配置采用EUI-64格式形成IPv6地址时，接口的IPv6地址的前缀需要手工配置，而接口标识符则由接口自动生成。

l 手工配置：用户手工配置IPv6全球单播地址。

l 无状态自动配置：根据接收到的RA报文中携带的地址前缀信息，自动生成IPv6全球单播地址。

l 每个接口可以有多个前缀不同的全球单播地址。

l 手工配置的全球单播地址的优先级高于自动生成的全球单播地址。如果在接口已经自动生成全球单播地址的情况下，手工配置前缀相同的全球单播地址，自动生成的地址将被覆盖。此后，即使删除手工配置的全球单播地址，已被覆盖的自动生成的全球单播地址也不会恢复。再次接收到RA报文后，设备根据报文携带的地址前缀信息，重新生成全球单播地址。

1. 采用EUI-64格式形成IPv6地址

表1-6 采用EUI-64格式形成IPv6地址

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
采用EUI-64格式形成IPv6地址 | ipv6 address ipv6-address/prefix-length eui-64 | 必选 缺省情况下，接口上没有配置全球单播地址

2. 手工指定IPv6地址

表1-7 手工指定IPv6地址

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
手工指定IPv6地址 | ipv6 address { ipv6-address prefix-length | ipv6-address/prefix-length } | 必选 缺省情况下，接口上没有配置全球单播地址

3. 无状态自动配置IPv6地址

表1-8 无状态自动配置IPv6地址

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
无状态自动配置IPv6地址 | ipv6 address auto | 必选 缺省情况下，接口上没有配置全球单播地址

在接口上执行 undo ipv6 address auto 命令，将删除该接口上所有自动生成的全球单播地址。

在配置了无状态自动配置IPv6地址功能后，接口会根据接收到的RA报文中携带的地址前缀信息和接口ID，自动生成IPv6全球单播地址。如果接口是IEEE 802类型的接口（例如，VLAN接口），其接口ID是由MAC地址根据一定的规则生成，此接口ID具有全球唯一性。对于不同的前缀，接口ID部分始终不变，攻击者通过接口ID可以很方便的识别出通信流量是由哪台设备产生的，并分析其规律，从而窥探到设备和谁进行通信、在什么时间进行通信，会造成一定的安全隐患。

如果在地址无状态自动配置时，自动生成接口ID不断变化的IPv6地址，就可以加大攻击的难度，从而保护网络。为此，设备提供了临时地址功能，使得系统可以生成临时地址，并优先选择临时地址作为接口发送报文的源地址。配置该功能后，通过地址无状态自动配置，IEEE 802类型的接口可以同时生成两类地址：

l 公共地址：地址前缀采用RA报文携带的前缀，接口ID由MAC地址产生。接口ID始终不变。

l 临时地址：地址前缀采用RA报文携带的前缀，接口ID由系统根据MD5算法计算产生。接口ID不断变化。

发送报文时，系统将优先选择临时地址作为报文的源地址。当临时地址的有效生命期过期后，这个临时地址将被删除，同时，系统会通过MD5算法重新生成一个接口ID不同的临时地址。所以，该接口发送报文的源地址的接口ID总是在不停变化。如果生成的临时地址因为DAD冲突不可用，就采用公共地址作为报文的源地址。

临时地址的首选生命期和有效生命期的确定原则如下：

l 首选生命期是如下两个值之中的较小者：RA前缀中的首选生命期和（配置的临时地址首选生命期减去DESYNC_FACTOR）。DESYNC_FACTOR是一个0～600秒的随机值。

l 有效生命期是如下两个值之中的较小者：RA前缀中的有效生命期和配置的临时地址有效生命期。

表1-9 配置系统生成临时地址，并优先选择临时地址作为报文的源地址

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置系统生成临时地址，并优先选择临时地址作为报文的源地址 | ipv6 prefer temporary-address [ valid-lifetime preferred-lifetime ] | 必选 缺省情况下，系统不生成临时地址，也就不会用临时地址作为接口发送报文的源地址

l 设备的接口必须启用地址无状态自动配置功能才能生成临时地址，而且临时地址不会覆盖公共地址，因此会出现一个接口下有多个前缀相同但是接口ID不同的地址。

l 如果公共地址生成失败，例如前缀冲突，则不会生成临时地址。

1.3.3 配置IPv6链路本地地址

IPv6的链路本地地址可以通过两种方式获得：

l 自动生成：设备根据链路本地地址前缀（FE80::/10）及接口的链路层地址，自动为接口生成链路本地地址；

l 手工指定：用户手工配置IPv6链路本地地址。

l 每个接口只能有一个链路本地地址，为了避免链路本地地址冲突，推荐使用链路本地地址的自动生成方式。

l 配置链路本地地址时，手工指定方式的优先级高于自动生成方式。即如果先采用自动生成方式，之后手工指定，则手工指定的地址会覆盖自动生成的地址；如果先手工指定，之后采用自动生成的方式，则自动配置不生效，接口的链路本地地址仍是手工指定的。此时，如果删除手工指定的地址，则自动生成的链路本地地址会生效。

表1-10 配置自动生成链路本地地址

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
配置自动生成链路本地地址 | ipv6 address auto link-local | 可选 缺省情况下，接口上没有链路本地地址。当接口配置了IPv6全球单播地址后，会自动生成链路本地地址

表1-11 手工指定接口的链路本地地址

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
手工指定接口的链路本地地址 | ipv6 address ipv6-address link-local | 可选 缺省情况下，接口上没有链路本地地址。当接口配置了IPv6全球单播地址后，会自动生成链路本地地址

l 当接口配置了IPv6全球单播地址后，同时会自动生成链路本地地址。且与采用 ipv6 address auto link-local 命令生成的链路本地地址相同。此时如果手工指定接口的链路本地地址，则手工指定的有效。如果删除手工指定的链路本地地址，则接口的链路本地地址恢复为系统自动生成的地址。

l undo ipv6 address auto link-local 命令只能删除使用 ipv6 address auto link-local 命令生成的链路本地地址。即如果此时已经配置了IPv6全球单播地址，由于系统会自动生成链路本地地址，则接口仍有链路本地地址；如果此时没有配置IPv6全球单播地址，则接口没有链路本地地址。

1.3.4 配置IPv6任播地址

用户需要手工配置接口的IPv6任播地址。

表1-12 配置IPv6任播地址

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
配置IPv6任播地址 | ipv6 address ipv6-address/prefix-length anycast | 必选 缺省情况下，接口上没有配置任播地址


1.4 配置IPv6邻居发现协议

1.4.1 配置静态邻居表项

将邻居节点的IPv6地址解析为链路层地址，可以通过邻居请求消息NS及邻居通告消息NA来动态实现，也可以通过手工配置静态邻居表项来实现。

设备根据邻居节点的IPv6地址和与此邻居节点相连的三层接口号来唯一标识一个静态邻居表项。目前，静态邻居表项有两种配置方式：

l 配置本节点的三层接口对应的邻居节点的IPv6地址、链路层地址；

l 配置本节点VLAN中的端口对应的邻居节点的IPv6地址、链路层地址。

表1-13 配置静态邻居表项

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置静态邻居表项 | ipv6 neighbor ipv6-address mac-address { vlan-id port-type port-number | interface interface-type interface-number } | 必选

对于VLAN接口，可以采用上述两种方式来配置静态邻居表项：

l 采用第一种方式配置静态邻居表项后，设备还需要解析VLAN对应的二层端口信息。

l 采用第二种方式配置静态邻居表项，需要保证VLAN所对应的VLAN接口已经存在，且 port-type port-number指定的二层端口属于 vlan-id 指定的VLAN。在配置后，设备会将VLAN所对应的VLAN接口与IPv6地址相对应来唯一标识一个静态邻居表项。

1.4.2 配置接口上允许动态学习的邻居的最大个数

设备可以通过NS消息和NA消息来动态获取邻居节点的链路层地址，并将其加入到邻居表中。如果动态获取的邻居表过大，将可能导致设备的转发性能下降。为此，可以通过设置接口上允许动态学习的邻居的最大个数来进行限制。当接口上动态学习的邻居个数达到所设置的最大值时，该接口将不再学习邻居信息。

表1-14 配置接口上允许动态学习的邻居的最大个数

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
配置接口上允许动态学习的邻居的最大个数 | ipv6 neighbors max-learning-num number | 可选 缺省情况下，二层接口不对允许动态学习的邻居的最大个数进行限制，对于S3600V2-EI系列以太网交换机的三层接口允许动态学习的邻居的最大个数为4096；对于S3600V2-SI系列以太网交换机的三层接口允许动态学习的邻居的最大个数为1024

1.4.3 配置STALE状态ND表项的老化时间

为适应网络的变化，ND表需要不断更新。ND表中的STALE状态ND表项并非永远有效，每一条记录都有一个老化时间。到达老化时间的STALE状态ND表项将迁移到DELAY状态。5秒钟后DELAY状态超时，ND表项将迁移到PROBE状态，并发送3次NS报文进行可达性探测。若邻居已经下线，则收不到回应的NA报文，此时会将该ND表项删除。

缺省情况下，STALE状态ND表项的老化时间为4小时。用户可以根据网络实际情况调整老化时间。

表1-15 配置STALE状态ND表项的老化时间

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置STALE状态ND表项的老化时间 | ipv6 neighbor stale-aging aging-time | 可选 缺省情况下，STALE状态ND表项的老化时间为4小时

1.4.4 配置RA消息的相关参数

用户可以根据实际情况，配置接口是否发送RA消息及发送RA消息的时间间隔，同时可以配置RA消息中的相关参数以通告给主机。当主机接收到RA消息后，就可以采用这些参数进行相应操作。可以配置的RA消息中的参数及含义如 表1-16 所示。

表1-16 RA消息中的参数及描述

参数 | 描述
跳数限制（Cur Hop Limit） | 主机在发送IPv6报文时，将使用该参数值填充IPv6报文头中的Hop Limit字段。同时该参数值也作为设备应答报文中的Hop Limit字段值。
前缀信息（Prefix Information） | 在同一链路上的主机收到设备发布的前缀信息后，可以进行无状态自动配置等操作。
MTU | 发布链路的MTU，可以用于确保同一链路上的所有节点采用相同的MTU值。
被管理地址配置标志位（M flag） | 用于确定主机是否采用有状态自动配置获取IPv6地址。 如果设置该标志位为1，主机将通过有状态自动配置（例如DHCP服务器）来获取IPv6地址；否则，将通过无状态自动配置获取IPv6地址，即根据自己的链路层地址及路由器发布的前缀信息生成IPv6地址。
其他配置标志位（O flag） | 用于确定主机是否采用有状态自动配置获取除IPv6地址外的其他信息。 如果设置其他配置标志位为1，主机将通过有状态自动配置（例如DHCP服务器）来获取除IPv6地址外的其他信息；否则，将通过无状态自动配置获取其他信息。
路由器生存时间（Router Lifetime） | 用于设置发布RA消息的路由器作为主机的默认路由器的时间。主机根据接收到的RA消息中的路由器生存时间参数值，就可以确定是否将发布该RA消息的路由器作为默认路由器。
邻居请求消息重传时间间隔（Retrans Timer） | 设备发送NS消息后，如果未在指定的时间间隔内收到响应，则会重新发送NS消息。
保持邻居可达状态的时间（Reachable Time） | 当通过邻居可达性检测确认邻居可达后，在所设置的可达时间内，设备认为邻居可达；超过设置的时间后，如果需要向邻居发送报文，会重新确认邻居是否可达。

表1-17 配置允许发布RA消息

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
取消对RA消息发布的抑制 | undo ipv6 nd ra halt | 必选 缺省情况下，抑制发布RA消息
配置RA消息发布的最大时间间隔和最小时间间隔 | ipv6 nd ra interval max-interval-value min-interval-value | 可选 缺省情况下，RA消息发布的最大间隔时间为600秒，最小时间间隔为200秒 RA消息周期性发布时，相邻两次的时间间隔是在最大时间间隔与最小时间间隔之间随机选取一个值作为周期性发布RA消息的时间间隔 配置的最小时间间隔应该小于等于最大时间间隔的0.75倍

表1-18 配置RA消息中的相关参数

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置跳数限制 | ipv6 nd hop-limit value | 可选 缺省情况下，路由器发布的跳数限制为64跳
进入接口视图 | interface interface-type interface-number | -
配置RA消息中的前缀信息 | ipv6 nd ra prefix { ipv6-prefix prefix-length | ipv6-prefix/prefix-length } valid-lifetime preferred-lifetime [ no-autoconfig | off-link ] * | 可选 缺省情况下，没有配置RA消息中的前缀信息，此时将使用发送RA消息的接口IPv6地址作为RA消息中的前缀信息，其有效生命期是2592000秒（30天），首选生命期是604800（7天）
配置RA消息中不携带MTU选项 | ipv6 nd ra no-advlinkmtu | 可选 缺省情况下，RA消息中携带MTU选项
设置被管理地址配置标志位为1 | ipv6 nd autoconfig managed-address-flag | 可选 缺省情况下，被管理地址标志位为0，即主机通过无状态自动配置获取IPv6地址
设置其他配置标志位为1 | ipv6 nd autoconfig other-flag | 可选 缺省情况下，其他配置标志位为0，即主机通过无状态自动配置获取其他信息
配置RA消息中路由器的生存时间 | ipv6 nd ra router-lifetime value | 可选 缺省情况下，RA消息中路由器的生存时间为1800秒
配置邻居请求消息重传时间间隔 | ipv6 nd ns retrans-timer value | 可选 缺省情况下，接口发送NS消息的时间间隔为1000毫秒；接口发布的RA消息中Retrans Timer字段的值为0，即不对主机进行指定
配置保持邻居可达状态的时间 | ipv6 nd nud reachable-time value | 可选 缺省情况下，接口保持邻居可达状态的时间为30000毫秒；接口发布的RA消息中Reachable Timer字段的值为0，即不对主机进行指定

l RA消息发布的最大间隔时间应该小于或等于RA消息中路由器的生存时间，以保证在路由器失效之前得到更新的RA消息。

l 在接口上配置的邻居请求消息重传时间间隔及保持邻居可达状态的时间，既可作为RA消息中的信息发布给主机，也可作为本接口发送邻居请求消息的时间间隔及保持邻居可达状态的时间。

1.4.5 配置重复地址检测时发送邻居请求消息的次数

接口获得IPv6地址后，将发送邻居请求消息进行重复地址检测，如果在指定的时间内（通过 ipv6 nd ns retrans-timer 命令配置）没有收到响应，则继续发送邻居请求消息，当发送的次数达到所设置的次数后，仍未收到响应，则认为该地址可用。

表1-19 配置重复地址检测时发送邻居请求消息的次数

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
配置重复地址检测时发送邻居请求消息的次数 | ipv6 nd dad attempts value | 可选 缺省情况下，重复地址检测时发送邻居请求报文的次数为1，当 value 值为0时，表示禁止重复地址检测

1.4.6 配置ND Snooping功能

1. ND Snooping功能简介

ND Snooping功能用于二层交换网络环境，通过侦听DAD（Duplicate Address Detection，重复地址检测） NS消息来建立ND Snooping表项，表项内容包括报文的源IPv6地址、源MAC地址、所属VLAN、入端口等信息。

目前，ND Snooping表项有以下用途：

l 与ND Detection功能配合使用。关于ND Detection的详细介绍，请参见“安全配置指导”中的“ND攻击防御”。

l 与IP Source Guard功能配合使用。关于IP Source Guard的详细介绍，请参见“安全配置指导”中的“IP Source Guard”。

l 在SAVI各场景中使用。关于SAVI的详细介绍，请参见“安全配置指导”中的“SAVI”。

当一个VLAN使能ND Snooping后，该VLAN内所有端口接收的ND报文均会被重定向到CPU。全局使能ND Snooping后，CPU会对这些ND报文进行分析，获取报文的源IPv6地址、源MAC地址、源VLAN和入端口信息，并根据这些信息来新建或更新ND Snooping表项。

下面将具体介绍ND Snooping表项的新建、更新和老化机制。

(1) 新建表项机制

设备只会根据收到的DAD NS消息来新建ND Snooping表项。

(2) 更新表项机制

设备收到一个ND报文后，首先找到与该报文源IPv6地址对应的表项。如果表项的刷新时间没有超过1秒，则设备不会对表项进行更新。如果表项的刷新时间已经超过1秒，设备要判断收到的ND报文的MAC地址、入端口信息与现有该表项的MAC地址、入端口信息是否一致。

l 如果一致，则更新该表项的老化时间；

l 如果不一致，但收到的是DAD NS消息，则忽略该消息；

l 如果不一致，并且收到的是除DAD NS以外的ND报文，则进行主动确认。

主动确认过程如下：

l 首先，设备将探测现有该表项的正确性。设备对外发送DAD NS消息（该消息仅发送一次），消息中的待检测IPv6地址就是ND Snooping表项中的IPv6地址。如果在发送过程中收到对应的NA消息（消息的源IPv6地址、源MAC地址、入端口、源VLAN信息均和现有表项信息一致），则更新该表项的老化时间；如果在发送DAD NS消息后的1秒内都没有收到对应的NA消息，则开始探测新收到报文的真实性。

l 探测新收到报文（报文A）真实性的过程如下：设备对外发送DAD NS消息（该消息仅发送一次），消息中的待检测IPv6地址就是报文A的源IPv6地址。如果在发送过程中收到对应的NA消息（消息的源IPv6地址、源MAC地址、入端口、源VLAN信息均和报文A一致），则更新该表项的老化时间；如果在发送DAD NS消息后的1秒内都没有收到对应的NA消息，则该表项不会被更新。

(3) 老化表项机制

ND Snooping表项的老化时间为25分钟。如果一个ND Snooping表项自最后一次更新后15分钟内没有收到ND更新报文，则开始进行主动确认：设备对外发送DAD NS消息（该消息仅发送一次），消息中的待检测IPv6地址就是ND Snooping表项中的IPv6地址。

l 如果在发送过程中收到对应的NA消息（消息的源IPv6地址、源MAC地址、入端口、源VLAN信息均和现有表项信息一致），则更新表项的老化时间；

l 如果1秒内没有收到对应的NA消息，则等到表项的老化时间过后删除该表项。

2. 配置ND Snooping功能

表1-20 配置ND Snooping功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
使能全球单播类型地址的ND Snooping功能，根据IPv6地址为全球单播地址的DAD NS报文建立ND Snooping表项 | ipv6 nd snooping enable global | 二者至少选其一 缺省情况下，全球单播类型地址和链路本地类型地址的ND Snooping功能均处于关闭状态
使能链路本地类型地址的ND Snooping功能，根据IPv6地址为链路本地地址的DAD NS报文建立ND Snooping表项 | ipv6 nd snooping enable link-local
进入VLAN视图 | vlan vlan-id | -
使能ND Snooping功能 | ipv6 nd snooping enable | 必选 缺省情况下，ND Snooping功能处于关闭状态
退回系统视图 | quit | -
进入二层以太网端口视图/二层聚合接口视图 | interface interface-type interface-number | -
配置接口允许学习ND Snooping表项的最大个数 | ipv6 nd snooping max-learning-num number | 可选 缺省情况下，不对接口允许学习ND Snooping表项的最大个数进行限制
配置接口为上行口，禁止接口学习ND Snooping表项 | ipv6 nd snooping uplink | 可选 缺省情况下，ND Snooping功能使能后，接口上允许学习ND Snooping表项

1.4.7 配置ND Proxy功能

目前只支持对NS及NA报文的ND Proxy功能。

1. ND Proxy功能简介

如果NS请求是从一个网络的主机发往同一网段却不在同一物理网络上的另一台主机，那么连接它们的具有ND Proxy功能的设备就可以通过三层转发将这个NS请求发往被请求的另一台主机，该主机回应的NA报文也会通过连接它们的设备经过三层转发转给发起请求的主机，实现两台主机的互通，这个过程称作ND Proxy。

ND Proxy功能根据应用场景不同分为普通ND Proxy和本地ND Proxy。

如无特殊说明，本章后续描述中的ND Proxy均指普通ND Proxy。

(1) ND Proxy

ND Proxy的典型应用环境如 图1-6 所示。设备Switch通过两个三层端口Ethernet1/0/1和Ethernet1/0/2连接两个网络，两个三层端口的IPv6地址不在同一个网段，接口地址分别为4:1::99/64、4:2::99/64。但是两个网络内的主机Host A和Host B的地址通过掩码的控制，既与相连设备的接口地址在同一网段，同时二者也处于同一个网段。

图1-6 ND Proxy的应用环境

在这种组网情况下，当Host A需要与Host B通信时，由于目的IPv6地址与本机的IPv6地址为同一网段，因此Host A会直接发出请求Host B硬件地址的NS请求。但是，此时的两台主机处于不同的广播域中，Host B无法收到Host A的NS请求报文，当然也就无法应答。

通过在Switch上启用ND Proxy功能，可以解决此问题。在端口Ethernet1/0/1和Ethernet1/0/2上启用ND Proxy后，Switch可以根据NS请求的IPv6地址查找转发表项获得出接口，并将NS请求报文转发出去，这样Host B可以收到请求自己的NS报文，并回应NA；NA报文也会通过启用了ND Proxy的设备将NA报文转发给Host A；这样，实现Host A与Host B之间的通信。

(2) 本地ND Proxy

本地ND Proxy的应用场景如 图1-7 所示。Host A和Host B属于同一个VLAN 2，但它们分别连接到被二层隔离的端口Ethernet1/0/3和Ethernet1/0/1上。

图1-7 本地ND Proxy的应用环境

在这种组网情况下，当Host A需要与Host B通信时，由于目的IPv6地址与本机的IPv6地址为同一网段，因此Host A会直接发出请求Host B硬件地址的NS请求。但是，因为连接两台主机的端口处于端口隔离状态，Host B无法收到Host A的NS请求报文。

通过在Switch A上启用本地ND Proxy功能，可以解决此问题。在端口Ethernet1/0/2上启用本地ND Proxy后，Switch A会代替Host B回应NA，Host A发给Host B的报文就会通过Switch A进行转发，从而实现Host A与Host B之间的通信。

本地ND Proxy可以在下列三种情况下实现主机之间的三层互通：

l 想要互通的主机分别连接到同一个VLAN中的不同二层隔离端口下；

l 使能Super VLAN功能后，想要互通的主机属于不同的Sub VLAN；

l 使能Isolate-user-vlan功能后，想要互通的主机属于不同的Secondary VLAN。

2. 配置ND Proxy功能

ND Proxy和本地ND Proxy功能均可在VLAN接口视图/三层以太网端口视图下进行配置。

表1-21 配置ND Proxy功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
开启ND Proxy功能 | proxy-nd enable | 必选 缺省情况下，ND Proxy功能处于关闭状态

表1-22 配置本地ND Proxy功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
开启本地ND Proxy功能 | local-proxy-nd enable | 必选 缺省情况下，本地ND Proxy功能处于关闭状态


1.5 配置PMTU发现

1.5.1 配置指定地址的静态PMTU

用户可以为指定的目的IPv6地址配置静态的PMTU值。当源端主机从接口发送报文时，将比较该接口的MTU与指定目的IPv6地址的静态PMTU，如果报文长度大于二者中的最小值，则采用此最小值对报文进行分片。

表1-23 配置指定地址的静态PMTU

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置指定IPv6地址对应的静态PMTU值 | ipv6 pathmtu ipv6-address [ value ] | 必选 缺省情况下，没有配置静态PMTU值

1.5.2 配置PMTU老化时间

通过“ 1.1.4 IPv6 PMTU发现 ”中的方法动态确定源端主机到目的端主机的PMTU后，源端主机将使用这个MTU值发送后续报文到目的端主机。当PMTU老化时间超时后，动态确定的PMTU值将会被删除，源端主机会通过PMTU机制重新确定发送报文的MTU值。

该配置对静态PMTU不起作用。

表1-24 配置PMTU老化时间

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置PMTU老化时间 | ipv6 pathmtu age age-time | 可选 缺省情况下，PMTU的老化时间是10分钟


1.6 配置TCP6

可以配置的TCP6属性包括：

l synwait定时器：当发送SYN报文时，TCP6启动synwait定时器，如果synwait定时器超时前未收到回应报文，则TCP6连接建立不成功。

l finwait定时器：当TCP6的连接状态为FIN_WAIT_2时，启动finwait定时器，如果在定时器超时前没有收到报文，则TCP6连接终止；如果收到FIN报文，则TCP6连接状态变为TIME_WAIT状态；如果收到非FIN报文，则从收到的最后一个非FIN报文开始重新计时，在超时后中止连接。

l TCP6的接收和发送缓冲区的大小。

表1-25 配置TCP6

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置TCP6的synwait定时器 | tcp ipv6 timer syn-timeout wait-time | 可选 缺省情况下，synwait定时器的值75秒
配置TCP6的finwait定时器 | tcp ipv6 timer fin-timeout wait-time | 可选 缺省情况下，finwait定时器的值为675秒
配置TCP6的接收和发送缓冲区大小 | tcp ipv6 window size | 可选 缺省情况下，TCP6的接收和发送缓冲区大小均为8KB


1.7 配置ICMPv6报文发送

1.7.1 配置指定时间内发送ICMPv6差错报文的最大个数

如果网络中短时间内发送的ICMPv6差错报文过多，将可能导致网络拥塞。为了避免这种情况，用户可以控制在指定时间内发送ICMPv6差错报文的最大个数，目前采用令牌桶算法来实现。

用户可以设置令牌桶的容量，即令牌桶中可以同时容纳的令牌数；同时可以设置令牌桶的刷新周期，即每隔多长时间将令牌桶内的令牌个数刷新为所配置的容量。一个令牌表示允许发送一个ICMPv6差错报文，每当发送一个ICMPv6差错报文，则令牌桶中减少一个令牌。如果连续发送的ICMPv6差错报文超过了令牌桶的容量，则后续的ICMPv6差错报文将不能被发送出去，直到按照所设置的刷新频率将新的令牌放入令牌桶中。

表1-26 配置指定时间内发送ICMPv6差错报文的最大个数

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置控制ICMPv6差错报文发送的令牌桶容量和刷新周期 | ipv6 icmp-error { bucket bucket-size | ratelimit interval } * | 可选 缺省情况下，令牌桶容量为10，令牌桶的刷新周期为100毫秒，即每一个刷新周期内最多可以发送10个ICMPv6差错报文 刷新周期为0时，表示不限制ICMPv6差错报文的发送

1.7.2 配置允许回复组播形式的Echo request报文

如果允许主机回复组播形式的Echo request报文，则主机A可以构造目的地址为组播地址、源地址为主机B的Echo request报文，使该组播组中所有的主机都向主机B发送Echo reply报文，从而达到攻击主机B的目的。因此，为了避免主机利用设备达到攻击的目的，缺省情况下，不允许设备回复组播形式的Echo request报文。

在某些应用场景下，可能需要使用组播形式的Echo request报文来获取信息，此时可以通过下面的命令，配置允许设备回复组播形式的Echo request报文。

表1-27 配置允许回复组播形式的Echo request报文

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置允许回复组播形式的Echo request报文 | ipv6 icmpv6 multicast-echo-reply enable | 必选 缺省情况下，不允许回复组播形式的Echo request报文

1.7.3 配置ICMPv6超时差错报文发送功能

ICMPv6超时报文发送功能是在设备收到IPv6数据报文后，如果发生超时差错，则将报文丢弃并给源端发送ICMPv6超时差错报文。

设备在满足下列条件时会发送ICMPv6超时报文：

l 设备收到IPv6数据报文后，如果报文的目的地不是本地且报文的Hop limit字段是1，则发送“Hop limit超时”ICMPv6差错报文；

l 设备收到目的地址为本地的IPv6数据报文的第一个分片后，启动定时器，如果所有分片报文到达之前定时器超时，则会发送“重组超时”ICMPv6差错报文。

设备接收到大量需要发送ICMPv6差错报文的恶意攻击报文，设备会因为处理大量该类报文而导致性能降低。

为了避免上述现象发生，可以关闭设备的ICMPv6超时报文发送功能，从而减少网络流量、防止遭到恶意攻击。

表1-28 配置ICMPv6超时差错报文发送功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
开启设备的ICMPv6超时报文的发送功能 | ipv6 hoplimit-expires enable | 可选 缺省情况下，ICMPv6超时报文发送功能处于开启状态

1.7.4 配置ICMPv6目的不可达差错报文发送功能

ICMPv6目的不可达报文发送功能是在设备收到IPv6数据报文后，如果发生目的不可达的差错，则将报文丢弃并给源端发送ICMPv6目的不可达差错报文。

设备在满足下列条件时会发送目的不可达报文：

l 设备在转发报文时，如果在路由表中没有找到对应的转发路由，且路由表中没有缺省路由，则给源端发送“没有到达目的地址的路由”ICMPv6差错报文；

l 设备在转发报文时，如果是因为管理策略（例如防火墙过滤、ACL等）导致无法发送报文时，则给源端发送“与目的地址的通信被管理策略禁止”ICMPv6差错报文；

l 设备在转发报文时，如果报文的目的IPv6地址超出源IPv6地址的范围（例如，报文的源IPv6地址为链路本地地址，报文的目的IPv6地址为全球单播地址），会导致报文无法到达目的端，此时要给源端发送“超出源地址范围”ICMPv6差错报文；

l 设备在转发报文时，如果不能解析目的IPv6地址对应的链路层地址，则给源端发送“地址不可达”ICMPv6差错报文；

l 设备收到目的地址为本地、传输层协议为UDP的数据报文时，如果报文的目的端口号与正在使用的进程不匹配，则给源端发送“端口不可达”ICMPv6差错报文。

由于ICMPv6目的不可达报文传递给用户进程的信息为不可达信息，如果有用户恶意攻击，可能会影响终端用户的正常使用。为了避免上述现象发生，可以关闭设备的ICMPv6目的不可达报文发送功能，从而减少网络流量、防止遭到恶意攻击。

表1-29 配置ICMPv6目的不可达报文发送功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
开启设备的ICMPv6目的不可达报文的发送功能 | ipv6 unreachables enable | 必选 缺省情况下，ICMPv6目的不可达报文发送功能处于关闭状态


1.8 IPv6基础显示和维护

在完成上述配置后，在任意视图下执行 display 命令可以显示IPv6配置后的运行情况，用户可以通过查看显示信息验证配置的效果。

在用户视图下，执行 reset 命令可以清除相应的统计信息。

表1-30 IPv6基础显示和维护

操作 | 命令
显示IPv6 FIB转发信息表项 | display ipv6 fib [ acl6 acl6-number | ipv6-prefix ipv6-prefix-name ] [ | { begin | exclude | include } regular-expression ]
显示指定目的IPv6地址的IPv6 FIB转发信息表项 | display ipv6 fib ipv6-address [ prefix-length ] [ | { begin | exclude | include } regular-expression ]
显示接口的IPv6信息 | display ipv6 interface [ interface-type [ interface-number ] ] [ brief ] [ | { begin | exclude | include } regular-expression ]
显示邻居信息 | display ipv6 neighbors { { ipv6-address | all | dynamic | static } [ slot slot-number ] | interface interface-type interface-number | vlan vlan-id } [ | { begin | exclude | include } regular-expression ]
显示符合指定条件的邻居表项的总个数 | display ipv6 neighbors { { all | dynamic | static } [ slot slot-number ] | interface interface-type interface-number | vlan vlan-id } count [ | { begin | exclude | include } regular-expression ]
显示IPv6的PMTU信息 | display ipv6 pathmtu { ipv6-address | all | dynamic | static } [ | { begin | exclude | include } regular-expression ]
显示指定套接字的相关信息 | display ipv6 socket [ socktype socket-type ] [ task-id socket-id ] [ slot slot-number ] [ | { begin | exclude | include } regular-expression ]
显示IPv6报文及ICMPv6报文的统计信息 | display ipv6 statistics [ slot slot-number ] [ | { begin | exclude | include } regular-expression ]
显示TCP6连接的统计信息 | display tcp ipv6 statistics [ | { begin | exclude | include } regular-expression ]
显示TCP6连接的状态信息 | display tcp ipv6 status [ | { begin | exclude | include } regular-expression ]
显示UDP6的统计信息 | display udp ipv6 statistics [ | { begin | exclude | include } regular-expression ]
显示ND Snooping表项 | display ipv6 nd snooping [ ipv6-address | vlan vlan-id ] [ | { begin | exclude | include } regular-expression ]
清除IPv6邻居信息 | reset ipv6 neighbors { all | dynamic | interface interface-type interface-number | slot slot-number | static }
清除PMTU值 | reset ipv6 pathmtu { all | static | dynamic}
清除IPv6报文及ICMPv6报文的统计信息 | reset ipv6 statistics [ slot slot-number ]
清除所有TCP6连接的统计信息 | reset tcp ipv6 statistics
清除所有UDP6统计信息 | reset udp ipv6 statistics
清除ND Snooping表项 | reset ipv6 nd snooping [ ipv6-address | vlan vlan-id ]


1.9 IPv6基础典型配置举例

1. 组网需求

l 如 图1-8 所示，Host、Switch A和Switch B之间通过以太网端口相连，将以太网端口分别加入相应的VLAN里，在VLAN接口上配置IPv6地址，验证它们之间的互通性。

l Switch A的VLAN接口1的全球单播地址为2001::1/64，VLAN接口2的全球单播地址为3001::1/64。

l Switch B的VLAN接口2的全球单播地址为3001::2/64，有可以到Host的路由。

l Host上安装了IPv6，根据IPv6邻居发现协议自动配置IPv6地址，有可以到Switch B的路由。

2. 组网图

图1-8 IPv6地址配置组网图

交换机上已经创建相应的VLAN接口。

3. 配置步骤

(1) 配置Switch A

# 使能交换机的IPv6转发功能。

<SwitchA> system-view

[SwitchA] ipv6

# 手工指定VLAN接口2的全球单播地址。

[SwitchA] interface vlan-interface 2

[SwitchA-Vlan-interface2] ipv6 address 3001::1/64

[SwitchA-Vlan-interface2] quit

# 手工指定VLAN接口1的全球单播地址，并允许其发布RA消息。（缺省情况下，所有的接口不会发布RA消息）

[SwitchA] interface vlan-interface 1

[SwitchA-Vlan-interface1] ipv6 address 2001::1/64

[SwitchA-Vlan-interface1] undo ipv6 nd ra halt

[SwitchA-Vlan-interface1] quit

(2) 配置Switch B

# 使能交换机的IPv6转发功能。

<SwitchB> system-view

[SwitchB] ipv6

# 配置VLAN接口2的全球单播地址。

[SwitchB] interface vlan-interface 2

[SwitchB-Vlan-interface2] ipv6 address 3001::2/64

[SwitchB-Vlan-interface2] quit

# 配置IPv6静态路由，该路由的目的地址为2001::/64，下一跳地址为3001::1。

[SwitchB] ipv6 route-static 2001:: 64 3001::1

(3) 配置Host

Host上安装IPv6，根据IPv6邻居发现协议自动配置IPv6地址。

# 从Switch A上查看端口Ethernet1/0/2的邻居信息。

[SwitchA] display ipv6 neighbors interface Ethernet 1/0/2

Type: S-Static D-Dynamic

IPv6 Address Link-layer VID Interface State T Age

FE80::215:E9FF:FEA6:7D14 0015-e9a6-7d14 1 Eth1/0/2 STALE D 1238

2001::15B:E0EA:3524:E791 0015-e9a6-7d14 1 Eth1/0/2 STALE D 1248

通过上面的信息可以知道Host上获得的IPv6全球单播地址为2001::15B:E0EA:3524:E791。

4. 验证配置结果

# 显示Switch A的接口信息，可以看到各接口配置的IPv6全球单播地址。

[SwitchA] display ipv6 interface vlan-interface 2

Vlan-interface2 current state :UP

Line protocol current state :UP

IPv6 is enabled, link-local address is FE80::20F:E2FF:FE00:2

Global unicast address(es):

3001::1, subnet is 3001::/64

Joined group address(es):

FF02::1:FF00:0

FF02::1:FF00:1

FF02::1:FF00:2

FF02::2

FF02::1

MTU is 1500 bytes

ND DAD is enabled, number of DAD attempts: 1

ND reachable time is 30000 milliseconds

ND retransmit interval is 1000 milliseconds

Hosts use stateless autoconfig for addresses

IPv6 Packet statistics:

InReceives: 25829

InTooShorts: 0

InTruncatedPkts: 0

InHopLimitExceeds: 0

InBadHeaders: 0

InBadOptions: 0

ReasmReqds: 0

ReasmOKs: 0

InFragDrops: 0

InFragTimeouts: 0

OutFragFails: 0

InUnknownProtos: 0

InDelivers: 47

OutRequests: 89

OutForwDatagrams: 48

InNoRoutes: 0

InTooBigErrors: 0

OutFragOKs: 0

OutFragCreates: 0

InMcastPkts: 6

InMcastNotMembers: 25747

OutMcastPkts: 48

InAddrErrors: 0

InDiscards: 0

OutDiscards: 0

[SwitchA] display ipv6 interface vlan-interface 1

Vlan-interface1 current state :UP

Line protocol current state :UP

IPv6 is enabled, link-local address is FE80::20F:E2FF:FE00:1C0

Global unicast address(es):

2001::1, subnet is 2001::/64

Joined group address(es):

FF02::1:FF00:0

FF02::1:FF00:1

FF02::1:FF00:1C0

FF02::2

FF02::1

MTU is 1500 bytes

ND DAD is enabled, number of DAD attempts: 1

ND reachable time is 30000 milliseconds

ND retransmit interval is 1000 milliseconds

ND advertised reachable time is 0 milliseconds

ND advertised retransmit interval is 0 milliseconds

ND router advertisements are sent every 600 seconds

ND router advertisements live for 1800 seconds

Hosts use stateless autoconfig for addresses

IPv6 Packet statistics:

InReceives: 272

InTooShorts: 0

InTruncatedPkts: 0

InHopLimitExceeds: 0

InBadHeaders: 0

InBadOptions: 0

ReasmReqds: 0

ReasmOKs: 0

InFragDrops: 0

InFragTimeouts: 0

OutFragFails: 0

InUnknownProtos: 0

InDelivers: 159

OutRequests: 1012

OutForwDatagrams: 35

InNoRoutes: 0

InTooBigErrors: 0

OutFragOKs: 0

OutFragCreates: 0

InMcastPkts: 79

InMcastNotMembers: 65

OutMcastPkts: 938

InAddrErrors: 0

InDiscards: 0

OutDiscards: 0

# 显示Switch B的接口信息，可以看到接口配置的IPv6全球单播地址。

[SwitchB] display ipv6 interface vlan-interface 2

Vlan-interface2 current state :UP

Line protocol current state :UP

IPv6 is enabled, link-local address is FE80::20F:E2FF:FE00:1234

Global unicast address(es):

3001::2, subnet is 3001::/64

Joined group address(es):

FF02::1:FF00:0

FF02::1:FF00:2

FF02::1:FF00:1234

FF02::2

FF02::1

MTU is 1500 bytes

ND DAD is enabled, number of DAD attempts: 1

ND reachable time is 30000 milliseconds

ND retransmit interval is 1000 milliseconds

Hosts use stateless autoconfig for addresses

IPv6 Packet statistics:

InReceives: 117

InTooShorts: 0

InTruncatedPkts: 0

InHopLimitExceeds: 0

InBadHeaders: 0

InBadOptions: 0

ReasmReqds: 0

ReasmOKs: 0

InFragDrops: 0

InFragTimeouts: 0

OutFragFails: 0

InUnknownProtos: 0

InDelivers: 117

OutRequests: 83

OutForwDatagrams: 0

InNoRoutes: 0

InTooBigErrors: 0

OutFragOKs: 0

OutFragCreates: 0

InMcastPkts: 28

InMcastNotMembers: 0

OutMcastPkts: 7

InAddrErrors: 0

InDiscards: 0

OutDiscards: 0

# 在Host上使用Ping测试和Switch A及Switch B的互通性；在Switch B上使用Ping测试和Switch A及Host的互通性。

在Ping链路本地地址时，需要使用-i 参数来指定链路本地地址的接口。

[SwitchB] ping ipv6 -c 1 3001::1

PING 3001::1 : 56 data bytes, press CTRL_C to break

Reply from 3001::1

bytes=56 Sequence=1 hop limit=64 time = 2 ms

--- 3001::1 ping statistics ---

1 packet(s) transmitted

1 packet(s) received

0.00% packet loss

round-trip min/avg/max = 2/2/2 ms

[SwitchB-Vlan-interface2] ping ipv6 -c 1 2001::15B:E0EA:3524:E791

PING 2001::15B:E0EA:3524:E791 : 56 data bytes, press CTRL_C to break

Reply from 2001::15B:E0EA:3524:E791

bytes=56 Sequence=1 hop limit=63 time = 3 ms

--- 2001::15B:E0EA:3524:E791 ping statistics ---

1 packet(s) transmitted

1 packet(s) received

0.00% packet loss

round-trip min/avg/max = 3/3/3 ms

从Host上也可以ping通Switch B和Switch A，证明它们是互通的。


1.10 常见配置错误举例

1. 故障现象

无法Ping通对端的IPv6地址。

2. 故障排除

l 在任意视图使用 display current-configuration 命令或在系统视图下使用 display this 命令检查是否使能了IPv6报文转发功能。

l 在任意视图下使用 display ipv6 interface 命令检查接口配置的IPv6地址是否正确，接口状态是否为up。

l 在用户视图下使用 debugging ipv6 packet 命令打开IPv6报文调试开关，根据调试信息进行判断。


1 DHCPv6简介

相关链接

  • 1.1 DHCPv6概述
  • 1.2 DHCPv6地址/前缀分配过程
  • 1.3 地址/前缀租约更新过程
  • 1.4 DHCPv6无状态配置
  • 1.5 协议规范
父主题： 09-DHCPv6配置


1.1 DHCPv6概述

DHCPv6（Dynamic Host Configuration Protocol for IPv6，支持IPv6的动态主机配置协议）是针对IPv6编址方案设计的，为主机分配IPv6前缀、IPv6地址和其他网络配置参数的协议。

与其他IPv6地址分配方式（手工配置、通过路由器公告消息中的网络前缀无状态自动配置等）相比，DHCPv6具有以下优点：

l 更好地控制地址的分配。通过DHCPv6不仅可以记录为主机分配的地址，还可以为特定主机分配特定的地址，以便于网络管理。

l 为设备分配前缀，便于全网络的自动配置和管理。

l 除了IPv6前缀、IPv6地址外，还可以为主机分配DNS服务器、域名等网络配置参数。


1.2 DHCPv6地址/前缀分配过程

DHCPv6服务器为客户端分配地址/前缀的过程分为两类：

l 交互两个消息的快速分配过程

l 交互四个消息的分配过程

1.2.1 交互两个消息的快速分配过程

图1-1 地址/前缀快速分配过程

如 图1-1 所示，地址/前缀快速分配过程为：

(1) DHCPv6客户端在发送的Solicit消息中携带Rapid Commit选项，标识客户端希望服务器能够快速为其分配地址/前缀和网络配置参数；

(2) 如果DHCPv6服务器支持快速分配过程，则直接返回Reply消息，为客户端分配IPv6地址/前缀和其他网络配置参数。如果DHCPv6服务器不支持快速分配过程，则采用“ 1.2.2 交互四个消息的分配过程 ”为客户端分配IPv6地址/前缀和其他网络配置参数。

1.2.2 交互四个消息的分配过程

交互四个消息的分配过程如 图1-2 所示。

图1-2 交互四个消息的分配过程

交互四个消息分配过程的简述如 表1-1 。

表1-1 交互四个消息的分配过程

步骤 | 发送的消息 | 说明
(1) | Solicit | DHCPv6客户端发送该消息，请求DHCPv6服务器为其分配IPv6地址/前缀和网络配置参数
(2) | Advertise | 如果Solicit消息中没有携带Rapid Commit选项，或Solicit消息中携带Rapid Commit选项，但服务器不支持快速分配过程，则DHCPv6服务器回复该消息，通知客户端可以为其分配的地址/前缀和网络配置参数
(3) | Request | 如果DHCPv6客户端接收到多个服务器回复的Advertise消息，则根据消息接收的先后顺序、服务器优先级等，选择其中一台服务器，并向该服务器发送Request消息，请求服务器确认为其分配地址/前缀和网络配置参数
(4) | Reply | DHCPv6服务器回复该消息，确认将地址/前缀和网络配置参数分配给客户端使用


1.3 地址/前缀租约更新过程

DHCPv6服务器分配给客户端的IPv6地址/前缀具有一定的租借期限。租借期限由有效生命期（Valid Lifetime）决定。地址/前缀的租借时间到达有效生命期后，DHCPv6客户端不能再使用该地址/前缀。在有效生命期到达之前，如果DHCPv6客户端希望继续使用该地址/前缀，则需要更新地址/前缀租约。

图1-3 通过Renew更新地址/前缀租约

如 图1-3 所示，地址/前缀租借时间到达时间T1（推荐值为首选生命期Preferred Lifetime的一半）时，DHCPv6客户端会向为它分配地址/前缀的DHCPv6服务器单播发送Renew报文，以进行地址/前缀租约的更新。如果客户端可以继续使用该地址/前缀，则DHCPv6服务器回应续约成功的Reply报文，通知DHCPv6客户端已经成功更新地址/前缀租约；如果该地址/前缀不可以再分配给该客户端，则DHCPv6服务器回应续约失败的Reply报文，通知客户端不能获得新的租约。

图1-4 通过Rebind更新地址/前缀租约

如 图1-4 所示，如果在T1时发送Renew请求更新租约，但是没有收到DHCPv6服务器的回应报文，则DHCPv6客户端会在T2（推荐值为首选生命期的0.8倍）时，向所有DHCPv6服务器组播发送Rebind报文请求更新租约。如果客户端可以继续使用该地址/前缀，则DHCPv6服务器回应续约成功的Reply报文，通知DHCPv6客户端已经成功更新地址/前缀租约；如果该地址/前缀不可以再分配给该客户端，则DHCPv6服务器回应续约失败的Reply报文，通知客户端不能获得新的租约；如果DHCPv6客户端没有收到服务器的应答报文，则到达有效生命期后，客户端停止使用该地址/前缀。

有效生命期和首选生命期的详细介绍请参见“三层技术-IP业务配置指导”中的“IPv6基础”。


1.4 DHCPv6无状态配置

1.4.1 DHCPv6无状态配置简介

DHCPv6服务器可以为已经具有IPv6地址/前缀的客户端分配其他网络配置参数，该过程称为DHCPv6无状态配置。

DHCPv6客户端通过地址无状态自动配置功能成功获取IPv6地址后，如果接收到的RA（Router Advertisement，路由器通告）报文中M标志位（Managed address configuration flag，被管理地址配置标志位）为0、O标志位（Other stateful configuration flag，其他配置标志位）为1，则DHCPv6客户端会自动启动DHCPv6无状态配置功能，以获取除地址/前缀外的其他网络配置参数。

地址无状态自动配置是指节点根据路由器发现/前缀发现所获取的信息，自动配置IPv6地址。详细介绍请参见“三层技术-IP业务配置指导”的“IPv6基础”。

1.4.2 DHCPv6无状态配置过程

图1-5 DHCPv6无状态配置工作过程

如 图1-5 所示，DHCPv6无状态配置的具体过程为：

(1) 客户端以组播的方式向DHCPv6服务器发送Information-request报文，该报文中携带Option Request选项，指定客户端需要从服务器获取的配置参数。

(2) 服务器收到Information-request报文后，为客户端分配网络配置参数，并单播发送Reply报文将网络配置参数返回给客户端。

(3) 客户端检查Reply报文中提供的信息，如果与Information-request报文中请求的配置参数相符，则按照Reply报文中提供的参数进行网络配置；否则，忽略该参数。如果接收到多个Reply报文，客户端将选择最先收到的Reply报文，并根据该报文中提供的参数完成客户端无状态配置。


1.5 协议规范

与DHCPv6相关的协议规范有：

l RFC 3736：Stateless Dynamic Host Configuration Protocol (DHCP) Service for IPv6

l RFC 3315：Dynamic Host Configuration Protocol for IPv6 (DHCPv6)

l RFC 2462：IPv6 Stateless Address Autoconfiguration

l RFC 3633：IPv6 Prefix Options for Dynamic Host Configuration Protocol (DHCP) version 6


2 DHCPv6服务器配置

相关链接

  • 2.1 DHCPv6服务器简介
  • 2.2 配置DHCPv6服务器
  • 2.3 DHCPv6服务器显示和维护
  • 2.4 DHCPv6服务器典型配置举例
父主题： 09-DHCPv6配置


2.1 DHCPv6服务器简介

2.1.1 DHCPv6服务器应用环境

图2-1 DHCPv6服务器应用组网图

如 图2-1 所示，为了便于集中管理IPv6地址，简化网络配置，DHCPv6服务器可以用来为DHCPv6客户端分配IPv6前缀。DHCPv6客户端获取到IPv6前缀后，向所在网络发送包含该前缀信息的RA消息，以便网络内的主机根据该前缀自动配置IPv6地址。

目前，设备作为DHCPv6服务器时，只能为DHCPv6客户端分配前缀，不能分配地址；且支持DHCPv6无状态配置，为DHCPv6客户端分配除IPv6地址/前缀外的其他网络配置参数。

2.1.2 基本概念

1. DHCPv6采用的组播地址

DHCPv6中采用组播地址FF05::1:3来表示站点本地范围内所有的DHCPv6服务器；采用组播地址FF02::1:2来表示链路本地范围内所有的DHCPv6服务器和中继。

2. DUID

DUID（DHCP Unique Identifier，DHCP唯一标识符）用来标识一台DHCPv6设备（包括客户端、服务器和中继）。

图2-2 DUID-LL结构

目前，设备采用RFC 3315规定的DUID-LL（DUID Based on Link-layer Address，基于链路层地址的DUID）作为DHCPv6设备的标识。DUID-LL的结构如 图2-2 所示：

l DUID type：DUID类型。设备支持的DUID类型为DUID-LL，取值为0x0003。

l Hardware type：硬件类型。设备支持的硬件类型为以太网，取值为0x0001。

l Link layer address：链路层地址。取值为设备的桥MAC地址。

3. IA

IA（Identity Association，标识联盟）用于管理分配给客户端的一组地址和前缀等信息，通过IAID标识。一个客户端可以有多个IA，如客户端的每个接口拥有一个IA，用来管理该接口获取的地址和前缀等信息。

4. IAID

IAID是IA的标识符，由客户端选择。在一个客户端上不同IA的IAID不能相同。

5. PD

PD（Prefix Delegation，前缀授权）是DHCPv6服务器为分配的前缀创建的租约，前缀租约中记录了IPv6前缀、客户端DUID、IAID、有效时间、首选时间、租约过期时间、申请前缀的客户端的IPv6地址等信息。

2.1.3 前缀的选择过程

DHCPv6服务器从接口接收到客户端的请求后，从该接口应用的地址池中选择前缀和其他网络配置参数，分配给客户端。地址池既可以包含静态绑定前缀，用于为特定客户端分配固定前缀；也可以引用包含一定前缀范围的前缀池，用于动态选择可用前缀分配给客户端。

DHCPv6服务器按照如下顺序从地址池中为客户端选择匹配的前缀：

(1) DUID、IAID与客户端DUID、IAID匹配，且与客户端期望前缀匹配的静态绑定前缀；

(2) DUID、IAID与客户端DUID、IAID匹配的静态绑定前缀；

(3) DUID与客户端的DUID匹配，且与客户端期望前缀匹配的静态绑定前缀，该前缀中未指定客户端的IAID；

(4) DUID与客户端DUID匹配的静态绑定前缀，该前缀中未指定客户端的IAID；

(5) 前缀池中与客户端期望前缀匹配的空闲前缀；

(6) 前缀池中的其他空闲前缀。


2.2 配置DHCPv6服务器

2.2.1 DHCPv6服务器配置任务简介

表2-1 DHCPv6服务器配置任务简介

配置任务 | 说明 | 详细配置
使能DHCPv6服务器功能 | 必选 | 2.2.3
创建前缀池 | 必选 | 2.2.4
配置DHCPv6地址池 | 必选 | 2.2.5
配置接口引用地址池 | 必选 | 2.2.6

2.2.2 配置准备

配置DHCPv6服务器功能之前，需要先执行 ipv6 命令使能IPv6报文收发功能。ipv6 命令的详细介绍请参见“三层技术-IP业务命令参考”中的“IPv6基础”。

2.2.3 使能DHCPv6服务器功能

表2-2 使能DHCPv6服务器功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
使能DHCPv6服务器功能 | ipv6 dhcp server enable | 必选 缺省情况下，DHCPv6服务器功能处于关闭状态

2.2.4 创建前缀池

前缀池用来定义一个前缀范围。

表2-3 创建前缀池

操作 | 命令 | 说明
进入系统视图 | system-view | -
创建前缀池 | ipv6 dhcp prefix-pool prefix-pool-number prefix prefix/prefix-len assign-len assign-len | 必选 缺省情况下，设备上不存在任何前缀池

2.2.5 配置DHCPv6地址池

DHCPv6地址池中包括了供分配的前缀和网络配置参数等信息，如DNS服务器地址、域名、SIP服务器地址、SIP服务器域名和AFTR（Address Family Transition Router，地址族转换路由器）地址。DHCPv6服务器从地址池中选择前缀和其他网络配置参数，分配给客户端。

表2-4 配置DHCPv6地址池

操作 | 命令 | 说明
进入系统视图 | system-view | -
创建DHCPv6地址池，并进入DHCPv6地址池视图 | ipv6 dhcp pool pool-number | 必选 缺省情况下，设备上不存在任何DHCPv6地址池
配置静态绑定前缀 | static-bind prefix prefix/prefix-len duid duid [ iaid iaid ] [ preferred-lifetime preferred-lifetime valid-lifetime valid-lifetime ] | 二者至少选择其一 缺省情况下，没有指定地址池分配的前缀
配置地址池引用前缀池 | prefix-pool prefix-pool-number [ preferred-lifetime preferred-lifetime valid-lifetime valid-lifetime ]
配置为客户端分配的DNS服务器地址 | dns-server ipv6-address | 可选 缺省情况下，没有指定为客户端分配的DNS服务器地址
配置为客户端分配的域名 | domain-name domain-name | 可选 缺省情况下，没有指定为客户端分配的域名
配置为客户端分配的SIP服务器地址或域名 | sip-server { address ipv6-address | domain-name domain-name } | 可选 缺省情况下，没有指定为客户端分配的SIP服务器地址或域名
配置为客户端分配的AFTR地址 | ds-lite address ipv6-address | 可选 缺省情况下，没有指定为客户端分配的AFTR地址

l 一个地址池最多可以引用一个前缀池。

l 地址池可以引用并不存在的前缀池，但是，此时设备无法从该地址池中动态选择前缀分配给客户端。只有创建该前缀池后，才能支持前缀的动态选择。

l 不允许通过重复执行 prefix-pool 命令的方式修改地址池引用的前缀池、前缀的首选生命期和有效生命期。只有取消当前地址池引用的前缀池后，才能引用其他的前缀池，或修改首选生命期和有效生命期。

l 一个地址池下最多可以配置8个DNS服务器地址、1个域名、8个SIP服务器地址和8个SIP服务器域名。

2.2.6 配置接口引用地址池

在接口上引用地址池后，该接口将具有DHCPv6服务器功能，即从该接口接收到客户端的请求后，设备将从该接口应用的地址池中选择前缀和其他网络配置参数，分配给客户端。

表2-5 配置接口引用地址池

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
配置接口引用DHCPv6地址池 | ipv6 dhcp server apply pool pool-number [ allow-hint | preference preference-value | rapid-commit ] * | 必选 缺省情况下，接口没有引用DHCPv6地址池

l 一个接口不能同时作为DHCPv6服务器和DHCPv6中继。

l 建议不要在一个接口上同时配置DHCPv6服务器和DHCPv6客户端功能。

l 一个接口上最多只能引用一个地址池。

l 接口可以引用并不存在的地址池，但是，此时该接口无法为客户端分配前缀等信息。只有创建该地址池后，才能为客户端分配前缀等信息。

l 不允许通过重复执行 ipv6 dhcp server apply pool 命令的方式修改接口引用的地址池和服务器优先级等参数。只有取消当前接口引用的地址池后，才能引用其他的地址池，或修改服务器优先级等参数。


2.3 DHCPv6服务器显示和维护

在完成上述配置后，在任意视图下执行 display 命令可以显示配置后DHCPv6服务器的运行情况，通过查看显示信息验证配置的效果。

在用户视图下执行 reset 命令可以清除DHCPv6服务器的统计信息。

表2-6 DHCPv6服务器显示和维护

操作 | 命令
显示本设备DUID | display ipv6 dhcp duid [ | { begin | exclude | include } regular-expression ]
显示DHCPv6地址池的信息 | display ipv6 dhcp pool [ p ool-number ] [ | { begin | exclude | include } regular-expression ]
显示前缀池的信息 | display ipv6 dhcp prefix-pool [ prefix-pool-number ] [ | { begin | exclude | include } regular-expression ]
显示DHCPv6服务器的配置信息 | display ipv6 dhcp server [ interface interface-type interface-number ] [ | { begin | exclude | include } regular-expression ]
显示前缀租约信息 | display ipv6 dhcp server pd-in-use { all | pool pool-number | prefix prefix/prefix-len | prefix-pool prefix-pool-number } [ | { begin | exclude | include } regular-expression ]
显示DHCPv6服务器的报文统计信息 | display ipv6 dhcp server statistics [ | { begin | exclude | include } regular-expression ]
清除DHCPv6服务器的前缀租约信息 | reset ipv6 dhcp server pd-in-use { all | pool pool-number | prefix prefix/prefix-len }
清除DHCPv6服务器的报文统计信息 | reset ipv6 dhcp server statistics


2.4 DHCPv6服务器典型配置举例

1. 组网需求

DHCPv6客户端从DHCPv6服务器获取IPv6地址前缀，以及网络配置参数：DNS服务器地址、域名、SIP服务器地址和SIP服务器域名。其中：

l Switch作为DHCPv6服务器，地址为1::1/64。

l DHCPv6服务器为DUID为00030001CA0006A40000的客户端固定分配前缀2001:0410:0201::/48；为其他客户端分配2001:0410::/48～2001:0410:FFFF::/48之间除2001:0410:0201::/48外的前缀。

l DNS服务器地址为2:2::3。

l DHCPv6客户端所属域的域名为aaa.com。

l SIP服务器地址为2:2::4，域名为bbb.com。

2. 配置思路

在DHCPv6服务器上需要进行如下配置：

l 使能IPv6报文转发功能和DHCPv6服务器功能。

l 创建前缀池。为了满足为客户端分配2001:0410::/48～2001:0410:FFFF::/48范围的前缀这一需求，需要配置前缀池包含的前缀为2001:0410::/32，分配的前缀长度为48。

l 创建地址池。在地址池配置静态绑定前缀，引用前缀池，并配置DNS服务器地址等参数。

l 在连接DHCPv6客户端的接口上引用地址池。

3. 组网图

图2-3 DHCPv6服务器配置组网图

4. 配置步骤

(1) 配置DHCPv6服务器

# 使能IPv6报文转发功能及DHCPv6服务器功能。

<Switch> system-view

[Switch] ipv6

[Switch] ipv6 dhcp server enable

# 配置VLAN接口2的IPv6地址。

[Switch] interface vlan-interface 2

[Switch-Vlan-interface2] ipv6 address 1::1/64

[Switch-Vlan-interface2] quit

# 配置前缀池1，包含的前缀为2001:0410::/32，分配的前缀长度为48。

[Switch] ipv6 dhcp prefix-pool 1 prefix 2001:0410::/32 assign-len 48

# 创建地址池1。

[Switch] ipv6 dhcp pool 1

# 配置地址池1引用已存在的前缀池1，并设置首选生命期为1天，有效生命期为3天。

[Switch-ipv6-dhcp-pool-1] prefix-pool 1 preferred-lifetime 86400 valid-lifetime 259200

# 在地址池1中配置静态绑定前缀：绑定的前缀为2001:0410:0201::/48，绑定的客户端DUID为00030001CA0006A40000，并设置首选生命期为1天，有效生命期为3天。

[Switch-ipv6-dhcp-pool-1] static-bind prefix 2001:0410:0201::/48 duid 00030001CA0006A40000 preferred-lifetime 86400 valid-lifetime 259200

# 配置为客户端分配的DNS服务器地址为2:2::3。

[Switch-ipv6-dhcp-pool-1] dns-server 2:2::3

# 配置为客户端分配的域名为aaa.com。

[Switch-ipv6-dhcp-pool-1] domain-name aaa.com

# 配置为客户端分配的SIP服务器地址为2:2::4，域名为bbb.com。

[Switch-ipv6-dhcp-pool-1] sip-server address 2:2::4

[Switch-ipv6-dhcp-pool-1] sip-server domain-name bbb.com

[Switch-ipv6-dhcp-pool-1] quit

# 在VLAN接口2上引用已存在的地址池1，使能期望前缀分配和前缀快速分配功能，并将优先级设置为最高。

[Switch] interface vlan-interface 2

[Switch-Vlan-interface2] ipv6 dhcp server apply pool 1 allow-hint preference 255 rapid-commit

(2) 验证配置结果

# 完成上述配置后，查看VLAN接口2上的DHCPv6服务器配置信息。

[Switch-Vlan-interface2] display ipv6 dhcp server interface vlan-interface 2

Using pool: 1

Preference value: 255

Allow-hint: Enabled

Rapid-commit: Enabled

# 显示地址池1的信息。

[Switch-Vlan-interface2] display ipv6 dhcp pool 1

DHCPv6 pool: 1

Static bindings:

DUID: 00030001CA0006A40000

IAID: A1A1A1A1

Prefix: 2001:410:201::/48

preferred lifetime 86400, valid lifetime 2592000

Prefix pool: 1

preferred lifetime 86400, valid lifetime 2592000

DNS server address:

2:2::3

Domain name: aaa.com

SIP server address:

2:2::4

SIP server domain name:

bbb.com

# 显示前缀池1的信息。

[Switch-Vlan-interface2] display ipv6 dhcp prefix-pool 1

Prefix: 2001:410::/32

Assigned length: 48

Total prefix number: 65536

Available: 65535

In-use: 0

Static: 1

# DUID为00030001CA0006A40000的客户端获取IPv6前缀后，显示前缀租约信息。

[Switch-Vlan-interface2] display ipv6 dhcp server pd-in-use all

Total number = 1

Prefix Type Pool Lease-expiration

2001:410:201::/48 Static(C) 1 Jul 10 2009 19:45:01

# 其他客户端获取IPv6前缀后，显示前缀租约信息。

[Switch-Vlan-interface2] display ipv6 dhcp server pd-in-use all

Total number = 2

Prefix Type Pool Lease-expiration

2001:410:201::/48 Static(C) 1 Jul 10 2009 19:45:01

2001:410::/48 Auto(C) 1 Jul 10 2009 20:44:05


3 DHCPv6中继配置

相关链接

  • 3.1 DHCPv6中继简介
  • 3.2 配置DHCPv6中继
  • 3.3 DHCPv6中继显示和维护
  • 3.4 DHCPv6中继典型配置举例
父主题： 09-DHCPv6配置


3.1 DHCPv6中继简介

3.1.1 应用环境

图3-1 DHCPv6中继应用组网图

DHCPv6客户端通常通过链路本地范围的组播地址与DHCPv6服务器通信，以获取IPv6地址和其他网络配置参数。如 图3-1 所示，服务器和客户端不在同一个链路范围内时，服务器和客户端无法直接通信，需要通过DHCPv6中继来转发报文。部署DHCPv6中继可以避免在每个链路范围内都部署DHCPv6服务器，既节省了成本，又便于进行集中管理。

3.1.2 DHCPv6中继的工作过程

图3-2 DHCPv6中继的工作过程

如图3-2 所示，以交互两个消息的快速分配过程为例，DHCPv6客户端通过DHCPv6中继，从DHCPv6服务器获取IPv6地址和其他网络配置参数的过程为：

(1) DHCPv6客户端向所有DHCPv6服务器和中继的组播地址FF02::1:2发送携带Rapid Commit选项的Solicit消息；

(2) DHCPv6中继接收到Solicit消息后，将其封装在Relay-forward报文的中继消息选项（Relay Message Option）中，并将Relay-forward报文发送给DHCPv6服务器；

(3) DHCPv6服务器从Relay-forward报文中解析出客户端的Solicit消息，为客户端选取IPv6地址和其他参数，构造Reply消息，将Reply消息封装在Relay-reply报文的中继消息选项中，并将Relay-reply报文发送给DHCPv6中继；

(4) DHCPv6中继从Relay-reply报文中解析出服务器的Reply消息，转发给DHCPv6客户端，以便DHCPv6客户端根据DHCPv6服务器分配的IPv6地址和其他参数进行网络配置。


3.2 配置DHCPv6中继

工作在DHCPv6中继模式的接口接收到DHCPv6客户端发来的报文后，将其封装在Relay-forward报文中，并发送给指定的DHCPv6服务器，由DHCPv6服务器为客户端分配IPv6地址和其他网络配置参数。

3.2.1 配置准备

配置DHCPv6中继之前，需要通过系统视图下的 ipv6 命令使能IPv6报文的转发功能。

3.2.2 配置步骤

表3-1 配置DHCPv6中继

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
配置接口工作在DHCPv6中继模式，并指定DHCPv6服务器的地址 | ipv6 dhcp relay server-address ipv6-address [ interface interface-type interface-number ] | 必选 缺省情况下，接口未工作在DHCPv6中继模式，也未指定任何DHCPv6服务器

l 通过多次执行 ipv6 dhcp relay server-address 命令可以指定多个DHCPv6服务器，一个接口下最多可以指定8个DHCPv6服务器。DHCPv6中继接收到DHCPv6客户端报文后，将其转发给所有的DHCPv6服务器。

l 如果指定的DHCPv6服务器地址为链路本地地址或链路范围的组播地址，则必须通过 ipv6 dhcp relay server-address 命令的 interface 参数指定出接口，否则报文可能会无法到达服务器。

l 通过 undo ipv6 dhcp relay server-address 命令删除接口上指定的全部DHCPv6服务器后，该接口不再工作在DHCPv6中继模式。

l 一个接口不能同时作为DHCPv6中继和DHCPv6服务器。

l 建议不要在一个接口上同时配置DHCPv6中继和DHCPv6客户端功能。


3.3 DHCPv6中继显示和维护

在完成上述配置后，在任意视图下执行 display 命令可以显示配置后DHCPv6中继的运行情况，通过查看显示信息验证配置的效果。

在用户视图下执行 reset 命令可以清除DHCPv6中继的统计信息。

表3-2 DHCPv6中继显示和维护

操作 | 命令
显示本设备DUID | display ipv6 dhcp duid [ | { begin | exclude | include } regular-expression ]
显示DHCPv6中继指定的DHCPv6服务器地址信息 | display ipv6 dhcp relay server-address { all | interface interface-type interface-number } [ | { begin | exclude | include } regular-expression ]
显示DHCPv6中继的报文统计信息 | display ipv6 dhcp relay statistics [ | { begin | exclude | include } regular-expression ]
清除DHCPv6中继的报文统计信息 | reset ipv6 dhcp relay statistics


3.4 DHCPv6中继典型配置举例

1. 组网需求

l DHCPv6客户端所在网络地址为1::/64，DHCPv6服务器的地址为2::2/64。客户端和服务器不在同一个链路，需要通过DHCPv6中继转发报文。

l Switch A作为DHCPv6中继，为客户端和服务器转发报文。

l Switch A同时作为1::/64网络的网关设备，通过RA消息中的M标志位和O标志位指定该网络中的主机通过DHCPv6获取IPv6地址和其他网络配置参数。

2. 组网图

图3-3 DHCPv6中继组网图

3. 配置步骤

(1) 配置Switch A作为DHCPv6中继

# 使能IPv6报文转发功能。

<SwitchA> system-view

[SwitchA] ipv6

# 配置VLAN接口2和VLAN接口3的IPv6地址。

[SwitchA] interface vlan-interface 2

[SwitchA-Vlan-interface2] ipv6 address 2::1 64

[SwitchA-Vlan-interface2] quit

[SwitchA] interface vlan-interface 3

[SwitchA-Vlan-interface3] ipv6 address 1::1 64

# 配置VLAN接口3工作在DHCPv6中继模式，并指定DHCPv6服务器地址。

[SwitchA-Vlan-interface3] ipv6 dhcp relay server-address 2::2

(2) 配置Switch A作为网关

# 配置发布RA消息，并配置M和O标志位。

[SwitchA-Vlan-interface3] undo ipv6 nd ra halt

[SwitchA-Vlan-interface3] ipv6 nd autoconfig managed-address-flag

[SwitchA-Vlan-interface3] ipv6 nd autoconfig other-flag

(3) 验证配置结果

# 完成上述配置后，查看DHCPv6服务器的地址信息。

[SwitchA-Vlan-interface3] display ipv6 dhcp relay server-address all

Interface: Vlan3

Server address(es) Output Interface

2::2

# 查看DHCPv6中继转发报文的统计信息。

[SwitchA-Vlan-interface3] display ipv6 dhcp relay statistics

Packets dropped : 0

Error : 0

Excess of rate limit : 0

Packets received : 14

SOLICIT : 0

REQUEST : 0

CONFIRM : 0

RENEW : 0

REBIND : 0

RELEASE : 0

DECLINE : 0

INFORMATION-REQUEST : 7

RELAY-FORWARD : 0

RELAY-REPLY : 7

Packets sent : 14

ADVERTISE : 0

RECONFIGURE : 0

REPLY : 7

RELAY-FORWARD : 7

RELAY-REPLY : 0


4 DHCPv6客户端配置

相关链接

  • 4.1 DHCPv6客户端简介
  • 4.2 配置DHCPv6客户端
  • 4.3 DHCPv6客户端显示和维护
  • 4.4 DHCPv6无状态配置典型配置举例
父主题： 09-DHCPv6配置


4.1 DHCPv6客户端简介

设备作为DHCPv6客户端时，只支持DHCPv6无状态配置，即只能通过DHCPv6获取除地址/前缀外的其他网络配置参数，不能获取IPv6地址和前缀。

DHCPv6客户端通过地址无状态自动配置功能成功获取IPv6地址后，如果接收到的RA报文中M标志位为0、O标志位为1，则设备会自动启动DHCPv6无状态配置功能，以获取除地址/前缀外的其他网络配置参数。


4.2 配置DHCPv6客户端

4.2.1 配置准备

为了使客户端能够通过DHCPv6无状态配置成功获取网络配置参数，需要确保DHCPv6服务器可用。

4.2.2 配置步骤

表4-1 配置DHCPv6客户端

操作 | 命令 | 说明
进入系统视图 | system-view | -
使能IPv6报文转发功能 | ipv6 | 必选
进入接口视图 | interface interface-type interface-number | -
使能IPv6地址无状态自动配置功能 | ipv6 address auto | 必选

l ipv6 address auto 命令的详细介绍请参见“三层技术-IP业务命令参考”中的“IPv6基础”。

l 建议不要在一个接口上同时配置DHCPv6客户端和DHCPv6服务器功能，也不要在一个接口上同时配置DHCPv6客户端和DHCPv6中继功能。


4.3 DHCPv6客户端显示和维护

在完成上述配置后，在任意视图下执行 display 命令可以显示配置后DHCPv6客户端的运行情况，通过查看显示信息验证配置的效果。

在用户视图下执行 reset 命令可以清除DHCPv6客户端的统计信息。

表4-2 DHCPv6客户端显示和维护

操作 | 命令
显示DHCPv6客户端的信息 | display ipv6 dhcp client [ interface interface-type interface-number ] [ | { begin | exclude | include } regular-expression ]
显示DHCPv6客户端的统计信息 | display ipv6 dhcp client statistics [ interface interface-type interface-number ] [ | { begin | exclude | include } regular-expression ]
显示本设备DUID | display ipv6 dhcp duid [ | { begin | exclude | include } regular-expression ]
清除DHCPv6客户端的统计信息 | reset ipv6 dhcp client statistics [ interface interface-type interface-number ]


4.4 DHCPv6无状态配置典型配置举例

1. 组网需求

l Switch A通过DHCPv6无状态配置获取域名服务器、域名等信息；

l Switch B作为网关，周期性发布RA消息。

2. 组网图

图4-1 DHCPv6无状态配置组网图

3. 配置步骤

(1) 配置网关Switch B

# 使能IPv6报文转发功能。

<SwitchB> system-view

[SwitchB] ipv6

# 配置VLAN接口2的IPv6地址。

[SwitchB] interface vlan-interface 2

[SwitchB-Vlan-interface2] ipv6 address 1::1 64

# 配置RA消息中O标志位为1。

[SwitchB-Vlan-interface2] ipv6 nd autoconfig other-flag

# 配置允许发送RA消息。

[SwitchB-Vlan-interface2] undo ipv6 nd ra halt

(2) 配置DHCPv6客户端Switch A

# 使能IPv6报文转发功能。

<SwitchA> system-view

[SwitchA] ipv6

# 在VLAN接口2上使能IPv6地址无状态自动配置功能。

[SwitchA] interface vlan-interface 2

[SwitchA-Vlan-interface2] ipv6 address auto

执行此命令后，如果VLAN接口2下没有配置地址，Switch A会自动生成本地链路地址，并主动发送RS（Router Solicitation，路由器请求）报文，请求网关Switch B立即回应RA报文。

4. 验证配置结果

如果收到的RA报文中M标志位为0、O标志位为1，Switch A就会启动DHCPv6客户端无状态配置。

# 可以通过 display ipv6 dhcp client 命令查看当前客户端的配置信息，如果从服务器成功获取了配置，将会有类似的显示信息。

[SwitchA-Vlan-interface2] display ipv6 dhcp client interface vlan-interface 2

Vlan-interface2 is in stateless DHCPv6 client mode

State is OPEN

Preferred Server:

Reachable via address : FE80::213:7FFF:FEF6:C818

DUID : 0003000100137ff6c818

DNS servers : 1:2:3::5

1:2:4::7

Domain names : abc.com

Sysname.com

# 可以通过 display ipv6 dhcp client statistics 命令查看当前客户端的统计信息。

[SwitchA-Vlan-interface2] display ipv6 dhcp client statistics

Interface : Vlan-interface2

Packets Received : 1

Reply : 1

Advertise : 0

Reconfigure : 0

Invalid : 0

Packets Sent : 5

Solicit : 0

Request : 0

Confirm : 0

Renew : 0

Rebind : 0

Information-request : 5

Release : 0

Decline : 0


5 DHCPv6 Snooping配置

l 设备只有位于DHCPv6客户端与DHCPv6服务器之间，或DHCPv6客户端与DHCPv6中继之间时，DHCPv6 Snooping功能配置后才能正常工作；设备位于DHCPv6服务器与DHCPv6中继之间时，DHCPv6 Snooping功能配置后不能正常工作。

l DHCPv6 Snooping中对于接口的相关配置，目前只能在二层以太网端口或二层聚合接口上进行。关于聚合接口的详细介绍，请参见“二层技术-以太网交换配置指导”中的“以太网链路聚合”。

相关链接

  • 5.1 DHCPv6 Snooping简介
  • 5.2 使能DHCPv6 Snooping
  • 5.3 配置DHCPv6 Snooping信任端口
  • 5.4 配置接口动态学习DHCPv6 Snooping表项的最大数目
  • 5.5 DHCPv6 Snooping显示和维护
  • 5.6 DHCPv6 Snooping典型配置举例
父主题： 09-DHCPv6配置


5.1 DHCPv6 Snooping简介

DHCPv6 Snooping是DHCPv6的一种安全特性，具有如下功能：

l 保证客户端从合法的服务器获取IPv6地址。

l 记录DHCPv6客户端IPv6地址与MAC地址的对应关系。

1. 保证客户端从合法的服务器获取IPv6地址

网络中如果存在私自架设的伪DHCPv6服务器，则可能导致DHCPv6客户端获取错误的IPv6地址和网络配置参数，无法正常通信。为了使DHCPv6客户端能通过合法的DHCPv6服务器获取IPv6地址，DHCPv6 Snooping安全机制允许将端口设置为信任端口（Trusted Port）和不信任端口（Untrusted Port）：

l 信任端口正常转发接收到的DHCPv6报文。

l 不信任端口接收到DHCPv6服务器发送的应答报文后，丢弃该报文。

图5-1 信任端口和非信任端口

连接DHCPv6服务器、DHCPv6中继或其他DHCPv6 Snooping设备的端口需要设置为信任端口，其他端口设置为不信任端口，从而保证DHCPv6客户端只能从合法的DHCPv6服务器获取地址，私自架设的伪DHCPv6服务器无法为DHCPv6客户端分配地址。如图5-1 中，将连接DHCPv6服务器的端口设置为信任端口，其他端口设置为非信任端口。

2. 记录DHCPv6客户端IPv6地址与MAC地址的对应关系

DHCPv6 Snooping通过监听DHCPv6报文，记录DHCPv6 Snooping表项，其中包括客户端的MAC地址、获取到的IPv6地址、与DHCPv6客户端连接的端口及该端口所属的VLAN等信息。网络管理员可以通过 display ipv6 dhcp snooping user-binding 命令查看客户端获取的IPv6地址信息，以便了解用户上网时所用的IPv6地址，并对其进行管理和监控。


5.2 使能DHCPv6 Snooping

使能DHCPv6 Snooping功能，必须首先在系统视图下全局使能DHCPv6 Snooping功能。全局使能DHCPv6 Snooping功能，并正确地配置信任端口和非信任端口后，可以保证客户端从合法的服务器获取IPv6地址。但是，此时不会记录DHCPv6 Snooping表项。

如果需要记录DHCPv6 Snooping表项，则需要在全局使能DHCPv6 Snooping功能的基础上，在VLAN视图下使能VLAN内的DHCPv6 Snooping功能。使能VLAN内的DHCPv6 Snooping功能，还可以实现DHCPv6 Snooping设备接收到该VLAN内客户端发送的请求报文后，只通过该VLAN内的信任端口转发该请求报文，不会通过其他非信任端口转发请求报文，以减轻网络负担。

表5-1 使能DHCPv6 Snooping

操作 | 命令 | 说明
进入系统视图 | system-view | -
全局使能DHCPv6 Snooping功能 | ipv6 dhcp snooping enable | 必选 缺省情况下，DHCPv6 Snooping功能处于关闭状态
进入VLAN视图 | vlan vlan-id | -
在VLAN内使能DHCPv6 Snooping功能 | ipv6 dhcp snooping vlan enable | 可选 缺省情况下，VLAN内DHCPv6 Snooping功能处于关闭状态


5.3 配置DHCPv6 Snooping信任端口

DHCPv6 Snooping将端口分为两种：

l 信任端口：正常转发接收到的DHCPv6报文。

l 不信任端口：接收到DHCPv6服务器发送的应答报文后，丢弃该报文。

使能VLAN内的DHCPv6 Snooping功能，DHCPv6 Snooping设备接收到该VLAN内客户端发送的请求报文后，只通过该VLAN内的信任端口转发该请求报文，不会通过其他非信任端口转发请求报文，以减轻网络负担。

表5-2 配置DHCPv6 Snooping信任端口

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
配置端口为信任端口 | ipv6 dhcp snooping trust | 必选 缺省情况下，全局使能DHCPv6 Snooping功能后，设备的所有端口均为不信任端口

l 为了使DHCPv6客户端能从合法的DHCPv6服务器获取IPv6地址，必须将与合法DHCPv6服务器相连的端口设置为信任端口，且设置的信任端口和与DHCPv6客户端相连的端口必须在同一个VLAN内。

l 如果二层以太网端口加入了聚合组，则加入聚合组之前和加入聚合组之后在该接口上进行的DHCPv6 Snooping相关配置不会生效；该接口退出聚合组后，DHCPv6 Snooping的配置才会生效。


5.4 配置接口动态学习DHCPv6 Snooping表项的最大数目

通过本配置可以限制接口动态学习DHCPv6 Snooping表项的最大数目，以防止接口学习到大量DHCPv6 Snooping表项，占用过多地系统资源。

表5-3 配置接口动态学习DHCPv6 Snooping表项的最大数目

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
配置接口动态学习DHCPv6 Snooping表项的最大数目 | ipv6 dhcp snooping max-learning-num number | 可选 缺省情况下，不限制接口动态学习DHCPv6 Snooping表项的数目


5.5 DHCPv6 Snooping显示和维护

在完成上述配置后，在任意视图下执行 display 命令可以显示DHCPv6 Snooping的配置情况，通过查看显示信息验证配置的效果。

在用户视图下执行 reset 命令可以清除DHCPv6 Snooping表项信息。

表5-4 DHCPv6 Snooping显示和维护

操作 | 命令
显示DHCPv6 Snooping信任端口信息 | display ipv6 dhcp snooping trust [ | { begin | exclude | include } regular-expression ]
显示DHCPv6 Snooping表项信息 | display ipv6 dhcp snooping user-binding { ipv6-address | dynamic } [ | { begin | exclude | include } regular-expression ]
清除DHCPv6 Snooping表项 | reset ipv6 dhcp snooping user-binding { ipv6-address | dynamic }


5.6 DHCPv6 Snooping典型配置举例

5.6.1 组网需求

Switch通过以太网端口Ethernet1/0/1连接到DHCPv6服务器，通过以太网端口Ethernet1/0/2、Ethernet1/0/3连接到DHCPv6客户端。Ethernet1/0/1、Ethernet1/0/2和Ethernet1/0/3都属于VLAN 2。

要求：

l 与DHCPv6服务器相连的端口可以转发DHCPv6服务器的响应报文，而其他端口不转发DHCPv6服务器的响应报文。

l 记录DHCPv6客户端IPv6地址及MAC地址的绑定关系。

5.6.2 组网图

图5-2 DHCPv6 Snooping组网示意图

5.6.3 配置步骤

# 全局使能DHCPv6 Snooping功能。

<Switch> system-view

[Switch] ipv6 dhcp snooping enable

# 将端口Ethernet1/0/1、Ethernet1/0/2和Ethernet1/0/3加入VLAN 2。

[Switch] vlan 2

[Switch-vlan2] port Ethernet 1/0/1 Ethernet 1/0/2 Ethernet 1/0/3

# 在VLAN 2内使能DHCPv6 Snooping功能。

[Switch-vlan2] ipv6 dhcp snooping vlan enable

[Switch] quit

# 配置Ethernet1/0/1端口为信任端口。

[Switch] interface Ethernet 1/0/1

[Switch-Ethernet1/0/1] ipv6 dhcp snooping trust

# 验证配置结果。

配置完成后，通过Ethernet1/0/2连接DHCPv6客户端、Ethernet1/0/1连接DHCPv6服务器，则可以发现DHCPv6客户端能够从DHCPv6服务器获取IPv6地址。通过 display ipv6 dhcp snooping user-binding 命令可以查看生成的DHCPv6 Snooping表项。如果Ethernet1/0/3连接私自架设的伪DHCPv6服务器，则该服务器无法为DHCPv6客户端分配IPv6地址。


1 IPv6域名解析配置

相关链接

  • 1.1 IPv6域名解析简介
  • 1.2 配置IPv6 DNS client
  • 1.3 IPv6域名解析显示和维护
  • 1.4 IPv6域名解析典型配置举例
父主题： 10-IPv6域名解析配置


1.1 IPv6域名解析简介

IPv6网络中，DNS客户端通过IPv6域名解析功能实现域名与IPv6地址的转换。IPv6 DNS与IPv4 DNS相同，分为静态域名解析和动态域名解析。两种域名解析的作用和实现方式也与IPv4 DNS相同。具体描述请参见“三层技术-IP业务配置指导”中的“IPv4域名解析”。IPv6 DNS与IPv4 DNS的区别仅在于IPv6 DNS将域名转换为IPv6地址，而非IPv4地址。


1.2 配置IPv6 DNS client

1.2.1 配置静态域名解析

配置静态域名解析就是配置将主机名与IPv6地址相对应。当使用Telnet等应用时，可以直接使用主机名，由系统解析为IPv6地址。

表1-1 配置静态域名解析

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置主机名和对应的IPv6地址 | ipv6 host hostname ipv6-address | 必选 缺省情况下，静态域名解析表中没有主机名及IPv6地址的对应关系

l 每个主机名只能对应一个IPv6地址，当对同一主机名进行多次配置时，最后配置的IPv6地址有效。

l 设备上最多可配置50条IPv6静态域名解析信息。

1.2.2 配置动态域名解析

如果用户需要使用动态域名解析功能，可以使用下面的命令使能动态域名解析功能，并配置域名服务器，这样才能将查询请求报文发送到正确的服务器进行解析。

用户还可以配置域名后缀，以便实现只输入域名的部分字段，而由系统自动加上预先设置的后缀进行解析。

表1-2 配置动态域名解析

操作 | 命令 | 说明
进入系统视图 | system-view | -
使能动态域名解析功能 | dns resolve | 必选 缺省情况下，动态域名解析功能处于关闭状态
配置域名服务器的IPv6地址 | dns server ipv6 ipv6-address [ interface-type interface-number ] | 必选 缺省情况下，没有配置域名服务器的IPv6地址 当域名服务器的IPv6地址为链路本地地址时，需要指定参数 interface-type 和 interface-number
配置域名后缀 | dns domain domain-name | 可选 缺省情况下，没有配置域名后缀，即只根据用户输入的域名信息进行解析

l dns resolve 和 dns domain 命令的详细介绍，请参见“三层技术-IP业务命令参考”中的“IPv4域名解析”。

l 包括IPv4域名服务器在内，设备上最多可配置6个域名服务器。

l 设备上最多可以配置10个域名后缀。


1.3 IPv6域名解析显示和维护

在完成上述配置后，在任意视图下执行 display 命令可以显示IPv6域名解析配置后的运行情况，通过查看显示信息验证配置的效果。

在用户视图下，执行 reset 命令可以清除动态域名缓存信息。

表1-3 域名解析显示和维护

操作 | 命令
显示IPv6静态域名解析表 | display ipv6 host [ | { begin | exclude | include } regular-expression ]
显示IPv6域名服务器信息 | display dns ipv6 server [ dynamic ] [ | { begin | exclude | include } regular-expression ]
显示域名后缀列表信息 | display dns domain [ dynamic ] [ | { begin | exclude | include } regular-expression ]
显示IPv6动态域名缓存信息 | display dns host ipv6 [ | { begin | exclude | include } regular-expression ]
清除IPv6动态域名缓存信息 | reset dns host ipv6

display dns domain、display dns host ipv6 和 reset dns host ipv6 命令的详细介绍，请参见“三层技术-IP业务命令参考”中的“IPv4域名解析”。


1.4 IPv6域名解析典型配置举例

1.4.1 静态域名解析配置举例

1. 组网需求

为了避免记忆复杂的IPv6地址，Device希望通过便于记忆的主机名访问某一主机。在Device上手工配置IPv6地址对应的主机名，利用静态域名解析功能，就可以实现通过主机名访问该主机。

在本例中，Device访问的主机IPv6地址为1::2，主机名为host.com。

2. 组网图

图1-1 静态域名解析配置组网图

3. 配置步骤

# 配置主机名host.com对应的IPv6地址为1::2。

<Device> system-view

[Device] ipv6 host host.com 1::2

# 使能IPv6报文转发功能。

[Device] ipv6

# 执行ping ipv6 host.com命令，Device通过静态域名解析可以解析到host.com对应的IPv6地址为1::2。

[Device] ping ipv6 host.com

PING host.com (1::2):

56 data bytes, press CTRL_C to break

Reply from 1::2

bytes=56 Sequence=1 hop limit=128 time = 3 ms

Reply from 1::2

bytes=56 Sequence=2 hop limit=128 time = 1 ms

Reply from 1::2

bytes=56 Sequence=3 hop limit=128 time = 1 ms

Reply from 1::2

bytes=56 Sequence=4 hop limit=128 time = 2 ms

Reply from 1::2

bytes=56 Sequence=5 hop limit=128 time = 2 ms

--- host.com ping statistics ---

5 packet(s) transmitted

5 packet(s) received

0.00% packet loss

round-trip min/avg/max = 1/1/3 ms

1.4.2 动态域名解析配置举例

1. 组网需求

为了避免记忆复杂的IPv6地址，Device希望通过便于记忆的域名访问某一主机。如果网络中存在域名服务器，则可以利用动态域名解析功能，实现通过域名访问主机。

在本例中：

l 域名服务器的IPv6地址是2::2/64，域名服务器上存在com域，且com域中包含域名“host”和IPv6地址1::1/64的对应关系。

l Device作为DNS客户端，使用动态域名解析功能，将域名解析为IP地址。

l Device上配置域名后缀com，以便简化访问主机时输入的域名，例如通过输入host即可访问域名为host.com、IPv6地址为1::1/64的主机Host。

2. 组网图

图1-2 动态域名解析组网图

3. 配置步骤

l 在开始下面的配置之前，假设设备与主机之间的路由可达，设备和主机都已经配置完毕，接口IPv6地址如图1-2 所示。

l 不同域名服务器的配置方法不同，下面仅以Windows Server 2003为例，说明域名服务器的配置方法。配置之前，需确保DNS服务器支持IPv6 DNS功能，以便处理IPv6域名解析报文；且DNS服务器的接口可以转发IPv6报文。

(1) 配置域名服务器

# 进入域名服务器配置界面。

在开始菜单中，选择[程序/管理工具/DNS]。

# 创建区域com。

如图1-3 所示，右键点击[正向查找区域]，选择[新建区域]，按照提示创建新的区域com。

图1-3 创建区域

# 添加域名和IPv6地址的映射。

如图1-4 所示，右键点击区域com。

图1-4 创建记录

选择[其他新记录]，弹出如图1-5 的对话框，选择资源记录类型为“IPv6主机（AAAA）”。

图1-5 选择资源记录类型

按照图1-6 输入域名host和IPv6地址1::1。点击<确定>按钮，添加域名和IPv6地址的映射。

图1-6 添加域名和IPv6地址的映射

(2) 配置DNS客户端Device

# 开启动态域名解析功能。

<Device> system-view

[Device] dns resolve

# 配置域名服务器的IPv6地址为2::2。

[Device] dns server ipv6 2::2

# 配置域名后缀com。

[Device] dns domain com

(3) 验证配置结果

# 在设备上执行ping ipv6 host命令，可以ping通主机，且对应的目的地址为1::1。

[Device] ping ipv6 host

Trying DNS resolve, press CTRL_C to break

Trying DNS server (2::2)

PING host.com (1::1):

56 data bytes, press CTRL_C to break

Reply from 1::1

bytes=56 Sequence=1 hop limit=126 time = 2 ms

Reply from 1::1

bytes=56 Sequence=2 hop limit=126 time = 1 ms

Reply from 1::1

bytes=56 Sequence=3 hop limit=126 time = 1 ms

Reply from 1::1

bytes=56 Sequence=4 hop limit=126 time = 1 ms

Reply from 1::1

bytes=56 Sequence=5 hop limit=126 time = 1 ms

--- host.com ping statistics ---

5 packet(s) transmitted

5 packet(s) received

0.00% packet loss

round-trip min/avg/max = 1/1/2 ms


1 隧道配置

三层以太网端口是指被配置为三层模式的以太网端口，有关以太网端口模式切换的操作，请参见“二层技术-以太网交换配置指导”中的“以太网端口配置”。

相关链接

  • 1.1 隧道概述
  • 1.2 隧道配置任务简介
  • 1.3 配置Tunnel接口
  • 1.4 配置IPv6手动隧道
  • 1.5 配置6to4隧道
  • 1.6 配置ISATAP隧道
  • 1.7 配置IPv4 over IPv4隧道
  • 1.8 配置IPv4 over IPv6手动隧道
  • 1.9 配置IPv6 over IPv6隧道
  • 1.10 隧道显示和维护
  • 1.11 常见错误配置举例
父主题： 11-隧道配置


1.1 隧道概述

隧道技术是一种封装技术，它利用一种网络协议来传输另一种网络协议，即一种网络协议将其他网络协议的数据报文封装在自己的报文中，然后在网络中传输。封装后的数据报文在网络中传输的路径，称为隧道。隧道是一条虚拟的点对点连接，隧道的两端需要对数据报文进行封装及解封装。隧道技术就是指包括数据封装、传输和解封装在内的全过程。

隧道技术可以：

l 作为过渡技术，实现IPv4和IPv6网络互通，如IPv6 over IPv4隧道技术。

l 创建VPN（Virtual Private Network，虚拟专用网络），保证通信的安全性，如IPv4 over IPv4隧道、IPv4/IPv6 over IPv6隧道、GRE（Generic Routing Encapsulation，通用路由封装）、DVPN（Dynamic Virtual Private Network，动态虚拟私有网络）和IPsec隧道技术。

l 实现流量工程，避免由于负载不均衡导致网络拥塞，如MPLS TE（Multiprotocol Label Switching Traffic Engineering，多协议标记交换流量工程）。

本文只介绍IPv6 over IPv4隧道、IPv4 over IPv4隧道、IPv4 over IPv6隧道和IPv6 over IPv6隧道。如无特殊说明，下文中的隧道技术均指此类隧道。

1.1.1 IPv6 over IPv4隧道

1. IPv6 over IPv4隧道原理

IPv6 over IPv4隧道是在IPv6数据报文前封装上IPv4的报文头，通过隧道使IPv6报文穿越IPv4网络，实现隔离的IPv6网络的互通，如图1-1 所示。IPv6 over IPv4隧道可以建立在主机—主机、主机—设备或设备—设备之间。隧道的终点可能是IPv6报文的最终目的地，也可能需要进一步转发。

IPv6 over IPv4隧道两端的设备必须支持IPv4/IPv6双协议栈。

图1-1 IPv6 over IPv4隧道原理图

IPv6 over IPv4隧道对报文的处理过程如下：

(1) IPv6网络中的设备发送IPv6报文，该报文到达隧道的源端设备Device A。

(2) Device A根据路由表判定该报文要通过隧道进行转发后，在IPv6报文前封装上IPv4的报文头，通过隧道的实际物理接口将报文转发出去。

(3) 封装报文通过隧道到达隧道目的端设备Device B，Device B判断该封装报文的目的地是本设备后，将对报文进行解封装。

(4) Device B根据解封装后的IPv6报文的目的地址转发该IPv6报文。如果目的地就是本设备，则将IPv6报文转给上层协议处理。

2. IPv6 over IPv4隧道模式

根据隧道终点的IPv4地址的获取方式不同，隧道分为“配置隧道”和“自动隧道”。

l 如果IPv6 over IPv4隧道的终点地址不能从IPv6报文的目的地址中自动获取，需要进行手工配置，这样的隧道称为“配置隧道”。

l 如果IPv6 over IPv4隧道的终点地址采用内嵌IPv4地址的特殊IPv6地址形式，则可以从IPv6报文的目的地址中自动获取隧道终点的IPv4地址，这样的隧道称为“自动隧道”。

如表1-1 所示，根据对IPv6报文的封装方式的不同，IPv6 over IPv4隧道分为以下几种模式。表1-1 中还列举了各隧道模式的关键配置参数。

表1-1 IPv6 over IPv4隧道模式

隧道类型 | 隧道模式 | 隧道源/目的地址 | 隧道接口地址
配置隧道 | IPv6手动隧道 | 源/目的地址为手动配置的IPv4地址 | IPv6地址
 | IPv6-over-IPv4 GRE隧道 | 源/目的地址为手动配置的IPv4地址 | IPv6地址
自动隧道 | 6to4隧道 | 源地址为手动配置的IPv4地址，目的地址不需配置 | 6to4地址，其格式为： 2002:IPv4-source-address::/48
 | ISATAP（Intra-Site Automatic Tunnel Addressing Protocol，站点内自动隧道寻址协议）隧道 | 源地址为手动配置的IPv4地址，目的地址不需配置 | ISATAP地址，其格式为： Prefix:0:5EFE:IPv4-source-address/64

(1) IPv6手动隧道

手动隧道是点到点之间的链路，一条链路就是一个单独的隧道。主要用于边缘路由器—边缘路由器或主机—边缘路由器之间定期安全通信的稳定连接，可实现与远端IPv6网络的连接。

(2) IPv6-over-IPv4 GRE隧道

使用标准的GRE协议对IPv6报文进行封装，使IPv6报文能通过隧道穿越IPv4网络。与IPv6手动隧道相似，IPv6-over-IPv4 GRE隧道也是点到点之间的链路，每条链路都是一条单独的隧道。IPv6-over-IPv4 GRE隧道主要用于边缘路由器—边缘路由器、主机—边缘路由器定期安全通信的稳定连接。相关配置请参见“三层技术-IP业务配置指导”中的“GRE”。

(3) 6to4隧道

6to4隧道是点到多点的自动隧道，主要用于将多个IPv6孤岛通过IPv4网络连接到IPv6网络。6to4隧道通过在IPv6报文的目的地址中嵌入IPv4地址，来实现自动获取隧道终点的IPv4地址。

6to4隧道采用特殊的6to4地址，其格式为：2002:abcd:efgh:子网号::接口ID/64，其中2002表示固定的IPv6地址前缀，abcd:efgh表示该6to4隧道对应的32位全球唯一的IPv4源地址，用16进制表示（如1.1.1.1可以表示为0101:0101）。2002:abcd:efgh之后的部分唯一标识了一个主机在6to4网络内的位置。通过这个嵌入的IPv4地址可以自动确定隧道的终点，使隧道的建立非常方便。

由于6to4地址的64位地址前缀中的16位子网号可以由用户自定义，前缀中的前48位已由固定数值、隧道起点或终点设备的IPv4地址确定，使IPv6报文通过隧道进行转发成为可能。

(4) ISATAP隧道

随着IPv6技术的推广，现有的IPv4网络中将会出现越来越多的IPv6主机，ISATAP隧道技术为这种应用提供了一个较好的解决方案。ISATAP隧道是点到多点的自动隧道技术，通过在IPv6报文的目的地址中嵌入的IPv4地址，可以自动获取隧道的终点。

使用ISATAP隧道时，IPv6报文的目的地址和隧道接口的IPv6地址都要采用特殊的ISATAP地址。ISATAP地址格式为：Prefix(64bit):0:5EFE:abcd:efgh。其中，64位的Prefix为任何合法的IPv6单播地址前缀，abcd:efgh表示32位IPv4源地址，用16进制表示（如1.1.1.1可以表示为0101:0101），该IPv4地址不要求全球唯一。通过这个嵌入的IPv4地址就可以自动建立隧道，完成IPv6报文的传送。

ISATAP隧道主要用于在IPv4网络中IPv6路由器—IPv6路由器、IPv6主机—IPv6路由器的连接。

图1-2 ISATAP隧道原理图

1.1.2 IPv4 over IPv4 隧道

1. IPv4 over IPv4隧道简介

IPv4 over IPv4隧道（RFC 1853）是对IP数据报进行封装，使得一个IPv4网络的数据能够在另一个IPv4网络中传输。

2. 报文封装及解封装

图1-3 IPv4 over IPv4隧道原理图

报文在隧道中传输经过封装与解封装两个过程，以上图为例说明这两个过程：

l 封装过程

Device A连接IPv4主机所在子网的接口收到IP数据报后，首先交由IP协议栈处理。IP协议栈根据IP报头中的目的地址来确定如何转发此包。如果报文的目的地址为与Device B相连的IPv4主机的地址，则将此报文发给Device A上连接Device B的Tunnel接口。

Tunnel接口收到此包后，进行IPv4 over IPv4的封装，封装完成后重新交给IP协议栈处理，IP协议栈根据添加的IP报头确定出接口。

l 解封装过程

解封装过程和封装的过程相反。从网络接口收到的IP报文被送到IP协议栈。IP协议栈检查接收到的IP报文头中的协议号。如果协议号为4（表示封装的报文为IPv4报文），则将此IP数据包发送到隧道模块进行解封装处理。解封装之后的IP报文将重新被送到IP协议栈进行处理。

1.1.3 IPv4 over IPv6隧道

1. IPv4 over IPv6隧道原理

随着IPv6网络的广泛部署，IPv6网络将逐渐取代IPv4网络，占据主导地位。尚未被IPv6网络取代的IPv4网络将形成孤岛，需要通过IPv6网络互通。IPv4 over IPv6隧道用来实现通过IPv6网络连接隔离的IPv4网络孤岛。

IPv4 over IPv6隧道是在IPv4报文上封装IPv6的报文头，通过隧道使IPv4报文穿越IPv6网络，从而实现隔离的IPv4网络通过IPv6网络互通。

图1-4 IPv4 over IPv6隧道原理图

IPv4报文在隧道中传输经过封装与解封装两个过程，以 图1-4 为例说明这两个过程：

(1) 封装过程

Device A连接IPv4网络的接口收到IPv4报文后，首先交由IPv4协议栈处理。IPv4协议栈根据IPv4报头中的目的地址来确定如何转发此包。如果报文的目的地址为与Device B相连的IPv4主机的地址，则将此报文发给Device A上连接Device B的Tunnel接口。

Tunnel接口收到此报文后添加IPv6报文头，封装完成后交给IPv6模块处理。IPv6协议模块根据IPv6报文头的目的地址重新确定如何转发此数据包。

(2) 解封装流程

解封装过程和封装的过程相反。从连接IPv6网络的接口接收到IPv6报文后，将其送到IPv6协议模块。IPv6协议模块检查IPv6报文封装的协议类型。若封装的协议为IPv4，则报文进入隧道处理模块进行解封装处理。解封装之后的IPv4报文被送往IPv4协议模块进行二次路由处理。

2. IPv4 over IPv6隧道模式

IPv4 over IPv6隧道分为以下几种模式：

(1) IPv4 over IPv6手动隧道

IPv4 over IPv6手动隧道需要手动配置隧道的源和目的IPv6地址，以便根据配置的地址在IPv4报文上封装IPv6报文头，使报文能通过隧道穿越IPv6网络。IPv4 over IPv6手动隧道是一种点到点的虚拟链路。

(2) IPv4-over-IPv6 GRE隧道

IPv4-over-IPv6 GRE隧道与IPv4 over IPv6手动隧道相似，也需要手动配置隧道的源和目的IPv6地址，也是点到点之间的链路。不同的是，IPv4 over IPv6手动隧道直接在IPv4报文上封装IPv6报文头，而IPv4-over-IPv6 GRE隧道使用标准的GRE协议对IPv4报文进行封装。

IPv4-over-IPv6 GRE隧道的封装和解封装过程与“ 1.1.3 1. IPv4 over IPv6隧道原理 ”中描述的过程有所不同，详细介绍请参见“三层技术-IP业务配置指导”中的“GRE”。

1.1.4 IPv6 over IPv6隧道

1. IPv6 over IPv6隧道简介

IPv6 over IPv6隧道（RFC 2473）是对IPv6数据报进行封装，使这些被封装的数据报能够在另一个IPv6网络中传输，封装后的数据报文即IPv6隧道报文。

2. 报文封装及解封装

图1-5 IPv6 over IPv6隧道原理图

IPv6报文在隧道中传输经过封装与解封装两个过程，以 图1-5 为例说明这两个过程：

l 封装过程

Device A连接网络A的接口收到IPv6报文后，首先交由IPv6协议模块处理，并确定如何转发此报文。若此报文的目的地址为与Device B相连的主机的地址，则将此报文发给Device A上连接Device B的Tunnel接口。

Tunnel口收到此报文后添加IPv6报文头，封装完成后交给IPv6模块处理。IPv6协议模块根据IPv6报文头的目的地址重新确定如何转发此报文。

l 解封装流程

解封装过程和封装的过程相反。从IPv6网络接口接收的报文被送到IPv6协议模块。IPv6协议模块检查IPv6报文封装的协议类型。若封装的协议为IPv6，则报文进入隧道处理模块进行解封装处理；解封装之后的报文被送往相应的协议模块进行二次路由处理。

GRE协议可以用来实现“IPv6 over IPv6隧道”的功能，相关配置请参见“三层技术-IP业务配置指导”中的“GRE”。

1.1.5 协议规范

与隧道技术相关的协议规范有：

l RFC 1853：IP in IP Tunneling

l RFC 2473：Generic Packet Tunneling in IPv6 Specification

l RFC 2893：Transition Mechanisms for IPv6 Hosts and Routers

l RFC 3056：Connection of IPv6 Domains via IPv4 Clouds

l RFC 4214：Intra-Site Automatic Tunnel Addressing Protocol (ISATAP)


1.2 隧道配置任务简介

配置任务 |  | 说明 | 详细配置
配置Tunnel接口 |  | 必选 | 1.3
配置IPv6 over IPv4隧道 | 配置IPv6手动隧道 | 根据组网情况，选择其一 | 1.4
 | 配置6to4隧道 |  | 1.5
 | 配置ISATAP隧道 |  | 1.6
配置IPv4 over IPv4隧道 |  |  | 1.7
配置IPv4 over IPv6手动隧道 |  |  | 1.8
配置IPv6 over IPv6隧道 |  |  | 1.9


1.3 配置Tunnel接口

隧道两端的设备上，需要创建虚拟的三层接口——Tunnel接口，以便隧道两端的设备利用隧道发送报文、识别并处理来自隧道的报文。

表1-3 配置Tunnel接口

配置步骤 | 命令 | 说明
进入系统视图 | system-view | -
创建Tunnel接口，并进入Tunnel接口视图 | interface tunnel number | 必选 缺省情况下，设备上无Tunnel接口
配置接口描述信息 | description text | 可选 缺省情况下，接口描述信息为“该接口的接口名 Interface”
指定转发当前接口流量的成员设备 | service slot slot-number | 可选 缺省情况下，没有指定转发当前接口流量的成员设备
指定Tunnel接口引用的业务环回组ID | service-loopback-group number | 必选 缺省情况下，隧道未引用任何业务环回组
配置MTU值 | mtu size | 可选 缺省情况下，Tunnel接口的MTU值显示为64000字节
配置Tunnel接口的带宽 | tunnel bandwidth bandwidth-value | 可选 缺省情况下，Tunnel接口的带宽为64kbps
恢复当前接口的缺省配置 | default | 可选
关闭Tunnel接口 | shutdown | 可选 缺省情况下，接口处于开启状态

l 对于交换机，封装后的报文不能根据目的地址和路由表进行第二次三层转发，需要将封装后的报文发送给业务环回口，由业务环回口将报文回送给转发模块后，再进行三层转发。因此，需要指定隧道接口引用的业务环回组，以实现隧道报文的接收和发送。隧道接口引用的业务环回组必须已创建，否则隧道接口状态不会up，隧道无法通讯。关于业务环回组的创建和配置，请参见“二层技术-以太网交换配置指导”中的“业务环回组”。

l 目前，通过 tunnel bandwidth 命令配置的Tunnel接口带宽只用于动态路由协议计算隧道所在路径的cost值，不会影响接口的实际带宽。建议根据报文实际出接口的带宽值设置Tunnel接口带宽。


1.4 配置IPv6手动隧道

1.4.1 配置准备

设备上存在已经配置IP地址、能够进行正常通讯的接口（如VLAN接，Loopback接口等），该接口将作为Tunnel接口的源接口。

1.4.2 配置IPv6手动隧道

表1-4 配置IPv6手动隧道

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
使能IPv6报文转发功能 |  | ipv6 | 必选 缺省情况下，关闭IPv6报文转发功能
进入Tunnel接口视图 |  | interface tunnel number | -
设置Tunnel接口的IPv6地址 | 配置IPv6全球单播地址或站点本地地址 | ipv6 address { ipv6-address prefix-length | ipv6-address/prefix-length } | 二者必选其一 缺省情况下，Tunnel接口上没有设置IPv6全球单播地址或站点本地地址
 |  | ipv6 address ipv6-address/prefix-length eui-64
 | 配置IPv6链路本地地址 | ipv6 address auto link-local | 可选 缺省情况下，当接口配置了IPv6全球单播地址或站点本地地址后，会自动生成链路本地地址
 |  | ipv6 address ipv6-address link-local
配置隧道模式为IPv6手动隧道 |  | tunnel-protocol ipv6-ipv4 | 必选 缺省情况下，为GRE over IPv4隧道模式 在隧道的两端应配置相同的隧道模式，否则可能造成报文传输失败
设置Tunnel接口的源端地址或接口 |  | source { ip-address | interface-type interface-number } | 必选 缺省情况下，Tunnel接口上没有设置源端地址和接口
设置Tunnel接口的目的端地址 |  | destination ip-address | 必选 缺省情况下，Tunnel接口上没有设置目的端地址
退回系统视图 |  | quit | -
配置丢弃含有IPv4兼容IPv6地址的IPv6报文 |  | tunnel discard ipv4-compatible-packet | 可选 缺省情况下，不会丢弃含有IPv4兼容IPv6地址的IPv6报文

l 以上各项Tunnel接口下进行的功能特性配置，在删除Tunnel接口后，该接口上的所有配置也将被删除。

l 如果封装前IPv6报文的目的IPv6地址与Tunnel接口的IPv6地址不在同一个网段，则必须配置通过Tunnel接口到达目的IPv6地址的转发路由，以便需要进行封装的报文能正常转发。用户可以配置静态路由，指定到达目的IPv6地址的路由出接口为本端Tunnel接口或下一跳为对端Tunnel接口地址。用户也可以配置动态路由，在Tunnel接口使能动态路由协议。在隧道的两端都要进行此项配置，配置的详细情况请参见“三层技术-IP路由配置指导”中的“IPv6静态路由”或其他路由协议配置。

1.4.3 配置举例

1. 组网需求

如图1-6 所示，两个IPv6网络分别通过Switch A和Switch B与IPv4网络连接，要求在Switch A和Switch B之间建立IPv6 over IPv4隧道，使两个IPv6网络可以互通。如果隧道终点的IPv4地址不能从IPv6报文的目的地址中自动获取，则需要配置IPv6手动隧道。

2. 组网图

图1-6 IPv6手动隧道组网图

3. 配置步骤

在开始下面的配置之前，请确保Switch A和Switch B上已经创建相应的VLAN接口，且两者之间IPv4报文路由可达。

(1) 配置Switch A

# 使能IPv6转发功能。

<SwitchA> system-view

[SwitchA] ipv6

# 配置接口Vlan-interface100的地址。

[SwitchA] interface vlan-interface 100

[SwitchA-Vlan-interface100] ip address 192.168.100.1 255.255.255.0

[SwitchA-Vlan-interface100] quit

# 配置接口Vlan-interface101的IPv6地址。

[SwitchA] interface vlan-interface 101

[SwitchA-Vlan-interface101] ipv6 address 3002::1 64

[SwitchA-Vlan-interface101] quit

# 创建业务环回组1，并配置服务类型为tunnel。

[SwitchA] service-loopback group 1 type tunnel

# 将接口Ethernet1/0/3加入业务环回组1，并在该端口上关闭STP、NDP和LLDP功能。

[SwitchA] interface Ethernet 1/0/3

[SwitchA-Ethernet1/0/3] undo stp enable

[SwitchA-Ethernet1/0/3] undo ndp enable

[SwitchA-Ethernet1/0/3] undo lldp enable

[SwitchA-Ethernet1/0/3] port service-loopback group 1

[SwitchA-Ethernet1/0/3] quit

# 配置手动隧道。

[SwitchA] interface tunnel 0

[SwitchA-Tunnel0] ipv6 address 3001::1/64

[SwitchA-Tunnel0] source vlan-interface 100

[SwitchA-Tunnel0] destination 192.168.50.1

[SwitchA-Tunnel0] tunnel-protocol ipv6-ipv4

# 在Tunnel接口视图下指定隧道引用业务环回组1。

[SwitchA-Tunnel0] service-loopback-group 1

[SwitchA-Tunnel0] quit

# 配置从Switch A经过Tunnel0接口到Group 2的静态路由。

[SwitchA] ipv6 route-static 3003:: 64 tunnel 0

(2) 配置Switch B

# 使能IPv6转发功能。

<SwitchB> system-view

[SwitchB] ipv6

# 配置接口Vlan-interface100的地址。

[SwitchB] interface vlan-interface 100

[SwitchB-Vlan-interface100] ip address 192.168.50.1 255.255.255.0

[SwitchB-Vlan-interface100] quit

# 配置接口Vlan-interface101的IPv6地址。

[SwitchB] interface vlan-interface 101

[SwitchB-Vlan-interface101] ipv6 address 3003::1 64

[SwitchB-Vlan-interface101] quit

# 创建业务环回组1，并配置服务类型为tunnel。

[SwitchB] service-loopback group 1 type tunnel

# 将接口Ethernet1/0/3加入业务环回组1，并在该端口上关闭STP、NDP和LLDP功能。

[SwitchB] interface Ethernet 1/0/3

[SwitchB-Ethernet1/0/3] undo stp enable

[SwitchB-Ethernet1/0/3] undo ndp enable

[SwitchB-Ethernet1/0/3] undo lldp enable

[SwitchB-Ethernet1/0/3] port service-loopback group 1

[SwitchB-Ethernet1/0/3] quit

# 配置手动隧道。

[SwitchB] interface tunnel 0

[SwitchB-Tunnel0] ipv6 address 3001::2/64

[SwitchB-Tunnel0] source vlan-interface 100

[SwitchB-Tunnel0] destination 192.168.100.1

[SwitchB-Tunnel0] tunnel-protocol ipv6-ipv4

# 在Tunnel接口视图下指定隧道引用业务环回组1。

[SwitchB-Tunnel0] service-loopback-group 1

[SwitchB-Tunnel0] quit

# 配置从Switch B经过Tunnel0接口到Group 1的静态路由。

[SwitchB] ipv6 route-static 3002:: 64 tunnel 0

4. 验证配置结果

完成以上配置之后，分别查看Switch A和Switch B的Tunnel接口状态如下：

[SwitchA] display ipv6 interface tunnel 0

Tunnel0 current state :UP

Line protocol current state :UP

IPv6 is enabled, link-local address is FE80::C0A8:6401

Global unicast address(es):

3001::1, subnet is 3001::/64

Joined group address(es):

FF02::1:FF00:0

FF02::1:FF00:1

FF02::1:FFA8:6401

FF02::2

FF02::1

MTU is 1480 bytes

ND reachable time is 30000 milliseconds

ND retransmit interval is 1000 milliseconds

Hosts use stateless autoconfig for addresses

IPv6 Packet statistics:

InReceives: 55

……（略）

[SwitchB] display ipv6 interface tunnel 0

Tunnel0 current state :UP

Line protocol current state :UP

IPv6 is enabled, link-local address is FE80::C0A8:3201

Global unicast address(es):

3001::2, subnet is 3001::/64

Joined group address(es):

FF02::1:FF00:0

FF02::1:FF00:1

FF02::1:FFA8:3201

FF02::2

FF02::1

MTU is 1480 bytes

ND reachable time is 30000 milliseconds

ND retransmit interval is 1000 milliseconds

Hosts use stateless autoconfig for addresses

IPv6 Packet statistics:

InReceives: 55

……（略）

# 从Switch A上可以Ping通对端的Vlan-int101接口的IPv6地址：

[SwitchA] ping ipv6 3003::1

PING 3003::1 : 56 data bytes, press CTRL_C to break

Reply from 3003::1

bytes=56 Sequence=1 hop limit=64 time = 1 ms

Reply from 3003::1

bytes=56 Sequence=2 hop limit=64 time = 1 ms

Reply from 3003::1

bytes=56 Sequence=3 hop limit=64 time = 1 ms

Reply from 3003::1

bytes=56 Sequence=4 hop limit=64 time = 1 ms

Reply from 3003::1

bytes=56 Sequence=5 hop limit=64 time = 1 ms

--- 3003::1 ping statistics ---

5 packet(s) transmitted

5 packet(s) received

0.00% packet loss

round-trip min/avg/max = 1/1/1 ms


1.5 配置6to4隧道

1.5.1 配置准备

设备上存在已经配置IP地址、能够进行正常通讯的接口（如VLAN接口，Loopback接口等），该接口将作为Tunnel接口的源接口。

1.5.2 配置6to4隧道

表1-5 配置6to4隧道

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
使能IPv6报文转发功能 |  | ipv6 | 必选 缺省情况下，关闭IPv6报文转发功能
进入Tunnel接口视图 |  | interface tunnel number | -
设置Tunnel接口的IPv6地址 | 配置IPv6全球单播地址或站点本地地址 | ipv6 address { ipv6-address prefix-length | ipv6-address/prefix-length } | 二者必选其一 缺省情况下，Tunnel接口上没有设置IPv6全球单播地址或站点本地地址
 |  | ipv6 address ipv6-address/prefix-length eui-64
 | 配置IPv6链路本地地址 | ipv6 address auto link-local | 可选 缺省情况下，当接口配置了IPv6全球单播地址或站点本地地址后，会自动生成链路本地地址
 |  | ipv6 address ipv6-address link-local
配置隧道模式为6to4隧道 |  | tunnel-protocol ipv6-ipv4 6to4 | 必选 缺省情况下，为GRE over IPv4隧道模式 在隧道的两端应配置相同的隧道模式，否则可能造成报文传输失败
设置Tunnel接口的源端地址或接口 |  | source { ip-address | interface-type interface-number } | 必选 缺省情况下，Tunnel接口上没有设置源端地址和接口
退回系统视图 |  | quit | -
配置丢弃含有IPv4兼容IPv6地址的IPv6报文 |  | tunnel discard ipv4-compatible-packet | 可选 缺省情况下，不会丢弃含有IPv4兼容IPv6地址的IPv6报文

l 6to4隧道不需要配置目的地址，因为隧道的目的地址可以通过6to4 IPv6地址中嵌入的IPv4地址自动获得。

l 如果封装前IPv6报文的目的IPv6地址与Tunnel接口的IPv6地址不在同一个网段，则必须配置通过Tunnel接口到达目的IPv6地址的转发路由，以便需要进行封装的报文能正常转发。对于自动隧道，用户只能配置静态路由，指定到达目的IPv6地址的路由出接口为本端Tunnel接口或下一跳为对端Tunnel接口地址，不支持动态路由。在隧道的两端都要进行转发路由的配置，配置的详细情况请参见“三层技术-IP路由配置指导”中的“IPv6静态路由”。

l 对于自动隧道，使用同种封装协议的Tunnel接口不能同时配置完全相同的源地址。

1.5.3 配置6to4隧道举例

1. 组网需求

如图1-7 所示，两个6to4网络通过网络边缘6to4 switch（Switch A和Switch B）与IPv4网络相连。在Switch A和Switch B之间建立6to4隧道，实现6to4网络中的主机Host A和Host B之间的互通。

2. 组网图

图1-7 6to4隧道组网图

3. 配置思路

为了实现6to4网络之间的互通，除了配置6to4隧道外，还需要为6to4网络内的主机及6to4 switch配置6to4地址。

l Switch A上接口Vlan-int100的IPv4地址为2.1.1.1/24，转换成IPv6地址后使用6to4前缀2002:0201:0101::/48。对此前缀进行子网划分，Tunnel0使用2002:0201:0101::/64子网，Vlan-int101使用2002:0201:0101:1::/64子网。

l Switch B上接口Vlan-int100的IPv4地址为5.1.1.1/24，转换成IPv6地址后使用6to4前缀2002:0501:0101::/48。对此前缀进行子网划分，Tunnel0使用2002:0501:0101::/64子网，Vlan-int101使用2002:0501:0101:1::/64子网。

4. 配置步骤

在开始下面的配置之前，请确保Switch A和Switch B上已经创建相应的VLAN接口，且两者之间IPv4报文路由可达。

(1) 配置Switch A

# 使能IPv6转发功能。

<SwitchA> system-view

[SwitchA] ipv6

# 配置接口Vlan-interface100的地址。

[SwitchA] interface vlan-interface 100

[SwitchA-Vlan-interface100] ip address 2.1.1.1 24

[SwitchA-Vlan-interface100] quit

# 配置接口Vlan-interface101的地址。

[SwitchA] interface vlan-interface 101

[SwitchA-Vlan-interface101] ipv6 address 2002:0201:0101:1::1/64

[SwitchA-Vlan-interface101] quit

# 创建业务环回组1，并配置服务类型为tunnel。

[SwitchA] service-loopback group 1 type tunnel

# 将接口Ethernet1/0/3加入业务环回组1，并在该端口上关闭STP、NDP和LLDP功能。

[SwitchA] interface Ethernet 1/0/3

[SwitchA-Ethernet1/0/3] undo stp enable

[SwitchA-Ethernet1/0/3] undo ndp enable

[SwitchA-Ethernet1/0/3] undo lldp enable

[SwitchA-Ethernet1/0/3] port service-loopback group 1

[SwitchA-Ethernet1/0/3] quit

# 配置6to4隧道。

[SwitchA] interface tunnel 0

[SwitchA-Tunnel0] ipv6 address 2002:201:101::1/64

[SwitchA-Tunnel0] source vlan-interface 100

[SwitchA-Tunnel0] tunnel-protocol ipv6-ipv4 6to4

# 在Tunnel接口视图下指定隧道引用业务环回组1。

[SwitchA-Tunnel0] service-loopback-group 1

[SwitchA-Tunnel0] quit

# 配置到目的地址2002::/16，下一跳为Tunnel接口的静态路由。

[SwitchA] ipv6 route-static 2002:: 16 tunnel 0

(2) 配置Switch B

# 使能IPv6转发功能。

<SwitchB> system-view

[SwitchB] ipv6

# 配置接口Vlan-interface100的地址。

[SwitchB] interface vlan-interface 100

[SwitchB-Vlan-interface100] ip address 5.1.1.1 24

[SwitchB-Vlan-interface100] quit

# 配置接口Vlan-interface101的地址。

[SwitchB] interface vlan-interface 101

[SwitchB-Vlan-interface101] ipv6 address 2002:0501:0101:1::1/64

[SwitchB-Vlan-interface101] quit

# 创建业务环回组1，并配置服务类型为tunnel。

[SwitchB] service-loopback group 1 type tunnel

# 将接口Ethernet1/0/3加入业务环回组1，并在该端口上关闭STP、NDP和LLDP功能。

[SwitchB] interface Ethernet 1/0/3

[SwitchB-Ethernet1/0/3] undo stp enable

[SwitchB-Ethernet1/0/3] undo ndp enable

[SwitchB-Ethernet1/0/3] undo lldp enable

[SwitchB-Ethernet1/0/3] port service-loopback group 1

[SwitchB-Ethernet1/0/3] quit

# 配置6to4隧道。

[SwitchB] interface tunnel 0

[SwitchB-Tunnel0] ipv6 address 2002:0501:0101::1/64

[SwitchB-Tunnel0] source vlan-interface 100

[SwitchB-Tunnel0] tunnel-protocol ipv6-ipv4 6to4

# 在Tunnel接口视图下指定隧道引用业务环回组1。

[SwitchB-Tunnel0] service-loopback-group 1

[SwitchB-Tunnel0] quit

# 配置到目的地址2002::/16，下一跳为Tunnel接口的静态路由。

[SwitchB] ipv6 route-static 2002:: 16 tunnel 0

5. 验证配置结果

完成以上配置之后，Host A与Host B可以互相Ping通。

D:\>ping6 -s 2002:201:101:1::2 2002:501:101:1::2

Pinging 2002:501:101:1::2

from 2002:201:101:1::2 with 32 bytes of data:

Reply from 2002:501:101:1::2: bytes=32 time=13ms

Reply from 2002:501:101:1::2: bytes=32 time=1ms

Reply from 2002:501:101:1::2: bytes=32 time=1ms

Reply from 2002:501:101:1::2: bytes=32 time<1ms

Ping statistics for 2002:501:101:1::2:

Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),

Approximate round trip times in milli-seconds:

Minimum = 0ms, Maximum = 13ms, Average = 3ms


1.6 配置ISATAP隧道

1.6.1 配置准备

设备上存在已经配置IP地址、能够进行正常通讯的接口（如VLAN接口，Loopback接口等），该接口将作为Tunnel接口的源接口。

1.6.2 配置ISATAP隧道

表1-6 配置ISATAP隧道

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
使能IPv6报文转发功能 |  | ipv6 | 必选 缺省情况下，IPv6报文转发功能处于关闭状态
进入Tunnel接口视图 |  | interface tunnel number | -
设置Tunnel接口的IPv6地址 | 配置IPv6全球单播地址或站点本地地址 | ipv6 address { ipv6-address prefix-length | ipv6-address/prefix-length } | 二者必选其一 缺省情况下，Tunnel接口上没有设置IPv6全球单播地址或站点本地地址
 |  | ipv6 address ipv6-address/prefix-length eui-64
 | 配置IPv6链路本地地址 | ipv6 address auto link-local | 可选 缺省情况下，当接口配置了IPv6全球单播地址或站点本地地址后，会自动生成链路本地地址
 |  | ipv6 address ipv6-address link-local
配置隧道模式为ISATAP隧道 |  | tunnel-protocol ipv6-ipv4 isatap | 必选 缺省情况下，为GRE over IPv4隧道模式 在隧道的两端应配置相同的隧道模式，否则可能造成报文传输失败
设置Tunnel接口的源端地址或接口 |  | source { ip-address | interface-type interface-number } | 必选 缺省情况下，Tunnel接口上没有设置源端地址和接口
退回系统视图 |  | quit | -
配置丢弃含有IPv4兼容IPv6地址的IPv6报文 |  | tunnel discard ipv4-compatible-packet | 可选 缺省情况下，不会丢弃含有IPv4兼容IPv6地址的IPv6报文

l ISATAP隧道不需要配置目的地址，因为隧道的目的地址可以通过ISATAP地址中嵌入的IPv4地址自动获得。

l 如果封装前IPv6报文的目的IPv6地址与Tunnel接口的IPv6地址不在同一个网段，则必须配置通过Tunnel接口到达目的IPv6地址的转发路由，以便需要进行封装的报文能正常转发。对于自动隧道，用户只能配置静态路由，指定到达目的IPv6地址的路由出接口为本端Tunnel接口或下一跳为对端Tunnel接口地址，不支持动态路由。在隧道的两端都要进行转发路由的配置，配置的详细情况请参见“三层技术-IP路由配置指导”中的“IPv6静态路由”。

l 对于自动隧道，使用同种封装协议的Tunnel接口不能同时配置完全相同的源地址。

1.6.3 配置举例

1. 组网需求

如图1-8 所示，IPv6网络和IPv4网络通过ISATAP交换机相连，在IPv4网络侧分布着一些IPv6主机。要求将IPv4网络中的IPv6主机通过ISATAP隧道接入到IPv6网络。

2. 组网图

图1-8 ISATAP隧道组网图

3. 配置步骤

在开始下面的配置之前，请确保Switch上已经创建相应的VLAN接口，且Switch的Vlan-interface101和ISATAP host之间IPv4报文路由可达。

(1) 配置Switch

# 使能IPv6转发功能。

<Switch> system-view

[Switch] ipv6

# 配置各接口地址。

[Switch] interface vlan-interface 100

[Switch-Vlan-interface100] ipv6 address 3001::1/64

[Switch-Vlan-interface100] quit

[Switch] interface vlan-interface 101

[Switch-Vlan-interface101] ip address 1.1.1.1 255.0.0.0

[Switch-Vlan-interface101] quit

# 创建业务环回组1，并配置服务类型为tunnel。

[Switch] service-loopback group 1 type tunnel

# 将接口Ethernet1/0/3加入业务环回组1，并在该端口上关闭STP、NDP和LLDP功能。

[Switch] interface Ethernet 1/0/3

[Switch-Ethernet1/0/3] undo stp enable

[Switch-Ethernet1/0/3] undo ndp enable

[Switch-Ethernet1/0/3] undo lldp enable

[Switch-Ethernet1/0/3] port service-loopback group 1

[Switch-Ethernet1/0/3] quit

# 配置ISATAP隧道。

[Switch] interface tunnel 0

[Switch-Tunnel0] ipv6 address 2001::5efe:0101:0101 64

[Switch-Tunnel0] source vlan-interface 101

[Switch-Tunnel0] tunnel-protocol ipv6-ipv4 isatap

# 取消对RA消息发布的抑制，使主机可以通过交换机发布的RA消息获取地址前缀等信息。

[Switch-Tunnel0] undo ipv6 nd ra halt

# 在Tunnel接口视图下指定隧道引用业务环回组1。

[Switch-Tunnel0] service-loopback-group 1

[Switch-Tunnel0] quit

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

[Switch] ipv6 route-static 2001:: 16 tunnel 0

(2) 配置ISATAP主机

ISATAP主机上的具体配置与主机的操作系统有关，下面仅以Windows XP操作系统为例进行说明。

# 在主机上安装IPv6协议。

C:\>ipv6 install

# 在Windows XP上，ISATAP接口通常为接口2，只要在该接口上配置ISATAP交换机的IPv4地址即可完成主机侧的配置。先看看这个ISATAP接口的信息：

C:\>ipv6 if 2

Interface 2: Automatic Tunneling Pseudo-Interface

Guid {48FCE3FC-EC30-E50E-F1A7-71172AEEE3AE}

does not use Neighbor Discovery

does not use Router Discovery

routing preference 1

EUI-64 embedded IPv4 address: 0.0.0.0

router link-layer address: 0.0.0.0

preferred link-local fe80::5efe:2.1.1.2, life infinite

link MTU 1280 (true link MTU 65515)

current hop limit 128

reachable time 42500ms (base 30000ms)

retransmission interval 1000ms

DAD transmits 0

default site prefix length 48

# 它自动生成了一个ISATAP格式的link-local地址（fe80::5efe:2.1.1.2）。我们需要设置这个接口上的ISATAP交换机的IPv4地址：

C:\>ipv6 rlu 2 1.1.1.1

# 只需要这么一个命令，这就完成了主机的配置，我们再来看看这个ISATAP接口的信息：

C:\>ipv6 if 2

Interface 2: Automatic Tunneling Pseudo-Interface

Guid {48FCE3FC-EC30-E50E-F1A7-71172AEEE3AE}

does not use Neighbor Discovery

uses Router Discovery

routing preference 1

EUI-64 embedded IPv4 address: 2.1.1.2

router link-layer address: 1.1.1.1

preferred global 2001::5efe:2.1.1.2, life 29d23h59m46s/6d23h59m46s (public)

preferred link-local fe80::5efe:2.1.1.2, life infinite

link MTU 1500 (true link MTU 65515)

current hop limit 255

reachable time 42500ms (base 30000ms)

retransmission interval 1000ms

DAD transmits 0

default site prefix length 48

# 对比前后的区别，我们可以看到主机获取了2001::/64的前缀，自动生成地址2001::5efe:2.1.1.2，同时还会发现这么一行“uses Router Discovery”表明主机启用了路由器发现，这时ping一下交换机上隧道接口的IPv6地址，可以ping通，这时候表明ISATAP隧道已经成功建立。

C:\>ping 2001::5efe:1.1.1.1

Pinging 2001::5efe:1.1.1.1 with 32 bytes of data:

Reply from 2001::5efe:1.1.1.1: time=1ms

Reply from 2001::5efe:1.1.1.1: time=1ms

Reply from 2001::5efe:1.1.1.1: time=1ms

Reply from 2001::5efe:1.1.1.1: time=1ms

Ping statistics for 2001::5efe:1.1.1.1:

Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),

Approximate round trip times in milli-seconds:

Minimum = 1ms, Maximum = 1ms, Average = 1ms

4. 验证配置结果

完成以上配置之后，ISATAP主机就可访问IPv6网络中的主机。


1.7 配置IPv4 over IPv4隧道

1.7.1 配置准备

设备上存在已经配置IP地址、能够进行正常通讯的接口（如VLAN接口，Loopback接口等），该接口将作为Tunnel接口的源接口。

1.7.2 配置IPv4 over IPv4隧道

表1-7 配置IPv4 over IPv4隧道

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入Tunnel接口视图 | interface tunnel number | -
设置Tunnel接口的IPv4地址 | ip address ip-address { mask | mask-length } [ sub ] | 必选 缺省情况下，Tunnel接口上没有设置IPv4地址
配置隧道模式为IPv4 over IPv4隧道 | tunnel-protocol ipv4-ipv4 | 可选 缺省情况下，为GRE over IPv4隧道模式 在隧道的两端应配置相同的隧道模式，否则会造成报文传输失败
设置Tunnel接口的源端地址或接口 | source { ip-address | interface-type interface-number } | 必选 缺省情况下，Tunnel接口上没有设置源端地址和接口
设置Tunnel接口的目的端地址 | destination ip-address | 必选 缺省情况下，Tunnel接口上没有设置目的端地址

l 如果封装前IPv4报文的目的IPv4地址与Tunnel接口的IPv4地址不在同一个网段，则必须配置通过Tunnel接口到达目的IPv4地址的转发路由，以便需要进行封装的报文能正常转发。用户可以配置静态路由，指定到达目的IPv4地址的路由出接口为本端Tunnel接口或下一跳为对端Tunnel接口地址。用户也可以配置动态路由，在Tunnel接口使能动态路由协议。在隧道的两端都要进行转发路由的配置，配置的详细情况请参见“三层技术-IP路由配置指导”中的“静态路由”或其他路由协议配置。

l 本端隧道接口的IPv4地址与隧道的目的地址不能在同一个网段内。

l 配置经过隧道接口的路由时，路由的目的地址不能与该隧道的目的地址在同一个网段内。

l 对两个或两个以上使用同种封装协议的Tunnel接口，不能同时配置完全相同的源地址和目的地址。

l 配置Tunnel接口的源端地址时，若采用配置源接口形式，则Tunnel的源地址取的是源接口的主IP地址。

1.7.3 配置举例

1. 组网需求

运行IP协议的两个子网Group 1和Group 2位于不同的区域，这两个子网都使用私网地址。通过在交换机Switch A和交换机Switch B之间建立IPv4 over IPv4隧道，实现两个子网的互联。

2. 组网图

图1-9 IPv4 over IPv4隧道组网图

3. 配置步骤

在开始下面的配置之前，请确保Switch A和Switch B上已经创建相应的VLAN接口，且两者之间IPv4报文路由可达。

(1) 配置Switch A

# 配置接口Vlan-interface100。

<SwitchA> system-view

[SwitchA] interface vlan-interface 100

[SwitchA-Vlan-interface100] ip address 10.1.1.1 255.255.255.0

[SwitchA-Vlan-interface100] quit

# 配置接口Vlan-interface101（隧道的实际物理接口）。

[SwitchA] interface vlan-interface 101

[SwitchA-Vlan-interface101] ip address 2.1.1.1 255.255.255.0

[SwitchA-Vlan-interface101] quit

# 创建业务环回组1，并配置服务类型为tunnel。

[SwitchA] service-loopback group 1 type tunnel

# 将接口Ethernet1/0/3加入业务环回组1，并在该端口上关闭STP、NDP和LLDP功能。

[SwitchA] interface Ethernet 1/0/3

[SwitchA-Ethernet1/0/3] undo stp enable

[SwitchA-Ethernet1/0/3] undo ndp enable

[SwitchA-Ethernet1/0/3] undo lldp enable

[SwitchA-Ethernet1/0/3] port service-loopback group 1

[SwitchA-Ethernet1/0/3] quit

# 创建Tunnel1接口。

[SwitchA] interface tunnel 1

# 配置Tunnel1接口的IP地址。

[SwitchA-Tunnel1] ip address 10.1.2.1 255.255.255.0

# 配置Tunnel封装模式。

[SwitchA-Tunnel1] tunnel-protocol ipv4-ipv4

# 配置Tunnel1接口的源地址（Vlan-interface101的IP地址）。

[SwitchA-Tunnel1] source 2.1.1.1

# 配置Tunnel1接口的目的地址（Switch B的Vlan-interface101的IP地址）。

[SwitchA-Tunnel1] destination 3.1.1.1

# 在Tunnel接口视图下指定隧道引用业务环回组1。

[SwitchA-Tunnel1] service-loopback-group 1

[SwitchA-Tunnel1] quit

# 配置从Switch A经过Tunnel1接口到Group 2的静态路由。

[SwitchA] ip route-static 10.1.3.0 255.255.255.0 tunnel 1

(2) 配置Switch B

# 配置接口Vlan-interface100。

<SwitchB> system-view

[SwitchB] interface vlan-interface 100

[SwitchB-Vlan-interface100] ip address 10.1.3.1 255.255.255.0

[SwitchB-Vlan-interface100] quit

# 配置接口Vlan-interface101（隧道的实际物理接口）。

[SwitchB] interface vlan-interface 101

[SwitchB-Vlan-interface101] ip address 3.1.1.1 255.255.255.0

[SwitchB-Vlan-interface101] quit

# 创建业务环回组1，并配置服务类型为tunnel。

[SwitchB] service-loopback group 1 type tunnel

# 将接口Ethernet1/0/3加入业务环回组1，并在该端口上关闭STP、NDP和LLDP功能。

[SwitchB] interface Ethernet 1/0/3

[SwitchB-Ethernet1/0/3] undo stp enable

[SwitchB-Ethernet1/0/3] undo ndp enable

[SwitchB-Ethernet1/0/3] undo lldp enable

[SwitchB-Ethernet1/0/3] port service-loopback group 1

[SwitchB-Ethernet1/0/3] quit

# 创建Tunnel2接口。

[SwitchB] interface tunnel 2

# 配置Tunnel2接口的IP地址。

[SwitchB-Tunnel2] ip address 10.1.2.2 255.255.255.0

# 配置Tunnel封装模式。

[SwitchB-Tunnel2] tunnel-protocol ipv4-ipv4

# 配置Tunnel2接口的源地址（Vlan-interface101的IP地址）。

[SwitchB-Tunnel2] source 3.1.1.1

# 配置Tunnel2接口的目的地址（SwitchA的Vlan-interface101的IP地址）。

[SwitchB-Tunnel2] destination 2.1.1.1

# 在Tunnel接口视图下指定隧道引用业务环回组1。

[SwitchB-Tunnel2] service-loopback-group 1

[SwitchB-Tunnel2] quit

# 配置从Switch B经过Tunnel2接口到Group 1的静态路由。

[SwitchB] ip route-static 10.1.1.0 255.255.255.0 tunnel 2

4. 验证配置结果

完成以上配置之后，分别察看Switch A和Switch B的Tunnel接口状态如下：

[SwitchA] display interface tunnel 1

Tunnel1 current state: UP

Line protocol current state: UP

Description: Tunnel1 Interface

The Maximum Transmit Unit is 1480

Internet Address is 10.1.2.1/24 Primary

Encapsulation is TUNNEL, service-loopback-group ID is 1.

Tunnel source 2.1.1.1（Vlan-interface101）, destination 3.1.1.1

Tunnel protocol/transport IP/IP

Last 300 seconds input: 0 bytes/sec, 0 packets/sec

Last 300 seconds output: 2 bytes/sec, 0 packets/sec

4 packets input, 256 bytes

0 input error

12 packets output, 768 bytes

0 output error

[SwitchB] display interface tunnel 2

Tunnel2 current state: UP

Line protocol current state: UP

Description: Tunnel2 Interface

The Maximum Transmit Unit is 1480

Internet Address is 10.1.2.2/24 Primary

Encapsulation is TUNNEL, service-loopback-group ID is 1.

Tunnel source 3.1.1.1（Vlan-interface101）, destination 2.1.1.1

Tunnel protocol/transport IP/IP

Last 300 seconds input: 0 bytes/sec, 0 packets/sec

Last 300 seconds output: 0 bytes/sec, 0 packets/sec

5 packets input, 320 bytes

0 input error

9 packets output, 576 bytes

0 output error

# 从Switch A可以Ping通对端的Vlan-interface100接口的IPv4地址：

[RouterA] ping 10.1.3.1

PING 10.1.3.1: 56 data bytes, press CTRL_C to break

Reply from 10.1.3.1: bytes=56 Sequence=1 ttl=255 time=15 ms

Reply from 10.1.3.1: bytes=56 Sequence=2 ttl=255 time=15 ms

Reply from 10.1.3.1: bytes=56 Sequence=3 ttl=255 time=16 ms

Reply from 10.1.3.1: bytes=56 Sequence=4 ttl=255 time=16 ms

Reply from 10.1.3.1: bytes=56 Sequence=5 ttl=255 time=15 ms

--- 10.1.3.1 ping statistics ---

5 packet(s) transmitted

5 packet(s) received

0.00% packet loss

round-trip min/avg/max = 15/15/16 ms


1.8 配置IPv4 over IPv6手动隧道

1.8.1 配置准备

设备上存在已经配置IPv6地址、能够进行正常通讯的接口（如VLAN接口，Loopback接口等），该接口将作为Tunnel接口的源接口。

1.8.2 配置IPv4 over IPv6手动隧道

表1-8 配置IPv4 over IPv6手动隧道

操作 | 命令 | 说明
进入系统视图 | system-view | -
使能IPv6报文转发功能 | ipv6 | 必选 缺省情况下，关闭IPv6报文转发功能
进入Tunnel接口视图 | interface tunnel number | -
设置Tunnel接口的IPv4地址 | ip address ip-address { mask | mask-length } [ sub ] | 必选 缺省情况下，Tunnel接口上没有设置IPv4地址
配置隧道模式为IPv4 over IPv6手动隧道 | tunnel-protocol ipv4-ipv6 | 可选 缺省情况下，为GRE over IPv4隧道模式 在隧道的两端应配置相同的隧道模式，否则可能造成报文传输失败
设置Tunnel接口的源端地址或接口 | source { ipv6-address | interface-type interface-number } | 必选 缺省情况下，Tunnel接口上没有设置源端地址和接口
设置Tunnel接口的目的端地址 | destination ipv6-address | 必选 缺省情况下，Tunnel接口上没有设置目的端地址

l 如果封装前IPv4报文的目的IPv4地址与Tunnel接口的IPv4地址不在同一个网段，则必须配置通过Tunnel接口到达目的IPv4地址的转发路由，以便需要进行封装的报文能正常转发。用户可以配置静态路由，指定到达目的IPv4地址的路由出接口为本端Tunnel接口或下一跳为对端Tunnel接口地址。用户也可以配置动态路由，在Tunnel接口使能动态路由协议。在隧道的两端都要进行转发路由的配置，配置的详细情况请参见“三层技术-IP路由配置指导”中的“静态路由”或其他路由协议配置。

l 对两个或两个以上使用同种封装协议的Tunnel接口，不能同时配置完全相同的源地址和目的地址。

l 配置Tunnel接口的源端地址时，若采用配置源接口形式，则Tunnel的源地址取的是源接口的主IP地址。

1.8.3 配置举例

1. 组网需求

运行IP协议的两个子网Group 1和Group 2通过IPv6网络相连。通过在交换机Switch A和交换机Switch B之间建立IPv4 over IPv6手动隧道，实现两个子网穿越IPv6网络互联。

2. 组网图

图1-10 IPv4 over IPv6手动隧道组网图

3. 配置步骤

在开始下面的配置之前，请确保Switch A和Switch B上已经创建相应的VLAN接口，且两者之间IPv6报文路由可达。

(1) 配置Switch A

# 使能IPv6转发功能。

<SwitchA> system-view

[SwitchA] ipv6

# 配置接口Vlan-interface100。

[SwitchA] interface vlan-interface 100

[SwitchA-Vlan-interface100] ip address 30.1.1.1 255.255.255.0

[SwitchA-Vlan-interface100] quit

# 配置接口Vlan-interface101（隧道的实际物理接口）。

[SwitchA] interface vlan-interface 101

[SwitchA-Vlan-interface101] ipv6 address 2002::1:1 64

[SwitchA-Vlan-interface101] quit

# 创建业务环回组1，并配置服务类型为tunnel。

[SwitchA] service-loopback group 1 type tunnel

# 将接口Ethernet1/0/3加入业务环回组1，并在该端口上关闭STP、NDP和LLDP功能。

[SwitchA] interface Ethernet 1/0/3

[SwitchA-Ethernet1/0/3] undo stp enable

[SwitchA-Ethernet1/0/3] undo ndp enable

[SwitchA-Ethernet1/0/3] undo lldp enable

[SwitchA-Ethernet1/0/3] port service-loopback group 1

[SwitchA-Ethernet1/0/3] quit

# 创建Tunnel1接口。

[SwitchA] interface tunnel 1

# 配置Tunnel1接口的IP地址。

[SwitchA-Tunnel1] ip address 30.1.2.1 255.255.255.0

# 配置Tunnel封装模式。

[SwitchA-Tunnel1] tunnel-protocol ipv4-ipv6

# 配置Tunnel1接口的源地址（Vlan-interface101的IP地址）。

[SwitchA-Tunnel1] source 2002::1:1

# 配置Tunnel1接口的目的地址（Switch B的Vlan-interface101的IP地址） 。

[SwitchA-Tunnel1] destination 2002::2:1

# 在Tunnel接口视图下指定隧道引用业务环回组1。

[SwitchA-Tunnel1] service-loopback-group 1

[SwitchA-Tunnel1] quit

# 配置从Switch A经过Tunnel1接口到Group 2的静态路由。

[SwitchA] ip route-static 30.1.3.0 255.255.255.0 tunnel 1

(2) 配置Switch B

# 使能IPv6转发功能。

<SwitchB> system-view

[SwitchB] ipv6

# 配置接口Vlan-interface100。

[SwitchB] interface vlan-interface 100

[SwitchB-Vlan-interface100] ip address 30.1.3.1 255.255.255.0

[SwitchB-Vlan-interface100] quit

# 配置接口Vlan-interface101（隧道的实际物理接口）。

[SwitchB] interface vlan-interface 101

[SwitchB-Vlan-interface101] ipv6 address 2002::2:1 64

[SwitchB-Vlan-interface101] quit

# 创建业务环回组1，并配置服务类型为tunnel。

[SwitchB] service-loopback group 1 type tunnel

# 将接口Ethernet1/0/3加入业务环回组1，并在该端口上关闭STP、NDP和LLDP功能。

[SwitchB] interface Ethernet 1/0/3

[SwitchB-Ethernet1/0/3] undo stp enable

[SwitchB-Ethernet1/0/3] undo ndp enable

[SwitchB-Ethernet1/0/3] undo lldp enable

[SwitchB-Ethernet1/0/3] port service-loopback group 1

[SwitchB-Ethernet1/0/3] quit

# 创建Tunnel2接口。

[SwitchB] interface tunnel 2

# 配置Tunnel2接口的IP地址。

[SwitchB-Tunnel2] ip address 30.1.2.2 255.255.255.0

# 配置Tunnel封装模式。

[SwitchB-Tunnel2] tunnel-protocol ipv4-ipv6

# 配置Tunnel2接口的源地址（Vlan-interface101的IP地址）。

[SwitchB-Tunnel2] source 2002::2:1

# 配置Tunnel2接口的目的地址（Switch A的Vlan-interface101的IP地址）。

[SwitchB-Tunnel2] destination 2002::1:1

# 在Tunnel接口视图下指定隧道引用业务环回组1。

[SwitchB-Tunnel2] service-loopback-group 1

[SwitchB-Tunnel2] quit

# 配置从Switch B经过Tunnel2接口到Group 1的静态路由。

[SwitchB] ip route-static 30.1.1.0 255.255.255.0 tunnel 2

4. 验证配置结果

完成以上配置之后，分别查看Switch A和Switch B的Tunnel接口状态如下：

[SwitchA] display interface tunnel 1

Tunnel1 current state: UP

Line protocol current state: UP

Description: Tunnel1 Interface

The Maximum Transmit Unit is 1460

Internet Address is 30.1.2.1/24 Primary

Encapsulation is TUNNEL, service-loopback-group ID is 1.

Tunnel source 2002::0001:0001, destination 2002::0002:0001

Tunnel protocol/transport IP/IPv6

Last 300 seconds input: 0 bytes/sec, 0 packets/sec

Last 300 seconds output: 0 bytes/sec, 0 packets/sec

152 packets input, 9728 bytes

0 input error

168 packets output, 10752 bytes

0 output error

[SwitchB] display interface tunnel 2

Tunnel2 current state: UP

Line protocol current state: UP

Description: Tunnel2 Interface

The Maximum Transmit Unit is 1460

Internet Address is 30.1.2.2/24 Primary

Encapsulation is TUNNEL, service-loopback-group ID is 1.

Tunnel source 2002::0002:0001, destination 2002::0001:0001

Tunnel protocol/transport IP/IPv6

Last 300 seconds input: 1 bytes/sec, 0 packets/sec

Last 300 seconds output: 1 bytes/sec, 0 packets/sec

167 packets input, 10688 bytes

0 input error

170 packets output, 10880 bytes

0 output error

# 从Switch A可以Ping通对端的Vlan-interface100接口的IPv4地址：

[SwitchA] ping 30.1.3.1

PING 30.1.3.1: 56 data bytes, press CTRL_C to break

Reply from 30.1.3.1: bytes=56 Sequence=1 ttl=255 time=46 ms

Reply from 30.1.3.1: bytes=56 Sequence=2 ttl=255 time=15 ms

Reply from 30.1.3.1: bytes=56 Sequence=3 ttl=255 time=16 ms

Reply from 30.1.3.1: bytes=56 Sequence=4 ttl=255 time=15 ms

Reply from 30.1.3.1: bytes=56 Sequence=5 ttl=255 time=16 ms

--- 30.1.3.1 ping statistics ---

5 packet(s) transmitted

5 packet(s) received

0.00% packet loss

round-trip min/avg/max = 15/21/46 ms


1.9 配置IPv6 over IPv6隧道

1.9.1 配置准备

设备上存在已经配置IPv6地址、能够进行正常通讯的接口（如VLAN接口，Loopback接口等），该接口将作为Tunnel接口的源接口。

1.9.2 配置IPv6 over IPv6隧道

表1-9 配置IPv6 over IPv6隧道

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
使能IPv6报文转发功能 |  | ipv6 | 必选 缺省情况下，关闭IPv6报文转发功能
进入Tunnel接口视图 |  | interface tunnel number | -
设置Tunnel接口的IPv6地址 | 配置IPv6全球单播地址或站点本地地址 | ipv6 address { ipv6-address prefix-length | ipv6-address/prefix-length } | 必选之一 缺省情况下，Tunnel接口上没有设置IPv6地址
 |  | ipv6 address ipv6-address/prefix-length eui-64
 | 配置IPv6链路本地地址 | ipv6 address auto link-local
 |  | ipv6 address ipv6-address link-local
配置隧道模式为IPv6 over IPv6隧道 |  | tunnel-protocol ipv6-ipv6 | 可选 缺省情况下，为GRE over IPv4隧道模式 在隧道的两端应配置相同的隧道模式，否则可能造成报文传输失败
设置Tunnel接口的源端地址或接口 |  | source { ipv6-address | interface-type interface-number } | 必选 缺省情况下，Tunnel接口上没有设置源端地址和接口
设置Tunnel接口的目的端地址 |  | destination ipv6-address | 必选 缺省情况下，Tunnel接口上没有设置目的端地址
设置隧道允许的最大嵌套封装次数 |  | encapsulation-limit [ number ] | 可选 缺省情况下，number 的值为4
退回系统视图 |  | quit | -
配置丢弃含有IPv4兼容IPv6地址的IPv6报文 |  | tunnel discard ipv4-compatible-packet | 可选 缺省情况下，不会丢弃含有IPv4兼容IPv6地址的IPv6报文

l 如果封装前IPv6报文的目的IPv6地址与Tunnel接口的IPv6地址不在同一个网段，则必须配置通过Tunnel接口到达目的IPv6地址的转发路由，以便需要进行封装的报文能正常转发。用户可以配置静态路由，指定到达目的IPv6地址的路由出接口为本端Tunnel接口或下一跳为对端Tunnel接口地址。用户也可以配置动态路由，在Tunnel接口使能动态路由协议。在隧道的两端都要进行转发路由的配置，配置的详细情况请参见“三层技术-IP路由配置指导”中的“IPv6静态路由”或其他路由协议配置。

l 本端隧道接口的IPv6地址与隧道的目的地址不能在同一个网段内。

l 配置经过隧道接口的路由时，路由的目的地址不能与该隧道的目的地址在同一个网段内。

l 对两个或两个以上使用同种封装协议的Tunnel接口，不能同时配置完全相同的源地址和目的地址。

l 配置Tunnel接口的源端地址时，若采用配置源接口形式，则Tunnel的源地址取的是源接口的主IP地址。

1.9.3 配置举例

1. 组网需求

运行IPv6协议的两个子网Group 1和Group 2的网络地址不希望泄露到IPv6网络中。网络管理员通过在交换机Switch A和交换机Switch B之间建立IPv6 over IPv6隧道，实现在Group 1和Group 2的网络地址不被泄露的情况下，确保Group 1和Group 2互通。

2. 组网图

图1-11 IPv6 over IPv6隧道组网图

3. 配置步骤

在开始下面的配置之前，请确保Switch A和Switch B上已经创建相应的VLAN接口，且两者之间IPv6报文路由可达。

(1) 配置Switch A

# 使能IPv6转发功能。

<SwitchA> system-view

[SwitchA] ipv6

# 配置接口Vlan-interface100。

[SwitchA] interface vlan-interface 100

[SwitchA-Vlan-interface100] ipv6 address 2002:1::1 64

[SwitchA-Vlan-interface100] quit

# 配置接口Vlan-interface101（隧道的实际物理接口）。

[SwitchA] interface vlan-interface 101

[SwitchA-Vlan-interface101] ipv6 address 2002::11:1 64

[SwitchA-Vlan-interface101] quit

# 创建业务环回组1，并配置服务类型为tunnel。

[SwitchA] service-loopback group 1 type tunnel

# 将接口Ethernet1/0/3加入业务环回组1，并在该端口上关闭STP、NDP和LLDP功能。

[SwitchA] interface Ethernet 1/0/3

[SwitchA-Ethernet1/0/3] undo stp enable

[SwitchA-Ethernet1/0/3] undo ndp enable

[SwitchA-Ethernet1/0/3] undo lldp enable

[SwitchA-Ethernet1/0/3] port service-loopback group 1

[SwitchA-Ethernet1/0/3] quit

# 创建Tunnel1接口。

[SwitchA] interface tunnel 1

# 配置Tunnel1接口的IP地址。

[SwitchA-Tunnel1] ipv6 address 3001::1:1 64

# 配置Tunnel封装模式。

[SwitchA-Tunnel1] tunnel-protocol ipv6-ipv6

# 配置Tunnel1接口的源地址（Vlan-interface101的IP地址）。

[SwitchA-Tunnel1] source 2002:11::1

# 配置Tunnel1接口的目的地址（Switch B的Vlan-interface101的IP地址）。

[SwitchA-Tunnel1] destination 2002::22:1

# 在Tunnel接口视图下指定隧道引用业务环回组1。

[SwitchA-Tunnel1] service-loopback-group 1

[SwitchA-Tunnel1] quit

# 配置从Switch A经过Tunnel1接口到Group 2的静态路由。

[SwitchA] ipv6 route-static 2002:3:: 64 tunnel 1

(2) 配置Switch B

# 使能IPv6转发功能。

<SwitchB> system-view

[SwitchB] ipv6

# 配置接口Vlan-interface100。

[SwitchB] interface vlan-interface 100

[SwitchB-Vlan-interface100] ipv6 address 2002:3::1 64

[SwitchB-Vlan-interface100] quit

# 配置接口Vlan-interface101（隧道的实际物理接口）。

[SwitchB] interface vlan-interface 101

[SwitchB-Vlan-interface101] ipv6 address 2002::22:1 64

[SwitchB-Vlan-interface101] quit

# 创建业务环回组1，并配置服务类型为tunnel。

[SwitchB] service-loopback group 1 type tunnel

# 将接口Ethernet1/0/3加入业务环回组1，并在该端口上关闭STP、NDP和LLDP功能。

[SwitchB] interface Ethernet 1/0/3

[SwitchB-Ethernet1/0/3] undo stp enable

[SwitchB-Ethernet1/0/3] undo ndp enable

[SwitchB-Ethernet1/0/3] undo lldp enable

[SwitchB-Ethernet1/0/3] port service-loopback group 1

[SwitchB-Ethernet1/0/3] quit

# 创建Tunnel2接口。

[SwitchB] interface tunnel 2

# 配置Tunnel2接口的IP地址。

[SwitchB-Tunnel2] ipv6 address 3001::1:2 64

# 配置Tunnel封装模式。

[SwitchB-Tunnel2] tunnel-protocol ipv6-ipv6

# 配置Tunnel2接口的源地址（Vlan-interface101的IP地址）。

[SwitchB-Tunnel2] source 2002::22:1

# 配置Tunnel2接口的目的地址（Switch A的Vlan-interface101的IP地址）。

[SwitchB-Tunnel2] destination 2002::11:1

# 在Tunnel接口视图下指定隧道引用业务环回组1。

[SwitchB-Tunnel2] service-loopback-group 1

[SwitchB-Tunnel2] quit

# 配置从Switch B经过Tunnel2接口到Group 1的静态路由。

[SwitchB] ipv6 route-static 2002:1:: 64 tunnel 2

4. 验证配置结果

完成以上配置之后，分别查看Switch A和Switch B的Tunnel接口状态如下：

[SwitchA] display ipv6 interface tunnel 1

Tunnel1 current state :UP

Line protocol current state :UP

IPv6 is enabled, link-local address is FE80::2013:1

Global unicast address(es):

3001::1:1, subnet is 3001::/64

Joined group address(es):

FF02::1:FF13:1

FF02::1:FF01:1

FF02::1:FF00:0

FF02::2

FF02::1

MTU is 1460 bytes

ND reachable time is 30000 milliseconds

ND retransmit interval is 1000 milliseconds

Hosts use stateless autoconfig for addresses

IPv6 Packet statistics:

……（略）

[SwitchB] display ipv6 interface tunnel 2

Tunnel2 current state :UP

Line protocol current state :UP

IPv6 is enabled, link-local address is FE80::2024:1

Global unicast address(es):

3001::1:2, subnet is 3001::/64

Joined group address(es):

FF02::1:FF24:1

FF02::1:FF01:2

FF02::1:FF00:0

FF02::2

FF02::1

MTU is 1460 bytes

ND reachable time is 30000 milliseconds

ND retransmit interval is 1000 milliseconds

Hosts use stateless autoconfig for addresses

IPv6 Packet statistics:

……（略）

# 从Switch A可以Ping通对端的Vlan-interface100接口的IPv6地址：

[SwitchA] ping ipv6 2002:3::1

PING 2002:3::1 : 56 data bytes, press CTRL_C to break

Reply from 2002:3::1

bytes=56 Sequence=1 hop limit=64 time = 31 ms

Reply from 2002:3::1

bytes=56 Sequence=2 hop limit=64 time = 1 ms

Reply from 2002:3::1

bytes=56 Sequence=3 hop limit=64 time = 16 ms

Reply from 2002:3::1

bytes=56 Sequence=4 hop limit=64 time = 16 ms

Reply from 2002:3::1

bytes=56 Sequence=5 hop limit=64 time = 31 ms

--- 2002:3::1 ping statistics ---

5 packet(s) transmitted

5 packet(s) received

0.00% packet loss

round-trip min/avg/max = 1/19/31 ms


1.10 隧道显示和维护

在完成上述配置后，在任意视图下执行 display 命令可以显示隧道配置后的运行情况，通过查看显示信息验证配置的效果。

在用户视图下执行 reset 命令可以清除Tunnel接口的统计信息。

表1-10 隧道显示和维护

操作 | 命令
显示Tunnel接口的相关信息 | display interface [ tunnel ] [ brief [ down ] ] [ | { begin | exclude | include } regular-expression ] display interface tunnel number [ brief ] [ | { begin | exclude | include } regular-expression ]
显示Tunnel接口的IPv6相关信息 | display ipv6 interface tunnel [ number ] [ brief ] [ | { begin | exclude | include } regular-expression ]
清除Tunnel接口的统计信息 | reset counters interface [ tunnel [number ] ]


1.11 常见错误配置举例

故障现象：在Tunnel接口上配置了相关的参数后（例如隧道的起点、终点地址和隧道模式）仍未处于up状态。

故障排除：可以按照如下步骤进行。

(1) Tunnel接口未处于up状态的最常见原因是隧道起点的物理接口没有处于up状态。使用 display interface tunnel 和 display ipv6 interface tunnel 命令查看隧道起点的物理接口状态为up还是down。如果物理接口状态是down的，请检查网络连接。

(2) Tunnel接口未处于up状态的另一个可能的原因是隧道的终点地址不可达。使用 display ipv6 routing-table 和 display ip routing-table 命令查看是否终点地址通过路由可达。如果路由表中没有保证隧道通讯的路由项，请配置相关路由。


1 GRE配置

相关链接

  • 1.1 GRE简介
  • 1.2 配置GRE over IPv4隧道
  • 1.3 配置GRE over IPv6隧道
  • 1.4 GRE显示和维护
  • 1.5 GRE over IPv4典型配置举例
  • 1.6 GRE over IPv6典型配置举例
  • 1.7 常见配置错误举例
父主题： 12-GRE配置


1.1 GRE简介

GRE（Generic Routing Encapsulation，通用路由封装）协议是对某些网络层协议（如IP和IPX）的数据报文进行封装，使这些被封装的数据报文能够在另一个网络层协议（如IP）中传输。封装后的数据报文在网络中传输的路径，称为GRE隧道。GRE隧道是一个虚拟的点到点的连接，GRE隧道的两端分别对数据报进行封装及解封装。

1.1.1 GRE封装后的报文格式

图1-1 GRE封装后的报文格式

如图1-1 所示，GRE封装后的报文包括如下几个部分：

l 净荷数据（Payload packet）：需要封装和传输的数据报文。净荷数据的协议类型，称为乘客协议（Passenger Protocol）。

l GRE头（GRE header）：系统收到净荷数据后，在净荷数据上添加GRE头，使其成为GRE报文。对净荷数据进行封装的GRE协议，称为封装协议（Encapsulation Protocol）。

l 传输协议的报文头（Delivery header）：负责转发封装后报文的网络协议，称为传输协议（Delivery Protocol或者Transport Protocol）。在GRE报文上需要增加传输协议的报文头，以便传输协议对封装后的报文进行转发处理。

图1-2 GRE封装报文举例

IPv6报文通过GRE隧道穿越IPv4网络时，报文格式如图1-2 所示。其中，乘客协议为IPv6，封装协议为GRE，传输协议为IPv4。

根据传输协议的不同，GRE隧道可以分为：

l GRE over IPv4：传输协议为IPv4，乘客协议为任意网络层协议。

l GRE over IPv6：传输协议为IPv6，乘客协议为任意网络层协议。

1.1.2 GRE加解封装过程

图1-3 X协议网络通过GRE隧道互连

下面以图1-3 的网络为例说明X协议的报文穿越IP网络在GRE隧道中传输的过程：

1. 加封装过程

l Device A连接Group 1的接口收到X协议报文后，首先交由X协议处理；

l X协议检查报文头中的目的地址域来确定如何路由此包；

l 若报文的目的地址要经过Tunnel才能到达，则设备将此报文发给相应的Tunnel接口；

l Tunnel接口收到此报文后进行GRE封装，再封装IP报文头后，设备根据此IP包的目的地址及路由表对报文进行转发，从相应的网络接口发送出去。

对于交换机，封装后的报文不能根据目的地址和路由表进行第二次三层转发，需要将封装后的报文发送给业务环回口，由业务环回口将报文回送给转发模块后，再进行三层转发。

2. 解封装的过程

解封装过程和加封装的过程相反。

l Device B从Tunnel接口收到IP报文，检查目的地址；

l 如果目的地是本路由器，且IP报文头中的协议号为47（表示封装的报文为GRE报文），则Device B剥掉此报文的IP报头，交给GRE协议处理（进行检验密钥、检查校验和及报文的序列号等）；

l GRE协议完成相应的处理后，剥掉GRE报头，再交由X协议对此数据报进行后续的转发处理。

GRE收发双方的加封装、解封装处理，以及由于封装造成的数据量增加，会导致使用GRE后设备的数据转发效率有一定程度的下降。

1.1.3 协议规范

与GRE相关的协议规范有：

l RFC 1701：Generic Routing Encapsulation (GRE)

l RFC 1702：Generic Routing Encapsulation over IPv4 networks

l RFC 2784：Generic Routing Encapsulation (GRE)


1.2 配置GRE over IPv4隧道

1.2.1 配置准备

l 设备上存在已经配置IP地址、能够进行正常通讯的接口（如VLAN接口，Loopback接口等），该接口将作为Tunnel接口的源接口。

l 配置GRE over IPv4隧道前，需要先创建业务类型为Tunnel的业务环回组，并将设备上未使用的二层以太网接口加入该业务环回组。关于业务环回组的详细介绍，请参见“二层技术-以太网交换配置指导”中的“业务环回组”。

1.2.2 配置GRE over IPv4隧道

表1-1 配置GRE over IPv4隧道

操作 | 命令 | 说明
进入系统视图 | system-view | -
创建一个Tunnel接口，并进入该Tunnel接口视图 | interface tunnel interface-number | 必选 缺省情况下，设备上无Tunnel接口
设置Tunnel接口的IPv4地址 | ip address ip-address { mask | mask-length } | 必选 缺省情况下，Tunnel接口上没有设置IPv4地址
配置隧道模式为GRE over IPv4 | tunnel-protocol gre | 可选 缺省情况下，采用GRE over IPv4隧道模式 在隧道的两端应配置相同的隧道模式，否则可能造成报文传输失败
设置Tunnel接口的源端地址或接口 | source { ip-address | interface-type interface-number } | 必选 缺省情况下，Tunnel接口上没有设置源端地址和接口
设置Tunnel接口的目的端地址 | destination ip-address | 必选 缺省情况下，Tunnel接口上没有设置目的端地址
配置通过Tunnel转发报文的路由 | 配置的详细情况请参见“三层技术-IP路由配置指导”中的“静态路由”或其他路由协议配置 | 必选 在源端路由器和目的端路由器上都必须存在经过Tunnel转发报文的路由，这样需要进行GRE封装的报文才能正确转发。可以配置静态路由，也可以配置动态路由
退回系统视图 | quit | -
配置丢弃含有IPv4兼容IPv6地址的IPv6报文 | tunnel discard ipv4-compatible-packet | 可选 缺省情况下，不会丢弃含有IPv4兼容IPv6地址的IPv6报文

l Tunnel接口的详细介绍，及Tunnel接口下的更多配置命令，请参见“三层技术-IP业务配置指导”中的“隧道”。

l interface tunnel、tunnel-protocol、source、destination 和 tunnel discard ipv4-compatible-packet 命令的详细介绍，请参见“三层技术-IP业务命令参考”中的“隧道”。

l Tunnel的源端地址与目的端地址唯一标识了一个通道。Tunnel两端必须配置源端地址与目的端地址，且两端地址互为源地址和目的地址。

l 两个或两个以上使用同种封装协议的Tunnel接口不能配置完全相同的源地址和目的地址。

l 配置Tunnel接口的源端地址时，若采用配置源接口形式，则Tunnel的源地址取的是源接口的主IP地址。

l 配置通过Tunnel转发的路由时，可以手工配置一条静态路由，目的地址是未进行GRE封装的报文的目的地址，下一跳是对端Tunnel接口的地址。也可以在Tunnel接口上和与私网相连的路由器接口上分别使能动态路由协议，由动态路由协议来建立通过Tunnel转发的路由表项。

l 在Tunnel接口配置的静态路由的目的地址不能与Tunnel接口的地址在同一网段。


1.3 配置GRE over IPv6隧道

1.3.1 配置准备

l 设备上存在已经配置IP地址、能够进行正常通讯的接口（如VLAN接口，Loopback接口等），该接口将作为Tunnel接口的源接口。

l 配置GRE over IPv6隧道前，需要先创建业务类型为Tunnel的业务环回组，并将设备上未使用的二层以太网接口加入该业务环回组。关于业务环回组的详细介绍，请参见“二层技术-以太网交换配置指导”中的“业务环回组”。

1.3.2 配置GRE over IPv6隧道

表1-2 配置GRE over IPv6隧道

操作 | 命令 | 说明
进入系统视图 | system-view | -
使能IPv6报文转发功能 | ipv6 | 必选 缺省情况下，关闭IPv6报文转发功能
创建一个Tunnel接口，并进入该Tunnel接口视图 | interface tunnel interface-number | 必选 缺省情况下，设备上无Tunnel接口
设置Tunnel接口的IPv4地址 | ip address ip-address { mask | mask-length } | 必选 缺省情况下，Tunnel接口上没有设置IPv4地址
配置隧道模式为GRE over IPv6 | tunnel-protocol gre ipv6 | 必选 缺省情况下，采用GRE over IPv4隧道模式 在隧道的两端应配置相同的隧道模式，否则可能造成报文传输失败
设置Tunnel接口的源端地址或接口 | source { ipv6-address | interface-type interface-number } | 必选 缺省情况下，Tunnel接口上没有设置源端地址和接口
设置Tunnel接口的目的端地址 | destination ipv6-address | 必选 缺省情况下，Tunnel接口上没有设置目的端地址
退回系统视图 | quit | -
配置丢弃含有IPv4兼容IPv6地址的IPv6报文 | tunnel discard ipv4-compatible-packet | 可选 缺省情况下，不会丢弃含有IPv4兼容IPv6地址的IPv6报文
配置通过Tunnel转发报文的路由 | 配置的详细情况请参见“三层技术-IP路由配置指导”中的“静态路由”或其他路由协议配置 | 必选 在源端路由器和目的端路由器上都必须存在经过Tunnel转发报文的路由，这样需要进行GRE封装的报文才能正确转发。可以配置静态路由，也可以配置动态路由

l interface tunnel、tunnel-protocol、source、destination 和 tunnel discard ipv4-compatible-packet 命令的详细介绍，请参见“三层技术-IP业务命令参考”中的“隧道”。

l Tunnel接口的详细介绍，及Tunnel接口下的更多配置命令，请参见“三层技术-IP业务配置指导”中的“隧道”。

l 以上各项Tunnel接口下进行的功能特性配置，在删除Tunnel接口后，该接口上的所有配置也将被删除。

l Tunnel的源端地址与目的端地址唯一标识了一个通道。Tunnel两端必须配置源端地址与目的端地址，且两端地址互为源地址和目的地址。

l 两个或两个以上使用同种封装协议的Tunnel接口不能配置完全相同的源地址和目的地址。

l 配置Tunnel接口的源端地址时，若采用配置源接口形式，则Tunnel的源地址取的是源接口的主IP地址。

l 配置通过Tunnel转发的路由时，可以手工配置一条静态路由，目的地址是未进行GRE封装的报文的目的地址，下一跳是对端Tunnel接口的地址。也可以在Tunnel接口上和与私网相连的路由器接口上分别使能动态路由协议，由动态路由协议来建立通过Tunnel转发的路由表项。

l 在Tunnel接口配置的静态路由的目的地址不能与Tunnel接口的地址在同一网段。


1.4 GRE显示和维护

在完成上述配置后，在任意视图下执行 display 命令可以显示配置后GRE的运行情况，通过查看显示信息验证配置的效果。

表1-3 GRE的显示和维护

操作 | 命令
显示Tunnel接口的相关信息 | display interface [ tunnel ] [ brief [ down ] ] [ | { begin | exclude | include } regular-expression ] display interface tunnel number [ brief ] [ | { begin | exclude | include } regular-expression ]
显示Tunnel接口的IPv6相关信息 | display ipv6 interface tunnel [ number ] [ brief ] [ | { begin | exclude | include } regular-expression ]

display interface tunnel 和 display ipv6 interface tunnel 命令的详细介绍，请参见“三层技术-IP业务命令参考”中的“隧道”。


1.5 GRE over IPv4典型配置举例

1.5.1 GRE over IPv4典型配置举例

1. 组网需求

交换机Switch A和交换机Switch B之间通过Internet相连。运行IP协议的私有网络的两个子网Group 1和Group 2，通过在两台交换机之间使用GRE建立隧道实现互联。

2. 组网图

图1-4 GRE over IPv4应用组网图

3. 配置步骤

在开始下面的配置之前，需确保Switch A和Switch B之间路由可达。

(1) 配置交换机Switch A

# 配置接口Ethernet1/0/1。

<SwitchA> system-view

[SwitchA] vlan 100

[SwitchA-vlan100] port Ethernet 1/0/1

[SwitchA-vlan100] quit

[SwitchA] interface vlan-interface 100

[SwitchA-Vlan-interface100] ip address 10.1.1.1 255.255.255.0

[SwitchA-Vlan-interface100] quit

# 配置接口Ethernet1/0/2（隧道的实际物理接口）。

[SwitchA] vlan 101

[SwitchA-vlan101] port Ethernet 1/0/2

[SwitchA-vlan101] quit

[SwitchA] interface vlan-interface 101

[SwitchA-Vlan-interface101] ip address 1.1.1.1 255.255.255.0

[SwitchA-Vlan-interface101] quit

# 创建业务环回组1，并配置服务类型为tunnel。

[SwitchA] service-loopback group 1 type tunnel

# 将接口Ethernet1/0/3加入业务环回组1，并在该端口上关闭STP、NDP和LLDP功能。

[SwitchA] interface Ethernet 1/0/3

[SwitchA-Ethernet1/0/3] undo stp enable

[SwitchA-Ethernet1/0/3] undo ndp enable

[SwitchA-Ethernet1/0/3] undo lldp enable

[SwitchA-Ethernet1/0/3] port service-loopback group 1

[SwitchA-Ethernet1/0/3] quit

# 创建Tunnel1接口。

[SwitchA] interface tunnel 1

# 配置Tunnel1接口的IP地址。

[SwitchA-Tunnel1] ip address 10.1.2.1 255.255.255.0

# 配置Tunnel封装模式为GRE over IPv4隧道模式。

[SwitchA-Tunnel1] tunnel-protocol gre

# 配置Tunnel1接口的源地址（Ethernet1/0/2所属VLAN接口的IP地址）。

[SwitchA-Tunnel1] source vlan-interface 101

# 配置Tunnel1接口的目的地址（Switch B的Ethernet1/0/2所属VLAN接口的IP地址）。

[SwitchA-Tunnel1] destination 2.2.2.2

# 在Tunnel接口视图下指定隧道引用业务环回组1。

[SwitchA-Tunnel1] service-loopback-group 1

[SwitchA-Tunnel1] quit

# 配置从Switch A经过Tunnel1接口到Group 2的静态路由。

[SwitchA] ip route-static 10.1.3.0 255.255.255.0 tunnel 1

(2) 配置交换机Switch B

# 配置接口Ethernet1/0/1。

<SwitchB> system-view

[SwitchB] vlan 100

[SwitchB-vlan100] port Ethernet 1/0/1

[SwitchB-vlan100] quit

[SwitchB] interface vlan-interface 100

[SwitchB-Vlan-interface100] ip address 10.1.3.1 255.255.255.0

[SwitchB-Vlan-interface100] quit

# 配置接口Ethernet1/0/2（隧道的实际物理接口）。

[SwitchB] vlan 101

[SwitchB-vlan101] port Ethernet 1/0/2

[SwitchB-vlan101] quit

[SwitchB] interface vlan-interface 101

[SwitchB-Vlan-interface101] ip address 2.2.2.2 255.255.255.0

[SwitchB-Vlan-interface101] quit

# 创建业务环回组1，并配置服务类型为tunnel。

[SwitchB] service-loopback group 1 type tunnel

# 将接口Ethernet1/0/3加入业务环回组1，并在该端口上关闭STP、NDP和LLDP功能。

[SwitchB] interface Ethernet 1/0/3

[SwitchB-Ethernet1/0/3] undo stp enable

[SwitchB-Ethernet1/0/3] undo ndp enable

[SwitchB-Ethernet1/0/3] undo lldp enable

[SwitchB-Ethernet1/0/3] port service-loopback group 1

[SwitchB-Ethernet1/0/3] quit

# 创建Tunnel1接口。

[SwitchB] interface tunnel 1

# 配置Tunnel1接口的IP地址。

[SwitchB-Tunnel1] ip address 10.1.2.2 255.255.255.0

# 配置Tunnel封装模式为GRE over IPv4隧道模式。

[SwitchB-Tunnel1] tunnel-protocol gre

# 配置Tunnel1接口的源地址（Ethernet1/0/2所属VLAN接口的IP地址）。

[SwitchB-Tunnel1] source vlan-interface 101

# 配置Tunnel1接口的目的地址（Switch A的Ethernet1/0/2所属VLAN接口的IP地址）。

[SwitchB-Tunnel1] destination 1.1.1.1

# 在Tunnel接口视图下指定隧道引用业务环回组1。

[SwitchB-Tunnel1] service-loopback-group 1

[SwitchB-Tunnel1] quit

# 配置从Switch B经过Tunnel1接口到Group 1的静态路由。

[SwitchB] ip route-static 10.1.1.0 255.255.255.0 Tunnel 1

(3) 验证配置结果

# 完成以上配置后，分别查看Switch A和Switch B的Tunnel接口状态。

[SwitchA] display interface tunnel 1

Tunnel1 current state: UP

Line protocol current state: UP

Description: Tunnel1 Interface

The Maximum Transmit Unit is 1476

Internet Address is 10.1.2.1/24 Primary

Encapsulation is TUNNEL, service-loopback-group ID is 1.

Tunnel source 1.1.1.1, destination 2.2.2.2

Tunnel bandwidth 64 (kbps)

Tunnel protocol/transport GRE/IP

GRE key disabled

Checksumming of GRE packets disabled

Last clearing of counters: Never

Last 300 seconds input: 0 bytes/sec, 0 packets/sec

Last 300 seconds output: 0 bytes/sec, 0 packets/sec

10 packets input, 840 bytes

0 input error

10 packets output, 840 bytes

0 output error

[SwitchB] display interface tunnel 1

Tunnel1 current state: UP

Line protocol current state: UP

Description: Tunnel1 Interface

The Maximum Transmit Unit is 1476

Internet Address is 10.1.2.2/24 Primary

Encapsulation is TUNNEL, service-loopback-group ID is 1.

Tunnel source 2.2.2.2, destination 1.1.1.1

Tunnel bandwidth 64 (kbps)

Tunnel protocol/transport GRE/IP

GRE key disabled

Checksumming of GRE packets disabled

Last clearing of counters: Never

Last 300 seconds input: 2 bytes/sec, 0 packets/sec

Last 300 seconds output: 2 bytes/sec, 0 packets/sec

10 packets input, 840 bytes

0 input error

10 packets output, 840 bytes

0 output error

# 从Switch B可以Ping通Switch A上VLAN接口100的地址。

[SwitchB] ping 10.1.1.1

PING 10.1.1.1: 56 data bytes, press CTRL_C to break

Reply from 10.1.1.1: bytes=56 Sequence=1 ttl=255 time=2 ms

Reply from 10.1.1.1: bytes=56 Sequence=2 ttl=255 time=2 ms

Reply from 10.1.1.1: bytes=56 Sequence=3 ttl=255 time=2 ms

Reply from 10.1.1.1: bytes=56 Sequence=4 ttl=255 time=2 ms

Reply from 10.1.1.1: bytes=56 Sequence=5 ttl=255 time=2 ms

--- 10.1.1.1 ping statistics ---

5 packet(s) transmitted

5 packet(s) received

0.00% packet loss

round-trip min/avg/max = 2/2/2 ms


1.6 GRE over IPv6典型配置举例

1.6.1 GRE over IPv6典型配置举例

1. 组网需求

运行IP协议的两个子网Group1和Group2通过IPv6网络相连。通过在交换机SwitchA和交换机SwitchB之间建立GRE over IPv6隧道，实现两个子网穿越IPv6网络互联。

2. 组网图

图1-5 GRE over IPv6应用组网图

3. 配置步骤

在开始下面的配置之前，需确保Switch A和Switch B之间路由可达。

(1) 配置交换机Switch A

<SwitchA> system-view

# 使能IPv6。

[SwitchA] ipv6

# 配置接口Vlan-interface100。

[SwitchA] vlan 100

[SwitchA-vlan100] port Ethernet 1/0/1

[SwitchA-vlan100] quit

[SwitchA] interface vlan-interface 100

[SwitchA-Vlan-interface100] ip address 10.1.1.1 255.255.255.0

[SwitchA-Vlan-interface100] quit

# 配置接口Vlan-interface101（隧道的实际物理接口）。

[SwitchA] vlan 101

[SwitchA-vlan101] port Ethernet 1/0/2

[SwitchA-vlan101] quit

[SwitchA] interface vlan-interface 101

[SwitchA-Vlan-interface101] ipv6 address 2002::1:1 64

[SwitchA-Vlan-interface101] quit

# 创建业务环回组1，并配置服务类型为tunnel。

[SwitchA] service-loopback group 1 type tunnel

# 将接口Ethernet1/0/3加入业务环回组1，并在该端口上关闭STP、NDP和LLDP功能。

[SwitchA] interface Ethernet 1/0/3

[SwitchA-Ethernet1/0/3] undo stp enable

[SwitchA-Ethernet1/0/3] undo ndp enable

[SwitchA-Ethernet1/0/3] undo lldp enable

[SwitchA-Ethernet1/0/3] port service-loopback group 1

[SwitchA-Ethernet1/0/3] quit

# 创建Tunnel0接口。

[SwitchA] interface tunnel 0

# 配置Tunnel0接口的IP地址。

[SwitchA-Tunnel0] ip address 10.1.2.1 255.255.255.0

# 配置Tunnel封装模式为GRE over IPv6隧道模式。

[SwitchA-Tunnel0] tunnel-protocol gre ipv6

# 配置Tunnel0接口的源地址（Vlan-interface101的IP地址）。

[SwitchA-Tunnel0] source 2002::1:1

# 配置Tunnel0接口的目的地址（Switch B的Vlan-interface101的IP地址）。

[SwitchA-Tunnel0] destination 2001::2:1

# 在Tunnel接口视图下指定隧道引用业务环回组1。

[SwitchA-Tunnel0] service-loopback-group 1

[SwitchA-Tunnel0] quit

# 配置从Switch A经过Tunnel1接口到Group 2的静态路由。

[SwitchA] ip route-static 10.1.3.0 255.255.255.0 tunnel 0

(2) 配置交换机Switch B

<SwitchB> system-view

# 使能IPv6。

[SwitchB] ipv6

# 配置接口Vlan-interface100。

[SwitchB] vlan 100

[SwitchB-vlan100] port Ethernet 1/0/1

[SwitchB-vlan100] quit

[SwitchB] interface vlan-interface 100

[SwitchB-Vlan-interface100] ip address 10.1.3.1 255.255.255.0

[SwitchB-Vlan-interface100] quit

# 配置接口Vlan-interface101（隧道的实际物理接口）。

[SwitchB] vlan 101

[SwitchB-vlan101] port Ethernet 1/0/2

[SwitchB-vlan101] quit

[SwitchB] interface vlan-interface 101

[SwitchB-Vlan-interface101] ipv6 address 2001::2:1 64

[SwitchB-Vlan-interface101] quit

# 创建业务环回组1，并配置服务类型为tunnel。

[SwitchB] service-loopback group 1 type tunnel

# 将接口Ethernet1/0/3加入业务环回组1，并在该端口上关闭STP、NDP和LLDP功能。

[SwitchB] interface Ethernet 1/0/3

[SwitchB-Ethernet1/0/3] undo stp enable

[SwitchB-Ethernet1/0/3] undo ndp enable

[SwitchB-Ethernet1/0/3] undo lldp enable

[SwitchB-Ethernet1/0/3] port service-loopback group 1

[SwitchB-Ethernet1/0/3] quit

# 创建Tunnel0接口。

[SwitchB] interface tunnel 0

# 配置Tunnel0接口的IP地址。

[SwitchB-Tunnel0] ip address 10.1.2.2 255.255.255.0

# 配置Tunnel封装模式为GRE over IPv6隧道模式。

[SwitchB-Tunnel0] tunnel-protocol gre ipv6

# 配置Tunnel0接口的源地址（Vlan-interface101的IP地址）。

[SwitchB-Tunnel0] source 2001::2:1

# 配置Tunnel0接口的目的地址（Switch A的Vlan-interface101的IP地址）。

[SwitchB-Tunnel0] destination 2002::1:1

# 在Tunnel接口视图下指定隧道引用业务环回组1。

[SwitchB-Tunnel0] service-loopback-group 1

[SwitchB-Tunnel0] quit

# 配置从Switch B经过Tunnel2接口到Group 1的静态路由。

[SwitchB] ip route-static 10.1.1.0 255.255.255.0 tunnel 0

(3) 验证配置结果

# 完成以上配置后，分别查看Switch A和Switch B的Tunnel接口状态。

[SwitchA] display interface Tunnel 0

Tunnel0 current state: UP

Line protocol current state: UP

Description: Tunnel0 Interface

The Maximum Transmit Unit is 1456

Internet Address is 10.1.2.1/24 Primary

Encapsulation is TUNNEL, service-loopback-group ID is 1.

Tunnel source 2002::1:1, destination 2001::2:1

Tunnel protocol/transport GRE/IPv6

GRE key disabled

Checksumming of GRE packets disabled

Last clearing of counters: Never

Last 300 seconds input: 0 bytes/sec, 0 packets/sec

Last 300 seconds output: 0 bytes/sec, 0 packets/sec

10 packets input, 840 bytes

0 input error

10 packets output, 840 bytes

0 output error

[SwitchB] display interface Tunnel 0

Tunnel0 current state: UP

Line protocol current state: UP

Description: Tunnel0 Interface

The Maximum Transmit Unit is 1456

Internet Address is 10.1.2.2/24 Primary

Encapsulation is TUNNEL, service-loopback-group ID is 1.

Tunnel source 2001::2:1, destination 2002::1:1

Tunnel protocol/transport GRE/IPv6

GRE key disabled

Checksumming of GRE packets disabled

Last clearing of counters: Never

Last 300 seconds input: 0 bytes/sec, 0 packets/sec

Last 300 seconds output: 0 bytes/sec, 0 packets/sec

10 packets input, 840 bytes

0 input error

10 packets output, 840 bytes

0 output error

# 从Switch B可以Ping通Switch A上VLAN接口100的地址。

[SwitchB] ping 10.1.1.1

PING 10.1.1.1: 56 data bytes, press CTRL_C to break

Reply from 10.1.1.1: bytes=56 Sequence=1 ttl=255 time=3 ms

Reply from 10.1.1.1: bytes=56 Sequence=2 ttl=255 time=2 ms

Reply from 10.1.1.1: bytes=56 Sequence=3 ttl=255 time=2 ms

Reply from 10.1.1.1: bytes=56 Sequence=4 ttl=255 time=2 ms

Reply from 10.1.1.1: bytes=56 Sequence=5 ttl=255 time=3 ms

--- 10.1.1.1 ping statistics ---

5 packet(s) transmitted

5 packet(s) received

0.00% packet loss

round-trip min/avg/max = 2/2/3 ms


1.7 常见配置错误举例

GRE的配置相对比较简单，但要注意配置的一致性，大部分的错误都可以通过使用调试命令 debugging gre 和 debugging tunnel 定位。这里仅就一种错误进行分析，如图1-6 所示。

图1-6 GRE排错示例

故障之一：Tunnel两端接口配置正确且Tunnel两端可以ping通，但Host A和Host B之间却无法ping通。

故障排除：可以按照如下步骤进行。

l 在任意视图下，在Device A和Device C分别执行 display ip routing-table 命令，观察在Device A是否有经过Tunnel0接口到10.2.0.0/16的路由；在Device C是否有经过Tunnel0接口到10.1.0.0/16的路由。

l 如果在上一步的输出中发现缺少相应的静态路由，在系统视图下使用 ip route-static 命令添加。以Device A为例，配置如下：

[DeviceA] ip route-static 10.2.0.0 255.255.0.0 tunnel 0


00-前言

前 言

H3C S3600V2系列以太网交换机配置指导共分为十本手册，介绍了S3600V2系列以太网交换机各软件特性的原理及其配置方法，包含原理简介、配置任务描述和配置举例。《三层技术-IP路由配置指导》主要介绍路由协议的原理和配置，包括IPv4、IPv6网络的各种路由学习技术，以及影响路由选择或者路由表生成的策略。

前言部分包含如下内容：

l 读者对象

l 本书约定

l 产品配套资料

l 资料获取方式

l 技术支持

l 资料意见反馈

读者对象

本手册主要适用于如下工程师：

l 网络规划人员

l 现场技术支持与维护人员

l 负责网络配置和维护的网络管理员

本书约定

1.命令行格式约定

格 式 | 意 义
粗体 | 命令行关键字（命令中保持不变、必须照输的部分）采用加粗字体表示。
斜体 | 命令行参数（命令中必须由实际值进行替代的部分）采用斜体表示。
[ ] | 表示用“[ ]”括起来的部分在命令配置时是可选的。
{ x | y | ... } | 表示从两个或多个选项中选取一个。
[ x | y | ... ] | 表示从两个或多个选项中选取一个或者不选。
{ x | y | ... } * | 表示从两个或多个选项中选取多个，最少选取一个，最多选取所有选项。
[ x | y | ... ] * | 表示从两个或多个选项中选取多个或者不选。
&<1-n> | 表示符号&前面的参数可以重复输入1～n次。
# | 由“#”号开始的行表示为注释行。

2.图形界面格式约定

格 式 | 意 义
< > | 带尖括号“< >”表示按钮名，如“单击<确定>按钮”。
[ ] | 带方括号“[ ]”表示窗口名、菜单名和数据表，如“弹出[新建用户]窗口”。
/ | 多级菜单用“/”隔开。如[文件/新建/文件夹]多级菜单表示[文件]菜单下的[新建]子菜单下的[文件夹]菜单项。

3.各类标志

本书还采用各种醒目标志来表示在操作过程中应该特别注意的地方，这些标志的意义如下：

该标志后的注释需给予格外关注，不当的操作可能会对人身造成伤害。

提醒操作中应注意的事项，不当的操作可能会导致数据丢失或者设备损坏。

为确保设备配置成功或者正常工作而需要特别关注的操作或信息。

对操作内容的描述进行必要的补充和说明。

配置、操作、或使用设备的技巧、小窍门。

4.图标约定

本书使用的图标及其含义如下：

该图标及其相关描述文字代表一般网络设备，如路由器、交换机、防火墙等。

该图标及其相关描述文字代表一般意义下的路由器，以及其他运行了路由协议的设备。

该图标及其相关描述文字代表二、三层以太网交换机，以及运行了二层协议的设备。

产品配套资料

H3C S3600V2系列以太网交换机的配套资料包括如下部分：

大类 | 资料名称 | 内容介绍
产品知识介绍 | 产品彩页 | 帮助您了解产品的主要规格参数及亮点
 | RPS电源用户手册 | 帮助您了解产品支持的RPS电源的外观、功能、规格
 | H3C低端系列以太网交换机RPS电源选购指南 | 帮助您了解各种RPS电源适用的交换机产品型号及RPS电源配套电缆的相关规格
 | H3C低端系列以太网交换机可插拔模块手册 | 帮助您了解产品支持的可插拔模块类型、外观和规格
设备安装 | 安全兼容性手册 | 列出产品的兼容性声明，并对兼容性和安全的细节进行说明
 | H3C 设备防雷安装指导手册 | 帮助您了解防雷接地设计和工程安装方法，以保证交换机具有良好的抗雷击性能
 | 快速安装指南 | 指导您对设备进行初始安装，通常针对最常用的情况，减少您的检索时间
 | 安装指导 | 帮助您详细了解设备硬件规格和安装方法，指导您对设备进行安装
 | H3C可插拔SFP[SFP+][XFP]模块安装指南 | 帮助您掌握SFP/SFP+/XFP模块的正确安装方法，避免因操作不当而造成器件损坏
业务配置 | 配置指导 | 帮助您掌握设备软件功能的配置方法及配置步骤
 | 命令参考 | 详细介绍设备的命令，相当于命令字典，方便您查阅各个命令的功能
运行维护 | H3C系列以太网交换机登录密码恢复手册 | 指导您在设备登录密码丢失的情况下，找回密码、或重新配置登录密码
 | 故障处理手册 | 指导您快速定位并处理软件故障
 | 版本说明书 | 帮助您了解产品版本的相关信息（包括：版本配套说明、兼容性说明、特性变更说明、技术支持信息）及软件升级方法

资料获取方式

您可以通过H3C网站（ www.h3c.com.cn ）获取最新的产品资料：

H3C网站与产品资料相关的主要栏目介绍如下：

l [服务支持/文档中心] ：可以获取硬件安装类、软件升级类、配置类或维护类等产品资料。

l [产品技术] ：可以获取产品介绍和技术介绍的文档，包括产品相关介绍、技术介绍、技术白皮书等。

l [解决方案] ：可以获取解决方案类资料。

l [服务支持/软件下载] ：可以获取与软件版本配套的资料。

技术支持

用户支持邮箱：customer_service@h3c.com

技术支持热线电话：400-810-0504（手机、固话均可拨打）

网址： http://www.h3c.com.cn

资料意见反馈

如果您在使用过程中发现产品资料的任何问题，可以通过以下方式反馈：

E-mail：info@h3c.com

感谢您的反馈，让我们做得更好！


1 IP路由基础配置

l 本文所指的路由器代表运行了路由协议的三层设备。

l 除配置举例外，本文组网图中涉及的接口类型是为了方便描述而进行的示意，并不代表实际设备具有该类型的接口。

l 路由功能中所指的“接口”为三层口，包括VLAN接口、三层以太网端口等。三层以太网端口是指被配置为三层模式的以太网端口，有关以太网端口模式切换的操作，请参见“二层技术-以太网交换配置指导”中的“以太网端口配置”。

l S3600V2-SI系列交换机不支持OSPF、BGP、IS-IS、OSPFv3、IPv6 BGP和IPv6 IS-IS功能，相关描述对S3600V2-SI系列交换机不适用。

相关链接

  • 1.1 IP路由简介
  • 1.2 路由表显示和维护
父主题： 01-IP路由基础配置


1.1 IP路由简介

在网络中路由器根据所收到的报文的目的地址选择一条合适的路径，并将报文转发到下一个路由器。路径中最后的路由器负责将报文转发给目的主机。

路由就是报文在转发过程中的路径信息，用来指导报文转发。

根据路由目的地的不同，路由可划分为：

l 网段路由：目的地为网段，子网掩码长度小于32位

l 主机路由：目的地为主机，子网掩码长度为32位

另外，根据目的地与该路由器是否直接相连，路由又可划分为：

l 直接路由：目的地所在网络与路由器直接相连

l 间接路由：目的地所在网络与路由器非直接相连

1.1.1 路由表

1. 路由表简介

路由器通过路由表选择路由，把优选路由下发到FIB（Forwarding Information Base，转发信息库）表中，通过FIB表指导报文转发。每个路由器中都至少保存着一张路由表和一张FIB表。

路由表中保存了各种路由协议发现的路由，根据来源不同，通常分为以下三类：

l 直连路由：链路层协议发现的路由，也称为接口路由。

l 静态路由：网络管理员手工配置的路由。静态路由配置方便，对系统要求低，适用于拓扑结构简单并且稳定的小型网络。其缺点是每当网络拓扑结构发生变化，都需要手工重新配置，不能自动适应。

l 动态路由：动态路由协议发现的路由。

FIB表中每条转发项都指明了要到达某子网或某主机的报文应通过路由器的哪个物理接口发送，就可到达该路径的下一个路由器，或者不需再经过别的路由器便可传送到直接相连的网络中的目的主机。

FIB表的具体内容，请参见“三层技术-IP业务配置指导”中的“IP性能优化”。

2. 路由表内容

通过命令 display ip routing-table 可以显示路由表的摘要信息，例如：

<Sysname> display ip routing-table

Routing Tables: Public

Destinations : 7 Routes : 7

Destination/Mask Proto Pre Cost NextHop Interface

1.1.1.0/24 Direct 0 0 1.1.1.1 Vlan11

2.2.2.0/24 Static 60 0 12.2.2.2 Vlan12

80.1.1.0/24 OSPF 10 2 80.1.1.1 Vlan13

......（省略部分显示信息）

路由表中包含了下列关键项：

l Destination：目的地址。用来标识IP报文的目的地址或目的网络。

l Mask：网络掩码。与目的地址一起来标识目的主机或路由器所在的网段的地址。将目的地址和网络掩码“逻辑与”后可得到目的主机或路由器所在网段的地址。例如：目的地址为129.102.8.10、掩码为255.255.0.0的主机或路由器所在网段的地址为129.102.0.0。掩码由若干个连续“1”构成，既可以用点分十进制法表示，也可以用掩码中连续“1”的个数来表示。

l Pre：路由优先级。对于同一目的地，可能存在若干条不同下一跳的路由，这些不同的路由可能是由不同的路由协议发现的，也可能是手工配置的静态路由。优先级高（数值小）的路由将成为当前的最优路由。

l Cost：路由的度量值。当到达同一目的地的多条路由具有相同的优先级时，路由的度量值越小的路由将成为当前的最优路由。

l NextHop：下一跳地址。此路由的下一跳IP地址。

l Interface：出接口。指明IP报文将从该路由器哪个接口转发。

1.1.2 路由协议分类

路由协议有自己的路由算法，能够自动适应网络拓扑的变化，适用于具有一定规模的网络拓扑。其缺点是配置比较复杂，对系统的要求高于静态路由，并占用一定的网络资源。

对路由协议的分类可采用以下不同标准。

1. 根据作用范围

l 内部网关协议（Interior Gateway Protocol，简称IGP）：在一个自治系统内部运行，常见的IGP协议包括RIP、OSPF和IS-IS。

l 外部网关协议（Exterior Gateway Protocol，简称EGP）：运行于不同自治系统之间，BGP是目前最常用的EGP。

AS（Autonomous System，自治系统）是拥有同一选路策略，并在同一技术管理部门下运行的一组路由器。

2. 根据使用算法

l 距离矢量（Distance-Vector）协议：包括RIP和BGP。其中，BGP也被称为路径矢量协议（Path-Vector）。

l 链路状态（Link-State）协议：包括OSPF和IS-IS。

3. 根据目的地址类型

l 单播路由协议：包括RIP、OSPF、BGP和IS-IS等。

l 组播路由协议：包括PIM-SM、PIM-DM等。

本手册仅介绍单播路由协议，组播路由协议请参见“IP组播配置指导”。

4. 根据IP协议版本

l IPv4路由协议：包括RIP、OSPF、BGP和IS-IS等。

l IPv6路由协议：包括RIPng、OSPFv3、IPv6 BGP和IPv6 IS-IS等。

1.1.3 路由优先级

对于相同的目的地，不同的路由协议、直连路由和静态路由可能会发现不同的路由，但这些路由并不都是最优的。为了判断最优路由，各路由协议、直连路由和静态路由都被赋予了一个优先级，具有较高优先级的路由协议发现的路由将成为当前路由。

除直连路由外，各路由协议的优先级都可由用户手工进行配置。另外，每条静态路由的优先级都可以不相同。缺省的路由优先级如表1-1 所示，数值越小表明优先级越高。

表1-1 缺省的路由优先级

路由协议或路由种类 | 缺省的路由优先级
DIRECT（直连路由） | 0
OSPF | 10
IS-IS | 15
STATIC（静态路由） | 60
RIP | 100
OSPF ASE | 150
OSPF NSSA | 150
IBGP | 255
EBGP | 255
UNKNOWN（来自不可信源端的路由） | 256

1.1.4 负载分担

对同一路由协议来说，允许配置多条目的地相同且开销也相同的路由。当到同一目的地的路由中，没有更高优先级的路由时，这几条路由都被采纳，在转发去往该目的地的报文时，依次通过各条路径发送，从而实现网络的负载分担。

目前支持负载分担有静态路由/IPv6静态路由、RIP/RIPng、OSPF/OSPFv3、BGP/IPv6 BGP和IS-IS/IPv6 IS-IS。

1.1.5 路由备份

使用路由备份可以提高网络的可靠性。用户可根据实际情况，配置到同一目的地的多条路由，其中优先级最高的一条路由作为主路由，其余优先级较低的路由作为备份路由。

正常情况下，路由器采用主路由转发数据。

(1) 当链路出现故障时，该路由变为非激活状态，路由器选择备份路由中优先级最高的转发数据。这样，也就实现了从主路由到备份路由的切换。

(2) 当链路恢复正常时，路由器重新选择路由。由于主路由的优先级最高，路由器选择主路由来发送数据。这就是从备份路由到主路由的切换。

1.1.6 路由迭代

对于BGP路由（直连EBGP路由除外）和静态路由（配置了下一跳）以及多跳RIP路由而言，其所携带的下一跳信息可能并不是直接可达，需要找到到达下一跳的直连出接口。路由迭代的过程就是通过路由的下一跳信息来找到直连出接口的过程。

而对于OSPF和IS-IS等链路状态路由协议而言，其下一跳是直接在路由计算时得到的，不需要进行路由迭代。

1.1.7 路由信息共享

由于各路由协议采用的路由算法不同，不同的路由协议可能会发现不同的路由。如果网络规模较大，当使用多种路由协议时，往往需要在不同的路由协议间能够共享各自发现的路由。

各路由协议都可以引入其它路由协议的路由、直连路由和静态路由，具体内容请参见本手册中各路由协议模块有关引入外部路由的描述。


1.2 路由表显示和维护

在任意视图下执行 display 命令可以显示路由表信息。在用户视图下执行 reset 命令可以清除路由表的统计信息。

表1-2 路由表显示和维护

操作 | 命令
显示路由表的信息 | display ip routing-table [ vpn-instance vpn-instance-name ] [ verbose ] [ | { begin | exclude | include } regular-expression ]
显示通过指定基本访问控制列表过滤的路由 | display ip routing-table [ vpn-instance vpn-instance-name ] acl acl-number [ verbose ] [ | { begin | exclude | include } regular-expression ]
显示指定目的地址的路由 | display ip routing-table [ vpn-instance vpn-instance-name ] ip-address [ mask | mask-length ] [ longer-match ] [ verbose ] [ | { begin | exclude | include } regular-expression ]
显示指定目的地址范围内的路由 | display ip routing-table [ vpn-instance vpn-instance-name ] ip-address1 { mask | mask-length } ip-address2 { mask | mask-length } [ verbose ] [ | { begin | exclude | include } regular-expression ]
显示通过指定前缀列表过滤的路由 | display ip routing-table [ vpn-instance vpn-instance-name ] ip-prefix ip-prefix-name [ verbose ] [ | { begin | exclude | include } regular-expression ]
显示指定协议发现的路由 | display ip routing-table [ vpn-instance vpn-instance-name ] protocol protocol [ inactive | verbose ] [ | { begin | exclude | include } regular-expression ]
显示路由表中的路由统计信息 | display ip routing-table [ vpn-instance vpn-instance-name ] statistics [ | { begin | exclude | include } regular-expression ]
清除路由表中的综合路由统计信息 | reset ip routing-table statistics protocol [ vpn-instance vpn-instance-name ] { protocol | all }
显示IPv6路由表的信息 | display ipv6 routing-table [ verbose ] [ | { begin | exclude | include } regular-expression ]
显示经过指定的基本IPv6 ACL（访问控制列表）过滤的路由 | display ipv6 routing-table acl acl6-number [ verbose ] [ | { begin | exclude | include } regular-expression ]
显示指定目的地址的IPv6路由信息 | display ipv6 routing-table ipv6-address prefix-length [ longer-match ] [ verbose ] [ | { begin | exclude | include } regular-expression ]
显示指定地址范围内的IPv6路由信息 | display ipv6 routing-table ipv6-address1 prefix-length1 ipv6-address2 prefix-length2 [ verbose ] [ | { begin | exclude | include } regular-expression ]
显示经过指定IPv6前缀列表过滤的路由信息 | display ipv6 routing-table ipv6-prefix ipv6-prefix-name [ verbose ] [ | { begin | exclude | include } regular-expression ]
显示指定协议发现的IPv6路由信息 | display ipv6 routing-table protocol protocol [ inactive | verbose ] [ | { begin | exclude | include } regular-expression ]
显示IPv6路由表中的综合路由统计信息 | display ipv6 routing-table statistics [ | { begin | exclude | include } regular-expression ]
清除IPv6路由表中的综合路由统计信息 | reset ipv6 routing-table statistics protocol { protocol | all }


1 静态路由配置

本文所指的路由器代表运行了路由协议的三层设备。

相关链接

  • 1.1 简介
  • 1.2 配置静态路由
  • 1.3 配置静态路由与BFD联动
  • 1.4 配置静态路由快速重路由功能
  • 1.5 静态路由显示和维护
  • 1.6 静态路由典型配置举例
父主题： 02-静态路由配置


1.1 简介

1.1.1 静态路由

静态路由是一种特殊的路由，由管理员手工配置。配置静态路由后，去往指定目的地的数据报文将按照管理员指定的路径进行转发。

在组网结构比较简单的网络中，只需配置静态路由就可以实现网络互通。恰当地设置和使用静态路由可以改善网络的性能，并可为重要的网络应用保证带宽。

静态路由的缺点在于：不能自动适应网络拓扑结构的变化，当网络发生故障或者拓扑发生变化后，可能会出现路由不可达，导致网络中断，此时必须由网络管理员手工修改静态路由的配置。

1.1.2 缺省路由

如果到达某个指定网络的数据报文在路由器的路由表里找不到对应的表项，那么该报文将被路由器丢弃。

通过给当前路由器配置一条缺省路由，那些在路由表里找不到匹配路由表入口项的数据报文将会转发给另外一台路由器（如果这台路由器的路由能力比较强，包括到达大部分所有网络的路由信息），由另外一台路由器进行报文的转发。

缺省路由是在路由器没有找到匹配的路由表入口项时才使用的路由：

l 如果报文的目的地址不能与路由表的任何入口项相匹配，那么该报文将选取缺省路由。

l 如果没有缺省路由且报文的目的地不在路由表中，那么该报文将被丢弃。

缺省路由有两种生成方式：

l 第一种是通过网络管理员在路由器上配置到网络0.0.0.0（掩码也为0.0.0.0）的静态路由，对于一个到来的数据报文，如果在当前路由器里找不到匹配的路由表项，将会把报文发给在配置的静态路由里指定的下一跳路由器。

l 第二种是通过动态路由协议生成（如OSPF、IS-IS和RIP），由路由能力比较强的路由器将缺省路由发布给其它路由器，其它路由器在自己的路由表里生成指向那台路由器的缺省路由。

1.1.3 静态路由应用

配置静态路由时，需要了解以下内容：

(1) 目的地址与掩码

在 ip route-static 命令中，IPv4地址为点分十进制格式，掩码可以用点分十进制表示，也可用掩码长度（即掩码中连续‘1’的位数）表示。

(2) 出接口和下一跳地址

在配置静态路由时，可指定出接口，也可指定下一跳地址。指定出接口还是指定下一跳地址要视具体情况而定，下一跳地址不能为本地接口IP地址，否则路由不会生效。

实际上，所有的路由项都必须明确下一跳地址。在发送报文时，首先根据报文的目的地址寻找路由表中与之匹配的路由。只有指定了下一跳地址，链路层才能找到对应的链路层地址，并转发报文。

指定出接口时需要注意：

l 对于Null0接口，配置了出接口就不再配置下一跳地址。

l 在配置静态路由时，如果配置广播接口（如以太网接口、VLAN接口等）为出接口，则必须同时指定其对应的下一跳地址。

(3) 其它属性

对于不同的静态路由，可以为它们配置不同的优先级，从而更灵活地应用路由管理策略。例如：配置到达相同目的地的多条路由，如果指定相同优先级，则可实现负载分担，如果指定不同优先级，则可实现路由备份。


1.2 配置静态路由

1.2.1 配置准备

在配置静态路由之前，需完成以下任务：

l 配置相关接口的物理参数

l 配置相关接口的链路层属性

l 配置相关接口的IP地址

1.2.2 配置静态路由

表1-1 配置静态路由

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置静态路由 | ip route-static dest-address { mask | mask-length } { next-hop-address [ track track-entry-number ] | interface-type interface-number [ next-hop-address ] | vpn-instance d-vpn-instance-name next-hop-address [ track track-entry-number ] } [ preference preference-value ] [ tag tag-value ] [ permanent ] [ description description-text ] | 二者必选其一 缺省情况下，静态路由的优先级 preference 为60，静态路由 tag 值为0，未配置描述信息 参数 permanent 不能和 track 一起进行配置。即使在出接口down时，配置的永久静态路由仍然保持active状态
 | ip route-static vpn-instance s-vpn-instance-name&<1-6> dest-address { mask | mask-length } { next-hop-address [ public ] [ track track-entry-number ] | interface-type interface-number [ next-hop-address ] | vpn-instance d-vpn-instance-name next-hop-address [ track track-entry-number ] } [ preference preference-value ] [ tag tag-value ] [ permanent ] [ description description-text ]
配置静态路由的缺省优先级 | ip route-static default-preference default-preference-value | 可选 缺省情况下，静态路由的缺省优先级为60

l 在配置静态路由时，如果先指定下一跳地址，然后将该地址配置为本地接口（如以太网接口、VLAN接口等）的IP地址，静态路由不会生效。

l 如果在配置静态路由时没有指定优先级，就会使用缺省优先级。重新设置缺省优先级后，新设置的缺省优先级仅对新增的静态路由有效。

l 设置静态路由的Tag值，可以在路由策略中根据Tag值对路由进行灵活的控制。

l 在使用 ip route-static 配置静态路由时，如果将目的地址与掩码配置为全零（0.0.0.0 0.0.0.0），则表示配置的是缺省路由。

l 关于Track的详细介绍，请参见“可靠性配置指导”中的“Track”。


1.3 配置静态路由与BFD联动

BFD（Bidirectional Forwarding Detection，双向转发检测）提供了一个通用的、标准化的、介质无关、协议无关的快速故障检测机制，可以为各上层协议如路由协议等统一地快速检测两台路由器间双向转发路径的故障。关于BFD的详细介绍，请参见“可靠性配置指导”中的“BFD”。

BFD需要检测两端建立会话。对于动态路由协议来说是有邻居概念的，因此在检测两端动态路由协议都会通知BFD会话邻居信息，从而检测两端的BFD任务可以通过向邻居发送BFD控制报文来建立会话。由于静态路由没有什么邻居的概念一般使用以下方法解决。

1.3.1 双向检测

静态路由使用控制报文方式BFD功能时，对端也必须存在对应的BFD会话。检测两个方向上的链路状态，实现毫秒级别的链路故障检测。

控制报文方式支持直连下一跳和非直连下一跳。当配置出接口和下一跳时，BFD建立直连会话；当配置非直连下一跳和指定BFD源IP地址时，BFD建立非直连会话。

表1-2 配置静态路由与BFD联动（双向检测—直连）

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置静态路由运行BFD | ip route-static dest-address { mask | mask-length } interface-type interface-number next-hop-address bfd control-packet [ preference preference-value ] [ tag tag-value ] [ description description-text ] | 二者必选其一
 | ip route-static vpn-instance s-vpn-instance-name&<1-6> dest-address { mask | mask-length } interface-type interface-number next-hop-address bfd control-packet [ preference preference-value ] [ tag tag-value ] [ description description-text ]

表1-3 配置静态路由与BFD联动（双向检测—非直连）

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置静态路由运行BFD | ip route-static dest-address { mask | mask-length } next-hop-address bfd control-packet bfd-source ip-address [ preference preference-value ] [ tag tag-value ] [ description description-text ] | 二者必选其一
 | ip route-static vpn-instance s-vpn-instance-name&<1-6> dest-address { mask | mask-length } next-hop-address bfd control-packet bfd-source ip-address [ preference preference-value ] [ tag tag-value ] [ description description-text ]

1.3.2 单跳检测

利用BFD echo报文，通过报文建立会话，echo报文的目的地址为本设备接口地址，发送给下一跳设备后会直接转发回本设备而不经过BFD任务处理。这里所说的“单跳”是IP的一跳。

表1-4 配置静态路由与BFD联动（单跳检测）

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置echo报文源地址 | bfd echo-source-ip ip-address | 必选 缺省情况下，没有配置echo报文源地址
配置静态路由运行BFD | ip route-static dest-address { mask | mask-length } interface-type interface-number next-hop-address bfd echo-packet [ preference preference-value ] [ tag tag-value ] [ description description-text ] | 二者必选其一
 | ip route-static vpn-instance s-vpn-instance-name&<1-6> dest-address { mask | mask-length } interface-type interface-number next-hop-address bfd echo-packet [ preference preference-value ] [ tag tag-value ] [ description description-text ]

l 路由振荡时，使能BFD检测功能可能会加剧振荡，需谨慎使用。

l 当BFD会话工作于echo报文方式时，必须配置echo报文源地址。另外，仅在一端建立BFD会话。

l 静态路由如果出接口为含SPOOFING属性的接口，不能使用BFD进行检测。


1.4 配置静态路由快速重路由功能

当网络中的链路或某台路由器发生故障时，需要通过故障链路或故障路由器传输才能到达目的地的报文将会丢失或产生路由环路，数据流量将会被中断。

为了尽可能避免网络故障导致的流量中断，网络管理员可以根据需要配置静态路由快速重路由功能。

图1-1 静态路由快速重路由功能示意图

如 图1-1 所示，通过配置快速重路由功能，网络管理员可以为路由指定备份下一跳，当路由器探测到网络故障时，路由器会使用事先获取好的备份下一跳替换失效下一跳，通过备份下一跳来指导报文的转发，从而避免了流量中断。

1. 配置准备

要为静态路由配置快速重路由功能，需要先配置路由策略，通过 apply fast-reroute backup-interface 命令在路由策略中指定备份下一跳；关于 apply fast-reroute backup-interface 命令以及路由策略的相关配置，请参见“三层技术-IP路由配置指导”中的“路由策略”。

2. 配置过程

表1-5 配置静态路由快速重路由功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置BFD echo报文源地址 | bfd echo-source-ip ip-address | 必选 缺省情况下，没有配置BFD echo报文源地址
配置静态路由支持快速重路由功能 | ip route-static [ vpn-instance vpn-instance-name ] fast-reroute route-policy route-policy-name | 必选 缺省情况下，没有配置静态路由支持快速重路由功能

l 静态路由支持快速重路由功能仅对在配置中同时指定了出接口和下一跳的静态路由有效。

l 静态路由快速重路由功能不能与静态路由BFD功能同时使用。


1.5 静态路由显示和维护

在完成上述配置后，在任意视图下执行 display 命令查看静态路由配置的运行情况并检验配置结果。

在系统视图下执行 delete 命令可以删除配置的所有静态路由。

表1-6 静态路由显示和维护

操作 | 命令
查看静态路由表信息 | display ip routing-table protocol static [ inactive | verbose ] [ | { begin | exclude | include } regular-expression ]
删除所有静态路由 | delete [ vpn-instance vpn-instance-name ] static-routes all

命令 display ip routing-table protocol static [ inactive | verbose ] [ | { begin | exclude | include } regular-expression ]的详细情况请参见“三层技术-IP路由命令参考”中的“IP路由基础”。


1.6 静态路由典型配置举例

1.6.1 静态路由基本功能配置举例

1. 组网需求

路由器各接口及主机的IP地址和掩码如 图1-2 所示。要求采用静态路由，使图中任意两台主机之间都能互通。

2. 组网图

图1-2 静态路由配置组网图

3. 配置步骤

(1) 配置各接口的IP地址（略）

(2) 配置静态路由

# 在Switch A上配置缺省路由。

<SwitchA> system-view

[SwitchA] ip route-static 0.0.0.0 0.0.0.0 1.1.4.2

# 在Switch B上配置两条静态路由。

<SwitchB> system-view

[SwitchB] ip route-static 1.1.2.0 255.255.255.0 1.1.4.1

[SwitchB] ip route-static 1.1.3.0 255.255.255.0 1.1.5.6

# 在Switch C上配置缺省路由。

<SwitchC> system-view

[SwitchC] ip route-static 0.0.0.0 0.0.0.0 1.1.5.5

(3) 配置主机

配置Host A的缺省网关为1.1.2.3，Host B的缺省网关为1.1.6.1，Host C的缺省网关为1.1.3.1，具体配置过程略。

(4) 查看配置结果

# 显示Switch A的IP路由表。

[SwitchA] display ip routing-table

Routing Tables: Public

Destinations : 7 Routes : 7

Destination/Mask Proto Pre Cost NextHop Interface

0.0.0.0/0 Static 60 0 1.1.4.2 Vlan500

1.1.2.0/24 Direct 0 0 1.1.2.3 Vlan300

1.1.2.3/32 Direct 0 0 127.0.0.1 InLoop0

1.1.4.0/30 Direct 0 0 1.1.4.1 Vlan500

1.1.4.1/32 Direct 0 0 127.0.0.1 InLoop0

127.0.0.0/8 Direct 0 0 127.0.0.1 InLoop0

127.0.0.1/32 Direct 0 0 127.0.0.1 InLoop0

# 显示Switch B的IP路由表。

[SwitchB] display ip routing-table

Routing Tables: Public

Destinations : 10 Routes : 10

Destination/Mask Proto Pre Cost NextHop Interface

1.1.2.0/24 Static 60 0 1.1.4.1 Vlan500

1.1.3.0/24 Static 60 0 1.1.5.6 Vlan600

1.1.4.0/30 Direct 0 0 1.1.4.2 Vlan500

1.1.4.2/32 Direct 0 0 127.0.0.1 InLoop0

1.1.5.4/30 Direct 0 0 1.1.5.5 Vlan600

1.1.5.5/32 Direct 0 0 127.0.0.1 InLoop0

127.0.0.0/8 Direct 0 0 127.0.0.1 InLoop0

127.0.0.1/32 Direct 0 0 127.0.0.1 InLoop0

1.1.6.0/24 Direct 0 0 1.1.6.1 Vlan100

1.1.6.1/32 Direct 0 0 127.0.0.1 InLoop0

# 在Host B上使用 ping 命令验证Host A是否可达（假定主机安装的操作系统为Windows XP）。

C:\Documents and Settings\Administrator>ping 1.1.2.2

Pinging 1.1.2.2 with 32 bytes of data:

Reply from 1.1.2.2: bytes=32 time=1ms TTL=255

Reply from 1.1.2.2: bytes=32 time=1ms TTL=255

Reply from 1.1.2.2: bytes=32 time=1ms TTL=255

Reply from 1.1.2.2: bytes=32 time=1ms TTL=255

Ping statistics for 1.1.2.2:

Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),

Approximate round trip times in milli-seconds:

Minimum = 1ms, Maximum = 1ms, Average = 1ms

# 在Host B上使用 tracert 命令验证Host A是否可达。

C:\Documents and Settings\Administrator>tracert 1.1.2.2

Tracing route to 1.1.2.2 over a maximum of 30 hops

1 <1 ms <1 ms <1 ms 1.1.6.1

2 <1 ms <1 ms <1 ms 1.1.4.1

3 1 ms <1 ms <1 ms 1.1.2.2

Trace complete.

1.6.2 静态路由快速重路由配置举例

1. 组网需求

如图1-3 所示，Switch S、Switch A和Switch D通过静态路由实现网络互连。要求当Switch S和Switch D之间的链路出现故障时，业务可以快速切换到链路B上。

2. 组网图

图1-3 静态路由快速重路由配置举例

3. 配置步骤

(1) 配置各交换机接口的IP地址与静态路由

请按照上面组网图配置各接口的IP地址和子网掩码，具体配置过程略。

在Switch S、Switch A和Switch D上配置静态路由使Switch S可以到达Switch D的Loopback0口，Switch D可以到达Switch S的Loopback0口。

具体配置如下：

# 在Switch S上配置静态路由。

<SwitchS> system-view

[SwitchS] ip route-static 4.4.4.4 32 vlan-interface 200 13.13.13.2

[SwitchS] ip route-static 4.4.4.4 32 vlan-interface 100 12.12.12.2 preference 65

# 在Switch D上配置静态路由。

<SwitchD> system-view

[SwitchD] ip route-static 1.1.1.1 32 vlan-interface 200 13.13.13.1

[SwitchD] ip route-static 1.1.1.1 32 vlan-interface 101 24.24.24.2 preference 65

# 在Switch A上配置静态路由。

<SwitchA> system-view

[SwitchA] ip route-static 4.4.4.4 32 vlan-interface 101 24.24.24.4

[SwitchA] ip route-static 1.1.1.1 32 vlan-interface 100 12.12.12.1

(2) 配置静态路由快速重路由

# 配置Switch S。

[SwitchS] bfd echo-source-ip 1.1.1.1

[SwitchS] ip ip-prefix abc index 10 permit 4.4.4.4 32

[SwitchS] route-policy frr permit node 10

[SwitchS-route-policy] if-match ip-prefix abc

[SwitchS-route-policy] apply fast-reroute backup-interface vlan-interface 100 backup-nexthop 12.12.12.2

[SwitchS-route-policy] quit

[SwitchS] ip route-static fast-reroute route-policy frr

# 配置Switch D。

[SwitchD] bfd echo-source-ip 4.4.4.4

[SwitchD] ip ip-prefix abc index 10 permit 1.1.1.1 32

[SwitchD] route-policy frr permit node 10

[SwitchD-route-policy] if-match ip-prefix abc

[SwitchD-route-policy] apply fast-reroute backup-interface vlan-interface 101 backup-nexthop 24.24.24.2

[SwitchD-route-policy] quit

[SwitchD] ip route-static fast-reroute route-policy frr

(3) 检验配置效果

# 在Switch S上查看4.4.4.4/32路由，可以看到备份下一跳信息。

[SwitchS] display ip routing-table 4.4.4.4 verbose

Routing Table : Public

Summary Count : 1

Destination: 4.4.4.4/32

Protocol: Static Process ID: 0

Preference: 60 Cost: 0

IpPrecedence: QosLcId:

NextHop: 13.13.13.2 Interface: vlan 200

BkNextHop: 12.12.12.2 BkInterface: vlan 100

RelyNextHop: 0.0.0.0 Neighbor : 0.0.0.0

Tunnel ID: 0x0 Label: NULL

BKTunnel ID: 0x0 BKLabel: NULL

State: Active Adv Age: 00h01m27s

Tag: 0

# 在Switch D上查看1.1.1.1/32路由，可以看到备份下一跳信息。

[SwitchD] display ip routing-table 1.1.1.1 verbose

Routing Table : Public

Summary Count : 1

Destination: 1.1.1.1/32

Protocol: Static Process ID: 0

Preference: 60 Cost: 0

IpPrecedence: QosLcId:

NextHop: 13.13.13.1 Interface: vlan 200

BkNextHop: 24.24.24.2 BkInterface: vlan 101

RelyNextHop: 0.0.0.0 Neighbor : 0.0.0.0

Tunnel ID: 0x0 Label: NULL

BKTunnel ID: 0x0 BKLabel: NULL

State: Active Adv Age: 00h01m27s

Tag: 0

1.6.3 配置静态路由与BFD联动（直连）

1. 组网需求

l 在Switch A上配置静态路由可以到达120.1.1.0/24网段路由，在Switch B上配置静态路由可以到达121.1.1.0/24网段路由，并都使能BFD检测功能。

l 在Switch C上配置静态路由可以到达120.1.1.0/24网段和121.1.1.0/24网段。

l 当Switch A和Switch B通过L2 Switch通信的链路出现故障时BFD能够快速感知，并且切换到Switch C进行通信。

2. 组网图

图1-4 静态路由与BFD联动（直连）配置组网图

设备 | 接口 | IP地址 | 设备 | 接口 | IP地址
Switch A | Vlan-int10 | 12.1.1.1/24 | Switch B | Vlan-int10 | 12.1.1.2/24
 | Vlan-int11 | 10.1.1.102/24 |  | Vlan-int13 | 13.1.1.1/24
Switch C | Vlan-int11 | 10.1.1.100/24 |  |  |
 | Vlan-int13 | 13.1.1.2/24 |  |  |

3. 配置步骤

(1) 配置各接口的IP地址（略）

(2) 配置BFD

# 在Switch A上配置静态路由，并使能BFD检测功能，通过BFD控制报文方式实现BFD功能。

<SwitchA> system-view

[SwitchA] interface vlan-interface 10

[SwitchA-vlan-interface10] bfd min-transmit-interval 500

[SwitchA-vlan-interface10] bfd min-receive-interval 500

[SwitchA-vlan-interface10] bfd detect-multiplier 9

[SwitchA-vlan-interface10] quit

[SwitchA] ip route-static 120.1.1.0 24 vlan-interface 10 12.1.1.2 bfd control-packet

[SwitchA] ip route-static 120.1.1.0 24 vlan-interface 11 10.1.1.100 preference 65

[SwitchA] quit

# 在Switch B上配置静态路由，并使能BFD检测功能，通过BFD控制报文方式实现BFD功能。

<SwitchB> system-view

[SwitchB] interface vlan-interface 10

[SwitchB-vlan-interface10] bfd min-transmit-interval 500

[SwitchB-vlan-interface10] bfd min-receive-interval 500

[SwitchB-vlan-interface10] bfd detect-multiplier 9

[SwitchB-vlan-interface10] quit

[SwitchB] ip route-static 121.1.1.0 24 vlan-interface 10 12.1.1.1 bfd control-packet

[SwitchB] ip route-static 121.1.1.0 24 vlan-interface 13 13.1.1.2 preference 65

[SwitchB] quit

# 在Switch C上配置静态路由。

<SwitchC> system-view

[SwitchC] ip route-static 120.1.1.0 24 vlan-interface 13 13.1.1.1

[SwitchC] ip route-static 121.1.1.0 24 vlan-interface 11 10.1.1.102

(3) 检查配置结果

下面以Switch A为例，Switch B和Switch A类似，不再赘述。

<SwitchA> display bfd session

Total Session Num: 1 Init Mode: Active

Session Working Under Ctrl Mode:

LD/RD SourceAddr DestAddr State Holdtime Interface

4/7 12.1.1.1 12.1.1.2 Up 2000ms Vlan10

# 在Switch A上查看静态路由。

<SwitchA> display ip routing-table protocol static

Public Routing Table : Static

Summary Count : 2

Static Routing table Status : < Active>

Summary Count : 1

Destination/Mask Proto Pre Cost NextHop Interface

120.1.1.0/24 Static 60 0 12.1.1.2 Vlan10

Direct Routing table Status : <Inactive>

Summary Count : 1

Destination/Mask Proto Pre Cost NextHop Interface

120.1.1.0/24 Static 65 0 10.1.1.100 Vlan11

# 在Switch A上打开BFD功能调试信息开关。

<SwitchA> debugging bfd event

<SwitchA> debugging bfd scm

<SwitchA> terminal debugging

# Switch A和二层交换机之间链路发生故障时，可以看到Switch A能够快速感知Switch B的变化。

%Jul 27 10:18:18:672 2007 SwitchA BFD/4/LOG:Sess[12.1.1.1/12.1.1.2, Vlan10,Ctrl], Sta: UP->DOWN, Diag: 1

*Jul 27 10:18:18:672 2007 SwitchA BFD/7/EVENT:Send sess-down Msg, [Src:12.1.1.1,Dst:12.1.1.2, Vlan10,Ctrl], instance:0, protocol:STATIC

*Jul 27 10:18:19:172 2007 SwitchA BFD/7/EVENT:Receive Delete-sess, [Src:12.1.1.1,Dst:12.1.1.2, Vlan10,Ctrl], Direct, Instance:0x0, Proto:STATIC

*Jul 27 10:18:19:172 2007 SwitchA BFD/7/EVENT:Notify driver to stop receiving bfd control packet

# 通过 display ip routing-table protocol static 命令查看路表信息。Switch A选择经过Switch C的静态路由到达Switch B。

<SwitchA> display ip routing-table protocol static

Public Routing Table : Static

Summary Count : 2

Static Routing table Status : < Active>

Summary Count : 1

Destination/Mask Proto Pre Cost NextHop Interface

120.1.1.0/24 Static 65 0 10.1.1.100 Vlan11

Static Routing table Status : < Inactive>

Summary Count : 1

Destination/Mask Proto Pre Cost NextHop Interface

120.1.1.0/24 Static 60 0 12.1.1.2 Vlan10

1.6.4 配置静态路由与BFD联动（非直连）

1. 组网需求

l 在Switch A上配置静态路由可以到达120.1.1.0/24网段路由，在Switch B上配置静态路由可以到达121.1.1.0/24网段路由，并都使能BFD检测功能。

l 在Switch C和Switch D上配置静态路由可以到达120.1.1.0/24网段和121.1.1.0/24网段。

l Switch A存在到Switch B的接口Loopback1（2.2.2.9/32）的路由，出接口为Vlan-interface10；Switch B存在到Switch A的接口Loopback1（1.1.1.9/32）的路由，出接口为Vlan-interface12；Switch D存在到1.1.1.9/32的路由，出接口为Vlan-interface10，存在到2.2.2.9/32的路由，出接口为Vlan-interface12。

l 当Switch A和Switch B通过Switch D通信的链路出现故障时BFD能够快速感知，并且切换到Switch C进行通信。

2. 组网图

图1-5 静态路由与BFD联动（非直连）配置组网图

设备 | 接口 | IP地址 | 设备 | 接口 | IP地址
Switch A | Vlan-int10 | 12.1.1.1/24 | Switch B | Vlan-int12 | 11.1.1.1/24
 | Vlan-int11 | 10.1.1.102/24 |  | Vlan-int13 | 13.1.1.1/24
 | Loop1 | 1.1.1.9/32 |  | Loop1 | 2.2.2.9/32
Switch C | Vlan-int11 | 10.1.1.100/24 | Switch D | Vlan-int10 | 12.1.1.2/24
 | Vlan-int13 | 13.1.1.2/24 |  | Vlan-int12 | 11.1.1.2/24

3. 配置步骤

(1) 配置各接口的IP地址（略）

(2) 配置BFD

# 在Switch A上配置静态路由，并使能BFD检测功能，通过BFD控制报文方式实现BFD功能。

<SwitchA> system-view

[SwitchA] interface loopback 1

[SwitchA-LoopBack1] bfd min-transmit-interval 500

[SwitchA-LoopBack1] bfd min-receive-interval 500

[SwitchA-LoopBack1] bfd detect-multiplier 9

[SwitchA-LoopBack1] quit

[SwitchA] ip route-static 120.1.1.0 24 2.2.2.9 bfd control-packet bfd-source 1.1.1.9

[SwitchA] ip route-static 120.1.1.0 24 vlan-interface 11 10.1.1.100 preference 65

[SwitchA] quit

# 在Switch B上配置静态路由，并使能BFD检测功能，通过BFD控制报文方式实现BFD功能。

<SwitchB> system-view

[SwitchB] interface loopback 1

[SwitchB-LoopBack1] bfd min-transmit-interval 500

[SwitchB-LoopBack1] bfd min-receive-interval 500

[SwitchB-LoopBack1] bfd detect-multiplier 9

[SwitchB-LoopBack1] quit

[SwitchB] ip route-static 121.1.1.0 24 1.1.1.9 bfd control-packet bfd-source 2.2.2.9

[SwitchB] ip route-static 121.1.1.0 24 vlan-interface 13 13.1.1.2 preference 65

[SwitchB] quit

# 在Switch C上配置静态路由。

<SwitchC> system-view

[SwitchC] ip route-static 120.1.1.0 24 vlan-interface 13 13.1.1.1

[SwitchC] ip route-static 121.1.1.0 24 vlan-interface 11 10.1.1.102

# 在Switch D上配置静态路由。

<SwitchD> system-view

[SwitchD] ip route-static 120.1.1.0 24 vlan-interface 12 11.1.1.1

[SwitchD] ip route-static 121.1.1.0 24 vlan-interface 10 12.1.1.1

(3) 检查配置结果

下面以Switch A为例，Switch B和Switch A类似，不再赘述。

<SwitchA> display bfd session

Total Session Num: 1 Init Mode: Active

Session Working Under Ctrl Mode:

LD/RD SourceAddr DestAddr State Holdtime Interface

4/7 1.1.1.9 2.2.2.9 Up 2000ms Loop1

# 在Switch A上查看静态路由。

<SwitchA> display ip routing-table protocol static

Public Routing Table : Static

Summary Count : 2

Static Routing table Status : < Active>

Summary Count : 1

Destination/Mask Proto Pre Cost NextHop Interface

120.1.1.0/24 Static 60 0 2.2.2.9 Vlan10

Static Routing table Status : <Inactive>

Summary Count : 1

Destination/Mask Proto Pre Cost NextHop Interface

120.1.1.0/24 Static 65 0 10.1.1.100 Vlan11

# 在Switch A上打开BFD功能调试信息开关。

<SwitchA> debugging bfd event

<SwitchA> debugging bfd scm

<SwitchA> terminal debugging

# Switch A和Switch D之间链路发生故障时，可以看到Switch A能够快速感知Switch B的变化。

%Oct 10 10:18:18:672 2010 SwitchA BFD/4/LOG:Sess[1.1.1.9/2.2.2.9, Loop1,Ctrl], Sta: UP->DOWN, Diag: 1

* Oct 10 10:18:18:672 2010 SwitchA BFD/7/EVENT:Send sess-down Msg, [Src:1.1.1.9,Dst:2.2.2.9, Loop1,Ctrl], instance:0, protocol:STATIC

# 通过 display ip routing-table protocol static 命令查看路表信息。Switch A选择经过Switch C的静态路由到达Switch B。

<SwitchA> display ip routing-table protocol static

Public Routing Table : Static

Summary Count : 2

Static Routing table Status : < Active>

Summary Count : 1

Destination/Mask Proto Pre Cost NextHop Interface

120.1.1.0/24 Static 65 0 10.1.1.100 Vlan11

Static Routing table Status : < Inactive>

Summary Count : 1

Destination/Mask Proto Pre Cost NextHop Interface

120.1.1.0/24 Static 60 0 2.2.2.9


1 RIP配置

本文所指的路由器代表运行了路由协议的三层设备。

相关链接

  • 1.1 简介
  • 1.2 RIP配置任务简介
  • 1.3 配置RIP的基本功能
  • 1.4 配置RIP的路由信息控制
  • 1.5 调整和优化RIP网络
  • 1.6 配置RIP快速重路由功能
  • 1.7 配置RIP与BFD联动
  • 1.8 RIP显示和维护
  • 1.9 RIP典型配置举例
  • 1.10 常见配置错误举例
父主题： 03-RIP配置


1.1 简介

RIP（Routing Information Protocol，路由信息协议）是一种较为简单的内部网关协议（Interior Gateway Protocol，IGP），主要用于规模较小的网络中，比如校园网以及结构较简单的地区性网络。对于更为复杂的环境和大型网络，一般不使用RIP。

由于RIP的实现较为简单，在配置和维护管理方面也远比OSPF和IS-IS容易，因此在实际组网中仍有广泛的应用。

1.1.1 RIP工作机制

1. RIP的基本概念

RIP是一种基于距离矢量（Distance-Vector，D-V）算法的协议，它通过UDP报文进行路由信息的交换，使用的端口号为520。

RIP使用跳数来衡量到达目的地址的距离，跳数称为度量值。在RIP中，路由器到与它直接相连网络的跳数为0，通过一个路由器可达的网络的跳数为1，其余依此类推。为限制收敛时间，RIP规定度量值取0～15之间的整数，大于或等于16的跳数被定义为无穷大，即目的网络或主机不可达。由于这个限制，使得RIP不适合应用于大型网络。

为提高性能，防止产生路由环路，RIP支持水平分割（Split Horizon）和毒性逆转（Poison Reverse）功能。

2. RIP的路由数据库

每个运行RIP的路由器管理一个路由数据库，该路由数据库包含了到所有可达目的地的路由项，这些路由项包含下列信息：

l 目的地址：主机或网络的地址。

l 下一跳地址：为到达目的地，需要经过的相邻路由器的接口IP地址。

l 出接口：本路由器转发报文的出接口。

l 度量值：本路由器到达目的地的开销。

l 路由时间：从路由项最后一次被更新到现在所经过的时间，路由项每次被更新时，路由时间重置为0。

l 路由标记（Route Tag）：用于标识外部路由，在路由策略中可根据路由标记对路由信息进行灵活的控制。关于路由策略的详细信息，请参见“三层技术-IP路由配置指导”中的“路由策略”。

3. RIP定时器

RIP受四个定时器的控制，分别是Update、Timeout、Suppress和Garbage-Collect。

l Update定时器，定义了发送路由更新的时间间隔。

l Timeout定时器，定义了路由老化时间。如果在老化时间内没有收到关于某条路由的更新报文，则该条路由在路由表中的度量值将会被设置为16。

l Suppress定时器，定义了RIP路由处于抑制状态的时长。当一条路由的度量值变为16时，该路由将进入抑制状态。在被抑制状态，只有来自同一邻居且度量值小于16的路由更新才会被路由器接收，取代不可达路由。

l Garbage-Collect定时器，定义了一条路由从度量值变为16开始，直到它从路由表里被删除所经过的时间。在Garbage-Collect时间内，RIP以16作为度量值向外发送这条路由的更新，如果Garbage-Collect超时，该路由仍没有得到更新，则该路由将从路由表中被彻底删除。

4. 防止路由环路

RIP是一种基于D-V算法的路由协议，由于它向邻居通告的是自己的路由表，存在发生路由环路的可能性。

RIP通过以下机制来避免路由环路的产生：

l 计数到无穷（Counting to infinity）：将度量值等于16的路由定义为不可达（infinity）。在路由环路发生时，某条路由的度量值将会增加到16，该路由被认为不可达。

l 水平分割（Split Horizon）：RIP从某个接口学到的路由，不会从该接口再发回给邻居路由器。这样不但减少了带宽消耗，还可以防止路由环路。

l 毒性逆转（Poison Reverse）：RIP从某个接口学到路由后，将该路由的度量值设置为16（不可达），并从原接口发回邻居路由器。利用这种方式，可以清除对方路由表中的无用信息。

l 触发更新（Triggered Updates）：RIP通过触发更新来避免在多个路由器之间形成路由环路的可能，而且可以加速网络的收敛速度。一旦某条路由的度量值发生了变化，就立刻向邻居路由器发布更新报文，而不是等到更新周期的到来。

1.1.2 RIP的启动和运行过程

RIP启动和运行的整个过程可描述如下：

l 路由器启动RIP后，便会向相邻的路由器发送请求报文（Request message），相邻的RIP路由器收到请求报文后，响应该请求，回送包含本地路由表信息的响应报文（Response message）。

l 路由器收到响应报文后，更新本地路由表，同时向相邻路由器发送触发更新报文，通告路由更新信息。相邻路由器收到触发更新报文后，又向其各自的相邻路由器发送触发更新报文。在一连串的触发更新广播后，各路由器都能得到并保持最新的路由信息。

l RIP在缺省情况下每隔30秒向相邻路由器发送本地路由表，运行RIP协议的相邻路由器在收到报文后，对本地路由进行维护，选择一条最佳路由，再向其各自相邻网络发送更新信息，使更新的路由最终能达到全局有效。同时，RIP采用老化机制对超时的路由进行老化处理，以保证路由的实时性和有效性。

1.1.3 RIP的版本

RIP有两个版本：RIP-1和RIP-2。

RIP-1是有类别路由协议（Classful Routing Protocol），它只支持以广播方式发布协议报文。RIP-1的协议报文无法携带掩码信息，它只能识别A、B、C类这样的自然网段的路由，因此RIP-1不支持不连续子网（Discontiguous Subnet）。

RIP-2是一种无类别路由协议（Classless Routing Protocol），与RIP-1相比，它有以下优势：

l 支持路由标记，在路由策略中可根据路由标记对路由进行灵活的控制。

l 报文中携带掩码信息，支持路由聚合和CIDR（Classless Inter-Domain Routing，无类域间路由）。

l 支持指定下一跳，在广播网上可以选择到最优下一跳地址。

l 支持组播路由发送更新报文，只有RIP-2路由器才能收到更新报文，减少资源消耗。

l 支持对协议报文进行验证，并提供明文验证和MD5验证两种方式，增强安全性。

RIP-2有两种报文传送方式：广播方式和组播方式，缺省将采用组播方式发送报文，使用的组播地址为224.0.0.9。当接口运行RIP-2广播方式时，也可接收RIP-1的报文。

1.1.4 RIP的报文格式

RIP报文由头部（Header）和多个路由表项（Route Entries）部分组成。在一个RIP报文中，最多可以有25个路由表项（如果是RIP-2的验证报文，由于第一个路由表项作为验证项，所以最多可以有24个路由表项）。

1. RIP-1的报文格式

RIP-1的报文格式如 图1-1 所示。

图1-1 RIP-1的报文格式

各字段的解释如下：

l Command：标识报文的类型。值为1时表示Request报文，向邻居请求全部或部分路由信息；值为2表示Response报文，发送全部或部分路由信息，1个Response报文中最多包含25个路由表项。

l Version：RIP的版本号。对于RIP-1来说其值为0x01。

l Must be zero：必须为0字段。

l AFI（Address Family Identifier）：地址族标识，其值为2时表示IP协议。

l IP Address：该路由的目的IP地址，可以是自然网段地址、子网地址或主机地址。

l Metric：路由的度量值。

2. RIP-2的报文格式

RIP-2的报文格式与RIP-1类似，如 图1-2 所示。

图1-2 RIP-2的报文格式

其中，与RIP-1不同的字段有：

l Version：RIP的版本号。对于RIP-2来说其值为0x02。

l Route Tag：路由标记。

l IP Address：该路由的目的IP地址，可以是自然网段地址、子网地址或主机地址。

l Subnet Mask：目的地址的掩码。

l Next Hop：如果为0.0.0.0，则表示发布此条路由信息的路由器地址就是最优下一跳地址，否则表示提供了一个比发布此条路由信息的路由器地址更优的下一条地址。

3. RIP-2的验证报文格式

RIP-2为了支持报文验证，使用第一个路由表项（Route Entry）作为验证项，并将AFI字段的值设为0xFFFF标识报文携带认证信息，如 图1-3 所示。

图1-3 RIP-2的验证报文格式

各字段的解释如下：

l Authentication Type：验证类型。值为2时表示明文验证，值为3时表示MD5验证。

l Authentication：验证字。当使用明文验证时包含了密码信息；当使用MD5验证时包含了Key ID、MD5验证数据长度和序列号的信息。

l RFC 1723中只定义了明文验证方式，关于MD5验证的详细信息，请参见RFC 2453“RIP Version 2”。

l 当RIP的版本为RIP-1时，虽然在接口视图下仍然可以配置验证方式，但由于RIP-1不支持认证，因此该配置不会生效。

1.1.5 支持的RIP特性

目前设备支持以下RIP特性：

l 支持RIP-1和RIP-2

l 支持RIP多实例

l RIP快速重路由

l RIP与BFD联动

RIP协议依赖周期性发送路由更新请求作为检测机制，当在指定时间内没有收到路由更新回应时，认为此条路由不再生效，这种方式不能快速响应链路故障。使用BFD（Bidirectional Forwarding Detection，双向转发检测）检测到链路故障时，RIP能快速撤销失效路由，减少对其他业务的影响。

1.1.6 协议规范

与RIP相关的协议规范有：

l RFC 1058：Routing Information Protocol

l RFC 1723：RIP Version 2 - Carrying Additional Information

l RFC 1721：RIP Version 2 Protocol Analysis

l RFC 1722：RIP Version 2 Protocol Applicability Statement

l RFC 1724：RIP Version 2 MIB Extension

l RFC 2082：RIP-2 MD5 Authentication

l RFC 2453：RIP Version 2


1.2 RIP配置任务简介

表1-1 RIP配置任务简介

配置任务 |  | 说明 | 详细配置
配置RIP的基本功能 |  | 必选 | 1.3
配置RIP路由特性 | 配置接口附加度量值 | 可选 | 1.4.1
 | 配置RIP-2路由聚合 | 可选 | 1.4.2
 | 禁止RIP接收主机路由 | 可选 | 1.4.3
 | 配置RIP发布缺省路由 | 可选 | 1.4.4
 | 配置RIP对接收/发布的路由进行过滤 | 可选 | 1.4.5
 | 配置RIP协议优先级 | 可选 | 1.4.6
 | 配置RIP引入外部路由 | 可选 | 1.4.7
调整和优化RIP网络 | 配置RIP定时器 | 可选 | 1.5.1
 | 配置水平分割和毒性逆转 | 可选 | 1.5.2
 | 配置最大等价路由条数 | 可选 | 1.5.3
 | 配置RIP-1报文的零域检查 | 可选 | 1.5.4
 | 配置源地址检查 | 可选 | 1.5.5
 | 配置RIP-2报文的认证方式 | 可选 | 1.5.6
 | 配置RIP邻居 | 可选 | 1.5.7
 | 配置RIP和MIB绑定 | 可选 | 1.5.8
 | 配置RIP报文的发送速率 | 可选 | 1.5.9
配置RIP快速重路由功能 |  | 可选 | 1.6
配置RIP与BFD联动 | echo报文单跳检测 | 可选 | 1.7.1
 | control报文双向检测 | 可选 | 1.7.2


1.3 配置RIP的基本功能

1.3.1 配置准备

在配置RIP的基本功能之前，需完成以下任务：

l 配置链路层协议

l 配置接口的网络层地址，使相邻节点的网络层可达

1.3.2 配置RIP的基本功能

1. 启动RIP，配置指定网段范围内的接口运行RIP

表1-2 启动RIP，配置指定的接口运行RIP

操作 | 命令 | 说明
进入系统视图 | system-view | -
创建RIP进程并进入RIP视图 | rip [ process-id ] [ vpn-instance vpn-instance-name ] | 必选 缺省情况下，RIP进程处于关闭状态
在指定网段接口上使能RIP | network network-address | 必选 缺省情况下，接口上的RIP功能处于关闭状态

l 如果在启动RIP前在接口视图下配置了RIP相关命令，这些配置只有在RIP启动后才会生效。

l RIP只在指定网段的接口上运行；对于不在指定网段上的接口，RIP既不在它上面接收和发送路由，也不将它的接口路由转发出去。因此，RIP启动后必须指定其工作网段。

l network 0.0.0.0命令用来在所有接口上使能RIP。

l RIP不支持将同一物理接口下的不同网段使能到不同的RIP进程中。

2. 配置接口的工作状态

用户可对接口的工作状态进行配置：

l 配置接口工作在抑制状态，即接口只接收路由更新报文而不发送路由更新报文

l 配置接口接收RIP报文

l 配置接口发送RIP报文

表1-3 配置接口的工作状态

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入RIP视图 | rip [ process-id ] [ vpn-instance vpn-instance-name ] | -
配置接口工作在抑制状态 | silent-interface { interface-type interface-number | all } | 可选 缺省情况下，所有使能RIP的接口发送路由更新报文
退回系统视图 | quit | -
进入接口视图 | interface interface-type interface-number | -
允许接口接收RIP报文 | rip input | 可选 缺省情况下，所有使能RIP的接口接收RIP报文
允许接口发送RIP报文 | rip output | 可选 缺省情况下，所有使能RIP的接口发送RIP报文

3. 配置RIP版本

用户可以在RIP视图下配置RIP版本，也可在接口上配置RIP版本：

l 当全局和接口都没有进行RIP版本配置时，接口发送RIP-1广播报文，可以接收RIP-1广播/单播报文、RIP-2广播/组播/单播报文。

l 如果接口没有进行RIP版本配置，接口运行的RIP版本将以全局配置的版本为准，如果希望接口配置的RIP版本与全局配置的不一样，则进入接口视图配置接口运行的RIP版本。

l 当接口运行的RIP版本为RIP-1时，发送RIP-1广播报文，可以接收RIP-1广播/单播报文。

l 当接口运行的RIP版本为RIP-2且工作在组播方式时，发送RIP-2组播报文，可以接收RIP-2广播/组播/单播报文。

l 当接口运行的RIP版本为RIP-2且工作在广播方式时，发送RIP-2广播报文，可以接收RIP-1广播/单播报文、RIP-2广播/组播/单播报文。

表1-4 配置RIP版本号

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入RIP视图 | rip [ process-id ] [ vpn-instance vpn-instance-name ] | -
配置全局RIP版本 | version { 1 | 2 } | 可选 缺省情况下，如果接口配置了RIP版本，以接口配置的为准，如果接口也没有配置，接口只能发送RIP-1广播报文，可以接收RIP-1广播/单播报文、RIP-2广播/组播/单播报文
退回系统视图 | quit | -
进入接口视图 | interface interface-type interface-number | -
配置接口运行的RIP版本 | rip version { 1 | 2 [ broadcast | multicast ] } | 可选 缺省情况下，如果没有配置接口运行的RIP版本，接口运行的RIP版本以全局配置的为准；如果也没有进行全局RIP版本的配置，接口只能发送RIP-1广播报文，可以接收RIP-1广播/单播报文、RIP-2广播/组播/单播报文


1.4 配置RIP的路由信息控制

在实际应用中，有时候需要对RIP路由信息进行更为精确的控制以满足复杂网络环境的需要。

在配置之前，需完成以下任务：

l 配置接口的网络层地址，使相邻节点网络层可达

l 配置RIP基本功能

1.4.1 配置接口附加度量值

附加度量值是在RIP路由原来度量值的基础上所增加的度量值（跳数），包括发送附加度量值和接收附加度量值。发送附加度量值不会改变路由表中的路由度量值，仅当接口发送RIP路由信息时才会添加到发送路由上；接收附加度量值会影响接收到的路由度量值，接口接收到一条合法的RIP路由时，在将其加入路由表前会把度量值附加到该路由上，当附加度量值与原路由度量值之和大于16，该条路由的度量值取16。

表1-5 配置接口附加度量值

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
配置接口接收RIP路由时的附加度量值 | rip metricin [ route-policy route-policy-name ] value | 可选 缺省情况下，接口接收RIP路由时的附加度量值为0
配置接口发送RIP路由时的附加度量值 | rip metricout [ route-policy route-policy-name ] value | 可选 缺省情况下，接口发送RIP路由时的附加路由度量值为1

1.4.2 配置RIP-2路由聚合

路由聚合是指路由器把同一自然网段内的连续子网的路由聚合成一条路由向外发送，如路由表里有10.1.1.0/24、10.1.2.0/24、10.1.3.0/24三条路由，可以通过配置把它们聚合成一条路由10.1.0.0/16向外发送，这样邻居路由器只接收到一条路由10.1.0.0/16，从而减少了路由表的规模，以及网络上的传输流量。

在大型网络中，通过配置路由聚合，可以提高网络的可扩展性以及路由器的处理速度。

RIP-2将多条路由聚合成一条路由时，聚合路由的Metric值将取所有路由Metric的最小值。

在RIP-2中，有两种路由聚合方式：自动路由聚合和手工配置聚合路由。

1. 自动路由聚合

自动路由聚合是指RIP-2将同一自然网段内的不同子网的路由聚合成一条自然掩码的路由向外发送，例如，假设路由表里有10.1.1.0/24、10.1.2.0/24、10.1.3.0/24三条路由，使能RIP-2自动路由聚合功能后，这三条路由聚合成一条自然掩码的路由10.0.0.0/8向外发送。

表1-6 配置自动路由聚合

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入RIP视图 | rip [ process-id ] [ vpn-instance vpn-instance-name ] | -
使能RIP-2自动路由聚合功能 | summary | 可选 缺省情况下，RIP-2自动路由聚合功能处于使能状态 如果路由表里的路由子网不连续，则需要取消自动路由聚合功能，使得RIP-2能够向外发布子网路由和主机路由

2. 手工配置聚合路由

用户可在指定接口配置RIP-2发布一条聚合路由。

聚合路由的目的地址和掩码进行与运算到一个网络地址，RIP-2将对落入该网段内的路由进行聚合，接口只发布聚合后的路由。

例如，假设路由表里有10.1.1.0/24、10.1.2.0/24、10.1.3.0/24三条子网连续的路由，在接口Vlan-interface11配置发布一条聚合路由10.1.0.0/16后，这三条路由聚合成一条路由10.1.0.0/16向外发送。

缺省情况下，RIP-2的路由将按照自然掩码自动聚合，如果用户在指定接口配置发布一条聚合路由，则必须先关闭自动聚合功能。

表1-7 手工配置聚合路由

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入RIP视图 | rip [ process-id ] [ vpn-instance vpn-instance-name ] | -
关闭RIP-2自动路由聚合功能 | undo summary | 必选 缺省情况下，RIP-2自动路由聚合功能处于使能状态
退至系统视图 | quit | -
进入接口视图 | interface interface-type interface-number | -
配置发布一条聚合路由 | rip summary-address ip-address { mask | mask-length } | 必选

1.4.3 禁止RIP接收主机路由

在某些特殊情况下，路由器会收到大量来自同一网段的主机路由。这些路由对于路由寻址没有多少作用，却占用了大量的资源，此时可配置RIP禁止接收主机路由，以节省网络资源。

表1-8 禁止RIP接收主机路由

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入RIP视图 | rip [ process-id ] [ vpn-instance vpn-instance-name ] | -
禁止RIP接收主机路由 | undo host-route | 必选 缺省情况下，允许RIP接收主机路由

禁止接收主机路由仅对RIPv2有效，对RIPv1无效。

1.4.4 配置RIP发布缺省路由

用户可以配置RIP以指定度量值向邻居发布一条缺省路由。

l 用户可以在RIP视图下配置RIP进程的所有接口向邻居发布缺省路由，也可以在接口下配置指定RIP接口向邻居发布缺省路由。

l 如果接口没有进行发布缺省路由的相关配置，则以RIP进程下的配置为准，否则将以接口配置为准。

l 如果RIP进程配置了发布缺省路由，但希望该进程下的某个接口不发送缺省路由（只发布普通路由），可以通过在接口下配置 rip default-route no-originate 命令实现。

表1-9 配置RIP发布缺省路由

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入RIP视图 | rip [ process-id ] [ vpn-instance vpn-instance-name ] | -
配置RIP发布缺省路由 | default-route { only | originate } [ cost cost ] | 可选 缺省情况下，RIP不向邻居发送缺省路由
退回系统视图 | quit | -
进入接口视图 | interface interface-type interface-number | -
配置RIP接口发布缺省路由 | rip default-route { { only | originate } [ cost cost ] | no-originate } | 可选 缺省情况下，RIP接口是否发布缺省路由以RIP进程配置为准

配置发布缺省路由的RIP路由器不接收来自RIP邻居的缺省路由。

1.4.5 配置RIP对接收/发布的路由进行过滤

路由器提供路由信息过滤功能，通过指定访问控制列表和地址前缀列表，可以配置入口或出口过滤策略，对接收和发布的路由进行过滤。在接收路由时，还可以指定只接收来自某个邻居的RIP报文。

表1-10 配置RIP对接收/发布的路由进行过滤

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入RIP视图 | rip [ process-id ] [ vpn-instance vpn-instance-name ] | -
对接收的路由信息进行过滤 | filter-policy { acl-number | gateway ip-prefix-name | ip-prefix ip-prefix-name [ gateway ip-prefix-name ] } import [ interface-type interface-number ] | 必选 缺省情况下，RIP不对接收的路由信息进行过滤
对发布的路由信息进行过滤 | filter-policy { acl-number | ip-prefix ip-prefix-name } export [ protocol [ process-id ] | interface-type interface-number ] | 必选 缺省情况下，RIP不对发布的路由信息进行过滤

l filter-policy import 命令对从邻居收到的RIP路由进行过滤，没有通过过滤的路由将不被加入路由表，也不向邻居发布该路由。

l filter-policy export 命令对本机所有路由的发布进行过滤，包括使用 import-route 引入的路由和从邻居学到的RIP路由。

1.4.6 配置RIP协议优先级

在路由器中可能会运行多个IGP路由协议，如果想让RIP路由具有比从其它路由协议学来的路由更高的优先级，需要配置小的优先级值。优先级的高低将最后决定IP路由表中的路由是通过哪种路由算法获取的最佳路由。

表1-11 配置RIP协议优先级

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入RIP视图 | rip [ process-id ] [ vpn-instance vpn-instance-name ] | -
配置RIP路由的优先级 | preference [ route-policy route-policy-name ] value | 可选 缺省情况下，RIP路由的优先级为100

1.4.7 配置RIP引入外部路由

如果在路由器上不仅运行RIP，还运行着其它路由协议，可以配置RIP引入其它协议生成的路由，如OSPF、ISIS、BGP、静态路由或者直连路由。

表1-12 配置RIP引入外部路由

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入RIP视图 | rip [ process-id ] [ vpn-instance vpn-instance-name ] | -
配置引入路由的缺省度量值 | default cost value | 可选 缺省情况下，引入路由的缺省度量值为0
引入外部路由 | import-route protocol [ process-id | all-processes | allow-ibgp ] [ cost cost | route-policy route-policy-name | tag tag ] * | 必选 缺省情况下，RIP不引入其它路由

只能引入路由表中状态为active的路由，是否为active状态可以通过 display ip routing-table protocol命令来查看。


1.5 调整和优化RIP网络

在某些特殊的网络环境中，需要对RIP网络的性能进行调整和优化，在调整和优化RIP网络之前，需完成以下任务：

l 配置接口的网络层地址，使相邻节点网络层可达

l 配置RIP基本功能

1.5.1 配置RIP定时器

通过调整RIP定时器可以改变RIP网络的收敛速度。

表1-13 配置RIP定时器

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入RIP视图 | rip [ process-id ] [ vpn-instance vpn-instance-name ] | -
配置RIP定时器的值 | timers { garbage-collect garbage-collect-value | suppress suppress-value | timeout timeout-value | update update-value } * | 可选 缺省情况下： l Update定时器的值为30秒 l Timeout定时器的值为180秒 l Suppress定时器的值为120秒 l Garbage-collect定时器的值为120秒

在配置RIP定时器时需要注意，定时器值的调整应考虑网络的性能，并在所有运行RIP的路由器上进行统一配置，以免增加不必要的网络流量或引起网络路由震荡。

1.5.2 配置水平分割和毒性逆转

如果同时配置了水平分割和毒性逆转，则只有毒性逆转功能生效。

通过配置水平分割或毒性逆转功能可以防止路由环路。

1. 配置水平分割

配置水平分割可以使得从一个接口学到的路由不能通过此接口向外发布，用于避免相邻路由器间的路由环路。

表1-14 配置水平分割

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
使能水平分割功能 | rip split-horizon | 可选 缺省情况下，水平分割功能处于使能状态

2. 配置毒性逆转

配置毒性逆转后，从一个接口学到的路由还可以从这个接口向外发布，但这些路由的度量值会设置为16（即不可达），可以用于避免相邻路由器间的路由环路。

表1-15 配置毒性逆转

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
使能毒性逆转功能 | rip poison-reverse | 必选 缺省情况下，毒性逆转功能处于关闭状态

1.5.3 配置最大等价路由条数

通过配置最大等价路由跳数，可以使用多条等价路由对RIP网络进行负载分担。

表1-16 配置最大等价路由条数

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入RIP视图 | rip [ process-id ] [ vpn-instance vpn-instance-name ] | -
配置RIP最大等价路由条数 | maximum load-balancing number | 可选 缺省值为8

1.5.4 配置RIP-1报文的零域检查

RIP-1报文中的有些字段必须为零，称之为零域。用户可配置RIP-1在接收报文时对零域进行检查，零域值不为零的RIP-1报文将不被处理。如果用户能确保所有报文都是可信任的，则可以不进行该项检查，以节省CPU处理时间。

由于RIP-2的报文没有零域，此项配置对RIP-2无效。

表1-17 配置RIP-1报文的零域检查

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入RIP视图 | rip [ process-id ] [ vpn-instance vpn-instance-name ] | -
使能RIP-1报文的零域检查功能 | checkzero | 可选 缺省情况下，RIP-1报文的零域检查功能处于使能状态

1.5.5 配置源地址检查

通过配置对接收到的RIP路由更新报文进行源IP地址检查：对于在接口上接收的报文，RIP将检查该报文源地址和接收接口的IP地址是否处于同一网段，如果不在同一网段则丢弃该报文。

表1-18 配置源地址检查

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入RIP视图 | rip [ process-id ] [ vpn-instance vpn-instance-name ] | -
使能对接收到的RIP路由更新报文进行源IP地址检查功能 | validate-source-address | 可选 缺省情况下，对接收到的RIP路由更新报文进行源IP地址检查功能处于使能状态

当存在RIP非直连的邻居时，应该取消源地址检查。

1.5.6 配置RIP-2报文的认证方式

在安全性要求较高的网络环境中，可以通过配置报文的认证方式来对RIP-2报文进行有效性检查和验证。

RIP-2支持两种认证方式：明文认证和MD5密文认证。

明文认证不能提供安全保障，未加密的认证字随报文一同传送，所以明文认证不能用于安全性要求较高的情况。

表1-19 配置RIP-2报文的认证方式

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
配置RIP-2报文的认证方式 | rip authentication-mode { md5 { rfc2082 key-string key-id | rfc2453 key-string } | simple password } | 必选

当RIP的版本为RIP-1时，虽然在接口视图下仍然可以配置验证方式，但由于RIP-1不支持认证，因此该配置不会生效。

1.5.7 配置RIP邻居

通常情况下，RIP使用广播或组播地址发送报文，如果在不支持广播或组播报文的链路上运行RIP，则必须手工指定RIP的邻居。

表1-20 配置RIP邻居

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入RIP视图 | rip [ process-id ] [ vpn-instance vpn-instance-name ] | -
配置RIP邻居 | peer ip-address | 必选
取消对接收到的RIP路由更新报文进行源IP地址检查操作 | undo validate-source-address | 必选 缺省情况下，对接收到的RIP路由更新报文进行源IP地址检查

l 当RIP邻居与当前设备直连时不推荐使用 peer ip-address命令，因为这样可能会造成对端同时收到同一路由信息的组播（或广播）和单播两种形式的报文。

l 当指定的邻居和本地路由器非直接连接，则必须取消对更新报文的源地址进行检查。

1.5.8 配置RIP和MIB绑定

通过将MIB操作绑定在指定的RIP进程上，可以让指定的RIP进程接收SNMP请求。

表1-21 配置RIP和MIB绑定

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置RIP和MIB绑定 | rip mib-binding process-id | 可选 缺省情况下，MIB操作绑定在RIP进程1上

1.5.9 配置RIP报文的发送速率

RIP周期性地将路由信息放在RIP报文中向邻居发送。

如果路由表里的路由条目数量很多，同时发送大量RIP协议报文有可能会对当前设备和网络带宽带来冲击；因此，路由器将RIP协议报文分为多个批次进行发送，并且对RIP接口每次允许发送的RIP协议报文最大个数做出限制。

用户可根据需要配置接口发送RIP报文的时间间隔以及接口一次发送RIP报文的最大个数。

表1-22 配置RIP报文的发送速率

操作 | 命令 | 说明
进入系统视图 | system-view | -
启动RIP并进入RIP视图 | rip [ process-id ] [ vpn-instance vpn-instance-name ] | -
配置RIP报文的发送速率 | output-delay time count count | 可选 缺省情况下，接口发送RIP报文的时间间隔为20毫秒，一次最多发送3个RIP报文


1.6 配置RIP快速重路由功能

l RIP支持快速重路由功能仅对非迭代RIP路由（即从直连邻居学到RIP路由）有效。

l RIP支持快速重路由功能不能与RIP支持BFD监测同时使用，否则可能导致快速重路由功能失效。

当RIP网络中的链路或某台路由器发生故障时，数据流量将会被中断，直到RIP根据新的拓扑网络路由收敛完毕后，被中断的流量才能恢复正常的传输。

为了尽可能缩短网络故障导致的流量中断时间，网络管理员可以根据需要配置RIP快速重路由功能。

图1-4 RIP快速重路由功能示意图

如图1-4 所示，通过在Router B上配置快速重路由功能，RIP可以为路由指定备份下一跳，当Router B探测到网络故障时，RIP会使用事先获取好的备份下一跳替换失效下一跳，通过备份下一跳来指导报文的转发，从而大大缩短了流量中断时间。在使用备份下一跳指导报文转发的同时，RIP会根据变化后的网络拓扑重新计算路由，网络收敛完毕后，使用新计算出来的最优路由来指导报文转发。

1. 配置准备

要配置快速重路由功能，网络管理员需要配置路由策略，通过 apply fast-reroute backup-interface 命令在路由策略中指定备份下一跳；关于 apply fast-reroute backup-interface 命令以及路由策略的相关配置，请参见“三层技术-IP路由配置指导”中的“路由策略”。

2. 配置过程

表1-23 配置RIP快速重路由功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置BFD Echo报文源地址 | bfd echo-source-ip ip-address | 必选 缺省情况下，没有配置BFD Echo报文源地址
进入RIP视图 | rip [ process-id ] [ vpn-instance vpn-instance-name ] | -
配置RIP快速重路由功能 | fast-reroute route-policy route-policy-name | 必选 缺省情况下，RIP快速重路由功能处于关闭状态


1.7 配置RIP与BFD联动

关于BFD的介绍和基本功能配置，请参见“可靠性配置指导”中的“BFD”。

RIP支持BFD提供了两种检测方式：

l 直连邻居采用echo报文单跳检测方式，在对端有路由发送时才能建立BFD会话。

l 非直连邻居采用control报文双向检测方式，当两端互有路由发送时，且使能BFD的接口与接收接口为同一接口，邻居之间才能建立BFD会话。

1.7.1 echo报文单跳检测

表1-24 配置RIP与BFD联动（echo报文单跳检测）

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置echo报文源地址 | bfd echo-source-ip ip-address | 必选 缺省情况下，没有配置echo报文源地址
进入接口视图 | interface interface-type interface-number | -
使能BFD功能 | rip bfd enable | 必选 缺省情况下，BFD功能处于关闭状态

1.7.2 control报文双向检测

表1-25 配置RIP与BFD联动（control报文双向检测）

操作 | 命令 | 说明
进入系统视图 | system-view | -
创建RIP进程并进入RIP视图 | rip [ process-id ] [ vpn-instance vpn-instance-name ] | 必选 缺省情况下，RIP进程处于关闭状态
配置RIP邻居 | peer ip-address | 必选 缺省情况下，RIP不向任何定点地址发送更新报文
进入接口视图 | interface interface-type interface-number | -
使能BFD功能 | rip bfd enable | 必选 缺省情况下，BFD功能处于关闭状态

l 当检测RIP的会话两端在直连网段（即IP报文的一跳），适合采用BFD的echo单向检测方式，但是，经过多跳到达邻居时echo方式则会失效。

l 由于 peer 命令与邻居之间没有对应关系，undo peer 操作并不能立刻删除邻居，因此不能立刻删除BFD会话。


1.8 RIP显示和维护

在完成上述配置后，在任意视图下执行 display 命令可以显示配置后RIP的运行情况，通过查看显示信息验证配置的效果。

在用户视图下执行 reset 命令可以重启RIP进程或清除指定RIP进程的统计信息。

表1-26 RIP显示和维护

操作 | 命令
显示RIP的当前运行状态及配置信息 | display rip [ process-id | vpn-instance vpn-instance-name ] [ | { begin | exclude | include } regular-expression ]
显示RIP发布数据库的所有激活路由 | display rip process-id database [ | { begin | exclude | include } regular-expression ]
显示RIP的接口信息 | display rip process-id interface [ interface-type interface-number ] [ | { begin | exclude | include } regular-expression ]
显示指定RIP进程的路由信息 | display rip process-id route [ ip-address { mask | mask-length } | peer ip-address | statistics ] [ | { begin | exclude | include } regular-expression ]
重启RIP进程 | reset rip process-id process
清除指定RIP进程的统计信息 | reset rip process-id statistics


1.9 RIP典型配置举例

1.9.1 配置RIP的版本

1. 组网需求

如图1-5 所示，要求在Switch A和Switch B的所有接口上使能RIP，并使用RIP-2进行网络互连。

2. 组网图

图1-5 配置RIP的版本

3. 配置步骤

(1) 配置各接口的IP地址（略）

(2) 配置RIP基本功能

# 配置Switch A。

[SwitchA] rip

[SwitchA-rip-1] network 192.168.1.0

[SwitchA-rip-1] network 172.16.0.0

[SwitchA-rip-1] network 172.17.0.0

# 配置Switch B。

[SwitchB] rip

[SwitchB-rip-1] network 192.168.1.0

[SwitchB-rip-1] network 10.0.0.0

# 查看Switch A的RIP路由表。

[SwitchA] display rip 1 route

Route Flags: R - RIP, T - TRIP

P - Permanent, A - Aging, S - Suppressed, G - Garbage-collect

----------------------------------------------------------------------------

Peer 192.168.1.2 on Vlan-interface100

Destination/Mask Nexthop Cost Tag Flags Sec

10.0.0.0/8 192.168.1.2 1 0 RA 11

从路由表中可以看出，RIP-1发布的路由信息使用的是自然掩码。

(3) 配置RIP的版本

# 在Switch A上配置RIP-2。

[SwitchA] rip

[SwitchA-rip-1] version 2

[SwitchA-rip-1] undo summary

# 在Switch B上配置RIP-2。

[SwitchB] rip

[SwitchB-rip-1] version 2

[SwitchB-rip-1] undo summary

# 查看Switch A的RIP路由表。

[SwitchA] display rip 1 route

Route Flags: R - RIP, T - TRIP

P - Permanent, A - Aging, S - Suppressed, G - Garbage-collect

----------------------------------------------------------------------------

Peer 192.168.1.2 on Vlan-interface100

Destination/Mask Nexthop Cost Tag Flags Sec

10.0.0.0/8 192.168.1.2 1 0 RA 50

10.2.1.0/24 192.168.1.2 1 0 RA 16

10.1.1.0/24 192.168.1.2 1 0 RA 16

从路由表中可以看出，RIP-2发布的路由中带有更为精确的子网掩码信息。

由于RIP路由信息的老化时间较长，所以在配置RIP-2版本后的一段时间里，路由表中可能还会存在RIP-1的路由信息。

1.9.2 配置RIP引入外部路由

1. 组网需求

l Switch B上运行两个RIP进程：RIP 100和RIP 200。Switch B通过RIP 100和Switch A交换路由信息，通过RIP 200和Switch C交换路由信息。

l 在Switch B上配置RIP进程200引入外部路由，引入直连路由和RIP进程100的路由，使得Switch C能够学习到达10.2.1.0/24和11.1.1.0/24的路由，但Switch A不能学习到达12.3.1.0/24和16.4.1.0/24的路由。

l 在Switch B配置过滤策略，对引入的RIP 100的一条路由（10.2.1.1/24）进行过滤，使其不发布给Switch C。

2. 组网图

图1-6 配置RIP引入外部路由组网图

3. 配置步骤

(1) 配置各接口的IP地址（略）

(2) 配置RIP基本功能

# 在Switch A上启动RIP进程100，并配置RIP版本号为2。

<SwitchA> system-view

[SwitchA] rip 100

[SwitchA-rip-100] network 10.0.0.0

[SwitchA-rip-100] network 11.0.0.0

[SwitchA-rip-100] version 2

[SwitchA-rip-100] undo summary

[SwitchA-rip-100] quit

# 在Switch B上启动两个RIP进程，进程号分别为100和200，并配置RIP版本号为2。

<SwitchB> system-view

[SwitchB] rip 100

[SwitchB-rip-100] network 11.0.0.0

[SwitchB-rip-100] version 2

[SwitchB-rip-100] undo summary

[SwitchB-rip-100] quit

[SwitchB] rip 200

[SwitchB-rip-200] network 12.0.0.0

[SwitchB-rip-200] version 2

[SwitchB-rip-200] undo summary

[SwitchB-rip-200] quit

# 在Switch C上启动RIP进程200，并配置RIP版本号为2。

<SwitchC> system-view

[SwitchC] rip 200

[SwitchC-rip-200] network 12.0.0.0

[SwitchC-rip-200] network 16.0.0.0

[SwitchC-rip-200] version 2

[SwitchC-rip-200] undo summary

# 查看Switch C的路由表信息。

[SwitchC] display ip routing-table

Routing Tables: Public

Destinations : 6 Routes : 6

Destination/Mask Proto Pre Cost NextHop Interface

12.3.1.0/24 Direct 0 0 12.3.1.2 Vlan200

12.3.1.2/32 Direct 0 0 127.0.0.1 InLoop0

16.4.1.0/24 Direct 0 0 16.4.1.1 Vlan400

16.4.1.1/32 Direct 0 0 127.0.0.1 InLoop0

127.0.0.0/8 Direct 0 0 127.0.0.1 InLoop0

127.0.0.1/32 Direct 0 0 127.0.0.1 InLoop0

(3) 配置RIP引入外部路由

# 在Switch B配置RIP进程200引入外部路由，引入直连路由和RIP进程100的路由。

[SwitchB] rip 200

[SwitchB-rip-200] import-route rip 100

[SwitchB-rip-200] import-route direct

[SwitchB-rip-200] quit

# 查看路由引入后Switch C的路由表信息。

[SwitchC] display ip routing-table

Routing Tables: Public

Destinations : 8 Routes : 8

Destination/Mask Proto Pre Cost NextHop Interface

10.2.1.0/24 RIP 100 1 12.3.1.1 Vlan200

11.1.1.0/24 RIP 100 1 12.3.1.1 Vlan200

12.3.1.0/24 Direct 0 0 12.3.1.2 Vlan200

12.3.1.2/32 Direct 0 0 127.0.0.1 InLoop0

16.4.1.0/24 Direct 0 0 16.4.1.1 Vlan400

16.4.1.1/32 Direct 0 0 127.0.0.1 InLoop0

127.0.0.0/8 Direct 0 0 127.0.0.1 InLoop0

127.0.0.1/32 Direct 0 0 127.0.0.1 InLoop0

(4) 配置RIP对引入的路由进行过滤

# 在Switch B上配置ACL，并对引入的RIP进程100的路由进行过滤，使其不发布给Switch C。

[SwitchB] acl number 2000

[SwitchB-acl-basic-2000] rule deny source 10.2.1.1 0.0.0.255

[SwitchB-acl-basic-2000] rule permit

[SwitchB-acl-basic-2000] quit

[SwitchB] rip 200

[SwitchB-rip-200] filter-policy 2000 export rip 100

# 查看过滤后Switch C的路由表。

[SwitchC] display ip routing-table

Routing Tables: Public

Destinations : 7 Routes : 7

Destination/Mask Proto Pre Cost NextHop Interface

11.1.1.0/24 RIP 100 1 12.3.1.1 Vlan200

12.3.1.0/24 Direct 0 0 12.3.1.2 Vlan200

12.3.1.2/32 Direct 0 0 127.0.0.1 InLoop0

16.4.1.0/24 Direct 0 0 16.4.1.1 Vlan400

16.4.1.1/32 Direct 0 0 127.0.0.1 InLoop0

127.0.0.0/8 Direct 0 0 127.0.0.1 InLoop0

127.0.0.1/32 Direct 0 0 127.0.0.1 InLoop0

1.9.3 配置RIP接口附加度量值

1. 组网需求

l 在Switch A、Switch B、Switch C、Switch D和Switch E的所有接口上使能RIP，并使用RIP-2进行网络互连。

l Switch A有两条链路可以到达Switch D，其中，通过Switch B到达Switch D的链路比通过Switch C到达Switch D的链路更加稳定。通过在Switch A的Vlan-interface200上配置接口接收RIP路由的附加度量值，使得Switch A优选从Switch B学到的1.1.5.0/24网段的路由。

2. 组网图

图1-7 配置RIP接口附加度量值

3. 配置步骤

(1) 配置各接口的地址（略）

(2) 配置RIP基本功能

# 配置Switch A。

<SwitchA> system-view

[SwitchA] rip 1

[SwitchA-rip-1] network 1.0.0.0

[SwitchA-rip-1] version 2

[SwitchA-rip-1] undo summary

[SwitchA-rip-1] quit

# 配置Switch B。

<SwitchB> system-view

[SwitchB] rip 1

[SwitchB-rip-1] network 1.0.0.0

[SwitchB-rip-1] version 2

[SwitchB-rip-1] undo summary

# 配置Switch C。

<SwitchC> system-view

[SwitchB] rip 1

[SwitchC-rip-1] network 1.0.0.0

[SwitchC-rip-1] version 2

[SwitchC-rip-1] undo summary

# 配置Switch D。

<SwitchD> system-view

[SwitchD] rip 1

[SwitchD-rip-1] network 1.0.0.0

[SwitchD-rip-1] version 2

[SwitchD-rip-1] undo summary

# 配置Switch E。

<SwitchE> system-view

[SwitchE] rip 1

[SwitchE-rip-1] network 1.0.0.0

[SwitchE-rip-1] version 2

[SwitchE-rip-1] undo summary

# 查看Switch A的IP路由表。

[SwitchA] display rip 1 database

1.0.0.0/8, cost 0, ClassfulSumm

1.1.1.0/24, cost 0, nexthop 1.1.1.1, Rip-interface

1.1.2.0/24, cost 0, nexthop 1.1.2.1, Rip-interface

1.1.3.0/24, cost 1, nexthop 1.1.1.2

1.1.4.0/24, cost 1, nexthop 1.1.2.2

1.1.5.0/24, cost 2, nexthop 1.1.1.2

1.1.5.0/24, cost 2, nexthop 1.1.2.2

可以看到，到达网段1.1.5.0/24有两条RIP路由，下一跳分别是Switch B（IP地址为1.1.1.2）和Switch C（IP地址为1.1.2.2），cost值都是2；到达网段1.1.4.0/24的下一跳是Switch B，cost为1。

(3) 配置RIP接口附加度量值

# 在Switch A上配置接口Vlan-interface200的接口附加度量值为3。

[SwitchA] interface vlan-interface 200

[SwitchA-Vlan-interface200] rip metricin 3

[SwitchA-Vlan-interface200] display rip 1 database

1.0.0.0/8, cost 0, ClassfulSumm

1.1.1.0/24, cost 0, nexthop 1.1.1.1, Rip-interface

1.1.2.0/24, cost 0, nexthop 1.1.2.1, Rip-interface

1.1.3.0/24, cost 1, nexthop 1.1.1.2

1.1.4.0/24, cost 2, nexthop 1.1.1.2

1.1.5.0/24, cost 2, nexthop 1.1.1.2

可以看到，到达网段1.1.5.0/24的RIP路由仅有一条，下一跳是Switch B（IP地址为1.1.1.2），cost值为2。

1.9.4 配置RIP发布聚合路由

1. 组网需求

l Switch A、Switch B运行OSPF，Switch D运行RIP，Switch C同时运行OSPF和RIP。

l 在Switch C上配置RIP进程引入OSPF路由，使Switch D有到达10.1.1.0/24、10.2.1.0/24、10.5.1.0/24和10.6.1.0/24网段的路由。

l 为了减小Switch D的路由表规模，在Switch C上配置路由聚合，只发布聚合后的路由10.0.0.0/8。

2. 组网图

图1-8 配置RIP发布聚合路由

3. 配置步骤

(1) 配置各接口的地址（略）

(2) 配置OSPF基本功能

# 配置Switch A。

<SwitchA> system-view

[SwitchA] ospf

[SwitchA-ospf-1] area 0

[SwitchA-ospf-1-area-0.0.0.0] network 10.5.1.0 0.0.0.255

[SwitchA-ospf-1-area-0.0.0.0] network 10.2.1.0 0.0.0.255

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

# 配置Switch B。

<SwitchB> system-view

[SwitchB] ospf

[SwitchB-ospf-1] area 0

[SwitchB-ospf-1-area-0.0.0.0] network 10.1.1.0 0.0.0.255

[SwitchB-ospf-1-area-0.0.0.0] network 10.6.1.0 0.0.0.255

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

# 配置Switch C。

<SwitchC> system-view

[SwitchC] ospf

[SwitchC-ospf-1] area 0

[SwitchC-ospf-1-area-0.0.0.0] network 10.1.1.0 0.0.0.255

[SwitchC-ospf-1-area-0.0.0.0] network 10.2.1.0 0.0.0.255

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

(3) 配置RIP基本功能

# 配置Switch C。

<SwitchC> system-view

[SwitchC] rip 1

[SwitchC-rip-1] network 11.3.1.0

[SwitchC-rip-1] version 2

[SwitchC-rip-1] undo summary

# 配置Switch D。

<SwitchD> system-view

[SwitchD] rip 1

[SwitchD-rip-1] network 11.0.0.0

[SwitchD-rip-1] version 2

[SwitchD-rip-1] undo summary

[SwitchD-rip-1] quit

# 在Switch C上配置RIP引入外部路由，引入OSPF进程1的路由和直连路由。

[SwitchC-rip-1] import-route direct

[SwitchC-rip-1] import-route ospf 1

# 查看Switch D的路由表信息。

[SwitchD] display ip routing-table

Routing Tables: Public

Destinations : 10 Routes : 10

Destination/Mask Proto Pre Cost NextHop Interface

10.1.1.0/24 RIP 100 1 11.3.1.1 Vlan300

10.2.1.0/24 RIP 100 1 11.3.1.1 Vlan300

10.5.1.0/24 RIP 100 1 11.3.1.1 Vlan300

10.6.1.0/24 RIP 100 1 11.3.1.1 Vlan300

11.3.1.0/24 Direct 0 0 11.3.1.2 Vlan300

11.3.1.2/32 Direct 0 0 127.0.0.1 InLoop0

11.4.1.0/24 Direct 0 0 11.4.1.2 Vlan400

11.4.1.2/32 Direct 0 0 127.0.0.1 InLoop0

127.0.0.0/8 Direct 0 0 127.0.0.1 InLoop0

127.0.0.1/32 Direct 0 0 127.0.0.1 InLoop0

(4) 在Switch C上配置路由聚合，只发布聚合路由10.0.0.0/8。

[SwitchC] interface vlan-interface 300

[SwitchC-Vlan-interface300] rip summary-address 10.0.0.0 8

# 查看Switch D的路由表信息。

[SwitchD] display ip routing-table

Routing Tables: Public

Destinations : 7 Routes : 7

Destination/Mask Proto Pre Cost NextHop Interface

10.0.0.0/8 RIP 100 1 11.3.1.1 Vlan300

11.3.1.0/24 Direct 0 0 11.3.1.2 Vlan300

11.3.1.2/32 Direct 0 0 127.0.0.1 InLoop0

11.4.1.0/24 Direct 0 0 11.4.1.2 Vlan400

11.4.1.2/32 Direct 0 0 127.0.0.1 InLoop0

127.0.0.0/8 Direct 0 0 127.0.0.1 InLoop0

127.0.0.1/32 Direct 0 0 127.0.0.1 InLoop0

1.9.5 配置RIP快速重路由

1. 组网需求

如 图1-9 所示，Switch S 、Switch A和Switch D通过RIPv2协议实现网络互连。要求当Switch S和Switch D之间的链路出现故障时，业务可以快速切换到链路B上。

2. 组网图

图1-9 配置RIP快速重路由

3. 配置步骤

(1) 配置各交换机接口的IP地址和RIPv2协议

请按照上面组网图配置各接口的IP地址和子网掩码，具体配置过程略。

配置各路由器之间采用RIPv2协议进行互连，确保Switch S、Switch A和Switch D之间能够在网络层互通，并且各路由器之间能够借助RIPv2协议实现动态路由更新。

具体配置过程略。

(2) 配置RIP 快速重路由

# 配置Switch S。

<SwitchS> system-view

[SwitchS] bfd echo-source-ip 1.1.1.1

[SwitchS] ip ip-prefix abc index 10 permit 4.4.4.4 32

[SwitchS] route-policy frr permit node 10

[SwitchS-route-policy] if-match ip-prefix abc

[SwitchS-route-policy] apply fast-reroute backup-interface vlan-interface 100 backup-nexthop 12.12.12.2

[SwitchS-route-policy] quit

[SwitchS] rip 1

[SwitchS-rip-1] fast-reroute route-policy frr

[SwitchS-rip-1] quit

# 配置Switch D。

<SwitchD> system-view

[SwitchD] bfd echo-source-ip 4.4.4.4

[SwitchD] ip ip-prefix abc index 10 permit 1.1.1.1 32

[SwitchD] route-policy frr permit node 10

[SwitchD-route-policy] if-match ip-prefix abc

[SwitchD-route-policy] apply fast-reroute backup-interface vlan-interface 101 backup-nexthop 24.24.24.2

[SwitchD-route-policy] quit

[SwitchD] rip 1

[SwitchD-rip-1] fast-reroute route-policy frr

[SwitchD-rip-1] quit

(3) 检验配置效果

# 在Switch S上查看4.4.4.4/32路由，可以看到备份下一跳信息：

[SwitchS] display ip routing-table 4.4.4.4 verbose

Routing Table : Public

Summary Count : 1

Destination: 4.4.4.4/32

Protocol: RIP Process ID: 1

Preference: 100 Cost: 1

IpPrecedence: QosLcId:

NextHop: 13.13.13.2 Interface: vlan200

BkNextHop: 12.12.12.2 BkInterface: vlan100

RelyNextHop: 0.0.0.0 Neighbor : 0.0.0.0

Tunnel ID: 0x0 Label: NULL

BKTunnel ID: 0x0 BKLabel: NULL

State: Active Adv Age: 00h01m27s

Tag: 0

# 在Switch D上查看1.1.1.1/32路由，可以看到备份下一跳信息：

[SwitchD] display ip routing-table 1.1.1.1 verbose

Routing Table : Public

Summary Count : 1

Destination: 1.1.1.1/32

Protocol: RIP Process ID: 1

Preference: 100 Cost: 1

IpPrecedence: QosLcId:

NextHop: 13.13.13.1 Interface: vlan200

BkNextHop: 24.24.24.2 BkInterface: vlan101

RelyNextHop: 0.0.0.0 Neighbor : 0.0.0.0

Tunnel ID: 0x0 Label: NULL

BKTunnel ID: 0x0 BKLabel: NULL

State: Active Adv Age: 00h01m27s

Tag: 0

1.9.6 配置RIP运行BFD（echo报文单跳检测）

1. 组网需求

l Switch A、Switch C通过二层交换机互连，它们的接口Vlan-interface100都运行RIP进程1。并且Switch A的接口Vlan-interface100上还使能了BFD检测功能。

l Switch A通过Switch B与Switch C互连，Switch A的接口Vlan-interface200运行RIP进程2。Switch C的接口Vlan-interface300、Switch B的接口Vlan-interface200和Vlan-interface300上都运行RIP进程1。

l Switch C上配置静态路由，并且将静态路由引入在RIP进程中，使Switch C有路由发送至Switch A。Switch A上学习到Switch C发送的静态路由，出接口为与二层交换机相连的接口。

l 在Switch C和二层交换机之间的链路发生故障后，BFD能够快速检测链路中断并通告RIP协议。RIP协议响应BFD会话down，删除与Switch C的邻居，并删除从Switch C学习的路由。Switch A上学习到Switch C上发送的静态路由，出接口为与Switch B相连的接口。

2. 组网图

图1-10 配置RIP运行BFD特性组网图（echo报文单跳检测）

3. 配置步骤

(1) 配置各接口的IP地址（略）

(2) 配置RIP基本功能

# 配置Switch A。

[SwitchA] rip 1

[SwitchA-rip-1] network 192.168.1.0

[SwitchA-rip-1] quit

[SwitchA] interface vlan-interface 100

[SwitchA-Vlan-interface100] rip bfd enable

[SwitchA-Vlan-interface100] quit

[SwitchA] rip 2

[SwitchA-rip-2] network 192.168.2.0

# 配置Switch B。

[SwitchB] rip 1

[SwitchB-rip-1] network 192.168.2.0

[SwitchB-rip-1] network 192.168.3.0

[SwitchB-rip-1] quit

# 配置Switch C。

[SwitchC] rip 1

[SwitchC-rip-1] network 192.168.1.0

[SwitchC-rip-1] network 192.168.3.0

[SwitchC-rip-1] import-route static

[SwitchC-rip-1] quit

(3) 配置BFD参数

# 配置Switch A。

[SwitchA] bfd session init-mode active

[SwitchA] bfd echo-source-ip 11.11.11.11

[SwitchA] interface vlan-interface 100

[SwitchA-Vlan-interface100] bfd min-transmit-interval 500

[SwitchA-Vlan-interface100] bfd min-receive-interval 500

[SwitchA-Vlan-interface100] bfd detect-multiplier 7

[SwitchA-Vlan-interface100] quit

[SwitchA] quit

(4) Switch C配置静态路由

[SwitchC] ip route-static 100.1.1.1 24 null 0

(5) 检查配置结果

# 显示Switch A的BFD信息。

<SwitchA> display bfd session

Total Session Num: 1 Init Mode: Active

Session Working Under Echo Mode:

LD SourceAddr DestAddr State Holdtime Interface

5 192.168.1.1 192.168.1.2 Up 2000ms Vlan100

# 显示Switch A学到的路由100.1.1.0/24。

<SwitchA> display ip routing-table 100.1.1.0 24 verbose

Routing Table : Public

Summary Count : 2

Destination: 100.1.1.0/24

Protocol: RIP Process ID: 1

Preference: 100 Cost: 1

IpPrecedence: QosLcId:

NextHop: 192.168.1.2 Interface: vlan-interface 100

BkNextHop: 0.0.0.0 BkInterface:

RelyNextHop: 0.0.0.0 Neighbor : 192.168.1.2

Tunnel ID: 0x0 Label: NULL

BKTunnel ID: 0x0 BKLabel: NULL

State: Active Adv Age: 00h00m47s

Tag: 0

Destination: 100.1.1.0/24

Protocol: RIP Process ID: 2

Preference: 100 Cost: 2

IpPrecedence: QosLcId:

NextHop: 192.168.2.2 Interface: vlan-interface 200

BkNextHop: 0.0.0.0 BkInterface:

RelyNextHop: 0.0.0.0 Neighbor : 192.168.2.2

Tunnel ID: 0x0 Label: NULL

BKTunnel ID: 0x0 BKLabel: NULL

State: Inactive Adv Age: 00h12m50s

Tag: 0

# 打开Switch A的调试开关

<SwitchA> debugging rip 1 event

<SwitchA> terminal debugging

# Switch C和二层交换机之间的链路发生故障时，可以看到Switch A能够快速感知Switch C的变化。

%Jan 19 10:41:51:203 2008 SwitchA BFD/4/LOG:Sess[192.168.1.1/192.168.1.2, Vlan-interface 100,Ctrl], Sta: UP->DOWN, Diag: 1

*Jan 19 10:33:12:813 2008 SwitchA RM/6/RMDEBUG: RIP-BFD: Message Type Disable, Connect Type Direct-connect, Pkt Type Echo, Src IP Address 192.168.1.1, Src IFIndex4, Nbr IP Address 192.168.1.2.

# 显示Switch A的BFD信息。

查看Switch A的BFD信息，Switch A已取消与Switch C的邻居关系，没有任何输出信息。

<SwitchA> display bfd session

# 显示Switch A的RIP进程1的路由信息。

查看Switch A的RIP进程1的路由信息，没有从Switch C学到的RIP路由。

<SwitchA> display rip 1 route

Route Flags: R - RIP, T - TRIP

P - Permanent, A - Aging, S - Suppressed, G - Garbage-collect

----------------------------------------------------------------------------

# 显示Switch A上学到的路由100.1.1.0/24。

<SwitchA> display ip routing-table 100.1.1.0 24 verbose

Routing Table : Public

Summary Count : 1

Destination: 100.1.1.0/24

Protocol: RIP Process ID: 2

Preference: 100 Cost: 2

IpPrecedence: QosLcId:

NextHop: 192.168.2.2 Interface: vlan-interface 200

BkNextHop: 0.0.0.0 BkInterface:

RelyNextHop: 0.0.0.0 Neighbor : 192.168.2.2

Tunnel ID: 0x0 Label: NULL

BKTunnel ID: 0x0 BKLabel: NULL

State: Active Adv Age: 00h18m40s

Tag: 0

1.9.7 配置RIP运行BFD（control报文双向检测）

1. 组网需求

l Switch A、Switch B与Switch C互连。Switch A的接口Vlan-interface100、Switch C的接口Vlan-interface200、Switch B的接口Vlan-interface100和Vlan-interface200上都运行RIP进程1。

l 分别在Switch A和Switch C上配置到达对端的静态路由，并在Switch A的接口Vlan-interface100和Switch C的接口Vlan-interface200上并使能BFD检测功能。

l Switch A通过Switch D与Switch C互连。Switch A的接口Vlan-interface300运行RIP进程2。Switch C的接口Vlan-interface400、Switch D的接口Vlan-interface300和Vlan-interface400上运行RIP进程1。

l 为使Switch A与Switch C互有路由发送，在Switch A与Switch C上将到达对端的静态路由引入RIP协议中。Switch A与Switch C之间建立BFD会话。Switch A上学习到Switch C发送的静态路由，出接口为与Switch B连接的接口。

l 在Switch B与Switch C之间的链路发生故障后，BFD能够快速检测链路中断并通告RIP协议。RIP协议响应BFD会话down，删除与Switch C的邻居，并删除从Switch C学习的路由。Switch A上学习到Switch C发送的静态路由，出接口为与Switch D连接的接口。

2. 组网图

图1-11 配置RIP运行BFD特性组网图（control报文双向检测）

3. 配置步骤

(1) 配置各接口的IP地址（略）

(2) 配置RIP基本功能，并引入静态路由，使Switch A与Switch C互有路由发送

# 配置Switch A。

[SwitchA] rip 1

[SwitchA-rip-1] network 192.168.1.0

[SwitchA-rip-1] peer 192.168.2.2

[SwitchA-rip-1] undo validate-source-address

[SwitchA-rip-1] import-route static

[SwitchA-rip-1] quit

[SwitchA] interface vlan-interface 100

[SwitchA-Vlan-interface100] rip bfd enable

[SwitchA-Vlan-interface100] quit

[SwitchA] rip 2

[SwitchA-rip-2] network 192.168.3.0

[SwitchA-rip-2] quit

# 配置Switch C。

[SwitchC] rip 1

[SwitchC-rip-1] network 192.168.2.0

[SwitchC-rip-1] network 192.168.4.0

[SwitchC-rip-1] peer 192.168.1.1

[SwitchC-rip-1] undo validate-source-address

[SwitchC-rip-1] import-route static

[SwitchC-rip-1] quit

[SwitchC] interface vlan-interface 200

[SwitchC-Vlan-interface200] rip bfd enable

[SwitchC-Vlan-interface200] quit

# 配置Switch D。

<SwitchD> system-view

[SwitchD] rip 1

[SwitchD-rip-1] network 192.168.3.0

[SwitchD-rip-1] network 192.168.4.0

(3) 配置BFD参数

# 配置Switch A。

[SwitchA] bfd session init-mode active

[SwitchA] interface vlan-interface 100

[SwitchA-Vlan-interface100] bfd min-transmit-interval 500

[SwitchA-Vlan-interface100] bfd min-receive-interval 500

[SwitchA-Vlan-interface100] bfd detect-multiplier 7

[SwitchA-Vlan-interface100] quit

# 配置Switch C。

[SwitchC] bfd session init-mode active

[SwitchC] interface vlan-interface 200

[SwitchC-Vlan-interface200] bfd min-transmit-interval 500

[SwitchC-Vlan-interface200] bfd min-receive-interval 500

[SwitchC-Vlan-interface200] bfd detect-multiplier 7

[SwitchC-Vlan-interface200] quit

(4) 配置静态路由

# 配置Switch A。

[SwitchA] ip route-static 192.168.2.0 24 vlan-interface 100 192.168.1.2

[SwitchA] ip route-static 101.1.1.0 24 null 0

[SwitchA] quit

# 配置Switch C。

[SwitchC] ip route-static 192.168.1.0 24 vlan-interface 200 192.168.2.1

[SwitchC] ip route-static 100.1.1.0 24 null 0

出接口为Null0的静态路由，目的IP地址不能为直连网段的IP地址。

(5) 检查配置结果

# 显示Switch A的BFD信息。

<SwitchA> display bfd session

Total Session Num: 1 Init Mode: Active

Session Working Under Ctrl Mode:

LD/RD SourceAddr DestAddr State Holdtime Interface

6/3 192.168.1.1 192.168.2.2 Up 1700ms vlan100

# 显示Switch A上学到的路由100.1.1.0/24。

<SwitchA> display ip routing-table 100.1.1.0 24 verbose

Routing Table : Public

Summary Count : 2

Destination: 100.1.1.0/24

Protocol: RIP Process ID: 1

Preference: 100 Cost: 1

IpPrecedence: QosLcId:

NextHop: 192.168.1.2 Interface: vlan-interface 100

BkNextHop: 0.0.0.0 BkInterface:

RelyNextHop: 0.0.0.0 Neighbor : 192.168.1.2

Tunnel ID: 0x0 Label: NULL

BKTunnel ID: 0x0 BKLabel: NULL

State: Active Adv Age: 00h00m47s

Tag: 0

Destination: 100.1.1.0/24

Protocol: RIP Process ID: 2

Preference: 100 Cost: 2

IpPrecedence: QosLcId:

NextHop: 192.168.3.2 Interface: vlan-interface 300

BkNextHop: 0.0.0.0 BkInterface:

RelyNextHop: 0.0.0.0 Neighbor : 192.168.3.2

Tunnel ID: 0x0 Label: NULL

BKTunnel ID: 0x0 BKLabel: NULL

State: Inactive Adv Age: 00h12m50s

Tag: 0

# 打开Switch A的调试开关。

<SwitchA> debugging rip 1 event

<SwitchA> terminal debugging

# Switch B和Switch C之间的链路发生故障后。可以看到Switch A能够快速检测到链路的变化。

%Jan 19 10:41:51:203 2008 SwitchA BFD/4/LOG:Sess[192.168.1.1/192.168.2.2, Vlan-interface 100, Ctrl], Sta: UP->DOWN, Diag: 1

*Jan 19 10:41:51:203 2008 SwitchA RM/6/RMDEBUG: RIP-BFD: Message Type Disable, Connect Type Indirect-connect, Pkt Type Control, Src IP Address 192.168.1.1, Src IFIndex 4, Nbr IP Address 192.168.2.2.

# 显示Switch A的BFD信息。

查看Switch A的BFD信息，Switch A已取消与Switch C的邻居关系，没有任何输出信息。

<SwitchA> display bfd session

# 显示Switch A的RIP进程1的路由信息。

查看Switch A的RIP进程1的路由信息，没有从Switch C学到的RIP路由。

<SwitchA> display rip 1 route

Route Flags: R - RIP, T - TRIP

P - Permanent, A - Aging, S - Suppressed, G - Garbage-collect

----------------------------------------------------------------------------

# 显示Switch A上学到的路由100.1.1.0/24。

<SwitchA> display ip routing-table 100.1.1.0 24 verbose

Routing Table : Public

Summary Count : 1

Destination: 100.1.1.0/24

Protocol: RIP Process ID: 2

Preference: 100 Cost: 2

IpPrecedence: QosLcId:

NextHop: 192.168.3.2 Interface: vlan-interface 300

BkNextHop: 0.0.0.0 BkInterface:

RelyNextHop: 0.0.0.0 Neighbor : 192.168.3.2

Tunnel ID: 0x0 Label: NULL

BKTunnel ID: 0x0 BKLabel: NULL

State: Active Adv Age: 00h18m40s

Tag: 0


1.10 常见配置错误举例

1.10.1 收不到邻居的RIP更新报文

1. 故障现象

在链路正常的情况下收不到邻居的RIP更新报文。

2. 故障分析

RIP启动后，必须使用 network 命令使能相应的接口。如果对接口的工作状态单独进行了配置，应确认没有抑制相关接口或禁止其收发RIP报文。

如果在对端路由器上配置的是组播方式发送RIP报文，在本地路由器上也应该配置为组播方式。

3. 故障排除

(1) 执行 display current-configuration 命令，检查RIP的配置。

(2) 执行 display rip 命令，检查是否抑制了相关RIP接口。

1.10.2 RIP网络发生路由振荡

1. 故障现象

在链路正常的情况下，运行RIP的网络发生路由振荡，查看路由表时发现部分路由时有时无。

2. 故障分析

在RIP网络中，应确保全网定时器的配置一致，且各定时器之间的关系合理，如Timeout定时器的值应大于Update定时器的值。

3. 故障排除

(1) 使用 display rip 命令查看RIP定时器的配置。

(2) 使用 timers 将全网的定时器配置一致。


1 OSPF配置

l 本文所指的路由器代表运行了路由协议的三层设备。

l S3600V2-SI系列交换机不支持OSPF功能。

相关链接

  • 1.1 OSPF简介
  • 1.2 OSPF配置任务简介
  • 1.3 使能OSPF功能
  • 1.4 配置OSPF区域
  • 1.5 配置OSPF的网络类型
  • 1.6 配置OSPF的路由信息控制
  • 1.7 调整和优化OSPF网络
  • 1.8 配置OSPF快速重路由
  • 1.9 配置OSPF GR
  • 1.10 配置OSPF与BFD联动
  • 1.11 OSPF显示和维护
  • 1.12 典型配置举例
  • 1.13 常见配置错误举例
父主题： 04-OSPF配置


1.1 OSPF简介

OSPF（Open Shortest Path First，开放最短路径优先）是IETF组织开发的一个基于链路状态的内部网关协议。目前针对IPv4协议使用的是OSPF Version 2（RFC 2328）。

本章若没有特别说明，下文中所提到的OSPF均指OSPFv2。

OSPF具有如下特点：

l 适应范围广

支持各种规模的网络，最多可支持几百台路由器。

l 快速收敛

在网络的拓扑结构发生变化后立即发送更新报文，使这一变化在自治系统中同步。

l 无自环

由于OSPF根据收集到的链路状态用最短路径树算法计算路由，从算法本身保证了不会生成自环路由。

l 区域划分

允许自治系统的网络被划分成区域来管理，区域间传送的路由信息被进一步抽象，从而减少了占用的网络带宽。

l 等价路由

支持到同一目的地址的多条等价路由。

l 路由分级

使用4类不同的路由，按优先顺序来说分别是：区域内路由、区域间路由、第一类外部路由、第二类外部路由。

l 支持验证

支持基于接口的报文验证，以保证报文交互和路由计算的安全性。

l 组播发送

在某些类型的链路上以组播地址发送协议报文，减少对其他设备的干扰。

1.1.1 OSPF的基本概念

1. 自治系统（Autonomous System）

一组使用相同路由协议交换路由信息的路由器，缩写为AS。

2. OSPF路由的计算过程

同一个区域内，OSPF协议路由的计算过程可简单描述如下：

l 每台OSPF路由器根据自己周围的网络拓扑结构生成LSA（Link State Advertisement，链路状态通告），并通过更新报文将LSA发送给网络中的其它OSPF路由器。

l 每台OSPF路由器都会收集其它路由器通告的LSA，所有的LSA放在一起便组成了LSDB（Link State Database，链路状态数据库）。LSA是对路由器周围网络拓扑结构的描述，LSDB则是对整个自治系统的网络拓扑结构的描述。

l OSPF路由器将LSDB转换成一张带权的有向图，这张图便是对整个网络拓扑结构的真实反映。各个路由器得到的有向图是完全相同的。

l 每台路由器根据有向图，使用SPF算法计算出一棵以自己为根的最短路径树，这棵树给出了到自治系统中各节点的路由。

3. 路由器ID号

一台运行OSPF协议路由器，每一个OSPF进程必须存在自己的Router ID（路由器ID）。Router ID是一个32比特无符号整数，可以在一个自治系统中唯一的标识一台路由器。

4. OSPF的协议报文

OSPF有五种类型的协议报文：

l Hello报文：周期性发送，用来发现和维持OSPF邻居关系。内容包括一些定时器的数值、DR（Designated Router，指定路由器）、BDR（Backup Designated Router，备份指定路由器）以及自己已知的邻居。

l DD（Database Description，数据库描述）报文：描述了本地LSDB中每一条LSA的摘要信息，用于两台路由器进行数据库同步。

l LSR（Link State Request，链路状态请求）报文：向对方请求所需的LSA。两台路由器互相交换DD报文之后，得知对端的路由器有哪些LSA是本地的LSDB所缺少的，这时需要发送LSR报文向对方请求所需的LSA。内容包括所需要的LSA的摘要。

l LSU（Link State Update，链路状态更新）报文：向对方发送其所需要的LSA。

l LSAck（Link State Acknowledgment，链路状态确认）报文：用来对收到的LSA进行确认。内容是需要确认的LSA的Header（一个报文可对多个LSA进行确认）。

5. LSA的类型

OSPF中对链路状态信息的描述都是封装在LSA中发布出去，常用的LSA有以下几种类型：

l Router LSA（Type1）：由每个路由器产生，描述路由器的链路状态和开销，在其始发的区域内传播。

l Network LSA（Type2）：由DR产生，描述本网段所有路由器的链路状态，在其始发的区域内传播。

l Network Summary LSA（Type3）：由ABR（Area Border Router，区域边界路由器）产生，描述区域内某个网段的路由，并通告给其他区域。

l ASBR Summary LSA（Type4）：由ABR产生，描述到ASBR（Autonomous System Boundary Router，自治系统边界路由器）的路由，通告给相关区域。

l AS External LSA（Type5）：由ASBR产生，描述到AS（Autonomous System，自治系统）外部的路由，通告到所有的区域（除了Stub区域和NSSA区域）。

l NSSA External LSA（Type7）：由NSSA（Not-So-Stubby Area）区域内的ASBR产生，描述到AS外部的路由，仅在NSSA区域内传播。

l Opaque LSA：是一个被提议的LSA类别，由标准的LSA头部后面跟随特殊应用的信息组成，可以直接由OSPF协议使用，或者由其它应用分发信息到整个OSPF域间接使用。Opaque LSA分为Type9、Type10、Type11三种类型，泛洪区域不同；其中，Type9的Opaque LSA仅在本地链路范围进行泛洪，Type10的Opaque LSA仅在本地区域范围进行泛洪，Type11的LSA可以在一个自治系统范围进行泛洪。

6. 邻居和邻接

在OSPF中，邻居（Neighbor）和邻接（Adjacency）是两个不同的概念。

OSPF路由器启动后，便会通过OSPF接口向外发送Hello报文。收到Hello报文的OSPF路由器会检查报文中所定义的参数，如果双方一致就会形成邻居关系。

形成邻居关系的双方不一定都能形成邻接关系，这要根据网络类型而定。只有当双方成功交换DD报文，交换LSA并达到LSDB的同步之后，才形成真正意义上的邻接关系。

1.1.2 OSPF区域

1. 区域划分

随着网络规模日益扩大，当一个大型网络中的路由器都运行OSPF路由协议时，路由器数量的增多会导致LSDB非常庞大，占用大量的存储空间，并使得运行SPF算法的复杂度增加，导致CPU负担很重。

在网络规模增大之后，拓扑结构发生变化的概率也增大，网络会经常处于“振荡”之中，造成网络中会有大量的OSPF协议报文在传递，降低了网络的带宽利用率。更为严重的是，每一次变化都会导致网络中所有的路由器重新进行路由计算。

OSPF协议通过将自治系统划分成不同的区域（Area）来解决上述问题。区域是从逻辑上将路由器划分为不同的组，每个组用区域号（Area ID）来标识。如图1-1 所示。

图1-1 OSPF区域划分

区域的边界是路由器，而不是链路。一个路由器可以属于不同的区域，但是一个网段（链路）只能属于一个区域，或者说每个运行OSPF的接口必须指明属于哪一个区域。划分区域后，可以在区域边界路由器上进行路由聚合，以减少通告到其他区域的LSA数量，还可以将网络拓扑变化带来的影响最小化。

2. 骨干区域与虚连接

(1) 骨干区域（Backbone Area）

OSPF划分区域之后，并非所有的区域都是平等的关系。其中有一个区域是与众不同的，它的区域号（Area ID）是0，通常被称为骨干区域。骨干区域负责区域之间的路由，非骨干区域之间的路由信息必须通过骨干区域来转发。对此，OSPF有两个规定：

l 所有非骨干区域必须与骨干区域保持连通；

l 骨干区域自身也必须保持连通。

但在实际应用中，可能会因为各方面条件的限制，无法满足这个要求。这时可以通过配置OSPF虚连接（Virtual Link）予以解决。

(2) 虚连接（Virtual Link）

虚连接是指在两台ABR之间通过一个非骨干区域而建立的一条逻辑上的连接通道。它的两端必须是ABR，而且必须在两端同时配置方可生效。为虚连接两端提供一条非骨干区域内部路由的区域称为传输区（Transit Area）。

在图1-2 中，Area2与骨干区域之间没有直接相连的物理链路，但可以在ABR上配置虚连接，使Area2通过一条逻辑链路与骨干区域保持连通。

图1-2 虚连接示意图之一

虚连接的另外一个应用是提供冗余的备份链路，当骨干区域因链路故障不能保持连通时，通过虚连接仍然可以保证骨干区域在逻辑上的连通性。如图1-3 所示。

图1-3 虚连接示意图之二

虚连接相当于在两个ABR之间形成了一个点到点的连接，因此，在这个连接上，和物理接口一样可以配置接口的各参数，如发送Hello报文间隔等。

两台ABR之间直接传递OSPF报文信息，它们之间的OSPF路由器只是起到一个转发报文的作用。由于协议报文的目的地址不是中间这些路由器，所以这些报文对于它们而言是透明的，只是当作普通的IP报文来转发。

3. Stub区域

Stub区域是一些特定的区域，Stub区域不允许注入Type5 LSA，在这些区域中路由器的路由表规模以及路由信息传递的数量都会大大减少。

为了进一步减少Stub区域中路由器的路由表规模以及路由信息传递的数量，可以将该区域配置为Totally Stub（完全Stub）区域，该区域的ABR不会将区域间的路由信息和外部路由信息传递到本区域。

（Totally）Stub区域是一种可选的配置属性，但并不是每个区域都符合配置的条件。通常来说，（Totally）Stub区域位于自治系统的边界。

为保证到本自治系统的其他区域或者自治系统外的路由依旧可达，该区域的ABR将生成一条缺省路由，并发布给本区域中的其他非ABR路由器。

配置（Totally）Stub区域时需要注意下列几点：

l 骨干区域不能配置成（Totally）Stub区域。

l 如果要将一个区域配置成Stub区域，则该区域中的所有路由器必须都要配置 stub 命令。

l 如果要将一个区域配置成Totally Stub区域，该区域中的所有路由器必须配置 stub 命令，该区域的ABR路由器需要配置 stub [ no-summary ]命令。

l （Totally）Stub区域内不能存在ASBR，即自治系统外部的路由不能在本区域内传播。

l 虚连接不能穿过（Totally）Stub区域。

4. NSSA区域

NSSA（Not-So-Stubby Area）区域是Stub区域的变形，与Stub区域有许多相似的地方。NSSA区域也不允许Type5 LSA注入，但可以允许Type7 LSA注入。Type7 LSA由NSSA区域的ASBR产生，在NSSA区域内传播。当Type7 LSA到达NSSA的ABR时，由ABR将Type7 LSA转换成Type5 LSA，传播到其他区域。

如图1-4 所示，运行OSPF协议的自治系统包括3个区域：区域1、区域2和区域0，另外两个自治系统运行RIP协议。区域1被定义为NSSA区域，区域1接收的RIP路由传播到NSSA ASBR后，由NSSA ASBR产生Type7 LSA在区域1内传播，当Type7 LSA到达NSSA ABR后，转换成Type5 LSA传播到区域0和区域2。

另一方面，运行RIP的自治系统的RIP路由通过区域2的ASBR产生Type5 LSA在OSPF自治系统中传播。但由于区域1是NSSA区域，所以Type5 LSA不会到达区域1。

与Stub区域一样，虚连接也不能穿过NSSA区域。

图1-4 NSSA区域

5. 各区域特性

如图1-5 所示，列出了各个区域之间的区别。

图1-5 区域特性示意图

各区域特性：

l Totally Stub区域：允许ABR发布的Type3缺省路由，不允许自治系统外部路由和区域间的路由；

l Stub区域：和Totally Stub区域不同在于该区域允许区域间路由；

l NSSA区域：和Stub区域不同在于该区域允许自治系统外部路由的引入，由ASBR发布Type7 LSA通告给本区域；

l Totally NSSA区域：和NSSA区域不同在于该区域不允许区域间路由。

1.1.3 路由器的类型

1. 路由器的分类

OSPF路由器根据在AS中的不同位置，可以分为以下四类：

(1) 区域内路由器（Internal Router）

该类路由器的所有接口都属于同一个OSPF区域。

(2) 区域边界路由器ABR（Area Border Router）

该类路由器可以同时属于两个以上的区域，但其中一个必须是骨干区域（骨干区域的介绍请参见下一小节）。ABR用来连接骨干区域和非骨干区域，它与骨干区域之间既可以是物理连接，也可以是逻辑上的连接。

(3) 骨干路由器（Backbone Router）

该类路由器至少有一个接口属于骨干区域。因此，所有的ABR和位于Area0的内部路由器都是骨干路由器。

(4) 自治系统边界路由器ASBR

与其他AS交换路由信息的路由器称为ASBR。ASBR并不一定位于AS的边界，它有可能是区域内路由器，也有可能是ABR。只要一台OSPF路由器引入了外部路由的信息，它就成为ASBR。

图1-6 OSPF路由器的类型

2. 路由类型

OSPF将路由分为四类，按照优先级从高到低的顺序依次为：

l 区域内路由（Intra Area）

l 区域间路由（Inter Area）

l 第一类外部路由（Type1 External）

l 第二类外部路由（Type2 External）

区域内和区域间路由描述的是AS内部的网络结构，外部路由则描述了应该如何选择到AS以外目的地址的路由。OSPF将引入的AS外部路由分为两类：Type1和Type2。

第一类外部路由：这类路由的可信程度较高，并且和OSPF自身路由的开销具有可比性，所以到第一类外部路由的开销等于本路由器到相应的ASBR的开销与ASBR到该路由目的地址的开销之和。

第二类外部路由：这类路由的可信度比较低，所以OSPF协议认为从ASBR到自治系统之外的开销远远大于在自治系统之内到达ASBR的开销。所以计算路由开销时将主要考虑前者，即到第二类外部路由的开销等于ASBR到该路由目的地址的开销。如果计算出开销值相等的两条路由，再考虑本路由器到相应的ASBR的开销。

1.1.4 OSPF的网络类型

1. OSPF的4种网络类型

OSPF根据链路层协议类型将网络分为下列四种类型：

l 广播（Broadcast）类型：当链路层协议是Ethernet、FDDI时，OSPF缺省认为网络类型是Broadcast。在该类型的网络中，通常以组播形式（224.0.0.5：含义是OSPF路由器的预留IP组播地址；224.0.0.6：含义是OSPF DR的预留IP组播地址）发送Hello报文、LSU报文和LSAck报文；以单播形式发送DD报文和LSR报文。

l NBMA（Non-Broadcast Multi-Access，非广播多路访问）类型：当链路层协议是帧中继、ATM或X.25时，OSPF缺省认为网络类型是NBMA。在该类型的网络中，以单播形式发送协议报文。

l P2MP（Point-to-MultiPoint，点到多点）类型：没有一种链路层协议会被缺省的认为是P2MP类型。点到多点必须是由其他的网络类型强制更改的。常用做法是将NBMA改为点到多点的网络。在该类型的网络中，缺省情况下，以组播形式（224.0.0.5）发送协议报文。可以根据用户需要，以单播形式发送协议报文。

l P2P（Point-to-Point，点到点）类型：当链路层协议是PPP、HDLC时，OSPF缺省认为网络类型是P2P。在该类型的网络中，以组播形式（224.0.0.5）发送协议报文。

2. NBMA网络的配置原则

NBMA网络是指非广播、多点可达的网络，比较典型的有ATM和帧中继网络。

对于接口的网络类型为NBMA的网络需要进行一些特殊的配置。由于无法通过广播Hello报文的形式发现相邻路由器，必须手工为该接口指定相邻路由器的IP地址，以及该相邻路由器是否有DR选举权等。

NBMA网络必须是全连通的，即网络中任意两台路由器之间都必须有一条虚电路直接可达。如果部分路由器之间没有直接可达的链路时，应将接口配置成P2MP类型。如果路由器在NBMA网络中只有一个对端，也可将接口类型配置为P2P类型。

NBMA与P2MP网络之间的区别如下：

l NBMA网络是指那些全连通的、非广播、多点可达网络。而P2MP网络，则并不需要一定是全连通的。

l 在NBMA网络中需要选举DR与BDR，而在P2MP网络中没有DR与BDR。

l NBMA是一种缺省的网络类型，而P2MP网络必须是由其它的网络强制更改的。最常见的做法是将NBMA网络改为P2MP网络。

l NBMA网络采用单播发送报文，需要手工配置邻居。P2MP网络采用组播方式发送报文。

1.1.5 DR/BDR

1. DR/BDR简介

在广播网和NBMA网络中，任意两台路由器之间都要交换路由信息。如果网络中有n台路由器，则需要建立n（n-1）/2个邻接关系。这使得任何一台路由器的路由变化都会导致多次传递，浪费了带宽资源。为解决这一问题，OSPF协议定义了指定路由器DR（Designated Router），所有路由器都只将信息发送给DR，由DR将网络链路状态发送出去。

如果DR由于某种故障而失效，则网络中的路由器必须重新选举DR，再与新的DR同步。这需要较长的时间，在这段时间内，路由的计算是不正确的。为了能够缩短这个过程，OSPF提出了BDR（Backup Designated Router，备份指定路由器）的概念。

BDR是对DR的一个备份，在选举DR的同时也选举出BDR，BDR也和本网段内的所有路由器建立邻接关系并交换路由信息。当DR失效后，BDR会立即成为DR。由于不需要重新选举，并且邻接关系之前已建立，所以这个过程是非常短暂的。当然这时还需要再重新选举出一个新的BDR，虽然需要较长的时间，但并不会影响路由的计算。

运行OSPF进程的网络中，既不是DR也不是BDR的路由器为DR Other。DR Other仅与DR和BDR之间建立邻接关系，DR Other之间不交换任何路由信息。这样就减少了广播网和NBMA网络上各路由器之间邻接关系的数量，同时减少网络流量，节约了带宽资源。

如 图1-7 所示，用实线代表以太网物理连接，虚线代表建立的邻接关系。可以看到，采用DR/BDR机制后，5台路由器之间只需要建立7个邻接关系就可以了。

图1-7 DR和BDR示意图

2. DR/BDR选举过程

DR和BDR是由同一网段中所有的路由器根据路由器优先级、Router ID通过Hello报文选举出来的，只有优先级大于0的路由器才具有选举资格。

进行DR/BDR选举时每台路由器将自己选出的DR写入Hello报文中，发给网段上的每台运行OSPF协议的路由器。当处于同一网段的两台路由器同时宣布自己是DR时，路由器优先级高者胜出。如果优先级相等，则Router ID大者胜出。如果一台路由器的优先级为0，则它不会被选举为DR或BDR。

需要注意的是：

l 只有在广播或NBMA类型接口才会选举DR，在点到点或点到多点类型的接口上不需要选举DR。

l DR是某个网段中的概念，是针对路由器的接口而言的。某台路由器在一个接口上可能是DR，在另一个接口上有可能是BDR，或者是DR Other。

l 路由器的优先级可以影响DR/BDR的选举过程，但是当DR/BDR已经选举完毕，就算一台具有更高优先级的路由器变为有效，也不会替换该网段中已经存在的DR/BDR成为新的DR/BDR。

l DR并不一定就是路由器优先级最高的路由器接口；同理，BDR也并不一定就是路由器优先级次高的路由器接口。

1.1.6 OSPF的协议报文

OSPF报文直接封装为IP报文协议报文，协议号为89。一个比较完整的OSPF报文（以LSU报文为例）结构如图1-8 所示。

图1-8 OSPF报文结构

1. OSPF报文头

OSPF有五种报文类型，它们有相同的报文头。如图1-9 所示。

图1-9 OSPF报文头格式

主要字段的解释如下：

l Version：OSPF的版本号。对于OSPFv2来说，其值为2。

l Type：OSPF报文的类型。数值从1到5，分别对应Hello报文、DD报文、LSR报文、LSU报文和LSAck报文。

l Packet length：OSPF报文的总长度，包括报文头在内，单位为字节。

l Router ID：始发该LSA的路由器的ID。

l Area ID：始发LSA的路由器所在的区域ID。

l Checksum：对整个报文的校验和。

l AuType：验证类型。可分为不验证、简单（明文）口令验证和MD5验证，其值分别为0、1、2。

l Authentication：其数值根据验证类型而定。当验证类型为0时未作定义，为1时此字段为密码信息，类型为2时此字段包括Key ID、MD5验证数据长度和序列号的信息。

MD5验证数据添加在OSPF报文后面，不包含在Authenticaiton字段中。

2. Hello报文（Hello Packet）

最常用的一种报文，周期性的发送给邻居路由器用来维持邻居关系以及DR/BDR的选举，内容包括一些定时器的数值、DR、BDR以及自己已知的邻居。Hello报文格式如图1-10 所示。

图1-10 Hello报文格式

主要字段解释如下：

l Network mask：发送Hello报文的接口所在网络的掩码，如果相邻两台路由器的网络掩码不同，则不能建立邻居关系。

l HelloInterval：发送Hello报文的时间间隔。如果相邻两台路由器的Hello间隔时间不同，则不能建立邻居关系。

l Rtr Pri：路由器优先级。如果设置为0，则该路由器接口不能成为DR/BDR。

l RouterDeadInterval：失效时间。如果在此时间内未收到邻居发来的Hello报文，则认为邻居失效。如果相邻两台路由器的失效时间不同，则不能建立邻居关系。

l Designated router：指定路由器的接口的IP地址。

l Backup designated router：备份指定路由器的接口的IP地址。

l Neighbor：邻居路由器的Router ID。

3. DD报文（Database Description Packet）

两台路由器进行数据库同步时，用DD报文来描述自己的LSDB，内容包括LSDB中每一条LSA的摘要（摘要是指LSA的Header，通过该Header可以唯一标识一条LSA）。这样做是为了减少路由器之间传递信息的量，因为LSA的Header只占一条LSA的整个数据量的一小部分，根据Header，对端路由器就可以判断出是否已有这条LSA。

DD报文格式如图1-11 所示。

图1-11 DD报文格式

主要字段的解释如下：

l Interface MTU：在不分片的情况下，此接口最大可发出的IP报文长度。

l I（Initial）：当发送连续多个DD报文时，如果这是第一个DD报文，则置为1，否则置为0。

l M（More）：当连续发送多个DD报文时，如果这是最后一个DD报文，则置为0。否则置为1，表示后面还有其他的DD报文。

l MS（Master/Slave）：当两台OSPF路由器交换DD报文时，首先需要确定双方的主（Master）从（Slave）关系，Router ID大的一方会成为Master。当值为1时表示发送方为Master。

l DD Sequence Number：DD报文序列号，由Master方规定起始序列号，每发送一个DD报文序列号加1，Slave方使用Master的序列号作为确认。主从双方利用序列号来保证DD报文传输的可靠性和完整性。

4. LSR报文（Link State Request Packet）

两台路由器互相交换过DD报文之后，知道对端的路由器有哪些LSA是本地的LSDB所缺少的，这时需要发送LSR报文向对方请求所需的LSA。内容包括所需要的LSA的摘要。LSR报文格式如图1-12 所示。

图1-12 LSR报文格式

主要字段解释如下：

l LS type：LSA的类型号。例如Type1表示Router LSA。

l Link State ID：链路状态标识，根据LSA的类型而定。

l Advertising Router：产生此LSA的路由器的Router ID。

5. LSU报文（Link State Update Packet）

LSU报文用来向对端路由器发送它所需要的LSA，内容是多条LSA（全部内容）的集合。LSU报文格式如图1-13 所示。

图1-13 LSU报文格式

主要字段解释如下：

l Number of LSAs：该报文包含的LSA的数量。

l LSA：该报文包含的LSA。

6. LSAck报文（Link State Acknowledgment Packet）

LSAck报文用来对接收到的LSU报文进行确认，内容是需要确认的LSA的Header。一个LSAck报文可对多个LSA进行确认。报文格式如图1-14 所示。

图1-14 LSAck报文格式

主要字段解释如下：

LSA Headers：该报文包含的LSA头部。

7. LSA头格式

所有的LSA都有相同的报文头，其格式如图1-15 所示。

图1-15 LSA的头格式

主要字段的解释如下：

l LS age：LSA产生后所经过的时间，以秒为单位。LSA在本路由器的链路状态数据库（LSDB）中会随时间老化（每秒钟加1），但在网络的传输过程中却不会。

l LS type：LSA的类型。

l Link State ID：具体数值根据LSA的类型而定。

l Advertising Router：始发LSA的路由器的ID。

l LS sequence number：LSA的序列号，其他路由器根据这个值可以判断哪个LSA是最新的。

l LS checksum：除了LS age字段外，关于LSA的全部信息的校验和。

l length：LSA的总长度，包括LSA Header，以字节为单位。

8. LSA类型

(1) Router LSA

图1-16 Router LSA格式

主要字段的解释如下：

l Link State ID：产生此LSA的路由器的Router ID。

l V（Virtual Link）：如果产生此LSA的路由器是虚连接的端点，则置为1。

l E（External）：如果产生此LSA的路由器是ASBR，则置为1。

l B（Border）：如果产生此LSA的路由器是ABR，则置为1。

l # Links：LSA中所描述的链路信息的数量，包括路由器上处于某区域中的所有链路和接口。

l Link ID：链路标识，具体的数值根据链路类型而定。

l Link data：链路数据，具体的数值根据链路类型而定。

l Type：链路类型，取值为1表示通过点对点链路与另一路由器相连，取值为2表示连接到传送网络，取值为3表示连接到Stub网络，取值为4表示虚连接。

l #TOS：描述链路不同TOS开销的数量。如果没有TOS开销和当前链路关联，那么这个字段就设置为0。RFC 2328已经不再支持TOS，保留该字段主要是为了兼容早期的OSPF版本。

l Metric：链路的开销。

l TOS：服务类型。

l TOS metric：指定服务类型的链路的开销。

(2) Network LSA

Network LSA由广播网或NBMA网络中的DR发出，LSA中记录了这一网段上所有路由器的Router ID。

图1-17 Network LSA格式

主要字段的解释如下：

l Link State ID：DR的IP地址。

l Network mask：广播网或NBMA网络地址的掩码。

l Attached router：连接在同一个网段上的所有与DR形成了完全邻接关系的路由器的Router ID，也包括DR自身的Router ID。

(3) Summary LSA

Network Summary LSA（Type3 LSA）和ASBR Summary LSA（Type4 LSA）除Link State ID字段有所不同外，有着相同的格式，它们都是由ABR产生。

图1-18 Summary LSA格式

主要字段的解释如下：

l Link State ID：对于Type3 LSA来说，它是所通告的区域外的网络地址；对于Type4来说，它是所通告区域外的ASBR的Router ID。

l Network mask：Type3 LSA的网络地址掩码。对于Type4 LSA来说没有意义，设置为0.0.0.0。

l Metric：到目的地址的路由开销。

Type3的LSA可以用来通告缺省路由，此时Link State ID和Network Mask都设置为0.0.0.0。

(4) AS External LSA

由ASBR产生，描述到AS外部的路由信息。

图1-19 AS External LSA格式

主要字段的解释如下：

l Link State ID：所要通告的其他外部AS的目的地址，如果通告的是一条缺省路由，那么链路状态ID（Link State ID）和网络掩码（Network Mask）字段都将设置为0.0.0.0。

l Network mask：所通告的目的地址的掩码。

l E（External Metric）：外部度量值的类型。如果是第2类外部路由就设置为1，如果是第1类外部路由则设置为0。关于外部路由类型的详细描述请参见 1.1.3 2. 路由类型部分。

l Metirc：路由开销。

l Forwarding Address：到所通告的目的地址的报文将被转发到的地址。

l External Route Tag：添加到外部路由上的标记。OSPF本身并不使用这个字段，它可以用来对外部路由进行管理。

(5) NSSA External LSA

由NSSA区域内的ASBR产生，且只能在NSSA区域内传播。其格式与AS External LSA相同，如图1-20 所示。

图1-20 NSSA External LSA格式

1.1.7 系统支持的OSPF特性

1. 多进程

OSPF支持多进程，在同一台路由器上可以运行多个不同的OSPF进程，它们之间互不影响，彼此独立。不同OSPF进程之间的路由交互相当于不同路由协议之间的路由交互。支持多个OSPF进程共用一个RID。

路由器的一个接口只能属于某一个OSPF进程。

2. 验证

OSPF支持报文验证功能，只有通过验证的OSPF报文才能接收，否则将不能正常建立邻居关系。

一个区域中所有的接口的验证类型（不支持验证、支持明文验证或者支持MD5密文验证）必须一致。一个网段中所有接口的验证字口令必须一致。

3. OSPF GR

GR（Graceful Restart，平滑重启）是一种在协议重启或主备切换时保证转发业务不中断的机制。GR有两个角色：

l GR Restarter：发生协议重启或主备倒换事件且具有GR能力的设备。

l GR Helper：和GR Restarter具有邻居关系，协助完成GR流程的设备。

基于OSPF的GR Restarter进行协议重启后，为了与其OSPF邻居重新同步链路状态数据库，它必须完成下列两项任务：

l 在不改变邻接关系的前提下，重新获取网络中的有效OSPF邻居信息；

l 重新获取网络链路状态数据库的内容。

在OSPF协议重启前，GR Restarter与GR Helper协商GR能力，如果GR Restarter发生重启，在重启过程中，GR Helper宣告与GR Restarter的邻接状态不变。

OSPF协议重启完毕后，GR Restarter会立即向邻接的GR Helper发送一个OSPF GR信号。这样，OSPF邻居就不会复位与GR Restarter的邻居关系。在收到OSPF邻居的响应后，GR Restarter会重新恢复与GR Helper的邻居关系列表。

邻居关系重新建立后，GR Restarter与所有具备GR能力的OSPF邻居之间同步数据库，并交换路由信息。交换完成后，GR Restarter根据新的路由转发信息更新路由表和转发表，删除失效的路由，完成OSPF协议收敛。

4. OSPF与BFD联动

关于BFD的介绍和基本功能配置，请参见“可靠性配置指导”中的“BFD”。

BFD（Bidirectional Forwarding Detection，双向转发检测）能够为OSPF邻居之间的链路提供快速检测功能。当邻居之间的链路出现故障时，加快OSPF协议的收敛速度。

1.1.8 协议规范

与OSPF相关的协议规范有：

l RFC 1765：OSPF Database Overflow

l RFC 2328：OSPF Version 2

l RFC 3101：OSPF Not-So-Stubby Area (NSSA) Option

l RFC 3137：OSPF Stub Router Advertisement

l RFC 3630：Traffic Engineering Extensions to OSPF Version 2

l RFC 4811：OSPF Out-of-Band LSDB Resynchronization

l RFC 4812：OSPF Restart Signaling

l RFC 4813：OSPF Link-Local Signaling


1.2 OSPF配置任务简介

在一个运行OSPF的路由域里，有各种类型的路由器，区域内路由器、ABR、ASBR等。

无论是哪种类型的路由器，都必须先使能OSPF，否则OSPF协议将无法正常运行；使能OSPF功能后，路由器可以使用一些缺省配置，如OSPF各种协议报文的发送时间间隔、LSA延迟时间、SPF计算时间间隔等，也可以根据需要修改缺省配置。

在OSPF路由器上进行各项配置的时候都应该先做好网络规划，在配置同一区域内的路由器时，配置时应该以区域为基础来统一考虑，错误的配置可能会导致相邻路由器之间无法相互传递信息，甚至导致路由信息的阻塞或者产生路由环。

表1-1 OSPF配置任务简介

配置任务 |  | 说明 | 详细配置
使能OSPF功能 |  | 必选 | 1.3
配置OSPF区域 | 配置Stub区域 | 可选 | 1.4.2
 | 配置NSSA区域 | 可选 | 1.4.3
 | 配置虚连接 | 可选 | 1.4.4
配置OSPF的网络类型 | 配置OSPF接口网络类型为广播 | 可选 | 1.5.2
 | 配置OSPF接口网络类型为NBMA | 可选 | 1.5.3
 | 配置OSPF接口网络类型为P2MP | 可选 | 1.5.4
 | 配置OSPF接口网络类型为P2P | 可选 | 1.5.5
配置OSPF的路由信息控制 | 配置OSPF路由聚合 | 可选 | 1.6.2
 | 配置OSPF对通过接收到的LSA计算出来的路由信息进行过滤 | 可选 | 1.6.3
 | 配置对Type-3 LSA进行过滤 | 可选 | 1.6.4
 | 配置OSPF接口的开销值 | 可选 | 1.6.5
 | 配置OSPF支持的路由最大数目 | 可选 | 1.6.6
 | 配置OSPF最大等价路由条数 | 可选 | 1.6.7
 | 配置OSPF协议的优先级 | 可选 | 1.6.8
 | 配置OSPF引入外部路由 | 可选 | 1.6.9
 | 配置发布一条主机路由 | 可选 | 1.6.10
调整和优化OSPF网络 | 配置OSPF报文定时器 | 可选 | 1.7.2
 | 配置接口传送LSA的延迟时间 | 可选 | 1.7.3
 | 配置SPF计算时间间隔 | 可选 | 1.7.4
 | 配置LSA重复到达的最小时间间隔 | 可选 | 1.7.5
 | 配置LSA重新生成的时间间隔 | 可选 | 1.7.6
 | 禁止接口收发OSPF报文 | 可选 | 1.7.7
 | 配置Stub路由器 | 可选 | 1.7.8
 | 配置OSPF验证 | 可选 | 1.7.9
 | 配置DD报文中的MTU | 可选 | 1.7.10
 | 配置LSDB中External LSA的最大数量 | 可选 | 1.7.11
 | 配置兼容RFC 1583的外部路由选择规则 | 可选 | 1.7.12
 | 配置邻接状态输出 | 可选 | 1.7.13
 | 配置OSPF网管功能 | 可选 | 1.7.14
 | 使能日志功能 | 可选 | 1.7.15
 | 使能Opaque LSA发布接收能力 | 可选 | 1.7.16
 | 配置OSPF优先处理Hello报文功能 | 可选 | 1.7.17
 | 配置OSPF发送更新报文的速度 | 可选 | 1.7.18
 | 配置OSPF ISPF | 可选 | 1.7.19
配置OSPF快速重路由 |  | 可选 | 1.8
配置OSPF GR | 配置GR Restarter | 可选 | 1.9.1
 | 配置GR Helper | 可选 | 1.9.2
 | 重启OSPF GR进程 | 可选 | 1.9.3
配置OSPF与BFD联动 |  | 可选 | 1.10


1.3 使能OSPF功能

在OSPF的各项配置任务中，必须先使能OSPF功能，其它功能特性的配置才能生效。

1.3.1 配置准备

在配置OSPF之前，需完成以下任务：

l 配置链路层协议，保证链路层通信正常。

l 配置接口的网络层地址，使各相邻节点网络层可达。

1.3.2 使能OSPF功能

要在路由器上使能OSPF功能，必须先创建OSPF进程、指定该进程关联的区域以及区域包括的网段；对于当前路由器来说，如果某个路由器的接口IP地址落在某个区域的网段内，则该接口属于这个区域并使能了OSPF功能，OSPF将把这个接口的直连路由宣告出去。

Router ID用来在一个自治系统中唯一的标识一台路由器，一台路由器如果要运行OSPF协议，则必须存在Router ID。

l 用户可以在创建OSPF进程的时候指定Router ID，配置时，必须保证自治系统中任意两台路由器的ID都不相同。通常的做法是将路由器的ID配置为与该路由器某个接口的IP地址一致。

l 如果在创建OSPF进程的时候没有指定Router ID，则缺省使用全局Router ID。建议用户在创建OSPF进程的时候指定Router ID。

目前，系统支持OSPF多进程和OSPF多实例：

l 当在一台路由器上启动多个OSPF进程时，需要指定不同的进程号。OSPF进程号是本地概念，不影响与其它路由器之间的报文交换。因此，不同的路由器之间，即使进程号不同也可以进行报文交换。

l 可以配置OSPF在VPN实例中运行。如果指定了VPN实例，那么此OSPF进程属于指定的VPN实例。

表1-2 使能OSPF功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置全局Router ID | router id router-id | 可选 缺省情况下，未配置全局Router ID 如果没有配置全局Router ID，则按照下面的规则进行选择： (1) 如果存在配置IP地址的Loopback接口，则选择Loopback接口地址中最大的作为Router ID (2) 如果没有配置IP地址的Loopback接口，则从其他接口的IP地址中选择最大的作为Router ID（不考虑接口的up/down状态）
创建OSPF，进入OSPF视图 | ospf [ process-id | router-id router-id | vpn-instance vpn-instance-name ] * | 必选 缺省情况下，系统不运行OSPF
配置OSPF进程描述 | description description | 可选 缺省情况下，没有配置进程描述
配置OSPF区域，进入OSPF区域视图 | area area-id | 必选 缺省情况下，没有配置OSPF区域
配置区域描述 | description description | 可选 缺省情况下，没有配置区域描述
配置区域所包含的网段并在指定网段的接口上使能OSPF | network ip-address wildcard-mask | 必选 缺省情况下，接口不属于任何区域且OSPF功能处于关闭状态

l 一个网段只能属于一个区域。

l 建议用户为每个OSPF进程配置进程描述信息，帮助识别进程的用途，以便于记忆和管理。

l 建议用户为每个区域配置区域描述信息，帮助识别区域的用途，以便于记忆和管理。


1.4 配置OSPF区域

网络管理员对整个网络划分区域完毕后，可以根据组网需要进一步将区域配置成Stub区域或NSSA区域。

当非骨干区域不能与骨干区域保持连通，或者骨干区域因为各方面条件的限制无法保持连通时，可以通过配置OSPF虚连接予以解决。

1.4.1 配置准备

在配置OSPF的区域特性之前，需完成以下任务：

l 配置接口的网络层地址，使相邻节点网络层可达

l 使能OSPF功能

1.4.2 配置Stub区域

对于位于AS边缘的一些非骨干区域，我们可以在该区域的所有路由器上配置 stub 命令，把该区域配置为Stub区域。这样，Type5 LSA不会在Stub区域里泛洪，减小了路由表的规模。ABR生成一条缺省路由，所有到达自治系统外部的报文都交给ABR进行转发。

如果想进一步减少Stub区域路由表规模以及路由信息传递的数量，那么在ABR上配置 stub 命令时指定 no-summary 参数，可以将该区域配置为Totally Stub（完全Stub）区域。这样，自治系统外部路由和区域间的路由信息都不会传递到本区域，所有目的地是自治系统外和区域外的报文都交给ABR进行转发。

表1-3 配置Stub区域

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入OSPF视图 | ospf [ process-id | router-id router-id | vpn-instance vpn-instance-name ] * | -
进入OSPF区域视图 | area area-id | -
配置当前区域为Stub区域 | stub [ no-summary ] | 必选 缺省情况下，没有区域被设置为Stub区域
配置ABR发送到Stub区域缺省路由的开销 | default-cost cost | 可选 缺省情况下，ABR发送到Stub区域缺省路由的开销为1

l Stub区域内的所有路由器必须使用stub命令将该区域配置成Stub属性。

l default-cost 命令只有在Stub区域的ABR上配置才能生效。

l 骨干区域不能配置成（Totally）Stub区域。

l （Totally）Stub区域内不能存在ASBR，即自治系统外部的路由不能在本区域内传播。

l 虚连接不能穿过（Totally）Stub区域。

1.4.3 配置NSSA区域

Stub区域不能引入外部路由，为了在允许将外部路由通告到OSPF路由域内部的同时，保持其余部分的Stub区域的特征；网络管理员可以将区域配置为NSSA区域。

表1-4 配置NSSA区域

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入OSPF视图 | ospf [ process-id | router-id router-id | vpn-instance vpn-instance-name ] * | -
进入OSPF区域视图 | area area-id | -
配置当前区域为NSSA区域 | nssa [ default-route-advertise | no-import-route | no-summary | translate-always | translator-stability-interval value ] * | 必选 缺省情况下，没有区域被设置为NSSA区域
配置发送到NSSA区域缺省路由的开销 | default-cost cost | 可选 缺省情况下，发送到NSSA区域的缺省路由的开销为1

l NSSA区域内的所有路由器必须使用nssa命令将该区域配置成NSSA属性。

l default-cost命令只有在NSSA区域的ABR/ASBR上配置才能生效。

1.4.4 配置虚连接

在划分区域之后，非骨干区域之间的OSPF路由更新是通过骨干区域来完成交换的。对此，OSPF要求所有非骨干区域必须与骨干区域保持连通，并且骨干区域自身也要保持连通。

但在实际应用中，可能会因为各方面条件的限制，无法满足这个要求。这时可以通过在ABR上配置OSPF虚连接予以解决。

表1-5 配置虚连接

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入OSPF视图 | ospf [ process-id | router-id router-id | vpn-instance vpn-instance-name ] * | -
进入OSPF区域视图 | area area-id | -
创建并配置虚连接 | vlink-peer router-id [ hello seconds | retransmit seconds | trans-delay seconds | dead seconds | simple [ plain | cipher ] password | { md5 | hmac-md5 } key-id [ plain | cipher ] password ] * | 必选 为使虚连接生效，在虚连接的两端都需配置此命令，并且两端配置的 hello、dead 参数必须一致


1.5 配置OSPF的网络类型

OSPF的网络类型有四种：广播、NBMA、P2MP和P2P。

当接口封装的链路层协议不同时，OSPF接口网络类型的缺省值也不同：

l 广播：当接口封装的链路层协议是Ethernet、FDDI时，接口网络类型缺省值为广播；

l NBMA：当接口封装的链路层协议是ATM、帧中继或X.25时，接口网络类型缺省值为NBMA；

l 点对点：当接口封装的链路层协议是PPP、LAPB、HDLC时，接口网络类型缺省值为点对点。

用户可以根据需要更改接口的网络类型，例如：

l 当NBMA网络通过配置地址映射成为全连通网络时（即网络中任意两台路由器之间都存在一条虚电路而直接可达），可以将网络类型更改为广播，不需要手工配置邻居，简化配置。

l 当广播网络中有部分路由器不支持组播时，那么可以将网络类型更改为NBMA。

l NBMA网络要求必须是全连通的，即网络中任意两台路由器之间都必须有一条虚电路直接可达；如果NBMA网络不是全连通而是部分连通时，可以将网络类型更改为点对多点，达到简化配置、节省网络开销的目的。

l 如果路由器在NBMA网络中只有一个对端，也可将接口类型配置为P2P，节省网络开销。

如果接口配置为广播、NBMA或者P2MP网络类型，只有双方接口在同一网段才能建立邻居关系。

1.5.1 配置准备

在配置OSPF的网络类型之前，需完成以下任务：

l 配置接口的网络层地址，使相邻节点之间网络层可达

l 使能OSPF功能

1.5.2 配置OSPF接口网络类型为广播

表1-6 配置OSPF接口网络类型为广播

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
配置OSPF接口网络类型为广播 | ospf network-type broadcast | 必选 缺省情况下，接口的网络类型根据接口封装的链路层协议而定
配置OSPF接口的路由器优先级 | ospf dr-priority priority | 可选 缺省情况下，接口的路由器优先级为1

1.5.3 配置OSPF接口网络类型为NBMA

把接口类型配置为NBMA后，需要进行一些特殊的配置。

由于无法通过广播Hello报文的形式动态发现相邻路由器，必须手工为接口指定相邻接口的IP地址、该相邻接口是否有选举权等（dr-priority 参数的值仅表示路由器是否具有DR选举权，为0表示不具有DR选举权，大于0时表示具有DR选举权）。

表1-7 配置OSPF接口网络类型为NBMA

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
配置OSPF接口的网络类型为NBMA | ospf network-type nbma | 必选 缺省情况下，接口的网络类型根据物理接口而定
配置OSPF接口的路由器优先级 | ospf dr-priority priority | 可选 缺省情况下，接口的路由器优先级为1
退回系统视图 | quit | -
进入OSPF视图 | ospf [ process-id | router-id router-id | vpn-instance vpn-instance-name ] * | -
配置NBMA网络的邻居 | peer ip-address [ cost value | dr-priority dr-priority ] | 必选

使用 peer 命令和使用 ospf dr-priority 命令设置的优先级具有不同的用途：

l peer命令设置的优先级用于表示邻居是否具有选举权。如果在配置邻居时将优先级指定为0，则本地路由器认为该邻居不具备选举权，不向该邻居发送Hello报文，这种配置可以减少在DR和BDR选举过程中网络上的Hello报文数量。但如果本地路由器是DR或BDR，它也会向优先级为0的邻居发送Hello报文，以建立邻接关系。

l ospf dr-priority 命令设置的优先级用于实际的DR选举。

1.5.4 配置OSPF接口网络类型为P2MP

表1-8 配置OSPF接口网络类型为P2MP

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
配置OSPF接口的网络类型为P2MP | ospf network-type p2mp [ unicast ] | 必选 缺省情况下，接口的网络类型根据物理接口而定 当把接口类型配置为P2MP单播后，OSPF协议在该接口上发送的报文均为单播报文。由于无法通过广播Hello报文的形式动态发现相邻路由器，必须手工为接口指定相邻接口的IP地址
退回系统视图 | quit | -
进入OSPF视图 | ospf [ process-id | router-id router-id | vpn-instance vpn-instance-name ] * | -
配置P2MP单播网络的邻居 | peer ip-address [ cost value | dr-priority dr-priority ] | 如果接口类型为P2MP单播，必选

1.5.5 配置OSPF接口网络类型为P2P

表1-9 配置OSPF接口网络类型为P2P

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
配置OSPF接口的网络类型为P2P | ospf network-type p2p | 必选 缺省情况下，接口的网络类型根据物理接口而定


1.6 配置OSPF的路由信息控制

通过本节的配置，可以控制OSPF的路由信息的发布与接收，并引入其他协议的路由。

1.6.1 配置准备

在配置OSPF路由信息控制之前，需完成以下任务：

l 配置接口的网络层地址，使相邻节点之间网络层可达

l 使能OSPF功能

l 如果对路由信息进行过滤，则需要配置对应的过滤列表

1.6.2 配置OSPF路由聚合

路由聚合是指ABR或ASBR将具有相同前缀的路由信息聚合，只发布一条路由到其它区域。

AS被划分成不同的区域后，每一个区域通过OSPF边界路由器（ABR）相连，区域间可以通过路由聚合来减少路由信息，减小路由表的规模，提高路由器的运算速度。

ABR在计算出一个区域的区域内路由之后，根据聚合相关设置，将其中多条OSPF路由聚合成一条发送到区域之外。例如，某个区域内有三条区域内路由19.1.1.0/24，19.1.2.0/24，19.1.3.0/24，如果在ABR上配置了路由聚合，将三条路由聚合成一条19.1.0.0/16，则ABR就只生成一条聚合后的LSA，并发布给其它区域的路由器。

1. 配置区域边界路由器（ABR）路由聚合

如果区域里存在一些连续的网段，则可以在ABR上配置路由聚合，将这些连续的网段聚合成一个网段，ABR向其它区域发送路由信息时，以网段为单位生成Type3 LSA。

这样ABR只发送一条聚合后的LSA，所有属于聚合网段范围的LSA将不再会被单独发送出去，既可以减少其它区域中LSDB的规模，也减小了因为网络拓扑变化带来的影响。

表1-10 配置ABR路由聚合

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入OSPF视图 | ospf [ process-id | router-id router-id | vpn-instance vpn-instance-name ] * | -
进入OSPF区域视图 | area area-id | -
配置OSPF的ABR路由聚合 | abr-summary ip-address { mask | mask-length } [ advertise | not-advertise ] [ cost cost ] | 必选 此命令只有在ABR上配置才会有效 缺省情况下，ABR不会对路由进行聚合

2. 配置自治系统边界路由器（ASBR）对引入的路由进行聚合

ASBR引入外部路由后，每一条路由都会放在单独的一条ASE LSA中向外宣告；通过配置路由聚合，路由器只把聚合后的路由放在ASE LSA中向外宣告，减少了LSDB中LSA的数量。

在ASBR上配置路由聚合后，将对聚合地址范围内的Type5 LSA进行聚合。

如果ASBR在NSSA区域里面，将对聚合地址范围内的Type7 LSA进行聚合，当本地路由器同时是ASBR和ABR时，将对由Type7 LSA转化成的Type5 LSA进行聚合处理。

表1-11 配置ASBR路由聚合

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入OSPF视图 | ospf [ process-id | router-id router-id | vpn-instance vpn-instance-name ] * | -
配置OSPF的ASBR路由聚合 | asbr-summary ip-address { mask | mask-length } [ tag tag | not-advertise | cost cost ] * | 必选 此命令只有在ASBR上配置才会有效 缺省情况下，ASBR不会对引入的路由进行聚合

1.6.3 配置OSPF对通过接收到的LSA计算出来的路由信息进行过滤

l 关于地址前缀列表的详细介绍，请参见“三层技术-IP路由配置指导”中的“路由策略”。

l 关于路由策略的详细介绍，请参见“三层技术-IP路由配置指导”中的“路由策略”。

OSPF是基于链路状态的动态路由协议，路由信息是根据接收到的LSA计算出来的，可以对通过接收到的LSA计算出来的OSPF路由信息进行过滤。

一共有四种过滤方式：

l 基于要加入到路由表的路由信息的目的地址进行过滤，可以通过配置访问控制列表或IP地址前缀列表来指定过滤条件；

l 基于要加入到路由表的路由信息的下一跳进行过滤，可以通过在命令中配置 gateway 参数来指定过滤条件；

l 基于要加入到路由表的路由信息的目的地址和下一跳进行过滤，可以通过配置访问控制列表或IP地址前缀列表指定过滤目的地址的条件，同时配置 gateway 参数来指定过滤下一跳的条件；

l 基于路由策略对要加入到路由表的路由信息进行过滤，可以通过在命令中配置 route-policy 参数来指定过滤条件。

表1-12 配置OSPF对通过接收到的LSA计算出来的路由信息进行过滤

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入OSPF视图 | ospf [ process-id | router-id router-id | vpn-instance vpn-instance-name ] * | -
配置对接收的路由进行过滤 | filter-policy { acl-number [ gateway ip-prefix-name ] | gateway ip-prefix-name | ip-prefix ip-prefix-name [ gateway ip-prefix-name ] | route-policy route-policy-name } import | 必选 缺省情况下，不对接收到的路由信息进行过滤

1.6.4 配置过滤Type-3 LSA

通过在ABR上配置Type-3 LSA过滤，可以对进入ABR所在区域或ABR向其它区域发布的Type-3 LSA进行过滤。

表1-13 配置过滤Type-3 LSA

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入OSPF视图 | ospf [ process-id | router-id router-id | vpn-instance vpn-instance-name ] * | -
进入OSPF区域视图 | area area-id | -
配置对Type-3 LSA进行过滤 | filter { acl-number | ip-prefix ip-prefix-name } { import | export } | 必选 缺省情况下，没有对Type-3 LSA进行过滤

1.6.5 配置OSPF接口的开销值

OSPF有两种方式来配置接口的开销值：

l 在接口视图下直接配置开销值；

l 配置接口的带宽参考值，OSPF根据带宽参考值自动计算接口的开销值，计算公式为：接口开销＝带宽参考值（100Mbps）÷接口带宽（Mbps），当计算出来的开销值大于65535时，开销取最大值65535；当计算出来的开销值小于1时，开销取最小值1。

如果没有在接口下配置接口的开销值，OSPF会根据该接口的带宽自动计算其开销值。

1. 配置接口的开销值

表1-14 配置OSPF接口的开销值

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
设置OSPF接口的开销值 | ospf cost value | 可选 缺省情况下，VLAN接口的缺省值为1；Loopback接口的缺省值为0；其他接口按照当前的带宽自动计算接口运行OSPF协议所需的开销

2. 配置带宽参考值

表1-15 配置带宽参考值

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入OSPF视图 | ospf [ process-id | router-id router-id | vpn-instance vpn-instance-name ] * | -
配置带宽参考值 | bandwidth-reference value | 可选 缺省情况下，带宽参考值为100Mbps

1.6.6 配置OSPF支持的路由最大数目

表1-16 配置OSPF支持的路由最大数目

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入OSPF视图 | ospf [ process-id | router-id router-id | vpn-instance vpn-instance-name ] * | -
配置OSPF支持的路由最大数目 | maximum-routes { external | inter | intra } number | 可选 本命令的缺省值与设备的型号有关，请以设备的实际情况为准

1.6.7 配置OSPF最大等价路由条数

如果到一个目的地有几条开销相同的路径，可以实现等价路由负载分担，IP报文在这几个链路上负载分担，以提高链路利用率。该配置用以设置OSPF协议的最大等价路由条数。

表1-17 配置OSPF最大等价路由条数

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入OSPF视图 | ospf [ process-id | router-id router-id | vpn-instance vpn-instance-name ] * | -
配置OSPF最大等价路由条数 | maximum load-balancing maximum | 可选 缺省值为8

1.6.8 配置OSPF协议的优先级

由于路由器上可能同时运行多个动态路由协议，就存在各个路由协议之间路由信息共享和选择的问题。系统为每一种路由协议设置一个优先级，在不同协议发现同一条路由时，优先级高的路由将被优先选择。

表1-18 配置OSPF协议的优先级

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入OSPF视图 | ospf [ process-id | router-id router-id | vpn-instance vpn-instance-name ] * | -
配置OSPF协议的路由优先级 | preference [ ase ] [ route-policy route-policy-name ] value | 可选 缺省情况下，OSPF内部路由的优先级为10，OSPF外部路由的优先级为150

1.6.9 配置OSPF引入外部路由

1. 配置OSPF引入其它协议的路由

如果在路由器上不仅运行OSPF，还运行着其它路由协议，可以配置OSPF引入其它协议生成的路由，如RIP、IS-IS、BGP、静态路由或者直连路由，将这些路由信息通过Type5 LSA或Type7 LSA向外宣告。

OSPF还可以对引入的路由进行过滤，只将满足过滤条件的外部路由转换为Type5 LSA或Type7 LSA发布出去。

表1-19 配置OSPF引入其它协议的路由

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入OSPF视图 | ospf [ process-id | router-id router-id | vpn-instance vpn-instance-name ] * | -
配置OSPF引入其它协议的路由 | import-route protocol [ process-id | all-processes | allow-ibgp ] [ cost cost | type type | tag tag | route-policy route-policy-name ] * | 必选 缺省情况下，没有引入其他协议的路由信息
配置对引入的路由进行过滤 | filter-policy { acl-number | ip-prefix ip-prefix-name } export [ protocol [ process-id ] ] | 可选 缺省情况下，没有对引入的路由信息进行过滤

只能引入路由表中状态为active的路由，是否为active状态可以通过 display ip routing-table protocol命令来查看。

2. 配置OSPF引入缺省路由

OSPF不能通过 import-route 命令从其它协议引入缺省路由，如果想把缺省路由引入到OSPF路由区域，必须要使用下面命令配置OSPF引入缺省路由。

表1-20 配置OSPF引入缺省路由

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入OSPF视图 | ospf [ process-id | router-id router-id | vpn-instance vpn-instance-name ] * | -
配置OSPF引入缺省路由 | default-route-advertise [ [ [ always | permit-calculate-other ] | cost cost | route-policy route-policy-name | type type ] * | summary cost cost ] | 必选 缺省情况下，没有引入缺省路由

default-route-advertise summary cost 命令仅在VPN中应用，以Type-3 LSA引入缺省路由，PE路由器会将引入的缺省路由发布给CE路由器。

3. 配置引入路由的相关参数

当OSPF引入外部路由时，还可以配置一些开销、路由数量、标记和类型等参数的缺省值。路由标记可以用来标识协议相关的信息，如OSPF从BGP引入路由时，可以用来标记自治系统的编号。

表1-21 配置引入路由时的相关参数

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入OSPF视图 | ospf [ process-id | router-id router-id | vpn-instance vpn-instance-name ] * | -
配置引入外部路由时的参数缺省值（开销、路由数量、标记、类型） | default { cost cost | limit limit | tag tag | type type } * | 可选 缺省情况下，OSPF引入外部路由的缺省值如下： l 路由度量值为1 l 单位时间内引入外部路由数量的上限为1000 l 外部路由标记值为1 l 引入的外部路由类型为Type2

1.6.10 配置发布一条主机路由

表1-22 配置发布一条主机路由

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入OSPF视图 | ospf [ process-id | router-id router-id | vpn-instance vpn-instance-name ] * | -
进入OSPF区域视图 | area area-id | -
配置并发布一条主机路由 | host-advertise ip-address cost | 可选 缺省情况下，OSPF不发布所包含网段之外的主机路由


1.7 调整和优化OSPF网络

用户可以从以下几个方面来调整和优化OSPF网络：

l 通过改变OSPF的报文定时器，可以调整OSPF网络的收敛速度以及协议报文带来的网络负荷。在一些低速链路上，需要考虑接口传送LSA的延迟时间。

l 通过调整SPF计算间隔时间，可以抑制由于网络频繁变化带来的资源消耗问题。

l 在安全性要求较高的网络中，可以通过配置OSPF验证特性，来提高OSPF网络的安全性。

l OSPF同时支持网管功能，可以配置OSPF MIB与某一进程绑定，以及发送Trap消息和日志功能。

1.7.1 配置准备

在调整和优化OSPF网络之前，需完成以下任务：

l 配置接口的网络层地址，使相邻节点之间网络层可达

l 使能OSPF功能

1.7.2 配置OSPF报文定时器

用户可以在接口上配置下列OSPF报文定时器：

l Hello定时器：接口向邻居发送Hello报文的时间间隔，OSPF邻居之间的Hello定时器的值要保持一致，且应与路由收敛速度、网络负荷大小成反比。

l Poll定时器：在NBMA网络中，路由器向状态为down的邻居路由器发送轮询Hello报文的时间间隔。

l 邻居失效时间：在邻居失效时间内，如果接口还没有收到邻居发送的Hello报文，路由器就会宣告该邻居无效。

l 接口重传LSA的时间间隔：路由器向它的邻居通告一条LSA后，需要对方进行确认。若在重传间隔时间内没有收到对方的确认报文，就会向邻居重传这条LSA。

表1-23 配置OSPF报文定时器

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
配置Hello定时器 | ospf timer hello seconds | 可选 缺省情况下，P2P、Broadcast类型接口发送Hello报文的时间间隔为10秒，P2MP、NBMA类型接口发送Hello报文的时间间隔为30秒
配置Poll定时器 | ospf timer poll seconds | 可选 缺省情况下，发送轮询Hello报文的时间间隔为120秒
配置邻居失效时间 | ospf timer dead seconds | 可选 缺省情况下，P2P、Broadcast类型接口的OSPF邻居失效时间为40秒，P2MP、NBMA类型接口的OSPF邻居失效时间为120秒
配置接口重传LSA的时间间隔 | ospf timer retransmit interval | 可选 缺省情况下，时间间隔为5秒

l 修改了网络类型后，Hello定时器与邻居失效时间都将恢复缺省值。

l 在同一接口上邻居失效时间应至少为Hello时间间隔的4倍。

l 轮询Hello报文的时间间隔至少应为Hello时间间隔的4倍。

l 相邻路由器重传LSA时间间隔的值不要设置得太小，否则将会引起不必要的重传。通常应该大于一个报文在两台路由器之间传送一个来回的时间。

1.7.3 配置接口传送LSA的延迟时间

考虑到OSPF报文在链路上传送时也需要花费时间，所以LSA的老化时间（age）在传送之前要增加一定的延迟时间，在低速链路上需要对该项配置进行重点考虑。

表1-24 配置接口传送LSA的延迟时间

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
配置接口传送LSA的延迟时间 | ospf trans-delay seconds | 可选 缺省情况下，接口传送LSA的延迟时间为1秒

1.7.4 配置SPF计算时间间隔

当OSPF的链路状态数据库（LSDB）发生改变时，需要重新计算最短路径。如果网络频繁变化，且每次变化都立即计算最短路径，将会占用大量系统资源，并影响路由器的效率。通过调节SPF计算时间间隔，可以抑制由于网络频繁变化带来的影响。

表1-25 配置SPF计算时间间隔

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入OSPF视图 | ospf [ process-id | router-id router-id | vpn-instance vpn-instance-name ] * | -
配置SPF计算时间间隔 | spf-schedule-interval maximum-interval [ minimum-interval [ incremental-interval ] ] | 可选 缺省情况下，SPF计算的时间间隔为5秒

本命令在网络变化不频繁的情况下将连续路由计算的时间间隔缩小到 minimum-interval，而在网络变化频繁的情况下可以进行相应惩罚，增加 incremental-interval×2n-2（n为连续触发路由计算的次数），将等待时间按照配置的惩罚增量延长，最大不超过 maximum-interval。

1.7.5 配置LSA重复到达的最小时间间隔

如果在重复到达的最小时间间隔内连续收到一条LSA类型、LS ID、生成路由器ID均相同的LSA则直接丢弃，这样就可以抑制网络频繁变化可能导致的占用过多带宽资源和路由器资源。

表1-26 配置LSA的重复接收最小间隔

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入OSPF视图 | ospf [ process-id | router-id router-id | vpn-instance vpn-instance-name ] * | -
配置LSA重复到达的最小时间间隔 | lsa-arrival-interval interval | 可选 缺省情况下，LSA重复到达的最小时间间隔为1000毫秒

建议 lsa-arrival-interval 命令配置的 interval 小于或等于 lsa-generation-interval 命令所配置的 minimum-interval。

1.7.6 配置LSA重新生成的时间间隔

通过调节LSA重新生成的时间间隔，可以抑制网络频繁变化可能导致的占用过多带宽资源和路由器资源。

表1-27 配置LSA发送间隔

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入OSPF视图 | ospf [ process-id | router-id router-id | vpn-instance vpn-instance-name ] * | -
配置LSA重新生成的时间间隔 | lsa-generation-interval maximum-interval [ initial-interval [ incremental-interval ] ] | 可选 缺省情况下，最大时间间隔为5秒，最小时间间隔为0毫秒，惩罚增量为5000毫秒

本命令在网络变化不频繁的情况下将LSA重新生成时间间隔缩小到 minimum-interval，而在网络变化频繁的情况下可以进行相应惩罚，增加 incremental-interval×2n-2（n为连续触发路由计算的次数），将等待时间按照配置的惩罚增量延长，最大不超过 maximum-interval。

1.7.7 禁止接口收发OSPF报文

如果要使OSPF路由信息不被某一网络中的路由器获得，可以禁止接口收发OSPF报文。

表1-28 禁止接口收发OSPF报文

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入OSPF视图 | ospf [ process-id | router-id router-id | vpn-instance vpn-instance-name ] * | -
禁止接口收发OSPF报文 | silent-interface { interface-type interface-number | all } | 可选 缺省情况下，允许接口收发OSPF报文

l 不同的进程可以对同一接口禁止收发OSPF报文，但silent-interface命令只对本进程已经使能的OSPF接口起作用，对其它进程的接口不起作用。

l 将运行OSPF协议的接口指定为Silent状态后，该接口的直连路由仍可以由同一路由器的其它接口通过Router-LSA发布出去，但OSPF报文将被阻塞，接口上无法建立邻居关系。这样可以增强OSPF的组网适应能力，减少系统资源的消耗。

1.7.8 配置Stub路由器

Stub路由器用来控制流量，它告知其他OSPF路由器不要使用这个Stub路由器来转发数据，但可以拥有一个到Stub路由器的路由。

通过将当前路由器配置为Stub路由器，在该路由器发布的Router-LSA中，当链路类型取值为3表示连接到Stub网络时，链路度量值不变；当链路类型为1、2、4分别表示通过点对点链路与另一路由器相连、连接到传送网络、虚连接时，链路度量值将设置为最大值65535。

这样其邻居计算出这条路由的开销就会很大，如果邻居上有到这个目的地址开销更小的路由，则数据不会通过这个Stub路由器转发。

表1-29 配置Stub路由器

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入OSPF视图 | ospf [ process-id | router-id router-id | vpn-instance vpn-instance-name ] * | -
配置Stub路由器 | stub-router | 必选 缺省情况下，没有路由器被配置为Stub路由器

Stub路由器与Stub区域无关。

1.7.9 配置OSPF验证

从安全性角度来考虑，为了避免路由信息外泄或者对OSPF路由器进行恶意攻击，OSPF提供报文验证功能。

OSPF路由器建立邻居关系时，在发送的报文中会携带配置好的口令，接收报文时进行密码验证，只有通过验证的报文才能接收，否则将不会接收报文，不能正常建立邻居。

要配置OSPF报文验证，同一个区域的所有路由器上都需要配置区域验证模式，且配置的验证模式必须相同，同一个网段内的路由器需要配置相同的接口验证模式和口令。

表1-30 配置OSPF验证

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入OSPF视图 | ospf [ process-id | router-id router-id | vpn-instance vpn-instance-name ] * | -
进入OSPF区域视图 | area area-id | -
配置OSPF区域的验证模式 | authentication-mode { md5 | simple } | 必选 缺省情况下，没有配置区域验证模式
退回OSPF视图 | quit | -
退回系统视图 | quit | -
进入接口视图 | interface interface-type interface-number | -
配置OSPF接口的验证模式（简单验证） | ospf authentication-mode simple [ cipher | plain ] password | 二者必选其一 缺省情况下，接口不对OSPF报文进行验证
配置OSPF接口的验证模式（MD5验证） | ospf authentication-mode { hmac-md5 | md5 } key-id [ cipher | plain ] password

1.7.10 配置DD报文中的MTU

一般情况下，接口发送DD报文时不使用接口的实际MTU值，而是用0代替。进行此配置后，将使用接口的实际MTU值填写DD报文Interface MTU字段。

表1-31 配置DD报文中的MTU

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
配置DD报文中MTU域的值为发送该报文接口的MTU值 | ospf mtu-enable | 可选 缺省情况下，接口发送的DD报文中MTU域的值为0

1.7.11 配置LSDB中External LSA的最大数量

表1-32 配置LSDB中External LSA的最大数量

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入OSPF视图 | ospf [ process-id | router-id router-id | vpn-instance vpn-instance-name ] * | -
配置LSDB中External LSA的最大数量 | lsdb-overflow-limit number | 可选 缺省情况下，不对LSDB中External LSA的最大条目数进行限制

1.7.12 配置兼容RFC 1583的外部路由选择规则

当通过多条LSA计算出同一条外部路由时，在RFC 2328中定义的选路规则与RFC 1583的有所不同，进行此配置可以兼容RFC 1583中定义的方式。当RFC 2328兼容RFC 1583时，优选骨干区的区域内路由；当RFC 2328不兼容RFC 1583时，优选非骨干区的区域内路由，这样做的目的是尽量减少骨干区的负担。

表1-33 配置兼容RFC 1583的外部路由选择规则

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入OSPF视图 | ospf [ process-id | router-id router-id | vpn-instance vpn-instance-name ] * | -
配置兼容RFC 1583的外部路由选择规则 | rfc1583 compatible | 可选 缺省情况下，使能兼容RFC 1583的选路规则

为了避免路由环路，对于是否兼容RFC 1583的外部路由选择规则，同一路由域内的路由器建议配置相同，即要么配置所有路由器都兼容RFC 1583的外部路由选择规则，要么配置所有路由器都不兼容RFC 1583的外部路由选择规则。

1.7.13 配置邻接状态输出

表1-34 配置邻接状态输出

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入OSPF视图 | ospf [ process-id | router-id router-id | vpn-instance vpn-instance-name ] * | -
使能OSPF日志记录功能，记录邻居关系连接以及断开事件的日志信息 | log-peer-change | 可选 缺省情况下，使能OSPF日志记录功能

1.7.14 配置OSPF网管功能

开启OSPF模块的Trap功能后，该模块会生成Trap报文，用于报告该模块的重要事件。Trap报文的级别如下：

l 错误级别Trap报文，级别为level3；

l 警告级别Trap报文，级别为level4；

l 正常出现但是重要信息级别Trap报文，级别为level5；

l 通知信息级别Trap报文，级别为level6。

生成的Trap报文将被发送到设备的信息中心，通过设置信息中心的参数，最终决定Trap报文的输出规则（即是否允许输出以及输出方向）。（有关信息中心参数的配置请参见“网络管理和监控配置指导”中的“信息中心”。）

表1-35 配置OSPF网管功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置OSPF MIB绑定 | ospf mib-binding process-id | 可选 缺省情况下，MIB绑定在进程号最小的OSPF进程上
使能OSPF的TRAP功能 | snmp-agent trap enable ospf [ process-id ] [ ifauthfail | ifcfgerror | ifrxbadpkt | ifstatechange | iftxretransmit | lsdbapproachoverflow | lsdboverflow | maxagelsa | nbrstatechange | originatelsa | vifcfgerror | virifauthfail | virifrxbadpkt | virifstatechange | viriftxretransmit | virnbrstatechange ] * | 可选 缺省情况下，OSPF的TRAP功能处于使能状态

1.7.15 使能日志功能

表1-36 使能日志功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入OSPF视图 | ospf [ process-id | router-id router-id | vpn-instance vpn-instance-name ] * | -
使能日志功能 | enable log [ config | error | state ] | 必选 缺省情况下，日志功能处于关闭状态

1.7.16 使能Opaque LSA发布接收能力

通过使能Opaque LSA发布接收能力，OSPF可以接收和发布Type9、Type10和Type11的Opaque LSA。

表1-37 使能Opaque LSA发布接收能力

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入OSPF视图 | ospf [ process-id | router-id router-id | vpn-instance vpn-instance-name ] * | -
使能Opaque LSA发布接收能力 | opaque-capability enable | 可选 缺省情况下，Opaque LSA发布接收能力处于关闭状态

1.7.17 配置OSPF优先接收并处理Hello报文

为了保证协议的正常运行，路由器要同时接收和处理Hello报文和其它类型的协议报文，当路由器与多个邻居路由器同时建立邻居关系并且路由表中的路由条数比较多时，需要路由器接收和处理的报文数量会很大，可以通过配置OSPF优先接收和处理Hello报文，来确保邻居关系的稳定性。

表1-38 配置OSPF优先接收和处理Hello报文

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置OSPF优先接收和处理Hello报文 | ospf packet-process prioritized-treatment | 必选 缺省情况下，OSPF不优先接收和处理Hello报文

1.7.18 配置LSU报文的发送速率

如果路由器路由表里的路由条目很多，在与邻居进行LSDB同步时，可能需要发送大量LSU，有可能会对当前设备和网络带宽带来影响；因此，路由器将LSU报文分为多个批次进行发送，并且对OSPF接口每次允许发送的LSU报文的最大个数做出限制。

用户可根据需要配置OSPF接口发送LSU报文的时间间隔以及接口一次发送LSU报文的最大个数。

表1-39 配置LSU报文的发送速率

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入OSPF视图 | ospf [ process-id | router-id router-id | vpn-instance vpn-instance-name ] * | -
配置LSU报文的发送速率 | transmit-pacing interval interval count count | 可选 缺省情况下，OSPF接口发送LSU报文的时间间隔为20毫秒，一次最多发送3个LSU报文

1.7.19 配置OSPF ISPF

ISPF（Incremental Shortest Path First，增量最短路径优先）计算是对OSPF中最短路径树的增量计算，当网络的拓扑结构发生变化，即影响到最短路径树的结构时，只对受影响的部分节点进行重新计算拓扑结构，对最短路径树中受影响的部分进行修正，而不需要重建整棵最短路径树。

表1-40 配置OSPF ISPF

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入OSPF视图 | ospf [ process-id | router-id router-id | vpn-instance instance-name ] * | -
使能OSPF ISPF功能，即增量SPF计算功能 | ispf enable | 可选 缺省情况下，OSPF ISPF功能处于关闭状态


1.8 配置OSPF快速重路由



l OSPF支持快速重路由功能不能与OSPF支持BFD监测同时使用，否则可能导致快速重路由功能失效。

l OSPF支持快速重路由功能（自动计算备份下一跳）不能与 vlink-peer 命令同时使用。

1. 简介

当OSPF网络中的链路或某台路由器发生故障时，需要通过故障链路或故障路由器传输才能到达目的地的报文将会丢失或产生路由环路，数据流量将会被中断，直到OSPF根据新的拓扑网络路由收敛完毕后，被中断的流量才能恢复正常的传输。

为了尽可能缩短网络故障导致的流量中断时间，网络管理员可以根据需要配置OSPF快速重路由功能。

图1-21 OSPF快速重路由功能示意图

如 图1-21 所示，通过在Router B上使能快速重路由功能，OSPF将为路由计算或指定备份下一跳，当Router B探测到网络故障时，OSPF会使用事先获取的备份下一跳替换失效下一跳，通过备份下一跳来指导报文的转发，从而大大缩短了流量中断时间。在使用备份下一跳指导报文转发的同时，OSPF会根据变化后的网络拓扑重新计算最短路径，网络收敛完毕后，使用新计算出来的最优路由来指导报文转发。

网络管理员可以配置给所有OSPF路由自动计算备份下一跳，也可以在路由策略中指定备份下一跳，为符合过滤条件的路由指定备份下一跳。

2. 配置准备

在配置OSPF快速重路由特性之前，需完成以下任务：

l 配置接口的网络层地址，使相邻节点网络层可达

l 使能OSPF功能

3. 配置OSPF支持快速重路由功能（自动计算备份下一跳）

表1-41 配置OSPF支持快速重路由功能（自动计算备份下一跳）

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置BFD Echo报文源地址 | bfd echo-source-ip ip-address | 必选 缺省情况下，没有配置BFD Echo报文源地址
进入OSPF视图 | ospf [ process-id | router-id router-id | vpn-instance vpn-instance-name ] * | -
配置OSPF支持快速重路由功能（自动计算备份下一跳） | fast-reroute auto [ abr-only ] | 必选 缺省情况下，没有配置OSPF快速重路由功能 abr-only 表示仅选取到ABR设备的路由作为备份下一跳

4. 配置OSPF支持快速重路由功能（通过路由策略指定备份下一跳）

网络管理员可以通过 apply fast-reroute backup-interface 命令在路由策略中指定备份下一跳，为符合过滤条件的路由指定备份下一跳，关于 apply fast-reroute backup-interface 命令以及路由策略的相关配置，请参见“三层技术-IP路由配置指导”中的“路由策略”。

表1-42 配置OSPF支持快速重路由功能（通过路由策略指定备份下一跳）

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置BFD Echo报文源地址 | bfd echo-source-ip ip-address | 必选 缺省情况下，没有配置BFD Echo报文源地址
进入OSPF视图 | ospf [ process-id | router-id router-id | vpn-instance vpn-instance-name ] * | -
配置OSPF支持快速重路由功能（通过路由策略指定备份下一跳） | fast-reroute route-policy route-policy-name | 必选 缺省情况下，没有配置OSPF快速重路由功能




1.9 配置OSPF GR

目前有两种方式实现OSPF GR技术：

l 一种是基于IETF标准，GR Restarter通过向GR Helper发送一种称为Grace LSA的9类Opaque LSA来控制GR的交互过程。

l 另外一种是非IETF标准，GR Restarter与GR Helper之间是通过相互发送携带LLS与OOB扩展信息的OSPF报文来完成GR的交互过程。

一台设备可以同时充当GR Restarter和GR Helper。

1.9.1 配置GR Restarter

可以在GR Restarter上配置基于OSPF的IETF标准或非IETF标准的GR能力。在作为GR Restarter的设备上进行如下配置：

1. 配置IETF标准GR Restarter

表1-43 配置IETF标准GR Restarter

操作 | 命令 | 说明
进入系统视图 | system-view | -
启动OSPF，进入OSPF视图 | ospf [ process-id | router-id router-id | vpn-instance vpn-instance-name ] * | -
使能Opaque LSA发布接收能力 | opaque-capability enable | 必选 缺省情况下，Opaque LSA发布接收能力处于关闭状态
使能OSPF协议的IETF标准GR能力 | graceful-restart ietf | 必选 缺省情况下，OSPF协议的IETF标准GR能力处于关闭状态
配置OSPF协议的GR重启间隔时间 | graceful-restart interval timer | 可选 缺省情况下，OSPF协议的GR重启间隔时间为120秒

2. 配置非IETF标准GR Restarter

表1-44 配置非IETF标准GR Restarter

操作 | 命令 | 说明
进入系统视图 | system-view | -
启动OSPF，进入OSPF视图 | ospf [ process-id | router-id router-id | vpn-instance vpn-instance-name ] * | -
使能OSPF本地链路信令能力 | enable link-local-signaling | 必选 缺省情况下，OSPF本地链路信令能力处于关闭状态
使能OSPF带外同步能力 | enable out-of-band-resynchronization | 必选 缺省情况下，OSPF带外同步能力处于关闭状态
使能OSPF协议的非IETF标准GR能力 | graceful-restart [ nonstandard ] | 必选 缺省情况下，OSPF协议的非IETF标准GR能力处于关闭状态
配置OSPF协议的GR重启间隔时间 | graceful-restart interval timer | 可选 缺省情况下，OSPF协议的GR重启间隔时间为120秒

1.9.2 配置GR Helper

可以在作为GR Helper的设备上配置基于OSPF的IETF标准或非IETF标准的GR Helper能力。在作为GR Helper的设备上进行如下配置：

1. 配置IETF标准GR Helper

表1-45 配置IETF标准GR Helper

操作 | 命令 | 说明
进入系统视图 | system-view | -
启动OSPF，进入OSPF视图 | ospf [ process-id | router-id router-id | vpn-instance vpn-instance-name ] * | -
使能Opaque LSA发布接收能力 | opaque-capability enable | 必选 缺省情况下，Opaque LSA发布接收能力处于关闭状态
配置允许设备可以作哪些OSPF邻居的GR Helper | graceful-restart help { acl-number | prefix prefix-list } | 可选 缺省情况下，设备可以作任一OSPF邻居的GR Helper

2. 配置非IETF标准GR Helper

表1-46 配置非IETF标准GR Helper

操作 | 命令 | 说明
进入系统视图 | system-view | -
启动OSPF，进入OSPF视图 | ospf [ process-id | router-id router-id | vpn-instance vpn-instance-name ] * | -
使能OSPF本地链路信令能力 | enable link-local-signaling | 必选 缺省情况下，OSPF本地链路信令能力处于关闭状态
使能OSPF带外同步能力 | enable out-of-band-resynchronization | 必选 缺省情况下，OSPF带外同步能力处于关闭状态
配置允许设备可以作哪些OSPF邻居的GR Helper | graceful-restart help { acl-number | prefix prefix-list } | 可选 缺省情况下，设备可以作任一OSPF邻居的GR Helper

1.9.3 以GR方式重启OSPF进程

在发生Master/Slave切换或者路由器上进行如下操作均可以以GR方式重启OSPF进程。

表1-47 以GR方式重启OSPF进程

操作 | 命令 | 说明
以GR方式重启OSPF进程 | reset ospf [ process-id ] process graceful-restart | 必选 请在用户视图下执行该命令


1.10 配置OSPF与BFD联动

OSPF使用BFD来进行快速故障检测时，提供两种检测方式：

l control报文双向检测：需要建立OSPF邻居的两端设备均支持BFD配置。

l echo报文单跳检测：仅需要一端设备支持BFD配置。

1.10.1 control报文双向检测

表1-48 配置OSPF与BFD联动（control报文双向检测）

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
指定接口上使能BFD | ospf bfd enable | 必选 缺省情况下，运行OSPF的接口未使能BFD提供的链路检测功能

l 一个网段只能属于同一个区域，并且必须为每个运行OSPF协议的接口指明属于某一个特定的区域。

l 创建BFD会话的通信双方必须处于特定区域的同一网段。

1.10.2 echo报文单跳检测

表1-49 配置OSPF与BFD联动（echo报文单跳检测）

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置echo报文源地址 | bfd echo-source-ip ip-address | 必选 缺省情况下，没有配置echo报文源地址
进入接口视图 | interface interface-type interface-number | -
指定接口上使能BFD功能 | ospf bfd enable echo | 必选 缺省情况下，运行OSPF的接口未使能BFD提供的链路检测功能


1.11 OSPF显示和维护

在完成上述配置后，在任意视图下执行 display 命令可以显示配置后OSPF的运行情况，通过查看显示信息验证配置的效果。

在用户视图下执行 reset 命令可以复位OSPF计数器或连接。

表1-50 OSPF显示和维护

操作 | 命令
显示OSPF的概要信息 | display ospf [ process-id ] brief [ | { begin | exclude | include } regular-expression ]
显示OSPF的统计信息 | display ospf [ process-id ] cumulative [ | { begin | exclude | include } regular-expression ]
显示OSPF的LSDB信息 | display ospf [ process-id ] lsdb [ brief | [ { ase | router | network | summary | asbr | nssa | opaque-link | opaque-area | opaque-as } [ link-state-id ] ] [ originate-router advertising-router-id | self-originate ] ] [ | { begin | exclude | include } regular-expression ]
显示OSPF邻居的信息 | display ospf [ process-id ] peer [ verbose ] [ interface-type interface-number ] [ neighbor-id ] [ | { begin | exclude | include } regular-expression ]
显示OSPF各区域邻居的统计信息 | display ospf [ process-id ] peer statistics [ | { begin | exclude | include } regular-expression ]
显示OSPF下一跳信息 | display ospf [ process-id ] nexthop [ | { begin | exclude | include } regular-expression ]
显示OSPF路由表的信息 | display ospf [ process-id ] routing [ interface interface-type interface-number ] [ nexthop nexthop-address ] [ | { begin | exclude | include } regular-expression ]
显示OSPF虚连接信息 | display ospf [ process-id ] vlink [ | { begin | exclude | include } regular-expression ]
显示OSPF请求列表 | display ospf [ process-id ] request-queue [ interface-type interface-number ] [ neighbor-id ] [ | { begin | exclude | include } regular-expression ]
显示OSPF重传列表 | display ospf [ process-id ] retrans-queue [ interface-type interface-number ] [ neighbor-id ] [ | { begin | exclude | include } regular-expression ]
显示OSPF ABR及ASBR信息 | display ospf [ process-id ] abr-asbr [ | { begin | exclude | include } regular-expression ]
显示OSPF接口信息 | display ospf [ process-id ] interface [ all | interface-type interface-number ] [ | { begin | exclude | include } regular-expression ]
显示OSPF错误信息 | display ospf [ process-id ] error [ | { begin | exclude | include } regular-expression ]
显示OSPF ASBR聚合信息 | display ospf [ process-id ] asbr-summary [ ip-address { mask | mask-length } ] [ | { begin | exclude | include } regular-expression ]
显示全局Router ID | display router id [ | { begin | exclude | include } regular-expression ]
清除OSPF计数器 | reset ospf [ process-id ] counters [ neighbor [ interface-type interface-number ] [ router-id ] ]
重启OSPF进程 | reset ospf [ process-id ] process [ graceful-restart ]
重新向OSPF引入外部路由 | reset ospf [ process-id ] redistribution


1.12 典型配置举例

在配置举例中，只列出了与OSPF配置相关的命令。

1.12.1 配置OSPF基本功能

1. 组网需求

l 所有的交换机都运行OSPF，并将整个自治系统划分为3个区域。

l 其中Switch A和Switch B作为ABR来转发区域之间的路由。

l 配置完成后，每台交换机都应学到AS内的到所有网段的路由。

2. 组网图

图1-22 OSPF基本配置组网图

3. 配置步骤

(1) 配置各接口的IP地址（略）

(2) 配置OSPF基本配置

# 配置Switch A。

<SwitchA> system-view

[SwitchA] ospf

[SwitchA-ospf-1] area 0

[SwitchA-ospf-1-area-0.0.0.0] network 10.1.1.0 0.0.0.255

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

[SwitchA-ospf-1] area 1

[SwitchA-ospf-1-area-0.0.0.1] network 10.2.1.0 0.0.0.255

[SwitchA-ospf-1-area-0.0.0.1] quit

[SwitchA-ospf-1] quit

# 配置Switch B。

<SwitchB> system-view

[SwitchB] ospf

[SwitchB-ospf-1] area 0

[SwitchB-ospf-1-area-0.0.0.0] network 10.1.1.0 0.0.0.255

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

[SwitchB-ospf-1] area 2

[SwitchB-ospf-1-area-0.0.0.2] network 10.3.1.0 0.0.0.255

[SwitchB-ospf-1-area-0.0.0.2] quit

[SwitchB-ospf-1] quit

# 配置Switch C。

<SwitchC> system-view

[SwitchC] ospf

[SwitchC-ospf-1] area 1

[SwitchC-ospf-1-area-0.0.0.1] network 10.2.1.0 0.0.0.255

[SwitchC-ospf-1-area-0.0.0.1] network 10.4.1.0 0.0.0.255

[SwitchC-ospf-1-area-0.0.0.1] quit

[SwitchC-ospf-1] quit

# 配置Switch D。

<SwitchD> system-view

[SwitchD] ospf

[SwitchD-ospf-1] area 2

[SwitchD-ospf-1-area-0.0.0.2] network 10.3.1.0 0.0.0.255

[SwitchD-ospf-1-area-0.0.0.2] network 10.5.1.0 0.0.0.255

[SwitchD-ospf-1-area-0.0.0.2] quit

[SwitchD-ospf-1] quit

(3) 检验配置结果

# 查看Switch A的OSPF邻居。

[SwitchA] display ospf peer verbose

OSPF Process 1 with Router ID 10.2.1.1

Neighbors

Area 0.0.0.0 interface 10.1.1.1(Vlan-interface100)'s neighbors

Router ID: 10.3.1.1 Address: 10.1.1.2 GR State: Normal

State: Full Mode: Nbr is Master Priority: 1

DR: 10.1.1.1 BDR: 10.1.1.2 MTU: 0

Dead timer due in 37 sec

Neighbor is up for 06:03:59

Authentication Sequence: [ 0 ]

Neighbor state change count: 5

Neighbors

Area 0.0.0.1 interface 10.2.1.1(Vlan-interface200)'s neighbors

Router ID: 10.4.1.1 Address: 10.2.1.2 GR State: Normal

State: Full Mode: Nbr is Master Priority: 1

DR: 10.2.1.1 BDR: 10.2.1.2 MTU: 0

Dead timer due in 32 sec

Neighbor is up for 06:03:12

Authentication Sequence: [ 0 ]

Neighbor state change count: 5

# 显示Switch A的OSPF路由信息。

[SwitchA] display ospf routing

OSPF Process 1 with Router ID 10.2.1.1

Routing Tables

Routing for Network

Destination Cost Type NextHop AdvRouter Area

10.2.1.0/24 10 Transit 10.2.1.1 10.2.1.1 0.0.0.1

10.3.1.0/24 4 Inter 10.1.1.2 10.3.1.1 0.0.0.0

10.4.1.0/24 13 Stub 10.2.1.2 10.4.1.1 0.0.0.1

10.5.1.0/24 14 Inter 10.1.1.2 10.3.1.1 0.0.0.0

10.1.1.0/24 2 Transit 10.1.1.1 10.2.1.1 0.0.0.0

Total Nets: 5

Intra Area: 3 Inter Area: 2 ASE: 0 NSSA: 0

# 显示Switch A的LSDB。

[SwitchA] display ospf lsdb

OSPF Process 1 with Router ID 10.2.1.1

Link State Database

Area: 0.0.0.0

Type LinkState ID AdvRouter Age Len Sequence Metric

Router 10.2.1.1 10.2.1.1 1069 36 80000012 0

Router 10.3.1.1 10.3.1.1 780 36 80000011 0

Network 10.1.1.1 10.2.1.1 1069 32 80000010 0

Sum-Net 10.5.1.0 10.3.1.1 780 28 80000003 12

Sum-Net 10.2.1.0 10.2.1.1 1069 28 8000000F 10

Sum-Net 10.3.1.0 10.3.1.1 780 28 80000014 2

Sum-Net 10.4.1.0 10.2.1.1 769 28 8000000F 13

Area: 0.0.0.1

Type LinkState ID AdvRouter Age Len Sequence Metric

Router 10.2.1.1 10.2.1.1 769 36 80000012 0

Router 10.4.1.1 10.4.1.1 1663 48 80000012 0

Network 10.2.1.1 10.2.1.1 769 32 80000010 0

Sum-Net 10.5.1.0 10.2.1.1 769 28 80000003 14

Sum-Net 10.3.1.0 10.2.1.1 1069 28 8000000F 4

Sum-Net 10.1.1.0 10.2.1.1 1069 28 8000000F 2

Sum-Asbr 10.3.1.1 10.2.1.1 1069 28 8000000F 2

# 查看Switch D的路由表。

[SwitchD] display ospf routing

OSPF Process 1 with Router ID 10.5.1.1

Routing Tables

Routing for Network

Destination Cost Type NextHop AdvRouter Area

10.2.1.0/24 22 Inter 10.3.1.1 10.3.1.1 0.0.0.2

10.3.1.0/24 10 Transit 10.3.1.2 10.3.1.1 0.0.0.2

10.4.1.0/24 25 Inter 10.3.1.1 10.3.1.1 0.0.0.2

10.5.1.0/24 10 Stub 10.5.1.1 10.5.1.1 0.0.0.2

10.1.1.0/24 12 Inter 10.3.1.1 10.3.1.1 0.0.0.2

Total Nets: 5

Intra Area: 2 Inter Area: 3 ASE: 0 NSSA: 0

# 在Switch D上使用Ping进行测试连通性。

[SwitchD] ping 10.4.1.1

PING 10.4.1.1: 56 data bytes, press CTRL_C to break

Reply from 10.4.1.1: bytes=56 Sequence=2 ttl=253 time=2 ms

Reply from 10.4.1.1: bytes=56 Sequence=2 ttl=253 time=1 ms

Reply from 10.4.1.1: bytes=56 Sequence=3 ttl=253 time=1 ms

Reply from 10.4.1.1: bytes=56 Sequence=4 ttl=253 time=1 ms

Reply from 10.4.1.1: bytes=56 Sequence=5 ttl=253 time=1 ms

--- 10.4.1.1 ping statistics ---

5 packet(s) transmitted

5 packet(s) received

0.00% packet loss

round-trip min/avg/max = 1/1/2 ms

1.12.2 配置OSPF引入自治系统外部路由

1. 组网需求

l 所有的交换机都运行OSPF，整个自治系统划分为3个区域。

l 其中Switch A和Switch B作为ABR来转发区域之间的路由。

l 在Switch C上配置为ASBR引入外部路由（静态路由），且路由信息可正确的在AS内传播。

2. 组网图

图1-23 配置OSPF引入自治系统外部路由

3. 配置步骤

(1) 配置各接口的IP地址（略）

(2) 配置OSPF（同前例 1.12.1 ）

(3) 配置引入自治系统外部路由

# 在Switch C上配置一条到目的网段3.1.2.0/24的静态路由。

<SwitchC> system-view

[SwitchC] ip route-static 3.1.2.1 24 10.4.1.2

# 在Switch C上配置OSPF引入静态路由。

[SwitchC] ospf 1

[SwitchC-ospf-1] import-route static

(4) 检验配置效果

# 查看Switch D的ABR/ASBR信息。

<SwitchD> display ospf abr-asbr

OSPF Process 1 with Router ID 10.5.1.1

Routing Table to ABR and ASBR

Type Destination Area Cost Nexthop RtType

Intra 10.3.1.1 0.0.0.2 10 10.3.1.1 ABR

Inter 10.4.1.1 0.0.0.2 22 10.3.1.1 ASBR

# 查看Switch D的OSPF路由表。

<SwitchD> display ospf routing

OSPF Process 1 with Router ID 10.5.1.1

Routing Tables

Routing for Network

Destination Cost Type NextHop AdvRouter Area

10.2.1.0/24 22 Inter 10.3.1.1 10.3.1.1 0.0.0.2

10.3.1.0/24 10 Transit 10.3.1.2 10.3.1.1 0.0.0.2

10.4.1.0/24 25 Inter 10.3.1.1 10.3.1.1 0.0.0.2

10.5.1.0/24 10 Stub 10.5.1.1 10.5.1.1 0.0.0.2

10.1.1.0/24 12 Inter 10.3.1.1 10.3.1.1 0.0.0.2

Routing for ASEs

Destination Cost Type Tag NextHop AdvRouter

3.1.2.0/24 1 Type2 1 10.3.1.1 10.4.1.1

Total Nets: 6

Intra Area: 2 Inter Area: 3 ASE: 1 NSSA: 0

1.12.3 配置OSPF发布聚合路由

1. 组网需求

l Switch A和Switch B位于AS 200内，AS 200内使用OSPF做为IGP协议。

l Switch C、Switch D和Switch E位于AS 100内，AS 100内使用OSPF做为IGP协议。

l Switch B和Switch C之间建立EBGP连接，配置BGP引入OSPF和直连路由，配置OSPF进程引入BGP路由。

l 为了减小Switch A的路由表规模，在Switch B上配置路由聚合，只发布聚合后的路由10.0.0.0/8。

2. 组网图

图1-24 配置OSPF发布聚合路由

3. 配置步骤

(1) 配置接口的IP地址（略）

(2) 配置OSPF

# 配置Switch A。

<SwitchA> system-view

[SwitchA] ospf

[SwitchA-ospf-1] area 0

[SwitchA-ospf-1-area-0.0.0.0] network 11.2.1.0 0.0.0.255

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

[SwitchA-ospf-1] quit

# 配置Switch B。

<SwitchB> system-view

[SwitchB] ospf

[SwitchB-ospf-1] area 0

[SwitchB-ospf-1-area-0.0.0.0] network 11.2.1.0 0.0.0.255

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

[SwitchB-ospf-1] quit

# 配置Switch C。

<SwitchC> system-view

[SwitchC] ospf

[SwitchC-ospf-1] area 0

[SwitchC-ospf-1-area-0.0.0.0] network 10.1.1.0 0.0.0.255

[SwitchC-ospf-1-area-0.0.0.0] network 10.2.1.0 0.0.0.255

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

[SwitchC-ospf-1] quit

# 配置Switch D。

<SwitchD> system-view

[SwitchD] ospf

[SwitchD-ospf-1] area 0

[SwitchD-ospf-1-area-0.0.0.0] network 10.1.1.0 0.0.0.255

[SwitchD-ospf-1-area-0.0.0.0] network 10.3.1.0 0.0.0.255

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

# 配置Switch E。

<SwitchE> system-view

[SwitchE] ospf

[SwitchE-ospf-1] area 0

[SwitchE-ospf-1-area-0.0.0.0] network 10.2.1.0 0.0.0.255

[SwitchE-ospf-1-area-0.0.0.0] network 10.4.1.0 0.0.0.255

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

[SwitchE-ospf-1] quit

(3) 配置BGP，引入OSPF和直连路由

# 配置Switch B。

[SwitchB] bgp 200

[SwitchB-bgp] peer 11.1.1.2 as 100

[SwitchB-bgp] import-route ospf

[SwitchB-bgp] import-route direct

[SwitchB-bgp] quit

# 配置Switch C。

[SwitchC] bgp 100

[SwitchC-bgp] peer 11.1.1.1 as 200

[SwitchC-bgp] import-route ospf

[SwitchC-bgp] import-route direct

[SwitchC-bgp] quit

(4) 在Switch B和Switch C上配置OSPF引入BGP路由

# 在Switch B上配置OSPF引入BGP路由。

[SwitchB] ospf

[SwitchB-ospf-1] import-route bgp

# 在Switch C上配置OSPF引入BGP路由。

[SwitchC] ospf

[SwitchC-ospf-1] import-route bgp

# 查看SwitchA的路由表信息。

[SwitchA] display ip routing-table

Routing Tables: Public

Destinations : 8 Routes : 8

Destination/Mask Proto Pre Cost NextHop Interface

10.1.1.0/24 O_ASE 150 1 11.2.1.1 Vlan100

10.2.1.0/24 O_ASE 150 1 11.2.1.1 Vlan100

10.3.1.0/24 O_ASE 150 1 11.2.1.1 Vlan100

10.4.1.0/24 O_ASE 150 1 11.2.1.1 Vlan100

11.2.1.0/24 Direct 0 0 11.2.1.2 Vlan100

11.2.1.2/32 Direct 0 0 127.0.0.1 InLoop0

127.0.0.0/8 Direct 0 0 127.0.0.1 InLoop0

127.0.0.1/32 Direct 0 0 127.0.0.1 InLoop0

(5) 在Switch B上配置路由聚合，只发布聚合路由10.0.0.0/8。

[SwitchB-ospf-1] asbr-summary 10.0.0.0 8

# 查看Switch A的路由表信息。

[SwitchA] display ip routing-table

Routing Tables: Public

Destinations : 5 Routes : 5

Destination/Mask Proto Pre Cost NextHop Interface

10.0.0.0/8 O_ASE 150 2 11.2.1.1 Vlan100

11.2.1.0/24 Direct 0 0 11.2.1.2 Vlan100

11.2.1.2/32 Direct 0 0 127.0.0.1 InLoop0

127.0.0.0/8 Direct 0 0 127.0.0.1 InLoop0

127.0.0.1/32 Direct 0 0 127.0.0.1 InLoop0

可以看出，路由10.1.1.0/24、10.2.1.0/24、10.3.1.0/24、10.4.1.0/24已经聚合为一条路由10.0.0.0/8。

1.12.4 配置OSPF的Stub区域

1. 组网需求

l 所有的交换机都运行OSPF，整个自治系统划分为3个区域。

l 其中Switch A和Switch B作为ABR来转发区域之间的路由，Switch D作为ASBR引入了外部路由（静态路由）。

l 要求将Area1配置为Stub区域，减少通告到此区域内的LSA数量，但不影响路由的可达性。

2. 组网图

图1-25 配置OSPF Stub区域组网图

3. 配置步骤

(1) 配置接口的IP地址（略）

(2) 配置OSPF（同前例 1.12.1 ）

(3) 配置Switch D引入静态路由

<SwitchD> system-view

[SwitchD] ip route-static 3.1.2.1 24 10.5.1.2

[SwitchD] ospf

[SwitchD-ospf-1] import-route static

[SwitchD-ospf-1] quit

# 查看Switch C的ABR/ASBR信息。

<SwitchC> display ospf abr-asbr

OSPF Process 1 with Router ID 10.4.1.1

Routing Table to ABR and ASBR

Type Destination Area Cost Nexthop RtType

Intra 10.2.1.1 0.0.0.1 3 10.2.1.1 ABR

Inter 10.3.1.1 0.0.0.1 5 10.2.1.1 ABR

Inter 10.5.1.1 0.0.0.1 7 10.2.1.1 ASBR

# 查看Switch C的OSPF路由表。

<SwitchC> display ospf routing

OSPF Process 1 with Router ID 10.4.1.1

Routing Tables

Routing for Network

Destination Cost Type NextHop AdvRouter Area

10.2.1.0/24 3 Transit 10.2.1.2 10.2.1.1 0.0.0.1

10.3.1.0/24 7 Inter 10.2.1.1 10.2.1.1 0.0.0.1

10.4.1.0/24 3 Stub 10.4.1.1 10.4.1.1 0.0.0.1

10.5.1.0/24 17 Inter 10.2.1.1 10.2.1.1 0.0.0.1

10.1.1.0/24 5 Inter 10.2.1.1 10.2.1.1 0.0.0.1

Routing for ASEs

Destination Cost Type Tag NextHop AdvRouter

3.1.2.0/24 1 Type2 1 10.2.1.1 10.5.1.1

Total Nets: 6

Intra Area: 2 Inter Area: 3 ASE: 1 NSSA: 0

当Switch C所在区域为普通区域时，可以看到路由表中存在AS外部的路由。

(4) 配置Area1为Stub区域

# 配置Switch A。

<SwitchA> system-view

[SwitchA] ospf

[SwitchA-ospf-1] area 1

[SwitchA-ospf-1-area-0.0.0.1] stub

[SwitchA-ospf-1-area-0.0.0.1] quit

[SwitchA-ospf-1] quit

# 配置Switch C。

<SwitchC> system-view

[SwitchC] ospf

[SwitchC-ospf-1] area 1

[SwitchC-ospf-1-area-0.0.0.1] stub

[SwitchC-ospf-1-area-0.0.0.1] quit

[SwitchC-ospf-1] quit

# 显示Switch C的OSPF路由表。

[SwitchC] display ospf routing

OSPF Process 1 with Router ID 10.4.1.1

Routing Tables

Routing for Network

Destination Cost Type NextHop AdvRouter Area

0.0.0.0/0 4 Inter 10.2.1.1 10.2.1.1 0.0.0.1

10.2.1.0/24 3 Transit 10.2.1.2 10.2.1.1 0.0.0.1

10.3.1.0/24 7 Inter 10.2.1.1 10.2.1.1 0.0.0.1

10.4.1.0/24 3 Stub 10.4.1.1 10.4.1.1 0.0.0.1

10.5.1.0/24 17 Inter 10.2.1.1 10.2.1.1 0.0.0.1

10.1.1.0/24 5 Inter 10.2.1.1 10.2.1.1 0.0.0.1

Total Nets: 6

Intra Area: 2 Inter Area: 4 ASE: 0 NSSA: 0

当把Switch C所在区域配置为Stub区域时，已经看不到AS外部的路由，取而代之的是一条缺省路由。

# 配置禁止向Stub区域通告Type3 LSA。

[SwitchA] ospf

[SwitchA-ospf-1] area 1

[SwitchA-ospf-1-area-0.0.0.1] stub no-summary

[SwitchA-ospf-1-area-0.0.0.1] quit

# 查看Switch C的OSPF路由表。

[SwitchC] display ospf routing

OSPF Process 1 with Router ID 10.4.1.1

Routing Tables

Routing for Network

Destination Cost Type NextHop AdvRouter Area

0.0.0.0/0 4 Inter 10.2.1.1 10.2.1.1 0.0.0.1

10.2.1.0/24 3 Transit 10.2.1.2 10.4.1.1 0.0.0.1

10.4.1.0/24 3 Stub 10.4.1.1 10.4.1.1 0.0.0.1

Total Nets: 3

Intra Area: 2 Inter Area: 1 ASE: 0 NSSA: 0

禁止向Stub区域通告Summary LSA后，Stub路由器的路由表项进一步减少，只保留了一条通往区域外部的缺省路由。

1.12.5 配置OSPF的NSSA区域

1. 组网需求

l 所有的交换机都运行OSPF，整个自治系统划分为3个区域。

l 其中Switch A和Switch B作为ABR来转发区域之间的路由。

l 要求将Area1配置为NSSA区域，同时将Switch C配置为ASBR引入外部路由（静态路由），且路由信息可正确的在AS内传播。

2. 组网图

图1-26 配置OSPF NSSA区域组网图

3. 配置步骤

(1) 配置各接口的IP地址（略）

(2) 配置OSPF（同前例 1.12.1 ）

(3) 配置Area1区域为NSSA区域

# 配置Switch A。

<SwitchA> system-view

[SwitchA] ospf

[SwitchA-ospf-1] area 1

[SwitchA-ospf-1-area-0.0.0.1] nssa default-route-advertise no-summary

[SwitchA-ospf-1-area-0.0.0.1] quit

[SwitchA-ospf-1] quit

# 配置Switch C。

<SwitchC> system-view

[SwitchC] ospf

[SwitchC-ospf-1] area 1

[SwitchC-ospf-1-area-0.0.0.1] nssa

[SwitchC-ospf-1-area-0.0.0.1] quit

[SwitchC-ospf-1] quit

l 如果NSSA区域内路由器（Switch C）需要获取通往AS内其他区域的路由，ABR（Switch A）上必须配置 default-route-advertise 参数，这样Switch C才可以获取到缺省路由。

l 建议在ABR（Switch A）上配置 no-summary 参数，这样可以减少NSSA路由器的路由表数量。其他NSSA路由器只需配置 nssa 命令就可以。

# 查看Switch C的OSPF路由表。

[SwitchC] display ospf routing

OSPF Process 1 with Router ID 10.4.1.1

Routing Tables

Routing for Network

Destination Cost Type NextHop AdvRouter Area

0.0.0.0/0 65536 Inter 10.2.1.1 10.2.1.1 0.0.0.1

10.2.1.0/24 65535 Transit 10.2.1.2 10.4.1.1 0.0.0.1

10.4.1.0/24 3 Stub 10.4.1.1 10.4.1.1 0.0.0.1

Total Nets: 3

Intra Area: 2 Inter Area: 1 ASE: 0 NSSA: 0

(4) 配置Switch C引入静态路由

[SwitchC] ip route-static 3.1.3.1 24 10.4.1.2

[SwitchC] ospf

[SwitchC-ospf-1] import-route static

[SwitchC-ospf-1] quit

# 查看Switch D的OSPF路由表。

<SwitchD> display ospf routing

OSPF Process 1 with Router ID 10.5.1.1

Routing Tables

Routing for Network

Destination Cost Type NextHop AdvRouter Area

10.2.1.0/24 22 Inter 10.3.1.1 10.3.1.1 0.0.0.2

10.3.1.0/24 10 Transit 10.3.1.2 10.3.1.1 0.0.0.2

10.4.1.0/24 25 Inter 10.3.1.1 10.3.1.1 0.0.0.2

10.5.1.0/24 10 Stub 10.5.1.1 10.5.1.1 0.0.0.2

10.1.1.0/24 12 Inter 10.3.1.1 10.3.1.1 0.0.0.2

Routing for ASEs

Destination Cost Type Tag NextHop AdvRouter

3.1.3.0/24 1 Type2 1 10.3.1.1 10.2.1.1

Total Nets: 6

Intra Area: 2 Inter Area: 3 ASE: 1 NSSA: 0

在Switch D上可以看到NSSA区域引入的一条AS外部的路由。

1.12.6 配置OSPF的DR选择

1. 组网需求

Switch A、Switch B、Switch C、Switch D在同一网段，运行OSPF协议；

配置Switch A为DR，Switch C为BDR。

图1-27 配置OSPF优先级的DR选择组网图

2. 配置思路

(1) 配置各接口的IP地址

(2) 配置OSPF基本功能

(3) 改变交换机接口的路由器优先级使Switch A成为DR，Switch C成为BDR。

3. 配置步骤

(1) 配置各接口的IP地址（略）

(2) 配置OSPF基本功能

# 配置Switch A。

<SwitchA> system-view

[SwitchA] router id 1.1.1.1

[SwitchA] ospf

[SwitchA-ospf-1] area 0

[SwitchA-ospf-1-area-0.0.0.0] network 192.168.1.0 0.0.0.255

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

[SwitchA-ospf-1] quit

# 配置Switch B。

<SwitchB> system-view

[SwitchB] router id 2.2.2.2

[SwitchB] ospf

[SwitchB-ospf-1] area 0

[SwitchB-ospf-1-area-0.0.0.0] network 192.168.1.0 0.0.0.255

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

[SwitchB-ospf-1] quit

# 配置Switch C。

<SwitchC> system-view

[SwitchC] router id 3.3.3.3

[SwitchC] ospf

[SwitchC-ospf-1] area 0

[SwitchC-ospf-1-area-0.0.0.0] network 192.168.1.0 0.0.0.255

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

[SwitchC-ospf-1] quit

# 配置Switch D。

<SwitchD> system-view

[SwitchD] router id 4.4.4.4

[SwitchD] ospf

[SwitchD-ospf-1] area 0

[SwitchD-ospf-1-area-0.0.0.0] network 192.168.1.0 0.0.0.255

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

[SwitchD-ospf-1] return

# 查看Switch A的邻居信息。

[SwitchA] display ospf peer verbose

OSPF Process 1 with Router ID 1.1.1.1

Neighbors

Area 0.0.0.0 interface 192.168.1.1(Vlan-interface1)'s neighbors

Router ID: 2.2.2.2 Address: 192.168.1.2 GR State: Normal

State: 2-Way Mode: None Priority: 1

DR: 192.168.1.4 BDR: 192.168.1.3 MTU: 0

Dead timer due in 38 sec

Neighbor is up for 00:01:31

Authentication Sequence: [ 0 ]

Router ID: 3.3.3.3 Address: 192.168.1.3 GR State: Normal

State: Full Mode: Nbr is Master Priority: 1

DR: 192.168.1.4 BDR: 192.168.1.3 MTU: 0

Dead timer due in 31 sec

Neighbor is up for 00:01:28

Authentication Sequence: [ 0 ]

Router ID: 4.4.4.4 Address: 192.168.1.4 GR State: Normal

State: Full Mode: Nbr is Master Priority: 1

DR: 192.168.1.4 BDR: 192.168.1.3 MTU: 0

Dead timer due in 31 sec

Neighbor is up for 00:01:28

Authentication Sequence: [ 0 ]

可以看到Switch D为DR，Switch C为BDR。

(3) 配置接口上的路由器优先级

# 配置Switch A。

[SwitchA] interface vlan-interface 1

[SwitchA-Vlan-interface1] ospf dr-priority 100

[SwitchA-Vlan-interface1] quit

# 配置Switch B。

[SwitchB] interface vlan-interface 1

[SwitchB-Vlan-interface1] ospf dr-priority 0

[SwitchB-Vlan-interface1] quit

# 配置Switch C。

[SwitchC] interface vlan-interface 1

[SwitchC-Vlan-interface1] ospf dr-priority 2

[SwitchC-Vlan-interface1] quit

# 查看Switch D的邻居信息。

<SwitchD> display ospf peer verbose

OSPF Process 1 with Router ID 4.4.4.4

Neighbors

Area 0.0.0.0 interface 192.168.1.4(Vlan-interface1)'s neighbors

Router ID: 1.1.1.1 Address: 192.168.1.1 GR State: Normal

State: Full Mode:Nbr is Slave Priority: 100

DR: 192.168.1.4 BDR: 192.168.1.3 MTU: 0

Dead timer due in 31 sec

Neighbor is up for 00:11:17

Authentication Sequence: [ 0 ]

Router ID: 2.2.2.2 Address: 192.168.1.2 GR State: Normal

State: Full Mode:Nbr is Slave Priority: 0

DR: 192.168.1.4 BDR: 192.168.1.3 MTU: 0

Dead timer due in 35 sec

Neighbor is up for 00:11:19

Authentication Sequence: [ 0 ]

Router ID: 3.3.3.3 Address: 192.168.1.3 GR State: Normal

State: Full Mode:Nbr is Slave Priority: 2

DR: 192.168.1.4 BDR: 192.168.1.3 MTU: 0

Dead timer due in 33 sec

Neighbor is up for 00:11:15

Authentication Sequence: [ 0 ]

可以看到，网络中DR/BDR并没有改变。

网络中DR/BDR已经存在的情况下，接口上的路由器优先级的配置并不会立即生效。

(4) 重启OSPF进程

# 重启Switch D的进程。

<SwitchD> reset ospf 1 process

Warning : Reset OSPF process? [Y/N]:y

# 查看Switch D的邻居信息。

<SwitchD> display ospf peer verbose

OSPF Process 1 with Router ID 4.4.4.4

Neighbors

Area 0.0.0.0 interface 192.168.1.4(Vlan-interface1)'s neighbors

Router ID: 1.1.1.1 Address: 192.168.1.1 GR State: Normal

State: Full Mode: Nbr is Slave Priority: 100

DR: 192.168.1.1 BDR: 192.168.1.3 MTU: 0

Dead timer due in 39 sec

Neighbor is up for 00:01:40

Authentication Sequence: [ 0 ]

Router ID: 2.2.2.2 Address: 192.168.1.2 GR State: Normal

State: 2-Way Mode: None Priority: 0

DR: 192.168.1.1 BDR: 192.168.1.3 MTU: 0

Dead timer due in 35 sec

Neighbor is up for 00:01:44

Authentication Sequence: [ 0 ]

Router ID: 3.3.3.3 Address: 192.168.1.3 GR State: Normal

State: Full Mode: Nbr is Slave Priority: 2

DR: 192.168.1.1 BDR: 192.168.1.3 MTU: 0

Dead timer due in 39 sec

Neighbor is up for 00:01:41

Authentication Sequence: [ 0 ]

可以看到Switch A成为DR，Switch C为BDR。

l 如果邻居的状态是Full，这说明它和邻居之间形成了邻接关系；

l 如果邻居的状态是2-Way，则说明它们都不是DR或BDR，两者之间不需要交换LSA。

# 查看OSPF接口的状态。

[SwitchA] display ospf interface

OSPF Process 1 with Router ID 1.1.1.1

Interfaces

Area: 0.0.0.0

IP Address Type State Cost Pri DR BDR

192.168.1.1 Broadcast DR 1 100 192.168.1.1 192.168.1.3

[SwitchB] display ospf interface

OSPF Process 1 with Router ID 2.2.2.2

Interfaces

Area: 0.0.0.0

IP Address Type State Cost Pri DR BDR

192.168.1.2 Broadcast DROther 1 0 192.168.1.1 192.168.1.3

如果OSPF接口的状态是DROther，则说明它既不是DR，也不是BDR。

1.12.7 配置OSPF虚连接

1. 组网需求

l Area 2与Area 0没有直接相连。Area 1被用作传输区域（Transit Area）来连接Area 2和Area 0。Switch B和Switch C之间配置一条虚连接。

l 配置完成后，Switch B能够学到Area 2中的路由。

2. 组网图

图1-28 配置OSPF虚链路组网图

3. 配置步骤

(1) 配置各接口的IP地址（略）

(2) 配置OSPF基本功能

# 配置Switch A。

<SwitchA> system-view

[SwitchA] ospf 1 router-id 1.1.1.1

[SwitchA-ospf-1] area 0

[SwitchA-ospf-1-area-0.0.0.0] network 10.1.1.0 0.0.0.255

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

# 配置Switch B。

<SwitchB> system-view

[SwitchB] ospf 1 router-id 2.2.2.2

[SwitchB-ospf-1] area 0

[SwitchB-ospf-1-area-0.0.0.0] network 10.1.1.0 0.0.0.255

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

[SwitchB-ospf-1] area 1

[SwitchB–ospf-1-area-0.0.0.1] network 10.2.1.0 0.0.0.255

[SwitchB–ospf-1-area-0.0.0.1] quit

[SwitchB-ospf-1] quit

# 配置Switch C。

<SwitchC> system-view

[SwitchC] ospf 1 router-id 3.3.3.3

[SwitchC-ospf-1] area 1

[SwitchC-ospf-1-area-0.0.0.1] network 10.2.1.0 0.0.0.255

[SwitchC-ospf-1-area-0.0.0.1] quit

[SwitchC-ospf-1] area 2

[SwitchC–ospf-1-area-0.0.0.2] network 10.3.1.0 0.0.0.255

[SwitchC–ospf-1-area-0.0.0.2] quit

[SwitchC-ospf-1] quit

# 配置Switch D。

<SwitchD> system-view

[SwitchD] ospf 1 router-id 4.4.4.4

[SwitchD-ospf-1] area 2

[SwitchD-ospf-1-area-0.0.0.2] network 10.3.1.0 0.0.0.255

[SwitchD-ospf-1-area-0.0.0.2] quit

# 查看Switch B的OSPF路由表。

[SwitchB] display ospf routing

OSPF Process 1 with Router ID 2.2.2.2

Routing Tables

Routing for Network

Destination Cost Type NextHop AdvRouter Area

10.2.1.0/24 2 Transit 10.2.1.1 3.3.3.3 0.0.0.1

10.1.1.0/24 2 Transit 10.1.1.2 2.2.2.2 0.0.0.0

Total Nets: 2

Intra Area: 2 Inter Area: 0 ASE: 0 NSSA: 0

由于Area 0没有与Area 2直接相连，所以Switch B的路由表中没有Area 2的路由。

(3) 配置虚连接

# 配置Switch B。

[SwitchB] ospf

[SwitchB-ospf-1] area 1

[SwitchB-ospf-1-area-0.0.0.1] vlink-peer 3.3.3.3

[SwitchB-ospf-1-area-0.0.0.1] quit

[SwitchB-ospf-1] quit

# 配置Switch C。

[SwitchC] ospf 1

[SwitchC-ospf-1] area 1

[SwitchC-ospf-1-area-0.0.0.1] vlink-peer 2.2.2.2

[SwitchC-ospf-1-area-0.0.0.1] quit

# 查看Switch B的OSPF路由表。

[SwitchB] display ospf routing

OSPF Process 1 with Router ID 2.2.2.2

Routing Tables

Routing for Network

Destination Cost Type NextHop AdvRouter Area

10.2.1.0/24 2 Transit 10.2.1.1 3.3.3.3 0.0.0.1

10.3.1.0/24 5 Inter 10.2.1.2 3.3.3.3 0.0.0.0

10.1.1.0/24 2 Transit 10.1.1.2 2.2.2.2 0.0.0.0

Total Nets: 3

Intra Area: 2 Inter Area: 1 ASE: 0 NSSA: 0

可以看到，Switch B已经学到了Area 2的路由10.3.1.0/24。

1.12.8 OSPF GR配置举例

1. 组网需求

l Switch A、Switch B和Switch C既属于同一自治系统，也属于同一OSPF域，通过OSPF协议实现网络互连，并提供GR机制。

l Switch A作为非IETF标准GR Restarter，Switch B和Switch C作为GR Helper并且通过GR机制与Switch A保持带外同步。

2. 组网图

图1-29 OSPF GR配置组网图

3. 配置步骤

(1) 配置各接口的IP地址（略）

(2) 配置OSPF基本功能

# 配置Switch A。

<SwitchA> system-view

[SwitchA] router id 1.1.1.1

[SwitchA] ospf 100

[SwitchA-ospf-100] area 0

[SwitchA-ospf-100-area-0.0.0.0] network 192.1.1.0 0.0.0.255

[SwitchA-ospf-100-area-0.0.0.0] quit

# 配置Switch B。

<SwitchB> system-view

[SwitchB] router id 2.2.2.2

[SwitchB] ospf 100

[SwitchB-ospf-100] area 0

[SwitchB-ospf-100-area-0.0.0.0] network 192.1.1.0 0.0.0.255

[SwitchB-ospf-100-area-0.0.0.0] quit

# 配置Switch C。

<SwitchC> system-view

[SwitchC] router id 3.3.3.3

[SwitchC] ospf 100

[SwitchC-ospf-100] area 0

[SwitchC-ospf-100-area-0.0.0.0] network 192.1.1.0 0.0.0.255

[SwitchC-ospf-100-area-0.0.0.0] quit

(3) 配置OSPF GR

# 配置Switch A作为非IETF标准GR Restarter，即使能OSPF进程100的本地链路信令能力、OSPF带外同步能力和非IETF标准GR能力。

[SwitchA-ospf-100] enable link-local-signaling

[SwitchA-ospf-100] enable out-of-band-resynchronization

[SwitchA-ospf-100] graceful-restart

[SwitchA-ospf-100] return

# 配置Switch B作为GR Helper，即使能OSPF进程100的本地链路信令能力和OSPF带外同步能力。

[SwitchB-ospf-100] enable link-local-signaling

[SwitchB-ospf-100] enable out-of-band-resynchronization

# 配置Switch C作为GR Helper，即使能OSPF进程100的本地链路信令能力和OSPF带外同步能力。

[SwitchC-ospf-100] enable link-local-signaling

[SwitchC-ospf-100] enable out-of-band-resynchronization

(4) 检验配置效果

# 运行稳定后，打开Switch A的OSPF平滑启动事件调试信息开关。在Switch A上以GR方式重启OSPF进程。

<SwitchA> debugging ospf event graceful-restart

<SwitchA> terminal monitor

<SwitchA> terminal debugging

<SwitchA> reset ospf 100 process graceful-restart

Warning : Reset OSPF process? [Y/N]:y

%Dec 12 09:36:12:500 2006 SwitchA RM/3/RMLOG:OSPF-NBRCHANGE: Process 100, Neighbour

192.1.1.1(Vlan100) from Full to Down

OSPF 100: Intf 192.1.1.1 Rcv InterfaceDown State BackupDR -> Down.

OSPF 100 nonstandard GR Started for OSPF Router

OSPF 100 notify RM that OSPF process will enter GR.

OSPF 100 created GR wait timer, timeout interval is 40(s).

OSPF 100 created GR Interval timer,timeout interval is 120(s).

OSPF 100: Intf 192.1.1.1 Rcv InterfaceUp State Down -> Waiting.

OSPF 100: Intf 192.1.1.1 Rcv BackupSeen State Waiting -> BackupDR.

OSPF 100 created OOB Progress timer for neighbor 192.1.1.2.

OSPF 100 restarted OOB Progress timer for neighbor 192.1.1.2.

OSPF 100 restarted OOB Progress timer for neighbor 192.1.1.2.

%Oct 22 09:36:12:566 2008 SwitchA RM/3/RMLOG:OSPF-NBRCHANGE: Process 100, Neighbour

192.1.1.2(Vlan100) from Loading to Full

OSPF 100 restarted OOB Progress timer for neighbor 192.1.1.2.

OSPF 100 deleted OOB Progress timer for neighbor 192.1.1.2.

OSPF 100 Gr Wait Timeout timer fired.

OSPF 100 deleted GR wait timer.

OSPF 100 deleted GR Interval timer.

OSPF 100 GR Completed for OSPF Router

OSPF 100 notified RM that OSPF process left GR.

RM notified that all protocol left GR.

OSPF 100 started flushing STALE LSA after all protocol left GR.

OSPF 100: Flush Stale Area LSAs

OSPF 100: Start Flush Stale ASE + NSSA LSAs

OSPF 100: End Flush Stale ASE + NSSA LSAs

从上面的信息可以看出Switch A在Switch B的协助下完成了GR。

1.12.9 配置路由过滤

1. 组网需求

l 所有的交换机都运行OSPF，整个自治系统划分为3个区域。

l 其中Switch A和Switch B作为ABR来转发区域之间的路由。

l 在Switch C上配置为ASBR引入外部路由（静态路由），并在Switch C上配置过滤策略，对引入的一条路由（3.1.3.0/24）进行过滤。

l 在Switch A上配置路由策略，对路由（10.5.1.0/24）进行过滤。

2. 组网图

图1-30 配置路由过滤

3. 配置步骤

(1) 配置各接口的IP地址（略）

(2) 配置OSPF（同前例 1.12.1 ）

(3) 配置引入自治系统外部路由

# 在Switch C上配置一条到目的网段3.1.1.0/24的静态路由。

<SwitchC> system-view

[SwitchC] ip route-static 3.1.1.0 24 10.4.1.2

# 在Switch C上配置一条到目的网段3.1.2.0/24的静态路由。

[SwitchC] ip route-static 3.1.2.0 24 10.4.1.2

# 在Switch C上配置一条到目的网段3.1.3.0/24的静态路由。

[SwitchC] ip route-static 3.1.3.0 24 10.4.1.2

# 在Switch C上配置OSPF引入静态路由。

[SwitchC] ospf 1

[SwitchC-ospf-1] import-route static

[SwitchC-ospf-1] quit

# 在Switch A上查看路由信息。

<SwitchA> display ip routing-table

Routing Tables: Public

Destinations : 12 Routes : 12

Destination/Mask Proto Pre Cost NextHop Interface

3.1.1.0/24 O_ASE 150 1 10.2.1.2 Vlan200

3.1.2.0/24 O_ASE 150 1 10.2.1.2 Vlan200

3.1.3.0/24 O_ASE 150 1 10.2.1.2 Vlan200

10.1.1.0/24 Direct 0 0 10.1.1.1 Vlan200

10.1.1.1/32 Direct 0 0 127.0.0.1 InLoop0

10.2.1.0/24 Direct 0 0 10.2.1.1 Vlan200

10.2.1.1/32 Direct 0 0 127.0.0.1 InLoop0

10.3.1.0/24 OSPF 10 4 10.1.1.2 Vlan100

10.4.1.0/24 OSPF 10 13 10.2.1.2 Vlan200

10.5.1.0/24 OSPF 10 14 10.1.1.2 Vlan100

127.0.0.0/8 Direct 0 0 127.0.0.1 InLoop0

127.0.0.1/32 Direct 0 0 127.0.0.1 InLoop0

(4) 在Switch C配置对路由3.1.3.0/24进行过滤

# 配置IPv4地址前缀列表。

[SwitchC] ip ip-prefix prefix1 index 1 deny 3.1.3.0 24

[SwitchC] ip ip-prefix prefix1 index 2 permit 3.1.1.0 24

[SwitchC] ip ip-prefix prefix1 index 3 permit 3.1.2.0 24

# 配置对引入的静态路由信息进行过滤，过滤掉路由3.1.3.0/24。

[SwitchC] ospf 1

[SwitchC-ospf-1] filter-policy ip-prefix prefix1 export static

# 在Switch A上查看路由信息。

<SwitchA> display ip routing-table

Routing Tables: Public

Destinations : 11 Routes : 11

Destination/Mask Proto Pre Cost NextHop Interface

3.1.1.0/24 O_ASE 150 1 10.2.1.2 Vlan200

3.1.2.0/24 O_ASE 150 1 10.2.1.2 Vlan200

10.1.1.0/24 Direct 0 0 10.1.1.1 Vlan100

10.1.1.1/32 Direct 0 0 127.0.0.1 InLoop0

10.2.1.0/24 Direct 0 0 10.2.1.1 Vlan200

10.2.1.1/32 Direct 0 0 127.0.0.1 InLoop0

10.3.1.0/24 OSPF 10 4 10.1.1.2 Vlan100

10.4.1.0/24 OSPF 10 13 10.2.1.2 Vlan200

10.5.1.0/24 OSPF 10 14 10.1.1.2 Vlan100

127.0.0.0/8 Direct 0 0 127.0.0.1 InLoop0

127.0.0.1/32 Direct 0 0 127.0.0.1 InLoop0

可以看到，到目的网段3.1.3.0/24的路由被过滤掉了。

(5) 在Switch A上配置对路由10.5.1.1/24进行过滤

# 在Switch A上配置访问控制列表。

<SwitchA> system-veiw

[SwitchA] acl number 2000

[SwitchA-acl-basic-2000] rule 0 deny source 10.5.1.0 0.0.0.255

[SwitchA-acl-basic-2000] rule 1 permit source any

[SwitchA-acl-basic-2000] quit

# 配置对通过LSA计算出来的路由信息10.5.1.0/24进行过滤。

[SwitchA] ospf 1

[SwitchA-ospf-1] filter-policy 2000 import

[SwitchA-ospf-1] quit

# 在Switch A上查看路由信息。

[SwitchA] display ip routing-table

Routing Tables: Public

Destinations : 10 Routes : 10

Destination/Mask Proto Pre Cost NextHop Interface

3.1.1.0/24 O_ASE 150 1 10.2.1.2 Vlan200

3.1.2.0/24 O_ASE 150 1 10.2.1.2 Vlan200

10.1.1.0/24 Direct 0 0 10.1.1.1 Vlan100

10.1.1.1/32 Direct 0 0 127.0.0.1 InLoop0

10.2.1.0/24 Direct 0 0 10.2.1.1 Vlan200

10.2.1.1/32 Direct 0 0 127.0.0.1 InLoop0

10.3.1.0/24 OSPF 10 4 10.1.1.2 Vlan100

10.4.1.0/24 OSPF 10 13 10.2.1.2 Vlan200

127.0.0.0/8 Direct 0 0 127.0.0.1 InLoop0

127.0.0.1/32 Direct 0 0 127.0.0.1 InLoop0

可以看到，到10.5.1.1/24的路由被过滤掉了。

1.12.10 OSPF快速重路由配置举例

1. 组网需求

如 图1-31 所示，Switch S 、Switch A和Switch D属于同一OSPF区域，通过OSPF协议实现网络互连。要求当Switch S和Switch D之间的链路出现故障时，业务可以快速切换到链路B上。

2. 组网图

图1-31 OSPF快速重路由配置举例

3. 配置步骤

(1) 配置各交换机接口的IP地址和OSPF协议

请按照上面组网图配置各接口的IP地址和子网掩码，具体配置过程略。

配置各交换机之间采用OSPF协议进行互连，确保Switch S、Switch A和Switch D之间能够在网络层互通，并且各交换机之间能够借助OSPF协议实现动态路由更新。

具体配置过程略。

(2) 配置OSPF 快速重路由

OSPF支持快速重路由配置有两种配置方法，一种是自动计算，另一种是通过策略指定，两种方法任选一种。

方法一：使能Switch S和Switch D的OSPF协议的自动计算快速重路由能力

# 配置Switch S。

<SwitchS> system-view

[SwitchS] bfd echo-source-ip 1.1.1.1

[SwitchS] ospf 1

[SwitchS-ospf-1] fast-reroute auto

[SwitchS-ospf-1] quit

# 配置Switch D。

<SwitchD> system-view

[SwitchD] bfd echo-source-ip 4.4.4.4

[SwitchD] ospf 1

[SwitchD-ospf-1] fast-reroute auto

[SwitchD-ospf-1] quit

方法二：使能Switch S的OSPF协议的指定路由策略快速重路由能力

# 配置Switch S。

<SwitchS> system-view

[SwitchS] bfd echo-source-ip 1.1.1.1

[SwitchS] ip ip-prefix abc index 10 permit 4.4.4.4 32

[SwitchS] route-policy frr permit node 10

[SwitchS-route-policy] if-match ip-prefix abc

[SwitchS-route-policy] apply fast-reroute backup-interface vlan-interface 100 backup-nexthop 12.12.12.2

[SwitchS-route-policy] quit

[SwitchS] ospf 1

[SwitchS-ospf-1] fast-reroute route-policy frr

[SwitchS-ospf-1] quit

# 配置Switch D。

<SwitchD> system-view

[SwitchD] bfd echo-source-ip 4.4.4.4

[SwitchD] ip ip-prefix abc index 10 permit 1.1.1.1 32

[SwitchD] route-policy frr permit node 10

[SwitchD-route-policy] if-match ip-prefix abc

[SwitchD-route-policy] apply fast-reroute backup-interface vlan-interface 101 backup-nexthop 24.24.24.2

[SwitchD-route-policy] quit

[SwitchD] ospf 1

[SwitchD-ospf-1] fast-reroute route-policy frr

[SwitchD-ospf-1] quit

(3) 检验配置效果

# 在Switch S上查看4.4.4.4/32网段路由，可以看到备份下一跳信息。

[SwitchS] display ip routing-table 4.4.4.4 verbose

Routing Table : Public

Summary Count : 1

Destination: 4.4.4.4/32

Protocol: OSPF Process ID: 1

Preference: 10 Cost: 1

IpPrecedence: QosLcId:

NextHop: 13.13.13.2 Interface: Vlan-interface200

BkNextHop: 12.12.12.2 BkInterface: Vlan-interface100

RelyNextHop: 0.0.0.0 Neighbor : 0.0.0.0

Tunnel ID: 0x0 Label: NULL

BKTunnel ID: 0x0 BKLabel: NULL

State: Active Adv Age: 00h01m27s

Tag: 0

# 在Switch D上查看1.1.1.1/32网段路由，可以看到备份下一跳信息。

[SwitchD] display ip routing-table 1.1.1.1 verbose

Routing Table : Public

Summary Count : 1

Destination: 1.1.1.1/32

Protocol: OSPF Process ID: 1

Preference: 10 Cost: 1

IpPrecedence: QosLcId:

NextHop: 13.13.13.1 Interface: Vlan-interface200

BkNextHop: 24.24.24.2 BkInterface: Vlan-interface101

RelyNextHop: 0.0.0.0 Neighbor : 0.0.0.0

Tunnel ID: 0x0 Label: NULL

BKTunnel ID: 0x0 BKLabel: NULL

State: Active Adv Age: 00h01m27s

Tag: 0

1.12.11 配置OSPF与BFD联动

1. 组网需求

l Switch A、Switch B和Switch C上运行OSPF，网络层相互可达。

l 当Switch A和Switch B通过L2 Switch通信的链路出现故障时BFD能够快速感知通告OSPF协议，并且切换到Switch C进行通信。

2. 组网图

图1-32 OSPF与BFD联动配置组网图

设备 | 接口 | IP地址 | 设备 | 接口 | IP地址
Switch A | Vlan-int10 | 10.1.0.102/24 | Switch B | Vlan-int10 | 10.1.0.100/24
 | Vlan-int11 | 11.1.1.1/24 |  | Vlan-int13 | 13.1.1.1/24
Switch C | Vlan-int11 | 11.1.1.2/24 |  |  |
 | Vlan-int13 | 13.1.1.2/24 |  |  |

3. 配置步骤

(1) 配置各接口的IP地址（略）

(2) 配置OSPF基本功能

# 配置Switch A。

<SwitchA> system-view

[SwitchA] ospf

[SwitchA-ospf-1] area 0

[SwitchA-ospf-1-area-0.0.0.0] network 10.1.0.0 0.0.0.255

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

[SwitchA-ospf-1-area-0.0.0.0] network 121.1.1.0 0.0.0.255

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

[SwitchA-ospf-1] quit

[SwitchA] interface vlan 11

[SwitchA-Vlan-interface11] ospf cost 2

[SwitchA-Vlan-interface11] quit

# 配置Switch B。

<SwitchB> system-view

[SwitchB] ospf

[SwitchB-ospf-1] area 0

[SwitchB-ospf-1-area-0.0.0.0] network 10.1.0.0 0.0.0.255

[SwitchB-ospf-1-area-0.0.0.0] network 13.1.1.0 0.0.0.255

[SwitchB-ospf-1-area-0.0.0.0] network 120.1.1.0 0.0.0.255

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

[SwitchB-ospf-1] quit

[SwitchB] interface vlan-interface 13

[SwitchB-Vlan-interface13] ospf cost 2

[SwitchA-Vlan-interface13] quit

# 配置Switch C。

<SwitchC> system-view

[SwitchC] ospf

[SwitchC-ospf-1] area 0

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

[SwitchC-ospf-1-area-0.0.0.0] network 13.1.1.0 0.0.0.255

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

[SwitchC-ospf-1] quit

(3) 配置BFD功能

# 在Switch A上使能BFD检测功能，并配置BFD参数。

[SwitchA] bfd session init-mode active

[SwitchA] interface vlan-interface 10

[SwitchA-Vlan-interface10] ospf bfd enable

[SwitchA-Vlan-interface10] bfd min-transmit-interval 500

[SwitchA-Vlan-interface10] bfd min-receive-interval 500

[SwitchA-Vlan-interface10] bfd detect-multiplier 7

[SwitchA-Vlan-interface10] quit

[SwitchA] quit

# 在Switch B上使能BFD检测功能，并配置BFD参数。

[SwitchB] bfd session init-mode active

[SwitchB] interface vlan-interface 10

[SwitchB-Vlan-interface10] ospf bfd enable

[SwitchB-Vlan-interface10] bfd min-transmit-interval 500

[SwitchB-Vlan-interface10] bfd min-receive-interval 500

[SwitchB-Vlan-interface10] bfd detect-multiplier 6

(4) 检查配置结果

下面以Switch A为例，Switch B和Switch A类似，不再赘述。

# 显示Switch A的BFD信息。

<SwitchA> display bfd session

Total Session Num: 1 Init Mode: Active

Session Working Under Ctrl Mode:

LD/RD SourceAddr DestAddr State Holdtime Interface

3/1 10.1.0.102 10.1.0.100 Up 1700ms vlan10

# 在Switch A上查看120.1.1.0/24的路由信息，可以看出Switch A和Switch B是通过L2 Swtich进行通信的。

<SwitchA> display ip routing-table 120.1.1.0 verbose

Routing Table : Public

Summary Count : 2

Destination: 120.1.1.0/24

Protocol: OSPF Process ID: 0

Preference: 0 Cost: 2

IpPrecedence: QosLcId:

NextHop: 192.168.0.100 Interface: Vlan-interface10

BkNextHop: 0.0.0.0 BkInterface:

RelyNextHop: 0.0.0.0 Neighbor : 0.0.0.0

Tunnel ID: 0x0 Label: NULL

BKTunnel ID: 0x0 BKLabel: NULL

State: Active Adv Age: 00h58m10s

Tag: 0

Destination: 120.1.1.0/24

Protocol: OSPF Process ID: 1

Preference: 10 Cost: 4

IpPrecedence: QosLcId:

NextHop: 10.1.1.100 Interface: Vlan-interface11

BkNextHop: 0.0.0.0 BkInterface:

RelyNextHop: 0.0.0.0 Neighbor : 0.0.0.0

Tunnel ID: 0x0 Label: NULL

BKTunnel ID: 0x0 BKLabel: NULL

State: Invalid Adv Age: 00h58m05s

Tag: 0

# 打开Switch A的调试开关。

<SwitchA> debugging bfd scm

<SwitchA> debugging bfd event

<SwitchA> debugging ospf event

<SwitchA> terminal debugging

# 当Switch A和Switch B通过L2 Switch通信的链路出现故障时，可以看到Switch A能够快速感知Switch B的变化。

%Nov 12 18:34:48:823 2005 SwitchA BFD/5/LOG: Sess[10.1.0.102/10.1.0.100, vlan10], Sta : UP->DOWN, Diag: 1

%Nov 12 18:34:48:824 2005 SwitchA RM/4/RMLOG:OSPF-NBRCHANGE: Process 1, Neighbour 10.1.0.102 (vlan10) from Full to Down

*0.50673825 SwitchA BFD/8/SCM:Sess[10.1.0.102/10.1.0.100, vlan10],Oper: Reset

*0.50673825 SwitchA BFD/8/EVENT:Send sess-down Msg, [Src：10.1.0.102, Dst：10.1.0.100, vlan10] Protocol: OSPF

*0.50673826 SwitchA RM/7/RMDEBUG:OSPF-BFD: Message Type rcv BFD down, Connect Type direct-connect, Src IP Address 10.1.0.102, Src IFIndex 5, Dst IP Address 10.1.0.100

*0.50673827 SwitchA RM/7/RMDEBUG:OSPF-BFD: Message Type delete session, Connect Type direct-connect, Src IP Address 10.1.0.102, Src IFIndex 5, Dst IP Address 10.1.0.100

OSPF 1: Nbr 10.1.0.100 Rcv KillNbr State Full -> Down.

*0.50673829 SwitchA BFD/8/EVENT:Receive Delete-sess, [Src:10.1.0.102, Dst:10.1.0.100, vlan10], Direct, Proto:OSPF

*0.50673830 SwitchA BFD/8/SCM:Sess[10.1.0.102/10.1.0.100, vlan10], Oper: Del application(OSPF)

*0.50673831 SwitchA BFD/8/SCM:No application in session, delete session[10.1.0.102/10.1.0.100, vlan10]

*0.50673831 SwitchA BFD/8/SCM:Sess[10.1.0.102/10.1.0.100, vlan10], Oper: Delete

*0.50673832 SwitchA BFD/8/SCM:Delete send-packet timer

*0.50673833 SwitchA BFD/8/SCM:Delete session entry

*0.50673833 SwitchA BFD/8/SCM:Delete session from IP hash table

*0.50673834 SwitchA BFD/8/SCM:Delete session from bfd interface

*0.50673834 SwitchA BFD/8/SCM:No session under bfd-int[vlan10] with default configuration, delete bfd-if

*0.50673835 SwitchA BFD/8/SCM:Bfd-if[vlan10], Oper: Delete

*0.50673840 SwitchA BFD/8/SCM:No bfd session exists, stop receiving any bfd packets

# 显示Switch A的BFD信息。

此时Switch A和Switch B的BFD会话已经被删除，没有任何输出信息。

<SwitchA> display bfd session

# 在Switch A上查看120.1.1.0/24的路由信息，可以看出Switch A和Switch B已经切换到Switch C进行通信。

<SwitchA> display ip routing-table 120.1.1.0 verbose

Routing Table : Public

Summary Count : 2

Destination: 120.1.1.0/24

Protocol: OSPF Process ID: 1

Preference: 10 Cost: 4

IpPrecedence: QosLcId:

NextHop: 10.1.1.100 Interface: Vlan-interface11

BkNextHop: 0.0.0.0 BkInterface:

RelyNextHop: 0.0.0.0 Neighbor : 0.0.0.0

Tunnel ID: 0x0 Label: NULL

BKTunnel ID: 0x0 BKLabel: NULL

State: Active Adv Age: 00h58m10s

Tag: 0

Destination: 120.1.1.0/24

Protocol: OSPF Process ID: 0

Preference: 0 Cost: 2

IpPrecedence: QosLcId:

NextHop: 192.168.0.100 Interface: Vlan-interface10

BkNextHop: 0.0.0.0 BkInterface:

RelyNextHop: 0.0.0.0 Neighbor : 0.0.0.0

Tunnel ID: 0x0 Label: NULL

BKTunnel ID: 0x0 BKLabel: NULL

State: Invalid Adv Age: 00h58m05s

Tag: 0


1.13 常见配置错误举例

1.13.1 OSPF邻居无法建立

1. 故障现象

OSPF邻居无法建立。

2. 分析

如果物理连接和下层协议正常，则检查接口上配置的OSPF参数，必须保证与相邻路由器的参数一致，区域号相同，网段与掩码也必须一致（点到点与虚连接的网段与掩码可以不同）。

3. 处理过程

(1) 使用 display ospf peer 命令查看OSPF邻居状态。

(2) 使用 display ospf interface 命令查看OSPF接口的信息。

(3) 检查物理连接及下层协议是否正常运行，可通过 ping 命令测试。若从本地路由器Ping对端路由器不通，则表明物理连接和下层协议有问题。

(4) 检查OSPF定时器，在同一接口上邻居失效时间应至少为Hello报文发送时间间隔的4倍。

(5) 如果是NBMA网络，则应该使用 peer ip-address 命令手工指定邻居。

(6) 如果网络类型为广播网或NBMA，则至少有一个接口的路由器优先级大于零。

1.13.2 OSPF路由信息不正确

1. 故障现象

OSPF不能发现其他区域的路由。

2. 分析

应保证骨干区域与所有的区域相连接。若一台路由器配置了两个以上的区域，则至少有一个区域应与骨干区域相连。骨干区域不能配置成Stub区域。

在Stub区域内的路由器不能接收外部AS的路由。如果一个区域配置成Stub区域，则与这个区域相连的所有路由器都应将此区域配置成Stub区域。

3. 处理过程

(1) 使用 display ospf peer 命令查看OSPF邻居状态。

(2) 使用 display ospf interface 命令查看OSPF接口的信息。

(3) 使用 display ospf lsdb 查看LSDB的信息是否完整。

(4) 使用 display current-configuration configuration ospf 命令查看区域是否配置正确。若配置了两个以上的区域，则至少有一个区域与骨干区域相连。

(5) 如果某区域是Stub区域，则该区域中的所有路由器都要配置 stub 命令；如果某区域是NSSA区域，则该区域中的所有路由器都要配置 nssa 命令。

(6) 如果配置了虚连接，使用 display ospf vlink 命令查看OSPF虚连接是否正常。


1 IS-IS配置

l 在以下路由协议的介绍中所指的路由器及路由器图标，代表了一般意义下的路由器以及运行了路由协议的以太网交换机。

l S3600V2-SI系列交换机不支持IS-IS功能。

相关链接

  • 1.1 IS-IS简介
  • 1.2 IS-IS配置任务简介
  • 1.3 配置IS-IS基本功能
  • 1.4 配置IS-IS路由信息控制
  • 1.5 调整和优化IS-IS网络
  • 1.6 提高IS-IS网络的安全性
  • 1.7 配置IS-IS GR
  • 1.8 配置IS-IS NSR
  • 1.9 配置IS-IS快速重路由
  • 1.10 使能IS-IS的TRAP功能
  • 1.11 配置IS-IS和MIB绑定
  • 1.12 配置IS-IS与BFD联动
  • 1.13 IS-IS显示和维护
  • 1.14 IS-IS典型配置案例
父主题： 05-IS-IS配置


1.1 IS-IS简介

IS-IS（Intermediate System-to-Intermediate System，中间系统到中间系统）最初是国际标准化组织（International Organization for Standardization，ISO）为它的无连接网络协议（ConnectionLess Network Protocol，CLNP）设计的一种动态路由协议。

为了提供对IP的路由支持，IETF（Internet Engineering Task Force，互联网工程任务组）在RFC 1195中对IS-IS进行了扩充和修改，使它能够同时应用在TCP/IP和OSI环境中，称为集成化IS-IS（Integrated IS-IS或Dual IS-IS）。

IS-IS属于内部网关协议（Interior Gateway Protocol，IGP），用于自治系统内部。IS-IS是一种链路状态协议，使用最短路径优先（Shortest Path First，SPF）算法进行路由计算。

1.1.1 基本概念

1. IS-IS路由协议的基本术语

l IS（Intermediate System）：中间系统。相当于TCP/IP中的路由器，是IS-IS协议中生成路由和传播路由信息的基本单元。在下文中IS和路由器具有相同的含义。

l ES（End System）：终端系统。相当于TCP/IP中的主机系统。ES不参与IS-IS路由协议的处理，ISO使用专门的ES-IS协议定义终端系统与中间系统间的通信。

l RD（Routing Domain）：路由域。在一个路由域中多个IS通过相同的路由协议来交换路由信息。

l Area：区域，路由域的细分单元，IS-IS允许将整个路由域分为多个区域。

l LSDB（Link State DataBase）：链路状态数据库。网络内所有链路的状态组成了链路状态数据库，在每一个IS中都至少有一个LSDB。IS使用SPF算法，利用LSDB来生成自己的路由。

l LSPDU（Link State Protocol Data Unit）：链路状态协议数据单元，简称LSP。在IS-IS中，每一个IS都会生成LSP，此LSP包含了本IS的所有链路状态信息。

l NPDU（Network Protocol Data Unit）：网络协议数据单元，是OSI中的网络层协议报文，相当于TCP/IP中的IP报文。

l DIS（Designated IS）：广播网络上选举的指定中间系统，也可以称为指定IS。

l NSAP（Network Service Access Point）：网络服务接入点，即OSI中网络层的地址，用来标识一个抽象的网络服务访问点，描述OSI模型的网络地址结构。

2. IS-IS地址结构

(1) NSAP

如 图1-1 所示，NSAP由IDP（Initial Domain Part）和DSP（Domain Specific Part）组成。IDP相当于IP地址中的主网络号，DSP相当于IP地址中的子网号和主机地址。

IDP部分是ISO规定的，它由AFI（Authority and Format Identifier）与IDI（Initial Domain Identifier）组成，AFI表示地址分配机构和地址格式，IDI用来标识域。

DSP由HO-DSP（High Order Part of DSP）、SystemID和SEL三个部分组成。HO-DSP用来分割区域，SystemID用来区分主机，SEL指示服务类型。

IDP和DSP的长度都是可变的，NSAP总长最多是20个字节，最少8个字节。

图1-1 IS-IS协议的地址结构示意图

(2) 区域地址

IDP和DSP中的HO-DSP一起，既能够标识路由域，也能够标识路由域中的区域，因此，它们一起被称为区域地址（Area Address）。两个不同的路由域中不允许有相同的区域地址。

一般情况下，一台路由器只需要配置一个区域地址，且同一区域中所有节点的区域地址都要相同。为了支持区域的平滑合并、分割及转换，一台路由器最多可配置3个区域地址。

(3) System ID

System ID用来在区域内唯一标识主机或路由器。它的长度固定为48比特。

在实际应用中，一般使用Router ID与System ID进行对应。假设一台路由器使用接口Loopback0的IP地址168.10.1.1作为Router ID，则它在IS-IS使用的System ID可通过如下方法转换得到：

l 将IP地址168.10.1.1的每一部分都扩展为3位，不足3位的在前面补0；

l 将扩展后的地址168.010.001.001重新划分为3部分，每部分由4位数字组成，得到的1680.1000.1001就是System ID。

实际System ID的指定可以有不同的方法，但要保证能够唯一标识主机或路由器。

(4) SEL

SEL（NSAP Selector，有时也写成N-SEL）的作用类似IP中的“协议标识符”，不同的传输协议对应不同的SEL。在IP中，SEL均为00。

(5) 路由方式

由于这种地址结构明确的定义了区域，Level-1路由器很容易识别出发往它所在的区域之外的报文，这些报文是需要转交给Level-1-2路由器的。

l Level-1路由器利用System ID进行区域内的路由，如果发现报文的目的地址不属于自己所在的区域，就将报文转发给最近的Level-1-2路由器。

l Level-2路由器根据区域地址进行区域间的路由。

3. NET

NET（Network Entity Title，网络实体名称）指示的是IS本身的网络层信息，不包括传输层信息，可以看作是一类特殊的NSAP，即SEL为0的NSAP地址。因此，NET的长度与NSAP的相同，为8～20个字节。

NET由三部分组成：

l 区域ID，它的长度可变的，为1～13个字节。

l System ID，用来在区域内唯一标识主机或路由器，它的长度固定为6个字节。

l SEL，为0，它的长度固定为1个字节。

例如NET为：ab.cdef.1234.5678.9abc.00，则其中区域ID为ab.cdef，System ID为1234.5678.9abc，SEL为00。

通常情况下，一台路由器配置一个NET即可，当区域需要重新划分时，例如将多个区域合并，或者将一个区域划分为多个区域，这种情况下配置多个NET可以在重新配置时仍然能够保证路由的正确性。由于一台路由器最多可配置3个区域地址，所以最多也只能配置3个NET。在配置多个NET时，必须保证它们的System ID都相同。

1.1.2 IS-IS区域

1. 两级结构

为了支持大规模的路由网络，IS-IS在路由域内采用两级的分层结构。一个大的路由域通常被分成多个区域（Areas）。一般来说，我们将Level-1路由器部署在区域内，Level-2路由器部署在区域间，Level-1-2路由器部署在Level-1路由器和Level-2路由器的中间。

2. Level-1与Level-2

(1) Level-1路由器

Level-1路由器负责区域内的路由，它只与属于同一区域的Level-1和Level-1-2路由器形成邻居关系，维护一个Level-1的LSDB，该LSDB包含本区域的路由信息，到区域外的报文转发给最近的Level-1-2路由器。

(2) Level-2路由器

Level-2路由器负责区域间的路由，可以与同一区域或者其它区域的Level-2和Level-1-2路由器形成邻居关系，维护一个Level-2的LSDB，该LSDB包含区域间的路由信息。所有Level-2路由器和Level-1-2路由器组成路由域的骨干网，负责在不同区域间通信，骨干网必须是物理连续的。

(3) Level-1-2路由器

同时属于Level-1和Level-2的路由器称为Level-1-2路由器，可以与同一区域的Level-1和Level-1-2路由器形成Level-1邻居关系，也可以与同一区域或者其他区域的Level-2和Level-1-2路由器形成Level-2的邻居关系。Level-1路由器必须通过Level-1-2路由器才能连接至其他区域。Level-1-2路由器维护两个LSDB，Level-1的LSDB用于区域内路由，Level-2的LSDB用于区域间路由。

l 属于不同区域的Level-1路由器不能形成邻居关系。

l Level-2路由器是否形成邻居关系则与区域无关。

图1-2 为一个运行IS-IS协议的网络，其中Area 1是骨干区域，该区域中的所有路由器均是Level-2路由器。另外4个区域为非骨干区域，它们都通过Level-1-2路由器与骨干路由器相连。

图1-2 IS-IS拓扑结构图之一

图1-3 是IS-IS的另外一种拓扑结构图。其中Level-1-2路由器不仅仅用来连接Level-1和Level-2路由器，而且还与其它Level-2路由器一起构成了IS-IS的骨干网。在这个拓扑中，并没有规定哪个区域是骨干区域。所有Level-2路由器和Level-1-2路由器构成了IS-IS的骨干网，它们可以属于不同的区域，但必须是物理连续的。

图1-3 IS-IS拓扑结构图之二

IS-IS的骨干网（Backbone）指的不是一个特定的区域。

IS-IS不论是Level-1还是Level-2路由，都采用SPF算法，分别生成最短路径树（Shortest Path Tree，SPT）。

3. 路由渗透

通常情况下，区域内的路由通过Level-1的路由器进行管理。所有的Level-2路由器和Level-1-2路由器构成一个Level-2区域。因此，一个IS-IS的路由域可以包含多个Level-1区域，但只有一个Level-2区域。

Level-1区域必须且只能与Level-2区域相连，不同的Level-1区域之间并不相连。

Level-1区域内的路由信息通过Level-1-2路由器发布到Level-2区域，因此，Level-2路由器知道整个IS-IS路由域的路由信息。但是，在缺省情况下，Level-1-2路由器并不将自己知道的其它Level-1区域以及Level-2区域的路由信息发布到Level-1区域。这样，Level-1路由器将不了解本区域以外的路由信息，Level-1路由器只将去往其它区域的报文发送到最近的Level-1-2路由器，所以可能导致对本区域之外的目的地址无法选择最佳的路由。

为解决上述问题，IS-IS提供了路由渗透功能，使Level-1-2路由器可以将己知的其它Level-1区域以及Level-2区域的路由信息发布到指定的Level-1区域。

1.1.3 IS-IS的网络类型

1. 网络类型

IS-IS只支持两种类型的网络，根据物理链路不同可分为：

l 广播链路：如Ethernet、Token-Ring等。

l 点到点链路：如PPP、HDLC等。

2. DIS和伪节点

在广播网络中，IS-IS需要在所有的路由器中选举一个路由器作为DIS。

Level-1和Level-2的DIS是分别选举的，用户可以为不同级别的DIS选举设置不同的优先级。DIS优先级数值越高，被选中的可能性就越大。如果优先级最高的路由器有多台，则其中SNPA（Subnetwork Point of Attachment，子网连接点）地址（广播网络中的SNPA地址是MAC地址）最大的路由器会被选中。不同级别的DIS可以是同一台路由器，也可以是不同的路由器。

与OSPF的不同点：

l 优先级为0的路由器也参与DIS的选举；

l 当有新的路由器加入，并符合成为DIS的条件时，这个路由器会被选中成为新的DIS，此更改会引起一组新的LSP泛洪。

在IS-IS广播网中，同一网段上的同一级别的路由器之间都会形成邻接关系，包括所有的非DIS路由器之间也会形成邻接关系。如 图1-4 所示。

图1-4 IS-IS广播网的DIS和邻接关系

DIS用来创建和更新伪节点（Pseudonodes），并负责生成伪节点的LSP，用来描述这个网络上有哪些路由器。

伪节点是用来模拟广播网络的一个虚拟节点，并非真实的路由器。在IS-IS中，伪节点用DIS的System ID和一个字节的Circuit ID（非0值）标识。

使用伪节点可以简化网络拓扑，减少SPF的资源消耗。

IS-IS广播网络上所有的路由器之间都形成邻接关系，但LSDB的同步仍然依靠DIS来保证。

1.1.4 IS-IS的PDU格式

1. PDU头格式

IS-IS报文是直接封装在数据链路层的帧结构中的。PDU（Protocol Data Unit，协议数据单元）可以分为两个部分，报文头和变长字段部分。其中报文头又可分为通用报头和专用报头。对于所有PDU来说，通用报头都是相同的，但专用报头根据PDU类型不同而有所差别，如 图1-5 所示。

图1-5 PDU格式

2. 通用报头格式

所有的PDU都有相同的通用报头格式，如 图1-6 所示。

图1-6 PDU头格式

主要字段的解释如下：

l Intradomain Routing Protocol Discriminator（域内路由协议鉴别符）：设置为0x83。

l Length Indicator（长度标识符）：PDU头部的长度（包括通用报头和专用报头），以字节为单位。

l Version/Protocol ID Extension（版本/协议标识扩展）：设置为1（0x01）。

l ID Length（标识长度）：NSAP地址和NET的ID长度。

l R（Reserved，保留）：设置为0。

l PDU Type（PDU类型）：详细信息请参考 表1-1 。

l Version（版本）：设置为1（0x01）。

l Maximum Area Address（最大区域地址数）：支持的最大区域个数。

表1-1 PDU类型对应关系表

类型值 | PDU类型 | 简称
15 | Level-1 LAN IS-IS Hello PDU | L1 LAN IIH
16 | Level-2 LAN IS-IS Hello PDU | L2 LAN IIH
17 | Point-to-Point IS-IS Hello PDU | P2P IIH
18 | Level-1 Link State PDU | L1 LSP
20 | Level-2 Link State PDU | L2 LSP
24 | Level-1 Complete Sequence Numbers PDU | L1 CSNP
25 | Level-2 Complete Sequence Numbers PDU | L2 CSNP
26 | Level-1 Partial Sequence Numbers PDU | L1 PSNP
27 | Level-2 Partial Sequence Numbers PDU | L2 PSNP

3. Hello

Hello报文用于建立和维持邻居关系，也称为IIH（IS-to-IS Hello PDUs）。其中，广播网中的Level-1路由器使用Level-1 LAN IIH，广播网中的Level-2路由器使用Level-2 LAN IIH；点到点网络中的路由器则使用P2P IIH。

它们的报文格式有所不同。广播网中的Hello报文格式如 图1-7 所示（浅蓝色部分是通用报文头）。

图1-7 L1/L2 LAN IIH格式

主要字段的解释如下：

l Reserved/Circuit Type：高位的6比特保留，值为0。低位的2比特表示路由器的类型（00保留，01表示L1，10表示L2，11表示L1/2）。

l Source ID：发送Hello报文的路由器的System ID。

l Holding Time：保持时间。在此时间内如果没有收到邻居发来的Hello报文，则中止已建立的邻居关系。

l PDU Length：PDU的总长度，以字节为单位。

l Priority：选举DIS的优先级。

l LAN ID：包括System ID和一字节的伪节点ID。

点到点网络中的Hello报文格式如 图1-8 所示（浅蓝色部分是通用报文头）。

图1-8 P2P IIH格式

从图中可以看出，P2P IIH中的多数字段与LAN IIH相同。不同的是没有Priority和LAN ID字段，而多了一个Local Circuit ID字段，表示本地链路ID。

4. LSP报文格式

LSP用于交换链路状态信息。LSP分为两种：Level-1 LSP和Level-2 LSP。Level-1路由器传送Level-1 LSP，Level-2路由器传送Level-2 LSP，Level-1-2路由器则可传送以上两种LSP。

两类LSP有相同的报文格式，如 图1-9 所示（浅蓝色部分是通用报文头）。

图1-9 L1/L2 LSP格式

主要字段的解释如下：

l PDU Length：PDU的总长度，以字节为单位。

l Remaining Lifetime：LSP的存活时间，以秒为单位。

l LSP ID：由三部分组成，System ID、伪节点ID（一字节）和LSP的分片号（一字节）。

l Sequence Number：LSP的序列号。

l Checksum：LSP的校验和。

l P（Partition Repair）：仅与L2 LSP有关，表示路由器是否支持自动修复区域分割。

l ATT（Attachment）：由L1/L2路由器产生，但仅与L1 LSP有关，表示产生此LSP的路由器（L1/L2路由器）与多个区域相连接。

l OL（LSDB Overload）：过载标志位。表示本路由器因内存不足而导致LSDB不完整。其它路由器在得知这一信息后，就不会再利用这台路由器转发需要经过它传送的数据流，但到此路由器直连地址的报文仍然可以被转发。如 图1-10 所示，假设正常情况下Router A到Router C的报文都是经过Router B转发，但如果Router B的OL位置1，则Router A会认为Router B的路由不完整，从而将报文通过Router D、Router E转发给Router C，但到Router B直连地址的报文不受影响。

图1-10 LSDB Overload示意图

l IS Type：生成LSP的路由器的类型。

5. SNP格式

时序报文SNP（Sequence Number PDUs）用于确认邻居之间最新接收的LSP，作用类似于确认（Acknowledge）报文，但更有效。

SNP包括CSNP（Complete SNP，全时序报文）和PSNP（Partial SNP，部分时序报文），进一步又可分为Level-1 CSNP、Level-2 CSNP、Level-1 PSNP和Level-2 PSNP。

CSNP包括LSDB中所有LSP的摘要信息，从而可以在相邻路由器间保持LSDB的同步。在广播网络上，CSNP由DIS定期发送（缺省的发送周期为10秒）；在点到点链路上，CSNP在邻居关系建立时会发送，只发送一次。

CSNP的报文格式如 图1-11 所示（浅蓝色部分是通用报文头）。

图1-11 L1/L2 CSNP格式

PSNP只列举最近收到的一个或多个LSP的序号，它能够一次对多个LSP进行确认。当发现LSDB不同步时，也用PSNP来请求邻居发送新的LSP。

PSNP的报文格式如 图1-12 所示：

图1-12 L1/L2 PSNP格式

6. CLV

PDU中的变长字段部分是多个CLV（Code-Length-Value）三元组。其格式如 图1-13 所示：

图1-13 CLV格式

不同PDU类型所包含的CLV是不同的，如 表1-2 所示。

表1-2 PDU类型和包含的CLV名称

CLV Code | 名称 | 所应用的PDU类型
1 | Area Addresses | IIH、LSP
2 | IS Neighbors（LSP） | LSP
4 | Partition Designated Level-2 IS | L2 LSP
6 | IS Neighbors（MAC Address） | LAN IIH
7 | IS Neighbors（SNPA Address） | LAN IIH
8 | Padding | IIH
9 | LSP Entries | SNP
10 | Authentication Information | IIH、LSP、SNP
128 | IP Internal Reachability Information | LSP
129 | Protocols Supported | IIH、LSP
130 | IP External Reachability Information | L2 LSP
131 | Inter-Domain Routing Protocol Information | L2 LSP
132 | IP Interface Address | IIH、LSP

其中，Code值从1到10的CLV在ISO 10589中定义（有2类未在上表中列出），其它几种CLV在RFC 1195中定义。

1.1.5 支持的IS-IS特性

1. 多实例和多进程

为了方便管理，提高控制效率，IS-IS支持多进程和多实例特性。多进程允许为一个指定的IS-IS进程关联一组接口，从而保证该进程进行的所有协议操作都仅限于这一组接口。这样，就可以实现一台路由器有多个IS-IS协议进程，每个进程负责唯一的一组接口。

对于支持VPN的路由器，每个IS-IS进程都与一个指定的VPN实例相关联。这样，所有附加到该进程的接口都应与该进程相关联的VPN实例相关联。

2. IS-IS GR

GR（Graceful Restart，平滑重启）是一种在协议重启或主备切换时保证转发业务不中断的机制。GR有两个角色：

l GR Restarter：发生协议重启或主备倒换事件且具有GR能力的设备。

l GR Helper：和GR Restarter具有邻居关系，协助完成GR流程的设备。

基于IS-IS的GR Restarter进行协议重启后，为了与其IS-IS邻居重新同步链路状态数据库，它必须完成下列两项任务：

l 在不改变邻接关系的前提下，重新获取网络中的有效IS-IS邻居信息；

l 重新获取网络链路状态数据库的内容。

IS-IS协议重启完毕后，GR Restarter会立即向邻接的GR Helper发送一个IS-IS GR信号。这样，IS-IS邻居就不会复位与其的邻居关系。在收到其IS-IS邻居的响应后，GR Restarter会重新恢复与其的邻居关系列表。

邻居关系重新建立后，GR Restarter与其所有具备GR感知能力的IS-IS邻居之间同步数据库，并交换路由信息。交换完成后，GR Restarter根据新的路由转发信息更新路由表和转发表，删除失效的路由，完成IS-IS协议收敛。

3. IS-IS NSR

NSR（Nonstop Routing，不间断路由）是为了解决GR特性的一些缺陷和使用场景限制而实现的一种新特性。NSR将IS-IS链路状态信息从Master设备备份到Slave设备，在Master/Slave切换时不需要周边设备配合就可以完成链路状态的恢复和路由的重新生成。

4. 管理标记

管理标记简化了对路由信息的管理，该标记用来携带关于IP地址前缀的管理信息，利用它可以控制对各种外部路由协议的引入，以及承载BGP的标准或扩展团体属性。

5. LSP分片扩展

IS-IS通过泛洪LSP来宣告链路状态信息，由于一个LSP能够承载的信息量有限，IS-IS将对LSP进行分片。每个LSP分片由产生该LSP的结点或伪结点的SystemID、PseudnodeID（普通LSP为0，Pseudonode LSP为非0）、LSPNumber（LSP分片号）组合起来唯一标识，由于LSPNumber字段的长度是1字节，因此，IS-IS路由器可产生的分片数最大为256，限制了IS-IS路由器可以发布的链路信息量。

IS-IS LSP分片扩展特性可使IS-IS路由器生成更多的LSP分片，通过为路由器配置附加的虚拟系统、每个虚拟系统都可生成256个LSP分片（最多可配置50个虚拟系统），使得IS-IS路由器可最多生成13056个LSP分片。

(1) 常用术语

l 初始系统（Originating System）：实际运行IS-IS协议的路由器。使能IS-IS LSP分片扩展功能后，可以为路由器配置附加的虚拟系统，“Originating System”指的是原来运行的、“真正”的IS-IS进程。

l 系统ID（System ID）：初始系统的系统ID。

l 附加系统ID（Additional System ID）：使能IS-IS LSP分片扩展功能后，为IS-IS路由器配置的附加的虚拟SystemID。每个附加系统ID都可以生成256个额外扩展的LSP分片。附加系统ID和系统ID一样，在整个路由域中必须唯一。

l 虚拟系统（Virtual System）：由附加系统ID标识的系统，用来生成扩展LSP分片。

l 原始LSP（Original LSP）：由初始系统生成的LSP，在其LSP ID中指定的System ID为初始系统的系统ID。

l 扩展LSP（Extended LSP）：由虚拟系统生成的LSP，在其LSP ID中指定的System ID为附加系统ID。

通过配置附加系统ID，IS-IS路由器可以在扩展分片LSP中宣告更多的链路状态信息，可以把虚拟系统看作一个虚拟的路由器，扩展分片LSP就是由附加系统ID标识的虚拟系统发布的。

(2) 操作模式

IS-IS路由器运行LSP分片扩展特性的操作模式有两种：

l Mode-1：当网络中的部分路由器不支持LSP分片扩展特性时，使用工作模式1。在该模式下，初始系统与每个虚拟系统都建立邻居关系，且初始系统到虚拟系统的链路开销为0，因此，虚拟系统就好像网络中与初始系统相连的路由器，但只能通过初始系统才能到达虚拟系统，因此，不支持分片扩展特性的IS-IS路由器收到扩展分片LSP时无需做任何修改也能够正常工作，但是对通过虚拟系统发布的扩展LSP分片中的链路状态信息有所限制。

l Mode-2：当网络中所有路由器都支持LSP分片扩展特性时，推荐使用工作模式2。在该模式下，网络中所有IS-IS路由器都知道虚拟系统生成的LSP属于的初始系统，对虚拟系统发布的LSP扩展分片的链路状态信息没有限制。

LSP分片扩展特性的操作模式基于区域和路由层次配置，mode-1可以向前兼容，支持分片扩展特性的路由器能够与不支持分片扩展特性的路由器协同工作；mode-2要求处在同一区域且Level相同的路由器都支持分片扩展特性。

6. 动态主机名交换机制

动态主机名交换机制是为了方便对IS-IS网络的维护和管理而引入的，它为IS-IS路由器提供了一种从主机名到System ID映射的服务。这个动态的主机名信息在LSP中以一个动态主机名CLV的形式发布。

这个机制同时还提供将主机名与广播网中的DIS相关联的服务，并将此信息通过伪节点的LSP以动态主机名CLV的形式发布出去。

在维护和管理中，使用主机名比使用System ID会更直观，也更容易记忆。配置此功能后，当在路由器上使用 display 命令显示IS-IS相关信息时，看到的是路由器的主机名，而不再是System ID。

7. IS-IS与BFD联动

关于BFD的介绍和基本功能配置，请参见“可靠性配置指导”中的“BFD”。

BFD（Bidirectional Forwarding Detection，双向转发检测）能够为IS-IS邻居之间的链路提供快速检测功能。当邻居之间的链路出现故障时，加快IS-IS协议的收敛速度。

1.1.6 协议规范

与IS-IS相关的协议规范有：

l ISO 10589：ISO IS-IS Routing Protocol

l ISO 9542：ES-IS Routing Protocol

l ISO 8348：Ad2 Network Services Access Points

l RFC 1195：Use of OSI IS-IS for Routing in TCP/IP and Dual Environments

l RFC 2763：Dynamic Hostname Exchange Mechanism for IS-IS

l RFC 2966：Domain-wide Prefix Distribution with Two-Level IS-IS

l RFC 3277：IS-IS Transient Blackhole Avoidance

l RFC 3358：Optional Checksums in ISIS

l RFC 3373：Three-Way Handshake for IS-IS Point-to-Point Adjacencies

l RFC 3567：Intermediate System to Intermediate System (IS-IS) Cryptographic Authentication

l RFC 3719：Recommendations for Interoperable Networks using IS-IS

l RFC 3786：Extending the Number of IS-IS LSP Fragments Beyond the 256 Limit

l RFC 3787：Recommendations for Interoperable IP Networks using IS-IS

l RFC 3784：IS-IS extensions for Traffic Engineering

l RFC 3847：Restart signaling for IS-IS


1.2 IS-IS配置任务简介

表1-3 IS-IS配置任务简介

配置任务 |  | 说明 | 详细配置
配置IS-IS基本功能 | 使能IS-IS功能 | 必选 | 1.3.2
 | 配置路由器类型和接口的链路邻接关系类型 | 可选 | 1.3.3
 | 配置接口网络类型 | 可选 | 1.3.4
配置IS-IS路由信息控制 | 配置IS-IS链路度量值 | 可选 | 1.4.2
 | 配置IS-IS路由优先级 | 可选 | 1.4.3
 | 配置IS-IS最大等价路由条数 | 可选 | 1.4.4
 | 配置IS-IS路由聚合 | 可选 | 1.4.5
 | 配置IS-IS发布缺省路由 | 可选 | 1.4.6
 | 配置IS-IS引入外部路由 | 可选 | 1.4.7
 | 配置IS-IS路由过滤 | 可选 | 1.4.8
 | 配置IS-IS路由渗透 | 可选 | 1.4.9
调整和优化IS-IS网络 | 配置Hello/CSNP报文发送时间间隔 | 可选 | 1.5.2
 | 配置Hello报文失效数目 | 可选 | 1.5.3
 | 配置DIS优先级 | 可选 | 1.5.4
 | 禁止接口发送和接收IS-IS报文 | 可选 | 1.5.5
 | 配置接口发送小型Hello报文 | 可选 | 1.5.6
 | 配置LSP参数 | 可选 | 1.5.7
 | 配置SPF参数 | 可选 | 1.5.8
 | 配置优先级参数 | 可选 | 1.5.9
 | 配置LSDB过载标志位 | 可选 | 1.5.10
 | 配置IS-IS主机名映射 | 可选 | 1.5.11
 | 配置邻接状态输出 | 可选 | 1.5.12
提高IS-IS网络的安全性 | 配置邻居关系验证 | 可选 | 1.6.2
 | 配置区域验证 | 可选 | 1.6.3
 | 配置路由域验证 | 可选 | 1.6.4
配置IS-IS GR |  | 可选 | 1.7
配置IS-IS NSR |  | 可选 | 1.8
配置IS-IS快速重路由 |  | 可选 | 1.9
使能IS-IS的Trap功能 |  | 可选 | 1.10
配置IS-IS和MIB绑定 |  | 可选 | 1.11
配置IS-IS与BFD联动 |  | 可选 | 1.12


1.3 配置IS-IS基本功能

1.3.1 配置准备

在配置IS-IS基本功能之前，需完成以下任务：

l 配置链路层协议

l 配置接口的网络层地址，使相邻节点网络层可达

1.3.2 使能IS-IS功能

表1-4 使能IS-IS功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
启动IS-IS路由进程，进入IS-IS视图 | isis [ process-id ] [ vpn-instance vpn-instance-name ] | 必选 缺省情况下，系统没有运行任何IS-IS进程
配置网络实体名称 | network-entity net | 必选 缺省情况下，没有配置NET
退回至系统视图 | quit | -
进入接口视图 | interface interface-type interface-number | -
配置指定接口上使能IS-IS路由进程 | isis enable [ process-id ] | 必选 缺省情况下，IS-IS功能在接口上处于关闭状态，且没有任何IS-IS进程与其关联

1.3.3 配置路由器类型和接口的链路邻接关系类型

建议用户在配置IS-IS时配置路由器类型：

l 如果只有一个区域，建议用户将所有路由器设置为Level-1或者Level-2，因为没有必要让所有路由器同时维护两个完全相同的LSDB。

l 在IP网络中使用时，建议将所有的路由器都设置为Level-2，这样有利于以后的扩展。

当路由器类型是Level-1（Level-2）时，接口的链路邻接类型只能为Level-1（Level-2），当路由器类型是Level-1-2时，接口的链路邻接类型缺省为Level-1-2，当路由器只需要与对端建立Level-1（Level-2）的邻接关系时，可以将接口的链路邻接类型配置为Level-1（Level-2）来限制接口上所能建立的邻接关系，如Level-1的接口只能建立Level-1的邻接关系，Level-2的接口只能建立Level-2的邻接关系，让接口只发送和接收Level-1（Level-2）类型的Hello报文，既减少了路由器的处理时间又节省了带宽。

表1-5 配置路由器类型和接口的链路邻接关系类型

操作 | 命令 | 说明
进入系统视图 | system-view | -
启动IS-IS路由进程，进入IS-IS视图 | isis [ process-id ] [ vpn-instance vpn-instance-name ] | -
配置路由器类型 | is-level { level-1 | level-1-2 | level-2 } | 可选 缺省情况下，IS-IS路由器的类型为 level-1-2
退回至系统视图 | quit | -
进入接口视图 | interface interface-type interface-number | -
配置接口的链路邻接关系类型 | isis circuit-level [ level-1 | level-1-2 | level-2 ] | 可选 缺省情况下，接口既可以建立Level-1的邻接关系，也可以建立Level-2的邻接关系

1.3.4 配置接口网络类型

接口网络类型不同，其工作机制也略微不同，如：当网络类型为广播网时，需要选举DIS、通过泛洪CSNP报文来实现LSDB同步；当网络类型为P2P时，不需要选举DIS，LSDB同步机制也不同。

当只有两台路由器接入到同一个广播网时，通过将接口网络类型配置为P2P可以使IS-IS按照P2P而不是广播网的工作机制运行，避免DIS选举以及CSNP的泛洪，即可以节省网络带宽，又可以加快网络的收敛速度。

表1-6 配置接口网络类型

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
配置接口的网络类型为P2P | isis circuit-type p2p | 可选 缺省情况下，路由器接口网络类型根据物理接口决定，交换机VLAN接口网络类型为Broadcast

仅当接口的网络类型为广播网，且只有两台路由器接入该广播网时才需要进行该项配置，并且两台路由器都要进行此项配置。


1.4 配置IS-IS路由信息控制

1.4.1 配置准备

在配置IS-IS路由信息控制之前，需完成以下任务：

l 配置接口的网络层地址，使相邻节点网络层可达

l 使能IS-IS功能

1.4.2 配置IS-IS链路度量值

IS-IS有三种方式来配置接口的链路度量值，按照选择顺序依次为：

l 在接口视图下为指定接口配置的链路度量值。

l 在系统视图下全局配置的链路度量值，该配置将对该IS-IS进程关联的接口同时生效。

l 自动计算度量值：将根据带宽参考值自动计算接口的链路度量值。当开销值的类型为 wide 或 wide-compatible 时，可以根据公式“开销=（参考值÷带宽）×10”计算接口的链路度量值。当开销值类型为其他类型时，具体情况如下：接口带宽Ÿ10Mbps时，值为60；接口带宽Ÿ100Mbps时，值为50；接口带宽Ÿ155Mbps时，值为40；接口带宽Ÿ622Mbps时，值为30；接口带宽Ÿ2500Mbps时，值为20；接口带宽>2500Mbps时，值为10。

如果没有采用上述三种方式中的任一种进行度量值的配置，接口的链路度量值将取系统设置的缺省值10。

1. 接口配置IS-IS链路度量值

表1-7 接口配置IS-IS链路度量值

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入IS-IS视图 | isis [ process-id ] [ vpn-instance vpn-instance-name ] | -
配置IS-IS开销值的类型 | cost-style { narrow | wide | wide-compatible | { compatible | narrow-compatible } [ relax-spf-limit ] } | 可选 缺省情况下，IS-IS开销值的类型为narrow
退回至系统视图 | quit | -
进入接口视图 | interface interface-type interface-number | -
配置IS-IS接口的链路度量值 | isis cost value [ level-1 | level-2 ] | 必选 缺省情况下，没有配置IS-IS接口的链路度量值

2. 全局配置IS-IS链路度量值

表1-8 全局配置IS-IS链路度量值

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入IS-IS视图 | isis [ process-id ] [ vpn-instance vpn-instance-name ] | -
配置IS-IS开销值的类型 | cost-style { narrow | wide | wide-compatible | { compatible | narrow-compatible } [ relax-spf-limit ] } | 可选 缺省情况下，IS-IS开销值的类型为narrow
全局配置IS-IS的链路度量值 | circuit-cost value [ level-1 | level-2 ] | 必选 缺省情况下，没有全局配置IS-IS的链路度量值

3. 配置IS-IS自动计算链路度量值

表1-9 配置IS-IS自动计算链路度量值

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入IS-IS视图 | isis [ process-id ] [ vpn-instance vpn-instance-name ] | -
配置IS-IS开销值的类型 | cost-style { wide | wide-compatible } | 必选 缺省情况下，IS-IS开销值的类型为narrow
使能自动计算接口链路度量值功能 | auto-cost enable | 必选 缺省情况下，自动计算接口链路度量值功能处于关闭状态
配置IS-IS自动计算链路度量值时依据的带宽参考值 | bandwidth-reference value | 可选 缺省情况下，带宽参考值为100Mbps

1.4.3 配置IS-IS路由优先级

一台路由器可同时运行多个路由协议，当多个路由协议都发现到同一目的地的路由时，将选用高优先级路由协议所发现的路由。以下配置用来为IS-IS路由设置优先级，使用路由策略可以为特定的路由设置特定的优先级，路由策略的相关知识请参见“三层技术-IP路由配置指导”中的“路由策略”。

表1-10 配置IS-IS路由优先级

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入IS-IS视图 | isis [ process-id ] [ vpn-instance vpn-instance-name ] | -
配置IS-IS路由优先级 | preference { route-policy route-policy-name | preference } * | 必选 缺省情况下，IS-IS路由优先级为15

1.4.4 配置IS-IS最大等价路由条数

如果到一个目的地有几条开销相同的路径，可以通过等价路由负载分担来提高链路利用率。该配置用以设置IS-IS协议的最大等价路由条数。

表1-11 配置IS-IS最大等价路由条数

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入IS-IS视图 | isis [ process-id ] [ vpn-instance vpn-instance-name ] | -
配置在负载分担方式下IS-IS最大等价路由条数 | maximum load-balancing number | 必选 缺省值为8

1.4.5 配置IS-IS路由聚合

通过配置路由聚合，可以减小路由表规模，还可以减少本路由器生成的LSP报文大小和LSDB的规模。其中，被聚合的路由可以是IS-IS协议发现的路由，也可以是引入的外部路由。

表1-12 配置IS-IS路由聚合

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入IS-IS视图 | isis [ process-id ] [ vpn-instance vpn-instance-name ] | -
配置聚合路由 | summary ip-address { mask | mask-length } [ avoid-feedback | generate_null0_route | tag tag | [ level-1 | level-1-2 | level-2 ] ] * | 必选 缺省情况下，没有对路由进行聚合

l 聚合后路由的开销值取所有被聚合路由中最小的开销值。

l 路由器只对本地生成的LSP中的路由进行聚合。

1.4.6 配置IS-IS发布缺省路由

对于运行IS-IS的路由器来说，无法引入缺省路由，因此也无法通过将目的地为0.0.0.0/0的路径信息（即缺省路由）通过LSP发布给其它路由器，可以通过配置发布一条缺省路由，将目的地为0.0.0.0/0的路径信息通过LSP发布出去，其它同级别的路由器中将在自己的路由表中新增一条缺省路由。

表1-13 配置IS-IS发布缺省路由

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入IS-IS视图 | isis [ process-id ] [ vpn-instance vpn-instance-name ] | -
配置IS-IS发布缺省路由 | default-route-advertise [ route-policy route-policy-name | [ level-1 | level-1-2 | level-2 ] ] * | 必选 缺省情况下，此功能关闭

该配置产生的缺省路由只被发布到同级别的路由器。通过使用路由策略，可以强制IS-IS只在路由表中有匹配的路由项时才生成缺省路由。

1.4.7 配置IS-IS引入外部路由

IS-IS将其它路由协议发现的路由当作外部路由处理。在引入其它协议路由时，可指定引入路由的缺省开销。还可以通过配置对引入路由进行过滤。

在实际组网环境中，每台路由器的性能即处理能力不同，如果在处理能力强的高端设备上引入大量外部路由，那么可能会对网络上其它低端设备的性能造成较大的冲击，网络管理员可以通过配置支持的最大引入路由条数，限制引入外部路由的条数，从而最终限制发布路由的数量。

表1-14 配置IS-IS引入外部路由

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入IS-IS视图 | isis [ process-id ] [ vpn-instance vpn-instance-name ] | -
从其它路由协议或其它IS-IS进程引入路由信息 | import-route protocol [ process-id | all-processes | allow-ibgp ] [ cost cost | cost-type { external | internal } | [ level-1 | level-1-2 | level-2 ] | route-policy route-policy-name | tag tag ] * | 必选 缺省情况下，IS-IS不引入其它协议的路由信息 如果 import-route 命令中不指定引入的级别，则默认为引入路由到Level-2路由表中
配置引入Level1/Level2的IPv4路由最大条数 | import-route limit number | 可选 本命令的缺省值与设备的型号有关，请以设备的实际情况为准

只能引入路由表中状态为active的路由，是否为active状态可以通过 display ip routing-table protocol命令来查看。

1.4.8 配置IS-IS路由过滤

路由过滤就是通过对ACL、IP地址前缀列表或路由策略等规则的引用对路由信息的生成进行更加严格的控制，包括过滤通过接收到的LSP计算出来的路由信息和过滤从其它路由协议引入的路由信息。

1. 过滤通过接收到的LSP计算出来的路由信息

运行IS-IS的路由器会把从邻居收到的LSP保存到自己维护的链路状态数据库中，并使用SPF算法计算出以自己为根的最短路径树，并把计算好的路由信息加入到IS-IS路由表中。

通过ACL、IP地址前缀列表或路由策略可以对计算出来的将要加入到IS-IS路由表中的路由进行过滤，满足条件则加入到IS-IS路由表中，否则将不能加入到IS-IS路由表中。

表1-15 过滤通过接收到的LSP计算出来的路由信息

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入IS-IS视图 | isis [ process-id ] [ vpn-instance vpn-instance-name ] | -
过滤通过接收到的LSP计算出来的路由信息 | filter-policy { acl-number | ip-prefix ip-prefix-name | route-policy route-policy-name } import | 必选 缺省情况下，IS-IS不对通过接收到的LSP 计算出来的路由信息进行过滤

2. 过滤引入路由信息

IS-IS可以从其它路由协议或其它IS-IS进程引入路由信息，把它直接加入到IS-IS的路由表中并通过LSP发布出去。

通过ACL、IP地址前缀列表或路由策略可以对引入的路由信息进行过滤，满足条件加入到IS-IS路由表中，否则将不能加入到IS-IS路由表中，没有加入IS-IS路由表的路由将不会通过LSP发布出去。

表1-16 过滤引入路由信息

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入IS-IS视图 | isis [ process-id ] [ vpn-instance vpn-instance-name ] | -
过滤引入路由信息 | filter-policy { acl-number | ip-prefix ip-prefix-name | route-policy route-policy-name } export [ protocol [ process-id ] ] | 必选 缺省情况下，IS-IS不对引入的路由信息进行过滤

1.4.9 配置IS-IS路由渗透

通过IS-IS路由渗透功能，Level-1-2路由器可以将它所知道的其它Level-1区域路由信息和Level-2区域路由信息发布到Level-1路由器。

表1-17 配置IS-IS路由渗透

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入IS-IS视图 | isis [ process-id ] [ vpn-instance vpn-instance-name ] | -
使能IS-IS路由渗透 | import-route isis level-2 into level-1 [ filter-policy { acl-number | ip-prefix ip-prefix-name | route-policy route-policy-name } | tag tag ] * | 必选 缺省情况下，Level-2区域的路由信息不向Level-1区域发布

将Level-2区域的路由信息引入到Level-1区域时，需要注意：

l 如果指定了过滤策略，则只有通过过滤的路由才能够被发布到Level-1区域中。

l 如果要通过路由策略对从Level-2区域引入到Level-1区域的路由信息进行过滤，必须在 import-route isis level-2 into level-1 命令中同时指定要应用的路由策略，否则路由过滤将不会生效；其它路由策略，如在接收或引入路由时指定的路由策略对路由渗透无效。


1.5 调整和优化IS-IS网络

1.5.1 配置准备

在配置IS-IS调整和优化之前，需完成以下任务：

l 配置接口的网络层地址，使相邻节点网络层可达

l 使能IS-IS功能

1.5.2 配置Hello/CSNP报文发送时间间隔

表1-18 配置Hello/CSNP报文发送时间间隔

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
配置Hello报文的发送时间间隔 | isis timer hello seconds [ level-1 | level-2 ] | 可选 缺省情况下，Hello报文的发送时间间隔为10秒
配置DIS在广播网络上发送CSNP报文的时间间隔 | isis timer csnp seconds [ level-1 | level-2 ] | 可选 缺省情况下，CSNP报文的发送时间间隔为10秒

DIS发送Hello报文的时间间隔是 isis timer hello 设置的时间的1/3。

1.5.3 配置Hello报文失效数目

当路由器在抑制时间内没有收到来自邻居的Hello报文时将宣告邻居失效，抑制时间等于Hello报文失效数目与Hello报文发送时间间隔的乘积，通过设置Hello报文失效数目和Hello报文的发送时间间隔，可以调整抑制时间，即路由器要花多长时间能够监测到链路已经失效并重新进行路由计算。

表1-19 配置Hello报文失效数目

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
配置Hello报文失效数目 | isis timer holding-multiplier value [ level-1 | level-2 ] | 可选 缺省情况下，Hello报文失效数目为3

在广播链路上，Level-1和Level-2 Hello报文会分别发送，Hello报文失效数目需要分别设置；在点到点链路中，Level-1和Level-2的Hello报文是在同一个点到点Hello报文中发送，因此不需要指定Level-1或Level-2。

1.5.4 配置DIS优先级

在广播网络中，IS-IS需要在所有的路由器中选举一个路由器作为DIS。

对于IS-IS，Level-1和Level-2的DIS是分别选举的，可以为不同级别的DIS选举设置不同的优先级。优先级数值越高，被选中的可能性就越大。如果所有路由器的DIS优先级相同，将会选择MAC地址最大的路由器作为DIS。

表1-20 配置DIS优先级

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
配置接口的DIS优先级 | isis dis-priority value [ level-1 | level-2 ] | 可选 缺省情况下，接口的DIS优先级为64

1.5.5 禁止接口发送和接收IS-IS报文

通过禁止接口发送和接收IS-IS报文，禁止了该接口与相邻路由器建立邻居关系，但仍然可以把该接口直连网络的路由信息放在LSP中从其它接口宣告出去。由于不用建立邻居关系，可以节省带宽和路由器处理时间，同时，其它路由器也可以知道到达该接口直连网络的路由信息。

表1-21 禁止接口发送和接收IS-IS报文

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
禁止接口发送和接收IS-IS报文 | isis silent | 必选 缺省情况下，接口既发送也接收IS-IS报文

1.5.6 配置接口发送小型Hello报文

IS-IS协议报文直接封装在链路层报文头后面，无法实现协议报文在IP层的自动分片。因此，运行IS-IS的路由器与对端路由器建立邻居关系时，会发送达到链路MTU大小的Hello报文，双方进行MTU大小的通信协商，来保证建立邻居双方接口MTU的一致性，从而避免双方MTU大小不一致导致较小的PDU可以通过，但是较大的PDU无法通过。

当邻居路由器双方MTU大小一样的时候，为了避免发送过大的Hello报文浪费带宽，可以配置接口发送不加入填充CLV的小型Hello报文。

表1-22 配置接口发送小型Hello报文

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
配置接口发送不加入填充CLV的小型Hello报文 | isis small-hello | 必选 缺省情况下，接口发送标准Hello报文

1.5.7 配置LSP参数

1. 配置LSP时间参数

(1) 配置LSP最大生存时间

每一个LSP都包含一个最大生存时间，当LSP驻留在LSDB中时，随着时间的推移，每一个LSP的最大生存时间将逐渐递减至0，当LSP的最大生存时间为0时，IS-IS将删掉这个过期的LSP。用户可根据网络规模对LSP的最大生存时间进行调整。

表1-23 配置LSP最大生存时间

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入IS-IS视图 | isis [ process-id ] [ vpn-instance vpn-instance-name ] | -
配置LSP最大生存时间 | timer lsp-max-age seconds | 可选 缺省情况下，LSP最大生存时间为1200秒

(2) 配置LSP生成时间间隔

每一个LSP都有一个最大生存时间，每个LSP都会随着时间的推移而被逐渐老化，因此每个路由器必须定时刷新自己生成的LSP，以防止LSP的最大生存时间减小至0；并通过定时刷新LSP以使整个区域中的LSP保持同步。用户可对LSP的刷新周期进行配置，提高LSP的刷新频率可以加快网络收敛速度，但是将占用更多的带宽。

除了定时刷新可以重新生成LSP外，当网络拓扑发生变化，如邻居路由器up或down，接口Metric值、System ID或区域地址发生变化等，将触发路由器重新生成LSP。为了防止网络拓扑频繁变化而导致LSP频繁重新生成，用户可配置LSP生成时间间隔，以抑制网络变化频繁导致占用过多的带宽资源和路由器资源。

表1-24 配置LSP生成时间间隔

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入IS-IS视图 | isis [ process-id ] [ vpn-instance vpn-instance-name ] | -
配置LSP刷新周期 | timer lsp-refresh seconds | 可选 缺省情况下，LSP刷新周期为900秒
配置LSP生成时间间隔 | timer lsp-generation maximum-interval [ initial-interval [ second-wait-interval ] ] [ level-1 | level-2 ] | 可选 缺省情况下，LSP生成时间间隔为2秒

(3) 配置LSP发送时间间隔

当LSDB的内容发生变化时，IS-IS将把发生变化的LSP扩散出去，用户可以对LSP的最小发送时间间隔进行调节。

在点到点链路上，发送的LSP需要得到对端的应答，否则将在指定的时间间隔内重新发送该LSP，重传时间间隔决定了当一个LSP在P2P链路上丢失时它被重传需要等待的时间。

表1-25 配置LSP发送时间间隔

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
配置发送LSP的最小时间间隔以及一次可以最多发送的LSP的数目 | isis timer lsp time [ count count ] | 可选 缺省情况下，LSP的发送最小时间间隔为33毫秒，一次可以最多发送的LSP的数目为5
配置LSP在在点到点链路上的重传时间间隔 | isis timer retransmit seconds | 可选 缺省情况下，LSP报文在在点到点链路上的重传间隔为5秒

请合理配置LSP发送时间间隔，当存在大量IS-IS接口或大量路由时，会发送大量的LSP报文，导致LSP风暴的出现。

2. 配置LSP报文长度

IS-IS协议报文直接封装在链路层报文头后面，无法实现协议报文在IP层的自动分片。

为了不影响LSP的正常扩散，要求同一区域内所有IS-IS路由器生成LSP报文的最大长度不能超过该区域内所有路由器IS-IS接口MTU的最小值。

如果IS-IS运行的区域中各IS-IS接口的MTU值不一致，建议用户对IS-IS生成LSP报文的最大长度进行配置，将同一区域内所有IS-IS路由器生成LSP报文的最大长度配置为该区域内所有路由器IS-IS接口MTU的最小值。如果不进行配置，系统将根据当前设备IS-IS接口最小MTU值的变化而自动重启IS-IS进程动态调整生成LSP报文的最大长度，会在一定程度上影响业务的正常运行。

表1-26 配置LSP报文长度

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入IS-IS视图 | isis [ process-id ] [ vpn-instance vpn-instance-name ] | -
配置生成的Level-1 LSP和Level-2 LSP的最大长度 | lsp-length originate size [ level-1 | level-2 ] | 可选 缺省情况下，生成的Level-1 LSP和Level-2 LSP的最大长度为1497字节
配置可以接收LSP的最大长度 | lsp-length receive size | 可选 缺省情况下，接收的LSP报文的最大长度为1497字节

3. 配置LSP快速扩散功能

通过使能LSP快速扩散功能，当LSP发生变化而导致SPF重新计算时，在SPF重新计算前，把导致SPF重新计算的LSP快速扩散出去，将大大缩短路由器之间由于进行LSP同步而导致LSDB不一致的时间，提高全网的快速收敛性能。

表1-27 配置LSP快速扩散功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入IS-IS视图 | isis [ process-id ] [ vpn-instance vpn-instance-name ] | -
配置LSP快速扩散功能 | flash-flood [ flood-count flooding-count | max-timer-interval flooding-interval | [ level-1 | level-2 ] ] * | 必选 缺省情况下，禁止LSP快速扩散功能

4. 配置LSP分片扩展功能

表1-28 配置LSP分片扩展功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入IS-IS视图 | isis [ process-id ] [ vpn-instance vpn-instance-name ] | -
使能IS-IS进程的LSP分片扩展功能，并配置LSP分片扩展特性的工作模式 | lsp-fragments-extend [ [ level-1 | level-1-2 | level-2 ] | [ mode-1 | mode-2 ] ] * | 必选 缺省情况下，LSP分片扩展功能处于关闭状态
配置IS-IS进程的虚拟系统ID | virtual-system virtual-system-id | 必选 缺省情况下，没有配置IS-IS进程的虚拟系统ID

使能LSP分片扩展功能时需要注意：

l IS-IS进程使能分片扩展功能后，使能该IS-IS进程的所有接口的MTU不能小于512，否则LSP分片扩展功能将不会生效。

l 为了使路由器生成扩展LSP分片，应至少配置一个虚拟System ID。一个IS-IS进程最多可配置50个虚拟System ID。

1.5.8 配置SPF参数

IS-IS协议中，当LSDB发生变化时需要进行路由计算。频繁的路由计算会占用大量的系统资源，导致系统性能下降，而周期性地计算SPF可以在一定程度上提高效率，计算SPF的时间间隔可以由用户根据需要进行配置。

表1-29 配置SPF参数

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入IS-IS视图 | isis [ process-id ] [ vpn-instance vpn-instance-name ] | -
配置IS-IS路由计算时间间隔 | timer spf maximum-interval [ initial-interval [ second-wait-interval ] ] | 可选 缺省情况下，IS-IS路由计算的时间间隔为10秒

1.5.9 配置优先级参数

IS-IS协议中，当网络拓扑发生变化时，路由要重新收敛。路由收敛的优先级可以由用户根据需要进行配置。

表1-30 配置优先级参数

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入IS-IS视图 | isis [ process-id ] [ vpn-instance vpn-instance-name ] | -
配置指定IS-IS路由为高优先级 | priority high { ip-prefix prefix-name | tag tag-value } | 可选 缺省情况下，没有配置IS-IS路由为高优先级，即不能快速收敛 IS-IS主机路由的收敛优先级低于高优先级，而高于其他IS-IS路由的收敛优先级

1.5.10 配置LSDB过载标志位

通过配置LSDB过载标志位，IS-IS将在其发送的LSP报文中把OL位置位，以通知其它路由器当前路由器发生了问题，无法正确的执行路由选择和报文转发。

当运行IS-IS的路由器因为内存不足或其它原因无法记录完整的LSDB时，将会导致区域路由的计算错误，在故障排除过程中，通过给怀疑有问题的路由器设置过载标志位，可以将其从IS-IS网络中暂时隔离，便于进行故障定位。

表1-31 配置LSDB过载标志位

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入IS-IS视图 | isis [ process-id ] [ vpn-instance vpn-instance-name ] | -
设置过载标志位 | set-overload [ on-startup [ [ start-from-nbr system-id [ timeout1 [ nbr-timeout ] ] ] | timeout2 ] [ allow { external | interlevel } * ] | 必选 缺省情况下，不设置过载标志位

1.5.11 配置IS-IS主机名映射

IS-IS用System ID来在区域内唯一标识主机或路由器，System ID长度固定为6字节。当网络管理员检查IS-IS邻居关系的状态、IS-IS路由表以及LSDB中的内容时，点分十进制表示的System ID以及LSP标识符不够直观，查看也不方便。

主机名映射提供了一种将System ID映射到主机名的服务，运行IS-IS的路由器维护一个主机名到System ID的映射关系表，在维护和管理以及网络故障诊断时，使用主机名比使用System ID会更直观，也更容易记忆。

可以通过静态配置和动态生成两种方式生成和维护此关系映射表，需要注意的是：

l 只有使能动态主机名映射功能后，在路由器上使用 display isis lsdb 命令显示IS-IS链路状态数据库时，才可以看到路由器的主机名而不是System ID。

l 倘若网络中的一台路由器使能了动态主机名映射功能且在当前路由器也通过静态方式为那台路由器配置了主机名，动态配置的主机名将覆盖当前路由器为其静态配置的主机名称。

1. 配置IS-IS静态主机名映射

网络管理员为远端IS手工配置System ID与主机名称的映射关系。

表1-32 配置IS-IS静态主机名映射

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入IS-IS视图 | isis [ process-id ] [ vpn-instance vpn-instance-name ] | -
为远端IS配置System ID与主机名称的映射关系 | is-name map sys-id map-sys-name | 必选 每个System ID只能对应一个主机名称

2. 配置IS-IS动态主机名映射

静态配置关系映射表要求网络中的每一台路由器为其它路由器配置System ID和主机名的映射关系，当网络中路由器数目增多时，网络中每新增一台路由器或修改某台路由器的主机名映射关系，其它路由器都要做相应配置，增加了维护工作量。

使能动态主机名映射功能后，IS-IS网络中的每台路由器只需要在本机上配置自己的主机名称即可，配置的主机名称将通过动态主机名CLV发布出去，最后IS-IS网络中使能动态主机名映射功能的路由器都将收集到其它路由器System ID与主机名称的映射关系并生成映射表。

同时还可以为广播网中的DIS配置局域网名称来代表这个广播网中的伪节点，便于网络管理员查看LSDB内容时判断LSP是由哪个DIS产生的。

表1-33 配置IS-IS动态主机名映射

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入IS-IS视图 | isis [ process-id ] [ vpn-instance vpn-instance-name ] | -
使能动态主机名映射功能并为当前路由器配置主机名称 | is-name sys-name | 必选 缺省情况下，动态主机名映射功能处于关闭状态且没有为当前路由器配置主机名称
退回至系统视图 | quit | -
进入接口视图 | interface interface-type interface-number | -
配置本地局域网名称 | isis dis-name symbolic-name | 可选 缺省情况下，没有配置本地局域网名称 该命令只有在使能了动态主机名进程的路由器上有效。该命令在点到点链路的接口上无效

1.5.12 配置邻接状态输出

表1-34 配置邻接状态输出

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入IS-IS视图 | isis [ process-id ] [ vpn-instance vpn-instance-name ] | -
打开邻接状态输出开关 | log-peer-change | 必选 缺省情况下，邻接状态输出开关处于打开状态

当打开邻接状态输出开关后，IS-IS邻接状态的变化会输出到配置终端上，直至邻接状态输出开关被关闭。


1.6 提高IS-IS网络的安全性

在安全性要求较高的网络中，可以通过配置IS-IS验证来提高IS-IS网络的安全性。IS-IS验证特性分为邻居关系的验证和区域或路由域的验证。

1.6.1 配置准备

在配置IS-IS验证功能之前，需完成以下任务：

l 配置接口的网络层地址，使相邻节点网络层可达

l 使能IS-IS功能

1.6.2 配置邻居关系验证

配置邻居关系验证后，验证密码将会按照设定的方式封装到Hello报文中，并对接收到的Hello报文进行验证密码的检查，通过检查才会形成邻居关系，否则将不会形成邻居关系，用以确认邻居的正确性和有效性，防止与无法信任的路由器形成邻居。

两台路由器要形成邻居关系必须配置相同的验证方式和验证密码。

表1-35 配置邻居关系验证

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
配置邻居关系验证方式和验证密码 | isis authentication-mode { md5 | simple } password [ level-1 | level-2 ] [ ip | osi ] | 必选 缺省情况下，接口没有配置邻居关系验证，既不会验证收到的Hello报文，也不会把验证密码插入到Hello报文中

l 必须先使用 isis enable 命令使能该接口才能进行参数 level-1 和 level-2 的配置。

l 如果没有指定 level-1 或 level-2 参数，将同时为 level-1 和 level-2 的Hello报文配置验证方式及验证密码。

l 如果没有指定 ip 或 osi 参数，将检查Hello报文中OSI的相应字段的配置内容。

1.6.3 配置区域验证

通过配置区域验证，可以防止将从不可信任的路由器学习到的路由信息加入到本地Level-1的LSDB中。

配置区域验证后，验证密码将会按照设定的方式封装到Level-1报文（LSP、CSNP、PSNP）中，并对收到的Level-1报文进行验证密码的检查。

同一区域内的路由器必须配置相同的验证方式和验证密码。

表1-36 配置区域验证

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入IS-IS视图 | isis [ process-id ] [ vpn-instance vpn-instance-name ] | -
配置区域验证方式和验证密码 | area-authentication-mode { md5 | simple } password [ ip | osi ] | 必选 缺省情况下，系统没有配置区域验证，既不会验证收到的Level-1报文，也不会把验证密码插入到Level-1报文中

1.6.4 配置路由域验证

通过配置路由域验证，可以防止将不可信的路由信息注入当前路由域。

配置路由域验证后，验证密码将会按照设定的方式封装到Level-2报文（LSP、CSNP、PSNP）中，并对收到的Level-2报文进行验证密码的检查。

所有骨干层（Level-2）路由器必须配置相同的验证方式和验证密码。

表1-37 配置路由域验证

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入IS-IS视图 | isis [ process-id ] [ vpn-instance vpn-instance-name ] | -
配置路由域验证方式和验证密码 | domain-authentication-mode { md5 | simple } password [ ip | osi ] | 必选 缺省情况下，系统没有配置路由域验证，既不会验证收到的Level-2报文，也不会把验证密码插入到Level-2报文中


1.7 配置IS-IS GR

IS-IS GR特性与IS-IS NSR特性互斥，不能同时配置。

在普通的路由协议重启的情况下，路由器与其它邻居的邻接关系被拆除。此时会引起网络暂时的中断。

基于IS-IS的GR可以解决这个问题：重启路由器将重启状态通知给邻居，允许邻居重新建立邻接关系而不终止连接。

基于IS-IS的GR特性有以下几个特点：

l 发生了协议重启时，应用了GR特性的设备可重新向邻居发送连接请求，而不会终止邻接关系。

l 在路由协议重启完毕后，邻居协助当前设备完成路由信息同步，在尽量短的时间内使该设备的各种路由信息恢复到重启前的状态。通过GR，在整个协议重启过程中，网络路由和转发保持高度稳定。

l 对于第一次启动的路由器，在LSP报文中设置OL（过载标记位）直到数据库同步，通知其它路由器当前路由器发生了问题，无法正确的执行路由选择和报文转发。

分别在作为GR Restarter和GR Helper的设备上进行以下配置。

表1-38 配置IS-IS GR

操作 | 命令 | 说明
进入系统视图 | system-view | -
使能IS-IS路由进程，进入IS-IS视图 | isis [ process-id ] [ vpn-instance vpn-instance-name ] | 必选 缺省情况下，系统没有运行IS-IS
使能IS-IS协议的GR能力 | graceful-restart | 必选 缺省情况下，IS-IS协议的GR能力处于关闭状态
配置IS-IS协议的GR重启间隔时间 | graceful-restart interval timer | 可选 缺省情况下，IS-IS协议的GR重启间隔时间为300秒 重启间隔时间用来指定路由器的重启时间。重启间隔时间在IS-IS的Hello PDU中设置为保持时间，这样在该路由器重启的时间内邻居不会断掉与其的邻接关系
配置重启时抑制SA位 | graceful-restart suppress-sa | 可选 缺省情况下，重启时不抑制SA位 配置重启时抑制SA（Suppress-Advertisement）位，即在重启路由器的Hello PDU中设置抑制发布SA位，重启路由器的邻居将继续发布该邻接关系


1.8 配置IS-IS NSR

IS-IS NSR特性与IS-IS GR特性互斥，不能同时配置。

GR特性存在一些缺陷，如Master/Slave切换期间需要周边设备配合才能完成路由信息的恢复，在网络应用中有一定的限制；而且在Master/Slave切换后新Master设备上的IS-IS进程重新学习所有的路由，如果在Master/Slave切换期间拓扑发生变化，删除的路由不能及时更新，容易造成黑洞路由。

NSR就是为了解决GR特性的一些缺陷和使用场景限制而实现的一种新特性。NSR将IS-IS链路状态信息从Master设备备份到Slave设备，在发生Master/Slave切换时不需要周边设备配合就可以完成链路状态的恢复和路由的重新生成。

表1-39 配置IS-IS NSR

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入IS-IS视图 | isis [ process-id ] [ vpn-instance vpn-instance-name ] | -
使能IS-IS协议的NSR功能 | non-stop-routing | 必选 缺省情况下，IS-IS协议的NSR功能处于关闭状态
配置NSR的时间间隔 | non-stop-routing interval interval-value | 可选 缺省情况下，NSR的时间间隔为0秒，即没有配置NSR的时间间隔


1.9 配置IS-IS快速重路由

l IS-IS支持快速重路由功能不能与IS-IS支持BFD监测同时使用，否则可能导致快速重路由功能失效。

l IS-IS支持快速重路由自动计算备份下一跳功能与IS-IS TE特性互斥。

1. 简介

当IS-IS网络中的链路或某台路由器发生故障时，需要通过故障链路或故障路由器传输才能到达目的地的报文将会丢失或产生路由环路，数据流量将会中断，直到IS-IS根据新的拓扑网络路由收敛完毕后，被中断的流量才能恢复正常的传输。

为了尽可能缩短网络故障导致的流量中断时间，网络管理员可以配置IS-IS快速重路由功能。

图1-14 IS-IS快速重路由功能示意图

如 图1-14 所示，通过在Router B上使能快速重路由功能，IS-IS将为路由计算或指定备份下一跳，当Router B探测到网络故障时，IS-IS会使用事先获取的备份下一跳替换失效下一跳，通过备份下一跳来指导报文的转发，从而大大缩短了流量中断时间。在使用备份下一跳指导报文转发的同时，IS-IS会根据变化后的网络拓扑重新计算最短路径，网络收敛完毕后，使用新计算出来的最优路由来指导报文转发。

网络管理员可以配置给所有IS-IS路由自动计算备份下一跳，也可以在路由策略中指定备份下一跳，为符合过滤条件的路由指定备份下一跳。

2. 配置准备

在配置IS-IS快速重路由特性之前，需完成以下任务：

l 配置接口的网络层地址，使相邻节点网络层可达

l 使能IS-IS功能

3. 配置IS-IS支持快速重路由功能（自动计算备份下一跳）

表1-40 配置IS-IS支持快速重路由功能（自动计算备份下一跳）

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置BFD Echo报文源地址 | bfd echo-source-ip ip-address | 必选 缺省情况下，没有配置BFD Echo报文源地址
进入IS-IS视图 | isis [ process-id ] [ vpn-instance vpn-instance-name ] | -
配置IS-IS支持快速重路由功能（自动计算备份下一跳） | fast-reroute auto | 必选 缺省情况下，IS-IS支持快速重路由功能处于关闭状态

4. 配置IS-IS支持快速重路由功能（通过路由策略指定备份下一跳）

网络管理员可以通过 apply fast-reroute backup-interface 命令在路由策略中指定备份下一跳，为符合过滤条件的路由指定备份下一跳，关于 apply fast-reroute backup-interface 命令以及路由策略的相关配置，请参见“三层技术-IP路由配置指导”中的“路由策略”。

表1-41 配置IS-IS支持快速重路由功能（通过路由策略指定备份下一跳）

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置BFD Echo报文源地址 | bfd echo-source-ip ip-address | 必选 缺省情况下，没有配置BFD Echo报文源地址
进入IS-IS视图 | isis [ process-id ] [ vpn-instance vpn-instance-name ] | -
配置IS-IS支持快速重路由功能（通过路由策略指定备份下一跳） | fast-reroute route-policy route-policy-name | 必选 缺省情况下，IS-IS支持快速重路由功能处于关闭状态


1.10 使能IS-IS的TRAP功能

表1-42 使能IS-IS的TRAP功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入IS-IS视图 | isis [ process-id ] [ vpn-instance vpn-instance-name ] | -
使能IS-IS的TRAP功能 | is-snmp-traps enable | 必选 缺省情况下，IS-IS的TRAP功能处于使能状态


1.11 配置IS-IS和MIB绑定

表1-43 配置IS-IS和MIB绑定

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入IS-IS视图 | isis [ process-id ] [ vpn-instance vpn-instance-name ] | -
配置IS-IS和MIB绑定 | isis mib-binding process-id | 必选 缺省情况下，MIB操作绑定在IS-IS进程1上


1.12 配置IS-IS与BFD联动

表1-44 配置IS-IS与BFD联动

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
指定接口上使能IS-IS | isis enable [ process-id ] | 必选 缺省情况下，接口上不使能IS-IS路由进程
指定接口上使能BFD | isis bfd enable | 必选 缺省情况下，运行IS-IS的接口不使用BFD提供的链路检测功能


1.13 IS-IS显示和维护

在完成上述配置后，在任意视图下执行 display 命令可以显示配置后IS-IS的运行情况，用户可以通过查看显示信息验证配置的效果。

在用户视图下执行 reset 命令可以清除IS-IS的数据库信息，或者复位特定邻居的数据信息。

表1-45 IS-IS显示和维护

操作 | 命令
显示IS-IS的摘要信息 | display isis brief [ process-id | vpn-instance vpn-instance-name ] [ | { begin | exclude | include } regular-expression ]
显示IS-IS调试开关的状态 | display isis debug-switches { process-id | vpn-instance vpn-instance-name } [ | { begin | exclude | include } regular-expression ]
显示IS-IS协议的GR状态 | display isis graceful-restart status [ level-1 | level-2 ] [ process-id | vpn-instance vpn-instance-name ] [ | { begin | exclude | include } regular-expression ]
显示使能IS-IS功能接口的信息 | display isis interface [ statistics | [ interface-type interface-number ] [ verbose ] ] [ process-id | vpn-instance vpn-instance-name ] [ | { begin | exclude | include } regular-expression ]
显示IS-IS的链路状态数据库 | display isis lsdb [ [ l1 | l2 | level-1 | level-2 ] | [ lsp-id lspid | lsp-name lspname ] | local | verbose ] * [ process-id | vpn-instance vpn-instance-name ] [ | { begin | exclude | include } regular-expression ]
显示系统ID到主机名称的映射关系表 | display isis name-table [ process-id | vpn-instance vpn-instance-name ] [ | { begin | exclude | include } regular-expression ]
显示IS-IS的邻居信息 | display isis peer [ statistics | verbose ] [ process-id | vpn-instance vpn-instance-name ] [ | { begin | exclude | include } regular-expression ]
显示IS-IS的IPv4路由信息 | display isis route [ ipv4 ] [ [ level-1 | level-2 ] | verbose ] * [ process-id | vpn-instance vpn-instance-name ] [ | { begin | exclude | include } regular-expression ]
显示IS-IS进行SPF计算的日志信息 | display isis spf-log [ process-id | vpn-instance vpn-instance-name ] [ | { begin | exclude | include } regular-expression ]
显示IS-IS统计信息 | display isis statistics [ level-1 | level-1-2 | level-2 ] [ process-id | vpn-instance vpn-instance-name ] [ | { begin | exclude | include } regular-expression ]
清除所有IS-IS的数据结构信息 | reset isis all [ process-id | vpn-instance vpn-instance-name ]
清除IS-IS特定邻居的数据信息 | reset isis peer system-id [ process-id | vpn-instance vpn-instance-name ]


1.14 IS-IS典型配置案例

1.14.1 IS-IS基本配置

1. 组网需求

如图1-15 所示，Switch A、Switch B、Switch C和Switch D属于同一自治系统，要求它们之间通过IS-IS协议达到IP网络互连的目的。

其中，Switch A和Switch B为Level-1交换机，Switch D为Level-2交换机，Switch C作为Level-1-2交换机将两个区域相连。Switch A、Switch B和Switch C的区域号为10，Switch D的区域号为20。

2. 组网图

图1-15 IS-IS基本配置组网图

3. 配置步骤

(1) 配置各接口的IP地址（略）

(2) 配置IS-IS

# 配置Switch A。

<SwitchA> system-view

[SwitchA] isis 1

[SwitchA-isis-1] is-level level-1

[SwitchA-isis-1] network-entity 10.0000.0000.0001.00

[SwitchA-isis-1] quit

[SwitchA] interface vlan-interface 100

[SwitchA-Vlan-interface100] isis enable 1

[SwitchA-Vlan-interface100] quit

# 配置Switch B。

<SwitchB> system-view

[SwitchB] isis 1

[SwitchB-isis-1] is-level level-1

[SwitchB-isis-1] network-entity 10.0000.0000.0002.00

[SwitchB-isis-1] quit

[SwitchB] interface vlan-interface 200

[SwitchB-Vlan-interface200] isis enable 1

[SwitchB-Vlan-interface200] quit

# 配置Switch C。

<SwitchC> system-view

[SwitchC] isis 1

[SwitchC-isis-1] network-entity 10.0000.0000.0003.00

[SwitchC-isis-1] quit

[SwitchC] interface vlan-interface 100

[SwitchC-Vlan-interface100] isis enable 1

[SwitchC-Vlan-interface100] quit

[SwitchC] interface vlan-interface 200

[SwitchC-Vlan-interface200] isis enable 1

[SwitchC-Vlan-interface200] quit

[SwitchC] interface vlan-interface 300

[SwitchC-Vlan-interface300] isis enable 1

[SwitchC-Vlan-interface300] quit

# 配置Switch D。

<SwitchD> system-view

[SwitchD] isis 1

[SwitchD-isis-1] is-level level-2

[SwitchD-isis-1] network-entity 20.0000.0000.0004.00

[SwitchD-isis-1] quit

[SwitchD] interface vlan-interface 100

[SwitchD-Vlan-interface100] isis enable 1

[SwitchD-Vlan-interface100] quit

[SwitchD] interface vlan-interface 300

[SwitchD-Vlan-interface300] isis enable 1

[SwitchD-Vlan-interface300] quit

(3) 验证配置结果

# 显示各交换机的IS-IS LSDB信息，查看LSP是否完整。

[SwitchA] display isis lsdb

Database information for ISIS(1)

--------------------------------

Level-1 Link State Database

LSPID Seq Num Checksum Holdtime Length ATT/P/OL

--------------------------------------------------------------------------

0000.0000.0001.00-00* 0x00000004 0xdf5e 1096 68 0/0/0

0000.0000.0002.00-00 0x00000004 0xee4d 1102 68 0/0/0

0000.0000.0002.01-00 0x00000001 0xdaaf 1102 55 0/0/0

0000.0000.0003.00-00 0x00000009 0xcaa3 1161 111 1/0/0

0000.0000.0003.01-00 0x00000001 0xadda 1112 55 0/0/0

*-Self LSP, +-Self LSP(Extended), ATT-Attached, P-Partition, OL-Overload

[SwitchB] display isis lsdb

Database information for ISIS(1)

--------------------------------

Level-1 Link State Database

LSPID Seq Num Checksum Holdtime Length ATT/P/OL

--------------------------------------------------------------------------

0000.0000.0001.00-00 0x00000006 0xdb60 988 68 0/0/0

0000.0000.0002.00-00* 0x00000008 0xe651 1189 68 0/0/0

0000.0000.0002.01-00* 0x00000005 0xd2b3 1188 55 0/0/0

0000.0000.0003.00-00 0x00000014 0x194a 1190 111 1/0/0

0000.0000.0003.01-00 0x00000002 0xabdb 995 55 0/0/0

*-Self LSP, +-Self LSP(Extended), ATT-Attached, P-Partition, OL-Overload

[SwitchC] display isis lsdb

Database information for ISIS(1)

--------------------------------

Level-1 Link State Database

LSPID Seq Num Checksum Holdtime Length ATT/P/OL

--------------------------------------------------------------------------

0000.0000.0001.00-00 0x00000006 0xdb60 847 68 0/0/0

0000.0000.0002.00-00 0x00000008 0xe651 1053 68 0/0/0

0000.0000.0002.01-00 0x00000005 0xd2b3 1052 55 0/0/0

0000.0000.0003.00-00* 0x00000014 0x194a 1051 111 1/0/0

0000.0000.0003.01-00* 0x00000002 0xabdb 854 55 0/0/0

*-Self LSP, +-Self LSP(Extended), ATT-Attached, P-Partition, OL-Overload

Level-2 Link State Database

LSPID Seq Num Checksum Holdtime Length ATT/P/OL

--------------------------------------------------------------------------

0000.0000.0003.00-00* 0x00000012 0xc93c 842 100 0/0/0

0000.0000.0004.00-00 0x00000026 0x331 1173 84 0/0/0

0000.0000.0004.01-00 0x00000001 0xee95 668 55 0/0/0

*-Self LSP, +-Self LSP(Extended), ATT-Attached, P-Partition, OL-Overload

[SwitchD] display isis lsdb

Database information for ISIS(1)

--------------------------------

Level-2 Link State Database

LSPID Seq Num Checksum Holdtime Length ATT/P/OL

-------------------------------------------------------------------------------

0000.0000.0003.00-00 0x00000013 0xc73d 1003 100 0/0/0

0000.0000.0004.00-00* 0x0000003c 0xd647 1194 84 0/0/0

0000.0000.0004.01-00* 0x00000002 0xec96 1007 55 0/0/0

*-Self LSP, +-Self LSP(Extended), ATT-Attached, P-Partition, OL-Overload

# 显示各交换机的IS-IS路由信息。Level-1交换机的路由表中应该有一条缺省路由，且下一跳为Level-1-2交换机，Level-2交换机的路由表中应该有所有Level-1和Level-2的路由。

[SwitchA] display isis route

Route information for ISIS(1)

-----------------------------

ISIS(1) IPv4 Level-1 Forwarding Table

-------------------------------------

IPV4 Destination IntCost ExtCost ExitInterface NextHop Flags

--------------------------------------------------------------------------

10.1.1.0/24 10 NULL Vlan100 Direct D/L/-

10.1.2.0/24 20 NULL Vlan100 10.1.1.1 R/-/-

192.168.0.0/24 20 NULL Vlan100 10.1.1.1 R/-/-

0.0.0.0/0 10 NULL Vlan100 10.1.1.1 R/-/-

Flags: D-Direct, R-Added to RM, L-Advertised in LSPs, U-Up/Down Bit Set

[SwitchC] display isis route

Route information for ISIS(1)

-----------------------------

ISIS(1) IPv4 Level-1 Forwarding Table

-------------------------------------

IPV4 Destination IntCost ExtCost ExitInterface NextHop Flags

--------------------------------------------------------------------------

192.168.0.0/24 10 NULL Vlan300 Direct D/L/-

10.1.1.0/24 10 NULL Vlan100 Direct D/L/-

10.1.2.0/24 10 NULL Vlan200 Direct D/L/-

Flags: D-Direct, R-Added to RM, L-Advertised in LSPs, U-Up/Down Bit Set

ISIS(1) IPv4 Level-2 Forwarding Table

-------------------------------------

IPV4 Destination IntCost ExtCost ExitInterface NextHop Flags

--------------------------------------------------------------------------

192.168.0.0/24 10 NULL Vlan300 Direct D/L/-

10.1.1.0/24 10 NULL Vlan100 Direct D/L/-

10.1.2.0/24 10 NULL Vlan200 Direct D/L/-

172.16.0.0/16 20 NULL Vlan300 192.168.0.2 R/-/-

Flags: D-Direct, R-Added to RM, L-Advertised in LSPs, U-Up/Down Bit Set

[SwitchD] display isis route

Route information for ISIS(1)

-----------------------------

ISIS(1) IPv4 Level-2 Forwarding Table

-------------------------------------

IPV4 Destination IntCost ExtCost ExitInterface NextHop Flags

--------------------------------------------------------------------------

192.168.0.0/24 10 NULL Vlan300 Direct D/L/-

10.1.1.0/24 20 NULL Vlan300 192.168.0.1 R/-/-

10.1.2.0/24 20 NULL Vlan300 192.168.0.1 R/-/-

172.16.0.0/16 10 NULL Vlan100 Direct D/L/-

Flags: D-Direct, R-Added to RM, L-Advertised in LSPs, U-Up/Down Bit Set

1.14.2 配置IS-IS的DIS选择

1. 组网需求

如图1-16 所示，Switch A、Switch B、Switch C和Switch D都运行IS-IS路由协议以实现互连，它们属于同一区域10，网络类型为广播网（以太网）。其中Switch A和Switch B是Level-1-2交换机，Switch C为Level-1交换机，Switch D为Level-2交换机。

要求通过改变接口的DIS优先级，将Switch A配置为Level-1-2的DIS。

2. 组网图

图1-16 配置IS-IS的DIS选择组网图

3. 配置步骤

(1) 配置各接口的IP地址（略）

(2) 配置IS-IS

# 配置Switch A。

<SwitchA> system-view

[SwitchA] isis 1

[SwitchA-isis-1] network-entity 10.0000.0000.0001.00

[SwitchA-isis-1] quit

[SwitchA] interface vlan-interface 100

[SwitchA-Vlan-interface100] isis enable 1

[SwitchA-Vlan-interface100] quit

# 配置Switch B。

<SwitchB> system-view

[SwitchB] isis 1

[SwitchB-isis-1] network-entity 10.0000.0000.0002.00

[SwitchB-isis-1] quit

[SwitchB] interface vlan-interface 100

[SwitchB-Vlan-interface100] isis enable 1

[SwitchB-Vlan-interface100] quit

# 配置Switch C。

<SwitchC> system-view

[SwitchC] isis 1

[SwitchC-isis-1] network-entity 10.0000.0000.0003.00

[SwitchC-isis-1] is-level level-1

[SwitchC-isis-1] quit

[SwitchC] interface vlan-interface 100

[SwitchC-Vlan-interface100] isis enable 1

[SwitchC-Vlan-interface100] quit

# 配置Switch D。

<SwitchD> system-view

[SwitchD] isis 1

[SwitchD-isis-1] network-entity 10.0000.0000.0004.00

[SwitchD-isis-1] is-level level-2

[SwitchD-isis-1] quit

[SwitchD] interface vlan-interface 100

[SwitchD-Vlan-interface100] isis enable 1

[SwitchD-Vlan-interface100] quit

# 查看Switch A的IS-IS邻居信息。

[SwitchA] display isis peer

Peer information for ISIS(1)

----------------------------

System Id: 0000.0000.0002

Interface: Vlan-interface100 Circuit Id: 0000.0000.0003.01

State: Up HoldTime: 21s Type: L1(L1L2) PRI: 64

System Id: 0000.0000.0003

Interface: Vlan-interface100 Circuit Id: 0000.0000.0003.01

State: Up HoldTime: 27s Type: L1 PRI: 64

System Id: 0000.0000.0002

Interface: Vlan-interface100 Circuit Id: 0000.0000.0004.01

State: Up HoldTime: 28s Type: L2(L1L2) PRI: 64

System Id: 0000.0000.0004

Interface: Vlan-interface100 Circuit Id: 0000.0000.0004.01

State: Up HoldTime: 30s Type: L2 PRI: 64

# 显示Switch A的IS-IS接口信息。

[SwitchA] display isis interface

Interface information for ISIS(1)

---------------------------------

Interface: Vlan-interface100

Id IPV4.State IPV6.State MTU Type DIS

001 Up Down 1497 L1/L2 No/No

# 显示Switch C的IS-IS接口信息。

[SwitchC] display isis interface

Interface information for ISIS(1)

---------------------------------

Interface: Vlan-interface100

Id IPV4.State IPV6.State MTU Type DIS

001 Up Down 1497 L1/L2 Yes/No

# 显示Switch D的IS-IS接口信息。

[SwitchD] display isis interface

Interface information for ISIS(1)

---------------------------------

Interface: Vlan-interface100

Id IPV4.State IPV6.State MTU Type DIS

001 Up Down 1497 L1/L2 No/Yes

从接口信息中可以看到，在使用缺省DIS优先级的情况下，Switch C为Level-1的DIS，Switch D为Level-2的DIS。Level-1和Level-2的伪节点分别是0000.0000.0003.01和0000.0000.0004.01。

(3) 配置Switch A的DIS优先级

[SwitchA] interface vlan-interface 100

[SwitchA-Vlan-interface100] isis dis-priority 100

[SwitchA-Vlan-interface100] quit

# 查看Switch A的IS-IS邻居信息。

[SwitchA] display isis peer

Peer information for ISIS(1)

----------------------------

System Id: 0000.0000.0002

Interface: Vlan-interface100 Circuit Id: 0000.0000.0001.01

State: Up HoldTime: 21s Type: L1(L1L2) PRI: 64

System Id: 0000.0000.0003

Interface: Vlan-interface100 Circuit Id: 0000.0000.0001.01

State: Up HoldTime: 27s Type: L1 PRI: 64

System Id: 0000.0000.0002

Interface: Vlan-interface100 Circuit Id: 0000.0000.0001.01

State: Up HoldTime: 28s Type: L2(L1L2) PRI: 64

System Id: 0000.0000.0004

Interface: Vlan-interface100 Circuit Id: 0000.0000.0001.01

State: Up HoldTime: 30s Type: L2 PRI: 64

# 查看Switch A的IS-IS接口信息。

[SwitchA] display isis interface

Interface information for ISIS(1)

---------------------------------

Interface: Vlan-interface100

Id IPV4.State IPV6.State MTU Type DIS

001 Up Down 1497 L1/L2 Yes/Yes

从上述信息中可以看到，在改变IS-IS接口的DIS优先级后，Switch A立即成为Level-1-2的DR（DIS），且伪节点是0000.0000.0001.01。

# 显示Switch C的IS-IS邻居和接口信息。

[SwitchC] display isis peer

Peer information for ISIS(1)

----------------------------

System Id: 0000.0000.0002

Interface: Vlan-interface100 Circuit Id: 0000.0000.0001.01

State: Up HoldTime: 25s Type: L1 PRI: 64

System Id: 0000.0000.0001

Interface: Vlan-interface100 Circuit Id: 0000.0000.0001.01

State: Up HoldTime: 7s Type: L1 PRI: 100

[SwitchC] display isis interface

Interface information for ISIS(1)

---------------------------------

Interface: Vlan-interface100

Id IPV4.State IPV6.State MTU Type DIS

001 Up Down 1497 L1/L2 No/No

# 显示Switch D的IS-IS邻居和接口信息。

[SwitchD] display isis peer

Peer information for ISIS(1)

----------------------------

System Id: 0000.0000.0001

Interface: Vlan-interface100 Circuit Id: 0000.0000.0001.01

State: Up HoldTime: 9s Type: L2 PRI: 100

System Id: 0000.0000.0002

Interface: Vlan-interface100 Circuit Id: 0000.0000.0001.01

State: Up HoldTime: 28s Type: L2 PRI: 64

[SwitchD] display isis interface

Interface information for ISIS(1)

---------------------------------

Interface: Vlan-interface100

Id IPV4.State IPV6.State MTU Type DIS

001 Up Down 1497 L1/L2 No/No

1.14.3 配置IS-IS引入外部路由

1. 组网需求

如 图1-17 所示：

l Switch A、Switch B、Switch C和Switch D属于同一自治系统，要求它们之间通过IS-IS协议达到IP网络互连的目的。

l Switch A和Switch B为Level-1路由器，Switch D为Level-2路由器，Switch C作为Level-1-2路由器将两个区域相连。Switch A、Switch B和Switch C的区域号为10，Switch D的区域号为20。

l 在Switch D的IS-IS进程中引入RIP路由。

2. 组网图

图1-17 配置IS-IS引入外部路由组网图

3. 配置步骤

(1) 配置各接口的IP地址（略）

(2) 配置IS-IS基本功能

# 配置Switch A。

<SwitchA> system-view

[SwitchA] isis 1

[SwitchA-isis-1] is-level level-1

[SwitchA-isis-1] network-entity 10.0000.0000.0001.00

[SwitchA-isis-1] quit

[SwitchA] interface vlan-interface 100

[SwitchA-Vlan-interface100] isis enable 1

[SwitchA-Vlan-interface100] quit

# 配置Switch B。

<SwitchB> system-view

[SwitchB] isis 1

[SwitchB-isis-1] is-level level-1

[SwitchB-isis-1] network-entity 10.0000.0000.0002.00

[SwitchB-isis-1] quit

[SwitchB] interface vlan-interface 200

[SwitchB-Vlan-interface200] isis enable 1

[SwitchB-Vlan-interface200] quit

# 配置Switch C。

<SwitchC> system-view

[SwitchC] isis 1

[SwitchC-isis-1] network-entity 10.0000.0000.0003.00

[SwitchC-isis-1] quit

[SwitchC] interface vlan-interface 200

[SwitchC-Vlan-interface200] isis enable 1

[SwitchC-Vlan-interface200] quit

[SwitchC] interface vlan-interface 100

[SwitchC-Vlan-interface100] isis enable 1

[SwitchC-Vlan-interface100] quit

[SwitchC] interface vlan-interface 300

[SwitchC-Vlan-interface300] isis enable 1

[SwitchC-Vlan-interface300] quit

# 配置Switch D。

<SwitchD> system-view

[SwitchD] isis 1

[SwitchD-isis-1] is-level level-2

[SwitchD-isis-1] network-entity 20.0000.0000.0004.00

[SwitchD-isis-1] quit

[SwitchD] interface interface vlan-interface 300

[SwitchD-Vlan-interface300] isis enable 1

[SwitchD-Vlan-interface300] quit

# 显示各路由器的IS-IS路由信息。

[SwitchA] display isis route

Route information for ISIS(1)

-----------------------------

ISIS(1) IPv4 Level-1 Forwarding Table

-------------------------------------

IPV4 Destination IntCost ExtCost ExitInterface NextHop Flags

--------------------------------------------------------------------------

10.1.1.0/24 10 NULL VLAN100 Direct D/L/-

10.1.2.0/24 20 NULL VLAN100 10.1.1.1 R/-/-

192.168.0.0/24 20 NULL VLAN100 10.1.1.1 R/-/-

0.0.0.0/0 10 NULL VLAN100 10.1.1.1 R/-/-

Flags: D-Direct, R-Added to RM, L-Advertised in LSPs, U-Up/Down Bit Set

[SwitchC] display isis route

Route information for ISIS(1)

-----------------------------

ISIS(1) IPv4 Level-1 Forwarding Table

-------------------------------------

IPV4 Destination IntCost ExtCost ExitInterface NextHop Flags

--------------------------------------------------------------------------

10.1.1.0/24 10 NULL VLAN100 Direct D/L/-

10.1.2.0/24 10 NULL VLAN200 Direct D/L/-

192.168.0.0/24 10 NULL VLAN300 Direct D/L/-

Flags: D-Direct, R-Added to RM, L-Advertised in LSPs, U-Up/Down Bit Set

ISIS(1) IPv4 Level-2 Forwarding Table

-------------------------------------

IPV4 Destination IntCost ExtCost ExitInterface NextHop Flags

--------------------------------------------------------------------------

10.1.1.0/24 10 NULL VLAN100 Direct D/L/-

10.1.2.0/24 10 NULL VLAN200 Direct D/L/-

192.168.0.0/24 10 NULL VLAN300 Direct D/L/-

Flags: D-Direct, R-Added to RM, L-Advertised in LSPs, U-Up/Down Bit Set

[SwitchD] display isis route

Route information for ISIS(1)

-----------------------------

ISIS(1) IPv4 Level-2 Forwarding Table

-------------------------------------

IPV4 Destination IntCost ExtCost ExitInterface NextHop Flags

--------------------------------------------------------------------------

192.168.0.0/24 10 NULL VLAN300 Direct D/L/-

10.1.1.0/24 20 NULL VLAN300 192.168.0.1 R/-/-

10.1.2.0/24 20 NULL VLAN300 192.168.0.1 R/-/-

Flags: D-Direct, R-Added to RM, L-Advertised in LSPs, U-Up/Down Bit Set

(3) 在Switch D和Switch E之间运行RIPv2，在Switch D上配置IS-IS进程引入RIP路由。

# 在Switch D上配置RIPv2。

[SwitchD] rip 1

[SwitchD-rip-1] network 10.0.0.0

[SwitchD-rip-1] version 2

[SwitchD-rip-1] undo summary

# 在Switch E上配置RIPv2。

[SwitchE] rip 1

[SwitchE-rip-1] network 10.0.0.0

[SwitchE-rip-1] version 2

[SwitchE-rip-1] undo summary

# 在Switch D上配置IS-IS进程引入RIP进程的路由。

[SwitchD-rip-1] quit

[SwitchD] isis 1

[SwitchD–isis-1] import-route rip level-2

# 显示Switch C的IS-IS路由信息。

[SwitchC] display isis route

Route information for ISIS(1)

-----------------------------

ISIS(1) IPv4 Level-1 Forwarding Table

-------------------------------------

IPV4 Destination IntCost ExtCost ExitInterface NextHop Flags

--------------------------------------------------------------------------

10.1.1.0/24 10 NULL VLAN100 Direct D/L/-

10.1.2.0/24 10 NULL VLAN200 Direct D/L/-

192.168.0.0/24 10 NULL VLAN300 Direct D/L/-

Flags: D-Direct, R-Added to RM, L-Advertised in LSPs, U-Up/Down Bit Set

ISIS(1) IPv4 Level-2 Forwarding Table

-------------------------------------

IPV4 Destination IntCost ExtCost ExitInterface NextHop Flags

--------------------------------------------------------------------------

10.1.1.0/24 10 NULL VLAN100 Direct D/L/-

10.1.2.0/24 10 NULL VLAN200 Direct D/L/-

192.168.0.0/24 10 NULL VLAN300 Direct D/L/-

10.1.4.0/24 10 NULL VLAN300 192.168.0.2 R/L/-

10.1.5.0/24 20 NULL VLAN300 192.168.0.2 R/L/-

10.1.6.0/24 20 NULL VLAN300 192.168.0.2 R/L/-

Flags: D-Direct, R-Added to RM, L-Advertised in LSPs, U-Up/Down Bit Set

1.14.4 IS-IS GR配置举例

1. 组网需求

如图1-18 所示，Switch A、Switch B和Switch C属于同一域。这三台交换机都运行IS-IS协议以实现路由互连。

2. 组网图

图1-18 IS-IS GR配置组网图

3. 配置步骤

(1) 配置各交换机接口的IP地址和IS-IS协议

请按照图1-18 配置各接口的IP地址和子网掩码，具体配置过程略。

配置各交换机之间采用IS-IS协议进行互连，确保Switch A、Switch B和Switch C之间能够在网络层互通，并且各交换机之间能够借助IS-IS协议实现动态路由更新，具体配置过程略。

(2) 配置IS-IS GR

# 使能Switch A的IS-IS协议的GR能力，并配置重启间隔时间。

<SwitchA> system-view

[SwitchA] isis 1

[SwitchA-isis-1] graceful-restart

[SwitchA-isis-1] graceful-restart interval 150

[SwitchA-isis-1] return

Switch B和Switch C的配置与Switch A相似，配置过程略。

(3) 检验配置效果

Switch A分别与Switch B和Switch C建立邻接关系后，三台交换机开始交换路由信息。Switch A的IS-IS协议重启，进入重启模式后，通过GR机制向邻居重新发送连接请求，同步数据库。使用 display isis graceful-restart status 命令，可查看Switch A上IS-IS协议的GR状态。

# 重启Switch A的IS-IS进程。

<SwitchA> reset isis all 1

Warning : Reset ISIS process? [Y/N]:y

# 查看Switch A上IS-IS协议的GR状态。

<SwitchA> display isis graceful-restart status

Restart information for IS-IS(1)

--------------------------------------------------------------------

IS-IS(1) Level-1 Restart Status

Restart Interval: 150

SA Bit Supported

Total Number of Interfaces = 1

Restart Status: RESTARTING

Number of LSPs Awaited: 3

T3 Timer Status:

Remaining Time: 140

T2 Timer Status:

Remaining Time: 59

IS-IS(1) Level-2 Restart Status

Restart Interval: 150

SA Bit Supported

Total Number of Interfaces = 1

Restart Status: RESTARTING

Number of LSPs Awaited: 3

T3 Timer Status:

Remaining Time: 140

T2 Timer Status:

Remaining Time: 59

1.14.5 IS-IS NSR配置举例

1. 组网需求

如 图1-19 所示，Switch S、Switch A、Switch B属于同一IS-IS区域，通过IS-IS协议实现网络互连，其中Switch S为形成了IRF的设备，与Switch A、Switch B连接的链路为跨设备聚合链路。要求对Switch S进行Master/Slave切换时，Switch A和Switch B到Switch S的邻居没有中断，Switch A到Switch B的流量没有中断。

2. 组网图

图1-19 IS-IS NSR配置组网图

3. 配置步骤

(1) 配置各路由器接口的IP地址和IS-IS协议

请按照 图1-19 配置各接口的IP地址和子网掩码，具体配置过程略。

配置各路由器之间采用IS-IS协议进行互连，确保Switch S、Switch A和Switch B之间能够在网络层互通，并且各路由器之间能够借助IS-IS协议实现动态路由更新。具体配置过程略。

(2) 配置IS-IS NSR

# 使能Switch A的IS-IS NSR功能。

<SwitchS> system-view

[SwitchS] isis 1

[SwitchS-isis-1] non-stop-routing

[SwitchS-isis-1] non-stop-routing interval 30

[SwitchS-isis-1] return

(3) 检验配置效果

Switch S分别与Switch A和Switch B建立邻接关系后，三台路由器开始交换路由信息。当网络稳定后，Switch S进行Master/Slave切换。在Switch S Master/Slave切换期间，使用 display isis peer 命令查看Switch A和Switch B上到Switch S的邻居是否发生任何变化；使用 display isis route 命令查看Switch A上是否有Switch B上Loopback接口的路由，Switch B上是否有Switch A上Loopback接口的路由。

# 在Switch S进行Master/Slave切换时，查看Switch A上IS-IS协议的邻居和路由。

<SwitchA> display isis peer

Peer information for ISIS(1)

----------------------------

System Id: 0000.0000.0001

Interface: vlan100 Circuit Id: 0000.0000.0001.01

State: Up HoldTime: 25s Type: L1(L1L2) PRI: 64

System Id: 0000.0000.0001

Interface: vlan100 Circuit Id: 0000.0000.0001.01

State: Up HoldTime: 27s Type: L2(L1L2) PRI: 64

<SwitchA> display isis route

Route information for ISIS(1)

-----------------------------

ISIS(1) IPv4 Level-1 Forwarding Table

-------------------------------------

IPV4 Destination IntCost ExtCost ExitInterface NextHop Flags

--------------------------------------------------------------------------

12.12.12.0/24 10 NULL vlan100 Direct D/L/-

22.22.22.22/32 10 NULL Loop0 Direct D/-/-

14.14.14.0/32 10 NULL vlan100 12.12.12.2 R/L/-

44.44.44.44/32 10 NULL vlan100 12.12.12.2 R/L/-

Flags: D-Direct, R-Added to RM, L-Advertised in LSPs, U-Up/Down Bit Set

ISIS(1) IPv4 Level-2 Forwarding Table

-------------------------------------

IPV4 Destination IntCost ExtCost ExitInterface NextHop Flags

--------------------------------------------------------------------------

12.12.12.0/24 10 NULL vlan100 Direct D/L/-

22.22.22.22/32 10 NULL Loop0 Direct D/-/-

14.14.14.0/32 10 NULL

44.44.44.44/32 10 NULL

Flags: D-Direct, R-Added to RM, L-Advertised in LSPs, U-Up/Down Bit Set

# 查看Switch B上IS-IS协议的邻居和路由。

<SwitchB> display isis peer

Peer information for ISIS(1)

----------------------------

System Id: 0000.0000.0001

Interface: vlan200 Circuit Id: 0000.0000.0001.01

State: Up HoldTime: 25s Type: L1(L1L2) PRI: 64

System Id: 0000.0000.0001

Interface: vlan200 Circuit Id: 0000.0000.0001.01

State: Up HoldTime: 27s Type: L2(L1L2) PRI: 64

<SwitchB> display isis route

Route information for ISIS(1)

-----------------------------

ISIS(1) IPv4 Level-1 Forwarding Table

-------------------------------------

IPV4 Destination IntCost ExtCost ExitInterface NextHop Flags

--------------------------------------------------------------------------

14.14.14.0/24 10 NULL vlan200 Direct D/L/-

44.44.44.44/32 10 NULL Loop0 Direct D/-/-

12.12.12.0/32 10 NULL vlan200 14.14.14.4 R/L/-

22.22.22.22/32 10 NULL vlan200 14.14.14.4 R/L/-

Flags: D-Direct, R-Added to RM, L-Advertised in LSPs, U-Up/Down Bit Set

ISIS(1) IPv4 Level-2 Forwarding Table

-------------------------------------

IPV4 Destination IntCost ExtCost ExitInterface NextHop Flags

--------------------------------------------------------------------------

14.14.14.0/24 10 NULL vlan200 Direct D/L/-

44.44.44.44/32 10 NULL Loop0 Direct D/-/-

12.12.12.0/32 10 NULL

22.22.22.22/32 10 NULL

Flags: D-Direct, R-Added to RM, L-Advertised in LSPs, U-Up/Down Bit Set

通过上面信息可以看出Switch A和Switch B的邻居和路由信息保持不变，即NSR特性使周边设备无法感知Switch S的Master/Slave切换。

1.14.6 IS-IS快速重路由配置举例

1. 组网需求

如 图1-20 所示，Switch S、Switch A和Switch D属于同一IS-IS路由域，通过IS-IS协议实现网络互连。要求当Switch S和Switch D之间的链路出现故障时，业务可以快速切换到链路B上。

2. 组网图

图1-20 IS-IS快速重路由配置组网图

3. 配置步骤

(1) 配置各交换机接口的IP地址和IS-IS协议

请按照 图1-18 配置各接口的IP地址和子网掩码，具体配置过程略。

配置各交换机之间采用IS-IS协议进行互连，确保Switch A、Switch D和Switch S之间能够在网络层互通，并且各交换机之间能够借助IS-IS协议实现动态路由更新。

具体配置过程略。

(2) 配置IS-IS快速重路由

IS-IS支持快速重路由配置有两种配置方法，一种是自动计算，另一种是通过策略指定，两种方法任选一种。

方法一：使能Switch S和Swtich D的IS-IS协议的自动计算快速重路由能力

# 配置Switch S。

<SwitchS> system-view

[SwitchS] bfd echo-source-ip 1.1.1.1

[SwitchS] isis 1

[SwitchS-isis-1] fast-reroute auto

[SwitchS-isis-1] quit

# 配置Switch D。

<SwitchD> system-view

[SwitchD] bfd echo-source-ip 4.4.4.4

[SwitchD] isis 1

[SwitchD-isis-1] fast-reroute auto

[SwitchD-isis-1] quit

方法二：使能Switch S和Swtich D的IS-IS协议的指定路由策略快速重路由能力

# 配置Switch S。

<SwitchS> system-view

[SwitchS] bfd echo-source-ip 1.1.1.1

[SwitchS] ip ip-prefix abc index 10 permit 4.4.4.4 32

[SwitchS] route-policy frr permit node 10

[SwitchS-route-policy] if-match ip-prefix abc

[SwitchS-route-policy] apply fast-reroute backup-interface vlan-interface 100 backup-nexthop 12.12.12.2

[SwitchS-route-policy] quit

[SwitchS] isis 1

[SwitchS-isis-1] fast-reroute route-policy frr

[SwitchS-isis-1] quit

# 配置Switch D。

<SwitchD> system-view

[SwitchD] bfd echo-source-ip 4.4.4.4

[SwitchD] ip ip-prefix abc index 10 permit 1.1.1.1 32

[SwitchD] route-policy frr permit node 10

[SwitchD-route-policy] if-match ip-prefix abc

[SwitchD-route-policy] apply fast-reroute backup-interface vlan-interface 101 backup-nexthop 24.24.24.2

[SwitchD-route-policy] quit

[SwitchD] isis 1

[SwitchD-isis-1] fast-reroute route-policy frr

[SwitchD-isis-1] quit

(3) 检验配置效果

# 在Switch S上查看4.4.4.4/32路由，可以看到备份下一跳信息。

[SwitchS] display ip routing-table 4.4.4.4 verbose

Routing Table : Public

Summary Count : 1

Destination: 4.4.4.4/32

Protocol: ISIS Process ID: 1

Preference: 10 Cost: 10

IpPrecedence: QosLcId:

NextHop: 13.13.13.2 Interface: Vlan-interface200

BkNextHop: 12.12.12.2 BkInterface: Vlan-interface100

RelyNextHop: 0.0.0.0 Neighbor : 0.0.0.0

Tunnel ID: 0x0 Label: NULL

BKTunnel ID: 0x0 BKLabel: NULL

State: Active Adv Age: 00h01m27s

Tag: 0

# 在Switch D上查看1.1.1.1/32路由，可以看到备份下一跳信息。

[SwitchD] display ip routing-table 1.1.1.1 verbose

Routing Table : Public

Summary Count : 1

Destination: 1.1.1.1/32

Protocol: ISIS Process ID: 1

Preference: 10 Cost: 10

IpPrecedence: QosLcId:

NextHop: 13.13.13.1 Interface: Vlan-interface200

BkNextHop: 24.24.24.2 BkInterface: Vlan-interface101

RelyNextHop: 0.0.0.0 Neighbor : 0.0.0.0

Tunnel ID: 0x0 Label: NULL

BKTunnel ID: 0x0 BKLabel: NULL

State: Active Adv Age: 00h01m27s

Tag: 0

1.14.7 IS-IS验证配置举例

1. 组网需求

如图1-21 所示，Switch A、Switch B、Switch C和Switch D属于同一路由域，要求它们之间通过IS-IS协议达到IP网络互连的目的。

其中，Switch A、Switch B和Switch C属于同一个区域，区域号为10，Switch D属于另外一个区域，区域号为20。

在区域10内配置区域验证，防止不可信任的路由信息加入到区域10的LSDB中；在Switch C和Switch D上配置路由域验证，防止将不可信的路由信息注入当前路由域；分别在Switch A、Switch B、Switch C和Switch D上配置邻居关系验证。

2. 组网图

图1-21 IS-IS验证配置举例图

3. 配置步骤

(1) 配置各接口的IP地址（略）

(2) 配置IS-IS基本功能

# 配置Switch A。

<SwitchA> system-view

[SwitchA] isis 1

[SwitchA-isis-1] network-entity 10.0000.0000.0001.00

[SwitchA-isis-1] quit

[SwitchA] interface vlan-interface 100

[SwitchA-Vlan-interface100] isis enable 1

[SwitchA-Vlan-interface100] quit

# 配置Switch B。

<SwitchB> system-view

[SwitchB] isis 1

[SwitchB-isis-1] network-entity 10.0000.0000.0002.00

[SwitchB-isis-1] quit

[SwitchB] interface vlan-interface 200

[SwitchB-Vlan-interface200] isis enable 1

[RouterB--Vlan-interface200] quit

# 配置Switch C。

<SwitchC> system-view

[SwitchC] isis 1

[SwitchC-isis-1] network-entity 10.0000.0000.0003.00

[SwitchC-isis-1] quit

[SwitchC] interface vlan-interface 200

[SwitchC-Vlan-interface200] isis enable 1

[SwitchC-Vlan-interface200] quit

[SwitchC] interface vlan-interface 300

[SwitchC-Vlan-interface300] isis enable 1

[SwitchC-Vlan-interface300] quit

[SwitchC] interface vlan-interface 300

[SwitchC-Vlan-interface300] isis enable 1

[SwitchC-Vlan-interface300] quit

# 配置Switch D。

<SwitchD> system-view

[SwitchD] isis 1

[SwitchD-isis-1] network-entity 20.0000.0000.0001.00

[SwitchD-isis-1] quit

[SwitchD] interface vlan-interface 300

[SwitchD-Vlan-interface300] isis enable 1

[SwitchD-Vlan-interface300] quit

(3) 在Switch A、Switch B、Switch C和Switch D之间建立邻居关系验证

# 分别在Switch A的Vlan-interface100、Switch C的Vlan-interface100配置邻居关系验证，验证方式为MD5密文，验证密码为“eRg”。

[SwitchA] interface vlan-interface 100

[SwitchA-Vlan-interface100] isis authentication-mode md5 eRg

[SwitchA-Vlan-interface100] quit

[SwitchC] interface vlan-interface 100

[SwitchC-Vlan-interface100] isis authentication-mode md5 eRg

[SwitchC-Vlan-interface100] quit

# 分别在Switch B的Vlan-interface200、Switch C的Vlan-interface200上配置邻居关系验证，验证方式为MD5密文，验证密码为“t5Hr”。

[SwitchB] interface vlan-interface 200

[SwitchB-Vlan-interface200] isis authentication-mode md5 t5Hr

[SwitchB-Vlan-interface200] quit

[SwitchC] interface vlan-interface 200

[SwitchC-Vlan-interface200] isis authentication-mode md5 t5Hr

[SwitchC-Vlan-interface200] quit

# 分别在Switch C的Vlan-interface300、Switch D的Vlan-interface300配置邻居关系验证，验证方式为MD5密文，验证密码为“hSec”。

[SwitchC] interface vlan-interface 300

[SwitchC-Vlan-interface300] isis authentication-mode md5 hSec

[SwitchC-Vlan-interface300] quit

[SwitchD] interface vlan-interface 300

[SwitchD-Vlan-interface300] isis authentication-mode md5 hSec

[SwitchD-Vlan-interface300] quit

(4) 在Switch A、Switch B和Switch C上配置区域验证，验证方式为MD5密文验证，验证密码为“10Sec”。

[SwitchA] isis 1

[SwitchA-isis-1] area-authentication-mode md5 10Sec

[SwitchA-isis-1] quit

[SwitchB] isis 1

[SwitchB-isis-1] area-authentication-mode md5 10Sec

[SwitchB-isis-1] quit

[SwitchC] isis 1

[SwitchC-isis-1] area-authentication-mode md5 10Sec

[SwitchC-isis-1] quit

(5) 在Switch C和Switch D上配置路由域验证，验证方式为MD5密文验证，验证密码为“1020Sec”。

[SwitchC] isis 1

[SwitchC-isis-1] domain-authentication-mode md5 1020Sec

[SwitchC-isis-1] quit

[SwitchD] isis 1

[SwitchD-isis-1] domain-authentication-mode md5 1020Sec

1.14.8 配置IS-IS与BFD联动

1. 组网需求

l Switch A、Switch B和Switch C上运行IS-IS，网络层相互可达。

l 当Switch A和Switch B通过L2 Switch通信的链路出现故障时BFD能够快速感知通告IS-IS协议，并且切换到Switch C进行通信。

2. 组网图

图1-22 IS-IS与BFD联动配置组网图

设备 | 接口 | IP地址 | 设备 | 接口 | IP地址
Switch A | Vlan-int10 | 10.1.0.102/24 | Switch B | Vlan-int10 | 10.1.0.100/24
 | Vlan-int11 | 11.1.1.1/24 |  | Vlan-int13 | 13.1.1.1/24
Switch C | Vlan-int11 | 11.1.1.2/24 |  |  |
 | Vlan-int13 | 13.1.1.2/24 |  |  |

3. 配置步骤

(1) 配置各接口的IP地址（略）

(2) 配置IS-IS基本功能

# 配置Switch A。

<SwitchA> system-view

[SwitchA] isis

[SwitchA-isis-1] network-entity 10.0000.0000.0001.00

[SwitchA-isis-1] quit

[SwitchA] interface vlan-interface 10

[SwitchA-Vlan-interface10] isis enable

[SwitchA-Vlan-interface10] quit

[SwitchA] interface vlan-interface 11

[SwitchA-Vlan-interface11] isis enable

[SwitchA-Vlan-interface11] quit

# 配置Switch B。

<SwitchB> system-view

[SwitchB] isis

[SwitchB-isis-1] network-entity 10.0000.0000.0002.00

[SwitchB-isis-1] quit

[SwitchB] interface vlan-interface 10

[SwitchB-Vlan-interface10] isis enable

[SwitchB-Vlan-interface10] quit

[SwitchB] interface vlan-interface 13

[SwitchB-Vlan-interface13] isis enable

[SwitchB-Vlan-interface13] quit

# 配置Switch C。

<SwitchC> system-view

[SwitchC] isis

[SwitchC-isis-1] network-entity 10.0000.0000.0003.00

[SwitchC-isis-1] quit

[SwitchC] interface vlan-interface 11

[SwitchC-Vlan-interface11] isis enable

[SwitchC-Vlan-interface11] quit

[SwitchC] interface vlan-interface 13

[SwitchC-Vlan-interface13] isis enable

[SwitchC-Vlan-interface13] quit

(3) 配置BFD功能

# 在Switch A上使能BFD检测功能，并配置BFD参数。

[SwitchA] bfd session init-mode passive

[SwitchA] interface vlan-interface 10

[SwitchA-Vlan-interface10] isis bfd enable

[SwitchA-Vlan-interface10] bfd min-receive-interval 500

[SwitchA-Vlan-interface10] bfd min-transmit-interval 500

[SwitchA-Vlan-interface10] bfd detect-multiplier 7

# 在Switch B上使能BFD检测功能，并配置BFD参数。

[SwitchB] bfd session init-mode active

[SwitchB] interface vlan-interface 10

[SwitchB-Vlan-interface10] isis bfd enable

[SwitchB-Vlan-interface10] bfd min-receive-interval 500

[SwitchB-Vlan-interface10] bfd min-transmit-interval 500

[SwitchB-Vlan-interface10] bfd detect-multiplier 8

[SwitchB-Vlan-interface10] return

(4) 检查配置结果

下面以Switch A为例，Switch B和Switch A类似，不再赘述。

# 显示Switch A的BFD信息。

<SwitchA> display bfd session

Total Session Num: 1 Init Mode: Active

Session Working Under Ctrl Mode:

LD/RD SourceAddr DestAddr State Holdtime Interface

3/1 10.1.0.102 10.1.0.100 Up 1700ms vlan10

# 在Switch A上查看120.1.1.0/24的路由信息，可以看出Switch A和Switch B是通过L2 Swtich进行通信的。

<SwitchA> display ip routing-table 120.1.1.0 verbose

Routing Table : Public

Summary Count : 2

Destination: 120.1.1.0/24

Protocol: ISIS Process ID: 0

Preference: 0 Cost: 2

IpPrecedence: QosLcId:

NextHop: 192.168.0.100 Interface: Vlan-interface10

BkNextHop: 0.0.0.0 BkInterface:

RelyNextHop: 0.0.0.0 Neighbor : 0.0.0.0

Tunnel ID: 0x0 Label: NULL

BKTunnel ID: 0x0 BKLabel: NULL

State: Active Adv Age: 00h58m10s

Tag: 0

Destination: 120.1.1.0/24

Protocol: ISIS Process ID: 1

Preference: 10 Cost: 4

IpPrecedence: QosLcId:

NextHop: 10.1.1.100 Interface: Vlan-interface11

BkNextHop: 0.0.0.0 BkInterface:

RelyNextHop: 0.0.0.0 Neighbor : 0.0.0.0

Tunnel ID: 0x0 Label: NULL

BKTunnel ID: 0x0 BKLabel: NULL

State: Invalid Adv Age: 00h58m05s

Tag: 0

# 打开Switch A的调试开关。

<SwitchA> debugging isis bfd-event

<SwitchA> terminal debugging

# Switch B和二层交换机之间的链路发生故障后。可以看到Switch A能够快速检测Switch B的变化。

#Aug 8 14:54:05:362 2008 SwitchA IFNET/4/INTERFACE UPDOWN:

Trap 1.3.6.1.6.3.1.1.5.3<linkDown>: Interface 983041 is Down, ifAdminStatus is 1, ifOperStatus is 2

#Aug 8 14:54:05:363 2008 SwitchA ISIS/4/ADJ_CHANGE:TrapID(1.3.6.1.2.1.138.0.17<isisAdjacencyChange>), ISIS Level-2 Adjencency IN Circuit-983041 State Change.

#Aug 8 14:54:05:364 2008 SwitchA ISIS/4/ADJ_CHANGE:TrapID(1.3.6.1.2.1.138.0.17<isisAdjacencyChange>), ISIS Level-1 Adjencency IN Circuit-983041 State Change.

%Aug 8 14:54:05:365 2008 SwitchA IFNET/4/LINK UPDOWN: Vlan-interface10 link status is DOWN

%Aug 8 14:54:05:366 2008 SwitchA IFNET/4/UPDOWN: Line protocol on the interface Vlan-interface10 is DOWN

%Aug 8 14:54:05:367 2008 SwitchA ISIS/4/ADJLOG:ISIS-1-ADJCHANGE: Adjacency To 0000.0000.0002 (vlan10) DOWN, Level-2 Circuit Down.

%Aug 8 14:54:05:367 2008 SwitchA ISIS/4/ADJLOG:ISIS-1-ADJCHANGE: Adjacency To 0000.0000.0002 (vlan10) DOWN, Level-2 Adjacency clear.

%Aug 8 14:54:05:368 2008 SwitchA ISIS/4/ADJLOG:ISIS-1-ADJCHANGE: Adjacency To 0000.0000.0002 (vlan10) DOWN, Level-1 Circuit Down.

%Aug 8 14:54:05:369 2008 SwitchA ISIS/4/ADJLOG:ISIS-1-ADJCHANGE: Adjacency To 0000.0000.0002 (vlan10) DOWN, Level-1 Adjacency clear.

*Aug 8 14:54:05:370 2008 SwitchA ISIS/6/ISIS:

ISIS-1-BFD: Success to send msg. Msg type 1 delete session. IfPhyIndex: 5 ,DstIPAddr: 10.1.0.100 , SrcIPAddr:10.1.0.102. NeighborType:Level-2.

*Aug 8 14:54:05:370 2008 SwitchA ISIS/6/ISIS:

ISIS-1-BFD: Success to send msg. Msg type 1 delete session. IfPhyIndex: 5 ,DstIPAddr: 10.1.0.100 , SrcIPAddr:10.1.0.102. NeighborType:Level-1.

# 显示Switch A的BFD信息。

查看Switch A的BFD信息，Switch A已取消与Switch B的邻居关系，没有任何输出信息。

<SwitchA> display bfd session

# 在Switch A上查看120.1.1.0/24的路由信息，可以看出Switch A和Switch B已经切换到Switch C进行通信。

<SwitchA> display ip routing-table 120.1.1.0 verbose

Routing Table : Public

Summary Count : 2

Destination: 120.1.1.0/24

Protocol: ISIS Process ID: 1

Preference: 10 Cost: 4

IpPrecedence: QosLcId:

NextHop: 10.1.1.100 Interface: Vlan-interface11

BkNextHop: 0.0.0.0 BkInterface:

RelyNextHop: 0.0.0.0 Neighbor : 0.0.0.0

Tunnel ID: 0x0 Label: NULL

BKTunnel ID: 0x0 BKLabel: NULL

State: Active Adv Age: 00h58m10s

Tag: 0


1 BGP配置

l 在以下路由协议的介绍中所指的路由器及路由器图标，代表了一般意义下的路由器以及运行了路由协议的以太网交换机。

l S3600V2-SI系列交换机不支持BGP功能。

相关链接

  • 1.1 BGP简介
  • 1.2 BGP配置任务简介
  • 1.3 配置BGP连接
  • 1.4 控制路由信息的生成
  • 1.5 控制路由信息的发布与接收
  • 1.6 配置BGP的路由属性
  • 1.7 调整和优化BGP网络
  • 1.8 配置大型BGP网络
  • 1.9 配置BGP GR
  • 1.10 开启Trap功能
  • 1.11 使能BGP日志功能
  • 1.12 配置BGP与BFD联动
  • 1.13 BGP显示和维护
  • 1.14 BGP典型配置举例
  • 1.15 BGP常见错误配置举例
父主题： 06-BGP配置


1.1 BGP简介

1.1.1 BGP概述

BGP（Border Gateway Protocol，边界网关协议）是一种用于AS（Autonomous System，自治系统）之间的动态路由协议。AS是拥有同一选路策略，在同一技术管理部门下运行的一组路由器。

早期发布的三个版本分别是BGP-1（RFC 1105）、BGP-2（RFC 1163）和BGP-3（RFC 1267），当前使用的版本是BGP-4（RFC 1771，已更新至RFC 4271）。BGP-4做为事实上的Internet外部路由协议标准，被广泛应用于ISP（Internet Service Provider，互联网服务提供商）之间。

下文中若不做特殊说明，所指的BGP均为BGP-4。

BGP特性描述如下：

l BGP是一种外部网关协议（Exterior Gateway Protocol，EGP），与OSPF、RIP等内部网关协议（Interior Gateway Protocol，IGP）不同，其着眼点不在于发现和计算路由，而在于控制路由的传播和选择最佳路由。

l BGP使用TCP作为其传输层协议（端口号179），提高了协议的可靠性。

l BGP支持CIDR（Classless Inter-Domain Routing，无类域间路由）。

l 路由更新时，BGP只发送更新的路由，大大减少了BGP传播路由所占用的带宽，适用于在Internet上传播大量的路由信息。

l BGP路由通过携带AS路径信息彻底解决路由环路问题。

l BGP提供了丰富的路由策略，能够对路由实现灵活的过滤和选择。

l BGP易于扩展，能够适应网络新的发展。

发送BGP消息的路由器称为BGP发言者（BGP Speaker），它接收或产生新的路由信息，并发布（Advertise）给其它BGP发言者。当BGP发言者收到来自其它自治系统的新路由时，如果该路由比当前已知路由更优、或者当前还没有该路由，它就把这条路由发布给自治系统内所有其它BGP发言者。

相互交换消息的BGP发言者之间互称对等体（Peer），若干相关的对等体可以构成对等体组（Peer group）。

BGP在路由器上以下列两种方式运行：

l IBGP（Internal BGP）：当BGP运行于同一自治系统内部时，被称为IBGP；

l EBGP（External BGP）：当BGP运行于不同自治系统之间时，称为EBGP。

1.1.2 BGP的消息类型

1. 消息头格式

BGP有5种消息类型：Open、Update、Notification、Keepalive和Route-refresh。这些消息有相同的报文头，其格式如图1-1 所示。

图1-1 BGP消息的报文头格式

主要字段的解释如下：

l Marker：16字节，用于标明BGP报文边界，所有比特均为“1”。

l Length：2字节，BGP消息总长度（包括报文头在内），以字节为单位。

l Type：1字节，BGP消息的类型。其取值从1到5，分别表示Open、Update、Notification、Keepalive和Route-refresh消息。其中，前四种消息是在RFC 1771中定义，而Type为5的消息则是在RFC 2918中定义的。

2. Open

Open消息是TCP连接建立后发送的第一个消息，用于建立BGP对等体之间的连接关系。其消息格式如图1-2 所示。

图1-2 BGP Open消息格式

主要字段的解释如下：

l Version：BGP的版本号。对于BGP-4来说，其值为4。

l My autonomous system：本地AS号。通过比较两端的AS号可以确定是EBGP连接还是IBGP连接。

l Hold time：保持时间。在建立对等体关系时两端要协商Hold Time，并保持一致。如果在这个时间内未收到对端发来的Keepalive消息或Update消息，则认为BGP连接中断。

l BGP identifier：BGP标识符。以IP地址的形式表示，用来识别BGP路由器。

l Opt Parm Len（Optional Parameters Length）：可选参数的长度。如果为0则没有可选参数。

l Optional parameters：可选参数。用于多协议扩展（Multiprotocol Extensions）等功能。

3. Update

Update消息用于在对等体之间交换路由信息。它既可以发布可达路由信息，也可以撤销不可达路由信息。其消息格式如图1-3 所示。

图1-3 BGP Update消息格式

一条Update报文可以通告一类具有相同路径属性的可达路由，这些路由放在NLRI（Network Layer Reachability Information，网络层可达性信息）字段中，Path Attributes字段携带了这些路由的属性，BGP根据这些属性进行路由的选择；同时Update报文还可以携带多条不可达路由，被撤销的路由放在Withdrawn Routes字段中。

主要字段的解释如下：

l Unfeasible routes length：不可达路由字段的长度，以字节为单位。如果为0则说明没有Withdrawn Routes字段。

l Withdrawn routes：不可达路由的列表。

l Total path attribute length：路径属性字段的长度，以字节为单位。如果为0则说明没有Path Attributes字段。

l Path attributes：与NLRI相关的所有路径属性列表，每个路径属性由一个TLV（Type-Length-Value）三元组构成。BGP正是根据这些属性值来避免环路，进行选路，协议扩展等。

l NLRI：可达路由的前缀和前缀长度二元组。

4. Notification

当BGP检测到错误状态时，就向对等体发出Notification消息，之后BGP连接会立即中断。其消息格式如图1-4 所示。

图1-4 BGP Notification消息格式

主要字段的解释如下：

l Error code：差错码，指定错误类型。

l Error subcode：差错子码，错误类型的详细信息。

l Data：用于辅助发现错误的原因，它的内容依赖于具体的差错码和差错子码，记录的是出错部分的数据，长度不固定。

5. Keepalive

BGP会周期性地向对等体发出Keepalive消息，用来保持连接的有效性。其消息格式中只包含报文头，没有附加其他任何字段。

6. Route-refresh

Route-refresh消息用来要求对等体重新发送指定地址族的路由信息。其消息格式如图1-5 所示。

图1-5 BGP Route-refresh消息格式

主要的字段解释如下：

l AFI：Address Family Identifier，地址族标识。

l Res.：保留，必须置0。

l SAFI：Subsequent Address Family Identifier，子地址族标识。

1.1.3 BGP的路由属性

1. 路由属性的分类

BGP路由属性是跟随路由一起发送出去的一组参数，封装在Update报文的Path attributes字段中。它对特定的路由进行了进一步的描述，使得路由接收者能够根据路由属性值对路由进行过滤和选择。

事实上，所有的BGP路由属性都可以分为以下四类：

l 公认必须遵循（Well-known mandatory）：所有BGP路由器都必须能够识别这种属性，且必须存在于Update消息中。如果缺少这种属性，路由信息就会出错。

l 公认可选（Well-known discretionary）：所有BGP路由器都可以识别，但不要求必须存在于Update消息中，可以根据具体情况来选择。

l 可选过渡（Optional transitive）：在AS之间具有可传递性的属性。BGP路由器可以不支持此属性，但它仍然会接收带有此属性的路由，并通告给其他对等体。

l 可选非过渡（Optional non-transitive）：如果BGP路由器不支持此属性，该属性被忽略，且不会通告给其他对等体。

BGP路由几种基本属性和对应的类别如表1-1 所示。

表1-1 路由属性和类别

属性名称 | 类别
ORIGIN | 公认必须遵循
AS_PATH | 公认必须遵循
NEXT_HOP | 公认必须遵循
LOCAL_PREF | 公认可选
ATOMIC_AGGREGATE | 公认可选
AGGREGATOR | 可选过渡
COMMUNITY | 可选过渡
MULTI_EXIT_DISC (MED) | 可选非过渡
ORIGINATOR_ID | 可选非过渡
CLUSTER_LIST | 可选非过渡

2. 几种主要的路由属性

(1) 源（ORIGIN）属性

ORIGIN属性定义路由信息的来源，标记一条路由是怎么成为BGP路由的。它有以下三种类型：

l IGP：优先级最高，说明路由产生于本AS内。

l EGP：优先级次之，说明路由通过EGP学到。

l incomplete：优先级最低，它并不是说明路由不可达，而是表示路由的来源无法确定。例如，引入的其它路由协议的路由信息。

(2) AS路径（AS_PATH）属性

AS_PATH属性按一定次序记录了某条路由从本地到目的地址所要经过的所有AS号。当BGP将一条路由通告到其他AS时，便会把本地AS号添加在AS_PATH列表的最前面。收到此路由的BGP路由器根据AS_PATH属性就可以知道去目的地址所要经过的AS。离本地AS最近的相邻AS号排在前面，其他AS号按顺序依次排列。如图1-6 所示。

图1-6 AS_PATH属性

通常情况下，BGP不会接受AS_PATH中已包含本地AS号的路由，从而避免了形成路由环路的可能。

在目前的实现中，根据某些特殊的具体应用需求，可以通过配置 peer allow-as-loop 命令允许AS号重复。

同时，AS_PATH属性也可用于路由的选择和过滤。在其他因素相同的情况下，BGP会优先选择路径较短的路由。比如在上图中，AS 50中的BGP路由器会选择经过AS 40的路径作为到目的地址8.0.0.0的最优路由。

在某些应用中，可以使用路由策略来人为地增加AS路径的长度，以便更为灵活地控制BGP路径的选择。

通过配置AS路径过滤列表，还可以针对AS_PATH属性中所包含的AS号来对路由进行过滤。

(3) 下一跳（NEXT_HOP）属性

BGP的下一跳属性和IGP的有所不同，不一定就是邻居路由器的IP地址。

下一跳属性取值情况分为三种，如图1-7 所示。

l BGP发言者把自己产生的路由发给所有邻居时，将把该路由信息的下一跳属性设置为自己与对端连接的接口地址；

l BGP发言者把接收到的路由发送给EBGP对等体时，将把该路由信息的下一跳属性设置为本地与对端连接的接口地址；

l BGP发言者把从EBGP邻居得到的路由发给IBGP邻居时，并不改变该路由信息的下一跳属性。如果配置了负载分担，等价路由被发给IBGP邻居时则会修改下一跳属性。关于“负载分担”的概念请参见“1.1.4 BGP的选路规则”。

图1-7 下一跳属性

(4) MED（MULTI_EXIT_DISC）

MED属性仅在相邻两个AS之间交换，收到此属性的AS一方不会再将其通告给任何其他第三方AS。

MED属性相当于IGP使用的度量值（metrics），它用于判断流量进入AS时的最佳路由。当一个运行BGP的路由器通过不同的EBGP对等体得到目的地址相同但下一跳不同的多条路由时，在其它条件相同的情况下，将优先选择MED值较小者作为最佳路由。如图1-8 所示，从AS 10到AS 20的流量将选择Router B作为入口。

图1-8 MED属性

通常情况下，BGP只比较来自同一个AS的路由的MED属性值。

在目前的实现中，通过配置 compare-different-as-med 命令，可以强制BGP比较来自不同AS的路由的MED属性值。

(5) 本地优先（LOCAL_PREF）属性

LOCAL_PREF属性仅在IBGP对等体之间交换，不通告给其他AS。它表明BGP路由器的优先级。

LOCAL_PREF属性用于判断流量离开AS时的最佳路由。当BGP的路由器通过不同的IBGP对等体得到目的地址相同但下一跳不同的多条路由时，将优先选择LOCAL_PREF属性值较高的路由。如图1-9 所示，从AS 20到AS 10的流量将选择Router C作为出口。

图1-9 LOCAL_PREF属性

(6) 团体（COMMUNITY）属性

团体属性也是跟随路由一起发送出去的一组特殊数据。根据需要，一条路由可以携带一个或多个团体属性值（每个团体属性值用一个四字节的整数表示）。接收到该路由的路由器就可以根据团体属性值对路由作出适当的处理（比如决定是否发布该路由、在什么范围发布等），从而能够简化路由策略的应用和降低维护管理的难度。

公认的团体属性有：

l INTERNET：缺省情况下，所有的路由都属于INTERNET团体。具有此属性的路由可以被通告给所有的BGP对等体。

l NO_EXPORT：具有此属性的路由在收到后，不能被发布到本地AS之外。如果使用了联盟，则不能被发布到联盟之外，但可以发布给联盟中的其他子AS（关于联盟的定义请参见“1.1.6 大规模BGP网络所遇到的问题”）。

l NO_ADVERTISE：具有此属性的路由被接收后，不能被通告给任何其他的BGP对等体。

l NO_EXPORT_SUBCONFED：具有此属性的路由被接收后，不能被发布到本地AS之外，也不能发布到联盟中的其他子AS。

1.1.4 BGP的选路规则

1. BGP选择路由的策略

在目前的实现中，BGP选择路由时采取如下策略：

(1) 首先丢弃下一跳（NEXT_HOP）不可达的路由；

(2) 优选Preferred-value值最大的路由；

(3) 优选本地优先级（LOCAL_PREF）最高的路由；

(4) 优选聚合路由；

(5) 优选AS路径（AS_PATH）最短的路由；

(6) 依次选择ORIGIN类型为IGP、EGP、Incomplete的路由；

(7) 优选MED值最低的路由；

(8) 依次选择从EBGP、联盟、IBGP学来的路由；

(9) 优选下一跳Cost值最低的路由；

(10) 优选CLUSTER_LIST长度最短的路由；

(11) 优选ORIGINATOR_ID最小的路由；

(12) 优选Router ID最小的路由器发布的路由。

(13) 优选地址最小的对等体发布的路由。

l CLUSTER_ID为路由反射器的集群ID，CLUSTER_LIST由CLUSTER_ID序列组成，反射器将自己的CLUSTER_ID加入CLUSTER_LIST中，若反射器收到路由中CLUSTER_LIST中包含有自己的CLUSTER_ID，则丢弃该路由，从而避免群内环路的发生。

l 如果配置了负载分担，并且有多条到达同一目的地的路由，则根据配置的路由条数选择多条路由进行负载分担。

2. 应用BGP负载分担时的选路

在BGP中，由于协议本身的特殊性，它产生的路由的下一跳地址可能不是当前路由器直接相连的邻居。常见的一个原因是：IBGP之间发布路由信息时不改变下一跳。这种情况下，为了能够将报文正确转发出去，路由器必须先找到一个直接可达的地址（查找IGP建立的路由表项），通过这个地址到达路由表中指示的下一跳。在上述过程中，去往直接可达地址的路由被称为依赖路由，BGP路由依赖于这些路由指导报文转发。根据下一跳地址找到依赖路由的过程就是路由迭代（recursion）。

目前系统支持基于迭代的BGP负载分担，即如果依赖路由本身是负载分担的（假设有三个下一跳地址），则BGP也会生成相同数量的下一跳地址来指导报文转发。需要说明的是，基于迭代的BGP负载分担并不需要命令配置，这一特性在系统上始终启用。

在实现方法上，BGP的负载分担与IGP的负载分担有所不同：

l IGP是通过协议定义的路由算法，对到达同一目的地址的不同路由，根据计算结果，将度量值（metric）相等的（如RIP、OSPF）路由进行负载分担，选择的标准很明确（按metric）。

l BGP本身并没有路由计算的算法，它只是一个选路的路由协议，因此，不能根据一个明确的度量值决定是否对路由进行负载分担，但BGP有丰富的选路规则，可以在对路由进行一定的选择后，有条件地进行负载分担，也就是将负载分担加入到BGP的选路规则中去。

l BGP只对AS_PATH属性、ORIGIN属性、LOCAL_PREF和MED值完全相同的路由进行负载分担。

l BGP负载分担特性适用于EBGP、IBGP以及联盟之间。

l 如果有多条到达同一目的地的路由，则根据配置的路由条数选择多条路由进行负载分担。

图1-10 BGP负载分担示意图

在图1-10 中，Router D和Router E是Router C的IBGP对等体。当Router A和Router B同时向Router C通告到达同一目的地的路由时，如果用户在Router C配置了负载分担（如balance 2），则当满足一定的选路规则后，并且两条路由具有相同的AS_PATH属性、ORIGIN属性、LOCAL_PREF和MED值时，Router C就把接收的两条路由同时加入到转发表中，实现BGP路由的负载分担。Router C只向Router D和Router E转发一次该路由，AS_PATH不变，但NEXT_HOP属性改变为Router C的地址，而不是原来的EBGP对等体地址。其它的BGP过渡属性将按最佳路由的属性传递。

3. BGP发布路由的策略

在目前的实现中，BGP发布路由时采用如下策略：

l 存在多条有效路由时，BGP发言者只将最优路由发布给对等体；

l BGP发言者只把自己使用的路由发布给对等体；

l BGP发言者从EBGP获得的路由会向它所有BGP对等体发布（包括EBGP对等体和IBGP对等体）；

l BGP发言者从IBGP获得的路由不向它的IBGP对等体发布；

l BGP发言者从IBGP获得的路由发布给它的EBGP对等体（关闭BGP与IGP同步的情况下，IBGP路由被直接发布；开启BGP与IGP同步的情况下，该IBGP路由只有在IGP也发布了这条路由时才会被同步并发布给EBGP对等体）；

l 连接一旦建立，BGP发言者将把自己所有的BGP路由发布给新对等体。

1.1.5 IBGP和IGP同步

同步是指IBGP和IGP之间的同步，其目的是为了避免出现误导外部AS路由器的现象发生。

如果一个AS中有非BGP路由器提供转发服务，经该AS转发的IP报文将可能因为目的地址不可达而被丢弃。如图1-11 所示，Router E通过BGP从Router D可以学到Router A的一条路由8.0.0.0/8，于是将到这个目的地址的报文转发给Router D，Router D查询路由表，发现下一跳是Router B（通过 peer next-hop-local 命令手动设置）。由于Router D从IGP学到了到Router B的路由，所以通过路由迭代，Router D将报文转发给Router C。但Router C并不知道去8.0.0.0/8的路由，于是将报文丢弃。

图1-11 IBGP和IGP同步

如果设置了同步特性，在IBGP路由加入路由表并发布给EBGP对等体之前，会先检查IGP路由表。只有在IGP也知道这条IBGP路由时，它才会被发布给EBGP对等体。

在下面的情况中，可以关闭同步特性。

l 本AS不是过渡AS（上图中的AS 20就属于一个过渡AS）

l 本AS内所有路由器建立IBGP全连接

1.1.6 大规模BGP网络所遇到的问题

1. 路由聚合

在大规模的网络中，BGP路由表十分庞大，使用路由聚合（Routes Aggregation）可以大大减小路由表的规模。

路由聚合实际上是将多条路由合并的过程。这样BGP在向对等体通告路由时，可以只通告聚合后的路由，而不是将所有的具体路由都通告出去。

目前系统支持自动聚合和手动聚合方式。使用后者还可以控制聚合路由的属性，以及决定是否发布具体路由。

2. BGP路由衰减

BGP路由衰减（Route Dampening）用来解决路由不稳定的问题。路由不稳定的主要表现形式是路由振荡（Route flaps），即路由表中的某条路由反复消失和重现。

发生路由振荡时，路由协议就会向邻居发布路由更新，收到更新报文的路由器需要重新计算路由并修改路由表。所以频繁的路由振荡会消耗大量的带宽资源和CPU资源，严重时会影响到网络的正常工作。

在多数情况下，BGP协议都应用于复杂的网络环境中，路由变化十分频繁。为了防止持续的路由振荡带来的不利影响，BGP使用衰减来抑制不稳定的路由。

BGP衰减使用惩罚值来衡量一条路由的稳定性，惩罚值越高则说明路由越不稳定。路由每发生一次振荡（路由从激活状态变为未激活状态，称为一次路由振荡），BGP便会给此路由增加一定的惩罚值（1000，此数值为系统固定，不可修改）。当惩罚值超过抑制阈值时，此路由被抑制，不加入到路由表中，也不再向其他BGP对等体发布更新报文。

被抑制的路由每经过一段时间，惩罚值便会减少一半，这个时间称为半衰期（Half-life）。当惩罚值降到再使用阈值时，此路由变为可用并被加入到路由表中，同时向其他BGP对等体发布更新报文。

图1-12 BGP衰减示意图

3. 对等体组

对等体组（Peer Group）是一些具有某些相同属性的对等体的集合。当一个对等体加入对等体组中时，此对等体将获得与所在对等体组相同的配置。当对等体组的配置改变时，组内成员的配置也相应改变。

在大型BGP网络中，对等体的数量会很多，其中很多对等体具有相同的策略，在配置时会重复使用一些命令，利用对等体组在很多情况下可以简化配置。

将对等体加入对等体组中，对等体与对等体组具有相同的路由更新策略，提高了路由发布效率。

如果对等体和对等体组都对某个选项做了配置，配置以最后一次的修改为准。

4. 团体

对等体组可以使一组对等体共享相同的策略，而利用团体可以使多个AS中的一组BGP路由器共享相同的策略。团体是一个路由属性，在BGP对等体之间传播，它并不受到AS范围的限制。

BGP路由器在将带有团体属性的路由发布给其它对等体之前，可以改变此路由原有的团体属性。

除了使用公认的团体属性外，用户还可以使用团体属性列表自定义扩展团体属性，以便更为灵活地控制路由策略。

5. 路由反射器

为保证IBGP对等体之间的连通性，需要在IBGP对等体之间建立全连接关系。假设在一个AS内部有n台路由器，那么应该建立的IBGP连接数就为n(n-1)/2。当IBGP对等体数目很多时，对网络资源和CPU资源的消耗都很大。

利用路由反射可以解决这一问题。在一个AS内，其中一台路由器作为路由反射器RR（Route Reflector），其它路由器做为客户机（Client）与路由反射器之间建立IBGP连接。路由反射器在客户机之间传递（反射）路由信息，而客户机之间不需要建立BGP连接。

既不是反射器也不是客户机的BGP路由器被称为非客户机（Non-Client）。非客户机与路由反射器之间，以及所有的非客户机之间仍然必须建立全连接关系。其示意图如图1-13 所示。

图1-13 路由反射器示意图

路由反射器和它的客户机组成了一个集群（Cluster）。某些情况下，为了增加网络的可靠性和防止单点故障，可以在一个集群中配置一个以上的路由反射器。这时，位于相同集群中的每个路由反射器都要配置相同的Cluster_ID，以避免路由循环。如图1-14 所示。

图1-14 多路由反射器

在某些网络中，路由反射器的客户机之间已经建立了全连接，它们可以直接交换路由信息，此时客户机到客户机之间的路由反射是没有必要的，而且还占用带宽资源。目前，系统支持配置相关命令来禁止在客户机之间反射路由。

禁止客户机之间的路由反射后，客户机到非客户机之间的路由仍然可以被反射。

6. 联盟

联盟（Confederation）是处理AS内部的IBGP网络连接激增的另一种方法，它将一个自治系统划分为若干个子自治系统，每个子自治系统内部的IBGP对等体建立全连接关系，子自治系统之间建立联盟内部EBGP连接关系。其示意图如图1-15 所示。

图1-15 联盟示意图

在不属于联盟的BGP发言者看来，属于同一个联盟的多个子自治系统是一个整体，外界不需要了解内部的子自治系统情况，联盟ID就是标识联盟这一整体的自治系统号，如上图中的AS 200就是联盟ID。

联盟的缺陷是：从非联盟方案向联盟方案转变时，要求路由器重新进行配置，逻辑拓扑也要改变。

在大型BGP网络中，路由反射器和联盟可以被同时使用。

1.1.7 BGP GR

GR是一种在协议重启或Master/Slave切换时保证转发业务不中断的机制。GR有两个角色：

l GR Restarter：发生协议重启或主备倒换事件且具有GR能力的设备。

l GR Helper：和GR Restarter具有邻居关系，协助完成GR流程的设备。

基于BGP的GR Restarter为了与BGP对等体建立一个BGP会话连接，首先要发送一个包含了GR能力的OPEN消息到对端，BGP对等体收到该消息后，得知发送方已具有GR能力。这样，通过OPEN消息交互GR能力，GR Restarter与其BGP对等体之间协商建立起GR Session连接。如果双方都没有交换GR能力的信息，建立起的会话也就不具备GR能力。

对于IRF设备，当进行Master/Slave切换时，会话项将丢失，此时具备GR感知能力的BGP对等体会将所有与该GR Restarter有关的路由进行失效标记。但在GR Time内仍按照这些路由进行报文转发，这样确保了在从BGP对等体重新收集路由信息的过程中没有报文丢失。

对于IRF设备，当进行Master/Slave切换时，GR Restarter会重新与BGP对等体建立GR Session连接，同时发送新的GR消息以宣告其重启完毕。此时两个BGP对等体间进行路由信息交换。交换完成后，GR Restarter根据新的路由转发信息更新路由表和转发表，删除失效的路由，完成BGP协议收敛。

1.1.8 MP-BGP

1. MP-BGP概述

传统的BGP-4只能管理IPv4单播的路由信息，对于使用其它网络层协议（如IPv6等）的应用，在跨自治系统传播时就受到一定限制。

为了提供对多种网络层协议的支持，IETF对BGP-4进行了扩展，形成MP-BGP，目前的MP-BGP标准是RFC 4760（Multiprotocol Extensions for BGP-4，BGP-4的多协议扩展）。

支持BGP扩展的路由器与不支持BGP扩展的路由器可以互通。

2. MP-BGP的扩展属性

BGP-4使用的报文中，与IPv4地址格式相关的三条信息都由Update报文携带，这三条信息分别是：NLRI、路径属性中的NEXT_HOP、路径属性中的AGGREGATOR（该属性中包含形成聚合路由的BGP发言者的IP地址）。

为实现对多种网络层协议的支持，BGP-4需要将网络层协议的信息反映到NLRI及NEXT_HOP。MP-BGP中引入了两个新的路径属性：

l MP_REACH_NLRI：Multiprotocol Reachable NLRI，多协议可达NLRI。用于发布可达路由及下一跳信息。

l MP_UNREACH_NLRI：Multiprotocol Unreachable NLRI，多协议不可达NLRI。用于撤销不可达路由。

这两种属性都是可选非过渡（Optional non-transitive）的，因此，不提供多协议能力的BGP发言者将忽略这两个属性的信息，不把它们传递给其它邻居。

3. 地址族

MP-BGP采用地址族（Address Family）来区分不同的网络层协议，关于地址族的一些取值可以参考RFC 1700（Assigned Numbers）。目前，系统实现了多种MP-BGP扩展应用，包括对VPN的扩展、对IPv6的扩展等，不同的扩展应用在各自的地址族视图下配置。

l 有关IPv6的扩展应用，请参见“三层技术-IP路由配置指导”中的“IPv6 BGP”。

l 本章不对MP-BGP地址族视图下的、与特定应用相关的命令作详细介绍。

1.1.9 协议规范

与BGP相关的协议规范有：

l RFC 1771：A Border Gateway Protocol 4 (BGP-4)

l RFC 2858：Multiprotocol Extensions for BGP-4

l RFC 3392：Capabilities Advertisement with BGP-4

l RFC 2918：Route Refresh Capability for BGP-4

l RFC 2439：BGP Route Flap Damping

l RFC 1997：BGP Communities Attribute

l RFC 2796：BGP Route Reflection

l RFC 3065：Autonomous System Confederations for BGP

l RFC 4271，A Border Gateway Protocol 4 (BGP-4)

l RFC 5291，Outbound Route Filtering Capability for BGP-4

l RFC 5292，Address-Prefix-Based Outbound Route Filter for BGP-4

l draft-ietf-idr-restart-08：Graceful Restart Mechanism for BGP


1.2 BGP配置任务简介

表1-2 BGP配置任务简介

配置任务 |  | 说明 | 详细配置
配置BGP连接 | 创建BGP连接 | 必选 | 1.3.2
 | 配置建立TCP连接使用的源接口 | 可选 | 1.3.3
 | 配置允许同非直连邻居建立EBGP连接 | 可选 | 1.3.4
控制路由信息的生成 | 配置BGP发布本地路由 | 二者至少选其一 | 1.4.2
 | 配置BGP引入其它路由 |  | 1.4.3
 | 配置BGP引入其它协议缺省路由 | 可选 | 1.4.4
控制路由信息的发布与接收 | 配置BGP路由聚合 | 可选 | 1.5.2
 | 配置向对等体/对等体组发送缺省路由 |  | 1.5.3
 | 配置BGP路由信息的发布/接收策略 |  | 1.5.4
 | 配置BGP与IGP路由同步 |  | 1.5.5
 | 限制从BGP对等体/对等体组接收的路由前缀数量 |  | 1.5.6
 | 配置BGP路由衰减 |  | 1.5.7
 | 配置shortcut路由 |  | 1.5.8
配置BGP的路由属性 | 为接收路由分配首选值 | 可选 | 1.6.2
 | 配置BGP的路由优先级 |  | 1.6.3
 | 配置Local-Preference缺省值 |  | 1.6.4
 | 配置MED属性 |  | 1.6.5
 | 配置下一跳属性 |  | 1.6.6
 | 配置AS_PATH属性 |  | 1.6.7
调整和优化BGP网络 | 配置BGP存活时间间隔与保持时间 | 可选 | 1.7.2
 | 配置发送路由更新报文的时间间隔 |  | 1.7.3
 | 配置BGP软复位 |  | 1.7.4
 | 配置BGP ORF能力 |  | 1.7.5
 | 使能4字节AS号抑制功能 |  | 1.7.6
 | 使能EBGP连接快速复位功能 |  | 1.7.7
 | 配置BGP建立TCP连接时进行MD5认证 |  | 1.7.8
 | 配置BGP负载分担 |  | 1.7.9
 | 禁止与对等体/对等体组建立会话 |  | 1.7.10
配置大型BGP网络 | 配置BGP对等体组 | 可选 | 1.8.2
 | 配置BGP团体 |  | 1.8.3
 | 配置BGP路由反射器 |  | 1.8.4
 | 配置BGP联盟 |  | 1.8.5
配置BGP GR |  | 可选 | 1.9
开启Trap功能 |  | 可选 | 1.10
使能BGP日志功能 |  | 可选 | 1.11
配置BGP与BFD联动 |  | 可选 | 1.12


1.3 配置BGP连接

本节讲述最基本的BGP网络配置过程。

在本节中，不对BGP和MP-BGP进行严格的区分，命令的适用情况请参考所在的视图。

1.3.1 配置准备

在配置BGP连接之前，需保证相邻节点在网络层互通。

1.3.2 创建BGP连接

要在路由器上创建BGP连接，必须配置该路由器所在的AS编号即启动BGP、配置对等体（对等体组）的AS编号。

Router ID用来在一个自治系统中唯一的标识一台路由器，一台路由器如果要运行BGP协议，则必须存在Router ID。

l 用户可以在启动BGP进入BGP视图后指定Router ID，配置时，必须保证自治系统中任意两台路由器的ID都不相同。通常的做法是将路由器的ID配置为与该路由器某个接口的IP地址一致，为了增加网络的可靠性，建议将Router ID配置为Loopback接口的IP地址。

l 如果没有在BGP视图下配置Router ID，则缺省使用全局Router ID。

l 如果BGP使用的是全局Router ID，当Router ID所在接口被删除时会重新选择路由器的Router ID。

l 如果是在BGP视图下手工配置的Router ID，只有使用 undo router-id 命令才能重新选择路由器的Router ID。

表1-3 创建BGP连接

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置全局Router ID | router id router-id | 可选 缺省情况下，未配置全局Router ID 如果没有配置全局Router ID，则按照下面的规则进行选择： (1) 如果存在配置IP地址的Loopback接口，则选择Loopback接口地址中最大的作为Router ID (2) 如果没有配置IP地址的Loopback接口，则从其他接口的IP地址中选择最大的作为Router ID（不考虑接口的up/down状态）
启动BGP，进入BGP视图 | bgp as-number | 必选 缺省情况下，系统没有运行BGP
配置Router ID | router-id router-id | 可选 缺省情况下，与全局Router ID相同
指定对等体/对等体组及其AS号 | peer { group-name | ip-address } as-number as-number | 必选 缺省情况下，没有指定对等体/对等体组AS号
配置使用 peer as-number 命令创建邻居时默认使能IPv4单播地址族 | default ipv4-unicast | 可选 缺省情况下，IPv4单播地址族处于使能状态
激活指定对等体 | peer ip-address enable | 可选 缺省情况下，BGP对等体是激活的
配置对等体/对等体组的描述信息 | peer { group-name | ip-address } description description-text | 可选 缺省情况下，对等体/对等体组没有描述信息

l 一个路由器只能位于一个AS内，因此一台路由器只能运行一个BGP进程。

l 必须首先创建对等体组，才能进行对等体组的相关配置。关于对等体组的创建可以参见“ 1.8.2 配置BGP对等体组 ”。

1.3.3 配置建立TCP连接使用的源接口

BGP使用TCP作为其传输层协议，缺省情况下，BGP使用到达对等体最佳路由的出接口作为与对等体/对等体组建立TCP连接的源接口。

当建立BGP连接的路由器之间存在冗余链路时，如果路由器上的一个接口发生故障，链路状态变为down，建立TCP连接的源接口可能会随之发生变化，导致BGP需要重新建立TCP连接，造成网络振荡。为了避免该情况的发生，建议网络管理员使用Loopback接口建立BGP连接，并将建立BGP连接所使用的源接口配置为Loopback接口，来提高BGP连接的可靠性和稳定性。

表1-4 配置建立TCP连接使用的源接口

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入BGP视图 | bgp as-number | -
配置与对等体/对等体组创建BGP会话时建立TCP连接使用的源接口 | peer { group-name | ip-address } connect-interface interface-type interface-number | 必选 缺省情况下，BGP使用到达BGP对等体的最佳路由的出接口作为与对等体/对等体组创建BGP会话时建立TCP连接的源接口

当两个设备之间建立多条BGP连接时，如果没有为每个连接明确指定建立TCP连接的源接口，可能会由于无法根据到达BGP对等体的最优路由确定TCP连接源接口从而导致无法建立TCP连接，在此情况下建议用户配置BGP对等体时明确配置BGP会话建立TCP连接的源接口。

1.3.4 配置允许同非直连邻居建立EBGP连接

当前路由器要与另外一个路由器建立EBGP连接，它们必须具有直连的物理链路，如果不满足这一要求，则必须使用 peer ebgp-max-hop命令允许它们之间经过多跳建立TCP连接。

表1-5 配置允许同非直连邻居建立EBGP连接

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入BGP视图 | bgp as-number | -
配置允许同非直接相连网络上的邻居建立EBGP连接 | peer { group-name | ip-address } ebgp-max-hop [ hop-count ] | 必选 缺省情况下，不允许同非直接相连网络上的邻居建立EBGP连接

直连EBGP对等体不需要配置 peer ebgp-max-hop命令。


1.4 控制路由信息的生成

BGP与IGP不同，其着眼点主要在于控制路由的传播和选择最佳路由。

要生成BGP路由，主要有以下两种途径：

l 配置BGP发布本地路由

l 引入其它路由

网络管理员也可以根据需要配置引入其它协议的缺省路由。

1.4.1 配置准备

在控制BGP路由信息的生成之前，需要先创建BGP连接。

1.4.2 配置BGP发布本地路由

用户可以在BGP视图下配置发布某个网段的路由，从而将该路由发布给对等体，通过该种方式发布的路由的Origin属性为IGP。网络管理员还可以通过使用路由策略更为灵活地控制所发布的路由。

需要注意的是，要发布的本地路由必须存在于IP路由表中。

表1-6 配置BGP发布本地路由

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入BGP视图 | bgp as-number | -
将网段路由发布到BGP路由表中 | network ip-address [ mask | mask-length ] route-policy route-policy-name | 必选 缺省情况下，BGP不发布任何网段路由

1.4.3 配置BGP引入其它路由

BGP可以向邻居AS发送本地AS内部网络的路由信息，但BGP不是自己去发现AS内部的路由信息，而是将IGP的路由信息引入到BGP路由表中，并发布给对等体。在引入IGP路由时，可以针对不同的路由协议来对路由信息进行过滤。

通过引入方式发布的路由的Origin属性为incomplete。

表1-7 配置BGP引入其它路由

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入BGP视图 | bgp as-number | -
引入其它协议路由信息并通告 | import-route protocol [ { process-id | all-processes } [ allow-direct | med med-value | route-policy route-policy-name ] * ] | 必选 缺省情况下，BGP不引入其它协议的路由 目前只有OSPF协议支持配置 allow-direct 参数

只能引入路由表中状态为active的路由，是否为active状态可以通过 display ip routing-table protocol 命令来查看。

1.4.4 配置BGP引入其它协议缺省路由

BGP不能通过 import-route 命令从其它协议引入缺省路由，如果要引入其它协议缺省路由，必须要使用下面命令进行配置。

表1-8 配置BGP引入其它协议缺省路由

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入BGP视图 | bgp as-number | -
引入其它协议路由信息并通告 | import-route protocol [ { process-id | all-processes } [ allow-direct | med med-value | route-policy route-policy-name ] * ] | 必选 缺省情况下，BGP不引入其它协议的路由 目前只有OSPF协议支持配置 allow-direct 参数
允许将缺省路由引入到BGP路由表中 | default-route imported | 必选 缺省情况下，BGP不允许将缺省路由引入到BGP路由表中


1.5 控制路由信息的发布与接收

1.5.1 配置准备

在控制BGP路由信息的发布与接收之前，需要先配置BGP连接。

1.5.2 配置BGP路由聚合

在中型或大型BGP网络中，在向对等体发布路由信息时，需要配置路由聚合，减小对等体路由表中的路由数量。BGP支持自动聚合和手动聚合两种聚合方式，同时配置时，手动聚合的优先级高于自动聚合的优先级。

1. 配置路由自动聚合

配置自动聚合功能后，BGP将对引入的IGP子网路由进行聚合，不再发布子网路由，而是发布聚合后的自然网段的路由。

需要注意的是，用 network 命令发布的路由不能进行自动聚合。

表1-9 配置路由自动聚合

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入BGP视图 | bgp as-number | -
配置对引入的IGP子网路由进行自动聚合 | summary automatic | 必选 缺省情况下，不对引入的IGP子网路由进行自动聚合

2. 配置路由手动聚合

自动聚合是按照自然网段进行聚合，而且只能对IGP引入的子网路由进行聚合。

通过配置手动聚合，用户可以同时对IGP引入的子网路由和用 network 命令发布的路由进行聚合，而且还可以根据需要定义聚合路由的子网掩码长度。

表1-10 配置路由手动聚合

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入BGP视图 | bgp as-number | -
配置路由手动聚合 | aggregate ip-address { mask | mask-length } [ as-set | attribute-policy route-policy-name | detail-suppressed | origin-policy route-policy-name | suppress-policy route-policy-name ] * | 必选 缺省情况下，不进行路由聚合

1.5.3 配置向对等体/对等体组发送缺省路由

通过配置向对等体/对等体组发送缺省路由，不论本地路由表中是否存在缺省路由，都将向指定对等体/对等体组发布一条下一跳地址为本地地址的缺省路由。

表1-11 配置向对等体/对等体组发送缺省路由

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入BGP视图 | bgp as-number | -
向对等体/对等体组发送缺省路由 | peer { group-name | ip-address } default-route-advertise [ route-policy route-policy-name ] | 必选 缺省情况下，不向对等体/对等体组发送缺省路由

1.5.4 配置BGP路由信息的发布/接收策略

1. 配置准备

配置BGP路由信息的发布/接收策略前，根据采取的策略，需要配置下列过滤器：

l 访问控制列表

l IP地址前缀列表

l 路由策略

l AS路径过滤列表

关于访问控制列表的详细配置过程，请参考“ACL和QoS配置指导”中的“ACL”。

关于IP地址前缀列表、路由策略和AS路径过滤列表的详细配置过程，请参考“三层技术-IP路由配置指导”中的“路由策略”。

2. 配置BGP路由信息的发布策略

用户可以使用路由策略、访问控制列表、AS路径过滤列表或IP地址前缀列表对发布给对等体的路由信息进行过滤，可以根据需求选择过滤策略。

表1-12 配置BGP路由信息的发布策略

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入BGP视图 | bgp as-number | -
配置引入的路由在发布时进行过滤 | filter-policy { acl-number | ip-prefix ip-prefix-name } export [ direct | isis process-id | ospf process-id | rip process-id | | static ] | 至少选其一 缺省情况下，不对发布的路由信息进行过滤 可以根据需求选择过滤策略 同时配置几种过滤策略时，按照如下顺序执行： l filter-policy export l peer filter-policy export l peer as-path-acl export l peer ip-prefix export l peer route-policy export 只有通过前面的过滤策略，才能继续执行后面的过滤策略；只有通过所有配置的过滤策略后，路由信息才能被发布
对发布给对等体/对等体组的路由指定路由策略 | peer { group-name | ip-address } route-policy route-policy-name export
为对等体/对等体组设置基于ACL的过滤策略 | peer { group-name | ip-address } filter-policy acl-number export
为对等体/对等体组设置基于AS路径过滤列表的BGP路由过滤策略 | peer { group-name | ip-address } as-path-acl as-path-acl-number export
为对等体/对等体组设置基于IP前缀列表的路由过滤策略 | peer { group-name | ip-address } ip-prefix ip-prefix-name export

3. 配置BGP路由信息的接收策略

用户可以使用路由策略、访问控制列表、AS路径过滤列表或IP地址前缀列表对从等体接收的路由信息进行过滤，只有满足某些条件的路由才能被BGP接收，并加到路由表中。

网络管理员可以根据需求选择过滤策略，可以对从所有对等体接收的路由信息进行过滤，也可以从指定对等体接收的路由信息进行过滤。

需要注意的是，对等体组的成员可以与所在的组使用不同的入方向路由策略，即接收路由时，各对等体可以选择自己的策略。

表1-13 配置BGP路由信息的接收策略

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入BGP视图 | bgp as-number | -
对接收的路由信息进行过滤 | filter-policy { acl-number | ip-prefix ip-prefix-name } import | 至少选其一 缺省情况下，不对接收的路由信息进行过滤 可以根据需求选择过滤策略 同时配置几种过滤策略时，按照如下顺序执行： l filter-policy import l peer filter-policy import l peer as-path-acl import l peer ip-prefix import l peer route-policy import 只有通过前面的过滤策略，才能继续执行后面的过滤策略；只有通过所有配置的过滤策略后，路由信息才能被接收
对来自对等体/对等体组的路由指定路由策略 | peer { group-name | ip-address } route-policy route-policy-name import
为对等体/对等体组设置基于ACL的过滤策略 | peer { group-name | ip-address } filter-policy acl-number import
为对等体/对等体组设置基于AS路径过滤列表的BGP路由过滤策略 | peer { group-name | ip-address } as-path-acl as-path-acl-number import
为对等体/对等体组设置基于IP前缀列表的路由过滤策略 | peer { group-name | ip-address } ip-prefix ip-prefix-name import

1.5.5 配置BGP与IGP路由同步

BGP路由器收到一条IBGP路由，缺省只检查该路由的下一跳是否可达。如果可达， BGP路由器就将这条IBGP路由发布给EBGP对等体。如果配置了同步特性，则需要同时满足以下条件， BGP路由器才会将该IBGP路由发布给EBGP对等体：

l 该路由的下一跳可达；

l 在IGP路由表中存在一条active的路由，与该IBGP路由的目的网段完全相同。（IGP路由是否为active状态可以通过 display ip routing-table protocol命令来查看）

表1-14 配置BGP与IGP路由同步

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入BGP视图 | bgp as-number | -
配置BGP与IGP路由同步 | synchronization | 必选 缺省情况下，BGP和IGP路由不同步

1.5.6 限制从BGP对等体/对等体组接收的路由前缀数量

表1-15 限制从BGP对等体/对等体组接收的路由前缀数量

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入BGP视图 | bgp as-number | -
配置当从指定对等体/对等体组收到的路由前缀数量超过最大值时，路由器中断BGP连接 | peer { group-name | ip-address } route-limit prefix-number [ percentage-value ] | 三者必选其一 缺省情况下，没有限制从BGP对等体/对等体组接收的路由前缀数量
配置当从指定对等体/对等体组收到的路由前缀数量超过最大值时，仅打印告警信息，路由器保持与指定对等体/对等体组的连接 | peer { group-name | ip-address } route-limit prefix-number alert-only [ percentage-value ]
配置当从指定对等体/对等体组收到的路由前缀数量超过允许的最大值时，路由器中断BGP连接，但会自动与对等体重建连接 | peer { group-name | ip-address } route-limit prefix-number reconnect reconnect-time [ percentage-value ]

1.5.7 配置BGP路由衰减

通过配置BGP衰减，可以抑制不稳定的路由信息，不将这类路由加入到路由表中，也不将这类路由向其他BGP对等体发布。

表1-16 配置BGP路由衰减

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入BGP视图 | bgp as-number | -
配置BGP路由衰减 | dampening [ half-life-reachable half-life-unreachable reuse suppress ceiling | route-policy route-policy-name ] * | 必选 缺省情况下，没有配置BGP路由衰减

1.5.8 配置shortcut路由

缺省情况下，接收到的EBGP路由的路由管理优先级为255，比本地生成的路由的管理优先级低。

通过将一条EBGP路由被配置成short-cut，那么这条路由在加入到路由表时将使用本地生成路由的路由管理值，而不是EBGP路由的路由管理值，此时，这条路由成为最佳路由的可能性被提高了很多。

表1-17 配置shortcut路由

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入BGP视图 | bgp as-number | -
配置 short-cut 路由 | network ip-address [ mask | mask-length ] short-cut | 可选 缺省情况下，接收到的EBGP路由的路由管理优先级为255


1.6 配置BGP的路由属性

BGP具有很多路由属性，利用这些属性可以改变BGP的选路策略。

1.6.1 配置准备

在配置BGP的路由属性之前，需要先配置BGP连接。

1.6.2 为接收路由分配首选值

BGP选择路由时将首先丢弃下一跳不可达的路由，其次再优选Preferred-value值最大的路由。

缺省情况下，从对等体/对等体组学到的路由的首选值为0，网络管理员可以为从某个对等体/对等体组接收的路由配置首选值，从而提高从指定对等体/对等体学到的路由的优先级。

表1-18 为接收路由分配首选值

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入BGP视图 | bgp as-number | -
为从对等体/对等体组接收的路由分配首选值 | peer { group-name | ip-address } preferred-value value | 可选 缺省情况下，从对等体/对等体组接收的路由的首选值为0

1.6.3 配置BGP的路由优先级

由于路由器上可能同时运行多个动态路由协议，就存在各个路由协议之间路由信息共享和选择的问题。系统为每一种路由协议设置一个优先级，在不同协议发现同一条路由时，优先级高的路由将被优先选择。

用户可以修改EBGP路由、IBGP路由以及用本地产生的BGP路由的路由优先级；还可以应用路由策略为匹配过滤条件的特定路由配置优先级，对于那些没有匹配的路由，使用缺省优先级。

表1-19 配置BGP的路由优先级

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入BGP视图 | bgp as-number | -
配置BGP路由的管理优先级 | preference { external-preference internal-preference local-preference | route-policy route-policy-name } | 可选 缺省情况下，EBGP路由的管理优先级为255，IBGP路由的管理优先级为255，本地产生的BGP路由的管理优先级为130

1.6.4 配置Local-Preference缺省值

Local-Preference用来判断流量离开AS时的最佳路由。当BGP的路由器通过不同的IBGP对等体得到目的地址相同但下一跳不同的多条路由时，将优先选择Local-Preference值较高的路由。

用户可以通过 default local-preference 命令改变BGP路由器向IBGP对等体发送的路由Local-Preference的缺省值。

表1-20 配置Local-Preference缺省值

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入BGP视图 | bgp as-number | -
配置本地优先级的缺省值 | default local-preference value | 可选 缺省情况下，本地优先级的缺省值为100

1.6.5 配置MED属性

MED用来判断流量进入AS时的最佳路由。当一个运行BGP的路由器通过不同的EBGP对等体得到目的地址相同但下一跳不同的多条路由时，在其它条件相同的情况下，将优先选择MED值较小者作为最佳路由。

1. 配置MED缺省值

表1-21 配置MED缺省值

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入BGP视图 | bgp as-number | -
配置系统MED的缺省值 | default med med-value | 可选 缺省情况下，MED的缺省值为0

2. 配置允许比较来自不同AS邻居路由的MED属性值

缺省情况下，BGP只比较来自同一个AS的路由的MED属性值。

通过配置 compare-different-as-med 命令，可以强制BGP比较来自不同AS的路由的MED属性值。

表1-22 配置允许比较来自不同AS邻居路由的MED属性值

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入BGP视图 | bgp as-number | -
配置允许比较来自不同AS邻居的路由路径的MED属性值 | compare-different-as-med | 必选 缺省情况下，不允许比较来自不同AS邻居的路由路径的MED属性值

3. 配置对来自同一AS的路由进行MED排序优选

缺省情况下，系统不会对来自同一AS的路由进行MED排序优选。

BGP选择最优路由时是将新的路由和当前BGP路由表中的最优路由进行比较，只要新的路由比当前BGP路由表中的最优路由更优，新的路由将成为最优路由，路由学习的顺序有可能会影响最优路由的选择结果。

图1-16 MED排序优选示意图

如上图所示所示，Router D分别从Router A和Router B学习到了到达网段10.0.0.0的路由，由于Router B的Router ID值较小，因此，从Router B学来的路由被选为最优路由：

Network NextHop MED LocPrf PrefVal Path/Ogn

*>i 10.0.0.0 2.2.2.2 50 0 300e

* i 3.3.3.3 50 0 200e

当路由器再从Router C学习到到达10.0.0.0 网段的路由时，由于它只和当前路由表的最优路由进行比较，由于Router C的Router ID值更小，相对更优，它将成为最优路由。

Network NextHop MED LocPrf PrefVal Path/Ogn

*>i 10.0.0.0 1.1.1.1 60 0 200e

* i 10.0.0.0 2.2.2.2 50 0 300e

* i 3.3.3.3 50 0 200e

但是如果将这条路由与从Router A学习到的路由进行比较，那么由于来自同一AS 200且MED值更大，应该视为无效路由。

通过在Router D上配置 bestroute compare-med 命令，Router D对于学习到的路由会首先按照路由来自的AS分组，对来自同一AS的路由根据MED值的大小进行优选，首先选出来MED值最小的路由，然后再对来自不同AS的路由进行优选，从而避免路由优选结果的不确定性。配置对来自同一AS的路由进行MED排序优选后，Router D上的BGP 路由表如下所示，从Router C学习到的到达10.0.0.0 网段的路由将成为最优路由。

Network NextHop MED LocPrf PrefVal Path/Ogn

*>i 10.0.0.0 3.3.3.3 50 0 200e

* i 10.0.0.0 2.2.2.2 50 0 300e

* i 1.1.1.1 60 0 200e

需要注意的是，BGP将无法进行负载分担，因为BGP要求进行负载分担的路由必须AS PATH相同。

表1-23 配置对来自同一AS的路由进行MED排序优选

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入BGP视图 | bgp as-number | -
配置根据路由来自的AS进行分组，并根据MED排序优选 | bestroute compare-med | 必选 缺省情况下，不根据路由来自的AS进行分组对MED排序优选

4. 配置允许比较来自同一联盟不同子自治系统邻居路由的MED属性值

表1-24 配置允许比较来自同一联盟不同子自治系统邻居路由的MED属性值

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入BGP视图 | bgp as-number | -
配置允许比较来自同一联盟不同子自治系统邻居路由的MED属性值 | bestroute med-confederation | 必选 缺省情况下，不比较来自同一联盟不同子自治系统邻居路由的MED属性值

只有AS_PATH里不包含联盟体外的子自治系统编号时，才会比较来自同一联盟不同子自治系统邻居路由的MED属性值，例如有三条路由，它们的AS-PATH值分别为65006 65009、65007 65009和65008 65009，MED值分别为2、3、1，由于第三条路由包含了联盟体外的子自治系统编号，因此在选择最优路由时第一条路由将成为最优路由。

1.6.6 配置下一跳属性

缺省情况下，路由器向IBGP对等体/对等体组发布路由时，不将自身地址作为下一跳，但有的时候为了保证IBGP邻居能够找到下一跳，可以配置将自身地址作为下一跳。以下图为例，Router A与Router B建立EBGP邻居关系，Router B与Router C建立IBGP邻居关系，Router B在向Router C发布从Router A学到的BGP路由时，如果Router C上没有到达1.1.1.1/24的路由，可以在Router B上配置 peer next-hop-local 命令将3.1.1.1/24做为下一跳，这样，Router C就能找到下一跳。

图1-17 配置BGP下一跳属性应用组网图一

在一些比较特殊的组网环境中（即两个BGP连接在同一网段的广播网），路由器向EBGP对等体/对等体组发布路由时不会将自身地址作为下一跳，以下图为例：Router A与Router B建立EBGP邻居关系，Router B与Router C建立IBGP邻居关系，两个BGP连接都位于同一个广播网1.1.1.0/24中，Router B向Router A发布EBGP路由时不会将自身地址1.1.1.2/24作为下一跳，但如果用户有需要，也可以通过通过配置 peer next-hop-local 命令实现将自身地址1.1.1.2/24作为下一跳。

图1-18 配置BGP下一跳属性应用组网图二

需要注意的是，如果配置了BGP负载分担，则不论是否配置了 peer next-hop-local 命令，本地路由器向IBGP对等体/对等体组发布路由时都先将下一跳地址改变为自身地址。

表1-25 配置BGP的下一跳属性

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入BGP视图 | bgp as-number | -
配置发布路由时将自身地址作为下一跳 | peer { group-name | ip-address } next-hop-local | 可选 缺省情况下，向EBGP对等体/对等体组发布路由时，将自身地址作为下一跳；向IBGP对等体/对等体组发布路由时，不将自身地址作为下一跳

1.6.7 配置AS_PATH属性

1. 配置允许本地AS号重复出现的次数

通常情况下，BGP会检查对等体发来的路由的AS_PATH属性，如果其中已存在本地AS号，则BGP会忽略此路由，以免形成路由环路。

通过配置 peer allow-as-loop 命令，可以允许本地AS号在所接收的路由的AS_PATH属性中出现，并可同时配置允许重复的次数。

表1-26 配置允许本地AS号重复出现的次数

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入BGP视图 | bgp as-number | -
配置允许本地AS号重复出现的次数 | peer { group-name | ip-address } allow-as-loop [ number ] | 必选 缺省情况下，不允许本地AS重复出现

2. 禁止路由器将AS_PATH当作选路算法中的一个因素

路由器在选择最优路由时会优选AS路径最短的路由，通过如下配置可以禁止路由器将AS_PATH当作选路算法中的一个因素。

表1-27 禁止路由器将AS_PATH当作选路算法中的一个因素

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入BGP视图 | bgp as-number | -
禁止路由器将AS_PATH当作选路算法中的一个因素 | bestroute as-path-neglect | 必选 缺省情况下，路由器将AS_PATH当作选路算法中的一个因素

3. 为对等体/对等体组定制一个虚拟的自治系统号

当网络管理员需要进行系统移植时，例如，Router A原来位于AS 2，现在需要将它移植到AS 3里，可以在Router A上为已经创建的EBGP对等体（组）配置一个虚拟的本地自治系统号2，将本地真实的AS号3隐藏起来；由于位于其他AS内的EBGP对等体只能看到这个虚拟AS号2，因此它们不需要改变现有配置，从而在系统升级调试过程中可以不中断现有的BGP服务。

表1-28 为对等体/对等体组定制一个虚拟的自治系统号

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入BGP视图 | bgp as-number | -
为对等体/对等体组定制一个虚拟的自治系统号 | peer { group-name | ip-address } fake-as as-number | 必选 缺省情况下，没有为对等体/对等体组配置虚拟的本地自治系统号

peer fake-as命令只适用于EBGP对等体/对等体组。

4. 配置AS号替换功能

在MPLS L3VPN中，如果PE和CE之间运行EBGP，由于BGP使用AS号检测路由环路，为保证路由信息的正确发送，需要为物理位置不同的站点分配不同的AS号。

如果物理分散的CE复用相同的AS号，就应该在PE上配置BGP的AS号替换功能。此功能是BGP的出口策略，在发布路由时有效。

使能了BGP的AS号替换功能后，当PE向指定对等体中的CE发布路由时，如果路由的AS_PATH中有与CE相同的AS号，将被替换成PE的AS号后再发布。

图1-19 BGP AS号替换应用示意图

如图1-19 所示，CE 1和CE 2都使用AS号800，在PE 2上使能针对CE 2的AS号替换功能。当CE 1发来的Update信息从PE 2发布给CE 2时，PE 2发现AS_PATH中存在与CE 2相同的AS号800，就把它替换为自己的AS号100，这需要注意的是，如果需要完全的连接性，PE 1上也需要做类似的配置。

表1-29 配置AS号替换功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入BGP视图 | bgp as-number | -
配置用本地AS号替换AS_PATH属性中指定对等体/对等体组的AS号 | peer { group-name | ip-address } substitute-as | 必选 缺省情况下，没有用本地AS号替换AS_PATH属性中指定对等体/对等体组的AS号

替换AS_PATH属性中的AS号命令仅在特定组网环境下使用，错误的配置会引起路由环路。

5. 配置发送BGP更新报文时AS_PATH属性中不携带私有AS号

表1-30 配置发送BGP更新报文时AS_PATH属性中不携带私有AS号

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入BGP视图 | bgp as-number | -
配置发送BGP更新报文时AS_PATH属性中不携带私有AS号 | peer { group-name | ip-address } public-as-only | 必选 缺省情况下，发送BGP更新报文时，携带私有自治系统号

6. 配置不检测EBGP路由的第一个AS号

通常情况下，BGP会检查对等体发来的路由的AS_PATH属性。如果第一个AS号不是BGP邻居的AS号，则丢弃此路由。

通过配置 ignore-first-as 命令，可以忽略对EBGP路由第一个AS号的检测。

表1-31 配置EBGP不检测路由的第一个AS号

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入BGP视图 | bgp as-number | -
配置不检测EBGP路由的第一个AS号 | ignore-first-as | 必选 缺省情况下，系统收到EBGP路由后，会检测路由的第一个AS号


1.7 调整和优化BGP网络

1.7.1 配置准备

在调整和优化BGP网络之前，需要先配置BGP连接。

1.7.2 配置BGP存活时间间隔与保持时间

当对等体间建立了BGP连接后，它们定时向对端发送Keepalive消息，以防止路由器认为BGP连接已中断。若路由器在设定的连接保持时间（Holdtime）内未收到对端的Keepalive消息或Update报文，则认为此BGP连接已中断，从而断开此BGP连接。

用户可以配置当前路由的BGP存活时间间隔与保持时间，也可以配置与指定对等体/对等体组建立连接的存活时间间隔和保持时间：

l 如果当前路由器的保持时间与对等体/对等体组上配置的不一致，则数值较小者作为协商后的保持时间。

l 存活时间间隔为0，协商的保持时间不为0时，以协商的保持时间的三分之一作为存活时间间隔发送keepalive消息。

l 存活时间间隔不为0时，以协商的保持时间的三分之一再与配置的存活时间间隔比较取最小值作为存活时间间隔发送keepalive消息。

表1-32 配置BGP存活时间间隔与保持时间

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入BGP视图 | bgp as-number | -
配置BGP的存活时间间隔与保持时间 | timer keepalive keepalive hold holdtime | 可选 缺省情况下，存活时间间隔为60秒，保持时间为180秒
配置指定对等体/对等体组的存活时间间隔和保持时间 | peer { group-name | ip-address } timer keepalive keepalive hold holdtime

l 合理的最大Keepalive消息发送间隔为保持时间的三分之一，且该发送间隔不能小于1秒，因此，保持时间如果不为0，则最小为3秒。

l 使用 timer 命令配置的定时器比使用 peer timer 命令配置的定时器优先级要低。

l 如果与对等体的邻居关系已经建立，必须要复位BGP连接才能使新配置的存活时间间隔与保持时间生效。

l 配置 timer 命令后，不会影响已建立的BGP连接，只对新建立的连接生效。

l 配置 peer timer 命令后，如果新配置的值与之前的配置值不同，会影响已建立的BGP连接：BGP连接会直接断开，再使用新参数重新建立连接。

1.7.3 配置发送路由更新报文的时间间隔

表1-33 配置发送路由更新报文的时间间隔

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入BGP视图 | bgp as-number | -
配置对等体/对等体组发送同一路由更新报文的时间间隔 | peer { group-name | ip-address } route-update-interval interval | 可选 缺省情况下，向IBGP对等体发送同一路由更新报文的时间间隔为15秒，向EBGP对等体发送同一路由更新报文的时间间隔为30秒

1.7.4 配置BGP软复位

BGP的选路策略改变后，为了使新的策略生效，必须复位BGP连接，但这样会造成短暂的BGP连接中断。

如果当前路由器和对等体都支持Route-Refresh功能，通过使能Route-Refresh功能，在策略改变时，系统可以在不中断BGP连接的情况下，自动对BGP路由表进行动态刷新。

如果对等体不支持Route-Refresh功能，则需要将从对等体接收的所有路由更新保存在本地，当选路策略发生改变后，在不中断连接的情况下重新刷新BGP路由表，并应用新的策略。

1. 通过使能Route-Refresh实现BGP软复位

在对等体支持并使能Route-Refresh功能的情况下，如果BGP的路由策略发生了变化，本地路由器会向BGP对等体发布Router-Refresh消息，收到此消息的对等体会将其路由信息重新发给本地路由器。这样，在不中断BGP连接的情况下，就可以对BGP路由表进行动态更新，并应用新的选路策略。

表1-34 通过使能Route-Refresh实现BGP软复位

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入BGP视图 | bgp as-number | -
使能BGP路由刷新功能 | peer { group-name | ip-address } capability-advertise route-refresh | 可选 缺省情况下，BGP路由刷新功能处于使能状态

2. 通过将所有路由更新保存在本地实现BGP软复位

当对等体不支持Route-Refresh功能时，可通过配置 peer keep-all-routes 命令将从对等体接收的所有路由更新保存在本地用户，然后再执行 refresh bgp 命令对保存在本地的所有路由使用路由策略重新过滤一遍。

表1-35 通过将所有路由更新保存在本地实现BGP软复位

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入BGP视图 | bgp as-number | -
禁止BGP路由刷新和多协议扩展功能 | peer { group-name | ip-address } capability-advertise conventional | 必选 缺省情况下，BGP路由刷新和多协议扩展功能处于使能状态
保存所有来自对等体/对等体组的原始路由信息 | peer { group-name | ip-address } keep-all-routes | 必选 缺省情况下，不保存所有来自对等体/对等体组的原始路由信息
退回用户视图 | return | -
手工对BGP连接进行软复位 | refresh bgp { all | ip-address | group group-name | external | internal } { export | import } | 必选

如果对端邻居不支持Route-Refresh功能，同时本端又未配置 peer keep-all-routes 命令，那么在修改BGP路由信息的接收策略后，需要根据策略的影响来决定是否手工断开邻居，重新学习路由。

1.7.5 配置BGP ORF能力

BGP ORF（Outbound Route Filtering，输出路由过滤）功能是将本地入口策略通过Route-refresh报文发送给邻居，当邻居需要向BGP对等体发送Update更新报文时，通过本地的路由策略后还需要进行ORF策略的过滤，只有通过ORF策略的路由信息才会发给BGP对等体，以达到减少BGP邻居间Update更新报文的交互，节省网络资源的目的。

使能BGP ORF能力后，本地和BGP对等体会通过Open报文协商ORF能力（即收发的报文里是否允许携带ORF信息，如果允许携带，是否可以携带非标准的ORF信息），当协商完毕并成功建立邻居关系后，可以通过特殊的Route-refresh报文交互ORF信息。

ORF能力协商成功需要两端的配置来保证，关于两端参数的选择请参见 表1-37 。

表1-36 配置BGP ORF能力

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入BGP视图 | bgp as-number | -
使能BGP路由刷新功能 | peer { group-name | ip-address } capability-advertise route-refresh | 必选 缺省情况下，BGP路由刷新功能处于使能状态
使能BGP邻居的非标准ORF能力 | peer { group-name | ip-address } capability-advertise orf non-standard | 可选 缺省情况下，BGP ORF能力支持RFC5291、RFC5292的标准能力 如果对端只支持非标准值的ORF报文，则必须配置该命令
使能BGP邻居的ORF能力 | peer { group-name | ip-address } capability-advertise orf ip-prefix { both | receive | send } | 必选 缺省情况下，BGP对等体/对等体组不使能邻居的ORF能力

表1-37 both、send、receive参数选择以及配置效果描述表

本地选择参数 | 对端选择参数 | 协商成功后
send | receive | 本端的ORF发送能力，对端的ORF接收能力
 | both
receive | send | 本端的ORF接收能力，对端的ORF发送能力
 | both
both | both | 双向的ORF发送和接收能力

1.7.6 使能4字节AS号抑制功能

通常情况下，设备在与对端设备建立BGP对等体连接关系时会发送BGP Open消息，在消息中的Optional parameters字段携带信息：说明AS号取值占用4字节（即取值范围为1～4294967295）。此时，如果对端设备不支持AS号取值为4字节（比如只支持2字节），则连接关系无法建立。

为了解决上述问题，您可以使能4字节AS号抑制功能：当对端设备不支持AS号取值为4字节时，设备发出的BGP Open消息仍然可以被对端设备正常识别，从而BGP对等体连接关系可以成功建立。

表1-38 使能4字节AS号抑制功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入BGP视图 | bgp as-number | -
使能4字节AS号抑制功能 | peer { group-name | ip-address } capability-advertise suppress-4-byte-as | 必选 缺省情况下，设备没有使能4字节AS号抑制功能

如果对端设备支持4字节AS号能力时，请不要使能该功能，否则会导致对等体无法建立。

1.7.7 使能EBGP连接快速复位功能

路由器在设定的连接保持时间（Holdtime）内未收到对端的Keepalive消息或Update报文，则认为此BGP连接已中断，从而断开此BGP连接。

通过使能EBGP连接快速复位功能，如果当前路由器与直连的EBGP邻居链路变为down状态，系统将重新建立与该邻居的EBGP会话。

表1-39 使能EBGP连接快速复位功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入BGP视图 | bgp as-number | -
使能EBGP连接快速复位功能 | ebgp-interface-sensitive | 可选 缺省情况下，使能EBGP连接快速复位功能处于关闭状态

1.7.8 配置BGP建立TCP连接时进行MD5认证

BGP使用TCP做为传输层协议，为提高BGP的安全性，可以配置BGP在建立TCP连接时进行MD5认证，即两台路由器必须配置相同的密码，才能建立TCP连接。

BGP的MD5认证并不能对BGP报文认证，它只是为TCP连接设置MD5认证密码，由TCP完成认证。如果认证失败，则不建立TCP连接。

表1-40 配置BGP建立TCP连接时进行MD5认证

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入BGP视图 | bgp as-number | -
配置BGP建立TCP连接时进行MD5认证 | peer { group-name | ip-address } password { cipher | simple } password | 可选 缺省情况下，BGP在建立TCP连接时不进行MD5认证

1.7.9 配置BGP负载分担

如果到一个目的地有几条开销相同的路径，可以实现等价路由负载分担，IP报文在这几个链路上负载分担，以提高链路利用率。

该配置用以设置BGP协议的最大等价路由条数。

表1-41 配置BGP负载分担

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入BGP视图 | bgp as-number | -
配置进行BGP负载分担的路由条数 | balance number | 可选 缺省情况下，BGP不进行路由负载分担

1.7.10 禁止与对等体/对等体组建立会话

表1-42 禁止与对等体/对等体组建立会话

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入BGP视图 | bgp as-number | -
禁止与对等体/对等体组建立会话 | peer { group-name | ip-address } ignore | 可选 缺省情况下，允许与BGP对等体/对等体组建立会话


1.8 配置大型BGP网络

在大型BGP网络中，对等体的数目众多，配置和维护极为不便，可以根据组网需要，配置对等体组、团体、路由反射器或联盟，以降低管理难度和提高路由发布效率。

1.8.1 配置准备

在配置大型BGP网络之前，需完成以下任务：相邻节点的网络层互通。

1.8.2 配置BGP对等体组

对等体组是具有相同更新策略的对等体的集合。

在大型BGP网络中，对等体的数量会很多，其中，很多对等体需要配置相同的策略，通过配置对等体组并将对等体加入到对等体组，可以使对等体获得与所在对等体组相同的配置，而且当对等体组的配置改变时，组内成员的配置也相应改变，从而简化配置。

根据对等体所在的AS，对等体组可分为：

l IBGP对等体组：对等体组中的对等体与当前路由器位于同一AS。

l EBGP对等体组：对等体组中的对等体与当前路由器位于不同AS。

需要注意的是，如果对等体组中已经存在对等体，则不能改变该对等体组的AS号，也不能使用 undo 命令删除已指定的AS号。

1. 配置IBGP对等体组

创建IBGP对等体组后，系统在将对等体加入IBGP对等体组时，会自动在BGP视图下创建该对等体，并设置其AS号为本地AS号。

表1-43 配置IBGP对等体组

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入BGP视图 | bgp as-number | - 缺省情况下，系统没有运行BGP
创建IBGP对等体组 | group group-name [ internal ] | 必选
向对等体组中加入对等体 | peer ip-address group group-name | 必选

2. 配置EBGP对等体组

根据对等体组中的对等体是否属于同一个外部AS，EBGP对等体组又可以分为纯EBGP对等体组和混合EBGP对等体组；如果对等体组中的对等体属于同一个外部AS，该对等体组就是纯EBGP对等体组；如果对等体组中的对等体属于不同外部AS，该对等体组就是混合EBGP对等体组。

用户有三种方式配置EBGP对等体组：

l 第一种方式是创建对等体组后，先指定AS号，再将对等体加入到对等体组中，该方式下加入的对等体具有相同的AS号；

l 第二种方式是创建对等体组完毕后，先配置对等体的AS号，再将对等体加入对等体组中。

l 第三种方式是创建对等体组完毕后，将对等体加入对等组的同时指定AS号。

表1-44 配置EBGP对等体组（方式一）

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入BGP视图 | bgp as-number | -
创建EBGP对等体组 | group group-name external | 必选
设置对等体组的AS号 | peer group-name as-number as-number | 必选
向对等体组中加入对等体 | peer ip-address group group-name | 必选

l 该方式下，对等体加入对等体之前不能配置AS号；

l 该方式下，对等体组中所有对等体的AS号等于对等体组的AS号。

表1-45 配置EBGP对等体组（方式二）

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入BGP视图 | bgp as-number | -
创建EBGP对等体组 | group group-name external | 必选
设置对等体的AS号 | peer ip-address as-number as-number | 必选
向对等体组中加入对等体 | peer ip-address group group-name [ as-number as-number ] | 必选 as-number as-number参数可选可不选，如果选择则必须和 peer ip-address as-number as-number命令中配置的一致

该方式下，对等体组中对等体的AS号可以相同也可以不同。

表1-46 配置EBGP对等体组（方式三）

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入BGP视图 | bgp as-number | -
创建EBGP对等体组 | group group-name external | 必选
向对等体组中加入对等体 | peer ip-address group group-name as-number as-number | 必选

l 该方式下，对等体加入对等体之前不能配置AS号；

l 该方式下，对等体组中对等体的AS号可以相同也可以不同。

1.8.3 配置BGP团体

团体是一组有相同特征的目的地址的集合，没有物理上的边界，与其所在的AS无关。

用户可以先通过路由策略定义一组目的地址属于某个指定团体，并配置向对等体/对等体组发布团体属性：

l 在向对等体/对等体组发布路由时可以指定发布策略，在发布策略中通过团体属性对发布给对等体/对等体组的路由信息进行过滤；

l 对等体/对等体组在接收路由信息时也可以指定接收策略，在接收策略中通过团体属性对从等体/对等体组接收的路由信息进行过滤。

在路由策略中通过团体来进行路由过滤，可以提高路由策略配置的灵活度，并简化路由策略的管理，从而降低维护管理的难度。

关于路由策略的详细配置，请参见“三层技术-IP路由配置指导”中的“路由策略”。

表1-47 配置BGP团体

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
进入BGP视图 |  | bgp as-number | -
配置向对等体/对等体组发布团体属性 | 配置向对等体/对等体组发布团体属性 | peer { group-name | ip-address } advertise-community | 必选 缺省情况下，不将团体属性和扩展团体属性发布给任何对等体/对等体组
 | 配置向对等体/对等体组发布扩展团体属性 | peer { group-name | ip-address } advertise-ext-community
对发布给对等体/对等体组的路由指定路由策略 |  | peer { group-name | ip-address } route-policy route-policy-name export | 必选 缺省情况下，不指定对等体/对等体组的路由策略

1.8.4 配置BGP路由反射器

如果同一个AS内有多个BGP路由器，为了减少在同一AS内建立的IBGP连接数，可以把几个BGP路由器划分为一个集群，将其中的一台路由器配置为反射器，其它路由器作为客户机。

为了增加网络的可靠性和防止单点故障，可以在一个集群中配置一个以上的路由反射器，这时，网络管理员必须给位于相同集群中的每个路由反射器配置相同的集群ID，以避免路由循环。

表1-48 配置BGP路由反射器

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入BGP视图 | bgp as-number | -
配置将本机作为路由反射器，并将对等体/对等体组作为路由反射器的客户 | peer { group-name | ip-address } reflect-client | 必选 缺省情况下，没有配置路由反射器及其客户
配置允许客户到客户的路由反射 | reflect between-clients | 可选 缺省情况下，允许客户到客户的路由反射
配置路由反射器的集群ID | reflector cluster-id cluster-id | 可选 缺省情况下，每个路由反射器是使用自己的Router ID作为集群ID

l 通常情况下，路由反射器的客户之间不要求是全连接的，路由缺省通过反射器从一个客户反射到其它客户；如果客户之间是全连接的，可以禁止客户间的反射，以便减少开销。

l 通常，一个集群里只有一个路由反射器。此时是由反射器的路由器ID来识别该集群的。设置多个路由反射器可提高网络的稳定性。如果一个集群中配有多个路由反射器，请使用 reflector cluster-id 命令为所有的路由反射器配置同样的集群ID，以避免路由循环。

1.8.5 配置BGP联盟

联盟（Confederation）是处理AS内部的IBGP网络连接激增的另一种方法，它将一个自治系统划分为若干个子自治系统，每个子自治系统内部的IBGP对等体建立全连接关系，子自治系统之间建立EBGP连接关系。

1. BGP联盟基本配置

网络管理员将一个自治系统划分为若干个子自治系统后，如果路由器位于联盟中的某个子自治系统中，需要在路由器上做如下配置：

(1) 首先，启动BGP，并指定该路由器所属的子自治系统号；

(2) 其次，配置联盟ID。在不属于联盟的BGP发言者看来，属于同一个联盟的多个子自治系统是一个整体，联盟ID就是标识联盟这一整体的自治系统号；

(3) 如果该路由器与该联盟的其它子自治系统建立EBGP邻居关系，需要在该路由器上指定该联盟体中除了自己还包含哪些子自治系统。

一个联盟最多可包括32个子自治系统，配置属于联盟的子自治系统时使用的 as-number 仅在联盟内部有效。

表1-49 配置BGP联盟

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入BGP视图 | bgp as-number | -
配置联盟ID | confederation id as-number | 必选 缺省情况下，未配置联盟的ID
指定一个联盟体中包含了哪些子自治系统 | confederation peer-as as-number-list | 必选 缺省情况下，未指定一个联盟体中包含了哪些子自治系统

2. 配置联盟兼容性

如果其他路由器的联盟实现机制不同于RFC 3065标准，可以通过如下配置与未采用RFC 3065配置的AS联盟兼容。

表1-50 配置联盟兼容性

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入BGP视图 | bgp as-number | -
配置与未采用RFC 3065配置的AS联盟兼容 | confederation nonstandard | 可选 缺省情况下，配置的联盟与RFC 3065一致


1.9 配置BGP GR

分别在作为GR Restarter和GR Helper的设备上进行以下配置。

一台设备可以同时具备GR Restarter和GR Helper能力。

表1-51 配置BGP GR

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入BGP视图 | bgp as-number | -
使能BGP协议的GR能力 | graceful-restart | 必选 缺省情况下，BGP协议的GR能力处于关闭状态
配置对端重建BGP会话连接的最大时间 | graceful-restart timer restart timer | 可选 缺省情况下，对端重建BGP会话连接的最大时间为150秒
配置等待End-Of-RIB标记的时间 | graceful-restart timer wait-for-rib timer | 可选 缺省情况下，等待End-Of-RIB标记的时间为180秒

l 通常情况下，对端重建会话连接的最大时间应小于OPEN消息中的Holdtime时间。接收侧（Receiving Speaker）检测到会话中断后，将等待指定时间以便重新建立会话连接。

l End-Of-RIB（End of Routing-Information-Base，路由信息库结束）标记用来标定路由更新发送的结束。


1.10 开启Trap功能

开启BGP模块的Trap功能后，该模块会生成级别为level4的警告Trap报文，用于报告该模块的重要事件。生成的Trap报文将被发送到设备的信息中心，通过设置信息中心的参数，最终决定Trap报文的输出规则（即是否允许输出以及输出方向）。（有关信息中心参数的配置请参见“网络管理和监控配置指导”中的“信息中心”。）

表1-52 开启Trap功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
开启BGP模块的Trap功能 | snmp-agent trap enable bgp | 可选 缺省情况下，BGP模块的Trap功能处于开启状态


1.11 使能BGP日志功能

表1-53 使能BGP日志功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入BGP视图 | bgp as-number | - 缺省情况下，系统没有运行BGP
全局使能BGP日志功能 | log-peer-change | 可选 缺省情况下，全局BGP日志功能处于使能状态
记录指定对等体/对等体组的会话状态和事件信息 | peer { group-name | ip-address } log-change | 可选 记录对等体/对等体组的会话状态和事件信息


1.12 配置BGP与BFD联动

BGP协议通过存活时间（Keepalive）定时器和保持时间（Holdtime）定时器来维护邻居关系。但这些定时器都是秒级的，而且根据协议规定，设置的保持时间应该至少为存活时间间隔的三倍。这样使得BGP邻居关系的检测比较慢，对于报文收发速度快的接口会导致大量报文丢失。通过配置BGP与BFD联动，使得BFD能够为BGP邻居之间的链路提供更快速的检测。当邻居之间的链路出现故障时，能够加快BGP协议的收敛速度。

表1-54 配置BGP与BFD联动

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入BGP视图 | bgp as-number | -
在指定邻居上使能BFD | peer ip-address bfd | 必选 缺省情况下，BGP的所有对等体邻居上都没有使能BFD链路检测功能

l 配置BFD之前，需要使能BGP功能。

l 在BGP使能GR能力后，请慎用BFD。因为当链路故障时，系统可能还没来得及启用GR处理流程，BFD已经检测到链路故障了，从而导致GR失败。如果设备上同时配置了BGP GR和BGP BFD，则在BGP GR期间请勿去使能BGP BFD，否则可能导致GR失败。

l 有关BFD的介绍和基本功能配置，请参见“可靠性配置指导”中的“BFD”。


1.13 BGP显示和维护

1.13.1 显示BGP

在完成上述配置后，在任意视图下执行 display 命令可以显示配置后BGP的运行情况，通过查看显示信息验证配置的效果。

表1-55 BGP配置显示

操作 | 命令
显示对等体组信息 | display bgp group [ group-name ] [ | { begin | exclude | include } regular-expression ]
显示BGP发布的路由信息 | display bgp network [ | { begin | exclude | include } regular-expression ]
显示AS路径信息 | display bgp paths [ as-regular-expression | | { begin | exclude | include } regular-expression ]
显示BGP对等体/对等体组的信息 | display bgp peer [ ip-address { log-info | verbose } | group-name log-info | verbose ] [ | { begin | exclude | include } regular-expression ]
显示从指定邻居收到的ORF报文中的前缀信息 | display bgp peer ip-address received ip-prefix [ | { begin | exclude | include } regular-expression ]
显示BGP路由信息 | display bgp routing-table [ ip-address [ { mask | mask-length } [ longer-prefixes ] ] ] [ | { begin | exclude | include } regular-expression ]
显示匹配指定AS路径过滤列表的BGP路由信息 | display bgp routing-table as-path-acl as-path-acl-number [ | { begin | exclude | include } regular-expression ]
显示CIDR的BGP路由信息 | display bgp routing-table cidr [ | { begin | exclude | include } regular-expression ]
显示匹配指定BGP团体的BGP路由信息 | display bgp routing-table community [ aa:nn&<1-13> ] [ no-advertise | no-export | no-export-subconfed ] * [ whole-match ] [ | { begin | exclude | include } regular-expression ]
显示匹配指定BGP团体列表的BGP路由 | display bgp routing-table community-list { { basic-community-list-number | comm-list-name } [ whole-match ] | adv-community-list-number } [ | { begin | exclude | include } regular-expression ]
显示BGP衰减的BGP路由信息 | display bgp routing-table dampened [ | { begin | exclude | include } regular-expression ]
显示BGP衰减的配置参数 | display bgp routing-table dampening parameter [ | { begin | exclude | include } regular-expression ]
显示源AS不一致的路由 | display bgp routing-table different-origin-as [ | { begin | exclude | include } regular-expression ]
显示BGP路由振荡统计信息 | display bgp routing-table flap-info [ regular-expression as-regular-expression | [ as-path-acl as-path-acl-number | ip-address [ { mask | mask-length } [ longer-match ] ] ] [ | { begin | exclude | include } regular-expression ] ]
显示BGP标签路由信息 | display bgp routing-table label [ | { begin | exclude | include } regular-expression ]
显示向指定的BGP对等体发送或者从BGP对等体收到的路由信息 | display bgp routing-table peer ip-address { advertised-routes | received-routes } [ network-address [ mask | mask-length ] | statistic ] [ | { begin | exclude | include } regular-expression ]
显示匹配AS正则表达式的路由信息 | display bgp routing-table regular-expression as-regular-expression
显示BGP的路由统计信息 | display bgp routing-table statistic [ | { begin | exclude | include } regular-expression ]
显示全局路由器ID | display router id [ | { begin | exclude | include } regular-expression ]

1.13.2 复位BGP连接

当BGP路由策略或协议发生变化后，如果需要通过复位BGP连接使新的配置生效，请在用户视图下进行下列配置。

表1-56 复位BGP连接

操作 | 命令
复位所有BGP连接 | reset bgp all
复位与指定AS之间的BGP连接 | reset bgp as-number
复位与指定对等体的BGP连接 | reset bgp ip-address [ flap-info ]
复位所有EBGP连接 | reset bgp external
复位与指定对等体组的BGP连接 | reset bgp group group-name
复位所有IBGP连接 | reset bgp internal
复位IPv4单播地址族下的所有BGP连接 | reset bgp ipv4 all

1.13.3 清除BGP信息

在用户视图下，执行 reset 命令可以清除BGP相关统计信息。

表1-57 清除BGP信息

操作 | 命令
清除路由的衰减信息并释放被抑制的路由 | reset bgp dampening [ ip-address [ mask | mask-length ] ]
清除路由的振荡统计信息 | reset bgp flap-info [ ip-address [ mask-length | mask ] | as-path-acl as-path-acl-number | regexp as-path-regular-expression ]


1.14 BGP典型配置举例

1.14.1 BGP基本配置

1. 组网需求

如 图1-20 所示，所有设备均运行BGP协议，Switch A和Switch B之间建立EBGP连接，Switch B和Switch C之间建立IBGP连接。要求Switch C能够访问Switch A直连的8.1.1.0/24网段。

2. 组网图

图1-20 BGP基本配置组网图

3. 配置步骤

(1) 配置各接口的IP地址（略）

(2) 配置IBGP连接

l 为了防止端口状态不稳定引起路由震荡，本举例使用Loopback接口来创建IBGP对等体。

l 使用Loopback接口创建IBGP对等体时，因为Loopback接口不是两对等体实际连接的接口，所以，必须使用 peer connect-interface 命令将Loopback接口配置为BGP连接的源接口。

l 在AS 65009内部，使用OSPF协议，保证Switch B到Switch C的Loopback接口路由可达， Switch C到Switch B的Loopback接口路由可达。

# 配置Switch B。

<SwitchB> system-view

[SwitchB] bgp 65009

[SwitchB-bgp] router-id 2.2.2.2

[SwitchB-bgp] peer 3.3.3.3 as-number 65009

[SwitchB-bgp] peer 3.3.3.3 connect-interface loopback 0

[SwitchB-bgp] quit

[SwitchB] ospf 1

[SwitchB-ospf-1] area 0

[SwitchB-ospf-1-area-0.0.0.0] network 2.2.2.2 0.0.0.0

[SwitchB-ospf-1-area-0.0.0.0] network 9.1.1.1 0.0.0.255

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

[SwitchB-ospf-1] quit

# 配置Switch C。

<SwitchC> system-view

[SwitchC] bgp 65009

[SwitchC-bgp] router-id 3.3.3.3

[SwitchC-bgp] peer 2.2.2.2 as-number 65009

[SwitchC-bgp] peer 2.2.2.2 connect-interface loopback 0

[SwitchC-bgp] quit

[SwitchC] ospf 1

[SwitchC-ospf-1] area 0

[SwitchC-ospf-1-area-0.0.0.0] network 3.3.3.3 0.0.0.0

[SwitchC-ospf-1-area-0.0.0.0] network 9.1.1.0 0.0.0.255

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

[SwitchC-ospf-1] quit

[SwitchC] display bgp peer

BGP local router ID : 3.3.3.3

Local AS number : 65009

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

Peer AS MsgRcvd MsgSent OutQ PrefRcv Up/Down State

2.2.2.2 65009 2 2 0 0 00:00:13 Established

以上显示信息表明Switch B和Switch C之间的IBGP连接已经建立。

(3) 配置EBGP连接

l EBGP邻居关系的两台路由器（通常属于两个不同运营商），处于不同的AS域，对端的Loopback接口一般路由不可达，所以一般使用直连地址建立BGP邻居。

l 因为要求Switch C能够访问Switch A直连的8.1.1.0/24网段，所以，建立EBGP连接后，需要将8.1.1.0/24网段路由通告到BGP路由表中。

# 配置Switch A。

<SwitchA> system-view

[SwitchA] bgp 65008

[SwitchA-bgp] router-id 1.1.1.1

[SwitchA-bgp] peer 3.1.1.1 as-number 65009

[SwitchA-bgp] network 8.1.1.1 24

[SwitchA-bgp] quit

# 配置Switch B。

[SwitchB] bgp 65009

[SwitchB-bgp] peer 3.1.1.2 as-number 65008

[SwitchB-bgp] quit

# 查看Switch B的BGP对等体的连接状态。

[SwitchB] display bgp peer

BGP local router ID : 2.2.2.2

Local AS number : 65009

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

Peer AS MsgRcvd MsgSent OutQ PrefRcv Up/Down State

3.3.3.3 65009 4 4 0 0 00:02:49 Established

3.1.1.2 65008 2 2 0 0 00:00:05 Established

可以看出，Switch B与Switch C、Switch B与Switch A之间的BGP连接均已建立。

# 查看Switch A的BGP路由表。

[SwitchA] display bgp routing-table

Total Number of Routes: 1

BGP Local router ID is 1.1.1.1

Status codes: * - valid, ^ - VPNv4 best, > - best, d - damped,

h - history, i - internal, s - suppressed, S - Stale

Origin : i - IGP, e - EGP, ? - incomplete

Network NextHop MED LocPrf PrefVal Path/Ogn

*> 8.1.1.0/24 0.0.0.0 0 0 i

# 显示Switch B的BGP路由表。

[SwitchB] display bgp routing-table

Total Number of Routes: 1

BGP Local router ID is 2.2.2.2

Status codes: * - valid, ^ - VPNv4 best, > - best, d - damped,

h - history, i - internal, s - suppressed, S - Stale

Origin : i - IGP, e - EGP, ? - incomplete

Network NextHop MED LocPrf PrefVal Path/Ogn

*> 8.1.1.0/24 3.1.1.2 0 0 65008i

# 显示Switch C的BGP路由表。

[SwitchC] display bgp routing-table

Total Number of Routes: 1

BGP Local router ID is 3.3.3.3

Status codes: * - valid, ^ - VPNv4 best, > - best, d - damped,

h - history, i - internal, s - suppressed, S - Stale

Origin : i - IGP, e - EGP, ? - incomplete

Network NextHop MED LocPrf PrefVal Path/Ogn

i 8.1.1.0/24 3.1.1.2 0 100 0 65008i

从路由表可以看出，Switch A没有学到AS 65009内部的任何路由，Switch C虽然学到了AS 65008中的8.1.1.0的路由，但因为下一跳3.1.1.2不可达，所以也不是有效路由。

(4) 配置BGP引入直连路由

在Switch B上配置BGP引入直连路由，以便Switch A能够获取到网段9.1.1.0/24的路由，Switch C能够获取到网段3.1.1.0/24的路由。

# 配置Switch B。

[SwitchB] bgp 65009

[SwitchB-bgp] import-route direct

# 显示Switch A的BGP路由表。

[SwitchA] display bgp routing-table

Total Number of Routes: 4

BGP Local router ID is 1.1.1.1

Status codes: * - valid, ^ - VPNv4 best, > - best, d - damped,

h - history, i - internal, s - suppressed, S - Stale

Origin : i - IGP, e - EGP, ? – incomplete

Network NextHop MED LocPrf PrefVal Path/Ogn

*> 2.2.2.2/32 3.1.1.1 0 0 65009?

* 3.1.1.0/24 3.1.1.1 0 0 65009?

*> 8.1.1.0/24 0.0.0.0 0 0 i

*> 9.1.1.0/24 3.1.1.1 0 0 65009?

以上显示信息表明，在Switch B上引入直连路由后，Switch A新增了到2.2.2.2/32和9.1.1.0/24两条路由。

# 显示Switch C的BGP路由表。

[SwitchC] display bgp routing-table

Total Number of Routes: 4

BGP Local router ID is 3.3.3.3

Status codes: * - valid, ^ - VPNv4 best, > - best, d - damped,

h - history, i - internal, s - suppressed, S - Stale

Origin : i - IGP, e - EGP, ? - incomplete

Network NextHop MED LocPrf PrefVal Path/Ogn

i 2.2.2.2/32 2.2.2.2 0 100 0 ?

*>i 3.1.1.0/24 2.2.2.2 0 100 0 ?

*>i 8.1.1.0/24 3.1.1.2 0 100 0 65008i

* i 9.1.1.0/24 2.2.2.2 0 100 0 ?

以上显示信息表明，到8.1.1.0的路由变为有效路由，下一跳为Switch A的地址。

(5) 结果验证

# 使用Ping进行验证。

[SwitchC] ping 8.1.1.1

PING 8.1.1.1: 56 data bytes, press CTRL_C to break

Reply from 8.1.1.1: bytes=56 Sequence=1 ttl=254 time=2 ms

Reply from 8.1.1.1: bytes=56 Sequence=2 ttl=254 time=2 ms

Reply from 8.1.1.1: bytes=56 Sequence=3 ttl=254 time=2 ms

Reply from 8.1.1.1: bytes=56 Sequence=4 ttl=254 time=2 ms

Reply from 8.1.1.1: bytes=56 Sequence=5 ttl=254 time=2 ms

--- 8.1.1.1 ping statistics ---

5 packet(s) transmitted

5 packet(s) received

0.00% packet loss

round-trip min/avg/max = 2/2/2 ms

1.14.2 BGP与IGP交互配置

1. 组网需求

公司A的所有设备在AS 65008内，公司B的所有设备在AS 65009内，AS 65008和AS 65009通过设备Switch A和Switch B相连。

现要求实现Switch A能够访问AS 65009内的网段9.1.2.0/24，Switch C能够访问AS 65008内的网段8.1.1.0/24。

2. 组网图

图1-21 BGP与IGP交互配置组网图

3. 配置步骤

(1) 配置各接口的IP地址（略）

(2) 配置OSPF

在AS 65009内配置OSPF，使得Switch B能获取到到9.1.2.0/24网段的路由。

# 配置Switch B。

<SwitchB> system-view

[SwitchB] ospf 1

[SwitchB-ospf-1] area 0

[SwitchB-ospf-1-area-0.0.0.0] network 2.2.2.2 0.0.0.0

[SwitchB-ospf-1-area-0.0.0.0] network 9.1.1.0 0.0.0.255

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

[SwitchB-ospf-1] quit

# 配置Switch C。

<SwitchC> system-view

[SwitchC] ospf 1

[SwitchC-ospf-1] import-route direct

[SwitchC-ospf-1] area 0

[SwitchC-ospf-1-area-0.0.0.0] network 9.1.1.0 0.0.0.255

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

[SwitchC-ospf-1] quit

(3) 配置EBGP连接

配置EBGP连接，并在Switch A上将8.1.1.0/24网段通告到BGP路由表中，以便Switch B获取到网段8.1.1.0/24的路由。

# 配置Switch A。

<SwitchA> system-view

[SwitchA] bgp 65008

[SwitchA-bgp] router-id 1.1.1.1

[SwitchA-bgp] peer 3.1.1.1 as-number 65009

[SwitchA-bgp] network 8.1.1.0 24

[SwitchA-bgp] quit

# 配置Switch B。

[SwitchB] bgp 65009

[SwitchB-bgp] router-id 2.2.2.2

[SwitchB-bgp] peer 3.1.1.2 as-number 65008

(4) 配置BGP与IGP交互

l 在Switch B上配置BGP引入OSPF路由，以便Switch A能够获取到到9.1.2.0/24网段的路由。

l 在Switch B上配置OSPF引入BGP路由，以便Switch C能够获取到到8.1.1.0/24网段的路由。

# 在Switch B上配置BGP引入OSPF路由。

[SwitchB-bgp] import-route ospf 1

[SwitchB-bgp] quit

[SwitchB] ospf 1

[SwitchB-ospf-1] import-route bgp

[SwitchB-ospf-1] quit

# 查看Switch A的BGP路由表。

[SwitchA] display bgp routing-table

Total Number of Routes: 3

BGP Local router ID is 1.1.1.1

Status codes: * - valid, ^ - VPNv4 best, > - best, d - damped,

h - history, i - internal, s - suppressed, S - Stale

Origin : i - IGP, e - EGP, ? - incomplete

Network NextHop MED LocPrf PrefVal Path/Ogn

*> 3.3.3.3/32 3.1.1.1 1 0 65009?

*> 8.1.1.0/24 0.0.0.0 0 0 i

*> 9.1.2.0/24 3.1.1.1 1 0 65009?

# 查看SwitchC的路由表。

[SwitchC] display ip routing-table

Routing Tables: Public

Destinations : 9 Routes : 9

Destination/Mask Proto Pre Cost NextHop Interface

2.2.2.2/32 OSPF 10 1 9.1.1.1 Vlan300

3.3.3.3/32 Direct 0 0 127.0.0.1 InLoop0

8.1.1.0/24 O_ASE 150 1 9.1.1.1 Vlan300

9.1.1.0/24 Direct 0 0 9.1.1.2 Vlan300

9.1.1.2/32 Direct 0 0 127.0.0.1 InLoop0

9.1.2.0/24 Direct 0 0 9.1.2.1 Vlan400

9.1.2.1/32 Direct 0 0 127.0.0.1 InLoop0

127.0.0.0/8 Direct 0 0 127.0.0.1 InLoop0

127.0.0.1/32 Direct 0 0 127.0.0.1 InLoop0

(5) 结果验证

# 使用Ping进行验证。

[SwitchA] ping -a 8.1.1.1 9.1.2.1

PING 9.1.2.1: 56 data bytes, press CTRL_C to break

Reply from 9.1.2.1: bytes=56 Sequence=1 ttl=254 time=15 ms

Reply from 9.1.2.1: bytes=56 Sequence=2 ttl=254 time=31 ms

Reply from 9.1.2.1: bytes=56 Sequence=3 ttl=254 time=47 ms

Reply from 9.1.2.1: bytes=56 Sequence=4 ttl=254 time=46 ms

Reply from 9.1.2.1: bytes=56 Sequence=5 ttl=254 time=47 ms

--- 9.1.2.1 ping statistics ---

5 packet(s) transmitted

5 packet(s) received

0.00% packet loss

round-trip min/avg/max = 15/37/47 ms

[SwitchC] ping -a 9.1.2.1 8.1.1.1

PING 8.1.1.1: 56 data bytes, press CTRL_C to break

Reply from 8.1.1.1: bytes=56 Sequence=1 ttl=254 time=2 ms

Reply from 8.1.1.1: bytes=56 Sequence=2 ttl=254 time=2 ms

Reply from 8.1.1.1: bytes=56 Sequence=3 ttl=254 time=2 ms

Reply from 8.1.1.1: bytes=56 Sequence=4 ttl=254 time=2 ms

Reply from 8.1.1.1: bytes=56 Sequence=5 ttl=254 time=2 ms

--- 8.1.1.1 ping statistics ---

5 packet(s) transmitted

5 packet(s) received

0.00% packet loss

round-trip min/avg/max = 2/2/2 ms

1.14.3 BGP负载分担配置

1. 组网需求

所有交换机都配置BGP，Switch A在AS 65008中，Switch B和Switch C在AS 65009中。

Switch A与Switch B、Switch C之间运行EBGP，Switch B和Switch C之间运行IBGP。

在Switch A上配置负载分担的路由条数为2，以提高链路利用率。

2. 组网图

图1-22 BGP负载分担配置组网图

3. 配置步骤

(1) 配置各接口的IP地址（略）

(2) 配置BGP连接

l 在Switch A上与Switch B、Switch C分别建立EBGP连接，并将8.1.1.0/24网段的路由通告给Switch B和Switch C，以便Switch B和Switch C能够访问Switch A的内部网络。

l 在Switch B上与Switch A建立EBGP连接，与Switch C建立IBGP连接，并将9.1.1.0/24网段的路由通告给Switch A，以便Switch A能够通过Switch B访问内部网络。同时，在Switch B上配置一条到Switch C Loopback0接口的静态路由（也可以用OSPF等协议来实现），以便使用Loopback接口建立IBGP连接。

l 在Switch C上与Switch A建立EBGP连接，与Switch B建立IBGP连接，并将9.1.1.0/24网段的路由通告给Switch A，以便Switch A能够通过Switch C访问内部网络。同时，在Switch C上配置一条到Switch B Loopback0接口的静态路由（也可以用OSPF等协议来实现），以便使用Loopback接口建立IBGP连接。

# 配置Switch A。

<SwitchA> system-view

[SwitchA] bgp 65008

[SwitchA-bgp] router-id 1.1.1.1

[SwitchA-bgp] peer 3.1.1.1 as-number 65009

[SwitchA-bgp] peer 3.1.2.1 as-number 65009

[SwitchA-bgp] network 8.1.1.1 24

[SwitchA-bgp] quit

# 配置Switch B。

<SwitchB> system-view

[SwitchB] bgp 65009

[SwitchB-bgp] router-id 2.2.2.2

[SwitchB-bgp] peer 3.1.1.2 as-number 65008

[SwitchB-bgp] peer 3.3.3.3 as-number 65009

[SwitchB-bgp] peer 3.3.3.3 connect-interface loopback 0

[SwitchB-bgp] network 9.1.1.0 255.255.255.0

[SwitchB-bgp] quit

[SwitchB] ip route-static 3.3.3.3 32 9.1.1.2

# 配置Switch C。

<SwitchC> system-view

[SwitchC] bgp 65009

[SwitchC-bgp] router-id 3.3.3.3

[SwitchC-bgp] peer 3.1.2.2 as-number 65008

[SwitchC-bgp] peer 2.2.2.2 as-number 65009

[SwitchC-bgp] peer 2.2.2.2 connect-interface loopback 0

[SwitchC-bgp] network 9.1.1.0 255.255.255.0

[SwitchC-bgp] quit

[SwitchC] ip route-static 2.2.2.2 32 9.1.1.1

# 查看Switch A的路由表。

[SwitchA] display bgp routing-table

Total Number of Routes: 3

BGP Local router ID is 1.1.1.1

Status codes: * - valid, ^ - VPNv4 best, > - best, d - damped,

h - history, i - internal, s - suppressed, S - Stale

Origin : i - IGP, e - EGP, ? – incomplete

Network NextHop MED LocPrf PrefVal Path/Ogn

*> 8.1.1.0/24 0.0.0.0 0 0 i

*> 9.1.1.0/24 3.1.1.1 0 0 65009i

* 3.1.2.1 0 0 65009i

l 从BGP路由表中可以看出，到目的地址9.1.1.0/24有两条有效路由，其中下一跳为3.1.1.1的路由前有标志“*>”，表示它是当前有效的最优路由（因为Switch B的路由器ID要小一些）；而下一跳为3.1.2.1的路由前只有标志“*”，表示它是当前有效的路由，但不是最优的。

l 使用 display ip routing-table 命令查看IP路由表项，可以看出到达目的地址9.1.1.0/24的路由只有一条，下一跳地址为3.1.1.1，出接口为Vlan200。

(3) 配置负载分担

因为Switch A有两条路径到达AS 65009的内部网络，所以，在Switch A配置负载分担的路由条数为2，以提高链路利用率。

# 配置Switch A。

[SwitchA] bgp 65008

[SwitchA-bgp] balance 2

[SwitchA-bgp] quit

(4) 结果验证

# 查看Switch A的路由表。

[SwitchA] display bgp routing-table

Total Number of Routes: 3

BGP Local router ID is 1.1.1.1

Status codes: * - valid, ^ - VPNv4 best, > - best, d - damped,

h - history, i - internal, s - suppressed, S - Stale

Origin : i - IGP, e - EGP, ? - incomplete

Network NextHop MED LocPrf PrefVal Path/Ogn

*> 8.1.1.0/24 0.0.0.0 0 0 i

*> 9.1.1.0/24 3.1.1.1 0 0 65009i

*> 3.1.2.1 0 0 65009i

l 从BGP路由表中可以看到，BGP路由9.1.1.0/24存在两个下一跳，分别是3.1.1.1和3.1.2.1，两条路由前都有标志“*>”，表明它们都是当前有效的最优路由。

l 使用 display ip routing-table 命令查看IP路由表项，可以看出到达目的地址9.1.1.0/24的路由有两条，其中一条的下一跳地址为3.1.1.1，出接口为Vlan200；另一条的下一跳地址为3.1.2.1，出接口为Vlan300。

1.14.4 BGP团体配置

1. 组网需求

Switch B分别与Switch A、Switch C之间建立EBGP连接。

通过在Switch A上配置NO_EXPORT团体属性，使得AS 10发布到AS 20中的路由，不再被AS 20向其他AS发布。

2. 组网图

图1-23 BGP团体组网图

3. 配置步骤

(1) 配置各接口的IP地址（略）

(2) 配置EBGP

# 配置Switch A。

<SwitchA> system-view

[SwitchA] bgp 10

[SwitchA-bgp] router-id 1.1.1.1

[SwitchA-bgp] peer 200.1.2.2 as-number 20

[SwitchA-bgp] network 9.1.1.0 255.255.255.0

[SwitchA-bgp] quit

# 配置Switch B。

<SwitchB> system-view

[SwitchB] bgp 20

[SwitchB-bgp] router-id 2.2.2.2

[SwitchB-bgp] peer 200.1.2.1 as-number 10

[SwitchB-bgp] peer 200.1.3.2 as-number 30

[SwitchB-bgp] quit

# 配置Switch C。

<SwitchC> system-view

[SwitchC] bgp 30

[SwitchC-bgp] router-id 3.3.3.3

[SwitchC-bgp] peer 200.1.3.1 as-number 20

[SwitchC-bgp] quit

# 查看Switch B的路由表。

[SwitchB] display bgp routing-table 9.1.1.0

BGP local router ID : 2.2.2.2

Local AS number : 20

Paths: 1 available, 1 best

BGP routing table entry information of 9.1.1.0/24:

From : 200.1.2.1 (1.1.1.1)

Original nexthop: 200.1.2.1

AS-path : 10

Origin : igp

Attribute value : MED 0, pref-val 0, pre 255

State : valid, external, best,

Advertised to such 1 peers:

200.1.3.2

可以看出，Switch B把收到的路由发布给了位于AS 30内的Switch C。

# 查看Switch C的路由表。

[SwitchC] display bgp routing-table

Total Number of Routes: 1

BGP Local router ID is 3.3.3.3

Status codes: * - valid, ^ - VPNv4 best, > - best, d - damped,

h - history, i - internal, s - suppressed, S - Stale

Origin : i - IGP, e - EGP, ? - incomplete

Network NextHop MED LocPrf PrefVal Path/Ogn

*> 9.1.1.0/24 200.1.3.1 0 0 20 10i

从路由表可以确认，Switch C从Switch B那里学到了目的地址为9.1.1.0/24的路由。

(3) 配置BGP团体属性

# 配置路由策略。

[SwitchA] route-policy comm_policy permit node 0

[SwitchA-route-policy] apply community no-export

[SwitchA-route-policy] quit

# 应用路由策略。

[SwitchA] bgp 10

[SwitchA-bgp] peer 200.1.2.2 route-policy comm_policy export

[SwitchA-bgp] peer 200.1.2.2 advertise-community

# 查看Switch B的路由表。

[SwitchB] display bgp routing-table 9.1.1.0

BGP local router ID : 2.2.2.2

Local AS number : 20

Paths: 1 available, 1 best

BGP routing table entry information of 9.1.1.0/24:

From : 200.1.2.1 (1.1.1.1)

Original nexthop: 200.1.2.1

Community : No-Export

AS-path : 10

Origin : igp

Attribute value : MED 0, pref-val 0, pre 255

State : valid, external, best,

Not advertised to any peers yet

在Switch B的BGP路由表中可以看到配置的团体属性。此时在Switch C的BGP路由表中已经没有到目的地址9.1.1.0/24的路由。

1.14.5 BGP路由反射器配置

1. 组网需求

所有交换机运行BGP协议，Switch A与Switch B建立EBGP连接，Switch C与Switch B和Switch D之间建立IBGP连接。

Switch C作为路由反射器，Switch B和Switch D为Switch C的客户机。

Switch D能够通过Switch C学到路由1.0.0.0/8。

2. 组网图

图1-24 配置BGP路由反射器的组网图

3. 配置步骤

(1) 配置各接口的IP地址（略）

(2) 配置BGP连接

# 配置Switch A。

<SwitchA> system-view

[SwitchA] bgp 100

[SwitchA-bgp] router-id 1.1.1.1

[SwitchA-bgp] peer 192.1.1.2 as-number 200

# 通告1.0.0.0/8网段路由到BGP路由表中。

[SwitchA-bgp] network 1.0.0.0

[SwitchA-bgp] quit

# 配置Switch B。

<SwitchB> system-view

[SwitchB] bgp 200

[SwitchB-bgp] router-id 2.2.2.2

[SwitchB-bgp] peer 192.1.1.1 as-number 100

[SwitchB-bgp] peer 193.1.1.1 as-number 200

[SwitchB-bgp] peer 193.1.1.1 next-hop-local

[SwitchB-bgp] quit

# 配置Switch C。

<SwitchC> system-view

[SwitchC] bgp 200

[SwitchC-bgp] router-id 3.3.3.3

[SwitchC-bgp] peer 193.1.1.2 as-number 200

[SwitchC-bgp] peer 194.1.1.2 as-number 200

[SwitchC-bgp] quit

# 配置Switch D。

<SwitchD> system-view

[SwitchD] bgp 200

[SwitchD-bgp] router-id 4.4.4.4

[SwitchD-bgp] peer 194.1.1.1 as-number 200

[SwitchD-bgp] quit

(3) 配置路由反射器

# 配置Switch C。

[SwitchC] bgp 200

[SwitchC-bgp] peer 193.1.1.2 reflect-client

[SwitchC-bgp] peer 194.1.1.2 reflect-client

[SwitchC-bgp] quit

(4) 验证配置效果

# 查看Switch B的BGP路由表。

[SwitchB] display bgp routing-table

Total Number of Routes: 1

BGP Local router ID is 200.1.2.2

Status codes: * - valid, ^ - VPNv4 best, > - best, d - damped,

h - history, i - internal, s - suppressed, S - Stale

Origin : i - IGP, e - EGP, ? - incomplete

Network NextHop MED LocPrf PrefVal Path/Ogn

*> 1.0.0.0 192.1.1.1 0 0 100i

# 查看Switch D的BGP路由表。

[SwitchD] display bgp routing-table

Total Number of Routes: 1

BGP Local router ID is 200.1.2.1

Status codes: * - valid, ^ - VPNv4 best, > - best, d - damped,

h - history, i - internal, s - suppressed, S - Stale

Origin : i - IGP, e - EGP, ? - incomplete

Network NextHop MED LocPrf PrefVal Path/Ogn

i 1.0.0.0 193.1.1.2 0 100 0 100i

可以看出，Switch D从Switch C已经学到了1.0.0.0/8路由。

1.14.6 BGP联盟配置

1. 组网需求

AS 200中有多台BGP交换机，为了减少IBGP的连接数，现将他们划分为3个子自治系统：AS 65001、AS 65002和AS 65003。其中AS 65001内的三台交换机建立IBGP全连接。

2. 组网图

图1-25 配置联盟组网图

设备 | 接口 | IP地址 | 设备 | 接口 | IP地址
Switch A | Vlan-int100 | 200.1.1.1/24 | Switch D | Vlan-int200 | 10.1.5.1/24
 | Vlan-int200 | 10.1.1.1/24 |  | Vlan-int400 | 10.1.3.2/24
 | Vlan-int300 | 10.1.2.1/24 | Switch E | Vlan-int200 | 10.1.5.2/24
 | Vlan-int400 | 10.1.3.1/24 |  | Vlan-int500 | 10.1.4.2/24
 | Vlan-int500 | 10.1.4.1/24 | Switch F | Vlan-int100 | 200.1.1.2/24
Switch B | Vlan-int200 | 10.1.1.2/24 |  | Vlan-int600 | 9.1.1.1/24
Switch C | Vlan-int300 | 10.1.2.2/24 |

3. 配置步骤

(1) 配置各接口的IP地址（略）

(2) 配置BGP联盟

# 配置Switch A。

<SwitchA> system-view

[SwitchA] bgp 65001

[SwitchA-bgp] router-id 1.1.1.1

[SwitchA-bgp] confederation id 200

[SwitchA-bgp] confederation peer-as 65002 65003

[SwitchA-bgp] peer 10.1.1.2 as-number 65002

[SwitchA-bgp] peer 10.1.1.2 next-hop-local

[SwitchA-bgp] peer 10.1.2.2 as-number 65003

[SwitchA-bgp] peer 10.1.2.2 next-hop-local

[SwitchA-bgp] quit

# 配置Switch B。

<SwitchB> system-view

[SwitchB] bgp 65002

[SwitchB-bgp] router-id 2.2.2.2

[SwitchB-bgp] confederation id 200

[SwitchB-bgp] confederation peer-as 65001 65003

[SwitchB-bgp] peer 10.1.1.1 as-number 65001

[SwitchB-bgp] quit

# 配置Switch C。

<SwitchC> system-view

[SwitchC] bgp 65003

[SwitchC-bgp] router-id 3.3.3.3

[SwitchC-bgp] confederation id 200

[SwitchC-bgp] confederation peer-as 65001 65002

[SwitchC-bgp] peer 10.1.2.1 as-number 65001

[SwitchC-bgp] quit

(3) 配置AS 65001内的IBGP连接

# 配置Switch A。

[SwitchA] bgp 65001

[SwitchA-bgp] peer 10.1.3.2 as-number 65001

[SwitchA-bgp] peer 10.1.3.2 next-hop-local

[SwitchA-bgp] peer 10.1.4.2 as-number 65001

[SwitchA-bgp] peer 10.1.4.2 next-hop-local

[SwitchA-bgp] quit

# 配置Switch D。

<SwitchD> system-view

[SwitchD] bgp 65001

[SwitchD-bgp] router-id 4.4.4.4

[SwitchD-bgp] confederation id 200

[SwitchD-bgp] peer 10.1.3.1 as-number 65001

[SwitchD-bgp] peer 10.1.5.2 as-number 65001

[SwitchD-bgp] quit

# 配置Switch E。

<SwitchE> system-view

[SwitchE] bgp 65001

[SwitchE-bgp] router-id 5.5.5.5

[SwitchE-bgp] confederation id 200

[SwitchE-bgp] peer 10.1.4.1 as-number 65001

[SwitchE-bgp] peer 10.1.5.1 as-number 65001

[SwitchE-bgp] quit

(4) 配置AS 100和AS 200之间的EBGP连接

# 配置Switch A。

[SwitchA] bgp 65001

[SwitchA-bgp] peer 200.1.1.2 as-number 100

[SwitchA-bgp] quit

# 配置Switch F。

<SwitchF> system-view

[SwitchF] bgp 100

[SwitchF-bgp] router-id 6.6.6.6

[SwitchF-bgp] peer 200.1.1.1 as-number 200

[SwitchF-bgp] network 9.1.1.0 255.255.255.0

[SwitchF-bgp] quit

(5) 验证配置结果

# 查看Switch B的BGP路由表。

[SwitchB] display bgp routing-table

Total Number of Routes: 1

BGP Local router ID is 2.2.2.2

Status codes: * - valid, ^ - VPNv4 best, > - best, d - damped,

h - history, i - internal, s - suppressed, S - Stale

Origin : i - IGP, e - EGP, ? - incomplete

Network NextHop MED LocPrf PrefVal Path/Ogn

*>i 9.1.1.0/24 10.1.1.1 0 100 0 (65001) 100i

[SwitchB] display bgp routing-table 9.1.1.0

BGP local router ID : 2.2.2.2

Local AS number : 65002

Paths: 1 available, 1 best

BGP routing table entry information of 9.1.1.0/24:

From : 10.1.1.1 (1.1.1.1)

Relay Nexthop : 0.0.0.0

Original nexthop: 10.1.1.1

AS-path : (65001) 100

Origin : igp

Attribute value : MED 0, localpref 100, pref-val 0, pre 255

State : valid, external-confed, best,

Not advertised to any peers yet

# 查看Switch D的BGP路由表。

[SwitchD] display bgp routing-table

Total Number of Routes: 1

BGP Local router ID is 4.4.4.4

Status codes: * - valid, ^ - VPNv4 best, > - best, d - damped,

h - history, i - internal, s - suppressed, S - Stale

Origin : i - IGP, e - EGP, ? - incomplete

Network NextHop MED LocPrf PrefVal Path/Ogn

*>i 9.1.1.0/24 10.1.3.1 0 100 0 100i

[SwitchD] display bgp routing-table 9.1.1.0

BGP local router ID : 4.4.4.4

Local AS number : 65001

Paths: 1 available, 1 best

BGP routing table entry information of 9.1.1.0/24:

From : 10.1.3.1 (1.1.1.1)

Relay Nexthop : 0.0.0.0

Original nexthop: 10.1.3.1

AS-path : 100

Origin : igp

Attribute value : MED 0, localpref 100, pref-val 0, pre 255

State : valid, internal, best,

Not advertised to any peers yet

通过以上显示信息可以看出：

l Switch F只需要和Switch A建立EBGP连接，而不需要和Switch B、Switch C建立连接，同样可以通过联盟将路由信息传递给Switch B和Switch C。

l Switch B和Switch D在同一个联盟里，但是属于不同的子自治域，它们都是通过Switch A来获取外部路由信息，生成的BGP路由表项也是一致的，等效于在同一个自治域内，但是又不需要物理上全连接。

1.14.7 BGP路径选择配置

1. 组网需求

所有交换机都运行BGP协议。Switch A与Switch B和Switch C之间运行EBGP；Switch D与Switch B和Switch C之间运行IBGP。

AS 200中运行OSPF协议。

配置不同的路由策略，使得Switch D优选Switch C学到的1.0.0.0/8路由。

2. 组网图

图1-26 配置BGP路径选择的组网图

设备 | 接口 | IP地址 | 设备 | 接口 | IP地址
Switch A | Vlan-int101 | 1.0.0.0/8 | Switch D | Vlan-int400 | 195.1.1.1/24
 | Vlan-int100 | 192.1.1.1/24 |  | Vlan-int300 | 194.1.1.1/24
 | Vlan-int200 | 193.1.1.1/24 | Switch C | Vlan-int400 | 195.1.1.2/24
Switch B | Vlan-int100 | 192.1.1.2/24 |  | Vlan-int200 | 193.1.1.2/24
 | Vlan-int300 | 194.1.1.2/24 |

3. 配置步骤

(1) 配置各接口的IP地址（略）

(2) 配置Switch B、Switch C和Switch D之间运行OSPF协议

# 配置Switch B。

<SwitchB> system-view

[SwitchB] ospf

[SwitchB-ospf] area 0

[SwitchB-ospf-1-area-0.0.0.0] network 192.1.1.0 0.0.0.255

[SwitchB-ospf-1-area-0.0.0.0] network 194.1.1.0 0.0.0.255

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

[SwitchB-ospf-1] quit

# 配置Switch C。

<SwitchC> system-view

[SwitchC] ospf

[SwitchC-ospf] area 0

[SwitchC-ospf-1-area-0.0.0.0] network 193.1.1.0 0.0.0.255

[SwitchC-ospf-1-area-0.0.0.0] network 195.1.1.0 0.0.0.255

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

[SwitchC-ospf-1] quit

# 配置Switch D。

<SwitchD> system-view

[SwitchD] ospf

[SwitchD-ospf] area 0

[SwitchD-ospf-1-area-0.0.0.0] network 194.1.1.0 0.0.0.255

[SwitchD-ospf-1-area-0.0.0.0] network 195.1.1.0 0.0.0.255

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

[SwitchD-ospf-1] quit

(3) 配置BGP连接

# 配置Switch A。

<SwitchA> system-view

[SwitchA] bgp 100

[SwitchA-bgp] peer 192.1.1.2 as-number 200

[SwitchA-bgp] peer 193.1.1.2 as-number 200

# 将1.0.0.0/8网段通告到Switch A的BGP路由表中。

[SwitchA-bgp] network 1.0.0.0 8

[SwitchA-bgp] quit

# 配置Switch B。

[SwitchB] bgp 200

[SwitchB-bgp] peer 192.1.1.1 as-number 100

[SwitchB-bgp] peer 194.1.1.1 as-number 200

[SwitchB-bgp] quit

# 配置Switch C。

[SwitchC] bgp 200

[SwitchC-bgp] peer 193.1.1.1 as-number 100

[SwitchC-bgp] peer 195.1.1.1 as-number 200

[SwitchC-bgp] quit

# 配置Switch D。

[SwitchD] bgp 200

[SwitchD-bgp] peer 194.1.1.2 as-number 200

[SwitchD-bgp] peer 195.1.1.2 as-number 200

[SwitchD-bgp] quit

(4) 通过配置1.0.0.0/8路由的不同属性值，使得Switch D优选Switch C学到的路由。

l 方法一：在Switch A上对发布给对等体192.1.1.2的1.0.0.0/8路由配置较高的MED属性值，使得Switch D优选Switch C学到的路由。

# 定义编号为2000的ACL，允许路由1.0.0.0/8通过。

[SwitchA] acl number 2000

[SwitchA-acl-basic-2000] rule permit source 1.0.0.0 0.255.255.255

[SwitchA-acl-basic-2000] quit

# 定义两个Route-policy，一个名为apply_med_50，为路由1.0.0.0/8设置MED属性值为50；另一个名为apply_med_100，为路由1.0.0.0/8设置MED属性值为100。

[SwitchA] route-policy apply_med_50 permit node 10

[SwitchA-route-policy] if-match acl 2000

[SwitchA-route-policy] apply cost 50

[SwitchA-route-policy] quit

[SwitchA] route-policy apply_med_100 permit node 10

[SwitchA-route-policy] if-match acl 2000

[SwitchA-route-policy] apply cost 100

[SwitchA-route-policy] quit

# 对发布给对等体193.1.1.2（SwitchC）的路由应用名为apply_med_50的Route-policy，对发布给对等体192.1.1.2（SwitchB）的路由应用名为apply_med_100的Route-policy。

[SwitchA] bgp 100

[SwitchA-bgp] peer 193.1.1.2 route-policy apply_med_50 export

[SwitchA-bgp] peer 192.1.1.2 route-policy apply_med_100 export

[SwitchA-bgp] quit

# 查看Switch D的BGP路由表。

[SwitchD] display bgp routing-table

Total Number of Routes: 2

BGP Local router ID is 194.1.1.1

Status codes: * - valid, ^ - VPNv4 best, > - best, d - damped,

h - history, i - internal, s - suppressed, S - Stale

Origin : i - IGP, e - EGP, ? - incomplete

Network NextHop MED LocPrf PrefVal Path/Ogn

*>i 1.0.0.0 193.1.1.1 50 100 0 100i

* i 192.1.1.1 100 100 0 100i

可以看到，Switch D从Switch C学到1.0.0.0/8的路由是最优的。

l 方法二：在Switch B和Switch C上分别对1.0.0.0/8路由配置不同的本地优先级，使得Switch D优选Switch C学到的路由。

# 在Switch C上定义编号为2000的ACL，允许1.0.0.0/8路由通过。

[SwitchC] acl number 2000

[SwitchC-acl-basic-2000] rule permit source 1.0.0.0 0.255.255.255

[SwitchC-acl-basic-2000] quit

# 在Switch C上定义名为localpref的Route-policy，设置路由1.0.0.0/8的本地优先级为200（缺省的本地优先级为100）。

[SwitchC] route-policy localpref permit node 10

[SwitchC-route-policy] if-match acl 2000

[SwitchC-route-policy] apply local-preference 200

[SwitchC-route-policy] quit

# 为从BGP对等体193.1.1.1的路由应用名为localpref的Router-policy。

[SwitchC] bgp 200

[SwitchC-bgp] peer 193.1.1.1 route-policy localpref import

[SwitchC-bgp] quit

# 查看Switch D的BGP路由表。

[SwitchD] display bgp routing-table

Total Number of Routes: 2

BGP Local router ID is 194.1.1.1

Status codes: * - valid, ^ - VPNv4 best, > - best, d - damped,

h - history, i - internal, s - suppressed, S - Stale

Origin : i - IGP, e - EGP, ? - incomplete

Network NextHop MED LocPrf PrefVal Path/Ogn

*>i 1.0.0.0 193.1.1.1 0 200 0 100i

* i 192.1.1.1 0 100 0 100i

可以看到，Switch D从Switch C学到1.0.0.0/8的路由是最优的。

1.14.8 BGP GR配置

1. 组网需求

如 图1-27 所示，所有路由器均运行BGP协议，Switch A和Switch B之间建立EBGP连接，Switch B和Switch C之间建立IBGP全连接。现要求实现即便Switch B发生主备倒换，也不会影响Switch A和Switch C之间正在进行的数据传输。

2. 组网图

图1-27 BGP GR配置组网图

3. 配置步骤

(1) Switch A的配置

# 配置各接口的IP地址（略）。

# 配置Switch A与Switch B的EBGP连接。

<SwitchA> system-view

[SwitchA] bgp 65008

[SwitchA-bgp] router-id 1.1.1.1

[SwitchA-bgp] peer 200.1.1.1 as-number 65009

# 将8.0.0.0/8网段路由通告到BGP路由表中。

[SwitchA-bgp] network 8.0.0.0

# 使能BGP GR功能。

[SwitchA-bgp] graceful-restart

(2) Switch B的配置

# 配置各接口的IP地址（略）。

# 配置Switch B与Switch A的EBGP连接。

<SwitchB> system-view

[SwitchB] bgp 65009

[SwitchB-bgp] router-id 2.2.2.2

[SwitchB-bgp] peer 200.1.1.2 as-number 65008

# 配置Switch B与Switch C的IBGP连接。

[SwitchB-bgp] peer 9.1.1.2 as-number 65009

# 将200.1.1.0/24和9.1.1.0/24网段路由通告到BGP路由表中。

[SwitchB-bgp] network 200.1.1.0 24

[SwitchB-bgp] network 9.1.1.0 24

# 使能BGP GR功能。

[SwitchB-bgp] graceful-restart

(3) Switch C的配置

# 配置各接口的IP地址（略）。

# 配置Switch C与Switch B的IBGP连接。

<SwitchC> system-view

[SwitchC] bgp 65009

[SwitchC-bgp] router-id 3.3.3.3

[SwitchC-bgp] peer 9.1.1.1 as-number 65009

# 使能BGP GR功能。

[SwitchC-bgp] graceful-restart

4. 功能验证

在Switch A上ping Switch C，同时在Switch B上触发主备倒换，可以发现在整个倒换过程中Switch A都可以ping通Switch C。

1.14.9 BGP与BFD联动配置

1. 组网需求

l 在AS 200内使用OSPF作为IGP协议；

l Switch A与Switch C建立两条IBGP连接。当Switch A与Switch C之间的两条链路均连通时，Switch C与1.1.1.0/24之间的报文使用Switch A<－>Switch B<－>Switch C这条路径；当Switch A<－>Switch B<－>Switch C链路故障时，BFD能够快速检测并通告BGP协议，使得Switch A<－>Switch D<－>Switch C这条路径能够迅速生效。

2. 组网图

图1-28 配置BGP与BFD联动组网图

设备 | 接口 | IP地址 | 设备 | 接口 | IP地址
Switch A | Vlan-int100 | 3.0.1.1/24 | Switch C | Vlan-int101 | 3.0.2.2/24
 | Vlan-int200 | 2.0.1.1/24 |  | Vlan-int201 | 2.0.2.2/24
Switch B | Vlan-int100 | 3.0.1.2/24 | Switch D | Vlan-int200 | 2.0.1.2/24
 | Vlan-int101 | 3.0.2.1/24 |  | Vlan-int201 | 2.0.2.1/24

3. 配置步骤

(1) 配置各接口的IP地址（略）

(2) 配置OSPF（略），保证Switch A和Switch C之间路由可达

(3) Switch A上的BGP配置

# 配置Switch A和Switch C建立两条IBGP连接。

<SwitchA> system-view

[SwitchA] bgp 100

[SwitchA-bgp] peer 3.0.2.2 as-number 200

[SwitchA-bgp] peer 2.0.2.2 as-number 200

[SwitchA-bgp] quit

# 配置当Switch A与Switch C之间的两条链路均连通时，Switch C与1.1.1.0/24之间的报文使用Switch A<－>Switch B<－>Switch C这条路径。（在Switch A上对发布给对等体2.0.2.2的1.1.1.0/24路由配置较高的MED属性值）

l 定义编号为2000的ACL，允许路由1.1.1.0/24通过。

[SwitchA] acl number 2000

[SwitchA-acl-basic-2000] rule permit source 1.1.1.0 24

[SwitchA-acl-basic-2000] quit

l 定义两个Route-policy，一个名为apply_med_50，为路由1.1.1.0/24设置MED属性值为50；另一个名为apply_med_100，为路由1.1.1.0/24设置MED属性值为100。

[SwitchA] route-policy apply_med_50 permit node 10

[SwitchA-route-policy] if-match acl 2000

[SwitchA-route-policy] apply cost 50

[SwitchA-route-policy] quit

[SwitchA] route-policy apply_med_100 permit node 10

[SwitchA-route-policy] if-match acl 2000

[SwitchA-route-policy] apply cost 100

[SwitchA-route-policy] quit

l 对发布给对等体3.0.2.2的路由应用名为apply_med_50的Route-policy，对发布给对等体2.0.2.2的路由应用名为apply_med_100的Route-policy。

[SwitchA] bgp 100

[SwitchA-bgp] peer 3.0.2.2 route-policy apply_med_50 export

[SwitchA-bgp] peer 2.0.2.2 route-policy apply_med_100 export

# 配置当Switch A<－>Switch B<－>Switch C链路故障时，BFD能够快速检测并通告BGP协议，使得Switch A<－>Switch D<－>Switch C这条路径能够迅速生效。

[SwitchA-bgp] peer 3.0.2.2 bfd

[SwitchA-bgp] quit

(4) Switch C上的BGP配置。

<SwitchC> system-view

[SwitchC] bgp 100

[SwitchC-bgp] peer 3.0.1.1 as-number 200

[SwitchC-bgp] peer 3.0.1.1 bfd

[SwitchC-bgp] peer 2.0.1.1 as-number 200

[SwitchC-bgp] quit

(5) 配置各路由器接口及BFD参数（该步骤可省略，使用BFD参数的缺省值即可）

# 配置Switch A。

[SwitchA] bfd session init-mode active

[SwitchA] interface vlan-interface 100

l 配置发送BFD控制报文的最小时间间隔为500毫秒。

[SwitchA-Vlan-interface100] bfd min-transmit-interval 500

l 配置接收BFD控制报文的最小时间间隔为500毫秒。

[SwitchA-Vlan-interface100] bfd min-receive-interval 500

l 配置BFD报文最大失效的个数为7。

[SwitchA-Vlan-interface100] bfd detect-multiplier 7

l 配置接口建立BFD会话时需要认证，采用明文认证方式方式，密码为ibgpbfd。

[SwitchA-Vlan-interface100] bfd authentication-mode simple 1 ibgpbfd

[SwitchA-Vlan-interface100] quit

# 配置Switch C。

[SwitchC] bfd session init-mode active

[SwitchC] interface vlan-interface 101

[SwitchC-Vlan-interface101] bfd min-transmit-interval 500

[SwitchC-Vlan-interface101] bfd min-receive-interval 500

[SwitchC-Vlan-interface101] bfd detect-multiplier 7

[SwitchC-Vlan-interface101] bfd authentication-mode simple 1 ibgpbfd

[SwitchC-Vlan-interface101] return

(6) 结果验证

下面以Switch C为例，Switch A和Switch C类似，不再赘述。

# 显示Switch C的BFD信息。

<SwitchC> display bfd session verbose

Total Session Num: 1 Init Mode: Active

IP Session Working Under Ctrl Mode:

Local Discr: 17 Remote Discr: 13

Source IP: 3.0.2.2 Destination IP: 3.0.1.1

Session State: Up Interface: Vlan-interface101

Min Trans Inter: 500ms Act Trans Inter: 500ms

Min Recv Inter: 500ms Act Detect Inter: 3000ms

Recv Pkt Num: 57 Send Pkt Num: 53

Hold Time: 2200ms Connect Type: Indirect

Running Up for: 00:00:06 Auth mode: Simple

Protocol: BGP6

Diag Info: No Diagnostic

以上显示信息表明：Switch A的VLAN接口100和Switch C的VLAN接口101之间已经建立了BFD连接，而且BFD协议运行正常。

# 在Switch C上查看BGP邻居信息，可以看出Switch A和Switch C之间BGP邻居处于Established状态。

<SwitchC> display bgp peer

BGP local router ID : 1.1.1.1

Local AS number : 200

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

Peer AS MsgRcvd MsgSent OutQ PrefRcv Up/Down State

2.0.1.1 200 7 10 0 0 00:01:05 Established

3.0.1.1 200 7 10 0 0 00:01:34 Established

# 在Switch C上查看1.1.1.0/24的路由信息，可以看出Switch A和Switch C是通过Switch B进行通信的。

<SwitchC> display ip routing-table 1.1.1.0 24 verbose

Routing Table : Public

Summary Count : 2

Destination: 1.1.1.0/24

Protocol: BGP Process ID: 0

Preference: 0 Cost: 50

NextHop: 3.0.1.1 Interface: Vlan-interface101

BkNextHop: 0.0.0.0 BkInterface:

RelyNextHop: 3.0.2.1 Neighbor : 3.0.1.1

Tunnel ID: 0x0 Label: NULL

State: Active Adv Age: 00h08m54s

Tag: 0

Destination: 1.1.1.0/24

Protocol: BGP Process ID: 0

Preference: 0 Cost: 100

NextHop: 2.0.1.1 Interface: Vlan-interface201

BkNextHop: 0.0.0.0 BkInterface:

RelyNextHop: 2.0.2.1 Neighbor : 2.0.1.1

Tunnel ID: 0x0 Label: NULL

State: Invalid Adv Age: 00h08m54s

Tag: 0

以上显示信息表明：Switch C到达1.1.1.0/24网段有两条路径：当前生效的是Switch A<－>Switch B<－>Switch C，Switch A<－>Switch D<－>Switch C这条路径没有生效。

# 打开Switch C的调试开关。

<SwitchC> debugging bfd scm

<SwitchC> debugging bfd event

<SwitchC> debugging bgp bfd

<SwitchC> terminal monitor

<SwitchC> terminal debugging

# Switch A和Switch B之间的链路发生故障后。可以看到Switch C能够快速检测到链路的变化。

%Nov 5 11:42:24:172 2009 SwitchC BFD/5/BFD_CHANGE_FSM: Sess[3.0.2.2/3.0.1.1, 13/17,VLAN101,Ctrl], Sta: UP->DOWN, Diag: 1

%Nov 5 11:42:24:172 2009 SwitchC BGP/5/BGP_STATE_CHANGED: 3.0.1.1 state is changed from ESTABLISHED to IDLE.

*Nov 5 11:42:24:187 2009 SwitchC RM/6/RMDEBUG: BGP_BFD: Recv BFD DOWN msg, Src IP 3.0.2.2, Dst IP 3.0.1.1, Instance ID 0.

*Nov 5 11:42:24:187 2009 SwitchC RM/6/RMDEBUG: BGP_BFD: Reset BGP session 3.0.1.1 for BFD session down.

*Nov 5 11:42:24:187 2009 SwitchC RM/6/RMDEBUG: BGP_BFD: Send DELETE msg to BFD, Connection type DIRECT, Src IP 3.0.2.2, Dst IP 3.0.1.1, Instance ID 0.

# 在Switch C上查看1.1.1.0/24的路由信息，可以看出Switch A和Switch C是通过Switch D进行通信的。

<SwitchC> display ip routing-table 1.1.1.0 24 verbose

Routing Table : Public

Summary Count : 1

Destination: 1.1.1.0/24

Protocol: BGP Process ID: 0

Preference: 0 Cost: 100

NextHop: 2.0.1.1 Interface: Vlan-interface201

BkNextHop: 0.0.0.0 BkInterface:

RelyNextHop: 2.0.2.1 Neighbor : 2.0.1.1

Tunnel ID: 0x0 Label: NULL

State: Active Adv Age: 00h09m54s

Tag: 0

以上显示信息表明：Switch C到达1.1.1.0/24网段有一条路径：Switch A<－>Switch D<－>Switch C。


1.15 BGP常见错误配置举例

1.15.1 BGP对等体关系不能建立

1. 故障现象

使用 display bgp peer 命令查看BGP对等体的信息，发现与对端的连接无法进入Established状态。

2. 分析

BGP邻居的建立需要能够使用179端口建立TCP会话，以及能够正确交换Open消息。

3. 处理过程

(1) 用 display current-configuration 命令检查邻居的AS号配置是否正确。

(2) 用 display bgp peer 命令检查邻居的IP地址是否正确。

(3) 如果使用Loopback接口，检查是否配置了 peer connect-interface 命令。

(4) 如果是物理上非直连的EBGP邻居，检查是否配置了 peer ebgp-max-hop 命令。

(5) 检查路由表中是否存在到邻居的可用路由。

(6) 使用 ping 命令检查链路是否畅通。

(7) 使用 display tcp status 命令检查TCP连接是否正常。

(8) 检查是否配置了禁止TCP端口179的ACL。


1 IPv6静态路由配置

本文所指的路由器代表运行了路由协议的三层设备。

相关链接

  • 1.1 IPv6静态路由简介
  • 1.2 配置IPv6静态路由
  • 1.3 IPv6静态路由显示和维护
  • 1.4 IPv6静态路由典型配置举例
父主题： 07-IPv6静态路由配置


1.1 IPv6静态路由简介

静态路由是一种特殊的路由，它由管理员手工配置。当网络结构比较简单时，只需配置静态路由就可以使网络正常工作。恰当地设置和使用静态路由可以改进网络的性能，并可为重要的应用保证带宽。

静态路由的缺点在于：当网络发生故障或者拓扑发生变化后，可能会出现路由不可达，导致网络中断，此时必须由网络管理员手工修改静态路由的配置。

1.1.1 IPv6静态路由属性及功能

IPv6静态路由与IPv4静态路由类似，适合于一些结构比较简单的IPv6网络。

它们之间的主要区别是目的地址和下一跳地址有所不同，IPv6静态路由使用的是IPv6地址，而IPv4静态路由使用IPv4地址。

1.1.2 IPv6缺省路由

在配置IPv6静态路由时，如果指定的目的地址为::/0（前缀长度为0），则表示配置了一条IPv6缺省路由。如果报文的目的地址无法匹配路由表中的任何一项，路由器将选择IPv6缺省路由来转发IPv6报文。


1.2 配置IPv6静态路由

在小型IPv6网络中，可以通过配置IPv6静态路由达到网络互连的目的。相对使用动态路由来说，可以节省带宽。

1.2.1 配置准备

在配置IPv6静态路由之前，需完成以下任务：

l 配置相关接口的物理参数

l 配置相关接口的链路层属性

l 使能IPv6报文转发能力

l 相邻节点网络层（IPv6）可达

1.2.2 配置IPv6静态路由

表1-1 配置IPv6静态路由

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置IPv6静态路由 | ipv6 route-static ipv6-address prefix-length { interface-type interface-number [ next-hop-address ] | next-hop-address } [ preference preference-value ] | 必选 缺省情况下，IPv6静态路由的优先级为60

在配置静态路由时，如果出接口类型为广播（如以太网接口、VLAN接口等）类型，必须指定下一跳地址。


1.3 IPv6静态路由显示和维护

在完成上述配置后，在任意视图下执行 display 命令查看IPv6静态路由配置的运行情况并检验配置结果。

在系统视图下执行 delete 命令可以删除所有IPv6静态路由。

表1-2 IPv6静态路由显示和维护

操作 | 命令
查看IPv6静态路由表信息 | display ipv6 routing-table protocol static [ inactive | verbose ] [ | { begin | exclude | include } regular-expression ]
删除所有IPv6静态路由 | delete ipv6 static-routes all

l 使用 undo ipv6 route-static 命令可以删除一条IPv6静态路由，而使用 delete ipv6 static-routes all 命令可以删除包括缺省路由在内的所有IPv6静态路由。

l 命令 display ipv6 routing-table protocol static [ inactive | verbose ] [ | { begin | exclude | include } regular-expression ]的详细情况请参见“三层技术-IP路由命令参考”中的“IP路由基础”。


1.4 IPv6静态路由典型配置举例

1. 组网要求

要求各交换机之间配置IPv6静态路由协议后，可以使所有主机和交换机之间互通。

2. 组网图

图1-1 IPv6静态路由配置举例组网图

3. 配置步骤

(1) 配置各VLAN虚接口的IPv6地址（略）

(2) 配置IPv6静态路由

# 在Switch A上配置IPv6缺省路由。

<SwitchA> system-view

[SwitchA] ipv6

[SwitchA] ipv6 route-static :: 0 4::2

# 在Switch B上配置两条IPv6静态路由。

<SwitchB> system-view

[SwitchB] ipv6

[SwitchB] ipv6 route-static 1:: 64 4::1

[SwitchB] ipv6 route-static 3:: 64 5::1

# 在Switch C上配置IPv6缺省路由。

<SwitchC> system-view

[SwitchC] ipv6

[SwitchC] ipv6 route-static :: 0 5::2

(3) 配置主机地址和网关

根据组网图配置好各主机的IPv6地址，并将Host A的缺省网关配置为1::1，Host B的缺省网关配置为2::1，Host C的缺省网关配置为3::1。

(4) 查看配置结果

# 查看Switch A的IPv6路由表。

[SwitchA] display ipv6 routing-table

Routing Table :

Destinations : 5 Routes : 5

Destination : :: Protocol : Static

NextHop : 4::2 Preference : 60

Interface : Vlan-interface200 Cost : 0

Destination : ::1/128 Protocol : Direct

NextHop : ::1 Preference : 0

Interface : InLoop0 Cost : 0

Destination : 1::/64 Protocol : Direct

NextHop : 1::1 Preference : 0

Interface : Vlan-interface100 Cost : 0

Destination : 1::1/128 Protocol : Direct

NextHop : ::1 Preference : 0

Interface : InLoop0 Cost : 0

Destination : FE80::/10 Protocol : Direct

NextHop : :: Preference : 0

Interface : NULL0 Cost : 0

# 使用Ping进行验证。

[SwitchA] ping ipv6 3::1

PING 3::1 : 56 data bytes, press CTRL_C to break

Reply from 3::1

bytes=56 Sequence=1 hop limit=254 time = 63 ms

Reply from 3::1

bytes=56 Sequence=2 hop limit=254 time = 62 ms

Reply from 3::1

bytes=56 Sequence=3 hop limit=254 time = 62 ms

Reply from 3::1

bytes=56 Sequence=4 hop limit=254 time = 63 ms

Reply from 3::1

bytes=56 Sequence=5 hop limit=254 time = 63 ms

--- 3::1 ping statistics ---

5 packet(s) transmitted

5 packet(s) received

0.00% packet loss

round-trip min/avg/max = 62/62/63 ms


1 RIPng配置

本文所指的路由器代表运行了路由协议的三层设备。

相关链接

  • 1.1 简介
  • 1.2 RIPng配置任务简介
  • 1.3 配置RIPng的基本功能
  • 1.4 配置RIPng路由特性
  • 1.5 调整和优化RIPng网络
  • 1.6 配置RIPng IPsec安全策略
  • 1.7 RIPng显示和维护
  • 1.8 RIPng典型配置举例
父主题： 08-RIPng配置


1.1 简介

RIPng又称为下一代RIP协议（RIP next generation），它是对原来的IPv4网络中RIP-2协议的扩展。大多数RIP的概念都可以用于RIPng。

为了在IPv6网络中应用，RIPng对原有的RIP协议进行了如下修改：

l UDP端口号：使用UDP的521端口发送和接收路由信息。

l 组播地址：使用FF02::9作为链路本地范围内的RIPng路由器组播地址。

l 前缀长度：目的地址使用128比特的前缀长度。

l 下一跳地址：使用128比特的IPv6地址。

l 源地址：使用链路本地地址FE80::/10作为源地址发送RIPng路由信息更新报文。

1.1.1 RIPng工作机制

RIPng协议是基于距离矢量（Distance-Vector）算法的协议。它通过UDP报文交换路由信息，使用的端口号为521。

RIPng使用跳数来衡量到达目的地址的距离（也称为度量值或开销）。在RIPng中，从一个路由器到其直连网络的跳数为0，通过与其相连的路由器到达另一个网络的跳数为1，其余以此类推。当跳数大于或等于16时，目的网络或主机就被定义为不可达。

RIPng每30秒发送一次路由更新报文。如果在180秒内没有收到网络邻居的路由更新报文，RIPng将从邻居学到的所有路由标识为不可达。如果再过120秒内仍没有收到邻居的路由更新报文，RIPng将从路由表中删除这些路由。

为了提高性能并避免形成路由环路，RIPng既支持水平分割也支持毒性逆转。此外，RIPng还可以从其它的路由协议引入路由。

每个运行RIPng的路由器都管理一个路由数据库，该路由数据库包含了到所有可达目的地的路由项，这些路由项包含下列信息：

l 目的地址：主机或网络的IPv6地址。

l 下一跳地址：为到达目的地，需要经过的相邻路由器的接口IPv6地址。

l 出接口：转发IPv6报文通过的出接口。

l 度量值：本路由器到达目的地的开销。

l 路由时间：从路由项最后一次被更新到现在所经过的时间，路由项每次被更新时，路由时间重置为0。

l 路由标记（Route Tag）：用于标识外部路由，以便在路由策略中根据Tag对路由进行灵活的控制。关于路由策略的详细信息，请参见“三层技术-IP路由配置指导”中的“路由策略”。

1.1.2 RIPng的报文格式

1. 基本格式

RIPng报文由头部（Header）和多个路由表项（RTEs）组成。在同一个RIPng报文中，RTE的最大条数与发送接口设置的IPv6 MTU有关。

RIPng报文基本格式如下图所示。

图1-1 RIPng报文基本格式

各字段的含义如下：

l Command：定义报文的类型。0x01表示Request报文，0x02表示Response报文。

l Version：RIPng的版本，目前其值只能为0x01。

l RTE（Route Table Entry）：路由表项，每项的长度为20字节。

2. RTE的格式

在RIPng里有两类RTE，分别是：

l 下一跳RTE：位于一组具有相同下一跳的“IPv6前缀RTE”的前面，它定义了下一跳的IPv6地址。

l IPv6前缀RTE：位于某个“下一跳RTE”的后面。同一个“下一跳RTE”的后面可以有多个不同的“IPv6前缀RTE”。它描述了RIPng路由表中的目的IPv6地址、路由标记、前缀长度以及度量值。

下一跳RTE的格式如下图所示。

图1-2 下一跳RTE格式

其中，IPv6 next hop address表示下一跳的IPv6地址。

IPv6前缀RTE的格式如下图所示。

图1-3 IPv6前缀RTE格式

各字段的解释如下：

l IPv6 prefix：目的IPv6地址的前缀。

l route tag：路由标记。

l prefix len：IPv6地址的前缀长度。

l metric：路由的度量值。

1.1.3 RIPng报文处理过程

1. Request报文

当RIPng路由器启动后或者需要更新部分路由表项时，便会发出Request报文，向邻居请求需要的路由信息。通常情况下以组播方式发送Request报文。

收到Request报文的RIPng路由器会对其中的RTE进行处理。如果Request报文中只有一项RTE，且IPv6前缀和前缀长度都为0，度量值为16，则表示请求邻居发送全部路由信息，被请求路由器收到后会把当前路由表中的全部路由信息，以Response报文形式发回给请求路由器。如果Request报文中有多项RTE，被请求路由器将对RTE逐项处理，更新每条路由的度量值，最后以Response报文形式返回给请求路由器。

2. Response报文

Response报文包含本地路由表的信息，一般在下列情况下产生：

l 对某个Request报文进行响应

l 作为更新报文周期性地发出

l 在路由发生变化时触发更新

收到Response报文的路由器会更新自己的RIPng路由表。为了保证路由的准确性，RIPng路由器会对收到的Response报文进行有效性检查，比如源IPv6地址是否是链路本地地址，端口号是否正确等，没有通过检查的报文会被忽略。

1.1.4 协议规范

与RIPng相关的规范有：

l RFC 2080：RIPng for IPv6

l RFC 2081：RIPng Protocol Applicability Statement


1.2 RIPng配置任务简介

表1-1 RIPng配置任务简介

配置任务 |  | 说明 | 详细配置
使能RIPng的基本功能 |  | 必选 | 1.3
配置RIPng路由特性 | 配置接口附加度量值 | 可选 | 1.4.1
 | 配置RIPng路由聚合 | 可选 | 1.4.2
 | 配置RIPng发布缺省路由 | 可选 | 1.4.3
 | 配置RIPng对接收/发布的路由进行过滤 | 可选 | 1.4.4
 | 配置RIPng协议优先级 | 可选 | 1.4.5
 | 配置RIPng引入外部路由 | 可选 | 1.4.6
调整和优化RIPng网络 | 配置RIPng定时器 | 可选 | 1.5.1
 | 配置水平分割和毒性逆转 | 可选 | 1.5.2
 | 配置RIPng报文的零域检查 | 可选 | 1.5.3
 | 配置最大等价路由条数 | 可选 | 1.5.4
配置RIPng IPsec安全策略 |  | 可选 | 1.6


1.3 配置RIPng的基本功能

RIPng基本功能的配置任务包括RIPng特性配置中涉及的基本配置，完成本节的配置就可以使用RIPng特性。

在RIPng的配置中，应该最先使能RIPng。但是与RIPng功能特性相关的接口配置不受是否启动了RIPng的限制，比如说给接口配置一个IPv6地址。

1.3.1 配置准备

在配置RIPng基本功能之前，需完成以下任务：

l 启动IPv6报文转发功能

l 配置接口的网络层地址，使相邻节点的网络层可达

1.3.2 配置RIPng的基本功能

表1-2 配置RIPng的基本功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
创建RIPng进程并进入RIPng视图 | ripng [ process-id ] | 必选 缺省情况下，没有RIPng进程在运行
退回系统视图 | quit | -
进入接口视图 | interface interface-type interface-number | -
在指定的网络接口上使能RIPng | ripng process-id enable | 必选 缺省情况下，接口禁用RIPng

如果接口没有使能RIPng，那么RIPng进程在该接口上既不发送也不接收RIPng路由。


1.4 配置RIPng路由特性

在配置RIPng的路由特性之前，需完成以下任务：

l 配置接口的网络层地址

l 配置RIPng基本功能

l 如果使用IPv6 ACL进行路由过滤，需要定义IPv6 ACL，相关配置请参见“ACL和QoS配置指导”中的“ACL”。

l 如果使用IPv6地址前缀列表进行路由过滤，需要定义IPv6地址前缀列表，相关配置请参见“三层技术-IP路由配置指导”中的“路由策略”。

1.4.1 配置接口附加度量值

附加度量值是附加在RIPng路由上的输入输出度量值，包括发送附加度量值和接收附加度量值。发送附加度量值不会改变路由表中的路由度量值，仅当接口发送RIPng路由信息时才会添加到发送路由上；接收附加度量值会影响接收到的路由度量值，接口接收到一条合法的RIPng路由时，在将其加入路由表前会把附加度量值加到该路由上。

表1-3 配置接口附加度量值

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
设置接口接收RIPng路由时的附加度量值 | ripng metricin value | 可选 缺省情况下，接口接收RIPng路由时的附加度量值为0
设置接口发送RIPng路由时的附加度量值 | ripng metricout value | 可选 缺省情况下，接口发送RIPng路由时的附加度量值为1

1.4.2 配置RIPng路由聚合

表1-4 配置RIPng路由聚合

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
配置RIPng在接口发布聚合的IPv6前缀 | ripng summary-address ipv6-address prefix-length | 必选

1.4.3 配置RIPng发布缺省路由

表1-5 配置RIPng发布缺省路由

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
配置RIPng发布缺省路由 | ripng default-route { only | originate } [ cost cost ] | 必选 缺省情况下，RIPng进程不发布缺省路由

缺省路由将被强制通过指定接口的路由更新报文发布出去，该路由的发布不考虑其是否已经存在于本设备的IPv6路由表中。

1.4.4 配置RIPng对接收/发布的路由进行过滤

用户可通过使用IPv6 ACL和IPv6前缀列表对接收到的路由信息进行过滤，只有通过过滤的路由才能被加入到RIPng路由表；此外，还可对本机所有要发布的路由进行过滤，包括从其它路由协议引入的路由和从邻居学到的RIPng路由，只有通过过滤的路由才能被发布给RIPng邻居。

表1-6 配置RIPng对接收/发布的路由进行过滤

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入RIPng视图 | ripng [ process-id ] | -
对接收的路由信息进行过滤 | filter-policy { acl6-number | ipv6-prefix ipv6-prefix-name } import | 必选 缺省情况下，RIPng不对接收的路由信息进行过滤
对发布的路由信息进行过滤 | filter-policy { acl6-number | ipv6-prefix ipv6-prefix-name } export [ protocol [ process-id ] ] | 必选 缺省情况下，RIPng不对发布的路由信息进行过滤

1.4.5 配置RIPng协议优先级

任何路由协议都具备特有的协议优先级，在设备进行路由选择时能够在不同的协议中选择最佳路由。可以手工设置RIPng协议的优先级，设置的值越小，其优先级越高。

表1-7 配置RIPng协议优先级

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入RIPng视图 | ripng [ process-id ] | -
配置RIPng路由的优先级 | preference [ route-policy route-policy-name ] preference | 可选 缺省情况下，RIPng路由的优先级为100

1.4.6 配置RIPng引入外部路由

表1-8 配置RIPng引入外部路由

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入RIPng视图 | ripng [ process-id ] | -
配置引入路由的缺省度量值 | default cost cost | 可选 缺省情况下，引入路由的缺省度量值为0
引入外部路由 | import-route protocol [ process-id ] [ allow-ibgp ] [ cost cost | route-policy route-policy-name ] * | 必选 缺省情况下，RIPng不引入其它路由


1.5 调整和优化RIPng网络

本节将介绍如何调整和优化RIPng网络的性能，以及在特殊网络环境中某些RIPng特性的应用，在调整和优化RIPng网络之前，需完成以下任务：

l 配置接口的网络层地址

l 配置RIPng基本功能

1.5.1 配置RIPng定时器

用户可通过调节RIPng定时器来调整RIPng路由协议的性能，以满足网络需要

表1-9 配置RIPng定时器

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入RIPng视图 | ripng [ process-id ] | -
配置RIPng定时器的值 | timers { garbage-collect garbage-collect-value | suppress suppress-value | timeout timeout-value | update update-value } * | 可选 缺省情况下，Update定时器的值为30秒，Timeout定时器的值为180秒，Suppress定时器的值为120秒，Garbage-collect定时器的值为120秒

在配置RIPng定时器时需要注意，定时器值的调整应考虑网络的性能，并在所有运行RIPng的路由器上进行统一配置，避免增加不必要的网络流量。

1.5.2 配置水平分割和毒性逆转

如果同时配置了水平分割和毒性逆转，则只有毒性逆转功能生效。

1. 配置水平分割

配置水平分割可以使得从一个接口学到的路由不能通过此接口向外发布，用于避免相邻路由器间的路由环路。

表1-10 配置水平分割

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
使能水平分割功能 | ripng split-horizon | 可选 缺省情况下，水平分割功能处于使能状态

通常情况下，为了防止路由环路的出现，水平分割都是必要的，因此，建议不要关闭水平分割。

2. 配置毒性逆转

配置毒性逆转可以使得从一个接口学到的路由还可以从这个接口向外发布，但此时这些路由的度量值已设置为16，即不可达。

表1-11 配置毒性逆转

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
使能毒性逆转功能 | ripng poison-reverse | 必选 缺省情况下，毒性逆转功能处于关闭状态

1.5.3 配置RIPng报文的零域检查

RIPng报文头部中的一些字段必须配置为0，也称为零域。使能RIPng报文的零域检查功能后，如果报文头部零域中的值不为零，这些报文将被丢弃，不做处理。如果能确保所有报文都是可信任的，则不需要进行该项检查，以节省CPU处理时间。

表1-12 配置RIPng报文的零域检查

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入RIPng视图 | ripng [ process-id ] | -
使能对RIPng报文头部的零域检查操作 | checkzero | 可选 缺省情况下，RIPng进行零域检查操作

1.5.4 配置最大等价路由条数

表1-13 配置最大等价路由条数

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入RIPng视图 | ripng [ process-id ] | -
配置RIPng最大等价路由条数 | maximum load-balancing number | 可选 缺省为8


1.6 配置RIPng IPsec安全策略

在安全性要求较高的网络环境中，可以通过配置基于IPsec安全策略的认证方式来对RIPng报文进行有效性检查和验证。

路由器在发送的报文中会携带配置好的IPsec安全策略的SPI（Security Parameter Index，安全参数索引）值，接收报文时通过SPI值进行IPsec安全策略匹配：只有策略匹配的报文才能接收；否则将不会接收报文，从而不能正常建立邻居和学习路由。

RIPng支持在进程和接口下配置IPsec安全策略。进程下配置的IPsec安全策略对该进程下的所有报文有效，接口下的IPsec安全策略只对接口下的报文有效。当接口和接口所在进程均配置了IPsec安全策略时，接口下的策略生效。

1. 配置准备

配置RIPng IPsec安全策略之前，需要满足下面配置：

l 安全提议已经创建。

l IPsec安全策略已经创建。

关于安全提议和IPsec安全策略的详细配置过程，请参见“安全配置指导”中的“IPsec”。

2. 配置RIPng IPsec安全策略

表1-14 配置RIPng IPsec安全策略（RIPng进程）

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入RIPng视图 | ripng [ process-id ] | -
配置RIPng进程应用IPsec安全策略 | enable ipsec-policy policy-name | 必选 缺省情况下，RIPng进程没有应用IPsec安全策略

表1-15 配置RIPng IPsec安全策略（接口）

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
配置使能了RIPng的接口上应用IPsec安全策略 | ripng ipsec-policy policy-name | 必选 缺省情况下，使能了RIPng的接口上没有应用IPsec安全策略

RIPng IPsec安全策略只支持手工配置方式，具体情况请参见“安全配置指导”中的“IPsec”。


1.7 RIPng显示和维护

在完成上述配置后，在任意视图下执行 display 命令可以显示配置后RIPng的运行情况，通过查看显示信息验证配置的效果。

在用户视图下执行 reset 命令可以重启RIPng进程或清除指定RIPng进程的统计信息。

表1-16 RIPng显示和维护

操作 | 命令
显示RIPng进程的配置信息 | display ripng [ process-id ] [ | { begin | exclude | include } regular-expression ]
显示RIPng发布数据库中的路由 | display ripng process-id database [ | { begin | exclude | include } regular-expression ]
显示指定RIPng进程的路由信息 | display ripng process-id route [ | { begin | exclude | include } regular-expression ]
显示RIPng的接口信息 | display ripng process-id interface [ interface-type interface-number ] [ | { begin | exclude | include } regular-expression ]
重启RIPng进程 | reset ripng process-id process
清除RIPng进程的统计信息 | reset ripng process-id statistics


1.8 RIPng典型配置举例

1.8.1 配置RIPng基本功能

1. 组网需求

l Switch A、Switch B和Switch C相连并通过RIPng来学习网络中的IPv6路由信息；

l 在Switch B上对接收的Switch C的路由（3::/64）进行过滤，使其不加入到Switch B的RIPng进程的路由表中，也不发布给Switch A。

2. 组网图

图1-4 RIPng配置举例组网图

3. 配置步骤

(1) 配置各接口的IPv6地址（略）

(2) 配置RIPng的基本功能

# 配置Switch A。

<SwitchA> system-view

[SwitchA] ripng 1

[SwitchA-ripng-1] quit

[SwitchA] interface vlan-interface 100

[SwitchA-Vlan-interface100] ripng 1 enable

[SwitchA-Vlan-interface100] quit

[SwitchA] interface vlan-interface 400

[SwitchA-Vlan-interface400] ripng 1 enable

[SwitchA-Vlan-interface400] quit

# 配置Switch B。

<SwitchB> system-view

[SwitchB] ripng 1

[SwitchB-ripng-1] quit

[SwitchB] interface vlan-interface 200

[SwitchB-Vlan-interface200] ripng 1 enable

[SwitchB-Vlan-interface200] quit

[SwitchB] interface vlan-interface 100

[SwitchB-Vlan-interface100] ripng 1 enable

[SwitchB-Vlan-interface100] quit

# 配置Switch C。

<SwitchC> system-view

[SwitchC] ripng 1

[SwitchC-ripng-1] quit

[SwitchC] interface vlan-interface 200

[SwitchC-Vlan-interface200] ripng 1 enable

[SwitchC-Vlan-interface200] quit

[SwitchC] interface vlan-interface 500

[SwitchC-Vlan-interface500] ripng 1 enable

[SwitchC-Vlan-interface500] quit

[SwitchC] interface vlan-interface 600

[SwitchC-Vlan-interface600] ripng 1 enable

[SwitchC-Vlan-interface600] quit

# 查看Switch B的RIPng路由表。

[SwitchB] display ripng 1 route

Route Flags: A - Aging, S - Suppressed, G - Garbage-collect

----------------------------------------------------------------

Peer FE80::20F:E2FF:FE23:82F5 on Vlan-interface100

Dest 1::/64,

via FE80::20F:E2FF:FE23:82F5, cost 1, tag 0, A, 6 Sec

Dest 2::/64,

via FE80::20F:E2FF:FE23:82F5, cost 1, tag 0, A, 6 Sec

Peer FE80::20F:E2FF:FE00:100 on Vlan-interface200

Dest 3::/64,

via FE80::20F:E2FF:FE00:100, cost 1, tag 0, A, 11 Sec

Dest 4::/64,

via FE80::20F:E2FF:FE00:100, cost 1, tag 0, A, 11 Sec

Dest 5::/64,

via FE80::20F:E2FF:FE00:100, cost 1, tag 0, A, 11 Sec

# 查看Switch A的RIPng路由表。

[SwitchA] display ripng 1 route

Route Flags: A - Aging, S - Suppressed, G - Garbage-collect

----------------------------------------------------------------

Peer FE80::200:2FF:FE64:8904 on Vlan-interface100

Dest 1::/64,

via FE80::200:2FF:FE64:8904, cost 1, tag 0, A, 31 Sec

Dest 4::/64,

via FE80::200:2FF:FE64:8904, cost 2, tag 0, A, 31 Sec

Dest 5::/64,

via FE80::200:2FF:FE64:8904, cost 2, tag 0, A, 31 Sec

Dest 3::/64,

via FE80::200:2FF:FE64:8904, cost 1, tag 0, A, 31 Sec

(3) 配置Switch B对接收和发布的路由进行过滤

[SwitchB] acl ipv6 number 2000

[SwitchB-acl6-basic-2000] rule deny source 3::/64

[SwitchB-acl6-basic-2000] rule permit

[SwitchB-acl6-basic-2000] quit

[SwitchB] ripng 1

[SwitchB-ripng-1] filter-policy 2000 import

[SwitchB-ripng-1] filter-policy 2000 export

# 查看Switch B和Switch A的RIPng路由表。

[SwitchB] display ripng 1 route

Route Flags: A - Aging, S - Suppressed, G - Garbage-collect

----------------------------------------------------------------

Peer FE80::20F:E2FF:FE23:82F5 on Vlan-interface100

Dest 1::/64,

via FE80::20F:E2FF:FE23:82F5, cost 1, tag 0, A, 2 Sec

Dest 2::/64,

via FE80::20F:E2FF:FE23:82F5, cost 1, tag 0, A, 2 Sec

Peer FE80::20F:E2FF:FE00:100 on Vlan-interface200

Dest 4::/64,

via FE80::20F:E2FF:FE00:100, cost 1, tag 0, A, 5 Sec

Dest 5::/64,

via FE80::20F:E2FF:FE00:100, cost 1, tag 0, A, 5 Sec

[SwitchA] display ripng 1 route

Route Flags: A - Aging, S - Suppressed, G - Garbage-collect

----------------------------------------------------------------

Peer FE80::20F:E2FF:FE00:1235 on Vlan-interface100

Dest 1::/64,

via FE80::20F:E2FF:FE00:1235, cost 1, tag 0, A, 2 Sec

Dest 4::/64,

via FE80::20F:E2FF:FE00:1235, cost 2, tag 0, A, 2 Sec

Dest 5::/64,

via FE80::20F:E2FF:FE00:1235, cost 2, tag 0, A, 2 Sec

1.8.2 配置RIPng引入外部路由

1. 组网需求

l Switch B上运行两个RIPng进程：RIPng100和RIPng200。Switch B通过RIPng100和Switch A交换路由信息，通过RIPng200和Switch C交换路由信息。

l 要求在Switch B上配置路由引入，将两个不同进程的RIPng路由相互引入到对方的RIPng进程中，将引入的RIPng200的路由缺省度量值设为3。

2. 组网图

图1-5 配置RIPng引入外部路由组网图

3. 配置步骤

(1) 配置各接口的IPv6地址（略）

(2) 配置RIPng

# 在Switch A上启动RIPng进程100。

<SwitchA> system-view

[SwitchA] ripng 100

[SwitchA-ripng-100] quit

[SwitchA] interface vlan-interface 100

[SwitchA-Vlan-interface100] ripng 100 enable

[SwitchA-Vlan-interface100] quit

[SwitchA] interface vlan-interface 200

[SwitchA-Vlan-interface200] ripng 100 enable

[SwitchA-Vlan-interface200] quit

# 在Switch B上启动两个RIPng进程，进程号分别为100和200。

<SwitchB> system-view

[SwitchB] ripng 100

[SwitchB-ripng-100] quit

[SwitchB] interface vlan-interface 100

[SwitchB-Vlan-interface100] ripng 100 enable

[SwitchB-Vlan-interface100] quit

[SwitchB] ripng 200

[SwitchB-ripng-200] quit

[SwitchB] interface vlan-interface 300

[SwitchB-Vlan-interface300] ripng 200 enable

[SwitchB-Vlan-interface300] quit

# 在Switch C上启动RIPng进程200。

<SwitchC> system-view

[SwitchC] ripng 200

[SwitchC] interface vlan-interface 300

[SwitchC-Vlan-interface300] ripng 200 enable

[SwitchC-Vlan-interface300] quit

[SwitchC] interface vlan-interface 400

[SwitchC-Vlan-interface400] ripng 200 enable

[SwitchC-Vlan-interface400] quit

# 查看Switch A的路由表信息。

[SwitchA] display ipv6 routing-table

Routing Table :

Destinations : 6 Routes : 6

Destination: ::1/128 Protocol : Direct

NextHop : ::1 Preference: 0

Interface : InLoop0 Cost : 0

Destination: 1::/64 Protocol : Direct

NextHop : 1::1 Preference: 0

Interface : Vlan100 Cost : 0

Destination: 1::1/128 Protocol : Direct

NextHop : ::1 Preference: 0

Interface : InLoop0 Cost : 0

Destination: 2::/64 Protocol : Direct

NextHop : 2::1 Preference: 0

Interface : Vlan200 Cost : 0

Destination: 2::1/128 Protocol : Direct

NextHop : ::1 Preference: 0

Interface : InLoop0 Cost : 0

Destination: FE80::/10 Protocol : Direct

NextHop : :: Preference: 0

Interface : NULL0 Cost : 0

(3) 配置RIPng引入外部路由

# 在Switch B上将两个不同RIPng进程的路由相互引入到对方的路由表中。

[SwitchB] ripng 100

[SwitchB-ripng-100] default cost 3

[SwitchB-ripng-100] import-route ripng 200

[SwitchB-ripng-100] quit

[SwitchB] ripng 200

[SwitchB-ripng-200] import-route ripng 100

[SwitchB-ripng-200] quit

# 查看路由引入后Switch A的路由表信息。

[SwitchA] display ipv6 routing-table

Routing Table :

Destinations : 7 Routes : 7

Destination: ::1/128 Protocol : Direct

NextHop : ::1 Preference: 0

Interface : InLoop0 Cost : 0

Destination: 1::/64 Protocol : Direct

NextHop : 1::1 Preference: 0

Interface : Vlan100 Cost : 0

Destination: 1::1/128 Protocol : Direct

NextHop : ::1 Preference: 0

Interface : InLoop0 Cost : 0

Destination: 2::/64 Protocol : Direct

NextHop : 2::1 Preference: 0

Interface : Vlan200 Cost : 0

Destination: 2::1/128 Protocol : Direct

NextHop : ::1 Preference: 0

Interface : InLoop0 Cost : 0

Destination: 4::/64 Protocol : RIPng

NextHop : FE80::200:BFF:FE01:1C02 Preference: 100

Interface : Vlan100 Cost : 4

Destination: FE80::/10 Protocol : Direct

NextHop : :: Preference: 0

Interface : NULL0 Cost : 0d

1.8.3 配置RIPng IPsec安全策略

1. 组网需求

l Switch A、Switch B和Switch C相连并通过RIPng来学习网络中的IPv6路由信息。

l 要求配置IPsec安全策略对Switch A、Switch B和Switch C之间的RIPng报文进行有效性检查和验证。

2. 组网图

图1-6 RIPng IPsec安全策略组网图

3. 配置步骤

(1) 配置各接口的IPv6地址（略）

(2) 配置RIPng的基本功能

# 配置Switch A。

<SwitchA> system-view

[SwitchA] ripng 1

[SwitchA-ripng-1] quit

[SwitchA] interface vlan-interface 100

[SwitchA-Vlan-interface100] ripng 1 enable

[SwitchA-Vlan-interface100] quit

# 配置Switch B。

<SwitchB> system-view

[SwitchB] ripng 1

[SwitchB-ripng-1] quit

[SwitchB] interface vlan-interface 200

[SwitchB-Vlan-interface200] ripng 1 enable

[SwitchB-Vlan-interface200] quit

[SwitchB] interface vlan-interface 100

[SwitchB-Vlan-interface100] ripng 1 enable

[SwitchB-Vlan-interface100] quit

# 配置Switch C。

<SwitchC> system-view

[SwitchC] ripng 1

[SwitchC-ripng-1] quit

[SwitchC] interface vlan-interface 200

[SwitchC-Vlan-interface200] ripng 1 enable

[SwitchC-Vlan-interface200] quit

(3) 配置RIPng IPsec安全策略

# 配置Switch A。创建名为tran1的安全提议，报文封装形式采用传输模式，安全协议采用ESP协议。创建一条安全策略policy001，协商方式为manual，配置SPI和密钥。

[SwitchA] ipsec proposal tran1

[SwitchA-ipsec-proposal-tran1] encapsulation-mode transport

[SwitchA-ipsec-proposal-tran1] transform esp

[SwitchA-ipsec-proposal-tran1] esp encryption-algorithm des

[SwitchA-ipsec-proposal-tran1] esp authentication-algorithm sha1

[SwitchA-ipsec-proposal-tran1] quit

[SwitchA] ipsec policy policy001 10 manual

[SwitchA-ipsec-policy-manual-policy001-10] proposal tran1

[SwitchA-ipsec-policy-manual-policy001-10] sa spi outbound esp 12345

[SwitchA-ipsec-policy-manual-policy001-10] sa spi inbound esp 12345

[SwitchA-ipsec-policy-manual-policy001-10] sa string-key outbound esp abcdefg

[SwitchA-ipsec-policy-manual-policy001-10] sa string-key inbound esp abcdefg

[SwitchA-ipsec-policy-manual-policy001-10] quit

# 配置Switch B。创建名为tran1的安全提议，报文封装形式采用传输模式，安全协议采用ESP协议。创建一条安全策略policy001，协商方式为manual，配置SPI和密钥。

[SwitchB] ipsec proposal tran1

[SwitchB-ipsec-proposal-tran1] encapsulation-mode transport

[SwitchB-ipsec-proposal-tran1] transform esp

[SwitchB-ipsec-proposal-tran1] esp encryption-algorithm des

[SwitchB-ipsec-proposal-tran1] esp authentication-algorithm sha1

[SwitchB-ipsec-proposal-tran1] quit

[SwitchB] ipsec policy policy001 10 manual

[SwitchB-ipsec-policy-manual-policy001-10] proposal tran1

[SwitchB-ipsec-policy-manual-policy001-10] sa spi outbound esp 12345

[SwitchB-ipsec-policy-manual-policy001-10] sa spi inbound esp 12345

[SwitchB-ipsec-policy-manual-policy001-10] sa string-key outbound esp abcdefg

[SwitchB-ipsec-policy-manual-policy001-10] sa string-key inbound esp abcdefg

[SwitchB-ipsec-policy-manual-policy001-10] quit

# 配置Switch C。创建名为tran1的安全提议，报文封装形式采用传输模式，安全协议采用ESP协议。创建一条安全策略policy001，协商方式为manual，配置SPI和密钥。

[SwitchC] ipsec proposal tran1

[SwitchC-ipsec-proposal-tran1] encapsulation-mode transport

[SwitchC-ipsec-proposal-tran1] transform esp

[SwitchC-ipsec-proposal-tran1] esp encryption-algorithm des

[SwitchC-ipsec-proposal-tran1] esp authentication-algorithm sha1

[SwitchC-ipsec-proposal-tran1] quit

[SwitchC] ipsec policy policy001 10 manual

[SwitchC-ipsec-policy-manual-policy001-10] proposal tran1

[SwitchC-ipsec-policy-manual-policy001-10] sa spi outbound esp 12345

[SwitchC-ipsec-policy-manual-policy001-10] sa spi inbound esp 12345

[SwitchC-ipsec-policy-manual-policy001-10] sa string-key outbound esp abcdefg

[SwitchC-ipsec-policy-manual-policy001-10] sa string-key inbound esp abcdefg

[SwitchC-ipsec-policy-manual-policy001-10] quit

(4) RIPng进程上应用IPsec安全策略

# 配置Switch A。

[SwitchA] ripng 1

[SwitchA-ripng-1] enable ipsec-policy policy001

[SwitchA-ripng-1] quit

# 配置Switch B。

[SwitchB] ripng 1

[SwitchB-ripng-1] enable ipsec-policy policy001

[SwitchB-ripng-1] quit

# 配置Switch C。

[SwitchC] ripng 1

[SwitchC-ripng-1] enable ipsec-policy policy001

[SwitchC-ripng-1] quit

4. 检验配置结果

以上配置完成后，Switch A、Switch B和Switch C之间的数据流将被加密传输。


1 OSPFv3配置

l 本文所指的路由器代表运行了路由协议的三层设备。

l S3600V2-SI系列交换机不支持OSPFv3功能。

相关链接

  • 1.1 OSPFv3简介
  • 1.2 OSPFv3配置任务简介
  • 1.3 使能OSPFv3功能
  • 1.4 配置OSPFv3的区域属性
  • 1.5 配置OSPFv3网络类型
  • 1.6 配置OSPFv3的路由信息控制
  • 1.7 调整和优化OSPFv3网络
  • 1.8 配置OSPFv3 GR
  • 1.9 配置OSPFv3与BFD联动
  • 1.10 配置OSPFv3 IPsec安全策略
  • 1.11 OSPFv3显示和维护
  • 1.12 OSPFv3配置举例
  • 1.13 常见配置错误举例
父主题： 09-OSPFv3配置


1.1 OSPFv3简介

1.1.1 OSPFv3概述

OSPFv3是OSPF（Open Shortest Path First，开放最短路径优先）版本3的简称，主要提供对IPv6的支持，遵循的标准为RFC 2740（OSPF for IPv6）。

OSPFv3和OSPFv2在很多方面是相同的：

l Router ID，Area ID仍然是32位的。

l 相同类型的报文：Hello报文，DD（Database Description，数据库描述）报文，LSR（Link State Request，链路状态请求）报文，LSU（Link State Update，链路状态更新）报文和LSAck（Link State Acknowledgment，链路状态确认）报文。

l 相同的邻居发现机制和邻接形成机制。

l 相同的LSA扩散机制和老化机制。

OSPFv3和OSPFv2的不同主要有：

l OSPFv3是基于链路（Link）运行，OSPFv2是基于网段（Network）运行。

l OSPFv3在同一条链路上可以运行多个实例。

l OSPFv3是通过Router ID来标识邻接的邻居。OSPFv2则是通过IP地址来标识邻接的邻居。

1.1.2 OSPFv3的协议报文

和OSPFv2一样，OSPFv3也有五种报文类型，分别是Hello报文、DD报文、LSR报文、LSU报文和LSAck报文。

这五种报文有相同的报文头，但是它和OSPFv2的报文头有一些区别，其长度只有16字节，且没有认证字段。另外就是多了一个Instance ID字段，用来支持在同一条链路上运行多个实例。

OSPFv3的报文头如 图1-1 所示。

图1-1 OSPFv3报文头示意图

主要字段的解释如下：

l Version #：OSPF的版本号。对于OSPFv3来说，其值为3。

l Type：OSPF报文的类型。数值从1到5，分别对应Hello报文、DD报文、LSR报文、LSU报文和LSAck报文。

l Packet Length：OSPF报文的总长度，包括报文头在内，单位为字节。

l Instance ID：同一条链路上的实例标识。

l 0：保留位，必须为0。

1.1.3 OSPFv3的LSA类型

LSA（Link State Advertisement，链路状态通告）是OSPFv3协议计算和维护路由信息的主要来源。在RFC 2740中定义了七类LSA，描述如下：

l Router-LSA：由每个路由器生成，描述本路由器的链路状态和开销，只在路由器所处区域内传播。

l Network-LSA：由广播网络和NBMA（Non-Broadcast Multi-Access）网络的DR（Designated Router，指定路由器）生成，描述本网段接口的链路状态，只在DR所处区域内传播。

l Inter-Area-Prefix-LSA：和OSPFv2中的Type-3 LSA类似，该LSA由ABR（Area Border Router，区域边界路由器）生成，在与该LSA相关的区域内传播。每一条Inter-Area-Prefix-LSA描述了一条到达本自治系统内其他区域的IPv6地址前缀（IPv6 Address Prefix）的路由。

l Inter-Area-Router-LSA：和OSPFv2中的Type-4 LSA类似，该LSA由ABR生成，在与该LSA相关的区域内传播。每一条Inter-Area-Router-LSA描述了一条到达本自治系统内的ASBR（Autonomous System Boundary Router，自治系统边界路由器）的路由。

l AS-external-LSA：由ASBR生成，描述到达其它AS（Autonomous System，自治系统）的路由，传播到整个AS（Stub区域除外）。缺省路由也可以用AS-external-LSA来描述。

l Link-LSA：路由器为每一条链路生成一个Link-LSA，在本地链路范围内传播。每一个Link-LSA描述了该链路上所连接的IPv6地址前缀及路由器的Link-local地址。

l Intra-Area-Prefix-LSA：每个Intra-Area-Prefix-LSA包含路由器上的IPv6前缀信息，Stub区域信息或穿越区域（Transit Area）的网段信息，该LSA在区域内传播。由于Router-LSA和Network-LSA不再包含地址信息，导致了Intra-Area-Prefix-LSA的引入。

在RFC 5187中定义了第十一类LSA，Grace-LSA。Grace-LSA由Restarter在重启时候生成的，在本地链路范围内传播。这个LSA描述了重启设备的重启原因和重启时间间隔，目的是通知邻居本设备将进入GR（Graceful Restart，平滑重启）。

1.1.4 OSPFv3的定时器

OSPFv3的定时器包括：

l OSPFv3的报文定时器

l LSA的延迟时间

l SPF定时器

l GR定时器

1. OSPFv3报文定时器

Hello报文周期性地被发送至邻居路由器，用于发现与维持邻居关系、选举DR与BDR。需要注意的是，网络邻居间的Hello时间间隔必须一致，并且Hello时钟的值与路由收敛速度、网络负荷大小成反比。

在一定时间间隔内，如果路由器未收到对方的Hello报文，则认为对端路由器失效，这个时间间隔被称为相邻路由器间的失效时间。

当一台路由器向它的邻接发送一条LSA后，需要等到对方的确认报文。若在设定的重传间隔时间内没有收到对方的确认报文，就会向邻接重传这条LSA。重传间隔的值必须大于一个报文在两台路由器之间传送一个来回的时间。

2. LSA的延迟时间

由于LSA在本路由器的LSDB（Link State Database，链路状态数据库）中会随时间老化（每秒加1），但在网络的传输过程中却不会随时间老化，所以有必要在发送之前就将LSA的老化时间增加上传送延迟时间。对于低速网络，该项配置尤为重要。

3. SPF定时器

当OSPFv3的LSDB发生改变时，需要重新计算最短路径，如果每次改变都立即计算最短路径，将占用大量资源，并会影响路由器的效率，通过调节SPF（Shortest Path First，最短路径优先）的计算延迟时间和间隔时间，可以避免在网络频繁变化时过多的占用资源。

4. GR定时器

在进行GR时，可能出现重建邻居失败的情况，这将导致设备长期处于GR过程中。GR定时器即GR的最长时间，当它超时时则退出GR，从而避免设备长期处于GR过程中。

1.1.5 系统支持的OSPFv3特性

在目前的实现中，支持以下OSPFv3特性：

l RFC 2740规定的基本特性

l OSPFv3 Stub区域

l OSPFv3多进程（Multi-Process）

l OSPFv3支持多实例

l OSPFv3 GR

l OSPFv3与BFD联动

1.1.6 协议规范

与OSPFv3相关的协议规范有：

l RFC 2740：OSPF for IPv6

l RFC 2328：OSPF Version 2

l RFC 5187：OSPFv3 Graceful Restart


1.2 OSPFv3配置任务简介

表1-1 OSPFv3配置任务简介

配置任务 |  | 说明 | 详细配置
使能OSPFv3功能 |  | 必选 | 1.3
配置OSPFv3的区域属性 | 配置OSPFv3的Stub区域 | 可选 | 1.4.2
 | 配置OSPFv3的虚连接 | 可选 | 1.4.3
配置OSPFv3网络类型 | 配置OSPFv3接口的网络类型 | 可选 | 1.5.2
 | 配置NBMA或者P2MP网络的邻居 | 可选 | 1.5.3
配置OSPFv3的路由信息控制 | 配置OSPFv3的路由聚合 | 可选 | 1.6.2
 | 配置OSPFv3对通过接收到的LSA计算出来的路由信息进行过滤 | 可选 | 1.6.3
 | 配置OSPFv3接口的开销值 | 可选 | 1.6.4
 | 配置OSPFv3最大等价路由条数 | 可选 | 1.6.5
 | 配置OSPFv3协议的优先级 | 可选 | 1.6.6
 | 配置OSPFv3引入外部路由 | 可选 | 1.6.7
调整和优化OSPFv3网络 | 配置OSPFv3定时器 | 可选 | 1.7.2
 | 配置接口的DR优先级 | 可选 | 1.7.3
 | 忽略DD报文中的MTU检查 | 可选 | 1.7.4
 | 禁止接口收发OSPFv3报文 | 可选 | 1.7.5
 | 配置邻接状态变化输出开关 | 可选 | 1.7.6
配置OSPFv3 GR | 配置GR Restarter | 可选 | 1.8.1
 | 使能GR Helper | 可选 | 1.8.2
配置OSPFv3与BFD联动 |  | 可选 | 1.9
配置OSPFv3 IPsec安全策略 |  | 可选 | 1.10


1.3 使能OSPFv3功能

1.3.1 配置准备

在使能OSPFv3功能之前，需完成以下任务：

l 各相邻节点网络层可达

l 使能IPv6报文转发功能

1.3.2 使能OSPFv3功能

要在路由器上使能OSPFv3功能，必须先创建OSPFv3进程、指定该进程的Router ID以及在接口上使能OSPFv3功能。

Router ID用来在一个自治系统中唯一的标识一台路由器。在OSPFv3中，用户必须手工配置一个Router ID，而且必须保证自治系统中任意两台路由器的Router ID都不相同。因此，为了保证OSPFv3运行的稳定性，在进行网络规划时，应确定路由器ID的划分并手工配置。需要注意的是，如果在同一台路由器上运行了多个OSPFv3进程，必须为不同的进程指定不同的Router ID。

在一台路由器上可以创建多个OSPFv3进程，OSPFv3进程号是本地概念，不影响与其它路由器之间的报文交换。因此，不同的路由器之间，即使进程号不同也可以进行报文交换。

表1-2 使能OSPFv3功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
创建OSPFv3进程，进入OSPFv3视图 | ospfv3 [ process-id ] | 必选 缺省情况下，系统不运行OSPFv3进程
配置路由器的ID | router-id router-id | 必选
进入接口视图 | interface interface-type interface-number | -
在接口上使能OSPFv3 | ospfv3 process-id area area-id [ instance instance-id ] | 必选 缺省情况下，接口上没有使能OSPFv3


1.4 配置OSPFv3的区域属性

OSPFv3支持Stub区域和虚连接的配置，其原理及应用环境与OSPFv2相同。

OSPFv3划分区域后，可以减少网络中LSA的数量，OSPFv3的扩展性也得以增强。对于位于AS边缘的一些非骨干区域，为了更多的缩减其路由表规模和降低LSA的数量，可以将它们配置为Stub区域。

在划分区域之后，非骨干区域之间的OSPFv3路由更新是通过骨干区域来交换完成的。对此，OSPFv3要求所有非骨干区域必须与骨干区域保持连通，并且骨干区域自身也要保持连通。但在实际应用中，可能会因为各方面条件的限制，无法满足这个要求。这时可以通过配置OSPFv3虚连接予以解决。

1.4.1 配置准备

在配置OSPFv3的区域属性之前，需完成以下任务：

l 使能IPv6报文转发功能

l 配置OSPFv3基本功能

1.4.2 配置OSPFv3的Stub区域

表1-3 配置OSPFv3的Stub区域

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入OSPFv3视图 | ospfv3 [ process-id ] | -
进入OSPFv3区域视图 | area area-id | -
配置一个区域为Stub区域 | stub [ no-summary ] | 必选 缺省情况下，没有区域被配置为Stub区域
配置发送到Stub区域的缺省路由的开销值 | default-cost value | 可选 缺省情况下，发送到Stub区域的缺省路由的开销值为1

l OSPFv3的区域不能直接删除，只有区域视图下的所有配置都删除后，且该区域中相关接口的状态都为down，此区域才会自动删除。

l 对于位于Stub区域中的所有路由器都必须配置 stub 命令，参数 no-summary 只能在ABR上配置。

l 如果ABR使用了 stub 命令中的参数 no-summary，则此ABR只向区域内发布一条描述缺省路由的Inter-Area-Prefix-LSA。这种既没有AS-external-LSA，也没有Inter-Area-Prefix-LSA、Inter-Area-Router-LSA的Stub区域，又称为Totally Stub区域。

1.4.3 配置OSPFv3的虚连接

对于没有和骨干区域直接相连的非骨干区域，或者不连续的骨干区域，可以使用该配置建立逻辑上的连通性。

表1-4 配置OSPFv3的虚连接

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入OSPFv3视图 | ospfv3 [ process-id ] | -
进入OSPFv3区域视图 | area area-id | -
创建并配置虚连接 | vlink-peer router-id [ hello seconds | retransmit seconds | trans-delay seconds | dead seconds | instance instance-id ] * | 必选

l 虚连接的两端必须是ABR，而且必须在两端同时配置才可生效。

l 虚连接不能在使能了GR能力的进程下的区域进行配置。


1.5 配置OSPFv3网络类型

OSPFv3根据链路层协议类型将网络分为四种不同的类型。

缺省情况下，当接口封装的链路层协议不同时，OSPFv3接口网络类型的缺省值也不同，例如：

l 当接口封装的链路层协议是PPP时，OSPFv3接口网络类型的缺省值为点对点。

l 当接口封装的链路层协议是Ethernet时，OSPFv3接口网络类型的缺省值为广播类型。

用户可以根据需要配置OSPFv3接口的网络类型，例如：

l 由于NBMA网络必须是全连通的，即网络中任意两台路由器之间都必须有一条虚电路直接可达。但在很多情况下，这个要求无法满足，这时就需要通过命令强制改变网络的类型。

l 对于NBMA网络，如果部分路由器之间没有直接可达的链路时，应将接口的网络类型配置为P2MP。如果路由器在NBMA网络中只有一个对端，也可将接口类型配置为P2P。

1.5.1 配置准备

在配置OSPFv3的网络类型之前，需完成以下任务：

l 使能IPv6报文转发功能

l 配置OSPFv3基本功能

1.5.2 配置OSPFv3接口的网络类型

表1-5 配置OSPFv3接口的网络类型

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
配置OSPFv3接口的网络类型 | ospfv3 network-type { broadcast | nbma | p2mp [ non-broadcast ] | p2p } [ instance instance-id ] | 可选 缺省情况下，接口的网络类型根据物理接口而定

1.5.3 配置NBMA或者P2MP网络的邻居

当路由器的接口类型为如下网络类型时，需要为其指定相邻路由器IP地址：

l NBMA网络

l P2MP网络（仅当接口选择单播形式发送报文时，需要此配置）

由于无法通过广播Hello报文的形式发现相邻路由器，必须手工指定相邻路由器的本地链路地址。对于NBMA网络，可以指定该相邻路由器是否有选举权等。

表1-6 配置NBMA或者P2MP(单播)网络的邻居

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
配置NBMA或者P2MP(单播)网络的邻居 | ospfv3 peer ipv6-address [ dr-priority dr-priority ] [ instance instance-id ] | 必选


1.6 配置OSPFv3的路由信息控制

通过这部分的配置，可以控制OSPFv3的路由信息的发布与接收，并引入外部路由。

1.6.1 配置准备

在配置OSPFv3的路由信息控制之前，需完成以下任务：

l 使能IPv6报文转发功能

l 配置OSPFv3基本功能

1.6.2 配置OSPFv3的路由聚合

如果该区域中存在多个连续的网段，则可以在ABR上配置 abr-summary 命令将它们聚合成一个网段，ABR只发送一条聚合后的LSA，所有落入本命令指定的聚合网段范围的LSA将不再会被单独发送出去，这样可减小其它区域中LSDB的规模。

表1-7 配置OSPFv3的路由聚合

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入OSPFv3视图 | ospfv3 [ process-id ] | -
进入OSPFv3区域视图 | area area-id | -
配置OSPFv3区域路由聚合 | abr-summary ipv6-address prefix-length [ not-advertise ] | 必选 缺省情况下，ABR没有对路由进行聚合

路由聚合只有在ABR上配置才会有效。

1.6.3 配置OSPFv3对通过接收到的LSA计算出来的路由信息进行过滤

OSPFv3接收到LSA后，可以根据一定的过滤条件来决定是否将计算后得到的路由信息加入到本地路由表中。

表1-8 配置OSPFv3对通过接收到的LSA计算出来的路由信息进行过滤

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入OSPFv3视图 | ospfv3 [ process-id ] | -
配置对接收的路由信息进行过滤 | filter-policy { acl6-number | ipv6-prefix ipv6-prefix-name } import | 必选 缺省情况下，没有对接收的路由信息过滤

filter-policy import 命令只对OSPFv3计算出来的路由进行过滤，没有通过过滤的路由将不被加入到本地路由表中，从而不能用于转发报文。

1.6.4 配置OSPFv3接口的开销值

OSPFv3有两种方式来配置接口的开销值：

l 第一种方法是在接口视图下直接配置开销值；

l 第二种方法是配置接口的带宽参考值，OSPFv3根据带宽参考值自动计算接口的开销值，计算公式为：接口开销＝带宽参考值（100Mbps）÷接口带宽（Mbps），当计算出来的开销值大于65535，开销取最大值65535；当计算出来的开销值小于1时，开销取最小值1。

如果没有在接口下配置接口开销值，OSPFv3会根据该接口的带宽自动计算其开销值。

1. 配置接口的开销值

表1-9 配置OSPFv3接口的开销值

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
设置OSPFv3接口的开销值 | ospfv3 cost value [ instance instance-id ] | 可选 缺省情况下，VLAN接口的缺省值为1；Loopback接口的缺省值为0；其他接口按照当前的带宽自动计算接口运行OSPFv3协议所需的开销

2. 配置带宽参考值

表1-10 配置带宽参考值

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入OSPFv3视图 | ospfv3 [ process-id ] | -
配置带宽参考值 | bandwidth-reference value | 可选 缺省情况下，带宽参考值为100Mbits/s

1.6.5 配置OSPFv3最大等价路由条数

如果到一个目的地有几条开销相同的路径，可以通过等价路由负载分担来提高链路利用率。

表1-11 配置OSPFv3最大等价路由条数

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入OSPFv3视图 | ospfv3 [ process-id ] | -
配置OSPFv3最大等价路由条数 | maximum load-balancing maximum | 可选 缺省值为8

1.6.6 配置OSPFv3协议的优先级

由于路由器上可能同时运行多个动态路由协议，就存在各个路由协议之间路由信息共享和选择的问题。系统为每一种路由协议设置一个优先级，在不同协议发现同一条路由时，优先级高的路由将被优选。

表1-12 配置OSPFv3协议的优先级

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入OSPFv3视图 | ospfv3 [ process-id | | -
配置OSPFv3协议的优先级 | preference [ ase ] [ route-policy route-policy-name ] preference | 可选 缺省情况下，OSPFv3内部路由的优先级为10，OSPFv3 外部路由的优先级为150

1.6.7 配置OSPFv3引入外部路由

表1-13 配置OSPFv3引入外部路由

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入OSPFv3视图 | ospfv3 [ process-id ] | -
配置外部路由的缺省开销值 | default cost value | 可选 缺省情况下，缺省开销值为1
引入外部路由信息 | import-route protocol [ process-id | allow-ibgp ] [ cost value | route-policy route-policy-name | type type ] * | 必选 缺省情况下，没有引入外部路由信息
配置OSPFv3引入缺省路由 | default-route-advertise [ always | cost value | type type | route-policy route-policy-name ] * | 可选 缺省情况下，没有引入缺省路由
对引入的外部路由信息进行过滤 | filter-policy { acl6-number | ipv6-prefix ipv6-prefix-name } export [ isisv6 process-id | ospfv3 process-id | ripng process-id | bgp4+ | direct | static ] | 可选 缺省情况下，没有对引入的路由信息过滤

l 在OSPFv3路由器上配置 import-route 或 default-route-advertise 命令后，这台OSPFv3路由器就成为ASBR。

l 只能通过 default-route-advertise 命令引入并发布缺省路由。

l 由于OSPFv3是基于链路状态的路由协议，不能直接对发布的LSA进行过滤，所以只能在OSPFv3引入路由时进行过滤，只有符合条件的路由才能转换成LSA发布出去。

l filter-policy export 命令只对本设备使用 import-route 引入的路由起作用。如果没有配置 import-route 命令来引入其它外部路由（包括不同进程的OSPFv3路由），则 filter-policy export 命令失效。


1.7 调整和优化OSPFv3网络

本节主要介绍配置OSPFv3定时器、配置接口的DR优先级、忽略DD报文中的MTU检查和禁止接口收发OSPFv3报文。

OSPFv3包括如下定时器：

l OSPFv3的报文定时器，可以调整OSPFv3网络的收敛速度以及协议报文带来的网络负荷。

l LSA的延迟时间：在一些低速链路上，需要考虑接口传送LSA的延迟时间。

l SPF定时器：通过调整SPF计算的延迟时间和抑制间隔时间，可以抑制由于网络频繁变化带来的资源消耗问题。

对于广播网，通过配置接口的DR优先级来影响DR/BDR的选择。

如果要使OSPFv3路由信息不被某一网络中的路由器获得，可禁止在与该网络相连的接口上发送OSPFv3报文。

1.7.1 配置准备

在调整和优化OSPFv3网络之前，需完成以下任务：

l 使能IPv6报文转发功能

l 配置OSPFv3基本功能

1.7.2 配置OSPFv3定时器

表1-14 配置OSPF定时器

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
配置接口发送hello报文的时间间隔 | ospfv3 timer hello seconds [ instance instance-id ] | 可选 缺省情况下，P2P、Broadcast网络类型接口发送Hello报文的时间间隔的值为10秒
配置Poll定时器 | ospfv3 timer poll seconds [ instance instance-id ] | 可选 缺省情况下，发送轮询Hello报文的时间间隔为120秒
配置相邻路由器间失效时间 | ospfv3 timer dead seconds [ instance instance-id ] | 可选 缺省情况下，P2P、Broadcast网络类型接口的OSPFv3邻居失效时间为40秒
配置相邻路由器重传LSA的时间间隔 | ospfv3 timer retransmit interval [ instance instance-id ] | 可选 缺省情况下，LSA的重传时间间隔为5秒
配置接口的LSA传输延迟时间 | ospfv3 trans-delay seconds [ instance instance-id ] | 可选 缺省情况下，接口的LSA传输延迟时间为1秒
退回系统视图 | quit | -
进入OSPFv3视图 | ospfv3 [ process-id ] | -
设置SPF定时器 | spf timers delay-interval hold-interval | 可选 缺省情况下，delay-interval值为5秒，hold-interval值为10秒 当延迟时间和间隔时间都配置为0秒时，表示立即触发SPF计算，可以加快收敛速度

l 相邻路由器间失效时间的值不要设置得太小，否则邻居很容易失效。

l 相邻路由器重传LSA时间间隔的值不要设置得太小，否则将会引起不必要的重传。

1.7.3 配置接口的DR优先级

表1-15 配置接口的DR优先级

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
配置接口的DR优先级 | ospfv3 dr-priority priority [ instance instance-id ] | 可选 缺省情况下，接口的DR优先级为1

路由器接口的DR优先级将影响接口在选举DR时所具有的资格，优先级为0的路由器不会被选举为DR或BDR。

1.7.4 忽略DD报文中的MTU检查

在LSA数量不多的情况下，没有必要去检查MTU大小，可以设置忽略DD报文中的MTU检查，从而提高性能。

表1-16 忽略DD报文中的MTU检查

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
忽略DD报文中的MTU检查 | ospfv3 mtu-ignore [ instance instance-id ] | 必选 缺省情况下，不忽略MTU检查

1.7.5 禁止接口收发OSPFv3报文

表1-17 禁止接口收发OSPFv3报文

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入OSPFv3视图 | ospfv3 [ process-id ] | -
禁止接口收发OSPFv3报文 | silent-interface { interface-type interface-number | all } | 必选 缺省情况下，允许接口收发OSPFv3报文

l 不同的进程可以对同一接口禁止收发OSPFv3报文，但 silent-interface 命令只对本进程已经使能的OSPFv3接口起作用，不对其它进程的接口起作用。

l 当运行OSPFv3协议的接口被配置为Silent状态后，该接口的直连路由仍可以由同一路由器的其他接口通过Intra-Area-Prefix-LSA发布，但OSPFv3报文将被阻塞，接口上不会建立OSPFv3邻居关系。这一特性可以增强OSPFv3的组网适应能力。

1.7.6 配置邻接状态变化输出开关

表1-18 配置邻接状态变化输出开关

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入OSPFv3视图 | ospfv3 [ process-id ] | -
配置邻接状态变化输出开关 | log-peer-change | 必选 缺省情况下，邻接状态变化输出开关处于打开状态


1.8 配置OSPFv3 GR

OSPFv3 GR特性和OSPFv3虚连接特性不同时支持，在配置了虚连接后将不能再配置GR特性。

GR（Graceful Restart，平滑重启）是一种在协议重启或主备切换时保证转发业务不中断的机制。GR有两个角色：

l GR Restarter：发生协议重启或主备倒换事件且具有GR能力的设备。

l GR Helper：和GR Restarter具有邻居关系，协助完成GR流程的设备。

支持OSPFv3的GR Restarter能力的设备主备倒换后，为了实现设备转发业务的不中断，它必须完成下列两项任务：

l 重启过程GR Restarter转发表项保持稳定；

l 重启流程结束后重建所有邻居关系，重新获取完整的网络拓扑信息。

设备（GR Restarter）主备倒换后，首先向邻居发送Grace LSA通告邻居本设备进入GR；邻居收到Grace-LSA后，如果支持GR Helper能力则进入Helper模式（此时该邻居称为GR Helper）。GR Restarter重新建立邻居，GR Helper帮助GR Restarter进行LSDB的同步。同步完成之后，GR流程结束，进入正常的OSPFv3流程。这样就能实现设备在主备倒换时转发业务正常进行。

1.8.1 配置GR Restarter

可以在GR Restarter设备上配置GR Restarter能力。

表1-19 配置GR Restarter

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入OSPFv3视图 | ospfv3 [ process-id ] | -
使能GR能力 | graceful-restart enable | 必选 缺省情况下，OSPFv3协议的GR Restarter能力处于关闭状态
配置GR重启时间间隔 | graceful-restart interval interval-value | 可选 缺省情况下，OSPFv3协议的GR重启间隔时间为120秒

1.8.2 配置GR Helper

可以在GR Helper设备上配置GR Helper能力。

表1-20 配置GR Helper

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入OSPFv3视图 | ospfv3 [ process-id ] | -
使能helper能力 | graceful-restart helper enable | 可选 缺省情况下，OSPFv3的GR Helper能力处于打开状态
使能LSA严格检查能力 | graceful-restart helper strict-lsa-checking | 可选 缺省情况下，OSPFv3协议的GR Helper严格LSA检查能力处于关闭状态


1.9 配置OSPFv3与BFD联动

BFD（Bidirectional Forwarding Detection，双向转发检测）能够为OSPFv3邻居之间的链路提供快速检测功能。当邻居之间的链路出现故障时，加快OSPFv3协议的收敛速度。

OSPFv3使用BFD来进行快速故障检测时，可以通过Hello报文动态发现邻居，将邻居地址通知BFD就开始建立会话。BFD会话建立前处于down状态，此时BFD控制报文以不小于1秒的时间间隔周期发送以减少控制报文流量，直到会话建立以后才会以协商的时间间隔发送以实现快速检测。

进行配置BFD之前，需要配置OSPFv3功能。

表1-21 配置OSPFv3与BFD联动

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入OSPFv3视图 | ospfv3 [ process-id ] | -
配置路由器的ID | router-id router-id | 必选
退出OSPFv3视图 | quit | -
进入接口视图 | interface interface-type interface-number | -
在接口上使能OSPFv3 | ospfv3 process-id area area-id [ instance instance-id ] | 必选 缺省情况下，接口上没有使能OSPFv3
在指定接口上使能OSPFv3 BFD | ospfv3 bfd enable [ instance instance-id ] | 必选 缺省情况下，运行OSPFv3的接口未使能BFD功能

关于BFD的介绍和基本功能配置，请参见“可靠性配置指导”中的“BFD”。


1.10 配置OSPFv3 IPsec安全策略

从安全性角度来考虑，为了避免路由信息外泄或者对路由器进行恶意攻击，OSPFv3提供基于IPsec的报文验证功能。

路由器在发送的报文中会携带配置好的IPsec安全策略的SPI（Security Parameter Index，安全参数索引）值，接收报文时通过SPI值进行IPsec安全策略匹配：只有策略匹配的报文才能接收；否则将不会接收报文，从而不能正常建立邻居和学习路由。

OSPFv3支持在区域、接口和虚连接下配置IPsec安全策略。

l 当需要保护区域内的所有报文时，可以在区域下配置IPsec安全策略，此时区域内所有路由器都需要配置相同的IPsec安全策略。

l 当需要保护区域下某些接口的报文时，可以在接口下配置IPsec安全策略，此时直连邻居接口需要配置相同的IPsec安全策略。

l 当需要保护虚连接的报文时，可以配置虚连接应用IPsec安全策略，此时虚连接上的两个邻居需要配置相同的IPsec安全策略。

当接口和接口所在区域均配置了IPsec安全策略时，接口下的策略生效；当虚连接和区域0均配置了IPsec安全策略时，虚连接的策略有效。

1. 配置准备

配置OSPFv3 IPsec安全策略之前，需要满足下面配置：

l 安全提议已经创建。

l IPsec安全策略已经创建。

关于安全提议和IPsec安全策略的详细配置过程，请参见“安全配置指导”中的“IPsec”。

2. 配置OSPFv3 IPsec安全策略

表1-22 配置OSPFv3 IPsec安全策略（区域）

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入OSPFv3视图 | ospfv3 [ process-id ] | -
进入OSPF区域视图 | area area-id | -
配置OSPFv3区域应用IPsec安全策略 | enable ipsec-policy policy-name | 必选 缺省情况下，OSPFv3区域没有应用IPsec安全策略

表1-23 配置IPsec安全策略（接口）

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
配置使能了OSPFv3的接口上应用IPsec安全策略 | ospfv3 ipsec-policy policy-name [ instance instance-id ] | 必选 缺省情况下，使能了OSPFv3的接口上没有应用IPsec安全策略

表1-24 配置IPsec安全策略（虚连接）

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入OSPFv3视图 | ospfv3 [ process-id ] | -
进入OSPF区域视图 | area area-id | -
配置虚连接应用IPsec安全策略 | vlink-peer router-id [ hello seconds | retransmit seconds | trans-delay seconds | dead seconds | instance instance-id | ipsec-policy policy-name ] * | 必选 缺省情况下，虚连接没有应用IPsec安全策略

OSPFv3 IPsec安全策略只支持手工配置方式，具体情况请参见“安全配置指导”中的“IPsec”。


1.11 OSPFv3显示和维护

在完成上述配置后，在任意视图下执行 display 命令可以显示配置后OSPFv3的运行情况，通过查看显示信息验证配置的效果。

表1-25 OSPFv3显示和维护

操作 | 命令
显示OSPFv3进程的概要信息 | display ospfv3 [ process-id ] [ | { begin | exclude | include } regular-expression ]
显示OSPFv3接口信息 | display ospfv3 interface [ interface-type interface-number | statistic ] [ | { begin | exclude | include } regular-expression ]
显示OSPFv3的LSDB信息 | display ospfv3 [ process-id ] lsdb [ [ external | inter-prefix | inter-router | intra-prefix | link | network | router | grace ] [ link-state-id ] [ originate-router router-id ] | total ] [ | { begin | exclude | include } regular-expression ]
显示OSPFv3 LSDB中LSA的统计信息 | display ospfv3 lsdb statistic [ | { begin | exclude | include } regular-expression ]
显示OSPFv3邻居信息 | display ospfv3 [ process-id ] [ area area-id ] peer [ [ interface-type interface-number ] [ verbose ] | peer-router-id ] [ | { begin | exclude | include } regular-expression ]
显示OSPFv3邻居的统计信息 | display ospfv3 peer statistic [ | { begin | exclude | include } regular-expression ]
显示OSPFv3路由表信息 | display ospfv3 [ process-id ] routing [ ipv6-address prefix-length | ipv6-address/prefix-length | abr-routes | asbr-routes | all | statistics ] [ | { begin | exclude | include } regular-expression ]
显示OSPFv3区域拓扑信息 | display ospfv3 [ process-id ] topology [ area area-id ] [ | { begin | exclude | include } regular-expression ]
显示OSPFv3虚连接信息 | display ospfv3 [ process-id ] vlink [ | { begin | exclude | include } regular-expression ]
显示OSPFv3下一跳信息 | display ospfv3 [ process-id ] next-hop [ | { begin | exclude | include } regular-expression ]
显示OSPFv3链路状态请求列表信息 | display ospfv3 [ process-id ] request-list [ { external | inter-prefix | inter-router | intra-prefix | link | network | router | grace } [ link-state-id ] [ originate-router ip-address ] | statistics ] [ | { begin | exclude | include } regular-expression ]
显示OSPFv3链路状态重传列表信息 | display ospfv3 [ process-id ] retrans-list [ { external | inter-prefix | inter-router | intra-prefix | link | network | router | grace } [ link-state-id ] [ originate-router ip-address ] | statistics ] [ | { begin | exclude | include } regular-expression ]
显示接口收发OSPFv3报文的统计信息 | display ospfv3 statistic [ | { begin | exclude | include } regular-expression ]
显示OSPFv3进程的GR状态信息 | display ospfv3 [ process-id ] graceful-restart status [ | { begin | exclude | include } regular-expression ]


1.12 OSPFv3配置举例

1.12.1 配置OSPFv3区域

1. 组网需求

l 所有的交换机都运行OSPFv3，整个自治系统划分为3个区域。其中Switch B和Switch C作为ABR来转发区域之间的路由。

l 要求将Area2配置为Stub区域，减少通告到此区域内的LSA数量，但不影响路由的可达性。

2. 组网图

图1-2 配置OSPFv3区域组网图

3. 配置步骤

(1) 配置各接口的IPv6地址（略）

(2) 配置OSPFv3基本功能

# 配置Switch A。

<SwitchA> system-view

[SwitchA] ipv6

[SwitchA] ospfv3

[SwitchA-ospfv3-1] router-id 1.1.1.1

[SwitchA-ospfv3-1] quit

[SwitchA] interface vlan-interface 300

[SwitchA-Vlan-interface300] ospfv3 1 area 1

[SwitchA-Vlan-interface300] quit

[SwitchA] interface vlan-interface 200

[SwitchA-Vlan-interface200] ospfv3 1 area 1

[SwitchA-Vlan-interface200] quit

# 配置Switch B。

<SwitchB> system-view

[SwitchB] ipv6

[SwitchB] ospfv3

[SwitchB-ospf-1] router-id 2.2.2.2

[SwitchB-ospf-1] quit

[SwitchB] interface vlan-interface 100

[SwitchB-Vlan-interface100] ospfv3 1 area 0

[SwitchB-Vlan-interface100] quit

[SwitchB] interface vlan-interface 200

[SwitchB-Vlan-interface200] ospfv3 1 area 1

[SwitchB-Vlan-interface200] quit

# 配置Switch C。

<SwitchC> system-view

[SwitchC] ipv6

[SwitchC] ospfv3

[SwitchC-ospfv3-1] router-id 3.3.3.3

[SwitchC-ospfv3-1] quit

[SwitchC] interface vlan-interface 100

[SwitchC-Vlan-interface100] ospfv3 1 area 0

[SwitchC-Vlan-interface100] quit

[SwitchC] interface vlan-interface 400

[SwitchC-Vlan-interface400] ospfv3 1 area 2

[SwitchC-Vlan-interface400] quit

# 配置Switch D。

<SwitchD> system-view

[SwitchD] ipv6

[SwitchD] ospfv3

[SwitchD-ospfv3-1] router-id 4.4.4.4

[SwitchD-ospfv3-1] quit

[SwitchD] interface vlan-interface 400

[SwitchD-Vlan-interface400] ospfv3 1 area 2

[SwitchD-Vlan-interface400] quit

# 查看Switch B的OSPFv3邻居状态。

[SwitchB] display ospfv3 peer

OSPFv3 Area ID 0.0.0.0 (Process 1)

----------------------------------------------------------------------

Neighbor ID Pri State Dead Time Interface Instance ID

3.3.3.3 1 Full/DR 00:00:39 Vlan100 0

OSPFv3 Area ID 0.0.0.1 (Process 1)

----------------------------------------------------------------------

Neighbor ID Pri State Dead Time Interface Instance ID

1.1.1.1 1 Full/Backup 00:00:38 Vlan200 0

# 查看Switch C的OSPFv3邻居状态。

[SwitchC] display ospfv3 peer

OSPFv3 Area ID 0.0.0.0 (Process 1)

----------------------------------------------------------------------

Neighbor ID Pri State Dead Time Interface Instance ID

2.2.2.2 1 Full/Backup 00:00:39 Vlan100 0

OSPFv3 Area ID 0.0.0.2 (Process 1)

----------------------------------------------------------------------

Neighbor ID Pri State Dead Time Interface Instance ID

4.4.4.4 1 Full/DR 00:00:38 Vlan400 0

# 查看Switch D的OSPFv3路由表信息。

[SwitchD] display ospfv3 routing

E1 - Type 1 external route, IA - Inter area route, I - Intra area route

E2 - Type 2 external route, * - Seleted route

OSPFv3 Router with ID (4.4.4.4) (Process 1)

------------------------------------------------------------------------

*Destination: 2001::/64

Type : IA Cost : 2

NextHop : FE80::F40D:0:93D0:1 Interface: Vlan400

*Destination: 2001:1::/64

Type : IA Cost : 3

NextHop : FE80::F40D:0:93D0:1 Interface: Vlan400

*Destination: 2001:2::/64

Type : I Cost : 1

NextHop : directly-connected Interface: Vlan400

*Destination: 2001:3::/64

Type : IA Cost : 4

NextHop : FE80::F40D:0:93D0:1 Interface: Vlan400

(3) 配置Stub区域

# 配置Switch D的Stub区域。

[SwitchD] ospfv3

[SwitchD-ospfv3-1] area 2

[SwitchD-ospfv3-1-area-0.0.0.2] stub

# 配置Switch C的Stub区域，设置发送到Stub区域的缺省路由的开销为10。

[SwitchC] ospfv3

[SwitchC-ospfv3-1] area 2

[SwitchC-ospfv3-1-area-0.0.0.2] stub

[SwitchC-ospfv3-1-area-0.0.0.2] default-cost 10

# 查看Switch D的OSPFv3路由表信息，可以看到路由表中多了一条缺省路由，它的开销值为直连路由的开销和所配置的开销值之和。

[SwitchD] display ospfv3 routing

E1 - Type 1 external route, IA - Inter area route, I - Intra area route

E2 - Type 2 external route, * - Seleted route

OSPFv3 Router with ID (4.4.4.4) (Process 1)

------------------------------------------------------------------------

*Destination: ::/0

Type : IA Cost : 11

NextHop : FE80::F40D:0:93D0:1 Interface: Vlan400

*Destination: 2001::/64

Type : IA Cost : 2

NextHop : FE80::F40D:0:93D0:1 Interface: Vlan400

*Destination: 2001:1::/64

Type : IA Cost : 3

NextHop : FE80::F40D:0:93D0:1 Interface: Vlan400

*Destination: 2001:2::/64

Type : I Cost : 1

NextHop : directly-connected Interface: Vlan400

*Destination: 2001:3::/64

Type : IA Cost : 4

NextHop : FE80::F40D:0:93D0:1 Interface: Vlan400

(4) 配置Totally Stub区域

# 配置Switch C，设置Area2为Totally Stub区域。

[SwitchC-ospfv3-1-area-0.0.0.2] stub no-summary

# 查看Switch D的OSPFv3路由表，可以发现路由表项数目减少了，其他非直连路由都被抑制，只有缺省路由被保留。

[SwitchD] display ospfv3 routing

E1 - Type 1 external route, IA - Inter area route, I - Intra area route

E2 - Type 2 external route, * - Seleted route

OSPFv3 Router with ID (4.4.4.4) (Process 1)

------------------------------------------------------------------------

*Destination: ::/0

Type : IA Cost : 11

NextHop : FE80::F40D:0:93D0:1 Interface: Vlan400

*Destination: 2001:2::/64

Type : I Cost : 1

NextHop : directly-connected Interface: Vlan400

1.12.2 配置OSPFv3的DR选择

1. 组网需求

l Switch A的优先级为100，它是网络上的最高优先级，所以Switch A被选为DR；

l Switch C的优先级为2，它是优先级次高的，被选为BDR；

l Switch B的优先级为0，这意味着它将无法成为DR；

l Switch D没有配置优先级，取缺省值1。

2. 组网图

图1-3 配置OSPFv3的DR选择组网图

3. 配置步骤

(1) 配置各接口的IPv6地址（略）

(2) 配置OSPFv3基本功能

# 配置Switch A，启动OSPFv3，并设置其Router ID为1.1.1.1。

<SwitchA> system-view

[SwitchA] ipv6

[SwitchA] ospfv3

[SwitchA-ospfv3-1] router-id 1.1.1.1

[SwitchA-ospfv3-1] quit

[SwitchA] interface vlan-interface 100

[SwitchA-Vlan-interface100] ospfv3 1 area 0

[SwitchA-Vlan-interface100] quit

# 配置Switch B，启动OSPFv3，并设置其Router ID为2.2.2.2。

<SwitchB> system-view

[SwitchB] ipv6

[SwitchB] ospfv3

[SwitchB-ospfv3-1] router-id 2.2.2.2

[SwitchB-ospfv3-1] quit

[SwitchB] interface vlan-interface 200

[SwitchB-Vlan-interface200] ospfv3 1 area 0

[SwitchB-Vlan-interface200] quit

# 配置Switch C，启动OSPFv3，并设置其Router ID为3.3.3.3。

<SwitchC> system-view

[SwitchC] ipv6

[SwitchC] ospfv3

[SwitchC-ospfv3-1] router-id 3.3.3.3

[SwitchC-ospfv3-1] quit

[SwitchC] interface vlan-interface 100

[SwitchC-Vlan-interface100] ospfv3 1 area 0

[SwitchC-Vlan-interface100] quit

# 配置Switch D，启动OSPFv3，并设置其Router ID为4.4.4.4。

<SwitchD> system-view

[SwitchD] ipv6

[SwitchD] ospfv3

[SwitchD-ospfv3-1] router-id 4.4.4.4

[SwitchD-ospfv3-1] quit

[SwitchD] interface vlan-interface 200

[SwitchD-Vlan-interface200] ospfv3 1 area 0

[SwitchD-Vlan-interface200] quit

# 查看Switch A的邻居信息，可以看到DR优先级（缺省为1）以及邻居状态，此时优先级相等，Router ID大者被选为DR，可以看到Switch D为DR，Switch C为BDR。

[SwitchA] display ospfv3 peer

OSPFv3 Area ID 0.0.0.0 (Process 1)

----------------------------------------------------------------------

Neighbor ID Pri State Dead Time Interface Instance ID

2.2.2.2 1 2-Way/DROther 00:00:36 Vlan200 0

3.3.3.3 1 Full/Backup 00:00:35 Vlan100 0

4.4.4.4 1 Full/DR 00:00:33 Vlan200 0

# 查看Switch D的邻居信息，可以看到Switch D和其他邻居之间的邻居状态都为Full。

[SwitchD] display ospfv3 peer

OSPFv3 Area ID 0.0.0.0 (Process 1)

----------------------------------------------------------------------

Neighbor ID Pri State Dead Time Interface Instance ID

1.1.1.1 1 Full/DROther 00:00:30 Vlan100 0

2.2.2.2 1 Full/DROther 00:00:37 Vlan200 0

3.3.3.3 1 Full/Backup 00:00:31 Vlan100 0

(3) 配置接口的DR优先级

# 配置Switch A的接口Vlan-interface100的DR优先级为100。

[SwitchA] interface vlan-interface 100

[SwitchA-Vlan-interface100] ospfv3 dr-priority 100

[SwitchA-Vlan-interface100] quit

# 配置Switch B的接口Vlan-interface200的DR优先级为0。

[SwitchB] interface vlan-interface 200

[SwitchB-Vlan-interface200] ospfv3 dr-priority 0

[SwitchB-Vlan-interface200] quit

# 配置Switch C的接口Vlan-interface100的DR优先级为2。

[SwitchC] interface vlan-interface 100

[SwitchC-Vlan-interface100] ospfv3 dr-priority 2

[SwitchC-Vlan-interface100] quit

# 显示Switch A的邻居信息，可以看到DR优先级已经更新，但DR/BDR并未改变。

[SwitchA] display ospfv3 peer

OSPFv3 Area ID 0.0.0.0 (Process 1)

----------------------------------------------------------------------

Neighbor ID Pri State Dead Time Interface Instance ID

2.2.2.2 0 2-Way/DROther 00:00:38 Vlan200 0

3.3.3.3 2 Full/Backup 00:00:32 Vlan100 0

4.4.4.4 1 Full/DR 00:00:36 Vlan200 0

# 显示Switch D的邻居信息，可以看到Switch D仍然为DR。

[SwitchD] display ospfv3 peer

OSPFv3 Area ID 0.0.0.0 (Process 1)

----------------------------------------------------------------------

Neighbor ID Pri State Dead Time Interface Instance ID

1.1.1.1 100 Full/DROther 00:00:33 Vlan100 0

2.2.2.2 0 Full/DROther 00:00:36 Vlan200 0

3.3.3.3 2 Full/Backup 00:00:40 Vlan100 0

(4) 重新进行DR/BDR选择

# 将所有接口一次 shutdown 和 undo shutdown，使OSPFv3进行DR/BDR的重新选举。

# 查看Switch A的邻居信息，可以看到Switch C为BDR。

[SwitchA] display ospfv3 peer

OSPFv3 Area ID 0.0.0.0 (Process 1)

----------------------------------------------------------------------

Neighbor ID Pri State Dead Time Interface Instance ID

2.2.2.2 0 Full/DROther 00:00:31 Vlan200 0

3.3.3.3 2 Full/Backup 00:00:39 Vlan100 0

4.4.4.4 1 Full/DROther 00:00:37 Vlan200 0

# 查看Switch D的邻居信息，可以看到Switch A为DR。

[SwitchD] display ospfv3 peer

OSPFv3 Area ID 0.0.0.0 (Process 1)

----------------------------------------------------------------------

Neighbor ID Pri State Dead Time Interface Instance ID

1.1.1.1 100 Full/DR 00:00:34 Vlan100 0

2.2.2.2 0 2-Way/DROther 00:00:34 Vlan200 0

3.3.3.3 2 Full/Backup 00:00:32 Vlan100 0

1.12.3 配置OSPFv3引入外部路由

1. 组网需求

l Switch A、Switch B和Switch C位于Area 2内；

l Switch B上运行两个OSPFv3进程：OSPFv3 1和OSPFv3 2。Switch B通过OSPFv3 1和Switch A交换路由信息，通过OSPFv3 2和Switch C交换路由信息；

l 在Switch B上配置OSPFv3进程2引入外部路由，引入直连路由和OSPFv3进程1的路由，并将引入的外部路由的缺省度量值设置为3，使得Switch C能够学习到达1::0/64和2::0/64的路由，但Switch A不能学习到达3::0/64和4::0/64的路由。

2. 组网图

图1-4 配置OSPFv3引入外部路由组网图

3. 配置步骤

(1) 配置各接口的IPv6地址（略）

(2) 配置OSPFv3

# 在Switch A上启动OSPFv3进程1。

<SwitchA> system-view

[SwitchA] ipv6

[SwitchA] ospfv3 1

[SwitchA-ospfv3-1] router-id 1.1.1.1

[SwitchA-ospfv3-1] quit

[SwitchA] interface vlan-interface 100

[SwitchA-Vlan-interface100] ospfv3 1 area 2

[SwitchA-Vlan-interface100] quit

[SwitchA] interface vlan-interface 200

[SwitchA-Vlan-interface200] ospfv3 1 area 2

[SwitchA-Vlan-interface200] quit

# 在Switch B上启动两个OSPFv3进程，进程号分别为1和2。

<SwitchB> system-view

[SwitchB] ipv6

[SwitchB] ospfv3 1

[SwitchB-ospfv3-1] router-id 2.2.2.2

[SwitchB-ospfv3-1] quit

[SwitchB] interface vlan-interface 100

[SwitchB-Vlan-interface100] ospfv3 1 area 2

[SwitchB-Vlan-interface100] quit

[SwitchB] ospfv3 2

[SwitchB-ospfv3-2] router-id 3.3.3.3

[SwitchB-ospfv3-2] quit

[SwitchB] interface vlan-interface 300

[SwitchB-Vlan-interface300] ospfv3 2 area 2

[SwitchB-Vlan-interface300] quit

# 在Switch C上启动OSPFv3进程2。

<SwitchC> system-view

[SwitchC] ipv6

[SwitchC] ospfv3 2

[SwitchC-ospfv3-2] router-id 4.4.4.4

[SwitchC-ospfv3-2] quit

[SwitchC] interface vlan-interface 300

[SwitchC-Vlan-interface300] ospfv3 2 area 2

[SwitchC-Vlan-interface300] quit

[SwitchC] interface vlan-interface 400

[SwitchC-Vlan-interface400] ospfv3 2 area 2

[SwitchC-Vlan-interface400] quit

# 查看Switch C的路由表信息。

[SwitchC] display ipv6 routing-table

Routing Table :

Destinations : 6 Routes : 6

Destination: ::1/128 Protocol : Direct

NextHop : ::1 Preference: 0

Interface : InLoop0 Cost : 0

Destination: 3::/64 Protocol : Direct

NextHop : 3::2 Preference: 0

Interface : Vlan300 Cost : 0

Destination: 3::2/128 Protocol : Direct

NextHop : ::1 Preference: 0

Interface : InLoop0 Cost : 0

Destination: 4::/64 Protocol : Direct

NextHop : 4::1 Preference: 0

Interface : Vlan400 Cost : 0

Destination: 4::1/128 Protocol : Direct

NextHop : ::1 Preference: 0

Interface : InLoop0 Cost : 0

Destination: FE80::/10 Protocol : Direct

NextHop : :: Preference: 0

Interface : NULL0 Cost : 0

(3) 配置OSPFv3引入外部路由

# 在Switch B上配置OSPFv3引入外部路由,，引入直连路由和OSPFv3进程1的路由。

[SwitchB] ospfv3 2

[SwitchB-ospfv3-2] default cost 3

[SwitchB-ospfv3-2] import-route ospfv3 1

[SwitchB-ospfv3-2] import-route direct

[SwitchB-ospfv3-2] quit

# 查看路由引入后Switch C的路由表信息。

[SwitchC] display ipv6 routing-table

Routing Table :

Destinations : 8 Routes : 8

Destination: ::1/128 Protocol : Direct

NextHop : ::1 Preference: 0

Interface : InLoop0 Cost : 0

Destination: 1::/64 Protocol : OSPFv3

NextHop : FE80::200:CFF:FE01:1C03 Preference: 150

Interface : Vlan300 Cost : 3

Destination: 2::/64 Protocol : OSPFv3

NextHop : FE80::200:CFF:FE01:1C03 Preference: 150

Interface : Vlan300 Cost : 3

Destination: 3::/64 Protocol : Direct

NextHop : 3::2 Preference: 0

Interface : Vlan300 Cost : 0

Destination: 3::2/128 Protocol : Direct

NextHop : ::1 Preference: 0

Interface : InLoop0 Cost : 0

Destination: 4::/64 Protocol : Direct

NextHop : 4::1 Preference: 0

Interface : Vlan400 Cost : 0

Destination: 4::1/128 Protocol : Direct

NextHop : ::1 Preference: 0

Interface : InLoop0 Cost : 0

Destination: FE80::/10 Protocol : Direct

NextHop : :: Preference: 0

Interface : NULL0 Cost : 0

1.12.4 配置OSPFv3 GR

1. 组网需求

l Switch A、Switch B和Switch C既属于同一自治系统，也属于同一OSPFv3区域，通过OSPFv3协议实现网络互连，并提供GR机制。

l Switch A作为GR Restarter，Switch B和Switch C作为GR Helper并且通过GR机制与Switch A保持带外同步。

2. 组网图

图1-5 配置OSPFv3的GR组网图

3. 配置步骤

(1) 配置各接口的IPv6地址（略）

(2) 配置OSPFv3基本功能

# 配置Switch A，启动OSPFv3，并设置其Router ID为1.1.1.1。

<SwitchA> system-view

[SwitchA] ipv6

[SwitchA] ospfv3 1

[SwitchA-ospfv3-1] router-id 1.1.1.1

[SwitchA-ospfv3-1] graceful-restart enable

[SwitchA-ospfv3-1] quit

[SwitchA] interface vlan-interface 100

[SwitchA-Vlan-interface100] ospfv3 1 area 1

[SwitchA-Vlan-interface100] quit

# 配置Switch B，启动OSPFv3，并设置其Router ID为2.2.2.2。缺省情况下，Switch B的GR helper能力处于开启状态。

<SwitchB> system-view

[SwitchB] ipv6

[SwitchB] ospfv3 1

[SwitchB-ospfv3-1] router-id 2.2.2.2

[SwitchB-ospfv3-1] quit

[SwitchB] interface vlan-interface 100

[SwitchB-Vlan-interface100] ospfv3 1 area 1

[SwitchB-Vlan-interface100] quit

# 配置Switch C，启动OSPFv3，并设置其Router ID为3.3.3.3。缺省情况下，Switch C的GR helper能力处于开启状态。

<SwitchC> system-view

[SwitchC] ipv6

[SwitchC] ospfv3 1

[SwitchC-ospfv3-1] router-id 3.3.3.3

[SwitchC-ospfv3-1] quit

[SwitchC] interface vlan-interface 100

[SwitchC-Vlan-interface100] ospfv3 1 area 1

[SwitchC-Vlan-interface100] quit

(3) 检验配置效果

# 运行稳定后，在Switch A上主备倒换进入OSPFv3协议的GR进程。

1.12.5 配置OSPFv3与BFD联动

1. 组网需求

l Switch A、Switch B和Switch C上运行OSPFv3，网络层相互可达。

l 当Switch A和Switch B通过L2 Switch通信的链路出现故障时BFD能够快速感知通告OSPFv3协议，并且切换到Switch C进行通信。

2. 组网图

图1-6 配置OSPFv3与BFD联动组网图

设备 | 接口 | IPv6地址 | 设备 | 接口 | IPv6地址
Switch A | Vlan-int10 | 2001::1/64 | Switch B | Vlan-int10 | 2001::2/64
 | Vlan-int11 | 2001:2::1/64 |  | Vlan-int13 | 2001:3::2/64
Switch C | Vlan-int11 | 2001:2::2/64 |  |  |
 | Vlan-int13 | 2001:3::1/64 |  |  |

3. 配置步骤

(1) 配置各接口的IPv6地址（略）

(2) 配置OSPFv3基本功能

# 配置Switch A，启动OSPFv3，并设置其Router ID为1.1.1.1。

<SwitchA> system-view

[SwitchA] ipv6

[SwitchA] ospfv3

[SwitchA-ospfv3-1] router-id 1.1.1.1

[SwitchA-ospfv3-1] quit

[SwitchA] interface vlan-interface 10

[SwitchA-Vlan-interface10] ospfv3 1 area 0

[SwitchA-Vlan-interface10] quit

[SwitchA] interface vlan-interface 11

[SwitchA-Vlan-interface11] ospfv3 1 area 0

[SwitchA-Vlan-interface11] quit

# 配置Switch B，启动OSPFv3，并设置其Router ID为2.2.2.2。

<SwitchB> system-view

[SwitchB] ipv6

[SwitchB] ospfv3

[SwitchB-ospf-1] router-id 2.2.2.2

[SwitchB-ospf-1] quit

[SwitchB] interface vlan-interface 10

[SwitchB-Vlan-interface10] ospfv3 1 area 0

[SwitchB-Vlan-interface10] quit

[SwitchB] interface vlan-interface 13

[SwitchB-Vlan-interface13] ospfv3 1 area 0

[SwitchB-Vlan-interface13] quit

# 配置Switch C，启动OSPFv3，并设置其Router ID为3.3.3.3。

<SwitchC> system-view

[SwitchC] ipv6

[SwitchC] ospfv3

[SwitchC-ospfv3-1] router-id 3.3.3.3

[SwitchC-ospfv3-1] quit

[SwitchC] interface vlan-interface 11

[SwitchC-Vlan-interface11] ospfv3 1 area 0

[SwitchC-Vlan-interface11] quit

[SwitchC] interface vlan-interface 13

[SwitchC-Vlan-interface13] ospfv3 1 area 0

[SwitchC-Vlan-interface13] quit

(3) 配置BFD功能

# 在Switch A上使能BFD检测功能，并配置BFD参数。

[SwitchA] bfd session init-mode active

[SwitchA] interface vlan-interface 10

[SwitchA-Vlan-interface10] ospfv3 bfd enable

[SwitchA-Vlan-interface10] bfd min-transmit-interval 500

[SwitchA-Vlan-interface10] bfd min-receive-interval 500

[SwitchA-Vlan-interface10] bfd detect-multiplier 7

[SwitchA-Vlan-interface10] return

# 在Switch B上使能BFD检测功能，并配置BFD参数。

[SwitchB] bfd session init-mode active

[SwitchB] interface vlan-interface 10

[SwitchB-Vlan-interface10] ospfv3 bfd enable

[SwitchB-Vlan-interface10] bfd min-transmit-interval 500

[SwitchB-Vlan-interface10] bfd min-receive-interval 500

[SwitchB-Vlan-interface10] bfd detect-multiplier 6

(4) 检查配置结果

下面以Switch A为例，Switch B和Switch A类似，不再赘述。

# 显示Switch A的BFD信息。

<SwitchA> display bfd session

Total Session Num: 1 Init Mode: Active

IPv6 Session Working Under Ctrl Mode:

Local Discr: 1441 Remote Discr: 1450

Source IP: FE80::20F:FF:FE00:1202（Switch A接口Vlan-interface10的链路本地地址）

Destination IP: FE80::20F:FF:FE00:1200（Switch B接口Vlan-interface10的链路本地地址）

Session State: Up Interface: Vlan10

Hold Time: /

# 在Switch A上查看2001:4::0/64的路由信息，可以看出Switch A和Switch B是通过L2 Swtich进行通信的。

<SwitchA> display ipv6 routing-table 2001:4::0 64 verbose

Routing Table :

Summary Count : 2

Destination : 2001:4:: PrefixLength : 64

NextHop : 2001::2 Preference : 10

IpPrecedence : QosLcId :

RelayNextHop : :: Tag : 0H

Neighbor : :: ProcessID : 0

Interface : Vlan-interface10 Protocol : OSPFv3

State : Active Adv Cost : 1

Tunnel ID : 0x0 Label : NULL

Age : 4538sec

Destination : 2001:4:: PrefixLength : 64

NextHop : 2001:2::2 Preference : 10

IpPrecedence : QosLcId :

RelayNextHop : :: Tag : 0H

Neighbor : :: ProcessID : 0

Interface : Vlan-interface11 Protocol : OSPFv3

State : Invalid Adv Cost : 2

Tunnel ID : 0x0 Label : NULL

Age : 4515sec

# 打开Switch A的调试开关。

<SwitchA> debugging bfd scm

<SwitchA> debugging bfd event

<SwitchA> debugging ospfv3 event bfd

<SwitchA> terminal debugging

# Switch B和二层交换机之间的链路发生故障后。可以看到Switch A能够快速检测Switch B的变化。

%Nov 5 11:37:43:062 2009 SwitchA BFD/5/BFD_CHANGE_FSM: Sess[FE80::20F:FF:FE00:1202/ FE80::20F:FF:FE00:1200,15/15,Vlan10,Ctrl], Sta: UP->DOWN, Diag: 1

%Nov 5 11:37:43:062 2009 SwitchA OSPFV3/5/OSPFv3_NBR_CHG: OSPFv3 1 Neighbor 2.2.2.2(Vlan-interface10) from Full to Down.

*Nov 5 11:37:43:062 2009 SwitchA RM/6/RMDEBUG: OSPFv3 OSPFv3-BFD: Message Type rcv BFD down, Connect Type direct-connect, Src IP Address FE80::20F:FF:FE00:1202, Dst IP Address FE80::20F:FF:FE00:1200.

*Nov 5 11:37:43:062 2009 SwitchA RM/6/RMDEBUG: OSPFv3 OSPFv3-BFD: Message Type delete session, Connect Type direct-connect, Src IP Address FE80::20F:FF:FE00:1202, Dst IP Address FE80::20F:FF:FE00:1200.

# 显示Switch A的BFD信息。

查看Switch A的BFD信息，Switch A已取消与Switch B的邻居关系，没有任何输出信息。

<SwitchA> display bfd session

# 在Switch A上查看2001:4::0/64的路由信息，可以看出Switch A和Switch B已经切换到Switch C进行通信。

<SwitchA> display ipv6 routing-table 2001:4::0 64 verbose

Routing Table :

Summary Count : 1

Destination : 2001:4:: PrefixLength : 64

NextHop : 2001:2::2 Preference : 10

IpPrecedence : QosLcId :

RelayNextHop : :: Tag : 0H

Neighbor : :: ProcessID : 0

Interface : Vlan-interface11 Protocol : OSPFv3

State : Invalid Adv Cost : 2

Tunnel ID : 0x0 Label : NULL

Age : 4610sec

1.12.6 配置OSPFv3 IPsec安全策略

1. 组网需求

l 所有的交换机都运行OSPFv3，整个自治系统划分为2个区域。

l 要求配置IPsec安全策略对Switch A、Switch B和Switch C之间的OSPFv3报文进行有效性检查和验证。

2. 组网图

图1-7 配置OSPFv3 IPsec策略组网图

3. 配置步骤

(1) 配置各接口的IPv6地址（略）

(2) 配置OSPFv3基本功能

# 配置Switch A，启动OSPFv3，并设置其Router ID为1.1.1.1。

<SwitchA> system-view

[SwitchA] ipv6

[SwitchA] ospfv3 1

[SwitchA-ospfv3-1] router-id 1.1.1.1

[SwitchA-ospfv3-1] quit

[SwitchA] interface vlan-interface 200

[SwitchA-Vlan-interface200] ospfv3 1 area 1

[SwitchA-Vlan-interface200] quit

# 配置Switch B，启动OSPFv3，并设置其Router ID为2.2.2.2。

<SwitchB> system-view

[SwitchB] ipv6

[SwitchB] ospfv3 1

[SwitchB-ospfv3-1] router-id 2.2.2.2

[SwitchB-ospfv3-1] quit

[SwitchB] interface vlan-interface 100

[SwitchB-Vlan-interface100] ospfv3 1 area 0

[SwitchB-Vlan-interface100] quit

[SwitchB] interface vlan-interface 200

[SwitchB-Vlan-interface200] ospfv3 1 area 1

[SwitchB-Vlan-interface200] quit

# 在Switch C，启动OSPFv3，并设置其Router ID为3.3.3.3。

<SwitchC> system-view

[SwitchC] ipv6

[SwitchC] ospfv3 1

[SwitchC-ospfv3-1] router-id 3.3.3.3

[SwitchC-ospfv3-1] quit

[SwitchC] interface vlan-interface 100

[SwitchC-Vlan-interface100] ospfv3 1 area 0

[SwitchC-Vlan-interface100] quit

(3) 配置OSPFv3 IPsec安全策略

# 配置Switch A。创建名为tran1的安全提议，报文封装形式采用传输模式，安全协议采用ESP协议。创建一条安全策略policy001，协商方式为manual，配置SPI和密钥。

[SwitchA] ipsec proposal tran1

[SwitchA-ipsec-proposal-tran1] encapsulation-mode transport

[SwitchA-ipsec-proposal-tran1] transform esp

[SwitchA-ipsec-proposal-tran1] esp encryption-algorithm des

[SwitchA-ipsec-proposal-tran1] esp authentication-algorithm sha1

[SwitchA-ipsec-proposal-tran1] quit

[SwitchA] ipsec policy policy001 10 manual

[SwitchA-ipsec-policy-manual-policy001-10] proposal tran1

[SwitchA-ipsec-policy-manual-policy001-10] sa spi outbound esp 12345

[SwitchA-ipsec-policy-manual-policy001-10] sa spi inbound esp 12345

[SwitchA-ipsec-policy-manual-policy001-10] sa string-key outbound esp abcdefg

[SwitchA-ipsec-policy-manual-policy001-10] sa string-key inbound esp abcdefg

[SwitchA-ipsec-policy-manual-policy001-10] quit

# 配置Switch B。创建名为tran1的安全提议，报文封装形式采用传输模式，安全协议采用ESP协议；创建一条安全策略policy001，协商方式为manual，配置SPI和密钥。创建名为tran2的安全提议，报文封装形式采用传输模式，安全协议采用ESP协议；创建一条安全策略policy002，协商方式为manual，配置SPI和密钥。

[SwitchB] ipsec proposal tran1

[SwitchB-ipsec-proposal-tran1] encapsulation-mode transport

[SwitchB-ipsec-proposal-tran1] transform esp

[SwitchB-ipsec-proposal-tran1] esp encryption-algorithm des

[SwitchB-ipsec-proposal-tran1] esp authentication-algorithm sha1

[SwitchB-ipsec-proposal-tran1] quit

[SwitchB] ipsec policy policy001 10 manual

[SwitchB-ipsec-policy-manual-policy001-10] proposal tran1

[SwitchB-ipsec-policy-manual-policy001-10] sa spi outbound esp 12345

[SwitchB-ipsec-policy-manual-policy001-10] sa spi inbound esp 12345

[SwitchB-ipsec-policy-manual-policy001-10] sa string-key outbound esp abcdefg

[SwitchB-ipsec-policy-manual-policy001-10] sa string-key inbound esp abcdefg

[SwitchB-ipsec-policy-manual-policy001-10] quit

[SwitchB] ipsec proposal tran2

[SwitchB-ipsec-proposal-tran2] encapsulation-mode transport

[SwitchB-ipsec-proposal-tran2] transform esp

[SwitchB-ipsec-proposal-tran2] esp encryption-algorithm des

[SwitchB-ipsec-proposal-tran2] esp authentication-algorithm sha1

[SwitchB-ipsec-proposal-tran2] quit

[SwitchB] ipsec policy policy002 10 manual

[SwitchB-ipsec-policy-manual-policy002-10] proposal tran2

[SwitchB-ipsec-policy-manual-policy002-10] sa spi outbound esp 54321

[SwitchB-ipsec-policy-manual-policy002-10] sa spi inbound esp 54321

[SwitchB-ipsec-policy-manual-policy002-10] sa string-key outbound esp gfedcba

[SwitchB-ipsec-policy-manual-policy002-10] sa string-key inbound esp gfedcba

[SwitchB-ipsec-policy-manual-policy002-10] quit

# 配置Switch C。创建名为tran2的安全提议，报文封装形式采用传输模式，安全协议采用ESP协议。创建一条安全策略policy002，协商方式为manual，配置SPI和密钥。

[SwitchC] ipsec proposal tran2

[SwitchC-ipsec-proposal-tran2] encapsulation-mode transport

[SwitchC-ipsec-proposal-tran2] transform esp

[SwitchC-ipsec-proposal-tran2] esp encryption-algorithm des

[SwitchC-ipsec-proposal-tran2] esp authentication-algorithm sha1

[SwitchC-ipsec-proposal-tran2] quit

[SwitchC] ipsec policy policy002 10 manual

[SwitchC-ipsec-policy-manual-policy002-10] proposal tran2

[SwitchC-ipsec-policy-manual-policy002-10] sa spi outbound esp 54321

[SwitchC-ipsec-policy-manual-policy002-10] sa spi inbound esp 54321

[SwitchC-ipsec-policy-manual-policy002-10] sa string-key outbound esp gfedcba

[SwitchC-ipsec-policy-manual-policy002-10] sa string-key inbound esp gfedcba

[SwitchC-ipsec-policy-manual-policy002-10] quit

(4) OSPFv3区域上应用IPsec安全策略

# 配置Switch A。

[SwitchA] ospfv3 1

[SwitchA-ospfv3-1] area 1

[SwitchA-ospfv3-1-area-0.0.0.1] enable ipsec-policy policy001

[SwitchA-ospfv3-1-area-0.0.0.1] quit

[SwitchA-ospfv3-1] quit

# 配置Switch B。

[SwitchB] ospfv3 1

[SwitchB-ospfv3-1] area 0

[SwitchB-ospfv3-1-area-0.0.0.0] enable ipsec-policy policy002

[SwitchB-ospfv3-1-area-0.0.0.0] quit

[SwitchB-ospfv3-1] area 1

[SwitchB-ospfv3-1-area-0.0.0.1] enable ipsec-policy policy001

[SwitchB-ospfv3-1-area-0.0.0.1] quit

[SwitchB-ospfv3-1] quit

# 配置Switch C。

[SwitchC] ospfv3 1

[SwitchC-ospfv3-1] area 0

[SwitchC-ospfv3-1-area-0.0.0.0] enable ipsec-policy policy002

[SwitchC-ospfv3-1-area-0.0.0.0] quit

[SwitchC-ospfv3-1] quit

(5) 检验配置结果

以上配置完成后，Switch A、Switch B和Switch C之间的数据流将被加密传输。


1.13 常见配置错误举例

1.13.1 OSPFv3邻居无法建立

1. 故障现象

OSPFv3邻居无法建立

2. 分析

如果物理连接和下层协议正常，则检查接口上配置的OSPFv3参数，必须保证与相邻路由器的参数一致，区域号相同。

相邻的两台路由器接口的网络类型必须一致。若网络类型为广播网，则至少有一个接口的DR优先级应大于零。

3. 处理过程

(1) 使用 display ospfv3 peer 命令查看OSPFv3邻居状态。

(2) 使用 display ospfv3 interface 命令查看OSPFv3接口的信息。

(3) 检查物理连接及下层协议是否正常运行，可通过Ping命令测试。若从本地路由器Ping对端路由器不通，则表明物理连接和下层协议有问题。

(4) 检查OSPFv3定时器，在同一接口上失效时间应至少为Hello间隔时间的4倍。

(5) 如果网络类型为广播网，则至少有一个接口的DR优先级大于零。

1.13.2 OSPFv3路由信息不正确

1. 故障现象

OSPFv3不能发现其他区域的路由

2. 分析

应保证骨干区域与所有的区域相连接。若一台路由器配置了两个以上的区域，则至少有一个区域应与骨干区域相连。骨干区域不能配置成Stub区域。

在Stub区域内的路由器不能接收外部AS的路由。如果一个区域配置成Stub区域，则与这个区域相连的所有路由器都应将此区域配置成Stub区域。

3. 处理过程

(1) 使用 display ospfv3 peer 命令查看OSPFv3邻居状态。

(2) 使用 display ospfv3 interface 命令查看OSPFv3接口的信息。

(3) 使用 display ospfv3 lsdb 查看LSDB的信息是否完整。

(4) 使用 display current-configuration configuration 命令查看区域是否配置正确。若配置了两个以上的区域，则至少有一个区域与骨干区域相连。

(5) 如果某区域是Stub区域，则该区域中的所有路由器都要配置 stub 命令。

(6) 如果配置了虚连接，使用 display ospf vlink 命令查看邻居状态是否正常。


1 IPv6 IS-IS配置

l IPv6 IS-IS实现了IPv4 IS-IS的所有功能，与IPv4 IS-IS的区别在于发布的是IPv6路由信息，本章只列出了IPv6 IS-IS专有的配置任务，其他相关配置任务请参见“三层技术-IP路由配置指导”中的“IS-IS”。

l 本文所指的路由器代表运行了路由协议的三层设备。

l S3600V2-SI系列交换机不支持IPv6 IS-IS功能。

相关链接

  • 1.1 IPv6 IS-IS简介
  • 1.2 配置IPv6 IS-IS的基本特性
  • 1.3 配置IPv6 IS-IS的路由信息控制
  • 1.4 配置IPv6 IS-IS与BFD联动
  • 1.5 IPv6 IS-IS显示和维护
  • 1.6 IPv6 IS-IS典型配置举例
父主题： 10-IPv6 IS-IS配置


1.1 IPv6 IS-IS简介

IS-IS（Intermediate System-to-Intermediate System，中间系统到中间系统）支持多种网络层协议，其中包括IPv6协议，支持IPv6协议的IS-IS路由协议又称为IPv6 IS-IS动态路由协议。IETF的draft-ietf-isis-ipv6-05中规定了IS-IS为支持IPv6所新增的内容，主要是新添加的支持IPv6协议的两个TLV（Type-Length-Values）和一个新的NLPID（Network Layer Protocol Identifier，网络层协议标识符）。

TLV是LSP（Link State PDU或Link State Packet）中的一个可变长字段值。新增的两个TLV分别是：

l IPv6 Reachability：类型值为236（0xEC），通过定义路由信息前缀、度量值等信息来说明网络的可达性。

l IPv6 Interface Address：类型值为232（0xE8），它对应于IPv4中的“IP Interface Address”TLV，只不过把原来的32比特的IPv4地址改为128比特的IPv6地址。

NLPID是标识网络层协议报文的一个8比特字段，IPv6的NLPID值为142（0x8E）。如果IS-IS路由器支持IPv6，那么它必须以这个NLPID值向外发布路由信息。

IS-IS的相关知识请参见“三层技术-IP路由配置指导”中的“IS-IS”。


1.2 配置IPv6 IS-IS的基本特性

在IPv6网络环境中，可以通过配置IPv6 IS-IS路由协议来实现IPv6网络的互连。

1.2.1 配置准备

在配置之前，需完成以下任务：

l 全局使能IPv6能力

l 配置接口的网络层地址，使各相邻节点网络层可达

l 启动IS-IS

1.2.2 配置IS-IS的IPv6基本特性

表1-1 配置IS-IS的IPv6基本特性

操作 | 命令 | 说明
进入系统视图 | system-view | -
启动IS-IS路由进程，进入IS-IS视图 | isis [ process-id ] | 必选 缺省情况下，系统没有运行IS-IS
配置网络实体名称（NET） | network-entity net | 必选 缺省情况下，没有配置NET
使能IS-IS进程的IPv6能力 | ipv6 enable | 必选 缺省情况下，没有使能IS-IS路由进程的IPv6能力
退回到系统视图 | quit | -
进入接口视图 | interface interface-type interface-number | -
使能接口IS-IS路由进程的IPv6能力并指定要关联的IS-IS进程号 | isis ipv6 enable [ process-id ] | 必选 缺省情况下，接口上没有使能IS-IS路由进程的IPv6能力


1.3 配置IPv6 IS-IS的路由信息控制

1.3.1 配置准备

在进行IPv6 IS-IS的路由特性配置之前，需完成IPv6 IS-IS基本配置。

1.3.2 配置IPv6 IS-IS的路由信息控制

表1-2 配置IPv6 IS-IS的路由信息控制

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入IS-IS视图 | isis [ process-id ] | -
配置IPv6 IS-IS路由优先级 | ipv6 preference { route-policy route-policy-name | preference } * | 可选 缺省情况下，IPv6 IS-IS路由优先级为15
配置IPv6 IS-IS聚合路由 | ipv6 summary ipv6-prefix prefix-length [ avoid-feedback | generate_null0_route | [ level-1 | level-1-2 | level-2 ] | tag tag ] * | 可选 缺省情况下，没有配置IPv6聚合路由
配置生成IPv6 IS-IS缺省路由 | ipv6 default-route-advertise [ [ level-1 | level-1-2 | level-2 ] | route-policy route-policy-name ] * | 可选 缺省情况下，不生成IPv6 IS-IS缺省路由
配置IPv6 IS-IS对接收的路由进行过滤 | ipv6 filter-policy { acl6-number | ipv6-prefix ipv6-prefix-name | route-policy route-policy-name } import | 可选 缺省情况下，IPv6 IS-IS不对接收的路由信息进行过滤
配置IPv6 IS-IS引入其他协议的路由信息 | ipv6 import-route protocol [ process-id ] [ allow-ibgp ] [ cost cost | [ level-1 | level-1-2 | level-2 ] | route-policy route-policy-name | tag tag ] * | 可选 缺省情况下，IPv6 IS-IS不引入其他协议的路由信息
配置引入Level1/Level2的IPv6路由最大条数 | ipv6 import-route limit number | 可选 本命令的缺省值与设备的型号有关，请以设备的实际情况为准
配置IPv6 IS-IS对引入的路由进行过滤 | ipv6 filter-policy { acl6-number | ipv6-prefix ipv6-prefix-name | route-policy route-policy-name } export [ protocol [ process-id ] ] | 可选 缺省情况下，IPv6 IS-IS不对引入的路由进行过滤
使能IPv6 IS-IS路由渗透功能 | ipv6 import-route isisv6 level-2 into level-1 [ filter-policy { acl6-number | ipv6-prefix ipv6-prefix-name | route-policy route-policy-name } | tag tag ] * | 可选 缺省情况下，禁止IPv6 IS-IS路由渗透功能
配置在负载分担方式下IPv6 IS-IS等价路由的最大数量 | ipv6 maximum load-balancing number | 可选 缺省值为8

l ipv6 filter-policy export 命令一般和 ipv6 import-route 命令结合使用，如果没有指定 protocol 参数，将对当前路由器从所有协议引入的路由进行过滤；如果指定了 protocol 参数，则只对当前路由器从特定协议引入的路由进行过滤。

l ACL的相关知识请参见“ACL和QoS配置指导”中的“ACL”。

l 路由策略、IPv6地址前缀列表的相关知识请参见“三层技术-IP路由配置指导”中的“路由策略”。


1.4 配置IPv6 IS-IS与BFD联动

BFD（Bidirectional Forwarding Detection，双向转发检测）能够为IPv6 IS-IS邻居之间的链路提供快速检测功能。当邻居之间的链路出现故障时，加快IPv6 IS-IS协议的收敛速度。

表1-3 配置IPv6 IS-IS与BFD联动

操作 | 命令 | 说明
进入系统视图 | system-view | -
启动IS-IS路由进程，进入IS-IS视图 | isis [ process-id ] | -
配置网络实体名称（NET） | network-entity net | 必选 缺省情况下，没有配置NET
使能IS-IS进程的IPv6能力 | ipv6 enable | 必选 缺省情况下，没有使能IS-IS路由进程的IPv6能力
退回系统视图 | quit | -
进入接口视图 | interface interface-type interface-number | -
使能接口IS-IS路由进程的IPv6能力并指定要关联的IS-IS进程号 | isis ipv6 enable [ process-id ] | 必选 缺省情况下，接口上没有使能IS-IS路由进程的IPv6能力
在指定接口上使能IPv6 IS-IS BFD | isis ipv6 bfd enable | 必选 缺省情况下，运行IPv6 IS-IS的接口未使能BFD功能

关于BFD的介绍和基本功能配置，请参见“可靠性配置指导”中的“BFD”。


1.5 IPv6 IS-IS显示和维护

在完成上述配置后，在任意视图下执行 display 命令可以显示配置后IPv6 IS-IS的运行情况，用户可以通过查看显示信息验证配置的效果。

在用户视图下执行 reset 命令可以清除IPv6 IS-IS的数据库信息，或者复位特定邻居的数据信息。

表1-4 IPv6 IS-IS显示和维护

操作 | 命令
显示IS-IS的摘要信息 | display isis brief [ | { begin | exclude | include } regular-expression ]
显示IS-IS当前debug开关的状态 | display isis debug-switches process-id [ | { begin | exclude | include } regular-expression ]
显示使能了IS-IS的接口信息 | display isis interface [ statistics | [ interface-type interface-number ] [ verbose ] ] [ process-id | vpn-instance vpn-instance-name ] [ | { begin | exclude | include } regular-expression ]
显示IS-IS的链路状态数据库 | display isis lsdb [ [ l1 | l2 | level-1 | level-2 ] | [ [ lsp-id lsp-id | lsp-name lspname | local ] | verbose ] * ] * [ process-id | vpn-instance vpn-instance-name ] [ | { begin | exclude | include } regular-expression ]
显示IS-IS的mesh-group | display isis mesh-group [ process-id | vpn-instance vpn-instance-name ] [ | { begin | exclude | include } regular-expression ]
显示本地路由器名称到系统ID的映射关系表 | display isis name-table [ process-id | vpn-instance vpn-instance-name ] [ | { begin | exclude | include } regular-expression ]
显示IS-IS的邻居信息 | display isis peer [ statistics | verbose ] [ process-id | vpn-instance vpn-instance-name ] [ | { begin | exclude | include } regular-expression ]
显示IPv6 IS-IS路由信息 | display isis route ipv6 [ [ level-1 | level-2 ] | verbose ] * [ process-id ] [ | { begin | exclude | include } regular-expression ]
显示IS-IS的SPF计算日志记录 | display isis spf-log [ process-id | vpn-instance vpn-instance-name ] [ | { begin | exclude | include } regular-expression ]
显示IS-IS进程的统计信息 | display isis statistics [ level-1 | level-1-2 | level-2 ] [ process-id | vpn-instance vpn-instance-name ] [ | { begin | exclude | include } regular-expression ]
清除所有IS-IS的数据结构信息 | reset isis all [ process-id | vpn-instance vpn-instance-name ]
清除IS-IS特定邻居的数据信息 | reset isis peer system-id [ process-id | vpn vpn-instance-name ]


1.6 IPv6 IS-IS典型配置举例

1.6.1 IPv6 IS-IS基本配置

1. 组网需求

如下图所示，Switch A、Switch B、Switch C和Switch D属于同一自治系统，所有交换机已使能了IPv6能力，要求它们之间通过IPv6 IS-IS协议达到IPv6网络互连的目的。

其中Switch A和Switch B是Level-1交换机，Switch D是Level-2交换机，Switch C是Level-1-2交换机。Switch A、Switch B和Switch C属于区域10，而Switch D属于区域20。

2. 组网图

图1-1 IPv6 IS-IS基本配置组网图

3. 配置步骤

(1) 配置各接口的IPv6地址（略）

(2) 配置IPv6 IS-IS

# 配置Switch A。

<SwitchA> system-view

[SwitchA] ipv6

[SwitchA] isis 1

[SwitchA-isis-1] is-level level-1

[SwitchA-isis-1] network-entity 10.0000.0000.0001.00

[SwitchA-isis-1] ipv6 enable

[SwitchA-isis-1] quit

[SwitchA] interface vlan-interface 100

[SwitchA-Vlan-interface100] isis ipv6 enable 1

[SwitchA-Vlan-interface100] quit

# 配置Switch B。

<SwitchB> system-view

[SwitchB] ipv6

[SwitchB] isis 1

[SwitchB-isis-1] is-level level-1

[SwitchB-isis-1] network-entity 10.0000.0000.0002.00

[SwitchB-isis-1] ipv6 enable

[SwitchB-isis-1] quit

[SwitchB] interface vlan-interface 200

[SwitchB-Vlan-interface200] isis ipv6 enable 1

[SwitchB-Vlan-interface200] quit

# 配置Switch C。

<SwitchC> system-view

[SwitchC] ipv6

[SwitchC] isis 1

[SwitchC-isis-1] network-entity 10.0000.0000.0003.00

[SwitchC-isis-1] ipv6 enable

[SwitchC-isis-1] quit

[SwitchC] interface vlan-interface 100

[SwitchC-Vlan-interface100] isis ipv6 enable 1

[SwitchC-Vlan-interface100] quit

[SwitchC] interface vlan-interface 200

[SwitchC-Vlan-interface200] isis ipv6 enable 1

[SwitchC-Vlan-interface200] quit

[SwitchC] interface vlan-interface 300

[SwitchC-Vlan-interface300] isis ipv6 enable 1

[SwitchC-Vlan-interface300] quit

# 配置Switch D。

<SwitchD> system-view

[SwitchD] ipv6

[SwitchD] isis 1

[SwitchD-isis-1] is-level level-2

[SwitchD-isis-1] network-entity 20.0000.0000.0004.00

[SwitchD-isis-1] ipv6 enable

[SwitchD-isis-1] quit

[SwitchD] interface vlan-interface 300

[SwitchD-Vlan-interface300] isis ipv6 enable 1

[SwitchD-Vlan-interface300] quit

[SwitchD] interface vlan-interface 301

[SwitchD-Vlan-interface301] isis ipv6 enable 1

[SwitchD-Vlan-interface301] quit

(3) 检查配置结果

# 查看Switch A的IPv6 IS-IS路由表。

[SwitchA] display isis route ipv6

Route information for ISIS(1)

-----------------------------

ISIS(1) IPv6 Level-1 Forwarding Table

-------------------------------------

Destination: :: PrefixLen: 0

Flag : R/-/- Cost : 10

Next Hop : FE80::200:FF:FE0F:4 Interface: Vlan100

Destination: 2001:1:: PrefixLen: 64

Flag : D/L/- Cost : 10

Next Hop : Direct Interface: Vlan100

Destination: 2001:2:: PrefixLen: 64

Flag : R/-/- Cost : 20

Next Hop : FE80::200:FF:FE0F:4 Interface: Vlan100

Destination: 2001:3:: PrefixLen: 64

Flag : R/-/- Cost : 20

Next Hop : FE80::200:FF:FE0F:4 Interface: Vlan100

Flags: D-Direct, R-Added to RM, L-Advertised in LSPs, U-Up/Down Bit Set

# 查看Switch B的IPv6 IS-IS路由表。

[SwitchB] display isis route ipv6

Route information for ISIS(1)

-----------------------------

ISIS(1) IPv6 Level-1 Forwarding Table

-------------------------------------

Destination: :: PrefixLen: 0

Flag : R/-/- Cost : 10

Next Hop : FE80::200:FF:FE0F:4 Interface: Vlan200

Destination: 2001:1:: PrefixLen: 64

Flag : D/L/- Cost : 10

Next Hop : FE80::200:FF:FE0F:4 Interface: Vlan200

Destination: 2001:2:: PrefixLen: 64

Flag : R/-/- Cost : 20

Next Hop : Direct Interface: Vlan200

Destination: 2001:3:: PrefixLen: 64

Flag : R/-/- Cost : 20

Next Hop : FE80::200:FF:FE0F:4 Interface: Vlan200

Flags: D-Direct, R-Added to RM, L-Advertised in LSPs, U-Up/Down Bit Set

# 查看Switch C的IPv6 IS-IS路由表。

[SwitchC] display isis route ipv6

Route information for ISIS(1)

-----------------------------

ISIS(1) IPv6 Level-1 Forwarding Table

-------------------------------------

Destination: 2001:1:: PrefixLen: 64

Flag : D/L/- Cost : 10

Next Hop : Direct Interface: Vlan100

Destination: 2001:2:: PrefixLen: 64

Flag : D/L/- Cost : 10

Next Hop : Direct Interface: Vlan200

Destination: 2001:3:: PrefixLen: 64

Flag : D/L/- Cost : 10

Next Hop : Direct Interface: Vlan300

Flags: D-Direct, R-Added to RM, L-Advertised in LSPs, U-Up/Down Bit Set

ISIS(1) IPv6 Level-2 Forwarding Table

-------------------------------------

Destination: 2001:1:: PrefixLen: 64

Flag : D/L/- Cost : 10

Next Hop : Direct Interface: Vlan100

Destination: 2001:2:: PrefixLen: 64

Flag : D/L/- Cost : 10

Next Hop : Direct Interface: Vlan200

Destination: 2001:3:: PrefixLen: 64

Flag : D/L/- Cost : 10

Next Hop : Direct Interface: Vlan300

Destination: 2001:4::1 PrefixLen: 128

Flag : R/-/- Cost : 10

Next Hop : FE80::20F:E2FF:FE3E:FA3D Interface: Vlan300

Flags: D-Direct, R-Added to RM, L-Advertised in LSPs, U-Up/Down Bit Set

# 查看Switch D的IPv6 IS-IS路由表。

[SwitchD] display isis route ipv6

Route information for ISIS(1)

-----------------------------

ISIS(1) IPv6 Level-2 Forwarding Table

-------------------------------------

Destination: 2001:1:: PrefixLen: 64

Flag : R/-/- Cost : 20

Next Hop : FE80::200:FF:FE0F:4 Interface: Vlan300

Destination: 2001:2:: PrefixLen: 64

Flag : R/-/- Cost : 20

Next Hop : FE80::200:FF:FE0F:4 Interface: Vlan300

Destination: 2001:3:: PrefixLen: 64

Flag : D/L/- Cost : 10

Next Hop : Direct Interface: Vlan300

Destination: 2001:4::1 PrefixLen: 128

Flag : D/L/- Cost : 0

Next Hop : Direct Interface: Loop1

Flags: D-Direct, R-Added to RM, L-Advertised in LSPs, U-Up/Down Bit Set

1.6.2 配置IPv6 IS-IS与BFD联动

1. 组网需求

l Switch A、Switch B通过二层交换机互连，并且在双方接口上使能BFD应用，之间运行IPv6 IS-IS，网络层相互可达。

l 当Switch B和二层交换机之间的链路出现故障后，BFD能够快速检测并通告IPv6 IS-IS协议。

2. 组网图

图1-2 配置IPv6 IS-IS与BFD联动组网图

设备 | 接口 | IPv6地址 | 设备 | 接口 | IPv6地址
Switch A | Vlan-int10 | 2001::1/64 | Switch B | Vlan-int10 | 2001::2/64
 | Vlan-int11 | 2001:2::1/64 |  | Vlan-int13 | 2001:3::2/64
Switch C | Vlan-int11 | 2001:2::2/64 |  |  |
 | Vlan-int13 | 2001:3::1/64 |  |  |

3. 配置步骤

(1) 配置各接口的IPv6地址（略）

(2) 配置IPv6 IS-IS

# 配置Switch A。

<SwitchA> system-view

[SwitchA] ipv6

[SwitchA] isis 1

[SwitchA-isis-1] is-level level-1

[SwitchA-isis-1] network-entity 10.0000.0000.0001.00

[SwitchA-isis-1] ipv6 enable

[SwitchA-isis-1] quit

[SwitchA] interface vlan-interface 10

[SwitchA-Vlan-interface10] isis ipv6 enable 1

[SwitchA-Vlan-interface10] quit

[SwitchA] interface vlan-interface 11

[SwitchA-Vlan-interface11] isis ipv6 enable 1

[SwitchA-Vlan-interface11] quit

# 配置Switch B。

<SwitchB> system-view

[SwitchB] ipv6

[SwitchB] isis 1

[SwitchB-isis-1] is-level level-1

[SwitchB-isis-1] network-entity 10.0000.0000.0002.00

[SwitchB-isis-1] ipv6 enable

[SwitchB-isis-1] quit

[SwitchB] interface vlan-interface 10

[SwitchB-Vlan-interface10] isis ipv6 enable 1

[SwitchB-Vlan-interface10] quit

[SwitchB] interface vlan-interface 13

[SwitchB-Vlan-interface13] isis ipv6 enable 1

[SwitchB-Vlan-interface13] quit

# 配置Switch C。

<SwitchC> system-view

[SwitchC] ipv6

[SwitchC] isis 1

[SwitchC-isis-1] network-entity 10.0000.0000.0003.00

[SwitchC-isis-1] ipv6 enable

[SwitchC-isis-1] quit

[SwitchC] interface vlan-interface 11

[SwitchC-Vlan-interface11] isis ipv6 enable 1

[SwitchC-Vlan-interface11] quit

[SwitchC] interface vlan-interface 13

[SwitchC-Vlan-interface13] isis ipv6 enable 1

[SwitchC-Vlan-interface13] quit

(3) 配置BFD功能

# 在Switch A上使能IPv6 IS-IS BFD功能，并配置BFD参数。

[SwitchA] bfd session init-mode active

[SwitchA] interface vlan-interface 10

[SwitchA-Vlan-interface10] isis ipv6 bfd enable

[SwitchA-Vlan-interface10] bfd min-transmit-interval 500

[SwitchA-Vlan-interface10] bfd min-receive-interval 500

[SwitchA-Vlan-interface10] bfd detect-multiplier 7

[SwitchA-Vlan-interface10] return

# 在Switch B上使能IPv6 IS-IS BFD功能，并配置BFD参数。

[SwitchB] bfd session init-mode active

[SwitchB] interface vlan-interface 10

[SwitchB-Vlan-interface10] isis ipv6 bfd enable

[SwitchB-Vlan-interface10] bfd min-transmit-interval 500

[SwitchB-Vlan-interface10] bfd min-receive-interval 500

[SwitchB-Vlan-interface10] bfd detect-multiplier 6

(4) 检查配置结果

下面以Switch A为例，Switch B和Switch A类似，不再赘述。

# 显示Switch A的BFD信息。

<SwitchA> display bfd session

Total Session Num: 1 Init Mode: Active

IPv6 Session Working Under Ctrl Mode:

Local Discr: 1441 Remote Discr: 1450

Source IP: FE80::20F:FF:FE00:1202（Switch A接口Vlan-interface10的链路本地地址）

Destination IP: FE80::20F:FF:FE00:1200（Switch B接口Vlan-interface10的链路本地地址）

Session State: Up Interface: Vlan10

Hold Time: /

# 在Switch A上查看2001:4::0/64的路由信息，可以看出Switch A和Switch B是通过L2 Swtich进行通信的。

<SwitchA> display ipv6 routing-table 2001:4::0 64 verbose

Routing Table :

Summary Count : 2

Destination : 2001:4::0 PrefixLength : 64

NextHop : 2001::2 Preference : 15

IpPrecedence : QosLcId :

RelayNextHop : :: Tag : 0H

Neighbor : :: ProcessID : 0

Interface : Vlan-interface10 Protocol : ISISv6

State : Active Adv Cost : 20

Tunnel ID : 0x0 Label : NULL

Age : 4538sec

Destination : 2001:4::0 PrefixLength : 64

NextHop : 2001:2::2 Preference : 15

IpPrecedence : QosLcId :

RelayNextHop : :: Tag : 0H

Neighbor : :: ProcessID : 0

Interface : Vlan-interface11 Protocol : ISISv6

State : Invalid Adv Cost : 30

Tunnel ID : 0x0 Label : NULL

Age : 4515sec

# 打开Switch A的调试开关。

<SwitchA> debugging bfd scm

<SwitchA> debugging bfd event

<SwitchA> debugging isis event bfd

<SwitchA> terminal debugging

# Switch B和二层交换机之间的链路发生故障后，可以看到Switch A能够快速检测Switch B的变化。

#Aug 8 14:54:05:362 2009 SwitchA IFNET/4/INTERFACE UPDOWN:

Trap 1.3.6.1.6.3.1.1.5.3<linkDown>: Interface 983041 is Down, ifAdminStatus is

1, ifOperStatus is 2

#Aug 8 14:54:05:363 2009 SwitchA ISIS/4/ADJ_CHANGE:TrapID(1.3.6.1.2.1.138.0.17<

isisAdjacencyChange>), ISIS Level-2 Adjencency IN Circuit-983041 State Change.

#Aug 8 14:54:05:364 2009 SwitchA ISIS/4/ADJ_CHANGE:TrapID(1.3.6.1.2.1.138.0.17<

isisAdjacencyChange>), ISIS Level-1 Adjencency IN Circuit-983041 State Change.

%Aug 8 14:54:05:365 2009 SwitchA IFNET/4/LINK UPDOWN: vlan10: link status is DOWN

%Aug 8 14:54:05:366 2009 SwitchA IFNET/4/UPDOWN: Line protocol on the interface Vlan10 is DOWN

%Aug 8 14:54:05:367 2009 SwitchA ISIS/4/ADJLOG:ISIS-1-ADJCHANGE: Adjacency To 0000.0000.0002 (vlan10) DOWN, Level-2 Circuit Down.

%Aug 8 14:54:05:367 2009 SwitchA ISIS/4/ADJLOG:ISIS-1-ADJCHANGE: Adjacency To 0000.0000.0002 (vlan10) DOWN, Level-2 Adjacency clear.

%Aug 8 14:54:05:368 2009 SwitchA ISIS/4/ADJLOG:ISIS-1-ADJCHANGE: Adjacency To 0000.0000.0002 (vlan10) DOWN, Level-1 Circuit Down.

%Aug 8 14:54:05:369 2009 SwitchA ISIS/4/ADJLOG:ISIS-1-ADJCHANGE: Adjacency To 0000.0000.0002 (vlan10) DOWN, Level-1 Adjacency clear.

*Aug 8 14:54:05:369 2009 SwitchA ISIS/6/ISIS: ISIS-1-BFD: Recieve BFD session down . Type 0. DstIPAddr: FE80::20F:FF:FE00:1200 , SrcIPAddr: FE80::20F:FF:FE00:1202

*Aug 8 14:54:05:370 2009 SwitchA ISIS/6/ISIS: ISIS-1-BFD: Success to send msg. Msg type 1 delete session. IfPhyIndex: 5 , DstIPAddr: FE80::20F:FF:FE00:1200 , SrcIPAddr: FE80::20F:FF:FE00:1202. NeighborType:Level-1.

# 显示Switch A的BFD信息。

查看Switch A的BFD信息，Switch A已取消与Switch B的邻居关系，没有任何输出信息。

<SwitchA> display bfd session

# 在Switch A上查看2001:4::0/64的路由信息，可以看出Switch A和Switch B已经切换到Switch C进行通信。

<SwitchA> display ipv6 routing-table 2001:4::0 64 verbose

Routing Table :

Summary Count : 1

Destination : 2001:4::0 PrefixLength : 64

NextHop : 2001:2::2 Preference : 15

IpPrecedence : QosLcId :

RelayNextHop : :: Tag : 0H

Neighbor : :: ProcessID : 0

Interface : Vlan-interface11 Protocol : ISISv6

State : Invalid Adv Cost : 30

Tunnel ID : 0x0 Label : NULL

Age : 4610sec


1 IPv6 BGP配置

l 在以下路由协议的介绍中所指的路由器及路由器图标，代表了一般意义下的路由器以及运行了路由协议的以太网交换机。

l 本章只列出了IPv6 BGP专有的配置与操作，其他相关内容请参见“三层技术-IP路由配置指导”中的“BGP”。

l S3600V2-SI系列交换机不支持IPv6 BGP功能。

相关链接

  • 1.1 IPv6 BGP简介
  • 1.2 配置任务简介
  • 1.3 配置IPv6 BGP的基本功能
  • 1.4 控制路由信息的发布与接收
  • 1.5 配置IPv6 BGP的路由属性
  • 1.6 调整和优化IPv6 BGP网络
  • 1.7 组建大型IPv6 BGP网络
  • 1.8 配置IPv6 BGP与BFD联动
  • 1.9 IPv6 BGP显示和维护
  • 1.10 IPv6 BGP典型配置举例
  • 1.11 IPv6 BGP常见错误配置举例
父主题： 11-IPv6 BGP配置


1.1 IPv6 BGP简介

传统的BGP-4只能管理IPv4的路由信息，对于使用其它网络层协议（如IPv6等）的应用，在跨自治系统传播时就受到一定限制。

为了提供对多种网络层协议的支持，IETF对BGP-4进行了扩展，形成IPv6 BGP，目前的IPv6 BGP标准是RFC 2858（Multiprotocol Extensions for BGP-4，BGP-4多协议扩展）。

为了实现对IPv6协议的支持，IPv6 BGP需要将IPv6网络层协议的信息反映到NLRI（Network Layer Reachability Information，网络层可达性信息）及NEXT_HOP属性中。

IPv6 BGP中引入的两个NLRI属性分别是：

l MP_REACH_NLRI：Multiprotocol Reachable NLRI，多协议可达NLRI。用于发布可达路由及下一跳信息。

l MP_UNREACH_NLRI：Multiprotocol Unreachable NLRI，多协议不可达NLRI。用于撤销不可达路由。

IPv6 BGP中的NEXT_HOP属性用IPv6地址来表示，可以是IPv6全球单播地址或者链路本地地址。

IPv6 BGP是利用BGP的多协议扩展属性，来达到在IPv6网络中应用的目的，BGP协议原有的消息机制和路由机制并没有改变。


1.2 配置任务简介

表1-1 配置任务简介

配置任务 |  | 说明 | 详细配置
配置IPv6 BGP基本功能 | 配置IPv6对等体 | 必选 | 1.3.2
 | 配置IPv6 BGP发布本地IPv6路由 | 可选 | 1.3.3
 | 配置路由首选值 | 可选 | 1.3.4
 | 配置IPv6 BGP连接所使用的本地接口 | 可选 | 1.3.5
 | 配置EBGP连接的最大跳数 | 可选 | 1.3.6
 | 配置IPv6对等体/IPv6对等体组的描述信息 | 可选 | 1.3.7
 | 禁止与IPv6对等体/IPv6对等体组建立会话 | 可选 | 1.3.8
 | 记录指定IPv6对等体/IPv6对等体组的会话状态和事件信息 | 可选 | 1.3.9
控制路由信息的发布与接收 | 配置IPv6 BGP引入其他路由 | 可选 | 1.4.2
 | 配置IPv6 BGP路由聚合 | 可选 | 1.4.3
 | 配置向IPv6对等体/IPv6对等体组发送缺省路由 | 可选 | 1.4.4
 | 配置路由信息的发布策略 | 可选 | 1.4.5
 | 配置路由信息的接收策略 | 可选 | 1.4.6
 | 配置IPv6 BGP与IGP路由同步 | 可选 | 1.4.7
 | 配置路由衰减 | 可选 | 1.4.8
配置IPv6 BGP的路由属性 | 配置IPv6 BGP路由管理的优先级、缺省LOCAL_PREF及NEXT_HOP属性 | 可选 | 1.5.2
 | 配置MED属性 | 可选 | 1.5.3
 | 配置AS_PATH属性 | 可选 | 1.5.4
调整和优化IPv6 BGP网络 | 配置IPv6 BGP的时钟 | 可选 | 1.6.3
 | 配置IPv6 BGP软复位 | 可选 | 1.6.4
 | 配置BGP ORF能力 | 可选 | 1.6.5
 | 使能4字节AS号抑制功能 | 可选 | 1.6.6
 | 配置最大等价路由的条数 | 可选 | 1.6.7
 | 配置IPv6 BGP建立TCP连接时进行MD5认证 | 可选 | 1.6.8
 | 配置IPv6 BGP IPsec安全策略 | 可选 | 1.6.9
组建大型IPv6 BGP网络 | 配置IPv6 BGP对等体组 | 可选 | 1.7.2
 | 配置IPv6 BGP团体 | 可选 | 1.7.3
 | 配置IPv6 BGP路由反射器 | 可选 | 1.7.4
配置IPv6 BGP与BFD联动 |  | 可选 | 1.8


1.3 配置IPv6 BGP的基本功能

1.3.1 配置准备

在配置IPv6 BGP基本功能之前，需完成以下任务：

l 配置接口的网络层地址

l 使能IPv6功能

必须首先创建对等体组，才能配置对等体组的基本功能。关于对等体组的创建请参见“1.7.2 配置IPv6 BGP对等体组”。

1.3.2 配置IPv6对等体

表1-2 配置IPv6对等体

操作 | 命令 | 说明
进入系统视图 | system-view | -
启动BGP，进入BGP视图 | bgp as-number | 必选 缺省情况下，系统没有运行BGP
为路由器指定ID | router-id router-id | 可选 如果Loopback和其它接口没有配置IP地址，则该任务为必选
进入IPv6地址族视图 | ipv6-family | -
配置对等体 | peer ipv6-address as-number as-number | 必选

1.3.3 配置IPv6 BGP发布本地IPv6路由

表1-3 配置IPv6 BGP发布本地IPv6路由

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入BGP视图 | bgp as-number | 必选
进入IPv6地址族视图 | ipv6-family | -
将路由通告到IPv6 BGP路由表中 | network ipv6-address prefix-length [ short-cut | route-policy route-policy-name ] | 必选 缺省情况下，IPv6 BGP不通告任何路由

1.3.4 配置路由首选值

表1-4 配置路由首选值

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入BGP视图 | bgp as-number | 必选
进入IPv6地址族视图 | ipv6-family | -
为从IPv6对等体/IPv6对等体组接收的路由分配首选值 | peer { ipv6-group-name | ipv6-address } preferred-value value | 可选 缺省情况下，从IPv6对等体/IPv6对等体组接收的路由的首选值为0

当通过路由策略过滤IPv6路由时，路由的首选值将优先选取路由策略中设置的首选值。只有当路由策略里设置的首选值为0时，才选取 peer { ipv6-group-name | ipv6-address } preferred-value value命令里设置的值。通过路由策略配置BGP IPv6路由信息首选值的相关配置可参考命令 peer { group-name | ipv4-address | ipv6-address } route-policy route-policy-name { import | export }和“三层技术-IP路由命令参考/路由策略”中的 apply preferred-value preferred-value。

1.3.5 配置IPv6 BGP连接所使用的源接口

IPv6 BGP使用TCP作为其传输层协议，缺省情况下，IPv6 BGP使用到达对等体最佳路由的出接口作为与对等体/对等体组建立TCP连接的源接口。

当建立IPv6 BGP连接的路由器之间存在冗余链路时，如果路由器上的一个接口发生故障，链路状态变为down，建立TCP连接的源接口可能会随之发生变化，导致BGP需要重新建立TCP连接，造成网络振荡。为了避免该情况的发生，建议网络管理员使用Loopback接口建立IPv6 BGP连接，并将建立IPv6 BGP连接所使用的源接口配置为Loopback接口，来提高IPv6 BGP连接的可靠性和稳定性。

表1-5 配置IPv6 BGP连接所使用的源接口

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入BGP视图 | bgp as-number | 必选
进入IPv6地址族视图 | ipv6-family | -
指定与IPv6对等体/IPv6对等体组创建BGP会话时建立TCP连接使用的源接口 | peer { ipv6-group-name | ipv6-address } connect-interface interface-type interface-number | 必选 缺省情况下，IPv6 BGP使用到达IPv6对等体的最佳路由的出接口作为与IPv6对等体/IPv6对等体组创建BGP会话时建立TCP连接的源接口

当建立BGP连接时，如果没有明确指定建立TCP连接的源接口，可能会由于无法根据到达BGP对等体的最优路由确定TCP连接源接口从而导致无法建立TCP连接，因此建议用户在此情况下配置BGP对等体时明确配置BGP会话建立TCP连接的源接口为指定接口。

1.3.6 配置非直接相连的邻居建立EBGP连接

表1-6 配置非直接相连的邻居建立EBGP连接

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入BGP视图 | bgp as-number | 必选
进入IPv6地址族视图 | ipv6-family | -
配置允许同非直接相连网络上的邻居建立EBGP连接 | peer { ipv6-group-name | ipv6-address } ebgp-max-hop [ hop-count ] | 必选 缺省情况下，不允许同非直接相连网络上的邻居建立EBGP连接

通常情况下，EBGP对等体之间必须具有直连的物理链路，如果不满足这一要求，则必须使用 peer ebgp-max-hop 命令允许它们之间经过多跳建立TCP连接。但是，对于直连EBGP使用Loopback接口建立邻居关系，不需要 peer ebgp-max-hop 命令的配置。

1.3.7 配置IPv6对等体/IPv6对等体组的描述信息

表1-7 配置IPv6对等体/IPv6对等体组的描述信息

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入BGP视图 | bgp as-number | 必选
进入IPv6地址族视图 | ipv6-family | -
配置IPv6对等体/IPv6对等体组的描述信息 | peer { ipv6-group-name | ipv6-address } description description-text | 可选 缺省情况下，IPv6对等体/IPv6对等体组无描述信息

如果配置对等体组的描述信息，需要先创建对等体组。

1.3.8 禁止与IPv6对等体/IPv6对等体组建立会话

表1-8 禁止与IPv6对等体/IPv6对等体组建立会话

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入BGP视图 | bgp as-number | 必选
进入IPv6地址族视图 | ipv6-family | -
禁止与IPv6对等体/IPv6对等体组建立会话 | peer { ipv6-group-name | ipv6-address } ignore | 必选 缺省情况下，允许与IPv6对等体/IPv6对等体组建立会话

1.3.9 记录指定IPv6对等体/IPv6对等体组的会话状态和事件信息

表1-9 记录指定IPv6对等体/IPv6对等体组的会话状态和事件信息

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入BGP视图 | bgp as-number | 必选
全局使能BGP日志记录功能 | log-peer-change | 可选 缺省情况下，使能BGP日志记录功能
进入IPv6地址族视图 | ipv6-family | -
记录指定IPv6对等体/IPv6对等体组的会话状态和事件信息 | peer { ipv6-group-name | ipv6-address } log-change | 可选 缺省情况下，记录IPv6对等体/IPv6对等体组的会话状态和事件信息

有关 log-peer-change 命令的详细信息请参见“三层技术-IP路由命令参考”中的“BGP”。


1.4 控制路由信息的发布与接收

控制IPv6 BGP的路由信息的发布和接收，包括对路由信息进行过滤，应用路由策略，路由衰减。

1.4.1 配置准备

在控制路由信息的发布与接收之前，需完成以下任务：

l 使能IPv6功能

l 配置IPv6 BGP基本功能

1.4.2 配置IPv6 BGP引入其他路由

表1-10 配置IPv6 BGP引入和过滤外部路由

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入BGP视图 | bgp as-number | 必选
进入IPv6地址族视图 | ipv6-family | -
允许将缺省路由引入到IPv6 BGP路由表中 | default-route imported | 可选 缺省情况下，IPv6 BGP不允许将缺省路由引入到IPv6 BGP路由表中
配置引入其它协议路由信息并通告 | import-route protocol [ process-id [ med med-value | route-policy route-policy-name ] * ] | 必选 缺省情况下，IPv6 BGP不引入且不通告其它协议的路由

如果没有配置 default-route imported 命令，则使用 import-route 命令引入IGP路由时，不能引入IGP的缺省路由。

1.4.3 配置IPv6 BGP路由聚合

在中型或大型BGP网络中，在向对等体发布IPv6路由信息时，可以配置路由聚合，减小对等体路由表中的路由数量。BGP仅支持IPv6路由的手动聚合。

表1-11 配置IPv6路由聚合

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入BGP视图 | bgp as-number | -
进入IPv6地址族视图 | ipv6-family | -
配置手动路由聚合 | aggregate ipv6-address prefix-length [ as-set | attribute-policy route-policy-name | detail-suppressed | origin-policy route-policy-name | suppress-policy route-policy-name ] * | 必选 缺省情况下，不进行路由聚合

1.4.4 配置向IPv6对等体/IPv6对等体组发送缺省路由

表1-12 配置向IPv6对等体/IPv6对等体组发送缺省路由

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入BGP视图 | bgp as-number | 必选
进入IPv6地址族视图 | ipv6-family | -
配置向IPv6对等体/IPv6对等体组发送缺省路由 | peer { ipv6-group-name | ipv6-address } default-route-advertise [ route-policy route-policy-name ] | 必选 缺省情况下，不向IPv6对等体/IPv6对等体组发布缺省路由

执行 peer default-route-advertise 命令后，不论本地路由表中是否存在缺省路由，都将向指定IPv6对等体/IPv6对等体组发布一条下一跳地址为本地地址的缺省路由。

1.4.5 配置路由信息的发布策略

表1-13 配置路由信息的发布策略

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入BGP视图 | bgp as-number | 必选
进入IPv6地址族视图 | ipv6-family | -
对发布的路由进行过滤 | filter-policy { acl6-number | ipv6-prefix ipv6-prefix-name } export [ protocol process-id ] | 必选 缺省情况下，没有对发布的路由信息进行过滤
配置出方向路由策略 | peer { ipv6-group-name | ipv6-address } route-policy route-policy-name export | 必选 缺省情况下，没有指定IPv6对等体/IPv6对等体组的路由策略
配置基于IPv6 ACL的路由过滤策略 | peer { ipv6-group-name | ipv6-address } filter-policy acl6-number export | 必选 缺省情况下，没有为IPv6对等体/IPv6对等体组配置基于IPv6 ACL的过滤策略
配置基于AS路径过滤列表的IPv6 BGP路由过滤策略 | peer { ipv6-group-name | ipv6-address } as-path-acl as-path-acl-number export | 必选 缺省情况下，没有为IPv6对等体/IPv6对等体组配置基于AS路径过滤列表的IPv6 BGP路由过滤策略
配置基于IPv6地址前缀列表的路由过滤策略 | peer { ipv6-group-name | ipv6-address } ipv6-prefix ipv6-prefix-name export | 必选 缺省情况下，没有指定IPv6对等体/IPv6对等体组基于IPv6前缀列表的过滤策略

IPv6 BGP对引入的路由信息进行过滤后，会将符合条件的路由信息发布给IPv6 BGP对等体（Export）。指定 protocol 参数可以只对特定路由协议的信息进行过滤，如果没有指定此参数，则对所有要发布的IPv6 BGP路由信息进行过滤，包括引入的路由和使用 network 命令发布的路由。

1.4.6 配置路由信息的接收策略

表1-14 配置路由信息的接收策略

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入BGP视图 | bgp as-number | 必选
进入IPv6地址族视图 | ipv6-family | -
对接收的路由信息进行过滤 | filter-policy { acl6-number | ipv6-prefix ipv6-prefix-name } import | 必选 缺省情况下，不对接收的路由信息进行过滤
对接收的路由信息应用路由策略 | peer { ipv6-group-name | ipv6-address } route-policy route-policy-name import | 必选 缺省情况下，没有指定IPv6对等体/IPv6对等体组的路由策略
配置基于IPv6 ACL的路由过滤策略 | peer { ipv6-group-name | ipv6-address } filter-policy acl6-number import | 必选 缺省情况下，没有为IPv6对等体/IPv6对等体组设置基于IPv6 ACL的路由过滤策略
配置基于AS路径过滤列表的IPv6 BGP路由过滤策略 | peer { ipv6-group-name | ipv6-address } as-path-acl as-path-acl-number import | 必选 缺省情况下，没有为IPv6对等体/IPv6对等体组设置基于AS路径过滤列表的IPv6 BGP路由过滤策略
配置基于IPv6地址前缀列表的路由过滤策略 | peer { ipv6-group-name | ipv6-address } ipv6-prefix ipv6-prefix-name import | 必选 缺省情况下，没有为IPv6对等体/IPv6对等体组设置基于IPv6前缀列表的路由过滤策略
配置允许从IPv6对等体/IPv6对等体组接收的最大IPv6地址前缀数 | peer { ipv6-group-name | ipv6-address } route-limit limit [ percentage ] | 可选 缺省情况下，允许从IPv6对等体/IPv6对等体组接收的IPv6地址最大地址前缀数无限制

l 对IPv6 BGP接收的路由进行过滤，只有满足某些条件的路由才能被IPv6 BGP接收，并加到路由表中。

l 对等体组的成员可以与所在的组使用不同的入方向路由策略，即接收路由时，各对等体可以选择自己的策略。

1.4.7 配置IPv6 BGP与IGP路由同步

IPv6 BGP路由器收到一条IBGP路由，缺省只检查该路由的下一跳是否可达。如果可达，IPv6 BGP路由器就将这条IBGP路由发布给EBGP对等体。如果配置了同步特性，则需要同时满足以下条件，IPv6 BGP路由器才会将该IBGP路由发布给EBGP对等体：

l 该路由的下一跳可达；

l 在IGP路由表中存在一条active的路由，与该IBGP路由的目的网段完全相同。（IGP路由是否为active状态可以通过 display ipv6 routing-table protocol命令来查看）

表1-15 配置IPv6 BGP与IGP路由同步

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入BGP视图 | bgp as-number | 必选
进入IPv6地址族视图 | ipv6-family | -
配置IPv6 BGP与IGP路由同步 | synchronization | 必选 缺省情况下，IPv6 BGP和IGP路由不同步

1.4.8 配置路由衰减

表1-16 配置路由衰减

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入BGP视图 | bgp as-number | 必选
进入IPv6地址族视图 | ipv6-family | -
配置IPv6 BGP路由衰减 | dampening [ half-life-reachable half-life-unreachable reuse suppress ceiling | route-policy route-policy-name ]* | 可选 缺省情况下，没有配置路由衰减


1.5 配置IPv6 BGP的路由属性

本节主要介绍使用各类路由属性来改变IPv6 BGP的选路策略。包括如下属性：

l IPv6 BGP协议的优先级

l 缺省LOCAL_PREF属性值

l MED属性

l NEXT_HOP属性

l AS_PATH属性

1.5.1 配置准备

在配置IPv6 BGP的路由属性之前，需完成以下任务：

l 使能IPv6功能

l 配置IPv6 BGP基本功能

1.5.2 配置IPv6 BGP路由管理的优先级、缺省LOCAL_PREF及NEXT_HOP属性

表1-17 配置IPv6 BGP协议的优先级、缺省LOCAL_PREF及NEXT_HOP属性

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入BGP视图 | bgp as-number | 必选
进入IPv6地址族视图 | ipv6-family | -
设定IPv6 BGP路由管理的优先级 | preference { external-preference internal-preference local-preference | route-policy route-policy-name } | 可选 缺省情况下，EBGP路由的管理优先级为255，IBGP路由的管理优先级为255，本地产生的IPv6 BGP路由的管理优先级为130
配置本地优先级的缺省值 | default local-preference value | 可选 缺省情况下，本地优先级的缺省值为100
配置发布路由时将自身地址作为下一跳 | peer { ipv6-group-name | ipv6-address } next-hop-local | 可选 缺省情况下，向EBGP IPv6对等体/IPv6对等体组发布路由时，将自身地址作为下一跳；向IBGP IPv6对等体/IPv6对等体发布路由时，下一跳不变

l 在某些组网环境中，为保证IBGP邻居能够找到正确的下一跳，可以配置在向IBGP IPv6对等体/IPv6对等体组发布路由时，改变下一跳地址为自身地址。如果配置了IPv6 BGP负载分担，则不论是否配置了 peer next-hop-local 命令，本地路由器向IBGP IPv6对等体/IPv6对等体组发布路由时都先将下一跳地址改变为自身地址。

l 在第三方下一跳（即两个BGP连接在同一网段的广播网）这种特殊的组网环境中，缺省情况下，向EBGP IPv6对等体/IPv6对等体组发布路由时，下一跳不变；只有配置了 peer next-hop-local 命令，才将自身地址作为下一跳。

1.5.3 配置MED属性

表1-18 配置MED属性

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入BGP视图 | bgp as-number | 必选
进入IPv6地址族视图 | ipv6-family | -
配置系统的缺省MED值 | default med med-value | 可选 缺省情况下，系统缺省的MED值为0
配置允许比较来自不同AS邻居的路由的MED属性值 | compare-different-as-med | 可选 缺省情况下，不比较来自不同AS邻居的路由的MED属性值
配置根据路由来自的AS进行分组对MED排序优选 | bestroute compare-med | 可选 缺省情况下，不根据路由来自的AS进行分组对MED排序优选
配置允许比较联盟对等体的路由按MED值进行优选 | bestroute med-confederation | 可选 缺省情况下，比较联盟对等体的路由时不考虑MED值

1.5.4 配置AS_PATH属性

表1-19 配置AS_PATH属性

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入BGP视图 | bgp as-number | 必选
进入IPv6地址族视图 | ipv6-family | -
配置允许本地AS号在所接收的路由的AS_PATH属性中出现，并可同时配置允许重复的次数 | peer { ipv6-group-name | ipv6-address } allow-as-loop [ number ] | 可选 缺省情况下，不允许本地AS号重复
为IPv6对等体/IPv6对等体组配置一个虚拟的本地自治系统号 | peer { ipv6-group-name | ipv6-address } fake-as as-number | 可选 缺省情况下，没有为IPv6对等体/IPv6对等体组配置虚拟的本地自治系统号
禁止路由器将AS_PATH当作选路算法中的一个因素 | bestroute as-path-neglect | 可选 缺省情况下，路由器可以将AS_PATH当作选路算法中的一个因素
配置发送IPv6 BGP更新报文时不携带私有AS编号 | peer { ipv6-group-name | ipv6-address } public-as-only | 可选 缺省情况下，发送IPv6 BGP更新报文时携带私有自治系统号
配置用本地AS号替换AS_PATH属性中指定IPv6对等体/IPv6对等体组的AS号 | peer { ipv6-group-name | ipv6-address } substitute-as | 可选 缺省情况下，没有用本地AS号替换AS_PATH属性中指定IPv6对等体/IPv6对等体组的AS号


1.6 调整和优化IPv6 BGP网络

本节主要介绍配置IPv6 BGP时钟、软复位IPv6 BGP连接和配置最大等价路由的条数。

(1) IPv6 BGP时钟

当对等体间建立了IPv6 BGP连接后，它们定时向对端发送Keepalive消息，以防止路由器认为IPv6 BGP连接已中断。若路由器在设定的连接保持时间（Holdtime）内未收到对端的Keepalive消息或任何其它类型的报文，则认为此IPv6 BGP连接已中断，从而退出此IPv6 BGP连接。

路由器在与对等体建立IPv6 BGP连接时，将比较双方保持时间，以数值较小者做为协商后的保持时间。如果协商结果为0，则不发送Keepalive消息，且不检测Holdtime是否超时。

(2) 软复位IPv6 BGP连接

IPv6 BGP的选路策略改变后，为了使新的策略生效，必须复位IPv6 BGP连接，但这样会造成短暂的IPv6 BGP连接中断。在目前的实现中，IPv6 BGP支持Route-refresh功能。当策略改变后，系统可以在不中断IPv6 BGP连接的情况下，自动对IPv6 BGP路由表进行动态刷新。

在所有IPv6 BGP路由器使能Route-refresh功能的情况下，如果IPv6 BGP的路由策略发生了变化，本地路由器会向对等体发布Route-refresh消息，收到此消息的对等体会将其路由信息重新发给本地IPv6 BGP路由器。这样，在不中断IPv6 BGP连接的情况下，就可以对IPv6 BGP路由表进行动态更新，并应用新的策略。

如果网络中存在有不支持Route-Refresh的路由器，则需要配置 peer keep-all-routes 命令，将其所有路由更新保存在本地；当路由策略发生变化时，系统将对IPv6 BGP路由表进行动态更新，并应用新的策略。

1.6.2 配置准备

在调整IPv6 BGP的时钟之前，需完成以下任务：

l 使能IPv6能力

l 配置IPv6 BGP基本功能

1.6.3 配置IPv6 BGP的时钟

表1-20 配置IPv6 BGP的时钟

步骤 |  | 操作 | 命令
进入系统视图 |  | system-view | -
进入BGP视图 |  | bgp as-number | 必选
进入IPv6地址族视图 |  | ipv6-family | -
配置IPv6 BGP定时器 | 配置IPv6 BGP的存活时间间隔与保持时间 | timer keepalive keepalive hold holdtime | 可选 缺省情况下，存活时间间隔为60秒，保持时间为180秒
 | 配置指定IPv6对等体/IPv6对等体组的存活和保持时间 | peer { ipv6-group-name | ipv6-address } timer keepalive keepalive hold holdtime
配置IPv6对等体/IPv6对等体组的发送同一路由更新报文的时间间隔 |  | peer { ipv6-group-name | ipv6-address } route-update-interval interval | 可选 缺省情况下，向IBGP对等体发送同一路由更新的时间间隔为15秒，向EBGP对等体发送同一路由更新的时间间隔为30秒

l 使用 timer 命令配置的定时器比使用 peer timer 命令配置的定时器优先级要低。

l 设置的保持时间应该至少为存活时间间隔的三倍。

1.6.4 配置IPv6 BGP软复位

1. 使能Route-refresh功能

表1-21 使能Route-refresh功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入BGP视图 | bgp as-number | 必选
进入IPv6地址族视图 | ipv6-family | -
使能IPv6 BGP路由刷新功能 | peer { ipv6-group-name | ipv6-address } capability-advertise route-refresh | 可选 缺省情况下，使能IPv6 BGP路由刷新功能

2. 手工软复位IPv6 BGP

表1-22 手工软复位IPv6 BGP

步骤 | 操作 | 命令
进入系统视图 | system-view | -
进入BGP视图 | bgp as-number | 必选
进入IPv6地址族视图 | ipv6-family | -
保存所有来自IPv6对等体/IPv6对等体组的原始路由信息，即使这些路由没有通过已配置的入口策略 | peer { ipv6-group-name | ipv6-address } keep-all-routes | 可选 缺省情况下，不保存IPv6对等体/IPv6对等体组的原始路由信息
返回用户视图 | return | -
手工对IPv6 BGP连接进行软复位 | refresh bgp ipv6 { all | ip v6-address | group ipv6-group-name | external | internal } { export | import } | 必选

配置命令 peer keep-all-routes 后，不论是否使用了过滤策略，都将保存指定对等体发来的所有路由更新。当软复位IPv6 BGP连接时，这些信息可以用来重新生成IPv6 BGP路由。

1.6.5 使能IPv6 BGP ORF能力功能

BGP ORF是将本地入口策略通过Route-refresh报文推给邻居，当邻居需要向BGP对等体发送Update更新报文时，通过本地的路由策略后最后还需要进行ORF策略的过滤，只有通过ORF策略的路由信息才会发给BGP对等体，以达到减少BGP邻居间Update更新报文的交互，节省网络资源的目的。

使能BGP ORF能力后，本地和BGP对等体会通过Open报文协商ORF能力（即收发的报文里是否允许携带ORF信息，如果允许携带，是否可以携带非标准的ORF信息），当协商完毕并成功建立邻居关系后，可以通过特殊的Route-refresh报文交互ORF信息。

ORF能力协商成功需要两端的配置来保证，关于两端参数的选择请参见 表1-24 。

表1-23 配置BGP ORF能力

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入BGP视图 | bgp as-number | 必选
进入IPv6地址族视图 | ipv6-family | -
使能BGP路由刷新功能 | peer { group-name | ipv6-address } capability-advertise route-refresh | 必选 缺省情况下，BGP路由刷新功能处于使能状态
使能BGP ORF非标准功能 | peer { group-name | ipv6-address } capability-advertise orf non-standard | 可选 缺省情况下，BGP ORF能力支持RFC5291,RFC5292的标准能力
使能BGP ORF地址前缀能力协商功能 | peer { group-name | ip-address | ipv6-address } capability-advertise orf ip-prefix { both | receive | send } | 必选 缺省情况下，BGP 不支持ORF 地址前缀的能力协商

表1-24 both、send、receive参数选择以及配置效果描述表

本地选择参数 | 对端选择参数 | 协商成功后
send | receive | 本端的ORF发送能力，对端的ORF接收能力
 | both
receive | send | 本端的ORF接收能力，对端的ORF发送能力
 | both
both | both | 双向的ORF发送和接收能力

1.6.6 使能4字节AS号抑制功能

通常情况下，设备在与对端设备建立BGP对等体连接关系时会发送BGP Open消息，在消息中的Optional parameters字段携带信息：说明AS号取值占用4字节（即取值范围为1～4294967295）。此时，如果对端设备不支持AS号取值为4字节（比如只支持2字节），则连接关系无法建立。

为了解决上述问题，您可以使能4字节AS号抑制功能：当对端设备不支持AS号取值为4字节时，设备发出的BGP Open消息仍然可以被对端设备正常识别，从而BGP对等体连接关系可以成功建立。

表1-25 使能4字节AS号抑制功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入BGP视图 | bgp as-number | -
进入IPv6地址族视图 | ipv6-family | -
使能4字节AS号抑制功能 | peer { group-name | ip-address } capability-advertise suppress-4-byte-as | 必选 缺省情况下，设备没有使能4字节AS号抑制功能

如果对端设备支持4字节AS号能力时，请不要使能该功能，否则会导致对等体无法建立。

1.6.7 配置最大等价路由的条数

表1-26 配置最大等价路由的条数

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入BGP视图 | bgp as-number | 必选
进入IPv6地址族视图 | ipv6-family | -
配置进行IPv6 BGP负载分担的路由条数 | balance number | 必选 缺省情况下，不进行负载分担

1.6.8 配置IPv6 BGP建立TCP连接时进行MD5认证

IPv6 BGP使用TCP作为传输层协议，可靠性有一定保证。为了提高IPv6 BGP的安全性，可以配置IPv6 BGP在建立TCP连接时进行MD5认证，认证通过后才能建立TCP连接。如果认证失败，则不能建立TCP连接。

表1-27 配置IPv6 BGP建立TCP连接时进行MD5认证

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入BGP视图 | bgp as-number | 必选
进入IPv6地址族视图 | ipv6-family | -
配置IPv6 BGP建立TCP连接时进行MD5认证 | peer { ipv6-group-name | ipv6-address } password { cipher | simple } password | 可选 缺省情况下，IPv6 BGP建立TCP连接时不进行MD5认证

l IPv6 BGP的MD5认证并不能对BGP报文进行认证。

l 如果启用MD5认证，参与认证的双方必须配置完全一致的认证方式和密码，否则将因为无法通过认证而不能建立TCP连接。

1.6.9 配置IPv6 BGP IPsec安全策略

从安全性角度来考虑，为了避免路由信息外泄或者对路由器进行恶意攻击，IPv6 BGP提供基于IPsec的报文验证功能。

路由器在发送的IPv6 BGP报文中会携带配置好的IPsec安全策略的SPI（Security Parameter Index，安全参数索引）值，接收报文时通过SPI值进行IPsec安全策略匹配：只有策略匹配的报文才能接收；否则将不会接收报文，不能正常建立邻居和学习路由。

1. 配置准备

配置IPv6 BGP IPsec安全策略之前，需要满足下面配置：

l 安全提议已经创建；

l IPsec安全策略已经创建。

关于安全提议和IPsec安全策略的详细配置过程，请参考“安全配置指导”中的“IPsec”。

2. 配置IPv6 BGP IPsec安全策略

表1-28 配置IPv6 BGP IPsec安全策略

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入BGP视图 | bgp as-number | -
进入IPv6地址族视图 | ipv6-family | -
配置IPv6 BGP对等体/对等体组应用IPsec安全策略 | peer { group-name | ip-address } ipsec-policy policy-name | 必选 缺省情况下，IPv6 BGP对等体/对等体组没有应用IPsec安全策略

IPv6 BGP IPsec安全策略只支持手工配置方式，具体配置请参见“安全配置指导”中的“IPsec”。


1.7 组建大型IPv6 BGP网络

为方便管理，减少重复配置操作，管理员将一些享有相同更新策略的IPv6 BGP对等体划分到一个逻辑组织，这些组织就称为对等体组。只须对一个对等体组配置策略，该策略对组内所有成员都有效。

当对等体组的配置变化时，每个组员的配置也相应变化。对某些属性可以指定组员的IPv6地址进行配置，从而使指定组员在这些属性上不受对等体组配置的影响。

通常将同一自治系统的对等体配置为一个对等体组，当然，也可以将其它自治系统的对等体加入到该组。所有IBGP对等体可配置为另一个对等体组，也可以根据业务逻辑创建对等体组。

对等体组可以使一组对等体共享相同的策略，而利用团体可以使多个AS中的一组IPv6 BGP路由器共享相同的策略。团体是一个路由属性，在IPv6 BGP对等体之间传播，它并不受到AS范围的限制。

为保证IBGP对等体之间的连通性，需要在IBGP对等体之间建立全连接关系。当IBGP对等体数目很多时，建立全连接网的开销很大。路由反射器和联盟是解决这个问题的两种方法。

IPv6 BGP联盟的配置方式与BGP相同，这里不再赘述。以下主要介绍：

l 配置IPv6 BGP对等体组

l 配置IPv6 BGP团体

l 配置IPv6 BGP路由反射器

1.7.1 配置准备

在配置IPv6 BGP对等体组之前，需完成以下任务：

l 相邻节点网络层互通

l 启动BGP，配置Router ID

1.7.2 配置IPv6 BGP对等体组

1. 创建IBGP对等体组

表1-29 创建IBGP对等体组

操作 | 命令 | 说明
进入系统视图 | system-view | -
启动BGP，进入BGP视图 | bgp as-number | 必选 缺省情况下，系统没有运行BGP
进入IPv6地址族视图 | ipv6-family | -
创建IBGP对等体组 | group ipv6-group-name [ internal ] | 必选
将对等体加入已存在的对等体组 | peer ipv6-address group ipv6-group-name [ as-number as-number ] | 必选 缺省情况下，对等体不属于任何对等体组

2. 创建纯EBGP对等体组

表1-30 创建纯EBGP对等体组

操作 | 命令 | 说明
进入系统视图 | system-view | -
启动BGP，进入BGP视图 | bgp as-number | 必选 缺省情况下，系统没有运行BGP
进入IPv6地址族视图 | ipv6-family | -
创建EBGP对等体组 | group ipv6-group-name external | 必选
配置对等体组的AS号 | peer ipv6-group-name as-number as-number | 必选 缺省情况下，对等体组无AS号
在已创建的对等体组中加入IPv6对等体 | peer ipv6-address group ipv6-group-name | 必选 缺省情况下，对等体不属于任何对等体组

l 在创建纯EBGP对等体时，需要指定对等体组的自治系统号。

l 如果对等体组中已经加入了对等体，那么不能够为该对等体组指定自治系统号。

3. 创建混合EBGP对等体组

表1-31 创建混合EBGP对等体组

操作 | 命令 | 说明
进入系统视图 | system-view | -
启动BGP，进入BGP视图 | bgp as-number | 必选 缺省情况下，系统没有运行BGP
进入IPv6地址族视图 | ipv6-family | -
创建EBGP对等体组 | group ipv6-group-name external | 必选
设置IPv6对等体的AS号 | peer ipv6-address as-number as-number | 必选 缺省情况下，IPv6对等体无AS号
加入已创建的IPv6对等体 | peer ipv6-address group ipv6-group-name | 必选 缺省情况下，对等体不属于任何对等体组

在创建混合EBGP对等体组时，需要单独创建对等体，并可设置不同的自治系统号，但不能设置对等体组的自治系统号。

1.7.3 配置IPv6 BGP团体

1. 配置向IPv6对等体/IPv6对等体组发布团体属性

表1-32 配置向IPv6对等体/IPv6对等体组发布团体属性

操作 | 命令 | 说明
进入系统视图 | system-view | -
启动BGP，进入BGP视图 | bgp as-number | 必选 缺省情况下，系统没有运行BGP
进入IPv6地址族视图 | ipv6-family | -
配置将团体属性传给IPv6对等体/IPv6对等体组 | peer { ipv6-group-name | ipv6-address } advertise-community | 必选 缺省情况下，不将团体属性发布给任何IPv6对等体/IPv6对等体组
配置将扩展团体属性传给IPv6对等体/IPv6对等体组 | peer { ipv6-group-name | ipv6-address } advertise-ext-community | 必选 缺省情况下，不将扩展团体属性发布给任何IPv6对等体/IPv6对等体组

2. 对发布的路由信息应用路由策略

表1-33 对发布的路由信息应用路由策略

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入BGP视图 | bgp as-number | 必选
进入IPv6地址族视图 | ipv6-family | -
配置出方向路由策略 | peer { ipv6-group-name | ipv6-address } route-policy route-policy-name export | 必选 缺省情况下，不指定IPv6对等体/IPv6对等体组的路由策略

l 配置IPv6 BGP团体时，必须使用路由策略来定义具体的团体属性，然后在发布路由信息时应用此路由策略。

l 关于路由策略的配置，请参见“三层技术-IP路由配置指导”中的“路由策略”。

1.7.4 配置IPv6 BGP路由反射器

表1-34 配置IPv6 BGP路由反射器

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入BGP视图 | bgp as-number | 必选
进入IPv6地址族视图 | ipv6-family | -
配置将本机作为路由反射器，并将IPv6对等体/IPv6对等体组作为路由反射器的客户 | peer { ipv6-group-name | ipv6-address } reflect-client | 必选 缺省情况下，没有配置路由反射器及其客户
使能客户机之间的路由反射 | reflect between-clients | 可选 缺省情况下，允许客户到客户的路由反射
配置路由反射器的集群ID | reflector cluster-id cluster-id | 可选 缺省情况下，每个路由反射器是使用自己的Router ID作为集群ID

l 通常情况下，路由反射器的客户之间不要求是全连接的，路由缺省通过反射器从一个客户反射到其它客户；如果客户之间是全连接的，可以禁止客户间的反射，以便减少开销。

l 当一个集群里有多个路由反射器时，需要给所有位于同一个集群内的路由反射器配置相同的Cluster_ID，以避免路由循环。


1.8 配置IPv6 BGP与BFD联动

IPv6 BGP协议通过存活时间（Keepalive）定时器和保持时间（Holdtime）定时器来维护邻居关系。但这些定时器都是秒级的，而且根据协议规定，设置的保持时间应该至少为存活时间间隔的三倍。这样使得IPv6 BGP邻居关系的检测比较慢，对于报文收发速度快的接口会导致大量报文丢失。通过配置IPv6 BGP与BFD联动，使得BFD能够为IPv6 BGP邻居之间的链路提供更快速的检测。当邻居之间的链路出现故障时，能够加快IPv6 BGP协议的收敛速度。

表1-35 配置IPv6 BGP与BFD联动

操作 | 命令 | 说明
进入系统视图 | system-view | -
启动BGP，进入BGP视图 | bgp as-number | 必选 缺省情况下，系统不运行BGP
进入IPv6地址族视图 | ipv6-family | -
在指定邻居上使能BFD | peer ipv6-address bfd | 必选 缺省情况下，IPv6 BGP的所有对等体邻居上都没有使能BFD链路检测功能

l 配置BFD之前，需要使能BGP功能。

l 在BGP使能GR能力后，请慎用BFD。因为当链路故障时，系统可能还没来得及启用GR处理流程，BFD已经检测到链路故障了，从而导致GR失败。

l 有关BFD的介绍和基本功能配置，请参见“可靠性配置指导”中的“BFD”。


1.9 IPv6 BGP显示和维护

1.9.1 IPv6 BGP显示

在完成上述配置后，在任意视图下执行 display 命令可以显示配置后IPv6 BGP的运行情况，通过查看显示信息验证配置的效果。

表1-36 显示IPv6 BGP的运行状态

操作 | 命令
显示对等体组信息 | display bgp ipv6 group [ ipv6-group-name ] [ | { begin | exclude | include } regular-expression ]
显示IPv6 BGP发布的IPv6路由信息 | display bgp ipv6 network [ | { begin | exclude | include } regular-expression ]
显示AS路径信息 | display bgp ipv6 paths [ as-regular-expression | | { begin | exclude | include } regular-expression ]
显示IPv6对等体/IPv6对等体组信息 | display bgp ipv6 peer [ group-name log-info | ipv4-address verbose | ipv6-address { log-info | verbose } | verbose ] [ | { begin | exclude | include } regular-expression ]
显示收到的邻居ORF信息中的前缀信息 | display bgp ipv6 peer { ip-address | ipv6-address } received ipv6-prefix [ | { begin | exclude | include } regular-expression ]
显示IPv6 BGP路由信息 | display bgp ipv6 routing-table [ ipv6-address prefix-length ] [ | { begin | exclude | include } regular-expression ]
显示匹配指定AS路径过滤列表的路由 | display bgp ipv6 routing-table as-path-acl as-path-acl-number [ | { begin | exclude | include } regular-expression ]
显示指定IPv6 BGP团体的路由信息 | display bgp ipv6 routing-table community [ aa:nn<1-13> ] [ no-advertise | no-export | no-export-subconfed ]* [ whole-match ] [ | { begin | exclude | include } regular-expression ]
显示匹配指定IPv6 BGP团体列表的路由信息 | display bgp ipv6 routing-table community-list { { basic-community-list-number | comm-list-name } [ whole-match ] | adv-community-list-number }&<1-16> [ | { begin | exclude | include } regular-expression ]
显示IPv6 BGP衰减的路由 | display bgp ipv6 routing-table dampened [ | { begin | exclude | include } regular-expression ]
显示IPv6 BGP路由衰减参数 | display bgp ipv6 routing-table dampening parameter [ | { begin | exclude | include } regular-expression ]
显示来自不同自治系统的IPv6 BGP路由 | display bgp ipv6 routing-table different-origin-as [ | { begin | exclude | include } regular-expression ]
显示IPv6 BGP路由振荡统计信息 | display bgp ipv6 routing-table flap-info [ regular-expression as-regular-expression | [ as-path-acl as-path-acl-number | ipv6-address prefix-length [ longer-match ] ] [ | { begin | exclude | include } regular-expression ] ]
显示向指定的IPv4/IPv6 BGP对等体发送或者从指定的IPv4/IPv6 BGP对等体收到的路由信息 | display bgp ipv6 routing-table peer { ipv4-address | ipv6-address } { advertised-routes | received-routes } [ network-address prefix-length | statistic ] [ | { begin | exclude | include } regular-expression ]
显示匹配AS正则表达式的IPv6路由信息 | display bgp ipv6 routing-table regular-expression as-regular-expression
显示IPv6 BGP的路由统计信息 | display bgp ipv6 routing-table statistic [ | { begin | exclude | include } regular-expression ]

1.9.2 复位IPv6 BGP连接

当BGP路由策略或协议发生变化后，如果需要通过复位IPv6 BGP连接使新的配置生效，请在用户视图下进行下列配置。

表1-37 复位IPv6 BGP连接

操作 | 命令
手工软复位IPv6 BGP连接 | refresh bgp ipv6 { ipv4-address | ipv6-address | all | external | group ipv6-group-name | internal } { export | import }
复位所有IPv6 BGP连接 | reset bgp ipv6 { as-number | ipv4-address | ipv6-address [ flap-info ] | all | external | group group-name | internal }

1.9.3 清除IPv6 BGP信息

在用户视图下执行 reset 命令可清除IPv6 BGP路由的统计信息。

表1-38 清除IPv6 BGP信息

操作 | 命令
清除IPv6 BGP路由的衰减信息并释放被抑制的路由 | reset bgp ipv6 dampening [ ipv6-address prefix-length ]
清除IPv6 BGP路由的振荡统计信息 | reset bgp ipv6 flap-info [ ipv6-address/prefix-length | as-path-acl as-path-acl-number | regexp as-path-regexp ]


1.10 IPv6 BGP典型配置举例

IPv6 BGP的配置举例多数与BGP4的配置举例相似，本节不再一一列出。其他配置例请参见“三层技术-IP路由配置指导”中的“BGP”。

1.10.1 IPv6 BGP基本配置

1. 组网需求

如图1-1 所示，所有交换机运行IPv6 BGP协议，Switch A和Switch B之间建立EBGP连接，Switch B、Switch C和Switch D之间建立IBGP全连接。

2. 组网图

图1-1 IPv6 BGP基本配置组网图

3. 配置步骤

(1) 配置各VLAN接口的IPv6地址（略）

(2) 配置IBGP连接

# 配置Switch B。

<SwitchB> system-view

[SwitchB] ipv6

[SwitchB] bgp 65009

[SwitchB-bgp] router-id 2.2.2.2

[SwitchB-bgp] ipv6-family

[SwitchB-bgp-af-ipv6] peer 9:1::2 as-number 65009

[SwitchB-bgp-af-ipv6] peer 9:3::2 as-number 65009

[SwitchB-bgp-af-ipv6] quit

[SwitchB-bgp] quit

# 配置Switch C。

<SwitchC> system-view

[SwitchC] ipv6

[SwitchC] bgp 65009

[SwitchC-bgp] router-id 3.3.3.3

[SwitchC-bgp] ipv6-family

[SwitchC-bgp-af-ipv6] peer 9:3::1 as-number 65009

[SwitchC-bgp-af-ipv6] peer 9:2::2 as-number 65009

[SwitchC-bgp-af-ipv6] quit

[SwitchC-bgp] quit

# 配置Switch D。

<SwitchD> system-view

[SwitchD] ipv6

[SwitchD] bgp 65009

[SwitchD-bgp] router-id 4.4.4.4

[SwitchD-bgp] ipv6-family

[SwitchD-bgp-af-ipv6] peer 9:1::1 as-number 65009

[SwitchD-bgp-af-ipv6] peer 9:2::1 as-number 65009

[SwitchD-bgp-af-ipv6] quit

[SwitchD-bgp] quit

(3) 配置EBGP连接

# 配置Switch A。

<SwitchA> system-view

[SwitchA] ipv6

[SwitchA] bgp 65008

[SwitchA-bgp] router-id 1.1.1.1

[SwitchA-bgp] ipv6-family

[SwitchA-bgp-af-ipv6] peer 10::1 as-number 65009

[SwitchA-bgp-af-ipv6] quit

[SwitchA-bgp] quit

# 配置Switch B。

[SwitchB] bgp 65009

[SwitchB-bgp] ipv6-family

[SwitchB-bgp-af-ipv6] peer 10::2 as-number 65008

# 查看Switch B的对等体信息。

[SwitchB] display bgp ipv6 peer

BGP local router ID : 2.2.2.2

Local AS number : 65009

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

Peer AS MsgRcvd MsgSent OutQ PrefRcv Up/Down State

10::2 65008 3 3 0 0 00:01:16 Established

9:3::2 65009 2 3 0 0 00:00:40 Established

9:1::2 65009 2 4 0 0 00:00:19 Established

# 查看Switch C的对等体信息。

[SwitchC] display bgp ipv6 peer

BGP local router ID : 3.3.3.3

Local AS number : 65009

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

Peer AS MsgRcvd MsgSent OutQ PrefRcv Up/Down State

9:3::1 65009 4 4 0 0 00:02:18 Established

9:2::2 65009 4 5 0 0 00:01:52 Established

可以看出，Switch A和Switch B之间建立的EBGP连接，Switch B、Switch C和Switch D之间建立了IBGP连接。

1.10.2 配置IPv6 BGP路由反射

1. 组网需求

Switch B接收了一个经过EBGP的更新报文并将之传给Switch C。Switch C被配置为路由反射器，它有两个客户机：Switch B和Switch D。

SwitchB和Switch D间不需要建立IBGP连接，当Switch C接收了来自Switch B的路由更新时，它将此信息反射给Switch D；反之，接收到的Switch D的路由信息也会被反射给Switch B。

2. 组网图

图1-2 配置IPv6 BGP路由反射器组网图

3. 配置步骤

(1) 配置各VLAN接口的IPv6地址（略）

(2) 配置IPv6 BGP基本功能

# 配置Switch A。

<SwitchA> system-view

[SwitchA] ipv6

[SwitchA] bgp 100

[SwitchA-bgp] router-id 1.1.1.1

[SwitchA-bgp] ipv6-family

[SwitchA-bgp-af-ipv6] peer 100::2 as-number 200

[SwitchA-bgp-af-ipv6] network 1:: 64

# 配置Switch B。

<SwitchB> system-view

[SwitchB] ipv6

[SwitchB] bgp 200

[SwitchB-bgp] router-id 2.2.2.2

[SwitchB-bgp] ipv6-family

[SwitchB-bgp-af-ipv6] peer 100::1 as-number 100

[SwitchB-bgp-af-ipv6] peer 101::1 as-number 200

[SwitchB-bgp-af-ipv6] peer 101::1 next-hop-local

# 配置Switch C。

<SwitchC> system-view

[SwitchC] ipv6

[SwitchC] bgp 200

[SwitchC-bgp] router-id 3.3.3.3

[SwitchC-bgp] ipv6-family

[SwitchC-bgp-af-ipv6] peer 101::2 as-number 200

[SwitchC-bgp-af-ipv6] peer 102::2 as-number 200

# 配置Switch D。

<SwitchD> system-view

[SwitchD] ipv6

[SwitchD] bgp 200

[SwitchD-bgp] router-id 4.4.4.4

[SwitchD-bgp] ipv6-family

[SwitchD-bgp-af-ipv6] peer 102::1 as-number 200

(3) 配置路由反射器

# 配置Switch C作为路由反射器，Switch B和Switch D是它的两个客户机。

[SwitchC-bgp-af-ipv6] peer 101::2 reflect-client

[SwitchC-bgp-af-ipv6] peer 102::2 reflect-client

在Switch B上用命令 display bgp ipv6 routing-table，可以看到Switch B已知道网络1::/64的存在。

在Switch D上用命令 display bgp ipv6 routing-table，可以看到Switch D也知道网络1::/64的存在。

1.10.3 配置IPv6 BGP IPsec安全策略

1. 组网需求

l Switch A、Switch B和Switch C三台交换机互连，使能IPv6 BGP协议。Switch A和Switch B之间建立IBGP连接，Switch B和Switch C之间建立EBGP连接。

l 要求配置IPsec安全策略对Switch A和Switch B之间、Switch B和Switch C之间的IPv6 BGP报文进行验证和加密。

2. 组网图

图1-3 IPv6 BGP IPsec安全策略组网图

3. 配置步骤

(1) 配置各接口的IPv6地址（略）

(2) 配置IBGP连接

# 配置Switch A。

<SwitchA> system-view

[SwitchA] ipv6

[SwitchA] bgp 65008

[SwitchA-bgp] router-id 1.1.1.1

[SwitchA-bgp] ipv6-family

[SwitchA-bgp-af-ipv6] group ibgp internal

[SwitchA-bgp-af-ipv6] peer 1::2 group ibgp

[SwitchA-bgp-af-ipv6] quit

[SwitchA-bgp] quit

# 配置Switch B。

<SwitchB> system-view

[SwitchB] ipv6

[SwitchB] bgp 65008

[SwitchB-bgp] router-id 2.2.2.2

[SwitchB-bgp] ipv6-family

[SwitchB-bgp-af-ipv6] group ibgp internal

[SwitchB-bgp-af-ipv6] peer 1::1 group ibgp

[SwitchB-bgp-af-ipv6] quit

[SwitchB-bgp] quit

(3) 配置EBGP连接

# 配置Switch C。

<SwitchC> system-view

[SwitchC] ipv6

[SwitchC] bgp 65009

[SwitchC-bgp] router-id 3.3.3.3

[SwitchC-bgp] ipv6-family

[SwitchC-bgp-af-ipv6] group ebgp external

[SwitchC-bgp-af-ipv6] peer 3::1 as-number 65008

[SwitchC-bgp-af-ipv6] peer 3::1 group ebgp

[SwitchC-bgp-af-ipv6] quit

[SwitchC-bgp] quit

# 配置Switch B。

[SwitchB-bgp] ipv6-family

[SwitchB-bgp-af-ipv6] group ebgp external

[SwitchB-bgp-af-ipv6] peer 3::2 as-number 65009

[SwitchB-bgp-af-ipv6] peer 3::2 group ebgp

[SwitchB-bgp-af-ipv6] quit

[SwitchB-bgp] quit

(4) 配置IPv6 BGP IPsec安全策略

# 配置Switch A。创建名为tran1的安全提议，报文封装形式采用传输模式，安全协议采用ESP协议。创建一条安全策略policy001，协商方式为manual，配置SPI和密钥。

[SwitchA] ipsec proposal tran1

[SwitchA-ipsec-proposal-tran1] encapsulation-mode transport

[SwitchA-ipsec-proposal-tran1] transform esp

[SwitchA-ipsec-proposal-tran1] esp encryption-algorithm des

[SwitchA-ipsec-proposal-tran1] esp authentication-algorithm sha1

[SwitchA-ipsec-proposal-tran1] quit

[SwitchA] ipsec policy policy001 10 manual

[SwitchA-ipsec-policy-manual-policy001-10] proposal tran1

[SwitchA-ipsec-policy-manual-policy001-10] sa spi outbound esp 12345

[SwitchA-ipsec-policy-manual-policy001-10] sa spi inbound esp 12345

[SwitchA-ipsec-policy-manual-policy001-10] sa string-key outbound esp abcdefg

[SwitchA-ipsec-policy-manual-policy001-10] sa string-key inbound esp abcdefg

[SwitchA-ipsec-policy-manual-policy001-10] quit

# 配置Switch B。创建名为tran1的安全提议，报文封装形式采用传输模式，安全协议采用ESP协议；创建一条安全策略policy001，协商方式为manual，配置SPI和密钥。创建名为tran2的安全提议，报文封装形式采用传输模式，安全协议采用ESP协议；创建一条安全策略policy002，协商方式为manual，配置SPI和密钥。

[SwitchB] ipsec proposal tran1

[SwitchB-ipsec-proposal-tran1] encapsulation-mode transport

[SwitchB-ipsec-proposal-tran1] transform esp

[SwitchB-ipsec-proposal-tran1] esp encryption-algorithm des

[SwitchB-ipsec-proposal-tran1] esp authentication-algorithm sha1

[SwitchB-ipsec-proposal-tran1] quit

[SwitchB] ipsec policy policy001 10 manual

[SwitchB-ipsec-policy-manual-policy001-10] proposal tran1

[SwitchB-ipsec-policy-manual-policy001-10] sa spi outbound esp 12345

[SwitchB-ipsec-policy-manual-policy001-10] sa spi inbound esp 12345

[SwitchB-ipsec-policy-manual-policy001-10] sa string-key outbound esp abcdefg

[SwitchB-ipsec-policy-manual-policy001-10] sa string-key inbound esp abcdefg

[SwitchB-ipsec-policy-manual-policy001-10] quit

[SwitchB] ipsec proposal tran2

[SwitchB-ipsec-proposal-tran2] encapsulation-mode transport

[SwitchB-ipsec-proposal-tran2] transform esp

[SwitchB-ipsec-proposal-tran2] esp encryption-algorithm des

[SwitchB-ipsec-proposal-tran2] esp authentication-algorithm sha1

[SwitchB-ipsec-proposal-tran2] quit

[SwitchB] ipsec policy policy002 10 manual

[SwitchB-ipsec-policy-manual-policy002-10] proposal tran2

[SwitchB-ipsec-policy-manual-policy002-10] sa spi outbound esp 54321

[SwitchB-ipsec-policy-manual-policy002-10] sa spi inbound esp 54321

[SwitchB-ipsec-policy-manual-policy002-10] sa string-key outbound esp gfedcba

[SwitchB-ipsec-policy-manual-policy002-10] sa string-key inbound esp gfedcba

[SwitchB-ipsec-policy-manual-policy002-10] quit

# 配置Switch C。创建名为tran2的安全提议，报文封装形式采用传输模式，安全协议采用ESP协议。创建一条安全策略policy002，协商方式为manual，配置SPI和密钥。

[SwitchC] ipsec proposal tran2

[SwitchC-ipsec-proposal-tran2] encapsulation-mode transport

[SwitchC-ipsec-proposal-tran2] transform esp

[SwitchC-ipsec-proposal-tran2] esp encryption-algorithm des

[SwitchC-ipsec-proposal-tran2] esp authentication-algorithm sha1

[SwitchC-ipsec-proposal-tran2] quit

[SwitchC] ipsec policy policy002 10 manual

[SwitchC-ipsec-policy-manual-policy002-10] proposal tran2

[SwitchC-ipsec-policy-manual-policy002-10] sa spi outbound esp 54321

[SwitchC-ipsec-policy-manual-policy002-10] sa spi inbound esp 54321

[SwitchC-ipsec-policy-manual-policy002-10] sa string-key outbound esp gfedcba

[SwitchC-ipsec-policy-manual-policy002-10] sa string-key inbound esp gfedcba

[SwitchC-ipsec-policy-manual-policy002-10] quit

(5) 配置IBGP对等体IPsec安全策略

# 配置Switch A。

[SwitchA] bgp 65008

[SwitchA-bgp] ipv6-family

[SwitchA-bgp-af-ipv6] peer 1::2 ipsec-policy policy001

[SwitchA-bgp-af-ipv6] quit

[SwitchA-bgp] quit

# 配置Switch B。

[SwitchB] bgp 65008

[SwitchB-bgp] ipv6-family

[SwitchB-bgp-af-ipv6] peer 1::1 ipsec-policy policy001

[SwitchB-bgp-af-ipv6] quit

[SwitchB-bgp] quit

(6) 配置EBGP对等体组IPsec安全策略

# 配置Switch C。

[SwitchC] bgp 65009

[SwitchC-bgp] ipv6-family

[SwitchC-bgp-af-ipv6] peer ebgp ipsec-policy policy002

[SwitchC-bgp-af-ipv6] quit

[SwitchC-bgp] quit

# 配置Switch B。

[SwitchB] bgp 65008

[SwitchB-bgp] ipv6-family

[SwitchB-bgp-af-ipv6] peer ebgp ipsec-policy policy002

[SwitchB-bgp-af-ipv6] quit

[SwitchB-bgp] quit

4. 验证配置结果

# 显示Switch B的对等体的详细信息。

[SwitchB] display bgp ipv6 peer verbose

BGP Peer is 1::1, remote AS 65008,

Type: IBGP link

BGP version 4, remote router ID 1.1.1.1

BGP current state: Established, Up for 00h01m51s

BGP current event: RecvKeepalive

BGP last state: OpenConfirm

Port: Local – 1029 Remote - 179

Configured: Active Hold Time: 180 sec Keepalive Time: 60 sec

Received : Active Hold Time: 180 sec

Negotiated: Active Hold Time: 180 sec

Peer optional capabilities:

Peer support bgp multi-protocol extended

Peer support bgp route refresh capability

Address family IPv4 Unicast: advertised and received

Received: Total 0 messages, Update messages 0

Sent: Total 0 messages, Update messages 0

Maximum allowed prefix number: 4294967295

Threshold: 75%

Minimum time between advertisement runs is 30 seconds

Optional capabilities:

Route refresh capability has been enabled

ORF advertise capability based on prefix (type 64):

Local: both

Negotiated: send

Peer Preferred Value: 0

IPsec policy name: policy001, SPI :12345

Routing policy configured:

No routing policy is configured

BGP Peer is 3::2, remote AS 65009,

Type: EBGP link

BGP version 4, remote router ID 3.3.3.3

BGP current state: Established, Up for 00h01m51s

BGP current event: RecvKeepalive

BGP last state: OpenConfirm

Port: Local – 1029 Remote - 179

Configured: Active Hold Time: 180 sec Keepalive Time: 60 sec

Received : Active Hold Time: 180 sec

Negotiated: Active Hold Time: 180 sec

Peer optional capabilities:

Peer support bgp multi-protocol extended

Peer support bgp route refresh capability

Address family IPv4 Unicast: advertised and received

Received: Total 0 messages, Update messages 0

Sent: Total 0 messages, Update messages 0

Maximum allowed prefix number: 4294967295

Threshold: 75%

Minimum time between advertisement runs is 30 seconds

Optional capabilities:

Route refresh capability has been enabled

ORF advertise capability based on prefix (type 64):

Local: both

Negotiated: send

Peer Preferred Value: 0

IPsec policy name: policy002, SPI :54321

Routing policy configured:

No routing policy is configured

完成上述配置后IBGP、EBGP邻居能正常建立，且报文都经过加密。

1.10.4 配置IPv6 BGP与BFD联动

1. 组网需求

l 在AS 200内使用OSPFv3作为IGP协议；

l Switch A与Switch C建立两条IBGP连接。当Switch A与Switch C之间的两条链路均连通时，Switch C与1200::0/64之间的报文使用Switch A<－>Switch B<－>Switch C这条路径；当Switch A<－>Switch B<－>Switch C链路故障时，BFD能够快速检测并通告IPv6 BGP协议，使得Switch A<－>Switch D<－>Switch C这条路径能够迅速生效。

2. 组网图

图1-4 IPv6 BGP与BFD联动配置组网图

设备 | 接口 | IP地址 | 设备 | 接口 | IP地址
Switch A | Vlan-int100 | 3000::1/64 | Switch C | Vlan-int101 | 3001::3/64
 | Vlan-int200 | 2000::1/64 |  | Vlan-int201 | 2001::3/64
Switch B | Vlan-int100 | 3000::2/64 | Switch D | Vlan-int200 | 2000::2/64
 | Vlan-int101 | 3001::2/64 |  | Vlan-int201 | 2001::2/64

3. 配置步骤

(1) 配置各接口的IPv6地址（略）

(2) 配置OSPFv3（略），保证Switch A和Switch C之间路由可达

(3) Switch A上的IPv6 BGP配置

# 配置Switch A和Switch C建立两条IBGP连接。

<SwitchA> system-view

[SwitchA] bgp 200

[SwitchA-bgp] ipv6-family

[SwitchA-bgp-af-ipv6] peer 3001::3 as-number 200

[SwitchA-bgp-af-ipv6] peer 2001::3 as-number 200

[SwitchA-bgp-af-ipv6] quit

# 配置当Switch A与Switch C之间的两条链路均连通时，Switch C与1200::0/64之间的报文使用Switch A<－>Switch B<－>Switch C这条路径。（在Switch A上对发布给对等体2001::3的1200::0/64路由配置较高的MED属性值）

l 定义编号为2000的IPv6 ACL，允许路由1200::0/64通过。

[SwitchA] acl ipv6 number 2000

[SwitchA-acl6-basic-2000] rule permit source 1200::0 64

[SwitchA-acl6-basic-2000] quit

l 定义两个Route-policy，一个名为apply_med_50，为路由1200::0/64设置MED属性值为50；另一个名为apply_med_100，为路由1200::0/64设置MED属性值为100。

[SwitchA] route-policy apply_med_50 permit node 10

[SwitchA-route-policy] if-match ipv6 address acl 2000

[SwitchA-route-policy] apply cost 50

[SwitchA-route-policy] quit

[SwitchA] route-policy apply_med_100 permit node 10

[SwitchA-route-policy] if-match ipv6 address acl 2000

[SwitchA-route-policy] apply cost 100

[SwitchA-route-policy] quit

l 对发布给对等体3001::3的路由应用名为apply_med_50的Route-policy，对发布给对等体2001::3的路由应用名为apply_med_100的Route-policy。

[SwitchA] bgp 200

[SwitchA-bgp] ipv6-family

[SwitchA-bgp-af-ipv6] network 1200:: 64

[SwitchA-bgp-af-ipv6] peer 3001::3 route-policy apply_med_50 export

[SwitchA-bgp-af-ipv6] peer 2001::3 route-policy apply_med_100 export

# 配置当Switch A<－>Switch B<－>Switch C链路故障时，BFD能够快速检测并通告IPv6 BGP协议，使得Switch A<－>Switch D<－>Switch C这条路径能够迅速生效。

[SwitchA-bgp-af-ipv6] peer 3001::3 bfd

[SwitchA-bgp-af-ipv6] quit

[SwitchA-bgp] quit

(4) Switch C上的IPv6 BGP配置。

<SwitchC> system-view

[SwitchC] bgp 200

[SwitchC-bgp] ipv6-family

[SwitchC-bgp-af-ipv6] peer 3000::1 as-number 200

[SwitchC-bgp-af-ipv6] peer 3000::1 bfd

[SwitchC-bgp-af-ipv6] peer 2000::1 as-number 200

[SwitchC-bgp-af-ipv6] quit

[SwitchC-bgp] quit

(5) 配置各路由器接口及BFD参数（该步骤可省略，使用BFD参数的缺省值即可）

# 配置Switch A。

[SwitchA] bfd session init-mode active

[SwitchA] interface vlan-interface 100

l 配置发送BFD控制报文的最小时间间隔为500毫秒。

[SwitchA-Vlan-interface100] bfd min-transmit-interval 500

l 配置接收BFD控制报文的最小时间间隔为500毫秒。

[SwitchA-Vlan-interface100] bfd min-receive-interval 500

l 配置BFD报文最大失效的个数为7。

[SwitchA-Vlan-interface100] bfd detect-multiplier 7

[SwitchA-Vlan-interface100] quit

# 配置Switch C。

[SwitchC] bfd session init-mode active

[SwitchC] interface vlan-interface 101

l 配置发送BFD控制报文的最小时间间隔为500毫秒。

[SwitchC-Vlan-interface101] bfd min-transmit-interval 500

l 配置接收BFD控制报文的最小时间间隔为500毫秒。

[SwitchC-Vlan-interface101] bfd min-receive-interval 500

l 配置BFD报文最大失效的个数为7。

[SwitchC-Vlan-interface101] bfd detect-multiplier 7

[SwitchC-Vlan-interface101] return

(6) 检查配置结果

下面以Switch C为例，Switch A和Switch B类似，不再赘述。

# 显示Switch C的BFD信息。

<SwitchC> display bfd session verbose

Total session number: 1 Up session number: 1 Init mode: Active

IPv6 Session working under Ctrl mode:

Local Discr: 17 Remote Discr: 13

Source IP: 3001::3

Destination IP: 3000::1

Session State: Up Interface: Vlan-interface101

Min Trans Inter: 500ms Act Trans Inter: 500ms

Min Recv Inter: 500ms Act Detect Inter: 3000ms

Recv Pkt Num: 57 Send Pkt Num: 53

Hold Time: 2200ms Connect Type: Direct

Running Up for: 00:00:06 Auth mode: none

Protocol: BGP6

Diag Info: No Diagnostic

以上显示信息表明：Switch A的VLAN接口100和Switch C的VLAN接口101之间已经建立了BFD连接，而且BFD协议运行正常。

# 在Switch C上查看BGP邻居信息，可以看出Switch A和Switch C BGP邻居处于Established状态。

<SwitchC> display bgp ipv6 peer

BGP local router ID : 1.1.1.1

Local AS number : 200

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

Peer AS MsgRcvd MsgSent OutQ PrefRcv Up/Down State

2000::1 200 7 10 0 0 00:01:05 Established

3000::1 200 7 10 0 0 00:01:34 Established

# 在Switch C上查看1200::0/64的路由信息，可以看出Switch A和Switch C是通过Switch B进行通信的。

<SwitchC> display ipv6 routing-table 1200::0 64 verbose

Routing Table :

Summary Count : 2

Destination : 1200:: PrefixLength : 64

NextHop : 3000::1 Preference : 255

RelayNextHop : 3001::2 Tag : 0H

Neighbor : 3000::1 ProcessID : 0

Interface : Vlan-interface101 Protocol : BGP4+

State : Active Adv Cost : 50

Tunnel ID : 0x0 Label : NULL

Age : 4538sec

Destination : 1200:: PrefixLength : 64

NextHop : 2000::1 Preference : 255

RelayNextHop : 2001::2 Tag : 0H

Neighbor : 2000::1 ProcessID : 0

Interface : Vlan-interface201 Protocol : BGP4+

State : Invalid Adv Cost : 100

Tunnel ID : 0x0 Label : NULL

Age : 4515sec

以上显示信息表明：Switch C到达1200::0/64网段有两条路径：当前生效的是Switch A<－>Switch B<－>Switch C，Switch A<－>Switch D<－>Switch C这条路径没有生效。

# 打开Switch C的调试开关。

<SwitchC> debugging bfd scm

<SwitchC> debugging bfd event

<SwitchC> debugging bgp bfd

<SwitchC> terminal monitor

<SwitchC> terminal debugging

# Switch A和Switch B之间的链路发生故障后。可以看到Switch C能够快速检测Switch B的变化。

%Nov 5 11:42:24:172 2009 SwitchC BFD/5/BFD_CHANGE_FSM: Sess[3001::3/3000::1, 13/17,VLAN101,Ctrl], Sta: UP->DOWN, Diag: 1

%Nov 5 11:42:24:172 2009 SwitchC BGP/5/BGP_STATE_CHANGED: 3000::1 state is changed from ESTABLISHED to IDLE.

*Nov 5 11:42:24:187 2009 SwitchC RM/6/RMDEBUG: BGP_BFD: Recv BFD DOWN msg, Src IP 3001::3, Dst IP 3000::1, Instance ID 0.

*Nov 5 11:42:24:187 2009 SwitchC RM/6/RMDEBUG: BGP_BFD: Reset BGP session 3000::1 for BFD session down.

*Nov 5 11:42:24:187 2009 SwitchC RM/6/RMDEBUG: BGP_BFD: Send DELETE msg to BFD, Connection type DIRECT, Src IP 3001::3, Dst IP 3000::1, Instance ID 0.

# 在Switch C上查看1200::0/64的路由信息，可以看出Switch A和Switch C是通过Switch D进行通信的。

<SwitchC> display ipv6 routing-table 1200::0 64 verbose

Routing Table :

Summary Count : 1

Destination : 1200:: PrefixLength : 64

NextHop : 2000::1 Preference : 255

RelayNextHop : 2001::2 Tag : 0H

Neighbor : 2000::1 ProcessID : 0

Interface : Vlan-interface201 Protocol : BGP4+

State : Active Adv Cost : 100

Tunnel ID : 0x0 Label : NULL

Age : 4635sec

以上显示信息表明：Switch C到达1200::0/64网段有一条路径：Switch A<－>Switch D<－>Switch C。


1.11 IPv6 BGP常见错误配置举例

1.11.1 IPv6 BGP对等体关系不能建立

1. 错误现象

使用 display bgp ipv6 peer 命令查看IPv6 BGP对等体的信息，发现与对端的连接无法进入Established状态。

2. 分析

IPv6 BGP邻居的建立需要能够使用179端口建立TCP会话，以及能够正确交换Open消息。

3. 处理过程

(1) 用 display current-configuration 命令检查邻居的AS号配置是否正确。

(2) 用 display bgp ipv6 peer 命令检查邻居的IPv6地址是否正确。

(3) 如果使用Loopback接口，检查是否配置了 peer connect-interface 命令。

(4) 如果是物理上非直连的EBGP邻居，检查是否配置了 peer ebgp-max-hop 命令。

(5) 检查路由表中是否存在到邻居的可用路由。

(6) 使用 ping 命令检查链路是否畅通。

(7) 使用 display tcp ipv6 status 命令检查TCP连接是否正常。

(8) 检查是否配置了禁止TCP端口179的ACL。


1 路由策略配置

l 本章所介绍的路由策略包括IPv4路由策略和IPv6路由策略，二者的配置基本一致，不同的部分在各节中另行说明。

l S3600V2-SI系列交换机不支持OSPF、BGP、IS-IS、OSPFv3、IPv6 BGP和IPv6 IS-IS功能，相关描述对S3600V2-SI系列交换机不适用。

相关链接

  • 1.1 路由策略简介
  • 1.2 配置过滤列表
  • 1.3 配置路由策略
  • 1.4 路由策略的显示和维护
  • 1.5 路由策略典型配置举例
  • 1.6 常见错误配置举例
父主题： 12-路由策略配置


1.1 路由策略简介

路由策略（Routing Policy）是为了改变网络流量所经过的途径而修改路由信息的技术，主要通过改变路由属性（包括可达性）来实现。

1.1.1 路由策略的应用

路由策略的应用灵活广泛，主要有下面几种方式：

l 控制路由的发布

路由协议在发布路由信息时，通过路由策略对路由信息进行过滤，只发布满足条件的路由信息。

l 控制路由的接收

路由协议在接收路由信息时，通过路由策略对路由信息进行过滤，只接收满足条件的路由信息，可以控制路由表项的数量，提高网络的安全性。

l 管理引入的路由

路由协议在引入其它路由协议发现的路由时，通过路由策略只引入满足条件的路由信息，并控制所引入的路由信息的某些属性，以使其满足本协议的要求。

l 设置路由的属性

对通过路由策略的路由设置相应的属性。

1.1.2 路由策略的实现

路由策略的实现步骤如下：

(1) 首先要定义将要实施路由策略的路由信息的特征，即定义一组匹配规则。可以用路由信息中的不同属性作为匹配依据进行设置，如目的地址、发布路由信息的路由器地址等。

(2) 然后再将匹配规则应用于路由的发布、接收和引入等过程的路由策略中。

可以灵活使用过滤器来定义各种匹配规则，过滤器的相关内容见下一节介绍。

1.1.3 过滤器

过滤器可以看作是路由策略过滤路由的工具，单独配置的过滤器没有任何过滤效果，只有在路由协议的相关命令中应用这些过滤器，才能够达到预期的过滤效果。

路由协议可以引用访问控制列表、地址前缀列表、AS路径访问列表、团体属性列表、扩展团体属性列表、路由策略几种过滤器。下面对各种过滤器逐一进行介绍。

1. 访问控制列表

访问控制列表包括针对IPv4报文的ACL和针对IPv6报文的ACL。用户在定义ACL时可以指定IP(v6)地址和子网范围，用于匹配路由信息的目的网段地址或下一跳地址。

ACL的相关内容请参见“ACL和QoS配置指导”中的“ACL”。

2. 地址前缀列表

地址前缀列表包括IPv4地址前缀列表和IPv6地址前缀列表。

地址前缀列表的作用类似于ACL，但比它更为灵活，且更易于用户理解。使用地址前缀列表过滤路由信息时，其匹配对象为路由信息的目的地址信息域；另外，用户可以指定 gateway 选项，指明只接收某些路由器发布的路由信息。关于 gateway 选项的设置请参见“三层技术-IP路由命令参考”中的“RIP”和“OSPF”。

一个地址前缀列表由前缀列表名标识。每个前缀列表可以包含多个表项，每个表项可以独立指定一个网络前缀形式的匹配范围，并用一个索引号来标识，索引号指明了在地址前缀列表中进行匹配检查的顺序。

每个表项之间是“或”的关系，在匹配的过程中，路由器按升序依次检查由索引号标识的各个表项，只要有某一表项满足条件，就意味着通过该地址前缀列表的过滤（不再进入下一个表项的测试）。

3. AS路径访问列表（as-path）

as-path仅用于BGP。BGP的路由信息中，包含有自治系统路径域。as-path就是针对自治系统路径域指定匹配条件。

as-path的相关内容请参见“三层技术-IP路由配置指导”中的“BGP”。

4. 团体属性列表（community-list）

community-list仅用于BGP。BGP的路由信息包中，包含一个community属性域，用来标识一个团体。community-list就是针对团体属性域指定匹配条件。

团体属性列表的相关内容请参见“三层技术-IP路由配置指导”中的“BGP”。

5. 扩展团体属性列表（extcommunity-list）

extcommunity-list仅用于BGP。BGP扩展团体属性有两种，一种是用于VPN的Route-Target（路由目标）扩展团体，另一种则是Source of Origin（源节点）扩展团体。扩展团体属性列表就是针对这两种属性指定匹配条件。

6. 路由策略

路由策略是一种比较复杂的过滤器，它不仅可以匹配路由信息的某些属性，还可以在条件满足时改变路由信息的属性。路由策略可以使用前面几种过滤器定义自己的匹配规则。

一个路由策略可以由多个节点（node）构成，每个节点是匹配检查的一个单元，在匹配过程中，系统按节点序号升序依次检查各个节点。不同节点间是“或”的关系，如果通过了其中一个节点，就意味着通过该路由策略，不再对其他节点进行匹配。

每个节点可以由一组 if-match、apply 和 continue 子句组成。

l if-match 子句定义匹配规则，匹配对象是路由信息的一些属性。同一节点中的不同 if-match 子句是“与”的关系，只有满足节点内所有 if-match 子句指定的匹配条件，才能通过该节点的匹配测试。

l apply 子句指定动作，也就是在通过节点的匹配后，对路由信息的一些属性进行设置。

l continue 子句用来配置下一个执行节点。当路由成功匹配当前路由策略节点时，可以指定路由继续匹配同一路由策略内的下一个节点，这样可以组合路由策略各个节点的 if-match 子句和 apply 子句，增强路由策略的灵活性。

if-match、apply 和 continue 子句可以根据应用进行设置，都是可选的。

l 如果只过滤路由，不设置路由的属性，则不需要使用 apply 子句。

l 如果某个 permit 节点没有配置任何 if-match 子句，则该节点匹配所有的路由。

l 通常在多个 deny 节点后设置一个不含 if-match 子句和 apply 子句的 permit 节点，用于允许其它的路由通过。


1.2 配置过滤列表

1.2.1 配置准备

在配置过滤列表之前，需要准备以下数据：

l 前缀列表名称

l 匹配的地址范围

l 扩展团体属性列表序号

1.2.2 配置地址前缀列表

1. 配置IPv4地址前缀列表

IPv4地址前缀列表由列表名标识，每个前缀列表可以包含多个表项。各表项以网络前缀的形式，独立指定一个匹配范围，并使用索引号标识。

在匹配过程中，系统按索引号升序依次检查各个表项，只要路由信息满足一个表项，就认为通过该过滤列表，不再去匹配其他表项。

表1-1 配置IPv4地址前缀列表

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置IPv4地址前缀列表 | ip ip-prefix ip-prefix-name [ index index-number ] { deny | permit } ip-address mask-length [ greater-equal min-mask-length ] [ less-equal max-mask-length ] | 必选 缺省情况下，没有配置IPv4地址前缀列表

如果所有表项都是 deny 模式，则任何路由都不能通过该过滤列表。这种情况下，建议在多条 deny 模式的表项后定义一条 permit 0.0.0.0 0 less-equal 32表项，允许其它所有IPv4路由信息通过。

例如，按如下配置可以保证仅过滤掉10.1.0.0/16、10.2.0.0/16、10.3.0.0/16三个网段的路由，而其它网段的路由信息可以通过。

<Sysname> system-view

[Sysname] ip ip-prefix abc index 10 deny 10.1.0.0 16

[Sysname] ip ip-prefix abc index 20 deny 10.2.0.0 16

[Sysname] ip ip-prefix abc index 30 deny 10.3.0.0 16

[Sysname] ip ip-prefix abc index 40 permit 0.0.0.0 0 less-equal 32

2. 配置IPv6地址前缀列表

IPv6地址前缀列表由列表名标识，每个前缀列表可以包含多个表项。各表项可以独立指定一个网络前缀形式的匹配范围，并使用索引号标识。

在匹配的过程中，系统按索引号升序依次检查各个表项，只要路由信息满足一个表项，就认为通过该过滤列表，不再去匹配其他表项。

表1-2 配置IPv6地址前缀列表

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置IPv6地址前缀列表 | ip ipv6-prefix ipv6-prefix-name [ index index-number ] { deny | permit } ipv6-address prefix-length [ greater-equal min-prefix-length ] [ less-equal max-prefix-length ] | 必选 缺省情况下，没有配置IPv6地址前缀列表

如果所有表项都是 deny 模式，则任何路由都不能通过该过滤列表。这种情况下，需要在多条 deny 模式的表项后定义一条 permit :: 0 less-equal 128的表项，以允许其它所有IPv6路由信息通过。

例如，按如下配置可以保证仅过滤掉2000:1::/48、2000:2::/48、2000:3::/48三个网段的路由，而其它网段的路由信息可以通过。

<Sysname> system-view

[Sysname] ip ipv6-prefix abc index 10 deny 2000:1:: 48

[Sysname] ip ipv6-prefix abc index 20 deny 2000:2:: 48

[Sysname] ip ipv6-prefix abc index 30 deny 2000:3:: 48

[Sysname] ip ipv6-prefix abc index 40 permit :: 0 less-equal 128

1.2.3 配置AS路径过滤列表

一个AS过滤列表可以包含多个表项。在匹配过程中，各表项之间是“或”的关系，即只要路由信息通过该列表中的一条表项，就认为通过该AS路径过滤列表。

表1-3 配置AS路径过滤列表

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置AS路径过滤列表 | ip as-path as-path-number { deny | permit } regular-expression | 必选 缺省情况下，没有配置AS路径过滤列表

1.2.4 配置团体属性列表

一个团体属性列表可以定义多个表项。在匹配过程中，各表项之间是“或”的关系，即只要路由信息通过该列表中的一条表项，就认为通过该团体属性列表。

表1-4 配置团体属性列表

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
配置团体属性列表 | 配置基本团体属性列表 | ip community-list { basic-comm-list-num | basic comm-list-name } { deny | permit } [ community-number-list ] [ internet | no-advertise | no-export | no-export-subconfed ] * | 二者必选其一 缺省情况下，没有配置团体属性列表
 | 配置高级团体属性列表 | ip community-list { adv-comm-list-num | advanced comm-list-name } { deny | permit } regular-expression

1.2.5 配置扩展团体属性列表

一个扩展团体属性列表可以定义多个表项。在匹配过程中，各表项之间是“或”的关系，即只要路由信息通过该列表中的一条表项，就认为通过该扩展团体属性列表。

表1-5 配置扩展团体属性列表

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置扩展团体属性列表 | ip extcommunity-list ext-comm-list-number { deny | permit } { rt route-target | soo site-of-origin }&<1-16> | 必选 缺省情况下，没有配置扩展团体属性列表


1.3 配置路由策略

路由策略用来根据路由信息的某些属性过滤路由信息，并改变与路由策略规则匹配的路由信息的属性。匹配条件可以使用前面几种过滤列表。

一个路由策略可由多个节点构成，每个节点又分为：

l if-match 子句：定义匹配规则，即路由信息通过当前路由策略所需满足的条件，匹配对象是路由信息的某些属性。

l apply 子句：指定动作，也就是在满足由 if-match 子句指定的过滤条件后所执行的一些配置命令，对路由的某些属性进行修改。

l continue 子句：用来配置下一个执行节点，当路由成功匹配当前路由策略节点时，可以指定路由继续匹配同一路由策略内的下一个节点。

1.3.1 配置准备

在配置路由策略之前，需完成以下任务：

l 配置过滤列表

l 配置路由协议

在配置之前，需要准备以下数据：

l 路由策略的名称、节点序号

l 匹配条件

l 要修改的路由属性值

1.3.2 创建一个路由策略

表1-6 创建一个路由策略

操作 | 命令 | 说明
进入系统视图 | system-view | -
创建路由策略并进入该路由策略视图 | route-policy route-policy-name { deny | permit } node node-number | 必选 缺省情况下，没有创建路由策略

l permit 指定节点的匹配模式为允许模式。当路由信息通过该节点的过滤后，将执行该节点的 apply 子句，不进入下一个节点的测试；如果路由信息没有通过该节点过滤，将进入下一个节点继续测试。

l deny 指定节点的匹配模式为拒绝模式（此模式下 apply 子句不会被执行）。当路由项满足该节点的所有 if-match 子句时，将被拒绝通过该节点，不进入下一个节点的测试；如果路由项不满足该节点的 if-match 子句，将进入下一个节点继续测试。

l 如果路由策略中定义了一个以上的节点，则各节点中至少应该有一个节点的匹配模式是 permit。当路由策略用于路由信息过滤时，如果某路由信息没有通过任一节点，则认为该路由信息没有通过该路由策略。如果路由策略的所有节点都是 deny 模式，则没有路由信息能通过该路由策略。

1.3.3 配置if-match子句

表1-7 配置if-match子句

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
进入路由策略视图 |  | route-policy route-policy-name { deny | permit } node node-number | 必选
配置IPv4的路由信息的匹配条件 | 配置IPv4路由信息的目的地址范围的匹配条件 | if-match acl acl-number | 可选 缺省情况下，没有配置IPv4路由信息的目的地址范围的匹配条件
 |  | if-match ip-prefix ip-prefix-name
 | 配置IPv4的路由信息的下一跳地址或源地址的匹配条件 | if-match ip { next-hop | route-source } { acl acl-number | ip-prefix ip-prefix-name } | 可选 缺省情况下，没有配置IPv4的路由信息的下一跳地址或源地址的匹配条件
配置IPv6的路由信息的匹配条件 |  | if-match ipv6 { address | next-hop | route-source } { acl acl-number | prefix-list ipv6-prefix-name } | 可选 缺省情况下，没有配置IPv6的路由信息的匹配条件
配置BGP路由信息的AS路径域的匹配条件 |  | if-match as-path as-path-number&<1-16> | 可选 缺省情况下，没有配置BGP路由信息的AS路径域的匹配条件
匹配BGP路由信息的团体属性 |  | if-match community { { basic-community-list-number | comm-list-name } [ whole-match ] | adv-community-list-number }&<1-16> | 可选 缺省情况下，不匹配BGP路由信息的团体属性。
配置路由信息的路由开销的匹配条件 |  | if-match cost value | 可选 缺省情况下，没有配置路由信息的路由开销的匹配条件
配置BGP扩展团体属性的匹配条件 |  | if-match extcommunity ext-comm-list-number&<1-16> | 可选 缺省情况下，没有配置BGP扩展团体属性的匹配条件
配置路由信息的出接口的匹配条件 |  | if-match interface { interface-type interface-number }&<1-16> | 可选 缺省情况下，没有配置路由信息的出接口的匹配条件
配置路由信息的类型的匹配条件 |  | if-match route-type { external-type1 | external-type1or2 | external-type2 | internal | is-is-level-1 | is-is-level-2 | nssa-external-type1 | nssa-external-type1or2 | nssa-external-type2 } * | 可选 缺省情况下，没有配置路由信息的类型的匹配条件
配置RIP、OSPF、IS-IS路由信息的标记域的匹配条件 |  | if-match tag value | 可选 缺省情况下，没有配置RIP、OSPF、IS-IS路由信息的标记域的匹配条件

l 对于同一个节点，在匹配的过程中，不同 if-match 子句间是“与”的关系，即路由信息必须同时满足所有匹配条件，才可以执行 apply 子句。如果有if-match子句因超过命令行最大长度而出现多条相同的if-match子句时，这几条子句之间是“或”的关系，即满足一个匹配条件，就认为匹配该if-match语句，例如出现多条if-match community子句时，各个子句的团体属性之间是“或”的关系，即满足其中一个团体属性，就认为匹配if-match community子句。

l 在一个节点中，可以没有 if-match 子句，也可以有多个 if-match 子句。当不指定 if-match 子句时，如果该节点的匹配模式为允许模式，则所有路由信息都会通过该节点的过滤；如果该节点的匹配模式为拒绝模式，则所有路由信息都会被拒绝。

l 如果 if-match 子句对应的ACL不存在，则默认满足该匹配条件；如果 if-match 子句对应的ACL中没有匹配的ACL规则或者ACL规则处于非激活状态，则默认不满足该匹配条件。

l 路由策略应使用非VPN的ACL进行路由过滤。

l IPv4路由策略和IPv6路由策略在配置 if-match 子句时，不同之处在于匹配路由信息的目的地址、下一跳和源地址的命令不同。

l 将路由策略应用到BGP时，BGP协议不支持配置路由信息的出接口的匹配条件。

1.3.4 配置apply子句

表1-8 配置apply子句

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
创建路由策略并进入该路由策略视图 |  | route-policy route-policy-name { deny | permit } node node-number | 必选 缺省情况下，不创建路由策略
配置BGP路由信息的AS_PATH属性 |  | apply as-path as-number&<1-10> [ replace ] | 可选 缺省情况下，没有配置BGP路由信息的AS_PATH属性
删除指定的BGP团体属性 |  | apply comm-list { comm-list-number | comm-list-name } delete | 可选 缺省情况下，不删除路由团体属性
配置BGP路由信息的团体属性 |  | apply community { none | additive | { community-number&<1-16> | aa:nn&<1-16> | internet | no-advertise | no-export | no-export-subconfed } * [ additive ] } | 可选 缺省情况下，没有配置BGP路由信息的团体属性
配置路由信息的路由开销 |  | apply cost [ + | - ] value | 可选 缺省情况下，没有配置路由信息的路由开销
配置路由信息的开销类型 |  | apply cost-type { external | internal | type-1 | type-2 } | 可选 缺省情况下，没有配置路由开销类型
配置BGP扩展团体属性 |  | apply extcommunity { { rt route-target }&<1-16> [ additive ] | soo site-of-origin additive } | 可选 缺省情况下，没有配置BGP扩展团体属性
配置路由信息的下一跳地址 | 配置IPv4路由信息的下一跳地址 | apply ip-address next-hop ip-address | 可选 缺省情况下，没有配置IPv4路由信息的下一跳地址
 | 配置IPv6路由信息的下一跳地址 | apply ipv6 next-hop ipv6-address | 可选 缺省情况下，没有配置IPv6路由信息的下一跳地址
配置引入路由到IS-IS某个级别的区域 |  | apply isis { level-1 | level-1-2 | level-2 } | 可选 缺省情况下，没有配置引入路由到IS-IS某个级别的区域
配置BGP路由信息的本地优先级 |  | apply local-preference preference | 可选 缺省情况下，没有配置BGP路由信息的本地优先级
配置BGP路由信息的ORIGIN属性 |  | apply origin { egp as-number | igp | incomplete } | 可选 缺省情况下，没有配置BGP路由信息的ORIGIN属性
配置路由协议的优先级 |  | apply preference preference | 可选 缺省情况下，没有配置路由协议的优先级
配置BGP路由信息的首选值 |  | apply preferred-value preferred-value | 可选 缺省情况下，没有配置BGP路由信息的首选值
配置RIP、OSPF、IS-IS路由信息的标记域 |  | apply tag value | 可选 缺省情况下，没有配置RIP、OSPF、IS-IS路由信息的标记域
配置快速重路由 |  | apply fast-reroute { backup-interface interface-type interface-number [ backup-nexthop ip-address ] } | 可选 缺省情况下，没有配置快速重路由

l IPv4路由策略和IPv6路由策略在配置 apply 子句时，不同之处在于设置路由信息的下一跳地址的命令不同。

l 对于引入的IPv4路由，使用 apply ip-address next-hop 命令设置下一跳地址无效；对于引入的IPv6路由，使用 apply ipv6 next-hop 命令设置下一跳地址无效。

1.3.5 配置continue子句

表1-9 配置continue子句

操作 | 命令 | 说明
进入系统视图 | system-view | -
创建路由策略并进入该路由策略视图 | route-policy route-policy-name { deny | permit } node node-number | 必选 缺省情况下，不创建路由策略
配置下一个执行节点 | continue [ node-number ] | 可选 缺省情况下，没有配置下一个执行节点 需要注意的是，下一个执行节点序列号必须大于当前节点序列号

l 当配置 continue 子句的多个节点配置相同的 apply 子句只是子句的值不相同时，以最后一个 apply 子句为准，包括有叠加属性的 apply 子句，当多个节点都配置了这样的子句，属性不会全部叠加到路由上，而是以最后一个子句为准。

l 当配置 continue 子句的多个节点配置 apply community 子句时，使用命令行 apply comm-list delete 不能删除前面节点中配置的团体属性。


1.4 路由策略的显示和维护

在完成上述配置后，在任意视图下执行 display 命令可以显示配置后路由策略的运行情况，通过查看显示信息验证配置的效果。

在用户视图下执行 reset 命令可以清除路由策略的统计信息。

表1-10 路由策略的显示和维护

操作 | 命令
显示BGP AS路径过滤列表信息 | display ip as-path [ as-path-number ] [ | { begin | exclude | include } regular-expression ]
显示BGP团体属性列表信息 | display ip community-list [ basic-community-list-number | adv-community-list-number | comm-list-name ] [ | { begin | exclude | include } regular-expression ]
显示BGP扩展团体属性列表信息 | display ip extcommunity-list [ ext-comm-list-number ] [ | { begin | exclude | include } regular-expression ]
显示IPv4地址前缀列表的统计信息 | display ip ip-prefix [ ip-prefix-name ] [ | { begin | exclude | include } regular-expression ]
显示IPv6地址前缀列表的统计信息 | display ip ipv6-prefix [ ipv6-prefix-name ] [ | { begin | exclude | include } regular-expression ]
显示路由策略信息 | display route-policy [ route-policy-name ] [ | { begin | exclude | include } regular-expression ]
清除IPv4地址前缀列表的统计信息 | reset ip ip-prefix [ ip-p refix-name ]
清除IPv6地址前缀列表的统计信息 | reset ip ipv6-prefix [ ipv6-p refix-name ]


1.5 路由策略典型配置举例

1.5.1 在IPv4路由引入中应用路由策略

1. 组网需求

如下图所示，Switch B与Switch A之间通过OSPF协议交换路由信息，与Switch C之间通过IS-IS协议交换路由信息。

要求在Switch B上配置路由引入，将IS-IS路由引入到OSPF中去，并同时使用路由策略设置路由的属性。其中，设置172.17.1.0/24的路由的开销为100，设置172.17.2.0/24的路由的Tag属性为20。

2. 组网图

图1-1 在IPv4路由引入中应用路由策略组网图

3. 配置步骤

(1) 配置各接口的IP地址（略）

(2) 配置IS-IS路由协议

# 配置Switch C。

<SwitchC> system-view

[SwitchC] isis

[SwitchC-isis-1] is-level level-2

[SwitchC-isis-1] network-entity 10.0000.0000.0001.00

[SwitchC-isis-1] quit

[SwitchC] interface vlan-interface 200

[SwitchC-Vlan-interface200] isis enable

[SwitchC-Vlan-interface200] quit

[SwitchC] interface vlan-interface 201

[SwitchC-Vlan-interface201] isis enable

[SwitchC-Vlan-interface201] quit

[SwitchC] interface vlan-interface 202

[SwitchC-Vlan-interface202] isis enable

[SwitchC-Vlan-interface202] quit

[SwitchC] interface vlan-interface 203

[SwitchC-Vlan-interface203] isis enable

[SwitchC-Vlan-interface203] quit

# 配置Switch B。

<SwitchB> system-view

[SwitchB] isis

[SwitchB-isis-1] is-level level-2

[SwitchB-isis-1] network-entity 10.0000.0000.0002.00

[SwitchB-isis-1] quit

[SwitchB] interface vlan-interface 200

[SwitchB-Vlan-interface200] isis enable

[SwitchB-Vlan-interface200] quit

(3) 配置OSPF路由协议及路由引入

# 配置Switch A，启动OSPF。

<SwitchA> system-view

[SwitchA] ospf

[SwitchA-ospf-1] area 0

[SwitchA-ospf-1-area-0.0.0.0] network 192.168.1.0 0.0.0.255

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

[SwitchA-ospf-1] quit

# 配置Switch B，启动OSPF，并引入IS-IS路由。

[SwitchB] ospf

[SwitchB-ospf-1] area 0

[SwitchB-ospf-1-area-0.0.0.0] network 192.168.1.0 0.0.0.255

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

[SwitchB-ospf-1] import-route isis 1

[SwitchB-ospf-1] quit

# 查看SwitchA的OSPF路由表，可以看到引入的路由。

[SwitchA] display ospf routing

OSPF Process 1 with Router ID 192.168.1.1

Routing Tables

Routing for Network

Destination Cost Type NextHop AdvRouter Area

192.168.1.0/24 1562 Stub 192.168.1.1 192.168.1.1 0.0.0.0

Routing for ASEs

Destination Cost Type Tag NextHop AdvRouter

172.17.1.0/24 1 Type2 1 192.168.1.2 192.168.2.2

172.17.2.0/24 1 Type2 1 192.168.1.2 192.168.2.2

172.17.3.0/24 1 Type2 1 192.168.1.2 192.168.2.2

192.168.2.0/24 1 Type2 1 192.168.1.2 192.168.2.2

Total Nets: 5

Intra Area: 1 Inter Area: 0 ASE: 4 NSSA: 0

(4) 配置过滤列表

# 配置编号为2002的ACL，允许172.17.2.0/24的路由通过。

[SwitchB] acl number 2002

[SwitchB-acl-basic-2002] rule permit source 172.17.2.0 0.0.0.255

[SwitchB-acl-basic-2002] quit

# 配置名为prefix-a的地址前缀列表，允许172.17.1.0/24的路由通过。

[SwitchB] ip ip-prefix prefix-a index 10 permit 172.17.1.0 24

(5) 配置路由策略

[SwitchB] route-policy isis2ospf permit node 10

[SwitchB-route-policy] if-match ip-prefix prefix-a

[SwitchB-route-policy] apply cost 100

[SwitchB-route-policy] quit

[SwitchB] route-policy isis2ospf permit node 20

[SwitchB-route-policy] if-match acl 2002

[SwitchB-route-policy] apply tag 20

[SwitchB-route-policy] quit

[SwitchB] route-policy isis2ospf permit node 30

[SwitchB-route-policy] quit

(6) 在路由引入时应用路由策略

# 配置Switch B，设置在路由引入时应用路由策略。

[SwitchB] ospf

[SwitchB-ospf-1] import-route isis 1 route-policy isis2ospf

[SwitchB-ospf-1] quit

# 查看Switch A的OSPF路由表，可以看到目的地址为172.17.1.0/24的路由的开销为100，目的地址为172.17.2.0/24的路由的标记域（Tag）为20，而其他外部路由没有变化。

[SwitchA] display ospf routing

OSPF Process 1 with Router ID 192.168.1.1

Routing Tables

Routing for Network

Destination Cost Type NextHop AdvRouter Area

192.168.1.0/24 1 Transit 192.168.1.1 192.168.1.1 0.0.0.0

Routing for ASEs

Destination Cost Type Tag NextHop AdvRouter

172.17.1.0/24 100 Type2 1 192.168.1.2 192.168.2.2

172.17.2.0/24 1 Type2 20 192.168.1.2 192.168.2.2

172.17.3.0/24 1 Type2 1 192.168.1.2 192.168.2.2

192.168.2.0/24 1 Type2 1 192.168.1.2 192.168.2.2

Total Nets: 5

Intra Area: 1 Inter Area: 0 ASE: 4 NSSA: 0

1.5.2 在IPv6路由引入中应用路由策略

1. 组网需求

l 在Switch A和Switch B上使能RIPng。

l 在Switch A上配置三条静态路由，并设置在引入静态路由时应用路由策略，使三条静态路由部分引入、部分被屏蔽掉——20::/32和40::/32网段的路由是可见的，30::/32网段的路由则被屏蔽。

l 通过在Switch B上查看RIPng路由表，验证路由策略是否生效。

2. 组网图

图1-2 在IPv6路由引入中应用路由策略组网图

3. 配置步骤

(1) 配置Switch A

# 配置接口Vlan-interface100和Vlan-interface200的IPv6地址。

<SwitchA> system-view

[SwitchA] ipv6

[SwitchA] interface vlan-interface 100

[SwitchA-Vlan-interface100] ipv6 address 10::1 32

[SwitchA-Vlan-interface100] quit

[SwitchA] interface vlan-interface 200

[SwitchA-Vlan-interface200] ipv6 address 11::1 32

[SwitchA-Vlan-interface200] quit

# 在接口下使能RIPng。

[SwitchA] interface vlan-interface 100

[SwitchA-Vlan-interface100] ripng 1 enable

[SwitchA-Vlan-interface100] quit

# 配置三条静态路由，其下一跳为11::2，保证静态路由为active状态。

[SwitchA] ipv6 route-static 20:: 32 11::2

[SwitchA] ipv6 route-static 30:: 32 11::2

[SwitchA] ipv6 route-static 40:: 32 11::2

# 配置路由策略。

[SwitchA] ip ipv6-prefix a index 10 permit 30:: 32

[SwitchA] route-policy static2ripng deny node 0

[SwitchA-route-policy] if-match ipv6 address prefix-list a

[SwitchA-route-policy] quit

[SwitchA] route-policy static2ripng permit node 10

[SwitchA-route-policy] quit

# 启动RIPng协议并引入静态路由。

[SwitchA] ripng

[SwitchA-ripng-1] import-route static route-policy static2ripng

(2) 配置Switch B

# 配置接口Vlan-interface100的IPv6地址。

[SwitchB] ipv6

[SwitchB] interface vlan-interface 100

[SwitchB-Vlan-interface100] ipv6 address 10::2 32

# 在接口下使能RIPng。

[SwitchB-Vlan-interface100] ripng 1 enable

[SwitchB-Vlan-interface100] quit

# 启动RIPng协议。

[SwitchB] ripng

# 查看RIPng路由表。

[SwitchB-ripng-1] display ripng 1 route

Route Flags: A - Aging, S - Suppressed, G - Garbage-collect

----------------------------------------------------------------

Peer FE80::7D58:0:CA03:1 on Vlan-interface 100

Dest 10::/32,

via FE80::7D58:0:CA03:1, cost 1, tag 0, A, 18 Sec

Dest 20::/32,

via FE80::7D58:0:CA03:1, cost 1, tag 0, A, 8 Sec

Dest 40::/32,

via FE80::7D58:0:CA03:1, cost 1, tag 0, A, 3 Sec

1.5.3 配置应用路由策略过滤接收的BGP路由

1. 组网需求

l 所有交换机均运行BGP协议，Switch A、Switch B和Switch C之间建立EBGP连接，Switch C和Switch D之间建立EBGP连接。

l 通过配置路由策略，使得Switch D拒绝接收来自AS 200的路由。

2. 组网图

图1-3 配置应用路由策略过滤接收的BGP路由

3. 配置步骤

(1) 配置接口IP地址（略）

(2) 配置BGP基本功能

# 配置Switch A。

<SwitchA> system-view

[SwitchA] bgp 100

[SwitchA-bgp] router-id 1.1.1.1

[SwitchA-bgp] peer 1.1.1.2 as-number 300

# 配置Switch B。

<SwitchB> system-view

[SwitchB] bgp 200

[SwitchB-bgp] router-id 2.2.2.2

[SwitchB-bgp] peer 1.1.2.2 as-number 300

# 配置Switch C。

<SwitchC> system-view

[SwitchC] bgp 300

[SwitchC-bgp] router-id 3.3.3.3

[SwitchC-bgp] peer 1.1.1.1 as-number 100

[SwitchC-bgp] peer 1.1.2.1 as-number 200

[SwitchC-bgp] peer 1.1.3.2 as-number 400

# 配置Switch D。

<SwitchD> system-view

[SwitchD] bgp 400

[SwitchD-bgp] router-id 4.4.4.4

[SwitchD-bgp] peer 1.1.3.1 as-number 300

[SwitchD-bgp] quit

# 配置Switch A，将网段路由4.4.4.4/24、5.5.5.5/24、6.6.6.6/24发布到BGP路由表中。

[SwitchA-bgp] network 4.4.4.4 24

[SwitchA-bgp] network 5.5.5.5 24

[SwitchA-bgp] network 6.6.6.6 24

# 配置Switch B，将网段路由7.7.7.7/24、8.8.8.8/24、9.9.9.9/24发布到BGP路由表中。

[SwitchB-bgp] network 7.7.7.7 24

[SwitchB-bgp] network 8.8.8.8 24

[SwitchB-bgp] network 9.9.9.9 24

# 查看Switch D的BGP路由表。

[SwitchD-bgp] display bgp routing-table

Total Number of Routes: 6

BGP Local router ID is 4.4.4.4

Status codes: * - valid, > - best, d - damped,

h - history, i - internal, s - suppressed, S - Stale

Origin : i - IGP, e - EGP, ? - incomplete

Network NextHop MED LocPrf PrefVal Path/Ogn

*> 4.4.4.0/24 1.1.3.1 0 300 100i

*> 5.5.5.0/24 1.1.3.1 0 300 100i

*> 6.6.6.0/24 1.1.3.1 0 300 100i

*> 7.7.7.0/24 1.1.3.1 0 300 200i

*> 8.8.8.0/24 1.1.3.1 0 300 200i

*> 9.9.9.0/24 1.1.3.1 0 300 200i

从路由表可以看出，Switch D同时学到了来自AS 100的路由4.4.4.0/24、5.5.5.0/24、6.6.6.0/24和来自AS 200的路由7.7.7.0/24、8.8.8.0/24、9.9.9.0/24。

(3) 配置Switch D拒绝接收来自AS 200的路由。

# 在Switch D上配置编号为1的AS路径过滤列表。

[SwitchD] ip as-path 1 permit .*200.*

# 在Switch D上配置名称为“rt1”的路由策略，其节点序列号为1，匹配模式为deny，即拒绝接收来自AS 200的路由。

[SwitchD] route-policy rt1 deny node 1

[SwitchD-route-policy] if-match as-path 1

[SwitchD-route-policy] quit

# 在Switch D上配置名称为“rt1”的路由策略，其节点序列号为10，匹配模式为permit，即可以接收来自其它AS的路由。

[SwitchD] route-policy rt1 permit node 10

[SwitchD-route-policy] quit

# 在Switch D上，配置对从对等体1.1.3.1接收的路由指定名称为“rt1”的路由策略。

[SwitchD] bgp 400

[SwitchD-bgp] peer 1.1.3.1 route-policy rt1 import

# 查看Switch D的BGP路由表。

[SwitchD-bgp] display bgp routing-table

Total Number of Routes: 3

BGP Local router ID is 4.4.4.4

Status codes: * - valid, > - best, d - damped,

h - history, i - internal, s - suppressed, S - Stale

Origin : i - IGP, e - EGP, ? - incomplete

Network NextHop MED LocPrf PrefVal Path/Ogn

*> 4.4.4.0/24 1.1.3.1 0 300 100i

*> 5.5.5.0/24 1.1.3.1 0 300 100i

*> 6.6.6.0/24 1.1.3.1 0 300 100i

从路由表可以看出，Switch D只学到了来自AS 100的路由4.4.4.0/24、5.5.5.0/24、6.6.6.0/24。


1.6 常见错误配置举例

1.6.1 无法实现IPv4路由信息过滤

1. 错误现象

路由协议运行正常的情况下无法实现路由信息过滤。

2. 分析

地址前缀列表的各个表项中至少应该有一个表项的匹配模式是 permit 模式。Route-policy的各个节点中至少应该有一个节点的匹配模式是 permit 模式。

3. 处理过程

(1) 使用 display ip ip-prefix 命令查看前缀列表的配置。

(2) 使用 display route-policy 命令查看路由策略的配置。

1.6.2 无法实现IPv6路由信息过滤

1. 错误现象

路由协议运行正常的情况下无法实现路由信息过滤。

2. 分析

地址前缀列表的各个表项中至少应该有一个表项的匹配模式是 permit 模式。Route-policy的各个节点中至少应该有一个节点的匹配模式是 permit 模式。

3. 处理过程

(1) 使用 display ip ipv6-prefix 命令查看前缀列表的配置。

(2) 使用 display route-policy 命令查看路由策略的配置。


1 策略路由配置

相关链接

  • 1.1 策略路由简介
  • 1.2 配置PBR方式的策略路由
  • 1.3 配置QoS策略方式的策略路由
  • 1.4 策略路由显示和维护
  • 1.5 策略路由典型配置举例
父主题： 13-策略路由配置


1.1 策略路由简介

策略路由是一种依据用户制定的策略进行路由选择的机制。与单纯依照IP报文的目的地址查找路由表进行转发不同，策略路由基于到达报文的源地址等信息灵活地进行路由选择。

一般来讲，策略路由的优先级要高于普通路由，即设备在转发报文时，首先将报文与策略路由的匹配规则进行比较，如果符合匹配条件，则按照策略路由进行转发。如果报文无法匹配策略路由的条件，再按照普通路由进行转发。

本系列交换机支持两种策略路由配置方式：

(1) PBR方式（policy-based-route）

PBR方式通过ACL制定匹配规则，支持对报文的下一跳，优先级及缺省下一跳进行设置，目前只支持IPv4单播策略路由。

PBR方式支持动态修改ACL规则，以动态更新匹配规则，实现业务的灵活控制。

l PBR方式下，如果报文匹配了策略路由条件，但是配置的下一跳地址不存在，报文将继续进行普通路由的转发。

l 对于配置了缺省下一跳的情况，先进行普通路由的转发，如果无法匹配，再进行策略路由转发。

(2) QoS策略方式

QoS策略方式是通过QoS策略的流分类功能来制定细致的匹配规则，并使用流行为中的重定向动作将报文按指定的目的进行转发。QoS策略方式能够实现IPv4、IPv6单播策略路由。

下面分别对两种方式的实现规则进行介绍。

1.1.1 PBR方式

1. 简介

PBR方式策略路由对于满足一定条件（ACL规则）的报文，将执行一定的操作（设置报文的优先级、设置报文的下一跳、设置报文的缺省下一跳等），以指导报文的转发。

根据作用对象的不同，分为本地策略路由和接口策略路由：

l 本地策略路由：对本地产生的报文（比如本地发出的ping报文）进行策略路由，它只对本地产生的报文起作用，对转发的报文不起作用。

l 接口策略路由：对到达该接口的报文进行策略路由，它只对转发的报文起作用，对本地产生的报文不起作用。

对于一般转发和安全等方面的使用需求，大多数情况下只需使用接口策略路由。

本文所指的“接口”为三层口，包括VLAN接口、三层以太网端口等。三层以太网端口是指被配置为三层模式的以太网端口，有关以太网端口模式切换的操作，请参见“二层技术-以太网交换配置指导”中的“以太网端口配置”。

2. 相关概念

一个策略用来引入一条路由，对IP报文转发进行路由选择。一个策略可以包含一个或多个节点。

(1) 节点

l 每个节点由 node-number 来指定。node-number 的值越小优先级越高，优先级高的节点优先被执行。

l 每个节点的具体内容由 if-match 和 apply 子句来指定。if-match 子句定义该节点的匹配规则，apply 子句定义该节点的动作。

l 每个节点对报文的处理方式由匹配模式决定。匹配模式分为 permit 和 deny 两种。

(2) if-match子句

本系列交换机支持的 if-match 子句为 if-match acl。

在一个节点中，同一类型的 if-match 子句最多只能有一条。

(3) apply子句

本系列交换机支持三种 apply 子句，分别为：apply ip-precedence、apply ip-address next-hop、apply ip-address default next-hop。

执行缺省下一跳命令（apply ip-address default next-hop）的前提是，在策略路由中报文没有配置下一跳，或者配置的下一跳无效，并且报文目的IP地址在路由表中没有查到相应的路由，这时才会使用策略路由配置的缺省下一跳。

3. 节点的匹配模式与节点的if-match子句、apply子句的关系

一个节点的匹配模式与这个节点的 if-match 子句、apply 子句的关系如表1-1 所示。

表1-1 节点的匹配模式、if-match 子句、apply 子句三者之间的关系

节点匹配模式 是否满足 if-match 子句 | permit（允许模式） | deny（拒绝模式）
报文满足此节点的所有 if-match 子句 | 执行此节点 apply 子句，不再匹配下一节点 | 不执行此节点 apply 子句，不再匹配下一节点，报文按正常转发流程处理
报文不满足此节点的 if-match 子句 | 不执行此节点 apply 子句，继续匹配下一节点 | 不执行此节点 apply 子句，继续匹配下一节点

同一个策略中的各节点之间是“或”的关系，即只要报文通过一个节点的过滤，就意味着通过该策略的过滤；如果报文不能通过一个策略中任何一个节点的过滤，则认为没有通过该策略的过滤，报文将按正常转发流程处理。

1.1.2 QoS策略方式

QoS策略方式通过流分类来制定匹配规则，并使用“重定向到下一跳”的流行为动作，将满足流分类规则的报文向指定的路径进行转发，从而实现灵活的路由选择。

通过QoS策略方式实现的策略路由的优先级要高于普通路由，即报文先匹配流分类规则，如果匹配则按照策略路由进行转发，如果无法匹配所有流分类规则，再按照普通路由进行转发。

关于QoS策略的详细介绍，请参见“ACL和QoS配置指导”中的“QoS配置”。


1.2 配置PBR方式的策略路由

1.2.1 配置PBR策略

表1-2 配置策略

操作 | 命令 | 说明
进入系统视图 | system-view | -
创建策略或一个策略节点，并进入策略路由视图 | policy-based-route policy-name [ deny | permit ] node node-number | 必选
设置ACL匹配条件 | if-match acl acl-number | 可选
设置报文的优先级 | apply ip-precedence value | 可选
设置报文的下一跳 | apply ip-address next-hop ip-address [ direct ] [ track track-entry-number ] [ ip-address [ direct ] [ track track-entry-number ] ] | 可选 用户可以同时配置两个下一跳： l 应用于本地策略路由时，这两个下一跳同时有效，可以起到负载分担的作用 l 应用于接口策略路由时，第一个下一跳作为主路由，第二个下一跳作为备份路由，实现路由备份
设置报文缺省下一跳 | apply ip-address default next-hop ip-address [ track track-entry-number ] [ ip-address [ track track-entry-number ] ] | 可选 用户可以同时配置两个下一跳： l 应用于本地策略路由时，这两个下一跳同时有效，可以起到负载分担的作用 l 应用于接口策略路由时，第一个下一跳作为主路由，第二个下一跳作为备份路由，实现路由备份

l 如果 if-match 子句中使用了ACL，将忽略ACL规则的 permit/deny 动作以及 time-range 指定的规则生效时间段，只使用ACL中的分类域来匹配报文。如果使用的ACL不存在，则不匹配任何报文。

l apply ip-address next-hop 可以配置两个下一跳，可以通过一次配置两个下一跳参数进行，也可以通过两条配置命令完成。当用户希望修改其中一个时，只需要继续执行 apply ip-address next-hop ip-address 命令，系统就会将最早配置的下一跳（一次配置两个下一跳参数的情况下为命令行输入的第二个参数值）替换；如果先前配置的两个下一跳都需要修改，则直接在 apply ip-address next-hop 命令后配置两个参数即可。

l 如果某一节点不配置 if-match 子句，则所有报文都会通过该节点的过滤，根据 permit/deny 执行相应的操作，不再继续匹配下一节点。

l 如果某一 permit 模式的节点不配置 apply 子句，当报文满足此节点的所有 if-match 子句时，将不会执行任何动作，且不再继续匹配下一节点，报文按正常转发流程处理。

l 如果某一节点没有配置任何 if-match 子句和 apply 子句，则所有报文都会通过该节点的过滤，但不会执行任何动作，且不再继续匹配下一节点，报文按正常转发流程处理。

1.2.2 应用本地策略路由

在应用本地策略路由时，只能引用一个策略。

表1-3 配置本地策略路由

操作 | 命令 | 说明
进入系统视图 | system-view | -
应用本地策略路由 | ip local policy-based-route policy-name | 必选 缺省情况下，没有应用本地策略路由

如果配置时策略 policy-name 不存在，命令可以配置成功，但只有当策略 policy-name 创建后，本地策略路由才真正生效。

1.2.3 应用接口策略路由

在应用接口策略路由时，一个接口只能引用一个策略。

表1-4 配置接口策略路由

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
应用接口策略路由 | ip policy-based-route policy-name | 必选 缺省情况下，没有应用接口策略路由

如果配置时策略 policy-name 不存在，命令可以配置成功，但只有当策略 policy-name 创建后，本地策略路由才真正生效。

1.2.4 与Track联动

策略路由通过与Track联动，增强了应用的灵活性和策略路由对网络环境的动态感知能力。策略路由可以在配置报文的下一跳、缺省下一跳时与Track项关联，通过Track项的状态来动态地决定策略的可用性。策略路由配置仅在关联的Track项状态为Positive或Invalid时生效。

关于策略路由与Track联动的详细介绍和相关配置请参考“可靠性配置指导”中的“Track配置”。


1.3 配置QoS策略方式的策略路由

配置策略路由功能需要完成以下两个配置步骤：

l 配置QoS策略：定义策略路由中匹配的报文规则以及重定向的路径

l 应用QoS策略：定义策略路由生效的范围

1.3.1 配置QoS策略

表1-5 配置QoS策略

操作 | 命令 | 说明
进入系统视图 | system-view | -
创建流分类并进入流分类视图 | traffic classifier tcl-name [ operator { and | or } ] | 必选
定义匹配报文的规则 | if-match match-criteria | 必选
退回系统视图 | quit | -
创建流行为并进入流行为视图 | traffic behavior behavior-name | 必选
配置重定向到下一跳的动作 | redirect next-hop { ipv4-add1 [ ipv4-add2 ] | ipv6-add1 [ interface-type interface-number ] [ ipv6-add2 [ interface-type interface-number ] ] } [ fail-action { discard | forward } ] | 必选
退回系统视图 | quit | -
创建QoS策略并进入QoS策略视图 | qos policy policy-name | 必选
将流分类与流行为进行关联，即对匹配流分类规则的报文采用流行为中的动作 | classifier tcl-name behavior behavior-name | 必选

在支持配置重定向下一跳失败的处理动作时，如果不配置处理动作，默认的处理动作是转发。

1.3.2 应用QoS策略

在配置策略路由功能时，用户可以通过下列方式应用QoS策略：

l 基于全局应用QoS策略：简称为全局策略，QoS策略对设备上的所有流量生效。

l 基于端口应用QoS策略：简称为端口策略，QoS策略对端口接收的流量生效。

l 基于VLAN应用QoS策略：简称为VLAN策略，QoS策略对VLAN内所有端口接收的流量生效。

用于策略路由的QoS策略只能应用到端口/VLAN/全局的入方向。

表1-6 基于全局应用策略

操作 | 命令 | 说明
进入系统视图 | system-view | -
应用全局策略 | qos apply policy policy-name global inbound | 必选

表1-7 基于端口应用策略

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
进入以太网端口视图或端口组视图 | 进入以太网端口视图 | interface interface-type interface-number | 二者必选其一 进入以太网端口视图后，下面进行的配置只在当前端口生效；进入端口组视图后，下面进行的配置将在端口组中的所有端口生效
 | 进入端口组视图 | port-group manual port-group-name
应用端口策略 |  | qos apply policy policy-name inbound | 必选

表1-8 基于VLAN应用策略

操作 | 命令 | 说明
进入系统视图 | system-view | -
应用VLAN策略到指定的VLAN | qos vlan-policy policy-name vlan vlan-id-list inbound | 必选

VLAN策略不能应用在动态VLAN上。例如，在运行GVRP协议的情况下，设备可能会动态创建VLAN，相应的VLAN策略不能应用在该动态VLAN上。


1.4 策略路由显示和维护

1.4.1 PBR方式策略路由显示和维护

在完成PBR方式策略路由的配置后，在任意视图下执行 display 命令可以显示配置策略路由后的运行情况，通过查看显示信息验证配置的效果。

在用户视图下，用户可以执行 reset 命令重置策略路由的统计信息。

表1-9 PBR方式策略路由显示和维护

操作 | 命令
显示系统和接口应用的所有策略路由的信息 | display ip policy-based-route [ | { begin | exclude | include } regular-expression ]
显示系统的策略路由的设置情况 | display ip policy-based-route setup { interface interface-type interface-number | local | policy-name } [ | { begin | exclude | include } regular-expression ]
显示已经配置的策略路由 | display policy-based-route [ policy-name ] [ | { begin | exclude | include } regular-expression ]

l 如果只添加一个节点而没有配置任何 if-match 子句和 apply 子句，则所有报文都匹配，但不执行动作，不再继续往下匹配。策略路由的统计数字将改变。

l 如果添加一个节点，只配置 if-match 子句，没有配置 apply 子句，则进行匹配，但不执行动作，不再继续往下匹配。策略路由的统计数字将改变。

l 如果添加一个节点，没有配置 if-match 子句，只配置 apply 子句，则所有报文都匹配，根据 permit/deny 执行相应的操作，不再继续往下匹配。策略路由的统计数字将改变。

l 当配置节点的匹配模式为 deny 时，如果报文满足该节点的所有 if-match 子句，不执行节点的 apply 子句，也不再继续往下匹配，数据包将走正常路由表转发，因此没有 deny 的调试信息以及相应的统计信息。

1.4.2 QoS策略方式策略路由显示和维护

在完成QoS策略方式策略路由的配置后，在任意视图下执行 display 命令可以显示策略路由的运行情况，通过查看显示信息验证配置的效果。

表1-10 QoS策略方式策略路由显示和维护

操作 | 命令
显示用户定义QoS策略的配置信息 | display traffic classifier user-defined [ tcl-name ] [ | { begin | exclude | include } regular-expression ]
显示指定端口或所有端口上策略的配置信息和运行情况 | display qos policy interface [ interface-type interface-number ] [ inbound | outbound ] [ | { begin | exclude | include } regular-expression ]
显示VLAN策略信息 | display qos vlan-policy { name policy-name | vlan vlan-id } [ slot slot-number ] [ inbound | outbound ] [ | { begin | exclude | include } regular-expression ]
显示全局策略信息 | display qos policy global [ slot slot-number ] [ inbound | outbound ] [ | { begin | exclude | include } regular-expression ]


1.5 策略路由典型配置举例

1.5.1 PBR方式本地策略路由典型配置举例

1. 组网需求

通过策略路由控制从Switch A发出的报文：

l 指定所有TCP报文的下一跳为1.1.2.2；

l 其它报文仍然按照查找路由表的方式进行转发。

其中，Switch A分别与Switch B和Switch C直连。Switch B与Switch C路由不可达。

2. 组网图

图1-1 基于报文协议类型的本地策略路由的配置举例组网图

3. 配置步骤

(1) 配置Switch A

# 定义访问控制列表，ACL 3101匹配TCP报文。

<SwitchA> system-view

[SwitchA] acl number 3101

[SwitchA-acl-adv-3101] rule permit tcp

[SwitchA-acl-adv-3101] quit

# 定义5号节点，指定所有TCP报文的下一跳为1.1.2.2。

[SwitchA] policy-based-route aaa permit node 5

[SwitchA-pbr-aaa-5] if-match acl 3101

[SwitchA-pbr-aaa-5] apply ip-address next-hop 1.1.2.2

[SwitchA-pbr-aaa-5] quit

# 在Switch A上应用本地策略路由。

[SwitchA] ip local policy-based-route aaa

# 配置接口Vlan-interface10和Vlan-interface20的IP地址。

[SwitchA] interface vlan-interface 10

[SwitchA-Vlan-interface10] ip address 1.1.2.1 255.255.255.0

[SwitchA-Vlan-interface10] quit

[SwitchA] interface vlan-interface 20

[SwitchA-Vlan-interface20] ip address 1.1.3.1 255.255.255.0

(2) 配置Switch B

# 配置接口Vlan-interface10的IP地址。

<SwitchB> system-view

[SwitchB] interface vlan-interface 10

[SwitchB-Vlan-interface10] ip address 1.1.2.2 255.255.255.0

[SwitchB-Vlan-interface10] quit

(3) 配置Switch C

# 配置接口Vlan-interface20的IP地址。

<SwitchC> system-view

[SwitchC] interface vlan-interface 20

[SwitchC-Vlan-interface20] ip address 1.1.3.2 255.255.255.0

[SwitchC-Vlan-interface20] quit

(4) 验证配置结果

# 从Switch A上Telnet Switch B（1.1.2.2/24），结果成功。

# 从Switch A上Telnet Switch C（1.1.3.2/24），结果失败。

<SwitchA> telnet 1.1.3.2

Trying 1.1.3.2 ...

Press CTRL+K to abort

Can't connect to the remote host!

# 从Switch A上ping Switch C（1.1.3.2/24），结果成功。

<SwitchA> ping 1.1.3.2

PING 1.1.3.2: 56 data bytes, press CTRL_C to break

Reply from 1.1.3.2: bytes=56 Sequence=1 ttl=255 time=2 ms

Reply from 1.1.3.2: bytes=56 Sequence=2 ttl=255 time=1 ms

Reply from 1.1.3.2: bytes=56 Sequence=3 ttl=255 time=1 ms

Reply from 1.1.3.2: bytes=56 Sequence=4 ttl=255 time=1 ms

Reply from 1.1.3.2: bytes=56 Sequence=5 ttl=255 time=1 ms

--- 1.1.3.2 ping statistics ---

5 packet(s) transmitted

5 packet(s) received

0.00% packet loss

round-trip min/avg/max = 1/1/2 ms

由于Telnet使用的是TCP协议，ping使用的是ICMP协议，所以由以上结果可证明：Switch A发出的TCP报文的下一跳为1.1.2.2，接口Vlan-interface20不发送TCP报文，但可以发送非TCP报文，策略路由设置成功。

1.5.2 PBR方式接口策略路由典型配置举例

1. 组网需求

通过策略路由控制从Switch A的接口Vlan-interface11接收的报文：

l 指定所有TCP报文的下一跳为1.1.2.2；

l 其它报文仍然按照查找路由表的方式进行转发。

2. 组网图

图1-2 基于报文协议类型的接口策略路由的配置举例组网图

3. 配置步骤

本例中采用静态路由保证各设备之间路由可达。

(1) 配置Switch A

# 定义访问控制列表，ACL 3101匹配TCP报文。

<SwitchA> system-view

[SwitchA] acl number 3101

[SwitchA-acl-adv-3101] rule permit tcp

[SwitchA-acl-adv-3101] quit

# 定义5号节点，指定所有TCP报文的下一跳为1.1.2.2。

[SwitchA] policy-based-route aaa permit node 5

[SwitchA-pbr-aaa-5] if-match acl 3101

[SwitchA-pbr-aaa-5] apply ip-address next-hop 1.1.2.2

[SwitchA-pbr-aaa-5] quit

# 在接口Vlan-interface11上应用接口策略路由，处理此接口接收的报文。

[SwitchA] interface vlan-interface 11

[SwitchA-Vlan-interface11] ip address 10.110.0.10 255.255.255.0

[SwitchA-Vlan-interface11] ip policy-based-route aaa

[SwitchA-Vlan-interface11] quit

# 配置接口Vlan-interface10和Vlan-interface20的IP地址。

[SwitchA] interface vlan-interface 10

[SwitchA-Vlan-interface10] ip address 1.1.2.1 255.255.255.0

[SwitchA-Vlan-interface10] quit

[SwitchA] interface vlan-interface 20

[SwitchA-Vlan-interface20] ip address 1.1.3.1 255.255.255.0

(2) 配置Switch B

# 配置到网段10.110.0.0/24的静态路由。

<SwitchB> system-view

[SwitchB] ip route-static 10.110.0.0 24 1.1.2.1

# 配置接口Vlan-interface10的IP地址。

[SwitchB] interface vlan-interface 10

[SwitchB-Vlan-interface10] ip address 1.1.2.2 255.255.255.0

[SwitchB-Vlan-interface10] quit

(3) 配置Switch C

# 配置到网段10.110.0.0/24的静态路由。

<SwitchC> system-view

[SwitchC] ip route-static 10.110.0.0 24 1.1.3.1

# 配置接口Vlan-interface20的IP地址。

[SwitchC] interface vlan-interface 20

[SwitchC-Vlan-interface20] ip address 1.1.3.2 255.255.255.0

[SwitchC-Vlan-interface20] quit

(4) 验证配置结果

将Host A的IP地址配置为10.110.0.20/24，网关地址配置为10.110.0.10。

从Host A上Telnet与Switch A直连的Switch B（telnet 1.1.2.2），结果成功。

从Host A上Telnet与Switch A直连的Switch C（telnet 1.1.3.2），结果失败。

从Host A上ping与Switch A直连的Switch C（ping 1.1.3.2），结果成功。

由于Telnet使用的是TCP协议，ping使用的是ICMP协议，所以由以上结果可证明：从Switch A的接口Vlan-interface11接收的TCP报文的下一跳为1.1.2.2，接口Vlan-interface20不转发TCP报文，但可以转发非TCP报文，策略路由设置成功。

1.5.3 QoS策略方式IPv4策略路由配置举例

1. 组网需求

控制从设备Switch A的Ethernet1/0/1端口接收的所有报文，都转发到下一跳202.1.1.2。

2. 组网图

图1-3 配置通过QoS策略实现IPv4策略路由组网图

3. 配置步骤

# 创建IPv4 ACL，匹配规则为所有报文。

<SwitchA> system-view

[SwitchA] acl number 2000

[SwitchA-acl-basic-2000] rule 0 permit source any

[SwitchA-acl-basic-2000] quit

# 创建流分类，并配置流分类规则为匹配IPv4 ACL 2000的报文。

[SwitchA] traffic classifier a

[SwitchA-classifier-a] if-match acl 2000

[SwitchA-classifier-a] quit

# 创建流行为，并配置动作为将报文重定向到下一跳202.1.1.2。

[SwitchA] traffic behavior a

[SwitchA-behavior-a] redirect next-hop 202.1.1.2

[SwitchA-behavior-a] quit

# 创建QoS策略，并将流分类与流行为进行关联。

[SwitchA] qos policy a

[SwitchA-qospolicy-a] classifier a behavior a

[SwitchA-qospolicy-a] quit

# 将QoS策略应用到端口Ethernet1/0/1。

[SwitchA] interface Ethernet 1/0/1

[SwitchA-Ethernet1/0/1] qos apply policy a inbound

4. 验证结果

完成上面的配置后，当设备Switch A从Ethernet1/0/1端口收到目的IP地址为201.1.1.2的报文时，此报文会被发送到Switch C，而不会发送到Switch B，说明策略路由应用成功。

1.5.4 QoS策略方式IPv6策略路由配置举例

1. 组网需求

控制从设备Switch A的Ethernet1/0/1端口接收的所有报文，都转发到下一跳202::2。

2. 组网图

图1-4 配置通过QoS策略实现IPv6策略路由组网图

3. 配置步骤

# 创建IPv6 ACL，匹配规则为所有报文。

<SwitchA> system-view

[SwitchA] acl ipv6 number 2000

[SwitchA-acl6-basic-2000] rule 0 permit source any

[SwitchA-acl6-basic-2000] quit

#创建流分类，并配置流分类规则为匹配IPv6 ACL 2000的报文。

[SwitchA] traffic classifier a

[SwitchA-classifier-a] if-match acl ipv6 2000

[SwitchA-classifier-a] quit

# 创建流分类，并配置动作为将流量重定向到下一跳202::2。

[SwitchA] traffic behavior a

[SwitchA-behavior-a] redirect next-hop 202::2

[SwitchA-behavior-a] quit

# 创建QoS策略，并将流分类与流行为进行关联。

[SwitchA] qos policy a

[SwitchA-qospolicy-a] classifier a behavior a

[SwitchA-qospolicy-a] quit

# 将QoS策略应用到端口Ethernet1/0/1。

[SwitchA] interface Ethernet 1/0/1

[SwitchA-Ethernet1/0/1] qos apply policy a inbound

l 验证结果

完成上面的配置后，当设备Switch A从Ethernet1/0/1端口收到目的IP地址为201::2的报文时，此报文会被发送到Switch C，而不会发送到Switch B，说明策略路由应用成功。


1 MCE配置

：

l 本章所指的路由器代表了一般意义下的路由器，以及运行了路由协议的三层交换机。为提高可读性，在手册的描述中将不另行说明。

l 本章只涉及MCE的介绍和配置，涉及到的各种路由协议的介绍和配置请参见“三层技术-IP路由配置指导”中的相关内容。

l 本章中提到的三层以太网接口是指工作模式被配置成三层模式的以太网端口，有关以太网端口工作模式切换的操作，请参见“二层技术-以太网交换配置指导”中的“以太网端口配置”部分。

相关链接

  • 1.1 MCE简介
  • 1.2 MCE的路由信息交换
  • 1.3 MCE配置
  • 1.4 MCE显示和维护
  • 1.5 MCE典型配置举例
父主题： 14-MCE配置


1.1 MCE简介

1.1.1 MPLS L3VPN简介

MPLS L3VPN是服务提供商VPN解决方案中一种基于PE的L3VPN技术，它使用BGP在服务提供商骨干网上发布VPN路由，使用MPLS在服务提供商骨干网上转发VPN报文。

MPLS L3VPN组网方式灵活、可扩展性好，并能够方便地支持MPLS QoS和MPLS TE，因此得到越来越多的应用。

MPLS L3VPN模型由三部分组成：CE、PE和P。

l CE（Customer Edge）设备：用户网络边缘设备，有接口直接与SP（Service Provider，服务提供商）相连。CE可以是路由器或交换机，也可以是一台主机。CE“感知”不到VPN的存在，也不需要必须支持MPLS。

l PE（Provider Edge）路由器：服务提供商边缘路由器，是服务提供商网络的边缘设备，与用户的CE直接相连。在MPLS网络中，对VPN的所有处理都发生在PE上。

l P（Provider）路由器：服务提供商网络中的骨干路由器，不与CE直接相连。P设备只需要具备基本MPLS转发能力。

图1-1 是一个MPLS L3VPN组网方案的示意图。

图1-1 MPLS L3VPN组网

CE和PE的划分主要是根据SP与用户的管理范围，CE和PE是两者管理范围的边界。

CE设备通常是一台路由器，当CE与直接相连的PE建立邻接关系后，CE把本站点的VPN路由发布给PE，并从PE学到远端VPN的路由。CE与PE之间使用BGP/IGP交换路由信息，也可以使用静态路由。

PE从CE学到CE本地的VPN路由信息后，通过BGP与其它PE交换VPN路由信息。PE路由器只维护与它直接相连的VPN的路由信息，不维护服务提供商网络中的所有VPN路由。

P路由器只维护到PE的路由，不需要了解任何VPN路由信息。

当在MPLS骨干网上传输VPN流量时，入口PE做为Ingress LSR（Label Switch Router，标签交换路由器），出口PE做为Egress LSR，P路由器则做为Transit LSR。

1.1.2 MPLS L3VPN的基本概念

1. 站点

在介绍VPN时经常会提到“站点”，站点（Site）的含义可以从下述几个方面理解：

l 站点是指相互之间具备IP连通性的一组IP系统，并且，这组IP系统的IP连通性不需通过服务提供商网络实现；

l 站点的划分是根据设备的拓扑关系，而不是地理位置，尽管在大多数情况下一个站点中的设备地理位置相邻；

l 一个站点中的设备可以属于多个VPN，换言之，一个站点可以属于多个VPN；

l 站点通过CE连接到服务提供商网络，一个站点可以包含多个CE，但一个CE只属于一个站点。

对于多个连接到同一服务提供商网络的站点，通过制定策略，可以将它们划分为不同的集合（set），只有属于相同集合的站点之间才能通过服务提供商网络互访，这种集合就是VPN。

2. 地址空间重叠

VPN是一种私有网络，不同的VPN独立管理自己使用的地址范围，也称为地址空间（Address Space）。

不同VPN的地址空间可能会在一定范围内重合，比如，VPN 1和VPN 2都使用了10.110.10.0/24网段的地址，这就发生了地址空间重叠（Overlapping Address Spaces）。

3. VPN实例

在MPLS VPN中，不同VPN之间的路由隔离通过VPN实例（VPN-instance）实现。

PE为每个直接相连的站点建立并维护专门的VPN实例。VPN实例中包含对应站点的VPN成员关系和路由规则。如果一个站点中的用户同时属于多个VPN，则该站点的VPN实例中将包括所有这些VPN的信息。

为保证VPN数据的独立性和安全性，PE上每个VPN实例都有相对独立的路由表和LFIB（Label Forwarding Information Base，标签转发表）。

具体来说，VPN实例中的信息包括：标签转发表、IP路由表、与VPN实例绑定的接口以及VPN实例的管理信息。VPN实例的管理信息包括RD（Route Distinguisher，路由标识符）、路由过滤策略、成员接口列表等。

4. VPN-IPv4地址

传统BGP无法正确处理地址空间重叠的VPN的路由。假设VPN 1和VPN 2都使用了10.110.10.0/24网段的地址，并各自发布了一条去往此网段的路由，BGP将只会选择其中一条路由，从而导致去往另一个VPN的路由丢失。

PE路由器之间使用MP-BGP来发布VPN路由，并使用VPN-IPv4地址族来解决上述问题。

VPN-IPv4地址共有12个字节，包括8字节的RD和4字节的IPv4地址前缀，如 图1-2 所示。

图1-2 VPN-IPv4地址结构

PE从CE接收到普通IPv4路由后，需要将这些私网VPN路由发布给对端PE。私网路由的独立性是通过为这些路由附加RD实现的。

SP可以独立地分配RD，但必须保证RD的全局唯一性。这样，即使来自不同服务提供商的VPN使用了同样的IPv4地址空间，PE路由器也可以向各VPN发布不同的路由。

建议为PE上每个VPN实例配置专门的RD，以保证到达同一CE的路由都使用相同的RD。RD为0的VPN-IPv4地址相当于全局唯一的IPv4地址。

RD的作用是添加到一个特定的IPv4前缀，使之成为全局唯一的VPN IPv4前缀。

RD或者是与自治系统号（ASN）相关的，在这种情况下，RD是由一个自治系统号和一个任意的数组成；或者是与IP地址相关的，在这种情况下，RD是由一个IP地址和一个任意的数组成。

RD有三种格式，通过2字节的Type字段区分：

l Type为0时，Administrator子字段占2字节，Assigned number子字段占4字节，格式为：16bits自治系统号:32bits用户自定义数字。例如：100:1

l Type为1时，Administrator子字段占4字节，Assigned number子字段占2字节，格式为：32bitsIPv4地址:16bits用户自定义数字。例如：172.1.1.1:1

l Type为2时，Administrator子字段占4字节，Assigned number子字段占2字节，格式为：32bits自治系统号：16bits用户自定义数字，其中的自治系统号最小值为65536。例如：65536:1

为保证RD的全局唯一性，建议不要将Administrator子字段的值设置为私有AS号或私有IP地址。

5. VPN Target属性

MPLS L3VPN使用BGP扩展团体属性——VPN Target（也称为Route Target）来控制VPN路由信息的发布。

PE路由器上的VPN实例有两类VPN Target属性：

l Export Target属性：在本地PE将从与自己直接相连的站点学到的VPN-IPv4路由发布给其它PE之前，为这些路由设置Export Target属性；

l Import Target属性：PE在接收到其它PE路由器发布的VPN-IPv4路由时，检查其Export Target属性，只有当此属性与PE上VPN实例的Import Target属性匹配时，才把路由加入到相应的VPN路由表中。

也就是说，VPN Target属性定义了一条VPN-IPv4路由可以为哪些站点所接收，PE路由器可以接收哪些站点发送来的路由。

与RD类似，VPN Target也有三种格式：

l 16bits自治系统号:32bits用户自定义数字，例如：100:1。

l 32bits IPv4地址:16bits用户自定义数字，例如：172.1.1.1:1。

l 32bits自治系统号：16bits用户自定义数字，其中的自治系统号最小值为65536。例如：65536:1。

1.1.3 MCE简介

BGP/MPLS VPN以隧道的方式解决了在公网中传送私网数据的问题，但传统的BGP/MPLS VPN架构要求每个VPN实例单独使用一个CE与PE相连，如 图1-1 所示。

随着用户业务的不断细化和安全需求的提高，很多情况下一个私有网络内的用户需要划分成多个VPN，不同VPN用户间的业务需要完全隔离。此时，为每个VPN单独配置一台CE将加大用户的设备开支和维护成本；而多个VPN共用一台CE，使用同一个路由表项，又无法保证数据的安全性。

使用本系列交换机提供的MCE（Multi-VPN-Instance CE，具备多VPN实例功能的CE）功能，可以有效解决多VPN网络带来的用户数据安全与网络成本之间的矛盾，它使用CE设备本身的VLAN接口编号与网络内的VPN进行绑定，并为每个VPN创建和维护独立的路由转发表（Multi-VRF）。这样不但能够隔离私网内不同VPN的报文转发路径，而且通过与PE间的配合，也能够将每个VPN的路由正确发布至对端PE，保证VPN报文在公网内的传输。

1.1.4 MCE工作原理

下面以 图1-3 为例介绍MCE对多个VPN的路由表项进行维护，并与PE交互VPN路由的过程。

图1-3 MCE工作原理示意图

如 图1-3 所示，左侧私网内有两个VPN站点：站点1和站点2，分别通过MCE设备接入MPLS骨干网，其中VPN1和VPN2的用户，需要分别与远端站点2内的VPN1用户和站点1内的VPN2用户建立VPN隧道。

通过配置MCE功能，可以在MCE设备上为VPN1和VPN2创建不同的VPN实例，为其维护各自独立的路由表，并使用Vlan-interface2接口与VPN1进行绑定、Vlan-interface3与VPN2进行绑定。在接收路由信息时，MCE设备根据接收接口的编号，即可判断该路由信息的来源，并将其维护到对应VPN实例的路由转发表中。

同时，MCE需要通过不同的路由协议或进程来向PE发布VPN1和VPN2的路由，以便PE能够识别并分别维护不同VPN的路由。因此，MCE需要通过两个接口连接到PE，并创建两个VPN实例与两个接口分别绑定。在向PE发布VPN路由时，将不同的路由协议或进程与VPN实例绑定，并在不同的协议或进程中分别引入VPN1和VPN2内的路由。

通过上述过程，MCE即可将两个VPN内的路由信息分别发布到PE设备。

1.1.5 在隧道环境中使用MCE

除MPLS L3VPN外，目前能够提供VPN功能的还有隧道技术。本交换机提供的MCE功能在通过隧道实现VPN的组网中，也可以进行应用。具体的实现方式如 图1-4 所示：

图1-4 在隧道组网中使用MCE的组网方式一

在两台MCE设备间建立多条隧道，并将隧道接口与指定的VPN实例进行绑定，可以使VPN实例的路由信息和数据通过绑定的隧道接口传输至对端设备，对端MCE设备根据接收路由的隧道接口来判断该路由所属的VPN实例，并将其发布给相应的站点。例如在 图1-4 中将隧道1与VPN1实例绑定，便可以使MCE设备在该隧道上传输VPN1的路由信息和数据。

另外一种隧道环境的组网方式是将MCE设备通过隧道与远端多个CE进行连接，该方式中CE设备只需按正常方式接收和发布路由，MCE设备根据隧道接口与VPN的绑定关系来发送和接收VPN路由信息。组网示意如 图1-5 所示：

图1-5 在隧道组网中使用MCE的组网方式二

l 在隧道环境中使用MCE时，MCE设备可以直接与对端MCE设备（或多个CE设备）交互VPN路由信息，交互方式与在MPLS L3VPN环境下MCE与PE的交互方式相同，请参见 1.2.2 MCE与PE间的路由交换 。

l 目前支持MCE功能的隧道类型有GRE隧道、IPv4 over IPv4隧道、IPv4 over IPv6隧道。

l 关于隧道种类的介绍和相关配置，请参见“三层技术-IP业务配置指导”中的“隧道配置”部分。


1.2 MCE的路由信息交换

通过接口与VPN实例的绑定，MCE与PE已经能够正确判断报文的来源，参考对应VPN实例的路由信息对报文进行转发。下面介绍一下MCE设备如何将多个VPN实例的私网路由信息准确传播到PE设备。

1.2.1 MCE与私网间的路由交换

MCE可以使用如下的路由协议与站点交换VPN私网路由：

l 静态路由

l RIP

l OSPF

l IS-IS

l EBGP

下文只介绍各路由协议与MCE功能配合的配置思路，有关路由协议的基本原理，请参见“三层技术-IP路由配置指导”中的相关介绍。

1. 使用静态路由

MCE可以通过静态路由与站点连接。传统CE配置的静态路由对全局生效，无法解决多VPN间的地址重叠问题。本系列交换机提供的MCE功能可以将静态路由与VPN实例相绑定，将各VPN之间的静态路由进行隔离。

2. 使用RIP

本系列交换机提供了将RIP进程与VPN实例绑定的方法，通过在MCE上配置RIP进程与VPN实例的绑定关系，使不同VPN内的私网路由可以通过不同的RIP进程在站点和MCE间进行交互，保证了私网路由的隔离和安全。

3. 使用OSPF

本系列交换机提供了将OSPF进程与VPN实例绑定的功能，用来在MCE上隔离不同VPN的路由。

需要注意的是：

在VPN实例所绑定的OSPF进程中，将不会使用在系统视图下配置的公网Router ID，需要用户在启动进程时手工配置Router ID。

一个OSPF进程只能绑定一个VPN实例，但一个VPN实例可以使用多个OSPF进程为其传播私网路由。同一VPN实例内的OSPF进程应配置有相同的域ID，以保证路由发布的正确性。

对于标准的BGP/OSPF互相引用功能，当在MCE设备上配置引入BGP路由到OSPF中时，该路由的原OSPF属性将无法恢复，造成该路由与从其他域引入的路由无法区分。为了区分原属于不同OSPF域的路由，需要在远端PE将OSPF路由引入到BGP时携带标识域的属性，即OSPF的域ID（Domain ID）。OSPF进程的域ID包含在此进程生成的路由中，在将OSPF路由引入BGP中时，域ID被附加到BGP VPN路由上，作为BGP的扩展团体属性传递。

在某些情况下，同一个VPN可能会连接多个MCE设备，当其中一个MCE将从BGP学到的路由向VPN内发布时，可能会被另外的MCE设备学到，造成路由环。为避免路由环路，可以在MCE上为不同的VPN实例配置Route Tag，建议在多个MCE上为同一个VPN配置相同的Route Tag。

4. 使用IS-IS

MCE和站点之间使用IS-IS传播私网路由的方式与使用OSPF时类似，将进程与VPN实例进行绑定。一个IS-IS进程只能属于一个VPN实例。

5. 使用EBGP

当MCE和站点之间使用EBGP传播私网路由时，需要在MCE上为每个VPN实例配置EBGP对等体，并引入相应VPN内的IGP路由信息。由于一般情况下各个站点处于不同的AS内，因此应使用EBGP进行路由的传播。

(1) 配置EBGP引入各站点内的IGP路由

为正确的将私网路由发布到PE，需要MCE首先将与其直连站点内的IGP路由引入到自己的BGP路由表中。

(2) 为每个VPN实例配置对等体组

为准确地与各站点交换路由信息，可以在BGP的IPv4地址族视图下，为每个VPN实例配置对等体组，并指定对等体组的AS编号。

(3) 通过Filter-policy对路由进行过滤

为正确地将路由信息传播到站点和PE设备，在指定对等体后，还需要使用Filter-policy对接收/发布的路由进行过滤。

1.2.2 MCE与PE间的路由交换

由于在MCE设备上已经将路由信息与VPN实例进行了绑定，因此，只需要在MCE与PE之间将接口与VPN实例进行绑定，再进行简单的路由配置，便可以将MCE的VPN路由表项引入到MCE-PE间的路由协议中，实现私网VPN路由信息的传播。

MCE与PE之间可以使用以下的路由协议进行路由交换：

l 静态路由

l RIP

l OSPF

l IS-IS

l EBGP

各路由协议的配置方法及引入路由的操作，请参考“三层技术-IP路由配置指导”中的介绍。


1.3 MCE配置

1.3.1 配置VPN实例

VPN实例用于将VPN私网路由与公网路由隔离，在所有MCE组网方案中，都需要配置VPN实例。

VPN实例不仅可以将VPN私网路由与公网路由隔离，不同VPN实例的路由之间也是相互隔离的，这一特点使得VPN实例的使用不限于MCE。

1. 创建VPN实例

VPN实例在实现中与站点关联。VPN实例不是直接对应于VPN，一个VPN实例综合了和它所对应站点的VPN成员关系和路由规则。

一个VPN实例只有配置了RD后才生效。在配置RD之前，除了描述信息外，不能配置VPN实例的其他任何参数。

描述信息用于描述VPN实例，可以用来记录VPN实例与某个VPN的关系等信息。

表1-1 创建VPN实例

操作 | 命令 | 说明
进入系统视图 | system-view | -
创建VPN实例，并进入VPN实例视图 | ip vpn-instance vpn-instance-name | 必选
配置VPN实例的RD | route-distinguisher route-distinguisher | 必选
配置VPN实例的描述信息 | description text | 可选

为方便记忆和管理，建议用户在MCE设备和PE设备上为同一个VPN实例配置相同的RD。

2. 配置VPN实例与接口关联

l 在MPLS L3VPN环境中，需要将VPN实例与连接PE设备的接口进行关联。

l 在隧道环境中，需要将VPN实例与连接对端MCE设备（或CE设备）的隧道接口进行关联。

l 本系列交换机还支持将管理用以太网口与VPN实例进行绑定，使管理用以太网口上的IP地址仅参与VPN实例内部的路由计算。

VPN实例配置完成后，还需要与连接各个VPN 站点的接口进行关联。

表1-2 配置VPN实例与接口关联

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入要关联接口的VLAN接口视图或三层以太网接口视图 | interface interface-type interface-number | -
将当前接口与VPN实例关联 | ip binding vpn-instance vpn-instance-name | 必选 缺省情况下，接口不关联任何VPN实例

执行 ip binding vpn-instance 命令将删除接口上已经配置的IP地址，因此需要重新配置接口的IP地址。

3. 配置VPN实例的路由相关属性

MCE设备对VPN路由的发布控制过程如下：

l 当从VPN 站点内学习到的一条VPN路由引入BGP时，BGP为它关联一个VPN Target扩展团体属性列表，通常这个列表是与该站点相关联的VPN实例的输出路由属性列表。

l VPN实例根据VPN Target中 import-extcommunity 决定可被接受并引入此VPN实例的路由。

l VPN实例根据VPN Target中的 export-extcommunity 对向外发布的路由进行VPN Target属性的修改。

表1-3 配置VPN实例的路由相关属性

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入VPN实例视图 | ip vpn-instance vpn-instance-name | 必选
进入IPv4 VPN视图 | ipv4-family | 可选
将当前VPN实例与一个或多个VPN Target相关联 | vpn-target vpn-target&<1-8> [ both | export-extcommunity | import-extcommunity ] | 必选
配置VPN实例支持的最大路由数 | routing-table limit number { warn-threshold | simply-alert } | 可选 缺省情况下，没有配置当前VPN实例支持的最多路由数
对当前VPN实例应用入方向路由策略 | import route-policy route-policy | 可选 缺省情况下，允许所有VPN Target属性匹配的路由通过
对当前VPN实例应用出方向路由策略 | export route-policy route-policy | 可选 缺省情况下，允许所有VPN Target属性匹配的路由通过

l 只有当MCE与PE间运行BGP时，VPN Target属性才会随路由发布到PE，否则配置该属性没有意义。

l 既可以在VPN实例视图下，也可以在IPv4 VPN视图下，配置IPv4 VPN的路由相关属性。如果同时在两个视图下配置了路由相关属性，则IPv4 VPN采用IPv4 VPN视图下配置的路由相关属性。

l 命令 vpn-target 最多可以配置8个VPN Target；一个VPN实例最多可以配置64个VPN Target。

l 可以配置一个VPN实例可以支持的最大路由数，以防止PE路由器的入接口有过多的路由。

l 为VPN实例配置路由策略之前必须已经创建了路由策略，否则将采用缺省路由策略。

1.3.2 配置MCE的路由交换

MCE可以看作一种通过路由隔离实现业务隔离的组网方案。配置MCE的关键为：

l 配置MCE与站点之间的路由交换

l 配置MCE与PE之间的路由交换

在MCE组网方案中，路由计算时关闭PE路由上的路由环路检测功能，防止路由丢失；同时禁止各路由协议互操作功能，节省系统资源。

本节中以MPLS L3VPN组网环境为例对MCE上的配置进行介绍，在隧道环境中，MCE设备与对端MCE设备（CE设备）之间的路由交换配置与MPLS L3VPN环境中MCE与PE间的路由交换配置相同。

1. 配置MCE使用静态路由进行路由交换

MCE可以通过静态路由与站点和PE间交换路由信息。传统CE配置的静态路由对全局生效，无法解决多VPN间的地址重叠问题。本交换机提供的MCE功能可以将静态路由与VPN实例相绑定，将各VPN之间的静态路由进行隔离。

表1-4 配置MCE使用静态路由进行路由交换

操作 | 命令 | 说明
进入系统视图 | system-view | -
为指定VPN实例配置静态路由 | ip route-static vpn-instance s-vpn-instance-name&<1-6> dest-address { mask | mask-length } { gateway-address [ public ] | interface-type interface-number [ gateway-address ] | vpn-instance d-vpn-instance-name gateway-address } [ preference preference-value ] [ tag tag-value ] [ description description-text ] | 必选 缺省情况下，静态路由的优先级 preference 为60，静态路由 tag 值为0，未配置描述信息 一般情况下，使用第一条命令向站点和PE发布某个VPN实例的静态路由，如果用户想发布全局的静态路由信息，可以使用第二条命令
 | ip route-static dest-address { mask | mask-length } { gateway-address | interface-type interface-number [ gateway-address ] | vpn-instance d-vpn-instance-name gateway-address } [ preference preference-value ] [ tag tag-value ] [ description description-text ]
配置静态路由的缺省优先级 | ip route-static default-preference default-preference-value | 可选 缺省情况下，静态路由的缺省优先级为60

2. 配置MCE使用RIP进行路由交换

一个RIP进程只能绑定一个VPN实例。如果在启动RIP进程时不绑定到VPN实例，则该进程属于公网进程。通过在MCE和站点间配置相同的绑定关系，使不同VPN内的私网路由可以通过不同的RIP进程在站点和MCE间进行交互，保证了私网路由的隔离和安全。

表1-5 配置MCE使用RIP进行路由交换

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入RIP视图，并将RIP进程与VPN实例进行绑定 | rip [ process-id ] vpn-instance vpn-instance-name | 必选
分别引入连接PE和站点端其它协议的路由 | import-route protocol [ process-id ] [ allow-ibgp ] [ cost cost | route-policy route-policy-name | tag tag ] * | 必选 缺省情况下，RIP未引入其它路由 l 如果当前配置的是MCE与站点间的RIP协议，则这里引入的路由应来自于MCE与PE间传播该VPN的路由时所使用的路由协议进程 l 如果当前配置的是MCE与PE间的RIP协议，则这里引入的路由应来自于MCE与站点间传播该VPN的路由时所使用的路由协议进程
配置引入路由的缺省度量值 | default cost value | 可选 缺省情况下，引入路由的缺省度量值为0

配置RIP实例后，需要启动RIP，具体配置与普通的RIP相同，有关RIP协议的配置，请参见“三层技术-IP路由配置指导”中的“RIP配置”。

3. 配置MCE使用OSPF进行路由交换

一个OSPF进程只能属于一个VPN实例。如果在启动OSPF进程时不绑定到VPN实例，则该进程属于公网进程。

表1-6 配置MCE使用OSPF进行路由交换

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入OSPF视图，并将OSPF进程与VPN实例进行绑定 | ospf [ process-id | router-id router-id | vpn-instance vpn-instance-name ] * | 必选
关闭OSPF实例的路由环路检测功能 | vpn-instance-capability simple | 必选 缺省情况下，OSPF实例的路由环路检测功能处于开启状态 需要在MCE上通过本命令关闭OSPF实例的路由环路检测功能。否则，MCE不会接收PE发送过来的OSPF路由，导致路由丢失
配置OSPF域标识符 | domain-id domain-id [ secondary ] | 可选 缺省情况下，OSPF域标识符为0 该配置在MCE上进行，站点上配置普通OSPF即可 该命令只需要在与站点交互路由的OSPF进程下配置
分别引入PE和站点端其它协议的路由 | import-route protocol [ process-id | allow-ibgp ] [ cost cost | type type | tag tag | route-policy route-policy-name ] * | 必选 缺省情况下，没有引入其他协议的路由信息 l 如果当前配置的是MCE与站点间的OSPF协议，则这里引入的路由应来自于MCE与PE间传播该VPN的路由时所使用的路由协议进程 l 如果当前配置的是MCE与PE间的OSPF协议，则这里引入的路由应来自于MCE与站点间传播该VPN的路由时所使用的路由协议进程
配置对引入的路由进行过滤 | filter-policy { acl-number | ip-prefix ip-prefix-name } export [ protocol [ process-id ] ] | 可选 缺省情况下，没有对引入的路由信息进行过滤
配置引入外部路由时的参数缺省值（开销、路由数量、标记、类型）（该配置仅连接PE端使用） | default { cost cost | limit limit | tag tag | type type } * | 可选 缺省情况下，OSPF引入外部路由的度量值为1，单位时间内引入外部路由数量的上限为1000，外部路由标记值为1，引入的外部路由类型为Type2
配置OSPF扩展团体属性的类型编码 | ext-community-type { domain-id type-code1 | router-id type-code2 | route-type type-code3 } | 可选 缺省情况下，OSPF扩展团体属性Domain ID的类型编码是0x0005，Router ID的类型编码是0x0107，Route Type的类型编码是0x0306 该命令仅在需要修改Domain ID的类型编码时需要配置

l VPN实例绑定的OSPF进程中不使用系统视图下配置的公网Router ID，因此用户需要在启动进程时手工配置Router ID。同一VPN的所有OSPF进程应配置相同的域ID，以保证路由发布的正确性。

l 一个OSPF进程只能属于一个VPN实例，但一个VPN实例可以使用多个OSPF进程为其传播私网路由。同一VPN实例内的OSPF进程应配置有相同的域ID，以保证路由发布的正确性。

l 配置OSPF实例后，需要启动OSPF，具体配置与普通的OSPF相同。有关OSPF协议的配置，请参见“三层技术-IP路由配置指导”中的“OSPF配置”。

4. 配置MCE使用IS-IS进行路由交换

一个IS-IS进程只能属于一个VPN实例。如果在启动IS-IS进程时不绑定到VPN实例，则该进程属于公网进程。

表1-7 配置MCE使用IS-IS进行路由交换

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入IS-IS视图 | isis [ process-id ] vpn-instance vpn-instance-name | 必选
分别引入PE和站点端其它协议的路由 | import-route { isis [ process-id ] | ospf [ process-id ] | rip [ process-id ] | bgp [ allow-ibgp ] | direct | static } [ cost cost | cost-type { external | internal } | [ level-1 | level-1-2 | level-2 ] | route-policy route-policy-name | tag tag ] * | 可选 缺省情况下，IS-IS不引入其它协议的路由信息 如果 import-route 命令中不指定引入的级别，则默认为引入路由到Level-2路由表中 l 如果当前配置的是MCE与站点间的IS-IS协议，则这里引入的路由应来自于MCE与PE间传播该VPN的路由时所使用的路由协议进程 l 如果当前配置的是MCE与PE间的IS-IS协议，则这里引入的路由应来自于MCE与站点间传播该VPN的路由时所使用的路由协议进程
对引入的路由进行过滤（该配置仅连接PE端使用） | filter-policy { acl-number | ip-prefix ip-prefix-name | route-policy route-policy-name } export [ isis process-id | ospf process-id | rip process-id | bgp | direct | static ] | 可选 缺省情况下，IS-IS不对引入的路由信息进行过滤

配置IS-IS实例后，需要启动IS-IS，具体配置与普通的IS-IS相同。有关IS-IS协议的配置，请参见“三层技术-IP路由配置指导”中的“IS-IS配置”。

5. 配置MCE使用EBGP进行路由交换

在MCE与PE间使用EBGP交换路由信息时，需要在两端的BGP-VPN实例中将对端设置为对等体，并在MCE上引入站点内的VPN路由发布到PE上。

在MCE与站点间使用EBGP交换路由信息时，需要在MCE上为每个VPN实例配置BGP对等体，并引入相应VPN内的IGP路由信息。由于各个站点间正常情况下是处在不同的AS内，因此使用EBGP进行路由的传播。

(1) 配置EBGP引入各站点内的IGP路由

为正确的将私网路由发布到PE，需要MCE首先将与其直连站点内的IGP路由引入到自己的BGP路由表中。

(2) 为每个VPN实例配置对等体组

为准确地与各站点交换路由信息，可以在BGP的IPv4地址族视图下，为每个VPN实例配置对等体组，并指定对等体组的AS编号。

(3) 通过Filter-policy对路由进行过滤

为正确地将路由信息传播到站点和PE设备，在指定对等体后，还需要使用Filter-policy对接收/发布的路由进行过滤。

表1-8 配置MCE使用EBGP进行路由交换

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入BGP视图 | bgp as-number | -
进入BGP-VPN实例视图 | ipv4-family vpn-instance vpn-instance-name | 必选
配置对等体组中加入对等体 | peer { group-name | ip-address } [ as-number as-number ] | 二者必选其一
配置允许本地AS号在所接收的路由的AS_PATH属性中出现，并可同时配置允许重复的次数 | peer { group-name | ip-address } allow-as-loop [ number ]
分别引入PE和站点端其它协议的路由 | import-route protocol [ process-id | all-processes ] [ med med-value | route-policy route-policy-name ] * | 必选 缺省情况下，BGP不引入且不通告其它协议的路由 l 如果当前配置的是MCE与站点间的BGP协议，则这里引入的路由应来自于MCE与PE间传播该VPN的路由时所使用的路由协议进程 l 如果当前配置的是MCE与PE间的BGP协议，则这里引入的路由应来自于MCE与站点间传播该VPN的路由时所使用的路由协议进程
配置对发布的路由信息进行过滤 | filter-policy { acl-number | ip-prefix ip-prefix-name } export [ direct | isis process-id | ospf process-id | rip process-id | static ] | 可选 缺省情况下，不对发布的路由信息进行过滤
配置对接收的路由信息进行过滤 | filter-policy { acl-number | ip-prefix ip-prefix-name } import | 可选 缺省情况下，不对接收的路由信息进行过滤

l 通常情况下，BGP通过AS号检测路由环路。如果在MCE和站点之间运行EBGP，当MCE将路由信息通告给站点时带上本自治系统的AS号，再从站点接收路由更新时，路由更新消息中会带有本自治系统的AS号，这样MCE就不能接收这条路由更新信息，此时需要配置允许路由环路。

l 对于标准的BGP/OSPF互相引用功能，当在MCE设备上配置引入BGP路由到OSPF中时，该路由的原OSPF属性将无法恢复，造成该路由与从其他域引入的路由无法区分。为了区分原属于不同OSPF域的路由，需要在远端PE将OSPF路由引入到BGP时携带标识域的属性，即OSPF的域ID（Domain ID）。OSPF进程的域ID包含在此进程生成的路由中，在将OSPF路由引入BGP中时，域ID被附加到BGP VPN路由上，作为BGP的扩展团体属性传递。

l 配置BGP VPN实例后，VPN实例中的BGP路由交换与普通的BGP相同。有关BGP协议的配置，请参见“三层技术-IP路由配置指导”中的“BGP配置”。


1.4 MCE显示和维护

1.4.1 复位BGP连接

当BGP配置变化后，可以通过软复位或复位BGP连接使新的配置生效。软复位需要BGP对等体具备路由刷新能力（支持ROUTE-REFRESH消息）。

请在用户视图下进行下列操作。

表1-9 复位BGP连接

操作 | 命令
软复位指定VPN实例的BGP连接 | refresh bgp vpn-instance vpn-instance-name { ip-address | all | external | group group-name } { export | import }
复位指定VPN实例的BGP连接 | reset bgp vpn-instance vpn-instance-name { as-number | ip-address | all | external | group group-name }

1.4.2 显示MCE的运行状态

在完成上述配置后，在任意视图下执行 display 命令可以显示配置后MPLS L3VPN的运行情况，通过查看显示信息验证配置的效果。

在用户视图下执行 reset 命令可以清除路由振荡衰减信息。

表1-10 显示MCE的运行状态

操作 | 命令
显示与VPN实例相关联的IP路由表 | display ip routing-table vpn-instance vpn-instance-name [ verbose ] [ verbose ] [ | { begin | exclude | include } regular-expression ]
显示指定VPN实例信息 | display ip vpn-instance [ instance-name vpn-instance-name ] [ | { begin | exclude | include } regular-expression ]
显示指定VPN实例的FIB信息 | display fib vpn-instance vpn-instance-name [ acl acl-number | ip-prefix ip-prefix-name ] [ | { begin | exclude | include } regular-expression ]
显示指定VPN实例中与指定目的IP地址匹配的FIB信息 | display fib vpn-instance vpn-instance-name ip-address [ mask | mask-length ] [ | { begin | exclude | include } regular-expression ]
显示BGP VPNv4对等体组信息 | display bgp vpnv4 vpn-instance vpn-instance-name group [ group-name ] [ | { begin | exclude | include } regular-expression ]
显示引入的BGP VPNv4路由信息 | display bgp vpnv4 vpn-instance vpn-instance-name network [ | { begin | exclude | include } regular-expression ]
显示BGP VPNv4的AS路径信息 | display bgp vpnv4 vpn-instance vpn-instance-name paths [ as-regular-expression | { | { begin | exclude | include } regular-expression } ]
显示BGP VPNv4对等体信息 | display bgp vpnv4 vpn-instance vpn-instance-name peer [ group-name log-info | ip-address { log-info | verbose } | verbose ] [ | { begin | exclude | include } regular-expression ]
显示指定VPN实例的BGP VPNv4路由信息 | display bgp vpnv4 vpn-instance vpn-instance-name routing-table [ [ network-address [ { mask | mask-length } [ longer-prefixes ] ] | as-path-acl as-path-acl-number | cidr | community [ aa:nn ]&<1-13> [ no-advertise | no-export | no-export-subconfed ] * [ whole-match ] | community-list { basic-community-list-number [ whole-match ] | adv-community-list-number }&<1-16> | dampened | dampening parameter | different-origin-as | flap-info [ network-address [ { mask | mask-length } [ longer-match ] ] | as-path-acl as-path-acl-number ] | peer ip-address { advertised-routes | received-routes } | statistic ] [ | { begin | exclude | include } regular-expression ] | [ flap-info ] regular-expression as-regular-expression ]
清除指定VPN实例的路由振荡衰减信息 | reset bgp vpn-instance vpn-instance-name dampening [ network-address [ mask | mask-length ]
清除指定VPN实例的BGP对等体路由振荡历史信息 | reset bgp vpn-instance vpn-instance-name ip-address flap-info reset bgp vpn-instance vpn-instance-name flap-info [ ip-address [ mask | mask-length ] | as-path-acl as-path-acl-number | regexp as-path-regexp ]

有关查看路由表的命令介绍请参见“三层技术-IP路由命令参考”中的“IP路由表显示”。


1.5 MCE典型配置举例

1.5.1 MCE和PE间使用OSPF引入VPN路由

1. 组网需求

l MCE设备通过Vlan-interface10接口（IP地址10.214.10.3）连接到地址范围为192.168.0.0/24的VPN 1，通过Vlan-interface20接口（IP地址10.214.20.3）连接到地址范围为192.168.10.0/24的VPN 2，其中VPN 2内运行RIP路由协议。

l 要求MCE设备能够将VPN之间的路由隔离，并通过OSPF将各VPN的路由发布到PE 1。

2. 组网图

图1-6 MCE和PE间使用OSPF引入VPN路由组网示意图

3. 配置步骤

为区分设备，假设MCE系统名为“MCE”，VPN 1和VPN 2的边缘路由器分别名为“VR1”和“VR2”，PE 1系统名为“PE1”。

(1) 在MCE和PE 1上配置VPN实例

# 在MCE设备上配置VPN实例，名称分别为vpn1和vpn2，RD分别取值为10:1和20:1，VPN Target取值与RD取相同数值，Export和Import均取此值。

<MCE> system-view

[MCE] ip vpn-instance vpn1

[MCE-vpn-instance-vpn1] route-distinguisher 10:1

[MCE-vpn-instance-vpn1] vpn-target 10:1

[MCE-vpn-instance-vpn1] quit

[MCE] ip vpn-instance vpn2

[MCE-vpn-instance-vpn2] route-distinguisher 20:1

[MCE-vpn-instance-vpn2] vpn-target 20:1

[MCE-vpn-instance-vpn2] quit

# 创建VLAN10，将端口Ethernet1/0/1加入VLAN10，并创建Vlan-interface10接口。

[MCE] vlan 10

[MCE-vlan10] port ethernet 1/0/1

[MCE-vlan10] quit

[MCE] interface vlan-interface 10

# 配置Vlan-interface10接口与VPN实例vpn1绑定，并配置接口的IP地址。

[MCE-Vlan-interface10] ip binding vpn-instance vpn1

[MCE-Vlan-interface10] ip address 10.214.10.3 24

# 使用类似步骤配置VLAN20，将端口Ethernet1/0/2加入VLAN20，配置接口与VPN实例vpn2绑定并配置IP地址。

[MCE-Vlan-interface10] quit

[MCE] vlan 20

[MCE-vlan20] port ethernet 1/0/2

[MCE-vlan20] quit

[MCE] interface vlan-interface 20

[MCE-Vlan-interface20] ip binding vpn-instance vpn2

[MCE-Vlan-interface20] ip address 10.214.20.3 24

[MCE-Vlan-interface20] quit

# 在PE 1上配置VPN实例，名称分别为VPN1和VPN2，RD分别取值为30:1和40:1，VPN Target取值分别为10:1和20:1，Export和Import均取此值。

<PE1> system-view

[PE1] ip vpn-instance vpn1

[PE1-vpn-instance-vpn1] route-distinguisher 30:1

[PE1-vpn-instance-vpn1] vpn-target 10:1

[PE1-vpn-instance-vpn1] quit

[PE1] ip vpn-instance vpn2

[PE1-vpn-instance-vpn2] route-distinguisher 40:1

[PE1-vpn-instance-vpn2] vpn-target 20:1

[PE1-vpn-instance-vpn2] quit

(2) MCE与Site间路由配置

MCE与VPN 1直接相连，且VPN 1内未使用路由协议，因此可以使用静态路由进行配置。

# 配置VR1与MCE连接的接口地址为10.214.10.2/24，连接VPN1接口的地址为192.168.0.1/24。向VLAN中增加端口和配置接口IP地址的过程省略。

# 在VR1上配置缺省路由，指定出方向报文的下一跳地址为10.214.10.3。

<VR1> system-view

[VR1] ip route-static 0.0.0.0 0.0.0.0 10.214.10.3

# 在MCE上指定静态路由，去往192.168.0.0/24网段的报文，下一跳地址为10.214.10.2，并将此路由与VPN实例vpn1绑定。

[MCE] ip route-static vpn-instance vpn1 192.168.0.0 24 10.214.10.2

# 显示MCE上为VPN实例vpn1维护的路由信息。

[MCE] display ip routing-table vpn-instance vpn1

Routing Tables: vpn1

Destinations : 5 Routes : 5

Destination/Mask Proto Pre Cost NextHop Interface

10.214.10.0/24 Direct 0 0 10.214.10.3 Vlan10

10.214.10.3/32 Direct 0 0 127.0.0.1 InLoop0

127.0.0.0/8 Direct 0 0 127.0.0.1 InLoop0

127.0.0.1/32 Direct 0 0 127.0.0.1 InLoop0

192.168.0.0/24 Static 60 0 10.214.10.2 Vlan10

可以看到，已经在MCE上为VPN 1指定了静态路由。

# VPN 2内运行RIP，在MCE上配置RIP进程20，并与VPN实例vpn2绑定，以便将VPN 2内的路由学习到VPN实例vpn2的路由表中。

[MCE] rip 20 vpn-instance vpn2

# 发布网段10.214.20.0的路由。

[MCE-rip-20] network 10.214.20.0

[MCE-rip-20] quit

# 在VR2上，配置与MCE连接的接口地址为10.214.20.2/24，连接VPN 2接口的地址为192.168.10.1/24。（配置过程略）

# 配置RIP，发布网段192.168.10.0和10.214.20.0的路由。

<VR2> system-view

[VR2] rip 20

[VR2-rip-20] network 192.168.10.0

[VR2-rip-20] network 10.214.20.0

# 在MCE上查看VPN实例vpn2的路由信息。

[MCE] display ip routing-table vpn-instance vpn2

Routing Tables: vpn2

Destinations : 5 Routes : 5

Destination/Mask Proto Pre Cost NextHop Interface

10.214.20.0/24 Direct 0 0 10.214.20.3 Vlan20

10.214.20.3/32 Direct 0 0 127.0.0.1 InLoop0

127.0.0.0/8 Direct 0 0 127.0.0.1 InLoop0

127.0.0.1/32 Direct 0 0 127.0.0.1 InLoop0

192.168.10.0/24 RIP 100 1 10.214.20.2 Vlan20

可以看到，MCE已经通过RIP学习到了VPN 2内的私网路由，并与VPN 1内的192.168.0.0路由信息分别维护在两个路由表内，有效进行了隔离。

(3) MCE与PE间路由配置

# MCE使用Ethernet1/0/3端口连接到PE 1的Ethernet1/0/1端口，需要配置这两个端口为Trunk端口，并允许VLAN 30和VLAN 40的报文携带Tag通过。

[MCE] interface ethernet 1/0/3

[MCE-Ethernet1/0/3] port link-type trunk

[MCE-Ethernet1/0/3] port trunk permit vlan 30 40

[MCE-Ethernet1/0/3] quit

# 配置PE 1的Ethernet1/0/1端口。

[PE1] interface ethernet 1/0/1

[PE1-Ethernet1/0/1] port link-type trunk

[PE1-Ethernet1/0/1] port trunk permit vlan 30 40

[PE1-Ethernet1/0/1] quit

# 在MCE上创建VLAN 30和接口Vlan-interface30，配置接口与VPN实例vpn1绑定，并配置接口的IP地址。

[MCE] vlan 30

[MCE-vlan30] quit

[MCE] interface vlan-interface 30

[MCE-Vlan-interface30] ip binding vpn-instance vpn1

[MCE-Vlan-interface30] ip address 30.1.1.1 24

[MCE-Vlan-interface30] quit

# 在MCE上创建VLAN 40和接口Vlan-interface40，配置接口与VPN实例vpn2绑定，并配置接口的IP地址。

[MCE] vlan 40

[MCE-vlan40] quit

[MCE] interface vlan-interface 40

[MCE-Vlan-interface40] ip binding vpn-instance vpn2

[MCE-Vlan-interface40] ip address 40.1.1.1 24

[MCE-Vlan-interface40] quit

# 在PE 1上创建VLAN 30和接口Vlan-interface30，配置接口与VPN实例vpn1绑定，并配置接口的IP地址。

[PE1] vlan 30

[PE1-vlan30] quit

[PE1] interface vlan-interface 30

[PE1-Vlan-interface30] ip binding vpn-instance vpn1

[PE1-Vlan-interface30] ip address 30.1.1.2 24

[PE1-Vlan-interface30] quit

# 在PE 1上创建VLAN 40和接口Vlan-interface40，配置接口与VPN实例vpn2绑定，并配置接口的IP地址。

[PE1] vlan 40

[PE1-vlan40] quit

[PE1] interface vlan-interface 40

[PE1-Vlan-interface40] ip binding vpn-instance vpn2

[PE1-Vlan-interface40] ip address 40.1.1.2 24

[PE1-Vlan-interface40] quit

# 配置MCE和PE 1的Loopback0接口，用于指定MCE和PE 1的Router ID，地址分别为101.101.10.1和100.100.10.1。配置步骤这里省略。

# 配置MCE启动OSPF进程10，配置绑定到VPN实例vpn1，域ID设置为10。

[MCE] ospf 10 router-id 101.101.10.1 vpn-instance vpn1

[MCE-ospf-10] vpn-instance-capability simple

[MCE-ospf-10] domain-id 10

# 在Area0区域发布30.1.1.0网段，并引入VPN 1的静态路由。

[MCE-ospf-10] area 0

[MCE-ospf-10-area-0.0.0.0] network 30.1.1.0 0.0.0.255

[MCE-ospf-10-area-0.0.0.0] quit

[MCE-ospf-10] import-route static

# 配置PE 1启动OSPF进程10，绑定到VPN实例vpn1，域ID为10，在Area0区域发布30.1.1.0网段。

[PE1] ospf 10 router-id 100.100.10.1 vpn-instance vpn1

[PE1-ospf-10] domain-id 10

[PE1-ospf-10] area 0

[PE1-ospf-10-area-0.0.0.0] network 30.1.1.0 0.0.0.255

[PE1-ospf-10-area-0.0.0.0] quit

[PE1-ospf-10] quit

# 显示PE 1上的VPN 1路由信息。

[PE1] display ip routing-table vpn-instance vpn1

Routing Tables: vpn1

Destinations : 5 Routes : 5

Destination/Mask Proto Pre Cost NextHop Interface

30.1.1.0/24 Direct 0 0 30.1.1.2 Vlan30

30.1.1.2/32 Direct 0 0 127.0.0.1 InLoop0

127.0.0.0/8 Direct 0 0 127.0.0.1 InLoop0

127.0.0.1/32 Direct 0 0 127.0.0.1 InLoop0

192.168.0.0/24 O_ASE 150 1 30.1.1.1 Vlan30

可以看到，VPN 1内的静态路由已经引入到MCE与PE 1间的OSPF路由表中。

MCE与PE 1间配置OSPF进程20，导入VPN实例vpn2的路由信息的过程与上面介绍的配置基本一致，不同的是在MCE的OSPF中配置导入的是RIP进程20的路由，这里不再赘述，只以显示信息为例表示导入成功后的结果。

[PE1] display ip routing-table vpn-instance vpn2

Routing Tables: vpn2

Destinations : 5 Routes : 5

Destination/Mask Proto Pre Cost NextHop Interface

40.1.1.0/24 Direct 0 0 40.1.1.2 Vlan40

40.1.1.2/32 Direct 0 0 127.0.0.1 InLoop0

127.0.0.0/8 Direct 0 0 127.0.0.1 InLoop0

127.0.0.1/32 Direct 0 0 127.0.0.1 InLoop0

192.168.10.0/24 O_ASE 150 1 40.1.1.1 Vlan40

至此，通过配置，已经将两个VPN实例内的路由信息完整地传播到PE 1中，配置完成。

1.5.2 MCE和PE间使用BGP引入VPN路由

1. 组网需求

l 使用本系列交换机作为MCE设备，将站点1和站点2内的VPN路由发布到PE 1，使MPLS骨干网络两端的VPN能够正常通信。

l 站点1和站点2内部均使用OSPF协议，MCE与PE间使用EBGP协议。

2. 组网图

图1-7 MCE和PE间使用BGP引入VPN路由组网示意图

3. 配置步骤

(1) VPN实例配置

# 在MCE和PE 1上创建VPN实例，并与接口绑定的配置与“ 1.5.1 MCE和PE间使用OSPF引入VPN路由 ”中的配置类似，这里不再赘述。

(2) MCE与Site间路由配置

# 配置两个VPN实例内的设备启动OSPF进程，发布各网段的路由，操作与普通OSPF配置相同，这里不再赘述。

# 配置MCE的OSPF协议，进程10与VPN实例vpn1绑定，学习VPN 1内的路由。

<MCE> system-view

[MCE] ospf router-id 10.214.10.3 10 vpn-instance vpn1

[MCE-ospf-10] area 0

[MCE-ospf-10-area-0.0.0.0] network 10.214.10.0 0.0.0.255

# 显示VPN 1的路由信息。

[MCE-ospf-10-area-0.0.0.0] display ip routing-table vpn-instance vpn1

Routing Tables: vpn1

Destinations : 5 Routes : 5

Destination/Mask Proto Pre Cost NextHop Interface

10.214.10.0/24 Direct 0 0 10.214.10.3 Vlan10

10.214.10.3/32 Direct 0 0 127.0.0.1 InLoop0

127.0.0.0/8 Direct 0 0 127.0.0.1 InLoop0

127.0.0.1/32 Direct 0 0 127.0.0.1 InLoop0

192.168.0.0/24 OSPF 10 1 10.214.10.2 Vlan10

可以看到，MCE已经通过OSPF进程10学习到了VPN 1内的路由。

# 配置MCE的OSPF进程20与VPN实例vpn2绑定，学习VPN 2内的路由，配置与上面配置OSPF进程10类似。这里直接显示配置结果。

[MCE] display ip routing-table vpn-instance vpn2

Routing Tables: vpn2

Destinations : 5 Routes : 5

Destination/Mask Proto Pre Cost NextHop Interface

10.214.20.0/24 Direct 0 0 10.214.20.3 Vlan20

10.214.20.3/32 Direct 0 0 127.0.0.1 InLoop0

127.0.0.0/8 Direct 0 0 127.0.0.1 InLoop0

127.0.0.1/32 Direct 0 0 127.0.0.1 InLoop0

192.168.10.0/24 OSPF 10 1 10.214.20.2 Vlan20

(3) MCE与PE间路由配置

# 配置MCE与PE 1间通过Trunk端口进行连接，配置与“ 1.5.1 MCE和PE间使用OSPF引入VPN路由 ”中的配置类似，这里不再赘述。

# 配置MCE启动BGP进程100，并进入VPN实例vpn1的IPv4地址族视图。

[MCE] bgp 100

[MCE-bgp] ipv4-family vpn-instance vpn1

# 指定PE 1（PE 1与实例vpn1绑定的接口地址为30.1.1.2/24，BGP进程为200）为EBGP对等体，并引入OSPF进程10的路由信息。

[MCE-bgp-vpn1] peer 30.1.1.2 as-number 200

[MCE-BGP-vpn1] import-route ospf 10

# 在PE 1上配置BGP200，并指定MCE为EBGP对等体。

<PE1> system-view

[PE1] bgp 200

[PE1-bgp] ipv4-family vpn-instance vpn1

[PE1-bgp-vpn1] peer 30.1.1.1 as-number 100

# 显示PE 1上VPN实例vpn1的路由信息。

[PE1-bgp-vpn1] display ip routing-table vpn-instance vpn1

Routing Tables: vpn1

Destinations : 5 Routes : 5

Destination/Mask Proto Pre Cost NextHop Interface

30.1.1.0/24 Direct 0 0 30.1.1.2 Vlan30

30.1.1.2/32 Direct 0 0 127.0.0.1 InLoop0

127.0.0.0/8 Direct 0 0 127.0.0.1 InLoop0

127.0.0.1/32 Direct 0 0 127.0.0.1 InLoop0

192.168.0.0/24 BGP 255 2 30.1.1.1 Vlan30

# 对于VPN 2，在MCE和PE 1上进行类似的配置，将VPN实例vpn2的OSPF路由信息引入到EBGP路由中。这里不再叙述配置过程，直接显示配置结果。

[PE1-bgp-vpn1] display ip routing-table vpn-instance vpn2

Routing Tables: vpn2

Destinations : 5 Routes : 5

Destination/Mask Proto Pre Cost NextHop Interface

40.1.1.0/24 Direct 0 0 40.1.1.2 Vlan40

40.1.1.2/32 Direct 0 0 127.0.0.1 InLoop0

127.0.0.0/8 Direct 0 0 127.0.0.1 InLoop0

127.0.0.1/32 Direct 0 0 127.0.0.1 InLoop0

192.168.10.0/24 BGP 255 2 40.1.1.1 Vlan40

至此，MCE设备已经将两个VPN实例内的OSPF路由全部引入PE 1的EBGP路由表中，配置完成。

1.5.3 在隧道组网中使用MCE功能发布VPN路由

1. 组网需求

如图1-8 所示，MCE1和MCE2设备通过GRE隧道进行通信，并分别连接到VPN1和VPN2的站点。其中VPN1的站点全部使用OSPF作为路由协议，且均只存在骨干区域，即区域0。而VPN2的站点分别使用RIP和OSPF，其中OSPF部分仅存在骨干区域。现要求MCE1和MCE2设备能够通过隧道将两个VPN网络中的路由信息进行准确发布。

2. 组网图

图1-8 在隧道组网中使用MCE功能发布VPN路由组网示意图

3. 配置思路

由于已经为每个VPN网络单独配置了一条GRE隧道，用于传输该VPN网络中的数据和路由信息，因此可以通过创建VPN实例并将特定的接口与VPN实例进行绑定，使原有网络简化为两个独立的拓扑结构（如图1-9 和图1-10 所示），从而使MCE设备可以将每个VPN网络的路由通过独立路径进行发布。

图1-9 VPN1的站点与MCE设备的网络拓扑示意图

图1-10 VPN2的站点与MCE设备的网络拓扑示意图

根据以上描述，本例中需要在MCE设备上为每个VPN网络创建VPN实例，并将MCE与VPN站点相连的接口和隧道接口与VPN实例进行绑定。对于VPN1网络，可以将两个MCE设备上的接口全部加入到站点的OSPF计算中，将整个网络作为一个OSPF域进行维护；对于VPN2网络，则还需要在MCE1上进行OSPF和RIP的相互引用配置。

4. 配置步骤

(1) 配置隧道

l 配置MCE1

# 创建VLAN100和VLAN101，并将端口Ethernet1/0/15配置为Trunk类型，加入这两个VLAN。

<MCE1> system-view

[MCE1] vlan 100 to 101

[MCE1] interface ethernet 1/0/15

[MCE1-Ethernet1/0/15] port link-type trunk

[MCE1-Ethernet1/0/15] port trunk permit vlan 100 101

[MCE1-Ethernet1/0/15] quit

# 创建VLAN接口，并配置相应的IP地址。

[MCE1] interface vlan-interface 100

[MCE1-Vlan-interface100] ip address 192.168.1.1 255.255.255.0

[MCE1-Vlan-interface100] quit

[MCE1] interface vlan-interface 101

[MCE1-Vlan-interface101] ip address 192.168.2.1 255.255.255.0

[MCE1-Vlan-interface101] quit

# 创建Tunnel0接口。

[MCE1] interface tunnel 0

# 配置Tunnel0接口的IP地址。

[MCE1-Tunnel0] ip address 10.1.1.1 255.255.255.0

# 配置Tunnel封装模式。

[MCE1-Tunnel0] tunnel-protocol gre

# 配置Tunnel0接口的源地址。

[MCE1-Tunnel0] source vlan-interface 100

# 配置Tunnel0接口的目的地址。

[MCE1-Tunnel0] destination 172.16.1.1

[MCE1-Tunnel0] quit

# 创建并配置业务环回组1，服务类型为tunnel。

[MCE1] service-loopback group 1 type tunnel

# 将任意未使用端口（此处以Ethernet1/0/3为例）加入业务环回组1。

[MCE1] interface Ethernet 1/0/3

[MCE1-Ethernet1/0/3] undo stp enable

[MCE1-Ethernet1/0/3] port service-loopback group 1

# 在Tunnel接口视图下指定隧道引用的业务环回组1。

[MCE1-Ethernet1/0/3] quit

[MCE1] interface tunnel 0

[MCE1-Tunnel0] service-loopback-group 1

[MCE1-Tunnel0] quit

# 创建Tunnel1接口。

[MCE1] interface tunnel 1

# 配置Tunnel1接口的IP地址。

[MCE1-Tunnel1] ip address 10.1.2.1 255.255.255.0

# 配置Tunnel封装模式。

[MCE1-Tunnel1] tunnel-protocol gre

# 配置Tunnel1接口的源地址。

[MCE1-Tunnel1] source vlan-interface 101

# 配置Tunnel1接口的目的地址。

[MCE1-Tunnel1] destination 172.16.2.1

# 在Tunnel接口视图下指定隧道引用的业务环回组1。

[MCE1-Tunnel1] service-loopback-group 1

[MCE1-Tunnel1] quit

l 配置MCE2

# 创建VLAN100和VLAN101，并将端口Ethernet1/0/25配置为Trunk类型，加入这两个VLAN。

<MCE2> system-view

[MCE2] vlan 100 to 101

[MCE2] interface ethernet 1/0/25

[MCE2-Ethernet1/0/25] port link-type trunk

[MCE2-Ethernet1/0/25] port trunk permit vlan 100 101

[MCE2-Ethernet1/0/25] quit

# 创建VLAN接口，并配置相应的IP地址。

[MCE2] interface vlan-interface 100

[MCE2-Vlan-interface100] ip address 172.16.1.1 255.255.255.0

[MCE2-Vlan-interface100] quit

[MCE2] interface vlan-interface 101

[MCE2-Vlan-interface101] ip address 172.16.2.1 255.255.255.0

[MCE2-Vlan-interface101] quit

# 创建Tunnel0接口。

[MCE2] interface tunnel 0

# 配置Tunnel0接口的IP地址。

[MCE2-Tunnel0] ip address 10.1.1.2 255.255.255.0

# 配置Tunnel封装模式。

[MCE2-Tunnel0] tunnel-protocol gre

# 配置Tunnel0接口的源地址。

[MCE2-Tunnel0] source vlan-interface 100

# 配置Tunnel0接口的目的地址。

[MCE2-Tunnel0] destination 192.168.1.1

[MCE2-Tunnel0] quit

# 创建并配置业务环回组1，服务类型为tunnel。

[MCE2] service-loopback group 1 type tunnel

# 将任意未使用端口（此处以Ethernet1/0/3为例）加入业务环回组1。

[MCE2] interface ethernet 1/0/3

[MCE2-Ethernet1/0/3] undo stp enable

[MCE2-Ethernet1/0/3] port service-loopback group 1

# 在Tunnel接口视图下指定隧道引用的业务环回组1。

[MCE2-Ethernet1/0/3] quit

[MCE2] interface tunnel 0

[MCE2-Tunnel0] service-loopback-group 1

[MCE2-Tunnel0] quit

# 创建Tunnel1接口。

[MCE2] interface tunnel 1

# 配置Tunnel1接口的IP地址。

[MCE2-Tunnel1] ip address 10.1.2.2 255.255.255.0

# 配置Tunnel封装模式。

[MCE2-Tunnel1] tunnel-protocol gre

# 配置Tunnel1接口的源地址。

[MCE2-Tunnel1] source vlan-interface 101

# 配置Tunnel1接口的目的地址。

[MCE2-Tunnel1] destination 192.168.2.1

# 在Tunnel接口视图下指定隧道引用的业务环回组1。

[MCE2-Tunnel1] service-loopback-group 1

(2) 配置VPN实例

l MCE1设备的配置

# 为VPN1网络创建VPN实例，命名为“vpn1”，并配置RD属性。

<MCE1> system-view

[MCE1] ip vpn-instance vpn1

[MCE1-vpn-instance-vpn1] route-distinguisher 1:2

[MCE1-vpn-instance-vpn1] vpn-target 1:2

[MCE1-vpn-instance-vpn1] quit

# 为VPN2网络创建VPN实例，命名为“vpn2”，并配置RD属性。

[MCE1] ip vpn-instance vpn2

[MCE1-vpn-instance-vpn2] route-distinguisher 1:3

[MCE1-vpn-instance-vpn2] vpn-target 1:3

[MCE1-vpn-instance-vpn2] quit

# 配置Vlan-interface 10接口和Tunnel 0接口与VPN实例“vpn1”进行绑定，并配置IP地址。

[MCE1] vlan 10

[MCE1-vlan10] port ethernet 1/0/10

[MCE1-vlan10] quit

[MCE1] interface vlan-interface 10

[MCE1-Vlan-interface10] ip binding vpn-instance vpn1

[MCE1-Vlan-interface10] ip address 10.214.10.1 24

[MCE1-Vlan-interface10] quit

[MCE1] interface tunnel 0

[MCE1-Tunnel0] ip binding vpn-instance vpn1

[MCE1-Tunnel0] ip address 10.1.1.1 24

# 配置Vlan-interface 11接口和Tunnel 1接口与VPN实例“vpn2”进行绑定，并配置IP地址。

[MCE1] vlan 11

[MCE1-vlan11] port ethernet 1/0/11

[MCE1-vlan11] quit

[MCE1] interface vlan-interface 11

[MCE1-Vlan-interface11] ip binding vpn-instance vpn2

[MCE1-Vlan-interface11] ip address 10.214.20.1 24

[MCE1-Vlan-interface11] quit

[MCE1] interface tunnel 1

[MCE1-Tunnel1] ip binding vpn-instance vpn2

[MCE1-Tunnel1] ip address 10.1.2.1 24

[MCE1-Tunnel1] quit

l MCE2设备的配置

# 为VPN1网络创建VPN实例，命名为“vpn1”，并配置RD属性（与MCE1设备保持一致）。

<MCE2> system-view

[MCE2] ip vpn-instance vpn1

[MCE2-vpn-instance-vpn1] route-distinguisher 1:2

[MCE2-vpn-instance-vpn1] vpn-target 1:2

[MCE2-vpn-instance-vpn1] quit

# 为VPN2网络创建VPN实例，命名为“vpn2”，并配置RD属性（与MCE1设备保持一致）。

[MCE2] ip vpn-instance vpn2

[MCE2-vpn-instance-vpn2] route-distinguisher 1:3

[MCE2-vpn-instance-vpn2] vpn-target 1:3

[MCE2-vpn-instance-vpn2] quit

# 配置Vlan-interface 20接口和Tunnel 0接口与VPN实例“vpn1”进行绑定，并配置IP地址。

[MCE2] vlan 20

[MCE2-vlan20] port ethernet 1/0/20

[MCE2-vlan20] quit

[MCE2] interface vlan-interface 20

[MCE2-Vlan-interface20] ip binding vpn-instance vpn1

[MCE2-Vlan-interface20] ip address 10.214.30.1 24

[MCE2-Vlan-interface20] quit

[MCE2] interface tunnel 0

[MCE2-Tunnel0] ip binding vpn-instance vpn1

[MCE2-Tunnel0] ip address 10.1.1.2 24

# 配置Vlan-interface 21接口和Tunnel 1接口与VPN实例“vpn2”进行绑定，并配置IP地址。

[MCE2] vlan 21

[MCE2-vlan21] port ethernet 1/0/21

[MCE2-vlan21] quit

[MCE2] interface vlan-interface 21

[MCE2-Vlan-interface21] ip binding vpn-instance vpn2

[MCE2-Vlan-interface21] ip address 10.214.40.1 24

[MCE2-Vlan-interface21] quit

[MCE2] interface tunnel 1

[MCE2-Tunnel1] ip binding vpn-instance vpn2

[MCE2-Tunnel1] ip address 10.1.2.2 24

[MCE2-Tunnel1] quit

(3) 配置路由协议

l 发布VPN1网络的路由

# 在MCE1设备上配置OSPF路由协议并与VPN实例“vpn1”进行绑定，开启OSPF支持MCE功能。需要注意的是，下面配置中的OSPF区域要与站点内的OSPF配置保持一致，此处以区域0为例进行配置。

[MCE1] ospf 1 vpn-instance vpn1 router-id 192.168.1.1

[MCE1-ospf-1] vpn-instance-capability simple

[MCE1-ospf-1] area 0

[MCE1-ospf-1-area-0.0.0.0]

# 将MCE1设备的Vlan-interface10和Tunnel 0接口的地址进行发布。

[MCE1-ospf-1-area-0.0.0.0] network 10.214.10.1 0.0.0.255

[MCE1-ospf-1-area-0.0.0.0] network 10.1.1.1 0.0.0.255

# 在MCE2设备上配置OSPF路由协议并与VPN实例“vpn1”进行绑定，开启OSPF支持MCE功能。

[MCE2] ospf 1 vpn-instance vpn1 router-id 172.16.1.1

[MCE2-ospf-1] vpn-instance-capability simple

[MCE2-ospf-1] area 0

[MCE2-ospf-1-area-0.0.0.0]

# 将MCE2设备的Vlan-interface20和Tunnel 0接口的地址进行发布。

[MCE2-ospf-1-area-0.0.0.0] network 10.214.30.1 0.0.0.255

[MCE2-ospf-1-area-0.0.0.0] network 10.1.1.2 0.0.0.255

l 发布VPN2网络的路由

# 在MCE1设备上配置OSPF路由协议并与VPN实例“vpn2”进行绑定，开启OSPF支持MCE功能。需要注意的是，下面配置中的OSPF区域要与站点2内的OSPF配置保持一致，此处以区域0为例进行配置。

[MCE1] ospf 2 vpn-instance vpn2 router-id 192.168.2.1

[MCE1-ospf-2] vpn-instance-capability simple

[MCE1-ospf-2] area 0

[MCE1-ospf-2-area-0.0.0.0]

# 将MCE1设备Tunnel 1接口的地址进行发布，使其参与OSPF域中的路由计算。

[MCE1-ospf-2-area-0.0.0.0] network 10.1.2.1 0.0.0.255

# 在MCE1设备上配置RIP路由协议并与VPN实例“vpn2”进行绑定，此处以RIP进程号1为例进行配置。

[MCE1] rip 1 vpn-instance vpn2

[MCE1-rip-1]

# 将MCE1设备Vlan-interface11接口的地址进行发布，使其参与站点1的RIP计算。

[MCE1-rip-1] network 10.214.20.1

# 在当前RIP进程中引入OSPF进程2学到的路由信息。

[MCE1-rip-1] import-route ospf 2

[MCE1-rip-1] quit

# 在OSPF进程2中引入RIP进程1学到的路由信息。

[MCE1] ospf 2

[MCE1-ospf-2] import-route rip 1

# 在MCE2设备上配置OSPF路由协议并与VPN实例“vpn2”进行绑定，开启OSPF支持MCE功能。需要注意的是，下面配置中的OSPF区域要与站点2内的OSPF配置保持一致，此处以区域0为例进行配置。

[MCE2] ospf 2 vpn-instance vpn2 router-id 172.16.2.1

[MCE2-ospf-2] vpn-instance-capability simple

[MCE2-ospf-2] area 0

[MCE2-ospf-2-area-0.0.0.0]

# 将MCE2设备的Vlan-interface21和Tunnel 1接口的地址进行发布。

[MCE2-ospf-2-area-0.0.0.0] network 10.214.40.1 0.0.0.255

[MCE2-ospf-2-area-0.0.0.0] network 10.1.2.2 0.0.0.255


00-前言

前 言

H3C S3600V2系列以太网交换机配置指导共分为十本手册，介绍了S3600V2系列以太网交换机各软件特性的原理及其配置方法，包含原理简介、配置任务描述和配置举例。《IP组播配置指导》主要介绍组播业务的相关协议原理和具体配置，包括IPv4组播业务配置及IPv6组播业务的配置。利用组播技术可以实现网络中点到多点的高效数据传送。

前言部分包含如下内容：

l 读者对象

l 本书约定

l 产品配套资料

l 资料获取方式

l 技术支持

l 资料意见反馈

读者对象

本手册主要适用于如下工程师：

l 网络规划人员

l 现场技术支持与维护人员

l 负责网络配置和维护的网络管理员

本书约定

1.命令行格式约定

格 式 | 意 义
粗体 | 命令行关键字（命令中保持不变、必须照输的部分）采用加粗字体表示。
斜体 | 命令行参数（命令中必须由实际值进行替代的部分）采用斜体表示。
[ ] | 表示用“[ ]”括起来的部分在命令配置时是可选的。
{ x | y | ... } | 表示从两个或多个选项中选取一个。
[ x | y | ... ] | 表示从两个或多个选项中选取一个或者不选。
{ x | y | ... } * | 表示从两个或多个选项中选取多个，最少选取一个，最多选取所有选项。
[ x | y | ... ] * | 表示从两个或多个选项中选取多个或者不选。
&<1-n> | 表示符号&前面的参数可以重复输入1～n次。
# | 由“#”号开始的行表示为注释行。

2.图形界面格式约定

格 式 | 意 义
< > | 带尖括号“< >”表示按钮名，如“单击<确定>按钮”。
[ ] | 带方括号“[ ]”表示窗口名、菜单名和数据表，如“弹出[新建用户]窗口”。
/ | 多级菜单用“/”隔开。如[文件/新建/文件夹]多级菜单表示[文件]菜单下的[新建]子菜单下的[文件夹]菜单项。

3.各类标志

本书还采用各种醒目标志来表示在操作过程中应该特别注意的地方，这些标志的意义如下：

该标志后的注释需给予格外关注，不当的操作可能会对人身造成伤害。

提醒操作中应注意的事项，不当的操作可能会导致数据丢失或者设备损坏。

为确保设备配置成功或者正常工作而需要特别关注的操作或信息。

对操作内容的描述进行必要的补充和说明。

配置、操作、或使用设备的技巧、小窍门。

4.图标约定

本书使用的图标及其含义如下：

该图标及其相关描述文字代表一般网络设备，如路由器、交换机、防火墙等。

该图标及其相关描述文字代表一般意义下的路由器，以及其他运行了路由协议的设备。

该图标及其相关描述文字代表二、三层以太网交换机，以及运行了二层协议的设备。

产品配套资料

H3C S3600V2系列以太网交换机的配套资料包括如下部分：

大类 | 资料名称 | 内容介绍
产品知识介绍 | 产品彩页 | 帮助您了解产品的主要规格参数及亮点
 | RPS电源用户手册 | 帮助您了解产品支持的RPS电源的外观、功能、规格
 | H3C低端系列以太网交换机RPS电源选购指南 | 帮助您了解各种RPS电源适用的交换机产品型号及RPS电源配套电缆的相关规格
 | H3C低端系列以太网交换机可插拔模块手册 | 帮助您了解产品支持的可插拔模块类型、外观和规格
设备安装 | 安全兼容性手册 | 列出产品的兼容性声明，并对兼容性和安全的细节进行说明
 | H3C 设备防雷安装指导手册 | 帮助您了解防雷接地设计和工程安装方法，以保证交换机具有良好的抗雷击性能
 | 快速安装指南 | 指导您对设备进行初始安装，通常针对最常用的情况，减少您的检索时间
 | 安装指导 | 帮助您详细了解设备硬件规格和安装方法，指导您对设备进行安装
 | H3C可插拔SFP[SFP+][XFP]模块安装指南 | 帮助您掌握SFP/SFP+/XFP模块的正确安装方法，避免因操作不当而造成器件损坏
业务配置 | 配置指导 | 帮助您掌握设备软件功能的配置方法及配置步骤
 | 命令参考 | 详细介绍设备的命令，相当于命令字典，方便您查阅各个命令的功能
运行维护 | H3C系列以太网交换机登录密码恢复手册 | 指导您在设备登录密码丢失的情况下，找回密码、或重新配置登录密码
 | 故障处理手册 | 指导您快速定位并处理软件故障
 | 版本说明书 | 帮助您了解产品版本的相关信息（包括：版本配套说明、兼容性说明、特性变更说明、技术支持信息）及软件升级方法

资料获取方式

您可以通过H3C网站（ www.h3c.com.cn ）获取最新的产品资料：

H3C网站与产品资料相关的主要栏目介绍如下：

l [服务支持/文档中心] ：可以获取硬件安装类、软件升级类、配置类或维护类等产品资料。

l [产品技术] ：可以获取产品介绍和技术介绍的文档，包括产品相关介绍、技术介绍、技术白皮书等。

l [解决方案] ：可以获取解决方案类资料。

l [服务支持/软件下载] ：可以获取与软件版本配套的资料。

技术支持

用户支持邮箱：customer_service@h3c.com

技术支持热线电话：400-810-0504（手机、固话均可拨打）

网址： http://www.h3c.com.cn

资料意见反馈

如果您在使用过程中发现产品资料的任何问题，可以通过以下方式反馈：

E-mail：info@h3c.com

感谢您的反馈，让我们做得更好！


1 组播概述

l 本文所指的路由器代表运行了路由协议的三层设备。

l 如不特别指明，本文中提到的组播均指IP组播。

相关链接

  • 1.1 组播简介
  • 1.2 组播模型分类
  • 1.3 组播框架结构
  • 1.4 组播报文的转发机制
  • 1.5 多实例组播
父主题： 01-组播概述


1.1 组播简介

作为一种与单播（Unicast）和广播（Broadcast）并列的通信方式，组播（Multicast）技术能够有效地解决单点发送、多点接收的问题，从而实现了网络中点到多点的高效数据传送，能够节约大量网络带宽、降低网络负载。

利用组播技术可以方便地提供一些新的增值业务，包括在线直播、网络电视、远程教育、远程医疗、网络电台、实时视频会议等对带宽和数据交互的实时性要求较高的信息服务。

1.1.1 三种信息传输方式的比较

1. 单播方式的信息传输

如图1-1 所示，在IP网络中若采用单播的方式，信息源（即Source）要为每个需要信息的主机（即Receiver）都发送一份独立的信息拷贝。

图1-1 单播方式的信息传输

假设Host B、Host D和Host E需要信息，则Source要与Host B、Host D和Host E分别建立一条独立的信息传输通道。

采用单播方式时，网络中传输的信息量与需要该信息的用户量成正比，因此当需要该信息的用户数量较大时，信息源需要将多份内容相同的信息发送给不同的用户，这对信息源以及网络带宽都将造成巨大的压力。

从单播方式的信息传播过程可以看出，该传输方式不利于信息的批量发送。

2. 广播方式的信息传输

如图1-2 所示，在一个网段中若采用广播的方式，信息源（即Source）将把信息传送给该网段中的所有主机，而不管其是否需要该信息。

图1-2 广播方式的信息传输

假设只有Host B、Host D和Host E需要信息，若将该信息在网段中进行广播，则原本不需要信息的Host A和Host C也将收到该信息，这样不仅信息的安全性得不到保障，而且会造成同一网段中信息的泛滥。

因此，广播方式不利于与特定对象进行数据交互，并且还浪费了大量的带宽。

3. 组播方式的信息传输

综上所述，传统的单播和广播的通信方式均不能以最小的网络开销实现单点发送、多点接收的问题，IP组播技术的出现及时解决了这个问题。

如图1-3 所示，当IP网络中的某些主机（即Receiver）需要信息时，若采用组播的方式，组播源（即Source）仅需发送一份信息，借助组播路由协议建立组播分发树，被传递的信息在距离组播源尽可能远的网络节点才开始复制和分发。

图1-3 组播方式的信息传输

假设只有Host B、Host D和Host E需要信息，采用组播方式时，可以让这些主机加入同一个组播组（Multicast group），组播源向该组播组只需发送一份信息，并由网络中各路由器根据该组播组中各成员的分布情况对该信息进行复制和转发，最后该信息会准确地发送给Host B、Host D和Host E。

综上所述，组播的优势归纳如下：

l 相比单播来说，组播的优势在于：由于被传递的信息在距信息源尽可能远的网络节点才开始被复制和分发，所以用户的增加不会导致信息源负载的加重以及网络资源消耗的显著增加。

l 相比广播来说，组播的优势在于：由于被传递的信息只会发送给需要该信息的接收者，所以不会造成网络资源的浪费，并能提高信息传输的安全性；另外，广播只能在同一网段中进行，而组播可以实现跨网段的传输。

1.1.2 组播传输的特点

组播传输的特点归纳如下：

l “组播组”是一个用IP组播地址进行标识的接收者集合，主机通过加入某组播组成为该组播组的成员，从而可以接收发往该组播组的组播数据。组播源通常不需要加入组播组。

l 信息的发送者称为“组播源”，如图1-3 中的Source。一个组播源可以同时向多个组播组发送信息，多个组播源也可以同时向一个组播组发送信息。

l 所有加入某组播组的主机便成为该组播组的成员，如图1-3 中的Receiver。组播组中的成员是动态的，主机可以在任何时刻加入或离开组播组。组播组成员可以广泛地分布在网络中的任何地方。

l 支持三层组播功能的路由器或三层交换机统称为“组播路由器”或“三层组播设备”。组播路由器不仅能够提供组播路由功能，也能够在与用户连接的末梢网段上提供组播组成员的管理功能。组播路由器本身也可能是组播组的成员。

为了更好地理解，可以将组播方式的信息传输过程类比于电视节目的传送过程，如表1-1 所示。

表1-1 组播信息传输与电视节目传输的类比

步骤 | 电视节目的传送过程 | 组播方式的信息传输过程
1 | 电视台S通过频道G传送电视节目 | 组播源S向组播组G发送组播数据
2 | 用户U将电视机的频道调至频道G | 接收者U加入组播组G
3 | 用户U能够收看到由电视台S通过频道G传送的电视节目了 | 接收者U能够收到由组播源S发往组播组G的组播数据了
4 | 用户U关闭电视机或切换到其它频道 | 接收者U离开组播组G

1.1.3 组播中常用的表示法

在组播中，经常出现以下两种表示方式：

l （*，G）：通常用来表示共享树，或者由任意组播源发往组播组G的组播报文。其中的“*”代表任意组播源，“G”代表特定组播组G。

l （S，G）：也称为“组播源组”，通常用来表示最短路径树，或者由组播源S发往组播组G的组播报文。其中的“S”代表特定组播源S，“G”代表特定组播组G。

有关共享树和最短路径树的详细介绍，请参见“IP组播配置指导”中的“PIM”或“IPv6 PIM”。

1.1.4 组播的优点和应用

1. 组播的优点

组播技术的优点主要在于：

l 提高效率：减轻信息源服务器和网络设备CPU的负荷；

l 优化性能：减少冗余流量；

l 分布式应用：使用最少的网络资源实现点到多点应用。

2. 组播的应用

组播技术主要应用于以下几个方面：

l 多媒体、流媒体的应用，如：网络电视、网络电台、实时视/音频会议；

l 培训、联合作业场合的通信，如：远程教育、远程医疗；

l 数据仓库、金融应用（股票）；

l 其它任何“点到多点”的数据发布应用。


1.2 组播模型分类

根据接收者对组播源处理方式的不同，组播模型分为以下三类：

1. ASM模型

简单地说，ASM（Any-Source Multicast，任意信源组播）模型就是任意源组播模型。

在ASM模型中，任意一个发送者都可以作为组播源向某个组播组地址发送信息，接收者通过加入由该地址标识的组播组，来接收发往该组播组的组播信息。

在ASM模型中，接收者无法预先知道组播源的位置，但可以在任意时间加入或离开该组播组。

2. SFM模型

SFM（Source-Filtered Multicast，信源过滤组播）模型继承了ASM模型，从发送者角度来看，两者的组播组成员关系完全相同。

SFM模型在功能上对ASM模型进行了扩展。在SFM模型中，上层软件对收到的组播报文的源地址进行检查，允许或禁止来自某些组播源的报文通过。因此，接收者只能收到来自部分组播源的组播数据。从接收者的角度来看，只有部分组播源是有效的，组播源被经过了筛选。

3. SSM模型

在现实生活中，用户可能只对某些组播源发送的组播信息感兴趣，而不愿接收其它源发送的信息。SSM（Source-Specific Multicast，指定信源组播）模型为用户提供了一种能够在客户端指定组播源的传输服务。

SSM模型与ASM模型的根本区别在于：SSM模型中的接收者已经通过其它手段预先知道了组播源的具体位置。SSM模型使用与ASM/SFM模型不同的组播地址范围，直接在接收者与其指定的组播源之间建立专用的组播转发路径。


1.3 组播框架结构

对于IP组播，需要关注下列问题：

l 组播源将组播信息传输到哪里？即组播寻址机制；

l 网络中有哪些接收者？即主机注册；

l 这些接收者需要从哪个组播源接收信息？即组播源发现；

l 组播信息如何传输？即组播路由。

IP组播属于端到端的服务，组播机制包括以下四个部分：

(1) 寻址机制：借助组播地址，实现信息从组播源发送到一组接收者；

(2) 主机注册：允许接收者主机动态加入和离开某组播组，实现对组播成员的管理；

(3) 组播路由：构建组播报文分发树（即组播数据在网络中的树型转发路径），并通过该分发树将报文从组播源传输到接收者；

(4) 组播应用：组播源与接收者必须安装支持视频会议等组播应用的软件，TCP/IP协议栈必须支持组播信息的发送和接收。

1.3.1 组播地址

为了让组播源和组播组成员进行通信，需要提供网络层组播地址，即IP组播地址。同时必须存在一种技术将IP组播地址映射为链路层的组播MAC地址。

1. IP组播地址

(1) IPv4组播地址

IANA（Internet Assigned Numbers Authority，互联网编号分配委员会）将D类地址空间分配给IPv4组播使用，范围从224.0.0.0到239.255.255.255，具体分类及其含义如表1-2 所示。

表1-2 IPv4组播地址的范围及含义

地址范围 | 含义
224.0.0.0～224.0.0.255 | 永久组地址。除224.0.0.0保留不做分配外，其它地址供路由协议、拓扑查找和协议维护等使用，常用的永久组地址及其含义如表1-3 所示。对于以该范围内组播地址为目的地址的数据包来说，不论其TTL（Time to Live，生存时间）值为多少，都不会被转发出本地网段
224.0.1.0～238.255.255.255 | 用户组地址，全网范围内有效。包含两种特定的组地址： l 232.0.0.0/8：SSM组地址 l 233.0.0.0/8：GLOP组地址
239.0.0.0～239.255.255.255 | 本地管理组地址，仅在本地管理域内有效。使用本地管理组地址可以灵活定义组播域的范围，以实现不同组播域之间的地址隔离，从而有助于在不同组播域内重复使用相同组播地址而不会引起冲突。详情请参见RFC 2365

l 组播组中的成员是动态的，主机可以在任何时刻加入或离开组播组。

l GLOP是一种AS（Autonomous System，自治系统）之间的组播地址分配机制，将AS号填入该范围内组播地址的中间两个字节中，每个AS都可以得到255个组播地址。有关GLOP的详细介绍请参见RFC 2770。

表1-3 常用永久组地址及其含义

永久组地址 | 含义
224.0.0.1 | 所有系统，包括主机与路由器
224.0.0.2 | 所有组播路由器
224.0.0.3 | 未分配
224.0.0.4 | DVMRP（Distance Vector Multicast Routing Protocol，距离矢量组播路由协议）路由器
224.0.0.5 | OSPF（Open Shortest Path First，开放最短路径优先）路由器
224.0.0.6 | OSPF指定路由器/备用指定路由器
224.0.0.7 | ST（Shared Tree，共享树）路由器
224.0.0.8 | ST主机
224.0.0.9 | RIP-2（Routing Information Protocol version 2，路由信息协议版本2）路由器
224.0.0.11 | 移动代理
224.0.0.12 | DHCP（Dynamic Host Configuration Protocol，动态主机配置协议）服务器/中继代理
224.0.0.13 | 所有PIM（Protocol Independent Multicast，协议无关组播）路由器
224.0.0.14 | RSVP（Resource Reservation Protocol，资源预留协议）封装
224.0.0.15 | 所有CBT（Core-Based Tree，有核树）路由器
224.0.0.16 | 指定SBM（Subnetwork Bandwidth Management，子网带宽管理）
224.0.0.17 | 所有SBM
224.0.0.18 | VRRP（Virtual Router Redundancy Protocol，虚拟路由器冗余协议）

(2) IPv6组播地址

图1-4 IPv6组播地址格式

如图1-4 所示，IPv6组播地址中各字段的含义如下：

l 0xFF：最高8比特为11111111，标识此地址为IPv6组播地址。

图1-5 Flags字段格式

l Flags：4比特，如图1-5 所示，该字段中各位的取值及含义如表1-4 所示。

表1-4 Flags字段各位的取值及含义

位 | 取值及含义
0位 | 保留位，必须取0
R位 | l 取0表示非内嵌RP的IPv6组播地址 l 取1则表示内嵌RP的IPv6组播地址（此时P、T位也必须置1）
P位 | l 取0表示非基于单播前缀的IPv6组播地址 l 取1则表示基于单播前缀的IPv6组播地址（此时T位也必须置1）
T位 | l 取0表示由IANA永久分配的IPv6组播地址 l 取1则表示非永久分配的IPv6组播地址

l Scope：4比特，标识该IPv6组播组的应用范围，其可能的取值及其含义如表1-5 所示。

表1-5 Scope字段的取值及其含义

取值 | 含义
0、F | 保留（Reserved）
1 | 接口本地范围（Interface-Local Scope）
2 | 链路本地范围（Link-Local Scope）
3 | 子网本地范围（Subnet-Local Scope）
4 | 管理本地范围（Admin-Local Scope）
5 | 站点本地范围（Site-Local Scope）
6、7、9～D | 未分配（Unassigned）
8 | 机构本地范围（Organization-Local Scope）
E | 全球范围（Global Scope）

l Group ID：112比特，IPv6组播组的标识号，用来在由Scope字段所指定的范围内唯一标识IPv6组播组。

2. 以太网组播MAC地址

以太网组播MAC地址用于在链路层上标识属于同一组播组的接收者。

(1) IPv4组播MAC地址

IANA规定，IPv4组播MAC地址的高24位为0x01005E，第25位为0，低23位为IPv4组播地址的低23位。IPv4组播地址与MAC地址的映射关系如图1-6 所示。

图1-6 IPv4组播地址与MAC地址的映射关系

由于IPv4组播地址的高4位是1110，代表组播标识，而低28位中只有23位被映射到IPv4组播MAC地址，这样IPv4组播地址中就有5位信息丢失。于是，就有32个IPv4组播地址映射到了同一个IPv4组播MAC地址上，因此在二层处理过程中，设备可能要接收一些本IPv4组播组以外的组播数据，而这些多余的组播数据就需要设备的上层进行过滤了。

(2) IPv6组播MAC地址

IPv6组播MAC地址的高16位为0x3333，低32位为IPv6组播地址的低32位。如图1-7 所示，是IPv6组播地址FF1E::F30E:101的MAC地址映射举例。

图1-7 IPv6组播地址的MAC地址映射举例

1.3.2 组播协议

l 通常，我们把工作在网络层的IP组播称为“三层组播”，相应的组播协议称为“三层组播协议”，包括IGMP/MLD、PIM/IPv6 PIM、MSDP、MBGP/IPv6 MBGP等；把工作在数据链路层的IP组播称为“二层组播”，相应的组播协议称为“二层组播协议”，包括IGMP Snooping/MLD Snooping、PIM Snooping/IPv6 PIM Snooping、组播VLAN/IPv6组播VLAN等。

l IGMP Snooping、PIM Snooping、组播VLAN、IGMP、PIM、MSDP和MBGP应用于IPv4；MLD Snooping、IPv6 PIM Snooping、IPv6组播VLAN、MLD、IPv6 PIM和IPv6 MBGP应用于IPv6。

本节主要针对二、三层组播协议在网络中的应用位置和功能进行总体介绍，有关各协议的详细介绍请分别参见“IP组播配置指导”中的相应内容。

1. 三层组播协议

三层组播协议包括组播组管理协议和组播路由协议两种类型，它们在网络中的应用位置如图1-8 所示。

图1-8 三层组播协议的应用位置

(1) 组播组管理协议

在主机和与其直接相连的三层组播设备之间通常采用组播组的管理协议IGMP（Internet Group Management Protocol，互联网组管理协议）或MLD（Multicast Listener Discovery Protocol，组播侦听者发现协议），该协议规定了主机与三层组播设备之间建立和维护组播组成员关系的机制。

(2) 组播路由协议

组播路由协议运行在三层组播设备之间，用于建立和维护组播路由，并正确、高效地转发组播数据包。组播路由建立了从一个数据源端到多个接收端的无环（loop-free）数据传输路径，即组播分发树。

对于ASM模型，可以将组播路由分为域内和域间两大类：

l 域内组播路由用来在AS内部发现组播源并构建组播分发树，从而将组播信息传递到接收者。在众多域内组播路由协议中，PIM（Protocol Independent Multicast，协议无关组播）是目前较为典型的一个。按照转发机制的不同，PIM可以分为DM（Dense Mode，密集模式）和SM（Sparse Mode，稀疏模式）两种模式。

l 域间组播路由用来实现组播信息在AS之间的传递，目前比较成型的解决方案有：MSDP（Multicast Source Discovery Protocol，组播源发现协议）能够跨越AS传播组播源的信息；而MP-BGP（MultiProtocol Border Gateway Protocol，多协议边界网关协议）的组播扩展MBGP（Multicast BGP）则能够跨越AS传播组播路由。

对于SSM模型，没有域内和域间的划分。由于接收者预先知道组播源的具体位置，因此只需要借助PIM-SM构建的通道即可实现组播信息的传输。

2. 二层组播协议

二层组播协议包括IGMP Snooping/MLD Snooping、PIM Snooping/IPv6 PIM Snooping、组播VLAN/IPv6组播VLAN等，它们在网络中的应用位置如图1-9 所示。

图1-9 二层组播协议的应用位置

(1) IGMP Snooping/MLD Snooping

IGMP Snooping（Internet Group Management Protocol Snooping，互联网组管理协议窥探）和MLD Snooping（Multicast Listener Discovery Snooping，组播侦听者发现协议窥探）是运行在二层设备上的组播约束机制，通过窥探和分析主机与三层组播设备之间交互的IGMP或MLD报文来管理和控制组播组，从而可以有效抑制组播数据在二层网络中的扩散。

(2) PIM Snooping/IPv6 PIM Snooping

运行PIM Snooping（Protocol Independent Multicast Snooping，协议无关组播窥探）或IPv6 PIM Snooping的二层设备通过对收到的PIM协议报文进行分析，将有接收需求的端口添加到相应的组播转发表项中，以实现组播报文的精确转发。

(3) 组播VLAN/IPv6组播VLAN

在传统的组播点播方式下，当连接在二层设备上、属于不同VLAN的用户分别进行组播点播时，三层组播设备需要向该二层设备的每个VLAN分别发送一份组播数据；而当二层设备运行了组播VLAN或IPv6组播VLAN之后，三层组播设备只需向该二层设备的组播VLAN或IPv6组播VLAN发送一份组播数据即可，从而既避免了带宽的浪费，也减轻了三层组播设备的负担。


1.4 组播报文的转发机制

在组播模型中，IP报文的目的地址字段为组播组地址，组播源向以此目的地址所标识的主机群组传送信息。因此，转发路径上的组播路由器为了将组播报文传送到各个方位的接收站点，往往需要将从一个入接口收到的组播报文转发到多个出接口。与单播模型相比，组播模型的复杂性就在于此：

l 为了保证组播报文在网络中的传输，必须依靠单播路由表或者单独提供给组播使用的路由表（如MBGP路由表）来指导转发；

l 为了处理同一设备在不同接口上收到来自不同对端的相同组播信息，需要对组播报文的入接口进行RPF（Reverse Path Forwarding，逆向路径转发）检查，以决定转发还是丢弃该报文。RPF检查机制是大部分组播路由协议进行组播转发的基础。

有关RPF机制的详细介绍，请参见“IP组播配置指导”中的“组播路由与转发”或“IPv6组播路由与转发”。


1.5 多实例组播

l 目前，IPv6不支持多实例组播

l S3600V2-SI不支持多实例组播

简单地说，多实例组播就是指在MPLS L3VPN中应用组播。

1.5.1 多实例简介

各VPN网络之间、VPN网络与公共网络之间要求信息隔离。如图1-10 所示，VPN A和VPN B通过PE设备接入公共网络。

图1-10 MPLS L3VPN典型组网

l P设备专属于公网，各CE设备则专属于某一VPN。每台设备只为其专属的网络服务，仅维护一套转发机制。

l PE设备同时接入公网和VPN网络，同时为多个网络服务。在设备上必须严格区分各个网络的信息并为各个网络独立维护一套转发机制。这时，PE设备上为同一网络服务的一套软硬件设施统称为一个实例（Instance）。PE设备上同时存在多个实例，而同一个实例也可以分布在多台PE设备上。在PE设备上，我们将服务于公网的实例称为公网实例，服务于VPN的实例则称为VPN实例。

1.5.2 多实例在组播中的应用

在PE设备上应用多实例组播之后，将具备以下功能：

l 每个实例都独立维护一套组播转发机制：支持各种组播协议，拥有各自独立的PIM邻居列表、组播路由表等信息。每个实例转发组播数据时只查找本实例的转发表或路由表；

l 保证各实例之间相互隔离；

l 实现公网实例和VPN实例之间的信息交流和数据转换。

组播VPN是基于MPLS L3VPN网络来实现组播传输的技术。以图1-10 中的VPN实例A为例，当VPN A中的组播源向某组播组发送组播数据时，在网络中所有可能的接收者中，只有属于VPN A的组播组成员才能收到该组播源发来的组播数据。组播数据在VPN A中以组播方式进行传输，在公网中也以组播方式进行传输。


1 IGMP Snooping配置

相关链接

  • 1.1 IGMP Snooping简介
  • 1.2 IGMP Snooping配置任务简介
  • 1.3 配置IGMP Snooping基本功能
  • 1.4 配置IGMP Snooping端口功能
  • 1.5 配置IGMP Snooping查询器
  • 1.6 配置IGMP Snooping Proxying
  • 1.7 配置IGMP Snooping策略
  • 1.8 IGMP Snooping显示和维护
  • 1.9 IGMP Snooping典型配置举例
  • 1.10 常见配置错误举例
  • 1.11 附录
父主题： 02-IGMP Snooping配置


1.1 IGMP Snooping简介

IGMP Snooping是Internet Group Management Protocol Snooping（互联网组管理协议窥探）的简称，它是运行在二层设备上的组播约束机制，用于管理和控制组播组。

1.1.1 IGMP Snooping原理

运行IGMP Snooping的二层设备通过对收到的IGMP报文进行分析，为端口和MAC组播地址建立起映射关系，并根据这样的映射关系转发组播数据。

如 图1-1 所示，当二层设备没有运行IGMP Snooping时，组播数据在二层被广播；当二层设备运行了IGMP Snooping后，已知组播组的组播数据不会在二层被广播，而在二层被组播给指定的接收者。

图1-1 二层设备运行IGMP Snooping前后的对比

IGMP Snooping通过二层组播将信息只转发给有需要的接收者，可以带来以下好处：

l 减少了二层网络中的广播报文，节约了网络带宽；

l 增强了组播信息的安全性；

l 为实现对每台主机的单独计费带来了方便。

1.1.2 IGMP Snooping基本概念

1. IGMP Snooping相关端口

如 图1-2 所示，Router A连接组播源，在Switch A和Switch B上分别运行IGMP Snooping，Host A和Host C为接收者主机（即组播组成员）。

图1-2 IGMP Snooping相关端口

结合 图1-2 ，介绍一下IGMP Snooping相关的端口概念：

l 路由器端口（Router Port）：交换机上朝向三层组播设备（DR或IGMP查询器）一侧的端口，如Switch A和Switch B各自的Ethernet1/0/1端口。交换机将本设备上的所有路由器端口都记录在路由器端口列表中。

l 成员端口（Member Port）：又称组播组成员端口，表示交换机上朝向组播组成员一侧的端口，如Switch A的Ethernet1/0/2和Ethernet1/0/3端口，以及Switch B的Ethernet1/0/2端口。交换机将本设备上的所有成员端口都记录在IGMP Snooping转发表中。

l 本文中提到的路由器端口都是指交换机上朝向组播路由器的端口，而不是指路由器上的端口。

l 如不特别指明，本文中提到的路由器/成员端口均包括动态和静态端口。

l 在运行了IGMP Snooping的交换机上，所有收到源地址不为0.0.0.0的IGMP普遍组查询报文或PIM Hello报文的端口都将被视为动态路由器端口。有关PIM Hello报文的详细介绍，请参见“IP组播配置指导”中的“PIM”。

2. IGMP Snooping动态端口老化定时器

表1-1 IGMP Snooping动态端口老化定时器

定时器 | 说明 | 超时前应收到的报文 | 超时后交换机的动作
动态路由器端口老化定时器 | 交换机为其每个动态路由器端口都启动一个定时器，其超时时间就是动态路由器端口老化时间 | 源地址不为0.0.0.0的IGMP普遍组查询报文或PIM Hello报文 | 将该端口从路由器端口列表中删除
动态成员端口老化定时器 | 当一个端口动态加入某组播组时，交换机为该端口启动一个定时器，其超时时间就是动态成员端口老化时间 | IGMP成员关系报告报文 | 将该端口从IGMP Snooping转发表中删除

IGMP Snooping端口老化机制只针对动态端口，静态端口永不老化。

1.1.3 IGMP Snooping工作机制

运行了IGMP Snooping的交换机对不同IGMP动作的具体处理方式如下：

本节中所描述的增删端口动作均只针对动态端口，静态端口只能通过相应的配置进行增删，具体步骤请参见“ 1.4.3 配置静态端口 ”。

1. 普遍组查询

IGMP查询器定期向本地网段内的所有主机与路由器（224.0.0.1）发送IGMP普遍组查询报文，以查询该网段有哪些组播组的成员。

在收到IGMP普遍组查询报文时，交换机将其通过VLAN内除接收端口以外的其它所有端口转发出去，并对该报文的接收端口做如下处理：

l 如果在路由器端口列表中已包含该动态路由器端口，则重置其老化定时器。

l 如果在路由器端口列表中尚未包含该动态路由器端口，则将其添加到路由器端口列表中，并启动其老化定时器。

2. 报告成员关系

以下情况，主机会向IGMP查询器发送IGMP成员关系报告报文：

l 当组播组的成员主机收到IGMP查询报文后，会回复IGMP成员关系报告报文。

l 如果主机要加入某个组播组，它会主动向IGMP查询器发送IGMP成员关系报告报文以声明加入该组播组。

在收到IGMP成员关系报告报文时，交换机将其通过VLAN内的所有路由器端口转发出去，从该报文中解析出主机要加入的组播组地址，并对该报文的接收端口做如下处理：

l 如果不存在该组播组所对应的转发表项，则创建转发表项，将该端口作为动态成员端口添加到出端口列表中，并启动其老化定时器；

l 如果已存在该组播组所对应的转发表项，但其出端口列表中不包含该端口，则将该端口作为动态成员端口添加到出端口列表中，并启动其老化定时器；

l 如果已存在该组播组所对应的转发表项，且其出端口列表中已包含该动态成员端口，则重置其老化定时器。

交换机不会将IGMP成员关系报告报文通过非路由器端口转发出去，因为根据主机上的IGMP成员关系报告抑制机制，如果非路由器端口下还有该组播组的成员主机，则这些主机在收到该报告报文后便抑制了自身的报告，从而使交换机无法获知这些端口下还有该组播组的成员主机。有关主机上的IGMP成员关系报告抑制机制的详细介绍，请参见“IP组播配置指导”中的“IGMP”。

3. 离开组播组

运行IGMPv1的主机离开组播组时不会发送IGMP离开组报文，因此交换机无法立即获知主机离开的信息。但是，由于主机离开组播组后不会再发送IGMP成员关系报告报文，因此当其对应的动态成员端口的老化定时器超时后，交换机就会将该端口对应的转发表项从转发表中删除。

运行IGMPv2或IGMPv3的主机离开组播组时，会通过发送IGMP离开组报文，以通知组播路由器自己离开了某个组播组。当交换机从某动态成员端口上收到IGMP离开组报文时，首先判断要离开的组播组所对应的转发表项是否存在，以及该组播组所对应转发表项的出端口列表中是否包含该接收端口：

l 如果不存在该组播组对应的转发表项，或者该组播组对应转发表项的出端口列表中不包含该端口，交换机不会向任何端口转发该报文，而将其直接丢弃；

l 如果存在该组播组对应的转发表项，且该组播组对应转发表项的出端口列表中包含该端口，交换机会将该报文通过VLAN内的所有路由器端口转发出去。同时，由于并不知道该接收端口下是否还有该组播组的其它成员，所以交换机不会立刻把该端口从该组播组所对应转发表项的出端口列表中删除，而是重置其老化定时器。

当IGMP查询器收到IGMP离开组报文后，从中解析出主机要离开的组播组的地址，并通过接收端口向该组播组发送IGMP特定组查询报文。交换机在收到IGMP特定组查询报文后，将其通过VLAN内的所有路由器端口和该组播组的所有成员端口转发出去。对于IGMP离开组报文的接收端口（假定为动态成员端口），交换机在其老化时间内：

l 如果从该端口收到了主机响应该特定组查询的IGMP成员关系报告报文，则表示该端口下还有该组播组的成员，于是重置其老化定时器；

l 如果没有从该端口收到主机响应特定组查询的IGMP成员关系报告报文，则表示该端口下已没有该组播组的成员，则在其老化时间超时后，将其从该组播组所对应转发表项的出端口列表中删除。

1.1.4 IGMP Snooping Proxying

为了减少上游设备收到的IGMP报告报文和离开报文的数量，可以通过在边缘设备上配置IGMP Snooping Proxying（IGMP Snooping代理）功能，使其能够代理下游主机来向上游设备发送报告报文和离开报文。配置了IGMP Snooping Proxying功能的设备称为IGMP Snooping代理设备，在其上游设备看来，它就相当于一台主机。

尽管在其上游设备看来，IGMP Snooping代理设备相当于一台主机，但主机上的IGMP成员关系报告抑制机制在IGMP Snooping代理设备上并不会生效。有关主机上的IGMP成员关系报告抑制机制的详细介绍，请参见“IP组播配置指导”中的“IGMP”。

图1-3 IGMP Snooping Proxying组网图

如 图1-3 所示，作为IGMP Snooping代理设备的Switch A，对其上游的IGMP查询器Router A来说相当于一台主机，代理下游主机向Router A发送报告报文和离开报文。

IGMP Snooping代理设备对IGMP报文的处理方式如 表1-2 所示。

表1-2 IGMP Snooping代理设备对IGMP报文的处理方式

IGMP报文类型 | 处理方式
普遍组查询报文 | 收到普遍组查询报文后，向本VLAN内除接收端口以外的所有端口转发；同时根据本地维护的组成员关系生成报告报文，并向所有路由器端口发送
特定组查询报文 | 收到针对某组播组的特定组查询报文时，若该组对应的转发表项中还有成员端口，则向所有路由器端口回复该组的报告报文
报告报文 | 从某端口收到某组播组的报告报文时，若已存在该组对应的转发表项，且其出端口列表中已包含该动态成员端口，则重置其老化定时器；若已存在该组对应的转发表项，但其出端口列表中不包含该端口，则将该端口作为动态成员端口添加到出端口列表中，并启动其老化定时器；若尚不存在该组对应的转发表项，则创建转发表项，将该端口作为动态成员端口添加到出端口列表中，并启动其老化定时器，然后向所有路由器端口发送该组的报告报文
离开报文 | 从某端口收到某组播组的离开报文后，向该端口发送针对该组的特定组查询报文。只有当删除某组播组对应转发表项中的最后一个成员端口时，才会向所有路由器端口发送该组的离开报文

1.1.5 协议规范

与IGMP Snooping相关的协议规范有：

l RFC 4541：Considerations for Internet Group Management Protocol (IGMP) and Multicast Listener Discovery (MLD) Snooping Switches


1.2 IGMP Snooping配置任务简介

表1-3 IGMP Snooping配置任务简介

配置任务 |  | 说明 | 详细配置
配置IGMP Snooping基本功能 | 使能IGMP Snooping | 必选 | 1.3.2
 | 配置IGMP Snooping版本 | 可选 | 1.3.3
 | 配置全局IGMP Snooping转发表项的最大数量 | 可选 | 1.3.4
 | 配置静态组播MAC地址表项 | 可选 | 1.3.5
配置IGMP Snooping端口功能 | 配置动态端口老化定时器 | 可选 | 1.4.2
 | 配置静态端口 | 可选 | 1.4.3
 | 配置模拟主机加入 | 可选 | 1.4.4
 | 配置端口快速离开 | 可选 | 1.4.5
 | 禁止端口成为动态路由器端口 | 可选 | 1.4.6
配置IGMP Snooping查询器 | 使能IGMP Snooping查询器 | 可选 | 1.5.2
 | 配置IGMP查询和响应 | 可选 | 1.5.3
 | 配置IGMP查询报文源IP地址 | 可选 | 1.5.4
配置IGMP Snooping Proxying | 使能IGMP Snooping Proxying | 可选 | 1.6.2
 | 配置代理发送IGMP报文的源IP地址 | 可选 | 1.6.3
配置IGMP Snooping策略 | 配置组播组过滤器 | 可选 | 1.7.2
 | 配置组播数据报文源端口过滤 | 可选 | 1.7.3
 | 配置丢弃未知组播数据报文 | 可选 | 1.7.4
 | 配置IGMP成员关系报告报文抑制 | 可选 | 1.7.5
 | 配置端口加入的组播组最大数量 | 可选 | 1.7.6
 | 配置组播组替换 | 可选 | 1.7.7
 | 配置IGMP报文的802.1p优先级 | 可选 | 1.7.8
 | 配置组播用户控制策略 | 可选 | 1.7.9
 | 配置IGMP Snooping主机跟踪功能 | 可选 | 1.7.10

对于IGMP Snooping的相关配置来说：

l IGMP-Snooping视图下的配置对所有VLAN都有效，VLAN视图下的配置只对当前VLAN有效。对于某VLAN来说，优先采用该VLAN视图下的配置，只有当在该VLAN视图下没有进行配置时，才采用IGMP-Snooping视图下的相应配置。

l IGMP-Snooping视图下的配置对所有端口都有效；二层以太网端口视图下的配置只对当前端口有效；二层聚合接口视图下的配置只对当前接口有效；端口组视图下的配置对当前端口组中的所有端口有效。对于某端口来说，优先采用二层以太网端口视图、二层聚合接口视图或端口组视图下的配置，只有当在上述视图下没有进行配置时，才采用IGMP-Snooping视图下的相应配置。

l 二层聚合接口与其各成员端口上的配置互不影响，且成员端口上的配置只有当该端口退出聚合组后才会生效，二层聚合接口上的配置也不会参与聚合计算。


1.3 配置IGMP Snooping基本功能

1.3.1 配置准备

在配置IGMP Snooping基本功能之前，需完成以下任务：

l 配置相应VLAN

在配置IGMP Snooping基本功能之前，需准备以下数据：

l IGMP Snooping的版本

1.3.2 使能IGMP Snooping

表1-4 使能IGMP Snooping

操作 | 命令 | 说明
进入系统视图 | system-view | -
全局使能IGMP Snooping，并进入IGMP-Snooping视图 | igmp-snooping | 必选 缺省情况下，IGMP Snooping处于关闭状态
退回系统视图 | quit | -
进入VLAN视图 | vlan vlan-id | -
在VLAN内使能IGMP Snooping | igmp-snooping enable | 必选 缺省情况下，VLAN内的IGMP Snooping处于关闭状态

l 在VLAN内使能IGMP Snooping之前，必须先在系统视图下全局使能IGMP Snooping，否则将无法在VLAN内使能IGMP Snooping。

l 在VLAN内使能IGMP Snooping之后，不允许在该VLAN所对应的VLAN接口上再使能IGMP和PIM，反之亦然。

l 在指定VLAN内使能了IGMP Snooping之后，IGMP Snooping功能只在属于该VLAN的端口上生效。

1.3.3 配置IGMP Snooping版本

配置IGMP Snooping的版本，实际上就是配置IGMP Snooping可以处理的IGMP报文的版本：

l 当IGMP Snooping的版本为2时，IGMP Snooping能够对IGMPv1和IGMPv2的报文进行处理，对IGMPv3的报文则不进行处理，而是在VLAN内将其广播；

l 当IGMP Snooping的版本为3时，IGMP Snooping能够对IGMPv1、IGMPv2和IGMPv3的报文进行处理。

表1-5 配置IGMP Snooping版本

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入VLAN视图 | vlan vlan-id | -
配置IGMP Snooping的版本 | igmp-snooping version version-number | 必选 缺省情况下，IGMP Snooping的版本为2

当IGMP Snooping的版本由版本3切换到版本2时，系统将清除所有通过动态加入的IGMP Snooping转发表项；对于在版本3下通过手工配置而静态加入的IGMP Snooping转发表项，则分为以下两种情况进行不同的处理：

l 如果配置的仅仅是静态加入组播组，而没有指定组播源，则这些转发表项将不会被清除；

l 如果配置的是指定了组播源的静态加入组播源组，则这些转发表项将会被清除，并且当再次切换回版本3时，这些转发表项将被重新恢复。

有关静态加入的详细配置，请参见“ 1.4.3 配置静态端口 ”。

1.3.4 配置全局IGMP Snooping转发表项的最大数量

用户可以调整全局IGMP Snooping转发表项的最大数量，当设备上维护的表项数量达到最大数量后，将不再创建新的表项，直至有表项被老化或被手工删除。

表1-6 配置全局IGMP Snooping转发表项的最大数量

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入IGMP-Snooping视图 | igmp-snooping | -
配置全局IGMP Snooping转发表项的最大数量 | entry-limit limit | 必选 缺省情况下，S3600V2-EI系列交换机全局IGMP Snooping转发表项的最大数量为2000，S3600V2-SI系列交换机全局IGMP Snooping转发表项的最大数量为1024

在对全局IGMP Snooping转发表项的最大数量进行配置时，如果设备上维护的表项数量已超过了配置值，系统将提示用户删除多余表项，但并不会自动删除任何已存在的表项，同时也不再继续创建新的表项。

1.3.5 配置静态组播MAC地址表项

在二层组播中，除了可通过二层组播协议（如IGMP Snooping）动态建立组播MAC地址表项外，还可以通过手工方式配置组播MAC地址表项，将端口与组播MAC地址进行静态绑定，以便灵活控制组播信息送达的目的端口。

1. 系统视图下配置静态组播MAC地址表项

表1-7 系统视图下配置静态组播MAC地址表项

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置静态组播MAC地址表项 | mac-address multicast mac-address interface interface-list vlan vlan-id | 必选 缺省情况下，没有配置静态组播MAC地址表项

2. 接口视图下配置静态组播MAC地址表项

表1-8 接口视图下配置静态组播MAC地址表项

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
进入相应视图 | 进入以太网或二层聚合接口视图 | interface interface-type interface-number | 二者必选其一 进入以太网接口或二层聚合接口视图后，下面进行的配置只在当前接口生效；进入端口组视图后，下面进行的配置将在端口组的所有接口生效
 | 进入端口组视图 | port-group manual port-group-name
配置静态组播MAC地址表项 |  | mac-address multicast mac-address vlan vlan-id | 必选 缺省情况下，没有配置静态组播MAC地址表项

l 系统视图下的配置对指定接口有效，而接口视图下的配置只对当前接口（或当前端口组内的所有接口）有效。

l 可手工配置的组播MAC地址表项为除0100-5Exx-xxxx以外的任意合法的组播MAC地址（组播MAC地址就是最高字节的最低比特位为1的MAC地址），其中x代表0～F的任意一个十六进制数。


1.4 配置IGMP Snooping端口功能

1.4.1 配置准备

在配置IGMP Snooping端口功能之前，需完成以下任务：

l 在VLAN内使能IGMP Snooping

l 配置相应端口组

在配置IGMP Snooping端口功能之前，需准备以下数据：

l 动态路由器端口老化时间

l 动态成员端口老化时间

l 组播组和组播源的地址

1.4.2 配置动态端口老化定时器

对于动态路由器端口，如果在其老化时间超时前没有收到IGMP普遍组查询报文或者PIM Hello报文，交换机将把该端口从路由器端口列表中删除。

对于动态成员端口，如果在其老化时间超时前没有收到该组播组的IGMP成员关系报告报文，交换机将把该端口从该组播组所对应转发表项的出端口列表中删除。

如果组播组成员的变动比较频繁，可以把动态成员端口老化时间设置小一些，反之亦然。

1. 全局配置动态端口老化定时器

表1-9 全局配置动态端口老化定时器

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入IGMP-Snooping视图 | igmp-snooping | -
配置动态路由器端口老化时间 | router-aging-time interval | 必选 缺省情况下，动态路由器端口的老化时间为105秒
配置动态成员端口老化时间 | host-aging-time interval | 必选 缺省情况下，动态成员端口的老化时间为260秒

2. 在VLAN内配置动态端口老化定时器

表1-10 在VLAN内配置动态端口老化定时器

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入VLAN视图 | vlan vlan-id | -
配置动态路由器端口老化时间 | igmp-snooping router-aging-time interval | 必选 缺省情况下，动态路由器端口的老化时间为105秒
配置动态成员端口老化时间 | igmp-snooping host-aging-time interval | 必选 缺省情况下，动态成员端口的老化时间为260秒

1.4.3 配置静态端口

如果某端口所连接的主机需要固定接收发往某组播组或组播源组的组播数据，可以配置该端口静态加入该组播组或组播源组，成为静态成员端口。

可以通过将交换机上的端口配置为静态路由器端口，从而使交换机上所有收到的组播数据可以通过该端口被转发出去。

表1-11 配置静态端口

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
进入相应视图 | 进入二层以太网或二层聚合接口视图 | interface interface-type interface-number | 二者必选其一
 | 进入端口组视图 | port-group manual port-group-name
配置静态成员端口 |  | igmp-snooping static-group group-address [ source-ip source-address ] vlan vlan-id | 必选 缺省情况下，端口不是静态成员端口
配置静态路由器端口 |  | igmp-snooping static-router-port vlan vlan-id | 必选 缺省情况下，端口不是静态路由器端口

l 静态成员端口不会对IGMP查询器发出的查询报文进行响应；当配置静态成员端口或取消静态成员端口的配置时，端口也不会主动发送IGMP成员关系报告报文或IGMP离开组报文。

l 静态成员端口和静态路由器端口都不会老化，只能通过相应的 undo 命令删除。

1.4.4 配置模拟主机加入

通常情况下，运行IGMP的主机会对IGMP查询器发出的查询报文进行响应。如果主机由于某种原因无法响应，就可能导致组播路由器认为该网段没有该组播组的成员，从而取消相应的转发路径。

为避免这种情况的发生，可以将交换机的端口配置成为组播组成员（即配置模拟主机加入）。当收到IGMP查询报文时由模拟主机进行响应，从而保证该交换机能够继续收到组播报文。

模拟主机加入功能的实现原理如下：

l 在某端口上使能模拟主机加入功能时，交换机会通过该端口主动发送一个IGMP成员关系报告报文；

l 在某端口上使能了模拟主机加入功能后，当收到IGMP普遍组查询报文时，交换机会通过该端口响应一个IGMP成员关系报告报文；

l 在某端口上关闭模拟主机加入功能时，交换机会通过该端口发送一个IGMP离开组报文。

表1-12 配置模拟主机加入

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
进入相应视图 | 进入二层以太网或二层聚合接口视图 | interface interface-type interface-number | 二者必选其一
 | 进入端口组视图 | port-group manual port-group-name
配置模拟主机加入组播组或组播源组 |  | igmp-snooping host-join group-address [ source-ip source-address ] vlan vlan-id | 必选 缺省情况下，没有配置模拟主机加入组播组或组播源组

l 每配置一次模拟主机加入，即相当于启动了一台独立的主机。例如，当收到IGMP查询报文时，每条配置所对应的模拟主机将分别进行响应。

l 与静态成员端口不同，配置了模拟主机加入的端口会作为动态成员端口而参与动态成员端口的老化过程。

1.4.5 配置端口快速离开

端口快速离开是指当交换机从某端口收到主机发送的离开某组播组的IGMP离开组报文时，直接把该端口从对应转发表项的出端口列表中删除。此后，当交换机收到对该组播组的IGMP特定组查询报文时，交换机将不再向该端口转发。

在交换机上，在只连接有一个接收者的端口上，可以通过使能端口快速离开功能来节约带宽和资源；而在连接有多个接收者的端口上，如果交换机或该端口所在的VLAN已使能了丢弃未知组播数据报文功能，则不要再使能端口快速离开功能，否则，一个接收者的离开将导致该端口下属于同一组播组的其它接收者无法收到组播数据。

1. 全局配置端口快速离开

表1-13 全局配置端口快速离开

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入IGMP-Snooping视图 | igmp-snooping | -
使能端口快速离开功能 | fast-leave [ vlan vlan-list ] | 必选 缺省情况下，端口快速离开功能处于关闭状态

2. 在端口上配置端口快速离开

表1-14 在端口上配置端口快速离开

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
进入相应视图 | 进入二层以太网或二层聚合接口视图 | interface interface-type interface-number | 二者必选其一
 | 进入端口组视图 | port-group manual port-group-name
使能端口快速离开功能 |  | igmp-snooping fast-leave [ vlan vlan-list ] | 必选 缺省情况下，端口快速离开功能处于关闭状态

1.4.6 禁止端口成为动态路由器端口

目前，在组播用户接入网络中存在以下问题：

l 如果交换机收到了某用户主机发来的IGMP普遍组查询报文或PIM Hello报文，那么该主机所在的端口就将成为动态路由器端口，从而使VLAN内的所有组播报文都会向该端口转发，导致该用户主机收到的组播报文失控。

l 同时，用户主机发送IGMP普遍组查询报文或PIM Hello报文，也会影响该接入网络中三层设备上的组播路由协议状态（如影响IGMP查询器或DR的选举），严重时可能导致网络中断。

当禁止某端口成为动态路由器端口后，即使该端口收到了IGMP普遍组查询报文或PIM Hello报文，该端口也不会成为动态路由器端口，从而能够有效解决上述问题，提高网络的安全性和对组播用户的控制能力。

表1-15 禁止端口成为动态路由器端口

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
进入相应视图 | 进入二层以太网或二层聚合接口视图 | interface interface-type interface-number | 二者必选其一
 | 进入端口组视图 | port-group manual port-group-name
禁止端口成为动态路由器端口 |  | igmp-snooping router-port-deny [ vlan vlan-list ] | 必选 缺省情况下，不禁止端口成为动态路由器端口

本配置与静态路由器端口的配置互不影响。


1.5 配置IGMP Snooping查询器

1.5.1 配置准备

在配置IGMP Snooping查询器之前，需完成以下任务：

l 在VLAN内使能IGMP Snooping

在配置IGMP Snooping查询器之前，需准备以下数据：

l 发送IGMP普遍组查询报文的时间间隔

l 发送IGMP特定组查询报文的时间间隔

l IGMP普遍组查询的最大响应时间

l IGMP普遍组查询报文的源IP地址

l IGMP特定组查询报文的源IP地址

1.5.2 使能IGMP Snooping查询器

在运行了IGMP的组播网络中，会有一台三层组播设备充当IGMP查询器，负责发送IGMP查询报文，使三层组播设备能够在网络层建立并维护组播转发表项，从而在网络层正常转发组播数据。

但是，在一个没有三层组播设备的网络中，由于二层设备并不支持IGMP，因此无法实现IGMP查询器的相关功能。为了解决这个问题，可以在二层设备上使能IGMP Snooping查询器，使二层设备能够在数据链路层建立并维护组播转发表项，从而在数据链路层正常转发组播数据。

表1-16 使能IGMP Snooping查询器

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入VLAN视图 | vlan vlan-id | -
使能IGMP Snooping查询器 | igmp-snooping querier | 必选 缺省情况下，IGMP Snooping查询器处于关闭状态

尽管IGMP Snooping查询器并不参与IGMP查询器的选举，但在运行了IGMP的组播网络中，配置IGMP Snooping查询器不但没有实际的意义，反而可能会由于其发送的IGMP普遍组查询报文的源IP地址较小而影响IGMP查询器的选举。

有关IGMP查询器的详细介绍，请参见“IP组播配置指导”中的“IGMP”。

1.5.3 配置IGMP查询和响应

可以根据网络的实际情况来修改发送IGMP普遍组查询报文的时间间隔。

在收到IGMP查询报文（包括普遍组查询和特定组查询）后，主机会为其所加入的每个组播组都启动一个定时器，定时器的值在0到最大响应时间（该时间值由主机从所收到的IGMP查询报文的最大响应时间字段获得）中随机选定，当定时器的值减为0时，主机就会向该定时器对应的组播组发送IGMP成员关系报告报文。

合理配置IGMP查询的最大响应时间，既可以使主机对IGMP查询报文做出快速响应，又可以减少由于定时器同时超时，造成大量主机同时发送报告报文而引起的网络拥塞：

l 对于IGMP普遍组查询报文来说，通过配置IGMP普遍组查询的最大响应时间来填充其最大响应时间字段；

l 对于IGMP特定组查询报文来说，所配置的发送IGMP特定组查询报文的时间间隔将被填充到其最大响应时间字段。也就是说，IGMP特定组查询的最大响应时间从数值上与发送IGMP特定组查询报文的时间间隔相同。

1. 全局配置IGMP查询和响应

表1-17 全局配置IGMP查询和响应

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入IGMP-Snooping视图 | igmp-snooping | -
配置IGMP普遍组查询的最大响应时间 | max-response-time interval | 必选 缺省情况下，IGMP普遍组查询的最大响应时间为10秒
配置发送IGMP特定组查询报文的时间间隔 | last-member-query-interval interval | 必选 缺省情况下，发送IGMP特定组查询报文的时间间隔为1秒

2. 在VLAN内配置IGMP查询和响应

表1-18 在VLAN内配置IGMP查询和响应

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入VLAN视图 | vlan vlan-id | -
配置发送IGMP普遍组查询报文的时间间隔 | igmp-snooping query-interval interval | 必选 缺省情况下，发送IGMP普遍组查询报文的时间间隔为60秒
配置IGMP普遍组查询的最大响应时间 | igmp-snooping max-response-time interval | 必选 缺省情况下，IGMP普遍组查询的最大响应时间为10秒
配置发送IGMP特定组查询报文的时间间隔 | igmp-snooping last-member-query-interval interval | 必选 缺省情况下，发送IGMP特定组查询报文的时间间隔为1秒

应确保发送IGMP普遍组查询报文的时间间隔大于IGMP普遍组查询的最大响应时间，否则有可能造成对组播组成员的误删。

1.5.4 配置IGMP查询报文源IP地址

对于收到源IP地址为0.0.0.0的查询报文的端口，交换机不会将其设置为动态路由器端口，从而影响数据链路层组播转发表项的建立，最终导致组播数据无法正常转发。

当由二层设备充当IGMP Snooping查询器时，可以把IGMP查询报文的源IP地址配置为一个有效的IP地址以避免上述问题的出现。

表1-19 配置IGMP查询报文源IP地址

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入VLAN视图 | vlan vlan-id | -
配置IGMP普遍组查询报文源IP地址 | igmp-snooping general-query source-ip { ip-address | current-interface } | 必选 缺省情况下，IGMP普遍组查询报文的源IP地址为0.0.0.0
配置IGMP特定组查询报文源IP地址 | igmp-snooping special-query source-ip { ip-address | current-interface } | 必选 缺省情况下，IGMP特定组查询报文的源IP地址为0.0.0.0

IGMP查询报文源IP地址的改变可能会影响网段内IGMP查询器的选举。


1.6 配置IGMP Snooping Proxying

1.6.1 配置准备

在配置IGMP Snooping Proxying之前，需完成以下任务：

l 在VLAN内使能IGMP Snooping

在配置IGMP Snooping Proxying之前，需准备以下数据：

l 代理发送IGMP报告报文的源IP地址

l 代理发送IGMP离开报文的源IP地址

1.6.2 使能IGMP Snooping Proxying

当在有组播需求的VLAN内使能了IGMP Snooping代理功能后，该设备就成为该VLAN内的IGMP Snooping代理设备。

表1-20 使能IGMP Snooping Proxying

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入VLAN视图 | vlan vlan-id | -
在VLAN内使能IGMP Snooping代理功能 | igmp-snooping proxying enable | 必选 缺省情况下，VLAN内的IGMP Snooping代理功能处于关闭状态

1.6.3 配置代理发送IGMP报文的源IP地址

通过本配置可以改变代理发送的IGMP报告报文和离开报文的源IP地址。

表1-21 配置代理发送IGMP报文的源IP地址

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入VLAN视图 | vlan vlan-id | -
配置代理发送IGMP报告报文的源IP地址 | igmp-snooping report source-ip { ip-address | current-interface } | 必选 缺省情况下，代理发送IGMP报告报文的源IP地址为0.0.0.0
配置代理发送IGMP离开报文的源IP地址 | igmp-snooping leave source-ip { ip-address | current-interface } | 必选 缺省情况下，代理发送IGMP离开报文的源IP地址为0.0.0.0


1.7 配置IGMP Snooping策略

1.7.1 配置准备

在配置IGMP Snooping策略之前，需完成以下任务：

l 在VLAN内使能IGMP Snooping

在配置IGMP Snooping策略之前，需准备以下数据：

l 组播组过滤的ACL规则

l 端口加入的组播组最大数量

l IGMP报文的802.1p优先级

1.7.2 配置组播组过滤器

在使能了IGMP Snooping的交换机上，通过配置组播组过滤器，可以限制用户对组播节目的点播。

在实际应用中，当用户点播某个组播节目时，主机会发起一个IGMP成员关系报告报文，该报文到达交换机后，进行ACL检查：如果该接收端口可以加入这个组播组，则将其列入到IGMP Snooping转发表中；否则交换机就丢弃该报文。这样，未通过ACL检查的组播数据就不会送到该端口，从而达到控制用户点播组播节目的目的。

1. 全局配置组播组过滤器

表1-22 全局配置组播组过滤器

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入IGMP-Snooping视图 | igmp-snooping | -
配置组播组过滤器 | group-policy acl-number [ vlan vlan-list ] | 必选 缺省情况下，没有配置全局组播组过滤器，即各VLAN内主机可以加入任意合法的组播组

2. 在端口上配置组播组过滤器

表1-23 在端口上配置组播组过滤器

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
进入相应视图 | 进入二层以太网或二层聚合接口视图 | interface interface-type interface-number | 二者必选其一
 | 进入端口组视图 | port-group manual port-group-name
配置组播组过滤器 |  | igmp-snooping group-policy acl-number [ vlan vlan-list ] | 必选 缺省情况下，端口上没有配置组播组过滤器，即该端口下的主机可以加入任意合法的组播组

1.7.3 配置组播数据报文源端口过滤

通过配置组播数据报文源端口过滤功能，可以允许或禁止端口作为组播源端口：

l 使能了该功能后，端口下不能连接组播源，因为该端口将过滤掉所有的组播数据报文（但允许组播协议报文通过），只能连接组播数据接收者；

l 关闭了该功能后，端口下既可以连接组播源，也可以连接组播数据接收者。

1. 全局配置组播数据报文源端口过滤

表1-24 全局配置组播数据报文源端口过滤

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入IGMP-Snooping视图 | igmp-snooping | -
使能组播数据报文源端口过滤功能 | source-deny port interface-list | 必选 缺省情况下，组播数据报文源端口过滤功能处于关闭状态

2. 在端口上配置组播数据报文源端口过滤

表1-25 在端口上配置组播数据报文源端口过滤

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
进入相应视图 | 进入二层以太网端口视图 | interface interface-type interface-number | 二者必选其一
 | 进入端口组视图 | port-group manual port-group-name
使能组播数据报文源端口过滤功能 |  | igmp-snooping source-deny | 必选 缺省情况下，组播数据报文源端口过滤功能处于关闭状态

1.7.4 配置丢弃未知组播数据报文

未知组播数据报文是指在IGMP Snooping转发表中不存在对应转发表项的那些组播数据报文，当交换机收到发往未知组播组的报文时，数据报文会在未知组播数据报文所属的VLAN内广播，这样会占用大量的网络带宽，影响转发效率。

表1-26 在VLAN内配置丢弃未知组播数据报文

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入VLAN视图 | vlan vlan-id | -
使能丢弃未知组播数据报文功能 | igmp-snooping drop-unknown | 必选 缺省情况下，丢弃未知组播数据报文的功能处于关闭状态，即对未知组播数据报文进行广播

1.7.5 配置IGMP成员关系报告报文抑制

当二层设备收到来自某组播组成员的IGMP成员关系报告报文时，会将该报文转发给与其直连的三层设备。这样，当二层设备上存在属于某组播组的多个成员时，与其直连的三层设备会收到这些成员发送的相同IGMP成员关系报告报文。

当使能了IGMP成员关系报告报文抑制功能后，在一个查询间隔内二层设备只会把收到的某组播组内的第一个IGMP成员关系报告报文转发给三层设备，而不继续向三层设备转发来自同一组播组的其它IGMP成员关系报告报文，这样可以减少网络中的报文数量。

表1-27 配置IGMP成员关系报告报文抑制

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入IGMP-Snooping视图 | igmp-snooping | -
使能IGMP成员关系报告报文抑制功能 | report-aggregation | 必选 缺省情况下，IGMP成员关系报告报文抑制功能处于使能状态

在IGMP Snooping代理设备上，不论是否使能了IGMP成员关系报告报文抑制功能，只要存在某组播组对应的转发表项，就会将从下游收到的针对该组的报告报文都抑制掉。

1.7.6 配置端口加入的组播组最大数量

通过配置端口加入的组播组最大数量，可以限制用户点播组播节目的数量，从而控制了端口上的数据流量。

表1-28 配置端口加入的组播组最大数量

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
进入相应视图 | 进入二层以太网或二层聚合接口视图 | interface interface-type interface-number | 二者必选其一
 | 进入端口组视图 | port-group manual port-group-name
配置端口加入的组播组最大数量 |  | igmp-snooping group-limit limit [ vlan vlan-list ] | 必选 缺省情况下，S3600V2-EI系列交换机端口加入的组播组最大数量为2000，S3600V2-SI系列交换机端口加入的组播组最大数量为1024

在配置端口加入的组播组最大数量时，如果当前端口上的组播组数量已超过配置值，系统将把该端口相关的所有转发表项从IGMP Snooping转发表中删除，该端口下的主机都需要重新加入组播组，直至该端口上的组播组数量达到限制值为止。其中，如果该端口已配置为静态成员端口，系统会将静态成员端口的配置重新生效一次；如果在该端口上配置了模拟主机加入，系统在收到模拟主机发来的报告报文之后才会重新建立相应的转发表项。

1.7.7 配置组播组替换

由于某些特殊的原因，当前交换机或端口上通过的组播组数目有可能会超过交换机或该端口的限定；另外，在某些特定的应用中，交换机上新加入的组播组需要自动替换已存在的组播组（一个典型的应用就是“频道切换”，即用户通过加入一个新的组播组就能完成离开原组播组并切换到新组播组的动作）。

针对以上情况，可以在交换机或者某些端口上使能组播组替换功能。当交换机或端口上加入的组播组数量已达到限定值时：

l 若使能了组播组替换功能，则新加入的组播组会自动替代已存在的组播组，替代规则是替代IP地址最小的组播组；

l 若没有使能组播组替换功能，则自动丢弃新的IGMP成员关系报告报文。

1. 全局配置组播组替换

表1-29 全局配置组播组替换

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入IGMP-Snooping视图 | igmp-snooping | -
使能组播组替换功能 | overflow-replace [ vlan vlan-list ] | 必选 缺省情况下，组播组替换功能处于关闭状态

2. 在端口上配置组播组替换

表1-30 在端口上配置组播组替换

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
进入相应视图 | 进入二层以太网或二层聚合接口视图 | interface interface-type interface-number | 二者必选其一
 | 进入端口组视图 | port-group manual port-group-name
使能组播组替换功能 |  | igmp-snooping overflow-replace [ vlan vlan-list ] | 必选 缺省情况下，组播组替换功能处于关闭状态

在使能组播组替换功能之前，必须首先配置端口通过的组播组的最大数量（具体配置过程请参见“ 1.7.6 配置端口加入的组播组最大数量 ”），否则组播组替换功能将不会生效。

1.7.8 配置IGMP报文的802.1p优先级

可以通过本配置来改变IGMP报文的802.1p优先级。当交换机的出端口发生拥塞时，交换机通过识别报文的802.1p优先级，优先发送优先级较高的报文。

1. 全局配置IGMP报文的802.1p优先级

表1-31 全局配置IGMP报文的802.1p优先级

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入IGMP-Snooping视图 | igmp-snooping | -
配置IGMP报文的802.1p优先级 | dot1p-priority priority-number | 必选 缺省情况下，IGMP报文的802.1p优先级为0

2. 在VLAN内配置IGMP报文的802.1p优先级

表1-32 在VLAN内配置IGMP报文的802.1p优先级

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入VLAN视图 | vlan vlan-id | -
配置IGMP报文的802.1p优先级 | igmp-snooping dot1p-priority priority-number | 必选 缺省情况下，IGMP报文的802.1p优先级为0

1.7.9 配置组播用户控制策略

组播用户控制策略通常配置在接入交换机上，是基于用户权限控制来实现的，即只有通过授权的用户才能收到相应的组播流，从而达到限制用户对组播节目点播的目的。在实际应用中，用户先要通过接入交换机向RADIUS服务器发起认证（如802.1X认证），当认证通过后再根据用户的点播行为进行策略检查：

l 当用户点播组播节目时，主机会发送IGMP成员关系报告报文，接入交换机收到该报文后对其携带的组播组和组播源地址进行策略检查，若该报文通过检查则允许该用户加入该组播组；否则，接入交换机将丢弃该报文。

l 当用户停止点播组播节目时，主机会发送IGMP离开报文，接入交换机收到该报文后对其携带的组播组和组播源地址进行策略检查，若该报文通过检查则允许该用户离开该组播组；否则，接入交换机将丢弃该报文。

表1-33 配置组播用户控制策略

操作 | 命令 | 说明
进入系统视图 | system-view | -
创建User Profile，并进入User-Profile视图 | user-profile profile-name | -
配置组播用户控制策略 | igmp-snooping access-policy acl-number | 必选 缺省情况下，没有配置组播用户控制策略，即用户可以加入/离开任意合法的组播组
退回系统视图 | quit | -
激活该User Profile | user-profile profile-name enable | 必选 缺省情况下，User Profile处于未激活状态

l 有关 user-profile 和 user-profile enable命令的详细介绍，请参见“安全命令参考”中的“User Profile”。

l 组播用户控制策略与组播组过滤器在功能上类似，二者的区别在于：前者是基于用户权限的组播控制，需要与认证、授权功能结合使用，能够控制组播用户的加入与离开；后者是基于设备端口的组播控制，无需与认证、授权功能结合使用，只能控制组播用户的加入。

1.7.10 配置IGMP Snooping主机跟踪功能

通过使能IGMP Snooping主机跟踪功能，可以使交换机能够记录正在接收组播数据的成员主机信息（包括主机的IP地址、运行时间和超时时间等），以便于网络管理员对这些主机进行监控和管理。

1. 全局配置IGMP Snooping主机跟踪功能

表1-34 全局配置IGMP Snooping主机跟踪功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入IGMP-Snooping视图 | igmp-snooping | -
全局使能IGMP Snooping主机跟踪功能 | host-tracking | 必选 缺省情况下，IGMP Snooping主机跟踪功能处于关闭状态

2. 在VLAN内配置IGMP Snooping主机跟踪功能

表1-35 在VLAN内配置IGMP Snooping主机跟踪功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入VLAN视图 | vlan vlan-id | -
在VLAN内使能IGMP Snooping主机跟踪功能 | igmp-snooping host-tracking | 必选 缺省情况下，IGMP Snooping主机跟踪功能处于关闭状态


1.8 IGMP Snooping显示和维护

在完成上述配置后，在任意视图下执行 display 命令可以显示配置后IGMP Snooping的运行情况，通过查看显示信息验证配置的效果。

在用户视图下执行 reset 命令可以清除组播组信息。

表1-36 IGMP Snooping显示和维护

操作 | 命令
查看IGMP Snooping组的信息 | display igmp-snooping group [ vlan vlan-id ] [ slot slot-number ] [ verbose ] [ | { begin | exclude | include } regular-expression ]
查看IGMP Snooping跟踪的主机信息 | display igmp-snooping host vlan vlan-id group group-address [ source source-address ] [ slot slot-number ] [ | { begin | exclude | include } regular-expression ]
查看静态组播MAC地址表信息 | display mac-address [ mac-address [ vlan vlan-id ] | [ multicast ] [ vlan vlan-id ] [ count ] ] [ | { begin | exclude | include } regular-expression ]
查看IGMP Snooping监听到的IGMP报文的统计信息 | display igmp-snooping statistics [ | { begin | exclude | include } regular-expression ]
清除IGMP Snooping组的动态加入记录 | reset igmp-snooping group { group-address | all } [ vlan vlan-id ]
清除IGMP Snooping监听到的所有IGMP报文的统计信息 | reset igmp-snooping statistics

l reset igmp-snooping group 命令只对使能了IGMP Snooping的VLAN有效，而对VLAN接口上使能了IGMP的VLAN无效。

l reset igmp-snooping group 命令只能清除动态加入记录，而无法清除静态加入记录。


1.9 IGMP Snooping典型配置举例

1.9.1 组策略及模拟主机加入配置举例

1. 组网需求

l 如 图1-4 所示，Router A通过Ethernet1/0/2端口连接组播源（Source），通过Ethernet1/0/1端口连接Switch A；Router A上运行IGMPv2，Switch A上运行版本2的IGMP Snooping，并由Router A充当IGMP查询器。

l 通过配置，使Host A和Host B能且只能接收发往组播组224.1.1.1的组播数据，并且当Host A和Host B即使发生意外而临时中断接收组播数据时，发往组播组224.1.1.1组播数据也能不间断地通过Switch A的端口Ethernet1/0/3和Ethernet1/0/4转发出去；同时，使Switch A将收到的未知组播数据直接丢弃，避免在其所属的VLAN内广播。

2. 组网图

图1-4 组策略及模拟主机加入配置组网图

3. 配置步骤

(1) 配置IP地址

请按照 图1-4 配置各接口的IP地址和子网掩码，具体配置过程略。

(2) 配置Router A

# 使能IP组播路由，在各接口上使能PIM-DM，并在端口Ethernet1/0/1上使能IGMP。

<RouterA> system-view

[RouterA] multicast routing-enable

[RouterA] interface ethernet 1/0/1

[RouterA-Ethernet1/0/1] igmp enable

[RouterA-Ethernet1/0/1] pim dm

[RouterA-Ethernet1/0/1] quit

[RouterA] interface ethernet 1/0/2

[RouterA-Ethernet1/0/2] pim dm

[RouterA-Ethernet1/0/2] quit

(3) 配置Switch A

# 全局使能IGMP Snooping。

<SwitchA> system-view

[SwitchA] igmp-snooping

[SwitchA-igmp-snooping] quit

# 创建VLAN 100，把端口Ethernet1/0/1到Ethernet1/0/4添加到该VLAN中；在该VLAN内使能IGMP Snooping，并使能丢弃未知组播数据报文功能。

[SwitchA] vlan 100

[SwitchA-vlan100] port ethernet 1/0/1 to ethernet 1/0/4

[SwitchA-vlan100] igmp-snooping enable

[SwitchA-vlan100] igmp-snooping drop-unknown

[SwitchA-vlan100] quit

# 配置组播组过滤器，以限定VLAN 100内的主机只能加入组播组224.1.1.1。

[SwitchA] acl number 2001

[SwitchA-acl-basic-2001] rule permit source 224.1.1.1 0

[SwitchA-acl-basic-2001] quit

[SwitchA] igmp-snooping

[SwitchA-igmp-snooping] group-policy 2001 vlan 100

[SwitchA-igmp-snooping] quit

# 在Ethernet1/0/3和Ethernet1/0/4上分别配置模拟主机加入组播组224.1.1.1。

[SwitchA] interface ethernet 1/0/3

[SwitchA-Ethernet1/0/3] igmp-snooping host-join 224.1.1.1 vlan 100

[SwitchA-Ethernet1/0/3] quit

[SwitchA] interface ethernet 1/0/4

[SwitchA-Ethernet1/0/4] igmp-snooping host-join 224.1.1.1 vlan 100

[SwitchA-Ethernet1/0/4] quit

(4) 检验配置效果

# 查看Switch A上VLAN 100内IGMP Snooping组的详细信息。

[SwitchA] display igmp-snooping group vlan 100 verbose

Total 1 IP Group(s).

Total 1 IP Source(s).

Total 1 MAC Group(s).

Port flags: D-Dynamic port, S-Static port, C-Copy port

Subvlan flags: R-Real VLAN, C-Copy VLAN

Vlan(id):100.

Total 1 IP Group(s).

Total 1 IP Source(s).

Total 1 MAC Group(s).

Router port(s):total 1 port(s).

Eth1/0/1 (D) ( 00:01:30 )

IP group(s):the following ip group(s) match to one mac group.

IP group address:224.1.1.1

(0.0.0.0, 224.1.1.1):

Attribute: Host Port

Host port(s):total 2 port(s).

Eth1/0/3 (D) ( 00:03:23 )

Eth1/0/4 (D) ( 00:04:10 )

MAC group(s):

MAC group address:0100-5e01-0101

Host port(s):total 2 port(s).

Eth1/0/3

Eth1/0/4

由此可见，Switch A上的端口Ethernet1/0/3和Ethernet1/0/4已经加入了组播组224.1.1.1。

1.9.2 静态端口配置举例

1. 组网需求

l 如 图1-5 所示，Router A通过Ethernet1/0/2端口连接组播源（Source），通过Ethernet1/0/1端口连接Switch A；Router A上运行IGMPv2，Switch A、Switch B和Switch C上都运行版本2的IGMP Snooping，并由Router A充当IGMP查询器。

l Host A和Host C均为组播组224.1.1.1的固定接收者（Receiver），通过将Switch C上的端口Ethernet1/0/3和Ethernet1/0/5配置为组播组224.1.1.1的静态成员端口，可以增强组播数据在传输过程中的可靠性。

l 假设由于受STP等链路层协议的影响，为了避免出现环路，Switch A—Switch C的转发路径在正常情况下是阻断的，组播数据只能通过Switch A—Switch B—Switch C的路径传递给连接在Switch C上的接收者；要求通过将Switch A的端口Ethernet1/0/3配置为静态路由器端口，以保证当Switch A—Switch B—Switch C的路径出现阻断时，组播数据可以几乎不间断地通过Switch A—Switch C的新路径传递给接收者。

如果没有配置静态路由器端口，那么当Switch A—Switch B—Switch C的路径出现阻断时，至少需要等待一个IGMP查询和响应周期完成后，组播数据才能通过Switch A—Switch C的新路径传递给接收者，组播数据的传输在这个过程中将中断。

有关STP（Spanning Tree Protocol，生成树协议）的详细介绍，请参见“二层技术-以太网交换配置指导”中的“生成树”。

2. 组网图

图1-5 静态端口配置组网图

3. 配置步骤

(1) 配置IP地址

请按照 图1-5 配置各接口的IP地址和子网掩码，具体配置过程略。

(2) 配置Router A

# 使能IP组播路由，在各接口上使能PIM-DM，并在端口Ethernet1/0/1上使能IGMP。

<RouterA> system-view

[RouterA] multicast routing-enable

[RouterA] interface ethernet 1/0/1

[RouterA-Ethernet1/0/1] igmp enable

[RouterA-Ethernet1/0/1] pim dm

[RouterA-Ethernet1/0/1] quit

[RouterA] interface ethernet 1/0/2

[RouterA-Ethernet1/0/2] pim dm

[RouterA-Ethernet1/0/2] quit

(3) 配置Switch A

# 全局使能IGMP Snooping。

<SwitchA> system-view

[SwitchA] igmp-snooping

[SwitchA-igmp-snooping] quit

# 创建VLAN 100，把端口Ethernet1/0/1到Ethernet1/0/3添加到该VLAN中，并在该VLAN内使能IGMP Snooping。

[SwitchA] vlan 100

[SwitchA-vlan100] port ethernet 1/0/1 to ethernet 1/0/3

[SwitchA-vlan100] igmp-snooping enable

[SwitchA-vlan100] quit

# 把Ethernet1/0/3配置为静态路由器端口。

[SwitchA] interface ethernet 1/0/3

[SwitchA-Ethernet1/0/3] igmp-snooping static-router-port vlan 100

[SwitchA-Ethernet1/0/3] quit

(4) 配置Switch B

# 全局使能IGMP Snooping。

<SwitchB> system-view

[SwitchB] igmp-snooping

[SwitchB-igmp-snooping] quit

# 创建VLAN 100，把端口Ethernet1/0/1和Ethernet1/0/2添加到该VLAN中，并在该VLAN内使能IGMP Snooping。

[SwitchB] vlan 100

[SwitchB-vlan100] port ethernet 1/0/1 ethernet 1/0/2

[SwitchB-vlan100] igmp-snooping enable

[SwitchB-vlan100] quit

(5) 配置Switch C

# 全局使能IGMP Snooping。

<SwitchC> system-view

[SwitchC] igmp-snooping

[SwitchC-igmp-snooping] quit

# 创建VLAN 100，把端口Ethernet1/0/1到Ethernet1/0/5添加到该VLAN中，并在该VLAN内使能IGMP Snooping。

[SwitchC] vlan 100

[SwitchC-vlan100] port ethernet 1/0/1 to ethernet 1/0/5

[SwitchC-vlan100] igmp-snooping enable

[SwitchC-vlan100] quit

# 分别在端口Ethernet1/0/3和Ethernet1/0/5上配置静态加入组播组224.1.1.1。

[SwitchC] interface ethernet 1/0/3

[SwitchC-Ethernet1/0/3] igmp-snooping static-group 224.1.1.1 vlan 100

[SwitchC-Ethernet1/0/3] quit

[SwitchC] interface ethernet 1/0/5

[SwitchC-Ethernet1/0/5] igmp-snooping static-group 224.1.1.1 vlan 100

[SwitchC-Ethernet1/0/5] quit

(6) 检验配置效果

# 查看Switch A上VLAN 100内IGMP Snooping组的详细信息。

[SwitchA] display igmp-snooping group vlan 100 verbose

Total 1 IP Group(s).

Total 1 IP Source(s).

Total 1 MAC Group(s).

Port flags: D-Dynamic port, S-Static port, C-Copy port

Subvlan flags: R-Real VLAN, C-Copy VLAN

Vlan(id):100.

Total 1 IP Group(s).

Total 1 IP Source(s).

Total 1 MAC Group(s).

Router port(s):total 2 port(s).

Eth1/0/1 (D) ( 00:01:30 )

Eth1/0/3 (S)

IP group(s):the following ip group(s) match to one mac group.

IP group address:224.1.1.1

(0.0.0.0, 224.1.1.1):

Attribute: Host Port

Host port(s):total 1 port(s).

Eth1/0/2 (D) ( 00:03:23 )

MAC group(s):

MAC group address:0100-5e01-0101

Host port(s):total 1 port(s).

Eth1/0/2

由此可见，Switch A上的端口Ethernet1/0/3已经成为了静态路由器端口。

# 查看Switch C上VLAN 100内IGMP Snooping组的详细信息。

[SwitchC] display igmp-snooping group vlan 100 verbose

Total 1 IP Group(s).

Total 1 IP Source(s).

Total 1 MAC Group(s).

Port flags: D-Dynamic port, S-Static port, C-Copy port

Subvlan flags: R-Real VLAN, C-Copy VLAN

Vlan(id):100.

Total 1 IP Group(s).

Total 1 IP Source(s).

Total 1 MAC Group(s).

Router port(s):total 1 port(s).

Eth1/0/2 (D) ( 00:01:23 )

IP group(s):the following ip group(s) match to one mac group.

IP group address:224.1.1.1

(0.0.0.0, 224.1.1.1):

Attribute: Host Port

Host port(s):total 2 port(s).

Eth1/0/3 (S)

Eth1/0/5 (S)

MAC group(s):

MAC group address:0100-5e01-0101

Host port(s):total 2 port(s).

Eth1/0/3

Eth1/0/5

由此可见，Switch C上的端口Ethernet1/0/3和Ethernet1/0/5已经成为了组播组224.1.1.1的静态成员端口。

1.9.3 IGMP Snooping查询器配置举例

1. 组网需求

l 如 图1-6 所示，在一个没有三层设备的纯二层网络环境中，组播源Source 1和Source 2分别向组播组224.1.1.1和225.1.1.1发送组播数据，Host A和Host C是组播组224.1.1.1的接收者（Receiver），Host B和Host D则是组播组225.1.1.1的接收者；所有接收者均使用IGMPv2，所有交换机上都运行版本2的IGMP Snooping，并选择距组播源较近的Switch A来充当IGMP Snooping查询器。

l 为防止交换机在没有二层组播转发表项时将组播数据在VLAN内广播，在所有交换机上都使能丢弃未知组播数据报文功能；同时，由于交换机不会将收到源IP地址为0.0.0.0的IGMP查询报文的端口设置为动态路由器端口，从而会影响二层组播转发表项的建立并导致组播数据无法正常转发，因此要求通过改变缺省的IGMP查询报文源IP地址（即0.0.0.0）以避免此问题出现。

2. 组网图

图1-6 IGMP Snooping查询器配置组网图

3. 配置步骤

(1) 配置Switch A

# 全局使能IGMP Snooping。

<SwitchA> system-view

[SwitchA] igmp-snooping

[SwitchA-igmp-snooping] quit

# 创建VLAN 100，并把端口Ethernet1/0/1到Ethernet1/0/3添加到该VLAN中。

[SwitchA] vlan 100

[SwitchA-vlan100] port ethernet 1/0/1 to ethernet 1/0/3

# 在VLAN 100内使能IGMP Snooping，并使能丢弃未知组播数据报文功能。

[SwitchA-vlan100] igmp-snooping enable

[SwitchA-vlan100] igmp-snooping drop-unknown

# 在VLAN 100内使能IGMP Snooping查询器。

[SwitchA-vlan100] igmp-snooping querier

# 在VLAN 100内把IGMP普遍组查询和特定组查询报文的源IP地址均设置为192.168.1.1。

[SwitchA-vlan100] igmp-snooping general-query source-ip 192.168.1.1

[SwitchA-vlan100] igmp-snooping special-query source-ip 192.168.1.1

[SwitchA-vlan100] quit

(2) 配置Switch B

# 全局使能IGMP Snooping。

<SwitchB> system-view

[SwitchB] igmp-snooping

[SwitchB-igmp-snooping] quit

# 创建VLAN 100，并把端口Ethernet1/0/1到Ethernet1/0/4添加到该VLAN中。

[SwitchB] vlan 100

[SwitchB-vlan100] port ethernet 1/0/1 to ethernet 1/0/4

# 在VLAN 100内使能IGMP Snooping，并使能丢弃未知组播数据报文功能。

[SwitchB-vlan100] igmp-snooping enable

[SwitchB-vlan100] igmp-snooping drop-unknown

[SwitchB-vlan100] quit

Switch C和Switch D的配置与Switch B相似，配置过程略。

(3) 检验配置效果

当IGMP Snooping查询器开始工作之后，除查询器以外的所有交换机都能收到IGMP普遍组查询报文。通过使用 display igmp-snooping statistics 命令可以查看IGMP报文的统计信息，例如：

# 查看Switch B上收到的IGMP报文的统计信息。

[SwitchB] display igmp-snooping statistics

Received IGMP general queries:3.

Received IGMPv1 reports:0.

Received IGMPv2 reports:12.

Received IGMP leaves:0.

Received IGMPv2 specific queries:0.

Sent IGMPv2 specific queries:0.

Received IGMPv3 reports:0.

Received IGMPv3 reports with right and wrong records:0.

Received IGMPv3 specific queries:0.

Received IGMPv3 specific sg queries:0.

Sent IGMPv3 specific queries:0.

Sent IGMPv3 specific sg queries:0.

Received error IGMP messages:0.

1.9.4 IGMP Snooping Proxying配置举例

1. 组网需求

l 如 图1-7 所示，Router A通过Ethernet1/0/2端口连接组播源（Source），通过Ethernet1/0/1端口连接Switch A；Router A上运行IGMPv2，Switch A上运行版本2的IGMP Snooping，并由Router A充当IGMP查询器。

l 通过配置，使Switch A能够代理下游主机向Router A发送的IGMP报告报文和离开报文，以及响应Router A发来的IGMP查询报文并向下游主机转发。

2. 组网图

图1-7 IGMP Snooping Proxying配置组网图

3. 配置步骤

(1) 配置IP地址

请按照 图1-7 配置各接口的IP地址和子网掩码，具体配置过程略。

(2) 配置Router A

# 使能IP组播路由，在各接口上使能PIM-DM，并在端口Ethernet1/0/1上使能IGMP。

<RouterA> system-view

[RouterA] multicast routing-enable

[RouterA] interface ethernet 1/0/1

[RouterA-Ethernet1/0/1] igmp enable

[RouterA-Ethernet1/0/1] pim dm

[RouterA-Ethernet1/0/1] quit

[RouterA] interface ethernet 1/0/2

[RouterA-Ethernet1/0/2] pim dm

[RouterA-Ethernet1/0/2] quit

(3) 配置Switch A

# 全局使能IGMP Snooping。

<SwitchA> system-view

[SwitchA] igmp-snooping

[SwitchA-igmp-snooping] quit

# 创建VLAN 100，把端口Ethernet1/0/1到Ethernet1/0/4添加到该VLAN中；在该VLAN内使能IGMP Snooping，并使能IGMP Snooping Proxying。

[SwitchA] vlan 100

[SwitchA-vlan100] port ethernet 1/0/1 to ethernet 1/0/4

[SwitchA-vlan100] igmp-snooping enable

[SwitchA-vlan100] igmp-snooping proxying enable

[SwitchA-vlan100] quit

(4) 检验配置效果

当配置完成后，Host A和Host B分别发送组地址为224.1.1.1的IGMP加入报文，Switch A收到该报文后通过其路由器端口Ethernet1/0/1向Router A也发送该组的加入报文。通过使用 display igmp-snooping group 和 display igmp group 命令可以分别查看IGMP Snooping组和IGMP组的信息，例如：

# 查看Switch A上IGMP Snooping组的信息。

[SwitchA] display igmp-snooping group

Total 1 IP Group(s).

Total 1 IP Source(s).

Total 1 MAC Group(s).

Port flags: D-Dynamic port, S-Static port, C-Copy port

Subvlan flags: R-Real VLAN, C-Copy VLAN

Vlan(id):100.

Total 1 IP Group(s).

Total 1 IP Source(s).

Total 1 MAC Group(s).

Router port(s):total 1 port.

Eth1/0/1 (D)

IP group(s):the following ip group(s) match to one mac group.

IP group address:224.1.1.1

(0.0.0.0, 224.1.1.1):

Host port(s):total 2 port.

Eth1/0/3 (D)

Eth1/0/4 (D)

MAC group(s):

MAC group address:0100-5e01-0101

Host port(s):total 2 port.

Eth1/0/3

Eth1/0/4

# 查看Router A上IGMP组的信息。

[RouterA] display igmp group

Total 1 IGMP Group(s).

Interface group report information of VPN-Instance: public net

Ethernet1/0/1(10.1.1.1):

Total 1 IGMP Group reported

Group Address Last Reporter Uptime Expires

224.1.1.1 0.0.0.0 00:00:06 00:02:04

当Host A离开组播组224.1.1.1时，向Switch A发送该组的IGMP离开报文，但由于Host B仍未离开该组，因此Switch A并不会删除该组，也不会向Router A发送该组的离开报文，只是在该组对应转发表项的成员端口列表中将端口Ethernet1/0/3删除。通过使用 display igmp-snooping group 命令可以查看IGMP Snooping组的信息，例如：

# 查看Switch A上IGMP Snooping组的信息。

[SwitchA] display igmp-snooping group

Total 1 IP Group(s).

Total 1 IP Source(s).

Total 1 MAC Group(s).

Port flags: D-Dynamic port, S-Static port, C-Copy port

Subvlan flags: R-Real VLAN, C-Copy VLAN

Vlan(id):100.

Total 1 IP Group(s).

Total 1 IP Source(s).

Total 1 MAC Group(s).

Router port(s):total 1 port.

Eth1/0/1 (D)

IP group(s):the following ip group(s) match to one mac group.

IP group address:224.1.1.1

(0.0.0.0, 224.1.1.1):

Host port(s):total 1 port.

Eth1/0/4 (D)

MAC group(s):

MAC group address:0100-5e01-0101

Host port(s):total 1 port.

Eth1/0/4

1.9.5 组播源与组播用户控制策略配置举例

1. 组网需求

l 如 图1-8 所示，三层交换机Switch A分别通过接口Vlan-interface101和Vlan-interface102连接组播源Source 1和Source 2，通过接口Vlan-interface103连接RADIUS服务器，并通过接口Vlan-interface104连接二层交换机Switch B；Switch A上运行IGMPv2，Switch B上运行版本2的IGMP Snooping，连接在Switch A上的组播源和连接在Switch B上的主机都使用802.1X进行认证。

l 通过在Switch A上配置组播源控制策略，禁止由Source 2发往组播组224.1.1.1的组播数据进入网络；通过在Switch B上配置组播用户控制策略，使接收者（Receiver）Host A只能加入/离开组播组224.1.1.1。

2. 组网图

图1-8 组播源与组播用户控制策略配置组网图

3. 配置步骤

(1) 配置IP地址

请按照 图1-8 配置各接口的IP地址和子网掩码，具体配置过程略。

(2) 配置Switch A

# 分别创建VLAN 101～104，并将端口Ehternet1/0/1～Ehternet1/0/4依次加入VLAN 101～104中。

<SwitchA> system-view

[SwitchA] vlan 101

[SwitchA-vlan101] port ethernet 1/0/1

[SwitchA-vlan101] quit

[SwitchA] vlan 102

[SwitchA-vlan102] port ethernet 1/0/2

[SwitchA-vlan102] quit

[SwitchA] vlan 103

[SwitchA-vlan103] port ethernet 1/0/3

[SwitchA-vlan103] quit

[SwitchA] vlan 104

[SwitchA-vlan104] port ethernet 1/0/4

[SwitchA-vlan104] quit

# 使能IP组播路由，在接口Vlan-interface101、Vlan-interface102和Vlan-interface104上使能PIM-DM，并在接口Vlan-interface104上使能IGMP。

[SwitchA] multicast routing-enable

[SwitchA] interface vlan-interface 101

[SwitchA-Vlan-interface101] pim dm

[SwitchA-Vlan-interface101] quit

[SwitchA] interface vlan-interface 102

[SwitchA-Vlan-interface102] pim dm

[SwitchA-Vlan-interface102] quit

[SwitchA] interface vlan-interface 104

[SwitchA-Vlan-interface104] pim dm

[SwitchA-Vlan-interface104] igmp enable

[SwitchA-Vlan-interface104] quit

# 创建名为policy1的QoS策略，不允许来自组播源2.1.1.1的组播数据向组播组224.1.1.1发送。

[SwitchA] acl number 3001

[SwitchA-acl-adv-3001] rule permit udp source 2.1.1.1 0 destination 224.1.1.1 0

[SwitchA-acl-adv-3001] quit

[SwitchA] traffic classifier classifier1

[SwitchA-classifier-classifier1] if-match acl 3001

[SwitchA-classifier-classifier1] quit

[SwitchA] traffic behavior behavior1

[SwitchA-behavior-behavior1] filter deny

[SwitchA-behavior-behavior1] quit

[SwitchA] qos policy policy1

[SwitchA-qospolicy-policy1] classifier classifier1 behavior behavior1

[SwitchA-qospolicy-policy1] quit

# 创建名为profile1的User Profile，在该User Profile下应用QoS策略policy1，并将该User Profile激活。

[SwitchA] user-profile profile1

[SwitchA-user-profile-profile1] qos apply policy policy1 inbound

[SwitchA-user-profile-profile1] quit

[SwitchA] user-profile profile1 enable

# 创建名为scheme1的RADIUS认证方案，配置RADIUS服务器的类型为extended类型；指定主RADIUS认证/授权服务器和计费服务器的IP地址均为3.1.1.1，共享密钥均为123321；并配置发送给RADIUS服务器的用户名不需要携带域名。

[SwitchA] radius scheme scheme1

[SwitchA-radius-scheme1] server-type extended

[SwitchA-radius-scheme1] primary authentication 3.1.1.1

[SwitchA-radius-scheme1] key authentication 123321

[SwitchA-radius-scheme1] primary accounting 3.1.1.1

[SwitchA-radius-scheme1] key accounting 123321

[SwitchA-radius-scheme1] user-name-format without-domain

[SwitchA-radius-scheme1] quit

# 创建名为domain1的ISP域，指定lan-access用户的RADIUS认证、授权和计费方案均为scheme1；并将该域指定为系统缺省的ISP域。

[SwitchA] domain domain1

[SwitchA-isp-domian1] authentication lan-access radius-scheme scheme1

[SwitchA-isp-domian1] authorization lan-access radius-scheme scheme1

[SwitchA-isp-domian1] accounting lan-access radius-scheme scheme1

[SwitchA-isp-domian1] quit

[SwitchA] domain default enable domain1

# 全局使能802.1X，并在端口Ethernet1/0/1和Ethernet1/0/2上分别使能802.1X。

[SwitchA] dot1x

[SwitchA] interface ethernet 1/0/1

[SwitchA-Ethernet1/0/1] dot1x

[SwitchA-Ethernet1/0/1] quit

[SwitchA] interface ethernet 1/0/2

[SwitchA-Ethernet1/0/2] dot1x

[SwitchA-Ethernet1/0/2] quit

(3) 配置Switch B

# 全局使能IGMP Snooping。

<SwitchB> system-view

[SwitchB] igmp-snooping

[SwitchB-igmp-snooping] quit

# 创建VLAN 104，把端口Ethernet1/0/1到Ethernet1/0/3添加到该VLAN中；在该VLAN内使能IGMP Snooping。

[SwitchB] vlan 104

[SwitchB-vlan104] port ethernet 1/0/1 to ethernet 1/0/3

[SwitchB-vlan104] igmp-snooping enable

[SwitchB-vlan104] quit

# 创建名为profile2的User Profile，在该User Profile下配置只允许用户加入/离开组播组224.1.1.1，并将该User Profile激活。

[SwitchB] acl number 2001

[SwitchB-acl-basic-2001] rule permit source 224.1.1.1 0

[SwitchB-acl-basic-2001] quit

[SwitchB] user-profile profile2

[SwitchB-user-profile-profile2] igmp-snooping access-policy 2001

[SwitchB-user-profile-profile2] quit

[SwitchB] user-profile profile2 enable

# 创建名为scheme2的RADIUS认证方案，配置RADIUS服务器的类型为extended类型；指定主RADIUS认证/授权服务器和计费服务器的IP地址均为3.1.1.1，共享密钥均为321123；并配置发送给RADIUS服务器的用户名不需要携带域名。

[SwitchB] radius scheme scheme2

[SwitchB-radius-scheme2] server-type extended

[SwitchB-radius-scheme2] primary authentication 3.1.1.1

[SwitchB-radius-scheme2] key authentication 321123

[SwitchB-radius-scheme2] primary accounting 3.1.1.1

[SwitchB-radius-scheme2] key accounting 321123

[SwitchB-radius-scheme2] user-name-format without-domain

[SwitchB-radius-scheme2] quit

# 创建名为domain2的ISP域，指定lan-access用户的RADIUS认证、授权和计费方案均为scheme2；并将该域指定为系统缺省的ISP域。

[SwitchB] domain domain2

[SwitchB-isp-domian2] authentication lan-access radius-scheme scheme2

[SwitchB-isp-domian2] authorization lan-access radius-scheme scheme2

[SwitchB-isp-domian2] accounting lan-access radius-scheme scheme2

[SwitchB-isp-domian2] quit

[SwitchB] domain default enable domain2

# 全局使能802.1X，并在端口Ethernet1/0/2和Ethernet1/0/3上分别使能802.1X。

[SwitchB] dot1x

[SwitchB] interface ethernet 1/0/2

[SwitchB-Ethernet1/0/2] dot1x

[SwitchB-Ethernet1/0/2] quit

[SwitchB] interface ethernet 1/0/3

[SwitchB-Ethernet1/0/3] dot1x

[SwitchB-Ethernet1/0/3] quit

(4) 配置RADIUS服务器

请在RADIUS服务器上进行与Switch A和Switch B相对应的配置，具体配置过程可参考RADIUS服务器的配置手册。

(5) 检验配置效果

配置完成后，所有的组播源和用户主机都向RADIUS服务器发起802.1X认证。当认证通过后，Source 1向组播组224.1.1.1、Source 2向组播组224.1.1.2分别发送不同的组播数据，而Host A则分别发起了对组播组224.1.1.1和224.1.1.2的加入。通过使用 display igmp-snooping group 命令可以查看IGMP Snooping组的信息：

# 查看Switch B上VLAN 104内IGMP Snooping组的详细信息。

[SwitchB] display igmp-snooping group vlan 100 verbose

Total 1 IP Group(s).

Total 1 IP Source(s).

Total 1 MAC Group(s).

Port flags: D-Dynamic port, S-Static port, C-Copy port

Subvlan flags: R-Real VLAN, C-Copy VLAN

Vlan(id):100.

Total 1 IP Group(s).

Total 1 IP Source(s).

Total 1 MAC Group(s).

Router port(s):total 1 port(s).

Eth1/0/1 (D) ( 00:01:30 )

IP group(s):the following ip group(s) match to one mac group.

IP group address:224.1.1.1

(0.0.0.0, 224.1.1.1):

Attribute: Host Port

Host port(s):total 1 port(s).

Eth1/0/3 (D) ( 00:04:10 )

MAC group(s):

MAC group address:0100-5e01-0101

Host port(s):total 1 port(s).

Eth1/0/3

由此可见，Switch B上的端口Ethernet1/0/3只加入了组播组224.1.1.1，而未加入组播组224.1.1.2。

此后由于管理员的操作失误，Source 2也开始向组播组224.1.1.1发送组播数据。通过使用 display multicast forwarding-table 命令可以查看组播转发表的信息：

# 查看Switch A上有关组播组224.1.1.1的组播转发表信息。

[SwitchA] display multicast forwarding-table 224.1.1.1

Multicast Forwarding Table of VPN-Instance: public net

Total 1 entry

Total 1 entry matched

00001. (1.1.1.1, 224.1.1.1)

MID: 0, Flags: 0x0:0

Uptime: 00:08:32, Timeout in: 00:03:26

Incoming interface: Vlan-interface101

List of 1 outgoing interfaces:

1: Vlan-interface104

Matched 19648 packets(20512512 bytes), Wrong If 0 packets

Forwarded 19648 packets(20512512 bytes)

由此可见，Switch A上只有组播源组（1.1.1.1，224.1.1.1）的转发表项，而没有组播源组（2.1.1.1，224.1.1.1）的转发表项，说明Source 2发往组播组224.1.1.1的组播数据没能进入网络。


1.10 常见配置错误举例

1.10.1 交换机不能实现二层组播

1. 故障现象

交换机不能实现IGMP Snooping二层组播功能。

2. 分析

IGMP Snooping没有使能。

3. 处理过程

(1) 使用 display current-configuration 命令查看IGMP Snooping的运行状态。

(2) 如果是没有使能IGMP Snooping，则需先在系统视图下使用 igmp-snooping 命令全局使能IGMP Snooping，然后在VLAN视图下使用 igmp-snooping enable 命令使能VLAN内的IGMP Snooping。

(3) 如果只是没有在相应VLAN下使能IGMP Snooping，则只需在VLAN视图下使用 igmp-snooping enable 命令使能VLAN内的IGMP Snooping。

1.10.2 配置的组播组策略不生效

1. 故障现象

配置了组播组策略，只允许主机加入某些特定的组播组，但主机仍然可以收到发往其它组播组的组播数据。

2. 分析

l ACL规则配置不正确；

l 组播组策略应用不正确；

l 没有使能丢弃未知组播数据报文的功能，使得属于过滤策略之外的组播数据报文（即未知组播数据报文）被广播。

3. 处理过程

(1) 使用 display acl 命令查看所配置的ACL规则，检查其是否与所要实现的组播组过滤策略相符合。

(2) 在IGMP-Snooping视图或相应的端口视图下使用 display this 命令查看是否应用了正确的组播组策略。如果没有，则使用 group-policy 或 igmp-snooping group-policy 命令应用正确的组播组策略。

(3) 使用 display current-configuration 命令查看是否已使能丢弃未知组播数据报文的功能。如果没有使能，则使用 drop-unknown 或 igmp-snooping drop-unknown 命令使能丢弃未知组播数据报文功能。


1.11 附录

1.11.1 交换机对组播协议报文的特殊处理规则

支持IGMP Snooping功能的交换机使能了三层组播路由后，在不同的情况下对各种组播协议报文的处理有所差异。具体规则如下：

(1) 如果交换机上只使能了IGMP，或同时使能了IGMP和PIM：

l 对于IGMP报文，根据报文类型为其维护相应的动态成员端口或动态路由器端口；

l 对于PIM Hello报文，为其维护相应的动态路由器端口。

(2) 如果交换机上只使能了PIM：

l 对于IGMP报文，将其当作未知报文在VLAN内进行广播；

l 对于PIM Hello报文，为其维护相应的动态路由器端口。

(3) 在交换机上关闭IGMP时：

l 如果未使能PIM，则删除所有动态成员端口和动态路由器端口；

l 如果已使能PIM，则删除动态成员端口，只保留动态路由器端口。

在使能了三层组播路由的交换机上，请使用命令 display igmp group port-info 来查看二层端口信息。有关 display igmp group port-info 命令的详细介绍，请参见“IP组播命令参考”中的“IGMP”。

(4) 在交换机上关闭PIM时：

l 如果未使能IGMP，则删除动态路由器端口；

l 如果已使能IGMP，则保留所有动态成员端口和动态路由器端口。


1 PIM Snooping配置

S3600V2-SI系列交换机不支持PIM Snooping配置。

相关链接

  • 1.1 PIM Snooping简介
  • 1.2 配置PIM Snooping
  • 1.3 PIM Snooping显示和维护
  • 1.4 PIM Snooping典型配置举例
  • 1.5 常见配置错误举例
父主题： 03-PIM Snooping配置


1.1 PIM Snooping简介

PIM Snooping是Protocol Independent Multicast Snooping（协议无关组播窥探）的简称，运行PIM Snooping的二层设备通过对收到的PIM协议报文进行分析，将有接收需求的端口添加到相应的组播转发表项中，以实现组播报文的精确转发。

图1-1 二层设备运行PIM Snooping前后的对比

如图1-1 所示，组播源Source 1和Source 2分别向组播组G1和G2发送组播数据，而Receiver 1和Receiver 2则分别是G1和G2的接收者，二层设备上连接各PIM路由器的端口都属于同一个VLAN：

l 当二层设备只运行IGMP Snooping时，它通过监听PIM路由器发出的PIM Hello报文来维护路由器端口，并将所有组播数据报文向VLAN内的所有路由器端口转发；而对于其它类型的PIM协议报文，则在VLAN内广播。因此，无论PIM路由器是否有接收需求，都会收到所有的PIM协议报文和组播数据报文。

l 当二层设备同时运行了IGMP Snooping和PIM Snooping时，它通过监听PIM路由器发出的PIM协议报文来了解其接收需求，从而将有接收需求的PIM路由器所在的端口加入到相应的组播转发表项中，使PIM协议报文和组播数据报文能够被精确转发给有接收需求的PIM路由器，从而节约了网络带宽。

l 有关IGMP Snooping和路由器端口的详细介绍，请参见“IP组播配置指导”中的“IGMP Snooping”。

l 有关PIM的详细介绍，请参见“IP组播配置指导”中的“PIM”。


1.2 配置PIM Snooping

在配置某VLAN内的PIM Snooping时，需要在交换机上先全局使能IGMP Snooping，然后在该VLAN内使能IGMP Snooping和PIM Snooping。

表1-1 配置PIM Snooping

操作 | 命令 | 说明
进入系统视图 | system-view | -
全局使能IGMP Snooping，并进入IGMP-Snooping视图 | igmp-snooping | 必选 缺省情况下，IGMP Snooping处于关闭状态
退回系统视图 | quit | -
进入VLAN视图 | vlan vlan-id | -
在VLAN内使能IGMP Snooping | igmp-snooping enable | 必选 缺省情况下，VLAN内的IGMP Snooping处于关闭状态
在VLAN内使能PIM Snooping | pim-snooping enable | 必选 缺省情况下，VLAN内的PIM Snooping处于关闭状态

l 有关 igmp-snooping 和 igmp-snooping enable 命令的详细介绍，请参见“IP组播命令参考”中的“IGMP Snooping”。

l 在VLAN内使能了PIM Snooping之后，PIM Snooping功能只在属于该VLAN的端口上生效。

l 在组播VLAN的子VLAN内使能PIM Snooping无效。有关组播VLAN的详细介绍，请参见“IP组播配置指导”中的“组播VLAN”。


1.3 PIM Snooping显示和维护

在完成上述配置后，在任意视图下执行 display 命令可以显示配置后PIM Snooping的运行情况，通过查看显示信息验证配置的效果。

在用户视图下执行 reset 命令可以清除PIM Snooping的统计信息。

表1-2 PIM Snooping显示和维护

操作 | 命令
查看PIM Snooping的邻居信息 | display pim-snooping neighbor [ vlan vlan-id ] [ slot slot-number ] [ | { begin | exclude | include } regular-expression ]
查看PIM Snooping的路由信息 | display pim-snooping routing-table [ vlan vlan-id ] [ slot slot-number ] [ | { begin | exclude | include } regular-expression ]
查看PIM Snooping监听到的PIM报文的统计信息 | display pim-snooping statistics [ | { begin | exclude | include } regular-expression ]
清除PIM Snooping监听到的PIM报文的统计信息 | reset pim-snooping statistics


1.4 PIM Snooping典型配置举例

1. 组网需求

l 如图1-2 所示，Router A和Router B各自的Ethernet1/0/1接口分别连接组播源Source 1和Source 2；Router C和Router D各自的Ethernet1/0/1接口分别连接接收者Receiver 1和Receiver 2；Router A、Router B、Router C和Router D各自的Ethernet1/0/2接口都通过Switch A互连。

l Source 1和Source 2分别通过组播组224.1.1.1和225.1.1.1发送组播数据，Receiver 1和Receiver 2则分别接收来自组播组224.1.1.1和225.1.1.1的组播数据；Router C和Router D各自的Ethernet1/0/1接口上都运行IGMP，Router A、Router B、Router C和Router D上都运行PIM-SM，并由Router A的Ethernet1/0/2接口充当C-BSR和C-RP。

l 通过在Switch A上配置IGMP Snooping和PIM Snooping，使Switch A将PIM协议报文和组播数据报文只转发给有接收需求的路由器。

2. 组网图

图1-2 PIM Snooping典型配置组网图

3. 配置步骤

(1) 配置IP地址

请按照图1-2 配置各接口的IP地址和子网掩码，具体配置过程略。

(2) 配置Router A

# 使能IP组播路由，在各接口上使能PIM-SM，并将接口Ethernet1/0/2配置为C-BSR和C-RP。

<RouterA> system-view

[RouterA] multicast routing-enable

[RouterA] interface ethernet1/0/1

[RouterA-Ethernet1/0/1] pim sm

[RouterA-Ethernet1/0/1] quit

[RouterA] interface ethernet1/0/2

[RouterA-Ethernet1/0/2] pim sm

[RouterA-Ethernet1/0/2] quit

[RouterA] pim

[RouterA-pim] c-bsr ethernet1/0/2

[RouterA-pim] c-rp ethernet1/0/2

(3) 配置Router B

# 使能IP组播路由，在各接口上使能PIM-SM。

<RouterB> system-view

[RouterB] multicast routing-enable

[RouterB] interface ethernet1/0/1

[RouterB-Ethernet1/0/1] pim sm

[RouterB-Ethernet1/0/1] quit

[RouterB] interface ethernet1/0/2

[RouterB-Ethernet1/0/2] pim sm

(4) 配置Router C

# 使能IP组播路由，在各接口上使能PIM-SM，并在接口Ethernet1/0/1上使能IGMP。

<RouterC> system-view

[RouterC] multicast routing-enable

[RouterC] interface ethernet1/0/1

[RouterC-Ethernet1/0/1] pim sm

[RouterC-Ethernet1/0/1] igmp enable

[RouterC-Ethernet1/0/1] quit

[RouterC] interface ethernet1/0/2

[RouterC-Ethernet1/0/2] pim sm

(5) 配置Router D

Router D的配置与Router C相似，配置过程略。

(6) 配置Switch A

# 全局使能IGMP Snooping。

<SwitchA> system-view

[SwitchA] igmp-snooping

[SwitchA-igmp-snooping] quit

# 创建VLAN 100，把端口Ethernet1/0/1到Ethernet1/0/4添加到该VLAN中；在该VLAN内使能IGMP Snooping和PIM Snooping。

[SwitchA] vlan 100

[SwitchA-vlan100] port ethernet1/0/1 to ethernet1/0/4

[SwitchA-vlan100] igmp-snooping enable

[SwitchA-vlan100] pim-snooping enable

[SwitchA-vlan100] quit

(7) 检验配置效果

# 查看Switch A上VLAN 100内PIM Snooping的邻居信息。

[SwitchA] display pim-snooping neighbor vlan 100

Total number of neighbors: 4

VLAN ID: 100

Total number of neighbors: 4

Neighbor Port Expires Option Flags

10.1.1.1 Eth1/0/1 02:02:23 LAN Prune Delay

10.1.1.2 Eth1/0/2 03:00:05 LAN Prune Delay

10.1.1.3 Eth1/0/3 02:22:13 LAN Prune Delay

10.1.1.4 Eth1/0/4 03:07:22 LAN Prune Delay

由此可见，Router A、Router B、Router C和Router D之间都建立起了PIM Snooping邻居关系。

# 查看Switch A上VLAN 100内PIM Snooping的路由信息。

[SwitchA] display pim-snooping routing-table vlan 100 slot 1

Total 2 entry(ies)

FSM Flag: NI-no info, J-join, PP-prune pending

VLAN ID: 100

Total 2 entry(ies)

(*, 224.1.1.1)

Upstream neighbor: 10.1.1.1

Upstream port: Eth1/0/1

Total number of downstream ports: 1

1: Eth1/0/3

Expires: 00:03:01, FSM: J

(*, 225.1.1.1)

Upstream neighbor: 10.1.1.1

Upstream port: Eth1/0/2

Total number of downstream ports: 1

1: Eth1/0/4

Expires: 00:01:05, FSM: J

由此可见，Switch A将向Router C转发组播组224.1.1.1的组播数据，向Router D转发组播组225.1.1.1的组播数据。


1.5 常见配置错误举例

1.5.1 交换机不能实现PIM Snooping功能

1. 故障现象

交换机不能实现PIM Snooping功能。

2. 分析

IGMP Snooping或PIM Snooping没有使能。

3. 处理过程

(1) 使用 display current-configuration 命令查看IGMP Snooping和PIM Snooping的运行状态。

(2) 如果没有使能IGMP Snooping，请先在系统视图下使用 igmp-snooping 命令全局使能IGMP Snooping，然后在VLAN视图下分别使用 igmp-snooping enable 和 pim-snooping enable 命令使能VLAN内的IGMP Snooping和PIM Snooping。

(3) 如果没有使能PIM Snooping，请在VLAN视图下使用 pim-snooping enable 命令使能VLAN内的PIM Snooping。

1.5.2 部分下游PIM路由器无法收到组播数据

1. 故障现象

在有分片加入/剪枝报文的网络中，部分下游PIM路由器无法收到组播数据。

2. 分析

PIM Snooping不能对分片报文进行重组，因此无法维护分片加入/剪枝报文中携带的下游状态。为了保证系统功能正常，只能将分片加入/剪枝报文在VLAN内广播，因此需要在VLAN内连接PIM Snooping交换机的所有PIM路由器上都禁止加入报文抑制能力（即使能邻居跟踪功能），以保证加入报文不被广播的分片加入/剪枝报文所抑制。假如存在未禁止该能力的PIM路由器，被广播的分片加入/剪枝报文就会影响其它PIM路由器的加入状态：如果某PIM路由器有组播接收需求，但其发送的加入报文被抑制，那么该路由器将无法收到组播数据。

3. 处理过程

(1) 在PIM路由器连接PIM Snooping交换机的接口上使用 pim hello-option neighbor-tracking 命令使能邻居跟踪功能。

(2) 如果存在不能够使能邻居跟踪功能的PIM路由器，则需关闭PIM Snooping交换机上的PIM Snooping功能。


1 组播VLAN配置

相关链接

  • 1.1 组播VLAN简介
  • 1.2 组播VLAN配置任务简介
  • 1.3 配置基于子VLAN的组播VLAN
  • 1.4 配置基于端口的组播VLAN
  • 1.5 配置组播VLAN内IGMP Snooping转发表项的最大数量
  • 1.6 组播VLAN显示和维护
  • 1.7 组播VLAN典型配置举例
父主题： 04-组播VLAN配置


1.1 组播VLAN简介

如图1-1 所示，在传统的组播点播方式下，当属于不同VLAN的主机Host A、Host B和Host C同时点播同一组播组时，三层设备（Router A）需要把组播数据在每个用户VLAN（即主机所属的VLAN）内都复制一份发送给二层设备（Switch A）。这样既造成了带宽的浪费，也给三层设备增加了额外的负担。

图1-1 未运行组播VLAN时的组播数据传输

可以使用组播VLAN功能解决这个问题。在二层设备上配置了组播VLAN后，三层设备只需把组播数据在组播VLAN内复制一份发送给二层设备，而不必在每个用户VLAN内都复制一份，从而节省了网络带宽，也减轻了三层设备的负担。

组播VLAN有以下两种实现和配置方式：

1. 基于子VLAN的组播VLAN

如图1-2 所示，接收者主机Host A、Host B和Host C分属不同的用户VLAN。在Switch A上配置VLAN 10为组播VLAN，将所有的用户VLAN都配置为该组播VLAN的子VLAN，并在组播VLAN内使能IGMP Snooping。

图1-2 基于子VLAN的组播VLAN示意图

配置完成后，IGMP Snooping将在组播VLAN中对路由器端口进行维护，而在各子VLAN中对成员端口进行维护。这样，Router A只需把组播数据在组播VLAN内复制一份发送给Switch A即可，Switch A会将其分发给该组播VLAN内那些有接收者的子VLAN。

2. 基于端口的组播VLAN

如 图1-3 所示，接收者主机Host A、Host B和Host C分属不同的用户VLAN，Switch A上的所有用户端口（即连接主机的端口）均为Hybrid类型。在Switch A上配置VLAN 10为组播VLAN，将所有用户端口都添加到该组播VLAN内，并在组播VLAN和所有用户VLAN内都使能IGMP Snooping。

图1-3 基于端口的组播VLAN示意图

配置完成后，当Switch A上的用户端口收到来自主机的IGMP报文时，会为其打上组播VLAN的Tag并上送给IGMP查询器，于是IGMP Snooping就可以在组播VLAN中对路由器端口和成员端口进行统一的维护。这样，Router A只需把组播数据在组播VLAN内复制一份发送给Switch A即可，Switch A会将其分发给该组播VLAN内的所有成员端口。

l 有关IGMP Snooping的相关配置，以及路由器端口和成员端口的详细介绍，请参见“IP组播配置指导”中的“IGMP Snooping”。

l 有关VLAN Tag的详细介绍，请参见“二层技术-以太网交换配置指导”中的“VLAN”。


1.2 组播VLAN配置任务简介

表1-1 组播VLAN配置任务简介

配置任务 |  | 说明 | 详细配置
配置基于子VLAN的组播VLAN |  | 二者必选其一 | 1.3
配置基于端口的组播VLAN | 配置用户端口属性 |  | 1.4.2
 | 配置组播VLAN端口 |  | 1.4.3
配置组播VLAN内IGMP Snooping转发表项的最大数量 |  | 可选 | 1.5

若在设备上同时配置了基于子VLAN和基于端口的组播VLAN，则基于端口的组播VLAN将优先生效。


1.3 配置基于子VLAN的组播VLAN

1.3.1 配置准备

在配置基于子VLAN的组播VLAN之前，需完成以下任务：

l 创建相应的VLAN

l 在欲配置为组播VLAN的VLAN内使能IGMP Snooping

1.3.2 配置基于子VLAN的组播VLAN

首先需要把某个VLAN配置为组播VLAN，再将用户VLAN添加到该组播VLAN内，使其成为组播VLAN的子VLAN。

表1-2 配置基于子VLAN的组播VLAN

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置指定VLAN为组播VLAN，并进入组播VLAN视图 | multicast-vla n vlan-id | 必选 缺省情况下，VLAN不是组播VLAN
向组播VLAN内添加子VLAN | subvlan vlan-list | 必选 缺省情况下，组播VLAN内没有子VLAN

l 在已使能了IP组播路由的设备上不允许再配置组播VLAN。

l 要配置为组播VLAN的指定VLAN必须存在。

l 要添加到组播VLAN内的子VLAN必须存在，且不能是组播VLAN或其它组播VLAN的子VLAN。

l 组播VLAN内子VLAN的总数不得超过系统限制。


1.4 配置基于端口的组播VLAN

在配置基于端口的组播VLAN时，需要先配置各用户端口的属性，然后再将配置好的用户端口添加到组播VLAN内。

l 只允许将以太网端口或二层聚合接口类型的用户端口配置为组播VLAN的端口。

l 二层以太网端口视图下的配置只对当前端口有效；二层聚合接口视图下的配置对当前接口有效；端口组视图下的配置对当前端口组中的所有端口有效。

1.4.1 配置准备

在配置基于端口的组播VLAN之前，需完成以下任务：

l 创建相应的VLAN

l 在欲配置为组播VLAN的VLAN内使能IGMP Snooping

l 在所有的用户VLAN内都内使能IGMP Snooping

1.4.2 配置用户端口属性

配置用户端口为Hybrid类型，允许用户VLAN的报文通过，缺省VLAN为其所属的用户VLAN。

配置用户端口允许组播VLAN的报文通过，且不携带Tag。这样，当二层设备通过组播VLAN收到来自上游、打有组播VLAN Tag的组播数据报文时，会将其Tag去掉后再向下游转发。

表1-3 配置用户端口属性

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
进入相应视图 | 进入二层以太网端口视图 | interface interface-type interface-number | 二者必选其一
 | 进入端口组视图 | port-group manual port-group-name
配置用户端口的链路类型为Hybrid类型 |  | port link-type hybrid | 必选 缺省情况下，端口的链路类型为Access类型
配置用户端口的缺省VLAN为其所属的用户VLAN |  | port hybrid pvid vlan vlan-id | 必选 缺省情况下，Hybrid端口的缺省VLAN为VLAN 1
允许组播VLAN通过用户端口，且不携带Tag |  | port hybrid vlan vlan-id-list untagged | 必选 缺省情况下，Hybrid端口只允许VLAN 1通过

有关 port link-type、port hybrid pvid vlan 和 port hybrid vlan 命令的详细介绍，请参见“二层技术-以太网交换命令参考”中的“VLAN”。

1.4.3 配置组播VLAN端口

首先需要把某个VLAN配置为组播VLAN，再将用户端口添加到该组播VLAN内——既可以在组播VLAN内添加端口，也可以在端口上指定其所属的组播VLAN——这两种配置方式是等效的。

1. 在组播VLAN内配置组播VLAN端口

表1-4 在组播VLAN内配置组播VLAN端口

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置指定VLAN为组播VLAN，并进入组播VLAN视图 | multicast-vlan vlan-id | 必选 缺省情况下，VLAN不是组播VLAN
向组播VLAN内添加端口 | port interface-list | 必选 缺省情况下，组播VLAN内没有端口

2. 在端口上配置组播VLAN端口

表1-5 在端口上配置组播VLAN端口

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
配置指定VLAN为组播VLAN，并进入组播VLAN视图 |  | multicast-vlan vlan-id | 必选 缺省情况下，VLAN不是组播VLAN
退回系统视图 |  | quit | -
进入相应视图 | 进入二层以太网端口视图 | interface interface-type interface-number | 二者必选其一
 | 进入端口组视图 | port-group manual port-group-name
指定端口所属的组播VLAN |  | port multicast-vlan vlan-id | 必选 缺省情况下，端口不属于任何组播VLAN

l 在已使能了IP组播路由的设备上不允许再配置组播VLAN。

l 要配置为组播VLAN的指定VLAN必须存在。

l 一个端口只能属于一个组播VLAN。


1.5 配置组播VLAN内IGMP Snooping转发表项的最大数量

用户可以调整组播VLAN内IGMP Snooping转发表项的最大数量，当所有组播VLAN内维护的表项总数达到最大数量后，将不再创建新的表项，直至有表项被老化或被手工删除。

表1-6 配置组播VLAN内IGMP Snooping转发表项的最大数量

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置组播VLAN内IGMP Snooping转发表项的最大数量 | multicast-vlan entry-limit limit | 必选 缺省情况下，S3600V2-EI系列交换机组播VLAN内IGMP Snooping转发表项的最大数量为2000，S3600V2-SI系列交换机组播VLAN内IGMP Snooping转发表项的最大数量为1024

在对组播VLAN内IGMP Snooping转发表项的最大数量进行配置时，如果所有组播VLAN内的表项总数已超过了配置值，系统将提示用户删除多余表项，但并不会自动删除任何已存在的表项，同时也不再继续创建新的表项。


1.6 组播VLAN显示和维护

在完成上述配置后，在任意视图下执行 display 命令可以显示配置后组播VLAN的运行情况，通过查看显示信息验证配置的效果。

表1-7 组播VLAN显示和维护

操作 | 命令
查看组播VLAN的信息 | display multicast-vlan [ vlan-id ] [ | { begin | exclude | include } regular-expression ]


1.7 组播VLAN典型配置举例

1.7.1 基于子VLAN的组播VLAN配置举例

1. 组网需求

l 如图1-4 所示，Router A通过端口Ethernet1/0/1连接组播源（Source），通过端口Ethernet1/0/2连接Switch A；Router A上运行IGMPv2，Switch A～Switch C上都运行版本2的IGMP Snooping，并由Router A充当IGMP查询器。

l 组播源向组播组224.1.1.1发送组播数据，Host A～Host D都是该组播组的接收者（Receiver），且分别属于VLAN 2～VLAN 5。

l 通过在Switch A上配置基于子VLAN的组播VLAN，使Router A通过组播VLAN向Switch A下分属不同用户VLAN的主机分发组播数据。

2. 组网图

图1-4 基于子VLAN的组播VLAN配置组网图

3. 配置步骤

(1) 配置IP地址

请按照图1-4 配置各接口的IP地址和子网掩码，具体配置过程略。

(2) 配置Router A

# 使能IP组播路由，在各接口上使能PIM-DM，并在主机侧端口Ethernet1/0/2上使能IGMP。

<RouterA> system-view

[RouterA] multicast routing-enable

[RouterA] interface ethernet 1/0/1

[RouterA-Ethernet1/0/1] pim dm

[RouterA-Ethernet1/0/1] quit

[RouterA] interface ethernet 1/0/2

[RouterA-Ethernet1/0/2] pim dm

[RouterA-Ethernet1/0/2] igmp enable

(3) 配置Switch A

# 全局使能IGMP Snooping。

<SwitchA> system-view

[SwitchA] igmp-snooping

[SwitchA-igmp-snooping] quit

# 创建VLAN 2～VLAN 5。

[SwitchA] vlan 2 to 5

# 配置端口Ethernet1/0/2为Trunk端口，并允许VLAN 2和VLAN 3通过。

[SwitchA] interface ethernet 1/0/2

[SwitchA-Ethernet1/0/2] port link-type trunk

[SwitchA-Ethernet1/0/2] port trunk permit vlan 2 3

[SwitchA-Ethernet1/0/2] quit

# 配置端口Ethernet1/0/3为Trunk端口，并允许VLAN 4和VLAN 5通过。

[SwitchA] interface ethernet 1/0/3

[SwitchA-Ethernet1/0/3] port link-type trunk

[SwitchA-Ethernet1/0/3] port trunk permit vlan 4 5

[SwitchA-Ethernet1/0/3] quit

# 创建VLAN 10，把端口Ethernet1/0/1添加到该VLAN中，并在该VLAN内使能IGMP Snooping。

[SwitchA] vlan 10

[SwitchA-vlan10] port ethernet 1/0/1

[SwitchA-vlan10] igmp-snooping enable

[SwitchA-vlan10] quit

# 配置VLAN 10为组播VLAN，并把VLAN 2～VLAN 5都配置为该组播VLAN的子VLAN。

[SwitchA] multicast-vlan 10

[SwitchA-mvlan-10] subvlan 2 to 5

[SwitchA-mvlan-10] quit

(4) 配置Switch B

# 全局使能IGMP Snooping。

<SwitchB> system-view

[SwitchB] igmp-snooping

[SwitchB-igmp-snooping] quit

# 创建VLAN 2，把端口Ethernet1/0/2添加到该VLAN中，并在该VLAN内使能IGMP Snooping。

[SwitchB] vlan 2

[SwitchB-vlan2] port ethernet 1/0/2

[SwitchB-vlan2] igmp-snooping enable

[SwitchB-vlan2] quit

# 创建VLAN 3，把端口Ethernet1/0/3添加到该VLAN中，并在该VLAN内使能IGMP Snooping。

[SwitchB] vlan 3

[SwitchB-vlan3] port ethernet 1/0/3

[SwitchB-vlan3] igmp-snooping enable

[SwitchB-vlan3] quit

# 配置端口Ethernet1/0/1为Trunk端口，并允许VLAN 2和VLAN 3通过。

[SwitchB] interface ethernet 1/0/1

[SwitchB-Ethernet1/0/1] port link-type trunk

[SwitchB-Ethernet1/0/1] port trunk permit vlan 2 3

(5) 配置Switch C

Switch C的配置与Switch B相似，配置过程略。

(6) 检验配置效果

# 查看Switch A上所有组播VLAN的信息。

[SwitchA] display multicast-vlan

Total 1 multicast-vlan(s)

Multicast vlan 10

subvlan list:

vlan 2-5

port list:

no port

# 查看Switch A上IGMP Snooping组播组的信息。

[SwitchA] display igmp-snooping group

Total 5 IP Group(s).

Total 5 IP Source(s).

Total 5 MAC Group(s).

Port flags: D-Dynamic port, S-Static port, C-Copy port, P-PIM port

Subvlan flags: R-Real VLAN, C-Copy VLAN

Vlan(id):2.

Total 1 IP Group(s).

Total 1 IP Source(s).

Total 1 MAC Group(s).

Router port(s):total 0 port(s).

IP group(s):the following ip group(s) match to one mac group.

IP group address:224.1.1.1

(0.0.0.0, 224.1.1.1):

Host port(s):total 1 port(s).

Eth1/0/2 (D)

MAC group(s):

MAC group address:0100-5e01-0101

Host port(s):total 1 port(s).

Eth1/0/2

Vlan(id):3.

Total 1 IP Group(s).

Total 1 IP Source(s).

Total 1 MAC Group(s).

Router port(s):total 0 port(s).

IP group(s):the following ip group(s) match to one mac group.

IP group address:224.1.1.1

(0.0.0.0, 224.1.1.1):

Host port(s):total 1 port(s).

Eth1/0/2 (D)

MAC group(s):

MAC group address:0100-5e01-0101

Host port(s):total 1 port(s).

Eth1/0/2

Vlan(id):4.

Total 1 IP Group(s).

Total 1 IP Source(s).

Total 1 MAC Group(s).

Router port(s):total 0 port(s).

IP group(s):the following ip group(s) match to one mac group.

IP group address:224.1.1.1

(0.0.0.0, 224.1.1.1):

Host port(s):total 1 port(s).

Eth1/0/3 (D)

MAC group(s):

MAC group address:0100-5e01-0101

Host port(s):total 1 port(s).

Eth1/0/3

Vlan(id):5.

Total 1 IP Group(s).

Total 1 IP Source(s).

Total 1 MAC Group(s).

Router port(s):total 0 port(s).

IP group(s):the following ip group(s) match to one mac group.

IP group address:224.1.1.1

(0.0.0.0, 224.1.1.1):

Host port(s):total 1 port(s).

Eth1/0/3 (D)

MAC group(s):

MAC group address:0100-5e01-0101

Host port(s):total 1 port(s).

Eth1/0/3

Vlan(id):10.

Total 1 IP Group(s).

Total 1 IP Source(s).

Total 1 MAC Group(s).

Router port(s):total 1 port(s).

Eth1/0/1 (D)

IP group(s):the following ip group(s) match to one mac group.

IP group address:224.1.1.1

(0.0.0.0, 224.1.1.1):

Host port(s):total 0 port(s).

MAC group(s):

MAC group address:0100-5e01-0101

Host port(s):total 0 port(s).

由此可见，IGMP Snooping在组播VLAN（VLAN 10）中维护路由器端口，而在各子VLAN（VLAN 2～VLAN 5）中维护各自的成员端口。

1.7.2 基于端口的组播VLAN配置举例

1. 组网需求

l 如图1-5 所示，Router A通过端口Ethernet1/0/1连接组播源（Source），通过端口Ethernet1/0/2连接Switch A；Router A上运行IGMPv2，Switch A上运行版本2的IGMP Snooping，并由Router A充当IGMP查询器。

l 组播源向组播组224.1.1.1发送组播数据，Host A～Host C都是该组播组的接收者（Receiver），且分别属于VLAN 2～VLAN 4。

l 通过在Switch A上配置基于端口的组播VLAN，使Router A通过组播VLAN向Switch A下分属不同用户VLAN的主机分发组播数据。

2. 组网图

图1-5 基于端口的组播VLAN配置组网图

3. 配置步骤

(1) 配置IP地址

请按照图1-5 配置各接口的IP地址和子网掩码，具体配置过程略。

(2) 配置Router A

# 使能IP组播路由，在各接口上使能PIM-DM，并在主机侧端口Ethernet1/0/2上使能IGMP。

<RouterA> system-view

[RouterA] multicast routing-enable

[RouterA] interface ethernet 1/0/1

[RouterA-Ethernet1/0/1] pim dm

[RouterA-Ethernet1/0/1] quit

[RouterA] interface ethernet 1/0/2

[RouterA-Ethernet1/0/2] pim dm

[RouterA-Ethernet1/0/2] igmp enable

(3) 配置Switch A

# 全局使能IGMP Snooping。

<SwitchA> system-view

[SwitchA] igmp-snooping

[SwitchA-igmp-snooping] quit

# 创建VLAN 10，把端口Ethernet1/0/1添加到该VLAN中，并在该VLAN内使能IGMP Snooping。

[SwitchA] vlan 10

[SwitchA-vlan10] port ethernet 1/0/1

[SwitchA-vlan10] igmp-snooping enable

[SwitchA-vlan10] quit

# 创建VLAN 2，并在该VLAN内使能IGMP Snooping。

[SwitchA] vlan 2

[SwitchA-vlan2] igmp-snooping enable

[SwitchA-vlan2] quit

VLAN 3与VLAN 4的配置与VLAN 2相似，配置过程略。

# 配置端口Ethernet1/0/2为Hybrid类型，缺省VLAN为VLAN 2；允许VLAN 2和VLAN 10的报文通过，且均不携带Tag。

[SwitchA] interface ethernet 1/0/2

[SwitchA-Ethernet1/0/2] port link-type hybrid

[SwitchA-Ethernet1/0/2] port hybrid pvid vlan 2

[SwitchA-Ethernet1/0/2] port hybrid vlan 2 untagged

[SwitchA-Ethernet1/0/2] port hybrid vlan 10 untagged

[SwitchA-Ethernet1/0/2] quit

Ethernet1/0/3与Ethernet1/0/4的配置与Ethernet1/0/2相似，配置过程略。

# 配置VLAN 10为组播VLAN。

[SwitchA] multicast-vlan 10

# 将端口Ethernet1/0/2到Ethernet1/0/3添加到组播VLAN 10内。

[SwitchA-mvlan-10] port ethernet 1/0/2 to ethernet 1/0/3

[SwitchA-mvlan-10] quit

# 配置端口Ethernet1/0/4也属于组播VLAN 10。

[SwitchA] interface ethernet 1/0/4

[SwitchA-Ethernet1/0/4] port multicast-vlan 10

[SwitchA-Ethernet1/0/4] quit

(4) 检验配置效果

# 查看Switch A上所有组播VLAN的信息。

[SwitchA] display multicast-vlan

Total 1 multicast-vlan(s)

Multicast vlan 10

subvlan list:

no subvlan

port list:

Eth1/0/2 Eth1/0/3 Eth1/0/4

# 查看Switch A上IGMP Snooping组播组的信息。

[SwitchA] display igmp-snooping group

Total 1 IP Group(s).

Total 1 IP Source(s).

Total 1 MAC Group(s).

Port flags: D-Dynamic port, S-Static port, C-Copy port, P-PIM port

Subvlan flags: R-Real VLAN, C-Copy VLAN

Vlan(id):10.

Total 1 IP Group(s).

Total 1 IP Source(s).

Total 1 MAC Group(s).

Router port(s):total 1 port(s).

Eth1/0/1 (D)

IP group(s):the following ip group(s) match to one mac group.

IP group address:224.1.1.1

(0.0.0.0, 224.1.1.1):

Host port(s):total 3 port(s).

Eth1/0/2 (D)

Eth1/0/3 (D)

Eth1/0/4 (D)

MAC group(s):

MAC group address:0100-5e01-0101

Host port(s):total 3 port(s).

Eth1/0/2

Eth1/0/3

Eth1/0/4

由此可见，IGMP Snooping统一在组播VLAN（VLAN 10）中维护路由器端口和成员端口。


1 组播路由与转发配置

l S3600V2-SI系列交换机不支持组播路由与转发功能。

l 本文所指的路由器代表运行了路由协议的三层设备。

l 组播路由与转发功能中所指的“接口”为三层口，包括VLAN接口、三层以太网端口等。三层以太网端口是指被配置为三层模式的以太网端口，有关以太网端口模式切换的操作，请参见“二层技术-以太网交换配置指导”中的“以太网端口配置”。

相关链接

  • 1.1 组播路由与转发简介
  • 1.2 组播路由与转发配置任务简介
  • 1.3 使能IP组播路由
  • 1.4 配置组播路由与转发
  • 1.5 组播路由与转发显示和维护
  • 1.6 组播路由与转发典型配置举例
  • 1.7 常见配置错误举例
父主题： 05-组播路由与转发配置


1.1 组播路由与转发简介

在组播实现中，组播路由和转发分为三种表：

l 每个组播路由协议都有一个协议自身的路由表，如PIM路由表（PIM Routing-Table）；

l 各组播路由协议的组播路由信息经过综合形成一个总的组播路由表（Multicast Routing-Table）；

l 组播转发表（Multicast Forwarding-Table）直接用于控制组播数据包的转发。

组播路由表由一组（S，G）表项组成，其中（S，G）表示由源S向组播组G发送组播数据的路由信息。如果路由器支持多种组播路由协议，则其组播路由表中将包括由多种协议生成的组播路由。路由器根据组播路由和转发策略，从组播路由表中选出最优的组播路由，并下发到组播转发表中。

1.1.1 RPF检查机制

组播路由协议依赖于现有的单播路由信息、MBGP路由或组播静态路由来创建组播路由表项。组播路由协议在创建组播路由表项时，运用了RPF（Reverse Path Forwarding，逆向路径转发）检查机制，以确保组播数据能够沿正确的路径传输，同时还能避免由于各种原因而造成的环路。

1. RPF检查过程

执行RPF检查的依据是单播路由、MBGP路由或组播静态路由：

l 单播路由表中汇集了到达各个目的网段的最短路径；

l MBGP路由表直接提供组播路由信息；

l 组播静态路由表中列出了用户通过手工静态配置指定的RPF路由信息。

在执行RPF检查时，路由器查找单播路由表、MBGP路由表和组播静态路由表，具体过程如下：

(1) 首先，分别从单播路由表、MBGP路由表和组播静态路由表中各选出一条最优路由：

l 以“报文源”的IP地址为目的地址查找单播路由表，自动选取一条最优单播路由。对应表项中的出接口为RPF接口，下一跳为RPF邻居。路由器认为来自RPF邻居且由该RPF接口收到的组播报文所经历的路径是从源S到本地的最短路径。

l 以“报文源”的IP地址为目的地址查找MBGP路由表，自动选取一条最优MBGP路由。对应表项中的出接口为RPF接口，下一跳为RPF邻居。

l 以“报文源”的IP地址为指定源地址查找组播静态路由表，自动选取一条最优组播静态路由。对应表项明确指定了RPF接口和RPF邻居。

(2) 然后，从这三条最优路由中选择一条作为RPF路由：

l 如果配置了按照最长匹配选择路由，则从这三条路由中选出最长匹配的那条路由；如果这三条路由的掩码一样，则选择其中优先级最高的那条路由；如果它们的优先级也相同，则按照组播静态路由、MBGP路由、单播路由的顺序进行选择。

l 如果没有配置按照最长匹配选择路由，则从这三条路由中选出优先级最高的那条路由；如果它们的优先级相同，则按照组播静态路由、MBGP路由、单播路由的顺序进行选择。

根据组播报文传输的具体情况不同，“报文源”所代表的具体含义也不同：

l 如果当前报文沿从组播源到接收者或RP（Rendezvous Point，汇集点）的SPT（Shortest Path Tree，最短路径树）进行传输，则以组播源为“报文源”进行RPF检查；

l 如果当前报文沿从RP到接收者的RPT（Rendezvous Point Tree，共享树）进行传输，或者沿从组播源到RP的组播源侧RPT进行传输，则都以RP为“报文源”进行RPF检查；

l 如果当前报文为BSR（BootStrap Router，自举路由器）报文，沿从BSR到各路由器的路径进行传输，则以BSR为“报文源”进行RPF检查。

有关SPT、RPT、组播源侧RPT、RP和BSR的详细介绍，请参见“IP组播配置指导”中的“PIM”。

2. RPF检查在组播转发中的应用

对每一个收到的组播数据报文都进行RPF检查会给路由器带来较大负担，而利用组播转发表可以解决这个问题。在建立组播路由和转发表时，会把组播数据报文（S，G）的RPF接口记录为（S，G）表项的入接口。当路由器收到组播数据报文（S，G）后，查找组播转发表：

(1) 如果组播转发表中不存在（S，G）表项，则对该报文执行RPF检查，将其RPF接口作为入接口，结合相关路由信息创建相应的表项，并下发到组播转发表中：

l 若该报文实际到达的接口正是其RPF接口，则RPF检查通过，向所有的出接口转发该报文；

l 若该报文实际到达的接口不是其RPF接口，则RPF检查失败，丢弃该报文。

(2) 如果组播转发表中已存在（S，G）表项，且该报文实际到达的接口与入接口相匹配，则向所有的出接口转发该报文。

(3) 如果组播转发表中已存在（S，G）表项，但该报文实际到达的接口与入接口不匹配，则对此报文执行RPF检查：

l 若其RPF接口与入接口一致，则说明（S，G）表项正确，丢弃这个来自错误路径的报文；

l 若其RPF接口与入接口不符，则说明（S，G）表项已过时，于是把入接口更新为RPF接口。如果该报文实际到达的接口正是其RPF接口，则向所有的出接口转发该报文，否则将其丢弃。

如图1-1 所示，假设网络中单播路由畅通，未配置MBGP，Switch C上也未配置组播静态路由。组播报文（S，G）沿从组播源（Source）到接收者（Receiver）的SPT进行传输。假定Switch C上的组播转发表中已存在（S，G）表项，其记录的入接口为Vlan-interface20。

图1-1 RPF检查过程

l 如果该组播报文从接口Vlan-interface20到达Switch C，与（S，G）表项的入接口相匹配，则向所有的出接口转发该报文。

l 如果该组播报文从接口Vlan-interface10到达Switch C，与（S，G）表项的入接口不匹配，则对其执行RPF检查：通过查找单播路由表发现到达Source的出接口（即RPF接口）是Vlan-interface20，与（S，G）表项的入接口一致。这说明（S，G）表项是正确的，该报文来自错误的路径，RPF检查失败，于是丢弃该报文。

1.1.2 组播静态路由

组播静态路由是RPF检查的重要依据之一。根据具体应用环境的不同，组播静态路由有以下两种主要用途：

1. 改变RPF路由

通常，组播的网络拓扑结构与单播相同，组播数据的传输路径也与单播相同。可以通过配置组播静态路由以改变RPF路由，从而为组播数据创建一条与单播不同的传输路径。

图1-2 改变RPF路由示意图

如图1-2 所示，当网络中没有配置组播静态路由时，Switch C到组播源（Source）的RPF邻居为Switch A，从Source发出的组播信息沿Switch A—Switch C的路径传输，与单播路径一致；当在Switch C上配置了组播静态路由，指定从Switch C到Source的RPF邻居为Switch B之后，从Source发出的组播信息将改变传输路径，沿Switch A—Switch B—Switch C的新路径传输。

2. 衔接RPF路由

当网络中的单播路由被阻断时，由于没有RPF路由而无法进行包括组播数据在内的数据转发。可以通过配置组播静态路由以生成RPF路由，从而创建组播路由表项以指导组播数据的转发。

图1-3 衔接RPF路由示意图

如图1-3 所示，RIP域与OSPF域之间实行单播路由隔离。当网络中没有配置组播静态路由时，OSPF域内的接收者（Receiver）不能收到RIP域内的组播源（Source）所发出的组播信息；当在Switch C和Switch D上均配置了组播静态路由，分别指定从Switch C到Source的RPF邻居为Switch B、从Switch D到Source的RPF邻居为Switch C之后，Receiver便能收到Source发出的组播信息了。

l 组播静态路由的作用只在于影响RPF检查，而不能用于指导组播数据转发，故又称为RPF静态路由；

l 组播静态路由仅在所配置的组播路由器上生效，不会以任何方式被广播或者引入给其它路由器。

1.1.3 GRE隧道在组播转发中的应用

网络中可能存在不支持组播协议的路由器。从组播源（Source）发出的组播数据沿组播路由器逐跳转发，当下一跳路由器不支持组播协议时，组播转发路径将被阻断。此时，通过在处于单播网段两端的组播路由器之间建立GRE（Generic Routing Encapsulation，通用路由封装）隧道，可以实现跨越单播网段的组播数据交换。有关GRE隧道的详细介绍，请参见“三层技术-IP业务配置指导”中的“GRE”。

图1-4 使用隧道方式传送组播数据

如图1-4 所示，在Switch A和Switch B之间建立起GRE隧道。Switch A将组播数据包封装在单播IP报文中，经由单播路由器转发，传送到隧道另一端的Switch B。然后，Switch B将单播IP报文头剥掉，继续进行组播传输。

如果在隧道的两端配置了单播静态路由，则任意单播数据包都可以通过该隧道传输。为了将该隧道专用于组播数据包的传输，可以在隧道两端只配置组播静态路由，从而使单播数据包的传输不能再使用此隧道。

1.1.4 组播路径跟踪

Multicast traceroute（组播路径跟踪）用来跟踪组播数据从第一跳到最后一跳路由器所经过的路径。

1. Multicast traceroute基本概念

(1) 最后一跳路由器（Last-hop Router）：如果某路由器有一个接口的IP地址与指定地址在同一个网段内，具备组播功能，且能够向该网段转发特定组播源发来的组播流，则称该路由器为最后一跳路由器。

(2) 第一跳路由器（First-hop Router）：与组播源直连的路由器。

(3) 查询器（Querier）：触发组播路径跟踪的路由器。

2. Multicast traceroute报文简介

Multicast traceroute报文是一种特殊的IGMP报文，与普通IGMP报文的区别在于其类型字段为0x1F/0x1E，且其目的IP地址为单播地址。Multicast traceroute报文分为以下三种类型：

l Query报文：类型字段为0x1F

l Request报文：类型字段为0x1F

l Response报文：类型字段为0x1E

3. Multicast traceroute执行步骤

(1) 查询器向最后一跳路由器发送Query报文；

(2) 最后一跳路由器在收到的Query报文后加上本地响应数据块转换成Request报文，查找到上游邻居后向其单播发送该Request报文；

(3) 最后一跳路由器到组播源之间的每一跳都在Request报文之后附加一个响应数据块，并向其上游邻居单播转发；

(4) 第一跳路由器在收到Request报文后，将其报文类型改为Response报文，向查询器单播发送完整的报文。


1.2 组播路由与转发配置任务简介

表1-1 组播路由与转发配置任务简介

配置任务 |  | 说明 | 详细配置
使能IP组播路由 |  | 必选 | 1.3
配置组播路由与转发 | 配置组播静态路由 | 可选 | 1.4.2
 | 配置组播路由策略 | 可选 | 1.4.3
 | 配置组播转发范围 | 可选 | 1.4.4
 | 配置组播转发表容量 | 可选 | 1.4.5
 | 跟踪组播数据的传输路径 | 可选 | 1.4.6

IP组播不支持从IP地址网段应用。也就是说，当为接口配置了从IP地址后，组播数据并不能通过从IP地址所属的网段进行路由和转发，而只能通过主IP地址进行路由和转发。有关主、从IP地址的详细介绍，请参见“三层技术-IP业务配置指导”中的“IP地址”。


1.3 使能IP组播路由

在配置各项三层组播功能之前，必须首先使能IP组播路由。

1. 使能公网实例中的IP组播路由

表1-2 使能公网实例中的IP组播路由

操作 | 命令 | 说明
进入系统视图 | system-view | -
使能IP组播路由 | multicast routing-enable | 必选 缺省情况下，IP组播路由处于关闭状态

2. 使能VPN实例中的IP组播路由

表1-3 使能VPN实例中的IP组播路由

操作 | 命令 | 说明
进入系统视图 | system-view | -
创建VPN实例，并进入VPN实例视图 | ip vpn-instance vpn-instance-name | -
配置VPN实例的RD | route-distinguisher route-distinguisher | 必选 缺省情况下，VPN实例没有RD
使能IP组播路由 | multicast routing-enable | 必选 缺省情况下，IP组播路由处于关闭状态

有关 ip vpn-instance 和 route-distinguisher 命令的详细介绍，请参见“三层技术-IP路由命令参考”中的“MCE”。


1.4 配置组播路由与转发

1.4.1 配置准备

在配置组播路由与转发之前，需完成以下任务：

l 配置任一单播路由协议，实现域内网络层互通

l 配置PIM-DM（或PIM-SM）

在配置组播路由与转发之前，需准备以下数据：

l 单条组播转发表项的最大下行节点数目

l 组播转发表的最大表项数

1.4.2 配置组播静态路由

通过配置组播静态路由，可以为来自特定组播源的组播报文指定RPF接口或RPF邻居。在删除已配置好的组播静态路由时，既可通过 undo ip rpf-route-static 命令删除指定的组播静态路由，也可通过 delete ip rpf-route-static 命令删除所有的组播静态路由。

表1-4 配置组播静态路由

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置组播静态路由 | ip rpf-route-static [ vpn-instance vpn-instance-name ] source-address { mask | mask-length } [ protocol [ process-id ] ] [ route-policy policy-name ] { rpf-nbr-address | interface-type interface-number } [ preference preference ] [ order order-number ] | 必选 缺省情况下，没有配置组播静态路由
删除所有组播静态路由 | delete ip rpf-route-static [ vpn-instance vpn-instance-name ] | 可选

在配置组播静态路由时，若RPF邻居的接口类型是三层以太网端口、三层聚合接口、Loopback接口或VLAN接口时，则不能用指定接口（interface-type interface-number）的方式来指定RPF邻居，而只能用指定地址（rpf-nbr-address）的方式。

1.4.3 配置组播路由策略

可以配置组播路由器按照最长匹配原则来选择RPF路由，有关RPF路由选择的详细介绍，请参见“ 1.1.1 1. RPF检查过程 ”一节。此外，通过配置根据组播源或组播源组进行组播流量的负载分担，还可以优化存在多条组播数据流时的网络流量。

1. 配置公网实例中的组播路由策略

表1-5 配置公网实例中的组播路由策略

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置按照最长匹配选择RPF路由 | multicast longest-match | 可选 缺省情况下，选择优先级最高的路由作为RPF路由
配置对组播流量进行负载分担 | multicast load-splitting { source | source-group } | 可选 缺省情况下，不对组播流量进行负载分担

2. 配置VPN实例中的组播路由策略

表1-6 配置VPN实例中的组播路由策略

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入VPN实例视图 | ip vpn-instance vpn-instance-name | -
配置按照最长匹配选择RPF路由 | multicast longest-match | 可选 缺省情况下，选择优先级最高的路由作为RPF路由
配置对组播流量进行负载分担 | multicast load-splitting { source | source-group } | 可选 缺省情况下，不对组播流量进行负载分担

1.4.4 配置组播转发范围

组播信息在网络中的转发并不是漫无边际的，每个组播组对应的组播信息都必须在确定的范围内传递。目前可以在所有支持组播转发的接口上配置针对某个组播组的转发边界。组播转发边界为指定范围的组播组划定了边界条件，如果组播报文的目的地址与边界条件匹配，就停止转发。当在一个接口上配置了组播转发边界后，将不能从该接口转发组播报文（包括本机发出的组播报文），也不能从该接口接收组播报文。

表1-7 配置组播转发范围

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
配置组播转发边界 | multicast boundary group-address { mask | mask-length } | 必选 缺省情况下，没有配置组播转发边界

1.4.5 配置组播转发表容量

路由器为每个收到的组播数据报文都维护相应的转发表项。但是，组播转发表项过多可能会耗尽路由器内存，从而导致路由器性能下降。用户可以根据实际组网情况和业务性能要求对组播转发表中的表项数量进行限制。如果组播转发表最大表项数的配置值小于当前值，则超出数目的表项并不会立刻被删除，而必须由组播路由协议来删除，同时也无法添加新的组播转发表项。

路由器为每个下行节点复制一份组播数据报文并发送出去，每个下行节点就形成组播分发树的一条分支。用户可以根据实际组网情况和业务性能要求对组播转发表中单条表项的下行节点数目（即出接口数目）进行限制，以缓解路由器的复制压力。如果单条组播转发表项的最大下行节点数目的配置值小于当前值，则超出数目的下行节点并不会被立刻删除，而必须由组播路由协议来删除，同时新增的下行节点将无法添加到该表项中。

1. 配置公网实例中的组播转发表容量

表1-8 配置公网实例中的组播转发表容量

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置组播转发表的最大表项数 | multicast forwarding-table route-limit limit | 可选 缺省情况下，组播转发表的最大表项数为2000
配置单条组播转发表项的最大下行节点数目 | multicast forwarding-table downstream-limit limit | 可选 缺省情况下，单条组播转发表项的最大下行节点数目为128

2. 配置VPN实例中的组播转发表容量

表1-9 配置VPN实例中的组播转发表容量

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入VPN实例视图 | ip vpn-instance vpn-instance-name | -
配置组播转发表的最大表项数 | multicast forwarding-table route-limit limit | 可选 缺省情况下，组播转发表的最大表项数为2000
配置单条组播转发表项的最大下行节点数目 | multicast forwarding-table downstream-limit limit | 可选 缺省情况下，单条组播转发表项的最大下行节点数目为128

1.4.6 跟踪组播数据的传输路径

可在任意视图下执行 mtracert 命令来跟踪组播数据从第一跳到最后一跳路由器所经过的路径。

表1-10 跟踪组播数据的传输路径

操作 | 命令 | 说明
跟踪组播数据的传输路径 | mtracert source-address [ [ last-hop-router-address ] group-address ] | 必选 可在任意视图下执行


1.5 组播路由与转发显示和维护

在完成上述配置后，在任意视图下执行 display 命令可以显示配置后组播路由与转发的信息，通过查看显示信息验证配置的效果。

在用户视图下执行 reset 命令可以清除组播路由与转发的统计信息。

表1-11 组播路由与转发显示和维护

操作 | 命令
查看组播边界信息 | display multicast [ all-instance | vpn-instance vpn-instance-name ] boundary [ group-address [ mask | mask-length ] ] [ interface interface-type interface-number ] [ | { begin | exclude | include } regular-expression ]
查看组播转发表信息 | display multicast [ all-instance | vpn-instance vpn-instance-name ] forwarding-table [ source-address [ mask { mask | mask-length } ] | group-address [ mask { mask | mask-length } ] | incoming-interface { interface-type interface-number | register } | outgoing-interface { exclude | include | match } { interface-type interface-number | register } | statistics | slot slot-number ] * [ port-info ] [ | { begin | exclude | include } regular-expression ]
查看组播转发表的DF信息 | display multicast [ all-instance | vpn-instance vpn-instance-name ] forwarding-table df-info [ rp-address ] [ slot slot-number ] [ | { begin | exclude | include } regular-expression ]
查看组播路由表信息 | display multicast [ all-instance | vpn-instance vpn-instance-name ] routing-table [ source-address [ mask { mask | mask-length } ] | group-address [ mask { mask | mask-length } ] | incoming-interface { interface-type interface-number | register } | outgoing-interface { exclude | include | match } { interface-type interface-number | register } ] * [ | { begin | exclude | include } regular-expression ]
查看组播静态路由信息 | display multicast routing-table [ all-instance | vpn-instance vpn-instance-name ] static [ source-address { mask-length | mask } ] [ | { begin | exclude | include } regular-expression ]
查看组播源的RPF信息 | display multicast [ all-instance | vpn-instance vpn-instance-name ] rpf-info source-address [ group-address ] [ | { begin | exclude | include } regular-expression ]
清除组播转发表中的转发项 | reset multicast [ all-instance | vpn-instance vpn-instance-name ] forwarding-table { { source-address [ mask { mask | mask-length } ] | group-address [ mask { mask | mask-length } ] | incoming-interface { interface-type interface-number | register } } * | all }
清除组播路由表中的路由项 | reset multicast [ all-instance | vpn-instance vpn-instance-name ] routing-table { { source-address [ mask { mask | mask-length } ] | group-address [ mask { mask | mask-length } ] | incoming-interface { interface-type interface-number | register } } * | all }

有关DF（Designated Forwarder，指定转发者）的详细介绍，请参见“IP组播配置指导”中的“PIM”。

l 执行 reset 命令将清除组播路由表或组播转发表中的信息，可能导致组播信息无法正常传输；

l 清除组播路由表中的路由项后，组播转发表中的相应表项也将随之删除；

l 清除组播转发表中的转发项后，组播路由表中的相应表项也将随之删除。


1.6 组播路由与转发典型配置举例

1.6.1 改变RPF路由配置举例

1. 组网需求

l 网络中运行PIM-DM，所有交换机都支持组播功能；

l Switch A、Switch B和Switch C之间运行OSPF协议；

l 通常情况下，Receiver能通过Switch A—Switch B这条与单播路径相同的路径接收来自Source的组播信息；

l 要求通过配置，使Receiver能通过Switch A—Switch C—Switch B这条与单播路径不同的路径接收来自Source的组播信息。

2. 组网图

图1-5 改变RPF路由配置举例

3. 配置步骤

(1) 配置IP地址和单播路由协议

请按照图1-5 配置各接口的IP地址和掩码，具体配置过程略。

配置PIM-DM域内的各交换机之间采用OSPF协议进行互连，确保PIM-DM域内部在网络层互通，并且各交换机之间能够借助单播路由协议实现动态路由更新，具体配置过程略。

(2) 使能IP组播路由，并使能PIM-DM和IGMP

# 在Switch B上使能IP组播路由，在各接口上使能PIM-DM，并在主机侧接口Vlan-interface100上使能IGMP。

<SwitchB> system-view

[SwitchB] multicast routing-enable

[SwitchB] interface vlan-interface 100

[SwitchB-Vlan-interface100] igmp enable

[SwitchB-Vlan-interface100] pim dm

[SwitchB-Vlan-interface100] quit

[SwitchB] interface vlan-interface 101

[SwitchB-Vlan-interface101] pim dm

[SwitchB-Vlan-interface101] quit

[SwitchB] interface vlan-interface 102

[SwitchB-Vlan-interface102] pim dm

[SwitchB-Vlan-interface102] quit

# 在Switch A上使能IP组播路由，并在各接口上使能PIM-DM。

<SwitchA> system-view

[SwitchA] multicast routing-enable

[SwitchA] interface vlan-interface 200

[SwitchA-Vlan-interface200] pim dm

[SwitchA-Vlan-interface200] quit

[SwitchA] interface vlan-interface 102

[SwitchA-Vlan-interface102] pim dm

[SwitchA-Vlan-interface102] quit

[SwitchA] interface vlan-interface 103

[SwitchA-Vlan-interface103] pim dm

[SwitchA-Vlan-interface103] quit

Switch C上的配置与Switch A相似，配置过程略。

# 在Switch B上使用 display multicast rpf-info 命令查看到Source的RPF信息。

[SwitchB] display multicast rpf-info 50.1.1.100

RPF information about source 50.1.1.100:

RPF interface: Vlan-interface102, RPF neighbor: 30.1.1.2

Referenced route/mask: 50.1.1.0/24

Referenced route type: igp

Route selection rule: preference-preferred

Load splitting rule: disable

Switch B上当前的RPF路由来源于单播路由，RPF邻居是Switch A。

(3) 配置组播静态路由

# 在Switch B上配置组播静态路由，指定到Source的RPF邻居为Switch C。

[SwitchB] ip rpf-route-static 50.1.1.100 24 20.1.1.2

(4) 检验配置效果

# 在Switch B上使用 display multicast rpf-info 命令查看到Source的RPF信息。

[SwitchB] display multicast rpf-info 50.1.1.100

RPF information about source 50.1.1.100:

RPF interface: Vlan-interface101, RPF neighbor: 20.1.1.2

Referenced route/mask: 50.1.1.0/24

Referenced route type: multicast static

Route selection rule: preference-preferred

Load splitting rule: disable

与配置组播静态路由前相比，Switch B上的RPF路由已经产生了变化，其来源变为组播静态路由，RPF邻居变为Switch C。

1.6.2 衔接RPF路由配置举例

1. 组网需求

l 网络中运行PIM-DM，所有交换机都支持组播功能；

l Switch B和Switch C之间运行OSPF协议，并与Switch A单播路由隔离；

l 通常情况下，Receiver能接收来自OSPF域内Source 1的组播信息；

l 要求通过配置，使Receiver也可以接收来自OSPF域外Source 2的组播信息。

2. 组网图

图1-6 衔接RPF路由配置组网图

3. 配置步骤

(1) 配置IP地址和单播路由协议

请按照图1-6 配置各接口的IP地址和掩码，具体配置过程略。

配置Switch B和Switch C之间采用OSPF协议进行互连，确保Switch B和Switch C之间在网络层互通，并且能够借助单播路由协议实现动态路由更新，具体配置过程略。

(2) 使能IP组播路由，并使能PIM-DM和IGMP

# 在Switch C上使能IP组播路由，在各接口上使能PIM-DM，并在主机侧接口Vlan-interface100上使能IGMP。

<SwitchC> system-view

[SwitchC] multicast routing-enable

[SwitchC] interface vlan-interface 100

[SwitchC-Vlan-interface100] igmp enable

[SwitchC-Vlan-interface100] pim dm

[SwitchC-Vlan-interface100] quit

[SwitchC] interface vlan-interface 101

[SwitchC-Vlan-interface101] pim dm

[SwitchC-Vlan-interface101] quit

# 在Switch A上使能IP组播路由，并在各接口上使能PIM-DM。

<SwitchA> system-view

[SwitchA] multicast routing-enable

[SwitchA] interface vlan-interface 300

[SwitchA-Vlan-interface300] pim dm

[SwitchA-Vlan-interface300] quit

[SwitchA] interface vlan-interface 102

[SwitchA-Vlan-interface102] pim dm

[SwitchA-Vlan-interface102] quit

Switch B上的配置与Switch A相似，配置过程略。

# 在Switch B和Switch C上分别使用 display multicast rpf-info 命令查看到Source 2的RPF信息。

[SwitchB] display multicast rpf-info 50.1.1.100

[SwitchC] display multicast rpf-info 50.1.1.100

没有显示信息输出，说明在Switch B和Switch C上都没有到Source 2的RPF路由。

(3) 配置组播静态路由

# 在Switch B上配置组播静态路由，指定到Source 2的RPF邻居为Switch A。

[SwitchB] ip rpf-route-static 50.1.1.100 24 30.1.1.2

# 在Switch C上配置组播静态路由，指定到Source 2的RPF邻居为Switch B。

[SwitchC] ip rpf-route-static 50.1.1.100 24 20.1.1.2

(4) 检验配置效果

# 在Switch B和Switch C上分别使用 display multicast rpf-info 命令查看到Source 2的RPF信息。

[SwitchB] display multicast rpf-info 50.1.1.100

RPF information about source 50.1.1.100:

RPF interface: Vlan-interface102, RPF neighbor: 30.1.1.2

Referenced route/mask: 50.1.1.0/24

Referenced route type: multicast static

Route selection rule: preference-preferred

Load splitting rule: disable

[SwitchC] display multicast rpf-info 50.1.1.100

RPF information about source 50.1.1.100:

RPF interface: Vlan-interface101, RPF neighbor: 20.1.1.2

Referenced route/mask: 50.1.1.0/24

Referenced route type: multicast static

Route selection rule: preference-preferred

Load splitting rule: disable

与配置组播静态路由前相比，Switch B和Switch C上都有了到Source 2的RPF路由，且其均来源于组播静态路由。

1.6.3 利用GRE隧道实现组播转发配置举例

1. 组网需求

l Switch A和Switch C支持组播功能并运行PIM-DM，但Switch B不支持组播功能；

l Switch A、Switch B和Switch C之间运行OSPF协议；

l 要求通过配置，使Receiver能够接收来自Source的组播信息。

2. 组网图

图1-7 利用GRE隧道实现组播转发配置组网图

3. 配置步骤

(1) 配置IP地址

请按照图1-7 配置各接口的IP地址和掩码，具体配置过程略。

(2) 配置GRE隧道

# 在Switch A上创建业务环回组1，并指定其业务类型为Tunnel类型。

<SwitchA> system-view

[SwitchA] service-loopback group 1 type tunnel

# 在Switch A的端口Ethernet1/0/3（该端口不属于VLAN 100和101）上关闭生成树协议、LLDP功能和NDP功能，并将其加入业务环回组1。

[SwitchA] interface ethernet1/0/3

[SwitchA-Ethernet1/0/3] undo stp enable

[SwitchA-Ethernet1/0/3] undo ndp enable

[SwitchA-Ethernet1/0/3] undo lldp enable

[SwitchA-Ethernet1/0/3] port service-loopback group 1

[SwitchA-Ethernet1/0/3] quit

# 在Switch A上创建接口Tunnel0，并为其配置IP地址和掩码。

[SwitchA] interface tunnel 0

[SwitchA-Tunnel0] ip address 50.1.1.1 24

# 在Switch A上配置Tunnel0接口采用GRE隧道模式，并为该接口指定源地址和目的地址。

[SwitchA-Tunnel0] tunnel-protocol gre

[SwitchA-Tunnel0] source 20.1.1.1

[SwitchA-Tunnel0] destination 30.1.1.2

[SwitchA-Tunnel0] quit

# 在Switch C上创建业务环回组1，并指定其业务类型为Tunnel类型。

<SwitchC> system-view

[SwitchC] service-loopback group 1 type tunnel

# 在Switch C的端口Ethernet1/0/3（该端口不属于VLAN 200和102）上关闭生成树协议、LLDP功能和NDP功能，并将其加入业务环回组1。

[SwitchC] interface ethernet1/0/3

[SwitchC-Ethernet1/0/3] undo stp enable

[SwitchC-Ethernet1/0/3] undo ndp enable

[SwitchC-Ethernet1/0/3] undo lldp enable

[SwitchC-Ethernet1/0/3] port service-loopback group 1

[SwitchC-Ethernet1/0/3] quit

# 在Switch C上创建接口Tunnel0，并为其配置IP地址和掩码。

[SwitchC] interface tunnel 0

[SwitchC-Tunnel0] ip address 50.1.1.2 24

# 在Switch C上配置Tunnel0接口采用GRE隧道模式，并为该接口指定源地址和目的地址。

[SwitchC-Tunnel0] tunnel-protocol gre

[SwitchC-Tunnel0] source 30.1.1.2

[SwitchC-Tunnel0] destination 20.1.1.1

[SwitchC-Tunnel0] quit

(3) 配置OSPF协议

# 在Switch A上配置OSPF协议。

[SwitchA] ospf 1

[SwitchA-ospf-1] area 0

[SwitchA-ospf-1-area-0.0.0.0] network 10.1.1.0 0.0.0.255

[SwitchA-ospf-1-area-0.0.0.0] network 20.1.1.0 0.0.0.255

[SwitchA-ospf-1-area-0.0.0.0] network 50.1.1.0 0.0.0.255

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

[SwitchA-ospf-1] quit

# 在Switch B上配置OSPF协议。

<SwitchB> system-view

[SwitchB] ospf 1

[SwitchB-ospf-1] area 0

[SwitchB-ospf-1-area-0.0.0.0] network 20.1.1.0 0.0.0.255

[SwitchB-ospf-1-area-0.0.0.0] network 30.1.1.0 0.0.0.255

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

[SwitchB-ospf-1] quit

# 在Switch C上配置OSPF协议。

[SwitchC] ospf 1

[SwitchC-ospf-1] area 0

[SwitchC-ospf-1-area-0.0.0.0] network 30.1.1.0 0.0.0.255

[SwitchC-ospf-1-area-0.0.0.0] network 40.1.1.0 0.0.0.255

[SwitchC-ospf-1-area-0.0.0.0] network 50.1.1.0 0.0.0.255

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

[SwitchC-ospf-1] quit

(4) 使能IP组播路由，并使能PIM-DM和IGMP

# 在Switch A上使能IP组播路由，并在各接口上使能PIM-DM。

[SwitchA] multicast routing-enable

[SwitchA] interface vlan-interface 100

[SwitchA-Vlan-interface100] pim dm

[SwitchA-Vlan-interface100] quit

[SwitchA] interface vlan-interface 101

[SwitchA-Vlan-interface101] pim dm

[SwitchA-Vlan-interface101] quit

[SwitchA] interface tunnel 0

[SwitchA-Tunnel0] pim dm

[SwitchA-Tunnel0] quit

# 在Switch C上使能IP组播路由，在各接口上使能PIM-DM，并在主机侧接口Vlan-interface200上使能IGMP。

[SwitchC] multicast routing-enable

[SwitchC] interface vlan-interface 200

[SwitchC-Vlan-interface200] igmp enable

[SwitchC-Vlan-interface200] pim dm

[SwitchC-Vlan-interface200] quit

[SwitchC] interface vlan-interface 102

[SwitchC-Vlan-interface102] pim dm

[SwitchC-Vlan-interface102] quit

[SwitchC] interface tunnel 0

[SwitchC-Tunnel0] pim dm

[SwitchC-Tunnel0] quit

(5) 配置组播静态路由

# 在Switch C上配置组播静态路由，指定到Source的RPF邻居为Switch A的Tunnel0接口。

[SwitchC] ip rpf-route-static 10.1.1.0 24 50.1.1.1

(6) 检验配置效果

组播源向组播组225.1.1.1发送组播数据，接收者加入该组播组后能够收到组播源发来的组播数据。通过使用 display pim routing-table 命令可以查看交换机的PIM路由表信息。例如：

# 查看Switch C上的PIM路由表信息。

[SwitchC] display pim routing-table

VPN-Instance: public net

Total 1 (*, G) entry; 1 (S, G) entry

(*, 225.1.1.1)

Protocol: pim-dm, Flag: WC

UpTime: 00:04:25

Upstream interface: NULL

Upstream neighbor: NULL

RPF prime neighbor: NULL

Downstream interface(s) information:

Total number of downstreams: 1

1: Vlan-interface200

Protocol: igmp, UpTime: 00:04:25, Expires: never

(10.1.1.100, 225.1.1.1)

Protocol: pim-dm, Flag: ACT

UpTime: 00:06:14

Upstream interface: Tunnel0

Upstream neighbor: 50.1.1.1

RPF prime neighbor: 50.1.1.1

Downstream interface(s) information:

Total number of downstreams: 1

1: Vlan-interface200

Protocol: pim-dm, UpTime: 00:04:25, Expires: never

Switch C的RPF邻居为Switch A，组播数据通过GRE隧道直接由Switch A发往Switch C。


1.7 常见配置错误举例

1.7.1 组播静态路由失败

1. 故障现象

路由器没有配置动态路由协议，接口的物理状态与链路层协议状态都显示为up；但是组播静态路由失败。

2. 分析

l 如果没有正确配置或更新与当前网络情况相匹配的组播静态路由，则组播路由表中不存在此路由项以及组播静态路由的配置信息；

l 如果查询到有比组播静态路由更优的路由，也可能导致组播静态路由失败。

3. 处理过程

(1) 使用display multicast routing-table static命令在组播路由表中查看组播静态路由的信息，以确定是否正确配置了对应的路由并存在于组播路由表中；

(2) 检查组播静态路由下一跳接口的接口类型。若为非点到点接口，则配置组播静态路由时，出接口必须使用下一跳地址的形式配置；

(3) 检查组播静态路由是否匹配指定的路由协议。如果配置组播静态路由时指定了协议，则使用display ip routing-table命令检查该协议是否添加了相同的路由；

(4) 检查组播静态路由是否匹配指定的路由策略。如果配置组播静态路由时指定了路由策略，则使用display route-policy命令检查配置的路由策略。

1.7.2 组播数据无法到达接收者

1. 故障现象

组播数据可以到达一些路由器，但无法到达最后一跳路由器。

2. 分析

通过在接口上使用 multicast boundary 命令可以设置组播转发边界，组播数据是无法跨越该边界的。

3. 处理过程

(1) 使用display pim routing-table命令查看各路由器上是否有（S，G）表项：如果有则表示收到了组播数据；否则表示没有收到组播数据。

(2) 使用 display multicast boundary 命令来查看接口的组播边界信息。使用 multicast boundary 命令来更改组播转发边界。

(3) 若采用了PIM-SM，使用display current-configuration命令检查是否配置了BSR和RP。


1 IGMP配置

l S3600V2-SI系列交换机不支持IGMP功能。

l 本文所指的路由器代表运行了路由协议的三层设备。

l IGMP功能中所指的“接口”为三层口，包括VLAN接口、三层以太网端口等。三层以太网端口是指被配置为三层模式的以太网端口，有关以太网端口模式切换的操作，请参见“二层技术-以太网交换配置指导”中的“以太网端口配置”。

相关链接

  • 1.1 IGMP简介
  • 1.2 IGMP配置任务简介
  • 1.3 配置IGMP基本功能
  • 1.4 调整IGMP性能
  • 1.5 配置IGMP SSM Mapping
  • 1.6 配置IGMP Proxying
  • 1.7 IGMP显示和维护
  • 1.8 IGMP典型配置举例
  • 1.9 常见配置错误举例
父主题： 06-IGMP配置


1.1 IGMP简介

IGMP是Internet Group Management Protocol（互联网组管理协议）的简称。它是TCP/IP协议族中负责IP组播成员管理的协议，用来在IP主机和与其直接相邻的组播路由器之间建立、维护组播组成员关系。

1.1.1 IGMP的版本

到目前为止，IGMP有三个版本：

l IGMPv1（由RFC 1112定义）

l IGMPv2（由RFC 2236定义）

l IGMPv3（由RFC 3376定义）

所有版本的IGMP都支持ASM（Any-Source Multicast，任意信源组播）模型；IGMPv3可以直接应用于SSM（Source-Specific Multicast，指定信源组播）模型，而IGMPv1和IGMPv2则需要在IGMP SSM Mapping技术的支持下才能应用于SSM模型。

有关ASM和SSM模型的介绍，请参见“IP组播配置指导”中的“组播概述”。

1.1.2 IGMPv1工作机制

IGMPv1主要基于查询和响应机制来完成对组播组成员的管理。

当一个网段内有多台组播路由器时，由于它们都能从主机那里收到IGMP成员关系报告报文（Membership Report Message），因此只需要其中一台路由器发送IGMP查询报文（Query Message）就足够了。这就需要有一个查询器（Querier）的选举机制来确定由哪台路由器作为IGMP查询器。

对于IGMPv1来说，由组播路由协议（如PIM）选举出唯一的组播信息转发者DR（Designated Router，指定路由器）作为IGMP查询器。

有关DR的介绍，请参见“IP组播配置指导”中的“PIM”。

图1-1 IGMP查询响应示意图

如图1-1 所示，假设Host B与Host C想要收到发往组播组G1的组播数据，而Host A想要收到发往组播组G2的组播数据，那么主机加入组播组以及IGMP查询器（Router B）维护组播组成员关系的基本过程如下：

(1) 主机会主动向其要加入的组播组发送IGMP成员关系报告报文以声明加入，而不必等待IGMP查询器发来的IGMP查询报文；

(2) IGMP查询器周期性地以组播方式向本地网段内的所有主机与路由器发送IGMP查询报文（目的地址为224.0.0.1）；

(3) 在收到该查询报文后，关注G1的Host B与Host C其中之一（这取决于谁的延迟定时器先超时）——譬如Host B会首先以组播方式向G1发送IGMP成员关系报告报文，以宣告其属于G1。由于本地网段中的所有主机和路由器都能收到Host B发往G1的报告报文，因此当Host C收到该报告报文后，将不再发送同样针对G1的报告报文，因为IGMP路由器（Router A和Router B）已知道本地网段中有对G1感兴趣的主机了。这个机制称为主机上的IGMP成员关系报告抑制机制，该机制有助于减少本地网段的信息流量；

(4) 与此同时，由于Host A关注的是G2，所以它仍将以组播方式向G2发送报告报文，以宣告其属于G2；

(5) 经过以上的查询和响应过程，IGMP路由器了解到本地网段中有G1和G2的成员，于是由组播路由协议（如PIM）生成（*，G1）和（*，G2）组播转发项作为组播数据的转发依据，其中的“*”代表任意组播源；

(6) 当由组播源发往G1或G2的组播数据经过组播路由到达IGMP路由器时，由于IGMP路由器上存在（*，G1）和（*，G2）组播转发项，于是将该组播数据转发到本地网段，接收者主机便能收到该组播数据了。

IGMPv1没有专门定义离开组播组的报文。当运行IGMPv1的主机离开某组播组时，将不会向其要离开的组播组发送报告报文。当网段中不再存在该组播组的成员后，IGMP路由器将收不到任何发往该组播组的报告报文，于是IGMP路由器在一段时间之后便删除该组播组所对应的组播转发项。

1.1.3 IGMPv2的改进

与IGMPv1相比，IGMPv2增加了查询器选举机制和离开组机制。

1. 查询器选举机制

在IGMPv1中，当某共享网段上存在多个组播路由器时，由组播路由协议（如PIM）选举的指定路由器充当查询器。

在IGMPv2中，增加了独立的查询器选举机制，其选举过程如下：

(1) 所有IGMPv2路由器在初始时都认为自己是查询器，并向本地网段内的所有主机和路由器发送IGMP普遍组查询（General Query）报文（目的地址为224.0.0.1）；

(2) 本地网段中的其它IGMPv2路由器在收到该报文后，将报文的源IP地址与自己的接口地址作比较。通过比较，IP地址最小的路由器将成为查询器，其它路由器成为非查询器（Non-Querier）；

(3) 所有非查询器上都会启动一个定时器（即其它查询器存在时间定时器Other Querier Present Timer）。在该定时器超时前，如果收到了来自查询器的IGMP查询报文，则重置该定时器；否则，就认为原查询器失效，并发起新的查询器选举过程。

2. 离开组机制

在IGMPv1中，主机离开组播组时不会向组播路由器发出任何通知，导致组播路由器只能依靠组播组成员查询的响应超时来获知组播组成员的离开。

而在IGMPv2中，当一个主机离开某组播组时：

(1) 该主机向本地网段内的所有组播路由器（目的地址为224.0.0.2）发送离开组（Leave Group）报文；

(2) 当查询器收到该报文后，向该主机所声明要离开的那个组播组发送特定组查询（Group-Specific Query）报文（目的地址字段和组地址字段均填充为所要查询的组播组地址）；

(3) 如果该网段内还有该组播组的其它成员，则这些成员在收到特定组查询报文后，会在该报文中所设定的最大响应时间（Max Response Time）内发送成员关系报告报文；

(4) 如果在最大响应时间内收到了该组播组其它成员发送的成员关系报告报文，查询器就会继续维护该组播组的成员关系；否则，查询器将认为该网段内已无该组播组的成员，于是不再维护这个组播组的成员关系。

1.1.4 IGMPv3的改进

IGMPv3在兼容和继承IGMPv1和IGMPv2的基础上，进一步增强了主机的控制能力，并增强了查询和报告报文的功能。

1. 主机控制能力的增强

IGMPv3增加了针对组播源的过滤模式（INCLUDE/EXCLUDE），使主机在加入某组播组G的同时，能够明确要求接收或拒绝来自某特定组播源S的组播信息。当主机加入组播组时：

l 若要求只接收来自指定组播源如S1、S2、……的组播信息，则其报告报文中可以标记为INCLUDE Sources（S1，S2，……）；

l 若拒绝接收来自指定组播源如S1、S2、……的组播信息，则其报告报文中可以标记为EXCLUDE Sources（S1，S2，……）。

如图1-2 所示，网络中存在Source 1（S1）和Source 2（S2）两个组播源，均向组播组G发送组播报文。Host B仅对从Source 1发往G的信息感兴趣，而对来自Source 2的信息没有兴趣。

图1-2 指定源组的组播流路经

如果主机与路由器之间运行的是IGMPv1或IGMPv2，Host B加入组播组G时无法对组播源进行选择，因此无论Host B是否需要，来自Source 1和Source 2的组播信息都将传递给Host B。

当主机与路由器之间运行了IGMPv3之后，Host B就可以要求只接收来自Source 1、发往G的组播信息（S1，G），或要求拒绝来自Source 2、发往G的组播信息（S2，G），这样就只有来自Source 1的组播信息才能传递给Host B了。

2. 查询和报告报文功能的增强

(1) 携带源地址的查询报文

IGMPv3不仅支持IGMPv1的普遍组查询和IGMPv2的特定组查询，而且还增加了对特定源组查询的支持：

l 普遍组查询报文中，既不携带组地址，也不携带源地址；

l 特定组查询报文中，携带组地址，但不携带源地址；

l 特定源组查询报文中，既携带组地址，还携带一个或多个源地址。

(2) 包含多组记录的报告报文

IGMPv3报告报文的目的地址为224.0.0.22，可以携带一个或多个组记录。在每个组记录中，包含有组播组地址和组播源地址列表。组记录可以分为多种类型，如下：

l IS_IN：表示组播组与组播源列表之间的过滤模式为INCLUDE，即只接收从指定组播源列表发往该组播组的组播数据。

l IS_EX：表示组播组与组播源列表之间的过滤模式为EXCLUDE，即只接收从指定组播源列表之外的组播源发往该组播组的组播数据。

l TO_IN：表示组播组与组播源列表之间的过滤模式由EXCLUDE转变为INCLUDE。

l TO_EX：表示组播组与组播源列表之间的过滤模式由INCLUDE转变为EXCLUDE。

l ALLOW：表示在现有状态的基础上，还希望从某些组播源接收组播数据。如果当前的对应关系为INCLUDE，则向现有组播源列表中添加这些组播源；如果当前的对应关系为EXCLUDE，则从现有组播源列表中删除这些组播源。

l BLOCK：表示在现有状态的基础上，不再希望从某些组播源接收组播数据。如果当前的对应关系为INCLUDE，则从现有组播源列表中删除这些组播源；如果当前的对应关系为EXCLUDE，则向现有组播源列表中添加这些组播源。

1.1.5 IGMP SSM Mapping

IGMP SSM Mapping通过在路由器上配置SSM静态映射规则，从而为运行IGMPv1或IGMPv2的接收者主机提供对SSM模型的支持。

SSM模型要求在接收者主机所在的网段，路由器能够了解主机加入组播组时所指定的组播源。如果接收者主机上运行的是IGMPv3，则可以在IGMPv3的报告报文中直接指定组播源的地址；如果某些接收者主机只能运行IGMPv1或IGMPv2，则在IGMPv1或IGMPv2的报告报文中无法指定组播源的地址。这种情况下需要通过在路由器上配置IGMP SSM Mapping功能，将IGMPv1或IGMPv2报告报文中所包含的（*，G）信息映射为（G，INCLUDE，（S1，S2...））信息。

图1-3 IGMP SSM Mapping组网图

在如 图1-3 所示的SSM网络中，Host A、Host B和Host C上分别运行IGMPv1、IGMPv2和IGMPv3。在不允许将Host A和Host B升级为IGMPv3的情况下，若要为Host A和Host B也提供SSM组播服务，则需在Router A上使能IGMP SSM Mapping并配置相应的映射规则。

配置完成后，当Router A收到来自主机的IGMPv1或IGMPv2报告报文时，首先检查该报文中所携带的组播组地址G，然后根据检查结果的不同分别进行处理：

(1) 如果G不在SSM组地址范围内，则提供ASM组播服务。

(2) 如果G在SSM组地址范围内：

l 若Router A上没有G对应的IGMP SSM Mapping规则，则无法提供SSM组播服务，丢弃该报文；

l 若Router A上有G对应的IGMP SSM Mapping规则，则依据规则将报告报文中所包含的（*，G）信息映射为（G，INCLUDE，（S1，S2...））信息，可以提供SSM组播服务。

l IGMP SSM Mapping不对IGMPv3的报告报文进行处理。

l 有关SSM组地址范围的介绍，请参见“IP组播配置指导”中的“PIM”。

1.1.6 IGMP Proxying

在一些简单的树型网络拓扑中，边缘设备上并不需要运行复杂的组播路由协议（如PIM），可以通过在这些设备上配置IGMP Proxying（IGMP代理）功能，使其代理下游主机来发送IGMP报文及维护组成员关系，并基于该关系进行组播转发。在上游设备看来，配置了IGMP Proxying功能的设备（称为IGMP代理设备）不再是一个PIM邻居，而只是一台主机。

图1-4 IGMP Proxying组网图

如 图1-4 所示，IGMP Proxying中定义了以下两种接口类型：

l 上行接口：又称代理接口，指IGMP代理设备上运行IGMP Proxying功能的接口，即朝向组播分发树树根方向的接口。由于该接口执行IGMP协议的主机行为，因此也称为主机接口（Host Interface）。

l 下行接口：指IGMP代理设备上除上行接口外其它运行IGMP协议的接口，即背向组播分发树树根方向的接口。由于该接口执行IGMP协议的路由器行为，因此也称为路由器接口（Router Interface）。

IGMP代理设备上维护着一个组成员关系数据库（Membership Database），将所有下行接口维护的组成员关系记录都存到这个数据库中。组成员关系记录的结构如下：（Multicast-address，Filter-mode，Source-list），每条记录都是各下行接口上具有相同组地址的成员关系记录的合集。

上行接口正是依据这个数据库来执行主机行为——当收到查询报文时根据当前数据库状态响应报告报文，或者当数据库变化时主动发送报告或离开报文；而下行接口则执行路由器行为——参与查询器的选举、发送查询报文并根据报告报文维护组成员关系等。

1.1.7 多实例的IGMP

IGMP依据接口来维护组成员关系，各实例的IGMP根据接口所属的实例来处理协议报文的收发。当路由器收到IGMP报文时，需要区分该报文所属的实例，并在该实例范围内对其进行处理。当某实例内的IGMP需要和其它组播协议交互信息时，只会通知本实例内的其它组播协议。

1.1.8 协议规范

与IGMP相关的协议规范有：

l RFC 1112：Host Extensions for IP Multicasting

l RFC 2236：Internet Group Management Protocol, Version 2

l RFC 3376：Internet Group Management Protocol, Version 3

l RFC 4605：Internet Group Management Protocol (IGMP) / Multicast Listener Discovery (MLD)-Based Multicast Forwarding ("IGMP/MLD Proxying")


1.2 IGMP配置任务简介

表1-1 IGMP配置任务简介

配置任务 |  | 说明 | 详细配置
配置IGMP基本功能 | 使能IGMP | 必选 | 1.3.2
 | 配置IGMP版本 | 可选 | 1.3.3
 | 配置静态加入 | 可选 | 1.3.4
 | 配置组播组过滤器 | 可选 | 1.3.5
 | 配置接口加入的组播组最大数量 | 可选 | 1.3.6
调整IGMP性能 | 配置IGMP报文选项 | 可选 | 1.4.2
 | 配置IGMP查询和响应 | 可选 | 1.4.3
 | 配置IGMP快速离开 | 可选 | 1.4.4
 | 配置IGMP主机跟踪功能 | 可选 | 1.4.5
配置IGMP SSM Mapping | 使能IGMP SSM Mapping | 可选 | 1.5.2
 | 配置IGMP SSM Mapping规则 | 可选 | 1.5.3
配置IGMP Proxying | 使能IGMP Proxying | 可选 | 1.6.2
 | 配置下行接口的组播转发能力 | 可选 | 1.6.3

l IGMP视图下的配置具有全局性，接口视图下的配置仅对所在接口有效。

l 若没有在接口视图下进行配置，则该接口继承IGMP视图下的全局配置；若两个视图都进行了配置，则优先采用该接口视图下所作的配置。


1.3 配置IGMP基本功能

1.3.1 配置准备

在配置IGMP基本功能之前，需完成以下任务：

l 配置任一单播路由协议，实现域内网络层互通

l 配置PIM-DM（或PIM-SM）

在配置IGMP基本功能之前，需准备以下数据：

l IGMP的版本

l 以静态方式加入的组播组和组播源的地址

l 组播组过滤的ACL规则

l 接口加入的组播组最大数量

1.3.2 使能IGMP

在需要建立和维护组播组成员关系的接口上使能IGMP。

1. 使能公网实例中的IGMP

表1-2 使能公网实例中的IGMP

操作 | 命令 | 说明
进入系统视图 | system-view | -
使能IP组播路由 | multicast routing-enable | 必选 缺省情况下，IP组播路由处于关闭状态
进入接口视图 | interface interface-type interface-number | -
使能IGMP | igmp enable | 必选 缺省情况下，IGMP处于关闭状态

2. 使能VPN实例中的IGMP

表1-3 使能VPN实例中的IGMP

操作 | 命令 | 说明
进入系统视图 | system-view | -
创建VPN实例，并进入VPN实例视图 | ip vpn-instance vpn-instance-name | -
配置VPN实例的RD | route-distinguisher route-distinguisher | 必选 缺省情况下，VPN实例没有RD
使能IP组播路由 | multicast routing-enable | 必选 缺省情况下，IP组播路由处于关闭状态
进入接口视图 | interface interface-type interface-number | -
将接口与VPN实例进行关联 | ip binding vpn-instance vpn-instance-name | 必选 缺省情况下，接口只属于公网，未与任何VPN实例关联
使能IGMP | igmp enable | 必选 缺省情况下，IGMP处于关闭状态

l 有关 ip vpn-instance、route-distinguisher 和 ip binding vpn-instance 命令的详细介绍，请参见“三层技术-IP路由命令参考”中的“MCE”。

l 有关 multicast routing-enable 命令的详细介绍，请参见“IP组播命令参考”中的“组播路由与转发”。

1.3.3 配置IGMP版本

由于不同版本IGMP协议的报文结构与种类不同，因此需要为同一网段上的所有路由器配置相同版本的IGMP，否则IGMP将不能正常运行。

1. 全局配置IGMP版本

表1-4 全局配置IGMP版本

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入公网实例或VPN实例IGMP视图 | igmp [ vpn-instance vpn-instance-name ] | -
配置IGMP的版本 | version version-number | 必选 缺省情况下，IGMP的版本为IGMPv2

2. 在接口上配置IGMP版本

表1-5 在接口上配置IGMP版本

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
配置IGMP的版本 | igmp version version-number | 必选 缺省情况下，IGMP的版本为IGMPv2

1.3.4 配置静态加入

在配置了静态加入组播组或组播源组后，接口将作为该组播组的虚拟组成员存在，从而可以接收发往该组的组播数据，以测试组播数据的转发。

表1-6 配置静态加入

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
配置静态加入组播组或组播源组 | igmp static-group group-address [ source source-address ] | 必选 缺省情况下，接口没有以静态方式加入任何组播组或组播源组

l 在运行PIM-SM的设备上配置静态加入时，如果待配接口上使能了PIM-SM，则该接口必须为PIM-SM的DR，否则该接口将不能加入组播组或组播源组；如果待配接口上未使能PIM-SM但使能了IGMP，则该接口必须为IGMP查询器，否则该接口也不能加入组播组或组播源组。有关PIM-SM和DR的介绍，请参见“IP组播配置指导”中的“PIM”。

l 在配置了静态加入后，接口并不会对IGMP查询器发出的查询报文进行响应；当配置静态加入或取消静态加入的配置时，接口也不会主动发送IGMP成员关系报告报文或IGMP离开组报文。也就是说，该接口并没有真正成为该组播组的成员。

1.3.5 配置组播组过滤器

如果不希望接口所在网段上的主机加入某些组播组，可在该接口上配置ACL规则作为过滤器，接口将按照该规则对收到的IGMP成员关系报告报文进行过滤，只为该规则所允许的组播组维护组成员关系。

表1-7 配置组播组过滤器

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
配置组播组过滤器 | igmp group-policy acl-number [ version-number ] | 必选 缺省情况下，接口上没有配置组播组过滤器，即该接口下的主机可以加入任意合法的组播组

1.3.6 配置接口加入的组播组最大数量

通过配置接口加入的组播组最大数量，可以方便用户灵活控制接口所能加入的组播组数量。

表1-8 配置接口加入的组播组最大数量

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
配置接口加入的组播组最大数量 | igmp group-limit limit | 必选 缺省情况下，接口加入的组播组最大数量为2000

本配置只限制接口动态加入的组播组数量，而不限制其静态加入的组播组数量。


1.4 调整IGMP性能

对于本节中的配置任务来说：

l 在IGMP视图下所作的配置对所有接口生效，在接口视图下所作的配置仅对当前接口生效；

l 如果在这两个视图下进行了相同功能或参数的配置，则不论配置先后，接口视图下的配置将被优先采用。

1.4.1 配置准备

在调整IGMP性能之前，需完成以下任务：

l 配置任一单播路由协议，实现域内网络层互通

l 配置IGMP基本功能

在调整IGMP性能之前，需准备以下数据：

l IGMP查询器的启动查询间隔

l IGMP查询器的启动查询次数

l 发送IGMP普遍组查询报文的时间间隔

l IGMP查询器的健壮系数

l IGMP普遍组查询的最大响应时间

l 最后组成员查询间隔

l IGMP其它查询器的存在时间

1.4.2 配置IGMP报文选项

由于IGMP特定组查询报文和IGMP特定源组查询报文的存在，而组播组是千变万化的，设备不可能加入所有的组，因此IGMP需要借助Router-Alert（路由器报警）选项来将送达本地、但没有加入的组播报文送往上层协议进行处理。有关Router-Alert选项的详细介绍，请参考RFC 2113。

对于IP头中是否携带Router-Alert选项的IGMP报文，设备会做出不同的处理：

l 出于兼容性考虑，缺省情况下设备不对Router-Alert选项进行检查，即处理所有收到的IGMP报文。此时，IGMP报文中无论是否携带有Router-Alert选项，设备都会将其送给上层协议进行处理。

l 为了提高设备性能、减少不必要的开支，同时出于协议安全性的考虑，可以配置设备丢弃未携带Router-Alert选项的IGMP报文，此时，当设备收到IGMP报文时，会检查该报文的Router-Alert选项，如果没有携带该选项，就丢弃该报文。

1. 全局配置IGMP报文选项

表1-9 全局配置IGMP报文选项

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入公网实例或VPN实例IGMP视图 | igmp [ vpn-instance vpn-instance-name ] | -
配置丢弃未携带Router-Alert选项的IGMP报文 | require-router-alert | 必选 缺省情况下，设备不对Router-Alert选项进行检查
配置在发送的IGMP报文中携带Router-Alert选项 | send-router-alert | 必选 缺省情况下，在发送的IGMP报文中携带Router-Alert选项

2. 在接口上配置IGMP报文选项

表1-10 在接口上配置IGMP报文选项

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
配置丢弃未携带Router-Alert选项的IGMP报文 | igmp require-router-alert | 必选 缺省情况下，设备不对Router-Alert选项进行检查
配置在发送的IGMP报文中携带Router-Alert选项 | igmp send-router-alert | 必选 缺省情况下，在发送的IGMP报文中携带Router-Alert选项

1.4.3 配置IGMP查询和响应

IGMP查询器的健壮系数是为了弥补可能发生的网络丢包而设置的报文重传次数，健壮系数越大，IGMP查询器就越“健壮”，但是组播组超时所需的时间也就越长。

当IGMPv1/v2/v3查询器启动时，会以“IGMP查询器启动查询间隔”为时间间隔发送“IGMP查询器启动查询次数”次IGMP普遍组查询报文。

IGMPv1/v2/v3查询器会周期性地发送IGMP普遍组查询报文，以判断网络上是否有组播组成员，发送间隔即为“发送IGMP普遍组查询报文的时间间隔”。可以根据网络的实际情况来修改周期性发送IGMP普遍组查询报文的时间间隔。

当IGMPv2查询器收到IGMP离开组报文或IGMPv3查询器收到改变组播组与组播源列表关系的IGMP报告报文后，会以“最后组成员查询间隔”为时间间隔发送“最后组成员查询次数”次IGMP特定组查询报文或IGMP特定源组查询报文。最后组成员查询次数在数值上等于IGMP查询器的健壮系数。

在收到IGMP查询报文（包括普遍组查询、特定组查询和特定源组查询）后，主机会为其所加入的每个组播组都启动一个延迟定时器，其值在0到最大响应时间（该时间值从IGMP查询报文的最大响应时间字段获得）中随机选定，当定时器的值减为0时，主机就会向该定时器对应的组播组发送IGMP成员关系报告报文。

合理配置IGMP查询的最大响应时间，既可以使主机对IGMP查询报文做出快速响应，又可以减少由于定时器同时超时，造成大量主机同时发送报告报文而引起的网络拥塞：

l 对于IGMP普遍组查询报文来说，通过配置IGMP普遍组查询的最大响应时间来填充其最大响应时间字段；

l 对于IGMP特定组查询报文和IGMP特定源组查询报文来说，所配置的最后组成员查询间隔将被填充到其最大响应时间字段。也就是说，IGMP特定组查询和IGMP特定源组查询的最大响应时间在数值上等于最后组成员查询间隔。

当同一网段上有多台组播路由器时，由IGMP查询器负责发送IGMP查询报文。如果非查询器在“其它查询器存在时间”超时前没有收到来自查询器的IGMP查询报文，就会认为原有查询器失效，从而触发新的查询器选举过程；否则，非查询器将重置“其它查询器存在时间定时器”。

1. 全局配置IGMP查询和响应

表1-11 全局配置IGMP查询和响应

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入公网实例或VPN实例IGMP视图 | igmp [ vpn-instance vpn-instance-name ] | -
配置IGMP查询器的健壮系数 | robust-count robust-value | 必选 缺省情况下，IGMP查询器的健壮系数为2
配置IGMP查询器的启动查询间隔 | startup-query-interval interval | 必选 缺省情况下，IGMP查询器的启动查询间隔为发送IGMP普遍组查询报文时间间隔的1/4
配置IGMP查询器的启动查询次数 | startup-query-count value | 必选 缺省情况下，IGMP查询器的启动查询次数等于IGMP查询器的健壮系数
配置发送IGMP普遍组查询报文的时间间隔 | timer query interval | 必选 缺省情况下，发送IGMP普遍组查询报文的时间间隔为60秒
配置IGMP普遍组查询的最大响应时间 | max-response-time interval | 必选 缺省情况下，IGMP普遍组查询的最大响应时间为10秒
配置最后组成员查询间隔 | last-member-query-interval interval | 必选 缺省情况下，最后组成员查询间隔为1秒
配置IGMP其它查询器的存在时间 | timer other-querier-present interval | 必选 缺省情况下，IGMP其它查询器的存在时间＝发送IGMP普遍组查询报文的时间间隔×IGMP查询器的健壮系数＋IGMP普遍组查询的最大响应时间÷2

2. 在接口上配置IGMP查询和响应

表1-12 在接口上配置IGMP查询和响应

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
配置IGMP查询器的健壮系数 | igmp robust-count robust-value | 必选 缺省情况下，IGMP查询器的健壮系数为2
配置IGMP查询器的启动查询间隔 | igmp startup-query-interval interval | 必选 缺省情况下，IGMP查询器的启动查询间隔为发送IGMP普遍组查询报文时间间隔的1/4
配置IGMP查询器的启动查询次数 | igmp startup-query-count value | 必选 缺省情况下，IGMP查询器的启动查询次数等于IGMP查询器的健壮系数
配置发送IGMP普遍组查询报文的时间间隔 | igmp timer query interval | 必选 缺省情况下，发送IGMP普遍组查询报文的时间间隔为60秒
配置IGMP普遍组查询的最大响应时间 | igmp max-response-time interval | 必选 缺省情况下，IGMP普遍组查询的最大响应时间为10秒
配置最后组成员查询间隔 | igmp last-member-query-interval interval | 必选 缺省情况下，最后组成员查询间隔为1秒
配置IGMP其它查询器的存在时间 | igmp timer other-querier-present interval | 必选 缺省情况下，IGMP其它查询器的存在时间＝发送IGMP普遍组查询报文的时间间隔×IGMP查询器的健壮系数＋IGMP普遍组查询的最大响应时间÷2

l 应确保IGMP其它查询器的存在时间大于发送IGMP普遍组查询报文的时间间隔，否则有可能导致网络内的IGMP查询器反复变化。

l 应确保发送IGMP普遍组查询报文的时间间隔大于IGMP普遍组查询的最大响应时间，否则有可能造成对组播组成员的误删。

l 对IGMP普遍组查询的最大响应时间、最后组成员查询间隔以及IGMP其它查询器的存在时间所做的配置，只有当设备运行在IGMPv2或IGMPv3时才有效。

1.4.4 配置IGMP快速离开

在某些应用（如ADSL拨号上网）中，IGMP查询器的一个端口唯一对应着一台接收者主机，当主机在多个组播组间频繁切换（如进行电视选台）时，为了快速响应主机的离开组报文，可以在IGMP查询器上开启IGMP快速离开功能。

在开启了IGMP快速离开功能之后，当IGMP查询器收到来自主机的离开组报文时，不再发送IGMP特定组查询报文或IGMP特定源组查询报文，而是直接向上游发送离开通告，这样一方面减小了响应延迟，另一方面也节省了网络带宽。

1. 全局配置IGMP快速离开

表1-13 全局配置IGMP快速离开

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入公网实例或VPN实例IGMP视图 | igmp [ vpn-instance vpn-instance-name ] | -
配置组播组成员快速离开 | fast-leave [ group-policy acl-number ] | 必选 缺省情况下，组播组成员快速离开功能是关闭的

2. 在接口上配置IGMP快速离开

表1-14 在接口上配置IGMP快速离开

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
配置组播组成员快速离开 | igmp fast-leave [ group-policy acl-number ] | 必选 缺省情况下，组播组成员快速离开功能是关闭的

l 只有当设备运行在IGMPv2或IGMPv3时，配置IGMP快速离开功能才有效。

l IGMP快速离开配置只对除VLAN接口以外的其它三层接口生效，如三层以太网端口、三层聚合接口及Tunnel接口。

1.4.5 配置IGMP主机跟踪功能

通过使能IGMP主机跟踪功能，可以使设备能够记录正在接收组播数据的成员主机信息（包括主机的IP地址、运行时间和超时时间等），以便于网络管理员对这些主机进行监控和管理。

1. 全局配置IGMP主机跟踪功能

表1-15 全局配置IGMP主机跟踪功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入公网实例或VPN实例IGMP视图 | igmp [ vpn-instance vpn-instance-name ] | -
全局使能IGMP主机跟踪功能 | host-tracking | 必选 缺省情况下，IGMP主机跟踪功能处于关闭状态

2. 在接口上配置IGMP主机跟踪功能

表1-16 在接口上配置IGMP主机跟踪功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
在接口上使能IGMP主机跟踪功能 | igmp host-tracking | 必选 缺省情况下，IGMP主机跟踪功能处于关闭状态


1.5 配置IGMP SSM Mapping

在SSM网络中，由于各种可能的限制，某些接收者主机只能运行IGMPv1或IGMPv2。为了向这些仅支持IGMPv1或IGMPv2的接收者主机提供SSM服务，可以在路由器上配置IGMP SSM Mapping功能。

1.5.1 配置准备

在配置IGMP SSM Mapping之前，需完成以下任务：

l 配置任一单播路由协议，实现域内网络层互通

l 配置IGMP基本功能

1.5.2 使能IGMP SSM Mapping

表1-17 使能IGMP SSM Mapping

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
使能IGMP SSM Mapping功能 | igmp ssm-mapping enable | 必选 缺省情况下，接口上的IGMP SSM Mapping功能处于关闭状态

为保证本网段内运行任意版本IGMP的接收者主机都能得到SSM服务，建议在处于该网段的接口上运行IGMPv3。

1.5.3 配置IGMP SSM Mapping规则

通过多次配置可以实现同一组播组到多个组播源的映射。

表1-18 配置IGMP SSM Mapping规则

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入公网实例或VPN实例的IGMP视图 | igmp [ vpn-instance vpn-instance-name ] | -
配置IGMP SSM Mapping规则 | ssm-mapping group-address { mask | mask-length } source-address | 必选 缺省情况下，未配置IGMP SSM Mapping规则

若VLAN接口上运行的是IGMPv3，则在使用 igmp-snooping host-join 命令配置模拟主机加入时即便不指定组播源，模拟主机也仍将发送IGMPv3的报告报文，这种情况下不会依据IGMP SSM Mapping规则创建相应的组播组。有关 igmp-snooping host-join 命令的详细介绍，请参见“IP组播命令参考”中的“IGMP Snooping”。


1.6 配置IGMP Proxying

1.6.1 配置准备

在配置IGMP Proxying之前，需完成以下任务：

l 配置任一单播路由协议，实现域内网络层互通

l 使能IP组播路由

1.6.2 使能IGMP Proxying

在设备朝向组播分发树树根方向的接口上使能了IGMP代理功能之后，该设备就成为了IGMP代理设备。

表1-19 使能IGMP Proxying

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
使能IGMP代理功能 | igmp proxying enable | 必选 缺省情况下，接口上的IGMP代理功能处于关闭状态

l 一台设备上只允许有一个接口使能IGMP代理功能（多实例情况下，每个实例中只允许有一个接口使能IGMP代理功能）。

l 在进行IGMP的相关配置时，在已使能IGMP代理功能的接口上不允许再使能IGMP，且只有 igmp require-router-alert、igmp send-router-alert 和 igmp version 命令可在该接口上生效。

l 在已使能IGMP代理功能的设备上不允许再使能其它组播路由协议（如不能在接口上使能PIM-DM或PIM-SM，但在PIM视图下配置的 source-lifetime、source-policy 和 ssm-policy 命令仍会生效），反之亦然；同时，由于IGMPv1的查询器要由PIM协议选举出的DR来充当，因此若IGMP代理设备的下行接口运行的是IGMPv1，那么该接口将无法成为DR，从而也就无法充当IGMP查询器。

l 若某VLAN内已使能了IGMP Snooping，则该VLAN对应的VLAN接口上不能再使能IGMP代理功能，反之亦然。

1.6.3 配置下行接口的组播转发能力

通常，组播数据只能被查询器转发，非查询器不具备组播转发能力，这样可以避免组播数据被重复转发。对于IGMP代理设备也同样如此，只有当其下行接口是查询器时，组播数据才能通过该接口转发给下游主机。

但在某些情况下，IGMP代理设备的下行接口不能在查询器竞选中获胜，此时应使能该下行接口在非查询器状态下的组播转发能力。

表1-20 配置下行接口的组播转发能力

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
使能下行接口在非查询器状态下的组播转发能力 | igmp proxying forwarding | 必选 缺省情况下，当IGMP代理设备的下行接口处于非查询器状态时，不转发组播数据

在共享网段内存在多台IGMP代理设备的情况下，当其中一台IGMP代理设备的下行接口已竞选为查询器时，不应再在其它IGMP代理设备的下行接口上进行此配置，否则该网段内将收到多份重复的组播数据流。


1.7 IGMP显示和维护

在完成上述配置后，在任意视图下执行 display 命令可以显示配置后IGMP的运行情况，通过查看显示信息验证配置的效果。

在用户视图下执行 reset 命令可以清除IGMP的统计信息。

表1-21 IGMP显示和维护

操作 | 命令
查看IGMP组的信息 | display igmp [ all-instance | vpn-instance vpn-instance-name ] group [ group-address | interface interface-type interface-number ] [ static | verbose ] [ | { begin | exclude | include } regular-expression ]
查看IGMP组的二层端口信息 | display igmp group port-info [ vlan vlan-id ] [ slot slot-number ] [ verbose ] [ | { begin | exclude | include } regular-expression ]
查看接口上IGMP跟踪的主机信息 | display igmp host interface interface-type interface-number group group-address [ source source-address ] [ | { begin | exclude | include } regular-expression ]
查看二层端口上IGMP跟踪的主机信息 | display igmp host port-info vlan vlan-id group group-address [ source source-address ] [ vlan vlan-id ] [ slot slot-number ] [ | { begin | exclude | include } regular-expression ]
查看接口上IGMP配置和运行信息 | display igmp [ all-instance | vpn-instance vpn-instance-name ] interface [ interface-type interface-number ] [ verbose ] [ | { begin | exclude | include } regular-expression ]
查看IGMP代理组的信息 | display igmp [ all-instance | vpn-instance vpn-instance-name ] proxying group [ group-address ] [ verbose ] [ | { begin | exclude | include } regular-expression ]
查看IGMP路由表的信息 | display igmp [ all-instance | vpn-instance vpn-instance-name ] routing-table [ source-address [ mask { mask | mask-length } ] | group-address [ mask { mask | mask-length } ] | flags { act | suc } ] * [ | { begin | exclude | include } regular-expression ]
查看IGMP SSM Mapping规则 | display igmp [ all-instance | vpn-instance vpn-instance-name ] ssm-mapping group-address [ | { begin | exclude | include } regular-expression ]
查看依据IGMP SSM Mapping规则创建的组播组信息 | display igmp [ all-instance | vpn-instance vpn-instance-name ] ssm-mapping group [ group-address | interface interface-type interface-number ] [ verbose ] [ | { begin | exclude | include } regular-expression ]
查看接口上依据IGMP SSM Mapping规则加入的主机信息 | display igmp ssm-mapping host interface interface-type interface-number group group-address source source-address [ | { begin | exclude | include } regular-expression ]
清除IGMP组的动态加入记录 | reset igmp [ all-instance | vpn-instance vpn-instance-name ] group { all | interface interface-type interface-number { all | group-address [ mask { mask | mask-length } ] [ source-address [ mask { mask | mask-length } ] ] } }
清除IGMP组二层端口的动态加入记录 | reset igmp group port-info { all | group-address } [ vlan vlan-id ]
清除依据IGMP SSM Mapping规则创建的组播组信息 | reset igmp [ all-instance | vpn-instance vpn-instance-name ] ssm-mapping group { all | interface interface-type interface-number { all | group-address [ mask { mask | mask-length } ] [ source-address [ mask { mask | mask-length } ] ] } }

l reset igmp group 和 reset igmp group port-info 命令只能清除动态加入记录，而无法清除静态加入记录。

l display igmp host interface 只能查看除Vlan接口外的三层接口上IGMP跟踪的主机信息。

l display igmp ssm-mapping host interface 只能查看除Vlan接口外的三层接口上依据IGMP SSM Mapping规则加入的主机信息。

执行 reset igmp group 命令可能导致接收者中断组播信息的接收。


1.8 IGMP典型配置举例

1.8.1 IGMP基本功能配置举例

1. 组网需求

l 接收者通过组播方式接收视频点播信息，不同组织的接收者组成末梢网络N1和N2，Host A与Host C分别为N1和N2中的组播信息接收者。

l PIM网络中的Switch A连接N1，Switch B与Switch C共同连接N2。

l Switch A通过Vlan-interface100连接N1，通过Vlan-interface101连接PIM网络中的其它设备。

l Switch B与Switch C分别通过各自的Vlan-interface200连接N2，并分别通过Vlan-interface201和Vlan-interface202连接PIM网络中的其它设备。

l Switch A与N1之间运行IGMPv2；Switch B、Switch C与N2之间也分别运行IGMPv2，且由于Switch B的接口IP地址较小，因此在N2中通常由其来充当IGMP查询器。

l 通过配置，使N1中的主机只能加入组播组224.1.1.1，而对N2中的主机则无任何限制。

2. 组网图

图1-5 IGMP基本功能配置组网图

3. 配置步骤

(1) 配置IP地址和单播路由协议

请按照图1-5 配置各接口的IP地址和子网掩码，具体配置过程略。

配置PIM网络内各交换机之间采用OSPF协议进行互连，确保PIM网络内部在网络层互通，并且各交换机之间能够借助单播路由协议实现动态路由更新，具体配置过程略。

(2) 使能IP组播路由，并使能PIM-DM和IGMP

# 在Switch A上使能IP组播路由，在各接口上使能PIM-DM，并在主机侧接口Vlan-interface100上使能IGMP。

<SwitchA> system-view

[SwitchA] multicast routing-enable

[SwitchA] interface vlan-interface 100

[SwitchA-Vlan-interface100] igmp enable

[SwitchA-Vlan-interface100] pim dm

[SwitchA-Vlan-interface100] quit

[SwitchA] interface vlan-interface 101

[SwitchA-Vlan-interface101] pim dm

[SwitchA-Vlan-interface101] quit

# 在Switch B上使能IP组播路由，在各接口上使能PIM-DM，并在主机侧接口Vlan-interface200上使能IGMP。

<SwitchB> system-view

[SwitchB] multicast routing-enable

[SwitchB] interface vlan-interface 200

[SwitchB-Vlan-interface200] igmp enable

[SwitchB-Vlan-interface200] pim dm

[SwitchB-Vlan-interface200] quit

[SwitchB] interface vlan-interface 201

[SwitchB-Vlan-interface201] pim dm

[SwitchB-Vlan-interface201] quit

# 在Switch C上使能IP组播路由，在各接口上使能PIM-DM，并在主机侧接口Vlan-interface200上使能IGMP。

<SwitchC> system-view

[SwitchC] multicast routing-enable

[SwitchC] interface vlan-interface 200

[SwitchC-Vlan-interface200] igmp enable

[SwitchC-Vlan-interface200] pim dm

[SwitchC-Vlan-interface200] quit

[SwitchC] interface vlan-interface 202

[SwitchC-Vlan-interface202] pim dm

[SwitchC-Vlan-interface202] quit

(3) 配置组播组过滤器

# 在Switch A上限定接口Vlan-interface100下的主机只能加入组播组224.1.1.1。

[SwitchA] acl number 2001

[SwitchA-acl-basic-2001] rule permit source 224.1.1.1 0

[SwitchA-acl-basic-2001] quit

[SwitchA] interface vlan-interface 100

[SwitchA-Vlan-interface100] igmp group-policy 2001

[SwitchA-Vlan-interface100] quit

(4) 检验配置效果

通过使用 display igmp interface 命令可以查看各交换机接口上IGMP的配置和运行情况。例如：

# 查看Switch B在Vlan-interface200上的IGMP信息。

[SwitchB] display igmp interface vlan-interface 200

Vlan-interface200(10.110.2.1):

IGMP is enabled

Current IGMP version is 2

Value of query interval for IGMP(in seconds): 60

Value of other querier present interval for IGMP(in seconds): 125

Value of maximum query response time for IGMP(in seconds): 10

Querier for IGMP: 10.110.2.1 (this router)

Total 1 IGMP Group reported

1.8.2 IGMP SSM Mapping功能配置举例

1. 组网需求

l PIM-SM网络中同时采用ASM和SSM方式提供组播服务，将Switch D的接口Vlan-interface104配置为C-BSR和C-RP，SSM组播组的范围为232.1.1.0/24。

l Switch D的接口Vlan-interface400上运行IGMPv3，接收者主机上运行IGMPv2，且不能升级至IGMPv3，因此该主机在加入组播组时无法指定组播源。

l Source 1、Source 2和Source 3都向SSM组范围内的组播组发送组播数据，要求通过在Switch D上配置IGMP SSM Mapping功能，使接收者主机只能接收来自Source 1和Source 3的组播数据。

2. 组网图

图1-6 IGMP SSM Mapping功能配置组网图

设备 | 接口 | IP地址 | 设备 | 接口 | IP地址
Source 1 | - | 133.133.1.1/24 | Source 3 | - | 133.133.3.1/24
Source 2 | - | 133.133.2.1/24 | Receiver | - | 133.133.4.1/24
Switch A | Vlan-int100 | 133.133.1.2/24 | Switch C | Vlan-int300 | 133.133.3.2/24
 | Vlan-int101 | 192.168.1.1/24 |  | Vlan-int103 | 192.168.3.1/24
 | Vlan-int104 | 192.168.4.2/24 |  | Vlan-int102 | 192.168.2.2/24
Switch B | Vlan-int200 | 133.133.2.2/24 | Switch D | Vlan-int400 | 133.133.4.2/24
 | Vlan-int101 | 192.168.1.2/24 |  | Vlan-int103 | 192.168.3.2/24
 | Vlan-int102 | 192.168.2.1/24 |  | Vlan-int104 | 192.168.4.1/24

3. 配置步骤

(1) 配置IP地址和单播路由协议

请按照 图1-6 配置各接口的IP地址和子网掩码，具体配置过程略。

配置PIM-SM域内的各交换机之间采用OSPF协议进行互连，确保PIM-SM域内部在网络层互通，并且各交换机之间能够借助单播路由协议实现动态路由更新，具体配置过程略。

(2) 使能IP组播路由，并使能PIM-SM、IGMP和IGMP SSM Mapping功能

# 在Switch D上使能IP组播路由，在各接口上使能PIM-SM，并在主机侧接口Vlan-interface400上使能IGMP和IGMP SSM Mapping功能，配置IGMP版本为3。

<SwitchD> system-view

[SwitchD] multicast routing-enable

[SwitchD] interface vlan-interface 400

[SwitchD-Vlan-interface400] igmp enable

[SwitchD-Vlan-interface400] igmp version 3

[SwitchD-Vlan-interface400] igmp ssm-mapping enable

[SwitchD-Vlan-interface400] pim sm

[SwitchD-Vlan-interface400] quit

[SwitchD] interface vlan-interface 103

[SwitchD-Vlan-interface103] pim sm

[SwitchD-Vlan-interface103] quit

[SwitchD] interface vlan-interface 104

[SwitchD-Vlan-interface104] pim sm

[SwitchD-Vlan-interface104] quit

# 在Switch A上使能IP组播路由，并在各接口上使能PIM-SM。

<SwitchA> system-view

[SwitchA] multicast routing-enable

[SwitchA] interface vlan-interface 100

[SwitchA-Vlan-interface100] pim sm

[SwitchA-Vlan-interface100] quit

[SwitchA] interface vlan-interface 101

[SwitchA-Vlan-interface101] pim sm

[SwitchA-Vlan-interface101] quit

[SwitchA] interface vlan-interface 104

[SwitchA-Vlan-interface104] pim sm

[SwitchA-Vlan-interface104] quit

Switch B和Switch C的配置与Switch A相似，配置过程略。

(3) 配置C-BSR和C-RP

# 在Switch D上配置C-BSR和C-RP的位置。

[SwitchD] pim

[SwitchD-pim] c-bsr vlan-interface 104

[SwitchD-pim] c-rp vlan-interface 104

[SwitchD-pim] quit

(4) 配置SSM组播组的地址范围

# 在Switch D上配置SSM组播组地址范围为232.1.1.0/24。

[SwitchD] acl number 2000

[SwitchD-acl-basic-2000] rule permit source 232.1.1.0 0.0.0.255

[SwitchD-acl-basic-2000] quit

[SwitchD] pim

[SwitchD-pim] ssm-policy 2000

[SwitchD-pim] quit

Switch A、Switch B和Switch C的配置与Switch D相似，配置过程略。

(5) 配置IGMP SSM Mapping规则

# 在Switch D上配置IGMP SSM Mapping规则。

[SwitchD] igmp

[SwitchD-igmp] ssm-mapping 232.1.1.0 24 133.133.1.1

[SwitchD-igmp] ssm-mapping 232.1.1.0 24 133.133.3.1

[SwitchD-igmp] quit

(6) 检验配置效果

通过使用 display igmp ssm-mapping 命令可以查看交换机上的IGMP SSM Mapping规则。例如：

# 查看Switch D上组播组232.1.1.1的IGMP SSM Mapping规则。

[SwitchD] display igmp ssm-mapping 232.1.1.1

Vpn-Instance: public net

Group: 232.1.1.1

Source list:

133.133.1.1

133.133.3.1

通过使用 display igmp ssm-mapping group 命令可以查看交换机上依据IGMP SSM Mapping规则创建的组播组信息。例如：

# 查看Switch D上依据IGMP SSM Mapping规则创建的组播组信息。

[SwitchD] display igmp ssm-mapping group

Total 1 IGMP SSM-mapping Group(s).

Interface group report information of VPN-Instance: public net

Vlan-interface400(133.133.4.2):

Total 1 IGMP SSM-mapping Group reported

Group Address Last Reporter Uptime Expires

232.1.1.1 133.133.4.1 00:02:04 off

通过使用 display pim routing-table 命令可以查看交换机的PIM路由表信息。例如：

# 查看Switch D上的PIM路由表信息。

[SwitchD] display pim routing-table

Vpn-instance: public net

Total 0 (*, G) entry; 2 (S, G) entry

(133.133.1.1, 232.1.1.1)

Protocol: pim-ssm, Flag:

UpTime: 00:13:25

Upstream interface: Vlan-interface104

Upstream neighbor: 192.168.4.2

RPF prime neighbor: 192.168.4.2

Downstream interface(s) information:

Total number of downstreams: 1

1: Vlan-interface400

Protocol: igmp, UpTime: 00:13:25, Expires: -

(133.133.3.1, 232.1.1.1)

Protocol: pim-ssm, Flag:

UpTime: 00:13:25

Upstream interface: Vlan-interface103

Upstream neighbor: 192.168.3.1

RPF prime neighbor: 192.168.3.1

Downstream interface(s) information:

Total number of downstreams: 1

1: Vlan-interface400

Protocol: igmp, UpTime: 00:13:25, Expires: -

1.8.3 IGMP Proxying功能配置举例

1. 组网需求

l 核心网络中运行PIM-DM，末梢网络中的接收者Host A和Host C通过组播组224.1.1.1点播视频节目。

l 要求通过在Switch B上配置IGMP Proxying功能，使其在不运行PIM-DM的情况下实现组成员关系的维护和组播数据的正常转发。

2. 组网图

图1-7 IGMP Proxying功能配置组网图

3. 配置步骤

(1) 配置IP地址

请按照 图1-7 配置各接口的IP地址和子网掩码，具体配置过程略。

(2) 使能IP组播路由，并使能PIM-DM、IGMP和IGMP Proxying

# 在Switch A上使能IP组播路由，在接口Vlan-interface101上使能PIM-DM，并在接口Vlan-interface100上使能IGMP。

<SwitchA> system-view

[SwitchA] multicast routing-enable

[SwitchA] interface vlan-interface 101

[SwitchA-Vlan-interface101] pim dm

[SwitchA-Vlan-interface101] quit

[SwitchA] interface vlan-interface 100

[SwitchA-Vlan-interface100] igmp enable

[SwitchA-Vlan-interface100] pim dm

[SwitchA-Vlan-interface100] quit

# 在Switch B上使能IP组播路由，在接口Vlan-interface100上使能IGMP Proxying，并在接口Vlan-interface200上使能IGMP。

<SwitchB> system-view

[SwitchB] multicast routing-enable

[SwitchB] interface vlan-interface 100

[SwitchB-Vlan-interface100] igmp proxying enable

[SwitchB-Vlan-interface100] quit

[SwitchB] interface vlan-interface 200

[SwitchB-Vlan-interface200] igmp enable

[SwitchB-Vlan-interface200] quit

(3) 检验配置效果

通过使用 display igmp interface 命令可以查看各交换机接口上IGMP的配置和运行情况。例如：

# 查看Switch B在Vlan-interface100上IGMP配置和运行的详细信息。

[SwitchB] display igmp interface vlan-interface 100 verbose

Vlan-interface100(192.168.1.2):

IGMP proxy is enabled

Current IGMP version is 2

Multicast routing on this interface: enabled

Require-router-alert: disabled

Version1-querier-present-timer-expiry: 00:00:20

通过使用 display igmp group 命令可以查看IGMP组的信息。例如：

# 查看Switch A上IGMP组的信息。

[SwitchA] display igmp group

Total 1 IGMP Group(s).

Interface group report information of VPN-Instance: public net

Vlan-interface100(192.168.1.1):

Total 1 IGMP Groups reported

Group Address Last Reporter Uptime Expires

224.1.1.1 192.168.1.2 00:02:04 00:01:15

由此可见，主机的IGMP报告通过Switch B的代理接口Vlan-interface100发给Switch A。


1.9 常见配置错误举例

1.9.1 接收者侧路由器上无组成员信息

1. 故障现象

当某主机发送了加入组播组G的报文后，离该主机最近的路由器上却没有组播组G的组成员信息。

2. 故障分析

l 组网、接口连线的正确与否以及接口的协议层是否up将直接影响组播组成员信息的生成；

l 在路由器上必须使能组播路由，在连接主机的接口上必须使能IGMP；

l 如果路由器接口上运行的IGMP版本比主机的低，那么路由器将无法识别主机发来的较高版本的IGMP报告报文；

l 如果在接口上使用命令 igmp group-policy 对加入组播组G进行了限制后，该接口将不再接收未通过过滤的那些要求加入组播组G的报文。

3. 处理过程

(1) 检查组网是否正确，接口间的连线是否正确，以及接口状态是否正常，是否配置了正确的IP地址。通过命令 display igmp interface 查看接口信息。若无接口信息输出，说明接口状态异常，原因通常是接口上配置了 shutdown 命令，或者接口连线不正确，或者接口上没有配置正确的IP地址。

(2) 检查是否使能了组播路由。通过命令 display current-configuration 查看是否配置了命令 multicast routing-enable。若缺少该配置，则需要在系统视图下执行命令 multicast routing-enable 使能IP组播路由，同时也需要在相应接口上使能IGMP。

(3) 检查接口上运行的IGMP版本。通过命令 display igmp interface 来检查接口上运行的IGMP版本是否低于主机所使用的版本。

(4) 检查接口上是否配置了ACL规则来限制主机加入组播组G。通过命令 display current-configuration interface 观察是否配置了 igmp group-policy 命令。如果配置的ACL规则对加入组播组G进行了限制，则需要修改该ACL规则，允许接受组播组G的报告报文。

1.9.2 同一网段各路由器上组成员关系不一致

1. 故障现象

在同一网段的不同IGMP路由器上，各自维护的组成员关系不一致。

2. 故障分析

l 运行IGMP的路由器为每个接口维护多个参数，各参数之间相互影响，非常复杂。如果同一网段路由器的IGMP接口参数配置不一致，必然导致组成员关系的混乱；

l 另外，IGMP目前有3个版本，版本不同的IGMP路由器与主机之间虽然可以兼容，但是连接在同一网段的所有路由器必须运行相同版本的IGMP。如果同一网段路由器的IGMP版本不一致，也将导致IGMP组成员关系的混乱。

3. 处理过程

(1) 检查IGMP配置。通过命令 display current-configuration 观察接口上IGMP的配置信息。

(2) 在同一网段的所有路由器上执行命令 display igmp interface 来检查IGMP相关定时器的参数，确保配置一致。

(3) 通过命令 display igmp interface 来检查各路由器上运行的IGMP版本是否一致。


1 PIM配置

l S3600V2-SI系列交换机不支持PIM功能。

l 本文所指的路由器代表运行了路由协议的三层设备。

l PIM功能中所指的“接口”为三层口，包括VLAN接口、三层以太网端口等。三层以太网端口是指被配置为三层模式的以太网端口，有关以太网端口模式切换的操作，请参见“二层技术-以太网交换配置指导”中的“以太网端口配置”。

相关链接

  • 1.1 PIM简介
  • 1.2 配置PIM-DM
  • 1.3 配置PIM-SM
  • 1.4 双向PIM配置任务简介
  • 1.5 配置PIM-SSM
  • 1.6 配置PIM公共特性
  • 1.7 PIM显示和维护
  • 1.8 PIM典型配置举例
  • 1.9 常见配置错误举例
父主题： 07-PIM配置


1.1 PIM简介

PIM是Protocol Independent Multicast（协议无关组播）的简称，表示可以利用单播静态路由或者任意单播路由协议（包括RIP、OSPF、IS-IS、BGP等）所生成的单播路由表为IP组播提供路由。组播路由与所采用的单播路由协议无关，只要能够通过单播路由协议产生相应的组播路由表项即可。PIM借助RPF（Reverse Path Forwarding，逆向路径转发）机制实现对组播报文的转发。当组播报文到达本地设备时，首先对其进行RPF检查：若RPF检查通过，则创建相应的组播路由表项，从而进行组播报文的转发；若RPF检查失败，则丢弃该报文。有关RPF的详细介绍，请参见“IP组播配置指导”中的“组播路由与转发”。

根据实现机制的不同，PIM分为以下几种类型：

l PIM-DM（Protocol Independent Multicast-Dense Mode，协议无关组播—密集模式）

l PIM-SM（Protocol Independent Multicast-Sparse Mode，协议无关组播—稀疏模式）

l BIDIR-PIM（Bidirectional Protocol Independent Multicast，双向协议无关组播，简称双向PIM）

l PIM-SSM（Protocol Independent Multicast Source-Specific Multicast，协议无关组播－指定源组播）

为了描述的方便，本文中把由支持PIM协议的组播路由器所组成的网络简称为“PIM域”。

1.1.1 PIM-DM简介

PIM-DM属于密集模式的组播路由协议，使用“推（Push）模式”传送组播数据，通常适用于组播组成员相对比较密集的小型网络，其基本原理如下：

l PIM-DM假设网络中的每个子网都存在至少一个组播组成员，因此组播数据将被扩散（Flooding）到网络中的所有节点。然后，PIM-DM对没有组播数据转发的分支进行剪枝（Prune），只保留包含接收者的分支。这种“扩散—剪枝”现象周期性地发生，被剪枝的分支也可以周期性地恢复成转发状态。

l 当被剪枝分支的节点上出现了组播组的成员时，为了减少该节点恢复成转发状态所需的时间，PIM-DM使用嫁接（Graft）机制主动恢复其对组播数据的转发。

一般说来，密集模式下数据包的转发路径是有源树（Source Tree，即以组播源为“根”、组播组成员为“枝叶”的一棵转发树）。由于有源树使用的是从组播源到接收者的最短路径，因此也称为最短路径树（Shortest Path Tree，SPT）。

PIM-DM的工作机制可以概括如下：

l 邻居发现

l 构建SPT

l 嫁接

l 断言

1. 邻居发现

在PIM域中，路由器通过周期性地向本网段的所有PIM路由器（224.0.0.13）以组播方式发送PIM Hello报文（以下简称Hello报文），以发现PIM邻居，维护各路由器之间的PIM邻居关系，从而构建和维护SPT。

路由器每个运行了PIM协议的接口都会周期性地发送Hello报文，从而了解与该接口相关的PIM邻居信息。

2. 构建SPT

构建SPT的过程也就是“扩散—剪枝”的过程：

(1) 在PIM-DM域中，组播源S向组播组G发送组播报文时，首先对组播报文进行扩散：路由器对该报文的RPF检查通过后，便创建一个（S，G）表项，并将该报文向网络中的所有下游节点转发。经过扩散，PIM-DM域内的每个路由器上都会创建（S，G）表项。

(2) 然后对那些下游没有接收者的节点进行剪枝：由没有接收者的下游节点向上游节点发剪枝报文（Prune Message），以通知上游节点将相应的接口从其组播转发表项（S，G）所对应的出接口列表中删除，并不再转发该组播组的报文至该节点。

l （S，G）表项包括组播源的地址S、组播组的地址G、出接口列表和入接口等。

l 路由器上收到组播数据的接口称为“上游”，转发组播数据的接口称为“下游”。

剪枝过程最先由叶子路由器发起，如图1-1 所示，没有接收者（Receiver）的路由器（如与Host A直连的路由器）主动发起剪枝，并一直持续到PIM-DM域中只剩下必要的分支，这些分支共同构成了SPT。

图1-1 PIM-DM中构建SPT示意图

“扩散—剪枝”的过程是周期性发生的。各个被剪枝的节点提供超时机制，当剪枝超时后便重新开始这一过程。

剪枝在PIM-SM中有着相似的应用。

3. 嫁接

当被剪枝的节点上出现了组播组的成员时，为了减少该节点恢复成转发状态所需的时间，PIM-DM使用嫁接机制主动恢复其对组播数据的转发，过程如下：

(1) 需要恢复接收组播数据的节点向其上游节点发送嫁接报文（Graft Message）以申请重新加入到SPT中；

(2) 当上游节点收到该报文后恢复该下游节点的转发状态，并向其回应一个嫁接应答报文（Graft-Ack Message）以进行确认；

(3) 如果发送嫁接报文的下游节点没有收到来自其上游节点的嫁接应答报文，将重新发送嫁接报文直到被确认为止。

4. 断言

在一个网段内如果存在多台组播路由器，则相同的组播报文可能会被重复发送到该网段。为了避免出现这种情况，就需要通过断言（Assert）机制来选定唯一的组播数据转发者。

图1-2 Assert机制示意图

如图1-2 所示，当Router A和Router B从上游节点收到（S，G）组播报文后，都会向本地网段转发该报文，于是处于下游的节点Router C就会收到两份相同的组播报文，Router A和Router B也会从各自的本地接口收到对方转发来的该组播报文。此时，Router A和Router B会通过本地接口向本网段的所有PIM路由器（224.0.0.13）以组播方式发送断言报文（Assert Message），该报文中携带有以下信息：组播源地址S、组播组地址G、到组播源的单播路由/MBGP路由/组播静态路由的优先级和度量值。通过一定的规则对这些参数进行比较后，Router A和Router B中的获胜者将成为（S，G）组播报文在本网段的转发者，比较规则如下：

(1) 到组播源的优先级较高者获胜；

(2) 如果到组播源的优先级相等，那么到组播源的度量值较小者获胜；

(3) 如果到组播源的度量值也相等，则本地接口IP地址较大者获胜。

1.1.2 PIM-SM简介

PIM-DM使用以“扩散—剪枝”方式构建的SPT来传送组播数据。尽管SPT的路径最短，但是其建立的过程效率较低，并不适合大中型网络。

PIM-SM属于稀疏模式的组播路由协议，使用“拉（Pull）模式”传送组播数据，通常适用于组播组成员分布相对分散、范围较广的大中型网络，其基本原理如下：

l PIM-SM假设所有主机都不需要接收组播数据，只向明确提出需要组播数据的主机转发。PIM-SM实现组播转发的核心任务就是构造并维护RPT（Rendezvous Point Tree，共享树），RPT选择PIM域中某台路由器作为公用的根节点RP（Rendezvous Point，汇集点），组播数据通过RP沿着RPT转发给接收者；

l 连接接收者的路由器向某组播组对应的RP发送加入报文（Join Message），该报文被逐跳送达RP，所经过的路径就形成了RPT的分支；

l 组播源如果要向某组播组发送组播数据，首先由组播源侧DR（Designated Router，指定路由器）负责向RP进行注册，把注册报文（Register Message）通过单播方式发送给RP，该报文到达RP后触发建立SPT。之后组播源把组播数据沿着SPT发向RP，当组播数据到达RP后，被复制并沿着RPT发送给接收者。

复制仅发生在分发树的分支处，这个过程能够自动重复直到数据包最终到达接收者。

PIM-SM的工作机制可以概括如下：

l 邻居发现

l DR选举

l RP发现

l 构建RPT

l 组播源注册

l SPT切换

l 断言

1. 邻居发现

PIM-SM使用与PIM-DM类似的邻居发现机制，具体请参见“1.1.1 1. 邻居发现”一节。

2. DR选举

借助Hello报文还可以为共享网络（如Ethernet）选举DR，DR将作为该共享网络中组播数据的唯一转发者。

无论是与组播源相连的网络，还是与接收者相连的网络，都需要选举DR。接收者侧的DR负责向RP发送加入报文；组播源侧的DR负责向RP发送注册报文。

l 各路由器之间通过比较Hello报文中所携带的优先级和IP地址，可以为多路由器网段选举DR。选举出的DR对于PIM-SM有实际的意义；而对于PIM-DM来说，其本身其实并不需要DR，但如果PIM-DM域中的共享网络上运行了IGMPv1，则需要选举出DR来充当共享网络上的IGMPv1查询器。

l 在充当接收者侧DR的设备上必须使能IGMP，否则连接在该DR上的接收者将不能通过该DR加入组播组。

有关IGMP的介绍，请参见“IP组播配置指导”中的“IGMP”。

图1-3 DR选举示意图

如图1-3 所示，DR的选举过程如下：

(1) 共享网络上的各路由器相互之间发送Hello报文（携带有竞选DR优先级的参数），拥有最高优先级的路由器将成为DR；

(2) 如果优先级相同，或者网络中至少有一台路由器不支持在Hello报文中携带竞选DR优先级的参数，则根据各路由器的IP地址大小来竞选DR，IP地址最大的路由器将成为DR。

当DR出现故障时，其余路由器在超时后仍没有收到来自DR的Hello报文，则会触发新的DR选举过程。

3. RP发现

RP是PIM-SM域中的核心设备。在结构简单的小型网络中，组播信息量少，整个网络仅依靠一个RP进行组播信息的转发即可，此时可以在PIM-SM域中的各路由器上静态指定RP的位置；但是在更多的情况下，PIM-SM域的规模都很大，通过RP转发的组播信息量巨大。为了缓解RP的负担并优化RPT的拓扑结构，可以在PIM-SM域中配置多个C-RP（Candidate-RP，候选RP），通过自举机制来动态选举RP，使不同的RP服务于不同的组播组，此时需要配置BSR（BootStrap Router，自举路由器）。BSR是PIM-SM域的管理核心，一个PIM-SM域内只能有一个BSR，但可以配置多个C-BSR（Candidate-BSR，候选BSR）。这样，一旦BSR发生故障，其余C-BSR能够通过自动选举产生新的BSR，从而确保业务免受中断。

l 一个RP可以同时服务于多个组播组，但一个组播组只能唯一对应一个RP。

l 一台设备可以同时充当C-RP和C-BSR。

如图1-4 所示，BSR负责收集网络中由C-RP发来的宣告报文（Advertisement Message），该报文中携带有C-RP的地址和优先级以及其服务的组范围，BSR将这些信息汇总为RP-Set（RP集，即组播组与RP的映射关系数据库），封装在自举报文（Bootstrap Message，BSM）中并发布到整个PIM-SM域。

图1-4 RP与BSR信息交互示意图

网络中的各路由器将依据RP-Set提供的信息，使用相同的规则从众多C-RP中为特定组播组选择其对应的RP，具体规则如下：

(1) 首先比较C-RP的优先级，优先级较高者获胜。

(2) 若优先级相同，则使用哈希（Hash）函数计算哈希值，该值较大者获胜。

(3) 若优先级和哈希值都相同，则C-RP地址较大者获胜。

哈希函数的表达式为：Value (G, M, Ci) = (1103515245 * ( (1103515245 * (G & M) + 12345) XOR Ci) + 12345) mod 231，其中各符号的含义如表1-1 所示。

表1-1 哈希函数中各符号含义

符号 | 含义
Value | 哈希值
G | IP组播组的地址
M | 哈希掩码长度（Hash Mask Length）
Ci | C-RP的IP地址
& | 逻辑运算符，表示与运算
XOR | 逻辑运算符，表示异或运算
mod | 算术运算符，表示整除取余

4. 构建RPT

图1-5 PIM-SM中构建RPT示意图

如图1-5 所示，RPT的构建过程如下：

(1) 当接收者加入一个组播组G时，先通过IGMP报文通知与其直连的DR；

(2) DR掌握了组播组G的接收者的信息后，向该组所对应的RP方向逐跳发送加入报文；

(3) 从DR到RP所经过的路由器就形成了RPT的分支，这些路由器都在其转发表中生成了（*，G）表项，这里的“*”表示来自任意组播源。RPT以RP为根，以DR为叶子。

当发往组播组G的组播数据流经RP时，数据就会沿着已建立好的RPT到达DR，进而到达接收者。

当某接收者对组播组G的信息不再感兴趣时，与其直连的DR会逆着RPT向该组的RP方向逐跳发送剪枝报文；上游节点收到该报文后在其出接口列表中删除与下游节点相连的接口，并检查自己是否拥有该组播组的接收者，如果没有则继续向其上游转发该剪枝报文。

5. 组播源注册

组播源注册的目的是向RP通知组播源的存在。

图1-6 组播源注册示意图

如图1-6 所示，组播源向RP注册的过程如下：

(1) 当组播源S向组播组G发送了一个组播报文时，与组播源直连的DR在收到该报文后，就将其封装成注册报文，并通过单播方式发送给相应的RP；

(2) 当RP收到该报文后，一方面解封装注册报文并将封装在其中的组播报文沿着RPT转发给接收者，另一方面向组播源方向逐跳发送（S，G）加入报文。这样，从RP到组播源所经过的路由器就形成了SPT的分支，这些路由器都在其转发表中生成了（S，G）表项。SPT以组播源侧的DR为根，以RP为叶子。

(3) 组播源发出的组播数据沿着已建立好的SPT到达RP，然后由RP把组播数据沿着RPT向接收者进行转发。当RP收到沿着SPT转发来的组播数据后，通过单播方式向与组播源直连的DR发送注册停止报文（Register-Stop Message），组播源注册过程结束。

本节中假设允许RP发起SPT切换，否则组播源侧DR将一直用注册报文封装组播报文，注册过程不会结束，除非RP上（S，G）表项的出接口变为空。

6. SPT切换

在PIM-SM域中，一个组播组唯一对应一个RP和一棵RPT。在SPT切换前，所有发往该组的组播报文都必须先由组播源侧DR封装在注册报文中发往RP，由RP解封装后再沿RPT分发给接收者侧的DR，RP是所有组播数据必经的中转站。这个过程存在以下三个问题：

l 组播源侧的DR和RP必须对组播数据进行繁琐的封装/解封装处理。

l 组播数据的转发路径不一定是从组播源到接收者的最短路径。

l 当组播流量变大时，RP负担增大，容易引发故障。

为了解决上述问题，当组播数据的转发速率超过阈值时，PIM-SM允许由RP或接收者侧的DR发起SPT切换：

(1) RP发起的SPT切换

RP收到第一个组播数据包后，立即向组播源方向发送（S，G）加入报文，在组播源侧DR与RP之间建立起SPT分支，后续的组播报文都直接沿该分支到达RP。

由RP发起的SPT切换的详细过程，请参见“1.1.2 5. 组播源注册”一节。

(2) 接收者侧DR发起的SPT切换

当接收者侧DR收到第一个组播数据包后，立即发起SPT切换，过程如下：

l 首先，接收者侧DR向组播源方向发送（S，G）加入报文，并最终送达组播源侧DR，沿途经过的所有路由器在其转发表中都生成了（S，G）表项，从而建立了SPT分支；

l 随后，当组播数据沿SPT到达RPT与SPT分叉的路由器时，该路由器开始丢弃沿RPT到达的组播数据，同时向RP逐跳发送含RP位的剪枝报文，RP收到该报文后继续向组播源方向发送剪枝报文（假设此时只有这一个接收者），从而完成了SPT切换；

l 最终，组播数据将沿SPT从组播源到达到接收者。

通过SPT切换，PIM-SM能够以比PIM-DM更经济的方式建立SPT。

7. 断言

PIM-SM使用与PIM-DM类似的断言机制，具体请参见“1.1.1 4. 断言”一节。

1.1.3 双向PIM简介

在某些组网应用（譬如多方电视电话会议）中，同时存在多个接收者和多个组播源，在这种情况下，如果使用传统的PIM-DM或PIM-SM按SPT转发组播数据，需在每台路由器上针对每个组播源都创建（S，G）表项，这将占用大量的系统资源。为了解决这个问题，提出了双向PIM的概念。双向PIM由PIM-SM发展而来，它通过建立以RP为中心、分别连接组播源和接收者的双向RPT，使组播数据沿着双向RPT从组播源经由RP转发到接收者。这样，在每台路由器上只需维护（*，G）表项即可，从而节约了系统资源。

双向PIM主要适用于组播源和接收者都比较密集的网络，其工作机制可以概括如下：

l 邻居发现

l RP发现

l DF选举

l 构建双向RPT

1. 邻居发现

双向PIM使用与PIM-SM完全相同的邻居发现机制，具体请参见“1.1.2 1. 邻居发现”一节。

2. RP发现

双向PIM使用与PIM-SM完全相同的RP发现机制，具体请参见“1.1.2 3. RP发现”一节。

PIM-SM的RP必须指定为一个实际存在的IP地址，而双向PIM的RP则可以指定为一个实际不存在的IP地址，简称RPA（Rendezvous Point Address，汇集点地址）。RPA所属网段对应的链路就称为RPL（Rendezvous Point Link，汇集点链路），连接到RPL上的所有接口都可以充当RP，且互为备份。

双向PIM中的RPF接口是指向RP的接口，RPF邻居自然就是到达RP的下一跳地址。

3. DF选举

DF（Designated Forwarder，指定转发者）是双向PIM中的重要角色，组播数据由组播源向RP转发的动力来自于DF，也就是说只有DF才有能力将组播数据向RP方向转发。因此，每个RP在每个网段都需要有其对应的DF，以负责将该网段的组播数据向该RP转发；此外，在有多台组播路由器的网段，DF的唯一性也可以避免相同的组播报文被重复发往RP。

在RPL上不需要选举DF。

图1-7 DF选举示意图

如图1-7 所示，Router B和Router C都可以从Router A收到由组播源向组播组G发送的组播报文，如果它们都向下游节点转发该报文，RP最终将收到两份相同的组播报文。因此，Router B和Router C一旦获得RP的信息，就会为该RP发起DF的选举：Router B和Router C将分别向本网段的所有PIM路由器（224.0.0.13）以组播方式发送DF选举报文（DF Election Message），该报文携带有以下信息：RP的地址、到RP的单播路由/MBGP路由/组播静态路由的优先级和度量值。通过一定规则对这些参数进行比较后，Router B和Router C中的获胜者将成为DF，具体的比较规则如下：

(1) 到RP的优先级较高者获胜；

(2) 如果到RP的优先级相等，那么到RP的度量值较小者获胜；

(3) 如果到RP的度量值也相等，则接口的IP地址较大者获胜。

4. 构建双向RPT

双向RPT由两部分构成：一部分是以RP为根、以直连接收者的路由器为叶子的RPT，简称接收者侧RPT；而另一部分则是以RP为根、以直连组播源的路由器为叶子的RPT，简称组播源侧RPT。这两部分RPT的构建过程不同，下面分别加以介绍。

图1-8 接收者侧RPT构建示意图

接收者侧RPT的构建过程与PIM-SM中RPT的构建过程类似，如图1-8 所示，其构建过程如下：

(1) 当接收者加入一个组播组G时，先通过IGMP报文通知与其直连的路由器；

(2) 该路由器掌握了组播组G的接收者的信息后，向该组所对应的RP方向逐跳发送加入报文；

(3) 从直连接收者的路由器到RP所经过的路由器就形成了接收者侧RPT的分支，这些路由器都在其转发表中生成了（*，G）表项。

当某接收者对组播组G的信息不再感兴趣时，与其直连的路由器会逆着接收者侧RPT向该组的RP方向逐跳发送剪枝报文；上游节点收到该报文后在其出接口列表中删除与下游节点相连的接口，并检查自己是否拥有该组播组的接收者，如果没有则继续向其上游转发该剪枝报文。

图1-9 组播源侧RPT构建示意图

组播源侧RPT的构建过程则相对简单，如图1-9 所示，其构建过程如下：

(1) 组播源发向组播组G的组播数据在途径的每个网段，都被该网段的DF无条件地向RP转发；

(2) 从直连组播源的路由器到RP所经过的路由器就形成了组播源侧RPT的分支，这些路由器都在其转发表中生成了（*，G）表项。

当双向RPT构建完成之后，由组播源发出的组播数据将依次沿着组播源侧RPT和接收者侧RPT，经由RP转发至接收者。

当接收者和组播源位于RP同一侧时，组播源侧RPT与接收者侧RPT有可能在到达RP之前就已汇合。在这种情况下，由该组播源发往该接收者的组播数据将在此汇合点直接被转发给该接收者，而不必经由RP。

1.1.4 管理域机制简介

1. 两种域机制的划分

一般情况下，在一个PIM-SM/双向PIM域内只能有一个BSR，并由该BSR负责在整个PIM-SM/双向PIM域内宣告RP-Set信息，所有组播组的信息都在此BSR管理的网络范围内进行转发，我们称之为非管理域机制。

考虑到管理的精细化，可以将整个PIM-SM/双向PIM域划分为一个Global域（Global-scope Zone）和多个管理域（Admin-scope Zone），一方面可以有效分担单一BSR的管理压力，另一方面可以使用私有组地址为特定区域提供专门的服务。相应地，我们称之为管理域机制。

管理域与组播组相对应，针对不同组播组划分相应的管理域。管理域的边界由ZBR（Zone Border Router，区域边界路由器）构成，每个管理域各维护一个BSR，为特定范围的组播组服务，属于此范围的组播协议报文（如断言报文、BSR自举报文等）无法通过管理域边界。不同管理域所服务的组播组范围可以重叠，该范围内的组播组只在本管理域内有效，相当于私有组地址。而不属于任何管理域服务范围的组播组则一律属于Global域的服务范围，Global域中维护一个BSR，为剩余的所有组播组服务。

2. 管理域与Global域的关系

每个管理域以及Global域都有独立的C-RP和BSR设备，这些设备仅在其所属的域有效，也就是说BSR机制与RP选举在各管理域之间是隔离的；每个管理域都有自己的边界，各管理域所服务组播组范围内的组播信息不能进、出该边界。为了更清晰地理解管理域和Global域之间的关系，可以从以下两个角度进行考虑：

(1) 地域空间角度

管理域是针对特定范围组播组的逻辑管理区域，属于此范围的组播报文只能在本管理域的域内或域外传播，无法跨过管理域的边界。

图1-10 地域空间上管理域与Global域的关系

如图1-10 所示，对于同一地址范围内的组播组而言，各管理域在地域上必须相互独立、相互隔离，即同一路由器不能从属于多个管理域，各管理域所包含的路由器也互不相同。而Global域则包含了PIM-SM/双向PIM域内的所有路由器，不属于任何管理域服务范围的组播报文，可以在整个PIM-SM/双向PIM域范围内传播。

(2) 组地址范围角度

每个管理域为特定的组播组提供服务，这些组播组地址之间通常没有交集，但是也可能存在相互交叉和重叠关系。

图1-11 组地址范围上管理域与Global域的关系

如图1-11 所示，管理域1与管理域2所对应的组地址范围无交集，而管理域3的组地址是管理域1组地址的子集；Global域所对应的组地址范围是除各管理域组地址外的其它所有组地址，即G−G1−G2。也就是说，Global域和所有管理域之间就组地址范围来说是互补关系。

1.1.5 PIM-SSM简介

SSM（Source-Specific Multicast，指定信源组播）模型和ASM（Any-Source Multicast，任意信源组播）模型是两个完全对等的模型。目前，ASM模型包括PIM-DM和PIM-SM两种模式，SSM模型能够借助PIM-SM的部分技术来实现，也称为PIM-SSM。

SSM模型为指定源组播提供了解决方案，通过IGMPv3来维护主机与路由器之间的关系。在实际应用中，通常采用IGMPv3以及PIM-SM的一部分技术来实现SSM模型。由于接收者已经通过其它渠道（如广告咨询等）知道了组播源的具体位置，因此在SSM模型中无需RP，无需构建RPT，无需组播源注册过程，也无需通过MSDP（Multicast Source Discovery Protocol，组播源发现协议）来发现其它PIM域内的组播源。

PIM-SSM的工作机制可以概括如下：

l 邻居发现

l DR选举

l 构建SPT

1. 邻居发现

PIM-SSM使用与PIM-SM完全相同的邻居发现机制，具体请参见“1.1.2 1. 邻居发现”一节。

2. DR选举

PIM-SSM使用与PIM-SM完全相同的DR选举机制，具体请参见 “1.1.2 2. DR选举”一节。

3. 构建SPT

构建为PIM-SM服务的RPT，还是构建为PIM-SSM服务的SPT，关键在于接收者准备加入的组播组是否属于SSM组地址范围（IANA保留的SSM组地址范围为232.0.0.0/8）。

图1-12 PIM-SSM中构建SPT示意图

如图1-12 所示，Host B和Host C为组播信息的接收者（Receiver），由其借助IGMPv3的报告报文向DR报告自己对来自组播源S、发往组播组G的信息感兴趣。收到该报告报文的DR先判断该报文中的组地址是否在SSM组地址范围内：

l 如果在SSM组地址范围内，则构建PIM-SSM，并向组播源S逐跳发送通道（Channel）的订阅报文（Subscribe Message）。沿途所有路由器上都创建（S，G）表项，从而在网络内构建了一棵以组播源S为根、以接收者为叶子的SPT，该SPT就是PIM-SSM中的传输通道；

l 如果不在SSM组地址范围内，则仍旧按照PIM-SM的流程进行后续处理，此时接收者侧DR需要向RP发送（*，G）加入报文，同时组播源侧DR需要进行组播源的注册。

在PIM-SSM中，借助“通道”的概念表示组播组，借助“订阅报文”的概念表示加入报文。

1.1.6 各PIM协议运行关系

在一个PIM网络中，不允许PIM-DM与其它类型的PIM协议（PIM-SM、双向PIM和PIM-SSM）同时运行，但允许同时运行PIM-SM、双向PIM和PIM-SSM。

当网络中同时运行PIM-SM、双向PIM和PIM-SSM时，针对具体的组加入行为运行哪种类型的PIM协议，其判断过程如 图1-13 所示。

图1-13 各PIM协议运行关系示意图

有关IGMP SSM Mapping的详细介绍，请参见“IP组播配置指导”中的“IGMP”。

1.1.7 多实例的PIM

在多实例应用中，组播路由器需要针对不同的实例分别维护PIM邻居表、组播路由表、BSR信息和RP-Set信息，并保持各实例间上述信息的相互独立。

当组播路由器收到组播数据报文时，需要区分出该数据报文所属的实例，并根据该实例对应的组播路由表将其转发，或创建与该实例的PIM相关的组播路由表项。

1.1.8 协议规范

与PIM相关的协议规范有：

l RFC 3973：Protocol Independent Multicast-Dense Mode (PIM-DM): Protocol Specification (Revised)

l RFC 4601：Protocol Independent Multicast-Sparse Mode (PIM-SM): Protocol Specification (Revised)

l RFC 5015：Bidirectional Protocol Independent Multicast (BIDIR-PIM)

l RFC 5059：Bootstrap Router (BSR) Mechanism for Protocol Independent Multicast (PIM)

l RFC 4607：Source-Specific Multicast for IP

l draft-ietf-ssm-overview-05：An Overview of Source-Specific Multicast (SSM)


1.2 配置PIM-DM

1.2.1 PIM-DM配置任务简介

表1-2 PIM-DM配置任务简介

配置任务 | 说明 | 详细配置
使能PIM-DM | 必选 | 1.2.3
使能状态刷新能力 | 可选 | 1.2.4
配置状态刷新参数 | 可选 | 1.2.5
配置PIM-DM定时器 | 可选 | 1.2.6
配置PIM公共特性 | 可选 | 1.6

1.2.2 配置准备

在配置PIM-DM之前，需完成以下任务：

l 配置任一单播路由协议，实现域内网络层互通

在配置PIM-DM之前，需准备以下数据：

l 发送状态刷新报文的时间间隔

l 等待接收新状态刷新报文的最小时间

l 状态刷新报文的TTL值

l 嫁接报文的重传时间

1.2.3 使能PIM-DM

在接口上使能了PIM-DM后，路由器会定期发送Hello报文以发现PIM邻居，并对收到的来自PIM邻居的报文进行处理。在部署PIM-DM域时，建议在其所有非边界接口上均使能PIM-DM。

1. 使能公网实例中的PIM-DM

表1-3 使能公网实例中的PIM-DM

操作 | 命令 | 说明
进入系统视图 | system-view | -
使能IP组播路由 | multicast routing-enable | 必选 缺省情况下，IP组播路由处于关闭状态
进入接口视图 | interface interface-type interface-number | -
使能PIM-DM | pim dm | 必选 缺省情况下，PIM-DM处于关闭状态

2. 使能VPN实例中的PIM-DM

表1-4 使能VPN实例中的PIM-DM

操作 | 命令 | 说明
进入系统视图 | system-view | -
创建VPN实例，并进入VPN实例视图 | ip vpn-instance vpn-instance-name | -
配置VPN实例的RD | route-distinguisher route-distinguisher | 必选 缺省情况下，VPN实例没有RD
使能IP组播路由 | multicast routing-enable | 必选 缺省情况下，IP组播路由处于关闭状态
进入接口视图 | interface interface-type interface-number | -
将接口与VPN实例进行关联 | ip binding vpn-instance vpn-instance-name | 必选 缺省情况下，接口只属于公网，未与任何VPN实例关联
使能PIM-DM | pim dm | 必选 缺省情况下，PIM-DM处于关闭状态

l 在同一台设备的同一个VPN实例中，所有接口上所启用的PIM模式必须相同。

l PIM-DM不能与处于SSM组地址范围内的组播组同时使用。

l 有关 ip vpn-instance、route-distinguisher 和 ip binding vpn-instance 命令的详细介绍，请参见“三层技术-IP路由命令参考”中的“MCE”。

l 有关 multicast routing-enable 命令的详细介绍，请参见“IP组播命令参考”中的“组播路由与转发”。

1.2.4 使能状态刷新能力

为了避免各路由器上被剪枝的接口因为超时而恢复转发，与组播源直连的路由器会周期性地发送（S，G）状态刷新报文，该报文沿着PIM-DM域最初的扩散路径逐跳进行转发，从而刷新沿途所有路由器上的剪枝定时器的状态。只有当一个共享网段内的所有PIM路由器上都使能了状态刷新能力时，该共享网段才具备状态刷新能力。

请在PIM-DM域内的所有路由器上进行如下配置。

表1-5 使能状态刷新能力

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
使能状态刷新能力 | pim state-refresh-capable | 可选 缺省情况下，状态刷新能力处于使能状态

1.2.5 配置状态刷新参数

在与组播源直连的路由器上，会以一定的时间间隔周期性地发送状态刷新报文，可以通过配置来改变这个时间间隔。

路由器可能在短时间内收到多个状态刷新报文，而其中有些报文可能是重复的。为了避免接收这些重复的报文，可以配置接收新状态刷新报文的等待时间：路由器将丢弃在该时间内收到的状态刷新报文；当该时间超时后，路由器将正常接收新的状态刷新报文，并更新自己的PIM-DM状态，同时重置该等待时间。

在收到状态刷新报文时，路由器会将该报文的TTL值减1后转发给其下游，直至该报文的TTL值减为0，当网络规模很小时，状态刷新报文将在网络中循环传递。因此，为了有效控制刷新报文的传递范围，需要根据网络规模大小配置合适的TTL值。

请在PIM-DM域内的所有路由器上进行如下配置。

表1-6 配置状态刷新参数

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入公网实例或VPN实例PIM视图 | pim [ vpn-instance vpn-instance-name ] | -
配置发送状态刷新报文的时间间隔 | state-refresh-interval interval | 可选 缺省情况下，发送状态刷新报文的时间间隔为60秒
配置接收新状态刷新报文的等待时间 | state-refresh-rate-limit interval | 可选 缺省情况下，接收新状态刷新报文的等待时间为30秒
配置状态刷新报文的TTL值 | state-refresh-ttl ttl-value | 可选 缺省情况下，状态刷新报文的TTL值为255

1.2.6 配置PIM-DM定时器

嫁接报文是PIM-DM中唯一使用确认机制的报文。在PIM-DM域中，下游路由器发出嫁接报文后，如果在指定时间内没有收到来自其上游路由器的嫁接应答报文，则会重发嫁接报文，直到被确认。

表1-7 配置PIM-DM定时器

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
配置嫁接报文的重传时间 | pim timer graft-retry interval | 可选 缺省情况下，嫁接报文的重传时间为3秒

有关PIM-DM其它定时器的相关配置，请参见“1.6.7 配置PIM公共定时器”。


1.3 配置PIM-SM

1.3.1 PIM-SM配置任务简介

表1-8 PIM-SM配置任务简介

配置任务 |  | 说明 | 详细配置
使能PIM-SM |  | 必选 | 1.3.3
配置RP | 配置静态RP | 三者必选其一 | 1.3.4 1.
 | 配置C-RP |  | 1.3.4 2.
 | 使能自动RP侦听 |  | 1.3.4 3.
 | 全局配置C-RP定时器 | 可选 | 1.3.4 4.
配置BSR | 配置C-BSR | 必选 | 1.3.5 1.
 | 配置BSR服务边界 | 可选 | 1.3.5 2.
 | 全局配置C-BSR参数 | 可选 | 1.3.5 3.
 | 配置C-BSR定时器 | 可选 | 1.3.5 4.
 | 关闭自举报文语义分片功能 | 可选 | 1.3.5 5.
配置管理域 | 使能管理域机制 | 可选 | 1.3.6 1.
 | 配置管理域边界 | 可选 | 1.3.6 2.
 | 配置管理域和Global域的C-BSR | 可选 | 1.3.6 3.
配置组播源注册 |  | 可选 | 1.3.7
配置禁止SPT切换 |  | 可选 | 1.3.8
配置PIM公共特性 |  | 可选 | 1.6

1.3.2 配置准备

在配置PIM-SM之前，需完成以下任务：

l 配置任一单播路由协议，实现域内网络层互通

在配置PIM-SM之前，需准备以下数据：

l 静态RP的IP地址及表示其所服务组范围的ACL规则

l C-RP的优先级及表示其所服务组范围的ACL规则

l 合法C-RP的地址范围及表示其所服务组范围的ACL规则

l 发送宣告报文的时间间隔

l C-RP超时时间

l C-BSR的优先级

l 哈希掩码长度

l 表示合法BSR地址范围的ACL规则

l 自举时间间隔

l 自举超时时间

l 表示注册报文过滤规则的ACL规则

l 注册抑制时间

l 注册探测时间

l 禁止发起SPT切换的ACL规则和排序规则

1.3.3 使能PIM-SM

在接口上使能了PIM-SM后，路由器会定期发送Hello报文以发现PIM邻居，并对收到的来自PIM邻居的报文进行处理。在部署PIM-SM域时，建议在其所有非边界接口上均使能PIM-SM。

1. 使能公网实例中的PIM-SM

表1-9 使能公网实例中的PIM-SM

操作 | 命令 | 说明
进入系统视图 | system-view | -
使能IP组播路由 | multicast routing-enable | 必选 缺省情况下，IP组播路由处于关闭状态
进入接口视图 | interface interface-type interface-number | -
使能PIM-SM | pim sm | 必选 缺省情况下，PIM-SM处于关闭状态

2. 使能VPN实例中的PIM-SM

表1-10 使能VPN实例中的PIM-SM

操作 | 命令 | 说明
进入系统视图 | system-view | -
创建VPN实例，并进入VPN实例视图 | ip vpn-instance vpn-instance-name | -
配置VPN实例的RD | route-distinguisher route-distinguisher | 必选 缺省情况下，VPN实例没有RD
使能IP组播路由 | multicast routing-enable | 必选 缺省情况下，IP组播路由处于关闭状态
进入接口视图 | interface interface-type interface-number | -
将接口与VPN实例进行关联 | ip binding vpn-instance vpn-instance-name | 必选 缺省情况下，接口只属于公网，未与任何VPN实例关联
使能PIM-SM | pim sm | 必选 缺省情况下，PIM-SM处于关闭状态

在同一台设备的同一个VPN实例中，所有接口上所启用的PIM模式必须相同。

l 有关 ip vpn-instance、route-distinguisher 和 ip binding vpn-instance 命令的详细介绍，请参见“三层技术-IP路由命令参考”中的“MCE”。

l 有关 multicast routing-enable 命令的详细介绍，请参见“IP组播命令参考”中的“组播路由与转发”。

1.3.4 配置RP

RP可以通过手工方式静态配置，也可以通过BSR机制动态选举。对于大型PIM网络，配置静态RP将会非常繁琐。所以，通常静态RP是作为动态选举RP机制的备份手段，以提高网络的健壮性，增强组播网络的运营管理能力。

当PIM网络中同时运行PIM-SM和双向PIM时，请勿使一个RP同时为PIM-SM和双向PIM工作，否则可能引起PIM路由表出错。

1. 配置静态RP

当网络内仅有一个动态RP时，通过手工配置静态RP可以避免因单一节点故障而引起的通信中断，同时也可以避免C-RP与BSR之间频繁的信息交互而占用带宽。

请在PIM-SM域内的所有路由器上进行如下配置。

表1-11 配置静态RP

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入公网实例或VPN实例PIM视图 | pim [ vpn-instance vpn-instance-name ] | -
配置服务于PIM-SM的静态RP | static-rp rp-address [ acl-number ] [ preferred ] | 必选 缺省情况下，没有配置静态RP

为了让静态RP功能正常发挥作用，必须在所有路由器上指定相同的静态RP地址。

2. 配置C-RP

在PIM-SM域中，可以把有意成为RP的路由器配置为C-RP。BSR通过接收来自C-RP的C-RP信息，或者接收来自其它路由器的自动RP宣告，收集C-RP信息并将其汇总为RP-Set信息，然后在全网内扩散。之后，网络内的其它路由器根据RP-Set信息计算出特定组播组范围所对应的RP。建议在骨干网路由器上配置C-RP。

为了防止C-RP欺骗，需要在BSR上配置合法的C-RP地址范围及其所服务的组播组范围。同时由于每个C-BSR都可能成为BSR，因此必须在PIM-SM域内的所有C-BSR上都配置相同的过滤策略。

表1-12 配置C-RP

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入公网实例或VPN实例PIM视图 | pim [ vpn-instance vpn-instance-name ] | -
配置某接口为服务于PIM-SM的C-RP | c-rp interface-type interface-number [ group-policy acl-number | priority priority | holdtime hold-interval | advertisement-interval adv-interval ] * | 必选 缺省情况下，没有配置C-RP
配置合法C-RP的地址范围及其所服务的组播组范围 | crp-policy acl-number | 可选 缺省情况下，C-RP的地址范围及其所服务的组播组范围不受任何限制

l 在配置C-RP时，应在C-RP与PIM-SM域中的其它设备之间保留较大的通信带宽。

l 一个RP可以为多个组播组服务，也可以为所有组播组服务。每个组播组在任意时刻，只能由唯一的一个RP为其转发数据，而不能由多个RP转发数据。

3. 使能自动RP侦听

自动RP宣告（Announce）和发现（Discovery）报文的目的地址分别为组播组地址224.0.1.39和224.0.1.40。在设备上使能了自动RP侦听功能后，该设备便能够接收这两种报文，并记录报文中所携带的RP信息。

表1-13 使能自动RP侦听

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入公网实例或VPN实例PIM视图 | pim [ vpn-instance vpn-instance-name ] | -
使能自动RP侦听功能 | auto-rp enable | 必选 缺省情况下，自动RP侦听功能处于关闭状态

4. 全局配置C-RP定时器

为了使BSR能够在PIM-SM域内分发RP-Set信息，C-RP必须周期性地向BSR发送宣告报文，BSR从该报文中学习RP-Set信息，并将该信息与自己的IP地址一起封装在自举报文中向域中的所有PIM路由器进行宣告。

C-RP在其宣告报文中封装一个保持时间，BSR在收到该报文后，从中获得该时间值并启动C-RP超时定时器，如果超时后BSR仍没有收到来自C-RP后续的宣告报文，则认为目前网络中的C-RP失效或不可达。

请在已配置为C-RP的路由器上进行如下配置。

表1-14 全局配置C-RP定时器

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入公网实例或VPN实例PIM视图 | pim [ vpn-instance vpn-instance-name ] | -
配置发送宣告报文的时间间隔 | c-rp advertisement-interval interval | 可选 缺省情况下，发送宣告报文的时间间隔为60秒
配置C-RP超时时间 | c-rp holdtime interval | 可选 缺省情况下，C-RP的超时时间为150秒

有关PIM-SM其它定时器的相关配置，请参见“ 1.6.7 配置PIM公共定时器 ”。

1.3.5 配置BSR

在一个PIM-SM域中只能有一个BSR，但需要配置至少一个C-BSR。任意一台路由器都可以被配置为C-BSR。在C-BSR之间通过自动选举产生BSR，BSR负责在PIM-SM域中收集并发布RP信息。

1. 配置C-BSR

C-BSR应配置在骨干网的路由器上，在将路由器配置为C-BSR时，必须同时指定一个使能了PIM-SM的接口。C-BSR间的自动选举机制简单描述如下：

l 最初，每个C-BSR都认为自己是本PIM-SM域的BSR，并使用接口的IP地址作为BSR地址，发送自举报文；

l 当某C-BSR收到其它C-BSR发来的自举报文时，首先比较自己与后者的优先级，优先级较高者获胜；在优先级相同的情况下，再比较自己与后者的BSR地址，拥有较大IP地址者获胜。如果后者获胜，则用后者的BSR地址替换自己的BSR地址，并不再认为自己是BSR；否则，保留自己的BSR地址，并继续认为自己是BSR。

通过在路由器上配置合法BSR的地址范围，可以对收到的自举报文按照地址范围进行过滤，从而防止某些恶意主机非法伪装成BSR，以避免合法的BSR被恶意取代。必须在PIM-SM域内的所有路由器上进行相同的配置。通常针对以下两类情况实施预防措施：

l 某些恶意主机通过伪造自举报文以欺骗路由器，试图更改RP映射关系。这种攻击通常发生在边缘路由器上，由于BSR处于网络内部，主机在网络外部，因此边缘路由器通过对收到的自举报文进行邻居检查和RPF检查，丢弃不符合要求的报文，就可以避免外部网络用户对内部网络BSR的攻击；

l 网络中某台路由器被攻击者控制，或者有非法接入的路由器时，攻击者可以将这样的路由器配置为C-BSR，并使其在竞争中获胜，从而控制网络中RP信息的发布权。由于在被配置为C-BSR后，路由器会自动向整个网络扩散自举报文，而自举报文是TTL值为1的组播报文，所以只要其邻居路由器不接收该自举报文，就不会影响整个网络。因此，通过在整个网络的所有路由器上都配置合法BSR的地址范围，从而丢弃合法范围之外的自举报文，就可以防止此类攻击。

以上两种预防措施可以部分地保护网络中BSR的安全。但是如果某台合法的BSR路由器被攻击者控制，还是可能导致问题。

表1-15 配置C-BSR

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入公网实例或VPN实例PIM视图 | pim [ vpn-instance vpn-instance-name ] | -
配置某接口为C-BSR | c-bsr interface-type interface-number [ hash-length [ priority ] ] | 必选 缺省情况下，没有配置C-BSR
配置合法的BSR地址范围 | bsr-policy acl-number | 可选 缺省情况下，BSR的地址范围不受任何限制

l 由于BSR与PIM-SM域中的其它设备需要交换大量信息，因此应在C-BSR与PIM-SM域中的其它设备之间保留较大的通信带宽。

l 如果C-BSR之间通过GRE（Generic Routing Encapsulation，通用路由封装）隧道相连接，则需要配置组播静态路由，以保证到C-BSR下一跳的是Tunnel接口。有关组播静态路由的相关配置，请参见“IP组播配置指导”中的“组播路由与转发”。

2. 配置BSR服务边界

BSR作为PIM-SM域中的管理核心，负责将收集到的RP-Set信息以自举报文的形式发向PIM-SM域中的所有路由器。

BSR的服务边界，即PIM-SM域的边界。BSR是针对特定的服务范围而言的，众多的BSR服务边界接口将网络划分成不同的PIM-SM域，自举报文无法通过PIM-SM域的边界，BSR服务边界之外的路由器也不能参与本PIM-SM域内的组播转发。

请在欲配置为BSR服务边界的路由器上进行如下配置。

表1-16 配置BSR服务边界

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
配置BSR的服务边界 | pim bsr-boundary | 必选 缺省情况下，没有配置BSR的服务边界

3. 全局配置C-BSR参数

在一个PIM-SM域中，从众多C-BSR中选举出唯一的BSR。PIM-SM域内的C-RP向BSR发送宣告报文，由BSR汇总为RP-Set，并向本PIM-SM域内的所有路由器进行宣告。所有路由器都使用统一的哈希算法，得到特定组播组所对应RP的地址。

请在已配置为C-BSR的路由器上进行如下配置。

表1-17 全局配置C-BSR参数

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入公网实例或VPN实例PIM视图 | pim [ vpn-instance vpn-instance-name ] | -
配置哈希掩码长度 | c-bsr hash-length hash-length | 可选 缺省情况下，哈希掩码长度为30
配置C-BSR的优先级 | c-bsr priority priority | 可选 缺省情况下，C-BSR的优先级为64

哈希掩码长度和C-BSR的优先级可以在全局、管理域和Global域这三种范围内进行配置：

l 如果在管理域或Global域下进行了配置，则取其配置值；

l 如果未在管理域或Global域下进行配置，则取相应的全局值。

有关管理域和Global域C-BSR参数的相关配置，请参见“ 1.3.6 3. 配置管理域和Global域的C-BSR ”。

4. 配置C-BSR定时器

当某C-BSR竞选成为BSR后，它会通过自举报文向其所服务的区域以组播方式发送自己的IP地址和RP-Set信息。BSR以自举时间间隔周期性地向网络发送自举报文，收到该报文的C-BSR会在自举超时时间内将其保持，此时BSR选举过程暂停；当自举超时时间超时后，C-BSR之间会触发新一轮的BSR选举过程。

请在已配置为C-BSR的路由器上进行如下配置。

表1-18 配置C-BSR定时器

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入公网实例或VPN实例PIM视图 | pim [ vpn-instance vpn-instance-name ] | -
配置自举时间间隔 | c-bsr interval interval | 可选 缺省取值请参见表后的说明
配置自举超时时间 | c-bsr holdtime interval | 可选 缺省取值请参见表后的说明

关于自举时间间隔的取值：

l 如果没有进行手工配置，则其取值由如下公式决定：自举时间间隔＝（自举超时时间－10）÷2。缺省情况下，自举超时时间为130秒，则自举时间间隔的缺省值＝（130－10）÷2＝60（秒）。

l 如果进行了手工配置，则取配置值。

关于自举超时时间的取值：

l 如果没有进行手工配置，则其取值由如下公式决定：自举超时时间＝自举时间间隔×2＋10。缺省情况下，自举时间间隔为60秒，则自举超时时间的缺省值＝60×2＋10＝130（秒）。

l 如果进行了手工配置，则取配置值。

配置时，应保证自举时间间隔小于自举超时时间。

5. 关闭自举报文语义分片功能

BSR周期性地向所在PIM-SM域发送自举报文以通告RP-Set信息。当RP-Set信息较少时，自举报文被封装在一个IP报文中发送出去；而当RP-Set信息较多时，自举报文的大小可能超过接口的MTU（Maximum Transmission Unit，最大传输单元）值，从而触发其在IP层的分片。在这种情况下，一个IP分片的丢失就会导致整个自举报文都被丢弃。

自举报文语义分片功能可以解决上述问题：当自举报文大于接口MTU时，会被分解为多个自举报文分片（Bootstrap Message Fragment，BSMF）。非BSR收到自举报文分片后，若发现某组范围对应的RP信息都在这一个分片中，便立即更新该组范围对应的RP-Set；若发现某组范围映射的RP信息被分在了多个分片中，则待收齐了这些分片后再更新该组范围对应的RP-Set。这样，由于不同分片所含组范围对应的RP信息不同，因此个别分片的丢失只影响该分片所含组范围对应的RP信息，而不会导致整个自举报文都被丢弃。

自举报文语义分片功能是缺省使能的，但由于不支持该功能的设备会将自举报文分片当作完整的自举报文处理，从而导致其学到的RP-Set信息不完整，因此当PIM-SM域中存在此类设备时，请在已配置为C-BSR的路由器上关闭本功能。

表1-19 关闭自举报文语义分片功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入公网实例或VPN实例PIM视图 | pim [ vpn-instance vpn-instance-name ] | -
关闭自举报文语义分片功能 | undo bsm-fragment enable | 必选 缺省情况下，自举报文语义分片功能处于使能状态

通常，BSR根据其BSR接口的MTU值对自举报文进行语义分片；而对由于新学到PIM邻居而触发的自举报文发送，则根据发送接口的MTU值进行语义分片。

1.3.6 配置管理域

在非管理域机制下，一个PIM-SM域中只有唯一的BSR，整个网络都在该BSR的管理范围之内。为了更有针对性地管理，可以将整个PIM-SM域划分为多个管理域：每个管理域中各维护一个BSR，服务于特定范围的组播组；而Global域中也维护一个BSR，为所有剩余的组播组提供服务。

1. 使能管理域机制

在配置管理域各项功能之前，必须先使能管理域机制。

请在PIM-SM域内的所有路由器上进行如下配置。

表1-20 使能管理域机制

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入公网实例或VPN实例PIM视图 | pim [ vpn-instance vpn-instance-name ] | -
使能管理域机制 | c-bsr admin-scope | 必选 缺省情况下，管理域机制处于关闭状态

2. 配置管理域边界

在管理域机制中，各管理域的边界由ZBR构成，每个管理域各维护一个BSR，服务于特定范围的组播组，属于此范围的组播协议报文（如断言报文、BSR自举报文等）无法通过管理域边界。

请在欲配置为ZBR的路由器上进行如下配置。

表1-21 配置管理域边界

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
配置组播转发边界 | multicast boundary group-address { mask | mask-length } | 必选 缺省情况下，没有配置组播转发边界

通过 multicast boundary 命令中的参数 group-address { mask | mask-length }可指定管理域所服务的组播组范围，有效的组范围在239.0.0.0/8之内。有关 multicast boundary 命令的详细介绍，请参见“IP组播命令参考”中的“组播路由与转发”。

3. 配置管理域和Global域的C-BSR

在应用了管理域机制的网络中，从众多C-BSR中选举出针对不同组播组的BSR。网络内的C-RP只向对应的BSR发送宣告报文，由BSR汇总为RP-Set，并向其所服务管理域内的所有路由器进行宣告。所有路由器都使用统一的哈希算法，得到特定组播组所对应RP的地址。

请为管理域和Global域分别配置其各自的C-BSR。

(1) 配置管理域的C-BSR

请在欲配置为管理域C-BSR的路由器上进行如下配置。

表1-22 配置管理域的C-BSR

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入公网实例或VPN实例PIM视图 | pim [ vpn-instance vpn-instance-name ] | -
配置管理域的C-BSR | c-bsr group group-address { mask | mask-length } [ hash-length hash-length | priority priority ] * | 必选 缺省情况下，没有配置管理域的C-BSR

通过 c-bsr group 命令中的参数 group-address { mask | mask-length }可指定C-BSR所服务的组播组范围，有效的组范围在239.0.0.0/8之内。

(2) 配置Global域的C-BSR

请在欲配置为Global域C-BSR的路由器上进行如下配置。

表1-23 配置Global域的C-BSR

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入公网实例或VPN实例PIM视图 | pim [ vpn-instance vpn-instance-name ] | -
配置Global域的C-BSR | c-bsr global [ hash-length hash-length | priority priority ] * | 必选 缺省情况下，没有配置Global域的C-BSR

哈希掩码长度和C-BSR的优先级可以在全局、管理域和Global域这三种范围内进行配置：

l 如果在管理域或Global域下进行了配置，则取其配置值；

l 如果未在管理域或Global域下进行配置，则取相应的全局值。

有关全局C-BSR参数的相关配置，请参见“ 1.3.5 3. 全局配置C-BSR参数 ”。

1.3.7 配置组播源注册

在PIM-SM域内，组播源侧DR向RP发送注册报文，而这些注册报文拥有不同的组播源或组播组地址。为了让RP服务于特定的组播组，可以对注册报文进行过滤。如果某个（S，G）表项被过滤规则拒绝，或者过滤规则中没有定义对它的操作，RP都会向DR发送注册停止报文，以停止该组播数据的注册过程。

出于对注册报文在传递过程中完整性的考虑，可以配置根据整个报文来计算校验和。但为了减少往注册报文中封装数据报文的工作量并考虑到互通性，一般情况下不建议配置根据注册报文的全部内容来计算校验和的方式。

当接收者不再通过RP接收发往某组播组的数据（即RP不再服务于该组播组），或RP开始接收组播源沿着SPT发来的组播数据时，RP将向组播源侧DR发送注册停止报文，DR收到该报文后将停止发送封装有组播数据的注册报文并启动注册停止定时器（Register-Stop Timer）。在注册停止定时器超时之前，DR会向RP发送一个空注册报文（Null-Register Message，即不封装组播数据的注册报文）：如果DR在注册探测时间（Register_Probe_Time）内收到了来自RP的注册停止报文，DR将刷新其注册停止定时器；否则，DR将重新开始发送封装有组播数据的注册报文。

注册停止定时器的超时时间是一个随机值，由其它两个时间值决定：注册抑制时间（Register_Suppression_Time）和注册探测时间。其具体取值范围如下：（0.5×注册抑制时间，1.5×注册抑制时间）－注册探测时间。

请在所有已配置为C-RP的路由器上配置注册报文的过滤规则和根据注册报文的全部内容来计算校验和；请在所有可能成为组播源侧DR的路由器上配置注册抑制时间和注册探测时间。

表1-24 配置组播源注册

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入公网实例或VPN实例PIM视图 | pim [ vpn-instance vpn-instance-name ] | -
配置注册报文的过滤规则 | register-policy acl-number | 可选 缺省情况下，没有配置注册报文的过滤规则
配置根据注册报文的全部内容来计算校验和 | register-whole-checksum | 可选 缺省情况下，仅根据注册报文头来计算校验和
配置注册抑制时间 | register-suppression-timeout interval | 可选 缺省情况下，注册抑制时间为60秒
配置注册探测时间 | probe-interval interval | 可选 缺省情况下，注册探测时间为5秒

1.3.8 配置禁止SPT切换

缺省情况下，当本系列交换机作为RP或接收者侧DR时，设备会在收到第一个组播数据包后立即发起SPT切换，可以通过下面的配置关闭从RPT到SPT的切换。

表1-25 配置禁止SPT切换

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入公网实例或VPN实例PIM视图 | pim [ vpn-instance vpn-instance-name ] | -
配置禁止发起SPT切换的条件 | spt-switch-threshold infinity [ group-policy acl-number [ order order-value] ] | 可选 缺省情况下，设备收到第一个组播数据包后便立即向SPT切换

对于本系列交换机来说，一旦建立了组播转发表项，即使有注册出接口，后续的组播数据报文也不会被封装成注册报文进行转发。所以，在可能成为RP的交换机（即静态RP或C-RP等）上，不要配置永不发起SPT切换，以免导致转发失败。


1.4 双向PIM配置任务简介

表1-26 双向PIM配置任务简介

配置任务 |  | 说明 | 详细配置
使能PIM-SM |  | 必选 | 1.4.3
使能双向PIM |  | 必选 | 1.4.4
配置RP | 配置静态RP | 三者必选其一 | 1.4.5 1.
 | 配置C-RP |  | 1.4.5 2.
 | 使能自动RP侦听 |  | 1.4.5 3.
 | 全局配置C-RP定时器 | 可选 | 1.4.5 4.
配置BSR | 配置C-BSR | 必选 | 1.4.6 1.
 | 配置BSR服务边界 | 可选 | 1.4.6 2.
 | 全局配置C-BSR参数 | 可选 | 1.4.6 3.
 | 配置C-BSR定时器 | 可选 | 1.4.6 4.
 | 关闭自举报文语义分片功能 | 可选 | 1.4.6 5.
配置管理域 | 使能管理域机制 | 可选 | 1.4.7 1.
 | 配置管理域边界 | 可选 | 1.4.7 2.
 | 配置管理域和Global域的C-BSR | 可选 | 1.4.7 3.
配置PIM公共特性 |  | 可选 | 1.6

1.4.2 配置准备

在配置双向PIM之前，需完成以下任务：

l 配置任一单播路由协议，实现域内网络层互通

在配置双向PIM之前，需准备以下数据：

l 静态RP的IP地址及表示其所服务组范围的ACL规则

l C-RP的优先级及表示其所服务组范围的ACL规则

l 合法C-RP的地址范围及表示其所服务组范围的ACL规则

l 发送宣告报文的时间间隔

l C-RP超时时间

l C-BSR的优先级

l 哈希掩码长度

l 表示合法BSR地址范围的ACL规则

l 自举时间间隔

l 自举超时时间

1.4.3 使能PIM-SM

由于双向PIM是在PIM-SM的基础上实现的，因此在使能双向PIM之前须先使能PIM-SM。在部署双向PIM域时，建议在其所有非边界接口上均使能PIM-SM。

1. 使能公网实例中的PIM-SM

表1-27 使能公网实例中的PIM-SM

操作 | 命令 | 说明
进入系统视图 | system-view | -
使能IP组播路由 | multicast routing-enable | 必选 缺省情况下，IP组播路由处于关闭状态
进入接口视图 | interface interface-type interface-number | -
使能PIM-SM | pim sm | 必选 缺省情况下，PIM-SM处于关闭状态

2. 使能VPN实例中的PIM-SM

表1-28 使能VPN实例中的PIM-SM

操作 | 命令 | 说明
进入系统视图 | system-view | -
创建VPN实例，并进入VPN实例视图 | ip vpn-instance vpn-instance-name | -
配置VPN实例的RD | route-distinguisher route-distinguisher | 必选 缺省情况下，VPN实例没有RD
使能IP组播路由 | multicast routing-enable | 必选 缺省情况下，IP组播路由处于关闭状态
进入接口视图 | interface interface-type interface-number | -
将接口与VPN实例进行关联 | ip binding vpn-instance vpn-instance-name | 必选 缺省情况下，接口只属于公网，未与任何VPN实例关联
使能PIM-SM | pim sm | 必选 缺省情况下，PIM-SM处于关闭状态

在同一台设备的同一个VPN实例中，所有接口上所启用的PIM模式必须相同。

l 有关 ip vpn-instance、route-distinguisher 和 ip binding vpn-instance 命令的详细介绍，请参见“三层技术-IP路由命令参考”中的“MCE”。

l 有关 multicast routing-enable 命令的详细介绍，请参见“IP组播命令参考”中的“组播路由与转发”。

1.4.4 使能双向PIM

请在双向PIM域内的所有路由器上进行如下配置。

表1-29 使能双向PIM

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入公网实例或VPN实例PIM视图 | pim [ vpn-instance vpn-instance-name ] | -
使能双向PIM | bidir-pim enable | 必选 缺省情况下，双向PIM处于关闭状态

1.4.5 配置RP

RP可以通过手工方式静态配置，也可以通过BSR机制动态选举。对于大型PIM网络，配置静态RP将会非常繁琐。所以，通常静态RP是作为动态选举RP机制的备份手段，以提高网络的健壮性，增强组播网络的运营管理能力。

当PIM网络中同时运行PIM-SM和双向PIM时，请勿使一个RP同时为PIM-SM和双向PIM工作，否则可能引起PIM路由表出错。

1. 配置静态RP

当网络内仅有一个动态RP时，通过手工配置静态RP可以避免因单一节点故障而引起的通信中断，同时也可以避免C-RP与BSR之间频繁的信息交互而占用带宽。

请在双向PIM域内的所有路由器上进行如下配置。

表1-30 配置静态RP

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入公网实例或VPN实例PIM视图 | pim [ vpn-instance vpn-instance-name ] | -
配置服务于双向PIM的静态RP | static-rp rp-address [ acl-number ] [ preferred ] bidir | 必选 缺省情况下，没有配置静态RP

为了让静态RP功能正常发挥作用，必须在所有路由器上指定相同的静态RP地址。

双向PIM允许将静态RP的IP地址指定为一个实际不存在的IP地址。譬如，一条链路两端接口的IP地址分别为10.1.1.1/24和10.1.1.2/24，可以将静态RP的IP地址指定为同网段但实际不存在的一个地址，如10.1.1.100/24，该链路就成为了RPL。

2. 配置C-RP

在双向PIM域中，可以把有意成为RP的路由器配置为C-RP。BSR通过接收来自C-RP的C-RP信息，或者接收来自其它路由器的自动RP宣告，收集C-RP信息并将其汇总为RP-Set信息，然后在全网内扩散。之后，网络内的其它路由器根据RP-Set信息计算出特定组播组范围所对应的RP。建议在骨干网路由器上配置C-RP。

为了防止C-RP欺骗，需要在BSR上配置合法的C-RP地址范围及其所服务的组播组范围。同时由于每个C-BSR都可能成为BSR，因此必须在双向PIM域内的所有C-BSR上都配置相同的过滤策略。

表1-31 配置C-RP

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入公网实例或VPN实例PIM视图 | pim [ vpn-instance vpn-instance-name ] | -
配置某接口为服务于双向PIM的C-RP | c-rp interface-type interface-number [ group-policy acl-number | priority priority | holdtime hold-interval | advertisement-interval adv-interval ] * bidir | 必选 缺省情况下，没有配置C-RP

l 在配置C-RP时，应在C-RP与双向PIM域中的其它设备之间保留较大的通信带宽。

l 一个RP可以为多个组播组服务，也可以为所有组播组服务。每个组播组在任意时刻，只能由唯一的一个RP为其转发数据，而不能由多个RP转发数据。

3. 使能自动RP侦听

自动RP宣告和发现报文的目的地址分别为组播组地址224.0.1.39和224.0.1.40。在设备上使能了自动RP侦听功能后，该设备便能够接收这两种报文，并记录报文中所携带的RP信息。

表1-32 使能自动RP侦听

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入公网实例或VPN实例PIM视图 | pim [ vpn-instance vpn-instance-name ] | -
使能自动RP侦听功能 | auto-rp enable | 必选 缺省情况下，自动RP侦听功能处于关闭状态

4. 全局配置C-RP定时器

为了使BSR能够在双向PIM域内分发RP-Set信息，C-RP必须周期性地向BSR发送宣告报文，BSR从该报文中学习RP-Set信息，并将该信息与自己的IP地址一起封装在自举报文中向域中的所有PIM路由器进行宣告。

C-RP在其宣告报文中封装一个保持时间，BSR在收到该报文后，从中获得该时间值并启动C-RP超时定时器，如果超时后BSR仍没有收到来自C-RP后续的宣告报文，则认为目前网络中的C-RP失效或不可达。

请在已配置为C-RP的路由器上进行如下配置。

表1-33 全局配置C-RP定时器

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入公网实例或VPN实例PIM视图 | pim [ vpn-instance vpn-instance-name ] | -
配置发送宣告报文的时间间隔 | c-rp advertisement-interval interval | 可选 缺省情况下，发送宣告报文的时间间隔为60秒
配置C-RP超时时间 | c-rp holdtime interval | 可选 缺省情况下，C-RP的超时时间为150秒

有关双向PIM其它定时器的相关配置，请参见“1.6.7 配置PIM公共定时器”。

1.4.6 配置BSR

在一个双向PIM域中只能有一个BSR，但需要配置至少一个C-BSR。任意一台路由器都可以被配置为C-BSR。在C-BSR之间通过自动选举产生BSR，BSR负责在双向PIM域中收集并发布RP信息。

1. 配置C-BSR

C-BSR应配置在骨干网的路由器上，在将路由器配置为C-BSR时，必须同时指定一个使能了PIM-SM的接口。C-BSR间的自动选举机制简单描述如下：

l 最初，每个C-BSR都认为自己是本双向PIM域的BSR，并使用接口的IP地址作为BSR地址，发送自举报文；

l 当某C-BSR收到其它C-BSR发来的自举报文时，首先比较自己与后者的优先级，优先级较高者获胜；在优先级相同的情况下，再比较自己与后者的BSR地址，拥有较大IP地址者获胜。如果后者获胜，则用后者的BSR地址替换自己的BSR地址，并不再认为自己是BSR；否则，保留自己的BSR地址，并继续认为自己是BSR。

通过在路由器上配置合法BSR的地址范围，可以对收到的自举报文按照地址范围进行过滤，从而防止某些恶意主机非法伪装成BSR，以避免合法的BSR被恶意取代。必须在双向PIM域内的所有路由器上进行相同的配置。通常针对以下两类情况实施预防措施：

l 某些恶意主机通过伪造自举报文以欺骗路由器，试图更改RP映射关系。这种攻击通常发生在边缘路由器上，由于BSR处于网络内部，主机在网络外部，因此边缘路由器通过对收到的自举报文进行邻居检查和RPF检查，丢弃不符合要求的报文，就可以避免外部网络用户对内部网络BSR的攻击；

l 网络中某台路由器被攻击者控制，或者有非法接入的路由器时，攻击者可以将这样的路由器配置为C-BSR，并使其在竞争中获胜，从而控制网络中RP信息的发布权。由于在被配置为C-BSR后，路由器会自动向整个网络扩散自举报文，而自举报文是TTL值为1的组播报文，所以只要其邻居路由器不接收该自举报文，就不会影响整个网络。因此，通过在整个网络的所有路由器上都配置合法BSR的地址范围，从而丢弃合法范围之外的自举报文，就可以防止此类攻击。

以上两种预防措施可以部分地保护网络中BSR的安全。但是如果某台合法的BSR路由器被攻击者控制，还是可能导致问题。

表1-34 配置C-BSR

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入公网实例或VPN实例PIM视图 | pim [ vpn-instance vpn-instance-name ] | -
配置某接口为C-BSR | c-bsr interface-type interface-number [ hash-length [ priority ] ] | 必选 缺省情况下，没有配置C-BSR
配置合法的BSR地址范围 | bsr-policy acl-number | 可选 缺省情况下，BSR的地址范围不受任何限制

l 由于BSR与双向PIM域中的其它设备需要交换大量信息，因此应在C-BSR与双向PIM域中的其它设备之间保留较大的通信带宽。

l 如果C-BSR之间通过GRE隧道相连接，则需要配置组播静态路由，以保证到C-BSR下一跳的是Tunnel接口。有关组播静态路由的相关配置，请参见“IP组播配置指导”中的“组播路由与转发”。

2. 配置BSR服务边界

BSR作为双向PIM域中的管理核心，负责将收集到的RP-Set信息以自举报文的形式发向双向PIM域中的所有路由器。

BSR的服务边界，即双向PIM域的边界。BSR是针对特定的服务范围而言的，众多的BSR服务边界接口将网络划分成不同的双向PIM域，自举报文无法通过双向PIM域的边界，BSR服务边界之外的路由器也不能参与本双向PIM域内的组播转发。

请在欲配置为BSR服务边界的路由器上进行如下配置。

表1-35 配置BSR服务边界

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
配置BSR的服务边界 | pim bsr-boundary | 必选 缺省情况下，没有配置BSR的服务边界

3. 全局配置C-BSR参数

在一个双向PIM域中，从众多C-BSR中选举出唯一的BSR。双向PIM域内的C-RP向BSR发送宣告报文，由BSR汇总为RP-Set，并向本双向PIM域内的所有路由器进行宣告。所有路由器都使用统一的哈希算法，得到特定组播组所对应RP的地址。

请在已配置为C-BSR的路由器上进行如下配置。

表1-36 全局配置C-BSR参数

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入公网实例或VPN实例PIM视图 | pim [ vpn-instance vpn-instance-name ] | -
配置哈希掩码长度 | c-bsr hash-length hash-length | 可选 缺省情况下，哈希掩码长度为30
配置C-BSR的优先级 | c-bsr priority priority | 可选 缺省情况下，C-BSR的优先级为64

哈希掩码长度和C-BSR的优先级可以在全局、管理域和Global域这三种范围内进行配置：

l 如果在管理域或Global域下进行了配置，则取其配置值；

l 如果未在管理域或Global域下进行配置，则取相应的全局值。

有关管理域和Global域C-BSR参数的相关配置，请参见“1.4.7 3. 配置管理域和Global域的C-BSR”。

4. 配置C-BSR定时器

当某C-BSR竞选成为BSR后，它会通过自举报文向其所服务的区域以组播方式发送自己的IP地址和RP-Set信息。BSR以自举时间间隔周期性地向网络发送自举报文，收到该报文的C-BSR会在自举超时时间内将其保持，此时BSR选举过程暂停；当自举超时时间超时后，C-BSR之间会触发新一轮的BSR选举过程。

请在已配置为C-BSR的路由器上进行如下配置。

表1-37 配置C-BSR定时器

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入公网实例或VPN实例PIM视图 | pim [ vpn-instance vpn-instance-name ] | -
配置自举时间间隔 | c-bsr interval interval | 可选 缺省取值请参见表后的说明
配置自举超时时间 | c-bsr holdtime interval | 可选 缺省取值请参见表后的说明

关于自举时间间隔的取值：

l 如果没有进行手工配置，则其取值由如下公式决定：自举时间间隔＝（自举超时时间－10）÷2。缺省情况下，自举超时时间为130秒，则自举时间间隔的缺省值＝（130－10）÷2＝60（秒）。

l 如果进行了手工配置，则取配置值。

关于自举超时时间的取值：

l 如果没有进行手工配置，则其取值由如下公式决定：自举超时时间＝自举时间间隔×2＋10。缺省情况下，自举时间间隔为60秒，则自举超时时间的缺省值＝60×2＋10＝130（秒）。

l 如果进行了手工配置，则取配置值。

配置时，应保证自举时间间隔小于自举超时时间。

5. 关闭自举报文语义分片功能

BSR周期性地向所在双向PIM域发送自举报文以通告RP-Set信息。当RP-Set信息较少时，自举报文被封装在一个IP报文中发送出去；而当RP-Set信息较多时，自举报文的大小可能超过接口的MTU值，从而触发其在IP层的分片。在这种情况下，一个IP分片的丢失就会导致整个自举报文都被丢弃。

自举报文语义分片功能可以解决上述问题：当自举报文大于接口MTU时，会被分解为多个自举报文分片。非BSR收到自举报文分片后，若发现某组范围对应的RP信息都在这一个分片中，便立即更新该组范围对应的RP-Set；若发现某组范围映射的RP信息被分在了多个分片中，则待收齐了这些分片后再更新该组范围对应的RP-Set。这样，由于不同分片所含组范围对应的RP信息不同，因此个别分片的丢失只影响该分片所含组范围对应的RP信息，而不会导致整个自举报文都被丢弃。

自举报文语义分片功能是缺省使能的，但由于不支持该功能的设备会将自举报文分片当作完整的自举报文处理，从而导致其学到的RP-Set信息不完整，因此当PIM-SM域中存在此类设备时，请在已配置为C-BSR的路由器上关闭本功能。

表1-38 关闭自举报文语义分片功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入公网实例或VPN实例PIM视图 | pim [ vpn-instance vpn-instance-name ] | -
关闭自举报文语义分片功能 | undo bsm-fragment enable | 必选 缺省情况下，自举报文语义分片功能处于使能状态

通常，BSR根据其BSR接口的MTU值对自举报文进行语义分片；而对由于新学到PIM邻居而触发的自举报文发送，则根据发送接口的MTU值进行语义分片。

1.4.7 配置管理域

在非管理域机制下，一个双向PIM域中只有唯一的BSR，整个网络都在该BSR的管理范围之内。为了更有针对性地管理，可以将整个双向PIM域划分为多个管理域：每个管理域中各维护一个BSR，服务于特定范围的组播组；而Global域中也维护一个BSR，为所有剩余的组播组提供服务。

1. 使能管理域机制

在配置管理域各项功能之前，必须先使能管理域机制。

请在双向PIM域内的所有路由器上进行如下配置。

表1-39 使能管理域机制

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入公网实例或VPN实例PIM视图 | pim [ vpn-instance vpn-instance-name ] | -
使能管理域机制 | c-bsr admin-scope | 必选 缺省情况下，管理域机制处于关闭状态

2. 配置管理域边界

在管理域机制中，各管理域的边界由ZBR构成，每个管理域各维护一个BSR，服务于特定范围的组播组，属于此范围的组播协议报文（如断言报文、BSR自举报文等）无法通过管理域边界。

请在欲配置为ZBR的路由器上进行如下配置。

表1-40 配置管理域边界

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
配置组播转发边界 | multicast boundary group-address { mask | mask-length } | 必选 缺省情况下，没有配置组播转发边界

通过 multicast boundary 命令中的参数 group-address { mask | mask-length }可指定管理域所服务的组播组范围，有效的组范围在239.0.0.0/8之内。有关 multicast boundary 命令的详细介绍，请参见“IP组播命令参考”中的“组播路由与转发”。

3. 配置管理域和Global域的C-BSR

在应用了管理域机制的网络中，从众多C-BSR中选举出针对不同组播组的BSR。网络内的C-RP只向对应的BSR发送宣告报文，由BSR汇总为RP-Set，并向其所服务管理域内的所有路由器进行宣告。所有路由器都使用统一的哈希算法，得到特定组播组所对应RP的地址。

请为管理域和Global域分别配置其各自的C-BSR。

(1) 配置管理域的C-BSR

请在欲配置为管理域C-BSR的路由器上进行如下配置。

表1-41 配置管理域的C-BSR

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入公网实例或VPN实例PIM视图 | pim [ vpn-instance vpn-instance-name ] | -
配置管理域的C-BSR | c-bsr group group-address { mask | mask-length } [ hash-length hash-length | priority priority ] * | 必选 缺省情况下，没有配置管理域的C-BSR

通过 c-bsr group 命令中的参数 group-address { mask | mask-length }可指定C-BSR所服务的组播组范围，有效的组范围在239.0.0.0/8之内。

(2) 配置Global域的C-BSR

请在欲配置为Global域C-BSR的路由器上进行如下配置。

表1-42 配置Global域的C-BSR

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入公网实例或VPN实例PIM视图 | pim [ vpn-instance vpn-instance-name ] | -
配置Global域的C-BSR | c-bsr global [ hash-length hash-length | priority priority ] * | 必选 缺省情况下，没有配置Global域的C-BSR

哈希掩码长度和C-BSR的优先级可以在全局、管理域和Global域这三种范围内进行配置：

l 如果在管理域或Global域下进行了配置，则取其配置值；

l 如果未在管理域或Global域下进行配置，则取相应的全局值。

有关全局C-BSR参数的相关配置，请参见“1.4.6 3. 全局配置C-BSR参数”。


1.5 配置PIM-SSM

PIM-SSM模型需要IGMPv3的支持，因此应确保连接有接收者的PIM路由器上使能了IGMPv3。

1.5.1 PIM-SSM配置任务简介

表1-43 PIM-SSM配置任务简介

配置任务 | 说明 | 详细配置
使能PIM-SM | 必选 | 1.5.3
配置SSM组播组范围 | 可选 | 1.5.4
配置PIM公共特性 | 可选 | 1.6

1.5.2 配置准备

在配置PIM-SSM之前，需完成以下任务：

l 配置任一单播路由协议，实现域内网络层互通

在配置PIM-SSM之前，需准备以下数据：

l SSM组播组范围

1.5.3 使能PIM-SM

由于PIM-SSM是通过PIM-SM的部分子集功能实现的，因此在配置PIM-SSM之前须先使能PIM-SM。在部署PIM-SSM域时，建议在其所有非边界接口上均使能PIM-SM。

1. 使能公网实例中的PIM-SM

表1-44 使能公网实例中的PIM-SM

操作 | 命令 | 说明
进入系统视图 | system-view | -
使能IP组播路由 | multicast routing-enable | 必选 缺省情况下，IP组播路由处于关闭状态
进入接口视图 | interface interface-type interface-number | -
使能PIM-SM | pim sm | 必选 缺省情况下，PIM-SM处于关闭状态

2. 使能VPN实例中的PIM-SM

表1-45 使能VPN实例中的PIM-SM

操作 | 命令 | 说明
进入系统视图 | system-view | -
创建VPN实例，并进入VPN实例视图 | ip vpn-instance vpn-instance-name | -
配置VPN实例的RD | route-distinguisher route-distinguisher | 必选 缺省情况下，VPN实例没有RD
使能IP组播路由 | multicast routing-enable | 必选 缺省情况下，IP组播路由处于关闭状态
进入接口视图 | interface interface-type interface-number | -
将接口与VPN实例进行关联 | ip binding vpn-instance vpn-instance-name | 必选 缺省情况下，接口只属于公网，未与任何VPN实例关联
使能PIM-SM | pim sm | 必选 缺省情况下，PIM-SM处于关闭状态

在同一台设备的同一个VPN实例中，所有接口上所启用的PIM模式必须相同。

l 有关 ip vpn-instance、route-distinguisher 和 ip binding vpn-instance 命令的详细介绍，请参见“三层技术-IP路由命令参考”中的“MCE”。

l 有关 multicast routing-enable 命令的详细介绍，请参见“IP组播命令参考”中的“组播路由与转发”。

1.5.4 配置SSM组播组范围

在把来自组播源的信息传递给接收者的过程中，是采用PIM-SSM模型还是PIM-SM模型，这取决于接收者订阅通道（S，G）中的组播组是否在SSM组播组范围之内，所有使能了PIM-SM的接口将会认为属于该范围内的组播组采用了PIM-SSM模型。

请在PIM-SSM域内的所有路由器上进行如下配置。

表1-46 配置SSM组播组范围

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入公网实例或VPN实例PIM视图 | pim [ vpn-instance vpn-instance-name ] | -
配置SSM组播组的范围 | ssm-policy acl-number | 可选 缺省情况下，SSM组播组的范围为232.0.0.0/8

l 应确保域内所有路由器上配置的SSM组播组地址范围都一致，否则组播信息将无法通过SSM模型进行传输。

l 如果某组播组属于SSM组播组范围，但该组成员使用IGMPv1或IGMPv2发送加入报文，则设备不会触发（*，G）加入报文。


1.6 配置PIM公共特性

对于本节中那些既可在PIM视图、又可在接口视图下进行配置的功能或参数来说：

l 在PIM视图下所作的配置对所有接口生效，在接口视图下所作的配置仅对当前接口生效；

l 如果在这两个视图下对某功能或参数均进行了配置，则不论配置先后，接口视图下的配置将被优先采用。

1.6.1 PIM公共特性配置任务简介

表1-47 PIM公共特性配置任务简介

配置任务 | 说明 | 详细配置
配置组播数据过滤器 | 可选 | 1.6.3
配置Hello报文过滤器 | 可选 | 1.6.4
配置Hello报文选项 | 可选 | 1.6.5
配置剪枝延迟时间 | 可选 | 1.6.6
配置PIM公共定时器 | 可选 | 1.6.7
配置加入/剪枝报文规格 | 可选 | 1.6.8
配置PIM与BFD联动 | 可选 | 1.6.9

1.6.2 配置准备

在配置PIM公共特性之前，需完成以下任务：

l 配置任一单播路由协议，实现域内网络层互通

l 配置PIM-DM（或PIM-SM、PIM-SSM）

在配置PIM公共特性之前，需准备以下数据：

l 表示组播数据过滤规则的ACL规则

l 表示合法Hello报文的源地址范围的ACL规则

l 竞选DR的优先级（全局值/接口值）

l 保持PIM邻居可达状态的时间（全局值/接口值）

l 发送剪枝报文的延迟时间（全局值/接口值）

l 剪枝否决时间（全局值/接口值）

l 剪枝延迟时间

l 发送Hello报文的时间间隔（全局值/接口值）

l 发送Hello报文的最大延迟时间（接口值）

l 保持断言状态的时间（全局值/接口值）

l 发送加入/剪枝报文的时间间隔（全局值/接口值）

l 保持加入/剪枝状态的时间（全局值/接口值）

l 组播源生存时间

l 加入/剪枝报文的最大长度

l 加入/剪枝报文中（S，G）表项的最大数量

1.6.3 配置组播数据过滤器

无论在PIM-DM还是PIM-SM域内，各路由器都可以对流经自己的组播数据进行检查，通过比较是否符合过滤规则，从而决定是否继续转发组播数据。也就是说PIM域内的路由器能够成为组播数据的过滤器。过滤器的存在一方面有助于实现信息流量控制，另一方面可以在安全性方面限定下游接收者能够获得的信息。

表1-48 配置组播数据过滤器

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入公网实例或VPN实例PIM视图 | pim [ vpn-instance vpn-instance-name ] | -
配置组播数据过滤器 | source-policy acl-number | 必选 缺省情况下，没有配置组播数据过滤器

l 通常，过滤器的位置离组播源距离越近，过滤影响越明显。

l 过滤器不仅过滤独立的组播数据，还过滤封装在注册报文中的组播数据。

1.6.4 配置Hello报文过滤器

随着PIM协议的推广和应用，对其安全性的要求也越来越高。建立正确的PIM邻居是PIM协议安全应用的前提。如果在接口上指定了合法Hello报文的源地址范围，便能够保证PIM邻居的正确建立，从而有效防止各种PIM协议报文攻击，提高设备对PIM协议报文处理的安全性。

表1-49 配置Hello报文过滤器

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
配置合法Hello报文的源地址范围 | pim neighbor-policy acl-number | 必选 缺省情况下，Hello报文的源地址范围不受任何限制

当Hello报文过滤器的配置生效后，对于之前已建立的PIM邻居，若由于其Hello报文被过滤而导致无法收到后续的Hello报文，将会在老化超时后被自动删除。

1.6.5 配置Hello报文选项

无论在PIM-DM域还是在PIM-SM域内，各路由器之间发送的Hello报文都包含很多可供配置的选项，对各选项的介绍如下：

l DR_Priority（仅用于PIM-SM）：表示竞选DR的优先级，优先级高的设备被选举为DR。可以在与组播源或接收者直连的共享网络中的所有路由器上都配置此参数。

l Holdtime：表示保持PIM邻居可达状态的时间，若超时后仍没有收到Hello报文，则认为PIM邻居失效或不可达。

l LAN_Prune_Delay：表示在共享网络上传递剪枝报文的延迟时间，该选项由三部分组成：LAN-delay（发送剪枝报文的延迟时间）、Override-interval（剪枝否决时间）和禁止加入报文抑制能力。当共享网段内各PIM路由器的LAN-delay或Override-interval不同时，取其中最大的值；当要禁止加入报文抑制能力时，须在共享网段内的所有PIM路由器上都禁止该能力。

LAN-delay表示路由器从收到下游路由器发来的剪枝报文到继续向上游路由器发送剪枝报文的延迟时间，Override-interval则表示允许下游路由器否决剪枝动作的时间。路由器在收到下游路由器发来的剪枝报文后并不立即执行剪枝动作，而是仍将当前的转发状态保持LAN-delay＋Override-interval时间。如果下游路由器需要继续接收组播数据，则必须在Override-interval时间内向上游路由器发送加入报文以否决这个剪枝动作，这就称为剪枝否决；如果Override-interval时间超时后未收到任何加入报文，上游路由器就会在LAN-delay＋Override-interval时间超时后执行剪枝动作。

PIM路由器发送Hello报文时，会生成一个随机数Generation ID并携带在该报文中。一台PIM路由器的Generation ID一般不会变化，除非该路由器的状态发生了改变（如接口刚使能了PIM或设备进行了重启），此时，当其开始或重新开始发送Hello报文时，会生成一个新的Generation ID。这样，如果PIM路由器发现其上游邻居发来的Hello报文中Generation ID发生了改变，就会认为该邻居的状态已经丢失或其上游邻居已经改变，从而触发发送加入报文以进行状态刷新。

在禁止加入报文抑制能力（即使能邻居跟踪）时，应在共享网段的所有PIM路由器上都禁止该能力，否则上游路由器无法跟踪每台下游路由器的加入报文。

1. 全局配置Hello报文选项

表1-50 全局配置Hello报文选项

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入公网实例或VPN实例PIM视图 | pim [ vpn-instance vpn-instance-name ] | -
配置竞选DR的优先级 | hello-option dr-priority priority | 可选 缺省情况下，竞选DR的优先级为1
配置保持PIM邻居可达状态的时间 | hello-option holdtime interval | 可选 缺省情况下，保持PIM邻居可达状态的时间为105秒
配置发送剪枝报文的延迟时间 | hello-option lan-delay interval | 可选 缺省情况下，发送剪枝报文的延迟时间为500毫秒
配置剪枝否决时间 | hello-option override-interval interval | 可选 缺省情况下，剪枝否决时间为2500毫秒
禁止加入报文抑制能力 | hello-option neighbor-tracking | 必选 缺省情况下，加入报文抑制能力处于使能状态

2. 在接口上配置Hello报文选项

表1-51 在接口上配置Hello报文选项

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
配置竞选DR的优先级 | pim hello-option dr-priority priority | 可选 缺省情况下，竞选DR的优先级为1
配置保持PIM邻居可达状态的时间 | pim hello-option holdtime interval | 可选 缺省情况下，保持PIM邻居可达状态的时间为105秒
配置发送剪枝报文的延迟时间 | pim hello-option lan-delay interval | 可选 缺省情况下，发送剪枝报文的延迟时间为500毫秒
配置剪枝否决时间 | pim hello-option override-interval interval | 可选 缺省情况下，剪枝否决时间为2500毫秒
禁止加入报文抑制能力 | pim hello-option neighbor-tracking | 必选 缺省情况下，加入报文抑制能力处于使能状态
配置不接受无Generation ID的Hello报文 | pim require-genid | 必选 缺省情况下，接受无Generation ID的Hello报文

1.6.6 配置剪枝延迟时间

剪枝延迟时间（Prune Delay）的作用是使共享网段中的上游路由器在收到下游路由器发来的剪枝报文后不立即执行剪枝动作，而将当前的转发状态继续保持Prune Delay时间：如果在该时间内收到了下游路由器发来的加入报文，则否决这个剪枝动作；否则，便执行这个剪枝动作。

表1-52 配置剪枝延迟时间

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入公网实例或VPN实例PIM视图 | pim [ vpn-instance vpn-instance-name ] | -
配置剪枝延迟时间 | prune delay interval | 可选 缺省情况下，剪枝延迟时间等于剪枝未决时间（Prune Pending Timer，缺省为3秒）

1.6.7 配置PIM公共定时器

PIM路由器通过周期性地发送Hello报文，以发现PIM邻居，并维护各路由器之间的PIM邻居关系。

为了避免多个PIM路由器同时发送Hello报文而导致冲突，当PIM路由器在收到Hello报文时，将延迟一段时间再发送Hello报文，该时间值为小于“触发Hello报文的最大延迟时间”的一个随机值。

PIM路由器通过周期性地向其上游路由器发送加入/剪枝报文以更新状态，在该报文中携带有保持时间，上游路由器为被剪枝的下游接口设置保持加入/剪枝状态定时器。

在断言中落选的路由器将会剪掉其下游的转发接口，并把这种断言状态保持一段时间。超时后，落选的路由器会重新恢复转发组播数据。

当路由器没有收到来自组播源S的后续组播数据时，不会立即删除（S，G）表项，而是将其维持一段时间后再删除，这段时间就称为组播源的生存时间。

1. 全局配置PIM公共定时器

表1-53 全局配置PIM公共定时器

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入公网实例或VPN实例PIM视图 | pim [ vpn-instance vpn-instance-name ] | -
配置发送Hello报文的时间间隔 | timer hello interval | 可选 缺省情况下，发送Hello报文的时间间隔为30秒
配置发送加入/剪枝报文的时间间隔 | timer join-prune interval | 可选 缺省情况下，发送加入/剪枝报文的时间间隔为60秒
配置保持加入/剪枝状态的时间 | holdtime join-prune interval | 可选 缺省情况下，保持加入/剪枝状态的时间为210秒
配置保持断言状态的时间 | holdtime assert interval | 可选 缺省情况下，保持断言状态的时间为180秒
配置组播源生存时间 | source-lifetime interval | 可选 缺省情况下，组播源的生存时间为210秒

2. 在接口上配置PIM公共定时器

表1-54 在接口上配置PIM公共定时器

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
配置发送Hello报文的时间间隔 | pim timer hello interval | 可选 缺省情况下，发送Hello报文的时间间隔为30秒
配置触发Hello报文的最大延迟时间 | pim triggered-hello-delay interval | 可选 缺省情况下，触发Hello报文的最大延迟时间为5秒
配置发送加入/剪枝报文的时间间隔 | pim timer join-prune interval | 可选 缺省情况下，发送加入/剪枝报文的时间间隔为60秒
配置保持加入/剪枝状态的时间 | pim holdtime join-prune interval | 可选 缺省情况下，保持加入/剪枝状态的时间为210秒
配置保持断言状态的时间 | pim holdtime assert interval | 可选 缺省情况下，保持断言状态的时间为180秒

如果网络没有特殊要求，建议采用缺省值。

1.6.8 配置加入/剪枝报文规格

如果加入/剪枝报文的尺寸较大，则丢失一个报文将导致较多信息的遗失；如果加入/剪枝报文的尺寸较小，则单个报文的丢失所产生的影响也将降低。

通过控制加入/剪枝报文中（S，G）表项的数目，可以有效减少单位时间内发送的（S，G）表项数量。

表1-55 配置加入/剪枝报文规格

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入公网实例或VPN实例PIM视图 | pim [ vpn-instance vpn-instance-name ] | -
配置加入/剪枝报文的最大长度 | jp-pkt-size packet-size | 可选 缺省情况下，加入/剪枝报文的最大长度为8100字节
配置加入/剪枝报文中（S，G）表项的最大数量 | jp-queue-size queue-size | 可选 缺省情况下，加入/剪枝报文中（S，G）表项的最大数量为1020个

1.6.9 配置PIM与BFD联动

PIM借助Hello报文在共享网段中选举出DR，使其成为该网段中组播数据的唯一转发者。当DR出现故障时，只有待其老化后才会触发新的DR选举过程，这个过程通常比较长。为了实现DR的快速切换，可以在共享网段的PIM邻居之间引入BFD机制进行链路状态的快速检测。通过在共享网段内的所有PIM路由器上都使能PIM与BFD联动功能，可以使这些PIM邻居快速感知DR故障并重新选举DR。

表1-56 配置PIM与BFD联动

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
使能PIM与BFD联动功能 | pim bfd enable | 必选 缺省情况下，PIM与BFD联动功能处于关闭状态

l 只有在接口上先使能了PIM-DM或PIM-SM，本配置才能生效。

l 有关BFD的详细介绍，请参见“可靠性配置指导”中的“BFD”。


1.7 PIM显示和维护

在完成上述配置后，在任意视图下执行 display 命令可以显示配置后PIM的运行情况，通过查看显示信息验证配置的效果。

在用户视图下执行 reset 命令可以清除PIM统计信息。

表1-57 PIM显示和维护

操作 | 命令
查看PIM-SM域中的BSR信息，以及本地配置并生效的C-RP信息 | display pim [ all-instance | vpn-instance vpn-instance-name ] bsr-info [ | { begin | exclude | include } regular-expression ]
查看PIM所使用的单播路由信息 | display pim [ all-instance | vpn-instance vpn-instance-name ] claimed-route [ source-address ] [ | { begin | exclude | include } regular-expression ]
查看PIM控制报文的数量 | display pim [ all-instance | vpn-instance vpn-instance-name ] control-message counters [ message-type { probe | register | register-stop } | [ interface interface-type interface-number | message-type { assert | bsr | crp | graft | graft-ack | hello | join-prune | state-refresh } ] * ] [ | { begin | exclude | include } regular-expression ]
查看双向PIM的DF信息 | display pim [ all-instance | vpn-instance vpn-instance-name ] df-info [ rp-address ] [ | { begin | exclude | include } regular-expression ]
查看尚未确认的PIM-DM嫁接信息 | display pim [ all-instance | vpn-instance vpn-instance-name ] grafts [ | { begin | exclude | include } regular-expression ]
查看接口上的PIM信息 | display pim [ all-instance | vpn-instance vpn-instance-name ] interface [ interface-type interface-number ] [ verbose ] [ | { begin | exclude | include } regular-expression ]
查看待发送的加入/剪枝报文信息 | display pim [ all-instance | vpn-instance vpn-instance-name ] join-prune mode { sm [ flags flag-value ] | ssm } [ interface interface-type interface-number | neighbor neighbor-address ] * [ verbose ] [ | { begin | exclude | include } regular-expression ]
查看PIM邻居信息 | display pim [ all-instance | vpn-instance vpn-instance-name ] neighbor [ interface interface-type interface-number | neighbor-address | verbose ] * [ | { begin | exclude | include } regular-expression ]
查看PIM路由表的内容 | display pim [ all-instance | vpn-instance vpn-instance-name ] routing-table [ group-address [ mask { mask-length | mask } ] | source-address [ mask { mask-length | mask } ] | incoming-interface [ interface-type interface-number | register ] | outgoing-interface { include | exclude | match } { interface-type interface-number | register } | mode mode-type | flags flag-value | fsm ] * [ | { begin | exclude | include } regular-expression ]
查看RP的信息 | display pim [ all-instance | vpn-instance vpn-instance-name ] rp-info [ group-address ] [ | { begin | exclude | include } regular-expression ]
重置PIM控制报文计数器 | reset pim [ all-instance | vpn-instance vpn-instance-name ] control-message counters [ interface interface-type interface-number ]


1.8 PIM典型配置举例

1.8.1 PIM-DM典型配置举例

1. 组网需求

l 接收者通过组播方式接收视频点播信息，不同组织的接收者群体组成末梢网络，每个末梢网络中都存在至少一个接收者，整个PIM域采用DM方式。

l Host A和Host C为两个末梢网络中的组播信息接收者；Switch D通过Vlan-interface300接口与组播源（Source）所在的网络连接；Switch A通过Vlan-interface100接口连接末梢网络N1，通过Vlan-interface103接口连接Switch D；Switch B和Switch C通过各自的Vlan-interface200接口连接末梢网络N2，分别通过Vlan-interface101和Vlan-interface102接口连接Switch D。

l Switch A与末梢网络N1之间运行IGMPv2；Switch B和Switch C与末梢网络N2之间也运行IGMPv2。

2. 组网图

图1-14 PIM-DM典型配置组网图

设备 | 接口 | IP地址 | 设备 | 接口 | IP地址
Switch A | Vlan-int100 | 10.110.1.1/24 | Switch D | Vlan-int300 | 10.110.5.1/24
 | Vlan-int103 | 192.168.1.1/24 |  | Vlan-int103 | 192.168.1.2/24
Switch B | Vlan-int200 | 10.110.2.1/24 |  | Vlan-int101 | 192.168.2.2/24
 | Vlan-int101 | 192.168.2.1/24 |  | Vlan-int102 | 192.168.3.2/24
Switch C | Vlan-int200 | 10.110.2.2/24 |  |  |
 | Vlan-int102 | 192.168.3.1/24 |  |  |

3. 配置步骤

(1) 配置IP地址和单播路由协议

请按照图1-14 配置各接口的IP地址和子网掩码，具体配置过程略。

配置PIM-DM域内的各交换机之间采用OSPF协议进行互连，确保PIM-DM域内部在网络层互通，并且各交换机之间能够借助单播路由协议实现动态路由更新，具体配置过程略。

(2) 使能IP组播路由，并使能PIM-DM和IGMP

# 在Switch A上使能IP组播路由，在各接口上使能PIM-DM，并在其连接末梢网络的接口Vlan-interface100上使能IGMP。

<SwitchA> system-view

[SwitchA] multicast routing-enable

[SwitchA] interface vlan-interface 100

[SwitchA-Vlan-interface100] igmp enable

[SwitchA-Vlan-interface100] pim dm

[SwitchA-Vlan-interface100] quit

[SwitchA] interface vlan-interface 103

[SwitchA-Vlan-interface103] pim dm

[SwitchA-Vlan-interface103] quit

Switch B和Switch C的配置与Switch A相似，配置过程略。

# 在Switch D上使能IP组播路由，并在各接口上使能PIM-DM。

<SwitchD> system-view

[SwitchD] multicast routing-enable

[SwitchD] interface vlan-interface 300

[SwitchD-Vlan-interface300] pim dm

[SwitchD-Vlan-interface300] quit

[SwitchD] interface vlan-interface 103

[SwitchD-Vlan-interface103] pim dm

[SwitchD-Vlan-interface103] quit

[SwitchD] interface vlan-interface 101

[SwitchD-Vlan-interface101] pim dm

[SwitchD-Vlan-interface101] quit

[SwitchD] interface vlan-interface 102

[SwitchD-Vlan-interface102] pim dm

[SwitchD-Vlan-interface102] quit

(3) 检验配置效果

通过使用 display pim interface 命令可以查看交换机接口上PIM的配置和运行情况。例如：

# 查看Switch D上PIM的配置信息。

[SwitchD] display pim interface

VPN-Instance: public net

Interface NbrCnt HelloInt DR-Pri DR-Address

Vlan300 0 30 1 10.110.5.1 (local)

Vlan103 1 30 1 192.168.1.2 (local)

Vlan101 1 30 1 192.168.2.2 (local)

Vlan102 1 30 1 192.168.3.2 (local)

通过使用 display pim neighbor 命令可以查看交换机之间的PIM邻居关系。例如：

# 查看Switch D上PIM的邻居关系信息。

[SwitchD] display pim neighbor

VPN-Instance: public net

Total Number of Neighbors = 3

Neighbor Interface Uptime Expires Dr-Priority

192.168.1.1 Vlan103 00:02:22 00:01:27 1

192.168.2.1 Vlan101 00:00:22 00:01:29 3

192.168.3.1 Vlan102 00:00:23 00:01:31 5

假如Host A需要接收组播组G（225.1.1.1）的信息，当组播源S（10.110.5.100/24）向组播组G发送组播数据时，通过扩散生成SPT，SPT路径中各交换机（Switch A和Switch D）上都存在（S，G）表项，Host A向Switch A发送IGMP报告以加入组播组G，在Switch A上生成（*，G）表项。通过使用 display pim routing-table 命令可以查看交换机的PIM路由表信息。例如：

# 查看Switch A上的PIM路由表信息。

[SwitchA] display pim routing-table

VPN-Instance: public net

Total 1 (*, G) entry; 1 (S, G) entry

(*, 225.1.1.1)

Protocol: pim-dm, Flag: WC

UpTime: 00:04:25

Upstream interface: NULL

Upstream neighbor: NULL

RPF prime neighbor: NULL

Downstream interface(s) information:

Total number of downstreams: 1

1: Vlan-interface100

Protocol: igmp, UpTime: 00:04:25, Expires: never

(10.110.5.100, 225.1.1.1)

Protocol: pim-dm, Flag: ACT

UpTime: 00:06:14

Upstream interface: Vlan-interface103

Upstream neighbor: 192.168.1.2

RPF prime neighbor: 192.168.1.2

Downstream interface(s) information:

Total number of downstreams: 1

1: Vlan-interface100

Protocol: pim-dm, UpTime: 00:04:25, Expires: never

# 查看Switch D上的PIM路由表信息。

[SwitchD] display pim routing-table

VPN-Instance: public net

Total 0 (*, G) entry; 1 (S, G) entry

(10.110.5.100, 225.1.1.1)

Protocol: pim-dm, Flag: LOC ACT

UpTime: 00:03:27

Upstream interface: Vlan-interface300

Upstream neighbor: NULL

RPF prime neighbor: NULL

Downstream interface(s) information:

Total number of downstreams: 2

1: Vlan-interface103

Protocol: pim-dm, UpTime: 00:03:27, Expires: never

2: Vlan-interface102

Protocol: pim-dm, UpTime: 00:03:27, Expires: never

1.8.2 PIM-SM非管理域配置举例

1. 组网需求

l 接收者通过组播方式接收视频点播信息，不同组织的接收者群体组成末梢网络，每个末梢网络中都存在至少一个接收者，整个PIM域采用SM非管理域方式。

l Host A和Host C为两个末梢网络中的组播信息接收者；Switch D通过Vlan-interface300接口与组播源（Source）所在网络连接；Switch A通过Vlan-interface100接口连接末梢网络N1，通过Vlan-interface101接口和Vlan-interface102接口分别连接Switch D和Switch E；Switch B和Switch C通过各自的Vlan-interface200接口连接末梢网络N2，分别通过Vlan-interface103和Vlan-interface104接口连接Switch E。

l 将Switch D的Vlan-interface105接口和Switch E的Vlan-interface102接口都配置为C-BSR和C-RP，其中Switch E上C-BSR的优先级较高。C-RP所服务的组播组范围为225.1.1.0/24，通过改变哈希掩码长度使此范围内的组地址间隔映射到这两个C-RP上。

l Switch A与末梢网络N1之间运行IGMPv2；Switch B和Switch C与末梢网络N2之间也运行IGMPv2。

2. 组网图

图1-15 PIM-SM非管理域配置组网图

设备 | 接口 | IP地址 | 设备 | 接口 | IP地址
Switch A | Vlan-int100 | 10.110.1.1/24 | Switch D | Vlan-int300 | 10.110.5.1/24
 | Vlan-int101 | 192.168.1.1/24 |  | Vlan-int101 | 192.168.1.2/24
 | Vlan-int102 | 192.168.9.1/24 |  | Vlan-int105 | 192.168.4.2/24
Switch B | Vlan-int200 | 10.110.2.1/24 | Switch E | Vlan-int104 | 192.168.3.2/24
 | Vlan-int103 | 192.168.2.1/24 |  | Vlan-int103 | 192.168.2.2/24
Switch C | Vlan-int200 | 10.110.2.2/24 |  | Vlan-int102 | 192.168.9.2/24
 | Vlan-int104 | 192.168.3.1/24 |  | Vlan-int105 | 192.168.4.1/24

3. 配置步骤

(1) 配置IP地址和单播路由协议

请按照图1-15 配置各接口的IP地址和子网掩码，具体配置过程略。

配置PIM-SM域内的各交换机之间采用OSPF协议进行互连，确保PIM-SM域内部在网络层互通，并且各交换机之间能够借助单播路由协议实现动态路由更新，具体配置过程略。

(2) 使能IP组播路由，并使能PIM-SM和IGMP

# 在Switch A上使能IP组播路由，在各接口上使能PIM-SM，并在其连接末梢网络的接口Vlan-interface100上使能IGMP。

<SwitchA> system-view

[SwitchA] multicast routing-enable

[SwitchA] interface vlan-interface 100

[SwitchA-Vlan-interface100] igmp enable

[SwitchA-Vlan-interface100] pim sm

[SwitchA-Vlan-interface100] quit

[SwitchA] interface vlan-interface 101

[SwitchA-Vlan-interface101] pim sm

[SwitchA-Vlan-interface101] quit

[SwitchA] interface vlan-interface 102

[SwitchA-Vlan-interface102] pim sm

[SwitchA-Vlan-interface102] quit

Switch B和Switch C的配置与Switch A相似，Switch D和Switch E除了不需要在相应接口上使能IGMP外，其它的配置也与Switch A相似，配置过程略。

(3) 配置C-BSR和C-RP

# 在Switch D上配置RP通告的服务范围，以及C-BSR和C-RP的位置，并指定哈希掩码长度为32，C-BSR的优先级为10。

<SwitchD> system-view

[SwitchD] acl number 2005

[SwitchD-acl-basic-2005] rule permit source 225.1.1.0 0.0.0.255

[SwitchD-acl-basic-2005] quit

[SwitchD] pim

[SwitchD-pim] c-bsr vlan-interface 105 32 10

[SwitchD-pim] c-rp vlan-interface 105 group-policy 2005

[SwitchD-pim] quit

# 在Switch E上配置RP通告的服务范围，以及C-BSR和C-RP的位置，并指定哈希掩码长度为32，C-BSR的优先级为20。

<SwitchE> system-view

[SwitchE] acl number 2005

[SwitchE-acl-basic-2005] rule permit source 225.1.1.0 0.0.0.255

[SwitchE-acl-basic-2005] quit

[SwitchE] pim

[SwitchE-pim] c-bsr vlan-interface 102 32 20

[SwitchE-pim] c-rp vlan-interface 102 group-policy 2005

[SwitchE-pim] quit

(4) 检验配置效果

通过使用 display pim interface 命令可以查看交换机接口上PIM的配置和运行情况。例如：

# 查看Switch A上PIM的配置信息。

[SwitchA] display pim interface

VPN-Instance: public net

Interface NbrCnt HelloInt DR-Pri DR-Address

Vlan100 0 30 1 10.110.1.1 (local)

Vlan101 1 30 1 192.168.1.2

Vlan102 1 30 1 192.168.9.2

通过使用 display pim bsr-info 命令可以查看交换机上BSR选举的信息，以及本地配置并生效的C-RP信息。例如：

# 查看Switch A上的BSR信息，以及本地配置并生效的C-RP信息。

[SwitchA] display pim bsr-info

VPN-Instance: public net

Elected BSR Address: 192.168.9.2

Priority: 20

Hash mask length: 32

State: Accept Preferred

Scope: Not scoped

Uptime: 00:40:40

Expires: 00:01:42

# 查看Switch D上的BSR信息，以及本地配置并生效的C-RP信息。

[SwitchD] display pim bsr-info

VPN-Instance: public net

Elected BSR Address: 192.168.9.2

Priority: 20

Hash mask length: 32

State: Accept Preferred

Scope: Not scoped

Uptime: 00:05:26

Expires: 00:01:45

Candidate BSR Address: 192.168.4.2

Priority: 10

Hash mask length: 32

State: Candidate

Scope: Not scoped

Candidate RP: 192.168.4.2(Vlan-interface105)

Priority: 192

HoldTime: 150

Advertisement Interval: 60

Next advertisement scheduled at: 00:00:34

# 查看Switch E上的BSR信息，以及本地配置并生效的C-RP信息。

[SwitchE] display pim bsr-info

VPN-Instance: public net

Elected BSR Address: 192.168.9.2

Priority: 20

Hash mask length: 32

State: Elected

Scope: Not scoped

Uptime: 00:01:18

Next BSR message scheduled at: 00:01:52

Candidate BSR Address: 192.168.9.2

Priority: 20

Hash mask length: 32

State: Elected

Scope: Not scoped

Candidate RP: 192.168.9.2(Vlan-interface102)

Priority: 192

HoldTime: 150

Advertisement Interval: 60

Next advertisement scheduled at: 00:00:48

通过使用 display pim rp-info 命令可以查看交换机上获取的RP信息。例如：

# 查看Switch A上的RP信息。

[SwitchA] display pim rp-info

VPN-Instance: public net

PIM-SM BSR RP information:

Group/MaskLen: 225.1.1.0/24

RP: 192.168.4.2

Priority: 192

HoldTime: 150

Uptime: 00:51:45

Expires: 00:02:22

RP: 192.168.9.2

Priority: 192

HoldTime: 150

Uptime: 00:51:45

Expires: 00:02:22

假如Host A需要接收组播组G（225.1.1.0）的信息，由于根据哈希算法得出G对应的RP为Switch E，因此Switch A和Switch E之间会生成RPT。当组播源S（10.110.5.100/24）向RP发起注册后，Switch D和Switch E之间会生成SPT。当Switch A收到组播数据后立即执行从RPT到SPT的切换。RPT路径中的交换机（Switch A和Switch E）上存在（*，G）表项，而SPT路径中的交换机（Switch A和Switch D）上存在（S，G）表项，通过使用 display pim routing-table 命令可以查看交换机的PIM路由表信息。例如：

# 查看Switch A上的PIM路由表信息。

[SwitchA] display pim routing-table

VPN-Instance: public net

Total 1 (*, G) entry; 1 (S, G) entry

(*, 225.1.1.0)

RP: 192.168.9.2

Protocol: pim-sm, Flag: WC

UpTime: 00:13:46

Upstream interface: Vlan-interface102

Upstream neighbor: 192.168.9.2

RPF prime neighbor: 192.168.9.2

Downstream interface(s) information:

Total number of downstreams: 1

1: Vlan-interface100

Protocol: igmp, UpTime: 00:13:46, Expires: 00:03:06

(10.110.5.100, 225.1.1.0)

RP: 192.168.9.2

Protocol: pim-sm, Flag: SPT ACT

UpTime: 00:00:42

Upstream interface: Vlan-interface101

Upstream neighbor: 192.168.1.2

RPF prime neighbor: 192.168.1.2

Downstream interface(s) information:

Total number of downstreams: 1

1: Vlan-interface100

Protocol: pim-sm, UpTime: 00:00:42, Expires: 00:03:06

# 查看Switch D上的PIM路由表信息。

[SwitchD] display pim routing-table

VPN-Instance: public net

Total 0 (*, G) entry; 1 (S, G) entry

(10.110.5.100, 225.1.1.0)

RP: 192.168.9.2

Protocol: pim-sm, Flag: SPT LOC ACT

UpTime: 00:00:42

Upstream interface: Vlan-interface300

Upstream neighbor: NULL

RPF prime neighbor: NULL

Downstream interface(s) information:

Total number of downstreams: 1

1: Vlan-interface105

Protocol: pim-sm, UpTime: 00:00:42, Expires: 00:02:26

# 查看Switch E上的PIM路由表信息。

[SwitchE] display pim routing-table

VPN-Instance: public net

Total 1 (*, G) entry; 0 (S, G) entry

(*, 225.1.1.0)

RP: 192.168.9.2 (local)

Protocol: pim-sm, Flag: WC

UpTime: 00:13:16

Upstream interface: Register

Upstream neighbor: 192.168.4.2

RPF prime neighbor: 192.168.4.2

Downstream interface(s) information:

Total number of downstreams: 1

1: Vlan-interface102

Protocol: pim-sm, UpTime: 00:13:16, Expires: 00:03:22

1.8.3 PIM-SM管理域配置举例

1. 组网需求

l 接收者通过组播方式接收视频点播信息，整个PIM域采用SM管理域方式，划分为管理域1、管理域2和Global域，Switch B、Switch C和Switch D为各管理域的ZBR。

l Source 1和Source 2分别向组播组239.1.1.1发送内容不同的组播信息，Host A和Host B则分别只接收来自Source 1和Source 2的组播信息；Source 3向组播组224.1.1.1发送组播信息，Host C为其接收者。

l Switch B的Vlan-interface101接口为管理域1的C-BSR和C-RP，服务于239.0.0.0/8；Switch D的Vlan-interface104接口为管理域2的C-BSR和C-RP，服务于239.0.0.0/8；Switch F的Vlan-interface109为Global域的C-BSR和C-RP，服务于239.0.0.0/8以外的所有组播组。

l Switch A、Switch E和Switch I分别与各自所连接的接收者之间运行IGMPv2。

2. 组网图

图1-16 PIM-SM管理域配置组网图

设备 | 接口 | IP地址 | 设备 | 接口 | IP地址
Switch A | Vlan-int100 | 192.168.1.1/24 | Switch D | Vlan-int104 | 10.110.4.2/24
 | Vlan-int101 | 10.110.1.1/24 |  | Vlan-int108 | 10.110.7.1/24
Switch B | Vlan-int200 | 192.168.2.1/24 |  | Vlan-int107 | 10.110.8.1/24
 | Vlan-int101 | 10.110.1.2/24 | Switch E | Vlan-int400 | 192.168.4.1/24
 | Vlan-int103 | 10.110.2.1/24 |  | Vlan-int105 | 10.110.5.2/24
 | Vlan-int102 | 10.110.3.1/24 |  | Vlan-int108 | 10.110.7.2/24
Switch C | Vlan-int300 | 192.168.3.1/24 | Switch F | Vlan-int109 | 10.110.9.1/24
 | Vlan-int104 | 10.110.4.1/24 |  | Vlan-int107 | 10.110.8.2/24
 | Vlan-int105 | 10.110.5.1/24 |  | Vlan-int102 | 10.110.3.2/24
 | Vlan-int103 | 10.110.2.2/24 | Switch G | Vlan-int500 | 192.168.5.1/24
 | Vlan-int106 | 10.110.6.1/24 |  | Vlan-int109 | 10.110.9.2/24
Switch H | Vlan-int110 | 10.110.10.1/24 | Source 1 | - | 192.168.2.10/24
 | Vlan-int106 | 10.110.6.2/24 | Source 2 | - | 192.168.3.10/24
Switch I | Vlan-int600 | 192.168.6.1/24 | Source 3 | - | 192.168.5.10/24
 | Vlan-int110 | 10.110.10.2/24 |  |  |

3. 配置步骤

(1) 配置IP地址和单播路由协议

请按照图1-16 配置各接口的IP地址和子网掩码，具体配置过程略。

配置PIM-SM域内的各交换机之间采用OSPF协议进行互连，确保PIM-SM域内部在网络层互通，并且各交换机之间能够借助单播路由协议实现动态路由更新，具体配置过程略。

(2) 使能IP组播路由和管理域机制，并使能PIM-SM和IGMP

# 在Switch A上使能IP组播路由和管理域机制，在各接口上使能PIM-SM，并在其连接有接收者的接口Vlan-interface100上使能IGMP。

<SwitchA> system-view

[SwitchA] multicast routing-enable

[SwitchA] pim

[SwitchA-pim] c-bsr admin-scope

[SwitchA-pim] quit

[SwitchA] interface vlan-interface 100

[SwitchA-Vlan-interface100] igmp enable

[SwitchA-Vlan-interface100] pim sm

[SwitchA-Vlan-interface100] quit

[SwitchA] interface vlan-interface 101

[SwitchA-Vlan-interface101] pim sm

[SwitchA-Vlan-interface101] quit

Switch E和Switch I的配置与Switch A相似，配置过程略。

# 在Switch B上使能IP组播路由和管理域机制，并在各接口上使能PIM-SM。

<SwitchB> system-view

[SwitchB] multicast routing-enable

[SwitchB] pim

[SwitchB-pim] c-bsr admin-scope

[SwitchB-pim] quit

[SwitchB] interface vlan-interface 200

[SwitchB-Vlan-interface200] pim sm

[SwitchB-Vlan-interface200] quit

[SwitchB] interface vlan-interface 101

[SwitchB-Vlan-interface101] pim sm

[SwitchB-Vlan-interface101] quit

[SwitchB] interface vlan-interface 102

[SwitchB-Vlan-interface102] pim sm

[SwitchB-Vlan-interface102] quit

[SwitchB] interface vlan-interface 103

[SwitchB-Vlan-interface103] pim sm

[SwitchB-Vlan-interface103] quit

Switch C、Switch D、Switch F、Switch G和Switch H的配置与Switch B相似，配置过程略。

(3) 配置管理域边界

# 在Switch B上将接口Vlan-interface102和Vlan-interface103配置为管理域1的边界。

[SwitchB] interface vlan-interface 102

[SwitchB-Vlan-interface102] multicast boundary 239.0.0.0 8

[SwitchB-Vlan-interface102] quit

[SwitchB] interface vlan-interface 103

[SwitchB-Vlan-interface103] multicast boundary 239.0.0.0 8

[SwitchB-Vlan-interface103] quit

# 在Switch C上将接口Vlan-interface103和Vlan-interface106配置为管理域2的边界。

<SwitchC> system-view

[SwitchC] interface vlan-interface 103

[SwitchC-Vlan-interface103] multicast boundary 239.0.0.0 8

[SwitchC-Vlan-interface103] quit

[SwitchC] interface vlan-interface 106

[SwitchC-Vlan-interface106] multicast boundary 239.0.0.0 8

[SwitchC-Vlan-interface106] quit

# 在Switch D上将接口Vlan-interface107配置为管理域2的边界。

<SwitchD> system-view

[SwitchD] interface vlan-interface 107

[SwitchD-Vlan-interface107] multicast boundary 239.0.0.0 8

[SwitchD-Vlan-interface107] quit

(4) 配置C-BSR和C-RP

# 在Switch B上配置RP通告的服务范围，并将接口Vlan-interface101配置为管理域1的C-BSR和C-RP。

[SwitchB] acl number 2001

[SwitchB-acl-basic-2001] rule permit source 239.0.0.0 0.255.255.255

[SwitchB-acl-basic-2001] quit

[SwitchB] pim

[SwitchB-pim] c-bsr group 239.0.0.0 8

[SwitchB-pim] c-bsr vlan-interface 101

[SwitchB-pim] c-rp vlan-interface 101 group-policy 2001

[SwitchB-pim] quit

# 在Switch D上配置RP通告的服务范围，并将接口Vlan-interface104配置为管理域2的C-BSR和C-RP。

[SwitchD] acl number 2001

[SwitchD-acl-basic-2001] rule permit source 239.0.0.0 0.255.255.255

[SwitchD-acl-basic-2001] quit

[SwitchD] pim

[SwitchD-pim] c-bsr group 239.0.0.0 8

[SwitchD-pim] c-bsr vlan-interface 104

[SwitchD-pim] c-rp vlan-interface 104 group-policy 2001

[SwitchD-pim] quit

# 在Switch F上将接口Vlan-interface109配置为Global域的C-BSR和C-RP。

<SwitchF> system-view

[SwitchF] pim

[SwitchF-pim] c-bsr global

[SwitchF-pim] c-bsr vlan-interface 109

[SwitchF-pim] c-rp vlan-interface 109

[SwitchF-pim] quit

(5) 检验配置效果

通过使用 display pim bsr-info 命令可以查看交换机上BSR选举的信息，以及本地配置并生效的C-RP信息。例如：

# 查看Switch B上的BSR信息，以及本地配置并生效的C-RP信息。

[SwitchB] display pim bsr-info

VPN-Instance: public net

Elected BSR Address: 10.110.9.1

Priority: 64

Hash mask length: 30

State: Accept Preferred

Scope: Global

Uptime: 00:01:45

Expires: 00:01:25

Elected BSR Address: 10.110.1.2

Priority: 64

Hash mask length: 30

State: Elected

Scope: 239.0.0.0/8

Uptime: 00:04:54

Next BSR message scheduled at: 00:00:06

Candidate BSR Address: 10.110.1.2

Priority: 64

Hash mask length: 30

State: Elected

Scope: 239.0.0.0/8

Candidate RP: 10.110.1.2(Vlan-interface101)

Priority: 192

HoldTime: 150

Advertisement Interval: 60

Next advertisement scheduled at: 00:00:15

# 查看Switch D上的BSR信息，以及本地配置并生效的C-RP信息。

[SwitchD] display pim bsr-info

VPN-Instance: public net

Elected BSR Address: 10.110.9.1

Priority: 64

Hash mask length: 30

State: Accept Preferred

Scope: Global

Uptime: 00:01:45

Expires: 00:01:25

Elected BSR Address: 10.110.4.2

Priority: 64

Hash mask length: 30

State: Elected

Scope: 239.0.0.0/8

Uptime: 00:03:48

Next BSR message scheduled at: 00:01:12

Candidate BSR Address: 10.110.4.2

Priority: 64

Hash mask length: 30

State: Elected

Scope: 239.0.0.0/8

Candidate RP: 10.110.4.2(Vlan-interface104)

Priority: 192

HoldTime: 150

Advertisement Interval: 60

Next advertisement scheduled at: 00:00:10

# 查看Switch F上的BSR信息，以及本地配置并生效的C-RP信息。

[SwitchF] display pim bsr-info

VPN-Instance: public net

Elected BSR Address: 10.110.9.1

Priority: 64

Hash mask length: 30

State: Elected

Scope: Global

Uptime: 00:11:11

Next BSR message scheduled at: 00:00:49

Candidate BSR Address: 10.110.9.1

Priority: 64

Hash mask length: 30

State: Elected

Scope: Global

Candidate RP: 10.110.9.1(Vlan-interface109)

Priority: 192

HoldTime: 150

Advertisement Interval: 60

Next advertisement scheduled at: 00:00:55

通过使用 display pim rp-info 命令可以查看交换机上获取的RP信息。例如：

# 查看Switch B上的RP信息。

[SwitchB] display pim rp-info

VPN-Instance: public net

PIM-SM BSR RP information:

Group/MaskLen: 224.0.0.0/4

RP: 10.110.9.1

Priority: 192

HoldTime: 150

Uptime: 00:03:39

Expires: 00:01:51

Group/MaskLen: 239.0.0.0/8

RP: 10.110.1.2 (local)

Priority: 192

HoldTime: 150

Uptime: 00:07:44

Expires: 00:01:51

# 查看Switch D上的RP信息。

[SwitchD] display pim rp-info

VPN-Instance: public net

PIM-SM BSR RP information:

Group/MaskLen: 224.0.0.0/4

RP: 10.110.9.1

Priority: 192

HoldTime: 150

Uptime: 00:03:42

Expires: 00:01:48

Group/MaskLen: 239.0.0.0/8

RP: 10.110.4.2 (local)

Priority: 192

HoldTime: 150

Uptime: 00:06:54

Expires: 00:02:41

# 查看Switch F上的RP信息。

[SwitchF] display pim rp-info

VPN-Instance: public net

PIM-SM BSR RP information:

Group/MaskLen: 224.0.0.0/4

RP: 10.110.9.1 (local)

Priority: 192

HoldTime: 150

Uptime: 00:00:32

Expires: 00:01:58

1.8.4 双向PIM典型配置举例

1. 组网需求

l 整个PIM域采用BIDIR方式，Source 1和Source 2都向组播组225.1.1.1发送组播信息，Host A和Host B为组播信息的接收者。

l 将Switch C的Vlan-interface102接口配置为C-BSR，Loopback0接口配置为服务于双向PIM的C-RP。

l Switch B和Switch D分别与各自所连接的接收者之间运行IGMPv2。

2. 组网图

图1-17 双向PIM典型配置组网图

设备 | 接口 | IP地址 | 设备 | 接口 | IP地址
Switch A | Vlan-int100 | 192.168.1.1/24 | Switch D | Vlan-int300 | 192.168.3.1/24
 | Vlan-int101 | 10.110.1.1/24 |  | Vlan-int400 | 192.168.4.1/24
Switch B | Vlan-int200 | 192.168.2.1/24 |  | Vlan-int103 | 10.110.3.2/24
 | Vlan-int101 | 10.110.1.2/24 | Source 1 | - | 192.168.1.100/24
 | Vlan-int102 | 10.110.2.1/24 | Source 2 | - | 192.168.4.100/24
Switch C | Vlan-int102 | 10.110.2.2/24 | Receiver 1 | - | 192.168.2.100/24
 | Vlan-int103 | 10.110.3.1/24 | Receiver 2 | - | 192.168.3.100/24
 | Loop0 | 1.1.1.1/32 |  |  |

3. 配置步骤

(1) 配置IP地址和单播路由协议

请按照图1-17 配置各接口的IP地址和子网掩码，具体配置过程略。

配置双向PIM域内的各交换机之间采用OSPF协议进行互连，确保双向PIM域内部在网络层互通，并且各交换机之间能够借助单播路由协议实现动态路由更新，具体配置过程略。

(2) 使能IP组播路由，并使能PIM-SM、双向PIM和IGMP

# 在Switch A上使能IP组播路由，在各接口上使能PIM-SM，并使能双向PIM。

<SwitchA> system-view

[SwitchA] multicast routing-enable

[SwitchA] interface vlan-interface 100

[SwitchA-Vlan-interface100] pim sm

[SwitchA-Vlan-interface100] quit

[SwitchA] interface vlan-interface 101

[SwitchA-Vlan-interface101] pim sm

[SwitchA-Vlan-interface101] quit

[SwitchA] pim

[SwitchA-pim] bidir-pim enable

[SwitchA-pim] quit

# 在Switch B上使能IP组播路由，在各接口上使能PIM-SM，在其连接有接收者的接口Vlan-interface200上使能IGMP，并使能双向PIM。

<SwitchB> system-view

[SwitchB] multicast routing-enable

[SwitchB] interface vlan-interface 200

[SwitchB-Vlan-interface200] igmp enable

[SwitchB-Vlan-interface200] pim sm

[SwitchB-Vlan-interface200] quit

[SwitchB] interface vlan-interface 101

[SwitchB-Vlan-interface101] pim sm

[SwitchB-Vlan-interface101] quit

[SwitchB] interface vlan-interface 102

[SwitchB-Vlan-interface102] pim sm

[SwitchB-Vlan-interface102] quit

[SwitchB] pim

[SwitchB-pim] bidir-pim enable

[SwitchB-pim] quit

# 在Switch C上使能IP组播路由，在各接口上使能PIM-SM，并使能双向PIM。

<SwitchC> system-view

[SwitchC] multicast routing-enable

[SwitchC] interface vlan-interface 102

[SwitchC-Vlan-interface102] pim sm

[SwitchC-Vlan-interface102] quit

[SwitchC] interface vlan-interface 103

[SwitchC-Vlan-interface103] pim sm

[SwitchC-Vlan-interface103] quit

[SwitchC] interface loopback 0

[SwitchC-LoopBack0] pim sm

[SwitchC-LoopBack0] quit

[SwitchC] pim

[SwitchC-pim] bidir-pim enable

# 在Switch D上使能IP组播路由，在各接口上使能PIM-SM，在其连接有接收者的接口Vlan-interface300上使能IGMP，并使能双向PIM。

<SwitchD> system-view

[SwitchD] multicast routing-enable

[SwitchD] interface vlan-interface 300

[SwitchD-Vlan-interface300] igmp enable

[SwitchD-Vlan-interface300] pim sm

[SwitchD-Vlan-interface300] quit

[SwitchD] interface vlan-interface 400

[SwitchD-Vlan-interface400] pim sm

[SwitchD-Vlan-interface400] quit

[SwitchD] interface vlan-interface 103

[SwitchD-Vlan-interface103] pim sm

[SwitchD-Vlan-interface103] quit

[SwitchD] pim

[SwitchD-pim] bidir-pim enable

[SwitchD-pim] quit

(3) 配置C-BSR和C-RP

# 在Switch C上将接口Vlan-interface102配置为C-BSR，并将接口Loopback0配置为服务于双向PIM的C-RP。

[SwitchC-pim] c-bsr vlan-interface 102

[SwitchC-pim] c-rp loopback 0 bidir

[SwitchC-pim] quit

(4) 检验配置效果

通过使用 display pim df-info 命令可以查看交换机上双向PIM的DF信息。例如：

# 查看Switch A上双向PIM的DF信息。

[SwitchA] display pim df-info

VPN-Instance: public net

RP Address: 1.1.1.1

Interface State DF-Pref DF-Metric DF-Uptime DF-Address

Vlan100 Win 100 2 01:08:50 192.168.1.1 (local)

Vlan101 Lose 100 1 01:07:49 10.110.1.2

# 查看Switch B上双向PIM的DF信息。

[SwitchB] display pim df-info

VPN-Instance: public net

RP Address: 1.1.1.1

Interface State DF-Pref DF-Metric DF-Uptime DF-Address

Vlan200 Win 100 1 01:24:09 192.168.2.1 (local)

Vlan101 Win 100 1 01:24:09 10.110.1.2 (local)

Vlan102 Lose 0 0 01:23:12 10.110.2.2

# 查看Switch C上双向PIM的DF信息。

[SwitchC] display pim df-info

VPN-Instance: public net

RP Address: 1.1.1.1

Interface State DF-Pref DF-Metric DF-Uptime DF-Address

Loop0 - - - - -

Vlan102 Win 0 0 01:06:07 10.110.2.2 (local)

Vlan103 Win 0 0 01:06:07 10.110.3.1 (local)

# 查看Switch D上双向PIM的DF信息。

[SwitchD] display pim df-info

VPN-Instance: public net

RP Address: 1.1.1.1

Interface State DF-Pref DF-Metric DF-Uptime DF-Address

Vlan300 Win 100 1 01:19:53 192.168.3.1 (local)

Vlan400 Win 100 1 00:39:34 192.168.4.1 (local)

Vlan103 Lose 0 0 01:21:40 10.110.3.1

通过使用 display multicast forwarding-table df-info 命令可以查看交换机上组播转发表的DF信息，有关 display multicast forwarding-table df-info 命令的详细介绍，请参见“IP组播命令参考”中的“组播路由与转发”。例如：

# 查看Switch A上组播转发表的DF信息。

[SwitchA] display multicast forwarding-table df-info

Multicast DF information of VPN-Instance: public net

Total 1 RP

Total 1 RP matched

00001. RP Address: 1.1.1.1

MID: 0, Flags: 0x2100000:0

Uptime: 00:08:32

RPF interface: Vlan-interface101

List of 1 DF interfaces:

1: Vlan-interface100

# 查看Switch B上组播转发表的DF信息。

[SwitchB] display multicast forwarding-table df-info

Multicast DF information of VPN-Instance: public net

Total 1 RP

Total 1 RP matched

00001. RP Address: 1.1.1.1

MID: 0, Flags: 0x2100000:0

Uptime: 00:06:24

RPF interface: Vlan-interface102

List of 2 DF interfaces:

1: Vlan-interface101

2: Vlan-interface200

# 查看Switch C上组播转发表的DF信息。

[SwitchC] display multicast forwarding-table df-info

Multicast DF information of VPN-Instance: public net

Total 1 RP

Total 1 RP matched

00001. RP Address: 1.1.1.1

MID: 0, Flags: 0x2100000:0

Uptime: 00:07:21

RPF interface: LoopBack0

List of 2 DF interfaces:

1: Vlan-interface102

2: Vlan-interface103

# 查看Switch D上组播转发表的DF信息。

[SwitchD] display multicast forwarding-table df-info

Multicast DF information of VPN-Instance: public net

Total 1 RP

Total 1 RP matched

00001. RP Address: 1.1.1.1

MID: 0, Flags: 0x2100000:0

Uptime: 00:05:12

RPF interface: Vlan-interface103

List of 2 DF interfaces:

1: Vlan-interface300

2: Vlan-interface400

1.8.5 PIM-SSM典型配置举例

1. 组网需求

l 接收者通过组播方式接收视频点播信息，不同组织的接收者群体组成末梢网络，每个末梢网络中都存在至少一个接收者，整个PIM域采用SSM方式。

l Host A和Host C为两个末梢网络中的组播信息接收者；Switch D通过Vlan-interface300接口与组播源（Source）所在网络连接；Switch A通过Vlan-interface100接口连接末梢网络N1，通过Vlan-interface101接口和Vlan-interface102接口分别连接Switch D和Switch E；Switch B和Switch C通过各自的Vlan-interface200接口连接末梢网络N2，分别通过Vlan-interface103和Vlan-interface104接口连接Switch E；Switch E连接Switch A、Switch B、Switch C和Switch D。

l SSM组播组的范围是232.1.1.0/24。

l Switch A与末梢网络N1之间运行IGMPv3；Switch B和Switch C与末梢网络N2之间也运行IGMPv3。

2. 组网图

图1-18 PIM-SSM典型配置组网图

设备 | 接口 | IP地址 | 设备 | 接口 | IP地址
Switch A | Vlan-int100 | 10.110.1.1/24 | Switch D | Vlan-int300 | 10.110.5.1/24
 | Vlan-int101 | 192.168.1.1/24 |  | Vlan-int101 | 192.168.1.2/24
 | Vlan-int102 | 192.168.9.1/24 |  | Vlan-int105 | 192.168.4.2/24
Switch B | Vlan-int200 | 10.110.2.1/24 | Switch E | Vlan-int104 | 192.168.3.2/24
 | Vlan-int103 | 192.168.2.1/24 |  | Vlan-int103 | 192.168.2.2/24
Switch C | Vlan-int200 | 10.110.2.2/24 |  | Vlan-int102 | 192.168.9.2/24
 | Vlan-int104 | 192.168.3.1/24 |  | Vlan-int105 | 192.168.4.1/24

3. 配置步骤

(1) 配置IP地址和单播路由协议

请按照图1-18 配置各接口的IP地址和子网掩码，具体配置过程略。

配置PIM-SSM域内的各交换机之间采用OSPF协议进行互连，确保PIM-SSM域内部在网络层互通，并且各交换机之间能够借助单播路由协议实现动态路由更新，具体配置过程略。

(2) 使能IP组播路由，并使能PIM-SM和IGMP

# 在Switch A上使能IP组播路由，在各接口上使能PIM-SM，并在其连接末梢网络的接口Vlan-interface100上使能IGMP，且配置其版本为3。

<SwitchA> system-view

[SwitchA] multicast routing-enable

[SwitchA] interface vlan-interface 100

[SwitchA-Vlan-interface100] igmp enable

[SwitchA-Vlan-interface100] igmp version 3

[SwitchA-Vlan-interface100] pim sm

[SwitchA-Vlan-interface100] quit

[SwitchA] interface vlan-interface 101

[SwitchA-Vlan-interface101] pim sm

[SwitchA-Vlan-interface101] quit

[SwitchA] interface vlan-interface 102

[SwitchA-Vlan-interface102] pim sm

[SwitchA-Vlan-interface102] quit

Switch B和Switch C的配置与Switch A相似，Switch D和Switch E除了不需要在相应接口上使能IGMP外，其它的配置也与Switch A相似，配置过程略。

(3) 配置SSM组播组的地址范围

# 在Switch A上配置SSM组播组地址范围为232.1.1.0/24。

[SwitchA] acl number 2000

[SwitchA-acl-basic-2000] rule permit source 232.1.1.0 0.0.0.255

[SwitchA-acl-basic-2000] quit

[SwitchA] pim

[SwitchA-pim] ssm-policy 2000

[SwitchA-pim] quit

Switch B、Switch C、Switch D和Switch E的配置与Switch A相似，配置过程略。

(4) 检验配置效果

通过使用 display pim interface 命令可以查看交换机接口上PIM的配置和运行情况。例如：

# 查看Switch A上PIM的配置信息。

[SwitchA] display pim interface

VPN-Instance: public net

Interface NbrCnt HelloInt DR-Pri DR-Address

Vlan100 0 30 1 10.110.1.1 (local)

Vlan101 1 30 1 192.168.1.2

Vlan102 1 30 1 192.168.9.2

假如Host A需要接收指定组播源S（10.110.5.100/24）发往组播组G（232.1.1.1）的信息，Switch A会向组播源方向构造SPT，SPT路径中的交换机（Switch A和Switch D）上生成（S，G）表项，而SPT路径之外的交换机（Switch E）上没有组播路由项，通过使用 display pim routing-table 命令可以查看交换机的PIM路由表信息。例如：

# 查看Switch A上的PIM路由表信息。

[SwitchA] display pim routing-table

VPN-Instance: public net

Total 0 (*, G) entry; 1 (S, G) entry

(10.110.5.100, 232.1.1.1)

Protocol: pim-ssm, Flag:

UpTime: 00:13:25

Upstream interface: Vlan-interface101

Upstream neighbor: 192.168.1.2

RPF prime neighbor: 192.168.1.2

Downstream interface(s) information:

Total number of downstreams: 1

1: Vlan-interface100

Protocol: igmp, UpTime: 00:13:25, Expires: 00:03:25

# 查看Switch D上的PIM路由表信息。

[SwitchD] display pim routing-table

VPN-Instance: public net

Total 0 (*, G) entry; 1 (S, G) entry

(10.110.5.100, 232.1.1.1)

Protocol: pim-ssm, Flag: LOC

UpTime: 00:12:05

Upstream interface: Vlan-interface300

Upstream neighbor: NULL

RPF prime neighbor: NULL

Downstream interface(s) information:

Total number of downstreams: 1

1: Vlan-interface105

Protocol: pim-ssm, UpTime: 00:12:05, Expires: 00:03:25


1.9 常见配置错误举例

1.9.1 无法正确建立组播分发树

1. 故障现象

网络中各路由器（包括直连组播源或接收者的路由器）上都没有组播转发项，也就是说无法正确建立组播分发树，客户端无法接收组播数据。

2. 分析

l 当全网运行PIM-DM时，组播数据由直连组播源的第一跳路由器扩散到直连客户端的最后一跳路由器。无论组播数据扩散到哪一台路由器，只有该路由器存在到达组播源的路由，才会创建（S，G）表项。反之，如果没有到达组播源的路由或者到达组播源的RPF接口没有使能PIM-DM，则该路由器无法创建（S，G）表项。

l 当全网运行PIM-SM时，路由器在准备加入SPT时，只有存在到达组播源的路由，才会创建（S，G）表项。反之，如果没有到达组播源的路由或者到达组播源的RPF接口没有使能PIM-SM，则该路由器无法创建（S，G）表项。

l 对于某个RPF检查对象，在现存的单播路由表中查找到达该对象的最优路由，该路由的出接口作为RPF接口，下一跳作为RPF邻居。RPF接口完全依赖于现存的单播路由，并且与PIM本身无关。RPF接口必须使能PIM，而且RPF邻居也必须是PIM邻居。如果RPF接口或RPF邻居所在路由器上没有使能PIM，必然导致组播分发树无法正确建立，导致组播数据转发异常。

l Hello报文并不携带PIM的模式信息，所以运行PIM的路由器无法掌握自己的PIM邻居运行的是何种模式的PIM。如果RPF接口和RPF邻居所在路由器的对应接口没有使能相同模式的PIM，必然导致组播分发树无法正确建立，导致组播数据转发异常。

l 全网必须运行相同模式的PIM。否则，组播分发树必然无法正确建立，导致组播数据转发异常。

3. 处理过程

(1) 检查单播路由。使用命令 display ip routing-table 检查从接收者主机是否有到达组播源的单播路由项。

(2) 检查接口上是否使能PIM，尤其是RPF接口上是否使能PIM。通过命令 display pim interface 观察接口上的PIM信息。若接口上没有使能PIM，请使用 pim dm 或 pim sm 命令使能PIM-DM或者PIM-SM。

(3) 检查RPF邻居是否是PIM邻居。通过命令 display pim neighbor 观察PIM邻居信息。

(4) 检查直连组播源或接收者的路由器接口上是否使能了PIM和IGMP。

(5) 检查PIM模式是否一致。通过命令 display pim interface verbose 检查RPF接口和RPF邻居所在路由器的对应接口上是否使能了相同模式的PIM。

(6) 检查全部网络中各路由器上的PIM模式是否一致。确保全网所有路由器配置相同模式的PIM，即要么全部配置为PIM-SM，要么全部配置为PIM-DM。如果配置为PIM-SM，则还需要检查BSR以及RP的配置是否正确。

1.9.2 组播数据异常终止在中间路由器

1. 故障现象

组播数据可以到达中间路由器，但无法到达最后一跳路由器。中间路由器某接口上收到组播数据，但PIM路由表中没有创建相应的（S，G）表项。

2. 分析

l 命令 multicast boundary 用于在接口上设置组播转发边界，如果组播数据无法通过该边界，PIM是无法创建路由项的。

l 此外，source-policy 命令用于过滤接收到的组播数据报文。如果组播数据报文无法通过该命令的ACL规则，PIM也是无法创建路由项的。

3. 处理过程

(1) 检查组播转发边界的配置。通过命令 display current-configuration 查看组播转发边界上的设置，使用 multicast boundary 命令更改组播转发边界的设置，使组播数据能够通过该边界。

(2) 检查组播过滤器配置。通过命令 display current-configuration 查看组播过滤器的配置，更改 source-policy 命令的ACL规则，使组播数据的源/组地址通过ACL过滤。

1.9.3 PIM-SM中RP无法加入SPT

1. 故障现象

共享树无法正确建立，或者RP无法加入到达组播源的最短路径树。

2. 分析

l RP是PIM-SM的核心，为特定的组服务。网络中可以同时存在多个RP。必须保证所有路由器的RP信息完全一致，并且对于某个特定的组映射到相同的RP。否则必然导致组播数据转发异常。

l 如果使用静态RP机制，必须在全网所有路由器上配置完全相同的静态RP命令。否则必然导致组播数据转发异常。

3. 处理过程

(1) 检查是否有到达RP的路由。通过命令 display ip routing-table 查看各路由器上是否有到达RP的路由。

(2) 检查动态RP信息。通过命令 display pim rp-info 查看各路由器上的RP信息是否一致。

(3) 检查静态RP的配置。通过命令 display pim rp-info 查看全网所有路由器上是否配置了完全相同的静态RP。

1.9.4 PIM-SM中无法建立RPT或无法进行源注册

1. 故障现象

C-RP无法向BSR单播通告报文，BSR没有发布包含C-RP的自举报文，BSR上没有到达各C-RP的单播路由，共享树无法正确建立，或者DR无法向RP进行源注册。

2. 分析

l 由于C-RP周期性地向BSR单播宣告报文，如果C-RP没有到达BSR的单播路由就无法发送宣告报文，BSR就收不到C-RP宣告报文，也就不会发布包含该C-RP的自举报文。

l 另外，如果BSR没有到达C-RP的单播路由，就会丢弃该宣告报文，也就不会发布包含该C-RP的自举报文。

l RP是PIM-SM域的核心。必须保证全网所有路由器的RP信息完全一致，并且对于某个特定的组G映射到相同的RP，并且存在到达RP的单播路由。

3. 处理过程

(1) 检查是否有到达各C-RP、BSR的路由。通过命令 display ip routing-table 查看各路由器上是否有到达RP和BSR的路由，及RP和BSR之间的路由。确保C-RP上存在到达BSR的单播路由，BSR上存在到达C-RP的单播路由，全网络所有路由器上存在到达RP的单播路由。

(2) 检查RP和BSR信息。PIM-SM协议需要有RP和BSR的支持，首先使用命令 display pim bsr-info 查看是否有BSR信息，使用 display pim rp-info 命令查看RP信息是否正确。

(3) 检查PIM邻居关系。通过命令 display pim neighbor 来查看是否正确建立了邻居关系。


1 MSDP配置

l S3600V2-SI系列交换机不支持MSDP功能。

l 本文所指的路由器代表运行了路由协议的三层设备。

l 本文中所提到的DR（Designated Router，指定路由器）、BSR（BootStrap Router，自举路由器）、C-BSR（Candidate-BSR，候选BSR）、RP（Rendezvous Point，汇集点）、C-RP（Candidate-RP，候选RP）、SPT（Shortest Path Tree，最短路径树）和RPT（Rendezvous Point Tree，共享树）等概念的详细介绍，请参见“IP组播配置指导”中的“PIM”。

l MSDP功能中所指的“接口”为三层口，包括VLAN接口、三层以太网端口等。三层以太网端口是指被配置为三层模式的以太网端口，有关以太网端口模式切换的操作，请参见“二层技术-以太网交换配置指导”中的“以太网端口配置”。

相关链接

  • 1.1 MSDP简介
  • 1.2 MSDP配置任务简介
  • 1.3 配置MSDP基本功能
  • 1.4 配置MSDP对等体连接
  • 1.5 配置SA消息
  • 1.6 MSDP显示和维护
  • 1.7 MSDP典型配置举例
  • 1.8 常见配置错误举例
父主题： 08-MSDP配置


1.1 MSDP简介

1.1.1 MSDP概述

MSDP是Multicast Source Discovery Protocol（组播源发现协议）的简称，是为了解决多个PIM-SM（Protocol Independent Multicast Sparse Mode，协议无关组播—稀疏模式）域之间的互连而开发的一种域间组播解决方案，用来发现其它PIM-SM域内的组播源信息。

在基本的PIM-SM模式下，组播源只向本PIM-SM域内的RP注册，且各域的组播源信息是相互隔离的，因此RP仅知道本域内的组播源信息，只能在本域内建立组播分发树，将本域内组播源发出的组播数据分发给本地用户。如果能够有一种机制，将其它域内的组播源信息传递给本域内的RP，则本域内的RP就可以向其它域内的组播源发起加入过程并建立组播分发树，从而实现组播数据的跨域传输。

基于这一设想，MSDP通过在网络中选取适当的路由器建立MSDP对等体关系，以连通各PIM-SM域的RP。通过在各MSDP对等体之间交互SA（Source Active，信源有效）消息来共享组播源信息。

l MSDP的适用前提：域内组播路由协议必须是PIM-SM。

l MSDP仅对ASM（Any-Source Multicast，任意信源组播）模型有意义。

1.1.2 MSDP原理

1. MSDP对等体

通过在网络中配置一对或多对MSDP对等体，形成彼此相连的一张“MSDP连通图”，以连通各个PIM-SM域的RP。通过这些MSDP对等体之间的接力，可以把某RP发出的SA消息传递给其它所有的RP。

图1-1 MSDP对等体的位置

如图1-1 所示，MSDP对等体可以创建在任意的PIM-SM路由器上，在不同角色的PIM-SM路由器上所创建的MSDP对等体的功能有所不同：

(1) 在RP上创建的MSDP对等体

l 源端MSDP对等体：即离组播源（Source）最近的MSDP对等体（通常也就是源端RP，如RP 1）。源端RP创建SA消息并发送给远端MSDP对等体，通告在本RP上注册的组播源信息。源端MSDP对等体必须配置在RP上，否则将无法向外发布组播源信息。

l 接收者端MSDP对等体：即离接收者（Receiver）最近的MSDP对等体（如RP 3）。接收者端MSDP对等体在收到SA消息后，根据该消息中所包含的组播源信息，跨域加入以该组播源为根的SPT；当来自该组播源的组播数据到达后，再沿RPT向本地接收者转发。

l 中间MSDP对等体：即拥有多个远端MSDP对等体的MSDP对等体（如RP 2）。中间MSDP对等体把从一个远端MSDP对等体收到的SA消息转发给其它远端MSDP对等体，其作用相当于传输组播源信息的中转站。

(2) 在普通的PIM-SM路由器（非RP）上创建的MSDP对等体

如Router A和Router B，其作用仅限于将收到的SA消息转发出去。

对于通过BSR机制动态选举RP的PIM-SM网络来说，RP是由C-RP选举产生的。为了增强其网络的健壮性，一个PIM-SM域内往往存在不止一个C-RP。由于无法预计RP选举的结果，为了保证选举获胜的C-RP能始终位于“MSDP连通图”上，需要在所有的C-RP之间建立MSDP对等体关系。而选举落败的C-RP在“MSDP连通图”上所担当的角色相当于普通的PIM-SM路由器。

2. MSDP实现域间组播

如图1-2 所示，PIM-SM 1域内存在激活的组播源（Source），RP 1通过组播源注册过程了解到了该组播源的存在。如果PIM-SM 2和PIM-SM 3域也希望知道该组播源的具体位置，进而能够从该组播源获取组播数据，则需要在RP 1与RP 3、RP 2与RP 3之间分别建立MSDP对等体关系。

图1-2 MSDP实现域间组播示意图

借助MSDP对等体进行PIM-SM域间组播的工作过程如下：

(1) 当PIM-SM 1域内的组播源向组播组G发送第一个组播数据包时，DR 1将该组播数据封装在注册消息（Register Message）中，并发给RP 1。RP 1因此获知了该组播源的相关信息。

(2) RP 1作为源端RP，创建SA消息，并周期性地向其它MSDP对等体发送。SA消息中包含组播源的地址S、组播组的地址G以及创建该SA消息的源端RP（即RP 1）的地址。

(3) MSDP对等体对收到的SA消息进行RPF（Reverse Path Forwarding，逆向路径转发）检查，以及各种转发策略的过滤，从而只接受和转发来自正确路径并通过过滤的SA消息，以避免SA消息传递环路；另外，可以在MSDP对等体之间配置MSDP全连接组（Mesh Group），以避免SA消息在MSDP对等体之间的泛滥。

(4) SA消息在MSDP对等体之间转发，最终该组播源的相关信息将传遍所有建立了MSDP对等体关系的PIM-SM域（即PIM-SM 2和PIM-SM 3）。

(5) PIM-SM 2中的RP 2在收到该SA消息后，检查本域内是否有组播组G的接收者（Receiver）存在：

l 如果有接收者，RP 2与接收者之间维护组播组G的RPT。RP 2创建（S，G）表项，向源端的DR 1逐跳发送（S，G）加入消息（Join Message），从而跨越各PIM-SM域直接加入以该组播源为根的SPT。组播数据沿SPT到达RP 2后，再沿RPT向接收者转发。当接收者端的DR 2收到来自组播源的组播数据后，可以自行决定是否发起从RPT向SPT的切换；

l 如果没有接收者，RP 2不会创建（S，G）表项，也不加入以该组播源为根的SPT。

l MSDP全连接组：要求所有组成员之间两两建立MSDP对等体关系，且所有组成员均使用相同的组名称。

l 在使用MSDP进行域间组播时，RP在收到组播源的信息后就不再需要依赖其它PIM-SM域内的RP，此时接收者可以跨越各PIM-SM域内的RP，而直接加入基于组播源的SPT。

3. SA消息的RPF检查规则

如图1-3 所示，网络中有五个自治系统AS 1～AS 5，AS内部使用IGP互联，AS之间使用BGP或MBGP互联。每个AS中包含至少一个PIM-SM域，且每个PIM-SM域中包含至少一个RP。各RP之间建立起MSDP对等体关系，其中RP 3、RP 4和RP 5之间建立MSDP全连接组，并在RP 7上将RP 6配置为其静态RPF对等体。

设备对于来自静态RPF对等体的SA消息不进行RPF检查，直接接受并向其它对等体转发。

图1-3 SA消息的RPF检查规则

对照图1-3，这些MSDP对等体将按照如下RPF检查规则处理收到的SA消息：

(1) 当RP 2收到RP 1发来的SA消息时：由于SA消息中所携带的源端RP的地址与MSDP对等体的地址相同，说明发出SA消息的MSDP对等体就是创建该SA消息的RP，于是RP 2接受该SA消息并向其它对等体（RP 3）转发。

(2) 当RP 3收到RP 2发来的SA消息时：由于SA消息来自同一个AS的MSDP对等体（RP 2），且该对等体是到源端RP最佳路径上的下一跳，于是RP 3接受该SA消息并向其它对等体（RP 4和RP 5）转发。

(3) 当RP 4和RP 5分别收到RP 3发来的SA消息时：由于SA消息来自同一个全连接组的MSDP对等体（RP 3），于是RP 4和RP 5均接受该SA消息并不再向本组其它成员转发，而只向本组之外的其它MSDP对等体（RP 6）转发。

(4) 当RP 6收到RP 4和RP 5（假设RP 5的IP地址较大）发来的SA消息时：尽管同处AS 3的RP 4和RP 5都与RP 6建立了MSDP对等体关系，但RP 6只接受IP地址较高的MSDP对等体（RP 5）发来的SA消息。

(5) 当RP 7收到RP 6发来的SA消息时：由于SA消息来自其静态RPF对等体（RP 6），于是RP 7接受该SA消息并向其它对等体（RP 8）转发。

(6) 当RP 8收到RP 7发来的SA消息时：属于不同AS的MSDP对等体之间存在BGP或MBGP路由。由于SA消息来自不同AS的MSDP对等体（RP 7），且该对等体是到源端RP的BGP或MBGP路由的下一跳，于是RP 8接受该SA消息并向其它对等体（RP 9）转发。

(7) 当RP 9收到RP 8发来的SA消息时：由于只有一个MSDP对等体（RP 8），于是RP 9接受该SA消息。

对于由其它路径到来的SA消息，MSDP对等体将不接受也不转发。

4. MSDP实现域内Anycast RP

Anycast RP（任播RP）是指在同一个PIM-SM域内设置两个或多个具有相同地址的RP，并在这些RP之间建立MSDP对等体关系，以实现域内各RP之间的负载分担和冗余备份。

如图1-4 所示，在一个PIM-SM域内，组播源（Source）向组播组G发送组播数据，接收者（Receiver）是组播组G的成员。分别在Router A和Router B上配置相同的IP地址（称为Anycast RP地址，通常使用私有地址），同时将这些接口配置为C-RP，并在Router A和Router B之间建立MSDP对等体关系。

通常在设备的逻辑接口（如Loopback接口）上配置Anycast RP地址。

图1-4 MSDP实现域内Anycast RP示意图

Anycast RP的工作过程如下：

(1) 组播源选择距离最近的RP进行注册。如：Source向RP 1注册，注册消息中封装有Source发出的组播数据。当该注册消息到达RP 1后，进行解封装。

(2) 接收者向距离最近的RP发送加入消息，加入以该RP为根的RPT。如：Receiver加入以RP 2为根的RPT。

(3) RP之间通过发送SA消息，共享注册的组播源信息。如：RP 1创建一个SA消息，发送给RP 2，该SA消息中封装有Source发出的组播数据。当该SA消息到达RP 2后，进行解封装。

(4) 接收者沿RPT收到组播数据后，直接加入以该组播源为根的SPT。如：RP 2沿RPT将组播数据向下转发。当Receiver收到来自Source的组播数据后，直接加入以Source为根的SPT。

Anycast RP的意义如下：

l RP路径最优：组播源向距离最近的RP进行注册，建立路径最优的SPT；接收者向距离最近的RP发起加入，建立路径最优的RPT。

l RP间的负载分担：每个RP上只需维护PIM-SM域内的部分源/组信息、转发部分的组播数据，从而实现了RP间的负载分担。

l RP间的冗余备份：当某RP失效后，原先在该RP上注册或加入的组播源或接收者会自动选择就近的RP进行注册或加入操作，从而实现了RP间的冗余备份。

l 必须为Anycast RP地址配置32位的子网掩码（即255.255.255.255），也即将其配置为一个主机地址。

l MSDP对等体的地址不能与Anycast RP地址相同。

1.1.3 多实例的MSDP

属于同一实例的组播路由器各接口之间可以建立MSDP对等体。通过在MSDP对等体之间交互SA消息，可以实现跨域的VPN组播。

应用多实例的组播路由器，为其所支持的每一个实例都独立维护了一套MSDP机制，包括：SA缓存、对等体连接、定时器、发送缓存和PIM交互的缓冲区。同时，保证不同实例之间信息隔离。所以，只有属于同一实例的MSDP和PIM-SM信息才可以交互。

1.1.4 协议规范

与MSDP相关的协议规范有：

l RFC 3618：Multicast Source Discovery Protocol (MSDP)

l RFC 3446：Anycast Rendevous Point (RP) mechanism using Protocol Independent Multicast (PIM) and Multicast Source Discovery Protocol (MSDP)


1.2 MSDP配置任务简介

表1-1 MSDP配置任务简介

配置任务 |  | 说明 | 详细配置
配置MSDP基本功能 | 使能MSDP | 必选 | 1.3.2
 | 创建MSDP对等体连接 | 必选 | 1.3.3
 | 配置静态RPF对等体 | 可选 | 1.3.4
配置MSDP对等体连接 | 配置MSDP对等体描述信息 | 可选 | 1.4.2
 | 配置MSDP全连接组 | 可选 | 1.4.3
 | 配置MSDP对等体连接控制 | 可选 | 1.4.4
配置SA消息 | 配置SA消息内容 | 可选 | 1.5.2
 | 配置SA请求消息 | 可选 | 1.5.3
 | 配置SA消息过滤规则 | 可选 | 1.5.4
 | 配置SA消息缓存 | 可选 | 1.5.5


1.3 配置MSDP基本功能

本节的所有配置都是在PIM-SM域内的RP上进行的，这些RP将成为MSDP对等体的一端。

1.3.1 配置准备

在配置MSDP基本功能之前，需完成以下任务：

l 配置任一单播路由协议，实现域内网络层互通

l 配置PIM-SM，实现域内组播

在配置MSDP基本功能之前，需准备以下数据：

l MSDP对等体的IP地址

l 表示RP地址过滤策略的地址前缀列表

1.3.2 使能MSDP

在配置MSDP各功能之前，必须先使能MSDP。

1. 使能公网实例中的MSDP

表1-2 使能公网实例中的MSDP

操作 | 命令 | 说明
进入系统视图 | system-view | -
使能IP组播路由 | multicast routing-enable | 必选 缺省情况下，IP组播路由处于关闭状态
使能MSDP，并进入公网实例MSDP视图 | msdp | 必选 缺省情况下，MSDP处于关闭状态

2. 使能VPN实例中的MSDP

表1-3 使能VPN实例中的MSDP

操作 | 命令 | 说明
进入系统视图 | system-view | -
创建VPN实例，并进入VPN实例视图 | ip vpn-instance vpn-instance-name | -
配置VPN实例的RD | route-distinguisher route-distinguisher | 必选 缺省情况下，VPN实例没有RD
使能IP组播路由 | multicast routing-enable | 必选 缺省情况下，IP组播路由处于关闭状态
退回系统视图 | quit | -
使能MSDP，并进入VPN实例MSDP视图 | msdp vpn-instance vpn-instance-name | 必选 缺省情况下，MSDP处于关闭状态

l 有关 ip vpn-instance 和 route-distinguisher 命令的详细介绍，请参见“三层技术-IP路由命令参考”中的“MCE”。

l 有关 multicast routing-enable 命令的详细介绍，请参见“IP组播命令参考”中的“组播路由与转发”。

1.3.3 创建MSDP对等体连接

MSDP对等体使用地址对来标识，即本端MSDP对等体地址和远端MSDP对等体地址。需要在互为对等体的两端都创建MSDP对等体连接。

表1-4 创建MSDP对等体连接

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入公网实例或VPN实例MSDP视图 | msdp [ vpn-instance vpn-instance-name ] | -
创建MSDP对等体连接 | peer peer-address connect-interface interface-type interface-number | 必选 缺省情况下，没有创建MSDP对等体连接

如果某接口同时作为MSDP对等体和BGP/MBGP对等体中的一端，则建议为MSDP对等体配置与BGP或MBGP对等体相同的IP地址。

1.3.4 配置静态RPF对等体

通过配置静态RPF对等体可以免除对收到的SA消息进行RPF检查。

表1-5 配置静态RPF对等体

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入公网实例或VPN实例MSDP视图 | msdp [ vpn-instance vpn-instance-name ] | -
配置静态RPF对等体 | static-rpf-peer peer-address [ rp-policy ip-prefix-name ] | 必选 缺省情况下，没有配置静态RPF对等体

如果在一台路由器上只配置了一个MSDP对等体，则该MSDP对等体将被当作静态RPF对等体。


1.4 配置MSDP对等体连接

1.4.1 配置准备

在配置MSDP对等体连接之前，需完成以下任务：

l 配置任一单播路由协议，实现域内网络层互通

l 配置MSDP基本功能

在配置MSDP对等体连接之前，需准备以下数据：

l MSDP对等体的描述信息

l MSDP全连接组的名称

l 建立MSDP对等体连接的重试周期

l MSDP对等体建立TCP连接时进行MD5认证的密钥

1.4.2 配置MSDP对等体描述信息

管理员可以通过MSDP对等体的描述信息方便地区分不同的MSDP对等体，从而更好地管理MSDP对等体。

表1-6 配置MSDP对等体描述信息

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入公网实例或VPN实例MSDP视图 | msdp [ vpn-instance vpn-instance-name ] | -
配置MSDP对等体的描述信息 | peer peer-address description text | 必选 缺省情况下，MSDP对等体没有描述信息

1.4.3 配置MSDP全连接组

一个自治系统内可能包含多个MSDP对等体，为了避免这些MSDP对等体之间泛滥SA消息，可以使用MSDP全连接组来优化数据流量。

构成全连接组的MSDP对等体，一方面将来自组外并通过了RPF检查的SA消息转发给组内的其它成员；另一方面，对来自组内成员的SA消息不经RPF检查就接受，也不在组内进行重复转发。这种操作既避免了SA消息的泛滥，同时还由于不需要在MSDP对等体之间运行BGP或MBGP，所以也就简化了对等体RPF检查机制。

通过为多个MSDP对等体配置相同的全连接组名称，可以建立MSDP全连接组。

表1-7 配置MSDP全连接组

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入公网实例或VPN实例MSDP视图 | msdp [ vpn-instance vpn-instance-name ] | -
把MSDP对等体加入全连接组 | peer peer-address mesh-group name | 必选 缺省情况下，MSDP对等体不属于任何全连接组

l 在配置MSDP全连接组之前，应使各路由器之间保持两两互连。

l 如果在同一MSDP对等体上多次配置加入全连接组，最后一个配置有效。

1.4.4 配置MSDP对等体连接控制

MSDP对等体之间使用TCP进行连接（端口号为639），用户可以手工关闭或重建MSDP对等体连接，灵活控制MSDP对等体之间的会话。当关闭了MSDP对等体连接后，MSDP对等体之间不再传递SA消息，TCP连接关闭，并不再重试建立连接，但配置信息会被保留。

当新创建了MSDP对等体、或重新启动了被关闭的MSDP对等体连接、或发生故障的MSDP对等体尝试恢复工作时，需要在MSDP对等体之间建立TCP连接。用户可以灵活地调整建立MSDP对等体连接的重试周期。

为了提高MSDP的安全性，可以配置MSDP对等体在建立TCP连接时进行MD5认证。该认证并不能对MSDP报文进行认证，它只是为TCP连接设置MD5认证密钥，并由TCP完成认证。如果认证失败，则无法建立TCP连接。

表1-8 配置MSDP对等体连接控制

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入公网实例或VPN实例MSDP视图 | msdp [ vpn-instance vpn-instance-name ] | -
手工关闭MSDP对等体连接 | shutdown peer-address | 可选 缺省情况下，MSDP对等体处于连接状态
配置建立MSDP对等体连接的重试周期 | timer retry interval | 可选 缺省情况下，建立MSDP对等体连接的重试周期为30秒
配置MSDP对等体建立TCP连接时进行MD5认证 | peer peer-address password { cipher | simple } password | 可选 缺省情况下，MSDP对等体建立TCP连接时不进行MD5认证

参与MD5认证的两端MSDP对等体必须配置相同的认证方式和密钥，否则将由于不能通过认证而无法建立TCP连接。


1.5 配置SA消息

1.5.1 配置准备

在配置SA消息传递之前，需完成以下任务：

l 配置任一单播路由协议，实现域内网络层互通

l 配置MSDP基本功能

在配置SA消息传递之前，需准备以下数据：

l 表示SA请求消息过滤规则的ACL规则

l 表示SA消息创建规则的ACL规则

l 表示接收或转发SA消息的过滤规则的ACL规则

l 封装在SA消息中组播数据报文的TTL（Time to Live，生存时间）阈值

l 可缓存从指定MSDP对等体学到的（S，G）表项的最大数量

1.5.2 配置SA消息内容

某些组播源发送组播数据的时间间隔较长，超出了（S，G）表项的超时时间。在这种情况下，源端DR只能将组播数据逐个封装在注册消息中，发送给源端RP。源端RP使用SA消息将（S，G）信息传输给远端RP。然后，远端RP向源端DR发起加入过程，并创建SPT。由于（S，G）表项已超时，远端用户将永远无法收到该组播源发出的组播数据。

当在源端RP上使能了在SA消息中封装组播数据报文的功能后，源端RP会将组播数据报文封装在SA消息中发送出去。远端RP收到该SA消息后解封装，并将组播数据报文沿RPT传输给本域内的用户。

MSDP对等体之间传递SA消息，当路由器对收到的SA消息进行RPF检查时，如果发现对端RP的地址与本地RP的地址相同，就会丢弃该SA消息。但在Anycast RP应用中，要求在同一个PIM-SM域内的两台或多台路由器上配置IP地址相同的RP，并在这些路由器之间建立MSDP对等体关系，因此必须为SA消息指定一个与实际RP的地址不同的逻辑RP地址（即逻辑接口上的RP地址），以通过RPF检查。

表1-9 配置SA消息内容

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入公网实例或VPN实例MSDP视图 | msdp [ vpn-instance vpn-instance-name ] | -
使能在SA消息中封装组播数据报文 | encap-data-enable | 可选 缺省情况下，在SA消息中只包含（S，G）表项，不封装组播数据报文
配置接口地址为SA消息的RP地址 | originating-rp interface-type interface-number | 可选 缺省情况下，SA消息的RP地址为PIM的RP地址

1.5.3 配置SA请求消息

缺省情况下，当一个新接收者加入时，路由器不会主动向其MSDP对等体发送SA请求消息，而是等待其MSDP对等体在下一个周期发来的SA消息，这将延迟接收者获取组播源信息的时间。为了尽快让新接收者了解到当前活跃的组播源信息，需要主动向MSDP对等体发送SA请求消息。

表1-10 配置SA请求消息

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入公网实例或VPN实例MSDP视图 | msdp [ vpn-instance vpn-instance-name ] | -
使能发送SA请求消息 | peer peer-address request-sa-enable | 可选 缺省情况下，路由器收到新的组加入消息时，不向其MSDP对等体发送SA请求消息，而是等待下一周期SA消息的到来
配置SA请求消息的过滤规则 | peer peer-address sa-request-policy [ acl acl-number ] | 可选 缺省情况下，不对SA请求消息进行过滤

在使能发送SA请求消息功能之前，必须首先关闭SA消息缓存机制，否则设备不会向外发送SA请求消息。

1.5.4 配置SA消息过滤规则

通过配置SA消息的创建规则，路由器可以在创建SA消息时，对其通告的（S，G）表项进行过滤，从而实现在创建SA消息时对组播源消息传播的控制。

通过配置接收或转发SA消息的过滤规则，路由器可以在接收或转发SA消息时，对其通告的（S，G）转发项进行过滤，从而实现在接收和转发SA消息时，对组播源消息传播的控制。

通过配置封装在SA消息中组播数据报文的TTL阈值，可以对组播数据报文在SA消息中的封装以及传输范围进行限制：

l 路由器在创建封装有组播数据报文的SA消息之前，先检查该组播数据报文IP头的TTL值：如果小于阈值，则不创建该SA消息；如果大于或等于阈值，则将组播数据报文封装在SA消息中并转发出去。

l 路由器在收到封装有组播数据报文的SA消息之后，先将该组播数据报文IP头的TTL值减1，再检查此时的TTL值：如果小于阈值，则不再向其指定的MSDP对等体转发；如果大于或等于阈值，则重新将组播数据报文封装在SA消息中并转发出去。

表1-11 配置SA消息过滤规则

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入公网实例或VPN实例MSDP视图 | msdp [ vpn-instance vpn-instance-name ] | -
配置SA消息的创建规则 | import-source [ acl acl-number ] | 必选 缺省情况下，在创建SA消息时，对其通告的（S，G）表项不作限制
配置接收或转发SA消息的过滤规则 | peer peer-address sa-policy { import | export } [ acl acl-number ] | 必选 缺省情况下，不对接收或转发的SA消息进行过滤
配置封装在SA消息中组播数据报文的TTL阈值 | peer peer-address minimum-ttl ttl-value | 可选 缺省情况下，封装在SA消息中组播数据报文的TTL阈值为0

1.5.5 配置SA消息缓存

为了减少获取组播信息的延迟时间，可以在路由器上使能SA消息缓存机制，即在本地缓存SA消息中所包含的（S，G）表项。缓存的（S，G）表项越多，所占用的内存空间越大。

在使能了SA消息缓存机制后，当收到一个新的组加入消息（*，G）时，路由器首先查找SA缓存：

l 如果缓存中没有对应的（S，G），便等候其MSDP对等体在下一个周期发来的SA消息；

l 如果缓存中有对应的（S，G），则直接加入以S为根的SPT。

为了有效防止路由器受到DoS（Denial of Service，拒绝服务）攻击，可以在路由器上配置可缓存（S，G）表项的最大数量。

表1-12 配置SA消息缓存

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入公网实例或VPN实例MSDP视图 | msdp [ vpn-instance vpn-instance-name ] | -
使能SA消息缓存机制 | cache-sa-enable | 可选 在缺省情况下，SA消息缓存机制处于使能状态，即在设备收到SA消息后缓存其中包含的（S，G）表项
配置可缓存从指定MSDP对等体学到的（S，G）表项的最大数量 | peer peer-address sa-cache-maximum sa-limit | 可选 缺省情况下，可缓存从任一MSDP对等体学到的（S，G）表项的最大数量为8192


1.6 MSDP显示和维护

在完成上述配置后，在任意视图下执行 display 命令可以显示配置后MSDP的运行情况，通过查看显示信息验证配置的效果。

在用户视图下执行 reset 命令可以清除MSDP的统计信息。

表1-13 MSDP显示和维护

操作 | 命令
查看MSDP对等体的简要信息 | display msdp [ all-instance | vpn-instance vpn-instance-name ] brief [ state { connect | down | listen | shutdown | up } ] [ | { begin | exclude | include } regular-expression ]
查看MSDP对等体的详细状态信息 | display msdp [ all-instance | vpn-instance vpn-instance-name ] peer-status [ peer-address ] [ | { begin | exclude | include } regular-expression ]
查看SA缓存中的（S，G）表项信息 | display msdp [ all-instance | vpn-instance vpn-instance-name ] sa-cache [ group-address | source-address | as-number ] * [ | { begin | exclude | include } regular-expression ]
查看SA缓存中（S，G）表项的数量 | display msdp [ all-instance | vpn-instance vpn-instance-name ] sa-count [ as-number ] [ | { begin | exclude | include } regular-expression ]
重置与MSDP对等体的TCP连接 | reset msdp [ all-instance | vpn-instance vpn-instance-name ] peer [ peer-address ]
清除SA缓存中的（S，G）表项 | reset msdp [ all-instance | vpn-instance vpn-instance-name ] sa-cache [ group-address ]
清除MSDP对等体的统计信息 | reset msdp [ all-instance | vpn-instance vpn-instance-name ] statistics [ peer-address ]


1.7 MSDP典型配置举例

1.7.1 PIM-SM域间组播配置举例

1. 组网需求

l 网络中存在两个自治系统：AS 100和AS 200，各AS内部采用OSPF协议、AS之间则采用BGP协议以保证单播路由的畅通；

l PIM-SM 1属于AS 100，PIM-SM 2和PIM-SM 3属于AS 200，每个PIM-SM域分别拥有至少一个组播源（Source）或接收者（Receiver）；

l 将Switch B、Switch C和Switch E各自的Loopback0接口分别配置为各自PIM-SM域的C-BSR和C-RP；

l 通过在各PIM-SM域的RP之间建立MSDP对等体，从而实现各PIM-SM域之间组播源信息的共享。

2. 组网图

图1-5 PIM-SM域间组播配置组网图

设备 | 接口 | IP地址 | 设备 | 接口 | IP地址
Switch A | Vlan-int103 | 10.110.1.2/24 | Switch D | Vlan-int104 | 10.110.4.2/24
 | Vlan-int100 | 10.110.2.1/24 |  | Vlan-int300 | 10.110.5.1/24
 | Vlan-int200 | 10.110.3.1/24 | Switch E | Vlan-int105 | 10.110.6.1/24
Switch B | Vlan-int103 | 10.110.1.1/24 |  | Vlan-int102 | 192.168.3.2/24
 | Vlan-int101 | 192.168.1.1/24 |  | Loop0 | 3.3.3.3/32
 | Loop0 | 1.1.1.1/32 | Switch F | Vlan-int105 | 10.110.6.2/24
Switch C | Vlan-int104 | 10.110.4.1/24 |  | Vlan-int400 | 10.110.7.1/24
 | Vlan-int102 | 192.168.3.1/24 | Source 1 | - | 10.110.2.100/24
 | Vlan-int101 | 192.168.1.2/24 | Source 2 | - | 10.110.5.100/24
 | Loop0 | 2.2.2.2/32 |  |  |

3. 配置步骤

(1) 配置IP地址和单播路由协议

请按照图1-5 配置各接口的IP地址和子网掩码，具体配置过程略。

配置AS内的各交换机之间采用OSPF协议进行互连，确保各AS内部在网络层互通，并且各交换机之间能够借助单播路由协议实现动态路由更新，具体配置过程略。

(2) 使能IP组播路由，使能PIM-SM和IGMP，并配置BSR的服务边界

# 在Switch A上使能IP组播路由，在各接口上使能PIM-SM，并在主机侧接口Vlan-interface200上使能IGMP。

<SwitchA> system-view

[SwitchA] multicast routing-enable

[SwitchA] interface vlan-interface 103

[SwitchA-Vlan-interface103] pim sm

[SwitchA-Vlan-interface103] quit

[SwitchA] interface vlan-interface 100

[SwitchA-Vlan-interface100] pim sm

[SwitchA-Vlan-interface100] quit

[SwitchA] interface vlan-interface 200

[SwitchA-Vlan-interface200] igmp enable

[SwitchA-Vlan-interface200] pim sm

[SwitchA-Vlan-interface200] quit

Switch B、Switch C、Switch D、Switch E和Switch F上的配置与Switch A相似，配置过程略。

# 在Switch B上配置BSR的服务边界。

[SwitchB] interface vlan-interface 101

[SwitchB-Vlan-interface101] pim bsr-boundary

[SwitchB-Vlan-interface101] quit

Switch C和Switch E上的配置与Switch B相似，配置过程略。

(3) 配置C-BSR和C-RP的位置

# 在Switch B上将Loopback0接口配置为C-BSR和C-RP。

[SwitchB] pim

[SwitchB-pim] c-bsr loopback 0

[SwitchB-pim] c-rp loopback 0

[SwitchB-pim] quit

Switch C和Switch E上的配置与Switch B相似，配置过程略。

(4) 配置BGP协议，将BGP与OSPF互相引入

# 在Switch B上配置EBGP对等体，并引入OSPF路由。

[SwitchB] bgp 100

[SwitchB-bgp] router-id 1.1.1.1

[SwitchB-bgp] peer 192.168.1.2 as-number 200

[SwitchB-bgp] import-route ospf 1

[SwitchB-bgp] quit

# 在Switch C上配置EBGP对等体，并引入OSPF路由。

[SwitchC] bgp 200

[SwitchC-bgp] router-id 2.2.2.2

[SwitchC-bgp] peer 192.168.1.1 as-number 100

[SwitchC-bgp] import-route ospf 1

[SwitchC-bgp] quit

# 在Switch B的OSPF中引入BGP。

[SwitchB] ospf 1

[SwitchB-ospf-1] import-route bgp

[SwitchB-ospf-1] quit

# 在Switch C的OSPF中引入BGP。

[SwitchC] ospf 1

[SwitchC-ospf-1] import-route bgp

[SwitchC-ospf-1] quit

(5) 配置MSDP对等体

# 在Switch B上配置MSDP对等体。

[SwitchB] msdp

[SwitchB-msdp] peer 192.168.1.2 connect-interface vlan-interface 101

[SwitchB-msdp] quit

# 在Switch C上配置MSDP对等体。

[SwitchC] msdp

[SwitchC-msdp] peer 192.168.1.1 connect-interface vlan-interface 101

[SwitchC-msdp] peer 192.168.3.2 connect-interface vlan-interface 102

[SwitchC-msdp] quit

# 在Switch E上配置MSDP对等体。

[SwitchE] msdp

[SwitchE-msdp] peer 192.168.3.1 connect-interface vlan-interface 102

[SwitchE-msdp] quit

(6) 检验配置效果

通过使用 display bgp peer 命令可以查看交换机之间BGP对等体的关系。例如：

# 查看Switch B上BGP对等体关系的信息。

[SwitchB] display bgp peer

BGP local router ID : 1.1.1.1

Local AS number : 100

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

Peer AS MsgRcvd MsgSent OutQ PrefRcv Up/Down State

192.168.1.2 200 24 21 0 6 00:13:09 Established

# 查看Switch C上BGP对等体关系的信息。

[SwitchC] display bgp peer

BGP local router ID : 2.2.2.2

Local AS number : 200

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

Peer AS MsgRcvd MsgSent OutQ PrefRcv Up/Down State

192.168.1.1 100 18 16 0 1 00:12:04 Established

通过使用 display bgp routing-table 命令可以查看交换机上的BGP路由表。例如：

# 查看Switch C上BGP路由表的信息。

[SwitchC] display bgp routing-table

Total Number of Routes: 5

BGP Local router ID is 2.2.2.2

Status codes: * - valid, ^ - VPNv4 best, > - best, d - damped,

h - history, i - internal, s - suppressed, S - Stale

Origin : i - IGP, e - EGP, ? - incomplete

Network NextHop MED LocPrf PrefVal Path/Ogn

* > 1.1.1.1/32 192.168.1.1 0 0 100?

* >i 2.2.2.2/32 0.0.0.0 0 0 ?

* > 192.168.1.0 0.0.0.0 0 0 ?

* > 192.168.1.1/32 0.0.0.0 0 0 ?

* > 192.168.1.2/32 0.0.0.0 0 0 ?

当PIM-SM 1和PIM-SM 2域内的组播源Source 1和Source 2发送组播信息时，PIM-SM 1和PIM-SM 3域内的接收者能收到该组播信息。通过使用 display msdp brief 命令可以查看交换机之间MSDP对等体建立情况。例如：

# 查看Switch B上MSDP对等体建立情况的简要信息。

[SwitchB] display msdp brief

MSDP Peer Brief Information of VPN-Instance: public net

Configured Up Listen Connect Shutdown Down

1 1 0 0 0 0

Peer's Address State Up/Down time AS SA Count Reset Count

192.168.1.2 Up 00:12:27 200 13 0

# 查看Switch C上MSDP对等体建立情况的简要信息。

[SwitchC] display msdp brief

MSDP Peer Brief Information of VPN-Instance: public net

Configured Up Listen Connect Shutdown Down

2 2 0 0 0 0

Peer's Address State Up/Down time AS SA Count Reset Count

192.168.3.2 Up 00:15:32 200 8 0

192.168.1.1 Up 00:06:39 100 13 0

# 查看Switch E上MSDP对等体建立情况的简要信息。

[SwitchE] display msdp brief

MSDP Peer Brief Information of VPN-Instance: public net

Configured Up Listen Connect Shutdown Down

1 1 0 0 0 0

Peer's Address State Up/Down time AS SA Count Reset Count

192.168.3.1 Up 01:07:08 200 8 0

# 查看Switch B上MSDP对等体的详细信息。

[SwitchB] display msdp peer-status

MSDP Peer Information of VPN-Instance: public net

MSDP Peer 192.168.1.2, AS 200

Description:

Information about connection status:

State: Up

Up/down time: 00:15:47

Resets: 0

Connection interface: Vlan-interface101 (192.168.1.1)

Number of sent/received messages: 16/16

Number of discarded output messages: 0

Elapsed time since last connection or counters clear: 00:17:51

Information about (Source, Group)-based SA filtering policy:

Import policy: none

Export policy: none

Information about SA-Requests:

Policy to accept SA-Request messages: none

Sending SA-Requests status: disable

Minimum TTL to forward SA with encapsulated data: 0

SAs learned from this peer: 0, SA-cache maximum for the peer: none

Input queue size: 0, Output queue size: 0

Counters for MSDP message:

Count of RPF check failure: 0

Incoming/outgoing SA messages: 0/0

Incoming/outgoing SA requests: 0/0

Incoming/outgoing SA responses: 0/0

Incoming/outgoing data packets: 0/0

1.7.2 借助静态RPF对等体的AS间组播配置举例

1. 组网需求

l 网络中存在两个自治系统：AS 100和AS 200，各AS内部采用OSPF协议、AS之间则采用BGP协议以保证单播路由的畅通；

l PIM-SM 1属于AS 100，PIM-SM 2和PIM-SM 3属于AS 200，每个PIM-SM域分别拥有至少一个组播源（Source）或接收者（Receiver）；

l 将Switch A、Switch D和Switch G各自的Loopback0接口分别配置为各自PIM-SM域的C-BSR和C-RP；

l 根据RPF规则，设备接受来自其静态RPF对等体且被过滤策略所允许的SA消息。通过在各PIM-SM域的RP之间建立MSDP对等体，并在各MSDP对等体之间建立静态RPF对等体，从而在不改变单播拓扑的基础上实现各PIM-SM域之间组播源信息的共享。

2. 组网图

图1-6 借助静态RPF对等体的AS间组播配置组网图

设备 | 接口 | IP地址 | 设备 | 接口 | IP地址
Source 1 | - | 192.168.1.100/24 | Switch D | Vlan-int105 | 10.110.5.1/24
Source 2 | - | 192.168.3.100/24 |  | Vlan-int103 | 10.110.3.2/24
Switch A | Vlan-int101 | 10.110.1.1/24 |  | Loop0 | 2.2.2.2/32
 | Vlan-int102 | 10.110.2.1/24 | Switch E | Vlan-int105 | 10.110.5.2/24
 | Loop0 | 1.1.1.1/32 |  | Vlan-int300 | 192.168.3.1/24
Switch B | Vlan-int101 | 10.110.1.2/24 | Switch F | Vlan-int106 | 10.110.6.1/24
 | Vlan-int100 | 192.168.1.1/24 |  | Vlan-int104 | 10.110.4.2/24
 | Vlan-int103 | 10.110.3.1/24 | Switch G | Vlan-int106 | 10.110.6.2/24
Switch C | Vlan-int102 | 10.110.2.2/24 |  | Vlan-int400 | 192.168.4.1/24
 | Vlan-int200 | 192.168.2.1/24 |  | Loop0 | 3.3.3.3/32
 | Vlan-int104 | 10.110.4.1/24 |  |  |

3. 配置步骤

(1) 配置IP地址和单播路由协议

请按照图1-6 配置各接口的IP地址和掩码，具体配置过程略。

配置AS内的各交换机之间采用OSPF协议进行互连，确保AS内部在网络层互通，并且各交换机之间能够借助单播路由协议实现动态路由更新，具体配置过程略。

(2) 使能IP组播路由，使能PIM-SM和IGMP，并配置BSR的服务边界

# 在Switch C上使能IP组播路由，在各接口上使能PIM-SM，并在主机侧接口Vlan-interface200上使能IGMP。

<SwitchC> system-view

[SwitchC] multicast routing-enable

[SwitchC] interface vlan-interface 102

[SwitchC-Vlan-interface102] pim sm

[SwitchC-Vlan-interface102] quit

[SwitchC] interface vlan-interface 200

[SwitchC-Vlan-interface200] igmp enable

[SwitchC-Vlan-interface200] pim sm

[SwitchC-Vlan-interface200] quit

[SwitchC] interface vlan-interface 104

[SwitchC-Vlan-interface104] pim sm

[SwitchC-Vlan-interface104] quit

Switch A、Switch B、Switch D、Switch E、Switch F和Switch G上的配置与Switch C相似，配置过程略。

# 在Switch B上配置BSR的服务边界。

[SwitchB] interface vlan-interface 103

[SwitchB-Vlan-interface103] pim bsr-boundary

[SwitchB-Vlan-interface103] quit

Switch C、Switch D和Switch F上的配置与Switch B相似，配置过程略。

(3) 配置C-BSR和C-RP的位置

# 在Switch A上将Loopback0接口配置为C-BSR和C-RP。

[SwitchA] pim

[SwitchA-pim] c-bsr loopback 0

[SwitchA-pim] c-rp loopback 0

[SwitchA-pim] quit

Switch D和Switch G上的配置与Switch A相似，配置过程略。

(4) 配置BGP协议，将BGP与OSPF互相引入

# 在Switch B上配置EBGP对等体，并引入OSPF路由。

[SwitchB] bgp 100

[SwitchB-bgp] router-id 1.1.1.2

[SwitchB-bgp] peer 10.110.3.2 as-number 200

[SwitchB-bgp] import-route ospf 1

[SwitchB-bgp] quit

# 在Switch D上配置EBGP对等体，并引入OSPF路由。

[SwitchD] bgp 200

[SwitchD-bgp] router-id 2.2.2.2

[SwitchD-bgp] peer 10.110.3.1 as-number 100

[SwitchD-bgp] import-route ospf 1

[SwitchD-bgp] quit

# 在Switch C上配置EBGP对等体，并引入OSPF路由。

[SwitchC] bgp 100

[SwitchC-bgp] router-id 1.1.1.3

[SwitchC-bgp] peer 10.110.4.2 as-number 200

[SwitchC-bgp] import-route ospf 1

[SwitchC-bgp] quit

# 在Switch F上配置EBGP对等体，并引入OSPF路由。

[SwitchF] bgp 200

[SwitchF-bgp] router-id 3.3.3.1

[SwitchF-bgp] peer 10.110.4.1 as-number 100

[SwitchF-bgp] import-route ospf 1

[SwitchF-bgp] quit

# 在Switch B的OSPF中引入BGP。

[SwitchB] ospf 1

[SwitchB-ospf-1] import-route bgp

[SwitchB-ospf-1] quit

# 在Switch D的OSPF中引入BGP。

[SwitchD] ospf 1

[SwitchD-ospf-1] import-route bgp

[SwitchD-ospf-1] quit

# 在Switch C的OSPF中引入BGP。

[SwitchC] ospf 1

[SwitchC-ospf-1] import-route bgp

[SwitchC-ospf-1] quit

# 在Switch F的OSPF中引入BGP。

[SwitchF] ospf 1

[SwitchF-ospf-1] import-route bgp

[SwitchF-ospf-1] quit

(5) 配置MSDP对等体及静态RPF对等体

# 配置Switch D和Switch G作为Switch A的MSDP对等体及静态RPF对等体。

[SwitchA] ip ip-prefix list-dg permit 10.110.0.0 16 greater-equal 16 less-equal 32

[SwitchA] msdp

[SwitchA-msdp] peer 10.110.3.2 connect-interface vlan-interface 101

[SwitchA-msdp] peer 10.110.6.2 connect-interface vlan-interface 102

[SwitchA-msdp] static-rpf-peer 10.110.3.2 rp-policy list-dg

[SwitchA-msdp] static-rpf-peer 10.110.6.2 rp-policy list-dg

[SwitchA-msdp] quit

# 配置Switch A作为Switch D的MSDP对等体及静态RPF对等体。

[SwitchD] ip ip-prefix list-a permit 10.110.0.0 16 greater-equal 16 less-equal 32

[SwitchD] msdp

[SwitchD-msdp] peer 10.110.1.1 connect-interface vlan-interface 103

[SwitchD-msdp] static-rpf-peer 10.110.1.1 rp-policy list-a

[SwitchD-msdp] quit

# 配置Switch A作为Switch G的MSDP对等体及静态RPF对等体。

[SwitchG] ip ip-prefix list-a permit 10.110.0.0 16 greater-equal 16 less-equal 32

[SwitchG] msdp

[SwitchG-msdp] peer 10.110.2.1 connect-interface vlan-interface 106

[SwitchG-msdp] static-rpf-peer 10.110.2.1 rp-policy list-a

[SwitchG-msdp] quit

(6) 检验配置效果

通过使用 display bgp peer 命令可以查看交换机之间BGP对等体建立情况。Switch A上无任何信息输出，说明Switch A与Switch D、Switch A与Switch G之间均未建立BGP对等体关系。

当PIM-SM 1和PIM-SM 2域内的组播源Source 1和Source 2发送组播信息时，PIM-SM 1和PIM-SM 3域内的接收者能收到该组播信息，通过使用 display msdp brief 命令可以查看交换机之间MSDP对等体的建立情况。例如：

# 查看Switch A上MSDP对等体的简要信息。

[SwitchA] display msdp brief

MSDP Peer Brief Information of VPN-Instance: public net

Configured Up Listen Connect Shutdown Down

2 2 0 0 0 0

Peer's Address State Up/Down time AS SA Count Reset Count

10.110.3.2 Up 01:07:08 ? 8 0

10.110.6.2 Up 00:16:39 ? 13 0

# 查看Switch D上MSDP对等体的简要信息。

[SwitchD] display msdp brief

MSDP Peer Brief Information of VPN-Instance: public net

Configured Up Listen Connect Shutdown Down

1 1 0 0 0 0

Peer's Address State Up/Down time AS SA Count Reset Count

10.110.1.1 Up 01:07:09 ? 8 0

# 查看Switch G上MSDP对等体的简要信息。

[SwitchG] display msdp brief

MSDP Peer Brief Information of VPN-Instance: public net

Configured Up Listen Connect Shutdown Down

1 1 0 0 0 0

Peer's Address State Up/Down time AS SA Count Reset Count

10.110.2.1 Up 00:16:40 ? 13 0

1.7.3 Anycast RP应用配置举例

1. 组网需求

l PIM-SM域内拥有多个组播源（Source）和接收者（Receiver），并在域内运行OSPF协议以提供单播路由；

l 通过配置Anycast RP，使接收者侧DR能够向拓扑距离最近的RP发起加入，组播源侧DR也向拓扑距离最近的RP发起注册；

l 将Switch B和Switch D各自的Loopback10接口配置为C-BSR、Loopback20接口配置为C-RP；

l Switch B的Router ID为1.1.1.1，Switch D的Router ID为2.2.2.2，在Switch B和Switch D之间建立MSDP对等体关系。

2. 组网图

图1-7 Anycast RP应用配置组网图

设备 | 接口 | IP地址 | 设备 | 接口 | IP地址
Source 1 | - | 10.110.5.100/24 | Switch C | Vlan-int101 | 192.168.1.2/24
Source 2 | - | 10.110.6.100/24 |  | Vlan-int102 | 192.168.2.2/24
Switch A | Vlan-int300 | 10.110.5.1/24 | Switch D | Vlan-int200 | 10.110.3.1/24
 | Vlan-int103 | 10.110.2.2/24 |  | Vlan-int104 | 10.110.4.1/24
Switch B | Vlan-int100 | 10.110.1.1/24 |  | Vlan-int102 | 192.168.2.1/24
 | Vlan-int103 | 10.110.2.1/24 |  | Loop0 | 2.2.2.2/32
 | Vlan-int101 | 192.168.1.1/24 |  | Loop10 | 4.4.4.4/32
 | Loop0 | 1.1.1.1/32 |  | Loop20 | 10.1.1.1/32
 | Loop10 | 3.3.3.3/32 | Switch E | Vlan-int400 | 10.110.6.1/24
 | Loop20 | 10.1.1.1/32 |  | Vlan-int104 | 10.110.4.2/24

3. 配置步骤

(1) 配置IP地址和单播路由协议

请按照图1-7 配置各接口的IP地址和子网掩码，具体配置过程略。

配置PIM-SM域内的各交换机之间采用OSPF协议进行互连，确保PIM-SM域内部在网络层互通，并且各交换机之间能够借助单播路由协议实现动态路由更新，具体配置过程略。

(2) 使能IP组播路由，并使能PIM-SM和IGMP

# 在Switch B上使能IP组播路由，在各接口上使能PIM-SM，并在主机侧接口Vlan-interface100上使能IGMP。

<SwitchB> system-view

[SwitchB] multicast routing-enable

[SwitchB] interface vlan-interface 100

[SwitchB-Vlan-interface100] igmp enable

[SwitchB-Vlan-interface100] pim sm

[SwitchB-Vlan-interface100] quit

[SwitchB] interface vlan-interface 103

[SwitchB-Vlan-interface103] pim sm

[SwitchB-Vlan-interface103] quit

[SwitchB] interface Vlan-interface 101

[SwitchB-Vlan-interface101] pim sm

[SwitchB-Vlan-interface101] quit

[SwitchB] interface loopback 0

[SwitchB-LoopBack0] pim sm

[SwitchB-LoopBack0] quit

[SwitchB] interface loopback 10

[SwitchB-LoopBack10] pim sm

[SwitchB-LoopBack10] quit

[SwitchB] interface loopback 20

[SwitchB-LoopBack20] pim sm

[SwitchB-LoopBack20] quit

Switch A、Switch C、Switch D和Switch E上的配置与Switch B相似，配置过程略。

(3) 配置C-BSR和C-RP的位置

# 在Switch B上将Loopback10配置为C-BSR，将Loopback20配置为C-RP。

[SwitchB] pim

[SwitchB-pim] c-bsr loopback 10

[SwitchB-pim] c-rp loopback 20

[SwitchB-pim] quit

Switch D上的配置与Switch B相似，配置过程略。

(4) 配置MSDP对等体

# 在Switch B的Loopback0接口上配置MSDP对等体。

[SwitchB] msdp

[SwitchB-msdp] originating-rp loopback 0

[SwitchB-msdp] peer 2.2.2.2 connect-interface loopback 0

[SwitchB-msdp] quit

# 在Switch D的Loopback0接口上配置MSDP对等体。

[SwitchD] msdp

[SwitchD-msdp] originating-rp loopback 0

[SwitchD-msdp] peer 1.1.1.1 connect-interface loopback 0

[SwitchD-msdp] quit

(5) 检验配置效果

通过使用 display msdp brief 命令可以查看交换机之间MSDP对等体建立情况。

# 查看Switch B上MSDP对等体的简要信息。

[SwitchB] display msdp brief

MSDP Peer Brief Information of VPN-Instance: public net

Configured Up Listen Connect Shutdown Down

1 1 0 0 0 0

Peer's Address State Up/Down time AS SA Count Reset Count

2.2.2.2 Up 00:10:17 ? 0 0

# 查看Switch D上MSDP对等体的简要信息。

[SwitchD] display msdp brief

MSDP Peer Brief Information of VPN-Instance: public net

Configured Up Listen Connect Shutdown Down

1 1 0 0 0 0

Peer's Address State Up/Down time AS SA Count Reset Count

1.1.1.1 Up 00:10:18 ? 0 0

通过使用 display pim routing-table 命令可以查看交换机上的PIM路由。

当Source 1（10.110.5.100/24）开始向组播组G（225.1.1.1）发送组播信息时，Host A加入组播组G。通过比较Switch B与Switch D上PIM路由的显示信息，可知当前的有效RP为Switch B：Source 1向Switch B注册，Host A向Switch B加入。

# 查看Switch B上的PIM路由的信息。

[SwitchB] display pim routing-table

VPN-Instance: public net

Total 1 (*, G) entry; 1 (S, G) entry

(*, 225.1.1.1)

RP: 10.1.1.1 (local)

Protocol: pim-sm, Flag: WC

UpTime: 00:15:04

Upstream interface: Register

Upstream neighbor: NULL

RPF prime neighbor: NULL

Downstream interface(s) information:

Total number of downstreams: 1

1: Vlan-interface100

Protocol: igmp, UpTime: 00:15:04, Expires: -

(10.110.5.100, 225.1.1.1)

RP: 10.1.1.1 (local)

Protocol: pim-sm, Flag: SPT 2MSDP ACT

UpTime: 00:46:28

Upstream interface: Vlan-interface103

Upstream neighbor: 10.110.2.2

RPF prime neighbor: 10.110.2.2

Downstream interface(s) information:

Total number of downstreams: 1

1: Vlan-interface100

Protocol: pim-sm, UpTime: - , Expires: -

# 查看Switch D上的PIM路由的信息。

[SwitchD] display pim routing-table

Switch D上没有信息输出。

Host A离开组播组G，Source 1也停止向组播组G发送组播数据。当Source 2（10.110.6.100/24）开始向组播组G发送组播信息时，Host B加入组播组G。通过比较Switch B与Switch D上PIM路由的显示信息，可知当前的有效RP为Switch D：Source 2向Switch D注册，Host B向Switch D加入。

# 查看Switch B上的PIM路由的信息。

[SwitchB] display pim routing-table

Switch B上没有信息输出。

# 查看Switch D上的PIM路由的信息。

[SwitchD] display pim routing-table

VPN-Instance: public net

Total 1 (*, G) entry; 1 (S, G) entry

(*, 225.1.1.1)

RP: 10.1.1.1 (local)

Protocol: pim-sm, Flag: WC

UpTime: 00:12:07

Upstream interface: Register

Upstream neighbor: NULL

RPF prime neighbor: NULL

Downstream interface(s) information:

Total number of downstreams: 1

1: Vlan-interface200

Protocol: igmp, UpTime: 00:12:07, Expires: -

(10.110.6.100, 225.1.1.1)

RP: 10.1.1.1 (local)

Protocol: pim-sm, Flag: SPT 2MSDP ACT

UpTime: 00:40:22

Upstream interface: Vlan-interface104

Upstream neighbor: 10.110.4.2

RPF prime neighbor: 10.110.4.2

Downstream interface(s) information:

Total number of downstreams: 1

1: Vlan-interface200

Protocol: pim-sm, UpTime: - , Expires: -

1.7.4 SA消息过滤机制配置举例

1. 组网需求

l 网络中存在三个PIM-SM域，各域内部以及域之间均运行OSPF协议以提供单播路由；

l 将Switch A、Switch C和Switch D各自的Loopback0接口分别配置为各自PIM-SM域的C-BSR和C-RP；

l 分别在Switch A与Switch C、Switch C与Switch D之间建立MSDP对等体关系；

l 组播源Source 1向组播组225.1.1.0/30和226.1.1.0/30发送组播数据，组播源Source 2向组播组227.1.1.0/30发送组播数据；

l 通过配置SA消息过滤规则，使接收者Host A和Host B只能接收发往组播组225.1.1.0/30和226.1.1.0/30的组播数据，而Host C则只能接收发往组播组226.1.1.0/30和227.1.1.0/30的组播数据。

2. 组网图

图1-8 SA消息过滤机制配置组网图

设备 | 接口 | IP地址 | 设备 | 接口 | IP地址
Source 1 | - | 10.110.3.100/24 | Switch C | Vlan-int300 | 10.110.4.1/24
Source 2 | - | 10.110.6.100/24 |  | Vlan-int104 | 10.110.5.1/24
Switch A | Vlan-int100 | 10.110.1.1/24 |  | Vlan-int101 | 192.168.1.2/24
 | Vlan-int102 | 10.110.2.1/24 |  | Vlan-int103 | 192.168.2.2/24
 | Vlan-int101 | 192.168.1.1/24 |  | Loop0 | 2.2.2.2/32
 | Loop0 | 1.1.1.1/32 | Switch D | Vlan-int400 | 10.110.6.1/24
Switch B | Vlan-int200 | 10.110.3.1/24 |  | Vlan-int500 | 10.110.7.1/24
 | Vlan-int102 | 10.110.2.2/24 |  | Vlan-int104 | 10.110.5.2/24
 | Vlan-int103 | 192.168.2.1/24 |  | Loop0 | 3.3.3.3/32

3. 配置步骤

(1) 配置IP地址和单播路由协议

请按照 图1-8 配置各接口的IP地址和掩码，具体配置过程略。

配置各交换机之间采用OSPF协议进行互连，确保PIM-SM域内部以及各PIM-SM域之间在网络层互通，并且各交换机之间能够借助单播路由协议实现动态路由更新，具体配置过程略。

(2) 使能IP组播路由，使能PIM-SM和IGMP，并配置BSR的服务边界

# 在Switch A上使能IP组播路由，在各接口上使能PIM-SM，并在主机侧接口Vlan-interface100上使能IGMP。

<SwitchA> system-view

[SwitchA] multicast routing-enable

[SwitchA] interface vlan-interface 100

[SwitchA-Vlan-interface100] igmp enable

[SwitchA-Vlan-interface100] pim sm

[SwitchA-Vlan-interface100] quit

[SwitchA] interface vlan-interface 101

[SwitchA-Vlan-interface101] pim sm

[SwitchA-Vlan-interface101] quit

[SwitchA] interface vlan-interface 102

[SwitchA-Vlan-interface102] pim sm

[SwitchA-Vlan-interface102] quit

[SwitchA] interface loopback 0

[SwitchA-LoopBack0] pim sm

[SwitchA-LoopBack0] quit

Switch B、Switch C和Switch D上的配置与Switch A相似，配置过程略。

# 在Switch C上配置BSR的服务边界。

[SwitchC] interface vlan-interface 101

[SwitchC-Vlan-interface101] pim bsr-boundary

[SwitchC-Vlan-interface101] quit

[SwitchC] interface vlan-interface 103

[SwitchC-Vlan-interface103] pim bsr-boundary

[SwitchC-Vlan-interface103] quit

[SwitchC] interface vlan-interface 104

[SwitchC-Vlan-interface104] pim bsr-boundary

[SwitchC-Vlan-interface104] quit

Switch A、Switch B和Switch D上的配置与Switch C相似，配置过程略。

(3) 配置C-BSR和C-RP的位置

# 在Switch A上将Loopback0接口配置为C-BSR和C-RP。

[SwitchA] pim

[SwitchA-pim] c-bsr loopback 0

[SwitchA-pim] c-rp loopback 0

[SwitchA-pim] quit

Switch C和Switch D上的配置与Switch A相似，配置过程略。

(4) 配置MSDP对等体

# 在Switch A上配置MSDP对等体。

[SwitchA] msdp

[SwitchA-msdp] peer 192.168.1.2 connect-interface vlan-interface 101

[SwitchA-msdp] quit

# 在Switch C上配置MSDP对等体。

[SwitchC] msdp

[SwitchC-msdp] peer 192.168.1.1 connect-interface vlan-interface 101

[SwitchC-msdp] peer 10.110.5.2 connect-interface vlan-interface 104

[SwitchC-msdp] quit

# 在Switch D上配置MSDP对等体。

[SwitchD] msdp

[SwitchD-msdp] peer 10.110.5.1 connect-interface vlan-interface 104

[SwitchD-msdp] quit

(5) 配置SA消息过滤规则

# 在Switch C上配置不向Switch D转发有关（Source 1，225.1.1.0/30）的SA消息。

[SwitchC] acl number 3001

[SwitchC-acl-adv-3001] rule deny ip source 10.110.3.100 0 destination 225.1.1.0 0.0.0.3

[SwitchC-acl-adv-3001] rule permit ip source any destination any

[SwitchC-acl-adv-3001] quit

[SwitchC] msdp

[SwitchC-msdp] peer 10.110.5.2 sa-policy export acl 3001

[SwitchC-msdp] quit

# 在Switch D上配置不创建有关Source 2的SA消息。

[SwitchD] acl number 2001

[SwitchD-acl-basic-2001] rule deny source 10.110.6.100 0

[SwitchD-acl-basic-2001] quit

[SwitchD] msdp

[SwitchD-msdp] import-source acl 2001

[SwitchD-msdp] quit

(6) 检验配置效果

通过使用 display msdp sa-cache 命令可以查看交换机上SA缓存中的（S，G）表项信息。例如：

# 查看Switch C上SA缓存中的（S，G）表项信息。

[SwitchC] display msdp sa-cache

MSDP Source-Active Cache Information of VPN-Instance: public net

MSDP Total Source-Active Cache - 8 entries

MSDP matched 8 entries

(Source, Group) Origin RP Pro AS Uptime Expires

(10.110.3.100, 225.1.1.0) 1.1.1.1 ? ? 02:03:30 00:05:31

(10.110.3.100, 225.1.1.1) 1.1.1.1 ? ? 02:03:30 00:05:31

(10.110.3.100, 225.1.1.2) 1.1.1.1 ? ? 02:03:30 00:05:31

(10.110.3.100, 225.1.1.3) 1.1.1.1 ? ? 02:03:30 00:05:31

(10.110.3.100, 226.1.1.0) 1.1.1.1 ? ? 02:03:30 00:05:31

(10.110.3.100, 226.1.1.1) 1.1.1.1 ? ? 02:03:30 00:05:31

(10.110.3.100, 226.1.1.2) 1.1.1.1 ? ? 02:03:30 00:05:31

(10.110.3.100, 226.1.1.3) 1.1.1.1 ? ? 02:03:30 00:05:31

# 查看Switch D上SA缓存中的（S，G）表项信息。

[SwitchD] display msdp sa-cache

MSDP Source-Active Cache Information of VPN-Instance: public net

MSDP Total Source-Active Cache - 4 entries

MSDP matched 4 entries

(Source, Group) Origin RP Pro AS Uptime Expires

(10.110.3.100, 226.1.1.0) 1.1.1.1 ? ? 00:32:53 00:05:07

(10.110.3.100, 226.1.1.1) 1.1.1.1 ? ? 00:32:53 00:05:07

(10.110.3.100, 226.1.1.2) 1.1.1.1 ? ? 00:32:53 00:05:07

(10.110.3.100, 226.1.1.3) 1.1.1.1 ? ? 00:32:53 00:05:07


1.8 常见配置错误举例

1.8.1 MSDP对等体一直处于down状态

1. 故障现象

配置了MSDP对等体，但其状态一直显示为down。

2. 分析

l 所配置的本地接口地址与MSDP对等体地址之间，建立起基于TCP连接的MSDP对等体关系；

l 如果本地接口地址与对端路由器上所配置的MSDP对等体地址不一致，TCP连接就不会建立起来；

l 如果两个MSDP对等体之间没有路由，TCP连接也不会建立起来。

3. 处理过程

(1) 检查各路由器之间的路由是否通达。通过命令 display ip routing-table 查看各路由器之间单播路由是否正确。

(2) 检查将成为MSDP对等体的两个路由器间是否存在到达对方的单播路由。

(3) 检查MSDP对等体之间的接口地址是否匹配。通过命令 display current-configuration 查看本地接口地址是否与对端MSDP对等体地址一致，应确保一致。

1.8.2 路由器SA缓存中没有SA表项

1. 故障现象

MSDP没有将（S，G）转发项通过SA消息发送出去。

2. 分析

l 命令 import-source 用于控制将本域的（S，G）表项通过SA消息发送给MSDP对等体。如果没有指定参数 acl-number 则表示默认过滤掉所有的（S，G）表项，即不通告本域的所有（S，G）表项；

l 未配置 import-source 命令时，系统将发送本域的所有（S，G）信息。如果MSDP没有将本域的（S，G）表项通过SA消息发送出去，应检查 import-source 命令的配置是否正确。

3. 处理过程

(1) 检查各路由器之间的路由是否通达。通过命令 display ip routing-table 查看各路由器之间单播路由是否正确。

(2) 检查将成为MSDP对等体的两个路由器间是否存在到达对方的单播路由。

(3) 检查命令 import-source 及其参数 acl-number 的配置情况，确保ACL规则能够过滤合适的（S，G）信息。

1.8.3 Anycast RP应用中RP间互通信息异常

1. 故障现象

在Anycast RP的应用中，各RP之间没有互相交换其本地注册的（S，G）信息。

2. 分析

l 在Anycast RP应用中，通过将同一PIM-SM域内的RP配置为MSDP对等体，可以实现RP间的负载分担；

l MSDP对等体地址不能与Anycast RP地址相同，且C-BSR和C-RP必须配置在不同的设备或接口上；

l 在使用 originating-rp 命令进行配置后，MSDP将利用该命令所指定的接口地址替换SA消息中的RP地址；

l 当MSDP对等体对收到的SA消息进行RPF检查时，如果发现RP地址与本地配置的RP地址相同，将拒绝接收SA消息。

3. 处理过程

(1) 检查各路由器之间的路由是否通达。通过命令 display ip routing-table 查看各路由器之间单播路由是否正确。

(2) 检查将成为MSDP对等体的两个路由器间是否存在到达对方的单播路由。

(3) 检查 originating-rp 命令的配置情况。在Anycast RP的应用环境中，一定要配置 originating-rp 命令，而且 originating-rp 命令所指定的接口地址要与建立MSDP对等体连接的本地接口地址相同。

(4) 检查所配置的C-BSR地址是否与Anycast RP的地址不同，应确保两个地址不同。


1 MBGP配置

l S3600V2-SI系列交换机不支持MBGP功能。

l 在以下路由协议的介绍中所指的路由器及路由器图标，代表了一般意义下的路由器以及运行了路由协议的以太网交换机。

相关链接

  • 1.1 MBGP简介
  • 1.2 协议规范
  • 1.3 MBGP配置任务简介
  • 1.4 配置MBGP基本功能
  • 1.5 控制路由信息的发布与接收
  • 1.6 配置MBGP的路由属性
  • 1.7 调整和优化MBGP网络
  • 1.8 配置大型MBGP网络
  • 1.9 MBGP显示和维护
  • 1.10 MBGP典型配置举例
父主题： 09-MBGP配置


1.1 MBGP简介

为了提供对多种网络层协议的支持，IETF（Internet Engineering Task Force，互联网工程任务组）对BGP-4进行了扩展，形成MP-BGP（Multiprotocol Border Gateway Protocol，多协议边界网关协议），使BGP能够为多种路由应用提供路由信息。

组播的网络拓扑和单播拓扑有可能不同，需要通过MP-BGP扩展使得BGP能够将单播NLRI（Network Layer Reachability Information，网络层可达性信息）和组播NLRI分开运载，其中组播NLRI专用于执行RPF（Reverse Path Forwarding，逆向路径转发）功能。这使得在单播路由表和组播路由表中，对于相同的前缀有不同的路径选择，维护了一致的单播转发并使域间组播正常工作。

目前的MP-BGP标准是RFC 2858（Multiprotocol Extensions for BGP-4，BGP-4的多协议扩展）。

MP-BGP在组播上的应用简称为MBGP（Multicast BGP，组播BGP）。

l 本章主要介绍MP-BGP应用于组播的配置事项，即MBGP配置事项，有关BGP的详细内容以及配置事项，请参见“三层技术-IP路由配置指导”中的“BGP”。

l 有关RPF检查的详细内容以及配置事项，请参见“IP组播配置指导”中的“组播路由与转发”。


1.2 协议规范

与MBGP相关的协议规范有：

l RFC 2858：Multiprotocol Extensions for BGP-4

l RFC 3392：Capabilities Advertisement with BGP-4

l draft-ietf-idmr-bgp-mcast-attr-00：BGP Attributes for Multicast Tree Construction

l RFC4271，A Border Gateway Protocol 4 (BGP-4)

l RFC5291，Outbound Route Filtering Capability for BGP-4

l RFC5292，Address-Prefix-Based Outbound Route Filter for BGP-4


1.3 MBGP配置任务简介

表1-1 MBGP配置任务简介

配置任务 |  | 说明 | 详细配置
配置MBGP基本功能 |  | 必选 | 1.4.2
控制路由信息的发布与接收 | 配置MBGP引入其他路由 | 必选 | 1.5.2
 | 配置MBGP引入缺省路由 | 可选 | 1.5.3
 | 配置MBGP路由聚合 | 可选 | 1.5.4
 | 配置向IPv4 MBGP对等体/IPv4 MBGP对等体组发送缺省路由 | 可选 | 1.5.5
 | 配置MBGP路由信息的发布策略 | 可选 | 1.5.6
 | 配置MBGP路由信息的接收策略 | 可选 | 1.5.7
 | 配置MBGP路由衰减 | 可选 | 1.5.8
配置MBGP的路由属性 | 配置MBGP路由管理优先级 | 可选 | 1.6.2
 | 配置本地优先级缺省值 | 可选 | 1.6.3
 | 配置MED属性 | 可选 | 1.6.4
 | 配置发布路由时将自身地址做为下一跳 | 可选 | 1.6.5
 | 配置AS_PATH属性 | 可选 | 1.6.6
调整和优化MBGP网络 | 配置MBGP软复位 | 可选 | 1.7.2
 | 配置BGP ORF能力 | 可选 | 1.7.3
 | 配置MBGP负载分担路由条数 | 可选 | 1.7.4
配置大型MBGP网络 | 配置IPv4 MBGP对等体组 | 可选 | 1.8.2
 | 配置MBGP团体 | 可选 | 1.8.3
 | 配置MBGP路由反射器 | 可选 | 1.8.4


1.4 配置MBGP基本功能

1.4.1 配置准备

在配置MBGP之前，需完成以下任务：相邻节点的网络层互通。

1.4.2 配置MBGP基本功能

表1-2 配置MBGP基本功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入BGP视图 | bgp as-number | -
指定对等体/对等体组的AS号 | peer { group-name | ip-address } as-number as-number | 必选 缺省情况下，对等体/对等体组无AS号
创建并进入MBGP地址族视图 | ipv4-family multicast | 必选
激活在IPv4单播视图下创建的对等体/对等体组 | peer { group-name | ip-address } enable | 必选 缺省情况下，对等体/对等体组在BGP IPv4组播地址族视图下处于非激活状态
为从IPv4 MBGP对等体/IPv4 MBGP对等体组接收的路由分配首选值 | peer { group-name | ip-address } preferred-value value | 可选 缺省情况下，从IPv4 MBGP对等体/IPv4 MBGP对等体组接收的路由的首选值为0


1.5 控制路由信息的发布与接收

1.5.1 配置准备

在控制MBGP路由信息的发布与接收之前，需完成以下任务：配置MBGP基本功能。

1.5.2 配置MBGP引入其他路由

MBGP可以向邻居AS发送本地AS内部网络的路由信息，但MBGP不是自己去发现AS内部的路由信息，而是引入IGP的路由信息到MBGP路由表中，并发布给MBGP对等体。在引入IGP路由时，还可以针对不同的路由协议来对路由信息进行过滤。

表1-3 配置MBGP引入其他路由

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入BGP视图 | bgp as-number | -
进入MBGP地址族视图 | ipv4-family multicast | -
引入其它协议路由信息并通告 | import-route protocol [ { process-id | all-processes } [ allow-direct | med med-value | route-policy route-policy-name ] * ] | 二者必选其一 缺省情况下，MBGP不引入、不通告其它协议的路由，不发布任何网段路由 目前只有OSPF协议支持配置 allow-direct 参数
将网段路由发布到MBGP路由表中 | network ip-address [ mask | mask-length ] [ short-cut | route-policy route-policy-name ]

l 通过 import-route 命令引入到MBGP路由表中的路由的ORIGIN属性为Incomplete。

l 使用 network 命令发布到MBGP路由表中的网段路由的ORIGIN属性为IGP。

l 要发布的网段路由必须存在于本地的IP路由表中，使用路由策略可以更为灵活的控制所发布的路由。

1.5.3 配置MBGP引入缺省路由

MBGP不能通过 import-route 命令从其它协议引入缺省路由，如果要引入其它协议的缺省路由，必须要配置下列命令。

表1-4 配置MBGP引入其它协议的缺省路由

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入BGP视图 | bgp as-number | -
进入MBGP地址族视图 | ipv4-family multicast | -
引入其它协议路由信息并通告 | import-route protocol [ { process-id | all-processes } [ allow-direct | med med-value | route-policy route-policy-name ] * ] | 必选 缺省情况下，MBGP不引入其它协议的路由 目前只有OSPF协议支持配置 allow-direct 参数
允许将其它协议的缺省路由引入到MBGP路由表中 | default-route imported | 必选 缺省情况下，MBGP不引入其它协议的缺省路由

1.5.4 配置MBGP路由聚合

在中型或大型MBGP网络中，在向组播对等体发布路由信息时，需要配置路由聚合，减小对等体路由表中的路由数量。MBGP支持以下两种聚合方式：

自动聚合：对MBGP引入的IGP子网路由进行聚合。配置自动聚合后，MBGP将不再发布从IGP引入的子网路由，而是发布聚合后的自然网段的路由。缺省路由和用 network 命令引入的路由不能进行自动聚合。

手动聚合：对MBGP本地路由进行聚合。手动聚合的优先级高于自动聚合的优先级。

表1-5 配置MBGP路由聚合

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
进入BGP视图 |  | bgp as-number | -
进入MBGP地址族视图 |  | ipv4-family multicast | -
配置MBGP路由聚合 | 配置对引入的子网路由进行自动聚合 | summary automatic | 二者必选其一 缺省情况下，不进行路由聚合 可以根据需求选择路由聚合方式；当二者同时配置时，手动路由聚合生效
 | 配置手动路由聚合 | aggregate ip-address { mask | mask-length } [ as-set | attribute-policy route-policy-name | detail-suppressed | origin-policy route-policy-name | suppress-policy route-policy-name ] *

1.5.5 配置向IPv4 MBGP对等体/IPv4 MBGP对等体组发送缺省路由

表1-6 配置向IPv4 MBGP/IPv4 MBGP组发送缺省路由

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入BGP视图 | bgp as-number | -
进入MBGP地址族视图 | ipv4-family multicast | -
向IPv4 MBGP对等体/IPv4 MBGP对等体组发送缺省路由 | peer { group-name | ip-address } default-route-advertise [ route-policy route-policy-name ] | 必选 缺省情况下，不向IPv4 MBGP对等体/IPv4 MBGP对等体组发送缺省路由

执行 peer default-route-advertise 命令后，不论本地路由表中是否存在缺省路由，都将向指定IPv4 MBGP对等体/IPv4 MBGP对等体组发布一条下一跳地址为本地地址的缺省路由。

1.5.6 配置MBGP路由信息的发布策略

用户可以根据需求选择过滤策略，同时配置几种过滤策略时，按照如下顺序执行：

l filter-policy export

l peer filter-policy export

l peer as-path-acl export

l peer ip-prefix export

l peer route-policy export

只有通过前面的过滤策略，才能继续执行后面的过滤策略；只有通过所有配置的过滤策略后，路由信息才能被发布。

表1-7 配置MBGP路由信息的发布策略

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入BGP视图 | bgp as-number | -
进入MBGP地址族视图 | ipv4-family multicast | -
配置对发布的路由信息进行过滤 | filter-policy { acl-number | ip-prefix ip-prefix-name } export [ direct | isis process-id | ospf process-id | rip process-id | static ] | 必选其一 缺省情况下，发布路由信息时不对路由进行过滤
对发布给IPv4 MBGP对等体/IPv4 MBGP对等体组的路由指定路由策略 | peer { group-name | peer-address } route-policy route-policy-name export
为IPv4 MBGP对等体/IPv4 MBGP对等体组设置基于ACL的过滤策略 | peer { group-name | ip-address } filter-policy acl-number export
为IPv4 MBGP对等体/IPv4 MBGP对等体组设置基于AS路径过滤列表的MBGP路由过滤策略 | peer { group-name | ip-address } as-path-acl as-path-acl-number export
为IPv4 MBGP对等体/IPv4 MBGP对等体组设置基于IP前缀列表的路由过滤策略 | peer { group-name | ip-address } ip-prefix ip-prefix-name export

1.5.7 配置MBGP路由信息的接收策略

通过配置MBGP路由信息的接收策略，可以对从IPv4 MBGP对等体/IPv4 MBGP对等体组接收的路由进行过滤，只有满足指定条件的路由才能被接收并加到MBGP路由表中。

用户可以根据需求选择过滤策略，同时配置几种过滤策略时，按照如下顺序执行：

l filter-policy import

l peer filter-policy import

l peer as-path-acl import

l peer ip-prefix import

l peer route-policy import

只有通过前面的过滤策略，才能继续执行后面的过滤策略；只有通过所有配置的过滤策略后，路由信息才能被接收。

表1-8 配置MBGP路由信息的接收策略

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入BGP视图 | bgp as-number | -
进入MBGP地址族视图 | ipv4-family multicast | -
对接收的路由信息进行过滤 | filter-policy { acl-number | ip-prefix ip-prefix-name } import | 必选其一 缺省情况下，不对接收的路由信息进行过滤
对来自IPv4 MBGP对等体/IPv4 MBGP对等体组的路由指定路由策略 | peer { group-name | ip-address } route-policy policy-name import
为IPv4 MBGP对等体/IPv4 MBGP对等体组设置基于ACL的过滤策略 | peer { group-name | ip-address } filter-policy acl-number import
为IPv4 MBGP对等体/IPv4 MBGP对等体组设置基于AS路径过滤列表的MBGP路由过滤策略 | peer { group-name | ip-address } as-path-acl as-path-acl-number import
为IPv4 MBGP对等体/IPv4 MBGP对等体组设置基于IP前缀列表的路由过滤策略 | peer { group-name | ip-address } ip-prefix ip-prefix-name import
配置允许从IPv4 MBGP对等体/IPv4 MBGP对等体组接收的最大路由数 | peer { group-name | ip-address } route-limit limit [ percentage ] | 可选 缺省情况下，允许从IPv4 MBGP对等体/IPv4 MBGP对等体组接收的最大路由数无限制

对等体组的成员可以与所在的组使用不同的入方向路由策略，即接收路由时，各对等体可以选择自己的策略。

1.5.8 配置MBGP路由衰减

通过配置MBGP衰减，可以抑制不稳定的路由信息，不将这类路由加入到MBGP路由表中，也不将这类路由向其他IPv4 MBGP对等体发布。

表1-9 配置MBGP路由衰减

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入BGP视图 | bgp as-number | -
进入MBGP地址族视图 | ipv4-family multicast | -
配置MBGP路由衰减参数 | dampening [ half-life-reachable half-life-unreachable reuse suppress ceiling | route-policy route-policy-name ] * | 必选 缺省情况下，没有配置MBGP路由衰减


1.6 配置MBGP的路由属性

MBGP具有很多路由属性，利用这些属性可以改变MBGP的选路策略。

1.6.1 配置准备

在配置MBGP的路由属性之前，需完成以下任务：配置MBGP基本功能。

1.6.2 配置MBGP路由管理优先级

应用路由策略，可以为匹配过滤条件的特定路由配置优先级。对于那些没有匹配的路由，使用缺省优先级。

表1-10 配置MBGP路由管理优先级

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入BGP视图 | bgp as-number | -
进入MBGP地址族视图 | ipv4-family multicast | -
配置MBGP路由的管理优先级 | preference { external-preference internal-preference local-preference | route-policy route-policy-name } | 可选 缺省情况下，MBGP EBGP路由的管理优先级为255，MBGP IBGP路由的管理优先级为255，本地产生的MBGP路由的管理优先级为130

1.6.3 配置本地优先级缺省值

表1-11 配置本地优先级缺省值

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入BGP视图 | bgp as-number | -
进入MBGP地址族视图 | ipv4-family multicast | -
配置本地优先级的缺省值 | default local-preference value | 可选 缺省情况下，本地优先级的缺省值为100

1.6.4 配置MED属性

在其它条件相同的情况下，MED较小的路由被优选作为自治系统的外部路由。

表1-12 配置MED属性

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
进入BGP视图 |  | bgp as-number | -
进入MBGP地址族视图 |  | ipv4-family multicast | -
配置MED属性 | 配置系统MED的缺省值 | default med med-value | 可选 缺省情况下，MED的缺省值为0
 | 配置允许比较来自不同AS邻居的路由路径的MED属性值 | compare-different-as-med | 可选 缺省情况下，不允许比较来自不同AS邻居的路由路径的MED属性值
 | 配置根据路由来自的AS进行分组对MED排序优选 | bestroute compare-med | 可选 缺省情况下，不根据路由来自的AS进行分组对MED排序优选
 | 配置允许比较联盟对等体的路由按MED值进行优选 | bestroute med-confederation | 可选 缺省情况下，比较联盟对等体的路由时不考虑MED值

1.6.5 配置发布路由时将自身地址作为下一跳

在某些组网环境中，本地路由器向MBGP IBGP对等体/MBGP IBGP对等体组发布路由时，为保证MBGP IBGP邻居能够找到正确的下一跳，可以配置 peer next-hop-local 命令将自身地址作为下一跳地址。如果配置了负载分担，则不论是否配置了 peer next-hop-local 命令，本地路由器向MBGP IBGP对等体/MBGP IBGP对等体组发布路由时都先将下一跳地址改变为自身地址。

在第三方下一跳（即两个MBGP连接在同一网段的广播网）这种特殊的组网环境中，缺省情况下，向MBGP EBGP对等体/MBGP EBGP对等体组发布路由时，不将自身地址作为下一跳；只有配置了 peer next-hop-local 命令，才将自身地址作为下一跳。

表1-13 配置发布路由时将自身地址作为下一跳

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入BGP视图 | bgp as-number | -
进入MBGP地址族视图 | ipv4-family multicast | -
配置发布路由时将自身地址作为下一跳 | peer { group-name | ip-address } next-hop-local | 可选 缺省情况下，向MBGP EBGP对等体/对等体组发布路由时，将自身地址作为下一跳；向MBGP IBGP对等体/对等体组发布路由时，不将自身地址作为下一跳

1.6.6 配置AS_PATH属性

通常情况下，MBGP会检查对等体发来的路由的AS_PATH属性，如果其中已存在本地AS号，则MBGP会忽略此路由，以免形成路由环路。

表1-14 配置AS_PATH属性

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
进入BGP视图 |  | bgp as-number | -
进入MBGP地址族视图 |  | ipv4-family multicast | -
配置AS_PATH属性 | 配置允许本地AS号重复出现的次数 | peer { group-name | ip-address } allow-as-loop [ number ] | 可选 缺省情况下，不允许本地AS重复
 | 禁止路由器将AS_PATH当作选路算法中的一个因素 | bestroute as-path-neglect | 可选 缺省情况下，路由器可以将AS_PATH当作选路算法中的一个因素
 | 配置发送MBGP更新报文时AS_PATH属性中不携带私有AS号 | peer { group-name | ip-address } public-as-only | 可选 缺省情况下，发送MBGP更新报文时，允许携带私有自治系统号


1.7 调整和优化MBGP网络

1.7.1 配置准备

在调整和优化MBGP网络之前，需完成以下任务：配置MBGP基本功能。

1.7.2 配置MBGP软复位

MBGP的选路策略改变后，为了使新的策略生效，必须复位MBGP连接，但这样会造成短暂的MBGP连接中断。

通过使能Route-Refresh功能，当策略改变后，系统可以在不中断MBGP连接的情况下，自动对MBGP路由表进行动态刷新。

如果对等体不支持Route-Refresh功能，则可以将从对等体接收的所有路由更新保存在本地，当选路策略发生改变后，在不中断连接的情况下重新刷新MBGP路由表，并应用新的策略。

1. 通过Route-Refresh实现MBGP软复位

在对等体支持并使能Route-Refresh功能的情况下，如果MBGP的路由策略发生了变化，本地路由器会向MBGP对等体发布Router-Refresh消息，收到此消息的对等体会将其路由信息重新发给本地路由器。这样，在不中断MBGP连接的情况下，就可以对MBGP路由表进行动态更新，并应用新的选路策略。

表1-15 通过Route-Refresh实现MBGP软复位

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入BGP视图 | bgp as-number | -
使能BGP路由刷新功能 | peer { group-name | ip-address } capability-advertise route-refresh | 可选 缺省情况下，路由刷新功能处于使能状态

2. 通过将所有路由更新保存在本地实现MBGP软复位

当对等体不支持Route-Refresh功能时，可通过配置 peer keep-all-routes 命令实现软复位功能。

用户也可以通过执行 refresh bgp ipv4 multicast 命令对保存在本地的所有路由重新过一遍策略。

表1-16 通过将所有路由更新保存在本地实现MBGP软复位

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入BGP视图 | bgp as-number | -
禁止BGP路由刷新和多协议扩展功能 | peer { group-name | ip-address } capability-advertise conventional | 可选 缺省情况下，BGP路由刷新和多协议扩展功能处于使能状态
进入MBGP地址族视图 | ipv4-family multicast | -
保存所有来自IPv4 MBGP对等体/IPv4 MBGP对等体组的原始路由信息，即使这些路由没有通过已配置的入口策略 | peer { group-name | ip-address } keep-all-routes | 必选 缺省情况下，不保存IPv4 MBGP对等体/IPv4 MBGP对等体组的原始路由信息
退回用户视图 | return | -
手工对MBGP连接进行软复位 | refresh bgp ipv4 multicast { all | ip-address | group group-name | external | internal } { export | import } | 可选

1.7.3 使能MBGP ORF能力功能

BGP ORF特性是将本地入口策略通过Route-refresh报文发送给邻居，当邻居需要向BGP对等体发送Update更新报文时，通过本地的路由策略后还需要进行ORF策略的过滤，只有通过ORF策略的路由信息才会发给BGP对等体，以达到减少BGP邻居间Update更新报文的交互，节省网络资源的目的。

使能BGP ORF能力后，本地和BGP对等体会通过Open报文协商ORF能力（即收发的报文里是否允许携带ORF信息，如果允许携带，是否可以携带非标准的ORF信息），当协商完毕并成功建立邻居关系后，可以通过特殊的Route-refresh报文交互ORF信息。

ORF能力协商成功需要两端的配置来保证，关于两端参数的选择请参见 表1-18 。

表1-17 配置BGP ORF能力

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入BGP视图 | bgp as-number | -
使能BGP路由刷新功能 | peer { group-name | ip-address } capability-advertise route-refresh | 可选 缺省情况下，BGP路由刷新功能处于使能状态 如果该功能当前处于未使能状态，则必须配置该命令 本命令的详细介绍请参见“三层技术-IP路由命令参考”中的“BGP”
使能BGP ORF非标准功能 | peer { group-name | ipv6-address } capability-advertise orf non-standard | 可选 缺省情况下，BGP ORF能力支持RFC5291和RFC5292的标准能力 如果该功能当前处于未使能状态，则必须配置该命令 本命令的详细介绍请参见”IP路由命令参考”中的“BGP”
进入MBGP地址族视图 | ipv4-family multicast | -
使能BGP ORF地址前缀能力协商功能 | peer { group-name | ip-address } capability-advertise orf ip-prefix { both | receive | send } | 必选 缺省情况下，BGP 不支持ORF 地址前缀的能力协商

表1-18 both、send、receive参数选择以及配置效果描述表

本地选择参数 | 对端选择参数 | 协商成功后
send | receive | 本端的ORF发送能力，对端的ORF接收能力
 | both
receive | send | 本端的ORF接收能力，对端的ORF发送能力
 | both
both | both | 双向的ORF发送和接收能力

1.7.4 配置MBGP负载分担路由条数

表1-19 配置MBGP负载分担路由条数

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入BGP视图 | bgp as-number | -
进入MBGP地址族视图 | ipv4-family multicast | -
配置进行MBGP负载分担的最大路由条数 | balance number | 必选 没有进行MBGP负载分担


1.8 配置大型MBGP网络

1.8.1 配置准备

在配置大型MBGP网络之前，需完成以下任务：相邻节点的网络层互通。

1.8.2 配置IPv4 MBGP对等体组

在大型网络中，对等体的数目众多，配置和维护极为不便。使用对等体组可以降低管理的难度，还可以提高路由发布效率。可以在MBGP中使能IPv4单播对等体组，从而达到共同管理组内IPv4 MBGP对等体的目的。MBGP中不能单独创建对等体组。

表1-20 配置IPv4 MBGP对等体组

操作 | 命令 | 说明
进入系统视图 | system-view | -
启动BGP，进入BGP视图 | bgp as-number | -
创建BGP对等体组 | group group-name [ external | internal ] | 必选 缺省情况下，没有创建BGP对等体组
将对等体加入已存在的对等体组 | peer ip-address group group-name [ as-number as-number ] | 必选 缺省情况下，对等体不属于任何对等体组
进入MBGP地址族视图 | ipv4-family multicast | -
使能IPv4单播对等体组 | peer group-name enable | 必选
将IPv4 MBGP对等体加入对等体组中 | peer ip-address group group-name | 必选 缺省情况下，IPv4 MBGP对等体不属于任何对等体组

l 配置IPv4 MBGP对等体组的前提是，在BGP-IPv4组播地址族下存在已经使能的IPv4单播对等体组。

l 将IPv4 MBGP对等体加入对等体组，需要先在BGP视图下将相应的对等体加入对等体组。

1.8.3 配置MBGP团体

对等体组可以使一组对等体共享相同的策略，而利用团体可以使多个AS中的一组BGP路由器共享相同的策略。团体是一个路由属性，在BGP对等体之间传播，它并不受到AS范围的限制。

BGP路由器在将带有团体属性的路由发布给其它对等体之前，可以改变此路由原有的团体属性。除了使用公认的团体属性外，用户还可以使用团体属性列表自定义扩展团体属性，以便更为灵活地控制路由策略。

表1-21 配置MBGP团体

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
进入BGP视图 |  | bgp as-number | -
进入MBGP地址族视图 |  | ipv4-family multicast | -
配置向MBGP对等体/MBGP对等体组发布团体属性 | 配置发布团体属性 | peer { group-name | ip-address } advertise-community | 必选 缺省情况下，不将团体属性和扩展团体属性发布给任何IPv4 MBGP对等体/IPv4 MBGP对等体组
 | 配置发布扩展团体属性 | peer { group-name | ip-address } advertise-ext-community
对发布给IPv4 MBGP对等体/IPv4 MBGP对等体组的路由指定路由策略 |  | peer { group-name | ip-address } route-policy route-policy-name export | 必选 缺省情况下，不指定IPv4 MBGP对等体/IPv4 MBGP对等体组的路由策略

l 配置MBGP团体时，必须使用路由策略来定义具体的团体属性，然后在发布路由信息时应用此路由策略。

l 关于路由策略的配置，请参见“三层技术-IP路由命令参考”中的“路由策略”。

1.8.4 配置MBGP路由反射器

在AS内部，为保证MBGP IBGP对等体之间的连通性，需要在MBGP IBGP对等体之间建立全连接关系。当MBGP IBGP对等体数目很多时，在MBGP IBGP对等体之间建立全连接的开销很大。使用路由反射器，可以解决这个问题。

表1-22 配置MBGP路由反射器

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入BGP视图 | bgp as-number | -
进入MBGP地址族视图 | ipv4-family multicast | -
将本设备配置为路由反射器，并指定IPv4 MBGP对等体（组）作为路由反射器的客户 | peer { group-name | peer-address } reflect-client | 必选 缺省情况下，没有配置路由反射器及其客户
配置允许客户到客户的路由反射 | reflect between-clients | 可选 缺省情况下，允许客户到客户的路由反射
配置路由反射器的集群ID | reflector cluster-id cluster-id | 可选 缺省情况下，每个路由反射器是使用自己的Router ID作为集群ID

l 通常情况下，路由反射器的客户之间不要求是全连接的，路由缺省通过反射器从一个客户反射到其它客户；如果客户之间是全连接的，可以禁止客户间的反射，以便减少开销。

l 通常，一个集群里只有一个路由反射器。此时是由反射器的路由器ID来识别该集群的。设置多个路由反射器可提高网络的稳定性。如果一个集群中配有多个路由反射器，请使用相关命令为所有的路由反射器配置同样的集群ID，以避免路由循环。


1.9 MBGP显示和维护

1.9.1 MBGP配置显示

在完成上述配置后，在任意视图下执行 display 命令可以显示配置后MBGP的运行情况，通过查看显示信息验证配置的效果。

表1-23 MBGP配置显示

操作 | 命令
显示IPv4 BGP组播路由表中的路由信息 | display ip multicast routing-table [ verbose] [ | { begin | exclude | include } regular-expression ]
显示指定目的地址的组播路由信息 | display ip multicast routing-table ip-address [ mask-length | mask ] [ longer-match ] [ verbose ] [ | { begin | exclude | include } regular-expression ]
显示IPv4 MBGP对等体组信息 | display bgp multicast group [ group-name ] [ | { begin | exclude | include } regular-expression ]
显示MBGP发布的路由信息 | display bgp multicast network [ | { begin | exclude | include } regular-expression ]
显示AS路径信息 | display bgp multicast paths [ as-regular-expression | | { begin | exclude | include } regular-expression ]
显示IPv4 MBGP对等体/IPv4 MBGP对等体组的信息 | display bgp multicast peer [ [ ip-address ] verbose ] [ | { begin | exclude | include } regular-expression ]
收到的邻居ORF信息中的前缀信息 | display bgp multicast peer ip-address received ip-prefix [ | { begin | exclude | include } regular-expression ]
显示MBGP路由信息 | display bgp multicast routing-table [ ip-address [ { mask | mask-length } [ longer-prefixes ] ] ] [ | { begin | exclude | include } regular-expression ]
显示匹配指定AS路径过滤列表的MBGP路由信息 | display bgp multicast routing-table as-path-acl as-path-acl-number [ | { begin | exclude | include } regular-expression ]
显示CIDR的MBGP路由信息 | display bgp multicast routing-table cidr [ | { begin | exclude | include } regular-expression ]
显示指定MBGP团体的MBGP路由信息 | display bgp multicast routing-table community[ aa:nn&<1-13> ] [ no-advertise | no-export | no-export-subconfed ] * [ whole-match ] [ | { begin | exclude | include } regular-expression ]
显示匹配指定MBGP团体列表的MBGP路由 | display bgp multicast routing-table community-list { { basic-community-list-number | comm-list-name } [ whole-match ] | adv-community-list-number } [ | { begin | exclude | include } regular-expression ]
显示MBGP衰减的MBGP路由信息 | display bgp multicast routing-table dampened [ | { begin | exclude | include } regular-expression ]
显示MBGP衰减的配置参数 | display bgp multicast routing-table dampening parameter [ | { begin | exclude | include } regular-expression ]
显示源AS不一致的路由 | display bgp multicast routing-table different-origin-as [ | { begin | exclude | include } regular-expression ]
显示MBGP路由振荡统计信息 | display bgp multicast routing-table flap-info [ regular-expression as-regular-expression | [ as-path-acl as-path-acl-number | ip-address [ { mask | mask-length } [ longer-match ] ] ] [ | { begin | exclude | include } regular-expression ] ]
显示向指定的IPv4 MBGP对等体发送或者从IPv4 MBGP对等体收到的路由信息 | display bgp multicast routing-table peer ip-address { advertised-routes | received-routes } [ network-address [ mask | mask-length ] | statistic ] [ | { begin | exclude | include } regular-expression ]
显示与指定的AS路径正则表达式相匹配的IPv4 MBGP路由信息 | display bgp multicast routing-table regular-expression as-regular-expression
显示MBGP的路由统计信息 | display bgp multicast routing-table statistic [ | { begin | exclude | include } regular-expression ]

1.9.2 复位MBGP连接

当MBGP路由策略或协议发生变化后，如果需要通过复位MBGP连接使新的配置生效，请在用户视图下进行下列配置。

表1-24 复位MBGP连接

操作 | 命令
复位指定的MBGP连接 | reset bgp ipv4 multicast { all | as-number | ip-address | group group-name | external | internal }

1.9.3 清除MBGP信息

在用户视图下，执行 reset 命令可以清除MBGP相关统计信息。

表1-25 清除MBGP信息

操作 | 命令
清除路由的衰减信息并释放被抑制的路由 | reset bgp ipv4 multicast dampening [ ip-address [ mask | mask-length ] ]
清除路由的振荡统计信息 | reset bgp ipv4 multicast flap-info [ regexp as-path-regexp | as-path-acl as-path-acl-number | ip-address [ mask | mask-length ] ]


1.10 MBGP典型配置举例

1. 组网需求

l 网络中存在两个自治系统：PIM-SM 1属于AS 100，PIM-SM 2属于AS 200。各AS内部采用OSPF进行互联，AS之间采用MBGP交换组播路由信息；

l 组播源属于AS 100内的PIM-SM 1，接收者则属于AS 200内的PIM-SM 2；

l 将Switch A和Switch B各自的Loopback0接口分别配置为各自PIM-SM域的C-BSR和C-RP；

l 在Switch A与Switch B之间通过MBGP建立MSDP对等体关系。

2. 组网图

图1-1 MBGP典型配置组网图

设备 | 接口 | IP地址 | 设备 | 接口 | IP地址
Source | - | 10.110.1.100/24 | Switch C | Vlan-int200 | 10.110.2.1/24
Switch A | Vlan-int100 | 10.110.1.1/24 |  | Vlan-int102 | 192.168.2.2/24
 | Vlan-int101 | 192.168.1.1/24 |  | Vlan-int104 | 192.168.4.1/24
 | Loop0 | 1.1.1.1/32 |  | Loop0 | 3.3.3.3/32
Switch B | Vlan-int101 | 192.168.1.2/24 | Switch D | Vlan-int103 | 192.168.3.2/24
 | Vlan-int102 | 192.168.2.1/24 |  | Vlan-int104 | 192.168.4.2/24
 | Vlan-int103 | 192.168.3.1/24 |  | Loop0 | 4.4.4.4/32
 | Loop0 | 2.2.2.2/32 |

3. 配置步骤

(1) 配置各交换机接口的IP地址和单播路由协议

l 请按照图1-1 配置各接口的IP地址和子网掩码，具体配置过程略。

l 配置AS200内的各交换机之间采用OSPF路由协议交换路由信息（AS内各路由器创建的OSPF进程号为1），确保各AS内部在网络层互通，能学到彼此Loopback接口的路由，具体配置过程略。

(2) 使能IP组播路由，使能PIM-SM和IGMP，并配置BSR的服务边界

# 在Switch A上使能IP组播路由，在各接口上使能PIM-SM。

<SwitchA> system-view

[SwitchA] multicast routing-enable

[SwitchA] interface vlan-interface 100

[SwitchA-Vlan-interface100] pim sm

[SwitchA-Vlan-interface100] quit

[SwitchA] interface vlan-interface 101

[SwitchA-Vlan-interface101] pim sm

[SwitchA-Vlan-interface101] quit

Switch B和Switch D上的配置与Switch A相似，配置过程略。

# 在Switch C上使能IP组播路由，在各接口上使能PIM-SM，并在主机侧接口Vlan-interface200上使能IGMP。

<SwitchC> system-view

[SwitchC] multicast routing-enable

[SwitchC] interface vlan-interface 102

[SwitchC-Vlan-interface102] pim sm

[SwitchC-Vlan-interface102] quit

[SwitchC] interface vlan-interface 104

[SwitchC-Vlan-interface104] pim sm

[SwitchC-Vlan-interface104] quit

[SwitchC] interface vlan-interface 200

[SwitchC-Vlan-interface200] pim sm

[SwitchC-Vlan-interface200] igmp enable

[SwitchC-Vlan-interface200] quit

# 在Switch A上配置BSR的服务边界。

[SwitchA] interface vlan-interface 101

[SwitchA-Vlan-interface101] pim bsr-boundary

[SwitchA-Vlan-interface101] quit

# 在Switch B上配置BSR的服务边界。

[SwitchB] interface vlan-interface 101

[SwitchB-Vlan-interface101] pim bsr-boundary

[SwitchB-Vlan-interface101] quit

(3) 配置Loopback0接口和C-BSR、C-RP的位置

# 在Switch A上配置Loopback0接口和C-BSR、C-RP的位置。

[SwitchA] interface loopback 0

[SwitchA-LoopBack0] ip address 1.1.1.1 32

[SwitchA-LoopBack0] pim sm

[SwitchA-LoopBack0] quit

[SwitchA] pim

[SwitchA-pim] c-bsr loopback 0

[SwitchA-pim] c-rp loopback 0

[SwitchA-pim] quit

# 在Switch B上配置Loopback0接口和C-BSR、C-RP的位置。

[SwitchB] interface loopback 0

[SwitchB-LoopBack0] ip address 2.2.2.2 32

[SwitchB-LoopBack0] pim sm

[SwitchB-LoopBack0] quit

[SwitchB] pim

[SwitchB-pim] c-bsr loopback 0

[SwitchB-pim] c-rp loopback 0

[SwitchB-pim] quit

(4) 配置BGP协议，配置MBGP对等体，并互相引入路由

# 在Switch A上配置EBGP邻接关系、配置MBGP对等体。

[SwitchA] bgp 100

[SwitchA-bgp] router-id 1.1.1.1

[SwitchA-bgp] peer 192.168.1.2 as-number 200

[SwitchA-bgp] import-route direct

[SwitchA-bgp] ipv4-family multicast

[SwitchA-bgp-af-mul] peer 192.168.1.2 enable

[SwitchA-bgp-af-mul] import-route direct

[SwitchA-bgp-af-mul] quit

[SwitchA-bgp] quit

# 在Switch B上配置EBGP邻接关系、配置MBGP对等体，并引入OSPF路由。

[SwitchB] bgp 200

[SwitchB-bgp] router-id 2.2.2.2

[SwitchB-bgp] peer 192.168.1.1 as-number 100

[SwitchB-bgp] import-route ospf 1

[SwitchB-bgp] ipv4-family multicast

[SwitchB-bgp-af-mul] peer 192.168.1.1 enable

[SwitchB-bgp-af-mul] import-route ospf 1

[SwitchB-bgp-af-mul] quit

[SwitchB-bgp] quit

(5) 配置MSDP对等体

# 在Switch A上配置MSDP对等体。

[SwitchA] msdp

[SwitchA-msdp] peer 192.168.1.2 connect-interface vlan-interface 101

[SwitchA-msdp] quit

# 在Switch B上配置MSDP对等体。

[SwitchB] msdp

[SwitchB-msdp] peer 192.168.1.1 connect-interface vlan-interface 101

[SwitchB-msdp] quit

(6) 检验配置效果

通过使用 display bgp multicast peer 命令可以查看交换机之间MBGP对等体的关系。例如：

# 查看Switch B上MBGP对等体关系的信息。

[SwitchB] display bgp multicast peer

BGP local router ID : 2.2.2.2

Local AS number : 200

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

Peer AS MsgRcvd MsgSent OutQ PrefRcv Up/Down State

192.168.1.1 100 56 56 0 0 00:40:54 Established

通过使用 display msdp brief 命令可以查看交换机之间MSDP对等体建立情况。例如：

# 查看Switch B上MSDP对等体建立情况的简要信息。

[SwitchB] display msdp brief

MSDP Peer Brief Information of VPN-Instance: public net

Configured Up Listen Connect Shutdown Down

1 1 0 0 0 0

Peer's Address State Up/Down time AS SA Count Reset Count

192.168.1.1 Up 00:07:17 100 1 0


1 MLD Snooping配置

相关链接

  • 1.1 MLD Snooping简介
  • 1.2 MLD Snooping配置任务简介
  • 1.3 配置MLD Snooping基本功能
  • 1.4 配置MLD Snooping端口功能
  • 1.5 配置MLD Snooping查询器
  • 1.6 配置MLD Snooping Proxying
  • 1.7 配置MLD Snooping策略
  • 1.8 MLD Snooping显示和维护
  • 1.9 MLD Snooping典型配置举例
  • 1.10 常见配置错误举例
  • 1.11 附录
父主题： 10-MLD Snooping配置


1.1 MLD Snooping简介

MLD Snooping是Multicast Listener Discovery Snooping（组播侦听者发现协议窥探）的简称。它是运行在二层设备上的IPv6组播约束机制，用于管理和控制IPv6组播组。

1.1.1 MLD Snooping原理

运行MLD Snooping的二层设备通过对收到的MLD报文进行分析，为端口和MAC组播地址建立起映射关系，并根据这样的映射关系转发IPv6组播数据。

如图1-1 所示，当二层设备没有运行MLD Snooping时，IPv6组播数据报文在二层被广播；当二层设备运行了MLD Snooping后，已知IPv6组播组的组播数据报文不会在二层被广播，而在二层被组播给指定的接收者。

图1-1 二层设备运行MLD Snooping前后的对比

MLD Snooping通过二层组播将信息只转发给有需要的接收者，可以带来以下好处：

l 减少了二层网络中的广播报文，节约了网络带宽；

l 增强了IPv6组播信息的安全性；

l 为实现对每台主机的单独计费带来了方便。

1.1.2 MLD Snooping基本概念

1. MLD Snooping相关端口

如图1-2 所示，Router A连接组播源，在Switch A和Switch B上分别运行MLD Snooping，Host A和Host C为接收者主机（即IPv6组播组成员）。

图1-2 MLD Snooping相关端口

结合图1-2，介绍一下MLD Snooping相关的端口概念：

l 路由器端口（Router Port）：交换机上朝向三层组播设备（DR或MLD查询器）一侧的端口，如Switch A和Switch B各自的Ethernet1/0/1端口。交换机将本设备上的所有路由器端口都记录在路由器端口列表中。

l 成员端口（Member Port）：又称IPv6组播组成员端口，表示交换机上朝向IPv6组播组成员一侧的端口，如Switch A的Ethernet1/0/2和Ethernet1/0/3端口，以及Switch B的Ethernet1/0/2端口。交换机将本设备上的所有成员端口都记录在MLD Snooping转发表中。

l 本文中提到的路由器端口都是指交换机上朝向组播路由器的端口，而不是指路由器上的端口。

l 如不特别指明，本文中提到的路由器/成员端口均包括动态和静态端口。

l 在运行了MLD Snooping的交换机上，所有收到源地址不为0::0的MLD普遍组查询报文或IPv6 PIM Hello报文的端口都将被视为动态路由器端口。有关IPv6 PIM Hello报文的详细介绍，请参见“IP组播配置指导”中的“IPv6 PIM”。

2. MLD Snooping动态端口老化定时器

表1-1 MLD Snooping动态端口老化定时器

定时器 | 说明 | 超时前应收到的报文 | 超时后交换机的动作
动态路由器端口老化定时器 | 交换机为其每个动态路由器端口都启动一个定时器，其超时时间就是动态路由器端口老化时间 | 源地址不为0::0的MLD普遍组查询报文或IPv6 PIM Hello报文 | 将该端口从路由器端口列表中删除
动态成员端口老化定时器 | 当一个端口动态加入某IPv6组播组时，交换机为该端口启动一个定时器，其超时时间就是动态成员端口老化时间 | MLD成员关系报告报文 | 将该端口从MLD Snooping转发表中删除

MLD Snooping端口老化机制只针对动态端口，静态端口永不老化。

1.1.3 MLD Snooping工作机制

运行了MLD Snooping的交换机对不同MLD动作的具体处理方式如下：

本节中所描述的增删端口动作均只针对动态端口，静态端口只能通过相应的配置进行增删，具体步骤请参见“1.4.3 配置静态端口”。

1. 普遍组查询

MLD查询器定期向本地网段内的所有主机与路由器（FF02::1）发送MLD普遍组查询报文，以查询该网段有哪些IPv6组播组的成员。

在收到MLD普遍组查询报文时，交换机将其通过VLAN内除接收端口以外的其它所有端口转发出去，并对该报文的接收端口做如下处理：

l 如果在路由器端口列表中已包含该动态路由器端口，则重置其老化定时器。

l 如果在路由器端口列表中尚未包含该动态路由器端口，则将其添加到路由器端口列表中，并启动其老化定时器。

2. 报告成员关系

以下情况，主机会向MLD查询器发送MLD成员关系报告报文：

l 当IPv6组播组的成员主机收到MLD查询报文后，会回复MLD成员关系报告报文。

l 如果主机要加入某个IPv6组播组，它会主动向MLD查询器发送MLD成员关系报告报文以声明加入该IPv6组播组。

在收到MLD成员关系报告报文时，交换机将其通过VLAN内的所有路由器端口转发出去，从该报文中解析出主机要加入的IPv6组播组地址，并对该报文的接收端口做如下处理：

l 如果不存在该IPv6组播组所对应的转发表项，则创建转发表项，将该端口作为动态成员端口添加到出端口列表中，并启动其老化定时器；

l 如果已存在该IPv6组播组所对应的转发表项，但其出端口列表中不包含该端口，则将该端口作为动态成员端口添加到出端口列表中，并启动其老化定时器；

l 如果已存在该IPv6组播组所对应的转发表项，且其出端口列表中已包含该动态成员端口，则重置其老化定时器。

交换机不会将MLD成员关系报告报文通过非路由器端口转发出去，因为根据主机上的MLD成员关系报告抑制机制，如果非路由器端口下还有该IPv6组播组的成员主机，则这些主机在收到该报告报文后便抑制了自身的报告，从而使交换机无法获知这些端口下还有该IPv6组播组的成员主机。有关主机上的MLD成员关系报告抑制机制的详细介绍，请参见“IP组播配置指导”中的“MLD”。

3. 离开组播组

当主机离开IPv6组播组时，会通过发送MLD离开组报文，以通知组播路由器自己离开了某个IPv6组播组。当交换机从某动态成员端口上收到MLD离开组报文时，首先判断要离开的IPv6组播组所对应的转发表项是否存在，以及该IPv6组播组所对应转发表项的出端口列表中是否包含该接收端口：

l 如果不存在该IPv6组播组对应的转发表项，或者该IPv6组播组对应转发表项的出端口列表中不包含该端口，交换机不会向任何端口转发该报文，而将其直接丢弃；

l 如果存在该IPv6组播组对应的转发表项，且该IPv6组播组对应转发表项的出端口列表中包含该端口，交换机会将该报文通过VLAN内的所有路由器端口转发出去。同时，由于并不知道该接收端口下是否还有该IPv6组播组的其它成员，所以交换机不会立刻把该端口从该IPv6组播组所对应转发表项的出端口列表中删除，而是重置其老化定时器。

当MLD查询器收到MLD离开组报文后，从中解析出主机要离开的IPv6组播组的地址，并通过接收端口向该IPv6组播组发送MLD特定组查询报文。交换机在收到MLD特定组查询报文后，将其通过VLAN内的所有路由器端口和该IPv6组播组的所有成员端口转发出去。对于MLD离开组报文的接收端口（假定为动态成员端口），交换机在其老化时间内：

l 如果从该端口收到了主机响应该特定组查询的MLD成员关系报告报文，则表示该端口下还有该IPv6组播组的成员，于是重置其老化定时器；

l 如果没有从该端口收到主机响应该特定组查询的MLD成员关系报告报文，则表示该端口下已没有该IPv6组播组的成员，则在其老化时间超时后，将其从该IPv6组播组所对应转发表项的出端口列表中删除。

1.1.4 MLD Snooping Proxying

为了减少上游设备收到的MLD报告报文和离开报文的数量，可以通过在边缘设备上配置MLD Snooping Proxying（MLD Snooping代理）功能，使其能够代理下游主机来向上游设备发送报告报文和离开报文。配置了MLD Snooping Proxying功能的设备称为MLD Snooping代理设备，在其上游设备看来，它就相当于一台主机。

尽管在其上游设备看来，MLD Snooping代理设备相当于一台主机，但主机上的MLD成员关系报告抑制机制在MLD Snooping代理设备上并不会生效。有关主机上的MLD成员关系报告抑制机制的详细介绍，请参见“IP组播配置指导”中的“MLD”。

图1-3 MLD Snooping Proxying组网图

如 图1-3 所示，作为MLD Snooping代理设备的Switch A，对其上游的MLD查询器Router A来说相当于一台主机，代理下游主机向Router A发送报告报文和离开报文。

MLD Snooping代理设备对MLD报文的处理方式如 表1-2 所示。

表1-2 MLD Snooping代理设备对MLD报文的处理方式

MLD报文类型 | 处理方式
普遍组查询报文 | 收到普遍组查询报文后，向本VLAN内除接收端口以外的所有端口转发；同时根据本地维护的组成员关系生成报告报文，并向所有路由器端口发送
特定组查询报文 | 收到针对某IPv6组播组的特定组查询报文时，若该组对应的转发表项中还有成员端口，则向所有路由器端口回复该组的报告报文
报告报文 | 从某端口收到某IPv6组播组的报告报文时，若已存在该组对应的转发表项，且其出端口列表中已包含该动态成员端口，则重置其老化定时器；若已存在该组对应的转发表项，但其出端口列表中不包含该端口，则将该端口作为动态成员端口添加到出端口列表中，并启动其老化定时器；若尚不存在该组对应的转发表项，则创建转发表项，将该端口作为动态成员端口添加到出端口列表中，并启动其老化定时器，然后向所有路由器端口发送该组的报告报文
离开报文 | 从某端口收到某IPv6组播组的离开报文后，向该端口发送针对该组的特定组查询报文。只有当删除某IPv6组播组对应转发表项中的最后一个成员端口时，才会向所有路由器端口发送该组的离开报文

1.1.5 协议规范

与MLD Snooping相关的协议规范有：

l RFC 4541：Considerations for Internet Group Management Protocol (IGMP) and Multicast Listener Discovery (MLD) Snooping Switches


1.2 MLD Snooping配置任务简介

表1-3 MLD Snooping配置任务简介

配置任务 |  | 说明 | 详细配置
配置MLD Snooping基本功能 | 使能MLD Snooping | 必选 | 1.3.2
 | 配置MLD Snooping版本 | 可选 | 1.3.3
 | 配置全局MLD Snooping转发表项的最大数量 | 可选 | 1.3.4
 | 配置IPv6静态组播MAC地址表项 | 可选 | 1.3.5
配置MLD Snooping端口功能 | 配置动态端口老化定时器 | 可选 | 1.4.2
 | 配置静态端口 | 可选 | 1.4.3
 | 配置模拟主机加入 | 可选 | 1.4.4
 | 配置端口快速离开 | 可选 | 1.4.5
 | 禁止端口成为动态路由器端口 | 可选 | 1.4.6
配置MLD Snooping查询器 | 使能MLD Snooping查询器 | 可选 | 1.5.2
 | 配置MLD查询和响应 | 可选 | 1.5.3
 | 配置MLD查询报文源IPv6地址 | 可选 | 1.5.4
配置MLD Snooping Proxying | 使能MLD Snooping Proxying | 可选 | 1.6.2
 | 配置代理发送MLD报文的源IPv6地址 | 可选 | 1.6.3
配置MLD Snooping策略 | 配置IPv6组播组过滤器 | 可选 | 1.7.2
 | 配置IPv6组播数据报文源端口过滤 | 可选 | 1.7.3
 | 配置丢弃未知IPv6组播数据报文 | 可选 | 1.7.4
 | 配置MLD成员关系报告报文抑制 | 可选 | 1.7.5
 | 配置端口加入的IPv6组播组最大数量 | 可选 | 1.7.6
 | 配置IPv6组播组替换 | 可选 | 1.7.7
 | 配置MLD报文的802.1p优先级 | 可选 | 1.7.8
 | 配置IPv6组播用户控制策略 | 可选 | 1.7.9
 | 配置MLD Snooping主机跟踪功能 | 可选 | 1.7.10

对于MLD Snooping的相关配置来说：

l MLD-Snooping视图下的配置对所有VLAN都有效，VLAN视图下的配置只对当前VLAN有效。对于某VLAN来说，优先采用该VLAN视图下的配置，只有当在该VLAN视图下没有进行配置时，才采用MLD-Snooping视图下的相应配置。

l MLD-Snooping视图下的配置对所有端口都有效；二层以太网端口视图下的配置只对当前端口有效；二层聚合接口视图下的配置只对当前接口有效；端口组视图下的配置对当前端口组中的所有端口有效。对于某端口来说，优先采用二层以太网端口视图、二层聚合接口视图或端口组视图下的配置，只有当在上述视图下没有进行配置时，才采用MLD-Snooping视图下的相应配置。

l 二层聚合接口与其各成员端口上的配置互不影响，且成员端口上的配置只有当该端口退出聚合组后才会生效，二层聚合接口上的配置也不会参与聚合计算。


1.3 配置MLD Snooping基本功能

1.3.1 配置准备

在配置MLD Snooping基本功能之前，需完成以下任务：

l 使能IPv6转发功能

l 配置相应VLAN

在配置MLD Snooping基本功能之前，需准备以下数据：

l MLD Snooping的版本

1.3.2 使能MLD Snooping

表1-4 使能MLD Snooping

操作 | 命令 | 说明
进入系统视图 | system-view | -
全局使能MLD Snooping，并进入MLD-Snooping视图 | mld-snooping | 必选 缺省情况下，MLD Snooping处于关闭状态
退回系统视图 | quit | -
进入VLAN视图 | vlan vlan-id | -
在VLAN内使能MLD Snooping | mld-snooping enable | 必选 缺省情况下，VLAN内的MLD Snooping处于关闭状态

l 在VLAN内使能MLD Snooping之前，必须先在系统视图下全局使能MLD Snooping，否则将无法在VLAN内使能MLD Snooping。

l 在VLAN内使能MLD Snooping之后，不允许在该VLAN所对应的VLAN接口上再使能MLD和IPv6 PIM，反之亦然。

l 在指定VLAN内使能了MLD Snooping之后，MLD Snooping功能只在属于该VLAN的端口上生效。

1.3.3 配置MLD Snooping版本

配置MLD Snooping的版本，实际上就是配置MLD Snooping可以处理的MLD报文的版本：

l 当MLD Snooping的版本为1时，MLD Snooping能够对MLDv1的报文进行处理，对MLDv2的报文则不进行处理，而是在VLAN内将其广播；

l 当MLD Snooping的版本为2时，MLD Snooping能够对MLDv1和MLDv2的报文进行处理。

表1-5 配置MLD Snooping版本

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入VLAN视图 | vlan vlan-id | -
配置MLD Snooping的版本 | mld-snooping version version-number | 必选 缺省情况下，MLD Snooping的版本为1

当MLD Snooping的版本由版本2切换到版本1时，系统将清除所有通过动态加入的MLD Snooping转发表项；对于在版本2下通过手工配置而静态加入的MLD Snooping转发表项，则分为以下两种情况进行不同的处理：

l 如果配置的仅仅是静态加入IPv6组播组，而没有指定IPv6组播源，则这些转发表项将不会被清除；

l 如果配置的是指定了IPv6组播源的静态加入IPv6组播源组，则这些转发表项将会被清除，并且当再次切换回版本2时，这些转发表项将被重新恢复。

有关静态加入的详细配置，请参见“ 1.4.3 配置静态端口 ”。

1.3.4 配置全局MLD Snooping转发表项的最大数量

用户可以调整全局MLD Snooping转发表项的最大数量，当设备上维护的表项数量达到最大数量后，将不再创建新的表项，直至有表项被老化或被手工删除。

表1-6 配置全局MLD Snooping转发表项的最大数量

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入MLD-Snooping视图 | mld-snooping | -
配置全局MLD Snooping转发表项的最大数量 | entry-limit limit | 必选 缺省情况下，S3600V2-EI系列交换机全局MLD Snooping转发表项的最大数量为1000，S3600V2-SI系列交换机全局MLD Snooping转发表项的最大数量为512

在对全局MLD Snooping转发表项的最大数量进行配置时，如果设备上维护的表项数量已超过了配置值，系统将提示用户删除多余表项，但并不会自动删除任何已存在的表项，同时也不再继续创建新的表项。

1.3.5 配置IPv6静态组播MAC地址表项

在二层组播中，除了可通过二层IPv6组播协议（如MLD Snooping）动态建立IPv6组播MAC地址表项外，还可以通过手工方式配置IPv6组播MAC地址表项，将端口与IPv6组播MAC地址进行静态绑定，以便灵活控制IPv6组播信息送达的目的端口。

1. 系统视图下配置IPv6静态组播MAC地址表项

表1-7 系统视图下配置IPv6静态组播MAC地址表项

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置静态组播MAC地址表项 | mac-address multicast mac-address interface interface-list vlan vlan-id | 必选 缺省情况下，没有配置静态组播MAC地址表项

2. 接口视图下配置IPv6静态组播MAC地址表项

表1-8 接口视图下配置IPv6静态组播MAC地址表项

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
进入相应视图 | 进入以太网或二层聚合接口视图 | interface interface-type interface-number | 二者必选其一 进入以太网接口或二层聚合接口视图后，下面进行的配置只在当前接口生效；进入端口组视图后，下面进行的配置将在端口组的所有接口生效
 | 进入端口组视图 | port-group manual port-group-name
配置静态组播MAC地址表项 |  | mac-address multicast mac-address vlan vlan-id | 必选 缺省情况下，没有配置静态组播MAC地址表项

l 有关 mac-address multicast 命令的详细介绍，请参见“IP组播命令参考”中的“组播路由与转发”。

l 系统视图下的配置对指定端口有效，而端口视图下的配置只对当前端口（或当前端口组内的所有端口）有效。

l 可手工配置的IPv6组播MAC地址表项为除3333-xxxx-xxxx以外的任意IPv6组播MAC地址（组播MAC地址就是最高字节的最低比特位为1的MAC地址），其中x代表0～F的任意一个十六进制数。


1.4 配置MLD Snooping端口功能

1.4.1 配置准备

在配置MLD Snooping端口功能之前，需完成以下任务：

l 在VLAN内使能MLD Snooping

l 配置相应端口组

在配置MLD Snooping端口功能之前，需准备以下数据：

l 动态路由器端口老化时间

l 动态成员端口老化时间

l IPv6组播组和IPv6组播源的地址

1.4.2 配置动态端口老化定时器

对于动态路由器端口，如果在其老化时间超时前没有收到MLD普遍组查询报文或者IPv6 PIM Hello报文，交换机将把该端口从路由器端口列表中删除。

对于动态成员端口，如果在其老化时间超时前没有收到该IPv6组播组的MLD成员关系报告报文，交换机将把该端口从该IPv6组播组所对应转发表的出端口列表中删除。

如果IPv6组播组成员的变动比较频繁，可以把动态成员端口老化时间设置小一些，反之亦然。

1. 全局配置动态端口老化定时器

表1-9 全局配置动态端口老化定时器

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入MLD-Snooping视图 | mld-snooping | -
配置动态路由器端口老化时间 | router-aging-time interval | 必选 缺省情况下，动态路由器端口的老化时间为260秒
配置动态成员端口老化时间 | host-aging-time interval | 必选 缺省情况下，动态成员端口的老化时间为260秒

2. 在VLAN内配置动态端口老化定时器

表1-10 在VLAN内配置动态端口老化定时器

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入VLAN视图 | vlan vlan-id | -
配置动态路由器端口老化时间 | mld-snooping router-aging-time interval | 必选 缺省情况下，动态路由器端口的老化时间为260秒
配置动态成员端口老化时间 | mld-snooping host-aging-time interval | 必选 缺省情况下，动态成员端口的老化时间为260秒

1.4.3 配置静态端口

如果某端口所连接的主机需要固定接收发往某IPv6组播组的IPv6组播数据，可以配置该端口静态加入该IPv6组播组，成为静态成员端口。

可以通过将交换机上的端口配置为静态路由器端口，从而使交换机上所有收到的IPv6组播数据可以通过该端口被转发出去。

表1-11 配置静态端口

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
进入相应视图 | 进入二层以太网或二层聚合接口视图 | interface interface-type interface-number | 二者必选其一
 | 进入端口组视图 | port-group manual port-group-name
配置静态成员端口 |  | mld-snooping static-group ipv6-group-address [ source-ip ipv6-source-address ] vlan vlan-id | 必选 缺省情况下，端口不是静态成员端口
配置静态路由器端口 |  | mld-snooping static-router-port vlan vlan-id | 必选 缺省情况下，端口不是静态路由器端口

l 静态成员端口不会对MLD查询器发出的查询报文进行响应；当配置静态成员端口或取消静态成员端口的配置时，端口也不会主动发送MLD成员关系报告报文或MLD离开组报文。

l 静态成员端口和静态路由器端口都不会老化，只能通过相应的 undo 命令删除。

1.4.4 配置模拟主机加入

通常情况下，运行MLD的主机会对MLD查询器发出的查询报文进行响应。如果主机由于某种原因无法响应，就可能导致组播路由器认为该网段没有该IPv6组播组的成员，从而取消相应的转发路径。

为避免这种情况的发生，可以将交换机的端口配置成为IPv6组播组成员（即配置模拟主机加入）。当收到MLD查询报文时由模拟主机进行响应，从而保证该交换机能够继续收到IPv6组播报文。

模拟主机加入功能的实现原理如下：

l 在某端口上使能模拟主机加入功能时，交换机会通过该端口主动发送一个MLD成员关系报告报文；

l 在某端口上使能了模拟主机加入功能后，当收到MLD普遍组查询报文时，交换机会通过该端口响应一个MLD成员关系报告报文；

l 在某端口上关闭模拟主机加入功能时，交换机会通过该端口发送一个MLD离开组报文。

表1-12 配置模拟主机加入

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
进入相应视图 | 进入二层以太网或二层聚合接口视图 | interface interface-type interface-number | 二者必选其一
 | 进入端口组视图 | port-group manual port-group-name
配置模拟主机加入IPv6组播组或组播源组 |  | mld-snooping host-join ipv6-group-address [ source-ip ipv6-source-address ] vlan vlan-id | 必选 缺省情况下，没有配置模拟主机加入IPv6组播组或组播源组

l 每配置一次模拟主机加入，即相当于启动了一台独立的主机。例如，当收到MLD查询报文时，每条配置所对应的模拟主机将分别进行响应。

l 与静态成员端口不同，配置了模拟主机加入的端口会作为动态成员端口而参与动态成员端口的老化过程。

1.4.5 配置端口快速离开

端口快速离开是指当交换机从某端口收到主机发送的离开某IPv6组播组的MLD离开组报文时，直接把该端口从对应转发表项的出端口列表中删除。此后，当交换机收到对该IPv6组播组的MLD特定组查询报文时，交换机将不再向该端口转发。

在交换机上，在只连接有一个接收者的端口上，可以通过使能端口快速离开功能来节约带宽和资源；而在连接有多个接收者的端口上，如果交换机或该端口所在的VLAN已使能了丢弃未知IPv6组播数据报文功能，则不要再使能端口快速离开功能，否则，一个接收者的离开将导致该端口下属于同一IPv6组播组的其它接收者无法收到IPv6组播数据。

1. 全局配置端口快速离开

表1-13 全局配置端口快速离开

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入MLD-Snooping视图 | mld-snooping | -
使能端口快速离开功能 | fast-leave [ vlan vlan-list ] | 必选 缺省情况下，端口快速离开功能处于关闭状态

2. 在端口上配置端口快速离开

表1-14 在端口上配置端口快速离开

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
进入相应视图 | 进入二层以太网或二层聚合接口视图 | interface interface-type interface-number | 二者必选其一
 | 进入端口组视图 | port-group manual port-group-name
使能端口快速离开功能 |  | mld-snooping fast-leave [ vlan vlan-list ] | 必选 缺省情况下，端口快速离开功能处于关闭状态

1.4.6 禁止端口成为动态路由器端口

目前，在IPv6组播用户接入网络中存在以下问题：

l 如果交换机收到了某用户主机发来的MLD普遍组查询报文或IPv6 PIM Hello报文，那么该主机所在的端口就将成为动态路由器端口，从而使VLAN内的所有IPv6组播报文都会向该端口转发，导致该用户主机收到的IPv6组播报文失控。

l 同时，用户主机发送MLD普遍组查询报文或IPv6 PIM Hello报文，也会影响该接入网络中三层设备上的IPv6组播路由协议状态（如影响MLD查询器或DR的选举），严重时可能导致网络中断。

当禁止某端口成为动态路由器端口后，即使该端口收到了MLD普遍组查询报文或IPv6 PIM Hello报文，该端口也不会成为动态路由器端口，从而能够有效解决上述问题，提高网络的安全性和对IPv6组播用户的控制能力。

表1-15 禁止端口成为动态路由器端口

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
进入相应视图 | 进入二层以太网或二层聚合接口视图 | interface interface-type interface-number | 二者必选其一
 | 进入端口组视图 | port-group manual port-group-name
禁止端口成为动态路由器端口 |  | mld-snooping router-port-deny [ vlan vlan-list ] | 必选 缺省情况下，不禁止端口成为动态路由器端口

本配置与静态路由器端口的配置互不影响。


1.5 配置MLD Snooping查询器

1.5.1 配置准备

在配置MLD Snooping查询器之前，需完成以下任务：

l 在VLAN内使能MLD Snooping

在配置MLD Snooping查询器之前，需准备以下数据：

l 发送MLD普遍组查询报文的时间间隔

l 发送MLD特定组查询报文的时间间隔

l MLD普遍组查询的最大响应时间

l MLD普遍组查询报文的源IPv6地址

l MLD特定组查询报文的源IPv6地址

1.5.2 使能MLD Snooping查询器

在运行了MLD的IPv6组播网络中，会有一台三层组播设备充当MLD查询器，负责发送MLD查询报文，使三层组播设备能够在网络层建立并维护IPv6组播转发表项，从而在网络层正常转发IPv6组播数据。

但是，在一个没有三层组播设备的网络中，由于二层设备并不支持MLD，因此无法实现MLD查询器的相关功能。为了解决这个问题，可以在二层设备上使能MLD Snooping查询器，使二层设备能够在数据链路层建立并维护IPv6组播转发表项，从而在数据链路层正常转发IPv6组播数据。

表1-16 使能MLD Snooping查询器

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入VLAN视图 | vlan vlan-id | -
使能MLD Snooping查询器 | mld-snooping querier | 必选 缺省情况下，MLD Snooping查询器处于关闭状态

尽管MLD Snooping查询器并不参与MLD查询器的选举，但在运行了MLD的IPv6组播网络中，配置MLD Snooping查询器不但没有实际的意义，反而可能会由于其发送的MLD普遍组查询报文的源IPv6地址较小而影响MLD查询器的选举。

有关MLD查询器的详细介绍，请参见“IP组播配置指导”中的“MLD”。

1.5.3 配置MLD查询和响应

可以根据网络的实际情况来修改发送MLD普遍组查询报文的时间间隔。

在收到MLD查询报文（包括普遍组查询和特定组查询）后，主机会为其所加入的每个IPv6组播组都启动一个定时器，定时器的值在0到最大响应时间（该时间值由主机从所收到的MLD查询报文的最大响应时间字段获得）中随机选定，当定时器的值减为0时，主机就会向该定时器对应的IPv6组播组发送MLD成员关系报告报文。

合理配置MLD查询的最大响应时间，既可以使主机对MLD查询报文做出快速响应，又可以减少由于定时器同时超时，造成大量主机同时发送报告报文而引起的网络拥塞：

l 对于MLD普遍组查询报文来说，通过配置MLD普遍组查询的最大响应时间来填充其最大响应时间字段；

l 对于MLD特定组查询报文来说，所配置的发送MLD特定组查询报文的时间间隔将被填充到其最大响应时间字段。也就是说，MLD特定组查询的最大响应时间从数值上与发送MLD特定组查询报文的时间间隔相同。

1. 全局配置MLD查询和响应

表1-17 全局配置MLD查询和响应

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入MLD-Snooping视图 | mld-snooping | -
配置MLD普遍组查询的最大响应时间 | max-response-time interval | 必选 缺省情况下，MLD普遍组查询的最大响应时间为10秒
配置发送MLD特定组查询报文的时间间隔 | last-listener-query-interval interval | 必选 缺省情况下，发送MLD特定组查询报文的时间间隔为1秒

2. 在VLAN内配置MLD查询和响应

表1-18 在VLAN内配置MLD查询和响应

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入VLAN视图 | vlan vlan-id | -
配置发送MLD普遍组查询报文的时间间隔 | mld-snooping query-interval interval | 必选 缺省情况下，发送MLD普遍组查询报文的时间间隔为125秒
配置MLD普遍组查询的最大响应时间 | mld-snooping max-response-time interval | 必选 缺省情况下，MLD普遍组查询的最大响应时间为10秒
配置发送MLD特定组查询报文的时间间隔 | mld-snooping last-listener-query-interval interval | 必选 缺省情况下，发送MLD特定组查询报文的时间间隔为1秒

应确保发送MLD普遍组查询报文的时间间隔大于MLD普遍组查询的最大响应时间，否则有可能造成对IPv6组播组成员的误删。

1.5.4 配置MLD查询报文源IPv6地址

可以通过此项配置改变MLD查询报文的源IPv6地址。

表1-19 配置MLD查询报文源IPv6地址

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入VLAN视图 | vlan vlan-id | -
配置MLD普遍组查询报文源IPv6地址 | mld-snooping general-query source-ip { ipv6-address | current-interface } | 必选 缺省情况下，MLD普遍组查询报文的源IPv6地址为FE80::02FF:FFFF:FE00:0001
配置MLD特定组查询报文源IPv6地址 | mld-snooping special-query source-ip { ipv6-address | current-interface } | 必选 缺省情况下，MLD特定组查询报文的源IPv6地址为FE80::02FF:FFFF:FE00:0001

MLD查询报文源IPv6地址的改变可能会影响网段内MLD查询器的选举。


1.6 配置MLD Snooping Proxying

1.6.1 配置准备

在配置MLD Snooping Proxying之前，需完成以下任务：

l 在VLAN内使能MLD Snooping

在配置MLD Snooping Proxying之前，需准备以下数据：

l 代理发送MLD报告报文的源IPv6地址

l 代理发送MLD离开报文的源IPv6地址

1.6.2 使能MLD Snooping Proxying

当在有组播需求的VLAN内使能了MLD Snooping代理功能后，该设备就成为该VLAN内的MLD Snooping代理设备。

表1-20 使能MLD Snooping Proxying

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入VLAN视图 | vlan vlan-id | -
在VLAN内使能MLD Snooping代理功能 | mld-snooping proxying enable | 必选 缺省情况下，VLAN内的MLD Snooping代理功能处于关闭状态

1.6.3 配置代理发送MLD报文的源IPv6地址

通过本配置可以改变代理发送的MLD报告报文和离开报文的源IPv6地址。

表1-21 配置代理发送MLD报文的源IPv6地址

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入VLAN视图 | vlan vlan-id | -
配置代理发送MLD报告报文的源IPv6地址 | mld-snooping report source-ip { ipv6-address | current-interface } | 必选 缺省情况下，代理发送MLD报告报文的源IPv6地址为FE80::02FF:FFFF:FE00:0001
配置代理发送MLD离开报文的源IPv6地址 | mld-snooping done source-ip { ipv6-address | current-interface } | 必选 缺省情况下，代理发送MLD离开报文的源IPv6地址为FE80::02FF:FFFF:FE00:0001


1.7 配置MLD Snooping策略

1.7.1 配置准备

在配置MLD Snooping策略之前，需完成以下任务：

l 在VLAN内使能MLD Snooping

在配置MLD Snooping策略之前，需准备以下数据：

l IPv6组播组过滤的IPv6 ACL规则

l 端口加入的IPv6组播组最大数量

l MLD报文的802.1p优先级

1.7.2 配置IPv6组播组过滤器

在使能了MLD Snooping的交换机上，通过配置IPv6组播组过滤器，可以限制用户对组播节目的点播。

在实际应用中，当用户点播某个组播节目时，主机会发起一个MLD成员关系报告报文，该报文到达交换机后，进行ACL检查：如果该接收端口可以加入这个IPv6组播组，则将其列入到MLD Snooping转发表中；否则交换机就丢弃该报文。这样，未通过ACL检查的IPv6组播数据就不会送到该端口，从而达到控制用户点播组播节目的目的。

1. 全局配置IPv6组播组过滤器

表1-22 全局配置IPv6组播组过滤器

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入MLD-Snooping视图 | mld-snooping | -
配置IPv6组播组过滤器 | group-policy acl6-number [ vlan vlan-list ] | 必选 缺省情况下，没有配置全局IPv6组播组过滤器，即各VLAN内主机可以加入任意合法的IPv6组播组

2. 在端口上配置IPv6组播组过滤器

表1-23 在端口上配置IPv6组播组过滤器

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
进入相应视图 | 进入二层以太网或二层聚合接口视图 | interface interface-type interface-number | 二者必选其一
 | 进入端口组视图 | port-group manual port-group-name
配置IPv6组播组过滤器 |  | mld-snooping group-policy acl6-number [ vlan vlan-list ] | 必选 缺省情况下，端口上没有配置IPv6组播组过滤器，即该端口下的主机可以加入任意合法的IPv6组播组

1.7.3 配置IPv6组播数据报文源端口过滤

通过配置IPv6组播数据报文源端口过滤功能，可以允许或禁止端口作为组播源端口：

l 使能了该功能后，端口下不能连接组播源，因为该端口将过滤掉所有的IPv6组播数据报文（但允许IPv6组播协议报文通过），只能连接IPv6组播数据接收者；

l 关闭了该功能后，端口下既可以连接组播源，也可以连接IPv6组播数据接收者。

1. 全局配置IPv6组播数据报文源端口过滤

表1-24 全局配置IPv6组播数据报文源端口过滤

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入MLD-Snooping视图 | mld-snooping | -
使能IPv6组播数据报文源端口过滤功能 | source-deny port interface-list | 必选 缺省情况下，IPv6组播数据报文源端口过滤功能处于关闭状态

2. 在端口上配置IPv6组播数据报文源端口过滤

表1-25 在端口上配置IPv6组播数据报文源端口过滤

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
进入相应视图 | 进入二层以太网端口视图 | interface interface-type interface-number | 二者必选其一
 | 进入端口组视图 | port-group manual port-group-name
使能IPv6组播数据报文源端口过滤功能 |  | mld-snooping source-deny | 必选 缺省情况下，IPv6组播数据报文源端口过滤功能处于关闭状态

1.7.4 配置丢弃未知IPv6组播数据报文

未知IPv6组播数据报文是指在MLD Snooping转发表中不存在对应转发表项的那些IPv6组播数据报文，当交换机收到发往未知组播组的IPv6报文时，IPv6数据报文会在VLAN内广播，这样会占用大量的网络带宽，影响转发效率。

表1-26 在VLAN内配置丢弃未知IPv6组播数据报文

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入VLAN视图 | vlan vlan-id | -
使能丢弃未知IPv6组播数据报文功能 | mld-snooping drop-unknown | 必选 缺省情况下，丢弃未知IPv6组播数据报文的功能处于关闭状态，即对未知IPv6组播数据报文进行广播

1.7.5 配置MLD成员关系报告报文抑制

当二层设备收到来自某IPv6组播组成员的MLD成员关系报告报文时，会将该报文转发给与其直连的三层设备。这样，当二层设备上存在属于某IPv6组播组的多个成员时，与其直连的三层设备会收到这些成员发送的相同MLD成员关系报告报文。

当使能了MLD成员关系报告报文抑制功能后，在一个查询间隔内二层设备只会把收到的某IPv6组播组内的第一个MLD成员关系报告报文转发给三层设备，而不继续向三层设备转发来自同一组播组的其它MLD成员关系报告报文，这样可以减少网络中的报文数量。

表1-27 配置MLD成员关系报告报文抑制

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入MLD-Snooping视图 | mld-snooping | -
使能MLD成员关系报告报文抑制功能 | report-aggregation | 必选 缺省情况下，MLD成员关系报告报文抑制功能处于使能状态

在MLD Snooping代理设备上，不论是否使能了MLD成员关系报告报文抑制功能，只要存在某IPv6组播组对应的转发表项，就会将从下游收到的针对该组的报告报文都抑制掉。

1.7.6 配置端口加入的IPv6组播组最大数量

通过配置端口加入的IPv6组播组的最大数量，可以限制用户点播组播节目的数量，从而控制了端口上的数据流量。

表1-28 配置端口加入的IPv6组播组最大数量

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
进入相应视图 | 进入二层以太网或二层聚合接口视图 | interface interface-type interface-number | 二者必选其一
 | 进入端口组视图 | port-group manual port-group-name
配置端口加入的IPv6组播组最大数量 |  | mld-snooping group-limit limit [ vlan vlan-list ] | 必选 缺省情况下，S3600V2-EI系列交换机端口加入的IPv6组播组最大数量为1000，S3600V2-SI系列交换机端口加入的IPv6组播组最大数量为512

在配置端口加入的IPv6组播组最大数量时，如果当前端口上的IPv6组播组数量已超过配置值，系统将把该端口相关的所有转发表项从MLD Snooping转发表中删除，该端口下的主机都需要重新加入IPv6组播组，直至该端口上的IPv6组播组数量达到限制值为止。其中，如果该端口已配置为静态成员端口，系统会将静态成员端口的配置重新生效一次；如果在该端口上配置了模拟主机加入，系统在收到模拟主机发来的报告报文之后才会重新建立相应的转发表项。

1.7.7 配置IPv6组播组替换

由于某些特殊的原因，当前交换机或端口上通过的IPv6组播组数目有可能会超过交换机或该端口的限定；另外，在某些特定的应用中，交换机上新加入的IPv6组播组需要自动替换已存在的IPv6组播组（一个典型的应用就是“频道切换”，即用户通过加入一个新的IPv6组播组就能完成离开原IPv6组播组并切换到新IPv6组播组的动作）。

针对以上情况，可以在交换机或者某些端口上使能IPv6组播组替换功能。当交换机或端口上加入的IPv6组播组数量已达到限定值时：

l 若使能了IPv6组播组替换功能，则新加入的IPv6组播组会自动替代已存在的IPv6组播组，替代规则是替代IPv6地址最小的IPv6组播组；

l 若没有使能IPv6组播组替换功能，则自动丢弃新的MLD成员关系报告报文。

1. 全局配置IPv6组播组替换

表1-29 全局配置IPv6组播组替换

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入MLD-Snooping视图 | mld-snooping | -
使能IPv6组播组替换功能 | overflow-replace [ vlan vlan-list ] | 必选 缺省情况下，IPv6组播组替换功能处于关闭状态

2. 在端口上配置IPv6组播组替换

表1-30 在端口上配置IPv6组播组替换

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
进入相应视图 | 进入二层以太网或二层聚合接口视图 | interface interface-type interface-number | 二者必选其一
 | 进入端口组视图 | port-group manual port-group-name
使能IPv6组播组替换功能 |  | mld-snooping overflow-replace [ vlan vlan-list ] | 必选 缺省情况下，IPv6组播组替换功能处于关闭状态

在使能IPv6组播组替换功能之前，必须首先配置端口通过的IPv6组播组的最大数量（具体配置过程请参见“ 1.7.6 配置端口加入的IPv6组播组最大数量 ”），否则IPv6组播组替换功能将不会生效。

1.7.8 配置MLD报文的802.1p优先级

可以通过本配置来改变MLD报文的802.1p优先级。当交换机的出端口发生拥塞时，交换机通过识别报文的802.1p优先级，优先发送优先级较高的报文。

1. 全局配置MLD报文的802.1p优先级

表1-31 全局配置MLD报文的802.1p优先级

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入MLD-Snooping视图 | mld-snooping | -
配置MLD报文的802.1p优先级 | dot1p-priority priority-number | 必选 缺省情况下，MLD报文的802.1p优先级为0

2. 在VLAN内配置MLD报文的802.1p优先级

表1-32 在VLAN内配置MLD报文的802.1p优先级

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入VLAN视图 | vlan vlan-id | -
配置MLD报文的802.1p优先级 | mld-snooping dot1p-priority priority-number | 必选 缺省情况下，MLD报文的802.1p优先级为0

1.7.9 配置IPv6组播用户控制策略

IPv6组播用户控制策略通常配置在接入交换机上，是基于用户权限控制来实现的，即只有通过授权的用户才能收到相应的IPv6组播流，从而达到限制用户对IPv6组播节目点播的目的。在实际应用中，用户先要通过接入交换机向RADIUS服务器发起认证（如802.1X认证），当认证通过后再根据用户的点播行为进行策略检查：

l 当用户点播IPv6组播节目时，主机会发送MLD成员关系报告报文，接入交换机收到该报文后对其携带的IPv6组播组和IPv6组播源地址进行策略检查，若该报文通过检查则允许该用户加入该IPv6组播组；否则，接入交换机将丢弃该报文。

l 当用户停止点播IPv6组播节目时，主机会发送MLD离开报文，接入交换机收到该报文后对其携带的IPv6组播组和IPv6组播源地址进行策略检查，若该报文通过检查则允许该用户离开该IPv6组播组；否则，接入交换机将丢弃该报文。

表1-33 配置IPv6组播用户控制策略

操作 | 命令 | 说明
进入系统视图 | system-view | -
创建User Profile，并进入User-Profile视图 | user-profile profile-name | -
配置IPv6组播用户控制策略 | mld-snooping access-policy acl6-number | 必选 缺省情况下，没有配置IPv6组播用户控制策略，即用户可以加入/离开任意合法的IPv6组播组
退回系统视图 | quit | -
激活该User Profile | user-profile profile-name enable | 必选 缺省情况下，User Profile处于未激活状态

l 有关 user-profile 和 user-profile enable命令的详细介绍，请参见“安全命令参考”中的“User Profile”。

l IPv6组播用户控制策略与IPv6组播组过滤器在功能上类似，二者的区别在于：前者是基于用户权限的组播控制，需要与认证、授权功能结合使用，能够控制组播用户的加入与离开；后者是基于设备端口的组播控制，无需与认证、授权功能结合使用，只能控制组播用户的加入。

1.7.10 配置MLD Snooping主机跟踪功能

通过使能MLD Snooping主机跟踪功能，可以使交换机能够记录正在接收IPv6组播数据的成员主机信息（包括主机的IPv6地址、运行时间和超时时间等），以便于网络管理员对这些主机进行监控和管理。

1. 全局配置MLD Snooping主机跟踪功能

表1-34 全局配置MLD Snooping主机跟踪功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入MLD-Snooping视图 | mld-snooping | -
全局使能MLD Snooping主机跟踪功能 | host-tracking | 必选 缺省情况下，MLD Snooping主机跟踪功能处于关闭状态

2. 在VLAN内配置MLD Snooping主机跟踪功能

表1-35 在VLAN内配置MLD Snooping主机跟踪功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入VLAN视图 | vlan vlan-id | -
在VLAN内使能MLD Snooping主机跟踪功能 | mld-snooping host-tracking | 必选 缺省情况下，MLD Snooping主机跟踪功能处于关闭状态


1.8 MLD Snooping显示和维护

在完成上述配置后，在任意视图下执行 display 命令可以显示配置后MLD Snooping的运行情况，通过查看显示信息验证配置的效果。

在用户视图下执行 reset 命令可以清除IPv6组播组信息。

表1-36 MLD Snooping显示和维护

配置 | 命令
查看MLD Snooping组的信息 | display mld-snooping group [ vlan vlan-id ] [ slot slot-number ] [ verbose ] [ | { begin | exclude | include } regular-expression ]
查看MLD Snooping跟踪的主机信息 | display mld-snooping host vlan vlan-id group ipv6-group-address [ source ipv6-source-address ] [ slot slot-number ] [ | { begin | exclude | include } regular-expression ]
查看IPv6静态组播MAC地址表信息 | display mac-address [ mac-address [ vlan vlan-id ] | [ multicast ] [ vlan vlan-id ] [ count ] ] [ | { begin | exclude | include } regular-expression ]
查看MLD Snooping监听到的MLD报文的统计信息 | display mld-snooping statistics [ | { begin | exclude | include } regular-expression ]
清除MLD Snooping组的动态加入记录 | reset mld-snooping group { ipv6-group-address | all } [ vlan vlan-id ]
清除MLD Snooping监听到的所有MLD报文的统计信息 | reset mld-snooping statistics

l 有关 display mac-address multicast 命令的详细介绍，请参见“IP组播命令参考”中的“组播路由与转发”。

l reset mld-snooping group 命令只对使能了MLD Snooping的VLAN有效，而对VLAN接口上使能了MLD的VLAN无效。

l reset mld-snooping group 只能清除动态加入记录，而无法清除静态加入记录。


1.9 MLD Snooping典型配置举例

1.9.1 IPv6组策略及模拟主机加入配置举例

1. 组网需求

l 如 图1-4 所示，Router A通过Ethernet1/0/2端口连接IPv6组播源（Source），通过Ethernet1/0/1端口连接Switch A；Router A上运行MLDv1，Switch A上运行版本1的MLD Snooping，并由Router A充当MLD查询器。

l 通过配置，使Host A和Host B能且只能接收发往IPv6组播组FF1E::101的IPv6组播数据，并且当Host A和Host B即使发生意外而临时中断接收IPv6组播数据时，发往IPv6组播组FF1E::101的IPv6组播数据也能不间断地通过Switch A的端口Ethernet1/0/3和Ethernet1/0/4转发出去；同时，使Switch A将收到的未知IPv6组播数据直接丢弃，避免在其所属的VLAN内广播。

2. 组网图

图1-4 IPv6组策略及模拟主机加入配置组网图

3. 配置步骤

(1) 使能IPv6转发功能，并配置IPv6地址

使能各设备的IPv6转发功能，并按照 图1-4 配置各接口的IPv6地址和前缀长度，具体配置过程略。

(2) 配置Router A

# 使能IPv6组播路由，在各接口上使能IPv6 PIM-DM，并在端口Ethernet1/0/1上使能MLD。

<RouterA> system-view

[RouterA] multicast ipv6 routing-enable

[RouterA] interface ethernet 1/0/1

[RouterA-Ethernet1/0/1] mld enable

[RouterA-Ethernet1/0/1] pim ipv6 dm

[RouterA-Ethernet1/0/1] quit

[RouterA] interface ethernet 1/0/2

[RouterA-Ethernet1/0/2] pim ipv6 dm

[RouterA-Ethernet1/0/2] quit

(3) 配置Switch A

# 全局使能MLD Snooping。

<SwitchA> system-view

[SwitchA] mld-snooping

[SwitchA-mld-snooping] quit

# 创建VLAN 100，把端口Ethernet1/0/1到Ethernet1/0/4添加到该VLAN中；在该VLAN内使能MLD Snooping，并使能丢弃未知IPv6组播数据报文功能。

[SwitchA] vlan 100

[SwitchA-vlan100] port ethernet 1/0/1 to ethernet 1/0/4

[SwitchA-vlan100] mld-snooping enable

[SwitchA-vlan100] mld-snooping drop-unknown

[SwitchA-vlan100] quit

# 配置IPv6组播组过滤器，以限定VLAN 100内的主机只能加入IPv6组播组FF1E::101。

[SwitchA] acl ipv6 number 2001

[SwitchA-acl6-basic-2001] rule permit source ff1e::101 128

[SwitchA-acl6-basic-2001] quit

[SwitchA] mld-snooping

[SwitchA–mld-snooping] group-policy 2001 vlan 100

[SwitchA–mld-snooping] quit

# 在Ethernet1/0/3和Ethernet1/0/4上分别配置模拟主机加入IPv6组播组FF1E::101。

[SwitchA] interface ethernet 1/0/3

[SwitchA-Ethernet1/0/3] mld-snooping host-join ff1e::101 vlan 100

[SwitchA-Ethernet1/0/3] quit

[SwitchA] interface ethernet 1/0/4

[SwitchA-Ethernet1/0/4] mld-snooping host-join ff1e::101 vlan 100

[SwitchA-Ethernet1/0/4] quit

(4) 检验配置效果

# 查看Switch A上VLAN 100内MLD Snooping组的详细信息。

[SwitchA] display mld-snooping group vlan 100 verbose

Total 1 IP Group(s).

Total 1 IP Source(s).

Total 1 MAC Group(s).

Port flags: D-Dynamic port, S-Static port, C-Copy port

Subvlan flags: R-Real VLAN, C-Copy VLAN

Vlan(id):100.

Total 1 IP Group(s).

Total 1 IP Source(s).

Total 1 MAC Group(s).

Router port(s):total 1 port(s).

Eth1/0/1 (D) ( 00:01:30 )

IP group(s):the following ip group(s) match to one mac group.

IP group address:FF1E::101

(::, FF1E::101):

Attribute: Host Port

Host port(s):total 2 port(s).

Eth1/0/3 (D) ( 00:03:23 )

Eth1/0/4 (D) ( 00:04:10 )

MAC group(s):

MAC group address:3333-0000-0101

Host port(s):total 2 port(s).

Eth1/0/3

Eth1/0/4

由此可见，Switch A上的端口Ethernet1/0/3和Ethernet1/0/4已经加入了IPv6组播组FF1E::101。

1.9.2 静态端口配置举例

1. 组网需求

l 如 图1-5 所示，Router A通过Ethernet1/0/2端口连接IPv6组播源（Source），通过Ethernet1/0/1端口连接Switch A；Router A上运行MLDv1，Switch A、Switch B和Switch C上运行版本1的MLD Snooping，并由Router A充当MLD查询器。

l Host A和Host C均为IPv6组播组FF1E::101的固定接收者（Receiver），通过将Switch C上的端口Ethernet1/0/3和Ethernet1/0/5配置为IPv6组播组FF1E::101的静态成员端口，可以增强IPv6组播数据在传输过程中的可靠性。

l 假设由于受STP等链路层协议的影响，为了避免出现环路，Switch A—Switch C的转发路径在正常情况下是阻断的，IPv6组播数据只能通过Switch A—Switch B—Switch C的路径传递给连接在Switch C上的接收者；要求通过将Switch A的端口Ethernet1/0/3配置为静态路由器端口，以保证当Switch A—Switch B—Switch C的路径出现阻断时，IPv6组播数据可以几乎不间断地通过Switch A—Switch C的新路径传递给接收者。

如果没有配置静态路由器端口，那么当Switch A—Switch B—Switch C的路径出现阻断时，至少需要等待一个MLD查询和响应周期完成后，IPv6组播数据才能通过Switch A—Switch C的新路径传递给接收者，IPv6组播数据的传输在这个过程中将中断。

有关STP（Spanning Tree Protocol，生成树协议）的详细介绍，请参见“二层技术-以太网交换配置指导”中的“生成树”。

2. 组网图

图1-5 静态端口配置组网图

3. 配置步骤

(1) 使能IPv6转发功能，并配置IPv6地址

使能各设备的IPv6转发功能，并按照 图1-5 配置各接口的IPv6地址和前缀长度，具体配置过程略。

(2) 配置Router A

# 使能IPv6组播路由，在各接口上使能IPv6 PIM-DM，并在端口Ethernet1/0/1上使能MLD。

<RouterA> system-view

[RouterA] multicast ipv6 routing-enable

[RouterA] interface ethernet 1/0/1

[RouterA-Ethernet1/0/1] mld enable

[RouterA-Ethernet1/0/1] pim ipv6 dm

[RouterA-Ethernet1/0/1] quit

[RouterA] interface ethernet 1/0/2

[RouterA-Ethernet1/0/2] pim ipv6 dm

[RouterA-Ethernet1/0/2] quit

(3) 配置Switch A

# 全局使能MLD Snooping。

<SwitchA> system-view

[SwitchA] mld-snooping

[SwitchA-mld-snooping] quit

# 创建VLAN 100，把端口Ethernet1/0/1到Ethernet1/0/3添加到该VLAN中，并在该VLAN内使能MLD Snooping。

[SwitchA] vlan 100

[SwitchA-vlan100] port ethernet 1/0/1 to ethernet 1/0/3

[SwitchA-vlan100] mld-snooping enable

[SwitchA-vlan100] quit

# 把Ethernet1/0/3配置为静态路由器端口。

[SwitchA] interface ethernet 1/0/3

[SwitchA-Ethernet1/0/3] mld-snooping static-router-port vlan 100

[SwitchA-Ethernet1/0/3] quit

(4) 配置Switch B

# 全局使能MLD Snooping。

<SwitchB> system-view

[SwitchB] mld-snooping

[SwitchB-mld-snooping] quit

# 创建VLAN 100，把端口Ethernet1/0/1和Ethernet1/0/2添加到该VLAN中，并在该VLAN内使能MLD Snooping。

[SwitchB] vlan 100

[SwitchB-vlan100] port ethernet 1/0/1 ethernet 1/0/2

[SwitchB-vlan100] mld-snooping enable

[SwitchB-vlan100] quit

(5) 配置Switch C

# 全局使能MLD Snooping。

<SwitchC> system-view

[SwitchC] mld-snooping

[SwitchC-mld-snooping] quit

# 创建VLAN 100，把端口Ethernet1/0/1到Ethernet1/0/5添加到该VLAN中，并在该VLAN内使能MLD Snooping。

[SwitchC] vlan 100

[SwitchC-vlan100] port ethernet 1/0/1 to ethernet 1/0/5

[SwitchC-vlan100] mld-snooping enable

[SwitchC-vlan100] quit

# 分别在端口Ethernet1/0/3和Ethernet1/0/5上配置静态加入IPv6组播组FF1E::101。

[SwitchC] interface ethernet 1/0/3

[SwitchC-Ethernet1/0/3] mld-snooping static-group ff1e::101 vlan 100

[SwitchC-Ethernet1/0/3] quit

[SwitchC] interface ethernet 1/0/5

[SwitchC-Ethernet1/0/5] mld-snooping static-group ff1e::101 vlan 100

[SwitchC-Ethernet1/0/5] quit

(6) 检验配置效果

# 查看Switch A上VLAN 100内MLD Snooping组的详细信息。

[SwitchA] display mld-snooping group vlan 100 verbose

Total 1 IP Group(s).

Total 1 IP Source(s).

Total 1 MAC Group(s).

Port flags: D-Dynamic port, S-Static port, C-Copy port

Subvlan flags: R-Real VLAN, C-Copy VLAN

Vlan(id):100.

Total 1 IP Group(s).

Total 1 IP Source(s).

Total 1 MAC Group(s).

Router port(s):total 2 port(s).

Eth1/0/1 (D) ( 00:01:30 )

Eth1/0/3 (S)

IP group(s):the following ip group(s) match to one mac group.

IP group address:FF1E::101

(::, FF1E::101):

Attribute: Host Port

Host port(s):total 1 port(s).

Eth1/0/2 (D) ( 00:03:23 )

MAC group(s):

MAC group address:3333-0000-0101

Host port(s):total 1 port(s).

Eth1/0/2

由此可见，Switch A上的端口Ethernet1/0/3已经成为了静态路由器端口。

# 查看Switch C上VLAN 100内MLD Snooping组的详细信息。

[SwitchC] display mld-snooping group vlan 100 verbose

Total 1 IP Group(s).

Total 1 IP Source(s).

Total 1 MAC Group(s).

Port flags: D-Dynamic port, S-Static port, C-Copy port

Subvlan flags: R-Real VLAN, C-Copy VLAN

Vlan(id):100.

Total 1 IP Group(s).

Total 1 IP Source(s).

Total 1 MAC Group(s).

Router port(s):total 1 port(s).

Eth1/0/2 (D) ( 00:01:23 )

IP group(s):the following ip group(s) match to one mac group.

IP group address:FF1E::101

(::, FF1E::101):

Attribute: Host Port

Host port(s):total 2 port(s).

Eth1/0/3 (S)

Eth1/0/5 (S)

MAC group(s):

MAC group address:3333-0000-0101

Host port(s):total 2 port(s).

Eth1/0/3

Eth1/0/5

由此可见，Switch C上的端口Ethernet1/0/3和Ethernet1/0/5已经成为了IPv6组播组FF1E::101的静态成员端口。

1.9.3 MLD Snooping查询器配置举例

1. 组网需求

l 如 图1-6 所示，在一个没有三层设备的纯二层网络环境中，IPv6组播源Source 1和Source 2分别向IPv6组播组FF1E::101和FF1E::102发送IPv6组播数据，Host A和Host C是IPv6组播组FF1E::101的接收者（Receiver），Host B和Host D则是IPv6组播组FF1E::102的接收者；所有接收者均使用MLDv1，所有交换机上都运行版本1的MLD Snooping，并选择距IPv6组播源较近的Switch A来充当MLD Snooping查询器。

l 为防止交换机在没有二层IPv6组播转发表项时将IPv6组播数据在VLAN内广播，在所有交换机上都使能丢弃未知IPv6组播数据报文功能。

2. 组网图

图1-6 MLD Snooping查询器配置组网图

3. 配置步骤

(1) 配置Switch A

# 使能IPv6转发功能，并全局使能MLD Snooping。

<SwitchA> system-view

[SwitchA] ipv6

[SwitchA] mld-snooping

[SwitchA-mld-snooping] quit

# 创建VLAN 100，并把端口Ethernet1/0/1到Ethernet1/0/3添加到该VLAN中。

[SwitchA] vlan 100

[SwitchA-vlan100] port ethernet 1/0/1 to ethernet 1/0/3

# 在VLAN 100内使能MLD Snooping，并使能丢弃未知IPv6组播数据报文功能。

[SwitchA-vlan100] mld-snooping enable

[SwitchA-vlan100] mld-snooping drop-unknown

# 在VLAN 100内使能MLD Snooping查询器。

[SwitchA-vlan100] mld-snooping querier

[SwitchA-vlan100] quit

(2) 配置Switch B

# 使能IPv6转发功能，并全局使能MLD Snooping。

<SwitchB> system-view

[SwitchB] ipv6

[SwitchB] mld-snooping

[SwitchB-mld-snooping] quit

# 创建VLAN 100，并把端口Ethernet1/0/1到Ethernet1/0/4添加到该VLAN中。

[SwitchB] vlan 100

[SwitchB-vlan100] port ethernet 1/0/1 to ethernet 1/0/4

# 在VLAN 100内使能MLD Snooping，并使能丢弃未知IPv6组播数据报文功能。

[SwitchB-vlan100] mld-snooping enable

[SwitchB-vlan100] mld-snooping drop-unknown

[SwitchB-vlan100] quit

Switch C和Switch D的配置与Switch B相似，配置过程略。

(3) 检验配置效果

当MLD Snooping查询器开始工作之后，除查询器以外的所有交换机都能收到MLD普遍组查询报文。通过使用 display mld-snooping statistics 命令可以查看MLD报文的统计信息，例如：

# 查看Switch B上收到的MLD报文的统计信息。

[SwitchB] display mld-snooping statistics

Received MLD general queries:3.

Received MLDv1 specific queries:0.

Received MLDv1 reports:12.

Received MLD dones:0.

Sent MLDv1 specific queries:0.

Received MLDv2 reports:0.

Received MLDv2 reports with right and wrong records:0.

Received MLDv2 specific queries:0.

Received MLDv2 specific sg queries:0.

Sent MLDv2 specific queries:0.

Sent MLDv2 specific sg queries:0.

Received error MLD messages:0.

1.9.4 MLD Snooping Proxying配置举例

1. 组网需求

l 如 图1-7 所示，Router A通过Ethernet1/0/2端口连接IPv6组播源（Source），通过Ethernet1/0/1端口连接Switch A；Router A上运行MLDv1，Switch A上运行版本1的MLD Snooping，并由Router A充当MLD查询器。

l 通过配置，使Switch A能够代理下游主机向Router A发送的MLD报告报文和离开报文，以及响应Router A发来的MLD查询报文并向下游主机转发。

2. 组网图

图1-7 MLD Snooping Proxying配置组网图

3. 配置步骤

(1) 配置IPv6地址

使能各设备的IPv6转发功能，并按照 图1-7 配置各接口的IPv6地址和前缀长度，具体配置过程略。

(2) 配置Router A

# 使能IPv6组播路由，在各接口上使能IPv6 PIM-DM，并在端口Ethernet1/0/1上使能MLD。

<RouterA> system-view

[RouterA] multicast ipv6 routing-enable

[RouterA] interface ethernet 1/0/1

[RouterA-Ethernet1/0/1] mld enable

[RouterA-Ethernet1/0/1] pim ipv6 dm

[RouterA-Ethernet1/0/1] quit

[RouterA] interface ethernet 1/0/2

[RouterA-Ethernet1/0/2] pim ipv6 dm

[RouterA-Ethernet1/0/2] quit

(3) 配置Switch A

# 全局使能MLD Snooping。

<SwitchA> system-view

[SwitchA] mld-snooping

[SwitchA-mld-snooping] quit

# 创建VLAN 100，把端口Ethernet1/0/1到Ethernet1/0/4添加到该VLAN中；在该VLAN内使能MLD Snooping，并使能MLD Snooping Proxying。

[SwitchA] vlan 100

[SwitchA-vlan100] port ethernet 1/0/1 to ethernet 1/0/4

[SwitchA-vlan100] mld-snooping enable

[SwitchA-vlan100] mld-snooping proxying enable

[SwitchA-vlan100] quit

(4) 检验配置效果

当配置完成后，Host A和Host B分别发送组地址为FF1E::101的MLD加入报文，Switch A收到该报文后通过其路由器端口Ethernet1/0/1向Router A也发送该组的加入报文。通过使用 display mld-snooping group 和 display mld group 命令可以分别查看MLD Snooping组和MLD组的信息，例如：

# 查看Switch A上MLD Snooping组的信息。

[SwitchA] display mld-snooping group

Total 1 IP Group(s).

Total 1 IP Source(s).

Total 1 MAC Group(s).

Port flags: D-Dynamic port, S-Static port, C-Copy port, P-PIM port

Subvlan flags: R-Real VLAN, C-Copy VLAN

Vlan(id):100.

Total 1 IP Group(s).

Total 1 IP Source(s).

Total 1 MAC Group(s).

Router port(s):total 1 port(s).

Eth1/0/1 (D) ( 00:01:23 )

IP group(s):the following ip group(s) match to one mac group.

IP group address:FF1E::101

(::, FF1E::101):

Host port(s):total 2 port(s).

Eth1/0/3 (D)

Eth1/0/4 (D)

MAC group(s):

MAC group address:3333-0000-0101

Host port(s):total 2 port(s).

Eth1/0/3

Eth1/0/4

# 查看Router A上MLD组的信息。

[RouterA] display mld group

Total 1 MLD Group(s).

Interface group report information

Ethernet1/0/1(2001::1):

Total 1 MLD Group reported

Group Address: FF1E::1

Last Reporter: FE80::2FF:FFFF:FE00:1

Uptime: 00:00:03

Expires: 00:04:17

当Host A离开IPv6组播组FF1E::101时，向Switch A发送该组的MLD离开报文，但由于Host B仍未离开该组，因此Switch A并不会删除该组，也不会向Router A发送该组的离开报文，只是在该组对应转发表项的成员端口列表中将端口Ethernet1/0/4删除。通过使用 display mld-snooping group 命令可以查看MLD Snooping组的信息，例如：

# 查看Switch A上MLD Snooping组的信息。

[SwitchA] display mld-snooping group

Total 1 IP Group(s).

Total 1 IP Source(s).

Total 1 MAC Group(s).

Port flags: D-Dynamic port, S-Static port, C-Copy port, P-PIM port

Subvlan flags: R-Real VLAN, C-Copy VLAN

Vlan(id):100.

Total 1 IP Group(s).

Total 1 IP Source(s).

Total 1 MAC Group(s).

Router port(s):total 1 port(s).

Eth1/0/1 (D) ( 00:01:23 )

IP group(s):the following ip group(s) match to one mac group.

IP group address:FF1E::101

(::, FF1E::101):

Host port(s):total 1 port(s).

Eth1/0/3 (D)

MAC group(s):

MAC group address:3333-0000-0101

Host port(s):total 1 port(s).

Eth1/0/3

1.9.5 IPv6组播源与组播用户控制策略配置举例

1. 组网需求

l 如 图1-8 所示，三层交换机Switch A分别通过端口Vlan-interface101和Vlan-interface102连接IPv6组播源Source 1和Source 2，通过端口Vlan-interface103连接RADIUS服务器，并通过接口Vlan-interface104连接二层交换机Switch B；Switch A上运行MLDv1，Switch B上运行版本1的MLD Snooping，连接在Switch A上的IPV6组播源和连接在Switch B上的主机都使用802.1X进行认证。

l 通过在Switch A上配置IPv6组播源控制策略，禁止由Source 2发往IPv6组播组FF1E::101的IPv6组播数据进入网络；通过在Switch B上配置IPv6组播用户控制策略，使接收者（Receiver）Host A只能加入/离开IPv6组播组FF1E::101。

2. 组网图

图1-8 IPv6组播源与组播用户控制策略配置组网图

3. 配置步骤

(1) 配置IP地址

使能各设备的IPv6转发功能，并按照 图1-8 配置各接口的IPv6地址和前缀长度，具体配置过程略。

(2) 配置Switch A

# 分别创建VLAN 101～104，并将端口Ethernet1/0/1～Ethernet1/0/4依次加入VLAN 101～104中。

<SwitchA> system-view

[SwitchA] vlan 101

[SwitchA-vlan101] port ethernet 1/0/1

[SwitchA-vlan101] quit

[SwitchA] vlan 102

[SwitchA-vlan102] port ethernet 1/0/2

[SwitchA-vlan102] quit

[SwitchA] vlan 103

[SwitchA-vlan103] port ethernet 1/0/3

[SwitchA-vlan103] quit

[SwitchA] vlan 104

[SwitchA-vlan104] port ethernet 1/0/4

[SwitchA-vlan104] quit

# 使能IPv6组播路由，在接口Vlan-interface101、Vlan-interface102和Vlan-interface104上使能IPv6 PIM-DM，并在接口Vlan-interface104上使能MLD。

[SwitchA] multicast ipv6 routing-enable

[SwitchA] interface vlan-interface 101

[SwitchA-Vlan-interface101] pim ipv6 dm

[SwitchA-Vlan-interface101] quit

[SwitchA] interface vlan-interface 102

[SwitchA-Vlan-interface102] pim ipv6 dm

[SwitchA-Vlan-interface102] quit

[SwitchA] interface vlan-interface 104

[SwitchA-Vlan-interface104] pim ipv6 dm

[SwitchA-Vlan-interface104] mld enable

[SwitchA-Vlan-interface104] quit

# 创建名为policy1的QoS策略，不允许来自IPv6组播源2::1的IPv6组播数据向IPv6组播组FF1E::101发送。

[SwitchA] acl ipv6 number 3001

[SwitchA-acl6-adv-3001] rule permit udp source 2::1 128 destination ff1e::101 128

[SwitchA-acl6-adv-3001] quit

[SwitchA] traffic classifier classifier1

[SwitchA-classifier-classifier1] if-match acl ipv6 3001

[SwitchA-classifier-classifier1] quit

[SwitchA] traffic behavior behavior1

[SwitchA-behavior-behavior1] filter deny

[SwitchA-behavior-behavior1] quit

[SwitchA] qos policy policy1

[SwitchA-qospolicy-policy1] classifier classifier1 behavior behavior1

[SwitchA-qospolicy-policy1] quit

# 创建名为profile1的User Profile，在该User Profile下应用QoS策略policy1，并将该User Profile激活。

[SwitchA] user-profile profile1

[SwitchA-user-profile-profile1] qos apply policy policy1 inbound

[SwitchA-user-profile-profile1] quit

[SwitchA] user-profile profile1 enable

# 创建名为scheme1的RADIUS认证方案，配置RADIUS服务器的类型为extended类型；指定主RADIUS认证/授权服务器和计费服务器的IP地址均为3::1，共享密钥均为123321；并配置发送给RADIUS服务器的用户名不需要携带域名。

[SwitchA] radius scheme scheme1

[SwitchA-radius-scheme1] server-type extended

[SwitchA-radius-scheme1] primary authentication 3::1

[SwitchA-radius-scheme1] key authentication 123321

[SwitchA-radius-scheme1] primary accounting 3::1

[SwitchA-radius-scheme1] key accounting 123321

[SwitchA-radius-scheme1] user-name-format without-domain

[SwitchA-radius-scheme1] quit

# 创建名为domain1的ISP域，指定lan-access用户的RADIUS认证、授权和计费方案均为scheme1；并将该域指定为系统缺省的ISP域。

[SwitchA] domain domain1

[SwitchA-isp-domian1] authentication lan-access radius-scheme scheme1

[SwitchA-isp-domian1] authorization lan-access radius-scheme scheme1

[SwitchA-isp-domian1] accounting lan-access radius-scheme scheme1

[SwitchA-isp-domian1] quit

[SwitchA] domain default enable domain1

# 全局使能802.1X，并在端口Ethernet1/0/1和Ethernet1/0/2上分别使能802.1X。

[SwitchA] dot1x

[SwitchA] interface ethernet 1/0/1

[SwitchA-Ethernet1/0/1] dot1x

[SwitchA-Ethernet1/0/1] quit

[SwitchA] interface ethernet 1/0/2

[SwitchA-Ethernet1/0/2] dot1x

[SwitchA-Ethernet1/0/2] quit

(3) 配置Switch B

# 全局使能MLD Snooping。

<SwitchB> system-view

[SwitchB] mld-snooping

[SwitchB-mld-snooping] quit

# 创建VLAN 104把端口Ethernet1/0/1到Ethernet1/0/3添加到该VLAN中；在该VLAN内使能MLD Snooping。

[SwitchB] vlan 104

[SwitchB-vlan104] port ethernet 1/0/1 to ethernet 1/0/3

[SwitchB-vlan104] mld-snooping enable

[SwitchB-vlan104] quit

# 创建名为profile2的User Profile，在该User Profile下配置只允许用户加入/离开IPV6组播组FF1E::101，并将该User Profile激活。

[SwitchB] acl ipv6 number 2001

[SwitchB-acl6-basic-2001] rule permit source ff1e::101 128

[SwitchB-acl6-basic-2001] quit

[SwitchB] user-profile profile2

[SwitchB-user-profile-profile2] mld-snooping access-policy 2001

[SwitchB-user-profile-profile2] quit

[SwitchB] user-profile profile2 enable

# 创建名为scheme2的RADIUS认证方案，配置RADIUS服务器的类型为extended类型；指定主RADIUS认证/授权服务器和计费服务器的IP地址均为3::1，共享密钥均为321123；并配置发送给RADIUS服务器的用户名不需要携带域名。

[SwitchB] radius scheme scheme2

[SwitchB-radius-scheme2] server-type extended

[SwitchB-radius-scheme2] primBry authentication 3::1

[SwitchB-radius-scheme2] key authentication 321123

[SwitchB-radius-scheme2] primary accounting 3::1

[SwitchB-radius-scheme2] key accounting 321123

[SwitchB-radius-scheme2] user-name-format without-domain

[SwitchB-radius-scheme2] quit

# 创建名为domain2的ISP域，指定lan-access用户的RADIUS认证、授权和计费方案均为scheme2；并将该域指定为系统缺省的ISP域。

[SwitchB] domain domain2

[SwitchB-isp-domian2] authentication lan-access radius-scheme scheme2

[SwitchB-isp-domian2] authorization lan-access radius-scheme scheme2

[SwitchB-isp-domian2] accounting lan-access radius-scheme scheme2

[SwitchB-isp-domian2] quit

[SwitchB] domain default enable domain2

# 全局使能802.1X，并在端口Ethernet1/0/2和Ethernet1/0/3上分别使能802.1X。

[SwitchB] dot1x

[SwitchB] interface ethernet 1/0/2

[SwitchB-Ethernet1/0/2] dot1x

[SwitchB-Ethernet1/0/2] quit

[SwitchB] interface ethernet 1/0/3

[SwitchB-Ethernet1/0/3] dot1x

[SwitchB-Ethernet1/0/3] quit

(4) 配置RADIUS服务器

请在RADIUS服务器上进行与Switch A和Switch B相对应的配置，具体配置过程可参考RADIUS服务器的配置手册。

(5) 检验配置效果

配置完成后，所有的IPv6组播源和用户主机都向RADIUS服务器发起802.1X认证。当认证通过后，Source 1向IPv6组播组FF1E::101、Source 2向IPv6组播组FF1E::102分别发送不同的IPv6组播数据，而Host A分别发起了对IPv6组播组FF1E::101和FF1E::102的加入。通过使用 display mld-snooping group 命令可以查看MLD Snooping组的信息：

# 查看Switch B上VLAN 104内MLD Snooping组的详细信息。

[SwitchB] display mld-snooping group vlan 104 verbose

Total 1 IP Group(s).

Total 1 IP Source(s).

Total 1 MAC Group(s).

Port flags: D-Dynamic port, S-Static port, C-Copy port

Subvlan flags: R-Real VLAN, C-Copy VLAN

Vlan(id):100.

Total 1 IP Group(s).

Total 1 IP Source(s).

Total 1 MAC Group(s).

Router port(s):total 1 port(s).

Eth1/0/1 (D) ( 00:01:30 )

IP group(s):the following ip group(s) match to one mac group.

IP group address:FF1E::101

(::, FF1E::101):

Attribute: Host Port

Host port(s):total 1 port(s).

Eth1/0/3 (D) ( 00:04:10 )

MAC group(s):

MAC group address:3333-0000-0101

Host port(s):total 1 port(s).

Eth1/0/3

由此可见，Switch B上的端口Ethernet1/0/3只加入了IPV6组播组FF1E::101，而未加入IPV6组播组FF1E::102。

此后由于管理员的操作失误，Source 2也开始向IPv6组播组FF1E::101发送IPv6组播数据。通过使用 display multicast ipv6 forwarding-table 命令可以查看IPv6组播转发表的信息：

# 查看Switch A上有关IPv6组播组FF1E::101的IPv6组播转发表信息。

[SwitchA] display multicast ipv6 forwarding-table ff1e::101

IPv6 Multicast Forwarding Table

Total 1 entry

Total 1 entry matched

00001. (1::1, FF1E::101)

MID: 0, Flags: 0x0:0

Uptime: 00:08:32, Timeout in: 00:03:26

Incoming interface: Vlan-interface101

List of 1 outgoing interfaces:

1: Vlan-interface104

Matched 19648 packets(20512512 bytes), Wrong If 0 packets

Forwarded 19648 packets(20512512 bytes)

由此可见，Switch A上只有IPv6组播源组（1::1，FF1E::101）的转发表项，而没有IPv6组播源组（2::1，FF1E::101）的转发表项，说明Source 2发往IPv6组播组FF1E::101的IPv6组播数据没能进入网络。


1.10 常见配置错误举例

1.10.1 交换机不能实现二层组播

1. 故障现象

交换机不能实现MLD snooping二层组播功能。

2. 分析

MLD Snooping没有使能。

3. 处理过程

(1) 使用 display current-configuration 命令查看MLD Snooping的运行状态。

(2) 如果是没有使能MLD Snooping，则需先在系统视图下使用 mld-snooping 命令全局使能MLD Snooping，然后在VLAN视图下使用 mld-snooping enable 命令使能VLAN内的MLD Snooping。

(3) 如果只是没有在相应VLAN下使能MLD Snooping，则只需在VLAN视图下使用 mld-snooping enable 命令使能VLAN内的MLD Snooping。

1.10.2 配置的IPv6组播组策略不生效

1. 故障现象

配置了IPv6组播组策略，只允许主机加入某些特定的IPv6组播组，但主机仍然可以收到发往其它IPv6组播组的IPv6组播数据。

2. 分析

l IPv6 ACL规则配置不正确；

l IPv6组播组策略应用不正确；

l 没有使能丢弃未知IPv6组播数据报文的功能，使得属于过滤策略之外的IPv6组播数据报文（即未知IPv6组播数据报文）被广播。

3. 处理过程

(1) 使用 display acl ipv6 命令查看所配置的IPv6 ACL规则，检查其是否与所要实现的IPv6组播组过滤策略相符合。

(2) 在MLD-Snooping视图或相应的端口视图下使用 display this 命令查看是否应用了正确的IPv6组播组策略。如果没有，则使用 group-policy 或 mld-snooping group-policy 命令应用正确的IPv6组播组策略。

(3) 使用 display current-configuration 命令查看是否已使能丢弃未知IPv6组播数据报文的功能。如果没有使能，则使用 drop-unknown 或 mld-snooping drop-unknown 命令使能丢弃未知IPv6组播数据报文功能。


1.11 附录

1.11.1 交换机对IPv6组播协议报文的特殊处理规则

支持MLD Snooping功能的交换机使能了三层IPv6组播路由后，在不同的情况下对各种IPv6组播协议报文的处理有所差异。具体规则如下：

(1) 如果交换机上只使能了MLD，或同时使能了MLD和IPv6 PIM：

l 对于MLD报文，根据报文类型为其维护相应的动态成员端口或动态路由器端口；

l 对于IPv6 PIM Hello报文，为其维护相应的动态路由器端口。

(2) 如果交换机上只使能了IPv6 PIM：

l 对于MLD报文，将其当作未知报文在VLAN内进行广播；

l 对于IPv6 PIM Hello报文，为其维护相应的动态路由器端口。

(3) 在交换机上关闭MLD时：

l 如果未使能IPv6 PIM，则删除所有动态成员端口和动态路由器端口；

l 如果已使能IPv6 PIM，则删除动态成员端口，只保留动态路由器端口。

在使能了三层IPv6组播路由的交换机上，请使用命令 display mld group port-info 来查看二层端口信息。有关 display mld group port-info 命令的详细介绍，请参见“IP组播命令参考”中的“MLD”。

(4) 在交换机上关闭IPv6 PIM时：

l 如果未使能MLD，则删除动态路由器端口；

l 如果已使能MLD，则保留所有动态成员端口和动态路由器端口。


1 IPv6 PIM Snooping配置

S3600V2-SI系列交换机不支持IPv6 PIM Snooping配置。

相关链接

  • 1.1 IPv6 PIM Snooping简介
  • 1.2 配置IPv6 PIM Snooping
  • 1.3 IPv6 PIM Snooping显示和维护
  • 1.4 IPv6 PIM Snooping典型配置举例
  • 1.5 常见配置错误举例
父主题： 11-IPv6 PIM Snooping配置


1.1 IPv6 PIM Snooping简介

IPv6 PIM Snooping是IPv6 Protocol Independent Multicast Snooping（IPv6协议无关组播窥探）的简称，运行IPv6 PIM Snooping的二层设备通过对收到的IPv6 PIM协议报文进行分析，将有接收需求的端口添加到相应的IPv6组播转发表项中，以实现IPv6组播报文的精确转发。

图1-1 二层设备运行IPv6 PIM Snooping前后的对比

如图1-1 所示，IPv6组播源Source 1和Source 2分别向IPv6组播组G1和G2发送IPv6组播数据，而Receiver 1和Receiver 2则分别是G1和G2的接收者，二层设备上连接各IPv6 PIM路由器的端口都属于同一个VLAN：

l 当二层设备只运行MLD Snooping时，它通过监听IPv6 PIM路由器发出的IPv6 PIM Hello报文来维护路由器端口，并将所有IPv6 组播数据报文向VLAN内的所有路由器端口转发；而对于其它类型的IPv6 PIM协议报文，则在VLAN内广播。因此，无论IPv6 PIM路由器是否有接收需求，都会收到所有的IPv6 PIM协议报文和IPv6组播数据报文。

l 当二层设备同时运行了MLD Snooping和IPv6 PIM Snooping时，它通过监听IPv6 PIM路由器发出的IPv6 PIM协议报文来了解其接收需求，从而将有接收需求的IPv6 PIM路由器所在的端口加入到相应的IPv6组播转发表项中，使IPv6 PIM协议报文和IPv6组播数据报文能够被精确转发给有接收需求的IPv6 PIM路由器，从而节约了网络带宽。

l 有关MLD Snooping和路由器端口的详细介绍，请参见“IP组播配置指导”中的“MLD Snooping”。

l 有关IPv6 PIM的详细介绍，请参见“IP组播配置指导”中的“IPv6 PIM”。


1.2 配置IPv6 PIM Snooping

在配置某VLAN内的IPv6 PIM Snooping时，需要在交换机上先全局使能IPv6转发功能和MLD Snooping，然后在该VLAN内使能MLD Snooping和IPv6 PIM Snooping。

表1-1 配置IPv6 PIM Snooping

操作 | 命令 | 说明
进入系统视图 | system-view | -
全局时能IPv6转发功能 | Ipv6 | 必选 缺省情况下，IPv6转发功能处于关闭状态
全局使能MLD Snooping，并进入MLD-Snooping视图 | mld-snooping | 必选 缺省情况下，MLD Snooping处于关闭状态
退回系统视图 | quit | -
进入VLAN视图 | vlan vlan-id | -
在VLAN内使能MLD Snooping | mld-snooping enable | 必选 缺省情况下，VLAN内的MLD Snooping处于关闭状态
在VLAN内使能IPv6 PIM Snooping | pim-snooping ipv6 enable | 必选 缺省情况下，VLAN内的IPv6 PIM Snooping处于关闭状态

l 有关 mld-snooping 和 mld-snooping enable 命令的详细介绍，请参见“IP组播命令参考”中的“MLD Snooping”。

l 在VLAN内使能了IPv6 PIM Snooping之后，IPv6 PIM Snooping功能只在属于该VLAN的端口上生效。

l 在IPv6组播VLAN的子VLAN内使能IPv6 PIM Snooping无效。有关IPv6组播VLAN的详细介绍，请参见“IP组播配置指导”中的“IPv6组播VLAN”。


1.3 IPv6 PIM Snooping显示和维护

在完成上述配置后，在任意视图下执行 display 命令可以显示配置后IPv6 PIM Snooping的运行情况，通过查看显示信息验证配置的效果。

在用户视图下执行 reset 命令可以清除IPv6 PIM Snooping的统计信息。

表1-2 IPv6 PIM Snooping显示和维护

操作 | 命令
查看IPv6 PIM Snooping的邻居信息 | display pim-snooping ipv6 neighbor [ vlan vlan-id ] [ slot slot-number ] [ | { begin | exclude | include } regular-expression ]
查看IPv6 PIM Snooping的路由信息 | display pim-snooping ipv6 routing-table [ vlan vlan-id ] [ slot slot-number ] [ | { begin | exclude | include } regular-expression ]
查看IPv6 PIM Snooping监听到的PIM报文的统计信息 | display pim-snooping ipv6 statistics [ | { begin | exclude | include } regular-expression ]
清除IPv6 PIM Snooping监听到的PIM报文的统计信息 | reset pim-snooping ipv6 statistics


1.4 IPv6 PIM Snooping典型配置举例

1. 组网需求

l 如图1-2 所示，Router A和Router B各自的Ethernet1/0/1接口分别连接IPv6组播源Source 1和Source 2；Router C和Router D各自的Ethernet1/0/1接口分别连接接收者Receiver 1和Receiver 2；Router A、Router B、Router C和Router D各自的Ethernet1/0/2接口都通过Switch A互连。

l Source 1和Source 2分别通过IPv6组播组FF1E::101和FF2E::101发送IPv6组播数据，Receiver 1和Receiver 2则分别接收来自IPv6组播组FF1E::101和FF2E::101的IPv6组播数据；Router C和Router D各自的Ethernet1/0/1接口上都运行MLD，Router A、Router B、Router C和Router D上都运行IPv6 PIM-SM，并由Router A的Ethernet1/0/2接口充当C-BSR和C-RP。

l 通过在Switch A上配置MLD Snooping和IPv6 PIM Snooping，使Switch A将IPv6 PIM协议报文和IPv6组播数据报文只转发给有接收需求的路由器。

2. 组网图

图1-2 IPv6 PIM Snooping典型配置组网图

3. 配置步骤

(1) 使能IPv6转发功能，并配置IPv6地址

使能各设备的IPv6转发功能，并按照图1-2 配置各接口的IPv6地址和前缀长度，具体配置过程略。

(2) 配置Router A

# 使能IPv6组播路由，在各接口上使能IPv6 PIM-SM，并将接口Ethernet1/0/2配置为C-BSR和C-RP。

<RouterA> system-view

[RouterA] multicast ipv6 routing-enable

[RouterA] interface ethernet 1/0/1

[RouterA-Ethernet1/0/1] pim ipv6 sm

[RouterA-Ethernet1/0/1] quit

[RouterA] interface ethernet 1/0/2

[RouterA-Ethernet1/0/2] pim ipv6 sm

[RouterA-Ethernet1/0/2] quit

[RouterA] pim ipv6

[RouterA-pim6] c-bsr 1001::1

[RouterA-pim6] c-rp 1001::1

(3) 配置Router B

# 使能IPv6组播路由，在各接口上使能IPv6 PIM-SM。

<RouterB> system-view

[RouterB] multicast ipv6 routing-enable

[RouterB] interface ethernet 1/0/1

[RouterB-Ethernet1/0/1] pim ipv6 sm

[RouterB-Ethernet1/0/1] quit

[RouterB] interface ethernet 1/0/2

[RouterB-Ethernet1/0/2] pim ipv6 sm

(4) 配置Router C

# 使能IPv6组播路由，在各接口上使能IPv6 PIM-SM，并在接口Ethernet1/0/1上使能MLD。

<RouterC> system-view

[RouterC] multicast ipv6 routing-enable

[RouterC] interface ethernet 1/0/1

[RouterC-Ethernet1/0/1] pim ipv6 sm

[RouterC-Ethernet1/0/1] mld enable

[RouterC-Ethernet1/0/1] quit

[RouterC] interface ethernet 1/0/2

[RouterC-Ethernet1/0/2] pim ipv6 sm

(5) 配置Router D

Router D的配置与Router C相似，配置过程略。

(6) 配置Switch A

# 全局使能MLD Snooping。

<SwitchA> system-view

[SwitchA] mld-snooping

[SwitchA-mld-snooping] quit

# 创建VLAN 100，把端口Ethernet1/0/1到Ethernet1/0/4添加到该VLAN中；在该VLAN内使能MLD Snooping和IPv6 PIM Snooping。

[SwitchA] vlan 100

[SwitchA-vlan100] port ethernet 1/0/1 to ethernet 1/0/4

[SwitchA-vlan100] mld-snooping enable

[SwitchA-vlan100] pim-snooping ipv6 enable

[SwitchA-vlan100] quit

(7) 检验配置效果

# 查看Switch A上VLAN 100内IPv6 PIM Snooping的邻居信息。

[SwitchA] display pim-snooping ipv6 neighbor vlan 100

Total number of neighbors: 4

VLAN ID: 100

Total number of neighbors: 4

Neighbor Port Expires Option Flags

FE80::1 Eth1/0/1 02:02:23 LAN Prune Delay

FE80::2 Eth1/0/2 03:00:05 LAN Prune Delay

FE80::3 Eth1/0/3 02:22:13 LAN Prune Delay

FE80::4 Eth1/0/4 03:07:22 LAN Prune Delay

由此可见，Router A、Router B、Router C和Router D之间都建立起了IPv6 PIM Snooping邻居关系。

# 查看Switch A上VLAN 100内IPv6 PIM Snooping的路由信息。

[SwitchA] display pim-snooping ipv6 routing-table vlan 100 slot 1

Total 2 entry(ies)

FSM Flag: NI-no info, J-join, PP-prune pending

VLAN ID: 100

Total 2 entry(ies)

(*, FF1E::101)

Upstream neighbor: FE80::1

Upstream port: Eth1/0/1

Total number of downstream ports: 1

1: Eth1/0/3

Expires: 00:03:01, FSM: J

(*, FF2E::101)

Upstream neighbor: FE80::1

Upstream port: Eth1/0/2

Total number of downstream ports: 1

1: Eth1/0/4

Expires: 00:01:05, FSM: J

由此可见，Switch A将向Router C转发IPv6组播组FF1E::101的IPv6组播数据，向Router D转发IPv6组播组FF2E::101的IPv6组播数据。


1.5 常见配置错误举例

1.5.1 交换机不能实现IPv6 PIM Snooping功能

1. 故障现象

交换机不能实现IPv6 PIM Snooping功能。

2. 分析

MLD Snooping或IPv6 PIM Snooping没有使能。

3. 处理过程

(1) 使用 display current-configuration 命令查看MLD Snooping和IPv6 PIM Snooping的运行状态。

(2) 如果没有使能MLD Snooping，请先在系统视图下使用 mld-snooping 命令全局使能MLD Snooping，然后在VLAN视图下分别使用 mld-snooping enable 和 pim-snooping ipv6 enable 命令使能VLAN内的MLD Snooping和IPv6 PIM Snooping。

(3) 如果没有使能IPv6 PIM Snooping，请在VLAN视图下使用 pim-snooping ipv6 enable 命令使能VLAN内的IPv6 PIM Snooping。

1.5.2 部分下游IPv6 PIM路由器无法收到IPv6组播数据

1. 故障现象

在有分片加入/剪枝报文的网络中，部分下游IPv6 PIM路由器无法收到IPv6组播数据。

2. 分析

IPv6 PIM Snooping不能对分片报文进行重组，因此无法维护分片加入/剪枝报文中携带的下游状态。为了保证系统功能正常，只能将分片加入/剪枝报文在VLAN内广播，因此需要在VLAN内连接IPv6 PIM Snooping交换机的所有IPv6 PIM路由器上都禁止加入报文抑制能力，以保证加入报文不被广播的分片加入/剪枝报文所抑制。假如存在未禁止该能力的IPv6 PIM路由器，被广播的分片加入/剪枝报文就会影响其它IPv6 PIM路由器的加入状态：如果某IPv6 PIM路由器有IPv6组播接收需求，但其发送的加入报文被抑制，那么该路由器将无法收到IPv6组播数据。

3. 处理过程

(1) 在IPv6 PIM路由器连接IPv6 PIM Snooping交换机的接口上使用 pim ipv6 hello-option neighbor-tracking 命令使能邻居跟踪功能。

(2) 如果存在不能够使能邻居跟踪功能的IPv6 PIM路由器，则需关闭IPv6 PIM Snooping交换机上的IPv6 PIM Snooping功能。


1 IPv6组播VLAN配置

相关链接

  • 1.1 IPv6组播VLAN简介
  • 1.2 IPv6组播VLAN配置任务简介
  • 1.3 配置基于子VLAN的IPv6组播VLAN
  • 1.4 配置基于端口的IPv6组播VLAN
  • 1.5 配置IPv6组播VLAN内MLD Snooping转发表项的最大数量
  • 1.6 IPv6组播VLAN显示和维护
  • 1.7 IPv6组播VLAN典型配置举例
父主题： 12-IPv6组播VLAN配置


1.1 IPv6组播VLAN简介

如图1-1 所示，在传统的IPv6组播点播方式下，当属于不同VLAN的主机Host A、Host B和Host C同时点播同一IPv6组播组时，三层设备（Router A）需要把IPv6组播数据在每个用户VLAN（即主机所属的VLAN）内都复制一份发送给二层设备（Switch A）。这样既造成了带宽的浪费，也给三层设备增加了额外的负担。

图1-1 未运行IPv6组播VLAN时的IPv6组播数据传输

可以使用IPv6组播VLAN功能解决这个问题。在二层设备上配置了IPv6组播VLAN后，三层设备只需把IPv6组播数据在IPv6组播VLAN内复制一份发送给二层设备，而不必在每个用户VLAN内都复制一份，从而节省了网络带宽，也减轻了三层设备的负担。

IPv6组播VLAN有以下两种实现和配置方式：

1. 基于子VLAN的IPv6组播VLAN

如 图1-2 所示，接收者主机Host A、Host B和Host C分属不同的用户VLAN。在Switch A上配置VLAN 10为IPv6组播VLAN，将所有的用户VLAN都配置为该IPv6组播VLAN的子VLAN，并在IPv6组播VLAN内使能MLD Snooping。

图1-2 基于子VLAN的IPv6组播VLAN示意图

配置完成后，MLD Snooping将在IPv6组播VLAN中对路由器端口进行维护，而在各子VLAN中对成员端口进行维护。这样，Router A只需把IPv6组播数据在IPv6组播VLAN内复制一份发送给Switch A即可，Switch A会将其分发给该IPv6组播VLAN内那些有接收者的子VLAN。

2. 基于端口的IPv6组播VLAN

如 图1-3 所示，接收者主机Host A、Host B和Host C分属不同的用户VLAN，Switch A上的所有用户端口（即连接主机的端口）均为Hybrid类型。在Switch A上配置VLAN 10为IPv6组播VLAN，将所有用户端口都添加到该IPv6组播VLAN内，并在IPv6组播VLAN和所有用户VLAN内都使能MLD Snooping。

图1-3 基于端口的IPv6组播VLAN示意图

配置完成后，当Switch A上的用户端口收到来自主机的MLD报文时，会为其打上IPv6组播VLAN的Tag并上送给MLD查询器，于是MLD Snooping就可以在IPv6组播VLAN中对路由器端口和成员端口进行统一的维护。这样，Router A只需把IPv6组播数据在IPv6组播VLAN内复制一份发送给Switch A即可，Switch A会将其分发给该IPv6组播VLAN内的所有成员端口。

l 有关MLD Snooping的相关配置，以及路由器端口和成员端口的详细介绍，请参见“IP组播配置指导”中的“MLD Snooping”。

l 有关VLAN Tag的详细介绍，请参见“二层技术-以太网交换配置指导”中的“VLAN”。


1.2 IPv6组播VLAN配置任务简介

表1-1 IPv6组播VLAN配置任务简介

配置任务 |  | 说明 | 详细配置
配置基于子VLAN的IPv6组播VLAN |  | 二者必选其一 | 1.3
配置基于端口的IPv6组播VLAN | 配置用户端口属性 |  | 1.4.2
 | 配置IPv6组播VLAN端口 |  | 1.4.3
配置IPv6组播VLAN内MLD Snooping转发表项的最大数量 |  | 可选 | 1.5

若在设备上同时配置了基于子VLAN和基于端口的IPv6组播VLAN，则基于端口的IPv6组播VLAN将优先生效。


1.3 配置基于子VLAN的IPv6组播VLAN

1.3.1 配置准备

在配置基于子VLAN的IPv6组播VLAN之前，需完成以下任务：

l 创建相应的VLAN

l 在欲配置为IPv6组播VLAN的VLAN内使能MLD Snooping

1.3.2 配置基于子VLAN的IPv6组播VLAN

首先需要把某个VLAN配置为IPv6组播VLAN，再将用户VLAN添加到该IPv6组播VLAN内，使其成为IPv6组播VLAN的子VLAN。

表1-2 配置基于子VLAN的IPv6组播VLAN

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置指定VLAN为IPv6组播VLAN，并进入IPv6组播VLAN视图 | multicast-vlan ipv6 vlan-id | 必选 缺省情况下，VLAN不是IPv6组播VLAN
向IPv6组播VLAN内添加子VLAN | subvlan vlan-list | 必选 缺省情况下，IPv6组播VLAN内没有子VLAN

l 在已使能了IPv6组播路由的设备上不允许再配置IPv6组播VLAN。

l 要配置为IPv6组播VLAN的指定VLAN必须存在。

l 要添加到IPv6组播VLAN内的子VLAN必须存在，且不能是IPv6组播VLAN或其它IPv6组播VLAN的子VLAN。

l IPv6组播VLAN内子VLAN的总数不得超过系统限制。


1.4 配置基于端口的IPv6组播VLAN

在配置基于端口的IPv6组播VLAN时，需要先配置各用户端口的属性，然后再将配置好的用户端口添加到IPv6组播VLAN内。

l 只允许将以太网端口或二层聚合接口类型的用户端口配置为IPv6组播VLAN的端口。

l 二层以太网端口视图下的配置只对当前端口有效；二层聚合接口视图下的配置对当前接口有效；端口组视图下的配置对当前端口组中的所有端口有效。

1.4.1 配置准备

在配置基于端口的IPv6组播VLAN之前，需完成以下任务：

l 创建相应的VLAN

l 在欲配置为IPv6组播VLAN的VLAN内使能MLD Snooping

l 在所有的用户VLAN内都内使能MLD Snooping

1.4.2 配置用户端口属性

配置用户端口为Hybrid类型，允许用户VLAN的报文通过，缺省VLAN为其所属的用户VLAN。

配置用户端口允许IPv6组播VLAN的报文通过，且不携带Tag。这样，当二层设备通过IPv6组播VLAN收到来自上游、打有IPv6组播VLAN Tag的IPv6组播数据报文时，会将其Tag去掉后再向下游转发。

表1-3 配置用户端口属性

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
进入相应视图 | 进入二层以太网端口视图 | interface interface-type interface-number | 二者必选其一
 | 进入端口组视图 | port-group manual port-group-name
配置用户端口的链路类型为Hybrid类型 |  | port link-type hybrid | 必选 缺省情况下，端口的链路类型为Access类型
配置用户端口的缺省VLAN为其所属的用户VLAN |  | port hybrid pvid vlan vlan-id | 必选 缺省情况下，Hybrid端口的缺省VLAN为VLAN 1
允许IPv6组播VLAN通过用户端口，且不携带Tag |  | port hybrid vlan vlan-id-list untagged | 必选 缺省情况下，Hybrid端口只允许VLAN 1通过

有关 port link-type、port hybrid pvid vlan 和 port hybrid vlan 命令的详细介绍，请参见“二层技术-以太网交换命令参考”中的“VLAN”。

1.4.3 配置IPv6组播VLAN端口

首先需要把某个VLAN配置为IPv6组播VLAN，再将用户端口添加到该IPv6组播VLAN内——既可以在IPv6组播VLAN内添加端口，也可以在端口上指定其所属的IPv6组播VLAN——这两种配置方式是等效的。

1. 在IPv6组播VLAN内配置IPv6组播VLAN端口

表1-4 在IPv6组播VLAN内配置IPv6组播VLAN端口

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置指定VLAN为IPv6组播VLAN，并进入IPv6组播VLAN视图 | multicast-vlan ipv6 vlan-id | 必选 缺省情况下，VLAN不是IPv6组播VLAN
向IPv6组播VLAN内添加端口 | port interface-list | 必选 缺省情况下，IPv6组播VLAN内没有端口

2. 在端口上配置IPv6组播VLAN端口

表1-5 在端口上配置IPv6组播VLAN端口

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
配置指定VLAN为IPv6组播VLAN，并进入IPv6组播VLAN视图 |  | multicast-vlan ipv6 vlan-id | 必选 缺省情况下，VLAN不是IPv6组播VLAN
退回系统视图 |  | quit | -
进入相应视图 | 进入二层以太网端口视图 | interface interface-type interface-number | 二者必选其一
 | 进入端口组视图 | port-group manual port-group-name
指定端口所属的IPv6组播VLAN |  | port multicast-vlan ipv6 vlan-id | 必选 缺省情况下，端口不属于任何IPv6组播VLAN

l 在已使能了IPv6组播路由的设备上不允许再配置IPv6组播VLAN。

l 要配置为IPv6组播VLAN的指定VLAN必须存在。

l 一个端口只能属于一个IPv6组播VLAN。


1.5 配置IPv6组播VLAN内MLD Snooping转发表项的最大数量

用户可以调整IPv6组播VLAN内MLD Snooping转发表项的最大数量，当所有IPv6组播VLAN内维护的表项总数达到最大数量后，将不再创建新的表项，直至有表项被老化或被手工删除。

表1-6 配置IPv6组播VLAN内MLD Snooping转发表项的最大数量

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置IPv6组播VLAN内MLD Snooping转发表项的最大数量 | multicast-vlan ipv6 entry-limit limit | 必选 缺省情况下，S3600V2-EI系列交换机IPv6组播VLAN内MLD Snooping转发表项的最大数量为1000，S3600V2-SI系列交换机IPv6组播VLAN内MLD Snooping转发表项的最大数量为512

在对IPv6组播VLAN内MLD Snooping转发表项的最大数量进行配置时，如果所有IPv6组播VLAN内的表项总数已超过了配置值，系统将提示用户删除多余表项，但并不会自动删除任何已存在的表项，同时也不再继续创建新的表项。


1.6 IPv6组播VLAN显示和维护

在完成上述配置后，在任意视图下执行 display 命令可以显示配置后IPv6组播VLAN的运行情况，通过查看显示信息验证配置的效果。

表1-7 IPv6组播VLAN显示和维护

操作 | 命令
查看IPv6组播VLAN的信息 | display multicast-vlan ipv6 [ vlan-id ] [ | { begin | exclude | include } regular-expression ]


1.7 IPv6组播VLAN典型配置举例

1.7.1 基于子VLAN的IPv6组播VLAN配置举例

1. 组网需求

l 如图1-4 所示，Router A通过端口Ethernet1/0/1连接IPv6组播源（Source），通过端口Ethernet1/0/2连接Switch A；Router A上运行MLDv1，Switch A～Switch C上都运行版本1的MLD Snooping，并由Router A充当MLD查询器。

l IPv6组播源向IPv6组播组FF1E::101发送IPv6组播数据，Host A～Host D都是该IPv6组播组的接收者（Receiver），且分别属于VLAN 2～VLAN 5。

l 通过在Switch A上配置基于子VLAN的IPv6组播VLAN，使Router A通过IPv6组播VLAN向Switch A下分属不同用户VLAN的主机分发IPv6组播数据。

2. 组网图

图1-4 基于子VLAN的IPv6组播VLAN配置组网图

3. 配置步骤

(1) 使能IPv6转发功能，并配置IPv6地址

使能各设备的IPv6转发功能，并按照图1-4 配置各接口的IPv6地址和前缀长度，具体配置过程略。

(2) 配置Router A

# 使能IPv6组播路由，在各接口上使能IPv6 PIM-DM，并在主机侧端口Ethernet1/0/2上使能MLD。

<RouterA> system-view

[RouterA] multicast ipv6 routing-enable

[RouterA] interface ethernet 1/0/1

[RouterA-Ethernet1/0/1] pim ipv6 dm

[RouterA-Ethernet1/0/1] quit

[RouterA] interface ethernet 1/0/2

[RouterA-Ethernet1/0/2] pim ipv6 dm

[RouterA-Ethernet1/0/2] mld enable

(3) 配置Switch A

# 全局使能MLD Snooping。

<SwitchA> system-view

[SwitchA] mld-snooping

[SwitchA-mld-snooping] quit

# 创建VLAN 2～VLAN 5。

[SwitchA] vlan 2 to 5

# 配置端口Ethernet1/0/2为Trunk端口，并允许VLAN 2和VLAN 3通过。

[SwitchA] interface ethernet 1/0/2

[SwitchA-Ethernet1/0/2] port link-type trunk

[SwitchA-Ethernet1/0/2] port trunk permit vlan 2 3

[SwitchA-Ethernet1/0/2] quit

# 配置端口Ethernet1/0/3为Trunk端口，并允许VLAN 4和VLAN 5通过。

[SwitchA] interface ethernet 1/0/3

[SwitchA-Ethernet1/0/3] port link-type trunk

[SwitchA-Ethernet1/0/3] port trunk permit vlan 4 5

[SwitchA-Ethernet1/0/3] quit

# 创建VLAN 10，把端口Ethernet1/0/1添加到该VLAN中，并在该VLAN内使能MLD Snooping。

[SwitchA] vlan 10

[SwitchA-vlan10] port ethernet 1/0/1

[SwitchA-vlan10] mld-snooping enable

[SwitchA-vlan10] quit

# 配置VLAN 10为IPv6组播VLAN，并把VLAN 2～VLAN 5都配置为该IPv6组播VLAN的子VLAN。

[SwitchA] multicast-vlan ipv6 10

[SwitchA-ipv6-mvlan-10] subvlan 2 to 5

[SwitchA-ipv6-mvlan-10] quit

(4) 配置Switch B

# 全局使能MLD Snooping。

<SwitchB> system-view

[SwitchB] mld-snooping

[SwitchB-mld-snooping] quit

# 创建VLAN 2，把端口Ethernet1/0/2添加到该VLAN中，并在该VLAN内使能MLD Snooping。

[SwitchB] vlan 2

[SwitchB-vlan2] port ethernet 1/0/2

[SwitchB-vlan2] mld-snooping enable

[SwitchB-vlan2] quit

# 创建VLAN 3，把端口Ethernet1/0/3添加到该VLAN中，并在该VLAN内使能MLD Snooping。

[SwitchB] vlan 3

[SwitchB-vlan3] port ethernet 1/0/3

[SwitchB-vlan3] mld-snooping enable

[SwitchB-vlan3] quit

# 配置端口Ethernet1/0/1为Trunk端口，并允许VLAN 2和VLAN 3通过。

[SwitchB] interface ethernet 1/0/1

[SwitchB-Ethernet1/0/1] port link-type trunk

[SwitchB-Ethernet1/0/1] port trunk permit vlan 2 3

(5) 配置Switch C

Switch C的配置与Switch B相似，配置过程略。

(6) 检验配置效果

# 查看Switch A上所有IPv6组播VLAN的信息。

[SwitchA] display multicast-vlan ipv6

Total 1 IPv6 multicast-vlan(s)

IPv6 Multicast vlan 10

subvlan list:

vlan 2-5

port list:

no port

# 查看Switch A上MLD Snooping组播组的信息。

[SwitchA] display mld-snooping group

Total 5 IP Group(s).

Total 5 IP Source(s).

Total 5 MAC Group(s).

Port flags: D-Dynamic port, S-Static port, C-Copy port, P-PIM port

Subvlan flags: R-Real VLAN, C-Copy VLAN

Vlan(id):2.

Total 1 IP Group(s).

Total 1 IP Source(s).

Total 1 MAC Group(s).

Router port(s):total 0 port(s).

IP group(s):the following ip group(s) match to one mac group.

IP group address:FF1E::101

(::, FF1E::101):

Host port(s):total 1 port(s).

Eth1/0/2 (D)

MAC group(s):

MAC group address:3333-0000-0101

Host port(s):total 1 port(s).

Eth1/0/2

Vlan(id):3.

Total 1 IP Group(s).

Total 1 IP Source(s).

Total 1 MAC Group(s).

Router port(s):total 0 port(s).

IP group(s):the following ip group(s) match to one mac group.

IP group address:FF1E::101

(::, FF1E::101):

Host port(s):total 1 port(s).

Eth1/0/2 (D)

MAC group(s):

MAC group address:3333-0000-0101

Host port(s):total 1 port(s).

Eth1/0/2

Vlan(id):4.

Total 1 IP Group(s).

Total 1 IP Source(s).

Total 1 MAC Group(s).

Router port(s):total 0 port(s).

IP group(s):the following ip group(s) match to one mac group.

IP group address:FF1E::101

(::, FF1E::101):

Host port(s):total 1 port(s).

Eth1/0/3 (D)

MAC group(s):

MAC group address:3333-0000-0101

Host port(s):total 1 port(s).

Eth1/0/3

Vlan(id):5.

Total 1 IP Group(s).

Total 1 IP Source(s).

Total 1 MAC Group(s).

Router port(s):total 0 port(s).

IP group(s):the following ip group(s) match to one mac group.

IP group address:FF1E::101

(::, FF1E::101):

Host port(s):total 1 port(s).

Eth1/0/3 (D)

MAC group(s):

MAC group address:3333-0000-0101

Host port(s):total 1 port(s).

Eth1/0/3

Vlan(id):10.

Total 1 IP Group(s).

Total 1 IP Source(s).

Total 1 MAC Group(s).

Router port(s):total 1 port(s).

Eth1/0/1 (D)

IP group(s):the following ip group(s) match to one mac group.

IP group address:FF1E::101

(::, FF1E::101):

Host port(s):total 0 port(s).

MAC group(s):

MAC group address:3333-0000-0101

Host port(s):total 0 port(s).

由此可见，MLD Snooping在IPv6组播VLAN（VLAN 10）中维护路由器端口，而在各子VLAN（VLAN 2～VLAN 5）中维护各自的成员端口。

1.7.2 基于端口的IPv6组播VLAN配置举例

1. 组网需求

l 如图1-5 所示，Router A通过端口Ethernet1/0/1连接IPv6组播源（Source），通过端口Ethernet1/0/2连接Switch A；Router A上运行MLDv1，Switch A上运行版本1的MLD Snooping，并由Router A充当MLD查询器。

l IPv6组播源向IPv6组播组FF1E::101发送IPv6组播数据，Host A～Host C都是该IPv6组播组的接收者（Receiver），且分别属于VLAN 2～VLAN 4。

l 通过在Switch A上配置基于端口的IPv6组播VLAN，使Router A通过IPv6组播VLAN向Switch A下分属不同用户VLAN的主机分发IPv6组播数据。

2. 组网图

图1-5 基于端口的IPv6组播VLAN配置组网图

3. 配置步骤

(1) 使能IPv6转发功能，并配置IPv6地址

使能各设备的IPv6转发功能，并按照图1-5 配置各接口的IPv6地址和前缀长度，具体配置过程略。

(2) 配置Router A

# 使能IPv6组播路由，在各接口上使能IPv6 PIM-DM，并在主机侧端口Ethernet1/0/2上使能MLD。

<RouterA> system-view

[RouterA] multicast ipv6 routing-enable

[RouterA] interface ethernet 1/0/1

[RouterA-Ethernet1/0/1] ipv6 pim dm

[RouterA-Ethernet1/0/1] quit

[RouterA] interface ethernet 1/0/2

[RouterA-Ethernet1/0/2] ipv6 pim dm

[RouterA-Ethernet1/0/2] mld enable

(3) 配置Switch A

# 全局使能MLD Snooping。

<SwitchA> system-view

[SwitchA] mld-snooping

[SwitchA-mld-snooping] quit

# 创建VLAN 10，把端口Ethernet1/0/1添加到该VLAN中，并在该VLAN内使能MLD Snooping。

[SwitchA] vlan 10

[SwitchA-vlan10] port ethernet 1/0/1

[SwitchA-vlan10] mld-snooping enable

[SwitchA-vlan10] quit

# 创建VLAN 2，并在该VLAN内使能MLD Snooping。

[SwitchA] vlan 2

[SwitchA-vlan2] mld-snooping enable

[SwitchA-vlan2] quit

VLAN 3与VLAN 4的配置与VLAN 2相似，配置过程略。

# 配置端口Ethernet1/0/2为Hybrid类型，缺省VLAN为VLAN 2；允许VLAN 2和VLAN 10的报文通过，且均不携带Tag。

[SwitchA] interface ethernet 1/0/2

[SwitchA-Ethernet1/0/2] port link-type hybrid

[SwitchA-Ethernet1/0/2] port hybrid pvid vlan 2

[SwitchA-Ethernet1/0/2] port hybrid vlan 2 untagged

[SwitchA-Ethernet1/0/2] port hybrid vlan 10 untagged

[SwitchA-Ethernet1/0/2] quit

Ethernet1/0/3与Ethernet1/0/4的配置与Ethernet1/0/2相似，配置过程略。

# 配置VLAN 10为IPv6组播VLAN。

[SwitchA] multicast-vlan ipv6 10

# 将端口Ethernet1/0/2到Ethernet1/0/3添加到IPv6组播VLAN 10内。

[SwitchA-ipv6-mvlan-10] port ethernet 1/0/2 to ethernet 1/0/3

[SwitchA-ipv6-mvlan-10] quit

# 配置端口Ethernet1/0/4也属于IPv6组播VLAN 10。

[SwitchA] interface ethernet 1/0/4

[SwitchA-Ethernet1/0/4] port multicast-vlan ipv6 10

[SwitchA-Ethernet1/0/4] quit

(4) 检验配置效果

# 查看Switch A上所有IPv6组播VLAN的信息。

[SwitchA] display multicast-vlan ipv6

Total 1 IPv6 multicast-vlan(s)

IPv6 Multicast vlan 10

subvlan list:

no subvlan

port list:

Eth1/0/2 Eth1/0/3 Eth1/0/4

# 查看Switch A上MLD Snooping组播组的信息。

[SwitchA] display mld-snooping group

Total 1 IP Group(s).

Total 1 IP Source(s).

Total 1 MAC Group(s).

Port flags: D-Dynamic port, S-Static port, C-Copy port, P-PIM port

Subvlan flags: R-Real VLAN, C-Copy VLAN

Vlan(id):10.

Total 1 IP Group(s).

Total 1 IP Source(s).

Total 1 MAC Group(s).

Router port(s):total 1 port(s).

Eth1/0/1 (D)

IP group(s):the following ip group(s) match to one mac group.

IP group address:FF1E::101

(::, FF1E::101):

Host port(s):total 3 port(s).

Eth1/0/2 (D)

Eth1/0/3 (D)

Eth1/0/4 (D)

MAC group(s):

MAC group address:3333-0000-0101

Host port(s):total 3 port(s).

Eth1/0/2

Eth1/0/3

Eth1/0/4

由此可见，MLD Snooping统一在IPv6组播VLAN（VLAN 10）中维护路由器端口和成员端口。


1 IPv6组播路由与转发配置

l S3600V2-SI系列交换机不支持IPv6组播路由与转发功能。

l 本文所指的路由器代表运行了路由协议的三层设备。

l IPv6组播路由与转发功能中所指的“接口”为三层口，包括VLAN接口、三层以太网端口等。三层以太网端口是指被配置为三层模式的以太网端口，有关以太网端口模式切换的操作，请参见“二层技术-以太网交换配置指导”中的“以太网端口配置”。

相关链接

  • 1.1 IPv6组播路由与转发简介
  • 1.2 IPv6组播路由与转发配置任务简介
  • 1.3 使能IPv6组播路由
  • 1.4 配置IPv6组播路由与转发
  • 1.5 IPv6组播路由与转发显示和维护
  • 1.6 常见配置错误举例
父主题： 13-IPv6组播路由与转发配置


1.1 IPv6组播路由与转发简介

在IPv6组播实现中，组播路由和转发分为三种表：

l 每个IPv6组播路由协议都有一个协议自身的路由表，如IPv6 PIM路由表（IPv6 PIM Routing-Table）；

l 各IPv6组播路由协议的组播路由信息经过综合形成一个总的IPv6组播路由表（IPv6 Multicast Routing-Table）；

l IPv6组播转发表（IPv6 Multicast Forwarding-Table）直接用于控制IPv6组播数据包的转发，是真正指导IPv6组播数据转发的转发表。

IPv6组播路由表由一组（S，G）表项组成，其中（S，G）表示由源S向IPv6组播组G发送IPv6组播数据的路由信息。如果路由器支持多种IPv6组播路由协议，则其IPv6组播路由表中将包括由多种协议生成的组播路由。路由器根据组播路由和转发策略，从IPv6组播路由表中选出最优的组播路由，并下发到IPv6组播转发表中。

1.1.1 RPF检查机制

IPv6组播路由协议依赖于现有的IPv6单播路由信息或IPv6 MBGP路由来创建IPv6组播路由表项。IPv6组播路由协议在创建IPv6组播路由表项时，运用了RPF（Reverse Path Forwarding，逆向路径转发）检查机制，以确保IPv6组播数据能够沿正确的路径传输，同时还能避免由于各种原因而造成的环路。

1. RPF检查过程

执行RPF检查的依据是IPv6单播路由或IPv6 MBGP路由：

l IPv6单播路由表中汇集了到达各个目的网段的最短路径；

l IPv6 MBGP路由表直接提供IPv6组播路由信息。

在执行RPF检查时，路由器同时查找IPv6单播路由表和IPv6 MBGP路由表，具体过程如下：

(1) 首先，分别从IPv6单播路由表和IPv6 MBGP路由表中各选出一条最优路由：

l 以“报文源”的IPv6地址为目的地址查找IPv6单播路由表，自动选取一条最优IPv6单播路由。对应表项中的出接口为RPF接口，下一跳为RPF邻居。路由器认为来自RPF邻居且由该RPF接口收到的IPv6组播报文所经历的路径是从源S到本地的最短路径。

l 以“报文源”的IPv6地址为目的地址查找IPv6 MBGP路由表，自动选取一条最优IPv6 MBGP路由。对应表项中的出接口为RPF接口，下一跳为RPF邻居。

(2) 然后，从这两条最优路由中选择一条作为RPF路由：

l 如果配置了按照最长匹配选择路由，则从这两条路由中选出最长匹配的那条路由；如果这两条路由的前缀长度一样，则选择其中优先级最高的那条路由；如果它们的优先级也相同，则按照IPv6 MBGP路由、IPv6单播路由的顺序进行选择。

l 如果没有配置按照最长匹配选择路由，则从这两条路由中选出优先级最高的那条路由；如果它们的优先级相同，则按照IPv6 MBGP路由、IPv6单播路由的顺序进行选择。

根据IPv6组播报文传输的具体情况不同，“报文源”所代表的具体含义也不同：

l 如果当前报文沿从组播源到接收者或RP（Rendezvous Point，汇集点）的SPT（Shortest Path Tree，最短路径树）进行传输，则以组播源为“报文源”进行RPF检查；

l 如果当前报文沿从RP到接收者的RPT（Rendezvous Point Tree，共享树）进行传输，或者沿从组播源到RP的组播源侧RPT进行传输，则都以RP为“报文源”进行RPF检查；

l 如果当前报文为BSR（BootStrap Router，自举路由器）报文，沿从BSR到各路由器的路径进行传输，则以BSR为“报文源”进行RPF检查。

有关SPT、RPT、组播源侧RPT、RP和BSR的详细介绍，请参见“IP组播配置指导”中的“IPv6 PIM”。

2. RPF检查在IPv6组播转发中的应用

对每一个收到的IPv6组播数据报文都进行RPF检查会给路由器带来较大负担，而利用IPv6组播转发表可以解决这个问题。在建立IPv6组播路由和转发表时，会把IPv6组播数据报文（S，G）的RPF接口记录为（S，G）表项的入接口。当路由器收到IPv6组播数据报文（S，G）后，查找IPv6组播转发表：

(1) 如果IPv6组播转发表中不存在（S，G）表项，则对该报文执行RPF检查，将其RPF接口作为入接口，结合相关路由信息创建相应的表项，并下发到IPv6组播转发表中：

l 若该报文实际到达的接口正是其RPF接口，则RPF检查通过，向所有的出接口转发该报文；

l 若该报文实际到达的接口不是其RPF接口，则RPF检查失败，丢弃该报文。

(2) 如果IPv6组播转发表中已存在（S，G）表项，且该报文实际到达的接口与入接口相匹配，则向所有的出接口转发该报文。

(3) 如果IPv6组播转发表中已存在（S，G）表项，但该报文实际到达的接口与入接口不匹配，则对此报文执行RPF检查：

l 若其RPF接口与入接口一致，则说明（S，G）表项正确，丢弃这个来自错误路径的报文；

l 若其RPF接口与入接口不符，则说明（S，G）表项已过时，于是把入接口更新为RPF接口。如果该报文实际到达的接口正是其RPF接口，则向所有的出接口转发该报文，否则将其丢弃。

如 图1-1 所示，假设网络中IPv6单播路由畅通，未配置IPv6 MBGP。IPv6组播报文（S，G）沿从组播源（Source）到接收者（Receiver）的SPT进行传输。假定Router C上的IPv6组播转发表中已存在（S，G）表项，其记录的入接口为Vlan-interface20。

图1-1 RPF检查过程

l 如果该IPv6组播报文从接口Vlan-interface20到达Router C，与（S，G）表项的入接口相匹配，则向所有的出接口转发该报文。

l 如果该IPv6组播报文从接口Vlan-interface10到达Router C，与（S，G）表项的入接口不匹配，则对其执行RPF检查：通过查找IPv6单播路由表发现到达Source的出接口（即RPF接口）是Vlan-interface20，与（S，G）表项的入接口一致。这说明（S，G）表项是正确的，该报文来自错误的路径，RPF检查失败，于是丢弃该报文。


1.2 IPv6组播路由与转发配置任务简介

表1-1 IPv6组播路由与转发配置任务简介

配置任务 |  | 说明 | 详细配置
使能IPv6组播路由 |  | 必选 | 1.3
配置IPv6组播路由与转发 | 配置IPv6组播路由策略 | 可选 | 1.4.2
 | 配置IPv6组播转发范围 | 可选 | 1.4.3
 | 配置IPv6组播转发表容量 | 可选 | 1.4.4


1.3 使能IPv6组播路由

在配置各项三层IPv6组播功能之前，必须首先使能IPv6组播路由。

表1-2 使能IPv6组播路由

操作 | 命令 | 说明
进入系统视图 | system-view | -
使能IPv6组播路由 | multicast ipv6 routing-enable | 必选 缺省情况下，IPv6组播路由处于关闭状态


1.4 配置IPv6组播路由与转发

1.4.1 配置准备

在配置IPv6组播路由与转发之前，需完成以下任务：

l 使能IPv6转发功能并配置任一IPv6单播路由协议，实现域内网络层互通

l 配置IPv6 PIM-DM（或IPv6 PIM-SM）

在配置IPv6组播路由与转发之前，需准备以下数据：

l 单条IPv6组播转发表项的最大下行节点数目

l IPv6组播转发表的最大表项数

1.4.2 配置IPv6组播路由策略

可以配置组播路由器按照最长匹配原则来选择RPF路由，有关RPF路由选择的详细介绍，请参见“ 1.1.1 1. RPF检查过程 ”一节。此外，通过配置根据组播源或组播源组进行IPv6组播流量的负载分担，还可以优化存在多条IPv6组播数据流时的网络流量。

表1-3 配置IPv6组播路由策略

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置按照最长匹配选择RPF路由 | multicast ipv6 longest-match | 可选 缺省情况下，选择优先级最高的路由作为RPF路由
配置对IPv6组播流量进行负载分担 | multicast ipv6 load-splitting {source | source-group } | 可选 缺省情况下，不对IPv6组播流量进行负载分担

1.4.3 配置IPv6组播转发范围

IPv6组播信息在网络中的转发并不是漫无边际的，每个IPv6组播组对应的IPv6组播信息都必须在确定的范围内传递。目前可以在所有支持IPv6组播转发的接口上配置针对某个IPv6组播组或Scope值的转发边界。IPv6组播转发边界为指定范围或Scope值的IPv6组播组划定了边界条件，如果IPv6组播报文的目的地址与边界条件匹配，就停止转发。当在一个接口上配置了IPv6组播转发边界后，将不能从该接口转发IPv6组播报文（包括本机发出的IPv6组播报文），也不能从该接口接收IPv6组播报文。

表1-4 配置IPv6组播转发范围

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
配置IPv6组播转发边界 | multicast ipv6 boundary { ipv6-group-address prefix-length | scope { scope-id | admin-local | global | organization-local | site-local } } | 必选 缺省情况下，没有配置IPv6组播转发边界

1.4.4 配置IPv6组播转发表容量

路由器为每个收到的IPv6组播数据报文都维护相应的转发表项。但是，IPv6组播转发表项过多可能会耗尽路由器内存，从而导致路由器性能下降。用户可以根据实际组网情况和业务性能要求对IPv6组播转发表中的表项数量进行限制。如果IPv6组播转发表最大表项数的配置值小于当前值，则超出数目的表项并不会立刻被删除，而必须由IPv6组播路由协议来删除，同时也无法添加新的IPv6组播转发表项。

路由器为每个下行节点复制一份IPv6组播数据报文并发送出去，每个下行节点就形成IPv6组播分发树的一条分支。用户可以根据实际组网情况和业务性能要求对IPv6组播转发表中单条表项的下行节点数目（即出接口数目）进行限制，以缓解路由器的复制压力。如果单条IPv6组播转发表项的最大下行节点数目的配置值小于当前值，则超出数目的下行节点并不会被立刻删除，而必须由IPv6组播路由协议来删除，同时新增的下行节点将无法添加到该表项中。

表1-5 配置IPv6组播转发表容量

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置IPv6组播转发表的最大表项数 | multicast ipv6 forwarding-table route-limit limit | 可选 缺省情况下，IPv6组播转发表的最大表项数为1000
配置单条IPv6组播转发表项的最大下行节点数目 | multicast ipv6 forwarding-table downstream-limit limit | 可选 缺省情况下，单条IPv6组播转发表项的最大下行节点数目为128


1.5 IPv6组播路由与转发显示和维护

在完成上述配置后，在任意视图下执行 display 命令可以显示配置后IPv6组播路由与转发的运行情况，通过查看显示信息验证配置的效果。

在用户视图下执行 reset 命令可以清除IPv6组播路由与转发的统计信息。

表1-6 IPv6组播路由与转发显示和维护

操作 | 命令
查看IPv6组播边界信息 | display multicast ipv6 boundary { group [ ipv6-group-address [ prefix-length ] ] | scope [ scope-id ] } [ interface interface-type interface-number ] [ | { begin | exclude | include } regular-expression ]
查看IPv6组播转发表信息 | display multicast ipv6 forwarding-table [ ipv6-source-address [ prefix-length ] | ipv6-group-address [ prefix-length ] | incoming-interface { interface-type interface-number | register } | outgoing-interface { exclude | include | match } { interface-type interface-number | register } | statistics | slot slot-number ] * [ port-info ] [ | { begin | exclude | include } regular-expression ]
查看IPv6组播转发表的DF信息 | display multicast ipv6 forwarding-table df-info [ rp-address ] [ slot slot-number ] [ | { begin | exclude | include } regular-expression ]
查看IPv6组播路由表信息 | display multicast ipv6 routing-table [ ipv6-source-address [ prefix-length ] | ipv6-group-address [ prefix-length ] | incoming-interface { interface-type interface-number | register } | outgoing-interface { { exclude | include | match } { interface-type interface-number | register } } ] * [ | { begin | exclude | include } regular-expression ]
查看IPv6组播源的RPF信息 | display multicast ipv6 rpf-info ipv6-source-address [ ipv6-group-address ] [ | { begin | exclude | include } regular-expression ]
清除IPv6组播转发表中的转发项 | reset multicast ipv6 forwarding-table { { ipv6-source-address [ prefix-length ] | ipv6-group-address [ prefix-length ] | incoming-interface { interface-type interface-number | register } } * | all }
清除IPv6组播路由表中的路由项 | reset multicast ipv6 routing-table { { ipv6-source-address [ prefix-length ] | ipv6-group-address [ prefix-length ] | incoming-interface { interface-type interface-number | register } } * | all }

有关DF（Designated Forwarder，指定转发者）的详细介绍，请参见“IP组播配置指导”中的“IPv6 PIM”。

l 执行 reset 命令将清除IPv6组播路由表或IPv6组播转发表中的信息，可能导致IPv6组播信息无法正常传输；

l 清除IPv6组播路由表中的路由项后，IPv6组播转发表中的相应表项也将随之删除；

l 清除IPv6组播转发表中的转发项后，IPv6组播路由表中的相应表项也将随之删除。


1.6 常见配置错误举例

1.6.1 IPv6组播数据异常终止

1. 故障现象

l 当某主机发送了加入IPv6组播组G的报文后，离该主机最近的路由器上却没有IPv6组播组G的组成员信息。中间路由器能成功接收IPv6组播数据，但数据不能到达末梢网络。

l 中间路由器的接口收到IPv6组播数据，但在IPv6 PIM路由表里没有相应的（S，G）表项。

2. 分析

l 命令 multicast ipv6 boundary 用来过滤接口上收到的IPv6组播报文。如果报文没有通过这个命令的IPv6 ACL匹配规则，则IPv6 PIM不能创建路由表项。

l 此外，IPv6 PIM中的命令 source-policy 用来过滤接收的IPv6组播报文。如果报文没有通过这个命令的IPv6 ACL匹配规则，则IPv6 PIM也不能创建路由表项。

3. 处理过程

(1) 使用命令 display current-configuration 查看组播转发边界上配置的IPv6 ACL过滤规则。更改 multicast ipv6 boundary 命令的IPv6 ACL规则，使IPv6组播数据的源地址和IPv6组播组地址通过IPv6 ACL过滤。

(2) 检查组播过滤器配置。使用命令 display current-configuration 查看组播过滤器的配置，更改 source-policy 命令的IPv6 ACL规则，使IPv6组播数据的源地址和IPv6组播组地址通过IPv6 ACL过滤。


1 MLD配置

l S3600V2-SI系列交换机不支持MLD功能。

l 本文所指的路由器代表运行了路由协议的三层设备。

l MLD功能中所指的“接口”为三层口，包括VLAN接口、三层以太网端口等。三层以太网端口是指被配置为三层模式的以太网端口，有关以太网端口模式切换的操作，请参见“二层技术-以太网交换配置指导”中的“以太网端口配置”。

相关链接

  • 1.1 MLD简介
  • 1.2 MLD配置任务简介
  • 1.3 配置MLD基本功能
  • 1.4 调整MLD性能
  • 1.5 配置MLD SSM Mapping
  • 1.6 配置MLD Proxying
  • 1.7 MLD显示和维护
  • 1.8 MLD典型配置举例
  • 1.9 常见配置错误举例
父主题： 14-MLD配置


1.1 MLD简介

MLD是Multicast Listener Discovery Protocol（组播侦听者发现协议）的简称，它用于IPv6路由器在其直连网段上发现组播侦听者。组播侦听者（Multicast Listener）是那些希望接收组播数据的主机节点。

路由器通过MLD协议，可以了解自己的直连网段上是否有IPv6组播组的侦听者，并在数据库里做相应记录。同时，路由器还维护与这些IPv6组播地址相关的定时器信息。

MLD路由器使用IPv6单播链路本地地址作为源地址发送MLD报文。MLD使用ICMPv6（Internet Control Message Protocol for IPv6，IPv6互联网控制消息协议）报文类型。所有的MLD报文被限制在本地链路上，跳数为1。

1.1.1 MLD的版本

到目前为止，MLD有两个版本：

l MLDv1（由RFC 2710定义），源自IGMPv2

l MLDv2（由RFC 3810定义），源自IGMPv3

所有版本的MLD协议都支持ASM（Any-Source Multicast，任意信源组播）模型；MLDv2可以直接应用于SSM（Source-Specific Multicast，指定信源组播）模型，而MLDv1则需要在MLD SSM Mapping技术的支持下才能应用于SSM模型。

有关ASM和SSM模型的介绍，请参见“IP组播配置指导”中的“组播概述”。

1.1.2 MLDv1原理简介

MLDv1主要基于查询和响应机制完成对IPv6组播组成员的管理。

1. 查询器选举机制

当一个网段内有多台IPv6组播路由器时，由于它们都能从主机那里收到MLD成员关系报告报文（Multicast Listener Report Message），因此只需要其中一台路由器发送MLD查询报文（Query Message）就足够了。这就需要有一个查询器（Querier）的选举机制来确定由哪台路由器作为MLD查询器，其选举过程如下：

(1) 所有MLD路由器在初始时都认为自己是查询器，并向本地网段内的所有主机和路由器发送MLD普遍组查询（General Query）报文（目的地址为FF02::1）；

(2) 本地网段中的其它MLD路由器在收到该报文后，将报文的源IPv6地址与自己的接口地址作比较。通过比较，IPv6地址最小的路由器将成为查询器，其它路由器成为非查询器（Non-Querier）；

(3) 所有非查询器上都会启动一个定时器（即其它查询器存在时间定时器Other Querier Present Timer）。在定时器超时前，如果收到了来自查询器的MLD查询报文，则重置该定时器；否则，就认为原查询器失效，并发起新的查询器选举过程。

2. 加入IPv6组播组机制

图1-1 MLD查询响应示意图

如图1-1 所示，假设Host B与Host C想要收到发往IPv6组播组G1的IPv6组播数据，而Host A想要收到发往IPv6组播组G2的IPv6组播数据，那么主机加入IPv6组播组以及MLD查询器（Router B）维护IPv6组播组成员关系的基本过程如下：

(1) 主机会主动向其要加入的IPv6组播组发送MLD成员关系报告报文以声明加入，而不必等待MLD查询器发来的MLD查询报文；

(2) MLD查询器（Router B）周期性地以组播方式向本地网段内的所有主机和路由器发送普遍组查询报文（目的地址为FF02::1）；

(3) 在收到该查询报文后，关注G1的Host B与Host C其中之一（这取决于谁的延迟定时器先超时）——譬如Host B会首先以组播方式向G1发送MLD成员关系报告报文，以宣告其属于G1。由于本地网段中的所有主机都能收到Host B发往G1的报告报文，因此当Host C收到该报告报文后，将不再发送同样针对G1的报告报文，因为MLD路由器（Router A和Router B）已知道本地网段中有对G1感兴趣的主机了。这个机制称为主机上的MLD成员关系报告抑制机制，该机制有助于减少本地网段的信息流量；

(4) 与此同时，由于Host A关注的是G2，所以它仍将以组播方式向G2发送报告报文，以宣告其属于G2；

(5) 经过以上的查询和响应过程，MLD路由器了解到本地网段中有G1和G2的成员，于是由IPv6组播路由协议（如IPv6 PIM）生成（*，G1）和（*，G2）组播转发项作为IPv6组播数据的转发依据，其中的“*”代表任意IPv6组播源；

(6) 当由IPv6组播源发往G1或G2的IPv6组播数据经过组播路由到达MLD路由器时，由于MLD路由器上存在（*，G1）和（*，G2）组播转发项，于是将该IPv6组播数据转发到本地网段，接收者主机便能收到该IPv6组播数据了。

3. 离开IPv6组播组机制

当一个主机离开某IPv6组播组时：

(1) 该主机向本地网段内的所有IPv6组播路由器（目的地址为FF02::2）发送离开组（Done）报文；

(2) 当查询器收到该报文后，向该主机所声明要离开的那个IPv6组播组发送特定组查询（Multicast-Address-Specific Query）报文（目的地址字段和组地址字段均填充为所要查询的IPv6组播组地址）；

(3) 如果该网段内还有该IPv6组播组的其它成员，则这些成员在收到特定组查询报文后，会在该报文中所设定的最大响应时间（Maximum Response Delay）内发送成员关系报告报文；

(4) 如果在最大响应时间内收到了该IPv6组播组其它成员发送的成员关系报告报文，查询器就会继续维护该IPv6组播组的成员关系；否则，查询器将认为该网段内已无该IPv6组播组的成员，于是不再维护这个IPv6组播组的成员关系。

1.1.3 MLDv2原理简介

MLDv2的原理与MLDv1基本相同，并新增了以下特性：

1. 对IPv6组播源的过滤

MLDv2增加了针对IPv6组播源的过滤模式（INCLUDE/EXCLUDE），使主机在加入某IPv6组播组G的同时，能够明确要求接收或拒绝来自某特定IPv6组播源S的IPv6组播信息。当主机加入IPv6组播组时：

l 若要求只接收来自指定IPv6组播源如S1、S2、……发来的IPv6组播信息，则其报告报文中可以标记为INCLUDE Sources（S1，S2，……）；

l 若拒绝接收来自指定IPv6组播源如S1、S2、……发来的IPv6组播信息，则其报告报文中可以标记为EXCLUDE Sources（S1，S2，……）。

如图1-2 所示，网络中存在Source 1（S1）和Source 2（S2）两个IPv6组播源，均向IPv6组播组G发送IPv6组播报文。Host B仅对从Source 1发往G的信息感兴趣，而对来自Source 2的信息没有兴趣。

图1-2 指定源组的IPv6组播流路经

如果主机与路由器之间运行的是MLDv1，Host B加入IPv6组播组G时无法对IPv6组播源进行选择，因此无论Host B是否需要，来自Source 1和Source 2的IPv6组播信息都将传递给Host B。

当主机与路由器之间运行了MLDv2之后，Host B就可以要求只接收来自Source 1、发往G的IPv6组播信息（S1，G），或要求拒绝来自Source 2、发往G的IPv6组播信息（S2，G），这样就只有来自Source 1的IPv6组播信息才能传递给Host B了。

2. MLD状态

运行MLDv2的组播路由器按每条直连链路上的组播地址（per multicast address per attached link）来保持IPv6组播组的状态。IPv6组播组的状态包括：

l 过滤模式：保持对INCLUDE或EXCLUDE的状态跟踪。

l 源列表：保持对新增或删除IPv6组播源的跟踪。

l 定时器：表示IPv6组播地址超时后切换到INCLUDE模式的过滤定时器、关于源记录的源定时器等。

3. 接收者主机的状态侦听

运行MLDv2的组播路由器通过侦听接收者主机的状态，记录和维护网段上加入到源组的主机的信息。

1.1.4 MLD报文类型

下面以MLDv2为例对MLD的报文类型进行介绍：

1. MLD查询报文

MLD查询器通过发送MLD查询报文来了解相邻接口的组播侦听状态。MLD查询报文的格式如图1-3 所示，图中深蓝色部分为MLDv1的报文格式，各字段的含义如表1-1 所示。

图1-3 MLDv2查询报文格式

表1-1 MLDv2查询报文各字段含义

字段 | 描述
Type = 130 | 报文类型，130代表查询报文
Code | 初始化为0
Checksum | 标准的IPv6校验和
Maximum Response Delay | 主机发送报告报文前允许的最大响应时间
Reserved | 保留字段，初始化为0
Multicast Address | l 普遍组查询中，此字段设置为0 l 特定组或特定源组查询中，此字段设置为待查询的IPv6组播组地址
S | 标识位，表示路由器接收到查询报文后是否对定时器更新进行抑制
QRV | 查询器的健壮性变量（Querier’s Robustness Variable）
QQIC | 查询器发送普遍组查询报文的查询间隔（Querier’s Query Interval Code）
Number of Sources | l 普遍组查询或特定组查询中，此字段设置为0 l 特定源组查询中，此字段表示查询报文中包含的源地址个数
Source Address( i ) | 特定源组查询中的IPv6组播源地址（i＝1, 2, …, n，其中n表示源地址的个数）

2. MLD报告报文

主机通过发送MLD报告报文来汇报当前的组播侦听状态。MLD报告报文的格式如图1-4 所示，各字段的含义如表1-2 所示。

图1-4 MLDv2报告报文格式

表1-2 MLDv2报告报文各字段含义

字段 | 描述
Type = 143 | 报文类型，143代表报告报文
Reserved | 保留字段，发送时设置为0，接收时忽略此值
Checksum | 标准的IPv6校验和
Number of Multicast Address Records | IPv6组播地址记录的个数
Multicast Address Record( i ) | 组播地址记录，表示主机在接口上侦听到的每个IPv6组播地址信息，包括记录类型、IPv6组播地址、IPv6源地址等（i＝1, 2, …, m，其中m表示IPv6组播地址记录的个数）

1.1.5 MLD SSM Mapping

MLD SSM Mapping通过在路由器上配置SSM静态映射规则，从而为运行MLDv1的接收者主机提供对SSM模型的支持。

SSM模型要求在接收者主机所在的网段，路由器能够了解主机加入IPv6组播组时所指定的IPv6组播源。如果接收者主机上运行的是MLDv2，则可以在MLDv2的报告报文中直接指定IPv6组播源的地址；如果某些接收者主机只能运行MLDv1，则在MLDv1的报告报文中无法指定IPv6组播源的地址。这种情况下需要通过在路由器上配置MLD SSM Mapping功能，将MLDv1报告报文中所包含的（*，G）信息映射为（G，INCLUDE，（S1，S2...））信息。

图1-5 MLD SSM Mapping组网图

在如图1-5 所示的IPv6 SSM网络中，Host A、Host B和Host C上分别运行MLDv1和MLDv2。在不允许将Host A和Host B升级为MLDv2的情况下，若要为Host A和Host B也提供SSM组播服务，则需在Router A上配置MLD SSM Mapping功能。

配置完成后，当Router A收到来自主机的MLDv1报告报文时，首先检查该报文中所携带的IPv6组播组地址G，然后根据检查结果的不同分别进行处理：

(1) 如果G不在IPv6 SSM组地址范围内，则提供ASM组播服务。

(2) 如果G在IPv6 SSM组地址范围内：

l 若Router A上没有G对应的MLD SSM Mapping规则，则无法提供SSM组播服务，丢弃该报文；

l 若Router A上有G对应的MLD SSM Mapping规则，则依据规则将报告报文中所包含的（*，G）信息映射为（G，INCLUDE，（S1，S2...））信息，可以提供SSM组播服务。

l MLD SSM Mapping不对MLDv2的报告报文进行处理。

l 有关IPv6 SSM组地址范围的介绍，请参见“IP组播配置指导”中的“IPv6 PIM”。

1.1.6 MLD Proxying

在一些简单的树型网络拓扑中，边缘设备上并不需要运行复杂的IPv6组播路由协议（如IPv6 PIM），可以通过在这些设备上配置MLD Proxying（MLD代理）功能，使其代理下游主机来发送MLD报文及维护组成员关系，并基于该关系进行IPv6组播转发。在上游设备看来，配置了MLD Proxying功能的设备（称为MLD代理设备）不再是一个IPv6 PIM邻居，而只是一台主机。

图1-6 MLD Proxying组网图

如图1-6 所示，MLD Proxying模型中定义了以下两种接口类型：

l 上行接口：又称代理接口，指MLD代理设备上运行MLD Proxying功能的接口，即朝向组播分发树树根方向的接口。由于该接口执行MLD协议的主机行为，因此也称为主机接口（Host Interface）。

l 下行接口：指MLD代理设备上除上行接口外其它运行MLD协议的接口，即背向组播分发树树根方向的接口。由于该接口执行MLD协议的路由器行为，因此也称为路由器接口（Router Interface）。

MLD代理设备上维护着一个组成员关系数据库（Membership Database），将所有下行接口维护的组成员关系记录都存到这个数据库中。组成员关系记录的结构如下：（Multicast-address，Filter-mode，Source-list），每条记录都是各下行接口上具有相同组地址的成员关系记录的合集。

上行接口正是依据这个数据库来执行主机行为——当收到查询报文时根据当前数据库状态响应报告报文，或者当数据库变化时主动发送报告或离开报文；而下行接口则执行路由器行为——参与查询器的选举、发送查询报文并根据报告报文维护组成员关系等。

1.1.7 协议规范

与MLD相关的协议规范有：

l RFC 2710：Multicast Listener Discovery (MLD) for IPv6

l RFC 3810：Multicast Listener Discovery Version 2 (MLDv2) for IPv6

l RFC 4605：Internet Group Management Protocol (IGMP) / Multicast Listener Discovery (MLD)-Based Multicast Forwarding ("IGMP/MLD Proxying")


1.2 MLD配置任务简介

表1-3 MLD配置任务简介

配置任务 |  | 说明 | 详细配置
配置MLD基本功能 | 使能MLD | 必选 | 1.3.2
 | 配置MLD版本 | 可选 | 1.3.3
 | 配置静态加入 | 可选 | 1.3.4
 | 配置IPv6组播组过滤器 | 可选 | 1.3.5
 | 配置接口加入的IPv6组播组最大数量 | 可选 | 1.3.6
调整MLD性能 | 配置MLD报文选项 | 可选 | 1.4.2
 | 配置MLD查询和响应 | 可选 | 1.4.3
 | 配置MLD快速离开 | 可选 | 1.4.4
 | 配置MLD主机跟踪功能 | 可选 | 1.4.5
配置MLD SSM Mapping | 使能MLD SSM Mapping | 可选 | 1.5.2
 | 配置MLD SSM Mapping规则 | 可选 | 1.5.3
配置MLD Proxying | 使能MLD Proxying | 可选 | 1.6.2
 | 配置下行接口的IPv6组播转发能力 | 可选 | 1.6.3

l MLD视图下的配置具有全局性，接口视图下的配置仅对所在接口有效。

l 若没有在接口视图下进行配置，则该接口继承MLD视图下的全局配置；若两个视图都进行了配置，则优先采用该接口视图下所作的配置。


1.3 配置MLD基本功能

1.3.1 配置准备

在配置MLD基本功能之前，需完成以下任务：

l 使能IPv6转发功能并配置任一IPv6单播路由协议，实现域内网络层互通

l 配置IPv6 PIM-DM（或IPv6 PIM-SM）

在配置MLD基本功能之前，需准备以下数据：

l MLD的版本

l 以静态方式加入的IPv6组播组和IPv6组播源的地址

l IPv6组播组过滤的ACL规则

l 接口加入的IPv6组播组最大数量

1.3.2 使能MLD

在需要建立和维护IPv6组播组成员关系的接口上使能MLD。

表1-4 使能MLD

操作 | 命令 | 说明
进入系统视图 | system-view | -
使能IPv6组播路由 | multicast ipv6 routing-enable | 必选 缺省情况下，IPv6组播路由处于关闭状态
进入接口视图 | interface interface-type interface-number | -
使能MLD | mld enable | 必选 缺省情况下，没有使能MLD

有关 multicast ipv6 routing-enable 命令的详细介绍，请参见“IP组播命令参考”中的“IPv6组播路由与转发”。

1.3.3 配置MLD版本

由于不同版本MLD协议的报文结构与种类不同，因此需要为同一网段上的所有路由器配置相同版本的MLD，否则MLD将不能正常运行。

1. 全局配置MLD版本

表1-5 全局配置MLD版本

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入MLD视图 | mld | -
配置MLD的版本 | version version-number | 必选 缺省情况下，MLD的版本为MLDv1

2. 在接口上配置MLD版本

表1-6 在接口上配置MLD版本

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
配置MLD的版本 | mld version version-number | 必选 缺省情况下，MLD的版本为MLDv1

1.3.4 配置静态加入

在配置了静态加入IPv6组播组或组播源组后，接口将作为该IPv6组播组的虚拟组成员存在，从而可以接收发往该组的IPv6组播数据，以测试IPv6组播数据的转发。

表1-7 配置静态加入

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
配置静态加入IPv6组播组或组播源组 | mld static-group ipv6-group-address [ source ipv6-source-address ] | 必选 缺省情况下，接口没有以静态方式加入任何IPv6组播组或组播源组

l 在运行IPv6 PIM-SM的设备上配置静态加入时，如果待配接口上使能了IPv6 PIM-SM，则该接口必须为IPv6 PIM-SM的DR，否则该接口将不能加入IPv6组播组或组播源组；如果待配接口上未使能IPv6 PIM-SM但使能了MLD，则该接口必须为MLD查询器，否则该接口也不能加入IPv6组播组或组播源组。有关IPv6 PIM-SM和DR的介绍，请参见“IP组播配置指导”中的“IPv6 PIM”。

l 在配置了静态加入后，接口并不会对MLD查询器发出的查询报文进行响应；当配置静态加入或取消静态加入的配置时，接口也不会主动发送MLD成员关系报告报文或MLD离开组报文。也就是说，该接口并没有真正成为该IPv6组播组的成员。

1.3.5 配置IPv6组播组过滤器

如果不希望接口所在网段上的主机加入某些IPv6组播组，可在该接口上配置IPv6 ACL规则作为过滤器，接口将按照该规则对收到的MLD成员关系报告报文进行过滤，只为该规则所允许的IPv6组播组维护组成员关系。

表1-8 配置IPv6组播组过滤器

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
配置IPv6组播组过滤器 | mld group-policy acl6-number [ version-number ] | 必选 缺省情况下，接口上没有配置IPv6组播组过滤器，即该接口下的主机可以加入任意合法的IPv6组播组

1.3.6 配置接口加入的IPv6组播组最大数量

通过配置接口加入的IPv6组播组最大数量，可以方便用户灵活控制接口所能加入的IPv6组播组数量。

表1-9 配置接口加入的IPv6组播组最大数量

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
配置接口加入的IPv6组播组最大数量 | mld group-limit limit | 必选 缺省情况下，接口加入的IPv6组播组最大数量为1000

本配置只限制接口动态加入的IPv6组播组数量，而不限制其静态加入的IPv6组播组数量。


1.4 调整MLD性能

对于本节中的配置任务来说：

l 在MLD视图下所作的配置对所有接口生效，在接口视图下所作的配置仅对当前接口生效；

l 如果在这两个视图下进行了相同功能或参数的配置，则不论配置先后，接口视图下的配置将被优先采用。

1.4.1 配置准备

在调整MLD性能之前，需完成以下任务：

l 使能IPv6转发功能并配置任一IPv6单播路由协议，实现域内网络层互通

l 配置MLD基本功能

在调整MLD性能之前，需准备以下数据：

l MLD查询器的启动查询间隔

l MLD查询器的启动查询次数

l 发送MLD普遍组查询报文的时间间隔

l MLD查询器的健壮系数

l MLD普遍组查询的最大响应时间

l 最后组成员查询间隔

l MLD其它查询器的存在时间

1.4.2 配置MLD报文选项

由于MLD特定组查询报文和MLD特定源组查询报文的存在，而IPv6组播组是千变万化的，设备不可能加入所有的组，因此MLD需要借助Router-Alert（路由器报警）选项来将送达本地、但没有加入的IPv6组播报文送往上层协议进行处理。有关Router-Alert选项的详细介绍，请参考RFC 2113。

对于IPv6头中是否携带Router-Alert选项的MLD报文，设备会做出不同的处理：

l 出于兼容性考虑，缺省情况下设备不对Router-Alert选项进行检查，即处理所有收到的MLD报文。此时，MLD报文中无论是否携带有Router-Alert选项，设备都会将其送给上层协议进行处理。

l 为了提高设备性能、减少不必要的开支，同时出于协议安全性的考虑，可以配置设备丢弃未携带Router-Alert选项的MLD报文，此时，当设备收到MLD报文时，会检查该报文的Router-Alert选项，如果没有携带该选项，就丢弃该报文。

1. 全局配置MLD报文选项

表1-10 全局配置MLD报文选项

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入MLD视图 | mld | -
配置丢弃未携带Router-Alert选项的MLD报文 | require-router-alert | 必选 缺省情况下，设备不对Router-Alert选项进行检查
配置在发送的MLD报文中携带Router-Alert选项 | send-router-alert | 必选 缺省情况下，在发送的MLD报文中携带Router-Alert选项

2. 在接口上配置MLD报文选项

表1-11 在接口上配置MLD报文选项

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
配置丢弃未携带Router-Alert选项的MLD报文 | mld require-router-alert | 必选 缺省情况下，设备不对Router-Alert选项进行检查
配置在发送的MLD报文中携带Router-Alert选项 | mld send-router-alert | 必选 缺省情况下，在发送的MLD报文中携带Router-Alert选项

1.4.3 配置MLD查询和响应

MLD查询器的健壮系数是为了弥补可能发生的网络丢包而设置的报文重传次数，健壮系数越大，MLD查询器就越“健壮”，但是IPv6组播组超时所需的时间也就越长。

当MLDv1/v2查询器启动时，会以“MLD查询器启动查询间隔”为时间间隔发送“MLD查询器启动查询次数”次MLD普遍组查询报文。

MLDv1/v2查询器会周期性地发送MLD普遍组查询报文，以判断网络上是否有IPv6组播组成员，发送间隔即为“发送MLD普遍组查询报文的时间间隔”。可以根据网络的实际情况来修改周期性发送MLD普遍组查询报文的时间间隔。

当MLDv1查询器收到MLD离开组报文或MLDv2查询器收到改变IPv6组播组与IPv6组播源列表关系的MLD报告报文后，会以“最后组成员查询间隔”为时间间隔发送“最后组成员查询次数”次MLD特定组查询报文或MLD特定源组查询报文。最后组成员查询次数在数值上等于MLD查询器的健壮系数。

在收到MLD查询报文（包括普遍组查询、特定组查询和特定源组查询）后，主机会为其所加入的每个IPv6组播组都启动一个延迟定时器，其值在0到最大响应时间（该时间值从MLD查询报文的最大响应时间字段获得）中随机选定，当定时器的值减为0时，主机就会向该定时器对应的IPv6组播组发送MLD成员关系报告报文。

合理配置MLD查询的最大响应时间，既可以使主机对MLD查询报文做出快速响应，又可以减少由于定时器同时超时，造成大量主机同时发送报告报文而引起的网络拥塞：

l 对于MLD普遍组查询报文来说，通过配置MLD普遍组查询的最大响应时间来填充其最大响应时间字段；

l 对于MLD特定组查询报文和MLD特定源组查询报文来说，所配置的最后组成员查询间隔将被填充到其最大响应时间字段。也就是说，MLD特定组查询的最大响应时间在数值上等于最后组成员查询间隔。

当同一网段上有多台组播路由器时，由MLD查询器负责发送MLD查询报文。如果非查询器在“其它查询器存在时间”超时前没有收到来自查询器的MLD查询报文，就会认为原有查询器失效，从而触发新的查询器选举过程；否则，非查询器将重置“其它查询器存在时间定时器”。

1. 全局配置MLD查询和响应

表1-12 全局配置MLD查询和响应

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入MLD视图 | mld | -
配置MLD查询器的健壮系数 | robust-count robust-value | 必选 缺省情况下，MLD查询器的健壮系数为2
配置MLD查询器的启动查询间隔 | startup-query-interval interval | 必选 缺省情况下，MLD查询器的启动查询间隔为发送MLD普遍组查询报文时间间隔的1/4
配置MLD查询器的启动查询次数 | startup-query-count value | 必选 缺省情况下，MLD查询器的启动查询次数等于MLD查询器的健壮系数
配置发送MLD普遍组查询报文的时间间隔 | timer query interval | 必选 缺省情况下，发送MLD普遍组查询报文的时间间隔为125秒
配置MLD普遍组查询的最大响应时间 | max-response-time interval | 必选 缺省情况下，MLD普遍组查询的最大响应时间为10秒
配置最后组成员查询间隔 | last-listener-query-interval interval | 必选 缺省情况下，最后组成员查询间隔为1秒
配置MLD其它查询器的存在时间 | timer other-querier-present interval | 必选 缺省情况下，MLD其它查询器的存在时间＝发送MLD普遍组查询报文的时间间隔×MLD查询器的健壮系数＋MLD普遍组查询的最大响应时间÷2

2. 在接口上配置MLD查询和响应

表1-13 在接口上配置MLD查询和响应

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
配置MLD查询器的健壮系数 | mld robust-count robust-value | 必选 缺省情况下，MLD查询器的健壮系数为2
配置MLD查询器的启动查询间隔 | mld startup-query-interval interval | 必选 缺省情况下，MLD查询器的启动查询间隔为发送MLD普遍组查询报文时间间隔的1/4
配置MLD查询器的启动查询次数 | mld startup-query-count value | 必选 缺省情况下，MLD查询器的启动查询次数等于MLD查询器的健壮系数
配置发送MLD普遍组查询报文的时间间隔 | mld timer query interval | 必选 缺省情况下，发送MLD普遍组查询报文的时间间隔为125秒
配置MLD普遍组查询的最大响应时间 | mld max-response-time interval | 必选 缺省情况下，MLD普遍组查询的最大响应时间为10秒
配置最后组成员查询间隔 | mld last-listener-query-interval interval | 必选 缺省情况下，最后组成员查询间隔为1秒
配置MLD其它查询器的存在时间 | mld timer other-querier-present interval | 必选 缺省情况下，MLD其它查询器的存在时间＝发送MLD普遍组查询报文的时间间隔×MLD查询器的健壮系数＋MLD普遍组查询的最大响应时间÷2

l 应确保MLD其它查询器的存在时间大于发送MLD普遍组查询报文的时间间隔，否则有可能导致网络内的MLD查询器反复变化。

l 应确保发送MLD普遍组查询报文的时间间隔大于MLD普遍组查询的最大响应时间，否则有可能造成对IPv6组播组成员的误删。

1.4.4 配置MLD快速离开

在某些应用（如ADSL拨号上网）中，MLD查询器的一个端口唯一对应着一台接收者主机，当主机在多个IPv6组播组间频繁切换（如进行电视选台）时，为了快速响应主机的离开组报文，可以在MLD查询器上开启MLD快速离开功能。

在开启了MLD快速离开功能之后，当MLD查询器收到来自主机的离开组报文时，不再发送MLD特定组查询报文或MLD特定源组查询报文，而是直接向上游发送离开通告，这样一方面减小了响应延迟，另一方面也节省了网络带宽。

1. 全局配置MLD快速离开

表1-14 全局配置MLD快速离开

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入MLD视图 | mld | -
配置IPv6组播组成员快速离开 | fast-leave [ group-policy acl6-number ] | 必选 缺省情况下，IPv6组播组成员快速离开功能是关闭的

2. 在接口上配置MLD快速离开

表1-15 在接口上配置MLD快速离开

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
配置IPv6组播组成员快速离开 | mld fast-leave [ group-policy acl6-number ] | 必选 缺省情况下，IPv6组播组成员快速离开功能是关闭的

MLD快速离开配置只对除VLAN接口以外的其它三层接口生效，如三层以太网端口、三层聚合接口及Tunnel接口。

1.4.5 配置MLD主机跟踪功能

通过使能MLD主机跟踪功能，可以使设备能够记录正在接收IPv6组播数据的成员主机信息（包括主机的IPv6地址、运行时间和超时时间等），以便于网络管理员对这些主机进行监控和管理。

1. 全局配置MLD主机跟踪功能

表1-16 全局配置MLD主机跟踪功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入MLD视图 | mld | -
全局使能MLD主机跟踪功能 | host-tracking | 必选 缺省情况下，MLD主机跟踪功能处于关闭状态

2. 在接口上配置MLD主机跟踪功能

表1-17 在接口上配置MLD主机跟踪功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
在接口上使能MLD主机跟踪功能 | mld host-tracking | 必选 缺省情况下，MLD主机跟踪功能处于关闭状态


1.5 配置MLD SSM Mapping

在IPv6 SSM网络中，由于各种可能的限制，某些接收者主机只能运行MLDv1。为了向这些仅支持MLDv1的接收者主机提供SSM服务，可以在路由器上配置MLD SSM Mapping功能。

1.5.1 配置准备

在配置MLD SSM Mapping之前，需完成以下任务：

l 使能IPv6转发功能并配置任一IPv6单播路由协议，实现域内网络层互通

l 配置MLD基本功能

1.5.2 使能MLD SSM Mapping

表1-18 使能MLD SSM Mapping

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
使能MLD SSM Mapping功能 | mld ssm-mapping enable | 必选 缺省情况下，接口上的MLD SSM Mapping功能处于关闭状态

为保证本网段内运行任意版本MLD的接收者主机都能得到SSM服务，建议在处于该网段的接口上运行MLDv2。

1.5.3 配置MLD SSM Mapping规则

通过多次配置可以实现同一IPv6组播组到多个IPv6组播源的映射。

表1-19 配置MLD SSM Mapping规则

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入MLD视图 | mld | -
配置MLD SSM Mapping规则 | ssm-mapping ipv6-group-address prefix-length ipv6-source-address | 必选 缺省情况下，未配置MLD SSM Mapping规则

若VLAN接口上运行的是MLDv2，则在使用 mld-snooping host-join 命令配置模拟主机加入时即便不指定IPv6组播源，模拟主机也仍将发送MLDv2的报告报文，这种情况下不会依据MLD SSM Mapping规则创建相应的IPv6组播组。有关 mld-snooping host-join 命令的详细介绍，请参见“IP组播命令参考”中的“MLD Snooping”。


1.6 配置MLD Proxying

1.6.1 配置准备

在配置MLD Proxying之前，需完成以下任务：

l 使能IPv6转发功能并配置任一IPv6单播路由协议，实现域内网络层互通

l 使能IPv6组播路由

1.6.2 使能MLD Proxying

在设备朝向组播分发树树根方向的接口上使能了MLD代理功能之后，该设备就成为了MLD代理设备。

表1-20 使能MLD Proxying

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
使能MLD代理功能 | mld proxying enable | 必选 缺省情况下，接口上的MLD代理功能处于关闭状态

l 一台设备上只允许有一个接口使能MLD代理功能。

l 在进行MLD的相关配置时，在已使能MLD代理功能的接口上不允许再使能MLD，且只有 mld require-router-alert、mld send-router-alert 和 mld version 命令可在该接口上生效。

l 在已使能MLD代理功能的设备上不允许再使能其它IPv6组播路由协议（如不能在接口上使能IPv6 PIM-DM或IPv6 PIM-SM，但在IPv6 PIM视图下配置的 source-lifetime、source-policy 和 ssm-policy 命令仍会生效），反之亦然。

l 若某VLAN内已使能了MLD Snooping，则该VLAN对应的VLAN接口上不能再使能MLD代理功能，反之亦然。

1.6.3 配置下行接口的IPv6组播转发能力

通常，IPv6组播数据只能被查询器转发，非查询器不具备IPv6组播转发能力，这样可以避免IPv6组播数据被重复转发。对于MLD代理设备也同样如此，只有当其下行接口是查询器时，IPv6组播数据才能通过该接口转发给下游主机。

但在某些情况下，MLD代理设备的下行接口不能在查询器竞选中获胜，此时应使能该下行接口在非查询器状态下的IPv6组播转发能力。

表1-21 配置下行接口的IPv6组播转发能力

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
使能下行接口在非查询器状态下的IPv6组播转发能力 | mld proxying forwarding | 必选 缺省情况下，当MLD代理设备的下行接口处于非查询器状态时，不转发IPv6组播数据

在共享网段内存在多台MLD代理设备的情况下，当其中一台MLD代理设备的下行接口已竞选为查询器时，不应再在其它MLD代理设备的下行接口上进行此配置，否则该网段内将收到多份重复的IPv6组播数据流。


1.7 MLD显示和维护

在完成上述配置后，在任意视图下执行 display 命令可以显示配置后MLD的运行情况，通过查看显示信息验证配置的效果。

在用户视图下执行 reset 命令可以清除MLD的统计信息。

表1-22 MLD显示和维护

操作 | 命令
查看MLD组的信息 | display mld group [ ipv6-group-address | interface interface-type interface-number ] [ static | verbose ] [ | { begin | exclude | include } regular-expression ]
查看MLD组的二层端口信息 | display mld group port-info [ vlan vlan-id ] [ slot slot-number ] [ verbose ] [ | { begin | exclude | include } regular-expression ]
查看接口上MLD跟踪的主机信息 | display mld host interface interface-type interface-number group ipv6-group-address [ source ipv6-source-address ] [ | { begin | exclude | include } regular-expression ]
查看二层端口上MLD跟踪的主机信息 | display mld host port-info vlan vlan-id group ipv6-group-address [ source ipv6-source-address ] [ slot slot-number ] [ | { begin | exclude | include } regular-expression ]
查看接口上MLD配置和运行信息 | display mld interface [ interface-type interface-number ] [ verbose ] [ | { begin | exclude | include } regular-expression ]
查看MLD代理组的信息 | display mld proxying group [ group-address ] [ verbose ] [ | { begin | exclude | include } regular-expression ]
查看MLD路由表的信息 | display mld routing-table [ ipv6-source-address [ prefix-length ] | ipv6-group-address [ prefix-length ] | flags { act | suc } ] * [ | { begin | exclude | include } regular-expression ]
查看MLD SSM Mapping规则 | display mld ssm-mapping ipv6-group-address [ | { begin | exclude | include } regular-expression ]
查看依据MLD SSM Mapping规则创建的IPv6组播组信息 | display mld ssm-mapping group [ ipv6-group-address | interface interface-type interface-number ] [ verbose ] [ | { begin | exclude | include } regular-expression ]
查看接口上依据MLD SSM Mapping规则加入的主机信息 | display mld ssm-mapping host interface interface-type interface-number group ipv6-group-address source ipv6-source-address [ | { begin | exclude | include } regular-expression ]
清除MLD组的动态加入记录 | reset mld group { all | interface interface-type interface-number { all | ipv6-group-address [ prefix-length ] [ ipv6-source-address [ prefix-length ] ] } }
清除MLD组二层端口的动态加入记录 | reset mld group port-info { all | ipv6-group-address } [ vlan vlan-id ]
清除依据MLD SSM Mapping规则创建的IPv6组播组信息 | reset mld ssm-mapping group { all | interface interface-type interface-number { all | ipv6-group-address [ prefix-length ] [ ipv6-source-address [ prefix-length ] ] } }

l reset mld group 和 reset mld group port-info 命令只能清除动态加入记录，而无法清除静态加入记录。

l display mld host interface 只能查看除Vlan接口外的三层接口上MLD跟踪的主机信息。

l display mld ssm-mapping host interface 只能查看除Vlan接口外的三层接口上依据MLD SSM Mapping规则加入的主机信息。

执行 reset mld group 命令可能导致接收者中断组播信息的接收。


1.8 MLD典型配置举例

1.8.1 MLD基本功能配置举例

1. 组网需求

l 接收者通过组播方式接收视频点播信息，不同组织的接收者组成末梢网络N1和N2，Host A与Host C分别为N1和N2中的组播信息接收者。

l IPv6 PIM网络中的Switch A连接N1，Switch B与Switch C共同连接N2。

l Switch A通过Vlan-interface100连接N1，通过Vlan-interface101连接IPv6 PIM网络中的其它设备。

l Switch B与Switch C分别通过各自的Vlan-interface200连接N2，并分别通过Vlan-interface201和Vlan-interface202连接IPv6 PIM网络中的其它设备。

l Switch A与N1之间运行MLDv1；Switch B、Switch C与N2之间也分别运行MLDv1，且由于Switch B的接口IPv6地址较小，因此在N2中通常由其来充当MLD查询器。

l 通过配置，使N1中的主机只能加入IPv6组播组FF1E::101，而对N2中的主机则无任何限制。

2. 组网图

图1-7 MLD基本功能配置组网图

3. 配置步骤

(1) 使能IPv6转发功能，并配置IPv6地址和IPv6单播路由协议

使能各交换机的IPv6转发功能，并按照 图1-7 配置各接口的IP地址和前缀长度，具体配置过程略。

配置IPv6 PIM网络内的各交换机之间采用OSPFv3协议进行互连，确保IPv6 PIM网络内部在网络层互通，并且各交换机之间能够借助单播路由协议实现动态路由更新，具体配置过程略。

(2) 使能IPv6组播路由，并使能IPv6 PIM-DM和MLD

# 在Switch A上使能IPv6组播路由，在各接口上使能IPv6 PIM-DM，并在主机侧接口Vlan-interface100上使能MLD。

<SwitchA> system-view

[SwitchA] multicast ipv6 routing-enable

[SwitchA] interface vlan-interface 100

[SwitchA-Vlan-interface100] mld enable

[SwitchA-Vlan-interface100] pim ipv6 dm

[SwitchA-Vlan-interface100] quit

[SwitchA] interface vlan-interface 101

[SwitchA-Vlan-interface101] pim ipv6 dm

[SwitchA-Vlan-interface101] quit

# 在Switch B上使能IPv6组播路由，在各接口上使能IPv6 PIM-DM，并在主机侧接口Vlan-interface200上使能MLD。

<SwitchB> system-view

[SwitchB] multicast ipv6 routing-enable

[SwitchB] interface vlan-interface 200

[SwitchB-Vlan-interface200] mld enable

[SwitchB-Vlan-interface200] pim ipv6 dm

[SwitchB-Vlan-interface200] quit

[SwitchB] interface vlan-interface 201

[SwitchB-Vlan-interface201] pim ipv6 dm

[SwitchB-Vlan-interface201] quit

# 在Switch C上使能IPv6组播路由，在各接口上使能IPv6 PIM-DM，并在主机侧接口Vlan-interface200上使能MLD。

<SwitchC> system-view

[SwitchC] multicast ipv6 routing-enable

[SwitchC] interface vlan-interface 200

[SwitchC-Vlan-interface200] mld enable

[SwitchC-Vlan-interface200] pim ipv6 dm

[SwitchC-Vlan-interface200] quit

[SwitchC] interface vlan-interface 202

[SwitchC-Vlan-interface202] pim ipv6 dm

[SwitchC-Vlan-interface202] quit

(3) 配置IPv6组播组过滤器

# 在Switch A上限定接口Vlan-interface100下的主机只能加入IPv6组播组FF1E::101。

[SwitchA] acl ipv6 number 2001

[SwitchA-acl6-basic-2001] rule permit source ff1e::101 128

[SwitchA-acl6-basic-2001] quit

[SwitchA] interface vlan-interface 100

[SwitchA-Vlan-interface100] mld group-policy 2001

[SwitchA-Vlan-interface100] quit

(4) 检查配置效果

通过使用 display mld interface 命令可以查看各交换机接口上MLD的配置和运行情况。例如：

# 查看Switch B在Vlan-interface200上的MLD信息。

[SwitchB] display mld interface vlan-interface 200

Vlan-interface200(FE80::200:5EFF:FE66:5100):

MLD is enabled

Current MLD version is 1

Value of query interval for MLD(in seconds): 125

Value of other querier present interval for MLD(in seconds): 255

Value of maximum query response time for MLD(in seconds): 10

Querier for MLD: FE80::200:5EFF:FE66:5100 (this router)

Total 1 MLD Group reported

1.8.2 MLD SSM Mapping功能配置举例

1. 组网需求

l IPv6 PIM-SM网络中同时采用ASM和SSM方式提供IPv6组播服务，将Switch D的接口Vlan-interface104配置为C-BSR和C-RP，IPv6 SSM组播组的范围为FF3E::/64。

l Switch D的接口Vlan-interface400上运行MLDv2，接收者主机上运行MLDv1，且不能升级至MLDv2，因此该主机在加入IPv6组播组时无法指定IPv6组播源。

l Source 1、Source 2和Source 3都向IPv6 SSM组范围内的组播组发送IPv6组播数据，要求通过在Switch D上配置MLD SSM Mapping功能，使接收者主机只能接收来自Source 1和Source 3的IPv6组播数据。

2. 组网图

图1-8 MLD SSM Mapping功能配置组网图

设备 | 接口 | IPv6地址 | 设备 | 接口 | IPv6地址
Source 1 | - | 1001::1/64 | Source 3 | - | 3001::1/64
Source 2 | - | 2001::1/64 | Receiver | - | 4001::1/64
Switch A | Vlan-int100 | 1001::2/64 | Switch C | Vlan-int300 | 3001::2/64
 | Vlan-int101 | 1002::1/64 |  | Vlan-int103 | 3002::1/64
 | Vlan-int104 | 1003::1/64 |  | Vlan-int102 | 2002::2/64
Switch B | Vlan-int200 | 2001::2/64 | Switch D | Vlan-int400 | 4001::2/64
 | Vlan-int101 | 1002::2/64 |  | Vlan-int103 | 3002::2/64
 | Vlan-int102 | 2002::1/64 |  | Vlan-int104 | 1003::2/64

3. 配置步骤

(1) 使能IPv6转发功能，并配置IPv6地址和IPv6单播路由协议

使能各交换机的IPv6转发功能，并按照图1-8 配置各接口的IPv6地址和前缀长度，具体配置过程略。

配置IPv6 PIM-SM域内的各交换机之间采用OSPFv3协议进行互连，确保IPv6 PIM-SM域内部在网络层互通，并且各交换机之间能够借助IPv6单播路由协议实现动态路由更新，具体配置过程略。

(2) 使能IPv6组播路由，并使能IPv6 PIM-SM、MLD和MLD SSM Mapping功能

# 在Switch D上使能IPv6组播路由，在各接口上使能IPv6 PIM-SM，并在主机侧接口Vlan-interface400上使能MLD和MLD SSM Mapping功能，配置MLD版本为2。

<SwitchD> system-view

[SwitchD] multicast ipv6 routing-enable

[SwitchD] interface vlan-interface 400

[SwitchD-Vlan-interface400] mld enable

[SwitchD-Vlan-interface400] mld version 2

[SwitchD-Vlan-interface400] mld ssm-mapping enable

[SwitchD-Vlan-interface400] pim ipv6 sm

[SwitchD-Vlan-interface400] quit

[SwitchD] interface vlan-interface 103

[SwitchD-Vlan-interface103] pim ipv6 sm

[SwitchD-Vlan-interface103] quit

[SwitchD] interface vlan-interface 104

[SwitchD-Vlan-interface104] pim ipv6 sm

[SwitchD-Vlan-interface104] quit

# 在Switch A上使能IPv6组播路由，并在各接口上使能IPv6 PIM-SM。

<SwitchA> system-view

[SwitchA] multicast ipv6 routing-enable

[SwitchA] interface vlan-interface 100

[SwitchA-Vlan-interface100] pim ipv6 sm

[SwitchA-Vlan-interface100] quit

[SwitchA] interface vlan-interface 101

[SwitchA-Vlan-interface101] pim ipv6 sm

[SwitchA-Vlan-interface101] quit

[SwitchA] interface vlan-interface 104

[SwitchA-Vlan-interface104] pim ipv6 sm

[SwitchA-Vlan-interface104] quit

Switch B和Switch C的配置与Switch A相似，配置过程略。

(3) 配置C-BSR和C-RP

# 在Switch D上配置C-BSR和C-RP的位置。

[SwitchD] pim ipv6

[SwitchD-pim6] c-bsr 1003::2

[SwitchD-pim6] c-rp 1003::2

[SwitchD-pim6] quit

(4) 配置IPv6 SSM组播组的地址范围

# 在Switch D上配置IPv6 SSM组播组的地址范围为FF3E::/64。

[SwitchD] acl ipv6 number 2000

[SwitchD-acl6-basic-2000] rule permit source ff3e:: 64

[SwitchD-acl6-basic-2000] quit

[SwitchD] pim ipv6

[SwitchD-pim6] ssm-policy 2000

[SwitchD-pim6] quit

Switch A、Switch B和Switch C的配置与Switch D相似，配置过程略。

(5) 配置MLD SSM Mapping规则

# 在Switch D上配置MLD SSM Mapping规则。

[SwitchD] mld

[SwitchD-mld] ssm-mapping ff3e:: 64 1001::1

[SwitchD-mld] ssm-mapping ff3e:: 64 3001::1

[SwitchD-mld] quit

(6) 检验配置效果

通过使用 display mld ssm-mapping 命令可以查看交换机上的MLD SSM Mapping规则。例如：

# 查看Switch D上IPv6组播组FF3E::101的MLD SSM Mapping规则。

[SwitchD] display mld ssm-mapping ff3e::101

Group: FF3E::101

Source list:

1001::1

3001::1

通过使用 display mld ssm-mapping group 命令可以查看交换机上依据MLD SSM Mapping规则创建的IPv6组播组信息。例如：

# 查看Switch D上依据MLD SSM Mapping规则创建的IPv6组播组信息。

[SwitchD] display mld ssm-mapping group

Total 1 MLD SSM-mapping Group(s).

Interface group report information

Vlan-interface400 (4001::2):

Total 1 MLD SSM-mapping Group reported

Group Address: FF3E::101

Last Reporter: 4001::1

Uptime: 00:02:04

Expires: off

通过使用 display pim ipv6 routing-table 命令可以查看交换机的IPv6 PIM路由表信息。例如：

# 查看Switch D上IPv6 PIM路由表信息。

[SwitchD] display pim ipv6 routing-table

Total 0 (*, G) entry; 2 (S, G) entry

(1001::1, FF3E::101)

Protocol: pim-ssm, Flag:

UpTime: 00:13:25

Upstream interface: Vlan-interface104

Upstream neighbor: 1003::1

RPF prime neighbor: 1003::1

Downstream interface(s) information:

Total number of downstreams: 1

1: Vlan-interface400

Protocol: mld, UpTime: 00:13:25, Expires: -

(3001::1, FF3E::101)

Protocol: pim-ssm, Flag:

UpTime: 00:13:25

Upstream interface: Vlan-interface103

Upstream neighbor: 3002::1

RPF prime neighbor: 3002::1

Downstream interface(s) information:

Total number of downstreams: 1

1: Vlan-interface400

Protocol: mld, UpTime: 00:13:25, Expires: -

1.8.3 MLD Proxying功能配置举例

1. 组网需求

l 核心网络中运行IPv6 PIM-DM，末梢网络中的接收者Host A和Host C通过IPv6组播组FF3E::101点播视频节目。

l 要求通过在Switch B上配置MLD Proxying功能，使其在不运行IPv6 PIM-DM的情况下实现组成员关系的维护和IPv6组播数据的正常转发。

2. 组网图

图1-9 MLD Proxying功能配置组网图

3. 配置步骤

(1) 使能IPv6转发功能，并配置IPv6地址

使能各交换机的IPv6转发功能，并按照图1-9 配置各接口的IPv6地址和前缀长度，具体配置过程略。

(2) 使能IPv6组播路由，并使能IPv6 PIM-DM、MLD和MLD Proxying

# 在Switch A上使能IPv6组播路由，在接口Vlan-interface101上使能IPv6 PIM-DM，并在接口Vlan-interface100上使能MLD。

<SwitchA> system-view

[SwitchA] multicast ipv6 routing-enable

[SwitchA] interface vlan-interface 101

[SwitchA-Vlan-interface101] pim ipv6 dm

[SwitchA-Vlan-interface101] quit

[SwitchA] interface vlan-interface 100

[SwitchA-Vlan-interface100] mld enable

[SwitchA-Vlan-interface100] pim ipv6 dm

[SwitchA-Vlan-interface100] quit

# 在Switch B上使能IPv6组播路由，在接口Vlan-interface100上使能MLD Proxying，并在接口Vlan-interface200上使能MLD。

<SwitchB> system-view

[SwitchB] multicast ipv6 routing-enable

[SwitchB] interface vlan-interface 100

[SwitchB-Vlan-interface100] mld proxying enable

[SwitchB-Vlan-interface100] quit

[SwitchB] interface vlan-interface 200

[SwitchB-Vlan-interface200] mld enable

[SwitchB-Vlan-interface200] quit

(3) 检验配置效果

通过使用 display mld interface 命令可以查看各交换机接口上MLD的配置和运行情况。例如：

# 查看Switch B在Vlan-interface100上MLD配置和运行的详细信息。

[SwitchB] display mld interface vlan-interface 100 verbose

Vlan-interface100(2001::2):

MLD proxy is enabled

Current MLD version is 1

Multicast routing on this interface: enabled

Require-router-alert: disabled

通过使用 display mld group 命令可以查看MLD组的信息。例如：

# 查看Switch A上MLD组的信息。

[SwitchA] display mld group

Total 1 MLD Group(s).

Interface group report information

Vlan-interface100(2001::1):

Total 1 MLD Groups reported

Group Address Last Reporter Uptime Expires

ff3e::101 2001::2 00:02:04 00:01:15

由此可见，主机的MLD报告通过Switch B的代理接口Vlan-interface100发给Switch A。


1.9 常见配置错误举例

1.9.1 接收者侧路由器上无组成员信息

1. 故障现象

当某主机发送了加入IPv6组播组G的报文后，离该主机最近的路由器上却没有IPv6组播组G的组成员信息。

2. 分析

l 组网、接口连线的正确与否以及接口的协议层是否up将直接影响IPv6组播组成员信息的生成；

l 在路由器上必须使能IPv6组播路由，在连接主机的接口上必须使能MLD；

l 如果路由器接口上运行的MLD版本比主机的低，那么路由器将无法识别主机发来的较高版本的MLD报告报文；

l 如果在接口上使用命令 mld group-policy 对加入IPv6组播组G进行了限制后，该接口将不再接收未通过过滤的那些要求加入IPv6组播组G的报文。

3. 处理过程

(1) 检查组网是否正确，接口间的连线是否正确，以及接口状态是否正常，是否配置了正确的IPv6地址。通过命令 display mld interface 查看接口信息。若无接口信息输出，说明接口状态异常，原因通常是接口上配置了 shutdown 命令，或者接口连线不正确，或者接口上没有配置正确的IPv6地址。

(2) 检查是否使能了IPv6组播路由。通过命令 display current-configuration 查看是否配置了命令 multicast ipv6 routing-enable。若缺少该配置，则需要在系统视图下执行命令 multicast ipv6 routing-enable 使能IPv6组播路由，同时也需要在相应接口上使能MLD。

(3) 检查接口上运行的MLD版本。通过命令 display mld interface 来检查接口上运行的MLD版本是否低于主机所使用的版本。

(4) 检查接口上是否配置了IPv6 ACL规则来限制主机加入IPv6组播组G。通过命令 display current-configuration interface 观察是否配置了 mld group-policy 命令。如果配置的IPv6 ACL规则对加入IPv6组播组G进行了限制，则需要修改该IPv6 ACL规则，允许接受IPv6组播组G的报告报文。

1.9.2 同一网段各路由器上组成员关系不一致

1. 故障现象

在同一网段的不同MLD路由器上，各自维护的组成员关系不一致。

2. 分析

l 运行MLD的路由器为每个接口维护多个参数，各参数之间相互影响，非常复杂。如果同一网段路由器的MLD接口参数配置不一致，必然导致组成员关系的混乱。

l 另外，MLD目前有2个版本，版本不同的MLD路由器与主机之间虽然可以兼容，但是连接在同一网段的所有路由器必须运行相同版本的MLD。如果同一网段路由器的MLD版本不一致，也将导致MLD组成员关系的混乱。

3. 处理过程

(1) 检查MLD配置。通过命令 display current-configuration 观察接口上MLD的配置信息。

(2) 在同一网段的所有路由器上执行命令 display mld interface 来检查MLD相关定时器的参数，确保配置一致。

(3) 通过命令 display mld interface 来检查各路由器上运行的MLD版本是否一致。


1 IPv6 PIM配置

l S3600V2-SI系列交换机不支持IPv6 PIM功能。

l 本文所指的路由器代表运行了路由协议的三层设备。

l IPv6 PIM功能中所指的“接口”为三层口，包括VLAN接口、三层以太网端口等。三层以太网端口是指被配置为三层模式的以太网端口，有关以太网端口模式切换的操作，请参见“二层技术-以太网交换配置指导”中的“以太网端口配置”。

相关链接

  • 1.1 IPv6 PIM简介
  • 1.2 配置IPv6 PIM-DM
  • 1.3 配置IPv6 PIM-SM
  • 1.4 配置IPv6双向PIM
  • 1.5 配置IPv6 PIM-SSM
  • 1.6 配置IPv6 PIM公共特性
  • 1.7 IPv6 PIM显示和维护
  • 1.8 IPv6 PIM典型配置举例
  • 1.9 常见配置错误举例
父主题： 15-IPv6 PIM配置


1.1 IPv6 PIM简介

IPv6 PIM是Protocol Independent Multicast for IPv6（IPv6协议无关组播）的简称，表示可以利用IPv6单播静态路由或者任意IPv6单播路由协议（包括RIPng、OSPFv3、IS-ISv6、BGP4+等）所生成的IPv6单播路由表为IPv6组播提供路由。IPv6组播路由与所采用的IPv6单播路由协议无关，只要能够通过IPv6单播路由协议产生相应的IPv6组播路由表项即可。IPv6 PIM借助RPF（Reverse Path Forwarding，逆向路径转发）机制实现对IPv6组播报文的转发。当IPv6组播报文到达本地设备时，首先对其进行RPF检查：若RPF检查通过，则创建相应的IPv6组播路由表项，从而进行IPv6组播报文的转发；若RPF检查失败，则丢弃该报文。有关RPF的详细介绍，请参见“IP组播配置指导”中的“IPv6组播路由与转发”。

根据实现机制的不同，IPv6 PIM分为以下几种类型：

l IPv6 PIM-DM（Protocol Independent Multicast-Dense Mode for IPv6，IPv6协议无关组播—密集模式）

l IPv6 PIM-SM（Protocol Independent Multicast-Sparse Mode for IPv6，IPv6协议无关组播—稀疏模式）

l IPv6 BIDIR-PIM（Bidirectional Protocol Independent Multicast for IPv6，IPv6双向协议无关组播，简称IPv6双向PIM）

l IPv6 PIM-SSM（Protocol Independent Multicast Source-Specific Multicast for IPv6，IPv6协议无关组播－指定源组播）

为了描述的方便，本文中把由支持IPv6 PIM协议的组播路由器所组成的网络简称为“IPv6 PIM域”。

1.1.1 IPv6 PIM-DM简介

IPv6 PIM-DM属于密集模式的IPv6组播路由协议，使用“推（Push）模式”传送IPv6组播数据，通常适用于IPv6组播组成员相对比较密集的小型网络，其基本原理如下：

l IPv6 PIM-DM假设网络中的每个子网都存在至少一个IPv6组播组成员，因此IPv6组播数据将被扩散（Flooding）到网络中的所有节点。然后，IPv6 PIM-DM对没有IPv6组播数据转发的分支进行剪枝（Prune），只保留包含接收者的分支。这种“扩散—剪枝”现象周期性地发生，被剪枝的分支也可以周期性地恢复成转发状态。

l 当被剪枝分支的节点上出现了IPv6组播组的成员时，为了减少该节点恢复成转发状态所需的时间，IPv6 PIM-DM使用嫁接（Graft）机制主动恢复其对IPv6组播数据的转发。

一般说来，密集模式下数据包的转发路径是有源树（Source Tree，即以IPv6组播源为“根”、IPv6组播组成员为“枝叶”的一棵转发树）。由于有源树使用的是从IPv6组播源到接收者的最短路径，因此也称为最短路径树（Shortest Path Tree，SPT）。

IPv6 PIM-DM的工作机制可以概括如下：

l 邻居发现

l 构建SPT

l 嫁接

l 断言

1. 邻居发现

在IPv6 PIM域中，路由器通过周期性地的向本网段的所有IPv6 PIM路由器以组播方式发送IPv6 PIM Hello报文（以下简称Hello报文），以发现IPv6 PIM邻居，维护各路由器之间的IPv6 PIM邻居关系，从而构建和维护SPT。

路由器每个运行了IPv6 PIM协议的接口都会周期性地发送Hello报文，从而了解与该接口相关的IPv6 PIM邻居信息。

2. 构建SPT

构建SPT的过程也就是“扩散—剪枝”的过程：

(1) 在IPv6 PIM-DM域中，IPv6组播源S向IPv6组播组G发送IPv6组播报文时，首先对IPv6组播报文进行扩散：路由器对该报文的RPF检查通过后，便创建一个（S，G）表项，并将该报文向网络中的所有下游节点转发。经过扩散，IPv6 PIM-DM域内的每个路由器上都会创建（S，G）表项。

(2) 然后对那些下游没有接收者的节点进行剪枝：由没有接收者的下游节点向上游节点发剪枝报文（Prune Message），以通知上游节点将相应的接口从其组播转发表项（S，G）所对应的出接口列表中删除，并不再转发该IPv6组播组的报文至该节点。

l （S，G）表项包括IPv6组播源的地址S、IPv6组播组的地址G、出接口列表和入接口等。

l 路由器上收到IPv6组播数据的接口称为“上游”，转发IPv6组播数据的接口称为“下游”。

剪枝过程最先由叶子路由器发起，如图1-1 所示，没有接收者（Receiver）的路由器（如与Host A直连的路由器）主动发起剪枝，并一直持续到IPv6 PIM-DM域中只剩下必要的分支，这些分支共同构成了SPT。

图1-1 IPv6 PIM-DM中构建SPT示意图

“扩散—剪枝”的过程是周期性发生的。各个被剪枝的节点提供超时机制，当剪枝超时后便重新开始这一过程。

剪枝在IPv6 PIM-SM中有着相似的应用。

3. 嫁接

当被剪枝的节点上出现了IPv6组播组的成员时，为了减少该节点恢复成转发状态所需的时间，IPv6 PIM-DM使用嫁接机制主动恢复其对IPv6组播数据的转发，过程如下：

(1) 需要恢复接收IPv6组播数据的节点向其上游节点发送嫁接报文（Graft Message）以申请重新加入到SPT中；

(2) 当上游节点收到该报文后恢复该下游节点的转发状态，并向其回应一个嫁接应答报文（Graft-Ack Message）以进行确认；

(3) 如果发送嫁接报文的下游节点没有收到来自其上游节点的嫁接应答报文，将重新发送嫁接报文直到被确认为止。

4. 断言

在一个网段内如果存在多台组播路由器，则相同的IPv6组播报文可能会被重复发送到该网段。为了避免出现这种情况，就需要通过断言（Assert）机制来选定唯一的IPv6组播数据转发者。

图1-2 Assert机制示意图

如图1-2 所示，当Router A和Router B从上游节点收到（S，G）的IPv6组播报文后，都会向本地网段转发该报文，于是处于下游的节点Router C就会收到两份相同的IPv6组播报文，Router A和Router B也会从各自的本地接口收到对方转发来的该IPv6组播报文。此时，Router A和Router B会通过本地接口向本网段的所有IPv6 PIM路由器以组播方式发送断言报文（Assert Message），该报文中携带有以下信息：IPv6组播源地址S、IPv6组播地址G、到IPv6组播源的IPv6单播路由/IPv6 MBGP路由/IPv6组播静态路由的优先级和度量值。通过一定的规则对这些参数进行比较后，Router A和Router B中的获胜者将成为（S，G）IPv6组播报文在本网段的转发者，比较规则如下：

(1) 到IPv6组播源的优先级较高者获胜；

(2) 如果到IPv6组播源的优先级相等，那么到IPv6组播源的度量值较小者获胜；

(3) 如果到IPv6组播源的度量值也相等，则本地接口IPv6链路本地地址较大者获胜。

1.1.2 IPv6 PIM-SM简介

IPv6 PIM-DM使用以“扩散—剪枝”方式构建的SPT来传送IPv6组播数据。尽管SPT的路径最短，但是其建立的过程效率较低，并不适合大中型网络。

IPv6 PIM-SM属于稀疏模式的IPv6组播路由协议，使用“拉（Pull）模式”传送IPv6组播数据，通常适用于IPv6组播组成员分布相对分散、范围较广的大中型网络，其基本原理如下：

l IPv6 PIM-SM假设所有主机都不需要接收IPv6组播数据，只向明确提出需要IPv6组播数据的主机转发。IPv6 PIM-SM实现组播转发的核心任务就是构造并维护RPT（Rendezvous Point Tree，共享树），RPT选择IPv6 PIM域中某台路由器作为公用的根节点RP（Rendezvous Point，汇集点），IPv6组播数据通过RP沿着RPT转发给接收者；

l 连接接收者的路由器向某IPv6组播组对应的RP发送加入报文，该报文被逐跳送达RP，所经过的路径就形成了RPT的分支；

l IPv6组播源如果要向某IPv6组播组发送IPv6组播数据，首先由IPv6组播源侧DR（Designated Router，指定路由器）负责向RP进行注册，把注册报文（Register Message）通过单播方式发送给RP，该报文到达RP后触发建立SPT。之后IPv6组播源把IPv6组播数据沿着SPT发向RP，当IPv6组播数据到达RP后，被复制并沿着RPT发送给接收者。

复制仅发生在分发树的分支处，这个过程能够自动重复直到数据包最终到达接收者。

IPv6 PIM-SM的工作机制可以概括如下：

l 邻居发现

l DR选举

l RP发现

l 嵌入式RP

l 构建RPT

l IPv6组播源注册

l SPT切换

l 断言

1. 邻居发现

IPv6 PIM-SM使用与IPv6 PIM-DM类似的邻居发现机制，具体请参见“1.1.1 1. 邻居发现”一节。

2. DR选举

借助Hello报文还可以为共享网络（如Ethernet）选举DR，DR将作为该共享网络中IPv6组播数据的唯一转发者。

无论是与IPv6组播源相连的网络，还是与接收者相连的网络，都需要选举DR。接收者侧的DR负责向RP发送加入报文；IPv6组播源侧的DR负责向RP发送注册报文。

l 各路由器之间通过比较Hello报文中所携带的优先级和IPv6链路本地地址，可以为多路由器网段选举DR。

l 在充当接收者侧DR的设备上必须使能MLD，否则连接在该DR上的接收者将不能通过该DR加入IPv6组播组。

有关MLD的介绍，请参见“IP组播配置指导”中的“MLD”。

图1-3 DR选举示意图

如图1-3 所示，DR的选举过程如下：

(1) 共享网络上的各路由器相互之间发送Hello报文（携带有竞选DR优先级的参数），拥有最高优先级的路由器将成为DR；

(2) 如果优先级相同，或者网络中至少有一台路由器不支持在Hello报文中携带竞选DR优先级的参数，则根据各路由器的IPv6链路本地地址大小来竞选DR，IPv6链路本地地址最大的路由器将成为DR。

当DR出现故障时，其余路由器在超时后仍没有收到来自DR的Hello报文，则会触发新的DR选举过程。

3. RP发现

RP是IPv6 PIM-SM域中的核心设备。在结构简单的小型网络中，IPv6组播信息量少，整个网络仅依靠一个RP进行IPv6组播信息的转发即可，此时可以在IPv6 PIM-SM域中的各路由器上静态指定RP的位置；但是在更多的情况下，IPv6 PIM-SM域的规模都很大，通过RP转发的IPv6组播信息量巨大。为了缓解RP的负担并优化RPT的拓扑结构，可以在IPv6 PIM-SM域中配置多个C-RP（Candidate-RP，候选RP），通过自举机制来动态选举RP，使不同的RP服务于不同的组播组，此时需要配置BSR（BootStrap Router，自举路由器）。BSR是IPv6 PIM-SM域中的管理核心，一个IPv6 PIM-SM域内只能有一个BSR，但可以配置多个C-BSR（Candidate-BSR，候选BSR）。这样，一旦BSR发生故障，其余C-BSR能够通过自动选举产生新的BSR，从而确保业务免受中断。

l 一个RP可以同时服务于多个IPv6 组播组，但一个IPv6 组播组只能唯一对应一个RP。

l 一台设备可以同时充当C-RP和C-BSR。

如图1-4 所示，BSR负责收集网络中由C-RP发来的宣告报文（Advertisement Message），该报文中携带有C-RP的地址和优先级以及其服务的IPv6组范围，BSR将这些信息汇总为RP-Set（RP集，即IPv6组播组与RP的映射关系数据库），封装在自举报文（Bootstrap Message，BSM）中并发布到整个IPv6 PIM-SM域。

图1-4 RP与BSR信息交互示意图

网络中的各路由器将依据RP-Set提供的信息，使用相同的规则从众多C-RP中为特定IPv6组播组选择其对应的RP，具体规则如下：

(1) 首先比较C-RP的优先级，优先级较高者获胜。

(2) 若优先级相同，则使用哈希（Hash）函数计算哈希值，该值较大者获胜。

(3) 若优先级和哈希值都相同，则C-RP地址较大者获胜。

哈希函数的表达式为：Value (G, M, Ci) = (1103515245 * ( (1103515245 * (G & M) + 12345) XOR Ci) + 12345) mod 231，其中各符号的含义如表1-1 所示。

表1-1 哈希函数中各符号含义

符号 | 含义
Value | 哈希值
G | 将IPv6组播组地址的每32比特作为一节，各节之间通过异或运算而得的数值。假设IPv6组播组地址为FF0E:C20:1A3:63::101，则G = 0xFF0E0C20 XOR 0x01A30063 XOR 0x00000000 XOR 0x00000101
M | 哈希掩码长度（Hash Mask Length）
Ci | 将C-RP IPv6地址的每32比特作为一节，各节之间通过异或运算而得的数值。假设C-RP的IPv6地址为3FFE:B00:C18:1::10，则Ci = 0x3FFE0B00 XOR 0x0C180001 XOR 0x00000000 XOR 0x00000010
& | 逻辑运算符，表示与运算
XOR | 逻辑运算符，表示异或运算
mod | 算术运算符，表示整除取余

4. 嵌入式RP

通过嵌入式RP（Embedded RP）机制可以从IPv6组播地址中解析出RP的地址，从而实现IPv6组播组到RP的映射，以取代静态配置的RP或由BSR机制动态计算出来的RP，DR不再需要预先知道RP的信息，只需对组播报文进行分析即可知道RP的地址。其工作原理如下：

l 接收者侧：

(1) 接收者主机发送MLD报告报文声明加入某IPv6组播组；

(2) 接收者侧的DR提取内嵌在IPv6组播地址中的RP地址，并向该RP发送加入报文（Join Message）。

l IPv6组播源侧：

(1) IPv6组播源要向某IPv6组播组发送IPv6组播数据；

(2) IPv6组播源侧的DR提取内嵌在IPv6组播地址中的RP地址，并向该RP发送注册报文。

5. 构建RPT

图1-5 IPv6 PIM-SM中构建RPT示意图

如图1-5 所示，RPT的构建过程如下：

(1) 当接收者加入一个IPv6组播组G时，先通过MLD报文通知与其直连的DR；

(2) DR掌握了IPv6组播组G的接收者的信息后，向该组所对应的RP方向逐跳发送加入报文；

(3) 从DR到RP所经过的路由器就形成了RPT的分支，这些路由器都在其转发表中生成了（*，G）表项，这里的“*”表示来自任意IPv6组播源。RPT以RP为根，以DR为叶子。

当发往IPv6组播组G的IPv6组播数据流经RP时，数据就会沿着已建立好的RPT到达DR，进而到达接收者。

当某接收者对IPv6组播组G的信息不再感兴趣时，与其直连的DR会逆着RPT向该组的RP方向逐跳发送剪枝报文；上游节点收到该报文后在其出接口列表中删除与下游节点相连的接口，并检查自己是否拥有该IPv6组播组的接收者，如果没有则继续向其上游转发该剪枝报文。

6. IPv6组播源注册

IPv6组播源注册的目的是向RP通知IPv6组播源的存在。

图1-6 IPv6组播源注册示意图

如图1-6 所示，IPv6组播源向RP注册的过程如下：

(1) 当IPv6组播源S向IPv6组播组G发送了一个IPv6组播报文时，与IPv6组播源直连的DR在收到该报文后，就将其封装成注册报文，并通过单播方式发送给相应的RP；

(2) 当RP收到该报文后，一方面解封装注册报文并将封装在其中的IPv6组播报文沿着RPT转发给接收者，另一方面向IPv6组播源方向逐跳发送（S，G）加入报文。这样，从RP到IPv6组播源所经过的路由器就形成了SPT的分支，这些路由器都在其转发表中生成了（S，G）表项。SPT以IPv6组播源侧的DR为根，以RP为叶子。

(3) IPv6组播源发出的IPv6组播数据沿着已建立好的SPT到达RP，然后由RP把IPv6组播数据沿着RPT向接收者进行转发。当RP收到沿着SPT转发来的IPv6组播数据后，通过单播方式向与IPv6组播源直连的DR发送注册停止报文（Register-Stop Message），IPv6组播源注册过程结束。

本节中假设允许RP发起SPT切换，否则IPv6组播源侧DR将一直用注册报文封装IPv6组播报文，注册过程不会结束，除非RP上（S，G）表项的出接口变为空。

7. SPT切换

在IPv6 PIM-SM域中，一个IPv6组播组唯一对应一个RP和一棵RPT。在SPT切换前，所有发往该组的IPv6组播报文都必须先由IPv6组播源侧DR封装在注册报文中发往RP，由RP解封装后再沿RPT分发给接收者侧的DR，RP是所有IPv6组播数据必经的中转站。这个过程存在以下三个问题：

l IPv6组播源侧的DR和RP必须对IPv6组播数据进行繁琐的封装/解封装处理。

l IPv6组播数据的转发路径不一定是从IPv6组播源到接收者的最短路径。

l 当IPv6组播流量变大时，RP负担增大，容易引发故障。

为了解决上述问题，当IPv6组播数据的转发速率超过阈值时，IPv6 PIM-SM允许由RP或接收者侧的DR发起SPT切换：

(1) RP发起的SPT切换

RP收到第一个IPv6组播数据包后，立即向IPv6组播源方向发送（S，G）加入报文，在IPv6组播源侧DR与RP之间建立起SPT分支，后续的IPv6组播报文都直接沿该分支到达RP。

由RP发起的SPT切换的详细过程，请参见“1.1.2 6. IPv6组播源注册”一节。

(2) 接收者侧DR发起的SPT切换

接收者侧DR收到第一个IPv6组播数据包后，立即发起SPT切换，过程如下：

l 首先，接收者侧DR向IPv6组播源方向逐跳发送（S，G）加入报文，并最终送达IPv6组播源侧DR，沿途经过的所有路由器在其转发表中都生成了（S，G）表项，从而建立了SPT分支；

l 随后，当IPv6组播数据沿SPT到达RPT与SPT分叉的路由器时，该路由器开始丢弃沿RPT到达的IPv6组播数据，同时向RP逐跳发送含RP位的剪枝报文，RP收到该报文后继续向IPv6组播源方向发送剪枝报文（假设此时只有这一个接收者），从而完成了SPT切换；

l 最终，IPv6组播数据将沿SPT从IPv6组播源到达到接收者。

通过SPT切换，IPv6 PIM-SM能够以比IPv6 PIM-DM更经济的方式建立SPT。

8. 断言

IPv6 PIM-SM使用与IPv6 PIM-DM类似的断言机制，具体请参见“1.1.1 4. 断言”一节。

1.1.3 IPv6双向PIM简介

在某些组网应用（譬如多方电视电话会议）中，同时存在多个接收者和多个IPv6组播源，在这种情况下，如果使用传统的IPv6 PIM-DM或IPv6 PIM-SM按SPT转发IPv6组播数据，需在每台路由器上针对每个IPv6组播源都创建（S，G）表项，这将占用大量的系统资源。为了解决这个问题，提出了IPv6双向PIM的概念。IPv6双向PIM由IPv6 PIM-SM发展而来，它通过建立以RP为中心、分别连接IPv6组播源和接收者的双向RPT，使IPv6组播数据沿着双向RPT从IPv6组播源经由RP转发到接收者。这样，在每台路由器上只需维护（*，G）表项即可，从而节约了系统资源。

IPv6双向PIM主要适用于IPv6组播源和接收者都比较密集的网络，其工作机制可以概括如下：

l 邻居发现

l RP发现

l DF选举

l 构建双向RPT

1. 邻居发现

IPv6双向PIM使用与IPv6 PIM-SM完全相同的邻居发现机制，具体请参见“ 1.1.1 1. 邻居发现 ”一节。

2. RP发现

IPv6双向PIM使用与IPv6 PIM-SM完全相同的RP发现机制，具体请参见“ 1.1.2 3. RP发现 ”一节。

IPv6 PIM-SM的RP必须指定为一个实际存在的IPv6地址，而IPv6双向PIM的RP则可以指定为一个实际不存在的IPv6地址，简称RPA（Rendezvous Point Address，汇集点地址）。RPA所属网段对应的链路就称为RPL（Rendezvous Point Link，汇集点链路），连接到RPL上的所有接口都可以充当RP，且互为备份。

IPv6双向PIM中的RPF接口是指向RP的接口，RPF邻居自然是到达RP的下一跳地址。

3. DF选举

DF（Designated Forwarder，指定转发者）是IPv6双向PIM中的重要角色，IPv6组播数据由IPv6组播源向RP转发的动力来自于DF，也就是说只有DF才有能力将IPv6组播数据向RP方向转发。因此，每个RP在每个网段都需要有其对应的DF，以负责将该网段的IPv6组播数据向该RP转发；此外，在有多台IPv6组播路由器的网段，DF的唯一性也可以避免相同的IPv6组播报文被重复发往RP。

在RPL上不需要选举DF。

图1-7 DF选举示意图

如 图1-7 所示，Router B和Router C都可以从Router A收到由IPv6组播源向IPv6组播组G发送的IPv6组播报文，如果它们都向下游节点转发该报文，RP最终将收到两份相同的IPv6组播报文。因此，Router B和Router C一旦获得RP的信息，就会为该RP发起DF的选举：Router B和Router C将分别向本网段的所有IPv6 PIM路由器以组播方式发送DF选举报文（DF Election Message），该报文携带有以下信息：RP的地址、到RP的IPv6单播路由/IPv6 MBGP路由/IPv6组播静态路由的优先级和度量值。通过一定规则对这些参数进行比较后，Router B和Router C中的获胜者将成为DF，具体的比较规则如下：

(1) 到RP的优先级较高者获胜；

(2) 如果到RP的优先级相等，那么到RP的度量值较小者获胜；

(3) 如果到RP的度量值也相等，则接口的IPv6链路本地地址较大者获胜。

4. 构建双向RPT

双向RPT由两部分构成：一部分是以RP为根、以直连接收者的路由器为叶子的RPT，简称接收者侧RPT；而另一部分则是以RP为根、以直连IPv6组播源的路由器为叶子的RPT，简称组播源侧RPT。这两部分RPT的构建过程不同，下面分别加以介绍。

图1-8 接收者侧RPT构建示意图

接收者侧RPT的构建过程与IPv6 PIM-SM中RPT的构建过程类似，如 图1-8 所示，其构建过程如下：

(1) 当接收者加入一个IPv6组播组G时，先通过MLD报文通知与其直连的路由器；

(2) 该路由器掌握了IPv6组播组G的接收者的信息后，向该组所对应的RP方向逐跳发送加入报文；

(3) 从直连接收者的路由器到RP所经过的路由器就形成了接收者侧RPT的分支，这些路由器都在其转发表中生成了（*，G）表项。

当某接收者对IPv6组播组G的信息不再感兴趣时，与其直连的路由器会逆着接收者侧RPT向该组的RP方向逐跳发送剪枝报文；上游节点收到该报文后在其出接口列表中删除与下游节点相连的接口，并检查自己是否拥有该IPv6组播组的接收者，如果没有则继续向其上游转发该剪枝报文。

图1-9 组播源侧RPT构建示意图

组播源侧RPT的构建过程则相对简单，如 图1-9 所示，其构建过程如下：

(1) IPv6组播源发向IPv6组播组G的IPv6组播数据在途径的每个网段，都被该网段的DF无条件地向RP转发；

(2) 从直连组播源的路由器到RP所经过的路由器就形成了IPv6组播源侧RPT的分支，这些路由器都在其转发表中生成了（*，G）表项。

当双向RPT构建完成之后，由IPv6组播源发出的IPv6组播数据将依次沿着IPv6组播源侧RPT和接收者侧RPT，经由RP转发至接收者。

当接收者和IPv6组播源位于RP同一侧时，组播源侧RPT与接收者侧RPT有可能在到达RP之前就已汇合。在这种情况下，由该IPv6组播源发往该接收者的IPv6组播数据将在此汇合点直接被转发给该接收者，而不必经由RP。

1.1.4 IPv6管理域机制简介

1. 两种域机制的划分

一般情况下，在一个IPv6 PIM-SM/IPv6双向PIM域内只能有一个BSR，并由该BSR负责在整个IPv6 PIM-SM/IPv6双向PIM域内宣告RP-Set信息，所有IPv6组播组的信息都在此BSR管理的网络范围内进行转发，我们称之为IPv6非管理域机制。

考虑到管理的精细化，可以将整个IPv6 PIM-SM/IPv6双向PIM域划分为一个IPv6 Global域（IPv6 Global-scope Zone）和多个IPv6管理域（IPv6 Admin-scope Zone），一方面可以有效分担单一BSR的管理压力，另一方面可以使用私有组地址为特定区域提供专门的服务。相应地，我们称之为IPv6管理域机制。

IPv6管理域与特定Scope值的IPv6组播组相对应，针对不同的Scope值划分相应的IPv6管理域。IPv6管理域的边界由ZBR（Zone Border Router，区域边界路由器）构成，每个IPv6管理域各维护一个BSR，为特定Scope值的IPv6组播组服务，属于此范围的IPv6组播协议报文（如断言报文、BSR自举报文等）无法通过IPv6管理域边界。不同IPv6管理域所服务的IPv6组播组范围可以重叠，该范围内的IPv6组播组只在本IPv6管理域内有效，相当于私有组地址。而IPv6 Global域则可视为一种特殊的IPv6管理域，其维护的BSR为Scope值为14的IPv6组播组提供服务。

2. 管理域与Global域的关系

每个IPv6管理域以及IPv6 Global域都有独立的C-RP和BSR设备，这些设备仅在其所属的域有效，也就是说BSR机制与RP选举在各IPv6管理域之间是隔离的；每个IPv6管理域都有自己的边界，各IPv6管理域所服务IPv6组播组范围内的IPv6组播信息不能进、出该边界。为了更清晰地理解IPv6管理域和IPv6 Global域之间的关系，可以从以下两个角度进行考虑：

(1) 地域空间角度

IPv6管理域是针对特定Scope值的逻辑管理区域，属于此范围的IPv6组播报文只能在本IPv6管理域的域内或域外传播，无法跨过IPv6管理域的边界。

图1-10 地域空间上IPv6管理域与IPv6 Global域的关系

如 图1-10 所示，对于同一Scope值的IPv6组播组而言，各IPv6管理域在地域上必须相互独立、相互隔离。而IPv6 Global域则包含了IPv6 PIM-SM/IPv6双向PIM域内的所有路由器，不属于任何IPv6管理域服务范围的IPv6组播报文，可以在整个IPv6 PIM-SM/IPv6双向PIM域范围内传播。

(2) Scope值角度

如 图1-11 所示，IPv6组播通过其地址结构中的Scope字段来表明该IPv6组播组属于哪个域。

图1-11 IPv6组播地址结构

Scope值较大的域包含Scope值较小的域，Scope值为E所对应的域（即IPv6 Global域）最大。Scope字段可能的取值及其含义如 表1-2 所示。

表1-2 Scope字段的取值及其含义

取值 | 含义 | 所属域
0、F | 保留（Reserved） | -
1 | 接口本地范围（Interface-Local Scope） | -
2 | 链路本地范围（Link-Local Scope） | -
3 | 子网本地范围（Subnet-Local Scope） | IPv6管理域
4 | 管理本地范围（Admin-Local Scope） | IPv6管理域
5 | 站点本地范围（Site-Local Scope） | IPv6管理域
6、7、9～D | 未分配（Unassigned） | IPv6管理域
8 | 机构本地范围（Organization-Local Scope） | IPv6管理域
E | 全球范围（Global Scope） | IPv6 Global域

1.1.5 IPv6 PIM-SSM简介

SSM（Source-Specific Multicast，指定信源组播）模型和ASM（Any-Source Multicast，任意信源组播）模型是两个完全对等的模型。目前，ASM模型包括IPv6 PIM-DM和IPv6 PIM-SM两种模式，SSM模型能够借助IPv6 PIM-SM的部分技术来实现，也称为IPv6 PIM-SSM。

SSM模型为指定源组播提供了解决方案，通过MLDv2来维护主机与路由器之间的关系。在实际应用中，通常采用MLDv2以及IPv6 PIM-SM的一部分技术来实现SSM模型。由于接收者已经通过其它渠道（如广告咨询等）知道了IPv6组播源的具体位置，因此在SSM模型中无需RP，无需构建RPT，也无需IPv6组播源注册过程来发现其它IPv6 PIM域内的IPv6组播源。

IPv6 PIM-SSM的工作机制可以概括如下：

l 邻居发现

l DR选举

l 构建SPT

1. 邻居发现

IPv6 PIM-SSM使用与IPv6 PIM-SM完全相同的邻居发现机制，具体请参见“1.1.1 1. 邻居发现”一节。

2. DR选举

IPv6 PIM-SSM使用与IPv6 PIM-SM完全相同的DR选举机制，具体请参见 “1.1.2 2. DR选举”一节。

3. 构建SPT

构建为IPv6 PIM-SM服务的RPT，还是构建为IPv6 PIM-SSM服务的SPT，关键在于接收者准备加入的IPv6组播组是否属于IPv6 SSM组地址范围（IANA保留的IPv6 SSM组地址范围为FF3x::/32，其中x表示任意合法的scope）。

图1-12 IPv6 PIM-SSM中构建SPT示意图

如图1-12 所示，Host B和Host C为IPv6组播信息的接收者（Receiver），由其借助MLDv2的报告报文向DR报告自己对来自IPv6组播源S、发往IPv6组播组G的信息感兴趣。收到该报告报文的DR先判断该报文中的IPv6组地址是否在IPv6 SSM组地址范围内：

l 如果在IPv6 SSM组地址范围内，则构建IPv6 PIM-SSM，并向IPv6组播源S逐跳发送通道（Channel）的订阅报文（Subscribe Message）。沿途所有路由器上都创建（S，G）表项，从而在网络内构建了一棵以IPv6组播源S为根、以接收者为叶子的SPT，该SPT就是IPv6 PIM-SSM中的传输通道；

l 如果不在IPv6 SSM组地址范围内，则仍旧按照IPv6 PIM-SM的流程进行后续处理，此时接收者侧DR需要向RP发送（*，G）加入报文，同时IPv6组播源侧DR需要进行IPv6组播源的注册。

在IPv6 PIM-SSM中，借助“通道”的概念表示IPv6组播组，借助“订阅报文”的概念表示加入报文。

1.1.6 各IPv6 PIM协议运行关系

在一个IPv6 PIM网络中，不允许IPv6 PIM-DM与其它类型的IPv6 PIM协议（IPv6 PIM-SM、IPv6双向PIM和IPv6 PIM-SSM）同时运行，但允许同时运行IPv6 PIM-SM、IPv6双向PIM和IPv6 PIM-SSM。

当网络中同时运行IPv6 PIM-SM、IPv6双向PIM和IPv6 PIM-SSM时，针对具体的组加入行为运行哪种类型的IPv6 PIM协议，其判断过程如 图1-13 所示。

图1-13 各IPv6 PIM协议运行关系示意图

有关MLD SSM Mapping的详细介绍，请参见“IP组播配置指导”中的“MLD”。

1.1.7 协议规范

与IPv6 PIM相关的协议规范有：

l RFC 3973：Protocol Independent Multicast-Dense Mode (PIM-DM): Protocol Specification (Revised)

l RFC 4601：Protocol Independent Multicast-Sparse Mode (PIM-SM): Protocol Specification (Revised)

l RFC 3956：Embedding the Rendezvous Point (RP) Address in an IPv6 Multicast Address

l RFC 5015：Bidirectional Protocol Independent Multicast (BIDIR-PIM)

l RFC 5059：Bootstrap Router (BSR) Mechanism for Protocol Independent Multicast (PIM)

l RFC 4607：Source-Specific Multicast for IP

l draft-ietf-ssm-overview-05：An Overview of Source-Specific Multicast (SSM)


1.2 配置IPv6 PIM-DM

1.2.1 IPv6 PIM-DM配置任务简介

表1-3 IPv6 PIM-DM配置任务简介

配置任务 | 说明 | 详细配置
使能IPv6 PIM-DM | 必选 | 1.2.3
使能状态刷新能力 | 可选 | 1.2.4
配置状态刷新参数 | 可选 | 1.2.5
配置IPv6 PIM-DM定时器 | 可选 | 1.2.6
配置IPv6 PIM公共特性 | 可选 | 1.6

1.2.2 配置准备

在配置IPv6 PIM-DM之前，需完成以下任务：

l 使能IPv6转发功能并配置任一IPv6单播路由协议，实现域内网络层互通

在配置IPv6 PIM-DM之前，需准备以下数据：

l 发送状态刷新报文的时间间隔

l 等待接收新状态刷新报文的最小时间

l 状态刷新报文的Hop Limit值

l 嫁接报文的重传时间

1.2.3 使能IPv6 PIM-DM

在接口上使能了IPv6 PIM-DM后，路由器会定期发送Hello报文以发现IPv6 PIM邻居，并对收到的来自IPv6 PIM邻居的报文进行处理。在部署IPv6 PIM-DM域时，建议在其所有非边界接口上均使能IPv6 PIM-DM。

表1-4 使能IPv6 PIM-DM

操作 | 命令 | 说明
进入系统视图 | system-view | -
使能IPv6组播路由 | multicast ipv6 routing-enable | 必选 缺省情况下，IPv6组播路由处于关闭状态
进入接口视图 | interface interface-type interface-number | -
使能IPv6 PIM-DM | pim ipv6 dm | 必选 缺省情况下，IPv6 PIM-DM处于关闭状态

l 同一台设备所有接口上所启用的IPv6 PIM模式必须相同。

l IPv6 PIM-DM不能与处于IPv6 SSM组地址范围内的IPv6组播组同时使用。

有关 multicast ipv6 routing-enable 命令的详细介绍，请参见“IP组播命令参考”中的“IPv6组播路由与转发”。

1.2.4 使能状态刷新能力

为了避免各路由器上被剪枝的接口因为超时而恢复转发，与IPv6组播源直连的路由器会周期性地发送（S，G）状态刷新报文，该报文沿着IPv6 PIM-DM域最初的扩散路径逐跳进行转发，从而刷新沿途所有路由器上的剪枝定时器的状态。只有当一个共享网段内的所有IPv6 PIM路由器上都使能了状态刷新能力时，该共享网段才具备状态刷新能力。

请在IPv6 PIM-DM域内的所有路由器上进行如下配置。

表1-5 使能状态刷新能力

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
使能状态刷新能力 | pim ipv6 state-refresh-capable | 可选 缺省情况下，状态刷新能力处于使能状态

1.2.5 配置状态刷新参数

在与IPv6组播源直连的路由器上，会以一定的时间间隔周期性地发送（S，G）状态刷新报文，可以通过配置来改变这个时间间隔。

路由器可能在短时间内收到多个状态刷新报文，而其中有些报文可能是重复的。为了避免接收这些重复的报文，可以配置接收新状态刷新报文的等待时间：路由器将丢弃在该时间内收到的状态刷新报文；当该时间超时后，路由器将正常接收新的状态刷新报文，并更新自己的IPv6 PIM-DM状态，同时重置该等待时间。

在收到状态刷新报文时，路由器会将该报文的Hop Limit值减1后转发给其下游，直至该报文的Hop Limit值减为0，当网络规模很小时，状态刷新报文将在网络中循环传递。因此，为了有效控制刷新报文的传递范围，需要根据网络规模大小配置合适的Hop Limit值。

请在IPv6 PIM-DM域内的所有路由器上进行如下配置。

表1-6 配置状态刷新参数

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入IPv6 PIM视图 | pim ipv6 | -
配置发送状态刷新报文的时间间隔 | state-refresh-interval interval | 可选 缺省情况下，发送状态刷新报文的时间间隔为60秒
配置接收新状态刷新报文的等待时间 | state-refresh-rate-limit interval | 可选 缺省情况下，接收新状态刷新报文的等待时间为30秒
配置状态刷新报文的Hop Limit值 | state-refresh-hoplimit hoplimit-value | 可选 缺省情况下，状态刷新报文的Hop Limit值为255

1.2.6 配置IPv6 PIM-DM定时器

嫁接报文是IPv6 PIM-DM中唯一使用确认机制的报文。在IPv6 PIM-DM域中，下游路由器发出嫁接报文后，如果在指定时间内没有收到来自其上游路由器的嫁接应答报文，则会重发嫁接报文，直到被确认。

表1-7 配置IPv6 PIM-DM定时器

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
配置嫁接报文的重传时间 | pim ipv6 timer graft-retry interval | 可选 缺省情况下，嫁接报文的重传时间为3秒

有关IPv6 PIM-DM其它定时器的相关配置，请参见“1.6.7 配置IPv6 PIM公共定时器”。


1.3 配置IPv6 PIM-SM

1.3.1 IPv6 PIM-SM配置任务简介

表1-8 IPv6 PIM-SM配置任务简介

配置任务 |  | 说明 | 详细配置
使能IPv6 PIM-SM |  | 必选 | 1.3.3
配置RP | 配置静态RP | 三者必选其一 | 1.3.4 1.
 | 配置C-RP |  | 1.3.4 2.
 | 使能嵌入式RP |  | 1.3.4 3.
 | 全局配置C-RP定时器 | 可选 | 1.3.4 4.
配置BSR | 配置C-BSR | 必选 | 1.3.5 1.
 | 配置BSR服务边界 | 可选 | 1.3.5 2.
 | 全局配置C-BSR参数 | 可选 | 1.3.5 3.
 | 配置C-BSR定时器 | 可选 | 1.3.5 4.
 | 关闭自举报文语义分片功能 | 可选 | 1.3.5 5.
配置IPv6管理域 | 使能IPv6管理域机制 | 可选 | 1.3.6 1.
 | 配置IPv6管理域边界 | 可选 | 1.3.6 2.
 | 配置IPv6管理域的C-BSR | 可选 | 1.3.6 3.
配置IPv6组播源注册 |  | 可选 | 1.3.7
配置禁止SPT切换 |  | 可选 | 1.3.8
配置IPv6 PIM公共特性 |  | 可选 | 1.6

1.3.2 配置准备

在配置IPv6 PIM-SM之前，需完成以下任务：

l 使能IPv6转发功能并配置任一IPv6单播路由协议，实现域内网络层互通

在配置IPv6 PIM-SM之前，需准备以下数据：

l 静态RP的IPv6地址及表示其所服务IPv6组范围的IPv6 ACL规则

l C-RP的优先级及表示其所服务IPv6组范围的IPv6 ACL规则

l 合法C-RP的地址范围及表示其所服务IPv6组范围的IPv6 ACL规则

l 发送宣告报文的时间间隔

l C-RP超时时间

l C-BSR的优先级

l 哈希掩码长度

l 表示合法BSR地址范围的IPv6 ACL规则

l 自举时间间隔

l 自举超时时间

l 表示注册报文过滤规则的IPv6 ACL规则

l 注册抑制时间

l 注册探测时间

l 禁止发起SPT切换的IPv6 ACL规则和排序规则

1.3.3 使能IPv6 PIM-SM

在接口上使能了IPv6 PIM-SM后，路由器会定期发送Hello报文以发现IPv6 PIM邻居，并对收到的来自IPv6 PIM邻居的报文进行处理。在部署IPv6 PIM-SM域时，建议在其所有非边界接口上均使能IPv6 PIM-SM。

表1-9 使能IPv6 PIM-SM

操作 | 命令 | 说明
进入系统视图 | system-view | -
使能IPv6组播路由 | multicast ipv6 routing-enable | 必选 缺省情况下，IPv6组播路由处于关闭状态
进入接口视图 | interface interface-type interface-number | -
使能IPv6 PIM-SM | pim ipv6 sm | 必选 缺省情况下，IPv6 PIM-SM处于关闭状态

同一台设备所有接口上所启用的IPv6 PIM模式必须相同。

有关 multicast ipv6 routing-enable 命令的详细介绍，请参见“IP组播命令参考”中的“IPv6组播路由与转发”。

1.3.4 配置RP

RP可以通过手工方式静态配置，也可以通过BSR机制动态选举。对于大型IPv6 PIM网络，配置静态RP将会非常繁琐。所以，通常静态RP是作为动态选举RP机制的备份手段，以提高网络的健壮性，增强组播网络的运营管理能力。

当IPv6 PIM网络中同时运行IPv6 PIM-SM和IPv6双向PIM时，请勿使一个RP同时为IPv6 PIM-SM和IPv6双向PIM工作，否则可能引起IPv6 PIM路由表出错。

1. 配置静态RP

当网络内仅有一个动态RP时，通过手工配置静态RP可以避免因单一节点故障而引起的通信中断，同时也可以避免C-RP与BSR之间频繁的信息交互而占用带宽。

请在IPv6 PIM-SM域内的所有路由器上进行如下配置。

表1-10 配置静态RP

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入IPv6 PIM视图 | pim ipv6 | -
配置服务于IPv6 PIM-SM的静态RP | static-rp ipv6-rp-address [ acl6-number ] [ preferred ] | 必选 缺省情况下，没有配置静态RP

为了让静态RP功能正常发挥作用，必须在所有路由器上指定相同的静态RP地址。

2. 配置C-RP

在PIM-SM域中，可以把有意成为RP的路由器配置为C-RP。BSR通过接收来自C-RP的C-RP信息，或者接收来自其它路由器的自动RP宣告，收集C-RP信息并将其汇总为RP-Set信息，然后在全网内扩散。之后，网络内的其它路由器根据RP-Set信息计算出特定组播组范围所对应的RP。建议在骨干网路由器上配置C-RP。

为了防止C-RP欺骗，需要在BSR上配置合法的C-RP地址范围及其所服务的组播组范围。同时由于每个C-BSR都可能成为BSR，因此必须在IPv6 PIM-SM域内的所有C-BSR上都配置相同的过滤策略。

表1-11 配置C-RP

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入IPv6 PIM视图 | pim ipv6 | -
配置某接口为服务于IPv6 PIM-SM的C-RP | c-rp ipv6-address [ { group-policy acl6-number | scope scope-id } | priority priority | holdtime hold-interval | advertisement-interval adv-interval ] * | 必选 缺省情况下，没有配置C-RP
合法C-RP的地址范围及其所服务的IPv6组播组范围 | crp-policy acl6-number | 可选 缺省情况下，C-RP的地址范围及其所服务的IPv6组播组范围不受任何限制

l 在配置C-RP时，应在C-RP与IPv6 PIM-SM域中的其它设备之间保留较大的通信带宽。

l 一个RP可以为多个IPv6组播组服务，也可以为所有IPv6组播组服务。每个IPv6组播组在任意时刻，只能由唯一的一个RP为其转发数据，而不能由多个RP转发数据。

3. 使能嵌入式RP

嵌入式RP机制可以从IPv6组播地址中直接解析出RP，从而取代静态配置的RP或由BSR机制动态计算出来的RP，DR不再需要预先知道RP的信息，只需对组播报文进行分析即可知道RP的地址。

请在IPv6 PIM-SM域内的所有路由器上进行如下配置。

表1-12 使能嵌入式RP

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入IPv6 PIM视图 | pim ipv6 | -
使能嵌入式RP功能 | embedded-rp [ acl6-number ] | 可选 缺省情况下，默认嵌入式RP地址范围内的IPv6组播组均可以使用嵌入式RP功能

默认的嵌入式RP地址范围为FF7x::/12和FFFx::/12，其中x表示任意合法的scope。有关scope字段的详细介绍，请参见“IP组播配置指导”中的“组播概述”。

4. 全局配置C-RP定时器

为了使BSR能够在IPv6 PIM-SM域内分发RP-Set信息，C-RP必须周期性地向BSR发送宣告报文，BSR从该报文中学习RP-Set信息，并将该信息与自己的IPv6地址一起封装在自举报文中向域中的所有IPv6 PIM路由器进行宣告。

C-RP在其宣告报文中封装一个保持时间，BSR在收到该报文后，从中获得该时间值并启动C-RP超时定时器，如果超时后BSR仍没有收到来自C-RP后续的宣告报文，则认为目前网络中的C-RP失效或不可达。

请在已配置为C-RP的路由器上进行如下配置。

表1-13 全局配置C-RP定时器

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入IPv6 PIM视图 | pim ipv6 | -
配置发送宣告报文的时间间隔 | c-rp advertisement-interval interval | 可选 缺省情况下，发送宣告报文的时间间隔为60秒
配置C-RP超时时间 | c-rp holdtime interval | 可选 缺省情况下，C-RP的超时时间为150秒

有关IPv6 PIM-SM其它定时器的相关配置，请参见“1.6.7 配置IPv6 PIM公共定时器”。

1.3.5 配置BSR

在一个IPv6 PIM-SM域中只能有一个BSR，但需要配置至少一个C-BSR。任意一台路由器都可以被配置为C-BSR。在C-BSR之间通过自动选举产生BSR，BSR负责在IPv6 PIM-SM域中收集并发布RP信息。

1. 配置C-BSR

C-BSR应配置在骨干网的路由器上，在将路由器配置为C-BSR时，必须同时指定一个使能了IPv6 PIM-SM的接口的IPv6地址。C-BSR间的自动选举机制简单描述如下：

l 最初，每个C-BSR都认为自己是本IPv6 PIM-SM域的BSR，并使用接口的IPv6地址作为BSR地址，发送自举报文；

l 当某C-BSR收到其它C-BSR发来的自举报文时，首先比较自己与后者的优先级，优先级较高者获胜；在优先级相同的情况下，再比较自己与后者的BSR地址，拥有较大IPv6地址者获胜。如果后者获胜，则用后者的BSR地址替换自己的BSR地址，并不再认为自己是BSR；否则，保留自己的BSR地址，并继续认为自己是BSR。

通过在路由器上配置合法BSR的地址范围，可以对收到的自举报文按照地址范围进行过滤，从而防止某些恶意主机非法伪装成BSR，以避免合法的BSR被恶意取代。必须在IPv6 PIM-SM域内的所有路由器上进行相同的配置。通常针对以下两类情况实施预防措施：

l 某些恶意主机通过伪造自举报文以欺骗路由器，试图更改RP映射关系。这种攻击通常发生在边缘路由器上，由于BSR处于网络内部，主机在网络外部，因此边缘路由器通过对收到的自举报文进行邻居检查和RPF检查，丢弃不符合要求的报文，就可以避免外部网络用户对内部网络BSR的攻击；

l 网络中某台路由器被攻击者控制，或者有非法接入的路由器时，攻击者可以将这样的路由器配置为C-BSR，并使其在竞争中获胜，从而控制网络中RP信息的发布权。由于在被配置为C-BSR后，路由器会自动向整个网络扩散自举报文，而自举报文是Hop Limit值为1的IPv6组播报文，所以只要其邻居路由器不接收该自举报文，就不会影响整个网络。因此，通过在整个网络的所有路由器上都配置合法BSR的地址范围，从而丢弃合法范围之外的自举报文，就可以防止此类攻击。

以上两种预防措施可以部分地保护网络中BSR的安全。但是如果某台合法的BSR路由器被攻击者控制，还是可能导致问题。

表1-14 配置C-BSR

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入IPv6 PIM视图 | pim ipv6 | -
配置某接口为C-BSR | c-bsr ipv6-address [ hash-length [ priority ] ] | 必选 缺省情况下，没有配置C-BSR
配置合法的BSR地址范围 | bsr-policy acl6-number | 可选 缺省情况下，BSR的地址范围不受任何限制

由于BSR与IPv6 PIM-SM域中的其它设备需要交换大量信息，因此应在C-BSR与IPv6 PIM-SM域中的其它设备之间保留较大的通信带宽。

2. 配置BSR服务边界

BSR作为IPv6 PIM-SM域中的管理核心，负责将收集到的RP-Set信息以自举报文的形式发向IPv6 PIM-SM域中的所有路由器。

BSR的服务边界，即IPv6 PIM-SM域的边界。BSR是针对特定的服务范围而言的，众多的BSR服务边界接口将网络划分成不同的IPv6 PIM-SM域，自举报文无法通过IPv6 PIM-SM域的边界，BSR服务边界之外的路由器也不能参与本IPv6 PIM-SM域内的组播转发。

请在欲配置为BSR服务边界的路由器上进行如下配置。

表1-15 配置BSR服务边界

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
配置BSR的服务边界 | pim ipv6 bsr-boundary | 必选 缺省情况下，没有配置BSR的服务边界

3. 全局配置C-BSR参数

在一个IPv6 PIM-SM域中，从众多C-BSR中选举出唯一的BSR。IPv6 PIM-SM域内的C-RP向BSR发送宣告报文，由BSR汇总为RP-Set，并向本IPv6 PIM-SM域内的所有路由器进行宣告。所有路由器都使用统一的哈希算法，得到特定IPv6组播组所对应RP的地址。

请在已配置为C-BSR的路由器上进行如下配置。

表1-16 全局配置C-BSR参数

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入IPv6 PIM视图 | pim ipv6 | -
配置哈希掩码长度 | c-bsr hash-length hash-length | 可选 缺省情况下，哈希掩码长度为126
配置C-BSR的优先级 | c-bsr priority priority | 可选 缺省情况下，C-BSR的优先级为64

4. 配置C-BSR定时器

当某C-BSR竞选成为BSR后，它会通过自举报文向其所服务的区域以组播方式发送自己的IPv6地址和RP-Set信息。BSR以自举时间间隔周期性地向网络发送自举报文，收到该报文的C-BSR会在自举超时时间内将其保持，此时BSR选举过程暂停；当自举超时时间超时后，C-BSR之间会触发新一轮的BSR选举过程。

请在已配置为C-BSR的路由器上进行如下配置。

表1-17 配置C-BSR定时器

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入IPv6 PIM视图 | pim ipv6 | -
配置自举时间间隔 | c-bsr interval interval | 可选 缺省取值请参见表后的说明
配置自举超时时间 | c-bsr holdtime interval | 可选 缺省取值请参见表后的说明

关于自举时间间隔的取值：

l 如果没有进行手工配置，则其取值由如下公式决定：自举时间间隔＝（自举超时时间－10）÷2。缺省情况下，自举超时时间为130秒，则自举时间间隔的缺省值＝（130－10）÷2＝60（秒）。

l 如果进行了手工配置，则取配置值。

关于自举超时时间的取值：

l 如果没有进行手工配置，则其取值由如下公式决定：自举超时时间＝自举时间间隔×2＋10。缺省情况下，自举时间间隔为60秒，则自举超时时间的缺省值＝60×2＋10＝130（秒）。

l 如果进行了手工配置，则取配置值。

配置时，应保证自举时间间隔小于自举超时时间。

5. 关闭自举报文语义分片功能

BSR周期性地向所在IPv6 PIM-SM域发送自举报文以通告RP-Set信息。当RP-Set信息较少时，自举报文被封装在一个IPv6报文中发送出去；而当RP-Set信息较多时，自举报文的大小可能超过接口的MTU（Maximum Transmission Unit，最大传输单元）值，从而触发其在IP层的分片。在这种情况下，一个IP分片的丢失就会导致整个自举报文都被丢弃。

自举报文语义分片功能可以解决上述问题：当自举报文大于接口MTU时，会被分解为多个自举报文分片（Bootstrap Message Fragment，BSMF）。非BSR收到自举报文分片后，若发现某组范围对应的RP信息都在这一个分片中，便立即更新该组范围对应的RP-Set；若发现某组范围映射的RP信息被分在了多个分片中，则待收齐了这些分片后再更新该组范围对应的RP-Set。这样，由于不同分片所含组范围对应的RP信息不同，因此个别分片的丢失只影响该分片所含组范围对应的RP信息，而不会导致整个自举报文都被丢弃。

自举报文语义分片功能是缺省使能的，但由于不支持该功能的设备会将自举报文分片当作完整的自举报文处理，从而导致其学到的RP-Set信息不完整，因此当IPv6 PIM-SM域中存在此类设备时，请在已配置为C-BSR的路由器上关闭本功能。

表1-18 关闭自举报文语义分片功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入IPv6 PIM视图 | pim ipv6 | -
关闭自举报文语义分片功能 | undo bsm-fragment enable | 必选 缺省情况下，自举报文语义分片功能处于使能状态

通常，BSR根据其BSR接口的MTU值对自举报文进行语义分片；而对由于新学到IPv6 PIM邻居而触发的自举报文发送，则根据发送接口的MTU值进行语义分片。

1.3.6 配置IPv6管理域

在IPv6非管理域机制下，一个IPv6 PIM-SM域中只有唯一的BSR，整个网络都在该BSR的管理范围之内。为了更有针对性地管理，可以将整个IPv6 PIM-SM域划分为多个IPv6管理域：每个IPv6管理域中各维护一个BSR，服务于特定Scope值的IPv6组播组；IPv6 Global域则可视为一种特殊的IPv6管理域，其维护的BSR为Scope值为14的IPv6组播组提供服务。

1. 使能IPv6管理域机制

在配置IPv6管理域各项功能之前，必须先使能IPv6管理域机制。

请在IPv6 PIM-SM域内的所有路由器上进行如下配置。

表1-19 使能IPv6管理域机制

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入IPv6 PIM视图 | pim ipv6 | -
使能IPv6管理域机制 | c-bsr admin-scope | 必选 缺省情况下，IPv6管理域机制处于关闭状态

2. 配置IPv6管理域边界

在IPv6管理域机制中，各IPv6管理域的边界由ZBR构成，每个IPv6管理域各维护一个BSR，服务于特定Scope值的IPv6组播组，属于此范围的IPv6组播协议报文（如断言报文、BSR自举报文等）无法通过IPv6管理域边界。

请在欲配置为ZBR的路由器上进行如下配置。

表1-20 配置IPv6管理域边界

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
配置IPv6组播转发边界 | multicast ipv6 boundary { ipv6-group-address prefix-length | scope { scope-id | admin-local | global | organization-local | site-local } } | 必选 缺省情况下，没有配置IPv6组播转发边界

有关 multicast ipv6 boundary 命令的详细介绍，请参见“IP组播命令参考”中的“IPv6组播路由与转发”。

3. 配置IPv6管理域的C-BSR

在应用了IPv6管理域机制的网络中，从众多C-BSR中选举出针对不同Scope值的BSR。网络内的C-RP只向对应的BSR发送宣告报文，由BSR汇总为RP-Set，并向其所服务IPv6管理域内的所有路由器进行宣告。所有路由器都使用统一的哈希算法，得到特定IPv6组播组所对应RP的地址。

请在欲配置为IPv6管理域C-BSR的路由器上进行如下配置。

表1-21 配置IPv6管理域的C-BSR

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入IPv6 PIM视图 | pim ipv6 | -
配置IPv6管理域的C-BSR | c-bsr scope { scope-id | admin-local | global | organization-local | site-local } [ hash-length hash-length | priority priority ] * | 必选 缺省情况下，没有配置IPv6管理域的C-BSR

哈希掩码长度和C-BSR的优先级可以在全局和IPv6管理域这两种范围内进行配置：

l 如果在IPv6管理域下进行了配置，则取其配置值；

l 如果未在IPv6管理域下进行配置，则取相应的全局值。

有关全局C-BSR参数的相关配置，请参见“ 1.3.5 3. 全局配置C-BSR参数 ”。

1.3.7 配置IPv6组播源注册

在IPv6 PIM-SM域内，IPv6组播源侧DR向RP发送注册报文，而这些注册报文拥有不同的IPv6组播源或IPv6组播地址。为了让RP服务于特定的IPv6组播组，可以对注册报文进行过滤。如果某个（S，G）表项被过滤规则拒绝，或者过滤规则中没有定义对它的操作，RP都会向DR发送注册停止报文，以停止该IPv6组播数据的注册过程。

出于对注册报文在传递过程中完整性的考虑，可以配置根据整个报文来计算校验和。但为了减少往注册报文中封装数据报文的工作量并考虑到互通性，一般情况下不建议配置根据注册报文的全部内容来计算校验和的方式。

当接收者不再通过RP接收发往某IPv6组播组的数据（即RP不再服务于该IPv6组播组），或RP开始接收IPv6组播源沿着SPT发来的IPv6组播数据时，RP将向IPv6组播源侧DR发送注册停止报文，DR收到该报文后将停止发送封装有IPv6组播数据的注册报文并启动注册停止定时器（Register-Stop Timer）。在注册停止定时器超时之前，DR会向RP发送一个空注册报文（Null-Register Message，即不封装IPv6组播数据的注册报文）：如果DR在注册探测时间（Register_Probe_Time）内收到了来自RP的注册停止报文，DR将刷新其注册停止定时器；否则，DR将重新开始发送封装有IPv6组播数据的注册报文。

注册停止定时器的超时时间是一个随机值，由其它两个时间值决定：注册抑制时间（Register_Suppression_Time）和注册探测时间。其具体取值范围如下：（0.5×注册抑制时间，1.5×注册抑制时间）－注册探测时间。

请在所有已配置为C-RP的路由器上配置注册报文的过滤规则和根据注册报文的全部内容来计算校验和；请在所有可能成为IPv6组播源侧DR的路由器上配置注册抑制时间和注册探测时间。

表1-22 配置IPv6组播源注册

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入IPv6 PIM视图 | pim ipv6 | -
配置注册报文的过滤规则 | register-policy acl6-number | 可选 缺省情况下，没有配置注册报文的过滤规则
配置根据注册报文的全部内容来计算校验和 | register-whole-checksum | 可选 缺省情况下，仅根据注册报文头来计算校验和
配置注册抑制时间 | register-suppression-timeout interval | 可选 缺省情况下，注册抑制时间为60秒
配置注册探测时间 | probe-interval interval | 可选 缺省情况下，注册探测时间为5秒

1.3.8 配置禁止SPT切换

缺省情况下，当本系列交换机作为RP或接收者侧DR时，设备会在收到第一个IPv6组播数据包后立即发起SPT切换，可以通过下面的配置关闭从RPT到SPT的切换。

表1-23 配置禁止SPT切换

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入IPv6 PIM视图 | pim ipv6 | -
配置禁止发起SPT切换的条件 | spt-switch-threshold infinity [ group-policy acl6-number [ order order-value ] ] | 可选 缺省情况下，设备收到第一个IPv6组播数据包后便立即向SPT切换

对于本系列交换机来说，一旦建立了IPv6组播转发表项，即使有注册出接口，后续的IPv6组播数据报文也不会被封装成注册报文进行转发。所以，在可能成为RP的交换机（即静态RP或C-RP等）上，不要配置永不发起SPT切换，以免导致转发失败。


1.4 配置IPv6双向PIM

1.4.1 IPv6双向PIM配置任务简介

表1-24 IPv6双向PIM配置任务简介

配置任务 |  | 说明 | 详细配置
使能IPv6 PIM-SM |  | 必选 | 1.4.3
使能IPv6双向PIM |  | 必选 | 1.4.4
配置RP | 配置静态RP | 三者必选其一 | 1.4.5 1.
 | 配置C-RP |  | 1.4.5 2.
 | 使能嵌入式RP |  | 1.4.5 3.
 | 全局配置C-RP定时器 | 可选 | 1.4.5 4.
配置BSR | 配置C-BSR | 必选 | 1.4.6 1.
 | 配置BSR服务边界 | 可选 | 1.4.6 2.
 | 全局配置C-BSR参数 | 可选 | 1.4.6 3.
 | 配置C-BSR定时器 | 可选 | 1.4.6 4.
 | 关闭自举报文语义分片功能 | 可选 | 1.4.6 5.
配置IPv6管理域 | 使能IPv6管理域机制 | 可选 | 1.4.7 1.
 | 配置IPv6管理域边界 | 可选 | 1.4.7 2.
 | 配置IPv6管理域的C-BSR | 可选 | 1.4.7 3.
配置IPv6 PIM公共特性 |  | 可选 | 1.6

1.4.2 配置准备

在配置IPv6双向PIM之前，需完成以下任务：

l 使能IPv6转发功能并配置任一IPv6单播路由协议，实现域内网络层互通

在配置IPv6双向PIM之前，需准备以下数据：

l 静态RP的IPv6地址及表示其所服务IPv6组范围的IPv6 ACL规则

l C-RP的优先级及表示其所服务IPv6组范围的IPv6 ACL规则

l 合法C-RP的地址范围及表示其所服务IPv6组范围的IPv6 ACL规则

l 发送宣告报文的时间间隔

l C-RP超时时间

l C-BSR的优先级

l 哈希掩码长度

l 表示合法BSR地址范围的IPv6 ACL规则

l 自举时间间隔

l 自举超时时间

1.4.3 使能IPv6 PIM-SM

由于IPv6双向PIM是在IPv6 PIM-SM的基础上实现的，因此在使能IPv6双向PIM之前须先使能IPv6 PIM-SM。在部署IPv6双向PIM域时，建议在其所有非边界接口上均使能IPv6 PIM-SM。

表1-25 使能IPv6 PIM-SM

操作 | 命令 | 说明
进入系统视图 | system-view | -
使能IPv6组播路由 | multicast ipv6 routing-enable | 必选 缺省情况下，IPv6组播路由处于关闭状态
进入接口视图 | interface interface-type interface-number | -
使能IPv6 PIM-SM | pim ipv6 sm | 必选 缺省情况下，IPv6 PIM-SM处于关闭状态

同一台设备所有接口上所启用的IPv6 PIM模式必须相同。

有关 multicast ipv6 routing-enable 命令的详细介绍，请参见“IP组播命令参考”中的“IPv6组播路由与转发”。

1.4.4 使能IPv6双向PIM

请在IPv6双向PIM域内的所有路由器上进行如下配置。

表1-26 使能IPv6双向PIM

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入IPv6 PIM视图 | pim ipv6 | -
使能IPv6双向PIM | bidir-pim enable | 必选 缺省情况下，IPv6双向PIM处于关闭状态

1.4.5 配置RP

RP可以通过手工方式静态配置，也可以通过BSR机制动态选举。对于大型IPv6 PIM网络，配置静态RP将会非常繁琐。所以，通常静态RP是作为动态选举RP机制的备份手段，以提高网络的健壮性，增强组播网络的运营管理能力。

当IPv6 PIM网络中同时运行IPv6 PIM-SM和IPv6双向PIM时，请勿使一个RP同时为IPv6 PIM-SM和IPv6双向PIM工作，否则可能引起IPv6 PIM路由表出错。

1. 配置静态RP

当网络内仅有一个动态RP时，通过手工配置静态RP可以避免因单一节点故障而引起的通信中断，同时也可以避免C-RP与BSR之间频繁的信息交互而占用带宽。

请在IPv6双向PIM域内的所有路由器上进行如下配置。

表1-27 配置静态RP

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入IPv6 PIM视图 | pim ipv6 | -
配置服务于IPv6双向PIM的静态RP | static-rp ipv6-rp-address [ acl6-number ] [ preferred ] bidir | 必选 缺省情况下，没有配置静态RP

为了让静态RP功能正常发挥作用，必须在所有路由器上指定相同的静态RP地址。

IPv6双向PIM允许将静态RP的IPv6地址指定为一个实际不存在的IPv6地址。譬如，一条链路两端接口的IPv6地址分别为1001::1/64和1001::2/64，可以将静态RP的IPv6地址指定为同网段但实际不存在的一个地址，如1001::100/64，该链路就成为了RPL。

2. 配置C-RP

在IPv6双向PIM域中，可以把有意成为RP的路由器配置为C-RP。BSR通过接收来自C-RP的C-RP信息，或者接收来自其它路由器的自动RP宣告，收集C-RP信息并将其汇总为RP-Set信息，然后在全网内扩散。之后，网络内的其它路由器根据RP-Set信息计算出特定组播组范围所对应的RP。建议在骨干网路由器上配置C-RP。

为了防止C-RP欺骗，需要在BSR上配置合法的C-RP地址范围及其所服务的组播组范围。同时由于每个C-BSR都可能成为BSR，因此必须在IPv6双向PIM域内的所有C-BSR上都配置相同的过滤策略。

表1-28 配置C-RP

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入IPv6 PIM视图 | pim ipv6 | -
配置某接口为服务于IPv6双向PIM的C-RP | c-rp ipv6-address [ { group-policy acl6-number | scope scope-id } | priority priority | holdtime hold-interval | advertisement-interval adv-interval ] * bidir | 必选 缺省情况下，没有配置C-RP

l 在配置C-RP时，应在C-RP与IPv6双向PIM域中的其它设备之间保留较大的通信带宽。

l 一个RP可以为多个IPv6组播组服务，也可以为所有IPv6组播组服务。每个IPv6组播组在任意时刻，只能由唯一的一个RP为其转发数据，而不能由多个RP转发数据。

3. 使能嵌入式RP

嵌入式RP机制可以从IPv6组播地址中直接解析出RP，从而取代静态配置的RP或由BSR机制动态计算出来的RP，DR不再需要预先知道RP的信息，只需对组播报文进行分析即可知道RP的地址。

请在IPv6双向PIM域内的所有路由器上进行如下配置。

表1-29 使能嵌入式RP

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入IPv6 PIM视图 | pim ipv6 | -
使能嵌入式RP功能 | embedded-rp [ acl6-number ] | 可选 缺省情况下，默认嵌入式RP地址范围内的IPv6组播组均可以使用嵌入式RP功能

默认的嵌入式RP地址范围为FF7x::/12和FFFx::/12，其中x表示任意合法的scope。有关scope字段的详细介绍，请参见“IP组播配置指导”中的“组播概述”。

4. 全局配置C-RP定时器

为了使BSR能够在IPv6双向PIM域内分发RP-Set信息，C-RP必须周期性地向BSR发送宣告报文，BSR从该报文中学习RP-Set信息，并将该信息与自己的IPv6地址一起封装在自举报文中向域中的所有IPv6 PIM路由器进行宣告。

C-RP在其宣告报文中封装一个保持时间，BSR在收到该报文后，从中获得该时间值并启动C-RP超时定时器，如果超时后BSR仍没有收到来自C-RP后续的宣告报文，则认为目前网络中的C-RP失效或不可达。

请在已配置为C-RP的路由器上进行如下配置。

表1-30 全局配置C-RP定时器

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入IPv6 PIM视图 | pim ipv6 | -
配置发送宣告报文的时间间隔 | c-rp advertisement-interval interval | 可选 缺省情况下，发送宣告报文的时间间隔为60秒
配置C-RP超时时间 | c-rp holdtime interval | 可选 缺省情况下，C-RP的超时时间为150秒

有关IPv6双向PIM其它定时器的相关配置，请参见“ 1.6.7 配置IPv6 PIM公共定时器 ”。

1.4.6 配置BSR

在一个IPv6双向PIM域中只能有一个BSR，但需要配置至少一个C-BSR。任意一台路由器都可以被配置为C-BSR。在C-BSR之间通过自动选举产生BSR，BSR负责在IPv6双向PIM域中收集并发布RP信息。

1. 配置C-BSR

C-BSR应配置在骨干网的路由器上，在将路由器配置为C-BSR时，必须同时指定一个使能了IPv6 PIM-SM的接口的IPv6地址。C-BSR间的自动选举机制简单描述如下：

l 最初，每个C-BSR都认为自己是本IPv6双向PIM域的BSR，并使用接口的IPv6地址作为BSR地址，发送自举报文；

l 当某C-BSR收到其它C-BSR发来的自举报文时，首先比较自己与后者的优先级，优先级较高者获胜；在优先级相同的情况下，再比较自己与后者的BSR地址，拥有较大IPv6地址者获胜。如果后者获胜，则用后者的BSR地址替换自己的BSR地址，并不再认为自己是BSR；否则，保留自己的BSR地址，并继续认为自己是BSR。

通过在路由器上配置合法BSR的地址范围，可以对收到的自举报文按照地址范围进行过滤，从而防止某些恶意主机非法伪装成BSR，以避免合法的BSR被恶意取代。必须在IPv6双向PIM域内的所有路由器上进行相同的配置。通常针对以下两类情况实施预防措施：

l 某些恶意主机通过伪造自举报文以欺骗路由器，试图更改RP映射关系。这种攻击通常发生在边缘路由器上，由于BSR处于网络内部，主机在网络外部，因此边缘路由器通过对收到的自举报文进行邻居检查和RPF检查，丢弃不符合要求的报文，就可以避免外部网络用户对内部网络BSR的攻击；

l 网络中某台路由器被攻击者控制，或者有非法接入的路由器时，攻击者可以将这样的路由器配置为C-BSR，并使其在竞争中获胜，从而控制网络中RP信息的发布权。由于在被配置为C-BSR后，路由器会自动向整个网络扩散自举报文，而自举报文是Hop Limit值为1的IPv6组播报文，所以只要其邻居路由器不接收该自举报文，就不会影响整个网络。因此，通过在整个网络的所有路由器上都配置合法BSR的地址范围，从而丢弃合法范围之外的自举报文，就可以防止此类攻击。

以上两种预防措施可以部分地保护网络中BSR的安全。但是如果某台合法的BSR路由器被攻击者控制，还是可能导致问题。

表1-31 配置C-BSR

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入IPv6 PIM视图 | pim ipv6 | -
配置某接口为C-BSR | c-bsr ipv6-address [ hash-length [ priority ] ] | 必选 缺省情况下，没有配置C-BSR
配置合法的BSR地址范围 | bsr-policy acl6-number | 可选 缺省情况下，BSR的地址范围不受任何限制

由于BSR与IPv6双向PIM域中的其它设备需要交换大量信息，因此应在C-BSR与IPv6双向PIM域中的其它设备之间保留较大的通信带宽。

2. 配置BSR服务边界

BSR作为IPv6双向PIM域中的管理核心，负责将收集到的RP-Set信息以自举报文的形式发向IPv6双向PIM域中的所有路由器。

BSR的服务边界，即IPv6双向PIM域的边界。BSR是针对特定的服务范围而言的，众多的BSR服务边界接口将网络划分成不同的IPv6双向PIM域，自举报文无法通过IPv6双向PIM域的边界，BSR服务边界之外的路由器也不能参与本IPv6双向PIM域内的组播转发。

请在欲配置为BSR服务边界的路由器上进行如下配置。

表1-32 配置BSR服务边界

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
配置BSR的服务边界 | pim ipv6 bsr-boundary | 必选 缺省情况下，没有配置BSR的服务边界

3. 全局配置C-BSR参数

在一个IPv6双向PIM域中，从众多C-BSR中选举出唯一的BSR。IPv6双向PIM域内的C-RP向BSR发送宣告报文，由BSR汇总为RP-Set，并向本IPv6双向PIM域内的所有路由器进行宣告。所有路由器都使用统一的哈希算法，得到特定IPv6组播组所对应RP的地址。

请在已配置为C-BSR的路由器上进行如下配置。

表1-33 全局配置C-BSR参数

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入IPv6 PIM视图 | pim ipv6 | -
配置哈希掩码长度 | c-bsr hash-length hash-length | 可选 缺省情况下，哈希掩码长度为126
配置C-BSR的优先级 | c-bsr priority priority | 可选 缺省情况下，C-BSR的优先级为64

4. 配置C-BSR定时器

当某C-BSR竞选成为BSR后，它会通过自举报文向其所服务的区域以组播方式发送自己的IPv6地址和RP-Set信息。BSR以自举时间间隔周期性地向网络发送自举报文，收到该报文的C-BSR会在自举超时时间内将其保持，此时BSR选举过程暂停；当自举超时时间超时后，C-BSR之间会触发新一轮的BSR选举过程。

请在已配置为C-BSR的路由器上进行如下配置。

表1-34 配置C-BSR定时器

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入IPv6 PIM视图 | pim ipv6 | -
配置自举时间间隔 | c-bsr interval interval | 可选 缺省取值请参见表后的说明
配置自举超时时间 | c-bsr holdtime interval | 可选 缺省取值请参见表后的说明

关于自举时间间隔的取值：

l 如果没有进行手工配置，则其取值由如下公式决定：自举时间间隔＝（自举超时时间－10）÷2。缺省情况下，自举超时时间为130秒，则自举时间间隔的缺省值＝（130－10）÷2＝60（秒）。

l 如果进行了手工配置，则取配置值。

关于自举超时时间的取值：

l 如果没有进行手工配置，则其取值由如下公式决定：自举超时时间＝自举时间间隔×2＋10。缺省情况下，自举时间间隔为60秒，则自举超时时间的缺省值＝60×2＋10＝130（秒）。

l 如果进行了手工配置，则取配置值。

配置时，应保证自举时间间隔小于自举超时时间。

5. 关闭自举报文语义分片功能

BSR周期性地向所在IPv6双向PIM域发送自举报文以通告RP-Set信息。当RP-Set信息较少时，自举报文被封装在一个IPv6报文中发送出去；而当RP-Set信息较多时，自举报文的大小可能超过接口的MTU（Maximum Transmission Unit，最大传输单元）值，从而触发其在IP层的分片。在这种情况下，一个IP分片的丢失就会导致整个自举报文都被丢弃。

自举报文语义分片功能可以解决上述问题：当自举报文大于接口MTU时，会被分解为多个自举报文分片（Bootstrap Message Fragment，BSMF）。非BSR收到自举报文分片后，若发现某组范围对应的RP信息都在这一个分片中，便立即更新该组范围对应的RP-Set；若发现某组范围映射的RP信息被分在了多个分片中，则待收齐了这些分片后再更新该组范围对应的RP-Set。这样，由于不同分片所含组范围对应的RP信息不同，因此个别分片的丢失只影响该分片所含组范围对应的RP信息，而不会导致整个自举报文都被丢弃。

自举报文语义分片功能是缺省使能的，但由于不支持该功能的设备会将自举报文分片当作完整的自举报文处理，从而导致其学到的RP-Set信息不完整，因此当IPv6双向PIM域中存在此类设备时，请在已配置为C-BSR的路由器上关闭本功能。

表1-35 关闭自举报文语义分片功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入IPv6 PIM视图 | pim ipv6 | -
关闭自举报文语义分片功能 | undo bsm-fragment enable | 必选 缺省情况下，自举报文语义分片功能处于使能状态

通常，BSR根据其BSR接口的MTU值对自举报文进行语义分片；而对由于新学到IPv6 PIM邻居而触发的自举报文发送，则根据发送接口的MTU值进行语义分片。

1.4.7 配置IPv6管理域

在IPv6非管理域机制下，一个IPv6双向PIM域中只有唯一的BSR，整个网络都在该BSR的管理范围之内。为了更有针对性地管理，可以将整个IPv6双向PIM域划分为多个IPv6管理域：每个IPv6管理域中各维护一个BSR，服务于特定Scope值的IPv6组播组；IPv6 Global域则可视为一种特殊的IPv6管理域，其维护的BSR为Scope值为14的IPv6组播组提供服务。

1. 使能IPv6管理域机制

在配置IPv6管理域各项功能之前，必须先使能IPv6管理域机制。

请在IPv6双向PIM域内的所有路由器上进行如下配置。

表1-36 使能IPv6管理域机制

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入IPv6 PIM视图 | pim ipv6 | -
使能IPv6管理域机制 | c-bsr admin-scope | 必选 缺省情况下，IPv6管理域机制处于关闭状态

2. 配置IPv6管理域边界

在IPv6管理域机制中，各IPv6管理域的边界由ZBR构成，每个IPv6管理域各维护一个BSR，服务于特定Scope值的IPv6组播组，属于此范围的IPv6组播协议报文（如断言报文、BSR自举报文等）无法通过IPv6管理域边界。

请在欲配置为ZBR的路由器上进行如下配置。

表1-37 配置IPv6管理域边界

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
配置IPv6组播转发边界 | multicast ipv6 boundary { ipv6-group-address prefix-length | scope { scope-id | admin-local | global | organization-local | site-local } } | 必选 缺省情况下，没有配置IPv6组播转发边界

有关 multicast ipv6 boundary 命令的详细介绍，请参见“IP组播命令参考”中的“IPv6组播路由与转发”。

3. 配置IPv6管理域的C-BSR

在应用了IPv6管理域机制的网络中，从众多C-BSR中选举出针对不同Scope值的BSR。网络内的C-RP只向对应的BSR发送宣告报文，由BSR汇总为RP-Set，并向其所服务IPv6管理域内的所有路由器进行宣告。所有路由器都使用统一的哈希算法，得到特定IPv6组播组所对应RP的地址。

请在欲配置为IPv6管理域C-BSR的路由器上进行如下配置。

表1-38 配置IPv6管理域的C-BSR

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入IPv6 PIM视图 | pim ipv6 | -
配置IPv6管理域的C-BSR | c-bsr scope { scope-id | admin-local | global | organization-local | site-local } [ hash-length hash-length | priority priority ] * | 必选 缺省情况下，没有配置IPv6管理域的C-BSR

哈希掩码长度和C-BSR的优先级可以在全局和IPv6管理域这两种范围内进行配置：

l 如果在IPv6管理域下进行了配置，则取其配置值；

l 如果未在IPv6管理域下进行配置，则取相应的全局值。

有关全局C-BSR参数的相关配置，请参见“ 1.4.6 3. 全局配置C-BSR参数 ”。


1.5 配置IPv6 PIM-SSM

IPv6 PIM-SSM模型需要MLDv2的支持，因此应确保连接有接收者的IPv6 PIM路由器上使能了MLDv2。

1.5.1 IPv6 PIM-SSM配置任务简介

表1-39 IPv6 PIM-SSM配置任务简介

配置任务 | 说明 | 详细配置
使能IPv6 PIM-SM | 必选 | 1.5.3
配置IPv6 SSM组播组范围 | 可选 | 1.5.4
配置IPv6 PIM公共特性 | 可选 | 1.6

1.5.2 配置准备

在配置IPv6 PIM-SSM之前，需完成以下任务：

l 使能IPv6转发功能并配置任一IPv6单播路由协议，实现域内网络层互通

在配置IPv6 PIM-SSM之前，需准备以下数据：

l IPv6 SSM组播组范围

1.5.3 使能IPv6 PIM-SM

由于IPv6 PIM-SSM是通过IPv6 PIM-SM的部分子集功能实现的，因此在配置IPv6 PIM-SSM之前须先使能IPv6 PIM-SM。在部署IPv6 PIM-SSM域时，建议在其所有非边界接口上均使能IPv6 PIM-SM。

表1-40 使能IPv6 PIM-SM

操作 | 命令 | 说明
进入系统视图 | system-view | -
使能IPv6组播路由 | multicast ipv6 routing-enable | 必选 缺省情况下，IPv6组播路由处于关闭状态
进入接口视图 | interface interface-type interface-number | -
使能IPv6 PIM-SM | pim ipv6 sm | 必选 缺省情况下，IPv6 PIM-SM处于关闭状态

同一台设备所有接口上所启用的IPv6 PIM模式必须相同。

有关 multicast ipv6 routing-enable 命令的详细介绍，请参见“IP组播命令参考”中的“IPv6组播路由与转发”。

1.5.4 配置IPv6 SSM组播组范围

在把来自IPv6组播源的信息传递给接收者的过程中，是采用IPv6 PIM-SSM模型还是IPv6 PIM-SM模型，这取决于接收者订阅通道（S，G）中的IPv6组播组是否在IPv6 SSM组播组范围之内，所有使能了IPv6 PIM-SM的接口将会认为属于该范围内的IPv6组播组采用了IPv6 SSM模型。

请在IPv6 PIM-SSM域内的所有路由器上进行如下配置。

表1-41 配置IPv6 SSM组播组范围

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入IPv6 PIM视图 | pim ipv6 | -
配置IPv6 SSM组播组的范围 | ssm-policy acl6-number | 可选 缺省情况下，IPv6 SSM组播组的范围为FF3x::/32，其中x表示任意合法的scope

l 应确保域内所有路由器上配置的IPv6 SSM组播组地址范围都一致，否则组播信息将无法通过IPv6 SSM模型进行传输。

l 如果某IPv6组播组属于IPv6 SSM组播组范围，但该组成员使用MLDv1发送加入报文，则设备不会触发（*，G）加入报文。


1.6 配置IPv6 PIM公共特性

对于本节中那些既可在IPv6 PIM视图、又可在接口视图下进行配置的功能或参数来说：

l 在IPv6 PIM视图下所作的配置对所有接口生效，在接口视图下所作的配置仅对当前接口生效；

l 如果在这两个视图下对某功能或参数均进行了配置，则不论配置先后，接口视图下的配置将被优先采用。

1.6.1 IPv6 PIM公共特性配置任务简介

表1-42 IPv6 PIM公共特性配置任务简介

配置任务 | 说明 | 详细配置
配置IPv6组播数据过滤器 | 可选 | 1.6.3
配置Hello报文过滤器 | 可选 | 1.6.4
配置Hello报文选项 | 可选 | 1.6.5
配置剪枝延迟时间 | 可选 | 1.6.6
配置IPv6 PIM公共定时器 | 可选 | 1.6.7
配置加入/剪枝报文规格 | 可选 | 1.6.8
配置IPv6 PIM与BFD联动 | 可选 | 1.6.9

1.6.2 配置准备

在配置IPv6 PIM公共特性之前，需完成以下任务：

l 使能IPv6转发功能并配置任一IPv6单播路由协议，实现域内网络层互通

l 配置IPv6 PIM-DM（或IPv6 PIM-SM、IPv6 PIM-SSM）

在配置IPv6 PIM公共特性之前，需准备以下数据：

l 表示IPv6组播数据过滤规则的IPv6 ACL规则

l 表示合法Hello报文的源地址范围的IPv6 ACL规则

l 竞选DR的优先级（全局值/接口值）

l 保持IPv6 PIM邻居可达状态的时间（全局值/接口值）

l 发送剪枝报文的延迟时间（全局值/接口值）

l 剪枝否决时间（全局值/接口值）

l 剪枝延迟时间

l 发送Hello报文的时间间隔（全局值/接口值）

l 发送Hello报文的最大延迟时间（接口值）

l 保持断言状态的时间（全局值/接口值）

l 发送加入/剪枝报文的时间间隔（全局值/接口值）

l 保持加入/剪枝状态的时间（全局值/接口值）

l IPv6组播源生存时间

l 加入/剪枝报文的最大长度

l 加入/剪枝报文中（S，G）表项的最大数量

1.6.3 配置IPv6组播数据过滤器

无论在IPv6 PIM-DM还是IPv6 PIM-SM域内，各路由器都可以对流经自己的IPv6组播数据进行检查，通过比较是否符合过滤规则，从而决定是否继续转发IPv6组播数据。也就是说IPv6 PIM域内的路由器能够成为IPv6组播数据的过滤器。过滤器的存在一方面有助于实现信息流量控制，另一方面可以在安全性方面限定下游接收者能够获得的信息。

表1-43 配置IPv6组播数据过滤器

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入IPv6 PIM视图 | pim ipv6 | -
配置IPv6组播数据过滤器 | source-policy acl6-number | 必选 缺省情况下，没有配置IPv6组播数据过滤器

l 通常，过滤器的位置离IPv6组播源距离越近，过滤影响越明显。

l 过滤器不仅过滤独立的IPv6组播数据，还过滤封装在注册报文中的IPv6组播数据。

1.6.4 配置Hello报文过滤器

随着IPv6 PIM协议的推广和应用，对其安全性的要求也越来越高。建立正确的IPv6 PIM邻居是IPv6 PIM协议安全应用的前提。如果在接口上指定了合法Hello报文的源地址范围，便能够保证IPv6 PIM邻居的正确建立，从而有效防止各种IPv6 PIM协议报文攻击，提高设备对IPv6 PIM协议报文处理的安全性。

表1-44 配置Hello报文过滤器

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
配置合法Hello报文的源地址范围 | pim ipv6 neighbor-policy acl6-number | 必选 缺省情况下，Hello报文的源地址范围不受任何限制

当Hello报文过滤器的配置生效后，对于之前已建立的IPv6 PIM邻居，若由于其Hello报文被过滤而导致无法收到后续的Hello报文，将会在老化超时后被自动删除

1.6.5 配置Hello报文选项

无论在IPv6 PIM-DM域还是在IPv6 PIM-SM域内，各路由器之间发送的Hello报文都包含很多可供配置的选项，对各选项的介绍如下：

l DR_Priority（仅用于IPv6 PIM-SM）：表示竞选DR的优先级，优先级高的设备被选举为DR。可以在与IPv6组播源或接收者直连的共享网络中的所有路由器上都配置此参数。

l Holdtime：表示保持IPv6 PIM邻居可达状态的时间，若超时后仍没有收到Hello报文，则认为IPv6 PIM邻居失效或不可达。

l LAN_Prune_Delay：表示在共享网络上传递剪枝报文的延迟时间，该选项由三部分组成：LAN-delay（发送剪枝报文的延迟时间）、Override-interval（剪枝否决时间）和禁止加入报文抑制能力。当共享网段内各IPv6 PIM路由器的LAN-delay或Override-interval不同时，取其中最大的值；当要禁止加入报文抑制能力时，须在共享网段内的所有IPv6 PIM路由器上都禁止该能力。

LAN-delay表示路由器从收到下游路由器发来的剪枝报文到继续向上游路由器发送剪枝报文的延迟时间，Override-interval则表示允许下游路由器否决剪枝动作的时间。路由器在收到下游路由器发来的剪枝报文后并不立即执行剪枝动作，而是仍将当前的转发状态保持LAN-delay＋Override-interval时间。如果下游路由器需要继续接收IPv6组播数据，则必须在Override-interval时间内向上游路由器发送加入报文以否决这个剪枝动作，这就称为剪枝否决；如果Override-interval时间超时后未收到任何加入报文，上游路由器就会在LAN-delay＋Override-interval时间超时后执行剪枝动作。

IPv6 PIM路由器发送Hello报文时，会生成一个随机数Generation ID并携带在该报文中。一台IPv6 PIM路由器的Generation ID一般不会变化，除非该路由器的状态发生了改变（如接口刚使能了IPv6 PIM或设备进行了重启），此时，当其开始或重新开始发送Hello报文时，会生成一个新的Generation ID。这样，如果IPv6 PIM路由器发现其上游邻居发来的Hello报文中Generation ID发生了改变，就会认为该邻居的状态已经丢失或其上游邻居已经改变，从而触发发送加入报文以进行状态刷新。

在禁止加入报文抑制能力（即使能邻居跟踪）时，应在共享网段的所有IPv6 PIM路由器上都禁止该能力，否则上游路由器无法跟踪每台下游路由器的加入报文。

1. 全局配置Hello报文选项

表1-45 全局配置Hello报文选项

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入IPv6 PIM视图 | pim ipv6 | -
配置竞选DR的优先级 | hello-option dr-priority priority | 可选 缺省情况下，竞选DR的优先级为1
配置保持IPv6 PIM邻居可达状态的时间 | hello-option holdtime interval | 可选 缺省情况下，保持IPv6 PIM邻居可达状态的时间为105秒
配置发送剪枝报文的延迟时间 | hello-option lan-delay interval | 可选 缺省情况下，发送剪枝报文的延迟时间为500毫秒
配置剪枝否决时间 | hello-option override-interval interval | 可选 缺省情况下，剪枝否决时间为2500毫秒
禁止加入报文抑制能力 | hello-option neighbor-tracking | 必选 缺省情况下，加入报文抑制能力处于使能状态

2. 在接口上配置Hello报文选项

表1-46 在接口上配置Hello报文选项

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
配置竞选DR的优先级 | pim ipv6 hello-option dr-priority priority | 可选 缺省情况下，竞选DR的优先级为1
配置保持IPv6 PIM邻居可达状态的时间 | pim ipv6 hello-option holdtime interval | 可选 缺省情况下，保持IPv6 PIM邻居可达状态的时间为105秒
配置发送剪枝报文的延迟时间 | pim ipv6 hello-option lan-delay interval | 可选 缺省情况下，发送剪枝报文的延迟时间为500毫秒
配置剪枝否决时间 | pim ipv6 hello-option override-interval interval | 可选 缺省情况下，剪枝否决时间为2500毫秒
禁止加入报文抑制能力 | pim ipv6 hello-option neighbor-tracking | 必选 缺省情况下，加入报文抑制能力处于使能状态
配置不接受无Generation ID的Hello报文 | pim ipv6 require-genid | 必选 缺省情况下，接受无Generation ID的Hello报文

1.6.6 配置剪枝延迟时间

剪枝延迟时间（Prune Delay）的作用是使共享网段中的上游路由器在收到下游路由器发来的剪枝报文后不会立即执行剪枝动作，而将当前的转发状态继续保持Prune Delay时间：如果在该时间内收到了下游路由器发来的加入报文，则否决这个剪枝动作；否则，便执行这个执行剪枝动作。

表1-47 配置剪枝延迟时间

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入IPv6 PIM视图 | pim ipv6 | -
配置剪枝延迟时间 | prune delay interval | 可选 缺省情况下，剪枝延迟时间等于剪枝未决时间（Prune Pending Timer，缺省为3秒）

1.6.7 配置IPv6 PIM公共定时器

IPv6 PIM路由器通过周期性地发送Hello报文，以发现IPv6 PIM邻居，并维护各路由器之间的IPv6 PIM邻居关系。

为了避免多个IPv6 PIM路由器同时发送Hello报文而导致冲突，当IPv6 PIM路由器在收到Hello报文时，将延迟一段时间后再发送Hello报文，该时间值为小于“触发Hello报文的最大延迟时间”的一个随机值。

IPv6 PIM路由器通过周期性地向其上游路由器发送加入/剪枝报文以更新状态，在该报文中携带有保持时间，上游路由器为被剪枝的下游接口设置保持加入/剪枝状态定时器。

在断言中落选的路由器将会剪掉其下游的转发接口，并把这种断言状态保持一段时间。超时后，落选的路由器会重新恢复转发IPv6组播数据。

当路由器没有收到来自IPv6组播源S的后续IPv6组播数据时，不会立即删除（S，G）表项，而是将其维持一段时间后再删除，这段时间就称为IPv6组播源的生存时间。

1. 全局配置IPv6 PIM公共定时器

表1-48 全局配置IPv6 PIM公共定时器

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入IPv6 PIM视图 | pim ipv6 | -
配置发送Hello报文的时间间隔 | timer hello interval | 可选 缺省情况下，发送Hello报文的时间间隔为30秒
配置发送加入/剪枝报文的时间间隔 | timer join-prune interval | 可选 缺省情况下，发送加入/剪枝报文的时间间隔为60秒
配置保持加入/剪枝状态的时间 | holdtime join-prune interval | 可选 缺省情况下，保持加入/剪枝状态的时间为210秒
配置保持断言状态的时间 | holdtime assert interval | 可选 缺省情况下，保持断言状态的时间为180秒
配置IPv6组播源生存时间 | source-lifetime interval | 可选 缺省情况下，IPv6组播源的生存时间为210秒

2. 在接口上配置IPv6 PIM公共定时器

表1-49 在接口上配置IPv6 PIM公共定时器

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
配置发送Hello报文的时间间隔 | pim ipv6 timer hello interval | 可选 缺省情况下，发送Hello报文的时间间隔为30秒
配置触发Hello报文的最大延迟时间 | pim ipv6 triggered-hello-delay interval | 可选 缺省情况下，触发Hello报文的最大延迟时间为5秒
配置发送加入/剪枝报文的时间间隔 | pim ipv6 timer join-prune interval | 可选 缺省情况下，发送加入/剪枝报文的时间间隔为60秒
配置保持加入/剪枝状态的时间 | pim ipv6 holdtime join-prune interval | 可选 缺省情况下，保持加入/剪枝状态的时间为210秒
配置保持断言状态的时间 | pim ipv6 holdtime assert interval | 可选 缺省情况下，保持断言状态的时间为180秒

如果网络没有特殊要求，建议采用缺省值。

1.6.8 配置加入/剪枝报文规格

如果加入/剪枝报文的尺寸较大，则丢失一个报文将导致较多信息的遗失；如果加入/剪枝报文的尺寸较小，则单个报文的丢失所产生的影响也将降低。

通过控制加入/剪枝报文中（S，G）表项的数目，可以有效减少单位时间内发送的（S，G）表项数量。

表1-50 配置加入/剪枝报文规格

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入IPv6 PIM视图 | pim ipv6 | -
配置加入/剪枝报文的最大长度 | jp-pkt-size packet-size | 可选 缺省情况下，加入/剪枝报文的最大长度为8100字节
配置加入/剪枝报文中（S，G）表项的最大数量 | jp-queue-size queue-size | 可选 缺省情况下，加入/剪枝报文中（S，G）表项的最大数量为1020个

1.6.9 配置IPv6 PIM与BFD联动

IPv6 PIM借助Hello报文在共享网段中选举出DR，使其成为该网段中IPv6组播数据的唯一转发者。当DR出现故障时，只有待其老化后才会触发新的DR选举过程，这个过程通常比较长。为了实现DR的快速切换，可以在共享网段的IPv6 PIM邻居之间引入BFD机制进行链路状态的快速检测。通过在共享网段内的所有IPv6 PIM路由器上都使能IPv6 PIM与BFD联动功能，可以使这些IPv6 PIM邻居快速感知DR故障并重新选举DR。

表1-51 配置IPv6 PIM与BFD联动

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
使能IPv6 PIM BFD功能 | pim ipv6 bfd enable | 必选 缺省情况下，IPv6 PIM BFD功能处于关闭状态

l 只有在接口上先使能了IPv6 PIM-DM或IPv6 PIM-SM，本配置才能生效。

l 有关BFD的详细介绍，请参见“可靠性配置指导”中的“BFD”。


1.7 IPv6 PIM显示和维护

在完成上述配置后，在任意视图下执行 display 命令可以显示配置后IPv6 PIM的运行情况，通过查看显示信息验证配置的效果。

在用户视图下执行 reset 命令可以清除IPv6 PIM统计信息。

表1-52 IPv6 PIM显示和维护

操作 | 命令
查看IPv6 PIM-SM域中的BSR信息，以及本地配置并生效的C-RP信息 | display pim ipv6 bsr-info [ | { begin | exclude | include } regular-expression ]
查看IPv6 PIM所使用的IPv6单播路由信息 | display pim ipv6 claimed-route [ ipv6-source-address ] [ | { begin | exclude | include } regular-expression ]
查看IPv6 PIM控制报文的数量 | display pim ipv6 control-message counters [ message-type { probe | register | register-stop } | [ interface interface-type interface-number | message-type { assert | bsr | crp | graft | graft-ack | hello | join-prune | state-refresh } ] * ] [ | { begin | exclude | include } regular-expression ]
查看IPv6双向PIM的DF信息 | display pim ipv6 df-info [ rp-address ] [ | { begin | exclude | include } regular-expression ]
查看尚未确认的IPv6 PIM-DM嫁接信息 | display pim ipv6 grafts [ | { begin | exclude | include } regular-expression ]
查看接口上的IPv6 PIM信息 | display pim ipv6 interface [ interface-type interface-number ] [ verbose ] [ | { begin | exclude | include } regular-expression ]
查看待发送的加入/剪枝报文信息 | display pim ipv6 join-prune mode { sm [ flags flag-value ] | ssm } [ interface interface-type interface-number | neighbor ipv6-neighbor-address ] * [ verbose ] [ | { begin | exclude | include } regular-expression ]
查看IPv6 PIM邻居信息 | display pim ipv6 neighbor [ interface interface-type interface-number | ipv6-neighbor-address | verbose ] * [ | { begin | exclude | include } regular-expression ]
查看IPv6 PIM路由表的内容 | display pim ipv6 routing-table [ ipv6-group-address [ prefix-length ] | ipv6-source-address [ prefix-length ] | incoming-interface [ interface-type interface-number | register ] | outgoing-interface { include | exclude | match } { interface-type interface-number | register } | mode mode-type | flags flag-value | fsm ] * [ | { begin | exclude | include } regular-expression ]
查看RP的信息 | display pim ipv6 rp-info [ ipv6-group-address ] [ | { begin | exclude | include } regular-expression ]
重置IPv6 PIM控制报文计数器 | reset pim ipv6 control-message counters [ interface interface-type interface-number ]


1.8 IPv6 PIM典型配置举例

1.8.1 IPv6 PIM-DM典型配置举例

1. 组网需求

l 接收者通过组播方式接收视频点播信息，不同组织的接收者群体组成末梢网络，每个末梢网络中都存在至少一个接收者，整个IPv6 PIM域采用DM方式。

l Host A和Host C为两个末梢网络中的IPv6组播信息接收者；Switch D通过Vlan-interface300接口与IPv6组播源（Source）所在的网络连接；Switch A通过Vlan-interface100接口连接末梢网络N1，通过Vlan-interface103接口连接Switch D；Switch B和Switch C通过各自的Vlan-interface200接口连接末梢网络N2，分别通过Vlan-interface101和Vlan-interface102接口连接Switch D。

l Switch A与末梢网络N1之间运行MLDv1；Switch B和Switch C与末梢网络N2之间也运行MLDv1。

2. 组网图

图1-14 IPv6 PIM-DM典型配置组网图

设备 | 接口 | IPv6地址 | 设备 | 接口 | IPv6地址
Switch A | Vlan-int100 | 1001::1/64 | Switch D | Vlan-int300 | 4001::1/64
 | Vlan-int103 | 1002::1/64 |  | Vlan-int103 | 1002::2/64
Switch B | Vlan-int200 | 2001::1/64 |  | Vlan-int101 | 2002::2/64
 | Vlan-int101 | 2002::1/64 |  | Vlan-int102 | 3001::2/64
Switch C | Vlan-int200 | 2001::2/64 |  |  |
 | Vlan-int102 | 3001::1/64 |  |  |

3. 配置步骤

(1) 使能IPv6转发功能，并配置IPv6地址和IPv6单播路由协议

使能各交换机的IPv6转发功能，并按照图1-14 配置各接口的IPv6地址和前缀长度，具体配置过程略。

配置IPv6 PIM-DM域内的各交换机之间采用OSPFv3协议进行互连，确保IPv6 PIM-DM域内部在网络层互通，并且各交换机之间能够借助IPv6单播路由协议实现动态路由更新，具体配置过程略。

(2) 使能IPv6组播路由，并使能IPv6 PIM-DM和MLD

# 在Switch A上使能IPv6组播路由，在各接口上使能IPv6 PIM-DM，并在其连接末梢网络的接口Vlan-interface100上使能MLD。

<SwitchA> system-view

[SwitchA] multicast ipv6 routing-enable

[SwitchA] interface vlan-interface 100

[SwitchA-Vlan-interface100] mld enable

[SwitchA-Vlan-interface100] pim ipv6 dm

[SwitchA-Vlan-interface100] quit

[SwitchA] interface vlan-interface 103

[SwitchA-Vlan-interface103] pim ipv6 dm

[SwitchA-Vlan-interface103] quit

Switch B和Switch C的配置与Switch A相似，配置过程略。

# 在Switch D上使能IPv6组播路由，并在各接口上使能IPv6 PIM-DM。

<SwitchD> system-view

[SwitchD] multicast ipv6 routing-enable

[SwitchD] interface vlan-interface 300

[SwitchD-Vlan-interface300] pim ipv6 dm

[SwitchD-Vlan-interface300] quit

[SwitchD] interface vlan-interface 103

[SwitchD-Vlan-interface103] pim ipv6 dm

[SwitchD-Vlan-interface103] quit

[SwitchD] interface vlan-interface 101

[SwitchD-Vlan-interface101] pim ipv6 dm

[SwitchD-Vlan-interface101] quit

[SwitchD] interface vlan-interface 102

[SwitchD-Vlan-interface102] pim ipv6 dm

[SwitchD-Vlan-interface102] quit

(3) 检验配置效果

通过使用 display pim ipv6 interface 命令可以查看交换机接口上IPv6 PIM的配置和运行情况。例如：

# 查看Switch D上IPv6 PIM的配置信息。

[SwitchD] display pim ipv6 interface

Interface NbrCnt HelloInt DR-Pri DR-Address

Vlan300 0 30 1 4001::1

(local)

Vlan103 0 30 1 1002::2

(local)

Vlan101 1 30 1 2002::2

(local)

Vlan102 1 30 1 3001::2

(local)

通过使用 display pim ipv6 neighbor 命令可以查看交换机之间的IPv6 PIM邻居关系。例如：

# 查看Switch D上IPv6 PIM的邻居关系信息。

[SwitchD] display pim ipv6 neighbor

Total Number of Neighbors = 3

Neighbor Interface Uptime Expires Dr-Priority

1002::1 Vlan103 00:04:00 00:01:29 1

2002::1 Vlan101 00:04:16 00:01:29 3

3001::1 Vlan102 00:03:54 00:01:17 5

假如Host A需要接收IPv6组播组G（FF0E::101）的信息，当IPv6组播源S（4001::100/64）向IPv6组播组G发送IPv6组播数据时，通过扩散生成SPT，SPT路径中各交换机（Switch A和Switch D）上都存在（S，G）表项，Host A向Switch A发送MLD报告以加入IPv6组播组G，在Switch A上生成（*，G）表项。通过使用 display pim ipv6 routing-table 命令可以查看交换机的IPv6 PIM路由表信息。例如：

# 查看Switch A上的IPv6 PIM路由表信息。

[SwitchA] display pim ipv6 routing-table

Total 1 (*, G) entry; 1 (S, G) entry

(*, FF0E::101)

Protocol: pim-dm, Flag: WC

UpTime: 00:01:24

Upstream interface: NULL

Upstream neighbor: NULL

RPF prime neighbor: NULL

Downstream interface(s) information:

Total number of downstreams: 1

1: Vlan-interface100

Protocol: mld, UpTime: 00:01:20, Expires: never

(4001::100, FF0E::101)

Protocol: pim-dm, Flag: ACT

UpTime: 00:01:20

Upstream interface: Vlan-interface103

Upstream neighbor: 1002::2

RPF prime neighbor: 1002::2

Downstream interface(s) information:

Total number of downstreams: 1

1: Vlan-interface100

Protocol: pim-dm, UpTime: 00:01:20, Expires: never

# 查看Switch D上的IPv6 PIM路由表信息。

[SwitchD] display pim ipv6 routing-table

Total 0 (*, G) entry; 1 (S, G) entry

(4001::100, FF0E::101)

Protocol: pim-dm, Flag: LOC ACT

UpTime: 00:02:19

Upstream interface: Vlan-interface300

Upstream neighbor: NULL

RPF prime neighbor: NULL

Downstream interface(s) information:

Total number of downstreams: 2

1: Vlan-interface103

Protocol: pim-dm, UpTime: 00:02:19, Expires: never

2: Vlan-interface102

Protocol: pim-dm, UpTime: 00:02:19, Expires: never

1.8.2 IPv6 PIM-SM非管理域典型配置举例

1. 组网需求

l 接收者通过组播方式接收视频点播信息，不同组织的接收者群体组成末梢网络，每个末梢网络中都存在至少一个接收者，整个IPv6 PIM域采用SM方式。

l Host A和Host C为两个末梢网络中的IPv6组播信息接收者；Switch D通过Vlan-interface300接口与IPv6组播源（Source）所在网络连接；Switch A通过Vlan-interface100接口连接末梢网络N1，通过Vlan-interface101接口和Vlan-interface102接口分别连接Switch D和Switch E；Switch B和Switch C通过各自的Vlan-interface200接口连接末梢网络N2，分别通过Vlan-interface103和Vlan-interface104接口连接Switch E。

l 将Switch D的Vlan-interface105接口和Switch E的Vlan-interface102都配置为C-BSR和C-RP，其中Switch E上C-BSR的优先级较高。C-RP所服务的IPv6组播组范围为FF0E::101/64，通过改变哈希掩码长度使此范围内的IPv6组地址间隔映射到这两个C-RP上。

l Switch A与末梢网络N1之间运行MLDv1；Switch B和Switch C与末梢网络N2之间也运行MLDv1。

2. 组网图

图1-15 IPv6 PIM-SM非管理域典型配置组网图

设备 | 接口 | IPv6地址 | 设备 | 接口 | IPv6地址
Switch A | Vlan-int100 | 1001::1/64 | Switch D | Vlan-int300 | 4001::1/64
 | Vlan-int101 | 1002::1/64 |  | Vlan-int101 | 1002::2/64
 | Vlan-int102 | 1003::1/64 |  | Vlan-int105 | 4002::1/64
Switch B | Vlan-int200 | 2001::1/64 | Switch E | Vlan-int104 | 3001::2/64
 | Vlan-int103 | 2002::1/64 |  | Vlan-int103 | 2002::2/64
Switch C | Vlan-int200 | 2001::2/64 |  | Vlan-int102 | 1003::2/64
 | Vlan-int104 | 3001::1/64 |  | Vlan-int105 | 4002::2/64

3. 配置步骤

(1) 使能IPv6转发功能，并配置IPv6地址和IPv6单播路由协议

使能各交换机的IPv6转发功能，并按照图1-15 配置各接口的IPv6地址和前缀长度，具体配置过程略。

配置IPv6 PIM-SM域内的各交换机之间采用OSPFv3协议进行互连，确保IPv6 PIM-SM域内部在网络层互通，并且各交换机之间能够借助IPv6单播路由协议实现动态路由更新，具体配置过程略。

(2) 使能IPv6组播路由，并使能IPv6 PIM-SM和MLD

# 在Switch A上使能IPv6组播路由，在各接口上使能IPv6 PIM-SM，并在其连接末梢网络的接口Vlan-interface300上使能MLD。

<SwitchA> system-view

[SwitchA] multicast ipv6 routing-enable

[SwitchA] interface vlan-interface 100

[SwitchA-Vlan-interface100] mld enable

[SwitchA-Vlan-interface100] pim ipv6 sm

[SwitchA-Vlan-interface100] quit

[SwitchA] interface vlan-interface 101

[SwitchA-Vlan-interface101] pim ipv6 sm

[SwitchA-Vlan-interface101] quit

[SwitchA] interface vlan-interface 102

[SwitchA-Vlan-interface102] pim ipv6 sm

[SwitchA-Vlan-interface102] quit

Switch B和Switch C的配置与Switch A相似，Switch D和Switch E除了不需要在相应接口上使能MLD外，其它的配置也与Switch A相似，配置过程略。

(3) 配置C-BSR和C-RP

# 在Switch D上配置RP通告的服务范围，以及C-BSR和C-RP的位置，并指定哈希掩码长度为128，C-BSR的优先级为10。

<SwitchD> system-view

[SwitchD] acl ipv6 number 2005

[SwitchD-acl6-basic-2005] rule permit source ff0e::101 64

[SwitchD-acl6-basic-2005] quit

[SwitchD] pim ipv6

[SwitchD-pim6] c-bsr 4002::1 128 10

[SwitchD-pim6] c-rp 4002::1 group-policy 2005

[SwitchD-pim6] quit

# 在Switch E上配置RP通告的服务范围，以及C-BSR和C-RP的位置，并指定哈希掩码长度为128，C-BSR的优先级为20。

<SwitchE> system-view

[SwitchE] acl ipv6 number 2005

[SwitchE-acl6-basic-2005] rule permit source ff0e::101 64

[SwitchE-acl6-basic-2005] quit

[SwitchE] pim ipv6

[SwitchE-pim6] c-bsr 1003::2 128 20

[SwitchE-pim6] c-rp 1003::2 group-policy 2005

[SwitchE-pim6] quit

(4) 检验配置效果

通过使用 display pim ipv6 interface 命令可以查看交换机接口上IPv6 PIM的配置和运行情况。例如：

# 查看Switch A上IPv6 PIM的配置信息。

[SwitchA] display pim ipv6 interface

Interface NbrCnt HelloInt DR-Pri DR-Address

Vlan100 0 30 1 1001::1

(local)

Vlan101 1 30 1 1002::2

Vlan102 1 30 1 1003::2

通过使用 display pim ipv6 bsr-info 命令可以查看交换机上BSR选举的信息，以及本地配置并生效的C-RP信息。例如：

# 查看Switch A上的BSR信息，以及本地配置并生效的C-RP信息。

[SwitchA] display pim ipv6 bsr-info

Elected BSR Address: 1003::2

Priority: 20

Hash mask length: 128

State: Accept Preferred

Uptime: 00:04:22

Expires: 00:01:46

# 查看Switch D上的BSR信息，以及本地配置并生效的C-RP信息。

[SwitchD] display pim ipv6 bsr-info

Elected BSR Address: 1003::2

Priority: 20

Hash mask length: 128

State: Elected

Uptime: 00:05:26

Expires: 00:01:45

Candidate BSR Address: 4002::1

Priority: 10

Hash mask length: 128

State: Candidate

Candidate RP: 4002::1(Vlan-interface105)

Priority: 192

HoldTime: 130

Advertisement Interval: 60

Next advertisement scheduled at: 00:00:48

# 查看Switch E上的BSR信息，以及本地配置并生效的C-RP信息。

[SwitchE] display pim ipv6 bsr-info

Elected BSR Address: 1003::2

Priority: 20

Hash mask length: 128

State: Elected

Uptime: 00:01:10

Next BSR message scheduled at: 00:01:48

Candidate BSR Address: 1003::2

Priority: 20

Hash mask length: 128

State: Elected

Candidate RP: 1003::2(Vlan-interface102)

Priority: 192

HoldTime: 130

Advertisement Interval: 60

Next advertisement scheduled at: 00:00:48

通过使用 display pim ipv6 rp-info 命令可以查看交换机上获取的RP信息。例如：

# 查看Switch A上的RP信息。

[SwitchA] display pim ipv6 rp-info

PIM-SM BSR RP information:

prefix/prefix length: FF0E::101/64

RP: 4002::1

Priority: 192

HoldTime: 130

Uptime: 00:05:19

Expires: 00:02:11

RP: 1003::2

Priority: 192

HoldTime: 130

Uptime: 00:05:19

Expires: 00:02:11

假如Host A需要接收IPv6组播组G（FF0E::100）的信息，由于根据哈希算法得出G对应的RP为Router E，因此Switch A和Switch E之间会生成RPT。当IPv6组播源S（4001::100/64）向RP发起注册后，Switch D和Switch E之间会生成SPT。当Switch A收到IPv6组播数据后立即执行从RPT到SPT的切换。RPT路径中的交换机（Switch A和Switch E）上存在（*，G）表项，而SPT路径中的交换机（Switch A和Switch D）上存在（S，G）表项，通过使用 display pim ipv6 routing-table 命令可以查看交换机的IPv6 PIM路由表信息。例如：

# 查看Switch A上的IPv6 PIM路由表信息。

[SwitchA] display pim ipv6 routing-table

Total 1 (*, G) entry; 1 (S, G) entry

(*, FF0E::100)

RP: 1003::2

Protocol: pim-sm, Flag: WC

UpTime: 00:03:45

Upstream interface: Vlan-interface102

Upstream neighbor: 1003::2

RPF prime neighbor: 1003::2

Downstream interface(s) information:

Total number of downstreams: 1

1: Vlan-interface100

Protocol: mld, UpTime: 00:02:15, Expires: 00:03:06

(4001::100, FF0E::100)

RP: 1003::2

Protocol: pim-sm, Flag: SPT ACT

UpTime: 00:02:15

Upstream interface: Vlan-interface101

Upstream neighbor: 1002::2

RPF prime neighbor: 1002::2

Downstream interface(s) information:

Total number of downstreams: 1

1: Vlan-interface100

Protocol: pim-sm, UpTime: 00:02:15, Expires: 00:03:06

# 查看Switch D上的IPv6 PIM路由表信息。

[SwitchD] display pim ipv6 routing-table

Total 0 (*, G) entry; 1 (S, G) entry

(4001::100, FF0E::100)

RP: 1003::2

Protocol: pim-sm, Flag: SPT LOC ACT

UpTime: 00:14:44

Upstream interface: Vlan-interface300

Upstream neighbor: NULL

RPF prime neighbor: NULL

Downstream interface(s) information:

Total number of downstreams: 1

1: Vlan-interface105

Protocol: mld, UpTime: 00:14:44, Expires: 00:02:26

# 查看Switch E上的IPv6 PIM路由表信息。

[SwitchE] display pim ipv6 routing-table

Total 1 (*, G) entry; 0 (S, G) entry

(*, FF0E::100)

RP: 1003::2 (local)

Protocol: pim-sm, Flag: WC

UpTime: 00:16:56

Upstream interface: Register

Upstream neighbor: 4002::1

RPF prime neighbor: 4002::1

Downstream interface(s) information:

Total number of downstreams: 1

1: Vlan-interface102

Protocol: pim-sm, UpTime: 00:16:56, Expires: 00:02:34

1.8.3 IPv6 PIM-SM管理域典型配置举例

1. 组网需求

l 接收者通过组播方式接收视频点播信息，整个IPv6 PIM域采用SM管理域方式，划分为IPv6管理域1（Scope值为4）、IPv6管理域2（Scope值为4）和IPv6 Global域，Switch B、Switch C和Switch D为各IPv6管理域的ZBR。

l Source 1和Source 2分别向IPv6组播组FF14::101发送内容不同的IPv6组播信息，Host A和Host B则分别只接收来自Source 1和Source 2的IPv6组播信息；Source 3向IPv6组播组FF1E::202发送IPv6组播信息，Host C为其接收者。

l Switch B的Vlan-interface101接口为IPv6管理域1的C-BSR和C-RP，服务于Scope值为4的IPv6组播组；Switch D的Vlan-interface104接口为IPv6管理域2的C-BSR和C-RP，服务于Scope值为4的IPv6组播组；Switch F的Vlan-interface109接口为IPv6 Global域的C-BSR和C-RP，服务于Scope值为14的IPv6组播组。

l Switch A、Switch E和Switch I分别与各自所连接的接收者之间运行MLDv1。

2. 组网图

图1-16 IPv6 PIM-SM管理域配置组网图

设备 | 接口 | IPv6地址 | 设备 | 接口 | IPv6地址
Switch A | Vlan-int100 | 1001::1/64 | Switch D | Vlan-int104 | 3002::2/64
 | Vlan-int101 | 1002::1/64 |  | Vlan-int108 | 6001::1/64
Switch B | Vlan-int200 | 2001::1/64 |  | Vlan-int107 | 6002::1/64
 | Vlan-int101 | 1002::2/64 | Switch E | Vlan-int400 | 7001::1/64
 | Vlan-int103 | 2002::1/64 |  | Vlan-int105 | 3003::2/64
 | Vlan-int102 | 2003::1/64 |  | Vlan-int108 | 6001::2/64
Switch C | Vlan-int300 | 3001::1/64 | Switch F | Vlan-int109 | 8001::1/64
 | Vlan-int104 | 3002::1/64 |  | Vlan-int107 | 6002::2/64
 | Vlan-int105 | 3003::1/64 |  | Vlan-int102 | 2003::2/64
 | Vlan-int103 | 2002::2/64 | Switch G | Vlan-int500 | 9001::1/64
 | Vlan-int106 | 3004::1/64 |  | Vlan-int109 | 8001::2/64
Switch H | Vlan-int110 | 4001::1/64 | Source 1 | - | 2001::100/64
 | Vlan-int106 | 3004::2/64 | Source 2 | - | 3001::100/64
Switch I | Vlan-int600 | 5001::1/64 | Source 3 | - | 9001::100/64
 | Vlan-int110 | 4001::2/64 |  |  |

3. 配置步骤

(1) 配置IPv6地址和IPv6单播路由协议

使能各交换机的IPv6转发功能，请按照图1-16 配置各接口的IPv6地址和前缀长度，具体配置过程略。

配置IPv6 PIM-SM域内的各交换机之间采用OSPFv3协议进行互连，确保IPv6 PIM-SM域内部在网络层互通，并且各交换机之间能够借助IPv6单播路由协议实现动态路由更新，具体配置过程略。

(2) 使能IPv6组播路由和IPv6管理域机制，并使能IPv6 PIM-SM和MLD

# 在Switch A上使能IPv6组播路由和IPv6管理域机制，在各接口上使能IPv6 PIM-SM，并在其连接有接收者的接口Vlan-interface100上使能MLD。

<SwitchA> system-view

[SwitchA] multicast ipv6 routing-enable

[SwitchA] pim ipv6

[SwitchA-pim6] c-bsr admin-scope

[SwitchA-pim6] quit

[SwitchA] interface vlan-interface 100

[SwitchA-Vlan-interface100] mld enable

[SwitchA-Vlan-interface100] pim ipv6 sm

[SwitchA-Vlan-interface100] quit

[SwitchA] interface vlan-interface 101

[SwitchA-Vlan-interface101] pim ipv6 sm

[SwitchA-Vlan-interface101] quit

Switch E和Switch I的配置与Switch A相似，配置过程略。

# 在Switch B上使能IPv6组播路由和IPv6管理域机制，并在各接口上使能IPv6 PIM-SM。

<SwitchB> system-view

[SwitchB] multicast ipv6 routing-enable

[SwitchB] pim ipv6

[SwitchB-pim6] c-bsr admin-scope

[SwitchB-pim6] quit

[SwitchB] interface vlan-interface 200

[SwitchB-Vlan-interface200] pim ipv6 sm

[SwitchB-Vlan-interface200] quit

[SwitchB] interface vlan-interface 101

[SwitchB-Vlan-interface101] pim ipv6 sm

[SwitchB-Vlan-interface101] quit

[SwitchB] interface vlan-interface 102

[SwitchB-Vlan-interface102] pim ipv6 sm

[SwitchB-Vlan-interface102] quit

[SwitchB] interface vlan-interface 103

[SwitchB-Vlan-interface103] pim ipv6 sm

[SwitchB-Vlan-interface103] quit

Switch C、Switch D、Switch F、Switch G和Switch H的配置与Switch B相似，配置过程略。

(3) 配置IPv6管理域边界

# 在Switch B上将接口Vlan-interface102和Vlan-interface103配置为IPv6管理域1的边界。

[SwitchB] interface vlan-interface 102

[SwitchB-Vlan-interface102] multicast ipv6 boundary scope 4

[SwitchB-Vlan-interface102] quit

[SwitchB] interface vlan-interface 103

[SwitchB-Vlan-interface103] multicast ipv6 boundary scope 4

[SwitchB-Vlan-interface103] quit

# 在Switch C上将接口Vlan-interface103和Vlan-interface106配置为IPv6管理域2的边界。

<SwitchC> system-view

[SwitchC] interface vlan-interface 103

[SwitchC-Vlan-interface103] multicast ipv6 boundary scope 4

[SwitchC-Vlan-interface103] quit

[SwitchC] interface vlan-interface 106

[SwitchC-Vlan-interface106] multicast ipv6 boundary scope 4

[SwitchC-Vlan-interface106] quit

# 在Switch D上将接口Vlan-interface107配置为IPv6管理域2的边界。

<SwitchD> system-view

[SwitchD] interface vlan-interface 107

[SwitchD-Vlan-interface107] multicast ipv6 boundary scope 4

[SwitchD-Vlan-interface107] quit

(4) 配置C-BSR和C-RP

# 在Switch B上配置RP通告的服务范围，并将接口Vlan-interface101配置为IPv6管理域1的C-BSR和C-RP。

[SwitchB] pim ipv6

[SwitchB-pim6] c-bsr scope 4

[SwitchB-pim6] c-bsr 1002::2

[SwitchB-pim6] c-rp 1002::2 scope 4

[SwitchB-pim6] quit

# 在Switch D上配置RP通告的服务范围，并将接口Vlan-interface104配置为IPv6管理域2的C-BSR和C-RP。

[SwitchD] pim ipv6

[SwitchD-pim6] c-bsr scope 4

[SwitchD-pim6] c-bsr 3002::2

[SwitchD-pim6] c-rp 3002::2 scope 4

[SwitchD-pim6] quit

# 在Switch F上将接口Vlan-interface109配置为IPv6 Global域的C-BSR和C-RP。

<SwitchF> system-view

[SwitchF] pim ipv6

[SwitchF-pim6] c-bsr scope global

[SwitchF-pim6] c-bsr 8001::1

[SwitchF-pim6] c-rp 8001::1

[SwitchF-pim6] quit

(5) 检验配置效果

通过使用 display pim ipv6 bsr-info 命令可以查看交换机上BSR选举的信息，以及本地配置并生效的C-RP信息。例如：

# 查看Switch B上的BSR信息，以及本地配置并生效的C-RP信息。

[SwitchB] display pim ipv6 bsr-info

Elected BSR Address: 8001::1

Priority: 64

Hash mask length: 126

State: Accept Preferred

Scope: 14

Uptime: 00:01:45

Expires: 00:01:25

Elected BSR Address: 1002::2

Priority: 64

Hash mask length: 126

State: Elected

Scope: 4

Uptime: 00:04:54

Next BSR message scheduled at: 00:00:06

Candidate BSR Address: 1002::2

Priority: 64

Hash mask length: 126

State: Elected

Scope: 4

Candidate RP: 1002::2(Vlan-interface101)

Priority: 192

HoldTime: 130

Advertisement Interval: 60

Next advertisement scheduled at: 00:00:15

# 查看Switch D上的BSR信息，以及本地配置并生效的C-RP信息。

[SwitchD] display pim ipv6 bsr-info

Elected BSR Address: 8001::1

Priority: 64

Hash mask length: 126

State: Accept Preferred

Scope: 14

Uptime: 00:01:45

Expires: 00:01:25

Elected BSR Address: 3002::2

Priority: 64

Hash mask length: 126

State: Elected

Scope: 4

Uptime: 00:03:48

Next BSR message scheduled at: 00:01:12

Candidate BSR Address: 3002::2

Priority: 64

Hash mask length: 126

State: Elected

Scope: 4

Candidate RP: 3002::2(Vlan-interface104)

Priority: 192

HoldTime: 130

Advertisement Interval: 60

Next advertisement scheduled at: 00:00:10

# 查看Switch F上的BSR信息，以及本地配置并生效的C-RP信息。

[SwitchF] display pim ipv6 bsr-info

Elected BSR Address: 8001::1

Priority: 64

Hash mask length: 126

State: Elected

Scope: 14

Uptime: 00:01:11

Next BSR message scheduled at: 00:00:49

Candidate BSR Address: 8001::1

Priority: 64

Hash mask length: 126

State: Elected

Scope: 14

Candidate RP: 8001::1(Vlan-interface109)

Priority: 192

HoldTime: 130

Advertisement Interval: 60

Next advertisement scheduled at: 00:00:55

通过使用 display pim ipv6 rp-info 命令可以查看交换机上获取的RP信息。例如：

# 查看Switch B上的RP信息。

[SwitchB] display pim ipv6 rp-info

PIM-SM BSR RP information:

prefix/prefix length: FF0E::/16

RP: 8001::1

Priority: 192

HoldTime: 130

Uptime: 00:03:39

Expires: 00:01:51

prefix/prefix length: FF1E::/16

RP: 8001::1

Priority: 192

HoldTime: 130

Uptime: 00:03:39

Expires: 00:01:51

prefix/prefix length: FF2E::/16

RP: 8001::1

Priority: 192

HoldTime: 130

Uptime: 00:03:39

Expires: 00:01:51

prefix/prefix length: FF3E::/16

RP: 8001::1

Priority: 192

HoldTime: 130

Uptime: 00:03:39

Expires: 00:01:51

prefix/prefix length: FF4E::/16

RP: 8001::1

Priority: 192

HoldTime: 130

Uptime: 00:03:39

Expires: 00:01:51

prefix/prefix length: FF5E::/16

RP: 8001::1

Priority: 192

HoldTime: 130

Uptime: 00:03:39

Expires: 00:01:51

prefix/prefix length: FF6E::/16

RP: 8001::1

Priority: 192

HoldTime: 130

Uptime: 00:03:39

Expires: 00:01:51

prefix/prefix length: FF7E::/16

RP: 8001::1

Priority: 192

HoldTime: 130

Uptime: 00:03:39

Expires: 00:01:51

prefix/prefix length: FF8E::/16

RP: 8001::1

Priority: 192

HoldTime: 130

Uptime: 00:03:39

Expires: 00:01:51

prefix/prefix length: FF9E::/16

RP: 8001::1

Priority: 192

HoldTime: 130

Uptime: 00:03:39

Expires: 00:01:51

prefix/prefix length: FFAE::/16

RP: 8001::1

Priority: 192

HoldTime: 130

Uptime: 00:03:39

Expires: 00:01:51

prefix/prefix length: FFBE::/16

RP: 8001::1

Priority: 192

HoldTime: 130

Uptime: 00:03:39

Expires: 00:01:51

prefix/prefix length: FFCE::/16

RP: 8001::1

Priority: 192

HoldTime: 130

Uptime: 00:03:39

Expires: 00:01:51

prefix/prefix length: FFDE::/16

RP: 8001::1

Priority: 192

HoldTime: 130

Uptime: 00:03:39

Expires: 00:01:51

prefix/prefix length: FFEE::/16

RP: 8001::1

Priority: 192

HoldTime: 130

Uptime: 00:03:39

Expires: 00:01:51

prefix/prefix length: FFFE::/16

RP: 8001::1

Priority: 192

HoldTime: 130

Uptime: 00:03:39

Expires: 00:01:51

prefix/prefix length: FF04::/16

RP: 1002::2

Priority: 192

HoldTime: 130

Uptime: 00:03:39

Expires: 00:01:51

prefix/prefix length: FF14::/16

RP: 1002::2

Priority: 192

HoldTime: 130

Uptime: 00:03:39

Expires: 00:01:51

prefix/prefix length: FF24::/16

RP: 1002::2

Priority: 192

HoldTime: 130

Uptime: 00:03:39

Expires: 00:01:51

prefix/prefix length: FF34::/16

RP: 1002::2

Priority: 192

HoldTime: 130

Uptime: 00:03:39

Expires: 00:01:51

prefix/prefix length: FF44::/16

RP: 1002::2

Priority: 192

HoldTime: 130

Uptime: 00:03:39

Expires: 00:01:51

prefix/prefix length: FF54::/16

RP: 1002::2

Priority: 192

HoldTime: 130

Uptime: 00:03:39

Expires: 00:01:51

prefix/prefix length: FF64::/16

RP: 1002::2

Priority: 192

HoldTime: 130

Uptime: 00:03:39

Expires: 00:01:51

prefix/prefix length: FF74::/16

RP: 1002::2

Priority: 192

HoldTime: 130

Uptime: 00:03:39

Expires: 00:01:51

prefix/prefix length: FF84::/16

RP: 1002::2

Priority: 192

HoldTime: 130

Uptime: 00:03:39

Expires: 00:01:51

prefix/prefix length: FF94::/16

RP: 1002::2

Priority: 192

HoldTime: 130

Uptime: 00:03:39

Expires: 00:01:51

prefix/prefix length: FFA4::/16

RP: 1002::2

Priority: 192

HoldTime: 130

Uptime: 00:03:39

Expires: 00:01:51

prefix/prefix length: FFB4::/16

RP: 1002::2

Priority: 192

HoldTime: 130

Uptime: 00:03:39

Expires: 00:01:51

prefix/prefix length: FFC4::/16

RP: 1002::2

Priority: 192

HoldTime: 130

Uptime: 00:03:39

Expires: 00:01:51

prefix/prefix length: FFD4::/16

RP: 1002::2

Priority: 192

HoldTime: 130

Uptime: 00:03:39

Expires: 00:01:51

prefix/prefix length: FFE4::/16

RP: 1002::2

Priority: 192

HoldTime: 130

Uptime: 00:03:39

Expires: 00:01:51

prefix/prefix length: FFF4::/16

RP: 1002::2

Priority: 192

HoldTime: 130

Uptime: 00:03:39

Expires: 00:01:51

# 查看Switch F上的RP信息。

[SwitchF] display pim rp-info

PIM-SM BSR RP information:

prefix/prefix length: FF0E::/16

RP: 8001::1

Priority: 192

HoldTime: 130

Uptime: 00:03:39

Expires: 00:01:51

prefix/prefix length: FF1E::/16

RP: 8001::1

Priority: 192

HoldTime: 130

Uptime: 00:03:39

Expires: 00:01:51

prefix/prefix length: FF2E::/16

RP: 8001::1

Priority: 192

HoldTime: 130

Uptime: 00:03:39

Expires: 00:01:51

prefix/prefix length: FF3E::/16

RP: 8001::1

Priority: 192

HoldTime: 130

Uptime: 00:03:39

Expires: 00:01:51

prefix/prefix length: FF4E::/16

RP: 8001::1

Priority: 192

HoldTime: 130

Uptime: 00:03:39

Expires: 00:01:51

prefix/prefix length: FF5E::/16

RP: 8001::1

Priority: 192

HoldTime: 130

Uptime: 00:03:39

Expires: 00:01:51

prefix/prefix length: FF6E::/16

RP: 8001::1

Priority: 192

HoldTime: 130

Uptime: 00:03:39

Expires: 00:01:51

prefix/prefix length: FF7E::/16

RP: 8001::1

Priority: 192

HoldTime: 130

Uptime: 00:03:39

Expires: 00:01:51

prefix/prefix length: FF8E::/16

RP: 8001::1

Priority: 192

HoldTime: 130

Uptime: 00:03:39

Expires: 00:01:51

prefix/prefix length: FF9E::/16

RP: 8001::1

Priority: 192

HoldTime: 130

Uptime: 00:03:39

Expires: 00:01:51

prefix/prefix length: FFAE::/16

RP: 8001::1

Priority: 192

HoldTime: 130

Uptime: 00:03:39

Expires: 00:01:51

prefix/prefix length: FFBE::/16

RP: 8001::1

Priority: 192

HoldTime: 130

Uptime: 00:03:39

Expires: 00:01:51

prefix/prefix length: FFCE::/16

RP: 8001::1

Priority: 192

HoldTime: 130

Uptime: 00:03:39

Expires: 00:01:51

prefix/prefix length: FFDE::/16

RP: 8001::1

Priority: 192

HoldTime: 130

Uptime: 00:03:39

Expires: 00:01:51

prefix/prefix length: FFEE::/16

RP: 8001::1

Priority: 192

HoldTime: 130

Uptime: 00:03:39

Expires: 00:01:51

prefix/prefix length: FFFE::/16

RP: 8001::1

Priority: 192

HoldTime: 130

Uptime: 00:03:39

Expires: 00:01:51

1.8.4 IPv6双向PIM典型配置举例

1. 组网需求

l 整个IPv6 PIM域采用BIDIR方式，Source 1和Source 2都向IPv6 组播组FF14::101发送IPv6组播信息，Host A和Host B为IPv6组播信息的接收者。

l 将Switch C的Vlan-interface102接口配置为C-BSR，Loopback0接口配置为服务于IPv6双向PIM的C-RP。

l Switch B和Switch D分别与各自所连接的接收者之间运行MLDv1。

2. 组网图

图1-17 IPv6双向PIM典型配置组网图

设备 | 接口 | IPv6地址 | 设备 | 接口 | IPv6地址
Switch A | Vlan-int100 | 1001::1/64 | Switch D | Vlan-int300 | 4001::1/64
 | Vlan-int101 | 1002::1/64 |  | Vlan-int400 | 5001::1/64
Switch B | Vlan-int200 | 2001::1/64 |  | Vlan-int103 | 3001::2/64
 | Vlan-int101 | 1002::2/64 | Source 1 | - | 1001::2/64
 | Vlan-int102 | 2002::1/64 | Source 2 | - | 5001::2/64
Switch C | Vlan-int102 | 2002::2/64 | Receiver 1 | - | 2001::2/64
 | Vlan-int103 | 3001::1/64 | Receiver 2 | - | 4001::2/64
 | Loop0 | 6001::1/128 |  |  |

3. 配置步骤

(1) 配置IPv6转发功能，并配置IPv6地址和IPv6单播路由协议

使能各路由器的IPv6转发功能，并按照 图1-17 配置各接口的IPv6地址和前缀长度，具体配置过程略。

配置IPv6双向PIM域内的各交换机之间采用OSPFv3协议进行互连，确保IPv6双向PIM域内部在网络层互通，并且各交换机之间能够借助IPv6单播路由协议实现动态路由更新，具体配置过程略。

(2) 使能IPv6组播路由，并使能IPv6PIM-SM、IPv6双向PIM和MLD

# 在Switch A上使能IPv6组播路由，在各接口上使能IPv6 PIM-SM，并使能IPv6双向PIM。

<SwitchA> system-view

[SwitchA] multicast ipv6 routing-enable

[SwitchA] interface vlan-interface 100

[SwitchA-Vlan-interface100] pim ipv6 sm

[SwitchA-Vlan-interface100] quit

[SwitchA] interface vlan-interface 101

[SwitchA-Vlan-interface101] pim ipv6 sm

[SwitchA-Vlan-interface101] quit

[SwitchA] pim ipv6

[SwitchA-pim6] bidir-pim enable

[SwitchA-pim6] quit

# 在Switch B上使能IPv6组播路由，在各接口上使能IPv6 PIM-SM，在其连接有接收者的接口Vlan-interface200上使能MLD，并使能IPv6双向PIM。

<SwitchB> system-view

[SwitchB] multicast ipv6 routing-enable

[SwitchB] interface vlan-interface 200

[SwitchB-Vlan-interface200] mld enable

[SwitchB-Vlan-interface200] pim ipv6 sm

[SwitchB-Vlan-interface200] quit

[SwitchB] interface vlan-interface 101

[SwitchB-Vlan-interface101] pim ipv6 sm

[SwitchB-Vlan-interface101] quit

[SwitchB] interface vlan-interface 102

[SwitchB-Vlan-interface102] pim ipv6 sm

[SwitchB-Vlan-interface102] quit

[SwitchB] pim ipv6

[SwitchB-pim6] bidir-pim enable

[SwitchB-pim6] quit

# 在Switch C上使能IPv6组播路由，在各接口上使能IPv6 PIM-SM，并使能IPv6双向PIM。

<SwitchC> system-view

[SwitchC] multicast ipv6 routing-enable

[SwitchC] interface vlan-interface 102

[SwitchC-Vlan-interface102] pim ipv6 sm

[SwitchC-Vlan-interface102] quit

[SwitchC] interface vlan-interface 103

[SwitchC-Vlan-interface103] pim ipv6 sm

[SwitchC-Vlan-interface103] quit

[SwitchC] interface loopback 0

[SwitchC-LoopBack0] pim ipv6 sm

[SwitchC-LoopBack0] quit

[SwitchC] pim ipv6

[SwitchC-pim6] bidir-pim enable

# 在Switch D上使能IPv6组播路由，在各接口上使能IPv6 PIM-SM，在其连接有接收者的接口Vlan-interface300上使能MLD，并使能IPv6双向PIM。

<SwitchD> system-view

[SwitchD] multicast ipv6 routing-enable

[SwitchD] interface vlan-interface 300

[SwitchD-Vlan-interface300] mld enable

[SwitchD-Vlan-interface300] pim ipv6 sm

[SwitchD-Vlan-interface300] quit

[SwitchD] interface vlan-interface 400

[SwitchD-Vlan-interface400] pim ipv6 sm

[SwitchD-Vlan-interface400] quit

[SwitchD] interface vlan-interface 103

[SwitchD-Vlan-interface103] pim ipv6 sm

[SwitchD-Vlan-interface103] quit

[SwitchD] pim ipv6

[SwitchD-pim6] bidir-pim enable

[SwitchD-pim6] quit

(3) 配置C-BSR和C-RP

# 在Switch C上将接口Vlan-interface102配置为C-BSR，并将接口Loopback0配置为服务于IPv6双向PIM的C-RP。

[SwitchC-pim6] c-bsr 2002::2

[SwitchC-pim6] c-rp 6001::1 bidir

[SwitchC-pim6] quit

(4) 检验配置效果

通过使用 display pim ipv6 df-info 命令可以查看交换机上IPv6双向PIM的DF信息。例如：

# 查看Switch A上IPv6双向PIM的DF信息。

[SwitchA] display pim ipv6 df-info

RP Address: 6001::1

Interface State DF-Pref DF-Metric DF-Uptime DF-Address

Vlan100 Win 100 2 01:08:50 FE80::200:5EFF:

FE71:2800 (local)

Vlan101 Lose 100 1 01:07:49 FE80::20F:E2FF:

FE38:4E01

# 查看Switch B上IPv6双向PIM的DF信息。

[SwitchB] display pim ipv6 df-info

RP Address: 6001::1

Interface State DF-Pref DF-Metric DF-Uptime DF-Address

Vlan200 Win 100 1 01:24:09 FE80::200:5EFF:

FE71:2801 (local)

Vlan101 Win 100 1 01:24:09 FE80::20F:E2FF:

FE38:4E01 (local)

Vlan102 Lose 0 0 01:23:12 FE80::20F:E2FF:

FE15:5601

# 查看Switch C上IPv6双向PIM的DF信息。

[SwitchC] display pim ipv6 df-info

RP Address: 6001::1

Interface State DF-Pref DF-Metric DF-Uptime DF-Address

Loop0 - - - - -

Vlan102 Win 0 0 01:06:07 FE80::20F:E2FF:

FE15:5601 (local)

Vlan103 Win 0 0 01:06:07 FE80::20F:E2FF:

FE15:5602 (local)

# 查看Switch D上IPv6双向PIM的DF信息。

[SwitchD] display pim ipv6 df-info

RP Address: 6001::1

Interface State DF-Pref DF-Metric DF-Uptime DF-Address

Vlan300 Win 100 1 01:19:53 FE80::200:5EFF:

FE71:2803 (local)

Vlan400 Win 100 1 00:39:34 FE80::200:5EFF:

FE71:2802 (local)

Vlan103 Lose 0 0 01:21:40 FE80::20F:E2FF:

FE15:5602

通过使用 display multicast ipv6 forwarding-table df-info 命令可以查看交换机上IPv6组播转发表的DF信息，有关 display multicast ipv6 forwarding-table df-info 命令的详细介绍，请参见“IP组播命令参考”中的“IPv6组播路由与转发”。例如：

# 查看Switch A上IPv6组播转发表的DF信息。

[SwitchA] display multicast ipv6 forwarding-table df-info

Multicast DF information

Total 1 RP

Total 1 RP matched

00001. RP Address: 6001::1

MID: 0, Flags: 0x2100000:0

Uptime: 00:08:32

RPF interface: Vlan-interface101

List of 1 DF interfaces:

1: Vlan-interface100

# 查看Switch B上IPv6组播转发表的DF信息。

[SwitchB] display multicast ipv6 forwarding-table df-info

Multicast DF information

Total 1 RP

Total 1 RP matched

00001. RP Address: 6001::1

MID: 0, Flags: 0x2100000:0

Uptime: 00:06:24

RPF interface: Vlan-interface102

List of 2 DF interfaces:

1: Vlan-interface101

2: Vlan-interface200

# 查看Switch C上IPv6组播转发表的DF信息。

[SwitchC] display multicast ipv6 forwarding-table df-info

Multicast DF information

Total 1 RP

Total 1 RP matched

00001. RP Address: 6001::1

MID: 0, Flags: 0x2100000:0

Uptime: 00:07:21

RPF interface: LoopBack0

List of 2 DF interfaces:

1: Vlan-interface102

2: Vlan-interface103

# 查看Switch D上IPv6组播转发表的DF信息。

[SwitchD] display multicast ipv6 forwarding-table df-info

Multicast DF information

Total 1 RP

Total 1 RP matched

00001. RP Address: 6001::1

MID: 0, Flags: 0x2100000:0

Uptime: 00:05:12

RPF interface: Vlan-interface103

List of 2 DF interfaces:

1: Vlan-interface300

2: Vlan-interface400

1.8.5 IPv6 PIM-SSM典型配置举例

1. 组网需求

l 接收者通过组播方式接收视频点播信息，不同组织的接收者群体组成末梢网络，每个末梢网络中都存在至少一个接收者，整个IPv6 PIM域采用SSM方式。

l Host A和Host C为两个末梢网络中的IPv6组播信息接收者；Switch D通过Vlan-interface300接口与IPv6组播源（Source）所在网络连接；Switch A通过Vlan-interface100接口连接末梢网络N1，通过Vlan-interface101接口和Vlan-interface102接口分别连接Switch D和Switch E；Switch B和Switch C通过各自的Vlan-interface200接口连接末梢网络N2，分别通过Vlan-interface103和Vlan-interface104接口连接Switch E；Switch E连接Switch A、Switch B、Switch C和Switch D。

l SSM组播组的范围是FF3E::/64。

l Switch A与末梢网络N1之间运行MLDv2；Switch B和Switch C与末梢网络N2之间也运行MLDv2。

2. 组网图

图1-18 IPv6 PIM-SSM典型配置组网图

设备 | 接口 | IPv6地址 | 设备 | 接口 | IPv6地址
Switch A | Vlan-int100 | 1001::1/64 | Switch D | Vlan-int300 | 4001::1/64
 | Vlan-int101 | 1002::1/64 |  | Vlan-int101 | 1002::2/64
 | Vlan-int102 | 1003::1/64 |  | Vlan-int105 | 4002::1/64
Switch B | Vlan-int200 | 2001::1/64 | Switch E | Vlan-int104 | 3001::2/64
 | Vlan-int103 | 2002::1/64 |  | Vlan-int103 | 2002::2/64
Switch C | Vlan-int200 | 2001::2/64 |  | Vlan-int102 | 1003::2/64
 | Vlan-int104 | 3001::1/64 |  | Vlan-int105 | 4002::2/64

3. 配置步骤

(1) 使能IPv6转发功能，并配置IPv6地址和IPv6单播路由协议

使能各交换机的IPv6转发功能，并按照图1-18 配置各接口的IPv6地址和前缀长度，具体配置过程略。

配置IPv6 PIM-SSM域内的各交换机之间采用OSPFv3协议进行互连，确保IPv6 PIM-SSM域内部在网络层互通，并且各交换机之间能够借助IPv6单播路由协议实现动态路由更新，具体配置过程略。

(2) 使能IPv6组播路由，并使能IPv6 PIM-SM和MLD

# 在Switch A上使能IPv6组播路由，在各接口上使能IPv6 PIM-SM，并在其连接末梢网络的接口Vlan-interface100上使能MLD，且配置其版本为2。

<SwitchA> system-view

[SwitchA] multicast ipv6 routing-enable

[SwitchA] interface vlan-interface 100

[SwitchA-Vlan-interface100] mld enable

[SwitchA-Vlan-interface100] mld version 2

[SwitchA-Vlan-interface100] pim ipv6 sm

[SwitchA-Vlan-interface100] quit

[SwitchA] interface vlan-interface 101

[SwitchA-Vlan-interface101] pim ipv6 sm

[SwitchA-Vlan-interface101] quit

[SwitchA] interface vlan-interface 102

[SwitchA-Vlan-interface102] pim ipv6 sm

[SwitchA-Vlan-interface102] quit

Switch B和Switch C的配置与Switch A相似，Switch D和Switch E除了不需要在相应接口上使能MLD外，其它的配置也与Switch A相似，配置过程略。

(3) 配置IPv6 SSM组播组的地址范围

# 在Switch A上配置IPv6 SSM组播组的地址范围为FF3E::/64。

[SwitchA] acl ipv6 number 2000

[SwitchA-acl6-basic-2000] rule permit source ff3e:: 64

[SwitchA-acl6-basic-2000] quit

[SwitchA] pim ipv6

[SwitchA-pim6] ssm-policy 2000

[SwitchA-pim6] quit

Switch B、Switch C、Switch D和Switch E的配置与Switch A相似，配置过程略。

(4) 检验配置效果

通过使用 display pim ipv6 interface 命令可以查看交换机接口上IPv6 PIM的配置和运行情况。例如：

# 查看Switch A上IPv6 PIM的配置信息。

[SwitchA] display pim ipv6 interface

Interface NbrCnt HelloInt DR-Pri DR-Address

Vlan100 0 30 1 1001::1

(local)

Vlan101 1 30 1 1002::2

Vlan102 1 30 1 1003::2

假如Host A需要接收指定IPv6组播源S（4001::100/64）发往IPv6组播组G（FF3E::101）的信息，Switch A会向IPv6组播源方向构造SPT，SPT路径中的交换机（Switch A和Switch D）上生成（S，G）表项，而SPT路径之外的交换机（Switch E）上没有IPv6组播路由项，通过使用 display pim ipv6 routing-table 命令可以查看交换机的IPv6 PIM路由表信息。例如：

# 查看Switch A上的IPv6 PIM路由表信息。

[SwitchA] display pim ipv6 routing-table

Total 0 (*, G) entry; 1 (S, G) entry

(4001::100, FF3E::101)

Protocol: pim-ssm, Flag:

UpTime: 00:00:11

Upstream interface: Vlan-interface101

Upstream neighbor: 1002::2

RPF prime neighbor: 1002::2

Downstream interface(s) information:

Total number of downstreams: 1

1: Vlan-interface100

Protocol: mld, UpTime: 00:00:11, Expires: 00:03:25

# 查看Switch D上的IPv6 PIM路由表信息。

[SwitchD] display pim ipv6 routing-table

Total 0 (*, G) entry; 1 (S, G) entry

(4001::100, FF3E::101)

Protocol: pim-ssm, Flag: LOC

UpTime: 00:08:02

Upstream interface: Vlan-interface300

Upstream neighbor: NULL

RPF prime neighbor: NULL

Downstream interface(s) information:

Total number of downstreams: 1

1: Vlan-interface105

Protocol: pim-ssm, UpTime: 00:08:02, Expires: 00:03:25


1.9 常见配置错误举例

1.9.1 无法正确建立组播分发树

1. 故障现象

网络中各路由器（包括直连IPv6组播源或接收者的路由器）上都没有IPv6组播转发项，也就是说无法正确建立组播分发树，客户端无法接收IPv6组播数据。

2. 分析

l 无论运行哪个IPv6 PIM模式，IPv6单播路由是创建IPv6 PIM路由项的基础。只有单播运行顺畅，组播才能运行成功。

l IPv6 PIM协议需要RPF接口支持IPv6 PIM协议。RPF邻居也必须是IPv6 PIM邻居。如果RPF接口或RPF邻居没有使能IPv6 PIM，组播分发树就不能正确建立，导致组播数据转发异常。

l IPv6 PIM协议需要整个网络运行相同的IPv6 PIM模式，即DM或SM。否则，组播分发树不能正确建立，导致组播数据转发异常。

3. 处理过程

(1) 检查IPv6单播路由。使用命令 display ipv6 routing-table 命令检查是否有到达IPv6组播源或RP的IPv6单播路由项。

(2) 检查RPF接口上是否使能IPv6 PIM。通过命令 display pim ipv6 interface 命令查看接口的IPv6 PIM信息。若接口上没有使能IPv6 PIM，请使用 pim ipv6 dm 或 pim ipv6 sm 命令使能IPv6 PIM。

(3) 检查RPF邻居是否是IPv6 PIM邻居。通过命令 display pim ipv6 neighbor 查看IPv6 PIM邻居信息。

(4) 检查直连IPv6组播源、直连接收者的路由器接口上是否使能了IPv6 PIM和MLD。

(5) 检查IPv6 PIM模式是否一致。通过命令 display pim ipv6 interface verbose 检查RPF接口和RPF邻居所在路由器的对应接口上是否使能了相同模式的IPv6 PIM协议。

(6) 检查整个网络中各路由器上的IPv6 PIM模式是否一致。通过命令 display current-configuration 查看接口上的IPv6 PIM模式信息，确保所有路由器配置相同模式的IPv6 PIM协议，即要么全部配置为 pim ipv6 sm，要么全部配置为 pim ipv6 dm。

1.9.2 IPv6组播数据异常终止在中间路由器

1. 故障现象

IPv6组播数据可以到达中间路由器，但无法到达最后一跳路由器。中间路由器某接口上收到IPv6组播数据，但IPv6 PIM路由表中没有创建相应的（S，G）表项。

2. 分析

l 命令 multicast ipv6 boundary 用于在接口上设置IPv6组播转发边界，如果IPv6组播数据无法通过该边界，IPv6 PIM是无法创建路由项的。

l 此外，source-policy 命令用于过滤接收到的IPv6组播数据报文。如果IPv6组播数据报文无法通过该命令的IPv6 ACL规则，IPv6 PIM也是无法创建路由项的。

3. 处理过程

(1) 检查IPv6组播转发边界的配置。通过命令 display current-configuration 查看IPv6组播转发边界上的设置，使用 multicast ipv6 boundary 命令更改IPv6组播转发边界的设置，使IPv6组播数据能够通过该边界。

(2) 检查IPv6组播过滤器配置。通过命令 display current-configuration 查看IPv6组播过滤器的配置，更改 source-policy 命令的IPv6 ACL规则，使IPv6组播数据的源/组地址通过IPv6 ACL过滤。

1.9.3 IPv6 PIM-SM中RP无法加入SPT

1. 故障现象

共享树不能正确建立，或者RP不能加入到达IPv6组播源的源树。

2. 分析

l RP是IPv6 PIM-SM网络的核心，为指定IPv6组播组服务。多个RP可以在网络中共存。请确保所有路由器上的RP信息是一致的；同一个指定组是被映射到相同的RP。否则，IPv6组播异常。

l 对于静态RP机制，整个网络中的所有路由器包括静态RP本身必须用静态RP命令配置相同的RP。否则，IPv6组播异常。

3. 处理过程

(1) 检查是否有到达RP的路由。通过命令 display ipv6 routing-table 查看各路由器上是否有到达RP的路由。

(2) 检查动态RP信息。通过命令 display pim ipv6 rp-info 查看各路由器上的RP信息是否一致。如果不一致，请配置成一致。

(3) 检查静态RP的配置。通过命令 display pim ipv6 rp-info 查看全网所有路由器上是否配置了相同的静态RP。

1.9.4 IPv6 PIM-SM中无法建立RPT或无法进行源注册

1. 故障现象

C-RP无法向BSR单播通告报文，BSR没有发布包含C-RP的自举报文，BSR上没有到达各C-RP的单播路由，共享树无法正确建立，或者DR无法向RP进行源注册。

2. 分析

l C-RP周期性用单播模式向BSR通告报文。如果C-RP没有到达BSR的路由，BSR就不能接收C-RP发来的通告报文，也就不会通告包含该C-RP的自举消息。

l RP是IPv6 PIM-SM网络的核心。请确保所有路由器上的RP信息是一致的，指定IPv6组播组G被映射到相同的RP，到RP的单播路由是可达的。

3. 处理过程

(1) 检查到各C-RP、RP和BSR的单播路由是否可达。通过命令 display ipv6 routing-table 查看各路由器上是否有到达RP和BSR的路由，及C-RP和BSR之间的路由。请确保各C-RP上存在到达BSR的单播路由，BSR上存在到达各C-RP的单播路由，整个网络中所有路由器上存在到达RP的单播路由。

(2) 检查RP和BSR信息。IPv6 PIM-SM协议需要RP和BSR的支持，首先使用命令 display pim ipv6 bsr-info 查看各路由器上是否有BSR信息，使用 display pim ipv6 rp-info 命令查看各路由器上RP信息是否正确。

(3) 检查IPv6 PIM邻居关系。通过命令 display pim ipv6 neighbor 查看各路由器是否建立了正常的邻居关系。


1 IPv6 MBGP配置

l S3600V2-SI系列交换机不支持IPv6 MGBP功能。

l 在以下路由协议的介绍中所指的路由器及路由器图标，代表了一般意义下的路由器以及运行了路由协议的以太网交换机。

l 本章只列出了IPv6 MBGP专有的配置与操作，其他相关内容请参见“三层技术-IP路由配置指导”中的“IPv6 BGP”。

相关链接

  • 1.1 IPv6 MBGP简介
  • 1.2 IPv6 MBGP配置任务简介
  • 1.3 配置IPv6 MBGP的基本功能
  • 1.4 控制路由信息的发布与接收
  • 1.5 配置IPv6 MBGP的路由属性
  • 1.6 调整和优化IPv6 MBGP网络
  • 1.7 配置大型IPv6 MBGP网络
  • 1.8 IPv6 MBGP显示和维护
  • 1.9 IPv6 MBGP典型配置举例
父主题： 16-IPv6 MBGP配置


1.1 IPv6 MBGP简介

为了提供对多种网络层协议的支持，IETF（Internet Engineering Task Force，互联网工程任务组）对BGP-4进行了扩展，形成MP-BGP（Multiprotocol Border Gateway Protocol，多协议边界网关协议），使BGP能够为多种路由应用提供路由信息。

由于IPv6组播拓扑和IPv6单播拓扑有可能不同，需要通过MP-BGP扩展使得BGP能够将IPv6单播NLRI（Network Layer Reachability Information，网络层可达性信息）和IPv6组播NLRI分开运载，其中组播NLRI专用于执行RPF（Reverse Path Forwarding，逆向路径转发）功能。这使得在IPv6单播路由表和组播路由表中，对于相同的前缀有不同的路径选择，维护了一致的单播转发并使域间组播正常工作。

目前的MP-BGP标准是RFC 2858（Multiprotocol Extensions for BGP-4，BGP-4的多协议扩展）。MP-BGP在IPv6 组播上的应用简称为IPv6 MBGP（IPv6 Multicast BGP，IPv6 组播BGP）。

l 本章主要介绍MP-BGP应用于IPv6组播的配置事项，即IPv6 MBGP配置事项，有关BGP的详细内容以及配置事项，请参见“三层技术-IP路由配置指导”中的“BGP”。

l 有关RPF检查的详细内容以及配置事项，请参见“IP组播配置参考”中的“组播路由与转发”。


1.2 IPv6 MBGP配置任务简介

表1-1 IPv6 MBGP配置任务简介

配置任务 |  | 说明 | 详细配置
配置IPv6 MBGP基本功能 | 配置IPv6 MBGP对等体 | 必选 | 1.3.2
 | 配置路由首选值 | 可选 | 1.3.3
控制路由信息的发布与接收 | 配置IPv6 MBGP发布本地IPv6路由 | 可选 | 1.4.2
 | 配置IPv6 MBGP引入其他路由 | 可选 | 1.4.3
 | 配置IPv6 MBGP路由聚合 | 可选 | 1.4.4
 | 配置向MBGP对等体/对等体组发送缺省路由 | 可选 | 1.4.5
 | 配置IPv6 MBGP路由信息的发布策略 | 可选 | 1.4.6
 | 配置IPv6 MBGP路由信息的接收策略 | 可选 | 1.4.7
 | 配置IPv6 MBGP路由衰减 | 可选 | 1.4.8
配置IPv6 MBGP的路由属性 | 配置IPv6 MBGP路由管理优先级 | 可选 | 1.5.2
 | 配置本地优先级缺省值 | 可选 | 1.5.3
 | 配置MED属性 | 可选 | 1.5.4
 | 配置发布路由时将自身地址作为下一跳 | 可选 | 1.5.5
 | 配置AS_PATH属性 | 可选 | 1.5.6
调整和优化IPv6 MBGP网络 | 配置IPv6 MBGP软复位 | 可选 | 1.6.2
 | 配置IPv6 MBGP ORF能力 | 可选 | 1.6.3
 | 配置最大等价路由的条数 | 可选 | 1.6.4
组建大型IPv6 MBGP网络 | 配置IPv6 MBGP对等体组 | 可选 | 1.7.2
 | 配置IPv6 MBGP团体 | 可选 | 1.7.3
 | 配置IPv6 MBGP路由反射器 | 可选 | 1.7.4


1.3 配置IPv6 MBGP的基本功能

1.3.1 配置准备

由于IPv6 MBGP是MP-BGP的一种应用，因此在配置IPv6 MBGP之前，需完成以下任务：

l 使能IPv6功能

l 配置接口的网络层地址

l 配置BGP基本功能

1.3.2 配置IPv6 MBGP对等体

表1-2 配置IPv6 MBGP对等体

操作 | 命令 | 说明
进入系统视图 | system-view | -
启动BGP，进入BGP视图 | bgp as-number | 必选 缺省情况下，系统没有运行BGP
进入IPv6地址族视图 | ipv6-family | -
配置对等体的AS号 | peer ipv6-address as-number as-number | 必选 缺省情况下，对等体无AS号
创建并进入IPv6 MBGP地址族视图 | ipv6-family multicast | 必选
激活指定对等体 | peer ipv6-address enable | 必选 缺省情况下，对等体在IPv6 MBGP地址族视图下处于非激活状态

1.3.3 配置路由首选值

表1-3 配置路由首选值

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入BGP视图 | bgp as-number | -
进入IPv6 MBGP地址族视图 | ipv6-family multicast | -
为从IPv6 MBGP对等体/对等体组接收的路由分配首选值 | peer { ipv6-group-name | ipv6-address } preferred-value value | 可选 缺省情况下，从IPv6 MBGP对等体/对等体组接收的路由的首选值为0

l 如果同时通过路由策略和 peer preferred-value命令为从IPv6 MBGP对等体/对等体组接收的IPv6 MBGP路由设置首选值，通过路由策略过滤的IPv6 MBGP路由的首选值将取路由策略中设置的首选值而不是 peer preferred-value命令设置的首选值；

l 只有当路由策略里设置的首选值为0时，IPv6 MBGP路由的首选值才会取 peer preferred-value命令设置的值；

l 没有通过路由策略过滤的IPv6组播路由的首选值仍取 peer preferred-value命令设置的首选值。

l 通过路由策略配置BGP IPv6组播路由信息首选值的相关配置可参考命令 peer route-policy和“三层技术-IP路由命令参考/路由策略”中的 apply preferred-value。


1.4 控制路由信息的发布与接收

控制IPv6 MBGP的路由信息的发布和接收，包括对路由信息进行过滤、应用路由策略和路由衰减。

1.4.1 配置准备

在控制路由信息的发布与接收之前，需完成以下任务：配置IPv6 MBGP基本功能。

1.4.2 配置IPv6 MBGP发布本地IPv6路由

表1-4 配置IPv6 MBGP发布本地IPv6路由

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入BGP视图 | bgp as-number | -
进入IPv6 MBGP地址族视图 | ipv6-family multicast | -
将路由通告到IPv6 MBGP路由表中 | network ipv6-address prefix-length [ route-policy route-policy-name | short-cut ] | 必选 缺省情况下，IPv6 MBGP不通告任何路由

1.4.3 配置IPv6 MBGP引入其他路由

表1-5 配置IPv6 MBGP引入其他路由

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入BGP视图 | bgp as-number | -
进入IPv6 MBGP地址族视图 | ipv6-family multicast | -
允许将缺省路由引入到IPv6 MBGP路由表中 | default-route imported | 可选 缺省情况下，IPv6 MBGP不允许将缺省路由引入到IPv6 MBGP路由表中
配置引入其它协议路由信息并通告 | import-route protocol [ process-id [ med med-value | route-policy route-policy-name ] * ] | 必选 缺省情况下，IPv6 MBGP不引入且不通告其它协议的路由

通过 import-route 命令引入IGP路由时，不能引入IGP的缺省路由，必须通过配置 default-route imported 命令将缺省路由引入到IPv6 MBGP路由表中。

1.4.4 配置IPv6 MBGP路由聚合

在中型或大型BGP网络中，在向对等体发布IPv6组播路由信息时，可以配置路由聚合，减小对等体路由表中的路由数量。BGP仅支持IPv6组播路由的手动聚合。

表1-6 配置路由聚合

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入BGP视图 | bgp as-number | -
进入IPv6 MBGP地址族视图 | ipv6-family multicast | -
配置手动路由聚合 | aggregate ipv6-address prefix-length [ as-set | attribute-policy route-policy-name | detail-suppressed | origin-policy route-policy-name | suppress-policy route-policy-name ] * | 必选 缺省情况下，不进行路由聚合

1.4.5 配置向IPv6 MBGP对等体/对等体组发送缺省路由

表1-7 配置向IPv6 MBGP对等体/对等体组发送缺省路由

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入BGP视图 | bgp as-number | -
进入IPv6 MBGP地址族视图 | ipv6-family multicast | -
配置向IPv6 MBGP对等体/对等体组发送缺省路由 | peer { ipv6-group-name | ipv6-address } default-route-advertise [ route-policy route-policy-name ] | 必选 缺省情况下，不向IPv6 MBGP对等体/对等体组发布缺省路由

执行 peer default-route-advertise命令后，不论本地路由表中是否存在缺省路由，都将向指定IPv6 MBGP对等体/对等体组发布一条下一跳地址为本地地址的缺省路由。

1.4.6 配置IPv6 MBGP路由信息的发布策略

表1-8 配置IPv6 MBGP路由信息的发布策略

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入BGP视图 | bgp as-number | -
进入IPv6 MBGP地址族视图 | ipv6-family multicast | -
对发布的路由信息进行过滤 | filter-policy { acl6-number | ipv6-prefix ipv6-prefix-name } export [ protocol process-id ] | 任选其一 缺省情况下，不对发布的路由信息进行过滤 可以根据需求选择过滤策略，同时配置几种过滤策略时，按照如下顺序执行： l filter-policy export l peer filter-policy export l peer as-path-acl export l peer ipv6-prefix export l peer route-policy export 只有通过前面的过滤策略，才能继续执行后面的过滤策略；只有通过所有配置的过滤策略后，路由信息才能被发布
配置基于IPv6 ACL的路由过滤策略 | peer { ipv6-group-name | ipv6-address } filter-policy acl6-number export
配置基于AS路径过滤列表的IPv6 BGP路由过滤策略 | peer { ipv6-group-name | ipv6-address } as-path-acl as-path-acl-number export
配置基于IPv6地址前缀列表的路由过滤策略 | peer { ipv6-group-name | ipv6-address } ipv6-prefix ipv6-prefix-name export
配置出方向路由策略 | peer { ipv6-group-name | ipv6-address } route-policy route-policy-name export

l IPv6 MBGP对等体组的成员必须与所在的组使用相同的出方向路由更新策略，即对外发布路由时，一个对等体组遵循的策略是相同的。

l IPv6 MBGP对引入的路由信息进行过滤后，会将符合条件的路由信息发布给IPv6 MBGP对等体。

1.4.7 配置IPv6 MBGP路由信息的接收策略

对IPv6 MBGP接收的路由进行过滤，只有满足某些条件的路由才能被IPv6 MBGP接收，并加到路由表中。

表1-9 配置IPv6 MBGP路由信息的接收策略

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入BGP视图 | bgp as-number | -
进入IPv6 MBGP地址族视图 | ipv6-family multicast | -
对接收的路由信息进行过滤 | filter-policy { acl6-number | ipv6-prefix ipv6-prefix-name } import | 任选其一 缺省情况下，不对接收的路由信息进行过滤 可以根据需求选择过滤策略，同时配置几种过滤策略时，按照如下顺序执行： l filter-policy import l peer filter-policy import l peer as-path-acl import l peer ip-prefix import peer route-policy import 只有通过前面的过滤策略，才能继续执行后面的过滤策略；只有通过所有配置的过滤策略后，路由信息才能被接收
对接收的路由信息应用路由策略 | peer { ipv6-group-name | ipv6-address } route-policy route-policy-name import
配置基于IPv6 ACL的路由过滤策略 | peer { ipv6-group-name | ipv6-address } filter-policy acl6-number import
配置基于AS路径过滤列表的IPv6 BGP路由过滤策略 | peer { ipv6-group-name | ipv6-address } as-path-acl as-path-acl-number import
配置基于IPv6地址前缀列表的路由过滤策略 | peer { ipv6-group-name | ipv6-address } ipv6-prefix ipv6-prefix-name import
配置允许从对等体/对等体组接收的最大IPv6地址前缀数 | peer { ipv6-group-name | ipv6-address } route-limit limit [ percentage ] | 可选 缺省情况下，允许从组播对等体/对等体组接收的最大路由数无限制

IPv6 MBGP对等体组的成员可以与所在的组使用不同的入方向路由策略，即接收路由时，各对等体可以选择自己的策略。

1.4.8 配置IPv6 MBGP路由衰减

表1-10 配置IPv6 MBGP路由衰减

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入BGP视图 | bgp as-number | -
进入IPv6 MBGP地址族视图 | ipv6-family multicast | -
配置IPv6 MBGP路由衰减 | dampening [ half-life-reachable half-life-unreachable reuse suppress ceiling | route-policy route-policy-name ] * | 可选 缺省情况下，没有配置IPv6 MBGP路由衰减


1.5 配置IPv6 MBGP的路由属性

本节主要介绍使用各类路由属性来改变IPv6 MBGP的选路策略。包括如下属性：

l IPv6 MBGP路由管理优先级

l 缺省LOCAL_PREF属性值

l MED属性

l NEXT_HOP属性

l AS_PATH属性

1.5.1 配置准备

在配置IPv6 MBGP的路由属性之前，需完成以下任务：配置IPv6 MBGP基本功能。

1.5.2 配置IPv6 MBGP路由管理优先级

表1-11 配置IPv6 MBGP路由管理优先级

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入BGP视图 | bgp as-number | -
进入IPv6 MBGP地址族视图 | ipv6-family multicast | -
配置IPv6 MBGP路由管理优先级 | preference { external-preference internal-preference local-preference | route-policy route-policy-name } | 可选 缺省情况下，EBGP路由的管理优先级为255，IBGP路由的管理优先级为255，本地产生的IPv6 BGP路由的管理优先级为130

1.5.3 配置本地优先级缺省值

表1-12 配置本地优先级缺省值

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入BGP视图 | bgp as-number | -
进入IPv6 MBGP地址族视图 | ipv6-family multicast | -
配置本地优先级缺省值 | default local-preference value | 可选 缺省情况下，本地优先级缺省值为100

1.5.4 配置MED属性

表1-13 配置MED属性

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入BGP视图 | bgp as-number | -
进入IPv6 MBGP地址族视图 | ipv6-family multicast | -
配置系统的缺省MED值 | default med med-value | 可选 缺省情况下，系统缺省的MED值为0
配置允许比较来自不同AS邻居的路由的MED属性值 | compare-different-as-med | 可选 缺省情况下，不允许比较来自不同AS邻居的路由的MED属性值
配置根据路由来自的AS进行分组对MED排序优选 | bestroute compare-med | 可选 缺省情况下，不根据路由来自的AS进行分组对MED排序优选
配置允许比较联盟对等体的路由按MED值进行优选 | bestroute med-confederation | 可选 缺省情况下，比较联盟对等体的路由时不考虑MED值

1.5.5 配置发布路由时将自身地址作为下一跳

在某些组网环境中，为保证IPv6组播IBGP邻居能够找到正确的下一跳，可以配置在向IPv6组播IBGP对等体/对等体组发布路由时，改变下一跳地址为自身地址。如果配置了IPv6 MBGP负载分担，则不论是否配置了 peer next-hop-local 命令，本地路由器向IPv6组播IBGP对等体/对等体组发布路由时都先将下一跳地址改变为自身地址。

在第三方下一跳（即两个IPv6 MBGP连接在同一网段的广播网）这种特殊的组网环境中，缺省情况下，向IPv6组播EBGP对等体/对等体组发布路由时，不将自身地址作为下一跳。

表1-14 配置发布路由时将自身地址做为下一跳

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入BGP视图 | bgp as-number | -
进入IPv6 MBGP地址族视图 | ipv6-family multicast | -
配置发布路由时将自身地址作为下一跳 | peer { ipv6-group-name | ipv6-address } next-hop-local | 可选 缺省情况下，向EBGP对等体/对等体组发布路由时，将自身地址作为下一跳；向IBGP对等体/对等体发布路由时，不将自身地址作为下一跳

1.5.6 配置AS_PATH属性

表1-15 配置AS_PATH属性

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入BGP视图 | bgp as-number | -
进入IPv6 MBGP地址族视图 | ipv6-family multicast | -
配置允许本地AS号在所接收的路由的AS_PATH属性中出现，并可同时配置允许重复的次数 | peer { ipv6-group-name | ipv6-address } allow-as-loop [ number ] | 可选 缺省情况下，不允许本地AS号重复
禁止路由器将AS_PATH当作选路算法中的一个因素 | bestroute as-path-neglect | 可选 缺省情况下，路由器可以将AS_PATH当作选路算法中的一个因素
配置发送IPv6 MBGP更新报文时不携带私有AS编号 | peer { ipv6-group-name | ipv6-address } public-as-only | 可选 缺省情况下，发送IPv6 MBGP更新报文时携带私有自治系统号


1.6 调整和优化IPv6 MBGP网络

1.6.1 配置准备

在调整和优化IPv6 MBGP网络之前，需完成以下任务：

l 使能IPv6能力

l 配置IPv6 MBGP基本功能

1.6.2 配置IPv6 MBGP软复位

IPv6 MBGP的选路策略改变后，为了使新的策略生效，必须复位IPv6 MBGP连接，但这样会造成短暂的IPv6 MBGP连接中断。

通过使能Route-refresh功能，当策略改变后，系统可以在不中断IPv6 MBGP连接的情况下，自动对IPv6 MBGP路由表进行动态刷新。

如果对等体不支持Route-Refresh功能，则可以将从对等体接收的所有路由更新保存在本地，当选路策略发生改变后，在不中断连接的情况下重新刷新IPv6 MBGP路由表，并应用新的策略。

1. 通过Route-Refresh实现IPv6 MBGP软复位

在对等体支持并使能Route-Refresh功能的情况下，如果IPv6 MBGP的路由策略发生了变化，本地路由器会向IPv6 MBGP对等体发布Route-Refresh消息，收到此消息的对等体会将其路由信息重新发给本地路由器。这样，在不中断IPv6 MBGP连接的情况下，就可以对IPv6 MBGP路由表进行动态更新，并应用新的选路策略。

表1-16 通过Route-Refresh实现IPv6 MBGP软复位

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入BGP视图 | bgp as-number | -
进入IPv6地址族视图 | ipv6-family | -
使能IPv6 BGP路由刷新功能 | peer { ipv6-group-name | ipv6-address } capability-advertise route-refresh | 可选 缺省情况下，路由刷新功能处于使能状态

2. 通过将所有路由更新保存在本地实现IPv6 MBGP软复位

当对等体不支持Route-Refresh功能时，可通过配置 peer keep-all-routes 命令实现软复位功能。

用户也可以通过执行 refresh bgp ipv6 multicast 命令对保存在本地的所有路由重新过一遍策略。

表1-17 通过将所有路由更新保存在本地实现IPv6 MBGP软复位

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入BGP视图 | bgp as-number | -
进入IPv6地址族视图 | ipv6-family | -
进入IPv6 MBGP地址族视图 | ipv6-family multicast | -
保存所有来自对等体/对等体组的原始路由信息，即使这些路由没有通过已配置的入口策略 | peer { ipv6-group-name | ipv6-address } keep-all-routes | 必选 缺省情况下，不保存对等体/对等体组的原始路由信息
手工对IPv6 MBGP连接进行软复位 | refresh bgp ipv6 multicast { all | ipv6-address | group ipv6-group-name | external | internal } { export | import } | 可选

1.6.3 使能IPv6 MBGP ORF能力功能

BGP ORF特性是将本地入口策略通过Route-refresh报文发送给邻居，当邻居需要向BGP对等体发送Update更新报文时，通过本地的路由策略后还需要进行ORF策略的过滤，只有通过ORF策略的路由信息才会发给BGP对等体，以达到减少BGP邻居间Update更新报文的交互，节省网络资源的目的。

使能BGP ORF能力后，本地和BGP对等体会通过Open报文协商ORF能力（即收发的报文里是否允许携带ORF信息，如果允许携带，是否可以携带非标准的ORF信息），当协商完毕并成功建立邻居关系后，可以通过特殊的Route-refresh报文交互ORF信息。

ORF能力协商成功需要两端的配置来保证，关于两端参数的选择请参见 表1-19 。

表1-18 配置IPv6 MBGP ORF能力

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入BGP视图 | bgp as-number | 必选
进入IPv6地址族视图 | ipv6-family | -
使能BGP路由刷新功能 | peer { group-name | ipv6-address } capability-advertise route-refresh | 可选 缺省情况下，BGP路由刷新功能处于使能状态 如果该功能当前处于未使能状态，则必须配置该命令
使能BGP ORF非标准功能 | peer { group-name | ipv6-address } capability-advertise orf non-standard | 可选 缺省情况下，BGP ORF能力支持RFC5291、RFC5292的标准能力 如果该功能当前处于未使能状态，则必须配置该命令
进入IPv6 MBGP地址族视图 | ipv6-family multicast | -
使能BGP ORF地址前缀能力协商功能 | peer { group-name | ipv6-address } capability-advertise orf ip-prefix { both | receive | send } | 必选 缺省情况下，BGP不支持ORF 地址前缀的能力协商

表1-19 both、send、receive参数选择以及配置效果描述表

本地选择参数 | 对端选择参数 | 协商成功后
send | receive | 本端的ORF发送能力，对端的ORF接收能力
 | both
receive | send | 本端的ORF接收能力，对端的ORF发送能力
 | both
both | both | 双向的ORF发送和接收能力

1.6.4 配置最大等价路由的条数

表1-20 配置最大等价路由的条数

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入BGP视图 | bgp as-number | -
进入IPv6 MBGP地址族视图 | ipv6-family multicast | -
配置进行IPv6 MBGP负载分担的路由条数 | balance number | 必选 缺省情况下，不进行负载分担


1.7 配置大型IPv6 MBGP网络

1.7.1 配置准备

在配置IPv6 MBGP对等体组之前，需完成以下任务：配置IPv6 MBGP基本功能。

1.7.2 配置IPv6 MBGP对等体组

为方便管理，减少重复配置操作，管理员将一些享有相同更新策略的IPv6 BGP对等体划分到一个逻辑组织，这些组织就称为对等体组。只须对一个对等体组配置策略，该策略对组内所有成员都有效。

表1-21 配置IPv6 MBGP对等体组

操作 | 命令 | 说明
进入系统视图 | system-view | -
启动BGP，进入BGP视图 | bgp as-number | -
进入IPv6地址族视图 | ipv6-family | -
创建BGP对等体组 | group ipv6-group-name [ external | internal ] | 必选
将对等体加入已存在的对等体组 | peer ipv6-address group ipv6-group-name [ as-number as-number ] | 必选 缺省情况下，对等体不属于任何对等体组
进入IPv6 MBGP地址族视图 | ipv6-family multicast | -
使能IPv6单播对等体组 | peer ipv6-group-name enable | 必选
在已使能的对等体组中加入使能的IPv6组播对等体 | peer ipv6-address group ipv6-group-name | 必选 缺省情况下，对等体不属于任何对等体组

配置IPv6 MBGP对等体组：

l 需要先在IPv6地址族视图下将对等体加入对等体组；

l 然后在BGP IPv6组播地址族视图下使能IPv6 MBGP对等体组，并把IPv6 MBGP对等体加入IPv6 MBGP对等体组。

1.7.3 配置IPv6 MBGP团体

对等体组可以使一组对等体共享相同的策略，而利用团体可以使多个AS中的一组IPv6 MBGP路由器共享相同的策略。团体是一个路由属性，在IPv6 MBGP对等体之间传播，它并不受到AS范围的限制。

BGP路由器在将带有团体属性的路由发布给其它对等体之前，可以改变此路由原有的团体属性。除了使用公认的团体属性外，用户还可以使用团体属性列表自定义扩展团体属性，以便更为灵活地控制路由策略。

表1-22 配置IPv6 MBGP团体

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
启动BGP，进入BGP视图 |  | bgp as-number | -
进入IPv6 MBGP地址族视图 |  | ipv6-family multicast | -
配置向IPv6 MBGP对等体/IPv6 MBGP对等体组发布团体属性 | 配置发布团体属性 | peer { ipv6-group-name | ipv6-address } advertise-community | 必选 缺省情况下，不将团体属性发布给任何对等体/对等体组
 | 配置发布扩展团体属性 | peer { ipv6-group-name | ipv6-address } advertise-ext-community | 必选 缺省情况下，不将扩展团体属性发布给任何对等体/对等体组
对发布给MBGP对等体/MBGP对等体组的路由指定路由策略 |  | peer { ipv6-group-name | ipv6-address } route-policy route-policy-name export | 必选 缺省情况下，不指定对等体/对等体组的路由策略

l 配置IPv6 MBGP团体时，必须使用路由策略来定义具体的团体属性，然后在发布路由信息时应用此路由策略。

l 关于路由策略的配置，请参见“三层技术-IP路由配置指导”中的“路由策略”。

1.7.4 配置IPv6 MBGP路由反射器

为保证IBGP对等体之间的连通性，需要在IPv6 组播IBGP对等体之间建立全连接关系。当IPv6组播IBGP对等体数目很多时，建立全连接网的开销很大。路由反射器可以解决这个问题。

表1-23 配置IPv6 MBGP路由反射器

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入BGP视图 | bgp as-number | -
进入IPv6 MBGP地址族视图 | ipv6-family multicast | -
配置将本机作为路由反射器，并将IPv6 MBGP对等体/对等体组作为路由反射器的客户 | peer { ipv6-group-name | ipv6-address } reflect-client | 必选 缺省情况下，没有配置路由反射器及其客户
使能客户机之间的路由反射 | reflect between-clients | 可选 缺省情况下，允许客户到客户的路由反射
配置路由反射器的集群ID | reflector cluster-id cluster-id | 可选 缺省情况下，每个路由反射器是使用自己的Router ID作为集群ID

l 通常情况下，路由反射器的客户之间不要求是全连接的，路由通过反射器从一个客户反射到其它客户；如果客户之间是全连接的，可以禁止客户间的反射，以便减少开销。

l 当一个集群里有多个路由反射器时，需要给所有位于同一个集群内的路由反射器配置相同的 cluster-id，以避免路由循环。


1.8 IPv6 MBGP显示和维护

1.8.1 IPv6 MBGP显示

在完成上述配置后，在任意视图下执行 display 命令可以显示配置后IPv6 MBGP的运行情况，通过查看显示信息验证配置的效果。

表1-24 IPv6 MBGP显示

操作 | 命令
显示对等体组信息 | display bgp ipv6 multicasst group [ ipv6-group-name ] [ | { begin | exclude | include } regular-expression ]
显示IPv6 MBGP发布的IPv6路由信息 | display bgp ipv6 multicast network [ | { begin | exclude | include } regular-expression ]
显示AS路径信息 | display bgp ipv6 multicast paths [ as-regular-expression | | { begin | exclude | include } regular-expression ]
显示IPv6 MBGP对等体/对等体组信息 | display bgp ipv6 multicast peer [ [ ipv6-address ] verbose ] [ | { begin | exclude | include } regular-expression ]
显示收到的邻居ORF信息中的前缀信息 | display bgp ipv6 multicast peer ipv6-address received ipv6-prefix [ | { begin | exclude | include } regular-expression ]
显示IPv6 MBGP路由信息 | display bgp ipv6 multicast routing-table [ ipv6-addr ess prefix-length ] [ | { begin | exclude | include } regular-expression ]
显示匹配指定AS路径过滤列表的路由 | display bgp ipv6 multicast routing-table as-path-acl as-path-acl-number [ | { begin | exclude | include } regular-expression ]
显示指定IPv6 MBGP团体的路由信息 | display bgp ipv6 multicast routing-table community [ aa:nn<1-13> ] [ no-advertise | no-export | no-export-subconfed ]* [ whole-match ] [ | { begin | exclude | include } regular-expression ]
显示匹配指定IPv6 MBGP团体列表的路由信息 | display bgp ipv6 multicast routing-table community-list { { basic-community-list-number | comm-list-name } [ whole-match ] | adv-community-list-number } [ | { begin | exclude | include } regular-expression ]
显示IPv6 MBGP衰减的路由 | display bgp ipv6 multicast routing-table dampened [ | { begin | exclude | include } regular-expression ]
显示IPv6 MBGP路由衰减参数 | display bgp ipv6 multicast routing-table dampening parameter [ | { begin | exclude | include } regular-expression ]
显示来自不同自治系统的IPv6 MBGP路由 | display bgp ipv6 multicast routing-table different-origin-as [ | { begin | exclude | include } regular-expression ]
显示IPv6 MBGP路由振荡统计信息 | display bgp ipv6 multicast routing-table flap-info [ regular-expression as-regular-expression | [ as-path-acl as-path-acl-number | ipv6-address prefix-length [ longer-match ] ] [ | { begin | exclude | include } regular-expression ] ]
显示向指定的IPv6 MBGP对等体发送或者从指定的IPv6 BGP对等体收到的路由信息 | display bgp ipv6 multicast routing-table peer ipv6-address { advertised-routes | received-routes } [ network-address prefix-length | statistic ] [ | { begin | exclude | include } regular-expression ]
显示匹配AS正则表达式的IPv6组播路由信息 | display bgp ipv6 multicast routing-table regular-expression as-regular-expression
显示IPv6 MBGP的路由统计信息 | display bgp ipv6 multicast routing-table statistic [ | { begin | exclude | include } regular-expression ]
显示IPv6 MBGP路由表中的路由信息 | display ipv6 multicast routing-table [ verbose ] [ | { begin | exclude | include } regular-expression ]
显示指定目的地址的组播路由信息 | display ipv6 multicast routing-table ipv6-address prefix-length [ longer-match ] [ verbose ] [ | { begin | exclude | include } regular-expression ]

1.8.2 复位IPv6 MBGP连接

当MBGP路由策略或协议发生变化后，如果需要通过复位IPv6 MBGP连接使新的配置生效，请在用户视图下进行下列配置。

表1-25 复位IPv6 MBGP连接

操作 | 命令
复位指定的IPv6 MBGP连接 | reset bgp ipv6 multicast { as-number | ipv6-address | all | group ipv6-group-name | external | internal }

1.8.3 清除IPv6 MBGP信息

在用户视图下执行 reset 命令可清除IPv6 MBGP路由的统计信息。

表1-26 清除IPv6 MBGP信息

操作 | 命令
清除IPv6 MBGP路由的衰减信息并释放被抑制的路由 | reset bgp ipv6 multicast dampening [ ipv6-address prefix-length ]
清除IPv6 MBGP路由的振荡统计信息 | reset bgp ipv6 multicast flap-info [ ipv6-address/prefix-length | regexp as-path-regexp | as-path-acl as-path-acl-number ]


1.9 IPv6 MBGP典型配置举例

1. 组网需求

l 网络中存在两个自治系统：IPv6 PIM-SM 1属于AS 100，IPv6 PIM-SM 2属于AS 200。各AS内部采用OSPFv3进行互联，AS之间采用IPv6 MBGP交换IPv6组播路由信息；

l IPv6组播源属于AS 100内的IPv6 PIM-SM 1，接收者则属于AS 200内的IPv6 PIM-SM 2；

l 将Switch A和Switch B各自的Vlan-interface101接口分别配置为各自IPv6 PIM-SM域的C-BSR和C-RP。

2. 组网图

图1-1 IPv6 MBGP典型配置组网图

设备 | 接口 | IP地址 | 设备 | 接口 | IP地址
Source | - | 1002::100/64 | Switch C | Vlan-int200 | 3002::1/64
Switch A | Vlan-int100 | 1002::1/64 |  | Vlan-int102 | 2001::2/64
 | Vlan-int101 | 1001::1/64 |  | Vlan-int104 | 3001::1/64
Switch B | Vlan-int101 | 1001::2/64 | Switch D | Vlan-int103 | 2002::2/64
 | Vlan-int102 | 2001::1/64 |  | Vlan-int104 | 3001::2/64
 | Vlan-int103 | 2002::1/64 |

3. 配置步骤

(1) 配置各交换机接口的IPv6地址和IPv6单播路由协议

l 请按照图1-1 配置各接口的IPv6地址和前缀长度，具体配置过程略。

l 配置AS200内的各交换机之间采用OSPFv3路由协议交换路由信息（AS内各路由器创建的OSPF进程号为1），确保各AS内部在网络层互通，具体配置过程略。

(2) 使能IPv6组播路由，使能IPv6 PIM-SM和MLD，并配置BSR的服务边界

# 在Switch A上使能IPv6组播路由，在各接口上使能IPv6 PIM-SM。

<SwitchA> system-view

[SwitchA] multicast ipv6 routing-enable

[SwitchA] interface vlan-interface 100

[SwitchA-Vlan-interface100] pim ipv6 sm

[SwitchA-Vlan-interface100] quit

[SwitchA] interface vlan-interface 101

[SwitchA-Vlan-interface101] pim ipv6 sm

[SwitchA-Vlan-interface101] quit

Switch B和Switch D上的配置与Switch A相似，配置过程略。

# 在Switch C上使能IPv6组播路由，在各接口上使能IPv6 PIM-SM，并在主机侧接口Vlan-interface200上使能MLD。

<SwitchC> system-view

[SwitchC] multicast ipv6 routing-enable

[SwitchC] interface vlan-interface 102

[SwitchC-Vlan-interface102] pim ipv6 sm

[SwitchC-Vlan-interface102] quit

[SwitchC] interface vlan-interface 104

[SwitchC-Vlan-interface104] pim ipv6 sm

[SwitchC-Vlan-interface104] quit

[SwitchC] interface vlan-interface 200

[SwitchC-Vlan-interface200] pim ipv6 sm

[SwitchC-Vlan-interface200] mld enable

[SwitchC-Vlan-interface200] quit

# 在Switch A上配置BSR的服务边界。

[SwitchA] interface vlan-interface 101

[SwitchA-Vlan-interface101] pim ipv6 bsr-boundary

[SwitchA-Vlan-interface101] quit

# 在Switch B上配置BSR的服务边界。

[SwitchB] interface vlan-interface 101

[SwitchB-Vlan-interface101] pim ipv6 bsr-boundary

[SwitchB-Vlan-interface101] quit

(3) 配置C-BSR和C-RP的位置

# 在Switch A上配置C-BSR和C-RP的位置。

[SwitchA] pim ipv6

[SwitchA-pim6] c-bsr 1001::1

[SwitchA-pim6] c-rp 1001::1

[SwitchA-pim6] quit

# 在Switch B上配置C-BSR和C-RP的位置。

[SwitchB] pim ipv6

[SwitchB-pim6] c-bsr 1001::2

[SwitchB-pim6] c-rp 1001::2

[SwitchB-pim6] quit

(4) 配置BGP协议，并配置IPv6 MBGP对等体

# 在Switch A上配置EBGP邻接关系、并配置IPv6 MBGP对等体。

[SwitchA] ipv6

[SwitchA] bgp 100

[SwitchA-bgp] router-id 1.1.1.1

[SwitchA-bgp] ipv6-family

[SwitchA-bgp-af-ipv6] peer 1001::2 as-number 200

[SwitchA-bgp-af-ipv6] import-route direct

[SwitchA-bgp-af-ipv6] quit

[SwitchA-bgp] ipv6-family multicast

[SwitchA-bgp-af-ipv6-mul] peer 1001::2 enable

[SwitchA-bgp-af-ipv6-mul] import-route direct

[SwitchA-bgp-af-ipv6-mul] quit

[SwitchA-bgp] quit

# 在Switch B上配置EBGP邻接关系、配置IPv6 MBGP对等体，并引入OSPFv3路由。

[SwitchB] ipv6

[SwitchB] bgp 200

[SwitchB-bgp] router-id 2.2.2.2

[SwitchB-bgp] ipv6-family

[SwitchB-bgp-af-ipv6] peer 1001::1 as-number 100

[SwitchB-bgp-af-ipv6] import-route ospfv3 1

[SwitchB-bgp-af-ipv6] quit

[SwitchB-bgp] ipv6-family multicast

[SwitchB-bgp-af-ipv6-mul] peer 1001::1 enable

[SwitchB-bgp-af-ipv6-mul] import-route ospfv3 1

[SwitchB-bgp-af-ipv6-mul] quit

[SwitchB-bgp] quit

(5) 检验配置效果

通过使用 display bgp ipv6 multicast peer 命令可以查看交换机之间IPv6 MBGP对等体的关系。例如：

# 查看Switch B上IPv6 MBGP对等体关系的信息。

[SwitchB] display bgp ipv6 multicast peer

BGP local router ID : 2.2.2.2

Local AS number : 200

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

Peer AS MsgRcvd MsgSent OutQ PrefRcv Up/Down State

1001::1 100 56 56 0 0 00:40:54 Established


00-前言

前 言

H3C S3600V2系列以太网交换机配置指导共分为十本手册，介绍了S3600V2系列以太网交换机各软件特性的原理及其配置方法，包含原理简介、配置任务描述和配置举例。《ACL和QoS配置指导》主要介绍ACL和QoS技术的原理和配置，包括创建IPv4 ACL和IPv6 ACL，通过ACL进行报文过滤、使用QoS策略对流量进行控制，以及端口限速、拥塞管理、流量重标记等常用的QoS技术。

前言部分包含如下内容：

l 读者对象

l 本书约定

l 产品配套资料

l 资料获取方式

l 技术支持

l 资料意见反馈

读者对象

本手册主要适用于如下工程师：

l 网络规划人员

l 现场技术支持与维护人员

l 负责网络配置和维护的网络管理员

本书约定

1.命令行格式约定

格 式 | 意 义
粗体 | 命令行关键字（命令中保持不变、必须照输的部分）采用加粗字体表示。
斜体 | 命令行参数（命令中必须由实际值进行替代的部分）采用斜体表示。
[ ] | 表示用“[ ]”括起来的部分在命令配置时是可选的。
{ x | y | ... } | 表示从两个或多个选项中选取一个。
[ x | y | ... ] | 表示从两个或多个选项中选取一个或者不选。
{ x | y | ... } * | 表示从两个或多个选项中选取多个，最少选取一个，最多选取所有选项。
[ x | y | ... ] * | 表示从两个或多个选项中选取多个或者不选。
&<1-n> | 表示符号&前面的参数可以重复输入1～n次。
# | 由“#”号开始的行表示为注释行。

2.图形界面格式约定

格 式 | 意 义
< > | 带尖括号“< >”表示按钮名，如“单击<确定>按钮”。
[ ] | 带方括号“[ ]”表示窗口名、菜单名和数据表，如“弹出[新建用户]窗口”。
/ | 多级菜单用“/”隔开。如[文件/新建/文件夹]多级菜单表示[文件]菜单下的[新建]子菜单下的[文件夹]菜单项。

3.各类标志

本书还采用各种醒目标志来表示在操作过程中应该特别注意的地方，这些标志的意义如下：

该标志后的注释需给予格外关注，不当的操作可能会对人身造成伤害。

提醒操作中应注意的事项，不当的操作可能会导致数据丢失或者设备损坏。

为确保设备配置成功或者正常工作而需要特别关注的操作或信息。

对操作内容的描述进行必要的补充和说明。

配置、操作、或使用设备的技巧、小窍门。

4.图标约定

本书使用的图标及其含义如下：

该图标及其相关描述文字代表一般网络设备，如路由器、交换机、防火墙等。

该图标及其相关描述文字代表一般意义下的路由器，以及其他运行了路由协议的设备。

该图标及其相关描述文字代表二、三层以太网交换机，以及运行了二层协议的设备。

产品配套资料

H3C S3600V2系列以太网交换机的配套资料包括如下部分：

大类 | 资料名称 | 内容介绍
产品知识介绍 | 产品彩页 | 帮助您了解产品的主要规格参数及亮点
 | RPS电源用户手册 | 帮助您了解产品支持的RPS电源的外观、功能、规格
 | H3C低端系列以太网交换机RPS电源选购指南 | 帮助您了解各种RPS电源适用的交换机产品型号及RPS电源配套电缆的相关规格
 | H3C低端系列以太网交换机可插拔模块手册 | 帮助您了解产品支持的可插拔模块类型、外观和规格
设备安装 | 安全兼容性手册 | 列出产品的兼容性声明，并对兼容性和安全的细节进行说明
 | H3C 设备防雷安装指导手册 | 帮助您了解防雷接地设计和工程安装方法，以保证交换机具有良好的抗雷击性能
 | 快速安装指南 | 指导您对设备进行初始安装，通常针对最常用的情况，减少您的检索时间
 | 安装指导 | 帮助您详细了解设备硬件规格和安装方法，指导您对设备进行安装
 | H3C可插拔SFP[SFP+][XFP]模块安装指南 | 帮助您掌握SFP/SFP+/XFP模块的正确安装方法，避免因操作不当而造成器件损坏
业务配置 | 配置指导 | 帮助您掌握设备软件功能的配置方法及配置步骤
 | 命令参考 | 详细介绍设备的命令，相当于命令字典，方便您查阅各个命令的功能
运行维护 | H3C系列以太网交换机登录密码恢复手册 | 指导您在设备登录密码丢失的情况下，找回密码、或重新配置登录密码
 | 故障处理手册 | 指导您快速定位并处理软件故障
 | 版本说明书 | 帮助您了解产品版本的相关信息（包括：版本配套说明、兼容性说明、特性变更说明、技术支持信息）及软件升级方法

资料获取方式

您可以通过H3C网站（ www.h3c.com.cn ）获取最新的产品资料：

H3C网站与产品资料相关的主要栏目介绍如下：

l [服务支持/文档中心] ：可以获取硬件安装类、软件升级类、配置类或维护类等产品资料。

l [产品技术] ：可以获取产品介绍和技术介绍的文档，包括产品相关介绍、技术介绍、技术白皮书等。

l [解决方案] ：可以获取解决方案类资料。

l [服务支持/软件下载] ：可以获取与软件版本配套的资料。

技术支持

用户支持邮箱：customer_service@h3c.com

技术支持热线电话：400-810-0504（手机、固话均可拨打）

网址： http://www.h3c.com.cn

资料意见反馈

如果您在使用过程中发现产品资料的任何问题，可以通过以下方式反馈：

E-mail：info@h3c.com

感谢您的反馈，让我们做得更好！


1 ACL配置

本文将用于IPv4和IPv6的ACL分别简称为IPv4 ACL和IPv6 ACL。若非特别指明，本文所指的ACL均包括IPv4 ACL和IPv6 ACL。

相关链接

  • 1.1 ACL简介
  • 1.2 ACL配置任务简介
  • 1.3 配置ACL
  • 1.4 ACL显示和维护
  • 1.5 ACL典型配置举例
父主题： 01-ACL配置


1.1 ACL简介

1.1.1 ACL概述

ACL（Access Control List，访问控制列表）是一或多条规则的集合，用于识别报文流。所谓规则，是指描述报文匹配条件的判断语句，这些条件可以是报文的源地址、目的地址、端口号等。网络设备依照这些规则识别出特定的报文，并根据预先设定的策略对其进行处理。

1.1.2 ACL在交换机上的应用方式

当ACL被其他功能引用时，根据设备在实现该功能时的处理方式（硬件处理或者软件处理），ACL可以被分为基于硬件的应用和基于软件的应用。

典型的基于硬件的应用包括；报文过滤、QoS策略；基于软件的应用包括：路由、对登录用户（Telnet、SNMP、WEB）进行控制等。

在某些应用方式下（例如QoS策略），ACL仅用于匹配报文，ACL规则中的动作（deny 或 permit）被忽略，不作为对报文进行丢弃或转发的依据，类似情况请参见相应功能中的说明。

l 当ACL被QoS策略引用进行流分类时，如果报文没有与ACL中的规则匹配，此时交换机不会使用流行为中定义的动作对此类报文进行处理。

l 当ACL被用于对Telnet、SNMP和WEB登录用户进行控制时，如果报文没有与ACL中的规则匹配，此时交换机对此类报文采取的动作为deny，即拒绝报文通过。

l 关于应用ACL对报文进行过滤的介绍和配置，请参见 1.3.6 应用ACL进行报文过滤。

1.1.3 ACL的编号和名称

用户在创建ACL时必须为其指定编号，不同的编号对应不同类型的ACL，如表1-1 所示；同时，为了便于记忆和识别，用户在创建ACL时还可选择是否为其设置名称。ACL一旦创建，便不允许用户再为其设置名称、修改或删除其原有名称。

当ACL创建完成后，用户就可以通过指定编号或名称的方式来指定该ACL，以便对其进行操作。

二层ACL的编号和名称全局唯一；IPv4基本和高级ACL的编号和名称只在IPv4中唯一；IPv6基本和高级ACL的编号和名称也只在IPv6中唯一。

1.1.4 ACL的分类

根据规则制订依据的不同，可以将ACL分为如表1-1 所示的几种类型。

表1-1 ACL的分类

ACL类型 | 编号范围 | 适用的IP版本 | 规则制订依据
基本ACL | 2000～2999 | IPv4 | 报文的源IP地址
 |  | IPv6 | 报文的源IPv6地址
高级ACL | 3000～3999 | IPv4 | 报文的源IP地址、目的IP地址、报文优先级、IP承载的协议类型及特性等三、四层信息
 |  | IPv6 | 报文的源IPv6地址、目的IPv6地址、报文优先级、IPv6承载的协议类型及特性等三、四层信息
二层ACL | 4000～4999 | IPv4和IPv6 | 报文的源MAC地址、目的MAC地址、802.1p优先级、链路层协议类型等二层信息

1.1.5 ACL的规则匹配顺序

由于ACL中每条规则的报文匹配条件不同，导致这些规则之间可能存在重复甚至矛盾的地方，因此在将一个报文与ACL的各条规则进行匹配时，需要有明确的匹配顺序来确定规则执行的优先级，一旦匹配上某条规则就不会再继续匹配下去，系统将依据该规则对该报文执行相应的操作。ACL的规则匹配顺序有以下两种：

l 配置顺序：按照规则编号由小到大进行匹配。

l 自动排序：按照“深度优先”原则由深到浅进行匹配，各类型ACL的“深度优先”排序法则如表1-2 所示。

表1-2 各类型ACL的“深度优先”排序法则

ACL类型 | “深度优先”排序法则
IPv4基本ACL | (1) 先判断规则中是否携带有VPN实例，携带VPN实例者优先 (2) 如果VPN实例的携带情况相同，再比较源IPv4地址范围，范围较小者优先 (3) 如果源IP地址范围也相同，再比较配置的先后次序，先配置者优先
IPv4高级ACL | (1) 先判断规则中是否携带有VPN实例，携带VPN实例者优先 (2) 如果VPN实例的携带情况相同，再比较协议范围，指定有IPv4承载的协议类型者优先 (3) 如果协议范围也相同，再比较源IPv4地址范围，较小者优先 (4) 如果源IPv4地址范围也相同，再比较目的IPv4地址范围，较小者优先 (5) 如果目的IPv4地址范围也相同，再比较四层端口（即TCP/UDP端口）号范围，较小者优先 (6) 如果四层端口号范围也相同，再比较配置的先后次序，先配置者优先
IPv6基本ACL | (1) 先比较源IPv6地址范围，范围较小者优先 (2) 如果源IPv6地址范围也相同，再比较配置的先后次序，先配置者优先
IPv6高级ACL | (1) 先比较协议范围，指定有IPv6承载的协议类型者优先 (2) 如果协议范围相同，再比较源IPv6地址范围，较小者优先 (3) 如果源IPv6地址范围也相同，再比较目的IPv6地址范围，较小者优先 (4) 如果目的IPv6地址范围也相同，再比较四层端口（即TCP/UDP端口）号范围，较小者优先 (5) 如果四层端口号范围也相同，再比较配置的先后次序，先配置者优先
二层ACL | (1) 先比较源MAC地址范围，较小者优先 (2) 如果源MAC地址范围相同，再比较目的MAC地址范围，较小者优先 (3) 如果目的MAC地址范围也相同，再比较配置的先后次序，先配置者优先

l 比较IPv4地址范围的大小，就是比较IPv4地址通配符掩码中“0”位的多少：“0”位越多，范围越小。通配符掩码（又称反向掩码）以点分十进制表示，并以二进制的“0”表示“匹配”，“1”表示“不关心”，这与子网掩码恰好相反，譬如子网掩码255.255.255.0对应的通配符掩码就是0.0.0.255。此外，通配符掩码中的“0”或“1”可以是不连续的，这样可以更加灵活地进行匹配，譬如0.255.0.255就是一个合法的通配符掩码。

l 比较IPv6地址范围的大小，就是比较IPv6地址前缀的长短：前缀越长，范围越小。

l 比较MAC地址范围的大小，就是比较MAC地址掩码中“1”位的多少：“1”位越多，范围越小。

1.1.6 ACL的规则描述和注释

在一个ACL中用户可以创建多条规则，为了方便标识这些规则的用途，用户可以为单条规则添加描述信息，也可以在各条规则之间插入注释信息来对前一段或后一段规则进行统一描述。

1. 规则描述信息

规则描述信息主要用于对单条规则进行单独标识。当需要对各条规则进行不同的标识或对某条规则进行特别标识时，适用此方式。

2. 规则注释信息

规则注释信息主要用于对一段规则进行统一标识。当需要对一段规则进行相同的标识时，如果采用对每条规则都添加相同描述信息的方式，需要进行大量配置，效率会非常低下。在这种情况下，可以在这段规则的前、后插入注释信息的方式来提高标识效率，即：在这段规则的首条规则之前以及末条规则之后分别插入一条注释信息，通过首、尾这两条注释信息就可以标识整段规则的用途。

在不同的规则匹配顺序下，“首条规则”和“末条规则”的确定方法不同：

l 在配置顺序下：规则的显示将按照规则编号由小到大排列，因此应通过规则的编号来确定；

l 在自动排序下：规则的显示将按照“深度优先”原则由深到浅排列，因此应通过“深度优先”原则来确定。

1.1.7 ACL的步长

ACL中的每条规则都有自己的编号，这个编号在该ACL中是唯一的。在创建规则时，可以手工为其指定一个编号，如未手工指定编号，则由系统为其自动分配一个编号。由于规则的编号可能影响规则匹配的顺序，因此当由系统自动分配编号时，为了方便后续在已有规则之前插入新的规则，系统通常会在相邻编号之间留下一定的空间，这个空间的大小（即相邻编号之间的差值）就称为ACL的步长。譬如，当步长为5时，系统会将编号0、5、10、15……依次分配给新创建的规则。

系统为规则自动分配编号的方式如下：系统从0开始，按照步长自动分配一个大于现有最大编号的最小编号。譬如原有编号为0、5、9、10和12的五条规则，步长为5，此时如果创建一条规则且不指定编号，那么系统将自动为其分配编号15。

如果步长发生了改变，ACL内原有全部规则的编号都将自动从0开始按新步长重新排列。譬如，某ACL内原有编号为0、5、9、10和15的五条规则，当修改步长为2之后，这些规则的编号将依次变为0、2、4、6和8。

1.1.8 ACL对分片报文的处理

传统的报文过滤并不处理所有的分片报文，只对首个分片进行匹配处理，而对后续分片一律放行。这样，网络攻击者可以构造后续的分片报文进行流量攻击，从而带来了安全隐患。为提高网络安全性，ACL规则缺省会匹配所有的非分片报文以及分片报文的每个分片。同时，为了提高匹配效率，用户也可以对此匹配策略进行修改，譬如可指定规则仅对非首片分片报文有效等。


1.2 ACL配置任务简介

表1-3 ACL配置任务简介

配置任务 | 说明 | 详细配置
配置ACL的生效时间段 | 可选 本配置任务适用于IPv4和IPv6 | 1.3.1
配置IPv4基本ACL | 至少选择一项 | 1.3.2 1.
配置IPv6基本ACL |  | 1.3.2 2.
配置IPv4高级ACL |  | 1.3.3 1.
配置IPv6高级ACL |  | 1.3.3 2.
配置二层ACL |  | 1.3.4
复制ACL | 可选 本配置任务适用于IPv4和IPv6 | 1.3.5
应用ACL进行报文过滤 | 可选 本配置任务适用于IPv4和IPv6 | 1.3.6


1.3 配置ACL

1.3.1 配置ACL的生效时间段

当ACL规则只需在某个或某些特定的时间段内生效时，可以设置基于时间段的ACL过滤。为此，用户可以先配置一个或多个时间段，然后在规则中引用这些时间段，那么该规则将只在指定的时间段内生效。ACL的生效时间段可分为以下两种：

l 周期时间段：表示规则以一周为周期（如每周一的8至12点）循环生效。

l 绝对时间段：表示规则在指定时间范围内（如2011年1月1日8点至2011年1月3日18点）生效。

用户使用同一名称可以配置内容不同的多条时间段，所配置的各周期时间段之间以及各绝对时间段之间分别取并集之后，各并集的交集将成为最终生效的时间范围。

表1-4 配置ACL的生效时间段

操作 | 命令 | 说明
进入系统视图 | system-view | -
创建时间段 | time-range time-range-name { start-time to end-time days [ from time1 date1 ] [ to time2 date2 ] | from time1 date1 [ to time2 date2 ] | to time2 date2 } | 必选 缺省情况下，不存在任何时间段

用户最多可以创建256个不同名称的时间段，而同一名称下最多可以配置32条周期时间段和12条绝对时间段。

1.3.2 配置基本ACL

1. 配置IPv4基本ACL

IPv4基本ACL根据报文的源IP地址来制订规则，对IPv4报文进行匹配。

表1-5 配置IPv4基本ACL

操作 | 命令 | 说明
进入系统视图 | system-view | -
创建IPv4基本ACL，并进入IPv4基本ACL视图 | acl number acl-number [ name acl-name ] [ match-order { auto | config } ] | 必选 缺省情况下，不存在任何ACL IPv4基本ACL的编号范围为2000～2999
配置ACL的描述信息 | description text | 可选 缺省情况下，ACL没有任何描述信息
配置规则编号的步长 | step step-value | 可选 缺省情况下，规则编号的步长为5
创建规则 | rule [ rule-id ] { deny | permit } [ counting | fragment | logging | source { sour-addr sour-wildcard | any } | time-range time-range-name | vpn-instance vpn-instance-name ] * | 必选 缺省情况下，IPv4基本ACL内不存在任何规则 需要注意的是： l 当IPv4基本ACL被QoS策略引用对报文进行流分类时，不支持配置 vpn-instance 参数，在规则中配置的 logging 和 counting 参数不会生效 l 当IPv4基本ACL被用于报文过滤时，不支持配置 vpn-instance 参数
为指定规则配置描述信息 | rule rule-id comment text | 可选 缺省情况下，规则没有任何描述信息
配置规则注释信息 | rule [ rule-id ] remark text | 可选 缺省情况下，ACL内没有任何规则注释信息
使能基于硬件应用的ACL的规则匹配统计功能 | hardware-count enable | 可选 缺省情况下，基于硬件应用的ACL的规则匹配统计功能处于关闭状态 当ACL被QoS策略引用对报文进行流分类时，本功能不会生效

如果在创建IPv4基本ACL时为其指定了名称，则也可以使用 acl name acl-name命令通过指定名称的方式进入其视图。

2. 配置IPv6基本ACL

IPv6基本ACL根据报文的源IPv6地址来制订规则，对IPv6报文进行匹配。

表1-6 配置IPv6基本ACL

操作 | 命令 | 说明
进入系统视图 | system-view | -
创建IPv6基本ACL，并进入IPv6基本ACL视图 | acl ipv6 number acl6-number [ name acl6-name ] [ match-order { auto | config } ] | 必选 缺省情况下，不存在任何ACL IPv6基本ACL的编号范围为2000～2999
配置ACL的描述信息 | description text | 可选 缺省情况下，ACL没有任何描述信息
配置规则编号的步长 | step step-value | 可选 缺省情况下，规则编号的步长为5
创建规则 | rule [ rule-id ] { deny | permit } [ counting | fragment | logging | routing [ type routing-type ] | source { ipv6-address prefix-length | ipv6-address/prefix-length | any } | time-range time-range-name ] * | 必选 缺省情况下，IPv6基本ACL内不存在任何规则 需要注意的是： l 当IPv6基本ACL被QoS策略引用对报文进行流分类时，不支持配置 fragment 和 routing 参数，在规则中配置的 logging 和 counting 参数不会生效 l 当IPv6基本ACL被用于报文过滤时，不支持配置 fragment 和 routing 参数
为指定规则配置描述信息 | rule rule-id comment text | 可选 缺省情况下，规则没有任何描述信息
配置规则注释信息 | rule [ rule-id ] remark text | 可选 缺省情况下，ACL内没有任何规则注释信息
使能基于硬件应用的ACL的规则匹配统计功能 | hardware-count enable | 可选 缺省情况下，基于硬件应用的ACL的规则匹配统计功能处于关闭状态 当ACL被QoS策略引用对报文进行流分类时，本功能不会生效

如果在创建IPv6基本ACL时为其指定了名称，则也可以使用 acl ipv6 name acl6-name命令通过指定名称的方式进入其视图。

1.3.3 配置高级ACL

1. 配置IPv4高级ACL

IPv4高级ACL可根据报文的源IP地址、目的IP地址、报文优先级、IP承载的协议类型及特性（如TCP/UDP的源端口和目的端口、TCP报文标识、ICMP协议的消息类型和消息码等）等信息来制定规则，对IPv4报文进行匹配。用户可利用IPv4高级ACL制订比IPv4基本ACL更准确、丰富、灵活的规则。

表1-7 配置IPv4高级ACL

操作 | 命令 | 说明
进入系统视图 | system-view | -
创建IPv4高级ACL，并进入IPv4高级ACL视图 | acl number acl-number [ name acl-name ] [ match-order { auto | config } ] | 必选 缺省情况下，不存在任何ACL IPv4高级ACL的编号范围为3000～3999
配置ACL的描述信息 | description text | 可选 缺省情况下，ACL没有任何描述信息
配置规则编号的步长 | step step-value | 可选 缺省情况下，规则编号的步长为5
创建规则 | rule [ rule-id ] { deny | permit } protocol [ { { ack ack-value | fin fin-value | psh psh-value | rst rst-value | syn syn-value | urg urg-value } * | established } | counting | destination { dest-addr dest-wildcard | any } | destination-port operator port1 [ port2 ] | dscp dscp | fragment | icmp-type { icmp-type [ icmp-code ] | icmp-message } | logging | precedence precedence | source { sour-addr sour-wildcard | any } | source-port operator port1 [ port2 ] | time-range time-range-name | tos tos | vpn-instance vpn-instance-name ] * | 必选 缺省情况下，IPv4高级ACL内不存在任何规则 重复执行本命令可以创建多条规则 需要注意的是，当IPv4高级ACL用于QoS策略的流分类或用于报文过滤功能时： l 不支持配置 vpn-instance 参数 l 不支持配置操作符 operator 取值为 neq l 当ACL用于流分类时，在规则中配置的 logging 和 counting 参数不会生效
为指定规则配置描述信息 | rule rule-id comment text | 可选 缺省情况下，规则没有任何描述信息
配置规则注释信息 | rule [ rule-id ] remark text | 可选 缺省情况下，ACL内没有任何规则注释信息
使能基于硬件应用的ACL的规则匹配统计功能 | hardware-count enable | 可选 缺省情况下，基于硬件应用的ACL的规则匹配统计功能处于关闭状态 当ACL被QoS策略引用对报文进行流分类时，本功能不会生效

如果在创建IPv4高级ACL时为其指定了名称，则也可以使用 acl name acl-name命令通过指定名称的方式进入其视图。

2. 配置IPv6高级ACL

IPv6高级ACL可根据报文的源IPv6地址、目的IPv6地址、报文优先级、IPv6承载的协议类型及特性（如TCP/UDP的源端口和目的端口、TCP报文标识、ICMPv6协议的消息类型和消息码等）等信息来制定规则，对IPv6报文进行匹配。用户可利用IPv6高级ACL制订比IPv6基本ACL更准确、丰富、灵活的规则。

表1-8 配置IPv6高级ACL

操作 | 命令 | 说明
进入系统视图 | system-view | -
创建IPv6高级ACL，并进入IPv6高级ACL视图 | acl ipv6 number acl6-number [ name acl6-name ] [ match-order { auto | config } ] | 必选 缺省情况下，不存在任何ACL IPv6高级ACL的编号范围3000～3999
配置ACL的描述信息 | description text | 可选 缺省情况下，ACL没有任何描述信息
配置规则编号的步长 | step step-value | 可选 缺省情况下，规则编号的步长为5
创建规则 | rule [ rule-id ] { deny | permit } protocol [ { { ack ack-value | fin fin-value | psh psh-value | rst rst-value | syn syn-value | urg urg-value } * | established } | counting | destination { dest dest-prefix | dest/dest-prefix | any } | destination-port operator port1 [ port2 ] | dscp dscp | flow-label flow-label-value | fragment | icmp6-type { icmp6-type icmp6-code | icmp6-message } | logging | routing [ type routing-type ] | source { source source-prefix | source/source-prefix | any } | source-port operator port1 [ port2 ] | time-range time-range-name ] * | 必选 缺省情况下，IPv6高级ACL内不存在任何规则 需要注意的是，当IPv6高级ACL用于QoS策略的流分类或用于报文过滤功能时： l 不支持配置 fragment 和 routing 参数 l 不支持配置操作符 operator 取值为 neq l 如果QoS策略或报文过滤功能应用于出方向，则不支持配置 flow-label 参数 l 当ACL用于流分类时，在规则中配置的 logging 和 counting 参数不会生效
为指定规则配置描述信息 | rule rule-id comment text | 可选 缺省情况下，规则没有任何描述信息
配置规则注释信息 | rule [ rule-id ] remark text | 可选 缺省情况下，ACL内没有任何规则注释信息
使能基于硬件应用的ACL的规则匹配统计功能 | hardware-count enable | 可选 缺省情况下，基于硬件应用的ACL的规则匹配统计功能处于关闭状态

l 对于带有扩展报文头的IPv6报文，可以通过IPv6高级ACL来匹配所有类型的扩展报文头，但如果ACL的匹配内容为扩展报文头内层的报文内容，则扩展报文头不能超过一层，且不能包含IPv6 Encapsulation Header报文头，否则ACL将无法进行匹配。

l 当匹配的扩展报文头类型（protocol 参数）取值为43、44、51、60时，引用该ACL的QoS策略将不能在出方向应用。

l 如果在创建IPv6高级ACL时为其指定了名称，则也可以使用 acl ipv6 name acl6-name命令通过指定名称的方式进入其视图。

1.3.4 配置二层ACL

二层ACL可根据报文的源MAC地址、目的MAC地址、802.1p优先级、链路层协议类型等二层信息来制订规则，对报文进行匹配。

表1-9 配置二层ACL

操作 | 命令 | 说明
进入系统视图 | system-view | -
创建二层ACL，并进入二层ACL视图 | acl number acl-number [ name acl-name ] [ match-order { auto | config } ] | 必选 缺省情况下，不存在任何ACL 二层ACL的编号范围为4000～4999
配置ACL的描述信息 | description text | 可选 缺省情况下，ACL没有任何描述信息
配置规则编号的步长 | step step-value | 可选 缺省情况下，规则编号的步长为5
创建规则 | rule [ rule-id ] { deny | permit } [ cos vlan-pri | counting | dest-mac dest-addr dest-mask | { lsap lsap-type lsap-type-mask | type protocol-type protocol-type-mask } | source-mac sour-addr source-mask | time-range time-range-name ] * | 必选 缺省情况下，二层ACL内不存在任何规则 需要注意的是，当二层ACL用于QoS策略的流分类或用于报文过滤功能时，如果使用 lsap 参数，则 lsap-type 必须为AAAA，lsap-type-mask 必须为FFFF，否则ACL将无法正常应用
为指定规则配置描述信息 | rule rule-id comment text | 可选 缺省情况下，规则没有任何描述信息
配置规则注释信息 | rule [ rule-id ] remark text | 可选 缺省情况下，ACL内没有任何规则注释信息
使能基于硬件应用的ACL的规则匹配统计功能 | hardware-count enable | 可选 缺省情况下，基于硬件应用的ACL的规则匹配统计功能处于关闭状态

如果在创建二层ACL时为其指定了名称，则也可以使用 acl name acl-name命令通过指定名称的方式进入其视图。

1.3.5 复制ACL

用户可通过复制一个已存在的ACL（即源ACL），来生成一个新的同类型ACL（即目的ACL）。除了ACL的编号和名称不同外，新生成的目的ACL的匹配顺序、规则匹配统计功能的使能情况、规则编号的步长、所包含的规则、规则的描述信息以及ACL的描述信息等都与源ACL的相同。

1. 复制IPv4 ACL

表1-10 复制IPv4 ACL

操作 | 命令 | 说明
进入系统视图 | system-view | -
复制生成一个新的同类型IPv4 ACL | acl copy { source-acl-number | name source-acl-name } to { dest-acl-number | name dest-acl-name } | 必选

目的IPv4 ACL要与源IPv4 ACL的类型相同，且目的IPv4 ACL必须不存在，否则将导致复制失败。

2. 复制IPv6 ACL

表1-11 复制IPv6 ACL

操作 | 命令 | 说明
进入系统视图 | system-view | -
复制生成一个新的同类型IPv6 ACL | acl ipv6 copy { source-acl6-number | name source-acl6-name } to { dest-acl6-number | name dest-acl6-name } | 必选

目的IPv6 ACL要与源IPv6 ACL的类型相同，且目的IPv6 ACL必须不存在，否则将导致复制失败。

1.3.6 应用ACL进行报文过滤

ACL最基本的应用就是进行报文过滤，即通过将ACL规则应用到指定接口的入或出方向上，从而对该接口收到或发出的报文进行过滤。此外，通过配置报文过滤日志的生成与发送周期，还可周期性地生成并发送报文过滤的日志信息（信息级别为informational），包括匹配次数以及所使用的ACL规则。该日志信息将被发往信息中心，有关信息中心的详细介绍，请参见“网络管理和监控配置指导”中的“信息中心”。

l 应用ACL进行报文过滤功能中所指的“接口”包括二层以太网端口、三层以太网端口、和VLAN接口。三层以太网端口是指被配置为三层模式的以太网端口，有关以太网端口模式切换的操作，请参见“二层技术-以太网交换配置指导”中的“以太网端口配置”。

l 在VLAN接口上应用ACL进行报文过滤时，只能对通过该接口进行三层转发的报文进行过滤，而对纯二层转发的报文不进行过滤。

l 在端口上配置报文过滤时，可以同时应用IPv4 ACL、IPv6 ACL和二层ACL，但在每个方向上每种类型的ACL最多只能应用一条。

l 系统只支持对应用基本或高级ACL进行报文过滤的日志进行记录，并在配置上述ACL规则时必须打开其日志记录功能（通过指定 logging 参数）和规则匹配统计功能（通过指定 counting 参数或使用 hardware-count enable 命令）。

1. 应用IPv4 ACL或二层ACL进行报文过滤

表1-12 应用IPv4 ACL进行报文过滤

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
应用IPv4基本ACL、IPv4高级ACL或二层ACL进行报文过滤 | packet-filter { acl-number | name acl-name } { inbound | outbound } | 必选 缺省情况下，接口不对报文进行过滤
退回系统视图 | quit | -
配置IPv4报文过滤日志的生成与发送周期 | acl logging frequence frequence | 必选 缺省情况下，IPv4报文过滤日志的生成与发送周期为0分钟，即不记录IPv4报文过滤的日志

2. 应用IPv6 ACL进行报文过滤

表1-13 应用IPv6 ACL进行报文过滤

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
应用IPv6基本ACL或IPv6高级ACL进行报文过滤 | packet-filter ipv6 { acl6-number | name acl6-name } { inbound | outbound } | 必选 缺省情况下，接口不对报文进行过滤
退回系统视图 | quit | -
配置IPv6报文过滤日志的生成与发送周期 | acl ipv6 logging frequence frequence | 必选 缺省情况下，IPv6报文过滤日志的生成与发送周期为0分钟，即不记录IPv6报文过滤的日志


1.4 ACL显示和维护

在完成上述配置后，在任意视图下执行 display 命令可以显示ACL配置后的运行情况，通过查看显示信息验证配置的效果。

在用户视图下执行 reset 命令可以清除ACL的统计信息。

表1-14 ACL显示和维护

配置 | 命令
显示IPv4 ACL的配置和运行情况 | display acl { acl-number | all | name acl-name } [ slot slot-number ] [ | { begin | exclude | include } regular-expression ]
显示IPv6 ACL的配置和运行情况 | display acl ipv6 { acl6-number | all | name acl6-name } [ slot slot-number ] [ | { begin | exclude | include } regular-expression ]
显示ACL资源的使用情况 | display acl resource [ slot slot-number ] [ | { begin | exclude | include } regular-expression ]
显示报文过滤策略的应用情况 | display packet-filter { { all | interface interface-type interface-number } [ inbound | outbound ] | interface vlan-interface vlan-interface-number [ inbound | outbound ] [ slot slot-number ] } [ | { begin | exclude | include } regular-expression ]
显示时间段的配置和状态信息 | display time-range { time-range-name | all } [ | { begin | exclude | include } regular-expression ]
清除IPv4 ACL统计信息 | reset acl counter { acl-number | all | name acl-name }
清除IPv6 ACL统计信息 | reset acl ipv6 counter { acl6-number | all | name acl6-name }


1.5 ACL典型配置举例

1.5.1 应用IPv4 ACL进行报文过滤配置举例

1. 组网需求

要求通过在Device A的端口Ethernet1/0/1上配置IPv4报文过滤功能，实现在每天的8点到18点期间只允许Host A访问互联网，并以10分钟为周期记录IPv4报文过滤的日志信息并输出至控制台。

2. 组网图

图1-1 应用IPv4 ACL进行报文过滤配置组网图

3. 配置步骤

# 创建名为study的时间段，其时间范围为每天的8点到18点。

<DeviceA> system-view

[DeviceA] time-range study 8:0 to 18:0 daily

# 创建IPv4基本ACL 2009，并制订如下规则：在名为study的时间段内只允许来自Host A的报文通过、禁止来自其它IP地址的报文通过，且在这些规则中对允许通过的报文记录日志信息。

[DeviceA] acl number 2009

[DeviceA-acl-basic-2009] rule permit source 192.168.1.2 0 time-range study logging

[DeviceA-acl-basic-2009] rule deny source any time-range study

[DeviceA-acl-basic-2009] quit

# 配置IPv4报文过滤日志的生成与发送周期为10分钟。

[DeviceA] acl logging frequence 10

# 配置系统信息的输出规则，将级别为informational的日志信息输出至控制台。

[DeviceA] info-center source default channel 0 log level informational

# 应用IPv4基本ACL 2009对端口Ethernet1/0/1入方向上的报文进行过滤。

[DeviceA] interface ethernet 1/0/1

[DeviceA-Ethernet1/0/1] packet-filter 2009 inbound

[DeviceA-Ethernet1/0/1] quit

1.5.2 应用IPv6 ACL进行报文过滤配置举例

1. 组网需求

要求通过在Device A的端口Ethernet1/0/1上配置IPv6报文过滤功能，实现在每天的8点到18点期间只允许Host A访问互联网，并以10分钟为周期记录IPv6报文过滤的日志信息并输出至控制台。

2. 组网图

图1-2 应用IPv6 ACL进行报文过滤配置组网图

3. 配置步骤

# 创建名为study的时间段，其时间范围为每天的8点到18点。

<DeviceA> system-view

[DeviceA] time-range study 8:0 to 18:0 daily

# 创建IPv6基本ACL 2009，并制订如下规则：在名为study的时间段内只允许来自Host A的报文通过、禁止来自其它IPv6地址的报文通过，且在这些规则中对允许通过的报文记录日志信息。

[DeviceA] acl ipv6 number 2009

[DeviceA-acl6-basic-2009] rule permit source 1001::2 128 time-range study logging

[DeviceA-acl6-basic-2009] rule deny source any time-range study

[DeviceA-acl6-basic-2009] quit

# 配置IPv6报文过滤日志的生成与发送周期为10分钟。

[DeviceA] acl ipv6 logging frequence 10

# 配置系统信息的输出规则，将级别为informational的日志信息输出至控制台。

[DeviceA] info-center source default channel 0 log level informational

# 应用IPv6基本ACL 2009对端口Ethernet1/0/1入方向上的报文进行过滤。

[DeviceA] interface ethernet 1/0/1

[DeviceA-Ethernet1/0/1] packet-filter ipv6 2009 inbound

[DeviceA-Ethernet1/0/1] quit


1 QoS简介

相关链接

  • 1.1 概述
  • 1.2 QoS服务模型简介
  • 1.3 QoS技术综述
父主题： 02-QoS配置


1.1 概述

QoS（Quality of Service）即服务质量。对于网络业务，服务质量包括传输的带宽、传送的时延、数据的丢包率等。在网络中可以通过保证传输的带宽、降低传送的时延、降低数据的丢包率以及时延抖动等措施来提高服务质量。

网络资源总是有限的，只要存在抢夺网络资源的情况，就会出现服务质量的要求。服务质量是相对网络业务而言的，在保证某类业务的服务质量的同时，可能就是在损害其它业务的服务质量。例如，在网络总带宽固定的情况下，如果某类业务占用的带宽越多，那么其他业务能使用的带宽就越少，可能会影响其他业务的使用。因此，网络管理者需要根据各种业务的特点来对网络资源进行合理的规划和分配，从而使网络资源得到高效利用。

下面从QoS服务模型出发，对目前使用最多、最成熟的一些QoS技术逐一进行描述。在特定的环境下合理地使用这些技术，可以有效地提高服务质量。


1.2 QoS服务模型简介

通常QoS提供以下三种服务模型：

l Best-Effort service（尽力而为服务模型）

l Integrated service（综合服务模型，简称Int-Serv）

l Differentiated service（区分服务模型，简称Diff-Serv）

1.2.1 Best-Effort服务模型

Best-Effort是一个单一的服务模型，也是最简单的服务模型。对Best-Effort服务模型，网络尽最大的可能性来发送报文。但对时延、可靠性等性能不提供任何保证。

Best-Effort服务模型是网络的缺省服务模型，通过FIFO队列来实现。它适用于绝大多数网络应用，如FTP、E-Mail等。

1.2.2 Int-Serv服务模型

Int-Serv是一个综合服务模型，它可以满足多种QoS需求。该模型使用资源预留协议（RSVP），RSVP运行在从源端到目的端的每个设备上，可以监视每个流，以防止其消耗资源过多。这种体系能够明确区分并保证每一个业务流的服务质量，为网络提供最细粒度化的服务质量区分。

但是，Inter-Serv模型对设备的要求很高，当网络中的数据流数量很大时，设备的存储和处理能力会遇到很大的压力。Inter-Serv模型可扩展性很差，难以在Internet核心网络实施。

1.2.3 Diff-Serv服务模型

Diff-Serv是一个多服务模型，它可以满足不同的QoS需求。与Int-Serv不同，它不需要通知网络为每个业务预留资源。区分服务实现简单，扩展性较好。

本文提到的技术都是基于Diff-Serv服务模型。


1.3 QoS技术综述

QoS技术包括流分类、流量监管、流量整形、接口限速、拥塞管理、拥塞避免等。下面对常用的技术简单进行一下介绍。

1.3.1 QoS技术在网络中的位置

图1-1 常用QoS技术在网络中的位置

如图1-1 所示，流分类、流量监管、流量整形、拥塞管理和拥塞避免主要完成如下功能：

l 流分类：采用一定的规则识别符合某类特征的报文，它是对网络业务进行区分服务的前提和基础。

l 流量监管：对进入或流出设备的特定流量进行监管。当流量超出设定值时，可以采取限制或惩罚措施，以保护网络资源不受损害。可以作用在接口入方向和出方向。

l 流量整形：一种主动调整流的输出速率的流量控制措施，用来使流量适配下游设备可供给的网络资源，避免不必要的报文丢弃，通常作用在接口出方向。

l 拥塞管理：就是当拥塞发生时如何制定一个资源的调度策略，以决定报文转发的处理次序，通常作用在接口出方向。

l 拥塞避免：监督网络资源的使用情况，当发现拥塞有加剧的趋势时采取主动丢弃报文的策略，通过调整队列长度来解除网络的过载，通常作用在接口出方向。


2 QoS配置方式

相关链接

  • 2.1 配置方式介绍
  • 2.2 QoS策略配置方式的步骤
父主题： 02-QoS配置


2.1 配置方式介绍

QoS的配置方式分为QoS策略配置方式和非QoS策略配置方式两种。

有些QoS功能只能使用其中一种方式来配置，有些使用两种方式都可以进行配置。在实际应用中，两种配置方式也可以结合起来使用。

2.1.1 非QoS策略配置方式

非QoS策略配置方式是指不通过QoS策略来进行配置。例如，端口限速功能可以通过直接在接口上配置来实现。

2.1.2 QoS策略配置方式

QoS策略配置方式是指通过配置QoS策略来实现QoS功能。

QoS策略包含了三个要素：类、流行为、策略。用户可以通过QoS策略将指定的类和流行为绑定起来，灵活地进行QoS配置。

1. 类

类的要素包括：类的名称和类的规则。

用户可以通过命令定义一系列的规则来对报文进行分类。

2. 流行为

流行为用来定义针对报文所做的QoS动作。

流行为的要素包括：流行为的名称和流行为中定义的动作。

用户可以通过命令在一个流行为中定义多个动作。

3. 策略

策略用来将指定的类和流行为绑定起来，对分类后的报文执行流行为中定义的动作。

策略的要素包括：策略名称、绑定在一起的类和流行为的名称。

用户可以在一个策略中定义多个类与流行为的绑定关系。


2.2 QoS策略配置方式的步骤

如 图2-1 所示：

图2-1 QoS策略配置方式的步骤

2.2.1 定义类

定义类首先要创建一个类名称，然后在此类视图下配置其匹配规则。

表2-1 定义类

操作 | 命令 | 说明
进入系统视图 | system-view | -
定义类并进入类视图 | traffic classifier tcl-name [ operator { and | or } ] | 必选 缺省为 and，即类视图下各匹配规则之间的关系为逻辑与 l and：报文只有匹配了所有的规则，设备才认为报文属于这个类 l or：报文只要匹配了类中的任何一个规则，设备就认为报文属于这个类
定义匹配数据包的规则 | if-match match-criteria | 必选

match-criteria：匹配规则，取值如 表2-2 所示。

表2-2 匹配规则

取值 | 描述
acl [ ipv6 ] { acl-number | name acl-name } | 定义匹配ACL的规则 acl-number 是ACL的序号，IPv4 ACL序号的取值范围是2000～3999，二层ACL序号的取值范围是4000～4999，IPv6 ACL序号的取值范围是2000～3999 acl-name 是ACL的名称，为1～32个字符的字符串，不区分大小写，必须以英文字母a～z或A～Z开头，为避免混淆，ACL的名称不可以使用英文单词all
any | 定义匹配所有报文的规则
customer-dot1p 8021p-list | 定义匹配用户网络802.1p优先级的规则，8021p-list 为CoS取值的列表，最多可以输入8个CoS取值，用空格隔开，CoS的取值范围为0～7
customer-vlan-id vlan-id-list | 定义匹配用户网络VLAN ID的规则，vlan-id-list 为VLAN ID的列表，形式可以为 vlan-id to vlan-id，也可以输入多个不连续的VLAN ID，用空格隔开，设备最多允许用户同时指定8个VLAN ID；VLAN ID的取值范围为1～4094
destination-mac mac-address | 定义匹配目的MAC地址的规则
dscp dscp-list | 定义匹配DSCP的规则，dscp-list 为DSCP取值的列表，最多可以输入8个DSCP取值，用空格隔开，DSCP的取值范围为0～63或 表13-4 中的关键字
ip-precedence ip-precedence-list | 定义匹配IP优先级的规则，ip-precedence-list 为IP优先级取值的列表，最多可以输入8个IP优先级取值，用空格隔开，IP优先级的取值范围为0～7
protocol protocol-name | 定义匹配协议的规则，protocol-name 取值为IP或IPv6
qos-local-id local-id-value | 定义匹配qos-local-id的规则，local-id-value 为QoS本地ID，取值范围为1～4095 在本系列交换机上，能够支持的 local-id-value 值为1～3999
service-dot1p 8021p-list | 定义匹配运营商网络802.1p优先级的规则，8021p-list 为CoS取值的列表，最多可以输入8个CoS取值，用空格隔开，CoS的取值范围为0～7
service-vlan-id vlan-id-list | 定义匹配运营商网络VLAN ID的规则，vlan-id-list 为VLAN ID的列表，形式可以为 vlan-id to vlan-id，也可以输入多个不连续的VLAN ID，用空格隔开，设备最多允许用户同时指定8个VLAN ID；VLAN ID的取值范围为1～4094
source-mac mac-address | 定义匹配源MAC地址的规则
system-index index-value-list | 定义规则来匹配预定义的上送控制平面报文类型，index-value-list 为系统预定义匹配字段索引号（system-index）的列表，最多可以输入8个system-index值，system-index值的取值范围为1～128

如果指定类的逻辑关系为 and，使用 if-match 命令定义匹配规则时，有如下注意事项：

l 匹配规则含有 acl 或 acl ipv6 时，如果在类中配置了多条这样的匹配规则，在应用策略时，匹配 acl 或 acl ipv6 的规则之间的逻辑关系实际为 or。

l 匹配规则含有 customer-vlan-id 或 service-vlan-id 时，如果在类中配置了多条这样的匹配规则，在应用策略时，匹配 customer-vlan-id 或 service-vlan-id 的规则之间的逻辑关系实际为 or。

当流分类中各规则之间的逻辑关系为 and 时，对于以下匹配条件，用户虽然可以通过重复执行 if-match 命令来配置多条匹配不同取值的规则，或在一条规则中使用 list 形式输入多个匹配值，但在应用使用该类的QoS策略时，对应该类的流行为将会无法正常执行：

l customer-dot1p 8021p-list

l destination-mac mac-address（不支持list形式）

l dscp dscp-list

l ip-precedence ip-precedence-list

l service-dot1p 8021p-list

l source-mac mac-address（不支持list形式）

l system-index index-value-list

如果用户需要创建匹配以上某一字段多个取值的规则，需要在创建流分类时指定各规则之间的逻辑关系为 or，然后再通过多次执行 if-match 命令的方式来配置匹配多个值的规则。

2.2.2 定义流行为

定义流行为首先需要创建一个流行为名称，然后可以在此流行为视图下根据需要配置相应的流行为。每个流行为由一组QoS动作组成。

表2-3 定义流行为

操作 | 命令 | 说明
进入系统视图 | system-view | -
定义一个流行为并进入流行为视图 | traffic behavior behavior-name | 必选
配置流行为 | 流行为就是对应符合流分类的报文做出相应的QoS动作，例如流量监管、流量过滤、流量重定向、重标记、流量统计等，具体情况请参见本文相关章节

2.2.3 定义策略

在策略视图下为使用的类指定对应的流行为。以某种匹配规则将流区分为不同的类，再结合不同的流行为就能很灵活的实现各种QoS功能。

表2-4 在策略中为类指定流行为

操作 | 命令 | 说明
进入系统视图 | system-view | -
定义策略并进入策略视图 | qos policy policy-name | 必选
在策略中为类指定采用的流行为 | classifier tcl-name behavior behavior-name [ mode dot1q-tag-manipulation ] | 必选 mode dot1q-tag-manipulation 用来设置VLAN映射功能中的类和流行为对应关系。有关VLAN映射功能的介绍，请参见“二层技术-以太网交换配置指导”中的“VLAN映射”

l 如果QoS策略在定义流分类规则时引用了ACL，则忽略ACL规则的动作，以流行为中定义的动作为准，报文匹配只使用ACL中的分类域。

l 当用户在策略下配置了多组类和流行为的对应关系时，如果某个流行为中配置了 nest、remark customer-vlan-id或 remark service-vlan-id动作，建议用户不要在此流行为中配置其他动作，以保证应用策略后实际的运行结果与用户的配置意图一致。有关 nest、remark customer-vlan-id或 remark service-vlan-id动作的介绍，请参见“二层技术-以太网交换配置指导”中的“VLAN映射配置”。

2.2.4 应用策略

QoS策略支持以下应用方式：

l 基于端口应用QoS策略：QoS策略对通过端口接收或发送的流量生效。

l 基于上线用户应用QoS策略：QoS策略对通过上线用户接收或发送的流量生效。

l 基于VLAN应用QoS策略：QoS策略对通过同一个VLAN内所有接口接收或发送的流量生效。

l 基于全局应用QoS策略：QoS策略对所有流量生效。

l 基于控制平面应用QoS策略：QoS策略对通过控制平面接收的流量生效。

l 当QoS策略应用到端口、VLAN、全局或未激活的User Profile后，用户仍然可以修改QoS策略中的流分类规则和流行为，以及二者的对应关系。当流分类规则中匹配的是ACL时，允许删除或修改该ACL（包括向该ACL中添加、删除和修改规则）。

l 如果User Profile处于激活状态，既不能修改策略的内容（包括流分类引用的ACL规则），也不能删除已经应用到此User Profile的策略。

l 在基于端口、基于VLAN和基于全局三种应用QoS策略的方式中，基于端口的方式优先级高于基于VLAN的方式，基于全局的方式优先级最低。即设备对于接收/发送的流量，首先匹配端口上应用的QoS策略中的流分类条件，如果匹配则直接执行端口的QoS策略而不再执行VLAN和全局的策略。

1. 基于端口应用QoS策略

本节中的端口指的是二层以太网端口、三层以太网端口。三层以太网端口是指工作模式被配置成三层模式的以太网端口，有关以太网端口工作模式切换的操作，请参见“二层技术-以太网交换配置指导”中的“以太网端口配置”部分。

一个策略可以应用于多个端口。端口的每个方向（出和入两个方向）只能应用一个策略。

表2-5 在端口上应用策略

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
进入端口视图或端口组视图 | 进入端口视图 | interface interface-type interface-number | 二者必选其一 进入端口视图后，下面进行的配置只在当前端口生效；进入端口组视图后，下面进行的配置将在端口组中的所有端口生效
 | 进入端口组视图 | port-group manual port-group-name
在端口上应用关联的策略 |  | qos apply policy policy-name { inbound | outbound } | 必选

如果QoS策略应用在端口的出方向，则QoS策略对本地协议报文不起作用。本地协议报文是指端口所在设备自身发出的某些报文，主要是维持设备正常运行的重要协议报文。为了确保这些报文能够被不受影响的发送出去，即便在端口的出方向应用了QoS策略，由本设备发出的协议报文也不会受到QoS策略的限制，从而降低了因配置QoS而误将这些报文丢弃或进行其他处理的风险。一些常见的本地协议报文如下：链路维护报文、STP、LDP、RSVP等。

2. 基于上线用户应用QoS策略

一个策略可以应用于多个上线用户。上线用户的每个方向（发送和接收两个方向）只能应用一个策略，如果用户想修改某方向上应用的策略，必须先取消原先的配置，然后再配置新的策略。

表2-6 基于上线用户应用QoS策略

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入user-profile视图 | user-profile profile-name | 必选 进入user-profile视图后，下面进行的配置只在User Profile处于激活状态，且用户成功上线后才生效 关于User Profile的相关介绍以及配置，请参见“安全配置指导”中的“User Profile”
应用关联的策略 | qos apply policy policy-name { inbound | outbound } | 必选 inbound 是对设备接收的上线用户流量（即上线用户发送的流量）应用策略；outbound 是对设备发送的上线用户流量（即上线用户接收的流量）应用策略
退回系统视图 | quit | -
激活User Profile | user-profile profile-name enable | 必选 缺省情况下，User Profile处于未激活状态

l user-profile视图下应用的策略中的流行为只支持 remark、car、filter 三种动作。

l user-profile视图下应用的策略不能为空策略，因为应用空策略的User Profile不能被激活。

l 上线用户目前支持802.1X和Portal两种接入认证方式。

3. 基于VLAN应用QoS策略

基于VLAN应用QoS策略可以方便对某个VLAN上的所有流量进行管理。

表2-7 基于VLAN应用的QoS策略

操作 | 命令 | 说明
进入系统视图 | system-view | -
应用QoS策略到指定的VLAN | qos vlan-policy policy-name vlan vlan-id-list { inbound | outbound } | 必选

基于VLAN应用的QoS策略不能应用在动态VLAN上。例如，在运行GVRP协议的情况下，设备可能会动态创建VLAN，QoS策略不能应用在该动态VLAN上。

4. 基于全局应用QoS策略

基于全局应用QoS策略可以方便对设备上的所有流量进行管理。

表2-8 基于全局应用QoS策略

操作 | 命令 | 说明
进入系统视图 | system-view | -
基于全局应用QoS策略 | qos apply policy policy-name global { inbound | outbound } | 必选

5. 基于控制平面应用QoS策略

设备支持数据平面和控制平面：

l 数据平面（DP，Data Plane）：是指对报文进行收发、交换的处理单元，它的主要工作是转发报文。在设备上，与之相对应的核心物理实体就是各种专用转发芯片，它们有极高的处理速度和很强的数据吞吐能力。

l 控制平面（CP，Control Plane）：是指运行大部分路由交换协议进程的处理单元，它的主要工作是进行协议报文的解析和协议的计算。在设备上，与之相对应的核心物理实体就是CPU，它具备灵活的报文处理能力，但数据吞吐能力有限。

数据平面接收到无法识别或处理的报文会送到控制平面进行进一步处理。如果上送控制平面的报文速率超过了控制平面的处理能力，那么上送控制平面的正常报文会得不到正确转发或及时处理，从而影响协议的正常运行，例如设备受到DoS（Denial of Service，拒绝服务）攻击。

为了解决此问题，用户可以把QoS策略应用在控制平面上，通过对上送控制平面的报文进行过滤、限速等QoS处理，达到保护控制平面正常报文的收发、维护控制平面正常处理状态的目的。

表2-9 应用控制平面策略

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入控制平面视图 | control-plane slot slot-number | 必选
应用QoS策略 | qos apply policy policy-name inbound | 必选

l 缺省情况下，设备会在控制平面上应用预定义的QoS策略，并默认生效。预定义的QoS策略中通过system-index来标识各种上送控制平面的报文类型，用户也可以在流分类视图下通过 if-match 命令引用这些system-index来进行报文分类，然后根据需要为这些报文重新配置流行为。系统预定义的QoS策略信息可以通过 display qos policy control-plane pre-defined命令查看。

l 在控制平面应用QoS策略时，如果流分类的匹配条件是 system-index，则流行为的动作只能为 car，或者 car 和 accounting packet 动作的组合，且只有 cir 参数的取值可以被正常应用。

l 在控制平面上应用QoS策略时，如果流分类的匹配条件不是 system-index，则流行为中的动作将对该控制平面所在设备上的数据流量也将生效。

2.2.5 QoS策略显示和维护

在任意视图下执行 display 命令可以显示QoS策略的运行情况，通过查看显示信息验证配置的效果。

表2-10 QoS策略显示和维护

操作 | 命令
显示配置的类信息 | display traffic classifier user-defined [ tcl-name ] [ | { begin | exclude | include } regular-expression ]
显示配置的流行为信息 | display traffic behavior user-defined [ behavior-name ] [ | { begin | exclude | include } regular-expression ]
显示用户定义策略的配置信息 | display qos policy user-defined [ policy-name [ classifier tcl-name ] ] [ | { begin | exclude | include } regular-expression ]
显示指定端口或所有端口上策略的配置信息和运行情况 | display qos policy interface [ interface-type interface-number ] [ inbound | outbound ] [ | { begin | exclude | include } regular-expression ]
显示VLAN应用QoS策略的信息 | display qos vlan-policy { name policy-name | vlan vlan-id } [ slot slot-number ] [ inbound | outbound ] [ | { begin | exclude | include } regular-expression ]
显示全局应用QoS策略的信息 | display qos policy global [ slot slot-number ] [ inbound | outbound ] [ | { begin | exclude | include } regular-expression ]
显示控制平面应用QoS策略的信息 | display qos policy control-plane slot slot-number [ inbound ] [ | { begin | exclude | include } regular-expression ]
显示预定义控制平面应用QoS策略的信息 | display qos policy control-plane pre-defined [ slot slot-number ] [ | { begin | exclude | include } regular-expression ]
清除VLAN应用QoS策略的统计信息 | reset qos vlan-policy [ vlan vlan-id ] [ inbound | outbound ]
清除全局应用QoS策略的统计信息 | reset qos policy global [ inbound | outbound ]
清空控制平面应用QoS策略的统计信息 | reset qos policy control-plane slot slot-number [ inbound ]


3 优先级映射配置

优先级映射功能中的“端口”包含了二层以太网端口和三层以太网端口，三层以太网端口是指被配置为三层模式以太网端口，的有关以太网端口模式切换的操作，请参见“二层技术-以太网交换配置指导”中的“以太网端口”

相关链接

  • 3.1 优先级映射简介
  • 3.2 优先级映射配置任务简介
  • 3.3 配置优先级映射
  • 3.4 优先级映射显示和维护
  • 3.5 优先级映射典型配置举例
父主题： 02-QoS配置


3.1 优先级映射简介

3.1.1 概述

报文在进入设备以后，设备会根据自身情况和相应规则分配或修改报文的各种优先级的值，为队列调度和拥塞控制服务。

优先级映射功能通过报文所携带的优先级字段来映射其他优先级字段值，就可以获得各种用以决定报文调度能力的各种优先级字段，从而可以全面有效的控制报文的转发调度能力。

3.1.2 优先级介绍

优先级用于标识报文传输的优先程度，可以分为两类：报文携带优先级和设备调度优先级。

报文携带优先级包括：802.1p优先级、DSCP优先级、IP优先级等。这些优先级都是根据公认的标准和协议生成，体现了报文自身的优先等级。相关介绍请参见 13.2 附录 B 各种优先级介绍 。

设备调度优先级是指报文在设备内转发时所使用的优先级，只对当前设备自身有效。设备调度优先级包括以下几种：

l 本地优先级（LP）：设备为报文分配的一种具有本地意义的优先级，每个本地优先级对应一个队列，本地优先级值越大的报文，进入的队列优先级越高，从而能够获得优先的调度。

l 丢弃优先级（DP）：在进行报文丢弃时参考的参数，丢弃优先级值越大的报文越被优先丢弃。

3.1.3 优先级映射表

优先级映射功能通过优先级映射表来进行，设备提供了多张优先级映射表，分别对应相应的优先级映射关系：

l dot1p-dp：802.1p优先级到丢弃优先级映射表；

l dot1p-lp：802.1p优先级到本地优先级映射表；

l dscp-dot1p：DSCP到802.1p优先级映射表，仅对IP报文生效；

l dscp-dp：DSCP到丢弃优先级映射表，仅对IP报文生效；

l dscp-dscp：DSCP到DSCP映射表，仅对IP报文生效；

通常情况下，可以通过查找缺省优先级映射表（ 13.1 附录 A 缺省优先级映射表 ）来为报文分配相应的优先级。如果缺省优先级映射表无法满足用户需求，可以根据实际情况对映射表进行修改。

3.1.4 优先级信任模式

通常情况下，报文可能会携带有多种优先级，设备在进行优先级映射时，需要首先确定采用哪种优先级作为参考，再通过优先级映射表映射出调度优先级。优先级信任模式就是用来指定设备进行优先级映射时作为参考的报文携带优先级，本系列交换机支持以下几种优先级信任模式：

l 信任DSCP优先级：设备将根据报文携带的DSCP优先级查找映射表进行优先级映射。

l 信任802.1p优先级：设备将根据报文携带的802.1p优先级查找映射表进行优先级映射。

l 不信任报文优先级：设备将使用接收报文的端口的端口优先级作为报文的802.1p优先级，并通过映射表进行优先级映射。

另外，当端口信任802.1p优先级，而接收到的报文又没有携带802.1Q标签时，设备将使用接收端口的端口优先级作为报文的802.1p优先级，并依此进行优先级映射。

3.1.5 优先级映射过程

对于接收到的以太网报文，交换机根据优先级信任模式和报文的802.1q标签状态，将采用不同的方式为其标记调度优先级。如 图3-1 所示：

图3-1 以太网报文优先级映射过程

上面介绍的过程适用于没有配置重标记功能的情况，如果已经配置了重标记功能，设备将根据重标记后的报文携带优先级查找映射表，为报文分配调度优先级，或者直接采用重标记后的调度优先级进行调度。此时端口的信任模式和端口优先级的配置均不生效。


3.2 优先级映射配置任务简介

修改优先级映射关系的方式有三种：配置优先级映射表、配置优先级信任模式和配置端口优先级。

建议进行各项配置的时候先整体规划网络QoS。

表3-1 优先级映射配置任务简介

配置任务 | 说明 | 详细配置
配置优先级映射表 | 可选 | 3.3.1
配置优先级信任模式 | 可选 | 3.3.2
配置端口优先级 | 可选 | 3.3.3


3.3 配置优先级映射

3.3.1 配置优先级映射表

表3-2 配置优先级映射表

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入指定的优先级映射表视图 | qos map-table { dot1p-dp | dot1p-lp | dscp-dot1p | dscp-dp | dscp-dscp } | 必选 用户根据需要进入相应的优先级映射表视图
配置指定优先级映射表参数，定义优先级映射关系 | import import-value-list export export-value | 必选 新配置的映射项将覆盖原有映射项

3.3.2 配置优先级信任模式

根据报文自身的优先级，查找优先级映射表，为报文分配优先级参数，可以通过配置优先级信任模式的方式来实现。

在配置接口/端口组上的优先级模式时，用户可以选择下列信任模式：

l 信任报文自带的802.1p优先级，以此优先级进行优先级映射。

l 信任IP报文自带的DSCP优先级，以此优先级进行优先级映射。

l 不信任报文优先级，使用端口优先级作为报文的802.1p优先级进行优先级映射。

表3-3 配置优先级信任模式

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
进入端口视图或端口组视图 | 进入端口视图 | interface interface-type interface-number | 二者必选其一 进入端口视图后，下面进行的配置只在当前端口生效；进入端口组视图后，下面进行的配置将在端口组中的所有端口生效
 | 进入端口组视图 | port-group manual port-group-name
配置端口信任报文的DSCP优先级 |  | qos trust dscp | 三者选其一 缺省情况下，设备不信任报文携带的优先级
配置信任报文的802.1p优先级 |  | qos trust dot1p
配置不信任报文携带的优先级 |  | undo qos trust

3.3.3 配置端口优先级

按照接收端口的端口优先级，通过一一映射为报文分配相应的优先级。

表3-4 配置端口优先级

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
进入端口视图或端口组视图 | 进入端口视图 | interface interface-type interface-number | 二者必选其一 进入端口视图后，下面进行的配置只在当前端口生效；进入端口组视图后，下面进行的配置将在端口组中的所有端口生效
 | 进入端口组视图 | port-group manual port-group-name
配置端口优先级 |  | qos priority priority-value | 必选 端口优先级的缺省值为0


3.4 优先级映射显示和维护

在完成上述配置后，在任意视图下执行 display 命令可以显示配置后优先级映射的运行情况，通过查看显示信息验证配置的效果。

表3-5 优先级映射显示和维护

操作 | 命令
显示指定优先级映射表配置情况 | display qos map-table [ dot1p-dp | dot1p-lp | dscp-dot1p | dscp-dp | dscp-dscp ] [ | { begin | exclude | include } regular-expression ]
显示端口优先级信任模式信息 | display qos trust interface [ interface-type interface-number ] [ | { begin | exclude | include } regular-expression ]


3.5 优先级映射典型配置举例

3.5.1 优先级信任模式和端口优先级配置举例

1. 组网需求

Device A和Device B通过Device C实现互连。网络环境描述如下：

l Device A通过端口Ethernet1/0/1接入Device C；

l Device B通过端口Ethernet1/0/2接入Device C。

l Device A和Device B向Device C发送的报文都不携带VLAN Tag。

要求通过配置实现如下需求：如果Device C在出口发生拥塞，则优先处理Device A发出的报文（优先让Device A访问Server）。

2. 组网图

图3-2 优先级信任模式和端口优先级配置举例组网图

3. 配置步骤

# 在Ethernet1/0/1和Ethernet1/0/2端口上分别配置端口优先级，Ethernet1/0/1上配置的端口优先级值要高于Ethernet1/0/2上配置的端口优先级值。

<DeviceC> system-view

[DeviceC] interface ethernet 1/0/1

[DeviceC-Ethernet1/0/1] qos priority 3

[DeviceC-Ethernet1/0/1] quit

[DeviceC] interface ethernet 1/0/2

[DeviceC-Ethernet1/0/2] qos priority 1

[DeviceC-Ethernet1/0/2] quit

3.5.2 优先级映射表和重标记配置举例

1. 组网需求

公司企业网通过Device实现各部门之间的互连。网络环境描述如下：

l 市场部门通过端口Ethernet1/0/1接入Device，标记市场部门发出的报文的802.1p优先级为3；

l 研发部门通过端口Ethernet1/0/2接入Device，标记研发部门发出的报文的802.1p优先级为4；

l 管理部门通过端口Ethernet1/0/3接入Device，标记管理部门发出的报文的802.1p优先级为5。

实现如下需求：

访问公共服务器的时候，研发部门 > 管理部门 > 市场部门。

l 通过优先级映射将研发部门发出的报文放入出队列6中，优先进行处理；

l 通过优先级映射将管理部门发出的报文放入出队列4中，次优先进行处理；

l 通过优先级映射将市场部门发出的报文放入出队列2中，最后进行处理。

通过HTTP方式访问Internet的时候，管理部门 > 市场部门 > 研发部门。

l 重标记管理部门发出的报文本地优先级为6，优先进行处理；

l 重标记市场部门发出的报文的本地优先级为4，次优先进行处理；

l 重标记研发部门发出的报文的本地优先级为2，最后进行处理。

2. 组网图

图3-3 优先级映射表和重标记配置举例组网图

3. 配置步骤

(1) 配置端口的端口优先级

# 配置端口Ethernet1/0/1的端口优先级为3。

<Device> system-view

[Device] interface ethernet 1/0/1

[Device-Ethernet1/0/1] qos priority 3

[Device-Ethernet1/0/1] quit

# 配置端口Ethernet1/0/2的端口优先级为4。

[Device] interface ethernet 1/0/2

[Device-Ethernet1/0/2] qos priority 4

[Device-Ethernet1/0/2] quit

# 配置端口Ethernet1/0/3的端口优先级为5。

[Device] interface ethernet 1/0/3

[Device-Ethernet1/0/3] qos priority 5

[Device-Ethernet1/0/3] quit

(2) 配置优先级映射表

# 配置802.1p优先级到本地优先级映射表，将802.1p优先级3、4、5对应的本地优先级配置为2、6、4。保证访问服务器的优先级为研发部门（6）>管理部门（4）>市场部门（2）。

[Device] qos map-table dot1p-lp

[Device-maptbl-dot1p-lp] import 3 export 2

[Device-maptbl-dot1p-lp] import 4 export 6

[Device-maptbl-dot1p-lp] import 5 export 4

[Device-maptbl-dot1p-lp] quit

(3) 配置重标记

将管理、市场、研发部门发出的HTTP报文的802.1p优先级分别重标记为4、5、3，使其能根据前面配置的映射表分别映射到本地优先级6、4、2。

# 创建ACL 3000，用来匹配HTTP报文。

[Device] acl number 3000

[Device-acl-adv-3000] rule permit tcp destination-port eq 80

[Device-acl-adv-3000] quit

# 创建流分类，匹配ACL 3000。

[Device] traffic classifier http

[Device-classifier-http] if-match acl 3000

[Device-classifier-http] quit

# 配置管理部门的重标记策略并应用到Ethernet1/0/3端口的入方向。

[Device] traffic behavior admin

[Device-behavior-admin] remark dot1p 4

[Device-behavior-admin] quit

[Device] qos policy admin

[Device-qospolicy-admin] classifier http behavior admin

[Device-qospolicy-admin] quit

[Device] interface ethernet 1/0/3

[Device-Ethernet1/0/3] qos apply policy admin inbound

# 配置市场部门的重标记策略并应用到Ethernet1/0/1端口的入方向。

[Device] traffic behavior market

[Device-behavior-market] remark dot1p 5

[Device-behavior-market] quit

[Device] qos policy market

[Device-qospolicy-market] classifier http behavior market

[Device-qospolicy-market] quit

[Device] interface ethernet 1/0/1

[Device-Ethernet1/0/1] qos apply policy market inbound

# 配置研发部门的重标记策略并应用到Ethernet1/0/2端口的入方向。

[Device] traffic behavior rd

[Device-behavior-rd] remark dot1p 3

[Device-behavior-rd] quit

[Device] qos policy rd

[Device-qospolicy-rd] classifier http behavior rd

[Device-qospolicy-rd] quit

[Device] interface ethernet 1/0/2

[Device-Ethernet1/0/2] qos apply policy rd inbound


4 流量监管、流量整形和端口限速配置

流量整形和端口限速功能中的“端口”包含了二层以太网端口和三层以太网端口，三层以太网端口是指被配置为三层模式以太网端口，的有关以太网端口模式切换的操作，请参见“二层技术-以太网交换配置指导”中的“以太网端口”

相关链接

  • 4.1 流量监管、流量整形和端口限速简介
  • 4.2 流量监管配置
  • 4.3 流量整形配置
  • 4.4 端口限速配置
  • 4.5 流量监管/流量整形/端口限速显示和维护
  • 4.6 流量监管典型配置举例
父主题： 02-QoS配置


4.1 流量监管、流量整形和端口限速简介

如果不限制用户发送的流量，那么大量用户不断突发的数据只会使网络更拥挤。为了使有限的网络资源能够更好地发挥效用，更好地为更多的用户服务，必须对用户的流量加以限制。比如限制每个时间间隔某个流只能得到承诺分配给它的那部分资源，防止由于过分突发所引发的网络拥塞。

流量监管、流量整形和端口限速都可以通过对流量规格的监督来限制流量及其资源的使用，它们有一个前提条件，就是要知道流量是否超出了规格，然后才能根据评估结果实施调控。一般采用令牌桶（Token Bucket）对流量的规格进行评估。

4.1.1 流量评估与令牌桶

1. 令牌桶的特点

令牌桶可以看作是一个存放一定数量令牌的容器。系统按设定的速度向桶中放置令牌，当桶中令牌满时，多出的令牌溢出，桶中令牌不再增加。

2. 用令牌桶评估流量

在用令牌桶评估流量规格时，是以令牌桶中的令牌数量是否足够满足报文的转发为依据的。如果桶中存在足够的令牌可以用来转发报文，称流量遵守或符合这个规格，否则称为不符合或超标。

评估流量时令牌桶的参数包括：

l 平均速率：向桶中放置令牌的速率，即允许的流的平均速度。通常配置为CIR。

l 突发尺寸：令牌桶的容量，即每次突发所允许的最大的流量尺寸。通常配置为CBS，突发尺寸必须大于最大报文长度。

每到达一个报文就进行一次评估。每次评估，如果桶中有足够的令牌可供使用，则说明流量控制在允许的范围内，此时要从桶中取走与报文转发权限相当的令牌数量；否则说明已经耗费太多令牌，流量超标了。

3. 复杂评估

为了评估更复杂的情况，实施更灵活的调控策略，可以配置两个令牌桶（简称C桶和E桶）。例如TP中有四个参数：

l CIR：表示向C桶中投放令牌的速率，即C桶允许传输或转发报文的平均速率；

l CBS：表示C桶的容量，即C桶瞬间能够通过的承诺突发流量；

l PIR：表示向E桶中投放令牌的速率，即E桶允许传输或转发报文的最大速率；

l EBS：表示E桶的容量，即E桶瞬间能够通过的超出突发流量。

CBS和EBS是由两个不同的令牌桶承载的。每次评估时，依据下面的情况，可以分别实施不同的流控策略：

l 如果C桶有足够的令牌，报文被标记为green，即绿色报文；

l 如果C桶令牌不足，但E桶有足够的令牌，报文被标记为yellow，即黄色报文；

l 如果C桶和E桶都没有足够的令牌，报文被标记为red，即红色报文。

4.1.2 流量监管

流量监管支持入/出两个方向，为了方便描述，下文以出方向为例。

流量监管TP（Traffic Policing）就是对流量进行控制，通过监督进入网络的流量速率，对超出部分的流量进行“惩罚”，使进入的流量被限制在一个合理的范围之内，以保护网络资源和运营商的利益。例如可以限制HTTP报文不能占用超过50%的网络带宽。如果发现某个连接的流量超标，流量监管可以选择丢弃报文，或重新配置报文的优先级。

图4-1 TP示意图

流量监管广泛的用于监管进入Internet服务提供商ISP的网络流量。流量监管还包括对所监管流量的流分类服务，并依据不同的评估结果，实施预先设定好的监管动作。这些动作可以是：

l 转发：比如对评估结果为“符合”的报文继续转发。

l 丢弃：比如对评估结果为“不符合”的报文进行丢弃。

l 改变优先级并转发：比如对评估结果为“符合”的报文，将其优先级标记为其他值后再进行转发，可以改变的优先级包括：802.1p优先级、DSCP优先级、本地优先级。

4.1.3 流量整形

流量整形只针对设备的出方向。

TS（Traffic Shaping，流量整形）是一种主动调整流量输出速率的措施。一个典型应用是基于下游网络节点的TP指标来控制本地流量的输出。

流量整形与流量监管的主要区别在于，流量整形对流量监管中需要丢弃的报文进行缓存——通常是将它们放入缓冲区或队列内，如 图4-2 所示。当令牌桶有足够的令牌时，再均匀的向外发送这些被缓存的报文。流量整形与流量监管的另一区别是，整形可能会增加延迟，而监管几乎不引入额外的延迟。

图4-2 TS示意图

例如，在 图4-3 所示的应用中，设备Device A向Device B发送报文。Device B要对Device A发送来的报文进行TP监管，对超出规格的流量直接丢弃。

图4-3 流量整形的应用

为了减少报文的无谓丢失，可以在Device A的出口对报文进行流量整形处理。将超出流量整形特性的报文缓存在Device A中。当可以继续发送下一批报文时，流量整形再从缓冲队列中取出报文进行发送。这样，发向Device B的报文将都符合Device B的流量规定。

4.1.4 端口限速

端口限速支持入/出两个方向，为了方便描述，下文以出方向为例。

利用LR（Line Rate，端口限速）可以在一个端口上限制发送报文（包括紧急报文）的总速率。

LR也是采用令牌桶进行流量控制。如果在设备的某个端口上配置了LR，所有经由该端口发送的报文首先要经过LR的令牌桶进行处理。如果令牌桶中有足够的令牌，则报文可以发送；否则，报文将进入QoS队列进行拥塞管理。这样，就可以对通过该端口的报文流量进行控制。

图4-4 LR处理过程示意图

由于采用了令牌桶控制流量，当令牌桶中存有令牌时，可以允许报文的突发性传输；当令牌桶中没有令牌时，报文必须等到桶中生成了新的令牌后才可以继续发送。这就限制了报文的流量不能大于令牌生成的速度，达到了限制流量，同时允许突发流量通过的目的。

与流量监管相比，端口限速能够限制在端口上通过的所有报文。当用户只要求对所有报文限速时，使用端口限速比较简单。


4.2 流量监管配置

表4-1 流量监管配置

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
定义类并进入类视图 |  | traffic classifier tcl-name [ operator { and | or } ] | -
定义匹配数据包的规则 |  | if-match match-criteria | -
退出类视图 |  | quit | -
定义一个流行为并进入流行为视图 |  | traffic behavior behavior-name | -
配置流量监管动作 |  | car cir committed-information-rate [ cbs committed-burst-size [ ebs excess-burst-size ] ] [ pir peak-information-rate ] [ green action ] [ yellow action ] [ red action ] [ hierarchy-car hierarchy-car-name [ mode { and | or } ] ] | 必选 分层CAR的详细情况请参见 10.1.2 分层CAR
退出流行为视图 |  | quit | -
定义策略并进入策略视图 |  | qos policy policy-name | -
在策略中为类指定采用的流行为 |  | classifier tcl-name behavior behavior-name | -
退出策略视图 |  | quit | -
应用QoS策略 | 基于端口 | 2.2.4 1. 基于端口应用QoS策略 | -
 | 基于上线用户 | 2.2.4 2. 基于上线用户应用QoS策略 | -
 | 基于VLAN | 2.2.4 3. 基于VLAN应用QoS策略 | -
 | 基于全局 | 2.2.4 4. 基于全局应用QoS策略 | -
 | 基于控制平面 | 2.2.4 5. 基于控制平面应用QoS策略 | -

在一个流行为中，流量监管动作不能与重标记优先级（包括本地优先级、丢弃优先级、802.1p优先级、DSCP优先级、IP优先级）的动作同时配置，否则会导致QoS策略不能正常应用。


4.3 流量整形配置

本系列交换机的流量整形为基于队列的流量整形，即针对某一个队列的数据包设置整形参数。

表4-2 流量整形配置

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
进入端口视图或端口组视图 | 进入端口视图 | interface interface-type interface-number | 二者必选其一 进入端口视图后，下面进行的配置只在当前端口生效；进入端口组视图后，下面进行的配置将在端口组中的所有端口生效
 | 进入端口组视图 | port-group manual port-group-name
在端口配置流量整形 |  | qos gts queue queue-number cir committed-information-rate [ cbs committed-burst-size ] | 必选


4.4 端口限速配置

配置端口限速就是限制端口向外发送数据或者接收数据的速率。

表4-3 端口限速配置过程

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
进入端口视图或端口组视图 | 进入端口视图 | interface interface-type interface-number | 二者必选其一 进入端口视图后，下面进行的配置只在当前端口生效；进入端口组视图后，下面进行的配置将在端口组中的所有端口生效
 | 进入端口组视图 | port-group manual port-group-name
配置端口限速 |  | qos lr { inbound | outbound } cir committed-information-rate [ cbs committed-burst-size ] | 必选


4.5 流量监管/流量整形/端口限速显示和维护

本系列交换机的流量监管功能通过QoS策略方式实现，相关显示和维护的命令请参见 2.2.5 QoS策略显示和维护 。

在完成上述配置后，在任意视图下执行 display 命令可以显示配置后流量整形/端口限速的运行情况，通过查看显示信息验证配置的效果。

表4-4 流量监管/流量整形/端口限速显示和维护

操作 | 命令
显示流量整形配置运行信息 | display qos gts interface [ interface-type interface-number ] [ | { begin | exclude | include } regular-expression ]
显示接口的LR配置和统计信息 | display qos lr interface [ interface-type interface-number ] [ | { begin | exclude | include } regular-expression ]


4.6 流量监管典型配置举例

4.6.1 流量监管典型配置举例

1. 配置需求

l 设备Device A通过端口Ethernet1/0/3和设备Device B的端口Ethernet1/0/1互连

l Server、Host A、Host B可经由Device A和Device B访问Internet

要求在设备Device A上对端口Ethernet1/0/1接收到的源自Server和Host A的报文流分别实施流量控制如下：

l 来自Server的报文流量约束为1024kbps，流量小于1024kbps时可以正常发送，流量超过1024kbps时则将违规报文的DSCP优先级设置为0后进行发送；

l 来自Host A的报文流量约束为256kbps，流量小于256kbps时可以正常发送，流量超过256kbps时则丢弃违规报文；

对设备Device B的Ethernet1/0/1和Ethernet1/0/2接口收发报文有如下要求：

l Device B的Ethernet1/0/1端口接收报文的总流量限制为2048kbps，如果超过流量限制则将违规报文丢弃；

l 经由Device B的Ethernet1/0/2端口进入Internet的HTTP报文流量限制为1024kbps，如果超过流量限制则将违规报文丢弃。

2. 组网图

图4-5 流量监管配置组网图

3. 配置步骤

(1) 配置设备Device A：

# 配置ACL2001和2002，分别匹配来源于Server和Host A的报文流。

<DeviceA> system-view

[DeviceA] acl number 2001

[DeviceA-acl-basic-2001] rule permit source 1.1.1.1 0

[DeviceA-acl-basic-2001] quit

[DeviceA] acl number 2002

[DeviceA-acl-basic-2002] rule permit source 1.1.1.2 0

[DeviceA-acl-basic-2002] quit

# 创建流分类server，匹配规则为ACL 2001；创建流分类host，匹配规则为ACL 2002。

[DeviceA] traffic classifier server

[DeviceA-classifier-server] if-match acl 2001

[DeviceA-classifier-server] quit

[DeviceA] traffic classifier host

[DeviceA-classifier-host] if-match acl 2002

[DeviceA-classifier-host] quit

# 创建流行为server，动作为流量监管，cir为1024kbps，对超出限制的报文（红色报文）将其DSCP优先级设置为0后发送。

[DeviceA] traffic behavior server

[DeviceA-behavior-server] car cir 1024 red remark-dscp-pass 0

[DeviceA-behavior-server] quit

# 创建流行为host，动作为流量监管，cir为256kbps，由于默认对红色报文的处理方式就是丢弃，因此无需配置。

[DeviceA] traffic behavior host

[DeviceA-behavior-host] car cir 256

[DeviceA-behavior-host] quit

# 创建QoS策略，命名为car，将流分类server和流行为server进行关联；将流分类host和流行为host进行关联。

[DeviceA] qos policy car

[DeviceA-qospolicy-car] classifier server behavior server

[DeviceA-qospolicy-car] classifier host behavior host

[DeviceA-qospolicy-car] quit

# 将QoS策略car应用到端口Ethernet1/0/1的入方向上。

[DeviceA] interface Ethernet 1/0/1

[DeviceA-Ethernet1/0/1] qos apply policy car inbound

(2) 配置设备Device B：

# 配置高级ACL3001，匹配HTTP报文。

<DeviceB> system-view

[DeviceB] acl number 3001

[DeviceB-acl-adv-3001] rule permit tcp destination-port eq 80

[DeviceB-acl-adv-3001] quit

# 创建流分类http，匹配ACL 3001。

[DeviceB] traffic classifier http

[DeviceB-classifier-http] if-match acl 3001

[DeviceB-classifier-http] quit

# 创建流分类class，匹配所有报文。

[DeviceB] traffic classifier class

[DeviceB-classifier-class] if-match any

[DeviceB-classifier-class] quit

# 创建流行为car_inbound，动作为流量监管，cir为2048kbps，由于默认对红色报文的处理方式就是丢弃，因此无需配置。

[DeviceB] traffic behavior car_inbound

[DeviceB-behavior-car_inbound] car cir 2048

[DeviceB-behavior-car_inbound] quit

# 创建流行为car_outbound，动作为流量监管，cir为1024kbps。

[DeviceB] traffic behavior car_outbound

[DeviceB-behavior-car_outbound] car cir 1024

[DeviceB-behavior-car_outbound] quit

# 创建QoS策略，命名为car_inbound，将流分类class和流行为car_inbound进行关联。

[DeviceB] qos policy car_inbound

[DeviceB-qospolicy-car_inbound] classifier class behavior car_inbound

[DeviceB-qospolicy-car_inbound] quit

# 创建QoS策略，命名为car_outbound，将流分类http和流行为car_outbound进行关联。

[DeviceB] qos policy car_outbound

[DeviceB-qospolicy-car_outbound] classifier http behavior car_outbound

[DeviceB-qospolicy-car_outbound] quit

# 将QoS策略car_inbound应用到端口Ethernet1/0/1的入方向上。

[DeviceB] interface Ethernet 1/0/1

[DeviceB-Ethernet1/0/1]qos apply policy car_inbound inbound

# 将QoS策略car_outbound应用到端口Ethernet1/0/2的入方向上。

[DeviceB] interface Ethernet 1/0/2

[DeviceB-Ethernet1/0/2]qos apply policy car_outbound outbound


5 拥塞管理配置

拥塞管理功能中的“端口”包含了二层以太网端口和三层以太网端口，三层以太网端口是指被配置为三层模式以太网端口，的有关以太网端口模式切换的操作，请参见“二层技术-以太网交换配置指导”中的“以太网端口”

相关链接

  • 5.1 拥塞管理简介
  • 5.2 拥塞管理配置任务简介
  • 5.3 拥塞管理配置
父主题： 02-QoS配置


5.1 拥塞管理简介

5.1.1 拥塞的产生、影响和对策

所谓拥塞，是指当前供给资源相对于正常转发处理需要资源的不足，从而导致服务质量下降的一种现象。

在复杂的Internet分组交换环境下，拥塞极为常见。以下图中的两种情况为例：

图5-1 流量拥塞示意图

拥塞有可能会引发一系列的负面影响：

l 拥塞增加了报文传输的延迟和抖动，可能会引起报文重传，从而导致更多的拥塞产生。

l 拥塞使网络的有效吞吐率降低，造成网络资源的利用率降低。

l 拥塞加剧会耗费大量的网络资源（特别是存储资源），不合理的资源分配甚至可能导致系统陷入资源死锁而崩溃。

在分组交换以及多用户业务并存的复杂环境下，拥塞又是不可避免的，因此必须采用适当的方法来解决拥塞。

拥塞管理的中心内容就是当拥塞发生时如何制定一个资源的调度策略，以决定报文转发的处理次序。拥塞管理的处理包括队列的创建、报文的分类、将报文送入不同的队列、队列调度等。

5.1.2 拥塞管理策略

对于拥塞管理，一般采用队列技术，使用一个队列算法对流量进行分类，之后用某种优先级别算法将这些流量发送出去。每种队列算法都是用以解决特定的网络流量问题，并对带宽资源的分配、延迟、抖动等有着十分重要的影响。

队列调度对不同优先级的报文进行分级处理，优先级高的会得到优先发送。这里介绍几种常用的队列：严格优先级SP（Strict-Priority）队列、加权轮询WRR（Weighted Round Robin）队列、SP+WRR队列。

1. SP队列

图5-2 SP队列示意图

SP队列是针对关键业务类型应用设计的。关键业务有一个重要的特点，即在拥塞发生时要求优先获得服务以减小响应的延迟。以图5-2 为例，优先队列将端口的8个输出队列分成8类，依次为7、6、5、4、3、2、1、0队列，它们的优先级依次降低。

在队列调度时，SP严格按照优先级从高到低的次序优先发送较高优先级队列中的分组，当较高优先级队列为空时，再发送较低优先级队列中的分组。这样，将关键业务的分组放入较高优先级的队列，将非关键业务的分组放入较低优先级的队列，可以保证关键业务的分组被优先传送，非关键业务的分组在处理关键业务数据的空闲间隙被传送。

SP的缺点是：拥塞发生时，如果较高优先级队列中长时间有分组存在，那么低优先级队列中的报文将一直得不到服务。

2. WRR队列

图5-3 WRR队列示意图

WRR队列在队列之间进行轮流调度，保证每个队列都得到一定的服务时间。以端口有8个输出队列为例，WRR可为每个队列配置一个加权值（依次为w7、w6、w5、w4、w3、w2、w1、w0），加权值表示获取资源的比重。

本系列交换机可以根据每次轮询调度的字节数或者报文个数来体现某个队列的调度权重，即使用字节数或报文个数作为调度单位。

以使用字节数为调度单位的WRR队列为例，如一个100Mbps的端口，配置它的WRR队列的加权值为5、5、3、3、1、1、1、1（依次对应w7、w6、w5、w4、w3、w2、w1、w0），这样可以保证最低优先级队列至少获得5Mbps的带宽，避免了采用SP调度时低优先级队列中的报文可能长时间得不到服务的缺点。

WRR队列还有一个优点是，虽然多个队列的调度是轮询进行的，但对每个队列不是固定地分配服务时间片——如果某个队列为空，那么马上换到下一个队列调度，这样带宽资源可以得到充分的利用。

3. SP+WRR队列

用户可以根据需要配置端口上的部分队列使用SP队列调度，部分队列使用WRR队列调度，通过将端口上的队列分别加入SP调度组和WRR调度组（即group 1），实现SP+WRR的调度功能。在队列调度时，系统会优先保证SP调度组内的队列调度，当SP调度组内的队列中没有报文发送时，才会调度WRR调度组内的队列。SP调度组内各个队列执行严格优先级调度方式，WRR调度组内各个队列执行加权轮询调度方式。


5.2 拥塞管理配置任务简介

表5-1 拥塞管理配置任务简介

配置任务 |  | 说明 | 详细配置
拥塞管理配置 | 配置SP队列 | 选择其中一种进行配置 | 5.3.1
 | 配置WRR队列 |  | 5.3.2
 | 配置SP+WRR队列 |  | 5.3.3


5.3 拥塞管理配置

5.3.1 配置SP队列

1. 配置过程

表5-2 SP队列配置过程

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
进入端口视图或端口组视图 | 进入端口视图 | interface interface-type interface-number | 二者必选其一 进入端口视图后，下面进行的配置只在当前端口生效；进入端口组视图后，下面进行的配置将在端口组中的所有端口生效
 | 进入端口组视图 | port-group manual port-group-name
配置SP队列 |  | qos sp | 必选 缺省情况下，端口使用WRR队列进行调度
显示SP队列 |  | display qos sp interface [ interface-type interface-number ] [ | { begin | exclude | include } regular-expression ] | 可选 display 命令可以在任意视图下执行

2. 配置举例

(1) 组网需求

配置Ethernet1/0/1采用SP队列。

(2) 配置步骤

# 进入系统视图

<Sysname> system-view

# 配置Ethernet1/0/1的SP队列。

[Sysname] interface ethernet 1/0/1

[Sysname-Ethernet1/0/1] qos sp

5.3.2 配置WRR队列

1. 配置过程

表5-3 WRR队列配置过程

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
进入端口视图或端口组视图 | 进入端口视图 | interface interface-type interface-number | 二者必选其一 进入端口视图后，下面进行的配置只在当前端口生效；进入端口组视图后，下面进行的配置将在端口组中的所有端口生效
 | 进入端口组视图 | port-group manual port-group-name
使能端口的WRR队列 |  | qos wrr [ byte-count | weight ] | 可选 缺省情况下，端口使用WRR队列进行调度
配置WRR队列的调度权重 |  | qos wrr queue-id group group-id byte-count schedule-value | 可选 请根据使能WRR队列时使用的调度权重选择二者之一进行配置 如果在端口上开启了WRR队列，缺省情况下使用字节数作为调度权重，各队列的权重分别为1、2、3、4、5、9、13、15
 |  | qos wrr queue-id group group-id weight schedule-value
显示WRR队列的配置 |  | display qos wrr interface [ interface-type interface-number ] [ | { begin | exclude | include } regular-expression ] | 可选 display 命令可以在任意视图下执行

在配置WRR队列的调度权重值时，选择的调度权重（字节数或报文个数）需要与使能WRR时使用的调度权重保持一致，否则将无法正常配置。

2. 配置举例

(1) 组网需求

l 配置端口Ethernet1/0/1的队列为WRR队列，使用报文个数为调度权重。

l 配置所有队列均属于为WRR分组，权重分别为1、2、4、6、8、10、12、14。

(2) 配置步骤

# 进入系统视图。

<Sysname> system-view

# 配置端口Ethernet 1/0/1使用WRR队列调度算法。

[Sysname] interface Ethernet 1/0/1

[Sysname-Ethernet1/0/1] qos wrr weight

[Sysname-Ethernet1/0/1] qos wrr 0 group 1 weight 1

[Sysname-Ethernet1/0/1] qos wrr 1 group 1 weight 2

[Sysname-Ethernet1/0/1] qos wrr 2 group 1 weight 4

[Sysname-Ethernet1/0/1] qos wrr 3 group 1 weight 6

[Sysname-Ethernet1/0/1] qos wrr 4 group 1 weight 8

[Sysname-Ethernet1/0/1] qos wrr 5 group 1 weight 10

[Sysname-Ethernet1/0/1] qos wrr 6 group 1 weight 12

[Sysname-Ethernet1/0/1] qos wrr 7 group 1 weight 14

5.3.3 配置SP+WRR队列

1. 配置过程

表5-4 配置SP＋WRR队列

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
进入端口视图或端口组视图 | 进入端口视图 | interface interface-type interface-number | 二者必选其一 进入端口视图后，下面进行的配置只在当前端口生效；进入端口组视图后，下面进行的配置将在端口组中的所有端口生效
 | 进入端口组视图 | port-group manual port-group-name
配置端口使用WRR队列 |  | qos wrr [ byte-count | weight ] | 可选 缺省情况下，所有端口均使用WRR队列
将部分队列加入SP调度组 |  | qos wrr queue-id group sp | 必选 缺省情况下，当端口使用WRR队列时，所有队列均处于WRR调度组中
将部分队列加入WRR调度组 |  | qos wrr queue-id group group-id { weight | byte-count } schedule-value | 必选 如果在端口上开启了WRR队列，缺省情况下使用字节数作为调度权重，队列0～7的权重分别为1、2、3、4、5、9、13、15

在配置WRR队列的调度权重值时，选择的调度权重（字节数或报文个数）需要与使能WRR时使用的调度权重保持一致，否则将无法正常配置。

2. 配置举例

(1) 组网需求

l 配置端口Ethernet 1/0/1使用SP+WRR队列调度算法

l 配置端口Ethernet 1/0/1上的0、1、2、3队列属于SP调度组

l 配置端口Ethernet 1/0/1上的4、5、6、7队列属于WRR调度组，权重分别为2、4、6、8，

(2) 配置步骤

# 进入系统视图。

<Sysname> system-view

# 配置端口Ethernet 1/0/1使用SP+WRR队列调度算法。

[Sysname] interface Ethernet 1/0/1

[Sysname-Ethernet1/0/1] qos wrr

[Sysname-Ethernet1/0/1] qos wrr 0 group sp

[Sysname-Ethernet1/0/1] qos wrr 1 group sp

[Sysname-Ethernet1/0/1] qos wrr 2 group sp

[Sysname-Ethernet1/0/1] qos wrr 3 group sp

[Sysname-Ethernet1/0/1] qos wrr 4 group 1 weight 2

[Sysname-Ethernet1/0/1] qos wrr 5 group 1 weight 4

[Sysname-Ethernet1/0/1] qos wrr 6 group 1 weight 6

[Sysname-Ethernet1/0/1] qos wrr 7 group 1 weight 8


6 拥塞避免配置

拥塞避免功能中的“端口”包含了二层以太网端口和三层以太网端口，三层以太网端口是指被配置为三层模式以太网端口，的有关以太网端口模式切换的操作，请参见“二层技术-以太网交换配置指导”中的“以太网端口”

相关链接

  • 6.1 拥塞避免简介
  • 6.2 WRED配置的说明
  • 6.3 配置WRED
  • 6.4 WRED显示和维护
父主题： 02-QoS配置


6.1 拥塞避免简介

过度的拥塞会对网络资源造成极大危害，必须采取某种措施加以解除。拥塞避免（Congestion Avoidance）是一种流量控制机制，它通过监视网络资源（如队列或内存缓冲区）的使用情况，在拥塞产生或有加剧的趋势时主动丢弃报文，通过调整网络的流量来解除网络过载。

与端到端的流量控制相比，这里的流量控制具有更广泛的意义，它影响到设备中更多的业务流的负载。设备在丢弃报文时，需要与源端的流量控制动作（比如TCP流量控制）相配合，调整网络的流量到一个合理的负载状态。丢包策略和源端流控机制有效的组合，可以使网络的吞吐量和利用效率最大化，并且使报文丢弃和延迟最小化。

1. 传统的丢包策略

传统的丢包策略采用尾部丢弃（Tail-Drop）的方法。当队列的长度达到最大值后，所有新到来的报文都将被丢弃。

这种丢弃策略会引发TCP全局同步现象：当队列同时丢弃多个TCP连接的报文时，将造成多个TCP连接同时进入拥塞避免和慢启动状态以降低并调整流量，而后又会在某个时间同时出现流量高峰。如此反复，使网络流量忽大忽小，网络不停震荡。

2. RED与WRED

为避免TCP全局同步现象，可使用RED（Random Early Detection，随机早期检测）或WRED（Weighted Random Early Detection，加权随机早期检测）。

RED和WRED通过随机丢弃报文避免了TCP的全局同步现象，使得当某个TCP连接的报文被丢弃、开始减速发送的时候，其他的TCP连接仍然有较高的发送速度。这样，无论什么时候，总有TCP连接在进行较快的发送，提高了线路带宽的利用率。

在RED类算法中，为每个队列都设定上限和下限，对队列中的报文进行如下处理：

l 当队列的长度小于下限时，不丢弃报文；

l 当队列的长度超过上限时，丢弃所有到来的报文；

l 当队列的长度在上限和下限之间时，开始按用户配置的丢弃概率随机丢弃到来的报文。

与RED不同，WRED生成的随机数是基于优先权的，它引入IP优先权区别丢弃策略，考虑了高优先权报文的利益，使其被丢弃的概率相对较小。

直接采用队列的长度和上限、下限比较并进行丢弃，将会对突发性的数据流造成不公正的待遇，不利于数据流的传输。WRED采用平均队列和设置的队列上限、下限比较来确定丢弃的概率。

队列平均长度既反映了队列的变化趋势，又对队列长度的突发变化不敏感，避免了对突发性数据流的不公正待遇。计算队列平均长度的公式为：平均队列长度=上一时刻平均队列长度＋（当前队列长度 - 上一时刻平均队列长度） / 2n。其中n可以通过命令 queue weighting-constant 进行配置。


6.2 WRED配置的说明

6.2.1 WRED的配置方式

本系列交换机的WRED功能采用WRED表的配置方式，即在系统视图下配置WRED表，然后在端口上应用WRED表。

6.2.2 WRED的参数说明

在进行WRED配置时，需要事先确定如下参数：

l 队列上限和下限：当平均队列长度小于下限时，不丢弃报文。当平均队列长度在上限和下限之间时，设备按用户设置的丢弃概率开始随机丢弃报文。当平均队列长度超过上限时，丢弃所有到来的报文。

l 丢弃优先级：在进行报文丢弃时参考的参数，0对应绿色报文、1对应黄色报文、2对应红色报文，红色报文将被优先丢弃。

l 计算平均队列长度的指数：指数越大，计算队列平均长度时对队列的实时变化越不敏感。

l 丢弃概率：以百分数的形式表示丢弃报文的概率，取值越大，报文被丢弃的机率越大。


6.3 配置WRED

WRED表是一个基于队列的表，发生拥塞时设备将根据报文所在队列进行随机丢弃。

同一个表可以同时在多个端口应用。WRED表被应用到端口后，用户可以对WRED表的取值进行修改，但是不能删除该WRED表。

6.3.1 配置过程

表6-1 WRED表的配置和应用过程

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
配置WRED表 |  | qos wred queue table table-name | -
配置计算平均队列长度的指数 |  | queue queue-id weighting-constant exponent | 可选 缺省情况下，该指数取值为9
配置WRED表的其它参数 |  | queue queue-id [ drop-level drop-level ] low-limit low-limit high-limit high-limit [ discard-probability discard-prob ] | 可选 缺省情况下，low-limit 为100，high-limit 为1000，discard-prob 为10
进入端口视图或端口组视图 | 进入端口视图 | interface interface-type interface-number | 二者必选其一 进入端口视图后，下面进行的配置只在当前端口生效；进入端口组视图后，下面进行的配置将在端口组中的所有端口生效
 | 进入端口组视图 | port-group manual port-group-name
在端口应用WRED表 |  | qos wred apply table-name | 必选 缺省情况下，端口上没有应用WRED表

6.3.2 配置举例

配置WRED表，对队列1中的黄色报文，丢弃队列上限为2000，下限为500，丢弃概率为百分之50，并将此WRED表应用到端口Ethernet 1/0/1上。

# 进入系统视图

<Sysname> system-view

# 根据组网需求创建WRED表并配置相应的参数。

[Sysname] qos wred queue table queue-table1

[Sysname-wred-table-queue-table1] queue 1 drop-level 1 low-limit 500 high-limit 2000 discard-probability 50

[Sysname-wred-table-queue-table1] quit

# 进入端口视图。

[Sysname] interface ethernet 1/0/1

# 在端口上应用WRED表。

[Sysname-Ethernet1/0/1] qos wred apply queue-table1


6.4 WRED显示和维护

在完成上述配置后，在任意视图下执行 display 命令可以显示配置后WRED的运行情况，通过查看显示信息验证配置的效果。

表6-2 WRED显示和维护

操作 | 命令
显示端口的WRED配置情况和统计信息 | display qos wred interface [ interface-type interface-number ] [ | { begin | exclude | include } regular-expression ]
显示WRED表配置情况 | display qos wred table [ table-name ] [ | { begin | exclude | include } regular-expression ]


7 流量过滤配置

相关链接

  • 7.1 流量过滤简介
  • 7.2 配置流量过滤
  • 7.3 流量过滤配置举例
父主题： 02-QoS配置


7.1 流量过滤简介

流量过滤就是对符合流分类的流进行过滤的动作。

例如，可以根据网络的实际情况禁止从某个源IP地址发送的报文通过。

用户也可以选择通过在端口应用ACL的方式来实现流量过滤功能，详细的介绍和配置请参见“ACL和QoS配置指导”中的“ACL配置”。


7.2 配置流量过滤

表7-1 配置流量过滤

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
定义类并进入类视图 |  | traffic classifier tcl-name [ operator { and | or } ] | -
定义匹配数据包的规则 |  | if-match match-criteria | -
退出类视图 |  | quit | -
定义一个流行为并进入流行为视图 |  | traffic behavior behavior-name | -
配置流量过滤动作 |  | filter { deny | permit } | 必选 deny 表示丢弃数据包；permit 表示允许数据包通过
退出流行为视图 |  | quit | -
定义策略并进入策略视图 |  | qos policy policy-name | -
在策略中为类指定采用的流行为 |  | classifier tcl-name behavior behavior-name | -
退出策略视图 |  | quit | -
应用QoS策略 | 基于端口 | 2.2.4 1. 基于端口应用QoS策略 | -
 | 基于上线用户 | 2.2.4 2. 基于上线用户应用QoS策略 | -
 | 基于VLAN | 2.2.4 3. 基于VLAN应用QoS策略 | -
 | 基于全局 | 2.2.4 4. 基于全局应用QoS策略 | -
 | 基于控制平面 | 2.2.4 5. 基于控制平面应用QoS策略 | -
显示流量过滤的相关配置信息 |  | display traffic behavior user-defined [ behavior-name ] [ | { begin | exclude | include } regular-expression ] | 可选 display 命令可以在任意视图下执行

如果配置了 filter deny 命令，则在该流行为视图下配置的其他流行为（除流量统计和流镜像）都不会生效。


7.3 流量过滤配置举例

7.3.1 流量过滤配置举例

1. 组网需求

Host通过端口Ethernet1/0/1接入设备Device。

配置流量过滤功能，对端口Ethernet1/0/1接收的源端口号等于21的TCP报文进行丢弃。

2. 组网图

图7-1 配置流量过滤组网图

3. 配置步骤

# 定义高级ACL 3000，匹配源端口号等于21的数据流。

<DeviceA> system-view

[DeviceA] acl number 3000

[DeviceA-acl-adv-3000] rule 0 permit tcp source-port eq 21

[DeviceA-acl-adv-3000] quit

# 定义类classifier_1，匹配高级ACL 3000。

[DeviceA] traffic classifier classifier_1

[DeviceA-classifier-classifier_1] if-match acl 3000

[DeviceA-classifier-classifier_1] quit

# 定义流行为behavior_1，动作为流量过滤（deny），对数据包进行丢弃。

[DeviceA] traffic behavior behavior_1

[DeviceA-behavior-behavior_1] filter deny

[DeviceA-behavior-behavior_1] quit

# 定义策略policy，为类classifier_1指定流行为behavior_1。

[DeviceA] qos policy policy

[DeviceA-qospolicy-policy] classifier classifier_1 behavior behavior_1

[DeviceA-qospolicy-policy] quit

# 将策略policy应用到端口Ethernet1/0/1的入方向上。

[DeviceA] interface ethernet 1/0/1

[DeviceA-Ethernet1/0/1] qos apply policy policy inbound


8 重标记配置

相关链接

  • 8.1 重标记简介
  • 8.2 根据报文颜色进行优先级重标记
  • 8.3 配置重标记
  • 8.4 重标记配置举例
父主题： 02-QoS配置


8.1 重标记简介

重标记可以和优先级映射功能配合使用，具体请参见优先级映射章节 3.5.2 。

重标记是将报文的优先级或者标志位进行设置，重新定义流量的优先级等。例如，对于IP报文来说，所谓重标记就是对IP报文中的IP优先级或DSCP值进行重新设置，改变IP报文在网络传输中状态。

重标记动作的配置，可以通过与类关联，将原来报文的优先级或标志位重新进行标记。


8.2 根据报文颜色进行优先级重标记

8.2.1 报文颜色的标记方式

报文的颜色用来表示设备对报文传输优先等级的评估结果，本系列交换机可以根据以下两种方式为报文标记颜色：

l 流量监管功能

l 映射丢弃优先级

1. 流量监管功能

流量监管是一种常用的流量控制技术，它可以通过令牌桶机制来对设备接收或发送的流量进行评估，并根据评估结果对报文标记不同的颜色。用户通过为不同颜色的报文配置不同的流控策略，来实现对不同流量的差异化服务，从而保证网络资源的有效利用。

本系列交换机支持双令牌桶评估方式（C桶和E桶），可以根据令牌桶中令牌的使用情况来标记报文的颜色：

l 如果C桶有足够的令牌，报文被标记为green，即绿色报文；

l 如果C桶令牌不足，但E桶有足够的令牌，报文被标记为yellow，即黄色报文；

l 如果C桶和E桶都没有足够的令牌，报文被标记为red，即红色报文。

本系列交换机支持使用普通CAR以及聚合CAR两种流量监管功能为报文标记颜色，有关这两种功能的详细介绍和配置方法，请参见 流量监管、流量整形和端口限速配置 以及 10.2 配置聚合CAR 。

2. 映射丢弃优先级

在没有配置流量监管功能的情况下，本交换机根据报文的802.1p优先级以及dot1p-dp映射表，映射出报文的丢弃优先级，并根据丢弃优先级为报文标记颜色。丢弃优先级0对应绿色报文、1对应黄色报文、2对应红色报文。

关于优先级映射表以及调整优先级映射关系的详细介绍和配置，请参见 优先级映射配置 。

8.2.2 根据报文颜色进行优先级重标记

1. 基于流量监管的评估结果进行优先级重标记

在得到流量监管的评估结果之后，本系列交换机可以为不同颜色的报文重新标记各种优先级值，包括DSCP优先级、802.1p优先级和本地优先级。您可以在流量监管动作中指定对不同颜色的报文采取的重标记动作，来重标记报文的优先级。

关于在流量监管动作中指定重标记动作的配置，请参见 4.2 流量监管配置 以及 10.2 配置聚合CAR 。

2. 基于丢弃优先级的映射结果进行优先级重标记

在使用丢弃优先级为报文标记颜色的情况下，您可以通过在流行为中创建重标记动作，为不同颜色的报文标记各种优先级值，包括DSCP优先级、802.1p优先级和本地优先级。

在一个流行为中，流量监管动作不能与重标记优先级（包括本地优先级、丢弃优先级、802.1p优先级、DSCP优先级、IP优先级）的动作同时配置，否则会导致QoS策略不能正常应用。


8.3 配置重标记

表8-1 配置重标记

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
定义类并进入类视图 |  | traffic classifier tcl-name [ operator { and | or } ] | -
定义匹配数据包的规则 |  | if-match match-criteria | -
退出类视图 |  | quit | -
定义一个流行为并进入流行为视图 |  | traffic behavior behavior-name | -
配置标记报文的DSCP值 |  | remark [ green | red | yellow ] dscp dscp-value | 可选
配置标记报文的802.1p优先级 |  | remark [ green | red | yellow ] dot1p 8021p | 可选
配置内外层标签优先级复制功能 |  | remark dot1p customer-dot1p-trust | 可选
配置标记报文的丢弃优先级 |  | remark drop-precedence drop-precedence-value | 可选 仅应用在出方向
配置标记报文的IP优先级值 |  | remark ip-precedence ip-precedence-value | 可选
配置标记报文的本地优先级 |  | remark [ green | red | yellow ] local-precedence local-precedence | 可选
配置标记报文的qos-local-id值 |  | remark qos-local-id local-id-value | 可选 qos-local-id是设备为报文重新标记的一种属性，用户可以根据不同的需求给报文标记不同的qos-local-id。标记qos-local-id主要用于对匹配多个流分类的报文进行重分类，再对这个重分类进行流行为动作，以达到对多种报文进行同一种处理方式的效果
退出流行为视图 |  | quit | -
定义策略并进入策略视图 |  | qos policy policy-name | -
在策略中为类指定采用的流行为 |  | classifier tcl-name behavior behavior-name | -
退出策略视图 |  | quit | -
应用QoS策略 | 基于端口 | 2.2.4 1. 基于端口应用QoS策略 | -
 | 基于上线用户 | 2.2.4 2. 基于上线用户应用QoS策略 | -
 | 基于VLAN | 2.2.4 3. 基于VLAN应用QoS策略 | -
 | 基于全局 | 2.2.4 4. 基于全局应用QoS策略 | -
 | 基于控制平面 | 2.2.4 5. 基于控制平面应用QoS策略 | -
显示重标记的相关配置信息 |  | display traffic behavior user-defined [ behavior-name ] [ | { begin | exclude | include } regular-expression ] | 可选 display 命令可以在任意视图下执行

需要注意的是，应用重标记的QoS策略时 inbound 和 outbound 方向的支持情况如下表所示。

表8-2 inbound和outbound方向的支持情况

动作 | inbound 方向 | outbound 方向
标记报文的802.1p优先级 | 支持 | 支持
标记报文的丢弃优先级 | 支持 | 不支持
标记报文的DSCP优先级 | 支持 | 支持
标记报文的IP优先级 | 支持 | 支持
标记报文的本地优先级 | 支持 | 不支持
标记报文的qos-local-id值 | 支持 | 不支持


8.4 重标记配置举例

8.4.1 重标记配置举例

1. 组网需求

公司企业网通过Device实现互连。网络环境描述如下：

l Host A和Host B通过端口Ethernet1/0/1接入Device；

l 数据库服务器、邮件服务器和文件服务器通过端口Ethernet1/0/2接入Device。

通过配置重标记功能，Device上实现如下需求：

l 优先处理Host A和Host B访问数据库服务器的报文；

l 其次处理Host A和Host B访问邮件服务器的报文；

l 最后处理Host A和Host B访问文件服务器的报文。

2. 组网图

图8-1 配置重标记组网图

3. 配置步骤

# 定义高级ACL 3000，对目的IP地址为192.168.0.1的报文进行分类。

<Device> system-view

[Device] acl number 3000

[Device-acl-adv-3000] rule permit ip destination 192.168.0.1 0

[Device-acl-adv-3000] quit

# 定义高级ACL 3001，对目的IP地址为192.168.0.2的报文进行分类。

[Device] acl number 3001

[Device-acl-adv-3001] rule permit ip destination 192.168.0.2 0

[Device-acl-adv-3001] quit

# 定义高级ACL 3002，对目的IP地址为192.168.0.3的报文进行分类。

[Device] acl number 3002

[Device-acl-adv-3002] rule permit ip destination 192.168.0.3 0

[Device-acl-adv-3002] quit

# 定义类classifier_dbserver，匹配高级ACL 3000。

[Device] traffic classifier classifier_dbserver

[Device-classifier-classifier_dbserver] if-match acl 3000

[Device-classifier-classifier_dbserver] quit

# 定义类classifier_mserver，匹配高级ACL 3001。

[Device] traffic classifier classifier_mserver

[Device-classifier-classifier_mserver] if-match acl 3001

[Device-classifier-classifier_mserver] quit

# 定义类classifier_fserver，匹配高级ACL 3002。

[Device] traffic classifier classifier_fserver

[Device-classifier-classifier_fserver] if-match acl 3002

[Device-classifier-classifier_fserver] quit

# 定义流行为behavior_dbserver，动作为重标记报文的本地优先级为4。

[Device] traffic behavior behavior_dbserver

[Device-behavior-behavior_dbserver] remark local-precedence 4

[Device-behavior-behavior_dbserver] quit

# 定义流行为behavior_mserver，动作为重标记报文的本地优先级为3。

[Device] traffic behavior behavior_mserver

[Device-behavior-behavior_mserver] remark local-precedence 3

[Device-behavior-behavior_mserver] quit

# 定义流行为behavior_fserver，动作为重标记报文的本地优先级为2。

[Device] traffic behavior behavior_fserver

[Device-behavior-behavior_fserver] remark local-precedence 2

[Device-behavior-behavior_fserver] quit

# 定义策略policy_server，为类指定流行为。

[Device] qos policy policy_server

[Device-qospolicy-policy_server] classifier classifier_dbserver behavior behavior_dbserver

[Device-qospolicy-policy_server] classifier classifier_mserver behavior behavior_mserver

[Device-qospolicy-policy_server] classifier classifier_fserver behavior behavior_fserver

[Device-qospolicy-policy_server] quit

# 将策略policy_server应用到端口Ethernet1/0/1上。

[Device] interface ethernet 1/0/1

[Device-Ethernet1/0/1] qos apply policy policy_server inbound

[Device-Ethernet1/0/1] quit

8.4.2 重标记qos-local-id配置举例

重标记qos-local-id功能主要用于将匹配多种分类条件的报文进行重分类，再对这个重分类进行流行为的情况。

例如：需要对源MAC地址为0001-0001-0001，或者源IP地址为1.1.1.1的这两种报文的总流量限速为128Kbps，如果采用匹配源MAC地址的分类和匹配源IP地址的流分类分别与流量监管的流行为进行关联的QoS策略配置方式，则最后的配置结果会是两种报文的限速分别为128Kbps，无法达到预期效果。

而通过使用qos-local-id就可以解决这个问题。首先将匹配源MAC地址和源IP地址的报文标记统一的qos-local-id，然后再以qos-local-id为新的分类条件，创建流量监管的动作，这样就可以对这两种报文的总流量进行限速。配置步骤如下：

# 创建ACL 2000，匹配源IP地址为1.1.1.1的报文。

<Sysname> system-view

[Sysname] acl number 2000

[Sysname-acl-basic-2000] rule permit source 1.1.1.1 0

[Sysname-acl-basic-2000] quit

# 创建流分类class_a，匹配源MAC地址为0001-0001-0001或源IP地址为1.1.1.1的报文。

<Sysname> system-view

[Sysname] traffic classifier class_a operator or

[Sysname-classifier-class_a] if-match source-mac 1-1-1

[Sysname-classifier-class_a] if-match acl 2000

[Sysname-classifier-class_a] quit

# 创建流行为behavior_a，对匹配class_a分类的报文将qos-local-id标记为100。

[Sysname] traffic behavior behavior_a

[Sysname-behavior-behavior_a] remark qos-local-id 100

[Sysname-behavior-behavior_a] quit

# 创建流分类class_b，匹配qos-local-id为100的报文。

[Sysname] traffic classifier class_b

[Sysname-classifier-class_b] if-match qos-local-id 100

[Sysname-classifier-class_b] quit

# 创建流行为behavior_b，对匹配class_b分类的报文限速为128Kbps。

[Sysname] traffic behavior behavior_b

[Sysname-behavior-behavior_b] car cir 128

[Sysname-behavior-behavior_b] quit

# 创建QoS策略car_policy，并将class_a和behavior_a进行关联，将class_b和behavior_b进行关联。

[Sysname] qos policy car_policy

[Sysname-qospolicy-car_policy] classifier class_a behavior behavior_a

[Sysname-qospolicy-car_policy] classifier class_b behavior behavior_b

将通过上面步骤创建的QoS策略应用到端口后，即可实现组网需求。


9 流量重定向配置

相关链接

  • 9.1 流量重定向简介
  • 9.2 配置流量重定向
  • 9.3 流量重定向配置举例
父主题： 02-QoS配置


9.1 流量重定向简介

流量重定向就是将符合流分类的流重定向到其他地方进行处理。

目前支持的流量重定向包括以下几种：

l 重定向到CPU：对于需要CPU处理的报文，可以通过配置上送给CPU。

l 重定向到端口：对于收到需要由某个端口处理的报文时，可以通过配置重定向到此端口。只针对二层转发报文。

l 重定向到下一跳：对于收到需要某台下游设备处理的报文时，可以通过配置重定向到该下游设备。只针对三层转发报文。该方式可用于实现策略路由，有关策略路由的介绍，请参见“三层技术-IP路由配置指导”中的“策略路由配置”。


9.2 配置流量重定向

表9-1 配置流量重定向

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
定义类并进入类视图 |  | traffic classifier tcl-name [ operator { and | or } ] | -
定义匹配数据包的规则 |  | if-match match-criteria | -
退出类视图 |  | quit | -
定义一个流行为并进入流行为视图 |  | traffic behavior behavior-name | 必选
配置流量重定向动作 |  | redirect { cpu | interface interface-type interface-number | next-hop { ipv4-add1 [ ipv4-add2 ] | ipv6-add1 [ interface-type interface-number ] [ ipv6-add2 [ interface-type interface-number ] ] } [ fail-action { discard | forward } ] } | 必选
退出流行为视图 |  | quit | -
定义策略并进入策略视图 |  | qos policy policy-name | -
在策略中为类指定采用的流行为 |  | classifier tcl-name behavior behavior-name | -
退出策略视图 |  | quit | -
应用QoS策略 | 基于端口 | 2.2.4 1. 基于端口应用QoS策略 | -
 | 基于VLAN | 2.2.4 3. 基于VLAN应用QoS策略 | -
 | 基于全局 | 2.2.4 4. 基于全局应用QoS策略 | -
 | 基于控制平面 | 2.2.4 5. 基于控制平面应用QoS策略 | -

l 在配置重定向动作时，同一个流行为中重定向类型只能为重定向到CPU、重定向到接口、重定向到下一跳中的一种。

l 引用重定向动作的QoS策略只能应用到端口、VLAN或全局的入方向。

l 在支持配置重定向下一跳失败的处理动作时，如果不配置处理动作，默认的处理动作是转发。

l 可以通过命令 display traffic behavior user-defined 查看流量重定向的相关配置信息。


9.3 流量重定向配置举例

9.3.1 重定向至下一跳配置举例

1. 组网需求

网络环境描述如下：

l Device A通过两条链路与Device B连接，同时Device A和Device B各自连接其他的设备；

l Device A上的端口Ethernet1/0/2和Device B上的端口Ethernet1/0/2属于VLAN 200；

l Device A上的端口Ethernet1/0/3和Device B上的端口Ethernet1/0/3属于VLAN 201；

l Device A上VLAN 200虚接口的IP地址为200.1.1.1/24，VLAN 201虚接口的IP地址为201.1.1.1/24；

l Device B上VLAN 200虚接口的IP地址为200.1.1.2/24，VLAN 201虚接口的IP地址为201.1.1.2/24。

配置重定向至下一跳，实现策略路由功能，满足如下需求：

l 将Device A的端口Ethernet1/0/1接收到的源IP地址为2.1.1.1的报文转发至200.1.1.2；

l 将Device A的端口Ethernet1/0/1接收到的源IP地址为2.1.1.2的报文转发至201.1.1.2；

l 对于Device A的端口Ethernet1/0/1接收到的其它报文，按照查找路由表的方式进行转发。

2. 组网图

图9-1 配置重定向至下一跳组网图

3. 配置步骤

# 定义基本ACL 2000，对源IP地址为2.1.1.1的报文进行分类。

<DeviceA> system-view

[DeviceA] acl number 2000

[DeviceA-acl-basic-2000] rule permit source 2.1.1.1 0

[DeviceA-acl-basic-2000] quit

# 定义基本ACL 2001，对源IP地址为2.1.1.2的报文进行分类。

[DeviceA] acl number 2001

[DeviceA-acl-basic-2001] rule permit source 2.1.1.2 0

[DeviceA-acl-basic-2001] quit

# 定义类classifier_1，匹配基本ACL 2000。

[DeviceA] traffic classifier classifier_1

[DeviceA-classifier-classifier_1] if-match acl 2000

[DeviceA-classifier-classifier_1] quit

# 定义类classifier_2，匹配基本ACL 2001。

[DeviceA] traffic classifier classifier_2

[DeviceA-classifier-classifier_2] if-match acl 2001

[DeviceA-classifier-classifier_2] quit

# 定义流行为behavior_1，动作为重定向至200.1.1.2。

[DeviceA] traffic behavior behavior_1

[DeviceA-behavior-behavior_1] redirect next-hop 200.1.1.2

[DeviceA-behavior-behavior_1] quit

# 定义流行为behavior_2，动作为重定向至201.1.1.2。

[DeviceA] traffic behavior behavior_2

[DeviceA-behavior-behavior_2] redirect next-hop 201.1.1.2

[DeviceA-behavior-behavior_2] quit

# 定义策略policy，为类classifier_1指定流行为behavior_1，为类classifier_2指定流行为behavior_2。

[DeviceA] qos policy policy

[DeviceA-qospolicy-policy] classifier classifier_1 behavior behavior_1

[DeviceA-qospolicy-policy] classifier classifier_2 behavior behavior_2

[DeviceA-qospolicy-policy] quit

# 将策略policy应用到端口Ethernet1/0/1的入方向上。

[DeviceA] interface ethernet 1/0/1

[DeviceA-Ethernet1/0/1] qos apply policy policy inbound


10 全局CAR配置

相关链接

  • 10.1 全局CAR简介
  • 10.2 配置聚合CAR
  • 10.3 配置分层CAR
  • 10.4 全局CAR显示和维护
  • 10.5 全局CAR配置举例
父主题： 02-QoS配置


10.1 全局CAR简介

全局CAR是在全局创建的一种策略，所有应用该策略的数据流将共同接受全局CAR的监管。

目前全局CAR支持聚合CAR、分层CAR和普通全局CAR三种。

10.1.1 聚合CAR

聚合CAR是指能够对多个业务流使用同一个CAR进行流量监管，即如果多个端口应用同一聚合CAR，则这多个端口的流量之和必须在此聚合CAR设定的流量监管范围之内。

10.1.2 分层CAR

分层CAR是一种更灵活的流量监管策略，用户可以在为每个流单独配置CAR动作（或聚合CAR）的基础上，再通过分层CAR对多个流的流量总和进行限制。

分层CAR与普通CAR（或聚合CAR）的结合应用有两种模式：

l and：在该模式下，对于多条数据流应用同一个分层CAR，必须每条流满足各自的普通CAR（或聚合CAR）配置，同时各流量之和又满足分层CAR的配置，流量才能正常通过。and模式适用于严格限制流量带宽的环境，分层CAR的限速配置通常小于各流量自身CAR的限速值之和。例如对于Internet流量，可以使用普通CAR将数据流1和数据流2各自限速为128kbps，再使用分层CAR限制总流量为192kbps。当不存在数据流1时，数据流2可以用达到自身限速上限的速率访问Internet，如果存在数据流1，则两个数据流不能超过各自限速且总速率不能超过192kbps。

l or：在该模式下，对于多条数据流应用同一个分层CAR，只要每条流满足各自的普通CAR（或聚合CAR）配置或者各流量之和满足分层CAR配置，流量即可正常通过。or模式适用于保证高优先级业务带宽的环境，分层CAR的限速值通常等于或大于各流量自身的限速值之和。例如对于视频流量，使用普通CAR将数据流1和数据流2各自限速128kbps，再使用分层CAR限制总流量为512kbps，则当数据流1的流量不足128kbps时，即使数据流2的流量达到了384kbps，仍然可以正常通过。

两种模式可以结合起来使用，达到合理利用带宽的效果。例如，存在一条视频流和一条数据流，使用普通CAR将数据流限速1024kbps、视频流限速2048kbps。连接视频流接口采用or模式CAR限速3072kbps，因为可能存在多台视频设备同时上线出现的突发流量，当视频设备流量速率超出2048kbps时，如果总体流量资源仍有剩余（即数据流速率在1024kbps以内），这时视频流可以临时借用数据流的带宽；同时，连接数据流接口采用and模式CAR限速3072kbps，确保数据流量不能超出自身限速的1024kbps。


10.2 配置聚合CAR

10.2.1 配置过程

表10-1 配置聚合CAR

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置聚合CAR的各个参数 | qos car car-name aggregative cir committed-information-rate [ cbs committed-burst-size [ ebs excess-burst-size ] ] [ pir peek-information-rate ] [ green action ] [ yellow action ] [ red action ] | 必选
进入流行为视图 | traffic behavior behavior-name | 必选
在流行为中引用聚合CAR | car name car-name | 必选
显示配置的流行为信息 | display traffic behavior user-defined [ behavior-name ] [ | { begin | exclude | include } regular-expression ] | 可选 display 命令可以在任意视图下执行
显示指定聚合CAR的CAR配置和统计信息 | display qos car name [ car-name ] [ | { begin | exclude | include } regular-expression ]

在一个流行为中，引用聚合CAR的动作不能与重标记优先级（包括本地优先级、丢弃优先级、802.1p优先级、DSCP优先级、IP优先级）的动作同时配置，否则会导致QoS策略不能正常应用。


10.3 配置分层CAR

表10-2 配置分层CAR

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置分层CAR的各个参数 | qos car car-name hierarchy cir committed-information-rate [ cbs committed-burst-size ] | 必选
进入流行为视图 | traffic behavior behavior-name | 必选
在流行为中引用分层CAR（和聚合CAR配合使用） | car name car-name hierarchy-car hierarchy-car-name [ mode { and | or } ] | 二者必选其一 普通CAR的相关内容请参见 4.2 流量监管配置
在流行为中引用分层CAR（和普通CAR配合使用） | car cir committed-information-rate [ cbs committed-burst-size [ ebs excess-burst-size ] ] [ pir peak-information-rate ] [ green action ] [ yellow action ] [ red action ] hierarchy-car hierarchy-car-name [ mode { and | or } ]
显示配置的流行为信息 | display traffic behavior user-defined [ behavior-name ] [ | { begin | exclude | include } regular-expression ] | 可选 display 命令可以在任意视图下执行
显示指定全局CAR的CAR配置和统计信息 | display qos car name [ car-name ] [ | { begin | exclude | include } regular-expression ]


10.4 全局CAR显示和维护

在完成上述配置后，在任意视图下执行 display 命令可以显示配置后全局CAR的运行情况，通过查看显示信息验证配置的效果。

在用户视图下执行 reset 命令可以清除全局CAR统计信息。

表10-3 全局CAR显示和维护

操作 | 命令
显示全局CAR的配置和统计信息 | display qos car name [ car-name ] [ | { begin | exclude | include } regular-expression ]
清除全局CAR的统计信息 | reset qos car name [ car-name ]


10.5 全局CAR配置举例

10.5.1 聚合CAR配置举例

1. 组网需求

通过配置聚合CAR，对端口Ethernet1/0/1接收的VLAN10和VLAN100的报文流量之和进行限制，cir为2560，cbs为20000，对于红色报文，采取丢弃策略。

2. 组网图

图10-1 聚合CAR配置举例组网图

3. 配置步骤

# 按流量限制需求配置聚合CAR。

<Device> system-view

[Device] qos car aggcar-1 aggregative cir 2560 cbs 20000 red discard

# 配置流分类和流行为，对VLAN10的报文采用聚合CAR的限速配置。

[Device] traffic classifier 1

[Device-classifier-1] if-match customer-vlan-id 10

[Device-classifier-1] quit

[Device] traffic behavior 1

[Device-behavior-1] car name aggcar-1

[Device-behavior-1] quit

# 配置流分类和流行为，对VLAN100的报文采用聚合CAR的限速配置。

[Device] traffic classifier 2

[Device-classifier-2] if-match customer-vlan-id 100

[Device-classifier-2] quit

[Device] traffic behavior 2

[Device-behavior-2] car name aggcar-1

[Device-behavior-2] quit

# 配置QoS策略，将流分类与流行为进行绑定。

[Device] qos policy car

[Device-qospolicy-car] classifier 1 behavior 1

[Device-qospolicy-car] classifier 2 behavior 2

[Device-qospolicy-car] quit

# 将QoS策略应用到端口Ethernet1/0/1的入方向。

[Device] interface Ethernet 1/0/1

[Device-Ethernet1/0/1]qos apply policy car inbound

10.5.2 and模式分层CAR配置举例

1. 组网需求

对端口Ethernet1/0/1和Ethernet1/0/2接收的HTTP报文流量进行限速，要求每个端口接收到的HTTP报文速率不能超过192kbps。同时，使用分层CAR来限制这两个端口接收的HTTP总流量不能超过256kbps，丢弃超过流量上限的报文。

2. 组网图

图10-2 and模式配置举例组网图

3. 配置步骤

# 按流量限制需求配置分层CAR。

<Device> system-view

[Device] qos car http hierarchy cir 256 red discard

# 配置ACL 3000，匹配HTTP报文。

[Device] acl number 3000

[Device-acl-basic-3000] rule permit tcp destination-port eq 80

[Device-acl-basic-3000] quit

# 配置流分类和流行为，对HTTP报文进行CAR限速，并与分层CAR结合使用。

[Device] traffic classifier 1

[Device-classifier-1] if-match acl 3000

[Device-classifier-1] quit

[Device] traffic behavior 1

[Device-behavior-1] car cir 192 hierarchy-car http mode and

[Device-behavior-1] quit

# 配置QoS策略，将流分类与流行为进行绑定。

[Device] qos policy http

[Device-qospolicy-http] classifier 1 behavior 1

[Device-qospolicy-http] quit

# 将QoS策略应用到端口Ethernet1/0/1和Ethernet1/0/2的入方向。

[Device] interface ethernet 1/0/1

[Device-Ethernet1/0/1] qos apply policy http inbound

[Device-Ethernet1/0/1] quit

[Device] interface ethernet 1/0/2

[Device-Ethernet1/0/2] qos apply policy http inbound

10.5.3 or模式分层CAR配置举例

1. 组网需求

对端口Ethernet1/0/1接收的来自192.168.0.2和192.168.0.3的视频报文流量进行限速，根据日常视频应用的流量速率，配置cir为256kbps。同时为保证可能出现的大流量视频应用能够顺利通过，使用分层CAR为视频报文限定总流量上限为640kbps，丢弃超出流量上限的报文。

2. 组网图

图10-3 or模式配置举例组网图

3. 配置步骤

# 按流量限制需求配置分层CAR。

<Device> system-view

[Device] qos car video hierarchy cir 640 red discard

# 配置流分类和流行为，对来自视讯终端（192.168.0.2）的报文进行普通CAR限速，并与分层CAR结合使用。

[Device] acl number 2000

[Device-acl-basic-2000] rule permit source 192.168.0.2 0.0.0.0

[Device-acl-basic-2000] quit

[Device] traffic classifier 1

[Device-classifier-1] if-match acl 2000

[Device-classifier-1] quit

[Device] traffic behavior 1

[Device-behavior-1] car cir 256 hierarchy-car video mode or

[Device-behavior-1] quit

# 配置流分类和流行为，对来自视讯终端（192.168.0.3）的报文进行普通CAR限速，并与分层CAR结合使用。

[Device] acl number 2001

[Device-acl-basic-2001] rule permit source 192.168.0.3 0.0.0.0

[Device-acl-basic-2001] quit

[Device] traffic classifier 2

[Device-classifier-2] if-match acl 2001

[Device-classifier-2] quit

[Device] traffic behavior 2

[Device-behavior-2] car cir 256 hierarchy-car video mode or

[Device-behavior-2] quit

# 配置QoS策略，将流分类与流行为进行绑定。

[Device] qos policy video

[Device-qospolicy-video] classifier 1 behavior 1

[Device-qospolicy-video] classifier 2 behavior 2

[Device-qospolicy-video] quit

# 将QoS策略应用到端口Ethernet1/0/1的入方向。

[Device] interface ethernet 1/0/1

[Device-Ethernet1/0/1] qos apply policy video inbound


11 流量统计配置

相关链接

  • 11.1 流量统计简介
  • 11.2 配置流量统计
  • 11.3 流量统计显示和维护
  • 11.4 流量统计配置举例
父主题： 02-QoS配置


11.1 流量统计简介

流量统计就是通过与类关联，对符合匹配规则的流进行统计，统计报文数或字节数。例如，可以统计从某个源IP地址发送的报文，然后管理员对统计信息进行分析，根据分析情况采取相应的措施。


11.2 配置流量统计

表11-1 配置流量统计

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
定义类并进入类视图 |  | traffic classifier tcl-name [ operator { and | or } ] | -
定义匹配数据包的规则 |  | if-match match-criteria | -
退出类视图 |  | quit | -
定义一个流行为并进入流行为视图 |  | traffic behavior behavior-name | 必选
配置统计动作 |  | accounting { byte | packet } | 必选 byte 表示报文基于字节为单位进行统计；packet 表示报文基于包为单位进行统计
退出流行为视图 |  | quit | -
定义策略并进入策略视图 |  | qos policy policy-name | -
在策略中为类指定采用的流行为 |  | classifier tcl-name behavior behavior-name | -
退出策略视图 |  | quit | -
应用QoS策略 | 基于端口 | 2.2.4 1. 基于端口应用QoS策略 | -
 | 基于VLAN | 2.2.4 3. 基于VLAN应用QoS策略 | -
 | 基于全局 | 2.2.4 4. 基于全局应用QoS策略 | -
 | 基于控制平面 | 2.2.4 5. 基于控制平面应用QoS策略 | -


11.3 流量统计显示和维护

在完成上述配置后，用户可以根据QoS的应用范围在任意视图下执行 display qos policy global、display qos policy interface 或 display qos vlan-policy 命令来显示流量统计的情况，通过查看显示信息验证配置的效果。


11.4 流量统计配置举例

11.4.1 流量统计配置举例

1. 组网需求

用户网络描述如下：Host通过端口Ethernet1/0/1接入设备Device A。

配置流量统计功能，对端口Ethernet1/0/1接收的源IP地址为1.1.1.1/24的报文个数进行统计。

2. 组网图

图11-1 配置流量统计组网图

3. 配置步骤

# 定义基本ACL 2000，对源IP地址为1.1.1.1的报文进行分类。

<DeviceA> system-view

[DeviceA] acl number 2000

[DeviceA-acl-basic-2000] rule permit source 1.1.1.1 0

[DeviceA-acl-basic-2000] quit

# 定义类classifier_1，匹配基本ACL 2000。

[DeviceA] traffic classifier classifier_1

[DeviceA-classifier-classifier_1] if-match acl 2000

[DeviceA-classifier-classifier_1] quit

# 定义流行为behavior_1，动作为流量统计。

[DeviceA] traffic behavior behavior_1

[DeviceA-behavior-behavior_1] accounting packet

[DeviceA-behavior-behavior_1] quit

# 定义策略policy，为类classifier_1指定流行为behavior_1。

[DeviceA] qos policy policy

[DeviceA-qospolicy-policy] classifier classifier_1 behavior behavior_1

[DeviceA-qospolicy-policy] quit

# 将策略policy应用到端口Ethernet1/0/1的入方向上。

[DeviceA] interface ethernet 1/0/1

[DeviceA-Ethernet1/0/1] qos apply policy policy inbound

[DeviceA-Ethernet1/0/1] quit

# 查看配置后流量统计的情况。

[DeviceA] display qos policy interface ethernet 1/0/1

Interface: Ethernet1/0/1

Direction: Inbound

Policy: policy

Classifier: classifier_1

Operator: AND

Rule(s) : If-match acl 2000

Behavior: behavior_1

Accounting Enable:

28529 (Packets)


12 配置数据缓冲区

相关链接

  • 12.1 数据缓冲区简介
  • 12.2 数据缓冲区配置
父主题： 02-QoS配置


12.1 数据缓冲区简介

12.1.1 数据缓冲区

本系列交换机提供的数据缓冲区用来缓存从所有端口发送的报文，防止在出现突发流量时由于拥塞而产生的丢包现象。

交换机通过分配 cell 资源和 packet 资源（统称为缓冲资源）来控制各端口对数据缓冲区的使用：

l cell 资源是指缓存报文时使用的设备存储芯片容量。端口上分配到的 cell 资源表示该端口最多可以在缓冲区中占用的缓存空间。

l packet 资源是一种逻辑上的计数资源，它表示设备发送的数据包个数。设备每发送一个数据包，无论该数据包的长度是多少，均占用1个 packet 资源。端口上分配到的packet资源表示该端口最多可以在缓冲区中缓存的报文个数。

两种资源相互独立，但又共同作用，当端口需要缓存报文时，既使用相当于报文长度的 cell 资源，同时也使用相当于报文数量的 packet 资源，如果其中一种资源耗尽，则端口将不能再缓存报文，未进入缓冲区的报文将被丢弃。在完成报文发送后，端口将所使用的资源释放，等待下次缓存报文时再次使用。

12.1.2 缓冲资源的分配

为了灵活应对网络中可能出现的突发流量，本系列交换机的 cell 和 packet 资源采用固定区域和共享区域的划分方式，资源耗尽的端口可以临时使用共享区域的资源来完成报文发送。用户可以手工设置 cell 资源和 packet 资源中共享区域所占的比例，其余部分将自动成为固定区域。

cell 资源和 packet 资源均采用本节中介绍的划分方式，但二者可以具有不同的划分比例。

在本系列交换机上，缓冲资源的划分方式如 图12-1 所示：

图12-1 本系列交换机缓冲资源划分示意图

如 图12-1 所示，固定区域的划分可以通过两个方向来进行：

l 基于端口划分：如图中纵向线条的划分示意，交换机自动将固定区域平均分配给每个端口，即每个端口有独享的端口资源。

l 基于队列划分：如图中横向线条的划分示意，表示每个队列所能使用当前端口独享资源的比例（以下称为队列的最小保证资源比），这个比例在所有端口上都保持一致。

12.1.3 共享区域的使用

如果端口在短时间内需要发送超长的报文或者是数量较多的报文，将会使端口独享的 cell 资源或 packet 资源消耗殆尽。

cell 资源和 packet 资源的共享区域可以为端口上的突发流量提供应急的缓存能力，共享区域为所有端口的所有队列共用，即：当某个端口（或某个队列）有突发流量产生时，可以临时占用共享区域的资源，在完成突发流量的发送后，再释放其所占用的共享区域资源，供其它端口（或队列）使用。

1. 队列对共享区域的使用

当端口上的某个队列出现拥塞时（无可用的独享 cell 资源或 packet 资源），可以配置该队列在一定的比例之内动态使用 cell 或 packet 资源的共享区域，该比例称为队列的最大共享资源占用比。例如，配置队列0在无可用的独享 cell 资源时，最多可以占用 cell 资源的共享区域中6%的资源。

2. 端口对共享区域的使用

当端口上所有队列都出现拥塞时，端口独享的 cell 或 packet 资源已全部耗尽，此时可以配置该端口在一定比例内动态使用 cell 或 packet 资源的共享区域，该比例称为端口的最大共享资源占用比。例如，配置端口1最多可以占用 packet 资源的共享区域中30%的资源。

端口的最大共享资源占用比相当于对此端口下所有队列占用共享资源之和的限制，即每个队列可以有单独的最大共享资源占用比，但同一时刻8个队列占用共享资源的比例之和不能超过端口的最大共享资源占用比。


12.2 数据缓冲区配置

12.2.1 数据缓冲区的配置方式

用户可以使用以下两种方式配置本系列交换机的数据缓冲区：

l 由交换机自动配置（Burst功能）

l 由用户手工配置

以上两种数据缓冲区的配置方式不能同时使用，如果已经使用某一种方式进行了配置，则必须先取消该方式的配置之后，才能使用另外一种方式进行配置。

12.2.2 通过Burst功能配置数据缓冲区

配置了Burst功能后，交换机将自动分配 cell 资源和 packet 资源的共享区域比例、队列的最小保证资源比、队列和端口的最大共享资源占用比。

在下列情况下，Burst功能可以提供更好的报文缓存功能和流量转发性能：

l 广播或者组播报文流量密集，瞬间突发大流量的网络环境中；

l 报文从高速链路进入交换机，由低速链路转发出去；或者报文从相同速率的多个端口同时进入交换机，由一个相同速率的端口转发出去。

表12-1 通过Burst功能配置端口缓冲区

操作 | 命令 | 说明
进入系统视图 | system-view | -
使能Burst功能 | burst-mode enable | 必选 缺省情况下，Burst功能处于关闭状态

12.2.3 手工配置数据缓冲区

数据缓冲区的配置比较复杂，而且对设备的转发功能有重要的影响，建议用户不要轻易修改数据缓冲区的参数。在需要较大的缓存空间时，建议使用Burst功能来自动分配缓冲区。

1. 手工配置数据缓冲区配置任务简介

表12-2 手工配置数据缓冲区配置任务简介

配置任务 | 说明 | 详细配置
配置缓冲资源中共享区域的比例 | 请根据需要进行相应的配置 | 12.2.3 2.
配置队列的最小保证资源比 |  | 12.2.3 3.
配置队列的最大共享资源占用比 |  | 12.2.3 4.
配置端口的最大共享资源占用比 |  | 12.2.3 5.
应用数据缓冲区配置 | 必选 | 12.2.3 6.

2. 配置缓冲资源中共享区域的比例

表12-3 配置缓冲资源中共享区域的比例

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置 cell 资源中共享区域所占比例 | buffer egress [ slot slot-number ] cell total-shared ratio ratio | 至少配置其中一项 缺省情况下，cell 资源中共享区域所占比例为65%，packet 资源中共享区域所占比例为70%
配置 packet 资源中共享区域所占比例 | buffer egress [ slot slot-number ] packet total-shared ratio ratio

3. 配置队列的最小保证资源比

表12-4 配置队列的最小保证资源比

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置队列在 cell 缓冲区中的最小保证资源比 | buffer egress [ slot slot-number ] cell queue queue-id guaranteed ratio ratio | 至少配置其中一项 缺省情况下，每个队列在cell资源和packet资源的最小保证资源比均为12%
配置队列在 packet 缓冲区中的最小保证资源比 | buffer egress [ slot slot-number ] packet queue queue-id guaranteed ratio ratio

l 由于端口的独享资源是由8个队列共同使用，因此当用户修改了某个队列的最小保证资源比之后，其它队列的最小保证资源比将随之自动变化，自动变化的原则为：除用户手工配置的最小保证资源比之外，剩余比例将平均分配给未进行手工配置的队列。例如，如果配置一个队列的最小保证资源比为30%，则剩余7个队列的最小保证资源比将自动变化为10%。

l 在配置队列的最小保证资源比时，需要注意通过手工配置的各个队列资源占用比例之和不能超过100%。

l 队列的最小保证资源比对全局生效，即配置后每个端口上的该队列均能以相同的比例占用当前端口的独享资源。

4. 配置队列的最大共享资源占用比

表12-5 配置队列的最大共享资源占用比

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置队列在 cell 资源中的最大共享资源占用比 | buffer egress [ slot slot-number ] cell queue queue-id shared ratio ratio | 至少配置其中一项 缺省情况下，队列在 cell 资源和 packet 资源中的最大共享资源占用比均为33%
配置队列在 packet 资源中的最大共享资源占用比 | buffer egress [ slot slot-number ] packet queue queue-id shared ratio ratio

队列的最大共享资源占用比对全局生效，即配置后每个端口上的该队列均能以相同的最大共享资源占用比来动态使用共享区域的资源。

5. 配置端口的最大共享资源占用比

表12-6 配置端口的最大共享资源占用比

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置端口在 cell 资源中的最大共享资源占用比 | buffer egress [ slot slot-number ] cell shared ratio ratio | 至少配置其中一项 缺省情况下，每个端口在 cell 资源和 packet 资源中的最大共享资源占用比均为33%
配置端口在 packet 资源中的最大共享资源占用比 | buffer egress [ slot slot-number ] packet shared ratio ratio

端口的最大共享资源占用比对所有端口生效，即配置后每个端口均能够以相同的最大共享资源占用比来动态使用共享区域资源。

6. 应用数据缓冲区的配置

用户在完成对数据缓冲区的手工配置后，必须使用下面的步骤将所作的修改进行应用，之前的配置才能生效。

表12-7 应用数据缓冲区的配置

操作 | 命令 | 说明
进入系统视图 | system-view | -
应用数据缓冲区的配置 | buffer apply | 必选


13 附录

相关链接

  • 13.1 附录 A 缺省优先级映射表
  • 13.2 附录 B 各种优先级介绍
父主题： 02-QoS配置


13.1 附录 A 缺省优先级映射表

dscp-dscp 映射表的缺省映射关系为：映射输出值等于输入值。

表13-1 dot1p-lp、dot1p-dp缺省映射关系

映射输入索引 | dot1p-lp映射 | dot1p-dp映射
802.1p优先级(dot1p) | 本地优先级(lp) | 丢弃优先级(dp)
0 | 2 | 0
1 | 0 | 0
2 | 1 | 0
3 | 3 | 0
4 | 4 | 0
5 | 5 | 0
6 | 6 | 0
7 | 7 | 0

表13-2 dscp-dp、dscp-dot1p缺省映射关系

映射输入索引 | dscp-dp映射 | dscp-dot1p映射
dscp | 丢弃优先级(dp) | 802.1p优先级(dot1p)
0～7 | 0 | 0
8～15 | 0 | 1
16～23 | 0 | 2
24～31 | 0 | 3
32～39 | 0 | 4
40～47 | 0 | 5
48～55 | 0 | 6
56～63 | 0 | 7


13.2 附录 B 各种优先级介绍

13.2.1 IP优先级和DSCP优先级

图13-1 ToS和DS域

如图13-1 所示，IP报文头的ToS字段有8个bit，其中前3个bit表示的就是IP优先级，取值范围为0～7。RFC 2474中，重新定义了IP报文头部的ToS域，称之为DS（Differentiated Services，差分服务）域，其中DSCP优先级用该域的前6位（0～5位）表示，取值范围为0～63，后2位（6、7位）是保留位。

表13-3 IP优先级说明

IP优先级（十进制） | IP优先级（二进制） | 关键字
0 | 000 | routine
1 | 001 | priority
2 | 010 | immediate
3 | 011 | flash
4 | 100 | flash-override
5 | 101 | critical
6 | 110 | internet
7 | 111 | network

表13-4 DSCP优先级说明

DSCP优先级（十进制） | DSCP优先级（二进制） | 关键字
46 | 101110 | ef
10 | 001010 | af11
12 | 001100 | af12
14 | 001110 | af13
18 | 010010 | af21
20 | 010100 | af22
22 | 010110 | af23
26 | 011010 | af31
28 | 011100 | af32
30 | 011110 | af33
34 | 100010 | af41
36 | 100100 | af42
38 | 100110 | af43
8 | 001000 | cs1
16 | 010000 | cs2
24 | 011000 | cs3
32 | 100000 | cs4
40 | 101000 | cs5
48 | 110000 | cs6
56 | 111000 | cs7
0 | 000000 | be（default）

13.2.2 802.1p优先级

802.1p优先级位于二层报文头部，适用于不需要分析三层报头，而需要在二层环境下保证QoS的场合。

图13-2 带有802.1Q标签头的以太网帧

如图13-2 所示，4个字节的802.1Q标签头包含了2个字节的TPID（Tag Protocol Identifier，标签协议标识，取值为0x8100）和2个字节的TCI（Tag Control Information，标签控制信息），图13-3 显示了802.1Q标签头的详细内容，Priority字段就是802.1p优先级。之所以称此优先级为802.1p优先级，是因为有关这些优先级的应用是在802.1p规范中被详细定义。

图13-3 802.1Q标签头

表13-5 802.1p优先级说明

802.1p优先级（十进制） | 802.1p优先级（二进制） | 关键字
0 | 000 | best-effort
1 | 001 | background
2 | 010 | spare
3 | 011 | excellent-effort
4 | 100 | controlled-load
5 | 101 | video
6 | 110 | voice
7 | 111 | network-management


00-前言

前 言

H3C S3600V2系列以太网交换机配置指导共分为十本手册，介绍了S3600V2系列以太网交换机各软件特性的原理及其配置方法，包含原理简介、配置任务描述和配置举例。《安全配置指导》主要介绍了各种安全业务特性的原理及配置方法，包括AAA、802.1X、MAC地址认证、Portal认证等接入认证特性，以及IP Source Guard、ARP攻击防御等安全防御特性。

前言部分包含如下内容：

l 读者对象

l 本书约定

l 产品配套资料

l 资料获取方式

l 技术支持

l 资料意见反馈

读者对象

本手册主要适用于如下工程师：

l 网络规划人员

l 现场技术支持与维护人员

l 负责网络配置和维护的网络管理员

本书约定

1.命令行格式约定

格 式 | 意 义
粗体 | 命令行关键字（命令中保持不变、必须照输的部分）采用加粗字体表示。
斜体 | 命令行参数（命令中必须由实际值进行替代的部分）采用斜体表示。
[ ] | 表示用“[ ]”括起来的部分在命令配置时是可选的。
{ x | y | ... } | 表示从两个或多个选项中选取一个。
[ x | y | ... ] | 表示从两个或多个选项中选取一个或者不选。
{ x | y | ... } * | 表示从两个或多个选项中选取多个，最少选取一个，最多选取所有选项。
[ x | y | ... ] * | 表示从两个或多个选项中选取多个或者不选。
&<1-n> | 表示符号&前面的参数可以重复输入1～n次。
# | 由“#”号开始的行表示为注释行。

2.图形界面格式约定

格 式 | 意 义
< > | 带尖括号“< >”表示按钮名，如“单击<确定>按钮”。
[ ] | 带方括号“[ ]”表示窗口名、菜单名和数据表，如“弹出[新建用户]窗口”。
/ | 多级菜单用“/”隔开。如[文件/新建/文件夹]多级菜单表示[文件]菜单下的[新建]子菜单下的[文件夹]菜单项。

3.各类标志

本书还采用各种醒目标志来表示在操作过程中应该特别注意的地方，这些标志的意义如下：

该标志后的注释需给予格外关注，不当的操作可能会对人身造成伤害。

提醒操作中应注意的事项，不当的操作可能会导致数据丢失或者设备损坏。

为确保设备配置成功或者正常工作而需要特别关注的操作或信息。

对操作内容的描述进行必要的补充和说明。

配置、操作、或使用设备的技巧、小窍门。

4.图标约定

本书使用的图标及其含义如下：

该图标及其相关描述文字代表一般网络设备，如路由器、交换机、防火墙等。

该图标及其相关描述文字代表一般意义下的路由器，以及其他运行了路由协议的设备。

该图标及其相关描述文字代表二、三层以太网交换机，以及运行了二层协议的设备。

产品配套资料

H3C S3600V2系列以太网交换机的配套资料包括如下部分：

大类 | 资料名称 | 内容介绍
产品知识介绍 | 产品彩页 | 帮助您了解产品的主要规格参数及亮点
 | RPS电源用户手册 | 帮助您了解产品支持的RPS电源的外观、功能、规格
 | H3C低端系列以太网交换机RPS电源选购指南 | 帮助您了解各种RPS电源适用的交换机产品型号及RPS电源配套电缆的相关规格
 | H3C低端系列以太网交换机可插拔模块手册 | 帮助您了解产品支持的可插拔模块类型、外观和规格
设备安装 | 安全兼容性手册 | 列出产品的兼容性声明，并对兼容性和安全的细节进行说明
 | H3C 设备防雷安装指导手册 | 帮助您了解防雷接地设计和工程安装方法，以保证交换机具有良好的抗雷击性能
 | 快速安装指南 | 指导您对设备进行初始安装，通常针对最常用的情况，减少您的检索时间
 | 安装指导 | 帮助您详细了解设备硬件规格和安装方法，指导您对设备进行安装
 | H3C可插拔SFP[SFP+][XFP]模块安装指南 | 帮助您掌握SFP/SFP+/XFP模块的正确安装方法，避免因操作不当而造成器件损坏
业务配置 | 配置指导 | 帮助您掌握设备软件功能的配置方法及配置步骤
 | 命令参考 | 详细介绍设备的命令，相当于命令字典，方便您查阅各个命令的功能
运行维护 | H3C系列以太网交换机登录密码恢复手册 | 指导您在设备登录密码丢失的情况下，找回密码、或重新配置登录密码
 | 故障处理手册 | 指导您快速定位并处理软件故障
 | 版本说明书 | 帮助您了解产品版本的相关信息（包括：版本配套说明、兼容性说明、特性变更说明、技术支持信息）及软件升级方法

资料获取方式

您可以通过H3C网站（ www.h3c.com.cn ）获取最新的产品资料：

H3C网站与产品资料相关的主要栏目介绍如下：

l [服务支持/文档中心] ：可以获取硬件安装类、软件升级类、配置类或维护类等产品资料。

l [产品技术] ：可以获取产品介绍和技术介绍的文档，包括产品相关介绍、技术介绍、技术白皮书等。

l [解决方案] ：可以获取解决方案类资料。

l [服务支持/软件下载] ：可以获取与软件版本配套的资料。

技术支持

用户支持邮箱：customer_service@h3c.com

技术支持热线电话：400-810-0504（手机、固话均可拨打）

网址： http://www.h3c.com.cn

资料意见反馈

如果您在使用过程中发现产品资料的任何问题，可以通过以下方式反馈：

E-mail：info@h3c.com

感谢您的反馈，让我们做得更好！


1 AAA配置

相关链接

  • 1.1 AAA简介
  • 1.2 AAA配置思路及配置任务简介
  • 1.3 配置AAA方案
  • 1.4 在ISP域中配置实现AAA的方法
  • 1.5 配置强制切断用户连接
  • 1.6 配置NAS-ID与VLAN的绑定
  • 1.7 配置双机热备模式下的设备ID
  • 1.8 配置设备作为RADIUS服务器
  • 1.9 AAA显示和维护
  • 1.10 AAA典型配置举例
  • 1.11 AAA常见配置错误举例
父主题： 01-AAA配置


1.1 AAA简介

1.1.1 概述

AAA是Authentication、Authorization、Accounting（认证、授权、计费）的简称，是网络安全的一种管理机制，提供了认证、授权、计费三种安全功能。

l 认证：确认访问网络的远程用户的身份，判断访问者是否为合法的网络用户。

l 授权：对不同用户赋予不同的权限，限制用户可以使用的服务。例如用户成功登录服务器后，管理员可以授权用户对服务器中的文件进行访问和打印操作。

l 计费：记录用户使用网络服务中的所有操作，包括使用的服务类型、起始时间、数据流量等，它不仅是一种计费手段，也对网络安全起到了监视作用。

AAA一般采用客户机/服务器结构，客户端运行于NAS（Network Access Server，网络接入服务器）上，服务器上则集中管理用户信息。NAS对于用户来讲是服务器端，对于服务器来说是客户端。AAA的基本组网结构如图1-1。

图1-1 AAA基本组网结构示意图

当用户想要通过某网络与NAS建立连接，从而获得访问其它网络的权利或取得某些网络资源的权利时，NAS起到了验证用户的作用。NAS负责把用户的认证、授权、计费信息透传给服务器（RADIUS服务器或HWTACACS服务器），RADIUS协议或HWTACACS协议规定了NAS与服务器之间如何传递用户信息。

图1-1 的AAA基本组网结构中有两台服务器，用户可以根据实际组网需求来决定认证、授权、计费功能分别由使用哪种协议类型的服务器来承担。例如，可以选择HWTACACS服务器实现认证和授权，RADIUS服务器实现计费。

当然，用户也可以只使用AAA提供的一种或两种安全服务。例如，公司仅仅想让员工在访问某些特定资源的时候进行身份认证，那么网络管理员只要配置认证服务器就可以了。但是若希望对员工使用网络的情况进行记录，那么还需要配置计费服务器。

AAA可以通过多种协议来实现，目前设备支持基于RADIUS协议、HWTACACS协议来实现AAA，在实际应用中，最常使用RADIUS协议。

1.1.2 RADIUS协议简介

RADIUS（Remote Authentication Dial-In User Service，远程认证拨号用户服务）是一种分布式的、客户端/服务器结构的信息交互协议，能保护网络不受未授权访问的干扰，常应用在既要求较高安全性、又允许远程用户访问的各种网络环境中。该协议定义了RADIUS的报文格式及其消息传输机制，并规定使用UDP作为封装RADIUS报文的传输层协议（UDP端口1812、1813分别作为认证、计费端口）。

RADIUS最初仅是针对拨号用户的AAA协议，后来随着用户接入方式的多样化发展，RADIUS也适应多种用户接入方式，如以太网接入、ADSL接入。它通过认证授权来提供接入服务，通过计费来收集、记录用户对网络资源的使用。

1. 客户端/服务器模式

l 客户端：RADIUS客户端一般位于NAS上，可以遍布整个网络，负责传输用户信息到指定的RADIUS服务器，然后根据从服务器返回的信息进行相应处理（如接受/拒绝用户接入）。

l 服务器：RADIUS服务器一般运行在中心计算机或工作站上，维护相关的用户认证和网络服务访问信息，负责接收用户连接请求并认证用户，然后给客户端返回所有需要的信息（如接受/拒绝认证请求）。

RADIUS服务器通常要维护三个数据库，如图1-2 所示：

图1-2 RADIUS服务器的组成

l “Users”：用于存储用户信息（如用户名、口令以及使用的协议、IP地址等配置信息）。

l “Clients”：用于存储RADIUS客户端的信息（如NAS的共享密钥、IP地址等）。

l “Dictionary”：用于存储RADIUS协议中的属性和属性值含义的信息。

2. 安全和认证机制

RADIUS客户端和RADIUS服务器之间认证消息的交互是通过共享密钥的参与来完成的，并且共享密钥不能通过网络来传输，增强了信息交互的安全性。另外，为防止用户密码在不安全的网络上传递时被窃取，在传输过程中对密码进行了加密。

RADIUS服务器支持多种方法来认证用户。另外，RADIUS服务器还可以作为一个代理，以RADIUS客户端的身份与其它的RADIUS认证服务器进行通信，负责转发RADIUS认证和计费报文。

3. RADIUS的基本消息交互流程

用户、RADIUS客户端和RADIUS服务器之间的交互流程如图1-3 所示。

图1-3 RADIUS的基本消息交互流程

消息交互流程如下：

(1) 用户发起连接请求，向RADIUS客户端发送用户名和密码。

(2) RADIUS客户端根据获取的用户名和密码，向RADIUS服务器发送认证请求包（Access-Request），其中的密码在共享密钥的参与下由MD5算法进行加密处理。

(3) RADIUS服务器对用户名和密码进行认证。如果认证成功，RADIUS服务器向RADIUS客户端发送认证接受包（Access-Accept）；如果认证失败，则返回认证拒绝包（Access-Reject）。由于RADIUS协议合并了认证和授权的过程，因此认证接受包中也包含了用户的授权信息。

(4) RADIUS客户端根据接收到的认证结果接入/拒绝用户。如果允许用户接入，则RADIUS客户端向RADIUS服务器发送计费开始请求包（Accounting-Request）。

(5) RADIUS服务器返回计费开始响应包（Accounting-Response），并开始计费。

(6) 用户开始访问网络资源；

(7) 用户请求断开连接，RADIUS客户端向RADIUS服务器发送计费停止请求包（Accounting-Request）。

(8) RADIUS服务器返回计费结束响应包（Accounting-Response），并停止计费。

(9) 用户结束访问网络资源。

4. RADIUS报文结构

RADIUS采用UDP报文来传输消息，通过定时器管理机制、重传机制、备用服务器机制，确保RADIUS服务器和客户端之间交互消息的正确收发。RADIUS报文结构如图1-4 所示。

图1-4 RADIUS报文结构

各字段的解释如下：

(1) Code域

长度为1个字节，用于说明RADIUS报文的类型，如表1-1 所示。

表1-1 Code域的主要取值说明

Code | 报文类型 | 报文说明
1 | Access-Request认证请求包 | 方向Client->Server，Client将用户信息传输到Server，由Server判断是否接入该用户。该报文中必须包含User-Name属性，可选包含NAS-IP-Address、User-Password、NAS-Port等属性
2 | Access-Accept认证接受包 | 方向Server->Client，如果Access-Request报文中的所有Attribute值都可以接受（即认证通过），则传输该类型报文
3 | Access-Reject认证拒绝包 | 方向Server->Client，如果Access-Request报文中存在任何无法被接受的Attribute值（即认证失败），则传输该类型报文
4 | Accounting-Request计费请求包 | 方向Client->Server，Client将用户信息传输到Server，请求Server开始/停止计费，由该报文中的Acct-Status-Type属性区分计费开始请求和计费结束请求
5 | Accounting-Response计费响应包 | 方向Server->Client，Server通知Client已经收到Accounting-Request报文，并且已经正确记录计费信息

(2) Identifier域

长度为1个字节，用于匹配请求包和响应包，以及检测在一段时间内重发的请求包。类型一致的请求包和响应包的Identifier值相同。

(3) Length域

长度为2个字节，表示RADIUS数据包（包括Code、Identifier、Length、Authenticator和Attribute）的长度，范围从20～4096。超过Length域的字节将作为填充字符被忽略。如果接收到的包的实际长度小于Length域的值时，则包会被丢弃。

(4) Authenticator域

长度为16个字节，用于验证RADIUS服务器的应答报文，另外还用于用户密码的加密。Authenticator包括两种类型：Request Authenticator和Response Authenticator。

(5) Attribute域

不定长度，用于携带专门的认证、授权和计费信息，提供请求和响应报文的配置细节。Attribute可包括多个属性，每一个属性都采用（Type、Length、Value）三元组的结构来表示。

l 类型（Type），1个字节，取值为1～255，用于表示属性的类型，表1-2 列出了RADIUS认证、授权、计费常用的属性。

l 长度（Length），表示该属性（包括类型、长度和属性）的长度，单位为字节。

l 属性值（Value），表示该属性的信息，其格式和内容由类型和长度决定，最大长度为253字节。

表1-2 RADIUS属性

属性编号 | 属性名称 | 属性编号 | 属性名称
1 | User-Name | 45 | Acct-Authentic
2 | User-Password | 46 | Acct-Session-Time
3 | CHAP-Password | 47 | Acct-Input-Packets
4 | NAS-IP-Address | 48 | Acct-Output-Packets
5 | NAS-Port | 49 | Acct-Terminate-Cause
6 | Service-Type | 50 | Acct-Multi-Session-Id
7 | Framed-Protocol | 51 | Acct-Link-Count
8 | Framed-IP-Address | 52 | Acct-Input-Gigawords
9 | Framed-IP-Netmask | 53 | Acct-Output-Gigawords
10 | Framed-Routing | 54 | (unassigned)
11 | Filter-ID | 55 | Event-Timestamp
12 | Framed-MTU | 56-59 | (unassigned)
13 | Framed-Compression | 60 | CHAP-Challenge
14 | Login-IP-Host | 61 | NAS-Port-Type
15 | Login-Service | 62 | Port-Limit
16 | Login-TCP-Port | 63 | Login-LAT-Port
17 | (unassigned) | 64 | Tunnel-Type
18 | Reply-Message | 65 | Tunnel-Medium-Type
19 | Callback-Number | 66 | Tunnel-Client-Endpoint
20 | Callback-ID | 67 | Tunnel-Server-Endpoint
21 | (unassigned) | 68 | Acct-Tunnel-Connection
22 | Framed-Route | 69 | Tunnel-Password
23 | Framed-IPX-Network | 70 | ARAP-Password
24 | State | 71 | ARAP-Features
25 | Class | 72 | ARAP-Zone-Access
26 | Vendor-Specific | 73 | ARAP-Security
27 | Session-Timeout | 74 | ARAP-Security-Data
28 | Idle-Timeout | 75 | Password-Retry
29 | Termination-Action | 76 | Prompt
30 | Called-Station-Id | 77 | Connect-Info
31 | Calling-Station-Id | 78 | Configuration-Token
32 | NAS-Identifier | 79 | EAP-Message
33 | Proxy-State | 80 | Message-Authenticator
34 | Login-LAT-Service | 81 | Tunnel-Private-Group-id
35 | Login-LAT-Node | 82 | Tunnel-Assignment-id
36 | Login-LAT-Group | 83 | Tunnel-Preference
37 | Framed-AppleTalk-Link | 84 | ARAP-Challenge-Response
38 | Framed-AppleTalk-Network | 85 | Acct-Interim-Interval
39 | Framed-AppleTalk-Zone | 86 | Acct-Tunnel-Packets-Lost
40 | Acct-Status-Type | 87 | NAS-Port-Id
41 | Acct-Delay-Time | 88 | Framed-Pool
42 | Acct-Input-Octets | 89 | (unassigned)
43 | Acct-Output-Octets | 90 | Tunnel-Client-Auth-id
44 | Acct-Session-Id | 91 | Tunnel-Server-Auth-id

l 表1-2 中所列的属性由RFC 2865、RFC 2866、RFC 2867和RFC 2868所定义。

l 常用RADIUS标准属性的介绍请参见“1.1.8 1. 常用RADIUS标准属性”。

5. RADIUS扩展属性

RADIUS协议具有良好的可扩展性，RFC 2865中定义的26号属性（Vendor-Specific）用于设备厂商对RADIUS进行扩展，以实现标准RADIUS没有定义的功能。

设备厂商可以封装多个自定义的“（Type、Length、Value）”子属性来扩展RADIUS。如图1-5 所示，26号属性报文内封装的子属性包括以下四个部分：

l Vendor-ID，表示厂商代号，最高字节为0，其余3字节的编码见RFC 1700。H3C公司的Vendor-ID是2011。H3C RADIUS扩展属性的介绍请参见“1.1.8 2. H3C RADIUS扩展属性”。

l Vendor-Type，表示子属性类型。

l Vendor-Length，表示子属性长度。

l Vendor-Data，表示子属性的内容。

图1-5 包括扩展属性的RADIUS报文片断

1.1.3 HWTACACS协议简介

HWTACACS（HW Terminal Access Controller Access Control System，HW终端访问控制器控制系统协议）是在TACACS（RFC 1492）基础上进行了功能增强的安全协议。该协议与RADIUS协议类似，采用客户端/服务器模式实现NAS与HWTACACS服务器之间的通信。

HWTACACS协议主要用于PPP（Point-to-Point Protocol，点到点协议）和VPDN（Virtual Private Dial-up Network，虚拟专用拨号网络）接入用户及终端用户的认证、授权和计费。其典型应用是对需要登录到设备上进行操作的终端用户进行认证、授权以及对终端用户执行的操作进行记录。设备作为HWTACACS的客户端，将用户名和密码发给HWTACACS服务器进行验证，用户验证通过并得到授权之后可以登录到设备上进行操作，HWTACACS服务器上会记录用户对设备执行过的命令。

1. HWTACACS协议与RADIUS协议的区别

HWTACACS协议与RADIUS协议都实现了认证、授权、计费的功能，它们有很多相似点：结构上都采用客户端/服务器模式；都使用公共密钥对传输的用户信息进行加密；都有较好的灵活性和可扩展性。两者之间存在的主要区别如表1-3 所示。

表1-3 HWTACACS协议和RADIUS协议区别

HWTACACS协议 | RADIUS协议
使用TCP，网络传输更可靠 | 使用UDP，网络传输效率更高
除了HWTACACS报文头，对报文主体全部进行加密 | 只对验证报文中的密码字段进行加密
协议报文较为复杂，认证和授权分离，使得认证、授权服务可以分离在不同的安全服务器上实现。例如，可以用一个HWTACACS服务器进行认证，另外一个HWTACACS服务器进行授权 | 协议报文比较简单，认证和授权结合，难以分离
支持对设备的配置命令进行授权使用。用户可使用的命令行受到用户级别和AAA授权的双重限制，某一级别的用户输入的每一条命令都需要通过HWTACACS服务器授权，如果授权通过，命令就可以被执行 | 不支持对设备的配置命令进行授权使用 用户登录设备后可以使用的命令行由用户级别决定，用户只能使用缺省级别等于/低于用户级别的命令行

2. HWTACACS的基本消息交互流程

下面以Telnet用户为例，说明使用HWTACACS对用户进行认证、授权和计费的过程。基本消息交互流程图如图1-6 所示。

图1-6 Telnet用户认证、授权和计费流程图

在整个过程中的基本消息交互流程如下：

(1) Telnet用户请求登录设备。

(2) HWTACACS客户端收到请求之后，向HWTACACS服务器发送认证开始报文。

(3) HWTACACS服务器发送认证回应报文，请求用户名。

(4) HWTACACS客户端收到回应报文后，向用户询问用户名。

(5) 用户输入用户名。

(6) HWTACACS客户端收到用户名后，向HWTACACS服务器发送认证持续报文，其中包括了用户名。

(7) HWTACACS服务器发送认证回应报文，请求登录密码。

(8) HWTACACS客户端收到回应报文，向用户询问登录密码。

(9) 用户输入密码。

(10) HWTACACS客户端收到登录密码后，向HWTACACS服务器发送认证持续报文，其中包括了登录密码。

(11) HWTACACS服务器发送认证回应报文，指示用户通过认证。

(12) HWTACACS客户端向HWTACACS服务器发送授权请求报文。

(13) HWTACACS服务器发送授权回应报文，指示用户通过授权。

(14) HWTACACS客户端收到授权回应成功报文，向用户输出设备的配置界面。

(15) HWTACACS客户端向HWTACACS服务器发送计费开始报文。

(16) HWTACACS服务器发送计费回应报文，指示计费开始报文已经收到。

(17) 用户请求断开连接。

(18) HWTACACS客户端向HWTACACS服务器发送计费结束报文。

(19) HWTACACS服务器发送计费结束报文，指示计费结束报文已经收到。

1.1.4 基于域的用户管理

一个ISP（Internet Service Provider，互联网服务提供商）域是由属于同一个ISP的用户构成的群体。

NAS对用户的管理是基于ISP域的，每个接入用户都属于一个ISP域。用户所属的ISP域是由用户登录时提供的用户名决定的，如图1-7 所示。

图1-7 用户名决定域名

用户的认证、授权、计费都是在相应的ISP域视图下应用预先配置的认证、授权、计费方案来实现的。AAA有缺省的认证、授权、计费方案，分别为本地认证、本地授权、本地计费。如果用户所属的ISP域下未应用任何认证、授权、计费方案，系统将使用缺省的认证、授权、计费方案。

为便于对不同接入方式的用户进行区分管理，AAA将用户划分为以下几个类型：

l lan-access用户：LAN接入用户，如802.1X认证、MAC地址认证用户。

l login用户：登录设备用户，如SSH、Telnet、Web、FTP、终端接入用户。

l Portal接入用户。

用户登录设备后，AAA还可以对其提供以下服务，用于提高用户登录后对设备操作的安全性：

l 命令行授权：用户执行的每一条命令都需要接受授权服务器的检查，只有授权成功的命令才被允许执行。关于命令行授权的详细介绍请参考“基础配置指导”中的“配置用户通过CLI登录设备”。

l 命令行计费：用户执行过的所有命令或被成功授权执行的命令，会被计费服务器进行记录。关于命令行计费的详细介绍请参考“基础配置指导”中的“配置用户通过CLI登录设备”。

l 级别切换认证：在不退出当前登录、不断开当前连接的前提下，用户将自身的用户级别由低向高切换的时候，需要通过服务器的认证，级别切换操作才被允许。关于用户级别切换的详细介绍请参考“基础配置指导”中的“CLI”。

AAA支持在ISP域视图下针对不同的接入方式配置不同的认证、授权、计费的方法（一组不同的认证/授权/计费方案），具体的配置步骤请参见“1.4 在ISP域中配置实现AAA的方法”。

1.1.5 设备的RADIUS服务器功能

通常，RADIUS的服务器端位于中心计算机或工作站上，RADIUS的客户端位于NAS上。若网络设备上能够实现RADIUS服务器的功能，则该网络设备就可以作为RADIUS服务器端与RADIUS的客户端配合完成用户的认证、授权和计费等功能。这种情况下，如 图1-8 所示，RADIUS的客户端和RADIUS的服务器端既可以集中位于同一台设备上，也可以分别位于不同的设备上。

设备支持RADIUS服务器功能给RADIUS的应用提供了更多便利，一方面，使得用户组网方式更加灵活，另一方面，可减少用户专门部署RADIUS服务器的组网成本。该功能常被应用于集群网络结构中，通过在汇聚层的管理设备上配置RADIUS服务器功能，并在接入层的成员设备上部署相应的认证方案，实现对用户的认证、授权。

图1-8 设备作为RADIUS服务器典型组网图

设备作为RADIUS服务器可以实现如下功能：

l 用户信息管理：支持创建、修改或删除用户信息。用户信息包括用户名、口令、权限、过期时间，以及用户描述信息等。

l RADIUS客户端信息管理：支持创建、删除RADIUS客户端。RADIUS客户端以IP地址为标识，并具有共享密钥等属性。RADIUS服务器通过配置指定被管理的RADIUS客户端，并只处理来自其管理范围内的客户端的RADIUS报文，对其它报文直接作丢弃处理。共享密钥用于保证RADIUS客户端和RADIUS服务器端通信的安全性。

l 支持RADIUS协议的认证和授权功能（暂不支持计费功能）。

作为RADIUS服务器的设备接收到RADIUS报文后，首先检查RADIUS客户端是否在可管理的范围内，并使用共享密钥检验报文的合法性，然后依次检查用户帐号是否存在、用户口令是否正确，并根据RADIUS服务器的配置检查用户的其它属性是否满足要求，例如帐号是否在有效期内等因素，最后决定是否允许用户通过认证，并对认证通过的用户授予对应的权限。

在标准的RADIUS协议中，RADIUS服务器的认证端口为UDP端口1812，我司设备作为RADIUS服务器时认证端口为UDP端口1645。因此，在RADIUS客户端上配置RADIUS方案时，需要指定认证服务器的认证端口号为1645。

1.1.6 AAA支持多实例

在MPLS VPN组网中，要求在私网客户端业务隔离的情况下，实现对客户端的集中认证，这就需要AAA支持基于多实例的报文交互。通过AAA支持多实例，可实现RADIUS、HWTACACS认证/授权/计费报文在MPLS VPN之间的交互。如 图1-9 所示，连接客户端的PE设备作为NAS，通过MPLS VPN把私网客户端的认证/授权/计费信息透传给网络另一端的私网服务器，实现了对私网客户端的集中认证，且各私网的认证报文互不影响。

图1-9 AAA支持多实例典型组网图

在MCE设备上进行的Portal接入认证在本特性的配合下，也可支持多实例功能。关于MCE的相关介绍请见参见“路由配置指导”中的“MCE”。

1.1.7 协议规范

与AAA、RADIUS、HWTACACS相关的协议规范有：

l RFC 2865：Remote Authentication Dial In User Service (RADIUS)

l RFC 2866：RADIUS Accounting

l RFC 2867：RADIUS Accounting Modifications for Tunnel Protocol Support

l RFC 2868：RADIUS Attributes for Tunnel Protocol Support

l RFC 2869：RADIUS Extensions

l RFC 1492：An Access Control Protocol, Sometimes Called TACACS

1.1.8 RADIUS属性

1. 常用RADIUS标准属性

表1-4 常用RADIUS标准属性

属性编号 | 属性名称 | 描述
1 | User-Name | 需要进行认证的用户名称
2 | User-Password | 需要进行PAP方式认证的用户密码，在采用PAP认证方式时，该属性仅出现在Access-Request报文中
3 | CHAP-Password | 需要进行CHAP方式认证的用户密码的消息摘要。在采用CHAP认证方式时，该属性出现在Access-Request报文中
4 | NAS-IP-Address | Server通过不同的IP地址来标识不同的Client，通常Client采用本地一个接口的IP地址来唯一的标识自己，这就是NAS-IP-Address。该属性指示当前发起请求的Client的NAS-IP-Address。该字段仅出现在Access-Request报文中
5 | NAS-Port | 用户接入NAS的物理端口号
6 | Service-Type | 用户申请认证的业务类型
7 | Framed-Protocol | 用户Frame类型业务的封装协议
8 | Framed-IP-Address | 为用户所配置的IP地址
11 | Filter-ID | 访问控制列表的名称
12 | Framed-MTU | 用户与NAS之间数据链路的MTU值。例如在802.1X的EAP方式认证中，NAS通过Framed-MTU值指示Server发送EAP报文的最大长度，防止EAP报文大于数据链路MTU导致的报文丢失
14 | Login-IP-Host | 用户登录设备的接口IP地址
15 | Login-Service | 用户登录设备时采用的业务类型
18 | Reply-Message | 服务器反馈给用户的纯文本描述，可用于向用户显示认证失败的原因
26 | Vendor-Specific | 厂商自定义的私有属性。一个报文中可以有一个或者多个私有属性，每个私有属性中可以有一个或者多个子属性
27 | Session-Timeout | 会话结束之前，给用户提供服务的最大时间，即用户的最大可用时长
28 | Idle-Timeout | 会话结束之前，允许用户持续空闲的最大时间，即用户的限制切断时间
31 | Calling-Station-Id | NAS用于向Server告知标识用户的号码，在我司设备提供的lan-access业务中，该字段填充的是用户的MAC地址，采用的“HHHH-HHHH-HHHH”格式封装
32 | NAS-Identifier | NAS用来向Server标识自己的名称
40 | Acct-Status-Type | 计费请求报文的类型 l 1：Start l 2：Stop l 3：Interium-Update l 4：Reset-Charge l 7：Accounting-On（3GPP中有定义） l 8：Accounting-Off （3GPP中有定义） l 9-14：Reserved for Tunnel Accounting l 15：Reserved for Failed
45 | Acct-Authentic | 用户采用的认证方式，包括RADIUS，Local以及Remote
60 | CHAP-Challenge | 在CHAP认证中，由NAS生成的用于MD5计算的随机序列
61 | NAS-Port-Type | NAS认证用户的端口的物理类型 l 15：以太网 l 16：所有种类的ADSL l 17：Cable（有线电视电缆） l 201：VLAN l 202：ATM 如果在ATM或以太网端口上还划分VLAN，则该属性值为201
79 | EAP-Message | 用于封装EAP报文，实现RADIUS协议对EAP认证方式的支持
80 | Message-Authenticator | 用于对认证报文进行认证和校验，防止非法报文欺骗。该属性在RADIUS协议支持EAP认证方式被使用
87 | NAS-Port-Id | 用字符串来描述的认证端口信息

2. H3C RADIUS扩展属性

表1-5 H3C RADIUS扩展属性

子属性编号 | 子属性名称 | 描述
1 | Input-Peak-Rate | 用户接入到NAS的峰值速率，以bps为单位
2 | Input-Average-Rate | 用户接入到NAS的平均速率，以bps为单位
3 | Input-Basic-Rate | 用户接入到NAS的基本速率，以bps为单位
4 | Output-Peak-Rate | 从NAS到用户的峰值速率，以bps为单位
5 | Output-Average-Rate | 从NAS到用户的平均速率，以bps为单位
6 | Output-Basic-Rate | 从NAS到用户的基本速率，以bps为单位
15 | Remanent_Volume | 表示该连接的剩余可用总流量。对于不同的服务器类型，此属性的单位不同
20 | Command | 用于会话控制，表示对会话进行操作，此属性有五种取值 l 1：Trigger-Request l 2：Terminate-Request l 3：SetPolicy l 4：Result l 5：PortalClear
24 | Control_Identifier | 服务器重发报文的标识符，对于同一会话中的重发报文，本属性必须相同。不同的会话的报文携带的该属性值可能相同。相应的客户端响应报文必须携带该属性，其值不变 在开始、停止或中间上报流量的Accounting-Request 报文中，若带有Control-Identifier属性，此时的Control-Identifier属性无实际意义
25 | Result_Code | 表示Trigger-Request或SetPolicy的结果，0表示成功，非0表示失败
26 | Connect_ID | 用户连接索引
28 | Ftp_Directory | FTP用户工作目录 对于FTP用户，当RADIUS客户端作为FTP服务器的时候，该属性用于设置RADIUS客户端上的FTP目录
29 | Exec_Privilege | EXEC用户优先级
59 | NAS_Startup_Timestamp | NAS系统启动时刻，以秒为单位，表示从1970年1月1日UTC 00:00:00以来的秒数
60 | Ip_Host_Addr | 认证请求和计费请求报文中携带的用户IP地址和MAC地址，格式为“A.B.C.D hh:hh:hh:hh:hh:hh”，IP地址和MAC地址之间以空格分开
61 | User_Notify | 服务器需要透传到客户端的信息
62 | User_HeartBeat | 802.1X用户认证成功后下发的32字节的Hash字符串，该属性值被保存在设备的用户列表中，用于校验802.1X客户端的握手报文 该属性仅出现在Access-Accept和Accounting-Request报文中
140 | User_Group | SSL VPN用户认证成功后下发的用户组，一个用户可以属于多个用户组，多个用户组之间使用分号格开。本属性用于SSL VPN设备的配合
141 | Security_Level | SSL VPN用户安全认证之后下发的安全级别
201 | Input-Interval-Octets | 两次实时计费间隔的输入的字节差，以Byte为单位
202 | Output-Interval-Octets | 两次实时计费间隔的输出的字节差，以Byte为单位
203 | Input-Interval-Packets | 两次计费间隔的输入的包数，单位由设备上的配置决定
204 | Output-Interval-Packets | 两次计费间隔的输出的包数，单位由设备上的配置决定
205 | Input-Interval-Gigawords | 两次计费间隔的输入的字节差是4G字节的多少倍
206 | Output-Interval-Gigawords | 两次计费间隔的输出的字节差是4G字节的多少倍
207 | Backup-NAS-IP | NAS发送RADIUS报文的备份源IP地址
255 | Product_ID | 产品名称


1.2 AAA配置思路及配置任务简介

在作为AAA客户端的接入设备（实现NAS功能的网络设备）上，AAA的基本配置思路如下：

(1) 配置AAA方案：根据需要配置本地或远程认证方案。

l 本地认证：需要配置本地用户，即local user的相关属性，包括手动添加认证的用户名和密码等；

l 远程认证：需要配置RADIUS、HWTACACS方案，并在服务器上配置相应的用户属性。

(2) 配置实现AAA的方法：在用户所属的ISP域中分别指定实现认证、授权、计费的方法。

l 认证方法：可选择不认证（none）、本地认证（local）或远程认证（scheme）；

l 授权方法：可选择不授权（none）、本地授权（local）或远程授权（scheme）；

l 计费方法：可选择不计费（none）、本地计费（local）或远程计费（scheme）。

图1-10 AAA基本配置思路流程图

表1-6 AAA配置任务简介

配置任务 |  | 说明 | 详细配置
配置AAA方案 | 配置本地用户 | 至少选其一 | 1.3.1
 | 配置RADIUS方案 |  | 1.3.2
 | 配置HWTACACS方案 |  | 1.3.3
在ISP域中配置实现AAA的方法 | 创建ISP域 | 必选 | 1.4.2
 | 配置ISP域的属性 | 可选 | 1.4.3
 | 配置ISP域的AAA认证方法 | 至少选其一 | 1.4.4
 | 配置ISP域的AAA授权方法 |  | 1.4.5
 | 配置ISP域的AAA计费方法 |  | 1.4.6
配置强制切断用户 |  | 可选 | 1.5
配置NAS-ID与VLAN的绑定 |  | 可选 | 1.6
配置双机热备模式下的设备ID |  | 可选 | 1.7
配置设备作为RADIUS服务器 |  | 可选 | 1.8

对于Login用户，只有配置登录用户界面的认证方式为 scheme，这类用户登录设备才会采用AAA处理。有关登录用户界面认证方式的命令介绍请参见“基础配置命令参考”中的“登录交换机”。


1.3 配置AAA方案

1.3.1 配置本地用户

当选择使用本地认证、本地授权、本地计费方法对用户进行认证、授权或计费时，应在设备上创建本地用户并配置相关属性。

所谓本地用户，是指在本地设备上设置的一组用户属性的集合。该集合以用户名为用户的唯一标识。为使某个请求网络服务的用户可以通过本地认证，需要在设备上的本地用户数据库中添加相应的表项。具体步骤是，创建一个本地用户并进入本地用户视图，然后在本地用户视图下配置相应的用户属性，可配置的用户属性包括：

l 服务类型

用户可使用的网络服务类型。该属性是本地认证的检测项，如果没有用户可以使用的服务类型，则该用户无法通过认证。

可支持的服务类型包括：FTP、lan-access、Portal、SSH、Telnet、Terminal、Web。

l 用户状态

用于指示是否允许该用户请求网络服务器，包括active和block两种状态。active表示允许该用户请求网络服务，block表示禁止该用户请求网络服务。

l 最大用户数

使用当前用户名接入设备的最大用户数目。若当前该用户名的接入用户数已达最大值，则使用该用户名的新用户将被禁止接入。

l 生效时间及有效期

用户帐户开始生效的时间以及有效期截止的时间。接入设备仅允许帐户处于有效期内的的用户通过认证。有用户临时需要接入网络时，可以通过建立有一定有效期的来宾帐户控制用户的临时访问。

l 所属的用户组

每一个本地用户都属于一个本地用户组，并继承组中的所有属性（用户授权属性）。关于本地用户组的介绍和配置请参见“ 1.3.1 3. 配置用户组属性 ”。

l 绑定属性

用户认证时需要检测的属性，用于限制接入用户的范围。若用户的实际属性与设置的绑定属性不匹配，则不能通过认证，因此在配置绑定属性时要考虑该用户是否需要绑定某些属性。可绑定的属性包括：ISDN用户的主叫号码、用户IP地址、用户接入端口、用户MAC地址、用户所属VLAN。各属性的使用及支持情况请见 表1-8 。

l 用户授权属性

本地用户的授权属性在用户组和本地用户视图下都可以配置，且本地用户视图下的配置优先级高于用户组视图下的配置。用户组的配置对组内所有本地用户生效。

用户认证通过后，接入设备下发给用户的权限。可支持的授权属性包括：ACL、PPP回呼号码、闲置切换功能、用户级别、用户角色、User Profile、VLAN、FTP/SFTP工作目录。各属性的支持情况请见 表1-8 。由于可配置的授权属性都有其明确的使用环境和用途，因此配置授权属性时要考虑该用户是否需要某些属性。

1. 本地用户配置任务简介

表1-7 本地用户配置任务简介

配置任务 | 说明 | 详细配置
配置本地用户属性 | 必选 | 1.3.1 2.
配置用户组属性 | 可选 | 1.3.1 3.
本地用户及本地用户组显示与维护 | 可选 | 1.3.1 4.

2. 配置本地用户属性

表1-8 配置本地用户的属性

操作 | 命令 | 说明
进入系统视图 | system-view | -
设置本地用户密码的显示方式 | local-user password-display-mode { auto | cipher-force } | 可选 缺省情况下，所有接入用户的密码显示方式为 auto，表示按照用户设置密码时指定的密码显示方式显示
添加本地用户，并进入本地用户视图 | local-user user-name | 必选 缺省情况下，系统中没有任何本地用户
设置本地用户的密码 | password [ { cipher | simple } password ] | 可选 若不设置密码，则本地用户认证时无需输入密码，只要用户名有效且其它属性验证通过即可认证成功，因此为提高用户帐户的安全性，建议设置本地用户密码
设置本地用户可以使用的服务类型 | service-type { ftp | lan-access | { ssh | telnet | terminal } * | portal | web } | 必选 缺省情况下，系统不对本地用户授权任何服务
设置本地用户的状态 | state { active | block } | 可选 缺省情况下，当一个本地用户被创建以后，其状态为 active，允许该用户请求网络服务
设置本地用户名可容纳的最大接入用户数 | access-limit max-user-number | 可选 缺省情况下，不限制当前本地用户名可容纳的接入用户数 FTP用户不受此属性限制
设置本地用户的绑定属性 | bind-attribute { call-number call-number [ : subcall-number ] | ip ip-address | location port slot-number subslot-number port-number | mac mac-address | vlan vlan-id } * | 可选 缺省情况下，未设置本地用户的任何绑定属性 其它类型的本地用户不支持绑定属性
设置本地用户的授权属性 | authorization-attribute { acl acl-number | callback-number callback-number | idle-cut minute | level level | user-profile profile-name | user-role { guest | guest-manager | security-audit } | vlan vlan-id | work-directory directory-name } * | 可选 缺省情况下，未设置本地用户的任何授权属性 对于 lan-access、portal 用户，仅授权属性 acl、idle-cut、user-profile 和 vlan 有效； 对于 ssh、terminal、web 用户，仅授权属性 level 有效； 对于 ftp 用户，仅授权属性 level 和 work-directory 有效； 对于 telnet 用户，仅授权属性 level 和 user-role 有效； 对于其它类型的本地用户，所有授权属性均无效
设置本地用户的生效时间 | validity-date time | 可选 缺省情况下，未设置本地用户的生效时间
设置本地用户的有效期 | expiration-date time | 可选 缺省情况下，未设置本地用户的有效期
设置本地用户所属的用户组 | group group-name | 可选 缺省情况下，本地用户属于系统默认用户组system

l 若使用 local-user password-display-mode cipher-force 命令强制用户密码密文显示并使用 save 命令保存当前配置，在重启设备后，即使恢复为 auto 方式，重启前配置为明文显示的密码仍然显示为密文，但重启后新配置的密码显示依然遵循当前配置的本地用户的密码显示方式。

l 本地用户的 access-limit 命令只在该用户采用了本地计费方法的情况下生效。

l 如果登录设备的认证方式（通过命令 authentication-mode 设置）为AAA（scheme），则用户登录系统后所能访问的命令级别由用户被授权的级别确定；如果配置登录设备的认证方式为不认证（none）或采用密码认证（password），则用户登录系统后所能访问的命令级别由用户界面所能访问的命令级别确定。对于SSH用户，使用公钥认证时，其所能使用的命令以用户界面上设置的级别为准。关于登录设备的认证方式与用户界面所能访问的命令级别的详细介绍请参见“基础配置指导”中的“登录交换机”。

l 除本地用户视图下可以配置授权User Profile之外，用户组视图及ISP域视图下也可以配置授权User Profile，各视图下的配置优先级顺序从高到低依次为：本地用户视图-->用户组视图-->ISP视图。关于User Profile的详细介绍请参见“安全配置指导”中的“User Profile”。

l 系统中只剩一个角色为安全日志管理员的本地用户时，该本地用户就不能被删除，而且也不能修改或删除该本地用户的安全日志管理员角色，除非再指定一个新的用户为安全日志管理员。

3. 配置用户组属性

为了简化本地用户的配置，增强本地用户的可管理性，引入了用户组的概念。用户组是一个本地用户属性的集合，某些需要集中管理的属性可在用户组中统一配置和管理，用户组内的所有本地用户都可以继承这些属性。目前，用户组中可以管理的内容为本地用户的授权属性。

每个新增的本地用户都默认属于一个系统自动创建的用户组system，且继承该组的所有属性。本地用户所属的用户组可以通过使用本地用户视图下的 group 命令来修改。

表1-9 配置用户组的属性

操作 | 命令 | 说明
进入系统视图 | system-view | -
创建用户组，并进入用户组视图 | user-group group-name | 必选
设置用户组的授权属性 | authorization-attribute { acl acl-number | callback-number callback-number | idle-cut minute | level level | user-profile profile-name | vlan vlan-id | work-directory directory-name } * | 可选 缺省情况下，未设置用户组的授权属性
设置用户组的来宾可选属性 | group-attribute allow-guest | 可选 缺省情况下，用户组不具有来宾可选属性，来宾用户管理员在Web界面上创建的来宾用户不能加入该用户组

4. 本地用户及本地用户组显示与维护

完成上述配置后，在任意视图下执行 display 命令可以显示配置后本地用户及本地用户组的运行情况，通过查看显示信息验证配置的效果。

表1-10 本地用户及本地用户组显示和维护

操作 | 命令
显示本地用户相关信息 | display local-user [ idle-cut { disable | enable } | service-type { ftp | lan-access | portal | ssh | telnet | terminal | web } | state { active | block } | user-name user-name | vlan vlan-id ] [ slot slot-number ] [ | { begin | exclude | include } regular-expression ]
显示本地用户组的相关信息 | display user-group [ group-name ] [ | { begin | exclude | include } regular-expression ]

1.3.2 配置RADIUS方案

RADIUS方案中定义了设备和RADIUS服务器之间进行信息交互所必须的一些参数。当创建一个新的RADIUS方案之后，需要对属于此方案的RADIUS服务器的IP地址、UDP端口号和报文共享密钥进行设置，这些服务器包括认证/授权和计费服务器，而每种服务器又有主服务器和从服务器的区别。每个RADIUS方案的属性包括：主服务器的IP地址、从服务器的IP地址、共享密钥以及RADIUS服务器类型等。

1. RADIUS配置任务简介

表1-11 RADIUS配置任务简介

配置任务 | 说明 | 详细配置
创建RADIUS方案 | 必选 | 1.3.2 2.
配置RADIUS认证/授权服务器 | 必选 | 1.3.2 3.
配置RADIUS计费服务器及相关参数 | 可选 | 1.3.2 4.
配置RADIUS报文的共享密钥 | 可选 | 1.3.2 5.
配置RADIUS方案所属的VPN | 可选 | 1.3.2 6.
配置发送给RADIUS服务器的用户名格式和数据统计单位 | 可选 | 1.3.2 7.
配置支持的RADIUS服务器的类型 | 可选 | 1.3.2 8.
配置发送RADIUS报文的最大尝试次数 | 可选 | 1.3.2 9.
配置RADIUS服务器的状态 | 可选 | 1.3.2 10.
配置发送RADIUS报文使用的源地址 | 可选 | 1.3.2 11.
配置发送RADIUS报文使用的备份源地址 | 可选 | 1.3.2 12.
配置RADIUS服务器的定时器 | 可选 | 1.3.2 13.
配置RADIUS的accounting-on功能 | 可选 | 1.3.2 14.
配置RADIUS服务器的安全策略服务器 | 可选 | 1.3.2 15.
配置RADIUS Attribute 25的CAR参数解析功能 | 可选 | 1.3.2 16.
配置RADIUS的Trap功能 | 可选 | 1.3.2 17.
使能RADIUS客户端的监听端口 | 可选 | 1.3.2 18.
RADIUS显示和维护 | 可选 | 1.3.2 19.

2. 创建RADIUS方案

在进行RADIUS的其它配置之前，必须先创建RADIUS方案并进入其视图。

表1-12 创建RADIUS方案

操作 | 命令 | 说明
进入系统视图 | system-view | -
创建RADIUS方案并进入其视图 | radius scheme radius-scheme-name | 必选 缺省情况下，未定义RADIUS方案

一个RADIUS方案可以同时被多个ISP域引用。

3. 配置RADIUS认证/授权服务器

通过在RADIUS方案中配置RADIUS认证/授权服务器，指定设备对用户进行RADIUS认证/授权时与哪些服务器进行通信。由于RADIUS服务器的授权信息是随认证应答报文发送给RADIUS客户端的，故不能也不需要单独配置RADIUS授权服务器。若在RADIUS方案中同时配置了主认证/授权服务器和从认证/授权服务器，则当设备判断主认证/授权服务器不可达时，将使用从认证/授权服务器进行认证、授权。建议在不需要备份的情况下，只配置主RADIUS认证/授权服务器即可。

表1-13 配置RADIUS认证/授权服务器

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入RADIUS方案视图 | radius scheme radius-scheme-name | -
配置主RADIUS认证/授权服务器 | primary authentication { ip-address | ipv6 ipv6-address } [ port-number | key [ cipher | simple ] key | vpn-instance vpn-instance-name ] * | 二者至少选其一 缺省情况下，未配置主认证/授权服务器和从认证/授权服务器
配置从RADIUS认证/授权服务器 | secondary authentication { ip-address | ipv6 ipv6-address } [ port-number | key [ cipher | simple ] key | vpn-instance vpn-instance-name ] *

l 在实际组网环境中，可以指定一台RADIUS服务器作为主认证/授权服务器，并指定多台（最多16台）RADIUS服务器作为从认证/授权服务器；也可以指定一台服务器既作为某个方案的主认证/授权服务器，又作为另一个方案的从认证/授权服务器。

l 在同一个方案中指定的主认证/授权服务器和从认证/授权服务器的IP地址不能相同，并且各从服务器的IP地址也不能相同，否则将提示配置不成功。

l 主服务器和从服务器的IP地址版本必须保持一致，并且各从服务器的IP地址版本也必须保持一致；认证/授权服务器和计费服务器的IP地址版本也必须保持一致。

4. 配置RADIUS计费服务器及相关参数

通过在RADIUS方案中配置RADIUS计费服务器，指定设备对用户进行RADIUS计费时与哪些服务器进行通信。若在RADIUS方案中同时配置了主计费服务器和从计费服务器，则当设备判断主计费服务器不可达时，将使用从计费服务器进行认证、授权。建议在不需要备份的情况下，只配置主RADIUS计费服务器即可。

用户上线之后，设备应该尽量与RADIUS服务器同步切断用户连接，通过在设备上配置发起实时计费请求的最大尝试次数，允许设备向RADIUS服务器发出的实时计费请求没有得到响应的次数超过指定的最大值时切断用户连接。

当用户请求断开连接或者设备强行切断用户连接的情况下，设备会向RADIUS计费服务器发送停止计费请求，通过在设备上使能停止计费报文缓存功能，将其缓存在本机上，然后发送直到RADIUS计费服务器产生响应，或者在发起停止计费请求的尝试次数达到指定的最大值后将其丢弃。

表1-14 配置RADIUS计费服务器及相关参数

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入RADIUS方案视图 | radius scheme radius-scheme-name | -
配置主RADIUS计费服务器 | primary accounting { ip-address | ipv6 ipv6-address } [ port-number | key [ cipher | simple ] key | vpn-instance vpn-instance-name ] * | 二者至少选其一 缺省情况下，未配置主/从计费服务器
配置从RADIUS计费服务器 | secondary accounting { ip-address | ipv6 ipv6-address } [ port-number | key [ cipher | simple ] key | vpn-instance vpn-instance-name ] *
设置允许发起实时计费请求的最大尝试次数 | retry realtime-accounting retry-times | 可选 缺省情况下，允许发起实时计费请求的最大尝试次数为5
使能停止计费报文缓存功能 | stop-accounting-buffer enable | 可选 缺省情况下，允许设备缓存没有得到响应的停止计费请求报文
设置允许发起停止计费请求的最大尝试次数 | retry stop-accounting retry-times | 可选 缺省情况下，允许发起停止计费请求的最大尝试次数为500

l 在实际组网环境中，可以指定一台RADIUS服务器作为主计费服务器，并指定多台（最多16台）RADIUS服务器作为从计费服务器；也可以指定一台服务器既作为某个方案的主计费服务器，又作为另一个方案的从计费服务器。

l 如果在线用户正在使用的计费服务器被删除，则设备将无法发送用户的实时计费请求和停止计费请求，且停止计费报文不会被缓存到本地。

l 主计费服务器和从计费服务器的IP地址不能相同，并且各从计费服务器的IP地址也不能相同，否则将提示配置不成功。

l 目前RADIUS不支持对FTP用户进行计费。

l 主服务器和从服务器的IP地址版本必须保持一致，并且各从服务器的IP地址版本也必须保持一致；计费服务器和认证/授权服务器的IP地址版本也必须保持一致。

5. 配置RADIUS报文的共享密钥

RADIUS客户端与RADIUS服务器使用MD5算法来加密RADIUS报文，并在共享密钥的参与下生成验证字来验证对方报文的合法性。只有在密钥一致的情况下，彼此才能接收对方发来的报文并作出响应。

由于设备优先采用配置RADIUS认证/授权/计费服务器时指定的报文共享密钥，因此，本配置中指定的报文共享密钥仅在配置RADIUS认证/授权/计费服务器时未指定相应密钥的情况下使用。

表1-15 配置RADIUS报文的共享密钥

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入RADIUS方案视图 | radius scheme radius-scheme-name | -
配置RADIUS认证/授权或计费报文的共享密钥 | key { accounting | authentication } key | 必选 缺省情况下，无密钥

必须保证设备上设置的共享密钥与RADIUS服务器上的完全一致。

6. 配置RADIUS方案所属的VPN

该配置用于为RADIUS方案下的所有认证/授权/计费服务器统一指定所属的VPN。RADIUS服务器所属的VPN也可以在配置RADIUS认证/授权/计费服务器的时候单独指定，且被优先使用。未单独指定所属VPN的服务器，则属于所在RADIUS方案所属的VPN。

表1-16 配置RADIUS方案所属的VPN

表1-17 操作 | 命令 | 说明
进入系统视图 | system-view | -
进入RADIUS方案视图 | radius scheme radius-scheme-name | -
配置RADIUS方案所属的VPN | vpn-instance vpn-instance-name | 必选

7. 配置发送给RADIUS服务器的用户名格式和数据统计单位

接入用户通常以“userid@isp-name”的格式命名，“@”后面的部分为ISP域名，设备通过该域名决定将用户归于哪个ISP域的。由于有些较早期的RADIUS服务器不能接受携带有ISP域名的用户名，因此就需要设备首先将用户名中携带的ISP域名去除后再传送给该类RADIUS服务器。通过设置发送给RADIUS服务器的用户名格式，就可以选择发送RADIUS服务器的用户名中是否要携带ISP域名。

设备通过周期性地发送计费更新报文，向RADIUS服务器报告在线用户的数据流量统计值，该值的单位可配，为保证RADIUS服务器计费的准确性，设备上设置的发送给RADIUS服务器的数据流或者数据包的单位应与RADUIS服务器上的流量统计单位保持一致。

表1-18 配置发送给RADIUS服务器的数据相关属性

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入RADIUS方案视图 | radius scheme radius-scheme-name | -
设置发送给RADIUS服务器的用户名格式 | user-name-format { keep-original | with-domain | without-domain } | 可选 缺省情况下，设备发送给RADIUS服务器的用户名携带有ISP域名
设置发送给RADIUS服务器的数据流或者数据包的单位 | data-flow-format { data { byte | giga-byte | kilo-byte | mega-byte } | packet { giga-packet | kilo-packet | mega-packet | one-packet } } * | 可选 缺省情况下，数据流的单位为 byte，数据包的单位为 one-packet

l 如果指定某个RADIUS方案不允许用户名中携带有ISP域名，那么请不要在两个乃至两个以上的ISP域中同时设置使用该RADIUS方案，否则，会出现虽然实际用户不同（在不同的ISP域中）、但RADIUS服务器认为用户相同（因为传送到它的用户名相同）的错误。

l 对于级别切换认证，命令 user-name-format keep-original 与 user-name-format without-domain 的执行效果一样，即发送给RADIUS服务器的用户名都不携带ISP域名。

8. 配置支持的RADIUS服务器的类型

通过指定设备支持RADIUS服务器类型，决定设备与RADIUS服务器之间可交互的RADIUS协议类型：

l 若指定 extended 类型的RADIUS服务器，则设备与RADIUS服务器将按照私有RADIUS协议的规程和报文格式进行交互。

l 若指定 standard 类型的RADIUS服务器，则设备与RADIUS服务器将按照标准RADIUS协议（RFC 2865/2866或更新）的规程和报文格式进行交互。

使用iMC服务器时，RADIUS服务器类型应选择 extended 类型。使用其它第三方RADIUS服务器时，RADIUS服务器类型可以选择 standard 类型或 extended 类型。

需要注意的是，若使用设备作为RADIUS服务器对login用户进行认证，则此处的RADIUS服务器类型必须指定为 standard。

表1-19 配置支持的RADIUS服务器的类型

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入RADIUS方案视图 | radius scheme radius-scheme-name | -
设置设备支持的RADIUS服务器类型 | server-type { extended | standard } | 可选 缺省情况下，设备支持的RADIUS服务器类型为 standard

当设备支持的RADIUS服务器类型被更改时，设备会将发送到RADIUS服务器的数据流的单位（data-flow-format）恢复为缺省配置。

9. 配置发送RADIUS报文的最大尝试次数

由于RADIUS协议采用UDP报文来承载数据，因此其通信过程是不可靠的。如果RADIUS服务器在应答超时定时器规定的时长内（由 timer response-timeout 命令配置）没有响应设备，则设备有必要向RADIUS服务器重传RADIUS请求报文。如果发送RADIUS请求报文的累计次数超过指定的最大尝试次数而RADIUS服务器仍旧没有响应，则设备将尝试与其它服务器通信，如果不存在状态为 active 的服务器，则认为本次认证或计费失败。关于RADIUS服务器状态的相关内容，请参见“1.3.2 10. 配置RADIUS服务器的状态”。

表1-20 配置发送RADIUS报文的最大尝试次数

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入RADIUS方案视图 | radius scheme radius-scheme-name | -
设置发送RADIUS报文的最大尝试次数 | retry retry-times | 可选 缺省情况下，发送RADIUS报文的最大尝试次数为3次

l 发送RADIUS报文的最大尝试次数与RADIUS服务器应答超时时间的乘积不能超过75秒。

l RADIUS服务器应答超时时间的配置请参考命令“13. 配置RADIUS服务器的定时器”。

10. 配置RADIUS服务器的状态

RADIUS方案中各服务器的状态（active、block）决定了设备向哪个服务器发送请求报文，以及设备在与当前服务器通信中断的情况下，如何转而与另外一个服务器进行交互。在实际组网环境中，可指定一个主RADIUS服务器和多个从RADIUS服务器，由从服务器作为主服务器的备份。通常情况下，设备上主从服务器的切换遵从以下原则：

l 当主服务器状态为 active 时，设备首先尝试与主服务器通信，若主服务器不可达，设备更改主服务器的状态为 block，并启动该服务器的 timer quiet 定时器，然后按照从服务器的配置先后顺序依次查找状态为 active 的从服务器进行认证或者计费。如果状态为 active 的从服务器也不可达，则将该从服务器的状态置为 block，同时启动该服务器的 timer quiet 定时器，并继续查找状态为 active 的从服务器。当服务器的 timer quiet 定时器超时，或者设备收到该服务器的认证/计费应答报文时，该服务器将恢复为 active 状态。在一次认证或计费过程中，如果设备在尝试与从服务器通信时，主服务器状态由 block 恢复为 active，则设备并不会立即恢复与主服务器的通信，而是继续查找从服务器。如果所有已配置的服务器都不可达，则认为本次认证或计费失败。

l 一个用户的计费流程开始之后，设备就不会再与其它的计费服务器通信，即该用户的实时计费报文和停止计费报文只会发往当前使用的计费服务器。如果当前使用的计费服务器被删除，则实时计费和停止计费报文都将无法发送。

l 如果在认证或计费过程中删除了当前正在使用的服务器，则设备在与该服务器通信超时后，将会立即从主服务器开始依次查找状态为 active 的服务器进行通信。

l 当主/从服务器的状态均为 block 时，设备仅与主服务器通信，若主服务器可达，则主服务器状态变为 active，否则保持不变。

l 只要存在状态为 active 的服务器，设备就仅与状态为 active 的服务器通信，即使该服务器不可达，设备也不会尝试与状态为 block 的服务器通信。

l 设备收到服务器的认证或计费应答报文后会将与报文源IP地址相同且状态为 block 的认证或计费服务器的状态更改为 active。

缺省情况下，设备将配置了IP地址的各RADIUS服务器的状态均置为 active，认为所有的服务器均处于正常工作状态，但有些情况下用户可能需要通过以下配置手工改变RADIUS服务器的当前状态。例如，已知某服务器故障，为避免设备认为其 active 而可能进行的无意义尝试，可暂时将该服务器状态手工置为 block 来满足此需求。

表1-21 配置RADIUS服务器的状态

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入RADIUS方案视图 | radius scheme radius-scheme-name | -
设置主RADIUS认证/授权服务器的状态 | state primary authentication { active | block } | 可选 缺省情况下，RADIUS方案中配置了IP地址的各RADIUS服务器的状态均为 active
设置主RADIUS计费服务器的状态 | state primary accounting { active | block }
设置从RADIUS认证/授权服务器的状态 | state secondary authentication [ ip ipv4-address | ipv6 ipv6-address ] { active | block }
设置从RADIUS计费服务器的状态 | state secondary accounting [ ip ipv4-address | ipv6 ipv6-address ] { active | block }

l state 命令设置的服务器状态属于动态信息，不能被保存在配置文件中，设备重启后，配置了IP地址的服务器状态恢复为缺省状态 active。

l 可通过执行 display radius scheme 命令查看各服务器的当前状态。

11. 配置发送RADIUS报文使用的源地址

RADIUS服务器上通过IP地址来标识接入设备，并根据收到的RADIUS报文的源IP地址是否与服务器所管理的接入设备的IP地址匹配，来决定是否处理来自该接入设备的认证或计费请求。若RADIUS服务器收到的RADIUS认证或计费报文的源地址在所管理的接入设备IP地址范围内，则才会进行后续的认证或计费处理，否则直接对其做丢弃处理。因此，为保证认证和计费报文可被服务器正常接收并处理，接入设备上发送RADIUS报文使用的源地址必须与RADIUS服务器上指定的接入设备的IP地址保持一致。

通常，该地址为接入设备上与RADIUS服务器路由可达的接口IP地址，但在一些特殊的组网环境中，例如接入设备与RADIUS服务器之间存在NAT（Network Address Translation，网络地址转换）设备时，需要将该地址指定为转换后的公网IP地址；在接入设备使用VRRP（Virtual Router Redundancy Protocol，虚拟路由冗余协议）进行双机热备应用时，可以将该地址指定为VRRP上行链路所在备份组的虚拟IP地址。

设备发送RADIUS报文时，首先判断当前所使用的RADIUS方案中是否通过 nas-ip 命令配置了发送RADIUS报文使用源地址，若配置存在，则使用该地址作为发送RADIUS报文使用的源地址，否则，根据当前使用的服务器所属的VPN查找系统视图下通过 radius nas-ip 命令配置的私网源地址，对于公网服务器则直接查找该命令配置的公网源地址。若系统视图下配置了相应的源地址，则使用该地址作为发送RADIUS报文使用的源地址，否则，使用通过路由查找到的报文出接口地址作为发送RADIUS报文使用的源地址。

此配置可以在系统视图和RADIUS方案视图下进行，系统视图下的配置将对所有RADIUS方案生效，RADIUS方案视图下的配置仅对本方案有效，并且具有高于前者的优先级。

表1-22 为所有RADIUS方案配置发送RADIUS报文使用的源地址

操作 | 命令 | 说明
进入系统视图 | system-view | -
设置设备发送RADIUS报文使用的源地址 | radius nas-ip { ip-address | ipv6 ipv6-address } [ vpn-instance vpn-instance-name ] | 必选 缺省情况下，未指定源地址，即以发送报文的接口地址作为源地址

表1-23 为RADIUS方案配置发送RADIUS报文使用的源地址

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入RADIUS方案视图 | radius scheme radius-scheme-name | -
设置设备发送RADIUS报文使用的源地址 | nas-ip { ip-address | ipv6 ipv6-address } | 必选 缺省情况下，未指定源地址，即以发送报文的接口地址作为源地址

12. 配置发送RADIUS报文使用的备份源地址

在双机热备的组网环境中，主设备通过与RADIUS服务器交互对Portal用户进行认证，并负责将生成的Portal在线用户数据通过备份链路同步给备用设备，而备用设备只接收和处理主设备发送的同步消息。

当主设备发生故障时，由于服务器不知道备用设备的源地址，因此不会主动向备用设备发送RADIUS报文。为解决这个问题，需要将备用设备发送RADIUS报文使用的源地址发给服务器，使得服务器也主动向备用设备发送RADIUS报文，备用设备发送RADIUS报文的源地址就是通过在主用设备上配置发送RADIUS报文使用的备份源地址告知服务器的。

设备选择发送RADIUS报文使用的备份源地址时，首先判断当前所使用的RADIUS方案中是否通过 nas-backup-ip 命令配置了发送RADIUS报文使用备份源地址，若配置存在，则将该地址作为对端设备发送RADIUS报文使用的源地址发给服务器，否则，根据当前使用的服务器所属的VPN查找系统视图下通过 radius nas-backup-ip 命令配置的私网备份源地址，对于公网服务器则直接查找该命令配置的公网备份源地址。若系统视图下配置了相应的备份源地址，则使用该地址作为备份源地址，否则，不向服务器发送备份源地址。

此配置可以在系统视图和RADIUS方案视图下进行，系统视图下的配置将对所有RADIUS方案生效，RADIUS方案视图下的配置仅对本方案有效，并且具有高于前者的优先级。

表1-24 为所有RADIUS方案配置发送RADIUS报文使用的备份源地址

操作 | 命令 | 说明
进入系统视图 | system-view | -
设置设备发送RADIUS报文使用的备份源地址 | radius nas-backup-ip ip-address [ vpn-instance vpn-instance-name ] | 必选 缺省情况下，未指定备份源地址

表1-25 为RADIUS方案配置发送RADIUS报文使用的备份源地址

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入RADIUS方案视图 | radius scheme radius-scheme-name | -
设置设备发送RADIUS报文使用的备份源地址 | nas-backup-ip ip-address | 必选 缺省情况下，未指定备份源地址

设备发送RADIUS报文使用的备份源地址仅在双机热备环境下生效，而且，此地址必须指定为对端发送RADIUS报文使用的源地址。

13. 配置RADIUS服务器的定时器

在与RADIUS服务器交互的过程中，设备上可启动的定时器包括以下几种：

l 服务器响应超时定时器（response-timeout）：如果在RADIUS请求报文（认证/授权请求或计费请求）传送出去一段时间后，设备还没有得到RADIUS服务器的响应，则有必要重传RADIUS请求报文，以保证用户确实能够得到RADIUS服务，这段时间被称为RADIUS服务器响应超时时长。

l 服务器恢复激活状态定时器（quiet）：当服务器不可达时，状态变为 block，设备会与其它状态为 active 的服务器交互，并开启超时定时器，在设定的一定时间间隔之后，将该服务器的状态恢复为 active。这段时间被称为RADIUS服务器恢复激活状态时长。

l 实时计费间隔定时器（realtime-accounting）：为了对用户实施实时计费，有必要定期向服务器发送实时计费更新报文，通过设置实时计费的时间间隔，设备会每隔设定的时间向RADIUS服务器发送一次在线用户的计费信息。

表1-26 设置RADIUS服务器的定时器

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入RADIUS方案视图 | radius scheme radius-scheme-name | -
设置RADIUS服务器响应超时时间 | timer response-timeout seconds | 可选 缺省情况下，RADIUS服务器响应超时定时器为3秒
设置服务器恢复激活状态的时间 | timer quiet minutes | 可选 缺省情况下，服务器恢复激活状态前需要等待5分钟
设置实时计费间隔 | timer realtime-accounting minutes | 可选 缺省情况下，实时计费间隔为12分钟

l 发送RADIUS报文的最大尝试次数的最大值与RADIUS服务器响应超时时间的乘积必须小于各接入类型的客户端连接超时时间，且不能超过75秒。比如对于语音类型的接入用户，因为其客户端连接超时时间为10秒，所以RADIUS服务器的响应超时时间与发送RADIUS请求报文的最大尝试次数的乘积必须小于10秒；对于Telnet接入类型的用户，其客户端连接超时时间为30秒，所以此乘积必须小于30秒。否则会造成计费停止报文不能被缓存，以及主备服务器不能切换的问题。具体接入客户端连接超时时间请参考相关接入手册。

l 要根据配置的从服务器数量合理设置发送RADIUS报文的最大尝试次数和RADIUS服务器响应超时时间，避免因为超时重传时间过长，在主服务器不可达时，出现设备在尝试与从服务器通信的过程中接入模块的客户端连接已超时的现象。但是，有些接入模块的客户端的连接超时时间较短，在配置的从服务器较多的情况下，即使将报文重传次数和RADIUS服务器响应超时时间设置的很小，也可能会出现上述客户端超时的现象，并导致初次认证或计费失败。这种情况下，由于设备会将不可达服务器的状态设置为 block，在下次认证或计费时设备就不会尝试与这些状态为 block 的服务器通信，一定程度上缩短了查找可达服务器的时间，因此用户再次尝试认证或计费就可以成功。

l 要根据配置的从服务器数量合理设置服务器恢复激活状态的时间。如果服务器恢复激活状态时间设置的过短，就会出现设备反复尝试与状态 active 但实际不可达的服务器通信而导致的认证或计费频繁失败的问题。

l RADIUS各类报文重传次数的最大值配置请参考命令 retry。

14. 配置RADIUS的accounting-on功能

使能了accounting-on功能后，设备会在重启后主动向RADIUS服务器发送accounting-on报文来告知自己已经重启，并要求RADIUS服务器强制通过本设备上线的用户下线。该功能可用于解决设备重启后，重启前的原在线用户因被RADIUS服务器认为仍然在线而短时间内无法再次登录的问题。若设备发送accounting-on报文后RADIUS服务器无响应，则会在按照一定的时间间隔（interval seconds）尝试重发几次（send send-times）。

表1-27 配置RADIUS的accounting-on功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入RADIUS方案视图 | radius scheme radius-scheme-name | -
配置accounting-on功能 | accounting-on enable [ interval seconds | send send-times ] * | 必选 缺省情况下，accounting-on功能处于关闭状态，accounting-on报文重发时间间隔为3秒，accounting-on报文重发次数为5次

accounting-on功能需要和H3C iMC网管系统配合使用。

15. 配置RADIUS安全策略服务器的IP地址

H3C EAD方案的核心是整合与联动，其中的安全策略服务器是EAD方案中的管理与控制中心，它作为一个软件的集合，兼具用户管理、安全策略管理、安全状态评估、安全联动控制以及安全事件审计等功能。

通过配置RADIUS安全策略服务器的IP地址，接入设备可以验证iMC服务器发送给设备的控制报文的合法性。当接入设备收到iMC服务器的控制报文时，若该控制报文的源IP地址不是指定的安全策略服务器的IP地址，则接入设备认为其非法而丢弃。若iMC的配置平台、认证服务器以及安全策略服务器的IP地址相同，则不需要在接入设备上配置RADIUS安全策略服务器的IP地址。

通常，若要支持完整的EAD功能，建议在接入设备上通过本配置将RADIUS安全策略服务器的IP地址分别指定为iMC安全策略服务器的IP地址和iMC配置平台的IP地址。

表1-28 设置RADIUS的安全策略服务器

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入RADIUS方案视图 | radius scheme radius-scheme-name | -
设置RADIUS安全策略服务器的IP地址 | security-policy-server ip-address | 必选 缺省情况下，未指定RADIUS安全策略服务器

16. 配置对RADIUS Attribute 25进行CAR参数解析

RADIUS的25号属性为class属性，该属性由RADIUS服务器下发给设备，但RFC中并未定义具体的用途，仅规定了设备需要将服务器下发的class属性再原封不动地携带在计费请求报文中发送给服务器即可，同时RFC并未要求设备必须对该属性进行解析。目前，某些RADIUS服务器利用class属性来对用户下发CAR参数，为了支持这种应用，可以通过本特性来控制设备是否将RADIUS 25号属性解析为CAR参数，解析出的CAR参数可被用来进行基于用户的流量监管控制。

表1-29 配置对RADIUS Attribute 25进行CAR参数解析

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入RADIUS方案视图 | radius scheme radius-scheme-name | -
开启RADIUS Attribute 25的CAR参数解析功能 | attribute 25 car | 必选 缺省情况下，RADIUS Attribute 25的CAR参数解析功能处于关闭状态

本功能是否需要配置与两个前提条件有关：一是设备是否支持CAR参数的下发，另外一个是RADIUS服务器是否支持利用class属性进行CAR参数的下发，具体情况请以设备和服务器的实际情况为准。

17. 配置RADIUS的Trap功能

通过配置RADIUS的Trap功能，控制NAS触发输出相应的Trap信息，具体包括以下两种：

l RADIUS服务器可达状态改变时输出Trap信息。具体包括两种情况：当NAS向RADIUS服务器发送计费或认证请求无响应的次数达到指定的发送RADIUS报文的最大尝试次数时，NAS认为服务器不可达，会置服务器状态为 block 并输出Trap信息；当NAS收到状态不可达的服务器发送的报文时，则认为服务器状态可达，会置服务器状态为 active 并输出Trap信息。

l 认证失败次数与认证请求次数的百分比超过一定阈值时输出Trap信息。该阈值目前只能够通过MIB方式进行配置，取值范围为1％～100％，缺省为30％。由于正常情况下，认证失败的比率较小，如果NAS触发输出了该类Trap信息，则管理员可能需要确认配置是否正确或设备与服务器的通信是否正常，并通过排查配置或网络问题来保证用户认证过程的正常运行。

表1-30 配置RADIUS的Trap功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
使能RADIUS的Trap功能 | radius trap { accounting-server-down | authentication-error-threshold | authentication-server-down } | 必选 缺省情况下，RADIUS的Trap功能处于关闭状态

18. 使能RADIUS客户端的监听端口

通过以下配置可以打开RADIUS客户端的RADIUS报文监听端口，使能后的端口才可以接收和发送RADIUS报文。在不需要使用RADIUS认证功能时，为避免收到恶意的RADIUS攻击报文，建议关闭设备上RADIUS客户端的监听端口。

表1-31 使能RADIUS客户端的监听端口

操作 | 命令 | 说明
进入系统视图 | system-view | -
使能RADIUS客户端的监听端口 | radius client enable | 可选 缺省情况下，监听端口处于使能状态

19. RADIUS显示和维护

完成上述配置后，在任意视图下执行 display 命令可以显示配置后RADIUS的运行情况，通过查看显示信息验证配置的效果。

在用户视图下，执行 reset 命令可以清除相关统计信息。

表1-32 RADIUS显示和维护

操作 | 命令
显示所有或指定RADIUS方案的配置信息 | display radius scheme [ radius-scheme-name ] [ slot slot-number ] [ | { begin | exclude | include } regular-expression ]
显示RADIUS报文的统计信息 | display radius statistics [ slot slot-number ] [ | { begin | exclude | include } regular-expression ]
显示缓存的没有得到响应的停止计费请求报文 | display stop-accounting-buffer { radius-scheme radius-server-name | session-id session-id | time-range start-time stop-time | user-name user-name } [ slot slot-number ] [ | { begin | exclude | include } regular-expression ]
清除RADIUS协议的统计信息 | reset radius statistics [ slot slot-number ]
清除缓存中的没有得到响应的停止计费请求报文 | reset stop-accounting-buffer { radius-scheme radius-server-name | session-id session-id | time-range start-time stop-time | user-name user-name } [ slot slot-number ]

1.3.3 配置HWTACACS方案

有用户在线时，不能删除HWTACACS方案，并且不能修改HWTACACS服务器IP地址。

1. HWTACACS配置任务简介

表1-33 HWTACACS配置任务简介

配置任务 | 说明 | 详细配置
创建HWTACACS方案 | 必选 | 1.3.3 2.
配置HWTACACS认证服务器 | 必选 | 1.3.3 3.
配置HWTACACS授权服务器 | 可选 | 1.3.3 4.
配置HWTACACS计费服务器 | 可选 | 1.3.3 5.
配置HWTACACS报文的共享密钥 | 必选 | 1.3.3 6.
配置HWTACACS方案所属的VPN | 可选 | 1.3.3 7.
配置发送给HWTACACS服务器的数据相关属性 | 可选 | 1.3.3 8.
配置发送HWTACACS报文使用的源地址 | 可选 | 1.3.3 9.
配置HWTACACS服务器的定时器 | 可选 | 1.3.3 10.
HWTACACS显示和维护 | 可选 | 1.3.3 11.

2. 创建HWTACACS方案

HWTACACS的配置是以HWTACACS方案为单位进行的。在进行HWTACACS的其它相关配置之前，必须先创建HWTACACS方案并进入其视图。

表1-34 创建HWTACACS方案

操作 | 命令 | 说明
进入系统视图 | system-view | -
创建HWTACACS方案并进入其视图 | hwtacacs scheme hwtacacs-scheme-name | 必选 缺省情况下，未定义HWTACACS方案

系统最多支持配置16个HWTACACS方案。只有未被引用的方案才可以被删除。

3. 配置HWTACACS认证服务器

通过在HWTACACS方案中配置HWTACACS认证服务器，指定设备对用户进行HWTACACS认证时与哪个服务器进行通信。若在HWTACACS方案中同时配置了主认证服务器和从认证服务器，则当设备判断主认证服务器不可达时，将使用从认证服务器进行认证。建议在不需要备份的情况下，只配置主HWTACACS认证服务器即可。

表1-35 配置HWTACACS认证服务器

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入HWTACACS方案视图 | hwtacacs scheme hwtacacs-scheme-name | -
配置主HWTACACS认证服务器 | primary authentication ip-address [ port-number | vpn-instance vpn-instance-name ] * | 二者至少选其一 缺省情况下，未配置主/从认证服务器
配置从HWTACACS认证服务器 | secondary authentication ip-address [ port-number | vpn-instance vpn-instance-name ] *

l 在实际组网环境中，可以指定一台HWTACACS服务器既作为某个方案的主认证服务器，又作为另一个方案的从认证服务器。

l 主认证服务器和从认证服务器的IP地址不能相同，否则将提示配置不成功。

l 只有当没有活跃的用于发送认证报文的TCP连接使用该认证服务器时，才允许删除该服务器。

4. 配置HWTACACS授权服务器

通过在HWTACACS方案中配置HWTACACS授权服务器，指定设备对用户进行HWTACACS授权时与哪个服务器进行通信。若在HWTACACS方案中同时配置了主授权服务器和从授权服务器，则当设备判断主授权服务器不可达时，将使用从授权服务器进行授权。建议在不需要备份的情况下，只配置主HWTACACS授权服务器即可。

表1-36 配置HWTACACS授权服务器

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入HWTACACS方案视图 | hwtacacs scheme hwtacacs-scheme-name | -
设置主HWTACACS授权服务器 | primary authorization ip-address [ port-number | vpn-instance vpn-instance-name ] * | 二者至少选其一 缺省情况下，未配置主/从授权服务器
设置从HWTACACS授权服务器 | secondary authorization ip-address [ port-number | vpn-instance vpn-instance-name ] *

l 在实际组网环境中，可以指定一台HWTACACS服务器既作为某个方案的主授权服务器，又作为另一个方案的从授权服务器。

l 主授权服务器和从授权服务器的IP地址不能相同，否则将提示配置不成功。

l 只有当没有活跃的用于发送授权报文的TCP连接使用该授权服务器时，才允许删除该服务器。

5. 配置HWTACACS计费服务器及相关参数

通过在HWTACACS方案中配置HWTACACS计费服务器，指定设备对用户进行HWTACACS计费时与哪个服务器进行通信。若在HWTACACS方案中同时配置了主计费服务器和从计费服务器，则当设备判断主计费服务器不可达时，将使用从计费服务器进行授权。建议在不需要备份的情况下，只配置主HWTACACS计费服务器即可。

当用户请求断开连接或者设备强行切断用户连接的情况下，设备会向HWTACACS计费服务器发送停止计费请求报文，通过在设备上使能停止计费报文缓存功能，将其缓存在本机上，然后发送直到RADIUS计费服务器产生响应，或者在发送停止计费请求报文的尝试次数达到指定的最大值后将其丢弃。

表1-37 配置HWTACACS计费服务器

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入HWTACACS方案视图 | hwtacacs scheme hwtacacs-scheme-name | -
设置HWTACACS主计费服务器 | primary accounting ip-address [ port-number | vpn-instance vpn-instance-name ] * | 二者至少选其一 缺省情况下，未配置主/从计费服务器
设置HWTACACS从计费服务器 | secondary accounting ip-address [ port-number | vpn-instance vpn-instance-name ] *
使能停止计费报文缓存功能 | stop-accounting-buffer enable | 可选 缺省情况下，使能停止计费报文缓存功能
设置允许发送停止计费请求报文的最大尝试次数 | retry stop-accounting retry-times | 可选 缺省情况下，允许发送停止计费请求报文的最大尝试次数为100

l 在实际组网环境中，可以指定一台HWTACACS服务器既作为某个方案的主计费服务器，又作为另一个方案的从计费服务器。

l 主计费服务器和从计费服务器的IP地址不能相同，否则将提示配置不成功。

l 只有当没有活跃的用于发送计费报文的TCP连接使用该计费服务器时，才允许删除该服务器。

l 目前HWTACACS不支持对FTP用户进行计费。

6. 配置HWTACACS报文的共享密钥

HWTACACS客户端与HWTACACS服务器使用MD5算法来加密HWTACACS报文，并在共享密钥的参与下生成验证字来验证对方报文的合法性。只有在密钥一致的情况下，彼此才能接收对方发来的报文并作出响应。

表1-38 配置HWTACACS报文的共享密钥

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入HWTACACS方案视图 | hwtacacs scheme hwtacacs-scheme-name | -
配置HWTACACS认证、授权、计费报文的共享密钥 | key { accounting | authentication | authorization } [ cipher | simple ] key | 必选 缺省情况下，无密钥

必须保证设备上设置的共享密钥与HWTACACS服务器上的完全一致。

7. 配置HWTACACS方案所属的VPN

该配置用于指定HWTACACS方案所属的VPN，即为HWTACACS方案下的所有认证/授权/计费服务器统一指定所属的VPN。HWTACACS服务器所属的VPN也可以在配置HWTACACS认证/授权/计费服务器的时候单独指定，且被优先使用。未单独指定所属VPN的服务器，则属于所在HWTACACS方案所属的VPN。

表1-39 配置HWTACACS方案所属的VPN

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入HWTACACS方案视图 | hwtacacs scheme hwtacacs-scheme-name | -
配置HWTACACS方案所属的VPN | vpn-instance vpn-instance-name | 必选

8. 配置发送给HWTACACS服务器的数据相关属性

接入用户通常以“userid@isp-name”的格式命名，“@”后面的部分为ISP域名，设备通过该域名决定将用户归于哪个ISP域的。由于有些HWTACACS服务器不能接受携带有ISP域名的用户名，因此就需要设备首先将用户名中携带的ISP域名去除后再传送给该类HWTACACS服务器。通过设置发送给HWTACACS服务器的用户名格式，就可以选择发送HWTACACS服务器的用户名中是否要携带ISP域名。

设备通过周期性地发送计费更新报文，向HWTACACS服务器报告在线用户的数据流量统计值，该值的单位可配，为保证HWTACACS服务器计费的准确性，设备上设置的发送给HWTACACS服务器的数据流或者数据包的单位应与HWTACACS服务器上的流量统计单位保持一致。

表1-40 配置发送给HWTACACS服务器的数据相关属性

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入HWTACACS方案视图 | hwtacacs scheme hwtacacs-scheme-name | -
设置发送给HWTACACS服务器的用户名格式 | user-name-format { keep-original | with-domain | without-domain } | 可选 缺省情况下，发往HWTACACS服务器的用户名带域名
设置发送给HWTACACS服务器的数据流或者数据包的单位 | data-flow-format { data { byte | giga-byte | kilo-byte | mega-byte } | packet { giga-packet | kilo-packet | mega-packet | one-packet } } * | 可选 缺省情况下，数据流的单位为 byte，数据包的单位为 one-packet

l 如果HWTACACS服务器不接受带域名的用户名，可以配置将用户名的域名去除后再传送给HWTACACS服务器。

l 对于级别切换认证，命令 user-name-format keep-original 与 user-name-format without-domain 的效果一样，发送给HWTACACS服务器的用户名都不携带ISP域名。

9. 配置发送HWTACACS报文使用的源地址

HWTACACS服务器上通过IP地址来标识接入设备，并根据收到的HWTACACS报文的源IP地址是否与服务器所管理的接入设备的IP地址匹配，来决定是否处理来自该接入设备的认证或计费请求。若HWTACACS服务器收到的HWTACACS认证或计费报文的源地址在所管理的接入设备IP地址范围内，则才会进行后续的认证或计费处理，否则直接对其做丢弃处理。因此，为保证认证和计费报文可被服务器正常接收并处理，接入设备上发送HWTACACS报文使用的源地址必须与HWTACACS服务器上指定的接入设备的IP地址保持一致。

通常，该地址为接入设备上与HWTACACS服务器路由可达的接口IP地址，但在一些特殊的组网环境中，例如接入设备与HWTACACS服务器之间存在NAT设备时，需要将该地址指定为转换后的公网IP地址；在接入设备使用VRRP进行双机热备应用时，可以将该地址指定为VRRP上行链路所在备份组的虚拟IP地址。

设备发送HWTACACS报文时，首先判断当前所使用的HWTACACS方案中是否通过 nas-ip 命令配置了发送HWTACACS报文使用源地址，若配置存在，则使用该地址作为发送HWTACACS报文使用的源地址，否则，根据当前使用的服务器所属的VPN查找系统视图下通过 hwtacacs nas-ip 命令配置的私网源地址，对于公网服务器则直接查找该命令配置的公网源地址。若系统视图下配置了相应的源地址，则使用该地址作为发送HWTACACS报文使用的源地址，否则，使用通过路由查找到的报文出接口地址作为发送HWTACACS报文使用的源地址。

此配置可以在系统视图和HWTACACS方案视图下进行，系统视图下的配置将对所有HWTACACS方案生效，HWTACACS方案视图下的配置仅对本方案有效，并且具有高于前者的优先级。

表1-41 为所有HWTACACS方案配置发送HWTACACS报文使用的源地址

操作 | 命令 | 说明
进入系统视图 | system-view | -
设置设备发送HWTACACS报文使用的源地址 | hwtacacs nas-ip ip-address [ vpn-instance vpn-instance-name ] | 必选 缺省情况下，未指定源地址，即以发送报文的接口地址作为源地址

表1-42 为HWTACACS方案配置发送HWTACACS报文使用的源地址

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入HWTACACS方案视图 | hwtacacs scheme hwtacacs-scheme-name | -
设置设备发送HWTACACS报文使用的源地址 | nas-ip ip-address | 必选 缺省情况下，未指定源地址，即以发送报文的接口地址作为源地址

10. 配置HWTACACS服务器的定时器

在与HWTACACS服务器交互的过程中，设备上可启动的定时器包括以下几种：

l 服务器响应超时定时器（response-timeout）：如果在HWTACACS请求报文（认证/授权请求或计费请求）传送出去一段时间后，设备还没有得到HWTACACS服务器的响应，则有必要重传HWTACACS请求报文，以保证用户确实能够得到HWTACACS服务，这段时间被称为HWTACACS服务器响应超时时长。

l 主服务器恢复激活状态定时器（quiet）：当主服务器不可达时，状态变为 block，设备会与状态为 active 的从服务器交互，并开启超时定时器，在设定的一定时间间隔之后，将主服务器的状态恢复为 active。这段时间被称为主服务器恢复激活状态时长。

l 实时计费间隔定时器（realtime-accounting）：为了对用户实施实时计费，有必要定期向服务器发送用户的实时计费信息，通过设置实时计费的时间间隔，设备会每隔设定的时间向HWTACACS服务器发送一次在线用户的计费信息。如果服务器对实时计费报文没有正常响应，设备也不会强制切断在线用户。

表1-43 配置HWTACACS服务器的定时器

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入HWTACACS方案视图 | hwtacacs scheme hwtacacs-scheme-name | -
设置HWTACACS服务器响应超时时间 | timer response-timeout seconds | 可选 缺省情况下，服务器响应超时时间为5秒
设置主服务器恢复激活状态的时间 | timer quiet minutes | 可选 缺省情况下，主服务器恢复激活状态前需要等待5分钟
设置实时计费的时间间隔 | timer realtime-accounting minutes | 可选 缺省情况下，实时计费间隔为12分钟

实时计费间隔的取值对设备和HWTACACS服务器的性能有一定的相关性要求，取值越小，对设备和HWTACACS服务器的性能要求越高。

11. HWTACACS显示和维护

完成上述配置后，在任意视图下执行 display 命令可以显示配置后HWTACACS的运行情况，通过查看显示信息验证配置的效果。

在用户视图下，执行 reset 命令可以清除相关统计信息。

表1-44 HWTACACS协议显示和维护

操作 | 命令
查看所有或指定HWTACACS方案的配置信息或统计信息 | display hwtacacs [ hwtacacs-server-name [ statistics ] ] [ slot slot-number ] [ | { begin | exclude | include } regular-expression ]
显示缓存的没有得到响应的停止计费请求报文 | display stop-accounting-buffer hwtacacs-scheme hwtacacs-scheme-name [ slot slot-number ] [ | { begin | exclude | include } regular-expression ]
清除HWTACACS协议的统计信息 | reset hwtacacs statistics { accounting | all | authentication | authorization } [ slot slot-number ]
清除缓存中的没有得到响应的停止计费请求报文 | reset stop-accounting-buffer hwtacacs-scheme hwtacacs-scheme-name [ slot slot-number ]


1.4 在ISP域中配置实现AAA的方法

通过在ISP域视图下引用预先配置的认证、授权、计费方案来实现对用户的认证、授权和计费。每个ISP域中都有缺省的认证、授权、计费方法，分别为本地认证、本地授权、本地计费，如果用户所属的ISP域下未应用任何认证、授权、计费方法，系统将使用缺省的认证、授权、计费方法。

1.4.1 配置准备

l 若采用本地认证方案，则请保证完成本地用户的配置。有关本地用户的配置请参见“ 1.3.1 配置本地用户 ”。

l 若采用远端认证、授权或计费方案，则请提前创建RADIUS方案、HWTACACS方案。有关RADIUS方案的配置请参见“ 1.3.2 配置RADIUS方案 ”。有关HWTACACS方案的配置请参见“ 1.3.3 配置HWTACACS方案 ”。

1.4.2 创建ISP域

在多ISP的应用环境中，不同ISP域的用户有可能接入同一台设备。而且各ISP用户的用户属性（例如用户名及密码构成、服务类型/权限等）有可能不相同，因此有必要通过设置ISP域把它们区分开，并为每个ISP域单独配置一套AAA方法及ISP域的相关属性。

对于设备来说，每个接入用户都属于一个ISP域。系统中最多可以配置16个ISP域，包括一个系统缺省存在的名称为system的ISP域。如果某个用户在登录时没有提供ISP域名，系统将把它归于缺省的ISP域。

表1-45 创建ISP域

操作 | 命令 | 说明
进入系统视图 | system-view | -
创建ISP域并进入其视图 | domain isp-name | 必选
返回系统视图 | quit | -
手工配置缺省的ISP域 | domain default enable isp-name | 可选 缺省情况下，系统缺省的ISP域为system

配置为缺省的ISP域不能够被删除，除非首先使用命令 undo domain default enable将其修改为非缺省ISP域。

1.4.3 配置ISP域的属性

一个ISP域中可配置以下属性，这些属性对于接入该域的所有用户均生效：

l 域的状态：通过域的状态（active、block）控制是否允许该域中的用户请求网络服务。

l 可容纳的接入用户数：通过该属性限制接入域的用户数，使属于当前域的用户获得可靠的性能保障。

l 闲置切断：用户上线后，设备会周期性检测用户的流量，若域内某用户在指定的闲置检测时间内产生的流量小于指定的数据流量，则会被强制下线。

l 自助服务器定位功能：通过该属性使得用户可以对自己的帐号和密码进行管理和控制。

l 缺省授权User Profile：若认证服务器未对认证成功的用户下发授权User Porfile，则系统会使用当前域中指定的User Porfile作为用户的授权User Porfile，用户的访问行为将受到该User Profile中预设配置的限制。

表1-46 配置ISP域的属性

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入ISP域视图 | domain isp-name | -
设置ISP域的状态 | state { active | block } | 可选 缺省情况下，当一个ISP域被创建以后，其状态为 active，即允许任何属于该域的用户请求网络服务
设置当前ISP域可容纳接入用户数的限制 | access-limit enable max-user-number | 可选 缺省情况下，不对当前ISP域可容纳的接入用户数作限制
设置用户闲置切断功能 | idle-cut enable minute [ flow ] | 可选 缺省情况下，用户闲置切断功能处于关闭状态 此命令目前只对lan-access、Portal服务类型的用户有效
设置自助服务器定位功能 | self-service-url enable url-string | 可选 缺省情况下，自助服务器定位功能处于关闭状态
配置当前ISP域的缺省授权User Profile | authorization-attribute user-profile profile-name | 可选 缺省情况下，当前ISP域无缺省授权User Profile

l 关于User Profile的详细介绍请参见“安全配置指导”中的“User Profile”。

l 自助服务器定位功能需要与支持自助服务的RADIUS服务器配合使用，如iMC。

1.4.4 配置ISP域的AAA认证方法

在AAA中，认证、授权和计费是三个独立的业务流程。认证的职责是完成各接入或服务请求的用户名／密码／用户信息的交互认证过程，它不会下发授权信息给请求用户，也不会触动计费的流程。

AAA支持以下认证方法：

l 不认证（none）：对用户非常信任，不对其进行合法性检查，一般情况下不采用这种方法。

l 本地认证（local）：认证过程在接入设备上完成，用户信息（包括用户名、密码和各种属性）配置在接入设备上。优点是速度快，可以降低运营成本；缺点是存储信息量受设备硬件条件限制。

l 远端认证（scheme）：认证过程在接入设备和远端的服务器之间完成，接入设备和远端服务器之间通过RADIUS、HWTACACS协议通信。优点是用户信息集中在服务器上统一管理，可实现大容量、高可靠性、支持多设备的集中式统一认证。当远端服务器无效时，可配置本地认证或者不认证作为备选认证方式完成认证。目前，仅lan-access用户的远端认证可支持不认证作为备选认证方法。

在AAA中，可以只使用认证，而不使用授权或计费。如果用户没有进行任何配置，则ISP域的缺省认证方法为 local。

配置前的准备工作：

(1) 如果用户使用RADIUS、HWTACACS认证，则需要先配置要引用的RADIUS、HWTACACS方案；如果使用 local 或 none 认证，则不需要配置方案。

(2) 确定要配置的接入方式或者服务类型。AAA可以对不同的接入方式和服务类型配置不同的认证方案，并且从配置上限制了用户接入时使用的认证协议。

(3) 确定是否为所有的接入方式或服务类型配置认证方法。

表1-47 配置ISP域的AAA认证方法

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入ISP域视图 | domain isp-name | -
为当前ISP域配置缺省的认证方法 | authentication default { hwtacacs-scheme hwtacacs-scheme-name [ local ] | local | none | radius-scheme radius-scheme-name [ local ] } | 可选 缺省情况下，当前ISP域的缺省认证方法为 local
为lan-access用户配置认证方法 | authentication lan-access { local | none | radius-scheme radius-scheme-name [ local | none ] } | 可选 缺省情况下，lan-access用户采用缺省的认证方法
为login用户配置认证方法 | authentication login { hwtacacs-scheme hwtacacs-scheme-name [ local ] | local | none | radius-scheme radius-scheme-name [ local ] } | 可选 缺省情况下，login用户采用缺省的认证方法
为Portal用户配置认证方法 | authentication portal { local | none | radius-scheme radius-scheme-name [ local ] } | 可选 缺省情况下，Portal用户采用缺省的认证方法
配置级别切换认证方法 | authentication super { hwtacacs-scheme hwtacacs-scheme-name | radius-scheme radius-scheme-name } | 可选 缺省情况下，级别切换认证采用缺省的认证方法

l authentication default 命令配置的认证方法不区分用户类型，即对所有类型的用户都起作用。此配置的优先级低于具体接入方式的配置。

l 当选择RADIUS认证方案时，AAA只接受RADIUS服务器的认证结果，RADIUS授权的信息虽然在认证成功回应的报文中携带，但在认证回应的处理流程中不会被处理。

l 如果配置AAA认证方法时指定了参数 radius-scheme radius-scheme-name local、hwtacacs-scheme hwtacacs-scheme-name local，则 local 为远端服务器没有正常响应后的备选认证方法。

l 如果 local 或者 none 作为第一认证方法，那么只能采用本地认证或者不进行认证，不能同时采用远程认证方法。

l 当使用HWTACACS方案进行级别切换认证时，系统默认使用登录用户名进行用户级别切换认证；当使用RADIUS方案进行级别切换认证时，系统使用RADIUS服务器上配置的“$enab+level$”形式的用户名替换登录用户名进行用户级别切换认证，其中 level 为用户希望切换到的级别。例如，用户希望切换到级别3，输入的用户名为“user1”，在要求携带域名认证的情况下，系统使用用户名“$enab3@domain_name$”进行用户级别切换认证，否则使用“$enab3$”进行用户级别切换认证。

1.4.5 配置ISP域的AAA授权方法

在AAA中，授权是一个和认证、计费同级别的独立流程，其职责是发送授权请求给所配置的授权服务器，授权通过后向用户下发授权信息。在ISP域的AAA配置中，授权方法为可选配置。

AAA支持以下授权方法：

l 不授权（none）：接入设备不请求授权信息，不对用户可以使用的操作以及用户允许使用的网络服务进行授权。此时，认证通过的Login用户（通过Console/aux/异步串口或者Telnet、FTP访问设备的用户）只有系统所给予的0级别的命令行访问权限，其中FTP用户可访问设备的根目录；认证通过的非Login用户，可直接访问网络。

l 本地授权（local）：授权过程在接入设备上进行，根据接入设备上为本地用户配置的相关属性进行授权。

l 远端授权（scheme）：授权过程在接入设备和远端服务器之间完成。RADIUS协议的认证和授权是绑定在一起的，不能单独使用RADIUS进行授权。RADIUS认证成功后，才能进行授权，RADIUS授权信息携带在认证回应报文中下发给用户。HWTACACS协议的授权与认证相分离，在认证成功后，HWTACACS授权信息通过授权报文进行交互。当远端服务器无效时，可配置本地授权或直接授权作为备选授权方式完成授权。

如果用户没有进行任何配置，则ISP域的缺省授权方法为 local。

配置前的准备工作：

(1) 如果用户要使用HWTACACS授权，则需要先配置要引用的HWTACACS方案；如果是RADIUS授权，只有在认证和授权方法中引用相同的RADIUS方案，授权才起作用。

(2) 确定要配置的接入方式或者服务类型，AAA可以按照不同的接入方式和服务类型进行AAA授权的配置，并且从配置上正确限制了接入所能使用的授权协议。

(3) 确定是否为所有的接入方式或服务类型配置授权方法。

表1-48 配置ISP域的AAA授权方法

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入ISP域视图 | domain isp-name | -
为当前ISP域配置缺省的授权方法 | authorization default { hwtacacs-scheme hwtacacs-scheme-name [ local ] | local | none | radius-scheme radius-scheme-name [ local ] } | 可选 缺省情况下，当前ISP域的缺省授权方法为 local
配置命令行授权方法 | authorization command { hwtacacs-scheme hwtacacs-scheme-name [ local | none ] | local | none } | 可选 缺省情况下，命令行授权采用缺省的授权方法
为lan-access用户配置授权方法 | authorization lan-access { local | none | radius-scheme radius-scheme-name [ local | none ] } | 可选 缺省情况下，lan-access用户采用缺省的授权方法
为login用户配置授权方法 | authorization login { hwtacacs-scheme hwtacacs-scheme-name [ local ] | local | none | radius-scheme radius-scheme-name [ local ] } | 可选 缺省情况下，login用户采用缺省的授权方法
为Portal用户配置授权方法 | authorization portal { local | none | radius-scheme radius-scheme-name [ local ] } | 可选 缺省情况下，Portal用户采用缺省的授权方法

l authorization default 命令配置的授权方法不区分用户类型，即对所有类型的用户都起作用。此配置的优先级低于具体接入方式的配置。

l 在一个ISP域中，只有RADIUS授权方法和RADIUS认证方法引用了相同的RADIUS方案，RADIUS授权才能生效。若RADIUS授权未生效或者RADIUS授权失败，则用户认证会失败。对于所有RADIUS授权失败的情况，RADIUS服务器返回给NAS的原因为服务器没有响应。

l 如果配置AAA授权方法时指定了参数 radius-scheme radius-scheme-name local、hwtacacs-scheme hwtacacs-scheme-name [ local | none ]，则 local 或 none 为远端服务器没有正常响应后的备选授权方法。

l local 或者 none 作为第一授权方法时，没有备选授权方式，只能采用本地授权或者直接授权。

1.4.6 配置ISP域的AAA计费方法

在AAA中，计费是一个和认证、授权同级别的独立流程，其职责为发送计费开始／更新／结束请求给所配置的计费服务器。计费不是必须使用的。在ISP域的AAA配置中，允许不配置计费方法。如果不配置计费方法，则ISP域的缺省计费方法为 local。

AAA支持以下计费方法：

l 不计费（none）：不对用户计费。

l 本地计费（local）：计费过程在接入设备上完成，实现了本地用户连接数的统计和限制，并没有实际的费用统计功能。本地计费仅用于配合本地用户视图下的 access-limit 命令来实现对本地用户连接数的限制功能。

l 远端计费（scheme）：计费过程在接入设备和远端的服务器之间完成。当远端服务器无效时，可配置本地计费或不计费作为备选计费方式完成计费。

配置前的准备工作：

(1) 如果用户要使用RADIUS或HWTACACS计费，则需要先配置要引用的RADIUS方案或HWTACACS方案；如果要使用 local 或 none 计费，则不需要配置方案。

(2) 确定要配置的接入方式或者服务类型，AAA可以支持为按照不同的接入方式和服务类型进行AAA计费的配置，并且从配置上正确限制了接入所能使用的计费协议。

(3) 确定是否为所有的接入方式或服务类型配置计费方法。

表1-49 配置ISP域的AAA计费方法

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入ISP域视图 | domain isp-name | -
打开计费可选开关 | accounting optional | 可选 缺省情况下，ISP域的计费可选开关处于关闭状态 对用户进行计费时，若发现没有可用的计费服务器或与计费服务器通信失败，在计费开关打开的情况下，用户可继续使用网络资源，否则用户会被强制下线
为当前ISP域配置缺省的计费方法 | accounting default { hwtacacs-scheme hwtacacs-scheme-name [ local ] | local | none | radius-scheme radius-scheme-name [ local ] } | 可选 缺省情况下，当前ISP域的缺省计费方法为 local
配置命令行计费方法 | accounting command hwtacacs-scheme hwtacacs-scheme-name | 可选 缺省情况下，命令行计费采用缺省的计费方法
为lan-access用户配置计费方法 | accounting lan-access { local | none | radius-scheme radius-scheme-name [ local | none ] } | 可选 缺省情况下，lan-access用户采用缺省的计费方法
为login用户配置计费方法 | accounting login { hwtacacs-scheme hwtacacs-scheme-name [ local ] | local | none | radius-scheme radius-scheme-name [ local ] } | 可选 缺省情况下，login用户采用缺省的计费方法
为Portal用户配置计费方法 | accounting portal { local | none | radius-scheme radius-scheme-name [ local ] } | 可选 缺省情况下，Portal用户采用缺省的计费方法

l 在计费可选开关打开的情况下，本地用户的连接数限制功能不生效。

l accounting default 命令配置的计费方法不区分用户类型，即对所有类型的用户都起作用。此配置的优先级低于具体接入方式的配置。

l 如果配置AAA计费方法时指定了参数 radius-scheme radius-scheme-name local 或 hwtacacs-scheme hwtacacs-scheme-name local，则 local 为远端服务器没有正常响应后的备选计费方法。

l 如果 local 或者 none 作为第一计费方法，那么只能采用本地认证或者不进行计费，不能同时采用远程计费方法。

l login类型的接入中FTP方式不支持计费流程。


1.5 配置强制切断用户连接

操作 | 命令 | 说明
进入系统视图 | system-view | -
强制切断指定AAA用户的连接 | cut connection { access-type { dot1x | mac-authentication | portal } | all | domain isp-name | interface interface-type interface-number | ip ip-address | mac mac-address | ucibindex ucib-index | user-name user-name | vlan vlan-id } [ slot slot-number ] | 必选 此命令目前只对lan-access、Portal服务类型的用户有效


1.6 配置NAS-ID与VLAN的绑定

用户的接入VLAN可标识用户的接入位置，而在某些应用环境中，网络运营商需要使用接入设备发送给RADIUS服务器的NAS-Identifier属性值来标识用户的接入位置，因此接入设备上需要建立用户接入VLAN与指定的NAS-ID之间的绑定关系。这样，当用户上线时，设备会将与用户接入VLAN匹配的NAS-ID填充在RADIUS请求报文中的NAS-Identifier属性中发送给RADIUS服务器。

表1-51 配置NAS-ID与VLAN的绑定

操作 | 命令 | 说明
进入系统视图 | system-view | -
创建NAS-ID Profile，并进入NAS-ID-Profile视图 | aaa nas-id profile profile-name | 必选 本NAS-ID Profile将被使能Portal的接口进行引用，具体应用请参见“安全配置指导”中的“Portal”
设置NAS-ID 与VLAN的绑定关系 | nas-id nas-identifier bind vlan vlan-id | 必选 缺省情况下，未设置任何绑定关系


1.7 配置双机热备模式下的设备ID

设备ID是设备工作在双机热备环境中的一个标志，为保证设备上的Portal业务备份可以正常工作，互为备份的两台设备上必须配置不同编号的设备ID。目前，设备ID的编号取值只能为1和2。关于Portal双机热备的详细介绍请参考“安全配置指导”中的“Portal”。

表1-52 配置双机热备模式下的设备ID

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置双机热备模式下的设备ID | nas device-id device-id | 必选 缺省情况下，设备工作在单机模式下，无设备ID

l 配置或改变设备ID后，设备上所有在线用户均会被强制下线。因此需慎重操作，并建议该配置成功执行后，保存配置并重启设备。

l 由于设备ID是设备运行在双机模式下的标志，因此单机运行的环境下不需要在设备上进行此配置。


1.8 配置设备作为RADIUS服务器

1.8.1 RADIUS服务器功能配置任务简介

表1-53 RADIUS服务器功能配置任务简介

配置任务 | 说明 | 详细配置
配置RADIUS用户 | 必选 | 1.8.2
指定RADIUS客户端 | 必选 | 1.8.3

1.8.2 配置RADIUS用户

所谓RADIUS用户，是指在支持RADIUS服务器功能的设备上设置的一组用户属性的集合。该集合以用户名为用户的唯一标识。

为使某个请求网络服务的用户可以通过RADIUS认证，需要在设备上的RADIUS用户数据库中添加相应的RADIUS用户。具体步骤是，创建一个RADIUS用户并进入RADIUS服务器用户视图，然后在该视图下配置相应的用户属性。可配置的用户属性包括：用户密码、授权属性、帐户有效期和用户描述信息。

表1-54 配置RADIUS用户

操作 | 命令 | 说明
进入系统视图 | system-view | -
创建RADIUS用户并进入RADIUS服务器用户视图 | radius-server user user-name | 必选 缺省情况下，不存在任何RADIUS用户
配置RADIUS用户密码 | password [ cipher | simple ] password | 可选 缺省情况下，未设置RADIUS用户的密码
配置RADIUS用户的授权属性 | authorization-attribute { acl acl-number | vlan vlan-id } * | 可选 缺省情况下，未配置任何授权信息
配置RADIUS用户的有效期 | expiration-date time | 可选 缺省情况下，未配置用户的有效期，设备不进行用户有效期的检查
配置RADIUS用户的描述信息 | description text | 可选 缺省情况下，未配置任何描述信息

通过命令 authorization-attribute 可以为RADIUS用户设置授权ACL以及授权VLAN属性。当用户通过认证后，RADIUS服务器将这些属性下发到RADIUS客户端（即NAS）上，NAS根据下发的VLAN/ACL控制用户的访问权限。若NAS上不存在对应的ACL，则ACL下发失败，该用户将被强制下线；若NAS上不存在对应的VLAN，则NAS首先创建VLAN，而后将连接用户的端口或用户加入授权VLAN。

1.8.3 指定RADIUS客户端

RADIUS服务器上使用IP地址来标识被管理的RADIUS客户端。RADIUS服务器只处理来自其管理范围内的客户端的RADIUS报文，对其它报文直接作丢弃处理。本配置用来指定要管理的RADIUS客户端的IP地址，以及与RADIUS客户端通信的共享密钥。

表1-55 指定RADIUS客户端

操作 | 命令 | 说明
进入系统视图 | system-view | -
指定RADIUS客户端 | radius-server client-ip ip-address [ key string ] | 必选 缺省情况下，未指定任何RADIUS客户端

l RADIUS服务器上指定的RADIUS客户端IP地址必须和RADIUS客户端上配置的发送RADIUS报文的源IP地址保持一致。

l RADIUS服务器上指定的共享密钥必须和RADIUS客户端上配置的与RADIUS服务器通信的共享密钥保持一致。


1.9 AAA显示和维护

完成上述配置后，在任意视图下执行 display 命令可以显示配置后AAA的运行情况，通过查看显示信息验证配置的效果。

表1-56 AAA显示和维护

操作 | 命令
显示所有或指定ISP域的配置信息 | display domain [ isp-name ] [ | { begin | exclude | include } regular-expression ]
显示AAA用户连接的相关信息 | display connection [ access-type { dot1x | mac-authentication | portal } | domain isp-name | interface interface-type interface-number | ip ip-address | mac mac-address | ucibindex ucib-index | user-name user-name | vlan vlan-id ] [ slot slot-number ] [ | { begin | exclude | include } regular-expression ]


1.10 AAA典型配置举例

1.10.1 Telnet用户的HWTACACS认证、授权、计费配置

1. 组网需求

如下图所示，Telnet用户主机与Switch直接相连，Switch与一台RADIUS服务器相连，需要实现HWTACACS服务器对登录Switch的Telnet用户进行认证、授权、计费。

l 由一台HWTACACS服务器担当认证、授权、计费服务器的职责，服务器IP地址为10.1.1.1/24。

l Switch与HWTACACS 服务器交互报文时的共享密钥为expert，向HWTACACS服务器发送的用户名中不带域名。

2. 组网图

图1-11 Telnet用户远端HWTACACS认证、授权和计费配置组网图

3. 配置步骤

# 配置各接口的IP地址（略）。

# 开启Switch的Telnet服务器功能。

<Switch> system-view

[Switch] telnet server enable

# 配置Telnet用户登录采用AAA认证方式。

[Switch] user-interface vty 0 4

[Switch-ui-vty0-4] authentication-mode scheme

[Switch-ui-vty0-4] quit

# 创建HWTACACS方案hwtac。

[Switch] hwtacacs scheme hwtac

# 配置主认证服务器的IP地址为10.1.1.1，认证端口号为49。

[Switch-hwtacacs-hwtac] primary authentication 10.1.1.1 49

# 配置主授权服务器的IP地址为10.1.1.1，认证端口号为49。

[Switch-hwtacacs-hwtac] primary authorization 10.1.1.1 49

# 配置主计费服务器的IP地址为10.1.1.1，认证端口号为49。

[Switch-hwtacacs-hwtac] primary accounting 10.1.1.1 49

# 配置与认证、授权、计费服务器交互报文时的共享密钥均为expert。

[Switch-hwtacacs-hwtac] key authentication simple expert

[Switch-hwtacacs-hwtac] key authorization simple expert

[Switch-hwtacacs-hwtac] key accounting simple expert

# 配置向HWTACACS服务器发送的用户名不携带域名。

[Switch-hwtacacs-hwtac] user-name-format without-domain

[Switch-hwtacacs-hwtac] quit

# 配置ISP域的AAA方法。

[Switch] domain bbb

[Switch-isp-bbb] authentication login hwtacacs-scheme hwtac

[Switch-isp-bbb] authorization login hwtacacs-scheme hwtac

[Switch-isp-bbb] accounting login hwtacacs-scheme hwtac

[Switch-isp-bbb] quit

4. 验证配置结果

用户向Switch发起Telnet连接，在Telnet客户端按照提示输入正确的用户名和密码后，可成功进入Switch的用户界面。在Switch上可以通过 display connection 命令查看到AAA用户的连接信息。

1.10.2 Telnet用户的local认证、HWTACACS授权、RADIUS计费配置

1. 组网需求

如下图所示，Telnet用户主机与Switch直接相连，Switch分别与一台RADIUS服务器和一台HWTACACS服务器相连，需要实现对登录Switch的Telnet用户进行local认证，HWTACACS授权和RADIUS计费。

l 一台HWTACACS服务器（担当授权服务器的职责）与Switch相连，服务器IP地址为10.1.1.2。Switch与授权HWTACACS服务器交互报文时的共享密钥为expert，发送给HWTACACS服务器的用户名中不带域名。

l 一台RADIUS服务器（担当计费服务器的职责）与Switch相连，服务器IP地址为10.1.1.1。Switch与计费RADIUS服务器交互报文时的共享密钥为expert。

2. 组网图

图1-12 Telnet用户local认证、HWTACACS授权和RADIUS计费配置组网图

3. 配置步骤

# 配置各接口的IP地址（略）。

# 开启Switch的Telnet服务器功能。

<Switch> system-view

[Switch] telnet server enable

# 配置Telnet用户登录采用AAA认证方式。

[Switch] user-interface vty 0 4

[Switch-ui-vty0-4] authentication-mode scheme

[Switch-ui-vty0-4] quit

# 配置HWTACACS方案。

[Switch] hwtacacs scheme hwtac

[Switch-hwtacacs-hwtac] primary authorization 10.1.1.2 49

[Switch-hwtacacs-hwtac] key authorization expert

[Switch-hwtacacs-hwtac] user-name-format without-domain

[Switch-hwtacacs-hwtac] quit

# 配置RADIUS方案。

[Switch] radius scheme rd

[Switch-radius-rd] primary accounting 10.1.1.1 1813

[Switch-radius-rd] key accounting expert

[Switch-radius-rd] server-type extended

[Switch-radius-rd] user-name-format without-domain

[Switch-radius-rd] quit

# 创建本地用户hello。

[Switch] local-user hello

[Switch-luser-hello] service-type telnet

[Switch-luser-hello] password simple hello

[Switch-luser-hello] quit

# 配置ISP域的AAA方法。

[Switch] domain bbb

[Switch-isp-bbb] authentication login local

[Switch-isp-bbb] authorization login hwtacacs-scheme hwtac

[Switch-isp-bbb] accounting login radius-scheme rd

[Switch-isp-bbb] quit

4. 验证配置结果

用户向Switch发起Telnet连接，在Telnet客户端按照提示输入用户名hello@bbb和正确的密码后，可成功进入Switch的用户界面。在Switch上可以通过 display connection 命令查看到AAA用户的连接信息。

1.10.3 SSH/Telnet用户的RADIUS认证和授权配置

Telnet用户与SSH用户通过RADIUS服务器进行认证/授权的配置方法类似，下面的描述以SSH用户的远端认证为例。

1. 组网需求

如 图1-13 所示，Telnet用户主机与Switch直接相连，Switch与一台RADIUS服务器相连，需要实现对登录Switch的Telnet用户进行RADIUS认证。

l 由一台iMC服务器担当认证/授权RADIUS服务器的职责，服务器IP地址为10.1.1.1/24。

l Switch与RADIUS服务器交互报文时使用的共享密钥为expert，向RADIUS服务器发送的用户名带域名。服务器根据用户名携带的域名来区分提供给用户的服务。

l SSH用户登录Switch时使用RADIUS服务器上配置的用户名hello@bbb以及密码进行认证，认证通过后的用户级别为3。

2. 组网图

图1-13 SSH用户RADIUS认证/授权配置组网图

3. 配置步骤

(1) 配置RADIUS server （iMC PLAT 5.0）

下面以iMC为例（使用iMC版本为：iMC PLAT 5.0(E0101)、iMC UAM 5.0(E0101)），说明RADIUS server的基本配置。

# 增加接入设备。

登录进入iMC管理平台，选择“业务”页签，单击导航树中的[接入业务/接入设备配置]菜单项，进入接入设备配置页面，在该页面中单击“增加”按钮，进入增加接入设备页面。

l 设置与Switch交互报文时使用的认证、计费共享密钥为“expert”；

l 设置认证及计费的端口号分别为“1812”和“1813”；

l 选择业务类型为“设备管理业务”；

l 选择接入设备类型为“H3C”；

l 选择或手工增加接入设备，添加IP地址为10.1.1.2的接入设备；

l 单击<确定>按钮完成操作。

添加的接入设备IP地址要与Switch发送RADIUS报文的源地址保持一致。缺省情况下，设备发送RADIUS报文的源地址是发送RADIUS报文的接口IP地址。

l 若设备上通过命令 nas-ip 或者 radius nas-ip 指定了发送RADIUS报文的源地址，则此处的接入设备IP地址就需要修改并与指定源地址保持一致。

l 若设备使用缺省的发送RADIUS报文的源地址，例如，本例中为接口Vlan-interface3的IP地址10.1.1.2，则此处接入设备IP地址就选择10.1.1.2。

图1-14 增加接入设备

# 增加设备管理用户。

选择“用户”页签，单击导航树中的[接入用户视图/设备管理用户]菜单项，进入设备管理用户列表页面，在该页面中单击<增加>按钮，进入增加设备管理页面。

l 输入用户名“hello@bbb”和密码；

l 选择服务类型为“SSH”；

l 设置EXEC权限级别为“3”，该值为SSH用户登录系统后的用户级别（缺省为0）；

l 增加所管理设备的IP地址，IP地址范围为“10.1.1.0～10.1.1.255”；

l 单击<确定>按钮完成操作。

图1-15 增加设备管理用户

(2) 配置Switch

# 配置VLAN接口2的IP地址，SSH客户端将通过该地址连接SSH服务器。

<Switch> system-view

[Switch] interface vlan-interface 2

[Switch-Vlan-interface2] ip address 192.168.1.70 255.255.255.0

[Switch-Vlan-interface2] quit

# 配置VLAN接口3的IP地址，Switch将通过该地址与服务器通信。

[Switch] interface vlan-interface 3

[Switch-Vlan-interface3] ip address 10.1.1.2 255.255.255.0

[Switch-Vlan-interface3] quit

# 生成RSA及DSA密钥对，并启动SSH服务器。

[Switch] public-key local create rsa

[Switch] public-key local create dsa

[Switch] ssh server enable

# 配置SSH用户登录采用AAA认证方式。

[Switch] user-interface vty 0 4

[Switch-ui-vty0-4] authentication-mode scheme

# 配置用户远程登录Switch的协议为SSH。

[Switch-ui-vty0-4] protocol inbound ssh

[Switch-ui-vty0-4] quit

# 创建RADIUS方案rad。

[Switch] radius scheme rad

# 配置主认证服务器的IP地址为10.1.1.1，认证端口号为1812。

[Switch-radius-rad] primary authentication 10.1.1.1 1812

# 配置与认证服务器交互报文时的共享密钥为expert。

[Switch-radius-rad] key authentication expert

# 配置向RADIUS服务器发送的用户名携带域名。

[Switch-radius-rad] user-name-format with-domain

# 配置RADIUS服务器的服务类型。使用iMC服务器时，RADIUS服务器类型应选择 extended。

[Switch-radius-rad] server-type extended

[Switch-radius-rad] quit

# 配置ISP域的AAA方法。

[Switch] domain bbb

[Switch-isp-bbb] authentication login radius-scheme rad

[Switch-isp-bbb] authorization login radius-scheme rad

[Switch-isp-bbb] quit

4. 验证配置结果

用户向Switch发起SSH连接，在SSH客户端按照提示输入用户名hello@bbb及正确的密码后，可成功进入Switch的用户界面，并可以使用级别为0、1、2、3的命令。

# 可以通过如下命令查看到AAA用户的连接信息。

[Switch] display connection

Index=1 ,Username=hello@bbb

IP=192.168.1.58

IPv6=N/A

Total 1 connection(s) matched.

1.10.4 Portal用户的RADIUS认证、授权和计费配置

1. 组网需求

l 用户主机与接入设备Switch直接相连，采用直接方式的Portal认证。用户通过手工配置或DHCP获取的一个公网IP地址进行认证，在通过Portal认证前，只能访问Portal服务器；在通过Portal认证后，可以使用此IP地址访问非受限的互联网资源。

l 使用RADIUS服务器作为认证/计费服务器。（本例中，RADIUS服务器和Portal服务器位于同一台服务器主机上）；

l Switch与RADIUS服务器交互报文时使用的共享密钥为expert，认证/授权、计费的端口号分别为1812和1813，向RADIUS服务器发送的用户名携带域名。

l 对Portal用户进行包月方式计费，费用为120元/月，以月为周期对用户上网服务的使用量按时长进行统计，允许每月最大上网使用量为120个小时。

2. 组网图

图1-16 Portal用户RADIUS认证、授权和计费配置组网图

3. 配置步骤

按照组网图配置设备各接口的IP地址，保证启动Portal之前各主机、服务器和设备之间的路由可达。

(1) 配置RADIUS server（iMC PLAT 5.0）

下面以iMC为例（使用iMC版本为：iMC PLAT 5.0(E0101)、iMC UAM 5.0(E0101)、iMC CAMS 5.0(E0101)），说明RADIUS server和Portal server的基本配置。

# 增加接入设备。

登录进入iMC管理平台，选择“业务”页签，单击导航树中的[接入业务/接入设备配置]菜单项，进入接入设备配置页面，在该页面中单击“增加”按钮，进入增加接入设备页面。

l 设置与Router交互报文时的认证、计费共享密钥为“expert”；

l 设置认证及计费的端口号分别为“1812”和“1813”；

l 选择业务类型为“LAN接入业务”；

l 选择接入设备类型为“H3C”；

l 选择或手工增加接入设备，添加IP地址为10.1.1.2的接入设备；

l 其它参数采用缺省值，并单击<确定>按钮完成操作。

添加的接入设备IP地址要与Router发送RADIUS报文的源地址保持一致。缺省情况下，设备发送RADIUS报文的源地址是发送RADIUS报文的接口IP地址。

l 若设备上通过命令 nas-ip 或者 radius nas-ip 指定了发送RADIUS报文的源地址，则此处的接入设备IP地址就需要修改并与指定源地址保持一致。

l 若设备使用缺省的发送RADIUS报文的源地址，例如，本例中为接口Ethernet1/2的IP地址10.1.1.2，则此处接入设备IP地址就选择10.1.1.2。

图1-17 增加接入设备

# 增加计费策略。

选择“业务”页签，单击导航树中的[计费业务/计费策略管理]菜单项，进入计费策略管理页面，在该页面中单击<增加>按钮，进入计费策略配置页面。

l 输入计费策略名称“UserAcct”；

l 选择计费策略模板为“包月类型计费”；

l 设置包月基本信息：计费方式为“按时长”、计费周期为“月”、周期内固定费用为“120元”；

l 设置包月使用量限制：允许每月最大上网使用量为120个小时。

l 其它参数采用缺省值，并单击<确定>按钮完成操作。

图1-18 增加计费策略

# 增加服务配置。

选择“业务”页签，单击导航树中的[接入业务/服务配置管理]菜单项，进入服务器配置管理页面，在该页面中单击<增加>按钮，进入增加服务配置页面。

l 输入服务名为“Portal-auth/acct”、服务后缀为“dm1”，此服务后缀为Portal用户使用的认证域。指定服务后缀的情况下，RADIUS方案中必须指定向服务器发送的用户名中携带域名；

l 选择计费策略为“UserAcct”；

l 本配置页面中还有其它服务配置选项，请根据实际情况选择配置；

l 单击<确定>按钮完成操作。

图1-19 增加服务配置

# 增加接入用户。

选择“用户”页签，单击导航树中的[接入用户视图/所有接入用户]菜单项，进入接入用户列表页面，在该页面中单击<增加>按钮，进入增加接入用户页面。

l 选择或者手工增加用户姓名为“hello”；

l 输入帐号名“portal”和密码；

l 选择该用户所关联的接入服务为“Portal-auth/acct”；

l 本配置页面中还有其它服务配置选项，请根据实际情况选择配置；

l 单击<确定>按钮完成操作。

图1-20 增加接入用户

(2) 配置Portal server（iMC PLAT 5.0）

# 配置Portal服务器。

登录进入iMC管理平台，选择“业务”页签，单击导航树中的[Portal服务器管理/服务器配置]菜单项，进入服务器配置页面。

l 输入Portal认证主页地址，形式为http://ip:port/portal，其中ip和port在安装iMC UAM的时候确定，port一般使用缺省值8080即可；

l 其它参数采用缺省值，并单击<确定>按钮完成操作。

图1-21 Portal服务器配置页面

# 配置IP地址组。

单击导航树中的[Portal服务器管理/IP地址组配置]菜单项，进入Portal IP地址组配置页面，在该页面中单击<增加>按钮，进入增加IP地址组配置页面。

l 输入IP地址组名为“Portal_user”；

l 输入起始地址为“192.168.1.1”、终止地址为“192.168.1.255”。用户主机IP地址必须包含在该IP地址组范围内；

l 选择类型为“普通”；

l 单击<确定>按钮完成操作。

图1-22 增加IP地址组配置页面

# 增加Portal设备。

单击导航树中的[Portal服务器管理/设备配置]菜单项，进入Portal设备配置页面，在该页面中单击<增加>按钮，进入增加设备信息配置页面。

l 输入设备名为“NAS”；

l 输入IP地址为“192.168.1.70”，该地址为与接入用户相连的设备接口IP地址；

l 输入密钥为“portal”，该密钥与接入设备Router上的配置保持一致；

l 选择是否进行二次地址分配，本例中为直接认证，因此为“否”；

l 其它参数采用缺省值，并单击<确定>按钮完成操作。

图1-23 增加设备信息配置页面

# Portal设备关联IP地址组。

在Portal设备配置页面中的设备信息列表中，点击NAS设备的<端口组信息管理>链接，进入端口组信息配置页面。

图1-24 设备信息列表

在端口组信息配置页面中点击<增加>按钮，进入增加端口组信息配置页面。

l 输入端口组名为“group”；

l 选择IP地址组为“Portal_user”，用户接入网络时使用的IP地址必须属于所选的IP地址组；

l 其它参数采用缺省值，并单击<确定>按钮完成操作。

图1-25 增加端口组信息配置页面

# 最后单击导航树中的[业务参数配置/系统配置手工生效]菜单项，使以上Portal服务器配置生效。

(3) 配置Switch

l 配置RADIUS方案

# 创建名字为rs1的RADIUS方案并进入该方案视图。

<Switch> system-view

[Switch] radius scheme rs1

# 配置RADIUS方案的服务器类型。使用iMC服务器时，RADIUS服务器类型应选择 extended。

[Switch-radius-rs1] server-type extended

# 配置RADIUS方案的主认证和主计费服务器及其通信密钥。

[Switch-radius-rs1] primary authentication 10.1.1.1

[Switch-radius-rs1] primary accounting 10.1.1.1

[Switch-radius-rs1] key authentication expert

[Switch-radius-rs1] key accounting expert

# 配置发送给RADIUS服务器的用户名携带ISP域名。

[Switch-radius-rs1] user-name-format with-domain

[Switch-radius-rs1] quit

l 配置认证域

# 创建并进入名字为dm1的ISP域。

[Switch] domain dm1

# 配置ISP域的RADIUS方案rs1。

[Switch-isp-dm1] authentication portal radius-scheme rs1

[Switch-isp-dm1] authorization portal radius-scheme rs1

[Switch-isp-dm1] accounting portal radius-scheme rs1

[Switch-isp-dm1] quit

# 配置系统缺省的ISP域dm1，所有接入用户共用此缺省域的认证和计费方式。若用户登录时输入的用户名未携带ISP域名，则使用缺省域下的认证方法。

[Switch] domain default enable dm1

l 配置Portal认证

# 配置Portal服务器：名称为newpt，IP地址为10.1.1.1，密钥为portal，端口为50100，URL为http://10.1.1.1:8080/portal。

[Switch] portal server newpt ip 10.1.1.1 key portal port 50100 url http://10.1.1.1:8080/portal

# 在与用户Host相连的接口上使能Portal认证。

[Switch] interface vlan-interface 2

[Switch–Vlan-interface2] portal server newpt method direct

[Switch–Vlan-interface2] quit

4. 验证配置结果

用户既可以使用H3C的iNode客户端，也可以通过网页方式进行Portal认证。用户在通过认证前，只能访问认证页面http://10.1.1.1:8080/portal，且发起的Web访问请求均被重定向到该认证页面，通过认证后，即可访问非受限的互联网资源。

认证通过后，可通过执行以下显示命令查看Switch上生成的Portal在线用户信息。

[Switch] display portal user interface vlan-interface 2

Index:19

State:ONLINE

SubState:NONE

ACL:NONE

Work-mode:stand-alone

MAC IP Vlan Interface

---------------------------------------------------------------------

0015-e9a6-7cfe 192.168.1.58 2 Vlan-interface2

Total 1 user(s) matched, 1 listed.

# 可以通过如下命令查看到AAA用户的连接信息。

[Switch] display connection

Index=20 ,Username=portal@dm1

IP=192.168.1.58

IPv6=N/A

MAC=00-15-E9-A6-7C-FE

Total 1 connection(s) matched.

1.10.5 802.1X用户的RADIUS认证、授权和计费配置

1. 组网需求

在 图1-26 所示的组网环境中，需要实现使用RADIUS服务器对通过Switch接入的802.1X用户进行认证、授权和计费。

l 在接入端口Ethernet1/0/1上对接入用户进行802.1X认证，并采用基于MAC地址的接入控制方式，即该端口下的所有用户都需要单独认证；

l Switch与RADIUS服务器交互报文时使用的共享密钥为expert，认证/授权、计费的端口号分别为1812和1813，向RADIUS服务器发送的用户名携带域名；

l 用户认证时使用的用户名为dot1x@bbb。

l 用户认证成功后，认证服务器授权下发VLAN 4，将用户所在端口加入该VLAN，允许用户访问该VLAN中的网络资源。

l 对802.1X用户进行包月方式计费，费用为120元/月，以月为周期对用户上网服务的使用量按时长进行统计，允许每月最大上网使用量为120个小时。

2. 组网图

图1-26 802.1X用户RADIUS认证、授权和计费配置组网图

3. 配置步骤

请按照组网图完成端口和VLAN的配置，并保证在用户通过认证后能够自动或者手动更新IP地址与授权VLAN中的资源互通。

(1) 配置RADIUS server（iMC PLAT 5.0）

下面以iMC为例（使用iMC版本为：iMC PLAT 5.0(E0101)、iMC UAM 5.0(E0101)、iMC CAMS 5.0(E0101)），说明RADIUS server的基本配置。

# 增加接入设备。

登录进入iMC管理平台，选择“业务”页签，单击导航树中的[接入业务/接入设备配置]菜单项，进入接入设备配置页面，在该页面中单击“增加”按钮，进入增加接入设备页面。

l 设置与Switch交互报文时的认证、计费共享密钥为“expert”；

l 设置认证及计费的端口号分别为“1812”和“1813”；

l 选择业务类型为“LAN接入业务”；

l 选择接入设备类型为“H3C”；

l 选择或手工增加接入设备，添加IP地址为10.1.1.2的接入设备；

l 其它参数采用缺省值，并单击<确定>按钮完成操作。

添加的接入设备IP地址要与Switch发送RADIUS报文的源地址保持一致。缺省情况下，设备发送RADIUS报文的源地址是发送RADIUS报文的接口IP地址。

l 若设备使用缺省的发送RADIUS报文的源地址，例如，本例中为接口Vlan-interface3的IP地址10.1.1.2，则此处接入设备IP地址就选择10.1.1.2。

l 若设备上通过命令 nas-ip 或者 radius nas-ip 指定了发送RADIUS报文的源地址，则此处的接入设备IP地址就需要修改并与指定源地址保持一致。

图1-27 增加接入设备

# 增加计费策略。

选择“业务”页签，单击导航树中的[计费业务/计费策略管理]菜单项，进入计费策略管理页面，在该页面中单击<增加>按钮，进入计费策略配置页面。

l 输入计费策略名称“UserAcct”；

l 选择计费策略模板为“包月类型计费”；

l 设置包月基本信息：计费方式为“按时长”、计费周期为“月”、周期内固定费用为“120元”；

l 设置包月使用量限制：允许每月最大上网使用量为120个小时。

l 其它参数采用缺省值，并单击<确定>按钮完成操作。

图1-28 增加计费策略

# 增加服务配置。

选择“业务”页签，单击导航树中的[接入业务/服务配置管理]菜单项，进入服务器配置管理页面，在该页面中单击<增加>按钮，进入增加服务配置页面。

l 输入服务名为“Dot1x auth”、服务后缀为“bbb”，此服务后缀为802.1X用户使用的认证域。指定服务后缀的情况下，RADIUS方案中必须指定向服务器发送的用户名中携带域名；

l 选择计费策略为“UserAcct”；

l 配置授权下发的VLAN ID为“4”；

l 本配置页面中还有其它服务配置选项，请根据实际情况选择配置；

l 单击<确定>按钮完成操作。

图1-29 增加服务配置

# 增加接入用户。

选择“用户”页签，单击导航树中的[接入用户视图/所有接入用户]菜单项，进入接入用户列表页面，在该页面中单击<增加>按钮，进入增加接入用户页面。

l 选择或者手工增加用户姓名为“test”；

l 输入帐号名“dot1x”和密码；

l 选择该用户所关联的接入服务为“Dot1x auth”；

l 本配置页面中还有其它服务配置选项，请根据实际情况选择配置；

l 单击<确定>按钮完成操作。

图1-30 增加接入用户

(2) 配置Switch

l 配置RADIUS方案

# 创建名字为rad的RADIUS方案并进入该方案视图。

<Switch> system-view

[Switch] radius scheme rad

# 配置RADIUS方案的服务器类型。使用iMC服务器时，RADIUS服务器类型应选择 extended。

[Switch-radius-rad] server-type extended

# 配置RADIUS方案的主认证和主计费服务器及其通信密钥。

[Switch-radius-rad] primary authentication 10.1.1.1

[Switch-radius-rad] primary accounting 10.1.1.1

[Switch-radius-rad] key authentication expert

[Switch-radius-rad] key accounting expert

# 配置发送给RADIUS服务器的用户名携带ISP域名。

[Switch-radius-rad] user-name-format with-domain

[Switch-radius-rad] quit

l 配置认证域

# 创建并进入名字为bbb的ISP域。

[Switch] domain bbb

# 配置ISP域的RADIUS方案rad。

[Switch-isp-bbb] authentication lan-access radius-scheme rad

[Switch-isp-bbb] authorization lan-access radius-scheme rad

[Switch-isp-bbb] accounting lan-access radius-scheme rad

[Switch-isp-bbb] quit

# 配置系统缺省的ISP域bbb，所有接入用户共用此缺省域的认证和计费方式。若用户登录时输入的用户名未携带ISP域名，则使用缺省域下的认证方法。

[Switch] domain default enable bbb

l 配置802.1X认证

# 开启全局802.1X认证。

[Switch] dot1x

# 开启端口Ethernet1/0/1的802.1X认证。

[Switch] interface ethernet 1/0/1

[Switch-Ethernet1/0/1] dot1x

[Switch-Ethernet1/0/1] quit

# 设置接入控制方式（该命令可以不配置，因为端口的接入控制在缺省情况下就是基于MAC地址的）。

[Switch] dot1x port-method macbased interface ethernet 1/0/1

4. 验证配置结果

l 若使用Windows XP的802.1X客户端，则需要正确设置此连接的网络属性：在网络属性的“验证”页签中，确保选中“启用此网络的 IEEE 802.1x 验证”，并选择要用于此连接的EAP认证类型为“MD5-质询”。

l 若使用iNode 802.1X客户端，则无需启用任何高级认证选项。

对于使用iNode 802.1X客户端的用户，在客户端的用户属性中输入正确的用户名“dot1x@bbb”和密码后，通过主动发起连接可成功通过认证；对于使用Windows XP 802.1X客户端的用户，在系统自动弹出的认证对话框中输入正确的用户名“dot1x@bbb”和密码后，可成功通过认证。认证通过后，服务器向该用户所在端口授权下发了VLAN 4。

# 可以通过如下命令查看到AAA用户的连接信息。

[Switch] display connection

Slot: 1

Index=22 , Username=dot1x@bbb

IP=192.168.1.58

IPv6=N/A

MAC=0015-e9a6-7cfe

Total 1 connection(s) matched on slot 1.

Total 1 connection(s) matched.

# 可以通过如下命令查看该连接的详细信息，其中授权下发VLAN为VLAN 4。

[Switch] display connection ucibindex 22

Slot: 1

Index=22 , Username=dot1x@bbb

IP=192.168.1.58

IPv6=N/A

MAC=0015-e9a6-7cfe

Access=8021X ,AuthMethod=CHAP

Port Type=Ethernet,Port Name=Ethernet1/0/1

Initial VLAN=2, Authorization VLAN=4

ACL Group=Disable

User Profile=N/A

CAR=Disable

Priority=Disable

Start=2011-04-26 19:41:12 ,Current=2011-04-26 19:41:25 ,Online=00h00m14s

Total 1 connection matched.

1.10.6 Telnet用户的HWTACACS级别切换认证配置

1. 组网需求

如 图1-31 所示，Telnet用户主机与Switch直接相连，Switch与一台HWTACACS服务器相连，需要配置Switch实现对登录Switch的Telnet用户进行用户级别切换认证。具体要求如下：

Telnet用户登录Switch时进行本地认证，登录后所能访问的命令级别为0级，当进行由低到高的用户级别切换时，首先使用HWTACACS认证，若AAA配置无效或者HWTACACS服务器没有响应则转为 local 认证。

2. 组网图

图1-31 Telnet用户远端HWTACACS用户级别切换认证配置组网图

3. 配置思路

在交换机上的配置思路如下：

(1) 配置Telnet用户登录采用AAA认证方式（scheme），并且使用AAA中的本地认证。

l 创建ISP域bbb，配置Telnet用户登录时采用的 login 认证方法为 local。

l 创建本地用户，配置Telnet用户登录密码及登录后的用户级别。

(2) Telnet用户进行由低到高的用户级别切换时，首先使用HWTACACS认证，若AAA配置无效或者HWTACACS服务器没有响应则转为本地认证。

l 配置用户级别切换认证方式为 scheme local。

l 配置HWTACACS方案hwtac，指定HWTACACS服务器IP地址及与其进行交互的相关参数（HWTACACS协议报文交互时使用的共享密钥，Switch发送给HWTACACS服务器的用户名不带域名）。在ISP域bbb下配置级别切换认证方法为hwtac。

l 配置采用本地认证方式时的级别切换密码。

在HWTACACS server上需要添加用于级别切换认证的用户名和密码。

4. 配置步骤

(1) 配置Switch

# 配置VLAN接口2的IP地址，Telnet客户端将通过该地址连接Switch。

<Switch> system-view

[Switch] interface vlan-interface 2

[Switch-Vlan-interface2] ip address 192.168.1.70 255.255.255.0

[Switch-Vlan-interface2] quit

# 配置VLAN接口3的IP地址，Switch将通过该地址与服务器通信。

[Switch] interface vlan-interface 3

[Switch-Vlan-interface3] ip address 10.1.1.2 255.255.255.0

[Switch-Vlan-interface3] quit

# 开启Switch的Telnet服务器功能。

[Switch] telnet server enable

# 配置Telnet用户登录采用AAA认证方式。

[Switch] user-interface vty 0 4

[Switch-ui-vty0-4] authentication-mode scheme

[Switch-ui-vty0-4] quit

# 配置进行由低到高的用户级别切换时的级别切换认证方式为 scheme local。（首先使用HWTACACS认证，若AAA配置无效或者HWTACACS服务器没有响应则转为本地认证）

[Switch] super authentication-mode scheme local

# 创建HWTACACS方案hwtac。

[Switch] hwtacacs scheme hwtac

# 配置主认证服务器的IP地址为10.1.1.1，认证端口号为49。

[Switch-hwtacacs-hwtac] primary authentication 10.1.1.1 49

# 配置与认证服务器交互报文时的共享密钥为expert。

[Switch-hwtacacs-hwtac] key authentication simple expert

# 配置向HWTACACS服务器发送的用户名不携带域名。

[Switch-hwtacacs-hwtac] user-name-format without-domain

[Switch-hwtacacs-hwtac] quit

# 创建ISP域bbb。

[Switch] domain bbb

# 配置Telnet用户登录认证方法为本地认证。

[Switch-isp-bbb] authentication login local

# 配置用户级别切换认证方法为hwtac。

[Switch-isp-bbb] authentication super hwtacacs-scheme hwtac

[Switch-isp-bbb] quit

# 创建本地Telnet用户test。

[Switch] local-user test

[Switch-luser-test] service-type telnet

[Switch-luser-test] password simple aabbcc

# 指定Telnet用户登录系统后所能访问的命令级别为0级。

[Switch-luser-test] authorization-attribute level 0

[Switch-luser-test] quit

# 配置用户级别切换认证方式为本地认证时，切换用户级别使用的密码为654321。

[Switch] super password simple 654321

[Switch] quit

(2) 配置HWTACACS server

下面以ACSv4.0为例，说明该例中HWTACACS server的基本配置。

在HWTACACS server上添加用户test，对该用户的高级属性进行设置。

l 设置Enable Password为enabpass；

l 设置Max Privilege为Level 3，表示用户级别切换到1～3时均使用密码enabpass进行认证。

图1-32 设置Telnet用户的高级属性

5. 验证配置结果

(1) Telnet用户建立与Switch的连接

在Telnet客户端按照提示输入用户名test@bbb及密码aabbcc，即可进入Switch的用户界面，且所只能访问级别为0级的命令。

<Switch> telnet 192.168.1.70

Trying 192.168.1.70 ...

Press CTRL+K to abort

Connected to 192.168.1.70 ...

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

* Copyright (c) 2004-2011 Hangzhou H3C Tech. Co., Ltd. All rights reserved. *

* Without the owner's prior written consent, *

* no decompiling or reverse-engineering shall be allowed. *

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

Login authentication

Username:test@bbb

Password:

<Switch> ?

User view commands:

cluster Run cluster command

display Display current system information

ping Ping function

quit Exit from current command view

ssh2 Establish a secure shell client connection

super Set the current user priority level

telnet Establish one TELNET connection

tracert Trace route function

(2) 切换用户级别

# 在当前的用户界面下执行切换用户级别到3级的命令，按照提示输入HWTACACS级别切换认证密码enabpass，若认证成功即可将当前Telnet用户的级别切换到3级。

<Switch> super 3

Password:

User privilege level is 3, and only those commands can be used

whose level is equal or less than this.

Privilege note: 0-VISIT, 1-MONITOR, 2-SYSTEM, 3-MANAGE

若ACS服务器无响应，按照提示输入本地级别切换认证密码654321，若认证成功即可将当前Telnet用户的级别切换到3级。

<Switch> super 3

Password: <——此处需输入HWTACACS级别切换认证密码

Error: Invalid configuration or no response from the authentication server.

Info: Change authentication mode to local.

Password: <——此处需输入本地级别切换认证密码

User privilege level is 3, and only those commands can be used

whose level is equal or less than this.

Privilege note: 0-VISIT, 1-MONITOR, 2-SYSTEM, 3-MANAGE

1.10.7 设备作为RADIUS服务器对Telnet用户进行接入认证

1. 组网需求

Telnet用户与Switch A相连，Switch A作为NAS对Telnet用户进行接入认证。具体要求如下：

l Switch B作为RADIUS服务器对用户进行认证、授权，服务器IP地址为10.1.1.2/24、认证端口号为1645。

l NAS与RADIUS认证、授权服务器交互报文时的共享密钥均为abc，向RADIUS服务器发送的用户名中不带域名。

2. 组网图

图1-33 设备作为RADIUS服务器对Telnet用户进行接入认证组网图

3. 配置步骤

# 配置各接口的IP地址，具体配置过程略。

(1) 配置NAS

# 开启Switch A的Telnet服务器功能。

<SwitchA> system-view

[SwitchA] telnet server enable

# 配置Telnet用户登录采用AAA认证方式。

[SwitchA] user-interface vty 0 4

[SwitchA-ui-vty0-4] authentication-mode scheme

[SwitchA-ui-vty0-4] quit

# 创建RADIUS方案rad。

[SwitchA] radius scheme rad

# 配置主认证服务器的IP地址为10.1.1.2，认证端口号为1645，共享密钥为abc。

[SwitchA-radius-rad] primary authentication 10.1.1.2 1645 key abc

# 配置发送给RADIUS服务器的用户名不带ISP域名。

[SwitchA-radius-rad] user-name-format without-domain

# 配置发送RADIUS报文使用的源IP地址为10.1.1.1。

[SwitchA-radius-rad] nas-ip 10.1.1.1

[SwitchA-radius-rad] quit

# 创建ISP域bbb。

[SwitchA] domain bbb

# 配置Telnet用户使用的RADIUS认证方案为rad。

[SwitchA-isp-bbb] authentication login radius-scheme rad

# 配置Telnet用户使用的RADIUS授权方案为rad。

[SwitchA-isp-bbb] authorization login radius-scheme rad

# 配置Telnet用户的计费方案为none。

[SwitchA-isp-bbb] accounting login none

# 配置RADIUS服务器的服务类型为 standard。使用设备作为服务器对login用户进行认证时，RADIUS服务器类型应配置为 standard。

[SwitchA-isp-bbb] server-type standard

[SwitchA-isp-bbb] quit

# 配置系统缺省ISP域为bbb，使得用户名中未携带域名的用户可使用bbb域进行认证。

[SwitchA] domain default enable bbb

(2) 配置RADIUS server

# 创建名称为aaa的RADIUS用户，并进入该用户视图。

<SwitchB> system-view

[SwitchB] radius-server user aaa

# 指定用户aaa的密码为明文aabbcc，且将以明文显示。

[SwitchB-rdsuser-aaa] password simple aabbcc

[SwitchB-rdsuser-aaa] quit

# 配置RADIUS客户端IP为10.1.1.1，共享密钥为abc。

[SwitchB] radius-server client-ip 10.1.1.1 key abc

4. 验证配置结果

用户aaa向Switch A发起Telnet连接，按照提示输入用户名aaa@bbb（或不携带域名的aaa）及密码aabbcc后，可成功通过认证，并进入Switch A的用户界面。在Switch A上可查看到已在线Telnet用户的连接情况。

<SwitchA> display connection

Index=1 ,Username=aaa@bbb

IP=192.168.1.2

IPv6=N/A

Total 1 connection(s) matched.


1.11 AAA常见配置错误举例

1.11.1 RADIUS认证/授权失败

1. 故障现象

用户认证/授权总是失败。

2. 故障分析

(1) 设备与RADIUS服务器之间存在通信故障。

(2) 用户名不是“userid@isp-name”的形式，或设备上没有正确配置用于认证该用户的ISP域。

(3) RADIUS服务器的数据库中没有配置该用户。

(4) 用户侧输入的密码不正确。

(5) RADIUS服务器和设备的报文共享密钥不同。

3. 处理过程

(1) 使用 ping 命令检查设备与RADIUS服务器是否可达。

(2) 使用正确形式的用户名或在设备上确保正确配置了用于该用户认证的ISP域。

(3) 检查RADIUS服务器的数据库以保证该用户的配置信息确实存在。

(4) 确保接入用户输入正确的密码。

(5) 检查两端的共享密钥，并确保两端一致。

1.11.2 RADIUS报文传送失败

1. 故障现象

RADIUS报文无法传送到RADIUS服务器。

2. 故障分析

(1) 设备与RADIUS服务器之间的存在通信故障。

(2) 设备上没有设置相应的RADIUS服务器IP地址。

(3) 认证/授权和计费服务的UDP端口设置不正确。

(4) RADIUS服务器的认证/授权和计费端口被其它应用程序占用。

3. 处理过程

(1) 确保线路通畅。

(2) 确保正确设置RADIUS服务器的IP地址。

(3) 确保与RADIUS服务器提供的端口号一致。

(4) 确保RADIUS服务器上的认证/授权和计费端口可用。

1.11.3 RADIUS计费功能异常

1. 故障现象

用户认证通过并获得授权，但是计费功能出现异常。

2. 故障分析

(1) 计费端口号设置不正确。

(2) 计费服务器和认证/授权服务器不是同一台机器，设备却要求认证/授权和计费功能属于同一个服务器（IP地址相同）。

3. 处理过程

(1) 正确设置RADIUS计费端口号。

(2) 确保设备的认证/授权和计费服务器的设置与实际情况相同。

1.11.4 HWTACACS常见配置错误举例

HWTACACS的常见配置错误举例与RADIUS基本相似，可以参考以上内容。


1 802.1X配置

本章节主要描述了802.1X的相关概念及配置步骤。由于通过配置端口安全特性也可以为用户提供802.1X认证服务，且还可以提供802.1X和MAC地址认证的扩展和组合应用，因此在需要灵活使用以上两种认证方式的组网环境下，推荐使用端口安全特性。而在仅需要802.1X特性来完成接入控制的组网环境下，推荐单独使用802.1X特性。关于端口安全特性的详细介绍和具体配置请参见“安全配置指导”中的“端口安全”。

相关链接

  • 1.1 802.1X简介
  • 1.2 802.1X扩展功能
  • 1.3 802.1X配置任务简介
  • 1.4 配置802.1X
  • 1.5 802.1X显示和维护
  • 1.6 802.1X典型配置举例
父主题： 02-802.1X配置


1.1 802.1X简介

最初，IEEE802 LAN/WAN委员会为解决无线局域网的网络安全问题，提出了802.1X协议。后来，802.1X协议作为局域网的一个普通接入控制机制在以太网中被广泛应用，主要解决以太网内认证和安全方面的问题。

802.1X协议是一种基于端口的网络接入控制协议，即在局域网接入设备的端口上对所接入的用户设备进行认证，以便用户设备控制对网络资源的访问。

1.1.1 802.1X的体系结构

802.1X系统中包括三个实体：客户端（Client）、设备端（Device）和认证服务器（Authenticaton server），如图1-1 所示。

图1-1 802.1X体系结构图

l 客户端是请求接入局域网的用户终端设备，它由局域网中的设备端对其进行认证。客户端上必须安装支持802.1X认证的客户端软件。

l 设备端是局域网中控制客户端接入的网络设备，位于客户端和认证服务器之间，为客户端提供接入局域网的端口（物理端口或逻辑端口），并通过与服务器的交互来对所连接的客户端进行认证。

l 认证服务器用于对客户端进行认证、授权和计费，通常为RADIUS（Remote Authentication Dial-In User Service，远程认证拨号用户服务）服务器。认证服务器根据设备端发送来的客户端认证信息来验证客户端的合法性，并将验证结果通知给设备端，由设备端决定是否允许客户端接入。在一些规模较小的网络环境中，认证服务器的角色也可以由设备端来代替，即由设备端对客户端进行本地认证、授权和计费。

1.1.2 802.1X对端口的控制

1. 受控/非受控端口

设备端为客户端提供接入局域网的端口被划分为两个逻辑端口：受控端口和非受控端口。任何到达该端口的帧，在受控端口与非受控端口上均可见。

l 非受控端口始终处于双向连通状态，主要用来传递EAPOL协议帧，保证客户端始终能够发出或接收认证报文。

l 受控端口在授权状态下处于双向连通状态，用于传递业务报文；在非授权状态下禁止从客户端接收任何报文。

2. 授权/非授权状态

设备端利用认证服务器对需要接入局域网的客户端进行认证，并根据认证结果（Accept或Reject）对受控端口的授权状态进行相应地控制。

图1-2 显示了受控端口上不同的授权状态对通过该端口报文的影响。图中对比了两个802.1X认证系统的端口状态。系统1的受控端口处于非授权状态，不允许报文通过；系统2的受控端口处于授权状态，允许报文通过。

图1-2 受控端口上授权状态的影响

3. 受控方向

在非授权状态下，受控端口可以处于单向受控或双向受控状态。

l 处于双向受控状态时，禁止帧的发送和接收；

l 处于单向受控状态时，禁止从客户端接收帧，但允许向客户端发送帧。

目前，设备上的受控端口只能处于单向受控状态。

1.1.3 802.1X认证报文的交互机制

802.1X系统使用EAP（Extensible Authentication Protocol，可扩展认证协议）来实现客户端、设备端和认证服务器之间认证信息的交互。EAP是一种C/S模式的认证框架，它可以支持多种认证方法，例如MD5-Challenge、EAP-TLS、PEAP等。在客户端与设备端之间，EAP报文使用EAPOL（Extensible Authentication Protocol over LAN，局域网上的可扩展认证协议）封装格式承载于数据帧中传递。在设备端与RADIUS服务器之间，EAP报文的交互有以下两种处理机制。

1. EAP中继

设备对收到的EAP报文进行中继，使用EAPOR（EAP over RADIUS）封装格式将其承载于RADIUS报文中发送给RADIUS服务器进行认证。

图1-3 EAP中继原理示意图

该处理机制下，EAP认证过程在客户端和RADIUS服务器之间进行，RADIUS服务器作为EAP服务器来处理客户端的EAP认证请求，设备相当于一个代理，仅对EAP报文做中转，因此设备处理简单，并能够支持EAP的各种认证方法，但要求RADIUS服务器支持相应的EAP认证方法。

2. EAP终结

设备对EAP认证过程进行终结，将收到的EAP报文中的客户端认证信息封装在标准的RADIUS报文中，与服务器之间采用PAP（Password Authentication Protocol，密码验证协议）或CHAP（Challenge Handshake Authentication Protocol，质询握手验证协议）方法进行认证。

图1-4 EAP终结原理示意图

该处理机制下，由于现有的RADIUS服务器基本均可支持PAP认证和CHAP认证，因此对服务器无特殊要求，但设备处理较为复杂，它需要作为EAP服务器来解析与处理客户端的EAP报文，且目前仅能支持MD5-Challenge类型的EAP认证以及iNode 802.1X客户端发起的“用户名+密码”方式的EAP认证。

如果客户端采用了MD5-Challenge类型的EAP认证，则设备端只能采用CHAP认证；如果iNode 802.1X客户端采用了“用户名+密码”方式的EAP认证，设备上可选择使用PAP认证或CHAP认证，从安全性上考虑，通常使用CHAP认证。

1.1.4 EAP报文的封装

1. EAPOL数据帧的封装

(1) EAPOL数据帧的格式

EAPOL是802.1X协议定义的一种承载EAP报文的封装协议，主要用于在局域网中传送客户端和设备端之间的EAP协议报文。EAPOL数据包的格式如图1-5 所示。

图1-5 EAPOL数据包格式

l PAE Ethernet Type：表示协议类型。EAPOL的协议类型为0x888E。

l Protocol Version：表示EAPOL数据帧的发送方所支持的EAPOL协议版本号。

l Type：表示EAPOL数据帧类型。目前设备上支持的EAPOL数据帧类型见表1-1。

表1-1 EAPOL数据帧类型

类型值 | 数据帧类型 | 说明
0x00 | EAP-Packet | 认证信息帧，用于承载客户端和设备端之间的EAP报文。 l 在终结方式下，该帧中的客户端认证信息会被设备端重新封装并承载于RADIUS报文中发送给认证服务器 l 在中继方式下，该帧承载的EAP报文会被设备端直接封装在RADIUS报文的EAP属性中发送给认证服务器
0x01 | EAPOL-Start | 认证发起帧，用于客户端向设备端发起认证请求
0x02 | EAPOL-Logoff | 退出请求帧，用于客户端向设备端发起下线请求

l Length：表示数据域的长度，也就是Packet Body字段的长度，单位为字节。当EAPOL数据帧的类型为EAPOL-Start或EAPOL-Logoff时，该字段值为0，表示后面没有Packet Body字段。

l Packet Body：数据域的内容。

(2) EAP报文的格式

当EAPOL数据帧的类型为EAP-Packet时，Packet Body字段的内容就是一个EAP报文，格式如图1-6 所示。

图1-6 EAP报文格式

l Code：EAP报文的类型，包括Request（1）、Response（2）、Success（3）和Failure（4）。

l Identifier：用于匹配Request消息和Response消息的标识符。

l Length：EAP报文的长度，包含Code、Identifier、Length和Data域，单位为字节。

l Data：EAP报文的内容，该字段仅在EAP报文的类型为Request和Response时存在，它由类型域和类型数据两部分组成，例如，类型域为1表示Identity类型，类型域为4表示MD5 challenge类型。

2. EAP报文在RADIUS中的封装

RADIUS为支持EAP认证增加了两个属性：EAP-Message（EAP消息）和Message-Authenticator（消息认证码）。在含有EAP-Message属性的数据包中，必须同时包含Message-Authenticator属性。关于RADIUS报文格式的介绍请参见“安全配置指导”中的“AAA”的RADIUS协议简介部分。

(1) EAP-Message

如图1-7 所示，EAP-Message属性用来封装EAP报文，Value域最长253字节，如果EAP报文长度大于253字节，可以对其进行分片，依次封装在多个EAP-Message属性中。

图1-7 EAP-Message属性封装

(2) Message-Authenticator

如图1-8 所示，Message-Authenticator属性用于在EAP认证过程中验证携带了EAP-Message属性的RADIUS报文的完整性，避免报文被窜改。如果接收端对接收到的RADIUS报文计算出的完整性校验值与报文中携带的Message-Authenticator属性的Value值不一致，该报文会被认为无效而丢弃。

图1-8 Message-Authenticator属性封装

1.1.5 802.1X的认证触发方式

802.1X的认证过程可以由客户端主动发起，也可以由设备端发起。

1. 客户端主动触发方式

l 组播触发：客户端主动向设备端发送EAPOL-Start报文来触发认证，该报文目的地址为组播MAC地址01-80-C2-00-00-03。

l 广播触发：客户端主动向设备端发送EAPOL-Start报文来触发认证，该报文的目的地址为广播MAC地址。该方式可解决由于网络中有些设备不支持上述的组播报文，而造成认证设备无法收到客户端认证请求的问题。

目前，iNode的802.1X客户端可支持广播触发方式。

2. 设备端主动触发方式

设备端主动触发方式用于支持不能主动发送EAPOL-Start报文的客户端，例如Windows XP自带的802.1X客户端。设备主动触发认证的方式分为以下两种：

l 组播触发：设备每隔N秒（缺省为30秒）主动向客户端组播发送Identity类型的EAP-Request帧来触发认证。

l 单播触发：当设备收到源MAC地址未知的报文时，主动向该MAC地址单播发送Identity类型的EAP-Request帧来触发认证。若设备端在设置的时长内没有收到客户端的响应，则重发该报文。

1.1.6 802.1X的认证过程

802.1X系统支持采用EAP中继方式或EAP终结方式与远端RADIUS服务器交互。以下关于两种认证方式的过程描述，都以客户端主动发起认证为例。

1. EAP中继方式

这种方式是IEEE 802.1X标准规定的，将EAP承载在其它高层协议中，如EAP over RADIUS，以便扩展认证协议报文穿越复杂的网络到达认证服务器。一般来说，需要RADIUS服务器支持EAP属性：EAP-Message和Message-Authenticator，分别用来封装EAP报文及对携带EAP-Message的RADIUS报文进行保护。

下面以MD5-Challenge认证方法为例介绍基本业务流程，认证过程如图1-9 所示。

图1-9 IEEE 802.1X认证系统的EAP中继方式业务流程

(1) 当用户需要访问外部网络时打开802.1X客户端程序，输入已经申请、登记过的用户名和密码，发起连接请求。此时，客户端程序将向设备端发出认证请求帧（EAPOL-Start），开始启动一次认证过程。

(2) 设备端收到认证请求帧后，将发出一个Identity类型的请求帧（EAP-Request/Identity）要求用户的客户端程序发送输入的用户名。

(3) 客户端程序响应设备端发出的请求，将用户名信息通过Identity类型的响应帧（EAP-Response/Identity）发送给设备端。

(4) 设备端将客户端发送的响应帧中的EAP报文封装在RADIUS报文（RADIUS Access-Request）中发送给认证服务器进行处理。

(5) RADIUS服务器收到设备端转发的用户名信息后，将该信息与数据库中的用户名列表中对比，找到该用户名对应的密码信息，用随机生成的一个MD5 Challenge对密码进行加密处理，同时将此MD5 Challenge通过RADIUS Access-Challenge报文发送给设备端。

(6) 设备端将RADIUS服务器发送的MD5 Challenge转发给客户端。

(7) 客户端收到由设备端传来的MD5 Challenge后，用该Challenge对密码部分进行加密处理，生成EAP-Response/MD5 Challenge报文，并发送给设备端。

(8) 设备端将此EAP-Response/MD5 Challenge报文封装在RADIUS报文（RADIUS Access-Request）中发送给RADIUS服务器。

(9) RADIUS服务器将收到的已加密的密码信息和本地经过加密运算后的密码信息进行对比，如果相同，则认为该用户为合法用户，并向设备端发送认证通过报文（RADIUS Access-Accept）。

(10) 设备收到认证通过报文后向客户端发送认证成功帧（EAP-Success），并将端口改为授权状态，允许用户通过端口访问网络。

(11) 用户在线期间，设备端会通过向客户端定期发送握手报文的方法，对用户的在线情况进行监测。

(12) 客户端收到握手报文后，向设备发送应答报文，表示用户仍然在线。缺省情况下，若设备端发送的两次握手请求报文都未得到客户端应答，设备端就会让用户下线，防止用户因为异常原因下线而设备无法感知。

(13) 客户端可以发送EAPOL-Logoff帧给设备端，主动要求下线。

(14) 设备端把端口状态从授权状态改变成未授权状态，并向客户端发送EAP-Failure报文。

EAP中继方式下，需要保证在客户端和RADIUS服务器上选择一致的EAP认证方法，而在设备上，只需要通过 dot1x authentication-method eap命令启动EAP中继方式即可。

2. EAP终结方式

这种方式将EAP报文在设备端终结并映射到RADIUS报文中，利用标准RADIUS协议完成认证、授权和计费。设备端与RADIUS服务器之间可以采用PAP或者CHAP认证方法。下面以CHAP认证方法为例介绍基本业务流程，如图1-10 所示。

图1-10 IEEE 802.1X认证系统的EAP终结方式业务流程

EAP终结方式与EAP中继方式的认证流程相比，不同之处在于步骤(4)中用来对用户密码信息进行加密处理的MD5 challenge由设备端生成，之后设备端会把用户名、MD5 challenge和客户端加密后的密码信息一起送给RADIUS服务器，进行相关的认证处理。

1.1.7 802.1X的接入控制方式

设备不仅支持协议所规定的基于端口的接入认证方式（Port-based），还对其进行了扩展、优化，支持基于MAC的接入控制方式（MAC-based）。

l 当采用基于端口的接入控制方式时，只要该端口下的第一个用户认证成功后，其它接入用户无须认证就可使用网络资源，但是当第一个用户下线后，其它用户也会被拒绝使用网络。

l 采用基于MAC的接入控制方式时，该端口下的所有接入用户均需要单独认证，当某个用户下线时，也只有该用户无法使用网络。


1.2 802.1X扩展功能

1.2.1 支持VLAN下发

802.1X用户在服务器上通过认证时，服务器会把授权信息传送给设备端。如果服务器上指定了授权给该用户的下发VLAN，则服务器发送给设备的授权信息中将含有下发的VLAN信息，设备根据用户认证上线的端口链路类型，按以下三种情况将端口加入下发VLAN中。

表1-2 不同类型的端口加入下发的VLAN

接入控制方式 | Access端口 | Trunk 端口 | Hybrid端口
Port-based | 端口离开用户配置的VLAN，加入下发的VLAN | 端口允许下发的VLAN通过，并且将缺省VLAN修改为下发的VLAN | 端口允许下发的VLAN以不携带Tag的方式通过，并且将缺省VLAN修改为下发的VLAN
MAC-based | 端口离开用户配置的VLAN，加入第一个通过认证的用户的下发VLAN | 端口允许下发的VLAN通过，并且将缺省VLAN修改为第一个通过认证的用户的下发VLAN | l 若端口上开启了MAC VLAN功能，则根据下发的VLAN动态地创建基于用户MAC的VLAN，而端口的缺省VLAN ID并不改变 l 若当前Hybrid端口上未开启了MAC VLAN功能，则端口的缺省VLAN ID修改为第一个通过认证的用户的下发VLAN的VLAN ID
 | 说明：后续用户的下发VLAN必须与第一个通过认证的用户的下发VLAN相同，否则认证失败

下发的VLAN并不影响端口的配置。但是，下发的VLAN的优先级高于用户配置的VLAN，即通过认证后起作用的VLAN是下发的VLAN，用户配置的VLAN在用户下线后生效。

l 对于Hybrid端口，不建议把服务器将要下发或已经下发的VLAN配置为携带Tag的方式加入端口。

l 在启动了802.1X周期性重认证功能的Hybrid端口上，若用户在MAC VLAN功能开启之前上线，则MAC VLAN功能不能对该用户生效，即系统不会根据服务器下发的VLAN生成该用户的MAC VLAN表项，只有该在线用户重认证成功且服务器下发的VLAN发生变化时，MAC VLAN功能才会对它生效。MAC VLAN功能的详细介绍请参考“二层技术-以太网交换配置指导”中的“VLAN”。

1.2.2 Guest VLAN

Guest VLAN功能允许用户在未认证的情况下，访问某一特定VLAN中的资源。这个特定的VLAN称之为Guest VLAN，该VLAN内通常放置一些用于用户下载客户端软件或其他升级程序的服务器。

根据端口的接入控制方式不同，Guest VLAN的生效情况有所不同。

(1) 端口的接入控制方式为Port-based

在接入控制方式为Port-based的端口上配置Guest VLAN后，若在一定的时间内（默认90秒），该端口上无客户端进行认证，则该端口将被加入Guest VLAN，所有在该端口接入的用户将被授权访问Guest VLAN里的资源。不同链路类型的端口加入Guest VLAN的情况有所不同，具体情况与端口加入服务器下发的VLAN类似，请参见“ 1.2.1 支持VLAN下发 ”。

当端口上处于Guest VLAN中的用户发起认证且失败时：如果端口配置了Auth-Fail VLAN，则该端口会被加入Auth-Fail VLAN；如果端口未配置Auth-Fail VLAN，则该端口仍然处于Guest VLAN内。关于Auth-Fail VLAN的具体介绍请参见“ 1.2.3 Auth-Fail VLAN ”。

当端口上处于Guest VLAN中的用户发起认证且成功时，端口会离开Guest VLAN，之后端口加入VLAN情况与认证服务器是否下发VLAN有关，具体如下：

l 若认证服务器下发VLAN，则端口加入下发的VLAN中。用户下线后，端口离开下发的VLAN回到初始VLAN中，该初始VLAN为端口加入Guest VLAN之前所在的VLAN。

l 若认证服务器未下发VLAN，则端口回到初始VLAN中。用户下线后，端口仍在该初始VLAN中。

(2) 端口的接入控制方式为MAC-based

在接入控制方式为MAC-based的端口上配置Guest VLAN后，端口上未认证的用户被授权访问Guest VLAN里的资源。

当端口上处于Guest VLAN中的用户发起认证且失败时，如果端口配置了Auth-Fail VLAN，则认证失败的用户将被加入Auth-Fail VLAN；如果端口未配置Auth-Fail VLAN，则该用户将仍然处于Guest VLAN内。

当端口上处于Guest VLAN中的用户发起认证且成功时，设备会根据认证服务器是否下发VLAN决定将该用户加入到下发的VLAN中，或回到加入Guest VLAN之前端口所在的初始VLAN。

1.2.3 Auth-Fail VLAN

Auth-Fail VLAN功能允许用户在认证失败的情况下访问某一特定VLAN中的资源，这个VLAN称之为Auth-Fail VLAN。需要注意的是，这里的认证失败是认证服务器因某种原因明确拒绝用户认证通过，比如用户密码错误，而不是认证超时或网络连接等原因造成的认证失败。

根据端口的接入控制方式不同，Auth-Fail VLAN的生效情况有所不同。

(1) 端口的接入控制方式为Port-based

在接入控制方式为Port-based的端口上配置Auth-Fail VLAN后，若该端口上有用户认证失败，则该端口会被加入到Auth-Fail VLAN，所有在该端口接入的用户将被授权访问Auth-Fail VLAN里的资源。端口加入Auth-Fail VLAN的情况与加入授权下发VLAN相同，与端口链路类型有关。

当加入Auth-Fail VLAN的端口上有用户发起认证并失败，则该端口将会仍然处于Auth-Fail VLAN内；如果认证成功，则该端口会离开Auth-Fail VLAN，之后端口加入VLAN情况与认证服务器是否下发VLAN有关，具体如下：

l 若认证服务器下发VLAN，则端口加入下发的VLAN中。用户下线后，端口会离开下发的VLAN回到初始VLAN中，该初始VLAN为端口加入Auth-Fail VLAN之前所在的VLAN。

l 若认证服务器未下发VLAN，则端口回到初始VLAN中。用户下线后，端口仍在该初始VLAN中。

(2) 端口的接入控制方式为MAC-based

在接入控制方式为MAC-based的端口上配置Auth-Fail VLAN后，该端口上认证失败的用户将被授权访问Auth-Fail VLAN里的资源。

当Auth-Fail VLAN中的用户再次发起认证时，如果认证成功，则设备会根据认证服务器是否下发VLAN决定将该用户加入到下发的VLAN中，或回到加入Auth-Fail VLAN之前端口所在的初始VLAN；如果认证失败，则该用户仍然留在该VLAN中。

1.2.4 支持ACL下发

802.1X支持ACL（Access Control List，访问控制列表）下发功能提供了对上线用户访问网络资源的过滤与控制功能。当用户上线时，如果RADIUS服务器上指定了要下发给该用户的授权ACL，则设备会根据服务器下发的授权ACL对用户所在端口的数据流进行过滤，仅允许ACL规则中允许的数据流通过该端口。由于服务器上指定的是授权ACL的编号，因此还需要在设备上创建该ACL并配置该对应的ACL规则。管理员可以通过改变服务器的授权ACL设置或设备上对应的ACL规则来改变用户的访问权限。


1.3 802.1X配置任务简介

表1-3 802.1X配置任务简介

配置任务 | 说明 | 详细配置
开启802.1X特性 | 必选 | 1.4.2
配置802.1X系统的认证方法 | 若采用EAP中继模式，则必选 若采用EAP终结模式，则可选 | 1.4.3
配置端口的授权状态 | 可选 | 1.4.4
配置端口接入控制方式 | 可选 | 1.4.5
配置端口同时接入用户数的最大值 | 可选 | 1.4.6
配置设备向接入用户发送认证请求报文的最大次数 | 可选 | 1.4.7
配置802.1X认证超时定时器 | 可选 | 1.4.8
配置在线用户握手功能 | 可选 | 1.4.9
开启认证触发功能 | 可选 | 1.4.10
配置端口的强制认证域 | 可选 | 1.4.11
配置静默功能 | 可选 | 1.4.12
配置重认证功能 | 可选 | 1.4.13
配置Guest VLAN | 可选 | 1.4.14
配置Auth-Fail VLAN | 可选 | 1.4.15
配置802.1X支持的域名分隔符 | 可选 | 1.4.16


1.4 配置802.1X

1.4.1 配置准备

802.1X需要AAA的配合才能实现对用户的身份认证。因此，需要首先完成以下配置任务：

l 配置802.1X用户所属的ISP认证域及其使用的AAA方案，即本地认证方案或RADIUS方案。

l 如果需要通过RADIUS服务器进行认证，则应该在RADIUS服务器上配置相应的用户名和密码。

l 如果需要本地认证，则应该在设备上手动添加认证的用户名和密码。配置本地认证时，用户使用的服务类型必须设置为 lan-access。

1.4.2 开启802.1X特性

l 在用户端设备发送不携带Tag数据流的情况下，若接入端口配置了Voice VLAN功能，则端口的802.1X功能不生效。关于Voice VLAN特性请参见“二层技术-以太网交换配置指导”中的“Voice VLAN”。

l 端口启动802.1X与端口加入聚合组及端口加入业务环回组互斥。

l 端口开启BPDU拦截功能后，对收到的802.1X报文会进行丢弃，因此请不要同时开启端口的BPDU拦截功能和802.1X功能。

只有同时开启全局和端口的802.1X特性后，802.1X的配置才能在端口上生效。

表1-4 开启802.1X特性

配置步骤 |  | 命令 | 说明
进入系统视图 |  | system-view | -
开启全局的802.1X特性 |  | dot1x | 必选 缺省情况下，全局的802.1X特性为关闭状态
开启端口的802.1X特性 | 在系统视图下 | dot1x interface interface-list | 二者必选其一 缺省情况下，端口的802.1X特性为关闭状态
 | 在以太网端口视图下 | interface interface-type interface-number
 |  | dot1x

1.4.3 配置802.1X系统的认证方法

设备上的802.1X系统采用的认证方法与设备对于EAP报文的处理机制有关，具体如下：

l EAP中继方式下，设备端对客户端发送的EAP报文进行中继处理，设备上需指定 authentication-method 为 eap 来启用EAP中继方式，并支持客户端与RADIUS服务器之间所有类型的EAP认证方法。

l EAP终结方式下，设备端对客户端发送的EAP报文进行本地终结，设备上需指定 authentication-method 为 chap 或 pap 来启用EAP终结方式，并支持与RADIUS服务器之间采用CHAP或PAP类型的认证方法。

表1-5 配置802.1X系统的认证方法

配置步骤 | 命令 | 说明
进入系统视图 | system-view | -
配置802.1X系统的认证方法 | dot1x authentication-method { chap | eap | pap } | 可选 缺省情况下，设备启用EAP终结方式，并采用CHAP认证方法

如果采用EAP中继认证方式，则设备会把客户端输入的内容直接封装后发给服务器，这种情况下 user-name-format 命令的设置无效，user-name-format 的介绍请参见“安全命令参考”中的“AAA”。

1.4.4 配置端口的授权状态

通过配置端口的授权状态，可以控制端口上接入的用户是否需要经过认证来访问网络资源。端口支持以下三种授权状态：

l 强制授权（authorized-force）：表示端口始终处于授权状态，允许用户不经认证即可访问网络资源。

l 强制非授权（unauthorized-force）：表示端口始终处于非授权状态，不允许用户进行认证。设备端不为通过该端口接入的客户端提供认证服务。

l 自动识别（auto）：表示端口初始状态为非授权状态，仅允许EAPOL报文收发，不允许用户访问网络资源；如果认证通过，则端口切换到授权状态，允许用户访问网络资源。这也是最常见的情况。

在系统视图和以太网端口视图下均可进行端口授权状态的配置，前者可针对多个端口，后者仅针对当前端口。若在不同视图下先后对同一个端口的授权状态进行了配置，则最后执行的配置生效。

表1-6 配置端口的授权状态

配置步骤 |  | 命令 | 说明
进入系统视图 |  | system-view | -
配置端口的授权状态 | 在系统视图下 | dot1x port-control { authorized-force | auto | unauthorized-force } [ interface interface-list ] | 二者可选其一 缺省情况下，端口的授权状态为 auto
 | 在以太网端口视图下 | interface interface-type interface-number
 |  | dot1x port-control { authorized-force | auto | unauthorized-force }

1.4.5 配置端口接入控制方式

设备支持两种端口接入控制方式：基于端口控制（portbased）和基于MAC控制（macbased）。

在系统视图和以太网端口视图下均可进行端口接入控制方式的配置，前者可针对多个端口，后者仅针对当前端口。若在不同视图下先后对同一个端口的接入控制方式进行了配置，则最后执行的配置生效。

表1-7 配置端口接入控制方式

配置步骤 |  | 命令 | 说明
进入系统视图 |  | system-view | -
配置端口接入控制方式 | 在系统视图下 | dot1x port-method { macbased | portbased } [ interface interface-list ] | 二者可选其一 缺省情况下，802.1X在端口上进行接入控制方式为 macbased
 | 在以太网端口视图下 | interface interface-type interface-number
 |  | dot1x port-method { macbased | portbased }

若端口上同时启动了802.1X和Portal认证功能，则端口接入控制方式必须为 macbased。关于Portal认证的相关介绍，请参考“安全配置指导”中的“Portal”。

1.4.6 配置端口同时接入用户数的最大值

在系统视图和以太网端口视图下均可进行端口接入用户数最大值的配置，前者可针对多个端口，后者仅针对当前端口。若在不同视图下先后对同一个端口的最大接入用户数进行了配置，则最后执行的配置生效。

表1-8 配置端口同时接入用户数的最大值

配置步骤 |  | 命令 | 说明
进入系统视图 |  | system-view | -
配置端口同时接入用户数的最大值 | 在系统视图下 | dot1x max-user user-number [ interface interface-list ] | 二者可选其一 缺省情况下，端口同时接入用户数的最大值为2048
 | 在以太网端口视图下 | interface interface-type interface-number
 |  | dot1x max-user user-number

1.4.7 配置设备向接入用户发送认证请求报文的最大次数

如果设备向用户发送认证请求报文后，在规定的时间里（可通过命令 dot1x timer tx-period 或者 dot1x timer supp-timeout 设定）没有收到用户的响应，则设备将向用户重发该认证请求报文，若设备累计发送认证请求报文的次数达到配置的最大值后，仍然没有得到用户响应，则停止发送认证请求。

表1-9 配置设备向接入用户发送认证请求报文的最大次数

配置步骤 | 命令 | 说明
进入系统视图 | system-view | -
配置设备向接入用户发送认证请求报文的最大次数 | dot1x retry max-retry-value | 可选 缺省情况下，设备最多可向接入用户发送2次认证请求报文

1.4.8 配置802.1X认证超时定时器

802.1X认证过程中会启动多个定时器以控制接入用户、设备以及RADIUS服务器之间进行合理、有序的交互。可配置的802.1X认证定时器包括以下两种：

l 客户端认证超时定时器：当设备端向客户端发送了EAP-Request/MD5 Challenge请求报文后，设备端启动此定时器，若在该定时器设置的时长内，设备端没有收到客户端的响应，设备端将重发该报文。

l 认证服务器超时定时器：当设备端向认证服务器发送了RADIUS Access-Request请求报文后，设备端启动该定时器，若在该定时器设置的时长内，设备端没有收到认证服务器的响应，设备端将重发认证请求报文。

表1-10 配置802.1X定时器参数

配置步骤 | 命令 | 说明
进入系统视图 | system-view | -
配置客户端认证超时定时器 | dot1x timer supp-timeout supp-timeout-value | 可选 缺省情况下，客户端认证超时定时器的值为30秒
配置认证服务器超时定时器 | dot1x timer server-timeout server-timeout-value | 可选 缺省情况下，认证服务器超时定时器的值为100秒

一般情况下，无需改变认证超时定时器的值，除非在一些特殊或恶劣的网络环境下，才需要通过命令来调节。例如，用户网络状况比较差的情况下，可以适当地将客户端认证超时定时器值调大一些；还可以通过调节认证服务器超时定时器的值来适应不同认证服务器的性能差异。

1.4.9 配置在线用户握手功能

开启设备的在线用户握手功能后，设备会定期（时间间隔通过命令 dot1x timer handshake-period 设置）向通过802.1X认证的在线用户发送握手报文，以定期检测用户的在线情况。如果设备连续多次（通过命令 dot1x retry 设置）没有收到客户端的响应报文，则会将用户置为下线状态。

在线用户握手功能处于开启状态的前提下，还可以通过开启在线用户握手安全功能，来防止在线的802.1X认证用户使用非法的客户端与设备进行握手报文的交互，而逃过代理检测、双网卡检测等iNode客户端的安全检查功能。开启了在线用户握手安全功能的设备通过检验客户端上传的握手报文中携带的验证信息，来确认用户是否使用iNode客户端进行握手报文的交互。如果握手检验不通过，则会将用户置为下线状态。

需要注意的是：在线用户握手安全功能的实现依赖于在线用户握手功能。为使在线用户握手安全功能生效，请保证在线用户握手功能处于开启状态。

表1-11 配置在线用户握手功能

配置步骤 | 命令 | 说明
进入系统视图 | system-view | -
配置握手定时器 | dot1x timer handshake-period handshake-period-value | 可选 缺省情况下，握手定时器的值为15秒
进入以太网端口视图 | interface interface-type interface-number | -
开启在线用户握手功能 | dot1x handshake | 可选 缺省情况下，在线用户握手功能处于开启状态
开启在线用户握手功能的安全功能 | dot1x handshake secure | 可选 缺省情况下，在线用户握手安全功能处于关闭状态

l 部分802.1X客户端不支持与设备进行握手报文的交互，因此建议在这种情况下，关闭设备的在线用户握手功能，避免该类型的在线用户因没有回应握手报文而被强制下线。

l 建议在线用户握手安全功能与iNode客户端以及iMC服务器配合使用，以保证该功能可以正常运行。

1.4.10 开启认证触发功能

端口上开启认证触发功能后，设备会主动向该端口上的客户端发送认证请求来触发认证，以支持不能主动发送EAPOL-Start报文来发起认证的客户端。设备提供了以下两种类型的认证触发功能：

l 组播触发功能：启用了该功能的端口会定期（间隔时间通过命令 dot1x timer tx-period 设置）向客户端组播发送EAP-Request/Identity报文来检测客户端并触发认证。该功能用于支持不能主动发起认证的客户端。

l 单播触发功能：当启用了该功能的端口收到源MAC地址未知的报文时，会主动向该MAC地址单播发送EAP-Request/Identity报文，若端口在指定的时间内（通过命令 dot1x timer tx-period设置）没有收到客户端的响应，则重发该报文（重发次数通过命令 dot1x retry 设置）。该功能适用于客户端不支持主动认证，且仅部分客户端需要进行认证的组网环境，可避免不希望认证或已认证的客户端收到多余的认证触发报文。

表1-12 开启认证触发功能

配置步骤 | 命令 | 说明
进入系统视图 | system-view | -
配置用户名请求超时定时器 | dot1x timer tx-period tx-period-value | 可选 缺省情况下，用户名请求超时定时器的值为30秒
进入以太网端口视图 | interface interface-type interface-number | -
开启认证触发功能 | dot1x { multicast-trigger | unicast-trigger } | 可选 缺省情况下，组播触发功能处于开启状态，单播触发功能处于关闭状态

建议组播触发功能和开启单播触发功能不要同时开启，以免认证报文重复发送。

1.4.11 配置端口的强制认证域

配置端口的强制认证域（mandatory domain）为802.1X接入提供了一种安全控制策略。所有从该端口接入的802.1X用户将被强制使用指定的认证域来进行认证、授权和计费，从而防止用户通过恶意假冒其它域账号从本端口接入网络。另外，管理员也可以通过配置强制认证域对不同端口接入的用户指定不同的认证域，从而增加了管理员部署802.1X接入策略的灵活性。

表1-13 配置端口的强制认证域

配置步骤 | 命令 | 说明
进入系统视图 | system-view | -
进入以太网端口视图 | interface interface-type interface-number | -
配置端口的强制认证域 | dot1x mandatory-domain domain-name | 必选 缺省情况下，未定义强制认证域

1.4.12 配置静默功能

当802.1X用户认证失败以后，设备需要静默一段时间（通过命令 dot1x timer quiet-period 设置）后再重新发起认证，在静默期间，设备不进行802.1X认证的相关处理。

表1-14 开启静默定时器功能

配置步骤 | 命令 | 说明
进入系统视图 | system-view | -
配置静默定时器 | dot1x timer quiet-period quiet-period-value | 可选 缺省情况下，静默定时器的值为60秒
开启静默定时器功能 | dot1x quiet-period | 必选 缺省情况下，静默定时器功能处于关闭状态

在网络处在风险位置，容易受攻击的情况下，可以适当地将静默定时器值调大一些，反之，可以将其调小一些来提高对用户认证请求的响应速度。

1.4.13 配置重认证功能

端口启动了802.1X的周期性重认证功能后，设备会根据周期性重认证定时器设定的时间间隔（由命令 dot1x timer reauth-period 设置）定期向该端口在线802.1X用户发起重认证，以检测用户连接状态的变化、确保用户的正常在线，并及时更新服务器下发的授权属性（例如ACL、VLAN、User Profile）。

表1-15 配置重认证功能

配置步骤 | 命令 | 说明
进入系统视图 | system-view | -
配置周期性重认证定时器 | dot1x timer reauth-period reauth-period-value | 可选 缺省情况下，周期性重认证定时器的值为3600秒
进入以太网端口视图 | interface interface-type interface-number | -
开启周期性重认证功能 | dot1x re-authenticate | 必选 缺省情况下，周期性重认证功能处于关闭状态

l 认证服务器可以通过下发RADIUS属性（session-timeout）来指定用户的重认证周期，且该功能不需要设备上开启周期性重认证功能来配合，属性下发成功即可生效。802.1X用户认证通过后，如果认证服务器对该用户下发了重认证周期，则设备上配置的周期性重认证时间无效，服务器下发的重认证周期生效。认证服务器下发重认证时间的具体配置以及是否可以下发重认证周期的情况与服务器类型有关，请参考具体的认证服务器实现。

l 在用户名不改变的情况下，端口允许重认证前后服务器向该用户下发不同内容的VLAN；但是，若重认证前端口下发了VLAN，而重认证后未下发VLAN，则重认证失败，用户下线，反之同样处理。

1.4.14 配置Guest VLAN

l 如果用户端设备发出的是携带Tag的数据流，且接入端口上使能了802.1X认证并配置了Guest VLAN，为保证各种功能的正常使用，请为Voice VLAN、端口的缺省VLAN和802.1X的Guest VLAN分配不同的VLAN ID。

l 如果某个VLAN被指定为Super VLAN，则该VLAN不能被指定为某个端口的Guest VLAN；同样，如果某个VLAN被指定为某个端口的Guest VLAN，则该VLAN不能被指定为Super VLAN。关于Super VLAN的详细内容请参见“二层技术-以太网交换配置指导”中的“Super VLAN”。

配置Guest VLAN之前，需要进行以下配置准备：

l 创建需要配置为Guest VLAN的VLAN。

l 在接入控制方式为Port-based的端口上，保证802.1X的组播触发功能处于开启状态。

l 在接入控制方式为MAC-based的端口上，保证端口类型为Hybrid，端口上的MAC VLAN功能处于使能状态，且不建议将指定的Guest VLAN修改为携带Tag的方式。MAC VLAN功能的具体配置请参考“二层技术-以太网交换配置指导”中的“VLAN”。

表1-16 配置Guest VLAN

配置步骤 |  | 命令 | 说明
进入系统视图 |  | system-view | -
配置指定端口的Guest VLAN | 在系统视图下 | dot1x guest-vlan guest-vlan-id [ interface interface-list ] | 二者必选其一 缺省情况下，端口没有配置Guest VLAN 不同的端口可以配置不同的Guest VLAN，但一个端口最多只能配置一个Guest VLAN
 | 在以太网端口视图下 | interface interface-type interface-number
 |  | dot1x guest-vlan guest-vlan-id

l 在接入控制方式为MAC-based的端口上同时配置了802.1X认证的Guest VLAN与MAC地址认证的Guest VLAN时，则仅802.1X认证的Guest VLAN有效，即用户触发MAC地址认证且失败后，不会加入MAC地址认证的Guest VLAN，若之后未触发或者未成功通过802.1X认证，则会加入802.1X认证的Guest VLAN中（若端口上还配置了802.1X认证的Auth-Fail VLAN，则用户认证失败后加入Auth-Fail VLAN）。关于MAC地址认证Guest VLAN的介绍请参见“安全配置指导”中的“MAC地址认证”。

l 在接入控制方式为MAC-based的端口上生成的Guest VLAN表项会覆盖已生成的阻塞MAC表项，但如果端口因检测到非法报文而关闭，则802.1X的Guest VLAN功能无法生效。关于端口入侵检测关闭功能的具体介绍请参见“安全配置指导”中的“端口安全”。

1.4.15 配置Auth-Fail VLAN

l 如果用户端设备发出的是携带Tag的数据流，且接入端口上使能了802.1X认证并配置了Auth-Fail VLAN，为保证各种功能的正常使用，请为Voice VLAN、端口的缺省VLAN和802.1X的Auth-Fail VLAN分配不同的VLAN ID。

l 如果某个VLAN被指定为Super VLAN，则该VLAN不能被指定为某个端口的Auth-Fail VLAN；同样，如果某个VLAN被指定为某个端口的Auth-Fail VLAN，则该VLAN不能被指定为Super VLAN。关于Super VLAN的详细内容请参见“二层技术-以太网交换配置指导”中的“Super VLAN”。

配置Auth-Fail VLAN之前，需要进行以下配置准备：

l 创建需要配置为Auth-Fail VLAN的VLAN。

l 在接入控制方式为Port-based的端口上，保证802.1X的组播触发功能处于开启状态。

l 在接入控制方式为MAC-based的端口上，保证端口类型为Hybrid，端口上的MAC VLAN功能处于使能状态，且不建议将指定的Auth-Fail VLAN修改为携带Tag的方式。MAC VLAN功能的具体配置请参考“二层技术-以太网交换配置指导”中的“VLAN”。

表1-17 配置Auth-Fail VLAN

配置步骤 | 命令 | 说明
进入系统视图 | system-view | -
进入以太网端口视图 | interface interface-type interface-number | -
配置指定端口的Auth-Fail VLAN | dot1x auth-fail vlan authfail-vlan-id | 必选 缺省情况下，端口没有配置Auth-Fail VLAN 不同的端口可以配置不同的Auth-Fail VLAN，但一个端口最多只能配置一个Auth-Fail VLAN

l 在接入控制方式为MAC-based的端口上同时配置了802.1X认证Auth-Fail VLAN与MAC地址认证的Guest VLAN时，若用户首先进行MAC地址认证且失败，则加入MAC地址认证的Guest VLAN中，之后若该用户再进行802.1X认证且失败，则会离开MAC地址认证的Guest VLAN而加入802.1X认证的Auth-Fail VLAN中；若用户首先进行802.1X认证且失败，之后除非成功通过MAC地址认证或者802.1X认证，否则会一直位于802.1X认证的Auth-Fail VLAN中。

l 在接入控制方式为MAC-based的端口上生成的Auth-Fail VLAN表项会覆盖已生成的阻塞MAC表项，但如果端口因检测到非法报文而关闭，则802.1X的Auth-Fail VLAN功能无法生效。关于端口入侵检测关闭功能的具体介绍请参见“安全配置指导”中的“端口安全”。

1.4.16 配置802.1X支持的域名分隔符

设备对用户的管理是基于ISP域的，每个接入用户都属于一个ISP域。用户所属的ISP域是由用户登录时提供的用户名决定的，若用户名中携带域名，则设备使用该域中的AAA配置对用户进行认证、授权和计费，否则使用系统中的缺省域；若设备指定了802.1X的强制认证域，则无论用户名中是否携带域名，设备均使用指定的强制认证域。因此，设备能够准确解析用户名中的纯用户名和域名对于为用户提供认证服务非常重要。由于不同的802.1X客户端所支持的用户名域名分隔符不同，为了更好地管理和控制不同用户名格式的802.1X用户接入，需要在设备上指定802.1X可支持的域名分隔符。

目前，802.1X支持的域名分隔符包括@、\和/，对应的用户名格式分别为 username@domain-name， domain-name\username和 username/domain-name，其中 username 为纯用户名、domain-name 为域名。如果用户名中包含有多个域名分隔符字符，则设备仅将第一个出现的域名分隔符识别为实际使用的域名分隔符，其它字符都被认为是域名中的一部分，例如，用户输入的用户名为123/22\@abc，则认为纯用户名为123，域名分隔符为/，域名为22\@abc。

如果用户输入的用户名中不包含任何802.1X可支持的域名分隔符，则设备会认为该用户名并未携带域名，则使用系统中的缺省域对该用户进行认证。

表1-18 指定802.1X支持的域名分隔符

配置步骤 | 命令 | 说明
进入系统视图 | system-view | -
指定802.1X支持的域名分隔符 | dot1x domain-delimiter string | 可选 缺省情况下，仅支持域名分隔符@

若设备上指定发送给认证服务器的用户名携带域名（user-name-format with-domain），则发送给认证服务器的用户名中携带该用户使用的认证域的域名，并采用设备上指定的802.1X支持的域名分隔符，若设备上指定了多个域名分隔符，则选择的优先级由高到低依次为@、/、\。另外，为保证用户信息可在认证服务器上被准确匹配到，设备上指定的802.1X支持的域名分隔符必须与认证服务器支持的域名分隔符保持一致，否则可能会因为服务器匹配用户失败而导致用户认证失败。相关命令的具体介绍请参考“安全命令参考”中的“AAA”。


1.5 802.1X显示和维护

在完成上述配置后，在任意视图下执行 display 命令可以显示配置后802.1X的运行情况，通过查看显示信息验证配置的效果。

在用户视图下，执行 reset 命令可以清除802.1X的统计信息。

表1-19 802.1X显示和维护

操作 | 命令
显示802.1X的会话连接信息、相关统计信息或配置信息 | display dot1x [ sessions | statistics ] [ interface interface-list ] [ | { begin | exclude | include } regular-expression ]
清除802.1X的统计信息 | reset dot1x statistics [ interface interface-list ]


1.6 802.1X典型配置举例

1.6.1 802.1X认证配置举例

1. 组网需求

用户通过Device的端口Ethernet1/0/1接入网络，设备对该端口接入的用户进行802.1X认证以控制其访问Internet，具体要求如下：

l 由两台RADIUS服务器组成的服务器组与Device相连，其IP地址分别为10.1.1.1和10.1.1.2，使用前者作为主认证/计费服务器，使用后者作为备份认证/计费服务器。

l 端口Ethernet1/0/1下的所有接入用户均需要单独认证，当某个用户下线时，也只有该用户无法使用网络。

l 认证时，首先进行RADIUS认证，如果RADIUS服务器没有响应则进行本地认证；计费时，如果RADIUS计费失败则切断用户连接使其下线。

l 所有接入用户都属于同一个ISP域aabbcc.net，该域中最多可容纳30个用户。

l Device与RADIUS认证服务器交互报文时的共享密钥为name、与RADIUS计费服务器交互报文时的共享密钥为money。

2. 组网图

图1-11 802.1X认证组网图

3. 配置步骤

l 下述配置步骤中包含了若干AAA/RADIUS协议的配置命令，关于这些命令的详细介绍请参见“安全命令参考”中的“AAA”。

l 完成802.1X客户端的配置。若使用H3C iNode 802.1X客户端，为保证备选的本地认证可成功进行，请确认802.1X连接属性中的“上传客户端版本号”选项未被选中。

l 完成RADIUS服务器的配置，添加用户帐户，保证用户的认证/授权/计费功能正常运行。

(1) 配置各接口的IP地址（略）

(2) 配置本地用户

# 添加本地用户，用户名为localuser，密码为明文输入的localpass。（此处添加的本地用户的用户名和密码需要与服务器端配置的用户名和密码保持一致，本例中的localuser仅为示例，请根据实际情况配置）

<Device> system-view

[Device] local-user localuser

[Device-luser-localuser] service-type lan-access

[Device-luser-localuser] password simple localpass

# 启动闲置切断功能，并指定正常连接时用户空闲时间超过20分钟，则切断其连接。

[Device-luser-localuser] authorization-attribute idle-cut 20

[Device-luser-localuser] quit

(3) 配置RADIUS方案

# 创建RADIUS方案radius1并进入其视图。

[Device] radius scheme radius1

# 配置主认证/计费RADIUS服务器的IP地址。

[Device-radius-radius1] primary authentication 10.1.1.1

[Device-radius-radius1] primary accounting 10.1.1.1

# 配置备份认证/计费RADIUS服务器的IP地址。

[Device-radius-radius1] secondary authentication 10.1.1.2

[Device-radius-radius1] secondary accounting 10.1.1.2

# 配置Device与认证/计费RADIUS服务器交互报文时的共享密钥。

[Device-radius-radius1] key authentication name

[Device-radius-radius1] key accounting money

# 配置发送给RADIUS服务器的用户名不携带域名。

[Device-radius-radius1] user-name-format without-domain

[Device-radius-radius1] quit

发送给服务器的用户名是否携带域名与服务器端是否接受携带域名的用户名以及服务器端的配置有关：

l 若服务器端不接受携带域名的用户名，或者服务器上配置的用户认证所使用的服务不携带域名后缀，则Device上指定不携带用户名（without-domain）；

l 若服务器端可接受携带域名的用户名，且服务器上配置的用户认证所使用的服务携带域名后缀，则Device上指定携带用户名（with-domain）。

(4) 配置ISP域

# 创建域aabbcc.net并进入其视图。

[Device] domain aabbcc.net

# 配置802.1X用户使用RADIUS方案radius1进行认证、授权、计费，并采用local作为备选方法。

[Device-isp-aabbcc.net] authentication lan-access radius-scheme radius1 local

[Device-isp-aabbcc.net] authorization lan-access radius-scheme radius1 local

[Device-isp-aabbcc.net] accounting lan-access radius-scheme radius1 local

# 配置该域最多可容纳30个用户。

[Device-isp-aabbcc.net] access-limit enable 30

# 启动闲置切断功能，并指定正常连接时用户空闲时间超过20分钟，则切断其连接。

[Device-isp-aabbcc.net] idle-cut enable 20

[Device-isp-aabbcc.net] quit

# 指定域aabbcc.net为缺省的ISP域。如果用户在登录时没有提供ISP域名，系统将把它归于该缺省的ISP域。

[Device] domain default enable aabbcc.net

(5) 配置802.1X

# 开启全局802.1X特性。

[Device] dot1x

# 开启指定端口Ethernet1/0/1的802.1X特性。

[Device] interface ethernet 1/0/1

[Device-Ethernet1/0/1] dot1x

[Device-Ethernet1/0/1] quit

# 配置基于MAC地址的接入控制方式（该配置可选，因为端口的接入控制在缺省情况下就是基于MAC地址的）。

[Device] dot1x port-method macbased interface ethernet 1/0/1

4. 验证配置结果

使用命令 display dot1x interface ethernet 1/0/1可以查看802.1X的配置情况。当802.1X用户输入正确的用户名和密码成功通过RADIUS认证上线后，可使用命令 display connetion 查看到上线用户的连接情况。若RADIUS服务器无响应，则进行本地认证。

1.6.2 802.1X认证配合Guest VLAN、VLAN下发配置举例

1. 组网需求

如图1-12 所示，一台主机通过802.1X认证接入网络，认证服务器为RADIUS服务器。Host接入Device的端口Ethernet1/0/2在VLAN 1内；认证服务器在VLAN 2内；Update Server是用于客户端软件下载和升级的服务器，在VLAN 10内；Device连接Internet网络的端口Ethernet1/0/3在VLAN 5内。现有如下组网需求：

l 若一定的时间内端口上无客户端进行认证，则将该端口Ethernet1/0/2加入Guest VLAN（VLAN 10）中，此时Host和Update Server都在VLAN 10内，Host可以访问Update Server并下载802.1X客户端。

l 用户认证成功上线后，认证服务器下发VLAN 5，此时Host和连接Internet网络的端口Ethernet1/0/3都在VLAN 5内，Host可以访问Internet。

2. 组网图

图1-12 Guest VLAN及VLAN下发组网图

3. 配置步骤

l 下述配置步骤中包含了若干AAA/RADIUS协议的配置命令，关于这些命令的详细介绍请参见“安全命令参考”中的“AAA”。

l 保证接入端口加入Guest VLAN或授权VLAN之后，802.1X客户端能够及时更新IP地址，以实现与相应网络资源的互通。

l 完成RADIUS服务器的配置，添加用户帐户，指定要授权下发的VLAN（本例中为VLAN 5），并保证用户的认证/授权/计费功能正常运行。

(1) 创建VLAN并将端口加入对应VLAN

<Device> system-view

[Device] vlan 1

[Device-vlan1] port ethernet 1/0/2

[Device-vlan1] quit

[Device] vlan 10

[Device-vlan10] port ethernet 1/0/1

[Device-vlan10] quit

[Device] vlan 2

[Device-vlan2] port ethernet 1/0/4

[Device-vlan2] quit

[Device] vlan 5

[Device-vlan5] port ethernet 1/0/3

[Device-vlan5] quit

(2) 配置RADIUS方案

# 创建RADIUS方案2000并进入其视图。

[Device] radius scheme 2000

# 配置主认证/计费RADIUS服务器及其共享密钥。

[Device-radius-2000] primary authentication 10.11.1.1 1812

[Device-radius-2000] primary accouting 10.11.1.1 1813

[Device-radius-2000] key authentication abc

[Device-radius-2000] key accouting abc

# 配置发送给RADIUS服务器的用户名不携带域名。

[Device-radius-2000] user-name-format without-domain

[Device-radius-2000] quit

(3) 配置ISP域

# 创建域bbb并进入其视图。

[Device] domaim bbb

# 配置802.1X用户使用RADIUS方案2000进行认证、授权、计费。

[Device-isp-bbb] authentication lan-access radius-scheme 2000

[Device-isp-bbb] authorization lan-access radius-scheme 2000

[Device-isp-bbb] accounting lan-access radius-scheme 2000

[Device-isp-bbb] quit

(4) 配置802.1X

# 开启全局802.1X特性。

[Device] dot1x

# 开启指定端口的802.1X特性。

[Device] interface ethernet 1/0/2

[Device-Ethernet1/0/2] dot1x

# 配置端口上进行接入控制的方式为 portbased。

[Device-Ethernet1/0/2] dot1x port-method portbased

# 配置端口的授权状态为 auto。（此配置可选，端口的授权状态缺省为 auto）

[Device-Ethernet1/0/2] dot1x port-control auto

[Device-Ethernet1/0/2] quit

# 配置指定端口的Guest VLAN。

[Device] dot1x guest-vlan 10 interface ethernet 1/0/2

4. 验证配置结果

通过命令 display dot1x interface ethernet 1/0/2可以查看端口Ethernet1/0/2上Guest VLAN的配置情况。

若在指定的时间之内无客户端进行认证或者无客户端认证成功，则通过命令 display vlan 10可以查看到端口Ethernet1/0/2加入了配置的Guest VLAN。

在用户认证成功之后，通过 display interface ethernet 1/0/2可以看到用户接入的端口Ethernet1/0/2加入了认证服务器下发的VLAN 5中。

1.6.3 802.1X认证配合下发ACL配置举例

1. 组网需求

用户通过Device的端口Ethernet1/0/1接入网络，Device对该端口接入的用户进行802.1X认证以控制其访问Internet，具体要求如下：

l 使用RADIUS服务器10.1.1.1/24作为认证/授权服务器，RADIUS服务器10.1.1.2/24作为计费服务器；

l 通过认证服务器下发ACL，禁止上线的802.1X用户在工作日的工作时间（8:00～18:00）访问IP地址为10.0.0.1/24的FTP服务器。

2. 组网图

图1-13 下发ACL典型组网图

3. 配置步骤

l 下述配置步骤中包含了若干AAA/RADIUS协议的配置命令，关于这些命令的详细介绍请参见“安全命令参考”中的“AAA”。

l 完成802.1X客户端的配置，并保证接入端口加入Guest VLAN或授权VLAN之后客户端能够及时更新IP地址，以实现与相应网络资源的互通。

l 完成RADIUS服务器的配置，添加用户帐户，指定要授权下发的ACL（本例中为ACL 3000），并保证用户的认证/授权/计费功能正常运行。

# 配置各接口的IP地址（略）。

# 配置RADIUS方案。

<Device> system-view

[Device] radius scheme 2000

[Device-radius-2000] primary authentication 10.1.1.1 1812

[Device-radius-2000] primary accounting 10.1.1.2 1813

[Device-radius-2000] key authentication abc

[Device-radius-2000] key accounting abc

[Device-radius-2000] user-name-format without-domain

[Device-radius-2000] quit

# 配置ISP域的AAA方法。

[Device] domaim 2000

[Device-isp-2000] authentication default radius-scheme 2000

[Device-isp-2000] authorization default radius-scheme 2000

[Device-isp-2000] accounting default radius-scheme 2000

[Device-isp-2000] quit

# 配置名为ftp的时间段，其时间范围为每周工作日的8点到18点。

[Device] time-range ftp 8:00 to 18:00 working-day

# 配置ACL 3000，拒绝用户在工作日的工作时间内访问FTP服务器10.0.0.1的报文通过。

[Device] acl number 3000

[Device-acl-adv-3000] rule 0 deny ip destination 10.0.0.1 0 time-range ftp

[Device-acl-adv-3000] quit

# 开启全局802.1X特性。

[Device] dot1x

# 开启指定端口的802.1X特性。

[Device] interface ethernet 1/0/1

[Device-Ethernet1/0/1] dot1x

4. 验证配置结果

当用户认证成功上线后，在工作日的工作时间Ping FTP服务器。

C:\>ping 10.0.0.1

Pinging 10.0.0.1 with 32 bytes of data:

Request timed out.

Request timed out.

Request timed out.

Request timed out.

Ping statistics for 10.0.0.1:

Packets: Sent = 4, Received = 0, Lost = 4 (100% loss),

由以上过程可知，用户无法 ping 通FTP服务器，说明认证服务器下发的ACL已对该用户生效。


2 802.1X支持EAD快速部署配置

相关链接

  • 2.1 802.1X支持EAD快速部署简介
  • 2.2 配置EAD快速部署
  • 2.3 EAD快速部署显示和维护
  • 2.4 EAD快速部署典型配置举例
  • 2.5 常见配置错误举例
父主题： 02-802.1X配置


2.1 802.1X支持EAD快速部署简介

2.1.1 概述

EAD（Endpoint Admission Defense，端点准入防御）作为一个网络端点接入控制方案，它通过安全客户端、安全策略服务器、接入设备以及第三方服务器的联动，加强了对用户的集中管理，提升了网络的整体防御能力。但是在实际的应用过程中EAD客户端的部署工作量很大，例如，需要网络管理员手动为每一个EAD客户端下载、升级客户端软件，这在EAD客户端数目较多的情况下给管理员带来了操作上的不便。

802.1X认证支持的EAD快速部署功能就可以解决以上问题，它允许未通过认证的802.1X用户访问一个特定的IP地址段，并可以将用户发起的HTTP访问请求重定向到该IP地址段中的一个指定的URL，实现用户自动下载并安全EAD客户端的目的。

2.1.2 实现机制

802.1X支持的EAD快速部署是通过以下两个功能配合实现的。

1. 未认证用户可访问免认证网段（Free IP）

802.1X终端用户在认证成功之前，可以访问一个免认证的IP地址段，也称为Free IP。该IP地址段中可以配置一个或多个特定服务器，用于提供EAD客户端的下载升级或者动态地址分配等服务。

2. 用户HTTP访问URL的重定向

802.1X终端用户在认证成功之前，如果使用浏览器访问网络，设备会将用户访问的URL重定向到已配置的URL（例如，重定向到EAD客户端下载界面），这样只要用户打开浏览器，就必须进入管理员预设的界面。提供重定向URL的服务器必须位于用户受限访问的特定网段内。


2.2 配置EAD快速部署

目前，MAC地址认证和端口安全特性不支持EAD的快速部署功能，全局使能MAC认证或端口安全功能将会使EAD快速部署功能失效。

2.2.1 配置准备

l 开启全局802.1X特性

l 开启指定端口的802.1X特性，并指定端口的授权模式为 auto

2.2.2 配置Free IP

配置Free IP之后，EAD的快速部署功能将立即处于使能状态。未通过认证的802.1X终端用户可以访问该IP地址段中的网络资源。

表2-1 配置用户可访问的免认证网段

配置步骤 | 命令 | 说明
进入系统视图 | system-view | -
配置Free IP | dot1x free-ip ip-address { mask-address | mask-length } | 必选 缺省情况下，未定义Free IP

l MAC地址认证、端口安全功能、二层Portal功能均与Free IP配置互斥。

l 在同时配置了Free IP与Guest VLAN功能、Auth-Fail VLAN功能的情况下，请保证Free IP为Guest VLAN和Auth-Fail VLAN可允许访问的网络资源。这种情况下，用户只能访问Free IP，不能访问其它资源。

l 未通过802.1X认证的用户若要通过外网的DHCP服务器动态获得IP地址，则需要保证该DHCP服务器的IP地址在配置的Free IP内。

2.2.3 配置用户HTTP访问的重定向URL

终端用户在802.1X认证成功之前（包括认证失败）发起的HTTP访问请求都会被设备重定向到本命令配置的URL。

表2-2 配置用户HTTP访问的重定向URL

配置步骤 | 命令 | 说明
进入系统视图 | system-view | -
配置用户HTTP访问的重定向URL | dot1x url url-string | 必选 缺省情况下，未定义重定向URL

重定向的URL必须处于Free IP网段内，否则无法实现重定向。

2.2.4 配置EAD规则的老化时间

EAD快速部署功能通过制订EAD规则（通常为ACL规则）来给予未通过认证的终端用户受限制的网络访问权限，在用户认证成功后，所占用的ACL将被释放。由于设备支持的ACL数量有限，当大量用户同时上线时，ACL资源将迅速被占用，如果没有用户认证成功，将出现ACL数量不足的情况，这样会导致一部分新接入的用户无法上线。

管理员可以通过配置EAD规则的老化时间来控制用户对ACL资源的占用，当用户访问网络时该定时器即开始计时，在定时器超时或者用户下载客户端并成功通过认证之后，该用户所占用的ACL资源即被删除，这样那些在老化时间内未进行任何操作的用户所占用的ACL资源会及时得到释放。在接入用户数量较多时，可以将超时时间适当缩短，以提高ACL的使用效率。

表2-3 配置EAD规则老化超时时间

配置步骤 | 命令 | 说明
进入系统视图 | system-view | -
配置EAD规则老化时间 | dot1x timer ead-timeout ead-timeout-value | 可选 缺省情况下，EAD规则老化时间为30分钟


2.3 EAD快速部署显示和维护

在完成上述配置后，在任意视图下执行 display 命令可以显示配置后EAD快速部署的运行情况，通过查看显示信息验证配置的效果。

表2-4 EAD快速部署显示和维护

操作 | 命令
显示802.1X的会话连接信息、相关统计信息或配置信息 | display dot1x [ sessions | statistics ] [ interface interface-list ]


2.4 EAD快速部署典型配置举例

1. 组网需求

某公司用户主机通过Device接入Internet，并通过DHCP服务器动态获取IP地址。目前，公司部署EAD解决方案，要求所有用户主机通过802.1X认证上网，因此需要所有主机上安装配套的802.1X客户端。由于网络中的用户主机数量较大，为减轻网络管理员安装以及升级802.1X客户端的工作量，在192.168.2.0/24网段部署一台Web服务器专门提供客户端软件下载。具体要求如下：

l 未进行802.1X认证或者802.1X认证失败的用户，只能访问192.168.2.0/24网段，并可通过该网段内的DHCP服务器动态获取192.168.1.0/24网段的IP地址。

l 未进行802.1X认证或者802.1X认证失败的用户通过浏览器访问非192.168.2.0/24网段的外部网络时，用户访问的页面均会被Device重定向至管理员预设的Web服务器页面，该Web服务器页面将提示用户进行802.1X客户端的下载。

l 用户成功通过802.1X认证之后，可正常访问网络。

2. 组网图

图2-1 EAD快速部署典型配置组网图

3. 配置步骤

l 完成DHCP服务器的配置，保证用户可成功获取192.168.1.0/24网段的IP地址。

l 完成Web服务器的配置，保证用户可成功登录预置的Web页面进行802.1X客户端的下载。

l 完成认证服务器的配置，保证用户的认证/授权/计费功能正常运行。

(1) 配置各接口的IP地址（略）

(2) 配置DHCP中继

# 使能DHCP服务。

<Device> system-view

[Device] dhcp enable

# 配置DHCP服务器的地址。

[Device] dhcp relay server-group 1 ip 192.168.2.2

# 配置接口Vlan-interface2工作在DHCP中继模式。

[Device] interface vlan-interface 2

[Device-Vlan-interface2] dhcp select relay

# 配置接口Vlan-interface2对应DHCP服务器组1。

[Device-Vlan-interface2] dhcp relay server-select 1

[Device-Vlan-interface2] quit

(3) 配置RADIUS方案和ISP域

请参见“1.6.1 802.1X认证配置举例”。

(4) 配置802.1X

# 配置Free IP。

[Device] dot1x free-ip 192.168.2.0 24

# 配置IE访问的重定向URL。

[Device] dot1x url http://192.168.2.3

# 开启全局802.1X特性。

[Device] dot1x

# 开启指定端口的802.1X特性。

[Device] interface ethernet 1/0/1

[Device-Ethernet1/0/1] dot1x

4. 验证配置结果

以上配置完成之后，执行命令 display dot1x 可以查看802.1X的配置情况。用户主机成功获得DHCP服务器分配的IP地址之后，在Windows XP操作系统的主机上执行 ping Free IP中的地址，可验证在802.1X认证成功之前是否可以访问免认证网段192.168.2.0/24。

C:\>ping 192.168.2.3

Pinging 192.168.2.3 with 32 bytes of data:

Reply from 192.168.2.3: bytes=32 time<1ms TTL=128

Reply from 192.168.2.3: bytes=32 time<1ms TTL=128

Reply from 192.168.2.3: bytes=32 time<1ms TTL=128

Reply from 192.168.2.3: bytes=32 time<1ms TTL=128

Ping statistics for 192.168.2.3:

Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),

Approximate round trip times in milli-seconds:

Minimum = 0ms, Maximum = 0ms, Average = 0ms

用户在802.1X认证成功之前，通过浏览器访问任何非Free IP的外部网站地址时，都会被重定向到Web server页面，此页面提供802.1X客户端的下载服务。需要注意的是，地址栏内输入的地址应该为非Free IP地址才有效，例如3.3.3.3或者http://3.3.3.3。


2.5 常见配置错误举例

2.5.1 用户通过浏览器访问外部网络不能正确重定向

1. 故障现象

用户在浏览器中输入地址，但该HTTP访问不能被正确重定向到指定的URL服务器。

2. 故障分析

l 用户在浏览器地址栏内输入了字符串类型的地址。由于用户主机使用的操作系统首先会将这个字符串地址作为名字进行网络地址解析，如果解析不成功通常会以非X.X.X.X形式的网络地址发送ARP请求，这样的请求不能进行重定向；

l 用户在IE地址栏内输入了Free IP内的任意地址。设备会认为用户试图访问Free IP内的某台主机，而不对其进行重定向，即使这台主机不存在；

l 用户在配置和组网时没有将服务器加入Free IP，或者配置的URL为不存在的地址，或者该URL指向的服务器没有提供Web服务。

3. 处理过程

l 地址栏内输入的地址应该为X.X.X.X（点分十进制格式）的非Free IP地址才有效。

l 确保设备及服务器上的配置正确且有效。


1 MAC地址认证配置

相关链接

  • 1.1 MAC地址认证简介
  • 1.2 MAC地址认证配置任务简介
  • 1.3 MAC地址认证基本配置
  • 1.4 配置MAC地址认证用户使用的认证域
  • 1.5 配置MAC地址认证的Guest VLAN
  • 1.6 MAC地址认证的显示和维护
  • 1.7 MAC地址认证典型配置举例
父主题： 03-MAC地址认证配置


1.1 MAC地址认证简介

1.1.1 MAC地址认证概述

MAC地址认证是一种基于端口和MAC地址对用户的网络访问权限进行控制的认证方法，它不需要用户安装任何客户端软件。设备在启动了MAC地址认证的端口上首次检测到用户的MAC地址以后，即启动对该用户的认证操作。认证过程中，不需要用户手动输入用户名或者密码。若该用户认证成功，则允许其通过端口访问网络资源，否则该用户的MAC地址就被添加为静默MAC。在静默时间内（可通过静默定时器配置），来自此MAC地址的用户报文到达时，设备直接做丢弃处理，以防止非法MAC短时间内的重复认证。

若配置的静态MAC或者当前认证通过的MAC地址与静默MAC相同，则MAC地址认证失败后的MAC静默功能将会失效。

1.1.2 使用不同用户名格式的MAC地址认证

目前设备支持两种方式的MAC地址认证，通过RADIUS（Remote Authentication Dial-In User Service，远程认证拨号用户服务）服务器进行远程认证和在接入设备上进行本地认证。有关远程RADIUS认证和本地认证的详细介绍请参见“安全配置指导”中的“AAA”。

根据设备最终用于验证用户身份的用户名格式和内容的不同，可以将MAC地址认证使用的用户名格式分为两种类型：

l MAC地址用户名格式：使用用户的MAC地址作为认证时的用户名和密码；

l 固定用户名格式：不论用户的MAC地址为何值，所有用户均使用设备上指定的一个固定用户名和密码替代用户的MAC地址作为身份信息进行认证。由于同一个端口下可以有多个用户进行认证，因此这种情况下端口上的所有MAC地址认证用户均使用同一个固定用户名进行认证，服务器端仅需要配置一个用户帐户即可满足所有认证用户的认证需求，适用于接入客户端比较可信的网络环境。

图1-1 不同用户名格式下的MAC地址认证示意图

2. RADIUS服务器认证方式进行MAC地址认证

当选用RADIUS服务器认证方式进行MAC地址认证时，设备作为RADIUS客户端，与RADIUS服务器配合完成MAC地址认证操作：

l 若采用MAC地址用户名格式，则设备将检测到的用户MAC地址作为用户名和密码发送给RADIUS服务器进行验证。

l 若采用固定用户名格式，则设备将一个已经在本地指定的MAC地址认证用户使用的固定用户名和对应的密码作为待认证用户的用户名和密码，发送给RADIUS服务器进行验证。

RADIUS服务器完成对该用户的认证后，认证通过的用户可以访问网络。

3. 本地认证方式进行MAC地址认证

当选用本地认证方式进行MAC地址认证时，直接在设备上完成对用户的认证。需要在设备上配置本地用户名和密码：

l 若采用MAC地址用户名格式，则设备将检测到的用户MAC地址作为待认证用户的用户名和密码与配置的本地用户名和密码进行匹配。

l 若采用固定用户名，则设备将一个已经在本地指定的MAC地址认证用户使用的固定用户名和对应的密码作为待认证用户的用户名和密码与配置的本地用户名和密码进行匹配。

用户名和密码匹配成功后，用户可以访问网络。

1.1.3 MAC地址认证定时器

可配置的MAC地址认证定时器包括以下几种：

l 下线检测定时器（offline-detect）：用来设置用户空闲超时的时间间隔。如果在两个时间间隔之内，某在线用户没有流量通过设备，设备将切断该用户的连接，同时通知RADIUS服务器，停止对该用户的计费。

l 静默定时器（quiet）：用来设置用户认证失败以后，设备停止对其提供认证服务的时间间隔。在静默期间，设备不对来自该用户的报文进行认证处理，直接丢弃。静默期后，如果设备再次收到该用户的报文，则依然可以对其进行认证处理。

l 服务器超时定时器（server-timeout）：用来设置设备同RADIUS服务器的连接超时时间。在用户的认证过程中，如果到服务器超时定时器超时时设备一直没有收到RADIUS服务器的应答，则设备将在相应的端口上禁止此用户访问网络。

1.1.4 和MAC地址认证配合使用的特性

1. 下发VLAN

为了将受限的网络资源与未认证用户隔离，通常将受限的网络资源和用户划分到不同的VLAN。MAC地址认证支持认证服务器（远程或本地）授权下发VLAN功能，即当用户通过MAC地址认证后，认证服务器将指定的受限网络资源所在的VLAN作为授权VLAN下发到用户认证的端口。该端口被加入到授权VLAN中后，用户便可以访问这些受限的网络资源。

设备根据用户接入的端口链路类型，按以下三种情况将端口加入下发的授权VLAN中。

l 若用户从Access类型的端口接入，则端口离开当前VLAN并加入下发的授权VLAN中。

l 若用户从Trunk类型的端口接入，则设备允许下发的授权VLAN通过该端口，并且修改该端口的缺省VLAN为下发的授权VLAN。

l 若用户从Hybrid类型的端口接入，则设备允许授权下发的VLAN以不携带Tag的方式通过该端口，并且修改该端口的缺省VLAN为下发的授权VLAN。需要注意的是，若该端口上使能了MAC VLAN功能，则设备将根据认证服务器下发的授权VLAN动态地创建基于用户MAC的VLAN，而端口的缺省VLAN并不改变。

2. 下发ACL

从认证服务器（远程或本地）下发的ACL被称为授权ACL，它为用户访问网络提供了良好的过滤条件设置功能。MAC地址认证支持认证服务器授权下发ACL功能，即当用户通过MAC地址认证后，如果认证服务器上配置了授权ACL，则设备会根据服务器下发的授权ACL对用户所在端口的数据流进行控制。为使下发的授权ACL生效，需要提前在设备上配置相应的ACL规则。而且在用户访问网络的过程中，可以通过改变服务器的授权ACL设置来改变用户的访问权限。

3. MAC地址认证的Guest VLAN

Guest VLAN功能允许用户在认证失败的情况下访问某一特定VLAN中的资源，比如获取客户端软件，升级客户端或执行其他一些用户升级程序。这个VLAN称之为Guest VLAN。

如果接入用户的端口上配置了Guest VLAN，则该端口上认证失败的用户会被加入Guest VLAN，且设备允许Guest VLAN以不携带Tag的方式通过该端口，即该用户被授权访问Guest VLAN里的资源。若Guest VLAN中的用户再次发起认证未成功，则该用户将仍然处于Guest VLAN内；若认证成功，则会根据认证服务器是否下发授权VLAN决定是否将用户加入到下发的授权VLAN中，在认证服务器未下发授权VLAN的情况下，用户回到加入Guest VLAN之前端口所在的VLAN。


1.2 MAC地址认证配置任务简介

表1-1 MAC地址认证配置任务简介

配置任务 | 说明 | 详细配置
MAC地址认证基本配置 | 必选 | 1.3
配置MAC地址认证用户使用的认证域 | 可选 | 1.4
配置MAC地址认证的Guest VLAN | 可选 | 1.5


1.3 MAC地址认证基本配置

1.3.1 配置准备

l 创建并配置ISP域。

l 若采用本地认证方式，需创建本地用户并设置其密码，且本地用户的服务类型应设置为 lan-access。

l 若采用远程RADIUS认证方式，需要确保设备与RADIUS服务器之间的路由可达，并添加MAC地址认证用户帐号。

创建本地用户或添加远程用户帐号时，需要注意这些用户的用户名必须与设备上指定的MAC地址认证用户名格式保持一致。

1.3.2 配置过程

只有全局和端口的MAC地址认证特性均开启后，MAC地址认证配置才能在端口上生效。

1. 配置全局MAC地址认证

表1-2 配置全局MAC地址认证

操作 | 命令 | 说明
进入系统视图 | system-view | -
启动全局的MAC地址认证特性 | mac-authentication | 必选 缺省情况下，全局的MAC地址认证特性为关闭状态
配置MAC地址认证定时器 | mac-authentication timer { offline-detect offline-detect-value | quiet quiet-value | server-timeout server-timeout-value } | 可选 缺省情况下，下线检测定时器为300秒，静默定时器为60秒，服务器超时定时器取值为100秒
配置MAC地址认证用户的用户名格式 | mac-authentication user-name-format { fixed [ account name ] [ password { cipher | simple } password ] | mac-address [ { with-hyphen | without-hyphen } [ lowercase | uppercase ] ] } | 可选 缺省情况下，使用用户的源MAC地址做用户名与密码，其中字母为小写，MAC地址不带连字符“-”

全局MAC地址认证与802.1X的EAD快速部署功能失效功能互斥，开启全局MAC地址认证将会使802.1X的EAD快速部署功能失效。

2. 配置端口MAC地址认证

表1-3 配置端口MAC地址认证

配置步骤 |  | 命令 | 说明
进入系统视图 |  | system-view | -
开启端口MAC地址认证特性 | 系统视图 | mac-authentication interface interface-list | 二者必选其一 缺省情况下，端口的MAC地址认证特性为关闭状态
 | 以太网端口视图 | interface interface-type interface-number
 |  | mac-authentication
配置端口同时可容纳接入的MAC地址认证用户数量的最大值 |  | mac-authentication max-user user-number | 可选 端口同时可容纳接入用户数量的最大值为2048

端口启动MAC地址认证与端口加入聚合组及端口加入业务环回组互斥。


1.4 配置MAC地址认证用户使用的认证域

缺省情况下，对端口上接入的用户进行MAC地址认证时，使用系统缺省的认证域。为了便于接入设备的管理员更为灵活地部署用户的接入策略，设备支持指定MAC地址认证用户使用的认证域，可以通过以下两种配置实现：

l 在系统视图下指定一个认证域，该认证域对所有使能了MAC地址认证的端口生效。

l 在以太网端口视图下指定该端口的认证域，不同的端口可以指定不同的认证域。

如果系统视图和以太网端口视图下都指定了认证域，则端口优先采用本端口上指定的认证域。

表1-4 指定MAC地址认证用户使用的认证域

配置步骤 | 命令 | 说明
进入系统视图 | system-view | -
指定MAC地址认证用户使用的认证域 | mac-authentication domain domain-name | 二者至少选其一 缺省情况下，未指定MAC地址认证用户使用的认证域，使用系统缺省的认证域
 | interface interface-type interface-number mac-authentication domain domain-name

端口上接入的MAC地址认证用户将按照如下先后顺序选择认证域：端口上指定的认证域-->系统视图下指定的认证域-->系统缺省的认证域。关于认证域的相关介绍请参见“安全配置指导”中的“AAA”。


1.5 配置MAC地址认证的Guest VLAN

l 若在802.1X接入控制方式为MAC-based的端口上同时配置了802.1X认证的Guest VLAN与MAC地址认证的Guest VLAN，则仅802.1X认证的Guest VLAN生效，因此建议在配置MAC地址认证的Guest VLAN之前，确认是否配置了802.1X认证的Guest VLAN。关于802.1X的Guest VLAN介绍请参见“安全配置指导”中的“802.1X”。

l MAC地址认证Guest VLAN功能的优先级高于端口安全中端口入侵检测的阻塞MAC功能，低于端口入侵检测的端口关闭功能，因此在开启了端口安全入侵检测的端口关闭功能时，MAC地址认证的Guest VLAN功能不生效。关于端口入侵检测功能的具体介绍请参见“安全配置指导”中的“端口安全”。

l 如果某个VLAN被指定为Super VLAN，则该VLAN不能被指定为某个端口的Guest VLAN；同样，如果某个VLAN被指定为某个端口的Guest VLAN，则该VLAN不能被指定为Super VLAN。关于Super VLAN的详细内容请参见“二层技术-以太网交换配置指导”中的“Super VLAN”。

1.5.1 配置准备

l 开启MAC地址认证特性。

l 端口的MAC VLAN功能已经使能。

l 已经创建需要配置为Guest VLAN的VLAN。

1.5.2 配置Guest VLAN

表1-5 配置Guest VLAN

配置步骤 | 命令 | 说明
进入系统视图 | system-view | -
进入以太网端口视图 | interface interface-type interface-number | -
配置MAC认证的Guest VLAN | mac-authentication guest-vlan guest-vlan-id | 必选 缺省情况下，没有配置MAC认证的Guest VLAN

l 不同的端口可以配置不同的Guest VLAN，但一个端口只能配置一个Guest VLAN。

l MAC地址认证Guest VLAN功能的优先级高于MAC地址认证的静默MAC功能，即认证失败的用户可访问指定的Guest VLAN中的资源，且该用户的MAC地址不会被加入静默MAC。


1.6 MAC地址认证的显示和维护

在完成上述配置后，在任意视图下执行 display 命令可以显示配置后MAC地址认证的运行情况，通过查看显示信息验证配置的效果。

在用户视图下，执行 reset 命令可以清除相关统计信息。

表1-6 MAC地址认证的显示和维护

操作 | 命令
显示MAC地址认证的相关信息 | display mac-authentication [ interface interface-list ] [ | { begin | exclude | include } regular-expression ]
清除MAC地址认证的统计信息 | reset mac-authentication statistics [ interface interface-list ]


1.7 MAC地址认证典型配置举例

1.7.1 本地MAC地址认证

1. 组网需求

如 图1-2 所示，某用户的工作站与以太网设备的端口Ethernet1/0/1相连接。

l 设备的管理者希望在端口Ethernet1/0/1上对用户接入进行MAC地址认证，以控制其对Internet的访问。

l 要求设备每隔180秒就对用户是否下线进行检测；并且当用户认证失败时，需等待180秒后才能对用户再次发起认证。

l 所有用户都属于域：aabbcc.net，认证时使用本地认证的方式。

l 使用用户的MAC地址做用户名和密码，其中MAC地址带连字符、字母小写。

2. 组网图

图1-2 启动MAC地址认证对接入用户进行本地认证

3. 配置步骤

(1) 配置本地MAC地址认证

# 添加本地接入用户。用户名和密码均为接入用户的MAC地址00-e0-fc-12-34-56，服务类型为 lan-access。

<Device> system-view

[Device] local-user 00-e0-fc-12-34-56

[Device-luser-00-e0-fc-12-34-56] password simple 00-e0-fc-12-34-56

[Device-luser-00-e0-fc-12-34-56] service-type lan-access

[Device-luser-00-e0-fc-12-34-56] quit

# 配置ISP域，使用本地认证方法。

[Device] domain aabbcc.net

[Device-isp-aabbcc.net] authentication lan-access local

[Device-isp-aabbcc.net] quit

# 开启全局MAC地址认证特性。

[Device] mac-authentication

# 开启端口Ethernet1/0/1的MAC地址认证特性。

[Device] mac-authentication interface ethernet 1/0/1

# 配置MAC地址认证用户所使用的ISP域。

[Device] mac-authentication domain aabbcc.net

# 配置MAC地址认证的定时器。

[Device] mac-authentication timer offline-detect 180

[Device] mac-authentication timer quiet 180

# 配置MAC地址认证用户名格式：使用带连字符的MAC地址作为用户名与密码，其中字母小写。

[Device] mac-authentication user-name-format mac-address with-hyphen lowercase

(2) 验证配置结果

# 显示MAC地址配置信息。

<Device> display mac-authentication

MAC address authentication is enabled.

User name format is MAC address in lowercase, like xx-xx-xx-xx-xx-xx

Fixed username:mac

Fixed password:not configured

Offline detect period is 180s

Quiet period is 180s.

Server response timeout value is 100s

The max allowed user number is 2048 per slot

Current user number amounts to 1

Current domain is aabbcc.net

Silent Mac User info:

MAC Addr From Port Port Index

Ethernet1/0/1 is link-up

MAC address authentication is enabled

Authenticate success: 1, failed: 0

Max number of on-line users is 2048

Current online user number is 1

MAC Addr Authenticate state Auth Index

00e0-fc12-3456 MAC_AUTHENTICATOR_SUCCESS 29

# 用户认证成功后，可通过如下显示命令查看上线用户的连接信息。

<Device> display connection

Slot: 1

Index=29 ,Username=00-e0-fc-12-34-56@aabbcc.net

IP=N/A

IPv6=N/A

MAC=00e0-fc12-3456

Total 1 connection(s) matched on slot 1.

Total 1 connection(s) matched.

1.7.2 使用RADIUS服务器进行MAC地址认证

1. 组网需求

如图1-3 所示，用户主机Host通过端口Ethernet1/0/1连接到设备上，设备通过RADIUS服务器对用户进行认证、授权和计费。

l 设备的管理者希望在端口Ethernet1/0/1上对用户接入进行MAC地址认证，以控制其对Internet的访问。

l 要求设备每隔180秒就对用户是否下线进行检测；并且当用户认证失败时，需等待180秒后才能对用户再次发起认证。

l 所有用户都属于域2000，认证时采用固定用户名格式，用户名为aaa，密码为123456。

2. 组网图

图1-3 启动MAC地址认证对接入用户进行RADIUS认证

3. 配置步骤

确保RADIUS服务器与设备路由可达，并成功添加了接入用户帐户：用户名为aaa，密码为123456。

(1) 配置使用RADIUS服务器进行MAC地址认证

# 配置RADIUS方案。

<Device> system-view

[Device] radius scheme 2000

[Device-radius-2000] primary authentication 10.1.1.1 1812

[Device-radius-2000] primary accounting 10.1.1.2 1813

[Device-radius-2000] key authentication abc

[Device-radius-2000] key accounting abc

[Device-radius-2000] user-name-format without-domain

[Device-radius-2000] quit

# 配置ISP域的AAA方法。

[Device] domain 2000

[Device-isp-2000] authentication default radius-scheme 2000

[Device-isp-2000] authorization default radius-scheme 2000

[Device-isp-2000] accounting default radius-scheme 2000

[Device-isp-2000] quit

# 开启全局MAC地址认证特性。

[Device] mac-authentication

# 开启端口Ethernet1/0/1的MAC地址认证特性。

[Device] mac-authentication interface ethernet 1/0/1

# 配置MAC地址认证用户所使用的ISP域。

[Device] mac-authentication domain 2000

# 配置MAC地址认证的定时器。

[Device] mac-authentication timer offline-detect 180

[Device] mac-authentication timer quiet 180

# 配置MAC地址认证使用固定用户名格式：用户名为aaa，密码为123456。

[Device] mac-authentication user-name-format fixed account aaa password simple 123456

(2) 验证配置结果

# 显示MAC地址配置信息。

<Device> display mac-authentication

MAC address authentication is enabled.

User name format is fixed account

Fixed username:aaa

Fixed password:123456

Offline detect period is 180s

Quiet period is 180s.

Server response timeout value is 100s

The max allowed user number is 2048 per slot

Current user number amounts to 1

Current domain is 2000

Silent Mac User info:

MAC ADDR From Port Port Index

Ethernet1/0/1 is link-up

MAC address authentication is enabled

Authenticate success: 1, failed: 0

Max number of on-line users is 2048

Current online user number is 1

MAC ADDR Authenticate state Auth Index

00e0-fc12-3456 MAC_AUTHENTICATOR_SUCCESS 29

# 用户认证成功后，可通过如下显示命令查看上线用户的连接信息。

<Device> display connection

Slot: 1

Index=29 ,Username=aaa@2000

IP=N/A

IPv6=N/A

MAC=00e0-fc12-3456

Total 1 connection(s) matched on slot 1.

Total 1 connection(s) matched.

1.7.3 下发ACL典型配置举例

1. 组网需求

如图1-4 所示，用户主机Host通过端口Ethernet1/0/1连接到设备上，设备通过RADIUS服务器对用户进行认证、授权和计费，Internet网络中有一台FTP服务器，IP地址为10.0.0.1。现有如下组网需求：

l 在端口Ethernet1/0/1上对用户接入进行MAC地址认证，以控制其对Internet的访问。认证时使用用户的源MAC地址做用户名和密码，其中MAC地址带连字符、字母小写。

l 当用户认证成功上线后，允许用户访问除FTP服务器之外的Internet资源。

2. 组网图

图1-4 下发ACL典型配置组网图

3. 配置步骤

l 确保RADIUS服务器与设备路由可达。

l 由于该例中使用了MAC地址认证的缺省用户名和密码，即使用用户的源MAC地址做用户名与密码，因此还要保证RADIUS服务器上正确添加了接入用户帐户：用户名为00-e0-fc-12-34-56，密码为00-e0-fc-12-34-56。

l 指定RADIUS服务器上的授权ACL为设备上配置的ACL 3000。

(1) 配置授权ACL

# 配置ACL 3000，拒绝目的IP地址为10.0.0.1的报文通过。

<Sysname> system-view

[Sysname] acl number 3000

[Sysname-acl-adv-3000] rule 0 deny ip destination 10.0.0.1 0

[Sysname-acl-adv-3000] quit

(2) 配置使用RADIUS服务器进行MAC地址认证

# 配置RADIUS方案。

[Sysname] radius scheme 2000

[Sysname-radius-2000] primary authentication 10.1.1.1 1812

[Sysname-radius-2000] primary accounting 10.1.1.2 1813

[Sysname-radius-2000] key authentication abc

[Sysname-radius-2000] key accounting abc

[Sysname-radius-2000] user-name-format without-domain

[Sysname-radius-2000] quit

# 配置ISP域的AAA方法。

[Sysname] domain 2000

[Sysname-isp-2000] authentication default radius-scheme 2000

[Sysname-isp-2000] authorization default radius-scheme 2000

[Sysname-isp-2000] accounting default radius-scheme 2000

[Sysname-isp-2000] quit

# 开启全局MAC地址认证特性。

[Sysname] mac-authentication

# 配置MAC地址认证用户所使用的ISP域。

[Sysname] mac-authentication domain 2000

# 配置MAC地址认证用户名格式：使用带连字符的MAC地址做用户名与密码，其中字母小写。

[Sysname] mac-authentication user-name-format mac-address with-hyphen lowercase

# 开启指定端口的MAC地址认证特性。

[Sysname] interface ethernet 1/0/1

[Sysname-Ethernet1/0/1] mac-authentication

(3) 验证配置结果

用户Host认证成功后，通过在设备上执行 display connection 命令可以查看到已上线用户信息。

[Sysname-Ethernet1/0/1] display connection

Slot: 1

Index=9 , Username=00-e0-fc-12-34-56@2000

IP=N/A

IPv6=N/A

MAC=00e0-fc12-3456

Total 1 connection(s) matched on slot 1.

Total 1 connection(s) matched.

用户通过 ping FTP服务器，可以验证认证服务器下发的ACL 3000是否生效。

C:\>ping 10.0.0.1

Pinging 10.0.0.1 with 32 bytes of data:

Request timed out.

Request timed out.

Request timed out.

Request timed out.

Ping statistics for 10.0.0.1:

Packets: Sent = 4, Received = 0, Lost = 4 (100% loss),


1 Portal配置

相关链接

  • 1.1 Portal简介
  • 1.2 Portal配置任务简介
  • 1.3 配置准备
  • 1.4 指定Portal服务器
  • 1.5 配置本地Portal服务器
  • 1.6 使能Portal认证
  • 1.7 控制Portal用户的接入
  • 1.8 配置Portal认证的Auth-Fail VLAN
  • 1.9 配置接口发送RADIUS报文的相关属性
  • 1.10 配置接口发送Portal报文使用的源地址
  • 1.11 配置Portal支持双机热备
  • 1.12 指定Portal用户认证成功后认证页面的自动跳转目的网站地址
  • 1.13 配置Portal探测功能
  • 1.14 强制Portal用户下线
  • 1.15 Portal显示和维护
  • 1.16 Portal典型配置举例
  • 1.17 常见配置错误举例
父主题： 04-Portal配置


1.1 Portal简介

1.1.1 Portal概述

Portal在英语中是入口的意思。Portal认证通常也称为Web认证，一般将Portal认证网站称为门户网站。

未认证用户上网时，设备强制用户登录到特定站点，用户可以免费访问其中的服务。当用户需要使用互联网中的其它信息时，必须在门户网站进行认证，只有认证通过后才可以使用互联网资源。

用户可以主动访问已知的Portal认证网站，输入用户名和密码进行认证，这种开始Portal认证的方式称作主动认证。反之，如果用户试图通过HTTP访问其他外网，将被强制访问Portal认证网站，从而开始Portal认证过程，这种方式称作强制认证。

Portal业务可以为运营商提供方便的管理功能，门户网站可以开展广告、社区服务、个性化的业务等，使宽带运营商、设备提供商和内容服务提供商形成一个产业生态系统。

1.1.2 Portal扩展功能

Portal的扩展功能主要是指通过强制接入终端实施补丁和防病毒策略，加强网络终端对病毒攻击的主动防御能力。具体扩展功能如下：

l 安全性检测：在Portal身份认证的基础上增加了安全认证机制，可以检测接入终端上是否安装了防病毒软件、是否更新了病毒库、是否安装了非法软件、是否更新了操作系统补丁等；

l 访问资源受限：用户通过身份认证后仅仅获得访问部分互联网资源（受限资源）的权限，如病毒服务器、操作系统补丁更新服务器等；当用户通过安全认证后便可以访问更多的互联网资源（非受限资源）。

1.1.3 Portal的系统组成

Portal的典型组网方式如 图1-1 所示，它由五个基本要素组成：认证客户端、接入设备、Portal服务器、认证/计费服务器和安全策略服务器。

Portal服务器可以是接入设备之外的独立实体，也可以是存在于接入设备之内的内嵌实体，本文称之为“本地Portal服务器”，因此下文中除对本地支持的Portal服务器做特殊说明之外，其它所有Portal服务器均指独立的Portal服务器，请勿混淆。

图1-1 Portal系统组成示意图

1. 认证客户端

安装于用户终端的客户端系统，为运行HTTP/HTTPS协议的浏览器或运行Portal客户端软件的主机。对接入终端的安全性检测是通过Portal客户端和安全策略服务器之间的信息交流完成的。

2. 接入设备

交换机、路由器等宽带接入设备的统称，主要有三方面的作用：

l 在认证之前，将用户的所有HTTP请求都重定向到Portal服务器。

l 在认证过程中，与Portal服务器、安全策略服务器、认证/计费服务器交互，完成身份认证/安全认证/计费的功能。

l 在认证通过后，允许用户访问被管理员授权的互联网资源。

3. Portal服务器

接收Portal客户端认证请求的服务器端系统，提供免费门户服务和基于Web认证的界面，与接入设备交互认证客户端的认证信息。

4. 认证/计费服务器

与接入设备进行交互，完成对用户的认证和计费。

5. 安全策略服务器

与Portal客户端、接入设备进行交互，完成对用户的安全认证，并对用户进行授权操作。

以上五个基本要素的交互过程为：

(1) 未认证用户访问网络时，在Web浏览器地址栏中输入一个互联网的地址，那么此HTTP请求在经过接入设备时会被重定向到Portal服务器的Web认证主页上；若需要使用Portal的扩展认证功能，则用户必须使用Portal客户端。

(2) 用户在认证主页/认证对话框中输入认证信息后提交，Portal服务器会将用户的认证信息传递给接入设备；

(3) 然后接入设备再与认证/计费服务器通信进行认证和计费；

(4) 认证通过后，如果未对用户采用安全策略，则接入设备会打开用户与互联网的通路，允许用户访问互联网；如果对用户采用了安全策略，则客户端、接入设备与安全策略服务器交互，对用户的安全检测通过之后，安全策略服务器根据用户的安全性授权用户访问非受限资源。

l 无论是Web客户端还是H3C iNode客户端发起的Portal认证，均能支持Portal认证穿越NAT，即Portal客户端位于私网、Portal服务器位于公网，接入设备上启用NAT功能的组网环境下，NAT地址转换不会对Portal认证造成影响，但建议在此组网环境下，将发送Portal报文的源地址配置为接口的公网IP地址。

l 目前支持Portal认证的远端认证/计费服务器为RADIUS（Remote Authentication Dial-In User Service，远程认证拨号用户服务）服务器。

l 目前通过访问Web页面进行的Portal认证不能对用户实施安全策略检查，安全检查功能的实现需要与H3C iNode客户端配合。

1.1.4 使用本地Portal服务器的Portal认证系统

1. 系统组成

本地Portal服务器功能是指，Portal认证系统中不采用外部独立的Portal服务器，而由接入设备实现Portal服务器功能。这种情况下，Portal认证系统仅包括三个基本要素：认证客户端、接入设备和认证/计费服务器，如 图1-2 所示。由于设备支持Web用户直接认证，因此就不需要部署额外的Portal服务器，增强了Portal认证的通用性。

图1-2 使用本地Portal服务器的Portal系统组成示意图

l 使用本地Portal服务器的Portal认证系统不支持Portal扩展功能，因此不需要部署安全策略服务器。

l 内嵌本地Portal服务器的接入设备实现了简单的Portal服务器功能，仅能给用户提供通过Web方式登录、下线的基本功能，并不能完全替代独立的Portal服务器。

2. 认证客户端和本地Portal服务器之间的交互协议

认证客户端和内嵌本地Portal服务器的接入设备之间可以采用HTTP和HTTPS协议通信。若客户端和接入设备之间交互HTTP协议，则报文以明文形式传输，安全性无法保证；若客户端和接入设备之间交互HTTPS协议，则报文基于SSL提供的安全机制以密文的形式传输，数据的安全性有保障。

3. 本地Portal服务器支持用户自定义认证页面

本地Portal服务器支持由用户自定义认证页面的内容，即允许用户编辑一套认证页面的HTML文件，并在压缩之后保存至设备的存储设备中。该套自定义页面中包括六个认证页面：登录页面、登录成功页面、在线页面、下线成功页面、登录失败页面和系统忙页面。本地Portal服务器根据不同的认证阶段向客户端推出对应的认证页面，若不自定义，则分别推出系统提供的缺省认证页面。

关于认证页面文件的自定义规范请参见“ 1.5.1 自定义认证页面文件 ”。

1.1.5 Portal的认证方式

不同的组网方式下，可采用的Portal认证方式不同。按照网络中实施Portal认证的网络层次来分，Portal的认证方式分为两种：二层认证方式和三层认证方式。

1. 二层认证方式

这种方式支持在接入设备连接用户的二层端口上开启Portal认证功能，只允许源MAC地址通过认证的用户才能访问外部网络资源。目前，该认证方式仅支持本地Portal认证，即接入设备作为本地Portal服务器向用户提供Web认证服务。

另外，该方式还支持服务器下发授权VLAN和将认证失败用户加入认证失败VLAN功能（三层认证方式不支持）。

2. 三层认证方式

这种方式支持在接入设备连接用户的三层接口上开启Portal认证功能。三层接口Portal认证又可分为三种不同的认证方式：直接认证方式、二次地址分配认证方式和可跨三层认证方式。直接认证方式和二次地址分配认证方式下，认证客户端和接入设备之间没有三层转发；可跨三层认证方式下，认证客户端和接入设备之间可以跨接三层转发设备。

(1) 直接认证方式

用户在认证前通过手工配置或DHCP直接获取一个IP地址，只能访问Portal服务器，以及设定的免费访问地址；认证通过后即可访问网络资源。认证流程相对二次地址较为简单。

(2) 二次地址分配认证方式

用户在认证前通过DHCP获取一个私网IP地址，只能访问Portal服务器，以及设定的免费访问地址；认证通过后，用户会申请到一个公网IP地址，即可访问网络资源。该认证方式解决了IP地址规划和分配问题，对未认证通过的用户不分配公网IP地址。例如运营商对于小区宽带用户只在访问小区外部资源时才分配公网IP。

使用本地Portal服务器的Portal认证不支持二次地址分配认证方式。

(3) 可跨三层认证方式

和直接认证方式基本相同，但是这种认证方式允许认证用户和接入设备之间跨越三层转发设备。

对于以上三种认证方式，IP地址都是用户的唯一标识。接入设备基于用户的IP地址下发ACL对接口上通过认证的用户报文转发进行控制。由于直接认证和二次地址分配认证下的接入设备与用户之间未跨越三层转发设备，因此接口可以学习到用户的MAC地址，接入设备可以利用学习到MAC地址增强对用户报文转发的控制粒度。

1.1.6 Portal支持EAP认证

在对接入用户身份可靠性要求较高的网络应用中，传统的基于用户名和口令的用户身份验证方式存在一定的安全问题，基于数字证书的用户身份验证方式通常被用来建立更为安全和可靠的网络接入认证机制。

EAP（Extensible Authentication Protocol，可扩展认证协议）可支持多种基于数字证书的认证方式（例如EAP-TLS），它与Portal认证相配合，可共同为用户提供基于数字证书的接入认证服务。

图1-3 Portal支持EAP认证协议交互示意图

如 图1-3 所示，在Portal支持EAP认证的实现中，客户端与Portal服务器之间交互EAP认证报文，Portal服务器与接入设备之间交互携带EAP-Message属性的Portal协议报文，接入设备与RADIUS服务器之间交互携带EAP-Message属性的RADIUS协议报文，由具备EAP服务器功能的RADIUS服务器处理EAP-Message属性中封装的EAP报文，并给出EAP认证结果。整个EAP认证过程中，接入设备只是对Portal服务器与RADIUS服务器之间的EAP-Message属性进行透传，并不对其进行任何处理，因此接入设备上无需任何额外配置。

l 该功能仅能与iMC的Portal服务器以及iNode Portal客户端配合使用。

l 目前，仅使用远程Portal服务器的三层Portal认证支持EAP认证。

1.1.7 二层Portal认证过程

1. 二层Portal认证流程

目前，二层Portal认证只支持本地Portal认证，即由接入设备作为本地Portal服务器向用户提供Web认证服务，具体认证过程如下。

图1-4 二层Portal认证流程图

(1) Portal用户通过HTTP或HTTPS协议发起认证请求。HTTP报文经过配置了本地Portal服务器的接入设备的端口时会被重定向到本地Portal服务器的监听IP地址，本地Portal服务器提供Web页面供用户输入用户名和密码来进行认证。该本地Portal服务器的监听IP地址为接入设备上一个与用户之间路由可达的三层接口IP地址（通常为Loopback接口IP）。

(2) 接入设备与RADIUS服务器之间进行RADIUS协议报文的交互，对用户身份进行验证。

(3) 如果RADIUS认证成功，则接入设备上的本地Portal服务器向客户端发送登录成功页面，通知客户端认证（上线）成功。

2. 支持下发授权VLAN

二层Portal认证支持认证服务器下发授权VLAN。当用户通过Portal认证后，如果认证服务器上配置了下发VLAN功能，那么认证服务器会将授权VLAN信息下发给接入设备，由接入设备将认证成功的用户加入对应的授权VLAN中，则端口上会生成该用户MAC对应的MAC VLAN表项，若该VLAN不存在，则接入设备首先创建VLAN，而后将用户加入授权VLAN中。

通过支持下发授权VLAN，可实现对已认证用户可访问网络资源的控制。

3. 支持Auth-Fail VLAN

Auth-Fail VLAN功能允许用户在认证失败的情况下，可以访问某一特定VLAN中的资源，比如病毒补丁服务器，存储客户端软件或杀毒软件的服务器，进行升级客户端或执行其他一些用户升级程序。这个VLAN称之为Auth-Fail VLAN。

二层Portal认证支持基于MAC的Auth-Fail VLAN，如果接入用户的端口上配置了Auth-Fail VLAN，则端口上会基于认证失败的MAC地址生成相应的MAC VLAN表项，认证失败的用户将会被加入Auth-Fail VLAN中。加入Auth-Fail VLAN中的用户可以访问该VLAN中的非HTTP资源，但用户的所有HTTP访问请求会被重定向到接入设备上进行认证，若用户仍然没有通过认证，则将继续处于Auth-Fail VLAN内；若认证成功，则回到加入Auth-Fail VLAN之前端口所在的VLAN。处于Auth-Fail VLAN中的用户，若在指定时间（默认90秒）内无流量通过接入端口，则将离开该VLAN，回到端口的初始VLAN。

用户加入授权VLAN或Auth-Fail VLAN后，需要自动申请或者手动更新客户端IP地址，以保证可以与授权VLAN或Auth-Fail VLAN中的资源互通。

4. 支持ACL下发

ACL（Access Control List，访问控制列表）提供了控制用户访问网络资源和限制用户访问权限的功能。当用户上线时，如果服务器上配置了授权ACL，则设备会根据服务器下发的授权ACL对用户所在端口的数据流进行控制；在服务器上配置授权ACL之前，需要在设备上配置相应的规则。管理员可以通过改变服务器的授权ACL设置或设备上对应的ACL规则来改变用户的访问权限。

1.1.8 三层Portal认证过程

直接认证和可跨三层Portal认证流程相同。二次地址分配认证流程因为有两次地址分配过程，所以其认证流程和另外两种认证方式有所不同。

1. 直接认证和可跨三层Portal认证的流程（CHAP/PAP认证方式）

图1-5 直接认证/可跨三层Portal认证流程图

直接认证/可跨三层Portal认证流程：

(1) Portal用户通过HTTP协议发起认证请求。HTTP报文经过接入设备时，对于访问Portal服务器或设定的免费访问地址的HTTP报文，接入设备允许其通过；对于访问其它地址的HTTP报文，接入设备将其重定向到Portal服务器。Portal服务器提供Web页面供用户输入用户名和密码来进行认证。

(2) Portal服务器与接入设备之间进行CHAP（Challenge Handshake Authentication Protocol，质询握手验证协议）认证交互。若采用PAP（Password Authentication Protocol，密码验证协议）认证则直接进入下一步骤。

(3) Portal服务器将用户输入的用户名和密码组装成认证请求报文发往接入设备，同时开启定时器等待认证应答报文。

(4) 接入设备与RADIUS服务器之间进行RADIUS协议报文的交互。

(5) 接入设备向Portal服务器发送认证应答报文。

(6) Portal服务器向客户端发送认证通过报文，通知客户端认证（上线）成功。

(7) Portal服务器向接入设备发送认证应答确认。

(8) 客户端和安全策略服务器之间进行安全信息交互。安全策略服务器检测接入终端的安全性是否合格，包括是否安装防病毒软件、是否更新病毒库、是否安装了非法软件、是否更新操作系统补丁等。

(9) 安全策略服务器根据用户的安全性授权用户访问非受限资源，授权信息保存到接入设备中，接入设备将使用该信息控制用户的访问。

步骤(8)、(9)为Portal认证扩展功能的交互过程。

2. 二次地址分配认证方式的流程（CHAP/PAP认证方式）

图1-6 二次地址分配认证方式流程图

二次地址分配认证流程：

(1)～(6)同直接/可跨三层Portal认证中步骤（1）～（6）。

(7) 客户端收到认证通过报文后，通过DHCP获得新的公网IP地址，并通知Portal服务器用户已获得新IP地址。

(8) Portal服务器通知接入设备客户端获得新公网IP地址。

(9) 接入设备通过检测ARP协议报文发现了用户IP变化，并通告Portal服务器已检测到用户IP变化。

(10) Portal服务器通知客户端上线成功。

(11) Portal服务器向接入设备发送IP变化确认报文。

(12) 客户端和安全策略服务器之间进行安全信息交互。安全策略服务器检测接入终端的安全性是否合格，包括是否安装防病毒软件、是否更新病毒库、是否安装了非法软件、是否更新操作系统补丁等。

(13) 安全策略服务器根据用户的安全性授权用户访问非受限资源，授权信息保存到接入设备中，接入设备将使用该信息控制用户的访问。

步骤(12)、(13)为Portal认证扩展功能的交互过程。

3. 使用本地Portal服务器的认证流程

图1-7 使用本地Portal服务器的认证流程图

直接/可跨三层本地Portal认证流程：

(2) Portal用户通过HTTP或HTTPS协议发起认证请求。HTTP报文经过配置了本地Portal服务器的接入设备的接口时会被重定向到本地Portal服务器，本地Portal服务器提供Web页面供用户输入用户名和密码来进行认证。该本地Portal服务器的监听IP地址为接入设备上一个与用户之间路由可达的三层接口IP地址。

(3) 接入设备与RADIUS服务器之间进行RADIUS协议报文的交互。

(4) 接入设备中的本地Portal服务器向客户端发送登录成功页面，通知客户端认证（上线）成功。

4. Portal支持EAP认证流程

图1-8 Portal支持EAP认证流程图

支持EAP认证的Portal认证流程如下（各Portal认证方式下EAP认证的处理流程相同，此处仅以直接方式的Portal认证为例）：

(1) Portal客户端发起EAP认证请求，向Portal服务器发送Identity类型的EAP请求报文。

(2) Portal服务器向接入设备发送Portal认证请求报文，同时开启定时器等待Portal认证应答报文，该认证请求报文中包含若干个EAP-Message属性，这些属性用于封装Portal客户端发送的EAP报文，并可携带客户端的证书信息。

(3) 接入设备接收到Portal认证请求报文后，构造RADIUS认证请求报文与RADIUS服务器进行认证交互，该RADIUS认证请求报文的EAP-Message属性值由接入设备收到的Portal认证请求报文中的EAP-Message属性值填充。

(4) 接入设备根据RADIUS服务器的回应信息向Portal服务器发送证书请求报文，该报文中同样会包含若干个EAP-Message属性，可用于携带RADIUS服务器的证书信息，这些属性值由RADIUS认证回应报文中的EAP-Message属性值填充。

(5) Portal服务器接收到证书请求报文后，向Portal客户端发送EAP认证回应报文，直接将RADIUS服务器响应报文中的EAP-Message属性值透传给Portal客户端。

(6) Portal客户端继续发起的EAP认证请求，与RADIUS服务器进行后续的EAP认证交互，期间Portal认证请求报文可能会出现多次。后续认证过程与第一个EAP认证请求报文的交互过程类似，仅EAP报文类型会根据EAP认证阶段发展有所变化，此处不再详述。

(7) EAP认证通过后，RADIUS服务器向接入设备发送认证通过响应报文，该报文的EAP-Message属性中封装了EAP认证成功报文（EAP-Success）。

(8) 接入设备向Portal服务器发送认证应答报文，该报文的EAP-Message属性中封装了EAP认证成功报文。

(9) Portal服务器根据认证应答报文中的认证结果通知Portal客户端认证成功。

(10) Portal服务器向接入设备发送认证应答确认。

后续为Portal认证扩展功能的交互过程，可参考CHAP/PAP认证方式下的认证流程介绍，此处略。

1.1.9 Portal支持双机热备

1. 概述

在当前的组网应用中，用户对网络可靠性的要求越来越高，特别是在一些重点的业务入口或接入点上需要保证网络业务的不间断性。双机热备技术可以保证这些关键业务节点在单点故障的情况下，信息流仍然不中断。

所谓双机热备，其实是双机业务备份。在两台设备上分别指定相同的备份VLAN，专用于传输双机热备相关的报文。在设备正常工作时，对业务信息进行主备同步；在设备故障后，利用VRRP机制实现业务流量切换到备份设备，由备份设备继续处理业务，从而保证了当前的业务不被中断。关于双机热备的详细介绍请参见“可靠性配置指导”中的“双机热备”。

图1-9 双机热备组网图

如图1-9 所示，在一个典型的Portal双机热备组网环境中，用户通过Portal认证接入网络，为避免接入设备单机故障的情况下造成的Portal业务中断，接入设备提供了Portal支持双机热备功能。该功能是指，接入设备Gateway A和Gateway B通过备份链路互相备份两台设备上的Portal在线用户信息，实现当其中一台设备发生故障时，另外一台设备可以对新的Portal用户进行接入认证，并能够保证所有已上线Portal用户的正常数据通信。

备份链路对于部分双机热备设备不是必须的，只要保证互为备份的设备上存在相同的VLAN专用于传输双机热备相关的报文。若组网中配置了专门的备份链路，则需要将两台设备上连接备份链路的物理接口加入备份VLAN中。

2. 基本概念

(1) 设备的工作状态

l 独立运行状态：设备未与其它设备建立备份连接时所处的一种稳定状态。

l 同步运行状态：设备与对端设备之间成功建立备份连接，可以进行数据备份时所处的一种稳定状态。

(2) 用户的工作模式

l Stand-alone：表示用户数据只在一台设备上存在。当前设备处于独立运行状态，或者当前设备处于同步运行状态但用户数据还未同步。

l Primary：表明用户是由本端设备上线，用户数据由本端设备生成。本端设备处于同步运行状态，可以处理并接收服务器发送的报文。

l Secondary：表明用户是由对端设备上线，用户数据是由对端设备同步到本端设备上的。本端设备处于同步运行状态，只接收并处理同步消息，不处理服务器发送的报文。

1.1.10 Portal支持多实例

实际组网应用中，某企业的各分支机构属于不同的VPN，且各VPN之间的业务相互隔离。如果各分支机构的Portal用户要通过位于总部VPN中的服务器进行统一认证，则需要Portal支持多实例。

通过Portal支持多实例，可实现Portal认证报文通过MPLS VPN进行交互。如下图所示，连接客户端的PE设备作为NAS，通过MPLS VPN将私网客户端的Portal认证报文透传给网络另一端的私网服务器，并在AAA支持多实例的配合下，实现对私网VPN客户端的Portal接入认证，满足了私网VPN业务隔离情况下的客户端集中认证，且各私网的认证报文互不影响。

图1-10 Portal支持多实例典型组网图

l 在MCE设备上进行的Portal接入认证也可支持多实例功能。关于MCE的相关介绍请见参见“路由配置指导”中的“MCE”。

l 关于AAA支持多实例的相关介绍请参见“安全配置指导”中的“AAA”。

l 本特性不支持多VPN间的地址重叠。


1.2 Portal配置任务简介

表1-1 二层Portal配置任务简介

配置任务 |  | 说明 | 详细配置
指定二层Portal认证的本地Portal服务器IP地址 |  | 必选 | 1.4.1
配置本地Portal服务器 | 自定义认证页面 | 可选 | 1.5.1
 | 配置本地Portal服务器 | 必选 | 1.5.2
使能二层Portal |  | 必选 | 1.6.1
控制Portal用户的接入 | 配置免认证规则 | 可选 | 1.7.1
 | 配置Portal最大用户数 |  | 1.7.3
 | 指定Portal用户使用的认证域 |  | 1.7.4
 | 配置二层Portal支持Web代理 |  | 1.7.5
 | 配置Portal用户认证端口的自动迁移功能 |  | 1.7.7
配置Portal认证的Auth-Fail VLAN |  | 可选 | 1.8
指定Portal用户认证成功后认证页面的自动跳转目的网站地址 |  | 可选 | 1.12
配置二层Portal用户的在线检测功能 |  | 可选 | 1.13.1
强制Portal用户下线 |  | 可选 | 1.14

表1-2 三层Portal配置任务简介

配置任务 |  | 说明 | 详细配置
指定三层Portal认证的Portal服务器监听IP地址 |  | 必选 | 1.4.2
配置本地Portal服务器 |  | 可选 | 1.5
使能三层Portal |  | 必选 | 1.6.2
控制Portal用户的接入 | 配置免认证规则 | 可选 | 1.7.1
 | 配置源认证网段 |  | 1.7.2
 | 配置Portal最大用户数 |  | 1.7.3
 | 指定Portal用户使用的认证域 |  | 1.7.4
配置接口发送RADIUS报文的相关属性 | 配置接口的NAS-Port-Type | 可选 | 1.9.1
 | 配置接口的NAS-ID Profile |  | 1.9.2
配置接口发送Portal报文使用的源地址 |  | 可选 | 1.10
配置Portal支持双机热备 |  | 可选 | 1.11
指定Portal用户认证成功后认证页面的自动跳转目的网站地址 |  | 可选 | 1.12
配置Portal探测功能 | 配置Portal服务器探测功能 | 可选 | 1.13.2
 | 配置Portal用户信息同步功能 |  | 1.13.3
强制Portal用户下线 |  | 可选 | 1.14


1.3 配置准备

Portal提供了一个用户身份认证和安全认证的实现方案，但是仅仅依靠Portal不足以实现该方案。接入设备的管理者需选择使用RADIUS认证方法，以配合Portal完成用户的身份认证。Portal认证的配置前提：

l Portal服务器、RADIUS服务器已安装并配置成功。本地Portal认证无需单独安装Portal服务器。

l 若采用二次地址分配认证方式，接入设备需启动DHCP中继的安全地址匹配检查功能，另外需要安装并配置好DHCP服务器。

l 用户、接入设备和各服务器之间路由可达。

l 如果通过远端RADIUS服务器进行认证，则需要在RADIUS服务器上配置相应的用户名和密码，然后在接入设备端进行RADIUS客户端的相关设置。RADIUS客户端的具体配置请参见“安全配置指导”中的“AAA”。

l 如果需要支持Portal的扩展功能，需要安装并配置iMC EAD。同时保证在接入设备上的ACL配置和安全策略服务器上配置的受限资源ACL号、非受限资源ACL号对应。接入设备上的安全策略服务器配置请参见“安全配置指导”中的“AAA”。

l 安全策略服务器的配置请参考iMC EAD安全策略组件联机帮助。

l 受限资源ACL、非受限资源ACL分别对应安全策略服务器中的隔离ACL与安全ACL。

l 如果接入设备上的授权ACL配置被修改，则修改后的ACL不对已经在线的Portal用户生效，只能对新上线的Portal用户有效。


1.4 指定Portal服务器

1.4.1 指定二层Portal认证的本地Portal服务器监听IP地址

二层Portal认证使用本地Portal服务器，因此需要将设备上一个与Portal客户端路由可达的三层接口IP地址指定为本地Portal服务器的监听IP地址，并强烈建议使用设备上空闲的Loopback接口的IP地址，利用LoopBack接口状态稳定的优点，避免因为接口故障导致用户无法打开认证页面的问题。另外，由于发送到LoopBack接口的报文不会被转发到网络中，当请求上线的用户数目较大时，可减轻对系统性能的影响。

表1-3 指定二层Portal认证的本地Portal服务器监听IP地址

操作 | 命令 | 说明
进入系统视图 | system-view | -
指定二层Portal认证的本地Portal服务器监听IP地址 | portal local-server ip ip-address | 必选 缺省情况下，没有指定本地Portal服务器的监听IP地址

已配置的本地Portal服务器监听IP地址仅在二层Portal认证未在任何端口上使能时才可以被删除或修改。

1.4.2 指定三层Portal认证的Portal服务器

本配置用于指定Portal服务器的相关参数，主要包括服务器IP地址、共享加密密钥、服务器端口号以及服务器提供的Web认证地址。根据不同的组网环境，此处指定的服务器IP地址有所不同：

l 如果使用远程Portal服务器，则指定为外部Portal服务器的IP地址；

l 如果使用本地Portal服务器，则指定为设备上与Portal客户端路由可达的三层接口IP地址。

表1-4 指定三层Portal认证的Portal服务器

操作 | 命令 | 说明
进入系统视图 | system-view | -
指定三层Portal认证的Portal服务器 | portal server server-name ip ip-address [ key key-string | port port-id | url url-string | vpn-instance vpn-instance-name ] * | 必选 缺省情况下，没有指定三层Portal认证的Portal服务器

l 已配置的Portal服务器参数仅在该Portal服务器未被接口引用时才可以被删除或修改。

l 通常，使用本地Portal服务器时，Portal服务器参数 key、port 和 url 均不需配置，若配置也无效。但在无线环境下使用本地Portal服务器进行双机热备时，url 需要配置，且地址格式为http://ip-address/portal/logon.htm或https://ip-address/portal/logon.htm，其中，协议类型为本地Portal服务器支持的协议类型（由命令 portal local-server 配置），ip-address 为VRRP下行链路所在备份组的虚拟IP地址。

l 使用本地Portal服务器的情况下，二次地址分配认证方式（redhcp）可配置但不生效。

l 为保证设备能够向MPLS VPN私网中的Portal服务器发送报文，指定Portal服务器时需指定服务器所属的VPN且必须和该服务器所在的VPN保持一致。


1.5 配置本地Portal服务器

本特性用于配合Portal本地认证，且仅在使用本地Portal服务器时必配。使用本地Portal服务器进行认证时，本地Portal服务器负责向用户推出认证页面。认证页面的内容和样式可自定义，若未配置自定义认证页面，则向用户推出系统提供的缺省认证页面。

1.5.1 自定义认证页面文件

用户自定义的认证页面为HTML文件的形式，压缩后保存在本地设备的存储设备中。每套认证页面可包括六个主索引页面（登录页面、登录成功页面、登录失败页面、在线页面、系统忙页面、下线成功页面）及其页面元素（认证页面需要应用的各种文件，如Logon.htm页面中的back.jpg），每个主索引页面可以引用若干页面元素。若用户只自定义了部分主索引页面，则其余主索引页面使用系统提供的缺省认证页面。

用户在自定义这些页面时需要遵循一定的规范，否则会影响本地Portal服务器功能的正常使用和系统运行的稳定性。

1. 文件名规范

主索引页面文件名不能自定义，必须使用表1-5 中所列的固定文件名。

表1-5 认证页面文件名

主索引页面 | 文件名
登录页面 | logon.htm
登录成功页面 | logonSuccess.htm
登录失败页面 | logonFail.htm
在线页面 用于提示用户已经在线 | online.htm
系统忙页面 用于提示系统忙或者该用户正在登录过程中 | busy.htm
下线成功页面 | logoffSuccess.htm

主索引页面文件之外的其他文件名可由用户自定义，但需注意文件名和文件目录名中不能含有中文且不区分大小写。

2. 页面请求规范

本地Portal服务器只能接受Get请求和Post请求。

l Get请求用于获取认证页面中的静态文件，其内容不能为递归内容。例如，Logon.htm文件中包含了Get ca.htm文件的内容，但ca.htm文件中又包含了对Logon.htm的引用，这种递归引用是不允许的。

l Post请求用于用户提交用户名和密码以及用户执行登录、下线操作。

3. Post请求中的属性规范

(1) 认证页面中表单（Form）的编辑必须符合以下原则：

l 认证页面可以含有多个Form，但是必须有且只有一个Form的action=logon.cgi，否则无法将用户信息送到本地Portal服务器。

l 用户名属性固定为”PtUser”，密码属性固定为”PtPwd”。

l 需要有用于标记用户登录还是下线的属性”PtButton”，取值为"Logon"表示登录，取值为"Logoff"表示下线。

l 登录Post请求必须包含”PtUser”，”PtPwd”和"PtButton"三个属性。

l 下线Post请求必须包含”PtButton”这个属性。

(2) 需要包含登录Post请求的页面有logon.htm和logonFail.htm。

logon.htm页面脚本内容的部分示例：

<form action=logon.cgi method = post >

<p>User name:<input type="text" name = "PtUser" style="width:160px;height:22px" maxlength=64>

<p>Password :<input type="password" name = "PtPwd" style="width:160px;height:22px" maxlength=32>

<p><input type=SUBMIT value="Logon" name = "PtButton" style="width:60px;" onclick="form.action=form.action+location.search;>

</form>

(3) 需要包含下线Post请求的页面有logonSuccess.htm和online.htm。

online.htm页面脚本内容的部分示例：

<form action=logon.cgi method = post >

<p><input type=SUBMIT value="Logoff" name="PtButton" style="width:60px;">

</form>

4. 页面文件压缩及保存规范

l 完成所有认证页面的编辑之后，必须按照标准Zip格式将其压缩到一个Zip文件中，该Zip文件的文件名只能包含字母、数字和下划线。缺省认证页面文件必须以defaultfile.zip为文件名保存。

l 压缩后的Zip文件中必须直接包含认证页面，不允许存在间接目录。

l 压缩生成的Zip文件可以通过FTP或TFTP的方式上传至设备，并保存在设备的指定目录下。缺省认证页面文件必须保存在设备的根目录下，非缺省认证页面文件可以保存在设备根目录下或者根目录的portal目录下。

Zip文件保存目录示例：

<Sysname> dir

Directory of flash:/portal/

0 -rw- 1405 Feb 28 2011 15:53:31 ssid2.zip

1 -rw- 1405 Feb 28 2011 15:53:20 ssid1.zip

2 -rw- 1405 Feb 28 2011 15:53:39 ssid3.zip

3 -rw- 1405 Feb 28 2011 15:53:44 ssid4.zip

2540 KB total (1319 KB free)

5. 页面文件大小和内容规范

为了方便系统推出自定义的认证页面，认证页面在文件大小和内容上需要有如下限制：

l 每套页面（包括主索引页面文件及其页面元素）压缩后的Zip文件大小不能超过500K字节。

l 每个单独页面（包括单个主索引页面文件及其页面元素）压缩前的文件大小不能超过50K字节。

l 页面元素只能包含HTML、JS、CSS和图片之类的静态内容。

6. 关闭登录成功/在线页面后强制用户下线

用户认证成功后，系统会推出登录成功页面（文件名为logonSuccess.htm），认证通过后再次通过登录页面进行认证操作，系统会推出在线页面（文件名为online.htm）。若希望用户关闭这两个页面的同时，触发设备执行强制当前在线用户下线的操作，就需要按照如下要求在这两个页面文件的脚本文件中增加如下内容。

(1) 添加对JS文件“pt_private.js”的引用；

(2) 添加触发页面卸载的函数“pt_unload()”；

(3) 添加Form的提交事件处理函数“pt_submit()”；

(4) 添加页面加载的初始化函数“pt_init()”。

需要在logonSuccess.htm和online.htm页面脚本中增加的内容如示例中突出显示部分：

<html>

<head>

<script type="text/javascript" language="javascript" src="pt_private.js"></script>

</head>

<body onload="pt_init();" onbeforeunload="return pt_unload();">

... ...

<form action=logon.cgi method = post onsubmit="pt_submit()">

... ...

</body>

</html>

7. 认证成功后认证页面自动跳转

若要支持认证成功后自定义认证页面的自动跳转功能，即认证页面会在用户认证成功后自动跳转到设备指定的网站页面，则需要按照如下要求在认证页面logon.htm和logonSuccess.htm的脚本文件中做如下改动。

(1) 将logon.htm文件中的Form的target值设置为“blank”。

修改的脚本内容如下突出显示部分所示：

<form method=post action=logon.cgi target="blank">

(2) logonSucceess.htm文件添加页面加载的初始化函数“pt_init()”。

增加的脚本内容如下突出显示部分所示：

<html>

<head>

<title>LogonSuccessed</title>

<script type="text/javascript" language="javascript" src="pt_private.js"></script>

</head>

<body onload="pt_init();" onbeforeunload="return pt_unload();">

... ...

</body>

</html>

l 推荐使用IE6.0版本以上的浏览器。

l 需要用户浏览器设置为允许弹出窗口，或者将设备的IP地址设置为允许弹出的网站地址。若浏览器禁止弹出窗口，则关闭登录成功或在线页面时会提示用户无法下线，用户可以点击“取消”回到原页面。

l 目前，仅IE浏览器、Firefox浏览器和Safari浏览器支持关闭登录成功/在线页面后的强制用户下线功能，而其它浏览器（例如Chrome浏览器、Opera浏览器等）均不支持该功能。

l 刷新登录成功/在线页面或者使该页面跳转到别的网站上时都会触发强制用户下线事件。

1.5.2 配置本地Portal服务器

在本配置任务中，通过指定Portal客户端和本地Portal服务器的之间采用的通信协议（HTTP或HTTPS），接入设备上的本地Portal服务器功能才能生效。

1. 配置准备

若指定本地Portal服务器支持的协议类型为HTTPS，则需要首先完成以下配置：

l 配置PKI策略，并成功申请本地证书和CA证书，具体配置请参见“安全配置指导”中的“PKI”。

l 配置SSL服务器端策略，并指定使用已配置的PKI域。具体配置请参见“安全配置指导”中的“SSL”。

由于指定本地Portal服务器支持的协议类型时，本地Portal服务器将同时加载已保存在根目录的缺省认证页面文件，因此若需要使用自定义的缺省认证页面文件，则需要首先完成对它的编辑和保存工作，否则使用系统默认的缺省认证页面。

2. 配置本地Portal服务器

表1-6 配置本地Portal服务器

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置本地Portal服务器支持的协议类型，并同时加载缺省认证页面文件 | portal local-server { http | https server-policy policy-name } | 必选 缺省情况下，本地Portal服务器不支持任何协议类型
配置本地Portal服务器缺省认证页面的欢迎信息 | portal server banner banner-string | 可选 缺省情况下，无Web页面欢迎信息


1.6 使能Portal认证

只有在接口上使能了Portal认证，对接入用户的Portal认证功能才能生效。

1.6.1 使能二层Portal认证

在使能二层Portal认证之前，需要满足以下要求：

l 已经指定了本地Portal服务器的监听IP地址；

l 未在任何接口上使能三层Portal认证。

表1-7 使能二层Portal认证

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入二层以太网端口视图 | interface interface-type interface-number | -
在端口上使能二层Portal认证 | portal local-server enable | 必选 缺省情况下，未使能二层Portal认证

l 为使二层端口上的Portal认证功能正常运行，不建议端口上同时使能端口安全、802.1X的Guest VLAN或802.1X的EAD快速部署功能。

l 若要支持授权VLAN下发功能，则需要在端口上使能MAC VLAN功能。

1.6.2 使能三层Portal认证

在使能三层Portal认证之前，需要满足以下要求：

l 使能Portal的接口已配置或者获取了合法的IP地址；

l 接口上引用的Portal服务器名已经存在；

l 未在任何端口上使能二层Portal认证。

表1-8 使能三层Portal认证

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
在接口上使能三层Portal认证 | portal server server-name method { direct | layer3 | redhcp } | 必选 缺省情况下，没有使能三层Portal认证

l 设备向Portal服务器主动发送报文时使用的目的端口号必须与远程Portal服务器实际使用的端口号保持一致。

l 已配置的Portal服务器及其参数仅在该Portal服务器未被接口引用时才可以被删除或修改。

l 对于跨三层设备支持Portal认证的应用只能配置可跨三层Portal认证方式（portal server server-name method layer3），但可跨三层Portal认证方式不要求接入设备和Portal用户之间必需跨越三层设备。

l 在二次地址分配认证方式下，允许用户在未通过Portal认证时以公网地址向外发送报文，但相应的回应报文则受限制。


1.7 控制Portal用户的接入

1.7.1 配置免认证规则

通过配置免认证规则（free-rule）可以让特定的用户不需要通过Portal认证即可访问外网特定资源，这是由免认证规则中配置的源信息以及目的信息决定的。

免认证规则的匹配项包括IP地址、MAC地址、所连接设备的接口和VLAN，只有符合免认证规则的用户报文才不会触发Portal认证，因此这些报文所属的用户才可以直接访问网络资源。

对于二层Portal认证，只能配置从任意源地址（即 source any）到任意或指定目的地址的免认证规则。配置了到指定目的地址的免认证规则后，用户不需要通过Portal认证即可访问指定目的网段或地址的网络资源，且用户访问这些资源的HTTP请求不会被重定向到Portal认证页面上。通常，可以将一些提供特定服务器资源（例如软件升级服务器）的IP地址指定为免认证规则的目的IP，便于二层Portal用户在免认证的情况下获取特定的服务资源。

表1-9 配置免认证规则

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置Portal的免认证规则 | portal free-rule rule-number { destination { any | ip { ip-address mask { mask-length | netmask } | any } } | source { any | [ interface interface-type interface-number | ip { ip-address mask { mask-length | mask } | any } | mac mac-address | vlan vlan-id ] * } } * | 必选

l 如果免认证规则中同时配置了 vlan 和 interface 项，则要求 interface 属于该VLAN，否则该规则无效。

l 相同内容的免认证规则不能重复配置，否则提示免认证规则已存在或重复。

l 无论接口上是否使能Portal认证，只能添加或者删除免认证规则，不能修改。

l 加入聚合组的二层接口不能被指定为免认证规则的源接口，反之亦然。

1.7.2 配置源认证网段

本特性仅三层Portal认证支持。

通过配置源认证网段实现只允许在源认证网段范围内的用户HTTP报文才能触发Portal认证。如果未认证用户的HTTP报文既不满足免认证规则又不在源认证网段内，则将被接入设备丢弃。

表1-10 配置源认证网段

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
配置源认证网段 | portal auth-network network-address { mask-length | mask } | 可选 缺省情况下，源认证网段为0.0.0.0/0，表示对来自任意网段的用户都进行Portal认证

l 源认证网段配置仅对可跨三层Portal认证有效。直接认证方式的认证网段为任意源IP，二次地址分配方式的认证网段为由接口私网IP决定的私网网段。

l 可通过多次执行本命令，配置多个源认证网段。

1.7.3 配置Portal最大用户数

通过该配置可以控制系统中的Portal接入用户总数。

表1-11 配置Portal最大用户数

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置Portal最大用户数 | portal max-user max-number | 必选 缺省情况下，Portal最大用户数为1024

l 交换机实际下发的Portal最大的用户数和设备的ACL资源有关。

l 如果配置的Portal最大用户数小于当前已经在线的Portal用户数，则该命令可以执行成功，且在线Portal用户不受影响，但系统将不允许新的Portal用户接入。

1.7.4 指定Portal用户使用的认证域

通过在指定接口上配置Portal用户使用的认证域，使得所有从该接口接入的Portal用户被强制使用指定的认证域来进行认证、授权和计费。即使Portal用户输入的用户名中携带的域名相同，接入设备的管理员也可以通过该配置对不同接口指定不同的认证域，从而增加了管理员部署Portal接入策略的灵活性。

表1-12 指定Portal用户使用的认证域

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
指定Portal用户使用的认证域 | portal domain domain-name | 必选 缺省情况下，未指定Portal用户使用的认证域

从指定接口上接入的Portal用户将按照如下先后顺序选择认证域：接口上指定的ISP域-->用户名中携带的ISP域-->系统缺省的ISP域。关于缺省ISP域的相关介绍请参见“安全配置指导”中的“AAA”。

1.7.5 配置二层Portal认证支持Web代理

对于二层Portal认证，设备默认只允许未配置Web代理服务器的用户浏览器发起的HTTP请求才能触发Portal认证。若用户使用配置了Web代理服务器的浏览器上网，则用户的这类HTTP请求报文将被丢弃，而不能触发Portal认证。这种情况下，网络管理员可以通过在设备上添加Web代理服务器端口号，来允许使用Web代理服务器的用户浏览器发起的HTTP请求也可以触发Portal认证。

表1-13 配置允许触发Portal认证的Web代理服务器端口

配置步骤 | 命令 | 说明
进入系统视图 | system-view | -
添加允许触发Portal认证的Web代理服务器端口 | portal web-proxy port port-number | 必选 缺省情况下，不存在允许触发Portal认证的Web代理服务器端口

l 如果用户浏览器采用WPAD方式自动配置Web代理，则不仅需要网络管理员在设备上添加Web代理服务器端口，还需要配置免认证规则，允许目的IP为WPAD主机IP地址的用户报文免认证。

l 除了网络管理员需要在设备上添加指定的Web代理服务器端口，还需要用户在浏览器上将设备的本地Portal服务器监听IP地址配置为Web代理服务器的例外地址，避免Portal用户发送给本地Portal服务器的HTTP报文被发送到Web代理服务器上，从而影响正常的Portal认证。

1.7.6 配置三层Portal认证支持Web代理

1. 简介

对于三层Portal认证，缺省情况下，设备不支持配置了Web代理服务器的用户浏览器发起的Portal认证。若用户使用配置了Web代理服务器的浏览器上网，则用户的这类HTTP请求报文将被丢弃，而不能触发Portal认证。这种情况下，网络管理员可以通过在设备上添加Web代理服务器端口号，来允许使用Web代理服务器的用户浏览器发起的HTTP请求也可以触发Portal认证。

2. 配置准备

如 表1-14 所示，不同的应用场景中，客户端浏览器的Web代理配置有所不同，为使这些场景下的客户端可以成功触发Portal认证，除了需要在设备上添加允许触发Portal认证的Web代理服务器端口之外，还需要完成相关的配置准备。

表1-14 相关配置约束

支持的应用场景 | 配置准备
场景1： 所有或部分客户端使用Web代理服务器上网，且这些客户端未将Portal服务器的IP地址配置为Web代理服务器的例外地址 | l 若使用iMC Portal服务器，则Portal服务器上与Portal设备关联的IP地址组类型应选择支持NAT，并且转换后的IP地址应指定为代理服务器的IP地址，相应的端口组也应选择支持NAT。 l Portal服务器与Web代理服务器路由可达。
场景2： 所有或部分客户端使用Web代理服务器上网，且这些客户端将Portal服务器的IP地址配置为Web代理服务器的例外地址 | l 若使用iMC Portal服务器，则Portal服务器上与Portal设备关联的IP地址组和端口组类型都应该选择不支持NAT。
场景3： 所有客户端均使用Web代理服务器上网，但仅部分客户端将Portal服务器的IP地址配置为Web代理服务器的例外地址 | l 若使用iMC Portal服务器，需要将客户端IP地址分为两组，分别按照场景1和场景2下的配置约束配置对应的IP地址组和端口组。 l Portal服务器与Web代理服务器路由可达。

3. 配置允许触发Portal认证的Web代理服务器端口

表1-15 配置允许触发Portal认证的Web代理服务器端口

配置步骤 | 命令 | 说明
进入系统视图 | system-view | -
添加允许触发Portal认证的Web代理服务器端口 | portal web-proxy port port-number | 必选 缺省情况下，不存在允许触发Portal认证的Web代理服务器端口

l 如果用户浏览器采用WPAD方式自动配置Web代理，则不仅需要网络管理员在设备上添加Web代理服务器端口，还需要配置免认证规则，允许目的IP为WPAD主机IP地址的用户报文免认证。

l 如果设备上已添加了80端口为Web代理服务器端口，则未使用代理服务器上网的客户端只有通过访问开启了HTTP服务的可达主机，才能触发Portal认证。

l 如果需要对认证成功的Portal用户下发授权ACL，则该ACL必须包含一条允许Web代理服务器IP地址的规则，否则用户上线后，无法接收远程Portal服务器发送的心跳检测报文。

1.7.7 配置Portal用户认证端口的自动迁移功能

本特性仅二层Portal认证支持。

在用户和设备之间存在Hub、二层交换机或AP的组网环境下，若在线用户在未下线的情况下从同一设备上的当前认证端口离开并迁移到其它使能了二层Portal的认证端口上接入时，由于原端口上仍然存在该用户的认证信息，因此设备默认不允许用户在新端口上认证上线。

开启本功能后，设备允许在线用户离开当前端口后在新端口上上线，具体分为以下两种情况：

l 若原认证端口状态未down，且用户先后接入的两个端口属于同一个VLAN，则用户不需要重新认证就能够继续以在线状态在新的端口上访问网络，并按照新的端口信息继续计费；

l 若原认证端口状态变为down，或者原认证端口状态未down但是两个认证端口所属的VLAN不同，则设备会将用户在原端口上的认证信息删除掉，并要求用户在新端口上重新进行认证。

表1-16 配置Portal用户认证端口的自动迁移功能

配置步骤 | 命令 | 说明
进入系统视图 | system-view | -
开启Portal用户认证端口的自动迁移功能 | portal move-mode auto | 必选 缺省情况下，Portal用户认证端口的自动迁移功能处于关闭状态

用户迁移到新端口上之后，若设备发现该用户具有授权属性（例如授权VLAN），则设备会尝试在新的端口上添加该用户的授权信息，若授权信息添加失败，设备会删除原端口上的用户信息，要求用户重新进行认证。


1.8 配置Portal认证的Auth-Fail VLAN

本特性仅二层Portal认证支持。

通过该配置可以指定Portal用户认证失败后加入的VLAN。

进行本配置之前，请首先创建需要配置为Auth-Fail VLAN的VLAN。

表1-17 配置Portal认证的Auth-Fail VLAN

配置步骤 | 命令 | 说明
进入系统视图 | system-view | -
进入二层以太网接口视图 | interface interface-type interface-number | -
配置端口的Portal认证的Auth-Fail VLAN | portal auth-fail vlan authfail-vlan-id | 必选 缺省情况下，端口没有配置Portal认证的Auth-Fail VLAN

l 为使端口的Portal认证的Auth-Fail VLAN生效，还必须使能端口上的MAC VLAN功能。MAC VLAN功能的具体配置请参考“二层技术-以太网交换配置指导”中的“VLAN”。

l 不同的端口可以配置不同的Portal认证的Auth-Fail VLAN，但一个端口最多只能配置一个Portal认证的Auth-Fail VLAN。

l 端口上Portal认证失败产生的MAC VLAN表项不会覆盖已存在的其它认证方式产生的MAC VLAN表项。


1.9 配置接口发送RADIUS报文的相关属性

本特性仅三层Portal认证支持。

1.9.1 配置接口的NAS-Port-Type

RADIUS标准属性NAS-Port-Type用于表示用户接入的端口类型。当接口上有Portal用户上线时候，若该接口上配置了NAS-Port-Type，则使用本命令配置的值作为向RADIUS服务器发送的RADIUS请求报文的NAS-Port-Type属性值，否则使用接入设备获取到的用户接入的端口类型填充该属性。

若作为Portal认证接入设备的BAS（Broadband Access Server，宽带接入服务器）与Portal客户端之间跨越了多个网络设备，则可能无法正确获取到接入用户的实际端口信息，例如对于Portal认证接入的无线客户端，BAS获取到的接入端口类型有可能是设备上认证该用户的有线接口类型。因此，为保证BAS能够向RADIUS服务器正确传递用户的接入端口信息，需要网络管理员在了解用户的实际接入环境后，通过本命令指定相应的NAS-Port-Type。

表1-18 配置接口的NAS-Port-Type

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
配置接口的NAS-Port-Type | portal nas-port-type { ethernet | wireless } | 必选 缺省情况下，未指定接口的NAS-Port-Type

1.9.2 配置接口的NAS-ID Profile

在某些组网环境下，依靠VLAN来确定用户的接入位置，网络运营商需要使用NAS-Identifier来标识用户的接入位置。当接口上有Portal用户上线时，若该接口上指定了NAS-ID Profile，则接入设备会根据指定的Profile名字和用户接入的VLAN来获取与此VLAN绑定的NAS-ID，此NAS-ID的值将作为向RADIUS服务器发送的RADIUS请求报文中的NAS-Identifier属性值。

本特性中指定的Profile名字用于标识VLAN和NAS-ID的绑定关系，该绑定关系由AAA中的 nas-id id-value bind vlan vlan-id 命令生成，有关该命令的具体情况请参见“安全命令参考”中的“AAA”。

在接口上未指定NAS-ID Profile或指定的Profile中没有找到匹配的绑定关系的情况下，使用设备名作为接口的NAS-ID。

表1-19 配置接口的NAS-ID Profile

操作 | 命令 | 说明
进入系统视图 | system-view | -
创建NAS-ID Profile，并进入NAS-ID-Profile视图 | aaa nas-id profile profile-name | 必选 该命令的具体情况请参见“安全命令参考”中的“AAA”
设置NAS-ID与VLAN的绑定关系 | nas-id nas-identifier bind vlan vlan-id | 必选 该命令的具体情况请参见“安全命令参考”中的“AAA”
退出当前视图 | quit | -
进入接口视图 | interface interface-type interface-number | -
指定接口的NAS-ID Profile | portal nas-id-profile profile-name | 必选 缺省情况下，未指定NAS-ID Profile


1.10 配置接口发送Portal报文使用的源地址

本特性仅三层Portal认证支持。

通过在使能Portal的接口上配置发送Portal报文使用的源地址，可以保证接入设备以此IP地址为源地址向Portal服务器发送报文，且Portal服务器向接入设备回应的报文以此IP地址为目的地址。

表1-20 配置接口发送Portal报文使用的源地址

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
配置接口发送Portal报文使用的源地址 | portal nas-ip ip-address | 可选 缺省情况下，未指定源地址，即以接入用户的接口地址作为发送Portal报文的源地址 在NAT组网环境下，此地址建议配置为接口的公网IP地址


1.11 配置Portal支持双机热备

本特性仅三层Portal认证支持。

为实现Portal支持双机热备，在保证实现业务流量切换的VRRP机制工作正常的前提下，还需要完成以下配置任务：

l 指定备份Portal业务所涉及的接口，（与传输状态协商报文和备份数据的备份接口相区别）本文简称为业务备份接口，并在该业务备份接口上使能Portal。

l 配置业务备份接口所属的Portal备份组，两台设备上有备份关系的业务备份接口属于同一个Portal备份组。

l 配置双机热备模式下的设备ID，保证设备上用户的全局唯一性，该设备ID必须不同于对端的设备ID。

l 配置设备发送RADIUS报文的备份源IP地址，使得对端设备也能够收到服务器发送的报文。备份源IP地址必须指定为对端设备发送RADIUS报文使用的源IP地址。（此配置可选）

l 指定备份VLAN，并使能双机热备功能，相关配置请参考“可靠性配置指导”的“双机热备”。

对端设备上也需要完成以上配置，才能保证双机热备环境下的Portal业务备份正常进行。

当双机工作状态由独立运行状态转换为同步运行状态，且Portal备份组已生效时，两台设备上已经上线的Portal用户数据会开始进行相互的备份。

表1-21 配置Portal支持双机热备

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
配置业务备份接口所属的Portal备份组 | portal backup-group group-id | 必选 缺省情况下，业务备份接口不属于任何Portal备份组 相互备份的两台设备上业务备份接口所属的Portal备份组必须相同
退回系统视图 | quit | -
配置双机热备模式下的设备ID | nas device-id device-id | 必选 缺省情况下，设备运行在单机模式下，无设备ID 具体配置请参考“安全命令参考”中的“AAA”
指定设备发送RADIUS报文使用的备份源IP地址 | radius nas-backup-ip ip-address | 二者可选其一 缺省情况下，未指定发送RADIUS报文使用的备份源IP地址 若将设备发送RADIUS报文使用的源IP地址指定为VRRP上行链路所在备份组的虚拟IP地址，则不需要本配置 具体配置请参考“安全命令参考”中的“AAA”
 | radius scheme radius-scheme-name nas-backup-ip ip-address

l 双机热备模式下，设备不支持业务备份接口使能二次地址方式的Portal认证。

l 工作于双机热备模式下的任何一台设备上的用户被强制下线，都会导致另外一台设备上的相同用户信息同时被删除。设备和Portal服务器上均可执行强制用户下线操作，例如，设备上可通过执行命令 cut connetion、portal delete-user来强制用户下线。

l 互为备份的两台设备上的AAA及Portal的相关配置必须保持一致，比如两台设备上都必须配置相同的Portal服务器。

l 由于配置或改变设备的设备ID会导致设备上所有在线用户被强制下线，因此需慎重操作，并建议该配置成功执行后，保存配置并重启设备。

l 在双机热备运行的情况下，不要删除已配置的备份源IP地址，否则可能会导致备份设备上的在线用户无法收到服务器发送的报文。


1.12 指定Portal用户认证成功后认证页面的自动跳转目的网站地址

未认证用户上网时，首先会主动或被强制登录到Portal认证页面进行认证，当用户输入正确的认证信息且认证成功后，若设备上指定了认证页面的自动跳转目的网站地址，则认证成功的用户将在一定的时间间隔（由 wait-time 参数配置）之后被强制登录到该指定的目的网站页面。

表1-22 指定Portal用户认证成功后认证页面的自动跳转目的URL

配置步骤 | 命令 | 说明
进入系统视图 | system-view | -
指定Portal用户认证成功后认证页面的自动跳转目的网站地址 | portal redirect-url url-string [ wait-time period ] | 必选 缺省情况下，用户认证成功后认证页面将会跳转到用户初始访问的网站页面

l 对于三层远程Portal认证，该特性需要与支持自动跳转页面功能的iMC Portal服务器配合使用。

l wait-time 参数只对本地Portal认证有效，对于远程Portal认证无效。

l 本地Portal认证时，若用户初始访问的页面URL长度超过255个字符，则在未指定跳转目的网站地址的情况下，用户认证成功之后的认证页面无法返回到初始页面。


1.13 配置Portal探测功能

1.13.1 配置二层Portal用户在线检测功能

本特性仅二层Portal认证支持。

二层端口上有Portal用户上线后，设备会启动一个用户在线检测定时器，定期对该端口上的所有在线用户的MAC地址表项进行检测，查看定时器超时前该用户是否有报文发送到设备上（该用户MAC地址表项是否被命中过），来确认该用户是否在线，以便及时发现异常离线用户。若发现某用户MAC地址表项已经被老化或检测间隔内未收到过该用户的报文，则认为一次检测失败，连续两次检测失败后，设备会强制该用户下线。

表1-23 配置二层Portal用户在线检测时间间隔

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
配置二层Portal用户在线检测时间间隔 | portal offline-detect interval offline-detect-interval | 必选 缺省情况下，二层Portal用户在线检测时间间隔为300秒

1.13.2 配置Portal服务器探测功能

本特性仅三层Portal认证支持。

在Portal认证的过程中，如果接入设备与Portal服务器的通信中断，则会导致新用户无法上线，已经在线的Portal用户无法正常下线的问题。为解决这些问题，需要接入设备能够及时探测到Portal服务器可达状态的变化，并能触发执行相应的操作来应对这种变化带来的影响。例如，当接入设备发现Portal服务器不可达时，可打开网络限制，允许Portal用户不需经过认证即可访问网络资源，也就是通常所说的Portal逃生功能，该功能为一种灵活的用户接入方案。

通过配置本特性，设备可以对指定Portal服务器的可达状态进行探测，具体配置包括如下几项：

(1) 探测方式（可以选择其中一种或同时使用两种）

l 探测HTTP连接：接入设备定期向Portal服务器的HTTP服务端口发起TCP连接，若连接成功建立则表示此服务器的HTTP服务已开启，就认为一次探测成功且服务器可达。若连接失败则认为一次探测失败。

l 探测Portal心跳报文：支持Portal逃生心跳功能的Portal服务器（目前仅iMC支持）会定期向接入设备发送Portal心跳报文，设备通过检测此报文来判断服务器的可达状态：若设备在指定的周期内收到Portal心跳报文或者其它认证报文，且验证其正确，则认为此次探测成功且服务器可达，否则认为此次探测失败。

(2) 探测参数

l 探测间隔：进行探测尝试的时间间隔。

l 失败探测的最大次数：允许连续探测失败的最大次数。若连续探测失败数目达到此值，则认为服务器不可达。

(3) 可达状态改变时触发执行的操作（可以选择其中一种或同时使用多种）

l 发送Trap：Portal服务器可达或者不可达的状态改变时，向网管服务器发送Trap信息。Trap信息中记录了Portal服务器名以及该服务器的当前状态。

l 发送日志：Portal服务器可达或者不可达的状态改变时，发送日志信息。日志信息中记录了Portal服务器名以及该服务器状态改变前后的状态。

l 打开网络限制（Portal逃生）：Portal服务器不可达时，暂时取消端口进行的Portal认证，允许该端口接入的所有Portal用户访问网络资源。之后，若设备收到Portal服务器的心跳报文，或者收到其它认证报文（上线报文、下线报文等），则恢复该端口的Portal认证功能。

对于以上配置项，可根据实际情况进行组合使用，但需要注意以下几点：

l 如果同时指定了两种探测方式，则只要使用任何一种探测方式进行探测的失败次数达到最大值就认为服务器不可达。在服务器不可达状态下，只有使用两种探测方式的探测都成功才能认为服务器恢复为可达状态。

l 如果同时指定了多种操作，则Portal服务器可达状态改变时系统可并发执行多种操作。

l 对指定Portal服务器配置的探测功能，只有接口上使能了Portal认证并引用该Portal服务器之后才能生效。

表1-24 配置Portal服务器探测功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置对Portal服务器的探测功能 | portal server server-name server-detect method { http | portal-heartbeat } * action { log | permit-all | trap } * [ interval interval ] [ retry retries ] | 必选 缺省情况下，未配置对Portal服务器的探测功能 本命令中指定的Portal服务器必须已经存在

只有对于支持Portal逃生心跳功能（目前仅iMC的Portal服务器支持）的Portal服务器，portal-heartbeat 类型的探测方法才有效。为了配合此类型的探测，还需要在Portal服务器上选择支持逃生心跳功能，并要求此处的 interval 与 retry 参数值的乘积大于等于Portal服务器上的逃生心跳间隔时长，其中 interval 取值最好大于Portal服务器的逃生间隔时长。

1.13.3 配置Portal用户信息同步功能

本特性仅三层Portal认证支持。

为了解决接入设备与Portal服务器通信中断后，两者的Portal用户信息不一致问题，设备提供了一种Portal用户信息同步功能。该功能利用了Portal同步报文的发送及检测机制，具体实现如下：

(1) 由Portal服务器周期性地（周期为Portal服务器上指定的用户心跳间隔值）将在线用户信息通过用户同步报文发送给接入设备；

(2) 接入设备检测到该用户同步报文后，将其中携带的用户信息与自己的用户信息进行对比，如果发现同步报文中有设备上不存在的用户信息，则将这些自己没有的用户信息反馈给Portal 服务器，Portal服务器将删除这些用户信息；如果发现接入设备上的某用户信息在连续N（N为 retry 参数的取值）个周期内，都未在该Portal服务器发送过来的用户同步报文中出现过，则认为Portal服务器上已不存在该用户，设备将强制该用户下线。

表1-25 配置Portal用户同步功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置Portal用户同步功能 | portal server server-name user-sync [ interval interval ] [ retry retries ] | 必选 缺省情况下，未配置Portal用户同步功能 本命令中指定的Portal服务器必须已经存在 只有在指定的Portal服务器已经在接口上使能的情况下，本功能才能生效

l 只有在支持Portal用户心跳功能（目前仅iMC的Portal服务器支持）的Portal服务器的配合下，本功能才有效。为了实现该功能，还需要在Portal服务器上选择支持用户心跳功能，并要求此处的 interval 与 retry 参数值的乘积应该大于等于Portal服务器上的用户心跳间隔时长，其中 interval 取值最好大于Portal服务器的用户心跳间隔时长。

l 对于设备上多余的用户信息，即在N个周期后被判定为Portal服务器上已不存在的用户信息，设备会在第N＋1个周期内的某时刻将其删除掉。


1.14 强制Portal用户下线

通过配置强制用户下线可以终止对指定IP地址用户的认证过程，或者将已经通过认证的指定IP地址的用户删除。

表1-26 配置强制用户下线

操作 | 命令 | 说明
进入系统视图 | system-view | -
强制接入设备上的用户下线 | portal delete-user { ip-address | all | interface interface-type interface-number } | 必选


1.15 Portal显示和维护

在完成上述配置后，在任意视图下执行 display 命令可以显示配置后Portal的运行情况，通过查看显示信息验证配置的效果。

在用户视图下执行 reset 命令可以清除Portal统计信息。

表1-27 Portal显示和维护

操作 | 命令
显示接口上Portal的ACL信息 | display portal acl { all | dynamic | static } interface interface-type interface-number [ | { begin | exclude | include } regular-expression ]
显示接口上Portal的连接统计信息 | display portal connection statistics { all | interface interface-type interface-number } [ | { begin | exclude | include } regular-expression ]
显示Portal的免认证规则信息 | display portal free-rule [ rule-number ] [ | { begin | exclude | include } regular-expression ]
显示指定接口的Portal配置信息 | display portal interface interface-type interface-number [ | { begin | exclude | include } regular-expression ]
显示本地Portal服务器信息 | display portal local-server [ | { begin | exclude | include } regular-expression ]
显示Portal服务器信息 | display portal server [ server-name ] [ | { begin | exclude | include } regular-expression ]
显示接口上Portal服务器的统计信息 | display portal server statistics { all | interface interface-type interface-number } [ | { begin | exclude | include } regular-expression ]
显示TCP仿冒统计信息 | display portal tcp-cheat statistics [ | { begin | exclude | include } regular-expression ]
显示Portal用户的信息 | display portal user { all | interface interface-type interface-number } [ | { begin | exclude | include } regular-expression ]
清除接口上Portal的连接统计信息 | reset portal connection statistics {all | interface interface-type interface-number }
清除接口上Portal服务器的统计信息 | reset portal server statistics { all | interface interface-type interface-number }
清除TCP仿冒统计信息 | reset portal tcp-cheat statistics


1.16 Portal典型配置举例

1.16.1 Portal直接认证配置举例

1. 组网需求

l 用户主机与接入设备Switch直接相连，采用直接方式的Portal认证。用户通过手工配置或DHCP获取的一个公网IP地址进行认证，在通过Portal认证前，只能访问Portal服务器；在通过Portal认证后，可以使用此IP地址访问非受限互联网资源。

l 采用RADIUS服务器作为认证/计费服务器。

2. 组网图

图1-11 配置Portal直接认证组网图

3. 配置步骤

l 按照组网图配置设备各接口的IP地址，保证启动Portal之前各主机、服务器和设备之间的路由可达。

l 完成RADIUS服务器上的配置，保证用户的认证/计费功能正常运行。

(1) 配置Portal server（iMC PLAT 5.0）

下面以iMC为例（使用iMC版本为：iMC PLAT 5.0(E0101)、iMC UAM 5.0(E0101)），说明Portal server的基本配置。

# 配置Portal服务器。

登录进入iMC管理平台，选择“业务”页签，单击导航树中的[Portal服务器管理/服务器配置]菜单项，进入服务器配置页面。

l 根据实际组网情况调整以下参数，本例中使用缺省配置。

图1-12 Portal服务器配置页面

# 配置IP地址组。

单击导航树中的[Portal服务器管理/IP地址组配置]菜单项，进入Portal IP地址组配置页面，在该页面中单击<增加>按钮，进入增加IP地址组配置页面。

l 填写IP地址组名；

l 输入起始地址和终止地址。用户主机IP地址必须包含在该IP地址组范围内；

l 选择业务分组，本例中使用缺省的“未分组”；

l 选择IP地址组的类型为“普通”。

图1-13 增加IP地址组配置页面

# 增加Portal设备。

单击导航树中的[Portal服务器管理/设备配置]菜单项，进入Portal设备配置页面，在该页面中单击<增加>按钮，进入增加设备信息配置页面。

l 填写设备名；

l 指定IP地址为与接入用户相连的设备接口IP；

l 输入密钥，与接入设备Switch上的配置保持一致；

l 选择是否进行二次地址分配，本例中为直接认证，因此为否；

l 选择是否支持逃生心跳功能和用户心跳功能，本例中不支持。

图1-14 增加设备信息配置页面

# Portal设备关联IP地址组

在Portal设备配置页面中的设备信息列表中，点击NAS设备的<端口组信息管理>链接，进入端口组信息配置页面。

图1-15 设备信息列表

在端口组信息配置页面中点击<增加>按钮，进入增加端口组信息配置页面。

l 填写端口组名；

l 选择IP地址组，用户接入网络时使用的IP地址必须属于所选的IP地址组；

l 其它参数采用缺省值。

图1-16 增加端口组信息配置页面

# 最后单击导航树中的[业务参数配置/系统配置手工生效]菜单项，使以上Portal服务器配置生效。

(2) 配置Switch

l 配置RADIUS方案

# 创建名字为rs1的RADIUS方案并进入该方案视图。

<Switch> system-view

[Switch] radius scheme rs1

# 配置RADIUS方案的服务器类型。使用iMC服务器时，RADIUS服务器类型应选择 extended。

[Switch-radius-rs1] server-type extended

# 配置RADIUS方案的主认证和主计费服务器及其通信密钥。

[Switch-radius-rs1] primary authentication 192.168.0.112

[Switch-radius-rs1] primary accounting 192.168.0.112

[Switch-radius-rs1] key authentication radius

[Switch-radius-rs1] key accounting radius

# 配置发送给RADIUS服务器的用户名不携带ISP域名。

[Switch-radius-rs1] user-name-format without-domain

[Switch-radius-rs1] quit

l 配置认证域

# 创建并进入名字为dm1的ISP域。

[Switch] domain dm1

# 配置ISP域的AAA方法。

[Switch-isp-dm1] authentication portal radius-scheme rs1

[Switch-isp-dm1] authorization portal radius-scheme rs1

[Switch-isp-dm1] accounting portal radius-scheme rs1

[Switch-isp-dm1] quit

# 配置系统缺省的ISP域dm1，所有接入用户共用此缺省域的认证和计费方法。若用户登录时输入的用户名未携带ISP域名，则使用缺省域下的认证方法。

[Switch] domain default enable dm1

l 配置Portal认证

# 配置Portal服务器：名称为newpt，IP地址为192.168.0.111，密钥为portal，端口为50100，URL为http://192.168.0.111:8080/portal。（Portal服务器的URL请与实际环境中的Portal服务器配置保持一致，此处仅为示例）

[Switch] portal server newpt ip 192.168.0.111 key portal port 50100 url http://192.168.0.111:8080/portal

# 在与用户Host相连的接口上使能Portal认证。

[Switch] interface vlan-interface 100

[Switch–Vlan-interface100] portal server newpt method direct

[Switch] quit

1.16.2 Portal二次地址分配认证配置举例

1. 组网需求

l 用户主机与接入设备Switch直接相连，采用二次地址分配方式的Portal认证。用户通过DHCP服务器获取IP地址，Portal认证前使用分配的一个私网地址；通过Portal认证后，用户申请到一个公网地址，才可以访问非受限互联网资源。

l 采用RADIUS服务器作为认证/计费服务器。

2. 组网图

图1-17 配置Portal二次地址分配认证组网图

3. 配置步骤

l Portal二次地址分配认证方式应用中，DHCP服务器上需创建公网地址池（20.20.20.0/24）及私网地址池（10.0.0.0/24），具体配置略。

l Portal二次地址分配认证方式应用中，接入设备上需要配置DHCP中继来配合Portal认证，且启动Portal的接口需要配置主IP地址（公网IP）及从IP地址（私网IP）。关于DHCP中继的详细配置请参见“三层技术-IP业务配置指导”中的“DHCP中继”。

l 请保证在Portal服务器上添加的Portal设备的IP地址为与用户相连的接口的公网IP地址（20.20.20.1），且与该Portal设备关联的IP地址组中的转换前地址为用户所在的私网网段（10.0.0.0/24）、转换后地址为公网网段（20.20.20.0/24）。

l 按照组网图配置设备各接口的IP地址，保证启动Portal之前各主机、服务器和设备之间的路由可达。

l 完成RADIUS服务器上的配置，保证用户的认证/计费功能正常运行。

在Switch上进行以下配置。

(1) 配置RADIUS方案

# 创建名字为rs1的RADIUS方案并进入该方案视图。

<Switch> system-view

[Switch] radius scheme rs1

# 配置RADIUS方案的服务器类型。使用iMC服务器时，RADIUS服务器类型应选择 extended。

[Switch-radius-rs1] server-type extended

# 配置RADIUS方案的主认证和主计费服务器及其通信密钥。

[Switch-radius-rs1] primary authentication 192.168.0.113

[Switch-radius-rs1] primary accounting 192.168.0.113

[Switch-radius-rs1] key authentication radius

[Switch-radius-rs1] key accounting radius

# 配置发送给RADIUS服务器的用户名不携带ISP域名。

[Switch-radius-rs1] user-name-format without-domain

[Switch-radius-rs1] quit

(2) 配置认证域

# 创建并进入名字为dm1的ISP域。

[Switch] domain dm1

# 配置ISP域的AAA方法。

[Switch-isp-dm1] authentication portal radius-scheme rs1

[Switch-isp-dm1] authorization portal radius-scheme rs1

[Switch-isp-dm1] accounting portal radius-scheme rs1

[Switch-isp-dm1] quit

# 配置系统缺省的ISP域dm1，所有接入用户共用此缺省域的认证和计费方法。若用户登录时输入的用户名未携带ISP域名，则使用缺省域下的认证方法。

[Switch] domain default enable dm1

(3) 配置Portal认证

# 配置Portal服务器：名称为newpt，IP地址为192.168.0.111，密钥为portal，端口为50100，URL为http://192.168.0.111:8080/portal（请根据Portal服务器的实际情况配置，此处仅为示例）。

[Switch] portal server newpt ip 192.168.0.111 key portal port 50100 url http://192.168.0.111:8080/portal

# 配置DHCP中继，并启动DHCP中继的安全地址匹配检查功能。

[Switch] dhcp enable

[Switch] dhcp relay server-group 0 ip 192.168.0.112

[Switch] interface vlan-interface 100

[Switch–Vlan-interface100] ip address 20.20.20.1 255.255.255.0

[Switch–Vlan-interface100] ip address 10.0.0.1 255.255.255.0 sub

[Switch-Vlan-interface100] dhcp select relay

[Switch-Vlan-interface100] dhcp relay server-select 0

[Switch-Vlan-interface100] dhcp relay address-check enable

# 在与用户Host相连的接口上使能Portal认证。

[Switch–Vlan-interface100] portal server newpt method redhcp

[Switch–Vlan-interface100] quit

1.16.3 可跨三层Portal认证配置举例

1. 组网需求

Switch A支持Portal认证功能。用户Host通过Switch B接入到Switch A。

l 配置Switch A采用可跨三层Portal认证。用户在未通过Portal认证前，只能访问Portal服务器；用户通过Portal认证后，可以访问非受限互联网资源。

l 采用RADIUS服务器作为认证/计费服务器。

2. 组网图

图1-18 配置可跨三层Portal认证组网图

3. 配置步骤

l 请保证在Portal服务器上添加的Portal设备的IP地址为与用户相连的接口IP地址（20.20.20.1），且与该Portal设备关联的IP地址组为用户所在网段（8.8.8.0/24）。

l 按照组网图配置设备各接口的IP地址，保证启动Portal之前各主机、服务器和设备之间的路由可达。

l 完成RADIUS服务器上的配置，保证用户的认证/计费功能正常运行。

在Switch A上进行以下配置。

(1) 配置RADIUS方案

# 创建名字为rs1的RADIUS方案并进入该方案视图。

<SwitchA> system-view

[SwitchA] radius scheme rs1

# 配置RADIUS方案的服务器类型。使用iMC服务器时，RADIUS服务器类型应选择 extended。

[SwitchA-radius-rs1] server-type extended

# 配置RADIUS方案的主认证和主计费服务器及其通信密钥。

[SwitchA-radius-rs1] primary authentication 192.168.0.112

[SwitchA-radius-rs1] primary accounting 192.168.0.112

[SwitchA-radius-rs1] key authentication radius

[SwitchA-radius-rs1] key accounting radius

# 配置发送给RADIUS服务器的用户名不携带ISP域名。

[SwitchA-radius-rs1] user-name-format without-domain

[SwitchA-radius-rs1] quit

(2) 配置认证域

# 创建并进入名字为dm1的ISP域。

[SwitchA] domain dm1

# 配置ISP域的AAA方法。

[SwitchA-isp-dm1] authentication portal radius-scheme rs1

[SwitchA-isp-dm1] authorization portal radius-scheme rs1

[SwitchA-isp-dm1] accounting portal radius-scheme rs1

[SwitchA-isp-dm1] quit

# 配置系统缺省的ISP域dm1，所有接入用户共用此缺省域的认证和计费方法。若用户登录时输入的用户名未携带ISP域名，则使用缺省域下的认证方法。

[SwitchA] domain default enable dm1

(3) 配置Portal认证

# 配置Portal服务器：名称为newpt，IP地址为192.168.0.111，密钥为portal，端口为50100，URL为http://192.168.0.111:8080/portal（请根据Portal服务器的实际情况配置，此处仅为示例）。

[SwitchA] portal server newpt ip 192.168.0.111 key portal port 50100 url http://192.168.0.111:8080/portal

# 在与Switch B相连的接口上使能Portal认证。

[SwitchA] interface vlan-interface 4

[SwitchA–Vlan-interface4] portal server newpt method layer3

[SwitchA–Vlan-interface4] quit

Switch B上需要配置到192.168.0.0/24网段的缺省路由，下一跳为20.20.20.1，具体配置略。

1.16.4 Portal直接认证扩展功能配置举例

1. 组网需求

l 用户主机与接入设备Switch直接相连，采用直接方式的Portal认证。用户通过手工配置或DHCP获取的一个公网IP地址进行认证，在通过身份认证而没有通过安全认证时可以访问192.168.0.0/24网段；在通过安全认证后，可以访问非受限互联网资源。

l 采用RADIUS服务器作为认证/计费服务器。

2. 组网图

图1-19 配置Portal直接认证扩展功能组网图

3. 配置步骤

l 按照组网图配置设备各接口的IP地址，保证启动Portal之前各主机、服务器和设备之间的路由可达。

l 完成RADIUS服务器上的配置，保证用户的认证/计费功能正常运行。

在Swtich上进行以下配置。

(1) 配置RADIUS方案

# 创建名字为rs1的RADIUS方案并进入该方案视图。

<Switch> system-view

[Switch] radius scheme rs1

# 配置RADIUS方案的服务器类型。使用iMC服务器时，RADIUS服务器类型应选择 extended。

[Switch-radius-rs1] server-type extended

# 配置RADIUS方案的主认证和主计费服务器及其通信密钥。

[Switch-radius-rs1] primary authentication 192.168.0.112

[Switch-radius-rs1] primary accounting 192.168.0.112

[Switch-radius-rs1] key accounting radius

[Switch-radius-rs1] key authentication radius

[Switch-radius-rs1] user-name-format without-domain

# 配置RADIUS方案的安全策略服务器。

[Switch-radius-rs1] security-policy-server 192.168.0.113

[Switch-radius-rs1] quit

(2) 配置认证域

# 创建并进入名字为dm1的ISP域。

[Switch] domain dm1

# 配置ISP域的AAA方法。

[Switch-isp-dm1] authentication portal radius-scheme rs1

[Switch-isp-dm1] authorization portal radius-scheme rs1

[Switch-isp-dm1] accounting portal radius-scheme rs1

[Switch-isp-dm1] quit

# 配置系统缺省的ISP域dm1，所有接入用户共用此缺省域的认证和计费方法。若用户登录时输入的用户名未携带ISP域名，则使用缺省域下的认证方法。

[Switch] domain default enable dm1

(3) 配置受限资源对应的ACL为3000，非受限资源对应的ACL为3001

安全策略服务器上需要将ACL 3000和ACL 3001分别指定为隔离ACL和安全ACL。

[Switch] acl number 3000

[Switch-acl-adv-3000] rule permit ip destination 192.168.0.0 0.0.0.255

[Switch-acl-adv-3000] rule deny ip

[Switch-acl-adv-3000] quit

[Switch] acl number 3001

[Switch-acl-adv-3001] rule permit ip

[Switch-acl-adv-3001] quit

(4) 配置Portal认证

# 配置Portal服务器：名称为newpt，IP地址为192.168.0.111，密钥为portal，端口为50100，URL为http://192.168.0.111:8080/portal（请根据Portal服务器的实际情况配置，此处仅为示例）。

[Switch] portal server newpt ip 192.168.0.111 key portal port 50100 url http://192.168.0.111:8080/portal

# 在与用户Host相连的接口上使能Portal认证。

[Switch] interface vlan-interface 100

[Switch–Vlan-interface100] portal server newpt method direct

[Switch] quit

1.16.5 Portal二次地址分配认证扩展功能配置举例

1. 组网需求

l 用户主机与接入设备Switch直接相连，采用二次地址分配方式的Portal认证。用户通过DHCP服务器获取IP地址，Portal认证前使用分配的一个私网地址；通过Portal认证后，用户申请到一个公网地址。

l 用户在通过身份认证而没有通过安全认证时可以访问192.168.0.0/24网段；用户通过安全认证后，可以访问非受限互联网资源。

l 采用RADIUS服务器作为认证/计费服务器。

2. 组网图

图1-20 配置Portal二次地址分配认证扩展功能组网图

3. 配置步骤

l Portal二次地址分配认证方式应用中，DHCP服务器上需创建公网地址池（20.20.20.0/24）及私网地址池（10.0.0.0/24），具体配置略。

l Portal二次地址分配认证方式应用中，接入设备上需要配置DHCP中继来配合Portal认证，且启动Portal的接口需要配置主IP地址（公网IP）及从IP地址（私网IP）。关于DHCP中继的详细配置请参见“三层技术-IP业务配置指导”中的“DHCP中继”。

l 请保证在Portal服务器上添加的Portal设备的IP地址为与用户相连的接口的公网IP地址（20.20.20.1），且与该Portal设备关联的IP地址组中的转换前地址为用户所在的私网网段（10.0.0.0/24）、转换后地址为公网网段（20.20.20.0/24）。

l 按照组网图配置设备各接口的IP地址，保证启动Portal之前各主机、服务器和设备之间的路由可达。

l 完成RADIUS服务器上的配置，保证用户的认证/计费功能正常运行。

在Switch上进行以下配置。

(1) 配置RADIUS方案

# 创建名字为rs1的RADIUS方案并进入该方案视图。

<Switch> system-view

[Switch] radius scheme rs1

# 配置RADIUS方案的服务器类型。使用iMC服务器时，RADIUS服务器类型应选择 extended。

[Switch-radius-rs1] server-type extended

# 配置RADIUS方案的主认证和主计费服务器及其通信密钥。

[Switch-radius-rs1] primary authentication 192.168.0.113

[Switch-radius-rs1] primary accounting 192.168.0.113

[Switch-radius-rs1] key accounting radius

[Switch-radius-rs1] key authentication radius

[Switch-radius-rs1] user-name-format without-domain

# 配置RADIUS方案的安全策略服务器。

[Switch-radius-rs1] security-policy-server 192.168.0.114

[Switch-radius-rs1] quit

(2) 配置认证域

# 创建并进入名字为dm1的ISP域。

[Switch] domain dm1

# 配置ISP域的AAA方法。

[Switch-isp-dm1] authentication portal radius-scheme rs1

[Switch-isp-dm1] authorization portal radius-scheme rs1

[Switch-isp-dm1] accounting portal radius-scheme rs1

[Switch-isp-dm1] quit

# 配置系统缺省的ISP域dm1，所有接入用户共用此缺省域的认证和计费方法。若用户登录时输入的用户名未携带ISP域名，则使用缺省域下的认证方法。

[Switch] domain default enable dm1

(3) 配置受限资源对应的ACL为3000，非受限资源对应的ACL为3001

安全策略服务器上需要将ACL 3000和ACL 3001分别指定为隔离ACL和安全ACL。

[Switch] acl number 3000

[Switch-acl-adv-3000] rule permit ip destination 192.168.0.0 0.0.0.255

[Switch-acl-adv-3000] rule deny ip

[Switch-acl-adv-3000] quit

[Switch] acl number 3001

[Switch-acl-adv-3001] rule permit ip

[Switch-acl-adv-3001] quit

(4) 配置Portal认证

# 配置Portal服务器：名称为newpt，IP地址为192.168.0.111，密钥为portal，端口为50100，URL为http://192.168.0.111:8080/portal（请根据Portal服务器的实际情况配置，此处仅为示例）。

[Switch] portal server newpt ip 192.168.0.111 key portal port 50100

url http://192.168.0.111:8080/portal

# 配置DHCP中继，并启动DHCP中继的安全地址匹配检查功能。

[Switch] dhcp enable

[Switch] dhcp relay server-group 0 ip 192.168.0.112

[Switch] interface vlan-interface 100

[Switch–Vlan-interface100] ip address 20.20.20.1 255.255.255.0

[Switch–Vlan-interface100] ip address 10.0.0.1 255.255.255.0 sub

[Switch-Vlan-interface100] dhcp select relay

[Switch-Vlan-interface100] dhcp relay server-select 0

[Switch-Vlan-interface100] dhcp relay address-check enable

# 在与用户Host相连的接口上使能Portal认证。

[Switch–Vlan-interface100] portal server newpt method redhcp

[Switch–Vlan-interface100] quit

1.16.6 可跨三层Portal认证方式扩展功能配置举例

1. 组网需求

Switch A支持Portal认证功能。用户Host通过Switch B接入到Switch A。

l 配置Switch A采用可跨三层Portal认证。用户在通过身份认证而没有通过安全认证时可以访问192.168.0.0/24网段；在通过安全认证后，可以访问非受限互联网资源。

l 采用RADIUS服务器作为认证/计费服务器。

2. 组网图

图1-21 配置可跨三层Portal认证扩展功能组网图

3. 配置步骤

l 请保证在Portal服务器上添加的Portal设备的IP地址为与用户相连的接口IP地址（20.20.20.1），且与该Portal设备关联的IP地址组为用户所在网段（8.8.8.0/24）。

l 按照组网图配置设备各接口的IP地址，保证启动Portal之前各主机、服务器和设备之间的路由可达。

l 完成RADIUS服务器上的配置，保证用户的认证/计费功能正常运行。

在Switch A上进行以下配置。

(1) 配置RADIUS方案

# 创建名字为rs1的RADIUS方案并进入该方案视图。

<SwitchA> system-view

[SwitchA] radius scheme rs1

# 配置RADIUS方案的服务器类型。使用iMC服务器时，RADIUS服务器类型应选择 extended。

[Switch-radius-rs1] server-type extended

# 配置RADIUS方案的主认证和主计费服务器及其通信密钥。

[SwitchA-radius-rs1] primary authentication 192.168.0.112

[SwitchA-radius-rs1] primary accounting 192.168.0.112

[SwitchA-radius-rs1] key accounting radius

[SwitchA-radius-rs1] key authentication radius

[SwitchA-radius-rs1] user-name-format without-domain

# 配置RADIUS方案的安全策略服务器。

[SwitchA-radius-rs1] security-policy-server 192.168.0.113

[SwitchA-radius-rs1] quit

(2) 配置认证域

# 创建并进入名字为dm1的ISP域。

[SwitchA] domain dm1

# 配置ISP域的AAA方法。

[SwitchA-isp-dm1] authentication portal radius-scheme rs1

[SwitchA-isp-dm1] authorization portal radius-scheme rs1

[SwitchA-isp-dm1] accounting portal radius-scheme rs1

[SwitchA-isp-dm1] quit

# 配置系统缺省的ISP域dm1，所有接入用户共用此缺省域的认证和计费方法。若用户登录时输入的用户名未携带ISP域名，则使用缺省域下的认证方法。

[SwitchA] domain default enable dm1

(3) 配置受限资源对应的ACL为3000，非受限资源对应的ACL为3001

安全策略服务器上需要将ACL 3000和ACL 3001分别指定为隔离ACL和安全ACL。

[SwitchA] acl number 3000

[SwitchA-acl-adv-3000] rule permit ip destination 192.168.0.0 0.0.0.255

[SwitchA-acl-adv-3000] rule deny ip

[SwitchA-acl-adv-3000] quit

[SwitchA] acl number 3001

[SwitchA-acl-adv-3001] rule permit ip

[SwitchA-acl-adv-3001] quit

(4) 配置Portal认证

# 配置Portal服务器：名称为newpt，IP地址为192.168.0.111，密钥为portal，端口为50100，URL为http://192.168.0.111:8080/portal（请根据Portal服务器的实际情况配置，此处仅为示例）。

[SwitchA] portal server newpt ip 192.168.0.111 key portal port 50100 url http://192.168.0.111:8080/portal

# 在与Switch B相连的接口上使能Portal认证。

[SwitchA] interface vlan-interface 4

[SwitchA–Vlan-interface4] portal server newpt method layer3

[SwitchA–Vlan-interface4] quit

Switch B上需要配置到192.168.0.0/24网段的缺省路由，下一跳为20.20.20.1，具体配置略。

1.16.7 Portal支持双机热备配置举例

1. 组网需求

接入设备Switch A和Switch B之间存在备份链路，使用VRRP协议实现双机热备的流量切换，且两台设备均支持Portal认证功能。现要求Switch A和Switch B支持双机热备运行情况下的Portal用户数据备份，具体为：

l Switch A正常工作的情况下，Host通过Switch A进行Portal认证接入到外网。Switch A发生故障的情况下，Host通过Switch B接入到外网，并且在VRRP监视上行链路接口功能的配合下，保证业务流量切换不被中断。

l 采用RADIUS服务器作为认证/计费服务器。（本例中Portal服务器和RADIUS服务器的功能均由Server实现）

l Switch A和Switch B之间通过单独的链路传输双机热备报文，且指定专用于双机热备的VLAN为VLAN 8。

2. 组网图

图1-22 配置Portal支持双机热备组网图

3. 配置步骤

l 按照组网图配置设备各接口的IP地址，保证启动Portal之前各主机、服务器和设备之间的路由可达。

l 保证启动Portal之前主机可以分别通过Switch A和Switch B访问认证服务器。

l 配置VRRP备份组1和VRRP备份组2分别实现下行、上行链路的备份。VRRP配置的相关介绍请参见“可靠性配置指导”中的“VRRP”。

l 双机热备配置的相关介绍请参见“可靠性配置指导”中的“双机热备”。

(1) 配置Portal服务器（iMC PLAT 5.0）

下面以iMC为例（使用iMC版本为：iMC PLAT 5.0(E0101)、iMC UAM 5.0(E0101)），说明Portal server的基本配置。

# 配置Portal服务器。

登录进入iMC管理平台，选择“业务”页签，单击导航树中的[Portal服务器管理/服务器配置]菜单项，进入服务器配置页面。

l 根据实际组网情况调整以下参数，本例中使用缺省配置。

图1-23 Portal服务器配置页面

# 配置IP地址组。

单击导航树中的[Portal服务器管理/IP地址组配置]菜单项，进入Portal IP地址组配置页面，在该页面中单击<增加>按钮，进入增加IP地址组配置页面。

l 填写IP地址组名；

l 输入起始地址和终止地址。用户主机IP地址必须包含在该IP地址组范围内；

l 选择业务分组，本例中使用缺省的“未分组”；

l 选择IP地址组的类型为“普通”。

图1-24 增加IP地址组配置页面

# 增加Portal设备。

单击导航树中的[Portal服务器管理/设备配置]菜单项，进入Portal设备配置页面，在该页面中单击<增加>按钮，进入增加设备信息配置页面。

l 填写设备名；

l 指定主机IP地址为使能Portal的接口所在的VRRP组的虚拟IP地址；

l 输入密钥，与接入设备Switch上的配置保持一致；

l 选择是否进行二次地址分配，本例中为直接认证，因此为否；

l 选择是否支持逃生心跳功能和用户心跳功能，本例中不支持。

图1-25 增加设备信息配置页面

# Portal设备关联IP地址组

在Portal设备配置页面中的设备信息列表中，点击NAS设备的<端口组信息管理>链接，进入端口组信息配置页面。

图1-26 设备信息列表

在端口组信息配置页面中点击<增加>按钮，进入增加端口组信息配置页面。

l 填写端口组名；

l 选择IP地址组，用户接入网络时使用的IP地址必须属于所选的IP地址组；

l 其它参数采用缺省值。

图1-27 增加端口组信息配置页面

# 最后单击导航树中的[业务参数配置/系统配置手工生效]菜单项，使以上Portal服务器配置生效。

(2) 配置Switch A

l 配置VRRP

# 创建VRRP备份组1，并配置VRRP备份组1的虚拟IP地址为9.9.1.1。

<SwitchA> system-view

[SwitchA] interface vlan-interface 10

[SwitchA–Vlan-interface10] vrrp vrid 1 virtual-ip 9.9.1.1

# 配置VLAN接口10在VRRP备份组1中的优先级为200。

[SwitchA–Vlan-interface10] vrrp vrid 1 priority 200

# 在VLAN接口10上配置监视VLAN接口20，当VLAN接口20状态为Down或Removed时，VLAN接口10在备份组1中的优先级降低150。

[SwitchA–Vlan-interface10] vrrp vrid 1 track interface vlan-interface20 reduced 150

[SwitchA–Vlan-interface10] quit

# 创建VRRP备份组2，并配置VRRP备份组2的虚拟IP地址为192.168.0.1。

[SwitchA] interface vlan-interface 20

[SwitchA–Vlan-interface20] vrrp vrid 2 virtual-ip 192.168.0.1

# 配置VLAN接口20在VRRP备份组2中的优先级为200。

[SwitchA–Vlan-interface20] vrrp vrid 2 priority 200

# 在VLAN接口20上配置监视VLAN接口10，当VLAN接口10状态为Down或Removed时，VLAN接口20在备份组2中的优先级降低150。

[SwitchA–Vlan-interface20] vrrp vrid 2 track interface vlan-interface10 reduced 150

[SwitchA–Vlan-interface20] quit

l 配置RADIUS方案

# 创建名字为rs1的RADIUS方案并进入该方案视图。

[SwitchA] radius scheme rs1

# 配置RADIUS方案的服务器类型。使用iMC服务器时，RADIUS服务器类型应选择 extended。

[SwitchA-radius-rs1] server-type extended

# 配置RADIUS方案的主认证和主计费服务器及其通信密钥。

[SwitchA-radius-rs1] primary authentication 192.168.0.111

[SwitchA-radius-rs1] primary accounting 192.168.0.111

[SwitchA-radius-rs1] key authentication expert

[SwitchA-radius-rs1] key accounting expert

# 配置发送给RADIUS服务器的用户名不携带ISP域名。（可选，请根据实际应用需求调整）

[SwitchA-radius-rs1] user-name-format without-domain

[SwitchA-radius-rs1] quit

l 配置认证域

# 创建并进入名字为dm1的ISP域。

[SwitchA] domain dm1

# 配置ISP域的AAA方法。

[SwitchA-isp-dm1] authentication portal radius-scheme rs1

[SwitchA-isp-dm1] authorization portal radius-scheme rs1

[SwitchA-isp-dm1] accounting portal radius-scheme rs1

[SwitchA-isp-dm1] quit

# 配置系统缺省的ISP域dm1，所有接入用户共用此缺省域的认证和计费方法。若用户登录时输入的用户名未携带ISP域名，则使用缺省域下的认证方法。

[SwitchA] domain default enable dm1

l 配置接口使能Portal

# 配置Portal服务器：名称为newpt，IP地址为192.168.0.111，密钥为portal，端口为50100，URL为http://192.168.0.111:8080/portal。（Portal服务器的URL请与实际环境中的Portal服务器配置保持一致，此处仅为示例）

[SwitchA] portal server newpt ip 192.168.0.111 key portal port 50100 url http://192.168.0.111:8080/portal

# 在与用户Host相连的接口上使能Portal认证。

[SwitchA] interface vlan-interface 10

[SwitchA–Vlan-interface10] portal server newpt method layer3

# 指定发送Portal报文的源IP地址为VRRP组1的虚拟IP地址9.9.1.1。

[SwitchA–Vlan-interface10] portal nas-ip 9.9.1.1

l 配置Portal支持双机热备

# 配置VLAN接口10属于Portal备份组1。

[SwitchA–Vlan-interface10] portal backup-group 1

[SwitchA–Vlan-interface10] quit

# 配置双机热备模式下的设备ID为1。

[SwitchA] nas device-id 1

# 配置发送RADIUS报文的源IP地址为VRRP组2的虚拟IP地址192.168.0.1。

[SwitchA] radius nas-ip 192.168.0.1

请保证RADIUS服务器上成功添加了IP地址为192.168.0.1的接入设备。

l 配置双机热备

# 配置备份VLAN为VLAN 8。

[SwitchA] dhbk vlan 8

# 使能双机热备功能，且支持对称路径。

[SwitchA] dhbk enable backup-type symmetric-path

(3) 配置Switch B

l 配置VRRP

# 创建VRRP备份组1，并配置VRRP备份组1的虚拟IP地址为9.9.1.1。

<SwitchB> system-view

[SwitchB–Vlan-interface10] vrrp vrid 1 virtual-ip 9.9.1.1

# 配置VLAN接口10在VRRP备份组1中的优先级为150。

[SwitchB–Vlan-interface10] vrrp vrid 1 priority 150

[SwitchB–Vlan-interface10] quit

# 创建VRRP备份组2，并配置VRRP备份组2的虚拟IP地址为192.168.0.1。

[SwitchB] interface vlan-interface 20

[SwitchB–Vlan-interface20] vrrp vrid 2 virtual-ip 192.168.0.1

# 配置VLAN接口20在VRRP备份组2中的优先级为150。

[SwitchB–Vlan-interface20] vrrp vrid 2 priority 150

[SwitchB–Vlan-interface20] quit

l 配置RADIUS方案

# 创建名字为rs1的RADIUS方案并进入该方案视图。

[SwitchA] radius scheme rs1

# 配置RADIUS方案的服务器类型。使用iMC服务器时，RADIUS服务器类型应选择 extended。

[SwitchB-radius-rs1] server-type extended

# 配置RADIUS方案的主认证和主计费服务器及其通信密钥。

[SwitchB-radius-rs1] primary authentication 192.168.0.111

[SwitchB-radius-rs1] primary accounting 192.168.0.111

[SwitchB-radius-rs1] key authentication expert

[SwitchB-radius-rs1] key accounting expert

# 配置发送给RADIUS服务器的用户名不携带ISP域名。（可选，请根据实际应用需求调整）

[SwitchB-radius-rs1] user-name-format without-domain

[SwitchB-radius-rs1] quit

l 配置认证域

# 创建并进入名字为dm1的ISP域。

[SwitchB] domain dm1

# 配置ISP域的AAA方法。

[SwitchB-isp-dm1] authentication portal radius-scheme rs1

[SwitchB-isp-dm1] authorization portal radius-scheme rs1

[SwitchB-isp-dm1] accounting portal radius-scheme rs1

[SwitchB-isp-dm1] quit

# 配置系统缺省的ISP域dm1，所有接入用户共用此缺省域的认证和计费方法。若用户登录时输入的用户名未携带ISP域名，则使用缺省域下的认证方法。

[SwitchB] domain default enable dm1

l 配置接口使能Portal

# 配置Portal服务器：名称为newpt，IP地址为192.168.0.111，密钥为portal，端口为50100，URL为http://192.168.0.111:8080/portal。（Portal服务器的URL请与实际环境中的Portal服务器配置保持一致，此处仅为示例）

[SwitchB] portal server newpt ip 192.168.0.111 key portal port 50100 url http://192.168.0.111:8080/portal

# 在与用户Host相连的接口上使能Portal认证。

[SwitchB] interface vlan-interface 10

[SwitchB–Vlan-interface10] portal server newpt method layer3

# 指定发送Portal报文的源IP地址为VRRP组1的虚拟IP地址9.9.1.1。

[SwitchA–Vlan-interface10] portal nas-ip 9.9.1.1

l 配置Portal支持双机热备

# 配置VLAN接口10属于Portal备份组1。

[SwitchB–Vlan-interface10] portal backup-group 1

[SwitchB–Vlan-interface10] quit

# 配置双机热备模式下的设备ID为2。

[SwitchB] nas device-id 2

# 配置发送RADIUS报文的源IP地址为VRRP组2的虚拟IP地址192.168.0.1。

[SwitchB] radius nas-ip 192.168.0.1

请保证RADIUS服务器上成功添加了IP地址为192.168.0.1的接入设备。

l 配置双机热备

# 配置备份VLAN为VLAN 8。

[SwitchB] dhbk vlan 8

# 使能双机热备功能。

[SwitchB] dhbk enable backup-type symmetric-path

4. 验证配置结果

# 用户Host从Switch A成功上线后，在Switch A和Switch B上均可以通过命令 display portal user 查看该用户的认证情况。

[SwitchA] display portal user all

Index:3

State:ONLINE

SubState:NONE

ACL:NONE

Work-mode: primary

VPN instance:NONE

MAC IP Vlan Interface

---------------------------------------------------------------------

000d-88f8-0eac 9.9.1.2 10 Vlan-interface10

Total 1 user(s) matched, 1 listed.

[SwitchB] display portal user all

Index:2

State:ONLINE

SubState:NONE

ACL:NONE

Work-mode: secondary

VPN instance:NONE

MAC IP Vlan Interface

---------------------------------------------------------------------

000d-88f8-0eac 9.9.1.2 10 Vlan-interface10

Total 1 user(s) matched, 1 listed.

通过以上显示信息可以看到，Switch A和Switch B上均有Portal用户Host的信息，且Switch A上的用户模式为primary，Switch B上的用户模式为secondary，表示该用户是由Switch A上线并被同步到Switch B上的。

1.16.8 Portal服务器探测和用户同步功能配置举例

1. 组网需求

用户主机与接入设备Switch直接相连，通过Portal认证接入网络，并采用RADIUS服务器作为认证/计费服务器。

具体要求如下：

l 用户通过手工配置或DHCP获取的一个公网IP地址进行认证，在通过Portal认证前，只能访问Portal服务器；在通过Portal认证后，可以使用此IP地址访问非受限的互联网资源。

l 接入设备能够探测到Portal服务器是否可达，并输出可达状态变化的Trap信息，在服务器不可达时（例如，网络连接中断、网络设备故障或服务器无法正常提供服务等情况），取消Portal认证，使得用户仍然可以正常访问网络。

l 接入设备能够与服务器定期进行用户信息的同步。

2. 组网图

图1-28 Portal服务器探测和用户同步功能配置组网图

3. 配置思路

(1) 配置Portal服务器，并启动逃生心跳功能和用户心跳功能；

(2) 配置RADIUS服务器，实现正常的认证及计费功能；

(3) 接入设备通过接口Vlan-int100与用户主机直接相连，在该接口上配置直接方式的Portal认证；

(4) 接入设备上配置Portal服务器探测功能，在与Portal服务器的逃生心跳功能的配合下，对Portal服务器的可达状态进行探测；

(5) 接入设备上配置Portal用户同步功能，在与Portal服务器的用户心跳功能的配合下，与Portal服务器上的用户信息进行同步。

4. 配置步骤

l 按照组网图配置设备各接口的IP地址，保证启动Portal之前各主机、服务器和设备之间的路由可达。

l 完成RADIUS服务器上的配置，保证用户的认证/计费功能正常运行。

(1) 配置Portal服务器（iMC PLAT 5.0）

下面以iMC为例（使用iMC版本为：iMC PLAT 5.0(E0101)、iMC UAM 5.0(E0101)），说明Portal server的基本配置。

# 配置Portal服务器。

登录进入iMC管理平台，选择“业务”页签，单击导航树中的[Portal服务器管理/服务器配置]菜单项，进入服务器配置页面。

l 配置逃生心跳间隔时长及用户心跳间隔时长；

l 其它参数使用缺省配置。

图1-29 Portal服务器配置页面

# 配置IP地址组。

单击导航树中的[Portal服务器管理/IP地址组配置]菜单项，进入Portal IP地址组配置页面，在该页面中单击<增加>按钮，进入增加IP地址组配置页面。

l 填写IP地址组名；

l 输入起始地址和终止地址。用户主机IP地址必须包含在该IP地址组范围内；

l 选择业务分组，本例中使用缺省的“未分组”；

l 选择IP地址组的类型为“普通”。

图1-30 增加IP地址组配置页面

# 增加Portal设备。

单击导航树中的[Portal服务器管理/设备配置]菜单项，进入Portal设备配置页面，在该页面中单击<增加>按钮，进入增加设备信息配置页面。

l 填写设备名；

l 指定IP地址为与接入用户相连的设备接口IP；

l 输入密钥，与接入设备Switch上的配置保持一致；

l 选择是否进行二次地址分配，本例中为直接认证，因此为否；

l 选择支持逃生心跳功能和用户心跳功能。

图1-31 增加设备信息配置页面

# Portal设备关联IP地址组

在Portal设备配置页面中的设备信息列表中，点击NAS设备的<端口组信息管理>链接，进入端口组信息配置页面。

图1-32 设备信息列表

在端口组信息配置页面中点击<增加>按钮，进入增加端口组信息配置页面。

l 填写端口组名；

l 选择IP地址组，用户接入网络时使用的IP地址必须属于所选的IP地址组；

l 其它参数采用缺省值。

图1-33 增加端口组信息配置页面

# 最后单击导航树中的[业务参数配置/系统配置手工生效]菜单项，使以上Portal服务器配置生效。

(2) 配置Switch

l 配置RADIUS方案

# 创建名字为rs1的RADIUS方案并进入该方案视图。

<Switch> system-view

[Switch] radius scheme rs1

# 配置RADIUS方案的服务器类型。使用iMC服务器时，RADIUS服务器类型应选择 extended。

[Switch-radius-rs1] server-type extended

# 配置RADIUS方案的主认证和主计费服务器及其通信密钥。

[Switch-radius-rs1] primary authentication 192.168.0.112

[Switch-radius-rs1] primary accounting 192.168.0.112

[Switch-radius-rs1] key authentication radius

[Switch-radius-rs1] key accounting radius

# 配置发送给RADIUS服务器的用户名不携带ISP域名。

[Switch-radius-rs1] user-name-format without-domain

[Switch-radius-rs1] quit

l 配置认证域

# 创建并进入名字为dm1的ISP域。

[Switch] domain dm1

# 配置ISP域的AAA方法。

[Switch-isp-dm1] authentication portal radius-scheme rs1

[Switch-isp-dm1] authorization portal radius-scheme rs1

[Switch-isp-dm1] accounting portal radius-scheme rs1

[Switch-isp-dm1] quit

# 配置系统缺省的ISP域dm1，所有接入用户共用此缺省域的认证和计费方法。若用户登录时输入的用户名未携带ISP域名，则使用缺省域下的认证方法。

[Switch] domain default enable dm1

l 使能Portal认证

# 配置Portal服务器：名称为newpt，IP地址为192.168.0.111，密钥为portal，端口为50100，URL为http://192.168.0.111:8080/portal。（Portal服务器的URL请与实际环境中的Portal服务器配置保持一致，此处仅为示例）

[Switch] portal server newpt ip 192.168.0.111 key portal port 50100 url http://192.168.0.111:8080/portal

# 在与用户Host相连的接口上使能Portal认证。

[Switch] interface vlan-interface 100

[Switch–Vlan-interface100] portal server newpt method direct

[Switch–Vlan-interface100] quit

l 配置Portal服务器探测功能

# 配置对Portal服务器newpt的探测功能：探测方式为探测Portal心跳报文，每次探测间隔时间为40秒，若连续二次探测均失败，则发送服务器不可达的Trap信息，并打开网络限制，允许未认证用户访问网络。

[Switch] portal server newpt server-detect method portal-heartbeat action trap permit-all interval 40 retry 2

此处interval与retry的乘积应该大于等于Portal服务器的逃生心跳间隔时长，且推荐interval取值大于Portal服务器的逃生心跳间隔时长。

l 配置Portal用户信息同步功能

# 配置对Portal服务器newpt的Portal用户同步功能，检测用户同步报文的时间间隔为600秒，如果设备中的某用户信息在连续两个探测周期内都未在该Portal服务器发送的同步报文中出现，设备将强制该用户下线。

[Switch] portal server newpt user-sync interval 600 retry 2

此处interval与retry的乘积应该大于等于Portal服务器上的用户心跳间隔时长，且推荐interval取值大于Portal服务器的用户心跳间隔时长。

5. 验证配置结果

以上配置完成后，可以通过执行以下命令查看Portal服务器的状态。

<Switch> display portal server newpt

Portal server:

1)newpt:

IP : 192.168.0.111

Key : portal

Port : 50100

URL : http://192.168.0.111:8080/portal

Status : Up

1.16.9 配置二层Portal认证

1. 组网需求

用户主机与接入设备Switch直接相连，接入设备在端口Ethernet1/0/1上对用户进行二层Portal认证。具体要求如下：

l 使用远程RADIUS服务器进行认证、授权和计费；

l 使用远程DHCP服务器为用户分配IP地址；

l 本地Portal认证服务器的监听IP地址为4.4.4.4，设备向Portal用户推出自定义的认证页面，并使用HTTPS传输认证数据；

l 认证成功的用户可被授权加入VLAN 3；

l 认证失败的用户将被加入VLAN 2，允许访问其中的Update服务器资源；

l Host通过DHCP动态获取IP地址，认证前使用192.168.1.0/24网段的IP地址，认证成功后使用3.3.3.0/24网段的IP地址，认证失败后使用2.2.2.0/24网段的IP地址。

2. 组网图

图1-34 配置二层Portal认证组网图

3. 配置步骤

l 保证启动Portal之前各主机、服务器和设备之间的路由可达。

l 完成RADIUS服务器的配置，保证用户的认证/授权/计费功能正常运行。本例中，RADIUS服务器上需要配置一个Portal用户（帐户名为userpt），并配置授权VLAN。

l 完成DHCP服务器的配置，主要包括：指定为Portal客户端分配的IP地址范围（192.168.1.0/24、3.3.3.0/24、2.2.2.0/24）；指定客户端的默认网关地址（192.168.1.1、3.3.3.1、2.2.2.1），并将Update server地址（2.2.2.2）排除在可分配的IP地址范围外；确定分配给客户端的IP地址的租约期限（建议尽量取较小的值，以缩短认证状态变化后IP地址更新的时间）；保证DHCP server上具有到达客户端主机的路由。

l 由于DHCP服务器与DHCP客户端不在同一个网段，因此需要在客户端所在的网段设置DHCP中继。关于DHCP中继的详细介绍请参见“三层技术-IP业务配置指导”中的“DHCP中继”。

(1) 配置Portal认证

# 配置各以太网端口加入VLAN及对应VLAN接口的IP地址（略）。

# 完成PKI域pkidm的配置，并成功申请本地证书和CA证书，具体配置请参见“安全配置指导”中的“PKI”。

# 完成自定义缺省认证页面文件的编辑，并将其以defaultfile为名称压缩为一个Zip文件之后保存在设备根目录下。

# 配置SSL服务器端策略sslsvr，指定使用的PKI域为pkidm。

<Switch> system-view

[Switch] ssl server-policy sslsvr

[Switch-ssl-server-policy-sslsvr] pki pkidm

[Switch-ssl-server-policy-sslsvr] quit

# 配置本地Portal服务器支持HTTPS协议，并引用SSL服务器端策略sslsvr。

[Switch] portal local-server https server-policy sslsvr

# 配置Loopback接口12的IP地址为4.4.4.4。

[Switch] interface loopback 12

[Switch-LoopBack12] ip address 4.4.4.4 32

[Switch-LoopBack12] quit

# 指定二层Portal认证的本地Portal服务器监听IP地址为4.4.4.4。

[Switch] portal local-server ip 4.4.4.4

# 在端口Ethernet1/0/1上使能Portal认证，并配置认证失败的VLAN为VLAN 2。

[Switch] interface ethernet 1/0/1

[Switch–Ethernet1/0/1] port link-type hybrid

[Switch–Ethernet1/0/1] mac-vlan enable

[Switch–Ethernet1/0/1] portal local-server enable

[Switch–Ethernet1/0/1] portal auth-fail vlan 2

[Switch–Ethernet1/0/1] quit

(2) 配置RADIUS方案

# 创建名字为rs1的RADIUS方案并进入该方案视图。

[Switch] radius scheme rs1

# 配置RADIUS方案的服务器类型。使用iMC服务器时，RADIUS服务器类型应选择 extended。

[Switch-radius-rs1] server-type extended

# 配置RADIUS方案的主认证和主计费服务器及其通信密钥。

[Switch-radius-rs1] primary authentication 1.1.1.2

[Switch-radius-rs1] primary accounting 1.1.1.2

[Switch-radius-rs1] key accounting radius

[Switch-radius-rs1] key authentication radius

[Switch-radius-rs1] quit

(3) 配置认证域

# 创建并进入名字为triple的ISP域。

[Switch] domain triple

# 配置ISP域的AAA方法。

[Switch-isp-triple] authentication portal radius-scheme rs1

[Switch-isp-triple] authorization portal radius-scheme rs1

[Switch-isp-triple] accounting portal radius-scheme rs1

[Switch-isp-triple] quit

# 配置系统缺省的ISP域triple，所有接入用户共用此缺省域的认证和计费方法。若用户登录时输入的用户名未携带ISP域名，则使用缺省域下的认证方法。

[Switch] domain default enable triple

(4) 配置DHCP中继

# 使能DHCP服务。

[Switch] dhcp enable

# 配置DHCP服务器的地址。

[Switch] dhcp relay server-group 1 ip 1.1.1.3

# 配置VLAN接口8工作在DHCP中继模式。

[Switch] interface vlan-interface 8

[Switch-Vlan-interface8] dhcp select relay

# 配置VLAN接口8对应DHCP服务器组1。

[Switch-Vlan-interface8] dhcp relay server-select 1

[Switch-Vlan-interface8] quit

# 配置VLAN接口2工作在DHCP中继模式。

[Switch] interface vlan-interface 2

[Switch-Vlan-interface2] dhcp select relay

# 配置VLAN接口2对应DHCP服务器组1。

[Switch-Vlan-interface2] dhcp relay server-select 1

[Switch-Vlan-interface2] quit

# 配置VLAN接口3工作在DHCP中继模式。

[Switch] interface vlan-interface 3

[Switch-Vlan-interface3] dhcp select relay

# 配置VLAN接口3对应DHCP服务器组1。

[Switch-Vlan-interface3] dhcp relay server-select 1

[Switch-Vlan-interface3] quit

4. 验证配置结果

用户userpt未进行Web访问之前，位于初始VLAN（VLAN 8）中，并被分配192.168.1.0/24网段中的IP地址。当用户通过Web浏览器访问外部网络时，其Web请求均被重定向到认证页面https://4.4.4.4/portal/logon.htm。用户根据网页提示输入正确的用户名和密码后，能够成功通过Portal认证。通过认证的用户将会离开初始VLAN（VLAN 8），并加入授权VLAN（VLAN 3）。可通过 display connection ucibindex 命令查看已在线用户的详细信息。

<Switch> display connection ucibindex 30

Slot: 1

Index=30 , Username=userpt@triple

MAC=0015-e9a6-7cfe

IP=192.168.1.2

IPv6=N/A

Access=PORTAL ,AuthMethod=PAP

Port Type=Ethernet,Port Name=Ethernet1/0/1

Initial VLAN=8, Authorization VLAN=3

ACL Group=Disable

User Profile=N/A

CAR=Disable

Priority=Disable

Start=2009-11-26 17:40:02 ,Current=2009-11-26 17:48:21 ,Online=00h08m19s

Total 1 connection matched.

可以通过 display mac-vlan all 命令查看到认证成功用户的MAC VLAN表项，该表项中记录了加入授权VLAN的MAC地址与端口上生成的基于MAC的VLAN之间的对应关系。

[Switch] display mac-vlan all

The following MAC VLAN addresses exist:

S:Static D:Dynamic

MAC ADDR MASK VLAN ID PRIO STATE

--------------------------------------------------------

0015-e9a6-7cfe ffff-ffff-ffff 3 0 D

Total MAC VLAN address count:1

若用户认证失败，将被加入VLAN 2中，端口上生成的MAC VLAN表项及IP地址分配情况的查看方式同上，此处略。


1.17 常见配置错误举例

1.17.1 接入设备和Portal服务器上的密钥不一致

1. 故障现象

用户被强制去访问Portal服务器时没有弹出Portal认证页面，也没有错误提示，登录的Portal认证服务器Web页面为空白。

2. 故障分析

接入设备上配置的Portal密钥和Portal服务器上配置的密钥不一致，导致Portal服务器报文验证出错，Portal服务器拒绝弹出认证页面。

3. 处理过程

使用 display portal server 命令查看接入设备上配置的Portal服务器密钥，并在系统视图中使用 portal server 命令修改密钥，或者在Portal服务器上查看对应接入设备的密钥并修改密钥，直至两者的密钥设置一致。

1.17.2 接入设备上服务器端口配置错误

1. 故障现象

用户通过Portal认证后，在接入设备上使用 portal delete-user 命令强制用户下线失败，但是使用客户端的“断开”属性可以正常下线。

2. 故障分析

在Portal上使用 portal delete-user 命令强制用户下线时，由接入设备主动发送下线请求报文到Portal服务器，Portal服务器默认的报文监听端口为50100，但是因为接入设备上配置的服务器监听端口错误（不是50100），即其发送的下线请求报文的目的端口和Portal服务器真正的监听端口不一致，故Portal服务器无法收到下线请求报文，Portal服务器上的用户无法下线。

当使用客户端的“断开”属性让用户下线时，由Portal服务器主动向接入设备发送下线请求，其源端口为50100，接入设备的下线应答报文的目的端口使用请求报文的源端口，避免了其配置上的错误，使得Portal服务器可以收到下线应答报文，从而Portal服务器上的用户成功下线。

3. 处理过程

使用 display portal server 命令查看接入设备对应服务器的端口，并在系统视图中使用 portal server 命令修改服务器的端口，使其和Portal服务器上的监听端口一致。


1 Triple认证配置

相关链接

  • 1.1 Triple认证简介
  • 1.2 Triple认证配置任务简介
  • 1.3 Triple认证典型配置举例
父主题： 05-Triple认证配置


1.1 Triple认证简介

1.1.1 产生背景

在客户端形式多样的网络环境中，不同客户端支持的接入认证方式有所不同，如图1-1 所示，有的客户端只能进行MAC地址认证（比如打印机终端）；有的主机安装了802.1X客户端软件，可以进行802.1X认证；有的用户主机只希望通过Web访问进行Portal认证。为了灵活地适应这种网络环境中的多种认证需求，需要在接入用户的端口上对三种认证方式进行统一部署，使得用户可以选择任何一种适合的认证机制来进行认证，且只需要成功通过一种方式的认证即可实现接入，无需通过多种认证。

图1-1 Triple认证典型应用组网图

Triple认证方案可满足以上需求，允许在设备的二层端口上同时开启Portal认证、MAC地址认证和802.1X认证功能，使得选用其中任意一种方式进行认证的客户端均可通过该端口接入网络。

关于802.1X、MAC地址认证、Portal认证的详细介绍请分别参考“安全配置指导”中的“802.1X”、“MAC地址认证”和“Portal”。

1.1.2 认证机制

当端口上同时开启了802.1X认证、MAC地址认证和Portal认证功能后，不同类型的客户端报文可触发的不同的认证过程：

l 客户端网卡接入网络时，如果发送ARP报文或者DHCP报文（广播报文），则首先触发MAC地址认证，若MAC地址认证成功，则后续无需其它认证；若MAC地址认证失败，则后续允许触发802.1X或者Portal认证。

l 如果客户端使用系统自带的802.1X客户端或者第三方客户端软件发送EAP报文，或者在设备开启单播触发功能的情况下客户端发送任意报文，则触发802.1X认证。

l 如果客户端发送HTTP报文，则触发Portal认证。

端口允许多种认证过程同时进行，且某一种认证失败不会影响同时进行的其它认证过程。一旦客户端通过某一种认证，设备将立即中止同时进行的其它认证过程。之后，端口是否允许该客户端触发其它认证过程的情况有所不同：

l 客户端通过802.1X认证或者Portal认证后，将不能再触发其它认证。

l 客户端通过MAC地址认证后，将不能再触发Portal认证，但是允许触发802.1X认证。若802.1X认证成功，则端口上后生成的802.1X认证用户信息会覆盖已存在的MAC地址认证用户信息。

1.1.3 扩展功能

在同时使能了三种认证方式的端口上，还支持以下扩展功能：

1. 授权VLAN下发

服务器向通过认证的用户所在的端口下发授权VLAN，端口将用户加入对应的授权VLAN中。

2. 认证失败的VLAN

用户认证失败后，端口将认证失败的用户加入已配置的认证失败的VLAN中。

l 对于802.1X和Portal用户，认证失败的VLAN为端口上配置Auth-Fail VLAN。

l 对于MAC地址认证用户，认证失败的VLAN为端口上配置的Guest VLAN。

允许在同一个端口上配置不同类型的认证失败的VLAN，但最终端口上认证失败的用户所加入的VLAN与用户所经历的认证失败类型有关，通常情况下为用户第一次认证失败后加入的VLAN，但如果用户进行了802.1X认证且失败了，则用户会立刻离开之前已经加入的认证失败的VLAN而加入端口上配置的802.1X认证失败的VLAN。

3. ACL下发

设备能够根据服务器下发的授权ACL对通过认证的用户所在端口的数据流进行控制；在服务器上配置授权ACL之前，需要在设备上配置相应的规则。管理员可以通过改变服务器的授权ACL设置或设备上对应的ACL规则来改变用户的访问权限。

4. 在线用户探测功能

l 对于Portal用户，通过开启用户在线检测定时器来探测用户是否在线，检测时间间隔可配；

l 对于802.1X认证用户，通过开启端口上的在线用户握手功能或者重认证功能来探测用户是否在线，探测时间间隔可配置；

l 对于MAC地址认证用户，通过开启下线检测定时器，来探测用户是否在线，检测时间间隔可配置。

关于各扩展功能的详细介绍请分别参考“安全配置指导”中的“802.1X”、“MAC地址认证”、“Portal认证”。


1.2 Triple认证配置任务简介

表1-1 Triple认证配置任务简介

配置任务 | 说明 |  | 详细配置
配置802.1X认证 | 三者至少选其一 | 必须为基于MAC的接入控制方式（macbased）； 不建议使用Guest VLAN功能 | 具体配置请参考“安全配置指导”的“802.1X”
配置MAC地址认证 |  | - | 具体配置请参考“安全配置指导”的“MAC地址认证”
配置Portal认证 |  | 仅支持二层Portal认证的相关功能 | 具体配置请参考“安全配置指导”的“Portal”


1.3 Triple认证典型配置举例

1.3.1 Triple认证基本功能配置举例

1. 组网需求

在如 图1-3 所示的组网环境中，用户通过接入设备Switch接入网络，要求在Switch的二层端口上对所有用户进行统一认证，且只要用户通过802.1X认证、Portal认证、MAC地址认证中的任何一种认证，即可接入网络。具体需求如下：

l 客户端上静态配置属于192.168.1.0/24网段的IP地址；

l 使用远程RADIUS服务器进行认证、授权和计费，且发送给RADIUS服务器的用户名不携带ISP域名；

l 本地Portal认证服务器的监听IP地址为4.4.4.4，设备向Portal用户推出系统默认的认证页面，并使用HTTP传输认证数据。

2. 组网图

图1-2 Triple认证基本功能配置组网图

3. 配置步骤

l 保证启动Portal之前各主机、服务器和设备之间的路由可达。

l 保证Web用户的主机上有与本地Portal服务器监听IP地址可达的路由表项。

l 完成RADIUS服务器的配置，保证用户的认证/授权/计费功能正常运行。本例中，RADIUS服务器上配置一个802.1X用户（帐户名为userdot），一个Portal用户（帐户名为userpt），以及一个MAC地址认证用户（帐户名、密码均为Printer的MAC地址001588f80dd7）。

(1) 配置Portal认证

# 配置端口属于VLAN及对应VLAN接口的IP地址（略）。

# 配置本地Portal服务器支持HTTP协议。

<Switch> system-view

[Switch] portal local-server http

# 配置Loopback接口12的IP地址为4.4.4.4。

[Switch] interface loopback 12

[Switch-LoopBack12] ip address 4.4.4.4 32

[Switch-LoopBack12] quit

# 指定二层Portal认证的本地Portal服务器监听IP地址为4.4.4.4。

[Switch] portal local-server ip 4.4.4.4

# 在端口Ethernet 1/0/1上使能二层Portal认证。

[Switch] interface ethernet 1/0/1

[Switch–Ethernet1/0/1] portal local-server enable

[Switch–Ethernet1/0/1] quit

(2) 配置802.1X认证

# 全局使能802.1X认证。

[Switch] dot1x

# 在端口Ethernet1/0/1上使能802.1X认证（必须为基于MAC的接入控制方式）。

[Switch] interface ethernet 1/0/1

[Switch–Ethernet1/0/1] dot1x port-method macbased

[Switch–Ethernet1/0/1] dot1x

[Switch–Ethernet1/0/1] quit

(3) 配置MAC地址认证

# 全局使能MAC地址认证。

[Switch] mac-authentication

# 在端口Ethernet 1/0/1上使能MAC地址认证。

[Switch] interface ethernet 1/0/1

[Switch–Ethernet1/0/1] mac-authentication

[Switch–Ethernet1/0/1] quit

(4) 配置RADIUS方案

# 创建并进入名字为rs1的RADIUS方案视图。

[Switch] radius scheme rs1

# 配置RADIUS方案的服务器类型。使用iMC服务器时，RADIUS服务器类型应选择 extended。

[Switch-radius-rs1] server-type extended

# 配置RADIUS方案的主认证和主计费服务器及其通信密钥。

[Switch-radius-rs1] primary authentication 1.1.1.2

[Switch-radius-rs1] primary accounting 1.1.1.2

[Switch-radius-rs1] key authentication radius

[Switch-radius-rs1] key accounting radius

# 配置发送给RADIUS服务器的用户名不携带ISP域名。

[Switch-radius-rs1] user-name-format without-domain

[Switch-radius-rs1] quit

(5) 配置认证域

# 创建并进入名字为triple的ISP域。

[Switch] domain triple

# 为所有类型的用户配置缺省的AAA方案。

[Switch-isp-triple] authentication default radius-scheme rs1

[Switch-isp-triple] authorization default radius-scheme rs1

[Switch-isp-triple] accounting default radius-scheme rs1

[Switch-isp-triple] quit

# 配置系统缺省的ISP域为triple。若用户登录时输入的用户名未携带ISP域名，则使用缺省域下的认证方案。

[Switch] domain default enable triple

4. 验证配置结果

用户userdot通过802.1X客户端发起认证，输入正确的用户名和密码后，可成功通过802.1X认证；Web用户userpt通过Web浏览器访问外部网络，其Web请求均被重定向到认证页面http://4.4.4.4/portal/logon.htm。用户根据网页提示输入正确的用户名和密码后，能够成功通过Portal认证；打印机接入网络后，可成功通过MAC地址认证。

可通过 display connection 命令查看已在线用户的信息。

[Switch] display connection

Slot: 1

Index=30 , Username=userpt@triple

IP=192.168.1.2

IPv6=N/A

MAC=0015-e9a6-7cfe

Index=31 , Username=userdot@triple

IP=192.168.1.3

IPv6=N/A

MAC=0002-0002-0001

Index=32 , Username=001588f80dd7@triple

IP=192.168.1.4

IPv6=N/A

MAC=0015-88f8-0dd7

Total 3 connection(s) matched on slot 1.

Total 3 connection(s) matched.

1.3.2 Triple认证配合VLAN下发及Auth-Fail VLAN功能配置举例

1. 组网需求

在如图1-3 所示的组网环境中，用户通过接入设备Switch接入网络，要求在Switch的二层端口上对所有用户进行统一认证，且只要用户通过802.1X认证、Portal认证、MAC地址认证中的任何一种认证，即可接入网络。具体需求如下：

l Portal用户通过DHCP动态获取IP地址，认证前使用192.168.1.0/24网段的IP地址，认证成功后使用3.3.3.0/24网段的IP地址，认证失败后使用2.2.2.0/24网段的IP地址；（DHCP服务器可由接入设备充当也可外置，本例中由接入设备提供DHCP服务）

l 802.1X用户在认证前使用手工配置的192.168.1.0/24网段的IP地址，认证成功后通过DHCP动态获取3.3.3.0/24网段的IP地址，认证失败后使用手工配置的2.2.2.0/24网段的IP地址。

l 打印机成功接入网络后通过DHCP获取一个与它的MAC地址静态绑定的IP地址3.3.3.111/24；

l 使用远程RADIUS服务器进行认证、授权和计费，且发送给RADIUS服务器的用户名不携带ISP域名；

l 本地Portal认证服务器的监听IP地址为4.4.4.4，设备向Portal用户推出自定义的认证页面，并使用HTTPS传输认证数据；

l 认证成功的用户可被授权加入服务器上指定的VLAN 3；

l 认证失败的用户将被加入接入设备上配置的VLAN 2，允许访问其中的Update服务器资源。

2. 组网图

图1-3 Triple认证配合VLAN下发及Auth-Fail VLAN功能配置组网图

3. 配置步骤

l 保证启动Portal之前各主机、服务器和设备之间的路由可达。

l 若使用外置DHCP服务器，保证用户在认证前后可成功获取DHCP服务器分配的IP地址。

l 完成RADIUS服务器的配置，保证用户的认证/授权/计费功能正常运行。本例中，RADIUS服务器上配置一个802.1X用户（帐户名为userdot），一个Portal用户（帐户名为userpt），以及一个MAC地址认证用户（帐户名、密码均为Printer的MAC地址001588f80dd7），并配置授权VLAN（VLAN 3）。

l 完成PKI域pkidm的配置，并成功申请本地证书和CA证书，具体配置请参见“安全配置指导”中的“PKI”。

l 完成自定义缺省认证页面文件的编辑，并将其以defaultfile为名称压缩为一个Zip文件之后保存在设备根目录下。

(1) 配置DHCP服务

# 配置端口属于VLAN及对应VLAN接口的IP地址（略）。

# 使能DHCP服务。

<Switch> system-view

[Switch] dhcp enable

# 配置不参与自动分配的Update server的IP地址。

[Switch] dhcp server forbidden-ip 2.2.2.2

# 配置DHCP地址池1的属性（地址池范围、地址租用期限、网关地址）。建议配置较小的地址租用期限，以缩短客户端认证成功或失败后重新获取IP地址的时间。

[Switch] dhcp server ip-pool 1

[Switch-dhcp-pool-1] network 192.168.1.0 mask 255.255.255.0

[Switch-dhcp-pool-1] expired day 0 hour 0 minute 1

[Switch-dhcp-pool-1] gateway-list 192.168.1.1

[Switch-dhcp-pool-1] quit

# 配置DHCP地址池2的属性（地址池范围、地址租用期限、网关地址）。建议配置较小的地址租用期限，以缩短客户端认证成功后重新获取IP地址的时间。

[Switch] dhcp server ip-pool 2

[Switch-dhcp-pool-2] network 2.2.2.0 mask 255.255.255.0

[Switch-dhcp-pool-2] expired day 0 hour 0 minute 1

[Switch-dhcp-pool-2] gateway-list 2.2.2.1

[Switch-dhcp-pool-2] quit

# 配置DHCP地址池3的属性（地址池范围、地址租用期限、网关地址）。建议配置较小的地址租用期限，以缩短客户端下线后重新获取IP地址的时间。

[Switch] dhcp server ip-pool 3

[Switch-dhcp-pool-3] network 3.3.3.0 mask 255.255.255.0

[Switch-dhcp-pool-3] expired day 0 hour 0 minute 1

[Switch-dhcp-pool-3] gateway-list 3.3.3.1

[Switch-dhcp-pool-3] quit

一般情况下，为缩小客户端认证状态改变之后更新IP地址的时间，建议配置较小的地址租约期限，使得前一个状态的IP地址租约尽快过期，以触发新的IP地址申请。但是，地址租用期限的配置还要考虑客户端的实现，例如iNode的802.1X客户端就可以选择在断开连接之后自动更新客户端IP地址，而不必等待租约过期来重获IP地址，因此实际应用中需要根据当前组网环境合理调整取值。

# 配置DHCP地址池4，将MAC地址为0015-e9a6-7cfe的打印机与IP地址3.3.3.111/24绑定。

[Switch] dhcp server ip-pool 4

[Switch-dhcp-pool-4] static-bind ip-address 3.3.3.111 mask 255.255.255.0

[Switch-dhcp-pool-4] static-bind mac-address 0015-e9a6-7cfe

[Switch-dhcp-pool-4] quit

(2) 配置Portal认证

# 配置SSL服务器端策略sslsvr，指定使用的PKI域为pkidm。

[Switch] ssl server-policy sslsvr

[Switch-ssl-server-policy-sslsvr] pki pkidm

[Switch-ssl-server-policy-sslsvr] quit

# 配置本地Portal服务器支持HTTPS协议，并引用SSL服务器端策略sslsvr。

[Switch] portal local-server https server-policy sslsvr

# 配置Loopback接口12的IP地址为4.4.4.4。

[Switch] interface loopback 12

[Switch-LoopBack12] ip address 4.4.4.4 32

[Switch-LoopBack12] quit

# 指定二层Portal认证的本地Portal服务器监听IP地址为4.4.4.4。

[Switch] portal local-server ip 4.4.4.4

# 在端口Ethernet 1/0/1上使能二层Portal认证，并配置认证失败的VLAN为 VLAN 2。

[Switch] interface ethernet 1/0/1

[Switch–Ethernet1/0/1] port link-type hybrid

[Switch–Ethernet1/0/1] mac-vlan enable

[Switch–Ethernet1/0/1] portal local-server enable

[Switch–Ethernet1/0/1] portal auth-fail vlan 2

[Switch–Ethernet1/0/1] quit

(3) 配置802.1X认证

# 全局使能802.1X认证。

[Switch] dot1x

# 在端口Ethernet 1/0/1上使能802.1X认证（必须为基于MAC的接入控制方式），并配置认证失败的VLAN为 VLAN 2。

[Switch] interface ethernet 1/0/1

[Switch–Ethernet1/0/1] dot1x port-method macbased

[Switch–Ethernet1/0/1] dot1x

[Switch–Ethernet1/0/1] dot1x auth-fail vlan 2

[Switch–Ethernet1/0/1] quit

(4) 配置MAC地址认证

# 全局使能MAC地址认证。

[Switch] mac-authentication

# 在端口Ethernet 1/0/1上使能MAC地址认证，并配置认证失败的VLAN为 VLAN 2。

[Switch] interface ethernet 1/0/1

[Switch–Ethernet1/0/1] mac-authentication

[Switch–Ethernet1/0/1] mac-authentication guest-vlan 2

[Switch–Ethernet1/0/1] quit

(5) 配置RADIUS方案

# 创建并进入名字为rs1的RADIUS方案视图。

[Switch] radius scheme rs1

# 配置RADIUS方案的服务器类型。使用iMC服务器时，RADIUS服务器类型应选择 extended。

[Switch-radius-rs1] server-type extended

# 配置RADIUS方案的主认证和主计费服务器及其通信密钥。

[Switch-radius-rs1] primary authentication 1.1.1.2

[Switch-radius-rs1] primary accounting 1.1.1.2

[Switch-radius-rs1] key authentication radius

[Switch-radius-rs1] key accounting radius

# 配置发送给RADIUS服务器的用户名不携带ISP域名。

[Switch-radius-rs1] user-name-format without-domain

[Switch-radius-rs1] quit

(6) 配置认证域

# 创建并进入名字为triple的ISP域。

[Switch] domain triple

# 为所有类型的用户配置缺省的AAA方案。

[Switch-isp-triple] authentication default radius-scheme rs1

[Switch-isp-triple] authorization default radius-scheme rs1

[Switch-isp-triple] accounting default radius-scheme rs1

[Switch-isp-triple] quit

# 配置系统缺省的ISP域为triple。若用户登录时输入的用户名未携带ISP域名，则使用缺省域下的认证方案。

[Switch] domain default enable triple

4. 验证配置结果

用户userdot通过802.1X客户端发起认证，输入正确的用户名和密码后，可成功通过802.1X认证；Web用户userpt通过Web浏览器访问外部网络，其Web请求均被重定向到认证页面https://4.4.4.4/portal/logon.htm。用户根据网页提示输入正确的用户名和密码后，能够成功通过Portal认证；打印机接入网络后，可成功通过MAC地址认证。

可通过 display connection 命令查看已在线用户的信息。

[Switch] display connection

Slot: 1

Index=30 , Username=userpt@triple

IP=192.168.1.2

IPv6=N/A

MAC=0015-e9a6-7cfe

Index=31 , Username=userdot@triple

IP=3.3.3.2

IPv6=N/A

MAC=0002-0002-0001

Index=32 , Username=001588f80dd7@triple

IP=N/A

IPv6=N/A

MAC=0015-88f8-0dd7

Total 3 connection(s) matched on slot 1.

Total 3 connection(s) matched.

可以通过 display mac-vlan all 命令查看到认证成功用户的MAC VLAN表项，该表项中记录了加入授权VLAN的MAC地址与端口上生成的基于MAC的VLAN之间的对应关系。

[Switch] display mac-vlan all

The following MAC VLAN addresses exist:

S:Static D:Dynamic

MAC ADDR MASK VLAN ID PRIO STATE

--------------------------------------------------------

0015-e9a6-7cfe ffff-ffff-ffff 3 0 D

0002-0002-0001 ffff-ffff-ffff 3 0 D

0015-88f8-0dd7 ffff-ffff-ffff 3 0 D

Total MAC VLAN address count:3

可通过 display dhcp server ip-in-use 命令查看设备为在线用户分配的IP地址信息。

[Switch] display dhcp server ip-in-use all

Pool utilization: 0.59%

IP address Client-identifier/ Lease expiration Type

Hardware address

3.3.3.111 0015-88f8-0dd7 Dec 15 2009 17:40:52 Auto:COMMITTED

3.3.3.2 0002-0002-0001 Dec 15 2009 17:41:02 Auto:COMMITTED

3.3.3.3 0015-e9a6-7cfe Unlimited Manual

--- total 3 entry ---

若用户认证失败，将被加入VLAN 2中，端口上生成的MAC VLAN表项及IP地址分配情况的查看方式同上，此处略。


1 端口安全配置

相关链接

  • 1.1 端口安全简介
  • 1.2 端口安全配置任务简介
  • 1.3 使能端口安全功能
  • 1.4 配置端口安全允许的最大MAC地址数
  • 1.5 配置端口安全模式
  • 1.6 配置端口安全的特性
  • 1.7 配置安全MAC地址
  • 1.8 配置当前端口不应用服务器下发的授权信息
  • 1.9 端口安全显示和维护
  • 1.10 端口安全典型配置举例
  • 1.11 常见配置错误举例
父主题： 06-端口安全配置


1.1 端口安全简介

1.1.1 概述

端口安全是一种基于MAC地址对网络接入进行控制的安全机制，是对已有的802.1X认证和MAC地址认证的扩充。这种机制通过检测端口收到的数据帧中的源MAC地址来控制非授权设备对网络的访问，通过检测从端口发出的数据帧中的目的MAC地址来控制对非授权设备的访问。

端口安全的主要功能是通过定义各种端口安全模式，让设备学习到合法的源MAC地址，以达到相应的网络管理效果。启动了端口安全功能之后，当发现非法报文时，系统将触发相应特性，并按照预先指定的方式进行处理，既方便用户的管理又提高了系统的安全性。这里的非法报文是指：

l MAC地址未被端口学习到的用户报文；

l 未通过认证的用户报文。

由于端口安全特性通过多种安全模式提供了802.1X和MAC地址认证的扩展和组合应用，因此在需要灵活使用以上两种认证方式的组网环境下，推荐使用端口安全特性。而在仅需要802.1X、MAC地址认证特性来完成接入控制的组网环境下，推荐单独使用以上两个特性。关于802.1X、MAC地址认证特性的详细介绍和具体配置请参见“安全配置指导”中的“802.1X”、“MAC地址认证”。

1.1.2 端口安全的特性

1. Need To Know特性（NTK）

Need To Know特性通过检测从端口发出的数据帧的目的MAC地址，保证数据帧只能被发送到已经通过认证或被端口学习到的MAC所属的设备或主机上，从而防止非法设备窃听网络数据。

2. 入侵检测（Intrusion Protection）特性

入侵检测特性指通过检测从端口收到的数据帧的源MAC地址，对接收非法报文的端口采取相应的安全策略，包括端口被暂时断开连接、永久断开连接或MAC地址被过滤（默认3分钟，不可配），以保证端口的安全性。

3. Trap特性

Trap特性是指当端口有特定的数据包（由非法入侵，用户上下线等原因引起）传送时，设备将会发送Trap信息，便于网络管理员对这些特殊的行为进行监控。

1.1.3 端口安全模式

基本的端口安全模式可大致分为两大类：控制MAC学习类和认证类。

l 控制MAC学习类无需认证，包括端口自动学习MAC地址和禁止MAC地址学习两种模式。

l 认证类利用MAC地址认证和802.1X认证机制来实现，包括单独认证和组合认证等多种模式。

配置了安全模式的端口上收到用户报文后，首先查找MAC地址表，如果该报文的源MAC地址已经存在于MAC地址表中，则端口转发该报文，否则根据端口所在安全模式进行相应的处理（学习、认证），并在发现非法报文后触发端口执行相应的安全防护措施（Need To Know、入侵检测）或发送Trap告警。关于各模式的具体工作机制，以及是否触发Need To Know、入侵检测的具体情况请参见表1-1。

表1-1 端口安全模式描述表

安全模式 |  |  | 工作机制 | NTK/入侵检测
缺省情况 | noRestrictions |  | 表示端口的安全功能关闭，端口处于无限制状态 | 无效
端口控制MAC地址学习 |  | autoLearn | 端口可通过手工配置或自动学习MAC地址。这些新的MAC地址被称为安全MAC，并被添加到安全MAC地址表中 当端口下的安全MAC地址数超过端口安全允许学习的最大MAC地址数后，端口模式会自动转变为secure模式。之后，该端口停止添加新的安全MAC，只有源MAC地址为安全MAC地址、手工配置的MAC地址的报文，才能通过该端口 该模式下，端口禁止学习动态MAC地址 | 可触发
 |  | secure | 禁止端口学习MAC地址，只有源MAC地址为端口上的安全MAC地址、手工配置的MAC地址的报文，才能通过该端口
端口采用802.1X认证 | userLogin |  | 对接入用户采用基于端口的802.1X认证 此模式下，端口下的第一个802.1X用户认证成功后，其它用户无须认证就可接入 | 无效
 | userLoginSecure |  | 对接入用户采用基于MAC地址的802.1X认证 此模式下，端口最多只允许一个802.1X认证用户接入 | 可触发
 | userLoginWithOUI |  | 该模式与userLoginSecure模式类似，但端口上除了允许一个802.1X认证用户接入之外，还额外允许一个特殊用户接入，该用户报文的源MAC的OUI与设备上配置的OUI值相符 在用户接入方式为有线的情况下，802.1X报文进行802.1X认证，非802.1X报文直接进行OUI匹配，802.1X认证成功和OUI匹配成功的报文都允许通过端口
 | userLoginSecureExt |  | 对接入用户采用基于MAC的802.1X认证，且允许端口下有多个802.1X用户
端口采用MAC地址认证 | macAddressWithRadius |  | 对接入用户采用MAC地址认证 此模式下，端口允许多个用户接入 | 可触发
端口采用802.1X和MAC地址认证组合认证 | macAddressOrUserLoginSecure |  | 端口同时处于userLoginSecure模式和macAddressWithRadius模式 在用户接入方式为有线的情况下，非802.1X报文直接进行MAC地址认证，802.1X报文直接进行802.1X认证 | 可触发
 | macAddressElseUserLoginSecure |  | 端口同时处于macAddressWithRadius模式和userLoginSecure模式，但MAC地址认证优先级大于802.1X认证； 非802.1X报文直接进行MAC地址认证。802.1X报文先进行MAC地址认证，如果MAC地址认证失败再进行802.1X认证
 | macAddressOrUserLoginSecureExt |  | 与macAddressOrUserLoginSecure类似，但允许端口下有多个802.1X和MAC地址认证用户
 | macAddressElseUserLoginSecureExt |  | 与macAddressElseUserLoginSecure类似，但允许端口下有多个802.1X和MAC地址认证用户

l 当多个用户通过认证时，端口下所允许的最大用户数根据不同的端口安全模式，取端口安全所允许的最大MAC地址数与相应模式下允许认证用户数的最小值。例如，userLoginSecureExt模式下，端口下所允许的最大用户为配置的端口安全所允许的最大MAC地址数与802.1X认证所允许的最大用户数的最小值。

l 手工配置MAC地址的具体介绍请参见“二层技术-以太网交换命令参考”中的“MAC地址表”。

由于安全模式种类较多，为便于记忆，部分端口安全模式名称的构成可按如下规则理解：

l “userLogin”表示基于端口的802.1X认证；

l “macAddress”表示MAC地址认证；

l “Else”之前的认证方式先被采用，失败后根据请求认证的报文协议类型决定是否转为“Else”之后的认证方式。

l “Or”连接的两种认证方式无固定生效顺序，设备根据请求认证的报文协议类型决定认证方式；

l 携带“Secure”的userLogin表示基于MAC地址的802.1X认证。

l 携带“Ext”表示可允许多个802.1X用户认证成功，不携带则表示仅允许一个802.1X用户认证成功。

1.1.4 端口安全对Guest VLAN和Auth-Fail VLAN的支持

802.1X认证的Guest VLAN是指允许用户在未认证的情况下，可以访问的指定VLAN。802.1X的Auth-Fail VLAN与MAC地址认证的Guest VLAN是指允许用户在认证失败的情况下，可以访问的指定VLAN。

l 对于支持802.1X认证的安全模式来说，可配置Guest VLAN和Auth-Fail VLAN。关于802.1X认证的Guest VLAN和Auth-Fail VLAN的具体介绍请参见“安全配置指导”中的“802.1X”。

l 对于支持MAC地址认证的安全模式来说，可配置Guest VLAN。关于MAC地址认证Guest VLAN的具体介绍请参见“安全配置指导”中的“MAC地址认证”。

若端口上同时配置了802.1X认证的Auth-Fail VLAN与MAC地址认证的Guest VLAN，则后生成的Auth-Fail VLAN表项会覆盖先生成的Guest VLAN表项，但后生成的Guest VLAN表项不能覆盖先生成的Auth-Fail VLAN表项。


1.2 端口安全配置任务简介

表1-2 端口安全配置任务简介

配置任务 |  | 说明 | 详细配置
使能端口安全功能 |  | 必选 | 1.3
配置端口安全允许的最大MAC地址数 |  | 可选 | 1.4
配置端口安全模式 |  | 必选 | 1.5
配置端口安全的特性 | 配置Need To Know特性 | 可选 根据实际组网需求选择其中一种或多种特性 | 1.6
 | 配置入侵检测特性
 | 配置Trap特性
配置安全MAC地址 |  | 可选 | 1.7
配置当前端口不应用服务器下发的授权信息 |  | 可选 | 1.8


1.3 使能端口安全功能

1.3.1 配置准备

在使能端口安全功能之前，需要关闭全局的802.1X和MAC地址认证功能。

1.3.2 使能端口安全功能

表1-3 使能端口安全功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
使能端口安全功能 | port-security enable | 必选 缺省情况下，端口安全功能处于关闭状态

执行使能或关闭端口安全功能的命令后，端口上的如下配置会被自动恢复为以下缺省情况：

l 802.1X端口接入控制方式为 macbased、802.1X端口的授权状态为 auto。

l 端口安全模式为noRestrictions。

当端口安全功能处于使能状态时，端口上的802.1X功能以及MAC地址认证功能将不能被手动开启，且802.1X端口接入控制方式和端口接入控制模式也不能被修改，只能随端口安全模式的改变由系统更改。

在端口上有用户在线的情况下，端口安全功能无法关闭。

l 有关802.1X认证配置的详细介绍可参见“安全配置指导”中的“802.1X”。

l 有关MAC地址认证配置的详细介绍可参见“安全配置指导”中的“MAC地址认证”。


1.4 配置端口安全允许的最大MAC地址数

端口安全允许某个端口下有多个用户接入，但是允许的用户数不能超过规定的最大值。

配置端口允许的最大MAC地址数有两个作用：

l 控制端口允许接入网络的最大用户数。最终端口上允许接入的用户数为此处配置的最大MAC地址数和相应认证类安全模式下允许的用户数的较小值；

l 控制autoLearn模式下端口能够添加的最大安全MAC地址数。

表1-4 配置端口安全允许的最大MAC地址数

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入二层以太网端口视图 | interface interface-type interface-number | -
配置端口安全允许的最大MAC地址数 | port-security max-mac-count count-value | 必选 缺省情况下，最大MAC地址数不受限制

端口安全允许的最大MAC地址数与“二层技术-以太网交换配置指导/MAC地址表”中配置的端口最多可以学习到的MAC地址数无关，且不受其影响。


1.5 配置端口安全模式

1.5.1 配置准备

在配置端口安全模式之前，端口上需要满足以下条件：

l 802.1X认证关闭。

l MAC地址认证关闭。

l 端口未加入聚合组或业务环回组。

（如果以上条件不满足，则系统会提示错误信息，且不能进行端口安全模式的配置；如果端口上已经配置了端口安全模式，则以上配置就不允许改变。）

l 对于autoLearn模式，还需要提前设置端口安全允许的最大MAC地址数。但是如果端口已经工作在autoLearn模式下，则无法更改端口安全允许的最大MAC地址数。

l 在端口安全功能未使能的情况下，端口安全模式可以进行配置但不会生效。

l 端口上有用户在线的情况下，端口安全模式无法改变。

1.5.2 配置端口安全模式

表1-5 配置端口安全安全模式

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置允许通过认证的用户OUI值 | port-security oui oui-value index index-value | 可选 缺省情况下，没有配置允许通过认证的用户OUI值 该命令仅在配置 userlogin-withoui 安全模式时必选
进入二层以太网端口视图 | interface interface-type interface-number | -
配置端口的安全模式 | port-security port-mode { autolearn | mac-authentication | mac-else-userlogin-secure | mac-else-userlogin-secure-ext | secure | userlogin | userlogin-secure | userlogin-secure-ext | userlogin-secure-or-mac | userlogin-secure-or-mac-ext | userlogin-withoui } | 必选 缺省情况下，端口处于noRestrictions模式

l OUI（Organizationally Unique Identifier）是MAC地址的前24位（二进制），是IEEE（Institute of Electrical and Electronics Engineers，电气和电子工程师学会）为不同设备供应商分配的一个全球唯一的标识符。

l 允许通过认证的用户OUI值可以配置多个，但在端口安全模式为userLoginWithOUI时，端口除了可以允许一个802.1X的接入用户通过认证之外，仅允许其中一个OUI值所属的用户通过认证。

l 当端口安全已经使能且当前端口安全模式不是noRestrictions时，若要改变端口安全模式，必须首先执行 undo port-security port-mode 命令恢复端口安全模式为noRestrictions模式。


1.6 配置端口安全的特性

1.6.1 配置Need To Know特性

该功能用来限制认证端口上出方向的报文转发。即，用户通过认证后，以此MAC为目的地址的报文都可以正常转发。可以设置以下三种方式：

l ntkonly：仅允许目的MAC地址为已通过认证的MAC地址的单播报文通过。

l ntk-withbroadcasts：允许目的MAC地址为已通过认证的MAC地址的单播报文或广播地址的报文通过。

l ntk-withmulticasts：允许目的MAC地址为已通过认证的MAC地址的单播报文，广播地址或组播地址的报文通过。

配置了Need To Know的端口在以上任何一种方式下都不允许目的MAC地址未知的单播报文通过。

表1-6 配置Need To Know特性

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入二层以太网端口视图 | interface interface-type interface-number | -
配置端口Need To Know特性 | port-security ntk-mode { ntk-withbroadcasts | ntk-withmulticasts | ntkonly } | 必选 缺省情况下，端口没有配置Need To Know特性，即所有报文都可成功发送

并非所有的端口安全模式都支持Need To Know特性，配置时需要先了解各模式对此特性的支持情况。

1.6.2 配置入侵检测特性

当设备检测到一个非法的用户通过端口试图访问网络时，该特性用于配置设备可能对其采取的安全措施，包括以下三种方式：

l blockmac：表示将非法报文的源MAC地址加入阻塞MAC地址列表中，源MAC地址为阻塞MAC地址的报文将被丢弃。此MAC地址在被阻塞3分钟（系统默认，不可配）后恢复正常。

l disableport：表示将收到非法报文的端口永久关闭。

l disableport-temporarily：表示将收到非法报文的端口暂时关闭一段时间。关闭时长可通过 port-security timer disableport 命令配置。

表1-7 配置入侵检测特性

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入二层以太网端口视图 | interface interface-type interface-number | -
配置入侵检测特性 | port-security intrusion-mode { blockmac | disableport | disableport-temporarily } | 必选 缺省情况下，不进行入侵检测处理
退回系统视图 | quit | -
配置系统暂时关闭端口连接的时间 | port-security timer disableport time-value | 可选 缺省情况下，系统暂时关闭端口连接的时间为20秒

macAddressElseUserLoginSecure或macAddressElseUserLoginSecureExt安全模式下工作的端口，对于同一个报文，只有MAC地址认证和802.1X认证均失败后，才会触发入侵检测特性。

1.6.3 配置Trap特性

该特性用于端口上发生关键事件时触发告警开关输出对应的Trap信息，包括以下几种情况：

l addresslearned：端口学习到新MAC地址时发出告警信息。

l dot1xlogfailure/dot1xlogon/dot1xlogoff：802.1X用户认证失败/认证成功/下线时发出告警日志。

l ralmlogfailure/ralmlogon/ralmlogoff：MAC地址认证用户认证失败/认证成功/下线时发出告警信息。

l intrusion：发现非法报文时发出告警信息。

表1-8 配置Trap特性

操作 | 命令 | 说明
进入系统视图 | system-view | -
打开指定告警信息的开关 | port-security trap { addresslearned | dot1xlogfailure | dot1xlogoff | dot1xlogon | intrusion | ralmlogfailure | ralmlogoff | ralmlogon } | 必选 缺省情况下，所有告警信息的开关处于关闭状态


1.7 配置安全MAC地址

安全MAC地址是一种特殊的MAC地址，不会因为端口状态的变化而被丢失。在同一个VLAN内，一个安全MAC地址只能被添加到一个端口上，利用该特点，可以实现同一VLAN内MAC地址与端口的绑定。

安全MAC地址可以通过以下两种途径生成：

l 由autoLearn安全模式下的使能端口安全功能的端口自动学习。

l 通过命令行手动添加。

缺省情况下，所有的安全MAC地址均不老化，除非被管理员通过命令行手工删除，或因为配置的改变（端口的安全模式被改变，或端口安全功能被关闭）而被系统自动删除。但是，安全MAC地址不老化会带来一些问题，比如合法用户离开端口后，若有非法用户仿冒合法用户源MAC接入，会导致合法用户不能继续接入；或者虽然该合法用户已离开，但仍然占用端口MAC地址资源，而导致其它合法用户不能接入。因此，让某一类安全MAC地址能够定期老化，可提高端口接入的安全性和端口资源的利用率。我们将这类可老化的安全MAC地址称为Sticky MAC。

表1-9 安全MAC地址相关属性列表

生成方式 | 是否可老化 | 配置保存机制 | 老化机制
手工添加（未指定 sticky 关键字） | 不老化，称之为静态类型的安全MAC地址 | 安全MAC地址在保存配置文件并重启设备后，仍然存在 | 无
手工添加（指定 sticky 关键字） | 可老化（老化时间可配），称之为Sticky MAC地址 l 若老化时间为0，则表示不老化（缺省） l 若老化时间不为0，则表示安全MAC地址会老化 Sticky MAC地址可通过配置转换为动态类型的MAC地址 | l Sticky MAC地址在保存配置文件并重启设备后，仍然存在，且其老化定时器会重新开始计时。（缺省） l 动态类型的安全MAC地址不能被保存在配置文件中，设备重启后会被丢失 | l 定时老化（缺省） l 无流量老化 说明：无论是Sticky MAC地址还是动态类型的安全MAC地址，均遵循此老化机制
端口自动学习
l 动态类型的安全MAC地址与Sticky MAC地址可通过配置相互转换，两者本质相同，仅配置保存方式不同。 l 无流量老化方式下，设备会定期检测（检测周期不可配）端口上的安全MAC地址是否有流量产生，若某安全MAC地址在配置的Sticky MAC地址老化时间内没有任何流量产生，则才会被老化。 l 当端口下的安全MAC地址数目超过端口允许学习的最大安全MAC地址数后，该端口不会再添加新的安全MAC地址，仅接收并允许数据帧中的源MAC地址为安全MAC地址的报文和源MAC地址为手工配置的MAC地址的报文访问网络设备。

1.7.2 配置准备

在配置安全MAC地址之前，需要完成以下配置任务：

l 使能端口安全功能

l 设置端口安全允许的最大MAC地址数

l 配置端口安全模式为autoLearn

1.7.3 配置安全MAC地址

表1-10 配置安全MAC地址

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
配置安全MAC地址的老化时间 |  | port-security timer autolearn aging time-value | 可选 缺省情况下，安全MAC地址不会老化
配置安全MAC地址 | 在系统视图下 | port-security mac-address security [ sticky ] mac-address interface interface-type interface-number vlan vlan-id | 二者必选其一 缺省情况下，未配置安全MAC地址
 | 在二层以太网端口视图下 | interface interface-type interface-number
 |  | port-security mac-address security [ sticky ] mac-address vlan vlan-id
 |  | quit
进入二层以太网端口视图 |  | interface interface-type interface-number | -
配置安全地址的老化方式为无流量老化 |  | port-security mac-address aging-type inactivity | 可选 缺省情况下，安全MAC地址按照固定时间进行老化，即在配置的安全MAC地址的老化时间到达后立即老化
将Sticky MAC地址设置为动态类型的安全MAC地址 |  | port-security mac-address dynamic | 可选 缺省情况下，Sticky MAC地址能够被保存在配置文件中，设备重启后也不会丢失

l 无流量老化方式下，设备会定期检测（检测周期固定，不可配）端口上的安全MAC地址是否有流量产生，若某安全MAC地址在配置的安全MAC地址老化时间内没有任何流量产生，则才会被老化。

l 动态类型的安全MAC地址不会被保存在配置文件中，可通过执行 display port-security mac-address security 命令查看到，设备重启之后会丢失。


1.8 配置当前端口不应用服务器下发的授权信息

802.1X用户或MAC地址认证用户在RADIUS服务器上通过认证时，服务器会把授权信息下发给设备端。通过此配置可实现基于端口是否忽略RADIUS服务器下发的授权信息。

表1-11 配置当前端口不应用服务器下发的授权信息

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入二层以太网端口视图 | interface interface-type interface-number | -
配置当前端口不应用RADIUS服务器下发的授权信息 | port-security authorization ignore | 必选 缺省情况下，端口应用RADIUS服务器下发的授权信息


1.9 端口安全显示和维护

在完成上述配置后，在任意视图下执行 display 命令可以显示配置后端口安全的运行情况，通过查看显示信息验证配置的效果。

表1-12 端口安全显示和维护

操作 | 命令
显示端口安全的配置信息、运行情况和统计信息 | display port-security [ interface interface-list ] [ | { begin | exclude | include } regular-expression ]
显示安全MAC地址信息 | display port-security mac-address security [ interface interface-type interface-number ] [ vlan vlan-id ] [ count ] [ | { begin | exclude | include } regular-expression ]
显示阻塞MAC地址信息 | display port-security mac-address block [ interface interface-type interface-number ] [ vlan vlan-id ] [ count ] [ | { begin | exclude | include } regular-expression ]


1.10 端口安全典型配置举例

1.10.1 端口安全autoLearn模式配置举例

1. 组网需求

在Device的端口Ethernet1/0/1上对接入用户做如下的限制：

l 允许64个用户自由接入，不进行认证，将学习到的用户MAC地址添加为Sticky安全MAC地址，老化时间为30分钟；

l 当安全MAC地址数量达到64后，停止学习；当再有新的MAC地址接入时，触发入侵检测，并将此端口关闭30秒。

2. 组网图

图1-1 端口安全autoLearn模式组网图

3. 配置步骤

(1) 具体的配置步骤

<Device> system-view

# 使能端口安全功能。

[Device] port-security enable

# 设置Sticky MAC地址的老化时间为30分钟。

[Device] port-security timer autolearn aging 30

# 打开入侵检测Trap开关。

[Device] port-security trap intrusion

[Device] interface ethernet 1/0/1

# 设置端口安全允许的最大MAC地址数为64。

[Device-Ethernet1/0/1] port-security max-mac-count 64

# 设置端口安全模式为autoLearn。

[Device-Ethernet1/0/1] port-security port-mode autolearn

# 设置触发入侵检测特性后的保护动作为暂时关闭端口，关闭时间为30秒。

[Device-Ethernet1/0/1] port-security intrusion-mode disableport-temporarily

[Device-Ethernet1/0/1] quit

[Device] port-security timer disableport 30

(2) 验证配置结果

上述配置完成后，可以用 display 命令显示端口安全配置情况，如下：

[Device] display port-security interface ethernet 1/0/1

Equipment port-security is enabled

Intrusion trap is enabled

AutoLearn aging time is 30 minutes

Disableport Timeout: 30s

OUI value:

Ethernet1/0/1 is link-up

Port mode is autoLearn

NeedToKnow mode is disabled

Intrusion Protection mode is DisablePortTemporarily

Max MAC address number is 64

Stored MAC address number is 0

Authorization is permitted

可以看到端口安全所允许的最大MAC数为64，端口模式为autoLearn，入侵检测Trap开关打开，入侵保护动作为DisablePortTemporarily，入侵发生后端口禁用时间为30秒。

配置完成后，允许地址学习，学习到的MAC地址数可以用上述命令显示，如学习到5个，那么存储的安全MAC地址数就为5，可以在端口视图下用 display this 命令查看学习到的MAC地址，如：

[Device] interface ethernet 1/0/1

[Device-Ethernet1/0/1] display this

#

interface Ethernet1/0/1

port-security max-mac-count 64

port-security port-mode autolearn

port-security mac-address security sticky 0002-0000-0015 vlan 1

port-security mac-address security sticky 0002-0000-0014 vlan 1

port-security mac-address security sticky 0002-0000-0013 vlan 1

port-security mac-address security sticky 0002-0000-0012 vlan 1

port-security mac-address security sticky 0002-0000-0011 vlan 1

#

当学习到的MAC地址数达到64后，用命令 display port-security interface 可以看到端口模式变为secure，再有新的MAC地址到达将触发入侵保护，Trap信息如下：

#Jan 14 10:39:47:135 2011 Device PORTSEC/4/VIOLATION:Traph3cSecureViolation

An intrusion occurs!

IfIndex: 9437185

Port: 9437185

MAC Addr: 00:02:00:00:00:32

VLAN ID: 1

IfAdminStatus: 1

并且可以通过下述命令看到端口安全将此端口关闭：

[Device-Ethernet1/0/1] display interface ethernet 1/0/1

Ethernet1/0/1 current state: Port Security Disabled

IP Packet Frame Type: PKTFMT_ETHNT_2, Hardware Address: 000f-cb00-5558

Description: Ethernet1/0/1 Interface

......

30秒后，端口状态恢复：

[Device-Ethernet1/0/1] display interface ethernet 1/0/1

Ethernet1/0/1 current state: UP

IP Packet Frame Type: PKTFMT_ETHNT_2, Hardware Address: 000f-cb00-5558

Description: Ethernet1/0/1 Interface

......

此时，如手动删除几条安全MAC地址后，端口安全的状态重新恢复为autoLearn，可以继续学习MAC地址。

1.10.2 端口安全userLoginWithOUI模式配置举例

1. 组网需求

客户端通过端口Ethernet1/0/1连接到Device上，Device通过RADIUS服务器对客户端进行身份认证，如果认证成功，客户端被授权允许访问Internet资源。

l IP地址为192.168.1.2的RADIUS服务器作为主认证/备份计费服务器，IP地址为192.168.1.3的RADIUS服务器作为备份认证/主计费服务器。认证共享密钥为name，计费共享密钥为money。

l 所有接入用户都使用ISP域sun的缺省认证/授权/计费方案，该域最多可容纳30个用户；

l 系统向RADIUS服务器重发报文的时间间隔为5秒，重发次数为5次，发送实时计费报文的时间间隔为15分钟，发送的用户名不带域名。

Device的管理者希望对接入用户的端口Ethernet1/0/1做如下限制：

l 允许一个802.1X用户上线；

l 最多可以配置16个OUI值，还允许端口上有一个与OUI值匹配的MAC地址用户通过。

2. 组网图

图1-2 端口安全userLoginWithOUI模式组网图

3. 配置步骤

l 下述配置步骤包含了部分AAA/RADIUS协议配置命令，具体介绍请参见“安全配置指导”中的“AAA”。

l 客户端和RADIUS服务器之间路由可达，认证相关的配置略。

(1) 具体的配置步骤

l 配置RADIUS协议

<Device> system-view

# 配置RADIUS方案。

[Device] radius scheme radsun

[Device-radius-radsun] primary authentication 192.168.1.2

[Device-radius-radsun] primary accounting 192.168.1.3

[Device-radius-radsun] secondary authentication 192.168.1.3

[Device-radius-radsun] secondary accounting 192.168.1.2

[Device-radius-radsun] key authentication name

[Device-radius-radsun] key accounting money

[Device-radius-radsun] timer response-timeout 5

[Device-radius-radsun] retry 5

[Device-radius-radsun] timer realtime-accounting 15

[Device-radius-radsun] user-name-format without-domain

[Device-radius-radsun] quit

# 配置ISP域。

[Device] domain sun

[Device-isp-sun] authentication default radius-scheme radsun

[Device-isp-sun] authorization default radius-scheme radsun

[Device-isp-sun] accounting default radius-scheme radsun

[Device-isp-sun] access-limit enable 30

[Device-isp-sun] quit

l 配置802.1X

# 配置802.1X的认证方式为CHAP。（该配置可选，缺省情况下802.1X的认证方式为CHAP）

[Device] dot1x authentication-method chap

l 配置端口安全特性

# 使能端口安全功能。

[Device] port-security enable

# 添加5个OUI值。

[Device] port-security oui 1234-0100-1111 index 1

[Device] port-security oui 1234-0200-1111 index 2

[Device] port-security oui 1234-0300-1111 index 3

[Device] port-security oui 1234-0400-1111 index 4

[Device] port-security oui 1234-0500-1111 index 5

[Device] interface ethernet 1/0/1

# 设置端口安全模式为userLoginWithOUI。

[Device-Ethernet1/0/1] port-security port-mode userlogin-withoui

[Device-Ethernet1/0/1] quit

(2) 验证配置结果

查看名为radsun的RADIUS方案的配置信息：

[Device] display radius scheme radsun

SchemeName : radsun

Index : 1 Type : standard

Primary Auth Server:

IP: 192.168.1.2 Port: 1812 State: active

Encryption Key : N/A

VPN instance : N/A

Primary Acct Server:

IP: 192.168.1.3 Port: 1813 State: active

Encryption Key : N/A

VPN instance : N/A

Second Auth Server:

IP: 192.168.1.3 Port: 1812 State: active

Encryption Key : N/A

VPN instance : N/A

Second Acct Server:

IP: 192.168.1.2 Port: 1813 State: active

Encryption Key : N/A

VPN instance : N/A

Auth Server Encryption Key : name

Acct Server Encryption Key : money

Accounting-On packet disable, send times : 5 , interval : 3s

Interval for timeout(second) : 5

Retransmission times for timeout : 5

Interval for realtime accounting(minute) : 15

Retransmission times of realtime-accounting packet : 5

Retransmission times of stop-accounting packet : 500

Quiet-interval(min) : 5

Username format : without-domain

Data flow unit : Byte

Packet unit : one

查看名为sun的ISP域的配置信息：

[Device] display domain sun

Domain : sun

State : Active

Access-limit : 30

Accounting method : Required

Default authentication scheme : radius:radsun

Default authorization scheme : radius:radsun

Default accounting scheme : radius:radsun

Domain User Template:

Idle-cut : Disabled

Self-service : Disabled

Authorization attributes:

查看端口安全的配置信息：

[Device] display port-security interface ethernet 1/0/1

Equipment port-security is enabled

Trap is disabled

Disableport Timeout: 20s

OUI value:

Index is 1, OUI value is 123401

Index is 2, OUI value is 123402

Index is 3, OUI value is 123403

Index is 4, OUI value is 123404

Index is 5, OUI value is 123405

Ethernet1/0/1 is link-up

Port mode is userLoginWithOUI

NeedToKnow mode is disabled

Intrusion Protection mode is NoAction

Max MAC address number is not configured

Stored MAC address number is 0

Authorization is permitted

配置完成后，如果有802.1X用户上线，则可以看到存储的安全MAC地址数为1。还可以通过下述命令查看802.1X用户的情况：

[Device] display dot1x interface ethernet 1/0/1

Equipment 802.1X protocol is enabled

CHAP authentication is enabled

EAD quick deploy is disabled

Configuration: Transmit Period 30 s, Handshake Period 15 s

Quiet Period 60 s, Quiet Period Timer is disabled

Supp Timeout 30 s, Server Timeout 100 s

Reauth Period 3600 s

The maximal retransmitting times 2

EAD quick deploy configuration:

EAD timeout: 30m

The maximum 802.1X user resource number is 2048 per slot

Total current used 802.1X resource number is 1

Ethernet1/0/1 is link-up

802.1X protocol is enabled

Handshake is enabled

Handshake secure is disabled

802.1X unicast-trigger is enabled

Periodic reauthentication is disabled

The port is an authenticator

Authentication Mode is Auto

Port Control Type is Mac-based

802.1X Multicast-trigger is enabled

Mandatory authentication domain: NOT configured

Guest VLAN: NOT configured

Auth-Fail VLAN: NOT configured

Max number of on-line users is 2048

EAPOL Packet: Tx 16331, Rx 102

Sent EAP Request/Identity Packets : 16316

EAP Request/Challenge Packets: 6

EAP Success Packets: 4, Fail Packets: 5

Received EAPOL Start Packets : 6

EAPOL LogOff Packets: 2

EAP Response/Identity Packets : 80

EAP Response/Challenge Packets: 6

Error Packets: 0

1. Authenticated user : MAC address: 0002-0000-0011

Controlled User(s) amount to 1

此外，端口还允许一个与OUI值匹配的MAC地址的用户通过，可以通过下述命令查看：

[Device] display mac-address interface ethernet 1/0/1

MAC ADDR VLAN ID STATE PORT INDEX AGING TIME(s)

1234-0300-0011 1 Learned Ethernet1/0/1 AGING

--- 1 mac address(es) found ---

1.10.3 端口安全macAddressElseUserLoginSecure模式配置举例

1. 组网需求

客户端通过端口Ethernet1/0/1连接到Device上，Device通过RADIUS服务器对客户端进行身份认证。如果认证成功，客户端被授权允许访问Internet资源。

Device的管理者希望对接入用户的端口Ethernet1/0/1做如下的限制：

l 可以有多个MAC认证用户上线；

l 如果是802.1X用户请求认证，先进行MAC地址认证，MAC地址认证失败，再进行802.1X认证。802.1X用户限制为1个；

l MAC地址认证设置用户名格式为自定义用户名和密码的形式，上线的MAC地址认证用户和802.1X认证用户总和不能超过64个；

l 为防止报文发往未知目的MAC地址，启动Need To Know特性。

2. 组网图

同图1-2 所示。

3. 配置步骤

l RADIUS认证/计费及ISP域的配置同 1.10.2 ，这里不再赘述。

l 接入用户和RADIUS服务器之间路由可达，认证相关的配置略。

(1) 具体的配置步骤

<Device> system-view

# 使能端口安全功能。

[Device] port-security enable

# 配置MAC认证的用户名为aaa，密码为123456。

[Device] mac-authentication user-name-format fixed account aaa password simple 123456

# 配置MAC地址认证用户所使用的ISP域。

[Device] mac-authentication domain sun

[Device] interface ethernet 1/0/1

# 配置802.1X的认证方式为CHAP。（该配置可选，缺省情况下802.1X的认证方式为CHAP）

[Device] dot1x authentication-method chap

# 设置端口安全允许的最大MAC地址数为64。

[Device-Ethernet1/0/1] port-security max-mac-count 64

# 设置端口安全模式为macAddressElseUserLoginSecure。

[Device-Ethernet1/0/1] port-security port-mode mac-else-userlogin-secure

# 设置端口Need To Know模式为ntkonly。

[Device-Ethernet1/0/1] port-security ntk-mode ntkonly

[Device-Ethernet1/0/1] quit

(2) 验证配置结果

查看端口安全的配置信息：

[Device] display port-security interface ethernet 1/0/1

Equipment port-security is enabled

Trap is disabled

Disableport Timeout: 20s

OUI value:

Ethernet1/0/1 is link-up

Port mode is macAddressElseUserLoginSecure

NeedToKnow mode is NeedToKnowOnly

Intrusion Protection mode is NoAction

Max MAC address number is 64

Stored MAC address number is 0

Authorization is permitted

查看MAC地址认证情况：

[Device] display mac-authentication interface ethernet 1/0/1

MAC address authentication is enabled.

User name format is fixed account

Fixed username:aaa

Fixed password:123456

Offline detect period is 60s

Quiet period is 5s

Server response timeout value is 100s

The max allowed user number is 2048 per slot

Current user number amounts to 3

Current domain is mac

Silent MAC User info:

MAC Addr From Port Port Index

Ethernet1/0/1 is link-up

MAC address authentication is enabled

Authenticate success: 3, failed: 7

Max number of on-line users is 2048

Current online user number is 3

MAC ADDR Authenticate state Auth Index

1234-0300-0011 MAC_AUTHENTICATOR_SUCCESS 13

1234-0300-0012 MAC_AUTHENTICATOR_SUCCESS 14

1234-0300-0013 MAC_AUTHENTICATOR_SUCCESS 15

查看802.1X认证情况：

<Device> display dot1x interface ethernet 1/0/1

Equipment 802.1X protocol is enabled

CHAP authentication is enabled

EAD quick deploy is disabled

Configuration: Transmit Period 30 s, Handshake Period 15 s

Quiet Period 60 s, Quiet Period Timer is disabled

Supp Timeout 30 s, Server Timeout 100 s

The maximal retransmitting times 2

EAD quick deploy configuration:

EAD timeout: 30m

Total maximum 802.1X user resource number is 2048 per slot

Total current used 802.1X resource number is 1

Ethernet1/0/1 is link-up

802.1X protocol is enabled

Handshake is enabled

Handshake secure is disabled

802.1X unicast-trigger is enabled

Periodic reauthentication is disabled

The port is an authenticator

Authentication Mode is Auto

Port Control Type is Mac-based

802.1X Multicast-trigger is enabled

Mandatory authentication domain: NOT configured

Guest VLAN: NOT configured

Auth-Fail VLAN: NOT configured

Max number of on-line users is 2048

EAPOL Packet: Tx 16331, Rx 102

Sent EAP Request/Identity Packets : 16316

EAP Request/Challenge Packets: 6

EAP Success Packets: 4, Fail Packets: 5

Received EAPOL Start Packets : 6

EAPOL LogOff Packets: 2

EAP Response/Identity Packets : 80

EAP Response/Challenge Packets: 6

Error Packets: 0

1. Authenticated user : MAC address: 0002-0000-0011

Controlled User(s) amount to 1

此外，因为设置了Need To Know特性，目的MAC地址未知、广播和多播报文都被丢弃。


1.11 常见配置错误举例

1.11.1 端口安全模式无法设置

1. 故障现象

无法配置端口安全模式。

[Device-Ethernet1/0/1] port-security port-mode autolearn

Error:When we change port-mode, we should first change it to noRestrictions, then change it to the other.

2. 故障分析

在当前端口安全模式已配置的情况下，无法直接对端口安全模式进行设置。

3. 处理过程

首先设置端口安全模式为noRestrictions状态。

[Device-Ethernet1/0/1] undo port-security port-mode

[Device-Ethernet1/0/1] port-security port-mode autolearn

1.11.2 无法配置端口安全MAC地址

1. 故障现象

无法配置端口安全MAC地址。

[Device-Ethernet1/0/1] port-security mac-address security 1-1-2 vlan 1

Error: Security MAC address configuration failed.

2. 故障分析

端口安全模式为非autoLearn时，不能对安全MAC地址进行设置。

3. 处理过程

设置端口安全模式为autoLearn状态。

[Device-Ethernet1/0/1] undo port-security port-mode

[Device-Ethernet1/0/1] port-security max-mac-count 64

[Device-Ethernet1/0/1] port-security port-mode autolearn

[Device-Ethernet1/0/1] port-security mac-address security 1-1-2 vlan 1

1.11.3 用户在线情况下无法更换端口安全模式

1. 故障现象

802.1X或MAC地址认证用户在线的情况下，更换端口安全模式失败。

[Device-Ethernet1/0/1] undo port-security port-mode

Error:Cannot configure port-security for there is 802.1X user(s) on line on port Ethernet1/0/1.

2. 故障分析

有802.1X或MAC认证用户在线的情况下，禁止更换端口安全模式。

3. 处理过程

断开端口与用户的连接后再进行端口安全模式更换，可以通过 cut 命令强制切断连接。

[Device-Ethernet1/0/1] quit

[Device] cut connection interface ethernet 1/0/1

[Device] interface ethernet 1/0/1

[Device-Ethernet1/0/1] undo port-security port-mode


1 User Profile配置

相关链接

  • 1.1 User Profile简介
  • 1.2 User Profile配置任务简介
  • 1.3 创建User Profile
  • 1.4 配置User Profile
  • 1.5 激活User Profile
  • 1.6 User Profile显示和维护
父主题： 07-User Profile配置


1.1 User Profile简介

User Profile（用户配置文件）提供一个配置模板，能够保存预设配置（一系列配置的集合）。用户可以根据不同的应用场景为User Profile配置不同的内容，比如CAR（Committed Access Rate，承诺访问速率）策略或QoS（Quality of Service，服务质量）策略等。

用户访问设备时，需要先进行身份认证（目前支持802.1X和Portal两种接入认证方式）。在认证过程中，认证服务器会先匹配用户名和密码，匹配成功后再将与用户绑定的User Profile名称下发给设备，设备会立即启用User Profile里配置的具体内容。只有用户名和密码匹配，并且User Profile下的配置均应用成功，设备才认为用户通过了认证。因此，当用户通过认证上线后，其访问行为将受到User Profile的限制。当用户下线时，系统会自动禁用User Profile下的配置项，从而取消User Profile对用户的限定。因此，User Profile适用于限制上线用户的访问行为，没有用户上线（可能是没有用户接入、或者用户没有通过认证、或者用户下线）时，User Profile是预设配置，并不生效。

使用User Profile之后，可以：

l 更精确地利用系统资源。比如，使用User Profile之前，只能基于接口/VLAN/全局等应用QoS策略，这个QoS策略限制的是一群用户（从指定接口/VLAN接入的用户，甚至设备的所有接入用户）；使用User Profile之后，可以基于用户应用QoS策略，这个QoS策略针对的是单个用户。

l 更灵活地限制用户访问系统资源。比如，使用User Profile之前，只能基于QoS策略对当前接口的所有流进行流量监管，当用户的物理位置移动时（比如从另一个接口接入），则需要先取消旧的接入接口下的流量监管功能，再在新的接入接口下配置流量监管功能；使用User Profile之后，可以基于用户进行流量监管，只要用户上线，认证服务器会自动下发相应的User Profile（配置了QoS策略），当用户下线，系统会自动取消相应的配置，不需要再进行手工调整。


1.2 User Profile配置任务简介

表1-1 User Profile配置任务简介

配置任务 | 说明 | 详细配置
创建User Profile | 必选 | 1.3
配置User Profile | 必选 | 1.4
激活User Profile | 必选 | 1.5


1.3 创建User Profile

1.3.1 配置准备

在创建User Profile之前，需配置认证参数。User Profile特性支持802.1X和Portal两种接入认证方式，用户在访问网络时可以根据当前的网络规划选择一种方式进行认证。但需要在客户端、本设备和认证服务器上进行相应的配置（比如用户名、密码、认证方案、域以及User Profile和用户的绑定关系等）。

1.3.2 创建User Profile

表1-2 创建User Profile

操作 | 命令 | 说明
进入系统视图 | system-view | -
创建User Profile并进入相应的user-profile视图 | user-profile profile-name | 必选 如果指定的User Profile已经存在，则直接进入相应的user-profile视图，不需要再创建User Profile 进入user-profile视图后，下面进行的配置只在User Profile处于激活状态，且用户成功上线后才生效


1.4 配置User Profile

User Profile创建之后，需要在User Profile视图下配置具体的内容才能对上线用户进行限制。用户可以通过在User Profile视图下应用QoS策略来实现多种流量管理功能。

表1-3 基于上线用户应用QoS策略

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入user-profile视图 | user-profile profile-name | 必选 进入user-profile视图后，下面进行的配置只在User Profile处于激活状态，且用户成功上线后才生效
应用关联的策略 | qos apply policy policy-name { inbound | outbound } | 必选 inbound 是对设备入方向的上线用户流量（即上线用户发送的流量）应用策略；outbound 是对设备出方向的上线用户流量（即上线用户接收到的流量）应用策略

l 如果User Profile处于激活状态，既不能修改策略的内容（包括流分类引用的ACL规则），也不能删除已经应用到此User Profile的策略。

l user-profile视图下应用的策略中的流行为只支持 remark、car、filter 三种动作。

l user-profile视图下应用的策略不能为空策略，因为应用空策略的User Profile不能被激活。

l 关于QoS策略的相关配置命令，请参见“ACL和QoS配置指导”中的“QoS配置方式”。


1.5 激活User Profile

User Profile创建后，必须被激活，User Profile下的配置才能生效。如果不激活User Profile，会导致被绑定的用户认证失败，不能上线。

表1-4 激活User Profile

操作 | 命令 | 说明
进入系统视图 | system-view | -
激活已创建的User Profile | user-profile profile-name enable | 必选 缺省情况下，创建的User Profile处于未激活状态

l User Profile被激活后，不允许修改User Profile下的配置，需要禁用后才可以被修改或删除。

l 禁用User Profile将导致使用该User Profile用户强制下线。


1.6 User Profile显示和维护

在完成上述配置后，在任意视图下执行 display 命令可以显示配置后User Profile的运行情况，通过查看显示信息验证配置的效果。

表1-5 User Profile显示和维护

操作 | 命令
显示当前已创建的全部User Profile的信息 | display user-profile [ | { begin | exclude | include } regular-expression ]


1 HABP配置

相关链接

  • 1.1 HABP简介
  • 1.2 HABP配置
  • 1.3 HABP显示和维护
  • 1.4 HABP典型配置举例
父主题： 08-HABP配置


1.1 HABP简介

HABP（HW Bypass Protocol，HW旁路认证协议）是一种链路层应用协议，工作在MAC层之上，其主要作用是让启用802.1X或MAC地址认证的接入设备的下游设备免认证。

图1-1 802.1X认证典型组网图

如图1-1 所示，802.1X认证端设备Switch A下挂接入设备Switch B和Switch C。在Switch A及其连接下游设备的端口上启动802.1X认证，终端用户可以通过主机上的802.1X客户端进行认证。在这种情况下，如果网络设备Switch B和Switch D之间也需要通信，则它们之间的报文在经过Switch A的时候就必须通过802.1X认证。但是设备上通常不支持802.1X客户端，所以需要一种简单的机制让网络设备绕过802.1X认证。

HABP特性就可以解决以上问题，能帮助一些链路层报文穿过802.1X和MAC地址认证，在不影响认证体系正常功能的情况下，实现非终端用户的网络连接设备穿过认证，完成必要的网络设备间协议通信的功能。

HABP协议采用Server/Client结构，每台设备同一时间只能成为一种角色，Server或Client。HABP server一般应该在802.1X或MAC地址认证端设备上启动，例如上图中的Switch A；HABP client应该在下挂的交换机上启动，例如上图中的Switch B、Switch C、Switch D和Switch E。通常Server会定期向Client发送HABP请求报文，收集下挂交换机MAC地址，形成HABP表项。而Client会对请求报文进行应答，同时向下层交换机转发HABP请求报文。所有的HABP报文只能在一个指定的VLAN内转发。HABP server和HABP client通过该VLAN实现内部通信。

l 在一个集群中，当使能了802.1X或MAC地址认证功能的成员设备还下挂有其它成员设备时，必须在该成员设备上开启HABP server功能，否则管理设备将无法对其下挂的成员设备进行管理。

l 关于集群功能的具体介绍请参见“网络管理和监控配置指导”中的“集群管理”。


1.2 HABP配置

1.2.1 配置HABP server

HABP server一般是在认证端（开启了802.1X或MAC地址认证功能）设备上启动。开启该功能后，HABP server就会定期（发送时间间隔可配）向连接的HABP client发送HABP请求报文，通过HABP client的响应报文来收集下挂交换机的MAC地址信息。HABP报文在HABP server上的指定VLAN内传播。

表1-1 配置HABP server

操作 | 命令 | 说明
进入系统视图 | system-view | -
使能HABP功能 | habp enable | 可选 缺省情况下，HABP功能处于使能状态
设置HABP功能的模式为Server模式，同时指定HABP报文在指定的VLAN内传播 | habp server vlan vlan-id | 必选 缺省情况下，HABP功能工作在Client模式下
设置发送HABP请求报文的时间间隔 | habp timer interval | 可选 缺省情况下，发送HABP请求报文的时间间隔为20秒

HABP server上指定的传播HABP报文的VLAN必须与HABP client所属的VLAN保持一致。

1.2.2 配置HABP client

HABP client是在认证端设备下挂的设备上启动。HABP client收到HABP server的请求报文后，通过发送响应报文向HABP server告知本设备的MAC地址等信息，并向下层交换机转发该HABP请求报文。HABP报文在HABP client所属的指定VLAN内传播。

表1-2 配置HABP Client

操作 | 命令 | 说明
进入系统视图 | system-view | -
使能HABP功能 | habp enable | 可选 缺省情况下，HABP功能处于使能状态
设置HABP功能的模式为Client模式 | undo habp server | 可选 缺省情况下，HABP功能工作在Client模式下
设置HABP client所属的VLAN | habp client vlan vlan-id | 可选 缺省情况下，HABP Client所属的VLAN为VLAN 1

HABP client所属的VLAN必须与HABP server上指定的传播HABP报文的VLAN保持一致。


1.3 HABP显示和维护

在完成上述配置后，在任意视图下执行 display 命令都可以显示配置后HABP的运行情况。

表1-3 HABP显示和维护

操作 | 命令
显示HABP特性的配置信息和状态 | display habp [ | { begin | exclude | include } regular-expression ]
显示HABP的MAC地址表信息 | display habp table [ | { begin | exclude | include } regular-expression ]
显示HABP报文的统计信息 | display habp traffic [ | { begin | exclude | include } regular-expression ]


1.4 HABP典型配置举例

1. 组网需求

如图1-2 所示，Switch A下挂用户接入设备Switch B和Switch C。为了便于对接入用户（Host A～Host D）进行集中认证，在Switch A上开启802.1X功能。

l 为满足Switch B和Switch C之间的通信需求，需要在Switch A上启动HABP server功能，在Switch B和Switch C上启动HABP client功能，并指定HABP报文在VLAN 1内传播。

l HABP server以50秒的时间间隔周期性地向VLAN 1内的HABP client发送HABP请求报文。

2. 组网图

图1-2 HABP典型配置组网图

3. 配置步骤

(1) 配置Switch A

# 配置802.1X相关功能，具体请参见“安全配置指导”中的“802.1X”，此处略。

# 在Switch A上使能HABP。（此配置可选，缺省情况下HABP功能处于使能状态）

<SwitchA> system-view

[SwitchA] habp enable

# 配置HABP工作在Server模式下，并指定HABP报文在VLAN 1内传播。

[SwitchA] habp server vlan 1

# 配置发送HABP请求报文的时间间隔为50秒。

[SwitchA] habp timer 50

(2) 配置Switch B

# 在Switch B上使能HABP。（此配置可选，缺省情况下HABP功能处于使能状态）

<SwitchA> system-view

[SwitchB] habp enable

# 配置HABP工作在Client模式下。（此配置可选，缺省情况下HABP工作在Client模式下）

[SwitchB] undo habp server

# 配置HABP Client所属的VLAN，指定HABP报文在VLAN 1内传播。（此配置可选，缺省情况下HABP Client属于VLAN 1）

[SwitchB] habp client vlan 1

(3) 配置Switch C

配置步骤同Switch B，此处略。

(4) 验证配置结果

# 可以通过此显示命令查看HABP相关配置信息。

<SwitchA> display habp

Global HABP information:

HABP Mode: Server

Sending HABP request packets every 50 seconds

Bypass VLAN: 1

# 可以通过此显示命令查看MAC地址表项的学习情况。

<SwitchA> display habp table

MAC Holdtime Receive Port

001f-3c00-0030 53 Ethernet1/0/2

001f-3c00-0031 53 Ethernet1/0/1


1 公钥管理配置

相关链接

  • 1.1 简介
  • 1.2 公钥管理配置任务简介
  • 1.3 配置本地的非对称密钥对
  • 1.4 配置远端主机的公钥
  • 1.5 公钥管理显示和维护
  • 1.6 公钥管理典型配置举例
父主题： 09-公钥管理配置


1.1 简介

如图1-1 所示，为了保证数据在网络中安全传输、不被攻击者非法窃听和恶意篡改，发送方在发送数据之前需要对数据进行加密处理，即通过一定的算法，利用密钥将明文数据变换为密文数据；接收方接收到密文数据后，对其进行解密处理，即通过一定的算法，利用密钥将密文数据恢复为明文数据，以获得原始数据。

图1-1 加密和解密转换关系

密钥是一组特定的字符串，是控制明文和密文转换的唯一参数，起到“钥匙”的作用。加密和解密都是在密钥的参与下进行的。

如果数据加密和解密时使用不同的密钥，则该加/解密算法称为非对称密钥算法。在非对称密钥算法中，加密和解密使用的密钥一个是对外公开的公钥，一个是由用户秘密保存的私钥。公钥和私钥一一对应，二者统称为非对称密钥对。通过公钥（或私钥）加密后的数据只能利用对应的私钥（或公钥）进行解密。从公钥很难推算出私钥。

如果数据加密和解密时使用相同的密钥，则该加/解密算法称为对称密钥算法。

非对称密钥算法包括RSA（Rivest Shamir and Adleman）和DSA（Digital Signature Algorithm，数字签名算法）等。

非对称密钥算法可以用于加解密和数字签名。RSA既可以用于加解密，又可以用于签名，而DSA只用于签名。

l 加解密：发送者利用接收者的公钥对数据进行加密，拥有对应私钥的合法接收者使用私钥对数据进行解密，从而可以保证数据的机密性。

l 数字签名：发送者利用自己的私钥对数据进行加密，接收者利用发送者的公钥对数据进行解密，从而实现对数据发送者身份的验证。由于通过私钥加密后的数据只能利用对应的公钥进行解密，因此根据解密是否成功，就可以判断发送者的身份是否合法，如同发送者对数据进行了“签名”。例如，用户1使用自己的私钥对数据进行签名后，发给用户2，用户2利用用户1的公钥验证签名，如果签名是正确的，那么就能够确认该数据来源于用户1。

非对称密钥算法应用十分广泛，例如SSH（Secure Shell，安全外壳）、SSL（Secure Sockets Layer，安全套接层）、PKI（Public Key Infrastructure，公钥基础设施）中都利用了非对称密钥算法进行数字签名。SSH、SSL和PKI的介绍，请参见“安全配置指导”中的“SSH2.0”、“SSL”和“PKI”。


1.2 公钥管理配置任务简介

本章主要介绍如何管理非对称密钥对，包括：

l 本地非对称密钥对的管理：即管理设备自身的非对称密钥对，包括本地密钥对的生成、销毁、本地主机公钥的显示和导出。

l 远端主机公钥的管理：即将远端主机的主机公钥保存到本地设备。

完成本章中的配置后，并不能实现利用非对称密钥算法进行加解密和数字签名，只是为其提供了必要的准备。本章中的配置只有与具体的应用（如SSH、SSL）配合使用，才能实现利用非对称密钥算法进行加解密和数字签名。

表1-1 公钥管理配置任务简介

配置任务 |  | 说明 | 详细配置
配置本地的非对称密钥对 | 生成本地非对称密钥对 | 必选 | 1.3.1
 | 显示或导出本地非对称密钥对中的主机公钥 | 可选 | 1.3.2
 | 销毁本地非对称密钥对 | 可选 | 1.3.3
配置远端主机的公钥 |  | 可选 | 1.4


1.3 配置本地的非对称密钥对

1.3.1 生成本地非对称密钥对

l 生成RSA密钥对时，将同时生成两个密钥对——服务器密钥对和主机密钥对，二者都包括一个公钥和一个私钥。RSA服务器密钥和主机密钥模数的最小长度均为512比特，最大长度为2048比特，缺省长度为1024比特。生成RSA密钥对时会提示用户输入密钥模数的长度，建议密钥模数的长度大于或等于768比特，以提高安全性。

目前，只有SSH1.5中应用了RSA服务器密钥对。

l 生成DSA密钥对时，只生成一个主机密钥对。DSA主机密钥模数的最小长度为512比特，最大长度为2048比特，缺省长度为1024比特。生成DSA密钥对时会提示用户输入密钥模数的长度，建议密钥模数的长度大于或等于768比特，以提高安全性。

表1-2 生成本地非对称密钥对

操作 | 命令 | 说明
进入系统视图 | system-view | -
生成本地非对称密钥对 | public-key local create { dsa | rsa } | 必选 缺省情况下，不存在任何非对称密钥对

执行 public-key local create 命令后，生成的密钥对将保存在设备中，设备重启后密钥不会丢失。

1.3.2 显示或导出本地非对称密钥对中的主机公钥

在SSH应用中，为了实现远端主机采用数字签名方法对本地设备进行身份验证，用户需要将本地的主机公钥保存到远端主机上。

将本地的主机公钥保存到远端主机上，有以下三种方法：

l 在本地设备上执行 display public-key local public命令显示非对称密钥对中的公钥信息，记录主机公钥数据。在远端主机上，通过手工配置的方式将本地的主机公钥保存到远端设备上。

l 在本地设备上执行 public-key local export 命令按照指定格式显示本地主机公钥（执行命令时不指定 filename 参数），将显示的主机公钥保存到文件中，并将该文件上传到远端主机上。在远端主机上，通过从公钥文件中导入的方式将本地的主机公钥保存到远端设备上。

l 在本地设备上执行 public-key local export 命令按照指定格式将本地主机公钥导出到指定文件（执行命令时指定 filename 参数），并将该文件上传到远端主机上。在远端主机上，通过从公钥文件中导入的方式将本地的主机公钥保存到远端设备上。

远端主机上的配置方法，请参见“ 1.4 配置远端主机的公钥 ”。

表1-3 显示本地非对称密钥对中的公钥信息

操作 | 命令 | 说明
显示本地RSA密钥对中的公钥信息 | display public-key local rsa public [ | { begin | exclude | include } regular-expression ] | 二者至少选择其一 在任意视图下执行
显示本地DSA密钥对中的公钥信息 | display public-key local dsa public [ | { begin | exclude | include } regular-expression ]

执行 display public-key local rsa public命令后，会同时显示RSA服务器密钥对和主机密钥对的公钥信息。用户只需记录主机密钥对的公钥信息。

表1-4 按照指定格式显示本地非对称密钥对中的主机公钥

操作 | 命令 | 说明
进入系统视图 | system-view | -
按照指定格式显示本地RSA主机公钥 | public-key local export rsa { openssh | ssh1 | ssh2 } | 二者至少选择其一
按照指定格式显示本地DSA主机公钥 | public-key local export dsa { openssh | ssh2 }

表1-5 导出本地非对称密钥对中的主机公钥

操作 | 命令 | 说明
进入系统视图 | system-view | -
按照指定格式将本地RSA主机公钥导出到指定文件 | public-key local export rsa { openssh | ssh1 | ssh2 } filename | 二者至少选择其一
按照指定格式将本地DSA主机公钥导出到指定文件 | public-key local export dsa { openssh | ssh2 } filename

1.3.3 销毁本地非对称密钥对

在如下几种情况下，建议用户销毁旧的非对称密钥对，并生成新的密钥对：

l 本地设备的私钥泄露。这种情况下，非法用户可能会冒充本地设备访问网络。

l 保存密钥对的存储设备出现故障，导致设备上没有公钥对应的私钥，无法再利用旧的非对称密钥对进行加解密和数字签名。

l 密钥对使用了较长时间，可能存在密钥泄露或破译的风险。

l 本地证书到达有效期，需要删除对应的本地密钥对。本地证书的详细介绍，请参见“安全配置指导”中的“PKI”。

表1-6 销毁本地非对称密钥对

操作 | 命令 | 说明
进入系统视图 | system-view | -
销毁本地非对称密钥对 | public-key local destroy { dsa | rsa } | 必选


1.4 配置远端主机的公钥

在SSH应用中，为了实现本地设备对远端主机的身份验证，需要在本地设备上配置远端主机的RSA或DSA主机公钥。

配置远端主机公钥的方式有如下两种：

l 手工配置：用户事先在远端主机上查看其公钥信息，并记录远端主机公钥的内容。在本地设备上采用手工输入的方式将远端主机的公钥配置到本地。手工输入远端主机公钥时，可以逐个字符输入，也可以一次拷贝粘贴多个字符。

l 从公钥文件中导入：用户事先将远端主机的公钥文件保存到本地设备（例如，通过FTP或TFTP，以二进制方式将远端主机的公钥文件保存到本地设备），本地设备从该公钥文件中导入远端主机的公钥。导入公钥时，系统会自动将远端主机的公钥文件转换为PKCS（Public Key Cryptography Standards，公共密钥加密标准）编码形式。

l 手工配置远端主机的公钥时，输入的主机公钥必须满足一定的格式要求。通过 display public-key local public 命令显示的公钥可以作为输入的公钥内容；通过其他方式（如 public-key local export 命令）显示的公钥可能不满足格式要求，导致主机公钥保存失败。因此，建议选用从公钥文件导入的方式配置远端主机的公钥。

l 远端主机公钥信息的获取方法，请参见“1.3.2 显示或导出本地非对称密钥对中的主机公钥”。

l 设备上最多可以配置20个远端主机的公钥。

表1-7 手工配置远端主机的公钥

操作 | 命令 | 说明
进入系统视图 | system-view | -
指定远端主机公钥的名称，并进入公钥视图 | public-key peer keyname | 必选
进入公钥编辑视图 | public-key-code begin | -
配置远端主机的公钥 | 逐个字符输入或拷贝粘贴公钥内容 | 必选 在输入公钥内容时，字符之间可以有空格，也可以按回车键继续输入数据
退回公钥视图，并保存配置的主机公钥 | public-key-code end | 必选 退出公钥编辑视图时，系统自动保存配置的主机公钥
退回系统视图 | peer-public-key end | -

表1-8 从公钥文件中导入远端主机的公钥

操作 | 命令 | 说明
进入系统视图 | system-view | -
从公钥文件中导入远端主机的公钥 | public-key peer keyname import sshkey filename | 必选


1.5 公钥管理显示和维护

在完成上述配置后，在任意视图下执行 display 命令可以显示配置后公钥管理的信息，通过查看显示信息验证配置的效果。

表1-9 公钥管理显示和维护

操作 | 命令
显示本地非对称密钥对中的公钥信息 | display public-key local { dsa | rsa } public [ | { begin | exclude | include } regular-expression ]
显示保存在本地的远端主机的公钥信息 | display public-key peer [ brief | name publickey-name ] [ | { begin | exclude | include } regular-expression ]


1.6 公钥管理典型配置举例

1.6.1 手工配置远端主机的公钥

1. 组网需求

如图1-2 所示，为了防止非法用户访问，Device B采用数字签名方法对访问它的Device A进行身份验证。进行身份验证前，需要在Device B上配置Device A的公钥。

本例中要求：

l Device B采用非对称密钥算法RSA验证Device A的身份。

l 采用手工配置方式在Device B上配置Device A的主机公钥。

2. 组网图

图1-2 手工配置远端主机的公钥组网图

3. 配置步骤

(1) 配置Device A

# 在Device A上生成RSA密钥对，密钥模数的长度采用缺省值1024比特。

<DeviceA> system-view

[DeviceA] public-key local create rsa

The range of public key size is (512 ~ 2048).

NOTES: If the key modulus is greater than 512,

It will take a few minutes.

Press CTRL+C to abort.

Input the bits of the modulus[default = 1024]:

Generating Keys...

++++++

++++++

++++++++

++++++++

# 显示生成的RSA密钥对的公钥信息。

[DeviceA] display public-key local rsa public

=====================================================

Time of Key pair created: 09:50:06 2011/03/07

Key name: HOST_KEY

Key type: RSA Encryption Key

=====================================================

Key code:

30819F300D06092A864886F70D010101050003818D0030818902818100D90003FA95F5A44A2A2CD3F814F9854C4421B57CAC64CFFE4782A87B0360B600497D87162D1F398E6E5E51E5E353B3A9AB16C9E766BD995C669A784AD597D0FB3AA9F7202C507072B19C3C50A0D7AD3994E14ABC62DB125035EA326470034DC078B2BAA3BC3BCA80AAB5EE01986BD1EF64B42F17CCAE4A77F1EF999B2BF9C4A10203010001

=====================================================

Time of Key pair created: 09:50:07 2011/03/07

Key name: SERVER_KEY

Key type: RSA Encryption Key

=====================================================

Key code:

307C300D06092A864886F70D0101010500036B003068026100999089E7AEE9802002D9EB2D0433B87BB6158E35000AFB3FF310E42F109829D65BF70F7712507BE1A3E0BC5C2C03FAAF00DFDDC63D004B4490DACBA3CFA9E84B9151BDC7EECE1C8770D961557D192DE2B36CAF9974B7B293363BB372771C2C1F0203010001

(2) 配置Device B

# 在Device B上配置Device A的主机公钥：在公钥编辑视图输入Device A的主机公钥，即在Device A上通过 display public-key local dsa public 命令显示的主机公钥HOST_KEY内容。

<DeviceB> system-view

[DeviceB] public-key peer devicea

Public key view: return to System View with "peer-public-key end".

[DeviceB-pkey-public-key] public-key-code begin

Public key code view: return to last view with "public-key-code end".

[DeviceB-pkey-key-code]30819F300D06092A864886F70D010101050003818D0030818902818100D90003FA95F5A44A2A2CD3F814F9854C4421B57CAC64CFFE4782A87B0360B600497D87162D1F398E6E5E51E5E353B3A9AB16C9E766BD995C669A784AD597D0FB3AA9F7202C507072B19C3C50A0D7AD3994E14ABC62DB125035EA326470034DC078B2BAA3BC3BCA80AAB5EE01986BD1EF64B42F17CCAE4A77F1EF999B2BF9C4A10203010001

[DeviceB-pkey-key-code] public-key-code end

[DeviceB-pkey-public-key] peer-public-key end

# 显示Device B上保存的Device A的主机公钥信息。

[DeviceB] display public-key peer name devicea

=====================================

Key Name : devicea

Key Type : RSA

Key Module: 1024

=====================================

Key Code:

30819F300D06092A864886F70D010101050003818D0030818902818100D90003FA95F5A44A2A2CD3F814F9854C4421B57CAC64CFFE4782A87B0360B600497D87162D1F398E6E5E51E5E353B3A9AB16C9E766BD995C669A784AD597D0FB3AA9F7202C507072B19C3C50A0D7AD3994E14ABC62DB125035EA326470034DC078B2BAA3BC3BCA80AAB5EE01986BD1EF64B42F17CCAE4A77F1EF999B2BF9C4A10203010001

通过对比可以看出，Device B上保存的Device A的主机公钥信息与Device A实际的主机公钥信息一致。

1.6.2 从公钥文件中导入远端主机的公钥

1. 组网需求

如图1-3 所示，为了防止非法用户访问，Device B采用数字签名方法对访问它的Device A进行身份验证。进行身份验证前，需要在Device B上配置Device A的公钥。

本例中要求：

l Device B采用非对称密钥算法RSA验证Device A的身份。

l 采用从公钥文件中导入的方式在Device B上配置Device A的主机公钥。

2. 组网图

图1-3 从公钥文件中导入远端主机的公钥组网图

3. 配置步骤

(1) 在Device A上生成密钥对，并导出公钥

# 在Device A上生成RSA密钥对，密钥模数的长度采用缺省值1024比特。

<DeviceA> system-view

[DeviceA] public-key local create rsa

The range of public key size is (512 ~ 2048).

NOTES: If the key modulus is greater than 512,

It will take a few minutes.

Press CTRL+C to abort.

Input the bits of the modulus[default = 1024]:

Generating Keys...

++++++

++++++

++++++++

++++++++

# 显示生成的RSA密钥对的公钥信息。

[DeviceA] display public-key local rsa public

=====================================================

Time of Key pair created: 09:50:06 2011/03/07

Key name: HOST_KEY

Key type: RSA Encryption Key

=====================================================

Key code:

30819F300D06092A864886F70D010101050003818D0030818902818100D90003FA95F5A44A2A2CD3F814F9854C4421B57CAC64CFFE4782A87B0360B600497D87162D1F398E6E5E51E5E353B3A9AB16C9E766BD995C669A784AD597D0FB3AA9F7202C507072B19C3C50A0D7AD3994E14ABC62DB125035EA326470034DC078B2BAA3BC3BCA80AAB5EE01986BD1EF64B42F17CCAE4A77F1EF999B2BF9C4A10203010001

=====================================================

Time of Key pair created: 09:50:07 2011/03/07

Key name: SERVER_KEY

Key type: RSA Encryption Key

=====================================================

Key code:

307C300D06092A864886F70D0101010500036B003068026100999089E7AEE9802002D9EB2D0433B87BB6158E35000AFB3FF310E42F109829D65BF70F7712507BE1A3E0BC5C2C03FAAF00DFDDC63D004B4490DACBA3CFA9E84B9151BDC7EECE1C8770D961557D192DE2B36CAF9974B7B293363BB372771C2C1F0203010001

# 将生成的RSA主机公钥HOST_KEY导出到指定文件devicea.pub中。

[DeviceA] public-key local export rsa ssh2 devicea.pub

(2) 在Device A上启动FTP服务器功能

# 启动FTP服务器功能，并创建FTP用户，用户名为ftp，密码为123，用户级别为3（以便FTP用户具有足够的权限执行FTP操作）。

[DeviceA] ftp server enable

[DeviceA] local-user ftp

[DeviceA-luser-ftp] password simple 123

[DeviceA-luser-ftp] service-type ftp

[DeviceA-luser-ftp] authorization-attribute level 3

[DeviceA-luser-ftp] quit

(3) Device B获取Device A的公钥文件

# Device B通过FTP以二进制方式从Device A获取公钥文件devicea.pub。

<DeviceB> ftp 10.1.1.1

Trying 10.1.1.1 ...

Press CTRL+K to abort

Connected to 10.1.1.1.

220 FTP service ready.

User(10.1.1.1:(none)):ftp

331 Password required for ftp.

Password:

230 User logged in.

[ftp] binary

200 Type set to I.

[ftp] get devicea.pub

227 Entering Passive Mode (10,1,1,1,5,148).

125 BINARY mode data connection already open, transfer starting for /devicea.pub.

226 Transfer complete.

FTP: 299 byte(s) received in 0.189 second(s), 1.00Kbyte(s)/sec.

[ftp]quit

221 Server closing.

(4) Device B从公钥文件中导入公钥

# Device B从公钥文件中导入Device A的主机公钥。

<DeviceB> system-view

[DeviceB] public-key peer devicea import sshkey devicea.pub

# 显示Device B上保存的Device A的主机公钥信息。

[DeviceB] display public-key peer name devicea

=====================================

Key Name : devicea

Key Type : RSA

Key Module: 1024

=====================================

Key Code:

30819F300D06092A864886F70D010101050003818D0030818902818100D90003FA95F5A44A2A2CD3F814F9854C4421B57CAC64CFFE4782A87B0360B600497D87162D1F398E6E5E51E5E353B3A9AB16C9E766BD995C669A784AD597D0FB3AA9F7202C507072B19C3C50A0D7AD3994E14ABC62DB125035EA326470034DC078B2BAA3BC3BCA80AAB5EE01986BD1EF64B42F17CCAE4A77F1EF999B2BF9C4A10203010001

通过对比可以看出，Device B上保存的Device A的主机公钥信息与Device A实际的主机公钥信息一致。


1 PKI配置

相关链接

  • 1.1 PKI简介
  • 1.2 PKI配置任务简介
  • 1.3 配置实体DN
  • 1.4 配置PKI域
  • 1.5 PKI证书申请
  • 1.6 手工获取证书
  • 1.7 配置PKI证书验证
  • 1.8 销毁本地RSA密钥对
  • 1.9 删除证书
  • 1.10 配置证书属性的访问控制策略
  • 1.11 PKI显示和维护
  • 1.12 PKI典型配置举例
  • 1.13 常见配置错误举例
父主题： 10-PKI配置


1.1 PKI简介

1.1.1 概述

PKI（Public Key Infrastructure，公钥基础设施）是一个利用公共密钥理论和技术来实现并提供信息安全服务的具有通用性的安全基础设施。

公共密钥体制也称为非对称密钥体制，是目前应用最广泛的一种加密体制，在这一体制中，它使用一个非对称的密钥对，分别是一个公开的加密密钥（公钥）和一个保密的解密密钥（私钥），用公钥加密的信息只能用私钥解密，反之亦然。由于公钥是公开的，需要在网上传送，故公钥的管理问题就是公共密钥体制所需要解决的关键问题。

目前，PKI系统中引出的数字证书机制就是一个很好的解决方案。基于公共密钥技术的数字证书是一个用户的身份和他所持有的公钥的结合，它是使用PKI系统的用户建立安全通信的信任基础。

基于数字证书的PKI系统，能够为网络通信和网络交易，特别是电子政务和电子商务业务，透明地提供一整套安全服务，主要包括身份认证、保密、数据完整性和不可否认性。

目前，我司的PKI可为安全协议SSL（Secure Sockets Layer，安全套接字层）提供证书管理机制。

1.1.2 相关术语

1. 数字证书

数字证书是一个经CA（Certificate Authority，证书颁发机构）签名的、包含公开密钥及相关的用户身份信息的文件，它建立了用户身份信息与用户公钥的关联。CA对数字证书的签名保证了证书的合法性和权威性。数字证书的格式遵循ITU-T X.509国际标准，目前最常用的为X.509 V3标准。一个数字证书中包含多个字段，包括证书签发者的名称、主体的公钥信息、CA对证书的数字签名、证书的有效期等。

本手册中涉及两类证书：本地（local）证书和CA（Certificate Authority）证书。本地证书是CA签发给用户的数字证书；CA证书是CA自身的证书。若PKI系统中存在多个CA，则会形成一个CA层次结构，最上层的CA是根CA，它拥有一个CA“自签名”的证书。

2. 证书废除列表（CRL，Certificate Revocation List）

由于用户姓名的改变、私钥泄漏或业务中止等原因，需要存在一种方法将现行的证书撤消，即撤消公开密钥及相关的用户身份信息的绑定关系。在PKI中，所使用的这种方法为证书废除列表。任何一个证书被废除以后，CA就要发布CRL来声明该证书是无效的，并列出所有被废除的证书的序列号。CRL提供了一种检验证书有效性的方式。

当一个CRL的撤消信息过多时会导致CRL的发布规模变得非常庞大，且随着CRL大小的增加，网络资源的使用性能也会随之下降。为了避免这种情况，允许一个CA的撤消信息通过多个CRL发布出来，并且使用CRL发布点来指出这些小CRL的位置。

3. CA策略

CA在受理证书请求、颁发证书、吊销证书和发布CRL时所采用的一套标准被称为CA策略。通常，CA以一种叫做证书惯例声明（CPS，Certification Practice Statement）的文档发布其策略，CA策略可以通过带外（如电话、磁盘、电子邮件等）或其他方式获取。由于不同的CA使用不同的方法验证公开密钥与实体之间的绑定，所以在选择信任的CA进行证书申请之前，必须理解CA策略，从而指导对实体进行相应的配置。

1.1.3 体系结构

一个PKI体系由终端实体、证书机构、注册机构和PKI存储库四类实体共同组成，如下图1-1。

图1-1 PKI体系结构图

1. 终端实体

终端实体是PKI产品或服务的最终使用者，可以是个人、组织、设备或计算机中运行的进程。

2. 证书机构（CA，Certificate Authority）

CA是PKI的信任基础，是一个用于签发并管理数字证书的可信实体。其作用包括：发放证书、规定证书的有效期和通过发布CRL确保必要时可以废除证书。

3. 注册机构（RA，Registration Authority）

RA是CA的延伸，可作为CA的一部分，也可以独立。RA功能包括个人身份审核、CRL管理、密钥对产生和密钥对备份等。PKI国际标准推荐由一个独立的RA来完成注册管理的任务，这样可以增强应用系统的安全性。

4. PKI存储库

PKI存储库包括LDAP（Lightweight Directory Access Protocol，轻量级目录访问协议）服务器和普通数据库，用于对用户申请、证书、密钥、CRL和日志等信息进行存储和管理，并提供一定的查询功能。

LDAP提供了一种访问PKI存储库的方式，通过该协议来访问并管理PKI信息。LDAP服务器负责将RA服务器传输过来的用户信息以及数字证书进行存储，并提供目录浏览服务。用户通过访问LDAP服务器获取自己和其他用户的数字证书。

1.1.4 主要应用

PKI技术的广泛应用能满足人们对网络交易安全保障的需求。作为一种基础设施，PKI的应用范围非常广泛，并且在不断发展之中，下面给出几个应用实例。

1. 虚拟专用网络（VPN，Virtual Private Network）

VPN是一种构建在公用通信基础设施上的专用数据通信网络，利用网络层安全协议（如IPsec）和建立在PKI上的加密与数字签名技术来获得机密性保护。

2. 安全电子邮件

电子邮件的安全也要求机密、完整、认证和不可否认，而这些都可以利用PKI技术来实现。目前发展很快的安全电子邮件协议S/MIME(Secure/Multipurpose Internet Mail Extensions，安全/多用途Internet邮件扩充协议)，是一个允许发送加密和有签名邮件的协议。该协议的实现需要依赖于PKI技术。

3. Web安全

为了透明地解决Web的安全问题，在两个实体进行通信之前，先要建立SSL（Secure Sockets Layer，安全套接字层）连接，以此实现对应用层透明的安全通信。SSL协议允许在浏览器和服务器之间进行加密通信，并且利用PKI技术使用基于数字签名的方法对服务器和浏览器端进行身份验证。

1.1.5 PKI的工作过程

针对一个使用PKI的网络，配置PKI的目的就是为指定的实体向CA申请一个本地证书，并由设备对证书的有效性进行验证。下面是PKI的工作过程：

(1) 实体向RA提出证书申请；

(2) RA审核实体身份，将实体身份信息和公开密钥以数字签名的方式发送给CA；

(3) CA验证数字签名，同意实体的申请，颁发证书；

(4) RA接收CA返回的证书，发送到LDAP服务器以提供目录浏览服务，并通知实体证书发行成功；

(5) 实体获取证书，利用该证书可以与其它实体使用加密、数字签名进行安全通信；

(6) 实体希望撤消自己的证书时，向CA提交申请。CA批准实体撤消证书，并更新CRL，发布到LDAP服务器。


1.2 PKI配置任务简介

表1-1 PKI配置任务简介

配置任务 |  | 说明 | 详细配置
配置实体DN |  | 必选 | 1.3
配置PKI域 |  | 必选 | 1.4
PKI证书申请 | 自动申请证书 | 二者必选其一 | 1.5.1
 | 手工申请证书 |  | 1.5.2
手工获取证书 |  | 可选 | 1.6
配置PKI证书验证 |  | 可选 | 1.7
销毁本地RSA密钥对 |  | 可选 | 1.8
删除证书 |  | 可选 | 1.9
配置证书属性的访问控制策略 |  | 可选 | 1.10


1.3 配置实体DN

一份证书是一个公开密钥与一个身份的绑定，而身份必须与一个特定的PKI实体相关联。实体DN（Distinguished Name，识别名）的参数是实体的身份信息，CA根据实体提供的身份信息来唯一标识证书申请者。

实体DN的参数包括：

l 实体通用名

l 实体所属国家代码，用标准的两字符代码表示。例如，“CN”是中国的合法国家代码，“US”是美国的合法国家代码

l 实体FQDN（Fully Qualified Domain Name，完全合格域名），是实体在网络中的唯一标识，由一个主机名和域名组成，可被解析为IP地址。例如，www是一个主机名，whatever.com是一个域名，则www.whatever.com就是一个FQDN。

l 实体IP地址

l 实体所在地理区域名称

l 实体所属组织名称

l 实体所属部门名称

l 实体所属州省

实体DN的配置必须与CA证书颁发策略相匹配，以确认实体DN的配置任务，如哪些实体参数为必选配置，哪些为可选配置。申请者的身份信息必须符合CA证书颁发策略，否则证书申请可能会失败。

表1-2 配置实体DN

操作 | 命令 | 说明
进入系统视图 | system-view | -
创建一个实体，并进入该实体视图 | pki entity entity-name | 必选 缺省情况下，无实体存在
配置实体通用名 | common-name name | 可选 缺省情况下，未配置实体的通用名
配置实体所属国家代码 | country country-code-str | 可选 缺省情况下，未配置实体所属国家代码
配置实体FQDN | fqdn name-str | 可选 缺省情况下，未配置实体FQDN
配置实体IP地址 | ip ip-address | 可选 缺省情况下，未配置实体IP地址
配置实体所在地理区域名称 | locality locality-name | 可选 缺省情况下，未配置实体所在地理区域
配置实体所属组织名称 | organization org-name | 可选 缺省情况下，未配置实体所属组织
配置实体所属部门名称 | organization-unit org-unit-name | 可选 缺省情况下，未配置实体所属部门
配置实体所属州省 | state state-name | 可选 缺省情况下，未配置实体所属州省

Windows 2000 CA服务器对证书申请的数据长度有一定的限制。实体DN配置项超过一定数据长度时，申请证书没有回应。


1.4 配置PKI域

实体在进行PKI证书申请操作之前需要配置一些注册信息来配合完成申请的过程。这些信息的集合就是一个实体的PKI域。

PKI域是一个本地概念，因此创建PKI域的目的是便于其它应用引用PKI的配置，比如IKE、SSL等。一个设备上配置的PKI域对CA和其它设备是不可见的，每一个PKI域有单独的域参数配置信息。

PKI域中包括以下参数：

l 信任的CA名称

在申请证书时，是通过一个可信实体认证机构，来完成实体证书的注册颁发，因此必须指定一个信任的CA名称。

l 实体名称

向CA发送证书申请请求时，必须指定所使用的实体名，以向CA表明自己的身份。

l 证书申请的注册机构

证书申请的受理一般由一个独立的注册机构（即RA）来承担，它接收用户的注册申请，审查用户的申请资格，并决定是否同意CA给其签发数字证书。注册机构并不给用户签发证书，而只是对用户进行资格审查。有时PKI把注册管理的职能交给CA来完成，而不设立独立运行的RA，但这并不是取消了PKI的注册功能，而只是将其作为CA的一项功能而已。PKI推荐独立使用RA作为注册审理机构。

l 注册服务器的URL

证书申请之前必须指定注册服务器的URL，随后实体可通过简单证书注册协议（SCEP，Simple Certification Enrollment Protocol）向该服务器提出证书申请，SCEP是专门用于与认证机构进行通信的协议。

l 证书申请状态查询的周期和次数

实体在发送证书申请后，如果CA采用手工验证申请，证书的发布会需要很长时间。在此期间，客户端需要定期发送状态查询，以便在证书签发后能及时获取到证书。客户端可以配置证书申请状态的查询周期和次数。

l LDAP服务器IP地址

在PKI系统中，用户的证书和CRL信息的存储是一个非常核心的问题。一般采用LDAP服务器来存储证书和CRL，这时就需要指定LDAP服务器的位置。

l 验证根证书时使用的指纹

当设备从CA获得根证书时，需要验证CA根证书的指纹，即根证书内容的散列值，该值对于每一个证书都是唯一的。如果CA根证书的指纹与在PKI域中配置的指纹不同，则设备将拒绝接收根证书。

表1-3 配置PKI域

配置任务 | 命令 | 说明
进入系统视图 | system-view | -
创建一个PKI域，并进入PKI域视图 | pki domain domain-name | 必选
配置信任的CA名称 | ca identifier name | 必选 缺省情况下，未配置信任的CA名称
指定实体名称 | certificate request entity entity-name | 必选 缺省情况下，未指定实体名称 指定的实体名称必须已创建
配置证书申请的注册受理机构 | certificate request from { ca | ra } | 必选 缺省情况下，未指定证书申请的注册受理机构
配置注册服务器URL | certificate request url url-string | 必选 缺省情况下，未指定注册服务器URL
配置证书申请状态查询的周期和次数 | certificate request polling { count count | interval minutes } | 可选 缺省情况下，证书申请状态查询周期为20分钟，每一个周期内查询50次
配置LDAP服务器 | ldap-server ip ip-address [ port port-number ] [ version version-number ] | 可选 缺省情况下，未指定LDAP服务器
配置验证根证书时使用的指纹 | root-certificate fingerprint { md5 | sha1 } string | 当证书申请方式为自动方式时，此配置必选；当证书申请方式为手工方式时，此配置可选，若不配置，需要用户自行验证根证书指纹 缺省情况下，未指定验证根证书时使用的指纹

l 目前一台设备只支持同时创建两个PKI域。

l CA的名称只是在获取CA证书时使用，申请本地证书时不会用到。

l 目前，注册服务器URL的配置不支持域名解析。


1.5 PKI证书申请

证书申请就是实体向CA自我介绍的过程。实体向CA提供身份信息，以及相应的公开密钥，这些信息将成为颁发给该实体证书的主要组成部分。实体向CA提出证书申请，有离线和在线两种方式。离线申请方式下，CA允许申请方通过带外方式（如电话、磁盘、电子邮件等）向CA提供申请信息。

在线证书申请有手工发起和自动发起两种方式。

1.5.1 自动申请证书

配置证书申请方式为自动方式后，当有应用协议与PKI联动时，如果应用协议中的实体无本地证书，则实体自动通过SCEP协议向CA发起证书申请。

表1-4 自动申请证书

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入PKI域视图 | pki domain domain-name | -
配置证书申请为自动方式 | certificate request mode auto [ key-length key-length | password { cipher | simple } password ] * | 必选 缺省情况下，证书申请为手工方式

在自动申请到的证书即将过期时或正式过期后，系统不会重新申请新的证书，这种情况下，可能会由于证书过期造成应用业务的中断，因此建议用户手工申请证书。

1.5.2 手工申请证书

配置证书申请方式为手工方式后，需要手工完成获取CA证书、生成密钥对、申请本地证书的工作。

获取CA证书的目的是用来验证本地证书的真实性和合法性。

密钥对的产生是证书申请过程中重要的一步。申请过程使用了一对主机密钥：私钥和公钥。私钥由用户保留，公钥和其他信息则交由CA中心进行签名，从而产生证书。

有关RSA密钥对的具体配置请参见“安全配置指导”中的“公钥管理”。

表1-5 手工申请证书

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入PKI域视图 | pki domain domain-name | -
配置证书申请为手工方式 | certificate request mode manual | 可选 缺省情况下，证书申请为手工方式
退回系统视图 | quit | -
手工获取CA证书 | 请参见 1.6 | 必选
生成本地RSA密钥对 | public-key local create rsa | 必选 缺省情况下，本地没有RSA密钥对
手工申请本地证书 | pki request-certificate domain domain-name [ password ] [ pkcs10 [ filename filename ] ] | 必选

l 若本地证书已存在，为保证密钥对与现存证书的一致性，不应执行创建密钥对命令，必须在删除本地证书后再执行 public-key local create 命令生成新的密钥对。有关 public-key local create 命令的详细介绍，请参见“安全命令参考”中的“公钥管理”。

l 创建的新密钥对将覆盖旧密钥对。若本地已有RSA密钥对，执行 public-key local create 命令时，系统会提示是否替换原有密钥对。

l 如果本地证书已存在，则不允许再执行证书申请操作，以避免因相关配置的修改使得证书与注册信息不匹配。若想重新申请，请先使用 pki delete-certificate 命令删除存储于本地的CA证书与本地证书，然后再执行 pki request-certificate domain 命令。

l 当无法通过SCEP协议向CA在线申请证书时，可以首先通过执行指定参数 pkcs10 的命令 pki request-certificate domain 打印出本地的证书申请信息，或者通过执行指定 pkcs10 filename filename 参数的该命令将证书申请信息直接保存到本地的指定文件中，然后再通过带外方式将这些本地证书申请信息发送给CA进行证书申请。

l 证书申请之前必须保证实体时钟与CA的时钟同步，否则申请证书的有效期会出现异常。

l pki request-certificate domain 配置不能被保存在配置文件中。


1.6 手工获取证书

用户通过此配置可以将已存在的CA证书、本地证书获取至本地。获取证书有两种方式：离线方式和在线方式。离线方式下获取证书需要通过带外方式（如FTP、磁盘、电子邮件等）取得证书，然后将其导入至本地。

获取证书的目的有两个：

l 将CA签发的与实体所在安全域有关的证书存放到本地，以提高证书的查询效率，减少向PKI证书存储库查询的次数。

l 为证书的验证做好准备。

在线获取本地证书之前必须完成LDAP服务器的配置。

表1-6 手工获取证书

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
手工获取证书 | 在线方式 | pki retrieval-certificate { ca | local } domain domain-name | 二者必选其一
 | 离线方式导入证书 | pki import-certificate { ca | local } domain domain-name { der | p12 | pem } [ filename filename ]

l 如果本地已有CA证书存在，则不允许执行手工获取CA证书的操作，避免因相关配置的修改使得证书与注册信息不匹配。若想重新获取，请先使用 pki delete-certificate 命令删除CA证书与本地证书后，再执行此命令。

l pki retrieval-certificate 配置不能被保存在配置文件中。

l 为保证设备上已申请的证书可用，请确保设备当前系统时间处于证书的有效期范围之内。


1.7 配置PKI证书验证

在使用每一个证书之前，必须对证书进行验证。证书验证包括对签发时间、签发者信息以及证书的有效性几方面进行验证。证书验证的核心是检查CA在证书上的签名，并确定证书仍在有效期内，而且未被废除，因此在进行证书验证操作之前必须首先获取CA证书。

配置证书验证时可以设置是否必须进行CRL检查。

l 如果配置为使能CRL检查，则检验证书的有效性，必须通过CRL判断。因此，在进行证书有效性验证之前，除了获取CA证书还必须获取CRL并下载至本地；

l 如果配置为不使能CRL检查，则仅需要获取CA证书来判断证书的有效性。

1.7.1 配置使能CRL检查的证书验证

表1-7 配置使能CRL检查的证书验证

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入PKI域视图 | pki domain domain-name | -
配置CRL发布点的URL | crl url url-string | 可选 缺省情况下，未指定CRL发布点的URL
配置CRL的更新周期 | crl update-period hours | 可选 缺省情况下，根据CRL文件中的下次更新域进行更新
使能CRL检查 | crl check enable | 可选 缺省情况下，CRL检查处于开启状态
退回系统视图 | quit | -
获取CA证书 | 请参见 1.6 | 必选
获取CRL并下载至本地 | pki retrieval-crl domain domain-name | 必选
检验证书的有效性 | pki validate-certificate { ca | local } domain domain-name | 必选

l CRL的更新周期是指本地从CRL存储服务器下载CRL的时间间隔。手工配置的CRL更新周期将优先于CRL文件中指定的更新时间。

l pki retrieval-crl domain 命令不能被保存在配置文件中。

l 目前，CRL发布点URL的配置不支持域名解析。

1.7.2 配置不使能CRL检查的PKI证书验证

表1-8 配置不使能CRL检查的PKI证书验证

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入PKI域视图 | pki domain domain-name | -
禁止CRL检查 | crl check disable | 必选 缺省情况下，CRL检查处于开启状态
退回系统视图 | quit | -
获取CA证书 | 请参见 1.6 | 必选
检验证书的有效性 | pki validate-certificate { ca | local } domain domain-name | 必选


1.8 销毁本地RSA密钥对

由CA颁发的证书都会设置有效期，证书生命周期的长短由签发证书的CA中心来确定。当用户的私钥被泄漏或证书的有效期快到时，用户应该删除旧的密钥对，产生新的密钥对，重新申请新的证书。通过此配置用户可以销毁本地RSA密钥对。

表1-9 销毁本地RSA密钥对

操作 | 命令 | 说明
进入系统视图 | system-view | -
销毁本地RSA密钥对 | public-key local destroy rsa | 必选

命令 public-key local destroy 的详细介绍可参考“安全命令参考”中的“公钥管理”。


1.9 删除证书

证书过期或希望重新申请证书，可以通过此配置删除一个已经存在的本地证书或CA证书。

表1-10 配置删除证书

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置删除证书 | pki delete-certificate { ca | local } domain domain-name | 必选


1.10 配置证书属性的访问控制策略

通过配置证书属性的访问控制策略，可以对用户的访问权限进行进一步的控制，保证了与之通信的服务器的安全性。

表1-11 配置证书属性的访问控制策略

操作 | 命令 | 说明
进入系统视图 | system-view | -
创建证书属性组，并进入证书属性组视图 | pki certificate attribute-group group-name | 必选 缺省情况下，不存在证书属性组
配置证书颁发者名、证书主题名及备用主题名的属性规则 | attribute id { alt-subject-name { fqdn | ip } | { issuer-name | subject-name } { dn | fqdn | ip } } { ctn | equ | nctn | nequ} attribute-value | 可选 缺省情况下，对证书颁发者名、证书主题名及备用主题名没有限制
退回系统视图 | quit | -
创建证书属性访问控制策略，并进入证书属性访问控制策略视图 | pki certificate access-control-policy policy-name | 必选 缺省情况下，不存在证书属性访问控制策略
配置证书属性控制规则 | rule [ id ] { deny | permit } group-name | 必选 缺省情况下，不存在证书属性控制规则 group-name 必须是已存在的证书属性组的名称


1.11 PKI显示和维护

在完成上述配置后，在任意视图下执行 display 命令可以显示配置后PKI的运行情况，通过查看显示信息验证配置的效果。

表1-12 PKI显示和维护

操作 | 命令
显示证书内容或证书申请状态 | display pki certificate { { ca | local } domain domain-name | request-status } [ | { begin | exclude | include } regular-expression ]
显示CRL内容 | display pki crl domain domain-name [ | { begin | exclude | include } regular-expression ]
显示证书属性组的信息 | display pki certificate attribute-group { group-name | all } [ | { begin | exclude | include } regular-expression ]
显示证书属性访问控制策略的信息 | display pki certificate access-control-policy { policy-name | all } [ | { begin | exclude | include } regular-expression ]


1.12 PKI典型配置举例

l 当采用Windows Server作为CA时，需要安装SCEP插件。此时，配置PKI domain时，需要使用 certificate request from ra 命令指定实体从RA注册申请证书。

l 当采用RSA Keon软件时，不需要安装SCEP插件。此时，配置PKI domain时，需要使用 certificate request from ca 命令指定实体从CA注册申请证书。

1.12.1 PKI实体向CA申请证书（采用RSA Keon CA服务器）

1. 组网需求

在作为PKI实体的设备Device上进行相关配置，实现以下需求：

l 设备向CA服务器申请本地证书

l 获取CRL为证书验证做准备

2. 组网图

图1-2 PKI实体向CA申请证书组网图

3. 配置步骤

(1) 配置CA服务器

l 创建CA服务器myca

在本例中，CA服务器上首先需要进行基本属性Nickname和Subject DN的配置。其它属性选择默认值。其中，Nickname为可信任的CA名称，Subject DN为CA的DN属性，包括CN、OU、O和C。

l 配置扩展属性

基本属性配置完毕之后，还需要在生成的CA服务器管理页面上对“Jurisdiction Configuration”进行配置，主要内容包括：根据需要选择合适的扩展选项；启动自动颁发证书功能；添加可以自动颁发证书的地址范围。

l 配置CRL发布

CA服务器的基本配置完成之后，需要进行CRL的相关配置。

本例中选择CRL的发布方式为HTTP，自动生成CRL发布点的URL为http://4.4.4.133:447/myca.crl。

以上配置完成之后，还需要保证设备的系统时钟与CA的时钟同步才可以正常使用设备来申请证书和获取CRL。

(2) 配置Device

l 配置实体命名空间

# 配置实体名称为aaa，通用名为device。

<Device> system-view

[Device] pki entity aaa

[Device-pki-entity-aaa] common-name device

[Device-pki-entity-aaa] quit

l 配置PKI域参数

# 创建并进入PKI域torsa。

[Device] pki domain torsa

# 配置可信任的CA名称为myca。

[Device-pki-domain-torsa] ca identifier myca

# 配置注册服务器URL，格式为http://host:port/Issuing Jurisdiction ID。其中的Issuing Jurisdiction ID为CA服务器上生成的16进制字符串。

[Device-pki-domain-torsa] certificate request url http://4.4.4.133:446/c95e970f632d27be5e8cbf80e971d9c4a9a93337

# 配置证书申请的注册受理机构为CA。

[Device-pki-domain-torsa] certificate request from ca

# 指定实体名称为aaa。

[Device-pki-domain-torsa] certificate request entity aaa

# 配置CRL发布点位置。

[Device-pki-domain-torsa] crl url http://4.4.4.133:447/myca.crl

[Device-pki-domain-torsa] quit

l 用RSA算法生成本地密钥对

[Device] public-key local create rsa

The range of public key size is (512 ~ 2048).

NOTES: If the key modulus is greater than 512,

It will take a few minutes.

Press CTRL+C to abort.

Input the bits in the modulus [default = 1024]:

Generating Keys...

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

++++++++++++++++++++++++++++++++++++++

+++++++++++++++++++++++++++++++++++++++++++++++

+++++++++++++++++++++++

l 证书申请

# 获取CA证书并下载至本地。

[Device] pki retrieval-certificate ca domain torsa

Retrieving CA/RA certificates. Please wait a while......

The trusted CA's finger print is:

MD5 fingerprint:EDE9 0394 A273 B61A F1B3 0072 A0B1 F9AB

SHA1 fingerprint: 77F9 A077 2FB8 088C 550B A33C 2410 D354 23B2 73A8

Is the finger print correct?(Y/N):y

Saving CA/RA certificates chain, please wait a moment......

CA certificates retrieval success.

# 获取CRL并下载至本地。

[Device] pki retrieval-crl domain torsa

Connecting to server for retrieving CRL. Please wait a while.....

CRL retrieval success!

# 手工申请本地证书。

[Device] pki request-certificate domain torsa challenge-word

Certificate is being requested, please wait......

[Device]

Enrolling the local certificate,please wait a while......

Certificate request Successfully!

Saving the local certificate to device......

Done!

4. 验证配置结果

# 通过以下显示命令可以查看获取的本地证书信息。

[Device] display pki certificate local domain torsa

Certificate:

Data:

Version: 3 (0x2)

Serial Number:

9A96A48F 9A509FD7 05FFF4DF 104AD094

Signature Algorithm: sha1WithRSAEncryption

Issuer:

C=cn

O=org

OU=test

CN=myca

Validity

Not Before: Jan 8 09:26:53 2011 GMT

Not After : Jan 8 09:26:53 2011 GMT

Subject:

CN=device

Subject Public Key Info:

Public Key Algorithm: rsaEncryption

RSA Public Key: (1024 bit)

Modulus (1024 bit):

00D67D50 41046F6A 43610335 CA6C4B11

F8F89138 E4E905BD 43953BA2 623A54C0

EA3CB6E0 B04649CE C9CDDD38 34015970

981E96D9 FF4F7B73 A5155649 E583AC61

D3A5C849 CBDE350D 2A1926B7 0AE5EF5E

D1D8B08A DBF16205 7C2A4011 05F11094

73EB0549 A65D9E74 0F2953F2 D4F0042F

19103439 3D4F9359 88FB59F3 8D4B2F6C

2B

Exponent: 65537 (0x10001)

X509v3 extensions:

X509v3 CRL Distribution Points:

URI:http://4.4.4.133:447/myca.crl

Signature Algorithm: sha1WithRSAEncryption

836213A4 F2F74C1A 50F4100D B764D6CE

B30C0133 C4363F2F 73454D51 E9F95962

EDE9E590 E7458FA6 765A0D3F C4047BC2

9C391FF0 7383C4DF 9A0CCFA9 231428AF

987B029C C857AD96 E4C92441 9382E798

8FCC1E4A 3E598D81 96476875 E2F86C33

75B51661 B6556C5E 8F546E97 5197734B

C8C29AC7 E427C8E4 B9AAF5AA 80A75B3C

关于获取的CA证书及CRL文件的详细信息可以通过相应的显示命令来查看，此处略。具体内容请参考命令 display pki certificate ca domain 和 display pki crl domain。

1.12.2 PKI实体向CA申请证书（采用Windows 2003 server CA服务器）

1. 组网需求

配置PKI实体Device向CA服务器申请本地证书。

2. 组网图

图1-3 PKI实体向CA申请证书组网图

3. 配置步骤

(1) 配置CA服务器

l 安装证书服务器组件

打开[控制面板]/[添加/删除程序]，选择[添加/删除Windows组件]中的“证书服务”进行安装。

l 安装SCEP插件

由于Windows 2003 server作为CA服务器时，缺省情况下不支持SCEP，所以需要安装SCEP插件，才能使设备具备证书自动注册、获取等功能。插件安装完毕后，弹出提示框，提示框中的URL地址即为设备上配置的注册服务器地址。

l 修改证书服务的属性

完成上述配置后，打开[控制面板/管理工具]中的[证书颁发机构]，如果安装成功，在[颁发的证书]中将存在两个CA颁发给RA的证书。选择[CA server 属性]中的“策略模块”的属性为“如果可以的话，按照证书模板中的设置。否则，将自动颁发证书(F)。”

l 修改IIS服务的属性

打开[控制面板/管理工具]中的[Internet 信息服务(IIS)管理器]，将[默认网站 属性]中“主目录”的本地路径修改为证书服务保存的路径。另外，为了避免与已有的服务冲突，建议修改默认网站的TCP端口号为未使用的端口号。

以上配置完成之后，还需要保证设备的系统时钟与CA的时钟同步才可以正常使用设备来申请证书。

(2) 配置Device

l 配置实体命名空间

# 配置实体名称为aaa，通用名为device。

<Device> system-view

[Device] pki entity aaa

[Device-pki-entity-aaa] common-name device

[Device-pki-entity-aaa] quit

l 配置PKI域参数

# 创建并进入PKI域torsa。

[Device] pki domain torsa

# 配置可信任的CA名称为myca。

[Device-pki-domain-torsa] ca identifier myca

# 配置注册服务器URL，格式为http://host:port/certsrv/mscep/mscep.dll。其中，host:port为CA服务器的主机地址和端口号。

[Device-pki-domain-torsa] certificate request url http://4.4.4.1:8080/certsrv/mscep/mscep.dll

# 配置证书申请的注册受理机构为RA。

[Device-pki-domain-torsa] certificate request from ra

# 指定实体名称为aaa。

[Device-pki-domain-torsa] certificate request entity aaa

l 用RSA算法生成本地密钥对

[Device] public-key local create rsa

The range of public key size is (512 ~ 2048).

NOTES: If the key modulus is greater than 512,

It will take a few minutes.

Press CTRL+C to abort.

Input the bits in the modulus [default = 1024]:

Generating Keys...

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

++++++++++++++++++++++++++++++++++++++

+++++++++++++++++++++++++++++++++++++++++++++++

+++++++++++++++++++++++

l 证书申请

# 获取CA证书并下载至本地。

[Device] pki retrieval-certificate ca domain torsa

Retrieving CA/RA certificates. Please wait a while......

The trusted CA's finger print is:

MD5 fingerprint:766C D2C8 9E46 845B 4DCE 439C 1C1F 83AB

SHA1 fingerprint:97E5 DDED AB39 3141 75FB DB5C E7F8 D7D7 7C9B 97B4

Is the finger print correct?(Y/N):y

Saving CA/RA certificates chain, please wait a moment......

CA certificates retrieval success.

# 手工申请本地证书。

[Device] pki request-certificate domain torsa challenge-word

Certificate is being requested, please wait......

[Device]

Enrolling the local certificate,please wait a while......

Certificate request Successfully!

Saving the local certificate to device......

Done!

4. 验证配置结果

# 通过以下显示命令可以查看获取的本地证书信息。

[Device] display pki certificate local domain torsa

Certificate:

Data:

Version: 3 (0x2)

Serial Number:

48FA0FD9 00000000 000C

Signature Algorithm: sha1WithRSAEncryption

Issuer:

CN=myca

Validity

Not Before: Feb 21 12:32:16 2011 GMT

Not After : Feb 21 12:42:16 2011 GMT

Subject:

CN=device

Subject Public Key Info:

Public Key Algorithm: rsaEncryption

RSA Public Key: (1024 bit)

Modulus (1024 bit):

00A6637A 8CDEA1AC B2E04A59 F7F6A9FE

5AEE52AE 14A392E4 E0E5D458 0D341113

0BF91E57 FA8C67AC 6CE8FEBB 5570178B

10242FDD D3947F5E 2DA70BD9 1FAF07E5

1D167CE1 FC20394F 476F5C08 C5067DF9

CB4D05E6 55DC11B6 9F4C014D EA600306

81D403CF 2D93BC5A 8AF3224D 1125E439

78ECEFE1 7FA9AE7B 877B50B8 3280509F

6B

Exponent: 65537 (0x10001)

X509v3 extensions:

X509v3 Subject Key Identifier:

B68E4107 91D7C44C 7ABCE3BA 9BF385F8 A448F4E1

X509v3 Authority Key Identifier:

keyid:9D823258 EADFEFA2 4A663E75 F416B6F6 D41EE4FE

X509v3 CRL Distribution Points:

URI:http://l00192b/CertEnroll/CA%20server.crl

URI:file://\\l00192b\CertEnroll\CA server.crl

Authority Information Access:

CA Issuers - URI:http://l00192b/CertEnroll/l00192b_CA%20server.crt

CA Issuers - URI:file://\\l00192b\CertEnroll\l00192b_CA server.crt

1.3.6.1.4.1.311.20.2:

.0.I.P.S.E.C.I.n.t.e.r.m.e.d.i.a.t.e.O.f.f.l.i.n.e

Signature Algorithm: sha1WithRSAEncryption

81029589 7BFA1CBD 20023136 B068840B

……（略）

关于获取的CA证书的详细信息可以通过相应的显示命令来查看，此处略。具体内容请参考命令 display pki certificate ca domain。

1.12.3 证书属性的访问控制策略应用举例

1. 组网需求

l 客户端通过HTTPS（Hypertext Transfer Protocol Secure，超文本传输协议的安全版本）协议远程访问设备（HTTPS服务器）。

l 通过SSL协议保证合法客户端安全登录HTTPS服务器。

l 为HTTPS服务器制定证书属性的访问控制策略，对客户端的访问权限进行控制。

2. 组网图

图1-4 证书属性的访问控制策略应用组网图

3. 配置步骤

l SSL配置的相关内容请参见“安全配置指导”中的“SSL”。

l HTTPS配置的相关内容请参见“基础配置指导”中的“配置通过Web网管登录设备”。

l SSL策略所引用的PKI域必须首先创建，PKI域参数的具体配置请参见 1.12.1 中的“配置PKI域参数”。

(1) 配置HTTPS服务器

# 配置HTTPS服务器使用的SSL策略。

<Device> system-view

[Device] ssl server-policy myssl

[Device-ssl-server-policy-myssl] pki-domain 1

[Device-ssl-server-policy-myssl] client-verify enable

[Device-ssl-server-policy-myssl] quit

(2) 配置证书属性组

# 配置证书属性组mygroup1，并创建两个属性规则。规则1定义证书主题名的DN包含字符串aabbcc；规则2定义证书颁发者名中的IP地址等于10.0.0.1。

[Device] pki certificate attribute-group mygroup1

[Device-pki-cert-attribute-group-mygroup1] attribute 1 subject-name dn ctn aabbcc

[Device-pki-cert-attribute-group-mygroup1] attribute 2 issuer-name ip equ 10.0.0.1

[Device-pki-cert-attribute-group-mygroup1] quit

# 配置证书属性组mygroup2，并创建两个属性规则。规则1定义证书备用主题名中的FQDN不包含字符串apple；规则2定义证书颁发者名的DN包含字符串aabbcc。

[Device] pki certificate attribute-group mygroup2

[Device-pki-cert-attribute-group-mygroup2] attribute 1 alt-subject-name fqdn nctn apple

[Device-pki-cert-attribute-group-mygroup2] attribute 2 issuer-name dn ctn aabbcc

[Device-pki-cert-attribute-group-mygroup2] quit

(3) 配置证书访问控制策略

# 配置访问控制策略myacp，并建立两个控制规则。

[Device] pki certificate access-control-policy myacp

[Device-pki-cert-acp-myacp] rule 1 deny mygroup1

[Device-pki-cert-acp-myacp] rule 2 permit mygroup2

[Device-pki-cert-acp-myacp] quit

(4) 配置HTTPS服务器与相关策略进行关联，并启动HTTPS服务器

# 配置指定HTTPS服务器的SSL策略为myssl。

[Device] ip https ssl-server-policy myssl

# 配置指定HTTPS服务器的证书访问控制策略为myacp。

[Device] ip https certificate access-control-policy myacp

# 启动HTTPS服务器。

[Device] ip https enable


1.13 常见配置错误举例

1.13.1 获取CA证书失败

1. 故障现象

获取CA证书时失败。

2. 故障分析

可能有以下原因：

l 网络连接故障，如网线折断，接口松动；

l 没有设置信任的CA名称；

l 证书申请的注册服务器URL位置不正确或未配置；

l 没有配置证书申请注册受理机构；

l 设备的系统时钟与CA的时钟不同步。

3. 处理过程

l 排除物理连接故障；

l 查看各必配项是否都正确配置；

l 可通过 ping 命令测试注册服务器是否连接正常；

l 配置证书申请注册受理机构；

l 保持系统时钟与CA同步。

1.13.2 本地证书申请失败

1. 故障现象

手工证书请求失败。

2. 故障分析

可能有以下原因：

l 网络连接故障，如网线折断，接口松动；

l 申请之前没有先获取CA证书；

l 当前的密钥对已经绑定证书；

l 没有设置信任的CA名称；

l 证书申请的注册服务器URL位置不正确或未配置；

l 没有配置证书申请注册受理机构；

l 没有配置实体DN中必配参数。

3. 处理过程

l 排除物理连接故障；

l 获取CA证书；

l 重新创建密钥对；

l 配置信任的CA名称；

l 可通过 ping 命令测试注册服务器是否连接正常；

l 配置证书申请注册受理机构；

l 可通过查看CA/RA注册策略选择相关的实体DN属性进行配置。

1.13.3 CRL获取失败

1. 故障现象

获取CRL发生失败。

2. 故障分析

可能有以下原因：

l 网络连接故障，如网线折断，接口松动；

l 获取CRL之前未先取得CA证书；

l 未设置LDAP服务器的IP地址；

l 未设置CRL发布点位置；

l LDAP服务器版本配置错误。

3. 处理过程

l 排除物理连接故障；

l 获取CA证书；

l 设置LDAP服务器的IP地址；

l 设置CRL发布点位置；

l 重新配置LDAP版本。


1 IPsec配置

相关链接

  • 1.1 IPsec简介
  • 1.2 配置IPsec保护IPv6路由协议
  • 1.3 IPsec显示和维护
  • 1.4 IPsec典型配置举例
父主题： 11-IPsec配置


1.1 IPsec简介

IPsec（IP Security）是IETF制定的三层隧道加密协议，它为Internet上传输的数据提供了高质量的、可互操作的、基于密码学的安全保证，是一种传统的实现三层VPN（Virtual Private Network，虚拟专用网）的安全技术。特定的通信方之间通过建立IPsec隧道来传输用户的私有数据，并在IP层提供了以下安全服务：

l 数据机密性（Confidentiality）：IPsec发送方在通过网络传输包前对包进行加密。

l 数据完整性（Data Integrity）：IPsec接收方对发送方发送来的包进行认证，以确保数据在传输过程中没有被篡改。

l 数据来源认证（Data Authentication）：IPsec在接收端可以认证发送IPsec报文的发送端是否合法。

l 防重放（Anti-Replay）：IPsec接收方可检测并拒绝接收过时或重复的报文。

IPsec具有以下优点：

l 支持IKE（Internet Key Exchange，因特网密钥交换），可实现密钥的自动协商功能，减少了密钥协商的开销。可以通过IKE建立和维护SA（Security Association，安全联盟）的服务，简化了IPsec的使用和管理。

l 所有使用IP协议进行数据传输的应用系统和服务都可以使用IPsec，而不必对这些应用系统和服务本身做任何修改。

l 对数据的加密是以数据包为单位的，而不是以整个数据流为单位，这不仅灵活而且有助于进一步提高IP数据包的安全性，可以有效防范网络攻击。

1.1.1 IPsec的协议实现

IPsec协议不是一个单独的协议，它给出了应用于IP层上网络数据安全的一整套体系结构，包括网络认证协议AH（Authentication Header，认证头）、ESP（Encapsulating Security Payload，封装安全载荷）、IKE（Internet Key Exchange，因特网密钥交换）和用于网络认证及加密的一些算法等。其中，AH协议和ESP协议用于提供安全服务，IKE协议用于密钥交换。

IPsec提供了两种安全机制：认证和加密。认证机制使IP通信的数据接收方能够确认数据发送方的真实身份以及数据在传输过程中是否遭篡改。加密机制通过对数据进行加密运算来保证数据的机密性，以防数据在传输过程中被窃听。

IPsec协议中AH协议和ESP协议的功能及工作原理如下：

l AH协议（IP协议号为51）定义了认证的应用方法，提供数据源认证、数据完整性校验和防报文重放功能，它能保护通信免受篡改，但不能防止窃听，适合用于传输非机密数据。AH的工作原理是在每一个数据包上添加一个身份验证报文头，此报文头插在标准IP包头后面，对数据提供完整性保护。可选择的认证算法有MD5（Message Digest）、SHA-1（Secure Hash Algorithm）等。

l ESP协议（IP协议号为50）定义了加密和可选认证的应用方法，提供加密、数据源认证、数据完整性校验和防报文重放功能。ESP的工作原理是在每一个数据包的标准IP包头后面添加一个ESP报文头，并在数据包后面追加一个ESP尾。与AH协议不同的是，ESP将需要保护的用户数据进行加密后再封装到IP包中，以保证数据的机密性。常见的加密算法有DES、3DES、AES等。同时，作为可选项，用户可以选择MD5、SHA-1算法保证报文的完整性和真实性。

在实际进行IP通信时，可以根据实际安全需求同时使用这两种协议或选择使用其中的一种。AH和ESP都可以提供认证服务，不过，AH提供的认证服务要强于ESP。同时使用AH和ESP时，设备支持的AH和ESP联合使用的方式为：先对报文进行ESP封装，再对报文进行AH封装，封装之后的报文从内到外依次是原始IP报文、ESP头、AH头和外部IP头。

1.1.2 IPsec基本概念

1. 安全联盟（Security Association，SA）

IPsec在两个端点之间提供安全通信，端点被称为IPsec对等体。

SA是IPsec的基础，也是IPsec的本质。SA是通信对等体间对某些要素的约定，例如，使用哪种协议（AH、ESP还是两者结合使用）、协议的封装模式（传输模式和隧道模式）、加密算法（DES、3DES和AES）、特定流中保护数据的共享密钥以及密钥的生存周期等。建立SA的方式有手工配置和IKE自动协商两种。

SA是单向的，在两个对等体之间的双向通信，最少需要两个SA来分别对两个方向的数据流进行安全保护。同时，如果两个对等体希望同时使用AH和ESP来进行安全通信，则每个对等体都会针对每一种协议来构建一个独立的SA。

SA由一个三元组来唯一标识，这个三元组包括SPI（Security Parameter Index，安全参数索引）、目的IP地址、安全协议号（AH或ESP）。

SPI是用于唯一标识SA的一个32比特数值，它在AH和ESP头中传输。在手工配置SA时，需要手工指定SPI的取值。使用IKE协商产生SA时，SPI将随机生成。

通过IKE协商建立的SA具有生存周期，手工方式建立的SA永不老化。IKE协商建立的SA的生存周期有两种定义方式：

l 基于时间的生存周期，定义了一个SA从建立到失效的时间；

l 基于流量的生存周期，定义了一个SA允许处理的最大流量。

生存周期到达指定的时间或指定的流量，SA就会失效。SA失效前，IKE将为IPsec协商建立新的SA，这样，在旧的SA失效前新的SA就已经准备好。在新的SA开始协商而没有协商好之前，继续使用旧的SA保护通信。在新的SA协商好之后，则立即采用新的SA保护通信。

2. 封装模式

IPsec有如下两种工作模式：

l 隧道（tunnel）模式：用户的整个IP数据包被用来计算AH或ESP头，AH或ESP头以及ESP加密的用户数据被封装在一个新的IP数据包中。通常，隧道模式应用在两个安全网关之间的通讯。

l 传输（transport）模式：只是传输层数据被用来计算AH或ESP头，AH或ESP头以及ESP加密的用户数据被放置在原IP包头后面。通常，传输模式应用在两台主机之间的通讯，或一台主机和一个安全网关之间的通讯。

不同的安全协议在tunnel和transport模式下的数据封装形式如 图1-1 所示。

图1-1 安全协议数据封装格式

3. 认证算法与加密算法

(1) 认证算法

认证算法的实现主要是通过杂凑函数。杂凑函数是一种能够接受任意长的消息输入，并产生固定长度输出的算法，该输出称为消息摘要。IPsec对等体计算摘要，如果两个摘要是相同的，则表示报文是完整未经篡改的。IPsec使用两种认证算法：

l MD5：MD5通过输入任意长度的消息，产生128bit的消息摘要。

l SHA-1：SHA-1通过输入长度小于2的64次方bit的消息，产生160bit的消息摘要。

MD5算法的计算速度比SHA-1算法快，而SHA-1算法的安全强度比MD5算法高。

(2) 加密算法

加密算法实现主要通过对称密钥系统，它使用相同的密钥对数据进行加密和解密。目前设备的IPsec实现三种加密算法：

l DES（Data Encryption Standard）：使用56bit的密钥对一个64bit的明文块进行加密。

l 3DES（Triple DES）：使用三个56bit的DES密钥（共168bit密钥）对明文进行加密。

l AES（Advanced Encryption Standard）：使用128bit、192bit或256bit密钥长度的AES算法对明文进行加密。

这三个加密算法的安全性由高到低依次是：AES、3DES、DES，安全性高的加密算法实现机制复杂，运算速度慢。对于普通的安全要求，DES算法就可以满足需要。

4. 协商方式

有如下两种协商方式建立SA：

l 手工方式（manual）配置比较复杂，创建SA所需的全部信息都必须手工配置，而且不支持一些高级特性（例如定时更新密钥），但优点是可以不依赖IKE而单独实现IPsec功能。

l IKE自动协商（isakmp）方式相对比较简单，只需要配置好IKE协商安全策略的信息，由IKE自动协商来创建和维护SA。

当与之进行通信的对等体设备数量较少时，或是在小型静态环境中，手工配置SA是可行的。对于中、大型的动态网络环境中，推荐使用IKE协商建立SA。

5. 安全隧道

安全隧道是建立在本端和对端之间可以互通的一个通道，它由一对或多对SA组成。

1.1.3 使用IPsec保护IPv6路由协议

使用IPsec保护IPv6路由协议是指，使用AH/ESP协议对IPv6路由协议报文进行加/解封装处理，并为其提供认证和加密的安全服务，目前支持OSPFv3、IPv6 BGP、RIPng路由协议。目前S3600V2-EI系列交换机支持IPsec保护的路由协议包括OSPFv3、IPv6 BGP和RIPng，S3600V2-SI系列交换机仅支持保护RIPng路由协议。

IPsec对IPv6路由协议报文进行保护的处理方式是基于业务的IPsec，即IPsec保护某一业务的所有报文。该方式下，设备产生的所有需要IPsec保护的IPv6路由协议报文都要被进行加封装处理，而设备接收到的不受IPsec保护的以及解封装（解密或验证）失败的IPv6路由协议报文都要被丢弃。

这种基于业务的IPsec既不需要ACL来限定要保护的流的范围，也不需要指定IPsec隧道的起点与终点，IPsec安全策略仅与具体的业务绑定，不管业务报文从设备的哪个接口发送出去都会被IPsec保护。

由于IPsec的密钥交换机制仅仅适用于两点之间的通信保护，在广播网络一对多的情形下，IPsec无法实现自动交换密钥，因此必须使用手工配置密钥的方式。同样，由于广播网络一对多的特性，要求各设备对于接收、发送的报文均使用相同的SA参数（相同的SPI及密钥）。因此，目前仅支持手工安全策略生成的SA对IPv6路由协议报文进行保护。

1.1.4 协议规范

与IPsec相关的协议规范有：

l RFC2401：Security Architecture for the Internet Protocol

l RFC2402：IP Authentication Header

l RFC2406：IP Encapsulating Security Payload

l RFC4552：Authentication/Confidentiality for OSPFv3


1.2 配置IPsec保护IPv6路由协议

使用IPsec安全策略建立IPsec安全隧道保护IPv6路由协议的基本配置思路如下：

(1) 配置安全提议：指定安全协议、认证算法和加密算法、封装模式等；

(2) 配置手工方式的安全策略：指定SA的SPI和密钥；

(3) 在路由协议上应用安全策略。

表1-1 IPsec保护IPv6路由协议配置任务简介

配置任务 | 说明 | 详细配置
配置安全提议 | 必选 | 1.2.2
配置手工方式的安全策略 | 必选 | 1.2.3
在路由协议上应用安全策略 | 必选 | 分别参考“三层技术-IP路由配置指导”中的“IPv6 BGP配置”（仅S3600V2-EI系列支持）、“OSPFv3配置”（仅S3600V2-EI系列支持）和“RIPng配置”

1.2.2 配置安全提议

安全提议是安全策略或者安全框架的一个组成部分，它用于保存IPsec需要使用的特定安全协议、加密/认证算法以及封装模式，为IPsec协商SA提供各种安全参数。

表1-2 配置安全提议

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
创建安全提议，并进入安全提议视图 |  | ipsec proposal proposal-name | 必选 缺省情况下，没有任何安全提议存在
配置安全提议采用的安全协议 |  | transform { ah | ah-esp | esp } | 可选 缺省情况下，采用ESP协议
配置安全算法 | 配置ESP协议采用的加密算法 | esp encryption-algorithm { 3des | aes [ key-length ] | des } | 可选 缺省情况下，ESP协议采用DES加密算法
 | 配置ESP协议采用的认证算法 | esp authentication-algorithm { md5 | sha1 } | 可选 缺省情况下，ESP协议采用MD5认证算法
 | 配置AH协议采用的认证算法 | ah authentication-algorithm { md5 | sha1 } | 可选 缺省情况下，AH协议采用MD5认证算法
配置安全协议对IP报文的封装形式 |  | encapsulation-mode { transport | tunnel } | 可选 缺省情况下，安全协议采用隧道模式对IP报文进行封装 传输模式必须应用于数据流的源地址和目的地址与安全隧道两端地址相同的情况下 若要配置应用于IPv6路由协议的手工安全策略，则该安全策略引用的安全提议仅支持传输模式的封装模式

l 可对安全提议进行修改，但对已协商成功的SA，新修改的安全提议并不起作用，即SA仍然使用原来的安全提议（除非使用 reset ipsec sa 命令重置），只有新协商的SA将使用新的安全提议。

l 只有选择了相应的安全协议后，该安全协议所需的安全算法才可配置。例如，如果使用 transform 命令选择了 esp，那么只有ESP所需的安全算法才可配置，而AH所需的安全算法则不能配置。ESP协议允许对报文同时进行加密和认证，或只加密，或只认证。

1.2.3 配置安全策略

安全策略规定了对什么样的数据流采用什么样的安全提议。一条安全策略由“名字”和“顺序号”共同唯一确定。

目前，设备仅支持手工安全策略：需要用户手工配置密钥、SPI等参数。

1. 配置准备

手工配置安全策略时，除完成该安全策略需要引用的访问控制列表及安全提议的配置之外，为保证SA的协商成功，安全隧道两端的配置必须符合以下要求：

l 安全策略引用的安全提议应采用相同的安全协议、安全算法和报文封装形式；

l 同一个范围内的，所有设备上的安全策略所引用的安全提议采用的安全协议、安全算法和报文封装形式要相同，而且所有设备上的SA的SPI及密钥均要保持一致。该范围与协议相关：对于OSPFv3，它是OSPFv3邻居之间或一个OSPFv3区域内；对于RIPng，它是RIPng直连邻居之间或一个RIPng进程内；对于IPv6 BGP，它是IPv6 BGP邻居之间或一个对等体组内。

l 两端SA使用的密钥应当以相同的方式输入。即，一端以字符串方式输入密钥，另一端必须也以字符串方式输入密钥。而且，任何一端出入方向的SA使用的密钥也应当以相同的方式输入。

2. 手工配置安全策略

表1-3 手工配置安全策略

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
用手工方式创建一条安全策略，并进入安全策略视图 |  | ipsec policy policy-name seq-number manual | 必选 缺省情况下，没有任何安全策略存在
配置安全策略所引用的安全提议 |  | proposal proposal-name | 必选 缺省情况下，安全策略没有引用任何安全提议
配置SA的安全参数索引参数 |  | sa spi { inbound | outbound } { ah | esp } spi-number | 必选
配置SA使用的密钥 | 配置AH协议的认证密钥（以16进制方式输入） | sa authentication-hex { inbound | outbound } ah hex-key | 二者必选其一
 | 配置AH协议的认证密钥（以字符串方式输入） | sa string-key { inbound | outbound } ah string-key
 | 配置ESP协议的认证密钥和加密密钥（以字符串方式输入） | sa string-key { inbound | outbound } esp string-key | 至少选其一 以字符串方式输入密钥时，系统会自动地同时生成认证算法的密钥和加密算法的密钥
 | 配置ESP协议的认证密钥（以16进制方式输入） | sa authentication-hex { inbound | outbound } esp hex-key
 | 配置ESP协议的加密密钥（以16进制方式输入） | sa encryption-hex { inbound | outbound } esp hex-key

l 通过手工方式建立SA，一条安全策略只能引用一个安全提议，并且如果已经引用了安全提议，必须先取消原先的安全提议才能引用新的安全提议。

l 如果先后以不同的方式输入了密钥，则最后设定的密钥有效。


1.3 IPsec显示和维护

在完成上述配置后，在任意视图下执行 display 命令可以显示配置后IPsec的运行情况，通过查看显示信息认证配置的效果。

在用户视图下执行 reset 命令可以清除IPsec统计信息。

表1-4 IPsec显示和维护

操作 | 命令
显示安全策略的信息 | display ipsec policy [ brief | name policy-name [ seq-number ] ] [ | { begin | exclude | include } regular-expression ]
显示安全提议的信息 | display ipsec proposal [ proposal-name ] [ | { begin | exclude | include } regular-expression ]
显示SA的相关信息 | display ipsec sa [ brief | policy policy-name [ seq-number ] ] [ | { begin | exclude | include } regular-expression ]
显示IPsec处理报文的统计信息 | display ipsec statistics [ | { begin | exclude | include } regular-expression ]
清除已经建立的SA | reset ipsec sa [ policy policy-name [ seq-number ] ]
清除IPsec的报文统计信息 | reset ipsec statistics


1.4 IPsec典型配置举例

1.4.1 配置IPsec保护RIPng报文

IPsec保护其它IPv6路由协议（仅S3600V2-EI系列支持的OSPFv3、IPv6 BGP）的具体配置与本例类似，具体内容请参考“三层技术-IP路由配置指导”中的“OSPFv3”和“IPv6 BGP”。

1. 组网需求

如 图1-2 所示，Switch A、Switch B和Switch C相连，并通过RIPng来学习网络中的IPv6路由信息。具体组网要求如下：

l 在各设备之间建立IPsec安全隧道，对它们收发的RIPng报文进行安全保护；

l 安全协议采用ESP协议，加密算法采用DES，认证算法采用SHA1-HMAC-96。

配置思路：

l 配置RIPng的基本功能

l 配置手工方式的IPsec安全策略

l 在RIPng进程下或接口上应用IPsec安全策略（进程下配置的IPsec安全策略对该进程的所有报文有效，接口下的IPsec安全策略只对接口下的报文有效）

2. 组网图

图1-2 配置IPsec保护RIPng报文组网图

3. 配置步骤

RIPng配置的详细介绍请参考“三层技术-IP路由配置指导”中的“RIPng”。

(1) 配置Switch A

l 配置各接口的IPv6地址（略）

l 配置RIPng的基本功能

<SwitchA> system-view

[SwitchA] ripng 1

[SwitchA-ripng-1] quit

[SwitchA] interface vlan-interface 100

[SwitchA-Vlan-interface100] ripng 1 enable

[SwitchA-Vlan-interface100] quit

l 配置IPsec安全策略

# 创建并配置名为tran1的安全提议（报文封装形式采用传输模式，安全协议采用ESP协议，加密算法采用DES，认证算法采用SHA1-HMAC-96）。

[SwitchA] ipsec proposal tran1

[SwitchA-ipsec-proposal-tran1] encapsulation-mode transport

[SwitchA-ipsec-proposal-tran1] transform esp

[SwitchA-ipsec-proposal-tran1] esp encryption-algorithm des

[SwitchA-ipsec-proposal-tran1] esp authentication-algorithm sha1

[SwitchA-ipsec-proposal-tran1] quit

# 创建并配置名为policy001的安全策略（协商方式为manual，出入方向SA的SPI均为123456，出入方向SA的密钥均为abcdefg）。

[SwitchA] ipsec policy policy001 10 manual

[SwitchA-ipsec-policy-manual-policy001-10] proposal tran1

[SwitchA-ipsec-policy-manual-policy001-10] sa spi outbound esp 123456

[SwitchA-ipsec-policy-manual-policy001-10] sa spi inbound esp 123456

[SwitchA-ipsec-policy-manual-policy001-10] sa string-key outbound esp abcdefg

[SwitchA-ipsec-policy-manual-policy001-10] sa string-key inbound esp abcdefg

[SwitchA-ipsec-policy-manual-policy001-10] quit

l 在RIPng进程上应用IPsec安全策略

[SwitchA] ripng 1

[SwitchA-ripng-1] enable ipsec-policy policy001

[SwitchA-ripng-1] quit

(2) 配置Switch B

l 配置各接口的IPv6地址（略）

l 配置RIPng的基本功能

<SwitchB> system-view

[SwitchB] ripng 1

[SwitchB-ripng-1] quit

[SwitchB] interface vlan-interface 200

[SwitchB-Vlan-interface200] ripng 1 enable

[SwitchB-Vlan-interface200] quit

[SwitchB] interface vlan-interface 100

[SwitchB-Vlan-interface100] ripng 1 enable

[SwitchB-Vlan-interface100] quit

l 配置IPsec安全策略

# 创建并配置名为tran1的安全提议（报文封装形式采用传输模式，安全协议采用ESP协议，加密算法采用DES，认证算法采用SHA1-HMAC-96）。

[SwitchB] ipsec proposal tran1

[SwitchB-ipsec-proposal-tran1] encapsulation-mode transport

[SwitchB-ipsec-proposal-tran1] transform esp

[SwitchB-ipsec-proposal-tran1] esp encryption-algorithm des

[SwitchB-ipsec-proposal-tran1] esp authentication-algorithm sha1

[SwitchB-ipsec-pr oposal-tran1] quit

# 创建并配置名为policy001的安全策略（协商方式为manual，出入方向SA的SPI均为123456，出入方向SA的密钥均为abcdefg）。

[SwitchB] ipsec policy policy001 10 manual

[SwitchB-ipsec-policy-manual-policy001-10] proposal tran1

[SwitchB-ipsec-policy-manual-policy001-10] sa spi outbound esp 123456

[SwitchB-ipsec-policy-manual-policy001-10] sa spi inbound esp 123456

[SwitchB-ipsec-policy-manual-policy001-10] sa string-key outbound esp abcdefg

[SwitchB-ipsec-policy-manual-policy001-10] sa string-key inbound esp abcdefg

[SwitchB-ipsec-policy-manual-policy001-10] quit

l 在RIPng进程上应用IPsec安全策略

[SwitchB] ripng 1

[SwitchB-ripng-1] enable ipsec-policy policy001

[SwitchB-ripng-1] quit

(3) 配置Switch C

l 配置各接口的IPv6地址（略）

l 配置RIPng的基本功能

<SwitchC> system-view

[SwitchC] ripng 1

[SwitchC-ripng-1] quit

[SwitchC] interface vlan-interface 200

[SwitchC-Vlan-interface200] ripng 1 enable

[SwitchC-Vlan-interface200] quit

l 配置IPsec安全策略

# 创建并配置名为tran1的安全提议（报文封装形式采用传输模式，安全协议采用ESP协议，加密算法采用DES，认证算法采用SHA1-HMAC-96）。

[SwitchC] ipsec proposal tran1

[SwitchC-ipsec-proposal-tran1] encapsulation-mode transport

[SwitchC-ipsec-proposal-tran1] transform esp

[SwitchC-ipsec-proposal-tran1] esp encryption-algorithm des

[SwitchC-ipsec-proposal-tran1] esp authentication-algorithm sha1

[SwitchC-ipsec-proposal-tran1] quit

# 创建并配置名为policy001的安全策略（协商方式为manual，出入方向SA的SPI均为123456，出入方向SA的密钥均为abcdefg）。

[SwitchC] ipsec policy policy001 10 manual

[SwitchC-ipsec-policy-manual-policy001-10] proposal tran1

[SwitchC-ipsec-policy-manual-policy001-10] sa spi outbound esp 123456

[SwitchC-ipsec-policy-manual-policy001-10] sa spi inbound esp 123456

[SwitchC-ipsec-policy-manual-policy001-10] sa string-key outbound esp abcdefg

[SwitchC-ipsec-policy-manual-policy001-10] sa string-key inbound esp abcdefg

[SwitchC-ipsec-policy-manual-policy001-10] quit

l 在RIPng进程上应用IPsec安全策略

[SwitchC] ripng 1

[SwitchC-ripng-1] enable ipsec-policy policy001

[SwitchC-ripng-1] quit

4. 验证配置结果

以上配置完成后，Switch A、Switch B和Switch C将通过RIPng协议学习到网络中的IPv6路由信息，且分别产生用于保护RIPng报文的SA。

可以通过如下 display 命令查看Switch A上RIPng的配置信息。如下显示信息表示RIPng进程1上已成功应用了IPsec策略，且携带了有效的SPI值。

<SwitchA> display ripng 1

RIPng process : 1

Preference : 100

Checkzero : Enabled

Default Cost : 0

Maximum number of balanced paths : 8

Update time : 30 sec(s) Timeout time : 180 sec(s)

Suppress time : 120 sec(s) Garbage-Collect time : 120 sec(s)

Number of periodic updates sent : 186

Number of trigger updates sent : 1

IPsec policy name: policy001, SPI: 123456

可以通过如下 display 命令查看Switch A上生成的SA。

<SwitchA> display ipsec sa

===============================

Protocol: RIPng

===============================

-----------------------------

IPsec policy name: "policy001"

sequence number: 10

mode: manual

-----------------------------

connection id: 1

encapsulation mode: transport

perfect forward secrecy:

tunnel:

flow:

[inbound ESP SAs]

spi: 123456 (0x3039)

proposal: ESP-ENCRYPT-DES ESP-AUTH-SHA1

No duration limit for this sa

[outbound ESP SAs]

spi: 123456 (0x3039)

proposal: ESP-ENCRYPT-DES ESP-AUTH-SHA1

No duration limit for this sa

Switch B和Switch C上也会生成相应的SA来保护RIPng报文，查看方式与Switch A同，此处略。


1 SSH2.0配置

相关链接

  • 1.1 SSH2.0简介
  • 1.2 配置设备作为SSH服务器
  • 1.3 配置设备作为SSH客户端
  • 1.4 SSH协议显示和维护
  • 1.5 设备作为SSH服务器配置举例
  • 1.6 设备作为SSH客户端配置举例
父主题： 12-SSH2.0配置


1.1 SSH2.0简介

1.1.1 概述

SSH是Secure Shell（安全外壳）的简称。用户通过一个不能保证安全的网络环境远程登录到设备时，SSH可以利用加密和强大的认证功能提供安全保障，保护设备不受诸如IP地址欺诈、明文密码截取等攻击。

设备支持SSH服务器功能，可以接受多个SSH客户端的连接。同时，设备还支持SSH客户端功能，允许用户与支持SSH服务器功能的设备建立SSH连接，从而实现从本地设备通过SSH登录到远程设备上。

l 目前，设备作为SSH服务器时，支持SSH2和SSH1两个版本；设备作为SSH客户端时，只支持SSH2版本。

l 如无特殊说明，文中的SSH均指SSH2。

1.1.2 SSH工作过程

在整个通讯过程中，为实现SSH的安全连接，服务器端与客户端要经历如下五个阶段：

表1-1 SSH服务器端与客户端建立连接的五个阶段

阶段 | 说明 | 详细内容
版本号协商阶段 | SSH目前包括SSH1和SSH2两个版本，双方通过版本协商确定使用的版本 | 1.1.2 1.
密钥和算法协商阶段 | SSH支持多种算法，双方根据本端和对端支持的算法，协商出最终使用的算法，并通过DH交换，生成相同的会话密钥和会话ID | 1.1.2 2.
认证阶段 | SSH客户端向服务器端发起认证请求，服务器端对客户端进行认证 | 1.1.2 3.
会话请求阶段 | 认证通过后，SSH客户端向服务器端发送会话请求 | 1.1.2 4.
交互会话阶段 | 会话请求通过后，SSH服务器端和客户端进行信息的交互 | 1.1.2 5.

1. 版本号协商阶段

具体步骤如下：

(1) 服务器打开端口22，等待客户端连接。

(2) 客户端向服务器端发起TCP初始连接请求。

(3) TCP连接建立后，服务器向客户端发送第一个报文，包括版本标志字符串，格式为“SSH-<主协议版本号>.<次协议版本号>-<软件版本号>”，协议版本号由主版本号和次版本号组成，软件版本号主要是为调试使用。

(4) 客户端收到报文后，首先解析该数据包，通过与服务器端的协议版本号进行对比，决定要使用的协议版本号。如果服务器端的协议版本号比自己的低，且客户端能支持服务器端的低版本，就使用服务器端的低版本协议号，否则使用自己的协议版本号。然后，客户端回应服务器一个报文，包含了客户端决定使用的协议版本号。

(5) 服务器比较客户端发来的版本号，如果服务器支持该版本，则使用该版本，并进入密钥和算法协商阶段，否则，版本协商失败，服务器端断开TCP连接。

上述报文都是采用明文方式传输的。

2. 密钥和算法协商阶段

具体步骤如下：

(1) 服务器端和客户端分别发送算法协商报文给对端，报文中包含自己支持的公钥算法列表、加密算法列表、MAC（Message Authentication Code，消息验证码）算法列表、压缩算法列表等。

(2) 服务器端和客户端根据对端和本端支持的算法列表得出最终使用的算法。任何一种算法协商失败，都会导致服务器端和客户端的算法协商过程失败，服务器将断开与客户端的连接。

(3) 服务器端和客户端利用DH交换（Diffie-Hellman Exchange）算法、主机密钥对等参数，生成会话密钥和会话ID，并完成客户端对服务器身份的验证。

通过以上步骤，服务器端和客户端就取得了相同的会话密钥和会话ID。对于后续传输的数据，两端都会使用会话密钥进行加密和解密，保证了数据传送的安全。会话ID用来标识一个SSH连接，在认证阶段，会话ID还会用于两端的认证过程。

在密钥和算法协商阶段之前，服务器端需要生成DSA或RSA密钥对，他们不仅用于生成会话密钥和会话ID，还用于客户端验证服务器身份。DSA和RSA密钥对的详细介绍请参见“安全配置指导”中的“公钥管理”。

3. 认证阶段

SSH提供两种认证方法：

l password认证：利用AAA（Authentication、Authorization、Accounting，认证、授权和计费）对客户端身份进行认证。客户端向服务器发出password认证请求，将用户名和密码加密后发送给服务器；服务器将该信息解密后得到用户名和密码的明文，通过本地认证或远程认证验证用户名和密码的合法性，并返回认证成功或失败的消息。如果远程认证服务器要求用户进行二次密码认证，则会在发送给服务器端的认证回应消息中携带一个提示信息，该提示信息被服务器端透传给客户端，由客户端输出并要求用户再次输入一个指定类型的密码，当用户提交正确的密码并成功通过认证服务器的验证后，服务器端才会返回认证成功的消息。

l publickey认证：采用数字签名的方法来认证客户端。目前，设备上可以利用DSA和RSA两种公钥算法实现数字签名。客户端发送包含用户名、公钥和公钥算法的publickey认证请求给服务器端。服务器对公钥进行合法性检查，如果不合法，则直接发送失败消息；否则，服务器利用数字签名对客户端进行认证，并返回认证成功或失败的消息。

对于SSH2，除了上述两种认证方法外，还提供了password-publickey认证和any认证：

l password-publickey认证：指定客户端版本为SSH2的用户认证方式为必须同时进行password和publickey两种认证；客户端版本为SSH1的用户认证方式为只要进行其中一种认证即可。

l any认证：不指定用户的认证方式，用户既可以采用password认证，也可以采用publickey认证。

认证阶段的具体步骤如下：

l 客户端向服务器端发送认证请求，认证请求中包含用户名、认证方法（password认证或publickey认证）、与该认证方法相关的内容（如：password认证时，内容为密码）。

l 服务器端对客户端进行认证，如果认证失败，则向客户端发送认证失败消息，其中包含可以再次认证的方法列表。

l 客户端从认证方法列表中选取一种认证方法再次进行认证。

l 该过程反复进行，直到认证成功或者认证次数达到上限，服务器关闭连接为止。

设备作为SSH服务器发起的二次密码认证，仅SSH2及以后版本的SSH客户端才能支持。

4. 会话请求阶段

认证通过后，客户端向服务器发送会话请求。服务器等待并处理客户端的请求。请求被成功处理后，服务器会向客户端回应SSH_SMSG_SUCCESS包，SSH进入交互会话阶段；否则回应SSH_SMSG_FAILURE包，表示服务器处理请求失败或者不能识别请求。

5. 交互会话阶段

会话请求成功后，连接进入交互会话阶段。在这个阶段，数据被双向传送。客户端将要执行的命令加密后传给服务器，服务器接收到报文，解密后执行该命令，将执行的结果加密发送给客户端，客户端将接收到的结果解密后显示到终端上。

l 交互会话阶段，用户在客户端可以通过粘贴文本会话的方式执行命令，但文本会话不能超过2000字节，且粘贴的命令最好是同一视图下的命令，否则服务器可能无法正确执行该命令。

l 如果粘贴的文本会话超过2000字节，可以采用将配置文件通过SFTP（Secure FTP，安全的FTP）方式上传到服务器，利用新的配置文件重新启动的方式执行这些命令。

1.1.3 SSH支持VPN多实例

通过SSH连接支持VPN多实例功能，可实现设备作为SSH客户端时，与位于MPLS VPN中的SSH服务器之间建立连接。

如下图所示，私网VPN 1和VPN 2中的用户通过PE接入MPLS骨干网，各VPN之间的业务相互隔离。在PE设备上开启SSH客户端功能后，通过MPLS VPN功能和SSH连接支持VPN多实例功能，可以对各VPN中开启SSH服务器功能的CE设备进行访问，实现从PE设备到CE设备的安全登录和日志文件传输等功能。

图1-1 SSH支持VPN多实例组网应用图


1.2 配置设备作为SSH服务器

1.2.1 SSH服务器配置任务简介

表1-2 SSH服务器配置任务简介

配置任务 | 说明 | 详细配置
生成DSA或RSA密钥 | 必选 | 1.2.2
使能SSH服务器功能 | 必选 | 1.2.3
配置SSH客户端登录时的用户界面 | 必选 | 1.2.4
配置客户端的公钥 | 对于采用publickey认证的SSH用户为必选 对于采用password认证的SSH用户为可选 | 1.2.5
配置SSH用户并指定服务类型和认证方式 | 可选 | 1.2.6
配置服务器上的SSH管理功能 | 可选 | 1.2.7

1.2.2 生成DSA或RSA密钥

服务器端的DSA或RSA密钥对，用于在密钥和算法协商阶段生成会话密钥和会话ID，以及客户端认证服务器。

表1-3 生成DSA或RSA密钥

操作 | 命令 | 说明
进入系统视图 | system-view | -
生成本地DSA或RSA密钥对 | public-key local create { dsa | rsa } | 必选 缺省情况下，不存在任何DSA和RSA密钥对

l public-key local create 命令的详细介绍请参见“安全命令参考”中的“公钥管理”。

l 虽然一个客户端只会采用DSA和RSA公钥算法中的一种来认证服务器，但是由于不同客户端支持的公钥算法不同，为了确保客户端能够成功登录服务器，建议在服务器上生成DSA和RSA两种密钥对。

l 通过 public-key local create rsa 命令生成RSA密钥对时，将同时生成两个密钥对——服务器密钥对和主机密钥对，二者都包括一个公钥和一个私钥。SSH1中利用SSH服务器端的服务器公钥加密会话密钥，以保证会话密钥传输的安全；SSH2中通过DH算法在SSH服务器和SSH客户端上生成会话密钥，不需要传输会话密钥，因此SSH2中没有利用服务器密钥对。

l RSA服务器密钥和主机密钥模数的最小长度为512位，最大长度为2048位。在SSH2中，有些客户端要求服务器端生成的密钥长度必须大于或等于768位。

l 通过 public-key local create dsa 命令生成DSA密钥对时，只生成一个主机密钥对。SSH1中不支持DSA算法。

l DSA主机密钥模数的最小长度为512位，最大长度为2048位。在SSH2中，有些客户端要求服务器端生成的密钥长度必须大于或等于768位。

1.2.3 使能SSH服务器功能

表1-4 使能SSH服务器功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
使能SSH服务器功能 | ssh server enable | 必选 缺省情况下，SSH服务器功能处于关闭状态

1.2.4 配置SSH客户端登录时的用户界面

SSH客户端通过VTY用户界面访问设备。因此，需要配置SSH客户端登录时采用的VTY用户界面，使其支持SSH远程登录协议。配置结果在客户端下次请求登录时生效。

表1-5 配置SSH客户端登录时的用户界面

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入一个或多个VTY用户界面视图 | user-interface vty number [ ending-number ] | -
配置登录用户界面的认证方式为 scheme 方式 | authentication-mode scheme | 必选 缺省情况下，用户界面认证为 password 方式
配置所在用户界面支持SSH协议 | protocol inbound { all | ssh } | 可选 缺省情况下，系统支持所有的协议，即支持Telnet和SSH

l authentication-mode 命令和 protocol inbound 命令的详细介绍，请参见“基础配置命令参考”中的“登录设备”。

l 如果在该用户界面上配置支持的协议是SSH，为确保配置成功，请务必配置登录用户界面的认证方式为 authentication-mode scheme（采用AAA认证）。

l 如果某用户界面已经配置成支持SSH协议，则无法更改用户界面的认证方式，除非先取消用户界面支持SSH协议。

1.2.5 配置客户端的公钥

本配置适用于采用publickey认证的SSH用户，采用password认证的SSH用户，不必进行本配置。

如果SSH用户采用publickey认证方式登录服务器，则需要在服务器端配置客户端的DSA或RSA主机公钥，并在客户端为该SSH用户指定与主机公钥对应的DSA或RSA主机私钥，以便服务器端采用数字签名对客户端进行验证。

服务器端可以通过手工配置和从公钥文件中导入两种方式来配置客户端的公钥：

l 手工配置客户端的公钥：采用手工输入或拷贝粘贴的方式将客户端的公钥配置到服务器上。这种方式要求手工输入或拷贝粘贴的主机公钥必须是未经转换的DER（Distinguished Encoding Rules，特异编码规则）公钥编码格式。

l 从公钥文件中导入客户端的公钥：自动将客户端公钥文件中的客户端公钥转换为PKCS（Public Key Cryptography Standards，公共密钥加密标准）编码的形式导入到服务器上。这种方式需要事先将客户端的公钥文件通过FTP/TFTP以二进制（binary）方式传输到服务器上。

建议选用从公钥文件导入的方式配置客户端公钥。

表1-6 手工配置客户端的公钥

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入公钥视图 | public-key peer keyname | -
进入公钥编辑视图 | public-key-code begin | -
配置客户端的公钥 | 直接输入公钥内容 | 必选 在输入公钥内容时，字符之间可以有空格，也可以按回车键继续输入数据
退回公钥视图，并保存配置的主机公钥 | public-key-code end | - 退出公钥编辑视图时，系统自动保存配置的公钥密钥
退回系统视图 | peer-public-key end | -

表1-7 从公钥文件中导入客户端的公钥

操作 | 命令 | 说明
进入系统视图 | system-view | -
从公钥文件中导入SSH用户的公钥 | public-key peer keyname import sshkey filename | 必选

关于客户端的公钥的配置介绍，请参见“安全配置指导”中的“公钥管理”。

1.2.6 配置SSH用户并指定服务类型和认证方式

l 对于使用publickey认证方式登录设备的用户，必须在设备上创建相应的SSH用户、并指定服务器类型、认证方式以及客户端的公钥。

l 对于使用password认证方式登录设备的用户，用户的账号信息配置在设备或者远程认证服务器（如RADIUS服务器）上（前者适用于本地认证，后者适用于远程认证），并不要求在设备上通过本配置创建相应的SSH用户。如果创建了相应的SSH用户，则必须保证该服务类型以及认证方式正确。关于本地及远程认证的相关配置请参见“安全配置指导”中的“AAA”。

通过本配置，可以在创建SSH用户的同时，指定SSH用户的服务类型和认证方式：

l 服务类型：Stelnet和SFTP。Stelnet即Secure Telnet，安全的Stelnet，详细内容请参见“ 2.1 SFTP简介 ”。

l 认证方式：password认证、publickey认证、password-publickey认证、any认证。

表1-8 配置SSH用户并指定服务类型和认证方式

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
创建SSH用户，并指定SSH用户的服务类型和认证方式 | SSH用户的服务类型为 stelnet | ssh user username service-type stelnet authentication-type { password | { any | password-publickey | publickey } assign publickey keyname } | 二者必选其一
 | SSH用户的服务类型为 all 或 sftp | ssh user username service-type { all | sftp } authentication-type { password | { any | password-publickey | publickey } assign publickey keyname work-directory directory-name }

l 对于AAA用户，即使没有创建对应的SSH用户，只要能够通过AAA认证，且设置的服务类型为SSH，则该用户仍然可以通过password认证方式，使用Stelnet或SFTP登录服务器。

l 进行SFTP登录时，必须设置用户的服务类型为 sftp 或者 all。

l SSH1不支持服务类型 sftp。如果客户端采用SSH1版本登录服务器，则必须在服务器上配置服务类型为 stelnet 或者 all。否则，客户端无法登录服务器。

l SFTP用户登录时使用的工作目录与用户使用的认证方式有关。只采用publickey认证方式的用户，使用的工作目录为通过 ssh user 命令为该用户设置的工作目录；只采用password认证方式的用户，使用的工作目录为通过AAA授权的工作目录；同时采用publickey和password两种认证方式的用户，使用的工作目录为通过 ssh user 命令为该用户设置的工作目录。

l 配置的认证方式和用户公钥，对于已经登录的SSH用户不会生效，只在SSH用户下次登录时生效。

l 使用publickey认证方式的用户登录服务器后，可以访问的命令级别为在用户界面上通过 user privilege level 命令配置的级别。

l 使用password认证方式的用户登录服务器后，用户可以访问的命令级别由AAA来授权。

1.2.7 配置服务器上的SSH管理功能

SSH的管理功能包括：

l 设置SSH服务器是否兼容SSH1版本的客户端

l 设置RSA服务器密钥对的更新时间，此配置仅对SSH客户端版本为SSH1的用户有效

l 设置SSH用户认证的超时时间

l 设置SSH用户请求连接的认证尝试次数

通过定时更新服务器密钥以及对用户认证时间、认证次数的限制，可以防止恶意地对密钥和用户名的猜测和破解，从而提高了SSH连接的安全性。

表1-9 配置服务器上的SSH管理功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
设置SSH服务器兼容SSH1版本的客户端 | ssh server compatible-ssh1x enable | 可选 缺省情况下，SSH服务器兼容SSH1版本的客户端
设置RSA服务器密钥对的更新时间 | ssh server rekey-interval hours | 可选 缺省情况下，系统不更新RSA服务器密钥对
设置SSH用户的认证超时时间 | ssh server authentication-timeout time-out-value | 可选 缺省情况下，SSH用户的认证超时时间为60秒
设置SSH认证尝试的最大次数 | ssh server authentication-retries times | 可选 缺省情况下，SSH连接认证尝试的最大次数为3次

SSH客户端通过publickey和password两种方式进行认证尝试的次数总和，不能超过ssh server authentication-retries命令配置的SSH连接认证尝试次数，否则，客户端认证失败，无法登录SSH服务器。


1.3 配置设备作为SSH客户端

1.3.1 SSH客户端配置任务简介

表1-10 SSH客户端配置任务简介

配置任务 | 说明 | 详细配置
为SSH客户端指定源IP地址或源接口 | 可选 | 1.3.2
配置SSH客户端是否支持首次认证 | 可选 | 1.3.3
建立SSH客户端和服务器端的连接 | 必选 | 1.3.4

1.3.2 为SSH客户端指定源IP地址或源接口

用户可以通过以下配置，为SSH客户端指定源IP地址或者源接口，这样客户端可以用指定的IP地址或接口地址访问SSH服务器，增加了业务的可管理性。

表1-11 为SSH客户端指定源IP地址或源接口

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
为SSH客户端指定源IP地址或源接口 | 为SSH客户端指定源IPv4地址或源接口 | ssh client source { ip ip-address | interface interface-type interface-number } | 二者必选其一 缺省情况下，客户端用设备路由指定的接口地址访问SSH服务器
 | 为SSH客户端指定源IPv6地址或源接口 | ssh client ipv6 source { ipv6 ipv6-address | interface interface-type interface-number }

1.3.3 配置SSH客户端是否支持首次认证

当设备作为SSH客户端和服务器端连接时，可以设置SSH客户端对访问的SSH服务器是否进行首次认证。

l 如果支持首次认证，则当SSH客户端首次访问服务器，而客户端没有配置服务器端的主机公钥时，用户可以选择继续访问该服务器，并在客户端保存该主机公钥；当用户下次访问该服务器时，就以保存的主机公钥来认证该服务器。

l 如果不支持首次认证，则当客户端没有配置服务器端的主机公钥时，客户端将拒绝访问该服务器。用户必须事先将要访问的服务器端的主机公钥配置在本地，同时指定要连接的服务器端的主机公钥名称，以便客户端对连接的服务器进行认证。

1. 配置SSH客户端支持首次认证

表1-12 配置SSH客户端支持首次认证

操作 | 命令 | 说明
进入系统视图 | system-view | -
设置SSH客户端对访问的SSH服务器进行首次认证 | ssh client first-time enable | 可选 缺省情况下，客户端进行首次认证

2. 配置SSH客户端不支持首次认证

如果配置SSH客户端不支持首次认证，则需要在客户端配置服务器端的主机公钥，并为要连接的服务器指定主机公钥名称，

表1-13 配置SSH客户端不支持首次认证

操作 | 命令 | 说明
进入系统视图 | system-view | -
设置SSH客户端对访问的SSH服务器不进行首次认证 | undo ssh client first-time | 必选 缺省情况下，客户端进行首次认证
配置服务器端的主机公钥 | 请参见“1.2.5 配置客户端的公钥” | 必选 在客户端配置服务器端主机公钥的方法，与在服务器端配置客户端公钥的方法相同
在客户端上指定要连接的服务器端的主机公钥名称 | ssh client authentication server server assign publickey keyname | 必选

1.3.4 建立SSH客户端和服务器端的连接

表1-14 建立SSH客户端和服务器端的连接

操作 |  | 命令 | 说明
建立SSH客户端和服务器端的连接，并指定公钥算法、客户端和服务器的首选加密算法、首选HMAC算法和首选密钥交换算法 | 建立SSH客户端和IPv4服务器端的连接，并指定公钥算法、客户端和服务器的首选加密算法、首选HMAC算法和首选密钥交换算法 | ssh2 server [ port-number ] [ vpn-instance vpn-instance-name ] [ identity-key { dsa | rsa } | prefer-ctos-cipher { 3des | aes128 | des } | prefer-ctos-hmac { md5 | md5-96 | sha1 | sha1-96 } | prefer-kex { dh-group-exchange | dh-group1 | dh-group14 } | prefer-stoc-cipher { 3des | aes128 | des } | prefer-stoc-hmac { md5 | md5-96 | sha1 | sha1-96 } ] * | 二者必选其一 必须在用户视图下执行本命令
 | 建立SSH客户端和IPv6服务器端的连接，并指定公钥算法、客户端和服务器的首选加密算法、首选HMAC算法和首选密钥交换算法 | ssh2 ipv6 server [ port-number ] [ vpn-instance vpn-instance-name ] [ identity-key { dsa | rsa } | prefer-ctos-cipher { 3des | aes128 | des } | prefer-ctos-hmac { md5 | md5-96 | sha1 | sha1-96 } | prefer-kex { dh-group-exchange | dh-group1 | dh-group14 } | prefer-stoc-cipher { 3des | aes128 | des } | prefer-stoc-hmac { md5 | md5-96 | sha1 | sha1-96 } ] *


1.4 SSH协议显示和维护

在完成上述配置后，在任意视图下执行 display 命令，可以显示配置后SSH的运行情况，通过查看显示信息，验证配置的效果。

表1-15 SSH协议显示和维护

操作 | 命令
显示当前为SFTP客户端设置的源IP地址或者源接口 | display sftp client source [ | { begin | exclude | include } regular-expression ]
显示当前为SSH客户端设置的源IP地址或者源接口 | display ssh client source [ | { begin | exclude | include } regular-expression ]
在SSH服务器端显示该服务器的状态信息或会话信息 | display ssh server { status | session } [ | { begin | exclude | include } regular-expression ]
在SSH客户端显示客户端保存的服务器端的主机公钥和服务器的对应关系 | display ssh server-info [ | { begin | exclude | include } regular-expression ]
在SSH服务器端显示SSH用户信息 | display ssh user-information [ username ] [ | { begin | exclude | include } regular-expression ]
显示本地密钥对中的公钥部分 | display public-key local { dsa | rsa } public [ | { begin | exclude | include } regular-expression ]
显示保存在本地的远端主机的公钥信息 | display public-key peer [ brief | name publickey-name ] [ | { begin | exclude | include } regular-expression ]

display public-key local和display public-key peer命令的详细介绍请参见“安全 命令参考”中的“公钥配置”。


1.5 设备作为SSH服务器配置举例

1.5.1 password认证配置举例

1. 组网需求

如图1-2，配置Host（SSH客户端）与Switch建立本地连接。Host采用SSH协议登录到Switch上，以保证数据信息交换的安全。SSH用户采用的认证方式为password认证，用户名和密码保存在Switch上。

2. 组网图

图1-2 SSH password认证配置组网图

3. 配置步骤

(1) 配置SSH服务器

# 生成RSA密钥对。

<Switch> system-view

[Switch] public-key local create rsa

The range of public key size is (512 ~ 2048).

NOTES: If the key modulus is greater than 512,

It will take a few minutes.

Press CTRL+C to abort.

Input the bits of the modulus[default = 1024]:

Generating Keys...

++++++++

++++++++++++++

+++++

++++++++

# 生成DSA密钥对。

[Switch] public-key local create dsa

The range of public key size is (512 ~ 2048).

NOTES: If the key modulus is greater than 512,

It will take a few minutes.

Press CTRL+C to abort.

Input the bits of the modulus[default = 1024]:

Generating Keys...

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

+++++++++++++++++++++++++++++++++++

# 启动SSH服务器。

[Switch] ssh server enable

# 配置VLAN接口1的IP地址，客户端将通过该地址连接SSH服务器。

[Switch] interface vlan-interface 1

[Switch-Vlan-interface1] ip address 192.168.1.40 255.255.255.0

[Switch-Vlan-interface1] quit

# 设置SSH客户端登录用户界面的认证方式为AAA认证。

[Switch] user-interface vty 0 4

[Switch-ui-vty0-4] authentication-mode scheme

# 设置Switch上远程用户登录协议为SSH。

[Switch-ui-vty0-4] protocol inbound ssh

[Switch-ui-vty0-4] quit

# 创建本地用户client001，并设置用户访问的命令级别为3。

[Switch] local-user client001

[Switch-luser-client001] password simple aabbcc

[Switch-luser-client001] service-type ssh

[Switch-luser-client001] authorization-attribute level 3

[Switch-luser-client001] quit

# 配置SSH用户client001的服务类型为Stelnet，认证方式为password认证。（此步骤可以不配置）

[Switch] ssh user client001 service-type stelnet authentication-type password

(2) SSH客户端建立与SSH服务器的连接

SSH客户端软件有很多，例如PuTTY、OpenSSH等。本文中仅以客户端软件PuTTY0.58为例，说明SSH客户端的配置方法。

# 建立与SSH服务器端的连接。

打开PuTTY.exe程序，出现如图1-3 所示的客户端配置界面。在“Host Name（or IP address）”文本框中输入SSH服务器的IP地址为192.168.1.40。

图1-3 SSH客户端配置界面（1）

在图1-3 中，单击<Open>按钮。按提示输入用户名client001及密码aabbcc，即可进入Switch的配置界面。

1.5.2 publickey认证配置举例

1. 组网需求

如图1-4，配置Host（SSH客户端）与Switch建立本地连接。Host采用SSH协议登录到Switch上，以保证数据信息交换的安全。SSH用户采用的认证方式为publickey认证，公钥算法为RSA。

2. 组网图

图1-4 SSH publickey配置组网图

3. 配置步骤

在服务器的配置过程中需要指定客户端的公钥信息，因此建议首先完成客户端密钥对的配置，再进行服务器的配置。

(1) 配置SSH客户端

# 生成RSA密钥对。

在客户端运行PuTTYGen.exe，在参数栏中选择“SSH-2 RSA”，点击<Generate>，产生客户端密钥对。

图1-5 生成客户端密钥（1）

在产生密钥对的过程中需不停的移动鼠标，鼠标移动仅限于下图蓝色框中除绿色标记进程条外的地方，否则进程条的显示会不动，密钥对将停止产生，见图1-6。

图1-6 生成客户端密钥（2）

密钥对产生后，点击<Save public key>，输入存储公钥的文件名key.pub，点击<保存>按钮。

图1-7 生成客户端密钥（3）

点击<Save private key>存储私钥，弹出警告框，提醒是否保存没做任何保护措施的私钥，点击<Yes>，输入私钥文件名为private.ppk，点击保存。

图1-8 生成客户端密钥（4）

客户端生成密钥对后，需要将保存的公钥文件key.pub通过FTP/TFTP方式上传到服务器。

(2) 配置SSH服务器

# 生成RSA密钥对。

<Switch> system-view

[Switch] public-key local create rsa

The range of public key size is (512 ~ 2048).

NOTES: If the key modulus is greater than 512,

It will take a few minutes.

Press CTRL+C to abort.

Input the bits of the modulus[default = 1024]:

Generating Keys...

++++++++

++++++++++++++

+++++

++++++++

# 生成DSA密钥对。

[Switch] public-key local create dsa

The range of public key size is (512 ~ 2048).

NOTES: If the key modulus is greater than 512,

It will take a few minutes.

Press CTRL+C to abort.

Input the bits of the modulus[default = 1024]:

Generating Keys...

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

+++++++++++++++++++++++++++++++++++

# 启动SSH服务器。

[Switch] ssh server enable

# 配置VLAN接口1的IP地址，客户端将通过该地址连接SSH服务器。

[Switch] interface vlan-interface 1

[Switch-Vlan-interface1] ip address 192.168.1.40 255.255.255.0

[Switch-Vlan-interface1] quit

# 设置用户接口上认证模式为AAA认证。

[Switch] user-interface vty 0 4

[Switch-ui-vty0-4] authentication-mode scheme

# 设置Switch上远程用户登录协议为SSH。

[Switch-ui-vty0-4] protocol inbound ssh

# 设置用户能访问的命令级别为3。

[Switch-ui-vty0-4] user privilege level 3

[Switch-ui-vty0-4] quit

# 从文件key.pub中导入远端的公钥，并命名为Switch001。

[Switch] public-key peer Switch001 import sshkey key.pub

# 设置SSH用户client002的认证方式为publickey，并指定公钥为Switch001。

[Switch] ssh user client002 service-type stelnet authentication-type publickey assign publickey Switch001

(3) SSH客户端建立与SSH服务器的连接

# 指定私钥文件，并建立与SSH服务器的连接。

打开PuTTY.exe程序，出现如图1-9 所示的客户端配置界面。在“Host Name（or IP address）”文本框中输入SSH服务器的IP地址为192.168.1.40。

图1-9 SSH客户端配置界面（1）

单击左侧导航栏“Connection->SSH”下面的“Auth”（认证），出现如图1-10 的界面。单击<Browse…>按钮，弹出文件选择窗口。选择与配置到服务器端的公钥对应的私钥文件private.ppk。

图1-10 SSH客户端配置界面（2）

如图1-10，单击<Open>按钮。按提示输入用户名client002，即可进入Switch的配置界面。


1.6 设备作为SSH客户端配置举例

1.6.1 password认证配置举例

1. 组网需求

如图1-11，配置Switch A作为客户端，采用SSH协议登录到Switch B上。SSH用户采用的认证方式为password认证，用户名为client001，密码为aabbcc。

2. 组网图

图1-11 设备作为SSH客户端配置组网图

3. 配置步骤

(1) 配置SSH服务器

# 生成RSA密钥对。

<SwitchB> system-view

[SwitchB] public-key local create rsa

The range of public key size is (512 ~ 2048).

NOTES: If the key modulus is greater than 512,

It will take a few minutes.

Press CTRL+C to abort.

Input the bits of the modulus[default = 1024]:

Generating Keys...

++++++++

++++++++++++++

+++++

++++++++

# 生成DSA密钥对。

[SwitchB] public-key local create dsa

The range of public key size is (512 ~ 2048).

NOTES: If the key modulus is greater than 512,

It will take a few minutes.

Press CTRL+C to abort.

Input the bits of the modulus[default = 1024]:

Generating Keys...

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

+++++++++++++++++++++++++++++++++++

# 启动SSH服务器。

[SwitchB] ssh server enable

# 配置VLAN接口1的IP地址，客户端将通过该地址连接SSH服务器。

[SwitchB] interface vlan-interface 1

[SwitchB-Vlan-interface1] ip address 10.165.87.136 255.255.255.0

[SwitchB-Vlan-interface1] quit

# 设置SSH客户端登录用户界面的认证方式为AAA认证。

[SwitchB] user-interface vty 0 4

[SwitchB-ui-vty0-4] authentication-mode scheme

# 设置Switch B上远程用户登录协议为SSH。

[SwitchB-ui-vty0-4] protocol inbound ssh

[SwitchB-ui-vty0-4] quit

# 创建本地用户client001。

[SwitchB] local-user client001

[SwitchB-luser-client001] password simple aabbcc

[SwitchB-luser-client001] service-type ssh

[SwitchB-luser-client001] authorization-attribute level 3

[SwitchB-luser-client001] quit

# 配置SSH用户client001的服务类型为Stelnet，认证方式为password认证。（此步骤可以不配置）

[SwitchB] ssh user client001 service-type stelnet authentication-type password

(2) SSH客户端建立与SSH服务器的连接

# 配置VLAN接口1的IP地址。

<SwitchA> system-view

[SwitchA] interface vlan-interface 1

[SwitchA-Vlan-interface1] ip address 10.165.87.137 255.255.255.0

[SwitchA-Vlan-interface1] quit

[SwitchA] quit

l 如果客户端支持首次认证，则可以直接与服务器建立连接。

# 建立到服务器10.165.87.136的SSH连接。

<SwitchA> ssh2 10.165.87.136

Username: client001

Trying 10.165.87.136 ...

Press CTRL+K to abort

Connected to 10.165.87.136 ...

The Server is not authenticated. Continue? [Y/N]:y

Do you want to save the server public key? [Y/N]:n

Enter password:

输入正确的密码之后，即可成功登录到Switch B上。

l 如果客户端不支持首次认证，则需要进行如下配置。

# 配置客户端对服务器不进行首次认证。

[SwitchA] undo ssh client first-time

# 在客户端配置SSH服务器端的主机公钥。在公钥编辑视图输入服务器端的主机公钥，即在服务器端通过 display public-key local dsa public 命令显示的公钥内容。

[SwitchA] public-key peer key1

[SwitchA-pkey-public-key] public-key-code begin

[SwitchA-pkey-key-code]308201B73082012C06072A8648CE3804013082011F0281810

0D757262C4584C44C211F18BD96E5F0

[SwitchA-pkey-key-code]61C4F0A423F7FE6B6B85B34CEF72CE14A0D3A5222FE08CECE

65BE6C265854889DC1EDBD13EC8B274

[SwitchA-pkey-key-code]DA9F75BA26CCB987723602787E922BA84421F22C3C89CB9B0

6FD60FE01941DDD77FE6B12893DA76E

[SwitchA-pkey-key-code]EBC1D128D97F0678D7722B5341C8506F358214B16A2FAC4B3

68950387811C7DA33021500C773218C

[SwitchA-pkey-key-code]737EC8EE993B4F2DED30F48EDACE915F0281810082269009E

14EC474BAF2932E69D3B1F18517AD95

[SwitchA-pkey-key-code]94184CCDFCEAE96EC4D5EF93133E84B47093C52B20CD35D02

492B3959EC6499625BC4FA5082E22C5

[SwitchA-pkey-key-code]B374E16DD00132CE71B020217091AC717B612391C76C1FB2E

88317C1BD8171D41ECB83E210C03CC9

[SwitchA-pkey-key-code]B32E810561C21621C73D6DAAC028F4B1585DA7F42519718CC

9B09EEF0381840002818000AF995917

[SwitchA-pkey-key-code]E1E570A3F6B1C2411948B3B4FFA256699B3BF871221CC9C5D

F257523777D033BEE77FC378145F2AD

[SwitchA-pkey-key-code]D716D7DB9FCABB4ADBF6FB4FDB0CA25C761B308EF53009F71

01F7C62621216D5A572C379A32AC290

[SwitchA-pkey-key-code]E55B394A217DA38B65B77F0185C8DB8095522D1EF044B465E

8716261214A5A3B493E866991113B2D

[SwitchA-pkey-key-code]485348

[SwitchA-pkey-key-code] public-key-code end

[SwitchA-pkey-public-key] peer-public-key end

# 指定服务器10.165.87.136对应的主机公钥名称为key1。

[SwitchA] ssh client authentication server 10.165.87.136 assign publickey key1

[SwitchA] quit

# 建立到服务器10.165.87.136的SSH连接。

<SwitchA> ssh2 10.165.87.136

Username: client001

Trying 10.165.87.136

Press CTRL+K to abort

Connected to 10.165.87.136...

Enter password:

输入正确的密码之后，即可成功登录到Switch B上。

1.6.2 publickey认证配置举例

1. 组网需求

如图1-12，配置Switch A作为客户端，采用SSH协议登录到Switch B上。SSH用户采用的认证方式为publickey认证，公钥算法为DSA。

2. 组网图

图1-12 设备作为SSH客户端配置组网图

3. 配置步骤

在服务器的配置过程中需要指定客户端的公钥信息，因此建议首先完成客户端密钥对的配置，再进行服务器的配置。

(1) 配置SSH客户端

# 配置VLAN接口1的IP地址。

<SwitchA> system-view

[SwitchA] interface vlan-interface 1

[SwitchA-Vlan-interface1] ip address 10.165.87.137 255.255.255.0

[SwitchA-Vlan-interface1] quit

# 生成DSA密钥对。

[SwitchA] public-key local create dsa

The range of public key size is (512 ~ 2048).

NOTES: If the key modulus is greater than 512,

It will take a few minutes.

Press CTRL+C to abort.

Input the bits of the modulus[default = 1024]:

Generating Keys...

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

+++++++++++++++++++++++++++++++++++

# 将生成的DSA主机公钥导出到指定文件key.pub中。

[SwitchA] public-key local export dsa ssh2 key.pub

[SwitchA] quit

客户端生成密钥对后，需要将保存的公钥文件key.pub通过FTP/TFTP方式上传到服务器。

(2) 配置SSH服务器

# 生成RSA密钥对。

<SwitchB> system-view

[SwitchB] public-key local create rsa

The range of public key size is (512 ~ 2048).

NOTES: If the key modulus is greater than 512,

It will take a few minutes.

Press CTRL+C to abort.

Input the bits of the modulus[default = 1024]:

Generating Keys...

++++++++

++++++++++++++

+++++

++++++++

# 生成DSA密钥对。

[SwitchB] public-key local create dsa

The range of public key size is (512 ~ 2048).

NOTES: If the key modulus is greater than 512,

It will take a few minutes.

Press CTRL+C to abort.

Input the bits of the modulus[default = 1024]:

Generating Keys...

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

+++++++++++++++++++++++++++++++++++

# 启动SSH服务器。

[SwitchB] ssh server enable

# 配置VLAN接口1的IP地址，客户端将通过该地址连接SSH服务器。

[SwitchB] interface vlan-interface 1

[SwitchB-Vlan-interface1] ip address 10.165.87.136 255.255.255.0

[SwitchB-Vlan-interface1] quit

# 设置SSH客户端登录用户界面的认证方式为AAA认证。

[SwitchB] user-interface vty 0 4

[SwitchB-ui-vty0-4] authentication-mode scheme

# 设置Switch B上远程用户登录协议为SSH。

[SwitchB-ui-vty0-4] protocol inbound ssh

# 设置用户能访问的命令级别为3。

[SwitchB-ui-vty0-4] user privilege level 3

[SwitchB-ui-vty0-4] quit

# 从文件key.pub中导入远端的公钥。

[SwitchB] public-key peer Switch001 import sshkey key.pub

# 设置SSH用户client002的认证方式为publickey，并指定公钥为Switch001。

[SwitchB] ssh user client002 service-type stelnet authentication-type publickey assign publickey Switch001

(3) SSH客户端建立与SSH服务器的连接

# 建立到服务器10.165.87.136的SSH连接。

<SwitchA> ssh2 10.165.87.136

Username: client002

Trying 10.165.87.136 ...

Press CTRL+K to abort

Connected to 10.165.87.136 ...

The Server is not authenticated. Continue? [Y/N]:y

Do you want to save the server public key? [Y/N]:n

之后，用户就可成功登录到Switch B上。


2 SFTP配置

相关链接

  • 2.1 SFTP简介
  • 2.2 配置设备作为SFTP服务器
  • 2.3 配置设备作为SFTP客户端
  • 2.4 设备作为SFTP客户端配置举例
  • 2.5 设备作为SFTP服务器配置举例
父主题： 12-SSH2.0配置


2.1 SFTP简介

SFTP是Secure FTP的简称，是SSH 2.0中新增的功能。

SFTP建立在SSH连接的基础之上，它使得远程用户可以安全地登录设备，进行文件管理和文件传送等操作，为数据传输提供了更高的安全保障。同时，由于设备支持作为客户端的功能，用户可以从本地设备安全登录到远程设备上，进行文件的安全传输。

通过SSH连接支持VPN多实例功能，作为SFTP客户端的设备可与位于MPLS VPN中的SFTP服务器之间建立连接。关于该功能的详细介绍，请参考 1.1.3 SSH支持VPN多实例。


2.2 配置设备作为SFTP服务器

2.2.1 配置准备

l 已经完成SSH服务器的配置，具体配置步骤请参见“1.2 配置设备作为SSH服务器”。

l SSH用户的服务类型设置为 sftp 或者 all。具体配置步骤请参见“1.2.6 配置SSH用户并指定服务类型和认证方式”。

2.2.2 启动SFTP服务器

该配置任务用于启动SFTP服务，使客户端能用SFTP的方式登录到服务器。

表2-1 启动SFTP服务器

操作 | 命令 | 说明
进入系统视图 | system-view | -
启动SFTP服务器 | sftp server enable | 必选 缺省情况下，SFTP服务器处于关闭状态

设备作为SFTP服务器时，同时只能有一个用户访问SFTP服务器。如果以WinSCP作为SFTP客户端，则无法直接编辑服务器上的文件，需要采用将服务器上的文件下载到本地，在本地修改后上传到服务器的方式实现对文件的编辑。

2.2.3 配置SFTP用户连接的空闲超时时间

当SFTP用户连接的空闲时间超过设定的阈值后，系统会自动断开此用户的连接，从而有效避免用户长期占用连接而不进行任何操作。

表2-2 配置SFTP用户连接的空闲超时时间

操作 | 命令 | 说明
进入系统视图 | system-view | -
设置SFTP用户连接的空闲超时时间 | sftp server idle-timeout time-out-value | 可选 缺省情况下，SFTP用户连接的空闲超时时间为10分钟


2.3 配置设备作为SFTP客户端

2.3.1 为SFTP客户端指定源IP地址或源接口

用户可以通过以下配置，使SFTP客户端只能使用指定接口的IP地址或指定IP地址作为源地址建立与SFTP服务器的连接，增加了业务的可管理性。

表2-3 为SFTP客户端指定IP地址或源接口

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
为SFTP客户端指定源IP地址或源接口 | 为SFTP客户端指定源IPv4地址或源接口 | sftp client source { ip ip-address | interface interface-type interface-number } | 二者必选其一 缺省情况下，客户端用设备路由指定的接口地址访问SFTP服务器
 | 为SFTP客户端指定源IPv6地址或源接口 | sftp client ipv6 source { ipv6 ipv6-address | interface interface-type interface-number }

2.3.2 建立与SFTP服务器的连接

该配置任务用来启动SFTP客户端程序，与远程SFTP服务器建立连接，并进入到SFTP客户端视图。

表2-4 建立与SFTP服务器的连接

操作 |  | 命令 | 说明
与远程SFTP服务器建立连接，并进入SFTP客户端视图 | 与远程IPv4 SFTP服务器建立连接，并进入SFTP客户端视图 | sftp server [ port-number ] [ vpn-instance vpn-instance-name ] [ identity-key { dsa | rsa } | prefer-ctos-cipher { 3des | aes128 | des } | prefer-ctos-hmac { md5 | md5-96 | sha1 | sha1-96 } | prefer-kex { dh-group-exchange | dh-group1 | dh-group14 } | prefer-stoc-cipher { 3des | aes128 | des } | prefer-stoc-hmac { md5 | md5-96 | sha1 | sha1-96 } ] * | 必选其一 请在用户视图下执行此命令
 | 与远程IPv6 SFTP服务器建立连接，并进入SFTP客户端视图 | sftp ipv6 server [ port-number ] [ vpn-instance vpn-instance-name ] [ identity-key { dsa | rsa } | prefer-ctos-cipher { 3des | aes128 | des } | prefer-ctos-hmac { md5 | md5-96 | sha1 | sha1-96 } | prefer-kex { dh-group-exchange | dh-group1 | dh-group14 } | prefer-stoc-cipher { 3des | aes128 | des } | prefer-stoc-hmac { md5 | md5-96 | sha1 | sha1-96 } ] *

2.3.3 SFTP目录操作

SFTP目录操作包括：改变或显示当前的工作目录、显示指定目录下的文件或目录信息、改变服务器上指定的文件夹的名字、创建或删除目录。

表2-5 SFTP目录操作

操作 | 命令 | 说明
进入SFTP客户端视图 | 具体命令请参考 2.3.2 | 必选 请在用户视图下执行此命令
改变远程SFTP服务器上的工作路径 | cd [ remote-path ] | 可选
返回到上一级目录 | cdup | 可选
显示远程SFTP服务器上的当前工作目录 | pwd | 可选
显示指定目录下的文件列表 | dir [ -a | -l ] [ remote-path ] | 可选 dir 和 ls 两条命令的作用相同
 | ls [ -a | -l ] [ remote-path ]
改变SFTP服务器上指定的目录的名字 | rename oldname newname | 可选
在远程SFTP服务器上创建新的目录 | mkdir remote-path | 可选
删除SFTP服务器上指定的目录 | rmdir remote-path&<1-10> | 可选

2.3.4 SFTP文件操作

SFTP文件操作包括：改变文件名、下载文件、上传文件、显示文件列表、删除文件。

表2-6 SFTP文件操作

操作 | 命令 | 说明
进入SFTP客户端视图 | 具体命令请参考 2.3.2 | 必选 请在用户视图下执行此命令
改变SFTP服务器上指定的文件的名字 | rename old-name new-name | 可选
从远程服务器上下载文件并存储在本地 | get remote-file [ local-file ] | 可选
将本地的文件上传到远程SFTP服务器 | put local-file [ remote-file ] | 可选
显示指定目录下的文件 | dir [ -a | -l ] [ remote-path ] | 可选 dir 和 ls 两条命令的作用相同
 | ls [ -a | -l ] [ remote-path ]
删除SFTP服务器上指定的文件 | delete remote-file&<1-10> | 可选 delete 和 remove 两条命令的功能相同
 | remove remote-file&<1-10>

2.3.5 显示帮助信息

本配置用于显示命令的帮助信息，如命令格式、参数配置等。

表2-7 显示客户端命令的帮助信息

操作 | 命令 | 说明
进入SFTP客户端视图 | 具体命令请参考 2.3.2 | 必选 请在用户视图下执行此命令
显示SFTP客户端命令的帮助信息 | help [ all | command-name ] | 必选

2.3.6 终止与远程SFTP服务器的连接

表2-8 终止与远程SFTP服务器的连接

操作 | 命令 | 说明
进入SFTP客户端视图 | 具体命令请参考 2.3.2 | 必选 请在用户视图下执行此命令
终止与远程SFTP服务器的连接，并退回用户视图 | bye | 必选其一 bye，exit 和 quit 三条命令的功能相同
 | exit
 | quit


2.4 设备作为SFTP客户端配置举例

1. 组网需求

如图2-1，Switch A和Switch B之间建立SSH连接，Switch A作为SFTP客户端登录到Switch B，进行文件管理和文件传送等操作。SSH用户采用的认证方式为publickey认证，公钥算法为RSA。

2. 组网图

图2-1 设备作为SFTP客户端组网图

3. 配置步骤

在服务器的配置过程中需要指定客户端的公钥信息，因此建议首先完成客户端密钥对的配置，再进行服务器的配置。

(1) 配置SFTP客户端

# 配置VLAN接口1的IP地址。

<SwitchA> system-view

[SwitchA] interface vlan-interface 1

[SwitchA-Vlan-interface1] ip address 192.168.0.2 255.255.255.0

[SwitchA-Vlan-interface1] quit

# 生成RSA密钥对。

[SwitchA] public-key local create rsa

The range of public key size is (512 ~ 2048).

NOTES: If the key modulus is greater than 512,

It will take a few minutes.

Press CTRL+C to abort.

Input the bits of the modulus[default = 1024]:

Generating Keys...

++++++++

++++++++++++++

+++++

++++++++

# 将生成的RSA主机公钥导出到指定文件pubkey中。

[SwitchA] public-key local export rsa ssh2 pubkey

[SwitchA] quit

客户端生成密钥对后，需要将保存的公钥文件pubkey通过FTP/TFTP方式上传到服务器。

(2) 配置SFTP服务器

# 生成RSA密钥对。

<SwitchB> system-view

[SwitchB] public-key local create rsa

The range of public key size is (512 ~ 2048).

NOTES: If the key modulus is greater than 512,

It will take a few minutes.

Press CTRL+C to abort.

Input the bits of the modulus[default = 1024]:

Generating Keys...

++++++++

++++++++++++++

+++++

++++++++

# 生成DSA密钥对。

[SwitchB] public-key local create dsa

The range of public key size is (512 ~ 2048).

NOTES: If the key modulus is greater than 512,

It will take a few minutes.

Press CTRL+C to abort.

Input the bits of the modulus[default = 1024]:

Generating Keys...

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

+++++++++++++++++++++++++++++++++++

# 启动SSH服务器。

[SwitchB] ssh server enable

# 启动SFTP服务器。

[SwitchB] sftp server enable

# 配置VLAN接口1的IP地址，客户端将通过该地址连接SSH服务器。

[SwitchB] interface vlan-interface 1

[SwitchB-Vlan-interface1] ip address 192.168.0.1 255.255.255.0

[SwitchB-Vlan-interface1] quit

# 设置SSH客户端登录用户界面的认证方式为AAA认证。

[SwitchB] user-interface vty 0 4

[SwitchB-ui-vty0-4] authentication-mode scheme

# 设置Switch B上远程用户登录协议为SSH。

[SwitchB-ui-vty0-4] protocol inbound ssh

[SwitchB-ui-vty0-4] quit

# 从文件pubkey中导入远端的公钥。

[SwitchB] public-key peer Switch001 import sshkey pubkey

# 设置SSH用户client001的服务类型为SFTP，认证方式为publickey，并指定公钥为Switch001，工作目录为flash:/。

[SwitchB] ssh user client001 service-type sftp authentication-type publickey assign publickey Switch001 work-directory flash:/

(3) SFTP客户端建立与SFTP服务器端的连接

# 与远程SFTP服务器建立连接，进入SFTP Client视图。

<SwitchA> sftp 192.168.0.1 identity-key rsa

Input Username: client001

Trying 192.168.0.1 ...

Press CTRL+K to abort

Connected to 192.168.0.1 ...

The Server is not authenticated. Continue? [Y/N]:y

Do you want to save the server public key? [Y/N]:n

sftp-client>

# 显示服务器的当前目录，删除文件z，并检查此文件是否删除成功。

sftp-client> dir

-rwxrwxrwx 1 noone nogroup 1759 Aug 23 06:52 config.cfg

-rwxrwxrwx 1 noone nogroup 225 Aug 24 08:01 pubkey2

-rwxrwxrwx 1 noone nogroup 283 Aug 24 07:39 pubkey

drwxrwxrwx 1 noone nogroup 0 Sep 01 06:22 new

-rwxrwxrwx 1 noone nogroup 225 Sep 01 06:55 pub

-rwxrwxrwx 1 noone nogroup 0 Sep 01 08:00 z

sftp-client> delete z

The following File will be deleted:

/z

Are you sure to delete it? [Y/N]:y

This operation may take a long time.Please wait...

File successfully Removed

sftp-client> dir

-rwxrwxrwx 1 noone nogroup 1759 Aug 23 06:52 config.cfg

-rwxrwxrwx 1 noone nogroup 225 Aug 24 08:01 pubkey2

-rwxrwxrwx 1 noone nogroup 283 Aug 24 07:39 pubkey

drwxrwxrwx 1 noone nogroup 0 Sep 01 06:22 new

-rwxrwxrwx 1 noone nogroup 225 Sep 01 06:55 pub

# 新增目录new1，并检查新目录是否创建成功。

sftp-client> mkdir new1

New directory created

sftp-client> dir

-rwxrwxrwx 1 noone nogroup 1759 Aug 23 06:52 config.cfg

-rwxrwxrwx 1 noone nogroup 225 Aug 24 08:01 pubkey2

-rwxrwxrwx 1 noone nogroup 283 Aug 24 07:39 pubkey

drwxrwxrwx 1 noone nogroup 0 Sep 01 06:22 new

-rwxrwxrwx 1 noone nogroup 225 Sep 01 06:55 pub

drwxrwxrwx 1 noone nogroup 0 Sep 02 06:30 new1

# 将目录名new1更名为new2，并查看是否更名成功。

sftp-client> rename new1 new2

File successfully renamed

sftp-client> dir

-rwxrwxrwx 1 noone nogroup 1759 Aug 23 06:52 config.cfg

-rwxrwxrwx 1 noone nogroup 225 Aug 24 08:01 pubkey2

-rwxrwxrwx 1 noone nogroup 283 Aug 24 07:39 pubkey

drwxrwxrwx 1 noone nogroup 0 Sep 01 06:22 new

-rwxrwxrwx 1 noone nogroup 225 Sep 01 06:55 pub

drwxrwxrwx 1 noone nogroup 0 Sep 02 06:33 new2

# 从服务器上下载文件pubkey2到本地，并更名为public。

sftp-client> get pubkey2 public

Remote file:/pubkey2 ---> Local file: public

Downloading file successfully ended

# 将本地文件pu上传到服务器上，更名为puk，并查看上传是否成功。

sftp-client> put pu puk

Local file:pu ---> Remote file: /puk

Uploading file successfully ended

sftp-client> dir

-rwxrwxrwx 1 noone nogroup 1759 Aug 23 06:52 config.cfg

-rwxrwxrwx 1 noone nogroup 225 Aug 24 08:01 pubkey2

-rwxrwxrwx 1 noone nogroup 283 Aug 24 07:39 pubkey

drwxrwxrwx 1 noone nogroup 0 Sep 01 06:22 new

drwxrwxrwx 1 noone nogroup 0 Sep 02 06:33 new2

-rwxrwxrwx 1 noone nogroup 283 Sep 02 06:35 pub

-rwxrwxrwx 1 noone nogroup 283 Sep 02 06:36 puk

sftp-client>

# 退出SFTP。

sftp-client> quit

Bye

Connection closed.

<SwitchA>


2.5 设备作为SFTP服务器配置举例

1. 组网需求

如图2-2，Host和Switch之间建立SSH连接，Host作为SFTP客户端登录到Switch，进行文件管理和文件传送等操作，用户名为client002，密码为aabbcc，用户名和密码保存在本地设备上。

2. 组网图

图2-2 设备作为SFTP服务器组网图

3. 配置步骤

(1) 配置SFTP服务器

# 生成RSA密钥对。

<Switch> system-view

[Switch] public-key local create rsa

The range of public key size is (512 ~ 2048).

NOTES: If the key modulus is greater than 512,

It will take a few minutes.

Press CTRL+C to abort.

Input the bits of the modulus[default = 1024]:

Generating Keys...

++++++++

++++++++++++++

+++++

++++++++

# 生成DSA密钥对。

[Switch] public-key local create dsa

The range of public key size is (512 ~ 2048).

NOTES: If the key modulus is greater than 512,

It will take a few minutes.

Press CTRL+C to abort.

Input the bits of the modulus[default = 1024]:

Generating Keys...

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

+++++++++++++++++++++++++++++++++++

# 启动SSH服务器。

[Switch] ssh server enable

# 启动SFTP服务器。

[Switch] sftp server enable

# 配置VLAN接口1的IP地址，客户端将通过该地址连接SSH服务器。

[Switch] interface vlan-interface 1

[Switch-Vlan-interface1] ip address 192.168.1.45 255.255.255.0

[Switch-Vlan-interface1] quit

# 设置SSH客户端登录用户界面的认证方式为AAA认证。

[Switch] user-interface vty 0 4

[Switch-ui-vty0-4] authentication-mode scheme

# 设置Switch上远程用户登录协议为SSH。

[Switch-ui-vty0-4] protocol inbound ssh

[Switch-ui-vty0-4] quit

# 创建本地用户client002。

[Switch] local-user client002

[Switch-luser-client002] password simple aabbcc

[Switch-luser-client002] service-type ssh

[Switch-luser-client002] quit

# 配置SSH用户认证方式为password，服务类型为SFTP。

[Switch] ssh user client002 service-type sftp authentication-type password

(2) SFTP客户端建立与SFTP服务器的连接

l SFTP客户端软件有很多，本文中仅以客户端软件PuTTY0.58中的PSFTP为例，说明SFTP客户端的配置方法。

l PSFTP只支持password认证，不支持publickey认证

# 建立与SFTP服务器的连接。

打开psftp.exe程序，出现如图2-3 所示的客户端配置界面。输入如下命令：

open 192.168.1.45

根据提示输入用户名client002，密码aabbcc，即可登录SFTP服务器。

图2-3 SFTP客户端登录界面


1 SSL配置

相关链接

  • 1.1 SSL简介
  • 1.2 SSL配置任务简介
  • 1.3 配置SSL服务器端策略
  • 1.4 配置SSL客户端策略
  • 1.5 SSL显示和维护
  • 1.6 常见配置错误举例
父主题： 13-SSL配置


1.1 SSL简介

SSL（Secure Sockets Layer，安全套接字层）是一个安全协议，为基于TCP的应用层协议提供安全连接，如SSL可以为HTTP协议提供安全连接。SSL协议广泛应用于电子商务、网上银行等领域，为网络上数据的传输提供安全性保证。

1.1.1 SSL安全机制

SSL提供的安全连接可以实现：

l 连接的私密性：利用对称加密算法对传输数据进行加密，并利用密钥交换算法——RSA（Rivest Shamir and Adleman，非对称密钥算法的一种）加密传输对称密钥算法中使用的密钥。

l 身份验证：基于证书利用数字签名方法对服务器和客户端进行身份验证。SSL服务器和客户端通过PKI（Public Key Infrastructure，公钥基础设施）提供的机制从CA（Certificate Authority，认证颁发机构）获取证书。

l 连接的可靠性：消息传输过程中使用基于密钥的MAC（Message Authentication Code，消息验证码）来检验消息的完整性。MAC是将密钥和任意长度的数据转换为固定长度数据的一种算法。利用MAC算法验证消息完整性的过程如 图1-1 所示。发送者在密钥的参与下，利用MAC算法计算出消息的MAC值，并将其加在消息之后发送给接收者。接收者利用同样的密钥和MAC算法计算出消息的MAC值，并与接收到的MAC值比较。如果二者相同，则报文没有改变；否则，报文在传输过程中被修改，接收者将丢弃该报文。

图1-1 MAC算法示意图

l 对称密钥算法、非对称密钥算法RSA及数字签名的详细介绍请参见“安全配置指导”中的“公钥管理”；

l PKI及证书、CA的详细介绍请参见“安全配置指导”中的“PKI”。

1.1.2 SSL协议结构

如 图1-2 所示，SSL协议本身可以分为两层：底层为SSL记录协议（SSL record protocol）；上层为SSL握手协议（SSL handshake protocol）、SSL密码变化协议（SSL change cipher spec protocol）和SSL警告协议（SSL alert protocol）。

图1-2 SSL协议栈

l SSL记录协议：主要负责对上层的数据进行分块、计算并添加MAC、加密，最后把记录块传输给对方。

l SSL握手协议：是SSL协议非常重要的组成部分，用来协商通信过程中使用的加密套件（对称加密算法、密钥交换算法和MAC算法等）、在服务器和客户端之间安全地交换密钥，实现服务器和客户端的身份验证。客户端和服务器通过握手协议建立一个会话。会话包含一组参数，主要有会话ID、对方的证书、加密套件（包括密钥交换算法、数据加密算法和MAC算法）及主密钥。

l SSL密码变化协议：客户端和服务器端通过密码变化协议通知对端，随后的报文都将使用新协商的加密套件和密钥进行保护和传输。

l SSL警告协议：用来允许一方向另一方报告告警信息。消息中包含告警的严重级别和描述。


1.2 SSL配置任务简介

SSL服务器和客户端需要配置的参数不同，下面将分别介绍SSL服务器端策略和SSL客户端策略的配置方法。

表1-1 SSL配置任务简介

配置任务 | 说明 | 详细配置
配置SSL服务器端策略 | 必选 | 1.3
配置SSL客户端策略 | 可选 | 1.4


1.3 配置SSL服务器端策略

SSL服务器端策略是服务器启动时使用的SSL参数。只有与应用层协议（如HTTP协议）关联后，SSL服务器端策略才能生效。

1.3.1 配置准备

配置SSL服务器端策略时，需要指定其使用的PKI域，以便通过该PKI域获取服务器端的证书。因此，在进行SSL服务器端策略配置之前，需要先配置PKI域。PKI域配置方法的详细介绍，请参见“安全配置指导”中的“PKI”。

1.3.2 配置SSL服务器端策略

表1-2 配置SSL服务器端策略

操作 | 命令 | 说明
进入系统视图 | system-view | -
创建SSL服务器端策略，并进入SSL服务器端策略视图 | ssl server-policy policy-name | 必选
配置SSL服务器端策略所使用的PKI域 | pki-domain domain-name | 必选 缺省情况下，没有配置SSL服务器端策略所使用的PKI域
配置SSL服务器端策略支持的加密套件 | ciphersuite [ rsa_3des_ede_cbc_sha | rsa_aes_128_cbc_sha | rsa_aes_256_cbc_sha | rsa_des_cbc_sha | rsa_rc4_128_md5 | rsa_rc4_128_sha ] * | 可选 缺省情况下，SSL服务器端策略支持所有的加密套件
配置服务器端SSL握手连接保持时间 | handshake timeout time | 可选 缺省情况下，服务器端SSL握手连接保持时间是3600秒
配置SSL连接关闭模式 | close-mode wait | 可选 缺省情况下，关闭模式为非wait模式
配置缓存的最大会话数目和会话缓存的超时时间 | session { cachesize size | timeout time } * | 可选 缺省情况下，缓存的最大会话数目为500个，会话缓存的超时时间为3600秒
配置SSL服务器端要求对SSL客户端进行基于证书的身份验证 | client-verify enable | 可选 缺省情况下，SSL服务器端不要求对SSL客户端进行基于证书的身份验证
使能SSL客户端弱认证功能 | client-verify weaken | 可选 缺省情况下，未使能SSL客户端弱认证功能 只有通过 client-verify enable 命令配置SSL服务器端要求对SSL客户端进行基于证书的身份验证后，本命令才会生效

l 如果服务器端需要对客户端进行基于证书的身份验证，即配置了 client-verify enable 命令，则必须先为SSL客户端申请本地证书。

l 目前，SSL协议版本主要有SSL2.0、SSL3.0和TLS1.0（对应SSL协议的版本号为3.1）。设备作为SSL服务器时，可以与SSL3.0和TLS1.0版本的SSL客户端通信，还可以识别同时兼容SSL2.0和SSL3.0/TLS1.0版本的SSL客户端发送的报文，并通知该客户端采用SSL3.0/TLS1.0版本与SSL服务器通信。

1.3.3 SSL服务器端策略典型配置举例

1. 组网需求

用户可以通过Web页面访问和控制设备。为了防止非法用户访问和控制设备，提高设备管理的安全性，设备要求用户以HTTPS（Hypertext Transfer Protocol Secure，超文本传输协议的安全版本）的方式登录Web页面，利用SSL协议实现用户身份验证，并保证传输的数据不被窃听和篡改。

为了满足上述需求，需要进行如下配置：

l 配置Device作为HTTPS服务器，并为Device申请证书。

l 为HTTPS客户端Host申请证书，以便Device验证其身份。

其中，负责为Device和Host颁发证书的认证机构为CA server。

l 本配置举例中，采用Windows Server作为CA，在CA上需要安装SCEP（Simple Certificate Enrollment Protocol，简单证书注册协议）插件。

l 进行下面的配置之前，需要确保Device、Host、CA之间路由可达。

2. 组网图

图1-3 SSL服务器端策略组网图

3. 配置步骤

(1) 配置HTTPS服务器Device

# 配置PKI实体en，指定实体的通用名为http-server1、FQDN为ssl.security.com。

<Device> system-view

[Device] pki entity en

[Device-pki-entity-en] common-name http-server1

[Device-pki-entity-en] fqdn ssl.security.com

[Device-pki-entity-en] quit

# 配置PKI域1，指定信任的CA名称为ca server、注册服务器的URL为http://10.1.2.2/certsrv/mscep/mscep.dll、证书申请的注册受理机构为RA、实体名称为en。

[Device] pki domain 1

[Device-pki-domain-1] ca identifier ca server

[Device-pki-domain-1] certificate request url http://10.1.2.2/certsrv/mscep/mscep.dll

[Device-pki-domain-1] certificate request from ra

[Device-pki-domain-1] certificate request entity en

[Device-pki-domain-1] quit

# 生成本地的RSA密钥对。

[Device] public-key local create rsa

# 获取CA的证书。

[Device] pki retrieval-certificate ca domain 1

# 为Device申请证书。

[Device] pki request-certificate domain 1

# 创建一个名为myssl的SSL服务器端策略。

[Device] ssl server-policy myssl

# 配置SSL服务器端策略使用的PKI域名为1。

[Device-ssl-server-policy-myssl] pki-domain 1

# 配置服务器端需要验证客户端身份。

[Device-ssl-server-policy-myssl] client-verify enable

[Device-ssl-server-policy-myssl] quit

# 配置HTTPS服务使用的SSL策略为myssl。

[Device] ip https ssl-server-policy myssl

# 使能HTTPS服务。

[Device] ip https enable

# 创建本地用户usera，密码为123，服务类型为telnet。

[Device] local-user usera

[Device-luser-usera] password simple 123

[Device-luser-usera] service-type telnet

(2) 配置HTTPS客户端Host

在Host上打开IE浏览器，输入网址http://10.1.2.2/certsrv，根据提示为Host申请证书。

(3) 验证配置结果

在Host上打开IE浏览器，输入网址https://10.1.1.1，选择CA server为Host颁发的证书，即可打开Device的Web登录页面。在登录页面，输入用户名usera，密码123，则可进入Device的Web配置页面，实现对Device的访问和控制。

l PKI配置命令的详细介绍请参见“安全命令参考”中的“PKI”；

l public-key local create rsa 命令的详细介绍请参见“安全命令参考”中的“公钥管理”；

l HTTPS的详细介绍，请参见“基础配置指导”中的“配置通过Web网管登录设备”。


1.4 配置SSL客户端策略

SSL客户端策略是客户端连接SSL服务器时使用的参数。只有与应用层协议关联后，SSL客户端策略才能生效。

1.4.1 配置准备

如果SSL服务器要求验证SSL客户端的身份，则配置SSL客户端策略时，需要指定其使用的PKI域，以便通过该PKI域获取客户端的证书。因此，在进行SSL客户端策略配置之前，需要先配置PKI域。PKI域配置方法的详细介绍，请参见“安全配置指导”中的“PKI”。

1.4.2 配置SSL客户端策略

表1-3 配置SSL客户端策略

操作 | 命令 | 说明
进入系统视图 | system-view | -
创建SSL客户端策略，并进入SSL客户端策略视图 | ssl client-policy policy-name | 必选
配置SSL客户端策略所使用的PKI域 | pki-domain domain-name | 可选 缺省情况下，没有配置SSL客户端策略所使用的PKI域
配置SSL客户端策略的首选加密套件 | prefer-cipher { rsa_3des_ede_cbc_sha | rsa_aes_128_cbc_sha | rsa_aes_256_cbc_sha | rsa_des_cbc_sha | rsa_rc4_128_md5 | rsa_rc4_128_sha } | 可选 缺省情况下，SSL客户端策略的首选加密套件为 rsa_rc4_128_md5
配置SSL客户端策略使用的SSL协议版本 | version { ssl3.0 | tls1.0 } | 可选 缺省情况下，SSL客户端策略使用的SSL协议版本号为TLS 1.0
使能基于证书的SSL服务器身份验证 | server-verify enable | 可选 缺省情况下，需要进行基于证书的SSL服务器身份验证

如果服务器端需要对客户端进行基于证书的身份验证，则必须先在SSL客户端所属的PKI域内为SSL客户端申请本地证书。


1.5 SSL显示和维护

在完成上述配置后，在任意视图下执行 display 命令可以显示配置后SSL的运行情况，通过查看显示信息验证配置的效果。

表1-4 SSL显示和维护

操作 | 命令
显示SSL服务器端策略的信息 | display ssl server-policy { policy-name | all } [ | { begin | exclude | include } regular-expression ]
显示SSL客户端策略的信息 | display ssl client-policy { policy-name | all } [ | { begin | exclude | include } regular-expression ]


1.6 常见配置错误举例

1.6.1 SSL握手失败

1. 故障现象

设备作为SSL服务器时，与SSL客户端握手失败。

2. 故障分析

SSL握手失败，可能有以下原因：

l 客户端配置了必须对服务器端进行身份验证，但SSL服务器端证书不存在，或者证书不能被信任；

l 服务器端配置了必须对客户端进行身份验证，但SSL客户端的证书不存在或不能被信任；

l SSL服务器端和客户端没有匹配的加密套件。

3. 故障排除

(1) 使用 debugging ssl 命令查看调试信息：

l 如果客户端配置了必须对服务器端进行身份验证，而SSL服务器端的证书不存在，请为SSL服务器申请证书；如果服务器端证书不能被信任，请在SSL客户端安装为SSL服务器颁发证书的CA服务器根证书，或服务器向SSL客户端信任的CA服务器重新申请证书；

l 如果服务器端配置了必须对客户端进行身份验证，而SSL客户端的证书不存在或不能被信任，请为客户端申请并安装证书。

(2) 使用 display ssl server-policy 命令查看SSL服务器端策略支持的加密套件。如果SSL服务器端和客户端没有匹配的加密套件，请用 ciphersuite 命令修改SSL服务器支持的加密套件。


1 TCP攻击防御配置

相关链接

  • 1.1 TCP攻击防御简介
  • 1.2 配置SYN Cookie功能
  • 1.3 TCP攻击防御显示和维护
父主题： 14-TCP攻击防御配置


1.1 TCP攻击防御简介

攻击者可以利用TCP连接的建立过程对设备进行攻击。为了避免上述攻击带来的危害，设备提供了SYN Cookie功能。

下面将详细介绍该功能的工作原理，以及配置过程。


1.2 配置SYN Cookie功能

一般情况下，TCP连接的建立需要经过三次握手，即：

(1) TCP连接请求的发起者向目标服务器发送SYN报文；

(2) 目标服务器收到SYN报文后，建立处于SYN_RECEIVED状态的TCP半连接，并向发起者回复SYN ACK报文，等待发起者的回应；

(3) 发起者收到SYN ACK报文后，回应ACK报文，这样TCP连接就建立起来了。

利用TCP连接的建立过程，一些恶意的攻击者可以进行SYN Flood攻击。攻击者向服务器发送大量请求建立TCP连接的SYN报文，而不回应服务器的SYN ACK报文，导致服务器上建立了大量的TCP半连接。从而，达到耗费服务器资源，使服务器无法处理正常业务的目的。

SYN Cookie功能用来防止SYN Flood攻击。当服务器收到TCP连接请求时，不建立TCP半连接，而直接向发起者回复SYN ACK报文。服务器接收到发起者回应的ACK报文后，才建立连接，并进入ESTABLISHED状态。通过这种方式，可以避免在服务器上建立大量的TCP半连接，防止服务器受到SYN Flood攻击。

表1-1 配置SYN Cookie功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
使能SYN Cookie功能 | tcp syn-cookie enable | 必选 缺省情况下，SYN Cookie功能处于使能状态

l 对于S3600V2-EI，如果启用了在建立TCP连接时进行MD5认证的功能，则SYN Cookie功能不会生效。取消在建立TCP连接时进行MD5认证功能后，之前配置的SYN Cookie功能会自动生效。关于在建立TCP连接时进行MD5认证功能的介绍，请参见“三层技术-IP路由配置指导”中“BGP”手册中“配置BGP建立TCP连接时进行MD5认证”章节的内容。

l 使能SYN Cookie功能后，建立TCP连接时只协商最大报文段长度选项，而不协商窗口缩放因子和时间戳选项。


1.3 TCP攻击防御显示和维护

在任意视图下执行 display tcp status 命令可以显示所有TCP连接的状态，用户可以通过显示信息随时监控TCP连接。

表1-2 TCP攻击防御显示和维护

操作 | 命令
显示所有TCP连接的状态 | display tcp status [ | { begin | exclude | include } regular-expression ]


1 IP Source Guard配置

相关链接

  • 1.1 IP Source Guard简介
  • 1.2 配置IPv4绑定功能
  • 1.3 配置IPv6绑定功能
  • 1.4 IP Source Guard显示和维护
  • 1.5 IP Source Guard典型配置举例
  • 1.6 常见配置错误举例
父主题： 15-IP Source Guard配置


1.1 IP Source Guard简介

1.1.1 概述

通过在设备接入用户侧的端口上启用IP Source Guard功能，可以对端口收到的报文进行过滤控制，防止非法报文通过端口，从而限制了对网络资源的非法使用（比如非法主机仿冒合法用户IP接入网络），提高了端口的安全性。

IP Source Guard在端口上用于过滤报文的特征项包括：源IP地址、源MAC地址。这些特征项可单独或组合起来与端口进行绑定，形成绑定表项，具体包括：IP、MAC、IP＋MAC。

如 图1-1 所示，配置了IP Source Guard的端口接收到报文后查找IP Source Guard绑定表项，如果报文中的特征项与绑定表项中记录的特征项匹配，则端口转发该报文，否则做丢弃处理。绑定功能是针对端口的，一个端口配置了绑定功能后，仅该端口被限制，其他端口不受该绑定影响。

图1-1 IP Source Guard功能示意图

1.1.2 静态绑定表项

通过手工配置产生绑定表项来完成端口的控制功能，只有端口收到的报文的IP地址、MAC地址与端口上配置的绑定表项的各参数完全匹配时，报文才可以在该端口被正常转发，其它报文都不能被转发，该表项适用于检查端口上接入用户的合法性，特别是局域网络中主机数较少且主机使用静态配置IP地址的情况，比如在接入某重要服务器的端口上配置绑定表项，仅允许该端口接收或者发送与该服务器通信的报文。

l IPv4静态表项：使用手工配置的IPv4静态绑定表项来过滤端口收到的IPv4报文，或者与ARP Detection功能配合使用检查接入用户的合法性；

l IPv6静态表项：使用手工配置的IPv6静态绑定表项来过滤端口收到的IPv6报文，或者与ND Detection功能配合使用检查接入用户的合法性。

l ARP Detection功能的详细介绍请参考“安全配置指导”中的“ARP攻击防御”。

l ND Detection功能的详细介绍请参考“安全配置指导”中的“ND攻击防御”。

1.1.3 动态绑定功能

根据DHCP的相关表项动态生成绑定表项来完成端口控制功能，通常适用于局域网络中主机较多，并且采用DHCP进行动态主机配置的情况。其原理是每当DHCP为用户分配IP地址而生成一条DHCP表项时，动态绑定功能就相应地增加一条绑定表项以允许该用户访问网络。如果某个用户私自设置IP地址，则不会触发设备生成相应的DHCP表项，因此动态绑定功能也不会增加相应的访问规则来允许该用户访问网络。除此之外，IPv6类型的动态绑定还支持自动获取ND Snooping表项。

l IPv4动态绑定：根据DHCP Snooping表项或DHCP Relay表项动态生成绑定表项来过滤端口收到的IPv4报文；

l IPv6动态绑定：根据DHCPv6 Snooping表项或ND Snooping表项动态生成绑定表项来过滤端口收到的IPv6报文。

l DHCP Snooping和DHCP Relay功能的详细介绍请参考“三层技术-IP业务配置指导”中的“DHCP中继”。

l DHCPv6 Snooping功能的详细介绍请参考“三层技术-IP业务配置指导”中的“DHCPv6 Snooping”。

l ND Snooping功能的详细介绍请参考“三层技术-IP业务配置指导”中的“IPv6基础”。


1.2 配置IPv4绑定功能

加入聚合组或加入业务环回组的端口上不能配置IP Source Guard功能，反之亦然。

1.2.1 配置IPv4静态绑定表项

IPv4静态绑定表项必须与端口上配置的IPv4动态绑定功能配合使用才能生效，动态绑定功能的具体配置请参见“ 1.2.2 配置IPv4动态绑定功能 ”。

表1-1 配置IPv4静态绑定表项

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入二层以太网端口视图 | interface interface-type interface-number | -
配置端口的IPv4静态绑定表项 | ip source binding { ip-address ip-address | ip-address ip-address mac-address mac-address | mac-address mac-address } | 必选 缺省情况下，端口上无IPv4静态绑定表项

l 一个表项不能在同一个端口上重复绑定，但可以在不同端口上绑定。

l 配置静态表项时，如果系统中已经存在相同内容的动态表项，则新添加的静态表项将会覆盖已有的动态表项。

1.2.2 配置IPv4动态绑定功能

配置了IPv4动态绑定功能的端口，可利用配置的IPv4静态绑定表项和从DHCP模块获取的IPv4动态绑定表项对端口转发的报文进行过滤：

l IPv4静态绑定表项的配置请参考“ 1.2.1 配置IPv4静态绑定表项 ”。

l 在二层以太网端口上，IP Source Guard可与DHCP Snooping配合，通过获取IP地址动态分配时产生的DHCP Snooping表项来生成动态绑定表项；

l 在三层以太网端口或VLAN接口上，IP Source Guard可与DHCP Relay配合，通过获取IP地址跨网段动态分配时产生的DHCP Relay表项来生成动态绑定表项。

动态绑定表项中可能包含的内容有：MAC地址、IP地址、VLAN信息、入端口信息及表项类型（DHCP Snooping或DHCP Relay），其中MAC地址、IP地址和VLAN信息的包含情况由动态绑定配置决定。IP Source Guard把这些动态绑定表项下发到端口后，可对端口上转发的报文进行过滤。

表1-2 配置IPv4动态绑定功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
配置IPv4动态绑定功能 | ip verify source { ip-address | ip-address mac-address | mac-address } | 必选 缺省情况下，端口上未配置IPv4动态绑定功能

l IPv4动态绑定功能中所指的“接口”可以为二层以太网端口、三层以太网端口、VLAN接口或端口组。三层以太网端口是指被配置为三层模式的以太网端口，有关以太网端口模式切换的操作，请参见“二层技术-以太网交换配置指导”中的“以太网端口配置”。

l 接口下的IPv4动态绑定功能可多次配置，最后一次的配置生效。

l 若要通过获取DHCP相关表项来实现IPv4动态绑定功能，请保证网络中的DHCP Snooping或DHCP Relay配置有效且工作正常，DHCP Snooping配置的具体介绍请参见“三层技术-IP业务配置指导”中的“DHCP Snooping”，DHCP Relay配置的具体介绍请参见“三层技术-IP业务配置指导”中的“DHCP 中继”。

l 虽然IP Source Guard的动态表项是通过获取DHCP的相关表项而生成，但生成的IP Source Guard动态绑定表项数目并不与对应的DHCP表项数目保持一致，实际使用过程中，请以IP Source Guard实际生成的表项数目为准。

1.2.3 配置IPv4绑定表项数目的最大值

IPv4绑定表项数目的最大值用于限制端口上允许添加的IPv4静态绑定表项和IPv4动态绑定表项的数量总和。当端口上的IPv4绑定表项数目达到指定的最大值时，端口将不再允许添加新的IPv4绑定表项。

表1-3 配置IPv4绑定表项数目的最大值

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入二层以太网端口 | interface interface-type interface-number | -
配置IPv4绑定表项数目的最大值 | ip verify source max-entries number | 可选 缺省情况下，IPv4绑定表项数目的最大值为2048

如果要配置的IPv4绑定表项数目的最大值小于当前端口上已存在的IPv4绑定表项总数，则该最大值可以配置成功，且原有的表项不受影响，但端口将不再允许新增IPv4绑定表项，除非端口上的IPv4绑定表项数目减少到小于此最大值。


1.3 配置IPv6绑定功能

加入聚合组或加入业务环回组的端口上不能配置IP Source Guard功能，反之亦然。

1.3.1 配置IPv6静态绑定表项

IPv6静态绑定表项必须与端口上配置的IPv6动态绑定功能配合使用才能生效，动态绑定功能的具体配置请参见“ 1.3.2 配置IPv6动态绑定功能 ”。

表1-4 配置IPv6静态绑定表项

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入二层以太网端口视图 | interface interface-type interface-number | -
配置端口的IPv6静态绑定表项 | ipv6 source binding { ipv6-address ipv6-address | ipv6-address ipv6-address mac-address mac-address | mac-address mac-address } | 必选 缺省情况下，端口上无IPv6静态绑定表项

l 同一个表项不能在同一个端口上重复绑定，但可以在不同端口上绑定。

l 绑定表项中的MAC地址不能为全0、全F（广播MAC）和组播MAC。绑定表项中的IPv6地址必须为单播地址，不能为全0地址、组播地址、环回地址。

l 配置静态表项时，如果系统中已经存在相同内容的动态表项，则新添加的静态表项将会覆盖已有的动态表项。

1.3.2 配置IPv6动态绑定功能

配置了IPv6动态绑定功能的端口，利用配置的IPv6静态绑定表项和从DHCP模块或ND模块获取的IPv4动态绑定表项对端口转发的报文进行过滤：

l IPv6静态绑定表项的配置请参考“ 1.3.1 配置IPv6静态绑定表项 ”。

l 在二层以太网端口上，IP Source Guard可与DHCPv6 Snooping配合，通过获取IPv6地址动态分配时产生的DHCPv6 Snooping表项来生成动态绑定表项。

l 在二层以太网端口上，IP Source Guard可与ND Snooping配合，通过获取动态产生的ND Snooping表项来生成动态绑定表项。

动态绑定表项中可能包含的内容有：MAC地址、IPv6地址、VLAN信息、入端口信息及表项类型（DHCPv6 Snooping或ND Snooping），其中MAC地址、IPv6地址和VLAN信息的包含情况由动态绑定配置决定。IP Source Guard把这些动态绑定表项下发到端口后，可对端口上转发的报文进行过滤。

表1-5 配置IPv6动态绑定功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入二层以太网端口、端口组视图 | interface interface-type interface-number | -
配置IPv6动态绑定功能 | ipv6 verify source { ipv6-address | ipv6-address mac-address | mac-address } | 必选 缺省情况下，端口上未配置IPv6动态绑定功能

l 若要通过获取DHCP或ND相关表项来实现IPv6动态绑定功能，请保证网络中的DHCPv6 Snooping或ND Snooping配置有效且工作正常，配置的具体介绍请分别参见“三层技术-IP业务配置指导”中的“DHCPv6”和“三层技术-IP业务配置指导”中的“IPv6基础”。

l IPv6动态绑定功能可多次配置，最后一次的配置生效。

l 若设备上同时配置了ND Snooping和DHCPv6 Snooping，通常会首先生成DHCPv6 Snooping表项，因此IP Source Guard会使用先生成的DHCPv6 Snooping表项来过滤端口报文。

l 虽然IP Source Guard的动态表项是通过获取DHCP的相关表项而生成，但生成的IP Source Guard动态绑定表项数目并不与对应的DHCP表项数目保持一致，实际使用过程中，请以IP Source Guard实际生成的表项数目为准。

1.3.3 配置IPv6绑定表项数目的最大值

IPv6绑定表项数目的最大值用于限制端口上允许添加的IPv6静态绑定表项和IPv6动态绑定表项的数量总和。当端口上的IPv6绑定表项数目达到指定的最大值时，端口将不再允许添加新的IPv6绑定表项。

表1-6 配置IPv6绑定表项数目的最大值

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入二层以太网端口视图 | interface interface-type interface-number | -
配置IPv6绑定表项数目的最大值 | ipv6 verify source max-entries number | 可选 缺省情况下，IPv6绑定表项数目的最大值为2048

如果要配置的IPv6绑定表项数目的最大值小于当前端口上已存在的IPv6绑定表项总数，则该最大值可以配置成功，且原有的表项不受影响，但端口将不再允许新增IPv6绑定表项，除非端口上的IPv6绑定表项数目减少到小于最大值。


1.4 IP Source Guard显示和维护

在完成上述配置后，在任意视图下执行 display 命令可以显示配置后IP Source Guard的运行情况，通过查看显示信息验证配置的效果。

表1-7 IP Source Guard显示和维护（IPv4）

操作 | 命令
显示静态绑定表项信息 | display ip source binding static [ interface interface-type interface-number | ip-address ip-address | mac-address mac-address ] [ slot slot-number ] [ | { begin | exclude | include } regular-expression ]
显示绑定表项信息 | display ip source binding [ interface interface-type interface-number | ip-address ip-address | mac-address mac-address ] [ slot slot-number ] [ | { begin | exclude | include } regular-expression ]

表1-8 IP Source Guard显示和维护（IPv6）

操作 | 命令
显示IPv6静态绑定表项信息 | display ipv6 source binding static [ interface interface-type interface-number | ipv6-address ipv6-address | mac-address mac-address ] [ slot slot-number ] [ | { begin | exclude | include } regular-expression ]
显示IPv6绑定表项信息 | display ipv6 source binding [ interface interface-type interface-number | ipv6-address ipv6-address | mac-address mac-address ] [ slot slot-number ] [ | { begin | exclude | include } regular-expression ]


1.5 IP Source Guard典型配置举例

1.5.1 IPv4静态绑定表项配置举例

1. 组网需求

如 图1-2 所示，Host A与Host B分别与Device B的端口Ethernet1/0/2、Ethernet1/0/1相连；Host C与Device A的端口Ethernet1/0/2相连。Device B接到Device A的端口Ethernet1/0/1上。各主机均使用静态配置的IP地址。

通过在Device A和Device B上配置IPv4静态绑定表项，可以满足以下各项应用需求：

l Device A的端口Ethernet1/0/2上只允许Host C发送的IP报文通过。

l Device A的端口Ethernet1/0/1上只允许Host A发送的IP报文通过。

l Device B的端口Ethernet1/0/2上只允许Host A发送的IP报文通过。

l Device B的端口Ethernet1/0/1上只允许使用IP地址192.168.0.2/24的主机发送的IP报文通过，即允许Host B更换网卡后仍然可以使用该IP地址与Host A互通。

2. 组网图

图1-2 配置静态绑定表项组网图

3. 配置步骤

(1) 配置Device A

# 在端口Ethernet1/0/2上配置IPv4动态绑定功能，绑定源IP地址和MAC地址。

<DeviceA> system-view

[DeviceA] interface ethernet 1/0/2

[DeviceA-Ethernet1/0/2] ip verify source ip-address mac-address

# 配置IPv4静态绑定表项，只允许MAC地址为0001-0203-0405、IP地址为192.168.0.3的Host C发送的IP报文通过端口Ethernet1/0/2。

[DeviceA] interface ethernet 1/0/2

[DeviceA-Ethernet1/0/2] ip source binding ip-address 192.168.0.3 mac-address 0001-0203-0405

[DeviceA-Ethernet1/0/2] quit

# 在端口Ethernet1/0/1上配置IPv4动态绑定功能，绑定源IP地址和MAC地址。

[DeviceA] interface ethernet 1/0/1

[DeviceA-Ethernet1/0/1] ip verify source ip-address mac-address

# 配置IPv4静态绑定表项，只允许MAC地址为0001-0203-0406、IP地址为192.168.0.1的Host A发送的IP报文通过端口Ethernet1/0/1。

[DeviceA] interface ethernet 1/0/1

[DeviceA-Ethernet1/0/1] ip source binding ip-address 192.168.0.1 mac-address 0001-0203-0406

[DeviceA-Ethernet1/0/1] quit

(2) 配置Device B

# 在端口Ethernet1/0/2上配置IPv4动态绑定功能，绑定源IP地址和MAC地址。

[DeviceB] interface ethernet1/0/2

[DeviceB-Ethernet1/0/2] ip verify source ip-address mac-address

# 配置IPv4静态绑定表项，只允许MAC地址为0001-0203-0406、IP地址为192.168.0.1的Host A发送的IP报文通过端口Ethernet1/0/2。

[DeviceB-Ethernet1/0/2] ip source binding ip-address 192.168.0.1 mac-address 0001-0203-0406

[DeviceB-Ethernet1/0/2] quit

# 在Ethernet1/0/1上配置IPv4动态绑定功能，绑定源IP地址。

[DeviceB] interface ethernet 1/0/1

[DeviceB-Ethernet1/0/1] ip verify source ip-address

# 配置IPv4静态绑定表项，只允许IP地址为192.168.0.2的主机发送的IP报文通过端口Ethernet1/0/1。

[DeviceB-Ethernet1/0/1] ip source binding ip-address 192.168.0.2

[DeviceB-Ethernet1/0/1] quit

4. 验证配置结果

# 在Device A上显示IPv4静态绑定表项配置成功。

[DeviceA] display ip source binding static

Total entries found: 2

MAC Address IP Address VLAN Interface Type

0001-0203-0405 192.168.0.3 N/A Eth1/0/2 Static

0001-0203-0406 192.168.0.1 N/A Eth1/0/1 Static

# 在Device B上显示IPv4静态绑定表项配置成功。

[DeviceB] display ip source binding static

Total entries found: 2

MAC Address IP Address VLAN Interface Type

0001-0203-0406 192.168.0.1 N/A Eth1/0/2 Static

N/A 192.168.0.2 N/A Eth1/0/1 Static

1.5.2 与DHCP Snooping配合的IPv4动态绑定功能配置举例

1. 组网需求

Device通过端口Ethernet1/0/1和Ethernet1/0/2分别与客户端Host和DHCP server相连。

具体应用需求如下：

l Host通过DHCP server获取IP地址。

l Device上使能DHCP Snooping功能，记录Host的DHCP Snooping表项。

l 在端口Ethernet1/0/1上启用IPv4动态绑定功能，利用记录的DHCP Snooping表项过滤端口转发的报文，仅允许通过DHCP server动态获取IP地址的客户端可以接入网络。

DHCP server的具体配置请参考“三层技术-IP业务配置指导”中的“DHCP服务器”。

2. 组网图

图1-3 配置与DHCP Snooping配合的IPv4动态绑定功能组网图

3. 配置步骤

(1) 配置DHCP Snooping

# 开启DHCP Snooping功能。

<Device> system-view

[Device] dhcp-snooping

# 设置与DHCP server相连的端口Ethernet1/0/2为信任端口。

[Device] interface ethernet 1/0/2

[Device-Ethernet1/0/2] dhcp-snooping trust

[Device-Ethernet1/0/2] quit

(2) 配置IPv4动态绑定功能

# 配置端口Ethernet1/0/1的IPv4动态绑定功能，绑定源IP地址和MAC地址。

[Device] interface ethernet 1/0/1

[Device-Ethernet1/0/1] ip verify source ip-address mac-address

[Device-Ethernet1/0/1] quit

4. 验证配置结果

# 显示端口Ethernet1/0/1上的绑定表项信息。

[Device] display ip source binding

Total entries found: 1

MAC Address IP Address VLAN Interface Type

0001-0203-0406 192.168.0.1 1 Eth1/0/1 DHCP-SNP

# 显示DHCP Snooping已有的动态表项，查看其是否和端口Ethernet1/0/1获取的动态表项一致。

[Device] display dhcp-snooping

DHCP Snooping is enabled.

The client binding table for all untrusted ports.

Type : D--Dynamic , S--Static , R--Recovering

Type IP Address MAC Address Lease VLAN SVLAN Interface

==== =============== ============== ============ ==== ===== =================

D 192.168.0.1 0001-0203-0406 86335 1 N/A Ethernet1/0/1

--- 1 dhcp-snooping item(s) found ---

从以上显示信息可以看出，端口Ethernet1/0/1在配置IPv4动态绑定功能之后根据获取的DHCP Snooping表项产生了动态绑定表项。

1.5.3 与DHCP Relay配合的IPv4动态绑定功能配置举例

1. 组网需求

Switch通过接口Vlan-interface100和Vlan-interface200分别与客户端Host和DHCP server相连。Switch上使能DHCP Relay功能。

具体应用需求如下：

l Host（MAC地址为0001-0203-0406）通过DHCP relay从DHCP server上获取IP地址。

l 在接口Vlan-interface100上启用IPv4动态绑定功能，利用Switch上生成的DHCP Relay表项过滤端口转发的报文，仅允许通过DHCP server动态获取IP地址的客户端可以接入网络。

2. 组网图

图1-4 配置动态绑定功能组网图

3. 配置步骤

(1) 配置IPv4动态绑定功能

# 配置各接口的IP地址（略）。

# 在接口Vlan-interface100上配置IPv4动态绑定功能，绑定源IP地址和MAC地址。

<Switch> system-view

[Switch] vlan 100

[Switch-Vlan100] quit

[Switch] interface vlan-interface 100

[Switch-Vlan-interface100] ip verify source ip-address mac-address

[Switch-Vlan-interface100] quit

(2) 配置DHCP Relay

# 使能DHCP服务。

[Switch] dhcp enable

# 配置DHCP服务器的地址。

[Switch] dhcp relay server-group 1 ip 10.1.1.1

# 配置接口Vlan-interface100工作在DHCP中继模式。

[Switch] interface vlan-interface 100

[Switch-Vlan-interface100] dhcp select relay

# 配置接口Vlan-interface100对应服务器组1。

[Switch-Vlan-interface100] dhcp relay server-select 1

[Switch-Vlan-interface100] quit

4. 验证配置结果

# 显示生成的IPv4绑定表项信息。

[Switch] display ip source binding

Total entries found: 1

MAC Address IP Address VLAN Interface Type

0001-0203-0406 192.168.0.1 100 Vlan100 DHCP-RLY

1.5.4 IPv6静态绑定表项配置举例

1. 组网需求

IPv6客户端通过Device的端口Ethernet1/0/1接入网络。要求在Device上配置IPv6静态绑定表项，使得端口Ethernet1/0/1上只允许Host（MAC地址为0001-0202-0202、IPv6地址为2001::1）发送的IPv6报文通过。

2. 组网图

图1-5 配置IPv6静态绑定表项组网图

3. 配置步骤

# 在端口Ethernet1/0/1上配置IPv6动态绑定功能，绑定源IP地址和MAC地址。

<Device> system-view

[Device] interface ethernet1/0/1

[Device-Ethernet1/0/1] ipv6 verify source ipv6-address mac-address

# 在端口Ethernet1/0/1上配置IPv6静态绑定表项，绑定源IP地址和MAC地址，只允许IPv6地址为2001::1且MAC地址为00-01-02-02-02-02的IPv6报文通过。

[Device-Ethernet1/0/1] ipv6 source binding ipv6-address 2001::1 mac-address 0001-0202-0202

[Device-Ethernet1/0/1] quit

4. 验证配置结果

# 在Device上显示IPv6静态绑定表项配置成功。

[Device] display ipv6 source binding static

Total entries found: 1

MAC Address IP Address VLAN Interface Type

0001-0202-0202 2001::1 N/A Eth1/0/1 Static-IPv6

1.5.5 与DHCPv6 Snooping配合的IPv6动态绑定表项配置举例

1. 组网需求

DHCPv6客户端通过Device的端口Ethernet1/0/1接入网络，通过DHCPv6 server获取IPv6地址。

具体应用需求如下：

l Device上使能DHCPv6 Snooping功能，保证客户端从合法的服务器获取IP地址，且记录客户端IPv6地址及MAC地址的绑定关系。

l 在端口Ethernet1/0/1上启用IPv6动态绑定功能，利用动态获取的DHCPv6 Snooping表项过滤端口转发的报文，只允许通过DHCPv6 server动态获取IP地址的客户端接入网络。

2. 组网图

图1-6 配置与DHCPv6 Snooping配合的IPv6动态绑定功能组网图

3. 配置步骤

(1) 配置DHCPv6 Snooping

# 全局使能DHCPv6 Snooping功能。

<Device> system-view

[Device] ipv6 dhcp snooping enable

# 在VLAN 2内使能DHCPv6 Snooping功能。

[Device] vlan 2

[Device-vlan2] ipv6 dhcp snooping vlan enable

[Device] quit

# 配置端口Ethernet1/0/2为信任端口。

[Device] interface ethernet 1/0/2

[Device-Ethernet1/0/2] ipv6 dhcp snooping trust

[Device-Ethernet1/0/2] quit

(2) 配置IPv6动态绑定功能

# 配置端口Ethernet1/0/1的IPv6动态绑定功能，绑定源IP地址和MAC地址。

[Device] interface ethernet 1/0/1

[Device-Ethernet1/0/1] ipv6 verify source ipv6-address mac-address

[Device-Ethernet1/0/1] quit

4. 验证配置结果

# 客户端通过DHCPv6 server成功获取IP地址之后，通过执行以下命令可查看到已生成的IPv6动态绑定表项信息。

[Device] display ipv6 source binding

Total entries found: 1

MAC Address IP Address VLAN Interface Type

040a-0000-0001 2001::1 2 Eth1/0/1 DHCPv6-SNP

# 显示DHCPv6 Snooping已有的动态表项，查看其是否和端口Ethernet1/0/1生成的IPv6动态绑定表项一致。

[Device] display ipv6 dhcp snooping user-binding dynamic

IP Address MAC Address Lease VLAN Interface

============================== ============== ========== ==== ==================

2001::1 040a-0000-0001 286 2 Ethernet1/0/1

--- 1 DHCPv6 snooping item(s) found ---

从以上显示信息可以看出，IP Source Guard通过获取端口Ethernet1/0/1上产生的DHCPv6 Snooping表项成功生成了IPv6动态绑定表项。

1.5.6 与ND Snooping配合的IPv6动态绑定表项配置举例

1. 组网需求

IPv6客户端通过Device的端口Ethernet1/0/1接入网络。

具体应用需求如下：

l Device上使能ND Snooping功能，通过侦听DAD NS消息来建立ND Snooping表项。

l 在端口Ethernet1/0/1上启用IPv6动态绑定功能，利用动态获取的ND Snooping表项过滤端口收到的报文，只允许合法获取IPv6地址的客户端可以接入网络。

2. 组网图

图1-7 配置与ND Snooping配合的IPv6动态绑定功能组网图

3. 配置步骤

(1) 配置ND Snooping

# 在VLAN 2内使能ND Snooping功能。

<Device> system-view

[Device] vlan 2

[Device-vlan2] ipv6 nd snooping enable

[Device-vlan2] quit

(2) 配置IPv6动态绑定功能

# 在端口Ethernet1/0/1上配置IPv6动态绑定功能，绑定源IP地址和MAC地址。

[Device] interface ethernet1/0/1

[Device-Ethernet1/0/1] ipv6 verify source ipv6-address mac-address

[Device-Ethernet1/0/1] quit

4. 验证配置结果

# 在Device上显示生成的IPv6绑定表项信息。

[Device] display ipv6 source binding

Total entries found: 1

MAC Address IP Address VLAN Interface Type

040a-0000-0001 2001::1 2 Eth1/0/1 ND-SNP

# 显示ND Snooping已有的动态表项，查看其是否和端口Ethernet1/0/1获取的IPv6动态绑定表项一致。

[Device] display ipv6 nd snooping

IPv6 Address MAC Address VID Interface Aging Status

2001::1 040a-0000-0001 2 Eth1/0/1 25 Bound

---- Total entries: 1 ----

从以上显示信息可以看出，IP Source Guard通过获取端口Ethernet1/0/1上产生的ND Snooping表项成功生成了IPv6动态绑定表项。


1.6 常见配置错误举例

1.6.1 静态绑定表项配置和动态绑定功能配置失败

1. 故障现象

在端口上配置静态绑定表项、配置动态绑定功能均失败。

2. 故障分析

IP Source Guard功能跟聚合端口互斥。在聚合端口下不能配置静态绑定表项，也不能配置动态绑定功能。

3. 处理过程

将端口退出已加入的聚合组。


1 ARP攻击防御配置

ARP攻击防御功能中所指的“接口”为三层口，包括VLAN接口、三层以太网端口等。三层以太网端口是指被配置为三层模式的以太网端口，有关以太网端口模式切换的操作，请参见“二层技术-以太网交换配置指导”中的“以太网端口配置”。

相关链接

  • 1.1 ARP攻击防御简介
  • 1.2 ARP攻击防御配置任务简介
  • 1.3 配置ARP防止IP报文攻击功能
  • 1.4 配置ARP报文限速功能
  • 1.5 配置源MAC地址固定的ARP攻击检测功能
  • 1.6 配置ARP报文源MAC地址一致性检查功能
  • 1.7 配置ARP主动确认功能
  • 1.8 配置ARP Detection功能
  • 1.9 配置ARP自动扫描、固化功能
  • 1.10 配置ARP网关保护功能
  • 1.11 配置ARP过滤保护功能
父主题： 16-ARP攻击防御配置


1.1 ARP攻击防御简介

ARP协议有简单、易用的优点，但是也因为其没有任何安全机制而容易被攻击发起者利用。

l 攻击者可以仿冒用户、仿冒网关发送伪造的ARP报文，使网关或主机的ARP表项不正确，从而对网络进行攻击。

l 攻击者通过向设备发送大量目标IP地址不能解析的IP报文，使得设备试图反复地对目标IP地址进行解析，导致CPU负荷过重及网络流量过大。

l 攻击者向设备发送大量ARP报文，对设备的CPU形成冲击。

关于ARP攻击报文的特点以及ARP攻击类型的详细介绍，请参见“ARP攻击防范技术白皮书”。

目前ARP攻击和ARP病毒已经成为局域网安全的一大威胁，为了避免各种攻击带来的危害，设备提供了多种技术对攻击进行防范、检测和解决。

下面将详细介绍一下这些技术的原理以及配置。


1.2 ARP攻击防御配置任务简介

表1-1 ARP攻击防御配置任务简介

配置任务 |  |  | 说明 | 详细配置
防止泛洪攻击 | 配置ARP防止IP报文攻击功能 | 配置ARP源抑制功能 | 可选 建议在网关设备上配置本功能 | 1.3
 |  | 配置ARP黑洞路由功能 | 可选 建议在网关设备上配置本功能
 | 配置ARP报文限速功能 |  | 可选 建议在接入设备上配置本功能 | 1.4
 | 配置源MAC地址固定的ARP攻击检测功能 |  | 可选 建议在网关设备上配置本功能 | 1.5
防止仿冒用户、仿冒网关攻击 | 配置ARP报文源MAC地址一致性检查功能 |  | 可选 建议在网关设备上配置本功能 | 1.6
 | 配置ARP主动确认功能 |  | 可选 建议在网关设备上配置本功能 | 1.7
 | 配置ARP Detection功能 |  | 可选 建议在接入设备上配置本功能 | 1.8
 | 配置ARP自动扫描、固化功能 |  | 可选 建议在网关设备上配置本功能 | 1.9
 | 配置ARP网关保护功能 |  | 可选 建议在接入设备上配置本功能 | 1.10
 | 配置ARP过滤保护功能 |  | 可选 建议在接入设备上配置本功能 | 1.11


1.3 配置ARP防止IP报文攻击功能

1.3.1 ARP防止IP报文攻击功能简介

如果网络中有主机通过向设备发送大量目标IP地址不能解析的IP报文来攻击设备，则会造成下面的危害：

l 设备向目的网段发送大量ARP请求报文，加重目的网段的负载。

l 设备会试图反复地对目标IP地址进行解析，增加了CPU的负担。

为避免这种IP报文攻击所带来的危害，设备提供了下列两个功能：

l 如果发送攻击报文的源是固定的，可以采用ARP源抑制功能。开启该功能后，如果网络中某主机向设备某端口连续发送目标IP地址不能解析的IP报文，当每5秒内由此主机发出IP报文触发的ARP请求报文的流量超过设置的阈值，那么对于由此主机发出的IP报文，设备不允许其触发ARP请求，直至5秒后再处理，从而避免了恶意攻击所造成的危害。

l 如果发送攻击报文的源不固定，可以采用ARP黑洞路由功能。开启该功能后，一旦接收到目标IP地址不能解析的IP报文，设备立即产生一个黑洞路由，使得设备在一段时间内将去往该地址的报文直接丢弃。等待黑洞路由老化时间过后，如有报文触发则再次发起解析，如果解析成功则进行转发，否则仍然产生一个黑洞路由将去往该地址的报文丢弃。这种方式能够有效地防止IP报文的攻击，减轻CPU的负担。

1.3.2 配置ARP防止IP报文攻击功能

1. 配置ARP源抑制功能

表1-2 配置ARP源抑制功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
使能ARP源抑制功能 | arp source-suppression enable | 必选 缺省情况下，ARP源抑制功能处于关闭状态
配置ARP源抑制的阈值 | arp source-suppression limit limit-value | 可选 缺省情况下，ARP源抑制的阈值为10

2. 配置ARP黑洞路由功能

表1-3 配置ARP黑洞路由功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
使能ARP黑洞路由功能 | arp resolving-route enable | 必选 缺省情况，ARP黑洞路由功能处于开启状态

1.3.3 ARP防止IP报文攻击显示和维护

在完成上述配置后，在任意视图下执行 display 命令可以显示配置后ARP源抑制的运行情况，通过查看显示信息验证配置的效果。

表1-4 ARP源抑制显示和维护

操作 | 命令
显示ARP源抑制的配置信息 | display arp source-suppression [ | { begin | exclude | include } regular-expression ]

1.3.4 ARP防止IP报文攻击配置举例

1. 组网需求

某局域网内存在两个区域：研发区和办公区，分别属于VLAN 10和VLAN 20，通过接入交换机连接到网关Device，如 图1-1 所示。

网络管理员在监控网络时发现办公区存在大量ARP请求报文，通过分析认为存在IP泛洪攻击，为避免这种IP报文攻击所带来的危害，可采用ARP源抑制功能和ARP黑洞路由功能。

2. 组网图

图1-1 ARP防止IP报文攻击配置组网图

3. 配置思路

对攻击报文进行分析，如果发送攻击报文的源地址是固定的，采用ARP源抑制功能。在Device上做如下配置：

l 使能ARP源抑制功能；

l 配置ARP源抑制的阈值为100，即当每5秒内的ARP请求报文的流量超过100后，对于由此IP地址发出的IP报文，设备不允许其触发ARP请求，直至5秒后再处理。

否则采用ARP黑洞路由功能，在Device上配置ARP黑洞路由功能。

4. 配置步骤

(1) 配置ARP源抑制功能

# 使能ARP源抑制功能，并配置ARP源抑制的阈值为100。

<Device> system-view

[Device] arp source-suppression enable

[Device] arp source-suppression limit 100

(2) 配置ARP黑洞路由功能

# 使能ARP黑洞路由功能。

<Device> system-view

[Device] arp resolving-route enable


1.4 配置ARP报文限速功能

1.4.1 ARP报文限速功能简介

ARP报文限速功能是指对上送CPU的ARP报文进行限速，可以防止大量ARP报文对CPU进行冲击。例如，在配置了ARP Detection功能后，设备会将收到的ARP报文重定向到CPU进行检查，这样引入了新的问题：如果攻击者恶意构造大量ARP报文发往设备，会导致设备的CPU负担过重，从而造成其他功能无法正常运行甚至设备瘫痪，这个时候可以启用ARP报文限速功能来控制上送CPU的ARP报文的速率。

推荐用户在配置了ARP Detection、ARP Snooping、MFF，或者发现有ARP泛洪攻击的情况下，使用ARP报文限速功能。

1.4.2 配置ARP报文限速功能

使能ARP报文限速功能后，当端口上收到的ARP报文速率超过用户设定的限速值时，设备就会发送ARP超速的Trap和Log信息。为防止过多的Trap和Log信息干扰用户工作，用户可以设定信息的发送时间间隔。当用户设定的时间间隔超时时，设备将这个时间间隔内的超速峰值作为Trap和Log的速率值打印出来。

需要注意的是，只有开启了ARP报文限速的Trap功能后，才会生成Trap报文。

生成的Trap和Log报文将被发送到设备的信息中心，通过设置信息中心的参数，最终决定Trap和Log报文的输出规则（即是否允许输出以及输出方向）。（有关信息中心参数的配置请参见“网络管理和监控配置指导”中的“信息中心”。）

表1-5 配置ARP报文限速功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
开启ARP报文限速Trap功能 | snmp-agent trap enable arp rate-limit | 可选 缺省情况下，ARP报文限速Trap功能处于开启状态
配置当端口上的ARP报文速率超过用户设定的限速值时，设备发送Trap和Log的时间间隔 | arp rate-limit information interval seconds | 可选 缺省情况下，设备发送ARP超速Trap和Log的时间间隔为60秒
进入二层以太网端口/二层聚合接口视图 | interface interface-type interface-number | -
配置ARP报文限速功能 | arp rate-limit { disable | rate pps drop } | 必选 缺省情况下，ARP报文限速功能处于关闭状态

l 如果在二层聚合接口上配置了ARP报文限速功能，则只要聚合成员端口上的ARP报文速率超过用户设定的限速值，就会发送Trap和Log信息。

l snmp-agent trap enable arp rate-limit命令的详细介绍请参见“网络管理和监控命令参考/SNMP”中的 snmp-agent trap enable 命令。


1.5 配置源MAC地址固定的ARP攻击检测功能

1.5.1 源MAC地址固定的ARP攻击检测功能简介

本特性根据ARP报文的源MAC地址进行统计，在5秒内，如果收到同一源MAC地址的ARP报文超过一定的阈值，则认为存在攻击，系统会将此MAC地址添加到攻击检测表项中。在该攻击检测表项老化之前，如果设置的检查模式为过滤模式，则会打印Log信息并且将该源MAC地址发送的ARP报文过滤掉；如果设置的模式为监控模式，则只打印Log信息，不会将该源MAC地址发送的ARP报文过滤掉。

对于网关或一些重要的服务器，可能会发送大量ARP报文，为了使这些ARP报文不被过滤掉，可以将这类设备的MAC地址配置成保护MAC地址，这样，即使该MAC地址存在攻击也不会被检测、过滤。

只对上送CPU的ARP报文进行统计。

1.5.2 配置源MAC地址固定的ARP攻击检测功能

表1-6 配置源MAC地址固定的ARP攻击检测功能

配置步骤 | 命令 | 说明
进入系统视图 | system-view | -
使能源MAC地址固定的ARP攻击检测功能，并选择检查模式 | arp anti-attack source-mac { filter | monitor } | 必选 缺省情况下，源MAC地址固定的ARP攻击检测功能处于关闭状态
配置源MAC地址固定的ARP报文攻击检测的阈值 | arp anti-attack source-mac threshold threshold-value | 可选 缺省情况下，源MAC固定ARP报文攻击检测阈值为50
配置源MAC地址固定的ARP攻击检测表项的老化时间 | arp anti-attack source-mac aging-time time | 可选 缺省情况下，源MAC地址固定的ARP攻击检测表项的老化时间为300秒，即5分钟
配置保护MAC地址 | arp anti-attack source-mac exclude-mac mac-address&<1-10> | 可选 缺省情况下，没有配置任何保护MAC地址

对于已添加到源MAC地址固定的ARP攻击检测表项中的MAC地址，在等待设置的老化时间后，会重新恢复成普通MAC地址。

1.5.3 源MAC地址固定的ARP攻击检测显示和维护

在完成上述配置后，在任意视图下执行 display 命令可以显示配置后源MAC地址固定的ARP攻击检测的运行情况，通过查看显示信息验证配置的效果。

表1-7 源MAC地址固定的ARP攻击检测显示和维护

操作 | 命令
显示检测到的源MAC地址固定的ARP攻击检测表项 | display arp anti-attack source-mac { slot slot-number | interface interface-type interface-number } [ | { begin | exclude | include } regular-expression ]

1.5.4 源MAC地址固定的ARP攻击检测功能配置举例

1. 组网需求

某局域网内客户端通过网关与外部网络通信，网络环境如图1-2 所示。

网络管理员希望能够防止因恶意用户对网关发送大量ARP报文，造成设备瘫痪，并导致其它用户无法正常地访问外部网络；同时，对于正常的大量ARP报文仍然会进行处理。

2. 组网图

图1-2 源MAC地址固定的ARP攻击检测功能配置组网图

3. 配置思路

如果恶意用户发送大量报文的源MAC地址是使用客户端合法的MAC地址，并且源MAC是固定的，可以在网关上进行如下配置：

l 使能源MAC固定ARP攻击检测功能，并选择过滤模式；

l 配置源MAC固定ARP报文攻击检测的阈值；

l 配置源MAC固定的ARP攻击检测表项的老化时间；

l 配置服务器的MAC为保护MAC，使服务器可以发送大量ARP报文。

4. 配置步骤

# 使能源MAC固定ARP攻击检测功能，并选择过滤模式。

<Device> system-view

[Device] arp anti-attack source-mac filter

# 配置源MAC固定ARP报文攻击检测阈值为30个。

[Device] arp anti-attack source-mac threshold 30

# 配置源MAC地址固定的ARP攻击检测表项的老化时间为60秒。

[Device] arp anti-attack source-mac aging-time 60

# 配置源MAC固定攻击检查的保护MAC地址为0012-3f86-e94c。

[Device] arp anti-attack source-mac exclude-mac 0012-3f86-e94c


1.6 配置ARP报文源MAC地址一致性检查功能

1.6.1 ARP报文源MAC地址一致性检查功能简介

ARP报文源MAC地址一致性检查功能主要应用于网关设备上，防御以太网数据帧首部中的源MAC地址和ARP报文中的源MAC地址不同的ARP攻击。

配置本特性后，网关设备在进行ARP学习前将对ARP报文进行检查。如果以太网数据帧首部中的源MAC地址和ARP报文中的源MAC地址不同，则认为是攻击报文，将其丢弃；否则，继续进行ARP学习。

1.6.2 配置ARP报文源MAC地址一致性检查功能

表1-8 配置ARP报文源MAC地址一致性检查功能

配置步骤 | 命令 | 说明
进入系统视图 | system-view | -
使能ARP报文源MAC地址一致性检查功能 | arp anti-attack valid-check enable | 必选 缺省情况下，ARP报文源MAC地址一致性检查功能处于关闭状态


1.7 配置ARP主动确认功能

1.7.1 ARP主动确认功能简介

ARP的主动确认功能主要应用于网关设备上，防止攻击者仿冒用户欺骗网关设备。

启用ARP主动确认功能后，设备在新建或更新ARP表项前需进行主动确认，防止产生错误的ARP表项。关于工作原理的详细介绍请参见“ARP攻击防范技术白皮书”。

1.7.2 配置ARP主动确认功能

表1-9 配置ARP主动确认功能

配置步骤 | 命令 | 说明
进入系统视图 | system-view | -
使能ARP主动确认功能 | arp anti-attack active-ack enable | 必选 缺省情况下，ARP主动确认功能处于关闭状态


1.8 配置ARP Detection功能

1.8.1 ARP Detection功能简介

ARP Detection功能主要应用于接入设备上，对于合法用户的ARP报文进行正常转发，否则直接丢弃，从而防止仿冒用户、仿冒网关的攻击。

ARP Detection包含三个功能：用户合法性检查、ARP报文有效性检查、ARP报文强制转发。

1. 用户合法性检查

对于ARP信任端口，不进行用户合法性检查；对于ARP非信任端口，需要进行用户合法性检查，以防止仿冒用户的攻击。

用户合法性检查是根据ARP报文中源IP地址和源MAC地址检查用户是否是所属VLAN所在端口上的合法用户，包括基于IP Source Guard静态绑定表项的检查、基于DHCP Snooping安全表项的检查、基于802.1X安全表项的检查和OUI MAC地址的检查。

(1) 首先进行基于IP Source Guard静态绑定表项检查。如果找到了对应源IP地址和源MAC地址的静态绑定表项，认为该ARP报文合法，进行转发。如果找到了对应源IP地址的静态绑定表项但源MAC地址不符，认为该ARP报文非法，进行丢弃。如果没有找到对应源IP地址的静态绑定表项，继续进行DHCP Snooping安全表项、802.1X安全表项和OUI MAC地址检查。

(2) 在基于IP Source Guard静态绑定表项检查之后进行基于DHCP Snooping安全表项、802.1X安全表项和OUI MAC地址检查，只要符合三者中任何一个，就认为该ARP报文合法，进行转发。其中，OUI MAC地址检查指的是，只要ARP报文的源MAC地址为OUI MAC地址，并且使能了Voice VLAN功能，就认为是合法报文，检查通过。

(3) 如果所有检查都没有找到匹配的表项，则认为是非法报文，直接丢弃。

l IP Source Guard静态绑定表项通过 ip source binding 命令生成，详细介绍请参见“安全配置指导”中的“IP Source Guard”。

l DHCP Snooping安全表项通过DHCP Snooping功能自动生成，详细介绍请参见“三层技术-IP业务配置指导”中的“DHCP Snooping”。

l 802.1X安全表项通过802.1X功能产生，802.1X用户需要使用可以将IP地址上传的客户端，用户通过了802.1X认证并且将IP地址上传至使能ARP Detection的设备后，设备自动生成可用于ARP Detction的用户合法性检查的802.1X安全表项。802.1X的详细介绍请参见“安全配置指导”中的“802.1X”。

l 关于Voice VLAN和OUI MAC地址的详细介绍请参见“二层技术-以太网交换配置指导”中的“Voice VLAN”。

2. ARP报文有效性检查

对于ARP信任端口，不进行报文有效性检查；对于ARP非信任端口，需要根据配置对MAC地址和IP地址不合法的报文进行过滤。可以选择配置源MAC地址、目的MAC地址或IP地址检查模式。

l 对于源MAC地址的检查模式，会检查ARP报文中的源MAC地址和以太网报文头中的源MAC地址是否一致，一致则认为有效，否则丢弃报文；

l 对于目的MAC地址的检查模式（只针对ARP应答报文），会检查ARP应答报文中的目的MAC地址是否为全0或者全1，是否和以太网报文头中的目的MAC地址一致。全0、全1、不一致的报文都是无效的，无效的报文需要被丢弃；

l 对于IP地址检查模式，会检查ARP报文中的源IP和目的IP地址，全0、全1、或者组播IP地址都是不合法的，需要丢弃。对于ARP应答报文，源IP和目的IP地址都进行检查；对于ARP请求报文，只检查源IP地址。

3. ARP报文强制转发

对于从ARP信任端口接收到的ARP报文不受此功能影响，按照正常流程进行转发；对于从ARP非信任端口接收到的、已经通过用户合法性检查的ARP报文的处理过程如下：

l 对于ARP请求报文，通过信任端口进行转发；

l 对于ARP应答报文，首先按照报文中的以太网目的MAC地址进行转发，若在MAC地址表中没有查到目的MAC地址对应的表项，则将此ARP应答报文通过信任端口进行转发。

1.8.2 配置ARP Detection功能

如果既配置了报文有效性检查功能，又配置了用户合法性检查功能，那么先进行报文有效性检查，然后进行用户合法性检查。

1. 配置用户合法性检查功能

表1-10 配置用户合法性检查功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入VLAN视图 | vlan vlan-id | -
使能ARP Detection功能 | arp detection enable | 必选 缺省情况下，ARP Detection功能处于关闭状态。即不进行用户合法性检查
退回系统视图 | quit | -
进入二层以太网端口或者二层聚合接口视图 | interface interface-type interface-number | -
将不需要进行用户合法性检查的端口配置为ARP信任端口 | arp detection trust | 可选 缺省情况下，端口为ARP非信任端口

l 配置用户合法性检查功能时，必须至少配置IP Source Guard静态绑定表项、DHCP Snooping功能、802.1X功能三者之一，否则所有从ARP非信任端口收到的ARP报文都将被丢弃（使能了Voice VLAN功能的情况下，源MAC地址为OUI MAC地址的ARP报文不会被丢弃）。

l 在配置IP Source Guard静态绑定表项时，必须指定VLAN参数，否则ARP报文将无法通过基于IP Source Guard静态绑定表项的检查。

2. 配置ARP报文有效性检查功能

表1-11 配置ARP报文有效性检查功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入VLAN视图 | vlan vlan-id | -
使能ARP Detection功能 | arp detection enable | 必选 缺省情况下，ARP Detection功能处于关闭状态
退回系统视图 | quit | -
使能ARP报文有效性检查功能 | arp detection validate { dst-mac | ip | src-mac } * | 必选 缺省情况下， ARP报文有效性检查功能处于关闭状态
进入二层以太网端口或者二层聚合接口视图 | interface interface-type interface-number | -
将不需要进行ARP报文有效性检查的端口配置为ARP信任端口 | arp detection trust | 可选 缺省情况下，端口为ARP非信任端口

3. 配置ARP报文强制转发功能

进行下面的配置之前，需要保证已经配置了用户合法性检查功能。

表1-12 配置ARP报文强制转发功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入VLAN视图 | vlan vlan-id | -
使能ARP报文强制转发功能 | arp restricted-forwarding enable | 必选 缺省情况下，ARP报文强制转发功能处于关闭状态

1.8.3 ARP Detection显示和维护

在完成上述配置后，在任意视图下执行 display 命令可以显示配置后ARP Detection的运行情况，通过查看显示信息验证配置的效果。

在用户视图下，用户可以执行 reset 命令清除ARP Detection的统计信息。

表1-13 ARP Detection显示和维护

操作 | 命令
显示使能了ARP Detection功能的VLAN | display arp detection [ | { begin | exclude | include } regular-expression ]
显示ARP Detection功能报文检查的丢弃计数的统计信息 | display arp detection statistics [ interface interface-type interface-number ] [ | { begin | exclude | include } regular-expression ]
清除ARP Detection的统计信息 | reset arp detection statistics [ interface interface-type interface-number ]

1.8.4 用户合法性检查配置举例

1. 组网需求

l Switch A是DHCP服务器；Switch B是支持802.1X的设备，在VLAN 10内启用ARP Detection功能，对认证客户端进行保护，保证合法用户可以正常转发报文，否则丢弃。

l Host A和Host B是本地802.1X接入用户。

2. 组网图

图1-3 配置用户合法性检查组网图

3. 配置步骤

(1) 配置组网图中所有端口属于VLAN及Switch A对应VLAN接口的IP地址（略）

(2) 配置DHCP服务器Switch A

# 配置DHCP地址池0。

<SwitchA> system-view

[SwitchA] dhcp enable

[SwitchA] dhcp server ip-pool 0

[SwitchA-dhcp-pool-0] network 10.1.1.0 mask 255.255.255.0

(3) 配置客户端Host A和Host B（略），必须使用上传IP地址方式。

(4) 配置设备Switch B

# 配置dot1x功能。

<SwitchB> system-view

[SwitchB] dot1x

[SwitchB] interface ethernet 1/0/1

[SwitchB-Ethernet1/0/1] dot1x

[SwitchB-Ethernet1/0/1] quit

[SwitchB] interface ethernet 1/0/2

[SwitchB-Ethernet1/0/2] dot1x

[SwitchB-Ethernet1/0/2] quit

# 添加本地接入用户。

[SwitchB] local-user test

[SwitchB-luser-test] service-type lan-access

[SwitchB-luser-test] password simple test

[SwitchB-luser-test] quit

# 使能ARP Detection功能，对用户合法性进行检查。

[SwitchB] vlan 10

[SwitchB-vlan10] arp detection enable

# 端口状态缺省为非信任状态，上行端口配置为信任状态，下行端口按缺省配置。

[SwitchB-vlan10] interface ethernet 1/0/3

[SwitchB-Ethernet1/0/3] arp detection trust

[SwitchB-Ethernet1/0/3] quit

完成上述配置后，对于端口Ethernet1/0/1和Ethernet1/0/2收到的ARP报文，需基于802.1X安全表项进行用户合法性检查。

1.8.5 用户合法性检查和报文有效性检查配置举例

1. 组网需求

l Switch A是DHCP服务器；

l Host A是DHCP客户端；用户Host B的IP地址是10.1.1.6，MAC地址是0001-0203-0607。

l Switch B是DHCP Snooping设备，在VLAN 10内启用ARP Detection功能，对DHCP客户端和用户进行保护，保证合法用户可以正常转发报文，否则丢弃。

2. 组网图

图1-4 配置用户合法性检查和报文有效性检查组网图

3. 配置步骤

(1) 配置组网图中所有端口属于VLAN及Switch A对应VLAN接口的IP地址（略）

(2) 配置DHCP服务器Switch A

# 配置DHCP地址池0。

<SwitchA> system-view

[SwitchA] dhcp enable

[SwitchA] dhcp server ip-pool 0

[SwitchA-dhcp-pool-0] network 10.1.1.0 mask 255.255.255.0

(3) 配置DHCP客户端Host A和用户Host B（略）

(4) 配置设备Switch B

# 配置DHCP Snooping功能。

<SwitchB> system-view

[SwitchB] dhcp-snooping

[SwitchB] interface ethernet 1/0/3

[SwitchB-Ethernet1/0/3] dhcp-snooping trust

[SwitchB-Ethernet1/0/3] quit

# 使能ARP Detection功能，对用户合法性进行检查。

[SwitchB] vlan 10

[SwitchB-vlan10] arp detection enable

# 端口状态缺省为非信任状态，上行端口配置为信任状态，下行端口按缺省配置。

[SwitchB-vlan10] interface ethernet 1/0/3

[SwitchB-Ethernet1/0/3] arp detection trust

[SwitchB-Ethernet1/0/3] quit

# 在端口Ethernet1/0/2上配置IP Source Guard静态绑定表项。

[SwitchB] interface ethernet 1/0/2

[SwitchB-Ethernet1/0/2] ip source binding ip-address 10.1.1.6 mac-address 0001-0203-0607 vlan 10

[SwitchB-Ethernet1/0/2] quit

# 配置进行报文有效性检查。

[SwitchB] arp detection validate dst-mac ip src-mac

完成上述配置后，对于端口Ethernet1/0/1和Ethernet1/0/2收到的ARP报文，先进行报文有效性检查，然后基于IP Source Guard静态绑定表项、DHCP Snooping安全表项进行用户合法性检查。

1.8.6 ARP报文强制转发配置举例

1. 组网需求

l Switch A是DHCP服务器；

l Host A是DHCP客户端；用户Host B的IP地址是10.1.1.6，MAC地址是0001-0203-0607。

l Host A和Host B在设备Switch B上端口隔离，但是均和网关Switch A相通，Ethernet1/0/1、Ethernet1/0/2、Ethernet1/0/3均属于VLAN 10。

l Switch B是DHCP Snooping设备，在VLAN 10内启用ARP Detection功能，对DHCP客户端和用户进行保护，保证合法用户可以正常转发报文，否则丢弃。

要求：Switch B在启用ARP Detection功能后，对于ARP广播请求报文仍然能够进行端口隔离。

2. 组网图

图1-5 配置ARP报文强制转发组网图

3. 配置步骤

(1) 配置组网图中所有端口属于VLAN及Switch A对应VLAN接口的IP地址（略）

(2) 配置DHCP服务器Switch A

# 配置DHCP地址池0。

<SwitchA> system-view

[SwitchA] dhcp enable

[SwitchA] dhcp server ip-pool 0

[SwitchA-dhcp-pool-0] network 10.1.1.0 mask 255.255.255.0

(3) 配置DHCP客户端Host A和用户Host B（略）

(4) 配置设备Switch B

# 配置DHCP Snooping功能。

<SwitchB> system-view

[SwitchB] dhcp-snooping

[SwitchB] interface ethernet 1/0/3

[SwitchB-Ethernet1/0/3] dhcp-snooping trust

[SwitchB-Ethernet1/0/3] quit

# 使能ARP Detection功能，对用户合法性进行检查。

[SwitchB] vlan 10

[SwitchB-vlan10] arp detection enable

# 端口状态缺省为非信任状态，上行端口配置为信任状态，下行端口按缺省配置。

[SwitchB-vlan10] interface ethernet 1/0/3

[SwitchB-Ethernet1/0/3] arp detection trust

[SwitchB-Ethernet1/0/3] quit

# 在端口Ethernet1/0/2上配置IP Source Guard静态绑定表项。

[SwitchB] interface ethernet 1/0/2

[SwitchB-Ethernet1/0/2] ip source binding ip-address 10.1.1.6 mac-address 0001-0203-0607 vlan 10

[SwitchB-Ethernet1/0/2] quit

# 配置进行报文有效性检查。

[SwitchB] arp detection validate dst-mac ip src-mac

# 配置端口隔离。

[SwitchB] interface ethernet 1/0/1

[SwitchB-Ethernet1/0/1] port-isolate enable

[SwitchB-Ethernet1/0/1] quit

[SwitchB] interface ethernet 1/0/2

[SwitchB-Ethernet1/0/2] port-isolate enable

[SwitchB-Ethernet1/0/2] quit

完成上述配置后，对于端口Ethernet1/0/1和Ethernet1/0/2收到的ARP报文，先进行报文有效性检查，然后基于IP Source Guard静态绑定表项、DHCP Snooping安全表项进行用户合法性检查。但是，Host A发往Switch A的ARP广播请求报文，由于通过了用户合法性检查，所以能够被转发到Host B，端口隔离功能失效。

# 配置ARP报文强制转发功能。

[SwitchB] vlan 10

[SwitchB-vlan10] arp restricted-forwarding enable

[SwitchB-vlan10] quit

此时，Host A发往Switch A的合法ARP广播请求报文只能通过信任端口Ethernet1/0/3转发，不能被Host B接收到，端口隔离功能可以正常工作。


1.9 配置ARP自动扫描、固化功能

1.9.1 ARP自动扫描、固化功能简介

ARP自动扫描功能一般与ARP固化功能配合使用：

l 启用ARP自动扫描功能后，设备会对局域网内的邻居自动进行扫描（向邻居发送ARP请求报文，获取邻居的MAC地址，从而建立动态ARP表项）。

l ARP固化功能用来将当前的ARP动态表项（包括ARP自动扫描生成的动态ARP表项）转换为静态ARP表项。通过对动态ARP表项的固化，可以有效的防止攻击者修改ARP表项。

推荐在网吧这种环境稳定的小型网络中使用这两个功能。

1.9.2 配置ARP自动扫描、固化功能

表1-14 配置ARP自动扫描、固化功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
启动ARP自动扫描功能 | arp scan [ start-ip-address to end-ip-address ] | 必选
退回系统视图 | quit | -
配置ARP固化功能 | arp fixup | 必选

l 对于已存在ARP表项的IP地址不进行扫描。

l 扫描操作可能比较耗时，用户可以通过<Ctrl_C>来终止扫描（在终止扫描时，对于已经收到的邻居应答，会建立该邻居的动态ARP表项）。

l 固化后的静态ARP表项与配置产生的静态ARP表项相同。

l 通过 arp fixup 命令将当前的动态ARP表项转换为静态ARP表项后，后续学习到的动态ARP表项可以通过再次执行 arp fixup 命令进行固化。

l 固化生成的静态ARP表项数量同样受到设备可以支持的静态ARP表项数目的限制，由于静态ARP表项数量的限制可能导致只有部分动态ARP表项被固化。

l 通过固化生成的静态ARP表项，可以通过命令行 undo arp ip-address [ vpn-instance-name ]逐条删除，也可以通过命令行 reset arp all 或 reset arp static 全部删除。


1.10 配置ARP网关保护功能

1.10.1 ARP网关保护功能简介

在设备上不与网关相连的端口上配置此功能，可以防止伪造网关攻击。

在端口配置此功能后，当端口收到ARP报文时，将检查ARP报文的源IP地址是否和配置的被保护网关的IP地址相同。如果相同，则认为此报文非法，将其丢弃；否则，认为此报文合法，继续进行后续处理。

1.10.2 配置ARP网关保护功能

表1-15 配置ARP网关保护功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入二层以太网端口视图/二层聚合接口视图 | interface interface-type interface-number | -
开启ARP网关保护功能，配置被保护的网关IP地址 | arp filter source ip-address | 必选 缺省情况下，ARP网关保护功能处于关闭状态

l 每个端口最多支持配置8个被保护的网关IP地址。

l 不能在同一端口下同时配置命令 arp filter source 和 arp filter binding。

l 本功能与ARP Detection、MFF和ARP Snooping功能配合使用时，先进行本功能检查，本功能检查通过后才会进行其他配合功能的处理。

1.10.3 ARP网关保护功能配置举例

1. 组网需求

与Switch B相连的Host B进行了仿造网关Switch A（IP地址为10.1.1.1）的ARP攻击，导致与Switch B相连的设备与网关Switch A通信时错误发往了Host B。

要求：通过配置防止这种仿造网关攻击。

2. 组网图

图1-6 配置ARP网关保护功能组网图

3. 配置步骤

# 在Switch B上配置ARP网关保护功能。

<SwitchB> system-view

[SwitchB] interface ethernet 1/0/1

[SwitchB-Ethernet1/0/1] arp filter source 10.1.1.1

[SwitchB-Ethernet1/0/1] quit

[SwitchB] interface ethernet 1/0/2

[SwitchB-Ethernet1/0/2] arp filter source 10.1.1.1

完成上述配置后，对于Host B发送的伪造的源IP地址为网关IP地址的ARP报文将会被丢弃，不会再被转发。


1.11 配置ARP过滤保护功能

1.11.1 ARP过滤保护功能简介

本功能用来限制端口下允许通过的ARP报文，可以防止仿冒网关和仿冒用户的攻击。

在端口配置此功能后，当端口收到ARP报文时，将检查ARP报文的源IP地址和源MAC地址是否和允许通过的IP地址和MAC地址相同：

l 如果相同，则认为此报文合法，继续进行后续处理；

l 如果不相同，则认为此报文非法，将其丢弃。

1.11.2 配置ARP过滤保护功能

表1-16 配置ARP过滤保护功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入二层以太网端口视图/二层聚合接口视图 | interface interface-type interface-number | -
开启ARP过滤保护功能，配置允许通过的ARP报文的源IP地址和源MAC地址 | arp filter binding ip-address mac-address | 必选 缺省情况下，ARP过滤保护功能处于关闭状态

l 每个端口最多支持配置8组允许通过的ARP报文的源IP地址和源MAC地址。

l 不能在同一端口下同时配置命令 arp filter source 和 arp filter binding。

l 本功能与ARP Detection、MFF和ARP Snooping功能配合使用时，先进行本功能检查，本功能检查通过后才会进行其他配合功能的处理。

1.11.3 ARP过滤保护功能配置举例

1. 组网需求

l Host A的IP地址为10.1.1.2，MAC地址为000f-e349-1233。

l Host B的IP地址为10.1.1.3，MAC地址为000f-e349-1234。

l 限制Switch B的Ethernet1/0/1、Ethernet1/0/2端口只允许指定用户接入，不允许其他用户接入。

2. 组网图

图1-7 配置ARP过滤保护功能组网图

3. 配置步骤

# 配置Switch B的ARP过滤保护功能。

<SwitchB> system-view

[SwitchB] interface ethernet 1/0/1

[SwitchB-Ethernet1/0/1] arp filter binding 10.1.1.2 000f-e349-1233

[SwitchB-Ethernet1/0/1] quit

[SwitchB] interface ethernet 1/0/2

[SwitchB-Ethernet1/0/2] arp filter binding 10.1.1.3 000f-e349-1234

完成上述配置后，端口Ethernet1/0/1收到Host A发出的源IP地址为10.1.1.2、源MAC地址为000f-e349-1233的ARP报文将被允许通过，其他ARP报文将被丢弃；端口Ethernet1/0/2收到Host B发出的源IP地址为10.1.1.3、源MAC地址为000f-e349-1234的ARP报文将被允许通过，其他ARP报文将被丢弃。


1 ND攻击防御配置

相关链接

  • 1.1 ND攻击防御简介
  • 1.2 配置ND协议报文源MAC地址一致性检查功能
  • 1.3 配置ND Detection功能
父主题： 17-ND攻击防御配置


1.1 ND攻击防御简介

IPv6 ND（Neighbor Discovery，邻居发现）协议使用五种类型的ICMPv6消息，实现下面五种功能：地址解析、验证邻居是否可达、重复地址检测、路由器发现/前缀发现及地址自动配置、重定向。

ND协议使用的五种ICMPv6消息如下：

l 邻居请求消息NS（Neighbor Solicitation）

l 邻居通告消息NA（Neighbor Advertisement）

l 路由器请求消息RS（Router Solicitation）

l 路由器通告消息RA（Router Advertisement）

l 重定向消息RR（Redirect）

关于ND协议五种功能的详细介绍，请参见“三层技术-IP业务配置指导”中的“IPv6基础”。

ND协议功能强大，但是却没有任何安全机制，容易被攻击发起者利用。

如 图1-1 所示，当设备Switch作为二层接入设备时，攻击者Host B可以仿冒其他用户、仿冒网关发送伪造的ND报文，对网络进行攻击：

l 如果攻击者仿冒其他用户的IP发送NS/NA/RS报文，将会改写网关或者其他用户的ND表项，导致被仿冒用户的报文错误的发送到攻击者的PC上。

l 如果攻击者仿冒网关发送RA报文，会导致其它用户的IPv6配置参数错误和ND表项被改写。

图1-1 ND攻击示意图

伪造的ND报文具有如下特点：

l 伪造的ND报文中源MAC地址和源链路层选项地址中的MAC地址不一致。

l 伪造的ND报文中源IPv6地址和源MAC地址的映射关系不是合法用户真实的映射关系。

根据上述攻击报文的特点，设备开发了多种功能对ND攻击进行检测，可以有效地防范ND攻击带来的危害。


1.2 配置ND协议报文源MAC地址一致性检查功能

ND协议报文源MAC地址一致性检查功能主要应用于网关设备上，防御ND协议报文中的源MAC地址和源链路层选项地址中的MAC地址不同的ND攻击。

配置本特性后，网关设备会对接收的ND协议报文进行检查。如果ND协议报文中的源MAC地址和源链路层选项地址中的MAC地址不同，则认为是攻击报文，将其丢弃。

表1-1 配置ND协议报文源MAC地址一致性检查功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
使能ND协议报文源MAC地址一致性检查功能 | ipv6 nd mac-check enable | 可选 缺省情况下，ND协议报文源MAC地址一致性检查功能处于关闭状态

对于VRRP组网，目前NA回复报文的源MAC地址和源链路层选项地址中的MAC地址都是不一致的，因此对于VRRP组网不要使能ND协议报文源MAC地址一致性检查功能。


1.3 配置ND Detection功能

1.3.1 ND Detection功能简介

ND Detection功能主要应用于接入设备上，检查用户的合法性。对于合法用户的ND报文进行正常转发，否则直接丢弃，从而防止仿冒用户、仿冒网关的攻击。

ND Detection功能将接入设备上的端口分为两种：ND信任端口、ND非信任端口。

l 对于ND信任端口，不进行用户合法性检查；

l 对于ND非信任端口，如果收到RA和RR消息，则认为是非法报文直接丢弃，如果收到其它类型的ND报文，则需要进行用户合法性检查，以防止仿冒用户的攻击。

用户合法性检查是根据ND报文中源IPv6地址和源MAC地址，检查用户是否是报文收到端口所属VLAN上的合法用户，包括基于IP Source Guard的IPv6静态绑定表项的检查、基于ND Snooping表项的检查和基于DHCPv6 Snooping安全表项的检查。在这三种表项都存在的情况下，检查过程如下：

l 首先进行基于IP Source Guard的IPv6静态绑定表项检查。如果找到了对应源IPv6地址和源MAC地址的静态绑定表项，认为该ND报文合法，进行转发。如果找到了对应源IPv6地址的静态绑定表项但源MAC地址不符，认为该ND报文非法，进行丢弃。如果没有找到对应源IPv6地址的静态绑定表项，继续进行DHCPv6 Snooping安全表项、ND Snooping安全表项检查。

l 在基于IP Source Guard的IPv6静态绑定表项检查之后进行基于DHCPv6 Snooping安全表项、ND Snooping安全表项检查，只要符合两者中任何一个，就认为该ND报文合法，进行转发。

l 如果所有检查都没有找到匹配的表项，则认为是非法报文，直接丢弃。

l IP Source Guard的IPv6静态绑定表项通过 ipv6 source binding 命令生成，详细介绍请参见“安全配置指导”中的“IP Source Guard”。

l DHCPv6 Snooping安全表项通过DHCPv6 Snooping功能自动生成，详细介绍请参见“三层技术-IP业务配置指导”中的“DHCPv6 Snooping”。

l ND Snooping安全表项通过ND Snooping功能自动生成，详细介绍请参见“三层技术-IP业务配置指导”中的“IPv6基础”。

1.3.2 配置ND Detection功能

表1-2 配置ND Detection功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入VLAN视图 | vlan vlan-id | -
使能ND Detection功能 | ipv6 nd detection enable | 必选 缺省情况下，ND Detection功能处于关闭状态。即不进行用户合法性检查
退回系统视图 | quit | -
进入二层以太网端口视图或二层聚合接口视图 | interface interface-type interface-number | -
将不需要进行用户合法性检查的端口配置为ND信任端口 | ipv6 nd detection trust | 可选 缺省情况下，端口为ND非信任端口

l 配置ND Detection功能时，必须至少配置IP Source Guard的IPv6静态绑定表项、DHCPv6 Snooping功能、ND Snooping功能三者之一，否则所有从ND非信任端口收到的ND报文都将被丢弃。

l 在配置IP Source Guard静态绑定表项时，必须指定VLAN参数，否则ND报文将无法通过基于IP Source Guard静态绑定表项的检查。

1.3.3 ND Detection功能显示和维护

在完成上述配置后，在任意视图下执行 display 命令可以显示配置后ND Detection的运行情况，通过查看显示信息验证配置的效果。

在用户视图下，用户可以执行 reset 命令清除ND Detection的统计信息。

表1-3 ND Detection功能显示和维护

操作 | 命令
显示ND Detection的配置信息 | display ipv6 nd detection [ | { begin | exclude | include } regular-expression ]
显示ND Detection进行用户合法性检查时丢弃报文的统计信息 | display ipv6 nd detection statistics [ interface interface-type interface-number ] [ | { begin | exclude | include } regular-expression ]
清除ND Detection的统计信息 | reset ipv6 nd detection statistics [ interface interface-type interface-number ]

1.3.4 ND Detection功能配置举例

1. 组网需求

用户Host A和Host B通过Switch B接入网关Switch A。用户Host A的IPv6地址是10::5，MAC地址是0001-0203-0405。用户Host B的IPv6地址是10::6，MAC地址是0001-0203-0607。

要求：在Switch B上启用ND Detection功能对用户的合法性进行检查，保证合法用户的报文可以被正常转发，非法用户的报文被丢弃。

2. 组网图

图1-2 配置ND Detection组网图

3. 配置步骤

(1) 配置Switch A

# 使能IPv6转发功能。

<SwitchA> system-view

[SwitchA] ipv6

# 创建VLAN 10。

[SwitchA] vlan 10

[SwitchA-vlan10] quit

# 配置端口Ethernet1/0/3允许VLAN 10的报文通过。

[SwitchA] interface ethernet 1/0/3

[SwitchA-Ethernet1/0/3] port link-type trunk

[SwitchA-Ethernet1/0/3] port trunk permit vlan 10

[SwitchA-Ethernet1/0/3] quit

# 配置VLAN接口10的IPv6地址。

[SwitchA] interface vlan-interface 10

[SwitchA-Vlan-interface10] ipv6 address 10::1/64

[SwitchA-Vlan-interface10] quit

(2) 配置Switch B

# 使能IPv6转发功能。

<SwitchB> system-view

[SwitchB] ipv6

# 创建VLAN 10。

[SwitchB] vlan 10

[SwitchB-vlan10] quit

# 配置端口Ethernet1/0/1～Ethernet1/0/3允许VLAN 10的报文通过。

[SwitchB] interface ethernet 1/0/1

[SwitchB-Ethernet1/0/1] port access vlan 10

[SwitchB-Ethernet1/0/1] quit

[SwitchB] interface ethernet 1/0/2

[SwitchB-Ethernet1/0/2] port access vlan 10

[SwitchB-Ethernet1/0/2] quit

[SwitchB] interface ethernet 1/0/3

[SwitchB-Ethernet1/0/3] port link-type trunk

[SwitchB-Ethernet1/0/3] port trunk permit vlan 10

[SwitchB-Ethernet1/0/3] quit

# 使能全球单播类型地址和链路本地类型地址的ND Snooping功能。

[SwitchB] ipv6 nd snooping enable link-local

[SwitchB] ipv6 nd snooping enable global

[SwitchB] vlan 10

[SwitchB-vlan10] ipv6 nd snooping enable

# 使能ND Detection功能。

[SwitchB-vlan10] ipv6 nd detection enable

[SwitchB-vlan10] quit

# 将上行端口Ethernet1/0/3配置为ND信任端口，下行端口Ethernet1/0/1和Ethernet1/0/2采用缺省配置，即为ND非信任端口。

[SwitchB] interface ethernet 1/0/3

[SwitchB-Ethernet1/0/3] ipv6 nd detection trust

完成上述配置后，对于端口Ethernet1/0/1和Ethernet1/0/2收到的ND报文，基于ND Snooping安全表项进行检查。


1 配置URPF

在以下的介绍中所指的路由器，代表了一般意义下的路由器以及运行了路由协议的以太网交换机。为提高可读性，在手册的描述中将不另行说明。

相关链接

  • 1.1 URPF简介
  • 1.2 配置URPF
  • 1.3 URPF典型配置举例
父主题： 18-URPF配置


1.1 URPF简介

1.1.1 URPF概述

URPF（Unicast Reverse Path Forwarding，单播反向路径转发）的主要功能是用于防止基于源地址欺骗的网络攻击行为，例如基于源地址欺骗的DoS（Denial of Service，拒绝服务）攻击和DDoS（Distributed Denial of Service，分布式拒绝服务）攻击。

源地址欺骗攻击为入侵者构造出一系列带有伪造源地址的报文来产生攻击，对于使用基于IP地址验证的应用来说，此攻击方法可以导致未被授权用户以他人身份获得访问系统的权限，甚至是以管理员权限来访问。即使响应报文不能达到攻击者，同样也会造成对被攻击对象的破坏。

图1-1 源地址欺骗攻击示意图

如图1-1 所示，在Router A上伪造源地址为2.2.2.1的报文，以非常高的速率向服务器Router B发起请求，Router B响应请求时将向真正的“2.2.2.1”发送报文。这种非法报文对Router B和Router C都造成了攻击。

URPF技术可以应用在上述环境中，对报文的源地址进行反查，并依据其合法性对报文进行过滤，阻止基于源地址欺骗的攻击。

1.1.2 URPF检查方式

URPF检查有严格（strict）型和松散（loose）型两种。

1. 严格型URPF

不仅检查报文的源地址是否在FIB表中存在，而且检查报文的入接口与FIB表是否匹配。

在一些特殊情况下（如非对称路由），严格型检查会错误的丢弃非攻击报文。

一般将严格型检查布置在ISP的用户端和ISP端之间。

2. 松散型URPF

仅检查报文的源地址是否在FIB表中存在，而不再检查报文的入接口与FIB表是否匹配。

松散型检查可以避免错误的拦截合法用户的报文，但是也容易忽略一些攻击报文。

一般将松散型检查布置在ISP-ISP端。另外，如果用户无法保证路由对称，可以使用松散型检查。

1.1.3 URPF处理流程

组播报文不进行URPF检查。

URPF的处理流程如图1-2 所示。

图1-2 URPF处理流程图

(1) 首先检查源地址合法性：

l 对于广播地址，直接予以丢弃。

l 对于全零地址，如果目的地址不是广播，则丢弃。（源地址为0.0.0.0，目的地址为255.255.255.255的报文，可能是DHCP或者BOOTP报文，不做丢弃处理。）

l 否则，进入步骤（2）。

(2) 然后检查报文的源地址在FIB表中是否存在匹配的路由。如果在FIB表中查找失败，则进入步骤（6），否则进入步骤（3）；

(3) 查看是否是loose型检查，如果是，则进入步骤（8）；否则查看报文的源地址在FIB表中匹配的路由是否是直连路由。如果是直连路由，则进入步骤（5），否则进入步骤（4）；

(4) 检查报文源地址与入接口是否匹配。反向查找报文出接口（反向查找是指查找以该报文源IP地址为目的IP地址的报文的出接口），若其中至少有一个出接口和报文的入接口相匹配，则进入步骤（8）；如果不匹配，进入步骤（9）；

(5) 检查报文的源IP地址在ARP表中是否存在匹配的ARP表项。如果在ARP表中查找失败，则进入步骤（8）；否则进入步骤（9）；

(6) 检查FIB中是否存在缺省路由，如果没有存在缺省路由，则进入步骤（9）；否则进入步骤（7）；

(7) 查看是否是loose型检查，如果是，则进入步骤（8）；否则检查缺省路由的出接口是否与报文的入接口一致，如果一致，则进入步骤（8），如果不一致，则进入步骤（9）；

(8) 报文通过检查，进行正常转发。

(9) 交换机丢弃该报文。

1.1.4 典型组网应用

图1-3 URPF典型组网应用

在ISP与用户端，配置严格URPF，在ISP与ISP端，配置松散URPF。


1.2 配置URPF

表1-1 配置全局URPF

配置步骤 | 命令 | 说明
进入系统视图 | system-view | -
在全局使能URPF检查 | ip urpf { loose | strict } | 必选 缺省情况下，全局禁止URPF检查

l 当本系列以太网交换机开启URPF功能时，会出现路由规格减半情况（路由规格减半情况为：交换机支持的最大可容纳的路由数，在开启URPF功能后变为开启前的一半）。

l 当交换机的路由数超过该交换机可最大容纳的路由数一半时，URPF功能将不能开启，避免了路由表项丢失以及由其引起的数据包丢失。


1.3 URPF典型配置举例

1. 组网需求

客户交换机Switch A与ISP交换机Switch B直连，在Switch B和Switch A上启动严格型URPF检查，防止基于源地址欺骗的网络攻击行为。

2. 组网图

图1-4 URPF配置举例组网图

3. 配置步骤

(1) 配置Switch A

# 配置严格型URPF检查。

<SwitchA> system-view

[SwitchA] ip urpf strict

(2) 配置Switch B

# 配置严格型URPF检查。

<SwitchB> system-view

[SwitchB] ip urpf strict


1 MFF配置

相关链接

  • 1.1 MFF简介
  • 1.2 配置MFF
  • 1.3 MFF显示和维护
  • 1.4 MFF典型配置举例
父主题： 19-MFF配置


1.1 MFF简介

1.1.1 MFF作用

在传统的以太网组网方案中，为了实现不同客户端主机之间的二层隔离和三层互通，通常采用在交换机上划分VLAN的方法。但是当彼此间需要二层隔离的用户较多时，这种方式会占用大量的VLAN资源；同时，为实现客户端之间三层互通，需要为每个VLAN规划不同的IP网段，并配置VLAN接口的IP地址，因此划分过多的VLAN会降低IP地址的分配效率。

为了改善这种现状，MAC-Forced Forwarding（下文统一用“MFF”替代）为同一广播域内实现客户端主机间的二层隔离和三层互通，提供了一种解决方案。

MFF截获用户的ARP请求报文，通过ARP代答机制，回复网关MAC地址的ARP应答报文。通过这种方式，可以强制用户将所有流量（包括同一子网内的流量）发送到网关，使网关可以监控数据流量，防止用户之间的恶意攻击，能更好的保障网络部署的安全性。

图1-1 应用组网图

如图1-1 所示，Switch A和Switch B作为以太网接入节点（Ethernet Access Nodes，EAN），提供了客户端主机与汇聚节点（Switch C）之间的连接。在以太网接入节点上配置MFF功能，可以使客户端的数据报文交互全部通过网关转发，实现了客户端之间的三层互通，又保证了二层数据的隔离，即：客户端主机不会了解相互的MAC地址。

MFF通常与DHCP Snooping、ARP Snooping、IP Source Guard、ARP Detection、VLAN映射等功能配合使用，在接入层交换机上实现客户端的流量过滤、二层隔离和三层互通，提高接入层网络的安全性。

l 关于DHCP Snooping功能的介绍，请参见“三层技术-IP业务配置指导”中的“DHCP Snooping”。

l 关于ARP Snooping功能的介绍，请参见“三层技术-IP业务配置指导”中的“ARP Snooping”。

l 关于IP Source Guard功能的介绍，请参见“安全配置指导”中的“IP Source Guard”。

l 关于ARP Detection功能的介绍，请参见“安全配置指导”中的“ARP攻击防御”。

l 关于VLAN映射功能的介绍，请参见“二层技术-以太网交换配置指导”中的“VLAN映射”。

l 客户端与配置了MFF功能的设备之间是隔离的，即不能ping通。

1.1.2 MFF端口角色

使能MFF功能的设备上存在两种端口角色：用户端口及网络端口。

1. 用户端口

MFF的用户端口是指直接接入网络终端用户的端口。

用户端口上对于不同的报文处理如下：

l 允许组播报文和DHCP报文通过；

l 对于ARP报文则上送CPU进行处理；

l 若已经学习到网关MAC地址，则仅允许目的MAC地址为网关MAC地址的单播报文通过，其他报文都将被丢弃；若没有学习到网关MAC地址，目的MAC地址为网关MAC地址的单播报文也被丢弃。

2. 网络端口

MFF的网络端口是指连接其他网络设备如接入交换机、汇聚交换机或网关的端口。

网络端口上对于不同的报文处理如下：

l 允许组播报文和DHCP报文通过；

l 对于ARP报文则上送CPU进行处理；

l 拒绝其他广播报文通过。

l 上行连接网关的端口，级联组网（多个MFF设备连接在一起的组网）时连接下游其他MFF设备的端口，或者环型组网时设备之间的端口，都应该配置为网络端口。

l 网络端口只是一种端口角色，它和该端口在网络拓扑中的位置没有关系；换句话说，网络端口不一定总是上行端口。

l 在使能MFF的VLAN中，所有端口不是网络端口就是用户端口，不存在二者之外的端口角色。

l 在使能MFF的VLAN中包含的所有端口中，只有网络端口支持链路聚合，用户端口不支持链路聚合。即，网络端口可以加入链路聚合组，而用户端口不能加入链路聚合组。关于链路聚合的介绍请参见“二层技术-以太网交换配置指导”中的“以太网链路聚合”。

1.1.3 MFF运行模式

MFF有两种运行模式：手工方式和自动方式。

1. 手工方式

手工方式应用于用户静态配置IP地址的场景中，这是因为在用户静态配置IP地址时，MFF无法通过DHCP报文来获取网关信息。另外，在用户静态配置IP时，由于没有依据进行用户与网关的映射，因此仅维护缺省网关的MAC地址，即，一个VLAN下仅维护一个缺省网关MAC地址。

使能了手工方式后，MFF代答网关对用户的ARP请求，以及伪造ARP请求探测网关MAC的依据都是ARP Snooping表项。

若在MFF学习到缺省网关MAC地址后，收到来自网关的、携带了与记录的缺省网关MAC地址不同的源MAC地址的ARP报文，则需要更新记录的网关MAC地址。

2. 自动方式

自动方式应用于用户通过DHCP协议动态获取IP地址的场景中。DHCP Snooping功能通过侦听DHCP ACK报文，并解析其中的Option 3字段（Router IP）来获取网关IP地址。

在使能MFF自动方式时，每一个DHCP Snooping用户绑定表项都应该有相对应的唯一网关IP地址。若DHCP ACK报文携带多个网关IP地址，则只记录第一个。若学习到的用户绑定表项不包含网关IP地址，或者没有记录在用户绑定表项中，则自动方式会根据当前VLAN记录的第一个网关作为用户网关应答该用户的ARP请求，除非其请求的是一个已知的网关地址。

同时，针对每一个网关IP地址，从第一个与其对应的用户绑定表项中获取用户IP地址及MAC地址，封装并伪造ARP请求，去探测网关的MAC地址。

l 自动方式下，一个VLAN内最多可以学习并维护20个网关信息，超过此限制的网关不再学习及处理。网关IP获取之后不会进行更新，即网关信息一旦生成就不会老化，除非去使能MFF。

l 若在MFF学习到网关MAC地址后，收到来自网关的ARP报文，如果该ARP报文中携带的源MAC地址与记录的网关MAC地址不同，则需要更新记录的网关MAC地址。

1.1.4 MFF工作机制

MFF环境下的用户之间的三层互通是通过ARP代答机制实现的，这种代答机制在一定程度上减少了网络侧和用户侧之间的广播报文数量。

MFF设备对ARP报文进行如下处理：

l 代答用户ARP请求。替代网关给用户主机回应ARP报文，使用户之间的报文交互都通过网关进行三层转发。这里，用户主机的ARP请求，既包括对于网关的请求，也包括对于其他用户IP的ARP请求。

l 代答网关ARP请求。替代用户主机给网关回应ARP报文。如果网关请求的表项在MFF设备上存在，就根据表项进行代答。如果表项还没有建立，则转发请求。以便达到减少广播的目的。

l 转发用户主机和网关发来的ARP应答。

l 监听网络中的ARP报文。更新网关IP地址和MAC地址对应表并广播。

1.1.5 协议规范

l RFC 4562：MAC-Forced Forwarding


1.2 配置MFF

1.2.1 配置准备

l 自动方式下要求设备使能DHCP Snooping功能并配置相应的DHCP Snooping信任端口；

l 手动方式下要求设备使能ARP Snooping功能。

1.2.2 使能MFF功能

表1-1 使能MFF功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入VLAN视图 | vlan vlan-id | -
使能MFF功能，同时配置MFF的工作方式 | mac-forced-forwarding { auto | default-gateway gateway-ip } | 必选 缺省情况下，MFF功能处于关闭状态

1.2.3 配置端口为网络端口

表1-2 配置以太网端口为网络端口

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入端口视图 | interface interface-type interface-number | -
配置端口为网络端口 | mac-forced-forwarding network-port | 必选 缺省情况下，端口为用户端口

1.2.4 配置对MFF维护的网关进行定时探测

对MFF维护的网关进行定时探测，可以感知网关MAC地址的变化。手工方式和自动方式都支持对网关的定时探测功能。

对网关进行定时探测的时间间隔为30秒。探测使用伪造ARP报文，在自动方式下其源IP地址和源MAC地址来自于DHCP Snooping表，在手工方式下其源IP地址和源MAC地址来自于ARP Snooping表。其原则是选择对应于探测网关的第一个用户绑定表项。这个伪造报文的源IP地址和源MAC地址一经选择，就会被记录并持续使用，若该用户表项被删除，则需要重新选择伪造侦听报文的用户信息。若用户表项删除之后网关没有对应用户，则清空网关探测信息。

表1-3 配置对MFF维护的网关进行定时探测

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入VLAN视图 | vlan vlan-id | -
配置对MFF维护的网关进行定时探测 | mac-forced-forwarding gateway probe | 必选 缺省情况下，定时探测功能处于关闭状态

1.2.5 配置网络中部署的服务器的IP地址

如果网络中部署了服务器，就需要在使能MFF功能的设备的服务器列表中添加此服务器的IP地址，否则，客户端与服务器之间不能进行通信。

在手工方式和自动方式下都可以配置本功能。这里的服务器IP地址可以是DHCP Server的IP地址，也可以是其他业务的服务器的IP地址或者是VRRP的实IP地址。

如果网络侧收到了源IP地址为服务器IP地址的ARP请求，则查询本设备记录的用户信息，利用查询到的用户信息代替用户应答给服务器。即，用户发送给服务器的报文，都会通过网关进行转发，而服务器发送给用户的报文，则不需经过网关转发。

表1-4 配置网络中部署的服务器的IP地址

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入VLAN视图 | vlan vlan-id | -
配置网络中部署的服务器的IP地址 | mac-forced-forwarding server server-ip&<1-10> | 必选 缺省情况下，没有配置网络中部署的服务器的IP地址


1.3 MFF显示和维护

在完成上述配置后，在任意视图下执行 display 命令可以显示配置后MFF的运行情况，通过查看显示信息验证配置的效果。

表1-5 MFF显示和维护

操作 | 命令
显示MFF端口配置信息 | display mac-forced-forwarding interface [ | { begin | exclude | include } regular-expression ]
显示指定VLAN的MFF信息 | display mac-forced-forwarding vlan vlan-id [ | { begin | exclude | include } regular-expression ]


1.4 MFF典型配置举例

1.4.1 自动方式树型组网典型配置举例

1. 组网需求

如图1-2 所示，Host A、Host B和Host C通过DHCP服务器动态获取IP地址，所有设备都在VLAN 100内。为了实现主机之间二层隔离，同时又可以通过Gateway进行三层互通，在Switch A和Switch B上启用自动方式MFF功能。

2. 组网图

图1-2 自动方式树型组网图

3. 配置步骤

(1) 配置Gateway

# 配置接口的IP地址。

<Gateway> system-view

[Gateway] interface Vlan-interface 1

[Gateway-Vlan-interface1] ip address 10.1.1.100 24

(2) 配置DHCP服务器

# 使能DHCP服务并创建DHCP地址池。

<Device> system-view

[Device] dhcp enable

[Device] dhcp server ip-pool 1

[Device-dhcp-pool-1] network 10.1.1.0 mask 255.255.255.0

# 配置DHCP地址池为DHCP客户端分配的网关地址。

[Device-dhcp-pool-1] gateway-list 10.1.1.100

[Device-dhcp-pool-1] quit

# 配置接口的IP地址。

[Device] interface Vlan-interface 1

[Device-Vlan-interface1] ip address 10.1.1.50 24

(3) 配置Switch A

# 使能DHCP Snooping功能。

<SwitchA> system-view

[SwitchA] dhcp-snooping

# 使能自动方式MFF功能。

[SwitchA] vlan 100

[SwitchA-vlan-100] mac-forced-forwarding auto

[SwitchA-vlan-100] quit

# 配置网络端口。

[SwitchA] interface ethernet 1/0/2

[SwitchA-Ethernet1/0/2] mac-forced-forwarding network-port

# 配置DHCP Snooping信任端口。

[SwitchA-Ethernet1/0/2] dhcp-snooping trust

(4) 配置Switch B

# 使能DHCP Snooping功能。

<SwitchB> system-view

[SwitchB] dhcp-snooping

# 使能自动方式MFF功能。

[SwitchB] vlan 100

[SwitchB-vlan-100] mac-forced-forwarding auto

[SwitchB-vlan-100] quit

# 配置网络端口。

[SwitchB] interface ethernet 1/0/6

[SwitchB-Ethernet1/0/6] mac-forced-forwarding network-port

# 配置DHCP Snooping信任端口。

[SwitchB-Ethernet1/0/6] dhcp-snooping trust

1.4.2 自动方式环型组网典型配置举例

1. 组网需求

如图1-3 所示，Host A、Host B和Host C通过DHCP服务器动态获取IP地址，网络中存在环路，所有设备都在VLAN 100内。为了实现主机之间二层隔离，同时又可以通过Gateway进行三层互通，在Switch A和Switch B上启用自动方式MFF功能。

2. 组网图

图1-3 自动方式环型组网图

3. 配置步骤

(1) 配置Gateway

# 配置接口的IP地址。

<Gateway> system-view

[Gateway] interface Vlan-interface 1

[Gateway-Vlan-interface1] ip address 10.1.1.100 24

(2) 配置DHCP服务器

# 使能DHCP服务并创建DHCP地址池。

<Device> system-view

[Device] dhcp enable

[Device] dhcp server ip-pool 1

[Device-dhcp-pool-1] network 10.1.1.0 mask 255.255.255.0

# 配置DHCP地址池为DHCP客户端分配的网关地址。

[Device-dhcp-pool-1] gateway-list 10.1.1.100

[Device-dhcp-pool-1] quit

# 配置接口的IP地址。

[Device] interface Vlan-interface 1

[Device-Vlan-interface1] ip address 10.1.1.50 24

(3) 配置Switch A

# 使能DHCP Snooping功能。

<SwitchA> system-view

[SwitchA] dhcp-snooping

# 启动STP协议。

[SwitchA] stp enable

# 使能自动方式MFF功能。

[SwitchA] vlan 100

[SwitchA-vlan-100] mac-forced-forwarding auto

[SwitchA-vlan-100] quit

# 配置网络端口。

[SwitchA] interface ethernet 1/0/2

[SwitchA-Ethernet1/0/2] mac-forced-forwarding network-port

# 配置DHCP Snooping信任端口。

[SwitchA-Ethernet1/0/2] dhcp-snooping trust

[SwitchA-Ethernet1/0/2] quit

# 配置网络端口。

[SwitchA] interface ethernet 1/0/3

[SwitchA-Ethernet1/0/3] mac-forced-forwarding network-port

# 配置DHCP Snooping信任端口。

[SwitchA-Ethernet1/0/3] dhcp-snooping trust no-user-binding

(4) 配置Switch B

# 使能DHCP Snooping功能。

<SwitchB> system-view

[SwitchB] dhcp-snooping

# 启动STP协议。

[SwitchB] stp enable

# 使能自动方式MFF功能。

[SwitchB] vlan 100

[SwitchB-vlan-100] mac-forced-forwarding auto

[SwitchB-vlan-100] quit

# 配置网络端口。

[SwitchB] interface ethernet 1/0/4

[SwitchB-Ethernet1/0/4] mac-forced-forwarding network-port

# 配置DHCP Snooping信任端口。

[SwitchB-Ethernet1/0/4] dhcp-snooping trust no-user-binding

[SwitchB-Ethernet1/0/4] quit

# 配置网络端口。

[SwitchB] interface ethernet 1/0/6

[SwitchB-Ethernet1/0/6] mac-forced-forwarding network-port

# 配置DHCP Snooping信任端口。

[SwitchB-Ethernet1/0/6] dhcp-snooping trust

(5) 配置Switch C

# 启动STP协议。

<SwitchC> system-view

[SwitchC] stp enable

1.4.3 手工方式下树型组网典型配置举例

1. 组网需求

如图1-4 所示，Host A、Host B和Host C配置静态IP地址，所有设备都在VLAN 100内。为了实现主机之间二层隔离，同时又可以通过Gateway进行三层互通，在Switch A和Switch B上启用手工方式MFF功能。为了实现主机与Server互通，需要手工配置网络中部署服务器的IP地址。

2. 组网图

图1-4 手工方式树型组网图

3. 配置步骤

(1) 如上图在客户端配置静态IP地址

(2) 配置Gateway

# 配置接口的IP地址。

<Gateway> system-view

[Gateway] interface Vlan-interface 1

[Gateway-Vlan-interface1] ip address 10.1.1.100 24

(3) 配置Switch A

# 使能手工方式MFF功能。

[SwitchA] vlan 100

[SwitchA-vlan-100] mac-forced-forwarding default-gateway 10.1.1.100

# 配置网络中部署的服务器的IP地址为10.1.1.200。

[SwitchA-vlan-100] mac-forced-forwarding server 10.1.1.200

# 使能ARP Snooping功能。

[SwitchA-vlan-100] arp-snooping enable

[SwitchA-vlan-100] quit

# 配置网络端口。

[SwitchA] interface ethernet 1/0/2

[SwitchA-Ethernet1/0/2] mac-forced-forwarding network-port

(4) 配置Switch B

# 使能手工方式MFF功能。

[SwitchB] vlan 100

[SwitchB-vlan-100] mac-forced-forwarding default-gateway 10.1.1.100

# 配置网络中部署的服务器的IP地址为10.1.1.200。

[SwitchB-vlan-100] mac-forced-forwarding server 10.1.1.200

# 使能ARP Snooping功能。

[SwitchB-vlan-100] arp-snooping enable

[SwitchB-vlan-100] quit

# 配置网络端口。

[SwitchB] interface ethernet 1/0/6

[SwitchB-Ethernet1/0/6] mac-forced-forwarding network-port

1.4.4 手工方式环型组网典型配置举例

1. 组网需求

如图1-5 所示，Host A、Host B和Host C配置静态IP地址，网络中存在环路，所有设备都在VLAN 100内。为了实现主机之间二层隔离，同时又可以通过Gateway进行三层互通，在Switch A和Switch B上启用手工方式MFF功能。为了实现主机与Server互通，需要手工配置网络中部署服务器的IP地址。

2. 组网图

图1-5 手工方式环型组网图

3. 配置步骤

(1) 如上图在客户端配置静态IP地址

(2) 配置Gateway

# 配置接口的IP地址。

<Gateway> system-view

[Gateway] interface Vlan-interface 1

[Gateway-Vlan-interface1] ip address 10.1.1.100 24

(3) 配置Switch A

# 启动STP协议。

[SwitchA] stp enable

# 使能手工方式MFF功能。

[SwitchA] vlan 100

[SwitchA-vlan-100] mac-forced-forwarding default-gateway 10.1.1.100

# 配置网络中部署的服务器的IP地址为10.1.1.200。

[SwitchA-vlan-100] mac-forced-forwarding server 10.1.1.200

# 使能ARP Snooping功能。

[SwitchA-vlan-100] arp-snooping enable

[SwitchA-vlan-100] quit

# 配置网络端口。

[SwitchA] interface ethernet 1/0/2

[SwitchA-Ethernet1/0/2] mac-forced-forwarding network-port

[SwitchA-Ethernet1/0/2] quit

[SwitchA] interface ethernet 1/0/3

[SwitchA-Ethernet1/0/3] mac-forced-forwarding network-port

(4) 配置Switch B

# 启动STP协议。

[SwitchB] stp enable

# 使能手工方式MFF功能。

[SwitchB] vlan 100

[SwitchB-vlan-100] mac-forced-forwarding default-gateway 10.1.1.100

# 配置网络中部署的服务器的IP地址为10.1.1.200。

[SwitchB-vlan-100] mac-forced-forwarding server 10.1.1.200

# 使能ARP Snooping功能。

[SwitchB-vlan-100] arp-snooping enable

[SwitchB-vlan-100] quit

# 配置网络端口。

[SwitchB] interface ethernet 1/0/4

[SwitchB-Ethernet1/0/4] mac-forced-forwarding network-port

[SwitchB-Ethernet1/0/4] quit

[SwitchB] interface ethernet 1/0/6

[SwitchB-Ethernet1/0/6] mac-forced-forwarding network-port

(5) 配置Switch C

# 启动STP协议。

<SwitchC> system-view

[SwitchC] stp enable


1 SAVI配置

相关链接

  • 1.1 SAVI简介
  • 1.2 SAVI的全局配置
  • 1.3 DHCPv6-Only场景中的SAVI配置
  • 1.4 SLAAC-Only场景中的SAVI配置
  • 1.5 DHCPv6与SLAAC混合场景中的SAVI配置
父主题： 20-SAVI配置


1.1 SAVI简介

SAVI（Source Address Validation，源地址有效性验证）特性应用在接入设备上，通过ND Snooping特性、DHCPv6 Snooping特性及IP Source Guard特性建立起地址和端口的绑定关系表，并且以绑定关系为依据对DHCPv6协议报文、ND协议报文和IPv6数据报文的源地址进行合法性的过滤检查。

SAVI特性可以在下列地址分配场景下使用：

l DHCPv6-Only：和配置SAVI特性的设备连接的主机只能通过DHCPv6方式获取地址。

l SLAAC-Only（Stateless Address Autoconfiguration，无状态地址自动配置）：和配置SAVI特性的设备连接的主机只能通过自动地址分配方式获取地址。

l DHCPv6与SLAAC混合：和配置SAVI特性的设备连接的主机可以通过DHCPv6方式和自动地址分配方式获取地址。

不同地址分配场景中的SAVI配置不同，下面将依次介绍SAVI的全局配置以及不同场景下的SAVI配置。


1.2 SAVI的全局配置

表1-1 SAVI的全局配置

操作 | 命令 | 说明
进入系统视图 | system-view | -
开启SAVI功能 | ipv6 savi strict | 必选 缺省情况下，SAVI功能处于关闭状态
配置等待通告地址冲突的NA报文的时间 | ipv6 savi dad-delay value | 可选 缺省情况下，等待通告地址冲突的NA报文的时间为1秒 ND Snooping表项在detect状态下，如果超过配置的等待时间没有收到NA消息，则说明节点可以使用此IPv6地址，此时记录的ND Snooping表项可以进入bound状态
配置等待DHCPv6客户端对获取地址作冲突检测的时间 | ipv6 savi dad-preparedelay value | 可选 缺省情况下，等待DHCPv6客户端对获取地址作冲突检测的时间为1秒 本命令配合DHCPv6 Snooping功能使用。DHCPv6 Snooping模块在侦听到客户端获取到地址后，还会侦听客户端是否对获取到的地址作冲突检测，如果超过配置的等待时间没有侦听到客户端发送的DAD NS报文，则设备会主动替客户端发送DAD NS报文

SAVI功能打开时，端口在down状态持续时间超过3分钟后，设备会删除与该端口对应的DHCPv6 Snooping表项和ND Snooping表项。


1.3 DHCPv6-Only场景中的SAVI配置

1. 场景描述

图1-1 DHCPv6-Only场景示意图

在 图1-1 所示的DHCPv6-Only场景下，Switch B通过以太网端口Ethernet1/0/1连接到DHCPv6服务器，通过以太网端口Ethernet1/0/2、Ethernet1/0/3连接到主机，Ethernet1/0/1、Ethernet1/0/2和Ethernet1/0/3都属于VLAN 2。主机只能通过DHCPv6方式获取IPv6地址，不能通过自动地址配置方式获取IPv6地址。在设备Switch B上配置SAVI特性后，设备Switch B只允许使用已绑定的DHCPv6方式分配的地址和链路本地地址发送的报文通过。

2. 配置思路

本场景需要在Switch B上进行下列配置：

l 开启SAVI功能。

l 使能DHCPv6 Snooping功能。DHCPv6 Snooping的详细介绍请参见“三层技术-IP业务配置指导”中的“DHCPv6 Snooping”。

l 使能链路本地类型地址的ND Snooping功能。ND Snooping的详细介绍请参见“三层技术-IP业务配置指导”中的“IPv6基础”。

l 为了检查端口上的ND协议报文，需要在VLAN下使能ND Detection功能。ND Detection的详细介绍请参见“安全配置指导”中的“ND攻击防御”。

l 在连接主机的端口上配置IP Source Guard的IPv6静态绑定表项（本配置可选，如果不配置，检查时将不检查静态绑定表项）。IPv6静态绑定表项的详细介绍请参见“安全配置指导”中的“IP Source Guard”。

l 在连接主机的端口上配置IP Source Guard的IPv6动态绑定功能。IPv6动态绑定功能的详细介绍请参见“安全配置指导”中的“IP Source Guard”。

3. 报文检查原则

接入设备Switch B会对DHCPv6 client发送的DHCPv6协议报文基于链路本地类型的ND Snooping表项检查，对ND协议报文基于链路本地类型的ND Snooping表项、DHCPv6 Snooping表项和静态绑定表项检查，对连接主机的端口上收到的IPv6数据报文基于下发到端口的动态绑定表项（包括链路本地类型的ND Snooping表项、DHCPv6 Snooping表项）和静态绑定表项检查。检查的内容包括MAC地址、IPv6地址、VLAN信息、入端口信息。

4. 配置步骤

# 开启SAVI功能。

<SwitchB> system-view

[SwitchB] ipv6 savi strict

# 使能IPv6转发功能。

[SwitchB] ipv6

# 全局使能DHCPv6 Snooping功能。

[SwitchB] ipv6 dhcp snooping enable

# 将端口Ethernet1/0/1、Ethernet1/0/2和Ethernet1/0/3加入VLAN 2。

[SwitchB] vlan 2

[SwitchB-vlan2] port ethernet 1/0/1 ethernet 1/0/2 ethernet 1/0/3

# 在VLAN 2内使能DHCPv6 Snooping功能。

[SwitchB-vlan2] ipv6 dhcp snooping vlan enable

[SwitchB] quit

# 配置Ethernet1/0/1端口为信任端口。

[SwitchB] interface ethernet 1/0/1

[SwitchB-Ethernet1/0/1] ipv6 dhcp snooping trust

[SwitchB-Ethernet1/0/1] quit

# 使能本地链路类型的ND Snooping功能和ND Detection功能。

[SwitchB] ipv6 nd snooping enable link-local

[SwitchB] vlan 2

[SwitchB-vlan2] ipv6 nd snooping enable

[SwitchB-vlan2] ipv6 nd detection enable

[SwitchB-vlan2] quit

# 下行端口Ethernet1/0/2和Ethernet1/0/3上启用IP Source Guard的IPv6动态绑定功能。

[SwitchB] interface ethernet 1/0/2

[SwitchB-Ethernet1/0/2] ipv6 verify source ipv6-address mac-address

[SwitchB-Ethernet1/0/2] quit

[SwitchB] interface ethernet 1/0/3

[SwitchB-Ethernet1/0/3] ipv6 verify source ipv6-address mac-address

[SwitchB-Ethernet1/0/3] quit


1.4 SLAAC-Only场景中的SAVI配置

1. 场景描述

图1-2 SLAAC-Only场景组网图

在 图1-2 所示的SLAAC-Only场景下，用户Host A和Host B通过Switch B接入网关Switch A。主机只能通过自动地址分配方式获取IPv6地址。在设备Switch B上配置SAVI特性后，设备Switch B只允许已绑定的无状态地址自动配置方式分配的地址发送的报文通过，不允许DHCPv6方式分配的地址发送的报文通过。

2. 配置思路

本场景需要在Switch B上进行下列配置：

l 开启SAVI功能。

l 使能全球单播类型地址和链路本地类型地址的ND Snooping功能。ND Snooping的详细介绍请参见“三层技术-IP业务配置指导”中的“IPv6基础”。

l 为了检查端口上的ND协议报文，需要在VLAN下使能ND Detection功能。ND Detection的详细介绍请参见“安全配置指导”中的“ND攻击防御”。

l 在连接主机的端口上配置IP Source Guard的IPv6静态绑定表项（本配置可选，如果不配置，检查时将不检查静态绑定表项）。IPv6静态绑定表项的详细介绍请参见“安全配置指导”中的“IP Source Guard”。

l 在连接主机的端口上配置IP Source Guard的IPv6动态绑定功能。IPv6动态绑定功能的详细介绍请参见“安全配置指导”中的“IP Source Guard”。

l 需要使能DHCPv6 Snooping功能，并且连接Gateway的端口保持默认的非trust状态，来保证主机不能通过DHCPv6方式获取到地址。DHCPv6 Snooping的详细介绍请参见“三层技术-IP业务配置指导”中的“DHCPv6 Snooping”。

3. 报文检查原则

接入设备Switch B会对ND协议报文基于ND Snooping表项、静态绑定表项检查，对连接主机的端口上收到的IPv6数据报文基于下发到端口的动态绑定表项（包括ND Snooping表项）和静态绑定表项检查。检查的内容包括MAC地址、IPv6地址、VLAN信息、入端口信息。

4. 配置步骤

# 开启SAVI功能。

<SwitchB> system-view

[SwitchB] ipv6 savi strict

# 使能IPv6转发功能。

[SwitchB] ipv6

# 将端口Ethernet1/0/1、Ethernet1/0/2和Ethernet1/0/3加入VLAN 10。

[SwitchB] vlan 10

[SwitchB-vlan10] port ethernet 1/0/1 ethernet 1/0/2 ethernet 1/0/3

[SwitchB-vlan10] quit

# 使能全球单播类型地址和链路本地类型地址的ND Snooping功能。

[SwitchB] ipv6 nd snooping enable link-local

[SwitchB] ipv6 nd snooping enable global

[SwitchB] vlan 10

[SwitchB-vlan10] ipv6 nd snooping enable

# 使能ND Detection功能。

[SwitchB-vlan10] ipv6 nd detection enable

[SwitchB-vlan10] quit

# 使能DHCPv6 Snooping功能来禁止DHCPv6协议报文转发。

[SwitchB] ipv6 dhcp snooping enable

# 将上行端口Ethernet1/0/3配置为ND信任端口。

[SwitchB] interface ethernet 1/0/3

[SwitchB-Ethernet1/0/3] ipv6 nd detection trust

[SwitchB-Ethernet1/0/3] quit

# 在下行端口Ethernet1/0/1和Ethernet1/0/2上配置IPv6动态绑定功能。

[SwitchB] interface ethernet 1/0/1

[SwitchB-Ethernet1/0/1] ipv6 verify source ipv6-address mac-address

[SwitchB-Ethernet1/0/1] quit

[SwitchB] interface ethernet 1/0/2

[SwitchB-Ethernet1/0/2] ipv6 verify source ipv6-address mac-address

[SwitchB-Ethernet1/0/2] quit


1.5 DHCPv6与SLAAC混合场景中的SAVI配置

1. 场景描述

图1-3 DHCPv6与SLAAC混合场景组网图

在 图1-3 所示的在混合场景下，Switch B通过以太网端口Ethernet1/0/1连接到DHCPv6服务器，通过以太网端口Ethernet1/0/3连接到DHCPv6客户端。用户Host A和Host B通过Switch B接入网关Switch A。Switch B上Ethernet1/0/1、Ethernet1/0/2、Ethernet1/0/3、Ethernet1/0/4和Ethernet1/0/5都属于VLAN 2。主机可以通过DHCPv6方式和自动地址分配方式获取地址。在设备Switch B上配置SAVI特性后，设备Switch B将允许DHCPv6方式分配的地址和已绑定的无状态地址自动配置方式分配的地址发送的报文通过。

2. 配置思路

本场景需要在Switch B上进行下列配置：

l 开启SAVI功能。

l 使能DHCPv6 Snooping功能。DHCPv6 Snooping的详细介绍请参见“三层技术-IP业务配置指导”中的“DHCPv6 Snooping”。

l 使能全球单播类型地址和链路本地类型地址的ND Snooping功能。ND Snooping的详细介绍请参见“三层技术-IP业务配置指导”中的“IPv6基础”。

l 为了检查端口上的ND协议报文，需要在VLAN下使能ND Detection功能。ND Detection的详细介绍请参见“安全配置指导”中的“ND攻击防御”。

l 在连接主机的端口上配置IP Source Guard的IPv6静态绑定表项（本配置可选，如果不配置，检查时将不检查静态绑定表项）。IPv6静态绑定表项的详细介绍请参见“安全配置指导”中的“IP Source Guard”。

l 在连接主机的端口上配置IP Source Guard的IPv6动态绑定功能。IPv6动态绑定功能的详细介绍请参见“安全配置指导”中的“IP Source Guard”。

3. 报文检查原则

接入设备Switch B会对DHCPv6 client发送的DHCPv6协议报文基于链路本地类型的ND Snooping表项检查，对ND协议报文基于ND Snooping表项、DHCPv6 Snooping表项和静态绑定表项检查，对连接主机的端口上收到的IPv6数据报文基于下发到端口的动态绑定表项（包括ND Snooping表项、DHCPv6 Snooping表项）和静态绑定表项检查。检查的内容包括MAC地址、IPv6地址、VLAN信息、入端口信息。

4. 配置步骤

# 开启SAVI功能。

<SwitchB> system-view

[SwitchB] ipv6 savi strict

# 使能IPv6转发功能。

[SwitchB] ipv6

# 使能DHCPv6 Snooping功能。

[SwitchB] ipv6 dhcp snooping enable

# 将端口Ethernet1/0/1、Ethernet1/0/2、Ethernet1/0/3、Ethernet1/0/4和Ethernet1/0/5加入VLAN 2。

[SwitchB] vlan 2

[SwitchB-vlan2] port ethernet 1/0/1 ethernet 1/0/2 ethernet 1/0/3 ethernet 1/0/4 ethernet 1/0/5

# 在VLAN 2内使能DHCPv6 Snooping功能。

[SwitchB-vlan2] ipv6 dhcp snooping vlan enable

[SwitchB] quit

# 配置Ethernet1/0/1端口为DHCPv6 Snooping信任端口。

[SwitchB] interface ethernet 1/0/1

[SwitchB-Ethernet1/0/1] ipv6 dhcp snooping trust

[SwitchB-Ethernet1/0/1] quit

# 使能ND Snooping功能和ND Detection功能。

[SwitchB] ipv6 nd snooping enable link-local

[SwitchB] ipv6 nd snooping enable global

[SwitchB] vlan 2

[SwitchB-vlan2] ipv6 nd snooping enable

[SwitchB-vlan2] ipv6 nd detection enable

[SwitchB-vlan2] quit

# 配置Ethernet1/0/2端口为ND detection信任端口。

[SwitchB] interface ethernet 1/0/2

[SwitchB-Ethernet1/0/2] ipv6 nd detection trust

[SwitchB-Ethernet1/0/2] quit

# 在下行端口Ethernet1/0/3、Ethernet1/0/4和Ethernet1/0/5上配置IPv6动态绑定功能。

[SwitchB] interface ethernet 1/0/3

[SwitchB-Ethernet1/0/3] ipv6 verify source ipv6-address mac-address

[SwitchB-Ethernet1/0/3] quit

[SwitchB] interface ethernet 1/0/4

[SwitchB-Ethernet1/0/4] ipv6 verify source ipv6-address mac-address

[SwitchB-Ethernet1/0/4] quit

[SwitchB] interface ethernet 1/0/5

[SwitchB-Ethernet1/0/5] ipv6 verify source ipv6-address mac-address


1 黑名单配置

相关链接

  • 1.1 黑名单功能简介简介
  • 1.2 配置黑名单
  • 1.3 黑名单显示和维护
  • 1.4 黑名单功能配置举例
父主题： 21-黑名单配置


1.1 黑名单功能简介简介

黑名单功能是根据报文的源IP地址进行报文过滤的一种攻击防范特性。同基于ACL（Access Control List，访问控制列表）的包过滤功能相比，黑名单进行报文匹配的方式更为简单，可以实现报文的高速过滤，从而有效地将特定IP地址发送来的报文屏蔽掉。

黑名单可以由设备动态地进行添加或删除，这种动态添加是与用户登录设备的认证功能配合实现的，动态生成的黑名单表项会在一定的时间之后老化。具体实现是：

当设备检测到某用户通过FTP、Telnet、SSH、SSL或Web方式尝试登录设备的失败次数达到指定阈值之后，便判定其为恶意攻击用户，并将其源IP地址自动加入黑名单，之后来自该IP地址且访问本设备的报文将被设备过滤掉。此处所指的认证失败情况包括：用户名错误、密码错误、验证码错误（针对Web登录用户）。该功能可以有效防范恶意用户通过不断尝试登录认证，尝试破解登录密码的攻击行为。目前，用户登录失败次数的阈值为6，黑名单的老化时间为10分钟，且均不可配。

除上面所说的动态方式之外，设备还支持手动方式添加或删除黑名单。手动配置的黑名单表项分为永久黑名单表项和非永久黑名单表项。永久黑名单表项建立后，一直存在，除非用户手工删除该表项。非永久黑名单表项的老化时间由用户指定，超出老化时间后，设备会自动将该黑名单表项删除，黑名单表项对应的IP地址发送的报文即可正常通过。


1.2 配置黑名单

黑名单的配置包括使能黑名单功能和添加黑名单表项。添加黑名单表项的同时可以选择配置黑名单表项的老化时间，若不配置，那么该黑名单表项永不老化，除非用户手动将其删除。

表1-1 配置黑名单

配置步骤 | 命令 | 说明
进入系统视图 | system-view | -
使能黑名单功能 | blacklist enable | 必选 缺省情况下，黑名单功能处于未使能状态
添加黑名单表项 | blacklist ip source-ip-address [ timeout minutes ] | 可选


1.3 黑名单显示和维护

在完成上述配置后，在任意视图下执行 display 命令可以查看黑名单配置的效果。

表1-2 黑名单的显示和维护

操作 | 命令
显示黑名单信息 | display blacklist { all | ip source-ip-address [ slot slot-number ] | slot slot-number } [ | { begin | exclude | include } regular-expression ]


1.4 黑名单功能配置举例

1.4.1 组网需求

网络管理员通过流量分析发现外部网络中存在一个攻击者Host D，需要将来自Host D的报文在Device上永远过滤掉。另外，网络管理员为了控制内部网络的Web认证用户Host C的访问行为，当该用户登录失败次数超过6次，需要将Device上收到的Host C的报文阻止10分钟。

1.4.2 组网图

图1-1 黑名单配置典型组网图

1.4.3 配置步骤

# 配置各接口的IP地址，略。

# 使能黑名单功能。

<Device> system-view

[Device] blacklist enable

# 将Host D的IP地址5.5.5.5添加到黑名单中，缺省永不老化。

[Device] blacklist ip 5.5.5.5

1.4.4 验证配置结果

完成以上配置后，可以通过 display blacklist all 命令查看已添加的黑名单信息。

[Device] display blacklist all

Blacklist information

------------------------------------------------------------------------------

Blacklist : enabled

Blacklist items : 2

------------------------------------------------------------------------------

IP Type Aging started Aging finished Dropped packets

YYYY/MM/DD hh:mm:ss YYYY/MM/DD hh:mm:ss

5.5.5.5 manual 2011/04/09 16:02:20 Never 0

192.168.1.4 manual 2011/04/09 16:02:26 2011/04/09 16:12:26 0

配置生效后，Device对来自Host D的报文一律进行丢弃处理，除非管理员认为Host D不再是攻击者，通过 undo blacklist ip 5.5.5.5 将其从黑名单中删除；如果Device接收到来自Host C的报文，Web认证失败次数超过6次，则在10分钟之内，对其进行丢弃处理，10分钟之后，才进行正常转发。


00-前言

前 言

H3C S3600V2系列以太网交换机配置指导共分为十本手册，介绍了S3600V2系列以太网交换机各软件特性的原理及其配置方法，包含原理简介、配置任务描述和配置举例。《可靠性配置指导》主要介绍了故障检测和快速保护倒换这两类可靠性技术的原理及具体配置。通过这些技术，您可以进行网络故障检测和诊断、出现故障时能够快速的进行业务恢复。

前言部分包含如下内容：

l 读者对象

l 本书约定

l 产品配套资料

l 资料获取方式

l 技术支持

l 资料意见反馈

读者对象

本手册主要适用于如下工程师：

l 网络规划人员

l 现场技术支持与维护人员

l 负责网络配置和维护的网络管理员

本书约定

1.命令行格式约定

格 式 | 意 义
粗体 | 命令行关键字（命令中保持不变、必须照输的部分）采用加粗字体表示。
斜体 | 命令行参数（命令中必须由实际值进行替代的部分）采用斜体表示。
[ ] | 表示用“[ ]”括起来的部分在命令配置时是可选的。
{ x | y | ... } | 表示从两个或多个选项中选取一个。
[ x | y | ... ] | 表示从两个或多个选项中选取一个或者不选。
{ x | y | ... } * | 表示从两个或多个选项中选取多个，最少选取一个，最多选取所有选项。
[ x | y | ... ] * | 表示从两个或多个选项中选取多个或者不选。
&<1-n> | 表示符号&前面的参数可以重复输入1～n次。
# | 由“#”号开始的行表示为注释行。

2.图形界面格式约定

格 式 | 意 义
< > | 带尖括号“< >”表示按钮名，如“单击<确定>按钮”。
[ ] | 带方括号“[ ]”表示窗口名、菜单名和数据表，如“弹出[新建用户]窗口”。
/ | 多级菜单用“/”隔开。如[文件/新建/文件夹]多级菜单表示[文件]菜单下的[新建]子菜单下的[文件夹]菜单项。

3.各类标志

本书还采用各种醒目标志来表示在操作过程中应该特别注意的地方，这些标志的意义如下：

该标志后的注释需给予格外关注，不当的操作可能会对人身造成伤害。

提醒操作中应注意的事项，不当的操作可能会导致数据丢失或者设备损坏。

为确保设备配置成功或者正常工作而需要特别关注的操作或信息。

对操作内容的描述进行必要的补充和说明。

配置、操作、或使用设备的技巧、小窍门。

4.图标约定

本书使用的图标及其含义如下：

该图标及其相关描述文字代表一般网络设备，如路由器、交换机、防火墙等。

该图标及其相关描述文字代表一般意义下的路由器，以及其他运行了路由协议的设备。

该图标及其相关描述文字代表二、三层以太网交换机，以及运行了二层协议的设备。

产品配套资料

H3C S3600V2系列以太网交换机的配套资料包括如下部分：

大类 | 资料名称 | 内容介绍
产品知识介绍 | 产品彩页 | 帮助您了解产品的主要规格参数及亮点
 | RPS电源用户手册 | 帮助您了解产品支持的RPS电源的外观、功能、规格
 | H3C低端系列以太网交换机RPS电源选购指南 | 帮助您了解各种RPS电源适用的交换机产品型号及RPS电源配套电缆的相关规格
 | H3C低端系列以太网交换机可插拔模块手册 | 帮助您了解产品支持的可插拔模块类型、外观和规格
设备安装 | 安全兼容性手册 | 列出产品的兼容性声明，并对兼容性和安全的细节进行说明
 | H3C 设备防雷安装指导手册 | 帮助您了解防雷接地设计和工程安装方法，以保证交换机具有良好的抗雷击性能
 | 快速安装指南 | 指导您对设备进行初始安装，通常针对最常用的情况，减少您的检索时间
 | 安装指导 | 帮助您详细了解设备硬件规格和安装方法，指导您对设备进行安装
 | H3C可插拔SFP[SFP+][XFP]模块安装指南 | 帮助您掌握SFP/SFP+/XFP模块的正确安装方法，避免因操作不当而造成器件损坏
业务配置 | 配置指导 | 帮助您掌握设备软件功能的配置方法及配置步骤
 | 命令参考 | 详细介绍设备的命令，相当于命令字典，方便您查阅各个命令的功能
运行维护 | H3C系列以太网交换机登录密码恢复手册 | 指导您在设备登录密码丢失的情况下，找回密码、或重新配置登录密码
 | 故障处理手册 | 指导您快速定位并处理软件故障
 | 版本说明书 | 帮助您了解产品版本的相关信息（包括：版本配套说明、兼容性说明、特性变更说明、技术支持信息）及软件升级方法

资料获取方式

您可以通过H3C网站（ www.h3c.com.cn ）获取最新的产品资料：

H3C网站与产品资料相关的主要栏目介绍如下：

l [服务支持/文档中心] ：可以获取硬件安装类、软件升级类、配置类或维护类等产品资料。

l [产品技术] ：可以获取产品介绍和技术介绍的文档，包括产品相关介绍、技术介绍、技术白皮书等。

l [解决方案] ：可以获取解决方案类资料。

l [服务支持/软件下载] ：可以获取与软件版本配套的资料。

技术支持

用户支持邮箱：customer_service@h3c.com

技术支持热线电话：400-810-0504（手机、固话均可拨打）

网址： http://www.h3c.com.cn

资料意见反馈

如果您在使用过程中发现产品资料的任何问题，可以通过以下方式反馈：

E-mail：info@h3c.com

感谢您的反馈，让我们做得更好！


1 可靠性概述

随着网络的快速普及和应用的日益深入，各种增值业务（如IPTV、视频会议等）得到了广泛部署，网络中断可能影响大量业务、造成重大损失。因此，作为业务承载主体的基础网络，其可靠性日益成为受关注的焦点。

在实际网络中，总避免不了各种非技术因素造成的网络故障和服务中断。因此，提高系统容错能力、提高故障恢复速度、降低故障对业务的影响，是提高系统可靠性的有效途径。

相关链接

  • 1.1 可靠性需求
  • 1.2 可靠性度量
  • 1.3 可靠性技术
父主题： 01-可靠性概述


1.1 可靠性需求

可靠性需求根据其目标和实现方法的不同可分为三个级别，各级别的目标和实现方法如表1-1 所示。

表1-1 可靠性需求的级别

级别 | 目标 | 实现方法
1 | 减少系统的软、硬件故障 | l 硬件：简化电路设计、提高生产工艺、进行可靠性试验等 l 软件：软件可靠性设计、软件可靠性测试等
2 | 即使发生故障，系统功能也不受影响 | 设备和链路的冗余设计、部署倒换策略、提高倒换成功率
3 | 尽管发生故障导致功能受损，但系统能够快速恢复 | 提供故障检测、诊断、隔离和恢复技术

在上述三个级别的可靠性需求中，第1级别需求的满足应在网络设备的设计和生产过程中予以考虑；第2级别需求的满足应在设计网络架构时予以考虑；第3级别需求则应在网络部署过程中，根据网络架构和业务特点采用相应的可靠性技术来予以满足，本文将对这些技术加以重点介绍。


1.2 可靠性度量

通常，我们使用MTBF（Mean Time Between Failures，平均故障间隔时间）和MTTR（Mean Time to Repair，平均修复时间）这两个技术指标来评价系统的可靠性。

1. MTBF

MTBF是指一个系统无故障运行的平均时间，通常以小时为单位。MTBF越多，可靠性也就越高。

2. MTTR

MTTR是指一个系统从故障发生到恢复所需的平均时间，广义的MTTR还涉及备件管理、客户服务等，是设备维护的一项重要指标。

MTTR的计算公式为：MTTR=故障检测时间+硬件更换时间+系统初始化时间+链路恢复时间+路由覆盖时间+转发恢复时间。公式中各项的值越小，MTTR也就越少，可靠性也就越高。


1.3 可靠性技术

通过前面的介绍可知，提高MTBF或降低MTTR都可以提高网络的可靠性。在实际网络中，各种因素造成的故障难以避免，因此能够让网络从故障中快速恢复的技术就显得非常重要。本节介绍的各种可靠性技术将主要从降低MTTR的角度，为满足第3级别的可靠性需求来提供技术手段。

可靠性技术的种类繁多，我们根据其解决网络故障的侧重不同，将其大致分为故障检测技术和保护倒换技术两大类。

1.3.1 故障检测技术

故障检测技术侧重于网络的故障检测和诊断。CFD、DLDP、以太网OAM都属于链路层的故障检测技术；BFD是一种通用的故障检测技术，可用于各层面的故障检测；NQA用于对网络质量进行诊断和评估；Monitor Link和Track通过故障检测的联动机制来与其它可靠性技术进行配合。对这些技术的进一步介绍如表1-2 所示。

表1-2 故障检测技术

名称 | 简介 | 详细介绍
CFD | 全称Connectivity Fault Detection（连通错误检测），遵循IEEE 802.1ag的CFM（Connectivity Fault Management，连通错误管理）协议，是一种二层链路上基于VLAN的端到端OAM（Operation, Administration and Maintenance，操作、管理和维护）机制，主要用于在二层网络中检测链路连通性、确认故障并定位故障 | 可靠性配置指导/CFD
DLDP | 全称Device Link Detection Protocol（设备链路检测协议），用于监控光纤或铜质双绞线的链路状态。当发现单向链路后，会根据用户配置，自动关闭或通知用户手工关闭相关端口，以防止网络问题的发生 | 可靠性配置指导/DLDP
以太网OAM | 一种监控网络故障的工具，主要用于解决以太网接入“最后一公里”中常见的链路问题。用户通过在两个点到点连接的设备上启用以太网OAM功能，可以监控这两台设备之间的链路状态 | 可靠性配置指导/以太网OAM
BFD | 全称Bidirectional Forwarding Detection（双向转发检测），是一个通用的、标准化的、介质无关、协议无关的快速故障检测机制，用于快速检测、监控网络中链路或IP路由的转发连通状况 | 可靠性配置指导/BFD
NQA | 全称Network Quality Analyzer（网络质量分析），通过发送测试报文，对网络性能、网络提供的服务及服务质量进行分析，并为用户提供网络性能和服务质量的参数，如时延抖动、TCP连接时延、FTP连接时延和文件传输速率等 | 网络管理和监控配置指导/NQA
Monitor Link | 一种端口联动方案，主要用于配合二层拓扑协议的组网应用。它通过监控设备的上行端口，根据其up/down状态的变化来触发下行端口up/down状态的变化，从而触发下游设备上备份链路的切换 | 可靠性配置指导/Monitor Link
Track | 用于实现联动功能。联动功能由应用模块、Track模块和监测模块三部分组成，它通过建立联动项来实现不同模块间的联动，即由监测模块通过Track模块触发应用模块来执行某种操作。监测模块负责对链路状态、网络性能等进行探测，并通过Track模块将探测结果通知给应用模块；应用模块感知到网络状态变化后，及时进行相应处理，从而避免通信的中断或服务质量的降低 | 可靠性配置指导/Track

1.3.2 保护倒换技术

保护倒换技术侧重于网络的故障恢复，主要通过对硬件、链路、路由信息和业务信息等进行冗余备份以及故障时的快速切换，从而保证网络业务的连续性。对各种保护倒换技术的具体介绍如表1-3 所示。

表1-3 保护倒换技术

名称 | 简介 | 详细介绍
以太网链路聚合 | 简称链路聚合，它通过将多条以太网物理链路捆绑在一起成为一条逻辑链路，实现了增加链路带宽的目的，而这些捆绑在一起的链路通过相互间的动态备份，可以有效地提高链路的可靠性 | 二层技术-以太网交换配置指导/以太网链路聚合
Smart Link | 实现了双上行组网主备链路的冗余备份，并在主用链路发生故障后使流量能够迅速切换到备用链路上，具备较高的收敛速度 | 可靠性配置指导/Smart Link
MSTP | 全称Multiple Spanning Tree Protocol（多生成树协议），是一种二层管理协议，它通过选择性地阻塞网络中的冗余链路来消除二层环路，同时还具备链路备份的功能 | 二层技术-以太网交换配置指导/生成树
RRPP | 全称Rapid Ring Protection Protocol（快速环网保护协议），是一个专门应用于以太网环的链路层协议。它在以太网环完整时能够防止数据环路引起的广播风暴，而当以太网环上一条链路断开时能迅速恢复环网上各个节点之间的通信通路，具备较高的收敛速度 | 可靠性配置指导/RRPP
FRR | 全称Fast ReRoute（快速重路由），是一种实现网络局部保护的技术。它通过为主路由或路径建立备份路由或路径，当主路由或路径出现故障时能够迅速切换到备份路由或路径，从而减少网络故障引起的数据丢失。支持该技术的协议有RIP、OSPF、IS-IS和静态路由等 | 三层技术-IP路由配置指导/相关协议内容
GR（仅S3600V2-EI系列支持） | 全称Graceful Restart（平滑重启），是一种保证转发业务在设备进行IP转发协议（如BGP、IS-IS、OSPF、IPv6 BGP、IPv6 IS-IS和OSPFv3等）重启或主备倒换时不中断的技术。它需要周边设备的配合来完成路由等信息的备份与恢复 | 三层技术-IP路由配置指导/相关协议内容
NSR（仅S3600V2-EI系列支持） | 全称Non-stop Routing（不间断路由），是一种保证数据传输在设备进行主备倒换时不中断的技术，设备形成IRF后支持该功能。它通过将IP等转发信息从Master设备备份到Slave设备，从而在设备进行主备倒换时，无需周边设备配合即可完成上述信息的备份与恢复。支持该技术的协议只有ISIS | 三层技术-IP路由配置指导/ISIS
双机热备 | 通过两台设备之间的业务备份，当其中一台设备发生故障时，利用VRRP或动态路由机制将业务流量切换到备份设备，由于该设备已备份有故障设备的业务信息，业务数据便可从该设备上通过，从而在很大程度上避免了网络业务的中断 | 可靠性配置指导/双机热备
VRRP | 全称Virtual Router Redundancy Protocol（虚拟路由器冗余协议），是一种容错协议，在具有组播或广播能力的局域网（如以太网）中，使设备出现故障时仍能提供缺省链路，有效地避免了单一链路发生故障后出现网络中断的问题 | 可靠性配置指导/VRRP

从前面的介绍可知，可靠性技术的种类繁多，面对越来越复杂的网络环境，要想依靠单一的技术来解决所有的可靠性问题几乎无法实现。因此，需要在对网络环境和用户需求进行细致分析的基础上，综合运用各种可靠性技术来提高网络的可靠性。此外，在建网之初还应充分考虑组网的可靠性，譬如：根据业务现状或业务预测，边缘层的节点在接入时应采用冗余备份机制，分别与汇聚层的节点相连；核心层的各节点之间尽量采用全连接的方式，等等。

总之，提高网络可靠性是一个系统工程，需要网络设计和管理者在网络的设计、建设与维护过程中加以全面考虑。


1 以太网OAM配置

相关链接

  • 1.1 以太网OAM简介
  • 1.2 以太网OAM配置任务简介
  • 1.3 配置以太网OAM基本功能
  • 1.4 配置以太网OAM连接检测定时器
  • 1.5 配置一般链路事件的检测参数
  • 1.6 配置以太网OAM远端环回功能
  • 1.7 以太网OAM显示和维护
  • 1.8 以太网OAM典型配置举例
父主题： 02-以太网OAM配置


1.1 以太网OAM简介

1.1.1 以太网OAM产生背景

以太网技术自诞生起，以其简单易用、价格低廉等特点逐步成为局域网的主导技术。近年来，随着千兆、万兆以太网技术的相继应用，以太网已经向城域网和广域网方向扩展。

由于以太网最初主要应用于局域网，而局域网对可靠性和稳定性的要求都较低，因此以太网一直缺乏有效的管理维护机制，这已成为以太网应用于城域网和广域网的严重障碍。因此，在以太网上实现OAM（Operation, Administration and Maintenance，操作、管理和维护）成为必然的发展趋势。以太网OAM是一种监控网络故障的工具，目前主要用于解决以太网接入“最后一公里”中常见的链路问题。用户通过在两个点到点连接的设备上启用以太网OAM功能，可以监控这两台设备之间的链路状态。

1.1.2 以太网OAM主要功能

以太网OAM能够有效提高以太网的管理和维护能力，保障网络的稳定运行，其主要功能包括：

l 链路性能监测：对链路的各种性能进行监测，包括对丢包、时延和抖动等的衡量，以及对各类流量的统计；

l 故障侦测和告警：通过发送检测报文来探测链路的连通性，当链路出现故障时及时通知网络管理员；

l 环路测试：通过监测所发出报文的返回情况来检测链路质量和定位链路故障。

1.1.3 以太网OAM协议报文

以太网OAM工作在数据链路层，其协议报文被称为OAMPDU（OAM Protocol Data Units，OAM协议数据单元）。以太网OAM就是通过设备之间定时交互OAMPDU来报告链路状态，使网络管理员能够对网络进行有效的管理。

图1-1 常见的OAMPDU报文

如图1-1 所示，是几种常见OAMPDU的报文格式，各重要字段的含义如表1-1 所示。

表1-1 OAMPDU重要字段含义

字段 | 含义
Dest addr | 以太网OAM报文目的MAC地址，为慢协议组播地址：0x0180-C200-0002。由于慢协议报文不能被网桥转发，因此以太网OAM报文也不能被转发
Source addr | 以太网OAM报文源MAC地址，为发送端的桥MAC地址，是一个单播MAC地址
Type | 以太网OAM报文的协议类型，为0x8809
Subtype | 以太网OAM报文的协议子类型，为0x03
Flags | Flag域，包含了以太网OAM实体的状态信息
Code | OAMPDU报文的类型

我们称使能了以太网OAM功能的端口为“以太网OAM实体”，简称“OAM实体”。

图1-1 中几类OAMPDU报文的作用如表1-2 所示。

表1-2 各类OAMPDU报文的作用

报文类型 | 中文含义 | 作用
Information OAMPDU | 信息OAMPDU | 用于将OAM实体的状态信息（包括本地信息、远端信息和自定义信息）发给远端OAM实体，以保持以太网OAM连接
Event Notification OAMPDU | 事件通知OAMPDU | 一般用于链路监控，对连接本端和远端OAM实体的链路上所发生的故障进行告警
Loopback Control OAMPDU | 环回控制OAMPDU | 主要用于远端环回控制，用来控制远端设备的OAM环回状态，该报文中带有使能或去使能环回功能的信息，根据该信息开启或关闭远端环回功能

1.1.4 以太网OAM工作流程

以太网OAM功能建立在以太网OAM连接的基础上，下面对以太网OAM的工作流程进行简要介绍。

1. 建立以太网OAM连接

以太网OAM连接的建立过程也称为Discovery阶段，即本端OAM实体发现远端OAM实体、并与之建立稳定对话的过程。

在这个过程中，相连的OAM实体通过交互Information OAMPDU通报各自的以太网OAM配置信息和本端支持的以太网OAM能力信息。当OAM实体收到对端的配置参数后，决定是否建立OAM连接。当两端OAM实体对Loopback功能、单向链路检测及链路事件等配置信息的检查都通过之后，以太网OAM协议开始正常工作。

以太网OAM的连接模式有两种：主动模式和被动模式，在这两种模式下设备的处理能力如表1-3 所示。

表1-3 主动模式与被动模式的处理能力比较

处理能力 | 主动模式 | 被动模式
初始化以太网OAM Discovery过程 | 可以 | 不可以
对以太网OAM Discovery初始化过程的响应 | 可以 | 可以
发送Information OAMPDU | 可以 | 可以
发送Event Notification OAMPDU | 可以 | 可以
发送不携带TLV的Information OAMPDU | 可以 | 可以
发送Loopback Control OAMPDU | 可以 | 不可以
对Loopback Control OAMPDU的响应 | 可以，但需要对端为主动模式 | 可以

l 以太网OAM连接只能由主动模式的OAM实体发起，而被动模式的OAM实体只能等待对端OAM实体的连接请求。

l 都处于被动模式下的两个OAM实体之间无法建立以太网OAM连接。

以太网OAM连接建立后，两端的OAM实体会以一定的时间间隔为周期发送Information OAMPDU来检测连接是否正常，该间隔被称为握手报文发送间隔。如果一端OAM实体在连接超时时间内未收到对端OAM实体发来的Information OAMPDU，则认为OAM连接中断。

2. 链路监控

以太网的故障检测非常困难，特别是在网络物理通信没有中断而网络性能缓慢下降的情况下。链路监控用于在各种环境下检测和发现链路层故障，以太网OAM通过交互Event Notification OAMPDU来监控链路：当一端OAM实体监控到一般链路事件（其所含类型如表1-4 所示）时，将向其对端发送Event Notification OAMPDU以进行通报，管理员可以通过观察日志信息动态地掌握网络的状况。

表1-4 一般链路事件

事件类型 | 描述
错误信号事件（Errored Symbol Event） | 单位时间内的错误信号数量超过定义的阈值
错误帧事件（Errored Frame Event） | 单位时间内的错误帧数量超过定义的阈值
错误帧周期事件（Errored Frame Period Event） | 指定帧数N为周期，在收到N个帧的周期内错误帧数超过定义的阈值
错误帧秒数事件（Errored Frame Seconds Event） | 指定M秒数下有错误帧的秒数超过了定义的阈值

l 错误帧周期事件的检测周期将被系统转换为某端口在该周期内能发送64字节帧的最大帧数（不含帧间隙和前导码），即以最大帧数作为周期，其计算公式为：最大帧数＝接口带宽（bps）×错误帧周期事件的检测周期（ms）÷（64×8×1000）。

l 错误帧秒：如果在某一秒内发生了错误帧，则将该秒称为错误帧秒。

3. 远端故障检测

在以太网OAM连接已建立的情况下，两端的OAM实体会不断交互Information OAMPDU。当设备故障或不可用导致流量中断时，故障端OAM实体会通过Information OAMPDU中的Flag域将故障信息（即紧急链路事件类型）通知给对端OAM实体。这样，管理员可以通过观察日志信息动态地了解链路状态，对相应的错误及时进行处理。紧急链路事件的类型及其对应的Information OAMPDU发送频率如表1-5 所示。

表1-5 紧急链路事件

事件类型 | 描述 | OAMPDU发送频率
链路故障（Link Fault） | 对端链路信号丢失 | 每秒发送一次
致命故障（Dying Gasp） | 不可预知的状态发生，比如电源中断 | 不间断发送
紧急事件（Critical Event） | 不能确定的紧急事件发生 | 不间断发送

本系列设备对收发携带有紧急链路事件的Information OAMPDU的支持情况如下：

l 支持接收携带以上三种类型紧急链路事件的Information OAMPDU。

l 仅千兆光口支持发送携带链路故障事件的Information OAMPDU。

l 仅支持在设备重启或端口被shutdown时发送携带致命故障事件的Information OAMPDU，但IRF物理端口不支持发送该报文。有关IRF物理端口的详细介绍，请参见“IRF配置指导”中的“IRF”。

l 不支持发送携带紧急事件的Information OAMPDU。

4. 远端环回

远端环回是指主动模式下的OAM实体向对端（远端）发送除OAMPDU以外的所有其它报文时，对端收到报文后不按其目的地址进行转发，而是将其按原路返回给本端。远端环回只有在以太网OAM连接建立之后才能实现。

远端环回功能可用于检测链路质量和定位链路故障。定期进行环回检测可以及时发现网络故障，并可通过分段环回检测来定位故障发生的具体区域。

1.1.5 协议规范

与以太网OAM相关的协议规范有：

l IEEE 802.3ah：Carrier Sense Multiple Access with Collision Detection (CSMA/CD) Access Method and Physical Layer Specifications


1.2 以太网OAM配置任务简介

表1-6 以太网OAM配置任务简介

配置任务 |  | 说明 | 详细配置
配置以太网OAM基本功能 |  | 必选 | 1.3
配置以太网OAM连接检测定时器 |  | 可选 | 1.4
配置一般链路事件的检测参数 | 配置错误信号事件的检测参数 | 可选 | 1.5.1
 | 配置错误帧事件检测参数 | 可选 | 1.5.2
 | 配置错误帧周期事件检测参数 | 可选 | 1.5.3
 | 配置错误帧秒数事件检测参数 | 可选 | 1.5.4
配置以太网OAM远端环回功能 | 使能以太网OAM远端环回功能 | 可选 | 1.6.1
 | 拒绝对端发起的以太网OAM远端环回 | 可选 | 1.6.2


1.3 配置以太网OAM基本功能

以太网OAM的连接模式分为主动和被动模式，当使能了以太网OAM功能之后，以太网端口开始使用预设的连接模式与其对端端口建立以太网OAM连接。

表1-7 配置以太网OAM基本功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入二层以太网端口视图 | interface interface-type interface-number | -
配置以太网OAM的连接模式 | oam mode { active | passive } | 可选 缺省情况下，以太网OAM的连接模式为主动模式
使能以太网OAM功能 | oam enable | 必选 缺省情况下，以太网端口的以太网OAM功能处于关闭状态

在使能了以太网OAM功能的端口上不能改变以太网OAM的连接模式。如需改变连接模式，请先关闭该端口上的以太网OAM功能。


1.4 配置以太网OAM连接检测定时器

以太网OAM连接建立后，两端的OAM实体会以一定的时间间隔为周期发送Information OAMPDU来检测连接是否正常，该间隔被称为握手报文发送间隔。如果一端OAM实体在连接超时时间内未收到对端OAM实体发来的Information OAMPDU，则认为OAM连接中断。

通过调整握手报文发送间隔和连接超时时间，可以改变以太网OAM连接的检测精度。

表1-8 配置以太网OAM连接检测定时器

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置以太网OAM握手报文的发送间隔 | oam timer hello interval | 可选 缺省情况下，以太网OAM握手报文的发送间隔为1000毫秒
配置以太网OAM连接的超时时间 | oam timer keepalive interval | 可选 缺省情况下，以太网OAM连接的超时时间为5000毫秒

由于以太网OAM连接超时后，本端OAM实体将老化与对端OAM实体的连接关系，使OAM连接中断，因此连接超时时间必须大于握手报文发送间隔（建议配置为其五倍或以上），否则会导致以太网OAM连接的不稳定。


1.5 配置一般链路事件的检测参数

当以太网OAM连接建立后，本节中所配置的各事件检测周期和阈值将会在所有以太网端口上自动有效。

1.5.1 配置错误信号事件的检测参数

在错误信号事件的检测周期内，如果某以太网端口上所发生的错误信号数大于或等于错误信号事件的检测阈值，则将在该端口上产生一个错误信号事件。

表1-9 配置错误信号事件的检测参数

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置错误信号事件的检测周期 | oam errored-symbol period period-value | 可选 缺省情况下，错误信号事件的检测周期为1秒
配置错误信号事件的检测阈值 | oam errored-symbol threshold threshold-value | 可选 缺省情况下，错误信号事件的检测阈值为1

1.5.2 配置错误帧事件的检测参数

在错误帧事件的检测周期内，如果某以太网端口上所发生的错误帧数大于或等于错误帧事件的检测阈值，则将在该端口上产生一个错误帧事件。

表1-10 配置错误帧事件的检测参数

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置错误帧事件的检测周期 | oam errored-frame period period-value | 可选 缺省情况下，错误帧事件的检测周期为1秒
配置错误帧事件的检测阈值 | oam errored-frame threshold threshold-value | 可选 缺省情况下，错误帧事件的检测阈值为1

1.5.3 配置错误帧周期事件的检测参数

在错误帧周期事件的检测周期内，如果某以太网端口上所发生的错误帧数大于或等于错误帧周期事件的检测阈值，则将在该端口上产生一个错误帧周期事件。

表1-11 配置错误帧周期事件的检测参数

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置错误帧周期事件的检测周期 | oam errored-frame-period period period-value | 可选 缺省情况下，错误帧周期事件的检测周期为1000毫秒
配置错误帧周期事件的检测阈值 | oam errored-frame-period threshold threshold-value | 可选 缺省情况下，错误帧周期事件的检测阈值为1

1.5.4 配置错误帧秒数事件的检测参数

在错误帧秒数事件的检测周期内，如果某以太网端口上所发生的错误帧秒数大于或等于错误帧秒数事件的检测阈值，则将在该端口上产生一个错误帧秒数事件。

表1-12 配置错误帧秒数事件的检测参数

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置错误帧秒数事件的检测周期 | oam errored-frame-seconds period period-value | 可选 缺省情况下，错误帧秒数事件的检测周期为60秒
配置错误帧秒数事件的检测阈值 | oam errored-frame-seconds threshold threshold-value | 可选 缺省情况下，错误帧秒数事件的检测阈值为1

错误帧秒数事件检测的阈值不要大于设定的周期值，否则不会发生错误帧秒数事件。


1.6 配置以太网OAM远端环回功能

1.6.1 使能以太网OAM远端环回功能

在本端端口上使能了以太网OAM远端环回功能之后，该端口将向对端端口发送Loopback Control OAMPDU，使对端进入OAM环回状态。然后，用户可以从本端向对端发送测试报文，并通过观察这些报文的返回情况来计算链路丢包率，以此来评判链路性能。

用户可以在用户视图或系统视图下使能指定端口的以太网OAM远端环回功能，也可以在端口视图下使能当前端口的以太网OAM远端环回功能，三者的配置效果相同。

1. 在用户视图下使能以太网OAM远端环回功能

表1-13 在用户视图下使能以太网OAM远端环回功能

操作 | 命令 | 说明
使能指定端口的以太网OAM远端环回功能 | oam loopback interface interface-type interface-number | 必选 缺省情况下，端口上的以太网OAM远端环回功能处于关闭状态

2. 在系统视图下使能以太网OAM远端环回功能

表1-14 在系统视图下使能以太网OAM远端环回功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
使能指定端口的以太网OAM远端环回功能 | oam loopback interface interface-type interface-number | 必选 缺省情况下，端口上的以太网OAM远端环回功能处于关闭状态

3. 在端口视图下使能以太网OAM远端环回功能

表1-15 在端口视图下使能以太网OAM远端环回功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入二层以太网端口视图 | interface interface-type interface-number | -
使能当前端口的以太网OAM远端环回功能 | oam loopback | 必选 缺省情况下，端口上的以太网OAM远端环回功能处于关闭状态

由于远端环回功能将使正常业务受到影响，因此请慎重使用。

l 只有当端口上的以太网OAM连接已建立完成，且以太网OAM的连接模式为主动模式时，才能在该端口上使能以太网OAM远端环回功能。

l 只有本端和对端端口都支持远端环回功能、且在全双工链路上才能实现远端环回功能。

l 远端环回功能需要远端硬件的支持，如果远端硬件不支持，会提示用户。

l 在开启远端环回时，将引起所有数据流量的中断；当退出远端环回后，端口将自动执行一次先关闭再开启的操作。导致端口退出远端环回的原因有：使用 undo oam enable 命令关闭以太网OAM功能、使用 undo oam loopback interface或 undo oam loopback命令关闭以太网OAM远端环回功能或OAM连接超时等。

l 由于远端环回功能主要用于测单条链路，所以聚合成员端口和业务环回成员端口并不支持该功能；此外，处于远端环回过程中的端口也不能加入聚合组或业务环回组。有关聚合组和业务环回组的详细介绍，请分别参见“二层技术-以太网交换配置指导”中的“以太网链路聚合”和“业务环回组”。

l 如果在远端环回过程中开启了内部环回测试功能，远端环回将终止。有关环回测试功能的详细介绍，请参见“二层技术-以太网交换配置指导”中的“以太网端口”。

1.6.2 拒绝对端发起的以太网OAM远端环回

由于远端环回功能会使正常业务受到影响，为了避免这种情况，用户可以通过本配置使本端端口不受对端发来的Loopback Control OAMPDU的控制，从而拒绝其发起的以太网OAM远端环回。

表1-16 拒绝对端发起的以太网OAM远端环回

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入二层以太网端口视图 | interface interface-type interface-number | -
拒绝对端发起的以太网OAM远端环回 | oam loopback reject-request | 必选 缺省情况下，端口不拒绝对端发起的以太网OAM远端环回


1.7 以太网OAM显示和维护

在完成上述配置后，在任意视图下执行 display 命令可以显示配置后以太网OAM的运行情况，通过查看显示信息验证配置的效果。

在用户视图下执行 reset 命令可以清除以太网OAM的统计信息。

表1-17 以太网OAM显示和维护

操作 | 命令
查看以太网OAM的全局配置信息 | display oam configuration [ | { begin | exclude | include } regular-expression ]
查看以太网OAM的紧急链路事件统计信息 | display oam critical-event [ interface interface-type interface-number ] [ | { begin | exclude | include } regular-expression ]
查看以太网OAM的一般链路事件统计信息 | display oam link-event { local | remote } [ interface interface-type interface-number ] [ | { begin | exclude | include } regular-expression ]
查看以太网OAM连接的信息 | display oam { local | remote } [ interface interface-type interface-number ] [ | { begin | exclude | include } regular-expression ]
清除以太网OAM的报文和一般链路事件统计信息 | reset oam [ interface interface-type interface-number ]


1.8 以太网OAM典型配置举例

1. 组网需求

l 通过在Device A和Device B上配置以太网OAM功能，实现二者之间链路连通性故障的自动检测；

l 通过观察Device A上收到错误帧的情况，来检测Device A与Device B之间的链路性能。

2. 组网图

图1-2 以太网OAM典型配置组网图

3. 配置步骤

(1) 配置Device A

# 在端口Ethernet1/0/1上配置以太网OAM的连接模式为被动模式，并使能以太网OAM功能。

<DeviceA> system-view

[DeviceA] interface ethernet 1/0/1

[DeviceA-Ethernet1/0/1] oam mode passive

[DeviceA-Ethernet1/0/1] oam enable

[DeviceA-Ethernet1/0/1] quit

# 配置错误帧事件的检测周期为20秒，检测阈值为10。

[DeviceA] oam errored-frame period 20

[DeviceA] oam errored-frame threshold 10

(2) 配置Device B

# 在端口Ethernet1/0/1上配置以太网OAM的连接模式为主动模式，并使能以太网OAM功能。

<DeviceB> system-view

[DeviceB] interface ethernet 1/0/1

[DeviceA-Ethernet1/0/1] oam mode active

[DeviceB-Ethernet1/0/1] oam enable

[DeviceB-Ethernet1/0/1] quit

(3) 检验配置效果

通过使用 display oam configuration 命令可以查看以太网OAM的配置信息，例如：

# 查看Device A上以太网OAM的配置信息。

[DeviceA] display oam configuration

Configuration of the link event window/threshold :

--------------------------------------------------------------------------

Errored-symbol Event period(in seconds) : 1

Errored-symbol Event threshold : 1

Errored-frame Event period(in seconds) : 20

Errored-frame Event threshold : 10

Errored-frame-period Event period(in ms) : 1000

Errored-frame-period Event threshold : 1

Errored-frame-seconds Event period(in seconds) : 60

Errored-frame-seconds Event threshold : 1

Configuration of the timer :

--------------------------------------------------------------------------

Hello timer(in ms) : 1000

Keepalive timer(in ms) : 5000

以上显示信息表明：除错误帧事件的检测周期为20秒、检测阈值为10以外，其余参数都为缺省值。

通过使用 display oam critical-event 命令可以查看以太网OAM的紧急链路事件统计信息，例如：

# 查看Device A所有端口上以太网OAM的紧急链路事件统计信息。

[DeviceA] display oam critical-event

Port : Ethernet1/0/1

Link Status : Up

Event statistic :

-------------------------------------------------------------------------

Link Fault :0 Dying Gasp : 0 Critical Event : 0

以上显示信息表明：Device A与Device B之间的链路上尚未发生过任何紧急链路事件。

通过使用 display oam link-event 命令可以查看以太网OAM的一般链路事件统计信息，例如：

# 查看Device B所有端口上以太网OAM的一般链路事件的远端统计信息。

[DeviceB] display oam link-event remote

Port :Ethernet1/0/1

Link Status :Up

OAMRemoteErrFrameEvent : (ms = milliseconds)

---------------------------------------------------------------------

Event Time Stamp : 5789 Errored Frame Window : 10(100ms)

Errored Frame Threshold : 1 Errored Frame : 3

Error Running Total : 35 Event Running Total : 17

以上显示信息表明：从Device A开始运行时起，总共发生了35次错误，其中错误帧事件有17次，链路性能并不稳定。


1 CFD配置

相关链接

  • 1.1 CFD简介
  • 1.2 CFD配置任务简介
  • 1.3 CFD基础配置
  • 1.4 配置CFD各项功能
  • 1.5 CFD显示和维护
  • 1.6 CFD典型配置举例
父主题： 03-CFD配置


1.1 CFD简介

CFD是Connectivity Fault Detection（连通错误检测）的简称，遵循IEEE 802.1ag的CFM（Connectivity Fault Management，连通错误管理）协议。它是一种二层链路上基于VLAN的端到端OAM（Operations, Administration and Maintenance，操作、管理和维护）机制，主要用于在二层网络中检测链路连通性，确认故障并确定故障发生的位置。

1.1.1 CFD基本概念

1. 维护域

维护域（Maintenance Domain，MD）指明了连通错误检测所覆盖的网络，其边界是由配置在端口上的一系列维护端点所定义的。维护域以“维护域名称”来标识。

为了准确定位故障点，在维护域中引入了级别（层次）的概念。维护域共分为八级，用整数0～7来表示，数字越大级别越高，维护域的范围也就越大。不同维护域之间可以相邻或嵌套，但不能交叉，且嵌套时只能由高级别维护域向低级别维护域嵌套，即低级别维护域必须包含在高级别维护域内部。

维护域的分级使得故障定位更加便利和准确，如图1-1 所示，维护域MD_B嵌套于维护域MD_A中，如果在MD_A的边界上发现链路不通，则表明该域内的设备出现了故障，故障可能出现在Device A～Device E这五台设备上。此时，如果在MD_B的边界上也发现链路不通，则故障范围就缩小到Device B～Device D这三台设备上；反之，如果MD_B内的设备都工作正常，则至少可以确定Device C是没有故障的。

图1-1 两个嵌套的维护域

CFD协议报文的交互以及相关处理都是基于维护域的，合理的维护域规划可以帮助网络管理员迅速定位故障点。

2. 维护集

在维护域内根据需要可以配置多个维护集（Maintenance Association，MA），每个维护集是维护域内一些维护点的集合。维护集以“维护域名称＋维护集名称”来标识。

维护集服务于一个VLAN，维护集中的维护点所发送的报文都带有该VLAN的标签，同时维护集中的维护点可以接收由本维护集中其它维护点发来的报文。

3. 维护点

维护点（Maintenance Point，MP）配置在端口上，属于某个维护集，可分为维护端点（Maintenance association End Point，MEP）和维护中间点（Maintenance association Intermediate Point，MIP）两种。

(1) 维护端点

维护端点以称为MEP ID的整数来标识，它确定了维护域的范围和边界。维护端点所属的维护集和维护域确定了该维护端点所发出报文的VLAN属性和级别。

维护端点的级别决定了其所能处理的报文的级别，维护端点所发出报文的级别就是该维护端点的级别。当维护端点收到高于自己级别的报文时，不会进行处理，而是将其按原有路径转发；而当维护端点收到小于等于自己级别的报文时，才会进行处理。

上述描述是指同一VLAN内的报文处理方式，不同VLAN内的报文之间是相互隔离的，不会相互影响。

维护端点具有方向性，分为外向MEP和内向MEP两种。维护端点的方向表明了维护域相对于该端口的位置。

图1-2 外向MEP示意图

如图1-2 所示，外向MEP是向它所在端口发送报文的。

图1-3 内向MEP示意图

如图1-3 所示，内向MEP不向它所在端口发送报文，而是向设备的其它端口发送报文。

(2) 维护中间点

维护中间点位于维护域内部，不能主动发出CFD协议报文，但可以处理和响应CFD协议报文。维护中间点所属的维护集和维护域确定了该维护中间点所接收报文的VLAN属性和级别。

维护中间点可以配合维护端点完成类似于ping和tracert的功能。与维护端点类似，当维护中间点收到高于自己级别的报文时，不会进行处理，而是将其按原有路径转发；而当维护中间点收到小于等于自己级别的报文时，才会进行处理。

如图1-4 所示，是CFD的一种分级配置方式，假设图中所有六台设备都只有两个端口，并在其中一些端口上配置了维护端点和维护中间点，譬如Device B的端口1上配置的维护点如下：级别为5的维护中间点、级别为3的内向维护端点、级别为2的内向维护端点和级别为0的外向维护端点。图中共有四个级别的维护域，标识号较大的维护域的级别高、控制范围广；标识号较小的维护域的级别低、控制范围小。

图1-4 维护点的分级配置

4. 维护端点列表

维护端点列表是同一维护集内允许配置的本地维护端点和需要监控的远端维护端点的集合，它限定了维护集内维护端点的选取范围，不同设备上同一维护集内的所有维护端点都应包含在此列表中，且MEP ID互不重复。如果维护端点收到来自远端设备的CCM（Continuity Check Message，连续性检测报文）报文所携带的维护端点不在同一维护集的维护端点列表中，就丢弃该报文。

1.1.2 CFD各项功能

连通错误检测的有效应用建立在合理的网络部署和配置之上。它的功能是在所配置的维护点之间实现的，包括：

l 连续性检测功能

l 环回功能

l 链路跟踪功能

1. 连续性检测功能

维护端点之间的连通失败可能由设备故障或配置错误造成，连续性检测（Continuity Check，CC）功能就是用来检测维护端点之间的连通状态。该功能的实现方式是：由维护端点周期性地发送CCM报文，该报文是组播报文，相同维护集的其它维护端点接收该报文，并由此获知远端状态。若维护端点在3.5个CCM报文发送周期内未收到远端维护端点发来的CCM报文，则认为链路有问题，会输出日志报告。当维护域内的多个维护端点在发送CCM报文时，就实现了多点到多点之间的链路检测。

CCM报文是组播报文。

2. 环回功能

环回（Loopback，LB）功能类似于IP层的ping功能，用于验证本地设备与远端设备之间的连接状态。该功能的实现方式是：由维护端点发送LBM（Loopback Message，环回报文）报文给远端维护点，并根据能否收到对端反馈的LBR（Loopback Reply，环回应答）报文来检验链路状态。

LBM报文和LBR报文都是单播报文。

3. 链路跟踪功能

链路跟踪（Linktrace，LT）功能用于确定源维护端点到目标维护端点的路径，其实现方式是：由源维护端点发送LTM（Linktrace Message，链路跟踪报文）报文给目标维护端点，目标维护端点及LTM报文所经过的维护中间点收到该报文后，会发送LTR（Linktrace Reply，链路跟踪应答）报文给源维护端点，源维护端点则根据收到的LTR报文来确定到目标维护端点的路径。

LTM报文是组播报文，LTR报文是单播报文。

1.1.3 协议规范

与CFD相关的协议规范有：

l IEEE 802.1ag：Virtual Bridged Local Area Networks Amendment 5: Connectivity Fault Management


1.2 CFD配置任务简介

在配置CFD功能之前，应对网络进行如下规划：

l 对整个网络的维护域进行分级，确定各级别维护域的边界。

l 确定各维护域的名称，同一维护域在不同设备上的名称相同。

l 根据需要监控的VLAN，确定各维护域内的维护集。

l 确定各维护集的名称，同一维护域内同一维护集在不同设备上的名称相同。

l 确定同一维护域内同一维护集的维护端点列表，在不同设备上应保持相同。

l 在维护域和维护集的边界端口上应规划维护端点，非边界设备或端口上可规划维护中间点。

在完成网络规划之后，请进行下列配置。

表1-1 CFD配置任务简介

配置任务 |  |  | 说明 | 详细配置
CFD基础配置 | 使能CFD功能 |  | 必选 | 1.3.1
 | 配置CFD版本 |  | 可选 | 1.3.2
 | 配置服务实例 | 配置有维护域名称的服务实例 | 二者必选其一 | 1.3.3 1.
 |  | 配置无维护域名称的服务实例 |  | 1.3.3 2.
 | 配置维护端点 |  | 必选 | 1.3.4
 | 配置维护中间点 |  | 必选 | 1.3.5
配置CFD各项功能 | 配置连续性检测功能 |  | 必选 | 1.4.2
 | 配置环回功能 |  | 可选 | 1.4.3
 | 配置链路跟踪功能 |  | 可选 | 1.4.4

被STP协议阻塞的端口通常不能收发CFD协议报文，但下列情况例外：

l 如果设备上配置有外向MEP，那么外向MEP所在的端口即使被STP协议阻塞，也仍能收发CFD协议报文。

l 如果设备上配置有MIP或内向MEP，那么该设备的端口即使被STP协议阻塞，也仍能收发除CCM报文以外的其它CFD协议报文。


1.3 CFD基础配置

1.3.1 使能CFD功能

请在需要配置CFD功能的设备上使能CFD功能。

表1-2 使能CFD功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
使能CFD功能 | cfd enable | 必选 缺省情况下，CFD功能处于关闭状态

1.3.2 配置CFD版本

CFD协议有三种版本：IEEE 802.1ag draft5.2版本、IEEE 802.1ag draft5.2过渡版本和IEEE 802.1ag标准版本。同一维护域内的设备所采用的CFD版本应保持一致，否则这些设备之间的CFD协议报文将无法互通。

表1-3 配置CFD版本

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置CFD采用的协议版本 | cfd version { draft5 | draft5-plus | standard } | 必选 缺省情况下，CFD采用的协议版本为IEEE 802.1ag标准版本

当设备上存在维护域（包括通过 cfd md 命令创建的或通过 cfd service-instance maid format 命令自动生成的维护域）时，不允许在标准版本与非标准版本（即draft5.2版本和draft5.2过渡版本）之间进行切换，但允许在draft5.2版本与draft5.2过渡版本之间进行切换；当设备上不存在维护域时则无此限制。

1.3.3 配置服务实例

在配置维护端点和维护中间点之前，必须首先配置服务实例（Service Instance）。服务实例是服务接入点的集合，它属于某个维护域中的某个维护集。一个服务实例用一个整数表示，代表了一个维护域内的一个维护集。维护域和维护集确定了服务实例内的维护点所处理的报文的级别属性和VLAN属性。

服务实例可分为有维护域名称的服务实例和无维护域名称的服务实例两种，前者在CFD协议的任意版本下都有效，而后者只在CFD协议的IEEE 802.1ag标准版本下有效。用户可根据实际情况创建其中的一种。

1. 配置有维护域名称的服务实例

在创建有维护域名称的服务实例之前，必须先为该服务实例创建维护域和维护集。

请严格按照下列顺序依次创建维护域、维护集和有维护域名称的服务实例。

表1-4 配置有维护域名称的服务实例

操作 | 命令 | 说明
进入系统视图 | system-view | -
创建维护域 | cfd md md-name level level-value | 必选 缺省情况下，没有创建维护域
创建维护集 | cfd ma ma-name md md-name vlan vlan-id | 必选 缺省情况下，没有创建维护集
创建有维护域名称的服务实例 | cfd service-instance instance-id md md-name ma ma-name | 必选 缺省情况下，没有创建服务实例

2. 配置无维护域名称的服务实例

在创建无维护域名称的服务实例时，系统会自动为该服务实例创建维护集和维护域。

表1-5 配置无维护域名称的服务实例

操作 | 命令 | 说明
进入系统视图 | system-view | -
创建无维护域名称的服务实例 | cfd service-instance instance-id maid format { string ma-name } level level-value vlan vlan-id | 必选 缺省情况下，没有创建服务实例

1.3.4 配置维护端点

CFD功能主要体现在对维护端点的各种操作上，由于维护端点配置在服务实例上，因此服务实例所代表的维护域的级别和VLAN属性就自然成为了维护端点的属性。

在创建维护端点前必须先配置维护端点列表，维护端点列表是同一维护集内允许配置的本地维护端点和需要监控的远端维护端点的集合。

表1-6 配置维护端点

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置维护端点列表 | cfd meplist mep-list service-instance instance-id | 必选 缺省情况下，不存在维护端点列表
进入二层以太网端口视图 | interface interface-type interface-number | -
创建维护端点 | cfd mep mep-id service-instance instance-id { inbound | outbound } | 必选 缺省情况下，端口上不存在维护端点
使能维护端点 | cfd mep service-instance instance-id mep mep-id enable | 必选 缺省情况下，维护端点处于关闭状态

创建的维护端点必须已包含在对应服务实例的维护端点列表中，否则不能创建成功。

1.3.5 配置维护中间点

维护中间点是服务实例中的功能实体，用来响应各种CFD测试报文（如LTM、LBM、1DM、DMM、TST等）。

维护中间点是系统按照规则在各端口上自动创建的，其创建规则如下：如果端口上没有维护中间点，那么按照级别由低到高的顺序检查每个维护域内的维护集，并按照如 图1-5 所示的流程来决定是否创建维护中间点（指在同一VLAN内）。

图1-5 维护中间点的创建流程

请根据网络的规划配置维护中间点的创建规则。

表1-7 配置维护中间点

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置维护中间点的创建规则 | cfd mip-rule { explicit | default } service-instance instance-id | 必选 缺省情况下，没有维护中间点的创建规则，也不存在创建维护中间点

在配置了维护中间点的创建规则之后，下列任一条件均可触发维护中间点的创建或删除：

l 使能CFD功能

l 创建或删除端口上的维护端点

l 端口的VLAN属性发生变化

l 维护中间点的创建规则发生变化


1.4 配置CFD各项功能

1.4.1 配置准备

在配置CFD各项功能之前，需完成CFD的基础配置。

1.4.2 配置连续性检测功能

通过配置连续性检测功能，可以使维护端点间互发CCM报文来检测这些维护端点之间的连通状态，从而实现链路连通性的管理。

在配置其它各项CFD功能之前，必须先配置连续性检测功能。

表1-8 配置连续性检测功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置维护端点发送的CCM报文中时间间隔域的值 | cfd cc interval interval-value service-instance instance-id | 可选 缺省情况下，维护端点发送的CCM报文中时间间隔域的值为4
进入二层以太网端口视图 | interface interface-type interface-number | -
使能维护端点的CCM报文发送功能 | cfd cc service-instance instance-id mep mep-id enable | 必选 缺省情况下，维护端点的CCM报文发送功能处于关闭状态

不同设备上处于同一个维护域和维护集中的维护端点，其发送CCM报文的时间间隔必须相同。

维护端点发送的CCM报文中的时间间隔域（Interval域）的值与CCM发送时间间隔、远端MEP超时时间的关系如表1-9 所示。

表1-9 时间间隔域的值与CCM发送时间间隔、远端MEP超时时间的关系

时间间隔域的值 | CCM发送时间间隔 | 远端MEP超时时间
4 | 1秒 | 3.5秒
5 | 10秒 | 35秒
6 | 60秒 | 210秒
7 | 600秒 | 2100秒

1.4.3 配置环回功能

通过配置环回功能，可以检查链路状况，从而实现链路连通性的验证。

表1-10 配置环回功能

操作 | 命令 | 说明
启用环回功能检查链路状况 | cfd loopback service-instance instance-id mep mep-id { target-mep target-mep-id | target-mac mac-address } [ number number ] | 必选 缺省情况下，环回功能未启用 本命令可在任意视图下执行

1.4.4 配置链路跟踪功能

通过配置链路跟踪功能，可以查找源维护端点到目标维护端点之间的路径，从而实现链路故障的定位。它包括以下两种功能：

l 查找源维护端点到目标维护端点的路径：通过从源维护端点发送LTM报文到目标维护端点，并检测回应的LTR报文来确定设备间的路径。

l 自动发送链路跟踪报文：使能本功能后，当源维护端点在3.5个CCM报文发送周期内未收到目标维护端点发来的CCM报文，从而判定与目标维护端点的连接出错时，将发送LTM报文（该LTM报文的目地为目标维护端点，LTM报文中TTL字段为最大值255），通过检测回应的LTR报文来定位故障。

表1-11 配置链路跟踪功能

操作 | 命令 | 说明
查找指定维护端点到目标维护端点的路径 | cfd linktrace service-instance instance-id mep mep-id { target-mep target-mep-id | target-mac mac-address } [ ttl ttl-value ] [ hw-only ] | 必选 本命令可在任意视图下执行
进入系统视图 | system-view | -
使能自动发送链路跟踪报文功能 | cfd linktrace auto-detection [ size size-value ] | 必选 缺省情况下，自动发送链路跟踪报文功能处于关闭状态


1.5 CFD显示和维护

在完成上述配置后，在任意视图下执行 display 命令可以显示配置后CFD的运行情况，通过查看显示信息验证配置的效果。

表1-12 CFD显示和维护

操作 | 命令
显示CFD的使能状态 | display cfd status [ | { begin | exclude | include } regular-expression ]
显示CFD采用的协议版本 | display cfd version [ | { begin | exclude | include } regular-expression ]
显示维护域的配置信息 | display cfd md [ | { begin | exclude | include } regular-expression ]
显示维护集的配置信息 | display cfd ma [ [ ma-name ] md { md-name | level level-value } ] [ | { begin | exclude | include } regular-expression ]
显示服务实例的配置信息 | display cfd service-instance [ instance-id ] [ | { begin | exclude | include } regular-expression ]
显示服务实例内的维护端点列表 | display cfd meplist [ service-instance instance-id ] [ | { begin | exclude | include } regular-expression ]
显示维护点的信息 | display cfd mp [ interface interface-type interface-number ] [ | { begin | exclude | include } regular-expression ]
显示维护端点的属性和运行信息 | display cfd mep mep-id service-instance instance-id [ | { begin | exclude | include } regular-expression ]
显示维护端点上获得的LTR报文信息 | display cfd linktrace-reply [ service-instance instance-id [ mep mep-id ] ] [ | { begin | exclude | include } regular-expression ]
显示远端维护端点的信息 | display cfd remote-mep service-instance instance-id mep mep-id [ | { begin | exclude | include } regular-expression ]
显示自动发送LTM报文所收到的LTR报文的内容 | display cfd linktrace-reply auto-detection [ size size-value ] [ | { begin | exclude | include } regular-expression ]


1.6 CFD典型配置举例

1. 组网需求

l 由五台设备组成的网络被划分为MD_A和MD_B两个维护域，其级别分别为5和3，各设备的所有端口都属于VLAN 100，且各维护域内的维护集均服务于该VLAN。

l MD_A的边界端口为Device A的Ethernet1/0/1、Device D的Ethernet1/0/3和Device E的Ethernet1/0/4，这些端口上都是内向维护端点；MD_B的边界端口为Device B的Ethernet1/0/3和Device D的Ethernet1/0/1，这些端口都是外向维护端点。

l 要求将MD_A的维护中间点规划在Device B上，并只在端口上有低级别维护端点时配置。根据此规划，由于Device B的Ethernet1/0/3上配置有MD_B的维护端点，因此在Device B上采用Explicit规则来创建MD_A的维护中间点。

l 要求将MD_B的维护中间点规划在Device C上，并在其所有端口上配置。根据此规划，在Device C上配置MD_B的维护中间点，且其创建规则为Default规则。

l 要求通过使用连续性检测功能来检测MD_A和MD_B中各维护端点之间的连通状态，当检测到链路故障时，使用环回功能进行故障定位。

l 要求在获取到整个组网的状态后，使用链路跟踪功能进行路径查找或故障定位。

2. 组网图

图1-6 CFD典型配置组网图

3. 配置步骤

(1) 配置VLAN和端口

请按照图1-6 在各设备上分别创建VLAN 100，并配置端口Ethernet1/0/1～Ethernet1/0/4都属于VLAN 100。

(2) 使能CFD功能

# 在Device A上使能CFD功能。

<DeviceA> system-view

[DeviceA] cfd enable

Device B～Device E的配置与Device A相似，配置过程略。

(3) 配置服务实例

# 在Device A上创建级别为5的维护域MD_A，在MD_A中创建服务于VLAN 100的维护集MA_A，并为MD_A和MA_A创建服务实例1。

[DeviceA] cfd md MD_A level 5

[DeviceA] cfd ma MA_A md MD_A vlan 100

[DeviceA] cfd service-instance 1 md MD_A ma MA_A

Device E的配置与Device A相似，配置过程略。

# 在Device B上先创建级别为5的维护域MD_A，在MD_A中创建服务于VLAN 100的维护集MA_A，并为MD_A和MA_A创建服务实例1；再创建级别为3的维护域MD_B，在MD_B中创建服务于VLAN 100的维护集MA_B，并为MD_B和MA_B创建服务实例2。

[DeviceB] cfd md MD_A level 5

[DeviceB] cfd ma MA_A md MD_A vlan 100

[DeviceB] cfd service-instance 1 md MD_A ma MA_A

[DeviceB] cfd md MD_B level 3

[DeviceB] cfd ma MA_B md MD_B vlan 100

[DeviceB] cfd service-instance 2 md MD_B ma MA_B

Device D的配置与Device B相似，配置过程略。

# 在Device C上创建级别为3的维护域MD_B，在MD_B中创建服务于VLAN 100的维护集MA_B，并为MD_B和MA_B创建服务实例2。

[DeviceC] cfd md MD_B level 3

[DeviceC] cfd ma MA_B md MD_B vlan 100

[DeviceC] cfd service-instance 2 md MD_B ma MA_B

(4) 配置维护端点

# 在Device A的服务实例1内配置维护端点列表，在端口Ethernet1/0/1上创建并使能服务实例1内的内向维护端点1001。

[DeviceA] cfd meplist 1001 4002 5001 service-instance 1

[DeviceA] interface ethernet 1/0/1

[DeviceA-Ethernet1/0/1] cfd mep 1001 service-instance 1 inbound

[DeviceA-Ethernet1/0/1] cfd mep service-instance 1 mep 1001 enable

[DeviceA-Ethernet1/0/1] quit

# 在Device B的服务实例1和2内分别配置维护端点列表，在端口Ethernet1/0/3上创建并使能服务实例2内的外向维护端点2001。

[DeviceB] cfd meplist 1001 4002 5001 service-instance 1

[DeviceB] cfd meplist 2001 4001 service-instance 2

[DeviceB] interface ethernet 1/0/3

[DeviceB-Ethernet1/0/3] cfd mep 2001 service-instance 2 outbound

[DeviceB-Ethernet1/0/3] cfd mep service-instance 2 mep 2001 enable

[DeviceB-Ethernet1/0/3] quit

# 在Device D的服务实例1和2内分别配置维护端点列表，在端口Ethernet1/0/1上创建并使能服务实例2内的外向维护端点4001，然后在端口Ethernet1/0/3上创建并使能服务实例1内的内向维护端点4002。

[DeviceD] cfd meplist 1001 4002 5001 service-instance 1

[DeviceD] cfd meplist 2001 4001 service-instance 2

[DeviceD] interface ethernet 1/0/1

[DeviceD-Ethernet1/0/1] cfd mep 4001 service-instance 2 outbound

[DeviceD-Ethernet1/0/1] cfd mep service-instance 2 mep 4001 enable

[DeviceD-Ethernet1/0/1] quit

[DeviceD] interface ethernet 1/0/3

[DeviceD-Ethernet1/0/3] cfd mep 4002 service-instance 1 inbound

[DeviceD-Ethernet1/0/3] cfd mep service-instance 1 mep 4002 enable

[DeviceD-Ethernet1/0/3] quit

# 在Device E的服务实例1内配置维护端点列表，在端口Ethernet1/0/4上创建并使能服务实例1内的内向维护端点5001。

[DeviceE] cfd meplist 1001 4002 5001 service-instance 1

[DeviceE] interface ethernet 1/0/4

[DeviceE-Ethernet1/0/4] cfd mep 5001 service-instance 1 inbound

[DeviceE-Ethernet1/0/4] cfd mep service-instance 1 mep 5001 enable

[DeviceE-Ethernet1/0/4] quit

(5) 配置维护中间点

# 在Device B的服务实例1内配置维护中间点的创建规则为Explicit规则。

[DeviceB] cfd mip-rule explicit service-instance 1

# 在Device C的服务实例2内配置维护中间点的创建规则为Default规则。

[DeviceC] cfd mip-rule default service-instance 2

(6) 配置连续性检测功能

# 在Device A的端口Ethernet1/0/1上使能服务实例1内维护端点1001的CCM报文发送功能。

[DeviceA] interface ethernet 1/0/1

[DeviceA-Ethernet1/0/1] cfd cc service-instance 1 mep 1001 enable

[DeviceA-Ethernet1/0/1] quit

# 在Device B的端口Ethernet1/0/3上使能服务实例2内维护端点2001的CCM报文发送功能。

[DeviceB] interface ethernet 1/0/3

[DeviceB-Ethernet1/0/3] cfd cc service-instance 2 mep 2001 enable

[DeviceB-Ethernet1/0/3] quit

# 在Device D的端口Ethernet1/0/1上使能服务实例2内维护端点4001的CCM报文发送功能，并在端口Ethernet1/0/3上使能服务实例1内维护端点4002的CCM报文发送功能。

[DeviceD] interface ethernet 1/0/1

[DeviceD-Ethernet1/0/1] cfd cc service-instance 2 mep 4001 enable

[DeviceD-Ethernet1/0/1] quit

[DeviceD] interface ethernet 1/0/3

[DeviceD-Ethernet1/0/3] cfd cc service-instance 1 mep 4002 enable

[DeviceD-Ethernet1/0/3] quit

# 在Device E的端口Ethernet1/0/4上使能服务实例1内维护端点5001的CCM报文发送功能。

[DeviceE] interface ethernet 1/0/4

[DeviceE-Ethernet1/0/4] cfd cc service-instance 1 mep 5001 enable

[DeviceE-Ethernet1/0/4] quit

4. 检验配置效果

(1) 验证环回功能

当通过连续性检测功能检测到链路故障时，可以使用环回功能进行故障定位。譬如：

# 在Device A上启用环回功能，检查服务实例1内维护端点1001到5001的链路状况。

[DeviceA] cfd loopback service-instance 1 mep 1001 target-mep 5001

Loopback to 0010-FC00-6515 with the sequence number start from 1001-43404:

Reply from 0010-FC00-6515: sequence number=1001-43404 time=5ms

Reply from 0010-FC00-6515: sequence number=1001-43405 time=5ms

Reply from 0010-FC00-6515: sequence number=1001-43406 time=5ms

Reply from 0010-FC00-6515: sequence number=1001-43407 time=5ms

Reply from 0010-FC00-6515: sequence number=1001-43408 time=5ms

Send:5 Received:5 Lost:0

(2) 验证链路跟踪功能

当通过连续性检测功能获取到整个组网的状态后，可以使用链路跟踪功能进行路径查找或故障定位。譬如：

# 在Device A的服务实例1内查找维护端点1001到5001的路径。

[DeviceA] cfd linktrace service-instance 1 mep 1001 target-mep 5001

Linktrace to MEP 5001 with the sequence number 1001-43462

MAC Address TTL Last MAC Relay Action

0010-FC00-6515 63 0010-FC00-6512 Hit


1 DLDP配置

相关链接

  • 1.1 DLDP简介
  • 1.2 DLDP配置任务简介
  • 1.3 配置端口的双工模式和速率
  • 1.4 使能DLDP功能
  • 1.5 配置DLDP的工作模式
  • 1.6 配置发送Advertisement报文的时间间隔
  • 1.7 配置DelayDown定时器的超时时间
  • 1.8 配置发现单向链路后端口的关闭模式
  • 1.9 配置DLDP报文的认证方式
  • 1.10 重置DLDP的状态
  • 1.11 DLDP显示和维护
  • 1.12 DLDP典型配置举例
  • 1.13 常见配置错误举例
父主题： 04-DLDP配置


1.1 DLDP简介

1.1.1 DLDP产生背景

在实际组网中，有时会出现一种特殊的现象——单向链路（即单通）。所谓单向链路是指本端设备可以通过链路层收到对端设备发送的报文，但对端设备不能收到本端设备的报文。单向链路会引起一系列问题，比如生成树拓扑中存在环路等。

以光纤连接为例，单向链路可分为两种类型：一种是光纤交叉相连，另一种是一条光纤未连接或一条光纤断路。如图1-1 所示，是正确的光纤连接与上述两种类型单向连接的对比示意。

图1-1 正确与错误的光纤连接对比

DLDP（Device Link Detection Protocol，设备链路检测协议）可以监控光纤或铜质双绞线的链路状态。如果发现单向链路存在，DLDP会根据用户配置，自动关闭或通知用户手工关闭相关端口，以防止网络问题的发生。

DLDP是链路层协议，它与物理层协议协同工作来监控设备的链路状态。物理层的自动协商机制进行物理信号和故障的检测；DLDP进行对端设备的识别、单向链路的识别和关闭不可达端口等工作。二者协同工作，可以检测和关闭物理和逻辑的单向连接。如果链路两端在物理层都能独立正常工作，DLDP会在链路层检测这些链路是否正确连接、两端是否可以正确的交互报文。这种检测不能通过物理层的自动协商机制实现。

1.1.2 DLDP工作原理

1. DLDP协议状态

DLDP协议的状态类型如表1-1 所示。

表1-1 DLDP协议状态

状态 | 说明
Initial（初始） | DLDP协议未使能时的初始化状态
Inactive（非活动） | DLDP协议已使能且链路down时所处的状态
Active（活动） | DLDP协议已使能且链路up，或者清空邻居表项后所处的状态
Advertisement（通告） | 所有邻居双向连通（two way）或者处于Active状态超过5秒后进入的状态，这是一种没有发现单向链路时的比较稳定的状态
Probe（探测） | 收到一个未知邻居的报文后进入的状态，此时将发送探测报文检测链路是否为单向链路。该状态启动Probe发送定时器，为每个需要探测的邻居启动一个Echo等待定时器
Disable（单通） | DLDP协议检测到单向链路，或在加强模式下邻居消失时的状态。此时端口不再接收和发送除DLDPDU以外的报文
DelayDown（延迟down） | 当DLDP状态处于Active状态、Advertisement状态或Probe状态时，如果收到端口down事件，不会立即删除邻居、进入Inactive状态，而是先进入临时的DelayDown状态 在该状态下，DLDP邻居信息仍然被保留，同时启动DelayDown定时器

2. DLDP协议中的定时器

DLDP协议工作过程中需要使用到的定时器如表1-2 所示。

表1-2 DLDP协议中的定时器

定时器 | 说明
Active发送定时器 | 发送带有RSY标记的Advertisement报文的时间间隔（缺省为1秒）：即在Active状态下每秒发送1个带RSY标记的Advertisement报文，最多会发送5个报文
Advertisement发送定时器 | 发送普通Advertisement报文的时间间隔（缺省为5秒）
Probe发送定时器 | 发送Probe报文的时间间隔（固定为1秒）：即在Probe状态下每秒发送一次、每次发送1个Probe报文，最多会发送10个报文
Echo等待定时器 | 在DLDP切换到Probe状态或启动加强探测时启用Echo等待定时器（超时时间为10秒）。若该定时器超时后仍未收到来自邻居应答本端的Echo报文，则将本端的状态置为单通，并将状态机转到Disable状态，发送Disable报文，并根据用户配置的DLDP Down模式，提示用户手动或者自动关闭本端口，同时删除该邻居表项
邻居老化定时器 | 每个新邻居加入时都要建立邻居表项，并启用相应的邻居老化定时器，当收到邻居报文时刷新相应的邻居表项和邻居老化定时器： l 在普通模式下，若该定时器超时后仍未收到邻居发来的报文，则发送带有RSY标记的Advertisement报文，同时删除该邻居表项 l 在加强模式下，若该定时器超时后仍未收到邻居发来的报文，则启用加强定时器 邻居老化定时器的超时时间是Advertisement定时器的3倍
加强定时器 | 在加强模式下，若邻居老化定时器超时后仍未收到邻居发来的报文，则对该邻居启用加强定时器（超时时间为1秒）。在该定时器启用之后，每秒向邻居发送1个Probe报文，会连续发送8次
DelayDown定时器 | 当DLDP处于Active、Advertisement或Probe状态时，如果收到端口down事件，不会立即删除邻居并进入Inactive状态，而是先进入DelayDown状态并启动DelayDown定时器（此时仍保留DLDP邻居信息，且只响应端口up事件）： l 若该定时器超时后仍未收到端口up事件，则删除DLDP邻居信息并进入Inactive状态 l 若该定时器超时前收到了端口up事件，则返回到原来的DLDP状态
恢复探测定时器 | 恢复探测定时器的时间间隔为2秒：即处于Disable状态下的端口每2秒发送1个RecoverProbe报文，用于检测单向链路是否恢复

3. DLDP协议工作模式

DLDP协议有如下两种工作模式：

l 普通模式：在该模式下，一旦有邻居老化定时器超时，只是在删除该邻居表项的同时发送一个带RSY标记的Advertisement报文。

l 加强模式：在该模式下，一旦有邻居老化定时器超时，则启动加强定时器，每1秒发送1个Probe报文（连续发送8个）用于主动探测该邻居，如果Echo等待定时器超时仍未收到来自邻居的Echo报文，则进入Disable状态。

DLDP协议的工作模式与邻居表项老化之间的对应关系如表1-3 所示。

表1-3 DLDP协议工作模式与邻居表项老化关系表

DLDP协议工作模式 | 邻居老化后是否主动探测该邻居的存在 | 邻居老化定时器超时后是否立即删除该邻居表项 | 邻居老化定时器超时后是否启用加强定时器
普通模式 | 否 | 是 | 否
加强模式 | 是 | 否 | 是（加强定时器超时后开始发送Probe报文）

DLDP协议的工作模式与其可识别的单向链路类型之间的对应关系如表1-4 所示。

表1-4 单向链路类型与DLDP协议工作模式关系表

单向链路类型 | 光纤是否可能出现此种情况 | 铜质双绞线是否可能出现此种情况 | DLDP协议工作在哪种模式下可识别
交叉连接 | 是 | 否 | 在普通模式和加强模式下均可识别
某一方向线路未连接或断路 | 是 | 是 | 在普通模式下不可识别，在加强模式下可识别。此时，Rx端有信号的端口将处于Disable状态，而Rx端没有信号的端口将处于Inactive状态

加强模式的目的在于检测网络黑洞，防止出现一端up而另一端down的情况。有些设备在端口配置为强制速率和强制全双工模式时，会出现如图1-2 所示的情况（以光纤连接为例）：当DLDP协议未使能时，尽管Device B的端口虽已down掉，但由于普通的链路层协议无法检测出来，因此Device A的端口还处于up状态；而当DLDP协议已使能并工作在加强模式下时，Device A的端口在邻居老化定时器超时后会进行主动探测，如果在Echo等待定时器超时仍未收到Device B的端口返回的Echo报文，Device A的端口就将进入Disable状态。此时由于Device B的端口的物理状态为down，因此其DLDP状态为Inactive。

图1-2 加强模式应用场景示意图

4. DLDP认证方式

为了防止网络攻击和恶意探测，用户可以在端口上配置DLDP报文认证方式，分为下列三种：

l 不认证方式：发送DLDP报文一方将认证字字段置为全0，认证类型字段置为0；接收DLDP报文一方要将报文中的认证字和认证类型同本端配置进行比较，如果不一致，则丢弃报文。

l 明文认证方式：发送DLDP报文一方将认证字字段置为用户配置的明文认证密码，认证类型字段置为1；接收DLDP报文一方要将报文中的认证字和认证类型同本端配置进行比较，如果不一致，则丢弃报文。

l MD5认证方式：发送DLDP报文一方将认证字字段置为用户配置的密码采用MD5算法加密后的摘要，认证类型字段置为2；接收DLDP报文一方要将报文中的认证字和认证类型分别和本端配置的密码用MD5算法加密后的摘要以及本端认证类型进行比较，如果不一致，则丢弃报文。

5. DLDP工作过程

(1) 如果使能了DLDP的端口链路状态为up，DLDP会向对端发送DLDP报文，同时分析处理对端设备发送过来的DLDP报文。如表1-5 所示，DLDP在不同状态下发送的报文类型不同。

表1-5 不同DLDP状态下发送的报文类型

DLDP状态 | 发送的报文类型
Active | 带有RSY标记的Advertisement报文
Advertisement | 普通Advertisement报文
Probe | Probe报文
Disable | 发送一个Disable报文，随后发送RecoverProbe报文

当从其它DLDP状态（不包括Inactive和Disable）迁移到Initial状态时，DLDP将发送Flush报文。

(2) DLDP会对收到的报文进行如下分析和处理：

l 在认证方式下，对报文进行认证。如果报文通不过认证，丢弃该报文。

l 报文中的通告时间间隔如果和本设备的不一致，丢弃该报文。

l 对DLDP报文进行相应的处理，具体处理方式如表1-6 所示。

表1-6 DLDP对收到报文的处理方式

收到的报文类型 | 处理方式
带RSY标记的Advertisement报文 | 取出报文中的邻居信息后，判断邻居表中是否有该邻居的表项： l 如果没有，则为该邻居建立表项、启动该表项的老化定时器，并将DLDP状态切换到Probe状态 l 如果有，则刷新该表项的老化定时器，并将DLDP状态切换到Probe状态
普通Advertisement报文 | 取出报文中的邻居信息后，判断邻居表中是否有该邻居的表项： l 如果没有，则为该邻居建立表项、启动该表项的老化定时器，并将DLDP状态切换到Probe状态 l 如果有，则刷新该表项的老化定时器
Flush报文 | 判断本端口是否处于Disable状态： l 如果是，则不需进行任何处理 l 如果不是，且邻居表中有该邻居的表项，则删除该表项
Probe报文 | 取出报文中的邻居信息后，判断邻居表中是否有该邻居的表项： l 如果没有，则为该邻居建立表项，将DLDP状态切换到Probe状态，并向对端回复Echo报文 l 如果有，则刷新该表项的老化定时器，并向对端回复Echo报文
Echo报文 | 取出报文中的邻居信息后，判断邻居表中是否有该邻居的表项： l 如果没有，则为该邻居建立表项、启动该表项的老化定时器，并将DLDP状态切换到Probe状态 l 如果有，则检查报文中携带的邻居信息是否与本机相同：若不同则丢弃该报文；否则将该邻居标记为双向连通，如果所有邻居的状态都是双向连通，则将DLDP状态由Probe切换到Advertisement，同时将Echo定时器置为无效
Disable报文 | 判断本端口是否处于Disable状态： l 如果是，则不需进行任何处理 l 如果不是，则先将对应邻居的状态置为单通，再判断各邻居的状态：若所有邻居的状态都为单通，则本端口进入Disable状态；若存在状态未知的邻居，则待其状态确定后再进行处理；若存在处于双通状态的邻居，则删除所有处于单通状态的邻居
RecoverProbe报文 | 判断本端口是否处于Disable或Advertisement状态： l 如果都不是，则不需进行任何处理 l 如果是其中之一，则回应RecoverEcho报文
RecoverEcho报文 | 判断本端口是否处于Disable状态： l 如果不是，则不需进行任何处理 l 如果是，则检查该报文中携带的邻居信息是否与本端口的相同，若相同则本端口转换为Active状态
LinkDown报文 | 判断本端口是否工作在加强模式下： l 如果不是，则不需进行任何处理 l 如果是，且本端口尚未处于Disable状态，则先将对应邻居的状态置为单通，再判断各邻居的状态：若所有邻居的状态都为单通，则本端口进入Disable状态；若存在状态未知的邻居，则待其状态确定后再进行处理；若存在处于双通状态的邻居，则删除所有处于单通状态的邻居

(3) 如果DLDP没有收到邻居的Echo应答报文，会做如下处理：

表1-7 未收到邻居Echo应答报文时的处理过程

未收到邻居Echo报文 | 处理过程
普通模式下，Echo等待定时器超时还未收到 | 先将对应邻居的状态置为单通，再判断各邻居的状态： l 如果所有邻居的状态都为单通，则删除全部邻居，将DLDP状态切换到Disable，输出日志和跟踪信息，向邻居发送Disable报文，并根据用户配置的DLDP Down模式手动或自动关闭本端端口 l 如果存在状态未知的邻居，则待其状态确定后再进行处理 l 如果存在处于双通状态的邻居，则删除所有处于单通状态的邻居
加强模式下，由于加强探测启动的Echo定时器超时还未收到

6. 链路自动恢复机制

如果端口的关闭模式被设置为系统自动关闭，当DLDP检测到单向链路时，把端口的状态设置为DLDP Down，处于此状态的端口不会转发业务报文，也不能收发除DLDPDU之外的任何协议报文。

处于DLDP Down状态端口能在链路恢复之时，从DLDP Down状态中恢复。DLDP Down状态下的端口仍然会周期性的发送链路恢复探测报文（RecoverProbe报文），一旦收到正确的恢复回应报文（RecoverEcho报文），则说明单向链路已经变为双向链路，DLDP将此端口重新up。其具体过程如下：

处于DLDP Down状态的端口向外每2秒发送一次RecoverProbe报文。报文中只携带本端口的信息。对端如果收到该报文，则以RecoverEcho报文作为应答。一旦本端收到RecoverEcho报文，检查RecoverEcho报文中携带的邻居信息是否和本端口信息相同。如果相同，则认为本端口和该邻居之间已经恢复双向连通，则端口从Disable状态迁移到Active状态，开始重新建立邻居关系。

链路恢复报文只在处于DLDP Down状态的端口上发送和处理。如果端口被用户使用 shutdown 命令手工关闭，则自动恢复机制不能生效。

7. DLDP邻居状态

DLDP邻居的状态有三种，如表1-8 所示。

表1-8 DLDP邻居状态

状态类型 | 说明
未知状态 | 刚建立这个邻居，目前正在对邻居进行探测，还没有收到邻居回应时的邻居状态。该状态只在探测（Probe）过程中存在，探测结束后就转为双通或者单通
双通状态 | 收到邻居回应后的邻居状态，表示目前处于正常的双向连通状态，该状态可以长期稳定存在
单通状态 | 检测到单通链路时的邻居状态，此时会将该邻居删除


1.2 DLDP配置任务简介

表1-9 DLDP配置任务简介

配置任务 | 说明 | 详细配置
配置端口的双工模式和速率 | 必选 | 1.3
使能DLDP功能 | 必选 | 1.4
配置DLDP的工作模式 | 可选 | 1.5
配置发送Advertisement报文的时间间隔 | 可选 | 1.6
配置DelayDown定时器的超时时间 | 可选 | 1.7
配置发现单向链路后端口的关闭模式 | 可选 | 1.8
配置DLDP报文的认证方式 | 可选 | 1.9
重置DLDP的状态 | 可选 | 1.10

l 为确保DLDP能够正常工作，要保证两端设备的DLDP功能都处于使能状态，且发送Advertisement报文的时间间隔、DLDP报文的认证方式及口令都相同。

l DLDP不会处理任何LACP（Link Aggregation Control Protocol，链路聚合控制协议）事件，DLDP会将端口聚合组中的每条链路都视为独立的链路进行处理。

l 请确保两端设备上运行的DLDP版本一致，否则DLDP的运行可能出现问题。


1.3 配置端口的双工模式和速率

为了使DLDP能够正常工作，需要将两端端口的双工模式都配置为全双工模式，速率都配置为相同的强制速率。

有关 duplex 和 speed 命令的详细介绍，请参见“二层技术-以太网交换命令参考”中的“以太网端口”。


1.4 使能DLDP功能

要启用DLDP功能，必须先全局使能DLDP功能，再在端口上使能DLDP功能。

表1-10 使能DLDP功能

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
全局使能DLDP功能 |  | dldp enable | 必选 缺省情况下，全局的DLDP功能处于关闭状态
进入相应视图 | 进入二层以太网端口视图 | interface interface-type interface-number | 二者必选其一 二层以太网端口视图下的配置只对当前端口生效，端口组视图下的配置对当前端口组中的所有端口生效
 | 进入端口组视图 | port-group manual port-group-name
使能端口的DLDP功能 |  | dldp enable | 必选 缺省情况下，端口上的DLDP功能处于关闭状态

l 只能在以太网端口（包括光口和电口）上使能DLDP功能。

l DLDP功能只有在物理链路连通后才会起作用，因此在使能DLDP之前，请连接好光纤或铜质双绞线。


1.5 配置DLDP的工作模式

DLDP的工作模式分为普通模式和加强模式两种：在普通模式下，DLDP协议在老化邻居表项时不会主动探测邻居是否存在；而在加强模式下，DLDP协议在老化邻居表项时会主动探测邻居是否存在。

表1-11 配置DLDP的工作模式

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置DLDP的工作模式 | dldp work-mode { enhance | normal } | 可选 缺省情况下，DLDP的工作模式为普通模式


1.6 配置发送Advertisement报文的时间间隔

通过合理调整发送Advertisement报文的时间间隔，可使DLDP在不同的网络环境下都能够及时发现单向链路。通常情况下，发送Advertisement报文的时间间隔应小于STP收敛时间的三分之一：若此间隔太长，可能导致在DLDP关闭单向链路前出现STP环路，由于设备需较长时间才能发现单向链路，因此会造成较多错误流量的转发；若此间隔太短，则会增加网络的流量。建议采用缺省值。

表1-12 配置发送Advertisement报文的时间间隔

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置发送Advertisement报文的时间间隔 | dldp interval time | 可选 缺省情况下，发送Advertisement报文的时间间隔为5秒

l 本配置将应用于所有使能了DLDP功能的端口上。

l 请确保通过光纤/铜质双绞线连接的两台设备上发送Advertisement报文的时间间隔相同，否则DLDP将不能正常工作。


1.7 配置DelayDown定时器的超时时间

有些端口在Tx端发生故障时会引起Rx端光信号的抖动（表现为该端口down后随即又up），为避免在这种情况下直接进入Inactive状态而清除了邻居信息，因此先进入DelayDown状态，同时启动DelayDown定时器，待该定时器超时后再进入Inactive状态。如果在DelayDown定时器超时之前端口up了，则返回之前的DLDP状态。

表1-13 配置DelayDown定时器的超时时间

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置DelayDown定时器的超时时间 | dldp delaydown-timer time | 可选 缺省情况下，DelayDown定时器的超时时间为1秒

本配置将应用于所有使能了DLDP功能的端口上。


1.8 配置发现单向链路后端口的关闭模式

当DLDP检测到单向链路时，可以采用两种方式关闭单通的端口：

l 手动模式：其目的是为了避免网络性能差时，DLDP协议检测到单通就立即自动关闭端口，从而造成业务报文不能收发，是针对这种误判较多的情形所采取的一种折中方案。它仅依靠DLDP协议检测单向链路，端口的关闭由网络管理员手动完成。在该模式下，当DLDP检测到单通时，DLDP状态机只输出Log和Trap信息，建议此时用户使用 shutdown 命令手工关闭此端口，然后DLDP状态机才会迁移到Disable状态。

l 自动模式：在该模式下，当DLDP协议检测到单通时，除了DLDP状态机迁移到Disable状态并输出Log和Trap信息外，还会自动将端口的状态设置为DLDP Down。

表1-14 配置发现单向链路后端口的关闭模式

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置发现单向链路后端口的关闭模式 | dldp unidirectional-shutdown { auto | manual } | 可选 缺省情况下，发现单向链路后端口的关闭模式为自动模式

l 如果欲在端口上配置OAM远端环回，建议先将发现单向链路后端口的关闭模式配置为手动模式，否则DLDP收到了由本端口发出的报文后会认为出现单向链路而自动关闭端口，从而导致OAM远端环回失效。

l 当设备业务量较大或CPU利用率较高时，可能会出现DLDP误报的情况。此时建议将发现单向链路后端口的关闭模式配置为手动模式，以减小由于DLDP误报而造成的影响。


1.9 配置DLDP报文的认证方式

通过配置适当的DLDP报文的认证方式，可以防止网络攻击和恶意探测。DLDP报文的认证方式可分为三种：不认证、明文认证和MD5认证。

表1-15 配置DLDP报文的认证方式

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置当前设备与邻居设备端口间的DLDP认证方式 | dldp authentication-mode { md5 md5-password | none | simple simple-password } | 必选 缺省情况下，当前设备与邻居设备端口间的DLDP认证方式为 none

请确保两台设备间通过光纤/铜质双绞线连接的端口上配置的DLDP认证方式和认证口令相同，否则DLDP将不能正常工作。


1.10 重置DLDP的状态

DLDP协议发现单向链路后，端口进入Disable状态。此时需要根据用户选择的端口关闭模式，提示用户关闭端口或自动将端口的状态设为DLDP Down。如果用户需要该端口重新探测，可以通过下列方式重置端口的DLDP状态：

l 对于使用 shutdown 命令手工关闭的端口，用户需要手动输入 undo shutdown 命令来恢复对端口的探测。

l 对于系统自动设置为DLDP Down的端口，用户可以等待DLDP通过链路自动恢复机制，发现邻居恢复双通后启用端口；也可以使用 dldp reset 命令来手工恢复，从而使处于DLDP Down状态下的端口重新进行单向链路的检测。

恢复后的端口状态与端口的物理状态有关：如果端口的物理状态为down，则端口的DLDP状态变为Inactive；如果端口的物理状态为up，则端口的DLDP状态变为Active。

重置DLDP的状态可以在全局进行或在端口上进行：

1. 全局重置DLDP的状态

在系统视图下全局重置DLDP的状态，将对设备上所有端口的DLDP状态进行重置。

表1-16 全局重置DLDP的状态

操作 | 命令 | 说明
进入系统视图 | system-view | -
全局重置DLDP的状态 | dldp reset | 必选

2. 在端口上重置DLDP的状态

在端口上重置DLDP的状态，只能对当前端口或端口组中所有端口的DLDP状态进行重置。

表1-17 在端口上重置DLDP的状态

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
进入相应视图 | 进入二层以太网端口视图 | interface interface-type interface-number | 二者必选其一 二层以太网端口视图下的配置只对当前端口生效，端口组视图下的配置对当前端口组中的所有端口生效
 | 进入端口组视图 | port-group manual port-group-name
重置DLDP的状态 |  | dldp reset | 必选


1.11 DLDP显示和维护

在完成上述配置后，在任意视图下执行 display 命令可以显示配置后DLDP的运行情况及报文统计信息，通过查看显示信息验证配置的效果。

在用户视图下执行 reset 命令可以清除DLDP报文统计信息。

表1-18 DLDP显示和维护

操作 | 命令
显示端口的DLDP配置信息 | display dldp [ interface-type interface-number ] [ | { begin | exclude | include } regular-expression ]
显示端口的DLDP报文统计信息 | display dldp statistics [ interface-type interface-number ] [ | { begin | exclude | include } regular-expression ]
清除端口的DLDP报文统计信息 | reset dldp statistics [ interface-type interface-number ]


1.12 DLDP典型配置举例

1.12.1 自动关闭单向链路配置举例

1. 组网需求

l Device A和Device B各自的端口Gigabitethernet1/0/49和Gigabitethernet1/0/50之间分别通过一对光纤进行连接。

l 要求通过配置，使DLDP检测到单向链路故障后自动关闭故障端口，并在网络管理员排除故障后，故障端口能够自动恢复。

2. 组网图

图1-3 自动关闭单向链路配置组网图

3. 配置步骤

(1) 配置Device A

# 全局使能DLDP功能。

<DeviceA> system-view

[DeviceA] dldp enable

# 在端口GigabitEthernet1/0/49上配置双工模式为全双工、端口速率为1000Mbps，并使能DLDP功能。

[DeviceA] interface gigabitethernet 1/0/49

[DeviceA-GigabitEthernet1/0/49] duplex full

[DeviceA-GigabitEthernet1/0/49] speed 1000

[DeviceA-GigabitEthernet1/0/49] dldp enable

[DeviceA-GigabitEthernet1/0/49] quit

# 在端口GigabitEthernet1/0/50上配置双工模式为全双工、端口速率为1000Mbps，并使能DLDP功能。

[DeviceA] interface gigabitethernet 1/0/50

[DeviceA-GigabitEthernet1/0/50] duplex full

[DeviceA-GigabitEthernet1/0/50] speed 1000

[DeviceA-GigabitEthernet1/0/50] dldp enable

[DeviceA-GigabitEthernet1/0/50] quit

# 配置DLDP的工作模式为加强模式。

[DeviceA] dldp work-mode enhance

# 配置发现单向链路后端口的关闭模式为自动模式。

[DeviceA] dldp unidirectional-shutdown auto

(2) 配置Device B

# 全局使能DLDP功能。

<DeviceB> system-view

[DeviceB] dldp enable

# 在端口GigabitEthernet1/0/49上配置双工模式为全双工、端口速率为1000Mbps，并使能DLDP功能。

[DeviceB] interface gigabitethernet 1/0/49

[DeviceB-GigabitEthernet1/0/49] duplex full

[DeviceB-GigabitEthernet1/0/49] speed 1000

[DeviceB-GigabitEthernet1/0/49] dldp enable

[DeviceB-GigabitEthernet1/0/49] quit

# 在端口GigabitEthernet1/0/50上配置双工模式为全双工、端口速率为1000Mbps，并使能DLDP功能。

[DeviceB] interface gigabitethernet 1/0/50

[DeviceB-GigabitEthernet1/0/50] duplex full

[DeviceB-GigabitEthernet1/0/50] speed 1000

[DeviceB-GigabitEthernet1/0/50] dldp enable

[DeviceB-GigabitEthernet1/0/50] quit

# 配置DLDP的工作模式为加强模式。

[DeviceB] dldp work-mode enhance

# 配置发现单向链路后端口的关闭模式为自动模式。

[DeviceB] dldp unidirectional-shutdown auto

(3) 检验配置效果

配置完成后，通过使用 display dldp 命令可以查看端口上的DLDP配置信息。例如：

# 查看Device A所有使能了DLDP的端口上的DLDP配置信息。

[DeviceA] display dldp

DLDP global status : enable

DLDP interval : 5s

DLDP work-mode : enhance

DLDP authentication-mode : none

DLDP unidirectional-shutdown : auto

DLDP delaydown-timer : 1s

The number of enabled ports is 2.

Interface GigabitEthernet1/0/49

DLDP port state : advertisement

DLDP link state : up

The neighbor number of the port is 1.

Neighbor mac address : 0023-8956-3600

Neighbor port index : 59

Neighbor state : two way

Neighbor aged time : 11

Interface GigabitEthernet1/0/50

DLDP port state : advertisement

DLDP link state : up

The neighbor number of the port is 1.

Neighbor mac address : 0023-8956-3600

Neighbor port index : 60

Neighbor state : two way

Neighbor aged time : 12

以上信息表明，端口GigabitEthernet1/0/49和GigabitEthernet1/0/50上的DLDP状态机均处于Advertisement状态，说明这两个端口所在的链路均处于双通状态。

# 在Device A上打开系统信息监视功能，并分别打开Log和Trap信息的显示功能。

[DeviceA] quit

<DeviceA> terminal monitor

<DeviceA> terminal logging

<DeviceA> terminal trapping

此后某刻，网络管理员在Device A上看到如下Log和Trap信息：

<DeviceA>

#Jan 18 17:36:18:798 2010 DeviceA DLDP/1/TrapOfUnidirectional: -Slot=1; Trap 1.3.6.1.4.1.25506.2.43.2.1.1<hh3cDLDPUnidirectionalPort> : DLDP detects a unidirectional link in port 17825792.

%Jan 18 17:36:18:799 2010 DeviceA IFNET/3/LINK_UPDOWN: GigabitEthernet1/0/49 link status is DOWN.

%Jan 18 17:36:18:799 2010 DeviceA DLDP/3/DLDP_UNIDIRECTION_AUTO: -Slot=1; DLDP detects a unidirectional link on port GigabitEthernet1/0/49. The transceiver has malfunction in the Tx direction or cross-connected links exist between the local device and its neighbor. The shutdown mode is AUTO. DLDP shuts down the port.

#Jan 18 17:36:20:189 2010 DeviceA DLDP/1/TrapOfUnidirectional: -Slot=1; Trap 1.3.6.1.4.1.25506.2.43.2.1.1<hh3cDLDPUnidirectionalPort> : DLDP detects a unidirectional link in port 17825793.

%Jan 18 17:36:20:189 2010 DeviceA IFNET/3/LINK_UPDOWN: GigabitEthernet1/0/50 link status is DOWN.

%Jan 18 17:36:20:190 2010 DeviceA DLDP/3/DLDP_UNIDIRECTION_AUTO: -Slot=1; DLDP detects a unidirectional link on port GigabitEthernet1/0/50. The transceiver has malfunction in the Tx direction or cross-connected links exist between the local device and its neighbor. The shutdown mode is AUTO. DLDP shuts down the port.

%Jan 15 16:54:56:040 2010 DeviceA DLDP/3/DLDP_UNIDIRECTION_AUTO_ENHANCE: -Slot=1; In enhanced DLDP mode, port GigabitEthernet1/0/49 cannot detect its aged-out neighbor. The transceiver has malfunction in the Tx direction or cross-connected links exist between the local device and its neighbor. The shutdown mode is AUTO. DLDP shuts down the port.

以上信息表明，端口GigabitEthernet1/0/49和GigabitEthernet1/0/50的链路状态均已变为down；DLDP在这两个端口上都检测到了单向链路，并自动关闭了这两个端口。

经过网络管理员排查，发现连接Device A和Device B的两对光纤被错误地进行了交叉连接。于是，网络管理员将这两对光纤重新进行了正确连接，然后在Device A上看到如下Log信息：

<DeviceA>

%Jan 18 17:47:33:869 2010 DeviceA IFNET/3/LINK_UPDOWN: GigabitEthernet1/0/49 link status is UP.

%Jan 18 17:47:35:894 2010 DeviceA IFNET/3/LINK_UPDOWN: GigabitEthernet1/0/50 link status is UP.

以上信息表明，端口GigabitEthernet1/0/49和GigabitEthernet1/0/50的链路状态均已重新变为up。

1.12.2 手动关闭单向链路配置举例

1. 组网需求

l Device A和Device B各自的端口Gigabitethernet1/0/49和Gigabitethernet1/0/50之间分别通过一对光纤进行连接。

l 要求通过配置，使DLDP检测到单向链路故障后，提示网络管理员手工关闭故障端口。

2. 组网图

图1-4 手动关闭单向链路配置组网图

3. 配置步骤

(1) 配置Device A

# 全局使能DLDP功能。

<DeviceA> system-view

[DeviceA] dldp enable

# 在端口GigabitEthernet1/0/49上配置双工模式为全双工、端口速率为1000Mbps，并使能DLDP功能。

[DeviceA] interface gigabitethernet 1/0/49

[DeviceA-GigabitEthernet1/0/49] duplex full

[DeviceA-GigabitEthernet1/0/49] speed 1000

[DeviceA-GigabitEthernet1/0/49] dldp enable

[DeviceA-GigabitEthernet1/0/49] quit

# 在端口GigabitEthernet1/0/50上配置双工模式为全双工、端口速率为1000Mbps，并使能DLDP功能。

[DeviceA] interface gigabitethernet 1/0/50

[DeviceA-GigabitEthernet1/0/50] duplex full

[DeviceA-GigabitEthernet1/0/50] speed 1000

[DeviceA-GigabitEthernet1/0/50] dldp enable

[DeviceA-GigabitEthernet1/0/50] quit

# 配置DLDP的工作模式为加强模式。

[DeviceA] dldp work-mode enhance

# 配置发现单向链路后端口的关闭模式为手动模式。

[DeviceA] dldp unidirectional-shutdown manual

(2) 配置Device B

# 全局使能DLDP功能。

<DeviceB> system-view

[DeviceB] dldp enable

# 在端口GigabitEthernet1/0/49上配置双工模式为全双工、端口速率为1000Mbps，并使能DLDP功能。

[DeviceB] interface gigabitethernet 1/0/49

[DeviceB-GigabitEthernet1/0/49] duplex full

[DeviceB-GigabitEthernet1/0/49] speed 1000

[DeviceB-GigabitEthernet1/0/49] dldp enable

[DeviceB-GigabitEthernet1/0/49] quit

# 在端口GigabitEthernet1/0/50上配置双工模式为全双工、端口速率为1000Mbps，并使能DLDP功能。

[DeviceB] interface gigabitethernet 1/0/50

[DeviceB-GigabitEthernet1/0/50] duplex full

[DeviceB-GigabitEthernet1/0/50] speed 1000

[DeviceB-GigabitEthernet1/0/50] dldp enable

[DeviceB-GigabitEthernet1/0/50] quit

# 配置DLDP的工作模式为加强模式。

[DeviceB] dldp work-mode enhance

# 配置发现单向链路后端口的关闭模式为手动模式。

[DeviceB] dldp unidirectional-shutdown manual

(3) 检验配置效果

配置完成后，通过使用 display dldp 命令可以查看端口上的DLDP配置信息。例如：

# 查看Device A所有使能了DLDP的端口上的DLDP配置信息。

[DeviceA] display dldp

DLDP global status : enable

DLDP interval : 5s

DLDP work-mode : enhance

DLDP authentication-mode : none

DLDP unidirectional-shutdown : manual

DLDP delaydown-timer : 1s

The number of enabled ports is 2.

Interface GigabitEthernet1/0/49

DLDP port state : advertisement

DLDP link state : up

The neighbor number of the port is 1.

Neighbor mac address : 0023-8956-3600

Neighbor port index : 59

Neighbor state : two way

Neighbor aged time : 11

Interface GigabitEthernet1/0/50

DLDP port state : advertisement

DLDP link state : up

The neighbor number of the port is 1.

Neighbor mac address : 0023-8956-3600

Neighbor port index : 60

Neighbor state : two way

Neighbor aged time : 12

以上信息表明，端口GigabitEthernet1/0/49和GigabitEthernet1/0/50上的DLDP状态机均处于Advertisement状态，说明这两个端口所在的链路均处于双通状态。

# 在Device A上打开系统信息监视功能，并分别打开Log和Trap信息的显示功能。

[DeviceA] quit

<DeviceA> terminal monitor

<DeviceA> terminal logging

<DeviceA> terminal trapping

此后某刻，网络管理员在Device A上看到如下Log和Trap信息：

<DeviceA>

#Jan 18 18:10:38:481 2010 DeviceA DLDP/1/TrapOfUnidirectional: -Slot=1; Trap 1.3.6.1.4.1.25506.2.43.2.1.1<hh3cDLDPUnidirectionalPort> : DLDP detects a unidirectional link in port 17825792.

%Jan 18 18:10:38:481 2010 DeviceA DLDP/3/DLDP_UNIDIRECTION_MANUAL: -Slot=1; DLDP detects a unidirectional link on port GigabitEthernet1/0/49. The transceiver has malfunction in the Tx direction or cross-connected links exist between the local device and its neighbor. The shutdown mode is MANUAL. The port needs to be shut down by the user.

#Jan 18 18:10:38:618 2010 DeviceA DLDP/1/TrapOfUnidirectional: -Slot=1; Trap 1.3.6.1.4.1.25506.2.43.2.1.1<hh3cDLDPUnidirectionalPort> : DLDP detects a unidirectional link in port 17825793.

%Jan 18 18:10:38:618 2010 DeviceA DLDP/3/DLDP_UNIDIRECTION_MANUAL: -Slot=1; DLDP detects a unidirectional link on port GigabitEthernet1/0/50. The transceiver has malfunction in the Tx direction or cross-connected links exist between the local device and its neighbor. The shutdown mode is MANUAL. The port needs to be shut down by the user.

以上信息表明，DLDP在端口GigabitEthernet1/0/49和GigabitEthernet1/0/50上都检测到了单向链路，并提示用户手工关闭故障端口。

经过网络管理员排查，发现连接Device A和Device B的两对光纤被错误地进行了交叉连接。于是，网络管理员将故障端口手工关闭：

# 在Device A上分别关闭端口GigabitEthernet1/0/49和GigabitEthernet1/0/50，并看到如下Log信息：

<DeviceA> system-view

[DeviceA] interface gigabitethernet 1/0/49

[DeviceA-GigabitEthernet1/0/49] shutdown

%Jan 18 18:16:12:044 2010 DeviceA IFNET/3/LINK_UPDOWN: GigabitEthernet1/0/49 link status is DOWN.

[DeviceA-GigabitEthernet1/0/49] quit

[DeviceA] interface gigabitethernet 1/0/50

[DeviceA-GigabitEthernet1/0/50] shutdown

%Jan 18 18:18:03:583 2010 DeviceA IFNET/3/LINK_UPDOWN: GigabitEthernet1/0/50 link status is DOWN.

以上信息表明，端口GigabitEthernet1/0/49和GigabitEthernet1/0/50的链路状态均已变为down。

然后，网络管理员将连接Device A和Device B的两对光纤重新进行了正确连接。检查无误后，网络管理员将已排除故障的端口重新打开：

# 在Device A上分别打开端口GigabitEthernet1/0/50和GigabitEthernet1/0/49，并看到如下Log信息：

[DeviceA-GigabitEthernet1/0/50] undo shutdown

[DeviceA-GigabitEthernet1/0/50]

%Jan 18 18:22:11:698 2010 DeviceA IFNET/3/LINK_UPDOWN: GigabitEthernet1/0/50 link status is UP.

[DeviceA-GigabitEthernet1/0/50] quit

[DeviceA] interface gigabitethernet 1/0/49

[DeviceA-GigabitEthernet1/0/49] undo shutdown

[DeviceA-GigabitEthernet1/0/49]

%Jan 18 18:22:46:065 2010 DeviceA IFNET/3/LINK_UPDOWN: GigabitEthernet1/0/49 link status is UP.

以上信息表明，端口GigabitEthernet1/0/49和GigabitEthernet1/0/50的链路状态均已重新变为up。


1.13 常见配置错误举例

1.13.1 DLDP检测不出单向链路

1. 故障现象

Device A和Device B通过两对光纤相连，并在这两台设备上都使能了DLDP；假设Device A与Device B间出现了光纤交叉连接的情况，但DLDP并未检测出链路单通，且四个端口均处于Advertisement状态。

2. 故障分析

如下两个原因均会导致上述情况的出现：

l Device A和Device B上配置的发送Advertisement报文的时间间隔不一致。

l Device A和Device B上配置的DLDP报文认证方式或认证口令不一致。

3. 故障排除

在Device A和Device B上配置相同的发送Advertisement报文的时间间隔、DLDP报文的认证方式及口令。


1 RRPP配置

相关链接

  • 1.1 RRPP简介
  • 1.2 RRPP配置任务简介
  • 1.3 创建RRPP域
  • 1.4 配置控制VLAN
  • 1.5 配置保护VLAN
  • 1.6 配置RRPP环
  • 1.7 激活RRPP域
  • 1.8 配置RRPP定时器
  • 1.9 配置RRPP环组
  • 1.10 RRPP显示和维护
  • 1.11 RRPP典型配置举例
  • 1.12 常见配置错误举例
父主题： 05-RRPP配置


1.1 RRPP简介

RRPP（Rapid Ring Protection Protocol，快速环网保护协议）是一个专门应用于以太网环的链路层协议。它在以太网环完整时能够防止数据环路引起的广播风暴，而当以太网环上一条链路断开时能迅速恢复环网上各个节点之间的通信通路，具备较高的收敛速度。

1.1.1 RRPP产生背景

城域网和企业网大多采用环网来构建以提供高可靠性，但环上任意一个节点发生故障都会影响业务。环网采用的技术一般是RPR或以太网环。RPR需要专用硬件，因此成本较高。而以太网环技术日趋成熟且成本低廉，城域网和企业网采用以太网环的趋势越来越明显。

目前，解决二层网络环路问题的技术有RSTP/PVST/MSTP和RRPP。RSTP/PVST/MSTP应用比较成熟，但收敛时间在秒级。RRPP是专门应用于以太网环的链路层协议，具有比RSTP/PVST/MSTP更快的收敛速度。并且RRPP的收敛时间与环网上节点数无关，可应用于网络直径较大的网络。

1.1.2 RRPP基本概念

图1-1 RRPP组网示意图

1. RRPP域

具有相同的域ID和控制VLAN，并且相互连通的设备构成一个RRPP域。一个RRPP域具有RRPP主环、子环、控制VLAN、主节点、传输节点、主端口和副端口、公共端口和边缘端口等要素。

如 图1-1 所示，Domain 1就是一个RRPP域，它包含了两个RRPP环Ring 1和Ring 2，RRPP环上的所有节点属于这个RRPP域。

2. RRPP环

一个环形连接的以太网网络拓扑称为一个RRPP环。RRPP环分为主环和子环，环的角色可以通过指定RRPP环的级别来设定，主环的级别为0，子环的级别为1。一个RRPP域可以包含一个或多个RRPP环，但只能有一个主环，其它均为子环。

RRPP环的状态有以下两种：

l 健康状态：整个环网物理链路是连通的；

l 断裂状态：环网中某处物理链路断开。

如 图1-1 所示，RRPP域Domain 1中包含了两个RRPP环Ring 1和Ring 2。Ring 1和Ring 2的级别分别配置为0和1，则Ring 1为主环，Ring 2为子环。

3. 控制VLAN和数据VLAN

控制VLAN和数据VLAN是相对而言的：

(1) 控制VLAN

控制VLAN用来传递RRPP协议报文。设备上接入RRPP环的端口都属于控制VLAN，且只有接入RRPP环的端口可加入此VLAN。

每个RRPP域都有两个控制VLAN：主控制VLAN和子控制VLAN。主环的控制VLAN称为主控制VLAN，子环的控制VLAN称为子控制VLAN。配置时只需指定主控制VLAN，系统会自动把比主控制VLAN的VLAN ID值大1的VLAN作为子控制VLAN。

同一个RRPP域中所有子环的控制VLAN都相同，且主控制VLAN和子控制VLAN的接口上都不允许配置IP地址。

(2) 数据VLAN

与控制VLAN相对，数据VLAN用来传输数据报文。数据VLAN中既可包含RRPP端口，也可包含非RRPP端口。

4. 节点

RRPP环上的每台设备都称为一个节点。节点角色由用户的配置来决定，分为下列几种：

l 主节点：每个环上有且仅有一个主节点。主节点是环网状态主动检测机制的发起者，也是网络拓扑发生改变后执行操作的决策者。

l 传输节点：主环上除主节点以外的其它所有节点，以及子环上除主节点、子环与主环相交节点以外的其它所有节点都为传输节点。传输节点负责监测自己的直连RRPP链路的状态，并把链路变化通知主节点，然后由主节点来决策如何处理。

l 边缘节点：同时位于主环和子环上的节点，是一种特殊的传输节点。它在主环上是传输节点，而在子环上则是边缘节点。

l 辅助边缘节点：同时位于主环和子环上的节点，也是一种特殊的传输节点。它在主环上是传输节点，而在子环上则是辅助边缘节点。辅助边缘节点与边缘节点成对使用，用于检测主环完整性和进行环路预防。

如 图1-1 所示，Ring 1为主环，Ring 2为子环。Device A为Ring 1的主节点，Device B、Device C和Device D为Ring 1的传输节点；Device E为Ring 2的主节点，Device B为Ring 2的边缘节点，Device C为Ring 2的辅助边缘节点。

5. 主端口和副端口

主节点和传输节点各自有两个端口接入RRPP环，其中一个为主端口，另一个为副端口。端口的角色由用户的配置来决定。

(1) 主节点的主端口和副端口在功能上有所区别：

l 主节点的主端口用来发送探测环路的报文，副端口用来接收该报文。

l 当RRPP环处于健康状态时，主节点的副端口在逻辑上阻塞数据VLAN，只允许控制VLAN的报文通过；当RRPP环处于断裂状态时，主节点的副端口将解除数据VLAN的阻塞状态，转发数据VLAN的报文。

(2) 传输节点的主端口和副端口在功能上没有区别，都用于RRPP环上协议报文和数据报文的传输。

如 图1-1 所示，Device A为Ring 1的主节点，Port 1和Port 2分别为其在Ring 1上的主端口与副端口；Device B、Device C和Device D为Ring 1的传输节点，它们各自的Port 1和Port 2分别为本节点在Ring 1上的主端口和副端口。

6. 公共端口和边缘端口

公共端口是边缘节点和辅助边缘节点上接入主环的端口，即边缘节点和辅助边缘节点分别在主环上配置的两个端口。边缘端口是边缘节点和辅助边缘节点上只接入子环的端口。

端口的角色由用户的配置决定。如 图1-1 所示，Device B、Device C同时位于Ring 1和Ring 2上，Device B和Device C各自的端口Port 1和Port 2是接入主环的端口，因此是公共端口。Device B和Device C各自的Port 3只接入子环，因此是边缘端口。

7. RRPP环组

RRPP环组是为减少Edge-Hello报文（关于此报文的介绍请参见“ 1.1.3 RRPP协议报文 ”）的收发数量，在边缘节点或辅助边缘节点上配置的一组子环的集合。这些子环的边缘节点都配置在同一台设备上，同样辅助边缘节点也都配置在同一台设备上。而且边缘节点或辅助边缘节点所在子环对应的主环链路相同，也就是说这些子环边缘节点的Edge-Hello报文都走相同的路径到达辅助边缘节点。

在边缘节点上配置的环组称为边缘节点环组，在辅助边缘节点上配置的环组称为辅助边缘节点环组。边缘节点环组内最多允许有一个子环发送Edge-Hello报文。

1.1.3 RRPP协议报文

RRPP协议报文的类型及其作用如 表1-1 所示。

表1-1 RRPP报文类型及其作用

报文类型 | 说明
Hello | 由主节点发起，对网络进行环路完整性检测
Link-Down | 由传输节点、边缘节点或者辅助边缘节点发起，在这些节点的自身链路down时通知主节点环路消失
Common-Flush-FDB | 由主节点发起，FDB是Forwarding Database的缩写，在RRPP环迁移到断裂状态时通知传输节点更新各自MAC表项和ARP/ND表项
Complete-Flush-FDB | 由主节点发起，在RRPP环迁移到健康状态时通知传输节点更新各自MAC表项和ARP/ND表项，同时通知传输节点解除临时阻塞端口的阻塞状态
Edge-Hello | 由边缘节点发起，对边缘节点与辅助边缘节点之间的主环链路进行检测
Major-Fault | 由辅助边缘节点发起，在边缘节点和辅助边缘节点之间主环链路不连通时通知边缘节点主环链路故障

子环的协议报文在主环中被当作数据报文传送，而主环的协议报文则只能在主环中传送。

1.1.4 RRPP定时器

RRPP在检测以太网环的链路状况时，主节点根据Hello定时器从主端口发送Hello报文，根据Fail定时器判断副端口是否收到Hello报文。

l Hello定时器：规定了主节点从主端口发送Hello报文的周期。

l Fail定时器：规定了主节点从主端口发出Hello报文到副端口收到该报文的最大时延。在该定时器超时前，若主节点在副端口上收到了自己从主端口发出的Hello报文，主节点认为环网处于健康状态；否则，主节点认为环网处于断裂状态。

在同一RRPP域中，传输节点会通过收到的Hello报文来学习主节点上Hello定时器和Fail定时器的值，以保证环网上各节点定时器的值是一致的。

1.1.5 RRPP运行机制

1. 轮询机制

轮询机制是RRPP环的主节点主动检测环网健康状态的机制。

主节点周期性地从其主端口发送Hello报文，依次经过各传输节点在环上传播。如果环路是健康的，主节点的副端口将在定时器超时前收到Hello报文，主节点将保持副端口的阻塞状态。如果环路是断裂的，主节点的副端口在定时器超时前无法收到Hello报文，主节点将解除数据VLAN在副端口的阻塞状态，同时发送Common-Flush-FDB报文通知所有传输节点，使其更新各自的MAC表项和ARP/ND表项。

2. 链路down告警机制

当传输节点、边缘节点或者辅助边缘节点发现自己任何一个属于RRPP域的端口down时，都会立刻发送Link-Down报文给主节点。主节点收到Link-Down报文后立刻解除数据VLAN在其副端口的阻塞状态，并发送Common-Flush-FDB报文通知所有传输节点、边缘节点和辅助边缘节点，使其更新各自的MAC表项和ARP/ND表项。各节点更新表项后，数据流则切换到正常的链路上。

3. 环路恢复

传输节点、边缘节点或者辅助边缘节点上属于RRPP域的端口重新up后，主节点可能会隔一段时间才能发现环路恢复。这段时间对于数据VLAN来说，网络有可能形成一个临时的环路，从而产生广播风暴。

为了防止产生临时环路，非主节点在发现自己接入环网的端口重新up后，立即将其临时阻塞（只允许控制VLAN的报文通过），在确信不会引起环路后，才解除该端口的阻塞状态。

4. 主环链路down，多归属子环广播风暴抑制机制

如 图1-5 所示，假设Ring 1为主环，Ring 2和Ring 3为子环。当边缘节点和辅助边缘节点之间的两条主环链路均处于down状态时，子环Ring 2和Ring 3的主节点会放开各自的副端口，导致Device B、Device C、Device E和Device F之间形成环路，从而产生广播风暴。

为了防止该环路的产生，在此种情况下边缘节点会临时阻塞边缘端口，在确信不会引起环路后，才解除该边缘端口的阻塞状态。

5. 负载分担机制

在同一个环网中，可能同时存在多个VLAN的数据流量，RRPP可以实现流量的负载分担，即不同VLAN的流量沿不同的路径进行转发。

通过在同一个环网上配置多个RRPP域，不同RRPP域发送不同VLAN（称为保护VLAN）的流量，实现不同VLAN的数据流量在该环网中的拓扑不同，从而达到负载分担的目的。

如 图1-6 所示，Domain 1和Domain 2都配置Ring 1为主环，两个RRPP域所保护的VLAN不同。Device A为Domain 1中Ring 1的主节点；Device B为Domain 2中Ring 1的主节点。通过配置，可以实现不同VLAN分别阻塞不同的链路，从而实现单环的负载分担。

6. 环组机制

在边缘节点配置的RRPP环组内，只有域ID和环ID最小的激活子环才发送Edge-Hello报文。在辅助边缘节点环组内，任意激活子环收到Edge-Hello报文会通知给其它激活子环。这样在边缘节点/辅助边缘节点上分别对应配置RRPP环组后，只有一个子环发送/接收Edge-Hello报文，减少了对设备CPU的冲击。

如 图1-5 所示，Device B和Device C分别为Ring 2和Ring 3的边缘节点和辅助边缘节点。Device B和Device C都需要频繁收发Edge-Hello报文（若配置更多子环或多个域负载分担的情况，将会收发大量的Edge-Hello报文）。为减少Edge-Hello报文的收发数量，将边缘节点Device B上的Ring 2和Ring 3配置到一个环组，而将辅助边缘节点Device C上的Ring 2和Ring 3也配置到一个环组。这样在各环都激活的情况下，就只有Device B上的Ring 2发送Edge-Hello报文了。

1.1.6 RRPP典型组网

RRPP的正常运行依赖于用户正确的配置。下面介绍几种典型的组网。

1. 单环

如 图1-2 所示，网络拓扑中只有一个环，此时只需定义一个RRPP域。

图1-2 单环示意图

2. 相切环

如 图1-3 所示，网络拓扑中有两个或两个以上的环，各环之间只有一个公共节点，此时需针对每个环单独定义一个RRPP域。

图1-3 相切环示意图

3. 相交环

如 图1-4 所示，网络拓扑中有两个或两个以上的环，各环之间有两个公共节点，此时只需定义一个RRPP域，选择其中一个环为主环，其它环为子环。

图1-4 相交环示意图

4. 双归属环

如 图1-5 所示，网络拓扑中有两个或两个以上的环，各环之间有两个公共节点，且这两个公共节点都相同，此时可以只定义一个RRPP域，选择其中一个环为主环，其它环为子环。

图1-5 双归属环示意图

5. 单环负载分担组网

在单环网络拓扑中，可以通过配置多域实现链路的负载分担。

如 图1-6 所示，Domain 1和Domain 2都配置Ring 1为主环，两个域所保护的VLAN不同。Device A为Domain 1中Ring 1的主节点；Device B为Domain 2中Ring 1的主节点。通过配置，可以实现不同VLAN分别阻塞不同的链路，从而实现单环的负载分担。

图1-6 单环负载分担组网示意图

6. 相交环负载分担组网

在相交环网络拓扑中，也可以通过配置多域实现链路的负载分担。

如 图1-7 所示，Domain 1和Domain 2都配置Ring 1和Ring 2分别为其主环和子环，两个域所保护的VLAN不同。Device A为Domain 1中Ring 1的主节点；Device D为Domain 2中Ring 1的主节点；Device E分别为Domain 1和Domain 2中子环Ring 2的主节点，但阻塞的端口不同。通过配置，可以实现不同VLAN的流量分别在子环和主环通过不同的链路，从而实现相交环的负载分担。

图1-7 相交环负载分担组网示意图

1.1.7 协议规范

与RRPP相关的协议规范有：

l RFC 3619：Extreme Networks' Ethernet Automatic Protection Switching (EAPS) Version 1


1.2 RRPP配置任务简介

用户可以根据业务规划情况先划分出RRPP域，再确定各RRPP域的控制VLAN和数据VLAN，然后根据流量路径确定每个RRPP域内的环以及环上的节点角色。

表1-2 RRPP配置任务简介

配置任务 |  | 说明 | 详细配置
创建RRPP域 |  | 必选 请在RRPP域内的所有节点上配置 | 1.3
配置控制VLAN |  | 必选 请在RRPP域内的所有节点上配置 | 1.4
配置保护VLAN |  | 必选 请在RRPP域内的所有节点上配置 | 1.5
配置RRPP环 | 配置RRPP端口 | 必选 请在RRPP域内的所有节点上配置 | 1.6.1
 | 配置RRPP节点 | 必选 请在RRPP域内的所有节点上配置 | 1.6.2
激活RRPP域 |  | 必选 请在RRPP域内的所有节点上配置 | 1.7
配置RRPP定时器 |  | 可选 请在RRPP域内的主节点上配置 | 1.8
配置RRPP环组 |  | 可选 请在RRPP域内的边缘节点和辅助边缘节点上配置 | 1.9

l 由于RRPP没有自动选举机制，只有当环网中各节点的配置都正确时，才能真正实现环网的检测和保护，因此请保证配置的准确性。

l 配置RRPP之前，需先搭建好以太网环形拓扑的组网环境。


1.3 创建RRPP域

创建RRPP域时需要指定域ID，域ID用来唯一标识一个RRPP域，在同一RRPP域内的所有节点上应配置相同的域ID。

请在欲指定为RRPP节点的设备上进行如下配置。

表1-3 创建RRPP域

操作 | 命令 | 说明
进入系统视图 | system-view | -
创建RRPP域，并进入RRPP域视图 | rrpp domain domain-id | 必选


1.4 配置控制VLAN

配置RRPP环之前必须先配置控制VLAN，在同一RRPP域内的所有节点上应配置相同的控制VLAN。

请在RRPP域内的所有节点上进行如下配置。

表1-4 配置控制VLAN

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入RRPP域视图 | rrpp domain domain-id | -
配置RRPP域的控制VLAN | control-vlan vlan-id | 必选

l 只能将尚未创建的VLAN配置为控制VLAN，否则系统将提示出错。

l 控制VLAN内不能运行QinQ（802.1Q in 802.1Q）和VLAN映射功能，否则RRPP协议报文不能进行正常转发。

l 不要将接入RRPP环的端口的缺省VLAN配置为控制VLAN或子控制VLAN，以免影响协议报文正常收发。

l 如果要在一台未配置RRPP功能的设备上透传RRPP协议报文，应保证该设备上只有接入RRPP环的那两个端口允许该RRPP环所对应控制VLAN的报文通过，而其它端口都不允许其通过；否则，其它VLAN的报文可能通过透传进入控制VLAN，从而对RRPP环产生冲击。


1.5 配置保护VLAN

配置RRPP环之前必须先配置保护VLAN，RRPP端口允许通过的VLAN都应该被RRPP域保护，在同一RRPP域内的所有节点上应配置相同的保护VLAN。

由于保护VLAN的配置是通过引用MSTI（Multiple Spanning Tree Instance，多生成树实例）来实现的，因此在配置保护VLAN之前，应先配置好MSTI与所要保护的VLAN之间的映射关系（在PVST模式下，系统会自动将VLAN与MSTI进行映射）。有关MSTI和PVST的详细介绍，请参见“二层技术-以太网交换配置指导”中的“生成树”。

请在RRPP域内的所有节点上进行如下配置。

表1-5 配置保护VLAN

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入MST域视图 | stp region-configuration | 在PVST模式下无需执行本操作
配置VLAN与MSTI的映射关系 | instance instance-id vlan vlan-list | 二者可选其一 缺省情况下，所有VLAN都映射到CIST（即MSTI 0）上 在PVST模式下无需执行本操作
 | vlan-mapping modulo modulo
激活MST域的配置 | active region-configuration | 必选 在PVST模式下无需执行本操作
显示当前生效的MST域配置信息 | display stp region-configuration [ | { begin | exclude | include } regular-expression ] | 可选 display 命令可以在任意视图执行 通过本操作可以查看MSTI所映射的VLAN
退回系统视图 | quit | 在PVST模式下无需执行本操作
进入RRPP域视图 | rrpp domain domain-id | -
配置RRPP域的保护VLAN | protected-vlan reference-instance instance-id-list | 必选 缺省情况下，RRPP域不保护任何VLAN

l 在配置负载分担时，不同RRPP域的保护VLAN必须不同。

l 有关 stp region-configuration、instance、vlan-mapping modulo、active region-configuration 和 display stp region-configuration 命令的详细介绍，请参见“二层技术-以太网交换命令参考”中的“生成树”。


1.6 配置RRPP环

配置RRPP环时，首先要对各节点上欲接入RRPP环的端口（简称RRPP端口）进行必要的配置，然后再配置RRPP环上的各节点。

l RRPP端口的端口类型只能是二层以太网端口或二层聚合接口，但当上述端口是二层聚合组、业务环回组或Smart Link组的成员端口时除外。

l 当把二层聚合接口配置为RRPP端口后，仍可添加或删除对应聚合组中的成员端口。

1.6.1 配置RRPP端口

请在各节点欲接入RRPP环的端口上进行如下配置。

表1-6 配置RRPP端口

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入二层以太网端口视图或二层聚合接口视图 | interface interface-type interface-number | -
配置端口的链路类型为Trunk类型 | port link-type trunk | 必选 缺省情况下，端口的链路类型为Access类型
配置Trunk端口允许保护VLAN的报文通过 | port trunk permit vlan { vlan-id-list | all } | 必选 缺省情况下，Trunk端口只允许VLAN 1的报文通过
关闭生成树协议 | undo stp enable | 必选 缺省情况下，端口上的生成树协议处于开启状态
配置端口信认报文的802.1p优先级 | qos trust dot1p | 必选 缺省情况下，信任模式为信任接收端口的优先级。

l 由于RRPP端口将自动允许控制VLAN的报文通过，因此无需配置RRPP端口允许控制VLAN的报文通过。

l 有关 port link-type trunk 和 port trunk permit vlan 命令的详细介绍，请参见“二层技术-以太网交换命令参考”中的“VLAN”。

l 有关 undo stp enable 命令的详细介绍，请参见“二层技术-以太网交换命令参考”中的“生成树”。

l 必须配置RRPP端口信认报文的802.1p优先级，以确保端口对RRPP协议报文的处理优先于数据报文。有关 qos trust dot1p命令的详细介绍，请参见“ACL和QoS命令参考”中的“优先级映射配置命令”。

l 不建议在RRPP端口上启用OAM远端环回功能，否则可能引起短时间的广播风暴。

l 接入RRPP环的端口不能配置为镜像组的目的端口。

l 建议在RRPP端口上不要配置端口的物理连接状态up/down抑制时间，以提高RRPP的拓扑变化收敛速度，具体请参见“二层技术-以太网交换命令参考/以太网端口”中的 undo link-delay 命令。

1.6.2 配置RRPP节点

如果一台设备处于同一RRPP域的多个RRPP环上，则只能有一个主环，且该设备在其它子环上的节点角色只能是边缘节点或辅助边缘节点。

1. 配置主节点

请在欲配置为主节点的设备上进行如下配置。

表1-7 配置主节点

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入RRPP域视图 | rrpp domain domain-id | -
指定当前设备为主节点，并指定主端口和副端口 | ring ring-id node-mode master [ primary-port interface-type interface-number ] [ secondary-port interface-type interface-number ] level level-value | 必选

2. 配置传输节点

请在欲配置为传输节点的设备上进行如下配置。

表1-8 配置传输节点

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入RRPP域视图 | rrpp domain domain-id | -
指定当前设备为传输节点，并指定主端口和副端口 | ring ring-id node-mode transit [ primary-port interface-type interface-number ] [ secondary-port interface-type interface-number ] level level-value | 必选

3. 配置边缘节点

在配置边缘节点时，必须先配置主环再配置子环。

请在欲配置为边缘节点的设备上进行如下配置。

表1-9 配置边缘节点

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入RRPP域视图 | rrpp domain domain-id | -
指定当前设备为主环的传输节点，并指定主端口和副端口 | ring ring-id node-mode transit [ primary-port interface-type interface-number ] [ secondary-port interface-type interface-number ] level level-value | 必选
指定当前设备为子环的边缘节点，并指定边缘端口 | ring ring-id node-mode edge [ edge-port interface-type interface-number ] | 必选

4. 配置辅助边缘节点

在配置辅助边缘节点时，必须先配置主环再配置子环。

请在欲配置为辅助边缘节点的设备上进行如下配置。

表1-10 配置辅助边缘节点

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入RRPP域视图 | rrpp domain domain-id | -
指定当前设备为主环的传输节点，并指定主端口和副端口 | ring ring-id node-mode transit [ primary-port interface-type interface-number ] [ secondary-port interface-type interface-number ] level level-value | 必选
指定当前设备为子环的辅助边缘节点，并指定边缘端口 | ring ring-id node-mode assistant-edge [ edge-port interface-type interface-number ] | 必选


1.7 激活RRPP域

只有当RRPP协议和RRPP环都使能之后，当前设备的RRPP域才能被激活。

请在RRPP域内的所有节点上进行如下配置。

表1-11 激活RRPP域

操作 | 命令 | 说明
进入系统视图 | system-view | -
使能RRPP协议 | rrpp enable | 必选 缺省情况下，RRPP协议处于关闭状态
进入RRPP域视图 | rrpp domain domain-id | -
使能RRPP环 | ring ring-id enable | 必选 缺省情况下，RRPP环处于关闭状态

为避免子环的Hello报文在主环上形成环路，在子环的主节点上使能子环之前，请先在主环的主节点上使能主环。在边缘节点和辅助边缘节点上，需对主环和子环分别进行操作：

l 使能子环前必须先使能主环；

l 关闭主环前必须先关闭其所在RRPP域内的所有子环。


1.8 配置RRPP定时器

请在RRPP域内的主节点上进行如下配置。

表1-12 配置RRPP定时器

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入RRPP域视图 | rrpp domain domain-id | -
配置Hello和Fail定时器 | timer hello-timer hello-value fail-timer fail-value | 必选 缺省情况下，Hello定时器的值为1秒，Fail定时器的值为3秒

l 配置时，应确保Fail定时器的值不小于Hello定时器取值的3倍。

l 在双归属环组网中，为避免主环故障时出现临时环路，应确保子环主节点与主环主节点上的Fail定时器取值之差大于子环主节点上Hello定时器取值的2倍。


1.9 配置RRPP环组

通过把具有相同边缘节点/辅助边缘节点配置的一组子环加入环组中，可以减少Edge-Hello报文的收发数量。环组应分别配置在边缘节点和辅助边缘节点上，且只能配置在这两种节点上。

请在RRPP域内的边缘节点和辅助边缘节点上进行如下配置。

表1-13 配置RRPP环组

操作 | 命令 | 说明
进入系统视图 | system-view | -
创建RRPP环组，并进入RRPP环组视图 | rrpp ring-group ring-group-id | 必选
将子环加入RRPP环组 | domain domain-id ring ring-id-list | 必选

l 一个子环只能属于一个环组，且配置在边缘节点和辅助边缘节点上的环组中所包含的子环必须相同，否则环组不能正常工作。

l 加入环组的子环的边缘节点应配置在同一台设备上；同样地，辅助边缘节点也应配置在同一台设备上，而且边缘节点/辅助边缘节点所对应的主环链路应相同。

l 设备在一个环组内所有子环上应具有相同的类型：边缘节点或辅助边缘节点。

l 边缘节点环组及其对应的辅助边缘节点环组的配置和激活状态必须相同。

l 同一环组中的子环所对应主环的链路必须相同；若主环链路本身的配置就不同，或由于修改配置而导致不同，环组都将不能正常运行。


1.10 RRPP显示和维护

在完成上述配置后，在任意视图下执行 display 命令可以显示配置后RRPP的运行情况，通过查看显示信息验证配置的效果。

在用户视图下执行 reset 命令可以清除RRPP报文统计信息。

表1-14 RRPP显示和维护

操作 | 命令
显示RRPP的摘要信息 | display rrpp brief [ | { begin | exclude | include } regular-expression ]
显示RRPP环组的配置信息 | display rrpp ring-group [ ring-group-id ] [ | { begin | exclude | include } regular-expression ]
显示RRPP的详细信息 | display rrpp verbose domain domain-id [ ring ring-id ] [ | { begin | exclude | include } regular-expression ]
显示RRPP报文的统计信息 | display rrpp statistics domain domain-id [ ring ring-id ] [ | { begin | exclude | include } regular-expression ]
清除RRPP报文的统计信息 | reset rrpp statistics domain domain-id [ ring ring-id ] [ | { begin | exclude | include } regular-expression ]


1.11 RRPP典型配置举例

1.11.1 单环配置举例

1. 组网需求

l Device A～Device D构成RRPP域1，该域的控制VLAN为VLAN 4092，保护VLAN为VLAN 1～30。

l Device A、Device B、Device C和Device D构成主环Ring 1。Device A为主环的主节点，Ethernet1/0/1和Ethernet1/0/2分别为主、副端口；Device B、Device C和Device D为主环的传输节点，其各自的Ethernet1/0/1和Ethernet1/0/2分别为主、副端口。

2. 组网图

图1-8 单环配置组网图

3. 配置步骤

(1) 配置Device A

# 创建VLAN 1～30，将这些VLAN都映射到MSTI 1上，并激活MST域的配置。

<DeviceA> system-view

[DeviceA] vlan 1 to 30

[DeviceA] stp region-configuration

[DeviceA-mst-region] instance 1 vlan 1 to 30

[DeviceA-mst-region] active region-configuration

[DeviceA-mst-region] quit

# 分别在端口Ethernet1/0/1和Ethernet1/0/2上取消物理连接状态up/down抑制时间配置，关闭生成树协议，配置端口信任报文的802.1p优先级，并将端口配置为Trunk端口且允许VLAN 1～30通过。

[DeviceA] interface ethernet 1/0/1

[DeviceA-Ethernet1/0/1] undo link-delay

[DeviceA-Ethernet1/0/1] undo stp enable

[DeviceA-Ethernet1/0/1] qos trust dot1p

[DeviceA-Ethernet1/0/1] port link-type trunk

[DeviceA-Ethernet1/0/1] port trunk permit vlan 1 to 30

[DeviceA-Ethernet1/0/1] quit

[DeviceA] interface ethernet 1/0/2

[DeviceA-Ethernet1/0/2] undo link-delay

[DeviceA-Ethernet1/0/2] undo stp enable

[DeviceA-Ethernet1/0/2] qos trust dot1p

[DeviceA-Ethernet1/0/2] port link-type trunk

[DeviceA-Ethernet1/0/2] port trunk permit vlan 1 to 30

[DeviceA-Ethernet1/0/2] quit

# 创建RRPP域1，将VLAN 4092配置为该域的控制VLAN，并将MSTI 1所映射的VLAN配置为该域的保护VLAN。

[DeviceA] rrpp domain 1

[DeviceA-rrpp-domain1] control-vlan 4092

[DeviceA-rrpp-domain1] protected-vlan reference-instance 1

# 配置本设备为主环Ring 1的主节点，主端口为Ethernet1/0/1，副端口为Ethernet1/0/2，并使能该环。

[DeviceA-rrpp-domain1] ring 1 node-mode master primary-port ethernet 1/0/1 secondary-port ethernet 1/0/2 level 0

[DeviceA-rrpp-domain1] ring 1 enable

[DeviceA-rrpp-domain1] quit

# 使能RRPP协议。

[DeviceA] rrpp enable

(2) 配置Device B

# 创建VLAN 1～30，将这些VLAN都映射到MSTI 1上，并激活MST域的配置。

<DeviceB> system-view

[DeviceB] vlan 1 to 30

[DeviceB] stp region-configuration

[DeviceB-mst-region] instance 1 vlan 1 to 30

[DeviceB-mst-region] active region-configuration

[DeviceB-mst-region] quit

# 分别在端口Ethernet1/0/1和Ethernet1/0/2上取消物理连接状态up/down抑制时间配置，关闭生成树协议，配置端口信任报文的802.1p优先级，并将端口配置为Trunk端口且允许VLAN 1～30通过。

[DeviceB] interface ethernet 1/0/1

[DeviceB-Ethernet1/0/1] undo link-delay

[DeviceB-Ethernet1/0/1] undo stp enable

[DeviceB-Ethernet1/0/1] qos trust dot1p

[DeviceB-Ethernet1/0/1] port link-type trunk

[DeviceB-Ethernet1/0/1] port trunk permit vlan 1 to 30

[DeviceB-Ethernet1/0/1] quit

[DeviceB] interface ethernet 1/0/2

[DeviceB-Ethernet1/0/2] undo link-delay

[DeviceB-Ethernet1/0/2] undo stp enable

[DeviceB-Ethernet1/0/2] qos trust dot1p

[DeviceB-Ethernet1/0/2] port link-type trunk

[DeviceB-Ethernet1/0/2] port trunk permit vlan 1 to 30

[DeviceB-Ethernet1/0/2] quit

# 创建RRPP域1，将VLAN 4092配置为该域的控制VLAN，并将MSTI 1所映射的VLAN配置为该域的保护VLAN。

[DeviceB] rrpp domain 1

[DeviceB-rrpp-domain1] control-vlan 4092

[DeviceB-rrpp-domain1] protected-vlan reference-instance 1

# 配置本设备为主环Ring 1的传输节点，主端口为Ethernet1/0/1，副端口为Ethernet1/0/2，并使能该环。

[DeviceB-rrpp-domain1] ring 1 node-mode transit primary-port ethernet 1/0/1 secondary-port ethernet 1/0/2 level 0

[DeviceB-rrpp-domain1] ring 1 enable

[DeviceB-rrpp-domain1] quit

# 使能RRPP协议。

[DeviceB] rrpp enable

(3) 配置Device C

Device C的配置与Device B相似，配置过程略。

(4) 配置Device D

Device D的配置与Device B相似，配置过程略。

(5) 检验配置效果

配置完成后，用户可以使用 display 命令查看各设备上RRPP的配置和运行情况。

1.11.2 相交环配置举例

1. 组网需求

l Device A～Device E构成RRPP域1，该域的控制VLAN为VLAN 4092，保护VLAN为VLAN 1～30。

l Device A、Device B、Device C和Device D构成主环Ring 1；Device B、Device C和Device E构成子环Ring 2。

l Device A为主环的主节点，Ethernet1/0/1和Ethernet1/0/2分别为主、副端口；Device E为子环的主节点，Ethernet1/0/1和Ethernet1/0/2分别为主、副端口；Device B为主环的传输节点和子环的边缘节点，Ethernet1/0/3为边缘端口；Device C为主环的传输节点和子环的辅助边缘节点，Ethernet1/0/3为边缘端口；Device D为主环的传输节点，Ethernet1/0/1和Ethernet1/0/2分别为主、副端口。

2. 组网图

图1-9 相交环配置组网图

3. 配置步骤

(1) 配置Device A

# 创建VLAN 1～30，将这些VLAN都映射到MSTI 1上，并激活MST域的配置。

<DeviceA> system-view

[DeviceA] vlan 1 to 30

[DeviceA] stp region-configuration

[DeviceA-mst-region] instance 1 vlan 1 to 30

[DeviceA-mst-region] active region-configuration

[DeviceA-mst-region] quit

# 分别在端口Ethernet1/0/1和Ethernet1/0/2上取消物理连接状态up/down抑制时间配置，关闭生成树协议，配置端口信任报文的802.1p优先级，并将端口配置为Trunk端口且允许VLAN 1～30通过。

[DeviceA] interface ethernet 1/0/1

[DeviceA-Ethernet1/0/1] undo link-delay

[DeviceA-Ethernet1/0/1] undo stp enable

[DeviceA-Ethernet1/0/1] qos trust dot1p

[DeviceA-Ethernet1/0/1] port link-type trunk

[DeviceA-Ethernet1/0/1] port trunk permit vlan 1 to 30

[DeviceA-Ethernet1/0/1] quit

[DeviceA] interface ethernet 1/0/2

[DeviceA-Ethernet1/0/2] undo link-delay

[DeviceA-Ethernet1/0/2] undo stp enable

[DeviceA-Ethernet1/0/2] qos trust dot1p

[DeviceA-Ethernet1/0/2] port link-type trunk

[DeviceA-Ethernet1/0/2] port trunk permit vlan 1 to 30

[DeviceA-Ethernet1/0/2] quit

# 创建RRPP域1，将VLAN 4092配置为该域的控制VLAN，并将MSTI 1所映射的VLAN配置为该域的保护VLAN。

[DeviceA] rrpp domain 1

[DeviceA-rrpp-domain1] control-vlan 4092

[DeviceA-rrpp-domain1] protected-vlan reference-instance 1

# 配置本设备为主环Ring 1的主节点，主端口为Ethernet1/0/1，副端口为Ethernet1/0/2，并使能该环。

[DeviceA-rrpp-domain1] ring 1 node-mode master primary-port ethernet 1/0/1 secondary-port ethernet 1/0/2 level 0

[DeviceA-rrpp-domain1] ring 1 enable

[DeviceA-rrpp-domain1] quit

# 使能RRPP协议。

[DeviceA] rrpp enable

(2) 配置Device B

# 创建VLAN 1～30，将这些VLAN都映射到MSTI 1上，并激活MST域的配置。

<DeviceB> system-view

[DeviceB] vlan 1 to 30

[DeviceB] stp region-configuration

[DeviceB-mst-region] instance 1 vlan 1 to 30

[DeviceB-mst-region] active region-configuration

[DeviceB-mst-region] quit

# 分别在端口Ethernet1/0/1、Ethernet1/0/2和Ethernet1/0/3上取消物理连接状态up/down抑制时间配置，关闭生成树协议，配置端口信任报文的802.1p优先级，并将端口配置为Trunk端口且允许VLAN 1～30通过。

[DeviceB] interface ethernet 1/0/1

[DeviceB-Ethernet1/0/1] undo link-delay

[DeviceB-Ethernet1/0/1] undo stp enable

[DeviceB-Ethernet1/0/1] qos trust dot1p

[DeviceB-Ethernet1/0/1] port link-type trunk

[DeviceB-Ethernet1/0/1] port trunk permit vlan 1 to 30

[DeviceB-Ethernet1/0/1] quit

[DeviceB] interface ethernet 1/0/2

[DeviceB-Ethernet1/0/2] undo link-delay

[DeviceB-Ethernet1/0/2] undo stp enable

[DeviceB-Ethernet1/0/2] qos trust dot1p

[DeviceB-Ethernet1/0/2] port link-type trunk

[DeviceB-Ethernet1/0/2] port trunk permit vlan 1 to 30

[DeviceB-Ethernet1/0/2] quit

[DeviceB] interface ethernet 1/0/3

[DeviceB-Ethernet1/0/3] undo link-delay

[DeviceB-Ethernet1/0/3] undo stp enable

[DeviceB-Ethernet1/0/3] qos trust dot1p

[DeviceB-Ethernet1/0/3] port link-type trunk

[DeviceB-Ethernet1/0/3] port trunk permit vlan 1 to 30

[DeviceB-Ethernet1/0/3] quit

# 创建RRPP域1，将VLAN 4092配置为该域的控制VLAN，并将MSTI 1所映射的VLAN配置为该域的保护VLAN。

[DeviceB] rrpp domain 1

[DeviceB-rrpp-domain1] control-vlan 4092

[DeviceB-rrpp-domain1] protected-vlan reference-instance 1

# 配置本设备为主环Ring 1的传输节点，主端口为Ethernet1/0/1，副端口为Ethernet1/0/2，并使能该环。

[DeviceB-rrpp-domain1] ring 1 node-mode transit primary-port ethernet 1/0/1 secondary-port ethernet 1/0/2 level 0

[DeviceB-rrpp-domain1] ring 1 enable

# 配置本设备为子环Ring 2的边缘节点，边缘端口为Ethernet1/0/3，并使能该环。

[DeviceB-rrpp-domain1] ring 2 node-mode edge edge-port ethernet 1/0/3

[DeviceB-rrpp-domain1] ring 2 enable

[DeviceB-rrpp-domain1] quit

# 使能RRPP协议。

[DeviceB] rrpp enable

(3) 配置Device C

# 创建VLAN 1～30，将这些VLAN都映射到MSTI 1上，并激活MST域的配置。

<DeviceC> system-view

[DeviceC] vlan 1 to 30

[DeviceC] stp region-configuration

[DeviceC-mst-region] instance 1 vlan 1 to 30

[DeviceC-mst-region] active region-configuration

[DeviceC-mst-region] quit

# 分别在端口Ethernet1/0/1、Ethernet1/0/2和Ethernet1/0/3上取消物理连接状态up/down抑制时间配置，关闭生成树协议，配置端口信任报文的802.1p优先级，并将端口配置为Trunk端口且允许VLAN 1～30通过。

[DeviceC] interface ethernet 1/0/1

[DeviceC-Ethernet1/0/1] undo link-delay

[DeviceC-Ethernet1/0/1] undo stp enable

[DeviceC-Ethernet1/0/1] qos trust dot1p

[DeviceC-Ethernet1/0/1] port link-type trunk

[DeviceC-Ethernet1/0/1] port trunk permit vlan 1 to 30

[DeviceC-Ethernet1/0/1] quit

[DeviceC] interface ethernet 1/0/2

[DeviceC-Ethernet1/0/2] undo link-delay

[DeviceC-Ethernet1/0/2] undo stp enable

[DeviceC-Ethernet1/0/2] qos trust dot1p

[DeviceC-Ethernet1/0/2] port link-type trunk

[DeviceC-Ethernet1/0/2] port trunk permit vlan 1 to 30

[DeviceC-Ethernet1/0/2] quit

[DeviceC] interface ethernet 1/0/3

[DeviceC-Ethernet1/0/3] undo link-delay

[DeviceC-Ethernet1/0/3] undo stp enable

[DeviceC-Ethernet1/0/3] qos trust dot1p

[DeviceC-Ethernet1/0/3] port link-type trunk

[DeviceC-Ethernet1/0/3] port trunk permit vlan 1 to 30

[DeviceC-Ethernet1/0/3] quit

# 创建RRPP域1，将VLAN 4092配置为该域的控制VLAN，并将MSTI 1所映射的VLAN配置为该域的保护VLAN。

[DeviceC] rrpp domain 1

[DeviceC-rrpp-domain1] control-vlan 4092

[DeviceC-rrpp-domain1] protected-vlan reference-instance 1

# 配置本设备为主环Ring 1的传输节点，主端口为Ethernet1/0/1，副端口为Ethernet1/0/2，并使能该环。

[DeviceC-rrpp-domain1] ring 1 node-mode transit primary-port ethernet 1/0/1 secondary-port ethernet 1/0/2 level 0

[DeviceC-rrpp-domain1] ring 1 enable

# 配置本设备为子环Ring 2的辅助边缘节点，边缘端口为Ethernet1/0/3，并使能该环。

[DeviceC-rrpp-domain1] ring 2 node-mode assistant-edge edge-port ethernet 1/0/3

[DeviceC-rrpp-domain1] ring 2 enable

[DeviceC-rrpp-domain1] quit

# 使能RRPP协议。

[DeviceC] rrpp enable

(4) 配置Device D

# 创建VLAN 1～30，将这些VLAN都映射到MSTI 1上，并激活MST域的配置。

<DeviceD> system-view

[DeviceD] vlan 1 to 30

[DeviceD] stp region-configuration

[DeviceD-mst-region] instance 1 vlan 1 to 30

[DeviceD-mst-region] active region-configuration

[DeviceD-mst-region] quit

# 分别在端口Ethernet1/0/1和Ethernet1/0/2上取消物理连接状态up/down抑制时间配置，关闭生成树协议，配置端口信任报文的802.1p优先级，并将端口配置为Trunk端口且允许VLAN 1～30通过。

[DeviceD] interface ethernet 1/0/1

[DeviceD-Ethernet1/0/1] undo link-delay

[DeviceD-Ethernet1/0/1] undo stp enable

[DeviceD-Ethernet1/0/1] qos trust dot1p

[DeviceD-Ethernet1/0/1] port link-type trunk

[DeviceD-Ethernet1/0/1] port trunk permit vlan 1 to 30

[DeviceD-Ethernet1/0/1] quit

[DeviceD] interface ethernet 1/0/2

[DeviceD-Ethernet1/0/2] undo link-delay

[DeviceD-Ethernet1/0/2] undo stp enable

[DeviceD-Ethernet1/0/2] qos trust dot1p

[DeviceD-Ethernet1/0/2] port link-type trunk

[DeviceD-Ethernet1/0/2] port trunk permit vlan 1 to 30

[DeviceD-Ethernet1/0/2] quit

# 创建RRPP域1，将VLAN 4092配置为该域的控制VLAN，并将MSTI 1所映射的VLAN配置为该域的保护VLAN。

[DeviceD] rrpp domain 1

[DeviceD-rrpp-domain1] control-vlan 4092

[DeviceD-rrpp-domain1] protected-vlan reference-instance 1

# 配置本设备为主环Ring 1的传输节点，主端口为Ethernet1/0/1，副端口为Ethernet1/0/2，并使能该环。

[DeviceD-rrpp-domain1] ring 1 node-mode transit primary-port ethernet 1/0/1 secondary-port ethernet 1/0/2 level 0

[DeviceD-rrpp-domain1] ring 1 enable

[DeviceD-rrpp-domain1] quit

# 使能RRPP协议。

[DeviceD] rrpp enable

(5) 配置Device E

# 创建VLAN 1～30，将这些VLAN都映射到MSTI 1上，并激活MST域的配置。

<DeviceE> system-view

[DeviceE] vlan 1 to 30

[DeviceE] stp region-configuration

[DeviceE-mst-region] instance 1 vlan 1 to 30

[DeviceE-mst-region] active region-configuration

[DeviceE-mst-region] quit

# 分别在端口Ethernet1/0/1和Ethernet1/0/2上取消物理连接状态up/down抑制时间配置，关闭生成树协议，配置端口信任报文的802.1p优先级，并将端口配置为Trunk端口且允许VLAN 1～30通过。

[DeviceE] interface ethernet 1/0/1

[DeviceE-Ethernet1/0/1] undo link-delay

[DeviceE-Ethernet1/0/1] undo stp enable

[DeviceE-Ethernet1/0/1] qos trust dot1p

[DeviceE-Ethernet1/0/1] port link-type trunk

[DeviceE-Ethernet1/0/1] port trunk permit vlan 1 to 30

[DeviceE-Ethernet1/0/1] quit

[DeviceE] interface ethernet 1/0/2

[DeviceE-Ethernet1/0/2] undo link-delay

[DeviceE-Ethernet1/0/2] undo stp enable

[DeviceE-Ethernet1/0/2] qos trust dot1p

[DeviceE-Ethernet1/0/2] port link-type trunk

[DeviceE-Ethernet1/0/2] port trunk permit vlan 1 to 30

[DeviceE-Ethernet1/0/2] quit

# 创建RRPP域1，将VLAN 4092配置为该域的控制VLAN，并将MSTI 1所映射的VLAN配置为该域的保护VLAN。

[DeviceE] rrpp domain 1

[DeviceE-rrpp-domain1] control-vlan 4092

[DeviceE-rrpp-domain1] protected-vlan reference-instance 1

# 配置本设备为子环Ring 2的主节点，主端口为Ethernet1/0/1，副端口为Ethernet1/0/2，并使能该环。

[DeviceE-rrpp-domain1] ring 2 node-mode master primary-port ethernet 1/0/1 secondary-port ethernet 1/0/2 level 1

[DeviceE-rrpp-domain1] ring 2 enable

[DeviceE-rrpp-domain1] quit

# 使能RRPP协议。

[DeviceE] rrpp enable

(6) 检验配置效果

配置完成后，用户可以使用 display 命令查看各设备上RRPP的配置和运行情况。

1.11.3 双边双归属环配置举例

1. 组网需求

l Device A～Device H构成RRPP域1，该域的控制VLAN为VLAN 4092，保护VLAN为VLAN 1～30。

l Device A～Device D构成主环Ring 1；Device A、Device B和Device E构成子环Ring 2；Device A、Device B和Device F构成子环Ring 3；Device C、Device D和Device G构成子环Ring 4；Device C、Device D和Device H构成子环Ring 5。

l Device A、Device E、Device F、Device G和Device H分别是Ring 1～Ring 5的主节点，其各自的Ethernet1/0/1和Ethernet1/0/2分别为主、副端口。

l Device A同时也是其所在子环的边缘节点，Ethernet1/0/3和Ethernet1/0/4为边缘端口；Device D是主环的传输节点及其所在子环的边缘节点，Ethernet1/0/3和Ethernet1/0/4为边缘端口；Device B和Device C都是主环的传输节点及其所在子环的辅助边缘节点，其各自的Ethernet1/0/3和Ethernet1/0/4都为边缘端口。

请对主节点的主、副端口进行合理规划，以免由于副端口阻塞数据VLAN而影响其它协议的正常应用。

2. 组网图

图1-10 双边双归属环配置组网图

3. 配置步骤

(1) 配置Device A

# 创建VLAN 1～30，将这些VLAN都映射到MSTI 1上，并激活MST域的配置。

<DeviceA> system-view

[DeviceA] vlan 1 to 30

[DeviceA] stp region-configuration

[DeviceA-mst-region] instance 1 vlan 1 to 30

[DeviceA-mst-region] active region-configuration

[DeviceA-mst-region] quit

# 分别在端口Ethernet1/0/1～Ethernet1/0/4上取消物理连接状态up/down抑制时间配置，关闭生成树协议，配置端口信任报文的802.1p优先级，并将端口配置为Trunk端口且允许VLAN 1～30通过。

[DeviceA] interface ethernet 1/0/1

[DeviceA-Ethernet1/0/1] undo link-delay

[DeviceA-Ethernet1/0/1] undo stp enable

[DeviceA-Ethernet1/0/1] qos trust dot1p

[DeviceA-Ethernet1/0/1] port link-type trunk

[DeviceA-Ethernet1/0/1] port trunk permit vlan 1 to 30

[DeviceA-Ethernet1/0/1] quit

[DeviceA] interface ethernet 1/0/2

[DeviceA-Ethernet1/0/2] undo link-delay

[DeviceA-Ethernet1/0/2] undo stp enable

[DeviceA-Ethernet1/0/2] qos trust dot1p

[DeviceA-Ethernet1/0/2] port link-type trunk

[DeviceA-Ethernet1/0/2] port trunk permit vlan 1 to 30

[DeviceA-Ethernet1/0/2] quit

[DeviceA] interface ethernet 1/0/3

[DeviceA-Ethernet1/0/3] undo link-delay

[DeviceA-Ethernet1/0/3] undo stp enable

[DeviceA-Ethernet1/0/3] qos trust dot1p

[DeviceA-Ethernet1/0/3] port link-type trunk

[DeviceA-Ethernet1/0/3] port trunk permit vlan 1 to 30

[DeviceA-Ethernet1/0/3] quit

[DeviceA] interface ethernet 1/0/4

[DeviceA-Ethernet1/0/4] undo link-delay

[DeviceA-Ethernet1/0/4] undo stp enable

[DeviceA-Ethernet1/0/4] qos trust dot1p

[DeviceA-Ethernet1/0/4] port link-type trunk

[DeviceA-Ethernet1/0/4] port trunk permit vlan 1 to 30

[DeviceA-Ethernet1/0/4] quit

# 创建RRPP域1，将VLAN 4092配置为该域的控制VLAN，并将MSTI 1所映射的VLAN配置为该域的保护VLAN。

[DeviceA] rrpp domain 1

[DeviceA-rrpp-domain1] control-vlan 4092

[DeviceA-rrpp-domain1] protected-vlan reference-instance 1

# 配置本设备为主环Ring 1的主节点，主端口为Ethernet1/0/1，副端口为Ethernet1/0/2，并使能该环。

[DeviceA-rrpp-domain1] ring 1 node-mode master primary-port ethernet 1/0/1 secondary-port ethernet 1/0/2 level 0

[DeviceA-rrpp-domain1] ring 1 enable

# 配置本设备为子环Ring 2的边缘节点，边缘端口为Ethernet1/0/4，并使能该环。

[DeviceA-rrpp-domain1] ring 2 node-mode edge edge-port ethernet 1/0/4

[DeviceA-rrpp-domain1] ring 2 enable

# 配置本设备为子环Ring 3的边缘节点，边缘端口为Ethernet1/0/3，并使能该环。

[DeviceA-rrpp-domain1] ring 3 node-mode edge edge-port ethernet 1/0/3

[DeviceA-rrpp-domain1] ring 3 enable

[DeviceA-rrpp-domain1] quit

# 使能RRPP协议。

[DeviceA] rrpp enable

(2) 配置Device B

# 创建VLAN 1～30，将这些VLAN都映射到MSTI 1上，并激活MST域的配置。

<DeviceB> system-view

[DeviceB] vlan 1 to 30

[DeviceB] stp region-configuration

[DeviceB-mst-region] instance 1 vlan 1 to 30

[DeviceB-mst-region] active region-configuration

[DeviceB-mst-region] quit

# 分别在端口Ethernet1/0/1～Ethernet1/0/4上取消物理连接状态up/down抑制时间配置，关闭生成树协议，配置端口信任报文的802.1p优先级，并将端口配置为Trunk端口且允许VLAN 1～30通过。

[DeviceB] interface ethernet 1/0/1

[DeviceB-Ethernet1/0/1] undo link-delay

[DeviceB-Ethernet1/0/1] undo stp enable

[DeviceB-Ethernet1/0/1] qos trust dot1p

[DeviceB-Ethernet1/0/1] port link-type trunk

[DeviceB-Ethernet1/0/1] port trunk permit vlan 1 to 30

[DeviceB-Ethernet1/0/1] quit

[DeviceB] interface ethernet 1/0/2

[DeviceB-Ethernet1/0/2] undo link-delay

[DeviceB-Ethernet1/0/2] undo stp enable

[DeviceB-Ethernet1/0/2] qos trust dot1p

[DeviceB-Ethernet1/0/2] port link-type trunk

[DeviceB-Ethernet1/0/2] port trunk permit vlan 1 to 30

[DeviceB-Ethernet1/0/2] quit

[DeviceB] interface ethernet 1/0/3

[DeviceB-Ethernet1/0/3] undo link-delay

[DeviceB-Ethernet1/0/3] undo stp enable

[DeviceB-Ethernet1/0/3] qos trust dot1p

[DeviceB-Ethernet1/0/3] port link-type trunk

[DeviceB-Ethernet1/0/3] port trunk permit vlan 1 to 30

[DeviceB-Ethernet1/0/3] quit

[DeviceB] interface ethernet 1/0/4

[DeviceB-Ethernet1/0/4] undo link-delay

[DeviceB-Ethernet1/0/4] undo stp enable

[DeviceB-Ethernet1/0/4] qos trust dot1p

[DeviceB-Ethernet1/0/4] port link-type trunk

[DeviceB-Ethernet1/0/4] port trunk permit vlan 1 to 30

[DeviceB-Ethernet1/0/4] quit

# 创建RRPP域1，将VLAN 4092配置为该域的控制VLAN，并将MSTI 1所映射的VLAN配置为该域的保护VLAN。

[DeviceB] rrpp domain 1

[DeviceB-rrpp-domain1] control-vlan 4092

[DeviceB-rrpp-domain1] protected-vlan reference-instance 1

# 配置本设备为主环Ring 1的传输节点，主端口为Ethernet1/0/1，副端口为Ethernet1/0/2，并使能该环。

[DeviceB-rrpp-domain1] ring 1 node-mode transit primary-port ethernet 1/0/1 secondary-port ethernet 1/0/2 level 0

[DeviceB-rrpp-domain1] ring 1 enable

# 配置本设备为子环Ring 2的辅助边缘节点，边缘端口为Ethernet1/0/4，并使能该环。

[DeviceB-rrpp-domain1] ring 2 node-mode assistant-edge edge-port ethernet 1/0/4

[DeviceB-rrpp-domain1] ring 2 enable

# 配置本设备为子环Ring 3的辅助边缘节点，边缘端口为Ethernet1/0/3，并使能该环。

[DeviceB-rrpp-domain1] ring 3 node-mode assistant-edge edge-port ethernet 1/0/3

[DeviceB-rrpp-domain1] ring 3 enable

[DeviceB-rrpp-domain1] quit

# 使能RRPP协议。

[DeviceB] rrpp enable

(3) 配置Device C

# 创建VLAN 1～30，将这些VLAN都映射到MSTI 1上，并激活MST域的配置。

<DeviceC> system-view

[DeviceC] vlan 1 to 30

[DeviceC] stp region-configuration

[DeviceC-mst-region] instance 1 vlan 1 to 30

[DeviceC-mst-region] active region-configuration

[DeviceC-mst-region] quit

# 分别在端口Ethernet1/0/1～Ethernet1/0/4上取消物理连接状态up/down抑制时间配置，关闭生成树协议，配置端口信任报文的802.1p优先级，并将端口配置为Trunk端口且允许VLAN 1～30通过。

[DeviceC] interface ethernet 1/0/1

[DeviceC-Ethernet1/0/1] undo link-delay

[DeviceC-Ethernet1/0/1] undo stp enable

[DeviceC-Ethernet1/0/1] qos trust dot1p

[DeviceC-Ethernet1/0/1] port link-type trunk

[DeviceC-Ethernet1/0/1] port trunk permit vlan 1 to 30

[DeviceC-Ethernet1/0/1] quit

[DeviceC] interface ethernet 1/0/2

[DeviceC-Ethernet1/0/2] undo link-delay

[DeviceC-Ethernet1/0/2] undo stp enable

[DeviceC-Ethernet1/0/2] qos trust dot1p

[DeviceC-Ethernet1/0/2] port link-type trunk

[DeviceC-Ethernet1/0/2] port trunk permit vlan 1 to 30

[DeviceC-Ethernet1/0/2] quit

[DeviceC] interface ethernet 1/0/3

[DeviceC-Ethernet1/0/3] undo link-delay

[DeviceC-Ethernet1/0/3] undo stp enable

[DeviceC-Ethernet1/0/3] qos trust dot1p

[DeviceC-Ethernet1/0/3] port link-type trunk

[DeviceC-Ethernet1/0/3] port trunk permit vlan 1 to 30

[DeviceC-Ethernet1/0/3] quit

[DeviceC] interface ethernet 1/0/4

[DeviceC-Ethernet1/0/4] undo link-delay

[DeviceC-Ethernet1/0/4] undo stp enable

[DeviceC-Ethernet1/0/4] qos trust dot1p

[DeviceC-Ethernet1/0/4] port link-type trunk

[DeviceC-Ethernet1/0/4] port trunk permit vlan 1 to 30

[DeviceC-Ethernet1/0/4] quit

# 创建RRPP域1，将VLAN 4092配置为该域的控制VLAN，并将MSTI 1所映射的VLAN配置为该域的保护VLAN。

[DeviceC] rrpp domain 1

[DeviceC-rrpp-domain1] control-vlan 4092

[DeviceC-rrpp-domain1] protected-vlan reference-instance 1

# 配置本设备为主环Ring 1的传输节点，主端口为Ethernet1/0/1，副端口为Ethernet1/0/2，并使能该环。

[DeviceC-rrpp-domain1] ring 1 node-mode transit primary-port ethernet 1/0/1 secondary-port ethernet 1/0/2 level 0

[DeviceC-rrpp-domain1] ring 1 enable

# 配置本设备为子环Ring 4的辅助边缘节点，边缘端口为Ethernet1/0/3，并使能该环。

[DeviceC-rrpp-domain1] ring 4 node-mode assistant-edge edge-port ethernet 1/0/3

[DeviceC-rrpp-domain1] ring 4 enable

# 配置本设备为子环Ring 5的辅助边缘节点，边缘端口为Ethernet1/0/4，并使能该环。

[DeviceC-rrpp-domain1] ring 5 node-mode assistant-edge edge-port ethernet 1/0/4

[DeviceC-rrpp-domain1] ring 5 enable

[DeviceC-rrpp-domain1] quit

# 使能RRPP协议。

[DeviceC] rrpp enable

(4) 配置Device D

# 创建VLAN 1～30，将这些VLAN都映射到MSTI 1上，并激活MST域的配置。

<DeviceD> system-view

[DeviceD] vlan 1 to 30

[DeviceD] stp region-configuration

[DeviceD-mst-region] instance 1 vlan 1 to 30

[DeviceD-mst-region] active region-configuration

[DeviceD-mst-region] quit

# 分别在端口Ethernet1/0/1～Ethernet1/0/4上取消物理连接状态up/down抑制时间配置，关闭生成树协议，配置端口信任报文的802.1p优先级，并将端口配置为Trunk端口且允许VLAN 1～30通过。

[DeviceD] interface ethernet 1/0/1

[DeviceD-Ethernet1/0/1] undo link-delay

[DeviceD-Ethernet1/0/1] undo stp enable

[DeviceD-Ethernet1/0/1] qos trust dot1p

[DeviceD-Ethernet1/0/1] port link-type trunk

[DeviceD-Ethernet1/0/1] port trunk permit vlan 1 to 30

[DeviceD-Ethernet1/0/1] quit

[DeviceD] interface ethernet 1/0/2

[DeviceD-Ethernet1/0/2] undo link-delay

[DeviceD-Ethernet1/0/2] undo stp enable

[DeviceD-Ethernet1/0/2] qos trust dot1p

[DeviceD-Ethernet1/0/2] port link-type trunk

[DeviceD-Ethernet1/0/2] port trunk permit vlan 1 to 30

[DeviceD-Ethernet1/0/2] quit

[DeviceD] interface ethernet 1/0/3

[DeviceD-Ethernet1/0/3] undo link-delay

[DeviceD-Ethernet1/0/3] undo stp enable

[DeviceD-Ethernet1/0/3] qos trust dot1p

[DeviceD-Ethernet1/0/3] port link-type trunk

[DeviceD-Ethernet1/0/3] port trunk permit vlan 1 to 30

[DeviceD-Ethernet1/0/3] quit

[DeviceD] interface ethernet 1/0/4

[DeviceD-Ethernet1/0/4] undo link-delay

[DeviceD-Ethernet1/0/4] undo stp enable

[DeviceD-Ethernet1/0/4] qos trust dot1p

[DeviceD-Ethernet1/0/4] port link-type trunk

[DeviceD-Ethernet1/0/4] port trunk permit vlan 1 to 30

[DeviceD-Ethernet1/0/4] quit

# 创建RRPP域1，将VLAN 4092配置为该域的控制VLAN，并将MSTI 1所映射的VLAN配置为该域的保护VLAN。

[DeviceD] rrpp domain 1

[DeviceD-rrpp-domain1] control-vlan 4092

[DeviceD-rrpp-domain1] protected-vlan reference-instance 1

# 配置本设备为主环Ring 1的传输节点，主端口为Ethernet1/0/1，副端口为Ethernet1/0/2，并使能该环。

[DeviceD-rrpp-domain1] ring 1 node-mode transit primary-port ethernet 1/0/1 secondary-port ethernet 1/0/2 level 0

[DeviceD-rrpp-domain1] ring 1 enable

# 配置本设备为子环Ring 4的边缘节点，边缘端口为Ethernet1/0/3，并使能该环。

[DeviceD-rrpp-domain1] ring 4 node-mode edge edge-port ethernet 1/0/3

[DeviceD-rrpp-domain1] ring 4 enable

# 配置本设备为子环Ring 5的边缘节点，边缘端口为Ethernet1/0/4，并使能该环。

[DeviceD-rrpp-domain1] ring 5 node-mode edge edge-port ethernet 1/0/4

[DeviceD-rrpp-domain1] ring 5 enable

[DeviceD-rrpp-domain1] quit

# 使能RRPP协议。

[DeviceD] rrpp enable

(5) 配置Device E

# 创建VLAN 1～30，将这些VLAN都映射到MSTI 1上，并激活MST域的配置。

<DeviceE> system-view

[DeviceE] vlan 1 to 30

[DeviceE] stp region-configuration

[DeviceE-mst-region] instance 1 vlan 1 to 30

[DeviceE-mst-region] active region-configuration

[DeviceE-mst-region] quit

# 分别在端口Ethernet1/0/1和Ethernet1/0/2上取消物理连接状态up/down抑制时间配置，关闭生成树协议，配置端口信任报文的802.1p优先级，并将端口配置为Trunk端口且允许VLAN 1～30通过。

[DeviceE] interface ethernet 1/0/1

[DeviceE-Ethernet1/0/1] undo link-delay

[DeviceE-Ethernet1/0/1] undo stp enable

[DeviceE-Ethernet1/0/1] qos trust dot1p

[DeviceE-Ethernet1/0/1] port link-type trunk

[DeviceE-Ethernet1/0/1] port trunk permit vlan 1 to 30

[DeviceE-Ethernet1/0/1] quit

[DeviceE] interface ethernet 1/0/2

[DeviceE-Ethernet1/0/2] undo link-delay

[DeviceE-Ethernet1/0/2] undo stp enable

[DeviceE-Ethernet1/0/2] qos trust dot1p

[DeviceE-Ethernet1/0/2] port link-type trunk

[DeviceE-Ethernet1/0/2] port trunk permit vlan 1 to 30

[DeviceE-Ethernet1/0/2] quit

# 创建RRPP域1，将VLAN 4092配置为该域的控制VLAN，并将MSTI 1所映射的VLAN配置为该域的保护VLAN。

[DeviceE] rrpp domain 1

[DeviceE-rrpp-domain1] control-vlan 4092

[DeviceE-rrpp-domain1] protected-vlan reference-instance 1

# 配置本设备为子环Ring 2的主节点，主端口为Ethernet1/0/1，副端口为Ethernet1/0/2，并使能该环。

[DeviceE-rrpp-domain1] ring 2 node-mode master primary-port ethernet 1/0/1 secondary-port ethernet 1/0/2 level 1

[DeviceE-rrpp-domain1] ring 2 enable

[DeviceE-rrpp-domain1] quit

# 使能RRPP协议。

[DeviceE] rrpp enable

(6) 配置Device F

# 创建VLAN 1～30，将这些VLAN都映射到MSTI 1上，并激活MST域的配置。

<DeviceF> system-view

[DeviceF] vlan 1 to 30

[DeviceF] stp region-configuration

[DeviceF-mst-region] instance 1 vlan 1 to 30

[DeviceF-mst-region] active region-configuration

[DeviceF-mst-region] quit

# 分别在端口Ethernet1/0/1和Ethernet1/0/2上取消物理连接状态up/down抑制时间配置，关闭生成树协议，配置端口信任报文的802.1p优先级，并将端口配置为Trunk端口且允许VLAN 1～30通过。

[DeviceF] interface ethernet 1/0/1

[DeviceF-Ethernet1/0/1] undo link-delay

[DeviceF-Ethernet1/0/1] undo stp enable

[DeviceF-Ethernet1/0/1] qos trust dot1p

[DeviceF-Ethernet1/0/1] port link-type trunk

[DeviceF-Ethernet1/0/1] port trunk permit vlan 1 to 30

[DeviceF-Ethernet1/0/1] quit

[DeviceF] interface ethernet 1/0/2

[DeviceF-Ethernet1/0/2] undo link-delay

[DeviceF-Ethernet1/0/2] undo stp enable

[DeviceF-Ethernet1/0/2] qos trust dot1p

[DeviceF-Ethernet1/0/2] port link-type trunk

[DeviceF-Ethernet1/0/2] port trunk permit vlan 1 to 30

[DeviceF-Ethernet1/0/2] quit

# 创建RRPP域1，将VLAN 4092配置为该域的控制VLAN，并将MSTI 1所映射的VLAN配置为该域的保护VLAN。

[DeviceF] rrpp domain 1

[DeviceF-rrpp-domain1] control-vlan 4092

[DeviceF-rrpp-domain1] protected-vlan reference-instance 1

# 配置本设备为子环Ring 3的主节点，主端口为Ethernet1/0/1，副端口为Ethernet1/0/2，并使能该环。

[DeviceF-rrpp-domain1] ring 3 node-mode master primary-port ethernet 1/0/1 secondary-port ethernet 1/0/2 level 1

[DeviceF-rrpp-domain1] ring 3 enable

[DeviceF-rrpp-domain1] quit

# 使能RRPP协议。

[DeviceF] rrpp enable

(7) 配置Device G

# 创建VLAN 1～30，将这些VLAN都映射到MSTI 1上，并激活MST域的配置。

<DeviceG> system-view

[DeviceG] vlan 1 to 30

[DeviceG] stp region-configuration

[DeviceG-mst-region] instance 1 vlan 1 to 30

[DeviceG-mst-region] active region-configuration

[DeviceG-mst-region] quit

# 分别在端口Ethernet1/0/1和Ethernet1/0/2上取消物理连接状态up/down抑制时间配置，关闭生成树协议，配置端口信任报文的802.1p优先级，并将端口配置为Trunk端口且允许VLAN 1～30通过。

[DeviceG] interface ethernet 1/0/1

[DeviceG-Ethernet1/0/1] undo link-delay

[DeviceG-Ethernet1/0/1] undo stp enable

[DeviceG-Ethernet1/0/1] qos trust dot1p

[DeviceG-Ethernet1/0/1] port link-type trunk

[DeviceG-Ethernet1/0/1] port trunk permit vlan 1 to 30

[DeviceG-Ethernet1/0/1] quit

[DeviceG] interface ethernet 1/0/2

[DeviceG-Ethernet1/0/2] undo link-delay

[DeviceG-Ethernet1/0/2] undo stp enable

[DeviceG-Ethernet1/0/2] qos trust dot1p

[DeviceG-Ethernet1/0/2] port link-type trunk

[DeviceG-Ethernet1/0/2] port trunk permit vlan 1 to 30

[DeviceG-Ethernet1/0/2] quit

# 创建RRPP域1，将VLAN 4092配置为该域的控制VLAN，并将MSTI 1所映射的VLAN配置为该域的保护VLAN。

[DeviceG] rrpp domain 1

[DeviceG-rrpp-domain1] control-vlan 4092

[DeviceG-rrpp-domain1] protected-vlan reference-instance 1

# 配置本设备为子环Ring 4的主节点，主端口为Ethernet1/0/1，副端口为Ethernet1/0/2，并使能该环。

[DeviceG-rrpp-domain1] ring 4 node-mode master primary-port ethernet 1/0/1 secondary-port ethernet 1/0/2 level 1

[DeviceG-rrpp-domain1] ring 4 enable

[DeviceG-rrpp-domain1] quit

# 使能RRPP协议。

[DeviceG] rrpp enable

(8) 配置Device H

# 创建VLAN 1～30，将这些VLAN都映射到MSTI 1上，并激活MST域的配置。

<DeviceH> system-view

[DeviceH] vlan 1 to 30

[DeviceH] stp region-configuration

[DeviceH-mst-region] instance 1 vlan 1 to 30

[DeviceH-mst-region] active region-configuration

[DeviceH-mst-region] quit

# 分别在端口Ethernet1/0/1和Ethernet1/0/2上取消物理连接状态up/down抑制时间配置，关闭生成树协议，配置端口信任报文的802.1p优先级，并将端口配置为Trunk端口且允许VLAN 1～30通过。

[DeviceH] interface ethernet 1/0/1

[DeviceH-Ethernet1/0/1] undo link-delay

[DeviceH-Ethernet1/0/1] undo stp enable

[DeviceH-Ethernet1/0/1] qos trust dot1p

[DeviceH-Ethernet1/0/1] port link-type trunk

[DeviceH-Ethernet1/0/1] port trunk permit vlan 1 to 30

[DeviceH-Ethernet1/0/1] quit

[DeviceH] interface ethernet 1/0/2

[DeviceH-Ethernet1/0/2] undo link-delay

[DeviceH-Ethernet1/0/2] undo stp enable

[DeviceH-Ethernet1/0/2] qos trust dot1p

[DeviceH-Ethernet1/0/2] port link-type trunk

[DeviceH-Ethernet1/0/2] port trunk permit vlan 1 to 30

[DeviceH-Ethernet1/0/2] quit

# 创建RRPP域1，将VLAN 4092配置为该域的控制VLAN，并将MSTI 1所映射的VLAN配置为该域的保护VLAN。

[DeviceH] rrpp domain 1

[DeviceH-rrpp-domain1] control-vlan 4092

[DeviceH-rrpp-domain1] protected-vlan reference-instance 1

# 配置本设备为子环Ring 5的主节点，主端口为Ethernet1/0/1，副端口为Ethernet1/0/2，并使能该环。

[DeviceH-rrpp-domain1] ring 5 node-mode master primary-port ethernet 1/0/1 secondary-port ethernet 1/0/2 level 1

[DeviceH-rrpp-domain1] ring 5 enable

[DeviceH-rrpp-domain1] quit

# 使能RRPP协议。

[DeviceH] rrpp enable

(9) 检验配置效果

配置完成后，用户可以使用 display 命令查看各设备上RRPP的配置和运行情况。

1.11.4 相交环负载分担配置举例

1. 组网需求

l Device A、Device B、Device C、Device D和Device F构成RRPP域1，该域的控制VLAN为VLAN 100。在该域中，Device A和Device D分别为主环Ring 1的主节点和传输节点，Device F、Device C和Device B分别为子环Ring 3的主节点、边缘节点和辅助边缘节点。

l Device A、Device B、Device C、Device D和Device E构成RRPP域2，该域的控制VLAN为VLAN 105。在该域中，Device A和Device D分别为主环Ring 1的主节点和传输节点，Device E、Device C和Device B分别为子环Ring 2的主节点、边缘节点和辅助边缘节点。

l RRPP域1的保护VLAN为VLAN 1，RRPP域2的保护VLAN为VLAN 2。由此可以按照VLAN在主环上实现负载分担。

l 由于子环Ring 2和Ring 3的边缘节点和辅助边缘节点的配置相同，且其对应的主环链路也相同，因此可将子环Ring 2和Ring 3加入环组，以减少Edge-Hello报文的收发数量。

2. 组网图

图1-11 相交环负载分担配置组网图

3. 配置步骤

(1) 配置Device A

# 创建VLAN 1和2，将VLAN 1和2分别映射到MSTI 1和2上，并激活MST域的配置。

<DeviceA> system-view

[DeviceA] vlan 1 to 2

[DeviceA] stp region-configuration

[DeviceA-mst-region] instance 1 vlan 1

[DeviceA-mst-region] instance 2 vlan 2

[DeviceA-mst-region] active region-configuration

[DeviceA-mst-region] quit

# 分别在端口Ethernet1/0/1和Ethernet1/0/2上取消物理连接状态up/down抑制时间配置，关闭生成树协议，配置端口信任报文的802.1p优先级，并将端口配置为Trunk端口且允许VLAN 1和2通过。

[DeviceA] interface ethernet 1/0/1

[DeviceA-Ethernet1/0/1] undo link-delay

[DeviceA-Ethernet1/0/1] undo stp enable

[DeviceA-Ethernet1/0/1] qos trust dot1p

[DeviceA-Ethernet1/0/1] port link-type trunk

[DeviceA-Ethernet1/0/1] port trunk permit vlan 1 2

[DeviceA-Ethernet1/0/1] quit

[DeviceA] interface ethernet 1/0/2

[DeviceA-Ethernet1/0/2] undo link-delay

[DeviceA-Ethernet1/0/2] undo stp enable

[DeviceA-Ethernet1/0/2] qos trust dot1p

[DeviceA-Ethernet1/0/2] port link-type trunk

[DeviceA-Ethernet1/0/2] port trunk permit vlan 1 2

[DeviceA-Ethernet1/0/2] quit

# 创建RRPP域1，将VLAN 100配置为该域的控制VLAN，并将MSTI 1所映射的VLAN配置为该域的保护VLAN。

[DeviceA] rrpp domain 1

[DeviceA-rrpp-domain1] control-vlan 100

[DeviceA-rrpp-domain1] protected-vlan reference-instance 1

# 在RRPP域1内配置本设备为主环Ring 1的主节点，主端口为Ethernet1/0/1，副端口为Ethernet1/0/2，并使能该环。

[DeviceA-rrpp-domain1] ring 1 node-mode master primary-port ethernet 1/0/1 secondary-port ethernet 1/0/2 level 0

[DeviceA-rrpp-domain1] ring 1 enable

[DeviceA-rrpp-domain1] quit

# 创建RRPP域2，将VLAN 105配置为该域的控制VLAN，并将MSTI 2所映射的VLAN配置为该域的保护VLAN。

[DeviceA] rrpp domain 2

[DeviceA-rrpp-domain2] control-vlan 105

[DeviceA-rrpp-domain2] protected-vlan reference-instance 2

# 在RRPP域2内配置本设备为主环Ring 1的主节点，主端口为Ethernet1/0/2，副端口为Ethernet1/0/1，并使能该环。

[DeviceA-rrpp-domain2] ring 1 node-mode master primary-port ethernet 1/0/2 secondary-port ethernet 1/0/1 level 0

[DeviceA-rrpp-domain2] ring 1 enable

[DeviceA-rrpp-domain2] quit

# 使能RRPP协议。

[DeviceA] rrpp enable

(2) 配置Device B

# 创建VLAN 1和2，将VLAN 1和2分别映射到MSTI 1和2上，并激活MST域的配置。

<DeviceB> system-view

[DeviceB] vlan 1 to 2

[DeviceB] stp region-configuration

[DeviceB-mst-region] instance 1 vlan 1

[DeviceB-mst-region] instance 2 vlan 2

[DeviceB-mst-region] active region-configuration

[DeviceB-mst-region] quit

# 分别在端口Ethernet1/0/1和Ethernet1/0/2上取消物理连接状态up/down抑制时间配置，关闭生成树协议，配置端口信任报文的802.1p优先级，并将端口配置为Trunk端口且允许VLAN 1和2通过。

[DeviceB] interface ethernet 1/0/1

[DeviceB-Ethernet1/0/1] undo link-delay

[DeviceB-Ethernet1/0/1] undo stp enable

[DeviceB-Ethernet1/0/1] qos trust dot1p

[DeviceB-Ethernet1/0/1] port link-type trunk

[DeviceB-Ethernet1/0/1] port trunk permit vlan 1 2

[DeviceB-Ethernet1/0/1] quit

[DeviceB] interface ethernet 1/0/2

[DeviceB-Ethernet1/0/2] undo link-delay

[DeviceB-Ethernet1/0/2] undo stp enable

[DeviceB-Ethernet1/0/2] qos trust dot1p

[DeviceB-Ethernet1/0/2] port link-type trunk

[DeviceB-Ethernet1/0/2] port trunk permit vlan 1 2

[DeviceB-Ethernet1/0/2] quit

# 在端口Ethernet1/0/3上取消物理连接状态up/down抑制时间配置，关闭生成树协议，配置端口信任报文的802.1p优先级，并将端口配置为Trunk端口且允许VLAN 2通过。

[DeviceB] interface ethernet 1/0/3

[DeviceB-Ethernet1/0/3] undo link-delay

[DeviceB-Ethernet1/0/3] undo stp enable

[DeviceB-Ethernet1/0/3] qos trust dot1p

[DeviceB-Ethernet1/0/3] port link-type trunk

[DeviceB-Ethernet1/0/3] port trunk permit vlan 2

[DeviceB-Ethernet1/0/3] quit

# 在端口Ethernet1/0/4上取消物理连接状态up/down抑制时间配置，关闭生成树协议，配置端口信任报文的802.1p优先级，并将端口配置为Trunk端口且允许VLAN 1通过。

[DeviceB] interface ethernet 1/0/4

[DeviceB-Ethernet1/0/4] undo link-delay

[DeviceB-Ethernet1/0/4] undo stp enable

[DeviceB-Ethernet1/0/4] qos trust dot1p

[DeviceB-Ethernet1/0/4] port link-type trunk

[DeviceB-Ethernet1/0/4] port trunk permit vlan 1

[DeviceB-Ethernet1/0/4] quit

# 创建RRPP域1，将VLAN 100配置为该域的控制VLAN，并将MSTI 1所映射的VLAN配置为该域的保护VLAN。

[DeviceB] rrpp domain 1

[DeviceB-rrpp-domain1] control-vlan 100

[DeviceB-rrpp-domain1] protected-vlan reference-instance 1

# 在RRPP域1内配置本设备为主环Ring 1的传输节点，主端口为Ethernet1/0/1，副端口为Ethernet1/0/2，并使能该环。

[DeviceB-rrpp-domain1] ring 1 node-mode transit primary-port ethernet 1/0/1 secondary-port ethernet 1/0/2 level 0

[DeviceB-rrpp-domain1] ring 1 enable

# 在RRPP域1内配置本设备为子环Ring 3的辅助边缘节点，边缘端口为Ethernet1/0/4，并使能该环。

[DeviceB-rrpp-domain1] ring 3 node-mode assistant-edge edge-port ethernet 1/0/4

[DeviceB-rrpp-domain1] ring 3 enable

[DeviceB-rrpp-domain1] quit

# 创建RRPP域2，将VLAN 105配置为该域的控制VLAN，并将MSTI 2所映射的VLAN配置为该域的保护VLAN。

[DeviceB] rrpp domain 2

[DeviceB-rrpp-domain2] control-vlan 105

[DeviceB-rrpp-domain2] protected-vlan reference-instance 2

# 在RRPP域2内配置本设备为主环Ring 1的传输节点，主端口为Ethernet1/0/1，副端口为Ethernet1/0/2，并使能该环。

[DeviceB-rrpp-domain2] ring 1 node-mode transit primary-port ethernet 1/0/1 secondary-port ethernet 1/0/2 level 0

[DeviceB-rrpp-domain2] ring 1 enable

# 在RRPP域2内配置本设备为子环Ring 2的辅助边缘节点，边缘端口为Ethernet1/0/3，并使能该环。

[DeviceB-rrpp-domain2] ring 2 node-mode assistant-edge edge-port ethernet 1/0/3

[DeviceB-rrpp-domain2] ring 2 enable

[DeviceB-rrpp-domain2] quit

# 使能RRPP协议。

[DeviceB] rrpp enable

(3) 配置Device C

# 创建VLAN 1和2，将VLAN 1和2分别映射到MSTI 1和2上，并激活MST域的配置。

<DeviceC> system-view

[DeviceC] vlan 1 to 2

[DeviceC] stp region-configuration

[DeviceC-mst-region] instance 1 vlan 1

[DeviceC-mst-region] instance 2 vlan 2

[DeviceC-mst-region] active region-configuration

[DeviceC-mst-region] quit

# 分别在端口Ethernet1/0/1和Ethernet1/0/2上取消物理连接状态up/down抑制时间配置，关闭生成树协议，配置端口信任报文的802.1p优先级，并将端口配置为Trunk端口且允许VLAN 1和2通过。

[DeviceC] interface ethernet 1/0/1

[DeviceC-Ethernet1/0/1] undo link-delay

[DeviceC-Ethernet1/0/1] undo stp enable

[DeviceC-Ethernet1/0/1] qos trust dot1p

[DeviceC-Ethernet1/0/1] port link-type trunk

[DeviceC-Ethernet1/0/1] port trunk permit vlan 1 2

[DeviceC-Ethernet1/0/1] quit

[DeviceC] interface ethernet 1/0/2

[DeviceC-Ethernet1/0/2] undo link-delay

[DeviceC-Ethernet1/0/2] undo stp enable

[DeviceC-Ethernet1/0/2] qos trust dot1p

[DeviceC-Ethernet1/0/2] port link-type trunk

[DeviceC-Ethernet1/0/2] port trunk permit vlan 1 2

[DeviceC-Ethernet1/0/2] quit

# 在端口Ethernet1/0/3上取消物理连接状态up/down抑制时间配置，关闭生成树协议，配置端口信任报文的802.1p优先级，并将端口配置为Trunk端口且允许VLAN 2通过。

[DeviceC] interface ethernet 1/0/3

[DeviceC-Ethernet1/0/3] undo link-delay

[DeviceC-Ethernet1/0/3] undo stp enable

[DeviceC-Ethernet1/0/3] qos trust dot1p

[DeviceC-Ethernet1/0/3] port link-type trunk

[DeviceC-Ethernet1/0/3] port trunk permit vlan 2

[DeviceC-Ethernet1/0/3] quit

# 在端口Ethernet1/0/4上取消物理连接状态up/down抑制时间配置，关闭生成树协议，配置端口信任报文的802.1p优先级，并将端口配置为Trunk端口且允许VLAN 1通过。

[DeviceC] interface ethernet 1/0/4

[DeviceC-Ethernet1/0/4] undo link-delay

[DeviceC-Ethernet1/0/4] undo stp enable

[DeviceC-Ethernet1/0/4] qos trust dot1p

[DeviceC-Ethernet1/0/4] port link-type trunk

[DeviceC-Ethernet1/0/4] port trunk permit vlan 1

[DeviceC-Ethernet1/0/4] quit

# 创建RRPP域1，将VLAN 100配置为该域的控制VLAN，并将MSTI 1所映射的VLAN配置为该域的保护VLAN。

[DeviceC] rrpp domain 1

[DeviceC-rrpp-domain1] control-vlan 100

[DeviceC-rrpp-domain1] protected-vlan reference-instance 1

# 在RRPP域1内配置本设备为主环Ring 1的传输节点，主端口为Ethernet1/0/1，副端口为Ethernet1/0/2，并使能该环。

[DeviceC-rrpp-domain1] ring 1 node-mode transit primary-port ethernet 1/0/1 secondary-port ethernet 1/0/2 level 0

[DeviceC-rrpp-domain1] ring 1 enable

# 在RRPP域1内配置本设备为子环Ring 3的边缘节点，边缘端口为Ethernet1/0/4，并使能该环。

[DeviceC-rrpp-domain1] ring 3 node-mode edge edge-port ethernet 1/0/4

[DeviceC-rrpp-domain1] ring 3 enable

[DeviceC-rrpp-domain1] quit

# 创建RRPP域2，将VLAN 105配置为该域的控制VLAN，并将MSTI 2所映射的VLAN配置为该域的保护VLAN。

[DeviceC] rrpp domain 2

[DeviceC-rrpp-domain2] control-vlan 105

[DeviceC-rrpp-domain2] protected-vlan reference-instance 2

# 在RRPP域2内配置本设备为主环Ring 1的传输节点，主端口为Ethernet1/0/1，副端口为Ethernet1/0/2，并使能该环。

[DeviceC-rrpp-domain2] ring 1 node-mode transit primary-port ethernet 1/0/1 secondary-port ethernet 1/0/2 level 0

[DeviceC-rrpp-domain2] ring 1 enable

# 在RRPP域2内配置本设备为子环Ring 2的边缘节点，边缘端口为Ethernet1/0/3，并使能该环。

[DeviceC-rrpp-domain2] ring 2 node-mode edge edge-port ethernet 1/0/3

[DeviceC-rrpp-domain2] ring 2 enable

[DeviceC-rrpp-domain2] quit

# 使能RRPP协议。

[DeviceC] rrpp enable

(4) 配置Device D

# 创建VLAN 1和2，将VLAN 1和2分别映射到MSTI 1和2上，并激活MST域的配置。

<DeviceD> system-view

[DeviceD] vlan 1 to 2

[DeviceD] stp region-configuration

[DeviceD-mst-region] instance 1 vlan 1

[DeviceD-mst-region] instance 2 vlan 2

[DeviceD-mst-region] active region-configuration

[DeviceD-mst-region] quit

# 分别在端口Ethernet1/0/1和Ethernet1/0/2上取消物理连接状态up/down抑制时间配置，关闭生成树协议，配置端口信任报文的802.1p优先级，并将端口配置为Trunk端口且允许VLAN 1和2通过。

[DeviceD] interface ethernet 1/0/1

[DeviceD-Ethernet1/0/1] undo link-delay

[DeviceD-Ethernet1/0/1] undo stp enable

[DeviceD-Ethernet1/0/1] qos trust dot1p

[DeviceD-Ethernet1/0/1] port link-type trunk

[DeviceD-Ethernet1/0/1] port trunk permit vlan 1 2

[DeviceD-Ethernet1/0/1] quit

[DeviceD] interface ethernet 1/0/2

[DeviceD-Ethernet1/0/2] undo link-delay

[DeviceD-Ethernet1/0/2] undo stp enable

[DeviceD-Ethernet1/0/2] qos trust dot1p

[DeviceD-Ethernet1/0/2] port link-type trunk

[DeviceD-Ethernet1/0/2] port trunk permit vlan 1 2

[DeviceD-Ethernet1/0/2] quit

# 创建RRPP域1，将VLAN 100配置为该域的控制VLAN，并将MSTI 1所映射的VLAN配置为该域的保护VLAN。

[DeviceD] rrpp domain 1

[DeviceD-rrpp-domain1] control-vlan 100

[DeviceD-rrpp-domain1] protected-vlan reference-instance 1

# 在RRPP域1内配置本设备为主环Ring 1的传输节点，主端口为Ethernet1/0/1，副端口为Ethernet1/0/2，并使能该环。

[DeviceD-rrpp-domain1] ring 1 node-mode transit primary-port ethernet 1/0/1 secondary-port ethernet 1/0/2 level 0

[DeviceD-rrpp-domain1] ring 1 enable

[DeviceD-rrpp-domain1] quit

# 创建RRPP域2，将VLAN 105配置为该域的控制VLAN，并将MSTI 2所映射的VLAN配置为该域的保护VLAN。

[DeviceD] rrpp domain 2

[DeviceD-rrpp-domain2] control-vlan 105

[DeviceD-rrpp-domain2] protected-vlan reference-instance 2

# 在RRPP域2内配置本设备为主环Ring 1的传输节点，主端口为Ethernet1/0/1，副端口为Ethernet1/0/2，并使能该环。

[DeviceD-rrpp-domain2] ring 1 node-mode transit primary-port ethernet 1/0/1 secondary-port ethernet 1/0/2 level 0

[DeviceD-rrpp-domain2] ring 1 enable

[DeviceD-rrpp-domain2] quit

# 使能RRPP协议。

[DeviceD] rrpp enable

(5) 配置Device E

# 创建VLAN 2，将VLAN 2映射到MSTI 2上，并激活MST域的配置。

<DeviceE> system-view

[DeviceE] vlan 2

[DeviceE-vlan2] quit

[DeviceE] stp region-configuration

[DeviceE-mst-region] instance 2 vlan 2

[DeviceE-mst-region] active region-configuration

[DeviceE-mst-region] quit

# 分别在端口Ethernet1/0/1和Ethernet1/0/2上取消物理连接状态up/down抑制时间配置，关闭生成树协议，配置端口信任报文的802.1p优先级，将端口配置为Trunk端口且允许VLAN 2通过，并配置其缺省VLAN为VLAN 2。

[DeviceE] interface ethernet 1/0/1

[DeviceE-Ethernet1/0/1] undo link-delay

[DeviceE-Ethernet1/0/1] undo stp enable

[DeviceE-Ethernet1/0/1] qos trust dot1p

[DeviceE-Ethernet1/0/1] port link-type trunk

[DeviceE-Ethernet1/0/1] port trunk permit vlan 2

[DeviceE-Ethernet1/0/1] port trunk pvid vlan 2

[DeviceE-Ethernet1/0/1] quit

[DeviceE] interface ethernet 1/0/2

[DeviceE-Ethernet1/0/2] undo link-delay

[DeviceE-Ethernet1/0/2] undo stp enable

[DeviceE-Ethernet1/0/2] qos trust dot1p

[DeviceE-Ethernet1/0/2] port link-type trunk

[DeviceE-Ethernet1/0/2] port trunk permit vlan 2

[DeviceE-Ethernet1/0/2] port trunk pvid vlan 2

[DeviceE-Ethernet1/0/2] quit

# 创建RRPP域2，将VLAN 105配置为该域的控制VLAN，并将MSTI 2所映射的VLAN配置为该域的保护VLAN。

[DeviceE] rrpp domain 2

[DeviceE-rrpp-domain2] control-vlan 105

[DeviceE-rrpp-domain2] protected-vlan reference-instance 2

# 在RRPP域2内配置本设备为子环Ring 2的主节点，主端口为Ethernet1/0/2，副端口为Ethernet1/0/1，并使能该环。

[DeviceE-rrpp-domain2] ring 2 node-mode master primary-port ethernet 1/0/2 secondary-port ethernet 1/0/1 level 1

[DeviceE-rrpp-domain2] ring 2 enable

[DeviceE-rrpp-domain2] quit

# 使能RRPP协议。

[DeviceE] rrpp enable

(6) 配置Device F

# 创建VLAN 1，将VLAN 1映射到MSTI 1上，并激活MST域的配置。

<DeviceF> system-view

[DeviceF] vlan 1

[DeviceF-vlan1] quit

[DeviceF] stp region-configuration

[DeviceF-mst-region] instance 1 vlan 1

[DeviceF-mst-region] active region-configuration

[DeviceF-mst-region] quit

# 分别在端口Ethernet1/0/1和Ethernet1/0/2上取消物理连接状态up/down抑制时间配置，关闭生成树协议，配置端口信任报文的802.1p优先级，将端口配置为Trunk端口且允许VLAN 1通过，并配置其缺省VLAN为VLAN 1。

[DeviceF] interface ethernet 1/0/1

[DeviceF-Ethernet1/0/1] undo link-delay

[DeviceF-Ethernet1/0/1] undo stp enable

[DeviceF-Ethernet1/0/1] qos trust dot1p

[DeviceF-Ethernet1/0/1] port link-type trunk

[DeviceF-Ethernet1/0/1] port trunk permit vlan 1

[DeviceF-Ethernet1/0/1] port trunk pvid vlan 1

[DeviceF-Ethernet1/0/1] quit

[DeviceF] interface ethernet 1/0/2

[DeviceF-Ethernet1/0/2] undo link-delay

[DeviceF-Ethernet1/0/2] undo stp enable

[DeviceF-Ethernet1/0/2] qos trust dot1p

[DeviceF-Ethernet1/0/2] port link-type trunk

[DeviceF-Ethernet1/0/2] port trunk permit vlan 1

[DeviceF-Ethernet1/0/2] port trunk pvid vlan 1

[DeviceF-Ethernet1/0/2] quit

# 创建RRPP域1，将VLAN 100配置为该域的控制VLAN，并将MSTI 1所映射的VLAN配置为该域的保护VLAN。

[DeviceF] rrpp domain 1

[DeviceF-rrpp-domain1] control-vlan 100

[DeviceF-rrpp-domain1] protected-vlan reference-instance 1

# 在RRPP域1内配置本设备为子环Ring 3的主节点，主端口为Ethernet1/0/1，副端口为Ethernet1/0/2，并使能该环。

[DeviceF-rrpp-domain1] ring 3 node-mode master primary-port ethernet 1/0/1 secondary-port ethernet 1/0/2 level 1

[DeviceF-rrpp-domain1] ring 3 enable

[DeviceF-rrpp-domain1] quit

# 使能RRPP协议。

[DeviceF] rrpp enable

(7) 完成以上配置后，在Device B和Device C上分别配置RRPP环组

# 在Device B上创建RRPP环组1，并为其配置子环。

[DeviceB] rrpp ring-group 1

[DeviceB-rrpp-ring-group1] domain 2 ring 2

[DeviceB-rrpp-ring-group1] domain 1 ring 3

# 在Device C上创建RRPP环组1，并为其配置子环。

[DeviceC] rrpp ring-group 1

[DeviceC-rrpp-ring-group1] domain 2 ring 2

[DeviceC-rrpp-ring-group1] domain 1 ring 3

(8) 检验配置效果

配置完成后，用户可以使用 display 命令查看各设备上RRPP的配置和运行情况。


1.12 常见配置错误举例

1. 故障现象

在链路正常状态下，主节点收不到Hello报文，主节点放开副端口。

2. 故障分析

可能的原因有：

l RRPP环上有节点没有使能RRPP协议。

l 在同一RRPP环上的节点的域ID或控制VLAN ID不同。

l 端口处于非正常状态。

3. 故障排除

l 使用 display rrpp brief 命令查看各个节点是否都配置并使能了RRPP协议。如果没有则使用 rrpp enable 和 ring enable 命令使能RRPP协议和RRPP环。

l 使用 display rrpp brief 命令查看各节点的域ID和控制VLAN是否相同。如果不相同，则需重新设置为相同。

l 使用 display rrpp verbose 命令查看各个节点各个环的端口链路状态。

l 在各个节点上使用 debugging rrpp 命令查看端口是否有Hello报文的接收或发送，如果没有则说明有报文丢失。


1 Smart Link配置

相关链接

  • 1.1 Smart Link简介
  • 1.2 Smart Link配置任务简介
  • 1.3 配置Smart Link设备
  • 1.4 配置相关设备
  • 1.5 Smart Link显示和维护
  • 1.6 Smart Link典型配置举例
父主题： 06-Smart Link配置


1.1 Smart Link简介

1.1.1 Smart Link产生背景

当下游设备连接到上游设备时，使用单上行方式容易出现单点故障，造成业务中断。因此通常采用双上行方式，即将一台下游设备同时连接到两台上游设备，以最大限度地避免单点故障，提高网络可靠性，如图1-1 所示。

图1-1 Smart Link应用场景示意图

双上行组网虽然能提高网络可靠性，但又引入了环路问题。通常可通过STP（Spanning Tree Protocol，生成树协议）或RRPP（Rapid Ring Protection Protocol，快速环网保护协议）来消除环路，但STP在收敛速度上只能达到秒级，不适用于对收敛时间有很高要求的用户，而RRPP尽管在收敛速度上能达到要求，但组网配置的复杂度较高，主要适用于较复杂的环形组网。

有关STP和RRPP的详细介绍，请分别参见“二层技术-以太网交换配置指导”中的“生成树”和“可靠性配置指导”中的“RRPP”。

为了满足用户对链路快速收敛的要求，同时又能简化配置，我们针对双上行组网提出了Smart Link解决方案，实现了主备链路的冗余备份，并在主用链路发生故障后使流量能够迅速切换到备用链路上，因此具备较高的收敛速度。Smart Link的主要特点如下：

l 专用于双上行组网。

l 收敛速度快（达到亚秒级）。

l 配置简单，便于用户操作。

1.1.2 Smart Link概念介绍

1. Smart Link组

Smart Link组也叫灵活链路组，每个组内只包含两个端口，其中一个为主端口，另一个为从端口。正常情况下，只有一个端口处于转发（ACTIVE）状态，另一个端口被阻塞，处于待命（STANDBY）状态。当处于转发状态的端口出现链路故障时（这里的链路故障包括端口down、OAM单通等），Smart Link组会自动将该端口阻塞，并将原阻塞的处于待命状态的端口切换到转发状态。

如图1-1 所示，Device C和Device D各自的端口Port1和Port2分别组成了一个Smart Link组，其中Port1处于转发状态，而Port2处于待命状态。

2. 主端口/从端口

主端口和从端口是Smart Link组中的两个端口角色。当Smart Link组中的两个端口都处于up状态时，主端口将优先进入转发状态，而从端口将保持待命状态。但是，主端口并不一直处于转发状态，而从端口也并不一直处于待命状态。当主端口所在链路发生故障时，从端口将切换为转发状态。

如图1-1 所示，Device C和Device D各自的端口Port1为主端口，Port2为从端口。

3. 主链路/从链路

我们把主端口所在的链路称为主链路，从端口所在的链路称为从链路。

4. Flush报文

当Smart Link组发生链路切换时，原有的转发表项将不适用于新的拓扑网络，需要网络中的所有设备进行MAC地址转发表项和ARP/ND表项的更新。这时，Smart Link组通过发送Flush报文通知其它设备进行MAC地址转发表项和ARP/ND表项的刷新操作。Flush报文是普通的组播数据报文，会被阻塞的接收端口丢弃。

5. 保护VLAN

保护VLAN是Smart Link组控制其转发状态的用户数据VLAN。同一端口上不同的Smart Link组保护不同的VLAN。端口在保护VLAN上的转发状态由端口在其所属Smart Link组内的状态决定。

6. 发送控制VLAN

发送控制VLAN是用于发送Flush报文的VLAN。当发生链路切换时，设备（如图1-1 中的Device C和Device D）会在发送控制VLAN内广播发送Flush报文。

7. 接收控制VLAN

接收控制VLAN是用于接收并处理Flush报文的VLAN。当发生链路切换时，设备（如图1-1 中的Device A、Device B和Device E）接收并处理属于接收控制VLAN的Flush报文，进行MAC地址转发表项和ARP/ND表项的刷新操作。

1.1.3 Smart Link运行机制

1. 链路备份机制

在图1-1 所示的组网中，Device C的端口Port1所在的链路是主链路，Port2所在的链路是从链路。正常情况下，Port1处于转发状态，Port2处于待命状态。当主链路出现故障时，Port1将自动阻塞并切换到待命状态，Port2将切换到转发状态。

当端口切换到转发状态时，系统会输出日志信息通知用户。

2. 网络拓扑变更机制

当Smart Link发生链路切换时，网络中各设备上的MAC地址转发表项和ARP/ND表项可能已经不是最新状态，为了保证报文的正确发送，需要提供一种MAC地址转发表项和ARP/ND表项的更新机制。目前更新机制有以下两种：

l 自动通过流量刷新MAC地址转发表项和ARP/ND表项。此方式适用于与不支持Smart Link功能的设备（包括其他厂商设备）对接的情况，需要有上行流量触发。

l 由Smart Link设备从新的链路上发送Flush报文。此方式需要上行的设备都能够识别Smart Link的Flush报文并进行更新MAC地址转发表项和ARP/ND表项的处理。

3. 角色抢占机制

在图1-1 所示的组网中，Device C的端口Port1所在的链路是主链路，Port2所在的链路是从链路。当主链路出现故障时，Port1将自动阻塞并切换到待命状态，Port2则从待命状态切换到转发状态。当主链路恢复后：

l 在非角色抢占模式下，Port1仍将维持在阻塞状态，不进行链路状态切换，从而保持流量稳定。只有等下一次链路切换时，该端口才会重新切换回转发状态。

l 在角色抢占模式下，Port2将自动阻塞并切换到待命状态，而Port1则切换回转发状态。

4. 负载分担机制

在同一个环网中，可能同时存在多个VLAN的数据流量，Smart Link可以实现流量的负载分担，即不同VLAN的流量沿不同Smart Link组所确定的路径进行转发。

通过把一个端口配置为多个Smart Link组的成员端口（每个Smart Link组的保护VLAN不同），且该端口在不同Smart Link组中的转发状态不同，这样就能实现不同VLAN的数据流量的转发路径不同，从而达到负载分担的目的。

每个Smart Link组的保护VLAN是通过引用MSTI（Multiple Spanning Tree Instance，多生成树实例）来实现的。

1.1.4 Smart Link联动机制

1. 端口检测联动机制

当上游设备的上行链路发生故障以及故障恢复时，下游设备上的Smart Link无法感知到这个变化。Monitor Link则可以通过监控上游设备的上行端口，根据其up/down状态的变化来触发下行端口up/down状态的变化，从而触发下游设备上的Smart Link进行链路切换。

有关Monitor Link的详细介绍和配置，请参见“可靠性配置指导”中的“Monitor Link”。

2. 链路检测联动机制

当上行链路上的中间传输设备或传输链路发生故障（如光纤链路发生单通、错纤、丢包等故障）以及故障排除时，Smart Link本身无法感知到这个变化。Smart Link端口需要通过专门的链路检测协议来检测端口的链路状态，当链路检测协议检测到故障发生或故障恢复时就通知Smart Link进行链路切换。

当端口与CFD（Connectivity Fault Detection，连通错误检测）的CC（Continuity Check，连续性检测）机制联动时，CFD按照检测VLAN和检测端口来通知故障检测事件，只有当端口所在Smart Link组的控制VLAN与检测VLAN一致时，才响应此CC事件。

有关CFD CC机制的详细介绍和配置，请参见“可靠性配置指导”中的“CFD”。


1.2 Smart Link配置任务简介

表1-1 Smart Link配置任务简介

配置任务 |  | 说明 | 详细配置
配置Smart Link设备 | 配置Smart Link组的保护VLAN | 必选 | 1.3.2
 | 配置Smart Link组的成员端口 | 必选 | 1.3.3
 | 配置抢占功能 | 可选 | 1.3.4
 | 使能发送Flush报文功能 | 可选 | 1.3.5
 | 配置与CFD CC机制联动 | 可选 | 1.3.6
配置相关设备 | 使能接收Flush报文功能 | 必选 | 1.4.2

l Smart Link设备是指支持Smart Link功能、且配置了Smart Link组和从指定控制VLAN发送Flush报文功能的设备，如 图1-1 中的Device C和Device D。

l 相关设备是指支持Smart Link功能、在实际应用中为配合Smart Link设备而需使能从指定控制VLAN接收Flush报文功能的设备，如 图1-1 中的Device A、Device B和Device E。


1.3 配置Smart Link设备

1.3.1 配置准备

如果欲配置某端口为Smart Link组的成员端口（主端口或从端口）：

l 需先手工关闭该端口，并待Smart Link组配置完成后再开启该端口，以避免形成环路，导致广播风暴；

l 需先关闭该端口的生成树协议和RRPP功能，并确保该端口不是聚合成员端口或业务环回组成员端口。

在关闭生成树协议之后到Smart Link开始工作之前，网络中可能会形成环路。

1.3.2 配置Smart Link组的保护VLAN

由于保护VLAN的配置是通过引用MSTI来实现的，因此在配置保护VLAN之前，应先配置好MSTI与所要保护的VLAN之间的映射关系（在PVST模式下，系统会自动将VLAN与MSTI进行映射）。有关MSTI和PVST的详细介绍，请参见“二层技术-以太网交换配置指导”中的“生成树”。

表1-2 配置Smart Link组的保护VLAN

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入MST域视图 | stp region-configuration | 在PVST模式下无需执行本操作
配置VLAN映射表 | instance instance-id vlan vlan-list | 二者可选其一 缺省情况下，所有VLAN都映射到CIST（即MSTI 0）上 在PVST模式下无需执行本操作
 | vlan-mapping modulo modulo
激活MST域的配置 | active region-configuration | 必选 在PVST模式下无需执行本操作
显示当前生效的MST域配置信息 | display stp region-configuration [ | { begin | exclude | include } regular-expression ] | 可选 display 命令可以在任意视图执行 通过本操作可以查看MSTI所映射的VLAN
退回系统视图 | quit | 在PVST模式下无需执行本操作
创建Smart Link组，并进入Smart Link组视图 | smart-link group group-id | -
配置Smart Link组的保护VLAN | protected-vlan reference-instance instance-id-list | 必选 缺省情况下，Smart Link组不保护任何VLAN

有关 stp region-configuration、instance、vlan-mapping modulo、active region-configuration 和 display stp region-configuration 命令的详细介绍，请参见“二层技术-以太网交换命令参考”中的“生成树”。

1.3.3 配置Smart Link组的成员端口

可在Smart Link组视图或端口视图下配置Smart Link组的成员端口，各视图下的配置效果相同。

1. Smart Link组视图下的配置

表1-3 Smart Link组视图下配置Smart Link组的成员端口

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入Smart Link组视图 | smart-link group group-id | -
配置Smart Link组的成员端口 | port interface-type interface-number { master | slave } | 必选

2. 端口视图下的配置

表1-4 端口视图下配置Smart Link组的成员端口

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入二层以太网端口视图或二层聚合接口视图 | interface interface-type interface-number | -
配置Smart Link组的成员端口 | port smart-link group group-id { master | slave } | 必选

1.3.4 配置Smart Link抢占功能

表1-5 配置Smart Link抢占功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入Smart Link组视图 | smart-link group group-id | -
配置抢占模式为角色抢占模式 | preemption mode role | 必选 缺省情况下，设备工作在非抢占模式
配置抢占延时 | preemption delay delay-time | 可选 缺省情况下，抢占延时为1秒

抢占延时在配置抢占模式为角色抢占模式之后才会生效。

1.3.5 使能发送Flush报文功能

表1-6 使能发送Flush报文功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入Smart Link组视图 | smart-link group group-id | -
使能发送Flush报文的功能 | flush enable [ control-vlan vlan-id ] | 可选 缺省情况下，发送Flush报文的功能处于开启状态，且控制VLAN为VLAN 1

l 需要为不同的Smart Link组配置不同的控制VLAN。

l 用户需要配置保证控制VLAN存在，且Smart Link组的端口允许控制VLAN的报文通过。

l 某Smart Link组的控制VLAN应同时为该Smart Link组的保护VLAN，且不要将已配置为控制VLAN的VLAN删除，否则会影响Flush报文的发送。

1.3.6 配置端口与CFD CC机制联动

表1-7 配置Smart Link设备

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入二层以太网端口视图 | interface interface-type interface-number | -
配置Smart Link组的成员端口与CFD CC机制联动 | port smart-link group group-id track cfd cc | 可选 缺省情况下，Smart Link组的端口与CFD CC机制未联动

在配置Smart Link组的成员端口与CFD CC机制联动时，该端口所在Smart Link组的控制VLAN必须与CFD CC的检测VLAN相一致。


1.4 配置相关设备

1.4.1 配置准备

配置相关设备时，建议在其与Smart Link组的成员端口直接相连的端口上关闭生成树协议，以免由于网络拓扑改变时端口状态尚未迁移到Forwarding而导致Flush报文被丢弃。

1.4.2 使能接收Flush报文功能

并非需要在相关设备的所有端口上都使能从指定控制VLAN接收Flush报文功能，只有那些处于从Smart Link设备到其目的设备主、从链路上的端口才需进行此配置。

表1-8 使能接收Flush报文功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入二层以太网端口视图或二层聚合接口视图 | interface interface-type interface-number | -
使能接收Flush报文的功能 | smart-link flush enable [ control-vlan vlan-id-list ] | 必选 缺省情况下，接收Flush报文的功能处于关闭状态

l 相关设备的所有控制VLAN上都应使能接收Flush报文的功能。

l 如果不配置处理Flush报文的控制VLAN，设备将对收到的Flush报文不做处理直接转发。

l 在相关设备上配置的接收处理Flush报文的控制VLAN和在Smart Link设备上配置的发送控制VLAN要相同，若二者不相同，相关设备将对接收到的Flush报文不做处理直接转发。

l 不要将已配置为控制VLAN的VLAN删除，否则会影响Flush报文的处理。

l 用户需要配置保证控制VLAN存在，且使能接收Flush报文功能的端口允许控制VLAN的报文通过。


1.5 Smart Link显示和维护

在完成上述配置后，在任意视图下执行 display 命令可以显示配置后Smart Link的运行情况以及Flush报文的统计信息，通过查看显示信息验证配置的效果。

在用户视图下执行 reset 命令可以清除Flush报文的统计信息。

表1-9 Smart Link显示和维护

操作 | 命令
查看Smart Link组的信息 | display smart-link group { group-id | all } [ | { begin | exclude | include } regular-expression ]
查看设备收到的Flush报文信息 | display smart-link flush [ | { begin | exclude | include } regular-expression ]
清除Flush报文的统计信息 | reset smart-link statistics


1.6 Smart Link典型配置举例

1.6.1 单Smart Link组配置举例

1. 组网需求

l 在图1-2 所示的组网中，Device C和Device D为Smart Link设备，Device A、Device B和Device E为相关设备。Device C和Device D上VLAN 1～30的流量分别双上行到Device A。

l 通过配置，在Device C和Device D上分别实现双上行链路的灵活备份。

2. 组网图

图1-2 单Smart Link组配置组网图

3. 配置步骤

(1) 配置Device C

# 创建VLAN 1～30，将这些VLAN都映射到MSTI 1上，并激活MST域的配置。

<DeviceC> system-view

[DeviceC] vlan 1 to 30

[DeviceC] stp region-configuration

[DeviceC-mst-region] instance 1 vlan 1 to 30

[DeviceC-mst-region] active region-configuration

[DeviceC-mst-region] quit

# 分别关闭端口Ethernet1/0/1和Ethernet1/0/2，在这两个端口上分别关闭生成树协议，并将端口配置为Trunk端口且允许VLAN 1～30通过。

[DeviceC] interface ethernet 1/0/1

[DeviceC-Ethernet1/0/1] shutdown

[DeviceC-Ethernet1/0/1] undo stp enable

[DeviceC-Ethernet1/0/1] port link-type trunk

[DeviceC-Ethernet1/0/1] port trunk permit vlan 1 to 30

[DeviceC-Ethernet1/0/1] quit

[DeviceC] interface ethernet 1/0/2

[DeviceC-Ethernet1/0/2] shutdown

[DeviceC-Ethernet1/0/2] undo stp enable

[DeviceC-Ethernet1/0/2] port link-type trunk

[DeviceC-Ethernet1/0/2] port trunk permit vlan 1 to 30

[DeviceC-Ethernet1/0/2] quit

# 创建Smart Link组1，并配置其保护VLAN为MSTI 1所映射的VLAN。

[DeviceC] smart-link group 1

[DeviceC-smlk-group1] protected-vlan reference-instance 1

# 配置Smart Link组1的主端口为Ethernet1/0/1，从端口为Ethernet1/0/2。

[DeviceC-smlk-group1] port ethernet 1/0/1 master

[DeviceC-smlk-group1] port ethernet 1/0/2 slave

# 在Smart Link组1中使能发送Flush报文的功能，并指定发送Flush报文的控制VLAN为VLAN 10。

[DeviceC-smlk-group1] flush enable control-vlan 10

[DeviceC-smlk-group1] quit

# 重新开启端口Ethernet1/0/1和Ethernet1/0/2。

[DeviceC] interface ethernet 1/0/1

[DeviceC-Ethernet1/0/1] undo shutdown

[DeviceC-Ethernet1/0/1] quit

[DeviceC] interface ethernet 1/0/2

[DeviceC-Ethernet1/0/2] undo shutdown

[DeviceC-Ethernet1/0/2] quit

(2) 配置Device D

# 创建VLAN 1～30，将这些VLAN都映射到MSTI 1上，并激活MST域的配置。

<DeviceD> system-view

[DeviceD] vlan 1 to 30

[DeviceD] stp region-configuration

[DeviceD-mst-region] instance 1 vlan 1 to 30

[DeviceD-mst-region] active region-configuration

[DeviceD-mst-region] quit

# 分别关闭端口Ethernet1/0/1和Ethernet1/0/2，在这两个端口上分别关闭生成树协议，并将端口配置为Trunk端口且允许VLAN 1～30通过。

[DeviceD] interface ethernet 1/0/1

[DeviceD-Ethernet1/0/1] shutdown

[DeviceD-Ethernet1/0/1] undo stp enable

[DeviceD-Ethernet1/0/1] port link-type trunk

[DeviceD-Ethernet1/0/1] port trunk permit vlan 1 to 30

[DeviceD-Ethernet1/0/1] quit

[DeviceD] interface ethernet 1/0/2

[DeviceD-Ethernet1/0/2] shutdown

[DeviceD-Ethernet1/0/2] undo stp enable

[DeviceD-Ethernet1/0/2] port link-type trunk

[DeviceD-Ethernet1/0/2] port trunk permit vlan 1 to 30

[DeviceD-Ethernet1/0/2] quit

# 创建Smart Link组1，并配置其保护VLAN为MSTI 1所映射的VLAN。

[DeviceD] smart-link group 1

[DeviceD-smlk-group1] protected-vlan reference-instance 1

# 配置Smart Link组1的主端口为Ethernet1/0/1，从端口为Ethernet1/0/2。

[DeviceD-smlk-group1] port ethernet 1/0/1 master

[DeviceD-smlk-group1] port ethernet 1/0/2 slave

# 在Smart Link组1中使能发送Flush报文的功能，并指定发送Flush报文的控制VLAN为VLAN 20。

[DeviceD-smlk-group1] flush enable control-vlan 20

[DeviceD-smlk-group1] quit

# 重新开启端口Ethernet1/0/1和Ethernet1/0/2。

[DeviceD] interface ethernet 1/0/1

[DeviceD-Ethernet1/0/1] undo shutdown

[DeviceD-Ethernet1/0/1] quit

[DeviceD] interface ethernet 1/0/2

[DeviceD-Ethernet1/0/2] undo shutdown

[DeviceD-Ethernet1/0/2] quit

(3) 配置Device B

# 创建VLAN 1～30。

<DeviceB> system-view

[DeviceB] vlan 1 to 30

# 将端口Ethernet1/0/1配置为Trunk端口且允许VLAN 1～30通过，在该端口上使能接收Flush报文的功能，并指定接收Flush报文的控制VLAN为VLAN 10和20。

[DeviceB] interface ethernet 1/0/1

[DeviceB-Ethernet1/0/1] port link-type trunk

[DeviceB-Ethernet1/0/1] port trunk permit vlan 1 to 30

[DeviceB-Ethernet1/0/1] smart-link flush enable control-vlan 10 20

[DeviceB-Ethernet1/0/1] quit

# 将端口Ethernet1/0/2配置为Trunk端口且允许VLAN 1～30通过，在该端口上关闭生成树协议，使能接收Flush报文的功能，并指定接收Flush报文的控制VLAN为VLAN 20。

[DeviceB] interface ethernet 1/0/2

[DeviceB-Ethernet1/0/2] port link-type trunk

[DeviceB-Ethernet1/0/2] port trunk permit vlan 1 to 30

[DeviceB-Ethernet1/0/2] undo stp enable

[DeviceB-Ethernet1/0/2] smart-link flush enable control-vlan 20

[DeviceB-Ethernet1/0/2] quit

# 将端口Ethernet1/0/3配置为Trunk端口且允许VLAN 1～30通过，在该端口上关闭生成树协议，使能接收Flush报文的功能，并指定接收Flush报文的控制VLAN为VLAN 10。

[DeviceB] interface ethernet 1/0/3

[DeviceB-Ethernet1/0/3] port link-type trunk

[DeviceB-Ethernet1/0/3] port trunk permit vlan 1 to 30

[DeviceB-Ethernet1/0/3] undo stp enable

[DeviceB-Ethernet1/0/3] smart-link flush enable control-vlan 10

[DeviceB-Ethernet1/0/3] quit

(4) 配置Device E

# 创建VLAN 1～30。

<DeviceE> system-view

[DeviceE] vlan 1 to 30

# 将端口Ethernet1/0/1配置为Trunk端口且允许VLAN 1～30通过，在该端口上使能接收Flush报文的功能，并指定接收Flush报文的控制VLAN为VLAN 10和20。

[DeviceE] interface ethernet 1/0/1

[DeviceE-Ethernet1/0/1] port link-type trunk

[DeviceE-Ethernet1/0/1] port trunk permit vlan 1 to 30

[DeviceE-Ethernet1/0/1] smart-link flush enable control-vlan 10 20

[DeviceE-Ethernet1/0/1] quit

# 将端口Ethernet1/0/2配置为Trunk端口且允许VLAN 1～30通过，在该端口上关闭生成树协议，使能接收Flush报文的功能，并指定接收Flush报文的控制VLAN为VLAN 10。

[DeviceE] interface ethernet 1/0/2

[DeviceE-Ethernet1/0/2] port link-type trunk

[DeviceE-Ethernet1/0/2] port trunk permit vlan 1 to 30

[DeviceE-Ethernet1/0/2] undo stp enable

[DeviceE-Ethernet1/0/2] smart-link flush enable control-vlan 10

[DeviceE-Ethernet1/0/2] quit

# 将端口Ethernet1/0/3配置为Trunk端口且允许VLAN 1～30通过，在该端口上关闭生成树协议，使能接收Flush报文的功能，并指定接收Flush报文的控制VLAN为VLAN 20。

[DeviceE] interface ethernet 1/0/3

[DeviceE-Ethernet1/0/3] port link-type trunk

[DeviceE-Ethernet1/0/3] port trunk permit vlan 1 to 30

[DeviceE-Ethernet1/0/2] undo stp enable

[DeviceE-Ethernet1/0/3] smart-link flush enable control-vlan 20

[DeviceE-Ethernet1/0/3] quit

(5) 配置Device A

# 创建VLAN 1～30。

<DeviceA> system-view

[DeviceA] vlan 1 to 30

# 分别将端口Ethernet1/0/1和Ethernet1/0/2配置为Trunk端口且允许VLAN 1～30通过，在这些端口上使能接收Flush报文的功能，并指定接收Flush报文的控制VLAN为VLAN 10和20。

[DeviceA] interface ethernet 1/0/1

[DeviceA-Ethernet1/0/1] port link-type trunk

[DeviceA-Ethernet1/0/1] port trunk permit vlan 1 to 30

[DeviceA-Ethernet1/0/1] smart-link flush enable control-vlan 10 20

[DeviceA-Ethernet1/0/1] quit

[DeviceA] interface ethernet 1/0/2

[DeviceA-Ethernet1/0/2] port link-type trunk

[DeviceA-Ethernet1/0/2] port trunk permit vlan 1 to 30

[DeviceA-Ethernet1/0/2] smart-link flush enable control-vlan 10 20

[DeviceA-Ethernet1/0/2] quit

(6) 检验配置效果

通过使用 display smart-link group 命令可以查看设备上Smart Link组的信息：

# 查看Device C上Smart Link组的信息。

[DeviceC] display smart-link group 1

Smart link group 1 information:

Device ID: 000f-e23d-5af0

Preemption mode: NONE

Preemption delay: 1(s)

Control VLAN: 10

Protected VLAN: Reference Instance 1

Member Role State Flush-count Last-flush-time

----------------------------------------------------------------------

Ethernet1/0/1 MASTER ACTVIE 5 16:37:20 2010/02/21

Ethernet1/0/2 SLAVE STANDBY 1 17:45:20 2010/02/21

通过使用 display smart-link flush 命令可以查看设备上收到的Flush报文信息：

# 查看Device B上收到的Flush报文信息。

[DeviceB] display smart-link flush

Received flush packets : 5

Receiving interface of the last flush packet : Ethernet1/0/3

Receiving time of the last flush packet : 16:25:21 2009/02/21

Device ID of the last flush packet : 000f-e23d-5af0

Control VLAN of the last flush packet : 10

1.6.2 多Smart Link组负载分担配置举例

1. 组网需求

l 在图1-3 所示的组网中，Device C为Smart Link设备，Device A、Device B和Device D为相关设备。Device C上VLAN 1～200的流量通过Device B和Device D双上行到Device A。

l 通过配置，在Device C上实现双上行链路的灵活备份和负载分担：VLAN 1～100的流量经Device B向Device A转发，VLAN 101～200的流量经Device D向Device A转发。

2. 组网图

图1-3 多Smart Link组负载分担配置组网图

3. 配置步骤

(1) 配置Device C

# 创建VLAN 1～200，分别将VLAN 1～100映射到MSTI 1、VLAN 101～200映射到MSTI2上，并激活MST域的配置。

<DeviceC> system-view

[DeviceC] vlan 1 to 200

[DeviceC] stp region-configuration

[DeviceC-mst-region] instance 1 vlan 1 to 100

[DeviceC-mst-region] instance 2 vlan 101 to 200

[DeviceC-mst-region] active region-configuration

[DeviceC-mst-region] quit

# 分别关闭端口Ethernet1/0/1和Ethernet1/0/2，在这两个端口上分别关闭生成树协议，并将端口配置为Trunk端口且允许VLAN 1～200通过。

[DeviceC] interface ethernet 1/0/1

[DeviceC-Ethernet1/0/1] shutdown

[DeviceC-Ethernet1/0/1] undo stp enable

[DeviceC-Ethernet1/0/1] port link-type trunk

[DeviceC-Ethernet1/0/1] port trunk permit vlan 1 to 200

[DeviceC-Ethernet1/0/1] quit

[DeviceC] interface ethernet 1/0/2

[DeviceC-Ethernet1/0/2] shutdown

[DeviceC-Ethernet1/0/2] undo stp enable

[DeviceC-Ethernet1/0/2] port link-type trunk

[DeviceC-Ethernet1/0/2] port trunk permit vlan 1 to 200

[DeviceC-Ethernet1/0/2] quit

# 创建Smart Link组1，并配置其保护VLAN为MSTI 1所映射的VLAN。

[DeviceC] smart-link group 1

[DeviceC-smlk-group1] protected-vlan reference-instance 1

# 配置Smart Link组1的主端口为Ethernet1/0/1，从端口为Ethernet1/0/2。

[DeviceC-smlk-group1] port ethernet 1/0/1 master

[DeviceC-smlk-group1] port ethernet 1/0/2 slave

# 在Smart Link组1中配置抢占模式为角色抢占模式；使能发送Flush报文的功能，并指定发送Flush报文的控制VLAN为VLAN 10。

[DeviceC-smlk-group1] preemption mode role

[DeviceC-smlk-group1] flush enable control-vlan 10

[DeviceC-smlk-group1] quit

# 创建Smart Link组2，并配置其保护VLAN为MSTI 2所映射的VLAN。

[DeviceC] smart-link group 2

[DeviceC-smlk-group2] protected-vlan reference-instance 2

# 配置Smart Link组2的主端口为Ethernet1/0/2，从端口为Ethernet1/0/1。

[DeviceC-smlk-group2] port ethernet 1/0/2 master

[DeviceC-smlk-group2] port ethernet 1/0/1 slave

# 在Smart Link组2中配置抢占模式为角色抢占模式；使能发送Flush报文的功能，并指定发送Flush报文的控制VLAN为VLAN 110。

[DeviceC-smlk-group2] preemption mode role

[DeviceC-smlk-group2] flush enable control-vlan 110

[DeviceC-smlk-group2] quit

# 重新开启端口Ethernet1/0/1和Ethernet1/0/2。

[DeviceC] interface ethernet 1/0/1

[DeviceC-Ethernet1/0/1] undo shutdown

[DeviceC-Ethernet1/0/1] quit

[DeviceC] interface ethernet 1/0/2

[DeviceC-Ethernet1/0/2] undo shutdown

[DeviceC-Ethernet1/0/2] quit

(2) 配置Device B

# 创建VLAN 1～200。

<DeviceB> system-view

[DeviceB] vlan 1 to 200

# 将端口Ethernet1/0/1配置为Trunk端口且允许VLAN 1～200通过，在该端口上使能接收Flush报文的功能，并指定接收Flush报文的控制VLAN为VLAN 10和110。

[DeviceB] interface ethernet 1/0/1

[DeviceB-Ethernet1/0/1] port link-type trunk

[DeviceB-Ethernet1/0/1] port trunk permit vlan 1 to 200

[DeviceB-Ethernet1/0/1] smart-link flush enable control-vlan 10 110

[DeviceB-Ethernet1/0/1] quit

# 将端口Ethernet1/0/2配置为Trunk端口且允许VLAN 1～200通过，在该端口上关闭生成树协议，使能接收Flush报文的功能，并指定接收Flush报文的控制VLAN为VLAN 10和110。

[DeviceB] interface ethernet 1/0/2

[DeviceB-Ethernet1/0/2] port link-type trunk

[DeviceB-Ethernet1/0/2] port trunk permit vlan 1 to 200

[DeviceB-Ethernet1/0/2] undo stp enable

[DeviceB-Ethernet1/0/2] smart-link flush enable control-vlan 10 110

[DeviceB-Ethernet1/0/2] quit

(3) 配置Device D

# 创建VLAN 1～200。

<DeviceD> system-view

[DeviceD] vlan 1 to 200

# 将端口Ethernet1/0/1配置为Trunk端口且允许VLAN 1～200通过，在该端口上使能接收Flush报文的功能，并指定接收Flush报文的控制VLAN为VLAN 10和110。

[DeviceD] interface ethernet 1/0/1

[DeviceD-Ethernet1/0/1] port link-type trunk

[DeviceD-Ethernet1/0/1] port trunk permit vlan 1 to 200

[DeviceD-Ethernet1/0/1] smart-link flush enable control-vlan 10 110

[DeviceD-Ethernet1/0/1] quit

# 将端口Ethernet1/0/2配置为Trunk端口且允许VLAN 1～200通过，在该端口上关闭生成树协议，使能接收Flush报文的功能，并指定接收Flush报文的控制VLAN为VLAN 10和110。

[DeviceD] interface ethernet 1/0/2

[DeviceD-Ethernet1/0/2] port link-type trunk

[DeviceD-Ethernet1/0/2] port trunk permit vlan 1 to 200

[DeviceD-Ethernet1/0/2] undo stp enable

[DeviceD-Ethernet1/0/2] smart-link flush enable control-vlan 10 110

[DeviceD-Ethernet1/0/2] quit

(4) 配置Device A

# 创建VLAN 1～200。

<DeviceA> system-view

[DeviceA] vlan 1 to 200

# 分别将端口Ethernet1/0/1和Ethernet1/0/2配置为Trunk端口且允许VLAN 1～200通过，在这些端口上使能接收Flush报文的功能，并指定接收Flush报文的控制VLAN为VLAN 10和110。

[DeviceA] interface ethernet 1/0/1

[DeviceA-Ethernet1/0/1] port link-type trunk

[DeviceA-Ethernet1/0/1] port trunk permit vlan 1 to 200

[DeviceA-Ethernet1/0/1] smart-link flush enable control-vlan 10 110

[DeviceA-Ethernet1/0/1] quit

[DeviceA] interface ethernet 1/0/2

[DeviceA-Ethernet1/0/2] port link-type trunk

[DeviceA-Ethernet1/0/2] port trunk permit vlan 1 to 200

[DeviceA-Ethernet1/0/2] smart-link flush enable control-vlan 10 110

[DeviceA-Ethernet1/0/2] quit

(5) 检验配置效果

通过使用 display smart-link group 命令可以查看设备上Smart Link组的信息：

# 查看Device C上Smart Link组的信息。

[DeviceC] display smart-link group all

Smart link group 1 information:

Device ID: 000f-e23d-5af0

Preemption mode: ROLE

Preemption delay: 1(s)

Control VLAN: 10

Protected VLAN: Reference Instance 1

Member Role State Flush-count Last-flush-time

----------------------------------------------------------------------

Ethernet1/0/1 MASTER ACTVIE 5 16:37:20 2010/02/21

Ethernet1/0/2 SLAVE STANDBY 1 17:45:20 2010/02/21

Smart link group 2 information:

Device ID: 000f-e23d-5af0

Preemption mode: ROLE

Preemption delay: 1(s)

Control VLAN: 110

Protected VLAN: Reference Instance 2

Member Role State Flush-count Last-flush-time

----------------------------------------------------------------------

Ethernet1/0/2 MASTER ACTVIE 5 16:37:20 2010/02/21

Ethernet1/0/1 SLAVE STANDBY 1 17:45:20 2010/02/21

通过使用 display smart-link flush 命令可以查看设备上收到的Flush报文信息：

# 查看Device B上收到的Flush报文信息。

[DeviceB] display smart-link flush

Received flush packets : 5

Receiving interface of the last flush packet : Ethernet1/0/2

Receiving time of the last flush packet : 16:25:21 2010/02/21

Device ID of the last flush packet : 000f-e23d-5af0

Control VLAN of the last flush packet : 10

1.6.3 Smart Link与CFD联动配置举例

1. 组网需求

l 在图1-4 所示的组网中，Device A～Device D组成级别为5的维护域MD；Device C为Smart Link设备，Device A、Device B和Device D为相关设备。Device C上VLAN 1～200的流量通过Device B和Device D双上行到Device A。

l 通过配置Smart Link与CFD CC机制的联动，实现：在正常情况下，VLAN 1～100的流量经Device C上Smart Link组1的主端口Ethernet1/0/1向Device A转发，VLAN 101～200的流量经Device C上Smart Link组2的主端口Ethernet1/0/2向Device A转发；当Device C与Device A之间的链路发生故障时，原本由各Smart Link组的主端口转发的流量能够快速切换到从端口，并在故障排除后再切换回主端口。

有关CFD的详细介绍和配置，请参见“可靠性配置指导”中的“CFD”。

2. 组网图

图1-4 Smart Link与CFD联动配置组网图

3. 配置步骤

(1) 配置Device A

# 创建VLAN 1～200。

<DeviceA> system-view

[DeviceA] vlan 1 to 200

# 分别将端口Ethernet1/0/1和Ethernet1/0/2配置为Trunk端口且允许VLAN 1～200通过，在这些端口上使能接收Flush报文的功能，并指定接收Flush报文的控制VLAN为VLAN 10和110。

[DeviceA] interface ethernet 1/0/1

[DeviceA-Ethernet1/0/1] port link-type trunk

[DeviceA-Ethernet1/0/1] port trunk permit vlan 1 to 200

[DeviceA-Ethernet1/0/1] smart-link flush enable control-vlan 10 110

[DeviceA-Ethernet1/0/1] quit

[DeviceA] interface ethernet 1/0/2

[DeviceA-Ethernet1/0/2] port link-type trunk

[DeviceA-Ethernet1/0/2] port trunk permit vlan 1 to 200

[DeviceA-Ethernet1/0/2] smart-link flush enable control-vlan 10 110

[DeviceA-Ethernet1/0/2] quit

# 使能CFD功能，并创建级别为5的维护域MD。

[DeviceA] cfd enable

[DeviceA] cfd md MD level 5

# 在MD中创建服务于VLAN 10的维护集MA_A，并为MD和MA_A创建服务实例1。

[DeviceA] cfd ma MA_A md MD vlan 10

[DeviceA] cfd service-instance 1 md MD ma MA_A

# 在服务实例1内配置维护端点列表，在端口Ethernet1/0/1上创建并使能服务实例1内的外向维护端点1002，并使能其CCM报文发送功能。

[DeviceA] cfd meplist 1001 1002 service-instance 1

[DeviceA] interface ethernet 1/0/1

[DeviceA-Ethernet1/0/1] cfd mep 1002 service-instance 1 outbound

[DeviceA-Ethernet1/0/1] cfd mep service-instance 1 mep 1002 enable

[DeviceA-Ethernet1/0/1] cfd cc service-instance 1 mep 1002 enable

[DeviceA-Ethernet1/0/1] quit

# 在MD中创建服务于VLAN 110的维护集MA_B，并为MD和MA_B创建服务实例2。

[DeviceA] cfd ma MA_B md MD vlan 110

[DeviceA] cfd service-instance 2 md MD ma MA_B

# 在服务实例2内配置维护端点列表，在端口Ethernet1/0/2上创建并使能服务实例2内的外向维护端点2002，并使能其CCM报文发送功能。

[DeviceA] cfd meplist 2001 2002 service-instance 2

[DeviceA] interface ethernet 1/0/2

[DeviceA-Ethernet1/0/2] cfd mep 2002 service-instance 2 outbound

[DeviceA-Ethernet1/0/2] cfd mep service-instance 2 mep 2002 enable

[DeviceA-Ethernet1/0/2] cfd cc service-instance 2 mep 2002 enable

[DeviceA-Ethernet1/0/2] quit

(2) 配置Device B

# 创建VLAN 1～200。

<DeviceB> system-view

[DeviceB] vlan 1 to 200

# 将端口Ethernet1/0/1配置为Trunk端口且允许VLAN 1～200通过，在该端口上使能接收Flush报文的功能，并指定接收Flush报文的控制VLAN为VLAN 10和110。

[DeviceB] interface ethernet 1/0/1

[DeviceB-Ethernet1/0/1] port link-type trunk

[DeviceB-Ethernet1/0/1] port trunk permit vlan 1 to 200

[DeviceB-Ethernet1/0/1] smart-link flush enable control-vlan 10 110

[DeviceB-Ethernet1/0/1] quit

# 将端口Ethernet1/0/2配置为Trunk端口且允许VLAN 1～200通过，在该端口上关闭生成树协议，使能接收Flush报文的功能，并指定接收Flush报文的控制VLAN为VLAN 10和110。

[DeviceB] interface ethernet 1/0/2

[DeviceB-Ethernet1/0/2] port link-type trunk

[DeviceB-Ethernet1/0/2] port trunk permit vlan 1 to 200

[DeviceB-Ethernet1/0/2] undo stp enable

[DeviceB-Ethernet1/0/2] smart-link flush enable control-vlan 10 110

[DeviceB-Ethernet1/0/2] quit

(3) 配置Device C

# 创建VLAN 1～200，分别将VLAN 1～100映射到MSTI 1、VLAN 101～200映射到MSTI 2上，并激活MST域的配置。

<DeviceC> system-view

[DeviceC] vlan 1 to 200

[DeviceC] stp region-configuration

[DeviceC-mst-region] instance 1 vlan 1 to 100

[DeviceC-mst-region] instance 2 vlan 101 to 200

[DeviceC-mst-region] active region-configuration

[DeviceC-mst-region] quit

# 分别关闭端口Ethernet1/0/1和Ethernet1/0/2，在这两个端口上分别关闭生成树协议，并将端口配置为Trunk端口且允许VLAN 1～200通过。

[DeviceC] interface ethernet 1/0/1

[DeviceC-Ethernet1/0/1] shutdown

[DeviceC-Ethernet1/0/1] undo stp enable

[DeviceC-Ethernet1/0/1] port link-type trunk

[DeviceC-Ethernet1/0/1] port trunk permit vlan 1 to 200

[DeviceC-Ethernet1/0/1] quit

[DeviceC] interface ethernet 1/0/2

[DeviceC-Ethernet1/0/2] shutdown

[DeviceC-Ethernet1/0/2] undo stp enable

[DeviceC-Ethernet1/0/2] port link-type trunk

[DeviceC-Ethernet1/0/2] port trunk permit vlan 1 to 200

[DeviceC-Ethernet1/0/2] quit

# 创建Smart Link组1，并配置其保护VLAN为MSTI 1所映射的VLAN。

[DeviceC] smart-link group 1

[DeviceC-smlk-group1] protected-vlan reference-instance 1

# 配置Smart Link组1的主端口为Ethernet1/0/1，从端口为Ethernet1/0/2。

[DeviceC-smlk-group1] port ethernet 1/0/1 master

[DeviceC-smlk-group1] port ethernet 1/0/2 slave

# 在Smart Link组1中配置抢占模式为角色抢占模式；使能发送Flush报文的功能，并指定发送Flush报文的控制VLAN为VLAN 10。

[DeviceC-smlk-group1] preemption mode role

[DeviceC-smlk-group1] flush enable control-vlan 10

[DeviceC-smlk-group1] quit

# 创建Smart Link组2，并配置其保护VLAN为MSTI 2所映射的VLAN。

[DeviceC] smart-link group 2

[DeviceC-smlk-group2] protected-vlan reference-instance 2

# 配置Smart Link组2的主端口为Ethernet1/0/2，从端口为Ethernet1/0/1。

[DeviceC-smlk-group2] port ethernet 1/0/2 master

[DeviceC-smlk-group2] port ethernet 1/0/1 slave

# 在Smart Link组2中配置抢占模式为角色抢占模式；使能发送Flush报文的功能，并指定发送Flush报文的控制VLAN为VLAN 110。

[DeviceC-smlk-group2] preemption mode role

[DeviceC-smlk-group2] flush enable control-vlan 110

[DeviceC-smlk-group2] quit

# 使能CFD功能，并创建级别为5的维护域MD。

[DeviceC] cfd enable

[DeviceC] cfd md MD level 5

# 在MD中创建服务于VLAN 10的维护集MA_A，并为MD和MA_A创建服务实例1。

[DeviceC] cfd ma MA_A md MD vlan 10

[DeviceC] cfd service-instance 1 md MD ma MA_A

# 在服务实例1内配置维护端点列表，在端口Ethernet1/0/1上创建并使能服务实例1内的外向维护端点1001，并使能其CCM报文发送功能。

[DeviceC] cfd meplist 1001 1002 service-instance 1

[DeviceC] interface ethernet 1/0/1

[DeviceC-Ethernet1/0/1] cfd mep 1001 service-instance 1 outbound

[DeviceC-Ethernet1/0/1] cfd mep service-instance 1 mep 1001 enable

[DeviceC-Ethernet1/0/1] cfd cc service-instance 1 mep 1001 enable

[DeviceC-Ethernet1/0/1] quit

# 在MD中创建服务于VLAN 110的维护集MA_B，并为MD和MA_B创建服务实例2。

[DeviceC] cfd ma MA_B md MD vlan 110

[DeviceC] cfd service-instance 2 md MD ma MA_B

# 在服务实例2内配置维护端点列表，在端口Ethernet1/0/2上创建并使能服务实例2内的外向维护端点2001，并使能其CCM报文发送功能。

[DeviceC] cfd meplist 2001 2002 service-instance 2

[DeviceC] interface ethernet 1/0/2

[DeviceC-Ethernet1/0/2] cfd mep 2001 service-instance 2 outbound

[DeviceC-Ethernet1/0/2] cfd mep service-instance 2 mep 2001 enable

[DeviceC-Ethernet1/0/2] cfd cc service-instance 2 mep 2001 enable

[DeviceC-Ethernet1/0/2] quit

# 配置Smart Link组1的主端口Ethernet1/0/1与CFD CC机制联动，并重新开启该端口。

[DeviceC] interface ethernet 1/0/1

[DeviceC-Ethernet1/0/1] port smart-link group 1 track cfd cc

[DeviceC-Ethernet1/0/1] undo shutdown

[DeviceC-Ethernet1/0/1] quit

# 配置Smart Link组2的主端口Ethernet1/0/2与CFD CC机制联动，并重新开启该端口。

[DeviceC] interface ethernet 1/0/2

[DeviceC-Ethernet1/0/1] port smart-link group 2 track cfd cc

[DeviceC-Ethernet1/0/2] undo shutdown

[DeviceC-Ethernet1/0/2] quit

(4) 配置Device D

# 创建VLAN 1～200。

<DeviceD> system-view

[DeviceD] vlan 1 to 200

# 将端口Ethernet1/0/1配置为Trunk端口且允许VLAN 1～200通过，在该端口上使能接收Flush报文的功能，并指定接收Flush报文的控制VLAN为VLAN 10和110。

[DeviceD] interface ethernet 1/0/1

[DeviceD-Ethernet1/0/1] port link-type trunk

[DeviceD-Ethernet1/0/1] port trunk permit vlan 1 to 200

[DeviceD-Ethernet1/0/1] smart-link flush enable control-vlan 10 110

[DeviceD-Ethernet1/0/1] quit

# 将端口Ethernet1/0/2配置为Trunk端口且允许VLAN 1～200通过，在该端口上关闭生成树协议，使能接收Flush报文的功能，并指定接收Flush报文的控制VLAN为VLAN 10和110。

[DeviceD] interface ethernet 1/0/2

[DeviceD-Ethernet1/0/2] port link-type trunk

[DeviceD-Ethernet1/0/2] port trunk permit vlan 1 to 200

[DeviceD-Ethernet1/0/2] undo stp enable

[DeviceD-Ethernet1/0/2] smart-link flush enable control-vlan 10 110

[DeviceD-Ethernet1/0/2] quit

(5) 检验配置效果

假设连接Device A与Device B的光纤发生了单通故障，通过使用 display smart-link group 命令可以查看设备上Smart Link组的信息：

# 查看Device C上Smart Link组的信息。

[DeviceC] display smart-link group all

Smart link group 1 information:

Device ID: 000f-e23d-5af0

Preemption mode: ROLE

Preemption delay: 1(s)

Control VLAN: 10

Protected VLAN: Reference Instance 1

Member Role State Flush-count Last-flush-time

-----------------------------------------------------------------------------

Ethernet1/0/1 MASTER DOWN 5 16:37:20 2010/02/21

Ethernet1/0/2 SLAVE ACTVIE 3 17:45:20 2010/02/21

Smart link group 2 information:

Device ID: 000f-e23d-5af0

Preemption mode: ROLE

Preemption delay: 1(s)

Control VLAN: 110

Protected VLAN: Reference Instance 2

Member Role State Flush-count Last-flush-time

-----------------------------------------------------------------------------

Ethernet1/0/2 MASTER ACTVIE 5 16:37:20 2010/02/21

Ethernet1/0/1 SLAVE STANDBY 1 17:45:20 2010/02/21

有此可见，Smart Link组1的主端口Ethernet1/0/1处于故障状态，而从端口Ethernet1/0/2则处于转发状态。


1 Monitor Link配置

相关链接

  • 1.1 Monitor Link简介
  • 1.2 配置Monitor Link
  • 1.3 Monitor Link显示和维护
  • 1.4 Monitor Link典型配置举例
父主题： 07-Monitor Link配置


1.1 Monitor Link简介

Monitor Link是一种端口联动方案，主要用于配合二层拓扑协议的组网应用。它通过监控设备的上行端口，根据其up/down状态的变化来触发下行端口up/down状态的变化，从而触发下游设备上的拓扑协议进行链路的切换，如图1-1 所示。

图1-1 Monitor Link应用场景示意图

1.1.2 Monitor Link概念介绍

1. Monitor Link组

Monitor Link组也叫监控链路组，每个组由上行端口和下行端口共同组成。一个Monitor Link组可以有多个上行端口或下行端口，但一个端口只能属于一个Monitor Link组。

如图1-1 所示，Device B和Device D各自的端口Port1和Port2分别组成了一个Monitor Link组，其中Port1为上行端口，Port2为下行端口。

2. 上行端口/下行端口

上行端口和下行端口是Monitor Link组中的两个端口角色：

l 上行端口又称为Uplink端口，是Monitor Link组中被监控的端口，Monitor Link组的状态与之保持联动。当Monitor Link组中没有上行端口或所有上行端口都down时，Monitor Link组就处于down状态；而只要有一个上行端口up，Monitor Link组就处于up状态。

l 下行端口又称为Downlink端口，是Monitor Link组中的监控端口，其状态与Monitor Link组的状态保持联动。当Monitor Link组的up/down状态发生改变时，下行端口的状态就会发生相应的改变，从而与Monitor Link组的状态保持一致。

3. 上行链路/下行链路

我们把上行端口所在的链路称为上行链路（Uplink），下行端口所在的链路称为下行链路（Downlink）。

1.1.3 Monitor Link运行机制

每个Monitor Link组独立进行上行端口的监控和下行端口的联动。当Monitor Link组中没有上行端口或所有上行端口都down时，Monitor Link组就处于down状态，并将强制使其所有下行端口的状态都变为down；而只要有一个上行端口由down变为up，Monitor Link组的状态就恢复为up，并使其所有下行端口的状态都恢复为up。

建议用户不要通过端口开关命令来干预Monitor Link组中下行端口的状态。


1.2 配置Monitor Link

1.2.1 配置准备

如果欲配置某端口为Monitor Link组的成员端口（上行端口或下行端口），需确保该端口不是聚合成员端口或业务环回组成员端口。

1.2.2 创建Monitor Link组

表1-1 创建Monitor Link组

操作 | 命令 | 说明
进入系统视图 | system-view | -
创建Monitor Link组，并进入Monitor Link组视图 | monitor-link group group-id | 必选

1.2.3 配置Monitor Link组的成员端口

可在Monitor Link组视图或端口视图下配置Monitor Link组的成员端口，各视图下的配置效果相同。

1. Monitor Link组视图下的配置

表1-2 Monitor Link组视图下配置Monitor Link组的成员端口

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入Monitor Link组视图 | monitor-link group group-id | -
配置Monitor Link组的成员端口 | port interface-type interface-number { uplink | downlink } | 必选

2. 端口视图下的配置

表1-3 端口视图下配置Monitor Link组的成员端口

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入二层以太网端口或二层聚合接口视图 | interface interface-type interface-number | -
配置Monitor Link组的成员端口 | port monitor-link group group-id { uplink | downlink } | 必选

l Monitor Link组的成员端口可以是二层以太网端口或二层聚合接口。

l 一个端口只能属于一个Monitor Link组。

l 建议先配置Monitor Link的上行端口，以避免下行端口出现不必要的down/up状态变化。


1.3 Monitor Link显示和维护

在完成上述配置后，在任意视图下执行 display 命令可以显示配置后Monitor Link组的运行情况。

表1-4 Monitor Link显示和维护

操作 | 命令
查看Monitor Link组的信息 | display monitor-link group { group-id | all } [ | { begin | exclude | include } regular-expression ]


1.4 Monitor Link典型配置举例

1. 组网需求

l 在图1-2 所示的组网中，Device C为Smart Link设备，Device A、Device B和Device D为相关设备。Device C上VLAN 1～30的流量通过Smart Link组双上行到Device A。

l 通过配置，在Device C上实现双上行链路的灵活备份，并且当Device A与Device B（或Device D）之间出现链路故障时，Device C能够感知到这个故障并完成其上行链路的切换。

有关Smart Link的详细介绍和配置，请参见“可靠性配置指导”中的“Smart Link”。

2. 组网图

图1-2 Monitor Link典型配置组网图

3. 配置步骤

(1) 配置Device C

# 创建VLAN 1～30，将这些VLAN都映射到MSTI 1上，并激活MST域的配置。

<DeviceC> system-view

[DeviceC] vlan 1 to 30

[DeviceC] stp region-configuration

[DeviceC-mst-region] instance 1 vlan 1 30

[DeviceC-mst-region] active region-configuration

[DeviceC-mst-region] quit

# 在端口Ethernet1/0/1和Ethernet1/0/2上分别关闭生成树协议，并将端口配置为Trunk端口且允许VLAN 1～30通过。

[DeviceC] interface ethernet 1/0/1

[DeviceC-Ethernet1/0/1] undo stp enable

[DeviceC-Ethernet1/0/1] port link-type trunk

[DeviceC-Ethernet1/0/1] port trunk permit vlan 1 to 30

[DeviceC-Ethernet1/0/1] quit

[DeviceC] interface ethernet 1/0/2

[DeviceC-Ethernet1/0/2] undo stp enable

[DeviceC-Ethernet1/0/2] port link-type trunk

[DeviceC-Ethernet1/0/2] port trunk permit vlan 1 to 30

[DeviceC-Ethernet1/0/2] quit

# 创建Smart Link组1，并配置其保护VLAN为MSTI 1所映射的VLAN。

[DeviceC] smart-link group 1

[DeviceC-smlk-group1] protected-vlan reference-instance 1

# 配置Smart Link组1的主端口为Ethernet1/0/1，副端口为Ethernet1/0/2。

[DeviceC-smlk-group1] port ethernet 1/0/1 master

[DeviceC-smlk-group1] port ethernet 1/0/2 slave

# 在Smart Link组1中使能发送Flush报文的功能。

[DeviceC-smlk-group1] flush enable

[DeviceC-smlk-group1] quit

(2) 配置Device A

# 创建VLAN 1～30。

<DeviceA> system-view

[DeviceA] vlan 1 to 30

# 分别将端口Ethernet1/0/1和Ethernet1/0/2配置为Trunk端口且允许VLAN 1～30通过，并在这些端口上都使能接收Flush报文的功能。

[DeviceA] interface ethernet 1/0/1

[DeviceA-Ethernet1/0/1] port link-type trunk

[DeviceA-Ethernet1/0/1] port trunk permit vlan 1 to 30

[DeviceA-Ethernet1/0/1] smart-link flush enable

[DeviceA-Ethernet1/0/1] quit

[DeviceA] interface ethernet 1/0/2

[DeviceA-Ethernet1/0/2] port link-type trunk

[DeviceA-Ethernet1/0/2] port trunk permit vlan 1 to 30

[DeviceA-Ethernet1/0/2] smart-link flush enable

[DeviceA-Ethernet1/0/2] quit

(3) 配置Device B

# 创建VLAN 1～30。

<DeviceB> system-view

[DeviceB] vlan 1 to 30

# 将端口Ethernet1/0/1配置为Trunk端口且允许VLAN 1～30通过，并在该端口上使能接收Flush报文的功能。

[DeviceB] interface ethernet 1/0/1

[DeviceB-Ethernet1/0/1] port link-type trunk

[DeviceB-Ethernet1/0/1] port trunk permit vlan 1 to 30

[DeviceB-Ethernet1/0/1] smart-link flush enable

[DeviceB-Ethernet1/0/1] quit

# 将端口Ethernet1/0/2配置为Trunk端口且允许VLAN 1～30通过，在该端口上关闭生成树协议，并使能接收Flush报文的功能。

[DeviceB] interface ethernet 1/0/2

[DeviceB-Ethernet1/0/2] port link-type trunk

[DeviceB-Ethernet1/0/2] port trunk permit vlan 1 to 30

[DeviceB-Ethernet1/0/2] undo stp enable

[DeviceB-Ethernet1/0/2] smart-link flush enable

[DeviceB-Ethernet1/0/2] quit

# 创建Monitor Link组1，并配置该组的上行端口为Ethernet1/0/1，下行端口为Ethernet1/0/2。

[DeviceB] monitor-link group 1

[DeviceB-mtlk-group1] port ethernet 1/0/1 uplink

[DeviceB-mtlk-group1] port ethernet 1/0/2 downlink

[DeviceB-mtlk-group1] quit

(4) 配置Device D

# 创建VLAN 1～30。

<DeviceD> system-view

[DeviceD] vlan 1 to 30

# 将端口Ethernet1/0/1配置为Trunk端口且允许VLAN 1～30通过，并在该端口上使能接收Flush报文的功能。

[DeviceD] interface ethernet 1/0/1

[DeviceD-Ethernet1/0/1] port link-type trunk

[DeviceD-Ethernet1/0/1] port trunk permit vlan 1 to 30

[DeviceD-Ethernet1/0/1] smart-link flush enable

[DeviceD-Ethernet1/0/1] quit

# 将端口Ethernet1/0/2配置为Trunk端口且允许VLAN 1～30通过，在该端口上关闭生成树协议，并使能接收Flush报文的功能。

[DeviceD] interface ethernet 1/0/2

[DeviceD-Ethernet1/0/2] port link-type trunk

[DeviceD-Ethernet1/0/2] port trunk permit vlan 1 to 30

[DeviceD-Ethernet1/0/2] undo stp enable

[DeviceD-Ethernet1/0/2] smart-link flush enable

[DeviceD-Ethernet1/0/2] quit

# 创建Monitor Link组1，并配置该组的上行端口为Ethernet1/0/1，下行端口为Ethernet1/0/2。

[DeviceD] monitor-link group 1

[DeviceD-mtlk-group1] port ethernet 1/0/1 uplink

[DeviceD-mtlk-group1] port ethernet 1/0/2 downlink

[DeviceD-mtlk-group1] quit

(5) 检验配置效果

通过使用 display monitor-link group 命令可以查看各设备上Monitor Link组的信息。例如当Device A的端口Ethernet1/0/2由于链路故障而down掉时：

# 查看Device B上Monitor Link组1的信息。

[DeviceB] display monitor-link group 1

Monitor link group 1 information:

Group status: UP

Last-up-time: 16:37:20 2011/4/21

Last-down-time: 16:35:26 2011/4/21

Member Role Status

------------------------------------------

Ethernet1/0/1 UPLINK UP

Ethernet1/0/2 DOWNLINK UP

# 查看Device D上Monitor Link组1的信息。

[DeviceD] display monitor-link group 1

Monitor link group 1 information:

Group status: DOWN

Last-up-time: 16:35:27 2011/4/21

Last-down-time: 16:37:19 2011/4/21

Member Role Status

------------------------------------------

Ethernet1/0/1 UPLINK DOWN

Ethernet1/0/2 DOWNLINK DOWN


1 VRRP配置

l 本章所指的路由器代表了一般意义下的路由器，以及运行了路由协议的三层交换机。为提高可读性，在手册的描述中将不另行说明。

l VRRP功能中所指的“接口”为三层口，包括VLAN接口、三层以太网端口等。三层以太网端口是指被配置为三层模式的以太网端口，有关以太网端口模式切换的操作，请参见“二层技术-以太网交换配置指导”中的“以太网端口配置”。

l 加入聚合组的接口上不能配置VRRP。

相关链接

  • 1.1 VRRP简介
  • 1.2 VRRP标准协议模式
  • 1.3 VRRP负载均衡模式
  • 1.4 配置基于IPv4的VRRP
  • 1.5 配置基于IPv6的VRRP
  • 1.6 基于IPv4的VRRP典型配置举例
  • 1.7 基于IPv6的VRRP典型配置举例
  • 1.8 VRRP常见错误配置举例
父主题： 08-VRRP配置


1.1 VRRP简介

如图1-1 所示，通常，同一网段内的所有主机上都存在一条相同的、以网关为下一跳的缺省路由。主机发往其他网段的报文将通过缺省路由发往网关，再由网关进行转发，从而实现主机与外部网络的通信。当网关发生故障时，本网段内所有以网关为缺省路由的主机将无法与外部网络通信。

图1-1 局域网组网方案

缺省路由为用户的配置操作提供了方便，但是对缺省网关设备提出了很高的稳定性要求。增加出口网关是提高系统可靠性的常见方法，此时如何在多个出口之间进行选路就成为需要解决的问题。

VRRP（Virtual Router Redundancy Protocol，虚拟路由器冗余协议）将可以承担网关功能的一组路由器加入到备份组中，形成一台虚拟路由器，由VRRP的选举机制决定哪台路由器承担转发任务，局域网内的主机只需将虚拟路由器配置为缺省网关。

VRRP是一种容错协议，在提高可靠性的同时，简化了主机的配置。在具有多播或广播能力的局域网（如以太网）中，借助VRRP能在某台路由器出现故障时仍然提供高可靠的缺省链路，有效避免单一链路发生故障后网络中断的问题，而无需修改动态路由协议、路由发现协议等配置信息。

设备支持两种模式的VRRP：

l 标准协议模式：基于RFC实现的VRRPv2和VRRPv3。其中，VRRPv2基于IPv4，VRRPv3基于IPv6。VRRPv2和VRRPv3在功能实现上并没有区别，只是应用的网络环境不同，详细介绍请参见“1.2 VRRP标准协议模式”。

l 负载均衡模式：在标准协议模式的基础上进行了扩展，实现了负载均衡功能，详细介绍请参见“1.3 VRRP负载均衡模式”。


1.2 VRRP标准协议模式

1.2.1 VRRP备份组简介

VRRP将局域网内的一组路由器划分在一起，称为一个备份组。备份组由一个Master路由器和多个Backup路由器组成，功能上相当于一台虚拟路由器。

VRRP备份组具有以下特点：

l 虚拟路由器具有IP地址，称为虚拟IP地址。局域网内的主机仅需要知道这个虚拟路由器的IP地址，并将其设置为缺省路由的下一跳地址。

l 网络内的主机通过这个虚拟路由器与外部网络进行通信。

l 备份组内的路由器根据优先级，选举出Master路由器，承担网关功能。其他路由器作为Backup路由器，当Master路由器发生故障时，取代Master继续履行网关职责，从而保证网络内的主机不间断地与外部网络进行通信。

图1-2 VRRP组网示意图

如图1-2 所示，Router A、Router B和Router C组成一个虚拟路由器。此虚拟路由器有自己的IP地址。局域网内的主机将虚拟路由器设置为缺省网关。Router A、Router B和Router C中优先级最高的路由器作为Master路由器，承担网关的功能。其余两台路由器作为Backup路由器。

l 虚拟路由器的IP地址可以是备份组所在网段中未被分配的IP地址，也可以和备份组内的某个路由器的接口IP地址相同。接口IP地址与虚拟IP地址相同的路由器被称为“IP地址拥有者”。

l 在同一个VRRP备份组中，只允许配置一个IP地址拥有者。

l 路由器在备份组中的状态可以为Master、Backup和Initialize。

1. 备份组中路由器的优先级

VRRP根据优先级来确定备份组中每台路由器的角色（Master路由器或Backup路由器）。优先级越高，则越有可能成为Master路由器。

VRRP优先级的取值范围为0到255（数值越大表明优先级越高），可配置的范围是1到254，优先级0为系统保留给特殊用途来使用，255则是系统保留给IP地址拥有者。当路由器为IP地址拥有者时，其优先级始终为255。因此，当备份组内存在IP地址拥有者时，只要其工作正常，则为Master路由器。

2. 备份组中路由器的工作方式

备份组中的路由器具有以下两种工作方式：

l 非抢占方式：如果备份组中的路由器工作在非抢占方式下，则只要Master路由器没有出现故障，Backup路由器即使随后被配置了更高的优先级也不会成为Master路由器。

l 抢占方式：如果备份组中的路由器工作在抢占方式下，它一旦发现自己的优先级比当前的Master路由器的优先级高，就会对外发送VRRP通告报文。导致备份组内路由器重新选举Master路由器，并最终取代原有的Master路由器。相应地，原来的Master路由器将会变成Backup路由器。

3. 备份组中路由器的认证方式

为了防止非法用户构造报文攻击备份组，VRRP通过在VRRP报文中增加认证字的方式，验证接收到的VRRP报文。VRRP提供了两种认证方式：

l simple：简单字符认证。发送VRRP报文的路由器将认证字填入到VRRP报文中，而收到VRRP报文的路由器会将收到的VRRP报文中的认证字和本地配置的认证字进行比较。如果认证字相同，则认为接收到的报文是真实、合法的VRRP报文；否则认为接收到的报文是一个非法报文。

l md5：MD5认证。发送VRRP报文的路由器利用认证字和MD5算法对VRRP报文进行摘要运算，运算结果保存在Authentication Header（认证头）中。收到VRRP报文的路由器会利用认证字和MD5算法进行同样的运算，并将运算结果与认证头的内容进行比较。如果相同，则认为接收到的报文是真实、合法的VRRP报文；否则认为接收到的报文是一个非法报文。

在一个安全的网络中，用户也可以不设置认证方式。

1.2.2 VRRP定时器

VRRP定时器分为两种：VRRP通告报文间隔时间定时器和VRRP抢占延迟时间定时器。

1. VRRP通告报文时间间隔定时器

VRRP备份组中的Master路由器会定时发送VRRP通告报文，通知备份组内的路由器自己工作正常。

用户可以通过设置VRRP定时器来调整Master路由器发送VRRP通告报文的时间间隔。如果Backup路由器在等待了3个间隔时间后，依然没有收到VRRP通告报文，则认为自己是Master路由器，并对外发送VRRP通告报文，重新进行Master路由器的选举。

2. VRRP抢占延迟时间定时器

为了避免备份组内的成员频繁进行主备状态转换，让Backup路由器有足够的时间搜集必要的信息（如路由信息），Backup路由器接收到优先级低于本地优先级的通告报文后，不会立即抢占成为Master，而是等待一定时间——抢占延迟时间后，才会对外发送VRRP通告报文取代原来的Master路由器。

1.2.3 VRRP报文格式

Master路由器以组播的方式定时发送VRRP报文通告它的存在。这些报文可以用来检测虚拟路由器的各种参数，还可以用于Master路由器的选举。

VRRP报文封装在IP报文中，协议号为112。VRRPv2的报文格式如图1-3 所示，VRRPv3的报文格式如图1-4 所示。

图1-3 VRRPv2的报文格式

图1-4 VRRPv3的报文格式

各字段解释如下：

l Version：协议版本号。VRRPv2对应的版本号为2；VRRPv3对应的版本号为3。

l Type：VRRP报文的类型。VRRPv2和VRRPv3报文只有一种类型，即VRRP通告报文（Advertisement），该字段取值为1。

l Virtual Rtr ID（VRID）：虚拟路由器号（即备份组号），取值范围1～255。

l Priority：路由器在备份组中的优先级，取值范围0～255，数值越大表明优先级越高。

l Count IP Addrs/Count IPv6 Addrs：备份组虚拟IP地址的个数。1个备份组可对应多个虚拟IP地址。

l Auth Type：认证类型。该值为0表示无认证，为1表示简单字符认证，为2表示MD5认证。VRRPv3不支持MD5认证。

l Adver Int：发送通告报文的时间间隔。VRRPv2中单位为秒，缺省为1秒；VRRPv3中单位为厘秒，缺省为100厘秒。

l Checksum：16位校验和，用于检测VRRP报文中的数据破坏情况。

l IP Address/IPv6 Address：备份组虚拟IP地址表项。所包含的地址数定义在Count IP Addrs/Count IPv6 Addrs字段。

l Authentication Data：验证字，目前只用于简单字符认证，对于其它认证方式一律填0。

1.2.4 VRRP工作过程

VRRP的工作过程如下：

(1) 备份组中的路由器根据优先级确定自己在备份组中的角色。优先级高的路由器成为Master路由器；优先级低的成为Backup路由器。Master路由器定期发送VRRP通告报文，通知备份组内的其他路由器自己工作正常；Backup路由器则启动定时器等待通告报文的到来。

(2) 在抢占方式下，当Backup路由器收到VRRP通告报文后，会将自己的优先级与通告报文中的优先级进行比较。如果大于通告报文中的优先级，则成为Master路由器；否则将保持Backup状态。抢占方式可以确保承担转发任务的Master路由器始终是备份组中优先级最高的路由器。

(3) 在非抢占方式下，只要Master路由器没有出现故障，备份组中的路由器始终保持Master或Backup状态，Backup路由器即使随后被配置了更高的优先级也不会成为Master路由器。非抢占方式可以避免频繁地切换Master路由器。

(4) 如果Backup路由器的定时器超时后仍未收到Master路由器发送来的VRRP通告报文，则认为Master路由器已经无法正常工作，此时Backup路由器会认为自己是Master路由器，并对外发送VRRP通告报文。备份组内的路由器根据优先级选举出Master路由器，承担报文的转发功能。

l 由于路由器上备份组的配置不一致、网络故障等原因造成备份组中存在多个Master路由器时，这些Master路由器会根据优先级和IP地址选举出一个Master：优先级高的路由器成为Master；优先级低的成为Backup；如果优先级相同，则IP地址大的成为Master。

l Backup路由器接收到VRRP通告报文后，只会将自己的优先级与通告报文中的优先级进行比较，不会比较IP地址。只有自己的优先级大于通告报文中的优先级时，才会抢占成为Master。

1.2.5 VRRP监视功能

配置VRRP监视功能时，需要配置备份组中的路由器工作在抢占方式，以保证只有优先级最高的路由器才能成为Master、承担转发任务。

1. 监视指定接口功能

VRRP的监视接口功能更好地扩充了备份功能：不仅能在备份组中某路由器的接口出现故障时提供备份功能，还能在路由器的其它接口（如连接上行链路的接口）不可用时提供备份功能。

路由器连接上行链路的接口出现故障时，备份组无法感知上行链路接口的故障，如果该路由器此时处于Master状态，将会导致局域网内的主机无法访问外部网络。通过监视指定接口的功能，可以解决该问题。当连接上行链路的接口处于Down或Removed状态时，路由器主动降低自己的优先级，使得备份组内其它路由器的优先级高于这个路由器，以便优先级最高的路由器成为Master，承担转发任务。

2. 监视Track项功能

通过VRRP监视Track项功能，可以实现：

l 根据上行链路的状态，改变路由器的优先级。当上行链路出现故障，局域网内的主机无法通过路由器访问外部网络时，被监视Track项的状态为Negative，并将路由器的优先级降低指定的数额。从而，使得备份组内其它路由器的优先级高于这个路由器的优先级，成为Master路由器，保证局域网内主机与外部网络的通信不会中断。

l 在Backup路由器上监视Master路由器的状态。当Master路由器出现故障时，工作在切换模式的Backup路由器能够迅速成为Master路由器，以保证通信不会中断。

Track项的详细介绍，请参见“可靠性配置指导”中的“Track”。

1.2.6 VRRP应用（以基于IPv4的VRRP为例）

1. 主备备份

主备备份方式表示转发任务仅由Master路由器承担。当Master路由器出现故障时，才会从其他Backup路由器选举出一个接替工作。主备备份方式仅需要一个备份组，不同路由器在该备份组中拥有不同优先级，优先级最高的路由器将成为Master路由器，如图1-5 中所示。

图1-5 主备备份VRRP

初始情况下，Router A为Master路由器并承担转发任务，Router B和Router C是Backup路由器且都处于就绪监听状态。如果Router A发生故障，则备份组内处于Backup状态的Router B和Router C路由器将根据优先级选出一个新的Master路由器，这个新Master路由器继续向网络内的主机提供路由服务。

2. 负载分担

在路由器的一个接口上可以创建多个备份组，使得该路由器可以在一个备份组中作为Master路由器，在其他的备份组中作为Backup路由器。

负载分担方式是指多台路由器同时承担业务，因此负载分担方式需要两个或者两个以上的备份组，每个备份组都包括一个Master路由器和若干个Backup路由器，各备份组的Master路由器各不相同，如图1-6 中所示。

图1-6 负载分担VRRP

同一台路由器同时加入多个VRRP备份组，在不同备份组中有不同的优先级。

在图1-6 中，有三个备份组存在：

l 备份组1：对应虚拟路由器1。Router A作为Master路由器，Router B和Router C作为Backup路由器。

l 备份组2：对应虚拟路由器2。Router B作为Master路由器，Router A和Router C作为Backup路由器。

l 备份组3：对应虚拟路由器3。Router C作为Master路由器，Router A和Router B作为Backup路由器。

为了实现业务流量在Router A、Router B和Router C之间进行负载分担，需要将局域网内的主机的缺省网关分别设置为虚拟路由器1、2和3。在配置优先级时，需要确保三个备份组中各路由器的VRRP优先级形成交叉对应。


1.3 VRRP负载均衡模式

1.3.1 VRRP负载均衡模式概述

在VRRP标准协议模式中，只有Master路由器可以转发报文，Backup路由器处于监听状态，无法转发报文。虽然创建多个备份组可以实现多个路由器之间的负载分担，但是局域网内的主机需要设置不同的网关，增加了配置的复杂性。

VRRP负载均衡模式在VRRP提供的虚拟网关冗余备份功能基础上，增加了负载均衡功能。其实现原理为：将一个虚拟IP地址与多个虚拟MAC地址对应，VRRP备份组中的每个路由器都对应一个虚拟MAC地址；使用不同的虚拟MAC地址应答主机的ARP（IPv4网络中）/ND（IPv6网络中）请求，从而使得不同主机的流量发送到不同的路由器，备份组中的每个路由器都能转发流量。在VRRP负载均衡模式中，只需创建一个备份组，就可以实现备份组中多个路由器之间的负载分担，避免了VRRP备份组中Backup路由器始终处于空闲状态、网络资源利用率不高的问题。

VRRP负载均衡模式以VRRP标准协议模式为基础，VRRP标准协议模式中的工作机制（如Master路由器的选举、抢占、监视功能等），VRRP负载均衡模式均支持。VRRP负载均衡模式还在此基础上，增加了新的工作机制，详见下面的介绍。

1.3.2 虚拟MAC地址的分配

VRRP负载均衡模式中，Master路由器负责为备份组中的路由器分配虚拟MAC地址，并为来自不同主机的ARP/ND请求，应答不同的虚拟MAC地址，从而实现流量在多个路由器之间分担。备份组中的Backup路由器不会应答主机的ARP/ND请求。

以IPv4网络为例，VRRP负载均衡模式的具体工作过程为：

(1) Master为备份组中的路由器（包括Master自身）分配虚拟MAC地址。如图1-7 所示，虚拟IP地址为10.1.1.1/24的备份组中，Router A作为Master，Router B作为Backup。Router A为自己分配的虚拟MAC地址为000f-e2ff-0011，为Router B分配的虚拟MAC地址为000f-e2ff-0012。

图1-7 Master分配虚拟MAC地址

(2) Master接收到主机发送的目标IP地址为虚拟IP地址的ARP请求后，根据负载均衡算法使用不同的虚拟MAC地址应答主机的ARP请求。如图1-8 所示，Host A发送ARP请求获取网关10.1.1.1对应的MAC地址时，Master（即Router A）使用Router A的虚拟MAC地址应答该请求；Host B发送ARP请求获取网关10.1.1.1对应的MAC地址时，Master使用Router B的虚拟MAC地址应答该请求。

图1-8 Master应答ARP请求

(3) 通过使用不同的虚拟MAC地址应答主机的ARP请求，可以实现不同主机的流量发送给不同的路由器。如图1-9 所示，Host A认为网关的MAC地址为Router A的虚拟MAC地址，从而保证Host A的流量通过Router A转发；Host B认为网关的MAC地址为Router B的虚拟MAC地址，从而保证Host B的流量通过Router B转发。

图1-9 主机通过不同路由器转发流量

1.3.3 虚拟转发器

1. 虚拟转发器的创建

虚拟MAC地址的分配，实现了不同主机将流量发送给备份组中不同的路由器。为了使备份组中的路由器能够转发主机发送的流量，需要在路由器上创建虚拟转发器。每个虚拟转发器都对应备份组的一个虚拟MAC地址，负责转发目的MAC地址为该虚拟MAC地址的流量。

虚拟转发器的创建过程为：

(1) 备份组中的路由器获取到Master为其分配的虚拟MAC地址后，创建该MAC地址对应的虚拟转发器，该路由器称为此虚拟MAC地址对应虚拟转发器的VF Owner（Virtual Forwarder Owner，虚拟转发器拥有者）。

(2) 该路由器将虚拟转发器的信息通告给备份组内其他的路由器。

(3) 备份组内的路由器接收到虚拟转发器信息后，在本地创建该虚拟MAC地址对应的虚拟转发器。

由此可见，备份组中的路由器上不仅需要创建Master为其分配的虚拟MAC地址对应的虚拟转发器，还需要创建其他路由器通告的虚拟MAC地址对应的虚拟转发器。

2. 虚拟转发器的权重和优先级

虚拟转发器的权重标识了路由器的转发能力。权重值越高，路由器的转发能力越强。当权重低于一定的值——失效下限时，路由器无法再为主机转发流量。

虚拟转发器的优先级用来决定虚拟转发器的状态：不同路由器上同一个虚拟MAC地址对应的虚拟转发器中，优先级最高的虚拟转发器处于Active状态，称为AVF（Active Virtual Forwarder），负责转发流量；其他虚拟转发器处于Listening状态，称为LVF（Listening Virtual Forwarder），监听AVF的状态。虚拟转发器的优先级取值范围为0～255，其中，255保留给VF Owner使用。如果VF Owner的权重高于或等于失效下限，则VF Owner的优先级为最高值255。

设备根据虚拟转发器的权重计算虚拟转发器的优先级：

l 如果权重高于或等于失效下限，且设备为VF Owner，则虚拟转发器的优先级为最高值255；

l 如果权重高于或等于失效下限，且设备不是VF Owner，则虚拟转发器的优先级为权重/（本地AVF的数目＋1）；

l 如果权重低于失效下限，则虚拟转发器的优先级为0。

3. 虚拟转发器备份

备份组中不同路由器上同一个虚拟MAC地址对应的虚拟转发器之间形成备份关系。

图1-10 虚拟转发器

图1-10 举例说明了备份组中每个路由器上的虚拟转发器信息及其备份关系。Master路由器Router A为自己、Router B、Router C分配的虚拟MAC地址分别为000f-e2ff-0011、000f-e2ff-0012和000f-e2ff-0013。虚拟MAC地址对应的虚拟转发器分别为VF 1、VF 2和VF 3。在Router A、Router B和Router C上都创建了这三个虚拟转发器，并形成备份关系。例如，Router A、Router B和Router C上的VF 1互相备份：

l Router A为VF 1的VF Owner，Router A上VF 1的虚拟转发器优先级为最高值255。因此，Router A上的VF 1作为AVF，负责转发目的MAC地址为虚拟MAC地址000f-e2ff-0011的流量。

l Router B和Router C上VF 1的虚拟转发器优先级为：权重255/（本地AVF数目1＋1）＝127，低于Router A上VF 1的优先级。因此，Router B和Router C上的VF 1作为LVF，监视Router A上VF 1的状态。

l 当Router A上的VF 1出现故障时，将从Router B和Router C上的VF 1中选举出虚拟转发器优先级最高的LVF作为AVF，负责转发目的MAC地址为虚拟MAC地址000f-e2ff-0011的流量。

虚拟转发器始终工作在抢占模式。对于不同路由器上互相备份的LVF和AVF，如果LVF接收到AVF发送的虚拟转发器信息中虚拟转发器优先级低于本地虚拟转发器优先级，则LVF将会抢占成为AVF。

4. 虚拟转发器的定时器

虚拟转发器的AVF出现故障后，接替其工作的新的AVF将为该VF创建Redirect Timer和Timeout Timer两个定时器。

l Redirect Timer：VF重定向定时器。该定时器超时前，Master路由器还会采用该VF对应的虚拟MAC地址应答主机的ARP/ND请求；该定时器超时后，Master路由器不再采用该VF对应的虚拟MAC地址应答主机的ARP/ND请求。如果VF Owner在Redirect Timer超时前恢复，则VF Owner可以迅速参与流量的负载分担。

l Timeout Timer：VF生存定时器，即AVF接替VF Owner工作的期限。该定时器超时前，备份组中的路由器上都保留该VF，AVF负责转发目的MAC地址为该VF对应虚拟MAC地址的报文；该定时器超时后，备份组中的路由器上都删除该VF，不再转发目的MAC地址为该VF对应虚拟MAC地址的报文。

5. 虚拟转发器监视功能

AVF负责转发目的MAC地址为虚拟转发器MAC地址的流量，当AVF连接的上行链路出现故障时，如果不能及时通知LVF接替其工作，局域网中以此虚拟转发器MAC地址为网关MAC地址的主机将无法访问外部网络。

虚拟转发器的监视功能可以解决上述问题。利用NQA（Network Quality Analyzer，网络质量分析）、BFD（Bidirectional Forwarding Detection，双向转发检测）等监测AVF连接的上行链路的状态，并通过Track功能在虚拟转发器和NQA/BFD之间建立联动。当上行链路出现故障，Track项的状态变为Negative，虚拟转发器的权重将降低指定的数额，以便虚拟转发器优先级更高的路由器抢占成为AVF，接替其转发流量。

虚拟转发器监视功能还可以用来在LVF上通过Track监视AVF的状态，当AVF出现故障时，工作在虚拟转发器快速切换模式的LVF能够迅速成为AVF，以保证通信不会中断。

1.3.4 VRRP负载均衡模式的报文

VRRP标准协议模式中只定义了一种报文——VRRP通告报文，且只有Master路由器周期性发送该报文，Backup路由器不会发送VRRP通告报文。

为了实现负载均衡，VRRP负载均衡模式中定义了四种报文：

l Advertisement报文：不仅用于通告本路由器上备份组的状态，还用于通告本路由器上处于Active状态的虚拟转发器信息。Master和Backup路由器均周期性发送该报文。

l Request报文：处于Backup状态的路由器如果不是VF Owner，则发送Request报文，请求Master路由器为其分配虚拟MAC地址。

l Reply报文：Master路由器接收到Request报文后，将通过Reply报文为Backup路由器分配虚拟MAC地址。收到Reply报文后，Backup路由器会创建虚拟MAC地址对应的虚拟转发器，该路由器称为此虚拟转发器的拥有者。

l Release报文：VF Owner的失效时间达到一定值后，接替其工作的路由器将发送Release报文，通知备份组中的路由器删除VF Owner对应的虚拟转发器。

上述报文的格式与VRRP标准协议模式中定义的报文格式类似，只是在其基础上增加了选项字段，用来携带实现负载均衡所需要的信息。


1.4 配置基于IPv4的VRRP

1.4.1 基于IPv4的VRRP配置任务简介

在备份组内的每个路由器上都需进行配置，才能形成一个备份组。

表1-1 VRRP配置任务简介

配置任务 | 说明 | 详细配置
配置VRRP的工作模式 | 可选 | 1.4.2
配置虚拟IP地址对应的MAC地址的类型 | 可选 本配置在VRRP负载均衡模式下不生效 | 1.4.3
创建备份组并配置虚拟IP地址 | 必选 | 1.4.4
配置备份组优先级、抢占方式及监视功能 | 可选 | 1.4.5
配置虚拟转发器监视功能 | 可选 本配置仅在VRRP负载均衡模式下生效 | 1.4.6
配置VRRP报文的相关属性 | 可选 | 1.4.7
开启VRRP的Trap功能 | 可选 | 1.4.8

1.4.2 配置VRRP的工作模式

VRRP具有两种工作模式：

l 标准协议模式：VRRP备份组中只有Master路由器负责转发报文。

l 负载均衡模式：VRRP备份组中所有存在AVF的路由器（可以是Master，也可以是Backup）都可以转发报文，实现负载均衡。

配置VRRP的工作模式后，路由器上所有的VRRP备份组都工作在该模式。

表1-2 配置VRRP的工作模式

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置VRRP工作在标准协议模式 | undo vrrp mode | 二者选择其一 缺省情况下，VRRP工作在标准协议模式
配置VRRP工作在负载均衡模式 | vrrp mode load-balance

1.4.3 配置虚拟IP地址对应的MAC地址的类型

配置虚拟IP地址对应的MAC地址的类型后，Master路由器将根据配置的MAC地址类型，选择发送报文的源MAC地址，并采用指定类型的MAC地址应答主机的ARP请求，以便内部网络的主机学习到IP地址和MAC地址的对应关系。

虚拟IP地址对应的MAC地址类型有两种：

l 虚拟MAC地址：缺省情况下，创建备份组后，会自动生成与之对应的虚拟MAC地址，虚拟IP地址与此虚拟MAC地址对应。如果采用这种对应关系，Master路由器改变时，内部网络的主机不需要更新IP地址与MAC地址的绑定。

l 接口的实际MAC地址：当备份组中存在IP地址拥有者时，如果配置虚拟IP地址和虚拟MAC地址对应，会造成一个IP地址对应两个MAC地址。因此用户可以配置备份组虚拟IP地址和接口的实际MAC地址对应，主机发送的报文将按照实际MAC地址转发给IP地址拥有者。

表1-3 配置虚拟IP地址对应的MAC地址的类型

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置虚拟IP地址对应的MAC地址的类型 | vrrp method { real-mac | virtual-mac } | 可选 缺省情况下，采用虚拟MAC地址和虚拟IP地址对应

l 本配置在负载均衡模式下不会生效。无论如何配置虚拟IP地址对应的MAC地址的类型，在负载均衡模式下，始终是虚拟IP地址与虚拟MAC地址对应。

l 本配置需要在备份组创建之前就进行设定。如果路由器上已经创建了备份组，则不允许修改虚拟IP地址对应的MAC地址的类型。

l 如果一台设备的多个接口上创建了相同编号的备份组，且这些备份组的VRRP通告报文都需要通过QinQ网络发送，则建议采用接口的实际MAC地址与虚拟IP地址对应，否则可能会导致网络不通。

1.4.4 创建备份组并配置虚拟IP地址

创建VRRP备份组的同时，需要配置备份组的虚拟IP地址。如果接口连接多个子网，则可以为一个备份组配置多个虚拟IP地址，以便实现不同子网中路由器的备份。

为备份组指定第一个虚拟IP地址时，VRRP备份组就会自动生成。以后用户再给这个备份组指定虚拟IP地址时，VRRP备份组仅将这个IP地址添加到它的备份组虚拟IP地址列表中。

建议不要在Super VLAN对应的VLAN接口下创建VRRP备份组，以免对网络性能造成影响。

1. 配置准备

在接口上创建备份组并配置虚拟IP地址之前，需要配置接口的IP地址，并且保证随后配置的虚拟IP地址与接口的IP地址在同一网段。

2. 创建备份组并配置虚拟IP地址

表1-4 创建备份组并配置虚拟IP地址

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
创建备份组，并配置备份组的虚拟IP地址 | vrrp vrid virtual-router-id virtual-ip virtual-address | 必选 缺省情况下，没有创建备份组

l VRRP工作在标准协议模式时，备份组的虚拟IP地址可以是备份组所在网段中未被分配的IP地址，也可以和备份组内的某个路由器的接口IP地址相同。接口IP地址与虚拟IP地址相同的路由器被称为“IP地址拥有者”。

l 路由器作为IP地址拥有者时，建议不要采用接口的IP地址（即备份组的虚拟IP地址）与相邻的路由器建立OSPF邻居关系，即不要通过 network 命令在该接口上使能OSPF。network 命令的详细介绍，请参见“三层技术-IP路由命令参考”中的“OSPF”。

l VRRP工作在负载均衡模式时，虚拟IP地址不能与VRRP备份组中路由器的接口IP地址相同，即负载均衡模式的VRRP备份组中不能存在IP地址拥有者。

l 备份组中所有虚拟IP地址都被删除后，该备份组也将同时被删除掉，并且该备份组的所有配置都不再有效。

l 删除IP地址拥有者上的VRRP备份组，将导致地址冲突。建议先修改IP地址拥有者的接口IP地址，再删除该接口上的VRRP备份组，以避免地址冲突。

l 备份组的虚拟IP地址不能为全零地址(0.0.0.0)、广播地址(255.255.255.255)、环回地址、非A/B/C类地址和其它非法IP地址(如0.0.0.1)。

l 配置的虚拟IP地址和接口IP地址在同一网段，且为合法的主机地址时，备份组才能够正常工作；否则，如果配置的虚拟IP地址和接口IP地址不在同一网段，或为接口IP地址所在网段的网络地址或网络广播地址，虽然可以配置成功，但是备份组会始终处于Initialize状态，此状态下VRRP不起作用。

1.4.5 配置备份组优先级、抢占方式及监视功能

1. 配置准备

在配置备份组优先级、抢占方式及监视功能之前，需要先在接口上创建备份组并配置虚拟IP地址。

2. 配置过程

通过优先级、抢占方式和监视指定接口或Track项的配置，可以决定备份组中哪个路由器作为Master路由器。下面这些配置是可选的，可以根据实际需要进行配置。

表1-5 配置备份组优先级、抢占方式及监视功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
配置路由器在备份组中的优先级 | vrrp vrid virtual-router-id priority priority-value | 可选 缺省情况下，路由器在备份组中的优先级为100
配置备份组中的路由器工作在抢占方式，并配置抢占延迟时间 | vrrp vrid virtual-router-id preempt-mode [ timer delay delay-value ] | 可选 缺省情况下，备份组中的路由器工作在抢占方式，抢占延迟时间为0秒
配置监视指定接口 | vrrp vrid virtual-router-id track interface interface-type interface-number [ reduced priority-reduced ] | 可选 缺省情况下，没有指定被监视的接口
配置监视指定的Track项 | vrrp vrid virtual-router-id track track-entry-number [ reduced priority-reduced | switchover ] | 可选 缺省情况下，没有指定被监视的Track项

l IP地址拥有者的运行优先级始终为255，无需用户配置；IP地址拥有者始终工作在抢占方式。

l 路由器在某个备份组中作为IP地址拥有者时，如果在该路由器上配置该备份组监视指定的接口或Track项，则该配置不会生效。该路由器不再作为IP地址拥有者后，之前的配置才会生效。

l 被监视接口的状态由Down或Removed变为Up后，对应路由器的优先级数会自动恢复。

l 被监视Track项的状态由Negative变为Positive或Invalid后，对应的路由器优先级会自动恢复。

1.4.6 配置虚拟转发器监视功能

1. 配置准备

在配置虚拟转发器监视功能之前，需要先在接口上创建备份组并配置虚拟IP地址。

2. 配置过程

VRRP工作在负载均衡模式时，如果配置虚拟转发器监视Track项并指定权重降低数额，则当Track项状态为Negative时，路由器上所有虚拟转发器的权重都将降低指定的数额；被监视的Track项状态由Negative变为Positive或Invalid后，路由器中所有虚拟转发器的权重会自动恢复。如果配置LVF通过Track功能监视AVF的状态，则当Track项状态为Negative时，LVF会马上切换为AVF，从而避免流量长时间中断。

表1-6 配置虚拟转发器监视功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
配置虚拟转发器监视指定的Track项，并指定权重降低的数额 | vrrp vrid virtual-router-id weight track track-entry-number [ reduced weight-reduced ] | 二者至少选择其一 缺省情况下，没有配置虚拟转发器的监视功能
配置LVF通过Track功能监视AVF的状态 | vrrp vrid virtual-router-id track track-entry-number forwarder-switchover member-ip ip-address

l 在VRRP标准协议模式和负载均衡模式下均可配置虚拟转发器监视功能，但只有在VRRP负载模式下虚拟转发器监视功能才会起作用。

l 缺省情况下，虚拟转发器的权重为255；虚拟转发器的失效下限为10。

l 由于VF Owner的权重高于或等于失效下限时，它的优先级始终为255，不会根据虚拟转发器的权重改变，因此只有配置的权重降低数额能够保证监视的上行链路出现故障时VF Owner的权重低于失效下限，即权重降低的数额大于245，其他的虚拟转发器才能接替VF Owner成为AVF。

1.4.7 配置VRRP报文的相关属性

1. 配置准备

在配置VRRP报文的相关属性之前，需要先在接口上创建备份组并配置虚拟IP地址。

2. 配置过程

表1-7 配置VRRP报文的相关属性

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
配置备份组发送和接收VRRP报文的认证方式和认证字 | vrrp vrid virtual-router-id authentication-mode { md5 | simple } key | 可选 缺省情况下，不进行认证
配置备份组中Master路由器发送VRRP通告报文的时间间隔 | vrrp vrid virtual-router-id timer advertise adver-interval | 可选 缺省情况下，备份组中Master路由器发送VRRP通告报文的时间间隔为1秒
禁止检查VRRP报文的TTL域 | vrrp un-check ttl | 可选 缺省情况下，检查VRRP报文的TTL域 进行此配置之前，不需要创建备份组

l 一个接口上的不同备份组可以设置不同的认证方式和认证字；加入同一备份组的成员需要设置相同的认证方式和认证字。

l 网络流量过大可能会导致Backup路由器在指定时间内没有收到Master的VRRP通告报文，而发生状态转换。可以通过将VRRP通告报文的发送时间间隔延长的办法来解决该问题。

l 备份组中不同路由器上配置的VRRP通告报文发送时间间隔不同，也可能会导致Backup路由器在指定时间内没有收到Master的VRRP通告报文，而发生状态转换。可以通过修改路由器上的VRRP通告报文发送时间间隔、使得备份组中所有路由器上该值相同的方法来解决此问题。

1.4.8 开启VRRP的Trap功能

开启VRRP模块的Trap功能后，该模块会生成级别为errors的Trap报文，用于报告该模块的重要事件。生成的Trap报文将被发送到设备的信息中心，通过设置信息中心的参数，最终决定Trap报文的输出规则（即是否允许输出以及输出方向）。（有关信息中心参数的配置请参见“网络管理和监控配置指导”中的“信息中心”。）

表1-8 开启VRRP的Trap功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
开启VRRP模块的Trap功能 | snmp-agent trap enable vrrp [ authfailure | newmaster ] | 可选 缺省情况下，VRRP模块的Trap功能处于开启状态

snmp-agent trap enable vrrp 命令的详细介绍请参见“网络管理和监控命令参考/SNMP”中的 snmp-agent trap enable 命令。

1.4.9 基于IPv4的VRRP显示和维护

在完成上述配置后，在任意视图下执行 display 命令可以显示基于IPv4的VRRP配置后的运行情况，通过查看显示信息验证配置的效果。

在用户视图下执行 reset 命令可以清除基于IPv4的VRRP统计信息。

表1-9 VRRP显示和维护

操作 | 命令
显示VRRP备份组的状态信息 | display vrrp [ verbose ] [ interface interface-type interface-number [ vrid virtual-router-id ] ] [ | { begin | exclude | include } regular-expression ]
显示VRRP备份组的统计信息 | display vrrp statistics [ interface interface-type interface-number [ vrid virtual-router-id ] ] [ | { begin | exclude | include } regular-expression ]
清除VRRP备份组的统计信息 | reset vrrp statistics [ interface interface-type interface-number [ vrid virtual-router-id ] ]


1.5 配置基于IPv6的VRRP

1.5.1 基于IPv6的VRRP配置任务简介

在备份组内的每个路由器上都需进行配置，才能形成一个备份组。

表1-10 VRRP配置任务简介

配置任务 | 说明 | 详细配置
配置VRRP的工作模式 | 可选 | 1.4.2
配置虚拟IPv6地址对应的MAC地址的类型 | 可选 本配置在VRRP负载均衡模式下不生效 | 1.5.2
创建VRRP备份组并配置虚拟IPv6地址 | 必选 | 1.5.3
配置备份组优先级、抢占方式及监视功能 | 可选 | 1.5.4
配置虚拟转发器监视功能 | 可选 本配置仅在VRRP负载均衡模式下生效 | 1.5.5
配置VRRP报文的相关属性 | 可选 | 1.5.6

1.5.2 配置虚拟IPv6地址对应的MAC地址的类型

配置虚拟IPv6地址对应的MAC地址的类型后，Master路由器将根据配置的MAC地址类型，选择发送报文的源MAC地址，并采用指定类型的MAC地址应答主机的ND请求，以便内部网络的主机学习到IPv6地址和MAC地址的对应关系。

虚拟IPv6地址对应的MAC地址类型有两种：

l 虚拟MAC地址：缺省情况下，创建备份组后，会自动生成与之对应的虚拟MAC地址，虚拟IPv6地址与此虚拟MAC地址对应。如果采用这种对应关系，Master路由器改变时，内部网络的主机不需要更新IPv6地址与MAC地址的绑定。

l 接口的实际MAC地址：当备份组中存在IP地址拥有者时，如果配置虚拟IPv6地址和虚拟MAC地址对应，会造成一个IPv6地址对应两个MAC地址。因此用户可以配置备份组虚拟IPv6地址和实际MAC地址对应，主机发送的报文将按照实际MAC地址转发给IP地址拥有者。

表1-11 配置虚拟IPv6地址对应的MAC地址的类型

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置虚拟IPv6地址对应的MAC地址的类型 | vrrp ipv6 method { real-mac | virtual-mac } | 可选 缺省情况下，采用备份组的虚拟MAC地址和虚拟IPv6地址对应

l 本配置在负载均衡模式下不会生效，无论如何配置虚拟IPv6地址对应的MAC地址的类型，在负载均衡模式下，始终是虚拟IPv6地址与虚拟MAC地址对应。

l 本配置需要在备份组创建之前就进行设定。如果路由器上已经创建了备份组，则不允许修改虚拟IPv6地址对应的MAC地址的类型。

1.5.3 创建备份组并配置虚拟IPv6地址

创建VRRP备份组的同时，需要配置备份组的虚拟IPv6地址。可以为一个备份组配置多个虚拟IPv6地址。

为备份组指定第一个虚拟IPv6地址时，VRRP备份组就会自动生成。以后用户再给这个备份组指定虚拟IPv6地址时，VRRP备份组仅仅将这个IPv6地址添加到它的备份组虚拟IPv6地址列表中。

建议不要在Super VLAN对应的VLAN接口下创建VRRP备份组，以免对网络性能造成影响。

1. 配置准备

在接口上创建备份组并配置虚拟IPv6地址之前，需要配置接口的IPv6地址，并且保证随后配置的虚拟IPv6地址与接口的IPv6地址在同一网段。

2. 创建备份组并配置虚拟IPv6地址

表1-12 创建备份组并配置虚拟IPv6地址

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
创建备份组，并配置备份组的虚拟IPv6地址，该虚拟IPv6地址为链路本地地址 | vrrp ipv6 vrid virtual-router-id virtual-ip virtual-address link-local | 必选 缺省情况下，没有创建备份组 备份组的第一个虚拟IPv6地址必须是链路本地地址，并且每个备份组只允许有一个链路本地地址，该地址必须最后一个删除
配置备份组的虚拟IPv6地址，该虚拟IPv6地址为全球单播地址 | vrrp ipv6 vrid virtual-router-id virtual-ip virtual-address | 可选 缺省情况下，没有为备份组指定全球单播地址类型的虚拟IPv6地址

l 路由器作为IP地址拥有者时，建议不要采用接口的IPv6地址（即备份组的虚拟IPv6地址）与相邻的路由器建立OSPFv3邻居关系，即不要通过 ospfv3 area 命令在该接口上使能OSPFv3协议。ospfv3 area 命令的详细介绍，请参见“三层技术-IP路由命令参考”中的“OSPFv3”。

l VRRP工作在负载均衡模式时，虚拟IPv6地址不能与VRRP备份组中路由器的接口IPv6地址相同，即负载均衡模式的VRRP备份组中不能存在IP地址拥有者。

l 备份组中所有虚拟IPv6地址都被删除后，该备份组也将同时被删除掉，并且该备份组的所有配置都不再有效。

l 删除IP地址拥有者上的VRRP备份组，将导致地址冲突。建议先修改IP地址拥有者的接口IPv6地址，再删除该接口上的VRRP备份组，以避免地址冲突。

1.5.4 配置备份组优先级、抢占方式及监视功能

1. 配置准备

在配置备份组优先级、抢占方式及监视功能之前，需要先在接口上创建备份组并配置虚拟IPv6地址。

2. 配置过程

通过优先级、抢占方式和监视指定接口或Track项的配置，可以决定备份组中哪个路由器作为Master路由器。下面这些配置是可选的，可以根据实际需要进行配置。

表1-13 配置备份组优先级、抢占方式及监视指定接口

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
配置路由器在备份组中的优先级 | vrrp ipv6 vrid virtual-router-id priority priority-value | 可选 缺省情况下，路由器在备份组中的优先级为100
配置备份组中的路由器工作在抢占方式，并配置抢占延迟时间 | vrrp ipv6 vrid virtual-router-id preempt-mode [ timer delay delay-value ] | 可选 缺省情况下，备份组中的路由器工作在抢占方式，抢占延迟时间为0秒
配置监视指定接口 | vrrp ipv6 vrid virtual-router-id track interface interface-type interface-number [ reduced priority-reduced ] | 可选 缺省情况下，没有指定被监视的接口
配置监视指定的Track项 | vrrp ipv6 vrid virtual-router-id track track-entry-number [ reduced priority-reduced | switchover ] | 可选 缺省情况下，没有指定被监视的Track项

l IP地址拥有者的运行优先级始终为255，无需用户配置；IP地址拥有者始终工作在抢占方式。

l 路由器在某个备份组中作为IP地址拥有者时，如果在该路由器上配置该备份组监视指定的接口或Track项，则该配置不会生效。该路由器不再作为IP地址拥有者后，之前的配置才会生效。

l 被监视接口的状态由Down或Removed变为Up后，对应路由器的优先级数会自动恢复。

l 被监视Track项的状态由Negative变为Positive或Invalid后，对应的路由器优先级会自动恢复。

1.5.5 配置虚拟转发器监视功能

1. 配置准备

在配置虚拟转发器监视功能之前，需要先在接口上创建备份组并配置虚拟IPv6地址。

2. 配置过程

VRRP工作在负载均衡模式时，如果配置虚拟转发器监视Track项并指定权重降低的数额，则当Track项状态为Negative时，路由器上所有虚拟转发器的权重都将降低指定的数额；被监视的Track项状态由Negative变为Positive或Invalid后，路由器中所有虚拟转发器的权重会自动恢复。如果配置LVF通过Track功能监视AVF的状态，则当Track项状态为Negative时，LVF会马上切换为AVF，从而避免流量长时间中断。

表1-14 配置虚拟转发器监视功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
配置虚拟转发器监视指定的Track项，并指定权重降低的数额 | vrrp ipv6 vrid virtual-router-id weight track track-entry-number [ reduced weight-reduced ] | 二者至少选择其一 缺省情况下，没有配置虚拟转发器的监视功能
配置LVF通过Track功能监视AVF的状态 | vrrp ipv6 vrid virtual-router-id track track-entry-number forwarder-switchover member-ip ipv6-address

l 在VRRP标准模式和负载均衡模式均可配置虚拟转发器监视功能，但只有在VRRP负载模式下虚拟转发器监视功能才会起作用。

l 缺省情况下，虚拟转发器的权重为255；虚拟转发器的失效下限为10。

l 由于VF Owner的权重高于或等于失效下限时，它的优先级始终为255，不会根据虚拟转发器的权重改变，因此只有配置的权重降低数额能够保证监视的上行链路出现故障时VF Owner的权重低于失效下限，即权重降低的数额大于245，其他的虚拟转发器才能接替VF Owner成为AVF。

1.5.6 配置VRRP报文的相关属性

1. 配置准备

在配置VRRP报文的相关属性之前，需要先在接口上创建备份组并配置虚拟IPv6地址。

2. 配置过程

表1-15 配置VRRP报文的相关属性

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
配置备份组发送和接收VRRP报文的认证方式和认证字 | vrrp ipv6 vrid virtual-router-id authentication-mode simple key | 可选 缺省情况下，不进行认证
配置备份组中Master路由器发送VRRP通告报文的时间间隔 | vrrp ipv6 vrid virtual-router-id timer advertise adver-interval | 可选 缺省情况下，备份组中Master路由器发送VRRP通告报文的时间间隔为100厘秒

l 一个接口上的不同备份组可以设置不同的认证方式和认证字；加入同一备份组的成员需要设置相同的认证方式和认证字。

l 网络流量过大可能会导致Backup路由器在指定时间内没有收到Master的VRRP通告报文，而发生状态转换。可以通过将VRRP通告报文的发送时间间隔延长的办法来解决该问题。

l 备份组中不同路由器上配置的VRRP通告报文发送时间间隔不同，也可能会导致Backup路由器在指定时间内没有收到Master的VRRP通告报文，而发生状态转换。可以通过修改路由器上的VRRP通告报文发送时间间隔、使得备份组中所有路由器上该值相同的方法来解决此问题。

1.5.7 基于IPv6的VRRP显示和维护

在完成上述配置后，在任意视图下执行 display 命令可以显示基于IPv6的VRRP配置后的运行情况，通过查看显示信息验证配置的效果。

在用户视图下执行 reset 命令可以清除基于IPv6的VRRP统计信息。

表1-16 VRRP显示和维护

操作 | 命令
显示VRRP备份组的状态信息 | display vrrp ipv6 [ verbose ] [ interface interface-type interface-number [ vrid virtual-router-id ] ] [ | { begin | exclude | include } regular-expression ]
显示VRRP备份组的统计信息 | display vrrp ipv6 statistics [ interface interface-type interface-number [ vrid virtual-router-id ] ] [ | { begin | exclude | include } regular-expression ]
清除VRRP备份组的统计信息 | reset vrrp ipv6 statistics [ interface interface-type interface-number [ vrid virtual-router-id ] ]


1.6 基于IPv4的VRRP典型配置举例

1.6.1 VRRP单备份组配置举例

1. 组网需求

l Host A需要访问Internet上的Host B，Host A的缺省网关为202.38.160.111/24；

l Switch A和Switch B属于虚拟IP地址为202.38.160.111/24的备份组1；

l 当Switch A正常工作时，Host A发送给Host B的报文通过Switch A转发；当Switch A出现故障时，Host A发送给Host B的报文通过Switch B转发。

2. 组网图

图1-11 VRRP单备份组配置组网图

3. 配置步骤

(1) 配置Switch A

# 配置VLAN2。

<SwitchA> system-view

[SwitchA] vlan 2

[SwitchA-vlan2] port ethernet 1/0/5

[SwitchA-vlan2] quit

[SwitchA] interface vlan-interface 2

[SwitchA-Vlan-interface2] ip address 202.38.160.1 255.255.255.0

# 创建备份组1，并配置备份组1的虚拟IP地址为202.38.160.111。

[SwitchA-Vlan-interface2] vrrp vrid 1 virtual-ip 202.38.160.111

# 设置Switch A在备份组1中的优先级为110，高于Switch B的优先级100，以保证Switch A成为Master负责转发流量。

[SwitchA-Vlan-interface2] vrrp vrid 1 priority 110

# 设置Switch A工作在抢占方式，以保证Switch A故障恢复后，能再次抢占成为Master，即只要Switch A正常工作，就由Switch A负责转发流量。为了避免频繁地进行状态切换，配置抢占延迟时间为5秒。

[SwitchA-Vlan-interface2] vrrp vrid 1 preempt-mode timer delay 5

(2) 配置Switch B

# 配置VLAN2。

<SwitchB> system-view

[SwitchB] vlan 2

[SwitchB-Vlan2] port ethernet 1/0/5

[SwitchB-vlan2] quit

[SwitchB] interface vlan-interface 2

[SwitchB-Vlan-interface2] ip address 202.38.160.2 255.255.255.0

# 创建备份组1，并配置备份组1的虚拟IP地址为202.38.160.111。

[SwitchB-Vlan-interface2] vrrp vrid 1 virtual-ip 202.38.160.111

# 设置Switch B工作在抢占方式，抢占延迟时间为5秒。

[SwitchB-Vlan-interface2] vrrp vrid 1 preempt-mode timer delay 5

(3) 验证配置结果

配置完成后，在Host A上可以ping通Host B。通过 display vrrp verbose 命令查看配置后的结果。

# 显示Switch A上备份组1的详细信息。

[SwitchA-Vlan-interface2] display vrrp verbose

IPv4 Standby Information:

Run Mode : Standard

Run Method : Virtual MAC

Total number of virtual routers : 1

Interface Vlan-interface2

VRID : 1 Adver Timer : 1

Admin Status : Up State : Master

Config Pri : 110 Running Pri : 110

Preempt Mode : Yes Delay Time : 5

Auth Type : None

Virtual IP : 202.38.160.111

Virtual MAC : 0000-5e00-0101

Master IP : 202.38.160.1

# 显示Switch B上备份组1的详细信息。

[SwitchB-Vlan-interface2] display vrrp verbose

IPv4 Standby Information:

Run Mode : Standard

Run Method : Virtual MAC

Total number of virtual routers : 1

Interface Vlan-interface2

VRID : 1 Adver Timer : 1

Admin Status : Up State : Backup

Config Pri : 100 Running Pri : 100

Preempt Mode : Yes Delay Time : 5

Become Master : 4200ms left

Auth Type : None

Virtual IP : 202.38.160.111

Master IP : 202.38.160.1

以上显示信息表示在备份组1中Switch A为Master路由器，Switch B为Backup路由器，Host A发送给Host B的报文通过Switch A转发。

Switch A出现故障后，在Host A上仍然可以ping通Host B。通过 display vrrp verbose 命令查看Switch B上备份组的详细信息。

# Switch A出现故障后，显示Switch B上备份组1的详细信息。

[SwitchB-Vlan-interface2] display vrrp verbose

IPv4 Standby Information:

Run Mode : Standard

Run Method : Virtual MAC

Total number of virtual routers : 1

Interface Vlan-interface2

VRID : 1 Adver Timer : 1

Admin Status : Up State : Master

Config Pri : 100 Running Pri : 100

Preempt Mode : Yes Delay Time : 5

Auth Type : None

Virtual IP : 202.38.160.111

Virtual MAC : 0000-5e00-0101

Master IP : 202.38.160.2

以上显示信息表示Switch A出现故障后，Switch B成为Master路由器，Host A发送给Host B的报文通过Switch B转发。

# Switch A故障恢复后，显示Switch A上备份组1的详细信息。

[SwitchA-Vlan-interface2] display vrrp verbose

IPv4 Standby Information:

Run Mode : Standard

Run Method : Virtual MAC

Total number of virtual routers : 1

Interface Vlan-interface2

VRID : 1 Adver Timer : 1

Admin Status : Up State : Master

Config Pri : 110 Running Pri : 110

Preempt Mode : Yes Delay Time : 5

Auth Type : None

Virtual IP : 202.38.160.111

Virtual MAC : 0000-5e00-0101

Master IP : 202.38.160.1

以上显示信息表示Switch A故障恢复后，Switch A会抢占成为Master，Host A发送给Host B的报文仍然通过Switch A转发。

1.6.2 VRRP监视接口配置举例

1. 组网需求

l Host A需要访问Internet上的Host B，Host A的缺省网关为202.38.160.111/24；

l Switch A和Switch B属于虚拟IP地址为202.38.160.111/24的备份组1；

l 当Switch A正常工作时，Host A发送给Host B的报文通过Switch A转发；当Switch A连接Internet的VLAN接口3不可用时，Host A发送给Host B的报文通过Switch B转发；

l 为了防止非法用户构造报文攻击备份组，通过简单字符认证方法验证备份组1中的VRRP报文，认证字为hello。

2. 组网图

图1-12 VRRP监视接口配置组网图

3. 配置步骤

(1) 配置Switch A

# 配置VLAN2。

<SwitchA> system-view

[SwitchA] vlan 2

[SwitchA-vlan2] port ethernet 1/0/5

[SwitchA-vlan2] quit

[SwitchA] interface vlan-interface 2

[SwitchA-Vlan-interface2] ip address 202.38.160.1 255.255.255.0

# 创建备份组1，并配置备份组1的虚拟IP地址为202.38.160.111。

[SwitchA-Vlan-interface2] vrrp vrid 1 virtual-ip 202.38.160.111

# 设置Switch A在备份组中的优先级为110，高于Switch B的优先级100，以保证Switch A成为Master负责转发流量。

[SwitchA-Vlan-interface2] vrrp vrid 1 priority 110

# 设置备份组的认证方式为SIMPLE认证，认证字为hello。

[SwitchA-Vlan-interface2] vrrp vrid 1 authentication-mode simple hello

# 设置Master发送VRRP报文的间隔时间为4秒。

[SwitchA-Vlan-interface2] vrrp vrid 1 timer advertise 4

# 设置Switch A工作在抢占方式，以保证Switch A故障恢复后，能再次抢占成为Master，即只要Switch A正常工作，就由Switch A负责转发流量。为了避免频繁地进行状态切换，配置抢占延迟时间为5秒。

[SwitchA-Vlan-interface2] vrrp vrid 1 preempt-mode timer delay 5

# 配置Switch A监视上行接口——VLAN接口3，当VLAN接口3不可用时，降低Switch A在备份组1中的优先级。降低后的优先级应低于Switch B的优先级100，即优先级降低数额应大于10，以保证Switch B能够抢占成为Master。本例中，配置优先级降低数额为30。

[SwitchA-Vlan-interface2] vrrp vrid 1 track interface vlan-interface 3 reduced 30

(2) 配置Switch B

# 配置VLAN2。

<SwitchB> system-view

[SwitchB] vlan 2

[SwitchB-vlan2] port ethernet 1/0/5

[SwitchB-vlan2] quit

[SwitchB] interface vlan-interface 2

[SwitchB-Vlan-interface2] ip address 202.38.160.2 255.255.255.0

# 创建备份组1，并配置备份组1的虚拟IP地址为202.38.160.111。

[SwitchB-Vlan-interface2] vrrp vrid 1 virtual-ip 202.38.160.111

# 设置备份组的认证方式为SIMPLE认证，认证字为hello。

[SwitchB-Vlan-interface2] vrrp vrid 1 authentication-mode simple hello

# 设置Master发送VRRP报文的间隔时间为4秒。

[SwitchB-Vlan-interface2] vrrp vrid 1 timer advertise 4

# 设置Switch B工作在抢占方式，以保证Switch A的优先级降低后，Switch B可以抢占成为Master。为了避免频繁地进行状态切换，配置抢占延迟时间为5秒。

[SwitchB-Vlan-interface2] vrrp vrid 1 preempt-mode timer delay 5

(3) 验证配置结果

配置完成后，在Host A上可以ping通Host B。通过 display vrrp verbose 命令查看配置后的结果。

# 显示Switch A上备份组1的详细信息。

[SwitchA-Vlan-interface2] display vrrp verbose

IPv4 Standby Information:

Run Mode : Standard

Run Method : Virtual MAC

Total number of virtual routers : 1

Interface Vlan-interface2

VRID : 1 Adver Timer : 4

Admin Status : Up State : Master

Config Pri : 110 Running Pri : 110

Preempt Mode : Yes Delay Time : 5

Auth Type : Simple Key : hello

Virtual IP : 202.38.160.111

Virtual MAC : 0000-5e00-0101

Master IP : 202.38.160.1

VRRP Track Information:

Track Interface: Vlan3 State : Up Pri Reduced : 30

# 显示Switch B上备份组1的详细信息。

[SwitchB-Vlan-interface2] display vrrp verbose

IPv4 Standby Information:

Run Mode : Standard

Run Method : Virtual MAC

Total number of virtual routers : 1

Interface Vlan-interface2

VRID : 1 Adver Timer : 4

Admin Status : Up State : Backup

Config Pri : 100 Running Pri : 100

Preempt Mode : Yes Delay Time : 5

Become Master : 2200ms left

Auth Type : Simple Key : hello

Virtual IP : 202.38.160.111

Master IP : 202.38.160.1

以上显示信息表示在备份组1中Switch A为Master路由器，Switch B为Backup路由器，Host A发送给Host B的报文通过Switch A转发。

Switch A连接Internet的VLAN接口3不可用时，在Host A上仍然可以ping通Host B。通过 display vrrp verbose 命令查看备份组的信息。

# Switch A的VLAN接口3不可用时，显示Switch A上备份组1的详细信息。

[SwitchA-Vlan-interface2] display vrrp verbose

IPv4 Standby Information:

Run Mode : Standard

Run Method : Virtual MAC

Total number of virtual routers : 1

Interface Vlan-interface2

VRID : 1 Adver Timer : 4

Admin Status : Up State : Backup

Config Pri : 110 Running Pri : 80

Preempt Mode : Yes Delay Time : 5

Become Master : 2200ms left

Auth Type : Simple Key : hello

Virtual IP : 202.38.160.111

Master IP : 202.38.160.2

VRRP Track Information:

Track Interface: Vlan3 State : Down Pri Reduced : 30

# Switch A的VLAN接口3不可用时，显示Switch B上备份组1的详细信息。

[SwitchB-Vlan-interface2] display vrrp verbose

IPv4 Standby Information:

Run Mode : Standard

Run Method : Virtual MAC

Total number of virtual routers : 1

Interface Vlan-interface2

VRID : 1 Adver Timer : 4

Admin Status : Up State : Master

Config Pri : 100 Running Pri : 100

Preempt Mode : Yes Delay Time : 5

Auth Type : Simple Key : hello

Virtual IP : 202.38.160.111

Virtual MAC : 0000-5e00-0101

Master IP : 202.38.160.2

以上显示信息表示Switch A的VLAN接口3不可用时，Switch A的优先级降低为80，成为Backup路由器，Switch B成为Master路由器，Host A发送给Host B的报文通过Switch B转发。

1.6.3 多个VLAN中的VRRP备份组配置举例

1. 组网需求

l VLAN 2内主机的缺省网关为202.38.160.100/25；VLAN 3内主机的缺省网关为202.38.160.200/25；

l Switch A和Switch B同时属于虚拟IP地址为202.38.160.100/25的备份组1和虚拟IP地址为202.38.160.200/25的备份组2；

l 在备份组1中Switch A的优先级高于Switch B，在备份组2中Switch B的优先级高于Switch A，从而保证VLAN 2和VLAN 3内的主机分别通过Switch A和Switch B通信，当Switch A或Switch B出现故障时，主机可以通过另一台设备继续通信，避免通信中断。

2. 组网图

图1-13 多个VLAN中的VRRP备份组配置组网图

3. 配置步骤

(1) 配置Switch A

# 配置VLAN 2。

<SwitchA> system-view

[SwitchA] vlan 2

[SwitchA-vlan2] port ethernet 1/0/5

[SwitchA-vlan2] quit

[SwitchA] interface vlan-interface 2

[SwitchA-Vlan-interface2] ip address 202.38.160.1 255.255.255.128

# 创建备份组1，并配置备份组1的虚拟IP地址为202.38.160.100。

[SwitchA-Vlan-interface2] vrrp vrid 1 virtual-ip 202.38.160.100

# 设置Switch A在备份组1中的优先级为110，高于Switch B的优先级100，以保证在备份组1中Switch A成为Master负责转发流量。

[SwitchA-Vlan-interface2] vrrp vrid 1 priority 110

[SwitchA-Vlan-interface2] quit

# 配置VLAN 3。

[SwitchA] vlan 3

[SwitchA-vlan3] port ethernet 1/0/6

[SwitchA-vlan3] quit

[SwitchA] interface vlan-interface 3

[SwitchA-Vlan-interface3] ip address 202.38.160.130 255.255.255.128

# 创建备份组2，并配置备份组2的虚拟IP地址为202.38.160.200。

[SwitchA-Vlan-interface3] vrrp vrid 2 virtual-ip 202.38.160.200

(2) 配置Switch B

# 配置VLAN 2。

<SwitchB> system-view

[SwitchB] vlan 2

[SwitchB-vlan2] port ethernet 1/0/5

[SwitchB-vlan2] quit

[SwitchB] interface vlan-interface 2

[SwitchB-Vlan-interface2] ip address 202.38.160.2 255.255.255.128

# 创建备份组1，并配置备份组1的虚拟IP地址为202.38.160.100。

[SwitchB-Vlan-interface2] vrrp vrid 1 virtual-ip 202.38.160.100

[SwitchB-Vlan-interface2] quit

# 配置VLAN 3。

[SwitchB] vlan 3

[SwitchB-vlan3] port ethernet 1/0/6

[SwitchB-vlan3] quit

[SwitchB] interface vlan-interface 3

[SwitchB-Vlan-interface3] ip address 202.38.160.131 255.255.255.128

# 创建备份组2，并配置备份组2的虚拟IP地址为202.38.160.200。

[SwitchB-Vlan-interface3] vrrp vrid 2 virtual-ip 202.38.160.200

# 设置Switch B在备份组2中的优先级为110，高于Switch A的优先级100，以保证在备份组2中Switch B成为Master负责转发流量。

[SwitchB-Vlan-interface3] vrrp vrid 2 priority 110

(3) 验证配置结果

可以通过 display vrrp verbose 命令查看配置后的结果。

# 显示Switch A上备份组的详细信息。

[SwitchA-Vlan-interface3] display vrrp verbose

IPv4 Standby Information:

Run Mode : Standard

Run Method : Virtual MAC

Total number of virtual routers : 2

Interface Vlan-interface2

VRID : 1 Adver Timer : 1

Admin Status : Up State : Master

Config Pri : 110 Running Pri : 110

Preempt Mode : Yes Delay Time : 0

Auth Type : None

Virtual IP : 202.38.160.100

Virtual MAC : 0000-5e00-0101

Master IP : 202.38.160.1

Interface Vlan-interface3

VRID : 2 Adver Timer : 1

Admin Status : Up State : Backup

Config Pri : 100 Running Pri : 100

Preempt Mode : Yes Delay Time : 0

Become Master : 2200ms left

Auth Type : None

Virtual IP : 202.38.160.200

Master IP : 202.38.160.131

# 显示Switch B上备份组的详细信息。

[SwitchB-Vlan-interface3] display vrrp verbose

IPv4 Standby Information:

Run Mode : Standard

Run Method : Virtual MAC

Total number of virtual routers : 2

Interface Vlan-interface2

VRID : 1 Adver Timer : 1

Admin Status : Up State : Backup

Config Pri : 100 Running Pri : 100

Preempt Mode : Yes Delay Time : 0

Become Master : 2200ms left

Auth Type : None

Virtual IP : 202.38.160.100

Master IP : 202.38.160.1

Interface Vlan-interface3

VRID : 2 Adver Timer : 1

Admin Status : Up State : Master

Config Pri : 110 Running Pri : 110

Preempt Mode : Yes Delay Time : 0

Auth Type : None

Virtual IP : 202.38.160.200

Virtual MAC : 0000-5e00-0102

Master IP : 202.38.160.131

以上显示信息表示在备份组1中Switch A为Master路由器，Switch B为Backup路由器，缺省网关为202.38.160.100/25的主机通过Switch A访问Internet；备份组2中Switch A为Backup路由器，Switch B为Master路由器，缺省网关为202.38.160.200/25的主机通过Switch B访问Internet。

1.6.4 VRRP负载均衡模式配置举例

1. 组网需求

l Switch A、Switch B和Switch C属于虚拟IP地址为10.1.1.1/24的备份组1；

l 10.1.1.0/24网段内主机的缺省网关为10.1.1.1/24，利用VRRP备份组保证某台网关设备（Switch A、Switch B或Switch C）出现故障时，局域网内的主机仍然可以通过网关访问外部网络；

l 备份组1工作在负载均衡模式，通过一个备份组实现负载分担，充分利用网关资源；

l 在Switch A、Switch B和Switch C上分别配置虚拟转发器通过Track项监视上行接口（VLAN接口3）的状态。当上行接口出现故障时，降低Switch A、Switch B或Switch C上虚拟转发器的权重，以便其他设备接管它的转发任务；

l 在Switch C上通过Track项监视Switch A和Switch B的状态，当Switch A或Switch B出现故障时，Switch C立即接管Switch A或Switch B上的AVF。

2. 组网图

图1-14 VRRP负载均衡模式配置组网图

3. 配置步骤

(1) 配置Switch A

# 配置VLAN2。

<SwitchA> system-view

[SwitchA] vlan 2

[SwitchA-vlan2] port ethernet 1/0/5

[SwitchA-vlan2] quit

# 配置VRRP工作在负载均衡模式。

[SwitchA] vrrp mode load-balance

# 创建备份组1，并配置备份组1的虚拟IP地址为10.1.1.1。

[SwitchA] interface vlan-interface 2

[SwitchA-Vlan-interface2] ip address 10.1.1.2 24

[SwitchA-Vlan-interface2] vrrp vrid 1 virtual-ip 10.1.1.1

# 配置Switch A在备份组1中的优先级为120，高于Switch B的优先级110和Switch C的优先级100，以保证Switch A成为Master。

[SwitchA-Vlan-interface2] vrrp vrid 1 priority 120

# 配置Switch A工作在抢占方式，以保证Switch A故障恢复后，能再次抢占成为Master，即只要Switch A正常工作， Switch A就会成为Master。为了避免频繁地进行状态切换，配置抢占延迟时间为5秒。

[SwitchA-Vlan-interface2] vrrp vrid 1 preempt-mode timer delay 5

[SwitchA-Vlan-interface2] quit

# 创建和VLAN接口3物理状态关联的Track项1。如果Track项的状态为Negative，则说明Switch A的上行接口出现故障。

[SwitchA] track 1 interface vlan-interface 3

# 配置虚拟转发器监视Track项1并指定权重降低的数额。Track项的状态为Negative时，降低Switch A上虚拟转发器的权重，使其低于失效下限10，即权重降低的数额大于245，以便其他设备接替Switch A的转发任务。本例中，配置虚拟转发器权重降低数额为250。

[SwitchA] interface vlan-interface 2

[SwitchA-Vlan-interface2] vrrp vrid 1 weight track 1 reduced 250

(2) 配置Switch B

# 配置VLAN2。

<SwitchB> system-view

[SwitchB] vlan 2

[SwitchB-vlan2] port ethernet 1/0/5

[SwitchB-vlan2] quit

# 配置VRRP工作在负载均衡模式。

[SwitchB] vrrp mode load-balance

# 创建备份组1，并配置备份组1的虚拟IP地址为10.1.1.1。

[SwitchB] interface vlan-interface 2

[SwitchB-Vlan-interface2] ip address 10.1.1.3 24

[SwitchB-Vlan-interface2] vrrp vrid 1 virtual-ip 10.1.1.1

# 配置Swtich B在备份组1中的优先级为110，高于Switch C的优先级，以保证Switch A出现故障时，Switch B成为Master。

[SwitchB-Vlan-interface2] vrrp vrid 1 priority 110

# 配置Switch B工作在抢占方式，抢占延迟时间为5秒。

[SwitchB-Vlan-interface2] vrrp vrid 1 preempt-mode timer delay 5

[SwitchB-Vlan-interface2] quit

# 创建和VLAN接口3物理状态关联的Track项1。如果Track项的状态为Negative，则说明Switch B的上行接口出现故障。

[SwitchB] track 1 interface vlan-interface 3

# 配置虚拟转发器监视Track项1并指定权重降低的数额。Track项的状态为Negative时，降低Switch B上虚拟转发器的权重，使其低于失效下限10，即权重降低的数额大于245，以便其他设备接替Switch B的转发任务。本例中，配置虚拟转发器权重降低数额为250。

[SwitchB] interface vlan-interface 2

[SwitchB-Vlan-interface2] vrrp vrid 1 weight track 1 reduced 250

(3) 配置Switch C

# 配置VLAN2。

<SwitchC> system-view

[SwitchC] vlan 2

[SwitchC-vlan2] port ethernet 1/0/5

[SwitchC-vlan2] quit

# 配置VRRP工作在负载均衡模式。

[SwitchC] vrrp mode load-balance

# 创建备份组1，并配置备份组1的虚拟IP地址为10.1.1.1。

[SwitchC] interface vlan-interface 2

[SwitchC-Vlan-interface2] ip address 10.1.1.4 24

[SwitchC-Vlan-interface2] vrrp vrid 1 virtual-ip 10.1.1.1

# 配置Switch C工作在抢占方式，抢占延迟时间为5秒。

[SwitchC-Vlan-interface2] vrrp vrid 1 preempt-mode timer delay 5

[SwitchC-Vlan-interface2] quit

# 创建和VLAN接口3物理状态关联的Track项1。如果Track项的状态为Negative，则说明Switch C的上行接口出现故障。

[SwitchC] track 1 interface vlan-interface 3

# 配置虚拟转发器监视Track项1并指定权重降低的数额。Track项的状态为Negative时，降低Switch C上虚拟转发器的权重，使其低于失效下限10，即权重降低的数额大于245，以便其他设备接替Switch C的转发任务。本例中，配置虚拟转发器权重降低数额为250。

[SwitchC] interface vlan-interface 2

[SwitchC-Vlan-interface2] vrrp vrid 1 weight track 1 reduced 250

[SwitchC-Vlan-interface2] quit

# 分别创建监视Switch A、Switch B的Track项2和3。如果Track项的状态为Negative，则说明Switch A或Switch B出现故障。

[SwitchC] bfd echo-source-ip 1.2.3.4

[SwitchC] track 2 bfd echo interface vlan-interface 2 remote ip 10.1.1.2 local ip 10.1.1.4

[SwitchC] track 3 bfd echo interface vlan-interface 2 remote ip 10.1.1.3 local ip 10.1.1.4

# 配置虚拟转发器监视Track项2，当Track项状态变为Negative时，如果Switch C上AVF地址为10.1.1.2的虚拟转发器处于Listening状态，则马上将该虚拟转发器切换到Active状态，即Switch C接管Switch A上的AVF。

[SwitchC] interface vlan-interface 2

[SwitchC-Vlan-interface2] vrrp vrid 1 track 2 forwarder-switchover member-ip 10.1.1.2

# 配置虚拟转发器监视Track项3，当Track项状态变为Negative时，如果Switch C上AVF地址为10.1.1.3的虚拟转发器处于Listening状态，则马上将该虚拟转发器切换到Active状态，即Switch C接管Switch B上的AVF。

[SwitchC-Vlan-interface2] vrrp vrid 1 track 3 forwarder-switchover member-ip 10.1.1.3

(4) 验证配置结果

配置完成后，在Host A上可以ping通外网。通过 display vrrp verbose 命令查看配置后的结果。

# 显示Switch A上备份组1的详细信息。

[SwitchA-Vlan-interface2] display vrrp verbose

IPv4 Standby Information:

Run Mode : Load Balance

Run Method : Virtual MAC

Total number of virtual routers : 1

Interface Vlan-interface2

VRID : 1 Adver Timer : 1

Admin Status : Up State : Master

Config Pri : 120 Running Pri : 120

Preempt Mode : Yes Delay Time : 5

Auth Type : None

Virtual IP : 10.1.1.1

Member IP List : 10.1.1.2 (Local, Master)

10.1.1.3 (Backup)

10.1.1.4 (Backup)

Forwarder Information: 3 Forwarders 1 Active

Config Weight : 255

Running Weight : 255

Forwarder 01

State : Active

Virtual MAC : 000f-e2ff-0011 (Owner)

Owner ID : 0000-5e01-1101

Priority : 255

Active : local

Forwarder 02

State : Listening

Virtual MAC : 000f-e2ff-0012 (Learnt)

Owner ID : 0000-5e01-1103

Priority : 127

Active : 10.1.1.3

Forwarder 03

State : Listening

Virtual MAC : 000f-e2ff-0013 (Learnt)

Owner ID : 0000-5e01-1105

Priority : 127

Active : 10.1.1.4

Forwarder Weight Track Information:

Track Object : 1 State : Positive Weight Reduced : 250

# 显示Switch B上备份组1的详细信息。

[SwitchB-Vlan-interface2] display vrrp verbose

IPv4 Standby Information:

Run Mode : Load Balance

Run Method : Virtual MAC

Total number of virtual routers : 1

Interface Vlan-interface2

VRID : 1 Adver Timer : 1

Admin Status : Up State : Backup

Config Pri : 110 Running Pri : 110

Preempt Mode : Yes Delay Time : 5

Become Master : 4200ms left

Auth Type : None

Virtual IP : 10.1.1.1

Member IP List : 10.1.1.3 (Local, Backup)

10.1.1.2 (Master)

10.1.1.4 (Backup)

Forwarder Information: 3 Forwarders 1 Active

Config Weight : 255

Running Weight : 255

Forwarder 01

State : Listening

Virtual MAC : 000f-e2ff-0011 (Learnt)

Owner ID : 0000-5e01-1101

Priority : 127

Active : 10.1.1.2

Forwarder 02

State : Active

Virtual MAC : 000f-e2ff-0012 (Owner)

Owner ID : 0000-5e01-1103

Priority : 255

Active : local

Forwarder 03

State : Listening

Virtual MAC : 000f-e2ff-0013 (Learnt)

Owner ID : 0000-5e01-1105

Priority : 127

Active : 10.1.1.4

Forwarder Weight Track Information:

Track Object : 1 State : Positive Weight Reduced : 250

# 显示Switch C上备份组1的详细信息。

[SwitchC-Vlan-interface2] display vrrp verbose

IPv4 Standby Information:

Run Mode : Load Balance

Run Method : Virtual MAC

Total number of virtual routers : 1

Interface Vlan-interface2

VRID : 1 Adver Timer : 1

Admin Status : Up State : Backup

Config Pri : 100 Running Pri : 100

Preempt Mode : Yes Delay Time : 5

Become Master : 4200ms left

Auth Type : None

Virtual IP : 10.1.1.1

Member IP List : 10.1.1.4 (Local, Backup)

10.1.1.2 (Master)

10.1.1.3 (Backup)

Forwarder Information: 3 Forwarders 1 Active

Config Weight : 255

Running Weight : 255

Forwarder 01

State : Listening

Virtual MAC : 000f-e2ff-0011 (Learnt)

Owner ID : 0000-5e01-1101

Priority : 127

Active : 10.1.1.2

Forwarder 02

State : Listening

Virtual MAC : 000f-e2ff-0012 (Learnt)

Owner ID : 0000-5e01-1103

Priority : 127

Active : 10.1.1.3

Forwarder 03

State : Active

Virtual MAC : 000f-e2ff-0013 (Owner)

Owner ID : 0000-5e01-1105

Priority : 255

Active : local

Forwarder Weight Track Information:

Track Object : 1 State : Positive Weight Reduced : 250

Forwarder Switchover Track Information:

Track Object : 2 State : Positive

Member IP : 10.1.1.2

Track Object : 3 State : Positive

Member IP : 10.1.1.3

以上显示信息表示在备份组1中Switch A为Master路由器，Switch B和Switch C 为Backup路由器。Switch A、Switch B和Switch C上各自存在一个AVF，并存在作为备份的两个LVF。

# 当Switch A的上行接口（VLAN接口3）出现故障后，通过 display vrrp verbose 命令查看Switch A上备份组的详细信息。

[SwitchA-Vlan-interface2] display vrrp verbose

IPv4 Standby Information:

Run Mode : Load Balance

Run Method : Virtual MAC

Total number of virtual routers : 1

Interface Vlan-interface2

VRID : 1 Adver Timer : 1

Admin Status : Up State : Master

Config Pri : 120 Running Pri : 120

Preempt Mode : Yes Delay Time : 5

Auth Type : None

Virtual IP : 10.1.1.1

Member IP List : 10.1.1.2 (Local, Master)

10.1.1.3 (Backup)

10.1.1.4 (Backup)

Forwarder Information: 3 Forwarders 0 Active

Config Weight : 255

Running Weight : 5

Forwarder 01

State : Initialize

Virtual MAC : 000f-e2ff-0011 (Owner)

Owner ID : 0000-5e01-1101

Priority : 0

Active : 10.1.1.4

Forwarder 02

State : Initialize

Virtual MAC : 000f-e2ff-0012 (Learnt)

Owner ID : 0000-5e01-1103

Priority : 0

Active : 10.1.1.3

Forwarder 03

State : Initialize

Virtual MAC : 000f-e2ff-0013 (Learnt)

Owner ID : 0000-5e01-1105

Priority : 0

Active : 10.1.1.4

Forwarder Weight Track Information:

Track Object : 1 State : Negative Weight Reduced : 250

# 通过 display vrrp verbose 命令查看Switch C上备份组的详细信息。

[SwitchC-Vlan-interface2] display vrrp verbose

IPv4 Standby Information:

Run Mode : Load Balance

Run Method : Virtual MAC

Total number of virtual routers : 1

Interface Vlan-interface2

VRID : 1 Adver Timer : 1

Admin Status : Up State : Backup

Config Pri : 100 Running Pri : 100

Preempt Mode : Yes Delay Time : 5

Become Master : 4200ms left

Auth Type : None

Virtual IP : 10.1.1.1

Member IP List : 10.1.1.4 (Local, Backup)

10.1.1.2 (Master)

10.1.1.3 (Backup)

Forwarder Information: 3 Forwarders 2 Active

Config Weight : 255

Running Weight : 255

Forwarder 01

State : Active

Virtual MAC : 000f-e2ff-0011 (Take Over)

Owner ID : 0000-5e01-1101

Priority : 85

Active : local

Redirect Time : 93 secs

Time-out Time : 1293 secs

Forwarder 02

State : Listening

Virtual MAC : 000f-e2ff-0012 (Learnt)

Owner ID : 0000-5e01-1103

Priority : 85

Active : 10.1.1.3

Forwarder 03

State : Active

Virtual MAC : 000f-e2ff-0013 (Owner)

Owner ID : 0000-5e01-1105

Priority : 255

Active : local

Forwarder Weight Track Information:

Track Object : 1 State : Positive Weight Reduced : 250

Forwarder Switchover Track Information:

Track Object : 2 State : Positive

Member IP : 10.1.1.2

Track Object : 3 State : Positive

Member IP : 10.1.1.3

以上显示信息表示Switch A的上行接口出现故障后，Switch A上虚拟转发器的权重降低为5，低于失效下限。Switch A上所有虚拟转发器的状态均变为Initialized，不能再用于转发。Switch C成为虚拟MAC地址000f-e2ff-0011对应虚拟转发器的AVF，接管Switch A的转发任务。

# Timeout Timer超时后（约1800秒后），查看Switch C上备份组的详细信息。

[SwitchC-Vlan-interface2] display vrrp verbose

IPv4 Standby Information:

Run Mode : Load Balance

Run Method : Virtual MAC

Total number of virtual routers : 1

Interface Vlan-interface2

VRID : 1 Adver Timer : 1

Admin Status : Up State : Backup

Config Pri : 100 Running Pri : 100

Preempt Mode : Yes Delay Time : 5

Become Master : 4200ms left

Auth Type : None

Virtual IP : 10.1.1.1

Member IP List : 10.1.1.4 (Local, Backup)

10.1.1.2 (Master)

10.1.1.3 (Backup)

Forwarder Information: 2 Forwarders 1 Active

Config Weight : 255

Running Weight : 255

Forwarder 02

State : Listening

Virtual MAC : 000f-e2ff-0012 (Learnt)

Owner ID : 0000-5e01-1103

Priority : 127

Active : 10.1.1.3

Forwarder 03

State : Active

Virtual MAC : 000f-e2ff-0013 (Owner)

Owner ID : 0000-5e01-1105

Priority : 255

Active : local

Forwarder Weight Track Information:

Track Object : 1 State : Positive Weight Reduced : 250

Forwarder Switchover Track Information:

Track Object : 2 State : Positive

Member IP : 10.1.1.2

Track Object : 3 State : Positive

Member IP : 10.1.1.3

以上显示信息表示，Timeout Timer超时后，删除虚拟MAC地址000f-e2ff-0011对应的虚拟转发器，不再转发目的MAC地址为该MAC的报文。

# Switch A出现故障后，通过 display vrrp verbose 命令查看Switch B上备份组的详细信息。

[SwitchB-Vlan-interface2] display vrrp verbose

IPv4 Standby Information:

Run Mode : Load Balance

Run Method : Virtual MAC

Total number of virtual routers : 1

Interface Vlan-interface2

VRID : 1 Adver Timer : 1

Admin Status : Up State : Master

Config Pri : 110 Running Pri : 110

Preempt Mode : Yes Delay Time : 5

Auth Type : None

Virtual IP : 10.1.1.1

Member IP List : 10.1.1.3 (Local, Master)

10.1.1.4 (Backup)

Forwarder Information: 2 Forwarders 1 Active

Config Weight : 255

Running Weight : 255

Forwarder 02

State : Active

Virtual MAC : 000f-e2ff-0012 (Owner)

Owner ID : 0000-5e01-1103

Priority : 255

Active : local

Forwarder 03

State : Listening

Virtual MAC : 000f-e2ff-0013 (Learnt)

Owner ID : 0000-5e01-1105

Priority : 127

Active : 10.1.1.4

Forwarder Weight Track Information:

Track Object : 1 State : Positive Weight Reduced : 250

以上显示信息表示Switch A出现故障后，Switch B的优先级高于Switch C，将抢占成为Master路由器。

# Switch B出现故障后，通过 display vrrp verbose 命令查看Switch C上备份组的详细信息。

[SwitchC-Vlan-interface2] display vrrp verbose

IPv4 Standby Information:

Run Mode : Load Balance

Run Method : Virtual MAC

Total number of virtual routers : 1

Interface Ethernet1/0/1

VRID : 1 Adver Timer : 1

Admin Status : Up State : Master

Config Pri : 100 Running Pri : 100

Preempt Mode : Yes Delay Time : 5

Auth Type : None

Virtual IP : 10.1.1.1

Member IP List : 10.1.1.4 (Local, Master)

Forwarder Information: 2 Forwarders 2 Active

Config Weight : 255

Running Weight : 255

Forwarder 02

State : Active

Virtual MAC : 000f-e2ff-0012 (Take Over)

Owner ID : 0000-5e01-1103

Priority : 85

Active : local

Redirect Time : 93 secs

Time-out Time : 1293 secs

Forwarder 03

State : Active

Virtual MAC : 000f-e2ff-0013 (Owner)

Owner ID : 0000-5e01-1105

Priority : 255

Active : local

Forwarder Weight Track Information:

Track Object : 1 State : Positive Weight Reduced : 250

Forwarder Switchover Track Information:

Track Object : 2 State : Negative

Member IP : 10.1.1.2

Track Object : 3 State : Negative

Member IP : 10.1.1.3

以上显示信息表示Switch B出现故障后，Switch C切换成为Master，并且Switch C上Forwarder 02马上切换到Active状态，即Switch C立即接管Switch B上的AVF。


1.7 基于IPv6的VRRP典型配置举例

1.7.1 VRRP单备份组配置举例

1. 组网需求

l Switch A和Switch B属于虚拟IPv6地址为1::10/64和FE80::10的备份组1；

l Host A需要访问Internet上的Host B；Host A通过交换机发送的RA消息学习到缺省网关地址为1::10/64；

l 当Switch A正常工作时，Host A发送给Host B的报文通过Switch A转发；当Switch A出现故障时，Host A发送给Host B的报文通过Switch B转发。

2. 组网图

图1-15 VRRP单备份组配置组网图

3. 配置步骤

(1) 配置Switch A

# 配置VLAN2。

<SwitchA> system-view

[SwitchA] ipv6

[SwitchA] vlan 2

[SwitchA-vlan2] port ethernet 1/0/5

[SwitchA-vlan2] quit

[SwitchA] interface vlan-interface 2

[SwitchA-Vlan-interface2] ipv6 address fe80::1 link-local

[SwitchA-Vlan-interface2] ipv6 address 1::1 64

# 创建备份组1，并配置备份组1的虚拟IPv6地址为FE80::10和1::10。

[SwitchA-Vlan-interface2] vrrp ipv6 vrid 1 virtual-ip fe80::10 link-local

[SwitchA-Vlan-interface2] vrrp ipv6 vrid 1 virtual-ip 1::10

# 配置Switch A在备份组1中的优先级为110，高于Switch B的优先级100，以保证Switch A成为Master负责转发流量。

[SwitchA-Vlan-interface2] vrrp ipv6 vrid 1 priority 110

# 配置Switch A工作在抢占方式，以保证Switch A故障恢复后，能再次抢占成为Master，即只要Router A正常工作，就由Switch A负责转发流量。为了避免频繁地进行状态切换，配置抢占延迟时间为5秒。

[SwitchA-Vlan-interface2] vrrp ipv6 vrid 1 preempt-mode timer delay 5

# 配置允许发布RA消息，以便Host A通过RA消息学习到缺省网关地址。

[SwitchA-Vlan-interface2] undo ipv6 nd ra halt

(2) 配置Switch B

# 配置VLAN2。

<SwitchB> system-view

[SwitchB] ipv6

[SwitchB] vlan 2

[SwitchB-vlan2] port ethernet 1/0/5

[SwitchB-vlan2] quit

[SwitchB] interface vlan-interface 2

[SwitchB-Vlan-interface2] ipv6 address fe80::2 link-local

[SwitchB-Vlan-interface2] ipv6 address 1::2 64

# 创建备份组1，并配置备份组1的虚拟IPv6地址为FE80::10和1::10。

[SwitchB-Vlan-interface2] vrrp ipv6 vrid 1 virtual-ip fe80::10 link-local

[SwitchB-Vlan-interface2] vrrp ipv6 vrid 1 virtual-ip 1::10

# 配置Switch B工作在抢占方式，抢占延迟时间为5秒。

[SwitchB-Vlan-interface2] vrrp ipv6 vrid 1 preempt-mode timer delay 5

# 配置允许发布RA消息，以便Host A通过RA消息学习到缺省网关地址。

[SwitchB-Vlan-interface2] undo ipv6 nd ra halt

(3) 验证配置结果

配置完成后，在Host A上可以ping通Host B。通过 display vrrp ipv6 verbose 命令查看配置后的结果。

# 显示Switch A上备份组1的详细信息。

[SwitchA-Vlan-interface2] display vrrp ipv6 verbose

IPv6 Standby Information:

Run Mode : Standard

Run Method : Virtual MAC

Total number of virtual routers : 1

Interface Vlan-interface2

VRID : 1 Adver Timer : 100

Admin Status : Up State : Master

Config Pri : 110 Running Pri : 110

Preempt Mode : Yes Delay Time : 5

Auth Type : None

Virtual IP : FE80::10

1::10

Virtual MAC : 0000-5e00-0201

Master IP : FE80::1

# 显示Switch B上备份组1的详细信息。

[SwitchB-Vlan-interface2] display vrrp ipv6 verbose

IPv6 Standby Information:

Run Mode : Standard

Run Method : Virtual MAC

Total number of virtual routers : 1

Interface Vlan-interface2

VRID : 1 Adver Timer : 100

Admin Status : Up State : Backup

Config Pri : 100 Running Pri : 100

Preempt Mode : Yes Delay Time : 5

Become Master : 4200ms left

Auth Type : None

Virtual IP : FE80::10

1::10

Master IP : FE80::1

以上显示信息表示在备份组1中Switch A为Master路由器，Switch B为Backup路由器，Host A发送给Host B的报文通过Switch A转发。

Switch A出现故障后，在Host A上仍然可以ping通Host B。通过 display vrrp ipv6 verbose 命令查看Switch B上备份组的信息。

# Switch A出现故障后，显示Switch B上备份组1的详细信息。

[SwitchB-Vlan-interface2] display vrrp ipv6 verbose

IPv6 Standby Information:

Run Mode : Standard

Run Method : Virtual MAC

Total number of virtual routers : 1

Interface Vlan-interface2

VRID : 1 Adver Timer : 100

Admin Status : Up State : Master

Config Pri : 100 Running Pri : 100

Preempt Mode : Yes Delay Time : 5

Auth Type : None

Virtual IP : FE80::10

1::10

Virtual MAC : 0000-5e00-0201

Master IP : FE80::2

以上显示信息表示Switch A出现故障后，Switch B成为Master路由器，Host A发送给Host B的报文通过Switch B转发。

# Switch A故障恢复后，显示Switch A上备份组1的详细信息。

[SwitchA-Vlan-interface2] display vrrp ipv6 verbose

IPv6 Standby Information:

Run Mode : Standard

Run Method : Virtual MAC

Total number of virtual routers : 1

Interface Vlan-interface2

VRID : 1 Adver Timer : 100

Admin Status : Up State : Master

Config Pri : 110 Running Pri : 110

Preempt Mode : Yes Delay Time : 5

Auth Type : None

Virtual IP : FE80::10

1::10

Virtual MAC : 0000-5e00-0201

Master IP : FE80::1

以上显示信息表示Switch A故障恢复后，Switch A会抢占成为Master，Host A发送给Host B的报文仍然通过Switch A转发。

1.7.2 VRRP监视接口配置举例

1. 组网需求

l Switch A和Switch B属于虚拟IPv6地址为1::10/64和FE80::10的备份组1；

l Host A需要访问Internet上的Host B；Host A通过交换机发送的RA消息学习到缺省网关为1::10/64；

l 当Switch A正常工作时，Host A发送给Host B的报文通过Switch A转发；当Switch A连接Internet的VLAN接口3不可用时，Host A发送给Host B的报文通过Switch B转发；

l 为了防止非法用户构造报文攻击备份组，通过简单字符认证方法验证备份组1中的VRRP报文，认证字为hello。

2. 组网图

图1-16 VRRP监视接口配置组网图

3. 配置步骤

(1) 配置Switch A

# 配置VLAN2。

<SwitchA> system-view

[SwitchA] ipv6

[SwitchA] vlan 2

[SwitchA-vlan2] port ethernet 1/0/5

[SwitchA-vlan2] quit

[SwitchA] interface vlan-interface 2

[SwitchA-Vlan-interface2] ipv6 address fe80::1 link-local

[SwitchA-Vlan-interface2] ipv6 address 1::1 64

# 创建备份组1，并配置备份组1的虚拟IPv6地址为FE80::10和1::10。

[SwitchA-Vlan-interface2] vrrp ipv6 vrid 1 virtual-ip fe80::10 link-local

[SwitchA-Vlan-interface2] vrrp ipv6 vrid 1 virtual-ip 1::10

# 设置Switch A在备份组中的优先级为110，高于Switch B的优先级100，以保证Switch A成为Master负责转发流量。

[SwitchA-Vlan-interface2] vrrp ipv6 vrid 1 priority 110

# 设置备份组的认证方式为SIMPLE，认证字为hello。

[SwitchA-Vlan-interface2] vrrp ipv6 vrid 1 authentication-mode simple hello

# 设置VRRP通告报文发送的间隔时间为400厘秒。

[SwitchA-Vlan-interface2] vrrp ipv6 vrid 1 timer advertise 400

# 配置Switch A工作在抢占方式，以保证Switch A故障恢复后，能再次抢占成为Master，即只要Switch A正常工作，就由Switch A负责转发流量。为了避免频繁地进行状态切换，配置抢占延迟时间为5秒。

[SwitchA-Vlan-interface2] vrrp ipv6 vrid 1 preempt-mode timer delay 5

# 配置Switch A监视上行接口——VLAN接口3，当VLAN接口3不可用时，降低Switch A在备份组1中的优先级。降低后的优先级应低于Switch B的优先级100，即优先级降低数额应大于10，以保证Switch B能够抢占成为Master。本例中，配置优先级降低数额为30。

[SwitchA-Vlan-interface2] vrrp ipv6 vrid 1 track interface vlan-interface 3 reduced 30

# 配置允许发布RA消息，以便Host A通过RA消息学习到缺省网关地址。

[SwitchA-Vlan-interface2] undo ipv6 nd ra halt

(2) 配置Switch B

# 配置VLAN2。

<SwitchB> system-view

[SwitchB] ipv6

[SwitchB] vlan 2

[SwitchB-vlan2] port ethernet 1/0/5

[SwitchB-vlan2] quit

[SwitchB] interface vlan-interface 2

[SwitchB-Vlan-interface2] ipv6 address fe80::2 link-local

[SwitchB-Vlan-interface2] ipv6 address 1::2 64

# 创建备份组1，并配置备份组1的虚拟IPv6地址为FE80::10和1::10。

[SwitchB-Vlan-interface2] vrrp ipv6 vrid 1 virtual-ip fe80::10 link-local

[SwitchB-Vlan-interface2] vrrp ipv6 vrid 1 virtual-ip 1::10

# 设置备份组的认证方式为SIMPLE，认证字为hello。

[SwitchB-Vlan-interface2] vrrp ipv6 vrid 1 authentication-mode simple hello

# 设置VRRP通告报文发送的间隔时间为400厘秒。

[SwitchB-Vlan-interface2] vrrp ipv6 vrid 1 timer advertise 400

# 配置Switch B工作在抢占方式，以保证Switch A的优先级降低后，Switch B可以抢占成为Master。为了避免频繁地进行状态切换，配置抢占延迟时间为5秒。

[SwitchB-Vlan-interface2] vrrp ipv6 vrid 1 preempt-mode timer delay 5

# 配置允许发布RA消息，以便Host A通过RA消息学习到缺省网关地址。

[SwitchB-Vlan-interface2] undo ipv6 nd ra halt

(3) 验证配置结果

配置完成后，在Host A上可以ping通Host B。通过 display vrrp ipv6 verbose 命令查看配置后的结果。

# 显示Switch A上备份组1的详细信息。

[SwitchA-Vlan-interface2] display vrrp ipv6 verbose

IPv6 Standby Information:

Run Mode : Standard

Run Method : Virtual MAC

Total number of virtual routers : 1

Interface Vlan-interface2

VRID : 1 Adver Timer : 400

Admin Status : Up State : Master

Config Pri : 110 Running Pri : 110

Preempt Mode : Yes Delay Time : 5

Auth Type : Simple Key : hello

Virtual IP : FE80::10

1::10

Virtual MAC : 0000-5e00-0201

Master IP : FE80::1

VRRP Track Information:

Track Interface: Vlan3 State : Up Pri Reduced : 30

# 显示Switch B上备份组1的详细信息。

[SwitchB-Vlan-interface2] display vrrp ipv6 verbose

IPv6 Standby Information:

Run Mode : Standard

Run Method : Virtual MAC

Total number of virtual routers : 1

Interface Vlan-interface2

VRID : 1 Adver Timer : 400

Admin Status : Up State : Backup

Config Pri : 100 Running Pri : 100

Preempt Mode : Yes Delay Time : 5

Become Master : 4200ms left

Auth Type : Simple Key : hello

Virtual IP : FE80::10

1::10

Master IP : FE80::1

以上显示信息表示在备份组1中Switch A为Master路由器，Switch B为Backup路由器，Host A发送给Host B的报文通过Switch A转发。

Switch A连接Internet的VLAN接口3不可用时，在Host A上仍然可以ping通Host B。通过 display vrrp ipv6 verbose 命令查看备份组的信息。

# Switch A的VLAN接口3不可用时，显示Switch A上备份组1的详细信息。

[SwitchA-Vlan-interface2] display vrrp ipv6 verbose

IPv6 Standby Information:

Run Mode : Standard

Run Method : Virtual MAC

Total number of virtual routers : 1

Interface Vlan-interface2

VRID : 1 Adver Timer : 400

Admin Status : Up State : Backup

Config Pri : 110 Running Pri : 80

Preempt Mode : Yes Delay Time : 5

Become Master : 4200ms left

Auth Type : Simple Key : hello

Virtual IP : FE80::10

1::10

Master IP : FE80::2

VRRP Track Information:

Track Interface: Vlan3 State : Down Pri Reduced : 30

# Switch A的VLAN接口3不可用时，显示Switch B上备份组1的详细信息。

[SwitchB-Vlan-interface2] display vrrp ipv6 verbose

IPv6 Standby Information:

Run Mode : Standard

Run Method : Virtual MAC

Total number of virtual routers : 1

Interface Vlan-interface2

VRID : 1 Adver Timer : 400

Admin Status : Up State : Master

Config Pri : 100 Running Pri : 100

Preempt Mode : Yes Delay Time : 5

Auth Type : Simple Key : hello

Virtual IP : FE80::10

1::10

Virtual MAC : 0000-5e00-0201

Master IP : FE80::2

以上显示信息表示Switch A的VLAN接口3不可用时，Switch A的优先级降低为80，成为Backup路由器，Switch B成为Master路由器，Host A发送给Host B的报文通过Switch B转发。

1.7.3 多个VLAN中的VRRP备份组配置举例

1. 组网需求

l Switch A和Switch B同时属于虚拟IPv6地址为1::10/64、FE80::10的备份组1和虚拟IPv6地址为2::10/64、FE90::10的备份组2；

l VLAN 2内主机通过交换机发送的RA消息学习到缺省网关地址为1::10/64；VLAN 3内主机通过路由器发送的RA消息学习到缺省网关地址为2::10/64；

l 在备份组1中Switch A的优先级高于Switch B，在备份组2中Switch B的优先级高于Switch A，从而保证VLAN 2和VLAN 3内的主机分别通过Switch A和Switch B通信，当Switch A或Switch B出现故障时，主机可以通过另一台设备继续通信，避免通信中断。

2. 组网图

图1-17 多个VLAN中的VRRP备份组配置组网图

3. 配置步骤

(1) 配置Switch A

# 配置VLAN 2。

<SwitchA> system-view

[SwitchA] ipv6

[SwitchA] vlan 2

[SwitchA-vlan2] port ethernet 1/0/5

[SwitchA-vlan2] quit

[SwitchA] interface vlan-interface 2

[SwitchA-Vlan-interface2] ipv6 address fe80::1 link-local

[SwitchA-Vlan-interface2] ipv6 address 1::1 64

# 创建备份组1，并配置备份组1的虚拟IPv6地址为FE80::10和1::10。

[SwitchA-Vlan-interface2] vrrp ipv6 vrid 1 virtual-ip fe80::10 link-local

[SwitchA-Vlan-interface2] vrrp ipv6 vrid 1 virtual-ip 1::10

# 设置Switch A在备份组1中的优先级为110，高于Switch B的优先级100，以保证在备份组1中Switch A成为Master负责转发流量。

[SwitchA-Vlan-interface2] vrrp ipv6 vrid 1 priority 110

# 配置允许发布RA消息，以便VLAN 2内主机通过RA消息学习到缺省网关地址。

[SwitchA-Vlan-interface2] undo ipv6 nd ra halt

[SwitchA-Vlan-interface2] quit

# 配置VLAN 3。

[SwitchA] vlan 3

[SwitchA-vlan3] port ethernet 1/0/6

[SwitchA-vlan3] quit

[SwitchA] interface vlan-interface 3

[SwitchA-Vlan-interface3] ipv6 address fe90::1 link-local

[SwitchA-Vlan-interface3] ipv6 address 2::1 64

# 创建备份组2，并配置备份组2的虚拟IPv6地址为FE90::10和2::10。

[SwitchA-Vlan-interface3] vrrp ipv6 vrid 2 virtual-ip fe90::10 link-local

[SwitchA-Vlan-interface3] vrrp ipv6 vrid 2 virtual-ip 2::10

# 配置允许发布RA消息，以便VLAN 3内主机通过RA消息学习到缺省网关地址。

[SwitchA-Vlan-interface3] undo ipv6 nd ra halt

(2) 配置Switch B

# 配置VLAN 2。

<SwitchB> system-view

[SwitchB] ipv6

[SwitchB-vlan2] port ethernet 1/0/5

[SwitchB-vlan2] quit

[SwitchB] interface vlan-interface 2

[SwitchB-Vlan-interface2] ipv6 address fe80::2 link-local

[SwitchB-Vlan-interface2] ipv6 address 1::2 64

# 创建备份组1，并配置备份组1的虚拟IPv6地址为FE80::10和1::10。

[SwitchB-Vlan-interface2] vrrp ipv6 vrid 1 virtual-ip fe80::10 link-local

[SwitchB-Vlan-interface2] vrrp ipv6 vrid 1 virtual-ip 1::10

# 配置允许发布RA消息，以便VLAN 2内主机通过RA消息学习到缺省网关地址。

[SwitchB-Vlan-interface2] undo ipv6 nd ra halt

[SwitchB-Vlan-interface2] quit

# 配置VLAN 3。

[SwitchB] vlan 3

[SwitchB-vlan3] port ethernet 1/0/6

[SwitchB-vlan3] quit

[SwitchB] interface vlan-interface 3

[SwitchB-Vlan-interface3] ipv6 address fe90::2 link-local

[SwitchB-Vlan-interface3] ipv6 address 2::2 64

# 创建备份组2，并配置备份组2的虚拟IPv6地址为FE90::10和2::10。

[SwitchB-Vlan-interface3] vrrp ipv6 vrid 2 virtual-ip fe90::10 link-local

[SwitchB-Vlan-interface3] vrrp ipv6 vrid 2 virtual-ip 2::10

# 设置Switch B在备份组2中的优先级为110，高于Switch A的优先级100，以保证在备份组2中Switch B成为Master负责转发流量。

[SwitchB-Vlan-interface3] vrrp ipv6 vrid 2 priority 110

# 配置允许发布RA消息，以便VLAN 3内主机通过RA消息学习到缺省网关地址。

[SwitchB-Vlan-interface3] undo ipv6 nd ra halt

(3) 验证配置结果

可以通过 display vrrp ipv6 verbose 命令查看配置后的结果。

# 显示Switch A上备份组的详细信息。

[SwitchA-Vlan-interface3] display vrrp ipv6 verbose

IPv6 Standby Information:

Run Mode : Standard

Run Method : Virtual MAC

Total number of virtual routers : 2

Interface Vlan-interface2

VRID : 1 Adver Timer : 100

Admin Status : Up State : Master

Config Pri : 110 Running Pri : 110

Preempt Mode : Yes Delay Time : 0

Auth Type : None

Virtual IP : FE80::10

1::10

Virtual MAC : 0000-5e00-0201

Master IP : FE80::1

Interface Vlan-interface3

VRID : 2 Adver Timer : 100

Admin Status : Up State : Backup

Config Pri : 100 Running Pri : 100

Preempt Mode : Yes Delay Time : 0

Become Master : 2200ms left

Auth Type : None

Virtual IP : FE90::10

2::10

Master IP : FE90::2

# 显示Switch B上备份组的详细信息。

[SwitchB-Vlan-interface3] display vrrp ipv6 verbose

IPv6 Standby Information:

Run Mode : Standard

Run Method : Virtual MAC

Total number of virtual routers : 2

Interface Vlan-interface2

VRID : 1 Adver Timer : 100

Admin Status : Up State : Backup

Config Pri : 100 Running Pri : 100

Preempt Mode : Yes Delay Time : 0

Become Master : 2200ms left

Auth Type : None

Virtual IP : FE80::10

1::10

Master IP : FE80::1

Interface Vlan-interface3

VRID : 2 Adver Timer : 100

Admin Status : Up State : Master

Config Pri : 110 Running Pri : 110

Preempt Mode : Yes Delay Time : 0

Auth Type : None

Virtual IP : FE90::10

2::10

Virtual MAC : 0000-5e00-0202

Master IP : FE90::2

以上显示信息表示在备份组1中Switch A为Master路由器，Switch B为Backup路由器，缺省网关为1::10/64的主机通过Switch A访问Internet；备份组2中Switch A为Backup路由器，Switch B为Master路由器，缺省网关为2::10/64的主机通过Switch B访问Internet。

1.7.4 VRRP负载均衡模式配置举例

1. 组网需求

l Switch A、Switch B和Switch C属于虚拟IPv6地址为FE80::10和1::10的备份组1；

l 1::/64网段内主机通过交换机发送的RA消息学习到缺省网关地址为1::10，利用VRRP备份组保证某台网关设备（Switch A、Switch B或Switch C）出现故障时，局域网内的主机仍然可以通过网关访问外部网络；

l 备份组1工作在负载均衡模式，通过一个备份组实现负载分担，充分利用网关资源；

l 在Switch A、Switch B和Switch C上分别配置虚拟转发器通过Track项监视上行接口（VLAN接口3）的状态。当上行接口出现故障时，降低Switch A、Switch B或Switch C上虚拟转发器的权重，以便其他设备接管它的转发任务。

2. 组网图

图1-18 VRRP负载均衡模式配置组网图

3. 配置步骤

(1) 配置Switch A

# 配置VLAN2。

<SwitchA> system-view

[SwitchA] vlan 2

[SwitchA-vlan2] port ethernet 1/0/5

[SwitchA-vlan2] quit

# 配置VRRP工作在负载均衡模式。

[SwitchA] vrrp mode load-balance

# 创建备份组1，并配置备份组1的虚拟IP地址为FE80::10和1::10。

[SwitchA] interface vlan-interface 2

[SwitchA-Vlan-interface2] ipv6 address fe80::1 link-local

[SwitchA-Vlan-interface2] ipv6 address 1::1 64

[SwitchA-Vlan-interface2] vrrp ipv6 vrid 1 virtual-ip fe80::10 link-local

[SwitchA-Vlan-interface2] vrrp ipv6 vrid 1 virtual-ip 1::10

# 配置Switch A在备份组1中的优先级为120，高于Switch B的优先级110和Switch C的优先级100，以保证Switch A成为Master。

[SwitchA-Vlan-interface2] vrrp ipv6 vrid 1 priority 120

# 配置Switch A工作在抢占方式，以保证Switch A故障恢复后，能再次抢占成为Master，即只要Switch A正常工作，Switch A就会成为Master。为了避免频繁地进行状态切换，配置抢占延迟时间为5秒。

[SwitchA-Vlan-interface2] vrrp ipv6 vrid 1 preempt-mode timer delay 5

# 配置允许发布RA消息，以便1::/64网段内主机通过RA消息学习到缺省网关地址。

[SwitchA-Vlan-interface2] undo ipv6 nd ra halt

[SwitchA-Vlan-interface2] quit

# 创建和VLAN接口3物理状态关联的Track项1。如果Track项的状态为Negative，则说明Switch A的上行接口出现故障。

[SwitchA] track 1 interface vlan-interface 3

# 配置虚拟转发器监视Track项1并指定权重降低的数额。Track项的状态为Negative时，降低Switch A上虚拟转发器的权重，使其低于失效下限10，即权重降低的数额大于245，以便其他设备接替Switch A的转发任务。本例中，配置虚拟转发器权重降低数额为250。

[SwitchA] interface vlan-interface 2

[SwitchA-Vlan-interface2] vrrp ipv6 vrid 1 weight track 1 reduced 250

(2) 配置Switch B

# 配置VLAN2。

<SwitchB> system-view

[SwitchB] vlan 2

[SwitchB-vlan2] port ethernet 1/0/5

[SwitchB-vlan2] quit

# 配置VRRP工作在负载均衡模式。

[SwitchB] vrrp mode load-balance

# 创建备份组1，并配置备份组1的虚拟IP地址为FE80::10和1::10。

[SwitchB] interface vlan-interface 2

[SwitchB-Vlan-interface2] ipv6 address fe80::2 link-local

[SwitchB-Vlan-interface2] ipv6 address 1::2 64

[SwitchB-Vlan-interface2] vrrp ipv6 vrid 1 virtual-ip fe80::10 link-local

[SwitchB-Vlan-interface2] vrrp ipv6 vrid 1 virtual-ip 1::10

# 配置Swtich B在备份组1中的优先级为110，高于Switch C的优先级100，以保证Switch A出现故障时，Switch B成为Master。

[SwitchB-Vlan-interface2] vrrp ipv6 vrid 1 priority 110

# 配置Switch B工作在抢占方式，抢占延迟时间为5秒。

[SwitchB-Vlan-interface2] vrrp ipv6 vrid 1 preempt-mode timer delay 5

# 配置允许发布RA消息，以便1::/64网段内主机通过RA消息学习到缺省网关地址。

[SwitchB-Vlan-interface2] undo ipv6 nd ra halt

[SwitchB-Vlan-interface2] quit

# 创建和VLAN接口3物理状态关联的Track项1。如果Track项的状态为Negative，则说明Switch B的上行接口出现故障。

[SwitchB] track 1 interface vlan-interface 3

# 配置虚拟转发器监视Track项1并指定权重降低的数额。Track项的状态为Negative时，降低Switch B上虚拟转发器的权重，使其低于失效下限10，即权重降低的数额大于245，以便其他设备接替Switch B的转发任务。本例中，配置虚拟转发器权重降低数额为250。

[SwitchB] interface vlan-interface 2

[SwitchB-Vlan-interface2] vrrp ipv6 vrid 1 weight track 1 reduced 250

(3) 配置Switch C

# 配置VLAN2。

<SwitchC> system-view

[SwitchC] vlan 2

[SwitchC-vlan2] port ethernet 1/0/5

[SwitchC-vlan2] quit

# 配置VRRP工作在负载均衡模式。

[SwitchC] vrrp mode load-balance

# 创建备份组1，并配置备份组1的虚拟IP地址为FE80::10和1::10。

[SwitchC] interface vlan-interface 2

[SwitchC-Vlan-interface2] ipv6 address fe80::3 link-local

[SwitchC-Vlan-interface2] ipv6 address 1::3 64

[SwitchC-Vlan-interface2] vrrp ipv6 vrid 1 virtual-ip fe80::10 link-local

[SwitchC-Vlan-interface2] vrrp ipv6 vrid 1 virtual-ip 1::10

# 配置Switch C工作在抢占方式，抢占延迟时间为5秒。

[SwitchC-Vlan-interface2] vrrp ipv6 vrid 1 preempt-mode timer delay 5

# 配置允许发布RA消息，以便1::/64网段内主机通过RA消息学习到缺省网关地址。

[SwitchC-Vlan-interface2] undo ipv6 nd ra halt

[SwitchC-Vlan-interface2] quit

# 创建和VLAN接口3物理状态关联的Track项1。如果Track项的状态为Negative，则说明Switch C的上行接口出现故障。

[SwitchC] track 1 interface vlan-interface 3

# 配置虚拟转发器监视Track项1并指定权重降低的数额。Track项的状态为Negative时，降低Switch C上虚拟转发器的权重，使其低于失效下限10，即权重降低的数额大于245，以便其他设备接替Switch C的转发任务。本例中，配置虚拟转发器权重降低数额为250。

[SwitchC] interface vlan-interface 2

[SwitchC-Vlan-interface2] vrrp ipv6 vrid 1 weight track 1 reduced 250

(4) 验证配置结果

配置完成后，在Host A上可以ping通外网。通过 display vrrp ipv6 verbose 命令查看配置后的结果。

# 显示Switch A上备份组1的详细信息。

[SwitchA-Vlan-interface2] display vrrp ipv6 verbose

IPv6 Standby Information:

Run Mode : Load Balance

Run Method : Virtual MAC

Total number of virtual routers : 1

Interface Vlan-interface2

VRID : 1 Adver Timer : 100

Admin Status : Up State : Master

Config Pri : 120 Running Pri : 120

Preempt Mode : Yes Delay Time : 5

Auth Type : None

Virtual IP : FE80::10

1::10

Member IP List : FE80::1 (Local, Master)

FE80::2 (Backup)

FE80::3 (Backup)

Forwarder Information: 3 Forwarders 1 Active

Config Weight : 255

Running Weight : 255

Forwarder 01

State : Active

Virtual MAC : 000f-e2ff-4011 (Owner)

Owner ID : 0000-5e01-1101

Priority : 255

Active : local

Forwarder 02

State : Listening

Virtual MAC : 000f-e2ff-4012 (Learnt)

Owner ID : 0000-5e01-1103

Priority : 127

Active : FE80::2

Forwarder 03

State : Listening

Virtual MAC : 000f-e2ff-4013 (Learnt)

Owner ID : 0000-5e01-1105

Priority : 127

Active : FE80::3

Forwarder Weight Track Information:

Track Object : 1 State : Positive Weight Reduced : 250

# 显示Switch B上备份组1的详细信息。

[SwitchB-Vlan-interface2] display vrrp ipv6 verbose

IPv6 Standby Information:

Run Mode : Load Balance

Run Method : Virtual MAC

Total number of virtual routers : 1

Interface Vlan-interface2

VRID : 1 Adver Timer : 100

Admin Status : Up State : Backup

Config Pri : 110 Running Pri : 110

Preempt Mode : Yes Delay Time : 5

Become Master : 2200ms left

Auth Type : None

Virtual IP : FE80::10

1::10

Member IP List : FE80::2 (Local, Backup)

FE80::1 (Master)

FE80::3 (Backup)

Forwarder Information: 3 Forwarders 1 Active

Config Weight : 255

Running Weight : 255

Forwarder 01

State : Listening

Virtual MAC : 000f-e2ff-4011 (Learnt)

Owner ID : 0000-5e01-1101

Priority : 127

Active : FE80::1

Forwarder 02

State : Active

Virtual MAC : 000f-e2ff-4012 (Owner)

Owner ID : 0000-5e01-1103

Priority : 255

Active : local

Forwarder 03

State : Listening

Virtual MAC : 000f-e2ff-4013 (Learnt)

Owner ID : 0000-5e01-1105

Priority : 127

Active : FE80::3

Forwarder Weight Track Information:

Track Object : 1 State : Positive Weight Reduced : 250

# 显示Switch C上备份组1的详细信息。

[SwitchC-Vlan-interface2] display vrrp ipv6 verbose

IPv6 Standby Information:

Run Mode : Load Balance

Run Method : Virtual MAC

Total number of virtual routers : 1

Interface Vlan-interface2

VRID : 1 Adver Timer : 100

Admin Status : Up State : Backup

Config Pri : 100 Running Pri : 100

Preempt Mode : Yes Delay Time : 5

Become Master : 4200ms left

Auth Type : None

Virtual IP : FE80::10

1::10

Member IP List : FE80::3 (Local, Backup)

FE80::1 (Master)

FE80::2 (Backup)

Forwarder Information: 3 Forwarders 1 Active

Config Weight : 255

Running Weight : 255

Forwarder 01

State : Listening

Virtual MAC : 000f-e2ff-4011 (Learnt)

Owner ID : 0000-5e01-1101

Priority : 127

Active : FE80::1

Forwarder 02

State : Listening

Virtual MAC : 000f-e2ff-4012 (Learnt)

Owner ID : 0000-5e01-1103

Priority : 127

Active : FE80::2

Forwarder 03

State : Active

Virtual MAC : 000f-e2ff-4013 (Owner)

Owner ID : 0000-5e01-1105

Priority : 255

Active : local

Forwarder Weight Track Information:

Track Object : 1 State : Positive Weight Reduced : 250

以上显示信息表示在备份组1中Switch A为Master路由器，Switch B和Switch C 为Backup路由器。Switch A、Switch B和Switch C上各自存在一个AVF，并存在作为备份的两个LVF。

# 当Switch A的上行接口（VLAN接口3）出现故障后，通过 display vrrp ipv6 verbose 命令查看Switch A上备份组的详细信息。

[SwitchA-Vlan-interface2] display vrrp ipv6 verbose

IPv6 Standby Information:

Run Mode : Load Balance

Run Method : Virtual MAC

Total number of virtual routers : 1

Interface Vlan-interface2

VRID : 1 Adver Timer : 100

Admin Status : Up State : Master

Config Pri : 120 Running Pri : 120

Preempt Mode : Yes Delay Time : 5

Auth Type : None

Virtual IP : FE80::10

1::10

Member IP List : FE80::1 (Local, Master)

FE80::2 (Backup)

FE80::3 (Backup)

Forwarder Information: 3 Forwarders 0 Active

Config Weight : 255

Running Weight : 5

Forwarder 01

State : Initialize

Virtual MAC : 000f-e2ff-4011 (Owner)

Owner ID : 0000-5e01-1101

Priority : 0

Active : FE80::3

Forwarder 02

State : Initialize

Virtual MAC : 000f-e2ff-4012 (Learnt)

Owner ID : 0000-5e01-1103

Priority : 0

Active : FE80::2

Forwarder 03

State : Initialize

Virtual MAC : 000f-e2ff-4013 (Learnt)

Owner ID : 0000-5e01-1105

Priority : 0

Active : FE80::3

Forwarder Weight Track Information:

Track Object : 1 State : Negative Weight Reduced : 250

# 通过 display vrrp ipv6 verbose 命令查看Switch C上备份组的详细信息。

[SwitchC-Vlan-interface2] display vrrp ipv6 verbose

IPv6 Standby Information:

Run Mode : Load Balance

Run Method : Virtual MAC

Total number of virtual routers : 1

Interface Vlan-interface2

VRID : 1 Adver Timer : 100

Admin Status : Up State : Backup

Config Pri : 100 Running Pri : 100

Preempt Mode : Yes Delay Time : 5

Become Master : 4200ms left

Auth Type : None

Virtual IP : FE80::10

1::10

Member IP List : FE80::3 (Local, Backup)

FE80::1 (Master)

FE80::2 (Backup)

Forwarder Information: 3 Forwarders 2 Active

Config Weight : 255

Running Weight : 255

Forwarder 01

State : Active

Virtual MAC : 000f-e2ff-4011 (Take Over)

Owner ID : 0000-5e01-1101

Priority : 85

Active : local

Redirect Time : 93 secs

Time-out Time : 1293 secs

Forwarder 02

State : Listening

Virtual MAC : 000f-e2ff-4012 (Learnt)

Owner ID : 0000-5e01-1103

Priority : 85

Active : FE80::2

Forwarder 03

State : Active

Virtual MAC : 000f-e2ff-4013 (Owner)

Owner ID : 0000-5e01-1105

Priority : 255

Active : local

Forwarder Weight Track Information:

Track Object : 1 State : Positive Weight Reduced : 250

以上显示信息表示Switch A的上行接口出现故障后，Switch A上虚拟转发器的权重降低为5，低于失效下限。Switch A上所有虚拟转发器的状态均变为Initialized，不能再用于转发。Switch C成为虚拟MAC地址000f-e2ff-4011对应虚拟转发器的AVF，接管Switch A的转发任务。

# Timeout Timer超时后（约1800秒后），查看Switch C上备份组的详细信息。

[SwitchC-Vlan-interface2] display vrrp ipv6 verbose

IPv6 Standby Information:

Run Mode : Load Balance

Run Method : Virtual MAC

Total number of virtual routers : 1

Interface Vlan-interface2

VRID : 1 Adver Timer : 100

Admin Status : Up State : Backup

Config Pri : 100 Running Pri : 100

Preempt Mode : Yes Delay Time : 5

Become Master : 4200ms left

Auth Type : None

Virtual IP : FE80::10

1::10

Member IP List : FE80::3 (Local, Backup)

FE80::1 (Master)

FE80::2 (Backup)

Forwarder Information: 2 Forwarders 1 Active

Config Weight : 255

Running Weight : 255

Forwarder 02

State : Listening

Virtual MAC : 000f-e2ff-4012 (Learnt)

Owner ID : 0000-5e01-1103

Priority : 127

Active : FE80::2

Forwarder 03

State : Active

Virtual MAC : 000f-e2ff-4013 (Owner)

Owner ID : 0000-5e01-1105

Priority : 255

Active : local

Forwarder Weight Track Information:

Track Object : 1 State : Positive Weight Reduced : 250

以上显示信息表示，Timeout Timer超时后，删除虚拟MAC地址000f-e2ff-4011对应的虚拟转发器，不再转发目的MAC地址为该MAC的报文。

# Switch A出现故障后，通过 display vrrp ipv6 verbose 命令查看Switch B上备份组的详细信息。

[SwitchB-Vlan-interface2] display vrrp ipv6 verbose

IPv6 Standby Information:

Run Mode : Load Balance

Run Method : Virtual MAC

Total number of virtual routers : 1

Interface Vlan-interface2

VRID : 1 Adver Timer : 100

Admin Status : Up State : Master

Config Pri : 110 Running Pri : 110

Preempt Mode : Yes Delay Time : 5

Auth Type : None

Virtual IP : FE80::10

1::10

Member IP List : FE80::2 (Local, Master)

FE80::3 (Backup)

Forwarder Information: 2 Forwarders 1 Active

Config Weight : 255

Running Weight : 255

Forwarder 02

State : Active

Virtual MAC : 000f-e2ff-4012 (Owner)

Owner ID : 0000-5e01-1103

Priority : 255

Active : local

Forwarder 03

State : Listening

Virtual MAC : 000f-e2ff-4013 (Learnt)

Owner ID : 0000-5e01-1105

Priority : 127

Active : FE80::3

Forwarder Weight Track Information:

Track Object : 1 State : Positive Weight Reduced : 250

以上显示信息表示Switch A出现故障后，Switch B的优先级高于Switch C，将抢占成为Master路由器。


1.8 VRRP常见错误配置举例

1. 频频出现配置错误的提示

原因分析：

l 可能是备份组内的另一台路由器配置不一致造成的。

l 可能是有的机器试图发送非法的VRRP报文。

解决方法：

l 对于第一种情况，可以通过修改配置来解决。

l 对于第二种情况，则是有些机器有不良企图，应当通过非技术手段来解决。

2. 同一个备份组内出现多个Master路由器

原因分析：

l 若短时间内存在多个Master路由器，属于正常情况，无需进行人工干预。

l 若多个Master路由器长时间共存，这很有可能是由于Master路由器之间收不到VRRP报文，或者收到的报文不合法造成的。

解决方法：先在多个Master路由器之间执行ping操作。如果ping不通，则检查网络连接是否正确；如果能ping通，则检查VRRP的配置是否一致。对于同一个VRRP备份组的配置，必须要保证虚拟IP地址个数、每个虚拟IP地址、通告报文的发送时间间隔和认证方式完全一样。

3. VRRP的状态频繁转换

原因分析：这种情况一般是由于VRRP通告报文发送时间间隔太短造成的。

解决方法：增加通告报文的发送时间间隔或者设置抢占延迟都可以解决这种故障。


1 双机热备配置

相关链接

  • 1.1 双机热备简介
  • 1.2 双机热备配置任务简介
  • 1.3 使能业务备份功能
  • 1.4 配置备份VLAN
  • 1.5 双机热备显示和维护
  • 1.6 双机热备典型配置举例
  • 1.7 注意事项
父主题： 09-双机热备配置


1.1 双机热备简介

1.1.1 双机热备概述

随着用户对网络可靠性的要求越来越高，如何保证网络的不间断传输，已成为一个必须解决的问题。特别是在一些重要业务的入口或接入点上，需要保证网络的不间断运行，如企业的Internet接入点、银行的数据库服务器等。在这些业务点上如果只使用一台设备，无论其可靠性多高，系统都必然要承受因单点故障而导致网络业务中断的风险，如 图1-1 所示。

图1-1 非双机热备组网

为解决上述问题，引入了双机热备机制，如 图1-2 所示。双机热备机制主要包括两方面内容：双机业务备份和流量倒换。其基本流程为：

(1) 建立备份链路，即将两台设备上的备份接口连接起来。

(2) 两台设备通过备份链路定时互相发送状态协商报文，当设备进入同步状态后，开始备份对端设备上的业务，直至两台设备上的业务状态完全一致。

(3) 当其中一台设备发生故障时，利用VRRP或动态路由（例如OSPF）机制将业务流量切换到对端设备，业务数据流便可以从对端设备上通过，从而在很大程度上避免了网络业务的中断。

本文仅描述双机热备中双机业务备份，当前仅支持对Portal业务信息进行备份。

图1-2 双机热备组网

1.1.2 热备状态简介

设备的热备状态有静默、独立运行和同步三种。

l 静默：表示设备刚启动正在等待系统稳定，或者热备状态正在从同步向独立运行转换的中间状态。

l 独立运行：表示静默定时器超时，但是设备没有与其它设备建立备份连接。

l 同步：表示设备与对端设备状态协商成功，可以进行业务备份。

三种状态之间的转换关系如 图1-3 所示。

图1-3 热备状态转换关系图


1.2 双机热备配置任务简介

要实现两台设备之间互为热备份，必须进行以下配置：

l 路由相关配置。在本设备以及上、下层设备上进行VRRP或者动态路由配置，以保证当一台设备故障时，流量能够自动切换到备份设备。

l 业务备份配置，用于实现两台设备之间业务相关信息的实时备份。

本文仅描述业务备份配置。

表1-1 业务备份配置任务简介

配置任务 | 说明 | 详细配置
使能业务备份功能 | 必选 | 1.3
配置备份VLAN | 必选 | 1.4
业务模块的相关配置 | 可选 | 除了“使能业务备份功能”、“配置备份VLAN”，还需要其它配置，才能将Portal业务的相关信息自动备份到备份设备，相关配置请参见“安全配置指导”中的“Portal”


1.3 使能业务备份功能

在开启双机热备业务备份功能时，可以指定 dissymmetric-path 和 symmetric-path 参数。其中

l dissymmetric-path 表示业务备份支持非对称路径。使用该参数时，同一条会话中的数据流进入内网时经过双机热备中的一台设备，从内网出去时经过的设备是随机的，可以是进入时经过的设备，也可以是另一台设备。两台设备均处理业务，互为备份。

l symmetric-path 表示业务备份仅支持对称路径。使用该参数时，要求同一条会话中的数据流进入内网和从内网出去时必须经过双机热备中的同一台设备。一台设备处理业务，另一台设备只用作备份。

在实际应用中，选用 dissymmetric-path 还是 symmetric-path，需要参考组网环境和可使用的网络资源，但本设备和对端设备的配置必须一致，要么均为 dissymmetric-path，要么均为 symmetric-path。

表1-2 配置业务备份

操作 | 命令 | 说明
进入系统视图 | system-view | -
开启双机热备业务备份功能 | dhbk enable backup-type { dissymmetric-path | symmetric-path } | 必选 缺省情况下，双机热备业务备份功能处于关闭状态


1.4 配置备份VLAN

本特性所指的备份VLAN是专用于双机热备的VLAN。将某VLAN配置为备份VLAN后，该VLAN内的接口就能作为备份接口用于传输双机热备相关报文。

表1-3 配置备份VLAN

操作 | 命令 | 说明
进入系统视图 | system-view | -
创建VLAN并将接口加入指定VLAN | 请参见“二层技术-以太网交换配置指导”中的“VLAN” | 必选
退回到系统视图 | quit | -
将指定VLAN配置为备份VLAN | dhbk vlan vlan-id | 必选 缺省情况下，系统没有配置备份VLAN

l 设备使用VLAN tag+私有协议号来标识双机热备报文，并在备份VLAN内使用广播方式将双机热备报文发送到对端。因此，建议在备份VLAN下不要配置其它业务（比如将备份VLAN配置为MAC VLAN、Voice VLAN等），以免影响是双机热备功能的运行。

l 接口加入备份VLAN后，除了传输双机热备报文还可用于转发其它报文。


1.5 双机热备显示和维护

在完成上述配置后，在任意视图下执行 display 命令可以显示配置后双机热备功能的运行情况，通过查看显示信息验证配置的效果。

表1-4 双机热备显示和维护

操作 | 命令
显示双机热备管理的运行状态和相关信息 | display dhbk status [ | { begin | exclude | include } regular-expression ]


1.6 双机热备典型配置举例

1. 组网需求

如图1-4 所示，Device B和Device C作为某企业内部网络的网关，Device A和Device D通过旁挂方式分别与Device B和Device C相连，为企业内部用户提供Portal接入认证。现要求Device A和Device D两设备互为备份，当其中一台设备故障时，另一台设备能迅速接替工作，保证网络业务不中断。

2. 组网图

图1-4 双机热备管理典型组网图

3. 配置步骤

(1) Device A的配置

# 创建VLAN 100。

<DeviceA> system-view

[DeviceA] vlan 100

# 将端口Ethernet1/0/1加入VLAN 100。

[DeviceA-vlan100] port ethernet 1/0/1

[DeviceA-vlan100] quit

# 设置VLAN 100为备份VLAN

[DeviceA] dhbk vlan 100

# 使能双机热备业务备份功能，且支持对称路径。

[DeviceA] dhbk enable backup-type symmetric-path

(2) Device B的配置

# 创建VLAN 100。

<DeviceB> system-view

[DeviceB] vlan 100

# 将端口Ethernet1/0/1加入VLAN 100。

[DeviceB-vlan100] port ethernet 1/0/1

[DeviceB-vlan100] quit

# 将端口Ethernet1/0/2加入VLAN 100。

因为Device B和Device C之间可能要传输多个VLAN的报文，所以需要将Ethernet1/0/2的类型设置为Trunk，并允许VLAN 100通过。

[DeviceB] interface ethernet 1/0/2

[DeviceB-Ethernet1/0/2] port link-type trunk

[DeviceB-Ethernet1/0/2] port trunk permit vlan 100

Please wait... Done.

(3) Device C上的配置与Device B上的配置一致，不再赘述。

(4) Device D上的配置与Device A上的配置一致，不再赘述。


1.7 注意事项

配置双机热备时需要注意如下事项：

l 双机热备目前只支持两台设备进行备份，不支持多台设备备份。

l 备份业务涉及的接口必须在双机热备的两台设备上同时存在，否则会导致备份数据不生效，业务报文丢失的情况。比如，设备A上的会话使用接口Ethernet1/0/1和Ethernet1/0/3传输信息，要成功进行热备，设备B上也必须有接口Ethernet1/0/1和Ethernet1/0/3，反之亦然。


1 BFD配置

l 本文所指的路由器代表运行了路由协议的三层设备。

l BFD功能中所指的“接口”为三层口，包括VLAN接口、三层以太网端口等。三层以太网端口是指被配置为三层模式的以太网端口，有关以太网端口模式切换的操作，请参见“二层技术-以太网交换配置指导”中的“以太网端口配置”。

相关链接

  • 1.1 BFD简介
  • 1.2 配置BFD基本功能
  • 1.3 BFD显示和维护
父主题： 10-BFD配置


1.1 BFD简介

为了减小设备故障对业务的影响、提高网络的可用性，设备需要能够尽快检测到与相邻设备间的通信故障，以便能够及时采取措施，从而保证业务继续进行。

现有的故障检测方法主要包括以下几种：

l 硬件检测：例如通过SDH（Synchronous Digital Hierarchy，同步数字系列）告警检测链路故障。硬件检测的优点是可以很快发现故障，但并不是所有介质都能提供硬件检测。

l 慢Hello机制：通常采用路由协议中的Hello报文机制。这种机制检测到故障所需时间为秒级。对于高速数据传输，例如吉比特速率级，超过1秒的检测时间将导致大量数据丢失；对于时延敏感的业务，例如语音业务，超过1秒的延迟也是不能接受的。并且，这种机制依赖于路由协议。

l 其他检测机制：不同的协议有时会提供专用的检测机制，但在系统间互联互通时，这样的专用检测机制通常难以部署。

BFD（Bidirectional Forwarding Detection，双向转发检测）就是为了解决上述检测机制的不足而产生的，它是一套全网统一的检测机制，用于快速检测、监控网络中链路或者IP路由的转发连通状况，保证邻居之间能够快速检测到通信故障，从而快速建立起备用通道恢复通信。

1.1.1 BFD工作机制

BFD提供了一个通用的、标准化的、介质无关、协议无关的快速故障检测机制，可以为各上层协议如路由协议等统一地快速检测两台路由器间双向转发路径的故障。

BFD在两台路由器上建立会话，用来监测两台路由器间的双向转发路径，为上层协议服务。BFD本身并没有发现机制，而是靠被服务的上层协议通知其与谁建立会话，会话建立后如果在检测时间内没有收到对端的BFD控制报文则认为发生故障，通知被服务的上层协议，上层协议进行相应的处理。

1. BFD工作流程

图1-1 BFD会话建立流程图（以OSPF为例）

BFD会话建立过程：

(1) 上层协议通过自己的Hello机制发现邻居并建立连接；

(2) 上层协议在建立了新的邻居关系时，将邻居的参数及检测参数都（包括目的地址和源地址等）通告给BFD；

(3) BFD根据收到的参数进行计算并建立邻居。

图1-2 BFD处理网络故障流程图（以OSPF为例）

当网络出现故障时：

(1) BFD检测到链路/网络故障；

(2) 拆除BFD邻居会话；

(3) BFD通知本地上层协议进程BFD邻居不可达；

(4) 本地上层协议中止上层协议邻居关系；

(5) 如果网络中存在备用路径，路由器将选择备用路径。

BFD草案中没有规定检测的时间精度，目前支持BFD的设备大多数提供的是毫秒级检测。

2. BFD检测方式

l 单跳检测：BFD单跳检测是指对两个直连系统进行IP连通性检测，这里所说的“单跳”是IP的一跳。

l 多跳检测：BFD可以检测两个系统间的任意路径，这些路径可能跨越很多跳，也可能在某些部分发生重叠。

l 双向检测：BFD通过在双向链路两端同时发送检测报文，检测两个方向上的链路状态，实现毫秒级的链路故障检测。（BFD检测LSP是一种特殊情况，只需在一个方向发送BFD控制报文，对端通过其他路径报告链路状况。）

3. BFD会话的工作方式

l 控制报文方式：链路两端会话通过控制报文交互监测链路状态。

l Echo报文方式：链路某一端通过发送Echo报文由另一端转发回来，实现对链路的双向监测。

4. BFD运行模式

BFD会话建立前有两种模式：主动模式和被动模式。

l 主动模式：在建立会话前不管是否收到对端发来的BFD控制报文，都会主动发送BFD控制报文；

l 被动模式：在建立会话前不会主动发送BFD控制报文，直到收到对端发送来的控制报文。

在会话初始化过程中，通信双方至少要有一个运行在主动模式才能成功建立起会话。

BFD会话建立后通信双方均运行在异步模式：以异步模式运行的设备周期性地发送BFD控制报文，如果在检测时间内对端没有收到BFD控制报文，则认为会话down。

当BFD会话工作于echo报文方式时，不受运行模式控制。

5. 动态改变BFD参数功能

会话建立后，可以动态协商BFD的相关参数（例如最小发送间隔、最小接收间隔、初始模式、报文认证等），两端协议通过发送相应的协商报文后采用新的参数，不影响会话的当前状态。

6. 认证方式

BFD提供了三种认证方式，分别是：

l Simple：简单字符认证

l MD5：MD5认证

l SHA1：SHA1认证（Secure Hash Algorithm 1）

1.1.2 BFD报文格式

BFD控制报文封装在UDP报文中传送，对于单跳检测其UDP目的端口号为3784，对于多跳检测其UDP目的端口号为4784（也可配置为3784，具体参见配置任务）。BFD echo报文与BFD控制报文格式类似（区别在于字段Desired Min TX Interval和Required Min RX Interval为空），其UDP目的端口号为3785。报文格式如图1-3所示。

图1-3 BFD报文格式图

l Vers：协议的版本号，协议版本为1。

l Diag：本地会话最后一次从up状态转换到其他状态的原因如表1-1：

表1-1 Diag原因描述

Diag | 描述
0 | 无诊断信息（No Diagnostic）
1 | 控制检测超时（Control Detection Time Expired）
2 | 回声功能失效（Echo Function Failed）
3 | 邻居通知会话down（Neighbor Signaled Session Down）
4 | 转发平面重启（Forwarding Plane Reset）
5 | 通道失效（Path Down）
6 | 连接通道失效（Concatenated Path Down）
7 | 管理down（Administratively Down）
8 | 反向链路down（Reverse Concatenated Path Down）
9～31 | 保留位（Reserved for future use）

l State（Sta）：BFD会话当前状态，取值为：0代表AdminDown，1代表Down，2代表Init，3代表Up。

l Poll（P）：设置为1，表示发送方请求进行连接确认，或者发送请求参数改变的确认；设置为0，表示发送方不请求确认。

l Final（F）：设置为1，表示发送方响应一个接收到P比特为1的BFD控制报文；设置为0，表示发送方不响应一个接收到P比特为1的BFD控制报文。

l Control Plane Independent（C）：设置为1，表示发送方的BFD实现不依赖于它的控制平面（即，BFD报文在转发平面传输，即使控制平面失效，BFD仍然能够起作用）；设置为0，表示BFD报文在控制平面传输。

l Authentication Present（A）：如果设置为1，则表示控制报文包含认证字段，并且会话是被认证的。

l Demand（D）：设置为1，表示发送方希望操作在查询模式；设置为0，表示发送方不区分是否操作在查询模式，或者表示发送方不能操作在查询模式。

l Reserved（R）：在发送时设置为0，在接收时忽略。

l Detect Mult：检测时间倍数。即接收方允许发送方发送报文的最大连续丢包数，用来检测链路是否正常。

l Length：BFD控制报文的长度，单位字节。

l My Discriminator：发送方产生的一个唯一的、非0鉴别值，用来区分两个协议之间的多个BFD会话。

l Your Discriminator：接收方收到的鉴别值“My Discriminator”，如果没有收到这个值就返回0。

l Desired Min Tx Interval：发送方发送BFD控制报文时想要采用的最小间隔，单位毫秒。

l Required Min Rx Interval：发送方能够支持的接收两个BFD控制报文之间的间隔，单位毫秒。

l Required Min Echo Rx Interval：发送方能够支持的接收两个BFD回声报文之间的间隔，单位毫秒。如果这个值设置为0，则发送不支持接收BFD回声报文。

l Auth Type：BFD控制报文使用的认证类型。

l Auth Len：认证字段的长度，包括认证类型与认证长度字段。

1.1.3 BFD支持的应用

l OSPF与BFD联动：详细情况请参见“三层技术-IP路由配置指导”中的“OSPF”。

l OSPFv3与BFD联动：详细情况请参见“三层技术-IP路由配置指导”中的“OSPFv3”。

l IS-IS与BFD联动：详细情况请参见“三层技术-IP路由配置指导”中的“IS-IS”。

l IPv6 IS-IS与BFD联动：详细情况请参见“三层技术-IP路由配置指导”中的“IPv6 IS-IS”。

l 静态路由与BFD联动：详细情况请参见“三层技术-IP路由配置指导”中的“静态路由”。

l BGP与BFD联动：详细情况请参见“三层技术-IP路由配置指导”中的“BGP”。

l IPv6 BGP与BFD联动：详细情况请参见“三层技术-IP路由配置指导”中的“IPv6 BGP”。

l PIM与BFD联动：详细情况请参见“IP组播配置指导”中的“PIM”。

l IPv6 PIM与BFD联动：详细情况请参见“IP组播配置指导”中的“IPv6 PIM”。

l Track与BFD联动：详细情况请参见“可靠性配置指导”中的“Track”。

l IP快速重路由：目前支持快速重路由的有OSPF、RIP、IS-IS和静态路由。详细情况请参见“三层技术-IP路由配置指导”中的“OSPF”、“IS-IS”、“RIP”和“静态路由”。

l 对于S3600V2-SI系列交换机，目前仅支持静态路由、Track与BFD联动。

l 对于S3600V2-SI系列交换机，目前支持快速重路由的只有RIP和静态路由。

1.1.4 协议规范

与BFD相关的协议规范有：

l draft-ietf-bfd-base-09：Protocol Independent Bidirectional Forwarding Detection

l draft-ietf-bfd-v4v6-1hop-10：BFD for IPv4 and IPv6（Single Hop）

l draft-ietf-bfd-multihop-08：BFD for Multihop Paths

l draft-ietf-bfd-generic-05：Generic Application of BFD


1.2 配置BFD基本功能

BFD基本功能配置，是配置其他协议和BFD联动应用的基础。

1.2.1 配置准备

在配置BFD基本功能之前，需完成以下任务：

l 配置接口的网络层地址，使相邻节点之间网络层可达

l 配置可支持BFD的路由协议

1.2.2 配置步骤

表1-2 配置BFD基本功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置BFD会话建立前的会话模式 | bfd session init-mode { active | passive } | 可选 缺省情况下，BFD会话建立前的会话模式为 active
配置多跳BFD控制报文的目的端口号 | bfd multi-hop destination-port port-number | 可选 缺省情况下，多跳BFD控制报文的目的端口号为4784
配置echo报文源IP地址 | bfd echo-source-ip ip-address | 可选 需要注意的是，为了避免对端发送大量的ICMP重定向报文造成网络拥塞，建议不要将BFD echo报文的源IP地址配置为属于该设备任何一个接口所在网段
进入接口视图 | interface interface-type interface-number | -
配置接收echo报文的最小时间间隔 | bfd min-echo-receive-interval value | 可选 请参见 1.1.2 BFD报文格式中的参数Required Min Echo Rx Interval 缺省情况下，接收echo报文的最小时间间隔为400毫秒
配置发送BFD控制报文的最小时间间隔 | bfd min-transmit-interval value | 可选 请参见 1.1.2 BFD报文格式中的参数Desired Min Tx Interval 缺省情况下，发送BFD控制报文的最小时间间隔为400毫秒
配置接收BFD控制报文的最小时间间隔 | bfd min-receive-interval value | 可选 请参见 1.1.2 BFD报文格式中的参数Required Min Rx Interval 缺省情况下，接收BFD控制报文的最小时间间隔为400毫秒
配置检测时间倍数 | bfd detect-multiplier value | 可选 请参见 1.1.2 BFD报文格式中的参数Detect Mult 缺省情况下，检测时间倍数为5
配置接口的认证方式 | bfd authentication-mode { md5 key-id key | sha1 key-id key | simple key-id password } | 可选 缺省情况下，接口为不认证方式

如 图1-1 所示，假如Router A的Desired Min Tx Interval为100毫秒，Required Min Rx Interval为300毫秒，Detect Mult为5；Router B的Desired Min Tx Interval为150毫秒，Required Min Rx Interval为400毫秒，Detect Mult为10。那么会有以下结果：

l Router A的实际发送时间为Router A发送控制报文的最小时间间隔和Router B接收控制报文的最小时间间隔之间的较大值＝Max（100，400）＝400毫秒。

l Router B的实际发送时间为Router B发送控制报文的最小时间间隔和Router A接收控制报文的最小时间间隔之间的较大值＝Max（150，300）＝300毫秒。

l Router A的实际检测时间为Router B的检测时间倍数和Router B的实际发送时间的乘积＝10×300＝3000毫秒。

l Router B的实际检测时间为Router A的检测时间倍数和Router A的实际发送时间的乘积＝5×400＝2000毫秒。


1.3 BFD显示和维护

在完成上述配置后，在任意视图下执行 display 命令可以显示配置后BFD的运行情况，通过查看显示信息验证配置的效果。

在用户视图下执行 reset 命令可以清除BFD会话的统计信息。

表1-3 BFD显示和维护

操作 | 命令
显示使能的BFD接口信息 | display bfd interface [ verbose ] [ | { begin | exclude | include } regular-expression ]
显示使能的BFD调试信息开关 | display bfd debugging-switches [ | { begin | exclude | include } regular-expression ]
显示BFD会话信息 | display bfd session [ slot slot-number [ all | verbose ] | verbose ] [ | { begin | exclude | include } regular-expression ]
清除BFD会话统计信息 | reset bfd session statistics [ slot slot-number ]


1 Track配置

相关链接

  • 1.1 Track简介
  • 1.2 Track配置任务简介
  • 1.3 配置Track与监测模块联动
  • 1.4 配置Track与应用模块联动
  • 1.5 Track显示和维护
  • 1.6 Track典型配置举例
父主题： 11-Track配置


1.1 Track简介

1.1.1 联动功能介绍

图1-1 联动功能实现示意图

Track的用途是实现联动功能。如图1-1 所示，联动功能通过在监测模块、Track模块和应用模块之间建立关联，实现这些模块之间的联合动作。联动功能利用监测模块对链路状态、网络性能等进行监测，并通过Track模块将监测结果及时通知给应用模块，以便应用模块进行相应的处理。例如，在静态路由、Track和NQA之间建立联动，利用NQA监测静态路由的下一跳地址是否可达。NQA监测到下一跳不可达时，通过Track通知静态路由模块该监测结果，以便静态路由模块将该条路由置为无效，确保报文不再通过该静态路由转发。

如果应用模块直接与监测模块关联，由于不同监测模块通知给应用模块的监测结果形式各不相同，应用模块需要分别处理不同形式的监测结果。联动功能在应用模块和监测模块之间增加了Track模块，通过Track模块屏蔽不同监测模块的差异，将监测结果以统一的形式通知给应用模块，从而简化应用模块的处理。

1.1.2 联动功能工作原理

联动功能的工作原理分为两部分：

l Track模块与监测模块联动

l Track模块与应用模块联动

1. Track模块与监测模块联动

Track模块和监测模块之间通过Track项建立关联。监测模块负责对接口状态、链路状态等进行监测，并将监测结果通知给Track模块；Track模块根据监测结果改变Track项的状态。

l 如果监测结果为监测对象工作正常（如接口处于Up状态、网络可达），则对应Track项的状态为Positive。

l 如果监测结果为监测对象出现异常（如接口处于Down状态、网络不可达），则对应Track项的状态为Negative。

l 如果监测结果无效（如NQA作为监测模块时，与Track项关联的NQA测试组不存在），则对应Track项的状态为Invalid。

目前，可以与Track模块实现联动功能的监测模块包括：

l NQA（Network Quality Analyzer，网络质量分析）

l BFD（Bidirectional Forwarding Detection，双向转发检测）

l 接口管理

2. Track模块与应用模块联动

Track模块和应用模块之间通过Track项建立关联。Track项的状态改变后，通知应用模块；应用模块根据Track项的状态，及时进行相应的处理，从而避免通信的中断或服务质量的降低。

目前，可以与Track模块实现联动功能的应用模块包括：

l VRRP（Virtual Router Redundancy Protocol，虚拟路由器冗余协议）

l 静态路由

l 策略路由

在某些情况下，Track项状态发生变化后，如果立即通知应用模块，则可能会由于路由无法及时恢复等原因，导致通信中断。例如，VRRP备份组中Master路由器通过Track监视上行接口的状态。上行接口出现故障时，Track通知Master路由器降低优先级，使得Backup路由器抢占成为新的Master，负责转发报文。当上行接口恢复时，如果Track立即通知原来的Master路由器恢复优先级，该路由器将立即承担转发任务。此时该路由器可能尚未恢复上行的路由，从而导致报文转发失败。在这种情况下，用户可以配置Track项状态发生变化时，延迟一定的时间通知应用模块。

1.1.3 联动功能应用举例

下面以NQA、Track和静态路由联动为例，说明联动功能的工作原理。

用户在设备上配置了一条静态路由，下一跳地址为192.168.0.88。如果192.168.0.88可达，则报文可以通过该静态路由转发，该静态路由有效；如果192.168.0.88不可达，则通过该静态路由转发报文会导致报文转发失败，此时，需要将该静态路由置为无效。通过在NQA、Track模块和静态路由之间建立联动，可以实现实时监测下一跳的可达性，以便及时判断静态路由是否有效。

在此例中联动功能的配置方法及其工作原理为：

(1) 创建NQA测试组，通过NQA测试组监测目的地址192.168.0.88是否可达。

(2) 创建和NQA测试组关联的Track项。192.168.0.88可达时，NQA会将监测结果通知给Track模块，Track模块将该Track项的状态变为Positive；192.168.0.88不可达时，NQA将监测结果通知给Track模块，Track模块将该Track项的状态变为Negative。

(3) 配置这条静态路由和Track项关联。如果Track模块通知静态路由Track项的状态为Positive，则静态路由模块将这条路由置为有效；如果Track模块通知静态路由Track项的状态为Negative，则静态路由模块将这条路由置为无效。


1.2 Track配置任务简介

为了实现联动功能，需要在Track与监测模块、Track与应用模块之间分别建立联动关系。

表1-1 Track配置任务简介

配置任务 |  | 说明 | 详细配置
配置Track与监测模块联动 | 配置Track与NQA联动 | 三者必选其一 | 1.3.1
 | 配置Track与BFD联动 |  | 1.3.2
 | 配置Track与接口管理联动 |  | 1.3.3
配置Track与应用模块联动 | 配置Track与VRRP联动 | 三者必选其一 | 1.4.1
 | 配置Track与静态路由联动 |  | 1.4.2
 | 配置Track与策略路由联动 |  | 1.4.3


1.3 配置Track与监测模块联动

1.3.1 配置Track与NQA联动

NQA测试组周期性地探测某个目的地址是否可达、是否可以与某个目的服务器建立TCP连接等。如果在Track项和NQA测试组之间建立了关联，则当连续探测失败的次数达到指定的阈值时，NQA将通知Track模块监测对象出现异常，Track模块将与NQA测试组关联的Track项的状态置为Negative；否则，NQA通知Track模块监测对象正常工作，Track模块将Track项的状态置为Positive。NQA的详细介绍，请参见“网络管理和监控配置指导”中的“NQA”。

表1-2 配置Track与NQA联动

操作 | 命令 | 说明
进入系统视图 | system-view | -
创建与NQA测试组中指定联动项关联的Track项，并指定Track项状态变化时通知应用模块的延迟时间 | track track-entry-number nqa entry admin-name operation-tag reaction item-number [ delay { negative negative-time | positive positive-time } * ] | 必选 缺省情况下，没有创建与NQA测试组中指定联动项关联的Track项

配置Track项时，引用的NQA测试组或联动项可以不存在，此时该Track项的状态为Invalid。

1.3.2 配置Track与BFD联动

如果在Track项和BFD会话之间建立了关联，则当BFD判断出对端不可达时，BFD会通知Track模块将与BFD会话关联的Track项的状态置为Negative；否则，通知Track模块将Track项的状态置为Positive。

BFD会话支持两种工作方式：Echo报文方式和控制报文方式。Track项只能与Echo报文方式的BFD会话建立关联，不能与控制报文方式的BFD会话建立联动。BFD的详细介绍，请参见“可靠性配置指导”中的“BFD”。

1. 配置准备

配置Track与BFD联动前，需要配置BFD echo报文的源地址，配置方法请参见“可靠性配置指导”中的“BFD”。

2. 配置过程

表1-3 配置Track与BFD联动

操作 | 命令 | 说明
进入系统视图 | system-view | -
创建和BFD会话关联的Track项，并指定Track项状态变化时通知应用模块的延迟时间 | track track-entry-number bfd echo interface interface-type interface-number remote ip remote-ip local ip local-ip [ delay { negative negative-time | positive positive-time } * ] | 必选 缺省情况下，没有创建和BFD会话关联的Track项

配置Track与BFD联动时，VRRP备份组的虚拟IP地址不能作为BFD会话探测的本地地址和远端地址。

1.3.3 配置Track与接口管理联动

接口管理用来监视接口的物理状态和网络层协议状态。如果在Track项和接口之间建立了关联，则当接口的物理状态或网络层协议状态为up时，接口管理通知Track模块将与接口关联的Track项的状态置为Positive；接口的物理状态或网络层协议状态为down时，接口管理通知Track模块将Track项的状态为Negative。

表1-4 配置Track与接口管理联动

操作 | 命令 | 说明
进入系统视图 | system-view | -
创建和接口管理关联的Track项，监视接口的物理状态，并指定Track项状态变化时通知应用模块的延迟时间 | track track-entry-number interface interface-type interface-number [ delay { negative negative-time | positive positive-time } * ] | 二者必选其一 缺省情况下，没有创建和接口管理关联的Track项
创建和接口管理关联的Track项，监视接口的网络层协议状态，并指定Track项状态变化时通知应用模块的延迟时间 | track track-entry-number interface interface-type interface-number protocol { ipv4 | ipv6 } [ delay { negative negative-time | positive positive-time } * ]


1.4 配置Track与应用模块联动

1.4.1 配置Track与VRRP联动

VRRP是一种容错协议，它将一组承担网关功能的路由器加入到备份组中，形成一台虚拟路由器。备份组中的路由器根据优先级，选举出Master路由器，承担转发任务。优先级越高，越有可能成为Master路由器。其他路由器作为Backup路由器，当Master路由器发生故障时，取代Master承担转发任务，从而保证网络内的主机通过虚拟路由器不间断地与外部网络进行通信。

VRRP工作在标准协议模式和负载均衡模式时，通过在Track模块和VRRP备份组之间建立联动，可以实现：

l 根据上行链路的状态，改变路由器的优先级。当路由器的上行链路出现故障时，备份组无法感知上行链路的故障，如果该路由器为Master，将会导致局域网内的主机无法访问外部网络。通过联动功能，可以解决该问题。利用监测模块监视路由器上行链路的状态，并在监测模块、Track模块和VRRP备份组之间建立联动，当上行链路出现故障时，通知将Track项状态变为Negative，并将路由器的优先级降低指定的数额。从而，使得备份组内其它路由器的优先级高于这个路由器的优先级，成为Master路由器，保证局域网内主机与外部网络的通信不会中断。

l 在Backup路由器上监视Master路由器的状态。当Master路由器出现故障时，工作在切换模式的Backup路由器能够迅速成为Master路由器，以保证通信不会中断。

VRRP工作在负载均衡模式时，通过在Track模块和VRRP虚拟转发器之间建立联动，还可以实现：

l 根据上行链路的状态，改变虚拟转发器的优先级。当AVF（Active Virtual Forwarder，处于Active状态的虚拟转发器）的上行链路出现故障时，Track项的状态变为Negative，虚拟转发器的权重将降低指定的数额，以便虚拟转发器优先级更高的路由器抢占成为AVF，接替其转发流量。

l 在LVF（Listening Virtual Forwarder，处于Listening状态的虚拟转发器）上通过Track监视AVF的状态，当AVF出现故障时，工作在虚拟转发器快速切换模式的LVF能够迅速成为AVF，以保证通信不会中断。

表1-5 配置Track与VRRP备份组联动

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
创建备份组，并配置备份组的虚拟IP地址 | vrrp vrid virtual-router-id virtual-ip virtual-address | 必选 缺省情况下，没有创建备份组
配置VRRP备份组监视指定的Track项 | vrrp [ ipv6 ] vrid virtual-router-id track track-entry-number [ reduced priority-reduced | switchover ] | 必选 缺省情况下，没有指定VRRP备份组监视的Track项 VRRP工作在标准协议模式和负载均衡模式时，均支持本配置

表1-6 配置Track与VRRP虚拟转发器联动

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入接口视图 | interface interface-type interface-number | -
创建备份组，并配置备份组的虚拟IP地址 | vrrp vrid virtual-router-id virtual-ip virtual-address | 必选 缺省情况下，没有创建备份组
配置虚拟转发器监视指定的Track项 | vrrp [ ipv6 ] vrid virtual-router-id weight track track-entry-number [ reduced weight-reduced ] | 二者至少选择其一 缺省情况下，没有配置虚拟转发器的监视功能 在VRRP标准协议模式和负载均衡模式下均可进行本配置，但只有在VRRP负载均衡模式下本配置才会起作用
配置LVF通过Track功能监视AVF的状态 | vrrp [ ipv6 ] vrid virtual-router-id track track-entry-number forwarder-switchover member-ip ip-address

l 接口IP地址与虚拟IP地址相同的路由器称为IP地址拥有者。路由器在某个备份组中作为IP地址拥有者时，如果在该路由器上配置该备份组监视指定的接口或Track项，则该配置不会生效。该路由器不再作为IP地址拥有者后，之前的配置才会生效。

l 被监视Track项的状态由Negative变为Positive或Invalid后，对应的路由器优先级或虚拟转发器优先级会自动恢复。

l 可以通过 vrrp vrid track 命令或 vrrp vrid weight track 命令指定监视的Track项后，再通过 track 命令创建该Track项。

l VRRP配置的详细介绍，请参见“可靠性配置指导”中的“VRRP”。

1.4.2 配置Track与静态路由联动

静态路由是一种特殊的路由，由管理员手工配置。配置静态路由后，去往指定目的地的报文将按照管理员指定的路径进行转发。

静态路由的缺点在于：不能自动适应网络拓扑结构的变化，当网络发生故障或者拓扑发生变化时，可能会导致静态路由不可达，网络通信中断。

为了防止这种情况发生，可以配置其它路由和静态路由形成备份关系。静态路由可达时，根据静态路由转发报文，其它路由处于备份状态；静态路由不可达时，根据备份路由转发报文，从而避免通信中断，提高了网络可靠性。

通过在Track模块和静态路由之间建立联动，可以实现静态路由可达性的实时判断。

如果在配置静态路由时只指定了下一跳而没有指定出接口，可以通过联动功能，利用监测模块监视静态路由下一跳的可达性，并根据Track项的状态来判断静态路由的可达性：

l 当Track项状态为Positive时，静态路由的下一跳可达，配置的静态路由将生效；

l 当Track项状态为Negative时，静态路由的下一跳不可达，配置的静态路由无效；

l 当Track项状态为Invalid时，无法判断静态路由的下一跳是否可达，此时配置的静态路由生效。

表1-7 配置Track与静态路由联动

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置通过Track与静态路由联动，检测静态路由下一跳是否可达 | ip route-static dest-address { mask | mask-length } { next-hop-address | vpn-instance d-vpn-instance-name next-hop-address } track track-entry-number [ preference preference-value ] [ tag tag-value ] [ description description-text ] | 二者必选其一 缺省情况下，没有配置Track与静态路由联动
 | ip route-static vpn-instance s-vpn-instance-name&<1-6> dest-address { mask | mask-length } { next-hop-address track track-entry-number [ public ] | vpn-instance d-vpn-instance-name next-hop-address track track-entry-number } [ preference preference-value ] [ tag tag-value ] [ description description-text ]

l 静态路由关联的Track项可以是未创建的Track项。通过 track 命令创建Track项后，联动功能开始生效。

l 如果Track模块通过NQA探测私网静态路由中下一跳的可达性，静态路由下一跳的VPN实例名与NQA测试组配置的实例名必须相同，才能进行正常的探测。

l 需要注意在静态路由进行迭代时，Track项监测的应该是静态路由迭代后最终的下一跳地址，而不是配置中指定的下一跳地址。否则，可能导致错误地将有效路由判断为无效路由。

l 静态路由配置的详细介绍，请参见“三层技术-IP路由配置指导”中的“静态路由”。

1.4.3 配置Track与策略路由联动

策略路由是一种依据用户制定的策略进行路由选择的机制。与单纯依照IP报文的目的地址查找路由表进行转发不同，策略路由基于到达报文的源地址等信息灵活地进行路由选择。

策略路由无法判断对报文执行的操作的可用性。当执行的操作不可用时，策略路由仍然对报文执行该操作，可能会导致报文转发失败。例如，策略路由中配置满足一定条件的报文，需要通过指定的下一跳转发。当该下一跳所在的链路出现故障时，策略路由无法感知链路故障，仍然通过该下一跳转发报文，导致报文转发失败。

通过联动功能，可以解决上述问题，增强了策略路由应用的灵活性，以及策略路由对网络环境的动态感知能力。配置策略路由执行的操作与Track项关联，利用监测模块监视链路的状态，通过Track项的状态来动态地决定策略路由操作的可用性：

l Track项状态为Positive时，表示链路正常工作，与该Track项关联的策略路由操作生效，可以指导转发；

l Track项状态为Negative时，表示链路出现故障，与该Track项关联的策略路由操作无效，转发时忽略该配置项；

l Track项状态为Invalid时，与该Track项关联的策略路由操作生效，可以指导转发。

目前，支持与Track项关联的策略路由操作包括：

l 设置报文的下一跳

l 设置报文的缺省下一跳

1. 配置准备

配置Track与策略路由联动前，需要先创建策略或一个策略节点，并配置匹配规则。

2. 配置过程

表1-8 配置Track与策略路由联动

操作 | 命令 | 说明
进入系统视图 | system-view | -
创建策略或一个策略节点，并进入该策略视图 | policy-based-route policy-name [ deny | permit ] node node-number | 必选
设置ACL匹配条件 | if-match acl acl-number | 可选 缺省情况下，所有报文都会通过该节点的过滤
设置报文的下一跳，并与Track项关联 | apply ip-address next-hop ip-address [ direct ] [ track track-entry-number ] [ ip-address [ direct ] [ track track-entry-number ] ] | 二者中至少选择其一
设置报文缺省下一跳，并与Track项关联 | apply ip-address default next-hop ip-address [ track track-entry-number] [ ip-address [ track track-entry-number] ]

l 策略路由关联的Track项可以是未创建的Track项。通过 track 命令创建Track项后，联动功能开始生效。

l 策略路由配置的详细介绍，请参见“三层技术-IP路由配置指导”中的“策略路由”。


1.5 Track显示和维护

在完成上述配置后，在任意视图下执行 display 命令可以显示配置后Track的运行情况，通过查看显示信息验证配置的效果。

表1-9 Track显示和维护

操作 | 命令
显示Track项的信息 | display track { track-entry-number | all } [ | { begin | exclude | include } regular-expression ]


1.6 Track典型配置举例

1.6.1 VRRP、Track与NQA联动配置举例（Master监视上行链路）

1. 组网需求

l Host A需要访问Internet上的Host B，Host A的缺省网关为10.1.1.10/24；

l Switch A和Switch B属于虚拟IP地址为10.1.1.10的备份组1；

l 当Switch A正常工作时，Host A发送给Host B的报文通过Switch A转发；当通过NQA监测到Switch A上行链路不通时，Host A发送给Host B的报文通过Switch B转发。

2. 组网图

图1-2 VRRP、Track与NQA联动配置组网图

3. 配置步骤

(1) 按照图1-2 创建VLAN，在VLAN中加入对应的端口，并配置各VLAN接口的IP地址，具体配置过程略。

(2) 在Switch A上配置NQA测试组

<SwitchA> system-view

# 创建管理员名为admin、操作标签为test的NQA测试组。

[SwitchA] nqa entry admin test

# 配置测试类型为ICMP-echo。

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

# 配置目的地址为10.1.2.2。

[SwitchA-nqa-admin-test-icmp-echo] destination ip 10.1.2.2

# 测试频率为100ms。

[SwitchA-nqa-admin-test-icmp-echo] frequency 100

# 配置联动项1（连续失败5次触发联动）。

[SwitchA-nqa-admin-test-icmp-echo] reaction 1 checked-element probe-fail threshold-type consecutive 5 action-type trigger-only

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

# 启动探测。

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

(3) 在Switch A上配置Track项

# 配置Track项1，关联NQA测试组（管理员为admin，操作标签为test）的联动项1。

[SwitchA] track 1 nqa entry admin test reaction 1

(4) 在Switch A上配置VRRP

# 创建备份组1，并配置备份组1的虚拟IP地址为10.1.1.10。

[SwitchA] interface vlan-interface 2

[SwitchA-Vlan-interface2] vrrp vrid 1 virtual-ip 10.1.1.10

# 设置Switch A在备份组1中的优先级为110。

[SwitchA-Vlan-interface2] vrrp vrid 1 priority 110

# 设置备份组的认证方式为SIMPLE，认证字为hello。

[SwitchA-Vlan-interface2] vrrp vrid 1 authentication-mode simple hello

# 设置Master发送VRRP报文的间隔时间为5秒。

[SwitchA-Vlan-interface2] vrrp vrid 1 timer advertise 5

# 设置Switch A工作在抢占方式，抢占延迟时间为5秒。

[SwitchA-Vlan-interface2] vrrp vrid 1 preempt-mode timer delay 5

# 设置监视Track项。

[SwitchA-Vlan-interface2] vrrp vrid 1 track 1 reduced 30

(5) 在Switch B上配置VRRP

<SwitchB> system-view

[SwitchB] interface vlan-interface 2

# 创建备份组1，并配置备份组1的虚拟IP地址为10.1.1.10。

[SwitchB-Vlan-interface2] vrrp vrid 1 virtual-ip 10.1.1.10

# 设置备份组的认证方式为SIMPLE，认证字为hello。

[SwitchB-Vlan-interface2] vrrp vrid 1 authentication-mode simple hello

# 设置Master发送VRRP报文的间隔时间为5秒。

[SwitchB-Vlan-interface2] vrrp vrid 1 timer advertise 5

# 设置Switch B工作在抢占方式，抢占延迟时间为5秒。

[SwitchB-Vlan-interface2] vrrp vrid 1 preempt-mode timer delay 5

(6) 验证配置结果

配置完成后，在Host A上可以ping通Host B。通过 display vrrp 命令查看配置后的结果。

# 显示Switch A上备份组1的详细信息。

[SwitchA-Vlan-interface2] display vrrp verbose

IPv4 Standby Information:

Run Mode : Standard

Run Method : Virtual MAC

Total number of virtual routers : 1

Interface Vlan-interface2

VRID : 1 Adver Timer : 5

Admin Status : Up State : Master

Config Pri : 110 Running Pri : 110

Preempt Mode : Yes Delay Time : 5

Auth Type : Simple Key : hello

Virtual IP : 10.1.1.10

Virtual MAC : 0000-5e00-0101

Master IP : 10.1.1.1

VRRP Track Information:

Track Object : 1 State : Positive Pri Reduced : 30

# 显示Switch B上备份组1的详细信息。

[SwitchB-Vlan-interface2] display vrrp verbose

IPv4 Standby Information:

Run Mode : Standard

Run Method : Virtual MAC

Total number of virtual routers : 1

Interface Vlan-interface2

VRID : 1 Adver Timer : 5

Admin Status : Up State : Backup

Config Pri : 100 Running Pri : 100

Preempt Mode : Yes Delay Time : 5

Become Master : 2200ms left

Auth Type : Simple Key : hello

Virtual IP : 10.1.1.10

Master IP : 10.1.1.1

以上显示信息表示在备份组1中Switch A为Master，Switch B为Backup，Host A发送给Host B的报文通过Switch A转发。

Switch A与Switch C不通时，在Host A上仍然可以ping通Host B。通过 display vrrp 命令查看备份组的信息。

# Switch A与Switch C不通时，显示Switch A上备份组1的详细信息。

[SwitchA-Vlan-interface2] display vrrp verbose

IPv4 Standby Information:

Run Mode : Standard

Run Method : Virtual MAC

Total number of virtual routers : 1

Interface Vlan-interface2

VRID : 1 Adver Timer : 5

Admin Status : Up State : Backup

Config Pri : 110 Running Pri : 80

Preempt Mode : Yes Delay Time : 5

Become Master : 2200ms left

Auth Type : Simple Key : hello

Virtual IP : 10.1.1.10

Master IP : 10.1.1.2

VRRP Track Information:

Track Object : 1 State : Negative Pri Reduced : 30

# Switch A与Switch C不通时，显示Switch B上备份组1的详细信息。

[SwitchB-Vlan-interface2] display vrrp verbose

IPv4 Standby Information:

Run Mode : Standard

Run Method : Virtual MAC

Total number of virtual routers : 1

Interface Vlan-interface2

VRID : 1 Adver Timer : 5

Admin Status : Up State : Master

Config Pri : 100 Running Pri : 100

Preempt Mode : Yes Delay Time : 5

Auth Type : Simple Key : hello

Virtual IP : 10.1.1.10

Virtual MAC : 0000-5e00-0101

Master IP : 10.1.1.2

以上显示信息表示Switch A与Switch C不通时，Switch A的优先级降低为80，成为Backup，Switch B成为Master，Host A发送给Host B的报文通过Switch B转发。

1.6.2 VRRP、Track与BFD联动配置举例（Backup监视Master）

1. 组网需求

l Switch A和Switch B属于虚拟IP地址为192.168.0.10的备份组1；

l 局域网内的主机上设置缺省网关为192.168.0.10，当Switch A正常工作时，局域网内的主机通过Switch A访问外部网络；Switch A出现故障时，Switch B接替其工作，局域网内的主机通过Switch B访问外部网络；

l Master出现故障时，Backup若只依赖于VRRP通告报文的超时时间来判断是否应该抢占，切换时间一般在3秒～4秒之间，无法达到秒级以下的切换速度；如果Backup通过BFD检测Master的运行状态，则能够在毫秒级的时间内发现Master的故障，立即抢占成为Master，加快切换速度。

2. 组网图

图1-3 VRRP、Track与BFD联动（Backup监视Master）配置组网图

3. 配置步骤

(1) 按照 图1-3 创建VLAN，在VLAN中加入对应的端口，并配置各VLAN接口的IP地址，具体配置过程略。

(2) 在Switch A上配置VRRP

<SwitchA> system-view

[SwitchA] interface vlan-interface 2

# 创建备份组1，并配置备份组1的虚拟IP地址为192.168.0.10，Switch A在备份组1中的优先级为110。

[SwitchA-Vlan-interface2] vrrp vrid 1 virtual-ip 192.168.0.10

[SwitchA-Vlan-interface2] vrrp vrid 1 priority 110

[SwitchA-Vlan-interface2] return

(3) 在Switch B上配置BFD功能

# 配置BFD echo报文的源地址为10.10.10.10。

<SwitchB> system-view

[SwitchB] bfd echo-source-ip 10.10.10.10

(4) 在Switch B上创建和BFD会话关联的Track项

# 创建和BFD会话关联的Track项1，检测Switch A是否可达。

[SwitchB] track 1 bfd echo interface vlan-interface 2 remote ip 192.168.0.101 local ip 192.168.0.102

(5) 在Switch B上配置VRRP

# 创建备份组1，并配置备份组1的虚拟IP地址为192.168.0.10，备份组1监视Track项1的状态，当Track项状态为Negative时，Switch B快速从Backup切换为Master状态。

[SwitchB] interface vlan-interface 2

[SwitchB-Vlan-interface2] vrrp vrid 1 virtual-ip 192.168.0.10

[SwitchB-Vlan-interface2] vrrp vrid 1 track 1 switchover

[SwitchB-Vlan-interface2] return

(6) 验证配置结果

# 显示Switch A上备份组的详细信息。

<SwitchA> display vrrp verbose

IPv4 Standby Information:

Run Mode : Standard

Run Method : Virtual MAC

Total number of virtual routers : 1

Interface Vlan-interface2

VRID : 1 Adver Timer : 1

Admin Status : Up State : Master

Config Pri : 110 Running Pri : 110

Preempt Mode : Yes Delay Time : 0

Auth Type : None

Virtual IP : 192.168.0.10

Virtual MAC : 0000-5e00-0101

Master IP : 192.168.0.101

# 显示Switch B上备份组的详细信息。

<SwitchB> display vrrp verbose

IPv4 Standby Information:

Run Mode : Standard

Run Method : Virtual MAC

Total number of virtual routers : 1

Interface Vlan-interface2

VRID : 1 Adver Timer : 1

Admin Status : Up State : Backup

Config Pri : 100 Running Pri : 100

Preempt Mode : Yes Delay Time : 0

Become Master : 2200ms left

Auth Type : None

Virtual IP : 192.168.0.10

Master IP : 192.168.0.101

VRRP Track Information:

Track Object : 1 State : Positive Switchover

# 显示Switch B上Track项的信息。

<SwitchB> display track 1

Track ID: 1

Status: Positive

Duration: 0 days 0 hours 0 minutes 32 seconds

Notification delay: Positive 0, Negative 0 (in seconds)

Reference object:

BFD session:

Packet type: Echo

Interface : Vlan-interface2

Remote IP : 192.168.0.101

Local IP : 192.168.0.102

以上显示信息表示Track项状态为Positive时，Switch A为Master路由器，Switch B为Backup路由器。

# 打开Switch B的VRRP状态调试信息开关和BFD事件调试信息开关。

<SwitchB> terminal debugging

<SwitchB> terminal monitor

<SwitchB> debugging vrrp state

<SwitchB> debugging bfd event

# Switch A出现故障时，Switch B上输出如下调试信息。

*Dec 17 14:44:34:142 2008 SwitchB BFD/7/EVENT:Send sess-down Msg, [Src:192.168.0.102,Dst:192.168.0.101,Vlan-interface2,Echo], instance:0, protocol:Track

*Dec 17 14:44:34:144 2008 SwitchB VRRP/7/DebugState: IPv4 Vlan-interface2 | Virtual Router 1 : Backup --> Master reason: The status of the tracked object changed

# 显示Switch B上备份组的详细信息。

<SwitchB> display vrrp verbose

IPv4 Standby Information:

Run Mode : Standard

Run Method : Virtual MAC

Total number of virtual routers : 1

Interface Vlan-interface2

VRID : 1 Adver Timer : 1

Admin Status : Up State : Master

Config Pri : 100 Running Pri : 100

Preempt Mode : Yes Delay Time : 0

Auth Type : None

Virtual IP : 192.168.0.10

Virtual MAC : 0000-5e00-0101

Master IP : 192.168.0.102

VRRP Track Information:

Track Object : 1 State : Negative Switchover

以上调试信息表示，BFD探测到Switch A出现故障后，立即由Track通知VRRP模块将Switch B的状态切换为Master，不再等待VRRP通告报文的超时时间，从而保证Backup路由器能够快速切换为Master。

1.6.3 VRRP、Track与BFD联动配置举例（Master监视上行链路）

1. 组网需求

l Switch A和Switch B属于虚拟IP地址为192.168.0.10的备份组1；

l 局域网内的主机上设置缺省网关为192.168.0.10；

l Switch A正常工作时，局域网内的主机通过Switch A访问外部网络；Switch A通过BFD检测到上行链路不通时，降低自己在备份组中的优先级，以便Switch B抢占成为Master，保证局域网内的主机通过Switch B正常通信。

2. 组网图

图1-4 VRRP、Track与BFD联动（Master监视上行链路）配置组网图

3. 配置步骤

(1) 按照 图1-4 创建VLAN，在VLAN中加入对应的端口，并配置各VLAN接口的IP地址，具体配置过程略。

(2) 在Switch A上配置BFD功能

# 配置BFD echo报文的源地址为10.10.10.10。

<SwitchA> system-view

[SwitchA] bfd echo-source-ip 10.10.10.10

(3) 在Switch A上创建和BFD会话关联的Track项

# 创建和BFD会话关联的Track项1，检测IP地址为1.1.1.2的上行设备是否可达。

[SwitchA] track 1 bfd echo interface vlan-interface 3 remote ip 1.1.1.2 local ip 1.1.1.1

(4) 在Switch A上配置VRRP

# 创建备份组1，配置备份组1的虚拟IP地址为192.168.0.10；Switch A在备份组1中的优先级为110；配置备份组1监视Track项1的状态，当Track项状态为Negative时，Switch A的优先级降低20。

[SwitchA] interface vlan-interface 2

[SwitchA-Vlan-interface2] vrrp vrid 1 virtual-ip 192.168.0.10

[SwitchA-Vlan-interface2] vrrp vrid 1 priority 110

[SwitchA-Vlan-interface2] vrrp vrid 1 track 1 reduced 20

[SwitchA-Vlan-interface2] return

(5) 在Switch B上配置VRRP

# 创建备份组1，配置备份组1的虚拟IP地址为192.168.0.10。

<SwitchB> system-view

[SwitchB] interface vlan-interface 2

[SwitchB-Vlan-interface2] vrrp vrid 1 virtual-ip 192.168.0.10

[SwitchB-Vlan-interface2] return

(6) 验证配置结果

# 显示Switch A上备份组的详细信息。

<SwitchA> display vrrp verbose

IPv4 Standby Information:

Run Mode : Standard

Run Method : Virtual MAC

Total number of virtual routers : 1

Interface Vlan-interface2

VRID : 1 Adver Timer : 1

Admin Status : Up State : Master

Config Pri : 110 Running Pri : 110

Preempt Mode : Yes Delay Time : 0

Auth Type : None

Virtual IP : 192.168.0.10

Virtual MAC : 0000-5e00-0101

Master IP : 192.168.0.101

VRRP Track Information:

Track Object : 1 State : Positive Pri Reduced : 20

# 显示Switch A上Track项1的信息。

<SwitchA> display track 1

Track ID: 1

Status: Positive

Duration: 0 days 0 hours 0 minutes 32 seconds

Notification delay: Positive 0, Negative 0 (in seconds)

Reference object:

BFD session:

Packet type: Echo

Interface : Vlan-interface2

Remote IP : 1.1.1.2

Local IP : 1.1.1.1

# 显示Switch B上备份组的详细信息。

<SwitchB> display vrrp verbose

IPv4 Standby Information:

Run Mode : Standard

Run Method : Virtual MAC

Total number of virtual routers : 1

Interface Vlan-interface2

VRID : 1 Adver Timer : 1

Admin Status : Up State : Backup

Config Pri : 100 Running Pri : 100

Preempt Mode : Yes Delay Time : 0

Become Master : 2200ms left

Auth Type : None

Virtual IP : 192.168.0.10

Master IP : 192.168.0.101

以上显示信息表示Track项1的状态为Positive时，Switch A为Master路由器，Switch B为Backup路由器。

# 当Switch A监视的上行链路出现故障时，Track项1的状态变为Negative。

<SwitchA> display track 1

Track ID: 1

Status: Negative

Duration: 0 days 0 hours 0 minutes 32 seconds

Notification delay: Positive 0, Negative 0 (in seconds)

Reference object:

BFD session:

Packet type: Echo

Interface : Vlan-interface2

Remote IP : 1.1.1.2

Local IP : 1.1.1.1

# 查看Switch A上备份组的详细信息。

<SwitchA> display vrrp verbose

IPv4 Standby Information:

Run Mode : Standard

Run Method : Virtual MAC

Total number of virtual routers : 1

Interface Vlan-interface2

VRID : 1 Adver Timer : 1

Admin Status : Up State : Backup

Config Pri : 110 Running Pri : 90

Preempt Mode : Yes Delay Time : 0

Become Master : 2200ms left

Auth Type : None

Virtual IP : 192.168.0.10

Master IP : 192.168.0.102

VRRP Track Information:

Track Object : 1 State : Negative Pri Reduced : 20

# 显示Switch B上备份组的详细信息。

<SwitchB> display vrrp verbose

IPv4 Standby Information:

Run Mode : Standard

Run Method : Virtual MAC

Total number of virtual routers : 1

Interface Vlan-interface2

VRID : 1 Adver Timer : 1

Admin Status : Up State : Master

Config Pri : 100 Running Pri : 100

Preempt Mode : Yes Delay Time : 0

Auth Type : None

Virtual IP : 192.168.0.10

Virtual MAC : 0000-5e00-0101

Master IP : 192.168.0.102

以上显示信息表示Switch A通过BFD检测到上行链路不通时，将自己的优先级降低为90，从而保证Switch B抢占成为Master。

1.6.4 静态路由、Track与NQA联动配置举例

1. 组网需求

Switch A、Switch B、Switch C和Switch D连接了20.1.1.0/24和30.1.1.0/24两个网段，在交换机上配置静态路由以实现两个网段的互通，并配置路由备份以提高网络的可靠性。

Switch A作为20.1.1.0/24网段内主机的缺省网关，在Switch A上存在两条到达30.1.1.0/24网段的静态路由，下一跳分别为Switch B和Switch C。这两条静态路由形成备份，其中：

l 下一跳为Switch B的静态路由优先级高，作为主路由。该路由可达时，Switch A通过Switch B将报文转发到30.1.1.0/24网段。

l 下一跳为Switch C的静态路作为备份路由。

l 在Switch A上通过静态路由、Track与NQA联动，实时判断主路由是否可达。当主路由不可达时，备份路由生效，Switch A通过Switch C将报文转发到30.1.1.0/24网段。

同样地，Switch D作为30.1.1.0/24网段内主机的缺省网关，在Switch D上存在两条到达20.1.1.0/24网段的静态路由，下一跳分别为Switch B和Switch C。这两条静态路由形成备份，其中：

l 下一跳为Switch B的静态路由优先级高，作为主路由。该路由可达时，Switch D通过Switch B将报文转发到20.1.1.0/24网段。

l 下一跳为Switch C的静态路作为备份路由。

l 在Switch D上通过静态路由、Track与NQA联动，实时判断主路由是否可达。当主路由不可达时，备份路由生效，Switch D通过Switch C将报文转发到20.1.1.0/24网段。

2. 组网图

图1-5 静态路由、Track与NQA联动配置组网图

3. 配置步骤

(1) 按照图1-5 创建VLAN，在VLAN中加入对应的端口，并配置各VLAN接口的IP地址，具体配置过程略。

(2) 配置Switch A

# 配置到达30.1.1.0/24网段的静态路由：下一跳地址为10.1.1.2，优先级为缺省值60，该路由与Track项1关联。

<SwitchA> system-view

[SwitchA] ip route-static 30.1.1.0 24 10.1.1.2 track 1

# 配置到达30.1.1.0/24网段的静态路由：下一跳地址为10.3.1.3，优先级为80。

[SwitchA] ip route-static 30.1.1.0 24 10.3.1.3 preference 80

# 配置到达10.2.1.4的静态路由：下一跳地址为10.1.1.2。

[SwitchA] ip route-static 10.2.1.4 24 10.1.1.2

# 创建管理员名为admin、操作标签为test的NQA测试组。

[SwitchA] nqa entry admin test

# 配置测试类型为ICMP-echo。

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

# 配置测试的目的地址为10.2.1.4，下一跳地址为10.1.1.2，以便通过NQA检测Switch A－Switch B－Switch D这条路径的连通性。

[SwitchA-nqa-admin-test-icmp-echo] destination ip 10.2.1.4

[SwitchA-nqa-admin-test-icmp-echo] next-hop 10.1.1.2

# 配置测试频率为100ms。

[SwitchA-nqa-admin-test-icmp-echo] frequency 100

# 配置联动项1（连续失败5次触发联动）。

[SwitchA-nqa-admin-test-icmp-echo] reaction 1 checked-element probe-fail threshold-type consecutive 5 action-type trigger-only

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

# 启动探测。

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

# 配置Track项1，关联NQA测试组（管理员为admin，操作标签为test）的联动项1。

[SwitchA] track 1 nqa entry admin test reaction 1

(3) 配置Switch B

# 配置到达30.1.1.0/24网段的静态路由：下一跳地址为10.2.1.4。

<SwitchB> system-view

[SwitchB] ip route-static 30.1.1.0 24 10.2.1.4

# 配置到达20.1.1.0/24网段的静态路由：下一跳地址为10.1.1.1。

[SwitchB] ip route-static 20.1.1.0 24 10.1.1.1

(4) 配置Switch C

# 配置到达30.1.1.0/24网段的静态路由：下一跳地址为10.4.1.4。

<SwitchC> system-view

[SwitchC] ip route-static 30.1.1.0 24 10.4.1.4

# 配置到达20.1.1.0/24网段的静态路由：下一跳地址为10.3.1.1。

[SwitchC] ip route-static 20.1.1.0 24 10.3.1.1

(5) 配置Switch D

# 配置到达20.1.1.0/24网段的静态路由：下一跳地址为10.2.1.2，优先级为缺省值60，该路由与Track项1关联。

<SwitchD> system-view

[SwitchD] ip route-static 20.1.1.0 24 10.2.1.2 track 1

# 配置到达20.1.1.0/24网段的静态路由：下一跳地址为10.4.1.3，优先级为80。

[SwitchD] ip route-static 20.1.1.0 24 10.4.1.3 preference 80

# 配置到达10.1.1.1的静态路由：下一跳地址为10.2.1.2。

[SwitchD] ip route-static 10.1.1.1 24 10.2.1.2

# 创建管理员名为admin、操作标签为test的NQA测试组。

[SwitchD] nqa entry admin test

# 配置测试类型为ICMP-echo。

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

# 配置测试的目的地址为10.1.1.1，下一跳地址为10.2.1.2，以便通过NQA检测Switch D－Switch B－Switch A这条路径的连通性。

[SwitchD-nqa-admin-test-icmp-echo] destination ip 10.1.1.1

[SwitchD-nqa-admin-test-icmp-echo] next-hop 10.2.1.2

# 配置测试频率为100ms。

[SwitchD-nqa-admin-test-icmp-echo] frequency 100

# 配置联动项1（连续失败5次触发联动）。

[SwitchD-nqa-admin-test-icmp-echo] reaction 1 checked-element probe-fail threshold-type consecutive 5 action-type trigger-only

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

# 启动探测。

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

# 配置Track项1，关联NQA测试组（管理员为admin，操作标签为test）的联动项1。

[SwitchD] track 1 nqa entry admin test reaction 1

(6) 验证配置结果

# 显示Switch A上Track项的信息。

[SwitchA] display track all

Track ID: 1

Status: Positive

Duration: 0 days 0 hours 0 minutes 32 seconds

Notification delay: Positive 0, Negative 0 (in seconds)

Reference object:

NQA entry: admin test

Reaction: 1

# 显示Switch A的路由表。

[SwitchA] display ip routing-table

Routing Tables: Public

Destinations : 10 Routes : 10

Destination/Mask Proto Pre Cost NextHop Interface

10.1.1.0/24 Direct 0 0 10.1.1.1 Vlan2

10.1.1.1/32 Direct 0 0 127.0.0.1 InLoop0

10.2.1.0/24 Static 60 0 10.1.1.2 Vlan2

10.3.1.0/24 Direct 0 0 10.3.1.1 Vlan3

10.3.1.1/32 Direct 0 0 127.0.0.1 InLoop0

20.1.1.0/24 Direct 0 0 20.1.1.1 Vlan6

20.1.1.1/32 Direct 0 0 127.0.0.1 InLoop0

30.1.1.0/24 Static 60 0 10.1.1.2 Vlan2

127.0.0.0/8 Direct 0 0 127.0.0.1 InLoop0

127.0.0.1/32 Direct 0 0 127.0.0.1 InLoop0

以上显示信息表示，NQA测试的结果为主路由可达（Track项状态为Positive），Switch A通过Switch B将报文转发到30.1.1.0/24网段。

# 在Switch B上删除VLAN接口2的IP地址。

<SwitchB> system-view

[SwitchB] interface vlan-interface 2

[SwitchB-Vlan-interface2] undo ip address

# 显示Switch A上Track项的信息。

[SwitchA] display track all

Track ID: 1

Status: Negative

Duration: 0 days 0 hours 0 minutes 32 seconds

Notification delay: Positive 0, Negative 0 (in seconds)

Reference object:

NQA entry: admin test

Reaction: 1

# 显示Switch A的路由表。

[SwitchA] display ip routing-table

Routing Tables: Public

Destinations : 10 Routes : 10

Destination/Mask Proto Pre Cost NextHop Interface

10.1.1.0/24 Direct 0 0 10.1.1.1 Vlan2

10.1.1.1/32 Direct 0 0 127.0.0.1 InLoop0

10.2.1.0/24 Static 60 0 10.1.1.2 Vlan2

10.3.1.0/24 Direct 0 0 10.3.1.1 Vlan3

10.3.1.1/32 Direct 0 0 127.0.0.1 InLoop0

20.1.1.0/24 Direct 0 0 20.1.1.1 Vlan6

20.1.1.1/32 Direct 0 0 127.0.0.1 InLoop0

30.1.1.0/24 Static 80 0 10.3.1.3 Vlan3

127.0.0.0/8 Direct 0 0 127.0.0.1 InLoop0

127.0.0.1/32 Direct 0 0 127.0.0.1 InLoop0

以上显示信息表示，NQA测试的结果为主路由不可达（Track项状态为Negative），则备份路由生效，Switch A通过Switch C将报文转发到30.1.1.0/24网段。

# 主路由出现故障后，20.1.1.0/24网段内的主机仍然可以与30.1.1.0/24网段内的主机通信。

[SwitchA] ping -a 20.1.1.1 30.1.1.1

PING 30.1.1.1: 56 data bytes, press CTRL_C to break

Reply from 30.1.1.1: bytes=56 Sequence=1 ttl=254 time=2 ms

Reply from 30.1.1.1: bytes=56 Sequence=2 ttl=254 time=1 ms

Reply from 30.1.1.1: bytes=56 Sequence=3 ttl=254 time=1 ms

Reply from 30.1.1.1: bytes=56 Sequence=4 ttl=254 time=2 ms

Reply from 30.1.1.1: bytes=56 Sequence=5 ttl=254 time=1 ms

--- 30.1.1.1 ping statistics ---

5 packet(s) transmitted

5 packet(s) received

0.00% packet loss

round-trip min/avg/max = 1/1/2 ms

# Switch D上的显示信息与Switch A类似。主路由出现故障后，30.1.1.0/24网段内的主机仍然可以与20.1.1.0/24网段内的主机通信。

[SwitchB] ping -a 30.1.1.1 20.1.1.1

PING 20.1.1.1: 56 data bytes, press CTRL_C to break

Reply from 20.1.1.1: bytes=56 Sequence=1 ttl=254 time=2 ms

Reply from 20.1.1.1: bytes=56 Sequence=2 ttl=254 time=1 ms

Reply from 20.1.1.1: bytes=56 Sequence=3 ttl=254 time=1 ms

Reply from 20.1.1.1: bytes=56 Sequence=4 ttl=254 time=1 ms

Reply from 20.1.1.1: bytes=56 Sequence=5 ttl=254 time=1 ms

--- 20.1.1.1 ping statistics ---

5 packet(s) transmitted

5 packet(s) received

0.00% packet loss

round-trip min/avg/max = 1/1/2 ms

1.6.5 静态路由、Track与BFD联动配置举例

1. 组网需求

Switch A、Switch B和Switch C连接了20.1.1.0/24和30.1.1.0/24两个网段，在交换机上配置静态路由以实现两个网段的互通，并配置路由备份以提高网络的可靠性。

Switch A作为20.1.1.0/24网段内主机的缺省网关，在Switch A上存在两条到达30.1.1.0/24网段的静态路由，下一跳分别为Switch B和Switch C。这两条静态路由形成备份，其中：

l 下一跳为Switch B的静态路由优先级高，作为主路由。该路由可达时，Switch A通过Switch B将报文转发到30.1.1.0/24网段。

l 下一跳为Switch C的静态路作为备份路由。

l 在Switch A上通过静态路由、Track与BFD联动，实时判断主路由是否可达。当主路由不可达时，BFD能够快速地检测到路由故障，使得备份路由生效，Switch A通过Switch C和Switch B将报文转发到30.1.1.0/24网段。

同样地，Switch B作为30.1.1.0/24网段内主机的缺省网关，在Switch B上存在两条到达20.1.1.0/24网段的静态路由，下一跳分别为Switch A和Switch C。这两条静态路由形成备份，其中：

l 下一跳为Switch A的静态路由优先级高，作为主路由。该路由可达时，Switch B通过Switch A将报文转发到20.1.1.0/24网段。

l 下一跳为Switch C的静态路作为备份路由。

l 在Switch B上通过静态路由、Track与BFD联动，实时判断主路由是否可达。当主路由不可达时，BFD能够快速地检测到路由故障，使得备份路由生效，Switch B通过Switch C和Switch A将报文转发到20.1.1.0/24网段。

2. 组网图

图1-6 静态路由、Track与BFD联动配置组网图

3. 配置步骤

(1) 按照图1-6 创建VLAN，在VLAN中加入对应的端口，并配置各VLAN接口的IP地址，具体配置过程略。

(2) 配置Switch A

# 配置到达30.1.1.0/24网段的静态路由：下一跳地址为10.2.1.2，优先级为缺省值60，该路由与Track项1关联。

<SwitchA> system-view

[SwitchA] ip route-static 30.1.1.0 24 10.2.1.2 track 1

# 配置到达30.1.1.0/24网段的静态路由：下一跳地址为10.3.1.3，优先级为80。

[SwitchA] ip route-static 30.1.1.0 24 10.3.1.3 preference 80

# 配置BFD echo报文的源地址为10.10.10.10。

[SwitchA] bfd echo-source-ip 10.10.10.10

# 创建和BFD会话关联的Track项1，检测Switch A是否可以与静态路由的下一跳Switch B互通。

[SwitchA] track 1 bfd echo interface vlan-interface 2 remote ip 10.2.1.2 local ip 10.2.1.1

(3) 配置Switch B

# 配置到达20.1.1.0/24网段的静态路由：下一跳地址为10.2.1.1，优先级为缺省值60，该路由与Track项1关联。

<SwitchB> system-view

[SwitchB] ip route-static 20.1.1.0 24 10.2.1.1 track 1

# 配置到达20.1.1.0/24网段的静态路由：下一跳地址为10.4.1.3，优先级为80。

[SwitchB] ip route-static 20.1.1.0 24 10.4.1.3 preference 80

# 配置BFD echo报文的源地址为1.1.1.1。

[SwitchB] bfd echo-source-ip 1.1.1.1

# 创建和BFD会话关联的Track项1，检测Switch B是否可以与静态路由的下一跳Switch A互通。

[SwitchB] track 1 bfd echo interface vlan-interface 2 remote ip 10.2.1.1 local ip 10.2.1.2

(4) 配置Switch C

# 配置到达30.1.1.0/24网段的静态路由：下一跳地址为10.4.1.2。

<SwitchC> system-view

[SwitchC] ip route-static 30.1.1.0 24 10.4.1.2

# 配置到达20.1.1.0/24网段的静态路由：下一跳地址为10.3.1.1。

[SwitchB] ip route-static 20.1.1.0 24 10.3.1.1

(5) 验证配置结果

# 显示Switch A上Track项的信息。

[SwitchA] display track all

Track ID: 1

Status: Positive

Duration: 0 days 0 hours 0 minutes 32 seconds

Notification delay: Positive 0, Negative 0 (in seconds)

Reference object:

BFD Session:

Packet type: Echo

Interface : Vlan-interface2

Remote IP : 10.2.1.2

Local IP : 10.2.1.1

# 显示Switch A的路由表。

[SwitchA] display ip routing-table

Routing Tables: Public

Destinations : 9 Routes : 9

Destination/Mask Proto Pre Cost NextHop Interface

10.2.1.0/24 Direct 0 0 10.2.1.1 Vlan2

10.2.1.1/32 Direct 0 0 127.0.0.1 InLoop0

10.3.1.0/24 Direct 0 0 10.3.1.1 Vlan3

10.3.1.1/32 Direct 0 0 127.0.0.1 InLoop0

20.1.1.0/24 Direct 0 0 20.1.1.1 Vlan5

20.1.1.1/32 Direct 0 0 127.0.0.1 InLoop0

30.1.1.0/24 Static 60 0 10.2.1.2 Vlan2

127.0.0.0/8 Direct 0 0 127.0.0.1 InLoop0

127.0.0.1/32 Direct 0 0 127.0.0.1 InLoop0

以上显示信息表示，BFD检测的结果为下一跳地址10.2.1.2可达（Track项状态为Positive），主路由生效，Switch A通过Switch B将报文转发到30.1.1.0/24网段。

# 在Switch B上删除VLAN接口2的IP地址。

<SwitchB> system-view

[SwitchB] interface vlan-interface 2

[SwitchB-Vlan-interface2] undo ip address

# 显示Switch A上Track项的信息。

[SwitchA] display track all

Track ID: 1

Status: Negative

Duration: 0 days 0 hours 0 minutes 32 seconds

Notification delay: Positive 0, Negative 0 (in seconds)

Reference object:

BFD Session:

Packet type: Echo

Interface : Vlan-interface2

Remote IP : 10.2.1.2

Local IP : 10.2.1.1

# 显示Switch A的路由表。

[SwitchA] display ip routing-table

Routing Tables: Public

Destinations : 9 Routes : 9

Destination/Mask Proto Pre Cost NextHop Interface

10.2.1.0/24 Direct 0 0 10.2.1.1 Vlan2

10.2.1.1/32 Direct 0 0 127.0.0.1 InLoop0

10.3.1.0/24 Direct 0 0 10.3.1.1 Vlan3

10.3.1.1/32 Direct 0 0 127.0.0.1 InLoop0

20.1.1.0/24 Direct 0 0 20.1.1.1 Vlan5

20.1.1.1/32 Direct 0 0 127.0.0.1 InLoop0

30.1.1.0/24 Static 80 0 10.3.1.3 Vlan3

127.0.0.0/8 Direct 0 0 127.0.0.1 InLoop0

127.0.0.1/32 Direct 0 0 127.0.0.1 InLoop0

以上显示信息表示，BFD检测的结果为下一跳地址10.2.1.2不可达（Track项状态为Negative），备份路由生效，Switch A通过Switch C和Switch B将报文转发到30.1.1.0/24网段。

# 主路由出现故障后，20.1.1.0/24网段内的主机仍然可以与30.1.1.0/24网段内的主机通信。

[SwitchA] ping -a 20.1.1.1 30.1.1.1

PING 30.1.1.1: 56 data bytes, press CTRL_C to break

Reply from 30.1.1.1: bytes=56 Sequence=1 ttl=254 time=2 ms

Reply from 30.1.1.1: bytes=56 Sequence=2 ttl=254 time=1 ms

Reply from 30.1.1.1: bytes=56 Sequence=3 ttl=254 time=1 ms

Reply from 30.1.1.1: bytes=56 Sequence=4 ttl=254 time=2 ms

Reply from 30.1.1.1: bytes=56 Sequence=5 ttl=254 time=1 ms

--- 30.1.1.1 ping statistics ---

5 packet(s) transmitted

5 packet(s) received

0.00% packet loss

round-trip min/avg/max = 1/1/2 ms

# Switch B上的显示信息与Switch A类似。主路由出现故障后，30.1.1.0/24网段内的主机仍然可以与20.1.1.0/24网段内的主机通信。

[SwitchB] ping -a 30.1.1.1 20.1.1.1

PING 20.1.1.1: 56 data bytes, press CTRL_C to break

Reply from 20.1.1.1: bytes=56 Sequence=1 ttl=254 time=2 ms

Reply from 20.1.1.1: bytes=56 Sequence=2 ttl=254 time=1 ms

Reply from 20.1.1.1: bytes=56 Sequence=3 ttl=254 time=1 ms

Reply from 20.1.1.1: bytes=56 Sequence=4 ttl=254 time=1 ms

Reply from 20.1.1.1: bytes=56 Sequence=5 ttl=254 time=1 ms

--- 20.1.1.1 ping statistics ---

5 packet(s) transmitted

5 packet(s) received

0.00% packet loss

round-trip min/avg/max = 1/1/2 ms

1.6.6 VRRP、Track与接口管理联动配置举例（Master监视上行接口）

1. 组网需求

l Host A需要访问Internet上的Host B，Host A的缺省网关为10.1.1.10/24；

l Switch A和Switch B属于虚拟IP地址为10.1.1.10的备份组1；

l 当Switch A正常工作时，Host A发送给Host B的报文通过Switch A转发；当通过接口管理监测到Switch A连接上行链路的VLAN接口3出现故障时，Host A发送给Host B的报文通过Switch B转发。

2. 组网图

图1-7 VRRP、Track与接口管理联动配置组网图

3. 配置步骤

(1) 按照图1-7 创建VLAN，在VLAN中加入对应的端口，并配置各VLAN接口的IP地址，具体配置过程略。

(2) 在Switch A上配置Track项

# 创建Track项1，与上行接口VLAN接口3的物理状态关联。

[SwitchA] track 1 interface vlan-interface 3

(3) 在Switch A上配置VRRP

# 创建备份组1，并配置备份组1的虚拟IP地址为10.1.1.10。

[SwitchA] interface vlan-interface 2

[SwitchA-Vlan-interface2] vrrp vrid 1 virtual-ip 10.1.1.10

# 设置Switch A在备份组1中的优先级为110。

[SwitchA-Vlan-interface2] vrrp vrid 1 priority 110

# 设置监视Track项。

[SwitchA-Vlan-interface2] vrrp vrid 1 track 1 reduced 30

(4) 在Switch B上配置VRRP

<SwitchB> system-view

[SwitchB] interface vlan-interface 2

# 创建备份组1，并配置备份组1的虚拟IP地址为10.1.1.10。

[SwitchB-Vlan-interface2] vrrp vrid 1 virtual-ip 10.1.1.10

(5) 验证配置结果

配置完成后，在Host A上可以ping通Host B。通过 display vrrp 命令查看配置后的结果。

# 显示Switch A上备份组1的详细信息。

[SwitchA-Vlan-interface2] display vrrp verbose

IPv4 Standby Information:

Run Mode : Standard

Run Method : Virtual MAC

Total number of virtual routers : 1

Interface Vlan-interface2

VRID : 1 Adver Timer : 1

Admin Status : Up State : Master

Config Pri : 110 Running Pri : 110

Preempt Mode : Yes Delay Time : 0

Auth Type : None

Virtual IP : 10.1.1.10

Virtual MAC : 0000-5e00-0101

Master IP : 10.1.1.1

VRRP Track Information:

Track Object : 1 State : Positive Pri Reduced : 30

# 显示Switch B上备份组1的详细信息。

[SwitchB-Vlan-interface2] display vrrp verbose

IPv4 Standby Information:

Run Mode : Standard

Run Method : Virtual MAC

Total number of virtual routers : 1

Interface Vlan-interface2

VRID : 1 Adver Timer : 1

Admin Status : Up State : Backup

Config Pri : 100 Running Pri : 100

Preempt Mode : Yes Delay Time : 0

Become Master : 2200ms left

Auth Type : None

Virtual IP : 10.1.1.10

Master IP : 10.1.1.1

以上显示信息表示在备份组1中Switch A为Master，Switch B为Backup，Host A发送给Host B的报文通过Switch A转发。

# 在Switch A上关闭VLAN接口3。

[SwitchA-Vlan-interface2] interface vlan-interface 3

[SwitchA-Vlan-interface3] shutdown

关闭Switch A的上行接口后，在Host A上仍然可以ping通Host B。通过 display vrrp 命令查看备份组的信息。

# 关闭Switch A的上行接口后，显示Switch A上备份组1的详细信息。

[SwitchA-Vlan-interface3] display vrrp verbose

IPv4 Standby Information:

Run Mode : Standard

Run Method : Virtual MAC

Total number of virtual routers : 1

Interface Vlan-interface2

VRID : 1 Adver Timer : 1

Admin Status : Up State : Backup

Config Pri : 110 Running Pri : 80

Preempt Mode : Yes Delay Time : 0

Become Master : 2200ms left

Auth Type : None

Virtual IP : 10.1.1.10

Master IP : 10.1.1.2

VRRP Track Information:

Track Object : 1 State : Negative Pri Reduced : 30

# 关闭Switch A的上行接口后，显示Switch B上备份组1的详细信息。

[SwitchB-Vlan-interface2] display vrrp verbose

IPv4 Standby Information:

Run Mode : Standard

Run Method : Virtual MAC

Total number of virtual routers : 1

Interface Vlan-interface2

VRID : 1 Adver Timer : 1

Admin Status : Up State : Master

Config Pri : 100 Running Pri : 100

Preempt Mode : Yes Delay Time : 0

Auth Type : None

Virtual IP : 10.1.1.10

Virtual MAC : 0000-5e00-0101

Master IP : 10.1.1.2

以上显示信息表示关闭Switch A的上行接口后，Switch A的优先级降低为80，成为Backup，Switch B成为Master，Host A发送给Host B的报文通过Switch B转发。


00-前言

前 言

H3C S3600V2系列以太网交换机配置指导共分为十本手册，介绍了S3600V2系列以太网交换机各软件特性的原理及其配置方法，包含原理简介、配置任务描述和配置举例。《网络管理和监控配置指导》主要介绍了网络管理和监控相关功能的原理及具体配置。通过这些功能，您可以对网络进行管理和监控，包括查看系统信息、对网络流量进行统计、对网络质量进行分析、对网络内所有具有时钟的设备进行时钟同步，并可以使用ping、tracert、debug等命令来检查、调试当前网络的连接情况。

前言部分包含如下内容：

l 读者对象

l 本书约定

l 产品配套资料

l 资料获取方式

l 技术支持

l 资料意见反馈

读者对象

本手册主要适用于如下工程师：

l 网络规划人员

l 现场技术支持与维护人员

l 负责网络配置和维护的网络管理员

本书约定

1.命令行格式约定

格 式 | 意 义
粗体 | 命令行关键字（命令中保持不变、必须照输的部分）采用加粗字体表示。
斜体 | 命令行参数（命令中必须由实际值进行替代的部分）采用斜体表示。
[ ] | 表示用“[ ]”括起来的部分在命令配置时是可选的。
{ x | y | ... } | 表示从两个或多个选项中选取一个。
[ x | y | ... ] | 表示从两个或多个选项中选取一个或者不选。
{ x | y | ... } * | 表示从两个或多个选项中选取多个，最少选取一个，最多选取所有选项。
[ x | y | ... ] * | 表示从两个或多个选项中选取多个或者不选。
&<1-n> | 表示符号&前面的参数可以重复输入1～n次。
# | 由“#”号开始的行表示为注释行。

2.图形界面格式约定

格 式 | 意 义
< > | 带尖括号“< >”表示按钮名，如“单击<确定>按钮”。
[ ] | 带方括号“[ ]”表示窗口名、菜单名和数据表，如“弹出[新建用户]窗口”。
/ | 多级菜单用“/”隔开。如[文件/新建/文件夹]多级菜单表示[文件]菜单下的[新建]子菜单下的[文件夹]菜单项。

3.各类标志

本书还采用各种醒目标志来表示在操作过程中应该特别注意的地方，这些标志的意义如下：

该标志后的注释需给予格外关注，不当的操作可能会对人身造成伤害。

提醒操作中应注意的事项，不当的操作可能会导致数据丢失或者设备损坏。

为确保设备配置成功或者正常工作而需要特别关注的操作或信息。

对操作内容的描述进行必要的补充和说明。

配置、操作、或使用设备的技巧、小窍门。

4.图标约定

本书使用的图标及其含义如下：

该图标及其相关描述文字代表一般网络设备，如路由器、交换机、防火墙等。

该图标及其相关描述文字代表一般意义下的路由器，以及其他运行了路由协议的设备。

该图标及其相关描述文字代表二、三层以太网交换机，以及运行了二层协议的设备。

产品配套资料

H3C S3600V2系列以太网交换机的配套资料包括如下部分：

大类 | 资料名称 | 内容介绍
产品知识介绍 | 产品彩页 | 帮助您了解产品的主要规格参数及亮点
 | RPS电源用户手册 | 帮助您了解产品支持的RPS电源的外观、功能、规格
 | H3C低端系列以太网交换机RPS电源选购指南 | 帮助您了解各种RPS电源适用的交换机产品型号及RPS电源配套电缆的相关规格
 | H3C低端系列以太网交换机可插拔模块手册 | 帮助您了解产品支持的可插拔模块类型、外观和规格
设备安装 | 安全兼容性手册 | 列出产品的兼容性声明，并对兼容性和安全的细节进行说明
 | H3C 设备防雷安装指导手册 | 帮助您了解防雷接地设计和工程安装方法，以保证交换机具有良好的抗雷击性能
 | 快速安装指南 | 指导您对设备进行初始安装，通常针对最常用的情况，减少您的检索时间
 | 安装指导 | 帮助您详细了解设备硬件规格和安装方法，指导您对设备进行安装
 | H3C可插拔SFP[SFP+][XFP]模块安装指南 | 帮助您掌握SFP/SFP+/XFP模块的正确安装方法，避免因操作不当而造成器件损坏
业务配置 | 配置指导 | 帮助您掌握设备软件功能的配置方法及配置步骤
 | 命令参考 | 详细介绍设备的命令，相当于命令字典，方便您查阅各个命令的功能
运行维护 | H3C系列以太网交换机登录密码恢复手册 | 指导您在设备登录密码丢失的情况下，找回密码、或重新配置登录密码
 | 故障处理手册 | 指导您快速定位并处理软件故障
 | 版本说明书 | 帮助您了解产品版本的相关信息（包括：版本配套说明、兼容性说明、特性变更说明、技术支持信息）及软件升级方法

资料获取方式

您可以通过H3C网站（ www.h3c.com.cn ）获取最新的产品资料：

H3C网站与产品资料相关的主要栏目介绍如下：

l [服务支持/文档中心] ：可以获取硬件安装类、软件升级类、配置类或维护类等产品资料。

l [产品技术] ：可以获取产品介绍和技术介绍的文档，包括产品相关介绍、技术介绍、技术白皮书等。

l [解决方案] ：可以获取解决方案类资料。

l [服务支持/软件下载] ：可以获取与软件版本配套的资料。

技术支持

用户支持邮箱：customer_service@h3c.com

技术支持热线电话：400-810-0504（手机、固话均可拨打）

网址： http://www.h3c.com.cn

资料意见反馈

如果您在使用过程中发现产品资料的任何问题，可以通过以下方式反馈：

E-mail：info@h3c.com

感谢您的反馈，让我们做得更好！


1 系统维护与调试

在日常的系统维护中，用户可以使用 ping 命令和 tracert 命令来检查当前网络的连接情况；在日常的系统调试中，用户可以使用 debug 命令来打开调试信息开关，通过调试信息来诊断系统故障。

相关链接

  • 1.1 Ping功能
  • 1.2 Tracert功能
  • 1.3 系统调试功能
  • 1.4 Ping和Tracert配置举例
父主题： 01-系统维护与调试配置


1.1 Ping功能

1.1.1 Ping功能简介

通过使用 ping 命令，用户可以检查指定地址的设备是否可达，测试网络连接是否出现故障。

Ping功能是基于ICMP协议来实现的：源端向目的端发送ICMP回显请求（ECHO-REQUEST）报文后，根据是否收到目的端的ICMP回显应答（ECHO-REPLY）报文来判断目的端是否可达，对于可达的目的端，再根据发送报文个数、接收到响应报文个数来判断链路的质量，根据ping报文的往返时间来判断源端与目的端之间的“距离”。

1.1.2 Ping配置

表1-1 Ping配置

操作 | 命令 | 说明
检查IP网络中的指定地址是否可达 | ping [ ip ] [ -a source-ip | -c count | -f | -h ttl | -i interface-type interface-number | -m interval | -n | -p pad | -q | -r | -s packet-size | -t timeout | -tos tos | -v | -vpn-instance vpn-instance-name ] * host | 两者必选其一 l ping 命令用于IPv4网络环境 l ping ipv6 命令用于IPv6网络环境 两条命令均可在任意视图下执行
 | ping ipv6 [ -a source-ipv6 | -c count | -m interval | -s packet-size | -t timeout | -vpn-instance vpn-instance-name ] * host [ -i interface-type interface-number ]

如果网络传输速度较慢，用户在配置 ping 命令的超时时间参数-t 时，可以适当增大超时时间。

1.1.3 Ping配置举例

1. 组网需求

检查Device A与Device C之间是否路由可达，如果路由可达，需要了解Device A到Device C的路由细节。

2. 组网图

图1-1 Ping应用组网图

3. 配置步骤

# 使用ping命令查看Device A和Device C之间路由是否可达。

<DeviceA> ping 1.1.2.2

PING 1.1.2.2: 56 data bytes, press CTRL_C to break

Reply from 1.1.2.2: bytes=56 Sequence=1 ttl=254 time=205 ms

Reply from 1.1.2.2: bytes=56 Sequence=2 ttl=254 time=1 ms

Reply from 1.1.2.2: bytes=56 Sequence=3 ttl=254 time=1 ms

Reply from 1.1.2.2: bytes=56 Sequence=4 ttl=254 time=1 ms

Reply from 1.1.2.2: bytes=56 Sequence=5 ttl=254 time=1 ms

--- 1.1.2.2 ping statistics ---

5 packet(s) transmitted

5 packet(s) received

0.00% packet loss

round-trip min/avg/max = 1/41/205 ms

# 了解Device A到Device C的路由细节。

<DeviceA> ping -r 1.1.2.2

PING 1.1.2.2: 56 data bytes, press CTRL_C to break

Reply from 1.1.2.2: bytes=56 Sequence=1 ttl=254 time=53 ms

Record Route:

1.1.2.1

1.1.2.2

1.1.1.2

1.1.1.1

Reply from 1.1.2.2: bytes=56 Sequence=2 ttl=254 time=1 ms

Record Route:

1.1.2.1

1.1.2.2

1.1.1.2

1.1.1.1

Reply from 1.1.2.2: bytes=56 Sequence=3 ttl=254 time=1 ms

Record Route:

1.1.2.1

1.1.2.2

1.1.1.2

1.1.1.1

Reply from 1.1.2.2: bytes=56 Sequence=4 ttl=254 time=1 ms

Record Route:

1.1.2.1

1.1.2.2

1.1.1.2

1.1.1.1

Reply from 1.1.2.2: bytes=56 Sequence=5 ttl=254 time=1 ms

Record Route:

1.1.2.1

1.1.2.2

1.1.1.2

1.1.1.1

--- 1.1.2.2 ping statistics ---

5 packet(s) transmitted

5 packet(s) received

0.00% packet loss

round-trip min/avg/max = 1/11/53 ms

ping -r的原理如 图1-1 所示：

(1) 源端（Device A）发送RR选项（ICMP报文中的一个字段）为空的ICMP回显请求给目的端（Device C）。

(2) 中间设备（Device B）将自己出接口的IP地址（1.1.2.1）添加到ICMP回显请求报文的RR选项中，并转发该报文。

(3) 目的端收到请求报文后，发送ICMP回显响应报文，响应报文会拷贝请求报文的RR选项，并将自己出接口的IP地址（1.1.2.2）添加到RR选项中。

(4) 中间设备（Device B）将自己出接口的IP地址（1.1.1.2）添加到RR选项中，并转发该报文。

(5) 源端收到ICMP回显响应报文，将自己入接口的IP地址（1.1.1.1）添加到RR选项中。最后得到，Device A到Device C具体路由为1.1.1.1 <-> {1.1.1.2; 1.1.2.1} <-> 1.1.2.2。


1.2 Tracert功能

1.2.1 Tracert功能简介

通过使用 tracert 命令，用户可以查看IP报文从源端到达目的端所经过的三层设备，从而检查网络连接是否可用。当网络出现故障时，用户可以使用该命令分析出现故障的网络节点。

图1-2 Tracert原理示意图

Tracert功能也是基于ICMP协议来实现的，如 图1-2 所示，Tracert功能的原理为：

(1) 源端（Device A）向目的端（Device D）发送一个IP数据报文，TTL值为1，报文的UDP端口号是目的端的任何一个应用程序都不可能使用的端口号；

(2) 第一跳（Device B）（即该报文所到达的第一个三层设备）回应一个TTL超时的ICMP错误信息（该报文中含有第一跳的IP地址1.1.1.2），这样源端就得到了第一个三层设备的地址（1.1.1.2）；

(3) 源端重新向目的端发送一个IP数据报文，TTL值为2；

(4) 第二跳（Device C）回应一个TTL超时的ICMP错误信息，这样源端就得到了第二个三层设备的地址（1.1.2.2）；

(5) 以上过程不断进行，直到该报文到达目的端，因目的端没有应用程序使用该UDP端口，目的端返回一个端口不可达的ICMP错误消息（携带了目的端的IP地址1.1.3.2）。

(6) 当源端收到这个端口不可达的ICMP错误消息后，就知道报文已经到达了目的端，从而得到数据报文从源端到目的端所经历的路径（1.1.1.2；1.1.2.2；1.1.3.2）。

1.2.2 Tracert配置

1. 配置准备

IPv4网络环境：

l 需要在中间设备（源端与目的端之间的设备）上开启ICMP超时报文发送功能。如果中间设备是H3C设备，需要在设备上执行 ip ttl-expires enable 命令（该命令的详细介绍请参见“三层技术-IP业务命令参考”中的“IP性能优化”）。

l 需要在目的端开启ICMP目的不可达报文发送功能。如果目的端是H3C设备，需要在设备上执行 ip unreachables enable 命令（该命令的详细介绍请参见“三层技术-IP业务命令参考”中的“IP性能优化”）。

IPv6网络环境：

l 需要在中间设备（源端与目的端之间的设备）上开启设备的ICMPv6超时报文的发送功能。如果中间设备是H3C设备，需要在设备上执行 ipv6 hoplimit-expires enable 命令（该命令的详细介绍请参见“三层技术-IP业务命令参考”中的“IPv6基础”）。

l 需要在目的端开启设备的ICMPv6目的不可达报文的发送功能。如果目的端是H3C设备，需要在设备上执行 ipv6 unreachables enable 命令（该命令的详细介绍请参见“三层技术-IP业务命令参考”中的“IPv6基础”）。

2. Tracert配置

表1-2 Tracert配置

操作 | 命令 | 说明
查看源端到目的端的路由 | tracert [ -a source-ip | -f first-ttl | -m max-ttl | -p port | -q packet-number | -vpn-instance vpn-instance-name | -w timeout ] * host | 两者必选其一 l tracert 命令用于IPv4网络环境 l tracert ipv6 命令用于IPv6网络环境 两条命令均可在任意视图下执行
 | tracert ipv6 [ -f first-ttl | -m max-ttl | -p port | -q packet-number | -vpn-instance vpn-instance-name | -w timeout ] * host


1.3 系统调试功能

1.3.1 系统调试功能简介

设备提供了种类丰富的调试功能，对于设备所支持的绝大部分协议和功能，系统都提供了相应的调试信息，帮助用户对错误进行诊断和定位。

调试信息的输出可以由两个开关控制：

l 协议调试开关，控制是否生成某协议的调试信息。

l 屏幕输出开关，控制是否在某个用户屏幕上显示调试信息。

如图1-3 所示：假设设备可以为1、2、3三个模块提供调试信息，用户只有将两个开关都打开，调试信息才会在终端显示出来。

图1-3 系统调试开关关系图

1.3.2 系统调试配置

因为调试信息的生成、输出会影响系统的运行效率，所以，本功能一般在维护人员进行网络故障诊断时使用。调试结束后，请及时关闭相应的调试开关，或者使用 undo debugging all 命令，关闭所有模块的调试开关。

调试信息的输出与各协议/功能模块的 debugging 命令以及信息中心的配置有关。在访问终端（包括Console控制台和VTY访问终端）上显示是最常用的调试信息输出方式，用户还可以将调试信息发送到别的输出方向，具体配置请参见“网络管理和监控配置指导”中的“信息中心”。缺省情况下，使用以下配置步骤，可以将调试信息输出到访问终端。

表1-3 系统调试操作

操作 | 命令 | 说明
开启终端对系统信息的监视功能 | terminal monitor | 可选 缺省情况下，控制台的监视功能处于开启状态，监视终端的监视功能处于关闭状态 该操作在用户视图下执行
开启终端对调试信息的显示功能 | terminal debugging | 必选 缺省情况下，控制台对调试信息的显示功能处于关闭状态 该操作在用户视图下执行
打开系统中指定模块的调试开关 | debugging { all [ timeout time ] | module-name [ option ] } | 必选 缺省情况下，所有功能项的调试开关均处于关闭状态 该操作在用户视图下执行
显示系统中已经打开的调试开关 | display debugging [ interface interface-type interface-number ] [ module-name ] [ | { begin | exclude | include } regular-expression ] | 可选 该操作在任意视图下执行

只有同时配置了 debugging、terminal debugging 和 terminal monitor 命令，才能在终端显示调试信息的具体内容。terminal debugging 和 terminal monitor 命令的详细介绍请参见“网络管理和监控命令参考”中的“信息中心”。


1.4 Ping和Tracert配置举例

1. 组网需求

Device A使用Telnet登录Device C失败，现需要确认Device A与Device C之间是否路由可达，如果路由不可达，需要确定故障的网络节点。

2. 组网图

图1-4 Ping和Tracert应用组网图

3. 配置步骤

# 使用ping命令查看Device A和Device C之间路由是否可达。

<DeviceA> ping 1.1.2.2

PING 1.1.2.2: 56 data bytes, press CTRL_C to break

Request time out

Request time out

Request time out

Request time out

Request time out

--- 1.1.2.2 ping statistics ---

5 packet(s) transmitted

0 packet(s) received

100.00% packet loss

# 路由不可达，使用tracert命令确定故障的网络节点。

<DeviceA> system-view

[DeviceA] ip ttl-expires enable

[DeviceA] ip unreachables enable

[DeviceA] tracert 1.1.2.2

traceroute to 1.1.2.2(1.1.2.2) 30 hops max,40 bytes packet, press CTRL_C to bre

ak

1 1.1.1.2 14 ms 10 ms 20 ms

2 * * *

3 * * *

4 * * *

5

<DeviceA>

从上面结果可以看出，Device A和Device C之间路由不可达，Device A和Device B之间路由可达，Device B和Device C之间的连接出了问题。此时可以在Device A和Device C上使用 debugging ip icmp 命令打开ICMP报文的调试开关，查看设备有没有收发指定的ICMP报文。或者使用 display ip routing-table 查看有没有到对端的路由。


1 NTP配置

本文中的三层以太网端口是指工作模式被配置成三层模式的以太网端口，有关以太网端口工作模式切换的操作，请参见“二层技术-以太网交换配置指导”中的“以太网端口配置”部分。

相关链接

  • 1.1 NTP简介
  • 1.2 NTP配置任务简介
  • 1.3 配置NTP工作模式
  • 1.4 配置NTP可选参数
  • 1.5 配置访问控制权限
  • 1.6 配置NTP验证功能
  • 1.7 NTP显示和维护
  • 1.8 NTP典型配置举例
父主题： 02-NTP配置


1.1 NTP简介

NTP（Network Time Protocol，网络时间协议）是由RFC 1305定义的时间同步协议，用来在分布式时间服务器和客户端之间进行时间同步。NTP基于UDP报文进行传输，使用的UDP端口号为123。

使用NTP的目的是对网络内所有具有时钟的设备进行时钟同步，使网络内所有设备的时钟保持一致，从而使设备能够提供基于统一时间的多种应用。

对于运行NTP的本地系统，既可以接受来自其他时钟源的同步，又可以作为时钟源同步其他的时钟，并且可以和其他设备互相同步。

1.1.1 NTP的应用

对于网络中的各台设备来说，如果依靠管理员手工输入命令来修改系统时钟是不可能的，不但工作量巨大，而且也不能保证时钟的精确性。通过NTP，可以很快将网络中设备的时钟同步，同时也能保证很高的精度。

NTP主要应用于需要网络中所有设备时钟保持一致的场合，比如：

l 在网络管理中，对于从不同设备采集来的日志信息、调试信息进行分析的时候，需要以时间作为参照依据。

l 计费系统要求所有设备的时钟保持一致。

l 完成某些功能，如定时重启网络中的所有设备，此时要求所有设备的时钟保持一致。

l 多个系统协同处理同一个比较复杂的事件时，为保证正确的执行顺序，多个系统必须参考同一时钟。

l 在备份服务器和客户端之间进行增量备份时，要求备份服务器和所有客户端之间的时钟同步。

NTP的优势如下：

l 采用分层的方法定义时钟的准确性，可以迅速同步网络中各台设备的时间。

l 支持访问控制和MD5验证。

l 可以选择采用单播、组播或广播的方式发送协议报文。

l 时钟的层数决定了时钟的准确度，其取值范围为1～16。参考时钟的层数取值范围为1～15，准确度从1到15依次递减，层数为16的时钟处于未同步状态。

l 本系列交换机不支持设置本地时钟为参考时钟，只有当其时钟被同步后，才能作为时钟源去同步其它设备。

1.1.2 NTP工作原理

NTP的基本工作原理如图1-1 所示。Device A和Device B通过网络相连，它们都有自己独立的系统时钟，需要通过NTP实现各自系统时钟的自动同步。为便于理解，作如下假设：

l 在Device A和Device B的系统时钟同步之前，Device A的时钟设定为10:00:00am，Device B的时钟设定为11:00:00am。

l Device B作为NTP时间服务器，即Device A将使自己的时钟与Device B的时钟同步。

l NTP报文在Device A和Device B之间单向传输所需要的时间为1秒。

图1-1 NTP基本原理图

系统时钟同步的工作过程如下：

l Device A发送一个NTP报文给Device B，该报文带有它离开Device A时的时间戳，该时间戳为10:00:00am（T1）。

l 当此NTP报文到达Device B时，Device B加上自己的时间戳，该时间戳为11:00:01am（T2）。

l 当此NTP报文离开Device B时，Device B再加上自己的时间戳，该时间戳为11:00:02am（T3）。

l 当Device A接收到该响应报文时，Device A的本地时间为10:00:03am（T4）。

至此，Device A已经拥有足够的信息来计算两个重要的参数：

l NTP报文的往返时延Delay=（T4-T1）-（T3-T2）=2秒。

l Device A相对Device B的时间差offset=（（T2-T1）+（T3-T4））/2=1小时。

这样，Device A就能够根据这些信息来设定自己的时钟，使之与Device B的时钟同步。

以上内容只是对NTP工作原理的一个粗略描述，详细内容请参阅RFC 1305。

1.1.3 NTP的报文格式

NTP有两种不同类型的报文，一种是时钟同步报文，另一种是控制报文。控制报文仅用于需要网络管理的场合，它对于时钟同步功能来说并不是必需的，这里不做介绍。

本文中提到的NTP报文，均为NTP时钟同步报文。

时钟同步报文封装在UDP报文中，其格式如图1-2 所示。

图1-2 时钟同步报文格式

主要字段的解释如下：

l LI（Leap Indicator）：长度为2比特，值为“11”时表示告警状态，时钟未被同步。为其他值时NTP本身不做处理。

l VN（Version Number）：长度为3比特，表示NTP的版本号，目前的最新版本为3。

l Mode：长度为3比特，表示NTP的工作模式。不同的值所表示的含义分别是：0未定义、1表示主动对等体模式、2表示被动对等体模式、3表示客户模式、4表示服务器模式、5表示广播模式或组播模式、6表示此报文为NTP控制报文、7预留给内部使用。

l Stratum：系统时钟的层数，取值范围为1～16，它定义了时钟的准确度。层数为1的时钟准确度最高，准确度从1到16依次递减，层数为16的时钟处于未同步状态。

l Poll：轮询时间，即两个连续NTP报文之间的时间间隔。

l Precision：系统时钟的精度。

l Root Delay：本地到主参考时钟源的往返时间。

l Root Dispersion：系统时钟相对于主参考时钟的最大误差。

l Reference Identifier：参考时钟源的标识。

l Reference Timestamp：系统时钟最后一次被设定或更新的时间。

l Originate Timestamp：NTP请求报文离开发送端时发送端的本地时间。

l Receive Timestamp：NTP请求报文到达接收端时接收端的本地时间。

l Transmit Timestamp：应答报文离开应答者时应答者的本地时间。

l Authenticator：验证信息。

1.1.4 NTP的工作模式

设备可以采用多种NTP工作模式进行时间同步：

l 客户端/服务器模式

l 对等体模式

l 广播模式

l 组播模式

用户可以根据需要选择合适的工作模式。在不能确定服务器或对等体IP地址、网络中需要同步的设备很多等情况下，可以通过广播或组播模式实现时钟同步；客户端/服务器和对等体模式中，设备从指定的服务器或对等体获得时钟同步，增加了时钟的可靠性。

1. 客户端/服务器模式

图1-3 客户端/服务器模式

在客户端/服务器模式中，客户端向服务器发送时钟同步报文，报文中的Mode字段设置为3（客户模式）。服务器端收到报文后会自动工作在服务器模式，并发送应答报文，报文中的Mode字段设置为4（服务器模式）。客户端收到应答报文后，进行时钟过滤和选择，并同步到优选的服务器。

在该模式下，客户端能同步到服务器，而服务器无法同步到客户端。

2. 对等体模式

图1-4 对等体模式

在对等体模式中，主动对等体和被动对等体之间首先交互Mode字段为3（客户端模式）和4（服务器模式）的NTP报文。之后，主动对等体向被动对等体发送时钟同步报文，报文中的Mode字段设置为1（主动对等体），被动对等体收到报文后自动工作在被动对等体模式，并发送应答报文，报文中的Mode字段设置为2（被动对等体）。经过报文的交互，对等体模式建立起来。主动对等体和被动对等体可以互相同步。如果双方的时钟都已经同步，则以层数小的时钟为准。

3. 广播模式

图1-5 广播模式

在广播模式中，服务器端周期性地向广播地址255.255.255.255发送时钟同步报文，报文中的Mode字段设置为5（广播模式）。客户端侦听来自服务器的广播报文。当客户端接收到第一个广播报文后，客户端与服务器交互Mode字段为3（客户模式）和4（服务器模式）的NTP报文，以获得客户端与服务器间的网络延迟。之后，客户端就进入广播客户端模式，继续侦听广播报文的到来，根据到来的广播报文对系统时钟进行同步。

4. 组播模式

图1-6 组播模式

在组播模式中，服务器端周期性地向用户配置的组播地址（若用户没有配置组播地址，则使用默认的NTP组播地址224.0.1.1）发送时钟同步报文，报文中的Mode字段设置为5（组播模式）。客户端侦听来自服务器的组播报文。当客户端接收到第一个组播报文后，客户端与服务器交互Mode字段为3（客户模式）和4（服务器模式）的NTP报文，以获得客户端与服务器间的网络延迟。之后，客户端就进入组播客户模式，继续侦听组播报文的到来，根据到来的组播报文对系统时钟进行同步。

在对等体模式、广播模式和组播模式中，客户端（或主动对等体）和服务器（或被动对等体）之间首先要交互Mode字段为3（客户端模式）和4（服务器模式）的NTP报文，之后，才能进入指定的NTP工作模式。在此报文交互过程中，可以实现时钟的同步。


1.2 NTP配置任务简介

表1-1 NTP配置任务简介

配置任务 | 说明 | 详细配置
配置NTP工作模式 | 必选 | 1.3
配置NTP可选参数 | 可选 | 1.4
配置访问控制权限 | 可选 | 1.5
配置NTP验证功能 | 可选 | 1.6


1.3 配置NTP工作模式

设备可以采用以下NTP工作模式进行时钟同步：

l 客户端/服务器模式

l 对等体模式

l 广播模式

l 组播模式

设备采用客户端/服务器模式或对等体模式时，只需要对客户端或主动对等体进行配置；设备采用广播模式或组播模式时，则需要在服务器端和客户端都进行配置。

同一设备同一时间内存在的连接数目最多为128个，其中包括静态连接数和动态连接数。静态连接是用户手动配置NTP相关命令而建立的连接；动态连接是系统运行过程中建立的临时连接，若系统长期收不到报文就会删除该临时连接。例如，在客户端/服务器模式中，当用户在客户端配置向服务器端同步的命令的时候，系统会在客户端建立一个静态连接，服务器端在收到报文之后只是被动的响应报文，而不会建立连接（包括静态和动态连接）；在对等体模式中，主动对等体端会建立静态连接，被动对等体端会建立动态连接；在组播和广播模式中，服务器端会建立静态连接，而在客户端会建立动态连接。

1.3.1 配置NTP客户端/服务器模式

当设备采用客户端/服务器模式时，请在客户端进行如下配置。

表1-2 在NTP客户端上指定NTP服务器

操作 | 命令 | 说明
进入系统视图 | system-view | -
指定设备的NTP服务器 | ntp-service unicast-server [ vpn-instance vpn-instance-name ] { ip-address | server-name } [ authentication-keyid keyid | priority | source-interface interface-type interface-number | version number ] * | 必选 缺省情况下，没有为设备指定NTP服务器

l ntp-service unicast-server命令中的 ip-address 是一个单播地址，不能为广播地址、组播地址或本地时钟的IP地址。

l 通过 source-interface 参数指定NTP报文的源接口后，NTP报文的源IP地址将被设置为指定接口的主IP地址。

l 服务器端只有当其时钟被同步后，才能作为时间服务器去同步其他设备。当服务器端的时钟层数大于或等于客户端的时钟层数时，客户端将不会向其同步。

l 可以通过多次执行 ntp-service unicast-server命令配置多个服务器，客户端依据时钟优选来选择最优的时钟源。

1.3.2 配置NTP对等体模式

当设备采用对等体模式时，需要在主动对等体上指定被动对等体。

表1-3 在主动对等体上指定被动对等体

操作 | 命令 | 说明
进入系统视图 | system-view | -
指定设备的被动对等体 | ntp-service unicast-peer [ vpn-instance vpn-instance-name ] { ip-address | peer-name } [ authentication-keyid keyid | priority | source-interface interface-type interface-number | version number ] * | 必选 缺省情况下，没有为设备指定被动对等体

l 在对等体模式中，被动对等体上需要执行“1.3 配置NTP工作模式”中的任何一条NTP配置命令来使能NTP，否则被动对等体不会处理来自主动对等体的NTP报文。

l ntp-service unicast-peer 命令中的 ip-address 是一个单播地址，不能为广播地址、组播地址或本地时钟的IP地址。

l 通过 source-interface 参数指定NTP报文的源接口后，NTP报文的源IP地址将被设置为指定接口的主IP地址。

l 通常，主、被动对等体中至少有一个处于同步状态，否则他们将都无法同步。

l 可以通过多次执行 ntp-service unicast-peer命令配置多个被动对等体。

1.3.3 配置NTP广播模式

广播服务器周期性地向广播地址255.255.255.255发送NTP报文，工作在NTP广播客户端模式的设备将回应这个报文，从而开始时钟同步过程。

当设备采用广播模式时，需要在服务器端和客户端都进行配置。由于广播服务器上需要指定一个发送NTP广播报文的接口，广播客户端上也需要指定一个接收NTP广播报文的接口，所以广播模式的配置只能在具体的接口视图下进行。

1. 配置广播客户端

表1-4 配置广播客户端

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入三层以太网端口视图或者VLAN接口视图 | interface interface-type interface-number | - 进入要接收NTP广播报文的三层以太网端口或者VLAN接口
配置设备工作在NTP广播客户端模式 | ntp-service broadcast-client | 必选

2. 配置广播服务器

表1-5 配置广播服务器

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入三层以太网端口视图或者VLAN接口视图 | interface interface-type interface-number | - 进入要发送NTP广播报文的三层以太网端口或者VLAN接口
配置设备工作在NTP广播服务器模式 | ntp-service broadcast-server [ authentication-keyid keyid | version number ] * | 必选

广播服务器只有当其时钟同步后，才能去同步广播客户端。

1.3.4 配置NTP组播模式

NTP组播服务器以组播形式周期性地发送时钟同步报文，工作在NTP组播客户端模式的设备将回应这个报文，从而开始时钟同步过程。

设备采用组播模式时，需要在服务器端和客户端都进行配置。组播模式的配置只能在具体的接口视图下进行。

1. 配置组播客户端

表1-6 配置组播客户端

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入三层以太网端口视图或者VLAN接口视图 | interface interface-type interface-number | - 进入要接收NTP组播报文的三层以太网端口或者VLAN接口
配置设备工作在NTP组播客户端模式 | ntp-service multicast-client [ ip-address ] | 必选

2. 配置组播服务器

表1-7 配置组播服务器

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入三层以太网端口视图或者VLAN接口视图 | interface interface-type interface-number | - 进入要发送NTP组播报文的三层以太网端口或者VLAN接口
配置设备工作在NTP组播服务器模式 | ntp-service multicast-server [ ip-address ] [ authentication-keyid keyid | ttl ttl-number | version number ] * | 必选

l 组播服务器只有当其时钟同步后，才能去同步组播客户端。

l 目前最多可以配置1024个组播客户端，但同时起作用的最多为128个。


1.4 配置NTP可选参数

1.4.1 配置NTP报文的源接口

如果指定了NTP报文的源接口，则设备在主动发送NTP报文时，将报文的源IP地址设置为指定接口的主IP地址。

设备对接收到的NTP请求报文进行应答时，应答报文的源IP地址始终为接收到NTP请求报文的接口的IP地址。

表1-8 配置NTP报文的源接口

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置NTP报文的源接口 | ntp-service source-interface interface-type interface-number | 必选 缺省情况下，没有指定NTP报文的源接口，即根据路由选择NTP报文的源IP地址

l 如果在命令 ntp-service unicast-server 或 ntp-service unicast-peer 中指定了NTP报文的源接口，则以 ntp-service unicast-server 或 ntp-service unicast-peer 指定的为准。

l 如果在接口视图下配置了 ntp-service broadcast-server或 ntp-service multicast-server，则NTP广播或组播模式报文的源接口为配置了上述命令的接口。

l 如果指定的NTP源接口处于down状态，则发送的NTP报文源IP地址为该报文出接口的主IP地址。

1.4.2 配置禁止接口接收NTP报文

使能NTP功能后，缺省情况下所有接口都可以接收NTP报文。可以通过本配置，禁止从某个接口接收NTP报文。

表1-9 配置禁止接口接收NTP报文

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入三层以太网端口视图或者VLAN接口视图 | interface interface-type interface-number | -
配置禁止接口接收NTP报文 | ntp-service in-interface disable | 必选 缺省情况下，允许接口接收NTP报文

1.4.3 配置允许建立的动态会话数目

表1-10 配置允许建立的动态会话数目

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置允许建立的动态NTP会话数目 | ntp-service max-dynamic-sessions number | 必选 缺省情况下，允许建立的动态NTP会话的数目为100


1.5 配置访问控制权限

用户可以配置对本地设备NTP服务的访问控制权限。访问控制权限可以分为四种：

l query：允许控制查询权限。该权限只允许对端设备对本地设备的NTP服务进行控制查询，但是不能向本地设备同步。所谓的控制查询，就是查询NTP的一些状态，比如告警信息，验证状态，时钟源信息等。

l synchronization：只允许服务器访问权限。该权限只允许对端设备向本地设备同步，但不能进行控制查询。

l server：允许服务器访问与查询权限。该权限允许对端设备向本地设备同步和控制查询，但本地设备不会同步到对端设备。

l peer：完全访问权限。该权限既允许对端设备向本地设备同步和控制查询，同时本地设备也可以同步到对端设备。

NTP服务的访问控制权限从高到低依次为 peer、server、synchronization、query。当设备接收到一个NTP服务请求时，会按照此顺序进行匹配，以第一个匹配的权限为准。

1.5.1 配置准备

在配置对本地设备NTP服务的访问控制权限之前，需要创建并配置与访问权限关联的ACL。ACL的配置方法请参见“ACL和QoS配置指导”中的“ACL”。

1.5.2 配置访问控制权限

表1-11 配置对本地设备NTP服务的访问控制权限

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置对端设备对本地设备NTP服务的访问控制权限 | ntp-service access { peer | query | server | synchronization } acl-number | 必选 缺省情况下，对端设备对本地设备NTP服务的访问控制权限为 peer

配置对本地设备NTP服务的访问控制权限，仅提供了一种最小限度的安全措施，更安全的方法是进行身份验证。


1.6 配置NTP验证功能

在一些对安全性要求较高的网络中，运行NTP协议时需要启用验证功能。通过客户端和服务器端的密码验证，保证客户端只与通过验证的设备进行同步，提高了网络安全性。

1.6.1 配置准备

配置NTP验证功能可以分为配置客户端的NTP验证和配置服务器端的NTP验证两个部分。

在配置NTP验证功能时，应注意以下原则：

l 对于所有同步模式，如果使能了NTP验证功能，应同时配置验证密钥并将密钥设为可信密钥，即如果执行了 ntp-service authentication enable 命令，则必须同时执行 ntp-service authentication-keyid 命令和 ntp-service reliable authentication-keyid 命令。否则，无法正常启用NTP验证功能。

l 对于客户端/服务器模式和对等体模式，还应在客户端（对等体模式中的主动对等体）将指定密钥与对应的NTP服务器（对等体模式的被动对等体）关联；对于广播服务器模式和组播服务器模式，应在广播服务器或组播服务器上将指定密钥与对应的NTP服务器关联。否则，无法正常启用NTP验证功能。

l 对于客户端/服务器同步模式，如果客户端没有成功启用NTP验证功能，不论服务器端是否使能NTP验证，客户端均可以与服务器端同步；如果客户端上成功启用了NTP验证功能，则客户端只会同步到提供可信密钥的服务器，如果服务器提供的密钥不是可信的密钥，那么客户端不会与其同步。

l 对于所有同步模式，服务器端的配置与客户端的配置应保持一致。

1.6.2 配置过程

1. 配置客户端的NTP验证

表1-12 配置客户端的NTP验证

操作 | 命令 | 说明
进入系统视图 | system-view | -
使能NTP身份验证功能 | ntp-service authentication enable | 必选 缺省情况下，NTP身份验证功能处于关闭状态
配置NTP验证密钥 | ntp-service authentication-keyid keyid authentication-mode md5 value | 必选 缺省情况下，没有配置NTP验证密钥
配置指定密钥为可信密钥 | ntp-service reliable authentication-keyid keyid | 必选 缺省情况下，没有指定可信密钥
将指定密钥与对应的NTP服务器关联 | 客户端/服务器模式： ntp-service unicast-server { ip-address | server-name } authentication-keyid keyid | 必选 可以将不存在的密钥与NTP服务器关联。但是若想成功启用NTP验证功能，则必须在关联密钥后，配置该密钥，并将其指定为可信密钥
 | 对等体模式： ntp-service unicast-peer { ip-address | peer-name } authentication-keyid keyid

客户端使能NTP验证功能后，必须配置与服务器端相同的验证密钥，并且必须声明该密钥是可信的，否则无法与服务器同步。

2. 配置服务器端的NTP验证

表1-13 配置服务器端的NTP验证

操作 | 命令 | 说明
进入系统视图 | system-view | -
使能NTP验证功能 | ntp-service authentication enable | 必选 缺省情况下，NTP身份验证功能处于关闭状态
配置NTP验证密钥 | ntp-service authentication-keyid keyid authentication-mode md5 value | 必选 缺省情况下，没有配置NTP验证密钥
配置指定密钥为可信密钥 | ntp-service reliable authentication-keyid keyid | 必选 缺省情况下，没有指定可信密钥
进入三层以太网端口视图或者VLAN接口视图 | interface interface-type interface-number | -
将指定密钥与对应的NTP服务器关联 | 广播服务器模式： ntp-service broadcast-server authentication-keyid keyid | 必选 可以将不存在的密钥与NTP服务器关联。但是若想成功启用NTP验证功能，则必须在关联密钥后，配置该密钥，并将其指定为可信密钥
 | 组播服务器模式： ntp-service multicast-server authentication-keyid keyid

服务器端的NTP验证配置步骤与客户端的相同，并且两端必须配置相同的密钥。


1.7 NTP显示和维护

在完成上述配置后，在任意视图下执行 display 命令可以显示配置后NTP的运行情况，通过查看显示信息验证配置的效果。

表1-14 NTP显示与维护

操作 | 命令
显示NTP服务的状态信息 | display ntp-service status [ | { begin | exclude | include } regular-expression ]
显示NTP服务维护的会话信息 | display ntp-service sessions [ verbose ] [ | { begin | exclude | include } regular-expression ]
显示从本地设备回溯到主参考时钟源的各个NTP时间服务器的简要信息 | display ntp-service trace [ | { begin | exclude | include } regular-expression ]


1.8 NTP典型配置举例

1.8.1 配置NTP客户端/服务器模式

1. 组网需求

为了实现Device B的时钟与Device A的时钟同步，需要进行以下配置：

l 在Device A上设置本地时钟作为参考时钟，层数为2；

l Device B工作在客户端模式，指定Device A为NTP服务器。

2. 组网图

图1-7 配置NTP客户端/服务器模式组网图

3. 配置步骤

(1) 按照图1-7 配置各接口的IP地址，具体配置过程略。

(2) 配置Device B

# 同步前查看Device B的NTP状态。

<DeviceB> display ntp-service status

Clock status: unsynchronized

Clock stratum: 16

Reference clock ID: none

Nominal frequency: 64.0000 Hz

Actual frequency: 64.0000 Hz

Clock precision: 2^7

Clock offset: 0.0000 ms

Root delay: 0.00 ms

Root dispersion: 0.00 ms

Peer dispersion: 0.00 ms

Reference time: 00:00:00.000 UTC Jan 1 1900 (00000000.00000000)

# 设置Device A为Device B的NTP服务器。

<DeviceB> system-view

[DeviceB] ntp-service unicast-server 1.0.1.11

# 以上配置将Device B向Device A进行时间同步，同步后查看Device B的NTP状态。

[DeviceB] display ntp-service status

Clock status: synchronized

Clock stratum: 3

Reference clock ID: 1.0.1.11

Nominal frequency: 64.0000 Hz

Actual frequency: 64.0000 Hz

Clock precision: 2^7

Clock offset: 0.0000 ms

Root delay: 31.00 ms

Root dispersion: 1.05 ms

Peer dispersion: 7.81 ms

Reference time: 14:53:27.371 UTC Jan 19 2011 (C6D94F67.5EF9DB22)

此时Device B已经与Device A同步，层数比Device A的层数大1，为3。

# 查看Device B的NTP会话信息，可以看到Device B与Device A建立了连接。

[DeviceB] display ntp-service sessions

source reference stra reach poll now offset delay disper

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

[12345] 1.0.1.11 127.127.1.0 2 63 64 3 -75.5 31.0 16.5

note: 1 source(master),2 source(peer),3 selected,4 candidate,5 configured

Total associations : 1

1.8.2 配置NTP对等体模式

1. 组网需求

为了实现设备之间的时钟同步，需要进行以下配置：

l Device A设置本地时钟作为参考时钟，层数为2；

l Device B工作在客户端模式，指定Device A为NTP服务器；

l Device B向Device A同步后，配置Device C工作在对等体模式，将Device B设为对等体。Device C为主动对等体，Device B为被动对等体。

2. 组网图

图1-8 配置NTP对等体模式组网图

3. 配置步骤

(1) 配置各VLAN接口的IP地址，具体配置过程略。

(2) 配置Device B

# 设置Device A为Device B的NTP服务器。

<DeviceB> system-view

[DeviceB] ntp-service unicast-server 3.0.1.31

(3) 查看Device B的状态（Device B向Device A同步后）。

[DeviceB] display ntp-service status

Clock status: synchronized

Clock stratum: 3

Reference clock ID: 3.0.1.31

Nominal frequency: 100.0000 Hz

Actual frequency: 100.0000 Hz

Clock precision: 2^18

Clock offset: -21.1982 ms

Root delay: 15.00 ms

Root dispersion: 775.15 ms

Peer dispersion: 34.29 ms

Reference time: 15:22:47.083 UTC Jan 19 2011 (C6D95647.153F7CED)

此时Device B已经与Device A同步，层数比Device A的层数大1，为3。

(4) 配置Device C（Device B向Device A同步后）

# 本地同步后，设置Device C为主动对等体。

[DeviceC] ntp-service unicast-peer 3.0.1.32

以上配置将Device B和Device C配置为对等体，Device C处于主动对等体模式，Device B处于被动对等体模式，由于Device C系统时钟的层数为16，而Device B的层数为3，所以Device C向Device B同步。

(5) 同步后查看Device C的状态。

[DeviceC] display ntp-service status

Clock status: synchronized

Clock stratum: 4

Reference clock ID: 3.0.1.32

Nominal frequency: 100.0000 Hz

Actual frequency: 100.0000 Hz

Clock precision: 2^18

Clock offset: -21.1982 ms

Root delay: 15.00 ms

Root dispersion: 775.15 ms

Peer dispersion: 34.29 ms

Reference time: 15:22:47.083 UTC Jan 19 2011 (C6D95647.153F7CED)

此时Device C已经与Device B同步，层数比Device B的层数大1，为4。

# 查看Device C的NTP会话信息，可以看到Device C与Device B建立了连接。

[DeviceC] display ntp-service sessions

source reference stra reach poll now offset delay disper

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

[12345] 3.0.1.32 3.0.1.31 3 3 64 16 -6.4 4.8 1.0

note: 1 source(master),2 source(peer),3 selected,4 candidate,5 configured

Total associations : 1

1.8.3 配置NTP广播模式

1. 组网需求

Device C作为同一网段中多个设备的NTP服务器，同时同步多个设备的时钟。为了实现该需求，需要进行以下配置：

l 在Device C上设置本地时钟作为参考时钟，层数为2；

l Device C工作在广播服务器模式，从VLAN接口2向外发送广播报文；

l Device A和Device B工作在广播客户端模式，分别从各自的VLAN接口2监听广播报文。

2. 组网图

图1-9 配置NTP广播模式组网图

3. 配置步骤

(1) 按照图1-9 配置各接口的IP地址，具体配置过程略。

(2) 配置Device C

# 设置Device C为广播服务器，从VLAN接口2发送广播报文。

[DeviceC] interface vlan-interface 2

[DeviceC-Vlan-interface2] ntp-service broadcast-server

(3) 配置Device A

# 设置Device A为广播客户端，从VLAN接口2监听广播报文。

<DeviceA> system-view

[DeviceA] interface vlan-interface 2

[DeviceA-Vlan-interface2] ntp-service broadcast-client

(4) 配置Device B

# 设置Device B为广播客户端，从VLAN接口2监听广播报文。

<DeviceB> system-view

[DeviceB] interface vlan-interface 2

[DeviceB-Vlan-interface2] ntp-service broadcast-client

Device A和Device B接收到Device C发出的广播报文后，与其同步。

# 以Device A为例，同步后查看Device A的状态。

[DeviceA-Vlan-interface2] display ntp-service status

Clock status: synchronized

Clock stratum: 3

Reference clock ID: 3.0.1.31

Nominal frequency: 64.0000 Hz

Actual frequency: 64.0000 Hz

Clock precision: 2^7

Clock offset: 0.0000 ms

Root delay: 31.00 ms

Root dispersion: 8.31 ms

Peer dispersion: 34.30 ms

Reference time: 16:01:51.713 UTC Jan 19 2011 (C6D95F6F.B6872B02)

此时Device A已经与Device C同步，层数比Device C的层数大1，为3。

# 查看Device A的NTP会话信息，可以看到Device A与Device C建立了连接。

[DeviceA-Vlan-interface2] display ntp-service sessions

source reference stra reach poll now offset delay disper

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

[1234] 3.0.1.31 127.127.1.0 2 254 64 62 -16.0 32.0 16.6

note: 1 source(master),2 source(peer),3 selected,4 candidate,5 configured

Total associations : 1

1.8.4 配置NTP组播模式

1. 组网需求

Device C作为不同网段中多个设备的NTP服务器，同时同步多个设备的时钟。为了实现该需求，需要进行以下配置：

l 在Device C上设置本地时钟作为参考时钟，层数为2；

l Device C工作在组播服务器模式，从VLAN接口2向外发送组播报文；

l Device A和Device D工作在组播客户端模式，Device A从VLAN接口3监听组播报文，Device D从VLAN接口2监听组播报文。

2. 组网图

图1-10 配置NTP组播模式组网图

3. 配置步骤

(1) 按照图1-10 配置各接口的IP地址，具体配置过程略。

(2) 配置Device C

# 设置Device C为组播服务器，从VLAN接口2发送组播报文。

[DeviceC] interface vlan-interface 2

[DeviceC-Vlan-interface2] ntp-service multicast-server

(3) 配置Device D

# 设置Device D为组播客户端，从VLAN接口2监听组播报文。

<DeviceD> system-view

[DeviceD] interface vlan-interface 2

[DeviceD-Vlan-interface2] ntp-service multicast-client

由于Device D和Device C在同一个网段，不需要配置组播功能，Device D就可以收到Device C发出的组播报文，并与其同步。

# 同步后查看Device D的状态。

[DeviceD-Vlan-interface2] display ntp-service status

Clock status: synchronized

Clock stratum: 3

Reference clock ID: 3.0.1.31

Nominal frequency: 64.0000 Hz

Actual frequency: 64.0000 Hz

Clock precision: 2^7

Clock offset: 0.0000 ms

Root delay: 31.00 ms

Root dispersion: 8.31 ms

Peer dispersion: 34.30 ms

Reference time: 16:01:51.713 UTC Jan 19 2011 (C6D95F6F.B6872B02)

此时Device D已经与Device C同步，层数比Device C的层数大1，为3。

# 查看Device D的NTP会话信息，可以看到Device D与Device C建立了连接。

[DeviceD-Vlan-interface2] display ntp-service sessions

source reference stra reach poll now offset delay disper

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

[1234] 3.0.1.31 127.127.1.0 2 254 64 62 -16.0 31.0 16.6

note: 1 source(master),2 source(peer),3 selected,4 candidate,5 configured

Total associations : 1

(4) 配置Device B

由于Device A与Device C不在同一网段，所以Device B上需要配置组播功能，否则Device A收不到Device C发出的组播报文。

# 配置组播功能。

<DeviceB> system-view

[DeviceB] multicast routing-enable

[DeviceB] interface vlan-interface 2

[DeviceB-Vlan-interface2] pim dm

[DeviceB-Vlan-interface2] quit

[DeviceB] vlan 3

[DeviceB-vlan3] port ethernet 1/0/1

[DeviceB-vlan3] quit

[DeviceB] interface vlan-interface 3

[DeviceB-Vlan-interface3] igmp enable

[DeviceB-Vlan-interface3] igmp static-group 224.0.1.1

[DeviceB-Vlan-interface3] quit

[DeviceB] interface ethernet 1/0/1

[DeviceB- Ethernet1/0/1] igmp-snooping static-group 224.0.1.1 vlan 3

(5) 配置Device A

<DeviceA> system-view

[DeviceA] interface vlan-interface 3

# 设置Device A为组播客户端，从VLAN接口3监听组播报文。

[DeviceA-Vlan-interface3] ntp-service multicast-client

# 同步后查看Device A的状态。

[DeviceA-Vlan-interface3] display ntp-service status

Clock status: synchronized

Clock stratum: 3

Reference clock ID: 3.0.1.31

Nominal frequency: 64.0000 Hz

Actual frequency: 64.0000 Hz

Clock precision: 2^7

Clock offset: 0.0000 ms

Root delay: 40.00 ms

Root dispersion: 10.83 ms

Peer dispersion: 34.30 ms

Reference time: 16:02:49.713 UTC Jan 19 2011 (C6D95F6F.B6872B02)

此时Device A已经与Device C同步，层数比Device C的层数大1，为3。

# 查看Device A的NTP会话信息，可以看到Device A与Device C建立了连接。

[DeviceA-Vlan-interface3] display ntp-service sessions

source reference stra reach poll now offset delay disper

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

[1234] 3.0.1.31 127.127.1.0 2 255 64 26 -16.0 40.0 16.6

note: 1 source(master),2 source(peer),3 selected,4 candidate,5 configured

Total associations : 1

组播功能的详细介绍请参见“IP组播配置指导”中的“IGMP”和“PIM”。

1.8.5 配置带身份验证的NTP客户端/服务器模式

1. 组网需求

为了实现Device B的时钟与Device A的时钟同步，并保证时钟同步的安全性，需要进行以下配置：

l 在Device A上设置本地时钟作为参考时钟，层数为2；

l Device B工作在客户端模式，指定Device A为NTP服务器；

l Device A和Device B上同时配置NTP验证。

2. 组网图

图1-11 配置带身份验证的NTP客户端/服务器模式组网图

3. 配置步骤

(1) 按照图1-11 配置各接口的IP地址，具体配置过程略。

(2) 配置Device B

<DeviceB> system-view

# 在Device B上启动身份验证。

[DeviceB] ntp-service authentication enable

# 设置密钥。

[DeviceB] ntp-service authentication-keyid 42 authentication-mode md5 aNiceKey

# 指定密钥为可信密钥。

[DeviceB] ntp-service reliable authentication-keyid 42

# 设置Device A为Device B的NTP服务器。

[DeviceB] ntp-service unicast-server 1.0.1.11 authentication-keyid 42

以上配置将Device B向Device A进行时间同步，但由于Device A没有使能NTP身份验证，所以，Device B还是无法向Device A同步。

现在，向Device A增加以下配置：

# 在Device A上启动身份验证。

[DeviceA] ntp-service authentication enable

# 设置密钥。

[DeviceA] ntp-service authentication-keyid 42 authentication-mode md5 aNiceKey

# 指定密钥为可信密钥。

[DeviceA] ntp-service reliable authentication-keyid 42

此时，Device B可以向Device A同步。

# 同步后查看Device B的状态。

[DeviceB] display ntp-service status

Clock status: synchronized

Clock stratum: 3

Reference clock ID: 1.0.1.11

Nominal frequency: 64.0000 Hz

Actual frequency: 64.0000 Hz

Clock precision: 2^7

Clock offset: 0.0000 ms

Root delay: 31.00 ms

Root dispersion: 1.05 ms

Peer dispersion: 7.81 ms

Reference time: 14:53:27.371 UTC Jan 19 2011 (C6D94F67.5EF9DB22)

可以看出，Device B已经与Device A同步，层数比Device A的层数大1，为3。

# 查看Device B的NTP会话信息，可以看到Device B与Device A建立了连接。

[DeviceB] display ntp-service sessions

source reference stra reach poll now offset delay disper

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

[12345] 1.0.1.11 127.127.1.0 2 63 64 3 -75.5 31.0 16.5

note: 1 source(master),2 source(peer),3 selected,4 candidate,5 configured

Total associations : 1

1.8.6 配置带身份验证的NTP广播模式

1. 组网需求

Device C作为同一网段中多个设备的NTP服务器，同时同步多个设备的时钟。Device B要求对时钟源进行验证，以保证时钟同步的安全性。为了实现上述需求，需要进行以下配置：

l 在Device C上设置本地时钟作为参考时钟，层数为3；

l Device C工作在广播服务器模式，从VLAN接口2向外发送广播报文；

l Device A和Device B工作在广播客户端模式，从VLAN接口2监听广播报文；

l 在Device B和Device C上配置NTP验证功能。

2. 组网图

图1-12 配置带身份验证的NTP广播模式组网图

3. 配置步骤

(1) 按照图1-12 配置各接口的IP地址，具体配置过程略。

(2) 配置Device A

# 设置Device A为NTP广播客户端，从VLAN接口2监听广播报文。

<DeviceA> system-view

[DeviceA] interface vlan-interface 2

[DeviceA-Vlan-interface2] ntp-service broadcast-client

(3) 配置Device B

# 使能NTP验证功能，创建ID为88的NTP验证密钥，密钥值为123456，并将密钥88指定为可信密钥。

<DeviceB> system-view

[DeviceB] ntp-service authentication enable

[DeviceB] ntp-service authentication-keyid 88 authentication-mode md5 123456

[DeviceB] ntp-service reliable authentication-keyid 88

# 设置Device B为NTP广播客户端，从VLAN接口2监听广播报文。

[DeviceB] interface vlan-interface 2

[DeviceB-Vlan-interface2] ntp-service broadcast-client

(4) 配置Device C

# 设置Device C为NTP广播服务器，从VLAN接口2向外发送广播报文。

[DeviceC] interface vlan-interface 2

[DeviceC-Vlan-interface2] ntp-service broadcast-server

[DeviceC-Vlan-interface2] quit

# Device A接收到Device C发出的广播报文后与其同步。在Device A上查看NTP服务的状态信息，可以看到Device A已经与Device C同步，层数比Device C的层数大1，为4。

[DeviceA-Vlan-interface2] display ntp-service status

Clock status: synchronized

Clock stratum: 4

Reference clock ID: 3.0.1.31

Nominal frequency: 64.0000 Hz

Actual frequency: 64.0000 Hz

Clock precision: 2^7

Clock offset: 0.0000 ms

Root delay: 31.00 ms

Root dispersion: 8.31 ms

Peer dispersion: 34.30 ms

Reference time: 16:01:51.713 UTC Jan 19 2011 (C6D95F6F.B6872B02)

# 查看Device A的NTP会话信息，可以看到Device A与Device C建立了连接。

[DeviceA-Vlan-interface2] display ntp-service sessions

source reference stra reach poll now offset delay disper

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

[1234] 3.0.1.31 127.127.1.0 3 254 64 62 -16.0 32.0 16.6

note: 1 source(master),2 source(peer),3 selected,4 candidate,5 configured

Total associations : 1

# 由于Device B上使能了NTP验证功能，Device C上没有使能NTP验证功能。因此，Device B无法向Device C同步。

[DeviceB-Vlan-interface2] display ntp-service status

Clock status: unsynchronized

Clock stratum: 16

Reference clock ID: none

Nominal frequency: 100.0000 Hz

Actual frequency: 100.0000 Hz

Clock precision: 2^18

Clock offset: 0.0000 ms

Root delay: 0.00 ms

Root dispersion: 0.00 ms

Peer dispersion: 0.00 ms

Reference time: 00:00:00.000 UTC Jan 1 1900(00000000.00000000)

# 在Device C上使能NTP验证功能，创建ID为88的NTP验证密钥，密钥值为123456，并将密钥88指定为可信密钥。

[DeviceC] ntp-service authentication enable

[DeviceC] ntp-service authentication-keyid 88 authentication-mode md5 123456

[DeviceC] ntp-service reliable authentication-keyid 88

# 设置Device C为NTP广播服务器并指定关联的密钥编号为88。

[DeviceC] interface vlan-interface 2

[DeviceC-Vlan-interface2] ntp-service broadcast-server authentication-keyid 88

# 在Device C上使能NTP验证功能后，Device B可以向Device C同步。在Device B上查看NTP服务的状态信息，可以看到Device B已经与Device C同步，层数比Device C的层数大1，为4。

[DeviceB-Vlan-interface2] display ntp-service status

Clock status: synchronized

Clock stratum: 4

Reference clock ID: 3.0.1.31

Nominal frequency: 64.0000 Hz

Actual frequency: 64.0000 Hz

Clock precision: 2^7

Clock offset: 0.0000 ms

Root delay: 31.00 ms

Root dispersion: 8.31 ms

Peer dispersion: 34.30 ms

Reference time: 16:01:51.713 UTC Jan 19 2011 (C6D95F6F.B6872B02)

# 查看Device B的NTP会话信息，可以看到Device B与Device C建立了连接。

[DeviceB-Vlan-interface2] display ntp-service sessions

source reference stra reach poll now offset delay disper

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

[1234] 3.0.1.31 127.127.1.0 3 254 64 62 -16.0 32.0 16.6

note: 1 source(master),2 source(peer),3 selected,4 candidate,5 configured

Total associations : 1

# 在Device C上配置NTP验证功能后，不会对Device A造成影响。Device A仍然处于同步状态。

[DeviceA-Vlan-interface2] display ntp-service status

Clock status: synchronized

Clock stratum: 4

Reference clock ID: 3.0.1.31

Nominal frequency: 64.0000 Hz

Actual frequency: 64.0000 Hz

Clock precision: 2^7

Clock offset: 0.0000 ms

Root delay: 31.00 ms

Root dispersion: 8.31 ms

Peer dispersion: 34.30 ms

Reference time: 16:01:51.713 UTC Jan 19 2011 (C6D95F6F.B6872B02)


1 信息中心配置

相关链接

  • 1.1 信息中心简介
  • 1.2 配置信息中心
  • 1.3 信息中心显示和维护
  • 1.4 信息中心典型配置举例
父主题： 03-信息中心配置


1.1 信息中心简介

1.1.1 信息中心概述

信息中心是系统的信息枢纽，它能够对所有的系统信息进行分类、管理，为网络管理员和开发人员监控网络运行情况和诊断网络故障提供了强有力的支持。

信息中心的工作过程如下：

l 接收各模块生成的日志信息（log）、告警信息（trap）和调试信息（debug）。

l 根据用户设置的输出规则，将信息输出到信息通道。

l 根据信息通道和输出方向的关联，将信息输出到不同方向。

概括来说，信息中心的主要工作就是将三种信息，按照八个严重等级，分配到十个信息通道中，再输出到多个方向，图1-1 描述了缺省情况下，三种信息分别可以分配到哪些信息通道，每个信息通道对应哪个输出方向。下面将进行详细介绍。

图1-1 信息中心功能示意图（缺省情况下）

信息中心缺省情况下处于开启状态。在信息中心开启时，特别是在处理信息较多时，由于信息分类、输出的原因，对系统性能有一定的影响。

1.1.2 系统信息的分类

信息中心的系统信息共分为三类：

l log类，日志类信息

l trap类，告警类信息

l debug类，调试类信息

1.1.3 系统信息的等级

信息按严重性划分为八个等级，严重性由高到底的顺序依次为：emergencies、alerts、critical、errors、warnings、notifications、informational和debugging。根据信息级别输出信息时，将会输出信息级别高于或等于所设置级别的信息。比如，输出规则中指定允许级别为informational的信息输出，则级别为emergencies～informational的信息均会输出。

表1-1 信息级别列表

信息级别 | 数值 | 描述
emergencies | 0 | 系统不可用信息
alerts | 1 | 需要立刻做出反应的信息
critical | 2 | 严重信息
errors | 3 | 错误信息
warnings | 4 | 警告信息
notifications | 5 | 正常出现但是重要的信息
informational | 6 | 需要记录的通知信息
debugging | 7 | 调试过程产生的信息

1.1.4 系统信息的输出方向和通道

系统支持十个通道，缺省情况下，通道0～6和通道9已经定义了通道名、输出规则和输出方向。可以通过命令改变通道名、输出规则和输出方向，用户还可以在不改变通道0～6和通道9缺省配置的情况下，配置通道7和通道8，将他们与输出方向关联，以便对输出的系统信息实施配置的过滤规则。

表1-2 信息通道和输出方向

通道编号 | 通道的缺省名称 | 通道的缺省输出方向 | 说明
0 | console | 控制台 | 可以接收log、trap、debug信息
1 | monitor | 监视终端 | 可以接收log、trap、debug信息，方便远程维护
2 | loghost | 日志主机 | 可以接收log、trap、debug信息，通常系统信息在日志主机以文件的方式存储，以便查询
3 | trapbuffer | 告警缓冲区 | 可以接收trap信息，是设备内部的一块缓存，用于记录信息
4 | logbuffer | 日志缓冲区 | 可以接收log和debug信息，是设备内部的一块缓存，用于记录信息
5 | snmpagent | SNMP模块 | 可以接收trap信息
6 | channel6 | Web页面 | 可以接收log信息
7 | channel7 | 未指定 | 可以接收log、trap、debug信息
8 | channel8 | 未指定 | 可以接收log、trap、debug信息
9 | channel9 | 日志文件 | 可以接收log、trap、debug信息

1.1.5 按来源模块输出系统信息

系统由众多的协议模块、单板驱动程序、配置模块构成，系统信息可按来源模块进行划分，并过滤输出。系统支持的来源模块可以通过 info-center source ？命令的帮助信息获取。

1.1.6 系统信息的缺省输出规则

缺省输出规则规定了各个输出方向可以输出的信息模块、输出的信息类型以及输出的信息级别，如表1-3 所示。该表表明，缺省情况下：

l 允许所有模块的所有log信息发往Web页面和日志文件；允许所有模块的高于或等于informational级别的log信息发往日志主机；允许所有模块的高于或等于informational级别的log信息发往控制台、监视终端和日志缓冲区；所有模块的所有log信息不允许发往告警缓冲区和SNMP模块方向。

l 允许所有模块的所有Trap信息发往控制台、监视终端、日志主机、Web页面和日志文件；允许所有模块的高于或等于informational级别的Trap信息发往告警缓冲区和SNMP模块；所有模块的所有Trap信息不允许发往日志缓冲区方向。

l 允许所有模块的所有debug信息发往控制台和监视终端；所有模块的所有debug信息不允许发往日志主机、告警缓冲区、日志缓冲区、SNMP模块、Web页面和日志文件。

表1-3 输出方向的缺省输出规则

输出方向 | 允许输出的模块 | LOG |  | TRAP |  | DEBUG
 |  | 开关 | 级别 | 开关 | 级别 | 开关 | 级别
控制台 | default（所有模块） | 开 | informational | 开 | debugging | 开 | debugging
监视终端 | default（所有模块） | 开 | informational | 开 | debugging | 开 | debugging
日志主机 | default（所有模块） | 开 | informational | 开 | debugging | 关 | debugging
告警缓冲区 | default（所有模块） | 关 | informational | 开 | informational | 关 | debugging
日志缓冲区 | default（所有模块） | 开 | informational | 关 | debugging | 关 | debugging
SNMP模块 | default（所有模块） | 关 | debugging | 开 | informational | 关 | debugging
Web页面 | default（所有模块） | 开 | debugging | 开 | debugging | 关 | debugging
日志文件 | default（所有模块） | 开 | debugging | 开 | debugging | 关 | debugging

1.1.7 系统信息的格式

按照系统信息的输出方向不同，系统信息可能有不同格式。

(1) 当输出方向为非日志主机（控制台、监视终端、日志缓冲区、告警缓冲区、SNMP模块和日志文件）时

系统信息格式大致为：

timestamp sysname module/level/digest:content

对应的中文格式为：

时间戳 主机名 模块名/信息级别/信息摘要:信息文本

比如，监视终端与设备相连，当有终端登录设备时，在监视终端可以看到格式如下的日志信息：

%Jan 26 17:08:35:809 2011 Sysname SHELL/4/LOGIN: VTY login from 1.1.1.1

(2) 当输出方向为日志主机时，支持两种输出格式：

l H3C格式

系统信息格式为：

<PRI>timestamp sysname ％％vvmodule/level/digest: source content

比如，日志主机与设备相连，当有终端登录设备时，在日志主机可以看到格式如下的日志信息：

<189>Jan 9 14:59:04 2011 MyDevice %%10SHELL/5/SHELL_LOGIN(l):VTY logged in from 192.168.1.21.

l UNICOM格式

系统信息格式为：

<PRI>timestamp sysname vvmodule/level/serial_number: content

比如，日志主机与设备相连，当设备端口Link down时，在日志主机可以看到格式如下的日志信息：

<186>Jan 13 16:48:08 2011 H3C 10IFNET/2/210231a64jx073000020: log_type=port;content=Vlan-interface1 link status is DOWN.

<186>Jan 13 16:48:08 2011 H3C 10IFNET/2/210231a64jx073000020: log_type=port;content=Line protocol on the interface Vlan-interface1 is DOWN.

l 以上格式中的尖括号（< >）、空格、斜杠（/）、冒号（:）是必须的。

l 以上格式是设备给各个输出方向发送的原始信息的格式，可能与用户最终看到的信息格式有差异，最终显示格式与用户使用的日志解析工具有关，请以实际情况为准。

下面对每一个字段做详细说明。

1. PRI（优先级）

优先级的计算按如下公式：facility*8+severity。Facility表示工具名称，在设置日志主机相关参数的时候可以设置，参数取值为local0～local7，对应的十进制数值为16～23，缺省取值为local7。主要用于在日志主机端标志不同的日志来源，查找、过滤对应日志源的日志。severity（信息级别）的取值范围为0～7，信息级别具体含义请参见表1-1。

本字段只有在信息发往日志主机时才有效。

2. timestamp（时间戳）

时间戳记录了系统信息产生的时间，方便用户查看和定位系统事件。发往日志主机的系统信息的时间戳不带毫秒信息，发送到其它方向的系统信息会精确到毫秒；发往日志主机的系统信息的时间戳格式由 info-center timestamp loghost 命令设置，发送到其它方向的时间戳格式由 info-center timestamp 命令统一设置。（各时间戳参数的详细描述请见表1-4。）

表1-4 时间戳参数描述表

时间戳参数 | 说明 | 举例
boot | 系统启动后经历的时间（即设备的本次运行的持续时间），格式为：xxxxxx.yyyyyy，其中xxxxxx是系统自启动后经历时间的毫秒数高32位，yyyyyy是低32位 除日志主机方向外发往其它方向的系统信息均支持该参数 | %0.109391473 Sysname FTPD/5/FTPD_LOGIN: User ftp (192.168.1.23) has logged in successfully. 其中0.109391473即为 boot 格式的时间戳
date | 系统当前的日期和时间，格式为“Mmm dd hh:mm:ss:sss yyyy” 发往所有方向的系统信息均支持该参数 | %Jan 30 05:36:29:579 2011 Sysname FTPD/5/FTPD_LOGIN: User ftp (192.168.1.23) has logged in successfully. 其中Jan 30 05:36:29:579 2011即为 date 格式的时间戳
iso | ISO 8601中规定的时间戳的格式 只有发往日志主机方向的系统信息支持该参数 | <189>2011-05-30T06:42:44 Sysname %%10FTPD/5/FTPD_LOGIN(l): User ftp (192.168.1.23) has logged in successfully. 其中2011-05-30T06:42:44即为 iso 格式的时间戳
none | 不带时间信息 发往所有方向的系统信息均支持该参数 | % Sysname FTPD/5/FTPD_LOGIN: User ftp (192.168.1.23) has logged in successfully. 其中没有包含时间戳
no-year-date | 系统当前日期和时间，但不包含年份信息 只有发往日志主机方向的系统信息支持该参数 | <189>Jan 30 06:44:22 Sysname %%10FTPD/5/FTPD_LOGIN(l): User ftp (192.168.1.23) has logged in successfully. 其中Jan 30 06:44:22即为 no-year-date 格式的时间戳

3. sysname（主机名或主机IP地址）

l 当使用UNICOM格式将系统信息发送到日志主机，并配置了 info-center loghost source 或者在 info-center loghost 命令中指定了 vpn-instance vpn-instance-name 时，该字段会显示为生成该日志的设备的IP地址。

l 其它情况下（当使用H3C格式将系统信息发送到日志主机或者发往别的方向），该字段均会显示为生成该日志的设备的名称，即本机的系统名。用户可使用 sysname 命令修改主机名（具体配置请参见“基础配置命令参考”中的“设备管理”）。

4. ％％（厂家标志）

该字段表示本信息由H3C设备生成。

本字段只有在使用H3C格式将系统信息发往日志主机时才出现。

5. vv（版本信息）

该字段表示syslog的版本标识，取值为10。

本字段只有在信息发往日志主机时才出现。

6. module（模块名）

该字段表示产生信息的功能模块的名称。模块列表可以通过在系统视图下输入命令 info-center source ？查看到。

7. level（信息级别）

系统信息的级别共分为8级，从0～7，它们的定义和说明请参见表1-1。各模块生成的系统信息的级别在开发阶段已经确定，用户不能更改，但可以使用 info-center source 命令让指定级别的信息输出，低于该级别的信息不输出。

8. digest（信息摘要）

信息摘要是一个不超过32个字符的字符串，表示该信息的内容大意。

l 对于输出方向为日志主机的系统信息，如果该字符串以“(l)”结尾则表示该信息为Log信息，如果该字符串以“(t)”结尾则表示该信息为Trap信息，如果该字符串以“(d)”结尾则表示该信息为Debug信息。

l 对于输出方向为非日志主机的系统信息，时间戳前面会有百分号（%）或井字符号（#）或米字符号（*），分别代表该条信息是日志信息或告警信息或调试信息。

9. serial_number（序列号）

表示生成该日志的设备的序列号。

该信息只有在使用UNICOM格式将系统信息发往日志主机时才出现。

10. source（定位信息）

该字段为可选字段，表示该信息的产生者，只有在使用H3C格式将系统信息发往日志主机时才出现。该字段的具体内容可能为下面的一种：

l IRF的成员设备编号；

l 日志发送者的源IP。

11. content（信息文本）

该字段表示了该条系统信息的具体内容。


1.2 配置信息中心

1.2.1 信息中心配置任务简介

表1-5 信息中心配置任务简介

配置任务 | 说明 | 详细配置
配置信息发送到控制台 | 可选 | 1.2.2
配置信息发送到监视终端 | 可选 | 1.2.3
配置信息发送到日志主机 | 可选 | 1.2.4
配置信息发送到告警缓冲区 | 可选 | 1.2.5
配置信息发送到日志缓冲区 | 可选 | 1.2.6
配置信息发送到SNMP模块 | 可选 | 1.2.7
配置信息发送到Web页面 | 可选 | 1.2.8
配置信息保存到日志文件 | 可选 | 1.2.9
配置安全日志同步保存和管理功能 | 可选 | 1.2.10
配置同步信息输出功能 | 可选 | 1.2.11
禁止端口生成Link up/Link down日志信息 | 可选 | 1.2.12

1.2.2 配置信息发送到控制台

1. 配置信息发送到控制台

表1-6 配置信息发送到控制台

操作 | 命令 | 说明
进入系统视图 | system-view | -
开启信息中心 | info-center enable | 可选 缺省情况下，信息中心处于开启状态
为指定编号的信息通道命名 | info-center channel channel-number name channel-name | 可选 通道的缺省名称请参见表1-2
设置系统向控制台输出信息的通道 | info-center console channel { channel-number | channel-name } | 可选 缺省情况下，系统使用0号（console）通道向控制台输出信息
配置系统信息的输出规则 | info-center source { module-name | default } channel { channel-number | channel-name } [ debug { level severity | state state } * | log { level severity | state state } * | trap { level severity | state state } * ] * | 可选 缺省情况下，系统信息的输出规则请参见 1.1.6
设置时间戳输出格式 | info-center timestamp { debugging | log | trap } { boot | date | none } | 可选 缺省情况下，log、trap和debug信息的时间戳输出格式均为 date 格式

2. 开启控制台对系统信息的显示功能

在配置将系统信息发送到控制台后，为了能在控制台上观察到输出的信息，还要开启控制台对相应信息的显示功能。请在用户视图下进行以下操作。

表1-7 开启控制台对系统信息的显示功能

操作 | 命令 | 说明
开启控制台对系统信息的监视功能 | terminal monitor | 可选 缺省情况下，控制台的监视功能处于开启状态，监视终端的监视功能处于关闭状态
开启控制台对调试信息的显示功能 | terminal debugging | 必选 缺省情况下，控制台对调试信息的显示功能处于关闭状态
开启控制台对日志信息的显示功能 | terminal logging | 可选 缺省情况下，控制台对日志信息的显示功能处于开启状态
开启控制台对告警信息的显示功能 | terminal trapping | 可选 缺省情况下，控制台对告警信息的显示功能处于开启状态

1.2.3 配置信息发送到监视终端

系统信息可以发往控制台，也可以发往监视终端。监视终端是指以VTY类型用户界面登录的用户终端。

1. 配置信息发送到监视终端

表1-8 配置信息发送到监视终端

操作 | 命令 | 说明
进入系统视图 | system-view | -
开启信息中心 | info-center enable | 可选 缺省情况下，信息中心处于开启状态
为指定编号的信息通道命名 | info-center channel channel-number name channel-name | 可选 通道的缺省名称请参见表1-2
设置系统向监视终端输出系统信息的通道 | info-center monitor channel { channel-number | channel-name } | 可选 缺省情况下，系统使用1号（monitor）通道向监视终端输出系统信息
配置系统信息的输出规则 | info-center source { module-name | default } channel { channel-number | channel-name } [ debug { level severity | state state } * | log { level severity | state state } * | trap { level severity | state state } * ] * | 可选 缺省情况下，系统信息的输出规则请参见 1.1.6
设置时间戳输出格式 | info-center timestamp { debugging | log | trap } { boot | date | none } | 可选 缺省情况下，log、trap和debug信息的时间戳输出格式均为 date 格式

2. 开启监视终端对系统信息的显示功能

在配置将系统信息发送到监视终端后，为了能在监视终端上观察到输出的信息，还要开启监视终端对相应信息的显示功能。

表1-9 开启监视终端对系统信息的显示功能

操作 | 命令 | 说明
开启监视终端对系统信息的监视功能 | terminal monitor | 必选 缺省情况下，控制台的监视功能处于开启状态，监视终端的监视功能处于关闭状态
开启监视终端对调试信息的显示功能 | terminal debugging | 必选 缺省情况下，监视终端对调试信息的显示功能处于关闭状态
开启监视终端对日志信息的显示功能 | terminal logging | 可选 缺省情况下，监视终端对日志信息的显示功能处于开启状态
开启监视终端对告警信息的显示功能 | terminal trapping | 可选 缺省情况下，监视终端对告警信息的显示功能处于开启状态

1.2.4 配置信息发送到日志主机

表1-10 配置信息发送到日志主机

操作 | 命令 | 说明
进入系统视图 | system-view | -
开启信息中心 | info-center enable | 可选 缺省情况下，信息中心处于开启状态
为指定编号的信息通道命名 | info-center channel channel-number name channel-name | 可选 通道的缺省名称请参见表1-2
配置系统信息的输出规则 | info-center source { module-name | default } channel { channel-number | channel-name } [ debug { level severity | state state } * | log { level severity | state state } * | trap { level severity | state state } * ] * | 可选 缺省情况下，系统信息的输出规则请参见 1.1.6
配置发送的日志信息的源IP地址 | info-center loghost source interface-type interface-number | 可选 缺省情况下，将根据路由来确定发送日志信息的出接口，使用该接口的主IP地址作为发送的日志信息的源IP地址
设置发往日志主机的系统信息的时间戳输出格式 | info-center timestamp loghost { date | iso | no-year-date | none } | 可选 缺省情况下，发往日志主机的系统信息的时间戳输出格式为 date 格式
设置发往日志主机的系统信息的输出格式为UNICOM格式 | info-center format unicom | 可选 缺省情况下，发往日志主机的系统信息的格式为H3C格式
指定日志主机并设置相关输出参数 | info-center loghost [ vpn-instance vpn-instance-name ] { host-ipv4-address | ipv6 host-ipv6-address } [ port port-number ] [ channel { channel-number | channel-name } | facility local-number ] * | 必选 缺省情况下，系统不向日志主机输出信息。如果使能系统向日志主机输出信息，则系统默认使用2号（loghost）通道 port-number 参数的值需要和日志主机侧的设置一致，否则，日志主机接收不到系统信息

1.2.5 配置信息发送到告警缓冲区

用户可以设置将log、trap和debug三种类型的信息发送给告警缓冲区，但告警缓冲区只接收trap信息，其它类型的信息将被丢弃。

表1-11 配置信息发送到告警缓冲区

操作 | 命令 | 说明
进入系统视图 | system-view | -
开启信息中心 | info-center enable | 可选 缺省情况下，信息中心处于开启状态
为指定编号的信息通道命名 | info-center channel channel-number name channel-name | 可选 通道的缺省名称请参见表1-2
设置系统向告警缓冲区输出信息以及相关参数 | info-center trapbuffer [ channel { channel-number | channel-name } | size buffersize ] * | 可选 缺省情况下，系统使用3号（trapbuffer）通道向告警缓冲区输出信息，缓冲区可存储256条信息
配置系统信息的输出规则 | info-center source { module-name | default } channel { channel-number | channel-name } [ debug { level severity | state state } * | log { level severity | state state } * | trap { level severity | state state } * ] * | 可选 缺省情况下，系统信息的输出规则请参见 1.1.6
设置时间戳输出格式 | info-center timestamp { debugging | log | trap } { boot | date | none } | 可选 缺省情况下，log、trap和debug信息的时间戳输出格式均为 date 格式

1.2.6 配置信息发送到日志缓冲区

用户可以设置将log、trap和debug三种类型的信息发送给日志缓冲区，但日志缓冲区只能接收log和debug信息，trap信息将被丢弃。

表1-12 配置信息发送到日志缓冲区

操作 | 命令 | 说明
进入系统视图 | system-view | -
开启信息中心 | info-center enable | 可选 缺省情况下，信息中心处于开启状态
为指定编号的信息通道命名 | info-center channel channel-number name channel-name | 可选 通道的缺省名称请参见表1-2
设置系统向日志缓冲区输出信息以及相关参数 | info-center logbuffer [ channel { channel-number | channel-name } | size buffersize ] * | 可选 缺省情况下，系统使用4号（logbuffer）通道向日志缓冲区输出信息，缓冲区可存储512条信息
配置系统信息的输出规则 | info-center source { module-name | default } channel { channel-number | channel-name } [ debug { level severity | state state } * | log { level severity | state state } * | trap { level severity | state state } * ] * | 可选 缺省情况下，系统信息的输出规则请参见 1.1.6
设置时间戳输出格式 | info-center timestamp { debugging | log | trap } { boot | date | none } | 可选 缺省情况下，log、trap和debug信息的时间戳输出格式均为 date 格式

1.2.7 配置信息发送到SNMP模块

用户可以设置将log、trap和debug三种类型的信息发送给SNMP模块，但SNMP模块只接收trap信息，其它类型的信息将被丢弃。

为了监控设备的运行状况，通常会将Trap信息发送到网络管理系统（NMS）。此时，首先需要将信息发送给SNMP模块，再设置SNMP模块Trap发送参数，对Trap报文进行进一步的处理（详细介绍请参见“网络管理和监控配置指导”中的“SNMP”）。

表1-13 配置信息发送到SNMP模块

操作 | 命令 | 说明
进入系统视图 | system-view | -
开启信息中心 | info-center enable | 可选 缺省情况下，信息中心处于开启状态
为指定编号的信息通道命名 | info-center channel channel-number name channel-name | 可选 通道的缺省名称请参见表1-2
设置系统向SNMP模块输出信息的通道 | info-center snmp channel { channel-number | channel-name } | 可选 缺省情况下，系统使用5号（snmpagent）通道向SNMP模块送系统信息
配置系统信息的输出规则 | info-center source { module-name | default } channel { channel-number | channel-name } [ debug { level severity | state state }* | log { level severity | state state }* | trap { level severity | state state }* ]* | 可选 缺省情况下，系统信息的输出规则请参见 1.1.6
设置时间戳输出格式 | info-center timestamp { debugging | log | trap } { boot | date | none } | 可选 缺省情况下，log、trap和debug信息的时间戳输出格式均为 date 格式

1.2.8 配置信息发送到Web页面

本特性用于控制是否将系统信息发送到Web页面以及哪些系统信息可以发送到Web页面。因为Web页面提供了丰富的搜索和排序功能，所以，配置该输出方向后，用户通过Web页面登录设备，点击相应的页签就可以方便快捷地查看设备的系统信息。

表1-14 配置信息发送到Web页面

操作 | 命令 | 说明
进入系统视图 | system-view | -
开启信息中心 | info-center enable | 可选 缺省情况下，信息中心处于开启状态
为指定编号的信息通道命名 | info-center channel channel-number name channel-name | 可选 通道的缺省名称请参见 表1-2
设置系统向Web页面输出信息的通道 | info-center syslog channel { channel-number | channel-name } | 可选 缺省情况下，系统使用6号通道向Web页面发送系统信息
配置系统信息的输出规则 | info-center source { module-name | default } channel { channel-number | channel-name } [ debug { level severity | state state }* | log { level severity | state state }* | trap { level severity | state state }* ]* | 可选 缺省情况下，系统信息的输出规则请参见 1.1.6
设置时间戳输出格式 | info-center timestamp { debugging | log | trap } { boot | date | none } | 可选 缺省情况下，log、trap和debug信息的时间戳输出格式均为 date 格式

用户可以配置将log、trap、debug信息输出到某个通道，但当该通道和Web页面输出方向绑定时，用户登录Web页面时，只能显示特定类型的日志信息，其它类型的信息均会被过滤掉。

1.2.9 配置信息保存到日志文件

通过配置信息保存到日志文件（logfile），用户可以将系统产生的日志信息，按照指定的频率保存到该设备的指定路径下，便于用户在本地随时查看历史操作，保障设备的正常运行。

日志在保存到日志文件前，先保存在日志文件缓冲区（logfile buffer）。系统会按照指定的频率将缓冲区的内容写入日志文件，频率一般配置为24小时，用户也可以手工触发保存，建议在设备比较空闲的时候进行保存。成功保存后，保存前日志文件缓冲区里的内容会被清空。

日志文件有容量限制，当日志文件的大小达到最大值时，设备会将日志文件中最旧的信息删除，再写入新的信息。

表1-15 配置信息保存到日志文件

操作 | 命令 | 说明
进入系统视图 | system-view | -
开启信息中心 | info-center enable | 可选 缺省情况下，信息中心处于开启状态
开启日志文件特性 | info-center logfile enable | 可选 缺省情况下，日志文件特性处于开启状态
设置自动保存日志文件的频率 | info-center logfile frequency freq-sec | 可选 缺省情况下，设备自动保存日志文件的频率缺省值为86400
设置单个日志文件最大能占用的存储空间的大小 | info-center logfile size-quota size | 可选 缺省情况下，单个日志文件最大能占用的存储空间的大小为2M
设置存储日志文件的目录 | info-center logfile switch-directory dir-name | 可选 缺省情况下，存放日志文件的目录为Flash根目录
手动将日志文件缓冲区中的内容保存到日志文件 | logfile save | 可选 缺省情况下，系统将按照 info-center logfile frequency 命令所设置的频率自动保存日志文件 任意视图均可执行

l 为了保证设备的正常运行，info-center logfile size-quota 设置的日志文件的大小最小不能低于1MB，最大不能超过10MB。

l info-center logfile switch-directory 命令通常用于日志文件的备份或者迁移前的准备工作，其配置会在设备重启或Master和Slave倒换后失效。

1.2.10 配置安全日志同步保存和管理功能

1. 安全日志同步保存功能简介

查看系统日志是了解设备状态、定位和排除网络问题的一个重要方法，而安全日志是系统日志中与设备安全相关的部分，更是重中之重。但通常情况下，安全日志与其它日志一同输出，被埋没在大量的系统日志中，很难识别、不便于查看。针对这个问题，系统提供了安全日志同步保存功能。使能该功能后，系统将进行如下处理：

l 将安全日志进行集中输出：当生成的系统信息中有安全日志，在不影响系统消息现有输出规则的前提下，系统会将安全日志复制一份同步保存到专用的安全日志文件。这样既实现了安全日志的集中管理，又有利于用户随时快捷地查看安全日志，了解设备状态。

l 安全日志同步保存功能的配置和安全日志文件的管理相互分离，安全日志文件实行专人专管。设备管理员登录设备后可以配置安全日志同步保存功能，执行 表1-16 所示的命令；只有安全日志管理员通过AAA本地认证登录设备后才能对安全日志文件进行操作（具体操作请参见 表1-17 ），其它用户（包括设备管理员）均不能对安全日志文件进行这些操作。

l 本特性中的“安全日志管理员”指的是配置了 authorization-attribute user-role security-audit 的本地用户。

l 设备管理员不能对安全日志文件进行查看、拷贝、重命名等文件类操作，操作时会提示“% Execution error”，但可以对除安全日志文件之外的其他文件进行这些操作。

l 本地用户以及AAA本地认证的介绍和配置请参见“安全配置指导”中的“AAA”。

2. 配置安全日志同步保存功能

安全日志和其它日志一起被发送到控制台等输出方向时，会被复制一份同步保存在安全日志文件缓冲区（security-logfile buffer）。系统会按照指定的频率（freq-sec）将缓冲区的内容写入安全日志文件（安全日志管理员也可以手工触发保存）。安全日志文件缓冲区里的内容成功保存到安全日志文件后，会被立即清空。

安全日志文件有大小限制，当安全日志文件的大小达到最大值（size）时，系统会将安全日志文件中最旧的信息删除，再写入新的信息。为了防止安全日志的丢失，用户可以设置安全日志文件使用率告警上限（usage）。当达到上限时，系统会输出日志信息提醒管理员，此时，管理员可以使用“安全日志管理员”身份登录设备，将安全日志文件进行备份，以防重要历史数据丢失。

缺省情况下，安全日志同步保存功能没有使能，freq-sec、size 和 usage 参数也有缺省值。如果用户要对这些参数进行修改，请以设备管理员身份登录，使用 表1-16 所示的命令进行配置。

表1-16 配置安全日志同步保存功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
开启信息中心 | info-center enable | 可选 缺省情况下，信息中心处于开启状态
使能安全日志同步保存功能 | info-center security-logfile enable | 必选 缺省情况下，安全日志同步保存功能没有使能
设置设备自动保存安全日志文件的频率 | info-center security-logfile frequency freq-sec | 可选 缺省情况下，设备自动保存日志文件的频率缺省值为600秒
设置单个安全日志文件最大能占用的存储空间的大小 | info-center security-logfile size-quota size | 可选 缺省值为1MB
设置安全日志文件使用率的告警上限 | info-center security-logfile alarm-threshold usage | 可选 缺省情况下，安全日志文件使用率的告警门限是80（即当安全日志文件使用率达到80％时，系统会发出日志提醒用户）

3. 管理安全日志文件

安全日志管理员通过AAA本地认证登录设备后能进行如下操作：

表1-17 管理安全日志文件

操作 |  | 命令 | 说明
显示安全日志文件摘要信息 |  | display security-logfile summary [ | { begin | exclude | include } regular-expression ] | 可选
修改存储安全日志文件的路径 |  | info-center security-logfile switch-directory dir-name | 可选 缺省情况下，存储安全日志文件路径为存储设备根目录下的seclog文件夹。 本命令在用户视图下执行
显示安全日志文件缓冲区的内容 |  | display security-logfile buffer [ | { begin | exclude | include } regular-expression ] | 可选
手动将安全日志文件缓冲区中的内容全部保存到安全日志文件 |  | security-logfile save | 可选 缺省情况下，系统将按照 info-center security-logfile frequency 命令所设置的频率自动保存安全日志文件，保存的路径可以通过 info-center security-logfile switch-directory 命令设置 本命令在用户视图下执行
对安全日志文件进行操作 | 显示指定文件的内容 | more file-url | 可选 这些命令均在用户视图下执行 关于命令的详细描述请参见“基础配置命令参考”中的“文件系统管理”
 | 显示文件及文件夹的信息 | dir [ /all ] [ file-url ]
 | 在存储设备的指定目录下创建文件夹 | mkdir directory
 | 修改当前的工作路径 | cd { directory | .. | / }
 | 显示当前路径 | pwd
 | 删除设备中的指定文件 | delete [ /unreserved ] file-url
 | 删除指定文件夹 | rmdir directory
 | 格式化存储设备 | format device
 | 恢复未被彻底删除（即存放在回收站里）的文件 | undelete file-url
将安全日志文件上传到SFTP服务器 | 在IPv4网络环境建立SFTP连接 | sftp server [ port-number ] [ vpn-instance vpn-instance-name ] [ identity-key { dsa | rsa } | prefer-ctos-cipher { 3des | aes128 | des } | prefer-ctos-hmac { md5 | md5-96 | sha1 | sha1-96 } | prefer-kex { dh-group-exchange | dh-group1 | dh-group14 } | prefer-stoc-cipher { 3des | aes128 | des } | prefer-stoc-hmac { md5 | md5-96 | sha1 | sha1-96 } ] * | 可选 sftp 命令均在用户视图下执行，其它命令在SFTP客户端视图下执行 关于这些命令的详细介绍请参见“安全命令参考”中的“SSH2.0”
 | 在IPv6网络环境建立SFTP连接 | sftp ipv6 server [ port-number ] [ vpn-instance vpn-instance-name ] [ identity-key { dsa | rsa } | prefer-ctos-cipher { 3des | aes128 | des } | prefer-ctos-hmac { md5 | md5-96 | sha1 | sha1-96 } | prefer-kex { dh-group-exchange | dh-group1 | dh-group14 } | prefer-stoc-cipher { 3des | aes128 | des } | prefer-stoc-hmac { md5 | md5-96 | sha1 | sha1-96 } ] *
 | 上传本地文件到远程SFTP服务器 | put localfile [ remotefile ]
 | 下载SFTP服务器上的文件 | get remotefile [ localfile ]
 | 设备作为SFTP客户端支持的其它操作 | 请参见“安全配置指导/SSH2.0”中的“配置设备作为SFTP客户端”章节

1.2.11 配置同步信息输出功能

同步信息输出是指当用户在输入时有日志、告警、调试等系统信息输出，则在输出后会回显命令行提示符（在命令编辑状态回显提示符，交互状态回显“[Y/N]”字符串）和用户已有的输入。

此功能用于用户在进行操作（操作还没有完成）却被大量的系统信息打断时，回显用户的上一步操作，用户可以接着执行上一步的操作。

表1-18 配置同步信息输出功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
打开同步信息输出功能 | info-center synchronous | 必选 缺省情况下，同步信息输出功能处于关闭状态

l 在当前命令行提示符下，如果用户没有任何输入，此时若有日志等系统信息输出，输出后将不会回显命令行提示符；

l 当处在交互状态，需要用户输入一些交互信息时（非Y/N确认信息），因为情况各异，所以若有系统信息输出，输出后不再回显提示信息，而只是将用户已有的输入换行打印出来。

1.2.12 禁止端口生成Link up/Link down日志信息

缺省情况下，设备的所有端口在端口状态改变时都会生成端口Link up和Link down的日志信息。如果用户只关心某个或某些端口的状态，这时可以使用该功能，禁止其它端口生成Link up/Link down日志信息；或者某个接口的状态不稳定，总在频繁地改变，这时，会生成大量的Link up/Link down日志信息，为了屏蔽这些冗余信息，可以使用该功能禁止该端口生成Link up/Link down日志信息。

表1-19 禁止端口生成Link up/Link down日志信息

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入三层以太网端口视图或者二层以太网端口视图或者VLAN接口视图 | interface interface-type interface-number | -
禁止端口生成Link up/Link down日志信息 | undo enable log updown | 必选 缺省情况下，允许所有端口在状态发生改变时生成端口Link up和Link down的日志信息

使用本特性后，如果端口状态改变，将不再生成端口Link up和Link down的日志信息。这样，可能会影响用户监控端口状态，所以，一般情况下，建议采用缺省配置。


1.3 信息中心显示和维护

在完成上述配置后，在任意视图下执行 display 命令可以显示配置后信息中心的运行情况，通过查看显示信息验证配置的效果。

在用户视图下执行 reset logbuffer、reset trapbuffer 命令可以分别将日志缓冲区和告警缓冲区的统计信息清除。

表1-20 信息中心显示和维护

操作 | 命令
显示信息通道的信息 | display channel [ channel-number | channel-name ] [ | { begin | exclude | include } regular-expression ]
显示各个输出方向的信息 | display info-center [ | { begin | exclude | include } regular-expression ]
显示系统日志缓冲区的状态和缓冲区记录的日志信息 | display logbuffer [ reverse ] [ level severity | size buffersize | slot slot-number ] * [ | { begin | exclude | include } regular-expression ]
显示系统日志缓冲区的概要信息 | display logbuffer summary [ level severity | slot slot-number ] * [ | { begin | exclude | include } regular-expression ]
显示日志文件缓冲区内容 | display logfile buffer [ | { begin | exclude | include } regular-expression ]
显示日志文件配置 | display logfile summary [ | { begin | exclude | include } regular-expression ]
显示系统告警缓冲区的状态和缓冲区记录的告警信息 | display trapbuffer [ reverse ] [ size buffersize ] [ | { begin | exclude | include } regular-expression ]
清除日志缓冲区内的信息 | reset logbuffer
清除告警缓冲区内的信息 | reset trapbuffer


1.4 信息中心典型配置举例

1.4.1 日志发送到Unix日志主机的配置举例

1. 组网需求

l 将系统的日志信息发送到Unix日志主机；

l 日志主机的IP地址为1.2.0.1/16；

l 信息级别高于等于informational的日志信息将会发送到日志主机上；

l 允许输出日志信息的模块为ARP和IP。

2. 组网图

图1-2 配置信息中心组网图（Unix日志主机）

3. 配置步骤

配置前请确保Device和PC之间路由可达，具体配置步骤略。

(1) 设备上的配置

# 开启信息中心。

<Sysname> system-view

[Sysname] info-center enable

# 将IP地址为1.2.0.1/16的主机用作日志主机，使用loghost通道发送信息（可选，系统缺省为loghost通道），使用local4作为日志主机记录工具。

[Sysname] info-center loghost 1.2.0.1 channel loghost facility local4

# 关闭loghost通道所有模块log、trap、debug信息的输出开关。

[Sysname] info-center source default channel loghost debug state off log state off trap state off

由于系统对各通道允许输出的系统信息的缺省情况不一样，所以配置前必须将所有模块的需求通道（本例为loghost）上log、trap、debug信息的输出开关关闭，再根据当前的需求配置输出规则，以免输出太多不需要的信息。

# 配置输出规则：允许ARP和IP模块的、级别高于等于informational的日志信息输出到日志主机（注意：允许输出信息的模块由产品决定）。

[Sysname] info-center source arp channel loghost log level informational state on

[Sysname] info-center source ip channel loghost log level informational state on

(2) 日志主机上的配置

下面的配置示例是在Solaris上完成的，在其它厂商的Unix操作系统上的配置操作基本类似。

第一步：以超级用户（root）的身份登录日志主机。

第二步：在/var/log/路径下为Device创建同名日志文件夹Device，在该文件夹创建文件info.log，用来存储来自Device的日志。

# mkdir /var/log/Device

# touch /var/log/Device/info.log

第三步：编辑文件/etc/syslog.conf，添加以下内容。

# Device configuration messages

local4.info /var/log/Device/info.log

以上配置中，local4表示日志主机接收日志的工具名称，info表示信息级别。Unix系统会把级别高于等于informational的日志记录到/var/log/Device/info.log文件中。

在编辑/etc/syslog.conf时应注意以下问题：

l 注释必须独立成行，并以字符#开头。

l 在文件名之后不得有多余的空格。

l /etc/syslog.conf中指定的工具名称及信息级别与设备上 info-center loghost 和 info-center source 命令的相应参数的指定值要保持一致，否则日志信息可能无法正确输出到日志主机上。

第四步：当日志文件info.log建立且/etc/syslog.conf文件被修改之后，应通过执行以下命令查看系统守护进程syslogd的进程号，中止syslogd进程，并重新用-r选项在后台启动syslogd，使修改后配置生效。

# ps -ae | grep syslogd

147

# kill -HUP 147

# syslogd -r &

进行以上操作之后，系统就可以在相应的文件中记录日志信息了。

1.4.2 日志发送到Linux日志主机的配置举例

1. 组网需求

l 系统的日志信息发送到Linux日志主机上，日志主机的IP地址为1.2.0.1/16；

l 信息级别高于等于informational的日志信息将会发送到日志主机上；

l 所有模块均允许输出日志信息。

2. 组网图

图1-3 配置信息中心组网图（Linux日志主机）

3. 配置步骤

配置前请确保Device和PC之间路由可达，具体配置步骤略。

(1) 设备上的配置

# 开启信息中心。

<Sysname> system-view

[Sysname] info-center enable

# 将IP地址为1.2.0.1/16的主机用作日志主机，使用loghost通道发送信息（可选，系统缺省为loghost通道），使用local5作为日志主机记录工具。

[Sysname] info-center loghost 1.2.0.1 channel loghost facility local5

# 关闭loghost通道所有模块log、trap、debug信息的输出开关。

[Sysname] info-center source default channel loghost debug state off log state off trap state off

由于系统对各通道允许输出的系统信息的缺省情况不一样，所以配置前必须将所有模块的需求通道（本例为loghost）上log、trap、debug信息的输出开关关闭，再根据当前的需求配置输出规则，以免输出太多不需要的信息。

# 配置输出规则：允许所有模块、级别高于等于informational的日志信息输出到日志主机。

[Sysname] info-center source default channel loghost log level informational state on

(2) 日志主机上的配置

第一步：以超级用户（root）的身份登录日志主机。

第二步：在/var/log/路径下为Device创建同名日志文件夹Device，在该文件夹创建文件info.log，用来存储来自Device的日志。

# mkdir /var/log/Device

# touch /var/log/Device/info.log

第三步：编辑文件/etc/syslog.conf，添加以下内容。

# Device configuration messages

local5.info /var/log/Device/info.log

以上配置中，local5表示日志主机接收日志的工具名称，info表示信息级别。Linux系统会把级别高于等于informational的日志记录到/var/log/Device/info.log文件中。

在编辑/etc/syslog.conf时应注意以下问题：

l 注释必须独立成行，并以字符#开头。

l 在文件名之后不得有多余的空格。

l /etc/syslog.conf中指定的工具名称及信息级别与设备上 info-center loghost 和 info-center source 命令的相应参数的指定值要保持一致，否则日志信息可能无法正确输出到日志主机上。

第四步：当日志文件info.log建立且/etc/syslog.conf文件被修改之后，应通过执行以下命令查看系统守护进程syslogd的进程号，中止syslogd进程，并重新用-r选项在后台启动syslogd，使修改后配置生效。

# ps -ae | grep syslogd

147

# kill -9 147

# syslogd -r &

对Linux日志主机，必须保证syslogd进程是以-r选项启动。

进行以上操作之后，系统就可以在相应的文件中记录日志信息了。

1.4.3 日志发送到控制台的配置举例

1. 组网需求

l 将信息级别高于等于informational的日志信息发送到控制台上；

l 允许输出日志信息的模块为ARP和IP。

2. 组网图

图1-4 配置信息中心组网图（控制台）

3. 配置步骤

# 开启信息中心。

<Sysname> system-view

[Sysname] info-center enable

# 使用console通道向控制台输出日志信息（可选，缺省情况下系统向控制台输出信息的通道就为console通道）。

[Sysname] info-center console channel console

# 关闭控制台通道所有模块log、trap、debug信息的输出开关。

[Sysname] info-center source default channel console debug state off log state off trap state off

由于系统对各通道允许输出的系统信息的缺省情况不一样，所以配置前必须将所有模块的需求通道（本例为console）上log、trap、debug信息的输出开关关闭，再根据当前的需求配置输出规则，以免输出太多不需要的信息。

# 配置输出规则：允许ARP和IP模块的、级别高于等于informational的日志信息输出（注意：允许输出的信息模块由产品决定）。

[Sysname] info-center source arp channel console log level informational state on

[Sysname] info-center source ip channel console log level informational state on

[Sysname] quit

# 打开终端显示功能（可选，缺省已经打开了该功能）。

<Sysname> terminal monitor

Info: Current terminal monitor is on.

<Sysname> terminal logging

Info: Current terminal logging is on.

以上命令配置成功后，如果指定的模块产生了日志信息，信息中心会自动把这些日志发送到控制台，在控制台的屏幕上显示。

1.4.4 安全日志同步保存功能配置举例

1. 组网需求

为了高效、便捷的查看设备上发生的与安全相关的事件，及时了解设备的安全状态，要求：

l 将安全日志保存到专门的安全日志文件Flash:/securitylog/seclog.log，保存频率为每小时一次；

l 只有安全日志审计员能够查看安全日志文件内容，其它用户登录设备后都不能对安全日志文件查看、拷贝、重命名等操作。

2. 组网图

图1-5 安全日志功能组网图

3. 配置思路

针对本举例，配置分两大部分：

(1) 以系统管理员身份登录设备

l 使能安全日志同步保存功能，并设置安全日志文件的自动保存频率为1小时。

l 创建一个本地用户seclog，密码为123123123123。授权用户可以管理安全日志文件，即使用 authorization-attribute 命令配置两个授权属性：level 为3以及 user-role 为 security-audit；使用 service-type 命令配置用户可以使用的登录方式；

l 配置用户界面的认证方式为 scheme，保证只有通过AAA本地认证的用户才能查看、操作安全日志文件。

(2) 以安全日志管理员身份登录设备

l 设置安全日志文件的保存路径为Flash:/securitylog/seclog.log。

l 查看安全日志文件内容，了解设备安全状态。

4. 配置步骤

(1) 系统管理员需要执行的配置

# 使能安全日志同步保存功能，并设置安全日志文件的自动保存频率为1小时。

<Sysname> system-view

[Sysname] info-center security-logfile enable

[Sysname] info-center security-logfile frequency 3600

# 创建本地用户seclog，密码为123123123123。

[Sysname] local-user seclog

New local user added.

[Sysname-luser-seclog] password simple 123123123123

# 授权用户可以管理安全日志文件。

[Sysname-luser-seclog] authorization-attribute level 3 user-role security-audit

# 设置用户可以使用的登录方式为SSH、Telnet、Terminal。

[Sysname-luser-seclog] service-type ssh telnet terminal

[Sysname-luser-seclog] quit

# 根据组网规划可以看出，用户将使用SSH或Telnet登录设备，所以配置VTY用户界面的认证方式为scheme。

[Sysname] display user-interface vty ?

INTEGER<0-15> Specify one user terminal interface

以上信息表明，设备支持16个VTY，编号从0到15。

[Sysname] user-interface vty 0 15

[Sysname-ui-vty0-15] authentication-mode scheme

[Sysname-ui-vty0-15] quit

(2) 安全日志管理员需要执行的配置

# 使用用户名seclog重新登录设备。

C:/> telnet 1.1.1.1

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

* Copyright (c) 2004-2011 Hangzhou H3C Tech. Co., Ltd. All rights reserved. *

* Without the owner's prior written consent, *

* no decompiling or reverse-engineering shall be allowed. *

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

Login authentication

Username:seclog

Password:

<Sysname>

# 显示安全日志文件摘要信息。

<Sysname> display security-logfile summary

Security-log is enabled.

Security-log file size quota: 1MB

Security-log file directory: flash:/seclog

Alarm-threshold: 80%

Current usage: 0%

Writing frequency: 1 hour 0 min 0 sec

以上信息表明，安全日志文件当前的存储路径为flash:/seclog。

# 设置安全日志文件的保存路径为Flash:/securitylog。

<Sysname> mkdir securitylog

.

%Created dir flash:/securitylog.

<Sysname> info-center security-logfile switch-directory flash:/securitylog/

# 查看安全日志文件缓存区内容。

<Sysname> display security-logfile buffer

%@175 Jan 2 17:02:53:766 2011 Sysname SHELL/4/LOGOUT:

Trap 1.3.6.1.4.1.25506.2.2.1.1.3.0.2<hh3cLogOut>: logout from Console

%@176 Jan 2 17:02:53:766 2009 Sysname SHELL/5/SHELL_LOGOUT:Console logged out from aux0.

……其它日志略……

以上信息表明，安全日志文件缓存区中还有最新内容没有保存到安全日志文件。

# 手工触发将安全日志文件缓存区内容保存到安全日志文件。

<Sysname> security-logfile save

Info: Save all the contents in the security log buffer into file flash:/securitylog/seclog.log successfully.

# 查看安全日志文件的内容。

<Sysname> more securitylog/seclog.log

%@157 Jan 2 16:12:01:750 2011 Sysname SHELL/4/LOGIN:

Trap 1.3.6.1.4.1.25506.2.2.1.1.3.0.1<hh3cLogIn>: login from Console

%@158 Jan 2 16:12:01:750 2011 Sysname SHELL/5/SHELL_LOGIN:Console logged in from aux0.

……其它日志略……


1 SNMP配置

相关链接

  • 1.1 SNMP简介
  • 1.2 SNMP配置任务简介
  • 1.3 配置SNMP基本参数
  • 1.4 配置接口网管索引
  • 1.5 配置SNMP日志
  • 1.6 配置SNMP Trap
  • 1.7 SNMP显示和维护
  • 1.8 SNMP典型配置举例
父主题： 04-SNMP配置


1.1 SNMP简介

SNMP（Simple Network Management Protocol，简单网络管理协议）是因特网中的一种网络管理标准协议，被广泛用于实现管理设备对被管理设备的访问和管理。SNMP具有以下特点：

l 支持网络设备的智能化管理。利用基于SNMP的网络管理平台，网络管理员可以查询网络设备的运行状态和参数，设置参数值，发现故障、完成故障诊断，进行容量规划和生成报告。

l 支持对不同物理特性的设备进行管理。SNMP只提供最基本的功能集，使得管理任务与被管理设备的物理特性和联网技术相对独立，从而实现对不同厂商设备的管理。

1.1.1 SNMP的工作机制

SNMP网络环境中包含NMS和Agent两种元素：

l NMS（Network Management Station，网络管理系统）是SNMP网络的管理者，能够提供友好的人机交互界面，方便网络管理员完成网络管理工作。

l Agent是SNMP网络环境中的被管理者，负责接收、处理来自NMS的请求报文。在一些紧急情况下，如接口状态发生改变等，Agent会主动向NMS发送告警信息。

NMS管理设备的时候通过MIB（Management Information Base，管理信息库）对设备进行管理。MIB定义了节点之间的层次关系以及对象的一系列属性，比如对象的名字、访问权限和数据类型等。每个Agent都有自己的MIB。被管理设备都有自己的MIB文件，在NMS上编译这些MIB文件，就能生成该设备的MIB。NMS根据访问权限对MIB节点进行读/写操作，从而实现对Agent的管理。NMS、Agent和MIB之间的关系如下图所示。

图1-1 NMS、Agent和MIB关系图

MIB是按照树型结构组织的，它由很多个节点组成，每个节点表示被管理对象，被管理对象可以用从根开始的一串表示路径的数字唯一地识别，这串数字称为OID（Object Identifier，对象标识符）”。如下图所示，被管理对象B可以用一串数字{1.2.1.1}唯一确定，这串数字就是被管理对象B的OID。

图1-2 MIB树结构

SNMP提供四种基本操作来实现NMS和Agent的交互：

l GET操作：NMS使用该操作查询Agent MIB中的一个或多个节点的值。

l SET操作：NMS使用该操作设置Agent MIB中的一个或多个节点的值。

l Trap操作：Agent使用该操作向NMS发送告警信息。

l Inform操作：NMS使用该操作向其它NMS发送告警信息。

1.1.2 SNMP的协议版本

目前Agent支持SNMPv1、SNMPv2c和SNMPv3三种版本：

l SNMPv1采用团体名（Community Name）认证机制。团体名类似于密码，用来限制NMS对Agent的访问。如果NMS访问被管理设备时携带的团体名和被管理设备上设置的团体名不同，则不能建立SNMP连接，从而导致访问失败。

l SNMPv2c也采用团体名认证机制。SNMPv2c对SNMPv1的功能进行了扩展：提供了更多的操作类型；支持更多的数据类型；提供了更丰富的错误代码，能够更细致地区分错误。

l SNMPv3采用USM（User-Based Security Model，基于用户的安全模型）认证机制。网络管理员可以设置认证和加密功能。认证用于验证报文发送方的合法性，避免非法用户的访问；加密则是对NMS和Agent之间的传输报文进行加密，以免被窃听。采用认证和加密功能，可以为NMS和Agent之间的通信提供更高的安全性。

NMS和Agent成功建立连接的前提条件是NMS和Agent使用的SNMP版本必须相同。


1.2 SNMP配置任务简介

表1-1 SNMP配置任务简介

配置任务 | 说明 | 详细配置
配置SNMP基本参数 | 必选 | 1.3
配置接口网管索引 | 可选 | 1.4
配置SNMP日志 | 可选 | 1.5
配置SNMP Trap | 可选 | 1.6


1.3 配置SNMP基本参数

由于SNMPv3版本的配置和SNMPv1版本、SNMPv2c版本的配置有较大区别，所以下面分两种情况进行SNMP基本功能的配置介绍，详见表1-2 和表1-3。

1.3.1 配置SNMPv3版本基本参数

使用SNMPv3版本时，需要先创建一个SNMP组并设置该组的访问权限和认证、加密功能，然后创建一个SNMPv3用户并设置该用户的属性。

表1-2 配置SNMP基本参数（SNMPv3版本）

操作 | 命令 | 说明
进入系统视图 | system-view | -
启动SNMP Agent服务 | snmp-agent | 可选 缺省情况下，SNMP Agent服务处于关闭状态 执行除 snmp-agent calculate-password和 snmp-agent ifmib long-ifindex enable外任何以 snmp-agent 开头的命令，都可以启动SNMP Agent服务
设置系统信息 | snmp-agent sys-info { contact sys-contact | location sys-location | version { all | { v1 | v2c | v3 } * } } | 可选 缺省情况下，系统维护联系信息为“Hangzhou H3C Tech. Co., Ltd.”。物理位置信息为“Hangzhou, China”。版本为SNMP v3
设置本地SNMP实体的引擎ID | snmp-agent local-engineid engineid | 可选 缺省情况下，设备引擎ID为公司的“企业号＋设备信息”
创建MIB视图或更新MIB视图内容 | snmp-agent mib-view { excluded | included } view-name oid-tree [ mask mask-value ] | 可选 缺省情况下，设备上已存在MIB视图ViewDefault，OID为1
创建SNMPv3组 | snmp-agent group v3 group-name [ authentication | privacy ] [ read-view read-view ] [ write-view write-view ] [ notify-view notify-view ] [ acl acl-number ] | 必选 缺省情况下，不存在任何SNMP组，新创建的SNMP组采用不认证、不加密方式
计算用户给定明文密码通过加密算法处理后的密文密码 | snmp-agent calculate-password plain-password mode { 3desmd5 | 3dessha | md5 | sha } { local-engineid | specified-engineid engineid } | 可选
创建SNMPv3用户 | snmp-agent usm-user v3 user-name group-name [ [ cipher ] authentication-mode { md5 | sha } auth-password [ privacy-mode { 3des | aes128 | des56 } priv-password ] ] [ acl acl-number ] | 必选 如果使用 cipher 参数，则后面的 auth-password 和 priv-password 都将被视为密文密码
设置Agent能处理的SNMP报文的最大长度 | snmp-agent packet max-size byte-count | 可选 缺省情况下，Agent能接收/发送的SNMP消息包长度的最大值为1500字节

1.3.2 配置SNMPv1/v2c版本基本参数

使用SNMPv1或SNMPv2c版本时，需要先设置Agent启用的SNMP版本号，然后设置访问权限，访问权限的设置方法有两种：

l 直接设置，即通过指定团体名的方式创建一个SNMP团体。

l 间接设置，即先创建一个SNMP组，然后为该SNMP组添加一个新用户，用户名相当于SNMPv1和SNMPv2c版本的团体名。

表1-3 配置SNMP基本参数（SNMPv1版本、SNMPv2c版本）

操作 |  |  | 命令 | 说明
进入系统视图 |  |  | system-view | -
启动SNMP Agent服务 |  |  | snmp-agent | 可选 缺省情况下，SNMP Agent服务处于关闭状态 执行除 snmp-agent calculate-password和 snmp-agent ifmib long-ifindex enable外任何以 snmp-agent 开头的命令，都可以启动SNMP Agent服务
设置系统信息 |  |  | snmp-agent sys-info { contact sys-contact | location sys-location | version { all | { v1 | v2c | v3 } * } } | 必选 缺省情况下，系统维护联系信息为“Hangzhou H3C Tech. Co., Ltd.”。物理位置信息为“Hangzhou, China”。版本为SNMP v3
设置本地SNMP实体的引擎ID |  |  | snmp-agent local-engineid engineid | 可选 缺省情况下，设备引擎ID为公司的“企业号＋设备信息”。
创建或更新MIB视图内容 |  |  | snmp-agent mib-view { excluded | included } view-name oid-tree [ mask mask-value ] | 可选 缺省情况下，视图名为ViewDefault，OID为1
设置访问权限 | 直接设置 | 创建一个新的SNMP团体 | snmp-agent community { read | write } community-name [ acl acl-number | mib-view view-name ] * | 二者必选其一 直接设置是以指定SNMPv1和SNMPv2c版本的团体名的方式进行设置 间接设置采用与SNMPv3版本类似的命令形式，添加用户到指定的组，用户名相当于SNMPv1和SNMPv2c版本的团体名 缺省情况下，不存在任何SNMP组
 | 间接设置 | 创建一个SNMP组 | snmp-agent group { v1 | v2c } group-name [ read-view read-view ] [ write-view write-view ] [ notify-view notify-view ] [ acl acl-number ]
 |  | 为一个SNMP组添加一个新用户 | snmp-agent usm-user { v1 | v2c } user-name group-name [ acl acl-number ]
设置Agent能处理的SNMP报文的最大长度 |  |  | snmp-agent packet max-size byte-count | 可选 缺省情况下，Agent能接收/发送的SNMP消息包长度的最大值为1500字节

l SNMPv3用户创建后是否有效，与设备的SNMP实体引擎ID有关，如果创建用户时的本地SNMP实体引擎ID和当前的引擎ID不同，则该用户当前无效。

l MIB视图是MIB的子集，由视图名和MIB子树来唯一确定一个MIB视图。视图名相同但包含的子树不同，则认为是不同的视图。除缺省视图外，用户最多可以创建16个MIB视图。


1.4 配置接口网管索引

1.4.1 接口网管索引简介

接口网管索引是设备提供给NMS使用的一个参数，用来标识一个接口。

接口网管索引有两种表达方式：

1. 16比特模式接口网管索引

16比特模式接口网管索引是一个从1开始递增的编号，长度为16比特。各个接口的接口网管索引由系统动态分配、顺序递增。16比特模式接口网管索引仅用来唯一地标识一个接口。

2. 32比特模式接口网管索引

32比特模式的接口网管索引长度为32比特，如 图1-3 所示，32比特模式的接口网管索引由如下几部分信息组成：Offset、Interface Type、Slot ID、Chassis ID。

图1-3 32比特接口网管索引信息

l Offset：接口偏移量，长度为16比特，用于区分同一接口板上相同类型的不同接口。

l Interface Type：接口类型所对应的枚举值，长度为7比特，最大支持128种接口，目前支持的接口类型有80多种。

l Slot ID：接口所在的物理槽位号，长度为5比特。

l Chassis ID：长度为4比特，对于分布式IRF设备，本字段表示接口所在成员设备的编号。对于其它类型的设备，本字段没有意义，取值均为0。

1.4.2 切换接口网管索引模式

通常情况下，接口网管索引使用缺省模式（16比特模式）即可。接口网管索引使用模式的选择原则为：

l 如果NMS需要使用32比特模式的接口网管索引，则可以将接口网管索引切换到32比特模式（32比特模式会携带接口所在的槽位等信息）。

l 如果NMS运行的网络协议不支持32比特的接口网管索引，则必须将接口网管索引切换到16比特模式。

比如Netstream版本5和Netstream版本8报文只为接口网管索引预留了16个字节，则运行Netstream版本5或Netstream版本8时，接口网管索引只能配置为16比特模式；Netstream版本9报文为接口网管索引预留了32个字节，则运行Netstream版本9时，接口网管索引可以配置为16比特模式或32比特模式。

表1-4 切换接口网管索引

操作 | 命令 | 说明
进入系统视图 | system-view | -
切换接口网管索引为32比特模式 | snmp-agent ifmib long-ifindex enable | 可选 缺省情况下，接口网管索引为16比特模式
切换接口网管索引为16比特模式 | undo snmp-agent ifmib long-ifindex enable | 可选 缺省情况下，接口网管索引为16比特模式

对于某些依赖接口网管索引作为参数的配置，切换接口网管索引模式会导致这些配置失效（当接口网管索引切换回原来的模式时，这些配置会重新生效）。此时需要使用新的接口网管索引重新配置，之前的配置才能继续生效。例如在RMON告警组、扩展告警组的配置中，当告警变量需要使用“OID/变量名.接口网管索引”来表示，并且接口网管索引模式切换时，会导致配置的RMON告警组失效。用户如果需要继续监控此节点，需要使用新的接口网管索引重新配置。


1.5 配置SNMP日志

SNMP日志可以记录NMS对Agent的GET请求、SET请求和SET响应信息，不能记录GET响应信息。

l 当进行GET操作时，Agent会记录NMS用户的IP地址、GET操作的节点名和节点OID。

l 当进行SET操作时，Agent会记录NMS用户的IP地址、SET操作的节点名、节点OID、节点值以及SET操作返回的错误码和错误索引。

这些日志将被发送到设备的信息中心，级别为informational，即作为设备的一般提示信息。通过设置信息中心的参数，最终决定SNMP日志的输出规则（即是否允许输出以及输出方向）。

表1-5 配置SNMP日志功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
打开SNMP日志开关 | snmp-agent log { all | get-operation | set-operation } | 必选 缺省情况下，SNMP日志开关处于关闭状态

l 大量的日志记录会占用设备的存储空间，影响设备的性能。正常情况下，建议关闭SNMP日志功能。

l SNMP每条日志信息中记录的node域（信息内容对应的MIB节点名）和value域（信息内容对应的MIB节点值）的长度之和不能超过1024字节，超出的部分将不会被输出。

l 有关日志输出规则、系统信息、信息中心的详细介绍请参见“网络管理和监控配置指导”中的“信息中心”。


1.6 配置SNMP Trap

1.6.1 配置Trap功能

Agent主动向NMS发送Trap信息，用于报告一些紧急的重要事件（如被管理设备重新启动等）。Trap报文有两种：

l 通用Trap。设备支持的通用Trap包括authentication、coldstart、linkdown、linkup和warmstart五种（其它均为企业自定义Trap）。

l 企业自定义Trap。

Trap信息会占用设备内存较多，影响设备性能，建议用户根据需要开启指定模块的Trap功能。

开启模块的Trap功能后，该模块生成的Trap报文将被发送到设备的信息中心。用户可以根据各模块生成的Trap信息的级别设置信息中心参数，决定Trap报文的输出规则（即是否允许输出以及输出方向）。

表1-6 配置Trap功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
开启Trap功能 | snmp-agent trap enable [ arp rate-limit | bgp | configuration | default-route | flash | ospf [ process-id ] [ ifauthfail | ifcfgerror | ifrxbadpkt | ifstatechange | iftxretransmit | lsdbapproachoverflow | lsdboverflow | maxagelsa | nbrstatechange | originatelsa | vifcfgerror | virifauthfail | virifrxbadpkt | virifstatechange | viriftxretransmit | virnbrstatechange ] * | pim [ candidatebsrwinelection | electedbsrlostelection | interfaceelection | invalidjoinprune | invalidregister | neighborloss | rpmappingchange ] * | standard [ authentication | coldstart | linkdown | linkup | warmstart ] * | system | vrrp [ authfailure | newmaster ] ] | 必选 缺省情况下，Trap功能处于开启状态。 S3600V2-SI系列交换机不支持 bgp、ospf 和 pim 参数
进入二层以太网端口视图或三层以太网端口视图或VLAN接口视图 | interface interface-type interface-number | 必选
开启接口状态变化的Trap功能 | enable snmp trap updown | 必选 缺省情况下，接口下接口状态变化的Trap功能处于开启状态

l 如果要求端口在状态发生改变时生成接口状态变化的Trap报文，需要在接口下和全局都开启接口状态变化的Trap功能。

l 要使各个模块生成相应的Trap报文，除了使用 snmp-agent trap enable命令开启Trap功能外，还可能需要执行各个模块的相关配置，详情请参见各模块的相关描述。

l 有关信息中心的详细介绍请参见“网络管理和监控配置指导”中的“信息中心”。

1.6.2 配置Trap报文发送参数

如果要将Trap发送给NMS，必须先完成以下配置：

l 完成SNMP基本配置（如果使用SNMPv1和SNMPv2c版本需要设置启用的SNMP版本和团体名；如果使用SNMP v3版本需要设置用户名和MIB视图），这些参数的配置必须和NMS上的配置相同。

l 确保设备与NMS路由可达。

当收到Trap报文后，SNMP模块有两种处理方式：

l 将Trap报文存在消息队列里（在网络出现故障时，消息队列用于缓存Trap报文，在网络恢复后，系统会将消息队列中的Trap报文依次发出，用户可以设置该队列的长度、Trap报文在队列里的保存时间）；

l 将Trap报文直接发送给指定的目标主机（通常为NMS）等。

表1-7 配置Trap报文发送参数

操作 | 命令 | 说明
进入系统视图 | system-view | -
设置Trap报文的目标主机属性 | snmp-agent target-host trap address udp-domain { ip-address | ipv6 ipv6-address } [ udp-port port-number ] [ vpn-instance vpn-instance-name ] params securityname security-string [ v1 | v2c | v3 [ authentication | privacy ] ] | 可选 如果要将Trap信息发送给NMS，该步骤为必选，并将 ip-address 指定为NMS的IP地址
设置Trap报文的源地址 | snmp-agent trap source interface-type interface-number | 可选 缺省情况下，由SNMP选择一个接口的IP地址作为Trap报文源IP地址
对RFC定义的标准linkUp/linkDown Trap报文进行私有扩展 | snmp-agent trap if-mib link extended | 可选 缺省情况下，使用的是RFC定义的标准linkUp/linkDown Trap报文
设置Trap报文发送队列的长度 | snmp-agent trap queue-size size | 可选 缺省情况下，Trap报文的消息队列最多可以存储100条Trap消息
设置Trap报文的保存时间 | snmp-agent trap life seconds | 可选 缺省情况下，Trap报文的保存时间为120秒

l 对linkUp/linkDown Trap报文进行私有扩展后，设备生成和发送的linkUp/linkDown Trap报文由标准linkUp/linkDown Trap报文后增加接口描述和接口类型信息构成。如果NMS不支持该扩展报文，请禁用私有扩展功能，使设备发送标准的linkUp/linkDown Trap报文。

l 如果在Trap报文的发送队列已满时系统又收到了新的Trap报文，系统会自动删除最先收到的Trap报文。

l 如果发送队列中的Trap报文到达了已设定的保存时间，系统会自动删除该Trap报文。


1.7 SNMP显示和维护

在完成上述配置后，在任意视图下执行 display 命令可以显示配置后SNMP的运行情况，通过查看显示信息验证配置的效果。

表1-8 SNMP显示和维护

操作 | 命令
显示系统维护联络信息、系统位置信息及SNMP版本信息 | display snmp-agent sys-info [ contact | location | version ] * [ | { begin | exclude | include } regular-expression ]
显示SNMP报文统计信息 | display snmp-agent statistics [ | { begin | exclude | include } regular-expression ]
显示设备的SNMP实体引擎ID | display snmp-agent local-engineid [ | { begin | exclude | include } regular-expression ]
显示SNMP组信息 | display snmp-agent group [ group-name ] [ | { begin | exclude | include } regular-expression ]
显示Trap消息队列的基本信息 | display snmp-agent trap queue [ | { begin | exclude | include } regular-expression ]
显示系统当前可以发送Trap消息的模块及其Trap消息的使能状态 | display snmp-agent trap-list [ | { begin | exclude | include } regular-expression ]
显示SNMPv3用户信息 | display snmp-agent usm-user [ engineid engineid | username user-name | group group-name ] * [ | { begin | exclude | include } regular-expression ]
显示SNMPv1或SNMPv2c团体信息 | display snmp-agent community [ read | write ] [ | { begin | exclude | include } regular-expression ]
显示MIB视图的信息 | display snmp-agent mib-view [ exclude | include | viewname view-name ] [ | { begin | exclude | include } regular-expression ]


1.8 SNMP典型配置举例

1.8.1 SNMPv1/v2c典型配置举例

1. 组网需求

l NMS与Agent相连，NMS的IP地址为1.1.1.2/24，Agent的IP地址为1.1.1.1/24。

l NMS通过SNMPv1或SNMPv2c对Agent进行监控管理，Agent在出现故障时能主动向NMS发送Trap报文。

2. 组网图

图1-4 配置SNMPv1/v2c组网图

3. 配置步骤

(1) 配置Agent

# 配置Agent的IP地址为1.1.1.1/24，并确保Agent与NMS之间路由可达。（配置步骤略）

# 设置Agent使用的SNMP版本为v1/v2c、团体名为public。

<Agent> system-view

[Agent] snmp-agent sys-info version v1 v2c

[Agent] snmp-agent community read public

[Agent] snmp-agent community write private

# 设置Agent的联系人和位置信息，以方便维护。

[Agent] snmp-agent sys-info contact Mr.Wang-Tel:3306

[Agent] snmp-agent sys-info location telephone-closet,3rd-floor

# 设置允许向NMS发送Trap报文，使用的团体名为public。

[Agent] snmp-agent trap enable

[Agent] snmp-agent target-host trap address udp-domain 1.1.1.2 params securityname public v1

[Agent] quit

snmp-agent target-host命令中指定的版本必须和NMS上运行的SNMP版本一致，如果NMS上运行的是SNMPv2c版本，则需要将 snmp-agent target-host命令中的版本参数设置为v2c。否则，NMS无法正确接收Trap信息。

(2) 配置NMS

# 设置NMS使用的SNMP版本为SNMPv1/v2c，只读团体名为public，读写团体名为private。具体配置请参考NMS的相关手册。

NMS侧的配置必须和Agent侧保持一致，否则无法进行相应操作。

(3) 结果验证

# 通过查询Agent上的相应MIB节点获取已发送Trap信息的数量：

Send request to 1.1.1.1/161 ...

Protocol version: SNMPv1

Operation: Get

Request binding:

1: 1.3.6.1.2.1.11.29.0

Response binding:

1: Oid=snmpOutTraps.0 Syntax=CNTR32 Value=18

Get finished

# 当使用错误的团体名获取Agent上的MIB节点信息时，NMS上将看到认证失败的Trap信息：

1.1.1.1/2934 V1 Trap = authenticationFailure

SNMP Version = V1

Community = public

Command = Trap

Enterprise = 1.3.6.1.4.1.43.1.16.4.3.50

GenericID = 4

SpecificID = 0

Time Stamp = 8:35:25.68

1.8.2 SNMPv3典型配置举例

1. 组网需求

l NMS与Agent相连，NMS的IP地址为1.1.1.2/24，Agent的IP地址为1.1.1.1/24。

l NMS通过SNMPv3只能对Agent的SNMP报文的相关信息进行监控管理，Agent在出现问题的时候能够主动向NMS发送Trap报文。

l NMS与Agent建立SNMP连接时，需要认证，认证算法为MD5，认证密码为authkey。NMS与Agent之间传输的SNMP报文需要加密，使用的加密协议为DES56，加密密码为prikey。

2. 组网图

图1-5 配置SNMPv3组网图

3. 配置步骤

(1) 配置Agent

# 配置Agent的IP地址为1.1.1.1/24，并确保Agent与NMS之间路由可达。（配置步骤略）

# 设置访问权限：用户只能读写节点snmp（OID为1.3.6.1.2.1.11）下的对象，不可以访问其它MIB对象。

<Agent> system-view

[Agent] undo snmp-agent mib-view ViewDefault

[Agent] snmp-agent mib-view included test snmp

[Agent] snmp-agent group v3 managev3group read-view test write-view test

# 设置Agent使用的用户名为managev3user，认证算法为MD5，认证密码为authkey，加密算法为DES56，加密密码是prikey。

[Agent] snmp-agent usm-user v3 managev3user managev3group authentication-mode md5 authkey privacy-mode des56 prikey

# 设置设备的联系人和位置信息，以方便维护。

[Agent] snmp-agent sys-info contact Mr.Wang-Tel:3306

[Agent] snmp-agent sys-info location telephone-closet,3rd-floor

# 设置允许向NMS发送Trap报文，使用的用户名为managev3user。

[Agent] snmp-agent trap enable

[Agent] snmp-agent target-host trap address udp-domain 1.1.1.2 params securityname managev3user v3 privacy

(2) 配置NMS

# 设置MNS使用的SNMP版本为SNMPv3，用户名为managev3user，启用认证和加密功能，认证算法为MD5，认证密码为authkey，加密协议为DES56，加密密码为prikey。另外，还要设置“超时”时间和“重试次数”。用户可利用网管系统完成对设备的查询和配置操作，具体配置请参考NMS的相关手册。

NMS侧的配置必须和Agent侧保持一致，否则无法进行相应操作。

(3) 结果验证

# 通过查询Agent上的相应MIB节点获取已发送Trap信息的数量：

Send request to 1.1.1.1/161 ...

Protocol version: SNMPv3

Operation: Get

Request binding:

1: 1.3.6.1.2.1.11.29.0

Response binding:

1: Oid=snmpOutTraps.0 Syntax=CNTR32 Value=18

Get finished

由于没有权限，无法通过查询Agent上的相应MIB节点获取设备名称：

Send request to 1.1.1.1/161 ...

Protocol version: SNMPv3

Operation: Get

Request binding:

1: 1.3.6.1.2.1.1.5.0

Response binding:

1: Oid=sysName.0 Syntax=noSuchObject Value=NULL

Get finished

# 对设备上某个空闲的接口执行 shutdown/undo shutdown操作，NMS上将看到相应的Trap信息：

1.1.1.1/3374 V3 Trap = linkdown

SNMP Version = V3

Community = managev3user

Command = Trap

1.1.1.1/3374 V3 Trap = linkup

SNMP Version = V3

Community = managev3user

Command = Trap

1.8.3 SNMP日志典型配置举例

1. 组网需求

l NMS与Agent相连，NMS的IP地址为1.1.1.2/24，Agent的IP地址为1.1.1.1/24。

l 在Agent上配置SNMP日志功能，以便记录NMS对Agent进行的操作。

2. 组网图

图1-6 配置SNMP日志组网图

3. 配置步骤

下面只列出了与SNMP日志相关的配置，NMS和Agent的SNMP功能配置请参见 1.8.1 和 1.8.2 。

# 打开控制台对日志信息的显示功能（此步骤可省略，缺省为该功能是开启的）。

<Agent> terminal monitor

<Agent> terminal logging

# 配置信息中心允许输出级别高于等于informational的系统信息到Console口。

<Agent> system-view

[Agent] info-center source snmp channel console log level informational

# 打开Agent的SNMP日志开关，对NMS的GET和SET操作进行记录。

[Agent] snmp-agent log all

l NMS对Agent进行GET操作时，可以在控制台上看到如下日志信息。

%Jan 1 02:49:40:566 2011 Sysname SNMP/6/GET:

seqNO = <10> srcIP = <1.1.1.2> op = <get> node = <sysName(1.3.6.1.2.1.1.5.0)> value=<>

l NMS对Agent进行SET操作时，可以在控制台上看到如下日志信息。

%Jan 1 02:59:42:576 2011 Sysname SNMP/6/SET:

seqNO = <11> srcIP = <1.1.1.2>
op = <set> errorIndex = <0> errorStatus =<noError> node =
<sysName(1.3.6.1.2.1.1.5.0)> value = <Agent>

表1-9 SNMP日志输出信息描述表

字段 | 描述
Jan 1 02:49:40:566 2011 | 表示SNMP日志生成的时间
seqNO | 表示该SNMP日志的编号（系统会对记录的SNMP日志进行自动编号，编号从0开始）
srcIP | NMS的IP地址
op | 表示SNMP操作类型（GET或者SET）
node | SNMP操作节点的名称和实例的OID
errorIndex | 错误索引（0表示没有错误）
errorStatus | 错误状态（noError表示没有错误）
value | SET操作时设置的值（GET操作时此域为空，表示不记录GET操作获取的值） 当设置的值为字符串，而且字符串中包含编码范围超出了ASCII 0～127或者包含不可显示的字符时，则以十六进制的方式显示整个字符串，形如：value = <81-43>[hex]

信息中心的系统信息可以输出到控制台或日志缓冲区等方向。本举例是将SNMP日志信息输出到控制台，如果要配置别的输出方向，请参见“网络管理和监控配置指导”中的“信息中心”。


2 配置MIB风格

设备的MIB分为公有MIB和私有MIB两大类，私有MIB需要在MIB节点enterprises（1.3.6.1.4.1）下申请一个子节点挂靠。H3C私有MIB有两种风格：

l 一种是设备公有MIB在H3C企业ID 25506下，私有MIB在企业ID 2011下的MIB，称为H3C兼容风格MIB；

l 一种是设备公有MIB与私有MIB均在H3C企业ID 25506下的MIB，称为H3C新风格MIB。

这两种风格的MIB在管理功能上完全一致，区别仅在于根节点不同。设备在出厂前都会加载好MIB，设备型号不同，加载的MIB风格可能不同。为了支持NMS对设备的灵活管理，设备提供了MIB风格配置功能，即用户可以任意切换MIB的两种风格，但需要保证设备的MIB风格和NMS的MIB风格一致，NMS才能顺利识别被管理设备。

相关链接

  • 2.1 配置MIB风格
  • 2.2 MIB风格显示和维护
父主题： 04-SNMP配置


2.1 配置MIB风格

表2-1 配置MIB风格

操作 | 命令 | 说明
进入系统视图 | system-view | -
设置设备的MIB风格 | mib-style [ compatible | new ] | 可选 缺省情况下，设备的MIB风格为 new

修改设备的MIB风格后需要重启设备配置才会生效。


2.2 MIB风格显示和维护

在完成上述配置后，在任意视图下执行 display 命令可以显示配置后MIB的风格，通过查看显示信息验证配置的效果。

表2-2 MIB风格显示和维护

操作 | 命令
查询设备的MIB风格 | display mib-style [ | { begin | exclude | include } regular-expression ]


1 RMON配置

相关链接

  • 1.1 RMON简介
  • 1.2 配置RMON统计功能
  • 1.3 配置RMON告警功能
  • 1.4 RMON显示和维护
  • 1.5 统计组典型配置举例
  • 1.6 历史统计典型配置举例
  • 1.7 告警组典型配置举例
父主题： 05-RMON配置


1.1 RMON简介

1.1.1 RMON概述

RMON（Remote Network Monitoring，远程网络监视）主要实现了统计和告警功能，用于网络中管理设备对被管理设备的远程监控和管理。统计功能指的是被管理设备可以按周期或者持续跟踪统计其端口所连接的网段上的各种流量信息，比如某段时间内某网段上收到的报文总数，或收到的超长报文的总数等。告警功能指的是被管理设备能监控指定MIB变量的值，当该值达到告警阈值时（比如端口速率达到指定值，或者广播报文的比例达到指定值），能自动记录日志、向管理设备发送Trap消息。

RMON和SNMP都用于远程网络管理：

l SNMP是RMON实现的基础，RMON是SNMP功能的增强。RMON使用SNMP Trap报文发送机制向管理设备发送Trap消息告知告警变量的异常。虽然SNMP也定义了Trap功能，但通常用于告知被管理设备上某功能是否运行正常、端口物理状态的变化等，两者监控的对象、触发条件以及报告的内容均不同。

l RMON使SNMP能更有效、更积极主动地监测远程网络设备，为监控子网的运行提供了一种高效的手段。RMON协议规定达到告警阈值时被管理设备能自动发送Trap信息，所以管理设备不需要多次去获取MIB变量的值，进行比较，从而能够减少管理设备同被管理设备的通讯流量，达到简便而有力地管理大型互连网络的目的。

1.1.2 RMON工作机制

RMON允许有多个监控者，监控者可用两种方法收集数据：

l 第一种方法利用专用的RMON probe（探测仪）收集数据，管理设备直接从RMON probe获取管理信息并控制网络资源。这种方式可以获取RMON MIB的全部信息；

l 第二种方法是将RMON Agent直接植入网络设备（路由器、交换机、HUB等），使它们成为带RMON probe功能的网络设施。管理设备使用SNMP的基本操作与RMON Agent交换数据信息，收集网络管理信息，但这种方法受设备资源限制，一般不能获取RMON MIB的所有数据，大多数只收集四个组的信息。这四个组是：事件组、告警组、历史组和统计组。

H3C设备采用第二种方法，在设备上实现了RMON Agent功能。通过该功能，管理设备可以获得与被管网络设备端口相连的网段上的整体流量、错误统计和性能统计等信息，进而实现对网络的管理。

1.1.3 RMON组

RMON规范（RFC2819）中定义了多个RMON组，设备实现了公有MIB中支持的统计组、历史组、事件组和告警组。此外，H3C还自定义和实现了扩展告警组，以增强告警组的功能。下面将对这五个组作简要介绍。

1. 统计组

统计组规定系统将持续地对端口的各种流量信息进行统计（目前只支持对以太网端口的统计），并将统计结果存储在以太网统计表（etherStatsTable）中以便管理设备随时查看。统计信息包括网络冲突数、CRC校验错误报文数、过小（或超大）的数据报文数、广播、多播的报文数以及接收字节数、接收报文数等。

在指定接口下创建统计表项成功后，统计组就对当前接口的报文数进行统计，它统计的结果是一个连续的累加值。

2. 历史组

历史组规定系统将按周期对端口的各种流量信息进行统计，并将统计结果存储在历史记录表（etherHistoryTable）中以便管理设备随时查看。统计数据包括带宽利用率、错误包数和总包数等。

历史组统计的是每个周期内端口接收报文的情况，周期的长短可以通过命令行来配置。

3. 事件组

事件组用来定义事件索引号及事件的处理方式。事件组定义的事件用于告警组配置项和扩展告警组配置项中。当监控对象达到告警条件时，就会触发事件，事件有如下几种处理方式：

l Log：将事件相关信息（事件发生的事件、事件的内容等）记录在本设备RMON MIB的事件日志表中，以便管理设备通过SNMP GET操作进行查看。

l Trap：向网管站发送Trap消息告知该事件的发生。

l Log-Trap：即在本设备上记录日志，又向网管站发送Trap消息。

l None：不做任何处理。

4. 告警组

RMON告警管理可对指定的告警变量（如端口收到的报文总数etherStatsPkts）进行监视。用户定义了告警表项后，系统会按照定义的时间周期去获取被监视的告警变量的值，当告警变量的值大于或等于上限阈值时，触发一次上限告警事件；当告警变量的值小于或等于下限阈值，触发一次下限告警事件，告警管理将按照事件的定义进行相应的处理。

当告警变量的采样值在同一方向上连续多次超过阈值时，只会在第一次产生告警事件，后面的几次不会产生告警事件。即上限告警和下限告警是交替产生的，出现了一次上限告警，则下一次必为下限告警。如图1-1 所示，告警变量的值（如图中黑色曲线所示）多次超过阈值（如图中蓝色直线所示），产生了多个交叉点，但只有红叉标识的交叉点才会触发告警事件，其它交叉点不会触发告警事件。

图1-1 上下限告警示意图

5. 扩展告警组

扩展告警表项可以对告警变量进行运算，然后将运算结果和设置的阈值比较，实现更为丰富的告警功能。

用户定义了扩展告警表项后，系统对扩展告警表项的处理如下：

(1) 对定义的扩展告警公式中的告警变量按照定义的时间间隔进行采样。

(2) 将采样值按照定义的运算公式进行计算。

(3) 将计算结果和设定的阈值进行比较，越过阈值就触发相应事件。

与告警组一样，当扩展告警组的运算结果在同一方向上连续多次超过阈值时，只会在第一次产生告警事件，后面的几次不会产生告警事件，即上限告警和下限告警是交替产生的。


1.2 配置RMON统计功能

RMON的统计功能可以通过RMON统计组或者RMON历史组来实现，但是两者统计的对象不一样，请根据实际需要配置。

l RMON统计组统计的是RMON以太网统计表里定义的变量，记录的是从RMON统计表项创建到当前阶段变量的累加值，具体配置请参见 1.2.1 配置RMON以太网统计功能 。

l RMON历史组统计的是RMON历史记录表里定义的变量，记录的是每个周期内变量的累加值，具体配置请参见 1.2.2 配置RMON历史统计功能 。

1.2.1 配置RMON以太网统计功能

表1-1 配置RMON以太网统计功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入二层以太网端口视图或三层以太网端口视图 | interface interface-type interface-number | -
添加统计表的一个表项 | rmon statistics entry-number [ owner text ] | 必选

每个接口下只能创建一个统计表项，整个设备允许创建的统计表项最大数目为100条。当统计表项的总数大于100条时，创建操作失败。

1.2.2 配置RMON历史统计功能

表1-2 配置RMON历史统计功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入二层以太网端口视图或三层以太网端口视图 | interface interface-type interface-number | -
添加历史控制表的一个表项 | rmon history entry-number buckets number interval sampling-interval [ owner text ] | 必选

l 历史表项的 entry-number必须全局唯一，如果已经在别的接口下使用则创建操作失败。

l 同一接口下，可以创建多条历史表项，但要求 entry-number的值必须不同，sampling-interval的值也必须不同，否则创建操作失败。

l 整个设备允许创建的历史表项最大数目为100条。当历史表项的总数大于100条时，创建操作失败。

l 在新建历史控制表项时，如果指定的 buckets number参数值超出了设备实际支持的历史表容量时，该历史控制表项会被添加，但该表项对应生效的 buckets number的值为设备实际支持的历史表容量。


1.3 配置RMON告警功能

1.3.1 配置准备

l 触发告警事件时，如果需要向管理设备（NMS）发送Trap信息，则在配置RMON告警功能之前，必须保证SNMP Agent已经正确配置。SNMP Agent的配置请参见“网络管理和监控配置指导”中的“SNMP”。

l 当告警变量是统计组或者历史组中定义的MIB变量时，必须在被监控的以太网端口下配置RMON以太网统计功能或者RMON历史统计功能。否则，虽然会创建告警表项，但不能触发告警事件。

1.3.2 配置过程

表1-3 配置RMON告警功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
添加事件表的一个表项 | rmon event entry-number [ description string ] { log | log-trap log-trapcommunity | none | trap trap-community } [ owner text ] | 必选
添加告警表的一个表项 | rmon alarm entry-number alarm-variable sampling-interval { absolute | delta } rising-threshold threshold-value1 event-entry1 falling-threshold threshold-value2 event-entry2 [ owner text ] | 二者至少选其一
添加扩展告警表的一个表项 | rmon prialarm entry-number prialarm-formula prialarm-des sampling-interval { absolute | changeratio | delta } rising-threshold threshold-value1 event-entry1 falling-threshold threshold-value2 event-entry2 entrytype { forever | cycle cycle-period } [ owner text ]

l 系统不允许创建两个配置完全相同的表项。如果新建表项参数的值和已存在表项对应参数的值完全相同（对于历史表项，只与同一接口下已存在的历史表项进行比较），系统将认为这两个表项的配置相同，创建操作失败。不同表项需要比较的参数请参见 表1-4 。

l 系统对每种类型表项的总数均进行了限制（具体数目请参见 表1-4 ），当某种类型表项的总数达到系统允许创建的最大数目时，创建操作失败。

表1-4 RMON配置约束表

表项名 | 需要比较的参数 | 最多可创建的表项数
事件表项 | 事件描述（description string）、事件类型（log、trap、logtrap 或 none）和团体名（trap-community 或 log-trapcommunity） | 60
告警表项 | 告警变量（alarm-variable）、采样间隔（sampling-interval）、采样类型（absolute 或 delta）、上限阈值（threshold-value1）和下限阈值（threshold-value2） | 60
扩展告警表项 | 告警变量公式（prialarm-formula）、采样间隔（sampling-interval）、采样类型（absolute、changeratio 或 delta）、上限阈值（threshold-value1）和下限阈值（threshold-value2） | 50


1.4 RMON显示和维护

在完成上述配置后，在任意视图下执行 display 命令可以显示配置后RMON的运行情况，通过查看显示信息验证配置的效果。

表1-5 RMON显示和维护

操作 | 命令
显示RMON统计消息 | display rmon statistics [ interface-type interface-number] [ | { begin | exclude | include } regular-expression ]
显示RMON历史控制表及历史采样信息 | display rmon history [ interface-type interface-number ] [ | { begin | exclude | include } regular-expression ]
显示RMON告警配置信息 | display rmon alarm [ entry-number ] [ | { begin | exclude | include } regular-expression ]
显示RMON扩展告警配置信息 | display rmon prialarm [ entry-number ] [ | { begin | exclude | include } regular-expression ]
显示RMON事件配置信息 | display rmon event [ entry-number ] [ | { begin | exclude | include } regular-expression ]
显示指定事件的记录 | display rmon eventlog [ entry-number ] [ | { begin | exclude | include } regular-expression ]


1.5 统计组典型配置举例

1. 组网需求

Agent通过console口连接配置终端，通过以太网线缆连接Server。现需要通过RMON统计表对以太网端口Ethernet1/0/1接收的报文进行性能统计，以便管理员能够随时查看统计数据了解接口接收报文的情况。

2. 组网图

图1-2 配置RMON组网图

3. 配置步骤

# 配置RMON对接口Ethernet1/0/1进行流量统计。

<Sysname> system-view

[Sysname] interface ethernet 1/0/1

[Sysname-Ethernet1/0/1] rmon statistics 1 owner user1

以上配置完成后系统就开始对接口Ethernet1/0/1接收的报文进行分类统计了，统计的结果可以通过多种方式查看：

l 使用display命令查看接口的统计信息。

<Sysname> display rmon statistics ethernet 1/0/1

EtherStatsEntry 1 owned by user1-rmon is VALID.

Interface : Ethernet1/0/1<ifIndex.3>

etherStatsOctets : 21657 , etherStatsPkts : 307

etherStatsBroadcastPkts : 56 , etherStatsMulticastPkts : 34

etherStatsUndersizePkts : 0 , etherStatsOversizePkts : 0

etherStatsFragments : 0 , etherStatsJabbers : 0

etherStatsCRCAlignErrors : 0 , etherStatsCollisions : 0

etherStatsDropEvents (insufficient resources): 0

Packets received according to length:

64 : 235 , 65-127 : 67 , 128-255 : 4

256-511: 1 , 512-1023: 0 , 1024-1518: 0

l 在NMS上通过软件执行get操作，直接获取MIB节点的值。


1.6 历史统计典型配置举例

1. 组网需求

Agent通过console口连接配置终端，通过以太网线缆连接Server。现需要每1分钟通过RMON历史统计表对以太网端口Ethernet1/0/1接收的报文进行周期性统计，以便管理员能够随时了解短时间内接口有没有数据突发。

2. 组网图

图1-3 配置RMON组网图

3. 配置步骤

# 配置RMON对接口Ethernet1/0/1进行周期性流量统计。

<Sysname> system-view

[Sysname] interface ethernet 1/0/1

[Sysname-Ethernet1/0/1] rmon history 1 buckets 8 interval 60 owner user1

以上配置完成后，系统就开始对接口Ethernet1/0/1接收的报文进行周期性分类统计了，每1分钟统计一次，历史统计列表里会保存最近的8次统计的结果，以便管理员查看：

l 使用display命令查看接口的历史统计信息。

[Sysname-Ethernet1/0/1] display rmon history

HistoryControlEntry 2 owned by null is VALID

Samples interface : Ethernet1/0/1<ifIndex.3>

Sampling interval : 10(sec) with 8 buckets max

Sampled values of record 1 :

dropevents : 0 , octets : 834

packets : 8 , broadcast packets : 1

multicast packets : 6 , CRC alignment errors : 0

undersize packets : 0 , oversize packets : 0

fragments : 0 , jabbers : 0

collisions : 0 , utilization : 0

Sampled values of record 2 :

dropevents : 0 , octets : 962

packets : 10 , broadcast packets : 3

multicast packets : 6 , CRC alignment errors : 0

undersize packets : 0 , oversize packets : 0

fragments : 0 , jabbers : 0

collisions : 0 , utilization : 0

Sampled values of record 3 :

dropevents : 0 , octets : 830

packets : 8 , broadcast packets : 0

multicast packets : 6 , CRC alignment errors : 0

undersize packets : 0 , oversize packets : 0

fragments : 0 , jabbers : 0

collisions : 0 , utilization : 0

Sampled values of record 4 :

dropevents : 0 , octets : 933

packets : 8 , broadcast packets : 0

multicast packets : 7 , CRC alignment errors : 0

undersize packets : 0 , oversize packets : 0

fragments : 0 , jabbers : 0

collisions : 0 , utilization : 0

Sampled values of record 5 :

dropevents : 0 , octets : 898

packets : 9 , broadcast packets : 2

multicast packets : 6 , CRC alignment errors : 0

undersize packets : 0 , oversize packets : 0

fragments : 0 , jabbers : 0

collisions : 0 , utilization : 0

Sampled values of record 6 :

dropevents : 0 , octets : 898

packets : 9 , broadcast packets : 2

multicast packets : 6 , CRC alignment errors : 0

undersize packets : 0 , oversize packets : 0

fragments : 0 , jabbers : 0

collisions : 0 , utilization : 0

Sampled values of record 7 :

dropevents : 0 , octets : 766

packets : 7 , broadcast packets : 0

multicast packets : 6 , CRC alignment errors : 0

undersize packets : 0 , oversize packets : 0

fragments : 0 , jabbers : 0

collisions : 0 , utilization : 0

Sampled values of record 8 :

dropevents : 0 , octets : 1154

packets : 13 , broadcast packets : 1

multicast packets : 6 , CRC alignment errors : 0

undersize packets : 0 , oversize packets : 0

fragments : 0 , jabbers : 0

collisions : 0 , utilization : 0

l 在NMS上通过软件执行get操作，直接获取MIB节点的值。


1.7 告警组典型配置举例

1. 组网需求

Agent通过console口连接配置终端，通过以太网连接NMS。

l Ethernet1/0/1接口连接FTP服务器，现需要对该服务器的流量进行统计。以5秒的采样间隔采样，当流量过大或过低时发送相应的trap信息通知NMS；

l 在Agent上通过 display rmon statistics 命令查看显示结果，同时在NMS上查看统计结果。

2. 组网图

图1-4 配置RMON组网图

3. 配置步骤

# 配置SNMP Agent。（请注意：这些参数的值应与NMS侧的配置一致，假设NMS上运行SNMP v1，访问设备时使用的可读团体名为public，可写团体名为private，NMS的IP地址为1.1.1.2）

<Sysname> system-view

[Sysname] snmp-agent

[Sysname] snmp-agent community read public

[Sysname] snmp-agent community write private

[Sysname] snmp-agent sys-info version v1

[Sysname] snmp-agent trap enable

[Sysname] snmp-agent target-host trap address udp-domain 1.1.1.2 params securityname public

# 配置RMON对以太网端口Ethernet1/0/1进行统计。

[Sysname] interface ethernet 1/0/1

[Sysname-Ethernet1/0/1] rmon statistics 1 owner user1

[Sysname-Ethernet1/0/1] quit

# 配置RMON告警表项。（当节点1.3.6.1.2.1.16.1.1.1.4.1的相对采样值超过100时或者低于50时，都触发事件1——发起trap信息）

[Sysname] rmon event 1 trap public owner user1

[Sysname] rmon alarm 1 1.3.6.1.2.1.16.1.1.1.4.1 5 delta rising-threshold 100 1 falling-threshold 50 1

# 查看RMON告警表信息。

<Sysname> display rmon alarm 1

AlarmEntry 1 owned by null is Valid.

Samples type : delta

Variable formula : 1.3.6.1.2.1.16.1.1.1.4.1<etherStatsOctets.1>

Sampling interval : 5(sec)

Rising threshold : 100(linked with event 1)

Falling threshold : 50(linked with event 2)

When startup enables : risingOrFallingAlarm

Latest value : 0

# 查看以太网口的统计信息。

<Sysname> display rmon statistics ethernet 1/0/1

EtherStatsEntry 1 owned by user1-rmon is VALID.

Interface : Ethernet1/0/1<ifIndex.3>

etherStatsOctets : 57329 , etherStatsPkts : 455

etherStatsBroadcastPkts : 53 , etherStatsMulticastPkts : 353

etherStatsUndersizePkts : 0 , etherStatsOversizePkts : 0

etherStatsFragments : 0 , etherStatsJabbers : 0

etherStatsCRCAlignErrors : 0 , etherStatsCollisions : 0

etherStatsDropEvents (insufficient resources): 0

Packets received according to length:

64 : 7 , 65-127 : 413 , 128-255 : 35

256-511: 0 , 512-1023: 0 , 1024-1518: 0

完成以上配置后，当告警事件被触发时，在NMS的告警管理部分可以查看相应的记录。在设备侧也会有相应信息，如下所示。

[Sysname]

#Jan 27 16:31:34:12 2011 Sysname RMON/2/ALARMFALL:Trap 1.3.6.1.2.1.16.0.2 Alarm table 1 monitors 1.3.6.1.2.1.16.1.1.1.4.1 with sample type 2,has sampled alarm value 0 less than(or =) 50.


1 端口镜像配置

端口镜像功能中提到的端口同时表示二层以太网端口和三层以太网端口。三层以太网端口是指被配置为三层模式的以太网端口，有关以太网端口模式切换的操作，请参见“二层技术-以太网交换配置指导”中的“以太网端口配置”。

相关链接

  • 1.1 端口镜像简介
  • 1.2 配置本地端口镜像
  • 1.3 配置二层远程端口镜像
  • 1.4 配置三层远程端口镜像
  • 1.5 端口镜像显示和维护
  • 1.6 端口镜像典型配置举例
父主题： 06-镜像配置


1.1 端口镜像简介

端口镜像通过将指定端口或CPU的报文复制到与数据监测设备相连的端口，使用户可以利用数据监测设备分析这些复制过来的报文，以进行网络监控和故障排除。

1.1.1 端口镜像的基本概念

1. 镜像源

镜像源是指被监控的对象，经由该对象收发的报文会被复制一份到与数据监测设备相连的端口，用户就可以对这些报文（称为镜像报文）进行监控和分析了。被监控的对象可以是端口或CPU，我们将之依次称为源端口和源CPU，这些对象所在的设备就称为源设备。

2. 镜像目的

镜像目的是指镜像报文所要到达的目的地，即与数据监测设备相连的那个端口，我们称之为目的端口，目的端口所在的设备就称为目的设备。目的端口会将其收到的镜像报文转发给与之相连的数据监测设备。

由于一个目的端口可以同时监控多个镜像源，因此在某些配置下，目的端口可能收到对同一报文的多份拷贝。例如，目的端口Port 1同时监控源端口Port 2和Port 3（这两个端口在同一台设备上）收发的报文，如果某报文从Port 2进入该设备后又从Port 3发送出去，那么该报文将被复制两次给Port 1。

3. 镜像方向

镜像方向是指在镜像源上可复制的报文方向，包括：

l 入方向：是指仅复制镜像源收到的报文。

l 出方向：是指仅复制镜像源发出的报文。

l 双向：是指对镜像源收到和发出的报文都进行复制。

4. 镜像组

镜像组是在端口镜像的实现过程中用到的一个逻辑上的概念，镜像源和镜像目的都要属于某一个镜像组。根据具体的实现方式不同，镜像组可分为本地镜像组、远程源镜像组和远程目的镜像组三类，有关这三类镜像组的具体介绍请参见“1.1.2 端口镜像的分类和实现方式”一节。

5. 反射端口、出端口和远程镜像VLAN

反射端口、出端口和远程镜像VLAN都是在二层远程端口镜像的实现过程中用到的概念。远程镜像VLAN是将镜像报文从源设备传送至目的设备的专用VLAN；反射端口和出端口都位于源设备上，都用来将镜像报文发送到远程镜像VLAN中，二者的区别在于前者不必加入远程镜像VLAN中，而后者则必须加入到远程镜像VLAN中。有关源设备、目的设备、反射端口、出端口和远程镜像VLAN的具体介绍，请参见“1.1.2 端口镜像的分类和实现方式”一节。

反射端口主要用于实现“本地镜像支持多个目的端口”功能。

1.1.2 端口镜像的分类和实现方式

根据镜像源与镜像目的所处的相对位置，我们将端口镜像分为本地端口镜像和远程端口镜像两大类：

1. 本地端口镜像

当镜像源和镜像目的位于同一台设备上时，称为本地端口镜像。对于本地端口镜像，镜像源和镜像目的都属于同一台设备上的同一个镜像组，该镜像组就称为本地镜像组。

图1-1 本地端口镜像示意图

如图1-1 所示，镜像源为源端口Ethernet1/0/1，镜像目的为目的端口Ethernet1/0/2，这两个端口位于同一台设备上。设备将进入源端口Ethernet1/0/1的报文复制一份给目的端口Ethernet1/0/2，再由该端口将镜像报文转发给数据监测设备。

2. 远程端口镜像

当镜像源和镜像目的分处于两台设备上时，称为远程端口镜像。对于远程端口镜像，镜像源和镜像目的分属于不同设备上的不同镜像组：镜像源所在的设备和镜像组分别称为源设备和远程源镜像组，镜像目的所在的设备和镜像组分别称为目的设备和远程目的镜像组，而位于源设备与目的设备之间的设备则统称为中间设备。

根据源设备与目的设备之间的连接关系，又可将远程端口镜像细分为：

l 二层远程端口镜像：源设备与目的设备之间通过二层网络进行连接。

l 三层远程端口镜像：源设备与目的设备之间通过三层网络进行连接。

(1) 二层远程端口镜像

图1-2 二层远程端口镜像示意图

如图1-2 所示，源设备将进入源端口Ethernet1/0/1的报文复制一份给出端口Ethernet1/0/2，该端口将镜像报文转发给中间设备，再由中间设备在远程镜像VLAN中广播，最终到达目的设备。目的设备收到该报文后判别其VLAN ID，若与远程镜像VLAN的VLAN ID相同，就将其转发至目的端口Ethernet1/0/2，最后由该端口将镜像报文转发给数据监测设备。

l 中间设备需允许远程镜像VLAN通过，以确保源设备与目的设备之间的二层网络畅通。

l 在镜像报文从源设备到达目的设备的过程中，请确保其VLAN ID不被修改或删除，否则二层远程镜像功能将失效。

l 在一个镜像组中对同一个端口收发的报文进行双向镜像时，需要在源设备、中间设备和目的设备上通过 mac-address mac-learning disable 命令用来关闭远程镜像VLAN的MAC地址学习功能，以保证镜像功能的正常进行。关于 mac-address mac-learning disable 命令的详细信息，请参见“二层技术-以太网交换命令参考”中的“MAC地址表配置命令”。

(2) 三层远程端口镜像

三层远程端口镜像的实现过程中借用了本地镜像组的概念，即在源设备和目的设备上分别创建各自的本地镜像组，每个本地镜像组也拥有各自的源端口和目的端口。

图1-3 三层远程端口镜像示意图

如图1-3 所示，源设备将进入源端口Ethernet1/0/1的报文复制一份给其Tunnel接口（即目的端口），再经由GRE（Generic Routing Encapsulation，通用路由封装）隧道转发至目的设备端的Tunnel接口。目的设备将从其Tunnel接口（即源端口）收到的镜像报文转发至目的端口Ethernet1/0/2，最后由该端口将镜像报文转发给数据监测设备。

有关GRE隧道和Tunnel接口的详细介绍，请分别参见“三层技术-IP业务配置指导”中的“GRE”和“隧道”。


1.2 配置本地端口镜像

1.2.1 配置任务简介

首先创建一个本地镜像组，然后为该镜像组配置源端口（或源CPU）和目的端口。

表1-1 本地端口镜像配置任务简介

配置任务 | 说明 | 详细配置
创建本地镜像组 | 必选 | 1.2.2
配置源端口 | 源端口和源CPU可以只配其一，也可以都配置 | 1.2.3
配置源CPU |  | 1.2.4
配置目的端口 | 必选 | 1.2.5
利用远程镜像VLAN实现本地镜像支持多个目的端口 | 可选 | 1.2.6

1.2.2 创建本地镜像组

表1-2 创建本地镜像组

操作 | 命令 | 说明
进入系统视图 | system-view | -
创建本地镜像组 | mirroring-group group-id local | 必选 缺省情况下，不存在任何本地镜像组

在完成源端口（或源CPU）和目的端口的配置之后，本地镜像组才能生效。

1.2.3 配置源端口

可以在系统视图下为指定镜像组配置一个或多个源端口，也可以在端口视图下将当前端口配置为指定镜像组的源端口，二者的配置效果相同。

1. 在系统视图下配置源端口

表1-3 在系统视图下配置源端口

操作 | 命令 | 说明
进入系统视图 | system-view | -
为本地镜像组配置源端口 | mirroring-group group-id mirroring-port mirroring-port-list { both | inbound | outbound } | 必选 缺省情况下，本地镜像组没有源端口

2. 在端口视图下配置源端口

表1-4 在端口视图下配置源端口

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入端口视图 | interface interface-type interface-number | -
配置本端口为本地镜像组的源端口 | [ mirroring-group group-id ] mirroring-port { both | inbound | outbound } | 必选 缺省情况下，端口不是任何本地镜像组的源端口

l 一个镜像组内可以配置多个源端口。

l 在S3600V2系列交换机上，每个端口无论作为单向或双向源端口，均最多只能加入两个镜像组。

1.2.4 配置源CPU

表1-5 配置源CPU

操作 | 命令 | 说明
进入系统视图 | system-view | -
为本地镜像组配置源CPU | mirroring-group group-id mirroring-cpu slot slot-number-list { both | inbound | outbound } | 必选 缺省情况下，本地镜像组没有源CPU

一个镜像组内可以配置多个源CPU。

1.2.5 配置目的端口

可以在系统视图下为指定镜像组配置目的端口，也可以在端口视图下将当前端口配置为指定镜像组的目的端口，二者的配置效果相同。

1. 在系统视图下配置目的端口

表1-6 在系统视图下配置目的端口

操作 | 命令 | 说明
进入系统视图 | system-view | -
为本地镜像组配置目的端口 | mirroring-group group-id monitor-port monitor-port-id | 必选 缺省情况下，本地镜像组没有目的端口

2. 在端口视图下配置目的端口

表1-7 在端口视图下配置目的端口

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入端口视图 | interface interface-type interface-number | -
配置本端口为本地镜像组的目的端口 | [ mirroring-group group-id ] monitor-port | 必选 缺省情况下，端口不是任何本地镜像组的目的端口

l 一个镜像组内只能配置一个目的端口。

l 请不要在目的端口上使能生成树协议，否则会影响镜像功能的正常使用。

l 从目的端口发出的报文包括镜像报文和其它端口正常转发来的报文。为了保证数据监测设备只对镜像报文进行分析，请将目的端口只用于端口镜像，不作其它用途。

l 镜像组的目的端口不能配置为已经接入RRPP环的端口。

1.2.6 利用远程镜像VLAN实现本地镜像支持多个目的端口

传统的本地镜像配置方式仅支持在一个镜像组中指定一个镜像目的端口，如果用户需要将一份监测数据同时发送到多个目的端口，可以利用远程镜像VLAN的原理来实现。

在二层远程端口镜像中，会使用到远程镜像VLAN，镜像报文在远程镜像VLAN中以广播的方式发送。因此，可以利用远程镜像VLAN的原理，在本地设备上创建远程源镜像组，并指定远程镜像VLAN，同时将本设备上连接数据检测设备的多个端口加入该VLAN。完成以上配置后，镜像报文在远程镜像VLAN中广播时便可以从这些端口中发送出去，实现将镜像报文输出至多个端口的需求。

表1-8 利用远程镜像VLAN实现本地镜像支持多个目的端口配置

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
创建远程源镜像组 |  | mirroring-group group-id remote-source | 必选 缺省情况下，不存在任何镜像组
为远程源镜像组配置源端口 | 在系统视图下配置 | mirroring-group group-id mirroring-port mirroring-port-list { both | inbound | outbound } | 两种方式必选其一 缺省情况下，镜像组没有源端口
 | 在端口视图下配置 | interface interface-type interface-number
 |  | [ mirroring-group group-id ] mirroring-port { both | inbound | outbound }
 |  | quit |
为远程源镜像组配置反射端口 |  | mirroring-group group-id reflector-port reflector-port | 必选 缺省情况下，镜像组没有反射端口
创建远程镜像VLAN并进入VLAN视图 |  | vlan vlan-id | 必选 缺省情况下，镜像组没有远程镜像VLAN
将镜像目的端口加入远程镜像VLAN |  | port interface-list | 必选 缺省情况下，新建VLAN中不包含任何端口
退出至系统视图 |  | quit | -
为远程源镜像组配置远程镜像VLAN |  | mirroring-group group-id remote-probe vlan rprobe-vlan-id | 必选 缺省情况下，镜像组没有远程镜像VLAN

l 镜像反射口必须是Access类型的端口，且必须属于缺省VLAN（VLAN1）。

l 建议选择设备上未使用的端口作为镜像反射口，且建议关闭反射口的生成树协议。

l Combo端口不能被配置为镜像反射口。

l 一个镜像组内可以配置多个源端口。

l 请不要将源端口加入到远程镜像VLAN中，否则会影响镜像功能的正常使用。

l 在一个镜像组内，如果已经配置了镜像反射口，则无法再配置镜像出端口。

l 一个VLAN只能作为一个远程源镜像组的远程镜像VLAN，且建议该VLAN只用于端口镜像，请不要在该VLAN上配置其它业务功能或创建对应的VLAN接口。

l 远程镜像VLAN必须为静态VLAN，且在被配置成远程镜像VLAN后，该VLAN不能直接删除，必须先删除远程镜像VLAN的配置才能够删除这个VLAN。

l 如果镜像组生效后，远程镜像VLAN被取消，那么该镜像组将失效。

l 镜像目的端口必须是Access类型的端口。


1.3 配置二层远程端口镜像

1.3.1 配置任务简介

二层远程端口镜像的配置需要分别在源设备和目的设备上进行；如果存在中间设备，则需要在中间设备上允许远程镜像VLAN通过，以确保源设备与目的设备之间的二层网络畅通。

在配置二层远程端口镜像时不建议启用GVRP（GARP VLAN Registration Protocol，GARP VLAN注册协议）功能，否则GVRP可能将远程镜像VLAN注册到不需要监控的端口上，导致目的端口收到很多不必要的报文。有关GVRP的详细介绍，请参见“二层技术-以太网交换配置指导”中的“GVRP”。

首先在源设备上为远程源镜像组配置源端口（或源CPU）、出端口和远程镜像VLAN，然后在目的设备上为远程目的镜像组配置远程镜像VLAN和目的端口。

表1-9 二层远程端口镜像配置任务简介

配置任务 |  | 说明 | 详细配置
配置远程源镜像组 | 创建远程源镜像组 | 必选 | 1.3.2 1.
 | 配置源端口 | 源端口和源CPU可以只配其一，也可以都配置 | 1.3.2 2.
 | 配置源CPU |  | 1.3.2 3.
 | 配置出端口 | 必选 | 1.3.2 4.
 | 配置远程镜像VLAN | 必选 | 1.3.2 5.
配置远程目的镜像组 | 创建远程目的镜像组 | 必选 | 1.3.3 1.
 | 配置目的端口 | 必选 | 1.3.3 2.
 | 配置远程镜像VLAN | 必选 | 1.3.3 3.
 | 将目的端口加入远程镜像VLAN | 必选 | 1.3.3 4.

1.3.2 配置远程源镜像组

请在源设备上进行如下配置。

1. 创建远程源镜像组

表1-10 创建远程源镜像组

操作 | 命令 | 说明
进入系统视图 | system-view | -
创建远程源镜像组 | mirroring-group group-id remote-source | 必选 缺省情况下，不存在任何远程源镜像组

2. 配置源端口

可以在系统视图下为指定镜像组配置一个或多个源端口，也可以在端口视图下将当前端口配置为指定镜像组的源端口，二者的配置效果相同。

(1) 在系统视图下配置源端口

表1-11 在系统视图下配置源端口

操作 | 命令 | 说明
进入系统视图 | system-view | -
为远程源镜像组配置源端口 | mirroring-group group-id mirroring-port mirroring-port-list { both | inbound | outbound } | 必选 缺省情况下，远程源镜像组没有源端口

(2) 在端口视图下配置源端口

表1-12 在端口视图下配置源端口

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入端口视图 | interface interface-type interface-number | -
配置本端口为远程源镜像组的源端口 | [ mirroring-group group-id ] mirroring-port { both | inbound | outbound } | 必选 缺省情况下，端口不是任何远程源镜像组的源端口

l 一个镜像组内可以配置多个源端口。

l 在S3600V2系列交换机上，每个端口无论作为单向或双向源端口，均最多只能加入两个镜像组。

l 请不要将源端口加入到远程镜像VLAN中，否则会影响镜像功能的正常使用。

3. 配置源CPU

表1-13 配置源CPU

操作 | 命令 | 说明
进入系统视图 | system-view | -
为远程源镜像组配置源CPU | mirroring-group group-id mirroring-cpu slot slot-number-list { both | inbound | outbound } | 必选 缺省情况下，远程源镜像组没有源CPU

一个镜像组内可以配置多个源CPU。

4. 配置出端口

可以在系统视图下为指定镜像组配置出端口，也可以在端口视图下将当前端口配置为指定镜像组的出端口，二者的配置效果相同。

(1) 在系统视图下配置出端口

表1-14 在系统视图下配置出端口

操作 | 命令 | 说明
进入系统视图 | system-view | -
为远程源镜像组配置出端口 | mirroring-group group-id monitor-egress monitor-egress-port | 必选 缺省情况下，远程源镜像组没有出端口

(2) 在端口视图下配置出端口

表1-15 在端口视图下配置出端口

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入端口视图 | interface interface-type interface-number | -
配置本端口为远程源镜像组的出端口 | mirroring-group group-id monitor-egress | 必选 缺省情况下，端口不是任何远程源镜像组的出端口

l 一个镜像组内只能配置一个出端口。

l 出端口不能是现有镜像组的成员端口。

l 请不要在出端口上配置下列功能：生成树协议、802.1X、IGMP Snooping、静态ARP和MAC地址学习，否则会影响镜像功能的正常使用。

5. 配置远程镜像VLAN

(1) 配置准备

在配置远程镜像VLAN之前，需完成以下任务：

l 配置远程镜像VLAN所使用的静态VLAN

(2) 配置过程

表1-16 配置远程镜像VLAN

操作 | 命令 | 说明
进入系统视图 | system-view | -
为远程源镜像组配置远程镜像VLAN | mirroring-group group-id remote-probe vlan rprobe-vlan-id | 必选 缺省情况下，远程源镜像组没有远程镜像VLAN

l 一个VLAN只能被一个镜像组使用。

l 被配置成远程镜像VLAN后，该VLAN不能直接删除，必须先删除远程镜像VLAN的配置才能够删除这个VLAN。

l 如果镜像组生效后，远程镜像VLAN被取消，那么该镜像组将失效。

l 当一个VLAN已被指定为远程镜像VLAN后，请不要在该VLAN上配置其它业务功能或创建对应的VLAN接口。

l 源设备和目的设备上的远程镜像组必须使用相同的远程镜像VLAN。

1.3.3 配置远程目的镜像组

请在目的设备上进行如下配置。

1. 创建远程目的镜像组

表1-17 创建远程目的镜像组

操作 | 命令 | 说明
进入系统视图 | system-view | -
创建远程目的镜像组 | mirroring-group group-id remote-destination | 必选 缺省情况下，不存在任何远程目的镜像组

2. 配置目的端口

可以在系统视图下为指定镜像组配置目的端口，也可以在端口视图下将当前端口配置为指定镜像组的目的端口，二者的配置效果相同。

(1) 在系统视图下配置目的端口

表1-18 在系统视图下配置目的端口

操作 | 命令 | 说明
进入系统视图 | system-view | -
为远程目的镜像组配置目的端口 | mirroring-group group-id monitor-port monitor-port-id | 必选 缺省情况下，远程目的镜像组没有目的端口

(2) 在端口视图下配置目的端口

表1-19 在端口视图下配置目的端口

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入端口视图 | interface interface-type interface-number | -
配置本端口为远程目的镜像组的目的端口 | [ mirroring-group group-id ] monitor-port | 必选 缺省情况下，端口不是任何远程目的镜像组的目的端口

l 一个镜像组内只能配置一个目的端口。

l 请不要在目的端口上使能生成树协议，否则会影响镜像功能的正常使用。

l 从目的端口发出的报文包括镜像报文和其它端口正常转发来的报文。为了保证数据监测设备只对镜像报文进行分析，请将目的端口只用于端口镜像，不作其它用途。

l 镜像组的目的端口不能配置为已经接入RRPP环的端口。

3. 配置远程镜像VLAN

表1-20 配置远程镜像VLAN

操作 | 命令 | 说明
进入系统视图 | system-view | -
为远程目的镜像组配置远程镜像VLAN | mirroring-group group-id remote-probe vlan rprobe-vlan-id | 必选 缺省情况下，远程目的镜像组没有远程镜像VLAN

l 一个VLAN只能被一个镜像组使用。

l 当一个VLAN已被指定为远程镜像VLAN后，请不要在该VLAN上配置其它业务功能或创建对应的VLAN接口。

l 被配置成远程镜像VLAN后，该VLAN不能直接删除，必须先删除远程镜像VLAN的配置才能够删除这个VLAN。

l 如果镜像组生效后，远程镜像VLAN被取消，那么该镜像组将失效。

4. 将目的端口加入远程镜像VLAN

表1-21 将目的端口加入远程镜像VLAN

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
进入目的端口视图 |  | interface interface-type interface-number | -
将目的端口加入远程镜像VLAN | 目的端口为Access端口 | port access vlan vlan-id | 三者必选其一
 | 目的端口为Trunk端口 | port trunk permit vlan vlan-id
 | 目的端口为Hybrid端口 | port hybrid vlan vlan-id { tagged | untagged }

有关 port access vlan、port trunk permit vlan 和 port hybrid vlan命令的详细介绍，请参见“二层技术-以太网交换命令参考”中的“VLAN”。


1.4 配置三层远程端口镜像

1.4.1 配置任务简介

三层远程端口镜像的配置需要分别在源设备和目的设备上进行；如果存在中间设备，则需要在中间设备上配置单播路由协议，以确保源设备与目的设备之间的三层网络畅通。

分别在源设备和目的设备上先创建一个本地镜像组，然后为该镜像组配置源端口（或源CPU）和目的端口，不同的是：

l 在源设备上，需要将源端口（或源CPU）指定为待监控的端口（或CPU），目的端口指定为Tunnel接口；

l 在目的设备上，需要将源端口指定为Tunnel接口对应的物理端口，目的端口指定为连接数据监测设备的端口。

表1-22 三层远程端口镜像配置任务简介

配置任务 |  | 说明 | 详细配置
源设备上的配置 | 创建本地镜像组 | 必选 | 1.4.3
 | 配置源端口 | 源端口和源CPU可以只配其一，也可 以都配置 | 1.4.4
 | 配置源CPU |  | 1.4.5
 | 配置目的端口 | 必选 | 1.4.6
目的设备上的配置 | 创建本地镜像组 | 必选 | 1.4.3
 | 配置源端口 | 必选 | 1.4.4
 | 配置目的端口 | 必选 | 1.4.6

1.4.2 配置准备

在配置三层远程端口镜像之前，需完成以下任务：

l 配置Tunnel接口和GRE隧道

1.4.3 创建本地镜像组

请分别在源设备和目的设备上进行如下配置。

表1-23 创建本地镜像组

操作 | 命令 | 说明
进入系统视图 | system-view | -
创建本地镜像组 | mirroring-group group-id local | 必选 缺省情况下，不存在任何本地镜像组

1.4.4 配置源端口

在源设备上，请将源端口指定为待监控的端口；而在目的设备上，请将源端口指定为Tunnel接口对应的物理端口。

可以在系统视图下为指定镜像组配置一个或多个源端口，也可以在端口视图下将当前端口配置为指定镜像组的源端口，二者的配置效果相同。

1. 在系统视图下配置源端口

表1-24 在系统视图下配置源端口

操作 | 命令 | 说明
进入系统视图 | system-view | -
为本地镜像组配置源端口 | mirroring-group group-id mirroring-port mirroring-port-list { both | inbound | outbound } | 必选 缺省情况下，本地镜像组没有源端口

2. 在端口视图下配置源端口

表1-25 在端口视图下配置源端口

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入端口视图 | interface interface-type interface-number | -
配置本端口为本地镜像组的源端口 | [ mirroring-group group-id ] mirroring-port { both | inbound | outbound } | 必选 缺省情况下，端口不是任何本地镜像组的源端口

l 一个镜像组内可以配置多个源端口。

l 在S3600V2系列交换机上，每个端口无论作为单向或双向源端口，均最多只能加入两个镜像组。

1.4.5 配置源CPU

表1-26 配置源CPU

操作 | 命令 | 说明
进入系统视图 | system-view | -
为本地镜像组配置源CPU | mirroring-group group-id mirroring-cpu slot slot-number-list { both | inbound | outbound } | 必选 缺省情况下，本地镜像组没有源CPU

一个镜像组内可以配置多个源CPU。

1.4.6 配置目的端口

在源设备上，请将目的端口指定为Tunnel接口；而在目的设备上，请将目的端口指定为连接数据监测设备的端口。

可以在系统视图下为指定镜像组配置目的端口，也可以在端口视图下将当前端口配置为指定镜像组的目的端口，二者的配置效果相同。

1. 在系统视图下配置目的端口

表1-27 在系统视图下配置目的端口

操作 | 命令 | 说明
进入系统视图 | system-view | -
为本地镜像组配置目的端口 | mirroring-group group-id monitor-port monitor-port-id | 必选 缺省情况下，本地镜像组没有目的端口

2. 在端口视图下配置目的端口

表1-28 在端口视图下配置目的端口

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入端口视图 | interface interface-type interface-number | -
配置本端口为本地镜像组的目的端口 | [ mirroring-group group-id ] monitor-port | 必选 缺省情况下，端口不是任何本地镜像组的目的端口

l 一个镜像组内只能配置一个目的端口。

l 在目的设备上，请不要在目的端口上使能生成树协议，否则会影响镜像功能的正常使用。

l 从目的端口发出的报文包括镜像报文和其它端口正常转发来的报文。为了保证数据监测设备只对镜像报文进行分析，请将目的端口只用于端口镜像，不作其它用途。

l 镜像组的目的端口不能配置为已经接入RRPP环的端口。


1.5 端口镜像显示和维护

在完成上述配置后，在任意视图下执行 display 命令可以显示配置后镜像组的运行情况，通过查看显示信息验证配置的效果。

表1-29 端口镜像显示和维护

操作 | 命令
显示镜像组的配置信息 | display mirroring-group { group-id | all | local | remote-destination | remote-source } [ | { begin | exclude | include } regular-expression ]


1.6 端口镜像典型配置举例

1.6.1 本地端口镜像配置举例

1. 组网需求

l Device A通过端口Ethernet1/0/1和Ethernet1/0/2分别连接市场部和技术部，并通过端口Ethernet1/0/3连接Server。

l 通过配置源端口方式的本地端口镜像，使Server可以监控所有进、出市场部和技术部的报文。

2. 组网图

图1-4 本地端口镜像配置组网图

3. 配置步骤

(1) 配置本地镜像组

# 创建本地镜像组1。

<DeviceA> system-view

[DeviceA] mirroring-group 1 local

# 配置本地镜像组1的源端口为Ethernet1/0/1和Ethernet1/0/2，目的端口为Ethernet1/0/3。

[DeviceA] mirroring-group 1 mirroring-port ethernet 1/0/1 ethernet 1/0/2 both

[DeviceA] mirroring-group 1 monitor-port ethernet 1/0/3

# 在目的端口Ethernet1/0/3上关闭生成树协议。

[DeviceA] interface ethernet 1/0/3

[DeviceA-Ethernet1/0/3] undo stp enable

[DeviceA-Ethernet1/0/3] quit

(2) 检验配置效果

# 显示所有镜像组的配置信息。

[DeviceA] display mirroring-group all

mirroring-group 1:

type: local

status: active

mirroring port:

Ethernet1/0/1 both

Ethernet1/0/2 both

mirroring CPU:

monitor port: Ethernet1/0/3

配置完成后，用户可以通过Server监控所有进、出市场部和技术部的报文。

1.6.2 利用远程镜像VLAN实现本地镜像支持多个目的端口典型配置举例

1. 组网需求

三个部门A、B、C分别使用Ethernet1/0/1～Ethernet1/0/3端口接入DeviceA，现要求通过镜像功能，使三台数据检测设备ServerA、ServerB、ServerC都能够对三个部门发送和接收的报文进行镜像。

2. 组网图

图1-5 利用远程镜像VLAN实现本地镜像支持多个目的端口组网图

3. 配置步骤

# 创建远程源镜像组1。

<DeviceA> system-view

[DeviceA] mirroring-group 1 remote-source

# 将接入部门A、B、C的三个端口配置为远程源镜像组1的源端口。

[DeviceA] mirroring-group 1 mirroring-port ethernet 1/0/1 to ethernet 1/0/3 both

# 将设备上任意未使用的端口（此处以Ethernet1/0/5为例）配置为镜像组1的反射口。

[DeviceA] mirroring-group 1 reflector-port Ethernet 1/0/5

# 创建VLAN10作为镜像组1的远程镜像VLAN，并将接入三台数据检测设备的端口加入VLAN10。

[DeviceA] vlan 10

[DeviceA-vlan10] port ethernet 3/0/1 to ethernet 3/0/3

[DeviceA-vlan10] quit

# 配置VLAN10作为镜像组1的远程镜像VLAN。

[DeviceA] mirroring-group 1 remote-probe vlan 10

1.6.3 二层远程端口镜像配置举例

1. 组网需求

l 在一个二层网络中，Device A通过端口Ethernet1/0/1连接市场部，并通过Trunk端口Ethernet1/0/2与Device B的Trunk端口Ethernet1/0/1相连；Device C通过端口Ethernet1/0/2连接Server，并通过Trunk端口Ethernet1/0/1与Device B的Trunk端口Ethernet1/0/2相连。其中，Device A支持出端口方式的二层远程端口镜像。

l 通过配置二层远程端口镜像，使Server可以监控所有进、出市场部的报文。

2. 组网图

图1-6 二层远程端口镜像配置组网图

3. 配置步骤

(1) 配置Device A

# 创建远程源镜像组1。

<DeviceA> system-view

[DeviceA] mirroring-group 1 remote-source

# 创建VLAN 2作为远程镜像VLAN。

[DeviceA] vlan 2

# 关闭远程镜像VLAN的MAC地址学习功能

[DeviceA-vlan2] mac-address mac-learning disable

[DeviceA-vlan2] quit

# 配置远程源镜像组1的远程镜像VLAN为VLAN 2，源端口为Ethernet1/0/1，出端口为Ethernet1/0/2。

[DeviceA] mirroring-group 1 remote-probe vlan 2

[DeviceA] mirroring-group 1 mirroring-port ethernet 1/0/1 both

[DeviceA] mirroring-group 1 monitor-egress ethernet 1/0/2

# 配置出端口Ethernet1/0/2为Trunk口，允许VLAN 2的报文通过，并在该端口上关闭生成树协议。

[DeviceA] interface ethernet 1/0/2

[DeviceA-Ethernet1/0/2] port link-type trunk

[DeviceA-Ethernet1/0/2] port trunk permit vlan 2

[DeviceA-Ethernet1/0/2] undo stp enable

[DeviceA-Ethernet1/0/2] quit

(2) 配置Device B

# 创建VLAN 2作为远程镜像VLAN。

<DeviceB> system-view

[DeviceB] vlan 2

# 关闭远程镜像VLAN的MAC地址学习功能

[DeviceB-vlan2] mac-address mac-learning disable

[DeviceB-vlan2] quit

# 配置端口Ethernet1/0/1为Trunk口，并允许VLAN 2的报文通过。

[DeviceB] interface ethernet 1/0/1

[DeviceB-Ethernet1/0/1] port link-type trunk

[DeviceB-Ethernet1/0/1] port trunk permit vlan 2

[DeviceB-Ethernet1/0/1] quit

# 配置端口Ethernet1/0/2为Trunk口，并允许VLAN 2的报文通过。

[DeviceB-Ethernet1/0/1] quit

[DeviceB] interface ethernet 1/0/2

[DeviceB-Ethernet1/0/2] port link-type trunk

[DeviceB-Ethernet1/0/2] port trunk permit vlan 2

[DeviceB-Ethernet1/0/2] quit

(3) 配置Device C

# 配置端口Ethernet1/0/1为Trunk口，并允许VLAN 2的报文通过。

<DeviceC> system-view

[DeviceC] interface ethernet 1/0/1

[DeviceC-Ethernet1/0/1] port link-type trunk

[DeviceC-Ethernet1/0/1] port trunk permit vlan 2

[DeviceC-Ethernet1/0/1] quit

# 创建远程目的镜像组1。

[DeviceC] mirroring-group 1 remote-destination

# 创建VLAN 2作为远程镜像VLAN。

[DeviceC] vlan 2

# 关闭远程镜像VLAN的MAC地址学习功能

[DeviceA-vlan2] mac-address mac-learning disable

[DeviceA-vlan2] quit

# 配置远程目的镜像组1的远程镜像VLAN为VLAN 2，目的端口为Ethernet1/0/2，在该端口上关闭生成树协议并将其加入VLAN 2。

[DeviceC] mirroring-group 1 remote-probe vlan 2

[DeviceC] interface ethernet 1/0/2

[DeviceC-Ethernet1/0/2] mirroring-group 1 monitor-port

[DeviceC-Ethernet1/0/2] undo stp enable

[DeviceC-Ethernet1/0/2] port access vlan 2

[DeviceC-Ethernet1/0/2] quit

(4) 检验配置效果

配置完成后，用户可以通过Server监控所有进、出市场部的报文。

1.6.4 三层远程端口镜像配置举例

1. 组网需求

l 在一个三层网络中，Device A通过端口Ethernet1/0/1连接市场部，并通过端口Ethernet1/0/2与Device B的端口Ethernet1/0/1相连；Device C通过端口Ethernet1/0/2连接Server，并通过端口Ethernet1/0/1与Device B的端口Ethernet1/0/2相连。

l 通过配置三层远程端口镜像，使Server可以通过GRE隧道穿越三层网络监控所有进、出市场部的报文。

2. 组网图

图1-7 三层远程端口镜像配置组网图

3. 配置步骤

(1) 配置IP地址

请按照图1-7 配置VLAN，并将相应端口加入VLAN，配置各接口的IP地址和子网掩码，具体配置过程略。

(2) 配置Device A

# 创建接口Tunnel0，并为其配置IP地址和掩码。

<DeviceA> system-view

[DeviceA] interface tunnel 0

[DeviceA-Tunnel0] ip address 50.1.1.1 24

# 配置Tunnel0接口采用GRE隧道模式，并为该接口指定源地址和目的地址。

[DeviceA-Tunnel0] tunnel-protocol gre

[DeviceA-Tunnel0] source 20.1.1.1

[DeviceA-Tunnel0] destination 30.1.1.2

[DeviceA-Tunnel0] quit

# 创建并配置业务环回组1，服务类型为tunnel。

[DeviceA] service-loopback group 1 type tunnel

# 将设备上的任意端口（此处以Ethernet1/0/3为例）加入业务环回组1。

[DeviceA] interface Ethernet 1/0/3

[DeviceA-Ethernet1/0/3] undo stp enable

[DeviceA-Ethernet1/0/3] port service-loopback group 1

# 在Tunnel接口视图下指定隧道引用的业务环回组1。

[DeviceA-Ethernet1/0/3] quit

[DeviceA] interface tunnel 0

[DeviceA-Tunnel0] service-loopback-group 1

# 配置OSPF协议。

[DeviceA] ospf 1

[DeviceA-ospf-1] area 0

[DeviceA-ospf-1-area-0.0.0.0] network 10.1.1.0 0.0.0.255

[DeviceA-ospf-1-area-0.0.0.0] network 20.1.1.0 0.0.0.255

[DeviceA-ospf-1-area-0.0.0.0] network 50.1.1.0 0.0.0.255

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

[DeviceA-ospf-1] quit

# 创建本地镜像组1。

[DeviceA] mirroring-group 1 local

# 配置本地镜像组1的源端口为Ethernet1/0/1，目的端口为Tunnel0。

[DeviceA] mirroring-group 1 mirroring-port ethernet 1/0/1 both

[DeviceA] mirroring-group 1 monitor-port tunnel 0

(3) 配置Device B

# 配置OSPF协议。

<DeviceB> system-view

[DeviceB] ospf 1

[DeviceB-ospf-1] area 0

[DeviceB-ospf-1-area-0.0.0.0] network 20.1.1.0 0.0.0.255

[DeviceB-ospf-1-area-0.0.0.0] network 30.1.1.0 0.0.0.255

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

[DeviceB-ospf-1] quit

(4) 配置Device C

# 创建接口Tunnel0，并为其配置IP地址和掩码。

<DeviceC> system-view

[DeviceC] interface tunnel 0

[DeviceC-Tunnel0] ip address 50.1.1.2 24

# 配置Tunnel0接口采用GRE隧道模式，并为该接口指定源地址和目的地址。

[DeviceC-Tunnel0] tunnel-protocol gre

[DeviceC-Tunnel0] source 30.1.1.2

[DeviceC-Tunnel0] destination 20.1.1.1

[DeviceC-Tunnel0] quit

# 创建并配置业务环回组1，服务类型为tunnel。

[DeviceC] service-loopback group 1 type tunnel

# 将设备上的任意端口（此处以Ethernet1/0/3为例）加入业务环回组1。

[DeviceC] interface Ethernet 1/0/3

[DeviceC-Ethernet1/0/3] undo stp enable

[DeviceC-Ethernet1/0/3] port service-loopback group 1

# 在Tunnel接口视图下指定隧道引用的业务环回组1。

[DeviceC-Ethernet1/0/3] quit

[DeviceC] interface tunnel 0

[DeviceC-Tunnel0] service-loopback-group 1

[DeviceC-Tunnel0] quit

# 配置OSPF协议。

[DeviceC] ospf 1

[DeviceC-ospf-1] area 0

[DeviceC-ospf-1-area-0.0.0.0] network 30.1.1.0 0.0.0.255

[DeviceC-ospf-1-area-0.0.0.0] network 40.1.1.0 0.0.0.255

[DeviceC-ospf-1-area-0.0.0.0] network 50.1.1.0 0.0.0.255

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

[DeviceC-ospf-1] quit

# 创建本地镜像组1。

[DeviceC] mirroring-group 1 local

# 配置本地镜像组1的源端口为Ethernet1/0/1，目的端口为Ethernet1/0/2。

[DeviceC] mirroring-group 1 mirroring-port ethernet 1/0/1 inbound

[DeviceC] mirroring-group 1 monitor-port ethernet 1/0/2

# 在目的端口Ethernet1/0/2上关闭生成树协议。

[DeviceC] interface ethernet 1/0/2

[DeviceC-Ethernet1/0/2] undo stp enable

[DeviceC-Ethernet1/0/2] quit

(5) 检验配置效果

配置完成后，用户可以通过Server监控所有进、出市场部的报文。


2 流镜像配置

流镜像功能中提到的端口包括二层以太网端口和三层以太网端口。三层以太网端口是指被配置为三层模式的以太网端口，有关以太网端口模式切换的操作，请参见“二层技术-以太网交换配置指导”中的“以太网端口配置”。

相关链接

  • 2.1 流镜像简介
  • 2.2 流镜像配置任务简介
  • 2.3 配置流镜像
  • 2.4 流镜像显示和维护
  • 2.5 流镜像典型配置举例
父主题： 06-镜像配置


2.1 流镜像简介

流镜像是指将指定报文复制到指定目的地，用于报文的分析和监控。流镜像通过QoS策略来实现，即使用流分类技术为待镜像报文定义匹配条件，再通过配置流行为将符合条件的报文镜像至指定目的地。其优势在于用户通过流分类技术可以灵活地制订匹配条件，从而对报文类型进行精细区分，以获取更加精确的统计信息。根据报文镜像的目的地不同，流镜像可分为以下三种类型：

l 流镜像到端口：将符合要求的报文复制后转发到指定端口。

l 流镜像到CPU：将符合要求的报文复制后转发到CPU。

有关QoS策略、流分类和流行为的详细介绍，请参见“ACL和QoS配置指导”中的“QoS配置方式”。


2.2 流镜像配置任务简介

表2-1 流镜像配置任务简介

配置任务 |  | 说明 | 详细配置
配置报文匹配规则 |  | 必选 | 2.3.1
配置流镜像类型 | 配置流镜像到端口 | 二者必选其一 | 2.3.2 1.
 | 配置流镜像到CPU |  | 2.3.2 2.
配置QoS策略 |  | 必选 | 2.3.3
应用QoS策略 | 基于端口应用 | 四者必选其一 | 2.3.4 1.
 | 基于VLAN应用 |  | 2.3.4 2.
 | 基于全局应用 |  | 2.3.4 3.
 | 基于控制平面应用 |  | 2.3.4 4.


2.3 配置流镜像

2.3.1 配置报文匹配规则

表2-2 配置报文匹配规则

操作 | 命令 | 说明
进入系统视图 | system-view | -
定义流分类，并进入流分类视图 | traffic classifier tcl-name [ operator { and | or } ] | 必选 缺省情况下，不存在任何流分类
配置报文匹配规则 | if-match match-criteria | 必选 缺省情况下，流分类中不存在任何报文匹配规则

有关 traffic classifier 和 if-match 命令的详细介绍，请参见“ACL和QoS命令参考”中的“QoS策略”。

2.3.2 配置流镜像类型

在同一流行为中只能配置一种类型的流镜像。

1. 配置流镜像到端口

表2-3 配置流镜像到端口

操作 | 命令 | 说明
进入系统视图 | system-view | -
定义流行为，并进入流行为视图 | traffic behavior behavior-name | 必选 缺省情况下，不存在任何流行为
配置流镜像到指定端口 | mirror-to interface interface-type interface-number | 必选 缺省情况下，流行为中未配置任何流镜像

有关 traffic behavior 命令的详细介绍，请参见“ACL和QoS命令参考”中的“QoS策略”。

2. 配置流镜像到CPU

表2-4 配置流镜像到CPU

操作 | 命令 | 说明
进入系统视图 | system-view | -
定义流行为，并进入流行为视图 | traffic behavior behavior-name | 必选 缺省情况下，不存在任何流行为
配置流镜像到CPU | mirror-to cpu | 必选 缺省情况下，流行为中未配置任何流镜像

l 有关 traffic behavior 命令的详细介绍，请参见“ACL和QoS命令参考”中的“QoS策略”。

l 上述CPU是指配置了流镜像的端口所在设备上的CPU。

2.3.3 配置QoS策略

表2-5 配置QoS策略

操作 | 命令 | 说明
进入系统视图 | system-view | -
定义QoS策略，并进入QoS策略视图 | qos policy policy-name | 必选 缺省情况下，不存在任何策略
为流分类指定采用的流行为 | classifier tcl-name behavior behavior-name | 必选 缺省情况下，没有为流分类指定采用的流行为

有关 qos policy 和 classifier behavior 命令的详细介绍，请参见“ACL和QoS命令参考”中的“QoS策略”。

2.3.4 应用QoS策略

有关应用QoS策略的详细介绍，请参见“ACL和QoS配置指导”中的“QoS配置方式”。

1. 基于端口应用

将QoS策略应用到某端口，可以对该端口指定方向上的流量进行镜像。一个QoS策略可以应用于多个端口，而端口在每个方向上只能应用一个QoS策略。

表2-6 基于端口应用

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
进入相应视图 | 进入端口视图 | interface interface-type interface-number | 二者必选其一 端口视图下的配置只对当前端口生效；端口组视图下的配置将对端口组中的所有端口生效
 | 进入端口组视图 | port-group manual port-group-name
应用QoS策略到端口 |  | qos apply policy policy-name { inbound | outbound } | 必选

有关 qos apply policy 命令的详细介绍，请参见“ACL和QoS命令参考”中的“QoS策略”。

2. 基于VLAN应用

将QoS策略应用到某VLAN，可以对该VLAN内各端口指定方向上的流量进行镜像。

表2-7 基于VLAN应用

操作 | 命令 | 说明
进入系统视图 | system-view | -
应用QoS策略到指定VLAN | qos vlan-policy policy-name vlan vlan-id-list { inbound | outbound } | 必选

有关 qos vlan-policy 命令的详细介绍，请参见“ACL和QoS命令参考”中的“QoS策略”。

3. 基于全局应用

将QoS策略应用到全局，可以对设备各端口指定方向上的流量进行镜像。

表2-8 基于全局应用

操作 | 命令 | 说明
进入系统视图 | system-view | -
应用QoS策略到全局 | qos apply policy policy-name global { inbound | outbound } | 必选

有关 qos apply policy 命令的详细介绍，请参见“ACL和QoS命令参考”中的“QoS策略”。

4. 基于控制平面应用

将QoS策略应用到控制平面，可以对控制平面入方向上的流量进行镜像。

表2-9 基于控制平面应用

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入控制平面视图 | control-plane slot slot-number | -
应用QoS策略到控制平面 | qos apply policy policy-name inbound | 必选

有关 control-plane 和 qos apply policy 命令的详细介绍，请参见“ACL和QoS命令参考”中的“QoS策略”。


2.4 流镜像显示和维护

在完成上述配置后，在任意视图下执行 display 命令可以显示配置后流镜像的运行情况，通过查看显示信息验证配置的效果。

表2-10 流镜像显示和维护

操作 | 命令
显示用户自定义流行为的配置信息 | display traffic behavior user-defined [ behavior-name ] [ | { begin | exclude | include } regular-expression ]
显示用户自定义策略的配置信息 | display qos policy user-defined [ policy-name [ classifier tcl-name ] ] [ | { begin | exclude | include } regular-expression ]

有关 display traffic behavior 和 display qos policy 命令的详细介绍，请参见“ACL和QoS命令参考”中的“QoS策略”。


2.5 流镜像典型配置举例

2.5.1 组网需求

l 某公司内的各部门之间使用不同网段的IP地址，其中市场部和技术部分别使用192.168.1.0/24和192.168.2.0/24网段，该公司的工作时间为每周工作日的8点到18点。

l 通过配置流镜像，使Server可以监控技术部访问互联网的WWW流量，以及技术部在工作时间发往市场部的IP流量。

2.5.2 组网图

图2-1 流镜像典型配置组网图

2.5.3 配置步骤

(1) 配置监控技术部访问互联网的流量

# 创建ACL 3000，并定义如下规则：匹配技术部（192.168.2.0/24网段）访问WWW的报文。

<DeviceA> system-view

[DeviceA] acl number 3000

[DeviceA-acl-adv-3000] rule permit tcp source 192.168.2.0 0.0.0.255 destination-port eq www

[DeviceA-acl-adv-3000] quit

# 创建流分类tech_c，并配置报文匹配规则为ACL 3000。

[DeviceA] traffic classifier tech_c

[DeviceA-classifier-tech_c] if-match acl 3000

[DeviceA-classifier-tech_c] quit

# 创建流行为tech_b，并配置流镜像到端口Ethernet1/0/3。

[DeviceA] traffic behavior tech_b

[DeviceA-behavior-tech_b] mirror-to interface ethernet 1/0/3

[DeviceA-behavior-tech_b] quit

# 创建QoS策略tech_p，并指定流分类tech_c采用流行为tech_b。

[DeviceA] qos policy tech_p

[DeviceA-qospolicy-tech_p] classifier tech_c behavior tech_b

[DeviceA-qospolicy-tech_p] quit

# 将QoS策略tech_p应用到端口Ethernet1/0/1的出方向上。

[DeviceA] interface ethernet 1/0/1

[DeviceA-Ethernet1/0/1] qos apply policy tech_p outbound

[DeviceA-Ethernet1/0/1] quit

(2) 配置监控技术部发往市场部的流量

# 定义工作时间：创建名为work的时间段，其时间范围为每周工作日的8点到18点。

[DeviceA] time-range work 8:0 to 18:0 working-day

# 创建ACL 3001，并定义如下规则：匹配在工作时间由技术部（192.168.2.0/24网段）发往市场部（192.168.1.0/24网段）的IP报文。

[DeviceA] acl number 3001

[DeviceA-acl-adv-3001] rule permit ip source 192.168.2.0 0.0.0.255 destination 192.168.1.0 0.0.0.255 time-range work

[DeviceA-acl-adv-3001] quit

# 创建流分类mkt_c，并配置报文匹配规则为ACL 3001。

[DeviceA] traffic classifier mkt_c

[DeviceA-classifier-mkt_c] if-match acl 3001

[DeviceA-classifier-mkt_c] quit

# 创建流行为mkt_b，并配置流镜像到端口Ethernet1/0/3。

[DeviceA] traffic behavior mkt_b

[DeviceA-behavior-mkt_b] mirror-to interface ethernet 1/0/3

[DeviceA-behavior-mkt_b] quit

# 创建QoS策略mkt_p，并指定流分类mkt_c采用流行为mkt_b。

[DeviceA] qos policy mkt_p

[DeviceA-qospolicy-mkt_p] classifier mkt_c behavior mkt_b

[DeviceA-qospolicy-mkt_p] quit

# 将QoS策略mkt_p应用到端口Ethernet1/0/2的出方向上。

[DeviceA] interface ethernet 1/0/2

[DeviceA-Ethernet1/0/2] qos apply policy mkt_p outbound

(3) 检验配置效果

配置完成后，用户可以通过Server监控技术部访问互联网的WWW流量，以及技术部在工作时间发往市场部的IP流量。


1 NQA配置

相关链接

  • 1.1 NQA简介
  • 1.2 NQA配置任务简介
  • 1.3 配置NQA服务器
  • 1.4 使能NQA客户端功能
  • 1.5 创建NQA测试组
  • 1.6 配置NQA测试组
  • 1.7 配置联动功能
  • 1.8 配置阈值告警功能
  • 1.9 配置NQA统计功能
  • 1.10 配置NQA历史记录功能
  • 1.11 配置NQA测试组通用可选参数
  • 1.12 调度NQA测试组
  • 1.13 NQA显示和维护
  • 1.14 NQA典型配置举例
父主题： 07-NQA配置


1.1 NQA简介

1.1.1 NQA概述

NQA是Network Quality Analyzer（网络质量分析）的简称。NQA通过发送探测报文，对网络性能、网络提供的服务及服务质量进行分析，并为用户提供网络性能和服务质量的参数，如时延抖动、TCP连接建立时间、FTP连接建立时间和文件传输速率等。

利用NQA的测试结果，用户可以：

(1) 及时了解网络的性能状况，针对不同的网络性能进行相应处理。

(2) 对网络故障进行诊断和定位。

1.1.2 NQA的特点

1. 支持多种测试类型

以往的Ping功能是使用ICMP（Internet Control Message Protocol，互联网控制报文协议）测试数据包在本端和指定目的端之间的往返时间。NQA是对Ping功能的扩展和增强，它增加了多种测试类型，提供了更多的功能。

目前NQA支持11种测试类型：ICMP-echo、DHCP、DNS、FTP、HTTP、UDP-jitter、SNMP、TCP、UDP-echo、Voice和DLSw测试。客户端向对端发送不同类型的探测报文，统计对端是否回应报文以及报文的往返时间等参数，以便用户根据统计结果判断协议的可用性和网络的性能。

2. 支持联动功能

联动功能是指通过建立联动项，对NQA探测结果进行监测，当连续探测失败次数达到一定数目时，就通过Track模块触发应用模块联动。联动功能的实现如图1-1 所示。

图1-1 联动功能实现示意图

联动功能由监测模块、Track模块和应用模块三部分组成：

l 监测模块负责对链路状态、网络性能等进行监测，并将探测结果通知给Track模块。

l Track模块接收到监测模块的探测结果后，及时改变Track项的状态，并通知应用模块。Track模块位于应用模块和监测模块之间，可以屏蔽不同监测模块的差异，为应用模块提供统一的接口。

l 应用模块根据Track项的状态，进行相应的处理，从而实现联动。

以静态路由为例，用户配置了一条静态路由，下一跳为192.168.0.88，如果192.168.0.88可达，那么该静态路由有效；如果192.168.0.88不可达，则该静态路由无效。通过在NQA、Track模块和静态路由模块之间建立联动，可以实现静态路由有效性的实时判断：

(1) 通过NQA监测地址192.168.0.88是否可达。

(2) 如果NQA发现192.168.0.88不可达，则通知Track模块改变Track项的状态。

(3) Track项将改变后的状态通知给静态路由模块。静态路由模块据此可以判断该静态路由项无效。

联动功能和Track模块的详细介绍，请参见“可靠性配置指导”中的“Track”。

3. 支持阈值告警功能

NQA可以对探测结果进行监测，通过向网管服务器发送Trap消息，及时将监测结果通知给网管服务器，以便网络管理员根据Trap消息了解测试运行状况和网络性能。

(1) 监测对象

NQA阈值告警功能支持的监测对象及对应的测试类型，如表1-1 所示：

表1-1 NQA阈值告警功能支持的监测对象

监测对象 | 支持的测试类型
探测持续时间 | 除UDP-jitter和Voice之外的测试类型
探测失败次数 | 除UDP-jitter和Voice之外的测试类型
报文往返时间 | UDP-jitter和Voice测试类型
丢弃报文数目 | UDP-jitter和Voice测试类型
源到目的和目的到源的单向时延抖动 | UDP-jitter和Voice测试类型
源到目的和目的到源的单向时延 | UDP-jitter和Voice测试类型
ICPIF（Calculated Planning Impairment Factor，计算计划损伤元素）值 ICPIF的详细介绍请参见“1.6.10 配置Voice测试” | Voice测试类型
MOS（Mean Opinion Scores，平均意见得分）值 MOS的详细介绍请参见“1.6.10 配置Voice测试” | Voice测试类型

(2) 阈值类型

NQA阈值告警功能支持的阈值类型包括：

l average：阈值类型为平均值，即：监测一次测试中探测结果的平均值，如果平均值不在指定的范围内，则该监测对象超出阈值。例如，监测一次测试中探测持续时间的平均值。

l accumulate：阈值类型为累计数目，即：监测一次测试中探测结果不在指定范围内的累计数目，如果累计数目达到或超过设定的值，则该监测对象超出阈值。

l consecutive：阈值类型为连续次数，即：NQA测试组启动后，监测探测结果连续不在指定范围内的次数，如果该次数达到或超过设定的值，则该监测对象超出阈值。

阈值类型为 average 和 accumulate 时，以每次测试为界限监测探测结果；阈值类型为 consecutive 时，不以测试为界限监测探测结果。

(3) 触发动作

NQA阈值告警功能可以触发如下动作：

l none：只在显示信息中记录监测结果，不向网管发送Trap消息。

l trap-only：在显示信息中记录监测结果的同时，向网管发送Trap消息。

DNS测试不支持发送Trap消息，即对于DNS测试，触发动作只能配置为 none。

(4) 阈值告警组

NQA通过创建阈值告警组、在阈值告警组中配置监测的对象、阈值类型及触发的动作，来实现阈值告警功能。

阈值告警组包括invalid、over-threshold和below-threshold三种状态：

l NQA测试组未启动时，阈值告警组的状态为invalid。

l NQA测试组启动后，每次测试或探测结束时，检查监测的对象是否超出阈值。如果超出阈值，则阈值告警组的状态变为over-threshold；如果未超出阈值，则状态变为below-threshold。

若配置阈值告警组的触发动作为 trap-only，则当阈值告警组的状态改变时，向网管发送Trap消息。

1.1.3 NQA的基本概念

1. 测试组

NQA可以对多个目标（例如，目的主机或服务器）进行测试。NQA通过测试组管理和调度针对某一目标的NQA测试。进行NQA测试前，需要先创建NQA测试组。在NQA测试组中配置NQA测试的参数，如测试类型，测试目的地址，测试目的端口等。

每个测试组都有一个管理员名称和一个操作标签，管理员名称和操作标签可以唯一确定一个测试组。

2. 测试和探测

启动NQA测试组后，每隔一段时间进行一次测试，测试的时间间隔可以由用户来设定。

一次NQA测试由若干次连续的探测组成，探测的次数可以由用户来设定。

对于Voice测试，一次测试中只能进行一次探测。

不同测试类型中，探测的含义不同：

l 对于TCP和DLSw测试，一次探测操作是指建立一次连接；

l 对于UDP-jitter和Voice测试，一次探测操作是指连续发送多个探测报文，发送探测报文的个数由用户来设定；

l 对于FTP、HTTP、DHCP和DNS测试，一次探测操作是指完成一次相应的功能，例如上传或下载一个文件，获取一个Web页面，为接口申请一个IP地址，将一个域名解析为IP地址；

l 对于ICMP-echo和UDP-echo测试，一次探测操作是指发送一个探测报文；

l 对于SNMP测试，一次探测操作是指发送三个SNMP协议报文，分别对应SNMP v1、SNMP v2c和SNMP v3三个版本。

3. NQA客户端和服务器

NQA客户端是发起NQA测试的设备，NQA测试组在客户端创建。

NQA服务器负责处理NQA客户端发来的探测报文，如图1-2 所示。NQA服务器监听指定IP地址和端口的报文，并对客户端发送的探测报文进行响应。

图1-2 NQA客户端与服务器之间的关系

在大多数的测试中，只需要配置NQA客户端。但在进行TCP、UDP-echo、UDP-jitter和Voice类型测试时，必须配置NQA服务器。

在一个NQA服务器上可以创建多个TCP或UDP监听服务，每个监听服务对应一个目的地址和一个端口号，配置的目的地址和端口号必须与NQA客户端的配置一致，且不能与已有的监听服务冲突。

1.1.4 NQA测试操作

NQA测试操作的过程为：

(1) NQA客户端构造指定测试类型的探测报文，并发送给对端；

(2) 对端收到探测报文后，回复带有时间戳的应答报文；

(3) NQA客户端根据是否收到应答报文，以及应答报文中的时间戳，计算报文丢失率、往返时间等参数。


1.2 NQA配置任务简介

表1-2 NQA服务器配置任务简介

配置任务 | 说明 | 详细配置
配置NQA服务器 | 对于TCP、UDP-echo、UDP-jitter和Voice四种测试类型，为必选 | 1.3

要成功进行某项测试，NQA客户端上需要进行如下操作：

(1) 使能NQA客户端功能。

(2) 创建测试组，根据测试类型进行相应测试参数的配置。不同测试类型对应的测试参数不同，详见下面具体的配置过程。

(3) 启动NQA测试组。

表1-3 NQA客户端配置任务简介

配置任务 |  | 说明 | 详细配置
使能NQA客户端功能 |  | 必选 | 1.4
创建NQA测试组 |  | 必选 | 1.5
配置NQA测试组 | 配置ICMP-echo测试 | 必选其一 | 1.6.1
 | 配置DHCP测试 |  | 1.6.2
 | 配置DNS测试 |  | 1.6.3
 | 配置FTP测试 |  | 1.6.4
 | 配置HTTP测试 |  | 1.6.5
 | 配置UDP-jitter测试 |  | 1.6.6
 | 配置SNMP测试 |  | 1.6.7
 | 配置TCP测试 |  | 1.6.8
 | 配置UDP-echo测试 |  | 1.6.9
 | 配置Voice测试 |  | 1.6.10
 | 配置DLSw测试 |  | 1.6.11
配置联动功能 |  | 可选 | 1.7
配置阈值告警功能 |  | 可选 | 1.8
配置NQA统计功能 |  | 可选 | 1.9
配置NQA历史记录功能 |  | 可选 | 1.10
配置NQA测试组通用可选参数 |  | 可选 | 1.11
调度NQA测试组 |  | 必选 | 1.12


1.3 配置NQA服务器

在进行TCP、UDP-echo、UDP-jitter和Voice类型测试前，必须在对端设备上配置NQA服务器。NQA服务器监听指定IP地址和端口的报文，并对客户端发送的探测报文进行响应。

表1-4 配置NQA服务器

操作 | 命令 | 说明
进入系统视图 | system-view | -
开启NQA服务器功能 | nqa server enable | 必选 缺省情况下，NQA服务器功能处于关闭状态
在NQA服务器上配置监听服务 | nqa server { tcp-connect | udp-echo } ip-address port-number | 必选 配置的IP地址和端口号必须与NQA客户端的配置一致，且不能与已有的监听服务冲突


1.4 使能NQA客户端功能

只有使能NQA客户端功能后，NQA客户端的相关配置才会生效。

表1-5 使能NQA客户端功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
开启NQA客户端功能 | nqa agent enable | 可选 缺省情况下，NQA客户端功能处于开启状态


1.5 创建NQA测试组

进行NQA测试前，需要先创建NQA测试组。创建测试组并进入测试组视图后，可以配置测试的类型。

表1-6 创建NQA测试组

操作 | 命令 | 说明
进入系统视图 | system-view | -
创建NQA测试组，并进入NQA测试组视图 | nqa entry admin-name operation-tag | 必选

执行 nqa entry命令进入已经配置测试类型的测试组视图时，将直接进入测试组测试类型视图。


1.6 配置NQA测试组

1.6.1 配置ICMP-echo测试

ICMP-echo测试利用ICMP协议，根据是否接收到应答报文判断目的主机的可达性。ICMP-echo测试的功能与Ping命令类似，但ICMP-echo测试中可以指定测试的下一跳设备，并且ICMP-echo测试的输出信息更为丰富。网络中出现连通性故障时，可以通过ICMP-echo测试对故障进行定位。

表1-7 配置ICMP-echo测试

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入NQA测试组视图 | nqa entry admin-name operation-tag | -
配置测试类型为ICMP-echo，并进入测试类型视图 | type icmp-echo | 必选
配置测试操作的目的地址 | destination ip ip-address | 必选 缺省情况下，未配置测试操作的目的IP地址
配置发送的探测报文的大小 | data-size size | 可选 缺省情况下，发送的探测报文为100字节
配置发送的探测报文的填充字符串 | data-fill string | 可选 缺省情况下，探测报文的填充内容为十六进制数值00010203040506070809
指定测试操作所属的VPN | vpn-instance vpn-instance-name | 可选 缺省情况下，未指定测试操作所属的VPN，NQA用来测试公网的连通性
配置探测报文的源接口 | source interface interface-type interface-number | 可选 缺省情况下，未配置探测报文的源接口 如果使用 source ip 命令配置了ICMP-echo测试的源地址，则此配置无效；否则，指定的源接口的IP地址将作为ICMP-echo探测报文的源IP地址 该命令指定的接口必须为up状态，否则探测将会失败
配置探测报文的源IP地址 | source ip ip-address | 可选 缺省情况下，未指定源IP地址 如果没有指定源IP地址，但是配置了 source interface，则该源接口的IP地址将作为探测报文中的源IP地址 该命令指定的源IP地址必须是设备上接口的IP地址，且接口为up状态，否则探测将会失败
配置探测报文的下一跳IP地址 | next-hop ip-address | 可选 缺省情况下，未配置下一跳IP地址
配置通用的可选参数 | 参见表1-22 | 可选

ICMP-echo测试不支持在IPv6网络中使用，如果要测试IPv6网络中目的主机的可达性，可以使用 ping ipv6 命令。ping ipv6 命令的详细介绍，请参见“网络管理和监控命令参考”中的“系统维护与调试”。

1.6.2 配置DHCP测试

DHCP测试主要用来测试网络上是否有DHCP服务器，以及DHCP服务器响应客户端请求、为客户端分配IP地址所需的时间。

1. 配置准备

在进行DHCP测试之前，需要完成DHCP服务器的配置。如果NQA客户端（即DHCP客户端）和DHCP服务器在不同的网段，还需要配置DHCP中继。DHCP服务器和DHCP中继的配置方法，请参见“三层技术-IP业务配置指导”中的“DHCP服务器”和“DHCP中继”。

2. 配置DHCP测试

表1-8 配置DHCP测试

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入NQA测试组视图 | nqa entry admin-name operation-tag | -
配置测试类型为DHCP，并进入测试类型视图 | type dhcp | 必选
指定进行DHCP测试的接口 | operation interface interface-type interface-number | 必选 缺省情况下，没有指定进行DHCP测试的接口 该命令指定的接口必须为up状态，否则会导致测试失败
配置通用的可选参数 | 参见表1-22 | 可选

l DHCP测试只是模拟DHCP申请地址的过程，进行DHCP测试的接口IP地址不会改变。

l DHCP测试完成后，NQA客户端将主动发送DHCP-RELEASE报文释放申请到的IP地址。

1.6.3 配置DNS测试

DNS测试主要用来测试NQA客户端是否可以通过指定的DNS服务器将域名解析为IP地址，以及域名解析过程需要的时间。

1. 配置准备

在进行DNS测试之前，需要在DNS服务器上创建域名和IP地址的映射关系。

2. 配置DNS测试

表1-9 配置DNS测试

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入NQA测试组视图 | nqa entry admin-name operation-tag | -
配置测试类型为DNS，并进入测试类型视图 | type dns | 必选
将DNS服务器的IP地址配置为测试操作的目的地址 | destination ip ip-address | 必选 缺省情况下，未配置测试操作的目的IP地址
配置要解析的域名 | resolve-target domain-name | 必选 缺省情况下，没有配置要解析的域名
配置通用的可选参数 | 参见 表1-22 | 可选

DNS测试只是模拟域名解析的过程，设备上不会保存要解析的域名与IP地址的对应关系。

1.6.4 配置FTP测试

FTP测试主要用来测试NQA客户端是否可以与指定的FTP服务器建立连接，以及与FTP服务器之间传送文件的时间。

1. 配置准备

在进行FTP测试之前，需要在FTP服务器上进行相应的配置，包括FTP客户端登录FTP服务器的用户名、密码等。FTP服务器的配置方法，请参见“基础配置指导”中的“FTP”。

2. 配置FTP测试

表1-10 配置FTP测试

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入NQA测试组视图 | nqa entry admin-name operation-tag | -
配置测试类型为FTP，并进入测试类型视图 | type ftp | 必选
将FTP服务器的IP地址配置为测试操作的目的地址 | destination ip ip-address | 必选 缺省情况下，未配置测试操作的目的IP地址
配置探测报文的源IP地址 | source ip ip-address | 必选 缺省情况下，未指定源IP地址 该命令指定的源IP地址必须是设备上接口的IP地址，且接口为up状态，否则测试将会失败
配置FTP测试的操作类型 | operation { get | put } | 可选 缺省情况下，FTP操作方式为 get 操作，即从FTP服务器获取文件
配置FTP登录用户名 | username name | 必选 缺省情况下，未配置FTP登录用户名
配置FTP登录密码 | password password | 必选 缺省情况下，未配置FTP登录密码
配置FTP服务器和客户端传送文件的文件名 | filename file-name | 必选 缺省情况下，未配置FTP服务器和客户端之间传送文件的文件名
配置FTP测试的数据传输方式 | mode { active | passive } | 可选 缺省情况下，FTP测试的数据传输方式为主动方式
配置通用的可选参数 | 参见表1-22 | 可选

l 进行 put 操作时，NQA客户端将在FTP服务器会创建以 file-name 为文件名的固定大小的测试文件，此文件与NQA客户端存储设备中保存的文件无关；进行 get 操作时，设备上不会保存从服务器获取的文件。

l 进行 get 操作时，如果FTP服务器上没有以 file-name 为名字的文件，则测试不会成功。

l 进行FTP测试时，建议选用较小的测试文件并将NQA探测超时时间调大，如果测试文件太大或探测超时时间太小，可能会导致探测超时。

1.6.5 配置HTTP测试

HTTP测试主要用来测试NQA客户端是否可以与指定的HTTP服务器建立连接，以及从HTTP服务器获取数据所需的时间，从而判断HTTP服务器的连通性及性能。

1. 配置准备

在进行HTTP测试之前，需要完成HTTP服务器的配置。

2. 配置HTTP测试

表1-11 配置HTTP测试

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入NQA测试组视图 | nqa entry admin-name operation-tag | -
配置测试类型为HTTP，并进入测试类型视图 | type http | 必选
将HTTP服务器的IP地址配置为测试操作的目的地址 | destination ip ip-address | 必选 缺省情况下，未配置测试操作的目的IP地址
配置探测报文的源IP地址 | source ip ip-address | 可选 缺省情况下，未指定源IP地址 该命令指定的源IP地址必须是设备上接口的IP地址，且接口为up状态，否则测试将会失败
配置HTTP测试的操作类型 | operation { get | post } | 可选 缺省情况下，HTTP操作方式为 get 操作，即从HTTP服务器获取数据
配置HTTP测试访问的网址 | url url | 必选
配置HTTP测试所使用的协议版本 | http-version v1.0 | 可选 缺省情况下，HTTP测试使用的版本为1.0
配置通用的可选参数 | 参见表1-22 | 可选

HTTP测试中，HTTP服务器的TCP端口号只能为80。如果HTTP服务器采用其他TCP端口，测试将会失败。

1.6.6 配置UDP-jitter测试

建议不要对知名端口，即1～1023之间的端口，进行UDP-jitter测试，否则可能导致NQA测试失败或该知名端口对应的服务不可用。

语音、视频等实时性业务对Delay jitter（时延抖动）的要求较高。通过UDP-jitter测试，可以获得网络的单向和双向时延抖动，从而判断网络是否可以承载实时性业务。

UDP-jitter测试的过程如下：

(1) 源端以一定的时间间隔向目的端发送探测报文。

(2) 目的端收到探测报文后，为它打上时间戳，并把带有时间戳的报文发送给源端。

(3) 源端收到报文后，根据报文上的时间戳，计算出时延抖动，从而清晰地反映出网络状况。时延抖动的计算方法为相邻两个报文的接收时间间隔减去这两个报文的发送时间间隔。

2. 配置准备

UDP-jitter测试需要NQA服务器和客户端配合才能完成。进行UDP-jitter测试之前，必须保证NQA服务器端配置了UDP监听功能，配置方法请参见“1.3 配置NQA服务器”。

3. 配置UDP-jitter测试

表1-12 配置UDP-jitter测试

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入NQA测试组视图 | nqa entry admin-name operation-tag | -
配置测试类型为UDP-jitter，并进入测试类型视图 | type udp-jitter | 必选
配置测试操作的目的地址 | destination ip ip-address | 必选 缺省情况下，未配置测试操作的目的IP地址 测试操作的目的地址必须与NQA服务器上所配置的监听服务的IP地址一致
配置测试操作的目的端口 | destination port port-number | 必选 缺省情况下，未配置测试操作的目的端口号 测试操作的目的端口号必须与NQA服务器上所配置的监听服务的端口号一致
配置探测报文的源端口号 | source port port-number | 可选 缺省情况下，未指定源端口号
配置发送的探测报文的大小 | data-size size | 可选 缺省情况下，发送的探测报文为100字节
配置发送的探测报文的填充字符串 | data-fill string | 可选 缺省情况下，探测报文的填充内容为十六进制数值00010203040506070809
配置一次UDP-jitter探测中发送探测报文的个数 | probe packet-number packet-number | 可选 缺省情况下，一次UDP-jitter探测中发送10个探测报文
配置UDP-jitter测试中发送探测报文的时间间隔 | probe packet-interval packet-interval | 可选 缺省情况下，UDP-jitter测试中发送探测报文的时间间隔为20毫秒
配置UDP-jitter测试中等待响应报文的超时时间 | probe packet-timeout packet-timeout | 可选 缺省情况下，UDP-jitter测试中等待响应报文的超时时间为3000毫秒
配置探测报文的源IP地址 | source ip ip-address | 可选 缺省情况下，未指定源IP地址 该命令指定的源IP地址必须是设备上接口的IP地址，且接口为up状态，否则测试将会失败
配置通用的可选参数 | 参见表1-22 | 可选

一次UDP-jitter测试中探测的次数取决于 probe count 命令的配置，而每次探测所发送的探测包的个数由 probe packet-number 命令配置决定。

1.6.7 配置SNMP测试

SNMP查询测试主要用来测试从NQA客户端向SNMP agent设备发出一个SNMP协议查询报文到接收响应报文的时间。

1. 配置准备

在进行SNMP测试之前，需要在作为SNMP agent的设备上启动SNMP agent功能。SNMP agent的配置方法，请参见“网络管理和监控配置指导”中的“SNMP”。

2. 配置SNMP测试

表1-13 配置SNMP测试

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入NQA测试组视图 | nqa entry admin-name operation-tag | -
配置测试类型为SNMP，并进入测试类型视图 | type snmp | 必选
配置测试操作的目的地址 | destination ip ip-address | 必选 缺省情况下，未配置测试操作的目的IP地址
配置探测报文的源端口号 | source port port-number | 可选 缺省情况下，未指定源端口号
配置探测报文的源IP地址 | source ip ip-address | 可选 缺省情况下，未指定源IP地址 该命令指定的源IP地址必须是设备上接口的IP地址，且接口为up状态，否则测试将会失败
配置通用的可选参数 | 参见表1-22 | 可选

1.6.8 配置TCP测试

TCP测试用来测试客户端和服务器指定端口之间是否能够建立TCP连接，以及建立TCP连接所需的时间，从而判断服务器指定端口上提供的服务是否可用，及服务性能。

1. 配置准备

TCP测试需要NQA服务器和客户端配合才能完成。在TCP测试之前，需要在NQA服务器端配置TCP监听功能，配置方法请参见“1.3 配置NQA服务器”。

2. 配置TCP测试

表1-14 配置TCP测试

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入NQA测试组视图 | nqa entry admin-name operation-tag | -
配置测试类型为TCP，并进入测试类型视图 | type tcp | 必选
配置测试操作的目的地址 | destination ip ip-address | 必选 缺省情况下，未配置测试操作的目的IP地址 必须与NQA服务器上配置的监听服务的IP地址一致
配置测试操作的目的端口 | destination port port-number | 必选 缺省情况下，未配置测试操作的目的端口号 必须与NQA服务器上配置的监听服务的端口号一致
配置探测报文的源IP地址 | source ip ip-address | 可选 缺省情况下，未指定源IP地址 该命令指定的源IP地址必须是设备上接口的IP地址，且接口为up状态，否则测试将会失败
配置通用的可选参数 | 参见表1-22 | 可选

1.6.9 配置UDP-echo测试

UDP-echo测试可以用来测试客户端和服务器指定UDP端口之间的连通性以及UDP报文的往返时间。

1. 配置准备

UDP-echo测试需要NQA服务器和客户端配合才能完成。在进行UDP-echo测试之前，需要在NQA服务器端配置UDP监听功能，配置方法请参见“1.3 配置NQA服务器”。

2. 配置UDP-echo测试

表1-15 配置UDP-echo测试

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入NQA测试组视图 | nqa entry admin-name operation-tag | -
配置测试类型为UDP-echo，并进入测试类型视图 | type udp-echo | 必选
配置测试操作的目的地址 | destination ip ip-address | 必选 缺省情况下，未配置测试操作的目的IP地址 必须与NQA服务器上配置的监听服务的IP地址一致
配置测试操作的目的端口 | destination port port-number | 必选 缺省情况下，未配置测试操作的目的端口号 必须与NQA服务器上配置的监听服务的端口号一致
配置发送的探测报文的大小 | data-size size | 可选 缺省情况下，UDP-echo测试中发送的探测报文为100字节
配置发送的探测报文的填充字符串 | data-fill string | 可选 缺省情况下，探测报文的填充内容为十六进制数值00010203040506070809
配置探测报文的源端口号 | source port port-number | 可选 缺省情况下，未指定源端口号
配置探测报文的源IP地址 | source ip ip-address | 可选 缺省情况下，未指定源IP地址 该命令指定的源IP地址必须是设备上接口的IP地址，且接口为up状态，否则测试将会失败
配置通用的可选参数 | 参见表1-22 | 可选

1.6.10 配置Voice测试

建议不要对知名端口，即1～1023之间的端口，进行Voice测试，否则可能导致NQA测试失败或该知名端口对应的服务不可用。

Voice测试主要用来测试VoIP（Voice over IP，在IP网络上传送语音）网络情况，统计VoIP网络参数，以便用户根据网络情况进行相应的调整。

Voice测试的过程如下：

(1) 源端（NQA客户端）以一定的时间间隔向目的端（NQA服务器）发送G.711 A律、G.711 µ律或G.729 A律编码格式的语音数据包。

(2) 目的端收到语音数据包后，为它打上时间戳，并把带有时间戳的数据包发送给源端。

(3) 源端收到数据包后，根据数据包上的时间戳等信息，计算出时延抖动、单向延迟等网络参数，从而清晰地反映出网络状况。

Voice测试还可以计算出反映VoIP网络状况的语音参数值，包括：

l ICPIF（Calculated Planning Impairment Factor，计算计划损伤元素）：用来量化网络中语音数据的衰减，由单向网络延迟和丢包率等决定。数值越大，表明语音网络质量越差。

l MOS（Mean Opinion Scores，平均意见得分）：语音网络的质量得分。MOS值的范围为1～5，该值越高，表明语音网络质量越好。通过计算网络中语音数据的衰减——ICPIF值，可以估算出MOS值。

对语音质量的评价具有一定的主观性，不同用户对语音质量的容忍程度不同，因此，衡量语音质量时，需要考虑用户的主观因素。对语音质量容忍程度较强的用户，可以通过 advantage-factor 命令配置补偿因子，在计算ICPIF值时将减去该补偿因子，修正ICPIF和MOS值，以便在比较语音质量时综合考虑客观和主观因素。

1. 配置准备

Voice测试需要NQA服务器和客户端配合才能完成。进行Voice测试之前，必须保证NQA服务器端配置了UDP监听功能，配置方法请参见“ 1.3 配置NQA服务器 ”。

2. 配置Voice测试

表1-16 配置Voice测试

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入NQA测试组视图 | nqa entry admin-name operation-tag | -
配置测试类型为Voice，并进入测试类型视图 | type voice | 必选
配置测试操作的目的地址 | destination ip ip-address | 必选 缺省情况下，未配置测试操作的目的IP地址 测试操作的目的地址必须与NQA服务器上所配置的监听服务的IP地址一致
配置测试操作的目的端口 | destination port port-number | 必选 缺省情况下，未配置测试操作的目的端口号 测试操作的目的端口号必须与NQA服务器上所配置的监听服务的端口号一致
配置Voice测试的编码格式 | codec-type { g711a | g711u | g729a } | 可选 缺省情况下，语音编码格式为G.711 A律
配置用于计算MOS值和ICPIF值的补偿因子 | advantage-factor factor | 可选 缺省情况下，补偿因子取值为0
配置探测报文的源IP地址 | source ip ip-address | 可选 缺省情况下，未指定源IP地址 该命令指定的源IP地址必须是设备上接口的IP地址，且接口为up状态，否则测试将会失败
配置探测报文的源端口号 | source port port-number | 可选 缺省情况下，未指定源端口号
配置发送的探测报文的大小 | data-size size | 可选 缺省情况下，发送的探测报文大小与配置的编码格式有关，编码格式为 g.711a 和 g.711u 时缺省报文大小为172字节，g.729a 时为32字节
配置发送的探测报文的填充字符串 | data-fill string | 可选 缺省情况下，探测报文的填充内容为十六进制数值00010203040506070809
配置一次Voice探测中发送探测报文的个数 | probe packet-number packet-number | 可选 缺省情况下，一次Voice探测中发送1000个探测报文
配置Voice探测中发送探测报文的时间间隔 | probe packet-interval packet-interval | 可选 缺省情况下，Voice探测中发送探测报文的时间间隔为20毫秒
配置Voice测试中等待响应报文的超时时间 | probe packet-timeout packet-timeout | 可选 缺省情况下，Voice测试中等待响应报文的超时时间为5000毫秒
配置通用的可选参数 | 参见 表1-22 | 可选

一次Voice测试只能进行一次探测，而每次探测所发送的探测报文的个数由 probe packet-number 命令配置决定。

1.6.11 配置DLSw测试

DLSw测试主要用来测试DLSw设备的响应时间。

1. 配置准备

在进行DLSw测试之前，需要在对端设备上使能DLSw功能。

2. 配置DLSw测试

表1-17 配置DLSw测试

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入NQA测试组视图 | nqa entry admin-name operation-tag | -
配置测试类型为DLSw，并进入测试类型视图 | type dlsw | 必选
配置测试操作的目的地址 | destination ip ip-address | 必选 缺省情况下，未配置测试操作的目的IP地址
配置探测报文的源IP地址 | source ip ip-address | 可选 缺省情况下，未指定源IP地址 该命令指定的源IP地址必须是设备上接口的IP地址，且接口为up状态，否则测试将会失败
配置通用的可选参数 | 参见表1-22 | 可选


1.7 配置联动功能

联动功能是通过建立联动项，对当前所在测试组中的探测进行监测，当连续探测失败次数达到阈值时，就触发配置的动作类型。

表1-18 配置联动功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入NQA测试组视图 | nqa entry admin-name operation-tag | -
进入测试组测试类型视图 | type { dhcp | dlsw | dns | ftp | http | icmp-echo | snmp | tcp | udp-echo } | - UDP-jitter和Voice测试不支持联动功能
建立联动项 | reaction item-number checked-element probe-fail threshold-type consecutive consecutive-occurrences action-type trigger-only | 必选 缺省情况下，未配置联动项
退回系统视图 | quit | -
创建与NQA测试组中指定联动项关联的Track项 | track entry-number nqa entry admin-name operation-tag reaction item-number | 必选 缺省情况下，未配置Track项

l 联动项创建后，不能再通过 reaction 命令修改该联动项的内容。

l UDP-jitter和Voice测试不支持联动功能。


1.8 配置阈值告警功能

1. 配置准备

在配置阈值告警功能之前，需要执行以下操作：

l 通过 snmp-agent target-host 命令配置Trap消息的目的地址。snmp-agent target-host 命令的详细介绍，请参见“网络管理和监控命令参考”中的“SNMP”。

l 正确创建NQA测试组并配置相关参数。

2. 配置阈值告警功能

表1-19 配置阈值告警功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入NQA测试组视图 | nqa entry admin-name operation-tag | -
进入测试组测试类型视图 | type { dhcp | dlsw | dns | ftp | http | icmp-echo | snmp | tcp | udp-echo | udp-jitter | voice } | -
配置在指定条件下向网管服务器发送Trap消息 | reaction trap { probe-failure consecutive-probe-failures | test-complete | test-failure cumulate-probe-failures } | 根据实际需要，选择配置发送Trap消息的方法 缺省情况下，不向网管服务器发送Trap消息
创建监测探测持续时间的阈值告警组（除UDP-jitter和Voice测试外，均支持） | reaction item-number checked-element probe-duration threshold-type { accumulate accumulate-occurrences | average | consecutive consecutive-occurrences } threshold-value upper-threshold lower-threshold [ action-type { none | trap-only } ]
创建监测探测失败次数的阈值告警组（除UDP-jitter和Voice测试外，均支持） | reaction item-number checked-element probe-fail threshold-type { accumulate accumulate-occurrences | consecutive consecutive-occurrences } [ action-type { none | trap-only } ]
创建监测报文往返时延的阈值告警组（仅UDP-jitter和Voice测试支持） | reaction item-number checked-element rtt threshold-type { accumulate accumulate-occurrences | average } threshold-value upper-threshold lower-threshold [ action-type { none | trap-only } ]
创建监测每次测试中丢包数的阈值告警组（仅UDP-jitter和Voice测试支持） | reaction item-number checked-element packet-loss threshold-type accumulate accumulate-occurrences [ action-type { none | trap-only } ]
创建监测单向时延抖动的阈值告警组（仅UDP-jitter和Voice测试支持） | reaction item-number checked-element { jitter-ds | jitter-sd } threshold-type { accumulate accumulate-occurrences | average } threshold-value upper-threshold lower-threshold [ action-type { none | trap-only } ]
创建监测单向时延的阈值告警组（仅UDP-jitter和Voice测试支持） | reaction item-number checked-element { owd-ds | owd-sd } threshold-value upper-value lower-value
创建监测Voice测试ICPIF值的阈值告警组（仅Voice测试支持） | reaction item-number checked-element icpif threshold-value upper-threshold lower-threshold [ action-type { none | trap-only } ]
创建监测Voice测试MOS值的阈值告警组（仅Voice测试支持） | reaction item-number checked-element mos threshold-value upper-threshold lower-threshold [ action-type { none | trap-only } ]

l DNS测试不支持发送Trap消息，即对于DNS测试，触发动作只能配置为 none。

l 在Voice测试类型视图下执行 reaction trap 命令时，只支持 reaction trap test-complete。


1.9 配置NQA统计功能

NQA将在指定时间间隔内完成的NQA测试归为一组，计算该组测试结果的统计值，这些统计值构成一个统计组。通过 display nqa statistics 命令可以显示该统计组的信息。通过 statistics interval 命令可以设置统计的时间间隔。

当保留的统计组数目达到最大值时，如果形成新的统计组，保存时间最久的统计组将被删除。通过 statistics max-group 命令可以设置保留的最大统计组个数。

指定时间间隔内最后一次测试结束后，形成一个统计组。统计组具有老化功能，即统计组保存一定时间后，将被删除。通过 statistics hold-time 命令可以设置统计组的保留时间。

表1-20 配置NQA统计功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入NQA测试组视图 | nqa entry admin-name operation-tag | -
进入测试组测试类型视图 | type { dlsw | dns | ftp | http | icmp-echo | snmp | tcp | udp-echo | udp-jitter | voice } | -
配置对测试结果进行统计的时间间隔 | statistics interval interval | 可选 缺省情况下，对测试结果进行统计的时间间隔为60分钟
配置能够保留的最大统计组个数 | statistics max-group number | 可选 缺省情况下，能够保留的最大统计组数为2 最大统计组个数为0时，不进行统计
配置统计组的保留时间 | statistics hold-time hold-time | 可选 缺省情况下，统计组的保留时间为120分钟

l DHCP测试不支持配置NQA统计功能。

l 如果通过 frequency 命令指定连续两次测试开始时间的时间间隔为0，则不生成统计组信息。


1.10 配置NQA历史记录功能

开启NQA测试组的历史记录保存功能后，系统将记录NQA测试的历史信息，通过 display nqa history 命令可以查看该测试组的历史记录信息。

通过本配置任务还可以指定：

l 历史记录的保存时间：历史记录保存时间达到配置的值后，将删除该历史记录。

l 一个测试组中能够保存的最大历史记录个数：如果历史记录个数超过设定的最大数目，则最早的历史记录将会被删除。

表1-21 配置NQA历史记录功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入NQA测试组视图 | nqa entry admin-name operation-tag | -
进入测试组测试类型视图 | type { dhcp | dlsw | dns | ftp | http | icmp-echo | snmp | tcp | udp-echo | udp-jitter | voice } | -
开启NQA测试组的历史记录保存功能 | history-record enable | 必选 缺省情况下，NQA测试组的历史记录保存功能处于关闭状态
配置NQA测试组中历史记录的保存时间 | history-record keep-time keep-time | 可选 缺省情况下，NQA测试组中历史记录的保存时间为120分钟
配置在一个测试组中能够保存的最大历史记录个数 | history-record number number | 可选 缺省情况下，一个测试组中能够保存的最大历史记录个数为50


1.11 配置NQA测试组通用可选参数

NQA测试组的通用可选参数，只对该测试组中的测试有效。

除特别说明外，所有测试类型都可以配置通用可选参数，可以根据实际情况选择配置测试组的参数。

表1-22 配置NQA测试组的通用可选参数

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入NQA测试组视图 | nqa entry admin-name operation-tag | -
进入测试组测试类型视图 | type { dhcp | dlsw | dns | ftp | http | icmp-echo | snmp | tcp | udp-echo | udp-jitter | voice } | -
配置测试组的描述字符串 | description text | 可选 缺省情况下，测试组没有描述字符串
配置测试组连续两次测试开始时间的时间间隔 | frequency interval | 可选 缺省情况下，测试组连续两次测试开始时间的时间间隔为0毫秒，即只进行一次测试 如果到达 frequency 指定的时间间隔时，上次测试尚未完成，则不启动新一轮测试
配置一次NQA测试中进行探测的次数 | probe count times | 可选 缺省情况下，一次测试中的探测次数为1次 Voice测试中探测次数只能为1，不支持该命令
配置NQA探测超时时间 | probe timeout timeout | 可选 缺省情况下，探测的超时时间为3000毫秒 UDP-jitter测试不能配置该参数
配置探测报文在网络中可以经过的最大跳数 | ttl value | 可选 缺省情况下，探测报文在网络中可以经过的最大跳数为20跳 DHCP测试不能配置该参数
配置NQA探测报文IP报文头中服务类型域的值 | tos value | 可选 缺省情况下，NQA探测报文IP报文头中服务类型域的值为0 DHCP测试不能配置该参数
启动路由表旁路功能 | route-option bypass-route | 可选 缺省情况下，路由表旁路功能处于关闭状态 DHCP测试不能配置该参数


1.12 调度NQA测试组

通过本配置，可以设置测试组进行测试的启动时间和持续时间。启动时间取值可以是具体的时间值和 now，now 表示立即启动测试；持续时间取值可以是具体的时间值和 forever，forever 表示一直进行测试，直到用户通过 undo nqa schedule 命令手动停止测试。

系统时间在<启动时间>到<启动时间＋持续时间>范围内时，测试组进行测试。执行 nqa schedule 命令时，如果系统时间尚未到达启动时间，则到达启动时间后，启动测试；如果系统时间在启动时间～启动时间＋持续时间之间，则立即启动测试；如果系统时间已经超过启动时间＋持续时间，则不会启动测试。通过 display clock 命令可以查看系统的当前时间。

1. 配置准备

在调度NQA测试组之前，需要保证：

l 测试类型相应的测试参数配置完整；

l 对于需要与NQA服务器配合的测试类型，已经完成NQA服务器端的配置。

2. 调度NQA测试组

表1-23 调度NQA测试组

操作 | 命令 | 说明
进入系统视图 | system-view | -
调度NQA测试组 | nqa schedule admin-name operation-tag start-time { hh:mm:ss [ yyyy/mm/dd ] | now } lifetime { lifetime | forever } | 必选
配置处于测试状态的NQA测试的最大个数 | nqa agent max-concurrent number | 可选 缺省情况下，设备允许配置处于测试状态的NQA测试的最大个数为2

l 测试组被调度后就不能再进入该测试组视图和测试类型视图。

l 对于已启动的测试组或已经完成测试的测试组，不受系统时间调整的影响，只有等待测试的测试组受系统时间调整的影响。


1.13 NQA显示和维护

在完成上述配置后，在任意视图下执行 display 命令可以显示配置后NQA的运行情况，通过查看显示信息验证配置的效果。

表1-24 NQA显示和维护

操作 | 命令
显示NQA测试组的历史记录 | display nqa history [ admin-name operation-tag ] [ | { begin | exclude | include } regular-expression ]
显示NQA阈值告警功能的当前监测结果 | display nqa reaction counters [ admin-name operation-tag [ item-number ] ] [ | { begin | exclude | include } regular-expression ]
显示最近一次NQA测试的结果 | display nqa result [ admin-name operation-tag ] [ | { begin | exclude | include } regular-expression ]
显示NQA测试的统计信息 | display nqa statistics [ admin-name operation-tag ] [ | { begin | exclude | include } regular-expression ]
显示服务器的状态信息 | display nqa server status [ | { begin | exclude | include } regular-expression ]


1.14 NQA典型配置举例

1.14.1 ICMP-echo测试配置举例

1. 组网需求

使用NQA的ICMP-echo测试功能，测试本端（Device A）发送的报文是否可以经过指定的下一跳设备（Device C）到达指定的目的端（Device B），以及报文的往返时间。

2. 组网图

图1-3 ICMP-echo测试组网图

3. 配置步骤

进行下面的配置之前，需要确保各设备之间路由可达。

# 创建ICMP-echo类型的NQA测试组，并配置测试操作的目的地址为10.2.2.2。

<DeviceA> system-view

[DeviceA] nqa entry admin test

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

[DeviceA-nqa-admin-test-icmp-echo] destination ip 10.2.2.2

# 配置下一跳地址为10.1.1.2，以便测试报文经过指定的下一跳设备（Device C）到达目的端，而不是通过Device D到达目的端。

[DeviceA-nqa-admin-test-icmp-echo] next-hop 10.1.1.2

# 配置可选参数：一次NQA测试中探测的次数为10，探测的超时时间为500毫秒，测试组连续两次测试开始时间的时间间隔为5000毫秒。

[DeviceA-nqa-admin-test-icmp-echo] probe count 10

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

[DeviceA-nqa-admin-test-icmp-echo] frequency 5000

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

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

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

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

# 启动ICMP-echo测试操作。

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

# 测试执行一段时间后，停止ICMP-echo测试操作。

[DeviceA] undo nqa schedule admin test

# 显示ICMP-echo测试中最后一次测试的结果。

[DeviceA] display nqa result admin test

NQA entry (admin admin, tag test) test results:

Destination IP address: 10.2.2.2

Send operation times: 10 Receive response times: 10

Min/Max/Average round trip time: 2/5/3

Square-Sum of round trip time: 96

Last succeeded probe time: 2011-08-23 15:00:01.2

Extended results:

Packet loss in test: 0%

Failures due to timeout: 0

Failures due to disconnect: 0

Failures due to no connection: 0

Failures due to sequence error: 0

Failures due to internal error: 0

Failures due to other errors: 0

Packet(s) arrived late: 0

# 显示ICMP-echo测试的历史记录。

[DeviceA] display nqa history admin test

NQA entry (admin admin, tag test) history record(s):

Index Response Status Time

370 3 Succeeded 2011-08-23 15:00:01.2

369 3 Succeeded 2011-08-23 15:00:01.2

368 3 Succeeded 2011-08-23 15:00:01.2

367 5 Succeeded 2011-08-23 15:00:01.2

366 3 Succeeded 2011-08-23 15:00:01.2

365 3 Succeeded 2011-08-23 15:00:01.2

364 3 Succeeded 2011-08-23 15:00:01.1

363 2 Succeeded 2011-08-23 15:00:01.1

362 3 Succeeded 2011-08-23 15:00:01.1

361 2 Succeeded 2011-08-23 15:00:01.1

1.14.2 DHCP测试配置举例

1. 组网需求

使用NQA的DHCP测试功能，测试Device A从DHCP服务器Device B申请到IP地址所需的时间。

2. 组网图

图1-4 配置DHCP组网图

3. 配置步骤

# 创建DHCP类型的NQA测试组，并指定进行DHCP测试的接口为VLAN接口2。

<DeviceA> system-view

[DeviceA] nqa entry admin test

[DeviceA-nqa-admin-test] type dhcp

[DeviceA-nqa-admin-test-dhcp] operation interface vlan-interface 2

# 开启NQA测试组的历史记录保存功能。

[DeviceA-nqa-admin-test-dhcp] history-record enable

[DeviceA-nqa-admin-test-dhcp] quit

# 启动DHCP测试操作。

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

# 测试执行一段时间后，停止DHCP测试操作。

[DeviceA] undo nqa schedule admin test

# 显示DHCP测试中最后一次测试的结果。

[DeviceA] display nqa result admin test

NQA entry (admin admin, tag test) test results:

Send operation times: 1 Receive response times: 1

Min/Max/Average round trip time: 624/624/624

Square-Sum of round trip time: 389376

Last succeeded probe time: 2011-01-22 09:56:03.2

Extended results:

Packet loss in test: 0%

Failures due to timeout: 0

Failures due to disconnect: 0

Failures due to no connection: 0

Failures due to sequence error: 0

Failures due to internal error: 0

Failures due to other errors: 0

Packet(s) arrived late: 0

# 显示DHCP测试的历史记录。

[DeviceA] display nqa history admin test

NQA entry (admin admin, tag test) history record(s):

Index Response Status Time

1 624 Succeeded 2011-01-22 09:56:03.2

1.14.3 DNS测试配置举例

1. 组网需求

使用NQA的DNS测试功能，测试Device A是否可以通过指定的DNS服务器将域名host.com解析为IP地址，并测试域名解析所需的时间。

2. 组网图

图1-5 配置DNS组网图

3. 配置步骤

进行下面的配置之前，需要确保各设备之间路由可达。

# 创建DNS类型的NQA测试组。

<DeviceA> system-view

[DeviceA] nqa entry admin test

[DeviceA-nqa-admin-test] type dns

# 配置测试操作的目的地址为DNS服务器的IP地址10.2.2.2，要解析的域名为host.com。

[DeviceA-nqa-admin-test-dns] destination ip 10.2.2.2

[DeviceA-nqa-admin-test-dns] resolve-target host.com

# 开启NQA测试组的历史记录保存功能。

[DeviceA-nqa-admin-test-dns] history-record enable

[DeviceA-nqa-admin-test-dns] quit

# 启动DNS测试操作。

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

# 测试执行一段时间后，停止DNS测试操作。

[DeviceA] undo nqa schedule admin test

# 显示DNS测试中最后一次测试的结果。

[DeviceA] display nqa result admin test

NQA entry (admin admin, tag test) test results:

Destination IP address: 10.2.2.2

Send operation times: 1 Receive response times: 1

Min/Max/Average round trip time: 62/62/62

Square-Sum of round trip time: 3844

Last succeeded probe time: 2011-01-23 10:49:37.3

Extended results:

Packet loss in test: 0%

Failures due to timeout: 0

Failures due to disconnect: 0

Failures due to no connection: 0

Failures due to sequence error: 0

Failures due to internal error: 0

Failures due to other errors: 0

Packet(s) arrived late: 0

# 显示DNS测试的历史记录。

[DeviceA] display nqa history admin test

NQA entry (admin admin, tag test) history record(s):

Index Response Status Time

1 62 Succeeded 2011-01-23 10:49:37.3

1.14.4 FTP测试配置举例

1. 组网需求

使用NQA的FTP测试功能，测试Device A是否可以和指定的FTP服务器Device B建立连接，以及往FTP服务器上传一个文件的时间。登录FTP服务器的用户名为admin，密码为systemtest，要传送到服务器的文件名为config.txt。

2. 组网图

图1-6 配置FTP组网图

3. 配置步骤

进行下面的配置之前，需要确保各设备之间路由可达。

# 创建FTP类型的NQA测试组。

<DeviceA> system-view

[DeviceA] nqa entry admin test

[DeviceA-nqa-admin-test] type ftp

# 配置测试操作的目的地址为FTP服务器的IP地址10.2.2.2。

[DeviceA-nqa-admin-test-ftp] destination ip 10.2.2.2

# 配置探测报文的源IP地址为10.1.1.1。

[DeviceA-nqa-admin-test-ftp] source ip 10.1.1.1

# 配置登录FTP服务器的用户名为admin，密码为systemtest。

[DeviceA-nqa-admin-test-ftp] username admin

[DeviceA-nqa-admin-test-ftp] password systemtest

# 配置测试执行的操作为向FTP服务器上传文件config.txt。

[DeviceA-nqa-admin-test-ftp] operation put

[DeviceA-nqa-admin-test-ftp] filename config.txt

# 开启NQA测试组的历史记录保存功能。

[DeviceA-nqa-admin-test-ftp] history-record enable

[DeviceA-nqa-admin-test-ftp] quit

# 启动FTP测试操作。

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

# 测试执行一段时间后，停止FTP测试操作。

[DeviceA] undo nqa schedule admin test

# 显示FTP测试中最后一次测试的结果。

[DeviceA] display nqa result admin test

NQA entry (admin admin, tag test) test results:

Destination IP address: 10.2.2.2

Send operation times: 1 Receive response times: 1

Min/Max/Average round trip time: 173/173/173

Square-Sum of round trip time: 29929

Last succeeded probe time: 2011-01-22 10:07:28.6

Extended results:

Packet loss in test: 0%

Failures due to timeout: 0

Failures due to disconnect: 0

Failures due to no connection: 0

Failures due to sequence error: 0

Failures due to internal error: 0

Failures due to other errors: 0

Packet(s) arrived late: 0

# 显示FTP测试的历史记录。

[DeviceA] display nqa history admin test

NQA entry (admin admin, tag test) history record(s):

Index Response Status Time

1 173 Succeeded 2011-01-22 10:07:28.6

1.14.5 HTTP测试配置举例

1. 组网需求

使用NQA的HTTP测试功能，测试是否可以和指定的HTTP服务器之间建立连接，以及从HTTP服务器获取数据的时间。

2. 组网图

图1-7 HTTP测试组网图

3. 配置步骤

进行下面的配置之前，需要确保各设备之间路由可达。

# 创建HTTP类型的NQA测试组。

<DeviceA> system-view

[DeviceA] nqa entry admin test

[DeviceA-nqa-admin-test] type http

# 配置测试操作的目的地址为HTTP服务器的IP地址10.2.2.2。

[DeviceA-nqa-admin-test-http] destination ip 10.2.2.2

# 配置HTTP测试的操作方式为get操作。（get操作为缺省操作方式，因此，可以不执行本配置）

[DeviceA-nqa-admin-test-http] operation get

# 配置HTTP测试访问的网址为/index.htm。

[DeviceA-nqa-admin-test-http] url /index.htm

# 配置HTTP测试使用的版本为1.0。（缺省情况下使用的版本为1.0，因此，可以不执行本配置）

[DeviceA-nqa-admin-test-http] http-version v1.0

# 开启NQA测试组的历史记录保存功能。

[DeviceA-nqa-admin-test-http] history-record enable

[DeviceA-nqa-admin-test-http] quit

# 启动HTTP测试操作。

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

# 测试执行一段时间后，停止HTTP测试操作。

[DeviceA] undo nqa schedule admin test

# 显示HTTP测试中最后一次测试的结果。

[DeviceA] display nqa result admin test

NQA entry (admin admin, tag test) test results:

Destination IP address: 10.2.2.2

Send operation times: 1 Receive response times: 1

Min/Max/Average round trip time: 64/64/64

Square-Sum of round trip time: 4096

Last succeeded probe time: 2011-01-22 10:12:47.9

Extended results:

Packet loss in test: 0%

Failures due to timeout: 0

Failures due to disconnect: 0

Failures due to no connection: 0

Failures due to sequence error: 0

Failures due to internal error: 0

Failures due to other errors: 0

Packet(s) arrived late: 0

# 显示HTTP测试的历史记录。

[DeviceA] display nqa history admin test

NQA entry (admin admin, tag test) history record(s):

Index Response Status Time

1 64 Succeeded 2011-01-22 10:12:47.9

1.14.6 UDP-jitter测试配置举例

1. 组网需求

使用NQA的UDP-jitter测试功能，测试本端（Device A）和指定目的端（Device B）的端口9000之间传送报文的时延抖动。

2. 组网图

图1-8 UDP-jitter测试组网图

3. 配置步骤

进行下面的配置之前，需要确保各设备之间路由可达。

(1) 配置Device B

# 使能NQA服务器，配置监听的IP地址为10.2.2.2，UDP端口号为9000。

<DeviceB> system-view

[DeviceB] nqa server enable

[DeviceB] nqa server udp-echo 10.2.2.2 9000

(2) 配置Device A

# 创建UDP-jitter类型的NQA测试组。

<DeviceA> system-view

[DeviceA] nqa entry admin test

[DeviceA-nqa-admin-test] type udp-jitter

# 配置测试操作的目的地址为10.2.2.2，目的端口号为9000。

[DeviceA-nqa-admin-test-udp-jitter] destination ip 10.2.2.2

[DeviceA-nqa-admin-test-udp-jitter] destination port 9000

# 配置可选参数：测试组连续两次测试开始时间的时间间隔为1000毫秒。

[DeviceA-nqa-admin-test-udp-jitter] frequency 1000

[DeviceA-nqa-admin-test-udp-jitter] quit

# 启动UDP-jitter测试操作。

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

# 测试执行一段时间后，停止UDP-jitter测试操作。

[DeviceA] undo nqa schedule admin test

# 显示UDP-jitter测试中最后一次测试的结果。

[DeviceA] display nqa result admin test

NQA entry (admin admin, tag test) test results:

Destination IP address: 10.2.2.2

Send operation times: 10 Receive response times: 10

Min/Max/Average round trip time: 15/32/17

Square-Sum of round trip time: 3235

Last succeeded probe time: 2011-01-29 13:56:17.6

Extended results:

Packet loss in test: 0%

Failures due to timeout: 0

Failures due to disconnect: 0

Failures due to no connection: 0

Failures due to sequence error: 0

Failures due to internal error: 0

Failures due to other errors: 0

Packet(s) arrived late: 0

UDP-jitter results:

RTT number: 10

Min positive SD: 4 Min positive DS: 1

Max positive SD: 21 Max positive DS: 28

Positive SD number: 5 Positive DS number: 4

Positive SD sum: 52 Positive DS sum: 38

Positive SD average: 10 Positive DS average: 10

Positive SD square sum: 754 Positive DS square sum: 460

Min negative SD: 1 Min negative DS: 6

Max negative SD: 13 Max negative DS: 22

Negative SD number: 4 Negative DS number: 5

Negative SD sum: 38 Negative DS sum: 52

Negative SD average: 10 Negative DS average: 10

Negative SD square sum: 460 Negative DS square sum: 754

One way results:

Max SD delay: 15 Max DS delay: 16

Min SD delay: 7 Min DS delay: 7

Number of SD delay: 10 Number of DS delay: 10

Sum of SD delay: 78 Sum of DS delay: 85

Square sum of SD delay: 666 Square sum of DS delay: 787

SD lost packet(s): 0 DS lost packet(s): 0

Lost packet(s) for unknown reason: 0

# 显示UDP-jitter测试的统计结果。

[DeviceA] display nqa statistics admin test

NQA entry (admin admin, tag test) test statistics:

NO. : 1

Destination IP address: 10.2.2.2

Start time: 2011-01-29 13:56:14.0

Life time: 47 seconds

Send operation times: 410 Receive response times: 410

Min/Max/Average round trip time: 1/93/19

Square-Sum of round trip time: 206176

Extended results:

Packet loss in test: 0%

Failures due to timeout: 0

Failures due to disconnect: 0

Failures due to no connection: 0

Failures due to sequence error: 0

Failures due to internal error: 0

Failures due to other errors: 0

Packet(s) arrived late: 0

UDP-jitter results:

RTT number: 410

Min positive SD: 3 Min positive DS: 1

Max positive SD: 30 Max positive DS: 79

Positive SD number: 186 Positive DS number: 158

Positive SD sum: 2602 Positive DS sum: 1928

Positive SD average: 13 Positive DS average: 12

Positive SD square sum: 45304 Positive DS square sum: 31682

Min negative SD: 1 Min negative DS: 1

Max negative SD: 30 Max negative DS: 78

Negative SD number: 181 Negative DS number: 209

Negative SD sum: 181 Negative DS sum: 209

Negative SD average: 13 Negative DS average: 14

Negative SD square sum: 46994 Negative DS square sum: 3030

One way results:

Max SD delay: 46 Max DS delay: 46

Min SD delay: 7 Min DS delay: 7

Number of SD delay: 410 Number of DS delay: 410

Sum of SD delay: 3705 Sum of DS delay: 3891

Square sum of SD delay: 45987 Square sum of DS delay: 49393

SD lost packet(s): 0 DS lost packet(s): 0

Lost packet(s) for unknown reason: 0

display nqa history 命令的显示信息无法反映UDP-jitter测试的结果，如果想了解UDP-jitter测试的结果，建议通过 display nqa result 命令查看最近一次NQA测试的结果，或通过 display nqa statistics 命令查看NQA测试的统计信息。

1.14.7 SNMP测试配置举例

1. 组网需求

使用NQA的SNMP测试功能，测试从Device A发出一个SNMP协议查询报文到收到SNMP agent（Device B）响应报文所用的时间。

2. 组网图

图1-9 SNMP配置测试组网图

3. 配置步骤

进行下面的配置之前，需要确保各设备之间路由可达。

(1) 配置SNMP agent（Device B）

# 启动SNMP agent服务，设置SNMP版本为all、只读团体名为public、读写团体名为private。

<DeviceB> system-view

[DeviceB] snmp-agent sys-info version all

[DeviceB] snmp-agent community read public

[DeviceB] snmp-agent community write private

(2) 配置Device A

# 创建SNMP类型的测试组，并配置测试操作的目的地址为SNMP agent的IP地址10.2.2.2。

<DeviceA> system-view

[DeviceA] nqa entry admin test

[DeviceA-nqa-admin-test] type snmp

[DeviceA-nqa-admin-test-snmp] destination ip 10.2.2.2

# 开启NQA测试组的历史记录保存功能。

[DeviceA-nqa-admin-test-snmp] history-record enable

[DeviceA-nqa-admin-test-snmp] quit

# 启动测试操作。

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

# 测试执行一段时间后，停止SNMP测试操作。

[DeviceA] undo nqa schedule admin test

# 显示SNMP测试中最后一次测试的结果。

[DeviceA] display nqa result admin test

NQA entry (admin admin, tag test) test results:

Destination IP address: 10.2.2.2

Send operation times: 1 Receive response times: 1

Min/Max/Average round trip time: 50/50/50

Square-Sum of round trip time: 2500

Last succeeded probe time: 2011-01-22 10:24:41.1

Extended results:

Packet loss in test: 0%

Failures due to timeout: 0

Failures due to disconnect: 0

Failures due to no connection: 0

Failures due to sequence error: 0

Failures due to internal error: 0

Failures due to other errors: 0

Packet(s) arrived late: 0

# 显示SNMP测试的历史记录。

[DeviceA] display nqa history admin test

NQA entry (admin admin, tag test) history record(s):

Index Response Status Time

1 50 Timeout 2011-01-22 10:24:41.1

1.14.8 TCP测试配置举例

1. 组网需求

使用NQA的TCP测试功能，测试本端（Device A）和指定目的端（Device B）的端口9000之间建立TCP连接所需的时间。

2. 组网图

图1-10 TCP测试组网图

3. 配置步骤

进行下面的配置之前，需要确保各设备之间路由可达。

(1) 配置Device B

# 使能NQA服务器，配置监听的IP地址为10.2.2.2，TCP端口号为9000。

<DeviceB> system-view

[DeviceB] nqa server enable

[DeviceB] nqa server tcp-connect 10.2.2.2 9000

(2) 配置Device A

# 创建TCP类型的测试组。

<DeviceA> system-view

[DeviceA] nqa entry admin test

[DeviceA-nqa-admin-test] type tcp

# 配置测试操作的目的地址为10.2.2.2，目的端口号为9000。

[DeviceA-nqa-admin-test-tcp] destination ip 10.2.2.2

[DeviceA-nqa-admin-test-tcp] destination port 9000

# 开启NQA测试组的历史记录保存功能。

[DeviceA-nqa-admin-test-tcp] history-record enable

[DeviceA-nqa-admin-test-tcp] quit

# 启动测试操作。

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

# 测试执行一段时间后，停止TCP测试操作。

[DeviceA] undo nqa schedule admin test

# 显示TCP测试中最后一次测试的结果。

[DeviceA] display nqa result admin test

NQA entry (admin admin, tag test) test results:

Destination IP address: 10.2.2.2

Send operation times: 1 Receive response times: 1

Min/Max/Average round trip time: 13/13/13

Square-Sum of round trip time: 169

Last succeeded probe time: 2011-01-22 10:27:25.1

Extended results:

Packet loss in test: 0%

Failures due to timeout: 0

Failures due to disconnect: 0

Failures due to no connection: 0

Failures due to sequence error: 0

Failures due to internal error: 0

Failures due to other errors: 0

Packet(s) arrived late: 0

# 显示TCP测试的历史记录。

[DeviceA] display nqa history admin test

NQA entry (admin admin, tag test) history record(s):

Index Response Status Time

1 13 Succeeded 2011-01-22 10:27:25.1

1.14.9 UDP-echo测试配置举例

1. 组网需求

使用NQA的UDP-echo测试功能，测试本端（Device A）和指定目的端（Device B）的端口8000之间UDP协议报文的往返时间。

2. 组网图

图1-11 UDP-echo测试组网图

3. 配置步骤

进行下面的配置之前，需要确保各设备之间路由可达。

(1) 配置Device B

# 使能NQA服务器，配置监听的IP地址为10.2.2.2，UDP端口号为8000。

<DeviceB> system-view

[DeviceB] nqa server enable

[DeviceB] nqa server udp-echo 10.2.2.2 8000

(2) 配置Device A

# 创建UDP-echo类型的测试组。

<DeviceA> system-view

[DeviceA] nqa entry admin test

[DeviceA-nqa-admin-test] type udp-echo

# 配置测试操作的目的地址为10.2.2.2，目的端口号为8000。

[DeviceA-nqa-admin-test-udp-echo] destination ip 10.2.2.2

[DeviceA-nqa-admin-test-udp-echo] destination port 8000

# 开启NQA测试组的历史记录保存功能。

[DeviceA-nqa-admin-test-udp-echo] history-record enable

[DeviceA-nqa-admin-test-udp-echo] quit

# 启动测试操作。

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

# 测试执行一段时间后，停止UDP-echo测试操作。

[DeviceA] undo nqa schedule admin test

# 显示UDP-echo测试中最后一次测试的结果。

[DeviceA] display nqa result admin test

NQA entry (admin admin, tag test) test results:

Destination IP address: 10.2.2.2

Send operation times: 1 Receive response times: 1

Min/Max/Average round trip time: 25/25/25

Square-Sum of round trip time: 625

Last succeeded probe time: 2011-01-22 10:36:17.9

Extended results:

Packet loss in test: 0%

Failures due to timeout: 0

Failures due to disconnect: 0

Failures due to no connection: 0

Failures due to sequence error: 0

Failures due to internal error: 0

Failures due to other errors: 0

Packet(s) arrived late: 0

# 显示UDP-echo测试的历史记录。

[DeviceA] display nqa history admin test

NQA entry (admin admin, tag test) history record(s):

Index Response Status Time

1 25 Succeeded 2011-01-22 10:36:17.9

1.14.10 Voice测试配置举例

1. 组网需求

使用NQA的Voice测试功能，测试本端（Device A）和指定的目的端（Device B）之间传送语音报文的时延抖动和网络语音质量参数。

2. 组网图

图1-12 Voice测试组网图

3. 配置步骤

进行下面的配置之前，需要确保各设备之间路由可达。

(1) 配置Device B

# 使能NQA服务器，配置监听的IP地址为10.2.2.2，UDP端口号为9000。

<DeviceB> system-view

[DeviceB] nqa server enable

[DeviceB] nqa server udp-echo 10.2.2.2 9000

(2) 配置Device A

# 创建Voice类型的NQA测试组。

<DeviceA> system-view

[DeviceA] nqa entry admin test

[DeviceA-nqa-admin-test] type voice

# 配置测试操作的目的地址为10.2.2.2，目的端口号为9000。

[DeviceA-nqa-admin-test-voice] destination ip 10.2.2.2

[DeviceA-nqa-admin-test-voice] destination port 9000

[DeviceA-nqa-admin-test-voice] quit

# 启动Voice测试操作。

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

# 测试执行一段时间后，停止Voice测试操作。

[DeviceA] undo nqa schedule admin test

# 显示Voice测试中最后一次测试的结果。

[DeviceA] display nqa result admin test

NQA entry (admin admin, tag test) test results:

Destination IP address: 10.2.2.2

Send operation times: 1000 Receive response times: 1000

Min/Max/Average round trip time: 31/1328/33

Square-Sum of round trip time: 2844813

Last succeeded probe time: 2011-01-13 09:49:31.1

Extended results:

Packet loss in test: 0%

Failures due to timeout: 0

Failures due to disconnect: 0

Failures due to no connection: 0

Failures due to sequence error: 0

Failures due to internal error: 0

Failures due to other errors: 0

Packet(s) arrived late: 0

Voice results:

RTT number: 1000

Min positive SD: 1 Min positive DS: 1

Max positive SD: 204 Max positive DS: 1297

Positive SD number: 257 Positive DS number: 259

Positive SD sum: 759 Positive DS sum: 1797

Positive SD average: 2 Positive DS average: 6

Positive SD square sum: 54127 Positive DS square sum: 1691967

Min negative SD: 1 Min negative DS: 1

Max negative SD: 203 Max negative DS: 1297

Negative SD number: 255 Negative DS number: 259

Negative SD sum: 759 Negative DS sum: 1796

Negative SD average: 2 Negative DS average: 6

Negative SD square sum: 53655 Negative DS square sum: 1691776

One way results:

Max SD delay: 343 Max DS delay: 985

Min SD delay: 343 Min DS delay: 985

Number of SD delay: 1 Number of DS delay: 1

Sum of SD delay: 343 Sum of DS delay: 985

Square sum of SD delay: 117649 Square sum of DS delay: 970225

SD lost packet(s): 0 DS lost packet(s): 0

Lost packet(s) for unknown reason: 0

Voice scores:

MOS value: 4.38 ICPIF value: 0

# 显示Voice测试的统计结果。

[DeviceA] display nqa statistics admin test

NQA entry (admin admin, tag test) test statistics:

NO. : 1

Destination IP address: 10.2.2.2

Start time: 2011-06-13 09:45:37.8

Life time: 331 seconds

Send operation times: 4000 Receive response times: 4000

Min/Max/Average round trip time: 15/1328/32

Square-Sum of round trip time: 7160528

Extended results:

Packet loss in test: 0%

Failures due to timeout: 0

Failures due to disconnect: 0

Failures due to no connection: 0

Failures due to sequence error: 0

Failures due to internal error: 0

Failures due to other errors: 0

Packet(s) arrived late: 0

Voice results:

RTT number: 4000

Min positive SD: 1 Min positive DS: 1

Max positive SD: 360 Max positive DS: 1297

Positive SD number: 1030 Positive DS number: 1024

Positive SD sum: 4363 Positive DS sum: 5423

Positive SD average: 4 Positive DS average: 5

Positive SD square sum: 497725 Positive DS square sum: 2254957

Min negative SD: 1 Min negative DS: 1

Max negative SD: 360 Max negative DS: 1297

Negative SD number: 1028 Negative DS number: 1022

Negative SD sum: 1028 Negative DS sum: 1022

Negative SD average: 4 Negative DS average: 5

Negative SD square sum: 495901 Negative DS square sum: 5419

One way results:

Max SD delay: 359 Max DS delay: 985

Min SD delay: 0 Min DS delay: 0

Number of SD delay: 4 Number of DS delay: 4

Sum of SD delay: 1390 Sum of DS delay: 1079

Square sum of SD delay: 483202 Square sum of DS delay: 973651

SD lost packet(s): 0 DS lost packet(s): 0

Lost packet(s) for unknown reason: 0

Voice scores:

Max MOS value: 4.38 Min MOS value: 4.38

Max ICPIF value: 0 Min ICPIF value: 0

display nqa history 命令的显示信息无法反映Voice测试的结果，如果想了解Voice测试的结果，建议通过 display nqa result 命令查看最近一次NQA测试的结果，或通过 display nqa statistics 命令查看NQA测试的统计信息。

1.14.11 DLSw测试配置举例

1. 组网需求

使用NQA的DLSw测试功能，测试DLSw设备的响应时间。

2. 组网图

图1-13 DLSw测试组网图

3. 配置步骤

进行下面的配置之前，需要确保各设备之间路由可达。

# 创建DLSw类型的测试组，并配置测试操作的目的地址为10.2.2.2。

<DeviceA> system-view

[DeviceA] nqa entry admin test

[DeviceA-nqa-admin-test] type dlsw

[DeviceA-nqa-admin-test-dlsw] destination ip 10.2.2.2

# 开启NQA测试组的历史记录保存功能。

[DeviceA-nqa-admin-test-dlsw] history-record enable

[DeviceA-nqa-admin-test-dlsw] quit

# 启动测试操作。

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

# 测试执行一段时间后，停止DLSw测试操作。

[DeviceA] undo nqa schedule admin test

# 显示DLSw测试中最后一次测试的结果。

[DeviceA] display nqa result admin test

NQA entry (admin admin, tag test) test results:

Destination IP address: 10.2.2.2

Send operation times: 1 Receive response times: 1

Min/Max/Average round trip time: 19/19/19

Square-Sum of round trip time: 361

Last succeeded probe time: 2011-01-22 10:40:27.7

Extended results:

Packet loss in test: 0%

Failures due to timeout: 0

Failures due to disconnect: 0

Failures due to no connection: 0

Failures due to sequence error: 0

Failures due to internal error: 0

Failures due to other errors: 0

Packet(s) arrived late: 0

# 显示DLSw测试的历史记录。

[DeviceA] display nqa history admin test

NQA entry (admin admin, tag test) history record(s):

Index Response Status Time

1 19 Succeeded 2011-01-22 10:40:27.7

1.14.12 NQA联动配置举例

1. 组网需求

l Device A到达Device C的静态路由下一跳为Device B。

l 在Device A上通过静态路由、Track与NQA联动，对到达Device C的静态路由有效性进行实时判断。

2. 组网图

图1-14 NQA联动配置组网图

3. 配置步骤

(1) 按照图1-14 配置各接口的IP地址，具体配置过程略。

(2) 在Device A上配置静态路由，并与Track项关联

# 配置到达Device C的静态路由下一跳地址为10.2.1.1，并配置静态路由与Track项1关联。

<DeviceA> system-view

[DeviceA] ip route-static 10.1.1.2 24 10.2.1.1 track 1

(3) 在Device A上配置NQA测试组

# 创建管理员名为admin、操作标签为test的NQA测试组。

[DeviceA] nqa entry admin test

# 配置测试类型为ICMP-echo。

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

# 配置目的地址为10.2.1.1。

[DeviceA-nqa-admin-test-icmp-echo] destination ip 10.2.1.1

# 测试频率为100ms。

[DeviceA-nqa-admin-test-icmp-echo] frequency 100

# 配置联动项1（连续失败5次触发联动）。

[DeviceA-nqa-admin-test-icmp-echo] reaction 1 checked-element probe-fail threshold-type consecutive 5 action-type trigger-only

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

# 启动探测。

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

(4) 在Device A上配置Track项

# 配置Track项1，关联NQA测试组（管理员为admin，操作标签为test）的联动项1。

[DeviceA] track 1 nqa entry admin test reaction 1

(5) 验证配置结果

# 显示Device A上Track项的信息。

[DeviceA] display track all

Track ID: 1

Status: Positive

Notification delay: Positive 0, Negative 0 (in seconds)

Reference object:

NQA entry: admin test

Reaction: 1

# 显示Device A的路由表。

[DeviceA] display ip routing-table

Routing Tables: Public

Destinations : 5 Routes : 5

Destination/Mask Proto Pre Cost NextHop Interface

10.1.1.0/24 Static 60 0 10.2.1.1 Vlan3

10.2.1.0/24 Direct 0 0 10.2.1.2 Vlan3

10.2.1.2/32 Direct 0 0 127.0.0.1 InLoop0

127.0.0.0/8 Direct 0 0 127.0.0.1 InLoop0

127.0.0.1/32 Direct 0 0 127.0.0.1 InLoop0

以上显示信息表示，NQA测试的结果为下一跳地址10.2.1.1可达（Track项状态为Positive），配置的静态路由生效。

# 在Device B上删除VLAN接口3的IP地址。

<DeviceB> system-view

[DeviceB] interface vlan-interface 3

[DeviceB-Vlan-interface3] undo ip address

# 显示Device A上Track项的信息。

[DeviceA] display track all

Track ID: 1

Status: Negative

Notification delay: Positive 0, Negative 0 (in seconds)

Reference object:

NQA entry: admin test

Reaction: 1

# 显示Device A的路由表。

[DeviceA] display ip routing-table

Routing Tables: Public

Destinations : 4 Routes : 4

Destination/Mask Proto Pre Cost NextHop Interface

10.2.1.0/24 Direct 0 0 10.2.1.2 Vlan3

10.2.1.2/32 Direct 0 0 127.0.0.1 InLoop0

127.0.0.0/8 Direct 0 0 127.0.0.1 InLoop0

127.0.0.1/32 Direct 0 0 127.0.0.1 InLoop0

以上显示信息表示，NQA测试的结果为下一跳地址10.2.1.1不可达（Track项状态为Negative），配置的静态路由无效。


1 sFlow配置

sFlow功能中所指的“端口”包括二层以太网端口、三层以太网端口。三层以太网端口是指被配置为三层模式的以太网端口，有关以太网端口模式切换的操作，请参见“二层技术-以太网交换配置指导”中的“以太网端口配置”。

相关链接

  • 1.1 sFlow简介
  • 1.2 配置sFlow
  • 1.3 sFlow显示和维护
  • 1.4 sFlow典型配置举例
  • 1.5 常见配置错误举例
父主题： 08-sFlow配置


1.1 sFlow简介

1.1.1 sFlow简介

sFlow（Sampled Flow，采样流）是一种基于报文采样的网络流量监控技术，主要用于对网络流量进行统计分析。

如图1-1 所示，sFlow系统包含一个嵌入在设备中的sFlow Agent和远端的sFlow Collector。其中，sFlow Agent用于获取端口的统计信息和数据信息，将信息封装成sFlow报文，当sFlow报文缓冲区满或是在sFlow报文老化时间（老化时间为1秒）超时后，sFlow Agent会将sFlow报文发送到指定的sFlow Collector。sFlow Collector会对sFlow报文进行分析，并显示分析结果。

sFlow包括以下两种采样机制：

l Flow采样：基于数据包的采样，用于获取数据内容的相关信息。

l Counter采样：基于时间的端口统计信息采样，用于获取端口的统计信息。

图1-1 sFlow示意图

作为一种网络流量监控技术，sFlow具有如下优点：

l 支持在千兆或更高速的网络上精确地监控网络流量。

l 一个sFlow Collector能够监控多个sFlow Agent，具有良好的扩展性。

l sFlow Agent可以内嵌在设备中，不需要专门的sFlow Agent设备，节省了成本。

目前设备只支持sFlow Agent，不支持sFlow Collector。

1.1.2 sFlow的启动和运行过程

sFlow启动和运行的整个过程如下：

(1) 在设备上配置sFlow Agent和sFlow Collector信息。

(2) 在以太网端口上配置Flow采样后，sFlow Agent会收集采样报文，然后将采样报文封装为sFlow报文。具体配置可参见“1.2.2 配置Flow采样”。

(3) 在以太网端口上配置Counter采样后，sFlow Agent会定时查询该端口下的统计信息，然后将统计信息封装为sFlow报文。具体配置可参见“1.2.3 配置Counter采样”。


1.2 配置sFlow

在设备和sFlow Collector上完成sFlow相关配置后，sFlow功能才能正常工作。

l 在设备上必须配置sFlow Collector的IP地址、Flow采样和Counter采样。

l 在sFlow Collector上完成相关配置。

1.2.1 配置sFlow Agent和sFlow Collector信息

本配置用于设置设备的sFlow特性，使远端的sFlow Collector能够监控网络，并对sFlow报文进行分析。

表1-1 配置sFlow Agent和sFlow Collector信息

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置sFlow Agent的IP地址 | sflow agent { ip ip-address | ipv6 ipv6-address } | 可选 缺省情况下，未配置sFlow Agent的IP地址。设备会定期检查是否存在sFlow Agent的IP地址，如果不存在，设备会自动查找一个IPv4地址作为sFlow Agent的IP地址。自动查找的IP地址信息不会保存在设备上 需要注意的是： l 建议用户手工配置sFlow Agent的IP地址 l 在设备上只能配置一个sFlow Agent的IP地址
配置sFlow Collector的信息 | sflow collector collector-id { { ip ip-address | ipv6 ipv6-address } | datagram-size size | description text | port port-number | time-out seconds } * | 必选 缺省情况下，设备会预先创建一定数目的sFlow Collector。设备预先创建的sFlow Collector中的参数情况可以使用 display sflow 命令查看
配置sFlow报文的源地址 | sflow source { ip ip-address | ipv6 ipv6-address } * | 可选 缺省情况下，没有配置sFlow报文的源地址

1.2.2 配置Flow采样

表1-2 配置Flow采样

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入二层以太网端口视图或者三层以太网端口视图 | interface interface-type interface-number | -
设置Flow采样的采样模式 | sflow sampling-mode { determine | random } | 可选 缺省情况下，数据流信息的采样模式为 random
配置报文的采样间隔，即在 interval 个报文中抽取一个报文进行采样 | sflow sampling-rate interval | 必选 缺省情况下，不对报文进行采样
配置从原始报文的头开始，允许拷贝的最大字节数 | sflow flow max-header length | 可选 缺省情况下，从原始报文的头开始，允许拷贝的最大字节数为128字节。建议用户使用缺省配置
配置经过Flow采样后，sFlow Agent输出sFlow报文的目的sFlow Collector编号 | sflow flow collector collector-id | 必选 缺省情况下，Flow采样和sFlow Collector没有绑定关系，即没有指定目的sFlow Collector编号

目前本系列交换机不支持配置sFlow采样模式为 determine。

1.2.3 配置Counter采样

表1-3 配置Counter采样

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入二层以太网端口视图或者三层以太网端口视图 | interface interface-type interface-number | -
配置Counter采样的时间间隔 | sflow counter interval seconds | 必选 缺省情况下，不进行Counter采样
配置经过Counter采样后，sFlow Agent输出sFlow报文的目的sFlow Collector编号 | sflow counter collector collector-id | 必选 缺省情况下，Counter采样和sFlow Collector没有绑定关系，即没有指定目的sFlow Collector编号


1.3 sFlow显示和维护

在完成上述配置后，在任意视图下执行 display 命令，可以显示配置的sFlow特性运行情况，通过查看显示信息验证配置的效果。

表1-4 sFlow显示和维护

操作 | 命令
显示sFlow配置信息 | display sflow [ slot slot-number ] [ | { begin | exclude | include } regular-expression ]


1.4 sFlow典型配置举例

1.4.1 sFlow典型配置举例

1. 组网需求

Host A与远端服务器Server通过Switch相连。在Switch上运行sFlow Agent，并在Ethernet1/0/1上开启sFlow功能（包括Flow采样和Counter采样），使Agent能够对该端口的网络流量进行监控。Switch将sFlow报文通过Ethernet1/0/3发送给sFlow Collector，sFlow Collector再对sFlow报文进行分析并显示。

图1-2 sFlow典型配置组网图

2. 配置步骤

(1) 配置sFlow Agent和sFlow Collector信息

# 配置接口IP地址。

<Device> system-view

[Device] interface vlan-interface 1

[Device-Vlan-interface1] ip address 3.3.3.1 16

[Device-Vlan-interface1] quit

# 配置sFlow Agent的IP地址。

[Device] sflow agent ip 3.3.3.1

# 配置sFlow Collector信息：sFlow Collector的ID为2，IP地址为3.3.3.2，端口号保持缺省值，描述信息为netserver。

[Device] sflow collector 2 ip 3.3.3.2 description netserver

(2) 配置Counter采样

# 配置Counter采样时间间隔为120秒。

[Device] interface ethernet 1/0/1

[Device- Ethernet1/0/1] sflow counter interval 120

# 配置经过Counter采样后，sFlow Agent输出sFlow报文的目的sFlow Collector编号为2。

[Device-Ethernet1/0/1] sflow counter collector 2

(3) 配置Flow采样

# 配置采样模式为随机采样。报文的采样间隔为4000，即在4000个报文中抽取一个报文进行采样。

[Device-Ethernet1/0/1] sflow sampling-mode random

[Device-Ethernet1/0/1] sflow sampling-rate 4000

# 配置经过Flow采样后，sFlow Agent输出sFlow报文的目的sFlow Collector编号为2。

[Device-Ethernet1/0/1] sflow flow collector 2

# 显示sFlow的配置和运行信息。

[Device-Ethernet1/0/1] display sflow

sFlow Version: 5

sFlow Global Information:

Agent IP:3.3.3.1

Source Address:

Collector Information:

ID IP Port Aging Size Description

1 6343 0 1400

2 3.3.3.2 6543 N/A 1400 netserver

3 6343 0 1400

4 6343 0 1400

5 6343 0 1400

6 6343 0 1400

7 6343 0 1400

8 6343 0 1400

9 6343 0 1400

10 6343 0 1400

sFlow Port Information:

Interface CID Interval(s) FID MaxHLen Rate Mode Status

eth1/0/1 2 120 2 128 4000 Random Active

从上面的显示信息中可以看到开启sFlow功能的Ethernet1/0/1端口的处于“Active”状态，Counter采样时间间隔为120秒，Flow的采样间隔为4000，表示sFlow功能正在正常运行。


1.5 常见配置错误举例

1.5.1 远端的sFlow Collector无法收到sFlow报文

1. 故障现象

远端的sFlow Collector无法收到sFlow报文。

2. 故障分析

可能有以下几个原因：

l 没有配置sFlow Collector的IP地址；

l 端口没有配置sFlow采样，导致没有端口提供采样数据；

l 配置的sFlow Collector的IP地址和远端的sFlow Collector的IP地址不同，导致远端的sFlow Collector无法收到sFlow报文；

l 如果设备没有配置三层接口的IP地址，或配置了IP地址但是以此IP为源IP地址的UDP报文无法到达sFlow Collector；

l 设备和sFlow Collector之间的网络物理中断。

3. 故障排除

(1) 执行 display sflow 命令，查看当前的sFlow配置信息，检查是否为sFlow特性配置错误；

(2) 检查设备是否已经配置可以和sFlow Collector通讯的IP地址；

(3) 检查设备和sFlow Collector之间的物理连接是否正常。


1 IPC配置

相关链接

  • 1.1 IPC简介
  • 1.2 开启IPC性能统计功能
  • 1.3 IPC显示和维护
父主题： 09-IPC配置


1.1 IPC简介

1.1.1 IPC概述

IPC（Inter-process Communication，进程间通信）是不同节点间的一种可靠通讯机制。下面先介绍IPC模块的基本概念。

1. 节点

节点指的是支持IPC通信的物理实体，是一个独立的处理单元。在实际应用中，一般情况下，一个节点对应于一个CPU。

l 集中式设备只有一个CPU，因此，集中式设备对应一个节点；

l 分布式设备一般配有多个单板，每个单板都有一个CPU，甚至一块单板有多个CPU（比如业务CPU和OAM CPU等），因此，分布式设备是多个节点的集合；

l IRF是多台设备的互联形成的虚拟设备，每一个成员设备对应一个或多个节点，因此，IRF是多个节点的集合。

因此，在具体应用中，IPC主要应用于IRF和分布式设备，它为不同的设备之间、不同的单板之间提供了一种可靠的传输机制。

2. 链路

链路就是两个节点之间的连接。它可以存在于任意两个IPC节点之间，任意两个节点之间有且仅有一条链路用于收发报文。链路基于节点而存在，各节点间的链路是全连接结构。

链路在系统初始化时创建：节点启动时，会主动同其它节点进行握手，如果握手成功，会建立连接。

系统用链路状态来表示两个节点之间链路的连通情况。一个IPC节点可以有多条链路，每条链路都有对应的状态。

3. 通道

通道是不同节点的上层应用模块之间的通信接口。每个节点会给上层应用模块分配一个本地唯一的通道号来标志该模块。

上层应用模块的数据通过通道将数据发送给IPC模块，IPC模块通过底层的链路将数据发送给对端节点。节点、链路和通道之间的关系请参见图1-1。

图1-1 节点、链路和通道关系图

4. 报文发送方式

IPC有三种报文发送方式：单播、组播（广播被视为特殊的组播）和混播，每种发送方式都有对应的队列，上层应用模块可以根据需要选择其中的任何一种方式。

l 单播即单个节点对单个节点的发送方式。

l 组播即单个节点对多个节点的发送方式。当选择组播发送方式的时候，需要先创建一个组播组，组播报文会发送到这个组播组内的所有节点。一个应用模块可以创建多个组播组，组播组何时创建/删除以及组播组的成员由应用模块决定。

l 混播，顾名思义，即同时支持单播和组播的发送方式。


1.2 开启IPC性能统计功能

开启IPC性能统计功能后，系统将统计节点在指定时间段内（最近10秒、最近1分钟等）收发报文的情况，通过 display 命令可以查看这些信息。关闭性能统计开关后，将停止统计，统计数据将不再发生变化。此时，如果使用 display 命令，显示的将是开关关闭时刻的统计数据。

表1-1 开启IPC性能统计功能

操作 | 命令 | 说明
打开IPC性能统计开关 | ipc performance enable { node node-id | self-node } [ channel channel-id ] | 必选 缺省情况下，IPC性能统计开关是关闭的 该操作在用户视图下执行


1.3 IPC显示和维护

完成上述配置后，在任意视图下执行 display 命令可以显示IPC的运行情况，通过查看显示信息验证配置的效果。

在用户视图下，执行 reset 命令可以清除相关统计信息。

表1-2 IPC显示和维护

操作 | 命令
显示IPC节点信息 | display ipc node [ | { begin | exclude | include } regular-expression ]
显示节点的通道信息 | display ipc channel { node node-id | self-node } [ | { begin | exclude | include } regular-expression ]
显示节点的队列信息 | display ipc queue { node node-id | self-node } [ | { begin | exclude | include } regular-expression ]
显示节点的组播组信息 | display ipc multicast-group { node node-id | self-node } [ | { begin | exclude | include } regular-expression ]
显示节点的报文信息 | display ipc packet { node node-id | self-node } [ | { begin | exclude | include } regular-expression ]
显示节点的链路状态信息 | display ipc link { node node-id | self-node } [ | { begin | exclude | include } regular-expression ]
显示节点的性能统计信息 | display ipc performance { node node-id | self-node } [ channel channel-id ] [ | { begin | exclude | include } regular-expression ]
清除节点的性能统计信息 | reset ipc performance [ node node-id | self-node ] [ channel channel-id ]


1 PoE配置

相关链接

  • 1.1 PoE简介
  • 1.2 PoE配置任务简介
  • 1.3 使能PoE功能
  • 1.4 检测PD
  • 1.5 配置PoE功率
  • 1.6 配置PoE接口功率管理
  • 1.7 PoE监控功能
  • 1.8 通过PoE Profile配置PoE接口
  • 1.9 在线升级PSE处理软件
  • 1.10 PoE显示和维护
  • 1.11 PoE典型配置举例
  • 1.12 常见配置错误举例
父主题： 10-PoE配置


1.1 PoE简介

1.1.1 PoE概述

PoE（Power over Ethernet，以太网供电，又称远程供电）是指设备通过以太网电口，利用直通双绞线对外接PD（Powered Device，受电设备）进行远程供电。

1. PoE的优点

l 可靠：电源集中供电，备份方便；

l 连接简捷：网络终端不需外接电源，只需要一根网线；

l 标准：符合IEEE 802.3af标准，使用全球统一的电源接口；

l 应用前景广泛：可以用于IP电话、无线AP（Access Point，接入点）、便携设备充电器、刷卡机、网络摄像头、数据采集等。

2. PoE相关概念

PoE系统如图1-1 所示，包括PoE电源、PSE（Power Sourcing Equipment，供电设备）、PI（Power Interface，电源接口）和PD。

(1) PoE电源为整个PoE系统提供功率。

(2) PSE：直接给PD供电的设备。PSE分为内置（Endpoint）和外置（Midspan）两种：内置指的是PSE集成在设备内部，外置指的是PSE与设备相互独立。本系列设备PSE均采用内置方式，系统使用PSE ID来识别不同PSE，使用 display poe device 命令可以查看PSE ID和成员设备的对应关系。PSE支持的主要功能包括寻找、检测PD，对PD分类，并向其供电，进行功率管理，实时监控，检测与PD的连接是否断开等。

PSE ID的计算方法为：设备的成员编号×3＋1，例如：设备的成员编号为3，其PSE ID为3×3＋1＝10。

(3) PI：具备PoE供电能力的以太网端口，也称为PoE接口。

(4) PD：接受PSE供电的设备，如IP电话、无线AP（Access Point，接入点）、便携设备充电器、刷卡机、网络摄像头等。PD设备在接受PoE电源供电的同时，可以连接其它电源，进行电源冗余备份。

图1-1 PoE系统示意图

1.1.2 协议规范

与PoE相关的协议规范为：IEEE 802.3af。


1.2 PoE配置任务简介

配置PoE接口有两种方式：

l 通过命令行配置；

l 通过配置PoE Profile，并将PoE Profile应用到指定的PoE接口。

两种方式的作用一样，可以根据具体的需求选择：配置单独PoE接口时，一般采用命令行配置；而批量配置PoE接口时，一般采用PoE Profile配置。对于同一PoE接口下的同一PoE配置参数，只能选择一种方式进行配置（包括修改和删除）。

表1-1 PoE配置任务简介

配置任务 |  | 说明 | 详细配置
使能PoE功能 | 使能PoE接口的PoE功能 | 必选 | 1.3.1
检测PD | 使能非标准PD检测功能 | 可选 | 1.4.1
 | 配置PD断开的检测方式 | 可选 | 1.4.2
配置PoE功率 | 配置PoE接口的最大功率 | 可选 | 1.5.1
配置PoE接口功率管理 |  | 可选 | 1.6
PoE监控功能 | 监控PSE | 可选 | 1.7.1
 | 监控PD | 可选 设备给PD供电时会自动监控PD，不需要通过命令行来配置 | 1.7.2
通过PoE Profile配置PoE接口 | 定义PoE Profile的内容 | 可选 | 1.8.1
 | 应用PoE Profile | 可选 | 1.8.2
在线升级PSE处理软件 |  | 可选 | 1.9

l 在配置PoE功能前，请确保PoE电源和PSE已经处于正常工作状态，否则，可能无法进行PoE配置或者配置的PoE功能不能生效；

l 如果在设备启动过程中不慎关闭PoE电源，可能会导致PoE Profile中的PoE配置无法生效。


1.3 使能PoE功能

1.3.1 使能PoE接口的PoE功能

如果没有使能PoE接口的PoE功能，系统不会给PoE接口下挂的PD供电，也不会给PD预留功率。

使能PoE接口的PoE功能时，如果该PoE接口的加入不会导致PSE功率过载，则允许使能。否则，由该PoE接口是否使能PoE功率管理功能决定（PoE接口功率管理的详细介绍请参见 1.6 配置PoE接口功率管理 ）：

l 如果该PoE接口没有使能PoE功率管理功能，则不允许使能该PoE接口的PoE功能；

l 如果该PoE接口已经使能了PoE功率管理功能，则允许使能该PoE接口的PoE功能（使能后PD是否能够获得供电由其它因素决定，比如PoE接口的供电优先级）。

PoE接口远程供电有两种模式：

l 信号线供电模式：PSE使用3/5类双绞线中传输数据所用的线对（1、2、3、6）向PD传输数据的同时传输直流电。

l 空闲线供电模式：PSE使用3/5类双绞线中没有被使用的线对（4、5、7、8）向PD来传输直流电。

l PSE功率过载：当PSE上已经获得供电的端口的最大功率之和大于PSE最大功率时，系统将认为PSE功率过载（PSE最大功率由用户的配置决定）。

l PSE和PD必须使用相同的模式，才能正常供电。如果PSE和PD支持的供电模式不同（比如PSE不支持空闲线供电式，PD只支持空闲线供电），则需要转接才能给PD供电。

l 本系列设备PoE接口仅支持使用信号线供电模式为PD设备进行远程供电。

表1-2 使能PoE接口的PoE功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入PoE接口视图 | interface interface-type interface-number | -
使能PoE接口远程供电功能 | poe enable | 必选 缺省情况下，PoE接口远程供电功能为禁用状态
配置PoE接口连接PD的描述信息 | poe pd-description text | 可选 缺省情况下，PoE接口连接PD的描述信息为空，即没有描述信息


1.4 检测PD

1.4.1 使能非标准PD检测功能

PD设备分为标准PD和非标准PD，标准PD是指符合IEEE 802.3af标准的PD设备。通常情况下，PSE只能检测到标准PD，并为其供电。只有在使能PSE检测非标准PD功能后，PSE才能检测到非标准PD，并为其供电。

表1-3 使能PSE检测非标准PD功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
使能PSE检测非标准PD功能 | poe legacy enable pse pse-id | 必选 缺省情况下，PSE只能检测到标准PD，不能检测非标准PD

1.4.2 配置PD断开的检测方式

为了检测PD是否与PSE断开，PoE提供了两种检测方式：交流方式和直流方式。交流方式相对于直流方式比较省电。

表1-4 配置PD断开的检测方式

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置PD断开的检测方式 | poe disconnect { ac | dc } | 可选 缺省情况下，PD断开检测的方式为交流检测方式

在给PD供电过程中，若调整PD断开的检测方式，会导致连接的PD断电，请慎用！


1.5 配置PoE功率

1.5.1 配置PoE接口的最大功率

PoE接口的最大功率指的是PoE接口能够提供给下挂PD的最大功率。当PD要求的功率大于PoE接口的最大功率时，则不会给PD供电。

表1-5 通过命令行配置PoE接口

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入PoE接口视图 | interface interface-type interface-number | -
配置PoE接口的最大供电功率 | poe max-power max-power | 可选 缺省情况下，PoE接口最大供电功率为30000毫瓦


1.6 配置PoE接口功率管理

PD供电优先级取决于PoE接口的优先级。PoE接口的优先级按照高低顺序为：Critical、High和Low。PD能否得到供电要受PoE接口功率管理策略的控制。

所有PSE都执行相同的PoE接口功率管理策略。PSE对接入的PD设备进行供电时：

l 在没有使能PoE接口功率管理的情况下，如果PSE功率过载，则不对新接入的PD供电；

l 在使能PoE接口功率管理优先级策略的情况下，如果PSE功率过载，接入新的PD，将对优先级低的PD断电，保证优先级高的PD供电。

l 设备给每个PoE接口预设了19W的保护功率，以便适应PD设备的功率波动，从而防止由于PD的瞬间功率过大而导致PD断开。当接口所在PSE剩余功率小于19W，而且PoE接口没有配置优先级时，将不能给新增的PD供电；当接口所在PSE剩余功率小于19W，但PoE接口配置了优先级时，高优先级端口将抢占低优先级端口的功率，优先保证高优先级端口的正常工作。

l 如果已接入的PD功率突然增加，造成PSE功率过载时，将停止对连接在低优先级PoE接口上的PD的供电，以便保证给优先级高的PD供电。

当PSE剩余保证功率（PSE最大功率减去该PSE中优先级为Critical的PoE接口的最大功率，与PoE接口是否使能PoE功能无关）小于该PoE接口最大功率时，设置Critical优先级不成功；否则，该PoE接口优先级成功设为Critical，并将抢占部分低优先级PD的功率，被抢占的PD断电，但是这些PoE接口的配置不变。将某个PoE接口的优先级从Critical降为其它优先级，可能导致其它PoE接口的PD得到供电。

1. 配置准备

使能PoE接口远程供电功能。

2. 配置PoE接口功率管理

表1-6 配置PoE接口功率管理

操作 | 命令 | 说明
进入系统视图 | system-view | -
使能PoE接口功率管理优先级策略 | poe pd-policy priority | 必选 缺省情况下，没有使能PoE接口功率管理优先级策略
进入PoE接口视图 | interface interface-type interface-number | -
配置PoE接口供电优先级 | poe priority { critical | high | low } | 可选 缺省情况下，PoE接口供电优先级为 low


1.7 PoE监控功能

当使能PoE监控功能后，系统就会实时监控一些参数的值，当这些值超出限定范围时，系统会自动采取一些措施来进行自我保护。PoE监控功能包括对PoE电源、PSE和PD的监控以及对设备温度的监控。

1.7.1 监控PSE

当PSE在当前功率利用率首次超过或低于设置的功率阈值时，系统会发送Trap告警信息。

表1-7 配置PSE的功率告警阈值

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置PSE的功率告警阈值 | poe utilization-threshold utilization-threshold-value pse pse-id | 可选 缺省情况下，PSE的功率告警阈值为80%

1.7.2 监控PD

当PSE开始或终止给PD供电时，系统会发送Trap信息。


1.8 通过PoE Profile配置PoE接口

配置PoE接口有两种方式，两种方式的作用一样，可以根据具体的需求选择，具体方式为：

l 通过命令行配置。该方式通常用于对单个PoE端口的配置。

l 通过PoE Profile配置，并将PoE Profile应用到指定的PoE接口。该方式通常用于批量配置PoE接口，可以简化用户的操作。

PoE Profile是一组配置的集合，一个PoE Profile中可以配置多个PoE特性。在用大型网络中，将PoE Profile应用到多个PoE接口，则这些接口就具有相同的PoE特性；如果PD的接入接口变更，则把原接口上应用的PoE Profile应用到新的接入接口即可，不再需要重新逐条配置，从而方便了网管人员对PoE特性的配置。

设备支持创建多个PoE Profile，针对不同PD定义不同的PoE配置存放在不同的PoE Profile中，并在PD的接入接口应用相应的PoE Profile即可。

1.8.1 定义PoE Profile的内容

表1-8 定义PoE Profile的内容

操作 | 命令 | 说明
进入系统视图 | system-view | -
创建PoE Profile，并进入PoE Profile视图 | poe-profile profile-name [ index ] | 必选
使能PoE接口远程供电功能 | poe enable | 必选 缺省情况下，PoE接口远程供电功能处于禁用状态
配置PoE接口的最大供电功率 | poe max-power max-power | 可选 缺省情况下，PoE接口最大供电功率为30000毫瓦
配置PoE接口供电优先级 | poe priority { critical | high | low } | 可选 缺省情况下，PoE接口供电优先级为 low

l 如果PoE Profile已经应用，必须先取消PoE Profile的应用后，才能删除或修改该PoE Profile。

l 命令 poe max-power max-power 和 poe priority { critical | high | low }必须保证用同一种方式配置，即只能通过命令行配置或只能通过PoE Profile配置。

l 对于同一PoE接口下的同一PoE配置参数，只能选择一种方式进行配置（包括修改和删除），先配置的生效。如果对命令行已经配置过的参数再通过PoE Profile配置，则PoE Profile会应用失败；如果对PoE Profile已经配置过的参数再通过命令行配置，则命令行执行失败。必须先取消现有配置，新的配置才能成功。

1.8.2 应用PoE Profile

应用PoE Profile有两种方式：方式一是在系统视图下应用PoE Profile，方式二是在接口视图下应用PoE Profile。两种方式配置效果一样，后配置的生效。如果需要将PoE Profile应用到多个PoE接口，使用方式一更为简便。

表1-9 应用PoE Profile（方式一）

操作 | 命令 | 说明
进入系统视图 | system-view | -
将PoE Profile应用到指定一个或多个PoE接口 | apply poe-profile { index index | name profile-name } interface interface-range | 必选

表1-10 应用PoE Profile（方式二）

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入PoE接口视图 | interface interface-type interface-number | -
将PoE Profile应用到当前PoE接口 | apply poe-profile { index index | name profile-name } | 必选

PoE Profile可以应用于多个PoE接口，但一个PoE接口下只能应用一个PoE Profile。


1.9 在线升级PSE处理软件

用户可以通过以下操作在线升级PSE处理软件，在线升级指的是不用重启PSE就能完成升级。升级有两种模式：

l refresh模式，该模式是在PSE中原有处理软件的基础上对其进行升级更新。一般情况下使用refresh模式来升级PSE处理软件。

l full模式，该模式是将PSE中原有处理软件彻底删除，再重新装入。PSE处理软件被损坏的情况下（表现为所有的PoE命令执行不成功），可用full模式进行升级，使软件恢复。

如果PSE处理软件的升级过程因意外而中断（例如发生错误导致设备重启），重启后用full方式升级失败时，请将设备断电重启后再用full方式升级即可成功。升级后重启设备，新的PSE处理软件就会生效。

表1-11 在线升级PSE处理软件

操作 | 命令 | 说明
进入系统视图 | system-view | -
升级PSE处理软件 | poe update { full | refresh } filename pse pse-id | 必选


1.10 PoE显示和维护

在完成上述配置后，在任意视图下执行 display 命令可以显示配置后PoE的运行情况，通过查看显示信息验证配置的效果。

表1-12 PoE显示和维护

操作 | 命令
显示所有PSE的相关信息 | display poe device [ | { begin | exclude | include } regular-expression ]
显示设备指定PoE接口的供电状态 | display poe interface [ interface-type interface-number ] [ | { begin | exclude | include } regular-expression ]
显示PoE接口的功率信息 | display poe interface power [ interface-type interface-number ] [ | { begin | exclude | include } regular-expression ]
显示PSE信息 | display poe pse [ pse-id ] [ | { begin | exclude | include } regular-expression ]
显示PSE连接的所有PoE接口的供电状态 | display poe pse pse-id interface [ | { begin | exclude | include } regular-expression ]
显示PSE连接的PoE接口的功率信息 | display poe pse pse-id interface power [ | { begin | exclude | include } regular-expression ]
显示PoE Profile的配置和应用的所有信息 | display poe-profile [ index index | name profile-name ] [ | { begin | exclude | include } regular-expression ]
指定PoE接口当前生效的PoE Profile配置项和应用的所有信息 | display poe-profile interface interface-type interface-number [ | { begin | exclude | include } regular-expression ]


1.11 PoE典型配置举例

1. 组网需求

l Ethernet1/0/1、Ethernet1/0/2、Ethernet1/0/3接入IP电话。

l Ethernet1/0/11、Ethernet1/0/12接入AP设备。

l IP电话的供电优先级高于AP设备，当PSE功率过载时，优先给IP电话供电。

l Ethernet1/0/12下接的AP 2的功率最大不能超过9000毫瓦。

2. 组网图

图1-2 PoE组网图

3. 配置步骤

# 使能PoE接口Ethernet1/0/1、Ethernet1/0/2、Ethernet1/0/3的远程供电功能，并且供电优先级为critical。

<Sysname> system-view

[Sysname] interface ethernet 1/0/1

[Sysname-Ethernet1/0/1] poe enable

[Sysname-Ethernet1/0/1] poe priority critical

[Sysname-Ethernet1/0/1] quit

[Sysname] interface ethernet 1/0/2

[Sysname-Ethernet1/0/2] poe enable

[Sysname-Ethernet1/0/2] poe priority critical

[Sysname-Ethernet1/0/2] quit

[Sysname] interface ethernet 1/0/3

[Sysname-Ethernet1/0/3] poe enable

[Sysname-Ethernet1/0/3] poe priority critical

[Sysname-Ethernet1/0/3] quit

# 使能PoE接口Ethernet1/0/11和Ethernet1/0/12的远程供电功能，并配置PoE接口Ethernet1/0/12的最大供电功率为9000毫瓦。

[Sysname] interface ethernet 1/0/11

[Sysname-Ethernet1/0/11] poe enable

[Sysname-Ethernet1/0/11] quit

[Sysname] interface ethernet 1/0/12

[Sysname-Ethernet1/0/12] poe enable

[Sysname-Ethernet1/0/12] poe max-power 9000

配置完成后，IP电话和AP设备被供电，能够正常工作。


1.12 常见配置错误举例

1.12.1 配置PoE接口优先级为critical不成功

1. 原因分析

l PoE接口所在PSE剩余保证功率小于PoE接口的最大供电功率。

l PoE接口的优先级已经通过其他方式进行配置。

2. 解决方法

l 对于第一种情况可以通过增大PSE的最大供电功率来解决，或者在PSE剩余保证功率不可调整时减小PoE接口的最大供电功率。

l 对于第二种情况需先取消其他方式的配置。

1.12.2 应用PoE Profile到PoE接口不成功

1. 原因分析

l 该PoE Profile的某些配置项已经通过其他方式进行配置。

l 该PoE Profile的某些配置项不符合PoE接口的配置要求。

l 已经存在PoE Profile在该PoE接口的应用。

2. 解决方法

l 对于第一种情况，可以通过取消其他方式的配置来解决。

l 对于第二种情况，需修改该PoE Profile的某些配置项。

l 对于第三种情况，先取消其他PoE Profile在该PoE接口的应用。

1.12.3 参数合法的情况下输入交流电欠压阈值配置不成功

1. 原因分析

输入交流电欠压阈值大于或等于输入交流电过压阈值。

2. 解决方法

输入交流电欠压阈值必须小于输入交流电过压阈值。


1 集群管理配置

相关链接

  • 1.1 集群管理简介
  • 1.2 集群管理配置任务简介
  • 1.3 配置管理设备
  • 1.4 配置成员设备
  • 1.5 配置集群成员互访
  • 1.6 配置候选设备加入集群
  • 1.7 配置集群管理高级功能
  • 1.8 集群管理显示和维护
  • 1.9 集群管理典型配置举例
父主题： 11-集群管理配置


1.1 集群管理简介

随着网络规模的增加，网络边缘需要使用大量的接入设备，这使对这些设备的管理工作非常繁琐，同时要为这些设备逐一配置IP地址，在目前IP地址资源日益紧张的情况下无疑也是一种浪费，而集群管理则可以解决上述问题。

集群（Cluster）是指一组网络设备的集合，集群管理的主要目的就是解决大量分散的网络设备的集中管理问题，其具有以下优点：

l 节省公网IP地址。

l 简化配置管理任务。网络管理员只需在一台设备上配置公网IP地址就可实现对集群中所有设备的管理和维护，而无需登录到每台设备上进行配置。

l 提供拓扑发现和显示功能，有助于监视和调试网络。

l 可同时对多台设备进行软件升级和参数配置，且不受网络拓扑和距离限制。

1.1.1 集群角色

根据在集群中所处的地位和功能的不同，可把集群中的设备分为以下三种角色：

l 管理设备（Administrator）：在集群中对整个集群管理发挥接口作用的设备，也是集群中唯一配置公网IP地址的设备。每个集群必须（且只能）指定一个管理设备。对集群中的其它设备进行配置、管理和监控都必须通过管理设备来进行，管理设备通过收集相关信息来发现和确定候选设备。

l 成员设备（Member）：在集群中处于被管理状态的设备。

l 候选设备（Candidate）：指没有加入任何集群但具备集群能力、能够成为集群成员的设备。它与成员设备的区别在于：其拓扑信息已被管理设备收集到但尚未加入集群。

图1-1 集群典型组网图

如图1-1 所示，配置有公网IP地址并执行管理功能的设备就是管理设备，其它被管理的设备是成员设备，尚未加入任何集群但具备集群能力的设备是候选设备。由管理设备和成员设备共同组成了一个集群。

图1-2 集群角色转换示意图

如 图1-2 所示，各角色可按如下规则相互转换：

l 当在某候选设备上创建集群时，该设备就成为了这个集群的管理设备；管理设备只有在删除集群时才能恢复为候选设备。

l 当把某候选设备加入到集群中后，该设备便成为成员设备；当从集群中删除某成员设备后，该设备又恢复为候选设备。

1.1.2 集群工作原理

集群管理通过HGMPv2（HW Group Management Protocol version 2，HW组管理协议版本2）来实现，它由以下三个协议组成：

l NDP（Neighbor Discover Protocol，邻居发现协议）

l NTDP（Neighbor Topology Discover Protocol，邻居拓扑发现协议）

l Cluster（集群管理协议）

集群通过以上三个协议，对集群内部的设备进行配置和管理，其工作过程包括拓扑收集以及集群的建立和维护。拓扑收集过程和集群维护过程相对独立，拓扑收集过程在集群建立之前就开始启动，工作原理如下：

l 所有设备通过NDP来获取邻居设备的信息，包括邻居设备的软件版本、主机名、MAC地址和端口名称等信息。

l 管理设备通过NTDP来收集用户指定跳数范围内的设备信息以及各个设备的连接信息，并从收集到的拓扑信息中确定集群的候选设备。

l 管理设备根据NTDP收集到的候选设备信息完成将候选设备加入集群、成员设备离开集群的操作。

1. NDP简介

NDP用来获取直接相连的邻居设备的信息，包括连接端口、设备名称、软件版本等信息，工作原理如下：

l 运行NDP的设备周期性地向邻居发送NDP报文，其中包含NDP信息（包括当前设备的名称、软件版本和连接端口等信息）以及NDP信息在接收设备上的老化时间。同时会接收（但不转发）邻居设备发送的NDP报文。

l 运行NDP的设备都会存储和维护NDP邻居信息表，在该表中为每台邻居设备创建一个表项。当新发现了一个邻居，即第一次收到它发送的NDP报文时，为其新增一个表项。如果收到的邻居设备NDP信息与旧信息不同，则更新相应的表项及其老化时间；如果相同，则只更新老化时间；如果老化时间超时后仍未收到邻居的NDP信息，将自动删除相应的表项。

NDP协议运行在数据链路层，因此可以支持不同的网络层协议。

2. NTDP简介

NTDP为管理设备提供可加入集群的设备信息，收集指定跳数内设备的拓扑信息。NDP为NTDP提供邻接表信息，NTDP根据邻接信息发送和转发NTDP拓扑收集请求，收集一定网络范围内所有设备的NDP信息以及这些设备间的连接信息。收集完这些信息后，管理设备或网管可使用这些信息完成所需功能。

当成员设备上的NDP发现邻居有变化时，通过握手报文将邻居改变的消息通知给管理设备，管理设备可以启动NTDP收集指定拓扑，从而使NTDP能够及时反映网络拓扑的变化。

管理设备可以定时在网络内进行拓扑收集，用户也可以通过手工配置启动一次拓扑收集。管理设备收集拓扑信息过程如下：

l 管理设备从使能NTDP的端口周期性发送NTDP拓扑收集请求报文。

l 收到请求报文的设备立即发送拓扑响应报文至管理设备，并在已使能NTDP的端口复制此请求报文并发送到邻接设备；拓扑响应报文包含本设备的基本信息和所有邻接设备的NDP信息。

l 邻接设备收到请求报文后将执行同样操作，直至拓扑收集请求报文扩散到指定跳数范围内的所有设备。

当拓扑收集请求报文在网络内扩散时，大量网络设备同时收到拓扑收集请求并同时发送拓扑收集响应报文。为了避免网络拥塞和管理设备任务繁忙，可采取以下措施控制拓扑收集请求报文的扩散速度：

l 每台被收集设备收到拓扑收集请求报文后，并不立即转发该报文，而是延迟一段时间再由其第一个端口转发。

l 在同一台设备上，除第一个端口外，其它端口在上一个端口转发了拓扑收集请求报文后，都将延迟一段时间再继续转发该报文。

3. 集群管理维护

(1) 候选设备加入集群

用户在建立集群时应首先指定管理设备，管理设备可以通过NDP和NTDP协议发现和确定候选设备并将其自动加入集群，也可以通过手工配置将候选设备加入集群。

当候选设备成功加入集群后，将获得管理设备为其分配的集群成员序列号、集群管理使用的私有IP地址等。

(2) 集群内部通讯

在集群内部，管理设备与成员设备通过握手报文实时通信，以维护它们之间的连接状态，管理设备和成员设备的连接状态如 图1-3 所示。

图1-3 管理/成员设备状态转换

l 集群建立成功、候选设备加入集群成为成员设备后，管理设备将其状态信息保存到本地，并将其状态标识为Active；成员设备也将自身的状态信息保存到本地，并将其自身状态标识为Active。

l 管理设备和成员设备定时互发握手报文。管理设备收到成员设备的握手报文后不应答，仍将其状态保持为Active；成员设备收到管理设备的握手报文后也不应答，仍将其自身状态保持为Active。

l 当管理设备发送握手报文后，在三倍握手报文发送时间间隔内仍没收到成员设备的握手报文，则将其状态由Active迁移为Connect；同样，当成员设备发送握手报文后，在三倍握手报文发送时间间隔内仍没收到管理设备的握手报文，其自身状态也将从Active迁移为Connect。

l 若管理设备收到了处于Connect状态的成员设备在有效保留时间内发送的握手或管理报文，则将其状态迁移回Active，否则迁移为Disconnect——此时管理设备会认为已与该成员设备断开；而处于Connect状态的成员设备若在有效保留时间内收到了管理设备发送的握手或管理报文，则将其自身状态迁移至Active，否则迁移为Disconnect。

l 当管理设备与成员设备的通信恢复时，处于Disconnect状态的成员设备将重新加入集群。加入成功后，成员设备在管理设备以及其本地的状态都将恢复为Active。

如果发现拓扑改变，成员设备也通过握手报文向管理设备传递变化信息。

4. 管理VLAN

管理VLAN是指集群协议报文通讯所使用的VLAN，它限制了集群管理的范围，通过配置管理VLAN，可实现如下功能：

l 集群的管理报文（包括NDP、NTDP和握手报文）都将限制在管理VLAN内，实现了与其它报文的隔离，增加了安全性。

l 管理设备和成员设备通过管理VLAN实现了内部通讯。

集群管理要求管理设备与成员/候选设备相连的端口（包括级联端口）都要允许管理VLAN通过。如果端口不允许管理VLAN通过，该端口所连的设备将不能加入集群，因此当候选设备与管理设备相连的端口包括级联端口不允许管理VLAN通过时，可通过管理VLAN自协商修改候选设备的端口以允许管理VLAN通过。只有当管理设备与成员/候选设备相连接的端口（包括级联端口）的缺省VLAN ID都是管理VLAN时，才允许配置管理VLAN的报文不带Tag通过，否则管理VLAN的报文都必须带Tag通过。

l 级联端口是指当候选设备通过另外一台候选设备与管理设备相连时，这两台候选设备之间的连接端口。

l 有关VLAN和Tag的相关介绍，请参见“二层技术-以太网交换配置指导”中的“VLAN”。


1.2 集群管理配置任务简介

用户配置集群前，需要明确集群内各个设备的角色以及功能，另外还要配置相关的功能，做好与集群内部设备进行通信的规划工作。

表1-1 集群管理配置任务简介

配置任务 |  | 说明 | 详细配置
配置管理设备 | 使能NDP功能 | 可选 | 1.3.1
 | 配置NDP参数 | 可选 | 1.3.2
 | 使能NTDP功能 | 可选 | 1.3.3
 | 配置NTDP参数 | 可选 | 1.3.4
 | 手动收集拓扑信息 | 可选 | 1.3.5
 | 使能集群功能 | 可选 | 1.3.6
 | 建立集群 | 必选 | 1.3.7
 | 使能管理VLAN自协商功能 | 必选 | 1.3.8
 | 配置集群成员交互 | 可选 | 1.3.9
 | 配置集群管理协议报文 | 可选 | 1.3.10
 | 集群成员管理 | 可选 | 1.3.11
配置成员设备 | 使能NDP功能 | 可选 | 1.4.1
 | 使能NTDP功能 | 可选 | 1.4.2
 | 手动收集拓扑信息 | 可选 | 1.4.3
 | 使能集群功能 | 可选 | 1.4.4
 | 配置成员设备退出集群 | 可选 | 1.4.5
配置集群成员互访 |  | 可选 | 1.5
配置候选设备加入集群 |  | 可选 | 1.6
配置集群管理高级功能 | 配置集群拓扑管理 | 可选 | 1.7.1
 | 配置集群内外交互 | 可选 | 1.7.2
 | SNMP配置同步功能 | 可选 | 1.7.3
 | 批量配置Web账户 | 可选 | 1.7.4

l 集群建立后，在管理设备和成员设备上关闭NDP或者NTDP功能后，集群不会解散，但是会影响已经建立的集群的正常运行。

l 在一个集群中，当使能了802.1X或MAC地址认证功能的成员设备还连接有其它成员设备时，必须在该成员设备上开启HABP server功能，否则管理设备将无法对其连接的成员设备进行管理；在使能了802.1X或MAC地址认证功能的管理设备上，是否需要开启HABP server功能与设备的型号有关，请以设备的实际情况为准。有关HABP（HW Bypass Protocol，HW旁路认证协议）的详细介绍，请参见“安全配置指导”中的“HABP”。

l 如果集群建立时管理设备的路由表已满，即无法向路由表中添加目的地址为候选设备的路由条目，将导致所有候选设备反复加入退出集群。

l 如果候选设备加入集群时候选设备的路由表已满，即无法向路由表中添加目的地址为管理设备的路由条目，也将导致本设备反复加入退出集群。


1.3 配置管理设备

1.3.1 使能NDP功能

当全局和端口的NDP功能都使能时，NDP才能正常运行。

表1-2 使能NDP功能

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
使能全局的NDP功能 |  | ndp enable | 可选 缺省情况下，全局的NDP功能处于使能状态
使能端口的NDP功能 | 系统视图下 | ndp enable interface interface-list | 二者可选其一 缺省情况下，所有端口的NDP功能都处于使能状态
 | 以太网接口或二层聚合接口视图下 | interface interface-type interface-number
 |  | ndp enable

为避免管理设备收集到不需要加入集群的设备的拓扑信息并将其误加入集群，建议在与这些设备相连的端口上关闭NDP功能。

1.3.2 调整NDP参数

使能了NDP功能的端口会周期性地向外发送NDP报文。当NDP报文在接收设备上的老化时间超时后，接收设备仍未收到本设备发送的NDP报文，接收设备将自动删除本设备所对应的邻居表项。

表1-3 调整NDP参数

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置发送NDP报文的时间间隔 | ndp timer hello hello-time | 可选 缺省情况下，发送NDP报文的时间间隔为60秒
配置NDP报文在接收设备上的老化时间 | ndp timer aging aging-time | 可选 缺省情况下，NDP报文在接收设备上的老化时间为180秒

NDP报文在接收设备上的老化时间应不小于发送NDP报文的时间间隔，否则将引起NDP端口邻居信息表的不稳定。

1.3.3 使能NTDP功能

当全局和端口的NTDP功能都使能时，NTDP才能正常运行。

表1-4 使能NTDP功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
使能全局的NTDP功能 | ntdp enable | 可选 缺省情况下，全局的NTDP功能处于使能状态
进入以太网接口或二层聚合接口视图 | interface interface-type interface-number | -
使能端口的NTDP功能 | ntdp enable | 可选 缺省情况下，所有端口的NTDP功能都处于使能状态

为避免管理设备收集到不需要加入集群的设备的拓扑信息并将其误加入集群，建议在与这些设备相连的端口上关闭NTDP功能。

1.3.4 调整NTDP参数

通过配置拓扑收集范围（即最大跳数）可以收集确定范围内设备的拓扑信息，从而避免无限的扩展收集过程。控制收集范围采用从收集发起者开始、控制允许发现的跳数的方法。

在配置了拓扑收集的时间间隔后，设备将以此间隔为周期进行拓扑信息的收集。

为了避免拓扑收集设备由于同时收到大量拓扑响应报文而导致的拥塞：

l 每台被收集设备在收到拓扑收集请求报文后，都将延迟一段时间再由其第一个端口转发该报文；

l 在同一台设备上，除第一个端口外，其它端口在上一个端口转发了拓扑收集请求报文后，都将延迟一段时间再继续转发该报文。

表1-5 调整NTDP参数

操作 | 命令 | 说明
进入系统视图 | system-view | -
配置拓扑收集的最大跳数 | ntdp hop hop-value | 可选 缺省情况下，拓扑收集的最大跳数为3跳
配置拓扑收集的时间间隔 | ntdp timer interval | 可选 缺省情况下，拓扑收集的时间间隔为1分钟
配置首个端口转发拓扑收集请求报文的延迟时间 | ntdp timer hop-delay delay-time | 可选 缺省情况下，首个端口转发拓扑收集请求报文的延迟时间为200毫秒
配置其它端口转发拓扑收集请求报文的延迟时间 | ntdp timer port-delay delay-time | 可选 缺省情况下，其它端口转发拓扑收集请求报文延迟时间为20毫秒

首个/其它端口转发拓扑收集请求报文的延迟时间都需配置在拓扑收集设备上：拓扑收集设备在其发送的拓扑收集请求报文中携带了这两种延迟时间值，被收集设备依据该值来延迟拓扑收集请求报文的转发。

1.3.5 手动收集拓扑信息

集群建立后，管理设备会周期性地收集拓扑信息。用户还可以在管理设备或使能NTDP功能的设备上手动发起拓扑信息的收集过程（不论集群是否已建立），从而更有效地对设备进行实时管理与监控。

请在用户视图下进行下列配置。

表1-6 手动收集拓扑信息

操作 | 命令 | 说明
手动收集拓扑信息 | ntdp explore | 必选

1.3.6 使能集群功能

表1-7 使能集群功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
使能集群功能 | cluster enable | 可选 缺省情况下，集群功能处于使能状态

1.3.7 建立集群

建立集群前，须指定管理VLAN，成员设备加入集群后就不能再修改管理VLAN。

建立集群前，还须在欲配置为管理设备的设备上配置成员设备所使用的私有IP地址范围，且管理设备和成员设备的VLAN接口的IP地址和集群地址池不能配置在同一网段内，否则集群将不能正常工作。当候选设备加入时，管理设备为候选设备动态分配一个能够在集群内使用的私有IP地址，用于集群内部的通信。

建立集群有两种方式：手工创建和自动创建。其中，在自动创建集群的过程中，用户可根据系统提示自动创建集群：

(1) 首先，系统提示输入集群名称；

(2) 接着，系统将列出指定的跳数范围内发现的所有候选设备；

(3) 系统将把所有列出的候选设备自动加入到所创建的集群中。

在自动创建过程中，允许用户输入<Ctrl+C>取消当前操作，并退出自动创建过程。该操作只能停止加入新的设备，已加入集群的设备仍将保留在集群中。

表1-8 手动建立集群

操作 |  | 命令 | 说明
进入系统视图 |  | system-view | -
指定管理VLAN |  | management-vlan vlan-id | 可选 缺省情况下，管理VLAN为VLAN 1
进入集群视图 |  | cluster | -
配置成员设备的私有IP地址范围 |  | ip-pool ip-address { mask | mask-length } | 必选 缺省情况下，没有指定成员设备的私有IP地址范围
创建集群 | 手动创建集群 | build cluster-name | 二者必选其一 缺省情况下，设备不是管理设备
 | 自动创建集群 | auto-build [ recover ]

由于握手报文使用的UDP端口号为40000，因此建立集群前需确保该端口未被占用，否则将导致集群建立失败。

1.3.8 使能管理VLAN自协商功能

管理VLAN限制了集群管理的范围，当管理设备发现的新设备在管理VLAN之外即与管理设备相连的端口及级联端口不允许管理VLAN通过时，新设备将无法加入集群。通过在管理设备上使能管理VLAN自动协商功能，可以将与管理设备相连的端口及级联端口自动加入管理VLAN。

表1-9 使能管理VLAN自协商功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入集群视图 | cluster | -
使能管理VLAN自协商功能 | management-vlan synchronization enable | 必选 缺省情况下，管理VLAN自协商功能处于关闭状态

在开启了管理VLAN自协商功能后，各成员设备之间相连的端口将自动转换为Hybrid端口，并允许管理VLAN的报文以tagged的方式通过，需要注意的是：

l 如果该端口之前为Access或Trunk端口，则转换后将不再允许除管理VLAN外的其他VLAN通过。

l 如果该端口之前即为Hybrid端口，则转换过程对已经允许通过的VLAN没有影响，只是增加允许管理VLAN以tagged的方式通过。

请用户在配置本功能之前，确认成员设备之间连接端口的端口类型和允许通过的VLAN，避免转换过程对网络产生影响。

1.3.9 配置集群成员交互

在集群内部，管理设备与成员设备通过握手报文进行实时通信，以维护它们之间的连接状态。可以在管理设备上配置发送握手报文的时间间隔和有效保留时间，该配置将对集群内部所有成员设备同时生效。对于处于Connect状态的成员设备来说：

l 如果管理设备在有效保留时间内未收到来自该成员设备的消息，则将其状态迁移为Disconnect。当通讯恢复后，该成员设备需要重新加入（成员重新加入过程是自动进行的）。

l 如果管理设备在有效保留时间内收到了来自该成员设备的消息，则将其状态迁移回Active。

表1-10 配置集群成员交互

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入集群视图 | cluster | -
配置发送握手报文的时间间隔 | timer interval | 可选 缺省情况下，发送握手报文的时间间隔为10秒
配置有效保留时间 | holdtime hold-time | 可选 缺省情况下，有效保留时间为60秒

1.3.10 配置集群管理协议报文

集群管理协议报文（包括NDP、NTDP和HABP报文）的缺省目的MAC地址是IEEE保留的组播MAC地址0180-C200-000A，而部分现有设备对目的MAC地址为此类地址的报文不能正常转发，从而导致集群管理协议报文无法穿越这些设备。针对这种情况，在不改变现有组网的前提下，可将集群管理协议报文的目的MAC地址修改为其它MAC地址来避免影响集群的正常运行。

管理设备通过周期性地向成员/侯选设备发送MAC地址协商广播报文来通告集群管理协议报文的目的MAC地址。

表1-11 配置集群管理协议报文

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入集群视图 | cluster | -
配置集群管理协议报文的目的MAC地址 | cluster-mac mac-address | 必选 缺省情况下，集群管理协议报文的目的MAC地址为0180-C200-000A 可以配置的MAC地址包括：0180-C200-0000，0180-C200-000A，0180-C200-0020～0180-C200-002F或010F-E200-0002
配置发送MAC地址协商广播报文的时间间隔 | cluster-mac syn-interval interval | 可选 缺省情况下，发送MAC地址协商广播报文的时间间隔为1分钟

在配置集群管理协议报文的目的MAC地址时：

l 若发送MAC地址协商广播报文的时间间隔为零，系统会自动将其修改为1分钟；

l 若发送MAC地址协商广播报文的时间间隔非零，则该时间间隔将保持不变。

1.3.11 集群成员管理

用户可以在管理设备上手工指定要加入集群中的候选设备，也可以手工删除集群中指定的成员设备。

当成员设备由于软件版本升级、配置更新等原因需要重启时，可以通过管理设备对其进行远程重启。

1. 添加成员设备

表1-12 添加成员设备

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入集群视图 | cluster | -
将候选设备加入集群 | add-member [ member-number ] mac-address mac-address [ password password ] | 必选

2. 删除成员设备

表1-13 删除成员设备

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入集群视图 | cluster | -
将成员设备从集群中删除 | delete-member member-number [ to-black-list ] | 必选

3. 重启成员设备

表1-14 重启成员设备

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入集群视图 | cluster | -
重新启动指定的成员设备 | reboot member { member-number | mac-address mac-address } [ eraseflash ] | 必选


1.4 配置成员设备

1.4.1 使能NDP功能

请参见“ 1.3.1 使能NDP功能 ”。

1.4.2 使能NTDP功能

请参见“ 1.3.3 使能NTDP功能 ”。

1.4.3 手动收集拓扑信息

请参见“ 1.3.5 手动收集拓扑信息 ”。

1.4.4 使能集群功能

请参见“ 1.3.6 使能集群功能 ”。

1.4.5 配置成员设备退出集群

表1-15 配置成员设备退出集群

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入集群视图 | cluster | -
配置成员设备退出集群 | undo administrator-address | 必选


1.5 配置集群成员互访

当NDP、NTDP和集群功能的配置完成后，可通过管理设备对成员设备进行配置、管理和监控：既可在管理设备上切换到指定成员设备的操作界面上对该成员设备进行配置管理；也可从成员设备切换回管理设备的操作界面上对管理设备进行配置。

请在用户视图下进行下列配置。

表1-16 配置集群成员互访

操作 | 命令 | 说明
从管理设备操作界面切换到成员设备操作界面 | cluster switch-to { member-number | mac-address mac-address | sysname member-sysname } | 必选
从成员设备操作界面切换到管理设备操作界面 | cluster switch-to administrator | 必选

管理设备和成员设备间的切换均使用了Telnet连接，进行切换时需要注意：

l 成员设备切换到管理设备上需要认证，认证不通过将会导致切换失败，切换成功后用户权限根据管理设备预定的级别分配。

l 候选设备加入集群成为成员设备后，其级别为3的super password会自动同步与管理设备保持一致。集群建立以后，建议用户不要修改集群成员（包括管理设备和成员设备）的super password，以免切换时由于认证不通过而失败。

l 从管理设备切换到成员设备，如果指定的成员不存在，将显示出错信息；切换成功后在成员设备上继承管理设备上的当前级别。

l 如果被请求登录的设备Telnet用户已满将会导致切换失败。

l 集群中的设备互访时需避免形成环状切换，以免造成资源浪费。譬如：当从管理设备切换到成员设备后，又需切换回管理设备时，请使用 quit 命令结束切换，而不要使用 cluster switch-to administrator命令切换到管理设备。


1.6 配置候选设备加入集群

用户可以在候选设备上进行配置，将候选设备自身加入某个已建立的集群。

表1-17 配置候选设备加入集群

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入集群视图 | cluster | -
配置候选设备加入集群 | administrator-address mac-address name name | 必选


1.7 配置集群管理高级功能

1.7.1 配置集群拓扑管理

白名单与黑名单是拓扑管理的依据，网络管理员可通过将当前网络拓扑（即集群当前的拓扑节点和邻接关系等信息，记录了当前的网络拓扑状况）与标准拓扑进行比较对当前的网络状况进行诊断，两者的含义如下：

l 拓扑管理白名单：即标准拓扑，是网络管理员对当前网络拓扑进行确认之后认为正确的网络拓扑信息。可根据当前网络拓扑状况实现对白名单的维护，包括添加、删除和修改结点。

l 拓扑管理黑名单：列入黑名单中的设备不允许自动加入集群。黑名单信息包括设备的MAC地址，若该设备通过非黑名单中的设备接入，则还包括接入设备的MAC地址和接入端口。被列入黑名单的候选设备，需要网络管理员手工将其从黑名单删除后，方可加入集群

白名单与黑名单具有互斥性：白名单中的节点必定不在黑名单中；黑名单中的节点也不能加入白名单。拓扑节点可以既不在白名单也不在黑名单中，这类节点通常属于新增结点，其身份还有待网络管理员的确认。

用户可以对白名单和黑名单进行备份和恢复，有以下两种方式：

l 备份在集群公用的FTP服务器上：白名单与黑名单可以手动从FTP服务器上恢复。

l 备份在管理设备的Flash中：当管理设备重启时，白名单与黑名单会自动从管理设备的Flash中恢复；当集群重新创建时，可根据用户的选择决定是否从管理设备的Flash中恢复，也可手动从管理设备的Flash中恢复。

表1-18 配置集群拓扑管理

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入集群视图 | cluster | -
将设备加入黑名单 | black-list add-mac mac-address | 可选
将设备从黑名单中删除 | black-list delete-mac { all | mac-address } | 可选
确认集群当前的拓扑信息，并存为标准拓扑 | topology accept { all [ save-to { ftp-server | local-flash } ] | mac-address mac-address | member-id member-number } | 可选
保存标准拓扑信息到FTP服务器或者本地Flash中 | topology save-to { ftp-server | local-flash } | 可选
获取标准拓扑信息进行恢复 | topology restore-from { ftp-server | local-flash } | 可选

1.7.2 配置集群内外交互

集群建立后，可以在管理设备上为集群统一配置FTP/TFTP服务器、网管主机和日志主机：

l 为集群统一配置FTP/TFTP服务器后，成员设备通过管理设备来访问配置的FTP/TFTP服务器（即在成员设备上通过 ftp 或 tftp 命令指定管理设备的私有IP地址。有关 ftp 和 tftp 命令的详细介绍，请参见“基础配置命令参考”中的“FTP和TFTP”）。

l 为集群统一配置日志主机后，成员设备的所有日志信息都将输出到该日志主机上：当成员设备输出日志信息时，日志信息将直接发送给管理设备，并由管理设备对这些日志信息进行地址转换，然后发送到该日志主机上。

l 为集群统一配置网管主机后，成员设备通过管理设备向公用的SNMP网管站发送Trap信息。

如果接入网管设备（包括FTP/TFTP服务器、网管主机和日志主机）的端口不允许管理VLAN通过，网管设备将无法通过管理设备对集群内部的设备进行管理。这时需在管理设备上将这些接入网管设备的VLAN接口配置为网管接口。

表1-19 配置集群内外交互

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入集群视图 | cluster | -
配置集群公用的FTP服务器 | ftp-server ip-address [ user-name username password { simple | cipher } password ] | 必选 缺省情况下，集群没有公用的FTP服务器
配置集群公用的TFTP服务器 | tftp-server ip-address | 必选 缺省情况下，集群没有公用的TFTP服务器
配置集群公用的日志主机 | logging-host ip-address | 必选 缺省情况下，集群没有公用的日志主机
配置集群公用的SNMP网管站 | snmp-host ip-address [ community-string read string1 write string2 ] | 必选 缺省情况下，集群没有公用的SNMP网管站
配置管理设备的网管接口 | nm-interface vlan-interface interface-name | 可选

为了将集群的管理协议报文与集群外部网络的报文隔离，建议管理设备与集群网络外部的设备相连的端口不要允许管理VLAN通过，并配置管理设备的网管接口。

1.7.3 SNMP配置同步功能

SNMP配置同步功能方便了集群管理，可以在管理设备上进行SNMP的相关配置操作并将其同步到白名单中的成员设备上，相当于对成员设备进行批量配置，极大地简化配置过程。

表1-20 SNMP配置同步功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入集群视图 | cluster | -
配置集群公用的SNMP团体 | cluster-snmp-agent community { read | write } community-name [ mib-view view-name ] | 必选
配置集群公用的SNMP v3组 | cluster-snmp-agent group v3 group-name [ authentication | privacy ] [ read-view read-view ] [ write-view write-view ] [ notify-view notify-view ] | 必选
创建或者更新集群公用的MIB视图信息 | cluster-snmp-agent mib-view included view-name oid-tree | 必选 缺省情况下，集群公用的MIB视图名为ViewDefault，可访问ISO子树
为集群公用的SNMP v3组添加一个新用户 | cluster-snmp-agent usm-user v3 user-name group-name [ authentication-mode { md5 | sha } auth-password ] [ privacy-mode des56 priv-password ] | 必选

l 集群解散或成员设备从白名单中删除时，SNMP相关配置都将继续保留。

l 有关SNMP的相关介绍，请参见“网络管理和监控配置指导”中的“SNMP”。

1.7.4 批量配置Web账户

批量配置Web账户功能提供了一种便捷的方法，用户可以在管理设备上配置通过Web方式登录到集群内部设备（包括管理设备和成员设备）的用户名和密码，并将配置同步到白名单中的成员设备上。当用户通过Web方式登录到集群内部设备上进行相关操作时，需要输入用户名和密码。

表1-21 批量配置Web账户

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入集群视图 | cluster | -
批量配置Web账户 | cluster-local-user user-name password { cipher | simple } password | 必选

集群解散或成员设备从白名单中删除时，Web账户的配置将继续保留。


1.8 集群管理显示和维护

在完成上述配置后，在任意视图下执行 display 命令可以显示配置后集群的运行情况，通过查看显示信息验证配置的效果。

在用户视图下执行 reset 命令可以清除NDP的统计信息。

表1-22 集群管理显示和维护

操作 | 命令
显示NDP的配置信息 | display ndp [ interface interface-list ] [ | { begin | exclude | include } regular-expression ]
显示NTDP的配置信息 | display ntdp [ | { begin | exclude | include } regular-expression ]
显示NTDP收集到的设备信息 | display ntdp device-list [ verbose ] [ | { begin | exclude | include } regular-expression ]
显示指定设备的NTDP详细信息 | display ntdp single-device mac-address mac-address [ | { begin | exclude | include } regular-expression ]
显示设备所属集群的信息 | display cluster [ | { begin | exclude | include } regular-expression ]
显示集群的标准拓扑信息 | display cluster base-topology [ mac-address mac-address | member-id member-number ] [ | { begin | exclude | include } regular-expression ]
显示集群当前的黑名单 | display cluster black-list [ | { begin | exclude | include } regular-expression ]
显示候选设备的信息 | display cluster candidates [ mac-address mac-address | verbose ] [ | { begin | exclude | include } regular-expression ]
显示集群当前的拓扑信息 | display cluster current-topology [ mac-address mac-address [ to-mac-address mac-address ] | member-id member-number [ to-member-id member-number ] ] [ | { begin | exclude | include } regular-expression ]
显示成员设备的信息 | display cluster members [ member-number | verbose ] [ | { begin | exclude | include } regular-expression ]
清除NDP的统计信息 | reset ndp statistics [ interface interface-list ]


1.9 集群管理典型配置举例

1. 组网需求

l 由三台设备组成的集群abc，其管理VLAN为VLAN 10。其中，Switch B为管理设备（Administrator），其网管接口为Vlan-interface2；Switch A和Switch C为成员设备（Member）。

l 整个集群将IP地址为63.172.55.1/24设备作为FTP服务器和TFTP服务器，SNMP网管站及日志主机的IP地址为69.172.55.4/24。

l 通过配置，将MAC地址为000f-e201-0013的设备加入黑名单。

2. 组网图

图1-4 集群管理配置组网图

3. 配置步骤

(1) 配置成员设备Switch A

# 使能全局NDP功能和端口Ethernet1/0/1上的NDP功能。

<SwitchA> system-view

[SwitchA] ndp enable

[SwitchA] interface ethernet 1/0/1

[SwitchA-Ethernet1/0/1] ndp enable

[SwitchA-Ethernet1/0/1] quit

# 使能全局NTDP功能和端口Ethernet1/0/1上的NTDP功能。

[SwitchA] ntdp enable

[SwitchA] interface ethernet 1/0/1

[SwitchA-Ethernet1/0/1] ntdp enable

[SwitchA-Ethernet1/0/1] quit

# 使能集群功能。

[SwitchA] cluster enable

(2) 配置成员设备Switch C

由于成员设备的配置相同，因此Switch C上的配置与Switch A相似，配置过程略。

(3) 配置管理设备Switch B

# 使能全局NDP功能，并分别使能端口Ethernet1/0/2和Ethernet1/0/3上的NDP功能。

<SwitchB> system-view

[SwitchB] ndp enable

[SwitchB] interface ethernet 1/0/2

[SwitchB-Ethernet1/0/2] ndp enable

[SwitchB-Ethernet1/0/2] quit

[SwitchB] interface ethernet 1/0/3

[SwitchB-Ethernet1/0/3] ndp enable

[SwitchB-Ethernet1/0/3] quit

# 配置本设备发送的NDP报文在接收设备上的老化时间为200秒。

[SwitchB] ndp timer aging 200

# 配置NDP报文发送的时间间隔为70秒。

[SwitchB] ndp timer hello 70

# 使能全局NTDP功能，并分别使能端口Ethernet1/0/2和Ethernet1/0/3上的NTDP功能。

[SwitchB] ntdp enable

[SwitchB] interface ethernet 1/0/2

[SwitchB-Ethernet1/0/2] ntdp enable

[SwitchB-Ethernet1/0/2] quit

[SwitchB] interface ethernet 1/0/3

[SwitchB-Ethernet1/0/3] ntdp enable

[SwitchB-Ethernet1/0/3] quit

# 配置拓扑收集的最大跳数为2跳。

[SwitchB] ntdp hop 2

# 配置被收集设备首个端口转发拓扑收集请求报文的延迟时间为150ms。

[SwitchB] ntdp timer hop-delay 150

# 配置被收集设备其它端口转发拓扑收集请求报文的延迟时间为15ms。

[SwitchB] ntdp timer port-delay 15

# 配置拓扑收集的时间间隔为3分钟。

[SwitchB] ntdp timer 3

# 配置集群的管理VLAN为VLAN 10。

[SwitchB] vlan 10

[SwitchB-vlan10] quit

[SwitchB] management-vlan 10

# 将端口Ethernet1/0/2和Ethernet1/0/3都配置为Trunk口，并允许管理VLAN通过。

[SwitchB] interface ethernet 1/0/2

[SwitchB-Ethernet1/0/2] port link-type trunk

[SwitchB-Ethernet1/0/2] port trunk permit vlan 10

[SwitchB-Ethernet1/0/2] quit

[SwitchB] interface ethernet 1/0/3

[SwitchB-Ethernet1/0/3] port link-type trunk

[SwitchB-Ethernet1/0/3] port trunk permit vlan 10

[SwitchB-Ethernet1/0/3] quit

# 使能集群功能。

[SwitchB] cluster enable

# 配置成员设备的私有IP地址范围为172.16.0.1～172.16.0.7。

[SwitchB] cluster

[SwitchB-cluster] ip-pool 172.16.0.1 255.255.255.248

# 配置当前设备为管理设备，并建立名为abc的集群。

[SwitchB-cluster] build abc

Restore topology from local flash file,for there is no base topology.

(Please confirm in 30 seconds, default No). (Y/N)

N

# 使能管理VLAN自协商功能。

[abc_0.SwitchB-cluster] management-vlan synchronization enable

# 配置成员设备信息的有效保留时间为100秒。

[abc_0.SwitchB-cluster] holdtime 100

# 配置发送握手报文的时间间隔为10秒。

[abc_0.SwitchB-cluster] timer 10

# 分别指定集群公用的FTP服务器、TFTP服务器、日志主机和SNMP网管站。

[abc_0.SwitchB-cluster] ftp-server 63.172.55.1

[abc_0.SwitchB-cluster] tftp-server 63.172.55.1

[abc_0.SwitchB-cluster] logging-host 69.172.55.4

[abc_0.SwitchB-cluster] snmp-host 69.172.55.4

# 将MAC地址为000f-e201-0013的设备加入黑名单。

[abc_0.SwitchB-cluster] black-list add-mac 000f-e201-0013

[abc_0.SwitchB-cluster] quit

# 将端口Ethernet1/0/1加入VLAN 2，并为接口Vlan-interface2配置IP地址。

[abc_0.SwitchB] vlan 2

[abc_0.SwitchB-vlan2] port ethernet 1/0/1

[abc_0.SwitchB] quit

[abc_0.SwitchB] interface vlan-interface 2

[abc_0.SwitchB-Vlan-interface2] ip address 163.172.55.1 24

[abc_0.SwitchB-Vlan-interface2] quit

# 将接口Vlan-interface2配置为网管接口。

[abc_0.SwitchB] cluster

[abc_0.SwitchB-cluster] nm-interface vlan-interface 2


1 CWMP配置

相关链接

  • 1.1 CWMP简介
  • 1.2 CWMP的基本功能
  • 1.3 CWMP的实现机制
  • 1.4 CWMP配置任务简介
  • 1.5 使能CWMP功能
  • 1.6 配置ACS服务器信息
  • 1.7 配置CPE设备属性
  • 1.8 CWMP显示和维护
  • 1.9 CWMP典型配置案例
父主题： 12-CWMP配置


1.1 CWMP简介

1.1.1 CWMP协议

CWMP（CPE WAN Management Protocol，CPE广域网管理协议）是由DSL（Digital Subscriber's Line，数字用户线路）论坛发起开发的技术规范之一，编号为TR-069，所以又被称为TR-069协议。CWMP在设计时主要针对DSL接入网络环境。在DSL接入网络中，由于用户设备数量繁多、部署分散，通常位于用户侧，不易进行设备的管理和维护，CWMP提出通过ACS（Auto-Configuration Server，自动配置服务器）对CPE（Customer Premises Equipment，用户侧设备）进行远程集中管理，解决CPE设备的管理困难，节约维护成本，提高问题解决效率。

大型数据中心的网络环境与DSL环境具有类似的特征，即接入交换机数量众多，而且随着规模的扩张，会经常出现在网络的某个层级大量增加新设备的情况。这些新设备的业务功能基本相同，如果能够利用CWMP协议的特点进行远程集中管理和配置，便可以快速完成部署，并且后期的维护和管理也将变得更加便捷。

设备提供了对CWMP协议的支持，在空配置接入网络时可以作为CPE设备，自动从ACS下载配置文件。相对于传统的手工配置方式，利用CWMP进行远程统一配置具有以下优点：

l 对于业务相同的新设备统一下发配置，减少重复工作，提高部署效率

l 设备开箱后即可直接接入网络，不需要工程师现场配置，降低人力成本

l 配置文件预先生成，降低人工配置错误几率

1.1.2 CWMP网络框架

CWMP网络的基本框架如图1-1 所示：

图1-1 CWMP网络基本框架示意图

图1-1 中的DHCP服务器、DNS服务器、ACS仅作为角色示意，实际应用中这些功能可以集中在一台服务器上。

CWMP环境中的角色主要包括：

l CPE：网络中的被管理设备，可以向ACS上报自身信息并获取相应的配置。

l ACS：自动配置服务器，用于向CPE设备下发配置并提供CPE设备的管理服务。本文中的ACS是指安装了H3C iMC分支网点智能管理系统（简称iMC BIMS）的服务器。

l DNS server：域名服务器。ACS和CPE之间可以使用URL地址来互相识别和访问，DNS用于帮助解析URL参数。

l DHCP server：DHCP服务器，用于为CPE分配IP地址，并使用DHCP报文中的option字段为CPE提供访问ACS所使用的URL等参数。


1.2 CWMP的基本功能

1.2.1 通过ACS向CPE自动下发配置文件

为了便于对提供相同业务功能的新设备进行快速配置，网络管理员可以在ACS上创建针对该类设备的配置文件。当CPE设备与ACS建立连接后，ACS可以判断CPE设备所属类别，并将对应该类设备的配置文件下发给CPE设备，从而可以使相同类型的大量CPE设备获得相同的业务配置。目前ACS可以通过产品型号和序列号等将CPE划分为不同的类别。

ACS向CPE下发配置文件时，可以通过以下两种方式进行：

l 部署为启动配置：ACS向CPE发送配置文件，覆盖CPE本地的缺省配置文件，当CPE重启之后，便可以使用新的配置运行。

l 部署为运行配置：ACS将配置内容直接发给CPE，并写入到CPE的当前配置中，配置内容即时生效，但是需要再执行保存配置的操作，以保证重启后配置不会丢失。

1.2.2 通过ACS管理CPE设备的系统文件

网络管理员可以将CPE设备的应用程序文件和配置文件等重要文件保存在ACS上，当ACS发现某个文件的版本有更新，将会通知CPE进行下载。CPE收到ACS的下载请求后，能够根据ACS报文中提供的下载地址和文件名，自动到指定的文件服务器下载文件。下载完成后，对下载文件的合法性做相应的检查，并将下载结果（成功或失败）反馈给ACS。目前CPE可以通过ACS下载的文件类型包括设备应用程序文件和配置文件。

同样，为了实现对重要数据的备份，CPE将根据ACS的要求将当前的配置文件和日志文件上传到指定的服务器。

1.2.3 通过ACS监控CPE的状态和性能

ACS可以监控与其相连的CPE的各种参数。由于不同的CPE具有不同的性能，可执行的功能也各异，因此ACS必须能识别不同类型CPE的性能，并监控到CPE的当前配置以及配置的变更。CWMP还允许网络管理人员自定义监控参数并通过ACS获取这些参数，以便了解CPE的状态和统计信息。

ACS能够监控的状态和性能有：厂商名称（Manufacturer）、厂商标识OUI（ManufacturerOUI）、序列号（SerialNumber）、硬件版本号（HardwareVersion）、软件版本号（SoftwareVersion）、设备状态（DeviceStatus）、启动时间（UpTime）、配置文件、ACS地址、ACS用户名、ACS密码、Inform报文自动发送使能标志、Inform报文周期发送时间间隔、Inform报文定期发送日期、CPE地址、CPE用户名、CPE密码等。


1.3 CWMP的实现机制

1.3.1 ACS和CPE的自动连接

CPE在第一次上电启动时，会通过DHCP自动获取IP地址，DHCP服务器在分配IP地址的同时，将向CPE通告以下内容：

l ACS的URL地址（通过option 43选项分配）

l 连接ACS所需要的用户名和密码（通过option 43选项分配）

l DNS服务器地址（直接分配）

CPE设备得到以上信息后，通过DNS服务器解析出ACS的IP地址，向ACS发起连接请求，如果用户名和密码验证通过，CPE和ACS之间将成功建立连接。

如果当前会话没有结束，但是连接异常中断，CPE将自动尝试重新连接，直至重新连接的次数达到上限。

在运行过程中，CPE设备还可以根据配置周期性或者定时向ACS服务器发起连接。ACS也可以在任何时候自动向CPE发起连接请求，通过CPE的认证（即CPE用户名、CPE密码）后，可以与CPE建立连接。

1.3.2 ACS向CPE下发配置项参数

CPE与ACS建立连接之后，ACS可以自动下发一些配置给CPE，完成对CPE的自动配置。CPE可以从ACS获取的自动配置项参数如表1-1 所示：

表1-1 CPE可以从ACS获取的配置项

配置项 | 用途
配置文件（ConfigFile） | 用于更新CPE的本地配置文件，ACS可以使用文件形式和当前配置形式向CPE下发配置文件
ACS地址（URL） | 更新CPE记录的ACS地址，可用于主备ACS服务器之间的切换
ACS用户名（Username） | 当ACS上连接用户名和密码发生变更时，可以自动同步到CPE设备，也可用于主备ACS服务器切换时向CPE通告备用ACS服务器的验证信息
ACS密码（Password）
Inform报文自动发送使能标志（PeriodicInformEnable） | 开启CPE设备发送Inform报文的功能
Inform报文周期发送时间间隔（PeriodicInformInterval） | 配置CPE周期性向ACS发送Inform报文建立连接，用于定期查询更新和信息备份
Inform报文定期发送日期（PeriodicInformTime） | 配置CPE在指定时间点向ACS发送Inform报文建立连接，用于在指定时间查询更新和信息备份
CPE用户名（ConnectionRequestUsername） | 配置CPE在接受ACS发起的连接时所需要的验证信息
CPE密码（ConnectionRequestPassword）

1.3.3 ACS对CPE的管理方式

ACS对CPE的管理和监控是通过一系列的操作来实现的，这些操作在CWMP协议里称为RPC方法。主要方法的描述如下：

l Get：ACS使用该方法可以获取CPE上参数的值。

l Set：ACS使用该方法可以设置CPE上参数的值。

l Inform：当CPE与ACS建立连接时，或者底层配置发生改变时，或者CPE周期性发送本地信息到ACS时，CPE都要通过该方法向ACS发起通告信息。

l Download：为了保证CPE端软件的升级以及厂商配置文件的自动下载，ACS使用该方法可以要求CPE到指定的URL下载指定的文件来更新CPE的本地文件。

l Upload：为了方便ACS对CPE端的管理，ACS使用该方法可以要求CPE将指定的文件上传到ACS指定的位置。

l Reboot：当CPE故障或者需要软件升级的时候，ACS使用该方法可以对CPE进行远程重启。

1.3.4 主备ACS切换时的操作方式

下面以一个具体的例子来描述主备ACS切换时的实现过程，应用场景如下：区域内有主、备两台ACS，主ACS系统升级，需要重启。为了连续监控，主ACS需要将区域内的CPE都连接到备用ACS上，处理流程如下：

图1-2 主备ACS切换时主ACS与CPE的消息交互举例

(1) 建立TCP连接。

(2) SSL初始化，建立安全机制。

(3) CPE发送Inform报文，开始建立CWMP连接。Inform报文使用Eventcode字段描述发送Inform报文的原因，该举例为“6 CONNECTION REQUEST”，表示ACS要求建立连接。

(4) 如果CPE通过ACS的认证，ACS将返回Inform响应报文，连接建立。

(5) 如果CPE没有别的请求，就会发送一个空报文，以满足HTTP报文请求/响应报文交互规则（CWMP是基于HTTP协议的，CWMP报文作为HTTP报文的数据部分封装在HTTP报文中）。

(6) ACS查询CPE上设置的ACS URL的值。

(7) CPE把获取到的ACS URL的值回复给ACS。

(8) ACS发现CPE的ACS URL是本机URL的值，于是发起Set请求，要求将CPE的ACS URL设置为备用ACS的URL的值。

(9) 设置成功，CPE发送响应报文。

(10) ACS发送空报文通知CPE，表示不再请求其他内容。

(11) CPE关闭连接。

之后，CPE将向备用ACS发起连接。


1.4 CWMP配置任务简介

1.4.1 DHCP服务器的配置

在CWMP网络中，DHCP服务器主要用于向CPE通告ACS的位置和验证信息，因此DHCP服务器上的配置主要包含以下内容：

l 配置地址池，为CPE设备分配IP地址

l 配置DNS服务器

l 配置option 43选项，向CPE通告ACS信息

这里主要介绍option 43选项的配置方法，关于地址池和DNS服务器的配置请参见“三层技术-IP业务配置指导”中的“DHCP服务器”。

当使用H3C设备作为DHCP server时，可以使用命令行配置包含ACS参数的option 43信息，命令格式为：option 43 hex 01 length URL username password

l length：表示关键字 option 43 hex 01 后面参数的总长度，用十六进制数表示。

l URL：ACS的地址。

l username：ACS的用户名。

l password：ACS的密码。

ACS的URL、用户名和密码参数需要用空格隔开，参数的格式必须为字符对应的ASCII码的十六进制值格式。输入时，可以2、4、6或者8个十六进制值为一组，组间用空格隔开。比如，要将ACS地址配置为http://169.254.76.31:7547/acs（http://对应的ASCII码的十六进制值为68 74 74 70 3A 2F 2F，169.254.76.31对应的ASCII码的十六进制值为31 36 39 2E 32 35 34 2E 37 36 2E 33 31，:7547对应的ASCII码的十六进制值为3A 37 35 34 37，/acs对应的ASCII码的十六进制值为2F 61 63 73）、用户名配置为1234（对应的ASCII码的十六进制值为31 32 33 34）、密码配置为5678（对应的ASCII码的十六进制值为35 36 37 38），空格对应的ASCII码的十六进制值为20，（URL＋1个空格＋username＋1个空格＋password）一共为39个字符（39对应的十六进制为27），所以 length 值为0x27，可使用以下配置步骤：

<Sysname> system-view

[Sysname] dhcp server ip-pool 0

[Sysname-dhcp-pool-0] option 43 hex 0127 68747470 3A2F2F31 36392E32 35342E37 362E3331 3A373534 372F6163 73203132 33342035 3637 38

关于DHCP技术、option 43参数以及 option 命令的详细介绍请参见“三层技术-IP业务配置指导”中的“DHCP概述”和“DHCP服务器”。

1.4.2 DNS服务器的配置

在DNS服务器上，需要事先配置ACS服务器的URL和IP地址的对应，以便CPE设备可以通过域名解析功能得到ACS的IP地址。

1.4.3 ACS服务器的配置

由ACS远程管理，对CPE进行自动配置。可配置的主要参数请参见 1.3.2 。ACS服务器上的配置请参见您所选ACS服务器的软件使用说明。

1.4.4 CPE设备的配置

即通过命令行手工指定CWMP参数，可配置的内容如 表1-2 所示。

l 设备在CWMP环境中充当CPE，因此下文中只介绍CPE设备上进行的配置。

l CPE设备上的某些配置可以通过本地命令行配置，也可以通过ACS或DHCP服务器远程获取配置。这种情况下，通过ACS获取的配置优先级最高，其次为通过DHCP获取的配置，通过命令行配置的最低。低级别的配置方式不能修改高级别配置方式配置的参数。

表1-2 CWMP配置任务简介

配置任务 |  | 说明 | 详细配置
使能CWMP功能 |  | 必选 | 1.5
配置ACS服务器信息 | 配置ACS的URL值 | 必选 | 1.6.1
 | 配置ACS的用户名和密码 | 可选 | 1.6.2
配置CPE设备属性 | 配置CPE的用户名和密码 | 可选 | 1.7.1
 | 配置CWMP接口 | 可选 | 1.7.2
 | 发送Inform报文 | 可选 | 1.7.3
 | 配置CPE自动重新连接的次数 | 可选 | 1.7.4
 | 配置CPE无数据传输的超时时间 | 可选 | 1.7.5


1.5 使能CWMP功能

使能CWMP后，CWMP的其它配置才能生效。

表1-3 使能CWMP功能

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入CWMP视图 | cwmp | -
使能CWMP功能 | cwmp enable | 可选 缺省情况下，CWMP功能处于使能状态


1.6 配置ACS服务器信息

ACS服务器信息包括ACS的URL、用户名和密码，当CPE发起连接请求时，连接请求报文里会携带ACS的URL、用户名和密码。当ACS收到该报文后，如果这个参数的值和本地配置的值一致，则验证成功，允许建立连接；如果不一致，则验证失败，禁止建立连接。

1.6.1 配置ACS的URL值

表1-4 配置ACS的URL值

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入CWMP视图 | cwmp | -
配置ACS的URL值 | cwmp acs url url | 必选 缺省情况下，没有配置ACS的URL

一个CPE只能配置一个ACS，多次配置ACS的URL值时，最新的配置生效。

1.6.2 配置ACS的用户名和密码

表1-5 配置ACS的用户名和密码

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入CWMP视图 | cwmp | -
配置连接到ACS的用户名 | cwmp acs username username | 必选 缺省情况下，没有配置连接到ACS的用户名
配置连接到ACS的密码 | cwmp acs password password | 可选，可以只用用户名验证，但ACS和CPE上的配置必须一致 缺省情况下，没有配置连接到ACS的密码

请使用ACS上合法的用户名和密码来配置 username 和 password 参数，否则，CPE将不能通过ACS的认证。


1.7 配置CPE设备属性

在CPE上还可以配置CPE的用户名和密码，这些属性用于CPE对ACS的合法性进行验证。当连接由ACS发起时，会话请求报文里会携带CPE用户名和密码。CPE设备收到该报文后，会与本地设置的CPE用户名和密码比较，如果相同则通过认证，进入连接建立的下一阶段，否则，认证失败，退出连接建立过程。

1.7.1 配置CPE的用户名和密码

表1-6 配置CPE用户名和密码

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入CWMP视图 | cwmp | -
配置ACS连接到CPE时用来认证的用户名 | cwmp cpe username username | 必选 缺省情况下，没有设置CPE的用户名
配置ACS连接到CPE时用来认证的密码 | cwmp cpe password password | 可选，可以只用用户名验证，但ACS和CPE上的配置必须一致 缺省情况下，没有设置CPE的密码

1.7.2 配置CWMP连接接口

CWMP连接接口指的是CPE上用于连接ACS的接口。CPE会在Inform报文中携带CWMP连接接口的IP地址，要求ACS通过此IP地址和自己建立连接；相应的，ACS会向该IP地址回复Inform响应报文。

通常情况下，系统会采用一定的机制去自动获取一个CWMP连接接口，但如果获取的CWMP连接接口不是CPE和ACS实际相连的接口时，就会导致CWMP连接建立失败。因此，在这种情况下需要手工指定CWMP连接接口。

表1-7 配置CWMP连接接口

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入CWMP视图 | cwmp | -
设置CPE上用于连接ACS的接口 | cwmp cpe connect interface interface-type interface-number | 必选 缺省情况下，CWMP连接接口为Vlan-interface1

1.7.3 发送Inform报文

CPE与ACS之间连接的建立过程需要发送Inform报文。通过设置Inform报文发送参数，可以触发CPE向ACS自动发起连接。

1. 配置周期性发送Inform报文

表1-8 配置周期性发送Inform报文

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入CWMP视图 | cwmp | -
使能CPE周期发送Inform报文功能 | cwmp cpe inform interval enable | 必选 缺省情况下，CPE周期发送Inform报文功能处于关闭状态
配置CPE发送Inform报文的周期 | cwmp cpe inform interval seconds | 可选 缺省情况下，CPE每隔600秒发送一次Inform报文

2. 配置定时发送Inform报文

表1-9 配置定时发送Inform报文

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入CWMP视图 | cwmp | -
配置CPE在指定时刻发送一次Inform报文 | cwmp cpe inform time time | 必选 缺省情况下，CPE发送Inform报文的日期和时间为空，即没有配置CPE定时发送Inform报文的时间

1.7.4 配置CPE自动重新连接的次数

当CPE向ACS请求建立连接失败，或者在会话过程中连接异常中止（CPE没有收到表示会话正常结束的报文）时，设备可以自动重新发起连接。

表1-10 配置CPE自动重新连接的次数

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入CWMP视图 | cwmp | -
配置当创建连接失败时自动重新连接的次数 | cwmp cpe connect retry times | 可选 缺省情况下，自动重新连接的次数为无限次，即设备会一直按照一定周期给ACS发送连接请求

1.7.5 配置CPE无数据传输超时的时间

无数据传输超时时间主要用于以下两种情况：

l 在连接建立过程中，CPE向ACS发送连接请求，但是经过无数据传输超时时间还没有收到响应报文，CPE将认为连接失败。

l 连接建立后，如果CPE与ACS在无数据传输超时时间内没有报文交互，CPE将认为连接失效，并断开连接。

表1-11 配置CPE无数据传输超时的时间

操作 | 命令 | 说明
进入系统视图 | system-view | -
进入CWMP视图 | cwmp | -
配置CPE无数据传输超时的时间 | cwmp cpe wait timeout seconds | 可选 缺省情况下，无数据传输超时的时间为30秒


1.8 CWMP显示和维护

在完成上述配置后，在任意视图下执行 display 命令可以显示配置后CWMP的运行情况，通过查看显示信息验证配置的效果。

表1-12 cwmp显示和维护

操作 | 命令
显示CWMP的当前配置信息 | display cwmp configuration [ | { begin | exclude | include } regular-expression ]
显示CWMP的当前状态信息 | display cwmp status [ | { begin | exclude | include } regular-expression ]


1.9 CWMP典型配置案例

下文中ACS的配置需要在安装了H3C iMC BIMS软件的服务器上进行。随着软件版本的更新，BIMS的功能和界面可能会有变化，如您所使用的软件界面与本例中不同，请参阅对应您使用版本的软件用户手册进行配置。

1.9.1 组网需求

某数据中心有两个机房（A和B）需要部署大量的设备，目前网络中已存在ACS服务器/DHCP服务器/DNS服务器，为提高部署效率，要求利用CWMP功能为两个机房中的设备分别自动下发不同的配置文件。下面以每个机房内的三台设备为例介绍CWMP功能的配置方法。

图1-3 CWMP典型配置案例组网图

其中部署到两个机房的设备及序列号如表1-13 所示：

表1-13 部署到机房的设备列表

机房 | 设备 | 序列号
A | DeviceA | 210235AOLNH12000008
 | DeviceB | 210235AOLNH12000010
 | DeviceC | 210235AOLNH12000015
B | DeviceD | 210235AOLNH12000017
 | DeviceE | 210235AOLNH12000020
 | DeviceF | 210235AOLNH12000022

网络管理员已经事先为两个机房的设备分别创建了配置文件sys_a.cfg和sys_b.cfg，ACS服务器的访问用户名和密码分别为“vicky”和“12345”，URL地址为http://acs.database:9090/acs。

1.9.2 配置步骤

1. ACS服务器上的配置

在本例中，ACS服务器上的配置包括以下几项：

l 访问ACS服务器的用户名和密码

l 增加CPE设备的信息并将CPE划分到不同的组别

l 为不同的CPE设备组绑定不同的配置文件

ACS服务器上的其余配置保持缺省值即可。

# 在ACS服务器上配置用户名和密码。

选择“系统管理”页签，单击导航树中的[CPE认证用户]菜单项，进入CPE认证用户管理页面。

图1-4 CPE认证用户管理页面

单击<增加>按钮，进入增加CPE认证用户页面。

图1-5 增加CPE认证用户页面

设置用户名、密码及描述后，单击<确定>按钮完成增加操作。

# 在ACS上增加CPE设备分组和类型，这里以增加DeviceA设备到“DB_1”组的“Device_A”类型为例。选择“资源管理”页签，单击导航树中的[分组管理/设备分组]菜单项，进入设备分组页面后单击<增加>按钮，进入增加设备分组页面。

图1-6 增加设备分组页面

设置分组名称后，单击<确定>按钮完成增加操作。

# 单击导航树中的[设备类型]菜单项，进入设备类型页面后单击<增加>按钮，进入增加设备类型页面。

图1-7 增加设备类型页面

设置设备类型名称后，单击<确定>按钮完成增加操作。

# 单击导航树中的[增加设备]菜单项，进入增加设备页面。

图1-8 增加设备页面

设置设备名称及相关信息，并选择设备类型和设备分组后，单击<确定>按钮完成增加操作。

图1-9 增加设备成功页面

重复以上步骤，将DeviceB和DeviceC设备的信息输入，完成机房A中的设备添加任务。

# 在ACS上将配置文件与不同组别的CPE设备绑定，实现自动部署。选择导航树中的[部署向导]菜单项，选择[自动部署设备配置/按设备类型]进行自动部署。

图1-10 部署向导页面

# 在自动部署设备配置页面，选择要部署的配置文件，并将其选择部署为“启动配置”。

图1-11 自动部署设备配置页面

# 单击[选取类型]按钮，进入设备类型选择页面，选取之前创建的Device_A类型，单击<确定>按钮完成选择操作。

图1-12 选取设备类型页面

# 完成选择页面后将返回自动部署设备配置页面，单击<确定>按钮完成部署任务的创建。

图1-13 部署任务创建成功页面

对于机房B中的三台设备，配置步骤基本类似，主要区别如下：

l 需要为机房B的设备创建新的设备类型，例如“Device_B”。

l 在增加设备时，将机房B中的三台设备加入到Device_B类型中。

l 创建部署配置的任务时，将对应机房B的配置文件与Device_B进行关联。

2. DHCP服务器上的配置

DHCP服务器的配置以支持option 43功能的H3C交换机为例进行介绍。如果您使用的是其他DHCP服务器，请参阅软件的使用手册。

l 配置地址池，为CPE设备分配IP地址和DNS服务器，此处以分配10.185.10.0/24网段的地址为例。

# 使能DHCP服务。

<DHCP_server> system-view

[DHCP_server] dhcp enable

# 配置VLAN接口1工作在DHCP服务器模式。

[DHCP_server] interface vlan-interface 1

[DHCP_server-Vlan-interface1] dhcp select server global-pool

[DHCP_server-Vlan-interface1] quit

# 配置不参与自动分配的IP地址（此处包括DNS服务器、ACS服务器）。

[DHCP_server] dhcp server forbidden-ip 10.185.10.41

[DHCP_server] dhcp server forbidden-ip 10.185.10.60

# 配置DHCP地址池0的共有属性（网段、DNS服务器地址）。

[DHCP_server] dhcp server ip-pool 0

[DHCP_server-dhcp-pool-0] network 10.185.10.0 mask 255.255.255.0

[DHCP_server-dhcp-pool-0] dns-list 10.185.10.60

l 配置option 43选项。选项内容包括ACS的地址、用户名和密码。

# 将ACS的地址、用户名和密码转换成ASCII码。其中URL地址对应的ASCII码为68 74 74 70 3A 2F 2F 61 63 73 2E 64 61 74 61 62 61 73 65 3A 39 30 39 30 2F 61 63 73。用户名vicky对应的ASCII码为76 69 63 6B 79，密码12345对应的ASCII码为31 32 33 34 35。

[DHCP_server-dhcp-pool-0] option 43 hex 0140 68747470 3A2F2F61 63732E64 61746162 6173653A 39303930 2F616373 20766963 6B792031 32333435

3. DNS服务器上的配置

在DNS服务器上需要配置域名和地址的映射，将http://acs.database:9090/acs地址映射为http://10.185.1.41:9090/acs。具体配置方法请参见您使用的DNS服务器软件手册。

4. 将CPE接入网络

将CPE上电并连接网线后，CPE将按照CWMP协议的流程自动从ACS处获取配置文件。

5. 在ACS上查看配置效果

选择“资源管理”页签，单击导航树中的[设备交互记录]菜单项，进入设备交互记录查询页面，查看与序列号对应的设备是否已经完成部署配置的操作。

图1-14 设备交互记录界面

确认部署配置操作完成后，网络管理员需要通过ACS向设备发送重启指令，等待设备重启后，将加载ACS下发的配置文件，完成自动配置过程。


99-整本手册

H3C网络技术缩略语表

# A B C D E F G H I L M N O P Q R S T U V W X Z

缩略语 | 英语解释 | 中文解释
A Return
AAL5 | ATM Adaptation Layer 5 | ATM适配层5
ABR | Area Border Router | 区域边界路由器
AC | Access Controller | 接入控制器
AC | Access Category | 接入类
ACCM | Async-Control-Character-Map | 异步控制字符映射表
ACFC | Address-and-Control-Field-Compression | 地址控制字段压缩
ACFP | Application Control Forwarding Protocol | 应用控制转发协议
ACL | Access Control List | 访问控制列表
ACS | Auto-Configuration Server | 自动配置服务器
AD | Active Directory | 活动目录
ADPCM | Adaptive Differential Pulse Code Modulation | 自适应差分脉冲编码调制
ADSL | Asymmetric Digital Subscriber Line | 不对称数字用户线
AES | Advanced Encryption Standard | 高级加密标准
AFT | Address Family Translation | 地址族转换
AFTR | Address Family Transition Router | 地址族转换路由器
AH | Authentication Header | 认证头
AIFSN | Arbitration Inter Frame Spacing Number | 仲裁帧间隙数
AIS | Alarm Indication Signal | 告警指示信号
ALG | Application Level Gateway | 应用层网关
AM | Analog Modem | 模拟调制解调器
AMI | Alternate Mark Inversion | 交替传号反转
ANSI | American National Standard Institute | 美国国家标准协会
AP | Access Point | 接入点
APP | Application Protocol | 应用协议
APPN | Advanced Peer-to-Peer Networking | 高级对等网络
ARP | Address Resolution Protocol | 地址解析协议
AS | Autonomous System | 自治系统
AS | Authentication Server | 认证服务器
ASBR | Autonomous System Boundary Router | 自治系统边界路由器
ASM | Any-Source Multicast | 任意信源组播
ASPF | Application Specific Packet Filter | 基于应用层状态的包过滤
ATD | Attribute Discovery | 属性发现
ATM | Asynchronous Transfer Mode | 异步传输模式
AU | Administration Unit | 管理单元
AV | Anti-Virus | 防病毒
AVF | Active Virtual Forwarder | 处于Active状态的虚拟转发器
AVP | Attribute Value Pair | 属性值对
B Return
B8ZS | Bipolar 8 zeros substitution | 双极性8zero替换码
BAS | Broadband Access Server | 宽带接入服务器
BC | Boundary Clock | 边界时钟
BC | Bandwidth Constraint | 带宽约束
BCB | Backbone Core Bridge | 骨干网核心网桥
BDI | Backward Defect Indication | 反向缺陷通告
BDR | Backup Designated Router | 备份指定路由器
BEB | Backbone Edge Bridge | 骨干网边缘网桥
BFD | Bidirectional Forwarding Detection | 双向转发检测
BGP | Border Gateway Protocol | 边界网关协议
BIMS | Branch Intelligent Management System | 分支网点智能管理系统
B-MAC | Backbone MAC | 骨干网MAC
BMC | Best Master Clock | 最佳主时钟
BOOTP | Bootstrap Protocol | 自举协议
BPDU | Bridge Protocol Data Unit | 桥协议数据单元
BQ | Bandwidth Queuing | 带宽队列
BSB | Blockade State Block | 阻塞状态块
BSR | Bootstrap Router | 自举路由器
BSS | Basic Service Set | 基本服务集
BT | BitTorrent | 比特洪流
B-VLAN | Backbone VLAN | 骨干网VLAN
C Return
CA | Certificate Authority | 证书颁发机构
CAC | Connect Admission Control | 连接准入控制
CAMS | Comprehensive Access Management Server | 综合访问管理服务器
CAPWAP | Controlling and Provisioning of Wireless Access Point | 无线接入点控制与供应
CAR | Committed Access Rate | 承诺访问速率
CBQ | Class Based Queuing | 基于类的队列
CBR | Constant Bit Rate | 确定比特率
CBS | Committed Burst Size | 承诺突发尺寸
C-BSR | Candidate-BSR | 候选BSR
CBT | Core-Based Tree | 有核树
CBWFQ | Class Based Weighted Fair Queuing | 基于类的加权公平队列
CC | Continuity Check | 连续性检测
CCC | Circuit Cross Connect | 电路交叉连接
CCM | Continuity Check Message | 连续性检测报文
CDP | Cisco Discovery Protocol | 思科发现协议
CE | Customer Edge | 用户边缘
CEE | Converged Enhanced Ethernet | 汇聚增强型以太网
CEM Class | Circuit Emulation Class | 电路仿真类
CESOPSN | Circuit Emulation Services over PSN | 分组交换网络上传输电路仿真服务
CFD | Connectivity Fault Detection | 连通错误检测
CFI | Canonical Format Indicator | 标准格式指示位
CFM | Connectivity Fault Management | 连通错误管理
CHAP | Challenge Handshake Authentication Protocol | 质询握手验证协议
CIDR | Classless Inter-Domain Routing | 无类域间路由
CIR | Committed Information Rate | 承诺信息速率
CIST | Common and Internal Spanning Tree | 公共和内部生成树
CO | Central Office | 中心局
COPS | Common Open Policy Service | 公共开放策略服务
CPE | Customer Premises Equipment | 用户侧设备
CPS | Certification Practice Statement | 证书惯例声明
CPTone | Call Progress Tone | 呼叫进程音
CR | Constraint-based Routing | 基于约束的路由
CRC4 | Cyclic Redundancy Check 4 | 4阶循环冗余校验
CRL | Certificate Revocation List | 证书废除列表
CR-LDP | Constraint-based Routed Label Distribution Protocol | 基于约束路由的LDP
CR-LSP | Constraint-based Routed Label Switched Paths | 基于约束路由的LSP
C-RP | Candidate-RP | 候选RP
CSNP | Complete SNP | 全时序报文
CSPF | Constraint-based Shortest Path First | 基于约束的最短路径优先
CST | Common Spanning Tree | 公共生成树
CT | Class Type | 服务类型
CTR | Counter mode | 计数器模式
CV | Connectivity Verification | 连通性检测
CWMP | CPE WAN Management Protocol | CPE广域网管理协议
D Return
DAD | Duplicate Address Detection | 重复地址检测
DAR | Deeper Application Recognition | 深度应用识别
DCBX | Data Center Bridging Exchange Protocol | 数据中心桥能力交换协议
DCC | Dial Control Center | 拨号控制中心
DCE | Date Center Ethernet | 数据中心以太网
DCE | Data Circuit-terminating Equipment | 数据电路终接设备
DCF | Distributed Coordination Function | 分布式协调功能
DD | Database Description | 数据库描述
DDN | Digital Data Network | 数字数据网
DDNS | Dynamic Domain Name System | 动态域名系统
DDoS | Distributed Denial of Service | 分布式拒绝服务
DER | Distinguished Encoding Rules | 特异编码规则
DF | Designated Forwarder | 指定转发者
DH | Diffie-Hellman | 交换及密钥分发
DHCP | Dynamic Host Configuration Protocol | 动态主机配置协议
DHCPv6 | Dynamic Host Configuration Protocol for IPv6 | 支持IPv6的动态主机配置协议
DiffServ | Differentiated Service | 区分业务模型
DLCI | Data Link Connection Identifier | 数据链路关联标识符
DLDP | Device Link Detection Protocol | 设备链路检测协议
DLSw | Data Link Switching | 数据链路交换
DM | Dense Mode | 密集模式
DM | Delay Measurement | 延时测量
DMM | Delay Measurement Message | 时延测量报文
DMR | Delay Measurement Reply | 时延测量应答
DMZ | Demilitarized Zone | 非军事区
DN | Distinguished Name | 识别名
DNAT | Destination NAT | 目的地址NAT
DNS | Domain Name System | 域名系统
DoD | Downstream On Demand | 下游按需方式
DoS | Denial of Service | 拒绝服务
DPD | Dead Peer Detection | 对等体存活检测
DR | Designated Router | 指定路由器
DS | Differentiated Services | 差分服务
DSA | Digital Signature Algorithm | 数字签名算法
DSCP | Differentiated Services Codepoint | 差分服务编码点
DS-lite | Dual Stack Lite | 轻量级双协议栈
DTE | Data Terminal Equipment | 数据终端设备
DTMF | Dual Tone Multi-Frequency | 双音多频
DU | Downstream Unsolicited | 下游自主方式
DUID | DHCP Unique Identifier | DHCP唯一标识符
DUID-LL | DUID Based on Link-layer Address | 基于链路层地址的DUID
DVMRP | Distance Vector Multicast Routing Protocol | 距离矢量组播路由协议
DVPN | Dynamic Virtual Private Network | 动态虚拟私有网络
DWDM | Dense Wavelength Division Multiplexing | 密级波分复用
E Return
E2ETC | End-to-End Transparent Clock | 端到端透明时钟
EACL | Enhanced ACL | 增强型ACL
EAD | Endpoint Admission Defense | 端点准入防御
EAIS | Ethernet Alarm Indication Signal | 以太网告警指示信号
EAP | Extensible Authentication Protocol | 可扩展认证协议
EAPOL | Extensible Authentication Protocol over LAN | 局域网上的可扩展认证协议
EBS | Excess Burst Size | 超出突发尺寸
ECDSA | Elliptic Curve Digital Signature Algorithm | 椭圆曲线数字签名算法
ECM | Error Correction Mode | 误码纠错模式
ECWmax | Exponent form of CWmax | 最大竞争窗口指数形式
ECWmin | Exponent form of CWmin | 最小竞争窗口指数形式
EDCA | Enhanced Distributed Channel Access | 增强的分布式信道访问
EGP | Exterior Gateway Protocol | 外部网关协议
End-Of-RIB | End of Routing-Information-Base | 路由信息库结束
ENUM | Telephone Number Mapping | 电话号码映射
ERT | Export Route-target | 引出路由标识
ESF | Extended Super Frame | 扩展超帧
ESP | Encapsulating Security Payload | 封装安全载荷
ESS | Extended Service Set | 扩展服务集
ETS | Enhanced Transmission Selection | 增强传输选择
ETSI | European Telecommunications Standards Institute | 欧洲电信标准协会
F Return
FC | Fibre Channel | 光纤通道
FCoE | Fibre Channel over Ethernet | 以太网光纤通道
FEC | Forwarding Equivalence Class | 转发等价类
FFD | Fast Failure Detection | 快速缺陷检测
FIB | Forwarding Information Base | 转发信息库
FIFO | First In First Out | 先入先出
FIP | FCoE Initialization Protocol | FCoE初始化协议
FQDN | Fully Qualified Domain Name | 完全合格域名
FRR | Fast Reroute | 快速重路由
FSK | Frequency Shift Keying | 频移键控
FTN | FEC to NHLFE map | FEC到NHLFE表项的映射
FTP | File Transfer Protocol | 文件传输协议
G Return
GARP | Generic Attribute Registration Protocol | 通用属性注册协议
GBIC | Gigabit Interface Converter | 千兆以太网接口转换器
GI | Guard Interval | 保护间隔
GNS | Get Nearest Server | 请求最近的服务器
GPS | Global Positioning System | 全球定位系统
GR | Graceful Restart | 平滑重启
GRE | Generic Routing Encapsulation | 通用路由封装
GTK | Group Temporal Key | 群组临时密钥
GTP | GPRS Tunneling Protocol | GPRS隧道协议
GTS | Generic Traffic Shaping | 通用流量整形
GTSM | Generalized TTL Security Mechanism | 通用TTL安全保护机制
GVRP | GARP VLAN Registration Protocol | GARP VLAN注册协议
H Return
HABP | HW Bypass Protocol | HW旁路认证协议
HDB3 | High-density Bipolar 3 | 3阶高密度双极性码
HDLC | High-level Data Link Control | 高级数据链路控制
HGMP | HW Group Management Protocol | HW组管理协议
HGMPv2 | HW Group Management Protocol version 2 | HW组管理协议版本2
HQoS | Hierarchical Quality of Service | 分层QoS
HTTP | Hypertext Transfer Protocol | 超文本传输协议
HTTPS | Hypertext Transfer Protocol Secure | 超文本传输协议的安全版本
H-VPLS | Hierarchy of VPLS | 分层VPLS
HWTACACS | HW Terminal Access Controller Access Control System | HW终端访问控制器控制系统协议
I Return
IA | Identity Association | 标识联盟
IACTP | Inter Access Controller Tunneling Protocol | 接入控制器间隧道协议
IAD | Integrated Access Device | 综合接入设备
IANA | Internet Assigned Numbers Authority | 互联网编号分配委员会
IBGP | Internal Border Gateway Protocol | 内部边界网关协议
ICMP | Internet Control Message Protocol | 互联网控制报文协议
ICMPv6 | Internet Control Message Protocol for IPv6 | IPv6互联网控制消息协议
ICPIF | Calculated Planning Impairment Factor | 计算计划损伤元素
ID | Direct Inward Dialing | 直接内部呼叫
IDS | Intrusion Detection System | 入侵检测系统
IE | Information Element | 信息元素
IEEE | Institute of Electrical and Electronics Engineers | 电气和电子工程师学会
IETF | Internet Engineering Task Force | 互联网工程任务组
IGMP | Internet Group Management Protocol | 互联网组管理协议
IGMP Snooping | Internet Group Management Protocol Snooping | 互联网组管理协议窥探
IGP | Interior Gateway Protocol | 内部网关协议
IKE | Internet Key Exchange | 互联网密钥交换
ILM | Incoming Label Map | 入标签映射
ILS | Internet Locator Service | 互联网定位服务
IM | Instant Messaging | 即时消息服务
IMA | Inverse Multiplexing for ATM | ATM反向复用
IMSI | International Mobile Subscriber Identification Number | 国际移动用户标识
InARP | Inverse Address Resolution Protocol | 逆向地址解析协议
IntServ | Integrated Service | 综合业务模型
IPC | Inter-process Communication | 进程间通信
IPHC | IP Header Compression | IP报文头压缩
IPng | IP Next Generation | 下一代互联网
IPS | Intrusion Prevention System | 入侵防御系统
IPsec | IP Security | IP安全
IPTA | IP Terminal Access | IP终端接入
IPv6 | Internet Protocol Version 6 | 互联网协议版本6
IPX | Internetwork Packet Exchange | 网际报文交换
IRDP | ICMP Router Discovery Protocol | ICMP路由器发现协议
IRF | Intelligent Resilient Framework | 智能弹性架构
ISAKMP | Internet Security Association and Key Management Protocol | 互联网安全联盟和密钥管理协议
ISATAP | Intra-Site Automatic Tunnel Addressing Protocol | 站点内自动隧道寻址协议
ISDN | Integrated Services Digital Network | 综合业务数字网
I-SID | Backbone Service Instance Identifier | 骨干网服务实例编号
IS-IS | Intermediate System-to-Intermediate System | 中间系统到中间系统
ISP | Internet Service Provider | 互联网服务提供商
ISPF | Incremental Shortest Path First | 增量最短路径优先
ISSU | In-Service Software Upgrade | 不中断业务升级
IST | Internal Spanning Tree | 内部生成树
ITSP | Internet Telephone Service Provider | 互联网电话运营商
IVR | Interactive Voice Response | 交互式语音应答
L Return
L2F | Layer 2 Forwarding | 二层转发
L2TP | Layer 2 Tunneling Protocol | 二层隧道协议
LAC | L2TP Access Concentrator | L2TP访问集中器
LACP | Link Aggregation Control Protocol | 链路聚合控制协议
LACPDU | Link Aggregation Control Protocol Data Unit | 链路聚合控制协议数据单元
LAN | Local Area Network | 局域网
LB | Load Balance | 负载均衡
LBM | Loopback Message | 环回报文
LBR | Loopback Reply | 环回应答
LC | Logic Channel | 逻辑信道
LCI | Logic Channel Identifier | 逻辑信道号
LCP | Link Control Protocol | 链路控制协议
LDAP | Lightweight Directory Access Protocol | 轻量级目录访问协议
LDP | Label Distribution Protocol | 标签分发协议
LER | Label Edge Router | 标签边缘路由器
LFI | Link Fragmentation and Interleaving | 链路分片与交叉
LFIB | Label Forwarding Information Base | 标签转发表
LLDP | Link Layer Discovery Protocol | 链路层发现协议
LLDPDU | Link Layer Discovery Protocol Data Unit | 链路层发现协议数据单元
LLDP-MED | Media Endpoint Discovery | 媒体终端发现
LLQ | Low Latency Queuing | 低延迟队列
LM | Loss Measurement | 丢包测量
LMI | Local Management Interface | 本地管理接口
LMM | Loss Measurement Message | 丢包测量报文
LMR | Loss Measurement Reply | 丢包测量应答
LNS | L2TP Network Server | L2TP网络服务器
LOCV | Loss of Connectivity Verification defect | 连通性检测缺陷
LR | Line Rate | 物理接口限速
LSA | Link State Advertisement | 链路状态通告
LSAck | Link State Acknowledgment | 链路状态确认
LSDB | Link State Database | 链路状态数据库
LSP | Label Switched Path | 标签交换路径
LSR | Link State Request | 链路状态请求
LSR | Label Switching Router | 标签交换路由器
LSU | Link State Update | 链路状态更新
LTM | Linktrace Message | 链路跟踪报文
LTR | Linktrace Reply | 链路跟踪应答
LVF | Listening Virtual Forwarder | 处于Listening状态的虚拟转发器
M Return
MA | Maintenance Association | 维护集
MAC | Media Access Control | 媒体访问控制
MAC | Message Authentication Code | 消息验证码
MAD | Multi-Active Detection | 多Active检测
MAM | Maximum Allocation Model | 最大分配模型
MAN | Metropolitan Area Network | 城域网
MBGP | Multicast BGP | 组播BGP
MCE | Multi-VPN-instance Customer Edge | 多实例用户网络边界设备
MCS | Modulation and Coding Scheme | 调制与编码策略
MD | Maintenance Domain | 维护域
MD | Multicast Domain | 组播域
MDI | Medium Dependent Interface | 介质相关接口
MEP | Maintenance association End Point | 维护端点
MIB | Management Information Base | 管理信息库
MIC | Message Integrity Check | 信息完整性校验
MIP | Maintenance association Intermediate Point | 维护中间点
MLD | Multicast Listener Discovery Protocol | 组播侦听者发现协议
MLD Snooping | Multicast Listener Discovery Snooping | 组播侦听者发现协议窥探
MLSP | Mobile Link Switch Protocol | 移动链路切换协议
MOS | Mean Opinion Scores | 平均意见得分
MP | Maintenance Point | 维护点
MP-BGP | Multiprotocol Border Gateway Protocol | 多协议边界网关协议
MPLS | Multiprotocol Label Switching | 多协议标签交换
MPLS TE | Multiprotocol Label Switching Traffic Engineering | 多协议标记交换流量工程
MPLS-TP | MPLS Transport Profile | MPLS传输技术架构
MSDP | Multicast Source Discovery Protocol | 组播源发现协议
MSTI | Multiple Spanning Tree Instance | 多生成树实例
MSTP | Multiple Spanning Tree Protocol | 多生成树协议
MTBF | Mean Time Between Failures | 平均故障间隔时间
MTR | Multi-Topology Routing | 多拓扑路由
MTTR | Mean Time to Repair | 平均修复时间
MTU | Maximum Transmission Unit | 最大传输单元
MU | Mobile Unit | 移动设备
N Return
NAPT | Network Address Port Translation | 网络地址端口转换
NAPT-PT | Network Address Port Translation-Protocol Translation | 附带协议转换的网络地址端口转换
NAS | Network Access Server | 网络接入服务器
NAT | Network Address Translation | 网络地址转换
NAT-PT | Network Address Translation-Protocol Translation | 附带协议转换的网络地址转换
NBMA | Non-Broadcast Multi-Access | 非广播多路访问
NCP | Network Control Protocol | 网络控制协议
ND | Neighbor Discovery | 邻居发现
NDA | NetStream Data Analyzer | 网络流数据分析
NDE | NetStream Data Exporter | 网络流数据输出
NDP | Neighbor Discover Protocol | 邻居发现协议
NET | Network Entity Title | 网络实体名称
NETCONF | Network Configuration Protocol | 网络配置协议
NHLFE | Next Hop Label Forwarding Entry | 下一跳标签转发项
NLPID | Network Layer Protocol Identifier | 网络层协议标识符
NLRI | Network Layer Reachability Information | 网络层可达性信息
NMS | Network Management System | 网络管理系统
NNI | Network-to-Network Interface | 网间网接口
NQA | Network Quality Analyzer | 网络质量分析
nrt_VBR | Nonreal-time Variable Bit Rate | 非实时可变比特率
NSC | NetStream Collector | 网络流数据收集
NSF | Non-Standard Facilities | 非标准能力
NSR | Nonstop Routing | 不间断路由
NTDP | Neighbor Topology Discover Protocol | 邻居拓扑发现协议
NTP | Network Time Protocol | 网络时间协议
O Return
OAA | Open Application Architecture | 开放应用架构
OAMPDU | OAM Protocol Data Units | OAM协议数据单元
OAP | Open Application Platform | 开放应用平台
OC | Optical Carrier | 光载波
OC | Ordinary Clock | 普通时钟
OID | Object Identifier | 对象标识符
ORF | Outbound Route Filtering | 输出路由过滤
OSPF | Open Shortest Path First | 开放最短路径优先
OUI | Organizationally Unique Identifier | 全球统一标识符
P Return
P2MP | Point-to-MultiPoint | 点到多点
P2P | Point-to-Point | 点到点
P2P | Peer-to-Peer | 对等
P2P | PW to PW | PW到PW
P2P | Point to Point | 点到点
P2PTC | Peer-to-Peer Transparent Clock | 点到点透明时钟
PAGP | Port Aggregation Protocol | 端口聚合协议
PAM | Port to Application Map | 应用协议端口映射
PAP | Password Authentication Protocol | 密码验证协议
PAT | Port Address Translation | 端口地址转换
PBB | Provider Backbone Bridge | 运营商骨干网桥
PBBN | Provider Backbone Bridge Network | 运营商骨干桥接网
PBN | Provider Bridge Network | 运营商桥接网
PCM | Pulse Code Modulation | 脉冲编码调制
PCR | Peak Cell Rate | 峰值信元速率
PD | Powered Device | 受电设备
PD | Prefix Delegation | 前缀授权
PDH | Plesiochronous Digital Hierarchy | 准同步数字体系
PDP | Policy Decision Point | 策略决策者
PDU | Protocol Data Unit | 协议数据单元
PE | Provider Edge | 服务提供商网络边缘
PE-agg | PE Aggregation | 聚合PE
PEAP-GTC | Protected Extensible Authentication Protocol-Microsoft Generic Token Card | 受保护的扩展认证协议-通用令牌卡
PEAP-MSCHAPv2 | Protected Extensible Authentication Protocol-Microsoft Challenge Handshake Authentication Protocol v2 | 受保护的扩展认证协议-Microsoft质询握手身份验证协议版本2
PEP | Policy Enforcement Point | 策略执行者
PFC | Protocol-Field-Compression | 协议字段压缩
PFC | Priority-based Flow Control | 基于优先级的流量控制
PFS | Perfect Forward Secrecy | 完善的前向安全性
PHP | Penultimate Hop Popping | 倒数第二跳弹出
PI | Power Interface | 电源接口
PIM | Protocol Independent Multicast | 协议无关组播
PIM Snooping | Protocol Independent Multicast Snooping | 协议无关组播窥探
PKCS | Public Key Cryptography Standards | 公共密钥加密标准
PKI | Public Key Infrastructure | 公钥基础设施
PMK | Pairwise Master Key | 成对主密钥
PMTU | Path MTU | 路径MTU
PoE | Power over Ethernet | 以太网供电
POH | Path Overhead | 通道开销字节
POP3 | Post Office Protocol, Version 3 | 邮局协议的第3个版本
POS | Point of Sale | 销售点
PPP | Point-to-Point Protocol | 点到点协议
PPPoE | Point-to-Point Protocol over Ethernet | 点到点以太网承载协议
PPTP | Point-to-Point Tunneling Protocol | 点到点隧道协议
PRL | Preferred Roming List | 优先漫游列表
PS | Protection Switching | 保护倒换
PSB | Path State Block | 路径状态块
PSC | Protection State Coordination | 保护状态调整
PSE | Power Sourcing Equipment | 供电设备
PSK | Pre-Shared Key | 预共享密钥
PSNP | Partial SNP | 部分时序报文
PSTN | Public Switched Telephone Network | 公共电话交换网
PTP | Precision Time Protocol | 精确时间协议
PTY | Pseudo-Terminals | 伪终端
PVC | Permanent Virtual Circuit | 永久虚电路
PVST | Per VLAN Spanning Tree | 每VLAN生成树
PXE | Preboot eXecution Environment | 预启动执行环境
Q Return
QoS | Quality of Service | 服务质量
QPPB | QoS Policy Propagation Through the Border Gateway Protocol | 通过BGP传播QoS策略
R Return
RA | Router Advertisement | 路由器通告
RA | Registration Authority | 注册机构
RADIUS | Remote Authentication Dial-In User Service | 远程认证拨号用户服务
RD | Route Distinguisher | 路由标识符
RDI | Remote Defect Indication | 远程故障指示
RDM | Russian Dolls Model | 俄罗斯套娃模型
RED | Random Early Detection | 随机早期检测
RFID | Radio Frequency Identification | 射频识别
RIP | Routing Information Protocol | 路由信息协议
RIP-2 | Routing Information Protocol version 2 | 路由信息协议版本2
RLSN | Remote Link Status Notification | 远程链路状态通告
RMON | Remote Network Monitoring | 远程网络监视
RP | Rendezvous Point | 汇集点
RPA | Rendezvous Point Address | 汇集点地址
RPF | Reverse Path Forwarding | 逆向路径转发
RPL | Rendezvous Point Link | 汇集点链路
RPR | Resilient Packet Ring | 弹性分组环
RPT | Rendezvous Point Tree | 共享树
RR | Router Renumber | 路由器重编号
RRPP | Rapid Ring Protection Protocol | 快速环网保护协议
RS | Router Solicitation | 路由器请求
RSB | Reservation State Block | 预留状态块
RSH | Remote Shell | 远程外壳
RSN | Robust Security Network | 健壮安全网络
RSNA | Robust Security Network Association | 健壮安全网络连接
RSTP | Rapid Spanning Tree Protocol | 快速生成树协议
RSVP | Resource Reservation Protocol | 资源预留协议
rt_VBR | Real-time Variable Bit Rate | 实时可变比特率
RTC | Remote Terminal Connection | 远程终端连接
RTCP | Real-Time Transport Control Protocol | 实时传输控制协议
RTP | Real-Time Transport Protocol | 实时传输协议
RTS | Request to Send | 发送请求
RTSP | Real Time Streaming Protocol | 实时流协议
S Return
SA | Security Association | 安全联盟
SA | Source Active | 信源有效
SABM | Set Asynchronous Balanced Mode | 置异步平衡模式
SAN | Storage Area Networks | 存储网络
SAP | Service Advertising Protocol | 服务公告协议
SATOP | Structure-Agnostic TDM over Packet | 分组网络上传输非结构化的TDM数据
SAVI | Source Address Validation | 源地址有效性验证
SBM | Subnetwork Bandwidth Management | 子网带宽管理
SCCP | Skinny Client Control Protocol | 瘦小客户端控制协议
SCEP | Simple Certificate Enrollment Protocol | 简单证书注册协议
SCFF | Single Choke Fairness Frame | 公平算法帧
SDH | Synchronous Digital Hierarchy | 同步数字系列
SDLC | Synchronous Data Link Control | 同步数据链路控制
SDP | Session Description Protocol | 会话描述协议
SDU | Service Data Unit | 协议数据单元
SF | Super Frame | 超帧
sFlow | Sampled Flow | 采样流
SFM | Source-Filtered Multicast | 信源过滤组播
SFP | Small Form-factor Pluggable | 小封装可热插拔
SFTP | Secure FTP | 安全的FTP
SIP | Session Initiation Protocol | 会话初始协议
SIPS | SIP secure | 安全SIP
SLA | Service Level Agreement | 服务等级协定
SLAAC-Only | Stateless Address Autoconfiguration | 无状态地址自动配置
SLIP | Serial Line Internet Protocol | 串行线路互联网协议
SM | Sparse Mode | 稀疏模式
SMTP | Simple Mail Transfer Protocol | 简单邮件传输协议
SNA | System Network Architecture | 系统网络结构体系
SNAP | Subnetwork Access Protocol | 子网访问协议
SNMP | Simple Network Management Protocol | 简单网络管理协议
SNPA | Subnetwork Point of Attachment | 子网连接点
SNR | Signal-to-Noise Ratio | 信噪比
SONET | Synchronous Optical Network | 同步光网络
SOO | Site of Origin | 路由源
SP | Service Provider | 服务提供商
SP | Strict Priority | 严格优先级
SPCS | Stored Program Control Switching System | 程控交换机
SPE | Superstratum PE or Sevice Provider-end PE | 上层PE或运营商侧PE
SPF | Shortest Path First | 最短路径优先
SPI | Security Parameter Index | 安全参数索引
SPID | Service Profile Identification | 业务轮廓标识
SPT | Shortest Path Tree | 最短路径树
SQL | Structured Query Language | 结构化查询语言
SRTP | Secure Real-time Transport Protocol | 安全RTP协议
SSH | Secure Shell | 安全外壳
SSID | Service Set Identifier | 服务集标识符
SSL | Secure Sockets Layer | 安全套接字层
SSM | Source-Specific Multicast | 指定信源组播
SSM | Synchronization Status Marker | 同步状态信息
SSP | Switch-to-Switch Protocol | 交换机到交换机协议
ST | Shared Tree | 共享树
STP | Spanning Tree Protocol | 生成树协议
SVC | Static Virtual Circuit | 静态虚拟电路
SVC | Switched Virtual Circuit | 交换虚电路
SVP | Spectralink Voice Priority | Spectralink语音优先级
T Return
TA | Terminal Adapter | 终端适配器
TC | Topology Checksum | 拓扑校验和
TC | Transparent Clock | 透明时钟
TCI | Tag Control Information | 标签控制信息
TCN BPDU | Topology Change Notification BPDU | 拓扑变化通知BPDU
TDM | Time Division Multiplexing | 时分复用
TE | Traffic Engineering | 流量工程
TEDB | TE DataBase | 流量工程数据库
TFTP | Trivial File Transfer Protocol | 简单文件传输协议
TLS | Transport Layer Security | 传输层安全
TLS | Transparent LAN Service | 透明局域网服务
ToS | Type of Service | 服务类型
TP | Topology Protection | 拓扑保护
TPDU | Transport Protocol Data Unit | 传输协议数据单元
TPID | Tag Protocol Identifier | 标签协议标识符
TRIP | Triggered RIP | 触发路由信息协议
TS | Traffic Shaping | 流量整形
TST | Test | 比特错误测试
TTL | Time to Live | 生存时间
TTY | True Type Terminal | 实体类型终端
TU | Tributary Unit | 支路单元
TXOPLimit | Transmission Opportunity Limit | 传输机会限制
U Return
UA | Unnumbered Acknowledge | 无编号确认
U-APSD | Unscheduled automatic power-save delivery | 非调度自动节能发送
UBR | Unspecified Bit Rate | 不确定比特率
UDLD | Uni-directional Link Direction | 单向链路检测
UNI | User Network Interface | 用户网络接口
URL | Uniform Resource Locator | 统一资源定位符
URPF | Unicast Reverse Path Forwarding | 单播反向路径转发
USM | User-Based Security Model | 基于用户的安全模型
UTC | Coordinated Universal Time | 国际协调时间
V Return
VAD | Voice Activity Detection | 静音检测
VAM | VPN Address Management | VPN地址管理
VC | Virtual Circuit | 虚电路
VC | Virtual Container | 虚容器
VCC | Virtual Circuit Connection | 虚电路连接
VCN | Virtual Circuit Number | 虚电路号
VE | Virtual Ethernet | 虚拟以太网
VE-Bridge | Virtual Ethernet Bridge | 二层虚拟以太网
VF Owner | Virtual Forwarder Owner | 虚拟转发器拥有者
VLAN | Virtual Local Area Network | 虚拟局域网
VoD | Video on Demand | 视频点播
VoIP | Voice over IP | 在IP上传送语音
VP | Virtual Path | 虚路径
VPC | Virtual Path Connection | 虚路径连接
VPDN | Virtual Private Dial-up Network | 虚拟专用拨号网络
VPLS | Virtual Private LAN Service | 虚拟专用局域网服务
VPN | Virtual Private Network | 虚拟专用网络
VRRP | Virtual Router Redundancy Protocol | 虚拟路由器冗余协议
VSAN | Virtual Storage Area Network | 虚拟SAN
VSI | Virtual Switch Instance | 虚拟交换实例
VT | Virtual-template | 虚拟接口模板
VTP | VLAN Trunking Protocol | VLAN中继协议
VTY | Virtual Type Terminal | 虚拟类型终端
W Return
WAI | WLAN Authentication Infrastructure | 无线局域网鉴别基础结构
WAN | Wide Area Network | 广域网
WAPI | WLAN Authentication and Privacy Infrastructure | 无线局域网鉴别与保密基础结构
WDS | Wireless Distribution System | 无线分布式系统
WEP | Wired Equivalent Privacy | 有线等效加密
WFQ | Weighted Fair Queuing | 加权公平队列
WIDS | Wireless Intrusion Detection System | 无线入侵检测系统
WiNet | Wisdom Network | 智能网络
WINS | Windows Internet Naming Service | Windows互联网名称服务
WLAN | Wireless Local Area Network | 无线局域网
WMM | Wi-Fi Multimedia | Wi-Fi多媒体
WPA | Wi-Fi Protected Access | Wi-Fi保护访问
WPI | WLAN Privacy Infrastructure | 无线局域网保密基础结构
WRED | Weighted Random Early Detection | 加权随机早期检测
WRR | Weighted Round Robin | 加权轮询
WWN | World Wide Name | 全球名字
WWW | World Wide Web | 万维网
X Return
XENPAK | 10-Gigabit Ethernet Transceiver Package | 万兆以太网接口收发器集合封装
XFP | 10-Gigabit small Form-factor Pluggable | 万兆以太网接口小封装可热插拔
XML | Extensible Markup Language | 扩展标记语言
Z Return
ZBR | Zone Border Router | 区域边界路由器


10-网络管理和监控配置指导

相关链接

  • 00-前言
  • 01-系统维护与调试配置
  • 02-NTP配置
  • 03-信息中心配置
  • 04-SNMP配置
  • 05-RMON配置
  • 06-镜像配置
  • 07-NQA配置
  • 08-sFlow配置
  • 09-IPC配置
  • 10-PoE配置
  • 11-集群管理配置
  • 12-CWMP配置


09-DHCPv6配置

相关链接

  • 1 DHCPv6简介
  • 2 DHCPv6服务器配置
  • 3 DHCPv6中继配置
  • 4 DHCPv6客户端配置
  • 5 DHCPv6 Snooping配置
父主题： 04-三层技术-IP业务配置指导


12-SSH2.0配置

相关链接

  • 1 SSH2.0配置
  • 2 SFTP配置
父主题： 08-安全配置指导


05-RRPP配置

相关链接

  • 1 RRPP配置
父主题： 09-可靠性配置指导


02-IP地址配置

相关链接

  • 1 IP地址配置
父主题： 04-三层技术-IP业务配置指导


02-登录交换机配置

相关链接

  • 1 登录交换机方式介绍
  • 2 配置用户通过CLI登录设备
  • 3 配置通过Web网管登录设备
  • 4 配置通过NMS登录设备
  • 5 对登录用户的控制
父主题： 01-基础配置指导


09-自动配置

相关链接

  • 1 自动配置
父主题： 01-基础配置指导


04-文件系统管理配置

相关链接

  • 1 文件系统管理
父主题： 01-基础配置指导


08-VLAN配置

相关链接

  • 1 VLAN配置
  • 2 Super VLAN配置
  • 3 Isolate-user-VLAN配置
  • 4 Voice VLAN配置
父主题： 03-二层技术-以太网交换配置指导


09-MBGP配置

相关链接

  • 1 MBGP配置
父主题： 06-IP组播配置指导


04-OSPF配置

相关链接

  • 1 OSPF配置
父主题： 05-三层技术-IP路由配置指导


12-GRE配置

相关链接

  • 1 GRE配置
父主题： 04-三层技术-IP业务配置指导


01-IRF配置

相关链接

  • 1 IRF配置
父主题： 02-IRF配置指导


13-策略路由配置

相关链接

  • 1 策略路由配置
父主题： 05-三层技术-IP路由配置指导


09-IPC配置

相关链接

  • 1 IPC配置
父主题： 10-网络管理和监控配置指导


13-IPv6组播路由与转发配置

相关链接

  • 1 IPv6组播路由与转发配置
父主题： 06-IP组播配置指导


16-IPv6 MBGP配置

相关链接

  • 1 IPv6 MBGP配置
父主题： 06-IP组播配置指导


11-Track配置

相关链接

  • 1 Track配置
父主题： 09-可靠性配置指导


06-端口安全配置

相关链接

  • 1 端口安全配置
父主题： 08-安全配置指导


09-公钥管理配置

相关链接

  • 1 公钥管理配置
父主题： 08-安全配置指导


08-MSDP配置

相关链接

  • 1 MSDP配置
父主题： 06-IP组播配置指导


06-BGP配置

相关链接

  • 1 BGP配置
父主题： 05-三层技术-IP路由配置指导


10-BFD配置

相关链接

  • 1 BFD配置
父主题： 09-可靠性配置指导


12-CWMP配置

相关链接

  • 1 CWMP配置
父主题： 10-网络管理和监控配置指导


09-双机热备配置

相关链接

  • 1 双机热备配置
父主题： 09-可靠性配置指导


11-隧道配置

相关链接

  • 1 隧道配置
父主题： 04-三层技术-IP业务配置指导


07-IPv6静态路由配置

相关链接

  • 1 IPv6静态路由配置
父主题： 05-三层技术-IP路由配置指导


11-IPv6 PIM Snooping配置

相关链接

  • 1 IPv6 PIM Snooping配置
父主题： 06-IP组播配置指导


09-OSPFv3配置

相关链接

  • 1 OSPFv3配置
父主题： 05-三层技术-IP路由配置指导


07-ISSU配置

相关链接

  • 1 ISSU配置
  • 2 ISSU典型配置举例
父主题： 01-基础配置指导


03-RIP配置

相关链接

  • 1 RIP配置
父主题： 05-三层技术-IP路由配置指导


07-Monitor Link配置

相关链接

  • 1 Monitor Link配置
父主题： 09-可靠性配置指导


07-UDP Helper配置

相关链接

  • 1 UDP Helper配置
父主题： 04-三层技术-IP业务配置指导


08-安全配置指导

相关链接

  • 00-前言
  • 01-AAA配置
  • 02-802.1X配置
  • 03-MAC地址认证配置
  • 04-Portal配置
  • 05-Triple认证配置
  • 06-端口安全配置
  • 07-User Profile配置
  • 08-HABP配置
  • 09-公钥管理配置
  • 10-PKI配置
  • 11-IPsec配置
  • 12-SSH2.0配置
  • 13-SSL配置
  • 14-TCP攻击防御配置
  • 15-IP Source Guard配置
  • 16-ARP攻击防御配置
  • 17-ND攻击防御配置
  • 18-URPF配置
  • 19-MFF配置
  • 20-SAVI配置
  • 21-黑名单配置


09-可靠性配置指导

相关链接

  • 00-前言
  • 01-可靠性概述
  • 02-以太网OAM配置
  • 03-CFD配置
  • 04-DLDP配置
  • 05-RRPP配置
  • 06-Smart Link配置
  • 07-Monitor Link配置
  • 08-VRRP配置
  • 09-双机热备配置
  • 10-BFD配置
  • 11-Track配置


01-ACL配置

相关链接

  • 1 ACL配置
父主题： 07-ACL和QoS配置指导


01-AAA配置

相关链接

  • 1 AAA配置
父主题： 08-安全配置指导


01-ARP配置

相关链接

  • 1 ARP配置
  • 2 免费ARP配置
  • 3 代理ARP配置
  • 4 ARP Snooping配置
父主题： 04-三层技术-IP业务配置指导


06-镜像配置

相关链接

  • 1 端口镜像配置
  • 2 流镜像配置
父主题： 10-网络管理和监控配置指导


05-RMON配置

相关链接

  • 1 RMON配置
父主题： 10-网络管理和监控配置指导


11-IPsec配置

相关链接

  • 1 IPsec配置
父主题： 08-安全配置指导


13-SSL配置

相关链接

  • 1 SSL配置
父主题： 08-安全配置指导


07-PIM配置

相关链接

  • 1 PIM配置
父主题： 06-IP组播配置指导


10-PKI配置

相关链接

  • 1 PKI配置
父主题： 08-安全配置指导


10-PoE配置

相关链接

  • 1 PoE配置
父主题： 10-网络管理和监控配置指导


18-URPF配置

相关链接

  • 1 配置URPF
父主题： 08-安全配置指导


16-ARP攻击防御配置

相关链接

  • 1 ARP攻击防御配置
父主题： 08-安全配置指导


04-DLDP配置

相关链接

  • 1 DLDP配置
父主题： 09-可靠性配置指导


03-DHCP配置

相关链接

  • 1 DHCP概述
  • 2 DHCP服务器配置
  • 3 DHCP中继配置
  • 4 DHCP客户端配置
  • 5 DHCP Snooping配置
  • 6 BOOTP客户端配置
父主题： 04-三层技术-IP业务配置指导


11-VLAN映射配置

相关链接

  • 1 VLAN映射配置
父主题： 03-二层技术-以太网交换配置指导


02-Loopback接口和Null接口配置

相关链接

  • 1 Loopback接口和NULL接口配置
父主题： 03-二层技术-以太网交换配置指导


15-IPv6 PIM配置

相关链接

  • 1 IPv6 PIM配置
父主题： 06-IP组播配置指导


02-QoS配置

相关链接

  • 1 QoS简介
  • 2 QoS配置方式
  • 3 优先级映射配置
  • 4 流量监管、流量整形和端口限速配置
  • 5 拥塞管理配置
  • 6 拥塞避免配置
  • 7 流量过滤配置
  • 8 重标记配置
  • 9 流量重定向配置
  • 10 全局CAR配置
  • 11 流量统计配置
  • 12 配置数据缓冲区
  • 13 附录
父主题： 07-ACL和QoS配置指导


06-IGMP配置

相关链接

  • 1 IGMP配置
父主题： 06-IP组播配置指导


08-sFlow配置

相关链接

  • 1 sFlow配置
父主题： 10-网络管理和监控配置指导


05-IRDP配置

相关链接

  • 1 IRDP配置
父主题： 04-三层技术-IP业务配置指导


08-IPv6基础配置

相关链接

  • 1 IPv6基础配置
父主题： 04-三层技术-IP业务配置指导


03-二层技术-以太网交换配置指导

相关链接

  • 00-前言
  • 01-以太网端口配置
  • 02-Loopback接口和Null接口配置
  • 03-MAC地址表配置
  • 04-以太网链路聚合配置
  • 05-端口隔离配置
  • 06-生成树配置
  • 07-BPDU Tunnel配置
  • 08-VLAN配置
  • 09-GVRP配置
  • 10-QinQ配置
  • 11-VLAN映射配置
  • 12-LLDP配置
  • 13-业务环回组配置


04-SNMP配置

相关链接

  • 1 SNMP配置
  • 2 配置MIB风格
父主题： 10-网络管理和监控配置指导


06-软件升级配置

相关链接

  • 1 软件升级配置
父主题： 01-基础配置指导


05-IS-IS配置

相关链接

  • 1 IS-IS配置
父主题： 05-三层技术-IP路由配置指导


01-以太网端口配置

相关链接

  • 1 以太网端口配置
父主题： 03-二层技术-以太网交换配置指导


02-静态路由配置

相关链接

  • 1 静态路由配置
父主题： 05-三层技术-IP路由配置指导


11-IPv6 BGP配置

相关链接

  • 1 IPv6 BGP配置
父主题： 05-三层技术-IP路由配置指导


03-FTP和TFTP配置

相关链接

  • 1 FTP配置
  • 2 TFTP配置
父主题： 01-基础配置指导


03-MAC地址认证配置

相关链接

  • 1 MAC地址认证配置
父主题： 08-安全配置指导


07-NQA配置

相关链接

  • 1 NQA配置
父主题： 10-网络管理和监控配置指导


02-NTP配置

相关链接

  • 1 NTP配置
父主题： 10-网络管理和监控配置指导


05-组播路由与转发配置

相关链接

  • 1 组播路由与转发配置
父主题： 06-IP组播配置指导


21-黑名单配置

相关链接

  • 1 黑名单配置
父主题： 08-安全配置指导


02-以太网OAM配置

相关链接

  • 1 以太网OAM配置
父主题： 09-可靠性配置指导


01-系统维护与调试配置

相关链接

  • 1 系统维护与调试
父主题： 10-网络管理和监控配置指导


10-IPv6域名解析配置

相关链接

  • 1 IPv6域名解析配置
父主题： 04-三层技术-IP业务配置指导


07-User Profile配置

相关链接

  • 1 User Profile配置
父主题： 08-安全配置指导


09-GVRP配置

相关链接

  • 1 GVRP配置
父主题： 03-二层技术-以太网交换配置指导


02-IGMP Snooping配置

相关链接

  • 1 IGMP Snooping配置
父主题： 06-IP组播配置指导


05-三层技术-IP路由配置指导

相关链接

  • 00-前言
  • 01-IP路由基础配置
  • 02-静态路由配置
  • 03-RIP配置
  • 04-OSPF配置
  • 05-IS-IS配置
  • 06-BGP配置
  • 07-IPv6静态路由配置
  • 08-RIPng配置
  • 09-OSPFv3配置
  • 10-IPv6 IS-IS配置
  • 11-IPv6 BGP配置
  • 12-路由策略配置
  • 13-策略路由配置
  • 14-MCE配置


12-LLDP配置

相关链接

  • 1 LLDP配置
父主题： 03-二层技术-以太网交换配置指导


03-PIM Snooping配置

相关链接

  • 1 PIM Snooping配置
父主题： 06-IP组播配置指导


10-IPv6 IS-IS配置

相关链接

  • 1 IPv6 IS-IS配置
父主题： 05-三层技术-IP路由配置指导


01-可靠性概述

相关链接

  • 1 可靠性概述
父主题： 09-可靠性配置指导


20-SAVI配置

相关链接

  • 1 SAVI配置
父主题： 08-安全配置指导


02-802.1X配置

相关链接

  • 1 802.1X配置
  • 2 802.1X支持EAD快速部署配置
父主题： 08-安全配置指导


13-业务环回组配置

相关链接

  • 1 业务环回组配置
父主题： 03-二层技术-以太网交换配置指导


15-IP Source Guard配置

相关链接

  • 1 IP Source Guard配置
父主题： 08-安全配置指导


08-RIPng配置

相关链接

  • 1 RIPng配置
父主题： 05-三层技术-IP路由配置指导


02-IRF配置指导

相关链接

  • 00-前言
  • 01-IRF配置


05-Triple认证配置

相关链接

  • 1 Triple认证配置
父主题： 08-安全配置指导


17-ND攻击防御配置

相关链接

  • 1 ND攻击防御配置
父主题： 08-安全配置指导


03-CFD配置

相关链接

  • 1 CFD配置
父主题： 09-可靠性配置指导


01-CLI配置

相关链接

  • 1 CLI配置
父主题： 01-基础配置指导


10-MLD Snooping配置

相关链接

  • 1 MLD Snooping配置
父主题： 06-IP组播配置指导


08-VRRP配置

相关链接

  • 1 VRRP配置
父主题： 09-可靠性配置指导


01-基础配置指导

相关链接

  • 00-前言
  • 01-CLI配置
  • 02-登录交换机配置
  • 03-FTP和TFTP配置
  • 04-文件系统管理配置
  • 05-配置文件管理
  • 06-软件升级配置
  • 07-ISSU配置
  • 08-设备管理配置
  • 09-自动配置


10-QinQ配置

相关链接

  • 1 QinQ配置
父主题： 03-二层技术-以太网交换配置指导


08-HABP配置

相关链接

  • 1 HABP配置
父主题： 08-安全配置指导


06-Smart Link配置

相关链接

  • 1 Smart Link配置
父主题： 09-可靠性配置指导


03-信息中心配置

相关链接

  • 1 信息中心配置
父主题： 10-网络管理和监控配置指导


01-IP路由基础配置

相关链接

  • 1 IP路由基础配置
父主题： 05-三层技术-IP路由配置指导


14-TCP攻击防御配置

相关链接

  • 1 TCP攻击防御配置
父主题： 08-安全配置指导


06-IP组播配置指导

相关链接

  • 00-前言
  • 01-组播概述
  • 02-IGMP Snooping配置
  • 03-PIM Snooping配置
  • 04-组播VLAN配置
  • 05-组播路由与转发配置
  • 06-IGMP配置
  • 07-PIM配置
  • 08-MSDP配置
  • 09-MBGP配置
  • 10-MLD Snooping配置
  • 11-IPv6 PIM Snooping配置
  • 12-IPv6组播VLAN配置
  • 13-IPv6组播路由与转发配置
  • 14-MLD配置
  • 15-IPv6 PIM配置
  • 16-IPv6 MBGP配置


04-Portal配置

相关链接

  • 1 Portal配置
父主题： 08-安全配置指导


07-BPDU Tunnel配置

相关链接

  • 1 BPDU Tunnel配置
父主题： 03-二层技术-以太网交换配置指导


07-ACL和QoS配置指导

相关链接

  • 00-前言
  • 01-ACL配置
  • 02-QoS配置


04-三层技术-IP业务配置指导

相关链接

  • 00-前言
  • 01-ARP配置
  • 02-IP地址配置
  • 03-DHCP配置
  • 04-域名解析配置
  • 05-IRDP配置
  • 06-IP性能优化配置
  • 07-UDP Helper配置
  • 08-IPv6基础配置
  • 09-DHCPv6配置
  • 10-IPv6域名解析配置
  • 11-隧道配置
  • 12-GRE配置


04-组播VLAN配置

相关链接

  • 1 组播VLAN配置
父主题： 06-IP组播配置指导


06-IP性能优化配置

相关链接

  • 1 IP性能优化配置
父主题： 04-三层技术-IP业务配置指导


01-组播概述

相关链接

  • 1 组播概述
父主题： 06-IP组播配置指导


12-IPv6组播VLAN配置

相关链接

  • 1 IPv6组播VLAN配置
父主题： 06-IP组播配置指导


04-域名解析配置

相关链接

  • 1 IPv4域名解析配置
父主题： 04-三层技术-IP业务配置指导


05-端口隔离配置

相关链接

  • 1 端口隔离配置
父主题： 03-二层技术-以太网交换配置指导


06-生成树配置

相关链接

  • 1 生成树配置
父主题： 03-二层技术-以太网交换配置指导


19-MFF配置

相关链接

  • 1 MFF配置
父主题： 08-安全配置指导


14-MCE配置

相关链接

  • 1 MCE配置
父主题： 05-三层技术-IP路由配置指导


14-MLD配置

相关链接

  • 1 MLD配置
父主题： 06-IP组播配置指导


08-设备管理配置

相关链接

  • 1 设备管理
父主题： 01-基础配置指导


04-以太网链路聚合配置

相关链接

  • 1 以太网链路聚合配置
父主题： 03-二层技术-以太网交换配置指导


12-路由策略配置

相关链接

  • 1 路由策略配置
父主题： 05-三层技术-IP路由配置指导


05-配置文件管理

相关链接

  • 1 配置文件管理
父主题： 01-基础配置指导


11-集群管理配置

相关链接

  • 1 集群管理配置
父主题： 10-网络管理和监控配置指导


03-MAC地址表配置

相关链接

  • 1 MAC地址表配置
  • 2 MAC Information配置
父主题： 03-二层技术-以太网交换配置指导