HCIA Datacom

Stone大约 210 分钟

HCIA Datacom

HCIA(Huawei Certified ICT Associate)即华为认证 ICT 工程师,是华为公司推出的针对 ICT(信息与通信技术)领域的初级认证体系。Datacom,即 Data Communication 的缩写,中文为 “数据通信”,是 Routing & Switching 认证的升级版。故 HCIA Datacomopen in new window(Huawei Certified ICT Associate-Datacom)为华为认证数通工程师,培训与认证具备数通基础通用知识和技能水平的工程师。

eNSP

eNSP(Enterprise Network Simulation Platform)即华为企业网络仿真平台,是华为公司为方便用户进行网络技术学习、实验和方案验证而开发的一款网络仿真软件。

安装 eNSP 前需要先安装如下软件:

  • WinPcap:(Windows Packet Capture)是用于 Windows 系统的一套网络数据包捕获和分析的工具包。
  • Wireshark:是一款广泛使用的开源网络协议分析工具。
  • VirtualBox:是一款开源的虚拟机软件。

注意:安装路径不能有中文。

安装 WinPcap

右键以管理员身份运行安装程序,进入安装向导,点击 “Next”:

image-20250224205751493

进入软件协议界面,点击 “I Agree” 同意软件协议:

image-20250224205857230

保持默认选中的自动启动选项,点击 “Install”,开始安装:

image-20250224210014871

安装完成,点击 “Finish”:

image-20250224210221930

安装 Wireshark

右键以管理员身份运行安装程序,进入安装向导,点击 “Next”:

image-20250224210857495

进入软件协议界面,点击 “Noted” 同意软件协议:

image-20250224210956046

保持默认选中的组件,点击 “Next”:

image-20250224211051022

保持默认选中的选项,点击 “Next”:

image-20250224211129359

根据需要调整安装目录,点击 “Next”:

image-20250224211441535

由于前面已经安装了 WinPcap,故取消安装 Npcap,点击 “Next”:

image-20250224211546849

保持默认,不捕获 USB 流量,点击 “Install”,开始安装:

image-20250224211920514

安装成功,点击 “Next”:

image-20250224212037219

点击 “Finish”,完成安装:

image-20250224212108485

安装 VirtualBox

右键以管理员身份运行安装程序,进入安装向导,点击 “下一步”:

image-20250224212425272

根据需要调整安装目录,点击 “下一步”:

image-20250224212643614

保持默认选中的选项,点击 “下一步”:

image-20250224212726998

警告界面点击 “是”,确认安装:

image-20250224212756129

点击 “安装”,开始安装:

image-20250224212856510

取消勾选,不运行 VirtualBox,点击 “完成”:

image-20250224212937290

安装 eNSP

右键以管理员身份运行安装程序,选择 “中文(简体)”,点击 “确定”:

image-20250224213726058

进入安装向导,点击 “下一步”:

image-20250224213818291

选择 “我愿意接受此协议”,点击 “下一步”:

image-20250224213900945

根据需要调整安装目录,点击 “下一步”:

image-20250224214015138

保持默认开始菜单文件夹,点击 “下一步”:

image-20250224214103526

保持默认勾选 “创建桌面快捷图标”,点击 “下一步”:

image-20250224214121827

检测到已经安装了 WinPcap,Wireshark 和 VirtualBox,点击 “下一步”:

image-20250224214211075

点击 “安装”,开始安装:

image-20250224214321300

只勾选 “运行 eNSP”,点击完成:

image-20250224214542076

启动后如下:

image-20250224215550141

数据通信网络基础

网络通信基本概念

常见术语:

  • 数据载荷:可以理解为最终想要传递的信息,但实际上,在具有层次化结构的通信过程中,上一层协议传递给下一层协议的数据单元(报文)都可以称之为下一层协议的数据载荷。
  • 报文:网络中交换与传输的数据单元,具有一定的内在格式,通常都具有头部+数据载荷+尾部的基本结构。传输过程中,报文的格式和内容可能发生改变。
  • 头部:为了更好的传递信息,在组装报文时,在数据载荷的前面添加的信息段统称为报文的头部。
  • 尾部:为了更好的传递信息,在组装报文时,在数据载荷的后面添加的信息段统称为报文的尾部。注意,很多报文是没有尾部的。
  • 封装:分层协议所采用的一种技术,底层协议收到来自上层协议的消息时,将该消息附加到底层帧的数据部分。
  • 解封装:是封装的逆过程,也就是去掉报文的头部和尾部,获取数据载荷的过程。
  • 网关:是在采用不同体系结构或协议的网络之间进行互通时,用于提供协议转换、路由选择、数据交换等功能的网络设备。网关是一种根据其部署位置和功能而命名的术语,而不是一种特定的设备类型。
  • 路由器:为报文选择传递路径的网络设备。
  • 终端设备:数据通信系统的端设备,作为数据的发送者或接收者,提供用户接入协议操作所需必要功能,可以是计算机、服务器、VoIP、手机等。

数据通信网络基本概念

数据通信网络是指由路由器、交换机、防火墙、无线控制器、无线接入点,以及个人电脑、网络打印机、服务器等设备构成的通信网络。数据通信网络最基本的功能是实现数据互通。

image-20250225200841098

交换机

在园区网络中,交换机一般来说是距离终端用户最近的设备,接入层的交换机一般为二层交换机,又称为以太网交换机,二层是指 TCP/IP 参考模型的数据链路层。 以太网交换机可以实现数据帧的交换、终端用户设备的接入、基本的接入安全功能、二层链路的冗余等。 广播域是指一个节点发送一个广播报文其余节点都能够收到的节点的集合。

image-20250225200901228

路由器

路由器是网络层设备,可以在因特网中进行数据报文转发。路由器根据所收到的报文的目的地址选择一条合适的路径,将报文传送到下一个路由器或目的地,路径中最后的路由器负责将报文送交目的主机。

  • 实现同类型网络或异种网络之间的通信
  • 隔离广播域
  • 维护路由表(Routing Table)、运行路由协议
  • 路径(路由信息)选择、IP报文转发
  • 广域网接入、网络地址转换
  • 连接通过交换机组建的二层网络

image-20250225200938830

防火墙

防火墙是网络安全设备,用于控制两个网络之间的安全通信。它通过监测、限制、更改跨越防火墙的数据流,尽可能地对外部屏蔽网络内部的信息、结构和运行状况,以此来实现对网络的安全保护。

  • 隔离不同安全级别的网络
  • 实现不同安全级别的网络之间的访问控制(安全策略)
  • 用户身份认证
  • 实现远程接入功能
  • 实现数据加密及虚拟专用网业务
  • 执行网络地址转换
  • 其他安全功能

image-20250225201000143

无线设备

无线局域网(WLAN)广义上是指以无线电波、激光、红外线等无线信号来代替有线局域网中的部分或全部传输介质所构成的网络。而常见的 Wi-Fi 是指 IEEE 802.11 标准上的无线局域网技术。

在 WLAN 中,常见的设备有胖 AP、瘦 AP 和无线控制器 AC。

  • 无线接入点 (AP, Access Point)
    • 一般支持 FAT AP、FIT AP 和云管理工作模式,根据网络规划的需求,可以灵活地在各种模式下切换。
    • FAT AP:适用于家庭,独立工作,需单独配置,功能较为单一,成本低。
    • FIT AP:适用于大中型企业,需要配合AC使用,由AC统一管理和配置,功能丰富。
    • 云管理:适用于中小型企业,需要配合云管理平台使用,由云管理平台统一管理和配置,功能丰富,即插即用。
  • 无线接入控制器 (AC, Access Controller)
    • 一般位于整个网络的汇聚层,提供高速、安全、可靠的 WLAN 业务。
    • 提供大容量、高性能、高可靠性、易安装、易维护的无线数据控制业务,具有组网灵活、绿色节能等优势。

image-20250225205900383

网络类型

按照地理覆盖范围来划分,网络可以分为局域网 (Local Area Network)、城域网 (Metropolitan Area Network) 和广域网 (Wide Area Network)。

  • 局域网(LAN):
    • 在某一地理区域内由计算机、服务器以及各种网络设备组成的网络。局域网的覆盖范围一般是方圆几千米以内。
    • 典型的局域网有:一家公司的办公网络,一个网吧的网络,一个家庭网络等。
    • 使用技术:以太网、Wi-Fi 等。
  • 城域网(MAN):
    • 在一个城市范围内所建立的计算机通信网络。
    • 典型的城域网有:宽带城域网、教育城域网、市级或省级电子政务专网等。
    • 使用技术:基于大型的局域网,与局域网技术相似,如:以太网 (10Gbps/100Gbps)、WiMAX (全球互通微波访问)。
  • 广域网(WAN):
    • 通常覆盖很大的地理范围,从几十公里到几千公里。它能连接多个城市甚至国家,并能提供远距离通信,形成国际性的大型网络。
    • 会用到电信运营商的通信线路。
    • 典型的广域网有:Internet(因特网)。
    • 使用技术:HDLC、PPP 等。

image-20250225210633850

网络拓扑

网络拓扑(Network Topology)是指用传输介质(例如双绞线、光纤等)互连各种设备(例如计算机终端、路由器、交换机等)所呈现的结构化布局。

网络拓扑图是在网络工程领域用于描述网络的物理或逻辑结构。

按照网络的拓扑形态来划分,网络可分为星型网络、总线型网络、环形网络、树形网络、全网状网络和部分网状网络。

image-20250225210818325

  • 星型网络:
    • 所有节点通过一个中心节点连接在一起。
    • 优点:容易在网络中增加新的节点。通信数据必须经过中心节点中转,易于实现网络监控。
    • 缺点:中心节点的故障会影响到整个网络的通信。
  • 总线型网络:
    • 所有节点通过一条总线(如同轴电缆)连接在一起。
    • 优点:安装简便,节省线缆。某一节点的故障一般不会影响到整个网络的通信。
    • 缺点:总线故障会影响到整个网络的通信。某一节点发出的信息可以被所有其他节点收到,安全性低。
  • 环型网络:
    • 所有节点连成一个封闭的环形。
    • 优点:节省线缆。
    • 缺点:增加新的节点比较麻烦,必须先中断原来的环,才能插入新节点以形成新环。
  • 树型网络:
    • 树型结构实际上是一种层次化的星型结构。
    • 优点:能够快速将多个星型网络连接在一起,易于扩充网络规模。
    • 缺点:层级越高的节点故障导致的网络问题越严重。
  • 全网状网络:
    • 所有节点都通过线缆两两互联。
    • 优点:具有高可靠性和高通信效率。
    • 缺点:每个节点都需要大量的物理端口,同时还需要大量的互连线缆。成本高,不易扩展。
  • 部分网状网络:
    • 只是重点节点之间才两两互连。
    • 优点:成本低于全网状网络。
    • 缺点:可靠性比全网状网络有所降低。
    • 在实际组网中,通常都会根据成本、通信效率、可靠性等具体需求而采用多种拓扑形态相结合的方法。

网络参考模型

OSI 参考模型

OSI(Open Systems Interconnection Model)参考模型又被称为七层模型,由下至上依次为:

  • 物理层:在设备之间传输比特流,规定了电平、速度和电缆针脚等物理特性。
  • 数据链路层:将比特组合成字节,再将字节组合成帧,使用链路层地址(以太网使用 MAC 地址)来访问介质,并进行差错检测。
  • 网络层:定义逻辑地址,供路由器确定路径,负责将数据从源网络传输到目的网络。
  • 传输层:提供面向连接或非面向连接的数据传递以及进行重传前的差错检测。
  • 会话层:负责建立、管理和终止表示层实体之间的通信会话。该层的通信由不同设备中的应用程序之间的服务请求和响应组成。
  • 表示层:提供各种用于应用层数据的编码和转换功能,确保一个系统的应用层发送的数据能被另一个系统的应用层识别。
  • 应用层:OSI 参考模型中最靠近用户的一层,为应用程序提供网络服务。

TCP/IP 参考模型

因为 OSI 协议栈比较复杂,且 TCP 和 IP 两大协议在业界被广泛使用,所以 TCP/IP 参考模型成为了互联网的主流参考模型。

  • TCP/IP 模型在结构上与 OSI 模型类似,采用分层架构,同时层与层之间联系紧密。
  • TCP/IP 标准参考模型将 OSI 中的数据链路层和物理层合并为网络接入层,这种划分方式其实是有悖于现实协议制定情况的,故融合了 TCP/IP 标准模型和 OSI 模型的 TCP/IP 对等模型被提出,后面的讲解也都将基于这种模型。
  • TCP/IP 每一层都让数据得以通过网络进行传输,这些层之间使用 PDU(Packet Data Unit,协议数据单元)彼此交换信息,确保网络设备之间能够通信。

image-20250226193713313

TCP/IP 常见协议

TCP/IP 协议栈定义了一系列的标准协议。

image-20250226194710518

应用层协议有:

  • HTTP(Hypertext Transfer Protocol):用来访问在网页服务器上的各种页面。
  • FTP(File Transfer Protocol):为文件传输提供了途径,它允许数据从一台主机传送到另一台主机上。
  • DNS(Domain Name Service):用于实现从主机域名到 IP 地址之间的转换。

传输层协议有:

  • TCP (Transmission Control Protocol) :为应用程序提供可靠的面向连接的通信服务。目前,许多流行的应用程序都使用 TCP。
  • UDP(User Datagram Protocol):提供了无连接通信,且不对传送数据包进行可靠性的保证。

网络层协议有:

  • IP(Internet Protocol):将传输层的数据封装成数据包并完成源站点到目的站点的转发,提供无连接的、不可靠的服务。
  • IGMP(Internet Group Management Protocol):负责 IP 组播成员管理的协议。它用来在 IP 主机和与其直接相邻的组播路由器之间建立、维护组播组成员关系。
  • ICMP(Internet Control Message Protocol):基于 IP 协议在网络中发送控制消息,提供可能发生在通信环境中的各种问题反馈。通过这些信息,使管理者可以对所发生的问题作出诊断,然后采取适当的措施解决。

数据链路层协议有:

  • PPP(Point-to-Point Protocol):一种点对点模式的数据链路层协议,多用于广域网。
  • Ethernet:一种多路访问广播型数据链路层协议,是当前应用最为广泛的局域网技术。
  • PPPoE(Point-to-Point Protocol over Ethernet):PPPoE 提供通过简单桥接访问设备(接入设备)把一个网络的多个主机连接到远程访问集中器的功能。常见的应用有家庭宽带拨号上网。

应用层

应用层为应用软件提供接口,使应用程序能够使用网络服务。应用层协议会指定使用相应的传输层协议,以及传输层所使用的端口等。应用层的 PDU 被称为 Data(数据)。

常用协议有:

  • FTP(File Transfer Protocol):是一个用于从一台主机传送文件到另一台主机的协议,用于文件的“下载”和“上传”,它采用 C/S(Client/Server)结构。
  • Telnet:是数据网络中提供远程登录服务的标准协议。 Telnet 为用户提供了在本地计算机上完成远程设备工作的能力。用户通过 Telnet 客户端程序连接到 Telnet 服务器。用户在 Telnet 客户端中输入命令,这些命令会在服务器端运行,就像直接在服务端的控制台上输入一样。
  • HTTP(HyperText Transfer Protocol):是互联网上应用最为广泛的一种网络协议,用来访问在网页服务器上的各种页面。

传输层

传输层协议接收来自应用层协议的数据,封装上相应的传输层头部,帮助其建立“端到端”(Port to Port)的连接。传输层的 PDU 被称为 Segment(段)。

传输层协议:

  • TCP:一种面向连接的、可靠的传输层通信协议,由 IETF 的 RFC 793 定义。
  • UDP:一种简单的无连接的传输层协议,由 IETF 的 RFC 768 定义。

报文格式

TCP 和 UDP 的报文格式如下图:

image-20250226205429338

TCP 报文头部:

  • Source Port:源端口,标识哪个应用程序发送。长度为 16 比特。
  • Destination Port:目的端口,标识哪个应用程序接收。长度为 16 比特。
  • Sequence Number:序号字段。TCP 链接中传输的数据流每个字节都编上一个序号。序号字段的值指的是本报文段所发送数据的第一个字节的序号。长度为 32 比特。
  • Acknowledgment Number:确认序列号,是期望收到对方下一个报文段数据的第 1 个字节的序号,即上次已成功接收到的数据段的最后一个字节数据的序号加 1。只有 Ack 标识为 1,此字段有效。长度为 32 比特。
  • Header Length:头部长度,指出 TCP 报文头部长度,以 32 比特(4字节)为计算单位。若无选项内容,则该字段为 5,即头部为 20 字节。
  • Reserved:保留,必须填 0。长度为 4 比特。
  • Control bits:控制位,包含 FIN、ACK、SYN 等标志位,代表不同状态下的 TCP 数据段。
  • Window:窗口 TCP 的流量控制,这个值表明当前接收端可接受的最大的数据总数(以字节为单位)。窗口最大为 65535 字节。长度为 16 比特。
  • Checksum:校验字段,是一个强制性的字段,由发端计算和存储,并由收端进行验证。在计算检验和时,要包括 TCP 头部和 TCP 数据,同时在 TCP 报文段的前面加上 12 字节的伪头部。长度为 16 比特。
  • Urgent:紧急指针,只有当 URG 标志置 1 时紧急指针才有效。TCP 的紧急方式是发送端向另一端发送紧急数据的一种方式。紧急指针指出在本报文段中紧急数据共有多少个字节(紧急数据放在本报文段数据的最前面)。长度为 16 比特。
  • Options:选项字段(可选),长度为 0-40 字节。

UDP 报文头部:

  • Source Port:源端口,标识哪个应用程序发送。长度为 16 比特。
  • Destination Port:目的端口,标识哪个应用程序接收。长度为 16 比特。
  • Length:该字段指定 UDP 报头和数据总共占用的长度。可能的最小长度是 8 字节,因为 UDP 报头已经占用了 8 字节。由于这个字段的存在,UDP 报文总长不可能超过 65535 字节(包括 8 字节的报头,和 65527 字节的数据)。
  • Checksum:覆盖 UDP 头部和 UDP 数据的校验和,长度为 16 比特。

端口号

在网络通信中,IP 地址用于标识网络中的不同主机,而端口号则用于标识同一主机上的不同应用程序或进程。当数据从网络层传递到传输层时,TCP 或 UDP 协议会根据端口号将数据正确地交付给相应的应用程序或进程,实现了多个应用程序在同一台主机上同时进行网络通信而互不干扰。

  • 端口号是一个 16 位的无符号整数,其取值范围是 0 到 65535。

  • 为了便于管理和使用,端口号通常被分为以下几类:

    • 知名端口号:范围是 0 到 1023。这些端口号通常被分配给一些常见的网络服务和应用程序,如 HTTP 服务通常使用 80 端口,FTP 服务使用 20 和 21 端口,SMTP 服务使用 25 端口等。
    • 注册端口号:范围是 1024 到 49151。这些端口号通常由应用程序开发者在需要时向互联网号码分配机构(IANA)注册,以确保不会与其他应用程序的端口号冲突。
    • 动态或私有端口号:范围是 49152 到 65535。这些端口号通常由操作系统在运行时动态分配给应用程序,用于临时的网络连接。
  • 客户端使用的源端口一般随机分配,目标端口则由服务器的应用指定。

  • 客户端使用的源端口号一般为系统中未使用的,且大于 1023。

  • 目标端口号为服务端开启的应用(服务)所侦听的端口,如 HTTP 缺省使用 80。

TCP

任何基于 TCP 的应用,在发送数据之前,都需要由 TCP 进行“三次握手”建立连接。

详细过程如下:

  • 由 TCP 连接发起方(图中 PC1),发送第一个 SYN 位置 1 的 TCP 报文。初始序列号 a 为一个随机生成的数字,因为没收到过来自 PC2 的任何报文,所以确认序列号为 0。此时,发起方进入 SYN_SENT 状态,表明它正在尝试与接收方建立连接,并等待接收方的响应。
  • 接收方(图中 PC2)接收到合法的 SYN 报文之后,回复一个 SYN 和 ACK 置 1 的 TCP 报文。初始序列号 b 为一个随机生成的数字,同时因为此报文是回复给 PC1 的报文,所以确认序列号为 a+1。此时,接收方进入 SYN_RCVD 状态,表明它已经收到发起方的连接请求,并正在响应发起方。
  • PC1 接收到 PC2 发送的 SYN 和 ACK 置位的 TCP 报文后,回复一个 ACK 置位的报文,此时序列号为 a+1,确认序列号为 b+1。PC2 收到之后,TCP双向连接建立。此时,发起方进入 ESTABLISHED 状态,表明它已经与接收方成功建立了连接。接收方接收到发起方发送的 ACK 包后,也会进入 ESTABLISHED 状态,至此,TCP 连接建立完成,发送方和接收方可以开始进行数据传输。

image-20250226212051541

建立连接后,TCP 使用序列号和确认序列号字段实现数据的可靠和有序传输。

假设 PC1 要给 PC2 发送一段数据,传输过程如下:

  1. PC1 将全部待 TCP 发送的数据按照字节为单位编上号。假设第一个字节的编号为 “a+1”,第二个字节的序号为 “a+2”,依次类推。
  2. PC1 会把每一段数据的第一个字节的编号作为序列号(Sequence number),然后将 TCP 报文发送出去。
  3. PC2 在收到 PC1 发送来的 TCP 报文后,需要给予确认同时请求下一段数据,如何确定下一段数据呢?序列号 ( a+1 ) + 载荷长度 = 下一段数据的第一个字节的序号,即(a+1+12)。
  4. PC1 在收到 PC2 发送的 TCP 报文之后,发现确认序列号为 “a+1+12” ,说明 “a+1” 到 “a+12” 这一段的数据已经被接受,需要从 “a+1+12” 开始发送。

为了提升发送效率,也可以一次性发送多段数据,由接收方统一确认。

image-20250226214738444

TCP 通过滑动窗口机制来控制数据的传输速率。

  1. 在 TCP 三次握手建立连接时,双方都会通过 Window 字段告诉对方本端最大能够接受的字节数(也就是缓冲区大小)。
  2. 连接建立成功之后,发送方会根据接收方宣告的 Window 大小发送相应字节数的数据。
  3. 接收方接受到数据之后会放在缓冲区内,等待上层应用来取走缓冲的数据。若数据被上层取走,则相应的缓冲空间将被释放。
  4. 接收方根据自身的缓存空间大小通告当前的可以接受的数据大小( Window )。
  5. 发送方根据接收方当前的 Window 大小发送相应数量的数据。

image-20250226215427131

当数据传输完成,TCP 需要通过“四次挥手”机制断开 TCP 连接,释放系统资源。

TCP 支持全双工模式传输数据,这意味着同一时刻两个方向都可以进行数据的传输。在传输数据之前,TCP 通过三次握手建立的实际上是两个方向的连接,因此在传输完毕后,两个方向的连接必须都关闭。如图所示:

  1. 由 PC1 发出一个 FIN 字段置 ”1” 的不带数据的 TCP 段。
  2. PC2 收到 PC1 发来的 FIN 置位的 TCP 报文后,会回复一个 ACK 置位的 TCP 报文。
  3. 若 PC2 也没有需要发送的数据,则直接发送 FIN 置位的 TCP 报文。假设此时 PC2 还有数据要发送,那么当 PC2 发送完这些数据之后会发送一个 FIN 置位的 TCP 报文去关闭连接。
  4. PC1 收到 FIN 置位的 TCP 报文,回复 ACK 报文,TCP 双向连接断开。

image-20250226215808540

网络层

传输层负责建立主机之间进程与进程之间的连接,而网络层则负责数据从一台主机到另外一台主机之间的传递。网络层的 PDU 被称为 Packet(包)。

网络层常见协议有 IPv4,IPv6、ICMP,IGMP 等。

  • 当采用 IP 作为网络层协议时,通信的双方都会被分配到一个 “独一无二” 的 IP 地址来标识自己。IP 地址可被写成 32 位的二进制整数值形式,但为了方便人们阅读和分析,它通常被写成点分十进制的形式,即四个字节被分开用十进制表示,中间用点分隔,比如 192.168.1.1。
  • IP 数据包的封装与转发:
    • 网络层收到上层(如传输层)协议传来的数据时候,会封装一个 IP 报文头部,并且把源和目的 IP 地址都添加到该头部中。
    • 中间经过的网络设备(如路由器),会维护一张指导 IP 报文转发的 “地图” —— 路由表,通过读取 IP 数据包的目的地址,查找本地路由表后转发 IP 数据包。
    • IP 数据包最终到达目的主机,目的主机通过读取目的 IP 地址确定是否接受并做下一步处理。
  • IP 协议工作时,需要如 OSPF、IS-IS、BGP 等各种路由协议帮助路由器建立路由表,ICMP 帮忙进行网络的控制和状态诊断。

数据链路层

数据链路层位于网络层和物理层之间,可以向网络层的 IP、IPv6 等协议提供服务。数据链路层的 PDU 被称为 Frame(帧)。

以太网(Ethernet)是最常见的数据链路层协议。

  • 以太网是一种广播式数据链路层协议,支持多点接入。
  • 个人电脑的网络接口遵循的就是以太网标准。
  • 一般情况下,一个广播域对应着一个 IP 网段。

以太网 MAC 地址:

  • MAC (Media Access Control) 地址在网络中唯一标识一个网卡,每个网卡都需要且会有唯一的一个 MAC 地址。
  • MAC 用于在一个 IP 网段内,寻址找到具体的物理设备。
  • 工作在数据链路层的设备,例如以太网交换机,会维护一张 MAC 地址表,用于指导数据帧转发。
  • MAC 地址由 48 比特(6 个字节)长,12 位的 16 进制数字组成。例如:48-A4-72-1C-8F-4F

ARP

ARP(Address Resolution Protocol,地址解析协议)是根据 IP 地址获取数据链路层地址的一个 TCP/IP 协议。

ARP 是 IPv4 中必不可少的一种协议,它的主要功能是:

  • 将 IP 地址解析为 MAC 地址;
  • 维护 IP 地址与 MAC 地址的映射关系的缓存,即 ARP 表项;
  • 实现网段内重复 IP 地址的检测。

工作原理:

  • 网络设备一般都有一个 ARP 缓存(ARP Cache)。ARP 缓存用来存放 IP 地址和 MAC 地址的关联信息。
  • 在发送数据前,设备会先查找 ARP 缓存表。如果缓存表中存在对方设备的 ARP 表项,则直接采用该表项中的 MAC 地址来封装帧,然后将帧发送出去。如果缓存表中不存在相应信息,则通过发送 ARP Request 报文来获得它。
  • 学习到的 IP 地址和 MAC 地址的映射关系会被放入 ARP 缓存表中存放一段时间。在有效期内(缺省:180s),设备可以直接从这个表中查找目的 MAC 地址来进行数据封装,而无需进行 ARP 查询。过了这段有效期,ARP 表项会被自动删除。
  • 如果目标设备位于其他网络,则源设备会在 ARP 缓存表中查找网关的 MAC 地址。然后将数据发送给网关。最后网关再把数据转发给目的设备。

有如下网络拓扑,主机 PC1 首次与主机 PC2 进行通信,ARP 工作流程如下:

image-20250227210148354

阶段 1:

  • 在发送数据前,设备会先查找 ARP 缓存表。
  • 如果缓存表中存在对方设备的 MAC 地址,则直接采用该 MAC 地址来封装帧,然后将帧发送出去。
  • 如果缓存表中不存在相应信息,则进入阶段 2,通过 ARP 来获取。

主机 PC1 上查询 ARP 缓存表,当前无数据:

PC>arp -a

Internet Address    Physical Address    Type

阶段 2:

  • 主机 PC1 通过发送 ARP Request 报文来获取主机 PC2 的 MAC 地址。
  • 由于不知道目的 MAC 地址,因此 ARP Request 报文内的目的端 MAC 地址为 FF-FF-FF-FF-FF-FF。
  • ARP Request 是广播数据帧,因此交换机收到后,会对该帧执行泛洪操作。
  • ARP Request 报文封装在以太帧里。帧头中的源 MAC 地址为发送端主机 PC1 的 MAC 地址。此时,由于主机 PC1 不知道主机 2 的 MAC 地址,所以目的 MAC 地址为广播地址 FF-FF-FF-FF-FF-FF。
  • ARP Request 报文中包含发送端 MAC 地址、发送端 IP 地址、目的端 MAC 地址、目的端 IP 地址,其中目的端 MAC 地址的值为 FF-FF-FF-FF-FF-FF。ARP Request 报文会在整个网络上传播,该网络中所有主机包括网关都会接收到此 ARP Request 报文。

请求包如下:

----
- 52
- 113.296000
- HuaweiTe_48:43:6a
- Broadcast
- ARP
- 60
- Who has 192.168.1.2? Tell 192.168.1.1
---

Frame 52: 60 bytes on wire (480 bits), 60 bytes captured (480 bits) on interface -, id 0
Ethernet II, Src: HuaweiTe_48:43:6a (54:89:98:48:43:6a), Dst: Broadcast (ff:ff:ff:ff:ff:ff)
    Destination: Broadcast (ff:ff:ff:ff:ff:ff)
    Source: HuaweiTe_48:43:6a (54:89:98:48:43:6a)
    Type: ARP (0x0806)
    Padding: 000000000000000000000000000000000000
Address Resolution Protocol (request)
    Hardware type: Ethernet (1)
    Protocol type: IPv4 (0x0800)
    Hardware size: 6
    Protocol size: 4
    Opcode: request (1)
    Sender MAC address: HuaweiTe_48:43:6a (54:89:98:48:43:6a)
    Sender IP address: 192.168.1.1
    Target MAC address: Broadcast (ff:ff:ff:ff:ff:ff)
    Target IP address: 192.168.1.2

阶段 3:

  • 所有的主机接收到该 ARP Request 报文后,都会检查它的目的端 IP 地址字段与自身的 IP 地址是否匹配。
    • 如果不匹配,则该主机将不会响应该 ARP Request 报文。
    • 如果匹配,则该主机会将 ARP 请求报文中的发送端 MAC 地址和发送端 IP 地址信息记录到自己的 ARP 缓存表中。

主机 PC2 上查询 ARP 缓存表,已经有了 PC1 的数据:

PC>arp -a

Internet Address    Physical Address    Type
192.168.1.1         54-89-98-48-43-6A   dynamic

阶段 4:

  • 主机 PC2 会向主机 PC1 回应 ARP Reply 报文。
  • ARP Reply 报文中:
    • 发送端 IP 地址是主机 PC2 自己的 IP 地址。
    • 目的端 IP 地址是主机 PC1 的 IP 地址。
    • 目的端 MAC 地址是主机 PC1 的 MAC 地址。
    • 发送端 MAC 地址是自己的 MAC 地址。
    • 同时操作类型被设置为 Reply。
  • ARP Reply 报文通过单播传送。
  • 交换机收到该单播数据帧后,会对该帧执行转发操作。

响应包如下:

----
- 53
- 113.328000
- HuaweiTe_95:7d:7c
- HuaweiTe_48:43:6a
- ARP
- 60
- 192.168.1.2 is at 54:89:98:95:7d:7c
---

Frame 53: 60 bytes on wire (480 bits), 60 bytes captured (480 bits) on interface -, id 0
Ethernet II, Src: HuaweiTe_95:7d:7c (54:89:98:95:7d:7c), Dst: HuaweiTe_48:43:6a (54:89:98:48:43:6a)
    Destination: HuaweiTe_48:43:6a (54:89:98:48:43:6a)
    Source: HuaweiTe_95:7d:7c (54:89:98:95:7d:7c)
    Type: ARP (0x0806)
    Padding: 000000000000000000000000000000000000
Address Resolution Protocol (reply)
    Hardware type: Ethernet (1)
    Protocol type: IPv4 (0x0800)
    Hardware size: 6
    Protocol size: 4
    Opcode: reply (2)
    Sender MAC address: HuaweiTe_95:7d:7c (54:89:98:95:7d:7c)
    Sender IP address: 192.168.1.2
    Target MAC address: HuaweiTe_48:43:6a (54:89:98:48:43:6a)
    Target IP address: 192.168.1.1

阶段 5:

  • 主机 PC1 收到 ARP Reply 以后,会检查 ARP 报文中目的端 IP 地址字段与自身的 IP 地址是否匹配。如果匹配,ARP 报文中的发送端 MAC 地址和发送端 IP 地址会被记录到主机 PC1 的 ARP 缓存表中。

主机 PC1 上查询 ARP 缓存表,已经有了 PC2 的数据:

PC>arp -a

Internet Address    Physical Address    Type
192.168.1.2         54-89-98-95-7D-7C   dynamic

物理层

数据到达物理层之后,物理层会根据物理介质的不同,将数字信号转换成光信号、电信号或者是电磁波信号。物理层的 PDU 被称为比特流(Bitstream)。

物理层位于模型的最底层:

  • 负责比特流在介质上的传输。
  • 规范了线缆、针脚、电压、接口等物理特性规范。
  • 常见的传输介质有:双绞线、光纤、电磁波等。

