深入理解BPDU Filtering 过滤BPDU报文

理解 BPDU Filtering 的意义( BPDU Filtering 在全局配置 与接口配置上的区别)

理解BPDU Filtering的意义(BPDU Filtering在全局配置与接口配置上的区别)

本文截自于博主CCNP交换技术稿件内容

BPDU Filtering 也叫 BPDU 过滤,它的意义是在某个端口上过滤 BPDU 的发送和接收,在这里需先要来理解一个前提:任何一个加入到生成树的交换机端口,都会发送并接收到相应的 BPDU报文,其中包括被规划为 portfast 的端口,它也会连续的( 秒间隔)向交换网络中发送 BPDU报文。但是在 Portfast 端口上发送 BPDU 有必要吗?没有,为什么呢?因为 portfast 连接都是主机,主机是不可能与交换机形成环路的,所以 portfast 是没必要向主机去发送 BPDU 报文。反过来讲 portfast 端口也没必要接收 BPDU 报文,为什么呢?桌面主机发送 BPDU 报文是没有意义的,但是 BPDU Filtering 对 portfast 端口收到 BPDU 报文时的处理方式就没有 BPDU Guard 那么极端, BPDUGurad 是直接关闭端口。而 BPDU filtering 将由于不同位置的配置,产生不同的处理行为, BPDU Filtering 的配置也分为全局配置和在接口上的配置,不同位置的配置将产生不同的效果。

BPDU Filtering 在全局配置

在全局模式下使用 spanning-tree portfast bpdufilter default 指令来启动 BPDU Filtering ,通过指令可以看出, BPDU Filtering 在全局模式下是需要依赖于 portfast 端口为基础来实现的,这一点和 BPDU Gruad 在全局模式下的配置前提是相同的。但如果用户在全局模式下启动的是 BPDU Filtering ,在这个时候 portfast 端口就不会发送 BPDU 报文了。如果此时当 portfast 端口收到 BPDU 报文时该端口会立即回退到常规的生成树端口,并参与生成树的选举及计算过程。关于这一点请参看演示: BPDU Filtering 在全局与接口上的配置。

BPDU Filtering 在接口上的配置:

用户可以在接口模式下使用 spanning-tree bpdufilter enable 指令来启动 BPDUFiltering ,注意在接口模式下启动 BPDU Filtering 功能时可以不依赖于 portfast 端口,然后在该接口上将不再发送和接收 BPDU 。 这里的这个“该接口上将不再发送和接收 BPDU ”说明,就一般而言,不发送 BPDU ,一般都比较好理解,而这里所谓的不接收 BPDU ( not receive BPDUs ),不如说成是忽略( ignore ) ,又或者表达为不处理接收到的 BPDU ,将更为精确的表达接口级 BPDU Filtering的功能,为什么这样讲?

如 图 所示,交换机 S1 的 E1/0 接口,可能正收到交换机 S3 的 E1/0 接口所发送的 BPDU 报文,该报文也能成功的到达 S1 的 E1/0 接口,为什么能到达?因为交换机 S3 发送 BPDU 报文时目标的 MAC 地址是一个众所周知的组播 MAC ( 0180.c200.0000 ) 就是众所周知的组播 MAC表示所有开启 STP 功能的设备都能接收到相关的 BPDU 报文,因为该目标 MAC 也叫生成树的多播 MAC 。只是说当 S3 发来的 BPDU 报文到达 S1 的 E1/0 接口时, S1 由于在接口上启动了 BPDU 的 filtering 功能,它( S1 )将忽略 S3 发来的 BPDU 。或者叫接收而不处理。关于这一点请参看演示: BPDU Filtering 在全局与接口上的配置。

注意: 在接口上配置 BPDU Filtering 与在全局配置 BPDU Filtering 的意义是有很大区别的,在全局配置的 BPDU Filtering 首先要依赖于 portfast 端口,当收到 BPDU 时,全局的 BPDU Filtering 是采取回退为正常生成树端口的处理方式;而接口上的 BPDU 不需要依赖于 portfast 端口,并忽略( ignore )收到的 BPDU 报文,此时相当于在具体的某个接口上禁用了生成树功能,如果管理员没有对二层网络进行合理的设计,可能就会存在潜在的环路,所以思科强烈建议并推荐用户在全局模式上启动 BPDU Filtering 功能。

演示: BPDU Filtering 在全局与接口上的配置

演示目标:

ü   测试 BPDU Filtering 在全局模式下的配置效果

ü   测试 BPDU Filtering 在接口模式下的配置效果

ü   一个有趣的现象:全局启动 BPUD 过滤,有某个时候会有少量的 BPDU 报文被发送。

演示环境: 如 图 所示

演示背景: 首先还是在 S2 和 S3 的交换机接口上将相应接口的交换机功能关闭( no switchport ),这样就可以暂时禁止 S2 和 S3 向交换机 S1 发送 BPDU ,为测试 BPDU Filtering 功能做好准备工作,然后将交换机 S1 的 E0/0-3 的接口范围配置为接入模式,并在这些端口上全局的启动Portfast 功能,然后通过协议分析器来取证 portfast 是否会发送 BPDU 报文,然后再在 portfast 端口之上启动 BPDU Filtering ,再来取证 portfast 端口是否会继续发送 BPDU 报文,然后在交换机S2 的 E0/0 端口上开启交换功能( switchport ),使其发送 BPDU 报文给 S1 ,再观察 S1 的 E0/0 在启动 BPDUFiltering 的情况下,是否会将 portfast 端口回退到常规的生成树端口状态。最后来测试接口 BPDU Filtering 的配置效果,确定它是否需要依赖于 portfast 端口而存在,并确定接口上的 BPDU 过滤与全局的 BPDU 过滤的差异。

演示步骤:

第一步: 首先将交换机 S1 的 e0/0-3 和 e1/0-3 的接口全部配置为交换机的接入模式端口,然后将交换机 S1 的所有接入模式的端口规划为 portfast 端口,具体配置如下,为了测试方便,建议现在就将 S2 和 S3 连接交换机 S1 的端口交换功能关闭( no switchport ),相当于暂时禁止 S2 和S3 向 S1 发送 BPDU 报文。

配置交换机 S1 的所有端口到接入模式端:

S1(config)#interfacerange e0/0-3

S1(config-if-range)#switchportmode access

S1(config-if-range)#noshutdown

S1(config-if-range)#exit

S1(config)#interfacerange e1/0-3

S1(config-if-range)#switchportmode access

S1(config-if-range)#noshutdown

S1(config-if-range)#exit

配置交换机 S1 的所有接入端口为 portfast 端口:

S1(config)#spanning-treeportfast default    规划所有接入模式端口为 portfast 端口

%Warning: this command enables portfast by default onall interfaces. You   交换机系统提示一些配置 portfast 后的注意事项

should nowdisable portfast explicitly on switched ports leading to hubs,

switches andbridges as they may create temporary bridging loops.

完成上述配置后,可以通过在交换机 S1 上执行 show spanning-tree 来查看当前所有的接入模式端口是否成为 portfast 端口(也叫边缘端口),如 图 所示,所有接入模式的端口已经成为边缘端口。

此时,用户可以通过协议分析器,去捕获分析 S1 任意一个被启动了 portfast 端口上的数据帧,如 图 所示,可以清晰的看出在 Portfast 端口上,仍然不断的以 秒为一个间隔发送 BPDU 报文,这将为测试 BPDU Filitering 功能做好准备。

接下来在全局模式下,启动 BPDUFiltering 功能,具体配置如下,当完成 BPDU 过滤功能后,可以通过 showspanning-tree summary 来查看 BPDU 的过滤功能是否被启动,如 图 所示,明显可看出 BPDU 过滤功能已经被启动。

在全局模式下启动 BPDU Filtering 功能:

S1(config)#spanning-treeportfast bpdufilter default

在完成上面的配置后,再次使有协议分析器软件捕获交换机 S1 的 E0/0 所产生的数据帧,可发现 S1 的 E0/0 接口不再发送任何 BPDU 报文,证明 BPDU Filtering 生效,至少证明了 BPDU 过滤功能将禁止 portfast 端口再发送 BPDU 报文。

接下来,需要来取证 BPDU 过滤功能在收到 BPDU 报文时的处理行为,现在到交换机 S2 上的E0/0 接口启动交换机功能( switchport ),相当于是让 S2 的 E0/0 向 S1 的 E0/0 发送 BPDU 报文。然后使用协议分析器去捕获 S1 的 E0/0 接口的数据帧。会如 图 所示,可以看到 S1 收到 S2( aa:bb:cc:00:02:00 )发来的 BDPU 报文,并开始发送自己( S1 )的 BPDU 报文。

然后可以在 S1 上通过执行 show spanning-tree 指令来查看当前生成树几个端口的状态,如 图所示,交换机 S1 的 E0/0 由于收到了 BPDU 报文, BPDU 过滤功能将其边缘端口( portfast )的角色回退到常规的生成树端口角色。但是它并不会像 BPDU Gruad 那样极端的半闭端口,如 图所示, S1 的 E0/0 端口仍然处于 Up 状态。

第二步: 现在来检测 BPDUFiltering 在接口模式下的效果,首先请将 S1 的 E1/0 从 portfast 端口的配置中脱离出来,然后再到该端口下启动接口级别的 BPDU 过滤功能,这两项具体的配置任务如下所示:

将交换机 S1 的 E1/0 接口从 portfast 中脱离:

S1(config)#interfacee1/0

S1(config-if)#spanning-treeportfast disable  禁用该端口的 portfast 功能

S1(config-if)#noshutdown

S1(config-if)#exit

在交换机 S1 的 E1/0 接口上启动 BPDU 的过滤功能:

S1(config)#interfacee1/0

S1(config-if)#spanning-treebpdufilter enable 启动 BPDU 的过滤功能

S1(config-if)#exit

如果此时使用协议分析器捕获交换机 S1 的 E1/0 的数据帧,不难发现,在 S1 的 E1/0 上不会有任何 BPDU 数据帧被发送。其实这一点在接口级别的配置和在全局模式的配置的最终效果是一样的,只是说接口级别可以不再依赖于 portfast 端口而存在。要反在接口级别的 BPDU 过滤与全局模式的 BPDU 过滤在收到 BPDU 报文时的处理方式则完全不一样了,全局模式采取的是回退端口到常规生成树端口,而接口级别则是完全忽略收到的 BPDU ,将不做任何处理。具体取证过程如下:

在交换机 S3 的 E1/0 端口上启动交换功能( switchport ),相当于使其向 S1 的 E1/0 接口发送BPDU 报文,此时会发现如 图 所示的情况, S1 的 E1/0 接口上会不断的收到 S3 发来的 BPDU报文,但是 S1 不会对这些报文做任何理采,也就是忽略( ignore )收到的 BPDU 报文,而且是无声无息的将其 ignore 掉。由于这种悄无声息的 ignore ,这个时候在网络可能会出现“一国两公”的局面,也就是一个整体的生成树网络可能存在多个根桥。

第三步: 一个有趣的现象:就是用户在全局模式下已经启动了 BPDU 过滤功能后,就即便是此时某个具体的接口没有收到任何 BPDU 的报文,然后当这个端口在正式连接进入网络并且 BPDU出站过滤开始之前,会有少量的 BPDU 被发送( Theinterfaces still send a few BPDUs at link-up before the switch begins to filteroutbound BPDUs )。但几秒中后就将进入 BPDU 过滤状态。

CIDR(无类别域间路由)地址块及其子网划分

CIDR地址块及其子网划分(内含原始IP地址分类及其子网划分的介绍)

1. 原始的IP地址表示方法及其分类(近几年慢慢淘汰)

转载-http://blog.csdn.net/dan15188387481/article/details/49873923
    IP地址是由4字节,32位表示的,为了表示方便,通常用点分十进制表示法,例如大家常见的:192.168.0.52,四个字节,通过点进行分隔,看起来十分清晰。IP地址的32位是由网络号+主机号组成的,也就是说这32位中,左边的某些连续位表示网络号,右边的某些连续位表示主机号,那么我们平常在讨论这一系列问题的时候,会有一个“网络地址”的概念,一般来说网络地址并不等于IP地址,网络地址就是IP地址中的网络号,然后主机号全部取0。IP地址可以表示为:
    IP地址 ::= {<网络号>, <主机号>},将主机号置0,就可以得到网络地址。
    最初的IP地址是被划分为5类,不过大家经常见到和谈到的只有3类,即A类、B类、C类,如图1所示:
图1 IP地址的分类
    从图1中可以看到基本的划分,由于本篇文章主要讲CIDR,所以对于IP地址最初的分类表示法就不过多讲述,在CIDR中已经废弃了IP地址的分类,无分类编址的命名也是由此得来的,所以目前基本已经不再采用所谓的A类、B类、C类的IP地址分类表示法,不过作为比较经典的过去使用的方法,大家了解一下即可。图1中表示得十分清楚,大家从左边看起,搞明白每一类地址的前缀、网络地址、主机地址的位数即可,通过这个位数,大家可以计算出每类网络的可支配网络数以及可连接主机数,对相应的位数求2的幂即可。
图2 IP地址的指派范围和一般不使用的IP地址
    从图2中,我们可以清晰地看出来每类网络所指派的网络数和主机数,以及哪些地址一般不使用,这里需要注意一点,就是最大可指派网络数中会减掉2或者1,其实后面的最大主机数大家计算一下会发现都减去了2,这是为什么呢?这是因为A类的前缀是0,所以网络号加上前缀的8位可以出现全0的情况,而且127(01111111)作为环回地址用来测试,所以不指派,故而需要减去2,B类和C类的前缀分别是10和110,所以网络号加上前缀不可能出现全0的情况,不过B类的128.0.0.0和C类的192.0.0.0也是不指派的,所以B类和C类只需要减去这一个不指派的网络地址即可。那么主机数为什么都减去2呢?这是因为主机号分别为全0和全1的情况一般是不分配的,这两个特殊的地址有特殊的用途,所以要减去2。
    关于分类的IP地址就介绍到这里,还要强调一下,目前已经不采用分类表示法,所以大家重点关注CIDR表示法。

