显示标签为“ethernet”的博文。显示所有博文
显示标签为“ethernet”的博文。显示所有博文

IGMP V1/V2/V3 比较 以及IGMP snooping

IGMP V1/V2/V3 比较
闲来有时间,整理最近工作中学习的一些知识,包括IGMP协议. 
首先,提出我所想的疑问, 请带着以下几个问题来看这篇文章,
1,为什么要诞生IGMP V2, V2比V1有什么大改进吗?
2,为什么又诞生了IGMP V3, V3又比V2好在什么地方呢? 
其次, 个人总结,
1, IGMP V1:   支持包类型, 两种  query 和report; 
                       router 等待超时时间才知道组成员已经不存在;
2,IGMP V2:   支持包类型, 三种, query,report和Leave,
                     增加Leave包的目的是,当组中最后一个成员离开时,通知路由器,快速收敛.
                      而且Query包也分为两种, 一为正常的Query,查询所有的组是否有成员(类似于V1);一种为特殊的query,在收到Leave包后, 路由器所发出的只查询该组的query包;
3,IGMP V3:  支持包的类型,两种, query和report. 
                       增加Source filtering功能, host可以通知路由器,指定只收或者不收,某些特定的组和原地址的包.  防止了Unkonw host的DOS攻击. 
                       query分为三种, 查询所有组的/特殊组的/特殊组和特殊源地址的;
                       关于V3为什么要取消Leave这个有助于快速收敛的包呢? 其实他将V2的Leave包的功能加入到report包中来了, 当host有任何变动且认为应该通知Router时,他就会发送report包. 还有一种情况下发生report包是回复query包的时候.
再次, 如何选举querier?
The querier election algorithm elects the router which has the smallest IP address as the network's querier.
再再次,顺便一起把Snooping也总结下,
Snooping主要是用于交换机上,来决定将收到的组播包转发到哪个或者哪些端口.
一个不支持snooping的交换机会将组播包当作广播处理,会转发到所有的端口,浪费资源.
最后, 参考资料.
RFC 3367
Cisco 关于IGMP V3的介绍

de-assert

assert一般理解成有效,好比说这个信号是低电平有效,就是说这个信号在asserted状态时是低电平。de-assert反之。

PON_TX_DISALBE

Disables/enables control of the transceiver output
transmission. This line is de-asserted at ONU
grant time.

SDRAM芯片的预充电与刷新操作

预充电
由于SDRAM的寻址具体独占性,所以在进行完读写操作后,如果要对同一L-Bank的另一行进行寻址,就要将原来有效(工作)的行关闭,重新发送行/列地址。L-Bank关闭现有工作行,准备打开新行的操作就是预充电(Precharge)。预充电可以通过命令控制,也可以通过辅助设定让芯片在每次读写操作之后自动进行预充电。实际上,预充电是一种对工作行中所有存储体进行数据重写,并对行地址进行复位,同时释放S-AMP(重新加入比较电压,一般是电容电压的1/2,以帮助判断读取数据的逻辑电平,因为S-AMP是通过一个参考电压与存储体位线电压的比较来判断逻辑值的),以准备新行的工作。具体而言,就是将S-AMP中的数据回写,即使是没有工作过的存储体也会因行选通而使存储电容受到干扰,所以也需要S-AMP进行读后重写。此时,电容的电量(或者说其产生的电压)将是判断逻辑状态的依据(读取时也需要),为此要设定一个临界值,一般为电容电量的1/2,超过它的为逻辑1,进行重写,否则为逻辑0,不进行重写(等于放电)。为此,现在基本都将电容的另一端接入一个指定的电压(即1/2电容电压),而不是接地,以帮助重写时的比较与判断。
现在我们再回过头看看读写操作时的命令时序图,从中可以发现地址线A10控制着是否进行在读写之后当前L-Bank自动进行预充电,这就是上文所说的“辅助设定”。而在单独的预充电命令中,A10则控制着是对指定的L-Bank还是所有的L-Bank(当有多个L-Bank处于有效/活动状态时)进行预充电,前者需要提供L-Bank的地址,后者只需将A10信号置于高电平。
在发出预充电命令之后,要经过一段时间才能允许发送RAS行有效命令打开新的工作行,这个间隔被称为tRP(Precharge command Period,预充电有效周期)。和tRCD、CL一样,tRP的单位也是时钟周期数,具体值视时钟频率而定。


(点小图查看大图)
点击图片看大图


读取时预充电时序图(上图可点击放大):图中设定:CL=2、BL=4、tRP=2。自动预充电时的开始时间与此图一样,只是没有了单独的预充电命令,并在发出读取命令时,A10地址线要设为高电平(允许自动预充电)。可见控制好预充电启动时间很重要,它可以在读取操作结束后立刻进入新行的寻址,保证运行效率。








误区:读写情况下都要考虑写回延迟
有些文章强调由于写回操作而使读/写操作后都有一定的延迟,但从本文的介绍中写可以看出,即使是读后立即重写的设计,由于是与数据输出同步进行,并不存在延迟。只有在写操作后进行其他的操作时,才会有这方面的影响。写操作虽然是0延迟进行,但每笔数据的真正写入则需要一个足够的周期来保证,这段时间就是写回周期(tWR)。所以预充电不能与写操作同时进行,必须要在tWR之后才能发出预充电命令,以确保数据的可靠写入,否则重写的数据可能是错的,这就造成了写回延迟。


(点小图查看大图)
点击图片看大图


数据写入时预充电操作时序图(可点击放大):注意其中的tWR参数,由于它的存在,使预充电操作延后,从而造成写回延迟

