模拟器:eNSP
核心机制:通过VLANIF接口完成
为了保证第一次数据流通过路由表正常转发,路由表中必须有正确的路由表项。因此必须在三层交换机上部署三层接口并部署路由协议,实现三层路由可达。VLANIF接口由此而产生。
拓扑描述:
在交换机上划分了2个VLAN,VLAN2和VLAN3。可通过如下配置实现VLAN间互通。
1.在S1上创建2个VLANIF接口并配置VLANIF接口的IP地址,保证两个VLANIF接口对应的IP地址路由可通。
2.将用户设备的缺省网关设置为所属VLAN对应VLANIF接口的IP地址。
PC1和PC2的通信过程如下:
1.PC1将PC2的IP地址和自己所在网段进行比较,发现PC2和自己不在同一个子网。
2.PC1发送ARP请求给自己的网关S1,请求网关的MAC地址。
3.S1收到该ARP请求后,返回ARP应答报文,报文中源MAC地址为VLANIF2的MAC地址。
4.PC1学习到网关的MAC地址。
5.PC1向网关发送目的MAC为VLANIF2接口MAC 地址、目的IP为PC2的IP地址的报文。
6.S1收到该报文后进行三层转发,发现PC2的IP地址为直连路由,报文将通VLANIF3 接口进行转发。
7.S1作为VLAN3内主机的网关,向VLAN3内发送一个ARP广播,请求PC2的MAC地址。
8.PC2收到网关发送的ARP广播后,对此请求进行ARP应答。
9.网关收到PC2的应答后,就把PC1的报文发送给PC2。PC1之后要发给PC2的报文将由交换机S1做三层交换。
实验:
如图所示,PC1在vlan10中,ip地址为10.1.1.1/24,网关为10.1.1.254,PC2在vlan20中,ip地址为10.1.2.1/24,网关为10.1.2.254。现在为了让PC1和PC2通信,在SW1上创建两个vlanif接口,一个接口作为vlan10的网关,另一个接口作为vlan20的网关。当PC1pingPC2时(假设已经有了网关vlanif接口的MAC地址),首先PC1封装ICMP报文从e0/0/1接口发送出去,到达SW1,打上vlan10的报文,这个时候无法进行二层转发,因为目的MAC是自己的vlan10接口的ip地址,会拆包到三层到相应vlan的VLANIF接口进行处理,发现目的IP地址不是自己,所以进行转发,查看路由表:
查看到了10.1.2.0/24网段的出接口为10.1.2.254,这个接口就是vlanif20,这时从这个接口发送出去,但是怎么知道从哪个物理接口呢,这时如果PC2的MAC地址没有绑定在交换机上,SW1则需要发出带有vlan20 tag的arp请求报文请求对方的MAC地址(因为是直连,如果不直连,请求下一跳的MAC地址)到所有可以加入了vlan20的接口上,也就是e0/0/2,这时出去的时候将标签摘除,PC2接收到以后进行arp报文回复,这样在e0/0/2接口上就绑定了对应的MAC地址,再进行报文的封装,封装vlanif接口的MAC地址和对方的MAC地址查找MAC地址表项从相应的物理接口发送出去。
注意:VLANIF接口的地址通常是物理接口IP地址中选择一个,或者使用交换机的背板地址。