2. 基本的子网划分方法

    在讲述CIDR之前我们先来简单介绍一下基本的子网划分方法。
    上面所述的IP地址表示方法可以称之为两级IP地址,即网络号和主机号组成的IP地址。但是由于IP地址空间的利用率有时很低、给每一个物理网络分配一个网络号会使路由表变得太大以及两级IP地址不够灵活等原因,就出现了所谓的子网划分。子网划分实际上就是将原来的两级IP地址转变为三级IP地址,表示如下:
    IP地址 ::= {<网络号>, <子网号>, <主机号>}
    从上面的表示可以看出,子网划分就是在32位中借了几位用来表示子网号,注意,这里的网络号的位数是不变的,子网号是从主机号中借走的,所以大家想一想就可以明白,子网划分实际上就是减少了主机数,分配到不同的子网,每个子网包含一定的主机数。子网的概念也就可以理解为,将一个大的网络在其内部划分成几个小的子网,但是需要注意的是,对于该网络的外层来看,还是一个大的网络,只有该网络内部才可以看到其进行了子网划分。例如:某个机构给某高校分配了一个大的网络,而该高校内部又进行了子网划分,将不同的子网分配给不同的学院,此时对于该机构来说,该高校还是一个大的网络,在其看来并没有变化,只有该高校自己才知道自己内部又进行了子网划分。
    子网划分中有一个十分重要的概念就是子网掩码。  那么什么是子网掩码呢?大家想一想,在传输的过程中,路由器是怎么识别子网划分后的IP地址中的网络地址的?如果不提供任何信息,路由器肯定还是傻傻分不清楚,所以就出现了子网掩码。子网掩码其实很简单,就是将网络号和子网号对应的位全部置1,将主机号对应的位置0,就得到了子网掩码。例如:一个IP地址是145.13.3.10,其是B类地址,假如我们用8位来表示子网号,那么网络号加上子网号一共24位,所以将这24位置1,其余置0,那么子网掩码就是255.255.255.0。紧接着,我们可以看出来,用子网掩码和IP地址逐位进行“与”运算,就可以得到网络地址,所以该IP地址的网络地址就是145.13.3.0,下面我从《计算机网络第5版》谢希仁编著的书中摘取了两个例子,帮助大家理解。
图3 子网划分的例题
    从上面的例子中可以看出子网掩码的使用和计算,这两个例子也说明了同样的IP地址和不同的子网掩码可以得出相同的网络地址。但是不同的掩码效果是不同的,因为它们的子网号和主机号的位数是不一样的,从而可划分的子网数和每个子网中的最大主机数都是不一样的。
    最后,我们需要注意的是,在之前基本的子网划分中,借走主机号两位,只能划分4-2=2个子网,这是因为全0和全1不使用,一般至少借走两位,其他位数的划分是一样的,都需要减去2,但是CIDR表示法中的子网划分就不用减2,因为其也使用全0和全1。

3. CIDR概述及其地址块计算

  CIDR中文全称是无分类域间路由选择,英文全称是Classless Inter-Domain Routing,在平常,大家多称之为无分类编址,它也是构成超网的一种技术实现。CIDR在一定程度上解决了路由表项目过多过大的问题。CIDR之所以称为无分类编址,就是因为CIDR完全放弃了之前的分类IP地址表示法,它真正消除了传统的A类、B类、C类地址以及划分子网的概念,它使用如下的IP地址表示法:

    IP地址 ::= {<网络前缀>, <主机号>} / 网络前缀所占位数
    CIDR仅将IP地址划分为网络前缀和主机号两个部分,可以说又回到了二级IP地址的表示,不过大家要注意,最后面用“/”斜线分隔,在其后写上了网络前缀所占的位数,这样就不需要告知路由器地址掩码,仅需要通过网络前缀所占的位数就可以得到地址掩码,为了统一,CIDR中的地址掩码依然称为子网掩码。
    CIDR表示法给出任何一个IP地址,就相当于给出了一个CIDR地址块,这是由连续的IP地址组成的,所以CIDR表示法构成了超网,实现了路由聚合,即从一个IP地址就可以得知一个CIDR地址块。例如:已知一个IP地址是:128.14.35.7/20,那么这个已知条件告诉大家的并不仅仅是一个IP地址这么简单,我们来分析一下。
    128.14.35.7/20 = 10000000  00001110  00100011  00000111
    即前20位是网络前缀,后12位是主机号,那么我们通过令主机号分别为全0和全1就可以得到一个CIDR地址块的最小地址和最大地址,即
    最小地址是:128.14.32.0      10000000  00001110  00100000  00000000 
    最大地址是:128.14.47.255  10000000  00001110  00101111 11111111     
    子网掩码是:255.255.240.0  11111111  11111111  11110000  00000000 
    因此就可以看出来,这个CIDR地址块可以指派(47-32+1)*256=4096个地址,这里没有把全0和全1除外。

4. CIDR子网划分

    在CIDR表示法中也可以进行进一步的子网划分,和前面的子网划分类似,我们只需要从主机号中借走一定的位数即可,这里与前面的基本子网划分不同,借走2位时可以划分成4个子网,不用减2,其他位数类似。下面通过一个例子来讲解CIDR中的子网划分。
    例:某个机构拥有一个大的CIDR地址块,即206.0.64.0/18,现在某个高校需要申请一个较大的CIDR地址块以供学校使用,学校内部又分为4个系,由于每个系的人数不一样,所以要给人数较多的系分配较多的IP地址,人数较少的系分配较少的IP地址,现在采用以下的分配方案:
    机构分配给该高校一个CIDR地址块:206.0.68.0/22,然后该高校内部的分配方案如下:
    一系:206.0.68.0/23,一系内部又分为206.0.68.0/25、206.0.68.128/25、206.0.69.0/25和206.0.69.128/25四个子网。
    二系:206.0.70.0/24,二系内部又分为206.0.70.0/26、206.0.70.64/26、206.0.70.128/26和206.0.70.192/26四个子网。
    三系:206.0.71.0/25,三系内部又分为206.0.71.0/26和206.0.71.64/26两个子网。
    四系:206.0.71.128/25,四系内部又分为206.0.71.128/26和206.0.71.192/26两个子网。
    请分析以上方案划分的具体细节。
   答:这是一个CIDR子网划分中比较复杂的例子,如果大家能分析透彻这个例子,那么对于CIDR的子网划分的计算就基本不在话下了。
    我们一步一步来讨论:
    第一,这个机构拥有的地址块是206.0.64.0/18 =206.0.0100 0000.0000 0000/18,网络前缀是18位,所以其
    最小地址是:206.0.64.0/18      206.0.0100 0000.0000 0000/18
    最大地址是:206.0.127.255/18 = 206.0.0111 1111.1111 1111/18
    子网掩码是:255.255.192.0/18 = 1111 1111.1111 1111.1100 0000.0000 0000/18
    拥有的地址数:(127-64+1)*(255-0+1)=16384
    然后,我们来看一下这个机构给该高校分配的CIDR地址块,即206.0.68.0/22,由此可以看出来网络前缀由18增加到了22,所以该机构相当于将其CIDR地址块划分成了16个子块即子网,然后给该高校了第二个子网,即206.0.0100 0100.0/22,黑色加粗的部分是原来的网络前缀,后面红色部分类似于前面介绍的子网号,由于是4位,所以可以从0000~1111,共16个子网,0001自然就是第二个子网。
    第二,既然高校拥有了机构的第二个子网的CIDR地址块206.0.68.0/22 = 206.0.0100 0100.0/22,其网络前缀是22位,所以其
    最小地址是:206.0.68.0/22      206.0.0100 0100.0000 0000/22
    最大地址是:206.0.71.255/22  206.0.0100 0111.1111 1111/22
    子网掩码是:255.255.252.0/22 = 1111 1111.1111 1111.1111 1100.0000 0000/22
    拥有的地址数:(71-68+1)*(255-0+1)=1024
    然后该高校内部又对这个CIDR地址块进行了划分,进一步得到了高校内部的子网,紧接着我们来看看一系的CIDR地址块是怎么得到的。
    第三,一系的CIDR地址块是206.0.68.0/23,可以看出来其网络前缀相对于高校的CIDR地址块来说增加了1位,说明高校首先将其CIDR地址块划分成了2个子网,其中一个给了一系。那么这两个子网分别是:一系的:206.0.68.0/23 = 206.0.0100 0100.0/23剩余的(记为余1):206.0.70.0/23 =206.0.0100 0110.0/23,注意其中的红色部分就是新增的这一位,用来标志两个子网。
    那么,一系的
    最小地址是:206.0.68.0/23      206.0.0100 0100.0000 0000/23
    最大地址是:206.0.69.255/23  206.0.0100 0101.1111 1111/23
    子网掩码是:255.255.254.0/23 = 1111 1111.1111 1111.1111 1110.0000 0000/23
    拥有的地址数:(69-68+1)*(255-0+1)=512
    余1的
    最小地址是:206.0.70.0/23      206.0.0100 0110.0000 0000/23
    最大地址是:206.0.71.255/23  206.0.0100 0111.1111 1111/23
    子网掩码是:255.255.254.0/23 = 1111 1111.1111 1111.1111 1110.0000 0000/23
    拥有的地址数:(71-70+1)*(255-0+1)=512
    现在,一系的CIDR地址块已经很明确,然后一系内部又进行了划分,即又分为206.0.68.0/25、206.0.68.128/25、206.0.69.0/25和206.0.69.128/25四个子网,网络前缀从23位变成了25位,相当于占用了主机号两位,所以可以划分为4个子网,分别对应00、01、10、11这四个子网,这四个子网的最小地址、最大地址以及子网掩码和拥有的地址数按照上述的方法就可以得到,这个比较简单,建议大家可以自己手动计算一下,正好看看自己掌握了多少,这里就不再给出这四个子网的细节。
    第四,一系明确以后,就要考虑其他系的划分,可以看到二系分配到的CIDR地址块是206.0.70.0/24,可以看出来其网络前缀相对于余1的CIDR地址块来说增加了1位,说明余1的CIDR地址块被划分成了2个子网,其中一个给了二系。那么这两个子网分别是:二系的:206.0.70.0/24 = 206.0.0100 0110.0/24剩余的(记为余2):206.0.71.0/24 =206.0.0100 0111.0/24,注意其中的红色部分就是新增的这一位,用来标志两个子网。
    那么,二系的
    最小地址是:206.0.70.0/24      206.0.0100 0100.0000 0000/24
    最大地址是:206.0.70.255/24  206.0.0100 0100.1111 1111/24
    子网掩码是:255.255.255.0/24 = 1111 1111.1111 1111.1111 1111.0000 0000/24
    拥有的地址数:(70-70+1)*(255-0+1)=256
    余2的
    最小地址是:206.0.71.0/24      206.0.0100 0111.0000 0000/24
    最大地址是:206.0.71.255/24  206.0.0100 0111.1111 1111/24
    子网掩码是:255.255.255.0/24 = 1111 1111.1111 1111.1111 1111.0000 0000/24
    拥有的地址数:(70-70+1)*(255-0+1)=256
    现在,二系的CIDR地址块已经很明确,然后二系内部又进行了划分,即又分为206.0.70.0/26、206.0.70.64/26、206.0.70.128/26和206.0.70.192/26四个子网,网络前缀从24位变成了26位,相当于占用了主机号两位,所以可以划分为4个子网,分别对应00、01、10、11这四个子网,这四个子网的最小地址、最大地址以及子网掩码和拥有的地址数按照上述的方法就可以得到,这个比较简单,建议大家可以自己手动计算一下,正好看看自己掌握了多少,这里就不再给出这四个子网的细节。
    第五,二系明确以后,就要考虑其他系的划分,可以看到三系分配到的CIDR地址块是206.0.71.0/25,而四系分配到的CIDR地址块是206.0.71.128/25,可以看出来其网络前缀相对于余2的CIDR地址块来说增加了1位,说明余2的CIDR地址块被划分成了2个子网,其中一个给了三系,另外一个给了四系。那么这两个子网分别是:三系的:206.0.71.0/25 = 206.0.71.0000 0000/25四系的:206.0.71.128/25 = 206.0.71.1000 0000/25,注意其中的红色部分就是新增的这一位,用来标志两个子网。

    那么,三系的
    最小地址是:206.0.71.0/25      206.0.0100 0100.0000 0000/25
    最大地址是:206.0.71.127/25  206.0.0100 0100.0111 1111/25
    子网掩码是:255.255.255.128/25 = 1111 1111.1111 1111.1111 1111.1000 0000/25
    拥有的地址数:(71-71+1)*(127-0+1)=128
   
    四系的
    最小地址是:206.0.71.128/25  206.0.0100 0100.1000 0000/25
    最大地址是:206.0.71.255/25  206.0.0100 0100.1111 1111/25
    子网掩码是:255.255.255.128/25 = 1111 1111.1111 1111.1111 1111.1000 0000/25
    拥有的地址数:(71-71+1)*(255-128+1)=128
    现在,三系和四系的CIDR地址块已经很明确,到目前为止,该高校已经将所有的CIDR地址块分配给了四个系,一系有512个地址,二系有256个地址,三系和四系各有128个地址。然后三系内部又进行了划分,即又分为206.0.71.0/26和206.0.71.64/26两个子网,网络前缀从25位变成了26位,相当于占用了主机号一位,所以可以划分为2个子网,分别对应0、1这两个子网,同时,四系内部也又进行了划分,即又分为206.0.71.128/26和206.0.71.192/26两个子网,网络前缀从25位变成了26位,相当于占用了主机号一位,所以可以划分为2个子网,分别对应0、1这两个子网,三系和四系各自的两个子网的最小地址、最大地址以及子网掩码和拥有的地址数按照上述的方法就可以得到,这个比较简单,建议大家可以自己手动计算一下,正好看看自己掌握了多少,这里就不再给出这些子网的细节。
    至此,我们已经分析完了本题,上面都是我一位位自己敲上去的,所以大家看完后想要稳固掌握的话建议自己也计算一遍,如果发现我有错误,欢迎大家指正。
    最后,我用一副图来展示下这个划分过程。
图4 上述例题的图解

5. 总结

    总之,目前已经广泛使用CIDR表示法,之前的分类方法和子网划分已经很少使用,所以大家要重点掌握CIDR表示法及其子网划分,了解以前的基本分类和划分方法即可。    
    上述内容都是本人一个字一个字敲上去的,那些粗体和红色的标注也是我细心注释的,图4是我按照分析的流程一步步画的,转载请注明出处,欢迎大家指正,谢谢。

IRF-H3C 虚拟化技术

1、概述

IRF(Intelligent Resilient Framework,智能弹性架构)是H3C自主研发的软件虚拟化技术。它的核心思想是将多台设备通过IRF物理端口连接在一起,进行必要的配置后,虚拟化成一台“分布式设备”。理解为堆叠有助于我们更快理解

2、工作原理

