CCIE路由和交换认证考试指南(第5版)(第1卷)

978-7-115-42689-5
作者: 【美】Narbik Kocharians(那比克 科查理安)【斯洛伐克】Peter Paluch(彼得 派拉奇)
译者: YESLAB工作室
编辑: 傅道坤王旭丹
分类: CCIE

图书目录:

详情

本书是根据Cisco最新发布的CCIE路由和交换400-101考试纲要编写的认证考试指南,旨在帮助读者掌握该考试的所有主题,为顺利通过考试打下基础。本书主要面向备考CCIE路由和交换笔试的考生,但本书相关内容实用性很强,有助于提高大家日常工作的效率,保证网络的高效运行,因而也非常适合从事企业网及复杂网络设计及运维的工程技术人员参考。

图书摘要

版权信息

书名:CCIE路由和交换认证考试指南(第5版)(第1卷)

ISBN:978-7-115-42689-5

本书由人民邮电出版社发行数字版。版权所有,侵权必究。

您购买的人民邮电出版社电子书仅供您个人使用,未经授权,不得以任何方式复制和传播本书内容。

我们愿意相信读者具有这样的良知和觉悟,与我们共同保护知识产权。

如果购买者有侵权行为,我们可能对该用户实施包括但不限于关闭该帐号等维权措施,并可能追究法律责任。

• 著     [美] Narbik Kocharians  [斯洛伐克] Peter Palúch

  译     YESLAB工作室

  责任编辑 傅道坤

• 人民邮电出版社出版发行  北京市丰台区成寿寺路11号

  邮编 100164  电子邮件 315@ptpress.com.cn

  网址 http://www.ptpress.com.cn

• 读者服务热线:(010)81055410

  反盗版热线:(010)81055315


CCIE Routing and Switching v5.0 Official Cert Guide, Volume 1, Fifth Edition (ISBN: 1587143968)

Copyright © 2015 Pearson Education, Inc.

Authorized translation from the English language edition published by Cisco Press.

All rights reserved.

本书中文简体字版由美国Pearson Education授权人民邮电出版社出版。未经出版者书面许可,对本书任何部分不得以任何方式复制或抄袭。

版权所有,侵权必究。


本书是根据Cisco最新发布的CCIE路由和交换400-101考试纲要编写的认证考试指南,旨在帮助读者掌握该考试的所有主题,为顺利通过考试打下基础。

本书分为11章,其内容包括以太网基础、虚拟LAN和VLAN中继、生成树协议、IP编址、IP服务、IP转发(路由)、RIPv2和RIPng、EIGRP、OSPF、IS-IS,以及IGP的路由重分布、路由汇总、默认路由和排错等知识。为了帮助广大读者更好地深入掌握各章所学的知识,每章开头的“我已经知道了吗?”测试题,以帮助读者更好地评估知识能力并确定如何分配有限的学习时间。在主要章节中间,作者提供了大量具有极佳连贯性的配置示例,便于读者掌握认证考试中可能遇到的各种复杂场景。在每章末尾的“备考任务”中总结了本章的考试要点以及各种有用的IOS配置和验证命令,以方便读者参考和复习。此外,为帮助读者进行考前模拟,配套光盘还提供了测试工具和模拟测验题。

本书主要面向备考CCIE路由和交换笔试的考生,但本书相关内容实用性很强,有助于提高大家日常工作的效率,保证网络的高效运行,因而也非常适合从事企业网及复杂网络设计及运维的工程技术人员参考。


Narbik Kocharians,CCIE #12410(R&S、安全、SP),他拥有3个CCIE认证和32年IT行业工作经验。他曾经设计、部署和维护过众多企业网络。Narbik现任Micronics 培训公司(www.micronicstraining.com)的总裁,并教授CCIE R&S和SP方向的基础教程。

Peter Palúch,CCIE #23527(R&S),他是一位助理教授、Cisco网络学院讲师,以及斯洛伐克日利纳大学管理科学与信息科学学院培训师。Peter曾经参与斯洛伐克国内外的众多教育活动,专注于网络互联和基于Linux的网络服务器系统。他还活跃于Cisco服务支持社区(Cisco Support Community),并从2011年奖励计划推出以来,一直是LAN和WAN路由交换领域Cisco Designated VIP奖项的持有人。在2012年应Cisco的邀请,Peter加入了两个工作任务分析(Job Task Analysis)小组,协助Cisco定义接下来的CCIE R&S和CCNP R&S认证考试内容。Peter拥有应用信息学硕士学位和VoIP质量下降因素研究方向的博士学位。Peter和他的学生一起,启动了在开源路由软件Quagga中实施EIGRP路由协议的项目,并于2013年项目启动之初就一直推动着项目的发展。


Paul Negron,CCIE #14856,CCSI #22752,他已经在网络互联技术领域奋斗了17年,曾经参与多个运营商的核心网络服务设计,其中包括Comcast、Qwest、英国电信和Savvis等。他现在致力于教授CCNP级别的SP课程,其中包括高级BGP、MPLS和QoS等课程。Paul拥有6年的卫星通信经验,以及10年的Cisco设备部署经验。

Sean Wilkins是SR-W咨询公司(www.sr-wconsulting.com)一位成功的网络顾问,从20世纪90年代中期就开始奋斗于IT领域,曾经在Cisco、Lucent、Verizon和AT&T等公司,以及其他私人企业工作过。Sean持有Cisco认证(CCNP/CCDP)、微软认证(MCSE)和CompTIA认证(A+和Network+)。他同时还拥有信息技术硕士学位,重点研究网络体系结构及设计;拥有组织管理学硕士学位;拥有网络安全领域专家认证;拥有计算机网络专业学士学位;同时还是计算机信息系统应用科学协会会员。除了提供咨询外,Sean还在为多个公司提供技术写作和编辑工作;具体成果可以查询作者网站:www.infodispersion.com。


我要将此书献给我的妻子Janet,感谢她的爱与鼓励,以及持续不断的支持;献给我的父亲,感谢他的至理名言。

——Narbik Kocharians

献给我的家人、学生、同僚和朋友。

——Peter Palúch


首先,感谢上帝赐予我写作和教学的机会与能力,并让我有机会做自己真正喜爱的工作。其次,感谢我的家人,尤其是我的妻子,感谢她的鼓励和帮助。她完美地胜任了与学生交流的工作,并很好地管理了课堂秩序,使我能够专注于教学任务。还要感谢我的孩子们:Chris、Patrick、Alexandra,还有我的小不点Daniel,感谢他们的耐心对待。

我要特别感谢Brett Bartow先生,感谢他的耐心,容忍了我们不断延迟的交稿日期。不得不提技术编辑和技术审稿人做出的杰出工作;非常感谢你们。最后,我要感谢我的所有学生,谢谢你们每天激励着我;还有你,亲爱的读者。

——Narbik Kocharians

能够参与本书新版的写作工作,对于我来说是至高无上的荣耀。Wendell Odom如此慷慨地把这份殊荣传递给了我,是他向Cisco Press力荐我为作者,我会永远感谢他,感谢他对我的信任。通过前几版作者所作出的杰出努力,这本书保持了极高的水平,我也尽力让新版本维持在同一水准上;同时我也要诚挚地感谢前几任作者,是他们写作的这本好教材帮我获得了认证。

接下来我要感谢本书的执行编辑Brett Bartow。感谢Brett的邀请和本书写作期间持续给予的鼓励,以及对于我曾经更改(其实是一直延误)交稿日期的行为给予的容忍和理解。他尽全力帮助我们,并对于写作质量毫不妥协。

如果没有家人的一贯支持,我是无法完成本书的写作工作的。他们鼓励我、帮助我,并通过各自的方式满足我的需求。任何语言也无法表达我的感激之情。

——Peter Palúch


本书在介绍命令语法时使用与IOS命令参考一致的约定,本书涉及的命令参考约定如下:


CCIE(Cisco Certified Internetwork Expert,思科认证互联网专家)是网络认证领域最具挑战性也最具声望的认证之一,获得了无数赞誉和奖项,是技术界公认最难获得的认证之一。CCIE认证能够帮助大家打开专业领域之门,得到更高的工作报酬和与众不同的简历。

Cisco目前提供了多种CCIE认证,本书涵盖了CCIE路由和交换认证笔试第5.0版考试大纲的所有内容。下面列出了截至本书出版之时Cisco提供的所有CCIE认证,大家可以通过www.cisco.com/go/ccie查阅最新的CCIE认证信息,以下认证以其在网页上的顺序为序:

每项CCDE和CCIE认证都必须通过笔试和一天的实验室考试,笔试的目的是测试大家对优秀设计实践所必需的技术理论、协议及配置概念的理解和掌握程度,实验室考试的目的是测试大家对真实设备的配置和排障能力。

通过CCIE路由和交换笔试最直接也是最明显的理由是,这是获得CCIE路由和交换认证的第一步,只有通过了CCIE路由和交换笔试,才能安排后面的CCIE实验室考试。也就是说,如果希望获得CCIE路由和交换认证的所有好处,那么就必须首先通过CCIE路由和交换笔试。

获得CCIE认证的好处不胜枚举,可能有:

通过CCIE路由和交换笔试的另一个重要原因就是对自己的初级、中级及高级Cisco认证进行再认证,有关Cisco再认证的具体需求可能会发生变化,具体需求请参阅www.cisco.com/go/certifications。

截至本书写作之时,CCIE路由和交换笔试由隶属于Pearson VUE(www.vue.com/cisco)的监考机构负责,需要在两小时内完成大约100道多项选择题,所有的模拟题都不是实际笔试的考试题。

与大多数考试一样,每个人都希望知道实际的考试情况,Cisco在CCIE路由和交换笔试大纲中提供了相关考试主题的通用指南,最新版本请参阅www.cisco.com/go/ccie。

虽然Cisco会经常调整CCIE笔试和实验室考试的大纲,但很少更改考试编号,不过这次发布的CCIE路由和交换笔试大纲v5.0却更改了考试编号。v4.0的考试编号为350-001,v5.0的考试编号为400-101。

为了帮助读者更好地练习并熟练掌握CCIE路由和交换的主题内容,本书在配套光盘中提供了大量测试题,很好地反映了5.0版本考试大纲的要求。应该说这些主题需要用到本书提到的所有知识,提供这些测试题库的原因是希望为广大读者提供更多的学习和练习机会,以更好地掌握这些主题内容。

这些测试题都在模拟考试测试软件的题库中,大家可以进行完整的模拟测试,也可以选做特定类型的测试题。

本节将简要介绍本书的主要内容、主要目标以及阅读本书时的常见注意事项。

本书主要包括4个部分。除了书中提到的这些章节之外,第4部分还提供了很多有用的附录信息。

本书每个部分的主要内容如下。

这一部分主要关注LAN二层特性,尤其是以太网(第1章)、VLAN和Trunk技术(第2章)和生成树协议(第3章)。

这一部分详细介绍了TCP/IP协议栈的分层,其中包括第3层基础知识(第4章)和IP服务(第5章),比如DHCP和ARP。

这一部分包含了考试中比较重要的主题,也是本书分量最大的一部分。它包含了三层转发概念(第6章),接着用四章的篇幅分别介绍了4种路由协议:RIPv2、EIGRP、OSPF和IS-IS(分别为第7~10章),最后讨论了IGP重分布和路由信息优化的内容(第11章)。

本书每个章节的编排都尽力帮助大家更好地利用时间,具有如下特点。


本章主要讨论以下主题:

多年以来以太网(Ethernet)协议一直都是LAN协议中的中流砥柱,这种局面恐怕也不会很快改变。通常情况下,学习网络和网络基础的人对协议操作,以及协议的局限性及优势非常清楚。这种熟悉程度常常会让我们在确定技术学习的入手点时显得踌躇满志。但考虑到有太多的技术,其性能和功能都归功于以太网时,显然,以太网就是进行任何网络技术讨论的最佳起点。以太网广为接受且非常有用,使得它的角色不断扩展;事实上,现在它甚至出现在了WAN之中。以太网WAN技术就像城域以太网(Metro-Ethernet)一样,已经改变了人们构建地理上分散的基础设施的方式,并为更高的吞吐量铺平了道路,而传统的传输模式不仅速度慢,而且限制多。

虽然知道大部分读者通过基于以太网的大量操作,可能已经对以太网非常熟悉,但读者仍需要尽职尽责地学习该技术,因为它对于创建最基础及最复杂的网络环境是如此重要,而且就算大多数读者非常了解其操作,也可能忘记了其操作中的一些麻烦行为。所以本章的目的是尽可能清晰简洁地概括这些操作。

表1-1列出了本章的基本主题,以及与之相应的测试题。

表1-1  “我已经知道了吗?”基本主题及测试题对照表

基本主题                  

测试题 

以太网第1层:线缆、速率和双工

1~4

以太网第2层:成帧和编址

5~6

交换和桥接逻辑

7

SPAN、RSPAN和ERSPAN

8~9

虚拟交换系统

10~11

IOS现代化

12

为了提高测试评价效果,请务必严格评分。参考答案请参见附录A。

1.以下哪项正确表示了以太网交叉线两端RJ-45水晶头针脚的连接方式?

  a.1至1

  b.1至2

  c.1至3

  d.6至1

  e.6至2

  f.6至3

2.以下哪项正确表示了以太网直通线两端RJ-45水晶头针脚的连接方式?

  a.1至1

  b.1至2

  c.1至3

  d.6至1

  e.6至2

  f.6至3

3.要想禁用以太网自动协商,工程师必须在Cisco IOS接口上配置以下哪条命令?

  a.no auto-negotiate

  b.no auto

  c.speedduplex

  d.duplex

  e.speed

4.假设两台Cisco交换机10/100接口之间通过以太网交叉线连接在一起。一台交换机配置了100Mbit/s全双工。关于另一台交换机的描述,以下哪项是正确的?

  a.它将使用速率10Mbit/s

  b.它将使用速率100Mbit/s

  c.它将使用半双工双工设置

  d.它将使用全双工双工设置

5.以下以太网头部类型字段中,哪个长度为2字节?

  a.DSAP

  b.类型(在SNAP头部中)

  c.类型(在以太网V2头部中)

  d.LLC控制

6.以下哪项定义了快速以太网标准?

  a.IEEE 802.1Q

  b.IEEE 802.3U

  c.IEEE 802.1X

  d.IEEE 802.3Z

  e.IEEE 802.3AB

  f.IEEE 802.1AD

7.假设有一台全新的Cisco IOS交换机刚拆箱并连接了几台设备。其中一台设备发送了一个数据帧。交换机将使用以下哪种目的地址,向(除收到此帧的接口之外的)所有接口泛洪这个数据帧?

  a.广播

  b.未知单播

  c.已知单播

  d.组播

8.以下哪个配置问题将阻止SPAN会话变成活跃状态?

  a.误配的目的接口

  b.将目的接口配置为Trunk

  c.目的接口关闭

  d.将源接口配置为Trunk

9.以下哪项是配置SPAN的规则?

  a.SPAN的源和目的接口必须配置相同的速率和双工

  b.如果源接口配置了100Mbit/s,目的接口必须配置100Mbit/s或以上

  c.在SPAN会话中,源必须是物理接口或VLAN,但不能是两种的混合

  d.远程SPAN VLAN必须在VLAN范围1~66中

  e.一台交换机只能配置三个SPAN会话

10.以下哪项能够在降低现代网络架构的复杂性的功能中,能直接影响二层和三层?

  a.生成树协议

  b.网桥保障(Bridge Assurance)

  c.虚拟交换设计

  d.虚拟交换系统

  e.IOS-XR

11.在虚拟交换系统的配置中,哪个组成部分负责传输对等体之间的传输控制流量、管理流量和数据平面流量?

  a.VPC链路

  b.伪装链路(Sham-Link)

  c.虚拟交换链路(Virtual Switch Link)

  d.Port-Channel

  e.Ether-Channel

12.Cisco IOS的功能进一步得到了扩展,它从整体架构转变到模块化设计模型,可以支持现代的企业部署。当前版本的IOS是什么?

  a.CUOS

  b.IOS-NG

  c.LINUX

  d.IOS-XE

  e.IOS 2.0版

在使以太网LAN正常工作之前,终端用户设备、路由器和交换机必须用正确的线缆连接。为了在更高速率传输时减少传输错误,也为了支持更长的线缆距离,工程师可以使用多种铜制及光纤线缆。不同的以太网标准以及不同标准中的线缆类型和线缆长度,对于认证考试很重要,本章后文的“备考任务”中会列出这些内容。

