路由器重温——接口配置与管理1

2023-05-16

路由器的接口相对于交换机接口来说最大的特点就是接口类型和配置更为复杂,一般可以把路由器上的接口分为三大类:一类是用于局域网组网的LAN接口,另一类是用于广域网接入/互联的WAN接口,最后一类可以应用于LAN组网,或者WAN接入/互联网中的逻辑接口。各种WAN接口有:Serial接口、Async接口(Async:异步)、CE1/PRI接口、E1-F接口、CT1/PRI接口、T1-F接口、3G Cellular接口(Cellular:蜂窝状)、POS接口、CPOS接口、PON接口、ADSL接口、VDSL接口和G.SHDSL接口等。

Wan接口中,有些接口直接配置即可实现对应的WAN接入/互联,这些都是用于各种专线接入的WAN接口,如用于E1专线接入的CE1/PRI接口和E1-F接口,用于T1专线接入的CT1/PRI接口和T1-F接口,用于SONET/SDH网络接入的POS接口和CPOS接口,用于EPON/GPON网络接入的PON接口等。有些仅配置好对应接口还不能实现对应的WAN接入/互联,这些一般是按需拨号的接口,如3G Cellular接口、ADSL接口、VDSL接口和G.SHDSL接口等。还需要进行相关的链路层协议及拨号配置(如DCC配置)。有些可同时应用于直接的WAN互联和WAN拨号连接,如Serial接口、Async接口等。

这是一种很重要的分类方法,直接配置即可实现接入,如两台路由器通过三层以太网接口互联,接口配置好IP地址,用网线连接就可互通了,而有的接入,类比一下手机打电话,买好手机,按上电话卡上电这算配置好,但是还不能通话,还需要进行拨号

路由器接口基础及基本参数配置与管理

接口分类

接口是设备与网络中的其他设备交换数据并相互作用的部件。接口一般分为管理接口、物理接口和逻辑接口三大类。

1、管理接口

管理接口不承担业务传输。Console和Mini-USB两种管理接口。

2、物理接口

物理接口是真实存在、有器件支持的接口,需要承担业务传输。物理接口有时也被称为端口。物理接口分为两种:

1)LAN接口:路由器可以通过它们与局域网中的网络设备交换数据。

2)WAN接口:路由器可以通过它们与局域网外的网络设备交换数据。

感觉管理接口也可以归类为物理接口。

个人总结:通过上表描述,可以对局域网端口和广域网端口总结如下:局域网端口只处理到数据链路层,或者说只具有处理数据链路层的能力,数据链路层是按照物理地址,即MAC地址进行转发,按MAC地址转发表转发,而广域网接口普遍具有三层,即到IP层的处理能力,即收到一串数据流,可以分解出数据链路层帧,还可以继续分解出上层的数据包,一般是IP数据包,然后按照IP包进行转发处理,依照的是路由表。在路由器中,有些接口可以互相转换,如通过portswitch命令将以太网接口转为二层接口,通过undo portswitch转为三层接口。三层接口就可以配置IP,二层接口不可以配置IP,因为二层接口没有处理IP的能力。广域网端口之所以这么多,是从其提供的速率、建设的成本、技术的进步多个方面形成的,对于不同的技术,就有不同的物理介质,就会有适应不同物理介质的接口,且会有不同的电气特性,针对这些不同,再出于成本、服务质量等多方面的考虑,就会有不同的数据链路层协议,而到了更上层,就基本趋于一致,基本都是IP协议。所以端口的不同主要体现在物理层和数据链路层。

3、逻辑接口

是指能够实现数据交换功能,承担业务传输,但物理上不存在,需要通过配置建立的虚拟接口。

VT接口,Virtual-Template,虚拟接口模板,当需要PPP承载其他链路层协议时,可通过配置VT接口来实现,个人理解就是用PPP协议来封装其他二层协议数据,即链路层数据,PPP是数据链路层协议,相当于二层协议的嵌套。

VE接口,Virtual-Ethernet,虚拟以太网,主要用于以太网协议承载其他数据链路层协议,相当于以以太网协议封装其他链路层协议,也是二层协议嵌套。

MP-Group接口,MP(多链路PPP)的专用接口,实现多条PPP链路的捆绑,用于具有动态带宽需求的场合。个人理解相当于Eth-trunk,捆绑多个PPP。

Dialer接口,配置DCC(拨号控制中心)参数而设置的逻辑接口,物理接口可以绑定到Dialer接口以继承配置信息。个人理解,这个接口就是为了配置成DCC,绑定物理接口让物理接口可以拨号。

Tunnel接口,具有三层特性的逻辑接口,隧道两端的设备利用Tunnel接口发送报文、识别并处理来自隧道的报文。

MFR接口,当一条物理链路的带宽不能满足需求时,可以使用将多条物理链路(包括通道化的串口)捆绑成一条链路,形成一个MFR接口,提供更大的带宽。个人理解,就相当于eth-trunk和MP-Group接口,主要看捆绑的链路。

Bridge接口,具有三层特性的逻辑接口,通过配置Bridge接口的IP地址,实现透明网桥中不同网段间用户的互访。这里主要要理解实现透明网桥间不同网段的互访,网桥属于二层设备。

以太网接口配置与管理

在AR G3系列路由器中都带有一定数量的LAN、WAN以太网接口,用于局域网的组网和以太广域网的连接。根据其使用的传输介质又分为以太网电接口和以太网光接口。

以太网接口分类

根据其工作的网络体系架构层次可分为二层以太网接口和三层以太网接口两种。

1)二层以太网接口:是一种物理接口,工作在数据链路层不能配置IP地址。它可以对接收到的报文进行二层交换转发,也可以加入VLAN通过VLANIF接口对接收到的报文进行三层路由转发

2)三层以太网接口:是一种物理接口,工作在网络层,可以配置IP地址,它可以对接收到的报文进行三层路由转发

路由器的某些端口(一般是第一个端口和最后一端口)默认均为二层模式(其他接口均为三层模式),支持通过undo portswitch命令从二层模式切换到三层模式

配置以太网接口基本属性

可配置的特性包括端口组、接口速率、MDI类型、双工模式、自动协商模式支持、流量控制和流量控制自动协商支持、环回测试、电缆检测、端口隔离等。可配置两种端口组:永久端口组和临时端口组。

配置帧间隙

