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

2014年(9)

2013年(20)

2012年(77)

2011年(323)

2009年(4)

分类: 系统运维

2012-07-25 20:39:04

    以下内容摘自今年元月全新上市,其姊妹篇——也正在全国热销中。

    在此篇文章( http://blog.chinaunix.net/uid-10659021-id-3067308.html )中,笔者介绍了H3C交换机Spuer VLAN的聚合原理,本节接着要介绍Super VLAN中的Sub VLAN(从VLAN)间主机的三层通信原理。

20.3.2 Sub VLAN主机的三层通信原理


我们在前面已说到,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

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

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

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的过程和上述的AB的报文流程类似,不再赘述。

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


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

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

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

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

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

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

2Switch1在收到该主机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地址的报文。

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

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

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

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

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

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