读者应该知道这几个在几乎所有网络中都会用到的5类(Cat 5)、超5类(Cat 5e)和6类(Cat 6)交叉和直通线缆的详情。EIA/TIA为以太网LAN定义了线缆标准(www.eia.org and http://www.tiaonline.org),包括RJ-45连接的针脚,如图1-1所示。

图1-1 RJ-45针脚和4对UTP线缆

最流行的以太网标准(10BASE-T和100BASE-TX)都使用两对双绞线(具体为图1-1中所示的第2对和第3对),每一对用于一个方向的传输。根据设备用哪对线缆进行传输和接收,相应使用直通或交叉线缆。表1-2总结了线缆和针脚的连接方式。

表1-2  以太网线缆类型

线缆类型

针脚

关键针脚连接       

直通

T568A(两端)或T568B(两端)

1–1;2–2;3–3;6–6

交叉

T568A在一端,T568B在另一端  

1–3;2–6;3–1;6–2

许多以太网标准使用两对双绞线,每一对用于一个方向的传输。例如,PC网络接口卡(NIC)在线对1、2上传输数据,在线对3、6上接收数据;交换机接口则相反。所以在它们之间,直通线缆可以很好地工作:PC的1、2对(PC传输对)连接到交换机接口的1、2对,交换机用这两对进行接收。当线缆两端的设备都使用相同的针脚传输数据时,需要使用交叉线。例如,如果两台直连的交换机使用针脚3、6发送数据,并在1、2针脚上接收数据,就需要线缆将一端的3、6针脚连接到另一端的1、2针脚上,反之亦然。

注释:


交叉线也可以用在一对PC之间,将一端的传输对(1、2)和另一端的接收对(3、6)进行调换。

Cisco能够让交换机来判断线缆的使用是否正确:Auto-MDIX(与介质相关的自动接口交叉器)能够检测到错误的线缆,并使交换机交换其使用的传输和接收针脚,从而可以解决线序问题(在本书出版时,并不是所有Cisco交换机模块都支持这一特性)。

默认情况下,每个Cisco交换机接口都使用以太网自动协商(Ethernet autonegotiation)功能来确定速率和双工设置(全双工或半双工)。交换机也能通过duplex接口配置命令设置双工,通过speed接口配置命令设置速率。

交换机可以通过使用几种不同的方式,在特定的以太网段上动态检测速率设置。Cisco交换机(及许多其他设备)可以使用自动协商进程中的FLP(快速链路脉冲)来感知速率。然而,如果线缆的任意一端禁用了自动协商,交换机就会基于入向电信号来检测速率。工程师可以在链路两端配置不同的速率,迫使链路两端的速率不匹配,使得链路不再正常工作。

交换机只能通过自动协商来检测双工设置。如果链路两端都启用了自动协商,设备会自动协商双工设置。然而,如果线缆的任意一端禁用了自动协商,未配置双工设置的设备必须使用默认值。Cisco交换机默认使用半双工(HDX)(对于10Mbit/s和100Mbit/s接口)或全双工(FDX;对于1000Mbit/s接口)。要想在Cisco交换机接口上禁用自动协商,工程师只需要在接口上静态配置速率和双工。

只有当连接的线缆上不会发生冲突时,以太网设备才能使用FDX;只有在不使用共享的集线器时,才能保证链路上不会发生。接下来的几个主题回顾以太网在发生冲突时如何进行处理,并对比不会发生冲突且允许使用FDX的以太网逻辑的区别。

1.CSMA/CD

原始的以太网标准预计LAN上会发生冲突。由于介质是共享的,因而创建了电气总线。任何发送到线缆上的电信号都可能与其他设备发送的信号相冲突。当同一时刻,有两个或多个以太网帧在传输介质上重叠时,冲突就发生了;冲突会导致比特错误和数据帧丢失。

原始的以太网标准定义了CSMA/CD(载波侦听多路访问/冲突检测)算法来处理不可避免的冲突。CSMA/CD使冲突的数量最小化,但当冲突发生时,CSMA/CD也定义了发送方识别冲突并重传帧的方式。以下概括了CSMA/CD过程的步骤。

1.要发送帧的设备侦听,直到以太网空闲(换句话说,设备不能在以太网段上检测到载波信号)。

2.当以太网空闲时,发送方开始发送帧。

3.发送方侦听以确保没有冲突发生。

4.如果有冲突,所有发送帧的设备必须发送拥塞信号,确保所有设备都识别了冲突。

5.在拥塞结束后,每个原冲突帧的发送方都会随机设置一个计时器,并在重新发送前等待相应的时间(其他未造成冲突的设备不需等待)。

6.在所有计时器超时后,原发送方可以再从第1步开始。

2.冲突域和交换机缓存

冲突域(Collision Domain)是发送的帧可能互相发生冲突的设备的集合。在LAN交换机到来之前,以太网不是物理共享(10BASE2和10BASE5)的,就是通过共享集线器及其第1层的“向所有其他接口重复”逻辑共享的。以太网交换机使用帧缓存及其更完整的第2层逻辑,极大地减少了可能发生的冲突数量。

根据定义,以太网集线器:

集线器的逻辑使集线器只创建一个冲突域。然而,交换机的每个交换机接口都创建一个冲突域,如图1-2所示。

图1-2 集线器和交换机的冲突域

与集线器相比,交换机也有具相同的布线及信号再生优势,但交换机的功能更多——包括通过缓存帧,减少甚至消除冲突。当交换机在不同接口上接收到多个帧时,交换机会将帧存在内存缓存中以避免冲突。

例如,假设一台交换机同时从三个接口各接收到了一个数据帧,并且要把它们从相同的交换机接口发出。交换机会将两个帧存在内存中,并按序执行转发。因此在图1-2中,交换机避免了Larry发送的帧与Archie或Bob发送的帧发生冲突——通过将图1-2中每个连接到交换机上的PC放置在不同的冲突域中,实现了这一需求。

当交换机接口通过线缆连接其他非集线器设备时——如图1-2所示的三台PC——不可能发生冲突。唯一可以产生冲突的设备是交换机接口与其直连的设备——然而它们都有独立的用来传输的双绞线对。正因为不会发生冲突,才可以在这样的网段中使用全双工逻辑。

注释:


网卡在HDX模式下传输帧时使用环回电路(loopback circuitry)。电路将传输出去的帧传回网卡的接收端,所以当网卡通过线缆接收到帧时,环回的信号和接收到的信号能够让网卡知道发生了冲突。

Cisco交换机接口的3个重要配置参数是自动协商、速率和双工。Cisco交换机默认使用自动协商;当工程师手动配置了速率和双工时,自动协商自动禁用。如果接口能够支持多种速率,工程师可以使用接口命令speed {auto101001000}设置速率;可以使用接口命令duplex {autohalffull}设置双工模式。

例1-1显示了速率和双工的配置,以图1-3中的交换机1和交换机4之间的链路为例,配置结果导致了双工模式不匹配(本书使用了基于IOS的交换机命令,在Cisco CCIE大纲中称为“Catalyst IOS”)。

图1-3 使用Trunk的简单交换网络

例1-1 手动设置双工和速率,使用不匹配的双工模式

switch1# show interface fa 0/13
FastEthernet0/13 is up, line protocol is up
 Hardware is Fast Ethernet, address is 000a.b7dc.b78d (bia 000a.b7dc.b78d)
 MTU 1500 bytes, BW 100000 Kbit, DLY 100 usec,
   reliability 255/255, txload 1/255, rxload 1/255
 Encapsulation ARPA, loopback not set
 Keepalive set (10 sec)
 Full-duplex, 100Mb/s
! remaining lines omitted for brevity
! Below, Switch1's interface connecting to Switch4 is configured for 100 Mbps,    
! HDX. Note that IOS rejects the first duplex command; you cannot set duplex unti   
! the speed is manually configured.
switch1# conf t
Enter configuration commands, one per line. End with CNTL/Z.
switch1(config)# int fa 0/13
switch1(config-if)# duplex half
Duplex will not be set until speed is set to non-auto value
switch1(config-if)# speed 100
05:08:41: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/13, changed
 state þto down
05:08:46: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/13, changed
 state þto up
switch1(config-if)# duplex half
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! NOT SHOWN: Configuration for 100/half on Switch4's int fa 0/13.
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! Now with both switches manually configured for speed and duplex, neither will be  
! using Ethernet auto-negotiation. As a result, below the duplex setting on Switch1
! can be changed to FDX with Switch4 remaining configured to use HDX.
switch1# conf t
Enter configuration commands, one per line. End with CNTL/Z.
switch1(config)# int fa 0/13
switch1(config-if)# duplex full
05:13:03: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/13, changed
 state to down
05:13:08: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/13, changed
 state to up
switch1(config-if)# ^Z
switch1# sh int fa 0/13
FastEthernet0/13 is up, line protocol is up
! Lines omitted for brevity
 Full-duplex, 100Mb/s
! remaining lines omitted for brevity
! Below, Switch4 is shown to be HDX. Note
! the collisions counters at the end of the show interface command.
switch4# sh int fa 0/13
FastEthernet0/13 is up, line protocol is up (connected)
 Hardware is Fast Ethernet, address is 000f.2343.87cd (bia 000f.2343.87cd)
 MTU 1500 bytes, BW 100000 Kbit, DLY 1000 usec,
   reliability 255/255, txload 1/255, rxload 1/255
 Encapsulation ARPA, loopback not set
 Keepalive set (10 sec)
 Half-duplex, 100Mb/s
! Lines omitted for brevity
 5 minute output rate 583000 bits/sec, 117 packets/sec
   25654 packets input, 19935915 bytes, 0 no buffer
   Received 173 broadcasts (0 multicast)
   0 runts, 0 giants, 0 throttles
   0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored
   0 watchdog, 173 multicast, 0 pause input
   0 input packets with dribble condition detected
   26151 packets output, 19608901 bytes, 0 underruns
   54 output errors, 5 collisions, 0 interface resets
   0 babbles, 54 late collision, 59 deferred
   0 lost carrier, 0 no carrier, 0 PAUSE output
   0 output buffer failures, 0 output buffers swapped out
02:40:49: %CDP-4-DUPLEX_MISMATCH: duplex mismatch discovered on FastEthernet0/13
(not full duplex), with Switch1 FastEthernet0/13 (full duplex).
! Above, CDP messages have been exchanged over the link between switches. CDP
! exchanges information about Duplex on the link, and can notice (but not fix)
! the mismatch.

在示例最后一部分,交换机4上的统计数据显示了冲突(在前64字节传输过程中检测到)和延时冲突(前64字节传输后)。在受到线缆长度限制的以太网中,应该在链路上传输前64字节时就检测到冲突。此例中,交换机1使用FDX逻辑,表示其随时发送帧——包括在交换机4发送帧的同时。因此,交换机4随时都会收到帧,如果交换机4正在发送帧,它就认为发生了冲突。交换机4延时了59个帧,表示它选择在发送帧之前等待,因为它正在接收帧。而且,交换机4重传它认为被冲突损坏但可能未被损坏的帧,会导致交换机1接收到重复的帧,有时还会造成应用连接断开及路由器失去邻居关系。

在本书以及许多Cisco课程和文档中,数据帧一词指包含在二层头部和尾部之间的比特和字节,以及被头部和尾部封装的数据。术语数据包最常用来描述三层头部和数据,不包含二层头部和尾部。以太网第2层的标准与创建、转发、接收和解释以太网帧相关。

原始的以太网标准由Digital Equipment公司、Intel和Xerox所有——因而也就有了名字“Ethernet (DIX)”。后来,在20世纪80年代早期,IEEE标准化了以太网,将一部分(第1层和第2层的一部分)定义在802.3介质访问控制(Media Access Control,MAC)标准中,将第2层的另一部分定义在802.2逻辑链路控制(Logical Link Control,LLC)标准中。后来,IEEE意识到802.2 LLC头部中,长度为1字节的目的服务访问点(Destination Service Access Point,DSAP)字段太小了;因此,IEEE在802.2头部之后引入了新的帧格式子网访问协议(Sub-Network Access Protocol,SNAP),如图1-4第三种头部格式所示。最终,在1997年,IEEE将原始的DIX V2帧格式也加入了802.3标准,如图1-4顶部帧所示。

图1-4 以太网成帧选项

表1-3列出了头部字段,包含简要的解释。更重要的字段在表后进行详细解释。

表1-3  以太网头部字段

字段

描述

前导码(DIX)

提供同步及信号转换,使设备能够为传输信号使用合适的时钟。由62位交替的1和0构成,末位是11

前导码和帧首定界符(802.3)

用途和二进制值都与DIX前导码相同;802.3只是将8字节的DIX前导码重命名为7字节的前导码和1字节的帧首定界符(SFD)

类型(或协议类型)(DIX)

2字节的字段,标识了头部后面的协议类型或协议头部。使帧的接收者知道如何处理接收到的帧

长度(802.3) 

以字节为单位描述长度字节后面一直到以太网尾部的数据长度。使以太网帧的接收者预测接收帧的结束

目的服务访问点(802.2)

DSAP;1字节的协议类型字段。由于大小的限制,以及其他对低阶比特的使用限制,使得后来增加了SNAP头部

源服务访问点(802.2)

SSAP;1字节的协议类型字段,描述创建了这个帧的上层协议

控制(802.2)

1或2字节的字段,提供支持无连接和面向连接的操作的机制。现代协议通常只使用无连接的操作,1字节值为0x03

组织唯一标示符(SNAP)

OUI;3字节字段,现在通常不使用,为帧的发送者提供位置来标示以太网NIC生产厂家的OUI

类型(SNAP) 

2字节类型字段,与DIX类型字段使用相同的值,克服DSAP字段空间不足的问题

以太网地址常被称为MAC地址,长度为6字节,通常以十六进制表示。主要有三类以太网地址,如表1-4所示。

表1-4  三类以太网/MAC地址

以太网/MAC地址类型 描述和说明
单播 表示一个LAN接口地址的术语。I/G位,即最高有效字节中的最低有效位被设置为0
广播 表示“此LAN中所有设备”的地址。取值总是十六进制FFFFFFFFFFFF
组播 表示当前LAN中部分设备的MAC地址。根据定义,I/G位被设置为1

多数工程师已经知道如何在典型的网络中使用单播和组播地址。当以太网NIC需要发送一个帧时,它将自己的单播地址放置在头部的源地址字段中。如果它想把帧发送给LAN上的特定设备,发送者将其他设备的MAC地址放在以太网头部的目的地址字段中。如果发送者希望发送帧给LAN上的每一台设备,它将帧发送给FFFF.FFFF.FFFF广播目的地址(发往广播地址的帧被称为广播或广播帧,发往单播MAC地址的帧被称为单播或单播帧)。

组播以太网帧用来与LAN中部分设备的动态子集进行通信。最常用的以太网组播地址与IP组播的使用有关。例如,如果LAN上100个用户中只有3个希望使用基于IP组播的视频应用,来观看相同的视频流,应用程序就可以发送一个组播帧。三个感兴趣的设备做好准备,监听发往一个特定组播以太网地址的帧,并处理发往该地址的帧。其他设备可能也会接收到此帧,但会忽略其内容。因为以太网组播的概念现今最常用在IP组播中,剩下的大部分以太网组播内容在第2卷的第7章中介绍。

IEEE计划通过管理MAC地址的分配,使单播地址在全世界的范围内保持唯一。IEEE给每个供应商分配一个代码,用于MAC地址的前3字节;地址的前一半称为组织唯一标示符(Organizationally Unique Identifier,OUI)。IEEE希望每个供应商对于其生产的任何以太网产品,MAC地址的前3字节都使用自己的OUI。供应商随后还对每个生产的以太网网卡的后3字节分配一个唯一值——这就保证了MAC地址的全球唯一性。图1-5显示了基本的以太网地址格式以及一些额外的信息。

图1-5 以太网地址格式

注意图1-5中显示了最高有效字节和每个字节中的最低有效位的具体位置。IEEE文档中以太网地址的最高有效字节在最左侧。然而,在每个字节内,最左侧的位是最高有效位,最右侧的位是最低有效位。许多文档将这样的位顺序称为标准的(canonical)。不管术语如何,每个字节中的位顺序对于理解以太网地址中的两个最重要的位,具有很重要的意义:

表1-5总结了每个位的意义。

表1-5  I/G位和U/L位

字段 意义
I/G 二进制0代表地址为单播;二进制1表示地址是组播或广播
U/L 二进制0表示地址是厂商分配的;二进制1表示地址被管理性分配,覆盖了厂商分配的地址

I/G位说明了地址代表的是单个设备还是一组设备,U/L位标识本地配置的地址。例如,IP组播使用的以太网组播地址总是以0x01005E开始。十六进制值01(地址的第一个字节)转换为二进制为00000001,最低有效位为1,也就是I/G位的用途。

注释:


通常,在覆盖MAC地址以使用本地地址时,设备或设备驱动不会强制将U/L位值设置为1。

图1-4中显示的三种以太网头部类型中,每一个都有用于标识帧中数据格式的字段。该字段通常被称为类型,允许以太网帧的接收者知道如何解释收到的这个帧中的数据。例如,路由器可能希望知道帧中是否包含IP包或IPX包等。

DIX和改进后的IEEE帧中都是用了类型字段,也称为协议类型字段。原IEEE对成帧的定义是:使用相同的2字节作为长度字段。为了与以太网头部相区分,以太网的类型字段取值总是以1536开始,而IEEE帧数据字段的长度总是限制在十进制1500及以下。这样一来,以太网网卡就可以轻松识别这个帧的格式到底是DIX,还是原IEEE格式了。

原IEEE帧为802.2 LLC标准的类型字段使用了一个1字节的协议类型(DSAP)字段。其中预留2个高位比特以作他用,与MAC地址中的I/G位和U/L位相似。因此,DSAP字段的可能组合无法满足实际使用的要求——于是IEEE必须定义另一个类型字段,这个字段位于附加的IEEE SNAP头部中。表1-6总结了以太网三个主要的类型字段及其用途。

表1-6  以太网类型字段

类型字段

描述

协议类型

DIX V2类型字段;2字节;注册的值现由IEEE管理

DSAP   

802.2 LLC;1字节,有2个高位比特被预留以作他用;注册的值现由IEEE管理

SNAP  

SNAP头部;2字节;使用与以太网协议类型相同的值;由802.2 DSAP 0xAA标示

本章至此已经回顾了以太网线缆的详情,以及以太网帧中每个字段的格式和意义。交换机的终极目标是基于帧头中的MAC地址,将这些帧发给适当的目的地。表1-7总结了交换机在转发帧时使用的逻辑,根据目的以太网地址的类型,以及目的地址是否被增加至MAC地址表,交换机使用的逻辑有所不同。

表1-7  LAN交换机转发行为

地址类型

交换机行为

已知单播

把帧从一个与目的地址关联的接口转发出去

未知单播

向除了接收帧接口之外的所有接口泛洪帧

广播

同未知单播一样泛洪帧

组播

同未知单播一样泛洪帧,除非配置了组播优化策略

为了最有效地转发单播帧,交换机需要知道所有的单播MAC地址,以及对于每个MAC地址,交换机应把帧从哪个接口转发出去。交换机通过查看收到的帧的源MAC地址,来获知MAC地址及其关联接口。例1-2展示了交换机学习MAC地址的过程,以及其他一些交换机操作细节。图1-6列出了与例1-2相关的其他设备及其MAC地址。

图1-6 示例网络及MAC地址

例1-2 查看MAC地址表学习过程的命令

Switch1# show mac-address-table dynamic
      Mac Address Table
------------------------------------------

Vla-    Mac Address   Type    Ports
----   -----------    ----    -----
  1   000f.2343.87cd  DYNAMIC  Fa0/13
  1   0200.3333.3333  DYNAMIC  Fa0/3
  1   0200.4444.4444  DYNAMIC  Fa0/13
Total Ma Addresses for this criterion: 3
! Above, Switch1's MAC address table lists three dynamically learned addresses,
! including Switch4's FA 0/13 MAC.
! Below, Switch1 pings Switch4's management IP address.
Switch1# ping 10.1.1.4

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.1.1.4, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/2/4 ms
! Below Switch1 now knows the MAC address associated with Switch4's management IP
! address. Each switch has a range of reserved MAC addresses, with the first MAC
! being used by the switch IP address, and the rest being assigned in sequence to
! the switch interfaces – note 0xcd (last byte of 2 nd address in the table above)
! is for Switch4's FA 0/13 interface, and is 13 (decimal) larger than Switch4's
! base MAC address.
Switch1# show mac-address-table dynamic
      Mac Address Table
------------------------------------------

Vlan   Mac Address    Type    Ports
----   -----------    ----    -----
  1   000f.2343.87c0  DYNAMIC  Fa0/13
  1   000f.2343.87cd  DYNAMIC  Fa0/13
  1   0200.3333.3333  DYNAMIC  Fa0/3
  1   0200.4444.4444  DYNAMIC  Fa0/13
Total Mac Addresses for this criterion: 4
! Not shown: PC1 ping 10.1.1.23 (R3) PC1's MAC in its MAC address table
------------------------------------------

Vla-   Mac Address    Type    Ports
----  -----------    ----    -----
  1  000f.2343.87c0  DYNAMIC  Fa0/13
  1  000f.2343.87cd  DYNAMIC  Fa0/13
  1  0010.a49b.6111  DYNAMIC  Fa0/13
  1  0200.3333.3333  DYNAMIC  Fa0/3
  1  0200.4444.4444  DYNAMIC  Fa0/13
Total Mac Addresses for this criterion: 5
! Above, Switch1 learned the PC's MAC address, associated with FA 0/13,
! because the frames sent by the PC came into Switch1 over its FA 0/13.
! Below, Switch4's MAC address table shows PC1's MAC off its FA 0/6
switch4# show mac-address-table dynamic
      Mac Address Table
-------------------------------------------

Vla-    Mac Address    Type    Ports
----    -----------    -------  -----
  1    000a.b7dc.b780  DYNAMIC  Fa0/13
  1    000a.b7dc.b78d  DYNAMIC  Fa0/13
  1    0010.a49b.6111  DYNAMIC  Fa0/6
  1    0200.3333.3333  DYNAMIC  Fa0/13
  1    0200.4444.4444  DYNAMIC  Fa0/4
Total Mac Addresses for this criterion: 5
! Below, for example, the aging timeout (default 300 seconds) is shown, followed
! by a command just listing the mac address table entry for a single address.
switch4# show mac-address-table aging-time
Vlan   Aging Time
----   ----------
  1   300
switch4# show mac-address-table address 0200.3333.3333
      Mac Address Table

-------------------------------------------

Vlan   Mac Address    Type      Ports
----   -----------    -------    -----
  1   0200.3333.3333  DYNAMIC    Fa0/13                       
Total Mac Addresses for this criterion: 1

Cisco Catalyst交换机支持一种转发方式,将一个源接口或源VLAN的所有流量转发至另一个接口。此特性在Cisco文档中称为SPAN(即交换机接口分析),有时也因其配置命令而称为会话监控,该特性对许多应用都有用。SPAN特性可以用来监控流量是否合规、进行数据收集或支持特定的应用。例如,工程师可以将语音VLAN的所有流量转发给一个交换机接口,以方便记录VoIP网络中的通话记录。此特性的另一个常用方式是用在支持入侵检测/防御系统(IDS/IPS)的安全方案中。

SPAN会话可以源于一个或几个接口,也可以源自一个VLAN。这为收集或监控来自一个特定源设备或一整个VLAN的流量提供了极大的灵活性。

在SPAN的操作中,SPAN会话的目的接口可以在本地交换机上。目的接口也可以是网络中其他交换机的接口,这种模式称为远程SPAN或RSPAN。在RSPAN中,工程师必须在从源接口或源VLAN,去往RSPAN目的接口的整个交换路径上,配置一个特定的VLAN;也要求路径中的所有Trunk中都包含这个RSPAN VLAN。图1-7为SPAN案例的拓扑,图1-8为RSPAN案例的拓扑,图1-9为封装远程SPAN(ERSPAN)的拓扑。

图1-7 SPAN拓扑

图1-8 RSPAN拓扑

图1-9 ERSPAN拓扑

本节的信息特别对应于Cisco 3560交换平台:Cisco 3750及许多其他平台使用相同或相似的规则及配置命令。

将SPAN、RSPAN及ERSPAN分解为基本的元素有助于理解,同时也可以帮助读者理解如何配置这些特性。

在SPAN中,工程师可以创建SPAN源,由交换机上至少一个接口或至少一个VLAN组成。在同一台交换机上,工程师可以配置SPAN目的接口。之后交换机会收集SPAN源数据,然后发给SPAN目的。

在RSPAN中,工程师可以创建相同的源类型——至少一个接口或至少一个VLAN。会话的目的为RSPAN VLAN,而不是交换机上的某个接口。在包含RSPAN目的接口的交换机上,RSPAN VLAN数据会被转发给RSPAN接口。

在ERSPAN中,工程师实际上可以封装远程SPAN信息。如名称所示,封装远程SPAN(ERSPAN)会为所有捕获的流量创建GRE(通用路由封装)隧道,并允许其通过第3层字段进行扩展。这是由IOS-XE带来的增强操作特性,可以在如ASR 1000一类的平台中使用,不过Catalyst 6500、7600和Nexus平台也支持ERSPAN。各种监控源包括快速以太网接口、吉比特以太网接口和Port-Channel接口。

无论工程师使用了哪种类型的SPAN,SPAN的源接口都可以是任意类型的接  口——路由接口、物理的交换机接口、Access接口、Trunk接口、EtherChannel接口(无论是物理接口,还是Port-Channel接口)等。在SPAN的源VLAN中,这个VLAN中的所有活动接口都会被监控。无论工程师是向这个VLAN中添加新接口,还是从这个VLAN中移除接口,SPAN源VLAN都会动态更新新接口,或者移除某个接口。还有,SPAN目的接口不能是SPAN源VLAN中的接口。

SPAN、RSPAN和ERSPAN对于目的接口有诸多限制,其中主要的限制条件包括以下这些。

RSPAN中的目的VLAN也有限制,更多内容可以参考本章“推荐读物”部分给出的参考信息。

SPAN、RSPAN和ERSPAN要想正常工作,还必须满足一系列条件。对于SPAN来说,重要条件包括以下这些。

SPAN、RSPAN和ERSPAN支持三种类型的流量:发送、接收和收发。默认情况下,SPAN同时作用于进入和离开源接口或源VLAN的流量。但工程师也可以通过配置,使SPAN只监控发送出去的流量,或者只监控接收到的流量。对于这些流量类型,需要满足的条件如下所示。

例1-3中的配置是要将接口Fa0/12发送和接收的流量镜像到接口Fa0/24,也就是接口Fa0/12发出和收到的所有流量都要被发送到Fa0/24。这就是基本流量镜像应用的常见配置。

例1-3 基本PSAN配置案例

MDF-ROC1# configure terminal
MDF-ROC1(config)# monitor session 1 source interface fa0/12
MDF-ROC1(config)# monitor session 1 destination interface fa0/24

在例1-4中,工程师配置交换机将以下流量发送到Fa0/24,并保留这些源的封装格式:

对于Fa0/19 Trunk接口接收到的流量,还要过滤掉(移除)属于VLAN 1、2、3和229的流量。

例1-4 复杂SPAN配置案例

MDF-ROC3# config term
MDF-ROC3(config)# monitor session 11 source interface fa0/18 rx
MDF-ROC3(config)# monitor session 11 source interface fa0/9 tx
MDF-ROC3(config)# monitor session 11 source interface fa0/19
MDF-ROC3(config)# monitor session 11 filter vlan 1 - 3 , 229
MDF-ROC3(config)# monitor session 11 destination interface fa0/24 encapsulation
 replicate

在例1-5中,工程师配置两台交换机IDF-SYR1和IDF-SYR2,让它们将以下流量发送到RSPAN VLAN 199,接收这些流量的是交换机MDF-SYR9上的接口Fa0/24:

注意这三台交换机分别使用了不同的会话ID,这在RSPAN中是允许的。会话编号的唯一限制是号码必须在1~66范围内。

例1-5 RSPAN配置案例

IDF-SYR1# config term
IDF-SYR1(config)# vlan 199
IDF-SYR1(config-vlan)# remote span
IDF-SYR1(config-vlan)# exit
IDF-SYR1(config)# monitor session 3 source vlan 66 – 68 rx IDF-SYR1(config)# monitor session 3 destination remote vlan 199

!Now moving to IDF-SYR2:
IDF-SYR2# config term
IDF-SYR2(config)# vlan 199
IDF-SYR2(config-vlan)# remote span
IDF-SYR2(config-vlan)# exit
IDF-SYR2(config)# monitor session 23 source vlan 9 rx
IDF-SYR2(config)# monitor session 23 source vlan 11
IDF-SYR2(config)# monitor session 23 destination remote vlan 199

!Now moving to MDF-SYR9
MDF-SYR9# config term
MDF-SYR9(config)# vlan 199
MDF-SYR9(config-vlan)# remote span
MDF-SYR9(config-vlan)# exit
MDF-SYR9(config)# monitor session 63 source remote vlan 199
MDF-SYR9(config)# monitor session 63 destination interface fa0/24
MDF-SYR9(config)# end

在例1-6中,工程师要配置ASR 1002来捕获所有接收的流量,并将其发送到Catalyst 6509的接口GE2/2/1。ASR 1002会将捕获的流量封装在GRE中,然后路由到Catalyst 6509。连接在6500交换机GE2/2/1接口上的嗅探工作站将会看到完整的以太网数据帧(L2到L7)信息。

例1-6 ERSPAN配置案例

ASR1002(config)# monitor session 1 type erspan-source
ASR1002(config-mon-erspan-src)# source interface gig0/1/0 rx
ASR1002(config-mon-erspan-src)# no shutdown
ASR1002(config-mon-erspan-src)# destination
ASR1002(config-mon-erspan-src-dst)# erspan-id 101
ASR1002(config-mon-erspan-src-dst)# ip address 10.1.1.1
ASR1002(config-mon-erspan-src-dst)# origin ip address 172.16.1.1

!Now for the configuration of the Catalyst 6500
SW6509(config)# monitor session 2 type erspan-destination
SW6509(config-mon-erspan-dst)# destination interface gigabitEthernet2/2/1
SW6509(config-mon-erspan-dst)# no shutdown
SW6509(config-mon-erspan-dst)# source
SW6509(config-mon-erspan-dst-src)# erspan-id 101
SW6509(config-mon-erspan-dst-src)# ip address 10.1.1.1

工程师可以使用命令show monitor session来检查SPAN、RSPAN或ERSPAN的工作,详见例1-7。

例1-7 ERSPAN检查案例

ASR1002# show monitor session 1
Session 1
---------
Type           : ERSPAN Source Session
Status          : Admin Enabled
Source Ports      :
  RX Only      : Gi0/1/0
Destination IP Address : 10.1.1.1
MTU            : 1464
Destination ERSPAN ID  : 101
Origin IP Address    : 172.16.1.1

从排错的角度看来,如果目的接口是关闭的,SPAN实例将无法启动。在工程师将目的接口打开后,SPAN会话会随之启动。

在所有现代网络中,我们发现最重要的事情是创建一个能够为设备、连接和服务,提供高可用性和高可靠性的拓扑。为了配置这些特性和功能,网络工程师通常使用的方法是创建冗余的二层交换环境,比如使用冗余的一对或多条链路来提供多路径。图1-10展示了常见的交换网络配置。

图1-10 常见的交换网络设计

可以看出,这些冗余网络设备和链路的应用和配置会快速提高网络设计和操作的复杂性。有一个方法可以解决这种复杂性设计,就是部署虚拟交换系统。这项技术能够实际地简化网络,因为它减少了网络设备的数量,工程师无需再对冗余的交换机和链路进行复杂管理了。运行IOS-XE(在本章后文“IOS-XE”小节中详细介绍)的Cisco Catalyst 6500和4500系列交换机能够支持该特性。

在本节的讨论中,我们使用VSS(虚拟交换系统)将一对Catalyst 4500或4500-X系列交换机合并到一台网络设备中。VSS管理冗余链路的方式,从外部设备看来,就像是管理单个Port-Channel。

这种部署方式简化了网络配置和操作,因为它不仅减少了三层路由邻居的整体数量,同时还提供了无环的二层拓扑。

想要部署VSS最基本的原因是想要将一对交换机在逻辑上合并到一台网络设备中,这一点之前已经提过了。为了更好地理解其中的过程,我们需要进一步查看这个特性为逻辑拓扑做哪些事情。举例来说,位于网络中分布层的VSS会与低于自己的接入层和高于自己的核心层进行通信,就好像它是一台交换机,如图1-11所示。

图1-11 分布网络中的VSS

从图1-11中可以看出,接入层的每台交换机各自使用一个逻辑的Port-Channel连接了两台VSS交换机,因为对于外部设备来说,VSS看起来就是一台单独的交换机——或者说逻辑交换机。VSS设备也做出了相应的改进,比如它们可以在Port-Channel上管理冗余特性和负载均衡特性,以此来掌控链路的行为,即使它实际上连接了两台设备。虽然我们倾向于把VSS配置中的这些交换机看作是独立的设备,但这么说并不准确。虽然这些交换机在物理上是相互分离的实体,但从操作和控制平面看来,它们实际上是一个单元。这种改进提供了无环的二层网络拓扑。由于减少了网络中路由对等体的数量,因此VSS也简化了三层网络拓扑,从而也将网络的简单化扩展到了数据平面中。

前文中讨论的更新,提到了VSS中每台设备的操作,相关内容也可以延伸到“基于角色”的行为。在VSS的环境中,每台独立的交换机首先会为自己争取到一个VSS进程中的特定工作角色,然后根据自己的角色作出相应行为。每一次工程师创建或重启VSS时,对等体交换机之间都会协商各自的角色。最终结果就是一台设备成为VSS主用(Active)交换机,另一台设备成为VSS备用(Standby)交换机。

VSS主用交换机负责控制VSS,并在两台交换机上为交换模块运行二层和三层控制协议。VSS主用交换机也为VSS提供管理功能,比如模块的在线插拔(OIR)操作和接口的控制。

VSS主用和备用交换机在自己本地的接口上,为入向数据流量执行数据包转发。但VSS备用交换机会把所有控制流量发送到VSS主用交换机,让主用交换机进行  处理。

前文提到过,为了使VSS中的两台交换机看起来像是一台网络设备,它们之间需要共享控制信息和数据流量;为了实现这种共享,它们需要具备各自的角色以及诸多不同用途的机制。在这些不同用途的机制设计中,最重要的是连接两台VSS设备的虚拟交换链路。

虚拟交换链路(VSL)是一条特殊的链路,它负责承载VSS两台交换机之间的控制流量和数据流量,详见图1-12。VSL通常被配置为EtherChannel,最多支持8条链路捆绑在一起。并不是只有这种特殊用途的链路能够在VSS对等体之间提供通信路径,但它的优势是能够为控制和管理平面的流量提供更高的优先级,使其优先于数据流量,从而保障控制和管理消息从不会被丢弃。多条VSL链路之间的数据流量负载均衡可以通过默认的方法实现,也可以通过配置EtherChannel负载均衡算法来实现。

图1-12 虚拟交换链路

读者从前文中已经可以看出EtherChannel的重要性了。EtherChannel(也可以称为Port-Channel)是两条或多条物理链路的集合,将这些物理链路合并成为一条逻辑链路。EtherChannel作为一个单独的逻辑实体,交换机可以在它之上运行二层协议。这一概念也使另一些协议进行了相应调整,比如生成树协议(STP),STP通常会阻塞设备之间的冗余链路,以防止产生交换环路。但我们这里所描述的概念是一种特殊类型的Port-Channel,它不仅可以建立在两台物理设备之间,还可以建立在多个机框(Chassis)之间;提供了普通EtherChannel环境中无法提供的硬件或设备故障倒换功能。这是因为VSS能够创建MEC,而MEC这个EtherChannel中的成员接口可以分布在多台VSS成员交换机上。非VSS交换机连接到VSS的话,MEC在它看来就是标准的EtherChannel,非VSS交换机可以使用双站(Dual-Homed)的方式进行连接。流经MEC的流量可以在VSS成员交换机中实现负载均衡,这与标准EtherChannel非常类似。Cisco MEC支持动态EtherChannel协议,包括工业标准的LACP(链路汇聚控制协议)和Cisco私有的PAgP(端口汇聚协议),MEC还支持静态EtherChannel配置。总的来说,VSS最多可以支持256条EtherChannel,这一数量限制是普通EtherChannel和MEC的总和。

为了创建VSS所需的最基本配置,首先需要在VSS的两台设备上创建相同的虚拟交换域。在VSS的两台交换机上,这个交换域体现为一个编号,这个编号必须在1~255的范围内。在分配好域编号后,工程是必须将其中一台路由器配置为switch 1,另一台交换机配置为switch 2,如例1-8所示。

例1-8 分配虚拟交换域和交换机号码

SW1# conf t
Enter configuration commands, one per line. End with CNTL/Z.
SW1(config)# switch virtual domain 10
Domain ID 10 config will take effect only
after the exec command 'switch convert mode virtual' is issued
SW1(config-vs-domain)# switch 1
SW1(config-vs-domain)# exit
SW1(config)#

SW2# conf t
Enter configuration commands, one per line. End with CNTL/Z.
SW2(config)# switch virtual domain 10
Domain ID 10 config will take effect only
after the exec command 'switch convert mode virtual' is issued
SW2(config-vs-domain)# switch 2
SW2(config-vs-domain)# exit
SW2(config)# 

接下来,工程师需要创建VSL,这需要在每台交换机上都创建一个唯一的Port-Channel,详见例1-9。在配置过程中,两个Port-Channel都是在VSS主动交换机上建立的。如果VSS备用交换机的VSL Port-Channel号码已经用于了其他用途,VSS将会启动为路由处理器冗余模式。为了避免这种情况,要确保使用的Port-Channel号码在两台交换机上都是可用的。

例1-9 配置VSL Port-Channel

SW1(config)# int port-channel 5
SW1(config-if)# switchport
SW1(config-if)# switch virtual link 1
SW1(config-if)# no shut
SW1(config-if)# exit
*Jan 24 05:19:57.092: %SPANTREE-6-PORTDEL_ALL_VLANS: Port-channel5 deleted from all
 Vlans

SW2(config)# int port-channel 10
SW2(config-if)# switchport
SW2(config-if)# switch virtual link 2
SW2(config-if)# no shut
SW2(config-if)# exit
SW2(config)#
*Jan 24 05:14:17.273: %SPANTREE-6-PORTDEL_ALL_VLANS: Port-channel10 deleted from
 all Vlans

现在已经配置好Port-Channel接口了,接下来需要将VSL物理成员接口添加到相应的Port-Channel中。在例1-10中,SW1上的接口GE 7/3和7/4将要与SW2上的接口GE 4/45和4/46连接在一起。

例1-10 配置VSL接口

SW1(config)# int range gig7/3 - 4
SW1(config-if-range)# switchport mode trunk
SW1(config-if-range)# channel-group 5 mode on
WARNING: Interface GigabitEthernet7/3 placed in restricted config mode. All
 extraneous configs removed!
WARNING: Interface GigabitEthernet7/4 placed in restricted config mode. All
 extraneous configs removed!
SW1(config-if-range)# exit

SW2(config)# int range gig4/45 - 46
SW2(config-if-range)# switchport mode trunk
SW2(config-if-range)# channel-group 10 mode on
WARNING: Interface GigabitEthernet4/45 placed in restricted config mode. All
 extraneous configs removed!
WARNING: Interface GigabitEthernet4/46 placed in restricted config mode. All
 extraneous configs removed!
SW2(config-if-range)# exit

注释:


在使用channel-group命令将接口放入VSL Port-Channel后,接口会进入“notconnect(无连接)”状态。接口状态会显示为“up”,但线路协议状态将显示为“down”。在交换机重启之前,接口将一直为up/down (notconnect)状态。

接着工程师需要在SW1上使用命令switch convert mode virtual,完成交换机转换过程。系统会提示工程师确认这一行为,这时输入yes,详见例1-11。这时系统会创建一个转换配置文件,并存入系统的bootflash中。

在两台交换机上都确认完毕后,运行配置文件(running-config)会被保存为启动配置文件(startup-config),并且交换机会重启。重启后,交换机就进入了虚拟交换模式。

例1-11 将交换机转换为虚拟交换模式

SW1# switch convert mode virtual

This command will convert all interface names
to naming convention "interface-type switch-number/slot/port",
save the running config to startup-config and

reload the switch.
Do you want to proceed? [yes/no]: yes
Converting interface names
Building configuration...
Compressed configuration from 6551 bytes to 2893 bytes[OK]
Saving converted configuration to bootflash: ...
Destination filename [startup-config.converted_vs-20130124-062921]?
Please stand by while rebooting the system...
Restarting system.

Rommon (G) Signature verification PASSED
Rommon (P) Signature verification PASSED
FPGA  (P) Signature verification PASSED

Similarly you need to enter the "switch convert mode virtual" command on Switch 2
 for converting to Virtual Switch Mode.

SW2# switch convert mode virtual 
This command will convert all interface names
to naming convention "interface-type switch-number/slot/port",
save the running config to startup-config and
reload the switch.
Do you want to proceed? [yes/no]: yes
Converting interface names
Building configuration...
Compressed configuration from 6027 bytes to 2774 bytes[OK]
Saving converted configuration to bootflash: ...
Destination filename [startup-config.converted_vs-20130124-052526]?
Please stand by while rebooting the system...
Restarting system.

Rommon (G) Signature verification PASSED
Rommon (P) Signature verification PASSED
FPGA  (P) Signature verification PASSED



************************************************************
*                                  *
* Welcome to Rom Monitor for WS-X45-SUP7-E System.      *
* Copyright (c) 2008-2012 by Cisco Systems, Inc.       *
* All rights reserved.                      *
*                                  *
************************************************************

工程师可以使用简单的show命令来查看与特定VSS对相关的VSS配置信息,通过命令show switch virtual可以查看每台交换机的交换机号码和角色,详见例1-12。

例1-12 查看虚拟交换域编号

SW1# sh switch virtual

Executing the command on VSS member switch role = VSS Active, id = 1

Switch mode            : Virtual Switch
Virtual switch domain number  : 10
Local switch number        : 1
Local switch operational role  : Virtual Switch Active
Peer switch number         : 2
Peer switch operational role  : Virtual Switch Standby

Executing the command on VSS member switch role = VSS Standby, id = 2

Switch mode             : Virtual Switch
Virtual switch domain number  : 10
Local switch number        : 2
Local switch operational role  : Virtual Switch Standby
Peer switch number         : 1
Peer switch operational role  : Virtual Switch Active

要想让VSS正常运行,最重要的一点是确保一台交换机是主用交换机,另一台是备用交换机。备用交换机的控制模式应该与例1-13所示相同。

例1-13 备用交换机的控制模式

SW2-standby>
Standby console disabled

正如理论部分所讨论的,对于VSS来说,有很多角色和配置要求。工程师可以使用命令show switch virtual role来查看VSS中每台交换机的变量。例1-14展示了使用这条命令输出的类型和详细信息。

工程师可以使用命令show switch virtual link来查看有关VSL的信息,详见例1-15。

例1-14 虚拟角色分配和优先级

SW1# sh switch virtual role
Executing the command on VSS member switch role = VSS Active, id = 1
RRP information for Instance 1
--------------------------------------------------------------------
Valid Flags  Peer    Preferred Reserved
         Count    Peer    Peer
--------------------------------------------------------------------
TRUE  V     1       1     1
Switch Switch Status Preempt    Priority Role   Local    Remote
    Number     Oper(Conf)  Oper(Conf)      SID    SID
--------------------------------------------------------------------
LOCAL  1   UP    FALSE(N )  100(100) ACTIVE   0      0
REMOTE 2   UP    FALSE(N )  100(100) STANDBY   6834   6152

Peer 0 represents the local switch

Flags : V - Valid
In dual-active recovery mode: No

Executing the command on VSS member switch role = VSS Standby, id = 2

RRP information for Instance 2

--------------------------------------------------------------------
Valid Flags  Peer    Preferred Reserved
       Count      Peer    Peer

--------------------------------------------------------------------
TRUE  V   1         1      1

Switch Switch Status Preempt    Priority Role    Local    Remote
    Number    Oper(Conf)  Oper(Conf)      SID    SID
--------------------------------------------------------------------
LOCAL  2   UP   FALSE(N )   100(100) STANDBY  0    0
REMOTE 1   UP   FALSE(N )   100(100) ACTIVE   6152    6834

Peer 0 represents the local switch

Flags : V - Valid
In dual-active recovery mode: No

例1-15 虚拟交换链路详情

SW1# sh switch virtual link

Executing the command on VSS member switch role = VSS Active, id = 1

VSL Status : UP
VSL Uptime : 3 minutes
VSL Control Link : Gi1/7/4

Executing the command on VSS member switch role = VSS Standby, id = 2

VSL Status : UP
VSL Uptime : 3 minutes
VSL Control Link : Gi2/4/45

除此之外,工程师还可以使用命令show switch virtual link port-channel来查看有关VSL Port-Channel配置的信息,详见例1-16。

例1-16 查看VSL Port-Channel

SW1# sh switch virtual link port-channel

Executing the command on VSS member switch role = VSS Active, id = 1

Flags: D - dow-     P - bundled in port-channel
    I - stand-alone s - suspended
    H - Hot-standby (LACP only)
    R - Layer3    S - Layer2
    U - in use    N - not in use, no aggregation
    f - failed to allocate aggregator

    M - not in use, no aggregation due to minimum links not met
    m - not in use, port not aggregated due to minimum links not met
    u - unsuitable for bundling
    d - default port

    w - waiting to be aggregated

Group Port-channel Protocol Ports
------+-------------+---------+-------------------
5   Po5(SU)      -    Gi1/7/3(P) Gi1/7/4(P)
10   Po10(SU)     -    Gi2/4/45(P) Gi2/4/46(P)

Executing the command on VSS member switch role = VSS Standby, id = 2

Flags: D - dow-      P - bundled in port-channel
    I - stand-alone s - suspended
    H - Hot-standby (LACP only)
    R - Layer3    S - Layer2
    U - in use    N - not in use, no aggregation
    f - failed to allocate aggregator

    M - not in use, no aggregation due to minimum links not met
    m - not in use, port not aggregated due to minimum links not met
    u - unsuitable for bundling
    d - default port

    w - waiting to be aggregated

Group Port-channel Protocol Ports
------+-------------+-----------+-------------------
5   Po5(SU)      -     Gi1/7/3(P) Gi1/7/4(P)
10   Po10(SU)     -     Gi2/4/45(P) Gi2/4/46(P)

SW1#

在21世纪,工程师面对着现代网络日益增长的需求,网络不仅需要支持各种智能管理工具,还要支持软件定义的网络机制,这些需求很快超越了传统IOS(互联网络操作系统)的能力。这种无法与时俱进的结果基本上是由IOS自身的单片性质决定的。

首先,我们必须承认多年来IOS一直提供了很好的服务,但现代网络的要求促使我们重新考虑如何对常见协议的操作进程提供支持,比如OSPF、EIGRP、MPLS、BGP、IPv6等。因此毫不意外的是,在努力提升IOS的适用性和生存性的同时,也有必要对它本身进行提升。事实上,IOS已经发展出了三个主要的操作系统,每个操作系统都服务并满足了宏伟网络规划中的不同目标。这些操作系统包括NX-OS、IOS-XR和IOS-XE。在这里我们关注的是IOS-XE。

首先要说的是,IOS-XE是为路由器、交换机和各种应用设计的,它集合了IOS中成熟的功能和特性,还添加了POSIX(可移植性操作系统接口)环境中的新功能和优势。这是将具有网络感知功能的应用程序集成到现代路由设备中的最佳做法。最终,IOS-XE在各种功能中,无缝集成了一种通用的网络管理方法,极大程度上借鉴于同样可靠的POSIX操作系统。此外,通过引入一系列优秀的API(应用程序编程接口),Cisco还提高了IOS的可移植性;尤其是我们可以调用IOS平台的操作,还可以扩展IOS外的功能。IOS-XE这最后一个扩展开创了这样一个未来:应用程序的集成将会变得简单、完整且司空见惯。

几十年来,IOS已经成为了网络扩张、配置和维护的中心,现在IOS-XE中也继承了相同的功能,它保留了传统IOS的所有优点,并能够为关键业务应用提供无与伦比的传输服务。所有这一切都可以通过一个与IOS相同的操作界面实现,并同时还提供了增强型“面向未来”的功能。

这一切是如何做到的?IOS-XE运行一个现代的Linux操作系统,这个操作系统采用单一的后台程序;上述我们讨论过的附加功能都会作为单独的程序,在主机的OS中运行。这意味着工程师无需参加再次培训,就能够使用IOS中具有的所有功能,以及一些增强型操作和功能。

乍一看,这似乎并不是什么太大的进步,但如果我们想到IOS和这些其他应用都是作为单独的程序运行的,那么显然我们现在可以使用对称式多重处理架构了。这一点本身就意味着我们可以通过多核CPU获得负载均衡的优势,也就是将不同的进程绑定到不同的CPU内核。因此我们可以创建一个运行环境,来支持多线程和多核CPU。这种能力,再加上IOS-XE用来分离控制平面和转发平面的方法,提供了传统单片IOS环境中无法实现的管理和控制水平。

如今,路由器上运行的IOS会在同一个内存空间内,运行实施网络操作所必需的所有模块。这种做法有一个问题,就是当路由引擎发生一些问题时,可能会导致整个IOS内核的崩溃。早在5年前,这种情况可能还构不成什么问题,但在现代企业环境中,这却是灾难性的;由于当今的企业网络是在单一平台上运行可以支持虚拟化的基础架构,因此不能容忍单一进程导致整个系统的崩溃。

通过将软件架构迁移到运行“Linux平台”的系统中,我们获得了多个抽象层级。现在整个解决方案都在IOS-XE独立的系统功能中,每个系统功能都独立地位于分离的进程中,与主要的运行内核相隔离。这意味着当这些功能中的一个失效时,不会影响到内核的工作。因此通过为路由设备上运行的每个底层进程创建单独的线程,对称多进程的思想得到了进一步实现。

正是通过这种孤立的运行模型,应用程序设计者将会有能力为新数据平面的ASIC建立驱动程序,并且让这些新数据平面的ASIC能够与一些标准API实现互操作。正是这些API实现了控制平面和数据平面的分离。

对于路由器运行机制的描述,一直以来有这样一个惯例,就是把它分为多个不同的类别。具体地讲,就是分为控制平面、数据平面、输入/输出平面。一个操作系统对于运行机制中这三个平面的隔离能力,对设备的不间断运行时间有直接的影响,因为这涉及计划内和计划外中断。

IOS-XE通过模块化架构带来的结果,使我们看到了控制平面和数据平面本身,在逻辑和物理上的隔离。乍一看区别不大,但其实意义深远。现在通过模块化的刀片设备,我们拥有了物理隔离的三个平面,这些刀片安装在机框中,拥有各自专属的硬件资源。IOS-XE还为它们维护逻辑上的隔离,并将其作为抽象的一层。这样一来,我们可以更好地减少路由系统中失效部分的大小,也可以更好地在各个平面之间隔离运行负载。有一个例子可以很好地说明这一点:数据平面在转发大量流量时,会承受巨大压力,但这并不会影响到同一机框中控制平面的运行。之所以可以实现这种效果,是因为IOS-XE为机框中的每个托架或刀片插槽运行分离的驱动实例;因此当一个驱动失效后,并不会对其他托架或整个机框造成影响;其结果是其他进程继续转发流量。除此之外,我们还可以为单个驱动打补丁,而不会影响到整个机框。

这种分离是通过转发和特性管理器(FFM)和转发引擎驱动程序(FED)来实现的。

FFM提供了一组API,用来管理控制平面的进程。其结果是,FFM通过FED来规划数据平面的运行,并为系统维护所有转发状态。FED使驱动程序能够对数据平面造成影响,驱动程序是由平台提供的。

表1-8中列出了各种以太网类型和它们之间的区别。

表1-8  以太网标准

以太网类型

标准文档

10BASE5

通常称为“Thicknet”;使用同轴线缆

10BASE2

通常称为“Thinnet”;使用同轴线缆

10BASE-T

第一个使用双绞线线缆的以太网类型

DIX以太网版本2

原始以太网的第1层和第2层定义,取名自Digital/Intel/Xerox;通常称为DIX V2

IEEE 802.3

称为MAC(媒体接入控制),由IEEE协会起名;原始的第1层和第2层定义,使用DIX V2作为基础进行了标准化

IEEE 802.2

称为LLC(逻辑链路控制),由IEEE协会起名;头部的第2层定义为多个IEEE LAN定义所共有

IEEE 802.3u

快速以太网(100Mbit/s)铜缆和光纤的IEEE标准;通常称为FastE

IEEE 802.3z

吉比特以太网光纤线缆;通常称为GigE

IEEE 802.3ab

吉比特以太网铜缆

交换机会在必要时转发数据帧,没有必要的话就不会转发,以降低负载。为了实现上述行为,交换机会执行以下三个行为:

交换机内部使用的处理算法因型号和厂商而异;但无论怎样,内部处理可以被归类为表1-9所列方法之一。

表1-9  交换机内部处理

交换方式  

描述

储存并转发

交换机完整接收(储存)数据帧中的所有比特,然后再转发数据帧。这样做交换机可以在转发之前检查数据帧的FCS(帧校验序列),确保不转发有错误的数据帧

直通

交换机一旦接收到了头部中的目的地址字段,就马上执行地址表查找。在交换机接收到数据帧中的最后一个比特之前,它就可以将数据帧从出向接口转发出去了。使用这种方法时,交换机无法丢弃FCS校验失败的数据帧,但转发行为更快速,延迟更低

无分片

这种行为与直通交换类似,但交换机会在接收了64字节之后,再开始转发数据帧的第一个字节。根据以太网的定义,在发送数据帧的前64字节期间应该能够检测到冲突,因此由于冲突导致错误的数据帧不会被转发

表1-10中列出了本章涉及的一些重要IOS命令。

表1-10  本章的命令参考

命令

描述

interface vlan 1

全局配置命令;使用户进入VLAN接口的接口配置模式

interface fastethernet 0/x

使用户进入某接口的接口配置模式

duplex {autofullhalf}

接口配置命令;设置接口的双工模式

speed {101001000autononegotiate}

接口配置命令;设置接口的速率

show mac address-table [aging-timecountdynamicstatic] [address hw-addr] [interface interface-id] [vlan vlan-id]

查看MAC地址表;查看有关受限或静态设置的信息

show interface fastethernet 0/x

查看物理10/100接口的接口状态

show interface vlan 1

查看VLAN的IP地址配置

remote span

VLAN配置模式;将VLAN配置为远端SPAN目的VLAN

monitor session 1-66 source Vlan vlan-idinterface interface-id] [rxtxboth}