以太网帧与帧之间至少要有一定的帧间隙,以便区分两个数据帧,配置以太网帧之间的帧间隙,可以改变包转发率,调整设备接口上的数据包转发能力。使用ifg ifg-value命令配置。参数ifg-value用来指定以太网帧之间的帧间隙,取值范围(9~12)byte。缺省为12个字节。

配置三层以太网接口

1、配置MTU(Maximum Transmission Unit)

任何时候网络层接收到一份要发送的IP数据报文时,它要判断向本地哪个接口发送数据,并查询该接口获得其最大传输单元MTU,网络层把MTU值与要发送的IP数据报文长度进行比较,如果IP数据报文的长度比MTU值大,那么IP数据报文需要进行分片,分片后的数据报文长度小于等于MTU。

MTU值其实与数据链路类型有关,因为不同数据链路中帧封装的“数据”字段(也就是上层数据包的整体大小)是有长度限制的,如以太网“数据”字段最大长度1500个字节。但现在一般都支持超长帧(Jumbo Frame),所以实际上的最大取值不一定等于数据帧中的数据字段的最大值。

配置三层以太网接口的MTU方法,在以太网接口视图下,执行mtu mtu命令,参数mtu用来指定以太网接口的MTU值,单位是字节。不同以太网接口类型和不同路由器所支持的范围不同。

缺省情况下,以太网接口的MTU值为1500字节,可用undo mtu恢复缺省。配置MTU后,需要端口restart。

以太网接口管理

1、配置环回检测功能

环回检测有两种方式:

1)硬件环回:用硬件将收发端进行短接,使被测试设备接收自己发送出来的信号。

2)软件环回:又分为“远端环回”(外环回)和“本地环回”(内环回)。“外环回”指对端向本端发出报文时,本端接收到报文后不按照报文的目的地址进行转发,而是直接将报文在发给对端。“内环回”是指本端发出的报文通过系统内部发回给本端,即接口对内自环。

以太网接口不支持外环回

配置以太网接口内环回检测功能的方法是在对应接口视图(或端口组视图)下使用loopback internal命令(路由器)。

以太网接口物理层结构及功能

ETHERNET的接口实质是MAC通过MII总线控制PHY的过程

MACMediaAccess Control的缩写,即媒体访问控制子层协议。该协议位于OSI七层协议中数据链路层的下半部分,主要负责控制与连接物理层的物理介质。在发送数据的时候,MAC协议可以事先判断是否可以发送数据,如果可以发送将给数据加上一些控制信息,最终将数据以及控制信息以规定的格式发送到物理层;在接收数据的时候,MAC协议首先判断输入的信息并是否发生传输错误,如果没有错误,则去掉控制信息发送至LLC层。以太网MAC由IEEE-802.3以太网标准定义。

MII(MediaIndependent Interface)即媒体独立接口,媒体独立”表明在不对MAC硬件重新设计或替换的情况下,任何类型的PHY设备都可以正常工作。包括分别用于发送器和接收器的两条独立信道。每条信道都有自己的数据、时钟和控制信号。MII数据接口总共需要16个信号,包括TX_ER,TXD<3:0>,TX_EN,TX_CLK,COL,RXD<3:0>,RX_EX,RX_CLK,CRS,RX_DV等。

MII4位半字节方式传送数据双向传输,时钟速率25MHz。其工作速率可达100Mb/s。MII管理接口是个双信号接口,一个是时钟信号,另一个是数据信号。通过管理接口,上层能监视和控制PHY。其管理是使用SMISerialManagementInterface总线通过读写PHY的寄存器来完成的。PHY里面的部分寄存器是IEEE定义的,这样PHY把自己的目前的状态反映到寄存器里面,MAC通过SMI总线不断的读取PHY的状态寄存器以得知目前PHY的状态,例如连接速度,双工的能力等。当然也可以通过SMI设置PHY的寄存器达到控制的目的,例如流控的打开关闭,自协商模式还是强制模式等。不论是物理连接的MII总线和SMI总线还是PHY的状态寄存器和控制寄存器都是有IEEE的规范的,因此不同公司的MAC和PHY一样可以协调工作。当然为了配合不同公司的PHY的自己特有的一些功能,驱动需要做相应的修改。

PHY是物理接口收发器,它实现物理层。包括MII/GMII(介质独立接口)子层、PCS(物理编码子层)、PMA(物理介质附加)子层、PMD(物理介质相关)子层、MDI子层。