IRF分为四阶段:物理连接、设备间通过IRF端口进行信息收集、选举主备关系、IRF自行维护。只需了解选举规则以及分裂处理机制,其它信息不必深入。如果有需要可以单独debugIRF信息即可。

选举规则: 根据IRF的优先级进行选举,Priority值大的则为MASTER,值小的为SLAVE。

分裂机制: (1)IRF分裂分为两种情况,主机或者备机整机down掉,那么OK直接更换新设备即可。

          (2)如果是IRF链路或者端口down掉,主备之间需要IRF的心跳线(MAD检测)彼此互换IRF信息.                为避免二层信息混乱,IRF是让备机完全处于停机状态,It really doesnt work .

3、常用名词

IRF合并、IRF分裂、IRF端口、IRF角色、IRF主备

4、IRF配置示例

(1)配置A机为MASTER

#设成员号及优先级

irf mem 1 pri 4

#把需要加入irf-port的端口down掉,shutdown XGE1/2/1,XGE1/2/2。并加入相应的IRF group组

interface Ten-GigabitEthernet1/2/1

shut

interface Ten-GigabitEthernet1/2/2

shut

irf-port 1/1

des IRF_PORT_1

port group interface Ten-GigabitEthernet1/2/1 

port group interface Ten-GigabitEthernet1/2/2 

#重要一步,激活 IRF,很多人会忽略这条命令。

irf-port  configuration active 

#保存配置

save

(2)配置B机为SLAVE

#设成员号及优先级,H3C设备默认都是mem 1,需要retu为mem 2。

irf mem 1 retu 2

irf mem 2 pri 3

#把需要加入irf-port的端口down掉,shutdown XGE2/2/1,XGE2/2/2。并加入相应的IRF group组

interface Ten-GigabitEthernet2/2/1

shut

interface Ten-GigabitEthernet2/2/2

shut

irf-port 2/2

des IRF_PORT_2

port group interface Ten-GigabitEthernet2/2/1 

port group interface Ten-GigabitEthernet2/2/2 

#重要一步,激活 IRF

irf-port  configuration active 

#保存配置

save

(3)A、B机合并

# 将A、B 的irf-port组的物理端口undo shut,并且保存配置。

# 按图示交叉连接LC跳线,slave设备会重启。IRF合并需要时间,会有提示出现。

   wait a moment。

   System is busy with warm backup, please wait …

# display信息查看IRF合并情况

[fy302-5500-sw1]dis irf configuration            

 MemberID NewID    IRF-Port1                     IRF-Port2

  1       1        Ten-GigabitEthernet1/2/1      disable

                   Ten-GigabitEthernet1/2/2

  2       2        disable                       Ten-GigabitEthernet2/2/1

                                                 Ten-GigabitEthernet2/2/2

# 共享一个板载MAC地址

[fy302-5500-sw1]dis irf topology            

                           Topology Info

 ————————————————————————-

               IRF-Port1                IRF-Port2

 Switch    Link       neighbor      Link       neighbor    Belong To

 2         DIS        —            UP         1           5cdd-70cf-01ea

 1         UP         2             DIS        —          5cdd-70cf-01ea

# 查看主备关系

[fy302-5500-sw1]dis irf                

Switch  Role   Priority  CPU-Mac         Description

 *+1   Master  4         5cdd-70cf-01ea  —–

   2   Slave   3         5cdd-70cf-196a  —–

————————————————–

 * indicates the device is the master.

 + indicates the device through which the user logs in.

 The Bridge MAC of the IRF is: 5cdd-70cf-01b7

 Auto upgrade                : yes

 Mac persistent              : always

 Domain ID                   : 3025500581

5、IRF检测机制

核心与接入都为IRF设备,并且通过TRUNK上行。核心设备一般H3C用10508系列、接入H3C S5500系列。

双IRF设备互连则需要设置IRF检测机制,就是防止分裂后出现问题影响网络。此处介绍的MAC检测机制 

IRF 链路故障会导致一个 IRF 变成两个新的IRF 。这两个 IRF 拥有相同的 IP 地址等三层配置,会引

起地址冲突,导致故障在网络中扩大。为了提高系统的可用性,当IRF 分裂时我们就需要一种机制,

能够检测出网络中同时存在多个IRF ,并进行相应的处理尽量降低IRF 分裂对业务的影响。

(1)LACP(Link Aggregation Control Protocol ,链路聚合控制协议)通过LACP传送IRF检测包

(2)BFD(Bidirectional Forwarding Detection,双向转发检测)单独配置心跳线来进行IRF冲突检测

(3)拓扑示例

上图情况接入与核心设备A、B机都是通过万兆口做IRF合并。此环境中,共有两组IRF,据H3C官方说法配置MAD检测则需要建立不同IRF domain域,否则会造成检测异常,从而可能会影响网络业务。

(4)MAD检测配置

# 核心设备合并成功后,进行如下MAD检测配置。

irf domain 201512900            //号码根据需要自己设定

irf mac-address persistent always

irf auto-update enable

undo irf link-delay

irf member 1 priority 4

irf member 2 priority 3

# 接入设备合并成功后,进行如下MAD检测配置。

irf domain 201512900            //号码根据需要自己设定

irf mac-address persistent always

irf auto-update enable

undo irf link-delay

irf member 1 priority 4

irf member 2 priority 3

注意:domain域不能相同

(5)BFD检测配置 

对于网络要求严格的客户,使用私网地址需要报备一下。此处BFD只做心跳,不上行、广播、以及任何其它内容。我们需要单独在A、B机各找出一个物理口来做为心跳口,连接线普通网线即可。注意:mad检测端口生成树要undo掉。

1、BFD私有VLAN VLAN 2000

2、BFD连接线使用网线

3、BFD私有地址 A、B机地址 192.168.10.1 192.168.10.2/24

# 核心设备配置如下

vlan 2000

description BFD_MAD

quit

interface Vlan-interface2000

 description BFD_MAD

 mad bfd enable

 mad ip address 192.168.10.1 255.255.255.252 member 1

 mad ip address 192.168.10.2 255.255.255.252 member 2

quit

interface GigabitEthernet1/0/48

 port link-mode bridge

 description description BFD_LINK-MASTER

 port access vlan 2000

 stp disable

interface GigabitEthernet2/0/48

 description description BFD_LINK-Slave

 port access vlan 2000

 stp disable

quit

# 接入配置同上,此处省略。 

注意:MAD检测与BFD检测不冲突,可以同时存在。

端口出现err-disabled现象

原文地址:端口出现err-disabled现象作者:sunny

关于接口处于err-disable的故障排查

故障症状:
线路不通,物理指示灯灭或者显示为橙色(不同平台指示灯状态不同)

show interface 输出显示接口状态:
FastEthernet0/47 is down, line protocol is down (err-disabled)
接口状态是err-disable。

sw1#show interfaces status

Port Name Status Vlan Duplex Speed Type
Fa0/47 err-disabled 1 auto auto 10/100BaseTX

如果出现了接口状态为err-disable,show interfaces status err-disabled命令能查看触发err-disable的原因。
下面示例原因为bpduguard,在连接了交换机的端口配置了spanning-tree bpduguard enable。

sw1#show interfaces status err-disabled

Port Name Status Reason
Fa0/47 err-disabled bpduguard

接口产生err-disable的原因可以由以下的命令来查看,系统缺省的配置是所有列出的原因都能导致接口被置为err-disable。

sw1#show errdisable detect
ErrDisable Reason Detection status
—————– —————-
udld Enabled
bpduguard Enabled
security-violatio Enabled
channel-misconfig Enabled
psecure-violation Enabled
dhcp-rate-limit Enabled
unicast-flood Enabled
vmps Enabled
pagp-flap Enabled
dtp-flap Enabled
link-flap Enabled
l2ptguard Enabled
gbic-invalid Enabled
loopback Enabled
dhcp-rate-limit Enabled
unicast-flood Enabled

从列表中,我们可以看出常见的原因有udld,bpduguard,link-flap以及loopback等。
具体由什么原因导致当前接口err-disable可以由show interface status err-disable来查看。

在接口模式下采用shutdown,no shutdown进行手动的激活。

在缺省配置下,一旦接口被置为err-disable,IOS将不会试图恢复接口。
这个可以由show errdisable recovery来查看,timer status下面所有的值都是disable。
下面的示例中,由于手工配置了bpduguard恢复,所以timer status的值变为Enable。

sw1#show errdisable recovery
ErrDisable Reason Timer Status
—————– ————–
udld Disabled
bpduguard Enabled
security-violatio Disabled
channel-misconfig Disabled
vmps Disabled
pagp-flap Disabled
dtp-flap Disabled
link-flap Disabled
l2ptguard Disabled
psecure-violation Disabled
gbic-invalid Disabled
dhcp-rate-limit Disabled
unicast-flood Disabled
loopback Disabled

Timer interval: 300 seconds

Interfaces that will be enabled at the next timeout:

Interface Errdisable reason Time left(sec)
——— —————– ————–
Fa0/47 bpduguard 217

配置IOS重新激活errdisable的接口,使用以下命令:

sw1(config)#errdisable recovery cause bpduguard

sw1(config)#errdisable recovery cause ?
all Enable timer to recover from all causes
bpduguard Enable timer to recover from BPDU Guard error disable state
channel-misconfig Enable timer to recover from channel misconfig disable state
dhcp-rate-limit Enable timer to recover from dhcp-rate-limit error disable state
dtp-flap Enable timer to recover from dtp-flap error disable state
gbic-invalid Enable timer to recover from invalid GBIC error disable state
l2ptguard Enable timer to recover from l2protocol-tunnel error disable state
link-flap Enable timer to recover from link-flap error disable state
loopback Enable timer to recover from loopback detected disable state
pagp-flap Enable timer to recover from pagp-flap error disable state
psecure-violation Enable timer to recover from psecure violation disable state
security-violation Enable timer to recover from 802.1x violation disable state
udld Enable timer to recover from udld error disable state
unicast-flood Enable timer to recover from unicast flood disable state
vmps Enable timer to recover from vmps shutdown error disable

配置完上述命令后,IOS在一段时间后试图恢复被置为err-disable的接口,这段时间缺省为300秒。
但是,如果引起err-disable的源没有根治,在恢复工作后,接口会再次被置为err-disable。

调整err-disable的超时时间,可以使用以下命令:
sw1(config)#errdisable recovery interval ?
<30-86400> timer-interval(sec)
可以调整在30-86400秒,缺省是300秒。

如果产生err-disable的原因是udld,下面有一条命令非常管用:
sw1#udld reset
No ports are disabled by UDLD.

同时,接口在被置为err-disable的时候,通常有一系列的日志产生,如下:

*Mar 15 15:47:19.984: %SPANTREE-2-BLOCK_BPDUGUARD: Received BPDU on port FastEthernet0/47 with BPDU Guard enabled. Disabling port.

sw1#
*Mar 15 15:47:19.984: %PM-4-ERR_DISABLE: bpduguard error detected on Fa0/47, putting Fa0/47 in err-disable state
sw1#
*Mar 15 15:47:21.996: %LINK-3-UPDOWN: Interface FastEthernet0/47, changed state to down
收集这些日志也非常管用。
所以建议配置一个syslog server,收集log信息。

*************************
sw1#show interfaces status

Port Name Status Vlan Du…

***************

开启errdisable功能,这样可以使用show errdisable来查看引发errdisable的原因是什么,再更加信息内容进行解决。
******************

你要是想不影响使用的话,先用
no errdisable detect cause loopback
执行一下,将已经死掉的端口,no sh 一下
如果没问题,肯定是环路了,你可再找时间,对怀疑有问题的switch用拔插法,一个一个拔掉网线去查,当然,有更有效的方法,你可查看有问题的switch的所有rj45和gi口的状态,哪个有errdisable信息哪个就有问题。
switch#show interfaces status err-disabled

Port     Name           Status     Reason
Fa0/22               err-disabled link-flap
Fa0/37   For office in 100K err-disabled link-flap
Fa0/41   unknow         err-disabled link-flap
Fa0/42   Training Dc066   err-disabled link-flap
Fa0/45   Production line VM err-disabled link-flap
switch#show errdisable detect
ErrDisable Reason   Detection status
—————–   —————-
pagp-flap         Enabled
dtp-flap         Enabled
link-flap         Enabled
l2ptguard         Enabled
gbic-invalid       Enabled
loopback         Enabled
switch#show interfaces status err-disabled

Port     Name           Status     Reason
Fa0/22               err-disabled link-flap
Fa0/37   For office in 100K err-disabled link-flap
Fa0/41   unknow         err-disabled link-flap
Fa0/42   Training Dc066   err-disabled link-flap
Fa0/45   Production line VM err-disabled link-flap
switch#sh errdisable flap-values
ErrDisable Reason   Flaps   Time (sec)
—————–   ——   ———-
pagp-flap            30
dtp-flap              30
link-flap            10 ( link-flap 这就是因为链路质量不好导致的)

关闭errdisable detect
switch#no errdisable detect cause all

————————————————————————————————–

我查了一下cisco网站关于错误的说明
Error Message PM-4-ERR_DISABLE: [chars] error detected on [chars], putting [chars] in err-disable state.

Explanation This message means that the port manager detected a misconfiguration or misbehavior and placed the interface in an error-disabled state. A recovery is attempted after the configured retry time (the default is 5 minutes). The first [chars] is the error, and the second and third [chars] are the affected interfaces.

Recommended Action Copy the error message exactly as it appears on the console or in the system log. Enter the show tech-support privileged EXEC command to gather data that might provide information about the error. If you cannot determine the nature of the error from the error message or from the show tech-support command display, call your Cisco technical support representative, and provide the representative with the gathered information.

(2)检查了配置,没有发现错误。后来我想可能是链路匹配问题,所以在2950G-48端加了如下设置:
switchport nonegotiate

(3)其他方法:更换GBIC模块后正常  

加上述设置后,光纤通路正常

参考1

1、思科CE对端口有一种保护功能——errdisable功能,link_flap:中文翻译就是当端口在10S内发生 5次或者 5次以上的Up、Down时,CE会将端口置为 Err-disable模式(即:一种端口错误关闭状态)

2、触发link-falp的原因有以下几种:线缆松动、双工不匹配、以及板卡故障、对端网元端口设置导致

3、查看端口err-disable状态指令:show errdisable detect

4、思科CE对端口的保护功能还有一个自动恢复功能,指令为

errdisable recovery cause Link-flaperrdisable recovery interval   自动恢复延时自动恢复延时的设置范围为30-86400秒 思科CE默认配置为 300秒。

5、查看端口err-disable recovery状态的指令:show errdisable recovery