刷新
之所以称为DRAM,就是因为它要不断进行刷新(Refresh)才能保留住数据,因此它是DRAM最重要的操作。
刷新操作与预充电中重写的操作一样,都是用S-AMP先读再写。但为什么有预充电操作还要进行刷新呢?因为预充电是对一个或所有L-Bank中的工作行操作,并且是不定期的,而刷新则是有固定的周期,依次对所有行进行操作,以保留那些久久没经历重写的存储体中的数据。但与所有L-Bank预充电不同的是,这里的行是指所有L-Bank中地址相同的行,而预充电中各L-Bank中的工作行地址并不是一定是相同的。
那么要隔多长时间重复一次刷新呢?目前公认的标准是,存储体中电容的数据有效保存期上限是64ms(毫秒,1/1000秒),也就是说每一行刷新的循环周期是64ms。这样刷新速度就是:行数量/64ms。我们在看内存规格时,经常会看到4096 Refresh Cycles/64ms或8192 Refresh Cycles/64ms的标识,这里的4096与8192就代表这个芯片中每个L-Bank的行数。刷新命令一次对一行有效,发送间隔也是随总行数而变化,4096行时为15.625μs(微秒,1/1000毫秒),8192行时就为7.8125μs。
刷新操作分为两种:自动刷新(Auto Refresh,简称AR)与自刷新(Self Refresh,简称SR)。不论是何种刷新方式,都不需要外部提供行地址信息,因为这是一个内部的自动操作。对于AR, SDRAM内部有一个行地址生成器(也称刷新计数器)用来自动的依次生成行地址。由于刷新是针对一行中的所有存储体进行,所以无需列寻址,或者说CAS在RAS之前有效。所以,AR又称CBR(CAS Before RAS,列提前于行定位)式刷新。由于刷新涉及到所有L-Bank,因此在刷新过程中,所有L-Bank都停止工作,而每次刷新所占用的时间为9个时钟周期(PC133标准),之后就可进入正常的工作状态,也就是说在这9 个时钟期间内,所有工作指令只能等待而无法执行。64ms之后则再次对同一行进行刷新,如此周而复始进行循环刷新。显然,刷新操作肯定会对SDRAM的性能造成影响,但这是没办法的事情,也是DRAM相对于SRAM(静态内存,无需刷新仍能保留数据)取得成本优势的同时所付出的代价。
SR则主要用于休眠模式低功耗状态下的数据保存,这方面最著名的应用就是STR(Suspend to RAM,休眠挂起于内存)。在发出AR命令时,将CKE置于无效状态,就进入了SR模式,此时不再依靠系统时钟工作,而是根据内部的时钟进行刷新操作。在SR期间除了CKE之外的所有外部信号都是无效的(无需外部提供刷新指令),只有重新使CKE有效才能退出自刷新模式并进入正常操作状态。
数据掩码
在讲述读/写操作时,我们谈到了突发长度。如果BL=4,那么也就是说一次就传送4×64bit的数据。但是,如果其中的第二笔数据是不需要的,怎么办?还都传输吗?为了屏蔽不需要的数据,人们采用了数据掩码(Data I/O Mask,简称DQM)技术。通过DQM,内存可以控制I/O端口取消哪些输出或输入的数据。这里需要强调的是,在读取时,被屏蔽的数据仍然会从存储体传出,只是在“掩码逻辑单元”处被屏蔽。DQM由北桥控制,为了精确屏蔽一个P-Bank位宽中的每个字节,每个DIMM有8个DQM信号线,每个信号针对一个字节。这样,对于4bit位宽芯片,两个芯片共用一个DQM信号线,对于8bit位宽芯片,一个芯片占用一个DQM信号,而对于16bit位宽芯片,则需要两个DQM引脚。
SDRAM官方规定,在读取时DQM发出两个时钟周期后生效,而在写入时,DQM与写入命令一样是立即成效。


(点小图查看大图)
点击图片看大图


读取时数据掩码操作,DQM在两个周期后生效,突发周期的第二笔数据被取消(上图可点击放大)



(点小图查看大图)
点击图片看大图


写入时数据掩码操作,DQM立即生效,突发周期的第二笔数据被取消(上图可点击放大)

有关内存内部的基本操作就到此结束,其实还有很多内存的操作没有描述,但都不是很重要了,限于篇幅与必要性,我们不在此介绍,有兴趣的读者可以自行查看相关资料。 转自于 Xue163.com_主板

MII接口详解