常见传输介质:

  • 双绞线:当今以太网最常见的传输介质,按照抗电磁干扰能力还可以分为:
    • STP - 屏蔽双绞线
    • UTP - 非屏蔽双绞线
  • 光纤传输,按照功能部件可分为:
    • 光纤:光传输介质,简单的说,就是一根玻璃纤维,用于约束光传输的通道。
    • 光模块:将电信号与光信号互转的器件,产生光信号。
  • 串口电缆在 WAN(Wide Area Network,广域网)中大规模使用,根据 WAN 线路类型不同,串口电缆在设备上连接的接口类型也不同:异 / 同步串口、ATM 接口、POS 接口、CE1/PRI 接口等。
  • 无线信号的传输可以通过电磁波进行,例如:无线路由器将数据通过调制以电磁波发送出去,移动终端的无线网卡将电磁波解调,得到数据,完成从无线路由器到移动终端的数据传输。

数据通信过程

发送方数据封装

假设你正在通过网页浏览器访问华为官网,当你输入完网址,敲下回车后,计算机内部会发生下列事情:

  1. IE 浏览器 (应用程序) 调用 HTTP (应用层协议),完成应用层数据的封装 (图中 DATA 还应包括 HTTP 头部,此处省略) 。
  2. HTTP 依靠传输层的 TCP 进行数据的可靠性传输,将封装好的数据传递到 TCP 模块。
  3. TCP 模块给应用层传递下来的 Data 添加上相应的 TCP 头部信息 (源端口、目的端口等)。此时的 PDU 被称作 Segment (段)。
  4. 在 IPv4 网络中,TCP 模块会将封装好的 Segment 传递给网络层的 IPv4 模块 (若在 IPv6 环境,会交给 IPv6 模块进行处理)。
  5. IPv4 模块在收到 TCP 模块传递来的 Segment 之后,完成 IPv4 头部的封装,此时的 PDU 被称为 Packet (包)。
  6. 由于使用了 Ethernet 作为数据链路层协议,故在 IPv4 模块完成封装之后,会将 Packet 交由数据链路层的 Ethernet 模块 (例如以太网卡) 处理。
  7. Ethernet 模块在收到 IPv4 模块传递来的 Packet 之后,添加上相应的 Ethernet 头部信息和 FCS 帧尾,此时的 PDU 被称为 Frame (帧)。
  8. 在 Ethernet 模块封装完毕之后,会将数据传递到物理层。
  9. 根据物理介质的不同,物理层负责将数字信号转换成电信号,光信号,电磁波 (无线) 信号等。
  10. 转换完成的信号在网络中开始传递。

image-20250227214840415

中间网络数据传输

  • 封装好的完整数据,将会在网络中被传递。
  • 一般情况下:
    • 网络中的二层设备(如以太网交换机)只会解封装数据的二层头部,根据二层头部的信息进行相应的 “交换” 操作。
    • 网络中的三层设备(如路由器)只会解封装到三层头部,并且根据三层头部的信息进行相应的 “路由” 操作。

image-20250227215340594

接收方数据解封装

经过中间网络传递之后,数据最终到达目的服务器。根据不同的协议头部的信息,数据将被一层层的解封装并做相应的处理和传递,最终交由 WEB 服务器上的应用程序进行处理。

image-20250227215616361

VRP

概述

VRP 是华为公司数据通信产品的通用操作系统平台,作为华为公司从低端到核心的全系列路由器、以太网交换机、业务网关等产品的软件核心引擎。

VRP 提供以下功能:

  • 实现统一的用户界面和管理界面
  • 实现控制平面功能,并定义转发平面接口规范
  • 实现各产品转发平面与 VRP 控制平面之间的交互
  • 屏蔽各产品链路层对于网络层的差异

文件系统

文件系统是指对存储器中文件、目录的管理,功能包括查看、创建、重命名和删除目录,拷贝、移动、重命名和删除文件等。

掌握文件系统的基本操作,对于网络工程师高效管理设备的配置文件和 VRP 系统文件至关重要。

分为:

  • 系统软件:是设备启动、运行的必备软件,为整个设备提供支撑、管理、业务等功能。常见文件后缀名为:.cc
  • 补丁:是一种与设备系统软件兼容的软件,用于解决设备系统软件少量且急需解决的问题。常见文件后缀名为:.pat
  • 配置文件:是用户将配置命令保存的文件,作用是允许设备以指定的配置启动生效。常见文件后缀名为:.cfg.zip.dat
  • PAF 文件:是根据用户对产品需要提供了一个简单有效的方式来裁剪产品的资源占用和功能特性。常见文件后缀名为:.bin

文件的管理方式包括:

  • 通过 Console 或者 Telnet 等直接登陆系统管理
  • 通过 FTP、TFTP 或 SFTP 登录设备进行管理

存储设备

存储设备包括:SDRAM、Flash、NVRAM 、SD Card、USB

  • SDRAM 是系统运行内存,相当于电脑的内存。
  • NVRAM 非易失存储器,日志写入 FLASH 操作是耗时耗 CPU 的操作,因此采用缓存机制,即日志产生后,先存入缓存,定时器超时或缓存满后再写入 Flash。
  • Flash 与 SD Card 属于非易失存储器,配置文件与系统文件存放于 flash 或 SD Card 中,具体设备参考产品文档。
  • SD Card 是外置的 SD 存储卡,用来扩展。USB 是接口,用于外接大容量存储设备,主要用于设备升级,传输数据。
  • 补丁文件和 PAF 文件由维护人员上传可自行指定放置。

设备管理

用户对设备的常见管理方式主要有 Web 网管方式和命令行方式两种。

  • Web 网管方式

    • Web 网管方式通过图形化的操作界面,实现对设备直观方便地管理与维护,但是此方式仅可实现对设备部分功能的管理与维护。

    • Web 网管方式可以通过 HTTP 和 HTTPS 方式登录设备。

  • 命令行方式

    • 命令行方式需要用户使用设备提供的命令行对设备进行管理与维护,此方式可实现对设备的精细化管理,但是要求用户熟悉命令行。

    • 命令行方式可以通过 Console 口、Telnet 或 SSH 方式登录设备。

用户需要通过相应的方式登录到设备后才能对设备进行管理。

用户界面

用户通过命令行方式登录设备时,系统会分配一个用户界面用来管理、监控设备和用户间的当前会话。

设备系统支持的用户界面有 Console 用户界面和虚拟类型终端 VTY(Virtual Type Terminal)用户界面。

  • Console 用户界面

    • Console 用户界面用来管理和监控通过 Console 口登录的用户。

    • 用户终端的串行口可以与设备 Console 口直接连接,实现对设备的本地访问。

  • VTY 用户界面

    • VTY 用户界面用来管理和监控通过 VTY 方式登录的用户。

    • 用户通过终端与设备建立 Telnet 或 SSH 连接后,即建立了一条 VTY 通道,通过 VTY 通道实现对设备的远程访问。

用户级别

VRP 提供基本的权限控制,可以实现不同级别的用户能够执行不同级别的命令,用以限制不同用户对设备的操作。

为了限制不同用户对设备的访问权限,系统对用户也进行了分级管理。用户的级别与命令级别对应,不同级别的用户登录后,只能使用等于或低于自己级别的命令。缺省情况下,命令级别按 0~3 级进行注册,用户级别按 0~15 级进行注册,用户级别和命令级别对应关系如表所示。

用户等级命令等级名称说明
00参观级可使用网络诊断工具命令(pingtracert)、从本设备出发访问外部设备的命令(Telnet 客户端命令)、部分 display 命令等。
10,1监控级用于系统维护,可使用 display 等命令。
20,1,2配置级可使用业务配置命令,包括路由、各个网络层次的命令,向用户提供直接网络服务。
3-150,1,2,3管理级可使用用于系统基本运行的命令,对业务提供支撑作用,包括文件系统、FTP、TFTP下载、命令级别设置命令以及用于业务故障诊断的 debugging 命令等。

登录方式

对于 Web 网管方式可以使用浏览器通过 HTTP 和 HTTPS 方式登录设备。

对于命令行方式则可以使用本地登录和远程登录。登录成功后即进入命令行界面 CLI(Command Line Interface)。

本地登录
  • 当用户需为第一次上电的设备进行配置时,可通过 Console 口本地登录设备。
  • 控制口(Console Port)是一种通信串行端口,由设备的主控板提供。
  • 使用 Console 线缆来连接交换机或路由器的 Console 口与计算机的 COM 口,然后通过 PuTTY 工具本地登录实现对设备的本地配置。。Console 口是一种符合 RS232 串口标准的 RJ45 接口。目前大多数台式电脑提供的 COM 口都可以与 Console 口连接。笔记本电脑一般不提供 COM 口,需要使用 USB 到 RS232 的转换接口。
  • Console 口登录是设备默认开启的功能,不需要对设备做预配置。
  • PuTTY 工具是一个 Telnet、SSH、串行接口等的连接软件。本地登录时,终端设备采用串口与华为设备 Console 口连接,所以采用 “Serial” 连接类型。COM 端口根据终端设备实际端口选取,速率固定为 9600。

image-20250301194400659

远程登录

远程登录允许终端远程登录到任何可以充当远程登录服务器的设备,对这些网络设备进行集中的管理和维护。远程登录方法包括:Telnet 和 SSH。

  • 如果通过 SSH 远程登录,连接类型为 “SSH”,需要输入远程登录服务器的 IP 地址,端口号缺省为 22。
  • 如果通过 Telnet 远程登录,连接类型为 “Telnet”,需要输入远程登录服务器的 IP 地址,端口号缺省为 23。
  • 设备默认不开启 SSH 登录功能,需要用户先通过 Console 口登录,配置上 SSH 登录必须的参数之后,才可以使用 SSH 登录功能。

image-20250301194624900

命令

命令结构

华为提供的命令按照一定的格式设计,用户可以通过命令行界面输入命令,由命令行界面对命令进行解析,实现用户对路由器的配置和管理。

  • 命令包括:

    • 命令字:规定了系统应该执行的功能,如 display(查询设备状态),reboot(重启设备)等命令字。操作命令都要用命令字,并且必须从规范的命令字集合中选取

    • 关键字:特殊的字符构成,用于进一步约束命令,是对命令的拓展,也可用于表达命令构成逻辑而增设的补充字符串。

    • 参数列表:是对命令执行功能的进一步约束。包括一对或多对参数名和参数值。

  • 每条命令有最多一个命令字,若干个关键字和参数,形成一条命令,参数必须由参数名和参数值组成。

  • 命令字、关键字、参数名、参数值之间,需要用空格分隔开。

例子:查看接口信息的命令

<Huawei>display ip interface GigabitEthernet 0/0/1

其中:

  • 命令字:display
  • 关键字:ip
  • 参数名:interface
  • 参数值:GigabitEthernet 0/0/1

例子:

<Huawei>reboot

其中:

  • 命令字:reboot

命令视图

设备提供了多样的配置和查询命令,为便于用户使用这些命令,VRP 系统按功能分类将命令分别注册在不同的命令行视图下。

  • 用户视图:用户可以完成查看运行状态和统计信息等功能。
  • 系统视图:用户可以配置系统参数以及通过该视图进入其他的功能配置视图。
  • 其他视图:比如接口视图,协议视图,用户可以进行接口参数和协议参数配置。
  • 登录到系统后,首先进入的是用户视图,这里仅提供查询,以及 pingtelnet 等工具命令,不提供任何配置命令。
  • 用户视图中,唯一可进入的视图是系统视图。用户视图下通过 system-view 命令可以进入到系统视图,系统视图提供一些简单的全局配置功能。
  • 一些复杂的配置功能,如配置一个以太网接口,需要的参数比较多,因此系统提供以太网接口配置视图,在系统视图中,使用命令 interface GigabitEthernet X(此处 X 表示一个具体接口的编号) 进入 GE 接口配置视图,这个配置视图当前针对 GE 接口 X,所有的命令仅对 GE 接口 X 生效。

image-20250301201231834

命令行

设备的命令行界面提供基本的命令行编辑功能,包括:

  • 功能键

    • 退格键 Backspace:删除光标位置的前一个字符,光标左移,若已经到达命令首,则响铃告警。

    • 左光标键 Ctrl+B:光标向左移动一个字符位置,若已经到达命令首,则响铃告警。

    • 右光标键 Ctrl+F:光标向右移动一个字符位置,若已经到达命令尾,则响铃告警。

  • 不完整关键字输入

    • 设备支持不完整关键字输入,即在当前视图下,当输入的字符能够匹配唯一的关键字时,可以不必输入完整的关键字,例如 display current-configuration 命令,可以输入 d cudi cudis cu 等都可以执行此命令,但不能输入 d cdis c 等,因为以 d cdis c 开头的命令不唯一。

    • 注:此处的关键字与命令行格式中的 “关键字” 不同,一条命令中除 “参数值” 外都可以被叫做关键字。

  • Tab 键的使用

    • 如果与之匹配的关键字唯一,按下 Tab 键,系统自动补全关键字,补全后,反复按 Tab 关键字不变。

    • 如果与之匹配的关键字不唯一,反复按 Tab 键可循环显示所有以输入字符串开头的关键字。

    • 如果没有与之匹配的关键字,按 Tab 键后,关键字不变。

用户在使用命令行时,可以使用在线帮助以获取实时帮助,从而无需记忆大量的复杂的命令。命令行在线帮助可分为完全帮助和部分帮助,可通过输入 ? 实现。

  • 完全帮助:当用户输入命令时,可以使用命令行的完全帮助获取全部关键字和参数的提示。
  • 部分帮助:当用户输入命令时,如果只记得此命令关键字的开头一个或几个字符,可以使用命令行的部分帮助获取以该字符串开头的所有关键字的提示。

在命令前加 undo 关键字,即为 undo 命令行。undo 命令行一般用来恢复缺省情况、禁用某个功能或者删除某项配置。包括:

  • 使用 undo 命令行恢复缺省情况
  • 使用 undo 命令禁用某个功能
  • 使用 undo 命令删除某项设置

用户可以使用设备中的快捷键,完成对命令的快速输入,从而简化操作。系统中的快捷键分成两类,自定义快捷键和系统快捷键。

  • 自定义快捷键
    • 自定义快捷键:共有 4 个,Ctrl+GCtrl+LCtrl+OCtrl+U
    • 用户可以根据自己的需要将这 4 个快捷键与任意命令进行关联,当使用快捷键时,系统自动执行它所对应的命令。
  • 系统快捷键
    • CTRL+A:将光标移动到当前行的开头
    • CTRL+B:将光标向左移动一个字符
    • CTRL+C:停止当前命令的运行
    • CTRL+E:将光标移动到当前行的末尾
    • CTRL+X:删除光标左侧所有的字符
    • CTRL+Y:删除光标所在位置及其右侧所有的字符
    • CTRL+Z:返回到用户视图
    • CTRL+] :终止当前连接或切换连接

文件命令

  1. 查看当前目录
 <Huawei>pwd
  1. 显示当前目录下的文件信息
<Huawei>dir
  1. 查看文本文件的具体内容
<Huawei>more
  1. 修改用户当前界面的工作目录
<Huawei>cd
  1. 创建新的目录
<Huawei>mkdir
  1. 删除目录
<Huawei>rmdir
  1. 复制文件
<Huawei>copy
  1. 移动文件
<Huawei>move
  1. 重命名文件
<Huawei>rename
  1. 删除文件
<Huawei>delete
  1. 恢复删除的文件
<Huawei>undelete
  1. 彻底删除回收站中的文件
<Huawei>reset recycle-bin

例子:文件查询及目录操作

<Huawei>pwd
flash:

<Huawei>dir
Directory of flash:/

  Idx  Attr     Size(Byte)  Date        Time       FileName 
    0  drw-              -  Aug 06 2015 21:26:42   src
    1  drw-              -  Feb 27 2025 20:52:10   compatible

32,004 KB total (31,972 KB free)

<Huawei>mkdir test
Info: Create directory flash:/test......Done.
<Huawei>dir
Directory of flash:/

  Idx  Attr     Size(Byte)  Date        Time       FileName 
    0  drw-              -  Aug 06 2015 21:26:42   src
    1  drw-              -  Feb 27 2025 20:52:10   compatible
    2  drw-              -  Mar 01 2025 21:32:52   test

32,004 KB total (31,968 KB free)

<Huawei>rmdir test
Remove directory flash:/test?[Y/N]:y
%Removing directory flash:/test...Done!
<Huawei>dir
Directory of flash:/

  Idx  Attr     Size(Byte)  Date        Time       FileName 
    0  drw-              -  Aug 06 2015 21:26:42   src
    1  drw-              -  Feb 27 2025 20:52:10   compatible

32,004 KB total (31,972 KB free)

例子:文件操作

<Huawei>save
The current configuration will be written to the device.
Are you sure to continue?[Y/N]y
Info: Please input the file name ( *.cfg, *.zip ) [vrpcfg.zip]:
Mar  1 2025 21:47:54-08:00 Huawei %%01CFM/4/SAVE(l)[0]:The user chose Y when dec
iding whether to save the configuration to the device.
Now saving the current configuration to the slot 0.
Save the configuration successfully.

<Huawei>dir
Directory of flash:/

  Idx  Attr     Size(Byte)  Date        Time       FileName 
    0  drw-              -  Aug 06 2015 21:26:42   src
    1  drw-              -  Feb 27 2025 20:52:10   compatible
    2  -rw-            449  Mar 01 2025 21:48:08   vrpcfg.zip

32,004 KB total (31,968 KB free)

<Huawei>copy vrpcfg.zip cfg.txt
Copy flash:/vrpcfg.zip to flash:/cfg.txt?[Y/N]:y

100%  complete
Info: Copied file flash:/vrpcfg.zip to flash:/cfg.txt...Done.

<Huawei>dir
Directory of flash:/

  Idx  Attr     Size(Byte)  Date        Time       FileName 
    0  drw-              -  Aug 06 2015 21:26:42   src
    1  drw-              -  Feb 27 2025 20:52:10   compatible
    2  -rw-            449  Mar 01 2025 21:48:59   cfg.txt
    3  -rw-            449  Mar 01 2025 21:48:08   vrpcfg.zip

32,004 KB total (31,964 KB free)

<Huawei>mkdir cfg
Info: Create directory flash:/cfg......Done.

<Huawei>move cfg.txt cfg
Move flash:/cfg.txt to flash:/cfg/cfg.txt ?[Y/N]:y
%Moved file flash:/cfg.txt to flash:/cfg/cfg.txt.

<Huawei>cd cfg

<Huawei>dir
Directory of flash:/cfg/

  Idx  Attr     Size(Byte)  Date        Time       FileName 
    0  -rw-            449  Mar 01 2025 21:48:59   cfg.txt

32,004 KB total (31,960 KB free)
	
<Huawei>delete cfg.txt 
Delete flash:/cfg/cfg.txt?[Y/N]:y
Info: Deleting file flash:/cfg/cfg.txt...succeeded.

<Huawei>dir
Info: File can't be found in the directory.
32,004 KB total (31,956 KB free)

<Huawei>undelete cfg.txt
Undelete flash:/cfg/cfg.txt?[Y/N]:y
%Undeleted file flash:/cfg/cfg.txt.

<Huawei>dir
Directory of flash:/cfg/

  Idx  Attr     Size(Byte)  Date        Time       FileName 
    0  -rw-            449  Mar 01 2025 21:48:59   cfg.txt

32,004 KB total (31,956 KB free)

配置命令

  1. 配置设备名称
[Huawei]sysname [name]

网络上一般都会部署不止一台设备,管理员需要对这些设备进行统一管理。在进行设备调试的时候,首要任务是设置设备名。设备名用来唯一地标识一台设备。AR 系列路由器默认的设备名是 Huawei,而 S 系列交换机默认的设备名是 HUAWEI。设备名称一旦设置,立刻生效。

  1. 设置系统时钟
<Huawei>clock timezone time-zone-name { add | minus } offset

以上命令用来对本地时区信息进行设置。

<Huawei>clock datetime [ utc ] HH:MM:SS YYYY-MM-DD

以上命令用来设置设备当前或UTC日期和时间。

<Huawei>clock daylight-saving-time

以上命令用来设置设备的夏令时。

为了保证与其他设备协调工作,需要准确设置系统时钟。系统时钟 = UTC(Coordinated Universal Time)+ 当前时区与 UTC 的时间差,一般设备上都会有内置的 UTC 和时间差配置。

  • 可以通过 clock datetime 命令直接设置设备的系统时钟,格式为 HH:MM:SS YYYY-MM-DD,此时 UTC 等于系统时钟 - 时间差。
  • 也可以通过修改 UTC 和系统当前时区来修改系统时钟
    • clock datetime [utc] HH:MM:SS YYYY-MM-DD 用来修改 UTC 时间。
    • clock timezone time-zone-name {add | minus} offset 用来配置本地时区信息。本地时间加上或减去 offset 即为 UTC。
  • 有的地区实行夏令时制,因此当进入夏令时实施区间的一刻,系统时间要根据用户的设定进行夏令时时间的调整。VRP 支持夏令时功能。
  1. 配置命令等级
[Huawei]command-privilege level [level] view view-name command-key

以上命令用来设置指定视图内的命令的级别。命令级别分为参观、监控、配置、管理 4 个级别,分别对应标识 0、1、2、3。

  • 每类用户界面都有对应的用户界面视图。用户界面(User-interface)视图是系统提供的一种命令行视图,用来配置和管理所有工作在异步交互方式下的物理接口和逻辑接口,从而达到统一管理各种用户界面的目的。在连接到设备前,用户要设置用户界面参数。系统支持的用户界面包括 Console 用户界面和 VTY 用户界面。
    • 控制口(Console Port)是一种通信串行端口,由设备的主控板提供。
    • 虚拟类型终端(Virtual Type Terminal)是一种虚拟线路端口,用户通过终端与设备建立 Telnet 或 SSH 连接后,也就建立了一条 VTY,即用户可以通过 VTY 方式登录设备。设备一般最多支持 15 个用户同时通过 VTY 方式访问。执行 user-interface maximum-vty number 命令可以配置同时登录到设备的 VTY 类型用户界面的最大个数。如果将最大登录用户数设为 0,则任何用户都不能通过 Telnet 或者 SSH 登录到路由器。display user-interface 命令用来查看用户界面信息。
  • 不同的设备,或使用不同版本的 VRP 软件系统,具体可以被使用的 VTY 接口的最大数量可能不同。
  1. 配置用户通过Password方式登录设备
[Huawei]user-interface vty 0 4
[Huawei-ui-vty0-4]set authentication password cipher [information]

以上命令用来进入指定的用户视图并配置用户认证方式为 password。系统支持的用户界面包括 Console 用户界面和 VTY 用户界面,Console 界面用于本地登录,VTY 界面用于远程登录。默认情况下,设备一般最多支持 15 个用户同时通过 VTY 方式访问。

  1. 配置用户连接的超时时间
[Huawei]idle-timeout minutes [ seconds ]

以上命令用来设置用户界面断开连接的超时时间。如果用户在一段时间内没有输入命令,系统将断开连接。缺省情况下,超时时间是10分钟。

  1. 配置接口IP地址
[Huawei]interface [interface-number]
[Huawei-interface-number]ip address [ip address]

以上命令用来给设备上的物理或逻辑接口配置 IP 地址。

  • 要在接口运行 IP 服务,必须为接口配置一个 IP 地址。一个接口一般只需要一个 IP 地址,如果接口配置了新的主 IP 地址,那么新的主 IP 地址就替代了原来的主 IP 地址。
  • 用户可以利用 ip address ip-address {mask | mask-length} 命令为接口配置 IP 地址,这个命令中,mask 代表子网掩码,如 255.255.255.0mask-length 代表的是掩码长度,如 24。这两者任取其一均可。
  • Loopback 接口是一个逻辑接口,可用来虚拟一个网络或者一个 IP 主机。在运行多种协议的时候,由于 Loopback 接口稳定可靠,所以也可以用来做管理接口。
  • 在给物理接口配置 IP 地址时,需要关注该接口的物理状态。默认情况下,华为路由器和交换机的接口状态为 UP;如果该接口曾被手动关闭,则在配置完 IP 地址后,应使用 undo shutdown 打开该接口。
  1. 查看当前运行的配置文件
<Huawei>display current-configuration
  1. 配置文件保存
<Huawei>save
  1. 查看保存的配置
<Huawei>display saved-configuration
  1. 清除已保存的配置
<Huawei>reset saved-configuration

reset saved-configuration 命令用来清除配置文件或配置文件中的内容。执行该命令后,如果不使用命令 startup saved-configuration 重新指定设备下次启动时使用的配置文件,也不使用 save 命令保存当前配置,则设备下次启动时会采用缺省的配置参数进行初始化。

  1. 查看系统启动配置参数
<Huawei>display startup

以上命令用来查看设备本次及下次启动相关的系统软件、备份系统软件、配置文件、License文件、补丁文件以及语音文件。

<Huawei>display current-configuration 

以上命令用来查看路由器当前生效的配置参数。当用户将配置命令提交后,这些命令会放置在运行配置库。

<Huawei>display configuration candidate 

以上命令用来显示设备当前未提交的命令行信息,适用于 VRP8 版本。当用户完成一系列配置后还未提交时,这些命令会放置在候选配置库。VRP5 操作系统只有运行配置库和启动配置库,配置命令后直接生效无需提交,而 VRP8 操作系统配置命令后需要提交才能生效。大多数华为数通产品使用的是 VRP5 版本,少数产品如 NE 系列路由器使用的是 VRP8 版本。

  1. 配置系统下次启动时使用的配置文件
<Huawei>startup saved-configuration [configuration-file]

设备升级时,可以通过此命令让设备下次启动时加载指定的配置文件

  1. 配置设备重启
<Huawei>reboot

例子:配置路由器,需求如下:

  • 路由器与 PC 互通,地址规划如图。

image-20250301215935407

  • 公司其他人员可以通过 PC 远程登录访问路由器,密码是 Huawei123,但是只能查看配置不能随意修改配置命令。
  • 将当前配置保存为 huawei.zip 文件,并配置系统下次启动时使用该配置文件。

配置接口地址:

<Huawei>system-view 
Enter system view, return user view with Ctrl+Z.
	
[Huawei]sysname AR1

[AR1]interface GigabitEthernet 0/0/1

[AR1-GigabitEthernet0/0/1]ip address 192.168.1.1 24
Mar  1 2025 22:07:09-08:00 AR1 %%01IFNET/4/LINK_STATE(l)[1]:The line protocol IP
 on the interface GigabitEthernet0/0/1 has entered the UP state. 
 
[AR1-GigabitEthernet0/0/1]quit

配置用户权限和用户认证:

[AR1]user-interface vty 0 4

[AR1-ui-vty0-4]authentication-mode password 
Please configure the login password (maximum length 16):Huawei123

[AR1-ui-vty0-4]user privilege level 1

[AR1-ui-vty0-4]quit

配置系统下次启动文件:

<AR1>save huawei.zip
 Are you sure to save the configuration to huawei.zip? (y/n)[n]:y
  It will take several minutes to save configuration file, please wait.......
  Configuration file had been saved successfully
  Note: The configuration file will take effect after being activated

<AR1>startup saved-configuration huawei.zip
This operation will take several minutes, please wait...
Info: Succeeded in setting the file for booting system

<AR1>display startup 
MainBoard: 
  Startup system software:                   null
  Next startup system software:              null
  Backup system software for next startup:   null
  Startup saved-configuration file:          flash:/vrpcfg.zip
  Next startup saved-configuration file:     flash:/huawei.zip
  Startup license file:                      null
  Next startup license file:                 null
  Startup patch package:                     null
  Next startup patch package:                null
  Startup voice-files:                       null
  Next startup voice-files:                  null

设备中直接使用命令 save 进行保存,默认保存在 vrpcfg.cfg 文件中,当然也可以更改保存文件名,VRP5 操作系统默认文件放置在 flash: 目录下。

  • display startup 命令用来查看设备本次及下次启动相关的系统软件、备份系统软件、配置文件、License 文件、补丁文件以及语音文件。
    • Startup system software 表示的是本次系统启动所使用的 VRP 文件。
    • Next startup system software 表示的是下次系统启动所使用的 VRP 文件。
    • Startup saved-configuration file 表示的是本次系统启动所使用的配置文件。
    • Next startup saved-configuration file 表示的是下次系统启动所使用的配置文件。
    • 设备启动时,会从存储设备中加载配置文件并进行初始化。如果存储设备中没有配置文件,设备将会使用默认参数进行初始化。
  • startup saved-configuration [configuration-file] 命令用来指定系统下次启动时使用的配置文件,configuration-file 参数为系统启动配置文件的名称。

网络层协议及 IP 编址

网络层协议

网络层经常被称为 IP 层。但网络层协议并不只是 IP 协议,还包括 ICMP(Internet Control Message Protocol) 协议、IPX(Internet Packet Exchange)协议等。

IP 协议

  • IP 是 Internet Protocol 的缩写。 Internet Protocol 本身是一个协议文件的名称,该协议文件的内容非常少,主要是定义并阐述了 IP 报文的格式。
  • 经常被提及的 IP,一般不是特指 Internet Protocol 这个协议文件本身,而是泛指直接或间接与 IP 协议相关的任何内容。
  • IP 协议有版本之分,分别是 IPv4 和 IPv6。目前,Internet 上的 IP 报文主要都是 IPv4 报文,但是逐步在向 IPv6 过渡。若无特别声明,本章所提及的 IP 均指 IPv4。
    • IPv4(Internet Protocol Version 4)协议族是 TCP/IP 协议族中最为核心的协议族。它工作在 TCP/IP 协议栈的网络层,该层与 OSI 参考模型的网络层相对应。
    • IPv6(Internet Protocol Version 6)是网络层协议的第二代标准协议,也被称为 IPng(IP Next Generation)。它是 Internet 工程任务组 IETF(Internet Engineering Task Force)设计的一套规范,是 IPv4(Internet Protocol Version 4)的升级版本。

IPv4 报文格式

如下图:

image-20250302194530292

包括:

  • Version:4 bit:
    • 4:表示为 IPv4。
    • 6:表示为 IPv6。
  • Header Length:4 bit,首部长度,如果不带 Option 字段,则为 20,最长为 60。
  • Type of Service:8 bit,服务类型。只有在有 QoS 差分服务要求时,这个字段才起作用。
  • Total Length:16 bit,总长度,整个 IP 数据包的长度。
  • Identification:16 bit,标识,分片重组时会用到该字段。
  • Flags:3 bit,标志位。
    • 保留段位:0,保留。
    • 不分段位:1,表示 “不能分片”;0,表示 “能分片”。
    • 更多段位:1,表示 “后面还有分片”;0,表示 “最后一个数据片”。
  • Fragment Offset:13 bit,片偏移,分片重组时会用到该字段。指出较长的分组在分片后,该片在原分组中的相对位置,与更多段位组合,帮助接收方组合分段的报文。
  • Time to Live:8 bit,生存时间。可经过的最多路由数,即数据包在网络中可通过的路由器数的最大值。
    • 报文在网段间转发时,如果网络设备上的路由规划不合理,就可能会出现环路,导致报文在网络中无限循环,无法到达目的端。环路发生后,所有发往这个目的地的报文都会被循环转发,随着这种报文逐渐增多,网络将会发生拥塞。
    • 为避免环路导致的网络拥塞,IP 报文头中包含一个生存时间 TTL(Time To Live)字段。报文每经过一台三层设备,TTL 值减 1。初始 TTL 值由源端设备设置。当报文中的 TTL 降为 0 时,报文会被丢弃。同时,丢弃报文的设备会根据报文头中的源 IP 地址向源端发送 ICMP 错误消息。(注意:网络设备也可被配置为不向源端发送 ICMP 错误消息。)
  • Protocol:8 bit,协议号。指出此数据包携带的数据使用何种协议,目的端的网络层在接收并处理报文以后,需要决定下一步对报文如何处理。常见值有:
    • 1: ICMP, Internet Control Message。
    • 2: IGMP, Internet Group Management。
    • 6: TCP , Transmission Control Protocol。
    • 17: UDP, User Datagram Protocol。
  • Header Checksum:16 bit,首部检验和。
  • Source IP Address:32 bit,源 IP 地址。
  • Destination IP Address:32 bit,目的 IP 地址。
  • Options:可变,选项字段。
  • Padding:可变,填充字段,全填 0。

IPV4 地址定义

  • IP 地址在网络中用于标识一个节点(或者网络设备的接口)。
  • IP 地址用于 IP 报文在网络中的寻址。IP 地址就像现实中的地址,可以标识网络中的一个节点,数据就是通过它来找到目的地。
  • 在 IP 网络上,如果用户要将一台计算机连接到 Internet 上,就需要申请一个 IP 地址。IP 地址就像现实中的地址,可以标识网络中的一个节点,数据就是通过它来找到目的地。即我们通过 IP 地址实现全球范围内的网络通信。
  • IP 地址是网络设备接口的属性,不是网络设备本身的属性。当我们说给某台设备分配一个 IP 地址时,实质上是指给这台设备的某个接口分配一个 IP 地址。如果设备有多个接口,通常每个接口都至少需要一个 IP 地址。

IP 地址表示

  • IP 地址是长度是 32 bit,由 4 个字节组成。为了阅读和书写方便,IP 地址通常采用点分十进制数来表示。
  • 点分十进制表示法
    • IP 地址表现形式能够帮助我们更好的使用和配置网络,但通信设备在对 IP 地址进行计算时使用的是二进制的操作方式,因此掌握十进制、二进制的转换运算非常有必要。
  • IPv4 地址范围
    • 00000000.00000000.00000000.00000000~11111111.11111111.11111111.11111111,即 0.0.0.0~255.255.255.255。