6、维护中应当加强了解对端网元的端口功能,了解在对端网元重启过程中是否会有 link-flap现象发生,如果有这种情况的话,就一定要注意设计方案中注明这种端口保护机制和恢复机制的配置,避免出现故障。

参考2

现象:网络线路不通,物理指示灯灭或者显示为橙色(不同平台指示灯状态不同)。

第一步,查看端口状态:show interface :

FastEthernet0/47 is down, line protocol is down (err-disabled)

接口状态是err-disable。

要查看err-disableb出现的原因用命令:show interfaces status err-disabled。

下面示例原因为bpduguard,在连接了交换机的端口配置了spanning-tree bpduguard enable。

sw1#show interfaces status err-disabled

Port Name Status Reason

Fa0/47 err-disabled bpduguard

接口产生err-disable的原因可以由以下的命令来查看,系统缺省的配置是所有列出的原因都能导致接口被置为err-disable。

sw1#show errdisable detect

ErrDisable Reason Detection status

—————– —————-

udld Enabled

bpduguard Enabled

security-violatio Enabled

channel-misconfig Enabled

psecure-violation Enabled

dhcp-rate-limit Enabled

unicast-flood Enabled

vmps Enabled

pagp-flap Enabled

dtp-flap Enabled

link-flap Enabled

l2ptguard Enabled

gbic-invalid Enabled

loopback Enabled

dhcp-rate-limit Enabled

unicast-flood Enabled

从列表中,我们可以看出常见的原因有udld,bpduguard,link-flap以及loopback等。

具体由什么原因导致当前接口err-disable可以由show interface status err-disable来查看。

如果已经排除引起err-disable的原因,在接口模式下可以采用shutdown,no shutdown进行手动的激活。

在缺省配置下,一旦接口被置为err-disable,IOS将不会试图恢复接口。

这个可以由show errdisable recovery来查看,timer status下面所有的值都是disable。

下面的示例中,由于手工配置了bpduguard恢复,所以timer status的值变为Enable。

sw1#show errdisable recovery

ErrDisable Reason Timer Status

—————– ————–

udld Disabled

bpduguard Enabled

security-violatio Disabled

channel-misconfig Disabled

vmps Disabled

pagp-flap Disabled

dtp-flap Disabled

link-flap Disabled

l2ptguard Disabled

psecure-violation Disabled

gbic-invalid Disabled

dhcp-rate-limit Disabled

unicast-flood Disabled

loopback Disabled

Timer interval: 300 seconds

Interfaces that will be enabled at the next timeout:

Interface Errdisable reason Time left(sec)

——— —————– ————–

Fa0/47 bpduguard 217

配置IOS重新激活errdisable的接口,使用以下命令:

sw1(config)#errdisable recovery cause bpduguard

sw1(config)#errdisable recovery cause ?

all Enable timer to recover from all causes

bpduguard Enable timer to recover from BPDU Guard error disable state

channel-misconfig Enable timer to recover from channel misconfig disable state

dhcp-rate-limit Enable timer to recover from dhcp-rate-limit error disable state

dtp-flap Enable timer to recover from dtp-flap error disable state

gbic-invalid Enable timer to recover from invalid GBIC error disable state

l2ptguard Enable timer to recover from l2protocol-tunnel error disable state

link-flap Enable timer to recover from link-flap error disable state

loopback Enable timer to recover from loopback detected disable state

pagp-flap Enable timer to recover from pagp-flap error disable state

psecure-violation Enable timer to recover from psecure violation disable state

security-violation Enable timer to recover from 802.1x violation disable state

udld Enable timer to recover from udld error disable state

unicast-flood Enable timer to recover from unicast flood disable state

vmps Enable timer to recover from vmps shutdown error disable

配置完上述命令后,IOS在一段时间后试图恢复被置为err-disable的接口,这段时间缺省为300秒。

但是,如果引起err-disable的源没有根治,在恢复工作后,接口会再次被置为err-disable。

调整err-disable的超时时间,可以使用以下命令:

sw1(config)#errdisable recovery interval ?

<30-86400> timer-interval(sec)

可以调整在30-86400秒,缺省是300秒。

如果产生err-disable的原因是udld,下面有一条命令非常管用:

sw1#udld reset

No ports are disabled by UDLD.

同时,接口在被置为err-disable的时候,通常有一系列的日志产生,如下:

*Mar 15 15:47:19.984: %SPANTREE-2-BLOCK_BPDUGUARD: Received BPDU on port FastEthernet0/47 with BPDU Guard enabled. Disabling port.

sw1#

*Mar 15 15:47:19.984: %PM-4-ERR_DISABLE: bpduguard error detected on Fa0/47, putting Fa0/47 in err-disable state

sw1#

*Mar 15 15:47:21.996: %LINK-3-UPDOWN: Interface FastEthernet0/47, changed state to down

收集这些日志也非常管用。

所以建议配置一个syslog server,收集log信息。

*************************

sw1#show interfaces status

Port Name Status Vlan Du…

***************

开启errdisable功能,这样可以使用show errdisable来查看引发errdisable的原因是什么,再更加信息内容进行解决。

******************

你要是想不影响使用的话,先用

no errdisable detect cause loopback

执行一下,将已经死掉的端口,no sh 一下

如果没问题,肯定是环路了,你可再找时间,对怀疑有问题的switch用拔插法,一个一个拔掉网线去查,当然,有更有效的方法,你可查看有问题的switch的所有rj45和gi口的状态,哪个有errdisable信息哪个就有问题。

switch#show interfaces status err-disabled

Port Name Status Reason

Fa0/22 err-disabled link-flap

Fa0/37 For office in 100K err-disabled link-flap

Fa0/41 unknow err-disabled link-flap

Fa0/42 Training Dc066 err-disabled link-flap

Fa0/45 Production line VM err-disabled link-flap

switch#show errdisable detect

ErrDisable Reason Detection status

—————– —————-

pagp-flap Enabled

dtp-flap Enabled

link-flap Enabled

l2ptguard Enabled

gbic-invalid Enabled

loopback Enabled

switch#show interfaces status err-disabled

Port Name Status Reason

Fa0/22 err-disabled link-flap

Fa0/37 For office in 100K err-disabled link-flap

Fa0/41 unknow err-disabled link-flap

Fa0/42 Training Dc066 err-disabled link-flap

Fa0/45 Production line VM err-disabled link-flap

switch#sh errdisable flap-values

ErrDisable Reason Flaps Time (sec)

—————– —— ———-

pagp-flap 3 30

dtp-flap 3 30

link-flap 5 10 ( link-flap 这就是因为链路质量不好导致的)

也可以一次性的关闭errdisable detect功能

switch#no errdisable detect cause all

【STP】生成树协议习题案例

CASE1:
首先选Root,由于大家的网桥优先级都相等,因此MAC最小的SW1胜出,成为根桥。
其次在非根桥SW2及SW3上各选举一个根端口RP,如图所示,因为这些端口到达SW1根路径开销最小所以胜出。最后在每个段上选择一个指定端口DP,SW1是根桥,所有端口都是指定端口DP,最后比较SW2、SW3之间直连链路的两个接口。SW2会从接口上收到SW3发来的BPDU,SW3也会收到SW2发来的BPDU。按照如下顺序进行PK(都是比小):
 
先比较BPDU中的RootID,值都是SW1的桥ID,比不出来。再比较到根的开销,由于网络中所有接口的带宽都是100M,因此到根的开销相等,还是比不出来,那么就再往下比,比BPDU中的桥ID字段,由于SW2的MAC地址更小,因此SW2发送的BPDU更优,所以SW2胜出,它的端口成为指定端口。
根桥的选举就不说了,接下去看RP,SW2两个接口,都会收到BPDU,而上联到Root的接口到根的路径开销更小,所以上联口为RP。 SW3却不一样,由于连接到Root的接口带宽仅为100M,因此连接SW2的接口胜出为RP。最后选择DP。简单不赘述了。
CASE3:
根桥的选举就不说了。根端口的选举,SW2和SW3都比较简单。关键看SW4,有两个接口,这两个接口都会收到BPDU,首先看到Root的路径开销,由于这两个BPDU中包含的RootPathCost字段值相等,而且SW4的这两个端口的端口Cost也相等,因此从这两个端口到Root的路径开销相等,因此这一步比较不出来。接着看桥ID,也就是从这两个接口上收到的这两份BPDU中的BridgeID字段值,这两个字段的值其实就是BPDU的发送者SW2及SW3的桥ID,比较后发现SW2的MAC更小(比SW3小),因此SW4上连接SW2的接口胜出,成为RP。
最后看DP,也比较简单如图所示。我们拿SW3及SW4之间的segment举例,由于SW3及SW4都会产生BPDU,而SW3发给SW4的BPDU明显要优于SW4自己产生的从这个接口发送的BPDU,因此最终SW4的接口胜出。
CASE4:
根桥的选举就不说了。接下去看RP,SW2有两个接口,这两个接口都会收到BPDU,都来自SW1,因此这两个BPDU中的RootPathCost字段值都是0,加上SW2这两个接口的带宽相等,因此两个接口到根的路径开销也相等;其次比较发送者的桥ID,由于两个接口上收到的BPDU都是来自同一台交换机SW1,因此BridgeID也相等,也比较不出来;下面再比较这两个BPDU的PortID字段值,也就是SW1的Fa0/1及Fa0/2接口的PortID,我们假设两个接口优先级相等,那么就比这两端口的编号,F0/1的编号小于F0/2,因此最终选出SW2上的根端口F0/1,因为这个接口连接着的对端的接口(SW1的F0/1)的PortID更小。
注意,这时候如果试图在SW2上将F0/2的接口优先级改小,是不会影响SW2上根端口的选举的,因为看的是发送者的端口ID。所以如果在SW1上,将F0/2的端口优先级调小(调整得比SW1的F0/1口的优先级更小)。那么SW2上,F0/2就会胜出成为根端口。

IRF系列1:IRF 2基本配置以及相关注意事项

实验组网图
 
图: 链形堆叠实验组网图 
如图所示。2台交换机通过2条堆叠电缆连接并形成IRF。
步骤一:设备初始化 
检查设备的软件版本及配置信息,确保各设备软件版本符合要求,所有配置为初始状态。如果配置不符合要求,请在用户模式下擦除设备中的配置文件,然后重启设备以使系统采用缺省的配置参数进行初始化。 
以上步骤可能会用到以下命令: 
display version 
reset saved-configuration 
reboot 
步骤二:规划并配置IRF成员编号 
规划Device A的IRF成员编号是1,Device B的成员编号是2。所以,需要在Device A上保留缺省编号,不需要进行配置;而在Device B上将设备的成员编号修改为2。 
在Device B上的配置和显示信息如下:  
system-view 
[Sysname] irf member 1 renumber 2 Warning: Renumbering the switch number may result in configuration change or loss. Continue? [Y/N]:y 
然后将两台设备断电,按图1-1所示连接IRF链路,然后再将两台设备上电。
提示: 
IRF编号一旦曾经更改,则一直有效,擦除配置文件也不会丢失。
 
步骤三:配置IRF端口并形成IRF 
在Device A上创建设备的IRF端口2,与物理端口Ten-GigabitEthernet1/0/25和Ten-GigabitEthernet1/0/26绑定,并保存配置
system-view 
[Sysname] interface ten-gigabitethernet 1/0/25
[Sysname-Ten-GigabitEthernet1/0/25] shutdown
[Sysname] interface ten-gigabitethernet 1/0/26
[Sysname-Ten-GigabitEthernet1/0/26] shutdown 
[Sysname] irf-port 1/2 
[Sysname-irf-port 1/2] port group interface ten-gigabitethernet 1/0/25  
[Sysname-irf-port 1/2] port group interface ten-gigabitethernet 1/0/26  
[Sysname-irf-port 1/2] quit 
[Sysname] interface ten-gigabitethernet 1/0/25
[Sysname-Ten-GigabitEthernet1/0/25] undo shutdown
[Sysname] interface ten-gigabitethernet 1/0/26
[Sysname-Ten-GigabitEthernet1/0/26] undo shutdown 
[Sysname-Ten-GigabitEthernet1/0/26] save 
在Device B上创建设备的IRF端口1,与物理端口Ten-GigabitEthernet2/0/25和Ten-GigabitEthernet2/0/26绑定,并保存配置。 
system-view 
[Sysname] interface ten-gigabitethernet 2/0/25 
[Sysname -Ten-GigabitEthernet2/0/25] shutdown 
[Sysname] interface ten-gigabitethernet 2/0/26 
[Sysname -Ten-GigabitEthernet2/0/26] shutdown 
[Sysname] irf-port 2/1 
[Sysname-irf-port 2/1] port group interface ten-gigabitethernet 2/0/25 
[Sysname-irf-port 2/1] port group interface ten-gigabitethernet 2/0/26 
[Sysname-irf-port 2/1] quit 
[Sysname] interface ten-gigabitethernet 2/0/25 
[Sysname-Ten-GigabitEthernet2/0/25] undo shutdown 
[Sysname] interface ten-gigabitethernet 2/0/26 
[Sysname-Ten-GigabitEthernet2/0/26] undo shutdown 
[Sysname-Ten-GigabitEthernet2/0/26] save 
激活DeviceA的IRF端口配置。 
[Sysname] irf-port-configuration active 
激活DeviceB的IRF端口配置。 
[Sysname] irf-port-configuration active 
两台设备间会进行Master竞选,竞选失败的一方将自动重启,重启完成后,IRF形成。 
步骤四:IRF基本信息显示与维护 
IRF形成后,在Device A上查看设备的IRF信息: 
[Sysname]display irf 
 Switch    Role    Priority    CPU-Mac  
 *+1       Master  1           3822-d669-1782     2       Slave   1           3822-d669-42db 
————————————————–  
 * indicates the device is the master. 
 + indicates the device through which the user logs in.  
 The Bridge MAC of the IRF is: 3822-d669-1781  Auto upgrade                : yes  Mac persistent              : 6 min  Domain ID                   : 0
以上信息表明,编号为1的设备是IRF中的Master,编号为2的是Slave。 
[Sysname]display irf topology  
                           Topology Info
                       IRF-Port1                IRF-Port2           
 Switch    Link       neighbor      Link       neighbor    Belong To  
      1         DIS               —            UP         2           3822-d669-1782 
      2         UP                1             DIS        —          3822-d669-1782  
