第一章框式交换机系列产品介绍

以太网交换机是华为数通攻城狮接触最多的产品之一。其型号之复杂、规格之多样、名称之类似常常让人晕头转向。小编我每次碰到有人询问型号差别、规格差别、特性对比什么的,都是拿出满屏的资料,逐个查阅对比解决的。可谓久病成良医,久而久之,小编我也总结出了一些交换机产品的规律,和大家分享一些干货,希望大家多多批评指正。

产品形态众多,实际有理可循

华为交换机秉持着业界数字越大越B的潜规则,分S1700S2700S3700S5700S6700S7700S9700S12700系列。我们先来比较一下框S7700S9700S12700系列。华为框式交换机名字的最后两位代表着业务槽位数目,S12712代表该款交换机12个业务槽位。以下图片为华为所有框式交换机,包括两S12700、三S9700和三S7700

框式三种形态,见证网络发展

网络发展第一阶段,华为推出S7700系列交换机作为网络核心层交换机。网络发展第二阶段,随着网络规模和带宽的要求加大,对交换机性能要求加大。华为推出了性能更强劲S9700系列交换机。此S7700定位变更为中型企业的核心层交换机和大型企业的汇聚层交换机。同时,数据中心网络发展迅猛,华为开始研发专门的数据中心交换CE系列交换机。网络发展第三阶段,网络需求量大幅增加,响应速度也要求越来越快。华为推出敏捷交换S12700,同时作为企业核心层交换机使用,可以让复杂的需求实现时间3年减少6个月。同时,华为S12700的经验扩展,推出了一套S7700S9700升级到敏捷交换机的解决方案。框式产品型号推荐网络位置如下表和下图(S12700为例)所示:

网络类 S7703/S7706/S7712 S9703/S9706/S9712 S12708/S12812
园区网络 核心层/汇聚层 核心层 核心层
数据中 NA 核心层/汇聚层 核心层/汇聚层

敏捷亮剑九州,引领时代潮流

华为轿 S12700推出的第一6个月(20131020144月),按照客户需求快速实现了大量的新功能,并共享S9700S7700使用。同时,华为正在尝试着开发盒式敏捷交换机,届S12700的所有功能,将共享给盒式敏捷交换机使用。框式产品型2014年主要特性变化如下表:S7700&S9700&S12700License用来控MPLSNQAIPv6和分流特性,只有加载相应License之后,这些功能才生效。如果没License,相关命令可以在设备上配置,但是功能不实现。另外,通过加载不同LicenseX1E单板可以扩FIB规格、PPPoE用户接入数量或AP接入数量。

第二章盒式交换机系列产品介绍

上期交换机系列产品介绍中我们分析了S7700S9700S12700系列华为框式交换机,本期我们一起来揭秘华为盒式交换机。

根据三层特性,区分产品形态

华为盒式交换机分为S1700S2700S3700S5700S6700

从产品功能上来看,S1700S2700S5700LI二层交换机;而S3700S5700S5700LI除外)、S6700三层交换机。

P.S.三层交换机与二层交换机相比,多支持了动态路由协议等三层特性。当然,如果你不知道哪些是三层特性也没关系,小编我已经帮你总结在帖子最后的【江湖小贴士】中啦。)

客户需求变化,57见招拆

S5700是华为在企业网最早推出的交换机,形态也是最多的。那为什S5700LI和其他S5700不一样,是二层交换机呢S5700LIS5700精简型的意思。而出精简型的目的主要是迎合各个项目的定制需求,是目前华为的明星产品之一。例如小编在上海时遇到一个项目,产品经理给了个报价,客户提出只想用S5700透传一下,不需要三层的功能,希望华为卖便宜点,但是接口必须是48个千兆电口。

特性攻

当然,既然有精S5700的需求,也就有增S5700的需求。于S5700又推出了增强型S5700EI和高级型S5700HI。为了命名统一,原来S5700的标准型也改名S5700SI。也就是说,性能和特性丰富程度上精简型S5700LI <标准S5700SI <增强型S5700EI <高级型S5700HI。其中特性主要区别如下表所示:

支持的特性 形态支持情
S5700LI S5700SI S5700EI S5700HI
RIP/RIPng N Y Y Y
OSPF/BGP/PIM/MPLS/Netstream N N Y Y
MPLS/Netstream/硬件以OAM/BFD N N N Y

万兆接口时代67肩负重任

随着网络进入万兆接口时代,华为在S5700的基础之上,推出了S6700EI

S6700是业内最高性能的交换机之一,同时提供最48个全线速万兆接口。在数据中心中,S6700作为接入层交换机提供万兆服务器接入方案。在企业网络和园区网中,S6700下行通过千兆接口连接接入交换机,提供高性能大容量交换,上行通过万兆光口接入核心交换机,构成万兆骨干、百兆到桌面的企业网全网解决方案,满足用户高带宽、多业务的需求。

百兆接入桌面,27应运而

S6700解决了万兆骨干的难题,百兆到桌面的需求,华为推S2750百兆交换机解决。

在企业网络和园区网中,S2750通过百兆接口接入终端用户,上行通过千兆接口接入汇聚层交换机。S2750提供PoEVoice VLANNAC等功能,可以轻松的提供多样化的桌面接入功能。

盒式交换机网络位置汇

S3700可以看成支持部分三层特性的S2700,下行是也百兆接口,2014年已经不出新版本了;S1700可以看成S2700的硬件分支款型,小编我就不浪费大家的时间多做唠叨了。综上所述,华为盒式交换机在网络中的推荐部署的位置如下表所示:

推荐网络位 S1700 S2700 S5700 S6700
SOHO/桌面终端 接入 - -
小型园 - 接入层 汇聚层/接入 -
中型园 - - 接入层 汇聚层
大型园 - - 接入层 汇聚层
数据中 - - - 接入层

提问:哪些特性是三层特性?回答:URPFBFDVRRP、子接口、二三层切换VLAN聚合、重定向、策略路由、DHCPv6服务器、DHCPv6中继、MDNS中继、Bonjour中继、PIM、组播路由管理、MRMNAP、观察端口组、MPLSLDPRSVPSeamlessGREL3VPNVLLPWE3PWRIPISISOSPFBGP、路由策略、策略路由

第三章教您如何识别盒式交换机型号及版本

几日不见,听闻江湖中的小伙伴们对小编甚是想念,这不小编立马现身来为大家解惑啦。上一期小编为小伙伴们介绍了全系列的盒式交换机,这么多的系列,每个系列里又有少则几款、多则几十款的型号,是不是正在头疼如何区分它们间的差异、如何选取到自己需要的款型?不急,下面小编来为大家一一解答。

知识点1:您是否知道盒式交换机如何选型,哪些是二层交换机,哪些是三层交换机

S1700全部款型均是二层交换机,不同款型分下行百兆和下行千兆(型号名称中带有G的表示下行口为千兆;没有G为下行百兆)
S2700全部款型均是下行百兆二层交换机
S3700全部款型均是下行百兆三层交换机
S5700S5700-LI系列S5700S-LI系列和S5710-LI系列是下行千兆二层交换机(只要名称中带LI的都是二层),其余系列是下行千兆三层交换机
S6700是全万兆三层交换机。

特性攻

知识点2:您是否知道插卡的作用,哪些交换机型号是支持插卡的,如何识别?

当交换机上的固有接口不能满足小伙伴们的需求,可以选用特定类型的插卡。插卡一般都是选配的,主要提供一些更丰富的功能和应用,如更高速率的上行接口、专用的堆叠卡堆叠功能等。

交换机系列 是否支持插
S1700 不支
S2700 不支
S3700 仅HI系列支
S5700 S5700-LI系列、S5700S-LI系列和S5700-26X-SI-12S-AC号外,其余型号支
S6700 不支持

告诉小伙伴们一个快速识别的方法:只要型号名称中带C字样的,表示这款型号支持插卡,如S5700-28C-EI。比较特殊的几款S5700-SI系列中的S5700-24TPS5700-48TP名称中不带C,不支持业务口插卡,但是支持堆叠插卡。

附插卡清单:

知识点3:您是否知道哪些交换机型号支PoE供电,最多能支持多少接口?

交换机型号名称中带有PWR字样的表示这款型号支PoE供电,S5710-52C-PWR-EI。交换机是通过以太网电接口对外PD提供PoE供电的,所PoE交换机都支802.3af802.3at两种标准,其802.3af标准支持每端口最15.4W的供电能力802.3at标准支持每端口最30W的供电能力。对应哪种标准由使用PD决定,交换机可以自适应。每款PoE交换机能支持多少接口提供PoE供电与使用的电源模块、对应的标准、设备本身的限制都有关系,这里小编只为小伙伴们给出每个系列理论上可以支持到的最大接口数量,如果小伙伴们想了解到具体型号可以查看对应产品的《硬件描述》手册。

交换机系列 支持的最大PoE供电接口数(802.3af标准 支持的最大PoE供电接口数(802.3at标准
S1700 不支持PoE供
S2700 8/16/24/48 4/8/12/24
S3700 8/16/24/48 4/8/12/24
S5700 8/12/16/24/48 4/6/8/12/24/26/48
S6700 不支持PoE供电

如果小伙伴们想了解更多与交换机型号名称相关的内容,可以参考交换机的命名规则,详见

知识点4:您是否知道交换机出了哪些软件版本?与型号的匹配关系是怎样的?

华为盒式交换机按SMB交换机(S1700)和非SMB交换机(S2700/3700/5700/6700)区分为两套不同的软件版本,两套软件版本间无关联。下面小编分别用一张图和一张表来为小伙伴们列出各系列交换机软件版本的演进过程和版本与型号的匹配关系S1700S1700的三个软件版本为独立关系,彼此之间不能进行升、降级,比V1R6C00版本支持的设备不能升级到V1R7C00S2700/3700/5700/6700:不同型号与版本间的匹配关系不同,详见下表。同一型号在支持的软件版本间可以进行升、降级。

第四章揭秘如何识别单板与交换机的支持关系

曾经,您是不是有个疑问:这个单板是哪个交换机支持的呀?或者有个疑问:这个交换机支持些啥单板呢?本期,小编就透彻地给您解释一下:单板与交换机的支持关系是啥样的。

这个单板是哪个交换机支持的?

总有那么一个时刻,天空飘来一个问:这个单板是哪个系列交换机支持的呢?您解决这个问题只需三个字——看型号。规律如下

如果见到以ES”开头的型号,它一定是S7700支持的单板,例ES0D0X12SA00
如果见到以“EH”开头的型号,它一定是S9700支持的单板,例EH1D2X12SSA0
如果见到以“ET”开头的型号,它一定是S12700支持的单板,例

ET1D2X12SSA0。此时您可千万不要认为已经全懂了。

试问1S7700支持的单板都是以“ES”开头的?

答案是否定的,它还支持LE0D0VAMPA00和全系列都通用单板。

全系列都通用单板共五款:ACU2ET1D2FW00S00ET1D2FW00S01ET1D2FW00S02ET1D2IPS0S00

试问2S9700支持的单板都是以“EH”开头的?

答案是否定的,它还支持LE0D0VAMPA00和全系列都通用单板。试问3S12700支持的单板都是以“ET”开头的?

答案依然是否定的,它还支持EH1D2PS00P00ACU2。以上情况总结如下表所示:

产品系列 支持的单
S7700 型号ES”开+ LE0D0VAMPA00+全系列都通用单
S9700 型号以“EH”开头+ LE0D0VAMPA00+全系列都通用单
S12700 型号以“ET”开头+ EH1D2PS00P00+ ACU2

此时依然,您千万不要认为已经全懂了。呵呵,因为,您还得看版本。单板、交换机、版本的详细关系您没必要背下来,您只需查阅《硬件描述》手册“单板”中的“配套关系”节点。您可登录 华为网站 获取对应产品的《硬件描述》手册。例如,查S12700主控ET1D2MPUA000的支持关系:

一句话,标准的解答是这样的:某青年:“这个单板是哪个交换机支持的?”您:“这个单板是从某某版本起,在某某交换机支持的。”此时,您或许已经懵了,恭喜!或许真的全懂了,依然恭喜!

这个交换机支持些啥单板呢?

交换机支持的单板主要有两类

接口板:专门数据接收、发送等而存在
增值业务板:专为防火墙AC功能、NAT等特定业务而存在。

交换机支持哪些接口板呢?

接口板主要是用来交换(接收和转发)数据的,交换数据的快慢势必是大家最关心的。在交换数据时,接口板遵循多样的规则,因此接口板支持的特性、规格也是大家最关心的。正如公路分高速、国道、省道等一样,按照速率,接口板分40GE10GEGEFE接口板。详细分类及支持关系如下表(表中仅列举接口数量最多的接口板):

接口板类 S7700 S9700 S12700
FE接口 48*FE接口 48*FE接口板 不支
GE接口 48*GE接口 48*GE接口 48*GE接口
10GE接口 40*10GE接口 48*10GE接口 48*10GE接口
40GE接口 2*40GE接口 8*40GE接口 8*40GE接口板

正如公路有专用道、混合车道等一样,按照功能,接口板又可分为:F系列、S系列、E系列、B系列X1E系列。正如专用道又分大型车专用道、中小型车专用道等一样,按照MAC表项规格,每个系列又分为AMAC表为32k)、CMAC表为128k)、DMAC表为512k)三个子系列。详细分类及支持关系如下表:交换机支持的增值业务板情况如何?

正如公路需要交警、监控一样,网络需要防火墙、IPsec、入侵检测、反病毒等安全功能。正如公路需要限行、红绿灯一样,网络需要负载均衡、NATNetwork Address Translation )、NetStream等特定业务功能。小编把交换机支持的增值业务板列举如下
SPU单板:为交换机提供负载均衡、防火墙、NATIPSecIP SecurityNetStream等业务功能
OSP单板:可安装操作系统和应用软件来完成应用软件的功能。目前供安装的软件有IPS应用软件ACU单板:该单板可看做独AC设备,旁挂于交换机上做无线接入控制器NGFW防火墙单板:可IP网络迅速灵活地整合防火墙NATVPN等安全功能。
特性攻
IPS单板:可为IP网络迅速灵活地整合入侵防御、反病毒DDoS攻击防御等

安全功能。详细分类及支持关系如下表:

单板类 S7700 S9700 S12700
SPU单板 支持LE0D0VAMPA00 支持LE0D0VAMPA00 不支
OSP单板 支持ES1D2PS00P00 支持EH1D2PS00P00 支持EH1D2PS00P00
ACU单板 支持ACU2 支持ACU2 支持ACU2
NGFW防火墙单板 支持以下单板ET1D2FW00S00 ET1D2FW00S01 ET1D2FW00S02 支持以下单板ET1D2FW00S00 ET1D2FW00S01 ET1D2FW00S02 支持以下单板ET1D2FW00S00 ET1D2FW00S01 ET1D2FW00S02
IPS单板 支持ET1D2IPS0S00 支持ET1D2IPS0S00 支持ET1D2IPS0S00

第五章用户登通过Console口登录,看这里!配Telnet方式登录,还是看这里!

昨日小编我在家闲坐,意外收到了一份英雄帖,打开乍一看真是不明觉厉~

据诸葛家的独门秘籍记载,小伙伴们要登录设备的话,就得在登录之前完成相关动作,很多无法登录问题都是没有正确完成动作导致的哦。今日就主打介绍目前最常用的两种登录方式:Console口登录和Telnet方式登录。

通过Console口首次登录新设备

小伙伴们需要为第一次上电的设备进行配置时,需要通Console口登录设备。如何才能通过Console口登录设备呢?请向下瞅:

步骤1:连线。

请使用产品随机附带的Console通信电缆的DB9(孔)插头插入PC19芯(针)串口插座,再将RJ-45插头端插入设备的Console口中。

设备在双主控板的情况下:对V200R003及之前版本,必须Console口插到主用主控板上;对V200R005及之后版本,连接任意主控板Console口可以登录设备。

步骤2:在PC1上打开终端仿真软件,新建连接,设置连接的接口以及通信参数。

PC端可能会存在多个连接接口,这里需要选择的是连Console线缆的那个接口。一般情况下,选择的接口是COM1

步骤3:按“Enter”键,系统提示需要输入密码时请配置密码。配置密码后即可登录。

密码要符合密码要求哦!密码为字符串形式,区分大小写,长度范围616

输入的密码至少包含两种类型字符,包括大写字母、小写字母、数字及特殊字符。

特殊字符不包括“?”和空格。

配置远程登录设备Telnet方式)

小伙伴们要是希望远程登录和管理设备,可以在服务器端配置Telnet用户使

AAA验证登录。组网图瞅瞅上面那个~~~~~

步骤1:从PC1通过设备Console口登录设备。

步骤2:配置设备名称和管理IP地址

<Quidway> system-view [Quidway] sysname Server [Server] interface ethernet 0/0/0 [Server-Ethernet0/0/0] ip address 10.137.217.177 24 [Server-Ethernet0/0/0] quit

步骤3:配置路由协议,保证PC2和设备之间路由可达。

步骤4:配置Telnet用户的级别和认证方式

[Server] telnet server enable [Server] user-interface vty 0 4 [Server-ui-vty0-4] user privilege level 15 [Server-ui-vty0-4] authentication-mode aaa [Server-ui-vty0-4] quit

特性攻

[Server] aaa [Server-aaa] local-user admin1234 password irreversible-cipher Helloworld@6789 [Server-aaa] local-user admin1234 privilege level 15 [Server-aaa] local-user admin1234 service-type telnet [Server-aaa] quit

步骤5:从PC2Telnet方式登录设备。

选择“开> 运行”,输入cmd。进入命令提示行,并输telnet 10.137.217.177

类似如:C:\Documents and Settings\Administrator> telnet 10.137.217.177

回车后,在登录窗口输入用户名和密码,验证通过后,出现用户视图的命令行提示符。表示登录成功。

第六章网监利器镜像之原理配置篇

大家还记得慕容世家的以彼之道还施彼身吗?顷刻间复制对手的武功招式,再施加彼身,打的对方措手不及。想当年,慕容复就因此技而冠绝天下,与乔峰并称“南慕容北乔峰”,为无数武林豪杰所敬仰。在我们的网络江湖上,也有这样一门绝学,甚至可以说是“以彼之道还施彼身”的改良版。那么他是谁?他可以复制网络中的任何一种业务报文,可以是他,也可以是她。他很有内涵,亦如他的名字——镜像。他是网监设备的小伙伴,他默默地为他奉献着人生最绚烂的年华。咳咳,那么,什么是镜像?镜像是指将经过指定端口(镜像端口)或者指定VLAN镜像VLAN)的报文复制一份到另一个指定端口(观察端口),然后转发到网络监控设备,供网络管理员进行网络监控与故障管理。看官们可以通过下面这张图了解下镜像具体的工作机制,以及需要注意的地方。

那么镜像在网络维护中具体能做些什么呢?

故障定位在系统运行过程中,可能由于系统软件处理异常、网络设备硬件故障、计算机病毒或用户不正常使用等原因造成网络上流量异常或产生错误报文。为了在不影响系统运行的情况下对网络上的报文进行分析,以定位故障产生的原因,这时候就可以使用镜像。业务可视为了更好的理解企业内部业务流量模型, 在网络汇聚或核心交换机上,对业务流量进行镜像,以便在不影响正常业务的情况下,使企业各类应用清晰可视。比如说, 多少用户在上班时间访问QQ;员工访问公司内部服务器的访问量排名情况。

特性攻

入侵检测为了发现各种攻击企图、攻击行为或者攻击结果, 以保证网络系统资源的机密性、 完整性和可用性, 在企业的上行接口,将所有出入的流量镜像到一个IDS服务器上,进行实时分析。比如外部访问公司服务器的访问量激增,分析一下这些是不是属于攻击报文等。

另外,要特别说明一下,江湖就要有江湖的规矩,坏了规矩,就会招致整个武林的一致声讨。所以,虽然镜像功能如此的强大,但是在华为S系列交换机上用的是时候,请谨记:

该功能主要用于网络检测和故障管理,可能涉及使用个人用户某些通信内容。华为公司无法单方采集或存储用户通信内容。建议您只有在所适用法律法规允许的目的和范围内方可启用相应的功能。在使用、存储用户通信内容的过程中,您应采取足够的措施以确保用户的通信内容受到严格保护。好了,看官们现在了解到镜像强大的威力之后,那我们下面就来看看华S系列交换机哪些不同方式的镜像功能。

功能 定义 产品支持情况
端口镜像 将指定端口(镜像端口)的报文复制到观察端口。 全支持
流镜像 将指定类型的报文复制到观察端口。 全支
VLAN镜像 将指定VLAN(镜像VLAN)的报文复制到观察端口。 框式交换机和S5720HI不支
MAC镜像 将指定MAC地址的报文复制到观察端口。 框式交换机和S5720HI不支持

如何配置镜像?

无论上述的哪种方式,主要配置下面两步:创建观察端口。不同的场景可以选择不同的命令,如下表所示。PS:如果需要将报文复制到多个观察端口,可以将上面的命令执行多次,或者配置观察端口组。

场景 对应配置命令
本地镜像:观察端口与监控设备直连 observe-port [ <observe-port-index> ] <interface interface-type interface-number>
二层远程镜像:观察端口与监控设备通过中间二层网络相连 observe-port [ <observe-port-index> ] <interface interface-type interface-number> vlan <vlan-id>
三层远程镜像:观察端口与监控设备通过中间三层网络相连。(仅框式交换机支持 observe-port [ <observe-port-index> ] <interface interface-type interface-number> destination-ip <dest-ip-address> source-ip <source-ip-address> [ dscp <dscp-value> | vlan <vlan-id> ] *

将指定的报文镜像到观察端口。不同的镜像方式对应有不同的命令,如表所示。PSboth | inbound | outbound分别表示镜像设备双向/入方向/出方向的报文。下面小编再通过简单的组网环境演示一下我们常用的二层远程端口镜像是如何配置的吧。

镜像方式 对应配置命令
端口镜 port-mirroring to observe-port <observe-port-index> { both | inbound | outbound }
流镜像 基于MQCmirroring to observe-port <observe-port-index>基于ACLtraffic-mirror
VLAN镜 mirroring to observe-port <observe-port-index> inbound
MAC镜 mac-mirroring mac-address to observe-port <observe-port-index> inbound

如图所示,员工ADNS服务器在同一个VLAN,通过二层网络通信,现在监PC通过在SwitchA配置的二层远程端口镜像,来监控员A访问DNS服务器的记录1、具体每台交换机上的配置如下

SwitchA的配置文件如下

# sysname SwitchA # vlan batch 10 20 //VLAN10为用户VLANVLAN20用于转发镜像报# observe-port 1 interface GigabitEthernet0/0/1 vlan 20 //配置GE0/0/1为二层远程观察端口,用的观察端口索引为1,远程镜VLANVLAN20,复制的报文会通GE0/0/1VLAN20# interface GigabitEthernet0/0/1 //观察端口不需要加入VLAN20,上面的配置已实现镜像报文通过GE0/0/1VLAN20# interface GigabitEthernet0/0/2

port link-type access port default vlan 10 //端口加入VLAN,员工ADNS之间通port-mirroring to observe-port 1 inbound //GE0/0/2入方向的报文(即接收到

的员工A发送的报文)镜像到观察端口1(即GE0/0/1# interface GigabitEthernet0/0/3

port link-type access port default vlan 10 //端口加入VLAN,员工ADNS之间通

SwitchB的配置文件如下

# sysname SwitchB # vlan batch 20 //用于转发镜像报文到监PC # interface GigabitEthernet0/0/1

port link-type trunk

port trunk allow-pass vlan 20 //端口加入VLAN,用于转发镜像报文到监控PC # interface GigabitEthernet0/0/2

port link-type access port default vlan 20 //端口加入VLAN,用于转发镜像报文到监控PC 2、在SwitchA查看端口镜像的配置情况:

检查员工ADNS服务器间通信的报文是否镜像到监控PC先在监控PC上启用抓包工具,然后在员工APC上向DNS服务器发个ping报文。最后通过抓包工具抓取报文。

可以发现抓取到了源地址为员工A地址、目的地址为监PC地址的ping报文。

第七章网监利器镜像之规格

Hi,小伙伴们~小编我又浓重登场了~在上一期的《 镜像原理配置篇 》中,我们介绍了镜像工作的基本原理,他在网络中的具体应用,以及如何配置。不过在实际应用配置时,小伙伴们可能会遇到这样的问题:我想将交换机连到多台监控设备上,为啥配置的时候一直提示资源已达上限,配不下去?

其实,很多时候这与我们的镜像规格有关。由于芯片能力、镜像内部处理流程等因素的问题,导致了不同交换机间的镜像规格差异较大。因此,小编费了九牛二虎之力,将不同版本不同形态交换机的镜像规格收集整理了一下,希望能对小伙们有所帮助~本期将介绍下面几块内容

  1. 观察端口规格:如果需要了解交换机最多能配置多少个观察端口,以及如何计算剩余可用观察端口资源,可以查阅这部分内容
  2. 2. 1N镜像规格:如果需要了解1个镜像端口能同时绑定到多少个观察端口,可以查阅这部分内容
  3. 3. N1镜像规格:如果需要了解最多能有多少个镜像端口可以绑定1个观察端口,可以查阅这部分内容
  4. 4. MN镜像规格:如果需要了M个镜像端口能同时绑定到多少个观察端口,可以查阅这部分内容
  5. 如何解决设备观察端口不足的问题:如果想知道在交换机镜像资源有限的情况下,如何通过其他方法解决这个问题,可以查阅这部分内容。

观察端口规格

观察端口的配置方式介绍观察端口规格前,小编先和大家介绍下观察端口的配置方式。因为不同的配置方式对一部分交换机的观察端口规格会有影响。在V200R005以前的版本交换机只支持逐一配置单个观察端口。V200R005版本开始,交换机支持单个配置和批量配置两种方式,而且这两种方式可以同时配置。批量配置的观察端口相当于加入了一个观察端口组,镜像端口在配置的时候会绑 定这整个观察端口组。所以批量配置一般在1N镜像的时候使用,主要是为了 配置方便,如图所示。

观察端口规格观察端口规格包括两方面内容,一方面是我们的交换机最多能配多少个观察端口;另一方面是镜像端口入方向能绑定多少个观察端口,出方向能绑定多少个观察端口。我们在配置镜像功能时,这两方面的内容都需要注意。下面1~5分别列举了不同版本不同框式单板和盒式交换机的观察端口规格:

1 华为S系列框式交换机不同单板轿 V200R001版本~V200R003版本的观察端口规格

单板 入方向可绑定观察端口数量 出方向可绑定观察端口数量 可配观察端口数
S系列单 2 1 3
FA系列单 2 1 3
E系列单 2 1 3
FC系列单 1 1 2

整机最多可以配置8个观察端口。

2 华为S系列框式交换机不同单板轿 V200R005版本及以后版本的观察端口规格

单板 入方向可绑定观察端口数量 出方向可绑定观察端口数量 可配观察端口数
SA系列单板(不包ES0D0X12SA00(S7700)EH1D2X12SSA0S9700ET1D2X12SSA0S12700 4 1 5
ES0D0X12SA00(S7700)EH1D2X12SSA0S9700ET1D2X12SSA0S12700 4 2 6

1 : X1E系列单板的观察端口规格因观察端口配置方式的不同而不同。如果是单个配置,最多可配8次,即总共可8个观察端口;如果是批量配置,一次最多可配置64个观察端口,最多可配置8次,理论上最多可配置8 x 64 = 512个观察端口;入方向/出方向最多可绑定512个观察端口。备2 : 如果不包括X1E系列单板批量配置的观察端口规格,整机最多可以配置8个观察端口。

3 华为S系列盒式交换机轿 V100R006C05版本的观察端口规格

形态 入方向可绑定观察端口数量 出方向可绑定观察端口数量 可配观察端口数
S2700SI 1 1 1
S2710SI 4 1 4
S2700EI 1 1 1

4 华为S系列盒式交换机轿 V200R001版本~V200R003版本的观察端口规格

形态 入方向可绑定观察端口数量 出方向可绑定观察端口数量 可配观察端口数
S3700HI 2 1 2
S5700S-LI、S5700LI 1 1 1
S5710LI 1 1 1
S5700SI 1 1 1
S5700EI 4 1 4
S5710EI 2 1 2
S5700HI 2 1 2
S5710HI 2 1 2
S6700 1 1 1

5 华为S系列盒式交换机轿 V200R005版本及以后版本的观察端口规格

形态 入方向可绑定观察端口数量 出方向可绑定观察端口数量 可配观察端口数
S2750 1 1 1
S5700S-LI、S5700LI 1 1 1
S5700SI 1 1 1
S5700EI 4 1 4
S5710EI 4 4 8
S5720HI 适配置方式而定 适配置方式而定 适配置方式而
S5700HI 4 4 8
S5710HI 4 4 8
S6700 X(X≤4 4-X(X≤4 4

1 : S5720HI的观察端口规格因观察端口配置方式的不同而不同。如果是单个配置,最多可配8次,即总共可8个观察端口;如果是批量配置,一次最多可配置64个观察端口,最多可配置8次,理论上最多可配置8 x 64 = 512个观察端口;入方向/出方向最多可绑定512个观察端口。

观察端口使用情况计算方式我们使用了一个观察端口进行镜像以后,如果还需要再配观察端口,连接其他监控设备,就需要计算交换机上剩余可配的观察端口数量,镜像端口入方向和出方向还能再绑定多少个观察端口。

需要注意,镜像端口的入方向和出方向可绑定观察端口数量是分开计算的,即使入方向和出方向绑定的是同一个观察端口,入方向和出方向剩余可绑定观察端口数量都会各自减1

比如以FA单板为例,FA单板最多可配置6个观察端口,所有镜像端口入方向加起来最多可以绑定4个观察端口,出方向加起来最多可以绑2个观察端口。如果镜像端口入方向和出方向绑定到了同一个观察端口,入方向可以绑定的剩余观察端口数量为3,出方向可以绑定的剩余观察端口数量1,那么剩余可用观察端口数量为3+1=4,并非是6-1=5

1N镜像主要是用于需要连接多个监控设备的场景,在V200R005以前的版本,只有华为S系列框式交换机的E系列、FA系列ES0D0X12SA00EH1D2X12SSA0单板支持,而且整机最多支持入方12V200R005版本及后续的版本,华S系列交换机开始全面支持1N镜像,具体不同框式单板和盒式交换机支持情况如表1和表2所示。

1 华为S系列框式交换机不同单板轿 V200R005版本及以后版本1N镜像规格

单板 单个镜像端口入方向可绑定的观察端口数量 单个镜像端口出方向可绑定的观察端口数
SA系列单板(不包ES0D0X12SA00(S7700)EH1D2X12SSA0S9700ET1D2X12SSA0S12700 NA(只能镜像1个观察端口 NA(只能镜像1个观察端口
ES0D0X12SA00(S7700)EH1D2X12SSA0S9700ET1D2X12SSA0S12700 2 2

1: X1E系列单板的观察端口规格因观察端口配置方式的不同而不同。如果是单个配置,单个镜像端口入方向或出方向最多可绑定1个观察端口;如果是批量配置,理论上单个镜像端口入方向或出方向最多可绑定64个观察端口。备2: 1N镜像中,如果镜像端口某一方向绑定的是通过批量方式创建的一个观察端口组,则该方向不能再绑定到其他的观察端口。

2 华为S系列盒式交换机轿 V200R005版本及以后版本1N镜像规格

形态 单个镜像端口入方向可绑定的观察端口数量 单个镜像端口出方向可绑定的观察端口数
S2750 NA(只能镜像到1个观察端口 NA(只能镜像到1个观察端口
S5700S-LIS5700LI NA(只能镜像到1个观察端口 NA(只能镜像到1个观察端口
S5700SI NA(只能镜像到1个观察端口 NA(只能镜像到1个观察端口
S5700EI NA(只能镜像到1个观察端口 NA(只能镜像到1个观察端口
S5710EI 4 4
S5700HI 4 4
S5710HI 4 4
S5720HI 适配置方式而定 适配置方式而
S6700 Y(Y≤4 4-Y(Y≤4)

1: S5720HI的观察端口规格因观察端口配置方式的不同而不同。如果是单个配置,单个镜像端口入方向或出方向最多可绑定1个观察端口;如果是批量配置,理论上单个镜像端口入方向或出方向最多可绑定64个观察端口。备2: 1N镜像中,如果镜像端口某一方向绑定的是通过批量方式创建的一个观察端口组,则该方向不能再绑定到其他的观察端口。

N1镜像规
N1镜像是指将N个不同镜像端口的报文复制到同一个观察端口,如图所示

N1镜像主要用于需要监控多个镜像端口流经的报文流。其中N的规格没有限制,就是说只要小伙伴愿意,可以把这个交换机的端口入方向或者出方向都绑定到同一个观察端口,对镜像端口的数量没有限制

MN镜像规
MN镜像是指将M个不同镜像端口的报文复制到N个不同的观察端口

MN镜像相当M1N 镜像叠加,如图所示,所以他一般都用在既要监控多 个镜像端口,又要这些镜像端口的报文发送到多台监控设备的综合场景。其实,我们通过前面的1N镜像和N1镜像就可以看出,MN镜像对于M无规格限制N的规格参考就1N镜像N的规格。

如何解决设备观察端口不足的问题

交换机上的观察端口是有限的,如果当前需要连接的监控设备有很多,需要的观察端口数量超过了规格上限,我们该如何是好呢。下面小编总结了两种比较常用的方式

1.配置远程镜像,通过远程观察端口进行内部环回广播

如图所示,网络管理员需要将镜像端口的报文镜像到 4台监控设备,而SwitchB可以配置观察端口数量少于4。通过远程观察端口内部环回广播的实现过程如下:步骤一:配置远程端口镜

<SwitchB> system-view [SwitchB] observe-port 1 interface gigabitethernet1/0/1 vlan 20 //配置远程观察端

口,VLAN20为用于内部环回广播VLAN [SwitchB] interface gigabitethernet1/0/6 [SwitchB-GigabitEthernet1/0/6] port-mirroring to observe-port 1 both //将镜像端

口出入方向报文都镜像到内部环回用的远程观察端

[SwitchB-GigabitEthernet1/0/6] quit

步骤二:配置内部环回功

[SwitchB] vlan batch 20 //用于内部环回转发,不能在VLAN20配其他业[SwitchB] interface gigabitethernet1/0/1 [SwitchB-GigabitEthernet1/0/1] loopback internal //将远程观察端口配置为内

部环回端

[SwitchB-GigabitEthernet1/0/1] mac-address learning disable //关闭端MAC

动态学习功能,防止内部环回端口学习到外部的MAC地址,将外部接收到的报

文在内部环回转

[SwitchB-GigabitEthernet1/0/1] stp disable //关闭STP功能,避免内部环回端口

因收到设备自己发送的报文,设置成Discarding状态,将端口阻[SwitchB-GigabitEthernet1/0/1] port link-type trunk [SwitchB-GigabitEthernet1/0/1] port trunk allow-pass vlan 20 //将端口加入内

部环回广播用的VLAN [SwitchB-GigabitEthernet1/0/1] quit [SwitchB] interface gigabitethernet1/0/2 [SwitchB-GigabitEthernet1/0/2] port link-type trunk

[SwitchB-GigabitEthernet1/0/2] port trunk allow-pass vlan 20 //将端口加入内
部环回广播用的VLAN
[SwitchB-GigabitEthernet1/0/2] quit [SwitchB] interface gigabitethernet1/0/3 [SwitchB-GigabitEthernet1/0/3] port link-type trunk [SwitchB-GigabitEthernet1/0/3] port trunk allow-pass vlan 20 //将端口加入内
部环回广播用的VLAN
[SwitchB-GigabitEthernet1/0/3] quit [SwitchB] interface gigabitethernet1/0/4 [SwitchB-GigabitEthernet1/0/4] port link-type trunk [SwitchB-GigabitEthernet1/0/4] port trunk allow-pass vlan 20 //将端口加入内
部环回广播用的VLAN
[SwitchB-GigabitEthernet1/0/4] quit [SwitchB] interface gigabitethernet1/0/5 [SwitchB-GigabitEthernet1/0/5] port link-type trunk [SwitchB-GigabitEthernet1/0/5] port trunk allow-pass vlan 20 //将端口加入内
部环回广播用的VLAN
[SwitchB-GigabitEthernet1/0/5] quit

2.配置远程镜像,通过中间二层设备进行VLAN广播

如图所示,网络管理员需要将镜像端口的报文镜像到3台监控设备,SwitchB

可以配置观察端口数量少于3。通过SwitchC进行VLAN广播的实现过程如下:

步骤一:在SwitchB配置远程端口镜

<SwitchB> system-view [SwitchB] observe-port 1 interface gigabitethernet1/0/1 vlan 20 //配置远程观

察端口,VLAN20为用于转发镜像报文的普VLAN [SwitchB] interface gigabitethernet1/0/2 [SwitchB-GigabitEthernet1/0/2] port-mirroring to observe-port 1 both //将镜像

端口出入方向报文都镜像到远程观察端口

[SwitchB-GigabitEthernet1/0/2] quit

步骤二:在SwitchC配置端口加入VLAN

[SwitchC] interface gigabitethernet1/0/1 [SwitchC-GigabitEthernet1/0/1] port link-type trunk [SwitchC-GigabitEthernet1/0/1] port trunk allow-pass vlan 20 //将端口加入用

于转发镜像报文的VLAN20 [SwitchC-GigabitEthernet1/0/1] quit

[SwitchC] interface gigabitethernet1/0/2 [SwitchC-GigabitEthernet1/0/2] port link-type access [SwitchC-GigabitEthernet1/0/2] port default-vlan 20 //将端口加入用于转发镜

像报文的VLAN20 [SwitchC-GigabitEthernet1/0/2] quit

[SwitchC] interface gigabitethernet1/0/3 [SwitchC-GigabitEthernet1/0/3] port link-type access [SwitchC-GigabitEthernet1/0/3] port default-vlan 20 //将端口加入用于转发镜

像报文的VLAN20 [SwitchC-GigabitEthernet1/0/3] quit

[SwitchC] interface gigabitethernet1/0/4 [SwitchC-GigabitEthernet1/0/4] port link-type access [SwitchC-GigabitEthernet1/0/4] port default-vlan 20 //将端口加入用于转发镜

像报文的VLAN20 [SwitchB-GigabitEthernet1/0/4] quit

第八章接口配置锦囊妙计之批量配置

话说诸葛神人正在和众将在中军议事,忽飞鸽传书,翌日将有三分天下之神器 -华为交换机运抵汉中。诸葛大悦,与姜维彻夜研究交换机产品手册,以解众将之疑惑。天明之时授予姜维三个锦囊,“伯约,此绿、黄、红三个锦囊可在交换机配置困难之时依次打开使用,我去补个觉先。”次日清晨,张飞见着交换机,顿时毛躁起来: “如此多的接口,要是我一个个逐一配置多麻烦啊。”“飞飞莫急,我有丞相锦囊妙计。 ”姜维打开绿锦囊,只见锦帛上书:高效工作,批量配置。姜维顿时大悟,于是耐心的为张飞讲解起来。“飞飞,我知道你性格粗中有细,但如果对每个接口逐一进行相同的配置,的确很容易出错,而且造成大量重复工作。

配置端口组功能就可以解决这个问题啦。你只需要将这些以太网接口加入同一个端口组,在端口组视图下,只需输入一次业务命令,该端口组内的所有以太网接口都会配置该功能,快速完成接口批量配置,减少了重复配置工作。轻松搞定 so easy!妈妈再也不用担心我该咋配置接口了!”“维维老弟,你就别卖萌了,赶快跟我说说咋配置端口组吧!”“飞哥哥捉急了,待我细细道来。其实端口组也是有临时端口组和永久端口组两种方式。如果你需要临时批量下发配置到指定的多个接口,可选用配置临时端口组。配置命令批量下发后,一旦退出端口组视图,该临时端口组将被系统自动删除。如果你需要多次进行批量下发配置命令的操作,可选用配置永久端口组。即使退出端口组视图后,该端口组及对应的端口成员仍然存在,便于下次的批量下

发配置。如果你希望删除永久端口组,需要手动删除哦。下面我就给你说重点,该怎么配置端口组吧!”

“终于开始倒出点干货来了!”“长话短说,两种端口组配置如下:

配置临时端口组

举个栗子:飞飞需要将 GE1/0/1GE1/0/20共二十个接口均关闭,但是后续这些接口由于配置不一致,还需要单独进行配置,那就可以选择临时端口组进行如下配置:

<HUAWEI> system-view [HUAWEI] port-group group-member gigabitethernet 1/0/1 to gigabitethernet 1/0/20 // 将接口 GE1/0/1GE1/0/20加入到临时端口组,此步骤等同于执行命令 interface range gigabitethernet 1/0/1 to gigabitethernet 1/0/20 [HUAWEI-port-group]shutdown // 临时端口组视图中配置需要批量下发的命令 [HUAWEI-port-group] quit // 退出临时端口组后,系统就会自动删除这个临时端口组

配置永久端口组

再举个栗子:飞飞需要将 GE2/0/1GE2/0/10共十个接口均配置为access接口,而且这些接口配置信息相对固定,均保持一致,那就可以选择永久端口组进行如下配置:

<HUAWEI> system-view [HUAWEI] port-group portgroup1 //创建名称为 portgroup1的永久端口组 [HUAWEI-port-group-portgroup1] group-member gigabitethernet2/0/1 to gigabitethernet 2/0/10 //将接口GE2/0/1GE2/0/10加入到永久端口组中

[HUAWEI-port-group-portgroup1] port link-type access // 永久端口组视图中配置需要批量下发的命令 [HUAWEI-port-group-portgroup1] quit // 退出端口组视图后,名称portgroup1的永久端口组仍然存在

如何知道永久端口组中的成员接口呢? 执行命令 display port-group [ all | port-group-name ],就可以查看永久端口组的成员接口信息啦。张飞按照诸葛神人的锦囊妙计,轻松快捷的给各个营帐分配了一个接口,并批量配置了相关功能。为了练练手,他居然又在一个空闲端口上一股脑配置了 N多条命令。“这下可惨了,被姜维发现又该揭我老底,说我是村野匹夫啦,咋办,赶快看手册,看看如何批量清除一个接口的所有配置。

铛铛铛!找到了,只需要在接口视图下执行命令clear configuration this就可以一 键清除接口下的配置啦。搞定!

<HUAWEI> system-view [HUAWEI] interface gigabitethernet 0/0/1 [HUAWEI-GigabitEthernet0/0/1] display this # interface GigabitEthernet0/0/1

特性攻

description switch-A port link-type access # return [HUAWEI-GigabitEthernet0/0/1] clear configuration this //清除接口下所有配置,恢复缺省值 Warning: All configurations of the interface will be clearedand its state will be shutdown. Continue? [Y/N] :y Info: Total 2 command(s) executed, 2 successful, 0 failed. [HUAWEI-GigabitEthernet0/0/1] display this # interface GigabitEthernet0/0/1 shutdown // 清除接口下所有配置后,接口将处于关闭状态 # return

日上三竿,诸葛神人已经补觉起床,见张飞已经为各个营帐对应的接口配置完毕,大赞张飞。与此同时又给张飞提了一个难题:“翼德,我们中军营帐信息安全极为重要,不能和士兵的营帐相互通信,我该怎么配置呢,你造吗?”张飞丈二和尚摸不着头脑,只见姜维在后面暗笑。“飞飞,你忘了丞相还有第二个锦囊妙计?” 张飞大笑,“速取第二个锦囊。” 欲知后事如何,请听下回分解。

第九章接口配置锦囊妙计之端口隔离

话说张飞接到诸葛神人下达的保障中军大营信息安全的军令后,不禁大为挠头。幸得姜维提醒,才想起诸葛神人留的第二个锦囊。两人打开锦囊,定睛观看,只见锦帛上书:两军对垒,信息至上,保障安全,唯有隔离。

张飞瞪着虎目环眼,一脸茫然 :“维维老弟,丞相的锦囊暗藏什么玄机,你造不?”

姜维呵呵一笑:“飞飞不要捉急,且听我慢慢道来。下图是我军的

大营分布图。

飞飞你看,我军的中军大营、士兵大营和辎重大营同属于一个 VLAN且位于相同网段。默认情况下,三个大营可以互相访问。现在,丞相要求咱们在不改变我军网段规划和 VLAN规划的情况下,实现:1) 中军大营和士兵大营不能互相访问; 2)中军大营可以访问辎重大营,但辎重大营不能访问中军大营,且辎重大营和士兵大营始终可以互相访问。那么,该如何实现呢?这就需要咱们祭出端口隔离这个大招啦。此招一出,威力无穷,必然能够完成丞相军令,到时候丞相肯定夸你是个爱学习、肯动脑的好孩子,哈哈哈哈!”

姜维调侃完张飞后,开心得哈哈大笑 。张飞假装愠怒 :“维维老弟,别臭美了,你快告诉我怎么配置端口隔离吧!”端口隔离组“好,长话短说。说到端口隔离,就要引入端口隔离组的概念,交换机的端口可以加入到特定的端口隔离组中,同一端口隔离组的端口之间互相隔离,不同端口隔离组的端口之间不隔离。因此,要完成丞相的军令,配置思路其实非常简单。如下图所示,在交换机上将端口 GE0/0/1GE0/0/2加入同一个端口隔离组, GE0/0/3不加入端口隔离组或者加入另一个端口隔离组就 OK了。

配置步骤如下:

<Huawei> system-view [Huawei] sysname Switch [Switch] interface gigabitEthernet 0/0/1 [Switch-GigabitEthernet0/0/1] port link-type access [Switch-GigabitEthernet0/0/1] port default vlan 10

[Switch-GigabitEthernet0/0/1] port-isolate enable group 5 //端口GE0/0/1加入到端

口隔离组5

[Switch-GigabitEthernet0/0/1] quit [Switch] interface gigabitEthernet 0/0/2 [Switch-GigabitEthernet0/0/2] port link-type access [Switch-GigabitEthernet0/0/2] port default vlan 10

[Switch-GigabitEthernet0/0/2] port-isolate enable group 5 //端口GE0/0/2加入到端

口隔离组5

[Switch-GigabitEthernet0/0/2] quit [Switch] interface gigabitEthernet 0/0/3 [Switch-GigabitEthernet0/0/3] port link-type access

[Switch-GigabitEthernet0/0/3] port default vlan 10 //端口GE0/0/3不加入端口

隔离组

[Switch-GigabitEthernet0/0/3] quit

完成配置后,端口 GE0/0/1GE0/0/2就加入同一个端口隔离组,端口 GE0/0/3

不加入任何端口隔离组。这样,中军大营和士兵大营就不能互相访问了,但中军

大营和辎重大营、士兵大营和辎重大营仍然可以互相访问。如何查看端口隔离组的配置信息呢?执行命令 display port-isolate group { group-id | all }命令就可以查看端口隔离组的配置信息啦。

单向隔离

张飞闻言大喜,不过他心中还压着一个小包袱:“维维老弟,丞相还要咱们实现中军大营可以访问辎重大营,但辎重大营不能访问中军大营。这个问题也能用端口隔离解决吗?”姜维微微一笑,淡定地说:“端口隔离既然是大招,当然不仅仅只有端口隔离组这件杀器喽,它的武器库里还要另外一件杀器——单向隔离,正好解决你提的这个问题。”张飞有点不相信,怀疑地说:“神马是单向隔离?有这么神奇吗?”姜维笑着说:“单向隔离,顾名思义,只在单个方向上进行信息隔离。举个栗子

,在接口 A上配置它与接口 B之间单向隔离,则从接口 A发送的报文不能到达接口 B,但从接口 B发送的报文可以到达接口 A。就拿你提的这个问题来说吧,要实现中军大营可以访问辎重大营,但辎重大营不能访问中军大营,就可以使用单向隔离功能。如下图所示,在端口 GE0/0/3上配置单向隔离功能,并指定隔离的端口是 GE0/0/1,这样,GE0/0/3上发出的报文不能到达 GE0/0/1,而 GE0/0/1发出的报文可以到达 GE0/0/3,从而实现中军大营可以访问辎重大营,但辎重大营不能访问中军大营。配置步骤如下:

[Switch] interface GigabitEthernet 0/0/3 [Switch-GigabitEthernet0/0/3] am isolate gigabitethernet 0/0/1 //GE0/0/3上配置端口隔离功能,并指定隔离的端口是GE0/0/1 [Switch-GigabitEthernet0/0/3] quit

配置单向隔离大功告成,看,就是这么简单!”张飞按照诸葛神人的锦囊,轻轻松松地在交换机上配置了端口隔离功能,经过验证,中军大营果然不能与士兵大营互相访问,且辎重大营不能访问中军大营。

端口隔离模式

第二天,张飞美滋滋地等着诸葛神人的表扬 ,不料,诸葛神人却告诉张飞“飞飞,端口 GE0/0/1与端口 GE0/0/2现在是二层隔离,虽然 ARP啥的无法透传过来,但是通过 VLANProxy ARP功能,中军大营与士兵大营仍然能够借助自己的网关实现三层互访,这就是所谓的二层隔离但是三层不隔离。”

特性攻

张飞有点小郁闷 :“丞相,管它二层隔离三层隔离,只要能实现信息隔离不就行了?反正我现在看不出来二层隔离和三层隔离有啥区别。”诸葛神人不慌不忙地摇着鹅毛扇:“事实胜于雄辩。我们做个小实验,你就完全明白了。实验过程如下:步骤 1 如下图所示,取中军大营的主机 PC1和士兵大营中的主机 PC2,在 PC1PC2加入同一个端口隔离组条件下,用 PC1PC2互相 Ping对方,结果两者无法互相 Ping通,说明端口隔离功能起了作用。

PC1 Ping PC2的过程中,在交换机上抓取经过 GE0/0/1GE0/0/2的报文。 GE0/0/1的抓包信息如图所示:

抓包信息显示,PC1发送了 ARP请求报文(绿线框围住的 ProtocolARP的报文)后,并没有收到来自 PC2ARP应答报文。 GE0/0/2的抓包信息如图所示:

抓包信息显示, PC2并没有收到来自 PC1ARP请求报文。

结论综合 GE0/0/1GE0/0/2的抓包信息,说明了 PC1发送的 ARP请求报文无法通过交换机透传到 PC2上,这样,PC1PC2之间就无法完成 ARP学习过程,两者之间也就无法实现相互访问。步骤 2 PC1PC2上配置的网关是 VLANIF10IP地址:10.10.10.250/24,我们在 VLANIF10上使能 VLANProxy ARP功能。步骤如下:

[Switch] interface vlanif 10 [Switch-Vlanif10] ip address 10.10.10.250 24 [Switch-Vlanif10] arp-proxy inner-sub-vlan-proxy enable //VLANIF10上使能 VLANProxy ARP功能 [Switch-Vlanif10] quit

然后用 PC1PC2互相 Ping对方,结果两者可以互相 Ping通,这说明端口隔离功能失效了。这是怎么回事呢?让我们来抓包分析一下。 GE0/0/1的抓包信息如图所示:首先,PC1发送 ARP请求报文,寻找 PC2MAC地址(如黄线标注)。其次,VLANIF10作为 ARP代理,代替 PC2发送 ARP应答报文(如蓝线标注。注意:4c1f-cc6b-263cVLANIF10MAC地址)。然后,PC1收到来自 VLANIF10ARP应答报文后,把 ARP表项中 PC2MAC地址修改为 VLANIF10MAC地址,如下图所示。

最后,PC1发送到 PC2Ping Request报文(如绿线标注)。下图是 Ping Request报文信息, Ping Request报文的目的 MAC地址是 VLANIF10MAC地址(如黄线标注),可见,Ping Request报文会首先发送到 VLANIF10上。如何查看 VLANIF10MAC地址呢?在交换机上执行 display arp all命令就可以查看 VLANIF10ARP表项,ARP表项中包含 VLANIF10MAC地址。如下图所示。

GE0/0/2的抓包信息如图所示:

首先,VLANIF10发送 ARP请求报文,寻找 PC2MAC地址(如黄线标注)。其次,VLANIF10收到来自 PC2ARP应答报文,获取了 PC2MAC地址(如

蓝线标注)。最后,VLANIF10将收到的来自 PC1ARP Request报文转发到 PC2(如绿线所示)。

结论综合 GE0/0/1GE0/0/2的抓包信息可以看出, PC1发送的 Ping Request报文会发送到 VLANIF10进行三层转发,而不是进行二层转发。 PC2回应 PC1Ping Reply报文也同样进行三层转发,本帖不再赘述。张飞嚷道:“哇, PC1PC2之间果然能够通过三层进行通信。那么,丞相,如何实现 PC1PC2二三层都隔离呢?”诸葛神人微微一笑:“很简单,只需要在系统视图下执行 port-isolate mode all命令即可实现二三层都隔离。让我们再次实验一下。实验步骤如下:步骤 1 在接口 VLANIF10下保留 VLANProxy ARP功能的配置的同时,在系统视图下执行 port-isolate mode all命令。

[Switch] port-isolate mode all //指定端口隔离模式为二层三层都隔离

步骤 2 PC1PC2互相 Ping对方,结果两者不能互相 Ping通。抓包分析一下 PC1PC2无法互相 Ping通的原因。 GE0/0/1的抓包信息如图所示:

抓包信息显示,PC1发送 ARP请求报文,收到来自接口 VLANIF10ARP应答报文。PC1发送 Ping Request报文到 VLANIF10进行三层转发。

GE0/0/2的抓包信息如图所示:

抓包信息显示,VLANIF10没有发送 ARP请求报文寻找 PC2MAC地址,也没有把 PC1发送的 ARP Request报文转发到 PC2

结论 VLANIF10并没有转发来自 PC1ARP Request报文,这样, PC1PC2之间也就无法实现三层互访了。飞飞你看,只是增加了一个小小的配置,端口隔离功能就又王者归来了!”张飞信服地点了点头,赞叹道 :“不愧是丞相呀,果然神机妙算!不过丞相,你看现在我们在交换机上配置了这么多端口隔离的命令,万一日后我们不需要端口隔离功能了,一条一条删除这些命令多麻烦呀!”诸葛神人夸奖张飞:“谁说飞飞有勇无谋?这个想法就很动脑子。其实,在系统视图下执行 clear configuration port-isolate命令就可以一键式清除设备上所有的端口隔离配置,包括端口隔离组、端口单向隔离和隔离模式相关配置。不过,飞飞,由于执行 clear configuration port-isolate命令一键式清除的命令数量比较多,可能会影响其他业务,在使用时一定要谨慎哦!”张飞哈哈大笑 ,说:“丞相,你放心吧,你不知道俺是粗中有细吗?哈哈!”诸葛神人笑着说:“飞飞进步越来越大了。不过最近我军又购置了一批华为交换机,这批交换机型号、传输能力都各有不同,而这些交换机需要分布在各个营寨,与之前购买的那台交换机直接相连。现在我们想要相连交换机的接口之间的参数一致,从而保证数据能够正常传输,我们该怎么配置,飞飞你造吗?”正在张飞丈二和尚摸不着头脑的时候,不知姜维什么时候从后面走了过来,拍了拍张飞的肩膀:“飞飞,你忘了丞相还有第三个锦囊妙计?”张飞大笑,“速取第三个锦囊。”欲知后事如何,请听下回分解。

第十章接口配置锦囊妙计之端口自协商

上一回说到诸葛神人四处招兵买马,待机讨伐中原。百姓素闻蜀军乃仁义之师,皆纷纷归顺,以壮大其阵营。为便于及时下发军令,诸葛神人决定为新兵营帐再买入一批华为交换机。当然这次的设备安装和调测还是让张飞来打头阵。经过前两回的配置端口组和端口隔离操作,张飞自信满满,以为不需要丞相妙计,自己便可以解决问题,于是决定先自己捣鼓。可是当他将设备之间的接口连线并上电后,发现有些接口仍然处于 Down状态,排查半天仍然没有解决问题,无奈之下只好打开第三个锦囊,曰:速率双工,助你成功。自动协商,往来无妨。

姜维见张飞遇到难题,前来助阵。受丞相锦囊妙计的点拨,很快就找到故障问题的定位思路。“飞飞,我们还是先一步步排查吧,先问你个问题,如何查看接口是否处于 Up状态?”

“这有何难,在当前接口视图下执行命令 display this interface就可以 查看接口状态了。”

“飞飞只知其一,不知其二,待我详细告知。先看下 display this interface 回显信息:

<HUAWEI> system-view [HUAWEI] interface gigabitethernet 1/0/1 [HUAWEI-GigabitEthernet1/0/1] display this interface GigabitEthernet 1/0/1 current state : UP Line protocol current state : UP

……

回显信息中的 current stateLine protocol current state含义和区别如下:

  1. state表示接口的物理状态,和三层业务及协议没有关系。
  2. protocol current state表示该接口的协议状态,与协议有关。

对于二层物理接口,一般物理状态 current stateUp,协议状态 Line protocol current state就会是 Up的。例如,二层物理接口连线正确,并且接口属性配置正常后,物理状态 current state和协议状态 Line protocol current state都是处于 Up状态。

对于三层物理接口,只有物理状态 current stateUp,并且协议协商也成功后,协议状态 Line protocol current state才会是 Up的。例如,三层物理接口连线正确,并且接口属性配置正常后,如果没有配置 IP地址,则物理状态 current stateUp,但协议状态 Line protocol current state处于 Down状态。当我们设备连线后,在没有配置接口 IP地址等操作之前,需要保证接口物理状态即 current stateUp即可。”

“这个我都知道了,关键是我想知道接口物理状态为啥处于 Down

了。”

“这就要引出我们的重点啦—只有链路两端接口双工模式和速率都保持一致,接口物理状态才可以 Up。如何保持一致呢?自协商机制或者非自协商机制(强制配置机制)都可以实现。

速率双工自协商基本知识

双工模式

双工模式分为全双工和半双工。全双工是指接口在发送数据的同时也能够接收数据,两者同步进行;而半双工是指一个时间段内只有一个动作发生,即接口某一时间段只接收报文或只发送报文。举一个全双工的例子,一条东西走向的宽阔马路,可允许两辆马车迎面通过。当甲辆马车自东向西行驶,乙辆马车自西向东行驶时,两车可以同时行进,互不影响。这个例子中宽阔的马路代表的就是全双工链路,甲、乙两辆马车分别代表的就是发送方向报文和接收方向报文。再举一个半双工例子,一根独木桥,同时只能允许一个人通过,当有甲、乙两人从河岸两端迎面走过来时,这种情况下就只能是一个人在桥头先停下来,等待另外一个人走过来后,再继续走过去。这个例子中独木桥代表的就是半双工链路,甲、乙两人代表的就是发送方向报文和接收方向报文。全双工相对于半双工的好处在于迟延小,速度快。当数据流量较大时,工作在半双工模式的链路就会出现冲突、错包,最终影响了工作性能。因此半双工已经逐步退出历史舞台啦。

接口速率

接口速率决定了接口传输数据的带宽,一般接口有百兆( 100Mbit/s)、千兆( 1000 Mbit/s)、万兆( 10000Mbit/s)等速率类型。不同速率的接口也是可以对接成功的,其工作速率最终是需要保持一致的。例如,千兆( 1000 Mbit/s)接口和百兆(100Mbit/s)接口对接,工作速率肯定是双方均支持的速率,一般会是工作在 100Mbit/s。这个例子也可以看出,接口速率不一定就是其工作速率哦,一般工作速率会小于或等于接口速率。接口自协商

自协商功能就是给互连设备提供一种交换信息的方式,使物理链路两端的设备通过交互信息自动选择同样的工作参数(包括双工模式和速率),以使其自动配置传输能力,达到双方能够都能支持的最大值。链路两端的协商模式必须保持一致。如果链路两端的协商模式不一致,例如本端配置为非自协商模式,对端配置为自协商模式,则本端接口可能为 UpDown状态,但对端一定为 Down状态。链路之间仍无法正常通信。

“这个接口当前工作速率、双工模式、自协商模式信息,我怎么查看呢?”

还是在链路两端接口均执行命令 display this interface,查看接口的双工 模式、速率、协商模式信息,并根据回显中相关信息字段来进行故障定位。具体的字段信息如下表所示。

回显信息字段 显示信息解释说明 后续操作
Negotiation 接口自协商状态。 o显示信息是 “ENABLE”表示接口工作在自协商状态。 o显示信息是 “DISABLE”表示接口工作在非自协商状态即强制模式。 保持链路两端接口的协商模式一致,要么都工作在自协商模式下,要么都工作在非自协商模式下。在接口视图下可以使用 negotiation auto命令调整接口的自协商模式。如果自协商模式下接口仍然 Down,可以尝试将两端接口均修改为非自协商模式,并强制两边速率、双工模式保持一致。
Speed 接口当前工作速率。 在非自协商模式下如果设备两端接口速率不一致,请在接口视图下执行 speed令调整接口速率保持一致。
Duplex 接口双工模式。 在非自协商模式下如果设备两端接口双工模式不一致,请在接口视图下执行 duplex命令调整接口双工模式保持一致。

故障排查小窍门:保持链路两端接口工作在自协商模式,物理状态处于 Down时,可以先在链路两端接口视图下依次执行命令 shutdown undo shutdown;也可以执行命令 restart,重启接口,目的是接口重新进行一次自协商。 如果接口仍然物理状态处于 Down,则在链路两端接口视图执行命令 undo negotiation auto,配置以太网接口工作在非自协商模式,并强制指定速率和双工 模式,使其保持一致。飞飞,按照丞相妙计,你的端口故障问题自然迎刃而解了。”

“铛铛铛,问题解决了,接口全部都 UP了,搞定收工。”

自协商模式下修改接口速率

“飞飞莫急,我还有补充:如果自协商的接口速率与实际现网要求不符,可通过手动配置接口速率来控制协商的结果。下面就根据我军营帐组网图给你解释下:

中军大营、士兵大营、辎重大营上行接入交换机 Switch的接口速率均为 1000Mbit/s,交换机 Switch与外部网络相连接口 GE1/0/4的速率也为 1000Mbit/s。如果在 Switch上不指定自协商速率,则接口 GE1/0/1GE1/0/2GE1/0/3和各自连接的营帐接口速率协商的结果将都为 1000Mbit/s,当我军三个大营同时以 1000Mbit/s速率对外发送数据时,就可能会造成出接口 GE1/0/4拥塞。

“所有接口都是自协商的情况下,最终速率都是接口支持的最大速率,三个入接口都是 1000Mbit/s,一个出接口只有 1000Mbit/s,(1000 Mbit/s +1000 Mbit/s +1000 Mbit/s>1000 Mbit/s,出接口数据报文肯定会拥塞了,那拥塞问题咋解决呢?”

“很简单,在自协商模式下,我们也可以控制最终协商的速率。将 GE1/0/1GE1/0/2GE1/0/3三个接口的自协商最大速率控制在 100Mbit/s

内,则虽然中军大营、士兵大营、辎重大营接口速率均为 1000bit/s,但根据自协

商结果是链路两端均支持的最大速率这一原则,最终接口协商后的速率也只是

100Mbit/s,(100 Mbit/s +100Mbit/s +100Mbit/s<1000 Mbit/s,拥塞问题就解

决了。

配置步骤如下:

<Huawei> system-view [Huawei] sysname Switch [Switch] interface gigabitethernet 1/0/1 [Switch-GigabitEthernet1/0/1] negotiation auto

[Switch-GigabitEthernet1/0/1] auto speed 100 //端口GE0/0/1自协商最大速率为 100Mbit/s [Switch-GigabitEthernet1/0/1] quit

[Switch] interface gigabitethernet 1/0/2 [Switch-GigabitEthernet1/0/2] negotiation auto [Switch-GigabitEthernet1/0/2] auto speed 100 //端口GE0/0/2自协商最大速率为

特性攻

100Mbit/s [Switch-GigabitEthernet1/0/2] quit [Switch] interface gigabitethernet 1/0/3 [Switch-GigabitEthernet1/0/3] negotiation auto

[Switch-GigabitEthernet1/0/3] auto speed 100//端口GE0/0/3自协商最大速率为 100Mbit/s [Switch-GigabitEthernet1/0/3] quit

至此,张飞和姜维关于接口配置的故事就讲完了,多谢大家。

第十一章 IPMAC一线牵之 ARP

有木有因为不知如何查看ARP表而烦恼?有木有因为不明白ARP表项从何而来而彷徨?有木有因为不会配置静态ARP表项而惆怅?有木有因为同一网段ARP学习不到而心烦意乱?这个秋天就让小编来为您揭开 ARP的朦胧面纱,ARP相关配置再也不愁啦。

我们首先回顾一下什么是ARP江湖中人对ARP的描述是:闲窥江湖风云雨, IPMAC一线牵。也就是说地址解析协议 ARPAddress Resolution Protocol)实则是 IP地址与MAC地址之间的桥梁,主要用于将 IP地址解析为MAC地址。无论是PC还是交换机上,都有一张 ARP表,ARP表中保存着IP地址和MAC地址的映射关系。当PC或者交换机需要与网络中其他设备进行通信时,知道了对方的IP地址,还需要知道MAC地址以便将IP报文封装成帧才能通过物理网络发送,这时PC或者交换机可以通过查找 ARP表知道对方IP地址对应的MAC地址。下面就让小编带大家一起从以下几个方面来一步一步的了解ARP~

查看ARP

交换机作为网关时,通过在网关上查看 ARP表项,网络管理员可以查看下挂用户的IP地址、MAC地址和接口等信息。例如,当网络管理员知道某个用户的 IP地址,想查询该用户的MAC地址时,可以通过查看ARP表项信息获取。那我们如何查看设备上的ARP表呢?display arp就可以啦~ 举个例子,如下图所示,我们可以在交换机上执行命令display arp network查看

172.16.0.0/16网段的ARP表项。ARP表项有SID三种类型,这三种类型的 ARP表项是怎么来的?怎么配置?小编待会儿给大家详细介绍。

偶尔是不是还遇到过MAC ADDRESS字段显示为“Incomplete”的情况,不用迷惘, Incomplete表示这条ARP表项是一个临时ARP表项,即设备已经发送了ARP请求报文,但是还没有收到ARP应答。看了上面的ARP表,或许已经有细心的小伙伴发现: SD类型的ARP表项中,为什么有的ARP表项没有VLAN信息,有的ARP表项有VLAN信息呢?哈哈,小编我就不卖关子了,是这样的:如果 ARP表项没有VLAN信息,那么代表这条表项中的接口处于三层模式,是一个三层口;如果 ARP表项有VLAN信息(并且表项中接口不是子接口时),那么代表这条表项中的接口处于二层模式,是一个二层口。当然,如果你想删除设备上的ARP表项,可以通过执行 reset arp { all | dynamic xx | static xx | interface xx }命令来实现。刚刚小编给大家承诺过要介绍三种类型的ARP表项是如何来的。类型为IARP表项比较简单,只要在接口上配置了 IP地址,设备上就会生成一条类型为 IARP表项哦~类型为IARP表项不会老化,IP地址和 MAC地址即为接口本身的IP地址和MAC地址。那另外两种类型的 ARP表项呢?各位看官可要睁大你的眼睛哦~下面就介绍类型为DARP表项。

动态ARP表项学习

大多数情况下,设备可以通过 ARP协议动态学习和更新ARP表项。设备是如何进行动态学习的呢?其实动态ARP主要是通过广播 ARP请求报文和单播 ARP应答报文这两个过程完成地址解析的。例如小A和小C在一次聚会上互留了IP地址。如上图所示,小 A需要与小C进行通信时,知道了小CIP地址为10.1.1.3/24,判断后发现与自己在同一网段

  1. 1.1.0/24,于是小A会广播发送一个ARP请求报文,请求小CMAC地址。小C收到ARP请求报文后,会单播发送一个 ARP应答报文,告诉对方自己的 MAC地址是3-3-3。(在同一网段的小 B也会收到ARP请求报文,但是由于 ARP请求报文中的目的IP地址不是小 BIP地址,因此小B不会进行应答。)小A收到ARP应答报文后,就会在自己的 ARP表中增加一条动态表项:IP地址
  2. 1.1.3对应MAC地址3-3-3,这样小 A就可以与小 C进行通信啦。怎样,是不是觉得动态ARP学习很简单?一方面由于ARP表的容量限制,另一方面也为了保证动态 ARP表项的准确性,PC

或交换机会对学习到的动态ARP表项进行老化。交换机上动态 ARP表项有一定的老化时间,缺省值是20分钟,一般建议使用缺省值。设备上动态ARP表项到达老化时间后,设备会发送老化探测报文(即 ARP请求报文),如果能收到ARP应答报文,则更新该动态ARP表项,本次老化探测结束;如果超过设置的老化探测次数后仍没有收到ARP应答报文,则删除该动态 ARP表项,本次老化探测结束。好啦,动态 ARP表项的内容小编也介绍的差不多了,是不是已经有小伙伴迫不及待的想知道S类型的ARP表项是怎么配置的呢?

静态ARP表项配置

对于网络中的重要设备,如服务器等,我们可以在交换机上配置静态ARP表项。这样可以避免交换机上重要设备IP地址对应的ARP表项被ARP攻击报文错误更新,从而保证用户与重要设备之间正常通信。静态ARP表项不会老化,不会被动态 ARP表项覆盖。用户可以通过手工方式配置静态ARP表项,下面小编就给大家举几个例子。例如,网络中有一台重要的服务器,服务器的 IP地址为172.16.10.2MAC地址为 0023-0045-0067。如果交换机与这台服务器相连的接口 GE1/0/1处于二层模式,并加入VLAN100。这时可以在交换机上为服务器配置一条对应的 ARP表项,具体配置如下。

<Quidway> system-view [Quidway] vlan batch 100 [Quidway] interface vlanif 100

还是上面的那台服务器,如果交换机与服务器相连的接口处于三层模式,这时在交换机上配置静态ARP表项,可以参考如下配置。

<Quidway> system-view [Quidway] interface gigabitethernet 1/0/1 [Quidway-GigabitEthernet1/0/1] undo portswitch [Quidway-GigabitEthernet1/0/1] ip address 172.16.10.1 24 //GigabitEthernet1/0/1IP地址需要与静态 ARP表项中的 IP地址(172.16.10.2)同网段。

[Quidway-GigabitEthernet1/0/1] quit [Quidway] arp static 172.16.10.2 0023-0045-0067 interface gigabitethernet 1/0/1

当交换机采用多端口ARP方式与NLB服务器群集连接时, NLB服务器的群集 IP地址为172.16.40.2,群集MAC地址为02bf-0045-0070。这时在交换机上配置对应的静态ARP表项时,可以参考如下配置。对于出接口是以太网接口,并且以太网接口处于二层模式的情况,建议小伙伴们在配置静态ARP表项时尽量同时指定VLAN和出接口,否则可能导致业务流量不通。

ARP代理(即Proxy ARP

前面我们提到,主机进行动态 ARP学习时,如果发现目的 IP地址与自己在同一网段,会发送广播 ARP请求报文进行 ARP学习。但是呢,有些情况下两台主机虽然在同一网段,但不在同一广播域,目的主机是无法收到 ARP请求报文的,因而也就无法成功学习到ARP表项。在连接两台主机的交换机上使能ARP代理后,交换机相当于一个中介, Host_1发送ARP请求报文请求Host_2MAC地址的时候,交换机会将自己的 MAC地址告诉Host_1。这样 Host_1发给Host_2的数据报文会先发给交换机,再由交换机转发给Host_2。例如下面的三种情况,我们就可以用到ARP代理。

情况一

需要互通的主机Host_1Host_2(主机上没有配置缺省网关)处于相同的网段但不在同一物理网络(即不在同一广播域)。由于在不同的广播域, Host_1发送的 ARP请求报文Host_2是收不到的,这时可以在交换机的VLANIF10VLANIF20接口上使能路由式Proxy ARP功能(arp-proxy enable),实现Host_1Host_2之间的互通。情况二

需要互通的主机Host_1Host_2处于相同网段,并且属于相同VLAN,但是VLAN内接口IF_1IF_2配置了端口隔离。由于 IF_1IF_2之间端口隔离, Host_1发送的ARP请求报文Host_2是收不到的,这时可以在Switch上关联了VLAN10VLANIF接口上使能VLANProxy ARP功能(arp-proxy inner-sub-vlan-proxy enable),实现Host_1Host_2之间的三层互通。

情况三

需要互通的主机 Host_1Host_2处于相同网段,但属于不同VLAN。由于不在同一VLANHost_1发送的 ARP请求报文Host_2当然也是收不到的,这时可以在 Switch上关联了VLAN10VLAN20VLANIF30接口上使能VLANProxy ARP功能( arp-proxy inter-sub-vlan-proxy enable),实现 Host_1Host_2之间的三层互通。

ok,看到这里,是不是已经对ARP的基本功能有所了解了呢~

第十二章 VLAN基础篇

相信各位大侠对于VLAN技术的掌握可能已经炉火纯青,但是小编还是要友情提醒下,不管技术如何高超,时不时的还需要补充下基本功滴(知其然知其所以然)!当然对于初入江湖的小伙伴们来说,这是必修课喔(只有打牢基础,对于 VLAN的应用才能得心应手)~~话不多说,让小编带您开始一段愉悦的VLAN基本功之旅吧!期待。。。。。。

什么是VLAN呢?

VLANVirtual Local Area Network)即虚拟局域网,是将一个物理的 LAN在逻辑上划分成多个广播域的通信技术。在19963月,IEEE802.1Internetworking委员会结束了对 VLAN初期标准的修订工作。新出台的标准进一步完善了 VLAN的体系结构,统一了 Frame-Tagging方式中不同厂商的标签格式,并制定了 VLAN标准在未来一段时间内的发展方向,形成的802.1Q的标准在业界获得了广泛的推广。后来IEEE1999年颁布了用于标准化VLAN实现方案的802.1Q协议标准草案。 802.1Q的出现打破了虚拟网依赖于单一厂商的僵局,从一个侧面推动了VLAN的迅速发展。

VLAN的数据帧和传统的以太网数据帧有什么区别呢?

IEEE 802.1QVLAN的正式标准,在传统的以太网数据帧基础上(源 MAC地址字段和协议类型字段之间)增加4个字节的802.1Q Tag。其中,数据帧中的 VIDVLAN ID)字段用于标示该数据帧所属的 VLAN,数据帧只能在所属VLAN内进行传输。

VLAN有哪些作用呢

由上图可以看出:通过划分不同的 VLANVLAN内的主机间可以直接通信,而 VLAN间不能直接互通,从而将广播报文限制在一个VLAN内。这里:小编总结了下VLAN技术的优点,一起来看下吧:

限制广播域:广播域被限制在一个VLAN内,节省带宽,提高网络处理能力。增强局域网的安全性:不同VLAN内的报文在传输时是相互隔离的,即一个 VLAN内的用户不能和其它VLAN内的用户直接通信。

特性攻

提高网络的健壮性:故障被限制在一个 VLAN内,本 VLAN内的故障不会影响其他VLAN的正常工作。灵活构建虚拟工作组:用 VLAN可以划分不同用户到不同的工作组,同一工作组的用户也不必局限于某一固定的物理范围,网络构建和维护更方便灵活。

VLAN数据帧在经过各接口时是如何处理的呢?

设备上都有哪些类型的接口呢?跟随小编一起看下吧!

  1. 1. Access交换机上用来连接用户主机的接口,它只能连接接入链路( Access Link)。
  2. 2. Trunk交换机上用来和其他交换机连接的接口,它只能连接干道链路(Trunk Link)。

除此之外,还有一种接口叫 Hybrid接口,是交换机上既可以连接用户主机,又可以连接其他交换机的接口。Hybrid接口既可以连接接入链路又可以连接干道链路。

Hybrid接口和Trunk接口在接收数据时,处理方法是一样的。唯一不同之处在于:发送数据时,Hybrid接口可以允许多个VLAN的报文发送时不打标签,而Trunk接口只允许缺省VLAN的报文发送时不打标签。

接口类型不同,交换机对VLAN数据帧的处理过程也不同。具体处理方式如下:

1. Access接口:

2. Trunk接口

3. Hybrid接口

特性攻

为了帮助小伙伴们更好的理解报文的处理方式,还可以通过下面的表格来学习!!!

接口类型 接收不带Tag的报文 接收带Tag的报文 发送帧处理过程
Access 接收该报文,并打上缺省的VLAN ID。 对比VLAN ID与缺省 VLAN ID相同时,接收该报文。不同时,丢弃该报文。 先剥离帧的PVID Tag,然后再发送。
Trunk 打上缺省的VLAN ID当缺省VLAN ID在允许通过的VLAN ID表里时,接收该报文。当缺省VLAN ID不在允许通过的VLAN ID列表里时,丢弃该报文。 VLAN ID在接口允许通过的VLAN ID表里时,接收该报文。VLAN ID不在接口允许通过的VLAN ID列表里时,丢弃该报文。 VLAN ID与缺省VLAN ID相同,且是该接口允许通过的VLAN ID时,去掉 Tag发送该报文。VLAN ID与缺省VLAN ID不同,且是该接口允许通过的VLAN ID时,保持原有 Tag发送该报文。
Hybrid VLAN ID是该接口允许通过的VLAN ID时,发送该报文。可以通过命令设置发送时是否携带Tag

第十三章 VLAN划分篇

江湖各位大侠重温了 VLAN的基础知识,是否想过 4094VLAN可以怎样划分,哪种方式又是好用简单的?细心的小编特地整理了一番,给各位大侠把玩把玩。

VLAN划分的方式:

  1. VLAN:根据交换机接口分配 VLAN ID。配置简单,可以用于各种场景。
  2. MAC划分VLAN:根据报文的源 MAC地址分配VLAN ID。经常用在用户位置变化,不需要重新配置 VLAN的场景。
  3. VLAN:根据报文的源 IP地址分配 VLAN ID。一般用于对同一网段的用户,进行统一管理的场景。
  4. VLAN:根据报文的协议类型分配 VLAN ID。适用于对具有相同应用或服务的用户,进行统一管理的场景。
  5. 基于匹配策略划分VLAN:根据指定的策略(譬如匹配报文的源 MAC、源IP和端口)分配VLAN ID。适用于对安全性要求比较高的场景。

几种划分VLAN的各种方式中,基于接口划分 VLAN,是最常用最简单的方式。那么到底怎么配置,怎么使用呢?

特性攻

场景一:一台交换机,两个用户,怎么通过接口划分 VLAN从而实现隔离呢?

先来看看同一网段的两台PC直接和交换机相连,不进行划分 VLAN,是否可以 ping通呢?

从上图可知,是可以ping通的,这是为什么呢?

因为缺省情况下,华为交换机的接口都默认加入 VLAN 1,两台 PC直接和交换机相连,只要属于同一个网段,就可以互通。

那么怎么通过VLAN实现隔离呢?只要把接口加入到不同的 VLAN,就可以了。例如交换机 GE0/0/1GE0/0/2端口分别以access类型加入VLAN 10 VLAN 20

此时,两台PC基于接口划分到不同 VLAN中,互连不能 ping通,实现了隔离。

场景二:跨交换机, 4个用户,怎么通过接口划分 VLAN实现隔离和互通呢?

如下图:缺省情况下, 4PC属于同一网段,相互可以 ping通。假设PC1PC2属于同一部门,PC3PC4属于同一部门。如何通过配置基于接口的 VLAN,实现同一部门之间可以互访,不同部门之间不能互访呢?

同一个部门两个用户PC1 PC2划分到同一个VLAN100。交换机1GE0/0/1和交换机2GE0/0/1端口分别以access类型加入VLAN100

另外一个部门的两个用户PC3 PC4划分到另一个 VLAN 200

两台相连交换机的端口GE0/0/3,分别以trunk端口加入VLAN 100 VLAN 200,实现跨交换机的通信。

这样,就可以实现到同一部门的用户PC1PC3可以互通,不同部门的用户 PC2PC4不能互通了。

OK,典型的应用场景就讲完了。各位大侠是否发现上面两个场景中, VLAN和端口数都比较少,而在现实组网中,经常需要配置多个 VLAN,多个端口,有什么办法可以快速完成配置吗?下面小编再介绍一下批量配置和快速恢复端口VLAN缺省配置的方法。

1、批量创建VLAN

< Huawei > system-view [Huawei]vlan batch 2 to 100

2、批量端口加入VLAN

[Huawei] port-group group-member GigabitEthernet 0/0/10 to GigabitEthernet 0/0/20 [Huawei-port-group]port link-type access [Huawei-port-group]port default vlan 100

3、快速恢复端口VLAN缺省配置

想要快速恢复端口VLAN的缺省配置,必须要知道什么是缺省配置?华为交换机,缺省情况下所有端口都是只加入 VLAN1的。那么下面和小编一起看看3种链路类型下,怎么快速恢复缺省配置呢? access口:一步搞定,命令是 undo port default vlan trunkhybrid口:三步搞定,先恢复 PVID的配置,再删除端口下所有 vlan,然后再把缺省的VLAN1 加入。具体命令如下

trunk hybrid
undo port trunk pvid vlan undo port trunk allow-pass vlan all port trunk allow-pass vlan 1 undo port hybrid pvid vlan undo port hybrid vlan all port hybrid untagged vlan 1

第十四章 VLAN通信篇

前两期小编介绍了VLAN的基础知识以及如何划分VLAN,之后不断有读者询问: VLAN划分后,同一VLAN用户可以二层互通,不同 VLAN用户则二层隔离,可有些场合不同VLAN用户又想互通,肿么办呢?请大家先回忆一下: VLAN是广播域,而广播域之间来往的数据包一般由路由器中继的。因此, VLAN间的通信通常要用到路由功能,这被称作 “VLAN间路由VLAN间路由,可以使用普通的路由器,也可以使用三层交换机。有了这个初步认识,接下来小编就开始介绍使用三层交换机进行 VLAN间通信的主要场景和技术。

VLAN间通信场景一:不同 VLAN不同网段用户间的通信,用户通过三层交换机互联使用技术: VLANIF

基本原理:前面提到,要实现 VLAN间互通,就要建立 VLAN间路由,此场景用户直连在三层交换机上,只需直连路由即可。而 VLANIF接口是一个三层的逻辑接口,在其上配置 IP地址为用户的网关地址后,它就在三层交换机上生成直连路由,同时,可作为用户的网关。这样,发往各 VLAN网段的报文,就可在路由表中分别找到其出接口 ---VLANIF接口,从而实现三层转发。

VLANIF只生成直连路由,只能使得相邻设备互通。现网中用户间可能会跨多台三层交换机(如三层网络),此时,除配置 VLANIF外,还要借助静态路由或路由协议才能实现互通。

VLAN间通信场景二:不同 VLAN不同网段用户间的通信,用户通过二层交换机互联,仅通过一台三层交换机实现 VLAN间通信使用技术:子接口(又称单臂路由)

基本原理:跟VLANIF一样,子接口也是三层逻辑接口。在子接口上配置IP地址

为用户的网关地址后,在三层交换机上同样形成直连路由, VLAN内的用户同样将网关指向对应的子接口(如图中 VLAN2内用户的网关为 Port1.1VLAN3内用户的网关为Port2.1),进而实现三层通信。

通过子接口实现三层互通,虽然可减少物理接口占有量,不过由于发送的流量会争用物理主接口的带宽,网络繁忙时,会导致通信瓶颈哟。

VLAN间通信场景三:不同 VLAN相同网段用户间的通信使用技术: Super VLAN(又称VLAN聚合)如下图所示,因 IP地址有限,不同 VLAN用户共用一网段,但又需要互通以及访问外网。

基本原理:通过定义Super-VLANSub-VLANSuper-VLAN只用来建立三层

VLANIF接口,与网关对应,不包含物理接口; Sub-VLAN只包含物理接口,不建立三层VLANIF接口,用来隔离广播域,一个 Super-VLAN可以包含一个或多个Sub-VLAN。我们可以这样看,每一个普通 VLAN都有一个三层逻辑接口和若干物理接口。而 Super VLAN把这两部分剥离开来: Sub-VLAN只映射物理接口,负责保留各自独立的广播域;而Super-VLAN负责实现所有 Sub-VLAN共享同一个三层接口的需求,使不同Sub-VLAN内的主机可以共用同一个网关;然后再通过建立 Super-VLANSub-VLAN间的映射关系,把三层逻辑接口和物理接口这两部分有机的结合起来,从而在实现普通 VLAN功能的同时,达到节省 IP地址的目的。

Sub-VLAN内主机与外网间的通信,跟使用 VLANIF通信原理类似,只不过多了一步查找Sub-VLANSuper-VLAN的映射关系;但 Sub-VLAN间的通信,需要借助Proxy-ARP才能实现,这是为什么呢?这是因为 Sub-VLAN内的主机同属一个网关,彼此通信时只会做二层转发,而不会通过网关进行三层转发,但不同 Sub-VLAN的主机在二层是相互隔离的,这就造成了 Sub-VLAN间无法通信,需要借助Proxy-ARP才能实现。

上述组网中,VLAN间用户均是通过三层交换机实现三层互通,三层互通需要查找路由表,转发效率较低。而二层转发效率高,那VLAN间能否实现二层互通呢?答案是可以,那就是可通过VLAN SwitchVLAN Mapping实现。

VLAN间通信场景四:不同 VLAN用户跨一台或多台交换机互联使用技术: VLAN Switch

基本原理:预先在各交换节点(如图中的 Switch)上建立一条静态转发路径(即 VLAN Switch表,指定VLAN转换关系和出接口)。这样,Switch根据VLAN Switch表将 Port2上收到报文中的 VLAN2转换为VLAN3,并从Port3发出;将 Port3上收到报文的 VLAN3将转换为 VLAN2,并从Port2发出,从而实现 VLAN2VLAN3间的二层互通。

VLAN Switch转发查的是 VLAN Switch表,而不是 MAC表,这就使得VLAN Switch转发效率较高。但VLAN Switch是否就因此而可大量应用呢?否,因为

VLAN Switch需要在途经的每个交换节点都要为每个 VLAN用户配置静态转发路径,这就限制了其使用范围,当有大量 VLAN用户接入,或用户跨运营商网络时就不再适用。

VLAN间通信场景五:不同 VLAN用户跨运营商网络互联使用技术: VLAN Mapping

基本原理:预先在需要 VLAN转换的两端设备(如图中 SwitchASwitchB)配置 VLAN映射关系,但不需像 VLAN Switch那样指定出接口。配置后, SwitchA接收到VLAN10~50报文后,根据 VLAN映射表将报文中的 VLAN转换为VLAN100,根据MAC表查到VLAN100对应出接口Port2VLAN100报文穿越运营商网络到达SwitchBPort2接口时,找到其出接口Port1,在从出接口发出前,将VLAN100转换为VLAN60~90,进而可通过分支 2的接入交换机二层转发到目的主机。因为只需在VLAN转换的两端设备配置,运营商网络无需改变其配置,大大简化了配置。 配置思路此场景配置简单,只需将连接PC的接口加入VLAN,然后创建VLANIF,并配置 IP地址为对应用户的网关即可。操作步骤 Switch上的配置如下: #

sysname Switch
#
vlan batch 10 20
#
interface Vlanif10
ip address 10.1.1.1 255.255.255.0 //IP地址为 PC1对应网关地址
#
interface Vlanif20
ip address 10.1.2.1 255.255.255.0 //IP地址为 PC2对应网关地址
#
interface GigabitEthernet0/0/1 //PC1划分到 VLAN10
port link-type access
port default vlan 10
#
interface GigabitEthernet0/0/2 //PC2划分到 VLAN20
port link-type access
port default vlan 20
#return

配置完成后,我们使用命令display ip routing-table查看设备上的路由:

可以看到,路由表中有了到达VLAN10VLAN20网段的直连路由。下面我们就验证一下,PC1PC2是否可以互相Ping通。在验证之前,先设置PC1IP地址为10.1.1.2 ,网关为10.1.1.1/24;设置 PC2IP地址为10.1.2.2 ,网关为 10.1.2.1/24,然后互Ping,结果如下:可以看到,互Ping成功,表明配置成功。

典型案例二

如下图所示,为安全及便于管理,企业为服务器专门划分VLAN,用户属于 VLAN10,服务器属于VLAN20,用户与服务器间跨接入、汇聚和核心交换机,其中,接入是二层交换机,汇聚、核心是三层交换机。由于业务需要,用户与服务器间需要互通。配置思路此场景用户与服务器间跨越多台二层、三层交换机,可以配置VLANIF,将汇聚交换机AGG作为用户PC的网关,核心交换机作为服务器Server的网关。但VLANIF只生成直连路由,只能使得相邻设备互通,要使 User与服务器互通,还需要配置从AGGVLAN20网段以及从COREVLAN10网段的路由,可以使用静态路由,也可以使用动态路由,本示例采用静态路由。操作步骤配置ACCAGGCORE的各接口,并将接口加入VLAN,使VLAN10的用户报文透传到AGGVLAN20Server报文透传到CORE ACC1的配置如下:

# sysname ACC1 # vlan batch 10 #

特性攻

interface GigabitEthernet0/0/1 //User划分到 VLAN10port link-type access port default vlan 10

#

interface GigabitEthernet0/0/2 //透传VLAN10AGG port link-type trunk port trunk allow-pass vlan 10

#return ACC2与此类似,只不过接口加入、透传的VLANVLAN20

AGG的配置如下:

#

sysname AGG

#

vlan batch 10 30

#

interface GigabitEthernet0/0/1 //透传VLAN10,以转发 User报文 port link-type trunk port trunk allow-pass vlan 10

#

interface GigabitEthernet0/0/2 //透传互联 VLAN30,以转发互联报文 port link-type trunk port trunk allow-pass vlan 30

#return

CORE的配置如下: # sysname CORE

特性攻

# vlan batch 20 30

#
interface GigabitEthernet0/0/1 //透传VLAN20,以转发 Server报文
port link-type trunk
port trunk allow-pass vlan 20
#
interface GigabitEthernet0/0/2 //透传VLAN30,以转发互联报文
port link-type trunk
port trunk allow-pass vlan 30
#return

AGG上配置VLANIF10IP地址,作为用户的网关;在CORE上配置VLANIF20

作为Server的网关,同时配置互联 VLANIF30,使AGGCORE互通

AGG的配置如下: # interface Vlanif10 ip address 10.1.1.1 255.255.255.0 //IP地址为User对应网关地址 # interface Vlanif30 ip address 10.10.30.1 255.255.255.0 //互联IP地址,不能与 UserServerIP网段冲突

CORE的配置如下: # interface Vlanif20 ip address 192.168.1.1 255.255.255.0 //IP地址为Server对应网关地址 # interface Vlanif30

特性攻

ip address 10.10.30.2 255.255.255.0 //互联IP地址,不能与 UserServerIP网段冲突配置至此,我们看看User是否能PingServer

可以看到,User此时Ping不通Server,这是因为AGG上没有到达Server网段

192.168.1.0/24的路由AGG上路由如下图所示:

AGGCORE上配置静态路由 AGG的配置如下: # ip route-static 192.168.1.0 255.255.255.0 10.10.30.2 CORE的配置如下: # ip route-static 10.1.1.0 255.255.255.0 10.10.30.1

对于VLANIFEth-Trunk这样的逻辑接口,静态路由必须采用下一跳,而不能是出接口,因为这些逻辑接口会有多个成员口,会出现多个下一跳,无法唯一确定下一跳。

配置完成后,我们再来用User Ping Server,结果如下:

可以看到,User可以PingServer,配置成功。

第十五章 VLAN隔离篇

小编在上期为大家介绍了多种VLAN互通场景和方式,之后读者又有了新的问题:如何对同一 VLAN下用户进行隔离呢,如果实现部分 VLAN互通、部分 VLAN隔离呢,如何针对某个用户、或某个网段用户进行隔离呢,下面就听小编一一道来。

场景一、同一VLAN下用户进行隔离

如果不希望同一VLAN下某些用户进行互通,可以通过配置端口隔离实现。下面小编通过一个实验来详细讲解如何实现端口隔离:如下图所示,三台PC属于同一 VLAN、同一网段,配置完成后,三台 PC都可以互访,现在要求PC1PC2之间不能互通,PC1PC3能够互通、PC2PC3能够互通。具体配置过程如下:

OK,配置完成,让我们来验证一下配置结果吧。 PC1 ping PC2,无法ping通。

PC1 ping PC3,可以ping通。

OK!配置成功。

场景二、部分VLAN间可以互通、部分 VLAN间隔离、VLAN内用户隔离——通过 MUX VLAN实现

MUX VLAN只适用于二层网络中、对同一网段的用户进行互通和隔离。 MUX VLAN分为Principal VLANSubordinate VLANSubordinate VLAN又分为 Separate VLANGroup VLANPrincipal VLAN可以和所有 VLAN互通。 Group VLAN可以和Principal VLAN和本VLAN内互通。 Separate VLAN只能和Principal VLAN互通,本VLAN内不能互通。下面小编通过一个例子详解介绍通过MUX VLAN进行VLAN互通和隔离。如下图所示,由于不同的PC属于不同的部门,需要对用户进行互通和隔离。
要求所有PC都可以访问服务器( Server),即VLAN20VLAN3可以访问 VLAN10
PC1PC2之间可以互访,和 PC3PC4不能互访,即 VLAN20VLAN30不能互访。
PC3PC4之间隔离,不能互访,即 VLAN30内用户不能互访。

详细配置步骤如下:

OK,配置完成,让我们来验证一下配置结果吧。

1.所有PC都可以和Principal VLAN中的Server互通。 PC1 ping Server

PC3 ping Server

2. 所有Group VLAN中的PC可以互通,但是不可以和Separate VLAN中的PC互通。

PC1 ping PC2

PC1 ping PC3

3. Separate VLANPC隔离,不能互通。

PC3 ping PC4

场景二:不同VLAN互通后,如何对部分 VLAN或部分用户进行隔离——通过流策略实现

流策略技术原理,小编就不做过多介绍了,想了解详细信息,请参见QoS手册,通过下面的例子介绍如何实现VLAN隔离。

如上图所示,FTP Server属于192.168.1.0/24网段, PC1PC2数属于

192.168.10.0/24PC3PC4属于192.168.20.0/24网段。假设所有VLAN已经通过 VLANIF接口实现VLAN间互通,详细配置方法不做赘述,请参加《VLAN通信篇》。将FTP Server的网关设置为 192.168.1.1,将PC1PC2的网关设置为192.168.10.1,将PC2PC4的网关设置为 192.168.20.1VLAN10VLAN20VLAN100内所有设备能够互通,例如:在PC1ping FTP Server,能够ping通。

现在要求PC1PC2所在网段设备能够访问 FTP ServerPC3PC4所在网段设备禁止访问FTP Server。在SwitchA上配置ACL和流策略进行隔离,192.168.10.0/24网段的设备禁止访问 FTP Server,详细配置步骤如下:

配置完之后,我们再来验证一下PC1是否能够pingFTP Server呢。

但是PC3任然可以pingFTP Server

OK,配置成功,大功告成。

通过ACL和流策略对VLAN进行隔离,是一种非常灵活的方式,也可以对单个用户进行隔离,ACL只要匹配单个用户的 IP即可。

第十六章玩转高大上的 QinQ技术

听闻江湖对QinQ这个高大上的技术很有兴趣,可是在使用过程中总是不能如意。那就和小编一起来玩转QinQ吧。首先,小编先说一说 QinQ为啥就高大上呢?QinQ一般使用在汇聚层,在组网图中的高处,所以是高。QinQ报文拥有两层VLAN Tag,比一般的二层报文多了 4个字节的VLAN Tag,所以是大。QinQ技术,可以灵活识别各种不同的业务,瞬间提升档次,所以是上。那么QinQ技术是怎么来的呢?

二层网络通过在报文中添加一层 VLAN Tag标记来隔离广播域,可是IEEE 802.1Q标准协议只规划了 4096VLAN ID,这哪里够我们浩大的江湖人士使用呀。于是聪明的大侠们,就发明了在报文中封装两层 VLAN Tag的技术,把VLAN的数目扩从到4096*4096,更好的满足大侠们的使用。这种报文中封装两层VLAN Tag的方法,就叫 QinQ技术(出自 IEEE 802.1ad标准协议)。报文格式变化如下图所示:

S系列交换机是否支持这个 QinQ技术呢?又是怎么实现的呢?

这么强大的技术,S系列交换机当然要支持了。除了作为接入设备的最低端的 2300EI&SI/2700EI&SI设备,其他的S系列交换机所有版本,都是支持QinQ技术的。 S系列交换机支持的QinQ技术分为两种:基本QinQ和灵活QinQ基本QinQ也叫做普通QinQ,是基于接口实现的,即通过该接口的所有报文,都加上一层VLAN Tag。如图详解:VLAN 10VLAN20VLAN30用户的报文在汇聚设备的入口,加上一层VLAN 100Tag。这样用户的报文在公网传输时就携带两层 VLAN Tag,并且在外层VLAN TagVLAN域内进行传输,内层的VLAN Tag被当作报文的数据部分进行传输。(小编提问:QinQ报文的MAC地址表项是根据外层VLAN Tag学习呢?还是根据内层VLAN Tag学习呢?答案后面揭晓。)

灵活QinQ(这就指的是我们常说的 VLAN Stacking)是基于 VLAN和接口实现的,即通过该接口并且和指定VLAN相匹配的报文,才会再加上一层 VLAN Tag。如图详解:VLAN 10VLAN20VLAN30用户的报文在汇聚设备的入口,分别加上不同的VLAN Tag 100200300。用户报文在公网传输时也是携带两层 VLAN Tag,并且在不同外层 VLAN Tag的域内进行转发。

(小编回答:QinQ报文的 MAC地址表项是根据外层VLAN Tag进行学习的。因为内层VLAN Tag是被当作报文的数据部分进行传输的。)

两种不同的QinQ应该怎么配置呢?

类别 配置 说明
基本QinQ port link-type dot1q-tunnel port default vlan 100 盒式和框式设备的配置都是一样的。超级简单,只要两条命令就搞定了。
灵活QinQ port link-type hybrid qinq vlan-translation enable port hybrid untagged vlan 100 200 300 port vlan-stacking vlan 10 stack-vlan 100 port vlan-stacking vlan 20 stack-vlan 200 port vlan-stacking vlan 30 to 39 stack-vlan 300 qinq vlan-translation enable盒式设备需要这个配置,框式设备不需要这个配置的。配置更灵活,使用更广泛。

好了,下面再和小编一起看看基本QinQ和灵活QinQ的应用场景吧。

基本QinQ场景

公司S要求接入运营商的网络,运营商为公司S分配的VLAN1000,公司S的各个部门,分属于不同的VLAN

配置思路只要在PE设备连接公司S的接口上,配置基本QinQ功能。对公司S所有的报文都加一层VLAN1000Tag,不需要修改 CE设备的配置。

GE1/0/1的配 GE1/0/2的配
port link-type dot1q-tunnel port link-type trunk
PE
port default vlan 1000 port trunk allow-pass vlan 1000

这样配置之后,公司S的各个部门,就可以直接访问运营商了。

灵活QinQ场景

两个公司AB分布在不同的区域,公司 A的数据业务在VLAN 10内转发,语音业务在VLAN 30内转发。公司B的数据业务也在VLAN 10内转发,语音业务也在VLAN 30内转发。可是运营商的 PE设备,要求数据业务在 VLAN 100内通信,语音业务在 VLAN 30内通信。要求在不更改公司 A和公司B的现有组网情况下,实现公司 A和公司B数据业务和语音业务的正常通信。

配置思路对于不在同一VLAN的数据业务,只需要在 PE设备上配置灵活 QinQ功能,就实现公司A和公司B业务的正常通信。对于在同一VLAN的语音业务,在 PE设备上直接透传就可以了。CE设备相连的接口GE1/0/1,配置灵活QinQ功能,即vlan-stacking的命令,完成对不同的CE-VLAN打上相同的PE-VLAN与公网相连的接口GE1/0/2,需要透传PE-VLAN,这个可千万不能忘记哟。

GE1/0/1的配 GE1/0/2的配
PE1 port link-type hybrid port hybrid tagged vlan 30 port hybrid untagged vlan 100 port vlan-stacking vlan 10 stack-vlan 100 port link-type trunk port trunk allow-pass vlan 30 100
PE2 port link-type hybrid port hybrid tagged vlan 30 port hybrid untagged vlan 100 port vlan-stacking vlan 10 stack-vlan 100 port link-type trunk port trunk allow-pass vlan 30 100

CE设备相连的接口GE1/0/1,需要把 PE-VLANUntagged的方式加入接口,从而实现该接口在转发外层 VLAN100的报文时,可以剥掉外层 VLAN,使CE设备可以正常处理报文。咦!!!按照小编的配置之后,怎么公司A和公司B还是不能正常通信呢?

这种情况,一般是在PE设备上,没有创建对应的外层VLAN。可以通过命令 display vlan summary查看设备上已经创建的 VLAN中是否有外层 VLAN 100VLAN 30

全局创建VLAN后,数据业务可以正常通信了,可以语音业务还是不行呀?

也就是说双层VLAN Tag的报文可以正常通信,而单层 VLAN Tag的报文不可以正常通信。这种情况,一般出现在SA系列标准单板和盒式 S5300EI/S5700EIS3300EI&SI/ S3700EI&SI设备上。对于 SA系列的标准单板和盒式 5300EI/5700EIS3300EI&SI/ S3700EI&SI设备,对于需要单层透传的 VLAN,需要单独配置自身映射到自身的 VLAN Mapping。在PE1PE2GE1/0/1接口上,再增加配置port vlan-mapping vlan 30 map-vlan 30。如下图所示:

第十七章细说 ACL那些事儿(初步认识 ACL

传闻江湖乱世之时,出现了一门奇招妙计名曰 “ACL”。其变化多端、高深莫测,部署在江湖各处的交换机轻松使上这一招,便能平定乱世江湖。所以,这 ACL也被江湖人士一时传为佳话。ACL到底是何方秘籍?它拥有什么样的魔力能够平定江湖?今日,且让小编来为大家答疑解惑!

ACL,是Access Control List的简称,中文名称叫“访问控制列表”,它由一系列规则(即描述报文匹配条件的判断语句)组成。这些条件,可以是报文的源地址、目的地址、端口号等。这样解释ACL,大家是不是觉得太抽象了!

好,现在小编换一种解释方式。打个比方, ACL其实是一种报文过滤器, ACL规则就是过滤器的滤芯。安装什么样的滤芯(即根据报文特征配置相应的ACL规则),ACL就能过滤出什么样的报文了。基于过滤出的报文,我们能够做到阻塞攻击报文、为不同类报文流提供差分服务、对Telnet登录/FTP文件下载进行控制等等,从而提高网络环境的安全性和网络传输的可靠性。

说到这,大家一定迫不及待的想看看ACL长啥模样。话不多说,先上图!

围绕这张 ACL结构图,小编为大家一一介绍 ACL的基本概念。

ACL分类

首先,图中是一个数字型 ACLACL编号为 2000。这类似于人类的身份证号,用于唯一标识自己的身份。当然,人类的身份证上不仅有身份证编号,还有每个人自己的名字。 ACL也同样如此,除了数字型 ACL,还有一种叫做命名型的 ACL,它就能拥有自己的 ACL名称。

通过名称代替编号来定义ACL,就像用域名代替 IP地址一样,可以方便记忆,也让大家更容易识别此ACL的使用目的。另外,小编告诉大家,命名型ACL实际上是“名字 +数字”的形式,可以在定义命名型ACL时同时指定ACL编号。如果不指定编号,则由系统自动分配。上图就是一个既有名字“deny-telnet-login”又有编号 “3998”的ACL

细心的你,一定会注意到,ACL结构图中的ACL编号是“2000”,而这个例子中的ACL编号是“ 3998”,两者有什么区别吗?实际上,按照ACL规则功能的不同, ACL被划分为基本 ACL、高级ACL、二层 ACL、用户自定义 ACL和用户ACL这五种类型。每种类型 ACL对应的编号范围是不同的。ACL 2000属于基本 ACLACL 3998属于高级 ACL。高级 ACL可以定义比基本ACL更准确、更丰富、更灵活的规则,所以高级 ACL的功能更加强大。

ACL类别 规则定义描述 编号范围
基本ACL 仅使用报文的源IP地址、分片标记和时间段信息来定义规则。 2000~2999
高级ACL 既可使用报文的源IP地址,也可使用目的地址、IP优先级、ToSDSCPIP议类型、ICMP类型、TCP源端口/目的端口、UDP源端口/目的端口号等来定义规则。 3000~3999
二层ACL 可根据报文的以太网帧头信息来定义规则,如根据源 MAC地址、目的 MAC地址、以太帧协议类型等。 4000~4999
用户自定义 ACL 可根据报文偏移位置和偏移量来定义规则。 5000~5999

ACL规则

接下来,我们来看看图中 ACL的“deny | permit”语句。这些条件语句,我们称作ACL规则(rule)。其中的“ deny | permit”,称作ACL动作,表示拒绝 /允许。每条规则都拥有自己的规则编号,如 5104294967294。这些编号,可以自行配置,也可以由系统自动分配。那么系统是怎样自动分配规则编号的?小编先卖个关子,请继续关注下文。 ACL规则的编号范围是04294967294,所有规则均按照规则编号从小到大进行排序。所以,上图中我们可以看到rule 5排在首位,而规则编号最大的 rule 4294967294排在末位。系统按照规则编号从小到大的顺序,将规则依次与报文匹配,一旦匹配上一条规则即停止匹配。关于 ACL的匹配机制,在后续连载系列中,小编还将为大家作更深入的介绍。除了包含ACL动作和规则编号,我们可以看到 ACL规则中还定义了源地址、生效时间段这样的字段。这些字段,称作匹配选项,它是ACL规则的重要组成部分。其实,ACL提供了极其丰富的匹配选项。你可以选择二层以太网帧头信息(如源

特性攻

MAC、目的 MAC、以太帧协议类型)作为匹配选项,也可以选择三层报文信息(如源地址、目的地址、协议类型)作为匹配选项,还可以选择四层报文信息(如 TCP/UDP端口号)等等等等。你只需分析清楚需要过滤的报文的特征,便可以指定使用哪一种ACL匹配选项,从而让ACL能正确的识别需过滤的报文。关于 ACL匹配选项的配置方法,在后续连载系列中,小编还将为大家详细的介绍。

步长

最后,小编来为大家介绍 ACL中一个非常重要的概念——步长。了解了这个知识点,上文中遗留的问题“系统怎样自动分配规则编号”便迎刃而解了。步长,是指系统自动为 ACL规则分配编号时,每个相邻规则编号之间的差值。也就是说,系统是根据步长值自动为ACL规则分配编号的。图中的ACL 2000,步长就是 5。系统按照 51015…这样的规律为ACL规则分配编号。如果将步长调整为了2,那么规则编号会自动从步长值开始重新排列,变成246…。有图为证~

小编支招:ACL的缺省步长值是 5。通过display acl acl-number命令,可以查看ACL规则、步长等配置信息。通过 step step命令,可以修改ACL步长值。

说到这,小伙伴们是不是好奇了,设置 ACL步长有什么作用呢?

实际上,设置步长的目的,是为了方便大家在 ACL规则之间插入新的规则。

先来看个例子。

假设,一条 ACL中,已包含了下面三条规则 51015。如果你希望源 IP地址为 1.1.1.3的报文也被禁止通过,该如何处理呢?

rule 5 deny source 1.1.1.1 0 //表示禁止源IP地址为 1.1.1.1的报文通过 rule 10 deny source 1.1.1.2 0 //表示禁止源IP地址为 1.1.1.2的报文通过 rule 15 permit source 1.1.1.0 0.0.0.255 //表示允许源 IP地址为1.1.1.0网段的报文通过

我们来分析一下。由于 ACL匹配报文时遵循“一旦命中即停止匹配”的原则,所以源 IP地址为 1.1.1.11.1.1.2的报文,会在匹配上编号较小的 rule 5rule 10后停止匹配,从而被系统禁止通过;而源 IP地址为 1.1.1.3的报文,则只会命中 rule 15,从而得到系统允许通过。要想让源 IP地址为 1.1.1.3的报文也被禁止通过,我们必须为该报文配置一条新的 deny规则。

rule 5 deny source 1.1.1.1 0 //表示禁止源IP地址为 1.1.1.1的报文通过 rule 10 deny source 1.1.1.2 0 //表示禁止源IP地址为 1.1.1.2的报文通过

rule 11 deny source 1.1.1.3 0 //表示禁止源IP地址为 1.1.1.3的报文通过

rule 15 permit source 1.1.1.0 0.0.0.255 //表示允许源 IP地址为1.1.1.0网段的报文通过

rule 10rule 15之间插入 rule 11后,源 IP地址为 1.1.1.3的报文,就可以先命中 rule 11而停止继续往下匹配,所以该报文将会被系统禁止通过。

试想一下,如果这条 ACL规则之间间隔不是 5,而是 1rule 1rule 2rule 3…),这时再想插入新的规则,该怎么办呢?只能先删除已有的规则,然后再配置新规则,最后将之前删除的规则重新配置回来。如果这样做,那付出的代价可真是太大了!

所以,通过设置 ACL步长,为规则之间留下一定的空间,后续再想插入新的规则,就非常轻松了。

好啦,以上就是小编为大家介绍的 ACL基础理论知识。回顾一下全文,知识点主要包括: ACL是什么、有什么作用、分哪几类、规则是如何定义的、步长的含义以及步长的作用。小伙伴们,你们都已经掌握了吗?

第十八章细说 ACL那些事儿( ACL应用篇)

铛铛铛铛铛,小伙伴们,小编又跟大家见面了!今天小编继续给大家说说 ACL那些事儿,但不再是说 ACL的基本概念,也不再说抽象的 ACL理论。这一期,小编将给大家呈现丰富多彩的ACL应用,为大家讲解各个业务模块应用 ACL时的处理机制差异、应用方式差异,并且带领大家一起动手配置真实的ACL应用案例。

ACL应用范围

通过前两期的ACL理论学习,大家知道ACL并不能单独完成控制网络访问行为或者限制网络流量的效果,而是需要应用到具体的业务模块才能实现上述功能。

那么ACL到底可以应用在哪些业务中呢小编总结了一下,ACL应用的业务模块非常多,但主要分为以下四类

业务分类 应用场景 涉及业务模块
登录控制 对交换机的登录权限进行控制,允许合法用户登录,拒绝非法用户登录,从而有效防止未经授权用户的非法接入,保证网络安全性。例如,一般情况下交换机只允许管理员登录,非管理员用户不允许随意登录。这时就可以在Telnet中应用ACL,并在ACL中定义哪些主机可以登录,哪些主机不能。 Telnet、SNMP、FTP、TFTP、 SFTP、HTTP

ACL业务模块的处理机制

各类ACL应用的业务模块对命中 /未命中ACL的处理机制是各不相同的。例如,在流策略中应用 ACL时,如果 ACL中存在规则但报文未匹配上,该报文仍可以正常通过;但在 Telnet中应用ACL,这种情况下,该报文就无法正常通过了。再如,在黑名单中应用ACL时,无论ACL规则配置成 permit还是deny,只要报文命中了规则,该报文都会被系统丢弃,其他模块却不存在这种情况。所以,大家在配置ACL规则并应用到业务模块中时,一定要格外小心。为了方便大家查阅,小编特地将常用 ACL业务模块的处理机制进行了整理。

业务模块 匹配上了 permit规则 匹配上了 deny规则 ACL中配置了规则,但未匹配上任何规则 ACL中没有配置规则 ACL未创建
Telnet permit(允许登录) deny(拒绝登录) deny(拒绝登录) permit(允许登录) permit(允许登录)
HTTP permit(允许登录) deny(拒绝登录) deny(拒绝登录) permit(允许登录) permit(允许登录)
SNMP permit(允许登录) deny(拒绝登录) deny(拒绝登录) permit(允许登录) permit(允许登录)
FTP permit(允许登录) deny(拒绝登录) deny(拒绝登录) permit(允许登录) permit(允许登录)
TFTP permit(允许登录) deny(拒绝登录) deny(拒绝登录) permit(允许登录) permit(允许登录)

特性攻

特性攻

ACL应用方式

每个业务模块的ACL应用方式,风格也是各不相同。为此,小编同样进行了一番整理,供大家参考查阅。

业务模块 ACL应用方式 可使用的 ACL编号范围
Telnet 方式一:系统视图下执行命令telnet [ ipv6 ] server acl acl-number方式二: a、执行命令user-interface vty first-ui-number [ last-ui-number ]进入VTY用户界面视图 b、执行命令acl [ ipv6 ] acl-number { inbound | outbound } 2000~3999
HTTP 系统视图下执行命令http acl acl-number 2000~3999
SNMP SNMPv1SNMPv2c系统视图下执行命令snmp-agent acl acl-number 2000~2999

好啦,有了小编整理的这两张表做参考,配置 ACL应用案例就可以轻松搞定啦!下面就跟随小编一起,动手试试吧~

ACL应用案例

案例1:使用 ACL限制Telnet访问权限为了保障远程维护网络设备的安全性,现要求只有管理员(源地址是 10.1.1.1/32)才能telnet登录交换机,其他人不允许登录。

要实现这个需求,一定是在Telnet模块中应用ACL。那么该如何配置ACL规则呢?大家是不是认为应该先配置一条permit规则允许10.1.1.1/32登录,然后再配置多条deny规则拒绝其他地址登录呢?其实大可不必。查阅Telnet模块的报文处理机制参照表,当ACL中存在规则的情况下,如果报文匹配上permit规则,则该地址允许登录设备;如果未匹配上规则,该地址被拒绝登录设备。

业务模块 匹配上了 permit规则 匹配上了 deny规则 ACL中配置了规则,但未匹配上任何规则 ACL中没有配置规则 ACL未创建
Telnet permit(允许登录) deny(拒绝登录) deny(拒绝登录) permit(允许登录) permit(允许登录)

因此,我们仅需配置一条允许 10.1.1.1/32地址通过的permit规则即可,10.1.1.1/32

以外的地址的报文因匹配不上任何规则会被拒绝登录。

案例1关键配置的配置文件如下:

#

telnet server port 1025

#

acl number 2001 //创建基本 ACL,编号为 2001 rule 5 permit source 10.1.1.1 0 //仅允许 10.1.1.1/32登录

# aaa local-user admin1234 password irreversible-cipher ****** //登录密码用******代替,请根据实际情况配置

local-user admin1234 privilege level 3

local-user admin1234 service-type telnet # user-interface maximum-vty 8 user-interface vty 0 7

acl 2001 inbound //对通过用户界面的登录进行限制

案例2:使用基于时间的 ACL限制用户访问服务器权限某企业禁止市场部门和研发部门在上班时间( 8:0017:30)访问工资查询服务器(IP地址为10.10.4.9/32),而总裁办公室不受限制,可以随时访问。

分析上述需求,实际上就是要对源 IP=10.10.1.0/24访问目的IP=10.10.4.9/32的转发

特性攻

流量、以及源 IP=10.10.2.0/24访问目的IP=10.10.4.9/32的转发流量,在特定时间内进行限制,其他访问流量则不受限制,所以我们可以通过在流策略中应用ACL来解决。

1) 首先,查阅流策略模块的 ACL处理机制参照表,为需要过滤的报文配置 ACL规则。当ACL中存在规则的情况下,如果报文匹配上 deny规则,则被拒绝通过;如果未匹配上,则会被正常转发。因此,根据上述需求,我们只需要针对两类需限制的流量,分别配置 deny规则即可。其他地址访问服务器的报文因匹配不上任何规则而被正常转发,不受限制。行为动作为deny。同时为市场部和研发部分别创建流策略 p_marketp_ rd,并将流分类和流行为与流策略绑定,最后再在接口上应用流策略。在选择流策略的应用方向时,一定要注意,需求中是要对源自市场部和研发部的报文进行过滤,即对从接口 GE1/0/0和接口GE1/0/1进入交换机的报文进行过滤,所以流策略的应用方向必须指定为入方向(inbound)。如果应用方向配置成了出方向(outbound),那就达不到过滤的效果了。

业务模块 匹配上了 permit规则 匹配上了 deny规则 ACL中配置了规则,但未匹配上任何规则 ACL中没有配置规则 ACL未创建
流策略 流行为是 permit: permit(允许通过)流行为是 deny时: deny(丢弃报文) deny(丢弃报文) permit(功能不生效,按照原转发方式进行转发) permit(功能不生效,按照原转发方式进行转发) permit(功能不生效,按照原转发方式进行转发)
2) 其次,我们需要注意,需求中强调了是在一定时间范围内进行流量限制,所
以仅仅进行流量控制是不可行的,还必须在规则中引入生效时间段。
我们定义一个时间段名称为control-time,并配置该时间段为 8:0017:30,然
后在规则中指定time-name参数为control-time,即把生效时间段与ACL关联
起来了。
3) 最后,我们再查阅流策略ACL应用方式参照表,将 ACL应用到流策略中。
根据上述需求,我们为市场部和研发部分别配置两个流分类 c_marketc_rd
然后将配置的两条deny规则对应的ACL应用到两个流分类中,并配置两个流

小编提醒,上述案例我们还可以通过这样的配置来实现需求:在一条 ACL中配置两条规则,在一个流分类中应用这条 ACL,配置一个流行为动作为 deny,最后创建并应用一个流策略。这样配置起来更加简洁和方便,但同时又带来了新的问题:若后续企业增加了市场部对其他服务器的访问限制,这时该如何处理呢?如果之前市场部和研发部使用的是同一个ACL、流分类、流行为和流策略(这整套ACL的相关配置小编统称为“ ACL策略配置”),那么这时只能重新再为市场部配置一条新的ACL策略;如果之前两个部门使用的是不同的 ACL策略,那么现在只需在市场部的ACL策略中,增加一条 ACL规则即可解决。所以,为各个部门部署独立的 ACL策略,可以让您在后续需求扩充或发生改变时,更加方便的维护网络配置。小编建议大家把眼光放长远一些,不要只顾眼前配置的简单噢~案例2关键配置的配置文件如下: time-range control-time 08:00 to 17:30 working-day //配置生效时间段,工作日 8:00

17:30 # acl number 3002

特性攻

rule 5 deny ip source 10.10.1.0 0.0.0.255 destination 10.10.4.9 0 time-range control-time //限制市场部人员在上班时间不能访问工资服务器 # acl number 3003 rule 5 deny ip source 10.10.2.0 0.0.0.255 destination 10.10.4.9 0 time-range control-time

//限制研发部人员在上班时间不能访问工资服务器 # traffic classifier c_market operator or precedence 5 //为市场部配置基于 ACL的流分类

if-match acl 3002 //对匹配ACL 3002的报文(即源地址是市场部 IP的报文)进行分类

traffic classifier c_rd operator or precedence 10 //为研发部配置基于 ACL的流分类

if-match acl 3003 //对匹配ACL 3003的报文(即源地址是研发部 IP的报文)进行分类 # traffic behavior b_market deny //配置流行为,拒绝匹配上规则的报文通过 traffic behavior b_rd

结束了ACL应用案例的配置,本期 ACL应用篇也要完结了。限于篇幅问题,小编只能为大家讲解两个最为典型的ACL案例。好学的你,一定觉得不过瘾吧!想要了解更多的ACL技术原理和应用案例,你可以登录技术支持网站

http://support.huawei.com/enterprise/docinforeader.action?contentId=DOC10000450 68&idPath=7919710|9856733|7923144|20985028 ,下载并学习这里的交换机产品文档。

第十九章细说 ACL那些事儿( ACL匹配篇)

Hi,小伙伴们,小编又来报道啦!在上一期中,小编围绕一张 ACL结构图展开介绍,让大家了解了 ACL的概念、作用和分类,并且知道了 ACL是通过规则匹配来实现报文过滤的。但ACL到底是如何进行规则匹配的,相信大家还是一头雾水。本期,小编就将带领大家深入 ACL内部,说一说关于“ ACL匹配”的那些事儿。

ACL匹配机制

首先,小编为大家介绍 ACL匹配机制。上一期提到, ACL在匹配报文时遵循“一旦命中即停止匹配”的原则。其实,这句话就是对 ACL匹配机制的一个高度的概括。当然, ACL匹配过程中,还存在很多细节。比如, ACL不存在系统会怎么处理?ACL存在但规则不存在系统会怎么处理?为了对整个 ACL匹配过程展开详细的介绍,小编画了一张 ACL匹配流程图,相信对大家理解 ACL匹配机制能有所帮助。

从整个ACL匹配流程可以看出,报文与 ACL规则匹配后,会产生两种匹配结果: 匹配不匹配
匹配(命中规则):指存在 ACL,且在 ACL中查找到了符合匹配条件的规则。不论匹配的动作是“permit”还是“deny”,都称为 匹配,而不是只是匹配上 permit规则才算匹配
不匹配(未命中规则):指不存在 ACL,或ACL中无规则,再或者在 ACL中遍历了所有规则都没有找到符合匹配条件的规则。切记以上三种情况,都叫做不匹配

小编提醒大家,无论报文匹配 ACL的结果是“不匹配”、“允许”还是

“拒绝”,该报文最终是被允许通过还是拒绝通过,实际是由应用 ACL的各个业务模块来决定的。不同的业务模块,对命中和未命中规则报文的处理方式也各不相同。例如,在 Telnet模块中应用ACL,只要报文命中了 permit规则,就允许通过;而在流策略中应用 ACL,如果报文命中了 permit规则,但流行为动作配置的是deny,该报文会被拒绝通过。在后续连载的《访问控制列表 -细说ACL那些事儿(应用篇)》中,小编将结合各类 ACL应用,为大家细说各个业务模块的区别。

ACL规则匹配顺序

从上面的 ACL匹配报文流程图中,可以看到,只要报文未命中规则且仍剩余规则,系统会一直从剩余规则中选择下一条与报文进行匹配。

系统是根据什么样的顺序来选择规则进行报文匹配的呢?

回答这个问题之前,先来看个例子。假设我们先后执行了以下两条命令进行配置:

rule deny ip destination 1.1.0.0 0.0.255.255 //表示拒绝目的IP地址为1.1.0.0网段的报文通过 rule permit ip destination 1.1.1.0 0.0.0.255 //表示允许目的IP地址为1.1.1.0网段的报文通过,该网段地址范围小于1.1.0.0网段范围

这条 permit规则与 deny规则是相互矛盾的。对于目的 IP=1.1.1.1的报文,如果系统先将 deny规则与其匹配,则该报文会被禁止通过。相反,如果系统先将 permit规则与其匹配,则该报文会得到允许通过。因此,对于规则之间存在重复或矛盾的情形,报文的匹配结果与 ACL规则匹配顺序是息息相关的。下面,小编就为大家介绍 ACL定义的两种规则匹配顺序:配置顺序(config)和自动排序( auto)。

配置顺序

配置顺序是指系统按照 ACL规则编号从小到大的顺序进行报文匹配,规则编号越小越容易被匹配。后插入的规则,如果你指定的规则编号更小,那么这条规则可能会被先匹配上。

小编提醒,ACL规则的生效前提,是要在业务模块中应用 ACL。当ACL被业务模块引用时,你可以随时修改 ACL规则,但规则修改后是否立即生效与具体的业务模块相关。关于 ACL的应用,在后续连载的应用篇中,小编还将为大家详细介绍。自动排序自动排序是指系统使用 深度优先的原则,将规则按照精确度从高到底进行排序,系统按照精确度从高到低的顺序进行报文匹配。规则中定义的匹配项限制越严格,规则的精确度就越高,即优先级越高,那么该规则的编号就越小,系统越先匹配。例如,有一条规则的目的 IP地址匹配项是一台主机地址 2.2.2.2/32,而另一条规则的目的 IP地址匹配项是一个网段 2.2.2.0/24,前一条规则指定的地址范围更小,所以其精确度更高,系统会优先将报文与前一条规则进行匹配。

小编提醒,在自动排序的ACL中配置规则,不允许自行指定规则编号。系统能自动识别出该规则在这条ACL中对应的优先级,并为其分配一个适当的规则编号。例如,在auto模式的acl 3001中,存在以下两条规则。

如果在acl 3001中插入rule deny ip destination 1.1.1.1 0(目的 IP地址是主机地址,优先级高于上图中的两条规则),系统将按照规则的优先级关系,重新为各规则分配编号。插入新规则后,新的排序如下。

可以看到,rule deny ip destination 1.1.1.1 0的优先级最高,排列最靠前。

ACL规则匹配项

最后,我们来说说ACL规则最核心的部分——规则匹配项。在上一期中,小编在介绍 ACL分类时,就已经提到各类 ACL的规则定义描述。比如,基本 ACL可以使用报文的源 IP地址作为匹配选项;高级 ACL则更高一筹,不仅可以使用源IP地址,还能使用目的 IP地址、协议类型、端口号等等。今天小编为大家讲解几个最常用的匹配选项——协议类型、目的地址和生效时间段。 PS:源地址的使用方法与目的地址同理,小编不再赘述。

协议类型

格式为:protocol-number | icmp | tcp | udp | gre | igmp | ip | ipinip | ospf高级ACL支持过滤的报文类型很多,常用的协议类型包括: ICMP(协议号1)、 TCP(协议号6)、UDP(协议号17)、GRE(协议号47)、IGMP(协议号2)、 IP(指任何IP层协议)、 IPinIP(协议号4)、OSPF(协议号89)。protocol-number取值可以是1255

什么情况下可以使用协议类型作为匹配项?

例如,交换机某个接口下的用户存在大量的攻击者,你希望能够禁止这个接口下的所有用户接入网络。这时,通过指定协议类型为IP来屏蔽这些用户的 IP流量,就可以达到目的。配置如下: rule deny ip //表示拒绝IP报文通过再如,交换机上打开透明防火墙功能后,在缺省情况下,透明防火墙会在域间丢弃所有入域间的报文,包括业务报文和协议报文。如果你希望像 OSPF这样的动态路由协议报文能正常通过防火墙,保证路由互通,这时,通过指定协议类型为 OSPF即可解决问题。配置如下: rule permit ospf //表示允许OSPF报文通过

目的地址

格式为:destination { destination-address destination-wildcard | any }

destination-address:指定报文的目的地址。

destination-wildcard:指定通配符掩码。可以为 0,相当于 0.0.0.0,表示目的

地址为主机地址。

any:表示对任意目的地址都匹配。

什么情况下可以使用目的地址作为匹配项?

例如,某公司有一台非常重要的服务器,其 IP地址为 1.1.1.1,现希望对该服务器的访问权限进行限制。这时,你可以通过指定目的地址为匹配选项来解决该问题。配置如下: rule deny ip destination 1.1.1.1 0 //表示拒绝目的地址是 1.1.1.1的报文通过

小编提醒:在将目的地址定义为 ACL规则匹配项时,还需要同时指定通配符掩码,用来与目的地址字段共同确定一个地址范围。通配符掩码的格式与 IP地址相同,也是一个 32比特位的数字字符串,用于指示目的 IP地址中的哪些位将被检查。各比特位中, 0表示检查相应的位 1表示 不检查相应的位,概括为一句话就是 检查 0,忽略 1”。如图所示,以 8比特为例,通配符的低 8位如果为全 0,就表示对目的 IP地址的低 8位全部进行检查;全 1就表示全部忽略。有多少位为 0,就表示检查多少位;有多少位为 1,就表示忽略多少位。

为了进一步加深对通配符掩码的理解,小编特出一道考题来考考大家:

destination-address =172.30.16.0 destination -wildcard = 0.0.15.255 ,表示什么范围的地址?

  1. 首先,分析该目的地址和通配符掩码共同确定的地址范围的高两个字节。目的地址高两个字节是“172.30”,通配符掩码的高两个字节是 “0.0”,按照 检查 0”原则,该目的地址和通配符掩码确定的地址的高两个字节必然是 “172.30”
  2. 然后,再分析第三个字节。通配符掩码的第三个字节是 15,转换为二进制比特是 00001111。根据检查 0,忽略 1”原则,小编将分析过程画图如下。
  3. 由于通配符掩码的高 4位是 0000、后四位是 1111,所以得出该目的地址和通配符掩码确定的地址的第三个字节,是 00010000~00011111这样一个地址

范围,转化成十进制是 16~31。同理,目的地址的最后一个字节是 0,通配符掩码的最后一个字节是 255(转换成二进制比特是全 1),按照忽略 1”原则,该目的地址和通配符掩码确定的地址的第四个字节也是一个地址范围 00000000~11111111,转化成十进制是 0~255

基于以上分析,我们得到最终结果是: destination-address =172.30.16.0 destination-wildcard = 0.0.15.255共同确定的地址范围为

  1. 172.30.16.0/24~172.30.31.0/24,最小的 IP地址是 172.30.16.0,最大的 IP地址是
  2. 172.30.31.255。小伙伴们,你们答对了吗?

生效时间段 time-range

第一种模式 ——相对时间段:以星期为参数来定义时间范围。

格式为:time-range time-name start-time to end-time { days } &<1-7>

time-name:时间段名称,以英文字母开头的字符串。
start-time to end-time:开始时间和结束时间。格式为 [小时:分钟] to [小时:分钟]
days:有多种表达方式:
o MonTueWedThuFriSatSun中的一个或者几个的组合,也可以用数字表达,0表示星期日,1表示星期一,……6表示星期六。
o working-day:从星期一到星期五,五天。
o daily:包括一周七天。

o off-day:包括星期六和星期日,两天。

第二种模式 ——绝对时间段:从某年某月某日的某一时间开始,到某年某月某日的某一时间结束。格式为:time-range time-name from time1 date1 [ to time2 date2 ]

time:格式为 [小时:分钟]
date:格式为 [YYYY/MM/DD],表示年//日。

什么情况下可以使用生效时间段作为匹配项?

例如,每天 20:0022:00为网络流量的高峰期,大量 P2P、下载类业务的使用影响了其他数据业务的正常使用,此时通过设置在这个时间段内降低 P2P、下载类业务的带宽,可以防止网络拥塞。配置如下:

time-range time1 20:00 to 22:00 daily再举一例,某公司对外开放服务器的访问权限,但开放时间限制为:从 201411日零点开始生效,到 20141231日晚上 23:59截止。此时通过设置在这个时间段内访问服务器的报文才允许通过,就可以达到基于时间的访问权限控制的效果。配置如下:

time-range time2 from 00:00 2014/1/1 to 23:59 2014/12/31最后,小遍提醒大家,配置完时间段,千万别忘记要将时间段与 ACL规则关联起来,这样才是一条基于时间的ACL的完整配置过程。配置如下: acl acl-number

rule [ rule-id ] { deny | permit } other-options time-range time-name好啦,说完 ACL规则的匹配项,本文也要接近尾声了。回顾全文,小编围绕 ACL匹配机制、ACL匹配顺序和 ACL匹配项展开了介绍,让大家了解了 ACL匹配

报文的整个流程,知道了 ACL存在哪些匹配结果、 ACL按照什么样的顺序进行规则匹配,并且掌握了最常用的 ACL规则匹配项的使用方法。现在大家对 ACL的认识,是不是又进一步加深了呢?在下一期连载系列中,小编将为大家带来 ACL的应用篇,让大家了解 ACL可以应用的范围,并将带领大家一起动手配置真实的 ACL应用案例。

第二十章一个门卫的故事(一)

话说在很久很久以前,在江湖中是没有门卫的。然而随着网络的迅速发展,江湖中出现了越来越多偷鸡摸狗的现象,社会秩序一度混乱不堪。于是各路英雄好汉齐聚一堂,呕心沥血培养出了一代超级高手,他的名字叫门卫,官方称他为NAC

Network Admission Control随着时间的流逝,NAC的作用越来越大,应用也越来越广泛。于是就流传了越越多关于 NAC的八卦事儿。譬如 NACAAA那些扯不清楚的关系到底是啥况?NAC的用户为啥一定都要划分到一个个的域中呢? …本文即讲述了江湖中关于门卫NAC流传最为广泛的那些八卦事儿…

故事一:NAC到底是啥,有啥 NB之处?

话说每次提到这个话题,NAC都会吐血三升,想我 NAC纵横江湖这么多年,竟然还有人不知道我的大名?!顾名思义, NAC就是网络接入控制!啥?不懂什么叫网络接入控制?好吧,看到那老头没?

某天,老李 要到档案局查看自己的档案……情形一::哎,哎,老头,站住!:我要到你们档案室查我的档案。:你是谁?谁让你来的?:我是老李,我自己想来的。:不给进!

情形二:

:站住!:你好,我要到你们档案室查我的档案。

:你是谁?谁让你来的:我是老李,我是张局长同学,他让我来的:稍等,我问下张局长

:张局长,门口有个叫老李的要进档案室,说是您让来的。

:老李?不认识!

:好的。

:你忽悠我啊,不给进!

情形三::站住!:你好,我要到你们档案室查我的档案。:你是谁?谁让你来的?:我是老李,我是张局长同学,他让我来的。:稍等,我问下张局长。

:张局长,门口有个叫老李的要进档案室,说是您让来的。

:老李?哦,是我同学,让他去吧。

:好的。

:请进!一直向前走,到路口左拐再右拐就到档案室了。其他地方不允许乱跑。

:谢谢!从上面能够,门卫控制着大门的关和开,任何一个用户如果想要进入,必须要经过门卫的身份检查才可以,只有合法的用户才允许通过大门,这也就是网络接入控制的精髓所在。在网络的世界中, NAC将保护着企业内网资源的安全性,只有通过认证的用户才允许其访问网络资源。看到这里大家应该比较清楚什么是NAC了吧。

故事二:据说 NAC有三个私生子?

对于这个事,真有点冤枉NAC了。现在正式为NAC澄清下,NAC并没有三个私生子,而是在遇到不同的人时,它会有三种不同的接入控制方式。我们称之为 802.1x认证、MAC认证和 Portal认证。那么为啥NAC要有这三种认证方式呢?我们再看上面老李的遭遇,在门卫问老李是谁时,老李是能够用嘴来回答的。如果有一天,老李嗓子发炎,无法说话了怎么办呢?

:站住!你是谁?

:……

:咦,你咋不说话?:啊,啊……

特性攻

:汗,原来是一哑巴。等会,我问问领导认识你不。:张局长,外面有个人,不会说话,我拍个照微信传给您,您看看认不认识啊?

:好……这不是老李吗?让他进来吧

:好的。 ……我们可以看到,当老李无法说话,门卫为了判断是否允许老李进入时,就不能靠老李来回答他自己是谁?这时门卫就需要考虑用老李其他的身份标记来让张局长判断。同样的,在网络的世界中,为了对不同类别的用户(譬如哑终端、访客)进行接入控制,NAC就有了802.1x认证、MAC认证和Portal认证三种方式。这三种方式的优缺点简单归纳如下。

对比项 802.1x认证 MAC认证 Portal认证
客户端需求 需要 不需要 不需要
优点 安全性高 无需安装客户端 部署灵活
缺点 需要安装客户端 ,部署不灵活 需登记MAC地址,管理复杂 安全性不高
适合场景 新建网络、用户集中、信息安全要求严格的场景 打印机、传真机等哑终端接入认证的场景 用户分散、用户流动性大(如访客 )的场景

故事三:NACAAA那些说不清的关系

提到NAC就不得不提到AAANAC只有在AAA配置完成后,才能达到控制用户接入的目的。那么NACAAA到底又有何区别呢?我们还看上面老李的遭遇,能够发现门卫控制大门的开关,但真正决定老李能否

进入的是张局长 。同样的, NAC控制用户接入网络接口的开或关,而 AAA则真正控制着是否允许用户有权利接入网络。这里我们可以将老李看做用户,门卫看做部署NAC接入设备,张局长看做AAA服务器,那么老李和门卫的交互就是NAC过程,而门卫和张局长的交互就可以理解为 AAA

同样的,我们也应该很容易理解为何使用NAC之前,AAA是必不可少的。试想如果张局长不在,门卫又根据什么来判定老李是一个合法的用户呢?或者说张局长稀里糊涂,大脑里都不记得认识谁?不认识谁?那门卫肯定也不会让老李通过大门。所以 AAA是必须的,同时 AAA服务器要在用户认证之前就已部署有用户的信息,这样NAC才能有用武之地,合法的用户才能通过认证。

故事四:NAC用户为啥一定都要划分到一个个的域中呢 ?

:站住!

:你好,我要到你们档案室查我的档案。

:你是谁?谁让你来的?

:我是老李,我是王书记的亲戚,他让我来的。

:稍等,我问下王书记。 ……

:你忽悠我啊,王书记根本就没你这号亲戚,不给进!

:啊?哦,对对,我搞错了,是张局长让我来的,我是张局长的同学。 ……我们看到,老李为了进入大门,会向门卫说他是“张局长的同学”或是“王书记的亲戚”。这里“张局长的同学”、“王书记的亲戚”就是老李的关系,而门卫在听到老李所属的关系后,自然会找到对应的人去询问。试想,如果老李没有这些关系,门卫又向谁来验证老李的身份呢。类似的,NAC用户也要划分到一个个的域中,并在域中会部署用户的认证方式、认证服务器等等信息,通过域中的信息,接入控制设备才能够为用户选择相应的 AAA服务器以及认证方式等。那接入控制设备又是怎么识别用户所在的域呢?答案当然是通过“用户名”。

由下图能够看到,如果用户输入的用户名携带有域名,接入控制设备会将其在指定的域中进行认证;如果用户输入的用户名不带有域名,那么接入控制设备会将其在缺省域中进行认证。

总之,用户一定是在域中进行认证的,并且为了保证用户的顺利认证,用户输入的用户名中携带的域名一定要和用户实际所属的域保持一致。

故事五: 为啥远端授权优先级要高于本地授权呢 ?

:站住!:你好,我要到你们档案室查我的档案。

:你是谁?谁让你来的:我是老李,我是张局长同学,他让我来的:稍等,我问下张局长

:张局长,门口有个叫老李的要进档案室,说是您让来的。:老李?哦,是我同学,让他去吧。对了,档案室那栋楼在装修,让他到食堂旁边的那栋二层小楼,档案室暂时搬到那里了。

:好的

:请进!一直向前走,到路口向右拐,然后直走,看到前面的二层小楼就到了。其他地方可不允许乱跑。:谢谢!用户认证成功后,就能够具有一定的访问网络权限。而用户获得的网络访问权限到底有哪些,可由本地授权和远端授权决定。在老李认证成功后,从第一个故事能够看到,门卫让老李“一直向前走,到路口左拐再右拐就到档案室了。其他地方不允许乱跑。”,这就是门卫在本地为老李授予的权限。这时问题来了,如果本地授权和远端授权同时存在,以哪个为准呢?当然是远端授权优先级更高!这个太容易理解了,看上面的故事就知道,张局长已经说了

“档案室那栋楼在装修,让他到食堂旁边的那栋二层小楼,档案室暂时搬到那里了”,这就是张局长在远端为老李授予的权限。在这种情况下如果门卫犯傻,还让老李走原来的路,那估计他离失业也不远了。

故事六:Portal认证用户必须是先获取到 IP地址才能够进行认证

:乡亲们,大家站好了,别挤别挤!喂!那个Portal认证的,唉,这不是老李吗?你需要先去领个IP地址再来认证。:凭啥就我要先去领个 IP地址再来认证。我打听过了, 802.1xMAC认证用户都是认证通过后才去领IP地址的。:哎呦喂!竟然还给我犟嘴了。听好了,你是在我发给你的WEB页面上填你的个人信息,然后进行认证的,在这之前你不先领个IP地址,我给你怎么玩!:哦!sorrysorry,我忘了这一茬。我这就去领个IP地址去。 ……:大兄弟,不行啊,发IP地址的DHCP大哥,还有那个 DNS大哥现在都在院子里面,你不放我进去,我没办法领啊。:行了行了,知道了,我给你开个小门,你到里面拿到IP地址就赶快出来。:唉,好嘞!对于NACPortal认证方式,用户必须首先获取到 IP地址之后,才能够进行认证。但这里就存了一个问题,就像上面老李说的, DHCPDNS大哥在院子里面,他都进不去还怎么获取IP地址呢?针对这种情况,在 NAC网络中,为了保证用户的正常认证,就需要将 DHCP服务

器和DNS服务器加入到免认证网络(即不通过认证就能够访问的网络资源)中,保证用户不需要通过认证就能够访问这些服务器。

通过上面几个故事,应该能够暂时缓解大家对NAC八卦之心吧。好了, NAC的故事实在太多太多了,如果要一直讲下去,真要讲个三天三夜啦。这次就为大家讲述到这里,如果后续大家听到了 NAC的啥八卦事或者想听 NAC的啥八卦事儿,一定给俺说啊

第二十一章一个门卫的故事(二)

上一集我们介绍了NAC在江湖中流传最为广泛的那些事儿,大家对NAC应该有了一定的了解吧?当然了,故事毕竟是故事,光听一些八卦事儿而不能近距离接触故事的主角,大家心中肯定会意犹未尽!OK,今天就让我们以NAC中的802.1x为例,来一起瞅一瞅NAC到底是咋一步一步奠定自己的江湖地位的!话说在N年之前,档案局刚刚建立。此时由于没有安排门卫,因此人来人往,好不热闹,我们能够看到老李想进档案局就可以进去,全无阻拦。

图一:未部署 NAC的档案局环境

图二:未部署 NAC情况下老李访问档案室资源

长此以往,档案局内混乱不堪,为了扭转局面,保证档案局内各类资源的安全。档案局决定在大门处(SwitchA)部署NAC802.1x认证功能。下面就让我们一起看看部署过程中的各个重要步骤。

图三:部署 NAC的档案局环境

步骤一:在 AAA服务器上配置对接的接入设备( SwitchA)各参数。( AAA服务器以华为公司Policy Center为例进行说明)

1、登陆 Policy Certer后首先在其上添加接入设备。(保证张局长 能够联系上门卫 a)选择“接入控制策略 > 接入设备 > 接入设备 > 设备”。

b)单击“增加”。
c)设置设备的连接参数。

2、增加授权结果。

a) 选择“接入控制策略 >认证授权 >授权结果”。
b) 单击 ,修改缺省授权规则。(此处直接使用缺省授权规则,也可以创建新的授权规则)

特性攻

步骤二:在服务器上添加账号(保证老李 在访问档案局时,张局长 能够认识他)

首先上张全景图,然后在做详细介绍。

1、创建部门

a)选择“用户与终端 > 部门用户 > 部门用户管理”。
b)在右侧操作区域选择“部门”页签。
c)在部门导航树选择待创建部门的上级部门。
d)待创建部门隶属于所选择的上级部门。
e)在“部门”页签下方单击“增加”。
f)输入部门的参数。

2、创建用户

a) 选择“用户与终端 > 部门用户 > 部门用户管理”。
b) 在右侧操作区域选择“用户”页签。
c) 在部门导航树选择需要创建终端用户的目标部门,即“档案局”。
d) 在“用户”页签下方单击“增加”。
e) 输入用户的相关参数。

3、创建账号

a) 选择“用户与终端 > 部门用户 > 部门用户管理”。
b) 在右侧操作区域选择“用户”页签。
c) 在“部门用户管理”界面左侧的部门导航树选择需要创建账号的目标部门,即“档案局”。
d)在需要创建账号的用户(即:老李)右侧单击
e) 单击“增加”,输入账号的相关参数。

步骤三:在 SwitchA部署NAC802.1x功能。 1、在 SwitchA上配置RADIUS方案。 # 创建RADIUS服务器模板。配置 RADIUS认证服务器、共享密钥。

# 配置认证方案。

# 配置域,在域下应用认证方案authRADIUS服务器模板rad

# 配置全局默认域为“zhangjuzhang”。

2、在 SwitchB上使能802.1x报文透传功能(如果门卫和老李之间不存在二层交换机设备,则无需配置本步骤。)

3、在 SwitchA上使能802.1x认证。 # NAC配置模式切换成统一模式。(在交换机 SV200R005C00及其之后版本,NAC支持统一配置模式与传统配置模式。推荐使用 NAC统一配置模式进行配置。)

# 使能802.1x认证。

OK,到这里, NAC部署就完成了。这时 NAC即刻走马上任门卫的工作,此后如果用户没有认证成功,将无法访问网络喽。

在部署完成NAC功能后,如果用户需要访问档案局中的资源,则必须通过认证才可以。下面以华为公司NAC Agent客户端软件为例介绍启动 802.1x认证过程。老李在进行认证时,启动认证即可。

如果输入的用户名和密码正确,则老李即能够通过认证。这时,我们在SwitchA上能够看到老李认证成功的信息。

这样,老李就能够访问档案局中的网络资源了啊!

看到这里,大家对NAC的部署流程有一定了解了吗?说实话,NAC的门卫工作真的是博大精深,他会遇到各种各样的人,会遇到各种各样的紧急情况、特殊情况。为了应对这些人、这些事儿, NAC的门卫工作也在不断的扩展、细化,而他身上发生的故事也在不断的增加……本文到这里仅仅为大家讲述了NAC流传较为广泛的故事,以及他最常见的工作方式。如果大家对NAC产生了强烈的兴趣,想更深入的了解 NAC的故事,那就请访问华为公司网站吧,那里有更多的精彩在等着你!

第二十二章论剑 BGP第一回

交换机初出茅庐受考验老祖巧授 BGP神功解难题交换机在路由老祖门下修行已有数载,其间精研各 IGP内功,对 OSPFISISRIP等等IGP武功已经融会贯通,并颇有一套自己的想法,大有青出于蓝之势。修行日久,交换机感觉自身已臻大成,不禁产生了下山一展身手的想法。一日,交换机来到路由老祖处,老祖道:“交换机,你在我门下已修行数载,对路由之道可谓已有小成,今日起,为师要再教你本门至高绝学。这门绝学威力极大,但相较IGP修炼起来更加艰难。但是你天资聪颖,天赋过人,为师相信,不出3年,你必能修炼成功。”交换机不禁有些不悦道:“师父,本门武功我已了然于胸,不论OSPFISISRIP甚至番邦蛮夷的EIGRP这种旁门左道,我都不在话下。自觉上至控制平面交换路由,下至转发平面转发数据,路由过滤,负载分担,统统难不倒我啊。我很想下山一展胸中所学,万望师父不要阻拦。”

题外话:路由协议的分类:

分类 包含协议 说明
IGP:用于域( AS RIP 距离矢量协议,多用于小型网络。
内路由选择。 ISIS 链路状态协议,多用于运营商网络。
OSPF 链路状态协议,多用于企业中大型网络。

路由老祖微微一笑,道:“这样吧,为师考验一下你,如果你通过考验,我便放你下山如何?”“没问题!”交换机已经跃跃欲试。题目很简单,如下图:

ISPAISPB通过一条高速链路连接在一起,两个 ISP想把各自的路由通告给对方。徒儿,如果是你,你该如何解决这个问题呢?”“这有何难?先于域内运行OSPF,则R1R2可以知晓各自域内的所有路由,再于R1R2相连的接口上运行 RIP协议,将OSPF路由引入RIP中,这样 R1R2就可以通过RIP协议交换各自的域内路由。在 RIP协议交换路由完毕后,再将 RIP路由引入回OSPF中,这样 ISPAISPB就可以互相了解对方的路由了。”交换机非常自信。路由老祖摇摇头道:“徒儿你IGP内功虽深厚,也未必能奈何的了如此简单的场景,如若不信,我和你作为这两台设备一试,如何?”“好!”于是二人席地而坐,四掌相对,开始交换路由。双掌甫接,交换机便觉一股巨力涌至,赶忙集中精神,奋力化解,饶是自身内功深厚,仍有一些路由未接下。交

换机暗自窃喜,这一波算是扛下了。哪知第一波方兴未艾,不过 30秒,胸口又如遭重槌,交换机强运内功勉力支撑,不料每隔 30秒,都有一股巨力袭来,如此再三,交换机终于支撑不住,一口鲜血喷将出来。老祖急忙收掌,交换机自行运气良久,方恢复如常。老祖道:“徒儿,你IGP功力深厚,然则IGP在这个场景下有天然的缺陷,为师本欲传你的另一本门绝学却可以很好的应对这个问题。但为师现在先不点破,你回去好好想想,如何解决今天你遇到的问题。我相信以你的聪明才智,一定能想到解决的办法。”

题外话:交换机的解决方法有如下几个缺陷:

1ISPAISPB的边界路由设备必须有一个同步的过程,也就是说当 R1R2在建立邻居的时候,需要把自己的整个路由表传输给对方。而传统的 RIP协议是使用UDP作为自己的传输协议的,这个协议的最大缺点就是不可靠,不适合传输大量的数据。
2:缺省情况下, RIP协议的路由更新报文的发送间隔为 30秒,这样如果ISPAISPB的路由表非常大(达到100000条),30秒得时间间隔尚且不够完成路由的通告,这样整个高速链路就完全为 RIP通告服务,而不能转发其他数据了。读者看到这里也可以考虑下,如何解决这个问题。

回到住处,交换机苦思冥想一夜,终于有所头绪:首先,路由传递初始,自己毫无防备,导致一些路由数据的丢失,造成这个问题的主要原因是自己的RIP使用的内功基础是UDPUDP的特点在于敌不动我不动,不去预先建立连接。那如果采用另一内功 TCPTCP的特点就在于面向连接,这样我就有充分的防备,路由的初始同步问题就解决了。其次,由于RIP每隔30秒就会同步一次路由表,在之前路由条数相对比较少的情况下,自己上尚可应付,现在面对规模如此巨大的路由表,难免不可支撑。这个问题也好解决,那就取消每隔 30秒全量同步路由的机制,改为增量通告规则:如果路由没有变化,则不发任何通告;如果是路由增加,则通告给对方增加的路由;如果是路由删除,则通告给对方删除的路由;如果是路由修改,则首先通告一个路由删除,再通告一个路由增加。想通了这些,交换机兴冲冲的跑去找路由老祖,把自己的想法说了一遍,路由老祖非常赞赏:“徒儿,你的想法和我要传你的本门另一绝学 BGP不谋而合,我本欲亲自传授BGP于你,但是我发现你天赋异秉,现在我希望你按照自己的思路对所学进行改进,我相信最终不需要我传授,你自己也能练成BGP神功。”

本期问题:当我们把 RIP的传输层协议改为 TCP之后,RIP使用的发现和维护邻居的机制也应该改变,以往 RIP协议使用 HELLO报文建立邻居的方法也不可取了。这里给大家留一个问题,当传输层协议改成 TCP之后,我们发现和维护邻居的机制应该设计成怎样呢?

第二十三章论剑 BGP第二回交换机练阵法受阻老祖传道授业解惑

上期问题:当我们把RIP的传输层协议改为TCP之后,发现和维护邻居的机制应该设计成怎样呢?这个问题可以从以下几个方面来考虑:一:TCP面向连接,基于 TCP的协议必然有一个先建立连接的过程。要先建立连接,两端的设备就必须先互相知道对方的 IP地址,并且路由可达。那么是采用静态配置的方式,还是动态建立连接的方式呢? BGP采用的是静态配置的方式,只要双方指定的地址路由可达,就可以建立连接。这样做有以下好处:

1:可以与对端设备用任何 IP地址建立邻居,而不限于某个固定接口的 IP。这样,我们就可以采用环回地址而非直连接口地址建立BGP邻居,两台设备之间如果主链路中断了,只要有备份链路存在,就可以把流量切换到备份链路上,保持邻居不断,增加了BGP连接的稳定性。
2:可以跨越多台设备建立邻居。由于是静态配置的方式,不一定只有直连设备才能建立BGP邻居,只要双方指定的地址路由可达(通过 IGP或者静态路由),就可以建立邻居,这在AS内部建立IBGP连接时,就不用所有设备之间都建立IBGP连接。IBGP会在本期后面内容中提及。二:知道对方 IP地址后, BGP会通过发送open报文来进行邻居的建立。如果连接不能建立,说明对端设备状态不正常,于是会等待一段时间再进行连接的建立,这个过程一直重复,直到建立连接。

三:连接建立后,就可以进行路由表的同步了, BGP通过发送update报文进行路由表的同步。四:路由表同步完成后,并不是马上拆除这个连接,因为随时有可能会有路由的更新或者删除,建立 TCP连接是一个非常耗费资源的过程,所以 BGP通过定期发送keepalive报文进行TCP连接的维持,这样就可以不用重新建立连接,立刻就可以进行路由更新。五:如果经过一段时间(一般是 3keepalive报文发送周期)还没有收到对方的 keepalive报文时,我们就认为对方出现了问题,于是可以拆除该 TCP连接,并且把从对方收到的路由全部删除。

自上回交换机初悟BGP神功后,一直潜心修炼。交换机虽然所学IGP博杂,但都是基于UDP内功,乍换TCP,不免要花一番心思。时光荏苒,一晃数月。这日,路由老祖将门徒都唤至跟前,说道:“网络武林大会日期将近,我路由向为武林执牛耳者,此次武林大会定要有所作为。为师苦思多日,得一阵法。交换机,你是大师兄,就由你带着师弟师妹们把这个阵法演习熟练。”说罢,将一纸阵图递给交换机。交换机接过定睛一看,阵图如是:

题外话:这是一个典型的 BGP应用组网。图中,有 3ASAS之间运行 BGP协议。 AS65008域内运行OSPF协议。R1R5上只运行BGP协议,R2R4上运行OSPFBGP协议, R3上只运行OSPF协议。这里先解释下EBGPIBGPEBGP:运行于AS之间两台设备的 BGP关系。如图中 R1R2R4R5 IBGP:运行于AS内部两台设备的 BGP关系。如图中 R2R4这里读者可能会问:AS内部不是有IGP么,为什么还要建立 IBGP关系?这是因为如果R2R4之间不建立BGP关系,那么如果R1要把路由传递给R5,经过AS65008时,就只能把 BGP路由引入到IGP中,通过 IGP进行传递。而把数以 10万计的BGP路由引入到IGP中的后果是灾难性的。所以上图中, R2R4之间建立了IBGP的关系。值得一提的是,如上文所提及,由于 BGP是通过静态配置的方式建立TCP连接,所以并非只能在两台直连的设备上建立 BGP关系,如上图, R2R4间通过OSPF路由可达,可以建立IBGP关系。

交换机看过阵图,暗忖:“这个阵法也并不见得有多高明嘛,就由我和师弟 S97S67S57分别担任R1R2R4R5四台BGP设备,小师妹S27功力尚浅,还不足以驾驭BGP,就让她做 R3,只需要通过OSPF给我们师兄弟传递路由,如此这般,大功可成。”想到这,不禁有些洋洋自得。翌日,交换机带着师弟师妹们开始演练起BGP阵法。交换机简单交待了几句后,五人各自归位,建立BGP连接,运行OSPF,有条不紊。一切准备就绪后,交换机迫不及待的将自己的路由发了过去,未几,不远处传来S57兴奋的叫声:“收到了!”。交换机内心一阵狂喜,表面却装作若无其事道:“S57,你发一个数

据包过来试试。“好!等待良久,还未有数据包到达,交换机有些奇怪: “S57,你多发几个数据包。“一直在发。S67在旁道:“我收到师弟发的数据包,也转发出去了。众人目光一齐投向S97S97赶忙分辨:“我完全没有收到啊,我是冤枉的。交换机目光微转,却见小师妹S27一言不发,小脸涨的通红。交换机赶忙收功身,问道:“师妹,数据包是在你这里丢的么?S27有些委屈:“师兄,我是收到好多报文,但是不知道怎么转出去。

题外话:为什么控制面路由已经传递成功,但是数据包却无法发过来

呢?这里,我们对路由的传递过程和数据包的传递过程分别进行分析。路由的传递过程:

R1R2:由于两台设备直连,并且建立 EBGP关系,R1可以直接发送update报文至R2R2R4:两台路由非直连,但是两台路由建立了 IBGP关系,R2update报文发送给R4。即该 update报文的目的IPR4,于是 R2查询自己的路由表,由于域内运行了OSPF协议,通过 OSPFR2查询到去 R4的下一跳是 R3,于是将该 update报文发给R3R3收到该报文后,虽然没有运行 BGP协议,但是根据报文的目的IP,将该update报文发送给R4R4R5:同样,两台设备直连,并且建立 EBGP关系,R4可以直接发送update报文至R5。这样,路由的传递就完成了。数据包的传递过程:

R5R4R5发送的数据包,源 IPR5,目的 IPR1,于是 R5查询路由表,因为从R4收到一条R1的路由,该路由的下一跳标识为 R4。于是将数据包发送给R4R4R2:当R4收到从R5发过来的数据包时,该数据包的源 IPR5,目的IPR1。于是,R4查询路由表,发现去往 R1的路由下一跳是R2(我们假定R2上配置了 peer next-hop-local命令),由于下一跳非直连,于是R4查询去R2的下一跳。由于域内运行了OSPFR4发现,去R2的下一跳是R3,于是将数据包发给了R3。当R3收到该数据包时,由于数据包的目的 IPR1IP,但是 R3并没有运行BGP,所以 R3上没有R1的路由。于是 R3将该数据包丢弃。这就是经常说到的数据层面的“路由黑洞”。

交换机带着阵图找到路由老祖,将方才所发生之事告知老祖,老祖微微一笑道:“徒儿,这阵法看似平淡无奇,实则千变万化。你墨守成规,太不知变通。不过这也不能怪你,想当年这创立BGP神功的人,早已料想到这种情况。”老祖自旁拿出一本封面泛黄的古籍,赫然上书几个大字 “BGP神功”。翻开几页,一句心法映入眼帘。 “BGP同步心法:学习自 IBGP邻居的路由在进入 IGP路由表或宣告给BGP邻居之前,必须首先通过IGP来知晓该路由。”路由老祖道:“在创立这 BGP神功之初,这个创立 BGP的前辈就已料想到你遇到的情况,于是规定了这条心法,有了这条规则,在 S67收到S97发来的路由时,发现OSPF路由表里并没有这条路由,就不会将该路由发送给 S57。反之,如果你将该路由引入到OSPF路由表中,那么在数据包从S57发给S27时,S27也能通过 OSPF将数据包转发出去。”交换机若有所悟:“但是方才路由明明已经传递成功了啊。”老祖不急不忙道:“那是因为为师闯荡江湖多年,发现这条心法虽然可以解决路由黑洞的问题,但却必须将BGP路由引入到IGP中,不免非常不切实际。于是为师对BGP心法做了改变,去掉了这条心法,而是用“物理全连接”和“逻辑全连接”来解决这个问题。”

题外话:解决路由黑洞的几个方法:

1:根据BGP同步机制将 BGP路由引入到IGP中。(S系列交换机缺省不启用BGP同步机制,但可以通过命令 synchronization命令启用),这个方案的弊端上文已经说明。
2:物理全连接:以上图为例,如果AS65008内三台设备均通过物理线路连接起来,则R4可以直接将数据包发送给R2,而不需要通过R3转发。这个方案的弊端在于物理线路的铺设非常麻烦。
3:逻辑全连接:已上图为例,如果AS65008内三台设备均启用BGP进程,并且两两建立IBGP连接,则 R3上也有R1的路由。可以成功转发数据。这个方案的弊端在于如果设备数量非常多,大量IBGP的连接难于管理。

交换机思前想后,还是有些不情愿的采用逻辑全连接的方式,虽然管理麻烦,但是相比BGP同步和物理全连接,还是方便不少。殊不知,半载之后,武林大会之上,交换机邂逅了风华绝代的MPLS。两人发现彼此武功神奇般契合,完美的解决了包括路由黑洞在内的各种问题。于是二人自立门户,创下了一门震古烁今的武学。一对神仙眷侣也被传为武林佳话。此乃后话,暂且不表。

本期问题:逻辑全连接的方案弊端在于数量众多的 IBGP连接难于管理,有什么办法可以缓解这个问题呢?

第二十四章论剑 BGP第三回 IBGP众多难管理联盟反射器显神通

上期问题:逻辑全连接的方案弊端在于数量众多的 IBGP连接难于管理,有什么办法可以缓解这个问题呢?有两个方案可以解决IBGP连接数量过多的问题:联盟(confederation)和路由反射器(Route Reflector)。本期我们就来详细解释下这两种方案。

一、联盟让我们先来回忆一下,上期交换机碰到的难题:

如果采用逻辑全连接的方式,需要建立 3IBGP连接。这只是转接AS(这里为 AS200)内只有3台设备的情况,事实上,转接AS内如果每增加一台设备,需要建立的IBGP连接数量将呈几何级数上升。 BGP联盟可以将AS分割为多个子自治系统,从而让大型转接AS变得更具管理性。被分割的AS本身将成为联盟,而分割后的子自治系统则成为成员自治系统。联盟之外的AS将整个联盟视为一个AS,看不见成员自治系统。由于成员自治系统对外界来说是隐而不见的,因而成员自治系统可以使用公有或私有AS号(建议采用私有AS号)。联盟可以极大的降低IBGP连接的数量。在联盟中,只需要在成员自治系统内进行IBGP的全连接,而成员自治系统间使用一种特殊的 EBGP连接,我们称之为联盟EBGP。下面看下具体配置。

如上图,我们将AS200分成2个成员ASAS65535AS65534。而对于R1R5

说,他们看到的中间的转接AS仍然是AS200。下面截取了R3的一些关键配置:

R3

#

bgp 65535 /本机AS为成员 ASconfederation id 200 /联盟ID,外部路由器看来,连接 AS仍然为 200 confederation peer-as 65534 /说明本机连接了其他哪些成员 AS peer 10.0.12.1 as-number 65534 /和成员AS65534建立联盟EBGP连接 peer 10.0.23.1 as-number 65535 /和本成员AS内部设备建立 IBGP连接 # ipv4-family unicast

undo synchronization peer 10.0.12.1 enable peer 10.0.23.1 enable peer 10.0.23.1 next-hop-local /这个配置并不生效,详细会在下文提及

#

这样,整个AS200内,只需要建立一个IBGP连接和一个EBGP连接,就可以实现

路由的传递和数据包的转发。

需要注意的是:联盟 AS内仍然需要保证IGP的连通性,才能保证数据包的正确转

发。在联盟内部应遵守以下规则:

    1) 联盟外部路由的
    NEXT-HOP在整个联盟中都是被保留的。
    2
    ) 被宣告到联盟之内的路由的MED属性在整个联盟中都被保留。
  1. LOCAL_PREF属性在整个联盟中都被保留,而不仅仅是在为它们赋值的成员AS之内。
    1. ) 在联盟内部需要将成员ASAS号加入到AS_PATH列表中,但这些AS号不能被宣告到联盟之外。在默认情况下,成员AS号被列在AS_PATH中作为 AS_PATH属性类型4,即AS_CONFED_SEQUENCE。如果在联盟中使用了手动聚合命令(aggregate)并配置了关键字as_set,那么位于聚合点之后的成员AS号将被列在AS_PATH中作为AS_PATH属性类型3,即
    2. AS_CONFED_SET.
  2. 5) AS_PATH中的联盟AS号用于实现环路避免功能,但是在联盟内部进行 BGP

路由选路过程中,选择最短AS_PATH时,不考虑这些联盟AS号。上述规则的本质原因是整个联盟都被外界视为一个自治系统。对于规则 2345,将在后面说到AS_PATH属性和MED属性时,进行详细说明。本期我们通过一个具体例子说明规则1。仍旧以上面交换机的难题为例:首先,我们在R1上通过Loopback1口发布一条路由: 10.1.4.0/24,这条路由通过 EBGP连接发送给R2时,NEXT-HOPR1建立连接的接口地址10.0.14.4/24。正常来说,R2R3建立的是 EBGP连接,R2在将这条路由发送给 R3时,会将这条路由的NEXT-HOP修改为自己和 R3建立EBGP连接的接口地址10.0.12.1/24,但是我们发现并不是这样:

可以看到,R310.1.4.0/24路由的NEXT-HOP依然是10.0.14.4。这时,我们在R3上配置命令peer 10.0.23.1 next-hop-local。由于R3R4之间是IBGP关系,正常来说配置了这条命令之后,R3在把该路由发送给R4时,会将 NEXT-HOP设置为本设备接口地址。在R4上查看BGP路由发现, NEXT-HOP依然为10.0.14.4

这就是由于外部路由的NEXT-HOP在联盟内部都是被保留的。这也解释了为什么我们之前说:联盟内部必须要保证IGP的连通性,如果联盟内部没有运行IGP,那么R4R3上将没有到达 10.0.14.0/24网段的路由,导致该BGP路由不生效。接着我们在R5上也通过Loopback1接口引入一条路由 10.1.5.0/24,并且在R4上配置命令peer 10.0.23.1 next-hop-local。查看R3上的BGP路由表:

可以看到,10.1.5.0/24这条路由的NEXT-HOP被修改为 R4建立IBGP的接口地址

10.0.23.1。这是因为, peer next-hop-local在仅仅在外部路由在联盟内部传递的情况下是不生效的。

二、路由反射器

下面是一个路由反射器的示例:

如图,左边组网内有 5台设备,如果采用 IBGP全连接方式,将会有众多连接需要管理,非常麻烦。上期我们说过,IBGP有一个防环机制,任何从 IBGP收到的路由,都不会发给其IBGP对等体,这是为何我们要建立逻辑全连接的原罪。聪明的人们想到,能不能有条件的打破这个规则呢?

我们发现,对于左图,如果我们只允许任何一台设备转发从IBGP对等体收到的路由,都是不会产生路由环路的。于是,我们指定其中一台设备可以转发从 IBGP对等体收到的路由,则其他设备只需要和该设备建立IBGP连接,就可以保证路由能够传递到所有的设备上。这就是路由反射器的思想。根据右图,我们先介绍下路由反射器中的一些概念:

路由反射器RRRoute Reflector):允许把从 IBGP对等体学到的路由反射到

其他IBGP对等体的BGP设备,类似OSPF网络中的DR

客户机( Client):与RR形成反射邻居关系的 IBGP设备。在 AS内部客户机只需要与RR直连。
非客户机(Non-Client):既不是RR也不是客户机的 IBGP设备。在 AS内部所有非客户机与所有RR之间仍然必须建立全连接关系。
始发者( Originator):在AS内部始发路由的设备。Originator_ID属性用于防止集群内产生路由环路。这点会在后面详细介绍。
集群(Cluster):路由反射器及其客户机的集合。Cluster_List属性用于防止集群间产生路由环路。这点会在后面详细介绍。

RRIBGP邻居发布路由规则如下:

从非客户机学到的路由,发布给所有客户机。

从客户机学到的路由,发布给所有非客户机和客户机(发起此路由的客户机

除外)。

EBGP对等体学到的路由,发布给所有的非客户机和客户机。我们根据交换机的难题来看下路由反射器的配置。如上图,R2R3R4任何一台作为RR都可以,本例我们用 R3作为RRR3的关

键配置如下:

#

bgp 200 peer 10.0.12.1 as-number 200 peer 10.0.23.1 as-number 200 # ipv4-family unicast

undo synchronization reflector cluster-id 1 /配置cluster-id,缺省为设备 router id,可选配置 peer 10.0.12.1 enable peer 10.0.12.1 reflect-client /配置10.0.12.1为客户机 peer 10.0.23.1 enable peer 10.0.23.1 reflect-client

#

我们在R1上发布10.1.4.0/24这条路由,查R4的路由表,发R4已经收到这条路由,在R4上查看这条路由的详细信息:

这条路由的NEXT-HOP10.0.23.2

特性攻

这条路由的Cluster_list属性中,已经记录0.0.0.1集群使用AS内唯一的 Cluster ID作为标识。为了防止集群间产生路由环路,路由反射器使用 Cluster_List属性,记录路由经过的所有集群的Cluster ID

一条路由第一次被RR反射的时候,RR会把本地 Cluster ID添加到Cluster List

的前面。如果没有Cluster_List属性,RR就创建一个。

RR接收到一条更新路由时, RR会检查Cluster List。如果 Cluster List中已经有本地Cluster ID,丢弃该路由;如果没有本地 Cluster ID,将其加入Cluster List,然后反射该更新路由。

AS内部存在多个集群时,可能会产生集群环路,当RR从其他集群收到 Cluster_list中含有1的路由时,将其丢弃,从而防止了集群间的路由环路。

同样我们看到,这条路由的Originator已经被记录为 10.0.1.1。这个IDR2Router IDOriginator_IDRR产生,使用的Router ID的值标识AS内这条路由的始发者,这里, 10.1.4.0/24这条路由在AS200内的始发者是R2。当RR收到这条路由时,会将 R2Router ID加在这条路由中作为Originator_ID属性。当设备接收到这条路由时,会比较Oringinator_ID和设备本身的 Router ID,如果相同,则丢弃该路由。这样就防止了在集群内部的路由环路。

三、联盟和路由反射器比较。

联盟和路由反射器都是在大规模自治系统中减少IBGP对等体数量的有效方法,和联盟相比,路由发射器有以下两个好处:

1)联盟中的所有路由器都必须理解和支持联盟机制,而路由反射方案只需要路

特性攻

由反射器了解路由反射机制即可,客户路由器和 RR之间只建立不同的IBGP连接。

2)无论从所需的配置命令还是从拓扑结构的设计上说,路由反射器的实现都更

加的简单。如上面所述就是一个典型的例子,通过路由反射器,只需要在 R3上增加一条配置命令,即可解决问题。但是如果希望用各种 EBGP机制来管理大规模AS,那么联邦将是一个更优的解决方案。当然,在某些场景下,联盟和路由反射器同时使用将更加事半功倍。一个简单的例子:

第二十五章论剑 BGP第四回遇环路交换机险酿错巧用AS_PATH神功已小成

自解决了路由黑洞的问题之后,交换机带着师弟师妹们日夜苦练 BGP阵法。要知路由老祖所授阵法虽只一图,其中却是千变万化,有时虽是极细微的变化,也需要调整行功方法,否则阵法运转便要滞涩。这一日,路由老祖来到门下弟子练功处,只见交换机与S97S77六掌相接,正练习阵法其中一变。路由老祖驻足观望良久,却见交换机面色愈发凝重,额头汗流如雨,未几,身体竟已微微颤抖,再看 S97S77亦是如此。老祖惊觉不妙,身形一晃,已至交换机身侧,出掌按住交换机头额正中,主血脉流行之心经大穴。原来交换机行功不慎,内息业已紊乱,难以控制,若非老祖出手相助,此刻恐已走火入魔。交换机只觉一股热力直通心脉,他本身本已疲乏脱力,得老祖内力相助,方渡过难关。交换机拜倒老祖身前道:“多谢师父相助。”老祖摆摆手,问道:“方才为何如此?”交换机回道:“弟子也不甚明白,方才弟子和 S97S77正演练那BGP阵法其中一变。哪知运功还未多久,就觉得真气忽然变得枯涩起来,难以运转,初时还能已内力硬撑,越是往后,这压力却是越来越大,有如千斤重担压在身上,若非师父及时出手相助,弟子们恐怕已走火入魔了。以弟子的内功修为,应不至有内力不足无法修习的问题,其中缘故,还请师父指点。”交换机还未说完,老祖已然明了,以手指在地上画出一图:“你们练得是这一变吧?”

图甚简单,如下:

老祖道:“以你的描述来看,为师认为应该是遇到了路由环路的问题。路由环路是每一个路由协议必须考虑的问题,而 BGP是距离矢量协议,其防环机制你们考虑过么?”

题外话:这里给大家简单介绍一下 BGP的两种防环机制。 EBGP的路由环路:首先我们来看一下EBGP的路由环路是怎么形成的,如上图所示:三个AS通过3台设备两两建立EBGP进行连接。假设在AS100中有一条路由192.168.16.0/24S97把该路由通告给了交换机,交换机又通告给了 S77S77又重新通告给了 S97。这时候如果由于某种原因,AS100192.168.16.0/24这条路由消失了,而与此同时, S97又从S77那里学习到了 192.168.16.0/24这条路由,路由环路就产生了。这时, S97上,192.168.16.0/24这条路由的下一跳是S77S77192.168.16.0/24这条路由的下一跳是交换机;而交换机上,192.168.16.0/24这条路由的下一跳是S97那如何防止这种现象的发生呢?我们可以像一下,这种情况发生的根本原因,其实就是192.168.16.0/24这条路由的起源和经过的AS是不明确的。如果我们给

192.168.16.0/24这条路由在传递时附加一些数值,这些数值反应了这条路由经过的每一个AS,这样就不会有路由环路的发生了。例如:

S97192.168.16.0/24这条路由发给交换机的时候,给这条路由附加一个数值 100,代表这条路由是从AS100中发出,交换机在将这条路由发给S77时,在100后面在加上一个数值200,代表这条路由又经过了 AS200。最后, S77将这条路由发送给S97时,再增加一个数值300。这样当S97接收到这条路由时,检查一下附加在这条路由的数值,发现含有数值100,则代表这条路由曾经经过自己这里,则不接收该路由。这样,EBGP的路由环路问题就解决了。

IBGP的路由环路: IBGP路由环路产生的原因和 EBGP类似,但是由于 IBGP是在AS内部建立的 BGP关系,所以无法通过记录路由经过的AS号来进行防环。对于IBGP,协议采用了类似RIP的水平分割的机制,我们称之为 IBGP的水平分割,其内容为:从IBGP对等体接收到的路由不会通告给其他的IBGP邻居。

如图,R1R2R3R4之间建立IBGP连接( R1R4未建立IBGP关系), R1

192.168.16.0/24这条路由发给R2R4R2R4不会将这条路由再发给R3,于是就防止了路由环路。这种情况下,R3就完全接收不到 R1传过来的路由。所以必须在 4台路由器之间建立IBGP的全连接的关系, R3才能从R1处直接获取到路由。

路由老祖将这前因后果说与交换机,交换机方才明白,怪不得之前自己这边发出的流量越多,压力越大,直至后来完全无法支撑,原来并非神功不灵,而是运功方式不得其法。路由老祖道:“BGP神功千变万化,万不可拘泥于你之前修炼 IGP所用方法。在

修炼BGP神功时,你要牢记“属性”二字。这二字说来简单,其中所包含义绝一时所能理解,你以后修炼中慢慢领悟,待你完全理解之时,就是你神功大成日!交换机不解道:“何为“属性”?

题外话:我们把添加在BGP路由中,为了解决某些问题的数据称为属性。如上文解决EBGP环路问题所引入的数值,就是我们目前第一次引入的属性的概念,我们称之为AS_PATH属性。在BGP中,属性是一个非常重要的概念,因为 BGP相较IGP非常大的一个优势就是可以在路由中携带丰富的属性,这些属性可以帮助我们对路由进行控制。

交换机若有所悟,他本就聪明绝顶,对路由一道又天赋极高,老祖这一点破,就如同给他打开了一扇武学宝库的大门。思索半晌,突然一脸狂喜,冲到S97面前大声道:“师弟,我们前几日苦思不得其解的那个难题,有了这 AS_PATH属性,岂不是迎刃而解?”说罢以指为笔,三两下便在地上画出一幅图。众人定睛望去,原是几日前一齐练习的阵法,但却一直不得要领,无法打通阵法的脉络。

交换机道:“这个阵法的关键也是我们一直不得其解的地方是,这里阵法的脉络要求的是我和S67之间的交流要经过S97,而我和 S57之间的交流要经过S127。但是现在有了AS_PATH属性,这个问题就简单了,只需要调整一下 S97S127发给我路由所携带的 AS_PATH属性,就解决了。”

题外话:交换机的这个问题是AS_PATH在路由选路和路由过滤中的一个典型应用,我们把交换机所画阵图精简如下:

现要求R4访问1.1.1.0/24网段必须通过R2,访问2.2.2.0/24网段必须通过R3。通过 AS_PATH属性我们可以很轻松的解决这个问题。R4会通过R2R3分别获得

1.1.1.0/242.2.2.0/24这两条路由,下一跳选择 R2还是R3我们可以通过 AS_PATH

来进行控制。BGP里规定, AS_PATH属性较短的路由,将会被优选。那么我们

R31.1.1.0/24这条路由发给R4时,携带的 AS_PATH属性变长,R4优选R2发来

1.1.1.0/24的路由进行转发(因为R2发来的1.1.1.0/24路由的AS_PATH属性较

短),则 R4访问1.1.1.0/24网段的流量就会通过R2进行转发。访问 2.2.2.0/24同理。

下面我们看一下具体配置。这里的关键配置在R2R3上:

R2的关键配置:

bgp 1 peer 10.1.1.1 as-number 2 peer 10.3.1.2 as-number 1 # ipv4-family unicast

undo synchronization /这条是缺省的。 peer 10.1.1.1 enable peer 10.3.1.2 enable peer 10.3.1.2 route-policy loop1 export /这里对出方向使用路由策略。 peer 10.3.1.2 next-hop-local /注意这条必配,设备向 IBGP对等体发送路由时缺省

不改变路由的下一跳,配了这条之后,会将下一跳改为自己。如果不配,发到 R4上的路由下一跳为R1的接口地址,由于 R4上没有到R1的路由,所以该路由的下一跳不可达,即路由不生效。 # route-policy loop1 permit node 5 /配置路由策略,在匹配到 ip-prefix loop1的情况下给该路由添加 AS_PATH属性678

if-match ip-prefix loop1

apply as-path 6 7 8 additive # route-policy loop1 permit node 10 /注意这条是必须的配置,如果不配置,则除了匹配2.2.2.0/24的路由,其他路由均被过滤,无法发送给 BGP对等体。 # ip ip-prefix loop1 index 10 permit 2.2.2.0 24

R3的关键配置:

bgp 1 peer 10.2.1.1 as-number 2 peer 10.4.1.2 as-number 1 # ipv4-family unicast

undo synchronization /这条是缺省的peer 10.2.1.1 enable

特性攻

peer 10.4.1.2 enable peer 10.4.1.2 route-policy loop0 export /这里对出方向使用路由策略。 peer 10.4.1.2 next-hop-local /注意这条必配,设备向 IBGP对等体发送路由时缺省

不改变路由的下一跳,配了这条之后,会将下一跳改为自己。如果不配,发到 R4上的路由下一跳为R1的接口地址,由于 R4上没有到R1的路由,所以该路由的下一跳不可达,即路由不生效。 # route-policy loop0 permit node 5 /配置路由策略,在匹配到 ip-prefix loop0的情况下给该路由添加 AS_PATH属性678

if-match ip-prefix loop0

apply as-path 6 7 8 additive # route-policy loop0 permit node 10 /注意这条是必须的配置,如果不配置,则除了匹配1.1.1.0/24的路由,其他路由均被过滤,无法发送给 BGP对等体。 # ip ip-prefix loop0 index 10 permit 1.1.1.0 24 /配置ip-prefix

这里我们通过路由策略,在 R2上配置将2.2.2.0/24的路由发给R4时,添加

AS_PATH属性6,7,8;在R3上配置将1.1.1.0/24路由发给R4时,添加AS_PATH

6,7,8

我们查看R4BGP路由表:

可以看到,R41.1.1.0/24优选的路由下一跳为R22.2.2.0/24优选的路由下一跳为R3。均为AS_PATH较短的。

本期问题:小伙伴们还记不记得,在上期中,我们曾经提到在 BGP联盟中,AS_PATH属性有以下2个规则:

    1. ) 在联盟内部需要将成员ASAS号加入到AS_PATH列表中,但这些AS号不能被宣告到联盟之外。在默认情况下,成员AS号被列在AS_PATH中作为 AS_PATH属性类型4,即AS_CONFED_SEQUENCE。如果在联盟中使用了手动聚合命令( aggregate)并配置了关键字 as_set,那么位于聚合点之后的成员AS号将被列在AS_PATH中作为AS_PATH属性类型3,即
    2. AS_CONFED_SET.
  1. 2) AS_PATH中的联盟AS号用于实现环路避免功能,但是在联盟内部进行BGP

路由选路过程中,选择最短AS_PATH时,不考虑这些联盟AS号。大家可以先思考一下,联盟内部 AS号不能宣告到联盟之外,并且在选路中也不考虑这些AS号的长短,那么这些AS号应该如何记录呢?

第二十六章论剑 BGP第五回只要属性配的好不怕流量到处跑

上期问题:BGP联盟中, AS_PATH属性有以下2个规则:

  1. ) 在联盟内部需要将成员ASAS号加入到AS_PATH列表中,但这些AS号不能被宣告到联盟之外。在默认情况下,成员AS号被列在AS_PATH中作为 AS_PATH属性类型4,即AS_CONFED_SEQUENCE。如果在联盟中使用了手动聚合命令( aggregate)并配置了关键字 as_set,那么位于聚合点之后的成员AS号将被列在AS_PATH中作为AS_PATH属性类型3,即 AS_CONFED_SET
    1. 2) AS_PATH中的联盟AS号用于实现环路避免功能,但是在联盟内部进行BGP
    2. 路由选路过程中,选择最短AS_PATH时,不考虑这些联盟AS号。联盟内部AS号不能宣告到联盟之外,并且在选路中也不考虑这些AS号的长短,那么这些AS号应该如何记录呢?要弄清楚这个问题,我们来介绍一下4种类型的AS_PATH属性:
    1AS_SET,一个无序的AS号列表。
    2AS_SEQENCE,一个有序的 AS号列表。
  2. 3AS_CONFED_SETBGP联盟中特有的AS_PATH类型,类似AS_SET,其列表中含有的AS号均属于BGP联盟中的AS号。
  3. 4AS_CONFED_SEQUENCEBGP联盟中特有 AS_PATH类型,类似 AS_SEQENCE,其列表中含有的AS号均属于BGP联盟中的AS号。

大部分小伙伴是不是已经被绕晕了?没事,我们通过一个例子来说明一下,如下图:

我们按照上图配置好BGP对等体之后,在R1上将两条Loopback接口的直连路由引入BGP,在R4上通过命令display bgp routing-table可以发现:

  1. 172.16.1.0/2472.16.2.0/24这两条路由已经被进入BGP路由表,并发送到 R4。两条路由的AS_PATH均为“3 2 1”。这里,R4知道,要到达这两个目的地,需要经过AS3AS2再经过AS1才能到达。所以这里就是有序的 AS_PATH,也就是这里的AS_PATH类型是AS_SEQENCE。这时,我们对这个网络做一个小小的优化,我们在R3上做一个手动聚合,将
  2. 172.16.1.0/24172.16.2.0/24这两条明细路由聚合成172.16.0.0/16这条聚合路由并且只将这条聚合路由传给R4R3上配置命令:aggregate 172.16.0.0 16 detail-suppressed。这里 detail-suppressed 关键字代表R3只会向R4发送聚合路由。在R4上查看BGP路由表可以发现

可以发现,R4上只剩下172.16.0.0/16这条聚合路由,并且其AS_PATH只剩下AS3。这是因为配置了路由聚合后,会丢失其下的明细路由的AS_PATH属性,所以当 R3将聚合路由发送给R4时,只会携带自身的AS号。这是我们来看一种情况,假设如图所示,我们在R2R4之间的链路上也配置了 EBGP对等体,R4会将这条聚合路由再发给R2,而这时,这条聚合路由所携带的 AS_PATH只有AS3R2所在的AS2并不在AS_PATH列表中,于是 R2会接收这条路由。如我们上一章中所述,路由环路就产生了。 EBGP本身依赖AS_PATH来进防止路由环路,但是在路由聚合的场景下,会丢失明细路由的AS_PATH,导致这种环路的产生,那么应该如何解决这个问题呢?我们可以思考一下,其实只需要R3在发送聚合路由的时候,也带上被聚合的明细路由的AS_PATH就可以了,这些明细路由的 AS_PATH只作为防止路由环路的作用。我们在将R3上的聚合路由命令修改一下,增加一个关键字:as-set

R3上配置命令:aggregate 172.16.0.0 16 detail-suppressed as-set。这里as-set关键字代表,当 R3发送聚合路由给R4时,会生成AS_SET类型的 AS_PATH列表,这个 AS_PATH会包含所有明细路由的AS号。配置完以后,我们在R4上查看BGP路由表:

可以看到, 172.16.0.0/16这条路由的AS_PATH已经包含了所有明细路由的 AS_PATH。然而在这里,所有明细路由的AS_PATH属性是一个有序列表(3 2 1),所以这里虽然生成了AS_SET类型的AS_PATH属性,但是和 AS_SEQENCE没有任何区别。为了更明确的说明一下 AS_SET类型的AS_PATH,我们再增加一台路由器R5

这里,我们增加了位于 AS5中的路由器R5,并将R5172.16.3.0/24172.16.4.0/24

两条路由注入BGP路由表,在 R4上查看BGP路由表可以发现:

聚合路由的AS_PATH已经变成了“3 2 {5 1}”。这里,明细路由包含的 AS_PATH中,{5 1}就是无序的AS_SET类型,而 “3 2”是AS_SEQENCE类型的AS_PATH。注意:AS_SET类型的AS_PATH在设备上都是用“ {}”符号表示,并且在在 BGP路由选路中,所有AS_SET类型的AS_PATH都算作长度1.例如:“3 2 {5 1}”在选路中AS_PATH长度算做3.下面我们再把这个例子变动一下,把AS1AS2AS3AS5都作为子AS加入到 BGP联盟中,联盟AS号为100。如下图:

这次我们.R2上进行聚合,并只将聚合路由172.16.0.0/16发送给R3。我们在R3上查看BGP路由表:

可以看到,如我们上面所说,有序的 AS_PATH2,而无序的 AS_PATH51所以我们可以看到“(2)”就是AS_CONFED_SEQUENCE类型的AS_PATH而“[5 1]”就是AS_CONFED_SET类型的AS_PATH。一般在设备上AS_CONFED_SEQUENCE类型的AS_PATH用符号“()”表示,AS_CONFED_SET类型的 AS_PATH用符号“[]”表示我们在看一下R4BGP路由表

可以看到,联盟子 AS号是不会传到联盟之外,所以 R4上,这条聚合的 AS_PATH只有100。注意:AS_CONFED_SEQUENCE类型的AS_PATHAS_CONFED_SET类型的 AS_PATH均只是为了防止路由环路而存在,在 BGP选路中,不作为 AS_PATH长度考虑在内。这也解释了我们上期的问题。

上回说到交换机通过 AS_PATH属性轻松解决了一个难题,不禁有些沾沾自喜。和师弟师妹大谈练功之道,一时间唾沫横飞,脸上颇有自得之色。路由老祖在旁微笑不语,随手几笔,将交换机之前所做阵图稍作修改,起身飘然而去。交换机转头望去,脸上笑容顿敛,起身注视老祖所改阵图,沉吟半晌,脸色愈发凝重。阵图如是:

众师兄妹们也围了过来,小师妹S27不解道:“这有何难?为何师兄却好似碰到了极大的难题?”交换机道:“师父这张图看似和我刚才所画并无很大差异,其实难处在于对接者非本派弟子,本派对于外部情况也一无所知,如此一来,想要通过 AS_PATH来控制流量路径,虽非不能,也不免非常麻烦。看来路由一道,果然博大精深,师父是看我有自满之意,才出此难题。”话未说完,身后传来哈哈一笑,众人回身,只见老祖不知何时,已至身后。原来老祖本有心指点,所以并未走远。老祖道:“武林大会,卧虎藏龙,各派高手尽出,徒儿你万不可有轻敌之意。”老祖又道:“路由一道,变化繁复,举一隅,不以三隅反,则不复也。如你刚才所说,只得其一,尚未窥其全貌,武林大会之上,必有不同门派同场竞技,不仅

需要控制出方向流量路径,入方向流量路径也需要考虑。为师之前说过, BGP 神功之精髓,在于“属性”二字,此出入方向流量的路径控制,也落在这“属性二字上了。交换机恍然:“师父说的是LOCAL_PRAFMULTI_EXIT_DISC吧?

题外话:LOCAL_PRAF属性(以下简称LP)和MULTI_EXIT_DISC属性(以下简称 MED)是BGP协议在控制AS出口流量路径时经常用到的两个属性。 LP属性被用于在去往同一目的地的多条路由中设置路由优先级,从名字就可以看出,LP属性只是应用于本地对等体之间,即,只能在 IBGP对等体之间传递,不会应用于EBGP对等体之间。 LP属性常用于AS出口出方向流量的路径控制, LP属性值越大,路由越优。通常情况下,MED属性的作用是在去往邻居 AS存在多条链路时,允许 AS为入站流量传达其优先级。(一般来说,比较不同ASMED属性没有太大意义,特殊场景除外。)从MED属性的作用可以看出,MED属性只是作用于EBGP对等体,而IBGP对等体互相通告路由时,会忽略 MED属性。MED属性常用于AS出口入方向流量的路径控制,MED属性值越小,路由越优。下面,我们以路由老祖所画阵图为参考,来说明一下两种属性的作用。

如图,要求 AS1访问1.1.1.0/24网段的流量必须从R2AS1,访问 2.2.2.0/24网段的

流量必须从R3AS1

具体实现方法是,在R2R3上做路由策略,使R2在发送路由1.1.1.0/24AS1

(这里就是发给R4)携带的 LP大于R3在发送路由1.1.1.0/24时携带的LP值。这样

R4收到两条目的地相同的路由时,会优选LP属性大的值。对于路由 2.2.2.0/24

理。

R2的关键配置:

#

bgp 1 peer 10.1.1.1 as-number 2 peer 10.3.1.2 as-number 1 # ipv4-family unicast

undo synchronization peer 10.1.1.1 enable peer 10.3.1.2 enable peer 10.3.1.2 route-policy LP export /R4出方向使用路由策略 LP peer 10.3.1.2 next-hop-local

#

route-policy LP permit node 5 /设置路由策略 LP,如果匹配前缀 LP,则LP置为200 if-match ip-prefix LP apply local-preference 200

# route-policy LP permit node 10 #

特性攻
ip ip-prefix LP index 10 permit 1.1.1.0 24 /配置前缀列表 LP,匹配 1.1.1.0/24
#

R3的关键配置:

#

bgp 1 peer 10.2.1.1 as-number 2 peer 10.4.1.2 as-number 1 # ipv4-family unicast

undo synchronization peer 10.2.1.1 enable peer 10.4.1.2 enable peer 10.4.1.2 route-policy LP export /R4出方向使用路由策略 LP peer 10.4.1.2 next-hop-local

#

route-policy LP permit node 5 /设置路由策略 LP,如果匹配前缀 LP,则LP置为200 if-match ip-prefix LP apply local-preference 200

# route-policy LP permit node 10 # ip ip-prefix LP index 10 permit 2.2.2.0 24 /配置前缀列表 LP,匹配 2.2.2.0/24 #

配置完之后,我们在R4上查看BGP路由表:

可以看到,在R4上,去到1.1.1.0/24网段有两条路由,但是下一跳为R2的路由的 LP属性为200,而下一跳为 R3的路由的LP属性为100,所以优选 R2进行转发。去到2.2.2.0/24网段的路由同理。

我们对上面的例子稍作修改,在R4上也发布两条路由3.3.3.0/244.4.4.0/24。如图:

要求,所有访问3.3.3.0/24网段的流量必须从R2进入AS1,而所有访问4.4.4.0/24

的流量必须从R3进入AS1

实现方式和LP基本一致,使用路由策略,使 R2在将3.3.3.0/24路由发往AS外部时

(这里就是发给R1)携带的 MED属性小于R3发送3.3.3.0/24路由时携带的MED

性。对于路由 4.4.4.0/24同理。

R2新增配置:

# bgp 1 #

ipv4-family unicast

peer 10.1.1.1 route-policy MED export /R1出方向使用路由策略 MED # route-policy MED permit node 5 /设置路由策略 MED,如匹配前缀 MED,则MED置为10

if-match ip-prefix MED

apply cost 10 # route-policy MED permit node 10 # ip ip-prefix MED index 10 permit 4.4.4.0 24 /配置前缀列表 MED,匹配4.4.4.0/24 #

R3新增配置:

特性攻

bgp 1 # ipv4-family unicast

peer 10.2.1.1 route-policy MED export /R1出方向使用路由策略 MED # route-policy MED permit node 5 /设置路由策略 MED,如匹配前缀 MED,则MED置为10

if-match ip-prefix MED

apply cost 10 # route-policy MED permit node 10 # ip ip-prefix MED index 10 permit 3.3.3.0 24 /配置前缀列表 MED,匹配3.3.3.0/24 #

配置完成后,查看R1BGP路由表:

可以看到去往3.3.3.0/24目的地有两条路由,下一跳为R2的路由被优选,因为其 MED值较小。4.4.4.0/24的路由同理。

本期问题:在 BGP联盟内部的 EBGPIBGP对等体互相传递路由时, LP属性和MED属性是如何变化的呢?

第二十七章论剑 BGP第六回路遇阻团队属性显神奇险化夷初出茅庐第一功

上期问题:在 BGP联盟内部的 EBGPIBGP对等体互相传递路由时, LP属性和MED属性是如何变化的呢?还记得我们说BGP联盟的规则时,有两条关于 LP属性和MED属性的规则怎么说来着:

1:路由的 LOCAL_PREF属性在整个联盟中都被保留,而不仅仅是在为它们赋值的成员AS之内。
2:被宣告到联盟之内的路由的MED属性在整个联盟中都被保留。由于在外界看来,BGP联盟实际上是一个AS,所以其LP属性和MED属性在整个 BGP联盟中是被保留的。

上回说到交换机触类旁通,以MED属性和LP属性解决了出口流量控制的难题, BGP神功可谓已有小成。网络武林大会日期日近,交换机众人也已准备前往。这一日,交换机率众师兄妹来与路由老祖辞行,老祖道:“徒儿,你天资聪颖,本门武功又尽得我真传,此次网络武林大会,必能以 BGP神功名扬天下。但为师仍然有几句话,你须谨记。 BGP神功心法你虽已熟记,然其中变化,未必能融会贯通。临敌之际,切忌生搬硬套, BGP神功之精髓所在,即随意挥洒,不拘细节,这些还需你自己领悟啊!”交换机道:“徒儿谨记师父教诲,此去网络武林大会,必将师门武功发扬光大。 ”说罢便带着师弟师妹下山而去。这日,交换机众人正行之际,迎面只见一群人立于路中,当中两人,一老一少,老者面貌清奇,一脸严肃。那少年却甚是清秀,不住左顾右盼。身后一众汉子,或坐或立,竟已将这必经之路堵住。交换机上前抱拳道:“在下交换机,路经此地,还请老丈让开道路,让我等赶路。”老者微笑道:“阁下可是前往网络武林大会?”交换机微怔,不知这老者何以得知,只得道:“正是。”老者微笑不语,那清秀少年在旁说道:“呀,你就是那路由门下的交换机吧,听说你BGPIGP神功很厉害,只要你破得我几个师兄的阵法,我们就让你过去。 ”说罢纤手一挥,身后几个汉子一跃上前。交换机微微不悦,仍恭敬道:“在下确是路由门下交换机,既然老丈有意指点,在下也只能领教各位高招了。”老丈道:“我这阵法很简单,你看我这几个劣徒各自学到若干网段路由,这些网段的路由都分属于两个门派少林和武当。只是访问 AS100访问少林的流量需要从交换机这里过,访问武当的流量需要从S127这里过。”交换机看后心中暗喜:这阵法在我修习 BGP之前,还真是难以处理,只是目前已然今非昔比。用BGP中的LP属性,可以轻松应对。只要我和 S127把收到的少林路由和武当路由标明不同的LP属性,就可以完美的解决这个问题。交换机转身对师弟师妹们道:“既然这样,我路由门下也不能坠了师门的名声。 S97S77S67S57你们4个负责接收路由,然后全部发给我和 S127,我们给路由打上不同的LP属性,这个阵法可破也。”说罢,已与那几个汉子交上了手。

题外话:这里,交换机的想法没错,可是他却忽略了一个问题。按照我们上一期所说的 LP属性的配置方法,交换机需要对每一个发过来的路由,配置前缀列表,并且配置路由策略,为符合该前缀列表的路由打上LP属性。这样如果发过来的路由数量非常大的时候,这样的配置会非常繁琐,并且容易出错。那么小伙伴们先想一想,如何解决这个问题呢。

甫一交手,交换机 BGP神功运转如意,颇觉得心应手,眼光微转,只见那清秀少年直望向自己这边,脸上似有紧张之色。交换机忖道:“他如此关心师兄,我出手还是留点分寸,到时也不伤双方和气。”哪知一念未了,突觉路由大量涌至,顿觉手忙脚乱,忙集中精神应付。但是路由却越积越多,每条路由都需要配置前缀列表和路由策略,眼看已无法支撑。再看S127S127修为不如自己,情况比自己更糟。交换机焦急万分,这阵法虽简单,却直接粗暴,自己大意轻敌,看来今日一败在所难免了。忽然,脑海中闪出老祖临行前得嘱咐: “BGP神功之精髓所在,即随意挥洒,不拘细节。临敌之际,万不可生搬硬套。”自己只知 LP属性,难道 BGP中没有其他方法可破此阵了么?灵光一现,交换机已想到了一个方法,对师弟们大声喊道:“团队属性。”

题外话:何为团队属性(Community)?团队属性也是BGP路由属性的一种,利用团队属性可以将路由策略应用于一组路由。大家可以回忆一下,我们用 LPMEDAS_PATH属性来解决BGP路由的各种问题的时候,无一例外都要用到路由策略,而路由策略很多都是基于前缀来进行处理的。当需要处理路由特别多的时候,我们的配置和维护工作量就会大幅度增加,在大型网络中,这种配置和维护的成本是难以接受的。所以我们可以对需要做同一策略的路由标识一个相同的团队属性,这样就可以基于团队属性来对路由实施策略了。我们还是以交换机遇到的问题为例,先将场景简化一下:

这里我们要求 R3发给R4的少林路由均打上LP属性值100,而发给R4的武当路由均打上LP属性值200。如何通过通过团队属性来实现这个目的呢?一般的做法是,我们先要求R1通过路由策略,将发给R3的少林路由打上团队属性100:1。而发给R3的武当路由打上团队属性200:1注意:团队属性的团体号取值有两种形式:

1:整数形式,取值范围是0~4294967295
2AA:NN形式,AANN的取值范围均为0~65535

我们要求R2也同样在将路由发给R3时打上团队属性。这样,我们在R3上就可以

通过路由策略,将携带团队属性 100:1的路由打上LP属性值100,将携带团队属性

200:1的路由打上LP属性值 200,这样配置和管理的工作量就小了很多。下面看一

下具体配置。

R1的关键配置:

#

bgp 1 peer 11.1.1.2 as-number 100 # ipv4-family unicast

undo synchronization network 1.1.1.0 255.255.255.0 network 2.2.2.0 255.255.255.0 peer 11.1.1.2 enable peer 11.1.1.2 route-policy R1 export /R3出方向使用路由策略 R3 peer 11.1.1.2 advertise-community /注意这个必配,对 R3发送路由时携带团队属

性,缺省情况下, BGP不讲团队属性发送给任何对等体。 # route-policy R1 permit node 5 /配置路由策略,所有匹配前缀列表 shaolin的路由打上团队属性 100:1

if-match ip-prefix shaolin

apply community 100:1 # route-policy R1 permit node 10 /配置路由策略,所有匹配前缀列表 wudang的路由打上团队属性 200:1

if-match ip-prefix wudang

apply community 200:1 # ip ip-prefix shaolin index 10 permit 1.1.1.0 24 /前缀列表shaolin匹配前缀 1.1.1.0/24 ip ip-prefix wudang index 10 permit 2.2.2.0 24 /前缀列表wudang匹配前缀 1.1.1.0/24

#

R2的关键配置:

#

bgp 2 peer 12.1.1.2 as-number 100 # ipv4-family unicast

undo synchronization network 3.3.3.0 255.255.255.0 network 4.4.4.0 255.255.255.0 peer 12.1.1.2 enable peer 12.1.1.2 route-policy R2 export peer 12.1.1.2 advertise-community

#

route-policy R2 permit node 5 if-match ip-prefix shaolin apply community 100:1

#

route-policy R2 permit node 10 if-match ip-prefix wudang apply community 200:1

# ip ip-prefix shaolin index 10 permit 3.3.3.0 24 ip ip-prefix wudang index 10 permit 4.4.4.0 24 #

R3的关键配置:

#

bgp 100 peer 11.1.1.1 as-number 1 peer 12.1.1.1 as-number 2 peer 13.1.1.2 as-number 100 # ipv4-family unicast

undo synchronization peer 11.1.1.1 enable peer 12.1.1.1 enable peer 13.1.1.2 enable

特性攻

peer 13.1.1.2 route-policy R3 export /R3出方向实施路由策略 R3

peer 13.1.1.2 next-hop-local /这条必配,否则 R3BGP路由不生效 # route-policy R3 permit node 5 /配置路由策略 R3,所有匹配团队属性过滤器 1的路由打上LP属性值 100

if-match community-filter 1

apply local-preference 100 # route-policy R3 permit node 10 /配置路由策略 R3,所有匹配团队属性过滤器 2的路由打上LP属性值 200

if-match community-filter 2

apply local-preference 200 # ip community-filter 1 permit 100:1 /配置团队属性过滤器 1,允许团体属性 100:1 ip community-filter 2 permit 200:1 /配置团队属性过滤器 2,允许团体属性 200:1 #

配置完成后,我们在 R3上通过命令display bgp routing-table community 100:1和命

display bgp routing-table community 200:1查看团队属性 100:1200:1对应的

BGP路由。

可以看到,所有发来的少林路由都被打上了团队属性100:1,而武当路由被打上

200:1我们在R4上查看BGP路由表

可以看到,所有少林路由已经被打上了 LP属性值 100,而所有武当路由已经被打上了LP属性值200.

除了可以为路由配置团队属性值外,还能指定路由属于一些众所周知(Well-known)的团队。下面我们简单介绍一下几种众所周知的团队属性:

1Internet:设备收到携带该团队属性的路由可以将之发送给任何对等体,缺省情况下任何路由都属于该团体。
2No_Advertise:设备收到携带该团队属性的路由后,不向任何对等体发送该路由。
3No_Export:设备收到携带该团队属性的路由后,不向 AS外(EBGP对等体)发送该路由。
4No_Export_Subconfed:设备收到携带该团队属性的路由后,只能在 AS内传递,并且如果配置 BGP联盟,不向其他子 AS发送该路由。

下面以No_Export说明一下,其他周知团队属性类似。假设上例中,AS1不希望AS2能够访问本AS中的少林网段和武当网段,这时就可以利用No_Export来实现。先看一下 R2BGP路由表:

这时,R2上是有AS1的路由的。我们在R1上修改如下配置:

#

route-policy R1 permit node 5 if-match ip-prefix shaolin apply community 100:1 no-export

#

route-policy R1 permit node 10 if-match ip-prefix wudang apply community 200:1 no-export

#

这样可以使R1在发送路由时也携带No_Export团队属性,查看R2BGP路由表:

R2上已经没有AS1的路由。

交换机大喝一声,师弟们顿时领悟,通过团队属性,阵法运行顿时又恢复正常。良久,老者长叹一声,说道:“你们都下去吧。”交换机收功上前道:“几位大叔神功精妙,在下远所不及,若不是身有要事,必留下和诸位再切磋切磋。”老者道:“年轻人胜而不娇,也当真难得。路由老祖收了个好徒弟啊!你们过去吧。”说罢,摆摆手让身后众人让开道路。交换机众人鱼贯而过,却见那清秀少年脸上紧张之色已去,此时却一脸微笑,好似遇到了什么开心的事情。交换机暗忖:“这少年也忒奇怪,刚才一幅紧张自己师兄的样子,现在却好像若无其事。 ”未及多想,已然跟上众人离去。

本期问题:BGP路由经常数以万计,如果有大量不同但是又非常相似的团队属性需要实施同样的路由策略(比如:需要对携带团队属性 “100:1200:1

300:1400:1500:1”的路由实施相同的策略),该如何简化配置呢?

第二十八章论剑 BGP第七回武林盟主出难题众人皆困交换机聚合路由有惊无险

上期问题:BGP路由经常数以万计,如果有大量不同但是又非常相似的团队属性需要实施同样的路由策略(比如:需要对携带团队属性 “100:1200:1

300:1400:1500:1”的路由实施相同的策略),该如何简化配置呢?参照我们上回所说,如果需要对携带团队属性“100:1200:1300:1400:1
500:1”的路由实施相同的策略,我们必须配置多条团队属性过滤器: ip community-filter 1 permit 100:1 ip community-filter 2 permit 200:1 ip community-filter 3 permit 300:1

ip community-filter 4 permit 400:1 ip community-filter 5 permit 500:1

这样不免非常麻烦,这时我们可以用到高级团队属性过滤器。高级团队属性过滤器作用和普通团队属性过滤器一致,不同点就在于其过滤器的编号为100~199。高级团队属性过滤器可以使用正则表达式来制定团体,这一点在使用 AA:NN格式的团队属性时非常有用。如上面这个例子,如果我们使用高级团队属性过滤器,则只需要配置一条命令即可:

ip community-filter 101 permit .*:1关于正则表达式,这里不多做介绍。在使用路由策略,尤其是使用AS_PATH和团队属性时,正则表达式是一个非常有用的工具,可以极大的降低我们的配置工作量,有兴趣得小伙伴可以查找相关资料了解。

交换机一行人路上稍遇拖延,赶到网络武林大会之时,各大门派都已然到了。交换机忙入场落座,环顾四周,中间一席,坐的正是那武林盟主 IP长老。见参会者已到齐,IP长老起身,对着场下众人摆摆手,道:“承蒙诸位赶来参会,老朽感激不尽,诸位匆匆赶来,想必还未曾互相认识,老朽忝居主位,就为大家介绍一下。这位便是 VPN掌门虚通长老。”说罢,一老者站起来向众人致意,旁边站着一明艳少女。交换机定睛望去,不由吃了一惊,这正是那日在路上设阵相阻的老者,未想到竟是这VPN一派之长。霎时间心头涌起了一阵自得之意,手心中微微出汗。VPN享誉江湖,自己居然曾战胜过 VPN门下阵法,实是意外之喜。但见那虚通长老身旁的少女甚是眼熟,好似在哪里见过,却一时想不起来。正想间,IP长老已介绍完场上众人,继续说道:“这次邀诸位前来,实是有一事困扰江湖日久,想借诸位之智,看有无妙方可解。江湖上门派日多,路由表规模已10万计,如此庞大的路由,管理之难,已日益严重,虽有 BGP神功调配,也渐渐难以支撑,不知各位可有解决之道。”路由问题,自首先由路由门下解决。众人的目光一下投向交换机。交换机思考半晌,说道:“路由管理之难,其中一要因在于地址分配混乱,路由随意发布。若以规范,使路由先聚合,而后发布,必可降低路由表大小,缓解路由管理之难。 ”

题外话:由于 BGP中自动聚合限制非常多,实际效果非常不理想,所以绝大部分情况下,我们会采用手动聚合的方式。手动聚合有两种方式,下面就给小伙伴们介绍一下:

如图,AS100中有192.168.1.0/24192.168.2.0/24192.168.3.0/24192.168.4.0/24

四个内部网络,现在要将4个内部网络的路由聚合成一条 192.168.0.0/16这条路由。

R1的关键配置:

#

bgp 100 peer 11.1.1.2 as-number 200 # ipv4-family unicast

undo synchronization network 192.168.0.0 255.255.0.0 /将聚合路由发布到 BGPpeer 11.1.1.2 enable

# ip route-static 192.168.0.0 255.255.0.0 NULL0 /配置一条指向NULL0的静态聚合路由

#

由于聚合路由本身并不是合法的终端目的地址,因而静态路由指向 Null接口,该

路由在R1的路由表中仅代表一条精确路由。如果数据包的目的地址属于AS100

C类地址,那么AS100的外部路由器将撇配该聚合路由并转发给R1,到了路由

R1之后,数据包将被匹配到更精确的地址,并被转发到正确的内部下一跳路由器。如果因某种导致更精确的 C类地址不在R1路由表中的话,将把该数据包转发到Null接口并予以丢弃。我们查看R2BGP路由表:

R2的路由表中只有一条聚合路由,其他明细路由均未进入R2的路由表。

二:通过 aggregate命令手动聚合路由,并抑制明细路由

在上面这种简单的场景下,通过静态路由进行聚合的方式已经足够了,但是对于

拓扑结构或者路由策略稍微复杂一些的情况,通过静态路由进行聚合的方式不建

议被使用,我们可以使用aggregate命令进行手动聚合。下面我们具体说明下

aggregate命令极其参数的作用。

先在上面那个简单的例子中使用aggregate命令。

R1的关键配置:

#

bgp 100 peer 11.1.1.2 as-number 200 # ipv4-family unicast

undo synchronization aggregate 192.168.0.0 255.255.0.0 detail-suppressed network 192.168.1.0 network 192.168.2.0 network 192.168.3.0 network 192.168.4.0 peer 11.1.1.2 enable

#

想要宣告由aggregate命令指定的聚合路由,必须通过重分布或者 network命令使至少一个更精确的地址进入BGP路由表。这里我们查看 R1R2BGP路由表:

可以看到,R1BGP路由表中包含了所有精确路由,而R2的路由表中只有一条聚合路由,这是因为我们在aggregate命令中配置了 detail-suppressed参数,使 R1只会将聚合路由发送给R2。而R1BGP路由表中,明细路由前面都有“ s”的标志,代表这些路由已经被抑制。

三:同时发送聚合路由和明细路由对于像上面这种简单拓扑来说,确实不需要同时宣告聚合路由和明细路由。我们再看一下下面这个例子:如图,AS100多归属到AS200AS200需要从AS100接受全部路由以设置路由策

略,但AS200仅能向AS300发送聚合路由。这个场景下,AS100就需要将全部路

由发送给AS200

这里一种简单的解决方式是利用我们上一回中所说的团队属性。让 AS100发送给

AS200的明细路由携带NO_EXPORT团队属性。配置以R1为例

R1的关键配置:

#

bgp 100

peer 11.1.1.2 as-number 200

#

ipv4-family unicast

undo synchronization

aggregate 192.168.0.0 255.255.0.0 /路由聚合为192.168.0.0/16,并且不抑制明细路由

network 192.168.1.0

network 192.168.2.0

network 192.168.3.0

network 192.168.4.0

peer 11.1.1.2 enable

peer 11.1.1.2 route-policy COMMUNITY export /R2出方向使用路由策略 COMMUNITY

peer 11.1.1.2 advertise-community /R2发送携带团队属性的路由 # route-policy COMMUNITY permit node 5 /配置路由策略 COMMUNITY,对匹配前缀列表AGGREGATE的路由不设置团队属性

if-match ip-prefix AGGREGATE

特性攻

apply community none # route-policy COMMUNITY permit node 10 /未匹配上一个节点的路由,为其打上团队属性NO_EXPORT,这样就实现了仅对明细路由打上 NO_EXPORT属性

apply community no-export # ip ip-prefix AGGREGATE index 10 permit 192.168.0.0 16 /配置前缀列表 AGGREGATE仅匹配192.168.0.0/16 #

我们通过命令display bgp routing-table 192.168.0.0查看R2上聚合路由的详细信

息:

可以看到,该路由已被并标明是一条聚合路由,并且在 AS100进行聚合,始发路由器的ROUTER ID11.1.1.1。该路由并未携带任何团队属性。我们再查看R5BGP路由表:

R5上只存在聚合路由,明细路由由于携带NO_EXPORT团队属性,并未发送给 R5

四:仅发送聚合路由和选定的明细路由在上述场景下,通过仅发送聚合路由和选定的明细路由,我们还可以实现链路的备份和负载分担,方法如下:

1:让R1-R2的链路只宣告192.168.1.0/24192.168.2.0/24这两条路由。
2:让R3-R4的链路只宣告192.168.3.0/24192.168.4.0/24这两条路由
3:通过上述两条链路宣告聚合路由作为备份,再任一条链路出现故障的情况下,所有该链路上访问AS100的流量都会迅速被切换到另外一条链路上。

这里,我们需要R1R3分别发送聚合路由和一部分明细路由,这时,我们会aggregate命令的另外一个参数“ suppress-policy”。下面给出R1R3的关键R1的关键配置

# bgp 100 peer 11.1.1.2 as-number 200

#

ipv4-family unicast undo synchronization aggregate 192.168.0.0 255.255.0.0 suppress-policy SUPPRESS /聚合路由

时使用抑制列表 SUPPRESS,对于匹配路由策略 SUPPRESS的明细路由进行抑制。 network 192.168.1.0 network 192.168.2.0 network 192.168.3.0 network 192.168.4.0 peer 11.1.1.2 enable

# route-policy SUPPRESS permit node 5 /配置路由策略,注意这里只能配置 if-match子句,用来匹配被抑制的路由。

if-match ip-prefix SUPPRESS # ip ip-prefix SUPPRESS index 10 permit 192.168.3.0 24 /配置前缀列表 ip ip-prefix SUPPRESS index 20 permit 192.168.4.0 24 #

R3的关键配置:

#

bgp 100 peer 12.1.1.2 as-number 200 # ipv4-family unicast

undo synchronization aggregate 192.168.0.0 255.255.0.0 suppress-policy SUPPRESS network 192.168.1.0 network 192.168.2.0 network 192.168.3.0 network 192.168.4.0 peer 12.1.1.2 enable

# route-policy SUPPRESS permit node 5

if-match ip-prefix SUPPRESS # ip ip-prefix SUPPRESS index 10 permit 192.168.1.0 24 ip ip-prefix SUPPRESS index 20 permit 192.168.2.0 24 #

我们通过抑制特定的明细路由,实现了R1R3只宣告聚合路由和特定的明细路

由,在R5上查看BGP路由表:可以看到,R5上聚合路由有两个下一跳,而192.168.1.0/24192.168.2.0/24这两条路由的下一跳为R2,而192.168.3.0/24192.168.4.0/24这两条路由的下一跳为 R4。这就实现了访问 AS100不同网段的流量的负载分担,而一旦有一条链路出现故障,由于聚合路由的存在,可以将流量快速切换到另外一条链路上。

五:仅聚合特定的明细路由依然是这个场景下,假定我们要求R1只将192.168.1.0/24192.168.2.0/24这两条路由进行聚合,而聚合其余的明细路由。如图:

这里,我们可以用到aggregate命令的“origin-policy”参数。下面给出R1的具体

配置:

R1的关键配置:

#

bgp 100 peer 11.1.1.2 as-number 200 # ipv4-family unicast

undo synchronization

aggregate 192.168.0.0 255.255.0.0 detail-suppressed origin-policy ORIGIN /这里只有匹配路由策略 ORIGIN的路由被聚合,其他明细路由未被聚合。并只宣告聚合路由

network 192.168.1.0 network 192.168.2.0 network 192.168.3.0 network 192.168.4.0 peer 11.1.1.2 enable

# route-policy ORIGIN permit node 5 /配置路由策略ORIGIN,注意这里只能配置 if-match子句,匹配前缀列表 ORIGIN的路由

if-match ip-prefix ORIGIN # ip ip-prefix ORIGIN index 10 permit 192.168.1.0 24 /配置前缀列表 ip ip-prefix ORIGIN index 20 permit 192.168.2.0 24 #

这样,就实现了只聚合特定的明细路由,而其余明细路由未被聚合,我们查看一

R2BGP路由表:

可以看到,R2BGP路由表中,只有一条聚合路由,和两条明细路由。由于

192.168.1.0/24192.168.2.0/24这两条路由已被聚合,而R1上又配置了 detail-suppressed参数,所以这两条明细路由并未发送给 R2,而其余明细路由由于未被聚合,所以被发送给了R2,这里还需要说明的是,只有被聚合的明细路由(192.168.1.0/24192.168.2.0/24)均失效的情况下,聚合路由才会实效,而其余明细路由失效与否是不会影响聚合路由的。

六:修改聚合路由的属性还是这个场景,在R5上,聚合路由的下一跳有两个,分别是R2R4,而我们很可能要求手动实现R5选择R4作为优选下一跳,而选择R2作为备份下一跳。看过第五回的小伙伴们可能会说,MED属性可以解决这个问题。如果用MED属性,我们需要在 R2R4上部署路由策略,这里我们采用另外一种方式:在发送聚合路由的时候,可以修改聚合路由的属性。由于明细路由均为我们手动NetworkR1的,所以路由的 Origin属性均为 IGP,而当两条BGP路由的Origin分别为IGPIncomplete时,BGP会优选Origin属性为IGP的路由。所以我们可以将R1发送给R2的聚合路由属性修改为 Incomplete这时,我们会用到了 aggregate命令的另一个参数 “attribute-policy”。下面给出具

体配置:

R1的关键配置:

#

bgp 100 peer 11.1.1.2 as-number 200 # ipv4-family unicast

undo synchronization aggregate 192.168.0.0 255.255.0.0 detail-suppressed attribute-policy

ATTRIBUTE /按照路由策略 ATTRIBUTE修改聚合路由属性 network 192.168.1.0 network 192.168.2.0 network 192.168.3.0 network 192.168.4.0 peer 11.1.1.2 enable

# route-policy ATTRIBUTE permit node 5 /配置路由策略 ATTRIBUTE修改属性为 incomplete

apply origin incomplete #

我们查看R5BGP路由表:可以看到,BGP优选了R4作为优选下一跳,由于R4对应的路由Ogn值为“ i”代表该路由的Origin属性为 IGP,而R2对应的路由的 Ogn值为“?”代表该路由的 Origin属性为Incomplete

交换机侃侃而谈,与会众人均点头称是。IP长老点头笑道:“自古英雄出少年,路由老祖门下,果然卓有见识,名不虚传啊,这管理网络江湖中路由,和优化路由表的任务就交给你了!”

本期问题:到此,我们已经提到了 BGP的多种属性。小伙伴们可能会有困扰,这么多属性,如果 BGP的选路结果矛盾该怎么办呢?这里小伙伴们可以先行思考一下,我们会在下期做详细的解答。

特性攻

第二十九章论剑 BGP第八回剖析选路名扬天下谈及标签再遇佳人

上期问题:到此,我们已经提到了 BGP的多种属性。小伙伴们可能会有困扰,这么多属性,如果BGP的选路结果矛盾该怎么办呢? BGP选路是有一定的规则的。当到达统一目的地存在多条路由时, BGP依次对比下列属性来选择路由:

  1. 优选协议首选值(PrefVal)最高的路由。
  2. 优选本地优先级(LP)最高的路由。
  3. 优选起源于本地的路由。
  4. AIGP属性的路由。
  5. AS路径(AS_PATH)最短的路由。
  6. Origin类型为IGPEGPIncomplete的路由。
  7. MED值最小的路由。
  8. EBGP路由、IBGP路由、LocalCross路由、RemoeCross路由。
  9. BGP下一跳IGP度量值(Metric)最小的路由。
  10. Cluster_List最短的路由。
  11. Router ID最小的设备发布的路由。
  12. 优选从具有最小IP地址的对等体学来的路由。下面,我们逐条说明一下。一、优选协议首选值(PrefVal)最高的路由

在有些情况下,当 BGP路由器存在去往同一目的地的多条路由时,BGP会有很多默认的方法来选择这些路由,但实际情况中可能需要忽略这些默认的方法并实施一定的路由策略。RFC中并没有规定如何影响单台路由器的路由优先级的方法(如LPMED均对相应对等体发布)。华为 S系列交换机提供了一个方法,即协议首选值属性。协议首选值属性是华为的私有属性,类似Cisco IOS中的管理性权值(Administrative Weight)。该属性可以理解为路由在本台路由器中的优先级,该属性的作用范围仅限于本路由器,不会传送给任何对等体。数值越大,路由越优,缺省情况下所有路由的协议首选值均为0。下面看一个具体例子:

R1的关键配置:

#

bgp 100 peer 12.1.1.2 as-number 200 peer 13.1.1.2 as-number 300 #

特性攻
ipv4-family unicast
undo synchronization
peer 12.1.1.2 enable
peer 12.1.1.2 preferred-value 100 /设置对等体R2发来的路由 PrefVal100
peer 13.1.1.2 enable
peer 13.1.1.2 preferred-value 200 /设置对等体R3发来的路由 PrefVal200
#

配置完成后,我们查看R1BGP路由表,可以发现:

R1优选了R3作为去往1.1.1.0/24网段的下一跳,而下一跳为R2的路由未被优选的原因是“not preferred for PreVal”。

二、优选本地优先级(LP)较高的路由LP属性仅用于IBGP对等体之间,用来向对方通告某被宣告路由的优先级。当去往相同目的地的两条BGP路由,其协议首选值相同时,接下来会比较其LP属性值。关于LP 属性,我们在“论剑BGP5”中已经详细论证,小伙伴们可以点击最 下方的链接进行阅读。

三、优选起源于本地的路由。当协议首选值和LP属性均相同时, BGP接下来会优先选择起源于本地的路由。 BGP的路由可以分为起源于本地的路由和从对等体获取的路由,这里起源于本地的路由将优于从对等体获取的路由。起源于本地的路由包括:自动聚合路由、手动聚合路由、network命令引入的路由和import-route命令引入的路由。这4类路由的优选规则为:

1:优选聚合路由,其中通过 aggregate命令手动聚合路由优于通过 summary automatic命令生成的自动聚合路由
2:其次优选network命令引入的路由
3:最后选择import-route命令引入的路由。

四、优选携带AIGP属性的路由 AIGPAccumulated Interior Gateway Protocol Metric)属性是一个比较新的 BGP属性,用于传递并累加 IGP Metric值,该属性是可选非过渡属性, IANAInternet Assigned Numbers Authority)为 AIGP分配的属性类型码是 26。在VRP5的实现中,AIGP属性只能通过路由策略添加,若不设置,则路由缺省不携带AIGP属性。在路由传递中,AIGP属性会根据建立邻居所依赖IGP路由的

Metric增加其AIGP值。在路由选路过程中:携带 AIGP属性的路由优于未携带AIGP属性的路由,而如果都存在AIGP属性,则比较AIGP属性与其下一跳的IGP Metric之和,优选该值较小的。由于S系列交换机并不支持AIGP属性,这里不给出AIGP属性的具体示例,有兴趣的小伙伴可以自行实验一下。

五、优选AS路径(AS_PATH)最短的路由。 AS_PATH属性利用了一串AS号描述了去往目的地的AS间路径或路由。当BGP再将一条路由宣告给EBGP对等体时,会将自己的 AS号加入AS_PATH中。在路由选路过程中,设备将选取AS_PATH最短的路由,这一点也很容易理解, AS_PATH最短往往意味着可以通过更少的AS到达目的地。关于AS_PATH ,我们在“论剑BGP4”中已经详细论证,小伙伴们可以点击最下 方的链接进行阅读。

六、依次优选Origin类型为IGPEGPIncomplete的路由Origin也是BGP的属性之一,属于周知强制属性。该属性制定了路由更新的来源该属性指定的路由来源有以下三种
IGP:该路由信息是从源 AS的协议中学到的。比如:如果一条路由是通过 network命令,从IGP路由表中宣告到 BGP路由表中,那么该 BGP路由的来源就是IGP
EGP:路由信息是从外部网关协议中学到的(将EGP路由引入BGP中)。
不完全的(Incomplete):路由信息是从其他渠道学习到的。不完全路由并不是说该路由有何缺陷,只是确定该路由来源的信息不完全而已。比如:BGP通过重分发机制学习到的路由将携带不完全路由来源属性,这是因为没有办法确定该路由的来源。

BGP选路中,设备将优选来源为 IGP的路由,其次是EGP,最后为Incomplete。由于EGP协议目前已经基本不再使用,S系列交换机也不支持EGP协议。所以事实上,我们只需要关心IGP类型和Incomplete类型。下面看一个例子:

我们通过network命令在 R2上引入1.1.1.0/24,通过import-route命令在R3上引入

1.1.1.0/24R2的配置相信大家已经很熟了,这里我们看一下R3的配置:

#

bgp 300 peer 13.1.1.1 as-number 100 # ipv4-family unicast

undo synchronization filter-policy ip-prefix R3 export /根据前缀列表 R3对发出的 BGP路由进行过滤 import-route direct /引入直连路由 peer 13.1.1.1 enable

#

特性攻

ip ip-prefix R3 index 10 permit 1.1.1.0 24 /配置前缀列表R3 #

可以看到,引入直连路由后,必然会将很多不必要的路由引入 BGP路由表,我们通过配置一个简单的过滤器实现了R3只将1.1.1.0/24路由发给R1的目的。在R1上查看BGP路由表和路由1.1.1.0/24的详细信息:

可以看到,去往两条路由的Ogn分别为“i”和“?”分别代表,IGP类型和 Incomplete类型。而R2宣告的路由被优选,其原因是“ not preferred for Origin”,即 IGP类型的路由被优选了。

七:优选 MED值最小的路由。该属性承载在EBGP Update报文中,可以让某 AS向其他AS说明其优选的入口点。在上述条件相同的情况下,设备会优选MED属性较小的路由。关于MED 属性,我们在“论剑BGP5”中已经详细论证,小伙伴们可以点击最下 方的链接进行阅读。

八、依次优选EBGP路由、 IBGP路由、LocalCross路由、RemoeCross路由。该规则很容易理解,当以上规则都相同时,设备会优选从EBGP学习到的路由,然后是从IBGP学习到的路由,最后是 LocalCross路由和RemoeCross路由。 LocalCross路由和RemoeCross路由是VPN中的概念,这里不做解释,这里通过一个例子验证一下EBGP优于IBGP,如图:

R2通过EBGP1.1.1.0/24宣告给R1R3通过IBGP1.1.1.0/24宣告给R1。配置很简单,不列了。直接看R1BGP路由表及路由1.1.1.0/24的详细信息:

可以看到,R2宣告的路由被优选,原因是“not preferred for peer type”即EBGP宣告的路由被优选。

九、优选到BGP下一跳IGP度量值(Metric)最小的路由。本条规则也很好理解,如果上述规则都无法判断,则会判断两条路由的 Next_HopIGP中的Metric值,优选 Next_HopIGPMetric值较小的那一条路由。以下图为例:如图,我们正常配置BGP,并在转接AS100中配置OSPF用于域内联通。R5R4

上分别发布1.1.1.0/24路由。R2R3上并未配置 peer next-hop-local命令。所以在

R11.1.1.0/24路由的下一跳分别为15.1.1.0/24网段和14.1.1.0/24网段(指R5R4

在这两个网段上对应的接口地址,这里为了描述方便)。这两个网段路由均是从

OSPF中学习到的,并且其在 OSPF中的cost值也是一样的,现在我们在 R1连接R2

的接口上配置:ospf cost 10。这样 R115.1.1.0网段的cost值就变大了。根据我们

这条规则,R1将选择下一跳IGP Metric较小的路由,也就是会选择R4宣告的路由。

R5R4只需要正确建立 EBGP邻居并发布1.1.1.0/24路由,无需其他配置,我们来

看一下R1R2R3的关键配置:

R1的关键配置:

#

interface GigabitEthernet0/0/0 ip address 12.1.1.1 255.255.255.0 ospf cost 10 /配置该链路OSPFcost10,一般 GE接口OSPF cost1

# interface GigabitEthernet0/0/1

ip address 13.1.1.1 255.255.255.0 # bgp 100

peer 12.1.1.2 as-number 100 peer 13.1.1.2 as-number 100

#

ipv4-family unicast undo synchronization peer 12.1.1.2 enable peer 13.1.1.2 enable

# ospf 1

area 0.0.0.0 network 12.1.1.0 0.0.0.255 network 13.1.1.0 0.0.0.255

#

R2的关键配置:

#

bgp 100 peer 11.1.1.1 as-number 200 peer 12.1.1.1 as-number 100 # ipv4-family unicast

undo synchronization peer 11.1.1.1 enable peer 12.1.1.1 enable

# ospf 1

area 0.0.0.0 network 11.1.1.0 0.0.0.255 /注意这里虽然不能建立邻居,但是有发布路由的作用。 network 12.1.1.0 0.0.0.255

#

R3的关键配置:

#

bgp 100 peer 13.1.1.1 as-number 100 peer 14.1.1.2 as-number 300 # ipv4-family unicast

undo synchronization peer 13.1.1.1 enable peer 14.1.1.2 enable

# ospf 1 area 0.0.0.0 network 13.1.1.0 0.0.0.255

network 14.1.1.0 0.0.0.255

#

我们查看R1BGP路由表及路由1.1.1.0/24的详细信息:

可以看到,R4宣告的路由下一跳IGP Metric2,而R5宣告的路由为11,所以R1优选了R4宣告的路由作为最优路由,其优选的理由为 “not preferred for IGP cost”即因为下一跳IGP Metric未被优选。

十、优选Cluster_List最短的路由。小伙伴们还记得Cluster_List么?在路由反射器场景下,为了防止集群间产生路由环路,路由反射器使用 Cluster_List属性,记录路由经过的所有集群的 Cluster ID

一条路由第一次被RR反射的时候,RR会把本地 Cluster ID添加到Cluster List的前面。如果没有Cluster_List属性,RR就创建一个。
RR接收到一条更新路由时, RR会检查Cluster List。如果 Cluster List中已经有本地Cluster ID,丢弃该路由;如果没有本地 Cluster ID,将其加入Cluster List,然后反射该更新路由。

我们在“论剑BGP3”中曾经详细讲解过路由反射器,不清楚的小伙伴可以点击 最下方链接去看一下。在路由选路中,当上述规则都无法进行判断时,设备会选择 Cluster_List较短的路由。直接通过一个例子来讲解一下吧:

这里先讲一下配置的要点:

1:所有设备均在 AS100中,所有 BGP连接均为IBGP,设备间运行 OSPF保证域内的连通性。
2:共配置 3RRR2R3R5R5作为R2R4的客户机,R4作为R3的客户机。 R2R3R5Cluster ID分别为235
3:配置 R5连接R2的接口的 OSPF cost值为2,这时因为当 R1发布一条路由时,R5会收到从R2R4发来的两条路由,这时这两条路由的下一跳 IGP Metric值是不一样得(由于全是IBGP连接,这两条路由的下一跳均为R1,而R1-R3-R4-R5这条路径比R1-R2-R5多一跳)。所以我们需要手动给 R5连接R2的接口配置 OSPF cost值为2,保证两条路由的下一跳IGP Metric一致。这时我们来分析一下,R1发布一条路由1.1.1.0/24R5收到R2发来的路由,其 Cluster_List为“2”,而收到从 R4发来的路由,其 Cluster_List为“3,4”。所以 R5会优选从R2发来的路由。我们查看R5BGP路由表和路由1.1.1.0/24的详细信息:

可以看到R2发来的路由Cluster_List为“0.0.0.2”, R4发来的路由Cluster_List为 “0.0.0.4,0.0.0.3”,所以 R5优选了R2发来的路由,可以看到其优选的原因为 “not preferred for Cluster List”,即因为Cluster_List未被优选。由于配置文件比较长,就不贴在这里了,有兴趣的小伙伴可以下载附件中的配置文件看。

十一、优选 Router ID最小的设备发布的路由;优选从具有最小 IP地址的对等体学来的路由。这两条规则比较简单,从字面意思就很容易理解,所以将他们放在一起。如果以上那么多条规则,还是无法确定选择哪条路由,设备会优选 Router ID最小的设备发布的路由。这时,有的小伙伴会问:设备的Router ID唯一标识了设备,这总不可能一样了吧?非也,如果没有例外,就不用设计最后一条规则:设备会优选从最小 IP地址的对等体学来的路由了。我们就看一个例外情况:

如图也是一个路由反射器的场景,R1Router ID2.2.2.2)发布一条路由

    1. 1.1.0/24,通过 R2R3两个RR的反射,R4收到两条 1.1.1.0/24的路由。根据上面的内容,可以很简单的判断:前十条规则对于这两条路由都是一样的,所以我们不得不使用第十一条规则。
    2. 小伙伴们还记不记得,RR使用的Router ID的值标识 AS内这条路由的始发者,所以这两条路由的Originator_ID都已经被标识为R1Router ID 2.2.2.2。(记不得的 小伙伴轻点链接,去复习一下论剑BGP3 当路由都携带Originator_ID时,设备是不会比较 R2R3Router ID,而是比较这两条路由的Originator_ID,而这两条路由的Originator_ID均为R1Router ID
  1. 2.2.2。于是,设备又无法选择了。于是,我们就有了最后一条规则:优选 IP地址小的对等体发来的路由。由于一个网络内,IP地址是不可能重复的,所以该规则无论如何都可以使设备选择一条路由作为优选路由。

上回说到,交换机以路由聚合深得 IP长老的赏识,并委以管理网络江湖路由表的重任。一时间与会众人纷纷侧目,看路由门又出了一个青年才俊。 VPN掌门虚通长老忽站起,道:“本次武林大会群英荟萃,老朽前来,一是应 IP长老之邀,还有一个目的,却是有一个难题,想借天下英雄之智,帮老朽解决。”众人皆安静下来,要知 VPN一门立派多年,武功自成一派,虚通长老如是说,必是极大的难题了。虚通长老继续说道:“本门武功博大精深,老朽不才,修炼本门武功数十年,虽有小成,然仍有难题未解,感觉再无精进之道。老朽苦思不得其解,深觉仅依赖本门内功难以解决。故欲在这天下英雄聚集之武林大会上,请教众位英雄。这第一个难题,是本门武功虽精妙,内功中确没有言明如何动态打通脉络,我虽苦思得一些缓解之道,却始终无法使本门武功灵活运用,融会贯通。所幸小女 MPLS,天资聪颖,从本门另一武功中,悟得解决之道,以LDP神功打通脉络。”说罢,身旁那明艳少女面露微笑,点首向众人示意。虚通长老又说道:“这第二个问题却是需要向众位英雄请教的了,本门武功看似互相独立,但老朽一直想通过一个办法,运用一种内功承载这些武功,但思考多时,均不得其解。”正说时,身边那明艳少女忽然起身走到交换机面前道:“我看过你的BGP神功,域内必须建立IBGP全连接,未免太过麻烦。如果以我的标签交换,配合你的 BGP神功,必可契合如一。但 BGP神功为路由携带属性,却是神奇无比,似可以解决我爹爹的难题呢。”交换机看着美丽少女款款走来,脸似有些红,但听这少女张口便道出自己BGP神功缺憾之处,却有些奇怪道:“姑娘以前见过我吗?”那明艳少女嫣然一笑:“你来的路上我们还切磋过呢,你就不认识我啦。”

论剑BGP正传终

第三十章问鼎 OSPF1互联Route群雄争, OSPF出横

互联Route群雄争,OSPF出横空初涉路由显神通,民主治军四方拥完善机制沐邻里,帅将兵民如父兄连绵网络拔地起,划区而治应运生内外疾行烽火令,锦绣山河尽囊中因地巧施张良计,宏图霸业指日统联手VPN智破环,塞外扬威俱相荣千古一帝终大成,路由天下群雄颂

自太古之初,阿帕初立,互联网便一片欣欣向荣,尤以信息时代的来临,更若沸水燃薪,呈现出了爆炸式的发展。在这个风起云涌的时代,各方协议厉兵秣马,以期在这迅猛的潮流之中占得一席之位,亦如路由领域。阿帕历开元30年,互联网中,链路谷内。在山谷之中坐落着一处古老的推演阵法。那阵法篆刻的错综杂乱,无章无法,无形无相,若常人看了一眼之后,便如入瘴雾之中,心生迷惘,深陷其中却无法自拔。眼下这凶险异常的阵法前却端坐着两个人。当中一人,衣着白衫,眉宇间尚有一丝稚气未脱,却依然掩盖不住这少年的丰神俊朗。而另一人,蓝发碧眼,鹰钩鼻挺,看样子像个来自异域边疆的中年长者。突然,在这繁复的阵法之中,隐隐有几处发出了微弱的亮光,似是心有灵犀,遥相呼应。随着时间的流逝,这光点越来越亮,光点间则围绕当中一处形成了一条条通路,通路中却是游离着流光溢彩,煞是好看。及至最后光芒大作,将这空寂的山谷映射的亮如白昼。“哈哈,师父,我成功了!我成功了!我以乾位为根,坎、艮、震、巽四位为叶,这路由就通了!”只见那白衣少年甚是欣喜,坐直的身子腾的一跃而起,对着眼前的阵法手舞足蹈。“嗯,不错,孺子可教。 SPF心法复杂难懂,你却只在我门下修习了三载,便可融会贯通,果然悟性颇高。”中年长者微微颔首,又对他道:“徒儿,如今你已尽得SPF精髓,现在可下山去了。”“啊?”白衣少年张大了嘴,愣了半天,刚刚满脸的兴奋劲一扫而空,取而代之的是一丝茫然之色,一如他初时演练此阵法时的模样。中年长者看了他一眼,席地而起,“三年前,你在这山谷之中跪了三天三夜,希望我教你SPF心法。当初我被你那颗赤子之心打动,收你为徒。”他又转身望向了远方,接着道:“前几日,我听说路由老祖发布了群英令,要在路由圣山开群雄大会。现下你既已习得心法,亦可前去,该是你一展胸中抱负的时候了。”“是!师父!”白衣少年默然半晌,遂点头道。眼下离别在即,他又想起这三载与师父相处的种种,一股忧伤的情绪油然而生,霎时泪水噙满了双眸。

“师父,您放心,我定让SPF心法名扬天下!”“名利皆虚妄,为师有你这一徒儿,足矣。”“师父,三年了,我还不知道您的名号呢。” “Dijkstra。”“敌克撕扯,敌克撕扯,好奇怪的名字。师父,我的名字叫 ……”还没等少年说

完,那中年长者已消失在茫茫夜空之中。

1.路由老祖召集群英令各方豪杰齐聚圣山

翌日清晨,白衣少年出了链路谷,便一路向西赶向路由圣山,五日后到达,刚刚赶上路由老祖召集的群英会。白衣少年环顾四周,一鹤发童颜老者位列主桌正中位,想必就是万人敬仰的路由老祖。分坐老祖旁边的二人,一人古板严肃,一人矮小精明,当是路由界著名的静态路由和RIP协议了。“各位,今日召集大家前来,只为一件事,”老祖举杯而起,“现如今互联网发展太快,路由规模也随之越来越大,所以在此愿与各位共襄盛举,开路由盛世。 ”“咳,咳,本王自太古之初便随老祖开创路由,一路倾心戮力,治下的路由莫不稳定。当此盛世之时,本王愿尽绵薄之力。”静态路由道。“静态路由,我知道你为人谨慎,但事事亲力而为,也会力不从心。眼下你自己的一亩三分田都快顾不上来了吧?”说话的是RIP。静态路由被他呛得脸色一会青一会白,奈何其说的都是事实,却也无可反驳。RIP见静态路由无话可说,便洋洋得意的道:“老祖,本王倒是可以多管一些路由。我不会像静态路由一样,每条路由都需自己配置,如果路由很多的时候,定是灾难。老祖,你也知道我的传声心法,管路由可容易多了。”

江湖小贴士1、什么是静态路由静态路由是路由界的老前辈,见证了整个路由界的风云变幻。静态路由以手工配置路由的方式进行管理,当网络的拓扑结构或链路的状态发生变化时,再手工重新修改路由表中相关的静态路由信息。使用静态路由的好处是配置简单、可控性高,在网络中不会产生额外的更新报文。但是静态路由不适用于大型和复杂的网络环境,一方面,网络管理员难以全面地了解整个网络的拓扑结构;另一方面,当网络的拓扑结构和链路状态发生变化时,路由器中的静态路由信息需要大范围地调整,这一工作的难度和复杂程度非常高。

2、什么是 RIP协议 RIP出生于名门世家,是 Xerox公司在20世纪70年代开发的,是 IP网络所使用的第一个动态路由协议。 RIP在互联网界开启了动态路由协议的时代,在互联网之初曾经对网络的路由管理作出了巨大贡献。RIP是一种典型的基于距离矢量的内部网关协议(IGP),属于应用层协议,并使用 UDP作为传输协议。然而 RIP又有很多不完善的地方,例如以跳数作为度量标准,最大跳数为 15跳等等。因此很多 人认为它将会而且正在被诸如 OSPF IS-IS 这样的路由协议所取代。

2.朝堂上与RIP激辩白衣少年脱颖而出

“哼..”人群之中发出一声轻蔑。“谁!有谁不服!”RIP睥睨众人,“本王纵横路由界数十载,凡我所过之处,莫不顺从归我治下!”这话说的倒是事实,在互联网发展初期,RIP依靠他那套简单的传声心法,倒是将路由管理的井井有条。其间,虽然因为自身心法问题,出现了一些路由环路的事故,但后来都通过研摩出来的一些改进措施,比如水平分工、毒性逆转、触发更新等,将这些事故解决了。不过,此一时彼一时,如今互联网发展如此迅猛,路由无论从距离,还是数量来说,都会呈现几何式的增长,他那套还能行吗?路由界很多人对此心知肚明,但自身力量有限,只能沉默不语。 “RIP前辈此话不假,RIP协议通过简单的距离矢量算法,的确比静态路由前辈手工配置路由高明了很多。但是,这世上有什么协议能是完美无缺的呢?”人群之中施施然走出来一位翩翩美少年,打破了这一刻的沉寂。“哦?”RIP那精明的双眼中闪过一丝厉色,“那你倒是说说 RIP协议有哪些缺点?”“既然RIP前辈这样说,那我就恭敬不如从命了。”那美少年便是师从 Dijkstra的白衣少年。只见他一边健步如飞,以指代笔,在地上绘出一张张网络图,一边向众人耐心讲解,不一会就道出了RIP协议的三个短板。 1、依照传闻进行路由更新和路由选择。距离矢量协议依照传闻进行路由的更新和路由的选择。这种情况下路由器并不了解整个网络的拓扑,只知道到达目的网络的距离,以及到达目的网络应该走哪个方向或者哪个接口。如图 1所示,R2收到了来自R1的路由通告(传闻),此时 R2可以知道经过R1可以到达1.1.1.0/24网络,花费是1跳,除此之外 R2不知道其他的信息,即使这个通告因为某种原因已经是错误的了, R2依然固执的认为经过 R1可以到达1.1.1.0/24网络,花费是1。这是导致RIP网络容易产生路由环路的最根本原因。

1 RIP依照传闻进行路由更新和路由选择 2RIP以跳数(Hops)作为度量值,虽然简单,但事实上是不够科学的。如图2所示:R1去往R5的路径有两条:经过R2的这个路径有2跳,但是带宽仅为

1.544M;经过R3的这个路径有3跳,但是带宽却很大,为千兆链路。按照RIP的度量标准,一定会选择经过R2的这一条路径,而事实上这条路径的链路带宽并不是最优的。这是导致RIP网络带宽利用率低下,不容易进行 QoS管理的根本原因。

2 RIP以跳数(Hops)作为度量值 3、最大跳数 15的设定限制了 RIP网络的规模。为了防止RIP路由在网络中被无限泛洪从而跳数累加到无穷大, RIP规定:路由的最大跳数为15跳,也就是如果度量值大于等于 16跳则被视为路由不可达。最大跳数的设定虽然解决了度量值技术到无穷大的问题,但是却也极大地限制了RIP所能支持的网络规模。

3. SPFLSDB勾勒IGP蓝图路由领域开启新格局

“嘿嘿,你这说的倒是大差不差,”RIP对着那白衣少年皮笑肉不笑地道,心下却震撼于他竟对RIP协议了解的如此之深,而且在场的大部分人应该都是这样的感受。路由老祖召集这群英令,无非是对这越来越大的路由疆界重做分配,虽然自身有那么些缺点,但是比其他人要好些。想着这增大的盘子,即使别人有颇多的怨言,大部分还不是摄于他的威力,划在他名下?!没想到竟半路杀出个程咬金。他强自镇定,接着说道:“但是,我想目前在管理路由方便也没有别人比我更强吧?”“嗯,目前是没有,不过只是目前。”那白衣少年对着RIP面露微笑。“这么说,你有什么更好的方法?”RIP眼含精光,紧接着追问。“晚辈不才,刚好学了点皮毛,再结合当下互联网的状况,想到了一些方法。”白衣少年负手而立,当下侃侃而谈。与RIP的运行机制不同,在白衣少年所说的网络中,每台路由器根据自己周围的网络拓扑结构生成链路状态通告LSALink State Advertisement),并通过更新报文将LSA发送给网络中的其它路由器。 1、每台路由器都通过 LSDB掌握全网的拓扑结构。如图3所示,每台路由器都会收集其它路由器发来的LSA,所有的LSA放在一起便组成了链路状态数据库LSDBLink State Database)。LSA是对路由器周围网络拓扑结构的描述, LSDB则是对整个自治系统的网络拓扑结构的描述。路由器将LSDB转换成一张带权的有向图,这张图便是对整个网络拓扑结构的真实反映。各个路由器得到的有向图是完全相同的。

3 路由器通过LSDB掌握全网的拓扑结构 2、依靠 SPF计算到达目的网络的路径,而不是依靠传闻。如图4所示,每台路由器根据有向图,使用SPF算法计算出一棵以自己为根的最短路径树,这棵树给出了到自治系统中各节点的路由。相对于RIP,这种机制极大的提升了路由器的自主选路的能力,使得路由器不再依靠传闻或者路标进行选路。

4 路由器依靠SPF计算到达目的网络的路径 LSDB保证了路由器能够时刻掌握全网的拓扑机构, SPF算法保证了路由器能够迅速的计算出到达目的网络的最短路径。“妙!实在是妙!这样一来,整个网络没有环路不说,而且也没有RIP那样有距离小于16跳的限制。”人群中爆发出了一声由衷的赞叹,既而这声音像丢落在平静湖面中的一颗石子,慢慢扩散开来,大家都在交头接耳,小声交谈,赞叹着这世上竟有配合如此精妙的阵法,同时也在猜测着,这白衣少年是谁。而先前不可一世的RIP却站在那不发一言,只是看着那个白衣少年,眼中精光更盛。这时,一直没有说话的路由老祖出声了:“哈哈,果然英雄出少年,想来我路由领域后继有人了。”他朝白衣少年招了招手,“小兄弟,近前说话,敢问你叫什么名字?师承何处?”白衣少年走到老祖面前,对着老祖弯腰作揖道:“老祖谬赞了,是家师教导的好。小子籍籍无名,家师倒有些名望……”“呵呵呵呵,这套阵法倒是巧妙, LSDBSPF配合起来也是相得益彰,”突然,一串柔媚的笑声打断了白衣少年的话。白衣少年循声望去,只见一女子面蒙轻纱,露出的一双摄人心魄的美眸正好奇的打量着自己,身姿极是曼妙。而且她竟然也是师父那样的装扮,难道和师父来自同一个地方?这个女子坐在老祖那一桌,想来身份也很是高贵。“不过,我曾经遇到过一位高人,他说以后路由数量的增长会达到你们难以想象的地步。那时候你这套阵法还能坚持下去吗?”“这……不知道会增长到多少,姑娘可否说个大概数字吗?”白衣少年惊奇道。“几十万。”“啊?!”在场众人皆是一惊,白衣少年也不例外。几十万?看来还是低估了这个时代前进的步伐。那么,LSDBSPF还可以助我达成伟业吗?想着想着,他心中竟生出了一丝怯意。“哈哈哈,小兄弟不要灰心,古往今来,互联网历经了多少动荡,每一次莫不是涌现出很多协议,通过变革,让互联网重又安定下来。姑娘,你莫要夸大其词。 ”路由老祖见他神色落寞,温言安慰。是啊,什么时候自己变的这么不堪一击了?白衣少年又恢复一脸坚毅之色:“老

祖教训的是,小子虽路由小辈,亦不愤当下路由格局,遂师从Dijkstra,得上乘心法,愿领各方豪侠,换路由新生!”“好!小兄弟,刚刚一打断,你还未报出你的名字?敢问小兄弟尊姓大名?” “OSPF!” OSPF?呵呵呵呵,真是个有趣的人。蒙面女子带着一丝玩味的眼神看着他。嘿嘿,OSPF?我看你怎么换路由新生。RIP的嘴角泛起一丝诡异的笑容。就这样,路由圣山群英会,白衣少年 OSPF横空而出,江湖上又会多一段美妙佳话。而好戏,才刚刚开始。

第三十一章问鼎 OSPF2)初涉路由显神通,民主治军四方拥

绿油油的草儿,碧澄澄的溪 ~

轻飘飘的风儿,迎面吹 ~

哞嗨嗨的牛儿,青幽幽的堤 ~

乐陶陶的人儿,哼着歌 ~~“白龙马儿,蹄儿朝西,驮着唐三藏,跟着三徒弟~西天取经不容易,一走就是几万里~”那个乐陶陶的人好不自在。“主公,此人当真的是那个人吗?怎会这般吊儿郎当?”说话的人方脸大耳,膀阔腰圆,一看就是个久经沙场的武将。“大隐隐于市,交换机,你可莫要小瞧了人家。举凡智计无双的奇人异士,纵有通天彻地之能,大都锋芒内敛,不显山露水。群英会上战 RIP,本公是亲眼所见,此子风采,当真了得。”被唤作主公的那人 戴侯冠,身披银甲,内罩白袍,威严凛凛。 “嘿嘿,那也未必。主公,当日此子确是舌灿莲花,但空有理论,说不定难于践行。”说话的这人天生一双鼠目,任谁看了都觉得一脸奸猾相,“我们三人跟在他后面行了这么久,说不定他也只是故弄玄虚,区区一绣花枕头罢了。”“呵呵,若能求得一贤才,多行一段路又何妨?”那主公见OSPF渐行渐远,立时催马扬鞭。并辔二人左右对视一眼,亦随其而去。

1.访诸葛三顾茅庐论运行机制谋治世妙法

“三位跟随我多日,可悟出了什么?”行至一荫凉处, OSPF从牛背上跳了下来,对后面跟着的三人说道。 “…….”要是悟出来了,还能来寻你么?那主公心中如此想,但是脸上却没表现出来。他翻身下马,对着OSPF双手毕恭毕敬道:“先生说笑了,我三人皆是草莽出身,哪能悟得什么。此番前来,也是希望先生能助本公一臂之力,于互联网上开疆拓土,成不世伟业。”“嗯,悟得开了,悟得开了……OSPF却似是自说自话一般,装出一副高人模样,心下却笑开了花。“哼,黄口小儿,我家主公与你这般客气,你好生无礼!”交换机早就憋了一股气,终于忍不住喝道。“嗯,榆木脑袋,悟不开,悟不开……”“你!”“嗳,”那主公拦下了交换机作势欲挥出去的臂腕,接着对OSPF道:“群英会上,本公有幸听闻先生所述SPFLSDB,很是钦佩。若真如先生所描绘那样,定当是互联网之福,众网元之福。望先生入我麾下,本公必奉先生为上宾。”“哈哈哈哈,主公谬赞, ”OSPF再也不似先前散漫模样,既而毕恭毕敬道:“主公身旁两员猛将当是交换机、路由器,那主公必是携众网元开拓繁多网点的网管了。今幸得主公如此礼遇,再推脱就是OSPF的不是了。”“嘿嘿嘿嘿,你这人倒是懂得顺坡下驴,”路由器一脸奸笑,“SPFLSDB莫不是一纸空谈吧?”“呵呵,无妨,主公请看,”说话间 OSPF顺手打开随身带的几幅图,“下山前,师父曾赐予我五行八阵图,嘱我多加揣摩,如今终得其精髓。此图在手,定能助主公争霸天下!”“哈哈!先生快快说与我听!”网管早已按捺不住,忙对 OSPF道。 OSPF见此情景,不再废话,与他们徐徐道来。此组图说的,正是OSPF协议的基本运行机制,恰似百尺高楼之基石。其实概括起来,也比较容易理解,包括下面5步:

1Hello报文交互 -形成邻居关系

1 Hello报文交互 -形成邻居关系如图 1所示,设备运行OSPF协议后,会从所有启动OSPF协议的接口上发出Hello数据包。如果两台设备共享一条公共数据链路,并且能够成功协商他们各自 Hello数据包中所指定的某些参数,那么他们就形成了邻居关系。

      2LSAs的泛洪 -通告链路状态信息
    1. 2 LSAs的泛洪-通告链路状态信息形成邻接关系的设备之间就可以交互 LSA了,如图 2所示。通过问鼎 OSPF1)我们知道,LSA全称是链路状态通告,它描述了设备所有的链路、接口、邻居及链路状态等信息。设备间正是不断地泛洪交互这些链路信息,来了解整个网络的拓扑信息。由于链路的多样性, OSPF协议定义了许多 LSA类型,问鼎 OSPF5)会详细介绍到。同时我们可以了解到,OSPFRIP的高明之处在于设备之间交互的是 LSA信息,而RIP协议交互的是路由。也就是说, OSPF协议中,设备的选路是一种“自主行为”,LSA只不过是一种选路的参考信息;而 RIP协议中,设备的选路过度的依赖于邻居路由器的路由信息,即使邻居路由器传达的信息是错误的。
      3LSDB的组建-形成带权有向图
    1. 3 LSDB的组建-形成带权有向图通过泛洪LSA,设备接下来会把收到的 LSA汇总记录在 LSDB(链路状态数据库)当中。最终,所有路由器都会形成同样的 LSDB,如图 3所示。LSA是对设备周围网络拓扑结构的描述,而LSDB则是对整个自治系统的网络拓扑结构的描述, LSDBLSA的汇总。
      4SPF的计算-形成路由
    1. 4 SPF的计算-形成路由如图4所示,当 LSDB同步完之后,每一台设备都将以其自身为根,使用 SPF算法来计算一个无环路的拓扑图,以描述它所知道的到达每一个目的地的最短路径(最小的路径代价)。这个拓扑图就是 SPF算法树,有了这棵“树”,事实上路由器就已经知道了到达网络各个角落的最优路径。
    5)路由表的维护更新

5路由表的维护更新最终,经过SPF算法得出了最短路径树,每台路由器将SPF算法得出的最短路径装载进路由表形成指导数据转发的路由表项,并且实时更新,如图 5所示。同时,邻居之间交互 Hello报文进行Keepalive,维持邻居 /邻接关系,并且每30min重传一次LSA。如果网络拓扑稳定,那么网络中将不会有什么活动或行为发生。

2.领虎符整饬三军设 Router ID知己知彼

“先生这妙法如此运用,令本公茅塞顿开,我想再复杂的网点也必能攻的下来。先生若入我帐下,本公愿与你调兵虎符,麾下三军皆任你调遣!”到现在,网管是愈加的对OSPF佩服的五体投地。“蒙主公抬爱,微臣自当鞠躬尽瘁,死而后已!”自那日网管拜访之后,OSPF便随网管来到了某网点大营之中。借由帐中沙盘, OSPF知道此网点名唤X网点,内里错综复杂,地域辽阔。网点内不同网元鳞次栉比,而且网元间需要交错相连,任什么路由协议见了,肯定都会头疼不已。“军师,俺叫路由器!”在大营中某一处,一个大头兵正憨憨的答着 OSPF的话。 OSPF并未急于攻城掠地,来了之后,便先是熟悉三军。“那么你呢?”OSPF持扇轻摇,转身对另一士兵道。“军师,俺也叫路由器!”“俺也叫路由器!” “……”“你叫路由器,你也叫路由器,真是叫我有些晕头转向了。”OSPF摇头笑道。“嘿嘿,军师,俺们本来就都是路由器啊。何况俺们这些大老粗,名讳也不值几个钱,哪能与那些有头有脸的协议比。”“不然,知己知彼,方百战不殆。莫要小瞧自己,哪个协议离了你们能玩的转?本军师要了解整网拓扑,亦要靠你们,”OSPF沉吟半晌,既而肃容道:“众将听令!卯时三刻,校场集合,军师来给你们发Router ID了!” Router ID就是用于在自治系统中唯一标识一台运行 OSPF的路由器的32位整数。每个运行OSPF的路由器都有一个Router IDRouter ID的格式和IP地址的格式是一样的,在实际网络部署中,考虑到协议的稳定,推荐使用路由器 Loopback0IP地址做为路由器的Router ID

6 OSPF自治系统中路由器的的Router ID

Router ID的选取有两种方式:

通过命令行手动配置。
设备自动设定。如果没有手动配置Router ID,设备会从当前接口的 IP地址中自动选取一个作为 Router ID。其选择顺序是: 1、优先从Loopback地址中选择最大的 IP地址作为 Router ID2、如果没有配置Loopback接口,则在接口地址中选取最大的 IP地址作为 Router ID。只有重新配置系统的Router IDOSPFRouter ID,并且重新启动 OSPF进程后,才会进行Router ID的重新选取。

3.因地域分四路掠城携天威攻万变贼寇

9.5.2.7“到!9.5.2.8“到!数日过后,三军阵前校场点兵,上至虎虎将尉,下至大头小兵,莫不精神抖擞焕然一新。OSPF心下了然,便开始排兵布阵,准备拿下X网点。他根据不同链路类型,将三军分作了四路,每路阵法不尽相同1、广播( Broadcast)类当链路层协议是EthernetFDDI时,OSPF缺省认为网络类型是 Broadcast。在类型的网络中,通常以组播形式( 224.0.0.5:含义是 OSPF路由器的预留IP组播

址;224.0.0.6:含义是 OSPF DR的预留IP组播地址)发送 Hello报文、LSU报文和 LSAck报文;以单播形式发送 DD报文和LSR报文。而至于这几种报文究竟是啥、作用如何,问鼎OSPF3)中会有详细的介绍。

7 广播(Broadcast)类型网络 2NBMANon-Broadcast Multi-Access)类型当链路层协议是帧中继、ATMX.25时,OSPF缺省认为网络类型是NBMA。在该类型的网络中,以单播形式发送协议报文( Hello报文、DD报文、LSR报文、

LSU报文、LSAck报文)。

8 NBMANon-Broadcast Multi-Access)类型网络 3、点到多点 P2MPpoint-to-multipoint)类型。没有一种链路层协议会被缺省的认为是Point-to-Multipoint类型。点到多点必须是由其他的网络类型强制更改的。常用做法是将非全连通的NBMA改为点到多点的

网络。在该类型的网络中,以组播形式( 224.0.0.5)发送 Hello报文,以单播形式发送其他协议报文(DD报文、LSR报文、 LSU报文、LSAck报文)。

9 点到多点P2MPpoint-to-multipoint)类型类型网络 4、点到点 P2Ppoint-to-point)类型当链路层协议是PPPHDLCLAPB时,OSPF缺省认为网络类型是P2P。在该类型的网络中,以组播形式( 224.0.0.5)发送协议报文( Hello报文、DD报文、LSR报文、LSU报文、LSAck报文)。

10 点到点P2Ppoint-to-point)类型网络

4.拔敌寨遭遇险境举能人解广播/NBMA邻间困局

“哈哈哈,先生真乃神人也!据探子来报, P2PP2MP网络已被攻破。不出五日,X网点将被全部拿下!”网管坐在马上,抚掌大笑道。“主公,此话言之尚早,剩下的两路可不好拿。”OSPF一反往日的淡然自若,神色中竟带有一丝隐忧。“报!”正当时,一探子快马加鞭至两人跟前。只见那探子衣衫尽皆血染,满目疲惫之色。“广播链路久攻不下,如不及时驰援,我军危矣!”“什么!怎会如此!”网管身形一颤,险些跌下马来。

“初时我军攻敌势如破竹。但.”探子回话突地一顿,悲戚中难掩一丝愤恨“但后来路将军不知与敌贼言语了什么,广播链路上需要连的设备竟越来越多我军结两两相交之阵,一开始堪堪抵住汹涌来势,及至最后阵法渐露疲相,我亦深陷泥潭!OSPF听罢静默无言,待心绪稍自平复,忙对来人道:“我问你,阵中那白袍将安在?“这……身披白袍的将士有好些个,却不知军师说的是哪一位?“就是身边总有个容貌清秀的小兵围着他叽叽喳喳转个不停的那一位。“哦,原来是那一位!”探子恍然大悟,“我知道的!幸有此人一马当先,不只怕我军早已败下阵来。“我赐你锦囊一枚,速交于他手!“是!”探子接过锦囊,一骑绝尘而去“先生,此子是何人物?能替本公拿下这一仗么?”网管言语间很是急切。开如此顺利,现在若停歇下来,可真是功亏一篑了“早先我料到可能有此劫,攻打广播链路/NMBA链路前便定一计,但需营中有威名之人相助。此子由众人推举而来,原先籍籍无名,现名DR

4.1 DR/BDR选举的原因

在广播网和NBMA网络中,任意两台路由器之间都要传递路由信息。如图11所示,网络中有n台路由器,则需要建立 n*(n-1)/2个邻接关系。这使得任何一台路由器的路由变化都会导致多次传递,浪费了带宽资源。为解决这一问题,OSPF定义了指定路由器DR。通过选举产生 DRDesignated 路由器)后,所有其他设备都只将信息发送给DR,由DR将网络链路状态LSA广播出去。为了防止DR发生故障,重新选举DR时会产成业务中断,除了DR之外,还会选举一个备份指定路由器 BDR。这样除 DRBDR之外的路由器(称为DR Other)之间将不再建立邻接关系,也不再交换任何路由信息,这样就减少了广播网和 NBMA网络上各路由器之间邻接关系的数量。这就是 OSPF给那白袍小将的锦囊妙计。

11 DRBDR的选举

4.2 DR/BDR选举的原则

在广播网络和 NBMA网络中,为了稳定地进行 DRBDR的选举,OSPF规定了一系列的选举规则,遵循三个基本原则:选举制、终身制、世袭制。下面我们来逐个介绍一下。 1、选举制

12 DRBDR的选举-选举制如图12所示,所谓选举制即DRBDR不是人为指定的,而是由本网段中所有的路由器共同选举出来的。路由器接口的 DR优先级决定了该接口在选举DRBDR时所具有的资格,本网段内 DR优先级大于0的路由器都可作为“候选人”。选举中使用的“选票”就是 Hello报文,每台路由器将自己选出的 DR写入Hello报文中,发给网段上的其他路由器。当处于同一网段的两台路由器同时宣布自己是 DR时, DR优先级高者胜出。如果优先级相等,则Router ID大者胜出。如果一台路由器的优先级为0,则它不会被选举为DRBDR2、终身制

13 DRBDR的选举-终身制所谓终身制也叫非抢占制。每一台新加入的路由器并不急于参加选举,而是先考察一下本网段中是否已有DR存在。如果目前网段中已经存在 DR,即使本路由器的DR优先级比现有的 DR还高,也不会再声称自己是 DR了,而是承认现有的DR。因为网段中的每台路由器都只和 DR/BDR建立邻接关系,如果 DR频繁的更迭,则每次都要重新引起本网段内的所有路由器与新的DR/BDR建立邻接关系,这样会导致短时间内网段中有大量的OSPF协议报文在传输,降低网络的可用带宽。终身制有利于增加网络的稳定性、提高网络的可用带宽。实际上在一个多访问网络上,最先初始化启动的两台具有DR选举资格的路由器将成为DRBDR路由器。 3、世袭制

14 DRBDR的选举-世袭制所谓世袭制就是如果DR故障了,那么下一个当选为 DR的一定是BDR,其他的路由器只能去竞选BDR的位置。这个原则是为了保证 DR的稳定,不会经常进行选举的,并且DR是有备份的(BDR),一旦DR失效,可以马上由BDR来承担DR的角色。由于 DRBDR的数据库是完全同步的,这样当 DR故障后,BDR立即成为DR,履行 DR的职责,而且邻接关系已经建立,所以从角色切换到承载业务的时间会很短。同时,在BDR成为新的DR之后,还会选举出一个新的 BDR,虽然这个过程所需的时间比较长,但已经不会影响路由的计算了。

4.3 DR/BDR选举的详细步骤

广播链路或者NMBA链路上 DR/BDR详细的选举过程如下:

  1. 1)接口 UP后,发送 Hello报文,同时进入到 waiting状态。在 waiting状态下会有一个waiting timer,该timer的长度与dead timer是一样的。默认值 40s,用户不可自行调整。
  2. 2)在 waiting timer触发前,发送的 hello报文是没有DRBDR字段的。在 waiting阶段,如果收到Hello报文中有DRBDR,那么直接承认网络中的 DRBDR,而不会触发选举。直接离开waiting状态,开始邻居同步。
  3. 3)假设网络中已经存在一个 DR和一个BDR,这时新加入网络中的设备,不论它的Router ID或者DR优先级有多大,都会承认现网中已有的 DRBDR
  4. 4)当 DR因为故障down掉之后,BDR会继承 DR的位置,剩下的优先级大于0的设备会竞争成为新的BDR
  5. 5)只有当不同 Router ID,或者配置不同 DR优先级的设备同时起来,在同一时刻进行DR选举才会应用DR选举规则产生DR。该规则是:优先选择 DR优先级最高的作为DR,次高的作为 BDRDR优先级为 0的设备只能成为DRother;如果优先级相同,则优先选择Router ID较大的设备成为 DR,次大的成为BDR,其余设备成为DRother

江湖小贴士:看完这一节之后,小伙伴们是不是已经满腹疑问?什么是 waiting状态?dead timer又是个什么鬼?不要急,等看了第三篇,再回头看这里,你就会一目了然。

4.4 DR/BDR选举的实验验证过程

前面给大家介绍了OSPF在广播和NBMA网络中 DR/BDR的选举原则和选举步骤,下面我们通过实验来验证一下DRBDR的选举过程中的一些问题。

15 实验验证DRBDR的选举实验环境如图15所示,五台路由器组成一个广播网络,中间的交换机作为纯二层设备,四周的四个路由器 R1R2R3R4作为路由设备。四个路由器都规划在 OSPFArea0区域内,各路由器的 IP地址及Router ID如图15所示。 R1R2R3R4四台路由设备的关键配置如下: 配置完成后,待网络稳定后我们来查看一下当前这个广播网络的DRBDR的选举情况。在R1上通过display ospf peer命令查看OSPF的邻居信息,显示如图 16所示。

R1的关键配置 # ospf 1 Router ID 10.1.1.1 area 0.0.0.0 network 192.168.1.0 0.0.0.255 #
R2的关键配置 # ospf 1 Router ID 10.2.2.2 area 0.0.0.0 network 192.168.1.0 0.0.0.255
#
R3的关键配置 # ospf 1 Router ID 10.3.3.3 area 0.0.0.0 network 192.168.1.0 0.0.0.255 #
R4的关键配置 # ospf 1 Router ID 10.4.4.4 area 0.0.0.0 network 192.168.1.0 0.0.0.255 #

16 R1上通过display ospf peer命令查看OSPF的邻居信息从上述表项可以看出,目前这个广播网络已经完成了DRBRD的选举, R1DRR2BDRR3R4DRother。这里 R1DRR2BDR跟设备的启动顺序也是直接相关的,本例中我们按照R1R2R3R4的顺序启动设备,所以R1R2首先完成了初始化,自然成为了DRBDR

下面分别在 R1R2R3R4上查看OSPF邻居关系的概要信息。

17 完成DRBDR选举后的 OSPF邻居关系的概要信息我们可以从图17的表项中看到: R1/R2和其他三个设备的邻居关系都是 Full,而R3R4之间的OSPF邻居关系是2-Way状态。这表示 DR/BDR与邻居间建立的

是邻接关系,而DROther之间建立的只是邻居关系。说到这儿,小伙伴们是不是又产生了很多新的疑问?为什么 Full就表示邻接关系,2-Way就表示邻居关系?邻居关系和邻接关系又有什么区别?嘿嘿,咱们还

是等问鼎OSPF3)讲解邻居状态机的时候会详细展开介绍这些内容。

江湖小贴士1、如果广播网络里只存在 DR,但并不存在 BDR,这时候网络是什么状况?我们通过实验来回答读者的疑问,我们在 R2R3R4的接口视图下配置 ospf DR优先级 0将设备的DR优先级配置为0,那么这个时候这3台设备将失去DRBDR的选举资格,只能作为DRother,网络中仅存在一台具备DR/BDR选举资格的设备,就是R1。配置完成后我们查看OSPF邻居状态可以看到,此时 DRR1BDR显示为None,即网络中不存在BDR,如图 18-1所示。

18-1 网络中只存在DR不存在BDR的情形

此时我们查看四台设备的OSPF简要信息,如图图18-2所示,可以看到R2R3R4分别和R1建立了邻接关系(状态为 FULL),而R2R3R4之间的邻居状态只停留在2-Way的状态。

18-2 网络中只存在DR不存在BDR的情形实验过程已经基本看到了这个问题的答案,这里我们总结说明一下:如果在一个多访问网络上只有唯一的一台具有选取资格的路由器相连,那么这台路由器将成为DR路由器,而且在这个网络上没有BDR路由器,其他所有的路由器都将只和这台DR路由器建立邻接关系。聪明的读者此时可能会问另外一个问题,如果这个时候R1故障了,或者失去了DR的资格了呢?请看下面第二个小贴士。

江湖小贴士1、如果广播网络里不存在 DRBDR,这时候网络是什么状况?我们同样用实验来回答这个问题,我们在上面的基础上,继续在R1的接口视图下配置ospf DR优先级 0命令,让R1也失去DR/BDR的选举资格,此时这个广播网络中将没有任何设备具备DR/BDR的选举资格。如图 19-1所示,DRBDR字段都显示None,表示这个网络中不存下 DRBDR

19-1 网络中不存在DRBDR的情形此时我们查看四台设备的OSPF简要信息,如图图19-2所示,可以看到此时所有的邻居状态都只停留在2-Way的状态,网络不能建立邻接关系,各个设备之间不能完成路由信息的交互。

19-2 网络中不存在DRBDR的情形根据上述实验,我们可以给出这样的结论:如果广播网络上不存在具备 DR/BDR选举资格的设备,那么这个网络上将没有DR或者BDR路由器,而且也不会建立任何邻接关系。在这种情况下,网络上所有的路由器的邻居状态都将停留在 “2-Way”状态。尾声残阳如血。寂寥的苍穹中偶有几只归雁飞过,伴随着一声声悠扬的啼鸣在长空中回荡。然而,眼前的一众人却无暇他顾,都目不斜视地盯着远方,每个人脸上都像崩了 一根弦,似是那里有着什么择人而噬的恐怖怪物在等着他们。 突然,远方的地平线上出现了一个小黑点,紧接着,两个,三个…….黑点越来越多,也越来越大,及至最后汇聚成一列列铁骑,由远及近呼啸而来。

“主公,我们胜了。”白袍小将,横刀立马。

第三十二章问鼎 OSPF3)完善机制沐邻里,帅将兵民如父兄

鲜衣怒马惊草风,

身若劲松气如虹。

一朝踏尽寒霜雪,

剑破长空化游龙。

“这诗说的正是白袍小将。广播链路一战,世人皆识得白袍小将,即便与我们的军师OSPF相比,亦有过之而无不及。那一战,白袍小将恍若天神,携雷霆万钧之势冲入敌阵,好不威风!”说书人眉飞色舞,口沫横飞。台下看客目瞪口呆,一脸沉醉。

自广播链路大捷已过三日。虽说众人都很高兴,但是连番的几次大战,亦是让不少人生了疲惫之心。网管听得OSPF的报告,便命三军稍作休整,恢复元气。这一日,OSPF与攻打广播链路众将士相约于X网点有名的醉仙楼,谈天说地,把酒言欢。

“军师,莫要听那说书人瞎说。这种人就一样本事,喜欢夸夸而谈。”说话的人剑眉星目,英武不凡,对军师的语气很是恭敬。“呵呵,将军莫要自谦,若非有你,我们不知要折损多少将士,才能攻下广播网络。”答话人白衣胜雪,神色如常。

“哎呀哎呀,大哥和军师你们怎么突然都变得如此清高了。哎呦哎呦,冷死了。”这时候突然窜出来一个小姑娘,那小姑娘一身水绿裙裳,扎着个马尾,宛若白玉的小脸上生着一双秀丽的大眼睛,乌黑的眼珠在里边滴溜溜的打着转。而那双顾盼撩人的大眼睛忽闪忽闪,带着微微上翘的长睫毛上下跳动,真是好生俏丽。“噗。”终于有人忍不住,笑出声来,而席间的氛围也轻松了起来。“小妹你又胡说,若无军师,我们这些兄弟怎受得主公如此赏识。你这么不懂规矩,以后也不知道哪家小哥敢要你。”白袍小将苦笑摇头。“哼哼,我谁都不嫁,我 我就一辈子赖上你了!”难得的,小丫头白嫩嫩的小脸上透出了一点红。“哈哈哈哈,原来我们的小妹心有所属了。”众人哈哈大笑,跟着起哄。“你们也跟着胡闹!”白袍小将言间讪讪,为了掩饰尴尬,干咳一声。忽又觉得好久没如此开心过,既而也跟着放声大笑。一时间,众人言笑晏晏,似是忘了 Internet上那繁多的战事,那繁多的忧愁。

1.由接口演七般变化众网元借奇功应不同链路

酒过三巡,白袍小将见时机成熟,便对OSPF正色道:“多谢军师提拔,方有我今日成就。原先籍籍无名一网元,如今却管理一方广播链路,竟然还有了DR这个名号,此等恩情,没齿难忘!”“呵呵,非也。名利皆虚妄,这是家师教导我的,今天我也对你这样说, ”OSPF摆了摆手,然后又对其他众人道:“还有你们也莫要看轻自己。常言道,此一时彼一时,你们可知道我传予你们的功法,人人皆能生出七般变化?将军当得 DR、小妹当得BDR,你们也能当得。教你们七般变化,就是让你们顺势而为,莫说广播链路、NBMA链路,P2P/P2MP链路也当应付得了。”“哦?竟有如此威能?”白袍小将很是惊奇。“怎么?不信吗?且看看你的OSPF接口状态。”言罢OSPF含笑不语。

白袍小将心怀忐忑,查看了自己的OSPF接口,竟发现其上颜色由赤及紫,七状态,交错变化,持续时长不一而足“军师,这?“莫慌,待我慢慢说来..

1.1 OSPF接口

通过第一篇&第二篇,我们知道 OSPF是链路状态协议,运行OSPF的设备间通过交互链路状态信息(即 LSA),最后每台OSPF设备都形成一个链路状态数据库(即LSDB),从而知道整张网络的拓扑信息。而这些链路信息最初的源头肯定都是OSPF设备本身相连的本地链路信息,那么这些信息又是从哪里获得的呢?答案是与链路直连的OSPF接口。我们可以通过display ospf interface查看OSPF接口信息。

1 OSPF接口信息在上面的信息中,通过其中一些描述链路基本状况的字段,就可以了解 OSPF接口相连的链路信息。

  1. 1Router ID设备的 ID,第二篇中介绍到的,保证设备在 OSPF网络的唯一性。
  2. 2Area接口所在的区域 ID。关于区域 ID,在第四篇中会详细介绍。
  3. 3Interface接口的基本信息,包括接口的 IP地址、接口编号。始发于这个接口的OSPF报文将把这个IP地址作为源地址。
  4. 4Cost接口开销值,即此接口发送出去的数据包在链路中传输需要花费的开销值。 OSPF在生成SPF时,就是依据这些链路开销值,选出最优的数据转发链路。
    1. 5Type接口类型,即这个接口相连的链路类型,包括P2PP2MP、广播或NBMA
    2. 当然,还有别的如维持邻居关系相关的等其他的信息,比如第二篇里的 Dead Timer
  5. 6Priority设备接口在选取DRBDR时的优先级。其值越大,优先级越高。
  6. 7DesignatedRouter接口所在广播网络 /NBMA网络上的指定设备,即 DR。一般用连接这个广播网络 /NBMA网络的接口地址表示。比如 192.168.23.0/24这个广播网络 /NBMA网络的 DR是相连接口地址为192.168.23.2的设备。
  7. 8BackupDesignatedRouter接口所在网络上的备份指定设备, BDR。一般用连接这个广播网络 /NBMA网络的接口地址表示。比如 192.168.23.0/24这个广播网络/NBMA网络的 BDR是相连接口地址为192.168.23.1的设备。
  8. 9Hello接口发送Hello报文的时间间隔。 10Dead接口相连的OSPF邻居失效时间。超过失效时间,如果接口还没有收到邻居设备发来的 Hello报文,就表明两端的邻居关系已无效。华为 S系列交换机在默认情况下,邻居失效时间为发送Hello报文时间间隔的4倍。

11PollNBMA网络上发送轮询Hello报文的时间间隔。在 NBMA网络上,当邻居失效后,设备将按轮询时间间隔定期地发送 Hello报文。轮询时间间隔值至少应为Hello报文时间间隔的4倍,华为S系列交换机在默认情况下发送轮询Hello报文的时间间隔是发送Hello报文时间间隔的4倍。 12Retransmit接口没有收到来自对端“LSA已经收到的确认报文,需要重传 LSA的等待时间。 13Transmit Delay接口发送LSA过程中的传输延迟时间。

1.2 OSPF接口状态机

OSPF设备从接口获取了链路信息后,然后与相邻设备建立邻接连接,交互这些信息。在建立邻接关系之前,邻居设备间需要明确角色分工,才能正常建立连接。那角色分工通过什么来了解呢?其实在图1的接口信息中,我们还有一个非常关键的字段没有介绍,那就是State字段。通过这个字段,我们就可以了解 OSPF设备在一段链路中的作用。而这也就是 OSPF接口的七般变化。每个设备通过这七般变化,顺势而为,扮演好自己在这段链路中的角色。

接口总共有下面 7种状态: -Down接口的初始状态。表明此时接口不可用,不能用于收发流量。 -Loopback设备到网络的接口处于环回状态。环回接口不能用于正常的数据

传输,但仍能通过ICMP ping或位错误检测来收集接口信息。

-Waiting设备正在判定网络上的 DRBDR。在设备参与 DR/BDR选举前,接口上会起一个Waiting定时器。在这个定时器超时前,设备发送的 Hello报文不包含DRBDR信息,设备不能被选举为 DRBDR,因为从第二篇可以知道,正常的DR/BDR选举遵循非抢占原则。这可以避免不必要地改变链路中已存在的 DR

BDR。仅NMBA网络、广播网络有此状态。 -P-2-P接口连接到物理点对点网络或者是虚拟链路,这个时候设备会与链路连接的另一端设备建立邻接关系。仅P2PP2MP网络有此状态。 -DROther设备没有被选为DRBDR,但连接到广播网络或 NBMA网络上的其他设备被选举为DR。它会与DRBDR建立邻接关系。 -BDR设备是相连网络的BDR,并将在当前的 DR失效时成为DR。该设备与接入该网络的所有其他设备建立邻接关系。 -DR设备是相连网络的 DR。该设备与接入该网络的所有其他设备建立邻接关系。

每个OSPF接口如何进行七般变化?它是根据不同的情况(即输入事件)在这些状态中进行灵活转换的,这样就形成了一个高效运作的接口状态机,如下图所示

2 接口状态机

下面是不同状态切换时的输入事件InputEvent(图中简称IE)。

输入事件 详细事件描述
IE1 InterceUP:底层协议表明接口是可操作的。
IE2 WaitTimer:等待定时器超时,表明DR/BDR选举等待时间结束。
IE3 BackupSeen:设备已检测过网络中是否存在 BDR。发生这个事件主要有下面两种方式: 1)接口收到邻居设备的Hello报文,宣称自己是BDR2)接口收到邻居设备的Hello的报文,宣称自己是DR,而没有指明BDR这都说明邻居间已进行了相互通信,可以结束Waiting状态了。
IE4 接口所在的设备在网络中被选举为DR。
IE5 接口所在的设备在网络中被选举为BDR。
IE6 接口所在的设备在网络中没有被选举为DR/BDR。
IE7 NeighborChange:与该接口相关的邻居关系变化的事件发生,这表明 DR/BDR要重新选举。下面的这些邻居关系变化可能会导致 DR/BDR重新选举: 1)接口所在的设备和一个邻居设备建立了双向通信关系。 2)接口所在的设备和一个邻居设备之间丢失了双向通信关系。 3)通过邻居设备发送的 Hello报文检测到,邻居设备重新宣称自己是 DR/BDR4)通过邻居设备发送的 Hello报文再一次检测到,邻居设备宣称自己

2.邻居间奏琴瑟和鸣八般变化助 LSA交互

众人听罢,内心久久不能平歇,军师的功法原来竟有这般变化!想想也是,十四儿郎,少小离家,谁不想从茫茫行伍中脱颖而出,纵不博个千古美名,总要留下些什么证明自己亦曾得意过。“初时以为军师给我们都定义好了角色,照着军师给的锦囊去做就好,原来这竟是一门能演绎七般变化的高明心法。”白袍小将似是喃喃自语,又似是对众人说,忽的他抬头对OSPF道:“军师,既然这心法能教人应不同链路,却没有说如何去教我们在这链路上去交互LSA,想必还另有心法,是也不是?!”“嗯,将军果然聪明,的确如此,” OSPF微微点头,“还有一门心法叫琴瑟和鸣,想来你们从这雅致的名字也可以知道,这需要两人共同修行演绎。而这心法,可是比之前的更复杂了,它有八般变化。”“八般变化?这不是才多了一般变化么?”“呵呵,非是多了一般变化那么简单。反正这些你们迟早也要习得,我就先说与

你们听听..

2.1 OSPF邻居相邻设备间明确好角色分工,相连接口状态稳定下来以后,下一步就是建立邻接关系,完成链路信息的传输。

江湖小贴士1、邻居关系和邻接关系有什么区别 ?什么情况下才会出现邻居或者邻接

3 邻居关系和邻接关系的区别

  1. OSPF设备启动后,会通过 OSPF接口向外发送Hello报文,收到 Hello报文的OSPF设备会检查报文中所定义的参数,比如 Hello报文发送间隔、网络类型、IP地址掩码等,如果双方一致就会形成邻居关系,两端设备互为邻居。
  2. )邻接关系:位于邻居关系之上,如果两端需要进一步交换 DD报文、交互 LSA信息,才建立邻接关系。这也就解答了第二篇里面广播链路/NBMA链路的一些疑问。在广播链路 /NBMA链路里,因为DROther之间不需要交换LSA信息,所以建立的就是邻居关系。而

DRBDR之间,DR/BDRDROther之间需要交互 LSA信息,所以建立的是邻接关系。如上图所示。而P2P链路/P2MP链路则只有邻接关系。后面会介绍到邻居状态机,如果根据邻居状态理解,邻居关系是指邻居状态达到了2-way状态,而邻接关系则需要达到 Exstart以上状态。

2OSPF的五种协议报文。在介绍OSPF邻居的一些内容之前,有必要讲解下 OSPF协议用到的5种协议报文,因为后面的知识点很多都会涉及到这些协议报文。在讲解时,会拿生活中的顾客去饭馆点菜、服务员上菜做类比,加深理解。 Hello报文:最常用的报文,其作用为建立和维护邻接关系,周期性地在使能了OSPF的接口上发送。报文内容包括一些定时器的数值、本网络中的 DRBDR以及已知的邻居。这类似于顾客去饭馆吃饭,先跟服务员打招呼。 DD报文:两台设备在邻接关系初始化时,用 DD报文描述本端设备的 LSDB,进行数据库的同步。报文内容包括LSDB中每一条 LSAHeaderLSAHeader可以唯一标识一条LSA),即所有 LSA的摘要信息。 LSA Header只占一条 LSA的整个数据量的一小部分,这样可以减少设备之间的协议报文流量,对端设备根据 LSA Header就可以判断出是否已有这条 LSA。在两台设备交换 DD报文的过程中,一台为Master,另一台为Slave。由Master规定起始序列号,每发送一个DD报文序列号加 1Slave方使用Master的序列号作为确认。

这里面,DD报文就好比饭馆里面的菜单,顾客先要看下菜单,了解有哪些菜。LSR报文:两台设备互相交换过 DD报文之后,需要发送 LSR报文向对方请求更新LSA,内容包括所需要的 LSA的摘要信息。

这类似于顾客看完菜单之后,他就知道想要点哪些菜了,就把X桌的菜单写好给服务员。

LSU报文:LSU报文用来向对端设备发送其所需要的 LSA或者泛洪本端更新的LSA,内容是多条 LSA(全部内容)的集合。为了实现 Flooding的可靠性传输,需要LSAck报文对其进行确认,对没有收到确认报文的 LSA进行重传,重传的LSA是直接发送到邻居的。

这类似于饭馆根据顾客点的菜单提供对应的菜。

LSAck报文:LSAck报文用来对接收到的 LSU报文进行确认,内容是需要确认的LSAHeader(一个 LSAck报文可对多个LSA进行确认)。

这类似于服务员上好菜以后,顾客还要确认下是不是他点的那些菜。

邻居关系建立和维持都是通过交换 Hello报文来完成的。OSPF设备发送的 Hello报文会携带有OSPF接口数据结构中保存的信息,来通告给邻居设备。而对于邻居设备来说,也会将这些学习到的信息维护一张邻居数据结构表中。通过display ospf peer命令可以了解这些邻居信息。

4 OSPF邻居信息

对于OSPF邻居字段信息的详细解释如下。

    1Area邻居所属的区域。
    2Interface与邻居相连的接口。
    3Router ID邻居的Router ID
    4Address邻居接口的 IP地址。
    5State邻居状态。
    6ModeDD交换进程中协商的主从状态。 -Nbr is Master,邻居是Master,主动发送 DD报文。 -Nbr is Slave,邻居是Slave,配合 Master发送DD报文。
    7Priority邻居的DR优先级。
    8DR邻居间指定路由器的 IP地址。
  1. 9BDR邻居间备份指定路由器的 IP地址。 10Dead timer邻居失效定时器。如果在超时时间内,还没有收到邻居发来的Hello报文,说明邻居已失效。 11Retrans timer interval重传LSA的时间间隔。如果在这个间隔内,没有收到

特性攻

邻居的LSA已经收到的确认报文,LSA会进行重传。 12Authentication Sequence认证序列号。

2.2 OSPF邻居状态机

相信大家也注意到了,邻居信息中也有个 State字段。不错,OSPF说的琴瑟和鸣大法正是相邻设备间通过不同的邻居状态切换,最后形成完全的邻接关系,完成 LSA信息的交互。

邻居状态机总共有8种状态: Down邻居会话的初始阶段。表明没有在邻居失效时间间隔内收到来自邻居设备的Hello报文。除了 NBMA网络OSPF路由器会每隔PollIntervla时间对外轮询发送Hello报文,包括向处于Down状态的邻居路由器(即失效的邻居路由器)发送之外,其他网络是不会向失效的邻居路由器发送Hello报文的。 Attempt这种状态适用于 NBMA网络,邻居路由器是手工配置的。邻居处于本状态时,路由器会每隔HelloInterval时间向自己手工配置的邻居发送Hello报文,尝试建立邻居关系。 Init本状态表示已经收到了邻居的 Hello报文,但是对端并没有收到本端发送的 Hello报文,收到的Hello报文的邻居列表并没有包含本端的Router ID,双向通信仍然没有建立。 2-way互为邻居。本状态表示双方互相收到了对端发送的 Hello报文,报文中的邻居列表也包含本端的Router ID,邻居关系建立。如果不形成邻接关系则邻居状态机就停留在此状态,否则进入Exstart状态。而且DR/BDR只有在邻居状态处于这个状态或者更高的状态才会被选举出来。 Exstart协商主/从关系。建立主/从关系主要是为了保证在后续的DD报文交换中能够有序的发送。邻居间从此时才开始正式建立邻接关系。 Exchange交换DD报文。本端设备将本地的 LSDBDD报文来描述,并发给邻居设备。 Loading正在同步LSDB。两端设备发送LSR报文向邻居请求对方的LSA,同步LSDBFull建立邻接。两端设备的 LSDB已同步,本端设备和邻居设备建立了完全的邻接关系。

其状态切换如下图所示。

5 邻居状态机

触发不同状态的输入事件如下表所示。其实,上面的邻居状态机并没有描述完全,只是描述了正常的切换过程,实际的状态机很复杂,会考虑其他很多异常情况,比如链路变化导致的邻居关系和邻接关系只见的切换、链路状态数据传输时出现错误导致重传等。

输入事件 详细事件描述
IE1 Start:以HelloInterval间隔向邻居设备发送 Hello报文,尝试建立邻居关系。仅NMBA网络适用。

下面介绍一下不同网络的邻接关系建立过程:广播网络

6 广播网络邻居关系的建立

      1.
      建立邻居关
      1. a. DeviceA的一个连接到广播类型网络的接口上激活了 OSPF协议,并发送了一个 Hello报文(使用组播地址 224.0.0.5)。此时,DeviceA认为自己是 DR设备(DR=1.1.1.1),但不确定邻居是哪台设备(Neighbors Seen=0)。
        1. b. DeviceB收到 DeviceA发送的 Hello报文后,发送一个 Hello报文回应给 DeviceA,并且在报文中的 Neighbors Seen字段中填入 DeviceARouter IDNeighbors Seen=1.1.1.1),表示已收到 DeviceAHello报文,并且宣告 DR设备是 DeviceBDR=2.2.2.2),然后 DeviceB的邻居状态机置为 Init
        2. 特性攻
      2. c. DeviceA收到 DeviceB回应的 Hello报文后,将邻居状态机置为 Exstart状态,下一步双方开始发送各自的链路状态数据库。在广播网络中,两个接口状态是 DR Other的设备之间将停留在此步骤。
2.
/从关系协商DD报文交
a. DeviceA首先发送一个 DD报文,宣称自己是 MasterMS=1),并规定序列号 Seq=XI=1表示这是第一个 DD报文,报文中并不包含 LSA的摘要,只是为了协商主从关系。M=1说明这不是最后一个报文。
为了提高发送的效率,DeviceADeviceB首先了解对端数据库中哪些 LSA是需要更新的,如果某一条 LSALSDB中已经存在,就不再需要请求更新了。为了达到这个目的,DeviceADeviceB先发送 DD报文,DD报文中包含了对 LSDBLSA的摘要描述(每一条摘要可以惟一标识一条 LSA)。为了保证在传输的过程中报文传输的可靠性,在 DD报文的发送过程中需要确定双方的主从关系,作为 Master的一方定义一个序列号 Seq,每发送一个新的 DD报文将 Seq加一,作为 Slave的一方,每次发送 DD报文时使用接收到的上一个 MasterDD报文中的 Seq
b. DeviceB在收到 DeviceADD报文后,将 DeviceA的邻居状态机改为 Exstart,并且回应了一个 DD报文(该报文中同样不包含 LSA的摘要信息)。由于 DeviceBRouter ID较大,所以在报文中 DeviceB认为自己是 Master,并且重新规定了序列号 Seq=Y
c. DeviceA收到报文后,同意了 DeviceBMaster,并将 DeviceB的邻居状态机改为 ExchangeDeviceA使用 DeviceB的序列号 Seq=Y来发送新的 DD

特性攻

报文,该报文开始正式地传送 LSA的摘要。在报文中 DeviceAMS=0,说明自己是 Slave

d. DeviceB收到报文后,将 DeviceA的邻居状态机改为 Exchange,并发送新的 DD报文来描述自己的 LSA摘要,此时 DeviceB将报文的序列号改为 Seq=Y+1。上述过程持续进行, DeviceA通过重复 DeviceB的序列号来确认已收到 DeviceB的报文。DeviceB通过将序列号 Seq1来确认已收到 DeviceA的报文。当 DeviceB发送最后一个 DD报文时,在报文中写上 M=0

NBMA网络

7 NBMA网络邻接关系的建立

1.建立邻居关系

a. DeviceBDeviceA的一个状态为 Down的接口发送 Hello报文后, DeviceB的邻居状态机置为 Attempt。此时,DeviceB认为自己是 DR设备( DR=2.2.2.2),但不确定邻居是哪台设备( Neighbors Seen=0)。
特性攻
b. DeviceA收到 Hello报文后将邻居状态机置为 Init,然后再回复一个 Hello报文。此时,DeviceA同意 DeviceBDR设备( DR=2.2.2.2),并且在 Neighbors Seen字段中填入邻居设备的 Router IDNeighbors Seen=2.2.2.2)。NBMA网络中,两个接口状态DR Other的设备之

间将停留在此步

    2.
    /从关系协商、DD报文交换过程同广播网络的邻接关系建立过程。
  1. 3. LSDB同步( LSA请求、LSA传输、 LSA应答)过程同广播网络的邻接关系建立过程。

点到点/点到多点网络与广播链路的过程相似,只是少了形成邻居关系后是否要进行邻接关系建立的判断这一步。

3. X网点大阵终成少年联手小将再踏征途

草长莺飞,醉柳垂堤,一晃竟过去数月有余。 X网点,点将台。网管于台上意气风发,心中却颇多感叹。他对台下众人道:“你们随本公南征北战,一路披荆斩棘,个个当有万夫莫敌之勇。然勇者有余,每每遇到 X网点这样复杂的网点,却也是无计可施。”他顿了一顿,似是将多年沉积的郁结之气一扫而空:“天佑我三军!幸遇军师!”“天佑我三军!幸遇军师!”“天佑我三军!幸遇军师!”白衣少年微微颔首,然后分别向网管和台下众将士盈盈一拜:

“臣本布衣,自耕野于草莽,苟全性命于乱世。然主公不以臣卑微,三顾臣于庐之中恐有负主公知遇之恩,臣日日殚精竭虑图破 X网点。时至今日,终有所成一为五行八阵图,定X网点OSPF路由运行机制二为巧计分四路,破不同类型网络三为奇才举能人,解广播链路/NMBA链路困局四为演七般变化,得十八样武器皆通众网元五为奏琴瑟和鸣,助邻居间互通LSA有无。接着他又朝网管再拜:“终得 X网点大阵练成,微臣在此已无必要,特请辞军师拜别主公。全军皆寂然“哈哈哈哈!”默然半晌,网管大笑三声,“天下无不散之筵席,军师智绝天下本公早想到军师会有离开的一天。众将士听令!”随之,他睥睨下首:“本公轿 此立誓,有我网管一日在,军师变是我军中上宾。三军诸将,尽听其号令!“三军诸将!尽听号令!“三军诸将!尽听号令!

翌日清晨“怎么,不与她道别吗?”白衣少年拍了拍白袍小将的肩膀“不了,见了徒增伤感罢了。”白袍小将定了半晌,然后摆了摆手,转身催马“大哥慢走!”明晃晃的人儿竟追了过来,见白袍小将慢慢停下,也随之停在

后边不远处那明晃晃的人儿仍穿着一身水绿衣裳,俏生生的立在那儿,满目含泪。白袍小低下了头,心中一阵苦涩她见他那副模样,亦知他心中不舍,遂用袖口擦了擦泪水,然后变展颜一笑道“大哥是要去做大事的人,自当不应有所羁绊,我不会追随大哥的。但是总有舍,所以想见大哥最后一面。……嗯。“大哥,我们一起呆了这么久,还不知道你的名字呢。“呵呵,很俗气的一个名字,叫华为S系列交换机。“一点都不俗气,我觉着特好听。大哥?“嗯?“不要低着头,我希望你看着我,记着我的模样,永远不要忘记我!大哥抬首

脉脉情眸柔似水,怡然俏立痴佳人

第三十三章问鼎 OSPF4)连绵网络拔地起,划区而治应运生

十四儿郎,少小离娘。牙牙学语,犹在耳旁。一战功成,美名远扬。孰知城下,枯骨高墙。吾儿吾儿,今在何方。每逢佳节,倍加思量。不期名就,锦帽貂裘。只盼来年,儿能还乡。

一个老兵低声地哼唱着乡谣,背靠着一截被砍断的木板,两眼空洞的望着前方。到处都是断壁残垣,战场上横七竖八的躺着很多尸体,中间来回穿梭着一些大夫,还在为伤者敷药包扎。生还的士兵们大都三三两两的围坐在奄奄一息的篝火旁,耷拉个脑瓜子,伸出一双大糙手取着暖。而还有一些人竟忍受的了这凛冽的寒风,和着冰冷的甲胄,伴随着那一声声乡谣,沉沉睡去。

1.扩疆域陷入死结左右双少初起争执

阿帕历开元32年,少帅军新立, OSPF被奉为左少帅,华为 S系列交换机被奉为右少帅。其后,于互联网上势如破竹,多个网点连连攻克,群雄震慑。阿帕历开元34年,著名的 Y网点之战拉开序幕。此网点幅员辽阔,东临蓝海,西邻僚邦,各方诸侯加入混战。战事已近一年,仍未有停歇的迹象,其间饿殍千里,伏尸百万,战况之惨烈,可见一斑。阿帕历开元34年冬,YA据点少帅军营帐。“欧少,这一战还要持续多久?”听到外边老兵的乡谣,这个仍内罩镫亮银甲,身披白色罗袍的少帅终于坚持不住向私下里以华少、欧少相称的那个人问了句。他原先英武俊朗的脸上现在已经胡子拉碴,眼睛里充斥着血丝。“华少,我也不知道,”那个从链路谷下来的少年,依旧白衣翩翩,但却掩饰不了他的疲惫之色,“Y网就像一块基石,成了预示着以后可以握有更多的网点,败了便是绊脚石,在互联网上元气大伤。所以,现在每一路诸侯大军都不会轻易撤离。”“可是,再这样下去,你我手下的这些将士们就吃不消了。”华少的声音有些沙哑。“再坚持坚持吧,应该快了。我们这一路走来,危难重重,最后无不化险为夷。哼,”欧少的话语中略带一丝嘲讽,“好比那一次,那个路将军,还不是靠你作为DR破了广播链路吗?RIP?嘿嘿,以为我不知道他与那个路将军以往的关系吗..”“欧少!”怒吼的声音打断了欧少继续往下说,“看看外面的兄弟!他们已经精疲力竭了!你没发现单靠你的这一个阵法已达极限了吗?莫不如与其他路由协议联合,多生几个阵法吧。难道还要为了我们一己之私搭上更多人的性命吗?!”

面对日益增大的OSPF网络,双少起先都颇为自得。但是渐渐地,他们却陷入了两难境地,因为随着OSPF网络规模的增大,渐渐出现了三个棘手的问题。

1 单区域运行的OSPF网络

1LSDB日益庞大。

随着网络规模日益扩大,当一个大型网络中的路由器都运行OSPF路由协议时,如果所有路由器都运行在同一个区域里,由于OSPF要求同一个区域的所有路由器都具有相同的链路状态数据库,所以此时路由器数量的增多会导致LSDB非常庞大,占用大量的存储空间,并使得运行SPF算法的复杂度增加,导致路由器 CPU负担很重。

2、信息传递效率降低。

在大型网络中,拓扑结构发生变化是不可避免的,网络会经常处于“动荡”之中,造成网络中会有大量的OSPF协议报文在传递,这些协议报文占用了业务报文的传输带宽,所以降低了网络的带宽利用率。更为严重的是,每一次变化都会导致网络中所有的路由器重新进行路由计算。

3、网络稳定性降低。OSPF单区域运行情况下,任何一台路由器的拓扑发生变化都会导致全网的LSA泛洪,网络中所有其他路由器都要重新计算刷新路由。这样势必会影响整个网络运行的稳定性。比如某条链路质量较差,处于闪断中,那么此时整个网络的路由就会长时间处于动荡之中,严重降低了网络的稳定性。

2.置死地破后而立划区治理应运而生

“嘿嘿嘿嘿……”欧少略微一顿,似是发现了什么好笑的事,既而放声大笑,苍白的面色上浮现了一抹潮红。“欧少,我知你心中愤懑,”华少也觉得刚刚有些过了,语气稍缓,“其实谁不想图得大业?但我们不能忘却初衷,让追随你我的那些兄弟白白丢了性命。我们能走到如今的地步,已经很好了。”“哈哈哈,哈哈哈哈 ……”欧少恍若未闻,笑声越来越大,离营帐较近的士兵也渐渐朝这边望来,很好奇左少帅何故大笑。“欧少?”华少心有忧色,难道欧少因我这话语被刺激到,疯了?“哈哈哈哈,对啊,一个阵法不行,为何不多摆几个阵呢?破后而立,阵阵连环,华少,你真是我命里的福星!”欧少手舞足蹈,兴奋莫名。“呃?你有驭域之策了?”华少松了口气,原来还没疯。既而反应过来他说的话,忙问道。“正是!传令官!”“在!”“传我手谕与诸位将军,分四路人马居天、地、玄、黄四位,与主力大军结主次连环阵!”

2.1 OSPF区域划分

OSPF说的主次连环阵其实就是将一个OSPF网络分为多个区域。如图2所示, OSPF将自治系统划分成不同的区域。区域是从逻辑上将路由器划分为不同的组,每个组用区域号(Area ID)来标识。区域的边界是路由器,而不是链路。一个网段(链路)只能属于一个区域,或者说每个运行OSPF的接口必须指明属于哪一个区域。

2 OSPF区域划分 OSPF划分的区域类型主要有骨干区域、标准区域以及特殊区域,详细如下:骨干区域 OSPF划分区域之后,并非所有的区域都是平等的关系。其中有一个区域其区域号(Area ID)是0,通常被称为骨干区域。骨干区域是连接所有其他 OSPF区域的中央区域,骨干区域负责区域之间的路由,非骨干区域之间的路由信息必须通过骨干区域来转发。对此, OSPF有两个规定:

所有非骨干区域必须与骨干区域保持连通;
骨干区域自身也必须保持连通。

标准区域

标准区域是最通用的区域,它传输区域内路由,区域间路由和外部路由。

特殊区域

OSPF为了进一步精细化管理LSA的传播,还划分了 4个特殊区域:

Stub区域Stub区域不允许自治系统外部的路由( Type5 LSA)在区域内传播。
Totally Stub区域Totally Stub区域既不允许自治系统外部的路由(Type5 LSA)在区域内传播,也不允许区域间路由( Type3 LSA)在区域内传播。
NSSA区域NSSA区域允许引入少量通过本区域的ASBR到达的外部路由,但不允许其他区域的外部路由AS-external-LSAType5 LSA)在区域内传播。
Totally NSSA区域Totally NSSA区域既不允许其他区域的外部路由ASE LSAType5 LSA)在区域内传播,也不允许区域间路由 Network-summary-LSAType3 LSA)在区域内传播。

关于OSPF特殊区域我们在后面的章节会有详细的介绍。

2.2 OSPF划分区域解决的问题

OSPF通过区域划分的方式将一个大型的网络分解成多个小区域进行管理,这实际上也是一种网络的分层拓扑结构,这种方式解决了OSPF网络的几个难题,详细如下:

1、解决 LSDB日益庞大的问题

划分区域以后,由于LSDB只需要在一个区域内进行维护,因此,大量的 LSA泛洪扩散就被限制在一个区域里面了。此时路由器仅仅需要和它所在区域的其他路由器具有相同的LSDB,而没有必要和整个OSPF域内的所有路由器共享相同的LSDB。也就是说,划分区域以后,在一个区域内的路由器将不需要了解他所在区域外部的拓扑细节。因此,在这种情况下LSDB的规模就会大大缩减,降低了对路由器内存和CPU的消耗。同时划分区域以后,可以充分利用路由策略、路由汇总、特殊区域等等各种手段进一步优化网络结构,进一步减少LSA的规模。

2、提高了信息传递效率

划分区域以后,区域之间只交换汇总的路由信息,而不是交换每条详细的路由,这样LSA泛洪的数量就会大大减小,用户维护路由表的协议报文数量就会减少,从而空余出更多的链路带宽供业务报文使用,这对提高信息传递的效率是有好处的。

3、提高了网络稳定性

3 划分区域后链路震荡的影响范围减小 OSPF网络划分区域以后,一个区域内参与 SPF算法的只有区域内的LSA,其他的区域的LSA不参与本区域的 SPF算法。例如如图3中,区域1有一条链路质量不好一直处于闪断中,所以区域1SPF算法会频繁的运算,但是这种影响仅局限在区域1内,其他区域不会因此而重新执行SPF算法,所以这种情况下,网络的震荡被限制在一个更小的范围内,提高了网络的稳定性。

2.3 区域间环路及防环方法

区域的划分解决了OSPF网络的诸多问题,然而任何事情都具有两面性,区域划分也不例外,划分区域后引入了一个需要设计者思考的问题,就是如何避免区域间环路的产生? OSPF在区域内部运行的是SPF算法,这个算法天然能够保证区域内部的路由不会成环。然而划分区域后,区域之间的路由传递实际上是一种类似距离矢量算法的方式,关注过问鼎OSPF1)的读者应该还记得 RIP协议就是一种基于距离矢量的协议,在问鼎OSPF1)中我们曾经指出这种方式容易产生环路。为了避免区域间的环路,OSPF规定直接在两个非骨干区域之间发布路由信息是不允许的,只允许在一个区域内部或者在骨干区域和非骨干区域之间发布路由信息。因此,每个区域边界路由器(ABR)都必须连接到骨干区域。

4 OSPF区域间环路假设OSPF允许非骨干区域之间直接传递路由,则可能会导致区域间环路。例如图4所示的网络中,骨干区连接到网络 N,这个路由信息会传递至区域 1,假设非骨干区之间允许直接传递路由信息的话,那么这条路由信息最终又被传递回去,形成区域间的路由环路。为了防止这种区域间环路,在图4这种网络拓扑中,OSPF禁止Area1Area3,或者Area2Areea之间直接交互路由信息,而必须通过 Area0这个骨干区域进行路由交互。这样就能防止区域间环路的产生。

2.4 OSPF路由器的角色

划分完OSPF区域之后,根据路由器在不同的区域位置,相应的可以将 OSPF域内的路由器划分为如下几种角色,详细如表1所示。

路由器角色 含义
区域内路由器 该类路由器的所有接口都属于同一个 OSPF区域。

1 OSPF路由器类型

2.5 OSPF区域划分案例

5 OSPF单区域运行案例6 OSPF区域划分案例

组网及业务描述

如图5所示,四台路由器 R1R2R3以及R4同时运行OSPF,所有路由器运行在一个单区域Area0内。如图 6所示,四台路由器运行在不同的OSPF区域内,R1R2属于Area 1R2R3属于Area 0R3R4属于Area 2。四台路由器分别都用各自的LoopBack0作为各自的 Router ID

关键配置

设备 OSPF单区域运行关键配置 OSPF划分区域关键配置
R1 # ospf 1 router-id 10.1.1.1 area 0.0.0.0 network 192.168.12.0 0.0.0.255 # # ospf 1 router-id 10.1.1.1 area 0.0.0.1 network 192.168.12.0 0.0.0.255 #
R2 # ospf 1 router-id 10.2.2.2 area 0.0.0.0 network 192.168.12.0 0.0.0.255 network 192.168.23.0 0.0.0.255 # # ospf 1 router-id 10.2.2.2 area 0.0.0.0 network 192.168.23.0 0.0.0.255 area 0.0.0.1 network 192.168.12.0 0.0.0.255 #
R3 # ospf 1 router-id 10.3.3.3 area 0.0.0.0 network 192.168.23.0 0.0.0.255 network 192.168.34.0 0.0.0.255 # ospf 1 router-id 10.3.3.3 area 0.0.0.0 network 192.168.23.0 0.0.0.255 area 0.0.0.2

实验效果1、查看划分区域前后 R1上的LSDB信息,详细如下

7 单区域运行的时候R1LSDB信息

8 划分区域后,R1LSDB信息通过对比可以看出,划分区域之前R1上参与区域内路由计算的LSA7条,而划分区域之后R1上参与区域内路由计算的LSA3条,另外两条描述的是区域间路由,不参与本区域的路由计算。在更大规模的网络中,划分区域减少LSDB的数量效果更明显。可见通过划分区域,可以达到降低LSDB规模,减少LSA泛洪的作用。

2、划分区域后以 R2为例查看OSPF的接口信息,详细如下:

9 划分区域后以R2为例查看OSPF的接口信息可以看到,OSPF的区域划分是基于接口的,同一个路由器的不同接口可以属于不同的区域,每个运行OSPF的接口必须指明属于哪一个区域。

3、划分区域后查看 R1R2LSDB信息,详细如下:

10 划分区域后查看R1LSDB信息

11 划分区域后查看R2LSDB划分区域后对比R1R2LSDB信息可以看到, R1上只有Area1LSDB信息,R2上同时有Area0Area1LSDB,这是因为 R2作为区域边界路由器( ABR责传递区域间路由信息,所以ABR必须同时知道骨干区和标准区域的路由信息

3.再遇难题用虚连接巧解 Y网点终战一触即发

“欧少,你的这个连环阵确实天衣无缝,此役胜算的确大了许多。但是,我总感觉有一点不妥的地方。”华少正目不转睛的盯着桌子上的沙盘,眉头紧皱。“华少,莫要太担心,成大事都需伴着一定的风险。 ”欧少一副胸有成竹的样子。“不对,你看!这一处,没有设备与我们的主力大军有连接之处!”华少顺手一指,的确那一处区域,确实没有与骨干区域有连接的地方。“这一处么,我已经想到了。”欧少不紧不慢,吐出了一句话。

OSPF随后就跟华为S系列交换机说出了解决的方法-----虚连接。虚连接( Virtual link)是指在两台 ABR之间通过一个非骨干区域建立的一条逻辑上的连接通道。

1、产生原因

根据RFC 2328,在部署OSPF时,要求所有的非骨干区域与骨干区域相连,否则会出现有的区域不可达的问题。但是在实际应用中,可能会因为各方面条件的限制,无法满足所有非骨干区域与骨干区域保持连通的要求,此时可以通过配置 OSPF虚连接来解决这个问题。

12 OSPF非骨干区没有连接骨干区如图12中所示,Area2没有连接到骨干区Area0,所以 RouterA并不能扮演ABR的功能,因此不会向 Area2生成Area0Network1的路由信息,所以RouterB上没有到达Network1的路由。此时可以考虑部署虚连接来解决这个问题。

2、实现原理

13 OSPF虚连接实现原理如图13所示,通过虚连接,两台 ABR之间直接传递 OSPF报文信息,两者之间的 OSPF设备只是起到一个转发报文的作用。由于 OSPF协议报文的目的地址不是这些设备,所以这些报文对于两者而言是透明的,只是当作普通的IP报文来转发。3、规划建议

虚连接相当于在两个ABR之间形成了一个点到点的连接,因此,虚连接的两端和物理接口一样可以配置接口的各参数,如发送Hello报文间隔等。配置虚连接的时候需要注意如下两点:

虚连接必须在两端同时配置方可生效。
为虚连接两端提供一条非骨干区域内部路由的区域称为传输区域(Transit

Area)。可以看到,虚连接的存在增加了网络的复杂程度,而且使故障的排除更加困难。因此,在网络规划中应该尽量避免使用虚连接,设计者应该仅仅把它用来作为修复无法避免的网络拓扑问题的一种临时手段。虚链路可以看作是一个标明网络的某个部分是否需要重新规划设计的标志。

“如何?你还有什么可担心的么?”欧少边说着边往帐外走去华少听完他所说的,又看了沙盘半晌,直到发现再无边边角角有问题的地方,默然点头。但是他心中的那一丝不妥却仍未有何消减,却也只能跟着走出帐外三军将士,尽皆肃立Y网点大战几近一年,我们在这耗的太久了,也知道诸位将士耗不起了。”少顿了一顿又对三军将士道,“而今终得破敌连环阵,诸位,成败在此一举DRABRASBR“末将在!“得我烽火敕令,率军攻敌!“是!

但见得风云色变,尚不知鹿死谁手。大战,一触即发

第三十四章问鼎 OSPF5)内外疾行烽火令,锦绣山河尽囊中

上一期我们讲到网络中Y网点大战一触即发,此战将是决定中原鹿死谁手的关键一战,夜幕已经降临,军中将士仍然在来回穿梭为即将来临的大战做最后的准备。营帐中华少和欧少正在对照作战沙盘争论本次作战的战略战术。“华少,在你看来Y网点这一战我军的软肋在哪里?”欧少面色凝重的问。华少似乎早已考虑过这个问题,不慌不忙地说到:“在我看来,本次作战十分关键,这一战将决定我们是否能够称霸中原,将决定我们能否把锦绣山河尽收囊中,将士们行军打仗这么些年建功立业、改换门庭的机会就在这一战。就实说,我军数量上占优势,地势上也占上风,然而最大的软肋却是本次作战是多战区、多方阵联军作战,战胜的关键在于是否能够协调各方作战的步调,说白了就是怎么解决多个战区之间互相通报作战方略的问题。欧少,你师出名门,看你是否有比较高明的战略?” OSPF对于华少的分析还是非常认同的,他觉得华少点点数语却道出了此次作战的关键所在。欧少转身对华少道:“昨夜月明星稀,我卧在榻上想起了老师教给我的七色烽火阵法,运行此阵法时军中无将帅,所有将士全部根据七种烽火令的指挥协同作战。这样,多战区、多方阵作战的情况下战力上和作战速度上将会有极大的提升,如果全军将士熟练掌握这七种烽火令,可保此战八成以上胜算。”华少听了欧少的叙说顿时精神大振“快快详细拆解,说与我和各位将领听听”

OSPF所说的七色烽火阵法即是指的不同类型的 LSA前面曾经提到OSPF划区而治,每个区都维护自己独立的 LSDB,网络中的路由设备也会被定义为不同的角色。同时OSPF最核心的LSA也要根据路由设备的类型被分门别类。下面我来逐个介绍一下这七种烽火令的使用方法,也请华少告诫军中所有将士,务必熟练掌握七种烽火令含义及使用方法。

1 划分区域的OSPF网络如图1是一个被划分区域的OSPF网络:

所有设备配置的接口 IP地址及Rouer ID如图所示;
R4上配置静态路由,在 R4上将这个静态路由 importOSPF进程。我们看下R2设备上的LSDB信息,如图2所示。

2 R2设备上的LSDB信息其中Tpye就是指LSA的类型,在R2LSDB信息中有: Router LSANetwork LSASum-Net LSASum-Asbr LSA以及External LSA。这已经占据了 7种主要的LSA类型中的5种,下面我们将详细介绍。

1.赤色烽火令Type1Router-LSA

Router-LSA是一种最基本的 LSA,即Type 1 LSA,中文名路由器LSAOSPF网络里的每一台路由设备都会发布Type 1 LSA。这种类型的LSA主要的目的是做自我介绍,告诉同区域其他路由设备它在此区域中所有的链路状态以及开销。以R2为例,如图3R2Area0Area1会分别发布 Router-LSA

将运行OSPF的网络比作为一个部落,部落划分了很多区域比作村子。那Type 1 LSA就是村子里村民做的自我介绍,这个信息只在这个村子传播,每个村民都了解该村其他村民的信息。

3 Type 1 Router-LSA我们来详细看一下Router LSA中包含的信息。如图 4,这是通过抓包软件看到的 R2GE0/0/1接口上泛洪的一条LSA

4 Router-LSA信息 LSA报文主要LSA头部LSA信息字段。所有类型LSA报文,LSA头部包含的字段都是一样的,唯一不同的Link state ID字段含义。LSA头部中,我们主要关心以下三个字段

Link-State Advertisement TypeLSA
Link state ID:链路状ID。在Router-LSA中代表始发LSA的设备Router ID,这里即是R2自己Router ID
Advertising Router:通告路由器

Router-LSA的信息字段有三个,用于将自己连接的所有链路的状况以及开销告诉该LSA泛洪区域的其他路由设备。该LSA描述的信息就是链路类型为一个传送网络( Transit),DR接口的IP地址为 192.168.23.2ID),和网络相连的通告路由器接口的IP地址是192.138.23.1Data),到达该网络的开销是1Metric)。(路由设备就是根据这些链路状态的描述从而生成拓扑)。其中,Link Type4种类型,并且 IDData的值会根据 Link Type而有不同:

1-P2P(点对点):此时 Link ID表示邻居路由设备的 Router IDData表示和网络相连的通告路由器接口的IP地址。
2-Transit(传送网络):此时 Link ID表示DR接口的 IP地址, Data表示和网络相连的通告路由器接口的IP地址。
3-Stub(末梢网络):此时Link ID表示IP网络或子网地址, Data表示网络的IP地址或子网掩码。
4-Virtual Link(虚链路):此时 Link ID表示邻居路由设备的 Router ID

Data表示通告路由器接口的 MIB-II ifIndex值。我们可以直接通过命令行查看R2LSDB中所有的 Router-LSA,如图5所示。

5 R2LSDB中所有的 Router-LSA根据图中对Area0的详细描述, Area1中的LSA又分别是什么含义呢? Area1中有两条Router LSA:一条通告路由器是R2,并告知本区域其他路由设备与该区域相连的接口的IP地址为192.168.12.2;另一条通告路由器是 R1,告知本区域其他路由设备与该区域相连的接口的IP地址为 192.168.12.1。在同一区域中的路由设备,都会收到该区域路由设备发出的自我介绍。

2.橙色烽火令Type2Network-LSA

R2LSDB中第二种 LSA类型是 Network-LSA也就是Type2 LSA,中文名网络 LSA。如图6所示,Network-LSADR发布,描述本网段的链路状态,也是在所属的区域内传播。

假设DR是一个村子的村长,负责描述与之交互的所有村民的信息。并将这些信息在整个村子里传播。

6 Type2 Network-LSA我们来详细看一下Network LSA中包含的信息,如图 7

7 Network LSA信息前面说过, LSA头部的字段都是一样的,只是 Link state ID字段的含义不同。在 Network-LSA中,Link-State ID字段的含义是 DR接口上的IP地址。在Network LSA中列出了所有与 DR形成完全邻接关系的路由设备Router ID,有没有觉得一张以DR为中心的拓扑已然在脑袋中形成!我们来看看R2LSDB中所有的Network--LSA。(在这之前,各位可以先想象一下,R2上应该有几条Network-LSA呢?)

8 R2LSDB中所有的 NetworkLSA通过图8可以看到,R2上面有两条NetworkLSA,一条是 Area0内的DRR3)产生的,另外一条是 Area1内的DRR1)产生的。通过Type 1 Router LSAType2 Network-LSA在区域内洪泛,使区域内每个路由设备的 LSDB达到同步,这就解决了区域内部的通信问题。那区域之间的通信怎么解决呢?

3.黄色烽火令Type3Network-Summary-LSA

接下来我们来看看黄色烽火令,即 Network-summary-LSA,也叫Type3 LSA,中文名网络汇总 LSA

Network-summary-LSA由区域边界路由器 ABR发布,用来描述区域间的路由信息,ABRNetwork-summary-LSA发布到一个区域,通告该区域到其他区域的目的地址。实际上就是将区域内部的 Type1 Type2的信息收集起来以路由子网的形式扩散出去,这就是 Summay的含义,如图 9所示, R2作为ABR,将Area0Area1中的路由信息分别发布对方区域。

ABR相当于通信联络员,负责村子与村子之间的通信。 ABR将一个村子的 Type1 Type2的信息进行汇总形成路由信息传递到另外一个村子,另外一个村子同样将该村Type1 Type2的信息进行汇总形成路由信息传递到这个村子。

9 Type3 Network-summary-LSA我们先看看Network-summary-LSA中包含的信息。如图 10,这是在R2GE0/0/1上发布的一条Network-summary-LSA

10 Network-summary-LSA信息在Network-summary-LSA中,Link-State ID字段代表该 LSA所描述的网络的网络地址。从LSA的信息中可以看出,该 LSAR2发布(10.2.2.2),可以到达

192.168.12.0,掩码为255.255.255.0的网络,代价为 1。由此可以看出,R2Area1中的网络地址在Area0中发布,从而可以让Area0中的路由设备知晓去该网络的路径,实现区域间的通信。我们再通过命令来看看R2LSDB中所有的Network-summary-LSA11

11 R2LSDB中所有的 Network-summary-LSA

由图11可以看到,R2LSDB中,Area0包含了到达 192.168.34.0以及192.168.12.0的网络,Area1包含了到达 192.168.23.0192.168.34.0的网络。不知大家是否注意到了, Area0Area1中,同样是到达 192.168.34.0的网络,但通告路由器却是不同的,这是什么原因呢?原来如果ABR收到来自同区域其它 ABR传来的Type 3 LSA后,会重新生成新的 Type3 LSAAdvertising Router改为自己),然后继续在整个 OSPF系统内扩散。江湖小贴士:如果 ABR在与它本身相连的区域内有多条路由可以到达目的地,那么它将只会始发单一的一条网络汇总 LSA到骨干区域,而且这条网络汇总 LSA是上述多条路由中代价最低的。

4.绿色烽火令Type4ASBR-Summary-LSA

R2 LSDB中还有一种叫ASBR-summary-LSA,也叫 Type4 LSA,中文名为 ASBR汇总LSA

如图12所示,该类型LSA也是由ABR发布,描述到 ASBR的路由信息,并通告给除ASBR所在区域的其他相关区域。

ASBR也是通信联络员,与 ABR不同的是,ASBR是部落间的通信员,负责部落间的通信。一个部落所有村子里的村民如果想要和其他部落通信,必须经过 ASBRASBR-summary-LSA的作用就是告诉非 ASBR所在村的其他村的村民, ASBR在哪,怎么才能去 ASBR

12 Type4 ASBR-summary-LSA13R3R2发布的一条 ASBR-summary-LSA,此处的Link State ID表示该LSA所描述的ASBRRouter ID10.4.4.4),即R4,发布该LSA的路由设备是 R3

10.3.3.3),R3到达R4的代价是1

13 ASBR-summary-LSA信息我们可以看下R2LSDB中的ASBR-summary-LSA信息,如图14所示。

14 R2LSDB中的ASBR-summary-LSA

5.青色烽火令Type5AS-external-LSA

R2LSDB中,还有最后一种LSAExternal,即AS-external-LSA,也叫Type5 LSA,中文名为AS外部LSA顾名思义,此种LSA是描述到AS外部的路由,由自治系统边界路由器ASBR发布,在整个AS中泛洪(除了 STUB区域和NSSA区域,后面章节会详细介绍到)。如图 15R4作为ASBR发布了一条OSPF AS到外部目的网络的路由信息。

这种很容易理解了,就是部落内任意一个村民到该部落外部的路由。由部落间通信联络员ASBR发布。

15 Type5 AS-external-LSA看下AS-external-LSA中包含的信息,如图 16所示。

16 AS-external-LSA信息在AS-external-LSA中,Link State ID代表外部网络目的 IP地址,转发地址是指到达该外部网络的数据包应该被转发到的地址。此处的转发地址为 0.0.0.0,意思是数据包将被转发到始发ASBR上。如图17R4LSDB中的AS-external-LSA信息。

17 R4LSDB中的AS-external-LSA

6.紫色烽火令Type7NSSA-LSA

目前为止,我们一共讲解了5LSA,分别是Router-LSANetwork-LSANetwork-summary-LSAASBR-summary-LSAAS-external-LSA。还有一种比较特殊的LSAType7 NSSA LSA,接下来我们就一起看下。我们将文中开头的组网图,Area2配置为NSSA区域。看下R4LSDB,如图18,该LSDB中包含了两条NSSA LSA,其中一条就是 ASBR始发的。江湖小贴士:不知道大家是否还记得,我们在第四篇时介绍过几种特殊区域。 NSSA区域允许本区域ASBR引入的外部路由在该区域内传播,但不允许其他区域引入的外部路由在本区域内传播。

18 配置NSSA区域后R4LSDB19R4 GE0/0/0接口上始发的NSSA LSANSSA LSA所有的字段与 AS-external-LSA字段均相同。

19 NSSA LSA但他们泛洪的区域不同,AS-external-LSA是在整个 AS泛洪,而 NSSA LSA仅仅是在NSSA区域中泛洪。如图20,从R3LSDB中可以看出,NSSA LSA只存在于Area 2NSSA区域)中。

20 配置NSSA区域后R3LSDB在图18 R4LSDB中,还有一条 NSSA LSALinkState ID0.0.0.0),这是在 ABRR3)上会自动产生缺省的 Type7 LSANSSA区域,关于 OSPF中的缺省路由后续会详细讲解。 NSSA区域允许引入外部路由,但外部路由信息的 NSSA LSA只能在本区域泛洪,那外部路由如何能传递给整个自治域呢?大家可以看下R3LSDB即图20,在“AS External Database”中,有一条 Tpye5AS-external-LSA,目标网络是 10.44.44.44,通告路由器是R3,这是因为Type7 LSAABRR3)上转换成 Type5 LSA,并且泛洪到骨干区直至整个自治域中。这样就将外部路由引入到了除NSSA区域的其他区域。为了证实这一点,我们再看下R1上的LSDB,如图 21所示。

21 配置NSSA区域后R1LSDB R1上同样有一条Type5LSA,目标网络是10.44.44.44,通告路由器是R3。欧少似乎有种如释重负的感觉道,我要说的七色烽火阵法就是这样一个运行机制,众将士都听明白了吗?华少第一个急切的问:“你命名说的是七色烽火阵法,这才说了6种烽火令嘛,缺了一种蓝色烽火令 Tpye6嘛,此战至关重要,欧少你可勿要马虎大意啊。”欧少缓缓道:华少莫要着急,我在山中听老师讲解时确实是七色烽火阵法,只不过这蓝色烽火令Tpye6老师也没给我看过。老师只说这蓝色烽火令Tpye6 LSAgroup-membership-LSA,是在MOSPF中用于标识组播组成员用的。可惜MOSPF基本被淘汰。另外,还有 Type9/Type10/Type11,用于 OSPF的扩展的通用机制,此处就不介绍了。听完欧少的讲解,华少及众将士有种豁然开朗的感觉,特别是华少,对此次作战的信心大增,大有跃跃欲试的冲动。众将士也是你一言我一语开始躁动起来。欧少见状说:众将士莫要躁动,我这里有几个老师赠予我的铭牌,上面详细罗列

特性攻

了这七色烽火阵法的使用方法,众将士请各领一个回去带全军兄弟们操练该阵法,此战胜负在此一举了,欧少深深一躬到底,拜托各位将士了。……

7.无声奇战旷古未闻 ,锦绣山河尽收囊中

寥寥数日,大战果然开打,然而这却是一场旷古未闻的奇战、恶战。大战开始却听不到任何鸣金声,没有任何杀喊声,军中仿佛没有了将帅一般,唯见朦胧月下各色烽火此起彼伏,而将士们却像入了魔一样听从这七色烽火的指挥打仗。对方军中将士直感叹这打法真是奇特、真是从未见过。将士们跟随七色烽火令的指挥神出鬼没一般冲入敌军营地,及至东方发白,战事逐渐结束。

华少兴奋撤回将士们,兴冲冲的来到帐中,“欧少,你这阵法真是奇特,运筹帷幄之中却决胜千里之外,我们几大战区联军作战全都大获全胜,此次作战中原各地全数拿下,我们扫平四海,称霸中原的日子快到了!

第三十五章问鼎 OSPF6)因地巧施张良计,宏图霸业指日统

寒星似铁,如钩月,几度离人肠。醉卧沙场,红尘叹,何苦问苍茫。和歌剑舞,自嘲弄,凭添一惆怅。但却为何,忘忧梦,总拂过绿裳。

俊俊的人儿准是梦到了什么好事,平日那脸上的一丝沧桑,那眉间的一抹忧愁都化开了。真好看。“阿兰,再瞧你就要成一朵花了。”突然从背后冒出来一句话,吓了阿兰一跳。待她看清来人是谁,正待臭骂那白衣无赖,那个华阿哥叫他做欧少的人一顿,那人却做了一个噤声的手势,然后正色道:“阿兰,和你阿爹谈的如何了,边疆地域特殊,我们不能像一般的中原地域去征讨这里。而你们世世代代居于此,我们亦不希望打破此间平和。”“说了,我阿爹是个明事理的人,他知道什么对族人好,什么对族人不好,只不过多了个封号,却还是我们自己管自己。”阿兰说道,“现如今他正在联络其他几个部族的人,这需要些时日。”“哦..那就好。”欧少长吁了一口气,由我所定的四个特殊区域,分封这四族为镇守,应无后顾之忧了。他看了看远处的华少,又对阿兰认真的道:“阿兰,其实你的华阿哥已经有喜欢的人了,你知道么?”“知道……”阿兰咬了咬嘴唇,像他这样的人,除了喜欢的人,能有什么让他化

不开忧愁的呢?“但我不在乎,我只做华阿哥的一个小阿妹就好。”欧少正待再劝她,但见她神色郁郁,却又有点不忍。静立半晌,欧少转身欲走。突地又想起了一件事,回头对她说:“哦,对了,刚你瞧的像个痴人花。”“痴人花?痴人.花?吃人花?!回来!你给我回来!”待得反应过来,哪里还有白衣飘飘的影子,她却也只得恨恨的跺了跺脚……

      1.
      因地巧设特殊区域,引四族襄助大业
    1. 在上一期问鼎OSPF中,我们介绍了 OSPF的各种类型的LSAOSPF网络依靠各种不同类型的LSA完成LSDB的同步,从而计算出整个网络的拓扑结构。然而,对于OSPF区域,并不每种LSA都是必须有的,有些比较特殊的区域需要有一些特殊的手段进行管理,本期我们详细介绍一下OSPF的特殊区域,以及不同特殊区域里LSA的管理规则,也就是华少与小阿妹商讨的四族自治四个特殊区域的事
    1.1
    OSPF为什么需要划分特殊区域

1OSPFStub区域和 Totally Stub区域的由来

1 OSPFStub区域和 Totally Stub区域

我们来看一下图1所示的网络, OSPF划分了Area 0Area 2,同时在 Area 0内有的 ASBR引入了外部路由。通常,为了保证网络的路由可达性,可能把网络的各个角落的路由全都发布进了OSPF,此时虽然各路由设备都能够到达网络的各个角落了,但是如果网络越来越大,设备越来越多,那么每台设备的路由表项就会越来越大,而维护一个大规模的路由表项是需要消耗很多 CPU及内存资源的。特别是对于一些边缘区域,设备性能可能比较低,如果也需要维护这么大规模的路由表项的话可能是一种巨大的压力。从网络优化的角度考虑,我们通常在保证网络可达性的同时尽量减小路由表项的规模,尽量减少网络中 LSA报文的泛洪。对于图 1所示的网络, Area 2如果作为一个常规区域,那么可能存在Type1Type2Type3Type4Type5共计5中类型的LSA,但是实际上Area 2中的设备真的需要这么多种类型的 LSA吗?对于 Area 2中的路由器,无论他们想到达的域外的哪个网络,都必须首先到达到 ABR路由器,也就是说这个时候 Area 2中的路由器并不需要了解外部网络的细节,它仅需要通过ABR路由器到达外面的世界就可以了。这种情况下,就产生了 OSPF的第一种类型的特殊区域—— Stub区域。配置 Stub之后,自治系统外部的路由就不会在本区域内传播了,这样就减少了 Area 2LSA数量。细心的读者可能会问一个问题,如果 Area 2中的路由器想进一步减少自己的路由表项的规模呢?仔细分析一下可以看出,对于 Area 2中的路由器来说,其实区域间的明细路由它也没必要都了解,仅保留一个出口让 Area 2中的路由器的数据包能够出去就足够了。这就产生了OSPF的第二种类型的特殊区域—— Totally Stub区域,也叫完全 Stub区域。配置了 Totally Stub区域以后,既不允许自治系统外部的路由在区域内传播,也不允许区域间路由在区域内传播。这样就能达到进一步减少区域内LSA数量的目的。

2OSPFNSSA区域和 Totally NSSA区域的由来

2 OSPFNSSA区域和 Totally NSSA区域如图 2所示,假设 Area2原来作为一个Stub区域运行,但是某一天有个外部网络需要通过Area2接入到这个 OSPF网络。也就是需要将自治域外部路由引入并传播到整个OSPF自治域中,此时可以在 RTA上将外部路由注入到OSPF域,但是这种配置将使RTA成为ASBR,因此,Area2也就不是Stub区域了。针对这种场景, OSPF定义了NSSA区域( Not-So-Stubby-Area NSSA),为了容易记忆,大家可以把它叫做“不那么 Stub区域”,意思是在 Stub区域的基础上做了一定的变通(允许引入外部路由了),所以就变得“不那么 Stub”了。类似的,如果想进一步减少 LSA数量,可以配置成Totally NSSA区域。

1.2 OSPF特殊区域详解

上一小节我们介绍了OSPF的四种特殊区域的产生背景,但是各位读者是否还是对OSPF特殊区域有点云山雾绕的感觉?没关系,接下来我们结合一个实验,来详细介绍一下OSPF4种特殊区域的LSA及路由管理规则,同时介绍一下不同区域的缺省路由产生规则。

3 OSPF特殊区实验网络拓扑组网如错误!未找到引用源。所示:

所有设备都配置LoopBack0,地址如图 3所示,该地址不在 OSPF内发布,只作为OSPF Router ID使用;
R4上配置LoopBack1接口地址作为测试网段,在 R4上将这个直连路由importOSPF进程,通过路由策略控制只引入这一条直连路由。
1)标准区域按照上述拓扑,完成关键配置,此时没有划分特殊区域, Area1Area2都是标准区域,我们看一下标准区域的路由及LSA管理规则。以 R1为例,路由表及LSDB如下:
R1的关键配置# ospf 1 router-id 10.1.1.1 area 0.0.0.1 network 192.168.12.0 0.0.0.255 # R2的关键配置# ospf 1 router-id 10.2.2.2 area 0.0.0.0 network 192.168.23.0 0.0.0.255 area 0.0.0.1 network 192.168.12.0 0.0.0.255 #
R3的关键配置# ospf 1 router-id 10.3.3.3 R4的关键配配置# acl number 2000

4 Area1为标准区域的时候 R1IP路由表从图4可以看到,此时 R1的路由表中有OSPF区域间路由,并且有一条自治系统外部路由10.44.44.44/32

5 Area1为标准区域的时候 R1LSDB可以看到,此时 R1LSDB里面有Type1Type2Type3Type4Type5LSA。下面根据上述实验详细讲解一下不同特殊区域的缺省路由发布原则。

2Stub区域

6 Stub区域的LSA管理规则 Stub区域不允许自治系统外部的路由( Type5 LSA)在区域内传播,也不允许到达ASBRType4 LSA在区域内传播。因此这些区域中路由设备的路由表规模以及路由信息传递的数量都会大大减少。这样一来 Stub区域内的路由器除了 ABR外没有自治系统外部路由,如果它们想到自治系统外部时该怎么办呢?为保证到自

治系统外的路由依旧可达,Stub区域的ABR将生成一条缺省路由,并发布给 Stub区域中的其他非ABR路由器。一般情况下,Stub区域位于自治系统的边界,是只有一个 ABR的非骨干区域。配置Stub区域的时候需要注意:

骨干区域不能配置成 Stub区域
Stub区域内不能存在ASBR,因此自治系统外部的路由不能在本区域内传播
虚连接不能穿过Stub区域下面我们来通过实验验证一下。配置Area1Stub区域,需要做一些配置更改具体如下
R1的配置修改为如下 R2的配置修改如下
# #
ospf 1 router-id 10.1.1.1 ospf 1 router-id 10.2.2.2
area 0.0.0.1 area 0.0.0.0
network 192.168.12.0 0.0.0.255 network 192.168.23.0 0.0.0.255
stub area 0.0.0.1
# network 192.168.12.0 0.0.0.255
stub
#

实验效果:

7 Area1Stub区域的时候 R1IP路由表通过图4和图7的对比可以看到,配置Area1Stub区域以后,R1上自治系统外部路由消失了,取而代之的是一条 ABRR2)自动下发的缺省路由,是 Type3 LSA描述的。

8 Area1Stub区域的时候 R1依靠缺省路由的指引到达 AS外部如图8所示,此时R1上虽然没有了到达10.44.44.44/32的明细路由,但是依然能ping10.44.44.44/32这个地址,这是因为此时有一条 ABR自动下发的缺省路由,这条缺省路由能够指引R1的数据流到达自治系统外部。

9 Area1Stub区域的时候 R1LSDB可以看到,此时 Type5 LSAExternal)、Type4 LSASum-Asbr)已经消失,取而代之的是一条ABRR2)自动下发的缺省路由Type3 LSA。此时R1上仅有

Type1Type2Type3以及Type3缺省路由这几种 LSA

3Totally Stub区域

10 Totally Stub区域的LSA管理规则 Stub区域能够起到减少区域内路由表项规模的作用,但是这似乎还不够彻底,实际上也可以不关心区域间的路由细节,而仅预留一个到达其他区域的出口即可。这种情况下可以将这个区域配置成Totally Stub区域。 Totally Stub区域既不允许自治系统外部的路由在区域内传播,也不允许区域间路由在区域内传播。区域内的路由设备必须通过ABR学到自治系统外部和其他区域的路由。实现方法是配置 Totally Stub区域后,ABR会自动产生一条缺省的 Summary LSAType3 LSA)通告到整个 Totally Stub区域内。这样,自治系统外部的路由和其他区域间的路由都可以通过ABR到达。现在将Area1配置为Totally Stub区域。将配置修改为如下: 实验效果:

R1的配置修改如下 R2的配置修改如下
# #
ospf 1 router-id 10.1.1.1 ospf 1 router-id 10.2.2.2
area 0.0.0.1 area 0.0.0.0
network 192.168.12.0 0.0.0.255 network 192.168.23.0 0.0.0.255
stub area 0.0.0.1
# network 192.168.12.0 0.0.0.255
stub no-summary
#

11 Area1为完全Stub区域的时候R1IP路由表通过图7和图11的对比可以看到, Area1为完全Stub区域的时候R1上外部路由和区域间路由消失了,取而代之的是一条 ABRR2)自动下发的缺省路由,是 Type3 LSA描述的。

12 Area1为完全Stub区域的时候R1依靠缺省路由的指引到达AS外部此时R1上虽然没有了自治系统外部路由,也没有了区域间的路由,但是ABR会自动下发一条缺省路由,用于指引R1的数据流到区域外部或者自治系统外部,所以此时R1仍然能够ping10.44.44.44这个地址, R1仍然能够全网可达。

13 Area1为完全Stub区域的时候R1LSDB可以看到,此时 R1LSDB里面Type5 LSAExternal)、Type4 LSASum-Asbr)、以及描述区域间路由的Type3 LSA都已经消失,取而代之的是一条 ABRR2)自动下发的缺省路由Type3 LSA

4NSSA区域

14 NSSA区域的LSA管理规则 NSSA区域允许引入少量通过本区域的ASBR到达的外部路由,但不允许其他区域的外部路由ASE LSAType5 LSA)在区域内传播。 ABR自动产生一条缺省的 NSSA LSAType7 LSA),通告到整个 NSSA区域内。这样,除了某少部分路由通过NSSAASBR到达,其它路由都可以通过NSSAABR到达。在 ASBR上手动通过命令进行配置,使 ASBR产生一条缺省的NSSA LSAType7 LSA),通告

特性攻

到整个NSSA区域内。这样,外部路由也可以通过本区域NSSAASBR到达。 Type7 LSA缺省路由不会在 ABR上转换成Type5 LSA缺省路由泛洪到整个 OSPF域。现在将Area2区配置成NSSA区域。将配置修改为如下:

R3的配置修改如下 R4的配置修改如下
# #
ospf 1 router-id 10.3.3.3 area 0.0.0.0 network 192.168.23.0 0.0.0.255 acl number 2000 rule 5 permit source 10.44.44.44 0 #
area 0.0.0.2 network 192.168.34.0 0.0.0.255 nssa ospf 1 router-id 10.4.4.4 import-route direct route-policy RP area 0.0.0.2
# network 192.168.34.0 0.0.0.255
nssa
#
route-policy RP permit node 10 if-match acl 2000
#

实验效果:

15 Area2NSSA区域的时候R3IP路由表从图15中可以看到,此时R3的路由表中学习到了一条10.44.44.44/32的自治系统外部路由,这条路由被标记为O_NSSA类型,表示这条路由是由Type7 LSA计算出来的。

16 Area2NSSA区域的时候R4IP路由表从图16中可以看到, R4上有一条缺省路由并且协议类型为O_NSSA,表示是由 Type7 LSA描述的,这条缺省路由是由 ABRR3)自动产生的。

17 Area2NSSA区域的时候R4LSDB从图17中可以看到,此时 R4LSDB里面存在Type1 LSAType2 LSAType3 LSAType7 LSA,同时 R4LSDB里面存在一条由 R3产生的Type7 LSA,描述了一条缺省路由。对于NSSA区域的ASBRR4),手动通过命令进行配置,也可以使 ASBR也产生一条缺省的NSSA LSAType7 LSA)。注意在 ASBR上只有当路由表中存在缺省路由0.0.0.0/0,才会产生Type7 LSA缺省路由。

R4的配置修改如下:

# acl number 2000

rule 5 permit source 10.44.44.44 0 # ospf 1 router-id 10.4.4.4

import-route direct route-policy RP area 0.0.0.2

network 192.168.34.0 0.0.0.255 nssa default-route-advertise # route-policy RP permit node 10

if-match acl 2000 # ip route-static 0.0.0.0 0.0.0.0 NULL0 //必须路由表中存在缺省路0.0.0.0/0,才会产Type7 LSA缺省路#

实验效果:

18 R4作为NSSA区域的 ASBR通过nssa default-route-advertise下发缺省路由可以看到,此时R4LSDB里面存在两条描述缺省路由的 Type7 LSA,一条是ABRR3)自动产生的,另外一条是NSSA区域的ASBRR4)手动配置nssa default-route-advertise命令以后产生的。我们再来看一下此时R2的路由表项及LSDB信息:

19 Area2NSSA区域的时候R2IP路由表

20 Area2NSSA区域的时候R2LSDB可以看到10.44.44.44/32这条路由在Area0区域被标记为 O_ASE路由,表示这条路由在NSSA区域的ABRR3)进行了Type7 LSA转换成Type5 LSA;但是 R2上并没有学习到O_ASE缺省路由,也没有描述缺省路由的 LSA,所以 Type7 LSA缺省

路由不会在 ABR上转换成 Type5 LSA缺省路由泛洪到整个 OSPF域,只会在 NSSA区域内部泛洪。

5Totally NSSA区域

21 Totally NSSA区域的 LSA管理规则 Totally NSSA区域既不允许其他区域的外部路由 ASE LSAType5 LSA)在区域内传播,也不允许区域间路由( Type3 LSA)在区域内传播。区域内的路由器必须通过ABR学到其他区域的路由。实现方法是配置 Totally NSSA区域后, ABR会自动产生缺省的Type3 LSAType7 LSA通告到整个 Totally NSSA区域内。这样,自治系统外部路由和区域间路由都可以通过ABR到达。现在将Area2区域配置成 Totally NSSA区域。将配置修改为如下: 实验效果:

R3的配置修改如下 R4的配置修改如下
# #
ospf 1 router-id 10.3.3.3 area 0.0.0.0 network 192.168.23.0 0.0.0.255 acl number 2000 rule 5 permit source 10.44.44.44 0 #
area 0.0.0.2 network 192.168.34.0 0.0.0.255 nssa no-summary # ospf 1 router-id 10.4.4.4 import-route direct route-policy RP area 0.0.0.2 network 192.168.34.0 0.0.0.255
nssa
#
route-policy RP permit node 10 if-match acl 2000
#

22 Area2Totally NSSA区域的时候R4IP路由表

23 Area2Totally NSSA区域的时候R4LSDB可以看出,R4上存在一条由Type3 LSA描述的缺省路由,但是 R4LSDB里面存在两条描述缺省路由的LSA,都是 ABRR3)产生的,一条是 Type3 LSA,一条是Type7 LSA

    1. OSPF各种特殊区域允许出现的 LSA总结
    2. OSPF各种特殊区域允许出现的LSA总结如下表所示
  1. 征蛮荒终得大统,出塞外恐再遇佳人
骨干区域 Type1Type2Type3Type4Type5
标准区域 Type1Type2Type3Type4Type5

蛮荒殿,朝圣台。英武小将和清秀小生端站台前,下边立着一众衣饰各异的人。欧少朝这些不同着装的人躬身一拜,华少亦随之,然后朗声道:“自立少帅军伊始,与华少帅中原逐鹿已三年有余,一路势如破竹,秀美山河尽收囊中。然国无百族不荣,四方内外皆我天朝上国子民。今幸诸族入我治下,收我万里边疆得大统!”四族振奋,礼乐齐名。“愿入左右少帅治下。”四族族长单膝跪地,右臂横于胸前。“今封东夷族长为Stub区域边陲大将!”“今封南蛮族长为Totally Stub区域边陲大将!”“今封西戎族长为NSSA区域边陲大将!”“今封北青丘族长为Totally NSSA区域边陲大将!”“慢!”待得听封这最后一位族长时,欧少却被这位族长给打断了话,“呵呵呵呵,左少帅果真是一个英俊倜傥的人儿。此番来,我并不是来受封的,我是想你去见一个人。”

欧少细细打量了一下这个族长,但见她轻纱抚面,碧眼琼鼻,却怎么这么熟悉“人?要见得什么样的一个人?“呵呵呵呵,去塞外你就知道了,那个让你朝思暮想的人 ……”说完,她已飞殿外,踪影难寻朝思暮想难道是她?

第三十六章问鼎 OSPF7联手VPN智破环,塞外扬威俱相

少年英俊潇洒,仗剑天涯,

结豪侠逍遥江湖,朝生暮醉。

又谁忆起,寒楼高阁红影,夜夜垂泪?

弹指红颜老,郎君可期?

转瞬已白首,伊人何在?

一世风光荣华,到头来,却羡鸳鸯,不羡仙。富丽堂皇逍遥宫,佳肴琼浆美人伴,左右少帅掉进了红粉窟。那一日,他们一路追随青丘族长,到了边疆塞外,便被一群人请到了这里。想那时候那个人见到生人都会羞的躲在师父的背后,现如今却变成这样了么?舞娘慢慢从大殿中央退下,施施然的从偏殿走出了一众人,中间簇拥着一个面蒙轻纱,美眸慑人心魄,身披华贵貂绒外衣,姿段曼妙的佳人。“是你?!”欧少诧异不已。“呵呵,可不是我么?当日路由圣山一别,今日再见,我当称呼你是大战RIP的白衣少年,OSPF,还是图得万里江山的左少帅,欧少帅呢?”佳人声若魔音,柔媚不已。“当日,便知姑娘必是位贵人,原来不知竟是这样的人物,”欧少恢复以往的泰然自若,“啊不,称呼统管四方私网通信的 VPN为姑娘,真是大不敬,还望宫主赎罪。”“呵呵,真是一如既往的伶牙俐齿。免你大不敬之罪,而且,” VPN那双美眸还

挑衅似地向他眨了眨,“不许你叫我宫主,叫我V姑娘。“呃,那么……V姑娘,”欧少还了身旁仍在云里雾里的华少一个歉意的眼神然后道“你叫你的族人找我所为何事呢?“愿与我联手么?不过VPN网络可不是那么简单的哦。欧少早已了然于胸,遂笑道:“ V姑娘可是担心OSPF应用于VPN场景下的环问题?这我早已有计议。

1.路由破环显神威

在上一期问鼎OSPF中,我们介绍了 OSPF特殊区域的设立,以及这些特殊区域中可以使用的LSA。从前几期的介绍中,我们知道, OSPF拥有一个最为人津津乐道的能力,就是能够计算出无环的路由。不管是区域内的路由( Intra-Area Route)还是区域间路由( Inter-Area Route),在 OSPF设计之初就考虑到路由环路的问题,所以 OSPF各种区域在处理Type1Type2Type3Type4Type5Type7 LSA时,能够确保路由无环。当然,在 OSPF多实例场景中,也存在一套避免路由环路的方法,也就是 OSPF所说的计议。介绍之前,我们先了解两个概念。

1.1 OSPF多实例

    1. 1)多实例 BGP/MPLS IP VPN场景中 PECE之间需要进行路由传递,就要得到各路由协议的支持。由于传统路由器只有一张路由表,为了不影响原来的路由信息,各路由协议必须扩展其功能才能在BGP/MPLS IP VPN场景中使用。 OSPF对其自身协议进行扩展,创立OSPF VPN多实例。支持在BGP/MPLS IP VPN
    2. 场景的 PECE之间运行,进行路由的学习和发布。在多实例场景中,路由器上会存在多个独立的路由表,之间的路由信息相互隔离。
  1. 2Domain ID我们知道,BGP/MPLS IP VPN本质是通过MPLS骨干网,将本端PECE之间的路由传递到对端PE。这个传递过程不再详细描述,有兴趣的小伙伴可以去搜索 第一期华为悦读汇有关BGP/MPLS IP VPN 的介绍。这里值得指出的是, PE之间是通过MP-BGP协议传递的路由信息。那这又跟我们这里OSPF多实例有什么关系呢?从多实例的定义中,PECE之间运行路由协议,相互学习路由。其实这里可以使用的路由协议有很多,诸如静态路由、RIPOSPFBGP等协议。在 OSPF多实例场景中,PEOSPF路由引入BGP,从而传递到对端 PE;当然,对端 PE发过来的BGP路由,也会引入OSPF中。这样,在两端的PE设备上,分别存在一个OSPF区域,Domain ID则用于区分这两个区域是否属于同一个 OSPF域。如果属于同一个OSPF域,PE则把BGP传来的远端路由通过Type3 OSPF路由发布给CE,否则发布Type5Type7OSPF路由。这里插播一下: PECE之间运行路由协议虽然有很多,但是最常用的还是 EGBP。那么为什么还要有 OSPF VPN多实例呢?也许是因为其他路由协议都支持了,OSPF不能不支持的心理在作祟;也许是网络发展进程中, PECE已经习惯使用OSPF了吧。对这一点感兴趣的小伙伴不妨跟帖回复你认为的原因,可能有意想不到的惊喜哟!

1.2 巧破OSPF多实例路由环路

1 OSPF多实例典型组网上图是典型的OSPF多实例组网,从前面的原理我们知道, PE1通过BGPPE2收到关于CE2OSPF路由,将这些路由的产生者的地址修改成自己,然后发布相关的Type3Type5Type7OSPF路由给CE1CE1再向其他区域发布这些路由时,会将 PE1作为ASBR,这样就能实现跨越 MPLS骨干网的两个私网之间进行路由互通了。

    1. 1)遇到问题路由协议最怕的就是产生路由环路。不过OSPF天赋异禀,为保证区域间传递的路由不会产生环路而制定了规则: A、所有的非 0区域必须与骨干区域直接相连,区域间路由需经由骨干区域中转。 B、使用SPF算法。在实践中,OSPF的确达到了无环的目的。以至于一提到OSPF,就会提到OSPF能够计算出无环的路由。但是,自从加入了OSPF多实例功能之后,由于BGP/MPLS IP VPN网络改变了原有的拓扑结构,使得第一条规则不再有效。而且在跨越了 MPLS/IP骨干网之后一般都是Type3Type5Type7类型的 OSPF路由,这三种 LSA实际上在OSPF计算产生路由的时候和距离矢量算法很接近,在某些场景中很有可能产生路由环路。比如下图所示的场景:
    2. 2 OSPF VPN路由环路 PE1OSPF引入了目的地址为10.1.1.0/24BGP路由,产生5类或7LSA发布给 CE1CE1上学到一条目的地址为10.1.1.0/24,下一跳为PE1OSPF路由,并发布给PE2,这样PE2上就学到一条目的地址为 10.1.1.0/24,下一跳为CE1OSPF路由。同理,CE1上也会学到一条目的地址为10.1.1.0/24,下一跳为PE2OSPF路由, PE1上学到一条目的地址为10.1.1.0/24,下一跳为CE1OSPF路由。此时,CE1上存在两条等价路由,分别指向PE1PE2,而PE1PE2上到10.1.1.0/24的下一跳也都指向CE1,环路就产生了。
  1. 2)巧计破环既然产生了环路,总要有个破环方法。要知道,OSPF多实例场景中,PE将路由发送给CE时,使用的是Type3Type5Type7类型的OSPF路由。那我们就分别针对这三类路由指定破环之策。破环良策之一—— DN-bit PE在生成Type3Type5Type7 LSA发布给CE时,都将DN位置位(值为 1),

其他类型LSADN位不置位(值为 0)。 PEOSPF多实例进程在进行计算时,忽略 DN置位的LSA。这样就防止了 PE又从 CE学到发出的LSA而引起的环路。破环良策之二—— VPN Route Tag VPN路由标记(VPN Route Tag),PE根据收到的BGP的私网路由产生的 Type5Type7类型LSA中必须包含这个参数。当PE发现LSAVPN路由标记(LSATag值)和自己的一样,就会忽略这条LSA,因此避免了环路。至此,CE双归属场景下的路由环路的问题消失的无影无踪。

1.3 破环虽好,偶有误伤

虽然OSPF多实例场景下路由破环获得奇效。不过,待看完下面这个案例,你又有什么样的想法呢?

3 MCE组网图

  1. 1)组网需求如上图所示,某公司需要通过 MPLS VPN实现总部和分支间的互通,同时需要通过VPN隔离多种不同的业务。为节省开支,希望分支通过一台MCE设备接入PE(此处仅以其中一个vpna为例说明问题)。
    1. 2)场景描述
    2. 1PE1PE2MPLS VPN骨干网。CE1MCE同属于vpna,通过骨干网进行私网互通。 2PE1CE1通过OSPF交互私网路由。 3PE2MCE通过OSPF多实例交互私网路由。 4、在PEOSPF视图下引入 BGP路由,发布 PE的私网路由给CE或者MCE;在PEBGP视图下引入该OSPF进程,发布私网路由信息给对端PE
    3)关键配置
  2. 4)故障现象按照上述配置完成以后发现MCE侧学习不到对端的私网路由,但是存在OSPFLSDB1MCE侧的VPN实例里面学习不到 CE侧的10.1.1.0/24网段的私网路由。
    1. 5)根因分析由于防环检测机制的存在,所以我们在PE经常会发现存在LSA但路由计算不出来。特别是在PEMCE对接的场景下, PE在生成Type3Type5Type7 LSA发布给 MCE时,都将DN位置位(值为1),其他类型LSADN位不置位(值为 0)。 MCEOSPF多实例进程在进行计算时,忽略DN置位的LSA。所以就会出现 OSPF邻居状态是Full的,也存在LSDB,但是无法计算出路由的现象。验证一下,检查MCE上这条LSA是否存在DN-Bit
    2. E DN”表示LSADN-Bit,正常时候显示“ (DC)”。可以确认是由于 OSPF的防环机制,导致这个 LSA设置DN-Bit标志位,从而导致这条 LSA不会参与到路由计算中,所以最终MCE侧学习不到CE侧的10.1.1.0网段的路由。
  3. 6)解决方法由于MCE设备并不是PE设备,所以可以不检查 DN-Bit而直接计算出所有 OSPF路由。
PE1的关键配置# ip vpn-instance vpna ipv4-family route-distinguisher 100:1 vpn-target 200:1 export-extcommunity vpn-target 200:1 import-extcommunity # interface GigabitEthernet0/0/1 ip binding vpn-instance vpna ip address 10.1.1.2 255.255.255.0 # bgp 100 peer 2.2.2.2 as-number 100 peer 2.2.2.2 connect-interface LoopBack1 # ipv4-family vpnv4 policy vpn-target peer 2.2.2.2 enable # ipv4-family vpn-instance vpna import-route ospf 100 # ospf 1 area 0.0.0.0 network 1.1.1.1 0.0.0.0 network 172.1.1.0 0.0.0.255 # ospf 100 vpn-instance vpna import-route bgp area 0.0.0.0 network 10.1.1.0 0.0.0.255 # PE2的关键配置# ip vpn-instance vpna ipv4-family route-distinguisher 100:1 vpn-target 200:1 export-extcommunity vpn-target 200:1 import-extcommunity # interface GigabitEthernet0/0/1 ip binding vpn-instance vpna ip address 10.2.1.2 255.255.255.0 # bgp 100 peer 1.1.1.1 as-number 100 peer 1.1.1.1 connect-interface LoopBack1 # ipv4-family vpnv4 policy vpn-target peer 1.1.1.1 enable # ipv4-family vpn-instance vpna import-route ospf 100 # ospf 1 area 0.0.0.0 network 2.2.2.2 0.0.0.0 network 172.1.1.0 0.0.0.255 # ospf 100 vpn-instance vpna import-route bgp area 0.0.0.0 network 10.2.1.0 0.0.0.255 #
CE1的关键配置# MCE的关键配配置#
ospf 1 ip vpn-instance vpna
area 0.0.0.0 ipv4-family
network 10.1.1.0 0.0.0.255 route-distinguisher 100:1
# vpn-target 200:1 export-extcommunity
vpn-target 200:1 import-extcommunity
#
interface GigabitEthernet0/0/1
ip binding vpn-instance vpna
ip address 10.2.1.1 255.255.255.0
#
ospf 100 vpn-instance vpna
area 0.0.0.0
network 10.2.1.0 0.0.0.255
#

2CE1上能正常学习到MCE10.2.1.0/24网段的私网路由。

3MCEOSPF LSDB信息中存在External类型的10.1.1.0网段路由。

MCEOSPF视图下输入vpn-instance-capability simple即可禁止路由环路检测。

上述命令配置完以后,查看MCE上,学习到了CE侧的10.1.1.0网段的路由了。

需要注意的是,这个命令只建议配置在 MCE设备上,因为配置这个命令后OSPF

将不再能够引入IBGP路由(import from IBGP)

2.扬威塞外一白衣,昔日少年耀九天

信马由缰自驰骋,北野茫茫青草天。“啊!!!!”停缰勒马,仰天长啸。华少听了那一人的长啸,又似看到了这多年的颠沛流离,这多年的南征北战,这多年少帅军的窘境,都随着这一声长啸,这多年的沉郁都一扫而空。“啊!!!!”他也跟着放空大啸。两个疯疯癫癫的人,路过的人都这么认为。管这两个人干什么,新帝登基,去凑凑热闹去。“发泄好了么,欧少?都等着你呢。”大啸过后,华少脸含笑意。“这,华少,要不你来当这皇帝好不好,我怕我做不来。”平日风轻云淡的一个人,现在竟然打起了退堂鼓。“哈哈哈哈,你这说的什么话?我管设备,你管路由,怎么能乱了套呢?你啊,就别矫情了,快些走吧。”“那……走吧。”

北青丘,白岐宫外。路由领域登新帝,四方群豪竞相来。如果有人好奇为什么在这边疆塞外办这么隆重的事儿,那就去问问那柔音媚骨,神秘莫测的女宫主吧。卯时三刻到,钟鼎齐和鸣。新帝到。白衣飘飘,风度翩翩,气象雍容万千。过广场,平民尽皆跪拜。上大殿,宾客离席站起。路由各诸侯垂首微拜。新帝颔首,回礼。当然,独独缺了RIP不在。互联网其他众协议再拜首。新帝亦颔首,回礼。少帅军右少帅拜首。新帝颔首,回礼。啊,那个整天围着白袍小将的绿衣姑娘也在。新帝上师微拜首,含笑不语。新帝颔首,回礼。师父也来了?咦?他旁边的人?莫非是?!那么师妹也来了么?礼毕。授册印。老祖端站殿上,朗声宣读,新帝聆听:“阿帕自立三十载,路由各方展宏图。后有白衣一少年,群英会上破空出。先辅网管,助大业成。再联 S,立少帅军,统万里江山。今修得正果,特封OSPF成帝,苍天鉴!”新帝接册印,礼成。“呵呵呵,也不算太晚,路由新帝登基,我这个宫主怎能不来拜贺呢?”摄人美眸藏轻纱,衣着锦缎尽奢华。“新帝,你难道不好奇我长什么样子么?”宫主秋波若含春风,众人皆醉,“其实,这轻纱可以摘得。只不过,我曾许过诺,我这轻纱只为倾心之人而揭。你要我揭开吗?”揭得?揭不得?新帝脑立两小人,来回厮杀,挣扎不已。“哈哈哈,由不得你了,我看上的人儿,怎能逃出我的手掌心呢?”轻纱缓缓揭

起。五殿琉璃尽失色,九天玄女妒红尘

第三十七章问鼎 OSPF8)千古一帝终大成,路由天下群雄颂

新帝立,群雄服, IGP进入新时代。与兄弟,入园区,各领风骚数百年。结佳人,闯私网,再续 VPN不了缘。至此时,终大成,徒留余香与君勉。

前面7篇问鼎OSPF系列技术贴已经跟大家介绍了OSPF的基础知识,例如 OSPF的基本运行机制、OSPF邻居建立过程、OSPFLSA详解、OSPF特殊区域、 OSPF防环机制等等。看过这些 OSPF基础知识以后您是否想尝试实际规划部署一个 OSPF网络呢?在OSPF典型网络是如何规划部署的呢?OSPF在典型网络中是如何应用的呢?本篇问鼎OSPF我们以一个典型OSPF网络规划部署案例来给您介绍OSPF网络规划设计原则及部署注意事项。

1. OSPF网络规划设计原则

OSPF路由协议在所有内部网关协议中是比较复杂的一种,这种复杂性和 OSPF协议的原理密切相关,那么在设计典型 OSPF网络的时候我们具体需要考虑哪几方面的问题呢?在本节中将会为您一一介绍。

1.1 保持OSPF网络的稳定性: Router ID的规划

在典型 OSPF网络设计和实施中我们需要考虑的第一点,就是Router ID的选择。这是因为OSPF作为一种链路状态路由协议其计算路由的依据是LSA(链路状态通告),每个运行 OSPF的路由器都会发送并泛洪 LSA报文到整个网络,这样网络中每个运行OSPF的路由器都会收集到其他设备发送过来的LSA并且放入 LSBD(链路状态数据库),然后开始进行 SPF(最短路径算法)运算,计算出一棵以自己为根到其他网络的无环树。由此可以看出保持每个路由器LSDB的稳定性是保证OSPF网络稳定的前提。那么在LSDB中对于不同OSPF设备发送来的 LSA是如何进行区分的呢,答案就是使用 Router ID。如果一个路由器的 Router ID发生变化,那么此路由器会重新进行LSA泛洪,从而导致全网 OSPF路由器都会更新其LSDB并且重新进行 SPF计算,使得OSPF网络发生振荡。因此选择一个稳定的Router IDOSPF网络设计的首要工作。了解了Router ID的重要性后,我们来看看一个 OSPF路由器是如何选择Router ID的。路由器的Router ID可以手工配置,如果没有通过命令指定 Router ID,系统会从当前接口的IP地址中自动选取一个作为路由器的 Router ID。其选择顺序是:优先从 Loopback地址中选择最大的 IP地址作为路由器的 Router ID,如果没有配置 Loopback接口,则在接口地址中选取最大的 IP地址作为路由器的Router ID。只有当被选举为Router ID的接口 IP地址被删除或修改后,才会进行Router ID的重新选举。在实际工程中,推荐手工指定 OSPF路由设备的Router ID。具体做法是首先规划出一个私有网段用于OSPFRouter ID选择。例如: 192.168.1.0/24。在启用 OSPF进程前就在每个OSPF路由器上建立一个Loopback接口,使用一个 32位掩码的私有地址作为其IP地址,这个 32位的私有地址即作为该路由设备的 Router ID。如果没有特殊要求,这个Loopback接口地址可以不发布在 OSPF网络中。

      1.2
      层次化的网络设计: OSPF区域的规划
    1. OSPF是一个需要层次化设计的网络协议,在OSPF网络中使用了一个区域的概念,从层次化的角度来看区域被分为两种:骨干区域和非骨干区域。骨干区域的编号为0,非骨干区域的编号从 14294967295。处于骨干区域和非骨干区域边界的OSPF路由器被称为ABR(区域边界路由器)。实际上OSPF区域的规划也就是把网络中的OSPF路由器做归类的过程。在设计 OSPF区域时,我们首先需要考虑的第一点是网络的规模,对于小型的典型网络,例如只有几台路由设备作为核心和汇聚的网络可以考虑仅规划一个骨干区域 Area 0。但是在大型的OSPF网络中,网络的层次化设计是必须要考虑的。对于大型的OSPF网络,一般在规划上都会遵循核心,汇聚,接入的分层原则,而OSPF骨干路由器的选择必然包含两种设备,一种是位于整网核心位置的核心设备,另一种是位于区域核心的汇聚设备,通常都是高端路由设备,例如华为 NE系列高端路由器,或者华为 S77&97系列高端路由交换机。非骨干区域的设计则是根据地理位置和设备性能而定,如果在单个非骨干区域中使用了较多的低端三层交换产品,由于其产品定位和性能的限制,应该尽量减少其路由条目数量,把区域规划得更小一些或者使用特殊区域。实际工程中对于非骨干区域的 Area编号的规划也是有讲究的,尽量不要使用类似 Area123……这种连续的编号,推荐使用 Area 10 20 30……这种递增方式,这样主要是考虑提供 Area编号上的冗余,在后期网络扩容的时候便于用户增加区域编号。
    1.3
    非骨干区域的路由表项优化:特殊区域的使用

在问鼎OSPF6)中我们曾经讲过,特殊区域的使用可以达到优化非骨干区域的路由表项的目的。实际上对于非骨干区域,一般可能存在如下两种诉求需要减少路由表项的规模:

1、非骨干区域仅有一个 ABR做出口,任何访问区域外的流量都要经过这个出口设备,此时其实这个区域内的路由器没必要了解外部网络的细节,仅需要有个出口能够出去即可。

2、有些时候非骨干区域的设备可能使用了一些较为低端的三层交换机,其产品定位使得其不可能承受过多的路由条目,为了精简其路由条目数量可以采用配置特殊区域的方法进行路由表项的优化。

华为路由器和交换机产品支持OSPF协议中定义四种特殊区域类型:Stub区域, Totally Stub区域,NSSA区域,Totally NSSA区域。各种特殊区域的 LSA及路由管理规则在问鼎OSPF6)中已经有详细的介绍,这里就不再赘述。在绝大部分的情况下,典型OSPF网络的非骨干区域中都仅仅需要知道缺省路由出口在哪里,因此建议把非骨干区域统一规划成 Totally NSSA区域,这样将极大的精简非骨干区域内部路由器的路由条目数量,并且减少区域内部 OSPF交互的信息量。对于少数存在特殊需求的网络,请根据实际情况灵活使用几种区域类型。

1.4 骨干区域的路由表项优化:非骨干区域 IP子网规划和路由汇聚

由于OSPF骨干区域需要负责区域之间的路由交互,所以骨干区域设备的路由表规模往往会比较大,因此骨干区域的路由表规模同样需要考虑精简和优化的问题。对于OSPF的非骨干区域来说,使用特殊区域能够精简其内部路由器的路由表,那么对于OSPF骨干区域的路由器来说又是如何优化其路由表的呢?答案就是对非骨干区域使用的IP网段作出合理规划以便于区域边界的路由汇聚。建议新建 OSPF网络能够在前期就作出利于路由汇总的IP网络设计,对于扩建的网络尽量进行IP地址的重新规划,通过区域汇总能精简骨干区域路由器的路由表,减少骨干区域内OSPF交互的信息量。同时,路由汇总以后,单点的链路故障或者网络震荡不至于影响整个网络的路由更新,因此路由汇聚还可以提高网络的稳定性。

      1.5
      上行流量的引导: OSPF缺省路由的引入和选路优化
    1. 对于一个大型OSPF网络来说,很大一部分的业务流量并不在网络内部,而是通往Internet出口,因此缺省路由的设计也是典型 OSPF网络的一大设计要点。在实际的大多数工程案例中,典型网络的出口往往不止一个,如何有效的将出口流量分担到多条链路上就成为了OSPF设计中的一个难点。虽然有很多种手段能够达到分担流量的目的,但是最简单也是最安全的方法是使用OSPF内在的选路机制。因为OSPF路由器对一条路由的优劣衡量是通过计算其cost值来实现的, cost值小的路由会被路由器优先放入路由表。通过调整OSPF接口的cost值可以使得路由器选择不同的链路出口来达到负载分担的目的。不过在调整cost值之前还有一项必须要做的工作。因为 OSPFv2出现的时间较早,没有考虑到带宽的飞速发展,因此缺省情况下, OSPF计算cost值使用的参考带宽为100M,也就是说缺省情况下,OSPF100M带宽以上的端口统统认为其cost1。很明显,在网络骨干带宽迈向10T的今天已经显得非常的不合时宜。幸运的是设备提供了更改参考带宽的功能,使用 bandwidth-reference value命令选择一个合适的参考带宽成为OSPF网络建设中必须要做的一项工作。对于 OSPF网络的选路优化,推荐首先选择合适的参考带宽,然后通过调整OSPF接口cost值来实现。
      1.6
      路由汇总场景下的防环设计:黑洞路由的使用
    1. 1 路由汇总场景下的防环设计:黑洞路由的使用宇宙中的黑洞被科学家定义为一个连光线都吸食的魔鬼。而在路由器中黑洞路由类似于宇宙中的黑洞,凡是命中黑洞路由的报文都统统被丢弃,而且不向发送者反馈任何差错信息。黑洞路由的这种巨大魔力使得它在防止路由环路方面有着广泛的应用。在很多场景下路由聚合确实能够做到精简路由,提高网络稳定性的作用,但是任何事物都具有两面性,路由聚合也不例外,路由聚合带来的缺陷就是容易产生路由环路,而黑洞路由可以用来弥补这种缺陷。所以典型 OSPF网络设计中,路由聚合和黑洞路由往往是配合使用的,这个我们会在下面的OSPF网络规划部署案例中给出详细的设计方法,请读者继续往下看。
    1.7
    OSPF网络基本安全: OSPF静默接口的使用

对于一个大型OSPF网络来说,安全性是必须要考虑到的问题。在 OSPF网络设计中,通常会禁止将OSPF报文发往用户端,这是为什么呢?这主要是为了防止终端用户窥探OSPF报文信息,因为如果用户能截获 OSPF报文,那就意味着他可能知道如何加入此OSPF网络。此时要破坏这个 OSPF网络已经是轻而易举的事,例如接入一台路由器到 OSPF网络中,并且使得该路由器的 OSPF进程处于不稳定的状态中,就会导致 OSPF网络发生振荡甚至瘫痪。在实际工程中,为了保证 OSPF网络的安全与稳定,推荐在 OSPF网络的边缘设备上使用静默接口的的方式来阻止通往用户侧的 OSPF报文。具体做法是在 OSPF网络的边缘设备上配置silent-interface命令,用来禁止该接口接收和发送 OSPF报文。禁止接口收发OSPF报文后,该接口的直连路由仍可以发布出去,但接口的Hello报文将被阻塞,接口上无法建立邻居关系。这样用户侧就无法窥探到网络中的 OSPF报文。

2. OSPF网络设计部署案例

俗话说“纸上得来终觉浅,绝知此事要躬行”。上一节中我们对典型 OSPF网络设计的七个基本原则作出了详细说明,下面我们通过一个案例来看看在实际工程中是如何运用这七个基本原则对 OSPF网络进行设计和部署的。

2 典型园区网络的拓扑图图2是一个典型园区网的拓扑图,可以看到这是一个大型园区网络,核心、汇聚、接入三层分明,有多出口到 Internet,网络内部存在双链路冗余,核心、汇聚交换机部署集群保护等。这种大型园区网络,园区出口设备一般选用华为 NE系列高端路由器,核心交换机选用华为 S9700交换机集群,汇聚交换机选用S7700交换机集群。用户网关部署在汇聚层上,汇聚层作为二层和三层的分界点。对于这种比较典型的大型园区网络, OSPF的设计与部署工作是怎样一步一步进行的呢?下面将根据上一节提出的七条基本原则逐步进行此网络的设计和部署。由于上述典型园区网络中核心交换机和汇聚交换机都属于集群系统,因此他们在逻辑上相当于一台设备,多链路捆绑在逻辑上也属于一条链路。由于集群和链路

聚合的内容不在本帖的讨论范围内,因此为了简化问题的描述我们把上述网络拓扑经过抽象形成图3所示的逻辑拓扑图,园区网中可能存在很多幢楼,这里我们以3幢为例进行描述。

3 典型园区网络的逻辑扑图

2.1 保持OSPF网络的稳定性: Router ID的规划

部署OSPF的首要工作就是设计和部署Router ID,一般情况下,使用一个合适的私有IP地址段即可。在此案例中我们选用的 Router ID地址段为10.0.0.0/24。选取完Router ID地址段后,接下来需要做的工作是在每个 OSPF设备上创建相应的Loopback接口并配置接口 IP10.0.0.X/32。具体配置以核心交换机 S9700集群为例:注意:如无特殊要求,建议不要在 OSPF进程中发布loopback0的接口地址,以减少无用的OSPF信息交互报文规划Router ID 以后的网络拓扑如图 4所示:

4 规划Router ID 以后的网络拓扑

2.2 层次化的网络设计: OSPF区域的规划

在分配完Router ID后,接下来的工作就是对于整个 OSPF网络进行区域划分。对于这种层次分明的网络,OSPF的区域划分是非常容易的,直接把核心和汇聚交换机包含到Area 0,再按照地理位置来区分非骨干区域。唯一需要注意的是非骨干区域Area编号的冗余性,在实际工作中经常被忽视。本案例中我们按照地理位置,把出口路由器和汇聚交换机划分到骨干区域,把每栋楼的汇聚交换机划分为一个非骨干区域,图 5是做了Area划分后的OSPF网络拓扑图:

5 规划区域以后的网络拓扑具体配置以核心交换机 S9700集群的Area 0Area 10的配置为例:从配置命令中可以清楚的看到OSPF区域是以路由器为边界的,例如此拓扑中核心交换机S9700集群上行接口属于 Area 0 ,下行接口属于 Area 10,也就是说,此路由器跨越了两个区域,是一个区域边界路由器ABR。注意:在单个区域包含过多的低端路由器或者三层交换机是一种不好的设计,如果出现这种情况应该考虑缩小区域范围。

命令 含义
[S9700]ospf 1 进入OSPF进程视图
[S9700-ospf-1]area 0 进入area 0区域视图
[S9700-ospf-1-area-0.0.0.0]network 10.200.10.0 0.0.0.3 将上行口的网段发布进Area 0
[S9700-ospf-1-area-0.0.0.0]network 10.200.20.0 0.0.0.3 将上行口的网段发布进Area 0

2.3 非骨干区域的路由表项优化:特殊区域的使用

划分完OSPF网络区域,我们可以看到非骨干区域的路由表项的规模相对较大,而如果非骨干区域的设备性能较低的情况下,用户不希望路由表项规模过大,此时可以考虑特殊区域的运用了。本案例具有很强的代表性,像此类典型网络,推荐非骨干区域一律采用完全 NSSA区域( Totally NSSA区域)具体拓扑如图 6所示:

6 非骨干区域划分特殊区域以后的网络拓扑 Totally NSSA区域具体设备配置以 Area 10 S9700集群和 S7700-1为例。 S9700集群的关键配置如下:

命令 含义
[S9700]ospf 1 进入OSPF进程视图
[S9700-ospf-1]area 10 进入area 10区域视图
[S9700-ospf-1-area-0.0.0.10] nssa no-summary ABR设备需要配置nssa no-summary

S7700-1的关键配置如下:

命令 含义
[S7700-1]ospf 1 进入OSPF进程视图
[S7700-1-ospf-1]area 10 进入area 10区域视图

下面我们看一下配置Totally NSSA区域前后,非骨干区域路由表项的优化效果:

7非骨干区域优化前S7700-1的路由表

8非骨干区域优化后S7700-1的路由表

通过图7与图8的对比可以明显看出,配置了 Totally NSSA区域以后,Area 10的路由表的规模得到了明显的降低,说明在非骨区域通过配置Totally NSSA区域可以达到降低路由表项规模的作用。

2.4 骨干区域的路由表项优化:非骨干区域 IP子网规划和路由汇聚

在非骨区域通过配置Totally NSSA区域后,非骨干区域内部路由器的路由表得到极大的精简并且减少了区域内部OSPF路由器之间的信息交互量。在骨干区域我们也需要作出适当的操作来达到同样的目的,这就要对非骨干区域使用的IP子网作出合理规划并在ABR(区域边界路由器)进行汇总操作。在下图中显示了区域10作出合理的IP规划后往区域 0通告的路由汇总表项:

9通过路由汇总实现骨干区域的路由表项优化区域路由汇总会抑制明细路由条目的通告,这样区域10ABR就只会向区域 0 内注入一条汇总路由10.10.0.0/16,这样可以精简骨干路由器路由表项,减少 Area

特性攻

0 OSPF报文交互量和保证其路由表的稳定。建议在设计 OSPF网络时就合理规划IP地址,已方便进行路由汇总。路由汇总的配置以Area 10ABR设备S9700集群为例如下:

命令 含义
[S9700] ospf 1 进入OSPF进程视图
[S9700-ospf-1] area 10 进入area 10区域视图
[S9700-ospf-1-area-0.0.0.10] abr-summary 10.10.0.0 255.255.0.0 ABR设备进行路由汇总

注意: abr-summary命令只能用在 ABR(区域边界路由器)上,区域内部路由器上不要使用此条命令,否则会造成路由表项的错误。下面我们通过查看路由表项来对比一下路由汇总前后的效果。

10路由汇总前骨干区域有用户网段的明细路由

11路由汇总后骨干区域仅有用户网段的汇总路由

通过图10和图11的对比可以看出路由汇总之前骨干区域内有用户网段的明细路由,在 ABR上做路由汇总以后骨干区域的NE40E-1设备上只有一个16位掩码的汇总的用户网段路由,这样在用户网段很多的情况下通过汇总能在很大程度上精简骨干区域的路由,同时减少了骨干区域和非骨干区域的 LSA交互数量,提高了网络的稳定性。

2.5 上行流量的引导: OSPF缺省路由的引入和选路优化

在第一节的OSPF典型网络规划原则的时候我们曾经提到过,对于一个园区网络,很大一部分流量是流向 Internet的,因此对于这种多出口的网络拓扑,引入缺省路由和多出口流量分担是必须要考虑的问题。引入缺省路由的方式有多种,这里我们建议的做法是在边界路由器上通过 OSPF非强制下发缺省路由来实现。

江湖小贴士:一般推荐使用OSPF“非强制”下发缺省路由的方式,即只有边界路由器自身的 IP路由表中存在缺省路由的时候才能发布缺省路由,否则就不能发布,之所以这样要求主要是防止在特殊场景下产生环路或者次优路由。在本案例中两个边界路由器发布缺省路由以后,对于核心交换机 S9700集群来说会收到两条缺省路由,下一跳分别指向两个出口路由器。此时核心交换机 S9700集群可以选择其中一条链路作为上行,也可以选择两条上行链路负载分担,具体项目中如何分配流量,请根据实际的网络情况灵活配置。S9700集群的缺省路由和流量的走向如图12所示。

12通过缺省路由引导核心交换机S9700集群的上行流量 NE40E-1NE40E-2上发布缺省路由的具体配置如下,以 NE40E-1为例, NE40E-2上需要做类似的配置。

命令 含义
[NE40E-1] ip route-static 0.0.0.0 0.0.0.0 202.10.10.1 首先在NE40E-1上手工配置一条下一跳指向电信运营商的公网地址的缺省路由
[NE40E-1] ospf 1 进入OSPF进程视图
[NE40E-1-ospf-1] default-route-advertise 发布缺省路由,注意不要携带 always参数,即非强制下发缺省路由。

上述配置完成以后,S9700上将会学习到两条等价的缺省路由,此时S9700的上行流量将会采取负载分担的方式进行,详细如图13所示:

410

13 S9700集群上有两条等价的缺省路由如果用户想让S9700上行的两条链路采取主备份的形式,正常情况下走NE40E-1这边上行,当NE40E-1故障的时候流量自动切换到NE40E-2这边。这个需求怎么实现呢?根据第一节的介绍,最简单直接的方法就是使用 OSPF自身的选路机制,通过修改cost值来影响S9700集群的选路。为了实现路由的主备份,可以修改 S9700到达NE40-2这条链路的cost,使得 S9700到达NE40-2这条链路的cost值大于S9700到达NE40-1这条链路。详细配置如下: S9700侧的配置如下:

命令 含义
[S9700] interface vlanif 50 进入OSPF接口视图
[S9700-Vlanif50] ospf cost 10 修改该接口的OSPF cost值为10

NE40E-2的配置如下:

命令 含义
[NE40E-2] interface GigabitEthernet 0/0/1 进入OSPF接口视图
[NE40E-2-GigabitEthernet0/0/1] ospf cost 10 修改该接口的OSPF cost值为10

由于缺省情况下百兆带宽以上的链路OSPFcost默认为1,所以我们将 S9700NE40E-2之间的链路的OSPF cost值修改为10以后,S9700将优选NE40E-1这边的

411

链路作为上行流量的出口,此时S9700IP路由表中将会仅存在一条指向 NE40E-1的缺省路由。详细如图 14所示:

14 S9700集群上有仅有一条缺省路由

江湖小贴士:在做OSPF选路调整时注意:如果需要调整 cost值来影响OSPF的选路,则在链路两侧的设备上需要作出同样的cost调整,否则会形成不对称路由,引起网络故障。

2.6 路由汇总场景下的防环设计:黑洞路由的使用

经历了上述 5个步骤的规划与部署,这个典型OSPF网络的基本功能已经具备了,而且我们也通过了一些手段进行了路由表项的优化,但是这个网络现在是否还存在问题呢?是否还需要做进一步的优化呢?答案是肯定的,这个网络中当前是存在一种产生环路的风险的,第一节的规划原则中我们也曾经提到过,路由汇总通常容易产生环路,而黑洞路由通常可以用来和路由汇总相结合来防止路由环路。下面我们来看一下这个环路是如何产生的。对于园区网来说,来自内部的网络攻击是很常见的,假设1号楼内的某台主机受到病毒攻击,这种攻击会导致主机扫描访问10.0.0.0网段的IP地址。那么此时就有很大的风险产生环路。假设主机扫描到 10.10.50.1这个地址( 1号楼实际上不存在这个地址)。 1、这个数据包将会发送至主机的网关即 S7700-12S7700-1上不存在这个目的地址的明细路由,所以会匹配默认路由发送至

S9700集群。

3、由于 10.10.50.1这个地址在整个园区网中根本不存在,所以数据包到达S9700上以后只能匹配缺省路由发送只NE40E-1

4、而 NE40E-1上学习到的路由却是 S9700通过路由汇总发布出去的,所以会匹配到10.10.0.0/16这条路由,所以数据包又重新发回 S9700.

至此S9700NE40E-1之间的一条环路就形成了,如图15所示。一旦形成路由环

路将会严重影响网络的运行,甚至导致整网的瘫痪,所以做路由汇总的场景下,

如何防止路由环路是一个必须考虑的问题。

15 S9700集群和NE40E-1之间形成路由环路

形成环路的主要原因是在S9700集群上把目的地址为一个园区网内不存在的地址的数据包匹配默认路由发送给和骨干区域,同时骨干区域又通过汇总的回程路由回送回来。因此解决这个环路的方法就是在S9700上阻断目的地址为一个园区网内不存在的地址的数据包,推荐使用的方法就是配置黑洞路由。详细配置如下:

[S9700] ip route-static 10.10.0.0 255.255.0.0 NULL0

完成这个黑洞路由的配置以后,回程到 10.10.0.0这个网段的数据包都会有明细路由引导回到用户网段,如果找不到这个明细路由则证明园区网内不存在这个主机地址,此时即会匹配这条黑洞路由而将数据包丢弃。这样就不会形成环路了。其他区域也需要做跟Area 10类似的配置,即路由汇总的同时做黑洞路由用来防止路由环路的产生。

2.7 OSPF网络基本安全: OSPF静默接口的使用

在网络攻击“道高一尺魔高一丈”的当下,网络的安全也是一个必须要考虑的问题。对于本案例来说,做完上面6个步骤,实际上整个OSPF网络已经能够正常的运行,但是这个网络存在一个较大的安全漏洞。即用户侧能够接收到 OSPFhello报文,使用Sniffer等网络嗅探工具可以很轻易的获得基本的网络信息,并作出下一步的攻击行为。为了实现OSPF网络的基本安全,在实际工程中推荐使用静默接口的方式来阻止发往用户的OSPF报文。如图16所示:16使用静默接口的方式来阻止发往用户的 OSPF报文具体配置以Area 10中的S7700-1为例:

命令 含义
[S7700-1] ospf 1 进入OSPF进程视图
[S7700-1-ospf-1] silent-interface vlanif100 将所有用户侧接口设置为静默接口
[S7700-1-ospf-1] silent-interface vlanif200 将所有用户侧接口设置为静默接口
[S7700-1-ospf-1] silent-interface vlanif300 将所有用户侧接口设置为静默接口

江湖小贴士:注意:silent-interface命令会禁止接口接收和发送 OSPF报文,一般只会用于用户侧接口上,千万不要应用于 OSPF路由器之间的链路,这将导致 OSPF邻居无法建立。

至此这个典型OSPF网络就规划部署完毕,我们来做一个总结:通常一个网络的规划设计需要同时考虑网络的有效性、可靠性、安全性等几个方面。所以在部署一个网络的时候仅实现网络的基本功能只是一个方面,更多的需要考虑如何优化这个网络,如何提高这个网络的有效性、可靠性、安全性等方面的问题。

题外话

至此问鼎OSPF系列技术贴的8篇正传已全部完结,不知道本系列技术贴描绘出来的金戈铁马、快意恩仇的网络江湖,有没有唤起读者心中那曾经的一个武侠梦,如白衣少年那样,在通信领域这个沙场上重燃那颗争胜好强的心呢?当然书写本系列技术贴的初衷还是希望读者能够学习这个技术贴的精华OSPF的技术实现及典型应用。