IP 地址构成

  • IPv4 地址由如下两部分组成:
    • 网络部分 (网络号):用来标识一个网络。
      • IP 地址不能反映任何有关主机位置的地理信息,只能通过网络号码字段判断出主机属于哪个网络。
      • 对于网络号相同的设备,无论实际所处的物理位置如何,它们都是处在同一个网络中。
    • 主机部分 (主机号):用来区分一个网络内的不同主机。
  • 网络掩码 (Netmask),又称子网掩码 (Subnet Mask):
    • 网络掩码为 32 bit,与 IP 地址的位数一样,通常也以点分十进制数来表示。
    • 网络掩码不是一个 IP 地址,在二进制的表示上是一堆连续的 1、后面接一堆连续的 0。
    • 通常将网络掩码中 1 的个数称为这个网络掩码的长度。如:掩码 0.0.0.0 的长度是 0,掩码 252.0.0.0 的长度是 6。
    • 网络掩码一般与 IP 地址结合使用,其中值为 1 的比特对应 IP 地址中的网络位;值为 0 的比特对应 IP 地址中的主机位,以此来辅助我们识别一个 IP 地址中的网络位与主机位。即网络掩码中 1 的个数就是 IP 地址的网络号的位数,0 的个数就是 IP 地址的主机号的位数。

IP 地址寻址

使用网络部分和主机部分进行 IP 地址寻址:

  • 网络部分:用来标识一个网络,代表 IP 地址所属网络。类似于“XX省XX市XX区XX小区”的作用。
  • 主机部分:用来区分一个网络内的不同主机,能唯一标识网段上的某台设备。类似于门牌号 “XX 栋 XX 号” 的作用。
  • 网络寻址可分为:
    • 二层网络寻址:可直接通过 IP 地址,找到对应的主机接口。
    • 三层网络寻址:利用网关转发来自不同网段之间的数据包。
  • 网关:
    • 报文转发过程中,首先需要确定转发路径以及通往目的网段的接口。如果目的主机与源主机不在同一网段,报文需要先转发到网关,然后通过网关将报文转发到目的网段。
    • 网关是指接收并处理本地网段主机发送的报文并转发到目的网段的设备。为实现此功能,网关必须知道目的网段的路由。网关设备上连接本地网段的接口地址即为该网段的网关地址。

IPV4 地址分类方式

IP 地址分类

为了方便 IP 地址的管理及组网,IP 地址分成五类:

  • A、B、C、D、E 类的类别字段分别是二进制数 0、10、110、1110、1111,通过网络号码字段的前几个比特就可以判断 IP 地址属于哪一类,这是区分各类地址最简单的方法。
  • A、B、C 三类地址是单播 IP 地址 (除一些特殊地址外),只有这三类地址才能分配给主机(路由器和计算机的统称)接口使用。
  • D 类地址属于组播 IP 地址。
  • E 类地址专门用于特殊的实验目的。
  • 本节内容,只关注 A、B、C 三类地址。

A、B、C 类地址比较:

  • 使用 A 类地址的网络称为 A 类网络;使用 B 类地址的网络称为 B 类网络;使用 C 类地址的网络称为 C 类网络。
  • A 类网络的网络号为 8 bit,个数很少,但所允许的主机接口的个数很多;首位恒定为 0,地址空间为:0.0.0.0~127.255.255.255。
  • B 类网络的网络号为 16 bit,介于 A 类和 C 类网络之间;首两位恒定为 10,地址空间为:128.0.0.0~191.255.255.255。
  • C 类网络的网络号为 24 bit,个数很多,但所允许的主机接口的个数就很少;首三位恒定为 110,地址空间为:192.0.0.0~223.255.255.255。

IP 地址类型

IP 地址包括以下类型:

  • 网络地址

    • 网络号为 X,主机号的每个比特都为 0。

    • 不能分配给具体的主机接口使用。

  • 广播地址

    • 网络号为 X,主机号的每个比特都为 1。

    • 不能分配给具体的主机接口使用。

  • 可用地址

    • 又称主机地址,可用分配给具体的主机接口使用。

一个网段可用地址数量计算:

  • 一个网段的主机位为 n 位,则 IP 地址数为:2ⁿ,可用 IP 地址数为:2ⁿ-2 (减去网络地址和广播地址)。

私网 IP 地址

为了解决 IP 地址短缺的问题,提出了私有地址的概念。私有地址是指内部网络或主机地址,这些地址只能用于某个内部网络,不能用于公共网络。

  • 公网 IP 地址:连接到 Internet 的网络设备必须具有由 ICANN 分配的公网 IP 地址。
  • 私网 IP 地址:私网 IP 地址的使用使得网络可以得到更为自由地扩展,因为同一个私网 IP 地址是可以在不同的私有网络中重复使用的。

私有网络连接到 Internet:私有网络由于使用了私网 IP 地址,是不允许连接到 Internet 的。后来在实际需求的驱动下,许多私有网络也希望能够连接到 Internet 上,从而实现私网与 Internet 之间的通信,以及通过 Internet 实现私网与私网之间的通信。私网与 Internet 的互联,必须使用网络地址转换 (NAT) 技术实现。

特殊 IP 地址

IP 地址空间中,有一些特殊的 IP 地址,这些 IP 地址有特殊的含义和作用,包括:

  • 有限广播地址(255.255.255.255)
    • 它可以作为一个 IP 报文的目的 IP 地址使用。
    • 路由器接收到目的 IP 地址为有限广播地址的 IP 报文后,会停止对该 IP 报文的转发。
  • 任意地址 (0.0.0.0)
    • 如果把这个地址作为网络地址,它的意思就是 “任何网络” 的网络地址;如果把这个地址作为主机接口地址,它的意思就是 “这个网络上主机接口” 的 IP 地址。
    • 例如:当一个主机接口在启动过程中尚未获得自己的 IP 地址时,就可以向网络发送目的 IP 地址为有限广播地址、源 IP 地址为 0.0.0.0 的 DHCP 请求报文,希望 DHCP 服务器在收到自己的请求后,能够给自己分配一个可用的 IP 地址。
  • 环回地址(127.0.0.0/8)
    • 它可以作为一个 IP 报文的目的 IP 地址使用。其作用是测试设备自身的软件系统。
    • 一个设备产生的、目的 IP 地址为环回地址的 IP 报文是不可能离开这个设备本身的。
  • 本地链路地址(169.254.0.0/16)
    • 如果一个网络设备获取 IP 地址的方式被设置成了自动获取方式,但是该设备在网络上又没有找到可用的 DHCP 服务器,那么该设备就会使用 169.254.0.0/16 网段的某个地址来进行临时通信。

IPV4 和 IPV6

由全球 IP 地址分配机构,IANA (Internet Assigned Numbers Authority) 管理的 IPv4 地址,于 2011 年完全用尽。随着最后一个 IPv4 公网地址分配完毕,加上接入公网的用户及设备越来越多,IPv4 地址枯竭的问题日益严重,这是当前 IPv6 替代 IPv4 的最大源动力。

IPv4:

  • 地址长度:32 bit
  • 地址分类:单播地址、广播地址、组播地址
  • 特点:
    • 地址枯竭
    • 包头设计不合理
    • 对 ARP 的依赖,导致广播泛滥

IPv6:

  • 地址长度:128 bit
  • 地址分类:单播地址、组播地址、任播地址
  • 特点:
    • 无限地址
    • 简化的报文头部
    • IPv6 地址自动部署

子网划分

  • “有类编址” 的地址划分过于死板,划分的颗粒度太大,会有大量的主机号不能被充分利用,从而造成了大量的 IP 地址资源浪费。
  • 因此可以利用子网划分来减少地址浪费,即 VLSM (Variable Length Subnet Mask),可变长子网掩码。将一个大的有类网络,划分成若干个小的子网,使得 IP 地址的使用更为科学。
  • 假设有一个 C 类网段地址:192.168.10.0;默认情况下,网络掩码为 24 位,包括 24 位网络位,8 位主机位。通过计算可知,这样的网络中,有 256 个 IP 地址。
  • 现在,将原有的 24 位网络位向主机位去 “借” 1 位,这样网络位就扩充到了 25 位,相对的主机位就减少到了 7 位,而借过来的这 1 位就是子网位,此时网络掩码就变成了 25 位,即 255.255.255.128,或 / 25。
  • 子网位:可取值 0 或取值 1,则得到了两个新的子网。
  • 通过计算可知,现在网络中,有 128 个 IP 地址。
  • 计算网络地址,主机位全为 0:
    • 如果子网位取值 0,则网络地址为 192.168.10.0。
    • 如果子网位取值 1,则网络地址为 192.168.10.128。
  • 计算广播地址,主机位全为 1:
    • 如果子网位取值 0,则广播地址为 192.168.10.127。
    • 如果子网位取值 1,则广播地址为 192.168.10.255。

ICMP 协议

ICMP (Internet Control Message Protocol) 是 IP 协议的辅助协议。

  • ICMP 协议用来在网络设备间传递各种差错和控制信息,对于收集各种网络信息、诊断和排除各种网络故障等方面起着至关重要的作用。
  • 为了更有效地转发 IP 数据报文和提高数据报文交互成功的机会,在网络层使用 ICMP 协议。ICMP 允许主机或设备报告差错情况和提供有关异常情况的报告。

ICMP 消息:

image-20250303210314748

  • ICMP 消息封装在 IP 报文中,IP 报文头部 Protocol 值为 1 时表示 ICMP 协议。

  • 字段解释:

    • ICMP 消息的格式取决于 Type 和 Code 字段,其中 Type 字段为消息类型,Code 字段包含该消息类型的具体参数。
    • 校验和字段用于检查消息是否完整。
    • 消息中包含 32 bit 的可变参数,这个字段一般不使用,通常设置为 0。
      • 在 ICMP 重定向消息中,这个字段用来指定网关 IP 地址,主机根据这个地址将报文重定向到指定网关。
      • 在 Echo 请求消息中,这个字段包含标识符和序号,源端根据这两个参数将收到的回复消息与本端发送的 Echo 请求消息进行关联。尤其是当源端向目的端发送了多个 Echo 请求消息时,需要根据标识符和序号将 Echo 请求和回复消息进行一一对应。
TypeCode描述
00Echo Reply
30网络不可达
31主机不可达
32协议不可达
33端口不可达
50重定向
80Echo Request

ICMP 重定向

  • ICMP 重定向报文是 ICMP 控制报文中的一种。在特定的情况下,当路由器检测到一台机器使用非最优路由的时候,它会向该主机发送一个 ICMP 重定向报文,请求主机改变路由。
  • ICMP 重定向过程:
    1. 主机 A 希望发送报文到服务器 A,于是根据配置的默认网关地址向网关 RTB 发送报文。
    2. 网关 RTB 收到报文后,检查报文信息,发现报文应该转发到与源主机在同一网段的另一个网关设备 RTA,此转发路径是更优的路径,所以 RTB 会向主机发送一个 Redirect 消息,通知主机直接向另一个网关 RTA 发送该报文。
    3. 主机收到 Redirect 消息后,会向 RTA 发送报文,然后 RTA 会将该报文再转发给服务器 A。

image-20250303210556745

ICMP 差错检测

  • ICMP Echo 消息常用于诊断源和目的地之间的网络连通性,同时还可以提供其他信息,如报文往返时间等。
  • ICMP 的一个典型应用是 Ping。Ping 是检测网络连通性的常用工具,同时也能够收集其他相关信息。用户可以在 Ping 命令中指定不同参数,如 ICMP 报文长度、发送的 ICMP 报文个数、等待回复响应的超时时间等,设备根据配置的参数来构造并发送 ICMP 报文,进行 Ping 测试。

ICMP 错误报告

  • ICMP 定义了各种错误消息,用于诊断网络连接性问题;根据这些错误消息,源设备可以判断出数据传输失败的原因。
    • 如果网络中发生了环路,导致报文在网络中循环,且最终 TTL 超时,这种情况下网络设备会发送 TTL 超时消息给发送端设备。
    • 如果目的地不可达,则中间的网络设备会发送目的不可达消息给发送端设备。目的不可达的情况有多种,如果是网络设备无法找到目的网络,则发送目的网络不可达消息;如果网络设备无法找到目的网络中的目的主机,则发送目的主机不可达消息。
  • ICMP 的另一个典型应用是 Tracert。Tracert 基于报文头中的 TTL 值来逐跳跟踪报文的转发路径,是检测网络丢包和时延的有效手段,同时可以帮助管理员发现网络中的路由环路。为了跟踪到达某特定目的地址的路径,源端首先将报文的 TTL 值设置为 1。该报文到达第一个节点后,TTL 超时,于是该节点向源端发送 TTL 超时消息,消息中携带时间戳。然后源端将报文的 TTL 值设置为 2,报文到达第二个节点后超时,该节点同样返回 TTL 超时消息,以此类推,直到报文到达目的地。这样,源端根据返回的报文中的信息可以跟踪到报文经过的每一个节点,并根据时间戳信息计算往返时间。

IPV4 地址配置

IP 地址的基础配置命令

  1. 进入接口视图
[Huawei] interface [interface-type interface-number]

通过此命令可以进入指定的接口视图,配置接口的相关属性。

  • interface-type interface-number:指定接口类型和接口编号。接口类型和接口编号之间可以输入空格也可以不输入空格。
  1. 配置接口的 IP 地址
[Huawei-GigabitEthernet0/0/1] ip address [ip-address { mask | mask-length }]

在接口视图下,通过此命令来给网络设备上的接口配置 IP 地址,实现网络的互连。

  • ip-address:指定接口的 IP 地址,点分十进制形式。
  • mask:指定子网掩码,点分十进制形式。
  • mask-length:指定掩码长度,整数形式,取值范围是 0~32。

例子:配置接口 IP 地址,为以下两台路由器互联的网络中,配置设备的互联物理接口地址以及各自的逻辑地址。

image-20250303213923124

配置物理接口地址:

[RTA] interface gigabitethernet 0/0/1
[RTA-GigabitEthernet0/0/1] ip address 192.168.1.1 255.255.255.0

[RTA-GigabitEthernet0/0/1] ip address 192.168.1.1 24

配置逻辑接口地址:

[RTA] interface LoopBack 0
[RTA-LoopBack0] ip address 1.1.1.1 255.255.255.255

[RTA-LoopBack0] ip address 1.1.1.1 32
  • 物理接口:物理接口是指网络设备上实际存在的接口,分为负责承担业务传输的业务接口和负责管理设备的管理接口,例如 GE 业务接口和 MEth 管理接口。
  • 逻辑接口:逻辑接口是指能够实现数据交换功能但物理上不存在、需要通过配置建立的接口,需要承担业务传输,例如 VLANIF 接口、Loopback 接口。
    • Loopback 接口:用户需要一个接口状态永远是 Up 的接口的 IP 地址时,可以选择 Loopback 接口的 IP 地址。
      • Loopback 接口一旦被创建,其物理状态和链路协议状态永远是 Up,即使该接口上没有配置 IP 地址。
      • Loopback 接口配置 IP 地址后,就可以对外发布。Loopback 接口上可以配置 32 位掩码的 IP 地址,达到节省地址空间的目的。
      • Loopback 接口不能封装任何链路层协议,数据链路层也就不存在协商问题,其协议状态永远都是 Up。
      • 对于目的地址不是本地 IP 地址,出接口是本地 Loopback 接口的报文,设备会将其直接丢弃。

网络 IP 地址规划

  • IP 地址规划要和网络结构、路由协议、流量规划、业务规则等结合起来考虑。IP 地址的规划应尽可能和网络层次相对应,应该是自顶向下的一种规划。
  • 总得来说: IP 地址规划的目标是:易管理、易扩展、利用率高。
  • 规划原则:
    • 唯一性:一个 IP 网络中不能有两个主机采用相同的 IP 地址。
    • 连续性:连续地址在层次结构网络中易于进行路由汇总,大大缩减路由表,提高路由计算的效率、加速路由收敛。
    • 扩展性:地址分配在每一层次上都要有合理的预留,在网络规模扩展时能保证路由汇总所需的连续性。避免网络扩展造成的地址、路由重新规划。
    • 结构化、业务相关性:地址规划与网络拓扑结构和网络承载业务结合起来,便于路由规划和 QoS 部署。好的 IP 地址规划使得每个地址都具有实际含义,看到一个地址就可以大致判断出该地址所属的设备和对应的业务。

IP 路由基础

路由概述

  • 在一个典型的数据通信网络中,往往存在多个不同的 IP 网段,数据在不同的 IP 网段之间交互是需要借助三层设备的,这些设备具备路由能力,能够实现数据的跨网段转发。
  • 路由是数据通信网络中最基本的要素。路由信息是指导报文转发的路径信息,路由过程就是报文转发的过程。

路由基本概念

  • 通过 IP 地址能够寻找到一个唯一的网络节点,每个 IP 都有自己所属的网段,这些网络可能分布在世界各地,共同组成了全球的网络。
  • 为了实现不同网段之间的相互通信,网络设备需要能够转发来自不同网段的 IP 报文,将其送达不同的 IP 网段。
路由
  • 路由是指导报文转发的路径信息,通过路由可以确认转发 IP 报文的路径。
  • 路由设备是依据路由转发报文到目的网段的网络设备,最常见的路由设备:路由器。
  • 路由设备维护着一张路由表,保存着路由信息。
  • 网关以及中间节点(路由器)根据收到的 IP 报文其目的地址选择一条合适的路径,并将报文转发到下一个路由器。在路径中的最后一跳路由器二层寻址将报文转发给目的主机。这个过程被称为路由转发。
  • 中间节点选择路径所依赖的表项为称为路由表。
  • 路由条目包含明确的出接口以及下一跳,这两项信息指导 IP 报文转发到相应的下一跳设备上。
路由信息
  • 路由中包含以下信息:
    • 目的网络:标识目的网段
    • 掩码:与目的地址共同标识一个网段
    • 出接口:数据包被路由后离开本路由器的接口
    • 下一跳:路由器转发到达目的网段的数据包所使用的下一跳地址
  • 这些信息标识了目的网段、明确了转发 IP 报文的路径。
  • 通过路由中包含的信息,路由设备可以转发 IP 报文到相应的路径。
  • 目的地址、掩码用于识别 IP 报文目的地址,路由设备将 IP 报文匹配到相应的路由之后,根据路由的出接口、下一跳确认转发的路径。
  • 只有出接口并不能够确认转发 IP 报文的下一跳设备,还需要明确的下一跳设备地址。
路由表
目的网络 / 掩码下一跳出接口
11.0.0.0/82.2.2.2GE0/0
13.0.0.0/83.3.3.2GE0/1
14.0.0.0/81.1.1.2GE0/2
1.1.1.0/301.1.1.1GE0/2
1.1.1.1/32127.0.0.1GE0/2
  • 路由器通过各种方式发现路由
  • 路由器选择最优的路由条目放入路由表中
  • 路由表指导设备对 IP 报文的转发
  • 路由器通过对路由表的管理实现对路径信息的管理
  • 路由器依据路由表转发报文。
  • 路由表由一条条详细的路由条目组成。
  • 路由表由路由条目组成,但不代表路由表中保存了所有路由,路由表中只会保存 “最优的” 路由。
  • 对路由表中的路由条目的管理实际上就是路由器维护、管理路由信息的具体实现。

路由条目生成

  • 路由器依据路由表进行路由转发,为实现路由转发,路由器需要发现路由,以下为常见的路由获取方式:
    • 直连路由:直连接口所在网段的路由,由设备自动生成。
    • 静态路由:由网络管理员手工配置的路由条目
    • 动态路由:路由器通过动态路由协议(如 OSPF、IS-IS、BGP 等)学习到的路由
直连路由
目的网络来源下一跳出接口
10.0.0.0/24直连10.0.0.2GE0/0/0
20.1.1.0/24直连20.1.1.2GE0/0/1
  • 直连路由指向本地直连网络的路由,由设备自动生成。
  • 当路由器为路由转发的最后一跳路由器时,IP 报文匹配直连路由,路由器转发 IP 报文到目的主机。
  • 使用直连路由进行路由转发时,报文的目的 IP 和路由器接口 IP 在一个网段之中。
  • 当匹配中直连路由进行转发时,此时路由器会查看 ARP 表项,将报文直接转到目的地址,此时该路由器为路由转发的最后一跳路由器。
  • 直连路由的下一跳地址并不是其他设备上的接口地址,因为该路由的目的网段为接口所在网段,本接口就是最后一跳,不需要再转发给下一跳,所以在路由表中的下一跳地址就是接口自身地址。
  • 使用直连路由进行路由转发时,转发的动作不是交给下一跳,而是查询 ARP 表项,根据 ARP 表项封装报文,将报文发送到目的 IP。
  • 并不是所有接口生成的直连路由都会出现在路由表中,直连路由出现在路由表中的前提是该接口的物理状态、协议状态都为 UP。

最优路由条目优选

使用命令 display ip routing-table 查看路由表:

<Huawei> display ip routing-table
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Routing Tables: Public
         Destinations : 8        Routes : 8        

Destination/Mask    Proto   Pre  Cost      Flags NextHop         Interface

       10.0.0.0/24  Direct  0    0           D   10.0.0.1        GigabitEthernet0/0/0
       10.0.0.1/32  Direct  0    0           D   127.0.0.1       GigabitEthernet0/0/0
     10.0.0.255/32  Direct  0    0           D   127.0.0.1       GigabitEthernet0/0/0
       20.1.1.0/24  Static  60   0          RD   10.0.0.2        GigabitEthernet0/0/0
      127.0.0.0/8   Direct  0    0           D   127.0.0.1       InLoopBack0
      127.0.0.1/32  Direct  0    0           D   127.0.0.1       InLoopBack0
127.255.255.255/32  Direct  0    0           D   127.0.0.1       InLoopBack0
255.255.255.255/32  Direct  0    0           D   127.0.0.1       InLoopBack0

路由表中各个内容的含义:

  • Destination/Mask:表示此路由的目的网络地址与网络掩码。将目的地址和子网掩码 “逻辑与” 后可得到目的主机或路由器所在网段的地址。例如:目的地址为 1.1.1.1,掩码为 255.255.255.0 的主机或路由器所在网段的地址为 1.1.1.0。
  • Proto(Protocol):该路由的协议类型,也即路由器是通过什么协议获知该路由的。
  • Pre(Preference):表示此路由的路由协议优先级。针对同一目的地,可能存在不同下一跳、出接口等多条路由,这些不同的路由可能是由不同的路由协议发现的,也可以是手工配置的静态路由。优先级最高(数值最小)者将成为当前的最优路由。
  • Cost:路由开销。当到达同一目的地的多条路由具有相同的路由优先级时,路由开销最小的将成为当前的最优路由。
  • NextHop:表示对于本路由器而言,到达该路由指向的目的网络的下一跳地址。该字段指明了数据转发的下一个设备。
  • Interface:表示此路由的出接口。指明数据将从本路由器的哪个接口转发出去。
  • Preference 用于不同路由协议间路由优先级的比较,Cost 用于同一种路由协议内部不同路由的优先级的比较。在业界,Cost 也被称为路由度量值(Metric)。
路由优先级
  • 当路由器从多种不同的途径获知到达同一个目的网段的路由(这些路由的目的网络地址及网络掩码均相同)时,路由器会比较这些路由的优先级,优选优先级值最小的路由。
  • 路由来源的优先级值(Preference)越小代表加入路由表的优先级越高。
  • 拥有最高优先级的路由将被添加进路由表。
  • 路由器通过动态路由协议 OSPF 和手动配置的方式都发现了到达目的地的路由,此时会比较这两条路由的优先级,优选优先级值最小的路由。
目的网络 / 掩码来源优先级下一跳
10.0.0.0/30静态6030.1.2.2
10.0.0.0/30OSPF1020.1.1.2
  • 每一种路由协议都有相应的优先级。
  • 默认情况下,OSPF 相比静态路由拥有更优的优先级,因此通过 OSPF 学习到的路由被添加到路由表中。
  • 常见路由类型的默认优先级如下:
路由来源路由类型默认优先级
直连直连路由0
静态静态路由60
动态路由OSPF 内部路由10
动态路由OSPF 外部路由150
度量值
  • 当路由器通过某种路由协议发现了多条到达同一个目的网络的路由时(拥有相同的路由优先级),度量值将作为路由优选的依据之一。
  • 路由度量值表示到达这条路由所指目的地址的代价。
  • 一些常用的度量值有:跳数、带宽、时延、代价、负载、可靠性等。
  • 度量值数值越小越优先,度量值最小路由将会被添加到路由表中。
  • 度量值很多时候被称为开销(Cost)。
  • 路由器通过动态路由协议 OSPF 学习到了两条目的地路由,学习自同一路由协议、优先级相同,因此需要继续比较度量值。
  • 拥有更小的度量值的路由条目会被加入到路由表中。
目的网络 / 掩码来源Cost下一跳
10.0.0.0/30OSPF2020.1.1.2
10.0.0.0/30OSPF1030.1.1.2

路由转发

最长前缀匹配原则
  • 当路由器收到一个 IP 数据包时,会将数据包的目的 IP 地址与自己本地路由表中的所有路由表项进行逐位(Bit-By-Bit)比对,直到找到匹配度最长的条目。
  • 根据最长匹配原则进行匹配,能够匹配 192.168.2.2 的路由存在两条,但是路由的掩码长度中,一个为 16 bit,另一个为 24 bit,掩码长度为 24 bit 的路由满足最长匹配原则,因此被选择来指导发往 192.168.2.2 的报文转发。
目的网络 / 掩码下一跳
192.168.0.0/1610.1.1.2
192.168.2.0/2420.1.1.2
192.168.3.0/2430.1.1.2
  • 根据最长匹配原则进行匹配,能够匹配 192.168.3.2 的路由也存在两条,但是路由的掩码长度中,一个为 16 bit,另一个为 24 bit,掩码长度为 24 bit 的路由满足最长匹配原则,因此被选择来指导发往 192.168.3.2 的报文转发。
目的网络 / 掩码下一跳
192.168.0.0/1610.1.1.2
192.168.2.0/2420.1.1.2
192.168.3.0/2430.1.1.2
路由转发流程
  • 来自 10.0.1.0/24 网段的 IP 报文想要去往 40.0.1.0/24 网段,首先到达网关,网关查找路由表项,确定转发的下一跳、出接口,之后报文转发给 R2。报文到达 R2 之后,R2 通过查找路由表项转发给 R3,R3 收到后查找路由表项,发现 IP 报文目的 IP 属于本地接口所在网段,直接本地转发。

image-20250304220709672

小结:

  • 当路由器从多种不同的途径获知到达同一个目的网段的路由(这些路由的目的网络地址及网络掩码均相同)时,会选择路由优先级值最小的路由;如果这些路由学习自相同的路由协议,则优选度量值最优的。总之,最优的路由加入路由表。
  • 当路由器收到一个数据包时,会在自己的路由表中查询数据包的目的 IP 地址。如果能够找到匹配的路由表项,则依据表项所指示的出接口及下一跳来转发数据;如果没有匹配的表项,则丢弃该数据包。
  • 路由器的行为是逐跳的,数据包从源到目的地沿路径每个路由器都必须有关于目标网段的路由,否则就会造成丢包。
  • 数据通信往往是双向的,因此要关注流量的往返(往返路由)。

静态路由

  • 静态路由由网络管理员手动配置,配置方便,对系统要求低,适用于拓扑结构简单并且稳定的小型网络。
  • 缺点是不能自动适应网络拓扑的变化,需要人工干预。

静态路由配置

语法:

  1. 关联下一跳 IP 的方式
[Huawei] ip route-static [ip-address { mask | mask-length } nexthop-address]
  1. 关联出接口的方式
[Huawei] ip route-static [ip-address { mask | mask-length } interface-type interface-number]
  1. 关联出接口和下一跳 IP 方式
[Huawei] ip route-static [ip-address { mask | mask-length } interface-type interface-number [ nexthop-address ]]
  • 在创建静态路由时,可以同时指定出接口和下一跳。对于不同的出接口类型,也可以只指定出接口或只指定下一跳。

  • 对于点到点接口(如串口),只需指定出接口。

  • 对于广播接口(如以太网接口)和 VT(Virtual-template)接口,必须指定下一跳。

例子:配置静态路由

image-20250305202238286

RTA 配置接口地址:

<Huawei>system-view
Enter system view, return user view with Ctrl+Z.
[Huawei]sysname RTA
[RTA]interface GigabitEthernet 0/0/0
[RTA-GigabitEthernet0/0/0]ip address 10.0.0.1 24
[RTA-GigabitEthernet0/0/0]dis this
[V200R003C00]
#
interface GigabitEthernet0/0/0
 ip address 10.0.0.1 255.255.255.0 
#
return

RTB 配置接口地址:

<Huawei>system-view
Enter system view, return user view with Ctrl+Z.
[Huawei]sysname RTB
[RTB]interface GigabitEthernet 0/0/0
[RTB-GigabitEthernet0/0/0]ip address 10.0.0.2 24
[RTB-GigabitEthernet0/0/0]display this
[V200R003C00]
#
interface GigabitEthernet0/0/0
 ip address 10.0.0.2 255.255.255.0 
#
return

[RTB-GigabitEthernet0/0/0]inter g0/0/1
[RTB-GigabitEthernet0/0/1]ip address 20.1.1.2 24
[RTB-GigabitEthernet0/0/1]display this
[V200R003C00]
#
interface GigabitEthernet0/0/1
 ip address 20.1.1.2 255.255.255.0 
#
return

RTC 配置接口地址:

<Huawei>system-view
Enter system view, return user view with Ctrl+Z.
[Huawei]sysname RTC
[RTC]interface GigabitEthernet 0/0/1
[RTC-GigabitEthernet0/0/1]ip address 20.1.1.3 24
[RTC-GigabitEthernet0/0/1]display this
[V200R003C00]
#
interface GigabitEthernet0/0/1
 ip address 20.1.1.3 255.255.255.0 
#
return

RTA 配置静态路由:

[RTA]ip route-static 20.1.1.0 255.255.255.0 10.0.0.2
[RTA]display ip routing-table
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Routing Tables: Public
         Destinations : 8        Routes : 8        

Destination/Mask    Proto   Pre  Cost      Flags NextHop         Interface

       10.0.0.0/24  Direct  0    0           D   10.0.0.1        GigabitEthernet0/0/0
       10.0.0.1/32  Direct  0    0           D   127.0.0.1       GigabitEthernet0/0/0
     10.0.0.255/32  Direct  0    0           D   127.0.0.1       GigabitEthernet0/0/0
       20.1.1.0/24  Static  60   0          RD   10.0.0.2        GigabitEthernet0/0/0
      127.0.0.0/8   Direct  0    0           D   127.0.0.1       InLoopBack0
      127.0.0.1/32  Direct  0    0           D   127.0.0.1       InLoopBack0
127.255.255.255/32  Direct  0    0           D   127.0.0.1       InLoopBack0
255.255.255.255/32  Direct  0    0           D   127.0.0.1       InLoopBack0

RTC 配置静态路由:

[RTC]ip route-static 10.0.0.0 255.255.255.0 20.1.1.2
[RTC]display ip routing-table 
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Routing Tables: Public
         Destinations : 8        Routes : 8        

Destination/Mask    Proto   Pre  Cost      Flags NextHop         Interface

       10.0.0.0/24  Static  60   0          RD   20.1.1.2        GigabitEthernet0/0/1
       20.1.1.0/24  Direct  0    0           D   20.1.1.3        GigabitEthernet0/0/1
       20.1.1.3/32  Direct  0    0           D   127.0.0.1       GigabitEthernet0/0/1
     20.1.1.255/32  Direct  0    0           D   127.0.0.1       GigabitEthernet0/0/1
      127.0.0.0/8   Direct  0    0           D   127.0.0.1       InLoopBack0
      127.0.0.1/32  Direct  0    0           D   127.0.0.1       InLoopBack0
127.255.255.255/32  Direct  0    0           D   127.0.0.1       InLoopBack0
255.255.255.255/32  Direct  0    0           D   127.0.0.1       InLoopBack0
  • RTA 与 RTC 上配置静态路由,实现 10.0.0.0/24 与 20.1.1.0/24 的互通。
  • 因为报文是逐跳转发的,所以每一跳路由设备上都需要配置到达相应目的地址的路由。
  • 另外需要注意通信是双向的,针对通信过程中的往返流量,都需关注途径设备上的路由配置。

缺省路由

  • 缺省路由是一种特殊的路由,当报文没有在路由表中找到匹配的具体路由表项时才使用的路由。如果报文的目的地址不能与路由表的任何目的地址相匹配,那么该报文将选取缺省路由进行转发。
  • 缺省路由在路由表中的形式为 0.0.0.0/0,缺省路由也被叫做默认路由。
  • 缺省路由一般用于企业网络出口,配置一条缺省路由让出口设备能够转发前往 Internet 上任意地址的 IP 报文。

例子:配置缺省路由

[RTA]ip route-static 0.0.0.0 0 10.0.0.2
[RTA]display ip routing-table 
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Routing Tables: Public
         Destinations : 9        Routes : 9        

