Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2099818
  • 博文数量: 433
  • 博客积分: 4775
  • 博客等级: 上校
  • 技术积分: 8054
  • 用 户 组: 普通用户
  • 注册时间: 2009-10-19 16:15
文章存档

2014年(9)

2013年(20)

2012年(77)

2011年(323)

2009年(4)

分类:

2012-02-07 21:05:52

我们在前面已经说到,Super VLAN(也就是VLAN聚合)方案中,在实现不同Sub VLAN间共用同一子网网段地址的同时也带来了Sub VLAN间的三层转发问题。因为在普通VLAN中,VLAN间的主机可以通过各自不同的网关(也就是它们自己的VLAN接口IP地址)进行三层转发来达到互通的目的。但是在Super VLAN方案中,各Sub VLAN是不允许配置VLAN接口IP地址的,同一个Super VLAN内的所有主机使用的是同一个网段的地址和共用同一个网关地址,即使是属于不同的Sub VLAN的主机。由于它们同属一个子网,彼此通信时只会做二层转发,而不会通过网关进行三层转发。而实际上不同的Sub VLAN的主机在二层又是相互隔离的(这是继承普通VLAN的属性),这就造成了Sub VLAN间无法通信(包括二层通信和三层通信)的问题。

解决这一问题的方法就是使用ARP代理,下面进行具体介绍。

1.不同Sub VLAN间的三层互通

例如,在如图20-7所示的网络中,Super VLANVLAN 10)包含Sub VLANVLAN 2VLAN 3)。VLANIF10:1.1.1.1/24表示Super VLAN 10VLAN接口IP地址为1.1.1.1/24

20-7  通过ARP代理实现不同Sub VLAN间三层互通的示例

VLAN 2内的主机AVLAN 3内的主机B的通信过程如下(假设主机AARP表中没有主机B的对应ARP表项,并且在担当网关的交换机上启用了Sub VLAN间的ARP代理功能):

1)主机A将主机BIP地址(1.1.1.3)和自己所在网段1.1.1.0/24进行比较,发现主机B和自己在同一个子网,但是主机AARP表中没有主机B的对应表项,于是主机A发送ARP广播,请求主机BMAC地址。

2)由于主机B并不在VLAN 2的广播域内,无法接收到主机A的这个ARP请求。但由于在网关上启用了Sub VLAN间的ARP代理功能,而且网关是在Sub VLAN中,是允许接收其下面各Sub VLAN报文的,所以当网关收到主机AARP请求后开始在路由表中查找,发现ARP请求中的主机BIP地址(1.1.1.3)为直连接口路由,则网关向所有其他Sub VLAN接口发送一个ARP广播,请求主机BMAC地址。

3)当主机B收到网关发送的ARP广播后,对此请求进行ARP应答。

4在网关收到主机B的应答后,就把自己的MAC地址当作主机BMAC地址回应给主机A

5)主机A收到网关发来的响应后就认为主机BMAC地址就是网关的MAC地址,于是主机A之后要发给主机B的报文都先发送给网关,由网关做三层转发。

主机B发送报文给主机A的过程和上述的主机A到主机B的报文流程类似,不再赘述。

2Sub VLAN与外部网络的二层通信

在基于端口的VLAN二层通信中,无论是数据帧进入接口还是从接口发出都不会有针对Super VLAN的报文,也不会把报文的VLAN ID改为Super VLAN对应的VLAN ID,而是保持报文中原来的VLAN ID不变,因为在Super VLAN中根本没有端口(这是关键)。现在以如图20-8所示的例子进行说明。

20-8  通过ARP代理实现Sub VLAN与外部网络的二层通信的示例

Host AGE0/0/1进入设备Switch 1的帧会被打上VLAN 2的标记,在设备Switch 1中这个标记不会因为VLAN 2VLAN 10Sub VLAN而变为VLAN 10的标记。这样,该数据帧从Trunk类型的接口GE0/0/3出去时,依然是携带VLAN 2的标记。也就是说,Switch 1本身不会发出VLAN 10的报文,就算其他设备有VLAN 10的报文发送到该设备上,这些报文也会因为Switch 1上没有VLAN 10对应的物理端口而被丢弃。

由于Super VLAN中是不允许有物理端口的,所以在配置过程中需要注意Super VLANTrunk链路的配置次序问题。如果先配置了Super VLAN,再配置Trunk接口时,TrunkVLAN许可表项里也会自动滤除了Super VLAN。如在图20-8中,虽然Switch 1GE0/0/3允许所有的VLAN通过,但是也不会有作为Super VLANVLAN 10的报文从该接口进出。但是,如果先配好了Trunk端口,并允许所有VLAN通过,则在此设备上将无法配置Super VLAN。本质原因是有物理端口的VLAN都不能被配置为Super VLAN。而允许所有VLAN通过的Trunk端口是所有VLAN的端口,这样一来,任何VLAN都不能被配置为Super VLAN。这一点一定要谨记。在本示例中,对于Switch 1而言,有效的VLAN只有VLAN 2VLAN 3,所有的数据帧都是在这两个VLAN中转发的。

3Sub VLAN与外部网络的三层通信

下面以图20-9所示的例子介绍通过ARP代理实现Sub VLAN与外部网络的三层通信的原理。在示例中,Switch 1上配置了Super VLAN 10Sub VLAN 2Sub VLAN 3,并配置一个普通的VLAN 30Switch 2上配置两个普通的VLAN 30VLAN 20。假设Super VLAN 10中的Sub VLAN 2下的主机A想访问与Switch 2相连的主机C,则会经过如下流程(假设Switch 1上已配置了去往1.1.3.0/24网段的路由,Switch 2上已配置了去往1.1.1.0/24网段的路由):

20-9  通过ARP代理实现Sub VLAN与外部网络的三层通信的示例

1)主机A将主机CIP地址(1.1.3.2)和自己所在网段1.1.1.0/24进行比较,发现主机C和自己不在同一个子网。于是,主机A向自己的网关(Super VLAN 10接口)发送一个ARP请求(其实它不仅是给网关发送了这个请求,而是向整个VLAN 2中节点发送了这个请求),请求网关的MAC地址。

2Switch 1在收到该主机A发送的ARP请求后,查找Sub VLANSuper VLAN的对应关系,以源MAC地址为Super VLAN 10 对应的VLANIF10MAC地址作为目的主机C的目的MAC地址从Sub VLAN 2发送ARP应答给主机A

3)这样主机A就以网关MAC地址作为主机CMAC地址记录在MAC表项。然后主机A向网关发送以Super VLAN 10对应的VLANIF10MAC地址作为目的MAC地址,主机CIP地址1.1.3.2作为目的IP地址的报文。

4Switch 1在收到主机A发送的报文后,根据所设置的路由进行三层转发,下一跳地址为1.1.2.2,出接口为Switch 2中的VLANIF30接口,把报文发送给Switch 2

5Switch 2在收到该报文后通过直连出接口VLANIF20(注意,在同一台交换机上直接的多个网段之间是不存在跳数的,可直接进行三层转发)把报文发送给主机C

6)主机C在收到主机A发送的报文后,发送响应报文,经过Switch 2上的VLANIF30接口进行三层转发到达Switch 1上的VLANIF30接口。

7Switch 1在收到该报文后再通过Super VLAN 10这个网关接口把报文发送给主机A

这样就完成了Sub VLAN与外部网络的整个三层通信。

阅读(2025) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~