以上信息表明,DeviceA的IRF端口2连接到DeviceB的IRF端口1,为链形连接。
实验组图:
图:环形堆叠实验组网图 
如图所示。3台交换机通过3条堆叠电缆首尾相连并形成IRF。
步骤一:设备初始化 
检查设备的软件版本及配置信息,确保各设备软件版本符合要求,所有配置为初始状态。如果配置不符合要求,请在用户模式下擦除设备中的配置文件,然后重启设备以使系统采用缺省的配置参数进行初始化。 
以上步骤可能会用到以下命令: 
display version 
reset saved-configuration 
reboot 
步骤二:规划并配置IRF成员编号 
规划Device A的IRF成员编号是1,Device B的成员编号是2,Device C的成员编号是3。所以,需要在Device A上保留缺省编号,不需要进行配置;而在Device B上将设备的成员编号修改为2,在Device C上将设备的成员编号修改为3。 
在Device B上的配置和显示信息如下:  
system-view 
[Sysname] irf member 1 renumber 2 Warning: Renumbering the switch number may result in configuration change or loss. Continue? [Y/N]:y  
在Device C上的配置和显示信息如下:  
system-view 
[Sysname] irf member 1 renumber 3 Warning: Renumbering the switch number may result in configuration change or loss. Continue? [Y/N]:y  
然后将3台设备断电,按图所示连接IRF链路,然后再将3台设备上电。
步骤三:配置IRF端口并形成IRF 
配置Device A的优先级为10,以使Device A成为Master。 
system-view 
[Sysname] irf member 1 priority 10 
在Device A上创建设备的IRF端口1,与物理端口Ten-GigabitEthernet1/0/25绑定;IRF端口2,与物理端口Ten-GigabitEthernet1/0/26绑定,并保存配置。 
[Sysname] interface ten-gigabitethernet 1/0/25 
[Sysname-Ten-GigabitEthernet1/0/25] shutdown 
[Sysname] interface ten-gigabitethernet 1/0/26 
[Sysname-Ten-GigabitEthernet1/0/26] shutdown 
[Sysname] irf-port 1/1
[Sysname-irf-port 1/1] port group interface ten-gigabitethernet 1/0/25  
[Sysname] irf-port 1/2 
[Sysname-irf-port 1/2] port group interface ten-gigabitethernet 1/0/26  
[Sysname-irf-port 1/2] quit 
[Sysname] interface ten-gigabitethernet 1/0/25 
[Sysname-Ten-GigabitEthernet1/0/25] undo shutdown 
[Sysname] interface ten-gigabitethernet 1/0/26 
[Sysname-Ten-GigabitEthernet1/0/26] undo shutdown 
[Sysname-Ten-GigabitEthernet1/0/26] save 
在Device B上创建设备的IRF端口1,与物理端口Ten-GigabitEthernet2/0/25绑定;IRF端口2,与物理端口Ten-GigabitEthernet2/0/26绑定,并保存配置。 
system-view 
[Sysname] interface ten-gigabitethernet 2/0/25 
[Sysname -Ten-GigabitEthernet2/0/25] shutdown 
[Sysname] interface ten-gigabitethernet 2/0/26 
[Sysname -Ten-GigabitEthernet2/0/26] shutdown 
[Sysname] irf-port 2/1 
[Sysname-irf-port 2/1] port group interface ten-gigabitethernet 2/0/25 
[Sysname] irf-port 2/2  
[Sysname-irf-port 2/2] port group interface ten-gigabitethernet 2/0/26 
[Sysname-irf-port 2/2] quit 
[Sysname] interface ten-gigabitethernet 2/0/25 
[Sysname-Ten-GigabitEthernet2/0/25] undo shutdown 
[Sysname] interface ten-gigabitethernet 2/0/26 
[Sysname-Ten-GigabitEthernet2/0/26] undo shutdown 
[Sysname-Ten-GigabitEthernet2/0/26] save 
在Device C上创建设备的IRF端口1,与物理端口Ten-GigabitEthernet3/0/25绑定;IRF端口2,与物理端口Ten-GigabitEthernet3/0/26绑定,并保存配置。 
system-view 
[Sysname] interface ten-gigabitethernet 3/0/25 
[Sysname -Ten-GigabitEthernet3/0/25] shutdown 
[Sysname] interface ten-gigabitethernet 3/0/26 
[Sysname -Ten-GigabitEthernet3/0/26] shutdown 
[Sysname] irf-port 3/1 
[Sysname-irf-port 3/1] port group interface ten-gigabitethernet 3/0/25 
[Sysname] irf-port 3/2  
[Sysname-irf-port 3/2] port group interface ten-gigabitethernet 3/0/26 
[Sysname-irf-port 3/2] quit 
[Sysname] interface ten-gigabitethernet 3/0/25 
[Sysname-Ten-GigabitEthernet3/0/25] undo shutdown 
[Sysname] interface ten-gigabitethernet 3/0/26 
[Sysname-Ten-GigabitEthernet3/0/26] undo shutdown 
[Sysname-Ten-GigabitEthernet3/0/26] save 
激活DeviceA的IRF端口配置。 
[Sysname] irf-port-configuration active 
激活DeviceB的IRF端口配置。 
[Sysname] irf-port-configuration active 
激活DeviceC的IRF端口配置。 
[Sysname] irf-port-configuration active 
3台设备间会进行Master竞选,竞选失败的设备将自动重启,重启完成后,IRF形成。 步骤四:IRF基本信息显示与维护 
在Device A上查看设备的IRF信息: 
[Sysname]display irf
Switch    Role    Priority    CPU-Mac  
 *+1       Master  10          3822-d669-1782   
     2       Slave   1           3822-d669-42db     
     3       Slave   1           3822-d669-12c3 
————————————————–  
 * indicates the device is the master. 
 + indicates the device through which the user logs in.  
 The Bridge MAC of the IRF is: 3822-d669-1781  
      Auto upgrade                : yes  
      Mac persistent              : 6 min  
       Domain ID                   : 0 
以上信息表明,编号为1的设备是IRF中的Master,编号为2和3的设备是Slave。 
[Sysname]display irf topology 
                           Topology Info 
————————————————————————-              
                       IRF-Port1                IRF-Port2           
    Switch    Link       neighbor      Link       neighbor    Belong To  
           1         UP         2             UP         3           3822-d669-1782  
           2         UP         3             UP         1           3822-d669-1782  
           3         UP         1             UP         2           3822-d669-1782 
从拓扑显示也可知,3台设备首尾相连,是环形连接。
从上述步骤得知,Device A是Master。所以,用户访问IRF时,实际访问的是Device A。如果想访问Device B、Device C等Slave设备,需要进行重定向。 
在Master上重定向到编号为2的Device B: 
system-view 
[Sysname] irf switch-to 2 
尽管可以显示出所有的命令,但实际上,在Slave设备上只允许执行很少的基本维护命令,所以还是退回到Master控制台。 
quit 
 