配置SPAN或RSPAN的源,可以包含一个或多个物理接口,或者一个或多个VLAN;还可选地针对某个源指定流量方向:进入(Rx)或离开(Tx),或双向

monitor session 1-66 destination [remote vlan vlan-idinterface interface-id]

为SPAN或RSPAN会话配置目的,可以是物理接口,也可以是远端VLAN

monitor session 1-66 filter vlan [vlanvlan-range]

从受监控的流量中移除指定VLAN或VLAN范围中的流量

show monitor session session-id

查看SPAN会话的状态

表1-11中列出了UTP线缆的类型。

表1-11  UTP线缆参考

UTP类别

最大速率

描述

1

用于电话,不用于数据

2

4Mbit/s

原本用来在UTP上支持令牌环

3

10Mbit/s

也可以用于电话;过去几年内常见的以太网部署方式(如果已经为电话部署了3类线缆的话)

4

16Mbit/s

用来提供快速令牌环

5

1Gbit/s

最常见的桌面线缆

5e

1Gbit/s

主要用于铜缆对吉比特以太网的支持

6

1Gbit/s+

用来替代5e类,能够支持数吉比特速率

表1-12列出了与以太网标准及其线缆相关的详细信息。

表1-12  以太网类型和线缆标准

标准

线缆