Destination/Mask    Proto   Pre  Cost      Flags NextHop         Interface

        0.0.0.0/0   Static  60   0          RD   10.0.0.2        GigabitEthernet0/0/0
       10.0.0.0/24  Direct  0    0           D   10.0.0.1        GigabitEthernet0/0/0
       10.0.0.1/32  Direct  0    0           D   127.0.0.1       GigabitEthernet0/0/0
     10.0.0.255/32  Direct  0    0           D   127.0.0.1       GigabitEthernet0/0/0
       20.1.1.0/24  Static  60   0          RD   10.0.0.2        GigabitEthernet0/0/0
      127.0.0.0/8   Direct  0    0           D   127.0.0.1       InLoopBack0
      127.0.0.1/32  Direct  0    0           D   127.0.0.1       InLoopBack0
127.255.255.255/32  Direct  0    0           D   127.0.0.1       InLoopBack0
255.255.255.255/32  Direct  0    0           D   127.0.0.1       InLoopBack0

动态路由

动态路由概述

  • 当网络规模越来越大时,使用手动配置静态路由的方式获取路由条目将变得越发复杂,同时在拓扑发生变化时不能及时、灵活响应。

  • 动态路由协议能够自动发现和生成路由,并在拓扑变化时及时更新路由,可以有效减少管理人员工作量,更适用于大规模网络。

动态路由分类

根据路由信息传递的内容、计算路由的算法,可以将动态路由协议分为两大类:

  • 距离矢量协议(Distance-Vector Protocol)

    • RIP
  • 链路状态协议(Link-State Protocol)

    • OSPF

    • IS-IS

  • BGP 使用一种基于距离矢量算法修改后的算法,该算法被称为路径矢量(Path Vector)算法。因此在某些场合下,BGP 也被称为路径矢量路由协议。

根据工作范围不同,又可以分为:

  • 内部网关协议 IGP(Interior Gateway Protocol):在一个自治系统内部运行。RIP、OSPF、ISIS 为常见的 IGP 协议。

  • 外部网关协议 EGP(Exterior Gateway Protocol):运行于不同自治系统之间。BGP 是目前最常用的 EGP 协议。

路由高级特性

路由递归

路由必须有直连的下一跳才能够指导转发,但是路由生成时下一跳可能不是直连的,因此需要计算出一个直连的下一跳和对应的出接口,这个过程就叫做路由递归。路由递归也被称为路由迭代。

例子:路由递归,拓扑如下:

image-20250306213433299

AR1 配置接口地址:

<Huawei>sys
Enter system view, return user view with Ctrl+Z.
[Huawei]sys AR1
[AR1]int g0/0/0
[AR1-GigabitEthernet0/0/0]ip addr 10.1.12.1 24

AR2 配置接口地址:

<Huawei>sys
Enter system view, return user view with Ctrl+Z.
[Huawei]sys AR2
[AR2]int g0/0/0
[AR2-GigabitEthernet0/0/0]ip addr 10.1.12.2 24

[AR2-GigabitEthernet0/0/0]int g0/0/1
[AR2-GigabitEthernet0/0/1]ip addr 10.1.23.2 24

AR3 配置接口地址:

<Huawei>sys
Enter system view, return user view with Ctrl+Z.
[Huawei]sys AR3
[AR3]int g0/0/0
[AR3-GigabitEthernet0/0/0]ip addr 10.1.23.3 24

[AR3-GigabitEthernet0/0/0]int lo 0
[AR3-LoopBack0]ip addr 30.0.0.1 24

AR1 配置静态路由:

[AR1]ip route-static 30.0.0.0 24 10.1.23.3

虽然添加了上面这条静态路由,但是在路由表中却看不到。这是由于去往 30.0.0.0/24 的路由,下一跳为 10.1.23.3,属于非本地直连网络。若路由表中没有去往 10.1.23.3 的路由,该静态路由将不会生效,无法成为有效路由条目,也不会出现在路由表中。

[AR1]display ip routing-table 
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Routing Tables: Public
         Destinations : 7        Routes : 7        

Destination/Mask    Proto   Pre  Cost      Flags NextHop         Interface

      10.1.12.0/24  Direct  0    0           D   10.1.12.1       GigabitEthernet0/0/0
      10.1.12.1/32  Direct  0    0           D   127.0.0.1       GigabitEthernet0/0/0
    10.1.12.255/32  Direct  0    0           D   127.0.0.1       GigabitEthernet0/0/0
      127.0.0.0/8   Direct  0    0           D   127.0.0.1       InLoopBack0
      127.0.0.1/32  Direct  0    0           D   127.0.0.1       InLoopBack0
127.255.255.255/32  Direct  0    0           D   127.0.0.1       InLoopBack0
255.255.255.255/32  Direct  0    0           D   127.0.0.1       InLoopBack0

此时需要添加一条去往 10.1.23.0/24 的路由,下一跳为直连网络内的 IP 地址 10.1.12.2。此时,去往 30.0.0.0/24 的路由通过递归查询得到一个直连的下一跳,该路由从而生效。

[AR1]ip route-static 10.1.23.0 24 10.1.12.2
[AR1]display ip routing-table
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Routing Tables: Public
         Destinations : 9        Routes : 9        

Destination/Mask    Proto   Pre  Cost      Flags NextHop         Interface

      10.1.12.0/24  Direct  0    0           D   10.1.12.1       GigabitEthernet0/0/0
      10.1.12.1/32  Direct  0    0           D   127.0.0.1       GigabitEthernet0/0/0
    10.1.12.255/32  Direct  0    0           D   127.0.0.1       GigabitEthernet0/0/0
      10.1.23.0/24  Static  60   0          RD   10.1.12.2       GigabitEthernet0/0/0
       30.0.0.0/24  Static  60   0          RD   10.1.23.3       GigabitEthernet0/0/0
      127.0.0.0/8   Direct  0    0           D   127.0.0.1       InLoopBack0
      127.0.0.1/32  Direct  0    0           D   127.0.0.1       InLoopBack0
127.255.255.255/32  Direct  0    0           D   127.0.0.1       InLoopBack0
255.255.255.255/32  Direct  0    0           D   127.0.0.1       InLoopBack0

[AR1]display fib
Route Flags: G - Gateway Route, H - Host Route,    U - Up Route
             S - Static Route,  D - Dynamic Route, B - Black Hole Route
             L - Vlink Route
--------------------------------------------------------------------------------
 FIB Table:
 Total number of Routes : 9 
 
Destination/Mask   Nexthop         Flag  TimeStamp     Interface      TunnelID
10.1.12.255/32     127.0.0.1       HU    t[73]         InLoop0        0x0
10.1.12.1/32       127.0.0.1       HU    t[73]         InLoop0        0x0
255.255.255.255/32 127.0.0.1       HU    t[2]          InLoop0        0x0
127.255.255.255/32 127.0.0.1       HU    t[2]          InLoop0        0x0
127.0.0.1/32       127.0.0.1       HU    t[2]          InLoop0        0x0
127.0.0.0/8        127.0.0.1       U     t[2]          InLoop0        0x0
10.1.12.0/24       10.1.12.1       U     t[73]         GE0/0/0        0x0
10.1.23.0/24       10.1.12.2       GSU   t[267]        GE0/0/0        0x0
30.0.0.0/24        10.1.12.2       GSU   t[267]        GE0/0/0        0x0

等价路由

  • 来源相同、开销相同的路由都会被加入路由表,形成的路由为等价路由(两个路由条目指向的目的网段相同,但是具有不同的下一跳地址),路由转发会将流量分布到多条路径上。
  • 路由表中存在等价路由之后,前往该目的网段的 IP 报文路由器会通过所有有效的接口、下一跳转发,这种转发行为被称为负载分担。

例子:等价路由,拓扑如下:

image-20250310202914702

AR1 配置新增接口地址:

[AR1]int g0/0/1
[AR1-GigabitEthernet0/0/1]ip addr 10.2.12.1 24

AR2 配置新增接口地址:

[AR2]int g0/0/2
[AR2-GigabitEthernet0/0/2]ip addr 10.2.12.2 24

AR1 再多配置一条静态路由:

[AR1]display current-configuration | include sta
ip route-static 10.1.23.0 255.255.255.0 10.1.12.2
ip route-static 30.0.0.0 255.255.255.0 10.1.23.3

[AR1]ip route-static 10.1.23.0 24 10.2.12.2

[AR1]display ip routing-table 
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Routing Tables: Public
         Destinations : 12       Routes : 13       

Destination/Mask    Proto   Pre  Cost      Flags NextHop         Interface

      10.1.12.0/24  Direct  0    0           D   10.1.12.1       GigabitEthernet0/0/0
      10.1.12.1/32  Direct  0    0           D   127.0.0.1       GigabitEthernet0/0/0
    10.1.12.255/32  Direct  0    0           D   127.0.0.1       GigabitEthernet0/0/0
      10.1.23.0/24  Static  60   0          RD   10.1.12.2       GigabitEthernet0/0/0
                    Static  60   0          RD   10.2.12.2       GigabitEthernet0/0/1
      10.2.12.0/24  Direct  0    0           D   10.2.12.1       GigabitEthernet0/0/1
      10.2.12.1/32  Direct  0    0           D   127.0.0.1       GigabitEthernet0/0/1
    10.2.12.255/32  Direct  0    0           D   127.0.0.1       GigabitEthernet0/0/1
       30.0.0.0/24  Static  60   0          RD   10.1.23.3       GigabitEthernet0/0/0
                    Static  60   0          RD   10.1.23.3       GigabitEthernet0/0/1
      127.0.0.0/8   Direct  0    0           D   127.0.0.1       InLoopBack0
      127.0.0.1/32  Direct  0    0           D   127.0.0.1       InLoopBack0
127.255.255.255/32  Direct  0    0           D   127.0.0.1       InLoopBack0
255.255.255.255/32  Direct  0    0           D   127.0.0.1       InLoopBack0

浮动路由

  • 静态路由支持配置时手动指定优先级,可以通过配置目的地址 / 掩码相同、优先级不同、下一跳不同的静态路由,实现转发路径的备份。
  • 浮动路由是主用路由的备份,保证链路故障时提供备份路由。主用路由下一跳可达时该备份路由不会出现在路由表。
[RTA] ip route-static 20.0.0.0 30 10.1.1.2
[RTA] ip route-static 20.0.0.0 30 10.1.2.2 preference 70

例子:浮动路由,拓扑如下:

image-20250310210928861

AR1 修改静态路由:

[AR1]display current-configuration | include sta
ip route-static 10.1.23.0 255.255.255.0 10.1.12.2
ip route-static 10.1.23.0 255.255.255.0 10.2.12.2
ip route-static 30.0.0.0 255.255.255.0 10.1.23.3

[AR1]ip route-static 10.1.23.0 24 10.2.12.2 preference 80
Info: Succeeded in modifying route.

由于修改的路由优先级 80 比默认 60 低,故此时路由表不会出现该条路由:

[AR1]display ip routing-table 
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Routing Tables: Public
         Destinations : 12       Routes : 12       

Destination/Mask    Proto   Pre  Cost      Flags NextHop         Interface

      10.1.12.0/24  Direct  0    0           D   10.1.12.1       GigabitEthernet0/0/0
      10.1.12.1/32  Direct  0    0           D   127.0.0.1       GigabitEthernet0/0/0
    10.1.12.255/32  Direct  0    0           D   127.0.0.1       GigabitEthernet0/0/0
      10.1.23.0/24  Static  60   0          RD   10.1.12.2       GigabitEthernet0/0/0
      10.2.12.0/24  Direct  0    0           D   10.2.12.1       GigabitEthernet0/0/1
      10.2.12.1/32  Direct  0    0           D   127.0.0.1       GigabitEthernet0/0/1
    10.2.12.255/32  Direct  0    0           D   127.0.0.1       GigabitEthernet0/0/1
       30.0.0.0/24  Static  60   0          RD   10.1.23.3       GigabitEthernet0/0/0
      127.0.0.0/8   Direct  0    0           D   127.0.0.1       InLoopBack0
      127.0.0.1/32  Direct  0    0           D   127.0.0.1       InLoopBack0
127.255.255.255/32  Direct  0    0           D   127.0.0.1       InLoopBack0
255.255.255.255/32  Direct  0    0           D   127.0.0.1       InLoopBack0

查看去往 10.1.23.0/24 路由的详细信息,可以看到存在两条路由,优先级高(60)的路由状态为 Active,优先级低(80)的路由状态为 Inactive:

[AR1]display ip routing-table 10.1.23.0 24 verbose 
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Routing Table : Public
Summary Count : 2

Destination: 10.1.23.0/24
     Protocol: Static           Process ID: 0
   Preference: 60                     Cost: 0
      NextHop: 10.1.12.2         Neighbour: 0.0.0.0
        State: Active Adv Relied       Age: 00h52m19s
          Tag: 0                  Priority: medium
        Label: NULL                QoSInfo: 0x0
   IndirectID: 0x80000002       
 RelayNextHop: 0.0.0.0           Interface: GigabitEthernet0/0/0
     TunnelID: 0x0                   Flags: RD

Destination: 10.1.23.0/24
     Protocol: Static           Process ID: 0
   Preference: 80                     Cost: 0
      NextHop: 10.2.12.2         Neighbour: 0.0.0.0
        State: Inactive Adv Relied     Age: 00h08m50s
          Tag: 0                  Priority: medium
        Label: NULL                QoSInfo: 0x0
   IndirectID: 0x80000003       
 RelayNextHop: 0.0.0.0           Interface: GigabitEthernet0/0/1
     TunnelID: 0x0                   Flags: R

如果此时接口 GE0/0/0 出现故障,就会选择优先级为 80 的备用路由:

[AR1]int g0/0/0	
[AR1-GigabitEthernet0/0/0]shutdown
[AR1-GigabitEthernet0/0/0]quit
[AR1]display ip routing-table 
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Routing Tables: Public
         Destinations : 9        Routes : 9        

Destination/Mask    Proto   Pre  Cost      Flags NextHop         Interface

      10.1.23.0/24  Static  80   0          RD   10.2.12.2       GigabitEthernet0/0/1
      10.2.12.0/24  Direct  0    0           D   10.2.12.1       GigabitEthernet0/0/1
      10.2.12.1/32  Direct  0    0           D   127.0.0.1       GigabitEthernet0/0/1
    10.2.12.255/32  Direct  0    0           D   127.0.0.1       GigabitEthernet0/0/1
       30.0.0.0/24  Static  60   0          RD   10.1.23.3       GigabitEthernet0/0/1
      127.0.0.0/8   Direct  0    0           D   127.0.0.1       InLoopBack0
      127.0.0.1/32  Direct  0    0           D   127.0.0.1       InLoopBack0
127.255.255.255/32  Direct  0    0           D   127.0.0.1       InLoopBack0
255.255.255.255/32  Direct  0    0           D   127.0.0.1       InLoopBack0

接口 GE0/0/0 恢复后,会再次选择优先级为 60 的路由:

[AR1]int g0/0/0
[AR1-GigabitEthernet0/0/0]undo shutdown
[AR1-GigabitEthernet0/0/0]quit
[AR1]display ip routing-table 
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Routing Tables: Public
         Destinations : 12       Routes : 12       

Destination/Mask    Proto   Pre  Cost      Flags NextHop         Interface

      10.1.12.0/24  Direct  0    0           D   10.1.12.1       GigabitEthernet0/0/0
      10.1.12.1/32  Direct  0    0           D   127.0.0.1       GigabitEthernet0/0/0
    10.1.12.255/32  Direct  0    0           D   127.0.0.1       GigabitEthernet0/0/0
      10.1.23.0/24  Static  60   0          RD   10.1.12.2       GigabitEthernet0/0/0
      10.2.12.0/24  Direct  0    0           D   10.2.12.1       GigabitEthernet0/0/1
      10.2.12.1/32  Direct  0    0           D   127.0.0.1       GigabitEthernet0/0/1
    10.2.12.255/32  Direct  0    0           D   127.0.0.1       GigabitEthernet0/0/1
       30.0.0.0/24  Static  60   0          RD   10.1.23.3       GigabitEthernet0/0/0
      127.0.0.0/8   Direct  0    0           D   127.0.0.1       InLoopBack0
      127.0.0.1/32  Direct  0    0           D   127.0.0.1       InLoopBack0
127.255.255.255/32  Direct  0    0           D   127.0.0.1       InLoopBack0
255.255.255.255/32  Direct  0    0           D   127.0.0.1       InLoopBack0

路由汇总

  • 子网划分、VLSM 解决了地址空间浪费的问题,但同时也带了新的问题:路由表中的路由条目数量增加。
  • 为减少路由条目数量可以使用路由汇总。
  • 对于一个大规模的网络来说,路由器或其他具备路由功能的设备势必需要维护大量的路由表项,为了维护臃肿的路由表,这些设备就不得不耗费大量的资源。同时,由于路由表的规模变大,会导致路由器在查表转发时效率降低。因此在保证网络中的路由器到各网段都具备 IP 可达性的同时,需要减小设备的路由表规模。一个网络如果具备科学的 IP 编址,并且进行合理的规划,是可以利用多种手段减小设备路由表规模的。一个非常常见而又有效的办法就是使用路由汇总(Route Summarization)。路由汇总又被称为路由聚合(Route Aggregation),是将一组有规律的路由汇聚成一条路由,从而达到减小路由表规模以及优化设备资源利用率的目的,我们把汇聚之前的这组路由称为精细路由或明细路由,把汇聚之后的这条路由称为汇总路由或聚合路由。
  • 路由汇总将一组具有相同前缀的路由汇聚成一条路由,从而达到减小路由表规模以及优化设备资源利用率的目的。
  • 路由汇总采用了 CIDR 的思想:将相同前缀的地址聚合成一个。
  • 我们把汇聚之前的这组路由称为精细路由或明细路由,把汇聚之后的这条路由称为汇总路由或聚合路由。

汇总计算:

  • 基于一系列连续的、有规律的 IP 网段,如果需计算相应的汇总路由,且确保得出的汇总路由刚好 “囊括” 上述 IP 网段,则需保证汇总路由的掩码长度尽可能长,以实现精确汇总。
  • 诀窍在于:将明细路由的目的网络地址都换算成二进制,然后排列起来,找出所有目的网络地址中 “相同的比特位”。

环路问题:

  • 路由汇总会带来的环路问题
  • 在路由器上增加一条指向 Null0 的路由,即可解决环路问题。
  • 一般来说一条路由,无论是静态的或者是动态的,都需要关联到一个出接口,路由的出接口指的是设备要到达一个目的网络时的出站接口。路由的出接口可以是该设备的物理接口,例如百兆、千兆以太网接口,也可以是逻辑接口,例如 VLAN 接口(VLAN Interface),或者隧道(Tunnel)接口等。在众多类型的出接口中,有一种接口非常特殊,那就是 Null(无效)接口,这种类型的接口只有一个编号,也就是 0。Null0 是一个系统保留的逻辑接口,当网络设备在转发某些数据包时,如果使用出接口为 Null0 的路由,那么这些报文将被直接丢弃,就像被扔进了一个黑洞里,因此出接口为 Null0 的路由又被称为黑洞路由。

OSPF 基础

  • 由于静态路由由网络管理员手工配置,因此当网络发生变化时,静态路由需要手动调整,这制约了静态路由在现网大规模的应用。

  • 动态路由协议因其灵活性高、可靠性好、易于扩展等特点被广泛应用于现网。在动态路由协议之中,OSPF(Open Shortest Path First,开放式最短路径优先)协议是使用场景非常广泛的动态路由协议之一。

  • OSPF 在 RFC2328 中定义,是一种基于链路状态算法的路由协议。

  • 本课程将初步介绍 OSPF 基本概念、工作原理和基础配置。

OSPF 协议概述

为什么需要动态路由协议:

静态路由是由工程师手动配置和维护的路由条目,命令行简单明确,适用于小型或稳定的网络。静态路由有以下问题:

  • 无法适应规模较大的网络:随着设备数量增加,配置量急剧增加。
  • 无法动态响应网络变化:网络发生变化,无法自动收敛网络,需要工程师手动修改。

动态路由协议的分类

按工作区域分类:

  • IGP(Interior Gateway Protocols,内部网关协议)
    • RIP
    • OSPF
    • IS-IS
  • EGP(Exterior Gateway Protocols,外部网关协议)
    • BGP

按工作机制及算法分类:

  • Distance Vector Routing Protocols(距离矢量路由协议)
    • RIP
  • Link-State Routing Protocols(链路状态路由协议)
    • OSPF
    • IS-IS
距离矢量路由协议
  • 运行距离矢量路由协议的路由器周期性的泛洪自己的路由表。通过路由的交互,每台路由器都从相邻的路由器学习到路由,并且加载进自己的路由表中。
  • 对于网络中的所有路由器而言,路由器并不清楚网络的拓扑,只是简单的知道要去往某个目的方向在哪里,距离有多远。这即是距离矢量算法的本质。
链路状态路由协议
  1. LSA 泛洪

    • 与距离矢量路由协议不同,链路状态路由协议通告的的是链路状态而不是路由表。运行链路状态路由协议的路由器之间首先会建立一个协议的邻居关系,然后彼此之间开始交互 LSA(Link State Advertisement,链路状态通告)。

    • 链路状态通告,可以简单的理解为每台路由器都产生一个描述自己直连接口状态(包括接口的开销、与邻居路由器之间的关系等)的通告。

  2. LSDB 组建

    • 每台路由器都会产生 LSAs,路由器将接收到的 LSAs 放入自己的 LSDB(Link State DataBase,链路状态数据库)。路由器通过 LSDB,掌握了全网的拓扑。
  3. SPF 计算

    • 每台路由器基于 LSDB,使用 SPF(Shortest Path First,最短路径优先)算法进行计算。每台路由器都计算出一棵以自己为根的、无环的、拥有最短路径的“树”。有了这棵“树”,路由器就已经知道了到达网络各个角落的优选路径。

    • SPF 是 OSPF 路由协议的一个核心算法,用来在一个复杂的网络中做出路由优选的决策。

  4. 路由表生成

    • 最后,路由器将计算出来的优选路径,加载进自己的路由表(Routing Table)。

综上所述,链路状态路由协议有四个步骤:

  • 第一步是建立相邻路由器之间的邻居关系。
  • 第二步是邻居之间交互链路状态信息和同步 LSDB。
  • 第三步是进行优选路径计算。
  • 第四步是根据最短路径树生成路由表项加载到路由表。

image-20250410213418757

OSPF 简介

  • OSPF 是典型的链路状态路由协议,是目前业内使用非常广泛的 IGP 协议之一。

  • 目前针对 IPv4 协议使用的是 OSPF Version 2(RFC2328);针对 IPv6 协议使用 OSPF Version 3(RFC2740)。如无特殊说明本章后续所指的 OSPF 均为 OSPF Version 2。

  • 运行 OSPF 路由器之间交互的是 LS(Link State,链路状态)信息,而不是直接交互路由。LS 信息是 OSPF 能够正常进行拓扑及路由计算的关键信息。

  • OSPF 路由器将网络中的 LS 信息收集起来,存储在 LSDB 中。路由器都清楚区域内的网络拓扑结构,这有助于路由器计算无环路径。

  • 每台 OSPF 路由器都采用 SPF 算法计算达到目的地的最短路径。路由器依据这些路径形成路由加载到路由表中。

  • OSPF 支持 VLSM(Variable Length Subnet Mask,可变长子网掩码),支持手工路由汇总。

  • 多区域的设计使得 OSPF 能够支持更大规模的网络。

  • 一般在核心交换机与汇聚交换机上运行 OSPF,实现园区网络内的路由可达。

OSPF 基础术语
  • 区域

    • OSPF Area 用于标识一个 OSPF 的区域。

    • 区域是从逻辑上将设备划分为不同的组,每个组用区域号(Area ID)来标识。

  • Router-ID:

    • Router-ID(Router Identifier,路由器标识符),用于在一个 OSPF 域中唯一地标识一台路由器。

    • Router-ID 的设定可以通过手工配置的方式,或使用系统自动配置的方式。

    • 在实际项目中,通常会通过手工配置方式为设备指定 OSPF Router-ID。请注意必须保证在 OSPF 域中任意两台设备的 Router-ID 都不相同。通常的做法是将 Router-ID 配置为与该设备某个接口(通常为 Loopback 接口)的 IP 地址一致。

  • 度量值:

    • OSPF 使用 Cost(开销)作为路由的度量值。每一个激活了 OSPF 的接口都会维护一个接口 Cost 值,缺省时接口 Cost 值 =(100 Mbit/s)/ 接口带宽 。其中 100 Mbit/s 为 OSPF 指定的缺省参考值,该值是可配置的。

    • Cost 值最小为 1,也就是说如果使用 100 Mbit/s 这个缺省参考值,那么在接口带宽为 100 Mbit/s 和 1000 Mbit/s 时,计算出来的 Cost 值均为 1,这样就无法选择带宽为 1000 Mbit/s 的接口作为出口了,此时可以将参考值配置为 1000 Mbit/s,以便区分 FE 接口和 GE 接口。

    • 笼统地说,一条 OSPF 路由的 Cost 值可以理解为是从目的网段到本路由器沿途所有入接口的 Cost 值累加。

OSPF 协议报文类型
  • OSPF 有五种类型的协议报文。这些报文在 OSPF 路由器之间交互中起不同的作用。
报文名称报文功能
Hello周期性发送,用来发现和维护 OSPF 邻居关系。
Database Description描述本地 LSDB 的摘要信息,用于两台设备进行数据库同步。
Link State Request用于向对方请求所需要的 LSA。设备只有在 OSPF 邻居双方成功交换 DD 报文后才会向对方发出 LSR 报文。
Link State Update用于向对方发送其所需要的 LSA。
Link State ACK用来对收到的 LSA 进行确认。
OSPF 三大表项

OSPF 有三张重要的表项,OSPF 邻居表、LSDB 表和 OSPF 路由表。

OSPF 邻居表:

  • OSPF 在传递链路状态信息之前,需先建立 OSPF 邻居关系。
  • OSPF 的邻居关系通过交互 Hello 报文建立。
  • OSPF 邻居表显示了 OSPF 路由器之间的邻居状态,使用 display ospf peer 查看。
<AR1>display ospf peer 

	 OSPF Process 1 with Router ID 1.1.1.1
		 Neighbors 

 Area 0.0.0.0 interface 10.1.12.1(GigabitEthernet0/0/0)'s neighbors
 Router ID: 2.2.2.2          Address: 10.1.12.2       
   State: Full  Mode:Nbr is  Master  Priority: 1
   DR: 10.1.12.1  BDR: 10.1.12.2  MTU: 0    
   Dead timer due in 37  sec 
   Retrans timer interval: 5 
   Neighbor is up for 00:18:41     
   Authentication Sequence: [ 0 ]

LSDB 表:

  • LSDB 会保存自己产生的及从邻居收到的 LSA 信息。
  • Type 标识 LSA 的类型,AdvRouter 标识发送 LSA 的路由器。
  • 使用命令行 display ospf lsdb 查看 LSDB 表。
<AR1>display ospf lsdb 

	 OSPF Process 1 with Router ID 1.1.1.1
		 Link State Database 

		         Area: 0.0.0.0
 Type      LinkState ID    AdvRouter          Age  Len   Sequence   Metric
 Router    2.2.2.2         2.2.2.2           1048  36    80000004       1
 Router    1.1.1.1         1.1.1.1           1074  48    80000006       0
 Network   10.1.12.1       1.1.1.1           1074  32    80000002       0
 Sum-Net   10.1.23.0       2.2.2.2           1033  28    80000001       1
 Sum-Net   3.3.3.3         2.2.2.2            946  28    80000001       1

OSPF 路由表:

  • OSPF 路由表和路由器路由表是两张不同的表项。
  • OSPF 路由表包含 Destination、Cost 和 NextHop 等指导转发的信息。
  • 使用命令 display ospf routing 查看 OSPF 路由表。
<AR1>display ospf routing

	 OSPF Process 1 with Router ID 1.1.1.1
		  Routing Tables 

 Routing for Network 
 Destination        Cost  Type       NextHop         AdvRouter       Area
 1.1.1.1/32         0     Stub       1.1.1.1         1.1.1.1         0.0.0.0
 10.1.12.0/30       1     Transit    10.1.12.1       1.1.1.1         0.0.0.0
 3.3.3.3/32         2     Inter-area 10.1.12.2       2.2.2.2         0.0.0.0
 10.1.23.0/30       2     Inter-area 10.1.12.2       2.2.2.2         0.0.0.0

 Total Nets: 4  
 Intra Area: 2  Inter Area: 2  ASE: 0  NSSA: 0 

OSPF 协议工作原理

OSPF 路由器之间的关系:

  • 关于 OSPF 路由器之间的关系有两个重要的概念,邻居关系和邻接关系。
  • 考虑一种简单的拓扑,两台路由器直连。在双方互联接口上激活 OSPF,路由器开始发送及侦听 Hello 报文。在通过 Hello 报文发现彼此后,这两台路由器便形成了邻居关系。
  • 邻居关系的建立只是一个开始,后续会进行一系列的报文交互,例如前文提到的 DD、LSR、LSU 和 LS ACK 等。当两台路由器 LSDB 同步完成,并开始独立计算路由时,这两台路由器形成了邻接关系。

OSPF 邻接关系建立过程

OSPF 完成邻接关系的建立有四个步骤,建立邻居关系、协商主从、交互 LSDB 信息,同步 LSDB。

image-20250412210254346

  1. 建立邻居关系
  • 当一台 OSPF 路由器收到其他路由器发来的首个 Hello 报文时会从初始 Down 状态切换为 Init 状态。
  • 当 OSPF 路由器收到的 Hello 报文中的邻居字段包含自己的 Router ID 时,从 Init 切换 2-way 状态。

image-20250412210658741

  1. 协商主从并交互 LSDB 信息
  • 邻居状态机从 2-way 转为 Exstart 状态后开始主从关系选举:
    • R1 向 R2 发送的第一个 DD 报文内容为空,其 Seq 序列号假设为 X。
    • R2 也向 R1 发出第一个 DD 报文,其 Seq 序列号假设为 Y。
    • 选举主从关系的规则是比较 Router ID,越大越优。R2 的 Router ID 比 R1 大,因此 R2 成为真正的主设备。主从关系比较结束后,R1 的状态从 Exstart 转变为 Exchange。
  • R1 邻居状态变为 Exchange 后,R1 发送一个新的 DD 报文,包含自己 LSDB 的描述信息,其序列号采用主设备 R2 的序列号。R2 收到后邻居状态从 Exstart 转变为 Exchange。
  • R2 向 R1 发送一个新的 DD 报文,包含自己 LSDB 的描述信息,序列号为 Y+1。
  • R1 作为从路由器需要对主路由 R2 发送的每个 DD 报文进行确认,回复报文的序列号与主路由 R2 一致。
  • 发送完最后一个 DD 报文后,R1 将邻居状态切换为 Loading。

image-20250412210822661

  1. 同步 LSDB
  • 邻居状态转变为 Loading 后,R1 向 R2 发送 LSR 报文,请求那些在 Exchange 状态下通过 DD 报文发现的,但是在本地 LSDB 中没有的 LSA。
  • R2 收到后向 R1 回复 LSU。在 LSU 报文中包含被请求的 LSA 的详细信息。
  • R1 收到 LSU 报文后,向 R2 回复 LS ACK 报文,确认已接收到,确保信息传输的可靠性。
  • 此过程中 R2 也会向 R1 发送 LSA 请求。当两端 LSDB 完全一致时,邻居状态变为 Full,表示成功建立邻接关系。

image-20250412210959377

OSPF 邻居表

输入 display ospf peer 命令

<AR1>display ospf peer 

	 OSPF Process 1 with Router ID 1.1.1.1
		 Neighbors 

 Area 0.0.0.0 interface 10.1.12.1(GigabitEthernet0/0/0)'s neighbors
 Router ID: 2.2.2.2          Address: 10.1.12.2       
   State: Full  Mode:Nbr is  Master  Priority: 1
   DR: 10.1.12.1  BDR: 10.1.12.2  MTU: 0    
   Dead timer due in 38  sec 
   Retrans timer interval: 5 
   Neighbor is up for 00:11:48     
   Authentication Sequence: [ 0 ] 

各项参数含义如下:

  • OSPF Process 1 with Router ID 1.1.1.1:本地 OSPF 进程号为 1 与本端 OSPF Router ID 为 1.1.1.1
  • Router ID:邻居 OSPF 路由器 ID
  • Address:邻居接口地址
  • GR State:使能 OSPF GR 功能后显示 GR 的状态(GR 为优化功能),默认为 Normal
  • State:邻居状态,正常情况下 LSDB 同步完成之后,稳定停留状态为 Full
  • Mode:用于标识本台设备在链路状态信息交互过程中的角色是 Master 还是 Slave
  • Priority:用于标识邻居路由器的优先级(该优先级用于后续 DR 角色选举)
  • DR:指定路由器
  • BDR:备份指定路由器
  • MTU:邻居接口的 MTU 值
  • Retrans timer interval:重传 LSA 的时间间隔,单位为秒
  • Authentication Sequence:认证序列号

