⑽ PC2收到ARP请求,学习“2.2.2.1—GwMac2”加入ARP表;并回复ARP应答帧,目的IP为交换机接口Vlan20的IP地址2.2.2.1,目的MAC为交换机接口Vlan20的MAC地址GwMac2;

⑾ SW收到PC2发送的ARP应答帧,附加端口PVid(20)后在MAC表中查找“Mac2+Vid20”,没找到则学习源地址,在MAC转发表中添加PC2相关记录。因该帧目的MAC为网关地址,故提交三层处理;

⑿ 三层首先检查报文正确性,无误则在L3表中查找目的IP。由于目的IP为本机,故上送CPU处理。CPU对报文处理后得到“2.2.2.2—Mac2”将相关信息加入ARP表(CPU下发给L3表进行记录)。

⒀ PC1向SW发送的第一个ICMP请求帧存储在内存中,此时交由CPU进行IP报文头部修改(TTL减1,FCS重新计算封装)和MAC封装(目的MAC地址改为PC2的MAC地址,源MAC地址改为SW三层MAC地址)并发送给PC2,如果超时则丢弃,CPU发送ICMP超时给PC1;

⒁ PC2收到PC1发来的ICMP请求后,回复ICMP应答帧,目的IP为PC1的IP 1.1.1.2,同样PC2发现该地址和自己不在同一子网,需要网关进行转发。之前PC2已学习到交换机接口Vlan20的ARP,此时根据该ARP将ICMP应答帧目的MAC地址填为网关MAC地址GwMac2发送出去。交换机收到帧后,发现目的MAC地址是网关地址,取出帧中的目的IP地址1.1.1.1查找路由。之前交换机已学习到该IP的路由,所以会查找到主机路由表中相应的路由并将帧目的MAC地址换成Mac1,源MAC地址换成网关MAC地址GwMac2,发送到端口Port1上。最终,PC1就收到PC2的ICMP应答。

⒂ 经过以上流程后,PC1和PC2分别学到各自网关接口的ARP,交换机也有了分别到达PC1和PC2的路由。后续的报文不再通过路由,而直接由L3表中对应的表项进行硬件转发。

注意,此例步骤说明相比“路由器路由”一节稍为详细,所补充的部分并非差异。

* VLAN间通信加速

Vlan间路由时,并非所有数据都需要经过外部路由器或三层交换机的内置路由模块。例如,使用FTP(File Transfer Protocol,文件传输协议)传输容量为数兆字节以上的较大文件时,由于MTU(Maximum Transfer Unit,最大传输单元)的限制,IP协议会将数据分割成小块后传输并在接收方重新组合。这些被分割的数据具有相同的源/目的IP地址和(TCP/UDP)端口号。这样一连串数据流被称为“流(Flow)”。只要将流最初的数据正确地路由以后,后继数据理应也会被同样地路由,实际上无需路由器处理。

三层交换机进行高速Vlan间路由时,整个流的第一块数据仍旧由交换模块转发→路由模块路由→交换模块转发到目标所连端口。这时,将第一块数据路由结果记录到缓存里保存下来。需记录的信息有源/目的IP地址和(TCP/UDP)端口号、交换机收发端口号及转发目标MAC地址等。

同一个流的第二块及后续的数据到达交换机后,直接通过查询先前保存在缓存中的信息查出转发端口号后即可转发给目标所连端口。这样,就无需反复经由内部路由模块中继,而仅凭交换机内部的缓存信息就足以判断应该转发的端口。这时,交换机对数据帧进行由路由器中继时相似的处理,如改写MAC地址、IP包头中的TTL和Check Sum校验码信息等。

若Vlan间路由信息变化,路由模块会发送控制信息给交换模块,交换机重新建立转发路径,按照常规方式转发。

通过在交换机上缓存路由结果,可实现以缆线速度(Wired Speed)接收发送方传输来的数据、并且能够全速路由、转发给接收方。

* 路由器和交换机配合构建LAN

虽然三层交换机能提供比传统型路由器更为高速的路由处理,但网络中仍有使用路由器的必要性。其必要性主要表现在以下几个方面:

用于与WAN连接。绝大多数三层交换机只配有LAN(以太网)接口。少数高端交换机上也有用于连接WAN的串行接口或ATM接口,但大多数情况下连接WAN需要用到路由器。

保证网络安全。在三层交换机上,通过数据包过滤也能确保一定程度的网络安全。但使用路由器所提供的各种网络安全功能(数据包过滤、基于IPSec构建VPN、利用RADIUS进行用户认证等),用户可构建更为安全可靠的网络。

支持TCP/IP以外的网络架构。尽管TCP/IP已成为当前主流的网络协议架构,但还有不少网络利用Novell Netware下的IPX/SPX或Macintosh下的Appletalk等网络协议。三层交换机中,除部分高端机型外基本上只支持TCP/IP。路由器对于需要其他网络协议的环境必不可少。

注:少数高端交换机也能支持上述路由器的功能。例如Cisco的Catalyst6500系列就可选择与WAN连接的接口模块;还有可选的基于IPSec实现VPN的模块;并且也能支持TCP/IP以外的其他网络协议。

下图是一个路由器和交换机搭配构建LAN的实例。

路由器和交换机搭配构建局域网

利用在各楼层配置的二层交换机定义Vlan,连接TCP/IP客户主机。各楼层间的Vlan间通信利用三层交换机的高速路由加以实现。若网络环境要求高可靠性,还可考虑冗余配置三层交换机。与WAN的连接,则通过带有各种网络接口的路由器进行,并通过路由器的数据包过滤和VPN等功能实现网络安全。此外,使用路由器还能支持Novell Netware等TCP/IP之外的网络。

通过使用Vlan构建局域网,用户能够不受物理链路的限制而自由地分割广播域。通过路由器与三层交换机提供的Vlan间路由,能够适应灵活多变的网络结构。但由于利用Vlan容易导致网络复杂化,因此也会造成整个网络的组成难以把握。特别是由于数据流纵横交错,一旦发生故障时,准确定位并排除故障会比较困难。

VLAN扩展

* VLAN Translation

Vlan转换又称Vlan翻译或Vlan映射,它允许用于边缘接入的不同以太网交换机的Vlan ID设置互相重叠,通过以太网交换机的Vlan转换功能,将不同交换机的重复Vlan ID修改为不同的Vlan ID,并从上联端口发送出去,从而在二层核心交换机中也实现用户的隔离,以简化边缘接入交换机的设置。

例如PON系统中,通过Vlan转换模式,OLT或ONU设备将上行以太网帧中用户自行添加的Vlan标签(Vid可能不是其独用的,可能在同一个系统内有其他用户使用相同的Vid)转换为唯一的网络侧Vlan标签;并在下行方向执行相反的操作。

* QinQ

随着以太网技术在运营商网络中的大量部署(城域以太网),利用IEEE 802.1Q Vlan对用户进行隔离和标识受到很大限制。因为802.1Q定义的Vlan标签域仅能表示4096个Vlan(12比特),对于城域网中需要标识的大量用户捉襟见肘,于是QinQ技术应运而生。

QinQ(也称Stacked Vlan即Vlan堆叠或Double Vlan)技术出自IEEE 802.1ad标准,是对基于IEEE 802.1Q封装的隧道协议的形象称呼。QinQ实现在原有802.1Q Vlan标签(内层标签,也称Customer Vlan,CVlan)之外再增加一个Vlan标签(外层标签,也称Service Provider Vlan,SVlan),外层公网标签将内层用户私网标签屏蔽起来,使报文携带两层Vlan标签穿越运营商骨干网络(公网),到达用户另一端网络边缘交换机时再剥除外层公网Vlan标签,还原出内层用户标签便于用户进行下一步的通信。可见,QinQ技术不仅可有效拓展Vlan的数量空间(多达4096×4096个),而且可提供简单的二层VPN(虚拟专用网)隧道,特别适合以三层交换机为骨干的小型企业网或小型局域网。

* QinQ报文格式

