二层基础
部分缩写
Abbreviations | Full spelling | 中文解释 |
---|---|---|
CSMA/CD | Carrier Sense Multiple Access with Collision Detection | 带有冲突监测的载波侦听多址访问 |
POE | Power Over Ethernet | 以太网供电 |
L2FDB | Layer 2 Forwarding Database | 二层转发表 |
MAC | Media Access Control | 媒体访问控制 |
VLAN | Virtual Local Area Network | 虚拟局域网 |
IVL | Independent VLAN Learning | 非广播多路访问 |
SVL | Sharing VLAN Learning | 点到多点 |
MRP | Multiple Registration Protocol | 指定路由器 |
MVRP | Multiple VLAN Registration Protocol | 备份指定路由器 |
VPN | Virtual Private Network | 区域边界路由器 |
QinQ | 802.1Q in 802.1Q | 简单的二层VPN协议 |
TPID | Tag Protocol Identifier | 标签协议标识符 |
CFI | Canonical Format Indicator | 标准格式指示位 |
DUT | Device Under Test | 被测设备 |
SUT | System Under Test | 被测系统 |
LLDP | Link Layer Discovery Protocal | 链路层发现协议 |
LACP | Link Aggregation Control Protocal | 链路聚合控制协议 |
LACPDU | LACP Data Unit | 链路聚合控制协议数据单元 |
IRF | Intelligent Resilient Framework | 智能弹性架构 |
MAD | Multi-Active Detection | 多Active检测 |
BFD | Bidirectional Forwarding Detection | 双向转发检测 |
ND | Neighbor Discovery | 邻居发现 |
以太网基础
CSMA/CD
在CSMA/CD方式下,在一个时间段,只有一个节点能够在导线上传送数据。如果其他节点想传送数据,必须等到正在传输的节点的数据传输结束后才能开始传输数据。以太网之所以称作共享介质就是因为节点共享同一根导线。
冲突域和广播域
冲突域:连接在同一个导线上所有工作站的集合,即与另一个节点有可能产生冲突的所有工作站倍看作是同一个物理网段。
广播域:所有能够接收其他广播的节点被划分为同一个逻辑网段。
冲突域针对曾经网络中很常用的设备Hub,Hub工作在网络第一层物理层,而交换机工作在第二层链路层,使用Switch替代Hub解决该问题。
广播域针对二层广播报文泛滥。
RAW802.3帧格式
前导字段 | 帧起始符 | DMAC | SMAC | Length | Data | FCS |
---|---|---|---|---|---|---|
7字节 | 1字节 | 6字节 | 6字节 | 2字节 | 46-1500字节 | 4字节 |
-
前导字段:每个帧以7个字节的前导字段开头,以0、1间隔代码组成,用以通知目标端作好接收准备(1010101010101010101010110101010101010101010101010101010)帧起始符:紧跟前导字段,值为10101011,最后两位11”表示帧的实际开始。前导字段与起始符由物理设备自动加上用以同步两台通讯的设备,所以对端接收到的数据并不包含这两个字段,故帧长计算与帧校验也不包含这两个字段。
-
Length:数据字段的长度,记录其后一字段Data的实际长度。
-
Data:数据字段,存放帧数据。在802.3中规定了一个帧的最小长度为64字节,帧长计算方法如下:
帧长 = DMA + SMC + Length + Data + FCS
其中DMAC、SMAC、 Length、FCS的和为18字节,所以Data字段的最小长度为6418=46字节。
若帧长确实小于64字节,则发送端会自动在Data字段中填充0直到帧长等于64字节为止。
EthernetII帧格式
前导字段 | DMAC | SMAC | Type | Data | FCS |
---|---|---|---|---|---|
8字节 | 6字节 | 6字节 | 2字节 | 46-1500字节 | 4字节 |
Ethernetll与802.3帧格式相近,区别在于 Ethernetll没有帧起始符,而前导字段占据了8个字节,作用与802.3中前导字段+帧起始符功能一致,都是实现两台设备的通讯同步。另一个区别在于802.3的Length字段由Type字段代替,用以表明该帧的协议类型。这是因为 Ethernetll帧支持多种协议类型,而RAW802.3帧仅支持一种。
802.3与Ethernet II的异同
为方便802.3与 Ethernetll两种帧格式可以同时在网络中使用,人们规定802.3和 Ethernetl中Data字段的最大长度必须小于1500字节,也就是说802.3中 Length字段的值必定是小于1500的。同时 Ethernetll又规定了中协议类型从数字1536(0x0600)开始分配,这样只要Type或 Length字段的值小于1536那就说明这是一个802.3帧,值大于1536则证明其是一个 Ethernetil帧。
在使用中Ethernet II较802.3更适合传输大量的数据,而802.3的优势在于其具备严格的传输控制。所以大多数应用的以太网数据包使用 Ethernet II(HTTP、FTP、SMTP、POP3等),而交换机之间的BPDU数据包、思科的发现协议则是使用802.3的帧格式。
二层交换机转发处理流程
- 查MAC转发表(即L2FDB)处理转发
- 对于表中不存在的地址,通过广播的方式查找MAC转发
- 使用地址自动学习(根据以太网帧的源MAC)和老化机制进行地址表维护
- 一般不对帧格式修改
MAC地址表
MAC地址表记录MAC地址和对应的接口,一般有MAC地址、VLAN ID、State、Port、Aging。设备转发报文根据MAC地址查询MAC地址表。 单播地址:第一个直接最低位为0,如00-E0-FC-00-00-06 多播地址:第一个直接最低位为1,如01-E0-FC-00-00-06 广播地址:FF-FF-FF-FF-FF-FF
MAC地址学习机制
- 自动生成
- 从接口A收到一个数据帧,设备分析该数据帧的源MAC地址(假设为MAC1),就认为目的MAC地址为MAC1的报文可以由接口A转发。
- 如果MAC地址表中已经包含MAC1,设备将对该表项进行更新,刷新老化时间。
- 如果MAC地址表中尚未包含MAC1,设备则将这个新MAC地址以及该MAC地址对应的接口A作为一个新的表项加入到MAC地址表中。
MAC地址表中自动生成的表项并非永远有效每一条表项都有一个生存周期,到达生存周期仍得不到刷新的表项将被删除,这个生存周被称作老化时间。如果在到达生存周期前某表项被刷新,则重新计算该表项的老化时间。
-
手工配置
设备通过源MAC地址学习自动生成MAC地址表时,无法区分合法用户和非法用户的报文,带来了安全隐患。如果非法用户将攻击报文的源MAC地址伪装成合法用户的MAC地址,并从设备的其他接口进入,设备就会学习到错误的MC地址表项,于是将本应转发给合法用户的报文转发给非法用户
为了提高安全性,网络管理员可手工在MAC地址表中加入特定MAC地址表项,将用户设备与接口绑定,从而防止非法用户骗取数据。
以太网速率计算
我们通常所说的10M、100M,1000M、10GE,这些都是指物理介质每秒可以传送多少bit的数据。在我们实际中经常使用每秒传送实数据帧的数目即PPS(Packets Per Second)来表示报文的速率。
下面介绍对于以太网来说如何进行链路速率与pps之间的换算。以太网传送数据时,每两个帧之间存在帧间隙IFG(Inter Frame Gap),帧间隙的作用是使介质中的信号处于稳定状态,同时让帧接收者对接收的帧作必要的处理(如调整缓存取的指针、更新计数、发中断让主机对报文进行处理)对于 Ethernet(10M)帧间隙时间为9.6usec,100M快速以太网帧间隙为0.96usec,1000M帧间隙为0.096usec,10GE帧间隙为0.0096usec,这个时间正好相当于传送96bit数据的时间。
下面我们看怎么把以太网速率与pps进行换算,假设数据帧的长度为 k bytes(包括CRC),端口速率为R,转化后的PPS为N,那么:
N=R/(k * 8 + 8 * 8 + 96)
其中k×8表示实际数据帧的长度(bits),88表示前导码( Preamble + SFD)的长度,96bit相当于帧间隙占用的bits
假设端口速率为100M,发送数据帧的长度为64字节,那么线速发送报文换算成pps后: N=1000000/(64×8+8×8+96)≈148810pps
VLAN
VLAN基本原理
VLAN技术把一个物理LAN划分成多个逻辑的LAN,处于同一VLAN的主机能直接二层互通,而处于不同VLAN的主机则不能。
作用
- 相同VLAN内主机可以任意通信:二层交换
- 不同VLAN内主机二层流量完全隔离:阻断广播包,减小广播域;提供了网络安全性
- 相同VLAN跨设备通信:实现虚拟工作组;减少用户移动带来的管理工作量
802.1Q VLAN帧格式
IEEE 802.1Q协议规定,在以太网报文的目的MAC地址和源MAC地址字段之后、协议类型字段之前加入4个字节的 VLAN Tag,用以标识VLAN的相关信息。
DA&SA | TPID | Priority | CFI | VLAN ID | Type | Data | FCS |
---|---|---|---|---|---|---|---|
12字节 | 2字节 | 3比特 | 1比特 | 12比特 | 2字节 | 42-1500字节 | 4字节 |
- TPID:协议规定取值为0x8100时表示报文带有VLAN ID
- Priority:用来表示报文的802.1p优先级,长度为3比特,即优先级0-7
- CFI:用来表示MAC地址在不同的传输介质中是否以标准格式进行封装,长度为1比特。取值为0表示MAC地址以标准格式进行封装,为1表示以非标准格式封装。在以太网中,CFI取值为0。
- VLAN ID:用来表示该报文所属VLAN的编号,长度为12比特。取值范围为1~4094,0和4095为协议保留取值,其中Vlan Tag=0等同无tag仅带优先级的报文。
端口Access、 Trunk、 Hybrid属性
基于端口划分VLAN是最简单、最有效的划分方法。它按照设备端口来定义VLAN成员,将指定端口加入到指定VLAN中之后,该端口就可以转发该VLAN的报文。端口的链路类型分为三种:
-
Access端口只能发送一个VLAN的报文,发出去的报文不带VLAN Tag。一般用于和不能识别 VLAN Tag的用户终端设备相连,或者不需要区分不同VLAN成员时使用。
-
Trunk:端口能发送多个VLAN的报文,发出去的端口缺省VLAN的报文不带VLAN Tag,其他VLAN的报文都VLAN必须带VLAN Tag。通常用于网络传输设备之间的互连。
-
Hybrid:端口能发送多个VLAN的报文,端口发出去的报文可根据需要配置某些VLAN的报文带VLAN Tag,某些VLAN的报文不带VLAN Tag。在一些应用场景下,需要使用Hybrid端口的功能。比如在1:2VLAN映射中,服务提供商网络的多个VLAN的报文在进入用户网络前,需要剥离外层VLAN Tag,此时Trunk端口不能实现该功能,因为Trunk端口只能使该端口缺省VLAN的报文不带VLAN Tag通过。
交换机处理Tag、Untag原则
端口类型 | 对接收报文的处理 | 对发送报文的处理 | |
当接收到的报文不带Tag时 | 当接收到的报文带有Tag时 | ||
Access端口 | 为报文添加端口缺省VLAN的 Tag |
1. 当报文的VLAN ID与端口的缺 省VLAN ID相同时,接收该报文 2. 当报文的VLAN ID与端口的缺 省VLAN ID不同时,丢弃该报文 |
去掉Tag,发送该报文 |
Trunk端口 | 1. 当端口的缺省VLAN
ID在端 口允许通过的VLAN ID列表 里时,接收该报文,给报文添 加端口缺省VLAN的Tag 2. 当端口的缺省VLAN ID不在端口允许通过的VLAN ID列 表里时,丢弃该报文 |
1. 当报文的VLAN
ID在端口允许 通过的VLAN ID列表里时,接收 该报文 2. 当报文的VLAN ID不在端口允 许通过的VLAN ID列表里时,丢弃该报文 |
1. 当报文的VLAN ID与端口的 缺省VLAN ID相同,且是该端 口允许通过的VLAN ID时:去 掉Tag,发送该报文 2. 当报文的VLAN ID与端口的 缺省VLAN ID不同,且是该端 口允许通过的VLAN ID时:保 持原有Tag,发送该报文 |
Hybrid端口 | 报文的VLAN ID是端口允许 通过的VLAN ID时,发送该报 文,并可以配置端口在发送该 VLAN的报文时是否携带Tag |
VLAN Tag二层转发原理
- IVL地址学习方式下的转发流程
-
IVL方式的二层转发,是匹配VLAN + MAC来查找L2FDB表进行转发的。查表的时分候,要关注地址表中的VLAN内容,先根据VLAN进行筛选,然后再根据MAC进行匹配端口。
-
如果在L2FDB表中查找不到该目的MAC,则该报文将通过广播的方式在该VLAN内所有端口转发;同时该以太网帧的源MAC将被学习到接收到报文的端口上。
-
L2FDB表中的MAC地址通过老化机制更新。
-
在转发的过程中,不会对帧的内容进行修改。
Private VLAN
- 产生背景
从安全性考虑,运营商将接入用户隔离,VLAN是天然隔离手段,一个用户一个VLAN。
在通常的组网中,接入交换机会给每个用户分配一个VLAN,然后通过Trunk链路将所有用户汇聚到上行交换机。因此,边缘交换机配置了多少个VLAN,上行交换机也必须配置多少个VLAN。但是,根据IEEE 802.1Q规定,最多可以提供4094个VLAN。如果每个用户一个VLAN,4094个VLAN远远不能满足需求。所以提出了Private VLAN(也称Isolate-user-vlan)来解决这个问题。
- 基本原理
Private VLAN采用二层VLAN结构,它在同一台设备上配置Primary VLAN和Secondary VLAN两类VLAN。Primary VLAN用于连接上行设备,一个 Primary VLAN可以和Secondary VLAN相对应。上行连接的设备只需知道Primary VLAN,而不必关心Secondary VLAN。Secondary VLAN用于连接用户, Secondary VLAN之间二层报文互相隔离。这即能够保证接入用户之间相互隔离,又能将接入的VLAN ID屏蔽掉,从而简化了网络配置,节省了汇聚交换机的VLAN资源。如果希望实现同一Primary VLAN下 Secondary VLAN用户之间报文的互通,可以通过配置上行设备的本地代理ARP/ND功能来实现三层报文的互通。
Super Vlan
在一般的交换设备中,通常是采用一个VLAN对应一个VAN接口的方式来实现广播域之间的互通,每个VLAN都需要占用一个独立的网段,各VLAN的网关各不相同。因此,一方面造成大量IP地址的浪费,另一方面是管理不便(在DHCP服务器情况下,不同的用户都需要告知其网关IP地址)。为解决这个问题,提出了 Super VLAN的概念,它实现了多个vlaN可共用一个网段,用户都用相同的网关IP地址。
SuperVLAN又称为VLAN聚合(VLAN Aggregation),是一种优化IP地址的管理技术。其基本原理是一个Super VLAN和多个Sub VLAN关联,关联的Sub VLANSuper公用 VLAN对应的VLAN接口(即Super VLAN interface)的IP地址作为三层通信的网关地址,此时Sub VLAN间的三层通信以及Sub VLAN与外部的三层通信均借用Super VLAN interface来实现,从而节省了IP地址资源。
链路聚合
链路聚合由IEEE 802.3ad定义,是将多条以太网物理链路捆绑在一起形成一条以太网逻辑链路,这种链路聚合对于上层协议和应用是透明的,上层协议和应用将同一聚合组内的多条物理链路视为单一链路
其主要作用有:
-
增加带宽:聚合链路的带宽最大为聚合组中所有成员链路的带宽和。
-
增加可靠性:聚合链路中存在多条成员链路的情况下,单条成员链路故障不会引起聚合链路传输失败,故障链路承载的业务流量可自动切换到其他成员链路进行传输。
-
可负载分担:业务流量按照一定的规则被分配到多条成员链路进行传输,提高了链路使用率。
-
可动态配置:不需人为干预,链路聚合组能够根据对端和本端的信息灵活调整聚合成员端口的选中/非选中状态。