注意事项:
1.Intelligent Resilient Framework,智能弹性架构,H3C设备最大支持9台设备进行IRF。
2.IRF具有逻辑端口,IRF-PORT1,IRF-PORT2,必须与交换机物理端口一一对应。
3.IRF具有MASTER及SLAVE角色,负责不同的工作。角色通过优先级决定,默认优先级为1,大于1且数字最大的为MASTER。
4.物理连接:要求SW1的IRF-PORT1 与SW2的 IRF-PORT2连接, SW1的IRF-PORT2 与SW2的 IRF-PORT1连接,顺序不能对调。且IRF-PORT1对应的物理端口编号必须小于IRF-PORT2对应的物理端口编号。
5.如IRF端口为聚合端口,要求两个端口在同一个模块上。
6.拓扑收集:类似于OSPF收敛过程;IRF Hello 报文会携带拓扑信息,具体包括IRF 端口连接关系、成员设备编号、成员设备优先级、成员设备的桥MAC 等内容。Hello包周期为200ms,100个周期收不到包,表示设备脱离IRF。
7.角色选举:(1) 当前Master 优先(IRF系统形成时,没有Master 设备,所有加入的设备都认为自己是Master,会跳转到第二条规则继续比较;(2) 成员优先级大的优先;(3) 系统运行时间长的优先(各设备的系统运行时间信息也是通过IRF Hello 报文来传递的,精度为大于6分钟,6分钟以下该条不成立);(4) 桥MAC 地址小的优先。
8.构建IRF必须要保证成员编号唯一性,可通过手工设置指定编号保证。
9.合并成一个虚拟设备后,虚拟设备的端口命名规则如下:设备编号/子槽位编号/接口序号。必须SLAVE成员编号为3的设备,其原端口为G1/0/1,形成IRF之后,该端口变为G3/0/1。
10.文件系统:合并之后直接操作文件系统为MASTER的。要操作SLAVE的文件系统必须添加”SLOTX:FLASH:”。
11.配置文件:SLAVE将自动同步MASTER配置,且只会同步全局配置及与自己相关的局部配置(如端口配置)保证所有设备配置一致。

vlan,tag与untag的概念

交换机端口如果是access端口,收到pc发的untag数据时,就打上本端口的pvid;如果收到tag帧,则直接丢弃。
如果是trunk端口,收到tag数据帧的时候,,如果允许通过,则直接发往对端,如果不允许该vlan通过,则直接丢弃;如果发送tag帧,里面的pvid和本端口的默认pvid相同,即默认vlan,则剥离pvid后再发送 ,收到untag数据的时候,打上本端口的默认pvid
要注意发送和收到的关系

为什么需要VLAN
1. 什么是VLAN?
VLAN(Virtual LAN),翻译成中文是“虚拟局域网”。LAN可以是由少数几台家用计算机构成的网络,也可以是数以百计的计算机构成的企业网络。VLAN所指的LAN特指使用路由器分割的网络——也就是广播域。
在此让我们先复习一下广播域的概念。广播域,指的是广播帧(目标MAC地址全部为1)所能传递到的范围,亦即能够直接通信的范围。严格地说,并不仅仅是广播帧,多播帧(Multicast Frame)和目标不明的单播帧(Unknown Unicast Frame)也能在同一个广播域中畅行无阻。
本来,二层交换机只能构建单一的广播域,不过使用VLAN功能后,它能够将网络分割成多个广播域。
2.未分割广播域时……
那么,为什么需要分割广播域呢?那是因为,如果仅有一个广播域,有可能会影响到网络整体的传输性能。具体原因,请参看附图加深理解。

图中,是一个由5台二层交换机(交换机1~5)连接了大量客户机构成的网络。假设这时,计算机A需要与计算机B通信。在基于以太网的通信中,必须在数据帧中指定目标MAC地址才能正常通信,因此计算机A必须先广播“ARP请求(ARP Request)信息”,来尝试获取计算机B的MAC地址。
交换机1收到广播帧(ARP请求)后,会将它转发给除接收端口外的其他所有端口,也就是Flooding了。接着,交换机2收到广播帧后也会Flooding。交换机3、4、5也还会Flooding。最终ARP请求会被转发到同一网络中的所有客户机上。

请大家注意一下,这个ARP请求原本是为了获得计算机B的MAC地址而发出的。也就是说:只要计算机B能收到就万事大吉了。可是事实上,数据帧却传遍整个网络,导致所有的计算机都收到了它。如此一来,一方面广播信息消耗了网络整体的带宽,另一方面,收到广播信息的计算机还要消耗一部分CPU时间来对它进行处理。造成了网络带宽和CPU运算能力的大量无谓消耗。
3. 广播信息是那么经常发出的吗?
读到这里,您也许会问:广播信息真是那么频繁出现的吗?
答案是:是的!实际上广播帧会非常频繁地出现。利用TCP/IP协议栈通信时,除了前面出现的ARP外,还有可能需要发出DHCP、RIP等很多其他类型的广播信息。
ARP广播,是在需要与其他主机通信时发出的。当客户机请求DHCP服务器分配IP地址时,就必须发出DHCP的广播。而使用RIP作为路由协议时,每隔30秒路由器都会对邻近的其他路由器广播一次路由信息。RIP以外的其他路由协议使用多播传输路由信息,这也会被交换机转发(Flooding)。除了TCP/IP以外,NetBEUI、IPX和Apple Talk等协议也经常需要用到广播。例如在Windows下双击打开“网络计算机”时就会发出广播(多播)信息。(Windows XP除外……)
总之,广播就在我们身边。下面是一些常见的广播通信:
(1)ARP请求:建立IP地址和MAC地址的映射关系。
(2)RIP:一种路由协议。
(3)DHCP:用于自动设定IP地址的协议。
(4)NetBEUI:Windows下使用的网络协议。
(5)IPX:NovellNetware使用的网络协议。
(6)Apple Talk:苹果公司的Macintosh计算机使用的网络协议。
如果整个网络只有一个广播域,那么一旦发出广播信息,就会传遍整个网络,并且对网络中的主机带来额外的负担。因此,在设计LAN时,需要注意如何才能有效地分割广播域。
4.广播域的分割与VLAN的必要性
分割广播域时,一般都必须使用到路由器。使用路由器后,可以以路由器上的网络接口(LAN Interface)为单位分割广播域。
但是,通常情况下路由器上不会有太多的网络接口,其数目多在1~4个左右。随着宽带连接的普及,宽带路由器(或者叫IP共享器)变得较为常见,但是需要注意的是,它们上面虽然带着多个(一般为4个左右)连接LAN一侧的网络接口,但那实际上是路由器内置的交换机,并不能分割广播域。
况且使用路由器分割广播域的话,所能分割的个数完全取决于路由器的网络接口个数,使得用户无法自由地根据实际需要分割广播域。
与路由器相比,二层交换机一般带有多个网络接口。因此如果能使用它分割广播域,那么无疑运用上的灵活性会大大提高。
用于在二层交换机上分割广播域的技术,就是VLAN。通过利用VLAN,我们可以自由设计广播域的构成,提高网络设计的自由度。#p#
实现VLAN的机制
1. 实现VLAN的机制
在理解了“为什么需要VLAN”之后,接下来让我们来了解一下交换机是如何使用VLAN分割广播域的。
首先,在一台未设置任何VLAN的二层交换机上,任何广播帧都会被转发给除接收端口外的所有其他端口(Flooding)。例如,计算机A发送广播信息后,会被转发给端口2、3、4。

这时,如果在交换机上生成红、蓝两个VLAN;同时设置端口1、2属于红色VLAN、端口3、4属于蓝色VLAN。再从A发出广播帧的话,交换机就只会把它转发给同属于一个VLAN的其他端口——也就是同属于红色VLAN的端口2,不会再转发给属于蓝色VLAN的端口。
同样,C发送广播信息时,只会被转发给其他属于蓝色VLAN的端口,不会被转发给属于红色VLAN的端口。

就这样,VLAN通过限制广播帧转发的范围分割了广播域。上图中为了便于说明,以红、蓝两色识别不同的VLAN,在实际使用中则是用“VLAN ID”来区分的。
2.直观地描述VLAN
如果要更为直观地描述VLAN的话,我们可以把它理解为将一台交换机在逻辑上分割成了数台交换机。在一台交换机上生成红、蓝两个VLAN,也可以看作是将一台交换机换做一红一蓝两台虚拟的交换机。

在红、蓝两个VLAN之外生成新的VLAN时,可以想象成又添加了新的交换机。
但是,VLAN生成的逻辑上的交换机是互不相通的。因此,在交换机上设置VLAN后,如果未做其他处理,VLAN间是无法通信的。
明明接在同一台交换机上,但却偏偏无法通信——这个事实也许让人难以接受。但它既是VLAN方便易用的特征,又是使VLAN令人难以理解的原因。
3. 需要VLAN间通信时怎么办
那么,当我们需要在不同的VLAN间通信时又该如何是好呢?
请大家再次回忆一下:VLAN是广播域。而通常两个广播域之间由路由器连接,广播域之间来往的数据包都是由路由器中继的。因此,VLAN间的通信也需要路由器提供中继服务,这被称作“VLAN间路由”。
VLAN间路由,可以使用普通的路由器,也可以使用三层交换机。其中的具体内容,等有机会再细说吧。在这里希望大家先记住不同VLAN间互相通信时需要用到路由功能。
VLAN的访问链接(Access Link)
1.交换机的端口类型
交换机的端口,可以分为以下两种:
(1)访问链接(Access Link)
(2)汇聚链接(Trunk Link)
接下来就让我们来依次学习这两种不同端口的特征。这一讲,首先学习“访问链接”。
2.访问链接
访问链接,指的是“只属于一个VLAN,且仅向该VLAN转发数据帧”的端口。在大多数情况下,访问链接所连的是客户机。
通常设置VLAN的顺序是:
(1)生成VLAN
(2)设定访问链接(决定各端口属于哪一个VLAN)
设定访问链接的手法,可以是事先固定的、也可以是根据所连的计算机而动态改变设定。前者被称为“静态VLAN”、后者自然就是“动态VLAN”了。
● 静态VLAN——基于端口
静态VLAN又被称为基于端口的VLAN(PortBased VLAN)。顾名思义,就是明确指定各端口属于哪个VLAN的设定方法。

由于需要一个个端口地指定,因此当网络中的计算机数目超过一定数字(比如数百台)后,设定操作就会变得烦杂无比。并且,客户机每次变更所连端口,都必须同时更改该端口所属VLAN的设定——这显然不适合那些需要频繁改变拓补结构的网络。#p#
● 动态VLAN
另一方面,动态VLAN则是根据每个端口所连的计算机,随时改变端口所属的VLAN。这就可以避免上述的更改设定之类的操作。动态VLAN可以大致分为3类:
(1)基于MAC地址的VLAN(MAC Based VLAN)
(2)基于子网的VLAN(Subnet Based VLAN)
(3)基于用户的VLAN(User Based VLAN)
其间的差异,主要在于根据OSI参照模型哪一层的信息决定端口所属的VLAN。
● 基于MAC地址的VLAN
基于MAC地址的VLAN,就是通过查询并记录端口所连计算机上网卡的MAC地址来决定端口的所属。假定有一个MAC地址“A”被交换机设定为属于VLAN “10”,那么不论MAC地址为“A”的这台计算机连在交换机哪个端口,该端口都会被划分到VLAN 10中去。计算机连在端口1时,端口1属于VLAN 10;而计算机连在端口2时,则是端口2属于VLAN 10。

由于是基于MAC地址决定所属VLAN的,因此可以理解为这是一种在OSI的第二层设定访问链接的办法。
但是,基于MAC地址的VLAN,在设定时必须调查所连接的所有计算机的MAC地址并加以登录。而且如果计算机交换了网卡,还是需要更改设定。
● 基于IP地址的VLAN
基于子网的VLAN,则是通过所连计算机的IP地址,来决定端口所属VLAN的。不像基于MAC地址的VLAN,即使计算机因为交换了网卡或是其他原因导致MAC地址改变,只要它的IP地址不变,就仍可以加入原先设定的VLAN。

因此,与基于MAC地址的VLAN相比,能够更为简便地改变网络结构。IP地址是OSI参照模型中第三层的信息,所以我们可以理解为基于子网的VLAN是一种在OSI的第三层设定访问链接的方法。
基于用户的VLAN,则是根据交换机各端口所连的计算机上当前登录的用户,来决定该端口属于哪个VLAN。这里的用户识别信息,一般是计算机操作系统登录的用户,比如可以是Windows域中使用的用户名。这些用户名信息,属于OSI第四层以上的信息。
总的来说,决定端口所属VLAN时利用的信息在OSI中的层面越高,就越适于构建灵活多变的网络。
VLAN的汇聚链接(Trunk Link)
1.需要设置跨越多台交换机的VLAN时……
到此为止,我们学习的都是使用单台交换机设置VLAN时的情况。那么,如果需要设置跨越多台交换机的VLAN时又如何呢?
在规划企业级网络时,很有可能会遇到隶属于同一部门的用户分散在同一座建筑物中的不同楼层的情况,这时可能就需要考虑到如何跨越多台交换机设置VLAN的问题了。假设有如下图所示的网络,且需要将不同楼层的A、C和B、D设置为同一个VLAN。

这时最关键的就是“交换机1和交换机2该如何连接才好呢?”
最简单的方法,自然是在交换机1和交换机2上各设一个红、蓝VLAN专用的接口并互联了。

但是,这个办法从扩展性和管理效率来看都不好。例如,在现有网络基础上再新建VLAN时,为了让这个VLAN能够互通,就需要在交换机间连接新的网线。建筑物楼层间的纵向布线是比较麻烦的,一般不能由基层管理人员随意进行。并且,VLAN越多,楼层间(严格地说是交换机间)互联所需的端口也越来越多,交换机端口的利用效率低是对资源的一种浪费、也限制了网络的扩展。
为了避免这种低效率的连接方式,人们想办法让交换机间互联的网线集中到一根上,这时使用的就是汇聚链接(Trunk Link)。#p#
2.何谓汇聚链接?
汇聚链接(Trunk Link)指的是能够转发多个不同VLAN的通信的端口。
汇聚链路上流通的数据帧,都被附加了用于识别分属于哪个VLAN的特殊信息。
现在再让我们回过头来考虑一下刚才那个网络如果采用汇聚链路又会如何呢?用户只需要简单地将交换机间互联的端口设定为汇聚链接就可以了。这时使用的网线还是普通的UTP线,而不是什么其他的特殊布线。图例中是交换机间互联,因此需要用交叉线来连接。
接下来,让我们具体看看汇聚链接是如何实现跨越交换机间的VLAN的。
A发送的数据帧从交换机1经过汇聚链路到达交换机2时,在数据帧上附加了表示属于红色VLAN的标记。
交换机2收到数据帧后,经过检查VLAN标识发现这个数据帧是属于红色VLAN的,因此去除标记后根据需要将复原的数据帧只转发给其他属于红色VLAN的端口。这时的转送,是指经过确认目标MAC地址并与MAC地址列表比对后只转发给目标MAC地址所连的端口。只有当数据帧是一个广播帧、多播帧或是目标不明的帧时,它才会被转发到所有属于红色VLAN的端口。
蓝色VLAN发送数据帧时的情形也与此相同。

通过汇聚链路时附加的VLAN识别信息,有可能支持标准的“IEEE 802.1Q”协议,也可能是Cisco产品独有的“ISL(Inter Switch Link)”。如果交换机支持这些规格,那么用户就能够高效率地构筑横跨多台交换机的VLAN。
另外,汇聚链路上流通着多个VLAN的数据,自然负载较重。因此,在设定汇聚链接时,有一个前提就是必须支持100Mbps以上的传输速度。
另外,默认条件下,汇聚链接会转发交换机上存在的所有VLAN的数据。换一个角度看,可以认为汇聚链接(端口)同时属于交换机上所有的VLAN。由于实际应用中很可能并不需要转发所有VLAN的数据,因此为了减轻交换机的负载、也为了减少对带宽的浪费,我们可以通过用户设定限制能够经由汇聚链路互联的VLAN。
关于IEEE 802.1Q和ISL的具体内容,将在下一讲中提到。
3.访问链接的总结
综上所述,设定访问链接的手法有静态VLAN和动态VLAN两种,其中动态VLAN又可以继续细分成几个小类。
其中基于子网的VLAN和基于用户的VLAN有可能是网络设备厂商使用独有的协议实现的,不同厂商的设备之间互联有可能出现兼容性问题;因此在选择交换机时,一定要注意事先确认。
下表总结了静态VLAN和动态VLAN的相关信息。
种类解说
静态VLAN(基于端口的VLAN)将交换机的各端口固定指派给VLAN
动态VLAN基于MAC地址的VLAN根据各端口所连计算机的MAC地址设定
基于子网的VLAN根据各端口所连计算机的IP地址设定
基于用户的VLAN根据端口所连计算机上登录用户设定
#p#VLAN的汇聚方式——IEEE802.1Q与ISL
1.汇聚方式
在交换机的汇聚链接上,可以通过对数据帧附加VLAN信息,构建跨越多台交换机的VLAN。
附加VLAN信息的方法,最具有代表性的有:
(1)IEEE 802.1Q
(2)ISL
现在就让我们看看这两种协议分别如何对数据帧附加VLAN信息。
2.IEEE 802.1Q
IEEE 802.1Q,俗称“Dot One Q”,是经过IEEE认证的对数据帧附加VLAN识别信息的协议。
在此,请大家先回忆一下以太网数据帧的标准格式。
IEEE 802.1Q所附加的VLAN识别信息,位于数据帧中“发送源MAC地址”与“类别域”(Type Field)之间。具体内容为2字节的TPID(Tag Protocol IDentifier)和2字节的TCI(Tag Control Information),共计4字节。
在数据帧中添加了4字节的内容,那么CRC值自然也会有所变化。这时数据帧上的CRC是插入TPID、TCI后,对包括它们在内的整个数据帧重新计算后所得的值。

而当数据帧离开汇聚链路时,TPID和TCI会被去除,这时还会进行一次CRC的重新计算。
TPID字段在以太网报文中所处位置与不带VLAN Tag的报文中协议类型字段所处位置相同。TPID的值固定为0x8100,它标示网络帧承载的802.1Q类型,交换机通过它来确定数据帧内附加了基于IEEE 802.1Q的VLAN信息。而实质上的VLAN ID,是TCI中的12位元。由于总共有12位,因此最多可供识别4096个VLAN。
基于IEEE 802.1Q附加的VLAN信息,就像在传递物品时附加的标签。因此,它也被称作“标签型VLAN”(Tagging VLAN)。
3.ISL(Inter Switch Link)
ISL,是Cisco产品支持的一种与IEEE 802.1Q类似的、用于在汇聚链路上附加VLAN信息的协议。
使用ISL后,每个数据帧头部都会被附加26字节的“ISL包头(ISL Header)”,并且在帧尾带上通过对包括ISL包头在内的整个数据帧进行计算后得到的4字节CRC值。换而言之,就是总共增加了30字节的信息。
在使用ISL的环境下,当数据帧离开汇聚链路时,只要简单地去除ISL包头和新CRC就可以了。由于原先的数据帧及其CRC都被完整保留,因此无需重新计算CRC。

ISL有如用ISL包头和新CRC将原数据帧整个包裹起来,因此也被称为“封装型VLAN”(Encapsulated VLAN)。
需要注意的是,不论是IEEE802.1Q的“Tagging VLAN”,还是ISL的“Encapsulated VLAN”,都不是很严密的称谓。不同的书籍与参考资料中,上述词语有可能被混合使用,因此需要大家在学习时格外注意。
并且由于ISL是Cisco独有的协议,因此只能用于Cisco网络设备之间的互联。
VLAN间路由
1.VLAN间路由的必要性
根据目前为止学习的知识,我们已经知道两台计算机即使连接在同一台交换机上,只要所属的VLAN不同就无法直接通信。接下来我们将要学习的就是如何在不同的VLAN间进行路由,使分属不同VLAN的主机能够互相通信。
首先,先来复习一下为什么不同VLAN间不通过路由就无法通信。在LAN内的通信,必须在数据帧头中指定通信目标的MAC地址。而为了获取MAC地址,TCP/IP协议下使用的是ARP。ARP解析MAC地址的方法,则是通过广播。也就是说,如果广播报文无法到达,那么就无从解析MAC地址,亦即无法直接通信。
#p#计算机分属不同的VLAN,也就意味着分属不同的广播域,自然收不到彼此的广播报文。因此,属于不同VLAN的计算机之间无法直接互相通信。为了能够在VLAN间通信,需要利用OSI参照模型中更高一层——网络层的信息(IP地址)来进行路由。关于路由的具体内容,以后有机会再详细解说吧。
路由功能,一般主要由路由器提供。但在今天的局域网里,我们也经常利用带有路由功能的交换机——三层交换机(Layer 3 Switch)来实现。接下来就让我们分别看看使用路由器和三层交换机进行VLAN间路由时的情况。
2.使用路由器进行VLAN间路由
在使用路由器进行VLAN间路由时,与构建横跨多台交换机的VLAN时的情况类似,我们还是会遇到“该如何连接路由器与交换机”这个问题。路由器和交换机的接线方式,大致有以下两种:
(1)将路由器与交换机上的每个VLAN分别连接
(2)不论VLAN有多少个,路由器与交换机都只用一条网线连接
最容易想到的,当然还是“把路由器和交换机以VLAN为单位分别用网线连接”了。将交换机上用于和路由器互联的每个端口设为访问链接(Access Link),然后分别用网线与路由器上的独立端口互联。如下图所示,交换机上有2个VLAN,那么就需要在交换机上预留2个端口用于与路由器互联;路由器上同样需要有2个端口;两者之间用2条网线分别连接。如果采用这个办法,大家应该不难想象它的扩展性很成问题。每增加一个新的VLAN,都需要消耗路由器的端口和交换机上的访问链接,而且还需要重新布设一条网线。而路由器,通常不会带有太多LAN接口的。新建VLAN时,为了对应增加的VLAN所需的端口,就必须将路由器升级成带有多个LAN接口的高端产品,这部分成本、还有重新布线所带来的开销,都使得这种接线法成为一种不受欢迎的办法。
那么,第二种办法“不论VLAN数目多少,都只用一条网线连接路由器与交换机”呢?当使用一条网线连接路由器与交换机、进行VLAN间路由时,需要用到汇聚链接。
具体实现过程为:首先将用于连接路由器的交换机端口设为汇聚链接(Trunk Link),而路由器上的端口也必须支持汇聚链路。双方用于汇聚链路的协议自然也必须相同。接着在路由器上定义对应各个VLAN的“子接口”(Sub Interface)。尽管实际与交换机连接的物理端口只有一个,但在理论上我们可以把它分割为多个虚拟端口。
VLAN将交换机从逻辑上分割成了多台,因而用于VLAN间路由的路由器,也必须拥有分别对应各个VLAN的虚拟接口。采用这种方法的话,即使之后在交换机上新建VLAN,仍只需要一条网线连接交换

MPLS学习

CCIE ISP

MPLS

MPLS VPN

MPLS L2VPN

MPLS TE

QoS

IPv6

Multicast

MPLS的概述(Multiple protocol label switching)多协议标签交换

标签交换基于2.5层转发流量

路由技术基于3层转发流量

标签交换依据是标签表一次查找一次转发

路由技术依据是路由表多次查找一次转发(递归)

MPLS标签交换更具拓展性可以满足运营商网络的后续发展

MPLS功能:

基础功能:打标签,生成标签表,标签交换

拓展功能:MPLS VPN、QoS、MPLS TE、Multicast

MPLS层次

MPLS协议(LDP)(用来传标签的)是基于应用层通信的

MPLS Label 是基于2.5层的

MPLS VPN 是基于3层的

MPLS L2VPN 是基于2层的

MPLS Domain MPLS域

谁发数据包,谁就是上游(Upstream)

谁收数据包,谁就是下游(Downstream)

Edge LSR

Control Plane(控制层面:策略,协议,表项)

Routing Protocol — IP Routing Table — LDP/MPLS

Data Plane(数据层面:转发)

IP Forwarding Table(FIB/Route Table)

LFIB

LSP  —-  PVC

FEC 转发等价类(Forwarding Equivalence Class)

转发过程中以等价的方式处理的一组数据分组或者被打上相同标签的一组路由条目

标签分发或路由传递的方向与数据转发的方向刚好是相反的(上下游对调)

Lable格式(32位)

20bit 标签 1-15保留 为数据打上标签

3bit 实验字段 用于实现QoS

1bit 栈底指示(0表示后面没有标签,1表示后面没有标签)

8bit TTL  MPLS 的TTL值会改变而IP内的TTL不会变化,等到标签解开的时候IP TTL会同步MPLS的TTL

MPLS报文转发

插入标签

交换标签

弹出标签(弹出一层)

去掉标签(全部弹出)

包要给谁就发谁的标签

次末跳弹出(Penultimate Hop Poping)

优化了MPLS性能(可减少一次LFIB查询)弹出或空标签使用一个保留的值,但被通告给邻居的时候

MPLS标签协议(应用层 基于UDP/TCP 646端口)

LDP定义(Label Distribution Protocol)标签分发协议  前身是TDP

LDP功能

生成标签,绑定标签,交互标签

生成标签邻居表,标签数据库,标签转发表

LDP原理

路由协议生成路由表(软件存储-内存)RIB

开启硬件转发,生成硬件转发表FIB/CEF表(硬件存储-专门的转发硬件)

运行LDP协议,对FIB表的路由进行标签分配

与所有的LDP邻居进行标签交换,生成标签数据库LIB

LDP协议根据LIB和原有的FIB表,生成标签转发表LFIB

RIB:路由表IP+interface 软件存储

FIB:硬件路由表硬件存储

LIB:标签数据库软件存储

LFIB:标签转发表硬件存储

LDP分组

Hello UDP 646

Initial message

Keep alive message

Address label mapping message(留意包内FEC Element以及Generic Label的内容)

标签模式

标签分发、控制、保留

标签分发 标签控制 标签保留

帧模式 自主(下游主动向上游发起标记映射消息)有序自由

信源模式 按需(上游向下游发送请求)独立保守

有序:除非LSR是路由的始发节点,否则LSR必须等收到下一跳的标记映射才能向上游发出标记映射

独立:LSR可以向上游发出标记映射,而不必等待来自LSR下一跳的标记映射信息

自由:保守来自邻居的所有发送来的标签()

保守:只保留来自下一跳邻居的标签,丢弃所有非下一跳邻居发来的标签

在建立邻居的过程中为LDP为TCP协议

MPLS基本部署

mpls label range 200 299  定义标签范围  如果已经mpls ip 的话需要重启才会生效范围

mpls label protocol ldp 定义标签协议

mpls ldp router-id lookback 1 定义LDP RID

int s0/1 进入接口

mpls ip 开启MPLS

show mpls ldp nei 查看MPLS邻居

show mpls ldp bind 查看LIB标签数据库

show mpls forwarding-table 查看LFIB标签转发表

clear mpls ldp nei * 刷新LDP邻居

show ip cef detail 查看详细cdf

邻居认证

指定对方环回接口

mpls ldp nei 2.2.2.2 password cisco

抓包可以在TCP包中的option值内查看MD5信息

LDP自动配置

mpls ldp autoconfig area 0 在OSPF进程下部署,RIP与EIGRP都不可以

MPLS防环机制

1.将MPLS TTL设置为255

2.即便IP TTL为1,在核心路由器也不会返回ICMP EXCEED

no mpls ip propagate-ttl

VPN 虚拟私有网络

三层 GRE/IPSec VPN/MPLS VPN

二层 FR

一层 E1/T1

Overlay VPN 覆盖型VPN (运营商只提供物理链路,不参与客户路由服务)

服务提供商在客户站点间提供虚拟的点对点链路联接服务

分类

二层 VPN (X.25 FR ATM)

三层 VPN (GRE IPSec)

Peer-to-Peer 点对点VPN (运营商参与客户的路由选举过程,保证客户内网联通)

服务提供商参与客户间的路由信息传输

分类

ACLs(Shared Router)

Split Routeing (Dedicated Router)

MPLS VPN

MPLS VPN 技术架构

CE–PE–P

接入–汇聚–核心

VRF–面向对象:用户

怎么解决用户安全隔离(虚拟路由转发)

VRF相当于一个虚拟路由器,拥有独立的接口,独立的协议,独立的表项,独立的策略,不同VRF之间相互隔离不通信

RD–面向对象:路由

怎么解决路由的冲突(类似于BGP的团体属性)

RD路由区分:

重新分配客户端地址使得它们不重叠

64位RD附在IPV4的地址之上,使它变成全球唯一

附加RD后的地址即是VPNv4地址

VPNv4地址在PE路由器间通过BGP路由协议进行交换

能够支持IPV4地址外的地址家族的BGP协议被称为MPBGP(多协议边界网关协议)MPBGP能够隔空建邻居

RT–面向对象:VPN

怎么解决VPN互访和对接问题 RT

Route Targets(路由目标)

某些站点可能需要参与多个VPN的通信

RD不能被其他VPN识别或参与

RTs在MPLS VPN体系结构中提出用于支持复杂的VPN拓扑

RTs是一个附加的属性,附加在VPNv4 BGP路由中指示VPN成员组

RT不同不能互访

RT带方向,import RT / export RT 没有给方向就是双向

要互访的话RT必须要一样的,不一样会获取不到对方的路由

CE–PE IGP和MPLS

PE–P  路由协议

PE–PE MPBGP

配置PE的BGP与IGP路由重分发

单标签解决方案

双标签解决方案

解决两个问题:

1、核心路由器压根没有客户的路由,何来标签

只要让中间的核心设备具备边缘设备环回口的标签信息,中间设备就一定能出去

2、即便核心路由器有客户的标签,数据到达PE,PE也如何将IP数据包发送给特定的客户

通过MPBGP传递VRF标签,引入栈底标签的概念,到达边缘处弹掉外部标签

外部标签解决数据包如何通过城域网核心

内部标签(栈底标签)用于解决数据包到达PE后,PE如何将数据转发给特定的VRF,栈底标签是由MP-BGP自动分配并交互的

X给我的Y路由,使用X的环回口外部标签,用Y的栈底标签

拓扑设计,解决安全解决冲突解决对接

路由设计,解决路由传递

数据转发,解决打标签

配置PE与P之间的IGP和MPLS

mpls label range 200 299  定义标签范围

mpls label protocol ldp 定义标签协议

mpls ldp router-id lookback 1 定义LDP RID

int s0/1 进入接口

mpls ip 开启MPLS

配置PE与CE之间的路由协议

创建vrf

ip vrf A

rd 1:100

route-target 1:100

把接口放进vrf中

int s0/1

ip vrf forward A

ip add 192.168.12.2 255.255.255.0  (先写上面的地址会导致地址消失)

写入RIP协议

router rip

ver 2

no au

add ipv4 vrf A

network 192.168.12.0

(如果是静态路由则写 ip route vrf a 1.1.1.1 255.255.255.255 s0/0)

show ip vrf detail

show ip router vrf A

ping vrf A 1.1.1.1

配置PE-PE之间的MP-BGP

router bgp 1

no syn

no au

no bgp default ipv4-unicast

nei 5.5.5.5 remote-as 1

nei 5.5.5.5 update-source lo1

address-family vpnv4  可以交互VPN路由 进入地址家族

nei 5.5.5.5 active 激活邻居

nei 5.5.5.5 send-community extended 发送标签信息 否则RD RT无法出去

配置PE的BGP与IGP路由重分发 (两头的PE都要做)

router bgp 1

address-family ipv4 vrf A

redistribute rip metric 5

router rip

address-family ipv4 vrf A

redistribute bgp 1 metric transparent

show ip bgp 查看bgp路由

show ip vrf A detail

show ip route vrf A (查看vrf A 的路由表)

show ip protocols vrf A

show ip bgp vpnv4 all  (查看路由)

show ip bgp vpnv4 all summary (注意与show ip bgp summary的区别)

show ip bgp vpnv4 all labels    查看MPBGP栈底标签 (in label 本地绑的标签,out label 对方的PE绑的标签)

show ip bgp vpnv4 vrf A labels

show ip cef summary

show ip cef detail

show ip cef 1.1.1.1 detail

show mpls interface

show mpls ldp neighbor  查看邻居表

show mpls ldp bindings  查看内部ldp标签

show mpls ldp discovery detail

show mpls forwarding-table 查看转发表

outgoing

untagged  把标签完全弹掉 [V]代表栈底标签

aggregate 汇聚,直连的弹出

配置PE-P之间的IGP和MPLS

int lo1

ip add 2.2.2.2 255.255.255.255

int s0/1

no sh

ip add 10.1.12.2 255.255.255.0

router ospf 1

network 2.2.2.2 0.0.0.0 area 0

network 10.1.12.2 0.0.0.0 area 0

int s0/1

mpls ip

配置PE-CE之间的EBGP邻居

针对VRF-B

router bgp 1

address-family ipv4 vrf B

neighbor 192.168.27.7 remote-as 78

netghbor 192.168.27.7 active

neighbor 192.168.27.7 as-override  (不加这条的话,会导致同一AS号内无法学到路由信息)  1 78 i

配置PE-PE之间的MP-BGP

router bgp 1

no au

no syn

no bgp default ipv4-unicast

neighbor 5.5.5.5 remote-as 1

neighbor 5.5.5.5 update-source lo1

address-family vpnv4

neighbor 5.5.5.5 active

neighbor 5.5.5.5 send-community extended

router bgp 78

no syn

no au

bgp router-id 7.7.7.7

network 7.7.7.7 mask 255.255.255.255

neighbor 192.168.27.2 remote-as 1

neighbor 192.168.27.2 allowas-in 5 (最多可以部署十个)1 1 i

AS防环机制

BGP不会学习路由–夹带本地AS号

部署:发送者部署as-overrid 接收者部署allowas-in

neighbor 192.168.27.7 as-override

neighbor 192.168.58.5 allowas-in 5 

OSPF式的部署

router bgp 1

address-family ipv4 vrf A

redistribute ospf 200 match internal external nssa-exteral

router ospf 200 vrf A

redistribute bgp 1 subnets

OSPF模式

超级骨干OSPF

O IA O E2 看起来更友善  跟RIP 加transparent

Domain-id(域ID)

影响LSA 

3类LSA -O IA  

5类LSA – O E2

格式:0.0.0.X X为进程号

进程号一致3类,不一致5类

通过Domain-id手工修改

默认情况下,DID值由两边的卡客户进程号PE决定,若双方DID一致,则通告O IA 路由否则O E2路由

为了使两边的路由为O IA类型,可以通过手工方式在客户OSPF进程下PE修改其DID值

clear ip ospf process

3类LSA Down Bit

router ospf 1 vrf A

capability vrf-lite 关闭DN位

5类LSA Tag Field

用于放环,可以在清空ospf路由后查看update包中的option 查看DN位是否设置

shame-link 伪链路

R2配置

定义伪链路的源IP

int lo 100

ip vrf forwarding A

ip add 10.1.25.2 255.255.255.255

学习双方的IP地址

Router bgp 1

address-family ipv4 vrf A

network 10.1.25.2 mask 255.255.255.255 通告的是自己的路由

建立伪链路

router ospf 200 vrf A

area 0 sham-link 10.1.25.2 10.1.25.5 (伪链路所达到的效果便是将城域网路由变成O路由)

R1配置

修改cost值

int f1/0

ip ospf cost 65535

MPLS VPN 的互联网接入(集成服务)

实现不同分支的互联,实现互联网访问

解决方案一

super VPN (将互联网也看成一个客户)

默认情况下只需要将所有路由都export出来

要跟谁通信,就将对方的RT import进来

MPLS VPN功能,技能保证安全性,又要实现适度互访

解决方案二

Routing Leaking(路由泄露)

条件:

1.CE具备到Internet路由

2.Internet具备到CE的返回路由

3.运营商具备CE到Internet的双向泄漏

有公网的路由 ip route 0.0.0.0 0.0.0.0 s0/0

有私网到公网泄露 ip route vrf A 0.0.0.0 0.0.0.0 29.1.1.9 global

有私网的路由 router bgp 1 network 1.1.1.1 mask 255.255.255.255

有公网到私网泄露 ip route 1.1.1.1 255.255.255.255 s0/0 192.168.12.1

MPLS VPN 的跨域AS

解决方案一:背靠背方式 VRF to VRF

router ospf 1 vrf A

capability vrf-lite 关闭DN位检测

解决方案二:单跳EBGP方式 

router bgp 1

no bgp default route-target filter (关闭RT信息)

注明:没有部署VRF就没有RT,默认情况下,无RT的话,不接受任何BGP路由

关闭RT后ASBR能接收并传递BGP路由

解决方案三:多跳EBGP方式(考虑TTL以及环回口)

neighbor 1.1.1.1 ebgp-multihop 255

MPLS VPN的CsC (客户运营商)

部署一级运营商网络,并且保证二级运营商内部所有路由器通信

在二级运营商的PE端建立MP-BGP协议,传递最终路由

测试最终用户连通性

三层标签,pop一个 untag 一个,保证还有标签可以传输

VLAN间ACL和VACL概念不一样

转载于-http://blog.51cto.com/edges/429807
最近经常碰到有人问起Cisco交换机上如何实现VLAN之间的访问控制,一般我都会告诉对方,在三层交换机 上直接把ACL应用到相应VLAN的虚端口就OK了,其实我自己也没有机会去真正实践过。眼下正巧有个项目涉及到这方面的需求,于是对如何实现VLAN之 间的访问控制仔细研究了一番,这才发现VLAN访问控制列表(VACL)和VLAN之间的访问控制列表其实在实现方式上是有很大不同的,虽然从字面上看两 者差不多。

  我们常说的VLAN之间的访问控制,它的实现方式是将ACL直接应用到VLAN的虚端口上,与应用到物理端口的ACL实现方式是一样的。而 VLAN访问控制(VACL),也称为VLAN访问映射表,它的实现方式与前者完全不同。它应用于VLAN中的所有通信流,支持基于ETHERTYPE和 MAC地址的过滤,可以防止未经授权的数据流进入VLAN.目前支持的VACL操作有三种:转发(forward),丢弃(drop),重定向 (redirect)。
  VACL很少用到,在配置时要注意以下几点:
  1)       最后一条隐藏规则是deny ip any any,与ACL相同。
  2)       VACL没有inbound和outbound之分,区别于ACL.
  3)       若ACL列表中是permit,而VACL中为drop,则数据流执行drop.
  4)       VACL规则应用在NAT之前。
  5)       一个VACL可以用于多个VLAN中;但一个VLAN只能与一个VACL关联。
  6)       VACL只有在VLAN的端口被激活后才会启用,否则状态为inactive.
  下面,我以Cisco3550交换机作为实例来详细描述一下两者之间不同的实现方式。
  网络基本情况是划分了三个vlan:vlan10、vlan20和vlan30,vlan虚端口的IP地址分别为192.168.10.1/24、192.168.20.1/24和192.168.30.1/24.
  访问控制要求:vlan10和vlan20之间不能访问,但都能访问vlan30.
  (一)     通过VLAN之间ACL方式实现
 