QinQ报文封装格式如下图所示。公网传输时内层Vlan标签为用户私网Vlan标签,外层Vlan标签由运营商分配给用户。私网Vlan标签被透明传输,故不同的用户Vlan标签可重复使用,只需外层Vlan标签在公网上唯一即可。

QinQ报文封装格式

某些厂商将QinQ报文外层标签的TPID值设置为0x9100或其他数值。为和这些设备互通,用户应可自行配置TPID值,使发送到公网中的QinQ帧携带的TPID值与其他厂商相同。由于TPID字段在以太网帧中所处位置与不带Vlan标签的帧中协议类型(Type)字段所处位置相同,为避免造成网络中数据帧转发和接收混乱,不允许用户将TPID值配置为常用协议类型值。

* QinQ封装方式

QinQ封装是指如何把单层Q报文转换为双层Q报文, 封装主要发生在城域网面向用户的UPE设备,一般在交换式的端口上进行。根据不同的封装依据,QinQ可分为基于端口的QinQ、基于流的QinQ和路由子接口上进行的特殊QinQ封装。

* 基于端口的QinQ封装

基于端口封装指进入一个端口的所有流量全部封装一个外层Vlan。当端口收到报文时,无论报文是否带有Vlan标签,交换机都会为该报文附加本端口缺省Vlan的标签。若接收报文已带标签,则该报文成为双标签报文;若接收报文不带标签(untagged),则该报文将携带本端口缺省Vlan标签。基于端口的QinQ封装容易实现,故业界主流厂家的三层交换机都支持。其缺点是外层Vlan标签封装方式死板,当多个不同用户或用户网络以不同的Vlan接入到同一个端口时无法区分用户,即无法在一个端口上根据业务种类选择多个外层标签,从而很难有效支持单端口多业务的灵活运营。

此外,基于端口封装需增加链路,组网复杂,不利于扩展维护。

* 基于流的QinQ封装

基于流的QinQ封装先对进入端口的数据进行流分类,然后对于不同的数据流选择是否插入外层标签以及插入何种外层标签,因此也称灵活QinQ(Smart QinQ或Selective QinQ)。当一些数据流(如组播)出口不添加外层标签,或单个端口根据内层Vlan添加不同的外层标签时,就需要用到灵活QinQ。

灵活QinQ根据流分类方法又可细分如下:

1) 根据报文中的Vlan区间分流

当同一用户的不同业务使用不同Vlan时,可根据Vlan区间进行分流,如PC上网Vlan范围是101~200,IPTV的Vlan范围是201~300,VoIP的Vlan范围是301~400。面向用户的设备收到用户数据后,根据Vlan范围,对上网业务插入100的外层标签,对IPTV插入300的外层标签,对VoIP插入500的外层标签。

2) 根据报文中的Vid+Priority分流

不同业务有不同优先级,当同一用户的多种业务使用相同Vlan时,可根据不同业务的优先级进行区分,然后插入不同的外层标签。

3) 根据报文的目的IP地址分流

当同一台PC既包括上网业务又包括语音业务时,不同业务目的IP不同,可利用ACL对目的IP地址进行分流,然后插入不同的外层标签。

4) 根据ETYPE进行QinQ封装

当同一用户既包括PPPOE的上网业务,又包括IPOE的IPTV业务时,这些终端都通过一个Vlan上行,可根据PPPoE(0x8863/8864)和IPoE(0x0800)报文不同的ETYPE协议号作为QinQ的分流依据。

当前灵活QinQ主要应用于运营商接入网络。在运营商网络中给接入用户分配一个Vlan,以便于追踪问题和防止不同用户间互访,用外层标签区分用户应用;或在接入环境中用外层标签区分不同的接入地点,用内外两层标签唯一标识一个接入用户。

* 路由子接口QinQ封装

QinQ封装一般在交换式端口上直接进行,但特殊情况下QinQ也可在路由子接口上进行封装。

当核心网采用VLL/PWE3透传用户数据时,NPE设备上的路由子接口可根据用户Vlan ID封装外层Vlan,通过外层Vlan接入VLL/PWE3。可通过一个QinQ Stacking子接口来透传多个标识用户的Vlan ID。