OSPF 网络类型

  • 在学习 DR 和 BDR 的概念之前,需要首先了解 OSPF 的网络类型。
  • OSPF 网络类型是一个非常重要的接口变量,这个变量将影响 OSPF 在接口上的操作,例如采用什么方式发送 OSPF 协议报文,以及是否需要选举 DR、BDR 等。
  • 接口默认的 OSPF 网络类型取决于接口所使用的数据链路层封装。
  • OSPF 的有四种网络类型,Broadcast、NBMA、P2MP 和 P2P。
  • 一般情况下,链路两端的 OSPF 接口网络类型必须一致,否则双方无法建立邻居关系。
  • OSPF 网络类型可以在接口下通过命令手动修改以适应不同网络场景,例如可以将 BMA 网络类型修改为 P2P。

四种类型为:

  1. P2P(Point-to-Point,点对点)

    image-20250412211854104

    • P2P 指的是在一段链路上只能连接两台网络设备的环境。

    • 典型的例子是 PPP 链路。当接口采用 PPP 封装时,OSPF 在该接口上采用的缺省网络类型为 P2P 。

  2. BMA(Broadcast Multiple Access,广播式多路访问),常用

    image-20250412211949917

    • BMA 也被称为 Broadcast,指的是一个允许多台设备接入的、支持广播的环境。

    • 典型的例子是 Ethernet(以太网)。当接口采用 Ethernet 封装时,OSPF 在该接口上采用的缺省网络类型为 BMA。

  3. NBMA(Non-Broadcast Multiple Access,非广播式多路访问),了解即可

    image-20250412212028879

    • NBMA 指的是一个允许多台网络设备接入且不支持广播的环境。

    • 典型的例子是帧中继(Frame-Relay)网络。

  4. P2MP(Point to Multi-Point,点到多点),了解即可

    image-20250412212056677

    • P2MP 相当于将多条 P2P 链路的一端进行捆绑得到的网络。

    • 没有一种链路层协议会被缺省的认为是 P2MP 网络类型。该类型必须由其他网络类型手动更改。

    • 常用做法是将非全连通的 NBMA 改为点到多点的网络。

DR 与 BDR

  • MA(Multi-Access)多路访问网络有两种类型:广播型多路访问网络(BMA)及非广播型多路访问网络(NBMA)。以太网(Ethernet)是一种典型的广播型多路访问网络。
  • 在 MA 网络中,如果每台 OSPF 路由器都与其他的所有路由器建立 OSPF 邻接关系,便会导致网络中存在过多的 OSPF 邻接关系,增加设备负担,也增加了网络中泛洪的 OSPF 报文数量。
  • 当拓扑出现变更,网络中的 LSA 泛洪可能会造成带宽的浪费和设备资源的损耗。

image-20250412212355738

  • 为优化 MA 网络中 OSPF 邻接关系,OSPF 指定了三种 OSPF 路由器身份,DR(Designated Router,指定路由器)、BDR(Backup Designated Router,备用指定路由器)和 DRother 路由器。
  • 只允许 DR、BDR 与其他 OSPF 路由器建立邻接关系。DRother 之间不会建立全毗邻的 OSPF 邻接关系,双方停滞在 2-way 状态。
  • BDR 会监控 DR 的状态,并在当前 DR 发生故障时接替其角色。

image-20250412212505562

  • 选举规则:OSPF DR 优先级更高的接口成为该 MA 的 DR,如果优先级相等(默认为 1),则具有更高的 OSPF Router-ID 的路由器(的接口)被选举成 DR,并且 DR 具有非抢占性。

OSPF 域与单区域

  • OSPF 域(Domain):一系列使用相同策略的连续 OSPF 网络设备所构成的网络。
  • OSPF 路由器在同一个区域(Area)内网络中泛洪 LSA。为了确保每台路由器都拥有对网络拓扑的一致认知,LSDB 需要在区域内进行同步。
  • 如果 OSPF 域仅有一个区域,随着网络规模越来越大,OSPF 路由器的数量越来越多,这将导致诸多问题:
    • LSDB 越来越庞大,同时导致 OSPF 路由表规模增加。路由器资源消耗多,设备性能下降,影响数据转发。
    • 基于庞大的 LSDB 进行路由计算变得困难。
    • 当网络拓扑变更时,LSA 全域泛洪和全网 SPF 重计算带来巨大负担。

image-20250412212754746

OSPF 多区域

  • OSPF 引入区域(Area)的概念,将一个 OSPF 域划分成多个区域,可以使 OSPF 支撑更大规模组网。
  • OSPF 多区域的设计减小了 LSA 泛洪的范围,有效的把拓扑变化的影响控制在区域内,达到网络优化的目的。
  • 在区域边界可以做路由汇总,减小了路由表规模。
  • 多区域提高了网络扩展性,有利于组建大规模的网络。
  • 区域的分类:区域可以分为骨干区域与非骨干区域。骨干区域即 Area0,除 Area0 以外其他区域都称为非骨干区域。
  • 多区域互联原则:基于防止区域间环路的考虑,非骨干区域与非骨干区域不能直接相连,所有非骨干区域必须与骨干区域相连。

image-20250412212922650

OSPF 路由器类型

  • OSPF 路由器根据其位置或功能不同,有这样几种类型:
  • 区域内路由器(Internal Router):该类路由器的所有接口都属于同一个 OSPF 区域。
  • 区域边界路由器 ABR(Area Border Router):该类路由器的接口同时属于两个以上的区域,但至少有一个接口属于骨干区域。
  • 骨干路由器(Backbone Router):该类路由器至少有一个接口属于骨干区域。
  • 自治系统边界路由器 ASBR(AS Boundary Router):该类路由器与其他 AS 交换路由信息。只要一台 OSPF 路由器引入了外部路由的信息,它就成为 ASBR。

image-20250412213623379

OSPF 单区域和多区域典型组网

  • 中小型企业网络规模不大,路由设备数量有限,可以考虑将所有设备都放在同一个 OSPF 区域。
  • 大型企业网络规模大,路由设备数量很多,网络层次分明,建议采用 OSPF 多区域的方式部署。

image-20250412213730042

OSPF 协议典型配置

OSPF 基础配置命令

  1. (系统视图)创建并运行 OSPF 进程
[Huawei] ospf [ process-id | router-id router-id]

process-id 用于标识 OSPF 进程,默认进程号为 1。OSPF 支持多进程,在同一台设备上可以运行多个不同的 OSPF 进程,它们之间互不影响,彼此独立。router-id 用于手工指定设备的 ID 号。如果没有通过命令指定 ID 号,系统会从当前接口的 IP 地址中自动选取一个作为设备的 ID 号。

router-id 的选择顺序是:优先从 Loopback 地址中选择最大的 IP 地址作为设备的 ID 号,如果没有配置 Loopback 接口,则在接口地址中选取最大的 IP 地址作为设备的 ID 号。

  1. (OSPF 视图)创建并进入 OSPF 区域
[Huawei-ospf-1] area area-id

area 命令用来创建 OSPF 区域,并进入 OSPF 区域视图。 area-id 可以是十进制整数或点分十进制格式。采取整数形式时,取值范围是 0 ~ 4294967295。

  1. (OSPF 区域视图)指定运行 OSPF 的接口
[Huawei-ospf-1-area-0.0.0.0] network network-address wildcard-mask

network 命令用来指定运行 OSPF 协议的接口和接口所属的区域。network-address 为接口所在的网段地址。wildcard-mask 为 IP 地址的反码,相当于将 IP 地址的掩码反转(0 变 1,1 变 0 ),例如 0.0.0.255 表示掩码长度 24 bit。

  1. (接口视图)配置 OSPF 接口开销
[Huawei-GigabitEthernet0/0/0] ospf cost cost

ospf cost 命令用来配置接口上运行 OSPF 协议所需的开销。缺省情况下,OSPF 会根据该接口的带宽自动计算其开销值,cost 取值范围是 1 ~ 65535。

  1. (OSPF 视图)设置 OSPF 带宽参考值
[Huawei-ospf-1] bandwidth-reference value

bandwidth-reference 命令用来设置通过公式计算接口开销所依据的带宽参考值。value 取值范围是 1 ~ 2147483648,单位是 Mbit/s,缺省值是 100Mbit/s。

  1. (接口视图)设置接口在选举 DR 时的优先级
[Huawei-GigabitEthernet0/0/0] ospf dr-priority priority

ospf dr-priority 命令用来设置接口在选举 DR 时的优先级。priority 值越大,优先级越高,取值范围是 0 ~ 255。

OSPF 配置案例

案例描述:

  • 有三台路由器 R1、R2 和 R3,其中 R1 和 R3 分别连接网络 1.1.1.1/32 和 3.3.3.3/32(LoopBack0 模拟),现需要使用 OSPF 实现这两个网络的互通。具体拓扑如下:

image-20250413204051671

  • 配置过程分为三个步骤:配置设备接口、配置 OSPF 和验证结果。

  • OSPF 参数规划:OSPF 进程号为 1。R1、R2 和 R3 的 Router ID 分别为 1.1.1.1、2.2.2.2 和 3.3.3.3。

  • OSPF 配置步骤:

    • 创建并运行 OSPF 进程

    • 创建并进入 OSPF 区域

    • 指定运行 OSPF 的接口

  1. 配置设备接口
  • 配置 AR1 的接口地址
<Huawei>sys
Enter system view, return user view with Ctrl+Z.
[Huawei]sys AR1
[AR1]interface LoopBack 0
[AR1-LoopBack0]ip address 1.1.1.1 32
[AR1-LoopBack0]int g0/0/0
[AR1-GigabitEthernet0/0/0]ip addr 10.1.12.1 30
Apr 13 2025 20:46:39-08:00 AR1 %%01IFNET/4/LINK_STATE(l)[1]:The line protocol IP
 on the interface GigabitEthernet0/0/0 has entered the UP state.
  • 配置 AR2 的接口地址
<Huawei>sys
Enter system view, return user view with Ctrl+Z.
[Huawei]sys AR2
[AR2]int g0/0/0
[AR2-GigabitEthernet0/0/0]ip addr 10.1.12.2 30
Apr 13 2025 20:48:19-08:00 AR2 %%01IFNET/4/LINK_STATE(l)[0]:The line protocol IP
 on the interface GigabitEthernet0/0/0 has entered the UP state. 
[AR2-GigabitEthernet0/0/0]int g0/0/1
[AR2-GigabitEthernet0/0/1]ip addr 10.1.23.1 30
Apr 13 2025 20:48:40-08:00 AR2 %%01IFNET/4/LINK_STATE(l)[1]:The line protocol IP
 on the interface GigabitEthernet0/0/1 has entered the UP state. 
  • 配置 AR3 的接口地址
<Huawei>sys
Enter system view, return user view with Ctrl+Z.
[Huawei]sys AR3
[AR3]int LoopBack 0
[AR3-LoopBack0]ip addr 3.3.3.3 32
[AR3-LoopBack0]int g0/0/1
[AR3-GigabitEthernet0/0/1]ip addr 10.1.23.2 30
Apr 13 2025 20:50:19-08:00 AR3 %%01IFNET/4/LINK_STATE(l)[0]:The line protocol IP
 on the interface GigabitEthernet0/0/1 has entered the UP state. 
  1. 配置 OSPF
  • 配置 AR1 的 OSPF 协议
[AR1]ospf 1 router-id 1.1.1.1
[AR1-ospf-1]area 0
[AR1-ospf-1-area-0.0.0.0]network 1.1.1.1 0.0.0.0
[AR1-ospf-1-area-0.0.0.0]network 10.1.12.0 0.0.0.3
  • 配置 AR2 的 OSPF 协议
[AR2]ospf 1 router-id 2.2.2.2
[AR2-ospf-1]area 0
[AR2-ospf-1-area-0.0.0.0]network 10.1.12.0 0.0.0.3
[AR2-ospf-1-area-0.0.0.0]area 1
[AR2-ospf-1-area-0.0.0.1]network 10.1.23.0 0.0.0.3
  • 配置 AR3 的 OSPF 协议
[AR3]ospf 1 router-id 3.3.3.3
[AR3-ospf-1]area 1
[AR3-ospf-1-area-0.0.0.1]network 3.3.3.3 0.0.0.0
[AR3-ospf-1-area-0.0.0.1]network 10.1.23.0 0.0.0.3
[AR3-ospf-1-area-0.0.0.1]
Apr 13 2025 21:03:05-08:00 AR3 %%01OSPF/4/NBR_CHANGE_E(l)[0]:Neighbor changes ev
ent: neighbor status changed. (ProcessId=256, NeighborAddress=1.23.1.10, Neighbo
rEvent=HelloReceived, NeighborPreviousState=Down, NeighborCurrentState=Init) 
[AR3-ospf-1-area-0.0.0.1]
Apr 13 2025 21:03:05-08:00 AR3 %%01OSPF/4/NBR_CHANGE_E(l)[1]:Neighbor changes ev
ent: neighbor status changed. (ProcessId=256, NeighborAddress=1.23.1.10, Neighbo
rEvent=2WayReceived, NeighborPreviousState=Init, NeighborCurrentState=2Way) 
[AR3-ospf-1-area-0.0.0.1]
Apr 13 2025 21:03:05-08:00 AR3 %%01OSPF/4/NBR_CHANGE_E(l)[2]:Neighbor changes ev
ent: neighbor status changed. (ProcessId=256, NeighborAddress=1.23.1.10, Neighbo
rEvent=AdjOk?, NeighborPreviousState=2Way, NeighborCurrentState=ExStart) 
[AR3-ospf-1-area-0.0.0.1]
Apr 13 2025 21:03:05-08:00 AR3 %%01OSPF/4/NBR_CHANGE_E(l)[3]:Neighbor changes ev
ent: neighbor status changed. (ProcessId=256, NeighborAddress=1.23.1.10, Neighbo
rEvent=NegotiationDone, NeighborPreviousState=ExStart, NeighborCurrentState=Exch
ange) 
[AR3-ospf-1-area-0.0.0.1]
Apr 13 2025 21:03:05-08:00 AR3 %%01OSPF/4/NBR_CHANGE_E(l)[4]:Neighbor changes ev
ent: neighbor status changed. (ProcessId=256, NeighborAddress=1.23.1.10, Neighbo
rEvent=ExchangeDone, NeighborPreviousState=Exchange, NeighborCurrentState=Loadin
g) 
[AR3-ospf-1-area-0.0.0.1]
Apr 13 2025 21:03:05-08:00 AR3 %%01OSPF/4/NBR_CHANGE_E(l)[5]:Neighbor changes ev
ent: neighbor status changed. (ProcessId=256, NeighborAddress=1.23.1.10, Neighbo
rEvent=LoadingDone, NeighborPreviousState=Loading, NeighborCurrentState=Full)
  1. 结果验证
  • 查看 AR2 的邻居表
<AR2>display ospf peer brief 

	 OSPF Process 1 with Router ID 2.2.2.2
		  Peer Statistic Information
 ----------------------------------------------------------------------------
 Area Id          Interface                        Neighbor id      State    
 0.0.0.0          GigabitEthernet0/0/0             1.1.1.1          Full        
 0.0.0.1          GigabitEthernet0/0/1             3.3.3.3          Full        
 ----------------------------------------------------------------------------

结果验证邻居状态为 Full,即成功建立邻接关系。

  • 查看 AR1 的路由表,并执行从源 1.1.1.1 Ping 3.3.3.3
<AR1>display ip routing-table
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Routing Tables: Public
         Destinations : 10       Routes : 10       

Destination/Mask    Proto   Pre  Cost      Flags NextHop         Interface

        1.1.1.1/32  Direct  0    0           D   127.0.0.1       LoopBack0
        3.3.3.3/32  OSPF    10   2           D   10.1.12.2       GigabitEthernet0/0/0 #从 OSPF 学习到 3.3.3.3/32 路由
      10.1.12.0/30  Direct  0    0           D   10.1.12.1       GigabitEthernet0/0/0
      10.1.12.1/32  Direct  0    0           D   127.0.0.1       GigabitEthernet0/0/0
      10.1.12.3/32  Direct  0    0           D   127.0.0.1       GigabitEthernet0/0/0
      10.1.23.0/30  OSPF    10   2           D   10.1.12.2       GigabitEthernet0/0/0
      127.0.0.0/8   Direct  0    0           D   127.0.0.1       InLoopBack0
      127.0.0.1/32  Direct  0    0           D   127.0.0.1       InLoopBack0
127.255.255.255/32  Direct  0    0           D   127.0.0.1       InLoopBack0
255.255.255.255/32  Direct  0    0           D   127.0.0.1       InLoopBack0

<AR1>ping -a 1.1.1.1 3.3.3.3
  PING 3.3.3.3: 56  data bytes, press CTRL_C to break
    Reply from 3.3.3.3: bytes=56 Sequence=1 ttl=254 time=30 ms
    Reply from 3.3.3.3: bytes=56 Sequence=2 ttl=254 time=30 ms
    Reply from 3.3.3.3: bytes=56 Sequence=3 ttl=254 time=20 ms
    Reply from 3.3.3.3: bytes=56 Sequence=4 ttl=254 time=20 ms
    Reply from 3.3.3.3: bytes=56 Sequence=5 ttl=254 time=30 ms

  --- 3.3.3.3 ping statistics ---
    5 packet(s) transmitted
    5 packet(s) received
    0.00% packet loss
    round-trip min/avg/max = 20/26/30 ms

以太网交换基础

  • 在网络中传输数据时需要遵循一些标准,以太网协议定义了数据帧在以太网上的传输标准,了解以太网协议是充分理解数据链路层通信的基础。以太网交换机是实现数据链路层通信的主要设备,了解以太网交换机的工作原理也是十分必要的。
  • 在本课程中,将介绍以太网协议的相关概念、MAC 地址的类型、二层交换机的工作流程以及二层交换机的工作原理。

以太网协议介绍

以太网协议

以太网是当今现有局域网(Local Area Network, LAN)采用的最通用的通信协议标准,该标准定义了在局域网中采用的电缆类型和信号处理方法。

  • 以太网是建立在 CSMA/CD (Carrier Sense Multiple Access/Collision Detection,载波监听多路访问 / 冲突检测) 机制上的广播型网络。
  • 早期的以太网:建立在 CSMA/CD 机制上的广播型网络。冲突的产生是限制以太网性能的重要因素,早期的以太网设备如集线器 HUB 是物理层设备,不能隔绝冲突扩散,限制了网络性能的提高。
  • 交换机组网:交换机做为一种能隔绝冲突的二层网络设备,极大的提高了以太网的性能,并替代 HUB 成为主流的以太网设备。但是交换机对网络中的广播数据流量不做任何限制,这也影响了网络的性能。

冲突域

  • 冲突域是指连接在同一共享介质上的所有节点的集合,冲突域内所有节点竞争同一带宽,一个节点发出的报文(无论是单播、组播、广播),其余节点都可以收到。
  • 在传统的以太网中,同一介质上的多个节点共享链路带宽,争用链路的使用权,这样就会发生冲突。
  • 同一介质上的节点越多,冲突发生的概率越大。
  • 在共享网络,以太网络使用 CSMA/CD 技术,避免冲突问题。CSMA/CD 的基本工作过程如下:
    • 终端设备不停的检测共享线路的状态。
      • 如果线路空闲则发送数据。
      • 如果线路不空闲则一直等待。
    • 如果有另外一个设备同时发送数据,两个设备发送的数据必然产生冲突,导致线路上的信号不稳定。
    • 终端设备检测到这种不稳定之后,马上停止发送自己的数据。
    • 终端设备发送一连串干扰脉冲,然后等待一段时间之后再进行发送数据。发送干扰脉冲的目的是为了通知其他设备,特别是跟自己在同一个时刻发送数据的设备,线路上已经产生了冲突。
  • CSMA/CD 的工作原理可简单总结为:先听后发,边发边听,冲突停发,随机延迟后重发。

交换机不同的接口发送和接收数据独立,各接口属于不同的冲突域,因此有效地隔离了网络中物理层冲突域,使得通过它互连的主机(或网络)之间不必再担心流量大小对于数据发送冲突的影响。

广播域

  • 广播报文所能到达的整个访问范围称为二层广播域,简称广播域,同一广播域内的主机都能收到广播报文。在传统的以太网中,同一介质上的多个节点共享链路,一台设备发出的广播报文,所有设备均会收到。
  • 交换机对广播报文会向所有的接口都转发,所以交换机的所有接口连接的节点属于一个广播域。

以太网卡

  • 网络接口卡 (Network Interface Card, NIC) 也称为 “网卡”,是计算机、交换机、路由器等网络设备与外部网络世界相连的关键部件。
  • 网卡有很多类型,本章节我们提及的都指以太网接口卡,简称以太网卡或以太卡。
  • 我们所说的交换机也均为以太网交换机,则交换机上每个转发数据的网口所使用的网卡都是以太网卡。

以太网帧介绍

以太网帧格式

  • 以太网技术所使用的帧称为以太网帧 (Ethernet Frame),或简称以太帧。
  • 以太帧的格式有两个标准:Ethernet_II 格式和 IEEE 802.3 格式。

协议规定以太网帧的数据格式如图所示:

image-20250416205101292

  • Ethernet Ⅱ 以太帧(常用):

    • DMAC:6 字节,目的 MAC 地址,6 字节,该字段标识帧的接收者。

    • SMAC:6 字节,源 MAC 地址,6 字节,该字段标识帧的发送者。

    • Type:2 字节,协议类型。常见值:

      • 0x0800:Internet Protocol Version 4 (IPv4) ;
      • 0x0806:Address Resolution Protocol (ARP) 。
  • IEEE 802.3 以太帧:

    • 逻辑链路控制 LLC(Logical Link Control)由目的服务访问点 DSAP(Destination Service Access Point)、源服务访问点 SSAP(Source Service Access Point)和 Control 字段组成。

      • DSAP:1 字节,目的服务访问点,若后面类型为 IP 值设为 0x06。服务访问点的功能类似于 Ethernet II 帧中的 Type 字段或 TCP/UDP 传输协议中的端口号。
      • SSAP:1 字节,源服务访问点,若后面类型为 IP 值设为 0x06。
      • Ctrl:1 字节,该字段值通常设为 0x03,表示无连接服务的 IEEE 802.2 无编号数据格式。
    • SNAP(Sub-network Access Protocol)由机构代码(Org Code)和类型(Type)字段组成。

      • Org Code 三个字节都为 0。
      • Type 字段的含义与 Ethernet_II 帧中的 Type 字段相同。
  • 数据帧的总长度为 64-1518 字节,这样设计的原因是(另外,以太网口的最大传输单元是 1500 字节,即 MTU=1500B。):

    • 以太网中,最小帧长为 64 字节,这是由最大传输距离和 CSMA/CD 机制共同决定的。
      • 规定最小帧长是为了避免这种情况发生:A 站点已经将一个数据包的最后一个 Bit 发送完毕,但这个报文的第一个 Bit 还没有传送到距离很远的 B 站点。B 站点认为线路空闲继续发送数据,导致冲突。
      • 高层协议必须保证 Data 域至少包含 46 字节,这样加上以太网帧头的 14 字节和帧尾的 4 字节校验码正好满足 64 字节的最小帧长,如果实际数据不足 46 个字节,则高层协议必须填充一些数据单元。
    • 而出于对传输效率和传输可靠性的折中考虑,使得以太网帧的最大长度为 1518 字节,对应 IP 数据包就是 1500 字节。
      • 较大的帧长度,数据的有效传输效率会更高;但是数据帧过长,传输时会占用共享链路过多的时间,对时延敏感应用造成极大的影响。
      • 因此最终选择了一个折中的长度:1518 字节的数据帧长,对应 1500 字节的 IP 数据包长度,这就是最大传输单元 MTU 的由来。

MAC 地址

  • MAC (Media Access Control) 地址在网络中唯一标识一个网卡,每个网卡都需要并拥有唯一的一个 MAC 地址。
  • 一块网卡的 MAC 地址是具有全球唯一性的。
  • MAC 地址是在 IEEE 802 标准中定义并规范的,凡是符合 IEEE 802 标准的以太网卡,都必须拥有一个 MAC 地址,用 MAC 地址来定义网络设备的位置。不同的网卡,MAC 地址也不同。
  • MAC 地址的作用是唯一标识一个网卡,是不可变的,可以通过 MAC 地址进行同网段的数据访问。而IP 地址的作用是唯一标识网络中的一个节点,是可变的,可以通过 IP 地址进行不同网段的数据访问。
  • MAC 地址由 48 比特(6 个字节)长,12 位的 16 进制数字组成。
  • 一个制造商在生产制造网卡之前,必须先向 IEEE 注册,以获取一个长度为 24 Bit (3 字节) 的厂商代码,也称为 OUI。
  • 后 24 Bit 由厂商自行分派,是各个厂商制造的所有网卡的唯一编号。
  • MAC 地址可以分为 3 种类型:
    • 单播 MAC 地址:也称物理 MAC 地址,这种类型的 MAC 地址唯一的标识了以太网上的一个终端,该地址为全球唯一的硬件地址。
      • 单播 MAC 地址用于标识链路上的一个单一节点。
      • 目的 MAC 地址为单播 MAC 地址的帧发往一个单一的节点。
      • 单播 MAC 地址可以作为源或目的地址。
      • 注意:单播 MAC 地址具有全球唯一性,当一个二层网络中接入了两台具有相同MAC 地址的终端时(例如误操作等),将会引发通信故障(例如这两台终端无法相互通信),且其他设备与它们之间的通信也会存在问题。
    • 广播 MAC 地址:全 1 的 MAC 地址(FF-FF-FF-FF-FF-FF),用来表示局域网上的所有终端设备。
      • 广播 MAC 地址可以理解为一种特殊的组播 MAC 地址。
      • 其具体格式为:FFFF-FFFF-FFFF。
      • 目的 MAC 地址为广播 MAC 地址的帧发往链路上的所有节点。
    • 组播 MAC 地址:除广播地址外,第 7 Bit 为 1 的 MAC 地址为组播 MAC 地址(例如 01-00-00-00-00-00),用来代表局域网上的一组终端。
      • 组播 MAC 地址用于标识链路上的一组节点。
      • 目的 MAC 地址为组播 MAC 地址的帧发往一组节点。
      • 组播 MAC 地址不能作为源地址,只能作为目的地址。

image-20250416211100165

以太网帧分类

以太网帧可以分为:

  • 单播以太帧,简称单播帧,目的 MAC 地址为单播 MAC 地址的帧。
  • 广播以太帧,简称广播帧,目的 MAC 地址为广播 MAC 地址的帧。
  • 组播以太帧,简称组播帧,目的 MAC 地址为组播 MAC 地址的帧。

局域网上的帧可以通过三种方式发送:

  • 第一种发送方式是单播,指从单一的源端发送到单一的目的端。
    • 每个主机接口由一个 MAC 地址唯一标识,MAC 地址的 OUI 中,第一字节第 8 个比特表示地址类型。
    • 对于主机 MAC 地址,这个比特固定为 0,表示目的 MAC 地址为此 MAC 地址的帧都是发送到某个唯一的目的端。
  • 第二种发送方式是广播,表示帧从单一的源发送到共享以太网上的所有主机。
    • 广播帧的目的 MAC 地址为十六进制的 FF-FF-FF-FF-FF-FF,所有收到该广播帧的主机都要接收并处理这个帧。
    • 广播方式会产生大量流量,导致带宽利用率降低,进而影响整个网络的性能。
    • 当需要网络中的所有主机都能接收到相同的信息并进行处理的情况下,通常会使用广播方式。
  • 第三种发送方式为组播,组播比广播更加高效。
    • 组播转发可以理解为选择性的广播,主机侦听特定组播地址,接收并处理目的 MAC 地址为该组播 MAC 地址的帧。
    • 组播 MAC 地址和单播 MAC 地址是通过第一字节中的第 8 个比特区分的。组播 MAC 地址的第 8 个比特为 1。
    • 当需要网络上的一组主机(而不是全部主机)接收相同信息,并且其他主机不受影响的情况下通常会使用组播方式。

以太网交换机介绍

园区网典型架构

  • 一个典型的园区数据网络由路由器、交换机、防火墙等设备构成,通常会采用多层架构,包括:接入层、汇聚层、核心层和出口层。
  • 以太网二层交换机:
    • 在园区网络中,交换机一般来说是距离终端用户最近的设备,用于终端接入园区网,接入层的交换机一般为二层交换机。
    • 二层交换设备工作在 TCP/IP 对等模型的第二层,即数据链路层,它对数据包的转发是建立在 MAC(Media Access Control )地址基础之上的。以太网二层交换机转发数据的端口都是以太网口,并且只能够针对数据的二层头部 (以太网数据帧头) 中的 MAC 地址进行寻址并转发数据。

image-20250417222339634

交换机的工作原理

  • 二层交换机工作在数据链路层,它对数据帧的转发是建立在 MAC 地址基础之上的。交换机不同的接口发送和接收数据是独立的,各接口属于不同的冲突域,因此有效地隔离了网络中的冲突域。
  • 二层交换设备通过学习以太网数据帧的源 MAC 地址来维护 MAC 地址与接口的对应关系(保存 MAC 与接口对应关系的表称为 MAC 地址表),通过其目的 MAC 地址来查找 MAC 地址表决定向哪个接口转发。
  • 每台交换机中都有一个 MAC 地址表,MAC 地址表记录了交换机学习到的其他设备的 MAC 地址与接口的对应关系。交换机在转发数据帧时,根据数据帧的目的 MAC 地址查询 MAC 地址表。如果 MAC 地址表中包含与该帧目的 MAC 地址对应的表项,则直接通过该表项中的出接口转发该报文;如果 MAC 地址表中没有包含该帧目的 MAC 地址对应的表项时,交换机将采取泛洪方式在除接收接口外的所有接口发送该报文。

交换机的 3 种数据帧处理行为

  • 交换机对帧的处理行为一共有三种:泛洪(Flooding),转发(Forwarding),丢弃(Discarding)。
    • 泛洪:交换机把从某一端口进来的帧通过所有其它的端口转发出去(注意,“所有其它的端口” 是指除了这个帧进入交换机的那个端口以外的所有端口)。
      • 如果从传输介质进入交换机的某个端口的帧是一个单播帧,交换机会去 MAC 表查这个帧的目的 MAC 地址。如果查不到这个 MAC 地址,则交换机将对该单播帧执行泛洪操作。
      • 如果从传输介质进入交换机的某个端口的帧是一个广播帧,交换机不会去查 MAC 地址表,而是直接对该广播帧执行泛洪操作。
      • 场景一:主机 1 想要访问主机 2,发送单播数据帧,交换机收到后,若 MAC 地址表中查不到对应的表项,则会泛洪该数据帧。
      • 场景二:主机 1 想要访问主机 2,但不知道对应的 MAC 地址,则会发送 ARP 请求报文,该报文为广播数据帧,交换机收到后,则会泛洪该数据帧。
    • 转发:交换机把从某一端口进来的帧通过另一个端口转发出去(注意,“另一个端口” 不能是这个帧进入交换机的那个端口)。
      • 如果从传输介质进入交换机的某个端口的帧是一个单播帧,则交换机会去 MAC 表查这个帧的目的 MAC 地址。如果查到了这个 MAC 地址表,则比较这个 MAC 地址在 MAC 地址表中对应的端口编号是不是这个帧从传输介质进入交换机的那个端口的端口编号。如果不是,则交换机执行转发操作(将该帧送至该帧目的 MAC 地址在 MAC 地址表中对应的那个端口,并从那个端口发送出去)。
      • 主机 1 想要访问主机 2,发送单播数据帧,交换机收到后,在 MAC 地址表中查到了对应的表项,则会点对点转发该数据帧。
    • 丢弃:交换机把从某一端口进来的帧直接丢弃。
      • 如果从传输介质进入交换机的某个端口的帧是一个单播帧,则交换机会去 MAC 表查这个帧的目的 MAC 地址。如果查到了这个 MAC 地址表,则比较这个 MAC 地址在 MAC 地址表中对应的端口编号是不是这个帧从传输介质进入交换机的那个端口的端口编号。如果是,则交换机将对该帧执行丢弃操作。

交换机的 MAC 地址学习

  • 初始状态下,交换机并不知道所连接主机的 MAC 地址,所以 MAC 地址表为空。
  • 主机 1 想要发送数据给主机 2(假设已知对端的 IP 地址和 MAC 地址),会封装数据帧,包含自己的源 IP 地址和源 MAC 地址。
  • 交换机收到后会查自己的 MAC 地址表,发现没有对应表项,则收到的数据帧是 “未知单播帧” 。
  • 由于收到的数据帧是 “未知单播帧”,因此交换机会泛洪该数据帧。
  • 同时,交换机将收到的数据帧的源 MAC 地址和对应端口编号记录到 MAC 地址表中。

注意:

MAC 地址表中动态学习的表项并非永远有效,每一条表项都有一个生存周期,到达生存周期仍得不到更新的表项将被删除,这个生存周期被称作老化时间。例如华为 S 系列交换机的老化时间缺省值是 300 秒。

  • 广播网络中的所有主机均会收到该数据帧,但是只有主机 2 会处理(因为目的 MAC 地址是主机 2)。
  • 主机 2 会回复数据帧给主机 1,也是单播数据帧。
  • 交换机收到该单播数据帧后,会查看自己的 MAC 地址表,发现有对应的表项,则将数据从对应的端口转发出去。
  • 同时,交换机将收到的数据帧的源 MAC 地址和对应端口编号记录到 MAC 地址表中。

