以太网
Author:onceday date:2022年7月20日
1.引言
局域网是一种使用广播信道的数据链路层网络,以太网是其最典型的代表。
具有以下特点:
- 具有广播功能
- 便于系统的扩展和逐渐演变
- 提高了系统的可靠性、可用性。生存性。
以太网是一种共享介质的局域网技术,多个站点链接到同一个共享介质上,同一时间只能有一个站点发送数据,这种链路连接着多个终端,就是多路访问。
冲突域是连接到同一个导线的所有节点的集合:所有的节点都共享带宽,就会发生冲突,且一个节点发出的报文(无论是单播、组播、广播)其余节点都可以收到。
广播域:网络中能接收任一设备发出的广播帧的所有设备的集合。简单的说如果站点发出一个广播信号,所有能接收收到这个信号的设备范围称为一个广播域。传统的二层交换机所有端口都属于一个广播域。
以太网包含以下三种帧:
- 单播帧(unicast),一对一,收到帧的MAC地址与本站硬件地址相同。
- 广播帧(broadcast),一对全体,发送给本局域网上所有站点的帧,地址全1。
- 多播帧(multicast),一对多,发送给本局域网上一部分站点的帧。
以太网适配器借助集线器进行组网,有以下三种形式:
- 星形网,集线器在中间,其它设备都连上。
- 环形网,设备连在一个圆上。
- 总线网,所有设备连在一个线上,总线两端匹配电阻可吸收能量。
集线器工作在物理层,只是简单的转发比特,不进行碰撞检测。
以太网需要考虑如何共享信道,有以下两种大类:
- 静态划分信道,如FDMA、CDMA、TDMA。
- 动态媒体接入控制,如随机接入和受控接入。
随机接入包含MA、CSMA、CSMA/CD、CSMA/CA。
受控接入包含预约、轮询、令牌传递。
信道划分协议代价高昂,不适合局域网使用。
轮询协议中要求其中一个结点为主节点,然后以循环的方式遍历整个网络,优点是提高了效率,缺点是引入了轮询时延,且主节点一旦故障,网络将失去瘫痪。
令牌传递协议,协议中没有主节点,一个令牌的特殊帧在节点之间以某种固定的次序进行交换。
随机接入协议,每个节点能以信道的全部速率进行发送,当碰撞时 ,每个节点反复的重发它的帧,直到改帧通过为止。最常用的有ALOHA协议(检测到冲突不会停止发送)和载波监听多点接入(CSMA)协议。
以太网使用的是CSMA/CD协议,但新的以太网由于引入了以太网交换机,已经不共享信道了,也就不要碰撞检测了。
2.以太网的标准
1982年的DIX Ethernet V2是第一个正式以太网标准。第一个是1983年IEEE 802委员会定义的IEEE 802.3标准。两者的帧有些许不同,但大致算兼容。
IEEE 802委员会曾把局域网的数据链路层拆分成逻辑链路控制LLC子层和媒体接入控制MAC子层。
但LLC子层逐渐已经被废弃了。对于这种结构,物理层的内容都放在MAC子层了,即MAC子层以下对LLC子层是完全透明的。
3.CSMA/CD 协议
最早的以太网把所有的站点连到一根总线上:
- 采用无连接的模式,不对帧编号,也不用确认。提供尽最大服务的交付,如果收到校验错误帧,就直接丢弃帧。
- 同一时间只允许一台计算机发送数据。
以太网使用曼彻斯特编码,因而无需提供长度信息。
协议全称:载波监听多点接入/碰撞检测。
- 多点接入,说明这是总线型网络。
- 载波监听,不停检测信道是否空闲。
- 碰撞检测,边发送边监听,如果信号电压服务超过了门限值,可以认为总线上至少有两个站在发送数据。
电磁波在总线上以有限的速率传播,在1km电缆的传播时延约为5us。
将总线上单程端到端传播时延即为e。
那么A站点至少需要2e的时间知道自己数据与B站点发送的数据有无冲突。即A数据到达B站点时,B站点也发出了数据,然后到达A站点。
实际情况时,要按最坏的情况考虑 ,即最远的两个端点。
CSMA/CD协议不支持同时发送和接收,所以工作在双向交替通信(半双工通信)。
在A站点发送数据的到B站点前,即0-e时间内:
- B站可能发送数据,因为它检测到信道空闲。
- 检测到A站数据后,B站停止发送数据。
- 最迟2e时,A站知道B站也发了数据,此时已发送的数据无效。
- 2e后,A站未检测到碰撞,则数据可以放心发送。
因此,0-2e这段时间也叫争用期(碰撞窗口)。
当检测到碰撞时,使用截断二进制指数退避算法确定重发时机:
- 规定基本争用期为2e。
- 从离散集合[0,(2^k-1)]中随机选出一个整数,记录为r,重传推后的时间就是r*e。当重传次数不超过10次时,k=重传次数。超过10次重传,k=10。
- 当重传到达16次时,还不能成功,就丢弃该帧,并向高层报告。
如果帧很短,发送时间小于2e,那么很有可能在发送完成后,发生碰撞,但又无法检测到,那么该帧就丢失了。
因此,以太网规定了一个最短帧长64字节。
对于10 Mbit/s以太网,发送512 bit需要51.2us,所以争用期可以固定为51.2us:
- 检测到碰撞就会停止发送,因此小于64字节的帧都是异常中止的无效帧,应丢弃。
- e=51.2/2=25.6us,则以太网端到端长度最大约为25.6us/5us*1km=5km。
因此,实用的以太网都能在争用期51.2us内检测到可能发生的碰撞。
此外还有强化碰撞信号,让其他用户能知道现在已经发生了碰撞。
一般发送32比特或48比特的人为干扰信号。
接收成功之后,还需等待一个帧间最小间隔9.6us(96bit),使刚接收到数据帧的站点的接收缓存来得及清理。
当总线式以太网的利用率达到30%时,就已经处于重载情况了,此时很多网络容量被碰撞消耗掉了。
CSMA/CD发送数据帧流程图:
4.以太网的MAC地址
-
OUI: Organizationally unique identifier,代表网络硬件制造商编号,他由IEEE统一分配
-
24位address:代表该制造商所制造的某个网络产品(如网卡)的系列号,它由网络制造商分别并保证每个序列号唯一。
-
在OUI中,其中第一字节的最低位(I/G)表示此地址是单播地址还是组播地址,如果第一字节的最低位(LSB)=0,表示此地址为单播地址,如果为1,表示此地址为组播地址。第一字节的第二位(U/G)表示此地址由IEEE维护的全局地址还是局域性地址,U/G=0,表示IEEE全局维护地址,U/G=1,表示局域性维护地址。
几种MAC地址类型:
-
广播地址:FFFF:FFFF:FFFF
-
组播地址:0100:5E01:0101
-
单播地址:00D0:0011:2233
在数据帧帧中,目的MAC地址可以为上面三种类型的任意一种,但是源MAC地址只能为单播地址,并且IEEE规定,设备接收到源MAC地址不为单播的地址需要丢弃。
5.以太网的冲突域和广播域
冲突域:
-
【定义】在同一个冲突域中的每一个节点都能收到所有被发送的帧。简单的说就是同一时间内只能有一台设备发送信息的范围。
-
【分层】基于OSI的第一层(数据链路层)物理层
-
【设备】第二层设备能隔离冲突域,比如Switch。交换机能缩小冲突域的范围,交换接的每一个端口就是一个冲突域。
广播域:
-
【定义】网络中能接收任一设备发出的广播帧的所有设备的集合。简单的说如果站点发出一个广播信号,所有能接收收到这个信号的设备范围称为一个广播域。
-
【分层】基于OSI的第二层(物理层) 数据链路层
-
【设备】第三层设备才能隔离广播域,比如Router。路由器能隔离广播域,其每一个端口就是一个广播域。
6. 以太网帧格式
-
每个以太网帧发送时都是以8个字节的前导码开始,Preamble是1和0交替(1 0 1 0 1 0…….)的7个字节数据,该部分的作用是通知接收方有数据帧到来,使其与输入的时钟保持同步,56bit 模式容许站点在帧的开始可以丢弃一些bit。SFD是一个字10101011,最后使用11,来通知接收方下一字段就是目的主机的地址了。实际上前导码都是在物理层加进去的,并不是帧的一部分。
-
Type/Length:2字节,根据数值的不同代表2种不同的封装格式,如果字段值在0x0000-0x05DC范围内,则表示该字段为Length,该帧为802.3 raw封装。如果字段值0x0600-0xFFFF范围内,则表示该字段为Type字段,该帧为Ethernet II封装,0x05DD-0x05FF保留没有使用。
-
PayLoad:上层协议有效载荷,最小为46字节,最大为1500字节,对于Type封装格式,上层协议必须保证该字段的值大于46字节,对于Length封装,对于有效载荷不够46字节的报文链路层必须进行填充。因为CSMA/CD协议要求最小比特为512,即64字节。
-
FCS:4字节的校验和。
为什么Ethernet II 帧不需要长度?
那么Ethernet II为什么不需要Length呢?因为当时DIX联盟只跑了三种协议 –0x0600 XNS(施乐),0x0800 IP(Internet协议), 0x6003 DECNET。而这些协议都有自己的长度字段。所以不用在以太网头里面再指定Length,只需表明Type即可。
为什么IEEE接收Type后一切都这么顺利?
因为之前DIX公司分配的以太网Type的值,最小的是0x0600 = 1536. 这个值大于1500. 所以这个值≤1500,代表的是长度,≥1536代表的是类型。
为什么最大帧是1518字节?
这个是链路层的MTU决定的,早期由于设备缓存及CPU处理能力的限制,无法处理巨型帧,所以规定IP MTU为1500. 其实目前的交换机等都可以传送巨型帧(9000字节以上)。
7.以太网自协商
自协商功能允许一个网络设备能够将自己所支持的工作模式信息传达给网络上的对端,并接收对方可能传递过来的相应信息。
对于两端处于自协商工作方式的设备,最终协商的结果是采用二者技术能力域中优先级低的网口提供的工作方式工作。协商级别一般为1000Mfull,1000Mhalf,100Mfull ,100Mhalf,10Mfull,10Mhalf。
支持自协商(Autonegotiation)的以太网接口则在链路UP之前发送FLP(Fast Link Pulse),FLP实际上是一组LTP和数据脉冲的组合,它们表明一种含义:例如我支持100M全双工。
千兆设备几乎没有半双工的情况(虽然可以协商),所以很多双工的问题都不存在了。
自动协商允许设备用一种方式“讨论”可能的传输速率,然后选择双方可接受的最佳速率。它们使用叫做快速链路脉冲的FLP交换各自传输能力的通告。FLP可以让对端知道源端的传输能力是怎样的。当交换FLP时,两个站点根据以下从高到低的优先级侦测双方共有的最佳方式。
1000BASE-T全双工、1000BASE-T、100BASE-T2 全双工、100BASE-TX 全双工、100BASE-T2、100BASE-T4、100BASE-TX、10BASE-T 全双工、10BASE-T。
例如,A和B正在自动协商,并且A具有10/100/1000全半双工的能力,但是B只有10/100全半双工的能力,这样双方共有的最高链路能力为100,全双工。一旦双方进行自动协商,链路就会运行在双方能够支持的最佳能力下。
由于自动协商功能是IEEE后续制定的标准,存在的问题是部分站点不支持协商,为了支持这种情况,须要支持协商的站点具有BYPASS功能,即主动认为自己为半双工。这是为了避免双工不匹配。
8.以太网流控制
在网络中,可能发送端具有较高的处理能力,而接收端处理能力较低,为了避免数据在以太网中传输的过程中由于拥塞导致的数据丢失,引入flow control概念
-
半双工模式下,以太网利用CSMA/CD机制处理冲突和链路使用问题。根据CSMA/CD机制,半双工的模式下,采取的流控方式为Backpressure,即背压。该种方法有两种实现,一个是数据接收者有意制造一次冲突,数据发送者检测到冲突采取Backoff,这样就延缓了数据的发送;另外一个方法是制造载波信号,使数据发送者感觉到接收者要发送数据,从而通过检测到载波而进行延时传输。
-
在全双工模式下,接收者通过发送一种特殊的数据帧来通知发送者,停止发送报文,这种特殊的数据帧称为PAUSE帧。
以太网Pause帧格式:
-
PAUSE帧的长度固定为64字节(包括CRC)
-
PAUSE帧的目的MAC为组播MAC :0180-c200-0001
-
源MAC为发送PAUSE帧的节点的MAC
-
LENTH/TYPE字段固定为0x8808
-
MAC 控制参数域字段表示要求发送者暂停发送流量的时间,数值有效范围为0-65535, 单位为512bit time(bit time指链路上传输1bit需要的时间,如100M链路bit time为10ns)。如果数据报文的接收者在发送PAUSE帧后,在PAUSE帧发送的等待时间超时之前可以处理数据报文,则再发送一个等待时间为0的PAUSE帧通知数据发送者开始发送数据。
-
PAUSE的接收者(也是数据报文的发送者),收到PAUSE帧后会根据PAUSE帧中的等待时间停止发送报文,等待时间超时后继续发送报文。
9.网桥和二层交换机
共享式以太网具有的弊端:
-
冲突严重
-
广播泛滥
-
无任何安全性
网桥(Bridge) :用于桥接LAN网络中的各种不同的网络设备。
主要构成:
- MAC转发单元
- 至少两个的通信端口。
主要功能:
- 收帧
- 输入规则检查
- 拓扑检查
- 输出规则检查
- 输出排队
- 分队传输帧
- 优先级重映射
- 确定输出帧格式
- 重建FCS
- 发送帧
网桥的基本操作:
-
转发、过滤帧
-
维持转发、过滤过程中所应用的到信息
我们所说的交换机可以认为是多端口网桥。
**网桥和交换机主要不同 **
-
多端口网桥:交换机工作时,实际上允许许多组端口间的通道同时工作。所以,交换机的功能体现出不仅仅是一个网桥的功能,而是多个网桥功能的集合。即网桥一般分有两个端口,而交换机通常具有高密度的端口。
-
传输速率的区别:交换机与网桥数据信息的传输速率相比,交换机要快于网桥。
-
数据帧转发方式的区别:网桥在发送数据帧前,通常要接收到完整的数据帧并执行帧检测序列fcs后,才开始转发该数据帧。交换机具有存储转发和直接转发两种帧转发方式。直接转发方式在发送数据以前,不需要在接收完整个数据帧和经过32bit循环冗余校验码crc的计算检查后的等待时间。
10.VLAN虚拟局域网
VLAN(Virtual Local Area Network)又称虚拟局域网,是一种将局域网设备从逻辑上划分成一个个网段,从而实现虚拟工作组的新兴数据交换技术。
一个VLAN组成一个逻辑子网,即一个逻辑广播域,它可以覆盖多个网络设备,允许处于不同地理位置的网络用户加入到一个逻辑子网中。
VLAN工作在OSI参考模型的第2层和第3层,IEEE标准为 802.1Q,VLAN之间的通信是通过第3层的路由来完成的。
Tag帧格式:
- TPID (Tag Protocol Identifier,也就是EtherType)IEEE定义的新的类型,表明这是一个加了802.1Q标签的帧。TPID包含了一个固定的值0x8100。
- TCI (Tag Control Information),定义了两字节的控制信息。
- User Priority:用于定义用户优先级,共有8个优先级别。IEEE 802.1P 为3比特的用户优先级位定义了操作。
- 最高优先级为7,应用于关键性网络流量,如路由选择信息协议(RIP)和开放最短路径优先(OSPF)协议的路由表更新。
- 优先级6和5主要用于延迟敏感(delay-sensitive)应用程序,如交互式视频和语音。
- 优先级4到1主要用于受控负载(controlled-load)应用程序,如流式多媒体(streaming multimedia)和关键性业务流量(business-critical traffic)。
- 优先级0是缺省值,并在没有设置其它优先级值的情况下自动启用。
- CFI(规范格式指示器Canonical Format Indicator):CFI值为0说明是规范格式,1为非规范格式。它被用在令牌环/源路由FDDI介质访问方法中来指示封装帧中所带地址的比特次序信息。规范格式指地址的十六进制表示中每一个字节的最低位,代表规范格式地址中相应字节的最低位。
- VID:该字段为12-bit, 是对 VLAN 的识别字段,在标准 802.1Q 中常被使用。支持4096(2的12次方) VLAN 的识别。在4096可能的VID 中,VID=0 用于识别帧优先级。 4095(FFF)作为预留值,所以 VLAN 配置的最大可能值为4094。 所以有效的VLAN ID范围一般为1-4094。
10.2 VlAN的作用
- 控制网络的广播风暴
- 安全,由于VLAN 功能划分了多个广播域,不属于同一个VLAN的端口将不能进行通信,增强了安全性。
- 简化网络管理。
10.3 VLAN的划分
基于端口划分:
- 根据交换机接口分配VLAN ID。
- 优点: 划分简单
- 缺点: 是某个用户的端口连到新端口后,需要重新定义。
基于MAC地址划分:
- 根据报文的源MAC地址分配VLAN ID
- 优点: 当用户物理位置移动时,VLAN不用重新配置
- 缺点: 初始化时所有的用户都必须进行配置,如果有几百个甚至上千个用户的话,配置是非常累的。而且这种划分的方法也导致了交换机执行效率的降低,因为在每一个交换机的端口都可能存在很多个VLAN组的成员,这样就无法限制广播包了。另外,网卡如果更换,也会导致VLAN需要重新配置。
基于子网划分:
- 根据报文的源IP地址分配VLAN ID,一般用于对同一网段的用户,进行统一管理的场景。
- 优点: 用户的物理位置改变了,不需要重新配置所属的VLAN,而且可以根据协议类型来划分VLAN,这对网络管理者来说很重要,还有,这种方法不需要附加的帧标签来识别VLAN,这样可以减少网络的通信量。
基于用户划分:
- 基于用户定义、非用户授权来划分VLAN,是指为了适应特别的VLAN网络,根据具体的网络用户的特别要求来定义和设计VLAN,而且可以让非VLAN群体用户访问VLAN,但是需要提供用户密码,在得到VLAN管理的认证后才可以加入一个VLAN。
10.4 VLAN的输入规则检查
输入规则检查即交换机接收到一个数据报文时,需要判定端口是否在接收到的报文所划分的VLAN中,如果端口不在接收报文所划分的VLAN,则此报文需要被丢弃。
- 对输的帧的VID进行检查,如果VID==0xFFF,报文将会被丢弃。
- 帧的VID属性是否与设置一致,即端口可以使能只接收含有VLAN-TAG的帧,此时收到VID==0x0的报文则直接丢弃。
- 在使能VLAN检查的情况下:端口不在所收到的帧的VID对应的VLAN中,则丢弃此报文。
10.5 VLAN的输出规则检查
输出规则检查用于在报文输出时,判定端口是否在输出报文VID所对应的VLAN中。
- 输出端口不在帧VID对应的VLAN当中,报文被丢弃。
- 如果端口要求输出UNTAG帧,但TAG中的CFI位为1,此时报文被丢弃。
- 当报文通过输出规则检查确定可以在此端口输出时,还需要确定是tag输出还是untagged输出,也即输出报文是否带有802.1q tag,此规则也由用户指定。当确定输出报文为tag报文时,其tag中的VID即为此报文所划分的VLAN ID。
10.6 VLAN的端口类型
PVID:Port VLAN ID,指端口的缺省VLAN ID。Hybrid端口和Trunk端口属于多个VLAN,所以需要设置缺省VLAN ID。Hybrid端口和Trunk端口的缺省VLAN为VLAN 1。
PVID主要有两个作用:第一对于接收到的Untag包则添加本端口的PVID再进行转发;第二是接收过滤作用,比如只接收等于PVID的VLAN TAG包。
VLAN ID:VLAN TAG包的VLAN ID号,有效范围是1-4094,0和4095都为协议保留值。
- 0 表示不属于任何VLAN,但携带802.1Q的优先级标签,一般被称为Priority-only frame,其一般作为系统使用,用户不可使用和删除。
- 1为系统默认VLAN,即Native VLAN。
- 2-1001是普通的vlan。
- 1006-1024保留仅系统使用,用户不能查看和使用
- 1002-1005是支持fddi和令牌环的vlan
- 1025-4095是扩展的vlan。
Tag、untag:tag是指以太网数据帧中携带有4字节802.1Q信息的VLAN标签,其中vlan id,用于指名数据包属于那个vlan,untag指数据包不属于任何vlan,没有vlan标签。
**Access的端口类型:**Access口只能属于1个VLAN,一般用于连接计算机的端口。
Trunk端口: Trunk口上可以同时传送多个VLAN的包,一般用于交换机之间的链接。
10.7 VLAN报文输入输出规则
接口类型 | 接收不带Tag的报文 | 接收带Tag的报文 | 发送帧处理过程 |
---|---|---|---|
Access接口 | 接收该报文,并打上缺省的VLAN ID。 | 对比VLAN ID与缺省VLAN ID相同时,接收该报文。 不同时,丢弃该报文。 | 先剥离帧的PVID Tag,然后再发送。 |
Trunk接口 | 打上缺省的VLAN ID。当缺省VLAN ID在允许通过的VLAN ID列表里时,接收该报文。当缺省VLAN ID不在允许通过的VLAN ID列表里时,丢弃该报文。 | 当VLAN ID在接口允许通过的VLAN ID列表里时,接收该报文。 当VLAN ID不在接口允许通过的VLAN ID列表里时,丢弃该报文。 | 当VLAN ID与缺省VLAN ID相同,且是该接口允许通过的VLAN ID时,去掉Tag,发送该报文。 当VLAN ID与缺省VLAN ID不同,且是该接口允许通过的VLAN ID时,保持原有Tag,发送该报文。 |
Access端口只属于1个VLAN,所以它的缺省VLAN就是它所在的VLAN,不用设置;
Trunk端口属于多个VLAN,所以需要设置缺省VLAN ID。缺省情况下,Trunk端口的缺省VLAN为VLAN 1 如果设置了端口的缺省VLAN ID,当端口接收到不带VLAN Tag的报文后,则将报文转发到属于缺省VLAN的端口;当端口发送带有VLAN Tag的报文时,如果该报文的VLAN ID与端口缺省的VLAN ID相同,则系统将去掉报文的VLAN Tag,然后再发送该报文。
10.8 实例分析
Tag table表示是否输出Tag帧。
成员table表示是否属于该VLAN。
- 端口1收到Untagged帧,打上默认的PVID=1。
- 端口2不属于VLAN 1网络,因此不能转发。
- 端口3属于VLAN 1网络,且需要转发Tag帧。
- 端口4属于VLAN 1网络,且需要输出Untagged帧。
- 端口1和4非Access/Trunk口,因为PVID指向的VLAN,不能输出Tag帧,都应该是Untagged帧。端口4缺省PVID为3,根据Trunk口规则,非缺省PVID都输出Tag帧。
- 端口1输入Tagged帧,Vid=2,其属于VLAN 2成员,因此可以输入。
- 端口2非VALN 2成员,不输出。
- 端口3缺省PVID为2,因此不能输出Tagged帧,因此非Access/Trunk口。
- 端口4缺省PVID为3,因此VLAN 2要输出Tagged帧,因此非Access/Trunk口。
总结:
- 默认PVID不能输出Tagged帧,非默认PVID必须输出Tagged帧。
11.FDB(MAC Filter Database),MAC地址表
MAC FDB查找KEY为VID+MAC。
- 其中VID为可选KEY,如果查找KEY中不包括VID,称之为SVL查找;
- 如果查找KEY中包括VID,则称之为为IVL查找。
- 在锐捷的实现中,都是IVL查找,即查找KEY中都包括VID。
MAC FDB中除开包括查找KEY外,还包括端口MAP,是否为静态,是否老化,是否为过滤地址等属性。
交换机依据报文携带的的目的MAC和分配给报文的VID作为查找KEY找到地址表:
IF 查找成功并且行为为Forward则FDB的端口MAP为报文的潜在转发端口MAP
ELSE IF查找成功并且行为为Filter则过滤掉报文
ELSE将报文在VLAN内部泛洪
FDB查找结果仅仅作为报文的潜在转发端口列表,是否需要转发到这个端口还要依赖其他决策,例如STP。
上面提到的是一个转发端口MAP,这个MAP可以包括多个端口成员。
11.1 FDB添加
FDB添加指用户可以手动的添加一个MAC,添加信息包括:
- 查找KEY:MAC+VID
- 行为:Forward还是filter
- 是否为静态地址
- 是否为组播地址
- 端口MAP
11.2 FDB删除
用户可以手工的删除FDB的中的MAC,其删除方法可以是删除指定的MAC,也可以是FDB中条目的某个子集,其指定方案包括:
- VID+MAC:删除指定的MAC地址
- VID:删除指定VLAN的MAC
- Port:删除目的端口为指定端口的地址
- VID+Port:删除目的端口为指定端口指定VLAN的地址
- ALL:删除所有地址
上面所有方案中,只有VID+MAC方案才能删除静态地址,其他方案仅仅是删除动态地址
11.3 FDB学习和老化
除开用户可以手工的添加地址外,交换机可以依据报文信息自动学习MAC地址。
当满足如下条件时,MAC地址可以被学习:
- 端口的STP状态允许其学习
- 报文的源MAC不为组播MAC
- 地址表还有空闲空间供其学习
- 接收报文的端口属于报文VLAN的成员端口
当满足如上学习条件时,交换机使用报文的源MAC+VID查找MAC地址表:
- IF 查找不成功:使用MAC+VID+接收此报文的端口添加MAC地址
- ELSE 更新老化时间
12.生成树STP协议
生成树协议(spanning-tree protocol)由IEEE 802.1d标准定义。其作用是为了提供冗余链路,解决网络环路问题。
生成树协议通过SPA(生成树算法)生成一个没有环路的网络,当主要链路出现故障时,能够自动切换到备份链路,保证网络的正常通信。
新的有RSTP快速生成树和MSTP多生成树协议(支持VLAN,每个vlan一颗生成树)
一个STP网络有一个根桥:
- 生成树协议通过SPA(生成树算法)生成一个没有环路的网络,当主要链路出现故障时,能够自动切换到备份链路,保证网络的正常通信。
- ID(BID, PID)、路径开销(path cost)
STP将整个网络裁剪成为一颗树,称之为为Spanning Tree,避免环路。裁剪步骤如下(选举过程,拓扑计算,端口行为确定):
- 网络中选择了一个网桥为根桥(Root Bridge)。
- 除根桥外的每个网桥都有一个根口(Root Port),即提供最短路径到Root Bridge的端口。
- 每个LAN都有了指派网桥(Designated Bridge),位于该LAN与根桥之间的最短路径中。指派网桥和LAN相连的端口称为指派端口(Designated Port)。
- 根口(Root port)和指派端口(Designated Port)进入Forwarding状态。
- 其他不在生成树中的端口就处于Discarding状态
12.1 生成树的5个状态
- Blocking,阻塞:接收BPDU,不学习MAC地址,不转发数据帧
- Listening,侦听:接收BPDU,不学习MAC地址,不转发数据帧,但交换机向其他交换机通告该端口,参与选举根端口或指定端口
- Learning,学习:接收BPDU,学习MAC地址,不转发数据帧
- Forwarding,转发:正常转发数据帧
STP通过控制端口的STP状态,切断环路,STP包括的端口状态:
状态 | Forward | Learning |
---|---|---|
Disabled | Y | N |
Blocking | N(接收BPDU) | N |
Listening | N(接收BPDU) | N |
Learning | N(接收BPDU) | Y |
Forwarding | Y | Y |
12.2 生成树的BPDU
- 适用于STP和RSTP协议
- 目的地址总是组地址01:80:C2:00:00:00
- 3字节的LLC/SNAP对于BPDU总设置为0x424203
- 协议字段Prot给出协议ID号,总被设置为0
- 版本字段Vers设置为(0—STP)或者(2—RSTP)
- 类型Type字段和版本类似
- 标志Flags字段包括以下字段:
- 拓扑变化TC
- 拓扑变化确认TCA
- 建议P
- 端口角色(00未知,01备用,10根,11指定)
- 学习L
- 转发F
- 协议A
- 根ID字段给出发送方使用的根网桥标识符,即从网桥ID字段获得的MAC地址。
- 根路径成本是在根ID字段中指定的计算出到达某个网桥的成本。
- PID字段是端口标识符和由发送根给出的端口号,被附加在一个可配置的1字节的优先级字段(默认0x80)之后
- MsgA指出消息有效期
- 最大有效期MaxA字段指出超时(默认20s)的最大期限
- 欢迎时间hellotime指出配置帧的传输周期
- 转发延迟字段指出处于学习和侦听状态的时间,默认15秒
关于以太网的简介就到这里,后面更详细的有机会以专题形式总结。
学无止境,苦中作乐!