单条线缆最大长度

10BASE5

Thick同轴线缆

500米

10BASE2

Thin同轴线缆

185米

10BASE-T

UTP 3、4、5、5e、6类

100米

100BASE-FX

两股,多膜

400米

100BASE-T

UTP 3、4、5、5e、6类,2对

100米

100BASE-T4

UTP 3、4、5、5e、6类,4对

100米

100BASE-TX

UTP 3、4、5、5e、6类或STP,2对

100米

1000BASE-LX

长波长激光,单膜或多模光纤

10千米(单膜) 3千米(多膜)

1000BASE-SX

短波长激光,多膜光纤

62.5微米光纤,220米; 50微米光纤,550米

1000BASE-ZX

扩展波长,单膜光纤

100千米

1000BASE-CS

STP,2对

25米

1000BASE-T

UTP 5、5e、6类,4对

100米

与所有的Cisco CCIE笔试一样,CCIE路由和交换笔试也包含了非常广泛的考试主题,因而本节提供了一些有用工具,来帮助大家加深理解并记忆本章所涵盖的考试主题。

附录E包含了每章考试要点的摘要空表,请打印附录E并根据本章的表格信息,根据记忆填表,并参考附录F以作检查。

请写出本章涉及的下列关键术语,然后在术语表中核对正确答案:

自动协商、半双工、全双工、交叉线缆、直通线缆、单播地址、组播地址、广播地址、环回电路、I/G比特、U/L比特、CSMA/CD、SPAN、RSPAN、ERSPAN、远程VLAN、监控会话、VLAN过滤、封装复制、VSS、VSL、FED、FFM

要想了解有关自动协商所使用的FLP的更多信息,可参考美国新罕布什尔州研究计算中心互操作性实验室的快速以太网页面:www.iol.unh.edu/services/testing/fe/training/。

要想了解有关SPAN和RSPAN的配置信息,以及所有限制条件(有关3560和3750交换机),可参考以下网址:www.ciscosystems.com/en/US/docs/switches/lan/catalyst3560/software/release/ 12.2_50_se/configuration/guide/swspan.html。


本章主要讨论以下主题:

本章继续介绍一些最基础且重要的LAN主题,涵盖VLAN和VLAN Trunk。对于熟悉本章内容的读者,请回顾本章中考试要点图标旁的内容,以及本章最后的“备考任务”和“理解与记忆”。

表2-1列出了本章的基本主题,以及与之相应的测试题。

表2-1  “我已经知道了吗?”基本主题及测试题对照表

基本主题

测试题

VLAN

1~2

VLAN Trunk协议

3~5

VLAN Trunk:ISL和802.1Q

6~9

配置PPPoE

10

为了提高测试评价效果,请务必严格评分。参考答案请参见附录A。

1.假设交换机1中并没有配置VLAN 28。工程师在全局配置模式(通过configure terminal进入)或任何子模式中输入以下哪条命令能够创建该VLAN?

  a.vlan 28

  b.vlan 28 name fred

  c.switchport vlan 28

  d.switchport access vlan 28

  e.switchport access 28

2.以下哪项是使用私有VLAN的优势?

  a.更好的LAN安全性

  b.节省IP子网

  c.在配置VLAN细节时有更好的一致性

  d.减少广播对终端用户的影响

  e.对于没有接口在数据帧所属的VLAN的交换机来说,减少不必要的数据帧流

3.以下哪些VLAN可以被802.1Q Trunk上的VTP删减?

  a.1~1023

  b.1~1001

  c.2~1001

  d.1~1005

  e.2~1005

4.现有的交换网络中有10台交换机,其中只有Switch1和Switch2是网络中的VTPv2服务器;其他交换机都是VTPv2客户端,并都成功地从VTPv2服务器获知了VLAN信息。所有交换机上唯一配置的VTP参数是VTP域名(Larry)。VTP修订版本号是201。一台新的交换机已运行了VTPv2客户端,其名为Switch11,域名为Larry且修订版本号为301,若其通过Trunk连接到其他10台交换机中的任意一台将会发生什么?

  a.无VLAN信息变化;Switch11会忽略两个现有的VTP服务器发来的VTP更新,直到修订版本号变为302

  b.原来的10台交换机用Switch11上的配置代替以前的VLAN配置

  c.Switch11用原VTP服务器发送给它的配置代替自己的VLAN配置

  d.Switch11将现有的VLAN数据库和从VTP服务器获知的数据库合并在一起,因为Switch11有更高的修订版本号

5.现有的交换网络中有10台交换机,其中只有Switch1和Switch2是网络中的VTPv2服务器,Switch1是主服务器。其他交换机都是VTPv2客户端,并都成功地从VTPv2服务器获知了VLAN信息。所有交换机上唯一配置的VTP参数是VTP域名(Larry)。VTP修订版本号是201。一台新的交换机已运行了VTPv2客户端,其名为Switch11,域名为Larry且修订版本号为301,若其通过Trunk连接到其他10台交换机中的任意一台将会发生什么?

  a.无VLAN信息变化;原VTP域与新交换机之间的所有VTP更新都会被忽略

  b.原来的10台交换机用Switch11上的配置代替以前的VLAN配置

  c.Switch11用原VTP服务器发送给它的配置代替自己的VLAN配置

  d.Switch11将现有的VLAN数据库和从VTP服务器获知的数据库合并在一起,因为Switch11有更高的修订版本号

  e.以上答案均不正确

6.假设工程师刚拆箱了两台全新的交换机,将PC1连接到一台交换机,PC2连接到另一台,两台交换机之间通过一条交叉线缆连接。交换机之间的连接动态地建立802.1Q Trunk。当PC1向PC2发送数据时,在数据帧通过Trunk之前,会有多少额外的头部字节增加到数据帧中?

  a.0

  b.4

  c.8

  d.26

7.假设有两台全新的Cisco Catalyst 3560交换机通过交叉线缆相连。在连接线缆之前,工程师在一台交换机接口配置了switchport trunk encapsulation dot1qswitchport mode trunkswitchport nonegotiate子命令。必须在另一台交换机上配置以下哪条命令,才能使两台交换机之间的Trunk正常工作?

  a.switchport trunk encapsulation dot1q

  b.switchport mode trunk

  c.switchport nonegotiate

  d.无需配置

8.在Cisco路由器Fa0/1接口上配置Trunk时,工程师应该在哪个配置模式下,配置与本征VLAN(本例中为VLAN 1)关联的IP地址?

  a.接口Fa0/1配置模式

  b.接口Fa0/1.1配置模式

  c.接口Fa0/1.2配置模式

  d.以上答案均不正确

9.以下哪项关于802.1Q的说法是错误的?

  a.将整个数据帧封装在802.1Q的头部和尾部

  b.有本征VLAN的概念

  c.允许VTP只在扩展范围的VLAN上操作

  d.DTP可以选择它和ISL

10.哪条命令负责在Cisco路由器外部以太网接口上启用PPPoE客户端功能?

  a.pppoe enable

  b.pppoe-client enable

  c.pppoe-client dialer-pool-number

  d.pppoe-client dialer-number

在以太网LAN中,一台设备发送的广播数据包可以被一组设备收到,这些设备所构成的集合就是一个广播域(Broadcast Domain)。在没有虚拟LAN(VLAN)概念的交换机上,交换机只是将所有广播向除收到该数据帧的接口外的所有接口转发。因此,一个交换机上的所有接口都属于相同的广播域。如果交换机连接了其他的交换机或者集线器,那些交换机和集线器上的接口也都在相同的广播域中。

VLAN是为了管理而定义的,是指属于相同广播域的交换机接口子集。接口可被分组到一台和多台互连交换机上的不同VLAN中。通过创建多个VLAN,交换机能够创建多个大小有限的广播域。如此,一个VLAN中的设备所发送的广播,只能被转发到相同VLAN中的其他设备上;而不会被转发给其他VLAN中的设备。

对于VLAN和IP的设计来说,最佳方案是将VLAN和IP子网一一对应起来。简单来说,一个VLAN中的设备通常也在一个相对应的IP子网中。此外,还可以将多个子网放在一个VLAN中,使用路由器上的辅助IP地址实现VLAN和子网间的路由。最后,CCIE笔试更关注熟练使用技术的能力,所以本书假设一个VLAN使用一个子网,除非有特别说明。

二层交换机在属于相同VLAN的设备之间转发数据帧,但不会为属于不同VLAN中的两台主机转发数据帧。为了转发两个VLAN之间的数据,需要多层交换机(MLS)或路由器的介入。第6章将详述MLS。

在运行Cisco IOS的交换机上,VLAN主要由其数值ID进行标识,这是在创建、修改或删除VLAN时唯一的必需参数。工程师可以为VLAN分配名称,以更好地进行标识;只是在CLI中能够用VLAN名代替VLAN ID的地方并不多。VLAN也有运行状态:可为活跃,这是默认状态,也可为休眠。休眠的VLAN是暂停的——也就是这个VLAN存在但并不工作。在休眠VLAN中的Access接口不能实现通信,会丢弃所有数据帧,这与属于不存在的VLAN的接口类似。将休眠VLAN变为活跃状态也就恢复了该VLAN中所有接口的正常通信。

在Cisco交换机网络中,配置VLAN只需要几个简单的步骤。

步骤1  创建VLAN,可选地配置其名称和状态。

步骤2  为该VLAN关联正确的接口。

然而难点在于后台任务根据Cisco VLAN Trunk协议(VLAN Trunking Protocol,VTP)的配置有所不同,以及使用正常ID范围的VLAN还是扩展ID范围的VLAN。

1.使用VLAN数据库模式创建VLAN

考虑例2-1所示案例,其中显示了在VLAN数据库配置模式下创建VLAN的基本方式。此配置模式在现在的交换机上是过时的,甚至已无法支持,但工程师仍可以在较老的Catalyst平台,以及安装了交换模块的ISR和ISR G2路由器上使用。工程师可以使用VLAN数据库配置模式创建VLAN,对每个VLAN进行基本的管理性设置,以及验证VTP配置信息。只有正常范围(VLAN 1~1005)的VLAN可在此模式中配置,VLAN配置由名为vlan.dat的文件存储在Flash中。通常,工程师应该尽可能避免使用VLAN数据库配置模式,也希望读者将来不会需要使用此模式;然而,仍然有一些交换机,甚至是近期部署在网络中的路由器,不支持这种在全局配置模式中配置VLAN的新方式。

例2-1展示了VLAN数据库的配置模式,给出了图2-1中Switch3上的配置。示例中创建了VLAN 21和VLAN 22。

图2-1 简单的接入层和分布层

例2-1 在VLAN数据库模式中创建VLAN——Switch3

! Below, note that Fa0/12 and Fa0/24 are missing from the list, because they have
! dynamically become trunks, supporting multiple VLANs.

Switch3# show vlan brief
VLAN Name                  Status  Ports
---- --------------------------------  --------- -------------------------------
1  default                active   Fa0/1, Fa0/2, Fa0/3, Fa0/4
                             Fa0/5, Fa0/6, Fa0/7, Fa0/8
                             Fa0/9, Fa0/10, Fa0/11, Fa0/13
                             Fa0/14, Fa0/15, Fa0/16, Fa0/17
                             Fa0/18, Fa0/19, Fa0/20, Fa0/21
                             Fa0/22, Fa0/23


! Below, "unsup" means that this 2950 switch does not support FDDI and TR

1002 fddi-default          act/unsup
1003 token-ring-default      act/unsup
1004 fddinet-default        act/unsup
1005 trnet-default         act/unsup

! Below, vlan database moves user to VLAN database configuration mode.
! The vlan 21 command defines the VLAN, as seen in the next command output
! ( show current ), VLAN 21 is not in the "current" VLAN list.

Switch3# vlan database
Switch3(vlan)# vlan 21
VLAN 21 added:
  Name: VLAN0021

! The show current command lists the VLANs available to the IOS when the switch
! is in VTP Server mode. The command lists the VLANs in numeric order, with
! VLAN 21 missing.

Switch3(vlan)# show current
 VLAN ISL Id: 1
   Name: default
   Media Type: Ethernet
   VLAN 802.10 Id: 100001
   State: Operational
   MTU: 1500
   Backup CRF Mode: Disabled
   Remote SPAN VLAN: No
! Lines omitted for brevity
! Next, note that show proposed lists VLAN 21. The vlan 21 command
! creates the definition, but it must be "applied" before it is "current".

Switch3(vlan)# show proposed
 VLAN ISL Id: 1
   Name: default
   Media Type: Ethernet
   VLAN 802.10 Id: 100001
   State: Operational
   MTU: 1500
   Backup CRF Mode: Disabled
   Remote SPAN VLAN: No

 VLAN ISL Id: 21
   Name: VLAN0021
   Media Type: Ethernet
   VLAN 802.10 Id: 100021
   State: Operational
   MTU: 1500
   Backup CRF Mode: Disabled
   Remote SPAN VLAN: No

