CN002 - L2,L3转发-2
001. L2,L3 转发 -2
二层转发:
假设Pc1,和Pc2发ping包,pc1的IP地址是1.1.1.3,网关掩码是255.255.0.0,
pc2的IP地址是1.1.1.5,网关掩码是255.255.0.0,
Pc1 发ping包时,先比较pc1的IP和pc1网关相与是否等于pc2的IP和pc1网关相与的值,
若相等,则认为是二层转发。
若认为是二层转发则查本机的ARP表,看表中是否有这一项。
若有:
则可由pc2的IP得到pc2的mac,然后发ICMP requst报文给L3,
L3收到后,先查pct(端口配置表)表,比较目的mac是否与L3的MAC相等,
若相等,则认为是三层,
在此情况下是不相等,则接着查vlan表,得到vlanid,
然后以vlanid和目的mac为索引,查单播mac表,
若查得到,则可得到出端口号,
然后,帧走到下行,在下行入队列之后,学习添加pc1的mac表项。
若在单播MAC表中查不到,
则根据原来vlan表中查到的mid,查Mid up表,然后由此表可知有那些lpu 板上配有此vlan,(因为是广播,所以就不查单播mac表了),
然后再上网板前,把此ICMP报文复制给每个lpu板一份,
然后下网板的时候,查mid down表,得到本板上哪些端口是属于这个vlan的,对属于本vlan的各个端口(pc1所在的端口除外)都复制一份ICMP报文下发下去,
当进行到本板的最后一个端口时,添加有关pc1的单播mac表项。
各端口的pc收到此ICMP报文后,比较目的mac是否与本机相同,
若不同则丢弃,
若相同,则接收,并回ICMP reply报文。
此处,也就是pc2回ICMP reply报文。L3收到后,在下行的时候学习到pc2的mac表项。
若没有:
则发ARP广播,请求目的IP为pc2的MAC,此时目的MAC填的是全f,
当L3收到这个ARP报文后,先查PCT表,比较报文中的目的MAC是否与L3的MAC相等,
此处为不等,认为是二层转发,
先查vlan表,得到vlanid,然后用vlanid查Mid up表,然后由此表可知有那些lpu 板上配有此vlan,(因为是广播,所以就不查单播mac表了),
然后再上网板前,把此ARP报文复制给每个lpu板一份,
然后下网板的时候,先抄送一份给CP,此时cp可以由此ARP 报文学习ARP表项和FIB表项。
查mid down表,得到本板上那些端口是属于这个vlan的,对属于本vlan的各个端口(pc1所在的端口除外)都复制一份ARP报文下发下去,当进行到本板的最后一个端口时,添加有关pc1的单播mac表项。
这时,pc2将会收到此ARP报文,pc2收到后,发送ARP应答给L3,然后因为L3中已经有了pc1的mac表项,直接可以发到pc1所在的端口,此时学习pc2的mac信息。这样
当此ARP reply报文回到pc1后,pc1就可以直接发ICMP报文了。
三层转发:
假设Pc1 ,和Pc2 发ping包,pc1的IP地址是2.2.2.2,网关掩码是255.255.0.0,
pc2的IP地址是3.3.3.3,网关掩码是255.255.0.0,网关是3.3.3.1。
pc1发ping包时,先比较pc1的IP和网关相与是否等于pc2的IP和网关相与的值,不相等,认为是三层转发,然后查本机的fib表,查对应下一跳IP的Mac。
若查到了,则可直接发ICMP报文了。转 * 处继续处理。
若查不到,
则发ARP 报文请求下一跳IP 的mac(本例中也就是L3的mac),即目的mac为L3的mac,目的ip为L3的ip。
此ARP报文到了L3后,会在pc1所属的vlan内广播一下,同时给cp送一份,此时cp回一个ARP reply应答,同时学习pc1的fib和arp表项,
下行的时候学习pc1的mac。
* pc1收到此ARP reply后,开始发ICMP报文,目的ip为pc2的ip,目的mac为L3的mac。
此ARP reply报文到了L3后,L3先查PCT表比较目的mac是否等于L3的mac,此处相等,则认为是三层转发。
再查fib表,得到下一跳的IP和目标板号,目标端口号,在查fib表的过程中:
若一项都不能匹配,则丢弃;
若能匹配,则匹配有两种情况:
1、能匹配到主机路由,则在下行的时候查ARP表项,从相应端口发出去;
2、只能匹配到网段路由,则产生fib miss消息,并把此ICMP报文上送cp,
当cp收到此ICMP报文后,则发一个ARP广播报文在pc2所属的vlan内进行广播,(此处是采用D201封装的,解封装后相当于二层报文),
此报文进入下行,并通过wrap端口环回到上行,在上行的时候再查pct表,vlan表,和mid up表,给每个在pc2的vlan的各板复制一份,上网板,下网板,(此时因为判断原mac是L3的mac,所以就不上送给cp了),
再查mid down表,给每个板上各所在pc2的vlan的各端口复制一份。
当pc2收到此ARP报文后,则回一个Arp reply给L3 ,然后L3就可以学到pc2的fib和arp表项,下行的时候学习到pc2的mac表项。
这样,pc1和pc2就可以ping通了。
源文档 <http://forum.huawei.com/jive4/thread.jspa?threadID=217930&tstart=0&orderStr=27>
浙公网安备 33010602011771号