******** 配置VLAN ********
Switch(vlan)# vlan 10 // 创建vlan 10
Switch(vlan)# vlan 20
Switch(vlan)# vlan 30
Switch(vlan)# int vlan 10
Switch(config-if)# ip address 192.168.10.1 255.255.255.0 // 配置vlan10虚端口IP
Switch(config-if)# int vlan 20
Switch(config-if)# ip address 192.168.20.1 255.255.255.0
Switch(config-if)# int vlan 30
Switch(config-if)# ip address 192.168.30.1 255.255.255.0

******** 配置ACL ********
Switch(config)# access-list 101 permit ip 192.168.10.0 0.0.0.255 192.168.30.0 0.0.0.255
Switch(config)# access-list 102 permit ip 192.168.20.0 0.0.0.255 192.168.30.0 0.0.0.255

******** 应用ACL至VLAN端口 ********
Switch(config)# int vlan 10
Switch(config-if)# ip access-group 101 in 
Switch(config)# int vlan 20
Switch(config-if)# ip access-group 102 in

******** 完毕 ********

  (二)     通过VACL方式实现
 
******** 配置VLAN ********

(同上)

******** 配置ACL ********
Switch(config)# access-list 101 permit ip 192.168.10.0 0.0.0.255 192.168.30.0 0.0.0.255
Switch(config)# access-list 101 permit ip 192.168.30.0 0.0.0.255 192.168.10.0 0.0.0.255
(不同之处:因为VACL对数据流没有inbound和outbound之分,所以要把允许通过某vlan的IP数据流都permit才行。VLAN10允许与VLAN30通讯,而数据流又是双向的,所以要在ACL中增加VLAN30的网段)
Switch(config)# access-list 102 permit ip 192.168.20.0 0.0.0.255 192.168.30.0 0.0.0.255
Switch(config)# access-list 102 permit ip 192.168.30.0 0.0.0.255 192.168.20.0 0.0.0.255

