1、交换机如何学习带vlan的报文,完善自己的MAC表
交换机在配置的时候,会设定好自己的端口允许通过的VlanID和本端口的PVID。一个MAC地址到底属于哪个vlan,(我估计)是根据报文中tag字段中的VID判断的,也就是PC连接的交换机接口的PVID。MAC转发表在学习的时候,是有自己的一个数据库的,每个VLan都有自己的一张表单,记录了该vlan中mac与端口的关系。
MAC地址学习,有两种方式,一种是SVL(shared vlan learning),一种是IVL(independent vlan learning)。在SVL中,vlan间能共享表单,vlan1学习到的条目,vlan2也能知道;在IVL中,vlan只能知道自己学习的表单,vlan1不能知道vlan2的表单。
SVL的好处是,因为表单共享,能够实现下行数据的vlan隔离。但是,因为所以vlan公用一个表单,每个MAC地址不能重复出现,每个MAC只能属于一个vlan。
IVL则可以实现同一个MAC分配给不同valn。
SVL与IVL是通过FID来控制,因为具有相同FID的vlan能够共有一个MAC转发表。具体详见http://blog.csdn.net/dylantsou/article/details/8871134。
2、不同端口是如何处理报文转发的?
A、接收报文:
不带tag报文:Access、Trunk、Hybrid处理方法相同,都是打上PVID。
带tag的报文:Access,判断报文中的VID与Access端口的PVID是否相同?相同接收:不同丢弃;(华为的处理不确定,可能会直接丢弃)
Trunk、Hybrid,判断报文中的VID与本端口的PVID是否相同?相同接收:不同,(判断是否是本端口允许通过的VID?允许的接收:不允许的丢弃;);
B、发送报文:
Access:剥去tag,发送;
Trunk:判断报文中的VID与发送端口是否相同?相同,则剥去tag发送:不同,则直接发送;
Hybrid:判断本端口是否允许通过,若允许,则根据配置来决定是否剥去tag。
3、一个vlan可以属于多个端口,一个端口也可以配置多个valn。
第一句话的意思是,一个wlan可以从多个端口出去。
第二句话的意思是,一个端口可以允许多个wlan进入。
端口上的vlan分为两种:一种是端口的本地vlan,就是PVID,当没有tag的报文进入时,就认为它属于本地vlan;另一种是允许通过的vlan。
4、PC1属于vlan1,连接到Switch1,PC2属于vlan2,连接到Switch2,Switch1与Switch2相互连接的端口,PVID是vlan2。PC1与PC2通信时,交换机是如何转发的?
如果PC1与PC2想通信,那么Switch2上与Switch1相连接的端口,必须配置成允许vlan2通过。同时,两个Switch相连接的端口应该配置成Trunk类型。PC1发给PC2的报文,Switch1接受到该报文以后,会打上本端口的PVID,在MAC表中找到相应的出端口;发送时,因为报文中的VID与Switch1的出端口的PVID不同,所以会直接透传。Switch2接收到此报文后,会先判断报文中的VID是否是本端口的PVID或者是本端口允许通过的VLan,如果不是则丢弃;否则则查看MAC表,找到出端口。在出端口,会判断出报文中的VID与端口的PVID相同,剥去tag头,进行转发。
5、三层交换机与普通路由器的区别
A、传统路由器基于CPU转发报文,是靠软件处理的;三层交换机是靠硬件转发的,性能差别大。
B、三层交换机的接口基本都是以太网接口;路由器的接口类型很多。
C、三层交换机还可以工作在第二层,对某些不需要路由的报文直接转发;路由器不具备这种功能。
6、Fib表与路由表(Rib)的区别
在计算路由信息的时候,不同路由协议所计算出来的路径可能会不同。在这种情况下,路由器会选择优先级较高的路由协议发现的路由作为最优路由,并置为Active状态;而其他路由作为备份路由,置为Inactive状态。此时Active状态的路由表项会由系统导入FIB表中,作为系统转发的依据。另外,在某些系统中,FIB表项也可能来源于ARP解析,即系统将通过ARP解析而得到的本地网段内的主机路由也添加到FIB表中。
A、路由器里一般分为软件表(一般指ARP和路由),硬件转发表项(FIB表)
B、FIB表分为主机路由表和子网路由表
C、ARP---主机路由表;路由表---子网路由表。一般情况下,通过ARP学习、路由学习,形成软件表项,然后同步到硬件形成FIB表。
D、数据转发的时候,先查询FIB表,然后直接转发。一般情况下,如果FIB表查不到,会查找软件表。通过软件表转发性能很低。
RIP、OSPF、BGP、ISIS都是动态路由协议,它们学习到的路由首先要通告给RIB表。RIB表把所有路由协议学习到的路由汇总到一起,经过优选,把优选结果的路由加入到FIB表,供转发使用。所以FIB是RIB的一个子集。
协议添加路由时设置的下一跳,在路由表中称之为原始下一跳,这个下一跳不一定直接可达。而FIB是用于指导转发的,它的下一跳必须是直接可达。
7、交换机二三层转发流程(交换机是否处理三层报文与交换机的端口有关系吗?)
交换机在收到一个报文后,会先判断是二层报文还是三层报文,也就是判断报文的DMAC是否等于交换机端口的MAC。
A、如果不等,说明是二层报文,进入二层转发流程,判断属于哪个VLAN,查找MAC表,采用硬件转发。如果MAC表中没有该DMAC地址,称为地址未解析,进行广播。
B、如果相等,说明是三层报文,在Fib表信息完整的情况下,报文的转发和处理全部是由硬件完成的。如果Fib表中没有该目的IP对应的网络,产出CPU中断,由软件来则查找路由表找到下一跳IP,查询ARP缓存找到下一跳IP的MAC;如果Fib中有该目的IP匹配的网络,找到下一跳IP(对于直连路由,其下一跳就是目的IP了),查找ARP表,找到MAC。在查找FIb表的过程中,应该先查找主机路由表,主机路由中有下一跳的MAC;再查找网段路由,根据ARP找到MAC。
(自己的理解:fdb就是ARP缓存在硬件中的对应,能够根据IP找到MAC,fib+fdb就构成了一个ipfdb,能够直接根据目的IP找到目的MAC和转发端口。此处有问题,fdb表实际就是MAC地址表。但是如果fdb就是MAC表,记录的是MAC与转发端口的关系。那么下一跳的MAC如何获得呢,每次都去查找ARP表吗??参考http://840422.blog.51cto.com/830422/242859)
交换机进行报文转发时,如果是二层报文,则只能采用硬件转发,查看MAC表;如果是三层报文,