! Lines omitted for brevity
! Next, you could apply to complete the addition of VLAN 21,
! abort to not make the changes and exit VLAN database mode, or
! reset to not make the changes but stay in VLAN database mode.

Switch3(vlan)# ?
VLAN database editing buffer manipulation commands:
 abort  Exit mode without applying the changes
 apply  Apply current changes and bump revision number
 exit   Apply changes, bump revision number, and exit mode
 no    Negate a command or set its defaults
 reset  Abandon current changes and reread current database
 show   Show database information
 vla-   Add, delete, or modify values associated with a single VLAN
 vtp   Perform VTP administrative functions.

! The apply command was used, making the addition of VLAN 21 complete.

Switch3(vlan)# apply
APPLY completed.
! A show current now would list VLAN 21.

Switch3(vlan)# vlan 22 name ccie-vlan-22
VLAN 22 added:
  Name: ccie-vlan-22

! Above and below, some variations on commands are shown, along with the
! creation of VLAN 22, with name ccie-vlan-22 .
! Below, the vlan 22 option is used on show current and show proposed
! detailing the fact that the apply has not been done yet.

Switch3(vlan)# show current 22
VLAN 22 does not exist in current database
Switch3(vlan)# show proposed 22
 VLAN ISL Id: 22

! Lines omitted for brevity
! Finally, the user exits VLAN database mode using CTRL-Z, which does
! not inherently apply the change. CTRL-Z actually executes an abort.

Switch3(vlan)# ^Z

2.使用配置模式将接口加入VLAN

要想使用VLAN,首先必须创建VLAN,之后再将交换机接口分配到VLAN中。例2-2展示了在Switch3上将接口与VLAN关联的方法。

注释:


在例2-1的最后,工程师还没有成功创建VLAN 22。但在例2-2中,假设VLAN 22已成功创建。

例2-2 分配接口到VLAN——Switch3

! First, the switchport mode access command configures respective interfaces for
! static access mode, and the switchport access vlan command assigns them into
! respective VLANs.

Switch3# conf t
Enter configuration commands, one per line. End with CNTL/Z.
Switch3(config)# int fa 0/3
Switch3(config-if)# switchport mode access
Switch3(config-if)# switchport access vlan 22
Switch3(config-if)# int fa 0/7
Switch3(config-if)# switchport mode access
Switch3(config-if)# switchport access vlan 21
Switch3(config-if)# ^Z

! Below, show vlan brief lists these same two interfaces as now being in
! VLANs 21 and 22, respectively.

Switch3# show vlan brief

VLAN Name                 Status   Ports
---- -------------------------------- ---------  -------------------------------
1   default               active   Fa0/1, Fa0/2, Fa0/4, Fa0/5
                             Fa0/6, Fa0/8, Fa0/9, Fa0/10
                             Fa0/11, Fa0/13, Fa0/14, Fa0/15
                             Fa0/20, Fa0/21, Fa0/22, Fa0/23
21   VLAN0021              active   Fa0/7
22   ccie-vlan-22            active   Fa0/3

! Lines omitted for brevity
! While the VLAN configuration is not shown in the running-config at this point,
! the switchport access command that assigns the VLAN for the interface is in the
! configuration, as seen with the show run int fa 0/3 command.

Switch3# show run int fa 0/3
interface FastEthernet0/3
 switchport access vlan 22
 switchport mode access

3.使用配置模式创建VLAN

至此,工程师已经在Switch3上创建了两个新VLAN(21和22),两个接口也属于正确的VLAN中。然而,所有基于Cisco IOS的较新交换机还能够使用其他方式创建VLAN,如例2-3所示,也就是使用配置模式。如果设备支持这种配置方式的话,这是工程师的首选,这也是配置扩展范围VLAN和私有VLAN的唯一方式。所有VLAN的设置都是在全局配置的vlan vlan-id配置部分进行配置。变更后的配置只有在工程师退出vlan模式后才会生效;这是在IOS CLI环境中,输入独立的命令后,变更并不会立即生效的少数情况之一。

例2-3 在配置模式中创建VLAN——Switch3

! First, VLAN 31 did not exist when the switchport access vlan 31 command was
! issued. As a result, the switch both created the VLAN and put interface fa0/8
! into that VLAN. Then, the vlan 32 global command was used to create a
! VLAN from configuration mode, and the name subcommand was used to assign a
! non-default name.

Switch3# conf t
Enter configuration commands, one per line. End with CNTL/Z.
Switch3(config)# int fa 0/8
Switch3(config-if)# switchport mode access
Switch3(config-if)# switchport access vlan 31
% Access VLAN does not exist. Creating vlan 31
Switch3(config-if)# exit
Switch3(config)# vlan 32
Switch3(config-vlan)# name ccie-vlan-32
Switch3(config-vlan)# ^Z
Switch3# show vlan brief

VLAN Name                Status    Ports
---- -------------------------------- --------- -------------------------------
1   default              active    Fa0/1, Fa0/2, Fa0/4, Fa0/5
                             Fa0/6, Fa0/9, Fa0/10, Fa0/11
                             Fa0/13, Fa0/14, Fa0/15, Fa0/16
                             Fa0/17, Fa0/18, Fa0/19, Fa0/20
                             Fa0/21, Fa0/22, Fa0/23
21   VLAN0021             active    Fa0/7
22   ccie-vlan-22           active    Fa0/3
31   VLAN0031             active    Fa0/8
32   ccie-vlan-32           active

! Portions omitted for brevity

例2-3显示了如何使用switchport access vlan子命令创建VLAN,并分配接口给该VLAN。注意在例2-3中,show vlan brief的输出内容显示出接口Fa0/8在VLAN 31中。因为尚未给VLAN 32分配接口,例2-3的最后一行没有显示任何接口信息。

4.修改VLAN的操作状态

VLAN的状态——活跃或休眠——可以在vlan database和配置模式中进行控制。一个VLAN可通过两种方式休眠:在整个VTP域中使用全局方式,以及在一台交换机上使用本地方式,该方式并不会影响其所在VTP域中,其他交换机的状态。工程师可以在vlan database和配置模式中使用命令state suspend,可以在全局环境中让某个VLAN休眠。要在本地将某个VLAN休眠,也称为“本地关闭VLAN”,工程师可以使用shutdown命令,只能在VLAN配置模式中使用该命令。请勿混淆VLAN中的shutdown命令和interface Vlan模式下的shutdown命令,两者的含义不同,也没有任何关系(后者表示关闭一个SVI而不妨碍相应VLAN自身的操作)。工程师可以独立地配置全局和本地的VLAN状态,但若要让一个VLAN在一台交换机上正常工作,它在这台交换机上必须全局和本地都处于活跃状态。例2-4中进一步展示了VLAN操作状态的控制及相关命令的使用。

在大型网络中,VLAN的创建过程虽简单但费事。如果存在许多VLAN,并且存在于多个交换机上,相比于在每台交换机上手动配置VLAN,工程师还可以使用VTP分发VLAN配置信息给其余的交换机。VTP将在本章稍后进行讨论。

例2-4 修改VLAN的操作状态

! First, put the VLAN 21 to global suspended state in vlan database mode. The state
! will be propagated by VTP to all switches in the VTP domain if VTP is used.

Switch3# vlan database
Switch3(vlan)# vlan 21 state ?
 active  VLAN Active State
 suspend VLAN Suspended State
Switch3(vlan)# vlan 21 state suspend
VLAN 31 modified:
  State SUSPENDED
Switch3(vlan)# exit
APPLY completed.
Exiting....

! VLAN 21 will now be listed as suspended

Switch3# show vlan brief
VLAN Name                  Status   Ports
---- -------------------------------- --------- -------------------------------
1   default                active   Fa0/1, Fa0/2, Fa0/4, Fa0/5
                              Fa0/6, Fa0/9, Fa0/10, Fa0/11
                              Fa0/13,Fa0/14, Fa0/15, Fa0/16
                              Fa0/17,Fa0/18, Fa0/19, Fa0/20
                              Fa0/21,Fa0/22, Fa0/23
21   VLAN0021               suspended Fa0/7

! Portions omitted for brevity

! Now use the configuration mode to reactivate the VLAN

Switch3# conf t
Enter configuration commands, one per line. End with CNTL/Z.
Switch3(config)# vlan 21
Switch3(config-vlan)# state active
Switch3(config-vlan)# exit
Switch3(config)# do show vlan brief
VLAN Name                 Status   Ports
---- -------------------------------- --------- -------------------------------
1   default               active   Fa0/1,  Fa0/2, Fa0/4, Fa0/5
                             Fa0/6,  Fa0/9, Fa0/10, Fa0/11
                             Fa0/13, Fa0/14, Fa0/15, Fa0/16
                             Fa0/17, Fa0/18, Fa0/19, Fa0/20
                             Fa0/21, Fa0/22, Fa0/23
21 VLAN0021               active   Fa0/7

! Portions omitted for brevity

! To locally suspend a VLAN, enter its configuration context and issue
! the shutdown command, then exit. Alternatively, you may also use the
! shutdown vlan global level configuration command that has exactly
! the same effect. In the VLAN listing, the VLAN 21 will be reported as
! active in the VTP domain on other switches, yet locally shutdown.
! It is also possible to both use the state suspend to suspend the VLAN
! via VTP globally, and shutdown to also have it locally shut down.

Switch3(config)# vlan 21
Switch3(config-vlan)# shutdown
Switch3(config-vlan)# exit
Switch3(config)# do show vlan brief
VLAN Name                 Status   Ports
---- -------------------------------- --------- -------------------------------
1   default               active   Fa0/1,  Fa0/2, Fa0/4, Fa0/5
                             Fa0/6,  Fa0/9, Fa0/10, Fa0/11
                             Fa0/13, Fa0/14, Fa0/15, Fa0/16
                             Fa0/17, Fa0/18, Fa0/19, Fa0/20
                             Fa0/21, Fa0/22, Fa0/23
21   VLAN0021              act/lshut Fa0/7

! Portions omitted for brevity

! To reactivate the locally shut VLAN, enter the no shutdown command in vlan 21
! context, or more straightforward, enter the no shutdown vlan 21 command

Switch3(config)# no shutdown vlan 21
Switch3(config)# do show vlan brief

VLAN Name                 Status   Ports
---- -------------------------------- --------- -------------------------------
1   default               active   Fa0/1, Fa0/2, Fa0/4, Fa0/5
                             Fa0/6, Fa0/9, Fa0/10, Fa0/11
                             Fa0/13, Fa0/14, Fa0/15, Fa0/16
                             Fa0/17, Fa0/18, Fa0/19, Fa0/20
                             Fa0/21, Fa0/22, Fa0/23
21   VLAN0021              active   Fa0/7

! Portions omitted for brevity

工程师在设计VLAN的时候可能有许多目标。在现如今的许多环境中,最终处于同一个VLAN的设备只是由设备线缆的物理接入位置决定的。安全性是使用VLA的另一个动机:不同VLAN中的设备无法窃听对方的广播和其他可能的通信。此外,将主机分割到不同的VLAN和子网中,并要求在子网之间使用路由器或多层交换机,因为这些类型的设备通常能够提供更强大的安全功能。

无论工程师出于何种原因,将设备分组到不同的VLAN,好的设计方式通常要求工程师为每个VLAN使用一个IP子网。然而在有些情况下,将设备分割到许多小VLAN中以增加安全性的需求,与节省可用IP子网的目标相互冲突。RFC 5517中描述的Cisco私有VLAN特性解决了该问题。通过使用私有VLAN,交换机能够分离接口,就好像它们位于不同的VLAN中,但同时这些接口共同属于同一个子网。

私有VLAN最常见的部署是在服务提供商(SP),SP使用私有VLAN技术来提供多租户服务。SP可以只部署一台路由器和一台交换机,然后将多个客户的设备连接到交换机上。SP可以对整个大楼只使用一个子网,通过使用私有VLAN,将不同客户的交换机接口相互隔离,使其不能直接进行通信,并使用一台路由器和交换机支持所有客户。

从概念上讲,私有VLAN是一种机制,将特定VLAN划分成任意数量的不会相互重叠的子VLAN,或二级VLAN(Secondary VLAN)。划分过程对于外部网络是不可见的,外部网络只能看到原始的VLAN,称为主VLAN(Primary VLAN)。私有VLAN划分的一个重要结果是,从外部看主VLAN继续使用与原始VLAN相同的VLAN ID和IP子网。在内部,所有二级VLAN共用一个IP子网,而每个二级VLAN都使用不同且唯一的VLAN ID与主VLAN相互关联。因此,可以将私有VLAN描述为一个或多个二级VLAN的集群,展示给外部的是一个主VLAN。这与BGP联盟不同,BGP联盟中多个内部子AS作为单个AS展示给外部对等体。考虑图2-2所示的拓扑。

图2-2 使用私有VLAN的交换网络

首先考虑一台交换机上的私有VLAN行为。之后将讨论如何通过Trunk将私有VLAN扩展到多个交换机。

二级VLAN可以分为两种类型:团体(Community)VLAN和隔离(Isolated)VLAN。属于相同团体VLAN的接口之间可以直接互相通信,但不能与其他VLAN中的接口直接通信。这种行为与普通VLAN相似。一个主VLAN可以与多个团体VLAN关联,每个团体VLAN代表一组设备,它们之间可以直接通信,但不能与其他组的设备直接通信。

另一方面,属于隔离VLAN的接口之间既不能互相通信,也不能与其他VLAN中的接口通信。一个主VLAN最多可以关联一个隔离VLAN,一个主VLAN关联多个隔离VLAN并没有什么意义。

一个主VLAN可以与零个或多个团体VLAN,以及最多一个隔离VLAN相关联。无论是团体VLAN还是隔离VLAN,一个二级VLAN必须只与一个主VLAN相关联。

举例来说,假设有一栋公寓楼需要完全联网,由工程师负责配置网络设备。最简单的方式是将所有公寓都连接到一台交换机,并为所有接口分配一个VLAN,比如VLAN 100.统一使用IP子网192.168.100.0/24。VLAN中的所有工作站共享该IP地址空间,并且它们之间可以直接通信;它们使用同一子网中的网关IP地址,比如192.168.100.254,来访问其他网络。然而,这样的网络有明显的安全性问题——独立公寓中的用户不可控也不能被信任。一个公寓住户的误操作,或者他使用了被感染的计算机,就可以对整个VLAN造成破坏。因此要求独立的公寓互相隔离,但仍继续使用之前的VLAN 100、相同的IP子网以及相同的默认网关。这可以通过创建一个新的二级隔离VLAN来实现,比如VLAN 199,将其与原始的VLAN 100相关联(使VLAN 100成为主VLAN),并将所有连接公寓的Access接口分配到隔离VLAN 199中。这样,独立的公寓之间将会相互隔离,但它们仍继续使用相同的IP地址空间和默认网关。外部世界将看不到任何区别。

然而生活并没有那么简单。有些用户可能在一段时间后找到工程师,要求同其他一些用户之间建立直接的可见性,因为他们希望共享文件、流媒体视频或玩网络游戏。可能会有许多相似的用户组希望他们之间能够建立相互的可见性,同时保持与其他用户的隔离。例如,考虑有3组独立的用户要求在楼内建立他们之间相互的连通性。显然,这些用户分别组成了3个团体,一个团体中的用户相互之间拥有完全的可见性,同时保持与其他团体以及与不属于任何团体的用户相互隔离。

能够满足这个需求的做法是创建3个二级团体VLAN,每个团体对应一个VLAN,并将每个团体中的成员分配到相同的团体VLAN中。在这个案例中,工程师可以为第一个组分配团体VLAN 101,为第二个团体分配团体VLAN 102,为其他组分配团体VLAN 103。二级团体VLAN 101~103与主VLAN 100相关联,共享IP地址空间和默认网关。所有其他的公寓仍属于隔离VLAN 199,保持完全隔离。

根据交换机接口所属二级VLAN的类型,可以将接口称为团体接口或隔离接口。在之前的例子中,配置在VLAN 101~103中的交换机接口是团体接口,配置在VLAN 199中的交换机接口是隔离接口。注意以上提及的接口都不在主VLAN 100中。团体接口和隔离接口都像正常的Access接口一样操作——从技术上说,它们属于单个VLAN且它们不标记数据帧。

根据上述的通信规则,某个团体VLAN中的主机只能与相同团体VLAN中的其他主机直接通信;某个隔离VLAN中的主机不能与任何主机直接通信。也就是说,到现在为止它不可能与私有VLAN外部的网络通信,也不能访问共享资源,比如网络打印机、存储或服务器。显然,这种VLAN的可用性是非常值得商榷的。因此,必须想办法定义一个特殊接口,使它能够与某个主VLAN下的任何二级VLAN的任何成员进行通信。连接到这种接口的设备——路由器、服务器、NAS、打印机等——可以被某个主VLAN下的所有二级VLAN中的所有主机访问,无论二级VLAN类型如何。

在私有VLAN的术语中,这种接口称为杂合接口。杂合接口不与任何具体的二级VLAN关联,而是与对应主VLAN关联。连接到杂合接口的设备可以与这个主VLAN关联的所有二级VLAN中的设备通信,反之亦然。与某个主VLAN关联的二级VLAN中的设备也可以与这个主VLAN中的所有杂合接口通信。如果主VLAN中有多个杂合接口,它们之间也可以互相通信。杂合接口的操作方式也和Access接口相似,它也不打标签。

在之前的示例中,如果默认网关192.168.100.254是外部路由器,工程师就会将它连接到配置有私有VLAN交换机的杂合接口上。此设置将允许VLAN 101~103和VLAN 199中的主机通过这台路由器与其他网络进行通信。

如果使用私有VLAN,一台交换机上的通信规则可以总结如下:

在一组交换机上扩展私有VLAN的操作是非常简单的。最根本的目标就是在增加私有VLAN范围的同时,保留其定义的行为及限制。某个团体VLAN中的接口应该可以与同一团体VLAN中的其他接口,以及所有交换机上相应主VLAN中的所有杂合接口进行通信。某个主VLAN中的杂合接口应该可以与这个主VLAN中的所有其他杂合接口,以及所有交换机上关联的所有二级VLAN中的所有接口进行通信。由于这些要求默认假设一个主VLAN或二级VLAN接口收到的数据帧可以通过Trunk接口转发到其他交换机上,因而建立了另一个通信规则:杂合、团体或隔离接口上收到的数据帧总是可以通过Trunk接口转发。

显然,如果主/二级VLAN、它们的ID、类型以及关联关系,在所有交换机(假设它们都支持私有VLAN特性)上的配置都相同的话,在它们针对某个VLAN建立了成员关系后,它们对数据帧会使用一致的操作行为。因为交换机之间的数据帧是通过Trunk接口传输的,所以了解如何在私有VLAN接口收到的数据帧上进行标记是很重要的。

如果交换机在团体或隔离接口上收到了数据帧,并且要通过Trunk转发这个数据帧,交换机会使用相应二级VLAN的VLAN ID标记数据帧。接收交换机将根据二级VLAN类型进一步转发收到的数据帧。

如果交换机在杂合接口上收到了数据帧,并且要通过Trunk转发这个数据帧,交换机会使用相应主VLAN的VLAN ID标记数据帧。接收交换机将按照对待来自杂合接口的数据帧的方式来转发数据帧。

私有VLAN中的通信和标记规则总结如下:

表2-2总结了不同接口间的通信规则。

表2-2  私有VLAN的接口间通信

谁能和谁通信

主VLAN接口

团体VLAN接口1

隔离VLAN接口1

与主VLAN中的接口(杂合接口)通信

与相同二级VLAN中的接口(主机接口)通信

N/A2

与其他二级VLAN中的接口通信

N/A2

与Trunk接口通信

1团体VLAN和隔离VLAN是二级VLAN。

2杂合接口在主VLAN中,可以与其他所有接口通信。

关于私有VLAN在Trunk链路上的操作有两种常见的误解。第一种误解与标记有关。很多人通常会错误地认为私有VLAN会在Trunk上使用双标记。这种想法由二级VLAN嵌套在相关主VLAN中的理念而来。事实上,二级VLAN不在主VLAN“内部”;它们只是与其关联而已。这种关联只表示为:二级VLAN中收到的数据帧可以被转发给相关主VLAN中的杂合接口,反之亦然。

第二种误解与Trunk接口的类型有关。至此,本书已经描述了用于普通VLAN及私有VLAN的普通Trunk(switchport mode trunk)。然而,私有VLAN有两种特殊类型的Trunk接口,分别称为杂合PVLAN Trunk接口,以及隔离PVLAN Trunk接口。工程师不应该在支持私有VLAN的交换机之间,将这两种类型的接口用在普通的私有VLAN部署中;它们的使用仅限于一些特定的情形。为了更好地理解,参见图2-3,这个拓扑稍微修改了一些,其中VLAN 100是主VLAN,VLAN 101和102是团体VLAN,VLAN 199是隔离VLAN。此外,还有VLAN 999作为管理VLAN,跨越了路由器以及两台交换机。假设SW1交换机支持私有VLAN,而SW2不支持。

图2-3 使用特殊Trunk类型的交换拓扑

