今天了解了一下交换路由的二层和三层转发原理,浅浅的总结一下。
以下是V1版本的总结:
首先,所有的转发对于中间交换路由设备都是查表转发,二层查MAC表,三层查路由表,不管这个表是学习的也好,是控制器下发的也好,反正就是转发时候的参考,查不到怎么办,二层就排源广播,三层就走默认或者丢弃。
二层转发
二层转发的时候不会对报文以太头(比如源目MAC地址)的信息进行修改,一般也是硬件转发,速度比较快,而三层转发还得一跳一跳改源目MAC地址,只是源目IP是不变的。
二层转发根据源MAC地址进行表项学习,根据目的MAC地址进行查表转发,如果表里查不到目的MAC地址,就排源广播。VLAN的出现减少了冲突域,但是VLAN内还是个二层域,该泛洪泛洪。
三层转发
三层转发的时候需要先根据自己的源IP和目的IP地址进行比较,如果在同一个网段,那可以直接发ARP请求,获取目的IP的MAC地址,然后报文封装的时候,源MAC是自己的MAC,目的MAC是网关的MAC,源IP是自己的IP,目的IP是实际的目的IP地址。
如果比较完,发现不是一个网段的,那么需要先发到网关进行转发,此时先发ARP广播请求网关MAC地址,报文封装的源MAC是自己的MAC,目的MAC是网关的MAC,源IP是自己的IP,目的IP是网关地址。拿到网关的MAC地址之后,封装单播转发报文,源MAC是自己的MAC,目的MAC是网关的MAC,源IP是自己的IP,目的IP是实际的目的IP地址,到了网关解封装这个报文发现目的IP不是网关自己,就会继续查三层表转发。匹配三层路由表转发的时候,先按最长掩码进行比较,就是说先走明细路由,假如这条转发路由在网关存在ospf和静态两种转发表项,且掩码长度是一样的,那才开始比较路由协议优先级转发。