该方式也是基于流的QinQ封装,但QinQ Stacking子接口只能与L2VPN(PWE3/VLL/VPLS)结合起来才有意义,不支持三层转发功能。

* QinQ报文转发

三层交换机连接用户网络的端口称为Customer端口,连接骨干网的端口称为Uplink端口,骨干网的边缘接入设备称为PE(Provider Edge)。一般用户侧网络通过Trunk方式接入骨干边缘交换机,骨干网络内Uplink端口通过Trunk方式对称连接。

在通过QinQ实现简单二层VPN的过程中,报文按如下方式转发:

QinQ报文转发过程

当报文从用户侧网络1到达运营商骨干网边缘交换机Switch A的Customer端口时,无论该报文是否携带标签,Switch A都基于端口PVid对其强行插入外层标签(Vid=10)。在骨干网络内部,报文沿着Vlan10的Trunk端口传播,用户私网标签在骨干网络中保持透明状态,直至到达边缘交换机Switch B。

Switch B发现与用户网络2相连的端口为Customer端口,按照传统的802.1Q协议剥离外层标签,恢复成用户的原始报文,转发到用户侧网络2,从而实现一个简单二层VPN功能。PE接入点用外层SVlan隔离,安全且节省Vlan。对用户的管理可基于外层SVlan和内层CVlan唯一定位。

易知,若Vlan映射为C→S+C,则为Vlan堆叠;若Vlan映射为C→S,则为Vlan转换。

注意,MAC地址学习、生成树等均基于外层SVlan。

* QinQ优缺点

利用QinQ提供接入业务时具有以下优点:

Ÿ可解决日益紧缺的公网Vlan资源问题;

Ÿ用户可规划自己的私网Vlan ID,不会与公网Vlan ID冲突;

Ÿ提供一种较为简单的二层VPN解决方案;

Ÿ使用户网络具有较高的独立性,在服务提供商升级网络时,用户网络不必更改原有配置;

Ÿ可按不同层次的Vlan ID区分不同的业务,以区别提供不同的管道、QoS策略;

ŸQinQ技术上可多层嵌套,仅受以太网帧长度的限制,具有很好的扩充性。

但随着用户数量的增加,QinQ模型也会带来可扩展性问题。某些用户可能希望在分支机构间传输数据时可携带自己的Vlan ID,这就使采用QinQ技术的管理服务提供商面临以下两个问题:第一个客户的Vlan标识可能与其他客户冲突;服务提供商将受到客户可使用标识数量的严重限制。若允许用户按他们自己的方式使用各自的Vlan ID空间,则核心网络仍存在4096个Vlan的限制。

* PVlan(Cisco)

PVLAN(Private VLAN,私有VLAN)即所有工作站在同一个子网中,但工作站只能与自己的默认网关通信。PVlan采用两层Vlan隔离技术,只有上层Vlan全局可见,下层Vlan互相隔离。若将交换机的每个端口划为一个(下层)Vlan,则实现所有端口的隔离。

每个Private Vlan包含两种Vlan:主Vlan(Primary Vlan)和辅助Vlan(Secondary Vlan),后者又分为隔离Vlan(Isolated Vlan)和团体Vlan(Community Vlan)。

PVlan通信范围:

主Vlan可与所有与之关联的隔离Vlan、团体Vlan通信。不同主Vlan之间的任何端口都不能互相通信(此处“互相通信”指二层连通性)。

团体Vlan可与处于相同团体Vlan内的团体端口通信,也可与PVlan中的混杂端口通信。 每个PVlan可有多个团体Vlan。

隔离Vlan不可与处于相同隔离Vlan内的其它隔离端口通信,只可与混杂端口通信。每个PVlan中只能有一个隔离Vlan。

相应地,交换机物理端口有三种类型:

隔离端口(Isolated port),与用户相连,属于隔离Vlan。只可与混杂端口通信,彼此不能通信。

团体端口(Community port),属于团体Vlan。不仅可与混杂端口通信,也可与同一团体中的其它物理端口进行通信。

混杂端口(Promiscuous port),与路由器或三层交换机接口相连,属于主Vlan。它收到的流量可发往隔离端口和团体端口。


相关内容