第一种特殊的Trunk类型是杂合PVLAN Trunk。当二级VLAN中的数据帧要从这样的Trunk接口发出时,它的VLAN标记将被改写为适当的主VLAN ID。当这个Trunk链路承载包含私有VLAN在内的多个VLAN,并且它连接的外部设备并不支持私有VLAN时,就需要进行重写;这样私有VLAN也可以访问外部设备,就好像外部设备连接在杂合接口一样。例如图2-3中的单臂路由器R1,它负责路由多个VLAN的流量,其中包括主VLAN,这个外部路由器不知道多个二级VLAN实际上映射到一个主VLAN。杂合PVLAN Trunk接口会把所有二级VLAN ID转换成对应的主VLAN ID,这样外部路由器就总是只能看到主VLAN。

第二种特殊的Trunk类型是隔离PVLAN Trunk。这种Trunk类型会将主VLAN ID转换为与主VLAN关联的隔离VLAN的ID。这样做就可以通过承载多VLAN的Trunk链路,将隔离VLAN扩展到并不支持PVLAN特性,但却能够隔离自己接口的交换机上。入门级的Catalyst交换机不支持私有VLAN,但支持所谓的保护接口(此特性有时被称为私有VLAN边界)。在这些交换机上,工程师可以使用switchport protected命令配置保护接口特性。配置了此命令的保护接口之间禁止互相通信——实质上,它们就像是隔离接口一样。如果主VLAN中的杂合接口收到了一个数据帧,并且交换机要从隔离PVLAN Trunk接口将其转发出去,这个数据帧当前主VLAN的VLAN标记会被重写为隔离VLAN ID。如果邻接交换机将保护接口分配给了隔离VLAN(由于不支持私有VLAN,该VLAN并未配置为隔离VLAN),它就能够将数据帧转发到正确的主机。在图2-3中,工程师使用隔离PVLAN Trunk,将隔离PVLAN 199从SW1扩展到不支持PVLAN的SW2上,SW2在本地隔离了VLAN 199中的接口。SW2不允许这些接口之间进行通信,但是允许它们与连接SW1的Trunk接口进行通信。SW1确保在VLAN 199中另一个隔离接口上收到的数据帧,并不会被从连接SW2的隔离PVLAN Trunk转发出去,而且保证从SW2隔离PVLAN Trunk发来的带有VLAN 199标记的数据帧,并不会被转发到相同二级VLAN中的任何其他隔离接口。这样一来,隔离二级VLAN就被扩展到了SW2,并且没有丢失其隔离属性。然而,如果R1或任何其他杂合接口上的设备想要向SW2上的站点发送数据包,这些数据包会正常地使用主VLAN 100标记。然而在SW1的隔离PVLAN Trunk上,标记100将被重写为199并转发给SW2,从而允许杂合Trunk上的R1能够与SW2上的站点进行通信。

所以实质上,这些Trunk的特殊性在于它们执行的标记重写行为:

只有特定类型的高端Catalyst交换机能够支持特殊的私有VLAN Trunk类型。

例2-5显示了私有VLAN的交换机配置。普通Trunk的配置未显示。

例2-5 配置私有VLAN

! If not running VTPv3, a switch must be put into VTP Transparent mode before
! configuring Private VLANs

AccessSw(config)# vtp mode transparent
Setting device to VTP Transparent mode for VLANS.

! One isolated secondary VLAN and three community secondary VLANs will now be
! created. Afterwards, they will be associated with the primary VLAN 100.

AccessSw(config)# vlan 199
AccessSw(config-vlan)# name Isolated
AccessSw(config-vlan)# private-vlan isolated
AccessSw(config-vlan)# vlan 101
AccessSw(config-vlan)# name Community1
AccessSw(config-vlan)# private-vlan community
AccessSw(config-vlan)# vlan 102
AccessSw(config-vlan)# name Community2
AccessSw(config-vlan)# private-vlan community
AccessSw(config-vlan)# vlan 103
AccessSw(config-vlan)# name Community3
AccessSw(config-vlan)# private-vlan community
AccessSw(config-vlan)# vlan 100
AccessSw(config-vlan)# name Primary1
AccessSw(config-vlan)# private-vlan primary
AccessSw(config-vlan)# private-vlan association 101-103,199
AccessSw(config-vlan)# exit 
! The show vlan private-vlan command is useful to verify the types and associations
! of private VLANs and their member ports. At this moment, there are no ports
! assigned to these VLANs yet.

AccessSw(config)# do show vlan private-vlan

Primary Secondary Type         Ports
------- --------- ----------------- ------------------------------------------
100   101    community
100   102    community
100   103    community
100   199    isolated

! Now, ports will be assigned to these VLANs:
! Fa0/1 - 3: Secondary community VLAN 101
! Fa0/4 - 5: Secondary community VLAN 102
! Fa0/6 - 8: Secondary community VLAN 103
! Fa0/9 - 12: Secondary isolated VLAN 199
! Fa0/13: Promiscuous port in primary VLAN 100
! For brevity purposes, only the configuration of Fa0/1 - 3 will be shown, as all
! other ports in secondary VLANs, isolated or community, are configured similarly
! Afterwards, show vlan private-vlan is issued to verify the port assignment.
! As Fa0/13 is a promiscuous port, it will be shown in all associated secondary
! VLANs

AccessSw(config)# interface range fa0/1 - 3
AccessSw(config-if-range)# switchport mode private-vlan host
AccessSw(config-if-range)# switchport private-vlan host-association 100 101AccessSw(config-if-range)# interface fa0/13
AccessSw(config-if)# switchport mode private-vlan promiscuous
AccessSw(config-if)# switchport private-vlan mapping 100 101-103,199
AccessSw(config-if)# do show vlan private-vlan

Primary Secondary Type        Ports
------- --------- ----------------- ------------------------------------------
100   101    community     Fa0/1, Fa0/2, Fa0/3, Fa0/13
100   102    community     Fa0/4, Fa0/5, Fa0/13
100   103    community     Fa0/6, Fa0/7, Fa0/8, Fa0/13
100   199    isolated      Fa0/9, Fa0/10, Fa0/11, Fa0/12, Fa0/13

! If a SVI is used as a gateway for devices associated with the primary VLAN 100,
! it must also be configured as promiscuous

AccessSw(config-if)# interface Vlan100
AccessSw(config-if)# private-vlan mapping 101-103,199
AccessSw(config-if)# ip address 192.168.100.254 255.255.255.0

通过使用VLAN Trunk链路,交换机、路由器甚至是有适当NIC(网卡)且/或软件驱动的PC,都能够通过一条链路发送去往多个VLAN的流量。为了知道数据帧属于哪个VLAN,发送方交换机、路由器或PC会添加原始以太网数据帧的头部,这个头部中包含表示相关VLAN的VLAN ID字段。本节描述两种Trunk协议的协议详情,接着详述如何配置Trunk。

如果两台设备之间要执行Trunk,它们必须在使用ISL(交换机间链路),还是使用802.1Q上达成一致,因为两者之间有些区别,总结如表2-3所示。

表2-3  比较ISL和802.1Q

特性

ISL

802.1Q

支持的VLAN

正常及扩展范围1

正常及扩展范围

协议由谁定义

Cisco

IEEE

封装原始数据帧还是插入标记

封装

插入标记

有本征VLAN的概念

1SL原来仅支持正常范围的VLAN,但后来进行了改进,能够支持扩展范围的VLAN。

ISL和802.1Q之间的区别主要体现在以下方面:通过Trunk发送数据帧之前,如何给以太网数据帧添加头部。ISL会添加新的26字节头部,以及新的尾部(从而能够使用新的FCS值),然后封装整个原始数据帧。使用执行Trunk行为的设备的源地址(在图2-4中列为SA)来封装头部,而不使用原始数据帧的源MAC地址。ISL使用组播目的地址(在图2-4中列为DA)0100.0C00.0000或0300.0C00.0000。总体来看,ISL数据帧是SNAP封装的数据帧。

图2-4 ISL和802.1Q数据帧标记方式

802.1Q会在原始数据帧中(在源地址字段后)插入一个4字节的头部,称为标记。原始数据帧的地址保持不变。正常情况下,以太网控制器会希望在源地址字段后,找到以太网类型字段或802.1Q长度字段。对于802.1Q标记,地址字段后的前两个字节记录着以太网类型值0x8100,表示数据帧包含802.1Q的头部。因为802.1Q并不真正封装原始数据帧,因此通常被称为数据帧标记。图2-4显示了ISL和802.1Q使用的头部内容。

表2-3的最后一行提到了本征VLAN。在Trunk链路上,802.1Q不标记在本征VLAN中发送的数据帧,并且会将所有收到的未标记的数据帧都分配给本征VLAN。本征VLAN特性允许交换机尝试在接口上使用802.1Q Trunk,但如果另一台设备不支持Trunk,本征VLAN的流量仍可以通过链路发送。默认时,本征VLAN是VLAN 1,这也是默认的Access VLAN。Trunk链路两端的本征VLAN必须相同;否则就会出现本征VLAN不匹配,从而导致两个VLAN合并。为了检测并尽可能避免本征VLAN不匹配的不良影响,Cisco交换机对PVST+和快速PVST+部署实施了私有化扩展,允许它们检测并阻塞Trunk链路上不匹配的本征VLAN。此扩展将在第3章中进一步描述。Cisco发现协议(Cisco Discovery Protocol,CDP)将检测并报告本征VLAN不匹配的情况。最佳做法是在每个Trunk链路上,将本征VLAN从VLAN 1改为其他VLAN,并且不把这个VLAN用于除配置本征VLAN外的其他目的。这就会防止用户进行VLAN跳转攻击,在这种攻击中,用户会发送双标记数据帧,若顶端的标记匹配了Trunk的本征VLAN,Trunk会去除这个顶端标记。

关于Cisco实施的ISL和802.1Q标记的详细信息,可参见Cisco.com发布的技术说明文档“Inter-Switch Link and IEEE 802.1Q Frame Format”,文档ID:17056。

Cisco交换机使用动态 Trunk协议(DTP)来动态获知线缆另一端的设备是否希望使用Trunk,若是,使用哪种Trunk协议。这个协议减轻了交换网络初始部署的负担,同时最小化了两交换机之间由于端口配置的不匹配导致的配置错误。

DTP根据接口上定义的DTP模式来获知是否执行Trunk。DTP模式有以下这些。

在这些模式之中,dynamic desirable有更高的优先级——如果两个接口都配置了dynamic,但一个配置为auto,另一个配置为desirable,最终的操作模式将是Trunk。如果两台设备中任意一台同时支持ISL和802.1Q,DTP也会协商Trunk上的封装类型。如果两台设备同时支持两种Trunk类型,它们将选择ISL。如果DTP协商失败,任何使用dynamic模式的接口,无论是desirable还是auto,都将运行为Access接口。接下来一节“Trunk配置的兼容性”进一步介绍了不同的DTP模式及其组合。

不同类型的Cisco交换机有不同的默认DTP模式。例如,较早的Catalyst 2950和3550型号默认为dynamic desirable模式。之后的Catalyst型号,如2960、3560或3750,默认为dynamic auto模式。关于具体交换机平台和IOS版本的权威信息可通过对应的命令手册进行查询。

虽然DTP和VTP是独立的协议,但DTP却在其消息中承载VTP域名。只有在两交换机上的VTP域名相同时,或者一台交换机未配置VTP域名时(即使用NULL域名),交换机才能成功协商链路的操作模式。使用VTP域名进行DTP协商,其背后的原因是在不同的VTP域中,可能有不同的VLAN集合,并且在每个VTP域中,相同编号的VLAN可以用作不同目的(这就是网络一开始被划分成几个VTP域的原因——保证VLAN数据库分离且独立)。因此,交换机不应将链路启用为Trunk,因为将VLAN从一个VTP域扩展到另一个VTP域,会导致不良后果。

将DTP模式设置为desirable,交换机可以轻松连接,它们也会动态建立Trunk。不过工程师也可以手动配置Trunk,并通过show命令验证结果。表2-4列出了一些与Trunk相关的关键Catalyst IOS命令。

表2-4  VLAN Trunk相关命令

命令

功能

switchportno switchport