同网段数据通信全过程

场景描述:

  • 任务:主机 1 想要访问主机 2
  • 主机:初始化状态,仅知道本机 IP 地址和 MAC 地址(假设已获取对端 IP 地址)
  • 交换机:刚上电,初始化状态

image-20250227210148354

通信全过程:

  1. 初始状态:

    • 主机 1 为了进行报文封装,会查本地的 ARP 缓存表。初始状态下,主机 1 的 ARP 缓存是空的。
    PC>arp -a
    
    Internet Address    Physical Address    Type
    
    • 而刚上电的交换机,初始状态下,交换机的 MAC 地址表也是空的。
    [SW1]display mac-address verbose
    
  2. 泛洪数据帧:

    • 主机 1 发送 ARP 请求报文,请求目的 MAC 地址。
    PC>ping 192.168.1.2
    
    • 交换机收到数据帧后,直接向所有非接收端口泛洪该数据帧。
    23	48.734000	HuaweiTe_48:43:6a	Broadcast	ARP	60	Who has 192.168.1.2? Tell 192.168.1.1
    
    Frame 23: 60 bytes on wire (480 bits), 60 bytes captured (480 bits) on interface -, id 0
    Ethernet II, Src: HuaweiTe_48:43:6a (54:89:98:48:43:6a), Dst: Broadcast (ff:ff:ff:ff:ff:ff)
        Destination: Broadcast (ff:ff:ff:ff:ff:ff)
        Source: HuaweiTe_48:43:6a (54:89:98:48:43:6a)
        Type: ARP (0x0806)
        Padding: 000000000000000000000000000000000000
    Address Resolution Protocol (request)
        Hardware type: Ethernet (1)
        Protocol type: IPv4 (0x0800)
        Hardware size: 6
        Protocol size: 4
        Opcode: request (1)
        Sender MAC address: HuaweiTe_48:43:6a (54:89:98:48:43:6a)
        Sender IP address: 192.168.1.1
        Target MAC address: Broadcast (ff:ff:ff:ff:ff:ff)
        Target IP address: 192.168.1.2
    
  3. 学习 MAC 地址:

    • 交换机将收到的数据帧的源 MAC 地址和对应端口记录到 MAC 地址表中。
    [SW1]display mac-address verbose
    MAC address table of slot 0:
    -------------------------------------------------------------------------------
    MAC Address    VLAN/       PEVLAN CEVLAN Port            Type      LSP/LSR-ID  
                   VSI/SI                                              MAC-Tunnel  
    -------------------------------------------------------------------------------
    5489-9848-436a 1           -      -      GE0/0/1         dynamic   0/-               
    -------------------------------------------------------------------------------
    
  4. 目标主机回复:

  • 主机 2 收到 ARP 请求报文后,会进行相应的处理,并发送 ARP 响应报文,回复主机 1。
24	48.765000	HuaweiTe_95:7d:7c	HuaweiTe_48:43:6a	ARP	60	192.168.1.2 is at 54:89:98:95:7d:7c

Frame 24: 60 bytes on wire (480 bits), 60 bytes captured (480 bits) on interface -, id 0
Ethernet II, Src: HuaweiTe_95:7d:7c (54:89:98:95:7d:7c), Dst: HuaweiTe_48:43:6a (54:89:98:48:43:6a)
    Destination: HuaweiTe_48:43:6a (54:89:98:48:43:6a)
    Source: HuaweiTe_95:7d:7c (54:89:98:95:7d:7c)
    Type: ARP (0x0806)
    Padding: 000000000000000000000000000000000000
Address Resolution Protocol (reply)
    Hardware type: Ethernet (1)
    Protocol type: IPv4 (0x0800)
    Hardware size: 6
    Protocol size: 4
    Opcode: reply (2)
    Sender MAC address: HuaweiTe_95:7d:7c (54:89:98:95:7d:7c)
    Sender IP address: 192.168.1.2
    Target MAC address: HuaweiTe_48:43:6a (54:89:98:48:43:6a)
    Target IP address: 192.168.1.1
  • 交换机收到的数据帧后查 MAC 地址表,发现有对应表项,则向对应端口转发该数据帧;并且交换机将收到的数据帧的源 MAC 地址和对应端口记录到 MAC 地址表中。
[SW1]display mac-address verbose
MAC address table of slot 0:
-------------------------------------------------------------------------------
MAC Address    VLAN/       PEVLAN CEVLAN Port            Type      LSP/LSR-ID  
               VSI/SI                                              MAC-Tunnel  
-------------------------------------------------------------------------------
5489-9848-436a 1           -      -      GE0/0/1         dynamic   0/-         
5489-9895-7d7c 1           -      -      GE0/0/2         dynamic   0/-         
-------------------------------------------------------------------------------
Total matching items on slot 0 displayed = 2 
  • 最终,主机 1 收到主机 2 的 ARP 响应报文后,就会将对应的 IP 地址和 MAC 地址记录到自己的 ARP 缓存中,并封装自己的报文,访问主机 2。
PC>arp -a

Internet Address    Physical Address    Type
192.168.1.2         54-89-98-95-7D-7C   dynamic

VLAN 原理与配置

  • 以太网是一种基于 CSMA/CD 的数据网络通信技术,其特征是共享通信介质。当主机数目较多时会导致安全隐患、广播泛滥、性能显著下降甚至造成网络不可用。
  • 在这种情况下出现了 VLAN (Virtual Local Area Network) 技术解决以上问题。
  • 在本课程中,将介绍 VLAN 技术的相关概念,介绍不同二层接口的工作原理,并且会介绍 VLAN 的应用及其数据转发原理和相关配置。

什么是 VLAN

传统以太网的问题:

  • 在典型交换网络中,当某台主机发送一个广播帧或未知单播帧时,该数据帧会被泛洪,甚至传递到整个广播域。
  • 广播域越大,产生的网络安全问题、垃圾流量问题,就越严重。

image-20250420195425871

  • 如图是一个典型的交换网络,网络中只有终端计算机和交换机。在这样的网络中,如果某一台计算机发送了一个广播帧,由于交换机对广播帧执行泛洪操作,结果所有其他的计算机都会收到这个广播帧。
  • 把广播帧所能到达的整个访问范围称为二层广播域,简称广播域 (Broadcast Domain)。显然,一个交换网络其实就是一个广播域。
  • 如果 PC1 向 PC2 发送了一个单播帧。此时 SW1、SW3、SW7 的 MAC 地址表中存在关于 PC2 的 MAC 地址表项,但 SW2 和 SW5 不存在关于 PC2 的 MAC 地址表项。那么,SW1 和 SW3 将对该单播帧执行点对点的转发操作,SW7 将对该单播帧执行丢弃操作,SW2 和 SW5 将对该单播帧执行泛洪操作。最后的结果是,PC2 虽然收到了该单播帧,但网络中的很多其他非目的主机,同样收到了不该接收的数据帧。
  • 广播域越大,网络安全问题(如数据泄露)和垃圾流量问题(如带宽浪费)就越严重。

虚拟局域网 (VLAN, Virtual LAN):

  • 为了解决广播域带来的问题,引入了 VLAN (Virtual Local Area Network),即虚拟局域网技术。通过在交换机上部署 VLAN,可以将一个规模较大的广播域在逻辑上划分成若干个不同的、规模较小的广播域,由此可以有效地提升网络的安全性,同时减少垃圾流量,节约网络资源。

image-20250420201236247

  • VLAN 的特点:
    • 广播域隔离:一个 VLAN 就是一个独立的广播域,同一 VLAN 内部计算机可直接进行二层通信;不同 VLAN 内的计算机无法直接进行二层通信,需通过三层设备(如路由器)转发。
    • 逻辑分组灵活性:VLAN 的划分不受物理位置限制,可根据部门、业务需求等逻辑维度分组。
  • VLAN 的优势:
    • 灵活构建虚拟工作组:用 VLAN 可以划分不同的用户到不同的工作组,同一工作组的用户不必局限于某一固定的物理范围,网络构建和维护更方便灵活。
    • 限制广播域:广播域被限制在一个 VLAN 内,节省了带宽,提高了网络处理能力。
    • 增强局域网的安全性:不同 VLAN 内的报文在传输时是相互隔离的,即一个 VLAN 内的用户不能和其它 VLAN 内的用户直接通信。
    • 提高网络健壮性:故障被限制在一个 VLAN 内,本 VLAN 内的故障不会影响其他 VLAN 的正常工作。

VLAN 的基本原理

VLAN 标签

  • 要使交换机能够分辨不同 VLAN 的报文,需要在报文中添加标识 VLAN 信息的字段。
  • IEEE 802.1Q 协议规定,在以太网数据帧中加入 4 个字节 的 VLAN 标签,又称 VLAN Tag,简称 Tag。
  • 如图所示,SW1 识别出某个帧所属的 VLAN 后,会在帧的特定位置添加标签,明确标识该帧所属的 VLAN。其他交换机(如 SW2)收到带标签的数据帧后,可直接根据标签信息识别 VLAN。

image-20250420204017832

  • IEEE 802.1Q 定义了带标签数据帧的格式,符合该格式的数据帧称为 IEEE 802.1Q 数据帧,也称 VLAN 数据帧

VLAN 数据帧

  • 在 VLAN 交换网络中,以太网帧主要有以下两种形式:
    • 无标记帧(Untagged 帧):原始的、未加入 4 字节 VLAN 标签的数据帧。
    • 有标记帧(Tagged 帧):根据 IEEE 802.1Q 协议,在以太网数据帧的目的 MAC 地址和源 MAC 地址字段之后、协议类型字段之前,加入 4 字节的 VLAN 标签(VLAN Tag)的数据帧。

image-20250420204257538

VLAN 数据帧的主要字段:

字段长度说明
TPID2 字节标签协议标识符(Tag Protocol Identifier),标识数据帧类型:
0x8100 表示 IEEE 802.1Q 的 VLAN 数据帧(不支持该协议的设备会丢弃此类帧);
▪ 设备厂商可自定义该值,需与邻居设备配置一致以实现互通。
PRI3 bit数据帧优先级(Priority),用于 QoS:
▪ 取值范围 0~7,值越大优先级越高,网络阻塞时优先转发高优先级帧。
CFI1 bit标准格式指示位(Canonical Format Indicator),用于兼容以太网和令牌环网:
0 表示 MAC 地址以标准格式封装(以太网中取值为 0);
1 表示非标准格式封装。
VID12 bitVLAN ID,标识数据帧所属 VLAN 的编号:
▪ 取值范围 0~4095,其中 0 和 4095 为协议保留,有效范围为 1~4094;
▪ 交换机通过 VID 识别数据帧所属的 VLAN,广播帧仅在同 VLAN 内转发,这就将广播域限制在一个 VLAN 内。
  • 带 VLAN 标签数据帧的识别方法:数据帧的 Length/Type 字段值为 0x8100
  • 注意:
    • 计算机无法识别 Tagged 数据帧,只能处理和发送 Untagged 数据帧;
    • 为了提高处理效率,交换机内部处理的数据帧一律都是 Tagged 数据帧。

VLAN 的实现

  • 当 Switch1 和 Switch2 之间的链路需要承载多个 VLAN 的数据时,需通过 VLAN 数据 “标记” 手段区分不同 VLAN 的数据帧。
  • IEEE 802.1Q 标准(Dot1Q) 定义了该标记方法:对传统以太网数据帧进行修改,在帧头中插入 802.1Q Tag,通过 Tag 中的字段写入 VLAN 信息,实现跨设备的 VLAN 数据识别与转发。

image-20250420205241571

VLAN 的划分方式

计算机发出的数据帧不带任何标签。对已支持 VLAN 特性的交换机来说,当计算机发出的 Untagged 帧一旦进入交换机后,交换机必须通过某种划分原则把这个帧划分到某个特定的 VLAN 中去。

VLAN 的划分包括如下 5 种方法:

  • 基于接口划分:根据交换机的接口来划分 VLAN。

    • 网络管理员预先给交换机的每个接口配置不同的 PVID(Port VLAN ID,是接口上的缺省 VLAN,取值:1~4094),当一个数据帧进入交换机时,如果没有带 VLAN 标签,该数据帧就会被打上接口指定 PVID 的标签,然后数据帧将在指定 VLAN 中传输。

    • 这种划分原则简单而直观,实现容易,是目前实际的网络应用中最为广泛的划分 VLAN 的方式。

    • 当计算机接入交换机的端口发生了变化时,该计算机发送的帧的 VLAN 归属可能会发生变化。

    • 每个交换机的接口都应该配置一个 PVID,到达这个端口的 Untagged 帧将一律被交换机划分到 PVID 所指代的 VLAN。

    • 默认情况下,PVID 的值为 1。

  • 基于 MAC 地址划分:根据数据帧的源 MAC 地址来划分 VLAN。

    • 网络管理员预先配置 MAC 地址和 VLAN ID 映射关系表,当交换机收到的是 Untagged 帧时,就依据该表给数据帧添加指定 VLAN 的标签,然后数据帧将在指定 VLAN 中传输。

    • 交换机内部建立并维护了一个 MAC 地址与 VLAN ID 的对应表。当交换机接收到计算机发送的 Untagged 帧时,交换机将分析帧中的源 MAC 地址,然后查询 MAC 地址与 VLAN ID 的对应表,并根据对应关系把这个帧划分到相应的 VLAN 中。

    • 这种划分实现稍微复杂,但灵活性得到了提高。

    • 当计算机接入交换机的端口发生了变化时,该计算机发送的帧的 VLAN 归属不会发生变化(因为计算机的 MAC 地址没有变)。

    • 但这种类型的 VLAN 划分安全性不是很高,因为恶意计算机很容易伪造 MAC 地址。

  • 基于 IP 子网划分:根据数据帧中的源 IP 地址和子网掩码来划分 VLAN。

    • 网络管理员预先配置 IP 地址和 VLAN ID 映射关系表,当交换机收到的是 Untagged 帧,就依据该表给数据帧添加指定 VLAN 的标签,然后数据帧将在指定 VLAN 中传输。
  • 基于协议划分:根据数据帧所属的协议(族)类型及封装格式来划分 VLAN。

    • 网络管理员预先配置以太网帧中的协议域和 VLAN ID 的映射关系表,如果收到的是 Untagged 帧,就依据该表给数据帧添加指定 VLAN 的标签,然后数据帧将在指定 VLAN 中传输。
  • 基于策略划分:根据配置的策略划分 VLAN,能实现多种组合的划分方式,包括接口、MAC 地址、IP 地址等。

    • 网络管理员预先配置策略,如果收到的是 Untagged 帧,且匹配配置的策略时,给数据帧添加指定 VLAN 的标签,然后数据帧将在指定 VLAN 中传输。
VLAN 划分方式VLAN 10VLAN 20
基于接口GE0/0/1,GE0/0/3GE0/0/2,GE0/0/4
基于 MAC 地址MAC 1,MAC 3MAC 2,MAC 4
基于 IP 子网划分10.0.1.*10.0.2.*
基于协议划分IPIPv6
基于策略10.0.1.* + GE0/0/1 + MAC 110.0.2.* + GE0/0/2 + MAC 2

以太网二层接口类型

基于接口的 VLAN 划分依赖于交换机的接口类型。包括:

  • Access 接口:交换机上常用来连接用户 PC、服务器等终端设备的接口。Access 接口所连接的这些设备的网卡往往只收发无标记帧。Access 接口只能加入一个 VLAN。

  • Trunk 接口:Trunk 接口允许多个 VLAN 的数据帧通过,这些数据帧通过 802.1Q Tag 实现区分。Trunk 接口常用于交换机之间的互联,也用于连接路由器、防火墙等设备的子接口。

  • Hybrid 接口:Hybrid 接口与 Trunk 接口类似,也允许多个 VLAN 的数据帧通过,这些数据帧通过 802.1Q Tag 实现区分。用户可以灵活指定 Hybrid 接口在发送某个(或某些)VLAN 的数据帧时是否携带 Tag。

    • Hybrid 接口既可以用于连接不能识别 Tag 的用户终端(如用户主机、服务器等),也可以用于连接交换机、路由器以及可同时收发 Tagged 帧和 Untagged 帧的语音终端、AP。

    • 华为设备默认的接口类型是 Hybrid。

image-20250422202947580

Access 接口
  • Access 接口特点:仅允许 VLAN ID 与接口 PVID 相同的数据帧通过。
  • Access 接口接收数据帧:
    • 当 Access 接口从链路上收到一个 Untagged 帧,交换机会在这个帧中添加上 VID 为 PVID 的 Tag,然后对得到的 Tagged 帧进行转发操作(泛洪、转发、丢弃)。
    • 当 Access 接口从链路上收到一个 Tagged 帧,交换机会检查这个帧的 Tag 中的 VID 是否与 PVID 相同。如果相同,则对这个 Tagged 帧进行转发操作;如果不同,则直接丢弃这个 Tagged 帧。
  • Access 接口发送数据帧:
    • 当一个 Tagged 帧从本交换机的其他接口到达一个 Access 接口后,交换机会检查这个帧的 Tag 中的 VID 是否与 PVID 相同:
      • 如果相同,则将这个 Tagged 帧的 Tag 进行剥离,然后将得到的 Untagged 帧从链路上发送出去;
      • 如果不同,则直接丢弃这个 Tagged 帧。

image-20250422203120014

Trunk 接口
  • 配置要点:对于 Trunk 接口,除了要配置 PVID 外,还必须配置允许通过的 VLAN ID 列表,其中 VLAN 1 是默认存在的。
  • Trunk 接口特点:
    • Trunk 接口仅允许 VLAN ID 在允许通过列表中的数据帧通过。
    • Trunk 接口可以允许多个 VLAN 的帧带 Tag 通过,但只允许一个 VLAN 的帧从该类接口上发出时不带 Tag(即剥除 Tag)。
  • Trunk 接口接收数据帧:
    • 当 Trunk 接口从链路上收到一个 Untagged 帧,交换机会在这个帧中添加上 VID 为 PVID 的 Tag,然后查看 PVID 是否在允许通过的 VLAN ID 列表中。如果在,则对得到的 Tagged 帧进行转发操作;如果不在,则直接丢弃得到的 Tagged 帧。
    • 当 Trunk 接口从链路上收到一个 Tagged 帧,交换机会检查这个帧的 Tag 中的 VID 是否在允许通过的 VLAN ID 列表中。如果在,则对这个 Tagged 帧进行转发操作;如果不在,则直接丢弃这个 Tagged 帧。
  • Trunk 接口发送数据帧:
    • 当一个 Tagged 帧从本交换机的其他接口到达一个 Trunk 接口后,如果这个帧的 Tag 中的 VID 不在允许通过的 VLAN ID 列表中,则该 Tagged 帧会被直接丢弃。
    • 当一个 Tagged 帧从本交换机的其他接口到达一个 Trunk 接口后,如果这个帧的 Tag 中的 VID 在允许通过的 VLAN ID 列表中,则会比较该 Tag 中的 VID 是否与接口的 PVID 相同:
      • 如果相同,则交换机会对这个 Tagged 帧的 Tag 进行剥离,然后将得到的 Untagged 帧从链路上发送出去;
      • 如果不同,则交换机不会对这个 Tagged 帧的 Tag 进行剥离,而是直接将它从链路上发送出去。

image-20250422203220538

对于以下拓扑图,主机 1 和主机 3 在同一 VLAN,主机 2 和主机 4 在同一 VLAN:

image-20250422203906111

主机 1 和主机 3 之间数据通信的流程如下:

  • 主机 1 发送数据帧

    • 主机 1 属于 VLAN 10 ,当它发送数据帧时,发出的是 Untagged 帧(无 VLAN 标签帧) 。
  • SW1 接收和发送数据帧

    • 该帧到达 SW1 上连接主机 1 的 Access 接口,此接口 PVID 为 10。根据 Access 接口接收规则,交换机会给这个 Untagged 帧添加上 VID 为 10(即 PVID 值)的 Tag,使其变为 Tagged 帧。

    • 处理后的 Tagged 帧(VID = 10)在 SW1 内部查找转发路径,由于要发往主机 3,会从 SW1 的 Trunk 接口转发出去。SW1 的 Trunk 接口 PVID 为 1 ,且允许通过列表中有 VLAN 10 。

    • 根据 Trunk 接口发送规则,因为帧的 VID(10)在允许通过列表中且与接口 PVID(1)不同 ,所以该 Tagged 帧(VID = 10)会直接从 Trunk 接口发出,不剥离 Tag。

  • SW2 接收和发送数据帧

    • SW2 的 Trunk 接口接收到这个 Tagged 帧(VID = 10),其 Trunk 接口 PVID 为 1 ,允许通过列表中有 VLAN 10 。根据 Trunk 接口接收规则,由于帧的 VID(10)在允许通过列表中,所以该帧会被接收并继续处理。

    • 该帧在 SW2 内部查找转发路径,要发往连接主机 3 的接口。连接主机 3 的接口为 Access 接口,PVID 为 10 。

    • 根据 Access 接口发送规则,当 Tagged 帧(VID = 10)到达此 Access 接口,因为 VID 与 PVID 相同(都为 10) ,交换机会剥离该帧的 Tag,将得到的 Untagged 帧从链路上发送给主机 3 。

  • 主机 3 接收数据帧

    • 主机 3 接收到来自 SW2 的 Untagged 帧,完成主机 1 到主机 3 的数据传输。
Hybrid 接口

配置要点:对于 Hybrid 接口,除了要配置 PVID 外,还存在两个允许通过的 VLAN ID 列表,一个是 Untagged VLAN ID 列表,另一个是 Tagged VLAN ID 列表,其中 VLAN 1 默认在 Untagged VLAN 列表中。这两个允许通过列表中的所有 VLAN 的帧都是允许通过这个 Hybrid 接口的。

Hybrid 接口特点:

  • Hybrid 接口仅允许 VLAN ID 在允许通过列表中的数据帧通过。
  • Hybrid 接口可以允许多个 VLAN 的帧带 Tag 通过,且允许从该类接口发出的帧根据需要配置某些 VLAN 的帧带 Tag、某些 VLAN 的帧不带 Tag。
  • 与 Trunk 最主要的区别就是,能够支持多个 VLAN 的数据帧,不带标签通过。

Hybrid 接口接收数据帧:

  • 当 Hybrid 接口从链路上收到一个 Untagged 帧,交换机会在这个帧中添加上 VID 为 PVID 的 Tag,然后查看 PVID 是否在 Untagged 或 Tagged VLAN ID 列表中。如果在,则对得到的 Tagged 帧进行转发操作;如果不在,则直接丢弃得到的 Tagged 帧。
  • 当 Hybrid 接口从链路上收到一个 Tagged 帧,交换机会检查这个帧的 Tag 中的 VID 是否在 Untagged 或 Tagged VLAN ID 列表中。如果在,则对这个 Tagged 帧进行转发操作;如果不在,则直接丢弃这个 Tagged 帧。

Hybrid 接口发送数据帧:

  • 当一个 Tagged 帧从本交换机的其他接口到达一个 Hybrid 接口后,如果这个帧的 Tag 中的 VID 既不在 Untagged VLAN ID 列表中,也不在 Tagged VLAN ID 列表中,则该 Tagged 帧会被直接丢弃。
  • 当一个 Tagged 帧从本交换机的其他接口到达一个 Hybrid 接口后,如果这个帧的 Tag 中的 VID 在 Untagged VLAN ID 列表中,则交换机会对这个 Tagged 帧的 Tag 进行剥离,然后将得到的 Untagged 帧从链路上发送出去。
  • 当一个 Tagged 帧从本交换机的其他接口到达一个 Hybrid 接口后,如果这个帧的 Tag 中的 VID 在 Tagged VLAN ID 列表中,则交换机不会对这个 Tagged 帧的 Tag 进行剥离,而是直接将它从链路上发送出去。

image-20250422203303156

对于以下拓扑,主机 1 和主机 2 都可以访问服务器,但主机 1 和主机 2 不能互相访问:

image-20250422205146277

主机 1 访问服务器的流程如下:

  • 主机 1 发送数据帧

    • 主机 1 属于 VLAN 10,当它要访问服务器时,发送的是 Untagged 帧(无 VLAN 标签帧)。
  • SW1 接收与处理数据帧

    • 进入 Port1:该 Untagged 帧到达 SW1 的 Port1 接口,Port1 接口 PVID 为 10。根据 Hybrid 接口接收规则,交换机会给这个 Untagged 帧添加上 VID 为 10(即 PVID 值)的 Tag,使其变为 Tagged 帧。

    • 从 Port3 转发:处理后的 Tagged 帧(VID = 10)在 SW1 内部查找转发路径,要发往服务器需从 Port3 接口转发出去。Port3 接口 PVID 为 1 ,在其允许通过列表中 VLAN 10 属于 Tagged 类型。根据 Hybrid 接口发送规则,由于帧的 VID(10)在允许通过列表中,且为 Tagged 类型,所以该 Tagged 帧(VID = 10)会直接从 Port3 接口发出,不剥离 Tag。

  • SW2 接收与处理数据帧

    • 进入 Port3:SW2 的 Port3 接口接收到这个 Tagged 帧(VID = 10),Port3 接口 PVID 为 1 ,其允许通过列表中 VLAN 10 属于 Tagged 类型。根据 Hybrid 接口接收规则,由于帧的 VID(10)在允许通过列表中,所以该帧会被接收并继续处理。

    • 从 Port1 转发:该帧在 SW2 内部查找转发路径,要发往连接服务器的 Port1 接口。Port1 接口 PVID 为 100 ,其允许通过列表中 VLAN 10 属于 Untagged 类型。根据 Hybrid 接口发送规则,因为帧的 VID(10)在允许通过列表中且为 Untagged 类型,交换机会剥离该帧的 Tag,将得到的 Untagged 帧从 Port1 接口发送出去。

  • 服务器接收数据帧

    • 服务器连接在 SW2 的 Port1 接口,接收到来自 SW2 的 Untagged 帧,完成主机 1 到服务器的数据传输。
总结
Access 接口Trunk 接口Hybrid 接口
接收数据帧Untagged 数据帧,打上 PVID,接收。
Tagged 数据帧,与 PVID 比较,相同则接收;不同则丢弃。
Untagged 数据帧,打上 PVID,且 VID 在允许列表中,则接收;VID 不在允许列表,则丢弃。
Tagged 数据帧,查看 VID 是否在允许列表中,在允许列表中,则接收;VID 不在允许列表,则丢弃。
Untagged 数据帧,打上 PVID,且 VID 在允许列表中,则接收;VID 不在允许列表中,则丢弃。
Tagged 数据帧,查看 VID 是否在允许列表中,在允许列表中,则接收;VID 不在允许列表,则丢弃。
发送数据帧VID 与 PVID 比较,相同则剥离标签发送;不同则丢弃。VID 在允许列表中,且 VID 与 PVID 一致,则剥离标签发送。
VID 在允许列表,但 VID 与 PVID 不一致,则直接带标签发送。
不在允许列表中,则直接丢弃。
VID 不在允许列表中,直接丢弃。
VID 在 Untagged 列表中,剥离标签发送。
VID 在 Tagged 列表中,带标签直接发送。

各类接口添加或剥除 VLAN 标签的处理过程总结如下:

  • 接收数据帧时

    • 当接收到不带 VLAN 标签的数据帧时,Access 接口、Trunk 接口、Hybrid 接口都会给数据帧打上 VLAN 标签。但 Trunk 接口、Hybrid 接口会根据数据帧的 VID 是否为其允许通过的 VLAN 来判断是否接收,而 Access 接口则无条件接收。

    • 当接收到带 VLAN 标签的数据帧时,Access 接口、Trunk 接口、Hybrid 接口都会根据数据帧的 VID 是否为其允许通过的 VLAN(Access 接口允许通过的 VLAN 就是缺省 VLAN)来判断是否接收。

  • 发送数据帧时

    • Access 接口直接剥离数据帧中的 VLAN 标签。

    • Trunk 接口只有在数据帧中的 VID 与接口的 PVID 相等时才会剥离数据帧中的 VLAN 标签。

    • Hybrid 接口会根据接口上的配置判断是否剥离数据帧中的 VLAN 标签。

因此,Access 接口发出的数据帧肯定不带 Tag;Trunk 接口发出的数据帧只有一个 VLAN 的数据帧不带 Tag,其他都带 VLAN 标签;Hybrid 接口发出的数据帧可根据需要设置某些 VLAN 的数据帧带 Tag,某些 VLAN 的数据帧不带 Tag。

VLAN 的应用

VLAN 的规划

VLAN 分配原则:

  • 按业务规划:可分为语音、视频和数据。
  • 按部门规划:可分为工程部、市场部、财经部等。
  • 按应用规划:可分为服务器、办公、教室等。

VLAN 分配技巧:

  • VLAN ID 的分配在有效范围内,可以随意分配和选取,但是为了提高 VLAN ID 的连续性,可以采用 VLAN ID 和子网关联的方式进行分配。
  • VLAN 编号建议连续分配,以保证 VLAN 资源合理利用。最常用的划分方式是基于接口的方式。

VLAN 的配置示例

VLAN 的基础配置

创建 VLAN
[Huawei] vlan vlan-id

通过此命令创建 VLAN 并进入 VLAN 视图,如果 VLAN 已存在,直接进入该 VLAN 的视图。

  • vlan-id 是整数形式,取值范围是 1~4094。
[Huawei] vlan batch { vlan-id1 [ to vlan-id2 ] }

通过此命令批量创建 VLAN。其中:

  • batch:指定批量创建 VLAN。
  • vlan-id1:表示第一个 VLAN 的编号。
  • vlan-id2:表示最后一个 VLAN 的编号。

缺省情况下,将所有接口都加入到一个缺省的 VLAN 中,该 VLAN 标识为 1。

Access 接口配置
  1. 配置接口类型
[Huawei-GigabitEthernet0/0/1] port link-type access

在接口视图下,配置接口的链路类型为 Access。

  1. 配置 Access 接口的缺省 VLAN
[Huawei-GigabitEthernet0/0/1] port default vlan vlan-id

在接口视图下,配置接口的缺省 VLAN 并同时加入这个 VLAN。

  • vlan-id:配置缺省 VLAN 的编号。整数形式,取值范围是 1~4094。
Trunk 接口配置
  1. 配置接口类型
[Huawei-GigabitEthernet0/0/1] port link-type trunk

在接口视图下,配置接口的链路类型为 Trunk。

  1. 配置 Trunk 接口加入指定 VLAN
[Huawei-GigabitEthernet0/0/1] port trunk allow-pass vlan { { vlan-id1 [ to vlan-id2 ] } | all }

在接口视图下,配置 Trunk 类型接口加入的 VLAN。

  1. (可选)配置 Trunk 接口的缺省 VLAN
[Huawei-GigabitEthernet0/0/1] port trunk pvid vlan vlan-id

在接口视图下,配置 Trunk 类型接口的缺省 VLAN。

Hybrid 接口配置
  1. 配置接口类型
[Huawei-GigabitEthernet0/0/1] port link-type hybrid

在接口视图下,配置接口的链路类型为 Hybrid。

  1. 配置 Hybrid 接口加入指定 VLAN
[Huawei-GigabitEthernet0/0/1] port hybrid untagged vlan { { vlan-id1 [ to vlan-id2 ] } | all }

在接口视图下,配置 Hybrid 类型接口加入的 VLAN,这些 VLAN 的帧以 Untagged 方式通过接口。

[Huawei-GigabitEthernet0/0/1] port hybrid tagged vlan { { vlan-id1 [ to vlan-id2 ] } | all }

在接口视图下,配置 Hybrid 类型接口加入的 VLAN,这些 VLAN 的帧以 Tagged 方式通过接口。

  1. (可选)配置 Hybrid 接口的缺省 VLAN
[Huawei-GigabitEthernet0/0/1] port hybrid pvid vlan vlan-id

在接口视图下,配置 Hybrid 类型接口的缺省 VLAN。

MAC 地址配置
  1. 关联 MAC 地址与 VLAN
[Huawei-vlan10] mac-vlan mac-address mac-address [ mac-address-mask | mac-address-mask-length ]

通过此命令配置 MAC 地址与 VLAN 关联。

  • mac-address:指定与 VLAN 关联的 MAC 地址。格式为 H-H-H。其中 H 为 4 位的十六进制数,可以输入 1~4 位,如 00e0、fc01。当输入不足 4 位时,表示前面的几位为 0,如:输入 e0,等同于 00e0。MAC 地址不可设置为 0000-0000-0000、FFFF-FFFF-FFFF 和组播地址。
  • mac-address-mask:指定 MAC 地址掩码。格式为 H-H-H,其中 H 为 1 至 4 位的十六进制数。
  • mac-address-mask-length:指定 MAC 地址掩码长度。整数形式,取值范围是 1~48。
  1. 使能 MAC 地址与 VLAN
[Huawei-GigabitEthernet0/0/1] mac-vlan enable

通过此命令使能接口的 MAC VLAN 功能

VLAN 的配置案例

基于接口划分 VLAN

组网需求:

  • 某企业的交换机连接有很多用户,且相同业务用户通过不同的设备接入企业网络。为了通信的安全性,企业希望业务相同用户之间可以互相访问,业务不同用户不能直接访问。
  • 可以在交换机上配置基于接口划分 VLAN,把业务相同的用户连接的接口划分到同一 VLAN。这样属于不同 VLAN 的用户不能直接进行二层通信,同一 VLAN 内的用户可以直接互相通信。

