链路层的作用
数据链路层的地位
- 把上层的数据进行封装
- 执行差错检测,提升传输可靠性
- 多路访问/广播型网络:寻址
信道类型
- 点对点信道:广域网
- 广播信道:局域网,需要解决信道复用(动态-竞争)和寻址
作用一:封装成帧(framing)
在一段数据的前后分别添加首部和尾部,构成一个帧
控制字符 SOH(Start Of Header),放在一帧的最前,表示帧的首部开始
控制字符 EOT(End Of Transmission)放在一阵的末尾,表示帧的结束
最大传输单元 MTU 规定了能传输的数据部分的上限。不能太大也不能太小。太小导致检测不到冲突,太大竞争到后一直传输占用信道不够高效。
最短帧长度 64 Byte 原因:早期以太网传输介质为同轴电缆 500 m, 最多四个中继器,光速 300 m/ns,导线中 200m/ns。 传统网卡速度 10 Mbps,过小无法传输到尽头导致无法检测到信道冲突
最长帧长度 1518 Byte 负载 1500 帧头 18
作用二:透明传输
如果数据帧的内容恰好与 SOH 或 EOT 一样,会导致错误的开始和结束。
字节填充法
用于异步传输,在数据的 EOT、SOH 特殊字节前填充 ESC,ESC 也可以填充在 ESC 前
零比特填充法
同步传输,比特流中的控制符是连续的多个一,在其中人为加 0
作用三:差错检测
循环冗余校验 CRC
在数据帧后加上了帧校验序列 FCS
计算举例
生成多项式:是由 x 的幂次方组成的多项式,按照幂次为序,如果有 x 的幂,则除数该为二进制为 1,否则为 0.
FCS 比除数少一位。
做除法之前需要再元数据后补比除数少一位的 0
常见生成多项式
其他校验技术
- 奇校验:增加一位校验位,使得 1 的个数为奇数
- 偶校验:增加一位校验位,使得 1 的个数为偶数
- 海明码:之前的方法只能校验,海明码还能纠错
海明码原理
- 校验位数量:2^k \gt m+k+1 决定,m 为信息码,k 为校验码
- 校验位位置:在 2 的幂次方位上
- 隐藏条件:偶校验,确定校验位数值
海明码校验示例
信息码:101101100
-
确定校验位数量
原信息码位数为 9, 带入公式得 2^k \gt k+10,解得 k = 4, 即 4 位校验码
-
确定校验位位置
校验码位置从左到右按照 2 的幂次插入原信息码,即 1、2、4、8 位,现信息共 13 位
-
校验码数值
第 n 位的数值是数据位序号转二进制后,同幂次位为 1 的数值位的值的全部异或,即偶校验。
最终传输的信息为 1110011001100
-
检错与纠错
将数据位与校验位做偶校验,结果为 1 的为有错误
两个校验位纠错的交集位为错误位
错误位取反则为正确值
便捷检错:将各校验位的偶校验结果按校验位顺序左高右低排列,所得的二进制转十进制则为错误位。
PPP 协议
广域网链路层协议,该层还有 HDLC 协议
PPP 协议简介
点对点协议,在 1994 年成为互联网正式标准
组成部分:
- 链路控制协议 LCP
- 网络控制协议 NCP
PPP 协议帧格式
- 标志字段 F:0x7e,01111110, 作为开始和结束的控制符
- 地址字符 A:设置为 0xFF,点对点单链路,实际无意义
- 控制字段 C:通常设为 0x03
- 协议字段:表明封装内容使用的协议
- FCS:16 位校验,节省带宽
- PPP 面向字节,HDLC 面向比特
透明传输
-
异步传输时使用字节填充法
转义符 0x7d, 对于 0x7d、0x7e 以及 0x20 以下的控制符号转义时需要与 0x20 做异或运算得到转义后的序列; 还原时同样与 0x20 做异或运算
-
同步传输时使用零比特填充法
控制字符 0x7e,01111110,只要数据段中出现了连续 5 个 1, 就在第六位插入零,接收端把五个连续 1 后的 0 删除
PPP 协议的工作流程
LCP 配置协商: 协商魔术字、MRU、认证协议等内容
鉴别:又称认证,可选
NCP:协商上层协议,如 ip 地址(IPCP)等
LCP 协商
正常协商
由 LCP 报文交换 e 完成能够,任意一方发送 Configure-Request 报文,如果接收方收到且参数匹配,则回复 Configure-Ack 报文确认协商成功。
接口参数
- MRU:最大接受单元,链路层配置,一般为 1500,需要双方相同
- Auth_Type = PAP,认证协议,或者为 CHAP,需要双方相同
- Magic_Num:魔术字,不能相同,用于防环路
协商不成功-参数不匹配
参数不匹配时回复 Configure-Nak 报文并携带不匹配的参数,对方修改参数后再次发送 Configure-Request 报文
协商不成功-参数不识别
参数不识别回复 Configure-Reject 报文,并携带不识别的参数,对方删除该参数后再次发送 Configure-Request 报文
PPP 认证模式
可选阶段
PAP 密码认证协议
两次握手,明文传输,暴露密码,不够安全
被认证方向认证发发送 Authenticate-Request 报文,并携带用户名和密码。认证方收到报文后比对数据库,成功回复 Authenticate-Ack 报文。
CHAP 挑战握手认证协议
三次握手,报文加密传输
认证方想被认证发发送挑战(Challenge)报文,内容 Code = 1(表示 Challenge)、ID、用户名 Name、随机数 Random
被认证方收到 Challenge 报文后,将 ID、密码、随机数拼接在一起做 MD5 哈希,发送 Response 报文,内容 Code = 2(表示 Response)、ID、用户名 Name、MD5 哈希
认证方收到 Response 报文,比对哈希是否相同,相同回复 Success 报文,内容 Code = 3(表示 Success)、ID、Message =“Welcome”
NCP 协商(IPCP 过程)
NCP 协商在数据链路上所传输的数据包的格式与类型。以常见的 IPCP 协议为例,分静态 IP 地址协商和动态 IP 地址协商,静态地址需要手动配置,可在不同网段,可用/31 掩码。
静态 IP 地址协商
双发均发送 Configure-Request 请求,携带 IP 地址,如接收方确认,没有地址冲突,回复 Configure-Ack 报文。地址可在不同网段。
动态 IP 地址协商
双方角色分为服务端和客户端。
客户端向服务端发送 Configure-Request 报文,携带 IP。
服务端收到报文后,如果地址可用,则回复 Configure-Ack 报文;否则回复 Configure-Nak 报文,并携带可用地址,客户端接收后重传 Configure-Request 请求。
最后服务端向客户端发送携带自己 ip 地址的 Configure-Request 报文,客户端确认后回复 Configure-Ack 报文,完成地址协商。
PPPoE 协议
PPP over Ethernet 以太网承载 PPP 协议,一种把 PPP 帧封装成以太网帧的协议。
集中了 PPP 和以太网的技术优点,既有以太网的组网灵活,又可以通过 PPP 协议实现认证和计费功能。
家庭宽带普遍使用 PPPoE 协议
HDLC 协议
广域网链路层协议,少用,现网多用 PPP
HDLC(高级数据链路控制)
- 面向比特的,运行在同步链路上
- 使用零比特实现透明传输
- 对帧进行编号,传输可靠性高
- 不支持 IP 地址协商和认证
HDLC 帧格式
帧标志:7E
信息帧
俗称 I 帧,承载用户数据,0 开头,捎带流量和差错控制数据
N(S)是发送序号,当前帧的序号
N(R)是接收序号,期待的下一帧的序号
监控帧
用于可靠传输,10 开头;俗称 S 帧(Supervisory),实施 ARQ(自动重传请求)机制
类型 | SS 取值 | 含义 |
---|---|---|
Receive Ready(RR) | 00 | 正响应,准备接收下一个 I 帧 |
Receive Not Ready(RNR) | 10 | 正响应,接收未准备好,暂停接收下一帧 |
Reject(REJ) | 01 | 负响应,Go-Back-N, 否认 N(R)起的所有帧 |
Selective Reject | 11 | 负响应,选择拒绝,只否认 N(R)帧 |
无编号帧
维护 HDLC 连接,11 开头,简称U帧。类型由MM和MMM表示,可定义32种附加命令和响应功能。有时也可承载数据。
ARQ机制
ARQ简介
ARQ协议,即自动重传请求(Automatic Repeat-reQuest),是OSI模型中的数据链路层和传输层纠错协议之一,利用确认和重传两个机制在不可靠服务上实现可靠传输,是一种面向连接的协议。
- 发送方在发送一段时间后没有收到确认帧,通常会重新发送
- 重传的请求是自动进行的,不需要请求发送放重传摸个出错的分组
- 包括停止等待ARQ和连续ARQ
数据链路层的HDLC协议和传输层的TCP都使用ARQ
停等ARQ
发送方一次只能发送一个分组,发送时设置计时器等待接受方收到数据后回传的确认ACK,如果可以收到,那么传输下个分组,否则重传。
分组错误、分组丢失会引发重传;确认帧丢失或迟到会引发重复帧。
帧序号表示:一位二进制,即发送过程中帧序号在1和0之间切换; M_1表示数据帧1, ACK_1表示收到数据帧1,期待发送数据帧2。
信道利用率
T_D是信道实际在传输信息的时间,RTT是往返延迟,确认延迟 T_A
- 优点:简单
- 缺点,信道利用率太低
连续ARQ
- 发送窗口发送放维持一个发送窗口,窗口内的分组被连续 发送出去
- 滑窗/发送窗口滑动:发送方每收到一个确认,就把发送窗口往下滑动一个分组的位置。
- 累积确认:接收方对按序到达的最后一个分组发送确认,表示到这个分组为止的所有都正确收到了。
流水线传输
采用流水线传输使得数据能够不间断的传输从而获得了很好的信道利用率。
数据帧表示:使用n个二进制为作为帧序号, M_3表示数据帧3, ACK_3表示到数据帧3为止,之前的帧都正确收到,期待发送数据帧4。
滑动窗口
累计确认
- 优点:容易实现,即使确认帧丢失也不会导致重传
- 缺点:不能向发送方反映出接收方已经正确接收到的所有分组信息。
回退N帧
回退N帧(Go-Back-N)GBN协议
- 发送方受到ACK前可以同时连续发送多个分组
- 最大发送窗口为序列号窗口-1,即\le 2^n-1,n表示帧编号的二进制位数。如,使用3位二进制表示帧序号,序列号窗口为 2^3=8 , 最大发送窗口为7。即窗口内最多有7个分组。为什么是少一位:防止0帧重传时被认为是下一个窗口的0帧,以免被覆盖。
- 接收方窗口为1
- ACK是累计的,可以方式ACK帧丢失。
选择重传
回退N帧可能由于中间某一帧丢失而重传过多的帧,造成大量资源浪费。选择重传(Selective Repeat,SR)可以只重传某一帧。
- 发送窗口与接收窗口大小一致
- 最大窗口是序列号窗口的一半。即\le 2^{n-1},n表示帧编号的二进制位。**为什么是一半:**防止某些帧重传时被认为是下一个窗口的帧,且ACK是非累计的,极端情况为前半部分发送的帧全部丢失,后半部分的窗口都用于重传。故最大为一半才能保证可靠传输。
- 接受窗口允许存储失序分组,直到成为连续分组。
- 确认号是非累积的,只确认本帧。
超时重传时间RTO
- 不能太短,否则还没传到或者拥塞就导致不必要的重传,浪费资源增大网络负荷。
- 不能太长,否则会导致空闲时间增大降低传输效率。
- 主要参考往返i时间按RTT,i称之为加权平均往返时间。
确定RTT
其中0\le \alpha \lt 1。
RTT_s是测速得出的样本。
\alpha \rightarrow 0表示RTT更新较慢, \alpha \rightarrow 1表示RTT更新较快。
RFC 6298 推荐的\alpha 为1/8 ,即0.125。主要参考旧数据。
确定RTO
-
RTO(Retransmission Time-Out)应该略大于加权平均往返时间RTT_s
-
RFC 6298 建议RTO:
RTO=RTT_s +4\times RTT_D其中RTT_D是RTT偏差的加权平均值。
-
RFC 6298建议:
新的RTT_D=(1-\beta)\times(旧的RTT_D)+\beta\times |RTT_s-新的RTT样本|其中\beta \lt 1,推荐值为1/4,即0.25。主要参考旧数据。
CSMA/CD协议
局域网协议
传统局域网拓扑结构
- 总线型
- 星型
- 环型
传统局域网工作机制
采用广播通信方式。
寻址问题
为了实现一对一通讯,将硬件地址(MAC地址)写入到帧首部的目的地址中,只有接受方地址与目的地址一直才能接收。
共享信道问题
多个设备在共享的广播信道中同时发送数据会造成干扰和冲突。
媒体共享技术
静态划分信道:
- 频分复用
- 时分复用
- 波分复用
- 码分复用
同台媒体接入控制(多点接入):
- 随机接入:用户段随机的发送信息
- 受控接入:服从一定的控制,例如轮询(令牌环网)
CSMA/CD协议的要点
CSMA/CD(Carrier Sense Multiple Access with Collision Detection):载波侦听多点接入/碰撞检测,简称载波侦听冲突检测。
载波侦听:不管发送前还是发送中,都要不断的检测信道。
多点接入:总线网,多个设备连接在一根总线上。
碰撞检测:边发送边检测,如果信道上的电压变化超过一定阈值时,认为有多个节点在发送数据,产生了碰撞。
无线网:CSMA/CA,载波侦听冲突避免
CSMA/CD的工作流程
先听后发,边发边听,碰撞停止,随机延发。
随机延发的原因:防止等待同样时间后再次碰撞。
为什么要碰撞检测?
发送后还没到达其他节点而导致对方认为信道空闲发送数据,造成冲突。在略小于往返延迟的时间内可能造成冲突。
碰撞后重传的时机
采用截断二进制指数退避算法。
-
基本退避时间2\tau
-
从整数集合[0,1,2,4,..., 2^k-1]中随机的取一个数,记为 r
重传时延=r \times 基本退避时间 -
参数k = Min[重传/碰撞次数,10]
-
重传次数达到16次时丢弃该帧,并报告
10Mbit/s 以太网争用期的长度
规定长度为51.2\mu s 。
争用期内可发送512bit, 即64字节。
以太网最短有效帧长为64字节,小于64字节的帧都丢弃。
以太网MAC层
媒体访问控制(MAC)
MAC的硬件地址
又被称为物理地址或MAC地址
IEEE 802标准规定了局域网使用48位全球地址。
写入在设备的硬件ROM中, 无法修改硬件。
EUI-48格式:
组织唯一标识符(OUI,Organizationally Unique Identifier) | 设备唯一标识符(Network Interface Controller,简称NIC)/扩展标识符 |
---|---|
3字节(24位) | 3字节(24位) |
MAC地址特殊位含义
- IEEE 规定地址字段的第1字节的最低位为I/G位,用于判断单播还是组播。
- 单播地址I/G位=0
- 组地址I/G位=1,组地址用于多播。
- 广播地址,所有48位地址都为1,只能作为目的地址使用。
- IEEE 规定第一字节倒数第二位规定为G/L位,用于判断全球管理还是本地管理。
- G/L=0,表示全球管理,厂商 向IEEE购买的OUI都是全球管理。
- G/L=1, 表示本地管理,可以随意分配。
适配器(网卡)
适配器具有过滤功能。
- 每收到一个MAC帧,先检查其中的MAC地址。
- 如果是本站/本节点的则收下,否则丢弃。
发往本站的帧包括:
- 单帧(unicast):一对一
- 广播(broadcat):一对全体
- 多播(multicast):一对多
以混杂方式(promiscuous mode)工作的i以太网适配器只要有帧就都接受。
MAC帧的格式
两种标准:
- DIX Ethernet V2
- IEEE 802.3
常用的是DIX 以太网V2,只用STP的BPDU报文、GVRP、IS-IS路由协议的帧使用802.3封装2层帧。
DIX Ethernet V2的帧格式
类型:标识上层的协议。
数据段小于46字节时,在数据段尾部填充整数字节的数据,保证不小于64字节。
数据段最大1500字节,所以MAC帧最大1518字节。抓包只能看到1514字节是因为接收后已经完成CRC校验去掉了4字节的FCS。
IEEE 802.3 的帧格式
Ethernet II 和802.3有兼容机制,其中的Type/length字段作用不同。
- 以太网V2(Ethernet II)
使用 类型字段(Type Field)(2字节),直接标识上层协议(如IPv4为0x0800
,IPv6为0x86DD
)。- 值范围:固定为
≥ 0x0600
(十进制1536),通过该值范围区分类型字段。
- 值范围:固定为
- 802.3 MAC帧
使用 长度字段(Length Field)(2字节),表示数据部分的字节数(范围0~1500)。- 值范围:
≤ 1500
,通过该值范围区分长度字段。 - 上层协议标识:需通过额外的LLC(逻辑链路控制)头或SNAP(子网接入协议)头完成。
- 值范围:
常见报文类型值
- ipv4报文:0x0800
- ipv6报文:0x86DD
- ARP报文:0x0806
- 802.1Q:0x8100
- PPPoE:0x8863/0x8864
- MPLS label: 0x8847/0x8848(多协议标签交换)
无效的MAC帧
- 数段段长度与长度字段值不一致
- 帧长度不是整数字节
- 根据FCS进行CRC校验出错
- 数据字段长度不在46~1500字节之间
无效的帧立即丢弃,不重传。
以太网类型
使用集线器(Hub)的以太网
碰撞域又称冲突域,指网络中的一个站点发出的帧会与其他站点发出的帧产生碰撞或冲突的那部分网络。
共享带宽、半双工通讯。安全性不高
物理层设备。
使用集线器的好处:组网更灵活,增减设备时不会对其他设备造成影响,无需断网。
使用网桥(Bridge)的以太网
链路层设备,可以分隔冲突域,根据MAC地址的目的地址对帧进行转发、过滤(丢弃)
使用交换机(Switch)的以太网
链路层设备,实质上是一个多接口网桥。
每个接口都与PC或者另一台交换机相连,一般工作在全双工模式。
互相通信的媒体都独占传输媒体,无碰撞的传输数据,故碰撞域为pc到pc连接的端口。
大大提升网络效率,可以独占带宽。
交换机的特点:
- 接口有存储器,可以缓存数据
- 即插即用,mac表自动学习建立
- 专用的交换芯片,硬件转发,比用软件转发的网桥快很多
- 用户独享带宽,增加了总容量
交换机的交换方式
存储转发
- 把数据帧先缓存再处理
直通方式(cut-through)
- 根据帧的目的mac直接转发到相应的端口
- 缺点:没有进行差错检测,有可能转发无效帧
交换机的工作过程
- 基于源MAC学习和维护MAC地址表
- 基于目的MAC处理数据帧:转发、广播、丢弃
交换机内维护着这样一个MAC地址表:
MAC地址 | Port |
---|---|
MAC1 | GE0/0/1 |
MAC2 | GE0/0/2 |
…… | …… |
- 当收到一个MAC帧时,会读取其源地址,更新地址表将该MAC地址与端口绑定,并且以最新的对应关系覆盖。维持一段时间过后删除该记录,释放mac表空间。
- 读取帧目的地址并查表,如果表内有记录,则转发至对应a端口。
- 如果读取的目的地址在表内没有查询到或者为广播帧,则广播到除来源端口外的所有端口。
- 如果目的端口是来源端口,则丢弃该帧。
MAC地址表攻击
原理
- 攻击者发送大量的伪造数据帧,并且源MAC随机生产
- 交换机MAC地址表被恶意写满
- 无法学习合法主机的MAC地址
- 未知单播帧被广播处理,主机之间通信被攻击者窃听。
交换机被攻击后相当于HUB,只有广播功能。
防御手段
interface GigabitEthernet0/0/3
port link-type access
port default vlan 10
port-security enable //启用端口安全,限制该端口学习MAC地址的数量
port-security max-mac-num max-number 10 //允许学习10个,默认为1
port-security protect-action shutdown //违规惩罚动作-关闭该端口
常见以太网类型汇总
40G/100G以太网:802.3ba
代号意义解释:
- 100/1000/10 G 速率
- BASE:基带
- T/F:双绞线/光纤
- S/L/E:短距/长距/超长距
VLAN虚拟局域网
广播域规模过大,需要划分vlan或者i使用路由器
VLAN简介
VLAN(Virtual Local Area network)虚拟局域网,是一个将物理的LAN在逻辑上划分成多个广播域的通信技术。
- 限制广播域
- 增强安全性
- 提高网络健壮性
- 灵活构建虚拟工作组
VLAN标签
每个vlan都用唯一的vlan标签来标识。也称VLAN tag 或者802.1 Q Tag。
TPID:上层数据的类型,一般为0x8100
PRI:优先级
CFI:标准格式指示位,0标识标准
VID:vlan id,0-4095,0和4095不用
接口的链路类型
交换机内部处理的数据帧一律都带有VLAN标签
华为定义了4种接口类型:Access、Trunk、Hybrid(华为特有)和QinQ
交换机内部默认 VLAN为1
Access:接入,接终端PC,只允许单个标签
Trunk:干道,交换机之间连接,允许多个标签
Hybrid:多个VLAN
缺省VLAN
又称PVID(Port Default Vlan ID),每当交换机接受到Untagged帧时,就会给其添加PVID。
每个接口都有PVID,默认为VLAN 1
VLAN标签的添加和剥除
ACCESS端口
接收过程:
- 没有tag,则根据本端口PVID添加
- 有tag, 如果与PVID相同则放行,不同则丢弃
发送过程:
- 先剥离PVID tag再发送
Trunk端口
接收过程:
- 无tag,则添加本接口PVID tag,当PIVD在允许通过的id表内时放行,否则丢弃
- 有tag, 当该数据VLAN在允许通过的id表内时放行,否则丢弃
发送过程:
- 如果帧VID与接口PVID一致,则剥离后发送
- 如果帧VID与接口PVID不一致,且允许通过,则直接发送;否则丢弃
Hybrid接口
接收过程:
- 无tag,则添加本接口PVID tag,当PIVD在允许通过的id表内时放行,否则丢弃
- 有tag, 当该数据VLAN在允许通过的id表内时放行,否则丢弃
发送过程:
- 如果允许通过,根据命令配置设置发送时是否携带vlan tag
- 如果不允许则直接丢弃
VLAN划分方式
可以基于端口、MAC地址、子网、网络层协议、匹配策略等方式来划分VLAN
如果入方向的Untagged帧同时匹配多种划分VLAN方式,优先级从高到底为:
- 基于匹配策略
- 基于MAC地址或子网
- 基于协议
- 基于接口
基于接口优先级最低但是最常用
VLAN基础配置
# 创建VLAN
[SW1] vlan 10
[SW1-vlan10] quit
[SW1] vlan 20
[SW1-vlan20] quit
## 批量创建
[SW2] vlan batch 10 20
# 配置Access口并加入对应VLAN
## 在端口中配置所属valn
[SW1] interface GigabitEthernet 0/0/1
[SW1-GigabitEthernet0/0/1] port link-type access
[SW1-GigabitEthernet0/0/1] port default vlan 10
## 在Vlan中配置包含端口
[SW1] interface GigabitEthernet 0/0/2
[SW1-GigabitEthernet0/0/2] port link-type access
[SW1] vlan 20
[SW1-vlan20] port GigabitEthernet0/0/2
[SW1-vlan20] quit
# SW2配置略
# 配置Trunk接口,并创建对应的允许通过列表
[SW1] interface GigabitEthernet 0/0/3
[SW1-GigabitEthernet0/0/3] port link-type trunk
[SW1-GigabitEthernet0/0/3] port trunk pvid vlan 1 # 可省略,默认为1
[SW1-GigabitEthernet0/0/3] port trunk allow-pass vlan 10 20
# SW2配置略
VLAN间通讯
划分vlan后不同vlan间无法通讯,需要借助三层设备才能联通。
三层交换vlanif
在交换机上配置vlanif三层接口,作为网关来实现通讯。需要三层交换机。直连路由直接转发。
# 创建vlan并分配端口
[SW1]vlan batch 10 20
[SW1] interface GigabitEthernet 0/0/1
[SW1-GigabitEthernet0/0/1] port link-type access
[SW1-GigabitEthernet0/0/1] port default vlan 10
[SW1] interface GigabitEthernet 0/0/2
[SW1-GigabitEthernet0/0/2] port link-type access
[SW1-GigabitEthernet0/0/2] port default vlan 20
# 配置vlanif接口
[SW1]interface Vlanif 10
[SW1-Vlanif10]ip address 192.168.10.254 24
[SW1]interface Vlanif 20
[SW1-Vlanif20]ip address 192.168.20.254 24
单臂路由
二层交换机加路由器实现通讯。将路由器和交换机的一条物理链路分为两条逻辑链路来进行通讯。
[R1]interface GigabitEthernet0/0/1.10
[R1-GigabitEthernet0/0/1.10]dot1q termination vid 10 # 封装vlan id
[R1-GigabitEthernet0/0/1.10]ip address 192.168.10.254 24
[R1-GigabitEthernet0/0/1.10]arp broadcast enable # 子接口默认关闭arp广播,需要开启来形成mac地址与ip地址的映射表
[R1]interface GigabitEthernet0/0/1.20
[R1-GigabitEthernet0/0/1.20]dot1q termination vid 20
[R1-GigabitEthernet0/0/1.20]ip address 192.168.20.254 24
[R1-GigabitEthernet0/0/1.20]arp broadcast enable
SW1配置略
VLAN高级应用
一般三层交换机中,一个vlan对应一个三层接口,即,一个vlan需要一个ip。这样需要划分很多子网,浪费ip资源。
VLAN聚合
也称 Super VLAN技术。使用多个vlan隔离广播域,但是不同vlan在一个子网中。
- super-vlan:只建立三层端口
- sub-vlan:只包含物理端口
建立super-vlan,只为它分配一个ip。再建立多个子vlan,子vlan的网关指向super-vlan。
同网段直接通讯,不同网段路由通讯。但是现在子vlan之间无法通讯。还需要在super-vlan设备上开启arp代理。
# 创建Super-VLAN,并将Sub-VLAN加入Super-VLAN
[PE] vlan batch 2 to 4 10 # 创建了2、3、4、10一共4个vlan
[PE] vlan 10 # 设置为超级vlan
[PE-vlan10] aggregate-vlan
[PE-vlan10] access-vlan 2 to 4 # 添加子vlan
[PE-vlan10] quit
# 创建Super-VLAN对应的VLANIF接口,并配置IP地址
[PE] interface vlanif 10
[PE-Vlanif10] ip address 1.1.1.1 24 # 配置网关
#使能VLAN间ARP代理功能,使得vlan之间相互通讯
[PE-vlanif10]arp-proxy inter-sub-vlan-proxy enabl
MUX VLAN
MUX VLAN(Multiplex Vlan)提供了一种通过vlan 进行网络资源控制的机制。分为Principal VLAN(主vlan)和Subordinate VLAN(从vlan) ,从vlan又分为Separate VLAN(隔离型VLAN)和Group VLAN(组VLAN、互通型vlan) 。
主从vlan都可包含物理接口。
从vlan都可以跟主vlan通讯,组vlan之间可以通讯,隔离型vlan之间不能通讯,隔离型vlan与组vlan之间也不能通讯。
配置MUX VLAN,将VLAN2配置成主VLAN,VLAN3配置成互通型从vlan ,vlan4配置成隔离型vlan
[DeviceA] vlan batch 2 3 4
[DeviceA] vlan 2
[DeviceA-vlan2] mux-vlan
[DeviceA-vlan2] subordinate group 3
[DeviceA-vlan2] subordinate separate 4
配置接口加入vlan,并在接口下打开mux vlan功能 ,开启arp代理
[DeviceA] interface 10ge 1/0/1 # 万兆接口
[DeviceA-10GE1/0/1] port link-type access
[DeviceA-10GE1/0/1] port default vlan 2
[DeviceA-10GE1/0/1] port mux-vlan enable vlan 2 # 开启mux vlan, 把vlan2作为主vlan
[DeviceA] interface Vlanif2
[DeviceA-Vlanif2] ip address 192.168.2.1 255.255.255.0
[DeviceA-Vlanif2]arp-proxy inner-sub-vlan-proxy enable /vlan内ARP代理
[DeviceA-Vlanif2]arp-proxy inter-sub-vlan-proxy enable /vlan间ARP代理
QinQ
QinQ(802.1Q in 802.1Q) 技术是一项扩展vlan空间的技术,也叫做VLAN sracking 或者Double Vlan 。分为基本QinQ和灵活QinQ。
基本QinQ:对于同一接入口的帧全部使用一个vlan id
灵活QinQ:同一接入口按情况使用不同vlan id
实现大二层功能。主要用于运营商。
基本QinQ配置
# 在PE1上创建VLAN3和VLAN4
[PE1] vlan batch 3 4 #PE设备 ,提供商边缘设备
# 在PE1上配置接口10GE1/0/1、10GE1/0/2的类型为QinQ
[PE1] interface 10ge 1/0/1
[PE1-10GE1/0/1] port link-type dot1q-tunnel #
第四种类型
[PE1-10GE1/0/1] port default vlan 3
[PE1-10GE1/0/1] quit
[PE1] interface 10ge 1/0/2
[PE1-10GE1/0/2] port link-type dot1q-tunnel
[PE1-10GE1/0/2] port default vlan 4
[PE1-10GE1/0/2] quit
VLAN内部二层隔离
华为提供了如端口隔离、MUX vlan和基于流策略的vlan内二层隔离等。端口隔离最常用。
- 端口隔离可实现同一VLAN内端口之间的隔离。用户只需要将端口加入到隔离组中,就可以实现隔离组内端口之间的二层隔离
- MUX VLAN(Multiplex VLAN)提供了一种通过VLAN进行网络资源控制的机制。它既可实 现VLAN间用户通信,也可实现VLAN内的用户相互隔离。
- 基于流策略(MQC)的VLAN内二层隔离指用户可以根据匹配规则对报文进行流分类,然后通过 流策略将流分类与permit/deny动作相关联,使符合流分类的报文被允许或被禁止通过,从而 实现灵活的VLAN内单向或双向隔离
端口隔离配置
# 配置vlan 2中的确1口与2口二层隔离
[Switch] vlan batch 2
[Switch] interface gigabitethernet 0/0/1
[Switch-GigabitEthernet0/0/1] port-isolate enable # 开启端口隔离,默认group 1 相同组内隔离,不同组不隔离
[Switch-GigabitEthernet0/0/1] port link-type access
[Switch-GigabitEthernet0/0/1] port default vlan 2
[Switch] interface gigabitethernet 0/0/2
[Switch-GigabitEthernet0/0/2] port-isolate enable
[Switch-GigabitEthernet0/0/2] port link-type access
[Switch-GigabitEthernet0/0/2] port default vlan 2
# 配置vlanif 2接口ARP代理实现三层互通
[Switch] interface vlanif 2
[Switch-Vlanif2] ip address 192.168.2.1 255.255.255.0
[Switch-Vlanif2]arp-proxy inner-sub-vlan-proxy enable
GVRP协议
GARP(Generic Attribute Registration Protocol),通用属性注册协议,GARP作为一个属性注册协议的载体,可以用来传播属性。
GVRP(Generic VLAN Registration Protocol)是GARP的一种应用,用于注册和注销vlan属性。
GVRP特性使得不同设备上的VLAN信息可以由协议动态维护和更新,用户只需要对少数设备进行VLAN配置 即可应用到整个交换网络。如图所示所有设备都使能GVRP功能,设备之间相连的端口均为Trunk端口,并允 许所有VLAN通过。只需在SWA和SWC上分别手工配置静态VLAN100~VLAN1000,设备SWB就可以通过 GVRP协议学习到这些VLAN,最后各设备上都存在VLAN100~1000。
GVRP的目的是为了放行某些VLAN,而不是为了在本地添加成员端口。
三种注册模式
手工配置的称之为静态vlan,通过GVRP创建的称为动态vlan 。
- Normal模式:允许动态vlan在端口上注册,同时发送静态vlan和动态vlan声明消息。
- Fixed模式:不允许动态vlan在端口上注册,只发送静态vlan声明消息。
- Forbidden模式:不允许动态vlan注册,同时删除端口上除vlan1之外所有的vlan,只发送vlan1的声明消息
一般配置举例
# SWA与SWC的配置
vlan batch 100 to 1000
gvrp # 全局开启
interface GigabitEthernet0/0/1
port link-type trunk
port trunk allow-pass vlan 2 to 4094
gvrp # 接口开启
# SWB配置
gvrp
interface GigabitEthernet0/0/1
port link-type trunk
port trunk allow-pass vlan 2 to 4094
gvrp
interface GigabitEthernet0/0/2
port link-type trunk
port trunk allow-pass vlan 2 to 4094
gvrp
VXLAN
VXLAN(Virtual eXtensible Local Area Network, 虚拟扩展局域网)。采用MAC in UDP封装方式,是NVO3(Network Virtualization over Layer 3)中的一种网络虚拟化技术。
也是大二层技术,数据中心多用。
通过vxlan,虚拟网络接入大量租户,租户 可以规划自己的虚拟网络,不需要考虑物理网络ip地址和广播域限制。
常见配置方式:静态VXLAN、动态VXLAN(BGP EVPN)
VXLAN基本概念
- 网络标识 VNI:类似于VLAN ID, 用于区分VXLAN段,不同段租户不能进行二层通讯。一个租户 可以有的多个vni。VNI有24bit支撑,支持多达16M租户。
- 广播域BD:类似于VLAN划分广播域,VXLAN中通过BD划分广播域。VNI以1 : 1的方式映射把广播域BD,一个BD代表一个广播域,同个BD内的主机可以进行二层通讯。
- VXLAN隧道端点VTEP
- 虚拟接入点VAP
- 网络n虚拟边缘NVE
VXLAN报文封装
原始报文在封装过程中先被添加一个VXLAN帧头,再被封装在UDP报头中,并使用承载网络的IP、 MAC地址作为外层头进行封装。
STP生成树协议
交换机工作过程:通过收到帧的源地址学习成mac表,读取目的地址进行转发、广播、丢弃。
在交换机环路广播时,报文会一直广播不会被丢弃,而且会以端口数指数增长,造成交换机端口指示灯爆闪,形成广播风暴耗尽交换机所有资源。造成mac 地址表“震荡”,不断删除上一条 mac 地址学习记录,网络内无法通信。
生成树协议的作用:
- 通过阻断冗余链路来消除桥接网络中可能存在的路径回环,将有环的网络拓扑转变为无环的树。
- 当前路径发生故障时,激活冗余备份链路,恢复网络连通性
生成树的分类
STP
802.1D ,传统生成树协议,收敛慢。
RSTP
802.1W ,快速生成树协议,收敛快。
MSTP
802.1S ,多生成树协议,除了快,还能vlan负载均衡。
BPDU报文
桥协议报文
BPDU被封装在802.3帧中 ,目的MAC是组播MAC:01-80-C2-00-00-00 。
- 配置BPDU:用于生成树的计算和维护
- TCN BPDU:拓扑变化通知BPDU,在网络拓扑发生变化时,用来通知相关设备的报文。
交换机本质上是多端口网桥。
各台设备的各个端口在初始时生成以自己为根桥的配置消息,向外发送自己的配置消息(BPDU)。
- Root Identifier:根ID,当前的根桥BID,由桥优先级和MAC地址组成,优先级默认为16位(0-65535)的中间值32768 。后十二位为0, 必须为4096的倍数。
- Root Path Cost:根路径开销,当前位置到达根桥的开销,越小越优。
- Bridge Identifier:本交换设备BID
- Port Identifier:发送该BPDU的端口ID,由端口优先级和端口编号组成。优先级默认为8位(0-255)的中间值128。
- Message Age:BPDU报文生存时间,每经过一个节点+1
- MAX Age:最大生存时间,一般为20
- Hello Time:BPDU报文的发送间隔,默认2s
- forward Delay:转发延迟,15s
STP根桥、根端口、指定端口选举规则
选举完根桥、根端口、指定端口后,将剩余端口阻塞,接触环路。
根桥选举规则
所有交换机中选取一个根交换机。
- 先比优先级,优先级小者为根
- 再比MAC地址,MAC地址小者为根
根端口(RP)选举规则
每个非根交换机选一个根端口。
- 先比根路径开销(RPC),小者为根端口
- 再比对端桥ID,小者为根端口(端口另一头连接的交换机ID)
- 再比对端端口ID ,小者为根端口
- 再比本端端口ID ,小者为根端口
指定端口(DP)选举规则
每个物理二层链路选一个指定端口。(每根网线中选一个)
- 先比更路径开销(RPC),小者为指定端口
- 再比桥ID,小者为指定端口
- 再比端口ID, 小者为指定端口
接口的状态迁移
- 接口初始化或激活,自动进入阻塞状态
- 接口被选举为根接口或指定接口,自动进入侦听状态
- 转发延迟计时器超时且接口依然为根接口或指定接口
- 接口不再是根接口或指定接口或指定状态
- 接口被禁用或者链路失效
阻塞状态可以接受BPDU
侦听状态可以接受和发送BPDU,等待15 s
学习状态可以接受发送BPDU和学习mac地址,等待15 s
收敛速度:
- 直接收敛 30s
- 间接收敛 50s:根端口链路失效,等待20 s后启用阻塞端口,再进行直接收敛
快速生成树协议 RSTP
Alternate端口为根端口备份、Backup端口为指定端口备份。
状态减少为转发、学习、阻塞三个状态。
RST BPDU 发送周期为 2s(一个 HelloTime),老化时间为三个 HelloTime 时长
阻塞端口立即对收到的低优先级 RST BPDU 做出回应
快速收敛机制:
- 边缘端口机制
- 根端口快速切换机制(alternate端口)
- 指定端口快 速切换机制
指定端口快速切换:
- Proposal/Agreement 机制:使指定端口快速进入到转发状态;主动发送P报文,让下方设备端口阻塞为无环,回复A报文。下方设备再次递归发送P报文。没有收到A报文时等待30s。
- 与相连网桥进行一次握手
- 协商前提为点到点链路(一对一)
边缘端口:
- 网桥上直接和终端相连的端口,不参与生成树计算
- 可直接进入转发状态,无时延、不改变拓扑
- 收到 BPDU 后转为非边缘端口
收敛速度:1~2 s
RSTP保护功能
- BPDU保护:如果边缘端口受到RST BPDU,边缘端口被error-down,但是边缘端口属性不变,同时通知网管系统。
- 根保护:由于错误配置或恶意攻击,可能导致合法根桥受到优先级更高的RST BPDU,重新进行生成树计算,导致网络震荡。根保护只能在指定端口上配置生效。
MSTP多生成树
STP/MSTP 的局限:
- 所有 Vlan 共享一棵生成树
- 无法实现不同 Vlan 在多条 Trunk 链路上的负载分担
- 二层链路负载均衡
- 次优二层路径
MST 域:
- CST:外部生成树
- IST:内部生成树
- CIST:内部-外部生成树
- 域根
- 总根:域根通过 CST 选出总根
Master 端口:IST 跟桥在 CIST 上的根端口
# 公共配置
vlan batch 11 to 40
interface GigabitEthernet0/0/1
port link-type trunk
port trunk allow-pass vlan 2 to 4094
interface GigabitEthernet0/0/2
port link-type trunk
port trunk allow-pass vlan 2 to 4094
# 配置mstp
stp mode mstp # 华为设备默认为mstp模式
stp region-configuration # 配置域
region-name test
instance 1 vlan 11 to 20
instance 2 vlan 21 to 30
instance 3 vlan 31 to 40
active region-configuration
# 专有配置
[Lsw1]stp instance 1 root primary
[Lsw2]stp instance 2 root primary
[Lsw3]stp instance 3 root primar
评论区