将接口定义为交换接口(switchport)或是路由接口(no switchport

switchport mode ...

设置DTP协商参数

switchport trunk ...

若接口为Trunk,设置Trunk参数

switchport access ...

若接口不为Trunk,设置非Trunk相关的参数

show interfaces trunk

Trunk相关信息汇总

show interfaces type number trunk

列出特定接口的Trunk详情

show interfaces type number switchport

列出特定接口的Trunk及非Trunk详情

图2-5列出了几条关于Switch1上的Trunk配置和状态的详细信息,如例2-6所示。R1未配置为Trunk,所以Switch1协商Trunk失败。Switch2是Catalyst 3550交换机,它同时支持ISL和802.1Q,所以它们将协商使用Trunk并使用ISL。Switch3和Switch4是Catalyst 2950交换机,它们只支持802.1Q;因此,与Switch1协商使用Trunk,但选择802.1Q作为Trunk协议。虽然在本书写作时Catalyst 3550和2950都已经停产,但它们的默认接口设置dynamic desirable,很好地展示了将其连接并使得链路动态成为Trunk是多么简单的事情。较新的Catalyst型号,如2960、3560、3750或3850系列,默认设置是dynamic auto,所以使用图2-5中相同的拓扑,但装配这些平台的设备,协商结果会变成Access模式。

图2-5 例2-6的Trunk配置参考

正因为工程师能够配置端口相互协商它们的工作模式,因此一个接口上也可以同时有switchport accessswitchport trunk命令。虽然乍一看让人困惑,但这些命令只是定义如果接口为Access接口或Trunk接口,接口将会如何工作。与当前未使用的接口操作模式相关的命令会显示出来,但也会被忽略。

例2-6 Trunk配置及show命令示例——Switch1

! The administrative mode of dynamic desirable (trunking) and negotiate (trunking
! encapsulation) means that Switch1 attempted to negotiate to trunk, but the
! operational mode of static access means that trunking negotiation failed.
! The reference to "operational trunking encapsulation" of native means that
! no tagging occurs.

Switch1# show int fa 0/1 switchport
Name: Fa0/1
Switchport: Enabled
Administrative Mode: dynamic desirable
Operational Mode: static access
Administrative Trunking Encapsulation: negotiate
Operational Trunking Encapsulation: native
Negotiation of Trunking: On
Access Mode VLAN: 1 (default)
Trunking Native Mode VLAN: 1 (default)
Administrative private-vlan host-association: none
Administrative private-vlan mapping: none
Operational private-vlan: none
Trunking VLANs Enabled: ALL
Pruning VLANs Enabled: 2-1001

Protected: false
Unknown unicast blocked: disabled
Unknown multicast blocked: disabled

Voice VLAN: none (Inactive)
Appliance trust: none

! Next, the show int gig 0/1 trunk command shows the configured mode
! (desirable), and the current status (n-isl), meaning negotiated ISL. Note
! that the trunk supports the extended VLAN range as well.

Switch1# show int gig 0/1 trunk
Port     Mode    Encapsulation Status     Native vlan
Gi0/1    desirable  n-isl     trunking    1

Port     Vlans allowed on trunk
Gi0/1    1-4094

Port     Vlans allowed and active in management domain
Gi0/1    1,21-22
Port     Vlans in spanning tree forwarding state and not pruned
Gi0/1    1,21-22

! Next, Switch1 lists all three trunks - the segments connecting to the other
! three switches - along with the type of encapsulation.

Switch1# show int trunk
Port     Mode       Encapsulatio   Status     Native vlan
Fa0/12   desirable    n-802.1q     trunking     1
Fa0/24   desirable    n-802.1q     trunking     1
Gi0/1    desirable    n-isl      trunking     1

Port    Vlans allowed on trunk
Fa0/12   1-4094
Fa0/24   1-4094
Gi0/1    1-4094

Port    Vlans allowed and active in management domain
Fa0/12   1,21-22
Fa0/24   1,21-22
Gi0/1    1,21-22

Port    Vlans in spanning tree forwarding state and not pruned
Fa0/12   1,21-22
Fa0/24   1,21-22
Gi0/1    1,21-22

如例2-7所示,在较新的Catalyst平台上,show dtp命令显示出全局和单个接口上DTP的操作模式。

注释:


较新的Catalyst交换机系列(如2960、3560、3750、3650和3850)在还没有实施任何配置时,接口的默认设置是这样的:模式设置为dynamic auto,本征VLAN设置为1,Access VLAN设置为1,Trunk封装设置为auto(如果同时支持ISL和dot1q的话)或dot1q,允许传输VLAN的信息,工程师可以修剪VLAN 2~1001。较旧的2950和3550交换机型号,默认模式设置为dynamic desirable。

例2-7 SW1上的show dtp命令输出

SW1# show dtp
Global DTP information
     Sending DTP Hello packets every 30 seconds
     Dynamic Trunk timeout is 300 seconds
     12 interfaces using DTP

! The TOS/TAS/TNS stand for Trunk Operating/Administrative/Negotiation Status
! The TOT/TAT/TNT stand for Trunk Operating/Administrative/Negotiation Type
! In the following output, Fa0/12 is configured as dynamic desirable

SW1# show dtp interface fa0/12
DTP information for FastEthernet0/12:
  TOS/TAS/TNS:                  TRUNK/DESIRABLE/TRUNK
  TOT/TAT/TNT:                  ISL/NEGOTIATE/ISL
  Neighbor address 1:              00179446B30E
  Neighbor address 2:              000000000000
  Hello timer expiration (sec/state):     19/RUNNING
  Access timer expiration (sec/state):    289/RUNNING
  Negotiation timer expiration (sec/state): never/STOPPED
  Multidrop timer expiration (sec/state):   never/STOPPED
  FSM state:                   S6:TRUNK
  # times multi & trunk             0
  Enabled:                    yes
  In STP:                    no

 Statistics
 ----------
  3 packets received (3 good)
  0 packets dropped
      0 nonegotiate, 0 bad version, 0 domain mismatches,
      0 bad TLVs, 0 bad TAS, 0 bad TAT, 0 bad TOT, 0 other
  6 packets output (6 good)
      3 native, 3 software encap isl, 0 isl hardware native
  0 output errors
  0 trunk timeouts
  2 link ups, last link up on Mon Mar 01 1993, 00:14:09
  2 link downs, last link down on Mon Mar 01 1993, 00:14:02

1.允许、活跃及修剪的VLAN

虽然Trunk可以支持VLAN 1~4096,但工程师仍可以使用几种机制,来减少实际可以通过Trunk的VLAN数量。首先,工程师可以使用接口命令switchport trunk allowed,禁止Trunk链路承载相应VLAN的流量。其次,允许通过Trunk链路发送的VLAN在变为活跃状态之前,工程师必须在交换机上配置相应VLAN。最后,工程师可以使用VTP来修剪Trunk上的VLAN,这样以来,交换机就会停止通过Trunk转发来自该VLAN的数据帧。

show interface trunk命令显示了每个类别中的VLAN,如例2-6中的最后一条命令所示。分类总结如下。

2.Trunk配置的兼容性

在多数生产网络中,整个网络中的交换机Trunk都使用相同的标准配置。例如,与其使用DTP来协商是否使用Trunk,许多工程师会自己配置Trunk接口总是使用Trunk(使用命令switchport mode trunk),而在不应该使用Trunk的接口上禁用DTP。IOS中包含几条命令,能够对具体网段是否使用Trunk构成影响。由于许多企业使用常见标准,因此工程师很容易忘记相关命令工作的细微差别。本节涵盖了这些细节。

有两条IOS命令能够影响两台交换机建立Trunk的过程:接口命令switchport modeswitchport nonegotiate定义了DTP是否会尝试协商Trunk,以及在尝试时使用何种规则。此外,网段上任一端交换机接口的设置都将决定Trunk是否能够成功建立。

表2-5总结了Trunk的配置选项。第一列表示一台交换机上的配置,最后一列为另一台交换机上的配置,并且这个配置将会致使两台交换机之间使用Trunk。

表2-5  能够在网段中使用Trunk的Trunk配置选项

一侧的配置命令1

简称

含义

为了使用Trunk,另一侧必须配置为

switchport mode trunk

Trunk

本侧总是使用Trunk;发送DTP帮助另一侧选择使用Trunk

on、desirable、auto

switchport mode trunkswitchport nonegotiate

Nonegotiate

本侧总是使用Trunk;不发送或处理DTP消息(当其他交换机不是Cisco交换机时有用)

on

switchport mode dynamic desirable

Desirable

发送表示动态模式的DTP消息,首选Trunk,若协商成功就使用Trunk

on、desirable、auto

switchport mode dynamic auto

Auto

发送表示动态模式的DTP消息,首选Access,若协商成功就使用Trunk

on、desirable

switchport mode access

Access

永不使用Trunk;在进入Access模式时可以发送一个DTP消息,以帮助另一侧的状态达成一致,此后停止发送和处理DTP消息

(永不使用Trunk)

switchport mode accessswitchport nonegotiate

Access(不协商)

永不使用Trunk;不发送或处理DTP消息

(永不使用Trunk)

1如果第一列中没有列出命令switchport nonegotiate的话,默认使用DTP协商(DTP协商是启用的)。

 

注释:


如果接口为Trunk,同时交换机支持多种Trunk封装的话,命令switchport trunk encapsulation的设置将决定Trunk的类型(ISL或802.1Q)。工程师可以使用这条命令配置动态协商类型(使用DTP),或者配置两种类型之一。

为了使DTP协商成功,两台交换机必须都配置相同的VTP域名,或至少有一台交换机未配置VTP域名(即为NULL)。

VLAN Trunk技术可以用在路由器和主机上,也可以用在交换机上。然而,路由器不支持DTP,所以工程师必须手动配置,才能使路由器支持Trunk。此外,工程师还必须手动配置网段另一端的交换机也执行Trunk,因为路由器不参与DTP。

路由器Trunk的大部分配置工作使用子接口,每个子接口与一个VLAN相关联。子接口编号不需要与VLAN ID相同;每个子接口下都配置有encapsulation命令,这个接口相关联的VLAN ID是encapsulation配置的一部分。工程师需要使用从1开始的子接口编号;子接口编号0是物理接口本身(例如接口Fa0/0.0就是Fa0/0本身)。同时,因为合理的设计要求每个VLAN使用一个IP子网,如果路由器希望在VLAN之间转发数据包,路由器需要为每个Trunk子接口都配置IP地址。

工程师可以在子接口下,或路由器的物理接口下,配置802.1Q本征VLAN。若在子接口下配置,可以使用接口命令encapsulation dot1q vlan-id native,其中包含的native关键字表示从此子接口发出的数据帧不应该被标记,进入的无标记数据帧应该由此子接口进行处理。与路由器上其他的Trunk配置相同,子接口上也应该配置与之相关联的IP地址。不过,如果工程师没有在子接口上配置IP地址的话,路由器假定本征VLAN与物理接口关联。在这种情况下,物理接口上既不需要,也不支持encapsulation命令;但是,需要在物理接口上配置关联的IP地址。在物理接口上配置一个IP地址,在这个物理接口下,使用encapsulation dot1q vlan-id native的子接口上配置(不同的)IP地址,会导致本征VLAN中有两个不同的接口,这种配置是不允许的。入站的所有无标记数据帧只会由子接口的配置进行处理。关于此规则,ISR G1路由器的10Mbit/s以太网内置接口是一个例外。在这些路由器平台上,工程师应该直接在物理以太网接口上配置本征VLAN。虽然路由器能够接受子接口命令encapsulation dot1q vlan-id native,但入站的无标记数据帧将会由物理接口的配置进行处理。此例外只适用于装配了10Mbit/s以太网接口的ISR平台,且在使用快速以太网或更快接口的平台上没有这一例外现象。

如果路由器支持在子接口上配置本征VLAN,建议工程师使用子接口,而不是使用物理接口来配置本征VLAN。这样做除了能够保证配置更为一致外(所有配置都在设置子接口上),还能够使路由器正确处理数据帧,不管是否源于本征VLAN,也不管是否携带802.1Q标记。这种数据帧的标记是由802.1Q标记中的CoS字段实现的。如果本征VLAN是配置在物理接口上的,路由器将无法识别802.1Q标记为非零VLAN ID的数据帧,其实是一个携带了CoS标记的本征VLAN中的数据帧。当使用子接口配置本征VLAN时,encapsulation dot1q vlan-id native命令使路由器能够识别无标记的数据帧,以及由CoS标记的数据帧,其中标记了特定vlan-id的数据帧应该作为本征VLAN中的数据帧进行处理。

例2-8显示了图2-1中Router1上的ISL和802.1Q配置案例。本例中,Router1需要在VLAN 21和22之间转发数据包。案例的第一部分显示了ISL配置,没有配置本征VLAN,因此每个VLAN只使用一个子接口。案例的第二部分显示了802.1Q的配置,工程师在物理接口下配置了本征VLAN(VLAN 21)。

例2-8 Router1上的Trunk配置

! Note the subinterface on the Fa0/0 interface, with the encapsulation
! command noting the type of trunking, as well as the VLAN number. The subinterface
! number does not have to match the VLAN ID. Also note the IP addresses for
! each interface, allowing Router1 to route between VLANs.
! The encapsulation command must be entered on a subinterface before entering any
! other IP-related commands, such as configuring an IP address.

Router1(config)# interface fa0/0
Router1(config-if)# no shutdown
Router1(config-if)# interface fa0/0.1
Router1(config-subif)# encapsulation isl 21
Router1(config-subif)# ip address 10.1.21.1 255.255.255.0
Router1(config-subif)# interface fa0/0.2
Router1(config-subif)# encapsulation isl 22
Router1(config-subif)# ip address 10.1.22.1 255.255.255.0
! Next, an alternative 802.1Q configuration is shown. Note that this configuration
! places the IP address for VLAN 21 on the physical interface; the router simply
! associates the physical interface with the native VLAN. Alternatively,
! a subinterface could be used, with the encapsulation dot1q 21 native command
! specifying that the router should treat this VLAN as the native VLAN.

Router1(config)# interface fa0/0
Router1(config-if)# ip address 10.1.21.1 255.255.255.0
Router1(config-if)# no shutdown
Router1(config-if)# interface fa0/0.2
Router1(config-subif)# encapsulation dot1q 22
Router1(config-subif)# ip address 10.1.22.1 255.255.255.0

还需要注意的是,工程师并没有在路由器的接口上明确定义允许的VLAN列表。但实际上,允许的VLAN列表是基于工程师配置的VLAN隐式确定的。例如,在本例中,当时用ISL时,Router1允许VLAN 21和22通过,但使用802.1Q时,路由器允许本征VLAN和VLAN 22通过。

传统上,VLAN的扩展并没有超过WAN边界。一个园区网的VLAN会扩展到WAN边界路由器,但并不在WAN上使用VLAN协议。

如今,有一些新兴的替代方案,能够在WAN中传输VLAN流量,其中包括802.1Q-in-Q,其标准化的版本802.1ad称为运营商网桥(Provider Bridge),另一个标准802.1ah被称为运营商骨干网桥(Provider Backbone Bridges)、二层隧道协议(L2TPv3)、MPLS上的以太网(EoMPLS),以及VLAN私有LAN服务(VLAN Private LAN Service,VPLS)。虽然这些主题更适用于CCIE服务提供商认证,读者至少应该知道802.1Q-in-Q隧道的概念。

802.1Q-in-Q在Catalyst交换机上也称为Q-in-Q,允许SP在跨越WAN服务时,保留802.1Q VLAN标签。由此,VLAN实际上可以被扩展到多个地理分散的站点上。图2-6显示了Q-in-Q的基本理念。

图2-6 Q-in-Q:基本操作

入向SP交换机收到802.1Q数据帧,然后使用额外的802.1Q头部来标记每个进入该接口的数据帧,这称为S-标记(原始的客户标记被称为C-标记,SP交换机不会修改或处理C-标记)。在本例中,所有客户1的数据帧在经过WAN时,都被标记为VLAN 5;客户2的数据帧被标记为VLAN 6。在出向接口移除S-标记之后,客户交换机会看到C-标记完好的原始802.1Q数据帧,并且可以正确地翻译VLAN ID信息。接收方SP交换机(本例中为SP-SW2)可以基于额外的VLAN S-标记,使多个客户的流量相互分离。

注意如果SP-SW1和SP-SW2之间的Trunk使用VLAN 5作为本征VLAN,来自客户1的数据帧在此Trunk上将不会被添加S-标记。因此,在SP-SW2收到这些数据帧时只有C-标记,SP-SW2会按照C-标记中指示的VLAN进行处理,而不是由VLAN 5进行处理。这可能会导致客户1的流量泄露给另一个客户、被误转发或丢入黑洞。为了避免这种情况,工程师通常需要为SP的交换机配置vlan dot1q tag native命令,来从根本上停用本征VLAN的概念,并无视本征VLAN设置而标记Trunk上的所有数据帧。

通过使用Q-in-Q,SP可以提供VLAN服务,甚至能够应对客户使用重叠VLAN ID的情况。客户对于网络设置的选择有了更大的灵活性,尤其在使用城域以太网服务时。此外,CDP和VTP流量也可以通过Q-in-Q服务透明传输。

在Catalyst交换机上,3550及更高版本的平台上支持Q-in-Q。例2-9显示了配置案例,这些配置相对简单。

例2-9 Catalyst 3560上的Q-in-Q配置示例

! It is assumed that C1-SW1 and C1-SW2 have their ports towards SP-SW1 configured
! as ordinary 802.1Q trunks. On SP-SW1, the vlan dot1q tag native is used to
! force tagging on all VLANs including native VLAN on trunks. Also, because
! a customer's C-tagged frame may already contain 1500 bytes in its payload, this
! payload including the C-tag is considered a new payload in the S-tagged frame,
! and thus may grow up to 1504 bytes. Therefore, the MTU of the resulting frames
! is increased to 1504 bytes using the system mtu commands. Their use must also
! be carefully matched by neighboring devices.

SP-SW1(config)# vlan dot1q tag native
SP-SW1(config)# system mtu 1504 ! Applies to 100Mbps interfaces
SP-SW1(config)# system mtu jumbo 1504 ! Applies to 1Gbps and 10Gbps interfaces
!
SP-SW1(config)# vlan 5
SP-SW1(config-vlan)# name Customer1
SP-SW1(config-vlan)# exit
SP-SW1(config)# vlan 6
SP-SW1(config-vlan)# name Customer2
SP-SW1(config-vlan)# exit

! The Fa0/24 interface connects to SP-SW2. This interface is configured as an
! ordinary trunk port

SP-SW1(config)# interface FastEthernet0/24
SP-SW1(config-if)# switchport trunk encapsulation dot1q
SP-SW1(config-if)# switchport mode trunk

! The Fa0/1 interface connects to C1-SW1. Here, apart from 802.1Q-in-Q tunneling,
! the switch is also configured to tunnel selected Layer2 management protocols.
! To assign all Customer1's traffic to SP's VLAN 5, switchport access vlan 5 is
! used.

SP-SW1(config)# interface FastEthernet0/1
SP-SW1(config-if)# switchport mode dot1q-tunnel
SP-SW1(config-if)# switchport access vlan 5 SP-SW1(config-if)# l2protocol-tunnel cdp
SP-SW1(config-if)# l2protocol-tunnel lldp
SP-SW1(config-if)# l2protocol-tunnel stp
SP-SW1(config-if)# l2protocol-tunnel vtp

! The Fa0/2 interface connects to C2-SW1. This is the basic 802.1Q-in-Q tunneling
! configuration without any Layer2 management protocol tunneling

SP-SW1(config)# interface FastEthernet0/2
SP-SW1(config-if)# switchport mode dot1q-tunnel
SP-SW1(config-if)# switchport access vlan 6

! The show interfaces Fa0/1 switchport shows that the interface is operating
! in QinQ tunneling mode. The show vlan (not shown here for brevity) would display
! the Fa0/1 in the Customer1 VLAN just like an ordinary access port.

SP-SW1# show interfaces fa0/1 switchport
Name: Fa0/1
Switchport: Enabled
Administrative Mode: tunnel
Operational Mode: tunnel
Administrative Trunking Encapsulation: negotiate
Operational Trunking Encapsulation: native
Negotiation of Trunking: Off
Access Mode VLAN: 5 (Customer1)
Trunking Native Mode VLAN: 1 (default)
Administrative Native VLAN tagging: enabled
Voice VLAN: none
Administrative private-vlan host-association: none
Administrative private-vlan mapping: none
Administrative private-vlan trunk native VLAN: none
Administrative private-vlan trunk Native VLAN tagging: enabled
Administrative private-vlan trunk encapsulation: dot1q
Administrative private-vlan trunk normal VLANs: none
Administrative private-vlan trunk associations: none
Administrative private-vlan trunk mappings: none
Operational private-vlan: none
Trunking VLANs Enabled: ALL
Pruning VLANs Enabled: 2-1001
Capture Mode Disabled
Capture VLANs Allowed: ALL

Protected: false
Unknown unicast blocked: disabled
Unknown multicast blocked: disabled
Appliance trust: none
SP-SW1#

VTP能够将VLAN配置信息通告给邻居交换机,这样做可以使工程师只在一台交换机上配置VLAN,同一个VTP域中的所有其他交换机动态学习这些VLAN信息。VTP通告VLAN ID、VLAN名称和VLAN类型,以及每个VLAN的状态。然而,VTP不会通告每个VLAN中有哪些接口,所以工程师仍需要在每台独立的交换机上(使用switchport access vlan命令)配置每个VLAN中关联的接口。

VTP协议有三个版本。CatOS和基于IOS的交换平台广泛支持VTPv1和VTPv2。在本书写作时,基于IOS的交换机能够支持VTPv3了。在入门级别的Catalyst交换机上,从IOS版本12.2(52)SE开始支持VTPv3。

基于IOS的企业级交换机支持且启用的默认VTP版本是VTPv1。它只支持传播正常范围的VLAN。

VTPv2在以下方面有所增强。

关于VTP的透明模式一直存在着混淆的概念。早期Catalyst系列交换机的IOS文档似乎建议透明模式中的VTPv1交换机,只有在其版本和域名与透明交换机上的配置相同时,才转发VTP消息,而据称VTPv2透明交换机无论域名和版本如何,都会转发VTP消息。较新的Catalyst交换机的文档更不清楚,声明VTPv1和VTPv2透明交换机都会检查域名,并只在其域名与透明交换机上配置的域名相同时,才转发消息。

事实上,在多个同时支持VTPv1和VTPv2的Catalyst交换机上进行的实验表明,无论启用哪个VTP版本,VTP域名为NULL(即未配置)的透明交换机都可以转发所有的VTP消息。配置了域名的透明交换机只有域名相同时才转发VTP消息。

VTPv3与VTPv2有以下方面的不同。

每台Cisco交换机都使用4种VTP模式之一,如表2-6所示。

表2-6  VTP模式和特性

功能

服务器模式

客户端模式

透明模式

off模式*

生成VTP通告

处理收到的通告,以便更新其VLAN配置

转发收到的VTP通告

在NVRAM或vlan.dat中保存VLAN配置

可以使用配置命令创建、修改或删除VLAN

*只有VTPv3支持off模式。

VTPv1和VTPv2使用以下4种消息类型。

在本书出版时,VTPv3消息类型的详情未被公布。

注释:


在任意的VTP版本中,交换机只在Trunk接口上传输和接收VTP消息。Access接口不发送也不接收VTP消息。为了使两台交换机在VTP中通信,它们必须首先通过工作的Trunk链路互连。

首先来看一看VTPv1和VTPv2的更新过程,VTPv3中的区别将在之后解释。

在VTPv1和VTPv2中,更新的过程开始于:交换机管理员在一台VTP服务器交换机上添加、删除或更新VLAN。当新的配置出现时,VTP服务器将旧的VTP修订版本号加1,并通告完整的VLAN配置数据库以及新的修订版本号。

通过使用VTP修订版本号的概念,交换机能够获知VLAN数据库的变化。交换机在收到VTP更新后,如果这个VTP更新中的修订版本号比交换机当前的修订版本号大,交换机就认为有新版本的VLAN数据库。图2-7中显示出旧的VTP修订版本号是3;服务器增加了一个新的VLAN(将修订版本号增加至4),然后传播VTP数据库给其他交换机。

图2-7 VTP修订版本号的基本操作

Cisco交换机默认使用VTP服务器模式,但直到工程师配置了VTP域名后,它们才开始发送VTP更新。这时,服务器会开始发送VTP更新,每次VLAN的配置有变更时,交换机都会使用更新的数据库和修订版本号。然而,图2-7中的VTP客户端事实上不需要配置VTP域名。若未配置,客户端假设自己应该使用第一个收到的VTP更新中的VTP域名。不过工程师需要配置客户端的VTP模式,使用vtp mode全局配置命令。附带说明,交换机之间必须通过Trunk链路互连,因为VTP消息只通过Trunk链路进行交换。

VTP客户端和服务器一样,都会接受来自其他VTP服务器和客户端交换机的VTP更新。为了获得更好的可用性,使用VTP的交换网络需要至少两个VTP服务器交换机。在正常操作的过程中,工程师在一台服务器交换机上更改VLAN信息,另一台VTP服务器(及所有客户端)获知VLAN数据库的变更。获知后,VTP服务器和客户端将独立地将VLAN配置储存在自己Flash中的vlan.dat文件中;它们不在NVRAM中存储VLAN配置。

当一个LAN中安装了多个VTP服务器时,有可能发生意外重写网络中的VTP配置。如果Trunk链路失效了,然后工程师在多个VTP服务器上进行了更改,VTP配置数据库可能会相互有所区别,且分别使用不同的配置版本号。当工程师把之前分离的LAN部分使用Trunk重新连接后,会有更高修订版本号的VTP数据库在VTP域中传播,替换一些交换机中的VTP数据库。还需要注意的是,因为VTP客户端可以生成VTP更新,在一些情况下,VTP客户端可以更新另一台VTP客户端或服务器上的VTP数据库。总之,为了使新连接的VTP服务器或客户端更改其他交换机的VTP数据库,以下条件必须成立:

为了保护VTP域中不会加入未经授权的交换机,工程师应该使用VTP密码。VTP汇总通告中会携带一个MD5散列值,这个值是根据VLAN数据库以及VTP密码(若配置)计算出的。交换机在以汇总通告和至少一个子集通告的形式,收到VLAN数据库更新后,它会使用这些消息重建的VLAN数据库,以及自己的VTP密码来计算MD5散列值,并与汇总通告中的MD5散列值进行比较。为了使MD5散列值的计算结果相同,发送方和接收方交换机必须使用相同的VTP密码,且消息必须真实(即在传输过程中未被修改或伪造)。跟大家认为的有些不同,汇总通告中的MD5散列值并不是只是根据VTP密码计算出的。而且,MD5散列值——只在汇总通告中出现——也并不是用来保护VTP消息本身的。在有些环境中,工程师在所有交换机上使用VTP透明或off模式,避免交换机监听其他交换机的VTP更新,进而错误地修改自己的VLAN数据库。

VTPv3通过引入主用服务器(primary server)的概念,解决了无意(或有意)重写VLAN数据库的问题。主用服务器是在一个VTPv3域中,唯一可以在域中传播VLAN数据库的交换机。VTPv3服务器及客户端只有在使用相同的域名和主用服务器身份(由MAC地址表示)时,才共享VLAN数据库。工程师只能在主用交换机上修改VLAN数据库。

其他配置为服务器的VTPv3交换机被称为备用交换机(secondary server)。与VTPv1/VTPv2不同,在VTPv3中,工程师不能修改备用交换机的VLAN数据库;被用交换机可以备提升为主用服务器的角色,从已有的主用服务器手中夺取角色。工程师不能修改VTPv3客户端的VLAN数据库,客户端也不能被提升为主用服务器的角色。备用服务器和客户端都会存储一份主用服务器VLAN数据库的副本,并与它们的邻居服务器和客户端共享VLAN数据库,前提是它们对于主用服务器的身份达成了一致。这意味着即使在VTPv3中,有更高修订版本号的备用服务器或客户端交换机都能重写邻居的VLAN数据库,但为了能够实现这种行为,这些交换机的域名、主用服务器身份和VTP密码必须相同。

在VTPv3域中,如果两个或多个服务器或客户端交换机对于主用服务器的身份有着不同意见,这种状态称为冲突(Conflict)。冲突交换机之间不会同步VLAN数据库,即使所有其他VTP参数都相同。这个冲突的概念是VTPv3用来对抗无意VLAN数据库重写的核心。因为工程师只能在主用服务器上进行VLAN数据库的更改,对于主用服务器身份达成一致的交换机也立刻共享主用服务器的数据库。如果交换机从网络中断开连接,那么除非它是主用服务器本身,否则断开连接的交换机只有在角色被提升为主用服务器后,工程师才能修改它的VLAN数据库。在交换机重新连回到网络后,它认为的主用服务器与邻居所知道的主用服务器不同;这时就产生了冲突。因此,即使它的VLAN数据库修订版本号更高,它的VLAN数据库也不会被邻居交换机接受。这样一来,虽然不能完全避免,但已经在很大程度上减小了无意的VLAN数据库重写的可能性。

一个VTPv3域中最多有一个主用服务器。只有配置为VTPv3服务器的交换机才能被提升为主用服务器的角色,提升过程总是由工程师在特权EXEC模式中通过命令vtp primary执行的。因而主用服务器的状态是易失的运行状态,并不能被永久地存储在配置中。在主用服务器重启之后,它默认只能成为备用服务器。工程师可以通过vtp primary命令重新把交换机提升为主用服务器角色,之后它会向邻居泛洪自己的VLAN数据库;这时就算新的主用服务器的修订版本号更低,邻居也会接受并进一步泛洪。这样,新的主用服务器数据库就在VTP域中声明完成了。

在使用VTPv3时,工程师无法再通过将交换机设置为透明模式,之后再恢复原来的设置,意图把配置修订版本号重置为0了。只有通过修改VTP域名或配置VTP密码,才能将修订版本号重置为0。

如果一台VTPv3交换机检测到其接口上连接有运行VTPv1或VTPv2的较老的交换机,它会把该接口上的操作恢复为VTPv2操作,使较老的交换机能够在VTPv2中进行操作。VTPv3和只支持VTPv1的交换机之间的协作是无法支持的。

VTP默认向所有活跃的Trunk接口(ISL或802.1Q)发出更新。然而,在Cisco设备的所有默认设置中,如果交换机为服务器模式,但未配置VTP域名,则它们不会发送任何VTP更新。在交换机可以从另一台交换机获知VLAN信息之前,工程师必须使用工作Trunk将其互连,且至少有一台交换机有最基本的VTP服务器配置——具体地说,就是域名配置。

例2-10显示了工程师为Switch3配置VTP域名,将其设置为VTP服务器,并通告其配置的VLAN。示例中也列出了几个关键的VTP show命令(注意示例以Switch3上的VLAN 21和22配置开始,所有四台交换机全部都使用默认设置。还需记住,根据设备运行的IOS版本和支持/运行的VTP版本的不同,这些show命令的输出内容也可能有所不同)。

例2-10 VTP配置和show命令示例

! First, Switch3 is configured with a VTP domain ID of CCIE-domain.

Switch3# conf t
Enter configuration commands, one per line. End with CNTL/Z.
Switch3(config)# vtp domain CCIE-domain
Changing VTP domain name from NULL to CCIE-domain

! Next, on Switch1, the VTP status shows the same revision as Switch3, and it
! learned the VTP domain name CCIE-domain. Note that Switch1 has no VTP-related
! configuration, so it is a VTP server; it learned the VTP domain name from
! Switch3.

Switch1# show vtp status
VTP Version capable     : 1 to 3
VTP version running    : 1
VTP Domain Name       : CCIE-domain
VTP Pruning Mode       : Disabled
VTP Traps Generation    : Disabled
Device ID           : 0023.ea41.ca00
Configuration last modified by 10.1.1.3 at 9-9-13 13:31:46
Local updater ID is 10.1.1.1 on interface Vl1 (lowest numbered VLAN interface
  found)
Feature VLAN:
--------------
VTP Operating Mode           : Server
Maximum VLANs supported locally   : 1005
Number of existing VLANs       : 7
Configuration Revision        : 2
MD5 digest                : 0x0E 0x07 0x9D 0x9A 0x27 0x10 0x6C 0x0B
                       0x0E 0x35 0x98 0x1E 0x2F 0xEE 0x88 0x88

! The show vlan brief command lists the VLANs learned from Switch3.

Switch1# show vlan brief
VLAN Name                  Status   Ports
---- -------------------------------- --------- -------------------------------
1 default                  active   Fa0/1, Fa0/2, Fa0/3, Fa0/4
                             Fa0/5, Fa0/6, Fa0/7, Fa0/10
                             Fa0/11, Fa0/13, Fa0/14, Fa0/15
                             Fa0/16, Fa0/17, Fa0/18, Fa0/19
                             Fa0/20, Fa0/21, Fa0/22, Fa0/23
                             Gi0/2
21 VLAN0021                active
22 ccie-vlan-22              active
1002 fddi-default             act/unsup
1003 token-ring-default          act/unsup
1004 fddinet-default            act/unsup
1005 trnet-default             act/unsup

例2-11显示了几个VTP配置选项的示例。表2-7列出了最常使用的选项及其解释。

表2-7  VTP全局配置选项

选项

含义

domain

设置VTP域的名称。如果接收消息中的域名与接收交换机的域名不同,接收的VTP消息将被忽略。一台交换机只能是一个域的成员

password

设置密码以避免未授权的交换机加入域。在生成VLAN数据库的MD5散列时使用密码。如果发送方和接收方交换机的密码不相同,接收的VTP消息将被忽略。如果使用VTPv3,密码可以被指定为hidden,表示交换机永远不会以明文的形式在命令show vtp password的输出中显示密码。secret关键字用来通过加密的方式输入密码

mode

在交换机上设置服务器、客户端或透明模式。如果交换机支持VTPv3,也可以设置off模式,也就是在交换机禁用VTP

version

设置VTP版本。在服务器交换机上配置的版本1或2,将会应用到域中的所有交换机上。VTPv3则需要工程师在每台交换机上手动配置。在启用版本3之前,交换机必须使用一个非空的域名

pruning

启用VTP修剪,如果一台交换机上没有任何一个接口属于某个VLAN,则避免向它泛洪该VLAN的信息。无论VTP版本如何,修剪只适用于正常范围的VLAN

interface

指定接口,该接口的IP地址为这台交换机VTP更新中更新源的地址。默认使用最低编号的VLAN SVI接口配置的IP地址

例2-11显示了VTPv3的案例。在运行VTPv3时,最显著的区别是工程师需要指定一个交换机为主用服务器,这需要在能够执行VLAN数据库更改和使用VTP密码之前,使用vtp primary命令进行配置。虽然以下示例中并没有显示,但工程师可以使用命令vtp mode off在交换机上全局关闭VTPv3,或使用命令no vtp基于每个接口关闭(工程师可以使用命令show vtp interface轻松查看每个接口上的VTP状态)。值得注意的是,在将VTP模式从off更改为其他模式后,除IOS中固有的VLAN(1、1002~1005)外,所有现有的VLAN都会被删除。

例2-11 VTPv3使用示例

! To use VTPv3, each switch has to be configured individually for version 3 opera-
! tion. It is assumed that all four switches have been converted to VTPv3. Switches
! 1 and 2 are configured as VTP servers, switches 3 and 4 are configured as VTP
! clients. Only the Switch3 configuration is shown here for brevity purposes. 
 
Switch3(config)# vtp version 3
Switch3(config)# 
Sep 9 15:49:34.493: %SW_VLAN-6-OLD_CONFIG_FILE_READ: Old version 2 VLAN configuration file detected and read OK. Version 3
  files will be written in the future.
Switch3(config)# vtp mode client
Setting device to VTP Client mode for VLANS.

! An attempt to create a new VLAN on Switch1 will fail, as the Switch1 has not yet 
! been promoted to the role of primary server. The example also shows how to
! promote it, and subsequently create the VLAN without further obstacles. The "No
! conflicting VTP3 devices found." statement means that all switches in the VTP
! domain agree on the identity of the current primary server and thus share its
! VLAN database.
   
Switch1# conf t 
Enter configuration commands, one per line. End with CNTL/Z.
Switch1(config)# vlan 23   
VTP VLAN configuration not allowed when device is not the primary server for vlan   database. 
Switch1(config)# do vtp primary 
This system is becoming primary server for feature vlan 
No conflicting VTP3 devices found. 
Do you want to continue? [confirm] 
Switch1(config)# 
Sep 9 17:06:59.332: %SW_VLAN-4-VTP_PRIMARY_SERVER_CHG: 0023.ea41.ca00 has become   the primary server for the VLAN VTP feature 
Switch1(config)# vlan 23 
Switch1(config-vlan)# name ccie-vlan-23 
Switch1(config-vlan)# exit  
 
! On Switch3, the show vtp status shows:   

Switch3(config)# do show vtp status 
VTP Version capable     : 1 to 3 
VTP version running     : 3 
VTP Domain Name       : CCIE-domain 
VTP Pruning Mode       : Disabled 
VTP Traps Generation     : Disabled 
Device ID                   : 0023.ea93.8e80  
 
Feature VLAN: 
--------------
TP Operating Mode          : Client 
Number of existing VLANs      : 8 
Number of existing extended VLANs : 0 
Maximum VLANs supported locally  : 255 
Configuration Revision       : 2 
Primary ID              : 0023.ea41.ca00 
Primary Description         : Switch1 
MD5 digest              : 0x2A 0x42 0xC5 0x50 0x4B 0x9C 0xB6 0xDE 
                     0x17 0x8E 0xE0 0xB6 0x2E 0x67 0xA4 0x9C
 
Feature MST: 
--------------
VTP Operating Mode       : Transparent 
Feature UNKNOWN: 
--------------
VTP Operating Mode       : Transparent  
 
! Trying to promote the Switch3 to the role of primary server would fail, as it is
! configured to operate as a client:

Switch3(config)# do vtp primary
System can become primary server for Vlan feature only when configured as a server

! The password handling in VTPv3 has been improved. The password can be configured
! as being hidden, in which case it will never be displayed again in plaintext:

Switch1(config)# vtp password S3cr3tP4ssw0rd hidden
Setting device VTP password
Switch1(config)# do show vtp password
VTP Password: 8C70EFBABDD6EC0300A57BE402409C48

! This string can be used to populate the password setting on other switches
! without ever knowing the plaintext form, e.g.:

Switch2(config)# vtp password 8C70EFBABDD6EC0300A57BE402409C48 secret
Setting device VTP password

! After the password is configured in the secret form (or originally configured in
! the plain form and marked hidden), any attempt to promote a switch to the primary
! server role will require entering the password in the plaintext form into the
! CLI. Without knowing the plaintext form of the password, it is not possible to
! designate a switch as a primary server:

Switch2(config)# do vtp primary
This system is becoming primary server for feature vlan
Enter VTP Password: 
Password mismatch
Switch2(config)# do vtp primary
This system is becoming primary server for feature vlan
Enter VTP Password: 
No conflicting VTP3 devices found.
Do you want to continue? [confirm]
Switch2(config)#
Sep 9 17:10:42.215: %SW_VLAN-4-VTP_PRIMARY_SERVER_CHG: 0017.9446.b300 has become
  the primary server for the VLAN VTP feature

正常范围和扩展范围的VLAN

因为一些历史原因,有些VLAN编号是正常范围的,而其他的是扩展范围的。正常范围VLAN是VLAN 1~1005,可以通过VTP版本1和2进行通告。工程师可以在VLAN数据库模式和全局配置模式中配置这些VLAN,详细配置将被存储在Flash中的vlan.dat文件中。

扩展范围VLAN是1006~4094。如果使用VTPv1或VTPv2,工程师不能在VLAN数据库模式中配置这些额外的VLAN,它们也不能被存储在vlan.dat文件中,而且还不能通过VTP进行通告。事实上,为了配置这些VLAN,交换机必须为VTP透明模式(而且,为了兼容基于CatOS的交换机,还要小心使用VLAN 1006~1024)。VTPv3消除了这些限制:VTPv3能够通告正常范围和扩展范围的VLAN。而且对于VTPv3来说,关于所有VLAN的信息都被存在Flash中的vlan.dat文件中。

ISL和802.1Q现在都支持扩展范围的VLAN。起初,ISL只支持正常范围的VLAN,当时只使用ISL头部中预留15位中的10位来标识VLAN ID。后来定义的802.1Q使用12位VLAN ID字段,从而能够支持扩展范围的VLAN。之后,Cisco对ISL进行更改,使用VLAN ID字段中预留15位中的12位,进而支持扩展范围的VLAN。

表2-8总结了VLAN编号并提供了一些额外的注释。

表2-8  合法的VLAN编号——正常范围和扩展范围

VLAN编号

正常或扩展

可以被VTP版本1和2通告或修剪

注释

0

预留

不可用

1

正常范围

在Cisco交换机上,这是所有Access接口的默认VLAN;不能被删除或更改

2~1001

正常范围

1002~1005

正常范围

为FDDI和TR转换桥接定义使用

1006~4094

扩展范围

4095

预留

不可用

Catalyst IOS在以下位置之一存储VLAN和VTP配置——在称为vlan.dat的Flash文件中储存,或在运行配置中储存(术语“Catalyst IOS”指使用IOS的交换机,而不是Catalyst OS,后者常称为CatOS)。IOS在选择存储位置时,一部分基于VTP版本和模式,一部分基于VLAN是正常范围还是扩展范围。表2-9基于配置VLAN使用何种配置模式、VTP模式和VLAN范围描述了将发生的操作(注意VTPv1/VTPv2客户端也在vlan.dat中存储VLAN配置,但它们不理解扩展范围VLAN)。

对于VTPv3来说,情况被极大地简化了:无论模式如何(服务器、客户端、透明或off),正常和扩展范围的VLAN都被储存在vlan.dat文件中。如果工程师选择透明或off模式,VLAN的配置也出现在运行配置(running-config)中。

表2-9  VTPv1和VTPv2的VLAN配置和存储

功能

使用VTP服务器模式

使用VTP透明模式

可以在哪里配置正常范围VLAN

VLAN数据库和配置模式

VLAN数据库和配置模式

可以在哪里配置扩展范围VLAN

不能配置

只能在配置模式

在哪里储存VTP和正常范围VLAN配置命令

Flash中的vlan.dat

Flash中的vlan.dat和运行配置文件

在哪里储存扩展范围VLAN配置命令

VTP服务器模式中不允许扩展范围

只在运行配置文件中

交换机重启时,如果VTP模式及vlan.dat文件中的域名与启动配置(startup-config)文件不同,交换机只使用vlan.dat文件的内容进行VLAN配置。

 

注释:


表2-9中的配置特性不包括接口配置命令switchport access vlan;其中包括创建VLAN(vlan命令)和VTP的配置命令。

对于CatOS配置更有经验的读者可能会感兴趣的是,清除startup-config文件并重启Cisco IOS交换机时,实际上并没有清除正常范围VLAN和VTP配置信息。为了清除VLAN和VTP配置,工程师需要使用EXEC命令delete flash:vlan.dat。还需注意,如果有多台交换机在VTP服务器模式中,删除一台交换机上的vlan.dat并重启,一旦交换机恢复并与邻居建立Trunk链路,它就会通过其他VTP服务器的VTP更新获知旧的VLAN数据库。

虽然看起来不太符合本章关于VLAN和VLAN Trunk的内容,在本章介绍以太网上的点到点协议(Point-to-Point Protocol over Ethernet,PPPoE)却最合适不过。与VLAN将以太网交换架构虚拟为多个孤立的多路访问交换环境类似,PPPoE将以太网虚拟为客户端主机之间的多个点到点会话和一个接入集中器,从而使广播的以太网成为了一个点到多点的环境。PPP本身是点到点链路的绝佳二层协议,它所提供的功能很好地满足了服务提供商的需求,比如基于用户的认证(以及记账)、协商PPP链路上允许的高层协议及其设置(比如端点IP地址)、协商压缩、链路捆绑(也称为多链路),等等。RFC 2516中描述的PPPoE起初被设想为:在服务提供商网络中使用的在以太网接入网络上承载基于PPP的会话的一种方式,在装配普通以太网卡的PC上运行PPPoE软件客户端。随着数字用户线路(Digital Subscriber Line,DSL)技术的问世,工程师可以简单部署PPPoE和DSL。客户端PC仍继续运行PPPoE软件客户端,而DSL连接到普通LAN客户端PC的调制解调器,会将包含PPP报文的以太网数据帧放在一系列ATM信元中,并通过DSL接口进行传输,实际上就是通过基于ATM的DSL网络,将它们桥接到宽带远程接入服务器(Broadband Remote Access Server,BRAS)。在相反的方向上,调制解调器会接收到封装在一系列ATM信元中的以太网数据帧,并重新构造它们,最后将其转发到LAN。由于路由器的功能改进了,PPPoE客户端的功能由PC移至连接到DSL网络本身的路由器上。

PPPoE客户端的功能允许Cisco IOS路由器,而不是端点主机,作为网络中的客户端。这使得整个LAN可以通过一个终结在一台路由器上的PPPoE连接访问Internet。

在DSL环境中,PPP接口IP地址通过上行DHCP服务器,使用IP配置协议(IP Configuration Protocol,IPCP)获取,这是PPP的一个子协议。因此,工程师必须在路由器的拨号接口上启用IP地址协议,这可以通过在拨号接口配置中使用ip address negotiated命令完成。

因为PPPoE引入了8字节的开销(2字节的PPP头部和用于PPPoE的6字节),PPPoE的MTU通常会被减少至1492字节,以保证整个封装的数据帧长度在1500字节的以太网数据帧之内。此外,对于TCP会话,协商的最大段长度为1452字节,加上TCP和IP头部的40字节,PPPoE中的8字节,总共1500字节,满足了普通以太网数据帧的大小。最大传输单元(MTU)不匹配可能会阻止PPPoE连接建立,或正常传输大数据报。检查MTU的设置是进行PPPoE连接排错时的绝佳第一步。

熟悉ISDN BRI配置的读者能够认识例2-11中的拨号接口配置和相关命令。ISDN BRI配置和PPPoE的关键区别是pppoe-client dial-pool-number命令。

本节关注将以太网边界路由器配置为PPPoE客户端模式。此任务要求工程师配置以太网接口(物理或子接口)及一个对应的拨号接口。

图2-8显示了案例拓扑。例2-12显示了配置步骤。第一步是将外部以太网接口配

图2-8 例2-12的PPPoE拓扑

置为一个PPPoE客户端,并将其分配给一个拨号接口。第二步是配置对应的拨号接口。案例中还展示出额外的步骤,包括网络地址转换(NAT)的配置。

例2-12 在边界路由器上配置PPPoE

EdgeRouter# conf t
EdgeRouter(config)# interface fa0/0
EdgeRouter(config-if)# no shutdown
EdgeRouter(config-if)# ip address 192.168.100.1 255.255.255.0
EdgeRouter(config-if)# ip nat inside
EdgeRouter(config)# interface fa0/1
EdgeRouter(config-if)# no shutdown
EdgeRouter(config-if)# pppoe-client dial-pool-number 1 EdgeRouter(config-if)# exit
EdgeRouter(config)# interface dialer1
EdgeRouter(config-if)# mtu 1492
EdgeRouter(config-if)# ip tcp adjust-mss 1452
EdgeRouter(config-if)# encapsulation ppp
EdgeRouter(config-if)# ip address negotiated
EdgeRouter(config-if)# ppp chap hostname Username@ISP
EdgeRouter(config-if)# ppp chap password Password4ISP
EdgeRouter(config-if)# ip nat outside
EdgeRouter(config-if)# dialer pool 1
EdgeRouter(config-if)# exit
EdgeRouter(config)# ip nat inside source list 1 interface dialer1 overload EdgeRouter(config)# access-list 1 permit 192.168.100.0 0.0.0.255
EdgeRouter(config)# ip route 0.0.0.0 0.0.0.0 dialer1

工程师可以使用show pppoe session命令来验证PPPoE的连通性。Cisco IOS中包含调试PPPoE功能性的命令debug pppoe [dataerrorseventspackets]。

表2-10中列出了本章涉及的一些重要IOS命令(交换机命令语法来自Catalyst 3560 Multilayer Switch Command Reference, 15.0(2)SE。不同的交换机平台可能使用不同的命令语法)。

表2-10  本章的命令参考

命令

描述

show mac address-table [aging-timecountdynamicstatic] [address hw-addr] [interface interface-id] [vlan vlan-id]

查看MAC地址表;安全选项显示有关受限或静态设置的信息

show interfaces [interface-id] switchporttrunk]

