标签:
1、二层转发
这里讨论以太报文的二层转发,即基于MAC地址的转发。一般在交换机的二层口(说明1)上,通过MAC层将接口设置为支持混杂模式(说明2),性能允许(说明4)的情况下,将所有报文上送CPU,接口上收到报文以后,对于合法报文(说明3)(说明5),首先检查该MAC地址对目的MAC为0xFFFFFFFF的广播报文在VLAN内进行广播,对MAC地址第一个字节BIT0为1的多播报文,按照多播报文处理。对于单波报文,先查MAC地址表,如果查到,则将报文发往相应的接口;如果未查到,未知单播向VLAN内的所有接口进行广播;还有一种情况就是如果目的MAC就是本接口的MAC,则说明报文发往本机,报文上送CPU,对IP地址进行检查,如果目的IP为本VLAN接口的IP地址,则作为正常报文接收;如果IP地址不是本机VLAN接口的IP地址,则查路由表,将报文进行三层转发。
说明1:二层口即用MAC地址唯一标识出的以太口,无法配置IP地址,若要配置IP,需要建立一个VLAN,并将二层口划归该VLAN,然后为VLAN建立一个VLAN接口,VLAN接口是一个三层虚接口,可以通过vlan接口,间接的为其配置IP地址。 一般情况下,二层口都会默认属于一个VLAN。
说明2:混杂模式允许目的MAC不是本接口MAC的报文进行上送;非混杂模式先将本接口的MAC地址设置到MAC层,然后开启非混杂模式,MAC层将自动丢弃目的MAC为非本接口MAC的报文,三层口一般设置为非混杂模式,让MAC曾屏蔽不是发往本接口的报文。
说明3:报文上送CPU以后,CPU首先会判断报文合法性,长度不足64B的runt帧、长度不足64B并且CRC检查错误的帧、长度正常但是CRC检查错误的帧、长度超大的帧等都会被直接丢弃;另外,MAC芯片还可能丢弃字节检查出现不够8bit的un-aligned帧,前述报文也可能被某些MAC芯片直接丢弃,并在MAC寄存器中给出丢弃报文的统计。
说明4:对于非线速转发的设备,如果打入线速的流量,CPU处理不过来,端口上的收包BUFF不够用后,会有报文被直接丢弃,这些丢弃的报文不会被统计到。一般情况下,会开启端口上的流控功能,通过MAC芯片自动向对端发送PAUSE帧,以通知对方自己无法处理所有报文,要真正生效,需要对端解析PAUSE帧才行。
说明5:对于STP相关的BPDU等不需要参与转发的协议报文,直接由上层协议模块处理。
2、三层转发
如果接口收到的报文,目的MAC是本接口的MAC,但是目的IP并不是本接口的IP地址,那么就需要根据IP地址进行转发。三层转发根据路由表进行,路由表记录了本设备学习到的IP地址与接口的关系。路由表中的路由表项分为直连路由、静态路由和动态路由。直连路由由设备从与其直接相连的网络设备中获取到(说明1),报文转发优先选择直连路由指向的接口。静态路由是网络管理员手工配置的路由表项,优先级低于直连路由。动态路由是通过路由协议从别的路由器获取到的,在转发中优先级最低。在负载分担的场景中,可能为同一个IP地址制定多条不同的等价路由,可以将报文发往不同的接口。如果无法给报文找到路由信息,报文将被丢弃。
说明1:路由学习的一个重要手段就是ARP协议,如果没有为一个报文找到路由信息,并且某个接口与该报文的目的IP在一个网段,那么将通过改接口发送广播报文,询问是否有设备持有报文的目的IP,如果直连的网络中有设备,该设备回复报文,完成路由学习,报文将被转发。设备上有可能支持免费ARP功能,它将定制向网络发送特定的ARP报文,实时上报字节的IP/MAC地址,防止IP地址冲突。有一种基于ARP的攻击时向路由器发送错误的ARP报文,携带一些重要的IP地址,这样路由器就会误以为攻击发起方持有那个重要IP,将报文转发给它,导致服务不可用,这种情况下,管理员一般在接口上配置拦截一些ARP报文,保证重要的IP地址的MAC不被更新。
标签:
原文地址:http://www.cnblogs.com/doescares/p/4396033.html