eth链路层原理
1. 简述Interent分层路由协议原理
分层网络协议(OSI模型)是计算机术语,是由国际标准化组织ISO创立的一个网络通讯模型。
OSI模型共分七层:从上至下依次是
应用层指网络操作系统和具体的应用程序,对应WWW服务器、FTP服务器等应用软件
表示层数据语法的转换、数据的传送等
会话层 建立起两端之间的会话关系,并负责数据的传送
传输层负责错误的检查与修复,以确保传送的质量,是TCP工作的地方。(报文)
网络层提供了编址方案,IP协议工作的地方(数据包)
数据链路层将由物理层传来的未经处理的位数据包装成数据帧
物理层 对应网线、网卡、接口等物理设备(位)
2. 数据链路层的工作原理是怎样的
数据链路层最重要的作用就是:通过一些数据链路层协议(即链路控制规程),在不太可靠的物理链路上实现可靠的数据传输。
工作原理:
1.链路管理:当网络中的两个结点要进行通信时,数据的发方必须确知收方是否已经处在准备接收的状态。为此,通信的双方必须先要交换一些必要的信息。或者用我们的术语,必须先建立一条数据链路。同样地,在传输数据时要维持数据链路,而在通信完毕时要释放数据链路。数据链路的建立、维持和释放就叫做链路管理。
2.帧同步:在数据链路层,数据的传送单位是帧。数据一帧一帧地传送,就可以在出现差错时,将有差错的帧再重传一次,而避免了将全部数据都进行重传。帧同步指的是收方如何从收到的比特流中准确地区分出一帧的开始和结束。
3.流量控制:发方发送数据的速率必须使收方来得及接收。当收方来不及接收时,就必须及时控制发方发送数据的速率。
4.差错控制:在计算机通信中,一般都要求有极低的比特差错率。为此,广泛地采用了编码技术。编码技术有两大类。一类是前向纠错,即收方收到有差错的数据帧时,能够自动将差错改正过来。这种方法的开销较大,不适合于计算机通信。另一类是检错重发,即收方可以检测出收到的帧中有差错(但并不知道是哪几个比特错了)。于是就让发方重复发送这一帧,直到收方正确收到这一帧为止。这种方法在计算机通信中是最常用的。本章所要讨论的协议,都是采用检错重发这种差错控制方法。为了防止发送方等待收方应答时出现等待死锁,还将提供超时控制机制。重发帧后,为了防止收方收到重复帧,通常为帧给定一个帧序号。
5.区分数据和控制信息:由于数据和控制信息都是在同一信道中传送,而在许多情况下,数据和控制信息处于同一帧中。因此一定要有相应的措施使收方能够将它们区分开来。
6.透明传输:简单的说,透明传输就是发送方发送什么的数据,不管数据传输过程是如何实现的接收方将收到什么样的数据。更确切地说,所谓透明传输就是不管所传数据是什么样的比特组合,都应当能够在链路上传送。当所传数据中的比特组合恰巧出现了与某一个控制信息完全一样时,必须采取适当的措施,使收方不会将这样的数据误认为是某种控制信息。这样才能保证数据链路层的传输的透明的。
7.寻址:在多点连接的情况下,必须保证每一帧都能送到正确的目的站。收方也应当知道发方是哪一个站。
3. 计算机网络(三)数据链路层
结点:主机、路由器
链路:网络中两个结点之间的物理通道,链路的传输介质主要有双绞线、光纤和微波。分为有线链路、无线链路。
数据链路:网络中两个结点之间的逻辑通道,把实现控制数据传输协议的硬件和软件加到链路上就构成数据链路。
帧:链路层的协议数据单元,封装网络层数据报。
数据链路层负责通过一条链路从一个结点向另一个物理链路直接相连的相邻结点传送数据报。
数据链路层在物理层提供服务的基础上向网络层提供服务,其最基本的服务是将源自网络层来的数据可靠地传输到相邻节点的目标机网络层。其主要作用是加强物理层传输原始比特流的功能,将物理层提供的可能出错的物理连接改造成为 逻辑上无差错的数据链路 ,使之对网络层表现为一条无差错的链路。
封装成帧就是在一段数据的前后部分添加首部和尾部,这样就构成了一个帧。接收端在收到物理层上交的比特流后,就能根据首部和尾部的标记,从收到的比特流中识别帧的开始和结束。首部和尾部包含许多的控制信息,他们的一个重要作用:帧定界(确定帧的界限)。
帧同步:接收方应当能从接收到的二进制比特流中区分出帧的起始和终止。
组帧的四种方法:
透明传输是指不管所传数据是什么样的比特组合,都应当能够在链路上传送。因此,链路层就“看不见”有什么妨碍数据传输的东西。
当所传数据中的比特组合恰巧与某一个控制信息完全一样时,就必须采取适当的措施,使收方不会将这样的数据误认为是某种控制信息。这样才能保证数据链路层的传输是透明的。
概括来说,传输中的差错都是由于噪声引起的。
数据链路层编码和物理层的数据编码与调制不同。物理层编码针对的是单个比特,解决传输过程中比特的同步等问题,如曼彻斯特编码。而数据链路层的编码针对的是一组比特,它通过冗余码的技术实现一组二进制比特串在传输过程是否出现了差错。
较高的发送速度和较低的接收能力的不匹配,会造成传输出错,因此流量控制也是数据链路层的一项重要工作。数据链路层的流量控制是点对点的,而传输层的流量控制是端到端的。
滑动窗口有以下重要特性:
若采用n个比特对帧编号,那么发送窗口的尺寸W T 应满足: 。因为发送窗口尺寸过大,就会使得接收方无法区别新帧和旧帧。
每发送完一个帧就停止发送,等待对方的确认,在收到确认后再发送下一个帧。
除了比特出差错,底层信道还会出现丢包 [1] 问题
“停止-等待”就是每发送完一个分组就停止发送,等待对方确认,在收到确认后再发送下一个分组。其操作简单,但信道利用率较低
信道利用率是指发送方在一个发送周期内,有效地发送数据所需要的时间占整个发送周期的比率。即
GBN发送方:
GBN接收方:
因连续发送数据帧而提高了信道利用率,重传时必须把原来已经正确传送的数据帧重传,是传送效率降低。
设置单个确认,同时加大接收窗口,设置接收缓存,缓存乱序到达的帧。
SR发送方:
SR接收方:
发送窗口最好等于接收窗口。(大了会溢出,小了没意义),即
传输数据使用的两种链路
信道划分介质访问控制将使用介质的每个设备与来自同一通信信道上的其他设备的通信隔离开来,把时域和频域资源合理地分配给网络上的设备。
当传输介质的带宽超过传输单个信号所需的带宽时,人们就通过在一条介质上同时携带多个传输信号的方法来提高传输系统的利用率,这就是所谓的多路复用,也是实现信道划分介质访问控制的途径。多路复用技术把多个信号组合在一条物理信道上进行传输,使多个计算机或终端设备共享信道资源,提高了信道的利用率。信道划分的实质就是通过分时、分频、分码等方法把原来的一条广播信道,逻辑上分为几条用于两个结点之间通信的互不干扰的子信道,实际上就是把广播信道转变为点对点信道。
频分多路复用是一种将多路基带信号调制到不同频率载波上,再叠加形成一个复合信号的多路复用技术。在物理信道的可用带宽超过单个原始信号所需带宽的情况下,可将该物理信道的总带宽分割成若千与传输单个信号带宽相同(或略宽)的子信道,每个子信道传输一种信号,这就是频分多路复用。
每个子信道分配的带宽可不相同,但它们的总和必须不超过信道的总带宽。在实际应用中,为了防止子信道之间的千扰,相邻信道之间需要加入“保护频带”。频分多路复用的优点在于充分利用了传输介质的带宽,系统效率较高;由于技术比较成熟,实现也较容易。
时分多路复用是将一条物理信道按时间分成若干时间片,轮流地分配给多个信号使用。每个时间片由复用的一个信号占用,而不像FDM那样,同一时间同时发送多路信号。这样,利用每个信号在时间上的交叉,就可以在一条物理信道上传输多个信号。
就某个时刻来看,时分多路复用信道上传送的仅是某一对设备之间的信号:就某段时间而言,传送的是按时间分割的多路复用信号。但由于计算机数据的突发性,一个用户对已经分配到的子信道的利用率一般不高。统计时分多路复用(STDM,又称异步时分多路复用)是TDM 的一种改进,它采用STDM帧,STDM帧并不固定分配时隙,面按需动态地分配时隙,当终端有数据要传送时,才会分配到时间片,因此可以提高线路的利用率。例如,线路传输速率为8000b/s,4个用户的平均速率都为2000b/s,当采用TDM方式时,每个用户的最高速率为2000b/s.而在STDM方式下,每个用户的最高速率可达8000b/s.
波分多路复用即光的频分多路复用,它在一根光纤中传输多种不同波长(频率)的光信号,由于波长(频率)不同,各路光信号互不干扰,最后再用波长分解复用器将各路波长分解出来。由于光波处于频谱的高频段,有很高的带宽,因而可以实现多路的波分复用
码分多路复用是采用不同的编码来区分各路原始信号的一种复用方式。与FDM和 TDM不同,它既共享信道的频率,又共享时间。下面举一个直观的例子来理解码分复用。
实际上,更常用的名词是码分多址(Code Division Multiple Access.CDMA),1个比特分为多个码片/芯片( chip),每一个站点被指定一个唯一的m位的芯片序列,发送1时发送芯片序列(通常把o写成-1) 。发送1时站点发送芯片序列,发送o时发送芯片序列反码。
纯ALOHA协议思想:不监听信道,不按时间槽发送,随机重发。想发就发
如果发生冲突,接收方在就会检测出差错,然后不予确认,发送方在一定时间内收不到就判断发生冲突。超时后等一随机时间再重传。
时隙ALOHA协议的思想:把时间分成若干个相同的时间片,所有用户在时间片开始时刻同步接入网络信道,若发生冲突,则必须等到下一个时间片开始时刻再发送。
载波监听多路访问协议CSMA(carrier sense multiple access)协议思想:发送帧之前,监听信道。
坚持指的是对于监听信道忙之后的坚持。
1-坚持CSMA思想:如果一个主机要发送消息,那么它先监听信道。
优点:只要媒体空闲,站点就马上发送,避免了媒体利用率的损失。
缺点:假如有两个或两个以上的站点有数据要发送,冲突就不可避免。
非坚持指的是对于监听信道忙之后就不继续监听。
非坚持CSMA思想:如果一个主机要发送消息,那么它先监听信道。
优点:采用随机的重发延迟时间可以减少冲突发生的可能性。
缺点:可能存在大家都在延迟等待过程中,使得媒体仍可能处于空闲状态,媒体使用率降低。
p-坚持指的是对于监听信道空闲的处理。
p-坚持CSMA思想:如果一个主机要发送消息,那么它先监听信道。
优点:既能像非坚持算法那样减少冲突,又能像1-坚持算法那样减少媒体空闲时间的这种方案。
缺点:发生冲突后还是要坚持把数据帧发送完,造成了浪费。
载波监听多点接入/碰撞检测CSMA/CD(carrier sense multiple access with collision detection)
CSMA/CD的工作流程:
由图可知,至多在发送帧后经过时间 就能知道所发送的帧有没有发生碰撞。因此把以太网端到端往返时间为 称为争周期(也称冲突窗口或碰撞窗口)。
截断二进制指数规避算法:
最小帧长问题:帧的传输时延至少要两倍于信号在总线中的传播时延。
载波监听多点接入/碰撞避免CSMA/CA(carrier sense multiple access with collision avoidance)其工作原理如下
CSMA/CD与CSMA/CA的异同点:
相同点:CSMA/CD与CSMA/CA机制都从属于CSMA的思路,其核心是先听再说。换言之,两个在接入信道之前都须要进行监听。当发现信道空闲后,才能进行接入。
不同点:
轮询协议:主结点轮流“邀请”从属结点发送数据。
令牌:一个特殊格式的MAC控制帧,不含任何信息。控制信道的使用,确保同一时刻只有一个结点独占信道。每个结点都可以在一定的时间内(令牌持有时间)获得发送数据的权利,并不是无限制地持有令牌。应用于令牌环网(物理星型拓扑,逻辑环形拓扑)。采用令牌传送方式的网络常用于负载较重、通信量较大的网络中。
轮询访问MAC协议/轮流协议/轮转访问MAC协议:基于多路复用技术划分资源。
随机访问MAC协议: 用户根据意愿随机发送信息,发送信息时可独占信道带宽。 会发生冲突
信道划分介质访问控制(MAC Multiple Access Control )协议:既要不产生冲突,又要发送时占全部带宽。
局域网(Local Area Network):简称LAN,是指在某一区域内由多台计算机互联成的计算机组,使用广播信道。其特点有
决定局域网的主要要素为:网络拓扑,传输介质与介质访问控制方法。
局域网的分类
IEEE 802标准所描述的局域网参考模型只对应OSI参考模型的数据链路层与物理层,它将数据链路层划分为逻辑链路层LLC子层和介质访问控制MAC子层。
以太网(Ethernet)指的是由Xerox公司创建并由Xerox、Intel和DEC公司联合开发的基带总线局域网规范,是当今现有局域网采用的最通用的通信协议标准。以太网络使用CSMA/CD(载波监听多路访问及冲突检测)技术。 以太网只实现无差错接收,不实现可靠传输。
以太网两个标准:
以太网提供无连接、不可靠的服务
10BASE-T是传送基带信号的双绞线以太网,T表示采用双绞线,现10BASE-T 采用的是无屏蔽双绞线(UTP),传输速率是10Mb/s。
计算机与外界有局域网的连接是通过通信适配器的。
在局域网中,硬件地址又称为物理地址,或MAC地址。MAC地址:每个适配器有一个全球唯一的48位二进制地址,前24位代表厂家(由IEEE规定),后24位厂家自己指定。常用6个十六进制数表示,如02-60-8c-e4-b1-21。
最常用的MAC帧是以太网V2的格式。
IEEE 802.11是无线局域网通用的标准,它是由IEEE所定义的无线网络通信的标准。
广域网(WAN,Wide Area Network),通常跨接很大的物理范围,所覆盖的范围从几十公里到几千公里,它能连接多个城市或国家,或横跨几个洲并能提供远距离通信,形成国际性的远程网络。
广域网的通信子网主要使用分组交换技术。广域网的通信子网可以利用公用分组交换网、卫星通信网和无线分组交换网,它将分布在不同地区的局域网或计算机系统互连起来,达到资源共享的目的。如因特网(Internet)是世界范围内最大的广域网。
点对点协议PPP(Point-to-Point Protocol)是目前使用最广泛的数据链路层协议,用户使用拨号电话接入因特网时一般都使用PPP协议。 只支持全双工链路。
PPP协议应满足的要求
PPP协议的三个组成部分
以太网交换机
冲突域:在同一个冲突域中的每一个节点都能收到所有被发送的帧。简单的说就是同一时间内只能有一台设备发送信息的范围。
广播域:网络中能接收任一设备发出的广播帧的所有设备的集合。简单的说如果站点发出一个广播信号,所有能接收收到这个信号的设备范围称为一个广播域。
以太网交换机的两种交换方式:
直通式交换机:查完目的地址(6B)就立刻转发。延迟小,可靠性低,无法支持具有不同速率的端口的交换。
存储转发式交换机:将帧放入高速缓存,并检查否正确,正确则转发,错误则丢弃。延迟大,可靠性高,可以支持具有不同速率的端口的交换。
4. 02 - 数据链路层的详细认识
时间有限我这里只写了一部分内容,更详细的内容可以直接看我的笔记 第三章数据链路层
数据链路层的任务就是将分组从一个网络中或一个链路上的一端传送到另一端。数据链路层传送的数据单元称为帧(frame)。所以也可以说数据链路层的任务就是在一个网络(或一段链路上)传送以帧为单位的数据
数据链路层属于计算机网络的底层,仅在物理层的上方,在网络层的下方,网络中的主机、路由器等都必须实现数据链路层。数据链路层使用的信道主要有两种类型,点对点信道,广播信道
在点对点信道中最重要的是如何实现可靠传输(在实际中并不会在数据链路层实现可靠传输,而是交给上层)
网络层的IP数据报必须向下传达到数据链路层,在数据报前后分别加上首部和尾部,封装成为一个完整的帧。因为在数据链路层就是以帧为单位传输和处理数据,因此,数据链路层中的帧长就是数据部分加上首部和尾部的长度。
发送方将帧以比特流的形式发送给接收方(在物理层会转换成电信号),接收方为了能够处理帧数据,必须正确认识每个帧的开始和结束,这就需要进行帧定界
帧定界有很多种,比如以太网就是在传输的帧与帧之间插入时间间隔来实现,只有首部有帧定界符,尾部没有帧定界符。还有一种就是在帧的首部和尾部都加上一个帧定界符。
帧定界符:
不同类型:
帧定界符在透明传输中的问题和解决
问题: 传输数据存在使用帧定界符所使用的字符或比特组合,会出现错误的帧定界
解决:
注意:
通信链路的传输都不会是理想的,比特在传输过程中可能会产生差错,比如1变为0,0变为1,这叫做比特差错,因此就需要在接收端进行差错检测。
发送方需要采用某种差错检测算法,使用发送的数据计算出差错检测码EDC,差错检测码随数据一起发送给接收方,接收方使用同样的差错检测算法计算出差错检测码EDC',如果两者不一致,则表示出现差错,一般采用循环冗余检验(CRC)来检错
差错检测算法:
接收双方需要约定好一个多项式,之后按照下图的方式进行处理
案例说明
发送方的冗余校验:
说明:
接收方的冗余校验:
说明:
注意:
有些情况下数据链路层需要向上层的网络层提供“可靠传输”的服务,也就是发送端发送什么,对应的接收端就必须接收什么。我们通过可靠传输协议来实现数据链路层的可靠传输,有三种,停止等待协议SW、回退N步协议GBN、选择重传协议SR。
可靠传输协议就是要在不可靠的信道上实现可靠的数据传输服务。
在计算机网络中实现可靠传输的基本方法就是:如果发现错误就重传
使用分组确认和超时重传机制就可以在不可靠的信道上实现可靠的数据传输。
解决: 可以在发送方发送完一个数据分组后,启动一个超时计时器,若超出了设置的重传时间,发送方仍没有收到接收方的任何确认分组,就会重传原来的分组。
注意: 重传时间的选择一般是略大于“从发送方到接收方的平均往返时间”数据链路层的往返时间是比较确定的,可以使用这种方式
说明:
上面也可以看到停止等待协议的信道利用率很低,所以需要采用流水线传输方式,发送方不间断的发送分组来提高信道利用率。但是这种方式有可能会使接收方来不及处理这些分组,从而导致分组的丢失。因此需要限制发送方连续发送分组的个数避免这个问题,而这种方式就是回退N步协议。
简单理解回退N步协议就是停止等待协议只能发送一个分组就等待,回退N步协议是发送多个分组才处于等待状态
原理: 回退N步协议在流水线传输的基础上利用发送窗口来限制发送方连续发送分组的个数,是一种连续的ARQ协议
注意:
选择重传协议是在回退N步协议的基础上,只重传出现差错的分组,这时接收窗口不再为1,以便先收下失序到达但仍然处于接收窗口中的分组,等到所缺分组收齐后再一并送交上层,这就是选择重传协议。
注意:
5. 以太网的工作原理是什么
【以太网工作原理】
以太网采用共享信道的方法,即多台主机共同一个信道进行数据传输。为了解决多个计算机的信道征用问题,以太网采用IEEE802.3标准规定的CSMA/CD(载波监听多路访问/冲突检测)协议,它是控制多个用户共用一条信道的协议。 CSMA/CD的工作原理如下:
(1)载波监听(先听后发) 使用CSMA/CD协议时,总线上各个节点都在监听总线,即检测总线上是否有别的节点发送数据。如果发现总线是空闲的,既没有检测到有信号正在传送,即可立即发送数据;如果监听到总线忙,即检测到总线上有数据正在传送,这时节点要持续等待直到监听到总线空闲时才能将数据发送出去,或等待一个随机时间,再从新监听总线,一直到宗贤空现在发送数据。载波监听也称作先听后发。
(2)冲突检测 当两个或两个以上的节点同时监听到总线空闲,开始发送数据时,就会发生碰撞冲突;传输延迟可能会使第一个节点发送的数据还没有到达目标节点时,另一个要发送的数据的节点就已经监听到总线空闲,并开始发送数据,这也会带至冲突的产生。当两个帧发生冲突时,两个传输的帧就会被破坏,被损坏帧继续传输毫无意义,而且信道无法被其他站点使用,对于有限的信道来讲,这是很大的浪费。如果每个发送节点边发送边监听,并在监听到冲突之后立即停止发送,就可以提高信道的利用率。当节点检测到纵向上发生冲突时,就立即取消传输数据,随后发送一个短的干扰信,一较强冲突信号,告诉网络上的所有的节点,总线已经发生了冲突。在阻塞信号发送后,等待一个随机事件,然后再将要发的数据发送一次。如果还有冲突,则重复监听、等待和重传操作。图6-30显示了采用CSMA/CD发送数据的工作流程。 CSMA/CD采用用户访问总线时间不确定的随机竞争方式,有结构简单、轻负载时时延小等特点,但当网络通信附在增大时,由于冲突增多,网络吞吐率下降、传输演示增长,网络性能会明显下降。 从以上分析可以看出,以太网的工作方式就像没有主持人的座谈会中,所有的参会者都通过一个共同的戒指来吗相互交谈。每个参加会议的人在讲话钱,都礼貌的等到别人把话讲完。如果两个客人同时开始讲话,那么他们都停下来,分别随即等待一段时间在开始讲话,这时,如果两个客人等待的时间不同,冲突就不会出现、如果讲话超过了一次以上,将采用退避指数加强等待的时间。
【参考文献】:http://wenku..com/view/2bc7750f79563c1ec5da7187.html
6. 如何理解eth-trunk
Eth-Trunk接口是一种可以动态创建的接口,该类型接口可以绑定若干物理的以太网接口作为一个逻辑接口使用,实现增加带宽提高靠性的目的。
Trunk优势于:
1、通Trunk接口实现负载担Eth-Trunk接口内实现流量负载担。
2、某员接口连接物理链路现故障流量切换其用链路提高整Trunk链路靠性。
3、 Trunk接口总带宽各员接口带宽。
(6)eth链路层原理扩展阅读:
Trunk具体应用
1、Trunk功能用于交换机与服务器之间的相联,为服务器提供独享的高带宽。
2、Trunk功能用于交换机之间的级联,为交换机之间的数据交换提供高带宽的数据传输能力,提高网络速度,突破网络瓶颈,进而大幅提高网络性能(主要应用)。
Trunk功能举例
——例如:为增加带宽,提高连接可靠性,某网吧电影服务器是双网卡且作了绑定,与中心交换机的23、24端口连接;二层交换机的1、2端口与中心交换机的1、2端口连接,那么中心交换机需将1、2端口,23、24端口分别做Trunk。说明:这里的二层交换机也需支持Trunk。
参考资料:网络-Trunk链路
7. 以太网的工作原理是什么
【以太网工作原理】
以太网采用共享信道的方法,即多台主机共同一个信道进行数据传输。为了解决多个计算机的信道征用问题,以太网采用IEEE802.3标准规定的CSMA/CD(载波监听多路访问/冲突检测)协议,它是控制多个用户共用一条信道的协议。
CSMA/CD的工作原理如下:
(1)载波监听(先听后发)
使用CSMA/CD协议时,总线上各个节点都在监听总线,即检测总线上是否有别的节点发送数据。如果发现总线是空闲的,既没有检测到有信号正在传送,即可立即发送数据;如果监听到总线忙,即检测到总线上有数据正在传送,这时节点要持续等待直到监听到总线空闲时才能将数据发送出去,或等待一个随机时间,再从新监听总线,一直到宗贤空现在发送数据。载波监听也称作先听后发。
(2)冲突检测
当两个或两个以上的节点同时监听到总线空闲,开始发送数据时,就会发生碰撞冲突;传输延迟可能会使第一个节点发送的数据还没有到达目标节点时,另一个要发送的数据的节点就已经监听到总线空闲,并开始发送数据,这也会带至冲突的产生。当两个帧发生冲突时,两个传输的帧就会被破坏,被损坏帧继续传输毫无意义,而且信道无法被其他站点使用,对于有限的信道来讲,这是很大的浪费。如果每个发送节点边发送边监听,并在监听到冲突之后立即停止发送,就可以提高信道的利用率。当节点检测到纵向上发生冲突时,就立即取消传输数据,随后发送一个短的干扰信,一较强冲突信号,告诉网络上的所有的节点,总线已经发生了冲突。在阻塞信号发送后,等待一个随机事件,然后再将要发的数据发送一次。如果还有冲突,则重复监听、等待和重传操作。图6-30显示了采用CSMA/CD发送数据的工作流程。
CSMA/CD采用用户访问总线时间不确定的随机竞争方式,有结构简单、轻负载时时延小等特点,但当网络通信附在增大时,由于冲突增多,网络吞吐率下降、传输演示增长,网络性能会明显下降。
从以上分析可以看出,以太网的工作方式就像没有主持人的座谈会中,所有的参会者都通过一个共同的戒指来吗相互交谈。每个参加会议的人在讲话钱,都礼貌的等到别人把话讲完。如果两个客人同时开始讲话,那么他们都停下来,分别随即等待一段时间在开始讲话,这时,如果两个客人等待的时间不同,冲突就不会出现、如果讲话超过了一次以上,将采用退避指数加强等待的时间。
【参考文献】:http://wenku..com/view/2bc7750f79563c1ec5da7187.html
8. 数据链路层的封装和解封装的原理
其实数据链路层是把网络层的数据加上头和尾形成帧再交付给物理层。这就是封装。
之所以要加上头和尾是因为物理层只管电信号,必须要有一个特殊的电信号告诉物理层这是一个帧的开始和结尾。
一般头和尾的电信号是连续的10101010这样的形式,当物理层接收到信号后,知道这是一个帧来了,经过模数转换后交付给数据链路层,数据链路层剥离头和尾把数据交付给上面的网络层,这就是解封装的过程。
其实网络的七层结构基本上都是封装和解封装的过程,上层数据下来的时候就给他加特定的头,相当于装了个信封,就这样一层层的装下来。下层的数据送到上层就一层层的剥离头(信封),直到最后没有信封得到最终的数据为止。
9. ethtool原理介绍和解决网卡丢包排查思路
之前记录过处理因为LVS网卡流量负载过高导致软中断发生丢包的问题, RPS和RFS网卡多队列性能调优实践 ,对一般人来说压力不大的情况下其实碰见的概率并不高。这次想分享的话题是比较常见服务器网卡丢包现象排查思路,如果你是想了解点对点的丢包解决思路涉及面可能就比较广,不妨先参考之前的文章 如何使用MTR诊断网络问题 ,对于Linux常用的网卡丢包分析工具自然是ethtool。
2020年06月22日 - 初稿
阅读原文 - https://wsgzao.github.io/post/ethtool/
ethtool - utility for controlling network drivers and hardware
ethtool is the standard Linux utility for controlling network drivers and hardware, particularly for wired Ethernet devices. It can be used to:
Most features are dependent on support in the specific driver. See the manual page for full information.
ethtool 用于查看和修改网络设备(尤其是有线以太网设备)的驱动参数和硬件设置。你可以根据需要更改以太网卡的参数,包括自动协商、速度、双工和局域网唤醒等参数。通过对以太网卡的配置,你的计算机可以通过网络有效地进行通信。该工具提供了许多关于接驳到你的 Linux 系统的以太网设备的信息。
接收数据包是一个复杂的过程,涉及很多底层的技术细节,但大致需要以下几个步骤:
NIC 在接收到数据包之后,首先需要将数据同步到内核中,这中间的桥梁是 rx ring buffer 。它是由 NIC 和驱动程序共享的一片区域,事实上, rx ring buffer 存储的并不是实际的 packet 数据,而是一个描述符,这个描述符指向了它真正的存储地址,具体流程如下:
当驱动处理速度跟不上网卡收包速度时,驱动来不及分配缓冲区,NIC 接收到的数据包无法及时写到 sk_buffer ,就会产生堆积,当 NIC 内部缓冲区写满后,就会丢弃部分数据,引起丢包。这部分丢包为 rx_fifo_errors ,在 /proc/net/dev 中体现为 fifo 字段增长,在 ifconfig 中体现为 overruns 指标增长。
这个时候,数据包已经被转移到了 sk_buffer 中。前文提到,这是驱动程序在内存中分配的一片缓冲区,并且是通过 DMA 写入的,这种方式不依赖 CPU 直接将数据写到了内存中,意味着对内核来说,其实并不知道已经有新数据到了内存中。那么如何让内核知道有新数据进来了呢?答案就是中断,通过中断告诉内核有新数据进来了,并需要进行后续处理。
提到中断,就涉及到硬中断和软中断,首先需要简单了解一下它们的区别:
当 NIC 把数据包通过 DMA 复制到内核缓冲区 sk_buffer 后,NIC 立即发起一个硬件中断。CPU 接收后,首先进入上半部分,网卡中断对应的中断处理程序是网卡驱动程序的一部分,之后由它发起软中断,进入下半部分,开始消费 sk_buffer 中的数据,交给内核协议栈处理。
通过中断,能够快速及时地响应网卡数据请求,但如果数据量大,那么会产生大量中断请求,CPU 大部分时间都忙于处理中断,效率很低。为了解决这个问题,现在的内核及驱动都采用一种叫 NAPI(new API)的方式进行数据处理,其原理可以简单理解为 中断 + 轮询,在数据量大时,一次中断后通过轮询接收一定数量包再返回,避免产生多次中断。
(1) RX errors
表示总的收包的错误数量,这包括 too-long-frames 错误,Ring Buffer 溢出错误,crc 校验错误,帧同步错误,fifo overruns 以及 missed pkg 等等。
(2) RX dropped
表示数据包已经进入了 Ring Buffer,但是由于内存不够等系统原因,导致在拷贝到内存的过程中被丢弃。
(3) RX overruns
表示了 fifo 的 overruns,这是由于 Ring Buffer(aka Driver Queue) 传输的 IO 大于 kernel 能够处理的 IO 导致的,而 Ring Buffer 则是指在发起 IRQ 请求之前的那块 buffer。很明显,overruns 的增大意味着数据包没到 Ring Buffer 就被网卡物理层给丢弃了,而 CPU 无法即使的处理中断是造成 Ring Buffer 满的原因之一,上面那台有问题的机器就是因为 interruprs 分布的不均匀(都压在 core0),没有做 affinity 而造成的丢包。
(4) RX frame
表示 misaligned 的 frames。
网线上的packet首先被网卡获取,网卡会检查packet的CRC校验,保证完整性,然后将packet头去掉,得到frame。网卡会检查MAC包内的目的MAC地址,如果和本网卡的MAC地址不一样则丢弃(混杂模式除外)。
网卡将frame拷贝到网卡内部的FIFO缓冲区,触发硬件中断。(如有ring buffer的网卡,好像frame可以先存在ring buffer里再触发软件中断(下篇文章将详细解释Linux中frame的走向),ring buffer是网卡和驱动程序共享,是设备里的内存,但是对操作系统是可见的,因为看到linux内核源码里网卡驱动程序是使用kcalloc来分配的空间,所以ring buffer一般都有上限,另外这个ring buffer size,表示的应该是能存储的frame的个数,而不是字节大小。另外有些系统的 ethtool 命令 并不能改变ring parameters来设置ring buffer的大小,暂时不知道为什么,可能是驱动不支持。)
网卡驱动程序通过硬中断处理函数,构建sk_buff,把frame从网卡FIFO拷贝到内存skb中,接下来交给内核处理。(支持napi的网卡应该是直接放在ring buffer,不触发硬中断,直接使用软中断,拷贝ring buffer里的数据,直接输送给上层处理,每个网卡在一次软中断处理过程能处理weight个frame)
过程中,网卡芯片对frame进行了MAC过滤,以减小系统负荷。(除了混杂模式)
网卡驱动程序将IP包添加14字节的MAC头,构成frame(暂无CRC)。Frame(暂无CRC)中含有发送端和接收端的MAC地址,由于是驱动程序创建MAC头,所以可以随便输入地址,也可以进行主机伪装。
驱动程序将frame(暂无CRC)拷贝到网卡芯片内部的缓冲区,由网卡处理。
网卡芯片将未完全完成的frame(缺CRC)再次封装为可以发送的packet,也就是添加头部同步信息和CRC校验,然后丢到网线上,就完成一个IP报的发送了,所有接到网线上的网卡都可以看到该packet。
产生中断的每个设备都有一个相应的中断处理程序,是设备驱动程序的一部分。每个网卡都有一个中断处理程序,用于通知网卡该中断已经被接收了,以及把网卡缓冲区的数据包拷贝到内存中。
当网卡接收来自网络的数据包时,需要通知内核数据包到了。网卡立即发出中断。内核通过执行网卡已注册的中断处理函数来做出应答。中断处理程序开始执行,通知硬件,拷贝最新的网络数据包到内存,然后读取网卡更多的数据包。
这些都是重要、紧迫而又与硬件相关的工作。内核通常需要快速的拷贝网络数据包到系统内存,因为网卡上接收网络数据包的缓存大小固定,而且相比系统内存也要小得多。所以上述拷贝动作一旦被延迟,必然造成网卡FIFO缓存溢出 - 进入的数据包占满了网卡的缓存,后续的包只能被丢弃,这也应该就是ifconfig里的overrun的来源。
当网络数据包被拷贝到系统内存后,中断的任务算是完成了,这时它把控制权交还给被系统中断前运行的程序。
网卡的内核缓冲区,是在PC内存中,由内核控制,而网卡会有FIFO缓冲区,或者ring buffer,这应该将两者区分开。FIFO比较小,里面有数据便会尽量将数据存在内核缓冲中。
网卡中的缓冲区既不属于内核空间,也不属于用户空间。它属于硬件缓冲,允许网卡与操作系统之间有个缓冲;
内核缓冲区在内核空间,在内存中,用于内核程序,做为读自或写往硬件的数据缓冲区;
用户缓冲区在用户空间,在内存中,用于用户程序,做为读自或写往硬件的数据缓冲区;
另外,为了加快数据的交互,可以将内核缓冲区映射到用户空间,这样,内核程序和用户程序就可以同时访问这一区间了。
对于有ring buffer的网卡,ring buffer是由驱动与网卡共享的,所以内核可以直接访问ring buffer,一般拷贝frames的副本到自己的内核空间进行处理(deliver到上层协议,之后的一个个skb就是按skb的指针传递方式传递,直到用户获得数据,所以,对于ring buffer网卡,大量拷贝发生在frame从ring buffer传递到内核控制的计算机内存里)。
网卡工作在数据链路层,数据量链路层,会做一些校验,封装成帧。我们可以查看校验是否出错,确定传输是否存在问题。然后从软件层面,是否因为缓冲区太小丢包。
一台机器经常收到丢包的报警,先看看最底层的有没有问题:
(1) 查看工作模式是否正常
(2) 查看检验是否正常
Speed,Duplex,CRC 之类的都没问题,基本可以排除物理层面的干扰。
Why rx_crc_errors incrementing in the receive counter of ethtool -S output?
Check ethtool -S output and find where are the drops and errors.
Check the numbers corresponding to rx_crc_errors .
显示了p1p1 的接口类型,连接模式,速率等等信息,以及当前是否连接了网线(如果是网线Supported ports 就是TP,如果是光纤则显示Fiber),这里例举下3个重要关键词
Supported ports: [ FIBRE ]
Speed: 10000Mb/s
Link detected: yes
ethtool
Counters Troubleshooting for Linux Driver
Why do I see rx_crc_errors in ethtool output?
ping请求错误分析
ifconfig 命令详解
ethtool 命令详解
ethtool 解决网卡丢包严重和网卡原理
10. 以太网链路层采用什么协议,其基本原理是什么。为什么采用这种协议
首先数据链路层是ISO模型的其中一层。。是实现几个功能的。。不是一个协议构成的。
数据链路层的主要协议有:
(1)Point-to-Point Protocal; PPP点到点
(2) Ethernet; 以太网
(3) High-Level Data Link Control Protocal;HDLC高级链路控制协议
(4) Frame Relay; 帧中继
(5) Asynchronous Transfer Mode;ATM
根据不同的数据需求要采用不同的协议。。