查看接口操作是Access接口还是Trunk的详细信息

show vlan [brief │ id vlan-idinternal usagename vlan-nameprivate-vlansummary]

列出有关VLAN信息的EXEC命令

show vtp status

查看VTP配置状态信息

switchport mode {accessdot1q-tunneldynamic {autodesirable} │ private-vlan {hostpromiscuous} │ trunk}

设置非Trunk(accessprivate-vlan)、隧道(dot1q-tunnel)、Trunk(trunk)和动态Trunk(autodesirable)参数的配置命令

switchport nonegotiate

接口配置命令,禁用DTP消息;接口必须不是动态接口

switchport trunk {allowed vlan vlan-list} │ {encapsulation {dot1qislnegotiate}} │ {native vlan vlan-id} │ {pruning vlan vlan-list}

接口配置命令,当接口是Trunk时,用来设置它所使用的参数

switchport access vlan vlan-id

接口配置命令,将接口静态配置接口为一个VLAN的成员

表2-11列出了与VLAN创建相关的命令——VLAN数据库模式配置命令(通过vlan database特权模式命令进入)和正常的配置模式命令。

注释:


表2-11中可能没有列出所有命令参数。

表2-11  VLAN数据库和配置模式命令比较

VLAN数据库

配置

vtp {domain domain-namepassword passwordpruningv2-mode │ {serverclienttransparent}}

vtp {domain domain-namefile filenameinterface namemode {clientservertransparentoff } │ password password [ hiddensecret] │ pruningversion number}

vlan vlan-id [name vlan-name] [state {activesuspend}]

vlan vlan-id

show {currentproposeddifference}

无等同命令

applyabortreset

无等同命令

表2-12   Cisco IOS PPPoE客户端命令

命令

描述

pppoe-client dial-pool-number number

在路由器上配置外部以太网接口进行PPPoE操作,分配PPPoE客户端到之后被拨号接口使用的拨号池中

debug pppoe [dataerrorseventspackets]

启用调试进行PPPoE排错

与所有的Cisco CCIE笔试一样,CCIE路由和交换笔试也包含了非常广泛的考试主题,因而本节提供了一些有用工具,来帮助大家加深理解并记忆本章所涵盖的考试主题。

附录E包含了每章考试要点的摘要空表,请打印附录E并根据本章的表格信息,根据记忆填表,并参考附录F以作检查。

请写出本章涉及的下列关键术语,然后在术语表中核对正确答案:

VLAN、广播域、DTP、VTP修剪、802.1Q、ISL、本征VLAN、封装、私有VLAN、主VLAN、团体VLAN、隔离VLAN、杂合接口、团体接口、隔离接口、802.1Q-in-Q,二层协议隧道、PPPoE、DSL

本章中的主题在CCNP交换考试的书籍中涵盖得更为详细。关于这些主题更详细的信息,参见Cisco Press CCNP备考书籍,地址为www.ciscopress.com/ccnp。

Cisco LAN Switching,作者Kennedy Clark和Kevin Hamilton,是一本有关LAN相关话题的绝佳参考读物,且对于CCIE笔试和实验考试的准备绝对非常有用。

Cisco的官方文档中并没有详细介绍DTP协议的细节;然而,DTP被申请为美国专利No.6445715,在www.google.com/?tbm=pts上是公开的。


相关图书

CCIE路由和交换认证考试指南(第5版) (第2卷)
CCIE路由和交换认证考试指南(第5版) (第2卷)

相关文章

相关课程