以太网最初是指由数字设备公司(dec)、英特尔和至强组成的DEC-Intel-Xerox(DIX)联盟制定并于1982年公布的标准。经过长期的发展,以太网已成为使用最广泛的局域网,包括标准以太网(10 Mbit/秒)、快速以太网(100 Mbit/秒)、千兆以太网(1000 Mbit/秒)和万兆以太网(10gbit)。
在TCP/IP中,以太网的IP数据报封装格式由RFC894定义,IEEE802.3网络的IP数据报封装由RFC1042定义。今天最常用的包格式是RFC894中定义的格式,通常称为Ethernet_II或Ethernet DIX。
01
以太网基础知识
1.1以太网网络层
以太网使用手动介质以广播方式传播信息。提供物理层和数据链路层协议、物理层和数据链路层接口、数据链路层和上层接口。
物理层
物理层指定以太网的基本物理属性(例如数据编码、时间尺度、电气频率等)。
物理层位于OSI参考模型的底部,直接面向实际负责数据传输的物理介质(即通信信道),物理层以位(bit)或二进制位(“0”或“1”)传输。实际位传输需要依赖传输设备和物理介质,但物理层不是指特定物理设备或信号传输的物理介质,而是指在物理介质上传输上一层(数据链路层)的物理连接。
数据链路层
数据链路层是OSI参考模型的第二层,位于物理层和网络层之间。数据链路层根据物理层提供的服务向网络层提供服务。最基本的服务是可靠地将从源设备网络层传输的数据传输到相邻节点的大象设备网络层。
以太网的物理层和数据链路层是相关的,因此必须为物理层的各种操作模式提供特定的数据链路层。这给设计和应用带来了一些不便。
为此,一些组织和制造商建议将数据链路层重新分层,分为媒体访问控制子层(MAC)和逻辑链路控制子层(LLC)。这些不同的物理层对应于不同的MAC子层,LLC子层可以完全独立。图1-1所示。
图1-1以太网链路层的层次结构
1.2以太网电缆标准
从以太网诞生到现在,成熟的以太网物理层标准主要包括:
10base-210ba se-510ba se-t 10ba se-f 100ba se-t 4100ba se-tx 1000ba se-FX 1000ba se-sx 1000ba se-LX 1000ba
在这些标准中,前面的10、100、1000和10G分别表示执行速度,中间的BASE表示发送的信号是基带方式。
10 gigabit乙太网路缆线标准
10 GB以太网电缆标准在IEEE802.3中定义,电缆类型见表1-1。
表1-1万兆以太网电缆标准
同轴电缆的致命缺陷是电缆上的设备连接在一起,单点故障可能会引起整个网络冲突。10BASE-2、10BASE-5是同轴电缆的物理标准,现在很少使用。
100 gigabit乙太网路缆线标准
100 gigabit乙太网路也称为快速乙太网路快速乙太网路(FE),在资料连结层与10公尺乙太网路没有差异,只能在实体层提高传输速度。
快速以太网电缆类型见表1-2。
x=2" width="640" height="248"/>表1-2 快速以太网线缆标准
10BASE-T和100BASE-TX都是运行在五类双绞线上的以太网标准,所不同的是线路上信号的传输速率不同,10BASE-T只能以10M的速度工作,而100BASE-TX则以100M的速度工作。
100BASE-T4现在很少使用。
千兆以太网线缆标准
千兆以太网是对IEEE802.3以太网标准的扩展。在基于以太网协议的基础之上,将快速以太网的传输速率从100Mbit/s提高了10倍,达到了1Gbit/s。千兆以太网线缆标准如表1-3所示。
表1-3 千兆以太网线缆标准
用户可以采用这种技术在原有的快速以太网系统中实现从100Mbit/s到1000Mbit/s的升级。
千兆以太网物理层使用8B10B编码。在传统的以太网传输技术中,数据链路层把8位数据组提交到物理层,物理层经过适当的变换后发送到物理链路上传输。但变换的结果还是8比特。
在光纤千兆以太网上,则不是这样。数据链路层把8比特的数据提交给物理层的时候,物理层把这8比特的数据进行映射,变换成10比特发送出去。
万兆以太网线缆标准
万兆以太网当前使用附加标准IEEE 802.3ae用以说明,将来会合并进IEEE 802.3标准。万兆以太网线缆标准如表1-4所示。
表1-4 万兆以太网线缆标准
100Gbps以太网线缆标准
新的40G/100G以太网标准在2010年制定完成,当前使用附加标准IEEE 802.3ba用以说明。随着网络技术的发展,100Gbps以太网在未来会有大规模的应用。
1.3 CSMA/CD
CSMA/CD的概念
根据以太网的最初设计目标,计算机和其他数字设备是通过一条共享的物理线路连接起来的。这样被连接的计算机和数字设备必须采用一种半双工的方式来访问该物理线路,而且还必须有一种冲突检测和避免的机制,以避免多个设备在同一时刻抢占线路的情况,这种机制就是所谓的CSMA/CD(Carrier Sense Multiple Access/Collision Detection)。
可以从以下三点来理解CSMA/CD:
- CS:载波侦听
在发送数据之前进行侦听,以确保线路空闲,减少冲突的机会。 - MA:多址访问
每个站点发送的数据,可以同时被多个站点接收。 - CD:冲突检测
由于两个站点同时发送信号,信号叠加后,会使线路上电压的摆动值超过正常值一倍。据此可判断冲突的产生。
边发送边检测,发现冲突就停止发送,然后延迟一个随机时间之后继续发送。
CSMA/CD的工作过程
CSMA/CD的工作过程如下:
- 如果线路空闲则发送数据。
如果线路不空闲则一直等待。
终端设备不停的检测共享线路的状态。 - 如果有另外一个设备同时发送数据,两个设备发送的数据必然产生冲突,导致线路上的信号不稳定。
- 终端设备检测到这种不稳定之后,马上停止发送自己的数据。
- 终端设备发送一连串干扰脉冲,然后等待一段时间之后再进行发送数据。发送干扰脉冲的目的是为了通知其他设备,特别是跟自己在同一个时刻发送数据的设备,线路上已经产生了冲突。检测到冲突后等待的时间是随机的。
1.4 最小帧长
由于CSMA/CD算法的限制,以太网帧必须不能小于某个最小长度。以太网中,最小帧长为64字节,这是由最大传输距离和冲突检测机制共同决定的。
规定最小帧长是为了避免这种情况发生:A站点已经将一个数据包的最后一个Bit发送完毕,但这个报文的第一个Bit还没有传送到距离很远的B站点。B站点认为线路空闲继续发送数据,导致冲突。
图1-2 Ethernet_II的帧结构
高层协议必须保证Data域至少包含46字节,这样加上以太网帧头的14字节和帧尾的4字节校验码正好满足64字节的最小帧长,如图1-2所示。如果实际数据不足46个字节,则高层协议必须填充一些数据单元。
1.5 以太网的双工
以太网的物理层存在半双工和全双工两种模式。
半双工
半双工的工作模式:
- 任意时刻只能接收数据或者发送数据。
- 采用CSMA/CD机制。
- 有最大传输距离的限制。
HUB工作在半双工模式。
全双工
在有L2交换机取代了HUB组建以太网后,以太网由共享式转变为交换式。而且用全双工代替了半双工,传输数据帧的效率大大提高,最大吞吐量达到双倍速率。
全双工从根本上解决了以太网的冲突问题,以太网从此告别CSMA/CD。
全双工的工作模式:
- 同一时刻可以接收和发送数据。
- 最大吞吐量达双倍速率。
- 消除了半双工的物理距离限制。
当前制造的网卡、二层设备、三层设备都支持全双工模式,HUB除外。
实现全双工的硬件保证:
- 支持全双工的网卡芯片
- 收发线路完全分离的物理介质
- 点到点的连接
1.5 以太网的自协商
自动协商的目的
最早的以太网都是10M半双工的,所以需要CSMA/CD等一系列机制保证系统的稳定性。随着技术的发展,出现了全双工,接着又出现了100M,以太网的性能大大改善。但是随之而来的问题是:如何保证原有以太网络和新以太网的兼容?
于是,提出了自动协商技术来解决这种矛盾。自动协商的主要功能就是使物理链路两端的设备通过交互信息自动选择同样的工作参数。自动协商的内容主要包括双工模式、运行速率以及流控等参数。一旦协商通过,链路两端的设备就锁定在同样的双工模式和运行速率。
以太网速率双工自协商在如下标准中定义:
- 百兆以太网标准:IEEE 802.3uIEEE 802.3u规范将自协商作为可选功能。
- 千兆以太网标准:IEEE 802.3zIEEE 802.3z规范将自协商作为强制功能,所有设备必须遵循并且必须默认启用自协商。
自动协商原理
自动协商是网络设备间建立连接的一种方式。它允许一个网络设备将自己所支持的工作模式信息传达给网络上的对端,并接受对端可能传递过来的信息。设备双方根据彼此工作模式信息的交集,按照双方都支持的最优工作模式建立连接。
对于使用双绞线连接的以太网,如果没有数据传输时,链路并不是一直空闲,而是每隔16ms发送一个高脉冲,用来维护链路层的连接,这种脉冲成为NLP(Normal Link Pulse)码流。在NLP码流中再插入一些频率更高的脉冲,可用来传递更多的信息,这串脉冲成为FLP(Fast Link Pulse)码流,如图1-3所示。自协商功能的基本机制就是将协商信息封装进FLP码流中,以达到自协商的目的。
图1-3 脉冲插入示意图
对于使用光模块和光纤连接的以太网,与使用双绞线连接的以太网类似,也是靠发送码流来进行自协商的,这种码流称为C码流,也就是配置(Configuration)码流。与电口不同的是,光口一般不协商速率,并且一般工作在双工模式,所以自协商一般只用来协商流控。
如果协商通过,网卡就把链路置为激活状态,可以开始传输数据了。如果不能通过,则该链路不能使用。
如果有一端不支持自动协商,则支持自动协商的一端选择一种默认的方式工作,一般情况下是10M半双工模式。
自协商完全由物理层芯片设计实现,IEEE 802.3规范要求在下列任一情况下启动自协商:
- 链路中断后恢复
- 设备重新上电
- 任何一端设备复位
- 有重新自协商(Renegotiation)请求
除此之外,连接双方并不会一直发送自协商码流。自协商并不使用专用数据包或带来任何高层协议开销。
接口的自动协商规则
当接口对接时,双方能否正常通信和两端接口设置的工作模式是否匹配相关。
- 当两端接口都工作在相同类型的非自协商模式时,双方可以正常通信。
- 当两端接口都工作在自协商模式时,双方通过协商可以正常通信,最终的协商结果取决于能力低的一端,通过自协商功能还可以协商流量控制功能。
- 当两端接口一端的工作模式为自协商,对端为非自协商时,接口最终协商的工作模式和对端设置的工作模式相关。
1.6 冲突域和广播域
冲突域
在传统的以粗同轴电缆为传输介质的以太网中,同一介质上的多个节点共享链路的带宽,争用链路的使用权,这样就会发生冲突,CSMA/CD机制中当冲突发生时,网络就要进行回退,这段回退的时间内链路上不传送任何数据。而且这种情况是不可避免的。同一介质上的节点越多,冲突发生的概率越大。这种连接在同一导线上的所有节点的集合就是一个冲突域。冲突域内所有节点竞争同一带宽,一个节点发出的报文(无论是单播、组播、广播)其余节点都可以收到。
广播域
因为网络中使用了广播,会占用带宽,降低设备的处理效率,必须对广播加以限制。比如ARP使用广播报文从IP地址来解析MAC地址。全1MAC地址FFFF-FFFF-FFFF为广播地址,所有节点都会处理目的地址为广播地址的数据帧。这种一个节点发送一个广播报文其余节点都能够收到的节点的集合,就是一个广播域。传统的网桥可以根据MAC表对单播报文进行转发,对于广播报文向所有的接口都转发,所以网桥的所有接口连接的节点属于一个广播域,但是每个接口属于一个单独冲突域。
02
以太网交换
2.1 二层交换原理
二层交换设备工作在OSI模型的第二层,即数据链路层,它对数据包的转发是建立在MAC(Media Access Control )地址基础之上的。二层交换设备不同的接口发送和接收数据独立,各接口属于不同的冲突域,因此有效地隔离了网络中物理层冲突域,使得通过它互连的主机(或网络)之间不必再担心流量大小对于数据发送冲突的影响。
二层交换设备通过解析和学习以太网帧的源MAC来维护MAC地址与接口的对应关系(保存MAC与接口对应关系的表称为MAC表),通过其目的MAC来查找MAC表决定向哪个接口转发,基本流程如下:
- 二层交换设备收到以太网帧,将其源MAC与接收接口的对应关系写入MAC表,作为以后的二层转发依据。如果MAC表中已有相同表项,那么就刷新该表项的老化时间。MAC表表项采取一定的老化更新机制,老化时间内未得到刷新的表项将被删除掉。
- 设备判断目的MAC地址是不是广播地址:
如果目的MAC地址是广播地址,那么向所有接口转发(报文的入接口除外)。
如果目的MAC地址不是广播地址,根据以太网帧的目的MAC去查找MAC表,如果能够找到匹配表项,则向表项所示的对应接口转发,如果没有找到匹配表项,那么向所有接口转发(报文的入接口除外)。
从上述流程可以看出,二层交换通过维护MAC表以及根据目的MAC查表转发,有效的利用了网络带宽,改善了网络性能。图1-6是一个二层交换的示例。
图1-6 二层交换示例
二层交换设备虽然能够隔离冲突域,但是它并不能有效的划分广播域。因为从前面介绍的二层交换设备转发流程可以看出,广播报文以及目的MAC查找失败的报文会向除报文的入接口之外的其它所有接口转发,当网络中的主机数量增多时,这种情况会消耗大量的网络带宽,并且在安全性方面也带来一系列问题。当然,通过路由器来隔离广播域是一个办法,但是由于路由器的高成本以及转发性能低的特点使得这一方法应用有限。基于这些情况,二层交换中出现了VLAN技术。
2.2 三层交换原理
三层交换机出现的背景
早期的网络中一般使用二层交换机来搭建局域网,而不同局域网之间的网络互通由路由器来完成。那时的网络流量,局域网内部的流量占了绝大部分,而网络间的通信访问量比较少,使用少量路由器已经足够应付了。
但是,随着数据通信网络范围的不断扩大,网络业务的不断丰富,网络间互访的需求越来越大,而路由器由于自身成本高、转发性能低、接口数量少等特点无法很好的满足网络发展的需求。因此出现了三层交换机这样一种能实现高速三层转发的设备。
当然,三层交换机并不能完全替代路由器,路由器所具备的丰富的接口类型、良好的流量服务等级控制、强大的路由能力等仍然是三层交换机的薄弱环节。
三层转发的原理
目前的三层交换机一般是通过VLAN来划分二层网络并实现二层交换,同时能够实现不同VLAN间的三层IP互访。不同网络的主机之间互访的流程简要如下:
- 源主机在发起通信之前,将自己的IP与目的主机的IP进行比较,如果两者位于同一网段(用网络掩码计算后具有相同的网络号),那么源主机直接向目的主机发送ARP请求,在收到目的主机的ARP应答后获得对方的物理层(MAC)地址,然后用对方MAC地址作为报文的目的MAC地址进行报文发送。
- 当源主机判断目的主机与自己位于不同网段时,它会通过网关(Gateway)来递交报文,即发送ARP请求来获取网关IP地址对应的MAC,在得到网关的ARP应答后,用网关MAC作为报文的目的MAC发送报文。此时发送报文的源IP是源主机的IP,目的IP仍然是目的主机的IP。
下面详细介绍一下三层交换的过程。
如图1-7所示,通信的源、目的主机连接在同一台三层交换机上,但它们位于不同VLAN(网段)。对于三层交换机来说,这两台主机都位于它的直连网段内,它们的IP对应的路由都是直连路由。
图1-7 三层转发原理示意网
图中标明了两台主机的MAC、IP地址、网关,以及三层交换机的MAC、不同VLAN配置的三层接口IP。当 PC A向PC B发起PING时,流程如下:(假设三层交换机上还未建立任何硬件转发表项)
- 根据前面的描述,PC A首先检查出目的IP地址10.2.1.2(PC B)与自己不在同一网段,因此它发出请求网关地址10.1.1.1对应MAC的ARP请求;
- L3 Switch收到PC A的ARP请求后,检查请求报文发现被请求IP是自己的三层接口IP,因此发送ARP应答并将自己的三层接口MAC(MAC Switch)包含在其中。同时它还会把PC A的IP地址与MAC地址对应(10.1.1.2与MAC A)关系记录到自己的ARP表项中去(因为ARP请求报文中包含了发送者的IP和MAC);
- PC A得到网关(L3 Switch)的ARP应答后,组装ICMP请求报文并发送,报文的目的MAC(即DMAC)=MAC Switch、源MAC(即SMAC)=MAC A、源IP(即SIP)=10.1.1.2、目的IP(即DIP)=10.2.1.2;
- L3 Switch收到报文后,首先根据报文的源MAC+VLAN ID更新MAC表。然后,根据报文的目的MAC+VLAN ID查找MAC地址表,发现匹配了自己三层接口MAC的表项,说明需要作三层转发,于是继续查找交换芯片的三层表项;
- 交换芯片根据报文的目的IP去查找其三层表项,由于之前未建立任何表项,因此查找失败,于是将报文送到CPU去进行软件处理;
- CPU根据报文的目的IP去查找其软件路由表,发现匹配了一个直连网段(PC B对应的网段),于是继续查找其软件ARP表,仍然查找失败。然后L3 Switch会在目的网段对应的VLAN 3的所有接口发送请求地址10.2.1.2对应MAC的ARP请求;
- PC B收到L3 Switch发送的ARP请求后,检查发现被请求IP是自己的IP,因此发送ARP应答并将自己的MAC(MAC B)包含在其中。同时,将L3 Switch的IP与MAC的对应关系(10.2.1.1与MAC Switch)记录到自己的ARP表中去;
- L3 Switch收到PC B的ARP应答后,将其IP和MAC对应关系(10.2.1.2与MAC B)记录到自己的ARP表中去,并将PC A的ICMP请求报文发送给PC B,报文的目的MAC修改为PC B的MAC(MAC B),源MAC修改为自己的MAC(MAC Switch)。同时,在交换芯片的三层表项中根据刚得到的三层转发信息添加表项(内容包括IP、MAC、出口VLAN、出接口),这样后续的PC A发往PC B的报文就可以通过该硬件三层表项直接转发了;
- PC B收到L3 Switch转发过来的ICMP请求报文以后,回应ICMP应答给PC A。ICMP应答报文的转发过程与前面类似,只是由于L3 Switch在之前已经得到PC A的IP和MAC对应关系了,也同时在交换芯片中添加了相关三层表项,因此这个报文直接由交换芯片硬件转发给PC A;
- 这样,后续的往返报文都经过查MAC表到查三层转发表的过程由交换芯片直接进行硬件转发了。
从上述流程可以看出,三层交换机正是充分利用了“一次路由(首包CPU转发并建立三层硬件表项)、多次交换(后续包芯片硬件转发)”的原理实现了转发性能与三层交换的完美统一。
03
以太网交换应用场景
如图1-8所示,某企业有IP电话、员工PC、网络打印机、移动终端、服务器等多种设备需要接入网络。
图1-8 使用以太网技术组建企业网络示例
可以使用以太网技术将众多的终端设备连接到网络,从而实现员工访问网络、拨打IP电话、员工PC访问服务器共享资源、通过网络实现远程打印、IT管理员统一管理等网络业务。