配置思路:

  • 创建 VLAN 并将连接用户的接口加入 VLAN,实现不同业务用户之间的二层流量隔离。
  • 配置 SW1 和 SW2 的各接口类型以及通过的 VLAN,实现相同业务用户通过 SW1 和 SW2 通信。

image-20250428222420260

配置步骤:

  1. 配置主机 1 到 主机 4 到 IP 地址和掩码分别为 10.0.0.1/8,10.0.0.2/8,10.0.0.3/8,10.0.0.4/8
  2. 交换机 SW1 创建 VLAN
<Huawei>sys
Enter system view, return user view with Ctrl+Z.
[Huawei]sys SW1
[SW1]vlan batch 10 20
[SW1]display vlan
The total number of vlans is : 3
--------------------------------------------------------------------------------
U: Up;         D: Down;         TG: Tagged;         UT: Untagged;
MP: Vlan-mapping;               ST: Vlan-stacking;
#: ProtocolTransparent-vlan;    *: Management-vlan;
--------------------------------------------------------------------------------

VID  Type    Ports                                                          
--------------------------------------------------------------------------------
1    common  UT:GE0/0/1(U)      GE0/0/2(U)      GE0/0/3(U)      GE0/0/4(D)      
                GE0/0/5(D)      GE0/0/6(D)      GE0/0/7(D)      GE0/0/8(D)      
                GE0/0/9(D)      GE0/0/10(D)     GE0/0/11(D)     GE0/0/12(D)     
                GE0/0/13(D)     GE0/0/14(D)     GE0/0/15(D)     GE0/0/16(D)     
                GE0/0/17(D)     GE0/0/18(D)     GE0/0/19(D)     GE0/0/20(D)     
                GE0/0/21(D)     GE0/0/22(D)     GE0/0/23(D)     GE0/0/24(D)     

10   common  
20   common  

VID  Status  Property      MAC-LRN Statistics Description      
--------------------------------------------------------------------------------

1    enable  default       enable  disable    VLAN 0001                         
10   enable  default       enable  disable    VLAN 0010                         
20   enable  default       enable  disable    VLAN 0020
  1. 交换机 SW1 配置接口 1
[SW1]int g0/0/1
[SW1-GigabitEthernet0/0/1]port link-type access
[SW1-GigabitEthernet0/0/1]port default vlan 10
[SW1-GigabitEthernet0/0/1]display this
#
interface GigabitEthernet0/0/1
 port link-type access
 port default vlan 10
#
return
  1. 交换机 SW1 配置接口 2
[SW1-GigabitEthernet0/0/1]int g0/0/2
[SW1-GigabitEthernet0/0/2]port link-type access
[SW1-GigabitEthernet0/0/2]port default vlan 20
[SW1-GigabitEthernet0/0/2]display this
#
interface GigabitEthernet0/0/2
 port link-type access
 port default vlan 20
#
return
  1. 交换机 SW1 配置接口 3
[SW1-GigabitEthernet0/0/2]int g0/0/3
[SW1-GigabitEthernet0/0/3]port link-type trunk
[SW1-GigabitEthernet0/0/3]port trunk pvid vlan 1
[SW1-GigabitEthernet0/0/3]port trunk allow-pass vlan 10 20
[SW1-GigabitEthernet0/0/3]display this
#
interface GigabitEthernet0/0/3
 port link-type trunk
 port trunk allow-pass vlan 10 20
#
return
  1. 交换机 SW2 创建 VLAN
<Huawei>sys
Enter system view, return user view with Ctrl+Z.
[Huawei]sys SW2
[SW2]vlan batch 10 20
[SW2]display vlan
The total number of vlans is : 3
--------------------------------------------------------------------------------
U: Up;         D: Down;         TG: Tagged;         UT: Untagged;
MP: Vlan-mapping;               ST: Vlan-stacking;
#: ProtocolTransparent-vlan;    *: Management-vlan;
--------------------------------------------------------------------------------

VID  Type    Ports                                                          
--------------------------------------------------------------------------------
1    common  UT:GE0/0/1(U)      GE0/0/2(U)      GE0/0/3(U)      GE0/0/4(D)      
                GE0/0/5(D)      GE0/0/6(D)      GE0/0/7(D)      GE0/0/8(D)      
                GE0/0/9(D)      GE0/0/10(D)     GE0/0/11(D)     GE0/0/12(D)     
                GE0/0/13(D)     GE0/0/14(D)     GE0/0/15(D)     GE0/0/16(D)     
                GE0/0/17(D)     GE0/0/18(D)     GE0/0/19(D)     GE0/0/20(D)     
                GE0/0/21(D)     GE0/0/22(D)     GE0/0/23(D)     GE0/0/24(D)     

10   common  
20   common  

VID  Status  Property      MAC-LRN Statistics Description      
--------------------------------------------------------------------------------

1    enable  default       enable  disable    VLAN 0001                         
10   enable  default       enable  disable    VLAN 0010                         
20   enable  default       enable  disable    VLAN 0020
  1. 交换机 SW2 配置接口 1
[SW2]int g0/0/1
[SW2-GigabitEthernet0/0/1]port link-type access
[SW2-GigabitEthernet0/0/1]port default vlan 10
[SW2-GigabitEthernet0/0/1]display this
#
interface GigabitEthernet0/0/1
 port link-type access
 port default vlan 10
#
return
  1. 交换机 SW2 配置接口 2
[SW2-GigabitEthernet0/0/1]int g0/0/2
[SW2-GigabitEthernet0/0/2]port link-type access
[SW2-GigabitEthernet0/0/2]port default vlan 20
[SW2-GigabitEthernet0/0/2]display this
#
interface GigabitEthernet0/0/2
 port link-type access
 port default vlan 20
#
return
  1. 交换机 SW2 配置接口 3
[SW2-GigabitEthernet0/0/2]int g0/0/3
[SW2-GigabitEthernet0/0/3]port link-type trunk
[SW2-GigabitEthernet0/0/3]port trunk pvid vlan 1
[SW2-GigabitEthernet0/0/3]port trunk allow-pass vlan 10 20
[SW2-GigabitEthernet0/0/3]display this
#
interface GigabitEthernet0/0/3
 port link-type trunk
 port trunk allow-pass vlan 10 20
#
return
  1. 查看 SW1 上的 VLAN
[SW1]display vlan
The total number of vlans is : 3
--------------------------------------------------------------------------------
U: Up;         D: Down;         TG: Tagged;         UT: Untagged;
MP: Vlan-mapping;               ST: Vlan-stacking;
#: ProtocolTransparent-vlan;    *: Management-vlan;
--------------------------------------------------------------------------------

VID  Type    Ports                                                          
--------------------------------------------------------------------------------
1    common  UT:GE0/0/3(U)      GE0/0/4(D)      GE0/0/5(D)      GE0/0/6(D)      
                GE0/0/7(D)      GE0/0/8(D)      GE0/0/9(D)      GE0/0/10(D)     
                GE0/0/11(D)     GE0/0/12(D)     GE0/0/13(D)     GE0/0/14(D)     
                GE0/0/15(D)     GE0/0/16(D)     GE0/0/17(D)     GE0/0/18(D)     
                GE0/0/19(D)     GE0/0/20(D)     GE0/0/21(D)     GE0/0/22(D)     
                GE0/0/23(D)     GE0/0/24(D)                                     

10   common  UT:GE0/0/1(U)                                                      
             TG:GE0/0/3(U)                                                      

20   common  UT:GE0/0/2(U)                                                      

             TG:GE0/0/3(U)                                                      


VID  Status  Property      MAC-LRN Statistics Description      
--------------------------------------------------------------------------------

1    enable  default       enable  disable    VLAN 0001                         
10   enable  default       enable  disable    VLAN 0010                         
20   enable  default       enable  disable    VLAN 0020

其中:

  • Tagged/Untagged Port:手动加入本 VLAN 的接口,分为 Tagged 和 Untagged 方式。
  • VID 或 VLAN ID:VLAN 编号。
  • Type 或 VLAN Type:VLAN 类型,common 指普通 VLAN。
  • Ports:加入该 VLAN 的接口。

此时即可实现主机 1 可以与主机 3 通信,但是不能与主机 2 和 主机 4 通信:

PC>ping 10.0.0.3

Ping 10.0.0.3: 32 data bytes, Press Ctrl_C to break
From 10.0.0.3: bytes=32 seq=1 ttl=128 time=78 ms

PC>ping 10.0.0.4

Ping 10.0.0.4: 32 data bytes, Press Ctrl_C to break
From 10.0.0.1: Destination host unreachable

PC>ping 10.0.0.2

Ping 10.0.0.2: 32 data bytes, Press Ctrl_C to break
From 10.0.0.1: Destination host unreachable
基于接口划分 VLAN

组网需求:

  • 某企业的交换机连接有很多用户,且不同部门的用户都需要访问公司服务器。但是为了通信的安全性,企业希望不同部门的用户不能直接访问。
  • 可以在交换机上配置基于接口划分 VLAN,并配置 Hybrid 接口,使得不同部门的用户不能直接进行二层通信,但都可以直接访问公司服务器。

配置思路:

  • 创建 VLAN 并将连接用户的接口加入 VLAN,实现不同业务用户之间的二层流量隔离。
  • 配置 SW1 和 SW2 的各接口类型以及通过的 VLAN,实现主机和服务器之间通过 SW1 和 SW2 通信。

image-20250429194347810

配置步骤:

  1. 配置主机 1,主机 2 和 服务器的 IP 地址和掩码分别为 10.0.0.1/8,10.0.0.2/8,10.0.0.3/8
  2. 交换机 SW1 创建 VLAN
<Huawei>sys
Enter system view, return user view with Ctrl+Z.
[Huawei]sys SW1
[SW1]vlan batch 10 20 100
[SW1]display vlan
The total number of vlans is : 4
--------------------------------------------------------------------------------
U: Up;         D: Down;         TG: Tagged;         UT: Untagged;
MP: Vlan-mapping;               ST: Vlan-stacking;
#: ProtocolTransparent-vlan;    *: Management-vlan;
--------------------------------------------------------------------------------

VID  Type    Ports                                                          
--------------------------------------------------------------------------------
1    common  UT:GE0/0/1(U)      GE0/0/2(U)      GE0/0/3(U)      GE0/0/4(D)      
                GE0/0/5(D)      GE0/0/6(D)      GE0/0/7(D)      GE0/0/8(D)      
                GE0/0/9(D)      GE0/0/10(D)     GE0/0/11(D)     GE0/0/12(D)     
                GE0/0/13(D)     GE0/0/14(D)     GE0/0/15(D)     GE0/0/16(D)     
                GE0/0/17(D)     GE0/0/18(D)     GE0/0/19(D)     GE0/0/20(D)     
                GE0/0/21(D)     GE0/0/22(D)     GE0/0/23(D)     GE0/0/24(D)     

10   common  
20   common  
100  common  

VID  Status  Property      MAC-LRN Statistics Description      
--------------------------------------------------------------------------------

1    enable  default       enable  disable    VLAN 0001                         
10   enable  default       enable  disable    VLAN 0010                         
20   enable  default       enable  disable    VLAN 0020                         
100  enable  default       enable  disable    VLAN 0100
  1. 交换机 SW1 配置接口 1
[SW1]int g0/0/1
[SW1-GigabitEthernet0/0/1]port link-type hybrid
[SW1-GigabitEthernet0/0/1]port hybrid pvid vlan 10
[SW1-GigabitEthernet0/0/1]port hybrid untagged vlan 10 100
[SW1-GigabitEthernet0/0/1]display this
#
interface GigabitEthernet0/0/1
 port hybrid pvid vlan 10
 port hybrid untagged vlan 10 100
#
return
  1. 交换机 SW1 配置接口 2
[SW1-GigabitEthernet0/0/1]int g0/0/2
[SW1-GigabitEthernet0/0/2]port link-type hybrid
[SW1-GigabitEthernet0/0/2]port hybrid pvid vlan 20
[SW1-GigabitEthernet0/0/2]port hybrid untagged vlan 20 100
[SW1-GigabitEthernet0/0/2]display this
#
interface GigabitEthernet0/0/2
 port hybrid pvid vlan 20
 port hybrid untagged vlan 20 100
#
return
  1. 交换机 SW1 配置接口 3
[SW1-GigabitEthernet0/0/2]int g0/0/3
[SW1-GigabitEthernet0/0/3]port link-type hybrid
[SW1-GigabitEthernet0/0/3]port hybrid tagged vlan 10 20 100
[SW1-GigabitEthernet0/0/3]display this
#
interface GigabitEthernet0/0/3
 port hybrid tagged vlan 10 20 100
#
return
  1. 交换机 SW2 创建 VLAN
<Huawei>sys
Enter system view, return user view with Ctrl+Z.
[Huawei]sys SW2
[SW2]vlan batch 10 20 100
[SW2]display vlan
The total number of vlans is : 4
--------------------------------------------------------------------------------
U: Up;         D: Down;         TG: Tagged;         UT: Untagged;
MP: Vlan-mapping;               ST: Vlan-stacking;
#: ProtocolTransparent-vlan;    *: Management-vlan;
--------------------------------------------------------------------------------

VID  Type    Ports                                                          
--------------------------------------------------------------------------------
1    common  UT:GE0/0/1(U)      GE0/0/2(D)      GE0/0/3(U)      GE0/0/4(D)      
                GE0/0/5(D)      GE0/0/6(D)      GE0/0/7(D)      GE0/0/8(D)      
                GE0/0/9(D)      GE0/0/10(D)     GE0/0/11(D)     GE0/0/12(D)     
                GE0/0/13(D)     GE0/0/14(D)     GE0/0/15(D)     GE0/0/16(D)     
                GE0/0/17(D)     GE0/0/18(D)     GE0/0/19(D)     GE0/0/20(D)     
                GE0/0/21(D)     GE0/0/22(D)     GE0/0/23(D)     GE0/0/24(D)     

10   common  
20   common  
100  common  

VID  Status  Property      MAC-LRN Statistics Description      
--------------------------------------------------------------------------------

1    enable  default       enable  disable    VLAN 0001                         
10   enable  default       enable  disable    VLAN 0010                         
20   enable  default       enable  disable    VLAN 0020                         
100  enable  default       enable  disable    VLAN 0100
  1. 交换机 SW2 配置接口 1
[SW2]int g0/0/1
[SW2-GigabitEthernet0/0/1]port link-type hybrid
[SW2-GigabitEthernet0/0/1]port hybrid pvid vlan 100
[SW2-GigabitEthernet0/0/1]port hybrid untagged vlan 10 20 100
[SW2-GigabitEthernet0/0/1]display this
#
interface GigabitEthernet0/0/1
 port hybrid pvid vlan 100
 port hybrid untagged vlan 10 20 100
#
return
  1. 交换机 SW2 配置接口 3
[SW2-GigabitEthernet0/0/1]int g0/0/3
[SW2-GigabitEthernet0/0/3]port link-type hybrid
[SW2-GigabitEthernet0/0/3]port hybrid tagged vlan 10 20 100
[SW2-GigabitEthernet0/0/3]display this
#
interface GigabitEthernet0/0/3
 port hybrid tagged vlan 10 20 100
#
return
  1. 查看 SW1 上的 VLAN
[SW1]display vlan
The total number of vlans is : 4
--------------------------------------------------------------------------------
U: Up;         D: Down;         TG: Tagged;         UT: Untagged;
MP: Vlan-mapping;               ST: Vlan-stacking;
#: ProtocolTransparent-vlan;    *: Management-vlan;
--------------------------------------------------------------------------------

VID  Type    Ports                                                          
--------------------------------------------------------------------------------
1    common  UT:GE0/0/1(U)      GE0/0/2(U)      GE0/0/3(U)      GE0/0/4(D)      
                GE0/0/5(D)      GE0/0/6(D)      GE0/0/7(D)      GE0/0/8(D)      
                GE0/0/9(D)      GE0/0/10(D)     GE0/0/11(D)     GE0/0/12(D)     
                GE0/0/13(D)     GE0/0/14(D)     GE0/0/15(D)     GE0/0/16(D)     
                GE0/0/17(D)     GE0/0/18(D)     GE0/0/19(D)     GE0/0/20(D)     
                GE0/0/21(D)     GE0/0/22(D)     GE0/0/23(D)     GE0/0/24(D)     

10   common  UT:GE0/0/1(U)                                                      

             TG:GE0/0/3(U)                                                      

20   common  UT:GE0/0/2(U)                                                      

             TG:GE0/0/3(U)                                                      

100  common  UT:GE0/0/1(U)      GE0/0/2(U)                                      

             TG:GE0/0/3(U)                                                      


VID  Status  Property      MAC-LRN Statistics Description      
--------------------------------------------------------------------------------

1    enable  default       enable  disable    VLAN 0001                         
10   enable  default       enable  disable    VLAN 0010                         
20   enable  default       enable  disable    VLAN 0020                         
100  enable  default       enable  disable    VLAN 0100

此时即可实现主机 1 与主机 2 可以分别与服务器通信,但是主机 1 和 主机 2 不能通信:

PC>ping 10.0.0.2

Ping 10.0.0.2: 32 data bytes, Press Ctrl_C to break
From 10.0.0.1: Destination host unreachable

PC>ping 10.0.0.3

Ping 10.0.0.3: 32 data bytes, Press Ctrl_C to break
From 10.0.0.3: bytes=32 seq=1 ttl=128 time=109 ms
基于 MAC 地址划分 VLAN

组网需求:

  • 某个公司的网络中,网络管理者将同一部门的员工划分到同一 VLAN。为了提高部门内的信息安全,要求只有本部门员工的主机才可以访问公司网络。
  • 主机 1、主机 2、主机 3 为本部门员工的主机,要求这几台主机可以通过 SW1 访问公司网络,如换成其他主机则不能访问。
  • 可以配置基于 MAC 地址划分 VLAN,将本部门员工主机的 MAC 地址与 VLAN 绑定,从而实现该需求。

配置思路:

  • 创建 VLAN。
  • 配置各以太网接口以正确的方式加入 VLAN。
  • 配置主机 1、主机 2、主机 3 的 MAC 地址与 VLAN 关联,实现根据报文中的源 MAC 地址确定 VLAN。
  • 配置接口为 Hybrid 接口:在 Access 接口和 Trunk 接口上,只有基于 MAC 划分的 VLAN 和 PVID 相同时,才能使用 MAC VLAN 功能。所以基于 MAC 地址划分 VLAN 推荐在 Hybrid 口上配置。

image-20250429201905208

配置步骤:

  1. 交换机 SW1 创建 VLAN 并关联主机 1 到 主机 3 的 MAC 地址
<Huawei>sys
Enter system view, return user view with Ctrl+Z.
[Huawei]sys SW1
[SW1]vlan 10
[SW1-vlan10]mac-vlan mac-address 001e-10dd-dd01
[SW1-vlan10]mac-vlan mac-address 001e-10dd-dd02
[SW1-vlan10]mac-vlan mac-address 001e-10dd-dd03
[SW1-vlan10]quit
  1. 配置接口 1
[SW1]int g0/0/1
[SW1-GigabitEthernet0/0/1]port link-type hybrid
[SW1-GigabitEthernet0/0/1]port hybrid tagged vlan 10
[SW1-GigabitEthernet0/0/1]display this
#
interface GigabitEthernet0/0/1
 port hybrid tagged vlan 10
#
return
  1. 配置接口 2
[SW1-GigabitEthernet0/0/1]int g0/0/2
[SW1-GigabitEthernet0/0/2]port link-type hybrid
[SW1-GigabitEthernet0/0/2]port hybrid untagged vlan 10
[SW1-GigabitEthernet0/0/2]mac-vlan enable
[SW1-GigabitEthernet0/0/2]display this
#
interface GigabitEthernet0/0/2
 port hybrid untagged vlan 10
 mac-vlan enable
#
return
  1. 配置接口 3
[SW1-GigabitEthernet0/0/2]int g0/0/3
[SW1-GigabitEthernet0/0/3]port link-type hybrid
[SW1-GigabitEthernet0/0/3]port hybrid untagged vlan 10
[SW1-GigabitEthernet0/0/3]mac-vlan enable
[SW1-GigabitEthernet0/0/3]display this
#
interface GigabitEthernet0/0/3
 port hybrid untagged vlan 10
 mac-vlan enable
#
return
  1. 配置接口 4
[SW1-GigabitEthernet0/0/3]int g0/0/4
[SW1-GigabitEthernet0/0/4]port link-type hybrid
[SW1-GigabitEthernet0/0/4]port hybrid untagged vlan 10
[SW1-GigabitEthernet0/0/4]mac-vlan enable
[SW1-GigabitEthernet0/0/4]display this
#
interface GigabitEthernet0/0/4
 port hybrid untagged vlan 10
 mac-vlan enable
#
return
  1. 查看 VLAN
[SW1]display vlan
The total number of vlans is : 2
--------------------------------------------------------------------------------
U: Up;         D: Down;         TG: Tagged;         UT: Untagged;
MP: Vlan-mapping;               ST: Vlan-stacking;
#: ProtocolTransparent-vlan;    *: Management-vlan;
--------------------------------------------------------------------------------

VID  Type    Ports                                                          
--------------------------------------------------------------------------------
1    common  UT:GE0/0/1(U)      GE0/0/2(U)      GE0/0/3(U)      GE0/0/4(U)      
                GE0/0/5(D)      GE0/0/6(D)      GE0/0/7(D)      GE0/0/8(D)      
                GE0/0/9(D)      GE0/0/10(D)     GE0/0/11(D)     GE0/0/12(D)     
                GE0/0/13(D)     GE0/0/14(D)     GE0/0/15(D)     GE0/0/16(D)     
                GE0/0/17(D)     GE0/0/18(D)     GE0/0/19(D)     GE0/0/20(D)     
                GE0/0/21(D)     GE0/0/22(D)     GE0/0/23(D)     GE0/0/24(D)     

10   common  UT:GE0/0/2(U)      GE0/0/3(U)      GE0/0/4(U)                      
             TG:GE0/0/1(U)                                                      


VID  Status  Property      MAC-LRN Statistics Description      
--------------------------------------------------------------------------------

1    enable  default       enable  disable    VLAN 0001                         
10   enable  default       enable  disable    VLAN 0010                         

[SW1]display mac-vlan mac-address all
---------------------------------------------------
MAC Address     MASK            VLAN    Priority   
---------------------------------------------------
001e-10dd-dd01  ffff-ffff-ffff  10      0          
001e-10dd-dd02  ffff-ffff-ffff  10      0          
001e-10dd-dd03  ffff-ffff-ffff  10      0          

Total MAC VLAN address count: 3 

其中:

  • 命令:display mac-vlan { mac-address { all | mac-address [ mac-address-mask | mac-address-mask-length ] } | vlan vlan-id },用来查看基于 MAC 地址划分 VLAN 的配置信息。
    • all:显示所有 MAC 地址 VLAN 划分信息。
    • mac-address mac-address:显示指定 MAC 地址的 VLAN 划分信息。
      • 格式为 H-H-H,其中 H 为 1 至 4 位的十六进制数。
    • mac-address-mask:MAC 地址掩码。
      • 格式为 H-H-H,其中 H 为 1 至 4 位的十六进制数。
    • mac-address-mask-length:MAC 地址掩码长度。
      • 整数形式,取值范围是 1~48。
    • vlan vlan-id:显示指定 MAC-VLAN 的配置信息。
      • 整数形式,取值范围是 1~4094。
  • 输出信息:
    • MAC Address:MAC 地址。
    • MASK:MAC 地址的掩码。
    • VLAN:基于 MAC 地址划分的 VLAN。
    • Priority:指定 MAC 地址对应 VLAN 的 802.1P 优先级。

生成树

  • 以太网交换网络中为了进行链路备份,提高网络可靠性,通常会使用冗余链路。但是使用冗余链路会在交换网络上产生环路,引发广播风暴以及 MAC 地址表不稳定等故障现象,从而导致用户通信质量较差,甚至通信中断。为解决交换网络中的环路问题,提出了生成树协议 STP(Spanning Tree Protocol)。
  • 运行 STP 协议的设备通过彼此交互信息发现网络中的环路,并有选择地对某个接口进行阻塞,最终将环形网络结构修剪成无环路的树形网络结构,从而防止报文在环形网络中不断循环,避免设备由于重复接收相同的报文造成处理能力下降。
  • RSTP(Rapid Spanning Tree Protocol)协议基于 STP 协议,对原有的 STP 协议进行了更加细致的修改和补充,实现了网络拓扑快速收敛。

生成树技术概述

技术背景

  • 随着局域网规模的不断扩大,越来越多的交换机被用来实现主机之间的互连。但接入层交换机单链路上联,存在两大问题:
    • 单链路故障:若上联链路发生故障,交换机下联用户将断网。
    • 单点故障:交换机宕机时,下联用户也会断网。
  • 为解决此类问题,交换机互连时通常使用冗余链路实现备份。冗余链路虽增强了网络可靠性,但会产生环路,进而带来一系列问题,导致通信质量下降和通信业务中断。二层环路可能由以下原因导致:
    • 人为疏忽:例如错误连接设备之间的互联线缆。
    • 配置错误:例如错误配置链路聚合。
  • 常见环路主要分为二层环路和三层环路:
    • 二层环路:因网络中部署二层冗余环境或人为误接线缆导致,可借助特定协议或机制实现二层防环。
    • 三层环路:由路由环路引起,可通过动态路由协议防环和 IP 报文头部中的 TTL 字段防止报文无止尽转发。

二层环路带来的问题

广播风暴

  • 根据交换机转发原则,若从一个端口接收到广播帧或目的 MAC 地址未知的单播帧,会将该帧向除源端口外的所有其他端口转发。如果交换网络中有环路,则这个帧会被无限转发,此时便会形成广播风暴,网络中也会充斥着重复的数据帧。
  • 如下图所示,SW3 收到了一个广播帧将其进行泛洪,SW1 和 SW2 也会将此帧转发到除了接收此帧的其他所有端口,结果此帧又会被再次转发给 SW3,这种循环会一直持续,于是便产生了广播风暴。交换机性能会因此急速下降,并会导致业务中断。

image-20250527193701074

MAC 地址表漂移

  • 交换机根据接收到的数据帧的源地址和接收端口生成 MAC 地址表项。
  • 如下图所示,SW3 收到一个广播帧泛洪,SW1 从 GE0/0/1 接口接收到广播帧后学习且泛洪,形成 MAC 地址 5489-98EE-788A 与 GE0/0/1 的映射;SW2 收到广播帧后学习且泛洪,SW1 再次从 GE0/0/2 收到源 MAC 地址为 5489-98EE-788A 的广播帧并进行学习,5489-98EE-788A 会不断地在 GE0/0/1 与 GE0/0/2 接口之间来回切换,这被称为 MAC 地址漂移现象。

image-20250527193826723

初识生成树协议

  • 在以太网中,二层网络的环路会带来广播风暴、MAC 地址表震荡、重复数据帧等问题,为解决交换网络中的环路问题,提出了 STP(生成树协议)。
  • STP 通过构造一棵树来消除交换网络中的环路。
  • 运行 STP 算法,可判断网络中存在环路的地方并阻断冗余链路,将环路网络修剪成无环路的树形网络,避免数据帧在环路网络中的增生和无穷循环。
  • 交换机上运行的生成树协议会持续监控网络拓扑结构,当网络拓扑结构发生变化时,生成树能感知并自动调整。因此,生成树既能解决二层环路问题,也能为网络的冗余性提供方案。
  • 生成树协议应用于园区网络的二层网络中,用于链路备份和消除环路。

STP 的基本概念

桥 ID

  • 在 STP 中,每一台交换机都有一个唯一标示符,叫做 Bridge ID 或者桥 ID,IEEE 802.1D 标准中规定桥 ID 由 16 位的桥优先级(Bridge Priority)和 48 位的 MAC 地址构成。在 STP 网络中,桥优先级是可以配置的,取值范围是 0~65535,默认值为 32768, 可以修改,但是修改值必须为 4096 的倍数。优先级最高的设备(数值越小越优先)会被选举为根桥。如果优先级相同,则会比较 MAC 地址,MAC 地址越小则越优先。
  • 如图,需要在该网络中选举根桥,首先比较三台交换机的桥优先级,桥优先级都为 4096,再比较三台交换机的 MAC 地址,谁小谁优先,最终选择 SW1 为根桥。

image-20250527194914194

根桥

  • STP 的主要作用之一是在整个交换网络中计算出一棵无环的 “树”(STP 树)。
  • 树形的网络结构必须有树根,于是 STP 引入了根桥(Root Bridge)概念。根桥是一个 STP 交换网络中的 “树根”。
  • STP 开始工作后,会在交换网络中选举一个根桥,根桥是生成树进行拓扑计算的重要 “参考点”,是 STP 计算得出的无环拓扑的 “树根”。
  • 在 STP 网络中,桥 ID 最小的设备会被选举为根桥。在 BID 的比较过程中:
    • 首先比较桥优先级,优先级的值越小,则越优先,拥有最小优先级值的交换机会成为根桥。
    • 如果优先级相等,那么再比较 MAC 地址,拥有最小 MAC 地址的交换机会成为根桥。
  • 对于一个 STP 网络,根桥在全网中只有一个,它是整个网络的逻辑中心,但不一定是物理中心。根桥会根据网络拓扑的变化而动态变化。
  • 网络收敛后,根桥会按照一定的时间间隔产生并向外发送配置 BPDU,其他设备仅对该报文进行处理,传达拓扑变化记录,从而保证拓扑的稳定。

开销

  • 交换机的每个端口都有一个端口开销(Port Cost)参数,此参数表示该端口在 STP 中的开销值。

  • 每一个激活了 STP 的接口都维护着一个 Cost 值,接口的 Cost 主要用于计算根路径开销,也就是到达根的开销。

  • 默认情况下端口的开销和端口的带宽有关,带宽越高,开销越小。

  • 用户也可以根据需要通过命令调整接口的 Cost。

  • 华为交换机支持多种 STP 的路径开销计算标准,提供多厂商场景下最大程度的兼容性。缺省情况下,华为交换机使用 IEEE 802.1t 标准来计算路径开销。

  • STP 开销计算方法:

接口速率接口模式IEEE 802.1d-1998 标准IEEE 802.1t 标准华为计算方法
100MbpsHalf-Duplex19200,000200
100MbpsFull-Duplex18199,999199
100MbpsAggregated Link 2 Ports15100,000180
1000MbpsFull-Duplex420,00020
1000MbpsAggregated Link 2 Ports310,00018
10GbpsFull-Duplex220002
10GbpsAggregated Link 2 Ports110001
40GbpsFull-Duplex15001
40GbpsAggregated Link 2 Ports12501
100GbpsFull-Duplex12001
100GbpsAggregated Link 2 Ports11001

根路径开销

  • 在 STP 的拓扑计算过程中,一个非常重要的环节就是 “丈量” 交换机某个接口到根桥的 “成本”,也即根路径开销(Root Path Cost, RPC)。
  • 一台设备从某个接口到达根桥的 RPC 等于从根桥到该设备沿途所有入方向接口的 Cost 累加。
  • 根桥的根路径开销是 0。
  • 在下图中,SW3 从 GE0/0/1 接口到达根桥的 RPC 等于接口 1 的 Cost 加上接口 2 的 Cost。

image-20250527195212007

接口 ID

  • 运行 STP 的交换机使用接口 ID 来标识每个接口,接口 ID(PID) 主要用于在特定场景下选举指定接口。
  • 接口 ID 由两部分构成:
    • 高 4 bit 是接口优先级
    • 低 12 bit 是接口编号
  • 接口优先级取值范围是 0 到 240,步长为 16(即取值必须为 16 的整数倍)。缺省情况下,接口优先级是 128。接口 ID 可以用来确定接口角色。
  • 激活 STP 的接口会维护一个缺省的接口优先级,在华为交换机上,该值为 128。用户可以根据实际需要,通过命令修改该优先级。

image-20250527195351667

BPDU

  • 为了计算生成树,交换机之间需要交换相关的信息和参数,这些信息和参数被封装在 BPDU(Bridge Protocol Data Unit,网桥协议数据单元)中。
  • BPDU 有两种类型:
    • 配置 BPDU(Configuration BPDU)
    • TCN BPDU(Topology Change Notification BPDU)
  • 配置 BPDU 包含了桥 ID、路径开销和端口 ID 等参数。STP 协议通过在交换机之间传递配置 BPDU 来选举根交换机,以及确定每个交换机端口的角色和状态:
    • 初始化过程中,每个桥都主动发送配置 BPDU
    • 网络拓扑稳定后,只有根桥主动发送配置 BPDU,其他交换机在收到上游传来的配置 BPDU 后,才会发送自己的配置 BPDU
  • TCN BPDU 是指下游交换机感知到拓扑发生变化时向上游发送的拓扑变化通知。

image-20250527195525051

  • 配置 BPDU 的报文格式:
PIDPVIBPDU TypeFlagsRoot IDRPCBridge IDPort IDMessage AgeMax AgeHello TimeForward Delay
字节字段描述
2PID协议 ID ,对于 STP 而言,该字段的值总为 0
1PVI协议版本 ID,对于 STP 而言,该字段的值总为 0
1BPDU Type指示本 BPDU 的类型,若值为 0x00,则表示本报文为配置 BPDU;若值为 0x80,则为 TCN BPDU
1Flags标志,STP 只使用了该字段的最高及最低两个比特位,最低位是 TC(Topology Change,拓扑变更)标志,最高位是 TCA(Topology Change Acknowledgment,拓扑变更确认)标志
8Root ID根网桥的 ID
4RPC根路径开销,到达根桥的 STP Cost
8Bridge IDBPDU 发送桥的 ID
2Port IDBPDU 发送网桥的接口 ID(优先级 + 接口号)
2Message Age消息寿命,从根网桥发出 BPDU 之后的秒数,每经过一个网桥都加 1,所以它本质上是到达根桥的跳数
2Max Age最大寿命,当一段时间未收到任何 BPDU,生存期到达最大寿命时,网桥认为该接口连接的链路发生故障。默认 20s
2Hello Time根网桥发送的 BPDU 之间的时间间隔,默认 2s
2Forward Delay转发延迟,在侦听和学习状态所停留的时间间隔,默认 15s

配置 BPDU 的比较原则

对于 STP 而言,最重要的工作就是在交换网络中计算出一个无环拓扑。在拓扑计算的过程中,一个非常重要的内容就是配置 BPDU 的比较。在配置 BPDU 中,有四个字段非常关键,它们是 “根桥 ID”、“根路径开销”、“网桥 ID” 以及 “接口 ID”,这四个字段便是交换机进行配置 BPDU 比较的关键内容。

STP 按照如下顺序选择最优的配置 BPDU:

  1. 最小的根桥 ID
  2. 最小的 RPC
  3. 最小的网桥 ID
  4. 最小的接口 ID

在这四条原则中(每条原则都对应配置 BPDU 中的相应字段),第一条原则主要用于在网络中选举根桥,后面的原则主要用于选举根接口及指定接口。

STP 操作:

  1. 选举一个根桥。
  2. 每个非根交换机选举一个根端口。
  3. 每个网段选举一个指定端口。
  4. 阻塞非根、非指定端口。

STP 中定义的三种端口角色:

  • 指定端口:是交换机向所连网段转发配置 BPDU 的端口,每个网段有且只能有一个指定端口。一般情况下,根桥的每个端口总是指定端口。
  • 根端口:是非根交换机去往根桥路径最优的端口。在一个运行 STP 协议的交换机上最多只有一个根端口,但根桥上没有根端口。
  • 预备端口:如果一个端口既不是指定端口也不是根端口,则此端口为预备端口。预备端口将被阻塞。

STP 的计算过程

计算过程

  1. 在交换网络中选举一个根桥
  • STP 在交换网络中开始工作后,每个交换机都会向网络中发送配置 BPDU。配置 BPDU 中包含交换机自己的桥 ID。
  • 网络中拥有最小桥 ID 的交换机成为根桥。
  • 在一个连续的 STP 交换网络中只会存在一个根桥。
  • 根桥的角色是可抢占的。
  • 为了确保交换网络的稳定,建议提前规划 STP 组网,并将规划为根桥的交换机的桥优先级设置为最小值 0。
  • 选举过程:
    • STP 交换机初始启动之后,都会认为自己是根桥,并在发送给其他交换机的 BPDU 中宣告自己为根桥。因此,此时 BPDU 中的根桥 ID 为各自设备的网桥 ID。
    • 当交换机收到网络中其他设备发送来的 BPDU 后,会比较 BPDU 中的根桥 ID 和自己的 BID。
    • 交换机不断交互 BPDU,同时对 BID 进行比较,最终选举一台 BID 最小的交换机作为根桥,其他的则为非根桥。

image-20250527195649789

  1. 在每台非根桥上选举一个根接口
  • 每一台非根桥交换机都会在自己的接口中选举出一个接口。
  • 非根桥交换机上有且只会有一个根接口。
  • 当非根桥交换机有多个接口接入网络中时,根接口是其收到最优配置 BPDU 的接口。
  • 可以形象地理解为,根接口是每台非根桥上 “朝向” 根桥的接口。
  • 选举过程:
    • 交换机有多个端口接入网络,各个端口都会收到 BPDU 报文,报文中会携带 “RootID、RPC、BID、PID” 等关键字段,端口会针对这些字段进行 PK。
    • 首先比较根路径开销(RPC),STP 协议把根路径开销作为确定根端口的重要依据。RPC 值越小,越优选,因此交换机会选 RPC 最小的端口作为根端口。
    • 当 RPC 相同时,比较上行交换机的 BID,即比较交换机各个端口收到的 BPDU 中的 BID,值越小,越优选,因此交换机会选上行设备 BID 最小的端口作为根端口。
    • 当上行交换机 BID 相同时,比较上行交换机的 PID,即比较交换机各个端口收到的 BPDU 中的 PID,值越小,越优先,因此交换机会选上行设备 PID 最小的端口作为根端口。
    • 当上行交换机的 PID 相同时,则比较本地交换机的 PID,即比较本端交换机各个端口各自的 PID,值越小,越优先,因此交换机会选端口 PID 最小的端口作为根端口。

image-20250527195731627

  1. 在每条链路上选举一个指定接口
  • 根接口选举出来后,非根桥会使用其在该接口上收到的最优 BPDU 进行计算,然后将计算得到的配置 BPDU 与除了根接口之外的其他所有接口所收到的配置 BPDU 进行比较:
    • 如果前者更优,则该接口为指定接口;
    • 如果后者更优,则该接口为非指定接口。
  • 一般情况下,根桥的所有接口都是指定接口。
  • 选举过程:指定端口也是通过比较 RPC 来确定的,选择 RPC 最小的作为指定端口,如果 RPC 相同,则比较 BID 和 PID。
    • 首先比较根路径开销(RPC),值越小,越优选,因此交换机会选 RPC 最小的端口作为指定端口。
    • 若 RPC 相等,则比较链路两端交换机的 BID,值越小,越优选,因此交换机会选 BID 最小的交换机的端口作为指定端口。
    • 若 BID 相等,则比较链路两端端口的 PID,值越小,越优选,因此交换机会选 PID 最小的交换机的端口作为指定端口。

image-20250527195809088

  1. 非指定接口被阻塞
  • 一台交换机上,既不是根接口,又不是指定接口的接口被称为非指定接口。
  • STP 操作的最后一步是阻塞网络中的非指定接口。这一步完成后,网络中的二层环路就此消除。
  • 注意:
    • 非指定端口可以接收并处理 BPDU。
    • 根端口和指定端口既可以接收和发送 BPDU,也可以转发用户数据帧。

image-20250527195854820

例子:识别以下拓扑中的根桥及各种接口角色

image-20250527195931153

  • 如图,首先选举根桥,三台交换机的桥优先级相同,则比较桥 MAC 地址,谁小谁优先,最终选举 SW1 为根桥;
  • 其次选举根端口,SW2 上 GE0/0/1 距离根桥最近,RPC 最小,所以 SW2 的 GE0/0/1 为根端口,同理 SW3 的 GE0/0/1 也为根端口;
  • 然后选举指定端口,SW1 为根桥,所以 SW1 上的 GE0/0/0 和 GE0/0/1 端口为指定端口,SW2 的 GE0/0/2 端口接收到 SW3 的配置 BPDU,比较 BID,SW2 比 SW3 的 BID 更优,所以 SW2 的 GE0/0/2 端口为指定端口;
  • 最终非根端口,SW3 的 GE0/0/2 端口为预备端口。

例子:识别以下拓扑中的根桥及各种接口角色

image-20250527200005063

  • 如图,首先选举根桥,四台交换机的桥优先级相同,则比较桥 MAC 地址,谁小谁优先,最终选举 SW1 为根桥;
  • 其次选举根端口:
    • SW2 上 GE0/0/1 距离根桥最近,RPC 最小,所以 SW2 的 GE0/0/1 为根端口;
    • 同理 SW3 的 GE0/0/2 也为根端口;
    • SW4 的两个端口 RPC 相同,然后比较 SW4 的 G0/0/1 对应的交换机 SW2 的 BID 与 G0/0/2 对应的交换机 SW3 的 BID,谁小谁优先,最终选举出 SW4 的 GE0/0/1 端口为根端口;
  • 然后选举指定端口:
    • SW1 为根桥,所以 SW1 上的 GE0/0/0 和 GE0/0/1 端口为指定端口;
    • SW2 的 GE0/0/2 端口接收到 SW4 的配置 BPDU,比较 RPC,SW2 比 SW4 的 RPC 更小,所以 SW2 的 GE0/0/2 端口为指定端口;
    • 同理可得 SW3 的 GE0/0/1 端口为指定端口;
  • 最终非根端口,SW4 的 GE0/0/2 端口为预备端口。

例子:识别以下拓扑中的根桥及各种接口角色

image-20250527200038844

  • 如图,首先选举根桥,两台交换机的桥优先级相同,则比较桥 MAC 地址,谁小谁优先,最终选举 SW1 为根桥;
  • 其次选举根端口,SW2 上两个端口 RPC 相同,再比较两个接口对端的 BID 也相同,然后比较两个端口对端的 PID,SW2 的 G0/0/1 的对端 PID:128.1,SW2 的 G0/0/2 的对端 PID:128.2,越小越优先,所以 SW2 的 G0/0/1 为根端口;
  • 然后选举指定端口,SW1 为根桥,所以 SW1 上的 GE0/0/1 和 GE0/0/2 端口为指定端口;
  • 最终非根端口、SW2 的 GE0/0/2 端口为预备端口。

接口状态

STP 的接口状态如下表:

状态名称状态描述
禁用(Disable )该接口不能收发 BPDU,也不能收发业务数据帧,例如接口为 down
阻塞(Blocking )该接口被 STP 阻塞。处于阻塞状态的接口不能发送 BPDU,但是会持续侦听 BPDU,而且不能收发业务数据帧,也不会进行 MAC 地址学习
侦听(Listening )当接口处于该状态时,表明 STP 初步认定该接口为根接口或指定接口,但接口依然处于 STP 计算的过程中,此时接口可以收发 BPDU,但是不能收发业务数据帧,也不会进行 MAC 地址学习
学习(Learning )当接口处于该状态时,会侦听业务数据帧(但是不能转发业务数据帧),并且在收到业务数据帧后进行 MAC 地址学习
转发(Forwarding )处于该状态的接口可以正常地收发业务数据帧,也会进行 BPDU 处理。接口的角色需是根接口或指定接口才能进入转发状态

STP 的接口状态迁移如下图:

image-20250527200113629

  1. 接口初始化或激活,自动进入阻塞状态
  2. 接口被选举为根接口或指定接口,自动进入侦听状态
  3. 转发延迟计时器超时且接口依然为根接口或指定接口
  4. 接口不再是根接口或指定接口或指定状态
  5. 接口被禁用或者链路失效

STP 的拓扑变化

根桥故障

  • 在稳定的 STP 网络,非根桥会定期收到来自根桥的 BPDU 报文。
  • 如果根桥发生了故障,停止发送 BPDU,下游交换机就无法收到来自根桥的 BPDU 报文。
  • 如果下游交换机一直收不到 BPDU 报文,Max Age 计时器(缺省: 20s)就会超时,从而导致已经收到的 BPDU 报文失效,此时,非根桥会互相发送配置 BPDU,重新选举新的根桥。

根桥故障恢复过程:

image-20250528185633931

  1. SW1 根桥发生故障,停止发送 BPDU 报文。
  2. SW2 等待 Max Age 计时器(20s)超时,从而导致已经收到的 BPDU 报文失效,又接收不到根桥发送的新的 BPDU 报文,从而得知上游出现故障。
  3. 非根桥会互相发送配置 BPDU,重新选举新的根桥。
  4. 经过重新选举后,SW3 的预备端口,20s 后会从 Blocking 状态进入到 Listening 状态,再进入 Learning 状态(15s),最终进入到 Forwarding 状态(15s),进行用户流量的转发。

其中:

  • 非根桥会在 BPDU 老化之后开始根桥的重新选举。
  • 根桥故障会导致 50 s 左右的恢复时间,等于 Max Age 加上 2 倍的 Forward Delay 收敛时间。

物理链路故障

  • 当两台交换机间用两条链路互连时,其中一条是主用链路,另一条为备用链路。
  • 当网络稳定时,交换机 SW2 检测到根端口的链路发生故障(端口状态变为 Down),则其备用端口会进入用户流量转发状态。

直连链路故障恢复过程:

image-20250528185709002

当交换机 SW2 网络稳定时检测到根端口的链路发生故障,则其备用端口会经过两倍的 Forward Delay(15s)时间进入用户流量转发状态。

  • SW2 检测到直连链路物理故障后,会将预备端口转换为根端口。
  • 直连链路故障,备用端口会经过 30s 后恢复转发状态。

端口状态变化过程:

  • 备用端口会从 Blocking 状态,迁移到 Listening-Learning-Forwarding 状态。
  • 收敛时间:直连链路故障,备用端口会经过 30s 后恢复转发状态。

非物理链路故障

  • 在稳定的 STP 网络,非根桥会定期收到来自根桥的 BPDU 报文。
  • 若 SW1 与 SW2 之间的链路发生了某种故障(非物理故障),因此 SW2 一直收不到来自根桥 SW1 的 BPDU 报文,Max Age 计时器(缺省: 20 s)就会超时,从而导致已经收到的 BPDU 报文失效。
  • 此时,非根桥 SW2 会认为根桥失效,并且认为自己是根桥,从而发送自己的配置 BPDU 给 SW3,通知 SW3 自己是新的根桥。
  • SW3 收到 SW2 发来的非最优的 BPDU,会将从 SW1 收到的最优的 BPDU 转发给 SW2。
  • 因此,SW2 发现 SW3 发来的 BPDU 更优,就放弃宣称自己是根桥并重新确定端口角色。

image-20250528185833387

端口状态:

  • SW3 预备端口 20s 后会从 Blocking 状态进入到 Listening 状态,再进入 Learning 状态,最终进入到 Forwarding 状态,进行用户流量的转发。

收敛时间:

  • 非物理链路故障会导致 50s 左右的恢复时间,等于 Max Age 加上 2 倍的 Forward Delay 收敛时间。

拓扑改变导致 MAC 地址表错误

  • 在交换网络中,交换机依赖 MAC 地址表转发数据帧。缺省情况下,MAC 地址表项的老化时间是 300 秒。如果生成树拓扑发生变化,交换机转发数据的路径也会随着发生改变,此时 MAC 地址表中未及时老化掉的表项会导致数据转发错误,因此在拓扑发生变化后需要及时更新 MAC 地址表项。
  • 本例中,SW2 中的 MAC 地址表项定义了通过端口 GigabitEthernet 0/0/1 可以到达主机 A,通过端口 GigabitEthernet 0/0/3 可以到达主机 B。由于 SW3 的根端口产生故障,导致生成树拓扑重新收敛,在生成树拓扑完成收敛之后,从主机 A 到主机 B 的帧仍然不能到达目的地。这是因为 MAC 地址表项老化时间是 300 秒,主机 A 发往主机 B 的帧到达 SW2 后,SW2 会继续通过端口 GigabitEthernet 0/0/3 转发该数据帧。
  • 拓扑变化过程中,根桥通过 TCN BPDU 报文获知生成树拓扑里发生了故障。根桥生成 TC 用来通知其他交换机加速老化现有的 MAC 地址表项。

image-20250528190340957

拓扑变更以及 MAC 地址表项更新的具体过程如下:

image-20250528190624213

  • SW3 感知到网络拓扑发生变化后,会不间断地向 SW2 发送 TCN BPDU 报文。
  • SW2 收到 SW3 发来的 TCN BPDU 报文后,会把配置 BPDU 报文中的 Flags 的 TCA 位设置 1,然后发送给 SW3,告知 SW3 停止发送 TCN BPDU 报文。
  • SW2 向根桥转发 TCN BPDU 报文。
  • SW1 把配置 BPDU 报文中的 Flags 的 TC 位设置为 1 后发送,通知下游设备把 MAC 地址表项的老化时间由默认的 300 s 修改为 Forward Delay 的时间(默认为 15 s)。
  • 最多等待 15 s 之后,SW2 中的错误 MAC 地址表项会被自动清除。此后,SW2 就能重新开始 MAC 表项的学习及转发操作。

STP 的基础配置

  1. 配置生成树工作模式
[Huawei] stp mode { stp | rstp | mstp }

交换机支持 STPRSTPMSTP(Multiple Spanning Tree Protocol)三种生成树工作模式,默认情况工作在 MSTP 模式。

  1. (可选)配置根桥
[Huawei] stp root primary

配置当前设备为根桥。缺省情况下,交换机不作为任何生成树的根桥。配置后该设备优先级数值自动为 0,并且不能更改设备优先级。

  1. (可选)备份根桥
[Huawei] stp root secondary

配置当前交换机为备份根桥。缺省情况下,交换机不作为任何生成树的备份根桥。配置后该设备优先级数值为 4096,并且不能更改设备优先级。

  1. (可选)配置交换机的STP优先级
[Huawei] stp priority [priority]

缺省情况下,交换机的优先级取值是 32768

  1. (可选)配置接口路径开销
[Huawei] stp pathcost-standard { dot1d-1998 | dot1t | legacy }

配置接口路径开销计算方法。缺省情况下,路径开销值的计算方法为 IEEE 802.1tdot1t)标准方法。
同一网络内所有交换机的接口路径开销应使用相同的计算方法。

[Huawei-GigabitEthernet0/0/1] stp cost cost

设置当前接口的路径开销值。

  1. (可选)配置接口优先级
[Huawei-intf] stp priority [priority]

配置接口的优先级。缺省情况下,交换机接口的优先级取值是 128

  1. 启用 STP/RSTP/MSTP
[Huawei] stp enable

使能交换机的 STP/RSTP/MSTP 功能。缺省情况下,设备的 STP/RSTP/MSTP 功能处于启用状态。

例子:在下面三台交换机上部署 STP,以便消除网络中的二层环路。通过配置,将 SW1 指定为根桥,并使 SW3 的 GE0/0/22 接口被 STP 阻塞。

image-20250528192448663

SW1 的配置如下:

<Huawei>sys
Enter system view, return user view with Ctrl+Z.
[Huawei]sys SW1
[SW1]stp mode stp
[SW1]stp enable
[SW1]stp priority 0

SW2 的配置如下:

<Huawei>sys
Enter system view, return user view with Ctrl+Z.
[Huawei]sys SW2
[SW2]stp mode stp
[SW2]stp enable
[SW2]stp priority 4096

SW3 的配置如下:

<Huawei>sys
Enter system view, return user view with Ctrl+Z.
[Huawei]sys SW3
[SW3]stp mode stp
[SW3]stp enable

在 SW3 上查看 STP 接口状态摘要:

[SW3]display stp brief 
 MSTID  Port                        Role  STP State     Protection
   0    GigabitEthernet0/0/21       ROOT  FORWARDING      NONE
   0    GigabitEthernet0/0/22       ALTE  DISCARDING      NONE

RSTP 对 STP 的改进

STP 的不足之处

  • STP 协议虽然能够解决环路问题,但是由于网络拓扑收敛慢,影响了用户通信质量。如果网络中的拓扑结构频繁变化,网络也会随之频繁失去连通性,从而导致用户通信频繁中断,这是用户无法忍受的。
  • STP 没有细致区分接口状态和接口角色,不利于初学者学习及部署。
  • 网络协议的优劣往往取决于协议是否对各种情况加以细致区分:
    • 从用户角度来讲,Listening、Learning 和 Blocking 状态并没有区别,都同样不转发用户流量。
    • 从使用和配置角度来讲,接口之间最本质的区别并不在于接口状态,而是在于接口扮演的角色。
    • 根接口和指定接口可以都处于 Listening 状态,也可能都处于 Forwarding 状态。
  • STP 算法是被动的算法,依赖定时器等待的方式判断拓扑变化,收敛速度慢。
  • STP 算法要求在稳定的拓扑中,根桥主动发出配置 BPDU 报文,而其他设备进行处理,传遍整个 STP 网络。这也是导致拓扑收敛慢的主要原因之一。

RSTP 概述

  • IEEE 802.1w 中定义的 RSTP 可以视为 STP 的改进版本,RSTP 在许多方面对 STP 进行了优化,它的收敛速度更快,而且能够兼容 STP。
  • RSTP 引入了新的接口角色,其中替代接口的引入使得交换机在根接口失效时,能够立即获得新的路径到达根桥。备份端口作为指定端口的备份,帮助链路上的网桥快速获得到根桥的备份路径。RSTP 的状态规范根据端口是否转发用户流量和学习 MAC 地址把原来的 5 种状态缩减为 3 种。另外,RSTP 还引入了边缘接口的概念,这使得交换机连接终端设备的接口在初始化之后能够立即进入转发状态,提高了工作效率。
  • 根据 STP 的不足,RSTP 删除了 3 种端口状态,新增加了 2 种端口角色,并且把端口属性充分的按照状态和角色解耦;此外,RSTP 还增加了相应的一些增强特性和保护措施,实现网络的稳定和快速收敛。
  • RSTP 是可以与 STP 实现后向兼容的,但在实际中,并不推荐这样的做法,原因是 RSTP 会失去其快速收敛的优势,而 STP 慢速收敛的缺点会暴露出来。
  • RSTP 对 STP 的其他改进:
    • 配置 BPDU 的处理发生变化:
      • 拓扑稳定后,配置 BPDU 报文的发送方式进行了优化;
      • 使用更短的 BPDU 超时计时;
      • 对处理次等 BPDU 的方式进行了优化;
    • 配置 BPDU 格式的改变,充分利用了 STP 协议报文中的 Flag 字段,明确了接口角色。
    • RSTP 拓扑变化处理:相比于 STP 进行了优化,加速针对拓扑变更的反应速度。

端口角色

RSTP 的接口角色共有 4 种:根接口、指定接口、预备接口和备份接口,通过接口角色的增补,简化了生成树协议的理解及部署。

image-20250528190756736

  • 从配置 BPDU 报文发送角度来看:
    • 预备(Alternate)接口就是由于学习到其它网桥发送的配置 BPDU 报文而阻塞的接口。
    • 备份(Backup)接口就是由于学习到自己发送的配置 BPDU 报文而阻塞的接口。
  • 从用户流量角度来看:
    • Alternate 接口提供了从指定桥到根的另一条可切换路径,作为根接口的备份接口。
    • Backup 接口作为指定接口的备份,提供了另一条从根桥到相应网段的备份通路。

边缘端口

  • 如果指定端口位于整个域的边缘,不再与任何交换设备连接,这种端口叫做边缘端口。

image-20250528190834398

  • 在 STP 中用户终端接入交换设备端口状态由 Disabled 状态转到 Forwarding 状态需要经过状态迁移的延迟时间,那么用户在这段时间无法上网,如果网络频繁变化,用户上网状态非常不稳定,时断时续。
  • 边缘端口一般与用户终端设备直接连接,不与任何交换设备连接。边缘端口正常情况下接收不到配置 BPDU 报文,不参与 RSTP 运算,可以由 Disabled 状态直接转到 Forwarding 状态,且不经历时延,就像在端口上将 STP 禁用了一样。但是,一旦边缘端口收到配置 BPDU 报文,就丧失了边缘端口属性,成为普通 STP 端口,并重新进行生成树计算,从而引起网络震荡。

端口状态

  • RSTP 的状态规范把原来的 5 种状态缩减为 3 种。
    • 如果不转发用户流量也不学习 MAC 地址,那么接口状态就是 Discarding 状态。
    • 如果不转发用户流量但是学习 MAC 地址,那么接口状态就是 Learning 状态。
    • 如果既转发用户流量又学习 MAC 地址,那么接口状态就是 Forwarding 状态。
STP 接口状态RSTP 接口状态接口在拓扑中的角色
ForwardingForwarding包括根接口、指定接口
LearningLearning包括根接口、指定接口
ListeningDiscarding包括根接口、指定接口
BlockingDiscarding包括 Alternate 接口、Backup 接口
DisabledDiscarding包括 Disable 接口

生成树技术进阶

虽然 RSTP 在 STP 基础上进行了改进,实现了网络拓扑快速收敛。但 RSTP 和 STP 还存在同一个缺陷:由于局域网内所有的 VLAN 共享一棵生成树,因此无法在 VLAN 间实现数据流量的负载均衡,链路被阻塞后将不承载任何流量,还有可能造成部分 VLAN 的报文无法转发。

image-20250528190925563

VBST

  • 华为公司提出了 VBST(VLAN-Based Spanning Tree)生成树解决方案。该解决方案中,生成树的形成是基于 VLAN 的,不同 VLAN 间可形成相互独立的生成树,不同 VLAN 内的流量沿着各自的生成树转发,进而可实现流量的负载分担。

image-20250528190959550

  • 企业网中部署 VBST:
    • 可消除网络中可能存在的通信环路。
    • 可实现链路的复用和流量的负载分担,进而有效地提高链路带宽的利用率。
    • 配置和维护简单,进而可降低配置和维护成本。
  • 但是如果网络中 VLAN 的数量较多,为每个 VLAN 执行独立的生成树计算将耗费交换机大量的资源。

MSTP

  • 为了弥补 STP 和 RSTP 的缺陷,IEEE 于 2002 年发布的 802.1s 标准定义了 MSTP。
  • MSTP 兼容 STP 和 RSTP,既可以快速收敛,又提供了数据转发的多个冗余路径,在数据转发过程中实现 VLAN 数据的负载均衡。

image-20250528191109940

  • MSTP 把一个交换网络划分成多个域,每个域内形成多棵生成树,生成树之间彼此独立。
  • 每棵生成树叫做一个多生成树实例 MSTI(Multiple Spanning Tree Instance)。
  • 所谓生成树实例就是多个 VLAN 的集合所对应的生成树。
  • 通过将多个 VLAN 捆绑到一个实例,可以节省通信开销和资源占用率。
  • MSTP 各个实例拓扑的计算相互独立,在这些实例上可以实现负载均衡。
  • 可以把多个相同拓扑结构的 VLAN 映射到一个实例里,这些 VLAN 在接口上的转发状态取决于接口在对应实例的状态。

堆叠组网

  • 传统 STP 组网:两台汇聚交换机分别与接入层交换机构成了三角形的二层环路,网络中不得不部署 STP,而 STP 将阻塞网络中的接口,造成链路带宽无法充分利用。
  • 交换机堆叠组网:将汇聚交换机部署堆叠,形成逻辑意义上的单台设备,从而简化网络拓扑,此外,通过在汇聚交换机与接入交换机之间部署链路聚合,可将拓扑进一步简化为 “树形结构”,消除二层环路,同时充分提高链路带宽利用率。

image-20250528191402638

  • 堆叠 iStack(Intelligent Stack),是指将多台支持堆叠特性的交换机设备组合在一起,从逻辑上组合成一台整体交换设备。
  • 堆叠系统建立之前,每台交换机都是单独的实体,有自己独立的 IP 地址和 MAC 地址,对外体现为多台交换机,用户需要独立的管理所有的交换机;堆叠建立后堆叠成员对外体现为一个统一的逻辑实体,用户使用一个 IP 地址对堆叠中的所有交换机进行管理和维护,如图所示。通过交换机堆叠,可以实现网络大数据量转发和网络高可靠性,同时简化网络管理。
  • Smart Link 是一种为双上行组网量身定做的解决方案:
    • 在双向行的设备上部署,当网络正常时,两条上行链路中,一条处于活跃状态,而另一条则处于备份状态(不承载业务流量)。如此一来二层环路就此打破。
    • 当主用链路发生故障后,流量会在毫秒级的时间内迅速切换到备用链路上,保证了数据的正常转发。
    • Smart Link 配置简单,便于用户操作。
    • 无需协议报文交互,收敛速度及可靠性大大提升。

image-20250528191510636

  • 如图所示 Switch3 采用双上行方式分别连接到 FW1 和 FW2,这样 Switch3 到达上行的链路就可以有两条。在 Switch3 上配置 Smart Link,正常情况下,可实现 Port2 所在链路作为 Port1 所在链路的备份。若 Port1 所在的链路发生故障,Smart Link 会自动将数据流量切换到 Port2 所在链路,保证业务不中断。

链路聚合与堆叠

  • 随着业务的发展和园区网络规模的不断扩大,用户对于网络的带宽、可靠性要求越来越高。传统解决方案通过升级设备方式提高网络带宽,同时通过部署冗余链路并辅以 STP(Spanning Tree Protocol,生成树协议)协议实现高可靠。传统解决方案存在灵活度低、故障恢复时间长、配置复杂等缺点。
  • 本章节将介绍通过链路聚合技术与堆叠、集群技术实现网络带宽提升与高可靠性保障。

网络可靠性需求

  • 网络的可靠性指当设备或者链路出现单点或者多点故障时保证网络服务不间断的能力。
  • 网络的可靠性可以从单板、设备、链路多个层面实现。

单板可靠性

  • 框式交换机由机框、电源模块、风扇模块、主控板、交换网板(SFU)、线路板(LPU)构成。
    • 机框:为各种板卡、模块提供插槽,实现板卡间的通信。
    • 电源模块:设备的供电系统。
    • 风扇模块:设备的散热系统。
    • 主控板(MPU,Main Processing Unit):负责整个系统的控制平面和管理平面。
    • 交换网板(SFU,Switch Fabric Unit):负责整个系统的数据平面,提供高速无阻塞数据通道,实现各个业务模块之间的业务交换功能。
    • 线路板(LPU,Line Processing Unit):线路处理单元是物理设备上用于提供数据转发功能的模块,提供不同速率的光口、电口。
  • 以 S12700E-8 为例,设备提供 8 个线路板槽位、4 个交换网板槽位、2 个主控板槽位、6 个电源模块槽位、4 个风扇模块槽位。
  • 框式交换机配置多个主控板、交换网板可保证设备自身的可靠性,单个槽位的交换网板、主控板损坏不影响设备的正常运行。
  • 框式交换机的线路板损坏后,该板卡上的接口无法正常转发数据。

设备可靠性

  • 无备份:设备无冗余设计的网络中,下游交换机采用单上行接入,上行交换机的接口故障或设备故障会导致下游网络全部中断。
  • 主备备份:设备冗余设计的网络中,下游交换机双上行接入,采用链路一主一备的方式,主链路上行接口、设备故障可以切换到备份链路,通过备份设备转发。

链路可靠性

  • 为保证设备间链路可靠性,在设备间部署多条物理线路,为防止环路 STP 只保留一条链路转发流量,其余链路成为备份链路。

链路聚合基本原理

  • 设备之间存在多条链路时,由于 STP 的存在,实际只会有一条链路转发流量,设备间链路带宽无法得到提升。
  • 以太网链路聚合 Eth-Trunk:简称链路聚合,通过将多个物理接口捆绑成为一个逻辑接口,可以在不进行硬件升级的条件下,达到增加链路带宽的目的。

链路聚合基本术语

  • 聚合组(Link Aggregation Group,LAG):若干条链路捆绑在一起所形成的逻辑链路。每个聚合组唯一对应着一个逻辑接口,这个逻辑接口又被称为链路聚合接口或 Eth-Trunk 接口。
  • 成员接口和成员链路:组成 Eth-Trunk 接口的各个物理接口称为成员接口,成员接口对应的链路称为成员链路。
  • 活动接口和活动链路:活动接口又叫选中(Selected)接口,是参与数据转发的成员接口;活动接口对应的链路被称为活动链路(Active link)。
  • 非活动接口和非活动链路:又叫非选中(Unselected)接口,是不参与转发数据的成员接口;非活动接口对应的链路被称为非活动链路(Inactive link)。
  • 聚合模式:根据是否开启 LACP(Link Aggregation Control Protocol,链路聚合控制协议),链路聚合可以分为手工模式和 LACP 模式。
  • 其他概念:活动接口上限阈值和活动接口下限阈值。
  • 链路聚合接口可以作为普通的以太网接口来使用,与普通以太网接口的差别在于:转发的时候链路聚合组需要从成员接口中选择一个或多个接口来进行数据转发。
  • 一个聚合组内要求成员接口以下参数相同:
    • 接口速率
    • 双工模式
    • VLAN 配置:接口类型都是 Trunk 或者 Access,如果为 Access 接口的 default VLAN 需要一致,如果为 Trunk 接口,接口放通的 VLAN、缺省 VLAN 需要一致。

链路聚合手工模式

  • 手工模式:Eth-Trunk 的建立、成员接口的加入均由手动配置,双方系统之间不使用 LACP 进行协商。
  • 正常情况下所有链路都是活动链路,该模式下所有活动链路都参与数据的转发,平均分担流量;如果某条活动链路故障,链路聚合组自动在剩余的活动链路中平均分担流量。
  • 当聚合的两端设备中存在一个不支持 LACP 协议时,可以使用手工模式。

手工模式缺陷

  • 为了使链路聚合接口正常工作,必须保证本端链路聚合接口中所有成员接口的对端接口:
    • 属于同一设备
    • 加入同一链路聚合接口
  • 手工模式下,设备间没有报文交互,因此只能通过管理员人工确认。
  • 在上图示例中 SW1 将四个接口加入到同一个聚合接口,但是其中一个接口的对端为 SW3,而不是 SW2,导致部分流量被负载分担到 SW3,从而导致通信异常。
上次编辑于:
贡献者: stone,stonebox