******** 配置VACL ********

第一步:配置vlan access map
Switch(config)# vlan access-map test1 //定义一个vlan access map,取名为test1
Switch(config-vlan-access)# match ip address 101 // 设置匹配规则为acl 101
Switch(config-vlan-access)# action forward // 匹配后,设置数据流转发(forward)
Switch(config)# vlan access-map test2 //定义一个vlan access map,取名为test2
Switch(config-vlan-access)# match ip address 102 // 设置匹配规则为acl 102
Switch(config-vlan-access)# action forward // 匹配后,设置数据流转发(forward)

第二步:应用VACL
Switch(config)# vlan filter test1 vlan-list 10 //将上面配置的test1应用到vlan10中
Switch(config)# vlan filter test2 vlan-list 20 //将上面配置的test1应用到vlan20中

******** 完毕 ********

  以上就是关于VLAN之间ACL和VACL的简单配置实例。我个人认为一般情况下,通过VLAN之间ACL实现访问控制比较方便,但是当 VLAN的端口比较分散时,采用VACL相对而言就要简单很多。不过使用VACL的前提是交换机支持此功能,目前可能只有Cisco 3550、4500和6500系列的交换机支持。

STP+RSTP+MST生成树协议介绍

原文地址:STP+RSTP+MST作者:Nj陌一

STP(Spanning Tree Protocol)

交换机间存在多条链路–导致网络环路–生成树逻辑打破环路–既解决环路问题又做到了链路冗余

主要作用:为了防止二层环路问题
1、STP将交换机网络中任何两点之间的多条链路置于Blocking状态,只留一条活动链路,当活动链路失效时,立即启用被Block的链路,提供网络冗余的效果。
2、STP要构建出无环的交换网络,就必须在网络中选出一台根交换机,Root。相当于Hub-spoke中的Hub。不是Root的交换机需要留出一条活动的链路去往Root,因此只要普通交换机到根是通的,到其他交换机也是通的。
3、STP在发送数据包测试网络是否有多条链路,是靠BPDU(bridge protocol data units)来完成的,同台交换机发出去的BPDU都被做上相同的标记,只要任何交换机从多个接口收到相同的BPDU,就表示网络中有冗余链路,因此需要STP断开Block多余链路。
4、BPDU数据包包含以下信息:
根交换机的bridge ID
发送交换机的bridge ID
到根交换机的Path Cost
发送接口以及优先级
Hello、 forward delay、max-age time
同台交换机发出的BPDU,bridge ID都是一样的,因为是用来标识自己的,其中bridge ID由两部分组成:
bridge优先级和MAC地址,默认优先级为32768.交换机上的每个接口也是有优先级的,默认是128,范围:0-255

注:在STP协议中,所有优先级数字越小,表示优先级越高,数字越大,优先级越低。交换机上的端口,根据端口的带宽不同,Path Cost值也不同,以下参数为标准:

10 Mb/s:100

100 Mb/s:19

1000 Mb/s:4

10000 Mb/s:2 

Root Port

每个非根桥设备到根桥最近的端口 每台非根桥设备只有一个根端口  

Designated Port

每条线路到达根桥最近的端口 根桥所有的端口都为指定端口  

Block Port

剩下的所有端口为阻塞端口    

5、根桥、根端口、指定端口、Block端口的选举:

根桥的选举原则:(唯一)

1、最小的Priority  (默认32768)  SW1#show  spanning-tree   vlan  1 (一个VLAN一棵树 32768+1)

2、最小的MAC地址

调整根桥的方式

SW1(config)#spanning-tree vlan 1-4094 root primary     (优先级自动降低两档)

SW2(config)#spanning-tree vlan 1-4094 root secondary(优先级自动降低一档)

根端口的选举原则/指定端口的选举原则 

1

最小的Root ID           默认32768

2

最小的Cost值

3

最小的发送者的Bridge ID                            默认32768

4

最小发送者端口的Priority                            默认128

5

最小发送者的Port ID

 

SW4的根端口的选举:

      SW4上从所有端口到达根的Path Cost值都为19×2=38,所以从比较Path Cost值,无法选出根端口,接下来比较上一跳交换机Bridge-ID,也就是比较SW2与SW3的Bridge-ID,所以选择往SW2的方向,然而通过端口F0/19和F0/20都可以从SW2到达根交换机,所以接下来比较端口F0/19和F0/20对端交换机端口的优先级,因为SW2的F0/19端口优先级为128,而F0/20的端口优先级为112,所以SW4选择连接SW2的F0/20的端口为根端口,即SW4的F0/20为根端口,如果此步还选不出,SW4将根据对端端口号做出决定,也就是F0/19和F0/20,数字小的为根端口,也就是F0/19。

注:根交换机上所有的端口最终都为指定端口。一个端口,在STP中只能处于一种角色,不可能是两种角色。

Blocking    丢弃所有收到的数据帧,不学习MAC地址,能收BPDU但不发BPDU。

Listening   丢弃所有收到的数据帧,不学习MAC地址,能收BPDP的处理BPDU,并进行STP计算。

Learning    丢弃所有收到的数据帧,会学习MAC地址,能收BPDU和处理BPDU。

Forwarding正常转发状态,能转发收到的数据帧,能学习MAC地址,接收并处理BPDU。

Disabled    丢弃所有收到的数据帧,不学习MAC地址,能收BPDU,除此之外不会再做其它的。

         交换机启动,都认为自己是根交换机,然后从所有接口向网络中发送BPDU,称为configuration BPDU,所以configuration BPDU是根交换机发出的。当交换机收到更优Bridge-ID的configuration BPDU,会将它从自己所有接口转发出去,并保存在接口,如果收到差的configuration BPDU,则全部丢掉,所以在交换网络中,只有根交换机的BPDU在转发,其它普通交换机的BPDU不会出现在网络中。
      根交换机的BPDU会在每个hello时间往网络中发送一次,hello时间默认为2秒钟,也就是交换机的BPDU会在每2秒钟往网络中发送一次,如果普通交换机在max-age时间内没有收到根交换机的BPDU,则认为根交换机已经失效,便开始重新选举BPDU,默认max-age时间为20秒,即10倍hello时间。
      除了hello时间和max-age时间外,还有一个forward delay时间,默认为15秒,接口在经过Listening 和Learning状态时,都会分别停留一个 forward delay时间,也就是说接口从Listening状态到Learning状态,最后变成转发状态,需要经过两个forward delay时间共计30秒。
STP收敛速度慢的原因是收敛算法需要一些时间来确定一条可替代的链路,缺省时间是50s,即20s(Blocking→Listening)+15s(Listening→Learning)+15s(Learning→Forwarding)。

Common Spanning Tree(STP) 协议号:IEEE 802.1d

STP端口状态blocking、listening、disabled、learning、forwarding(5种状态);故障50s启用black端口
特点:
交换机只进行一次STP计算,无论交换机上有多少个VLAN,所有流量都会走相同的路径。
Rapid Spanning Tree Protocol(RSTP)协议号:IEEE802.1w
RSTP将STP不发送数据段的blocking、listening、disabled三个状态归结为一个状态discarding状态
RSPT的端口状态:discarding、learning、forwarding(三种状态);故障6s启用discarding接口
特点:
当运行STP时,如果根交换机失效,那么需要等待10个hello时间,也就是20s收不到交换机PBDU
才能发现,再将block的端口过滤到forwarding状态,还需要两个forward delay时间共计30s,所以STP在网络中出现故障,需要经过50s才能启用block端口;而RSTP则只需要3个hello时间,即6s收不到根交换机PBDU,便认为失去连接,就立刻启用discarsding状态的接口,RSTP在根交换机失效后,并不会进行完整的STP运算,会在该启用接口时立即启用,因此网络收敛速度很快,RSPT会在低于1s的时间内恢复网络。
Multiple Spanning Tree Protocol(MSTP) 协议号:IEEE 802.1s
不同厂商(Cisco、H3C、HUAWEI)之间进行互操作只能运行MST
将需要进行相同STP计算的VLAN映射到同一个 STP实例中,即无论有多少个VLAN,只要实际需要多少条不同的路径就根据需要的路径维护相同的STP实例数,从而大大节省了系统资源。
MST是在RSTP的基础之上运行的,所以具有快速收敛的功能,但是不能不运行RSTP时运行MST,RSTP是随着开启MST时自动开启的。MST最多支持65个STP实例,但是映射到实例的VLAN数量是没有限制的。默认所有的VLAN都在实例0.
MST还需要通过分区域管理,即region,交换机要在同一region进行相同的STP运算,必须region name和revision number一致,最重要的是VLAN和实例的映射也要一致,否则STP计算出来的网络将不是你想要的网络,一个VLAN只能被映射到一个实例,一个网络可以有多个MST revision,便于各自独立。
 
Pe-VLAN Spanning Tree plus (PVST+) Cisco私有协议 IEEE802.1d
PVST+会在每个VLAN进行一次STP运算,也就是会根据VLAN数的不同计算STP的次数也不同,并且每个VLAN的STP信息是单独保留的;PVST+只支持128个实例(instance),如果交换机上配置的VLAN数超过128个,那么128个以外的VLAN将没有STP在运行,所以此时剩余的VLAN将出现环路。
Extended System ID
默认交换机的Bridge ID的优先级是32768,当开启Extended System ID功能之后,每个VLALN的默认的Bridge-ID优先级就不再是32768了,需要再加上VLAN号码。
如果VLAN1的Bridge-ID优先级就是32768+1=32769 
Rapid PVST+  Cisco私有协议  IEEE802.1w
其实就是具有RSTP特性的PVST+
拓扑变更:
#在配置STP时,Bridge-ID的优先级,端口的优先级,hello time,max-age time,forward delay time多可以手工修改,而Bridge-ID的优先级必须为4096的整数倍,端口优先级必须为16的整数倍。
#在修改时,PVST+可以基于每个VLAN修改,MST只能基于实例,而不能基于VLAN,因为一个实例会有多个VLAN
注意:链路的全双工和半双工,在STP中,被分为不同的链路类型,如果是全双工(full-duplex)叫做point-to-point(P2P);半双工(half-duplex)接口下可以手动修改:spanning-tree link-type point-to-point