100BaseTX采用4B/5B编码。PHY在发送数据的时候,收到MAC过来的数据(对PHY来说,没有帧的概念,对它来说,都是数据而不管什么地址,数据还是CRC,每4bit就增加1bit的检错码,然后把并行数据转化为串行流数据,再按照物理层的编码规则把数据编码,再变为模拟信号把数据送出去。收数据时的流程反之。

PHY还有个重要的功能就是实现CSMA/CD的部分功能。它可以检测到网络上是否有数据在传送,如果有数据在传送中就等待,一旦检测到网络空闲,再等待一个随机时间后将送数据出去。如果两个碰巧同时送出了数据,那样必将造成冲突,这时候,冲突检测机构可以检测到冲突,然后各等待一个随机的时间重新发送数据。这个随机时间很有讲究的,并不是一个常数,在不同的时刻计算出来的随机时间都是不同的,而且有多重算法来应付出现概率很低的同两台主机之间的第二次冲突。

通信速率通过双方协商,协商的结果是两个设备中能同时支持的最大速度和最好的双工模式。这个技术被称为AutoNegotiation或者NWAY

隔离变压器把PHY送出来的差分信号用差模耦合的线圈耦合滤波以增强信号,并且通过电磁场的转换耦合到连接网线的另外一端。RJ-45中1、2是传送数据的,3、6是接收数据的。新的PHY支持AUTOMDI-X功能(也需要隔离变压器支持)。它可以实现RJ-45接口的1、2上的传送信号线和3、6上的接收信号线的功能自动互相交换。它可以实现RJ-45接口的1、2上的传送信号线和3、6上的接收信号线的功能自动互相交换。

关于网卡

网卡工作在osi的最后两层,物理层(PHY)和数据链路层(MAC,即MAC实现了一个数据链路层),物理层定义了数据传送与接收所需要的电与光信号、线路状态、时钟基准、数据编码和电路等,并向数据链路层设备提供标准接口。物理层的芯片称之为PHY数据链路层则提供寻址机构、数据帧的构建、数据差错检查、传送控制、向网络层提供标准的数据接口等功能。以太网卡中数据链路层的芯片称之为MAC控制器。很多网卡的这两个部分是做到一起的。他们之间的关系是pci总线接mac总线,mac通过MII/GMII接phy,phy接网线(当然也不是直接接上的,还有一个变压装置)。

PHYMAC之间是如何传送数据和相互沟通的。通过IEEE定义的标准的MII/GigaMII(MediaIndependedInterfade,介质独立界面)界面连接MACPHY。这个界面是IEEE定义的。MII界面传递了网络的所有数据和数据的控制。
MACPHY的工作状态的确定和对PHY的控制则是使用SMI(SerialManagementInterface)界面通过读写PHY的寄存器来完成的。PHY里面的部分寄存器也是IEEE定义的,这样PHY把自己的目前的状态反映到寄存器里面,MAC通过SMI总线不断的读取PHY的状态寄存器以得知目前PHY的状态,例如连接速度,双工的能力等。当然也可以通过SMI设置PHY的寄存器达到控制的目的,例如流控的打开关闭,自协商模式还是强制模式等。
我们看到了,不论是物理连接的MII界面和SMI总线还是PHY的状态寄存器和控制寄存器都是有IEEE的规范的,因此不同公司的MACPHY一样可以协调工作。当然为了配合不同公司的PHY的自己特有的一些功能,驱动需要做相应的修改。

以上帧结构就是MAC通过MII传递给PHY的数据。

协商原理

自动协商是建立在双绞线以太网的一种底层机制上的,  它只对双绞线以太网有效。光纤接口的以太网不能进行自动协商

10BASE-T的以太网接口(它只支持10M,不支持自协商)在链路UP之前会发送Link Test Pulse(LTP),该脉冲用以检测链路是否应该UP;而100BASE-T以太网接口(它只支持100M,不支持自协商)在链路UP之前会发送FAST ETHERNET IDLE流,用以检测链路是否应该UP

传统以太网(10M)在无数据发送时发送NLP(一般链路脉冲),这种脉冲每隔16ms发送一个,个宽100ns 峰值 1V

快速以太网(100M)采用4B5B块编码,没有数据发送时就发送字符IDLEIDLE5B编码就是“11111”,也就是持续全“1”,但是要注意,100BASE-TX的线路编码是多电平三级码(MLT-3),编码规则是“10不变,正负交替出现”,所以画出波形图来是正、负、零交替出现的了

此外 如果端口是AUTO的,未成功之前,就会发送FLP NLP16ms一个,FLP16ms一串9(17个,之中夹带着协商页),脉宽10ns

GBIT以太网(1000M)采用8B10B块编码,没有数据发送时也是发送字符IDLEIDLE10B编码就是“1111111111”,但是要注意,100BASE-TX的线路编码是NRZ

支持自协商(Autonegotiation)的以太网接口则在链路UP之前发送FLPFLP实际上是一组LTP和数据脉冲的组合,它们表明一种含义:例如我支持100M全双工。较旧的设备例如10BASE-T仍然将这些FLP识别为LTP,而自协商设备则能够识别FLP的含义并通过交互这种握手信息来使链路成为最优配置。如果自协商设备看到有一般的LTP(不是有特定含义的FLP)输入,它就将本端设置为10M半双工。如果自协商设备看到有FAST ETHERNET IDLE输入,它就将本端设置为100M半双工。以上所述的自协商机制只对10/100兆铜缆接口或千兆光/电口有效,100BASE-FX不支持自协商。

在双绞线链路上,如果没有数据传输,链路并不是一直空闲,而是不断的互相发送一种频率较低的脉冲信号,任何具有双绞线接口的以太网卡都能识别这种信号。如果再插入一些频率更低的脉冲,这些脉冲称为快速链路脉冲  FLP  (  Fast Link Pulse  )两端设备也能识别。于是,可以利用FLP进行少量的数据传输,达到自动协商的目的
先从最初的10兆以太网说起吧,为了维护链路的正常可用,接口要定期发送脉冲,如果在规定时间内,接口没有收到脉冲,就进入down状态,如果两次收到脉冲,就转为up状态,这种脉冲就是normal link pulse,简称nlp,其发送脉冲的间隔是16ms
10
兆不支持自动协商,是因为只能发送nlp,而自动协商是要接口能发送flp(fast link pulse)脉冲,百兆,千兆口都能发送flp,flp的发送间隔比nlp要小很多.
百兆接口发送flp,如果在规定时间内收到了响应,那接口可以进入百兆模式,如果超时没有收到flp,只收到nlp,转而向下兼容,发送nlp,转为10兆模式.
而双工问题是在flp中进行的,在一对接口中,相互发送flp,flp中有个"速率双工能力"字段,2个接口就是靠这个字段来协商双工问题的.而要能保证两者进行协商,前提是任何一方都不能手工指定双工,否则这个"速率双工能力"将被忽略.可能造成无法协商正确的双工结果.
举个例子:如果一边是自动协商,一边是100兆全双工,那最后的结果是100兆半双工.原因:100兆是因为双方都发送flp,而半双工的原因是手工指定全双工的一端将flp"速率双工能力"字段滞空.另外自动协商一端无法就双工能力进行协商,转为半双工.
所以100兆和双工问题要具体,分别的考虑.
因此,一个不支持自适应的设备(或手工指定模式的设备)是不会发出FLP快速连接脉冲的(用于协商),只能发正常的NLP正常连接脉冲。但是一个自适应的设备是发出FLP的,但是由于没有收到对端的FLP,那么它就会一直向半双工去适应,所以会造成协商成半双工模式。
改正办法是全部手工指定,不要协商。或者全部启用协商。

自协商基本原理

   自动协商模式是端口根据另一端设备的连接速度和双工模式,自动把它的速度调节到最高的公共水平,即线路两端能具有的最快速度和双工模式。
   自协商功能允许一个网络设备能够将自己所支持的工作模式信息传达给网络上的对端,并接受对方可能传递过来的相应信息,从而解决双工和10M/100M速率自协商问题。自协商功能完全由物理层芯片设计实现,因此并不使用专用数据包或带来任何高层协议开销。

   自协商功能的基本机制是:每个网络设备在上电、管理命令发出、或是用户干预时发出FLP(快速连接脉冲),协商信息封装在这些FLP序列中FLT中包含有时钟/数字序列,将这些数据从中提取出来就可以得到对端设备支持的工作模式,以及一些用于协商握手机制的其他信息。当一个设备不能对FLP作出有效反应,而仅返回一个NLP(普通连接脉冲)时,它被作为一个10BASE-T兼容设备。快速链路脉冲FLP和普通链路脉冲NLP都仅使用于非屏蔽双绞线上,而不能应用在光纤媒体。

以上就是以太网接口的物理链路协商过程,看一看设备上以太网接口的协商,在设备上查看接口信息

第一行的current state,我理解为物理链路状态,Line protocol current state是协议状态,对于二层物理接口,只要物理状态current stateUP,协议状态Line protocolcurrent state一定是UP的,这里我理解为current是物理线路的状态,它只要能够识别LTPNLPFLP等脉冲信号,就是UP状态,而双方的速率、双工模式一致并可匹配,就是线路协议状态是UP的,因为这些配置是MAC控制的,也可看成是MAC协议状态为UP,因为MACPHY联系紧密,链路在识别NLPFLP时就进行了速录、双工模式的协商等,所以,二层物理接口,只要物理状态current stateUP,协议状态Line protocolcurrent state一定是UP的。

Eth-trunk端口

LACP模式

LACP报文格式

基于IEEE802.3ad标准的LACP,链路汇聚控制协议是一种实现链路动态聚合与解聚合的协议。LACP协议通过LACPDU(Link Aggregation Control Protocol Data Unit)与对端交互信息。

LACPDU报文为慢协议(平均每秒发送的协议报文不超过5个),如果接口板收到报文的DMAC是特殊的组播地址 0x01-80-c2-00-00-02,二层协议类型字段为0x8809,协议子类型为0x01,则说明此数据报文为LACPDU报文。

IEEE802.3通常指以太网,是一种用来描述物理层和数据链路层的MAC子层之间的通信方法。在物理上采用CSMA/CD(载波监听,多点接入,冲突检测)的访问方式。

在IEEE802.3用了两种类型的控制协议来处理以太网通信方式:

1. 第一种是诸如MAC Control PAUSE(以太网流量控制)类的协议。为了保证性能,他需要迅速的对收到的PDU(Protocol Data Unit,协议数据单元)做相应的处理和应答。经常被用在嵌入式硬件功能上。

2. 第二种是诸如LACP(Link Aggregation Control Protocol,链路聚合控制协议)之类的协议,这些协议对帧传输频率的要求更低,常在软件上使用。

Slow Protocol在传输中满足的条件:

1. 每秒传输的帧数小于等于10。(恐怕这就是慢协议的由来吧)

2. 以太网中的类型号是0x8809,但其下有一个字节的subtype,功能表示0~255共256个子类型,但目前只有1~10这编号合法,在这十个之中也只有四个被赋予了相应的类型,其余作为保留。在使用的四个分别为:01-LACP,02-Mark protocol,03-OAM,10-OSSP。

3. 帧数据的长度应小于等于128 octets(octet-8位)。被划分进入802.1AX协议的LACP和Mark protocol遵循这个规则,但是OAM可能超出这个限制。

这样限制的好处就是,能够减少在设置协议时所耗费的带宽。

  在IEEE802.3对链路聚合以及LACP进行标准化之后,然后IEEE802.3组织就制定了一个慢协议,将LACP归为这个新协议的子类。这个新协议就叫做“Slow Protocol”(慢协议)。IEEE802.3将以太网的管理协议分为两类:快协议(需要迅速的回应),慢协议(较慢)。实际上这个快协议并不存在实际意义,但是被定义了。

慢速协议的特点:

1,每秒钟传输的报文不超过10帧;

2,报文不携带vlan tag;

3,目的mac为01-80-c2-00-00-02;

4,协议报文的type域为8809

5,慢协议报文不能被转发 [1]

在此再额外列出几个特殊组播地址的应用列表:

01:80:C2:00:00:00 Bridge Group Address BPDU报文(stp协议报文)

01:80:C2:00:00:01 PAUSE帧的目的MAC。通知发送方暂停发帧,流控用。

01:80:C2:00:00:03 EAPOL帧的目的MAC

LACP帧格式:

字段

长度

说明

Destination Address

6字节

目的MAC地址,是一个组播地址(01-80-C2-00-00-02

Source Address

6字节

源MAC地址,发送端口的MAC地址

Length/Type

2字节

协议类型:0x8809

Subtype

1字节

报文子类型:0x01,说明是LACP报文

Version Number

1字节

协议版本号:0x01

TLV_type

1字节

  • 0x00代表Terminator字段
  • 0x01代表Actor字段
  • 0x02代表Partner字段
  • 0x03代表Collector字段

Actor_Information_Length

1字节

actor信息字段长度,为20字节

Actor_Port

2字节

端口号,根据算法生成,由接口所在的槽位号、子卡号和端口号决定

Actor_State

1字节

本端状态信息:

  • LACP_Activity:代表链路所在的聚合组参与LACP协商的方式。主动的LACP被编码为1,主动方式下会主动发送LACPDU报文给对方,被动方式不会主动发送协商报文,除非收到协商报文才会参与。
  • LACP_Timeout:代表链路接收LACPDU报文的周期,有两种,快周期1s和慢周期30s,超时时间为周期的3倍。短超时被编码为1,长超时被编码为0。
  • Aggregation:标识该链路能否被聚合组聚合。如果编码为0,该链路被认为是独立的,不能被聚合,即,这个链路只能作为一个个体链路运行。
  • Synchronization:代表该链路是否已被分配到一个正确的链路聚合组,如果该链路已经关联了一个兼容的聚合器,那么该链路聚合组的识别与系统ID和被发送的运行Key信息是一致的。编码为0,代表链路当前不在正确的聚合里。
  • Collecting:帧的收集使能位,假如编码为1,表示在这个链路上进来的帧的收集是明确使能的;即收集当前被使能,并且不期望在没有管理变化或接收协议信息变化的情况下被禁止。其它情况下这个值编码为0。
  • Distributing:帧的分配使能位,假如编码为0,意味着在这个链路上的外出帧的分配被明确禁止,并且不期望在没有管理变化或接收协议信息变化的情况下被使能。其它情况下这个值编码为1。
  • Default:诊断调试时使用,编码为1,代表接收到的对端的信息是管理配置的。假如编码为0,正在使用的运行伙伴信息在接收到的LACPDU里。该值不被正常LACP协议使用,仅用于诊断协议问题。
  • Expired:诊断调试时使用,编码为1,代表本端的接收机是处于EXPIRED超时状态;假如编码为0,本端接收状态机处于正常状态。该值不被正常LACP协议使用,仅用于诊断协议问题。

Actor_System_Priority

2字节

本端系统优先级,可以设置,默认情况下为32768

Actor_System

6字节

系统ID,本端系统的MAC地址

Actor_key

2字节

端口KEY值,系统根据端口的配置生成,是端口能否成为聚合组中的一员的关 键因素,影响Key值得因素有trunk ID、接口的速率和双工模式

Actor_Port_Priority

2字节

接口优先级,可以配置,默认为0x8000

Reserved

3字节

保留字段,可用于功能调试以及扩展

Partner_Information_Length

1字节

Partner信息字段长度。

Partner字段代表了链路接口接收到对端的系统信息、接口信息和状态信息,与actor字段含义一致。在协商最开始未收到对端信息时,partner字段填充0,接收到对端信息后会把收到的对端信息补充到partner字段当中。

Partner_Port

2字节

对端端口号

Partner_State

2字节

对端状态信息

Partner_System_Priority

2字节

对端系统优先级

Partner_System

6字节

对端系统ID,对端系统的MAC地址

Partner_key

2字节

对端端口KEY值

Partner_Port_Priority

2字节

对端接口优先级

Reserved

2字节

保留字段

Collector_Information_Length

1字节

Collector信息字段长度:0x10

CollectorMaxDelay

2字节

最大延时:默认情况下为0xffff

Reserved

12字节

保留字段

Terminator_Length

1字节

Terminator信息字段长度:0x00

Reserved

50字节

保留字段,全置0

FCS

4字节

用于帧内后续字节差错的循环冗余检验(也称为FCS或帧检验序列)。

上面是第一个LACP包,可以看出,只有Actor有信息,Partner基本上都是0,Actor的State中有default和expired,说明处于诊断状态。

以上两图是抓的SW1的第一个包,分别在G0/0/1和G0/0/2端口所在链路,其差别只在Actor port上,并且Actor Key相同。

上图是SW2向SW1发送第一个PACP包,注意地址,并且把自己作为Actor。

SW1收到SW2的LACP后,结合自身的配置(其系统和端口的LACP优先级都变为了配置的100,)将自身设置为Actor,将SW2的G0/0/1设置为Partner。

这是协商好以后的状态,主要看State字段。

上图是进行FTP数据传输时的抓包。

因为模拟器中client只能进行小于1M的数据传输,所以一直没有模拟出两条链路都传输数据的情况,在G0/0/2链路上一直没有数据包通过。

数据流是指一组具有某个或某些相同属性的数据包。这些属性有源MAC地址、目的MAC地址、源IP地址、目的IP地址、TCP/UDP的源端口号、TCP/UDP的目的端口号等。

对于负载分担,可以分为逐包的负载分担和逐流的负载分担。

•逐包的负载分担

在使用Eth-Trunk转发数据时,由于聚合组两端设备之间有多条物理链路,就会产生同一数据流的第一个数据帧在一条物理链路上传输,而第二个数据帧在另外一条物理链路上传输的情况。这样一来同一数据流的第二个数据帧就有可能比第一个数据帧先到达对端设备,从而产生接收数据包乱序的情况。

•逐流的负载分担

这种机制把数据帧中的地址通过HASH算法生成HASH-KEY值,然后根据这个数值在Eth-Trunk转发表中寻找对应的出接口,不同的MAC或IP地址HASH得出的HASH-KEY值不同,从而出接口也就不同,这样既保证了同一数据流的帧在同一条物理链路转发,又实现了流量在聚合组内各物理链路上的负载分担。逐流负载分担能保证包的顺序,但不能保证带宽利用率。

注:目前AR系列路由器仅支持逐流的负载分担。

转发原理:

Eth-Trunk位于MAC与LLC子层之间,属于数据链路层。

数据流是指一组具有某个或某些相同属性的数据包。这些属性有源MAC地址、目的MAC地址、源IP地址、目的IP地址、TCP/UDP的源端口号、TCP/UDP的目的端口号等。

对于负载分担,可以分为逐包的负载分担和逐流的负载分担。

•逐包的负载分担

在使用Eth-Trunk转发数据时,由于聚合组两端设备之间有多条物理链路,就会产生同一数据流的第一个数据帧在一条物理链路上传输,而第二个数据帧在另外一条物理链路上传输的情况。这样一来同一数据流的第二个数据帧就有可能比第一个数据帧先到达对端设备,从而产生接收数据包乱序的情况。

•逐流的负载分担

这种机制把数据帧中的地址通过HASH算法生成HASH-KEY值,然后根据这个数值在Eth-Trunk转发表中寻找对应的出接口,不同的MAC或IP地址HASH得出的HASH-KEY值不同,从而出接口也就不同,这样既保证了同一数据流的帧在同一条物理链路转发,又实现了流量在聚合组内各物理链路上的负载分担。逐流负载分担能保证包的顺序,但不能保证带宽利用率。

注:目前AR系列路由器仅支持逐流的负载分担。

转发原理:

Eth-Trunk位于MAC与LLC子层之间,属于数据链路层。

Eth-Trunk模块内部维护一张转发表,这张表由以下两项组成。

HASH-KEY

HASH-KEY值是根据数据包的MAC地址或IP地址等,经HASH算法计算得出。

接口号

Eth-Trunk转发表表项分布和设备每个Eth-Trunk支持加入的成员接口数量相关,不同的HASH-KEY值对应不同的出接口。

Eth-Trunk模块根据转发表转发数据帧的过程如下:

1.Eth-Trunk模块从MAC子层接收到一个数据帧后(感觉这一句有问题,应该是从LLC子层接收到一个数据帧吧??通过后面的学习,这里感觉应该是从MAC子层接收数据帧),根据负载分担方式提取数据帧的源MAC地址/IP地址或目的MAC地址/IP地址。

2.根据HASH算法进行计算,得到HASH-KEY值。

3.Eth-Trunk模块根据HASH-KEY值在转发表中查找对应的接口,把数据帧从该接口发送出去。

负载分担方式:

为了避免数据包乱序情况的发生,Eth-Trunk采用逐流负载分担的机制,其中如何转发数据则由于选择不同的负载分担方式而有所差别。

负载分担的方式主要包括以下几种,用户可以根据具体应用选择不同的负载分担方式。

•根据报文的源MAC地址进行负载分担

•根据报文的目的MAC地址进行负载分担

•根据报文的源IP地址进行负载分担

•根据报文的目的IP地址进行负载分担

•根据报文的源MAC地址和目的MAC地址进行负载分担

•根据报文的源IP地址和目的IP地址进行负载分担

配置负载分担方式时,请注意:

•负载分担方式只在流量的出接口上生效,如果发现各入接口的流量不均衡,请修改上行出接口的负载分担方式。

•尽量将数据流通过负载分担在所有活动链路上传输,避免数据流仅在一条链路上传输,造成流量拥堵,影响业务正常运行。

例如,数据报文的目的MAC和IP地址只有一个,则应选择根据报文的源MAC和IP地址进行负载分担,如果选择根据报文的目的MAC和IP地址进行负载分担则会造成流量只在一条链路上传输,造成流量拥堵。

关于LLC子层

IEEE802.3帧中的LLC子层除了定义传统的链路层服务之外,还增加了一些其他有用的特性。这些特性都由DSAP、SSAP和Control字段提供。

例如以下三种类型的点到点传输服务:

无连接的数据包传输服务

目前的以太网实现就是这种服务。

面向连接的可靠的数据传输服务

预先建立连接再传输数据,数据在传输过程中可靠性得到保证。

无连接的带确认的数据传输服务。

该类型的数据传输服务不需要建立连接,但它在数据的传输中增加了确认机制,使可靠性大大增加。

下面通过一个例子来说明SSAP和DSAP的应用。假设终端系统A和终端系统B要使用面向连接的可靠的数据传输服务,这时候会发生如下过程:

A给B发送一个数据帧,请求建立一个面向连接的可靠连接。

B接收到以后,判断自己的资源是否够用(即是否建立了太多的连接),如果够用,则返回一个确认信息,该确认信息中包含了识别该连接的SAP值。

A接收到回应后,知道B已经在本地建立了跟自己的连接。A也创建一个SAP值,来表示该连接,并发一个确认给B,连接建立。

A的LLC子层把自己要传送的数据进行封装,其中DSAP字节填写的是B返回的SAP,SSAP字节填写的是自己创建的SAP,然后发给MAC子层。

A的MAC子层加上MAC地址和LENGTH字段之后,发送到数据链路上。

B的MAC子层接收到该数据帧之后,提交给LLC子层,LLC子层根据DSAP字段判断出该数据帧属于的连接。

B根据该连接的类型进行相应的校验和确认,通过这些校验和确认后,才向上层发送。

数据传输完毕之后,A给B发送一个数据帧来通知B拆除连接,通信结束。摘--huawei手册

上面这些看了还是没能解答心中的疑惑。

目前MAC+IP不是用的挺好的,LLC提供的无连接,面向连接DSAP等等,为什么少了他还能用。

LLC作用是指明上层协议,当然还有说的提供的无连接等等。

所以DSAP/SSAP用来标志上层协议。比如 IPX为0XE0,

snap 使用 org  code+PID来标识协议, 比如 APPLE talk 0x809B。等等。

看一下数据包格式

LLC只出现在802.3以太网的格式中,802.3的MAC层没有字段指明上层协议字段,但是指明了数据包长度,所以上层协议需要LLC指明。

在ETHERNET_II帧中,把802.3的长度字段改为了type。由Type字段区分上层协议,这时候就没有必要实现LLC子层,仅包含一个MAC子层。

只是现在厂商都用ETHERNET_II。实际效果和802.3+LLC是一样的。

那么问题来了,802.3是有长度标志的,LLC表示上层协议,Ethernet_II没有长度标志,至少现在都不用了,那么判定一个数据包是不是发送完了呢。

因为以太网帧使用4B/5B编码,出现5bit固定类型的二进制,表示此数据包结束,正常传输中是不会出现这5bit的特定序列,如果有也是经过反码或者补码什么的替换掉了,学过计算机组成原理的同学就知道了。所以不需要协议里面有长度字段。当然具体还有很多细节,喜欢深究的同学可以自行脑补。

对于64字节的最小帧经过填充,怎么区分哪一段是填充的内容。数据都在IP包里面。IP包有的长度字段。可以使用这个来区别。

以上的一大篇都是因为自己对虚拟接口eth-trunk认识不足进行的知识补充,首先,eth-trunk是虚拟接口,不存在具体的物理接口,但是数据最终是要从具体物理接口出去的,这就牵扯到eth-trunk到具体物理接口的数据转发过程,其次,eth-trunk虚拟接口是与以太网接口类似的,接口之间要通讯一般是要先完成协商握手,如tcp的三次握手,路由协议中各邻居之间的链路建立等,都有一个协商的过程,那么eth-trunk是怎样协商的?先说以太网的接口连接建立,是通过NLP或FLP脉冲信号建立的,以太网接口链路建立之后,才能进行eth-trunk接口链路的协商,他的协商是通过LACPDU进行的,最终双方在活跃的几个以太网线路上建立eth-trunk连接。再来看数据的转发,对于二层eth-trunk接口,它跟物理以太网接口是一样的,应该在MAC地址转发表中存在,设备中的一个数据包要通过以太网端口(包括eth-trunk虚拟接口)转发出去,必须先查找目的MAC地址,在MAC地址转发表中找到了目的MAC地址项,然后找到该项对应的接口,这里就找到了eth-trunk接口,所以数据包就转发到了eth-trunk接口(这个数据包应该是一个以太网帧,所以前面有说过是从MAC层传来的数据)。实际上eth-trunk就是设备中的一个进程,MAC帧发到eth-trunk端口就是保存到特定内存中,然后eth-trunk进行处理,即解析出源/目的MAC、IP算出HASH值,然后根据eth-trunk转发表,就是拥有两项:HASH-KEY值、接口号的转发表,找到eth-trunk接口中的某一个具体物理接口,然后将MAC帧转发出去。接收端物理接口接收到MAC帧后,转交给eth-trunk端口,由eth-trunk端口执行查找MAC转发表,将数据转发出去。在这里,eth-trunk接口没有对MAC帧做任何的改动。

网络层接收到一份要发送的IP数据报文时,它要判断向本地哪个接口发送数据,并查询该接口获得其最大传输单元MTU,网络层把MTU值与要发送的IP数据报文长度进行比较,如果IP数据报文的长度比MTU值大,那么IP数据报文需要进行分片,分片后的数据报文长度小于等于MTU。这里突然想到一个问题,MAC帧格式中没看到有标记序号的字段,MAC帧到达对端是否会出现乱序?也许乱序也无所谓,最终是依靠IP包中的分片等字段,对IP数据包重组。如果二层交换机进行转发,两个端口的MTU值不同,是不是MAC帧先上送给CPU处理成IP包,再按照接口的MTU重新分片发送出去?

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

路由器重温——接口配置与管理1 的相关文章

  • 【MQTT基础篇(五)】发布、订阅和取消订阅

    文章目录 发布 订阅和取消订阅1 PUBLISH 发布消息1 1 topicName 主题名1 2 QoS 服务质量等级1 3 packetId 报文标识符1 4 retainFlag 保留标志1 5 Payload 有效载荷1 6 dup
  • 【FreeRTOS(六)】队列

    文章目录 队列创建队列 xQueueCreate发送消息至队列 xQueueSend接受队列消息 xQueueReceive获取队列信息数目 uxQueueMessagesWaiting代码示例创建队列集 xQueueCreateSet将队
  • 2021-09-29 使用安卓手机Camera和IMU信息运行ORBSLAM3

    目的 安卓手机具备camera imu gps等SLAM技术所需要的传感器 xff0c 且安卓手机很普及 如果能使用安卓设备作为ros的sensor xff0c 通过安卓设备节点传输到计算机 xff0c 进行实时定位与建图分析 xff0c
  • 【ESP32 WiFi篇(五)】ESP32 HTTP

    文章目录 1 HTTP概述1 1 超文本1 2 请求 响应1 3 TCP 2 HTTP请求和响应2 1 HTTP请求响应过程2 2 客户端请求消息2 2 1 请求行2 2 1 1 请求方法2 2 1 2 URL2 2 1 3 HTTP版本
  • 【Linux 裸机篇(五)】I.MX6ULL BSP工程管理下的 Makefile编写、链接脚本

    目录 一 BSP 工程二 Makefile三 链接脚本 Makefile 的静态模式和函数1 静态模式2 函数2 1 patsubst2 2 dir2 3 notdir2 4 foreach 一 BSP 工程 文件夹描述bsp存放驱动文件i
  • 【Linux 裸机篇(六)】I.MX6U 主频和时钟配置

    目录 一 时钟系统详解1 系统时钟来源2 7路 PLL 时钟源2 1 ARM PLL PLL1 2 2 528 PLL PLL2 2 3 USB1 PLL PLL3 2 4 USB2 PLL PLL7 2 5 ENET PLL PLL6 2
  • 【Linux 裸机篇(七)】I.MX6U 中断系统

    目录 一 中断向量表1 中断向量偏移 二 中断系统简介1 创建中断向量表 三 GIC 控制器简介1 中断 ID 四 GIC 逻辑分块1 Distributor 分发器端 2 CPU Interface CPU 接口端 五 CP15 协处理器
  • 【Linux 裸机篇(八)】I.MX6U EPIT 定时器中断、定时器按键消抖

    目录 一 EPIT 定时器简介二 定时器按键消抖 一 EPIT 定时器简介 EPIT 的全称是 xff1a Enhanced Periodic Interrupt Timer xff0c 直译过来就是增强的周期中断定时器 xff0c 它主要
  • PCB拼板和工艺边教程

    PCB拼板 xff0c 主要是为了充分利用板材 xff0c 从而提高生产效率 比较简单的是 xff0c 规则板框的拼板 如上图的 xff0c 板框是正方形 xff0c 很容易就拼了四块板 xff0c 其中 xff0c 只需要有一块板有布线
  • curl命令模拟get请求时遇到特殊字符{}被过滤异常处理

    curl命令模拟get请求时遇到特殊字符 xff0c 接口接受参数不符合预期 crul请求 curl GET http test com opdgApply pageNum 61 1 amp sortDesc 61 true amp sea
  • 函数声明在头文件中的好处,可以利用静态库隐藏算法

    背景 xff1a 现在有个程序员A想实现一个算法 xff0c 这个算法是俩数之和 xff0c 他自己不会于是他去买程序员B的已经做好的算法 xff0c 但是程序员B不想让他看到算法结构应该怎么做 1 首先程序员B需要写程序 xff0c 包括
  • Javaparser使用

    Javaparser使用 什么是Javaparser 分析 转换 生成Java代码 Javaparser库为你提供了一个 Java 代码的抽象语法树 Abstract Syntax Tree AST 结构允许您以一种简单的编程方式使用 Ja
  • YUV和RGB图像格式说明

    对于进行图像处理的程序员来说 xff0c 图像格式是必须了解的问题 本文不涉及压缩图像格式 xff0c 只对YUV和RGB图像进行描述 1 RGB图像和YUV图像区别 RGB和YUV图像的区别在于色彩空间坐标系描述上不同 xff0c 就如同
  • CMake 常用指令

    文章目录 范式环境 amp 工程配置 96 cmake minimum required 96 96 project 96 96 file 96 添加头文件搜索路径 96 link directories 96 96 add compile
  • (JAVA)国际跳棋--棋里乾坤

    导入 因为假期内被朋友带入坑后起了兴趣 xff0c 但发现网上似乎没有什么人写过国际跳棋的相关制作过程 xff0c 于是制作了一个单纯的java的国际跳棋程序 xff0c 虽然没有AI xff0c 但能够实现玩家双方的任务和皮肤 目前只设置
  • 力扣刷题日记 211. 添加与搜索单词

    211 添加与搜索单词 题目描述题解思路代码结语 题目描述 题解思路 首先 xff0c 这道题要求我们给出所有结果 xff0c 那就意味着我们可能只能选择枚举这一条路 xff0c 然后再看到数据范围 xff0c 好家 伙 xff0c 确实挺
  • 力扣刷题日记 798. 得分最高的最小轮调

    798 得分最高的最小轮调 题目描述题解思路代码结语 题目描述 题解思路 数据范围没有截图到 xff0c 这里的数据范围为0 20000 题目的内容还是很好理解的 xff0c 就是给你一个数组 xff0c 你可以将数组内容向左推移若干次 x

随机推荐

  • Java实现简单的计算器

    文章目录 前言一 主界面部分二 监听器部分三 结果计算部分总结 前言 最近在复习着Java Swing的使用 xff0c 在布局这块反复又看了很久 xff0c 然后突然发现GirdLayout机器适合来做一个计算器的简单样子 xff0c 所
  • 多旋翼飞行器设计与控制(一)

    一 基本概念固定翼直升机多旋翼复合飞行器 二 操控和评价四旋翼操控对比评价局限性 三 发展历史休眠期 xff08 1990前 xff09 复苏期 xff08 1990 2005 xff09 产品方面学术方面 发展期 xff08 2005 2
  • 考试中暴露的问题

    1 注意位运算 可以去看看洛谷里如果城堡不用位运算处理的话会怎样233 2 注意数学函数 xff0c 如sqrt为开根号 xff0c abs为绝对值 xff1b 3 最长上升子序列upper bound与lower bound的用法要知道
  • 10月28日考试解题报告

    考试中的心路历程 说实话第一道题和第三道题真的是水题 xff0c 然鹅我只搞到了100分 xff0c 感觉有些亏 xff0c 最后一题看错了题目 xff0c 导致我的思路开始各种螺旋 xff0c 当其他人都为第二题思考的时候 xff0c 我
  • 10月30日解题报告

    做题思路 第一题表示根本没有想到是线段树这种东西 xff0c 结果看到题解的时候 内心是崩溃的 xff0c 看了线段树还是得多练练 xff0c 第二题是dp xff0c 算是简单 xff0c 但是自己没有想到还是很伤 xff0c 也还是要多
  • C++ 获取string字符串长度的三种方法

    1 用string的成员方法length 获取字符串长度 length 比较直观 xff0c 表示的就是该字符串的长度 include lt string gt include lt iostream gt using namespace
  • sublime text3 搭建python环境

    1 python下载 python安装文件下载 2 安装easy install 方法是下载ez setup py后 xff0c 在cmd下执行 pythonez setup py xff0c 即可自动安装setuptools window
  • C++ 字符串指针和字符串指针数组详解

    C 43 43 处理字符串有两种方式 xff0c 即 xff1a 指针方式和数组方式 数组方式 xff1a char a 61 34 HelloWorld 34 指针方式 xff1a const char s 61 34 HelloWorl
  • 【C++笔记】关于push_back(vector<int>());

    vector lt vector lt int gt gt vec vec push back vector lt int gt vec back push back vec n push back 今天在刷leetcode题的时候见到如上
  • C++ const用法总结

    const 是constant的简写 xff0c 是C 43 43 中极为常见且重要的关键字 xff0c 主要功能是设置某些参数不可修改 xff0c 今天对其用法进行总结记录 一 在变量中的用法 对变量进行修饰是const最基本的用法 xf
  • C++ 函数指针以及对void*(* func)(void *)的解读

    1 函数指针 我们知道调用一个函数的时候可以给其传递参数 xff0c 这个参数可以是变量 xff0c 也可以是变量的引用或者指针 那如果想传递另一个函数可以做到吗 xff1f C提供了函数指针这一用法来完成这个需求 函数在内存中是占据一片空
  • 线程同步之互斥锁

    1 问题 单线程执行任务的场景通常是简单不易出错的 xff0c 但是多线程执行任务时 xff0c 由于线程对于内存空间的共享特性 xff0c 在并发执行时却会产生一些意料之外的错误 如下列程序 xff1a include 34 unpthr
  • C++知识点梳理(1)

    C 43 43 程序由一个或者多个被称为函数的模块组成 和函数从main函数 xff08 全部小写 xff09 开始执行 xff0c 所以main函数必不可少 函数头指向函数的返回值 xff08 如果有函数头 xff09 的类型和函数期望通
  • 串口扩展研究

    串口扩展研究 曾几何时 xff0c 鼠标键盘还是PS 2接口 xff0c 在向USB过渡过程中会有一些 USB to PS 2 神器出现 当主设备 xff08 电脑 xff09 和从设备 xff08 鼠标键盘 xff09 都配标准的USB接
  • cmake 工具 三 add_libary, set_target_properties,target_link_libary,link_directories, link_libary

    一起通过一个例子学一下 add libary xff0c set target properties xff0c link libary xff0c target link libary 四个命令 首先创建如下的文件 xff1a 其中 bu
  • ESP32-C3入门教程 蓝牙篇①——基于Blufi 的 WiFi 智能配网

    文章目录 一 前言 二 WiFi配网方式 三 快速运行 四 运行效果 五 程序流程 精简 5 1 WiFi 初始化 5 2 BLE 初始化 5 3 WiFi 回调函数 5 4 BLE 回调函数 5 5 Blufi 回调函数 5 6 流程图
  • FreeRTOS STM32 线程创建失败,单步运行一看才发现是内存不够

    文章目录 一 FreeRTOS线程创建失败二 失败的解决方法三 成功的解决方法 一 FreeRTOS线程创建失败 今天用STM32板子跑一个测试demo xff0c 结果一上车就翻车 一个简简单单的线程起不来 断点进不去 xff0c 单步运
  • HTML5 播放器

    暂存一些HTML5播放器的资料 xff0c 慢慢消化 使用 HTML5 技术播放视频 使用 Clear Key 加密 MP4 视频并播放 Encrypted Media Extensions An introduction to Encry
  • ESP32-C3入门教程 蓝牙篇③——基于微信小程序和Esp Blufi实现 WiFi配网

    基于微信小程序和Esp Blufi实现 WiFi配网 文章目录 一 前言 二 软件框架 三 软件流程 四 API介绍 五 全部源码 一 前言 本文基于VS Code IDE进行编程 编译 下载 运行等操作 基础入门章节请查阅 ESP32 C
  • 路由器重温——接口配置与管理1

    路由器的接口相对于交换机接口来说最大的特点就是接口类型和配置更为复杂 xff0c 一般可以把路由器上的接口分为三大类 xff1a 一类是用于局域网组网的LAN接口 xff0c 另一类是用于广域网接入 互联的WAN接口 xff0c 最后一类可