词条简介
    MII (Media Independent Interface(介质无关接口);或称为媒体独立接口,它是IEEE-802.3定义的以太网行业标准。它包括一个数据接口,以及一个MAC和PHY之间的管理接口。数据接口包括分别用于发送器和接收器的两条独立信道。每条信道都有自己的数据、时钟和控制信号。MII数据接口总共需要16个信号。管理接口是个双信号接口:一个是时钟信号,另一个是数据信号。通过管理接口,上层能监视和控制PHY。MII (Management interface)只有两条信号线。
    MII标准接口用于连快Fast Ethernet MAC-block与PHY。"介质无关"表明在不对MAC硬件重新设计或替换的情况下,任何类型的PHY设备都可以正常工作。在其他速率下工作的与 MII等效的接口有:AUI(10M 以太网)、GMII(Gigabit 以太网)和XAUI(10-Gigabit 以太网)。
MII总线
    在IEEE802.3中规定的MII总线是一种用于将不同类型的PHY与相同网络控制器(MAC)相连接的通用总线。网络控制器可以用同样的硬件接口与任何PHY进行连接。
MII相关接口介绍
    以太网媒体接口有:MII RMII SMII GMII
    所有的这些接口都从MII而来,MII是(Medium Independent Interface)的意思,是指不用考虑媒体是铜轴、光纤、电缆等,因为这些媒体处理的相关工作都有PHY或者叫做MAC的芯片完成。
    MII支持10兆和100兆的操作,一个接口由14根线组成,它的支持还是比较灵活的,但是有一个缺点是因为它一个端口用的信号线太多,如果一个8端口的交换机要用到112根线,16端口就要用到224根线,到32端口的话就要用到448根线,一般按照这个接口做交换机,是不太现实的,所以现代的交换机的制作都会用到其它的一些从MII简化出来的标准,比如RMII、SMII、GMII等。
    RMII是简化的MII接口,在数据的收发上它比MII接口少了一倍的信号线,所以它一般要求是50兆的总线时钟。RMII一般用在多端口的交换机,它不是每个端口安排收、发两个时钟,而是所有的数据端口公用一个时钟用于所有端口的收发,这里就节省了不少的端口数目。RMII的一个端口要求7个数据线,比MII少了一倍,所以交换机能够接入多一倍数据的端口。和MII一样,RMII支持10兆和100兆的总线接口速度。
    SMII是由思科提出的一种媒体接口,它有比RMII更少的信号线数目,S表示串行的意思。因为它只用一根信号线传送发送数据,一根信号线传输接受数据,所以在时钟上为了满足100的需求,它的时钟频率很高,达到了125兆,为什么用125兆,是因为数据线里面会传送一些控制信息。SMII一个端口仅用4根信号线完成100信号的传输,比起RMII差不多又少了一倍的信号线。SMII在工业界的支持力度是很高的。同理,所有端口的数据收发都公用同一个外部的125M时钟。
    GMII是千兆网的MII接口,这个也有相应的RGMII接口,表示简化了的GMII接口。
MII工作原理
    “媒体独立”表明在不对MAC硬件重新设计或替换的情况下,任何类型的PHY设备都可以正常工作。包括分别用于发送器和接收器的两条独立信道。每条信道都有自己的数据、时钟和控制信号。
    MII数据接口总共需要16个信号,包括TX_ER,TXD,TX_EN,TX_CLK,COL,RXD,RX_EX,RX_CLK,CRS,RX_DV等。
    MII以4位半字节方式传送数据双向传输,时钟速率25MHz。其工作速率可达100Mb/s。
    MII管理接口是个双信号接口,一个是时钟信号,另一个是数据信号。
通过管理接口,上层能监视和控制PHY,其管理是使用SMI(Serial Management Interface)总线通过读写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的部分功能。
    它可以检测到网络上是否有数据在传送,如果有数据在传送中就等待,一旦检测到网络空闲,再等待一个随机时间后将送数据出去。如果两个碰巧同时送出了数据,那样必将造成冲突,这时候,冲突检测机构可以检测到冲突,然后各等待一个随机的时间重新发送数据。这个随机时间很有讲究的,并不是一个常数,在不同的时刻计算出来的随机时间都是不同的,而且有多重算法来应付出现概率很低的同两台主机之间的第二次冲突。
    通信速率通过双方协商,协商的结果是两个设备中能同时支持的最大速度和最好的双工模式,这个技术被称为Auto Negotiation或者NWAY。
    隔离变压器把PHY送出来的差分信号用差模耦合的线圈耦合滤波以增强信号,并且通过电磁场的转换耦合到连接网线的另外一端。
    RJ-45中1、2是传送数据的,3、6是接收数据的。
    新的PHY支持AUTO MDI-X功能,也需要隔离变压器支持,它可以实现RJ-45接口的1、2上的传送信号线和3、6上的接收信号线的功能自动互相交换。
GMII简介
    GMII (Gigabit MII)
    GMII采用8位接口数据,工作时钟125MHz,因此传输速率可达1000Mbps。同时兼容MII所规定的10/100 Mbps工作方式。
    GMII接口数据结构符合IEEE以太网标准。该接口定义见IEEE 802.3-2000。
    发送器:
    ◇ GTXCLK——吉比特TX..信号的时钟信号(125MHz)
    ◇ TXCLK——10/100M信号时钟
    ◇ TXD[7..0]——被发送数据
    ◇ TXEN——发送器使能信号
    ◇ TXER——发送器错误(用于破坏一个数据包)
    注:在千兆速率下,向PHY提供GTXCLK信号,TXD、TXEN、TXER信号与此时钟信号同步。否则,在10/100M速率下,PHY提供 TXCLK时钟信号,其它信号与此信号同步。其工作频率为25MHz(100M网络)或2.5MHz(10M网络)。
    接收器:
    ◇ RXCLK——接收时钟信号(从收到的数据中提取,因此与GTXCLK无关联)
    ◇ RXD[7..0]——接收数据
    ◇ RXDV——接收数据有效指示
    ◇ RXER——接收数据出错指示
    ◇ COL——冲突检测(仅用于半双工状态)
    管理配置
    ◇ MDC——配置接口时钟
    ◇ MDIO——配置接口I/O
    管理配置接口控制PHY的特性。该接口有32个寄存器地址,每个地址16位。其中前16个已经在“IEEE 802.3,2000-22.2.4 Management Functions”中规定了用途,其余的则由各器件自己指定。
RMII简介
    RMII: Reduced Media Independant Interface 即简化媒体独立接口;是标准的以太网接口之一,比MII有更少的I/O传输。
    关于RMII口和MII口的问题
    RMII口是用两根线来传输数据的,
    MII口是用4根线来传输数据的,
    GMII是用8根线来传输数据的。
    MII/RMII只是一种接口,对于10M线速,MII的速率是2.5M,RMII则是5M;对于100M线速,MII的速率是25M,RMII则是50M。
    MII/RMII 用于传输以太网包,在MII/RMII接口是4/2bit的,在以太网的PHY里需要做串并转换、编解码等才能在双绞线和光纤上进行传输,其帧格式遵循IEEE 802.3(10M)/IEEE 802.3u(100M)/IEEE 802.1q(VLAN)。
    以太网帧的格式为:前导符+开始位+目的mac地址+源mac地址+类型/长度+数据+padding(optional)+32bitCRC
    如果有vlan,则要在类型/长度后面加上2个字节的vlan tag,其中12bit来表示vlan id,另外4bit表示数据的优先级!

MTU设置 测试方法

http://linux-vbird.bluedata.org/linux_server/0140networkcommand.htm#MTU

数据分片

在应用程序中,必须关心IP数据的长度。如果它超过网络的MTU,那么就要对IP数据报进行分片。如果需要,源目的端之间的每个网络都要进行分片,并不只是发送端主机连接第一个网络才这样做。在此文中,将讨论IP分片的一些原理及其在分片中所需要的几个元素(此文只讨论MTU最大传输单位和MSS最大数据分段),本文对以太网的例子作了初略的分解。






关键字:IP分片,MTU,MSS



引言



分片是分组交换的思想体现,也是IP 协议解决的两个主


要问题之一。在IP 协议中的分片算法主要解决异种网最大


传输单元(MTU) 的不同.但是分组在传输过程中不断地分片和重组会带来很大的工作量还会增加一些不安全的因素。



正文:


一、什么是IP分片


IP分片是网络上传输IP报文的一种技术手段。IP协议在传输数据包时,将数据报文分为若干分片进行传输,并在目标系统中进行重组。这一过程称为分片( fragmentation)。


二、为什么要进行IP分片


通常要传输的IP报文的大小超过最大传输单位MTU(Maximum Transmission Unit)时就会产生IP分片情况。IP分片通常发生在网络环境中。比如说,在以太网(Ethernet)环境中可传输最大IP报文大小(MTU)为1500字节。而传输的报文大小要比1500字节大,这个时候就需要利用到分片技术,经分片后才能传输此报文。另外,使用UDP很容易导致IP分片,而很难强迫TCP发送一个需要进行分片的报文。



三、IP分片原理及分析


分片和重新组装的过程对传输层是透明的,其原因是当IP数据报进行分片之后,只有当它到达下一站时,才可进行重新组装,且它是由目的端的IP层来完成的。分片之后的数据报根据需要也可以再次进行分片。


IP分片和完整IP报文差不多拥有相同的IP头,ID域对于每个分片都是一致的,这样才能在重新组装的时候识别出来自同一个IP报文的分片。在IP头里面,16位识别号唯一记录了一个IP包的ID,具有同一个ID的IP分片将会重新组装;而13位片偏移则记录了某IP片相对整个包的位置;而这两个表中间的3位标志则标志着该分片后面是否还有新的分片。这三个标志就组成了IP分片的所有信息,接受方就可以利用这些信息对IP数据进行重新组织。


1、标志字段的作用


标志字段在分片数据报中起了很大作用,在数据报分片时把它的值复制到每片中。标志字段的其中一个比特称作“不分片”位,用其中一个比特来表示“更多的片”。除了最后一片外,其他每个组成数据报的片都要把该比特置1。片偏移字段指的是该片偏移原始数据报开始处的位置。另外,当数据报被分片后,每个片的总长度值要改为该片的长度值。如果将标志字段的比特置1,则IP将不对数据报进行分片。相反把数据报丢弃并发送一个I C M P差错报文并通知源主机废弃的原因。如果不是特殊需要,则不应该置1;最右比特置1表示该报文不是最后一个IP分片。


故意发送部分IP分片而不是全部,则会导致目标主机总是等待分片消耗并占用系统资源。某些分片风暴攻击就是这种原理。


这里以以太网为例,由于以太网传输电气方面的限制,每个以太网帧都有最小的大小64bytes最大不能超过1518bytes, 抛去以太网帧的帧头(DMAC目的MAC地址48bit=6Bytes+SMAC源MAC地址48bit=6Bytes+Type域2bytes)14Bytes和帧尾CRC校验部分4Bytes,那么剩下承载上层协议的地方也就是Data域最大就只能有1500Bytes,这就是前面所说的MTU的值。这个也是网络层协议非常关心的地方,因为网络层的IP协议会根据这个值来决定是否把上层传达下来的数据进行分片。就好比一个盒子没法装下一大块面包,我们需要把面包切成片,装在多个盒子里面一样的道理。


2、MTU原理
  当两台远程PC互联的时候,它们的数据需要穿过很多的路由器和各种各样的网络媒介才能到达对端,网络中不同媒介的MTU各不相同,就好比一长段的水管,由不同粗细的水管组成(MTU不同 )通过这段水管最大水量就要由中间最细的水管决定。
  对于网络层的上层协议而言(这里以TCP/IP协议族为例)它们对水管粗细不在意它们认为这个是网络层的事情。网络层IP协议会检查每个从上层协议下来的数据包的大小,并根据本机MTU的大小决定是否作“分片”处理。分片最大的坏处就是降低了传输性能,本来一次可以搞定的事情,分成多次搞定,所以在网络层更高一层(就是传输层)的实现中往往会对此加以注意!有些高层因为某些原因就会要求我这个面包不能切片,我要完整地面包,所以会在IP数据包包头里面加上一个标签:DF(Donot Fragment)。这样当这个IP数据包在一大段网络(水管里面)传输的时候,如果遇到MTU小于IP数据包的情况,转发设备就会根据要求丢弃这个数据包。然后返回一个错误信息给发送者。这样往往会造成某些通讯上的问题,不过幸运的是大部分网络链路MTU都是1500或者大于1500。


  对于UDP协议而言,这个协议本身是无连接的协议,对数据包的到达顺序以及是否正确到达不甚关心,所以一般UDP应用对分片没有特殊要求。


  对于TCP协议而言就不一样了,这个协议是面向连接的协议,对于TCP协议而言它非常在意数据包的到达顺序以及是否传输中有错误发生。所以有些TCP应用对分片有要求---不能分片(DF)。


3、MSS的原理


  MSS就是TCP数据包每次能够传输的最大数据分段。为了达到最佳的传输效能TCP协议在建立连接的时候通常要协商双方的MSS值,这个值TCP协议在实现的时候往往用MTU值代替(需要减去IP数据包包头的大小20Bytes和TCP数据段的包头20Bytes)所以往往MSS为1460。通讯双方会根据双方提供的MSS值得最小值确定为这次连接的最大MSS值。


当IP数据报被分片后,每一片都成为一个分组,具有自己的IP首部,并在选择路由时与其他分组独立。这样,当数据报的这些片到达目的端时有可能会失序,但是在IP首部中有足够的信息让接收端能正确组装这些数据报片。


尽管IP分片过程看起来是透明的,但有一点让人不想使用它:即使只丢失一片数据也要重传整个数据报。因为IP层本身没有超时重传的机制——由更高层来负责超时和重传(T C P有超时和重传机制,但UDP没有。一些UDP应用程序本身也执行超时和重传)。当来自T C P报文段的某一片丢失后,T C P在超时后会重发整个T C P报文段,该报文段对应于一份IP数据报。没有办法只重传数据报中的一个数据报片。事实上,如果对数据报分片的是中间路由器,而不是起始端系统,那么起始端系统就无法知道数据报是如何被分片的。就这个原因,经常要避免分片。


五、IP分片算法的原理


分片重组是IP层一个最重要的工作,其处理的主要思想:当数据包从一个网络A进入另一个网络B时,若原网络的数据包大于另一个网络的最大数据包的长度,必须进行分片。因而在IP数据包的报头有若干标识域注明分片包的共同标识号、分片的偏移量、是否最后一片及是否允许分片。传输途中的网关利用这些标识域进行分片,目有主机把收到的分片进行重组以恢重数据。因此,分片包在经过网络监测设备、安全设备、系统管理设备时,为了获取信息、处理数据,都必须完成数据包的分片或重组。











Identification


R


DF


MF


Fragment Offset



R:保留未用;DF:Don’t Fragment,“不分片”位,如果将这一比特置1,IP 层将不对数据报进行分片;MF:More Fragment,“更多的片”,除了最后一片外,其它每个组成数据报的片都要把比特置1;Fragment Offset:该片偏移原始数据包开始处的位置。偏移的字节数是该值乘以8。


六、总结

此论文阐述了什么是IP分片,并举例说明了IP的分片现像及其特点。简单论述了IP分片的原理。并加以重点分析了MTU,阐述了MTU在IP分片技术中所起的作用,简略讨论了ICMP不可达差错,利用UDP观察路径MTU发现过程。简述了MSS的作用以及其值是怎样得来的。本文只是对IP分片作了一个小小的论述。

小议TCP的MSS(最大分段)以及MTU

[前言]
漫漫51长假,没有好的去处,只能每日上网消遣,某日逛到NBO灌水,见一帖曰:无法通过2514路由器上MSN(出口为ADSL线路,通过PPPoE)吾心想,ADSL---PPPoE,那肯定就是MTU之问题。回帖告之:改PC之MTU。


过数日,又逛到NBO,又见这帖,后有人回曰:ip tcp adjust-mss 1452后帖主又跟:问题解决。


吾纳闷之,后百思而得其解,So决

定将自己所得写出来,分享给大家。


[背景知识]
MTU: Maxitum Transmission Unit 最大传输单元


MSS: Maxitum Segment Size 最大分段大小(偶是直译,翻译的不好,不要打
俺PP)


PPPoE: PPP Over Ethernet(在以太网上承载PPP协议)


[分析过程]
先说说这MTU最大传输单元,这个最大传输单元实际上和链路层协议有着密切的关系,让我们先仔细回忆一下EthernetII帧的结构DMAC+SMAC+Type+Data+CRC
由于以太网传输电气方面的限制,每个以太网帧都有最小的大小64bytes最大不能超过1518bytes,对于小于或者大于这个限制的以太网帧我们都可以视之为错误的数据帧,一般的以太网转发设备会丢弃这些数据帧。
(注:小于64Bytes的数据帧一般是由于以太网冲突产生的“碎片”或者线路干扰或者坏的以太网接口产生的,对于大于1518Bytes的数据帧我们一般把它叫做Giant帧,这种一般是由于线路干扰或者坏的以太网口产生)


由于以太网EthernetII最大的数据帧是1518Bytes这样,刨去以太网帧的帧头(DMAC目的MAC地址48bit=6Bytes+SMAC源MAC地址48bit=6Bytes+Type域2bytes)14Bytes和帧尾CRC校验部分4Bytes(这个部门有时候大家也把它叫做FCS),那么剩下承载上层协议的地方也就是Data域最大就只能有1500Bytes这个值我们就把它称之为MTU。这个就是网络层协议非常关心的地方,因为网络层协议比如IP协议会根据这个值来决定是否把上层传下来的数据进行分片。就好比一个盒子没法装下一大块面包,我们需要把面包切成片,装在多个盒子里面一样的道理。


当两台远程PC互联的时候,它们的数据需要穿过很多的路由器和各种各样的网络媒介才能到达对端,网络中不同媒介的MTU各不相同,就好比一长段的水管,由不同粗细的水管组成(MTU不同 )通过这段水管最大水量就要由中间最细的水管决定。


对于网络层的上层协议而言(我们以TCP/IP协议族为例)它们对水管粗细不在意它们认为这个是网络层的事情。网络层IP协议会检查每个从上层协议下来的数据包的大小,并根据本机MTU的大小决定是否作“分片”处理。分片最大的坏处就是
降低了传输性能,本来一次可以搞定的事情,分成多次搞定,所以在网络层更高一层(就是传输层)的实现中往往会对此加以注意!有些高层因为某些原因就会要求我这个面包不能切片,我要完整地面包,所以会在IP数据包包头里面加上一
个标签:DF(Donot Fragment)。这样当这个IP数据包在一大段网络(水管里面)传输的时候,如果遇到MTU小于IP数据包的情况,转发设备就会根据要求丢弃这个数据包。然后返回一个错误信息给发送者。这样往往会造成某些通讯上的问题,不过幸运的是大部分网络链路都是MTU1500或者大于1500。


对于UDP协议而言,这个协议本身是无连接的协议,对数据包的到达顺序以及是否正确到达不甚关心,所以一般UDP应用对分片没有特殊要求。


对于TCP协议而言就不一样了,这个协议是面向连接的协议,对于TCP协议而言它非常在意数据包的到达顺序以及是否传输中有错误发生。所以有些TCP应用对分片有要求---不能分片(DF)。


花开两朵,各表一枝,说完MTU的故事我们该讲讲今天的第二个猪脚---PPPoE所谓PPPoE就是在以太网上面跑PPP协议,有人奇怪了,PPP协议和Ethernet不都是链路层协议吗?怎么一个链路层跑到另外一个链路层上面去了,难道升级成网络层协议了不成。其实这是个误区:就是某层协议只能承载更上一层协议。


为什么会产生这种奇怪的需求呢?这是因为随着宽带接入(这种宽带接入一般为Cable Modem或者xDSL或者以太网的接入)由于以太网缺乏认证计费机制而传统运营商是通过PPP协议来对拨号等接入服务进行认证计费的,所以就出了这么一个怪胎:PPPoE。(有关PPPoE的详细介绍参见V大以及本站其他成员的一些介绍文章,我就不啰里啰唆的了)


PPPoE带来了好处,也带来了一些坏处,比如:二次封装耗费资源,降低了传输效能等等,这些坏处俺也不多说了,最大的坏处就是PPPoE导致MTU变小了以太网的MTU是1500,再减去PPP的包头包尾的开销(8Bytes),就变成1492。


如果两台主机之间的某段网络使用了PPPoE那么就会导致某些不能分片的应用无法通讯。


这个时候就需要我们调整一下主机的MTU,通过降低主机的MTU,这样我们就能够顺利地进行通讯了。


当然对于TCP应用而言还有另外的解决方案。
马上请出今天第三位猪脚:MSS。
MSS最大传输大小的缩写,是TCP协议里面的一个概念。
MSS就是TCP数据包每次能够传输的最大数据分段。为了达到最佳的传输效能TCP协议在建立连接的时候通常要协商双方的MSS值,这个值TCP协议在实现的时候往往用MTU值代替(需要减去IP数据包包头的大小20Bytes和TCP数据段的包头20Bytes)所以往往MSS为1460。通讯双方会根据双方提供的MSS值得最小值确定为这次连接的最大MSS值。


介绍完这三位猪脚s
我们回过头来看前言里面的那个问题,我们试想一下,如果我们在中间路由器上把每次TCP连接的最大MSS进行调整这样使得通过PPPoE链路的最大MSS值加上数据包头包尾不会超过PPPoE的MTU大小1492这样就不会造成无法通讯的问题.所以上面的问题可以通过ip tcp adjust-mss 1452来解决。


当然问题也可以通过修改PC机的MTU来解决。


[后记]
Cisco的TCP Adjust MSS Feature:


The TCP MSS Adjustment feature enables the configuration of the
maximum segment size (MSS) for transient packets that traverse a router,
specifically TCP segments in the SYN bit set, when Point to Point Protocol
over Ethernet (PPPoE) is being used in the network. PPPoE truncates the
Ethernet maximum transmission unit (MTU) 1492, and if the effective MTU
on the hosts (PCs) is not changed, the router in between the host and the
server can terminate the TCP sessions. The ip tcp adjust-mss command
specifies the MSS value on the intermediate router of the SYN packets to
avoid truncation.
俺太懒了就不翻译了。。自己慢慢看

EPON系统

1.1 EPON系统
1.1.1 EPON系统具有哪些优点?
答:EPON系统是点对多点的结构,节省大量的主干光纤和光收发器。

EPON是基于以太网的无源光网络,无源设备可靠性高。

EPON系统相对于其它接入手段,能够提供高带宽和高带宽利用率。

EPON传输距离规格有10KM、20KM两种,克服传统接入手段的距离限制。

EPON系统网络层次简单,维护成本低。

EPON系统组网灵活,支持树型,星型,总线型。

EPON网络不仅仅可作为运营商宽带接入手段,也可作为广电的回传输网络,视频监控的图像传输系统,甚至是政府的基层单位接入。这些正符合相关部门建设城市综合信息平台的需求

1.1.2 EPON和APON、GPON的区别?
答:EPON是基于以太网的无源光网络,采用的标准是IEEE 802.3ah。APON/BPON是基于ATM的无源光网络,它的标准是ITU-T G.983.X,现已基本淘汰。GPON是APON/BPON的升级版本,基于ITU-T G.984.X。但目前为止,业界还没有较成熟的GPON芯片,设备由于需要对TDM,SDH,ATM,专线等多种业务进行封装映射,往往很复杂而且价格过高。目前,IP/Ethernet应用占到整个局域网通信的95%以上,EPON由于使用上述经济而高效的结构,从而成为连接接入网最终用户的一种最有效的通信方法。10Gbit/s以太主干和城域环的出现也将使EPON成为未来全光网中最佳的最后一公里的解决方案。总而言之,GPON在速率上有优势,EPON各个产业链成熟度上有较大优势,性价比较高,同样能够支持CATV,语音,IPTV等多种业务。在最近1,2年内,EPON领先于GPON。

EPON和GPON具体对比可参考《EPON GPON技术标准对比技术白皮书》。

1.1.3 EPON系统如何保证数据的安全性?
答:由于分光器仅仅简单的在物理层上把传输数据的光分成多份,所以EPON系统是一个天然的广播网,在物理层上所有ONU能够接收到相同的数据。但是每一个ONU有自己的链路标识LLID,它会选择自己的数据报文上传,即使物理层面上数据被监听,EPON系统仍然能够提供AES128位上下行数据加密,从而保证数据的安全性。

1.1.4 什么是DBA算法?
答:DBA就是动态带宽分配的英文缩写。以往给每个用户固定分配最小和最大带宽,在这种静态带宽分配的状况下,上行带宽利用率往往很低,不能根据每个用户的实际使用情况动态分配带宽,而EPON系统使用了DBA算法后,OLT能够根据每个ONU上报的数据传输情况动态给每个ONU分配带宽,从而大大提高了上行带宽利用率。DBA算法有多种,每种算法有不同的优点适应不同的实际带宽利用需求。可以根据具体情况在OLT上选择加载不同的DBA算法。

1.1.5 EPON无源光网络是否支持多级连接?
答:EPON系统的组网形式灵活多样,只要保证最终ONU处的光衰减值在ONU的光接收灵敏度之上即可。一般支持1:2和1:16分光器,1:4和1:8分光器两级连接。5:95和5:95分光器可以支持多级连接,但是多级连接会造成光插损值较大,故障点较多,维护定位难的问题,请根据实际情况斟酌。一般情况下推荐使用一级分光的方式。

具体多级连接设计方式可以参考《EPON光路设计》。

1.1.6 EPON系统是如何处理组播、广播报文?
答:EPON实现了一个点对点仿真协议子层,该子层使得点对多点网络拓扑对于高层来说就是点对点链路的集合。该子层是通过在每个数据报的前面加上一个LLD(Logical Link Identification)逻辑链路标识来实现的。该LLID将替换前导码中的两个字节。数据从OLT到多个ONU以广播式下行,根据IEEE802.3ah协议,每一个数据帧的帧头包含前面注册时分配的、特定ONU的逻辑链路标识(LLID),该标识表明本数据帧是给ONU(ONU1、ONU2、ONU3......ONUn)中的唯一一个。另外,部分数据帧把广播模式位(LLID左边第一位)置1可以是给所有的ONU的广播报文或者特殊的一组ONU的组播报文,单播报文,广播模式位置零。当单播数据信号到达ONU时,ONU根据LLID,在物理层上做判断,接收给它自己的数据帧,摒弃那些给其它ONU的数据帧。如果是广播模式位置1的数据帧到达ONU时,ONU根据目的MAC地址决定接受方式,如果此MAC地址是广播MAC则接收。如果是组播MAC,当ONU处于透传组播流的工作模式时,接收数据包;如果ONU处于过滤组播流工作模式时,目的MAC地址和ONU组播MAC表能够匹配则接受,否则丢弃。一般ONU下接楼道交换机时,组播设置为透传模式,如果ONU直接连接用户PC,组播设置过滤模式。

1.1.7 EPON系统是如何保证QOS的?
答:EPON是Ethernet Over PON,也是以太网技术。EPON主要特点就是解决点对多点传输问题,屏蔽点对多点的特点,对2层以上协议来讲是透明的,和传统以太网没有区别。EPON系统没有特别的QOS技术,其策略与Ethernet的Qos策略一致。

1.1.8 EPON能支持1:64、1:128甚至更高的分光比吗?
答:毫无疑问,LLID个数的多少就决定了ONU个数的多少,EPON标准中LLID是由16个bit规定的,因此支持64、128甚至更多的LLID都是可以的;但是ONU个数增加后,每个ONU均分的带宽下降,另一方面光路损耗也在加大。目前除实验环境外,还没有报道1:128分光比的实际使用。目前S7500E OLT支持1:64分光比。

1.1.9 EPON系统光路保护倒换方案?
答:根据中国电信EPON技术要求,光路保护倒换方案有主干光纤保护倒换和全光纤保护倒换方案两种。


1.2 PON
1.2.1 EPON支持的光纤类型有要求吗?
答:有要求,EPON系统需要使用兼容G.652标准的单模光纤。上行采用1310nm的波长,下行是1490nm的波长,所以上下行数据只需要一芯光纤即可。

1.2.2 EPON能支持40,60,80KM传输距离吗?
答:EPON技术标准在1:32分光比下有10KM和20KM两种传输规格,在分光比更小的情况下,的确可以传输更远一些,ONU也能正常运行。但无法支持上述的传输距离。

1.2.3 目前EPON常用的光纤接口类型是什么?
答:目前ONU/OLT/分光器上的所有接口都是SC/PC接口(接口为蓝色)。如果局方已有光纤,分光器等是其它接口的话,可以使用跳纤转接一下,跳纤两头是不同接口,可连接不同接口。

1.2.4 ONU、OLT光模块发射的激光对人体有损害吗?
答:EPON光模块的光功率是激光1级防护等级。对人体皮肤不会造成灼伤,但是禁止直射入眼睛,否则可能对眼睛有损害。

1.2.5 ONU、OLT和分光器的光纤端口接头如何保护?
答:光纤端口接头在没有插接的情况下需要套上防尘帽。禁止长时间裸露光纤端口接头在空气中。清洁时需要专门的光纤清洁器,或者光纤端口清洁纸。坚决禁止使用柔软的餐巾纸或者眼镜布之类。

1.2.6 光纤使用要注意哪些地方?
答:一般需要通过测试现场光纤的插损(光纤衰减度)来评估光纤的可用性。一般单模光纤的插损值为0.3-0.4dB/Km,如果实测插损和计算值相差很大,说明光纤存在以下可能问题:(1)光纤接口没有插紧完全对接上;(2)光纤接口端面受灰尘等污染;(3)光纤中间存在物理损坏,部分损伤或者断开;(4)光纤弯曲半径小于8cm;(5)其他相关问题。

1.2.7 分光器坏掉能否上报告警?
答:不能,分光器是无源器件,无法进行管理,对网管设备来讲,就相当于光纤。分光器坏了,分光器下接的所有ONU会下线,可上报ONU DOWN告警,以此判断分光器已坏。

1.2.8 能否通过中继设备增加EPON传输距离?
答:不能,EPON的光模块是专门针对点对多点的设计光模块,有一定的特殊性,不能简单增加光能量来增加传输距离。即使不考虑到其它的光学参数会造成各种光传输问题。仅仅把OLT侧光增强也无多大用处。因为反向上行也需要在每个ONU处增加中继设备来适应长距离传输,这在成本上是不现实的。

1.2.9 ET704系列各款ONU之间有啥区别。
答:软件功能一致。主要设备形态不同,应根据不同形态特点决定不同的应用环境。ET704-L: 塑料外壳,普通形ONU,可应用于大多数无特殊要求的场景;ET704-B-L:塑料外壳,内部集成盘纤盒,光口隐藏,在最终接入段光纤工程施工上具有较大的便利性;ET704-A-L钣金铁盒外壳,支持-40~55摄氏度温度范围,-10摄氏度以下需要加热设备,可应用于温度环境要求苛刻的环境。ET254-L-AC60是针对广电市场需求的ONU,支持60AV供电。

1.2.10 ONU常发光开关有何用?
答:因为ONU是突发发光,因此采用常规光功率计无法测试ONU的发光功率,必须使用 PON功率计来测量ONU的发光功率;如果ONU具备常发光功能,就可以使用普通光功率计测试ONU的发光功率,判断ONU是否存在故障。

1.2.11 ONU 如何区分光纤断及掉电两种故障?
答:光纤断和ONU掉电都会引起ONU端口down及deregister事件,有些ONU在检测到掉电后会立即向OLT上报一个dying gasp 事件;因此能区分光纤断及掉电两种故障。

EPON设备互通性

1 引言:
  PON系统(包括BPON、EPON、GPON等)采用无源光传输介质,具有系统可靠性高、维护成本低、业务透明性好、成本相对较低等特点,被认为是未来固定宽带接入的发展趋势。EPON在无源光网络的体系架构基础上,采用扩展的以太网数据链路层协议,具有协议简单、成本低、业务能力强等优点。自EPON概念提出以来,受到业界的高度关注。IEEE的EFMA(第一公里以太网联盟)于2004年6月发布了EPON的技术规范IEEE 802.3ah,受到了业界的广泛支持,相关的芯片和设备均已推出,也有一定的应用。
  从xDSL技术和移动通信技术发展的经验来看,实现EPON网络终端的开放性可以有效降低网络建设成本和运维成本,促进其应用,有利于形成完整的产业环境,是技术发展的趋势。因此,能否实现异厂商OLT和ONU的互通,是衡量EPON技术是否成熟的关键。从目前来看,异厂商的OLT与ONU(特别是异芯片厂商的OLT和ONU)互通尚难实现。因此,尽快确定影响互通的因素,设定互通的目标,提出解决的办法,是目前亟待解决的重要问题
  为加快EPON和FTTH产业的发展,推动EPON互通进程,中国电信股份有限公司组织进行了EPON芯片级互通性的测试,并取得了阶段性的成果。本文主要根据此次EPON芯片级互通性测试的结果,探讨影响EPON系统互通性的因素,并提出了解决互通问题的方法。
2 EPON互通的3个层次:
  IEEE 802.3ah对EPON系统的物理层和数据链路层(PMD(物理介质相关)子层、RS(调和子层)、MAC控制子层、OAM子层等)制定了相关规范,对动态带宽分配、终端设备的认证、服务质量(QoS)保证、业务层功能(如组播、VoIP和TDM业务的承载、VLAN等)、指配和管理等方面均未做描述。而就具体的设备实现而言,这些功能都是必需的。因此,该标准尚无法保证EPON设备的互通性。另一方面,从目前来看,IEEE 802.3ah在个别问题上也存在不完善或者模糊之处,在某些问题上未做详细的规定或者是可选的,都会导致各厂商在理解和实现上的差异,从而导致互通性问题。
  考虑网络设备的实现和实际业务需求,可以将EPON的互通性问题分为3个层次:传输层的互通、业务层的互通和管理层的互通,必须实现这3个层次的互通,才能实现真正意义上的EPON系统互通。
2.1传输层的互通:
  传输层的互通主要指在IEEE 802.3ah标准体系下,在ISO参考模型中的物理层和数据链路层实现不同厂商的OLT和ONU之间的以太网业务的互操作,主要包括PMD、PMA(物理介质接入)、PCS(物理编码子层)、RS、MAC、MPCP(多点控制协议)等子层的互通。另外,DBA(动态带宽分配)、加密、FEC(前向纠错)等功能也属于传输层的功能。传输层的互通是其他一切互通工作的基础。没有传输层的互通,其他层次的互通无从谈起。但对于电信级的网络来讲,传输层的互通是远远不够的,还需要能够实现具有服务质量保证的综合业务接入功能和所需的网络管理功能。
2.2业务层的互通:
  业务层的互通主要是指为正常开展各种业务(数据、语音、视频等)所必须的协议的一致性和功能上的互操作。业务层的互通是与运营商的业务模式相关的,不同的业务模式对EPON的互通性有着不同的要求。一般来讲,除普通上网业务、FTP、网络游戏等普通数据业务外,EPON系统还要能够提供语音、视频(如IPTV、视讯电话等)甚至TDM业务,并且要能够保证多业务接入环境下的QoS。针对特定的业务,可能有不同的实现协议和具体参数,这种实现上的差异性会导致互通问题。在多业务综合接入环境下,如何实现QoS保证也是影响业务层互通的因素之一。为实现业务层的互通,需要定义更清晰的业务层功能需求和实现标准。[BR]2.3管理层的互通
  管理层的互通是指通过某OLT厂商的网络管理系统,能够对异厂商的ONU进行正常的认证、配置管理、故障管理、性能管理、安全管理等OAM功能。IEEE 802.3ah第57条款定义了以太网的OAM子层功能,但也仅仅是规范了OAM功能发现、链路状态监控和诊断、链路失效和缺陷的定位机制等链路层的OAM功能,对其他方面和更高层的管理功能尚未规范,如对ONU的认证、对业务层的管理等。另外,中国电信股份有限公司通过测试发现,一些厂商对于OAMPDU的某些字节含义的理解也存在错误。这都将导致OAM互通性方面的问题。
3 影响EPON互通性的因素
  导致目前市场上EPON设备无法互通的原因比较复杂,主要是由于现有规范覆盖范围比较有限、各厂商对协议理解上的分歧以及实现方式上的差异。下面对影响EPON互通性的一些因素进行具体分析。对于协议已有明确定义,而由于厂家对协议理解上的错误和具体实现方面的失误(如Preamble的CRC-8计算错误、MPCPDU的“mode&LLID”字节的处理、OAMPDU消息中“flag”字节的值等)导致的互通性问题,本文不做详细阐述。
3.1物理层的互通性
  在物理层影响EPON互通性的因素主要是FEC问题。FEC通过增加以太网帧的冗余字节降低系统的误码率,增加光功率预算。EPON系统采用一种基于帧的线性分组码:Reed-Solomon(239,255)编码(该码属于一种系统码,也就是说将校验码附加在数据分组的后面),以有利于实现支持FEC的设备和不支持FEC的设备互通。为了将FEC编码的以太网帧与未编码的以太网帧区分开来,IEEE 802.3ah定义了三种FEC帧定界符:S_FEC、T_FEC_E、T_FEC_O,它们的传输序列如下:S_FEC /K28.5/D6.4/K28.5/D6.4/S/;T_FEC_E /T/R/I/T/R/;T_FEC_O /T/R/R/I/T/R/。
  S_FEC和T_FEC_O/E中的前两个字节(/T/R/)与普通以太网帧的帧起始定界符(SPD)和帧结束定界符(EPD)基本相同,也不会导致互通性问题。但是对于不支持FEC的设备而言,在一个EPD和下一个SPD之间应该全部为空闲字节(/I/),而在FEC编码的以太网帧中,其T_FEC_O/E的最后两个字节(/T/R/)和Parity、T_FEC_E等均非空闲字节,所以会在物理层触发False_Carrier事件告警(在以太网中,如果帧间的空闲字节发生误码才会触发该事件)。False Carrier计数器的值会随着False_Carrier事件告警的增加而增加,这样会淹没真正的False_Carrier事件,给运行维护带来一定的困难。
  此外,如果OLT和ONU分别使用了不同的PMD光接口(1000BASE-PX10和1000BASE-PX20),在某些线路长度和分光比的情况下可能会发生功率衰耗过大或者功率过载等问题。这些问题可以通过更换光模块、调整线路衰耗等方法比较容易地解决。
3.2数据链路层的互通性
  帧发送的字节位置问题:在EPON系统中,以太网帧间填充的都是idle码组(包含两个字节/K28.5/D16.2/),因此存在发送以太网帧的第一个字节的位置问题,即是在奇字节时刻还是偶字节时刻。对于ONU和OLT来讲,都必须能够正确地处理不同时刻发送的以太网帧,否则会导致部分以太网帧的丢失,进而无法互通。
   ONU的注册与认证:在EPON系统中,为验证ONU的有效性和合法性,需要进行ONU的认证。ONU的认证一般在MPCP发现和OAM发现过程之后。图4给出了典型的ONU发现、注册和认证的简明流程。
   目前,有多种ONU认证的实现方式,普遍采用ONU的MAC地址作为标识。采用ONU的MAC地址进行认证是最简单的方式,ONU不需要支持任何认证功能。如果OLT和ONU都采用这种机制,最易于实现ONU的认证。802.1x方式具有更加完善的认证机制,但实现比较复杂。对于EPON系统的互通性而言,采用不同的ONU认证方法和不同的ONU标识都会导致无法互通,需要运营商制定统一的认证流程和参数。
  MPCP发现过程:在MPCP的流程中,存在几个参数,如在Discovery Gate和Register消息中的同步时间(synctime),Normal Gate消息中的ONU的开窗时间(grantlength)等。如果synctime的定义不一致或者grantlength值偏小,都会导致MPCP发现过程无法完成或者业务不通。解决办法是要求厂商统一按照IEEE 802.3ah的最新修订版本设置synctime值,同时使OLT的grantlength值要略大一些(>0x8A)。
另外,对于注册过程,IEEE 802.3ah协议只定义了正常注册过程,对于异常情况的处理,各芯片厂家可能不相同,导致不能兼容。如在MPCP发现过程中没有规定,ONU没有在规定的时间、规定的窗口发送Register_ACK的情况下,OLT如何处理,也没有规定ONU注册失败情况下的强制解注册的流程,这些都会导致无法互通。

以太网设计FAQ:以太网MAC和PHY

问:如何实现单片以太网微控制器?
答:诀窍是将微控制器、以太网媒体接入控制器(MAC)和物理接口收发器(PHY)整合进同一芯片,这样能去掉许多外接元器件。这种方案可使MAC和PHY实现很好的匹配,同时还可减小引脚数、缩小芯片面积。单片以太网微控制器还降低了功耗,特别是在采用掉电模式的情况下。


问:以太网MAC是什么?


答:MAC就是媒体接入控制器。以太网MAC由IEEE-802.3以太网标准定义。它实现了一个数据链路层。最新的MAC同时支持10Mbps和100Mbps两种速率。通常情况下,它实现MII接口。


问:什么是MII?


答:MII即媒体独立接口,它是IEEE-802.3定义的以太网行业标准。它包括一个数据接口,以及一个MAC和PHY之间的管理接口(图1)。数据接口包括分别用于发送器和接收器的两条独立信道。每条信道都有自己的数据、时钟和控制信号。MII数据接口总共需要16个信号。管理接口是个双信号接口:一个是时钟信号,另一个是数据信号。通过管理接口,上层能监视和控制PHY。






以太网设计FAQ:以太网MAC和PHY


问:以太网PHY是什么?


答:PHY是物理接口收发器,它实现物理层。IEEE-802.3标准定义了以太网PHY。它符合IEEE-802.3k中用于10BaseT(第14条)和100BaseTX(第24条和第25条)的规范。


问:造成以太网MAC和PHY单片整合难度高的原因是什么?


答:PHY整合了大量模拟硬件,而MAC是典型的全数字器件。芯片面积及模拟/数字混合架构是为什么先将MAC集成进微控制器而将PHY留在片外的原因。更灵活、密度更高的芯片技术已经可以实现MAC和PHY的单芯片整合。


问: 除RJ-45接口外,还需要其它元件吗?


答:需要其它元件。虽然PHY提供绝大多数模拟支持,但在一个典型实现中,仍需外接6、7只分立元件及一个局域网绝缘模块。绝缘模块一般采用一个1:1的变压器。这些部件的主要功能是为了保护PHY免遭由于电气失误而引起的损坏。


问:10BaseT和100BaseTX PHY实现方式不同的原因何在?


答:两种实现的分组描述本质上是一样的,但两者的信令机制完全不同。其目的是阻止一种硬件实现容易地处理两种速度。10BaseT采用曼彻斯特编码,100BaseTX采用4B/5B编码。


问:什么是曼彻斯特编码?


答:曼彻斯特编码又称曼彻斯特相位编码,它通过相位变化来实现每个位(图2)。通常,用一个时钟周期中部的上升沿表示“1”,下降沿表示“0”。周期末端的相位变化可忽略不计,但有时又可能需要将这种相位变化计算在内,这取决于前一位的值。






以太网设计FAQ:以太网MAC和PHY


问:什么是4B/5B编码?


答:4B/5B编码是一种块编码方式。它将一个4位的块编码成一个5位的块。这就使5位块内永远至少包含2个“1”转换,所以在一个5位块内总能进行时钟同步。该方法需要25%的额外开销。 

PHY, MAC 及 MII

以太网(Ethernet)是一种计算机局域网组网技术,该技术基于IEEE制定的IEEE 802.3标准,它规定了包括物理层的连线、电信号和介质访问层协议的内容。
  以太网是当前应用最普遍的局域网技术,它很大程度上取代了其他局域网标准,如令牌环、FDDI和ARCNET。

  历经100M以太网在上世纪末的飞速发展后,目前千兆以太网甚至10G以太网正在国际组织和领导企业的推动下不断拓展应用范围。

  基于以太网的应用一定时期内是研究开发热点。

 

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

 

  MAC是Media Access Control 的缩写,即媒体访问控制子层协议。

  该协议位于OSI七层协议中数据链路层的下半部分,主要负责控制与连接物理层的物理介质。

  在发送数据的时候,MAC协议可以事先判断是否可以发送数据,如果可以发送将给数据加上一些控制信息,最终将数据以及控制信息以规定的格式发送到物理层。

  在接收数据的时候,MAC协议首先判断输入的信息并是否发生传输错误,如果没有错误,则去掉控制信息发送至LLC层。

  以太网MAC由IEEE-802.3以太网标准定义。

 

  MII,Media Independent 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等。

  MII以4位半字节方式传送数据双向传输,时钟速率25MHz。其工作速率可达100Mb/s。

 

  MII管理接口是个双信号接口,一个是时钟信号,另一个是数据信号。

  通过管理接口,上层能监视和控制PHY,其管理是使用SMI(Serial Management Interface)总线通过读写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的部分功能。

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

 

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

 

  隔离变压器把PHY送出来的差分信号用差模耦合的线圈耦合滤波以增强信号,并且通过电磁场的转换耦合到连接网线的另外一端。

 

  RJ-45中1、2是传送数据的,3、6是接收数据的。

  新的PHY支持AUTO MDI-X功能,也需要隔离变压器支持,它可以实现RJ-45接口的1、2上的传送信号线和3、6上的接收信号线的功能自动互相交换。