diff --git a/Datacom-MD/第九章:路由控制与路由策略.md b/Datacom-MD/第九章:路由控制与路由策略.md
new file mode 100644
index 0000000..56bc53c
--- /dev/null
+++ b/Datacom-MD/第九章:路由控制与路由策略.md
@@ -0,0 +1,1147 @@
+
路由控制与路由策略
+
+> 作者:行癫
+
+------
+
+第一节:ACL原理与配置
+
+一:ACL技术概述
+
+1.技术背景
+
+ 某公司为保证财务数据安全,禁止研发部门访问财务服务器,但总裁办公室不受限制
+
+
+
+**随着网络的飞速发展,网络安全和网络服务质量QoS(Quality of Service)问题日益突出**
+
+ 园区重要服务器资源被随意访问,园区机密信息容易泄露,造成安全隐患
+
+ Internet病毒肆意侵略园区内网,内网环境的安全性堪忧
+
+ 网络带宽被各类业务随意挤占,服务质量要求最高的语音、视频业务的带宽得不到保障,造成用户体验差
+
+ 以上种种问题,都对正常的网络通信造成了很大的影响。因此,提高网络安全性和服务质量迫在眉睫,我们需要对网络进行控制。比如,需要借助一个工具帮助实现一些流量的过滤
+
+2.ACL概述
+
+ ACL是由一系列Permit和Deny语句组成的、有序规则的列表
+
+ ACL是一个匹配工具,能够对报文进行匹配和区分
+
+
+
+**ACL应用**
+
+ 匹配IP流量
+
+ 在Traffic-filter中被调用
+
+ 在NAT中被调用
+
+ 在防火墙的策略部署中被调用
+
+ 在QoS中被调用
+
+ 通过ACL可以实现对网络中报文流的精确识别和控制,达到控制网络访问行为、防止网络攻击和提高网络带宽利用率的目的,从而切实保障网络环境的安全性和网络服务质量的可靠性
+
+ ACL是由permit或deny语句组成的一系列有顺序的规则的集合;它通过匹配报文的相关字段实现对报文的分类
+
+ ACL是能够匹配一个IP数据包中的源IP地址、目的IP地址、协议类型、源目的端口等元素的基础性工具;ACL还能够用于匹配路由条目
+
+二:ACL的基本概念及其工作原理
+
+1.ACL的组成
+
+ ACL由若干条permit或deny语句组成,每条语句就是该ACL的一条规则,每条语句中的permit或deny就是与这条规则相对应的处理动作
+
+
+
+**ACL的组成:**
+
+ ACL编号:在网络设备上配置ACL时,每个ACL都需要分配一个编号,称为ACL编号,用来标识ACL
+
+ 规则:前面提到了,一个ACL通常由若干条“permit/deny”语句组成,每条语句就是该ACL的一条规则
+
+ 规则编号:每条规则都有一个相应的编号,称为规则编号,用来标识ACL规则。可以自定义,也可以系统自动分配。ACL规则的编号范围是0~4294967294,所有规则均按照规则编号从小到大进行排序
+
+ 动作:每条规则中的permit或deny,就是与这条规则相对应的处理动作。permit指“允许”,deny指“拒绝”,但是ACL一般是结合其他技术使用,不同的场景,处理动作的含义也有所不同
+
+ 匹配项:ACL定义了极其丰富的匹配项。例子中体现的源地址,ACL还支持很多其他规则匹配项。例如,二层以太网帧头信息(如源MAC、目的MAC、以太帧协议类型)、三层报文信息(如目的地址、协议类型)以及四层报文信息(如TCP/UDP端口号)等
+
+2.规则编号
+
+
+
+**规则编号和步长的概念:**
+
+ 规则编号:每条规则都有一个相应的编号,称为规则编号,用来标识ACL规则。可以自定义,也可以系统自动分配
+
+ 步长:系统自动为ACL规则分配编号时,每个相邻规则编号之间会有一个差值,这个差值称为“步长”。缺省步长为5,所以规则编号就是5/10/15…以此类推
+
+ 如果手工指定了一条规则,但未指定规则编号,系统就会使用大于当前ACL内最大规则编号且是步长整数倍的最小整数作为规则编号
+
+ 步长可以调整,如果将步长改为2,系统则会自动从当前步长值开始重新排列规则编号,规则编号就变成2、4、6…
+
+3.通配符
+
+
+
+ 当进行IP地址匹配的时候,后面会跟着32位掩码位,这32位称为通配符
+
+ 通配符,也是点分十进制格式,换算成二进制后,“0”表示“匹配”,“1”表示“不关心”
+
+**具体看下这2条规则:**
+
+ rule 5: 拒绝源IP地址为10.1.1.1报文通过——因为通配符为全0,所以每一位都要严格匹配,因此匹配的是主机IP地址10.1.1.1
+
+ rule 15:允许源IP地址为10.1.1.0/24网段地址的报文通过——因为通配符:0.0.0.11111111,后8位为1,表示不关心,因此10.1.1.xxxxxxxx 的后8位可以为任意值,所以匹配的是10.1.1.0/24网段
+
+**如果要精确匹配192.168.1.1/24这个IP地址对应的网段地址,通配符是多少**
+
+ 可以得出:网络位需要严格匹配,主机位无所谓,因此通配符为“0.0.0.255
+
+**匹配192.168.1.0/24这个子网中的奇数IP地址,例如:192.168.1.1、192.168.1.3、192.168.1.5等**
+
+
+
+如果想匹配192.168.1.0/24网段中的奇数IP地址,通配符该怎么写呢?
+
+ 我们先来看一看,奇数IP地址都有哪些:192.168.1.1、192.168.1.5、192.168.1.11……
+
+ 后八位写成二进制:192.168.1.00000001、192.168.1.00000101、192.168.1.00001011……
+
+ 可以看出共同点:最后8位的高7位是任意值,最低位固定为1,因此答案是:192.168.1.1 0.0.0.254(0.0.0.11111110)
+
+这就得出了通配符的一个特点:通配符中的1或者0是可以不连续的
+
+**还有两个特殊的通配符:**
+
+ 当通配符全为0来匹配IP地址时,表示精确匹配某个IP地址
+
+ 当通配符全为1来匹配0.0.0.0地址时,表示匹配了所有IP地址
+
+4.ACL的分类与标识
+
+**基本ACL规则定义方式的分类**
+
+
+
+**基于ACL标识方法的分类**
+
+
+
+**基于ACL规则定义方式的划分,可分为:**
+
+ 基本ACL、高级ACL、二层ACL、用户自定义ACL和用户ACL
+
+**基于ACL标识方法的划分,则可分为:**
+
+ 数字型ACL和命名型ACL
+
+**注意:**
+
+ 用户在创建ACL时可以为其指定编号,不同的编号对应不同类型的ACL。同时,为了便于记忆和识别,用户还可以创建命名型ACL,即在创建ACL时为其设置名称。命名型ACL,也可以是“名称 数字”的形式,即在定义命名型ACL时,同时指定ACL编号。如果不指定编号,系统则会自动为其分配一个数字型ACL的编号
+
+5.基本ACL与高级ACL
+
+**基本ACL**
+
+
+
+ 主要针对IP报文的源IP地址进行匹配,基本ACL的编号范围是2000-2999
+
+ 比如这个例子,创建的是acl 2000,就意味着创建的是基本ACL
+
+**高级ACL**
+
+
+
+ 可以根据IP报文中的源IP地址、目的IP地址、协议类型,TCP或UDP的源目端口号等元素进行匹配,可以理解为:基本ACL是高级ACL的一个子集,高级ACL可以比基本ACL定义出更精确、更复杂、更灵活的规则
+
+6.ACL的匹配机制
+
+
+
+**ACL的匹配机制概括来说就是:**
+
+ 配置ACL的设备接收报文后,会将该报文与ACL中的规则逐条进行匹配,如果不能匹配上,就会继续尝试去匹配下一条规则
+
+ 一旦匹配上,则设备会对该报文执行这条规则中定义的处理动作,并且不再继续尝试与后续规则匹配
+
+**匹配流程:首先系统会查找设备上是否配置了ACL**
+
+ 如果ACL不存在,则返回ACL匹配结果为:不匹配
+
+ 如果ACL存在,则查找设备是否配置了ACL规则
+
+ 如果规则不存在,则返回ACL匹配结果为:不匹配
+
+ 如果规则存在,则系统会从ACL中编号最小的规则开始查找
+
+ 如果匹配上了permit规则,则停止查找规则,并返回ACL匹配结果为:匹配(允许)
+
+ 如果匹配上了deny规则,则停止查找规则,并返回ACL匹配结果为:匹配(拒绝)
+
+ 如果未匹配上规则,则继续查找下一条规则,以此循环。如果一直查到最后一条规则,报文仍未匹配上,则返回ACL匹配结果为:不匹配
+
+**从整个ACL匹配流程可以看出,报文与ACL规则匹配后,会产生两种匹配结果:“匹配”和“不匹配”**
+
+ 匹配(命中规则):指存在ACL,且在ACL中查找到了符合匹配条件的规则。不论匹配的动作是“permit”还是“deny”,都称为“匹配”,而不是只是匹配上permit规则才算“匹配”
+
+ 不匹配(未命中规则):指不存在ACL,或ACL中无规则,再或者在ACL中遍历了所有规则都没有找到符合匹配条件的规则。以上三种情况,都叫做“不匹配”
+
+**匹配原则:一旦命中即停止匹配**
+
+7.ACL的匹配顺序及匹配结果
+
+**配置顺序(config模式)**
+
+ 系统按照ACL规则编号从小到大的顺序进行报文匹配,规则编号越小越容易被匹配
+
+
+
+ 一条ACL可以由多条“deny或permit”语句组成,每一条语句描述一条规则,这些规则可能存在包含关系,也可能有重复或矛盾的地方,因此ACL的匹配顺序是十分重要的
+
+ 华为设备支持两种匹配顺序:自动排序(auto模式)和配置顺序(config模式)。缺省的ACL匹配顺序是config模式
+
+ 自动排序,是指系统使用“深度优先”的原则,将规则按照精确度从高到低进行排序,并按照精确度从高到低的顺序进行报文匹配
+
+ 配置顺序,系统按照ACL规则编号从小到大的顺序进行报文匹配,规则编号越小越容易被匹配
+
+ 如果后面又添加了一条规则,则这条规则会被加入到相应的位置,报文仍然会按照从小到大的顺序进行匹配
+
+**匹配结果:**
+
+ 首先理解ACL 2000的含义:
+
+ rule 1:允许源IP地址为192.168.1.1的报文
+
+ rule 2:允许源IP地址为192.168.1.2的报文
+
+ rule 3:拒绝源IP地址为192.168.1.2的报文
+
+ rule 4:允许其他所有IP地址的报文
+
+ 当源IP地址为192.168.1.3的报文经过配置了ACL的设备时:
+
+ 首先查看rule 1,发现不匹配
+
+ 继续查看rule 2,发现仍不匹配
+
+ 继续查看rule 3,发现匹配,且是“拒绝”动作
+
+**注意:**
+
+ ACL技术总是与其他技术结合在一起使用的,因此,所结合的技术不同,“允许(permit)”及“拒绝 (deny)”的内涵和作用也会不同。例如,当ACL技术与流量过滤技术结合使用时,permit就是“允许通行”的意思,deny就是“拒绝通行”的意思
+
+8.ACL的匹配位置
+
+
+
+**入站(Inbound)及出站(Outbound)方向**
+
+
+
+三:ACL的基础配置及应用
+
+1.基本ACL的基础配置命令
+
+
+
+**创建基本ACL**
+
+ [Huawei] **acl** [ **number** ] *acl-number* [ **match-order config** ]
+
+ *acl-number*:指定访问控制列表的编号
+
+ **match-order config**:指定ACL规则的匹配顺序,config表示配置顺序
+
+ [Huawei] **acl name** *acl-name* { **basic** | *acl-number* } [ **match-order config** ]
+
+ *acl-name*:指定创建的ACL的名称
+
+ **basic**:指定ACL的类型为基本ACL
+
+**配置基本ACL规则**
+
+ [Huawei-acl-basic-2000] **rule** [ *rule-id* ] { **deny** | **permit** } [ **source** { *source-address* *source-wildcard* | **any** } | **time-range** *time-name* ]
+
+ *rule-id*:指定ACL的规则ID
+
+ **deny**:指定拒绝符合条件的报文
+
+ **permit**:指定允许符合条件的报文
+
+ **source** { *source-address source-wildcard* | **any** }:指定ACL规则匹配报文的源地址信息。如果不配置,表示报文的任何源地址都匹配
+
+ *source-address*:指定报文的源地址
+
+ *source-wildcard*:指定源地址通配符
+
+ **any**:表示报文的任意源地址。相当于source-address为0.0.0.0或者source wildcard为255.255.255.255
+
+ **time-range** *time-name*:指定ACL规则生效的时间段。其中,time-name表示ACL规则生效时间段名称。如果不指定时间段,表示任何时间都生效
+
+2.使用基本ACL过滤数据流量
+
+
+
+**配置需求**
+
+ 在Router上部署基本ACL后,ACL将试图穿越Router的源地址为192.168.1.0/24网段的数据包过滤掉,并放行其他流量,从而禁止192.168.1.0/24网段的用户访问Router右侧的服务器网络
+
+
+
+**配置思路:**
+
+ 配置基本ACL和流量过滤,使设备可以对特定网段的报文进行过滤
+
+**配置步骤:**
+
+ 如图完成路由器的IP地址和路由相关配置
+
+ 创建基本ACL 2000并配置ACL规则,拒绝192.168.1.0/24网段的报文通过,允许其他网段的报文通过
+
+ 配置流量过滤
+
+**注意**
+
+ **traffic-filter**命令,用来在接口上配置基于ACL对报文进行过滤
+
+ 命令格式:**traffic-filter** { **inbound** | **outbound** } **acl** { *acl-number* | **name** acl *name* }
+
+ **inbound**:指定在接口入方向上配置报文过滤
+
+ **outbound**:指定在接口出方向上配置报文过滤
+
+ **acl**:指定基于IPv4 ACL对报文进行过滤
+
+3.高级ACL的基础配置命令
+
+
+
+[Huawei] **acl** [ **number** ] *acl-number* [ **match-order config** ]
+
+ *acl-number*:指定访问控制列表的编号
+
+ **match-order config**:指定ACL规则的匹配顺序,config表示配置顺序
+
+[Huawei] **acl name** *acl-name* { **advance** | *acl-number* } [ **match-order config** ]
+
+ *acl-name*:指定创建的ACL的名称
+
+ **advance**:指定ACL的类型为高级ACL
+
+
+
+**当参数protocol为IP时:**
+
+ **rule** [ *rule-id* ] { **deny** | **permit** } **ip** [ **destination** { *destination-address* *destination-wildcard* | **any** } | **source** { *source-address source-wildcard* | **any** } | **time-range** *time-name* | [ **dscp** *dscp* | [ **tos** *tos* | **precedence** *precedence* ] ] ]
+
+ **ip** :指定ACL规则匹配报文的协议类型为IP
+
+ **destination** { *destination-address destination-wildcard* | **any** }:指定ACL规则匹配报文的目的地址信息。如果不配置,表示报文的任何目的地址都匹配
+
+ **dscp** *dscp*:指定ACL规则匹配报文时,区分服务代码点(Differentiated Services Code Point),取值为:0~63
+
+ **tos** *tos*:指定ACL规则匹配报文时,依据服务类型字段进行过滤,取值为:0~15
+
+ **precedence** *precedence*:指定ACL规则匹配报文时,依据优先级字段进行过滤。precedence表示优先级字段值,取值为:0~7
+
+**当参数protocol为TCP时:**
+
+ **rule** [ *rule-id* ] { **deny** | **permit** } { *protocol-number* | **tcp** } [ **destination**{ *destination-address destination-wildcard* | **any** } | **destination-port** { **eq** *port* | **gt** *port* | **lt** *port* | **range** *port-start port-end* } | **source** { *source-address source*wildcard | **any** } | **source-port** { **eq** port | **gt** port | **lt** port | **range** port-start port *end* } | **tcp-flag** { **ack** | **fin** | **syn** } | **time-range** *time-name* ]
+
+ *protocol-number* | **tcp**:指定ACL规则匹配报文的协议类型为TCP。可以采用数值6表示指定TCP协议
+
+ **destination-port** { **eq** *port* | **gt** *port* | **lt** *port* | **range** *port-start port-end*}:指定ACL规则匹配报文的UDP或者TCP报文的目的端口,仅在报文协议是TCP或 者UDP时有效。如果不指定,表示TCP/UDP报文的任何目的端口都匹配
+
+ − **eq** *port*:指定等于目的端口
+
+ − **gt** *port*:指定大于目的端口
+
+ − **lt** *port*:指定小于目的端口
+
+ − **range** *port-start port-end*:指定源端口的范围
+
+ **tcp-flag**:指定ACL规则匹配报文的TCP报文头中SYN Flag
+
+4.使用高级ACL限制不同网段的用户互访
+
+
+
+**配置需求**
+
+ 某公司通过Router实现各部门之间互连,为方管理网络,管理员为公司的研发部门和市场部门规划了两个网段IP地址
+
+ 现要求Router能够限制两个网段之间互访,防止公司机密泄露
+
+
+
+
+
+**配置思路:**
+
+ 配置高级ACL和流量过滤,使设备可以对研发部与市场部互访的报文进行过滤
+
+**配置步骤:**
+
+ 如图完成路由器的IP地址和路由的相关配置
+
+ 创建高级ACL 3001并配置ACL规则,拒绝研发部访问市场部的报文通过
+
+ 创建高级ACL 3002并配置ACL规则,拒绝市场部访问研发部的报文通过
+
+ 由于研发部和市场部互访的流量分别从接口GE0/0/1和GE0/0/2进入Router,所以在接口GE0/0/1和GE0/0/2的入方向配置流量过滤
+
+**注意:**
+
+ **traffic-filter**命令,用来在接口上配置基于ACL对报文进行过滤
+
+ 命令格式:**traffic-filter** { **inbound** | **outbound** } **acl** { *acl-number* | **name** *acl* *name* }
+
+ **inbound**:指定在接口入方向上配置报文过滤
+
+ **outbound**:指定在接口出方向上配置报文过滤
+
+ **acl**:指定基于IPv4 ACL对报文进行过滤
+
+第二节:路由策略与路由控制
+
+一:路由控制概述
+
+1.技术背景
+
+
+
+ R1上将业务A、B、C的网段路由引入时希望不引入业务C网段路由,同时R3上将OSPF路由引入到IS-IS中时,同样只希望引入B业务网段路由,此时需要一个工具在引入路由时进行限制
+
+2.路由控制概述
+
+路由控制可以通过路由策略(Route-Policy)实现,路由策略应用灵活而广泛,有以下几种常见方式:
+
+ 控制路由的发布:通过路由策略对发布的路由进行过滤,只发布满足条件的路由
+
+ 控制路由的接收:通过路由策略对接收的路由进行过滤,只接收满足条件的路由
+
+ 控制路由的引入:通过路由策略控制从其他路由协议引入的路由条目,只有满足条件的路由才会被引入
+
+
+
+二:路由控制工具
+
+1.匹配工具1:访问控制列表
+
+ 访问控制列表(Access Control List,ACL)是一个匹配工具,能够对报文及路由进行匹配和区分
+
+ ACL由若干条permit或deny语句组成。每条语句就是该ACL的一条规则,每条语句中的permit或deny就是与这条规则相对应的处理动作
+
+
+
+**ACL的匹配机制**
+
+
+
+**ACL的匹配顺序及匹配结果**
+
+ 配置顺序(config模式)
+
+ 系统按照ACL规则编号从小到大的顺序进行报文匹配,规则编号越小越容易被匹配
+
+
+
+**常用匹配举例**
+
+
+
+2.匹配工具2:IP前缀列表
+
+ IP前缀列表(IP-Prefix List)是将路由条目的网络地址、掩码长度作为匹配条件的过滤器,可在各路由协议发布和接收路由时使用
+
+ 不同于ACL,IP-Prefix List能够同时匹配IP地址前缀长度以及掩码长度,增强了匹配的精确度
+
+
+
+ ip-prefix-name:地址前缀列表名称
+
+ 序号:本匹配项在地址前缀列表中的序号,匹配时根据序号从小到大进行顺序匹配
+
+ 动作:permit/deny,地址前缀列表的匹配模式为允许/拒绝,表示匹配/不匹配
+
+ IP网段与掩码:匹配路由的网络地址,以及限定网络地址的前多少位需严格匹配
+
+ 掩码范围:匹配路由前缀长度,掩码长度的匹配范围 mask-length<=greater-equal-value<=less-equal-value<=32
+
+**IP-Prefix的匹配机制**
+
+
+
+**IP-Prefix的匹配示例**
+
+
+
+**IP-Prefix的基础配置命令**
+
+
+
+ ip-prefix-name:指定地址前缀列表的名称
+
+ index index-number:指定本匹配项在地址前缀列表中的序号
+
+ permit:指定地址前缀列表的匹配模式为允许
+
+ deny:指定地址前缀列表的匹配模式为拒绝
+
+ ipv4-address mask-length:指定IP地址和指定掩码长度
+
+ greater-equal greater-equal-value:指定掩码长度匹配范围的下限
+
+ less-equal less-equal-value:指定掩码长度匹配范围的上限
+
+**IP-Prefix的配置举例**
+
+
+
+
+
+
+
+
+
+三:路由策略工具
+
+1.策略工具1:Filter-Policy
+
+ Filter-Policy(过滤-策略)是一个很常用的路由信息过滤工具,能够对接收、发布、引入的路由进行过滤,可应用于IS-IS、OSPF、BGP等协议
+
+
+
+ 如图所示,R1、R2、R3之间运行BGP路由协议,路由在各个设备之间传递,当需要根据实际需求过滤某些路由信息的时候可以使用Filter-Policy实现
+
+**Filter-Policy在距离矢量路由协议中的应用**
+
+ 在距离矢量路由协议中,设备之间传递的是路由信息,如果需要对这种路由信息进行某种过滤,可以使用Filter-Policy实现,出方向和入方向的生效位置如图所示
+
+
+
+ 距离矢量协议是基于路由表生成路由的,因此过滤器会影响从邻居接收的路由和向邻居发布的路由
+
+ 如果要过滤掉上游设备到下游设备的路由,只需要在上游设备配置filter-policy export或者在下游设备上配置filter-policy import
+
+**Filter-Policy在链路状态路由协议中的应用**
+
+ 在链路状态路由协议中,各路由设备之间传递的是LSA信息,然后设备根据LSA汇总成的LSDB信息计算出路由表。但是Filter-Policy只能过滤路由信息,无法过滤LSA
+
+
+
+ OSPF把网络中所泛洪的LSA存储到自己的LSDB中,并且运行SPF算法,计算出一颗以自己为根,无环的最短路径树,Filter-Policy对OSPF计算出来的路由(加载到路由表之前)进行过滤,而不会对LSA进行过滤
+
+**Filter-Policy的基础配置命令**
+
+
+
+
+
+**OSPF中使用Filter-Policy**
+
+
+
+ OSPF的路由信息记录在LSDB中,filter-policy import命令实际上是对OSPF计算出来的路由进行过滤,不是对发布和接收的LSA进行过滤
+
+ filter-policy export命令通过指定protocol或process-id对特定的某一种协议或某一进程的路由进行过滤。如果没有指定protocol和process-id,则OSPF将对所有引入的路由信息进行过滤
+
+**IS-IS中使用Filter-Policy**
+
+
+
+ IS-IS的路由表项需要被成功下发到IP路由表中,才能用来指导IP报文转发。如果IS-IS路由表中有到达某个目的网段的路由,但是并不希望将该路由下发到IP路由表中,可以使用filter-policy import命令结合基本ACL、IP-Prefix、路由策略等方式,只将部分IS-IS路由下发到IP路由表中
+
+**BGP中使用Filter-Policy**
+
+
+
+2.策略工具2:Route-Policy
+
+ Route-Policy是一个策略工具,用于过滤路由信息,以及为过滤后的路由信息设置路由属性
+
+ 一个Route-Policy由一个或多个节点(Node)构成,每个节点都可以是一系列条件语句(匹配条件)以及执行语句(执行动作)的集合,这些集合按照编号从小到大的顺序排列
+
+
+
+ 当使用Route-Policy时,Node的值小的节点先进行匹配。一个节点匹配成功后,路由将不再匹配其他节点。全部节点匹配失败后,路由将被过滤
+
+**Route-Policy的组成**
+
+ 一个Route-Policy由一个或多个节点构成,每个节点包括多个if-match和apply子句
+
+
+
+ permit或deny:指定Route-Policy节点的匹配模式为允许或拒绝
+
+ node:指定Route-Policy的节点号。整数形式,取值范围是0~65535
+
+ if-match子句:定义该节点的匹配条件
+
+ apply子句:定义针对被匹配路由执行的操作
+
+**Route-Policy的匹配顺序**
+
+ 路由策略使用不同的匹配条件和匹配模式选择路由和改变路由属性
+
+
+
+ 个路由策略中包含N(N>=1)个节点(Node)。路由进入路由策略后,按节点序号从小到大依次检查各个节点是否匹配。匹配条件由If-match子句定义
+
+ 当路由与该节点的所有If-match子句都匹配成功后,进入匹配模式选择,不再匹配其他节点。匹配模式分permit和deny两种,permit:路由将被允许通过,并且执行该节点的apply子句对路由信息的一些属性进行设置,deny:路由将被拒绝通过
+
+ 当路由与该节点的任意一个If-match子句匹配失败后,进入下一节点。如果和所有节点都匹配失败,路由信息将被拒绝通过
+
+**Route-Policy的基础配置命令**
+
+
+
+命令:route-policy route-policy-name { permit | deny } node node
+
+ permit:指定Route-Policy节点的匹配模式为允许。如果路由与节点所有的if-match子句匹配成功,则执行此节点apply子句;否则,进行下一节点
+
+ deny:指定Route-Policy节点的匹配模式为拒绝。如果路由与节点所有的if-match子句匹配成功,则该路由将被拒绝通过;否则进行下一节点
+
+ node node:指定Route-Policy的节点号。当使用Route-Policy时,node的值小的节点先进行匹配。一个节点匹配成功后,路由将不再匹配其他节点。全部节点匹配失败后,路由将被过滤。整数形式,取值范围是0~65535
+
+
+
+ apply子句用来为路由策略指定动作,用来设置匹配成功的路由的属性。在一个节点中,如果没有配置apply子句,则该节点仅起过滤路由的作用。如果配置一个或多个apply子句,则通过节点匹配的路由将执行所有apply子句
+
+四:路由控制案例
+
+1.对接收的路由进行过滤
+
+
+
+ R1、R2、R3运行OSPF,R1将192.168.1.0/24、192.168.2.0/24、192.168.3.0/24和192.168.4.0/24宣告进OSPF
+
+ 现在要求R2不能访问R1上192.168.1.0/24网段,但是R3可以正常访问
+
+ 为实现该需求,可以在R2上对接收的路由使用Filter-Policy进行过滤
+
+**配置**
+
+```shell
+[R2] ip ip-prefix in index 10 permit 192.168.2.0 24
+[R2] ip ip-prefix in index 20 permit 192.168.3.0 24
+[R2] ip ip-prefix in index 30 permit 192.168.4.0 24
+
+[R2] ospf
+[R2-ospf-1] filter-policy ip-prefix in import
+```
+
+ 通过Filter-Policy进行路由过滤,只影响本地的路由表,因此R3可以正常学习到192.168.1.0/24网段的路由
+
+2.对发布的路由进行过滤
+
+
+
+ R1、R2、R3运行OSPF,R1将直连网段192.168.1.0/24、192.168.2.0/24、192.168.3.0/24和192.168.4.0/24引入OSPF
+
+ 现在要求R2、R3只能学习到192.168.1.0/24网段的路由,学习不到其他三个网段的路由
+
+ 为实现该需求,可以在R1上使用Filter-Policy对引入的路由在发布时进行过滤
+
+**配置**
+
+```shell
+[R1] ip ip-prefix out index 10 permit 192.168.1.0 24
+
+[R1] ospf
+[R1-ospf-1] import-route direct
+[R1-ospf-1] filter-policy ip-prefix out export
+```
+
+3.修改路由属性
+
+
+
+ R1、R2、R3运行OSPF,R1将直连网段192.168.1.0/24引入OSPF
+
+ 现在要求R2、R3学到的OSPF路由192.168.1.0/24为external-type 1路由(默认为external-type 2路由)
+
+ 为实现该需求,可以在R1上使用Route-Policy在引入路由时修改外部路由的类型为external-type 1
+
+**配置**
+
+```shell
+[R1] ip ip-prefix external index 10 permit 192.168.1.0 24
+
+[R1] route-policy RP permit node 10
+[R1-route-policy] if-match ip-prefix external
+[R1-route-policy] apply cost-type type-1
+[R1-route-policy] quit
+
+[R1] ospf
+[R1-ospf-1] import-route direct route-policy RP
+```
+
+4.双点双向路由重发布
+
+
+
+ 在边界路由器上把两个路由域的路由相互引入,称之为双向路由重发布
+
+ 两个路由域存在两个边界路由器,并且都执行双向路由重分发,此时称为双点双向路由重发布
+
+ 双点双向路由重发布是一种经典的路由模型,因单点的双向路由重发布缺乏冗余性,一旦单点的边界路由器故障,那么两个路由域之间的通信可能就会出现问题,因此在大型网络部署中一般采用双点双向路由重发布
+
+ 双点双向重路由发布虽然增强了网络的可靠性,但是容易引发:次优路径、路由环路等问题
+
+5.次优路径问题
+
+
+
+**以10.1.1.0/24为例:**
+
+ R1将直连路由10.1.1.0/24引入到OSPF中
+
+ R2、R3执行双向路由重发布,R2先将10.1.1.0/24重发布到IS-IS中,R3将会学习到来自R4的IS-IS路由
+
+ 对R3而言,IS-IS路由(优先级15)优于OSPF外部路由(优先级150),因此优选来自R4的IS-IS路由。后续R3访问10.1.1.0/24网段的路径为:R3->R4->R2->R1,这是次优路径
+
+
+
+解决方案一:在R3的IS-IS进程内,通过Filter-Policy禁止来自R4的10.1.1.0/24路由加入本地路由表
+
+**配置**
+
+```shell
+[R3] acl 2001
+[R3-acl-basic-2001] rule 5 deny source 10.1.1.0 0
+[R3-acl-basic-2001] rule 10 permit
+
+[R3] isis
+[R3-isis-1] filter-policy 2001 import
+```
+
+
+
+ 解决方案二:R3通过ACL匹配10.1.1.0/24路由,在Route-Policy中调用该条ACL,将匹配这条ACL的路由的优先级设置为14(优于IS-IS)。在OSPF视图下使用preference ase命令调用Route-Policy修改外部路由的优先级
+
+**配置**
+
+```shell
+[R3]acl 2000
+[R3-acl-basic-2000] rule permit source 10.1.1.0 0
+[R3-acl-basic-2000] quit
+[R3]route-policy hcip permit node 10
+[R3-route-policy] if-match acl 2000
+[R3-route-policy] apply preference 14
+[R3-route-policy] quit
+[R3]ospf 1
+[R3-ospf-1] preference ase route-policy hcip
+```
+
+6.路由环路问题
+
+
+
+**场景描述:**
+
+ R1将直连路由10.1.1.0/24引入到OSPF中
+
+ R1、R2、R3运行OSPF协议,10.1.1.0/24网段路由在全OSPF域内通告
+
+ R2执行了双向路由重发布
+
+ R2、R3、R4运行IS-IS协议, 10.1.1.0/24网段路由在全IS-IS域内通告
+
+ R3执行了双向路由重发布
+
+ 10.1.1.0/24网段路由再次被通告进OSPF域内,形成路由环路
+
+**解决方案:**
+
+ 解决方案一:在R3的OSPF中引入IS-IS路由时,通过Route-Policy过滤掉10.1.1.0/24路由
+
+**配置**
+
+```shell
+[R3] acl 2001
+[R3-acl-basic-2001] rule 5 deny source 10.1.1.0 0
+[R3-acl-basic-2001] rule 10 permit
+
+[R3] route-policy RP permit node 10
+[R3-route-policy] if-match 2001
+[R3-route-policy] quit
+
+[R3] ospf
+[R3-ospf-1] import-route isis 1 route-policy RP
+```
+
+ 解决方案二:使用Tag实现有选择性地路由引入,在R2上将路由10.1.1.0/24从OSPF引入到IS-IS中时打上Tag 200,在R3上将IS-IS引入到OSPF中时,过滤携带Tag 200的路由
+
+**配置**
+
+```shell
+[R2]acl 2000
+[R2-acl-basic-2000]rule permit source 10.1.1.0 0
+[R2-acl-basic-2000]quit
+[R2]route-policy hcip permit node 10
+[R2-route-policy]if-match acl 2000
+[R2-route-policy]apply tag 200
+[R2-route-policy]quit
+[R2]isis 1
+[R2-isis-1]import-route ospf route-policy hcip
+```
+
+```shell
+[R3]route-policy hcip deny node 10
+[R3-route-policy]if-match tag 200
+[R3-route-policy]quit
+[R3]route-policy hcip permit node 20
+
+[R3]ospf 1
+[R3-ospf-1]import-route isis route-policy hcip
+```
+
+ 在路由重发布的实际应用中,通过IP前缀进行路由匹配固然可行,但当网络规模较大时,配置工作量较大;通过Tag进行路由匹配可以极大简化配置工作量
+
+第三节:流量过滤与转发路径控制
+
+一:策略路由
+
+1.策略路由技术背景
+
+ 在某些场景中我们希望一些特定用户、特定业务的流量走指定的转发路径,而其余用户或业务的流量则依旧根据路由表进行转发
+
+
+
+ 示例:双ISP接入的企业,想要实现内网网段1访问Internet通过ISP1、内网网段2访问Internet通过ISP2,该需求无法通过传统的路由技术实现
+
+2.PBR介绍 - 基本概念
+
+
+
+ PBR(Policy-Based Routing,策略路由):PBR使得网络设备不仅能够基于报文的目的IP地址进行数据转发,更能基于其他元素进行数据转发,例如源IP地址、源MAC地址、目的MAC地址、源端口号、目的端口号、VLAN-ID等等
+
+ 用户还可以使用ACL匹配特定的报文,然后针对该ACL进行PBR部署
+
+ 若设备部署了PBR,则被匹配的报文优先根据PBR的策略进行转发,即PBR策略的优先级高于传统路由表
+
+3.PBR介绍 - 结构
+
+
+
+ PBR与Route-Policy类似,由多个节点组成,每个节点由匹配条件(条件语句)和执行动作(执行语句)组成
+
+ 每个节点内可包含多个条件语句
+
+ 节点内的多个条件语句之间的关系为“与”,即匹配所有条件语句才会执行本节点内的动作
+
+ 节点之间的关系为“或”,PBR根据节点编号从小到大顺序执行,匹配当前节点将不会继续向下匹配
+
+4.PBR介绍 - 命令语法
+
+
+
+**PBR的节点匹配模式:**
+
+ permit表示对满足匹配条件的报文进行策略路由
+
+ deny表示对满足匹配条件的报文不进行策略路由
+
+5.PBR与路由策略区别
+
+| **名称** | **操作对象** | **描述** |
+| ------------------------ | ------------ | ------------------------------------------------------------ |
+| 路由策略(Route-Policy) | 路由信息 | 路由策略是一套用于对路由信息进行过滤、属性设置等操作的方法,通过对路由的操作或控制,来影响数据报文的转发路径 |
+| PBR | 数据报文 | PBR直接对数据报文进行操作,通过多种手段匹配感兴趣的报文,然后执行丢弃或强制转发路径等操作 |
+
+6.PBR的分类
+
+
+
+ 接口PBR只对转发的报文起作用,对本地始发的报文无效
+
+ 接口PBR调用在接口下,对接口的入方向报文生效。缺省情况下,设备按照路由表的下一跳进行报文转发,如果配置了接口PBR,则设备按照接口PBR指定的下一跳进行转发
+
+
+
+ 本地PBR对本地始发的流量生效,如:本地始发的ICMP报文
+
+ 本地PBR在系统视图调用
+
+7.PBR典型应用场景
+
+
+
+ 内网防火墙旁挂部署在核心交换机,为防护内网在核心交换机的三层接口上部署PBR,将来自外部网络的流量牵引到防火墙上进行安全检查,检查完的流量再发送回核心交换机,由核心交换机依据路由表转发到内网
+
+ 将流量牵引到别的设备进行安全检查等类似的行为我们称之为“引流”,PBR是一种常见的引流工具
+
+
+
+ 当企业存在多个网络出口时,若想指定部分网段访问Internet时的网络出口,可以使用PBR:在出口设备的内网接口配置PBR,匹配来自内网的流量,为其指定不同的下一跳公网地址
+
+8.配置
+
+
+
+**当ACL的rule配置为permit时,设备会对匹配该规则的报文执行本地策略路由的动作:**
+
+ 本地策略路由中策略点为permit时对满足匹配条件的报文进行策略路由
+
+ 本地策略路由中策略点为deny时对满足匹配条件的报文不进行策略路由,即根据目的地址查找路由表转发报文
+
+**当ACL配置了rule,如果报文未匹配上任何规则,则根据目的地址查找路由表转发报文**
+
+当ACL的rule配置为deny或ACL未配置规则时,应用该ACL的本地策略路由不生效,即根据目的地址查找路由表转发报文
+
+
+
+9.配置案例
+
+
+
+**需求:**
+
+ 内网存在两个网段,网段1:10.1.1.0/24,网段2:10.1.2.0/24,在RTA的GE0/0/0接口部署PBR,实现网段1访问Internet通过ISP1、网段2访问Internet通过ISP2
+
+ RTA上旁挂了一台服务器,要求在RTA上部署的策略路由不影响内网用户访问该服务器
+
+**配置**
+
+ 配置ACL 3000,其中rule 1 deny网段1访问服务器的流量,rule 2匹配网段1访问Internet的流量
+
+```shell
+[RTA] acl number 3000
+[RTA-acl-adv-3000] rule 1 deny ip source 10.1.1.0 0.0.0.255 destination 10.1.3.254 0
+[RTA-acl-adv-3000] rule 2 permit ip source 10.1.1.0 0.0.0.255 destination
+0.0.0.0 0
+```
+
+ 配置ACL 3001,其中rule 1 deny网段2访问服务器的流量,rule 2匹配网段2访问Internet的流量
+
+```shell
+[RTA] acl number 3001
+[RTA-acl-adv-3001] rule 1 deny ip source 10.1.2.0 0.0.0.255 destination 10.1.3.254 0
+[RTA-acl-adv-3001] rule 2 permit ip source 10.1.2.0 0.0.0.255 destination
+0.0.0.0 0
+```
+
+ 创建PBR hcip,创建节点10,调用ACL 3000,指定其转发下一跳为202.1.2.3
+
+```shell
+[RTA] policy-based-route hcip permit node 10
+[RTA-policy-based-route-hcip-10] if-match acl 3000
+[RTA-policy-based-route-hcip-10] apply ip-address next-hop 202.1.2.3
+```
+
+ 创建PBR hcip节点20,调用ACL 3001,指向其转发下一跳为154.1.2.3
+
+```shell
+[RTA] policy-based-route hcip permit node 20
+[RTA-policy-based-route-hcip-20] if-match acl 3001
+[RTA-policy-based-route-hcip-20] apply ip-address next-hop 154.1.2.3
+```
+
+ 在GE0/0/0接口调用PBR hcip
+
+```shell
+[RTA]interface GigabitEthernet 0/0/0
+[RTA-GigabitEthernet0/0/0] ip policy-based-route hcip
+```
+
+二:MQC
+
+1.MQC介绍
+
+
+
+ MQC(Modular QoS Command-Line Interface,模块化QoS命令行)是指通过将具有某类共同特征的数据流划分为一类,并为同一类数据流提供相同的服务,也可以对不同类的数据流提供不同的服务
+
+ MQC包含三个要素:流分类(traffic classifier)、流行为(traffic behavior)和流策略(traffic policy)
+
+ MQC的流行为支持重定向报文,因此可以使用MQC实现IP单播策略路由
+
+
+
+ 流策略:将流分类和流行为绑定,对分类后的报文执行对应流行为中定义的动作
+
+ 一个流策略可以绑定多个流分类和流行为
+
+2.MQC - 流分类
+
+ 流分类:定义一组流量匹配规则,以对报文进行分类。流分类支持的匹配项如下所示
+
+
+
+**流分类中各规则之间的关系分为:and或or,缺省情况下的关系为or**
+
+ and:当流分类中包含ACL规则时,报文必须匹配其中一条ACL规则以及所有非ACL规则;当流分类中没有ACL规则时,报文必须匹配所有非ACL规则
+
+ or:报文只要匹配了流分类中的一个规则,设备就认为报文匹配中该流分类
+
+3.MQC - 流行为
+
+ 流行为:用来定义执行的动作,支持报文过滤、重标记优先级、重定向、流量统计等动作
+
+
+
+4.MQC - 流策略
+
+**流策略:**
+
+ 流策略支持在接口上调用
+
+ 流策略存在方向(inbound、outbound)的概念,策略中的流行为匹配入、出方向的报文,对匹配中的报文执行相应的流动作
+
+
+
+**注意:**
+
+ 流策略不同于PBR,PBR只能调用在三层接口,而流策略支持调用在二层接口
+
+5.配置介绍
+
+
+
+6.使用MQC实现策略路由
+
+
+
+**需求:**
+
+ 内网存在两个网段,网段1:10.1.1.0/24,网段2:10.1.2.0/24,在RTA上通过MQC实现策略路由,实现网段1访问Internet通过ISP1、网段2访问Internet通过ISP2
+
+ 将MQC调用在RTA的GE0/0/0接口
+
+**配置:**
+
+ 配置ACL3000、3001分别匹配网段1、网段2访问Internet的流量。
+
+```shell
+[RTA] acl number 3000
+[RTA-acl-adv-3000] rule 2 permit ip source 10.1.1.0 0.0.0.255 destination 0.0.0.0 0
+[RTA] acl number 3001
+[RTA-acl-adv-3001] rule 2 permit ip source 10.1.2.0 0.0.0.255 destination 0.0.0.0 0
+```
+
+ 创建流分类1、2分别匹配ACL3000、ACL3001
+
+```shell
+[RTA] traffic classifier 1
+[RTA-classifier-1] if-match acl 3000
+[RTA] traffic classifier 2
+[RTA-classifier-2] if-match acl 3001
+```
+
+ 创建流行为1、2分别执行将报文重定向到202.1.2.3、154.1.2.3的动作
+
+```shell
+[RTA] traffic behavior 1
+[RTA-behavior-1] redirect ip-nexthop 202.1.2.3
+[RTA] traffic behavior 2
+[RTA-behavior-2] redirect ip-nexthop 154.1.2.3
+```
+
+ 创建流策略Redirect,将流分类1、2与流行为1、2一一绑定
+
+```shell
+[RTA] traffic policy Redirect
+[RTA-trafficpolicy-Redirect] classifier 1 behavior 1
+[RTA-trafficpolicy-Redirect] classifier 2 behavior 2
+```
+
+ 在GE0/0/0接口入方向调用流策略Redirect
+
+```shell
+[RTA] interface GigabitEthernet 0/0/0
+[RTA-GigabitEthernet0/0/0] traffic-policy Redirect inbound
+```
+
+三:流量过滤
+
+1.需求背景
+
+ 为提高网络安全性,管理人员需要控制进入网络的流量,将不信任的报文丢弃在网络边界。所谓的不信任报文是指对用户来说存在安全隐患或者不愿意接收的报文。同时保证数据访问安全性,企业网络中经常会要求一些部门之间不能相互访问
+
+
+
+2.流量过滤工具
+
+ Traffic-Filter只能应用在接口视图下,而MQC可以调用在多种视图
+
+
+
+
+
+**Traffic-Filter部署位置**
+
+ 使用Traffic-Filter过滤流量可以灵活地选择部署位置,在流量进入设备或者离开设备的接口上执行过滤动作,双向访问的业务禁止其中一个方向即可实现阻断业务的需求
+
+
+
+**使用Traffic-Filter过滤流量**
+
+
+
+ 部门1、2、3的网关都在RTA上,现要求在RTA上使用Traffic-Filter限制部门2与部门3之间的相互访问
+
+**配置:**
+
+ 配置ACL拒绝部门2访问部门3,并放通其余所有流量
+
+```shell
+[RTA] acl number 3000
+[RTA-acl-adv-3000] rule 1 deny ip source 10.1.2.0 0.0.0.255 destination
+10.1.3.0 0.0.0.255
+[RTA-acl-adv-3000] rule 2 permit ip
+```
+
+ 在GE0/0/2接口调用Traffic-Filter
+
+```shell
+[RTA] interface GigabitEthernet 0/0/2
+[RTA-GigabitEthernet0/0/2] traffic-filter outbound acl 3000
+```
+
+**使用MQC过滤流量**
+
+
+
+ 部门1、2、3的网关都在RTA上,现要求在RTA上使用Traffic-Filter限制部门2与部门3之间的相互访问
+
+**配置:**
+
+ 配置ACL匹配部门2访问部门3的流量
+
+```shell
+[RTA] acl number 3000
+[RTA-acl-adv-3000] rule 1 permit ip source 10.1.2.0 0.0.0.255 destination
+10.1.3.0 0.0.0.255
+```
+
+ 创建流分类2_3、流行为2_3
+
+```shell
+[RTA] traffic classifier 2_3
+[RTA-classifier-2_3] if-match acl 3000
+[RTA] traffic behavior 2_3
+[RTA-behavior-2_3] deny
+```
+
+ 为匹配ACL规则的报文指定报文过滤动作时,如果此ACL中的rule规则配置为permit,则设备对此报文采取的动作由流行为中配置的deny或permit决定;如果此ACL中的rule规则配置为deny,则无论流行为中配置了deny或permit,此报文都被丢弃
+
+ 创建流策略,绑定流分类2_3与流行为2_3
+
+```shell
+[RTA] traffic policy 2_3
+[RTA-trafficpolicy-2_3] classifier 2_3 behavior 2_3
+```
+
+ 在接口GE0/0/1入向调用流策略2_3
+
+```shell
+[RTA] interface GigabitEthernet 0/0/1
+[RTA-GigabitEthernet0/0/1] traffic-policy 2_3 inbound
+```
diff --git a/Datacom-MD/第八章:PPP协议&PPPOE协议.md b/Datacom-MD/第八章:PPP协议&PPPOE协议.md
new file mode 100644
index 0000000..ae59a4f
--- /dev/null
+++ b/Datacom-MD/第八章:PPP协议&PPPOE协议.md
@@ -0,0 +1,483 @@
+PPP协议&PPPOE协议
+
+> 作者:行癫
+
+------
+
+第一节:早期广域网技术概述
+
+一:广域网技术
+
+1.什么是广域网
+
+ 广域网是连接不同地区局域网的网络,通常所覆盖的范围从几十公里到几千公里,他能连接多个地区、城市和国家,或横跨几个洲提供远距离通信,形成国际性的远程网络
+
+
+
+2.广域网与局域网区别
+
+
+
+ 局域网是一种覆盖地理区域比较小的计算机网络
+
+ 广域网是一种通过租用ISP网络或者自建专用网络来构建的覆盖地理区域比较广的计算机网络
+
+**广域网与局域网的区别主要体现在以下几个方面**
+
+ 局域网带宽高但是传输距离短,无法满足广域网长距离传输
+
+ 局域网设备通常是交换机,广域网设备大多都是路由器
+
+ 局域网属于某一单位或者组织,广域网服务大多由ISP提供
+
+ 广域网与局域网一般仅在物理层和数据链路层采用不同的协议或技术,其他层次基本没有差异
+
+ 银行、政府、军队、大型公司的专用网路也属于局域网,且与Internet实现物理隔离
+
+ Internet只是广域网的一种,小企业借用Internet作为广域网连接
+
+3.早期广域网技术介绍
+
+ 早期广域网与局域网的区别在于数据链路层和物理层的差异性,在TCP/IP参考模型中,其他各层无差异
+
+
+
+4.广域网络设备角色介绍
+
+ 广域网络设备基本角色有三种,CE(Customer Edge 用户边缘设备)、PE(Provider Edge 服务提供商边缘设备)和P(Provider 服务提供商设备)
+
+ CE:用户端连接服务提供商的边缘设备,CE连接一个或多个PE,实现用户接入
+
+ PE:服务提供商连接CE的边缘设备,PE同时连接CE和P设备,是重要的网络节点
+
+ P:服务提供商不连接任何CE设备
+
+
+
+5.早期广域网技术的应用
+
+ 早期的广域网技术主要是针对不同的物理链路类型,在数据链路层进行不同的二层封装,在CE与PE之间常用的广域网封装协议有PPP/HDLC/FR等,用于解决用户接入广域网的常居鲁传输问题,在ISP内部常用的广域网协议主要是ATM,它用于解决骨干网高速转发的问题
+
+
+
+第二节:PPP协议原理与配置
+
+一:PPP协议原理
+
+1.PPP协议概述
+
+ PPP(点到点协议)是一种常见的广域网数据链路层协议,主要用于在全双工的链路上进行点到点的数据传输封装
+
+ PPP提供了安全认证协议族PAP(密码验证协议)和CHAP(挑战握手认证协议)
+
+ PPP协议具有良好的扩展性,例如,当需要在以太网链路上承载PPP协议时,PPP可以扩展为PPPoE
+
+ PPP协议提供了LCP(链路控制协议),用于各种链路层参数的协商,例如最大接收单元、认证模式等
+
+ PPP协议提供各种NCP(网络控制协议)。如IPCP(IP控制协议),用于各种网络层参数的协商,更好地支持网络层协议
+
+
+
+2.PPP链路建立流程
+
+PPP链路的建立有三个阶段的协商过程,链路层协商、认证协商(可选)和网络层协商
+
+ 链路层协商:通过LCP报文进行链路层协商,建立链路层连接
+
+ 认证协商(可选):通过链路建立阶段协商的认证方式进行链路认证
+
+ 网络层协商:通过NCP协商来选择和配置一个网络层协议并进行网络层参数协商
+
+
+
+3.PPP链路接口状态机
+
+ PPP协商由链路两端的接口完成,接口的状态表示了协议的协商阶段
+
+
+
+ 通信双方开始建立PPP链路时,先进入到Establish阶段
+
+ 在Establish阶段,进行LCP协商:协商通信双方的MRU(Maximum Receive Unit,最大接收单元)、认证方式和魔术字(Magic Number)等选项。协商成功后进入Opened状态,表示底层链路已建立
+
+ 如果配置了认证,将进入Authenticate阶段。否则直接进入Network阶段
+
+ 在Authenticate阶段,会根据连接建立阶段协商的认证方式进行链路认证。认证方式有两种:PAP和CHAP。如果认证成功,进入Network阶段,否则进入Terminate阶段,拆除链路,LCP状态转为Down
+
+ 在Network阶段,PPP链路进行NCP协商。通过NCP协商来选择和配置一个网络层协议并进行网络层参数协商。最常见的NCP协议是IPCP,用来协商IP参数
+
+ 在Terminate阶段,如果所有的资源都被释放,通信双方将回到Dead阶段
+
+4.LCP报文格式
+
+ PPP报文可由Protocol字段标识不同类型的PPP报文,例如,当Protocol字段为0xC021时,代表是LCP报文,此时又由Code字段标识不同类型LCP报文
+
+
+
+**PPP帧格式: **
+
+ Flag字段标识一个物理帧的起始和结束,该字节为二进制序列01111110(0X7E)
+
+ PPP帧的Address字段字节固定为11111111 (0XFF),是一个广播地址
+
+ PPP数据帧的Control字段默认为00000011(0X03),表明为无序号帧
+
+ 帧校验序列(FCS)字段是个16 bit的校验和,用于检查PPP帧的完整性
+
+ Protocol字段用来说明PPP所封装的协议报文类型,0XC021代表LCP报文,0XC023代 表PAP报文,0XC223代表CHAP报
+
+ Information字段包含Protocol字段中指定协议的内容,该字段的最大长度被称为最大接收单元MRU,缺省值为1500
+
+**LCP报文携带的一些常见的配置参数有MRU、认证协议和魔术字**
+
+ 在VRP(Versatile Routing Platform,通用路由平台)平台上,MRU参数使用接口上配置的MTU(Maximum Transmission Unit,最大传输单元)值来表示
+
+ 常用的PPP认证协议有PAP和CHAP,一条PPP链路的两端可以使用不同的认证协议认证对端,但是被认证方必须支持认证方要求使用的认证协议并正确配置用户名和密码等认证信息
+
+ LCP使用魔术字来检测链路环路和其他异常情况。魔术字是随机产生的一个数字,随机机制需要保证两端产生相同魔术字的可能性几乎为0
+
+5.LCP协商过程-正常协商
+
+ LCP协商由不同的LCP报文交互完成,协商由任意一方发送Configure-Request报文发起,如果对端接收此报文且参数匹配,则通过回复Configure-Ack响应协商成功
+
+
+
+ R1和R2使用串行链路相连,运行PPP协议。当物理层链路变为可用状态之后,R1和R2使用LCP协商链路参数
+
+ 本例中,R1首先发送一个Configure-Request报文,此报文中包含R1上配置的链路层参数。当R2收到此Configure-Request报文之后,如果R2能识别并接受此报文中的所有参数,则向R1回应一个Configure-Ack报文。同样的,R2也需要向R1发送Configure-Request报文,使R1检测R2上的参数是不是可接受的
+
+ R1在没有收到Configure-Ack报文的情况下,会每隔3秒重传一次Configure-Request报文,如果连续10次发送Configure-Request报文仍然没有收到Configure-Ack报文,则认为对端不可用,停止发送Configure-Request报文
+
+6.LCP协商过程-参数不匹配
+
+ 在LCP报文交互中出现LCP参数不匹配时,接收方回复Configure-Nak响应告知对端修改参数然后重新协商
+
+
+
+ 当R2收到R1发送的Configure-Request报文之后,如果R2能识别此报文中携带的所有链路层参数,但是认为部分或全部参数的取值不能接受,即参数的取值协商不成功,则R2需要向R1回应一个Configure-Nak报文
+
+ 在这个Configure-Nak报文中,只包含不能接受的链路层参数,并且此报文所包含的链路层参数将被修改为R2上可以接受的取值(或取值范围)
+
+ 在收到Configure-Nak报文之后,R1需要根据此报文中的链路层参数重新选择本地配置的其他参数,并重新发送一个Configure-Request
+
+7.LCP协商过程-参数不识别
+
+ 在LCP报文交互中出现LCP参数不识别,接收方回复Configure-Reject响应告知对端删除不识别的参数然后重新协商
+
+
+
+ 当R2收到R1发送的Configure-Request报文之后,如果R2不能识别此报文中携带的部分或全部链路层参数,则R2需要向R1回应一个Configure-Reject报文。在此Configure-Reject报文中,只包含不能被识别的链路层参数
+
+ 在收到Configure-Reject报文之后,R1需要向R2重新发送一个Configure-Request报文,在新的Configure-Request报文中,不再包含不被对端(R2)识别的参数
+
+8.PPP认证模式PAP
+
+ 链路协商成功后,进行认证协商,认证协商有两种模式,PAP和CHAP
+
+ PAP认证双方有两次握手,协商报文以明文的形式在链路上传输
+
+
+
+LCP协商完成后,认证方要求被认证方使用PAP进行认证
+
+PAP认证协议为两次握手认证协议,密码以明文方式在链路上发送,过程如下
+
+ 被认证方将配置的用户名和密码信息使用Authenticate-Request报文以明文方式发送给认证方
+
+ 认证方收到被认证方发送的用户名和密码信息之后,根据本地配置的用户名和密码数据库检查用户名和密码信息是否匹配;如果匹配,则返回Authenticate-Ack报文,表示认证成功。否则,返回Authenticate-Nak报文,表示认证失败
+
+9.PPP认证模式-CHAP
+
+ CHAP认证双方有三次握手,协商报文被加密后再在链路上传输
+
+
+
+LCP协商完成后,认证方要求被认证方使用CHAP进行认证
+
+CHAP认证过程需要三次报文的交互。过程如下:
+
+ 认证方主动发起认证请求,认证方向被认证方发送Challenge报文,报文内包含随机数(Random)和ID
+
+ 被认证方收到此Challenge报文之后,进行一次加密运算,运算公式为MD5{ ID+随机数+密码},意思是将Identifier、随机数和密码三部分连成一个字符串,然后对此字符串做MD5运算,得到一个16 Byte长的摘要信息,然后将此摘要信息和端口上配置的CHAP用户名一起封装在Response报文中发回认证方
+
+ 认证方接收到被认证方发送的Response报文之后,按照其中的用户名在本地查找相应的密码信息,得到密码信息之后,进行一次加密运算,运算方式和被认证方的加密运算方式相同;然后将加密运算得到的摘要信息和Response报文中封装的摘要信息做比较,相同则认证成功,不相同则认证失败
+
+使用CHAP认证方式时,被认证方的密码是被加密后才进行传输的,这样就极大的提高了安全性
+
+10.NCP协商-静态IP地址协商
+
+ PPP认证协商后,双方进入NCP协商阶段,协商在数据链路上所传输的数据包的格式与类型,以常见的IPCP协议为例,他为分静态IP地址协商和动态IP地址协商
+
+
+
+NCP主要用来建立和配置不同的网络层协议,协商在该数据链路上所传输的数据包的格式与类型。常见的有IPCP等
+
+**静态IP地址协商过程如下:**
+
+ 每一端都要发送Configure-Request报文,在此报文中包含本地配置的IP地址
+
+ 每一端接收到此Configure-Request报文之后,检查其中的IP地址,如果IP地址是一个合法的单播IP地址,而且和本地配置的IP地址不同(没有IP冲突),则认为对端可以使用该地址,回应一个Configure-Ack报文
+
+11.NCP协商-动态IP地址协商
+
+ 动态IP地址协商支持PPP链路一端为对端配置IP地址
+
+
+
+ R1向R2发送一个Configure-Request报文,此报文中会包含一个IP地址0.0.0.0,表示向对端请求IP地址
+
+ R2收到上述Configure-Request报文后,认为其中包含的地址(0.0.0.0)不合法,使用Configure-Nak回应一个新的IP地址10.1.1.1
+
+ R1收到此Configure-Nak报文之后,更新本地IP地址,并重新发送一个Configure Request报文,包含新的IP地址10.1.1.1
+
+ R2收到Configure-Request报文后,认为其中包含的IP地址为合法地址,回应一个Configure-Ack报文
+
+ 同时,R2也要向R1发送Configure-Request报文请求使用地址10.1.1.2,R1认为此地址合法,回应Configure-Ack报文
+
+二:PPP协议配置
+
+1.PPP基本配置命令
+
+
+
+2.PAP认证配置命令
+
+
+
+3.CHAP认证配置命令
+
+
+
+4.配置举例-PAP认证
+
+
+
+**实验要求:**
+
+ 在R1与R2之间的PPP链路上启用PAP认证功能
+
+ 在R1配置为认证方
+
+ 将R2配置为被认证方
+
+
+
+5.配置举例-CHAP认证
+
+
+
+**实验要求:**
+
+ 在R1与R2之间的PPP链路上启用CHAP认证功能
+
+ 将R1配置为认证方
+
+ 将R2配置为被认证方
+
+
+
+第三节:PPPoE原理与配置
+
+一:PPPoE概述
+
+1.什么时PPPoE
+
+ PPPoE(以太网承载PPP协议)是一种把PPP帧封装到以太网帧中的链路层协议,PPPoE可以使以太网网络中的多台主机连接到远端的宽带接入到服务器
+
+ PPPoE集中了PPP和Ethernet两个技术的优点,即有以太网的组网灵活优势,又可以利用PPP协议实现认证、计费等功能
+
+
+
+2.PPPoE应用场景
+
+ PPPoE实现了在以太网上提供点到点的连接,PPPoE客户端与PPPoE服务器端之间建立会话,封装PPP数据报文,为以太网上的主机提供接入服务,实现用户控制和计费,在企业网络与运行商网络中广泛应用
+
+ PPPoE的常见应用场景有家庭用户拨号上网、企业用户拨号上网等
+
+
+
+3.PPPoE会话建立
+
+ PPPoE的会话建立有三个阶段,PPPoE发现阶段、PPPoE会话阶段和PPPoE终结阶段
+
+
+
+4.PPPoE报文
+
+ PPPoE会话的建立通过不同的PPPoE报文交互实现
+
+
+
+ DMAC:表示目的设备的MAC地址,通常为以太网单播目的地址或者以太网广播地址
+
+ SMAC:表示源设备的以太网MAC地址
+
+ Eth-Type:表示协议类型字段,当值为0x8863时表示承载的是PPPoE发现阶段的报文。当值为0x8864时表示承载的是PPPoE会话阶段的报文
+
+ VER:表示PPPoE版本号,值为0x01
+
+ Type:表示类型,值为0x01
+
+ Code:表示PPPoE报文类型,不同取值标识不同的PPPoE报文类型
+
+ PPPoE会话ID,与以太网SMAC和DMAC一起定义了一个PPPoE会话
+
+ Length:表示PPPoE报文的长度
+
+5.PPPoE发现阶段
+
+ PPPoE协议发现有四个步骤:客户端发送请求、服务端响应请求、客户端确认响应和建立会话
+
+
+
+PPPoE客户端在本地以太网中广播一个PADI报文,此PADI报文中包含了客户端需要的服务信息
+
+ PADI报文的目的MAC地址是一个广播地址,Code字段为0x09,Session ID字段为0x0000
+
+ 所有PPPoE服务器端收到PADI报文之后,会将报文中所请求的服务与自己能够提供的服务进行比较
+
+如果服务器端可以提供客户端请求的服务,就会回复一个PADO**报文**
+
+ PADO报文的目的地址是发送PADI报文的客户端MAC地址,Code字段为0x07,Session ID字段为0x0000
+
+客户端可能会收到多个PADO报文,此时将选择最先收到的PADO报文对应的PPPoE服务器端,并发送一个PADR报文给这个服务器端
+
+ PADR报文的目的地址是选中的服务器端的MAC地址,Code字段为0x19,Session ID字段为0x0000
+
+PPPoE服务器端收到PADR报文后,会生成一个唯一的Session ID来标识和PPPoE客户端的会话,并发送PADS报文
+
+ PADS报文的目的地址是PPPoE客户端的MAC地址,Code字段为0x65,Session ID字段是PPPoE服务器端为本PPPoE会话产生的Session ID
+
+会话建立成功后,PPPoE客户端和服务器端进入PPPoE会话阶段
+
+6.PPPoE会话阶段
+
+ PPPoE会话阶段会进行PPP协商,分为LCP协商、认证协商、NCP协商三个阶段
+
+
+
+**PPPoE会话阶段可分为两部分:**
+
+ PPP协商阶段
+
+ PPP报文传输
+
+**PPPoE Session上的PPP协商和普通的PPP协商方式一致,分为LCP、认证、NCP三个阶段:**
+
+ LCP阶段主要完成建立、配置和检测数据链路连接
+
+ LCP协商成功后,开始进行认证,认证协议类型由LCP协商结果决定
+
+ 认证成功后,PPP进入NCP阶段,NCP是一个协议族,用于配置不同的网络层协议,常用的是IP控制协议(IPCP),它负责配置用户的IP地址和DNS服务器地址等
+
+ PPPoE Session的PPP协商成功后,就可以承载PPP数据报文。在这一阶段传输的数据包中必须包含在发现阶段确定的Session ID并保持不变
+
+8.PPPoE会话终结阶段
+
+ 当PPPoE客户端希望关闭连接时,会向PPPoE服务器端发送一个PADT报文,用于关闭连接
+
+ 同样,如果PPPoE服务器端希望关闭连接时,也会向PPPoE客户端发送一个PADT报文
+
+
+
+ 在PADT报文中,目的MAC地址为单播地址,Session ID为希望关闭的连接的Session ID。一旦收到一个PADT报文之后,连接随即关闭
+
+二:PPPoE基础配置
+
+1.PPPoE基础配置
+
+
+
+2.配置实例-PPPoE客户端
+
+
+
+**实验要求:**
+
+ 将R1设置为PPPoE客户端,R2为PPPoE服务器端
+
+ 在R1上配置PPPoE客户端拨号接口
+
+ 在R1上配置PPPoE客户端拨号接口的认证功能
+
+ R1上的拨号接口获取PPPoE服务器端分配的IP地址
+
+ R1通过拨号接口可以访问服务器端
+
+
+
+**PPPoE客户端配置包括三个步骤:**
+
+第一步配置一个拨号接口
+
+ **dialer-rule**命令用于进入Dialer-rule视图,在该视图下,可以通过拨号规则来配置发起PPPoE会话的条件
+
+ **interface dialer** *number*命令用来创建并进入Dialer接口
+
+ **dialer user** *user-name*命令用于配置对端用户名,这个用户名必须与对端服务器上的PPP用户名相同
+
+ **dialer-group** *group-number*命令用来将接口置于一个拨号访问组
+
+ **dialer bundle** *number*命令用来指定Dialer接口使用的Dialer bundle。设备通过Dialer bundle将物理接口与拨号接口关联起来
+
+ 注:必须确保命令**dialer-group**中的参数*group-number*和命令**dialer-rule**中的*dialer-rule-number*保持一致
+
+第二步是在接口上将Dialer Bundle和接口绑定
+
+ **pppoe-client dial-bundle-number** *number*命令来实现Dialer Bundle和物理接口的绑定,用来指定PPPoE会话对应的Dialer Bundle,其中number是与PPPoE会话相对应的Dialer Bundle编号
+
+第三步配置一条缺省静态路由,该路由允许在路由表中没有相应匹配表项的流量都能通过拨号接口发起PPPoE会话
+
+3.配置实例-PPPoE服务器端
+
+
+
+**实验要求:**
+
+ 在PPPoE服务器端上创建为客户端分配IP地址的地址池
+
+ PPPoE服务器端完成PPPoE客户端认证并分配合法的IP地址
+
+
+
+**PPPoE服务器端配置**
+
+ **interface virtual-template**命令用来创建虚拟模板接口,或者进入一个已经创建的虚拟模板接口视图
+
+ **pppoe-server bind**命令用来配置PPPoE接入用户上线绑定的虚拟模板接口
+
+4.验证配置
+
+**查看拨号接口详细信息**
+
+
+
+**查看PPPoE-Client会话初始状态**
+
+
+
+**查看PPPoE-client会话建立状态信息**
+
+
+
+**注意:**
+
+**display interface dialer**[ **number** ]命令用于查看拨号接口的配置,便于定位拨号接口的故障
+
+LCP opened, IPCP opened表示链路的状态完全正常
+
+**display pppoe-client session summary**命令用于查看PPPoE客户端的PPPoE会话状态和统计信息
+
+ ID表示PPPoE会话ID,Bundle ID和Dialer ID的值与拨号参数配置有关
+
+ Intf表示客户端侧协商时的物理接口
+
+ State表示PPPoE会话的状态,包括以下四种
+
+ IDLE表示当前会话状态为空闲
+
+ PADI表示PPPoE会话处于发现阶段,并已经发送PADI报文
+
+ PADR表示PPPoE会话处于发现阶段,并已经发送PADR报文
+
+ UP表示PPPoE会话建立成功
diff --git a/Datacom-MD/第六章:IS-IS.md b/Datacom-MD/第六章:IS-IS.md
new file mode 100644
index 0000000..5bdbcf1
--- /dev/null
+++ b/Datacom-MD/第六章:IS-IS.md
@@ -0,0 +1,759 @@
+BGP边界网关协议
+
+> 作者:行癫
+
+------
+
+第一节:IS-IS原理与配置
+
+一:IS-IS的基本概念
+
+1.IS-IS概述
+
+ IS-IS是ISO定义的OSI协议栈中的CLNS(ConnectionLess Network Service,无连接网络服务)的一部分
+
+
+
+ IS-IS是一种链路状态路由协议,IS-IS与OSPF在许多方面非常相似,例如运行IS-IS协议的直连设备之间通过发送Hello报文发现彼此,然后建立邻接关系,并交互链路状态信息
+
+**CLNS由以下三个部分组成:**
+
+ CLNP:类似于TCP/IP中的IP协议 (CLNP:无连接网络协议)
+
+ IS-IS:类似于TCP/IP中的OSPF
+
+ ES-IS:类似于TCP/IP中的ARP,ICMP等
+
+ ES:End System,终端系统,类似于IP网络环境中的主机
+
+ ES-IS:End System to Intermediate System,终端系统到中间系统
+
+2.NSAP
+
+ NSAP(Network Service Access Point,网络服务访问点)是OSI协议栈中用于定位资源的地址,主要用于提供网络层和上层应用之间的接口。NSAP包括IDP及DSP
+
+
+
+ IDP(Initial Domian Part)相当于IP地址中的主网络号。它是由ISO规定,并由AFI(Authority and Format Identifier)与IDI(Initial Domain Identifier)两部分组成。AFI表示地址分配机构和地址格式,IDI用来标识域
+
+ DSP(Domian Specific Part)相当于IP地址中的子网号和主机地址。它由High Order DSP、System ID和SEL三个部分组成。High Order DSP用来分割区域,System ID用来区分主机,SEL(NSAP Selector)用来指示服务类型
+
+3.NET
+
+ NET(Network Entity Title,网络实体名称)是OSI协议栈中设备的网络层信息,主要用于路由计算,由区域地址(Area ID)和System ID组成,可以看作是特殊的NSAP(SEL为00的NSAP)
+
+ NET的长度与NSAP的相同,最长为20Byte,最短为8Byte
+
+ 在IP网络中运行IS-IS时,只需配置NET,根据NET地址设备可以获取到Area ID以及System ID
+
+
+
+ Area ID由IDP和DSP中的High Order DSP组成,既能够标识路由域,也能够标识路由域中的区域。因此,它们一起被称为区域地址,相当于OSPF中的区域编号;一般情况下,一个路由器只需要配置一个区域地址,且同一区域中所有节点的区域地址都要相同。为了支持区域的平滑合并、分割及转换,缺省情况下,一个IS-IS进程下最多可配置3个区域地址
+
+ System ID用来在区域内唯一标识主机或路由器。在设备的实现中,它的长度固定为6Byte
+
+**NET的配置举例**
+
+ 每台运行IS-IS的网络设备至少需拥有一个NET,当然,一台设备也可以同时配置多个NET,但是这些NET的System ID必须相同
+
+ 在华为的网络设备上,System ID的长度总是固定的6Byte。在一个IS-IS路由域中,设备的System ID必须唯一,为了便于管理,一般根据Router ID配置System ID
+
+
+
+4.IS-IS和OSPF区域划分的区别
+
+
+
+**IS-IS在自治系统内采用骨干区域与非骨干区域两级的分层结构:**
+
+ Level-1路由器部署在非骨干区域
+
+ Level-2路由器和Level-1-2路由器部署在骨干区域
+
+ 每一个非骨干区域都通过Level-1-2路由器与骨干区域相连
+
+ 如图所示,整个骨干区域不仅包括Area49.0002中的所有路由器,还包括其它区域的Level2和Level-1-2路由器
+
+**注意:**
+
+ 在学习OSPF过程中,我们已经体会到了多区域、层次化网络设计的好处。对于链路状态路由协议而言,运行了该协议的设备会向网络中通告链路状态信息,同时也收集网络中所泛洪的链路状态信息后加以存储,并最终以这些信息为基础进行计算,从而得到路由信息。如果不采用多区域部署的方式,那么随着网络的规模逐渐增大,网络中泛洪的链路状态信息势必会越来越多,所有设备都将承受更重的负担,路由计算机收敛将逐渐变得更加缓慢,这也使得网络的扩展性变差
+
+**以上拓扑结构图可以体现IS-IS与OSPF的不同点:**
+
+ 在IS-IS中,每个路由器都只属于一个区域;而在OSPF中,一个路由器的不同接口可以属于不同的区域
+
+ 在IS-IS中,单个区域没有骨干与非骨干区域的概念;而在OSPF中,Area0被定义为骨干区域
+
+ 在IS-IS中,Level-1和Level-2级别的路由都采用SPF算法,分别生成最短路径树SPT(Shortest Path Tree);而在OSPF中,只有在同一个区域内才使用SPF算法,区域之间的路由需要通过骨干区域来转发
+
+5.IS-IS路由器的分类
+
+**Level-1路由器**
+
+ Level-1路由器(例如图中的R1)是一种IS-IS区域内部路由器,它只与属于同一区域的Level-1和Level-1-2路由器形成邻接关系,这种邻接关系称为Level-1邻接关系。Level-1路由器无法与Level-2路由器建立邻接关系
+
+ Level-1路由器只负责维护Level-1的链路状态数据库LSDB,该LSDB只包含本区域的路由信息。值得一提的是,Level-1路由器必须通过Level-1-2路由器接入IS-IS骨干区域从而访问其他区域
+
+
+
+**Level-2路由器**
+
+ Level-2路由器(例如图中的R4、R5、R6、R7)是IS-IS骨干路由器,它可以与同一或者不同区域的Level-2路由器或者Level-1-2路由器形成邻接关系。Level-2路由器维护一个Level-2的LSDB,该LSDB包含整个IS-IS域的所有路由信息
+
+ 所有Level-2级别(即形成Level-2邻接关系)的路由器组成路由域的骨干网,负责在不同区域间通信。路由域中Level-2级别的路由器必须是物理连续的,以保证骨干网的连续性
+
+
+
+**Level-1-2路由器**
+
+ Level-1-2路由器与OSPF中的ABR非常相似,它也是IS-IS骨干网络的组成部分
+
+ Level-1-2路由器维护两个LSDB,Level-1的LSDB用于区域内路由,Level-2的LSDB用于区域间路由
+
+ 同时属于Level-1和Level-2的路由器称为Level-1-2路由器(例如图中的R2和R3),它可以与同一区域的Level-1和Level-1-2路由器形成Level-1邻接关系,也可以与其他区域的Level-2和Level-1-2路由器形成Level-2的邻接关系。
+
+
+
+注意:
+
+ 在华为路由器上配置IS-IS时,缺省时,路由器全局Level为Level-1-2,当然,可以通过命令修改该设备的类型
+
+6.IS-IS支持的网络类型
+
+ IS-IS会自动根据接口的数据链路层封装决定该接口的缺省网络类型, IS-IS支持两种类型的网络:
+
+ 广播(Broadcast): 如Ethernet
+
+ 点到点(P2P): 如PPP、 HDLC等
+
+
+
+7.IS-IS开销值
+
+ IS-IS使用Cost(开销)作为路由度量值,Cost值越小,则路径越优。IS-IS链路的Cost与设备的接口有关,与OSPF类似,每一个激活了IS-IS的接口都会维护接口Cost。然而与OSPF不同的是,IS-IS接口的Cost在缺省情况下并不与接口带宽相关(在实际部署时,IS-IS也支持根据带宽调整Cost值),无论接口带宽多大,缺省时Cost为10
+
+ 一条IS-IS路径的Cost等于本路由器到达目标网段沿途的所有链路的Cost总和
+
+IS-IS有三种方式来确定接口的开销,按照优先级由高到低分别是:
+
+ 接口开销:为单个接口设置开销
+
+ 全局开销:为所有接口设置开销
+
+ 自动计算开销:根据接口带宽自动计算开销
+
+
+
+**narrow类型下使用的TLV:**
+
+ 128号TLV(IP Internal Reachability TLV):用来携带路由域内的IS-IS路由信息
+
+ 130号TLV(IP External Reachability TLV):用来携带路由域外的IS-IS路由信息
+
+ 2号TLV(IS Neighbors TLV):用来携带邻居信息
+
+**wide类型下使用的TLV:**
+
+ 135号TLV(Extended IP Reachability TLV):用来替换原有的IP reachability TLV,携带IS-IS路由信息,它扩展了路由开销值的范围,并可以携带sub TLV
+
+ 22号TLV(IS Extended Neighbors TLV):用来携带邻居信息
+
+8.IS-IS报文格式
+
+ IS-IS报文是直接封装在数据链路层的帧结构中的
+
+ PDU(Protocol Data Unit,协议数据单元)可以分为两个部分,报文头(IS-IS Header)和变长字段部分(Variable Length Fields )
+
+ 其中IS-IS Header又可分为通用头部(PDU Common Header)和专用头部(PDU Specific Header)。对于所有PDU来说,通用报头都是相同的,但专用报头根据PDU类型不同而有所差别
+
+
+
+**IS-IS通用头部详解**
+
+
+
+ Intradomain Routing Protocol Discriminator:域内路由选择协议鉴别符,固定为0x83
+
+ Length Indicator:IS-IS头部的长度(包括通用头部和专用头部),以Byte为单位
+
+ Version/Protocol ID Extension:版本/协议标识扩展,固定为0x01
+
+ System ID Length:NSAP地址或NET中System ID区域的长度。值为0时,表示System ID区域的长度为6Byte
+
+ R(Reserved):保留,固定为0
+
+ Version:固定为0x01
+
+ Max.Areas:支持的最大区域个数。设置为1~254的整数,表示该IS-IS进程实际所允许的最大区域地址数;设置为0,表示该IS-IS进程最大只支持3个区域地址数
+
+**IS-IS报文类型概述**
+
+ IS-IS的PDU有4种类型:IIH(IS-IS Hello),LSP( Link State PDU,链路状态报文),CSNP(Complete Sequence Number PDU,全序列号报文),PSNP(Partial Sequence Number PDU,部分序列号报文)
+
+ IIH:用于建立和维持邻接关系, 广播网络中的Level-1 IS-IS路由器使用Level-1 LAN IIH; 广播网络中的Level-2 IS-IS路由器使用Level-2 LAN IIH; 点到点网络中则使用P2P IIH
+
+ LSP:用于交换链路状态信息。LSP分为两种,Level-1 LSP、Level-2 LSP
+
+ SNP:通过描述全部或部分链路数据库中的LSP来同步各LSDB,从而维护LSDB的完整与同步。SNP包括CSNP和PSNP,进一步又可分为Level-1 CSNP、 Level-2 CSNP、 Level-1 PSNP和Level-2 PSNP
+
+
+
+9.IS-IS常见的TLV
+
+ TLV的含义是:类型(TYPE),长度(LENGTH),值(VALUE)。实际上是一个数据结构,这个结构包含了这三个字段
+
+ 使用TLV结构构建报文的好处是灵活性和扩展性好。采用TLV使得报文的整体结构固定,增加新特性只需要增加新TLV即可,不需要改变整个报文的整体结构
+
+| **TLV** **Type** | **名称** | **PDU**类型 |
+| ---------------- | ------------------------------------------------------------ | --------------- |
+| 1 | Area Addresses 区域地址 | IIH、 LSP |
+| 2 | IS Neighbors(LSP) 中间系统邻接 | LSP |
+| 4 | Partition Designated Level2 IS 区域分段指定L2中间系统 | L2 LSP |
+| 6 | IS Neighbors(MAC Address) 中间系统邻接 | LAN IIH |
+| 7 | IS Neighbors(SNPA Address) 中间系统邻接 | LAN IIH |
+| 8 | Padding 填充 | IIH |
+| 9 | LSP Entries LSP条目 | SNP |
+| 10 | Authentication Information 验证信息 | IIH、 LSP、 SNP |
+| 128 | IP Internal Reachability Information IP内部可达性信息 | LSP |
+| 129 | Protocols Supported 支持的协议 | IIH、 LSP |
+| 130 | IP External Reachability Information IP外部可达性信息 | LSP |
+| 131 | Inter-Domain Routing Protocol Information 域间路由选择协议信息 | L2 LSP |
+| 132 | IP Interface Address IP接口地址 | IIH、 LSP |
+
+二:IS-IS工作原理
+
+1.邻接关系建立
+
+**IS-IS按如下原则建立邻接关系:**
+
+ 只有同一层次的相邻路由器才有可能成为邻接
+
+ 对于Level-1路由器来说,Area ID必须一致
+
+ 链路两端IS-IS接口的网络类型必须一致
+
+ 链路两端IS-IS接口的地址必须处于同一网段(默认情况下)
+
+ 由于IS-IS是直接运行在数据链路层上的协议,并且最早设计是给CLNP使用的,IS-IS邻接关系的形成与IP地址无关。但在实际的部署中,在IP网络上运行IS-IS时,需要检查对方的IP地址的。如果接口配置了从IP,那么只要双方有某个IP(主IP或者从IP)在同一网段,就能建立邻接,不一定要主IP相同
+
+**注意:**
+
+ 通过将以太网接口模拟成点到点接口,可以建立点到点链路邻接关系
+
+ 当链路两端IS-IS接口的地址不在同一网段时,如果配置接口对接收的Hello报文不作IP地址检查,也可以建立邻接关系
+
+ 一般情况下,一个接口只需配置一个主IP地址,但在有些特殊情况下需要配置从IP地址。比如,一台路由器通过一个接口连接了一个物理网络,但该物理网络的计算机分别属于2个不同的网络,为了使路由器与物理网络中的所有计算机通信,就需要在该接口上配置一个主IP地址和一个从IP地址。路由器的每个三层接口可以配置多个IP地址,其中一个为主IP地址,其余为从IP地址,每个三层接口最多可配置31个从IP地址
+
+**IIH**
+
+ IIH报文用于建立和维持邻接关系,广播网络中的Level-1 IS-IS路由器使用Level-1 LAN IIH;广播网络中的Level-2 IS-IS路由器使用Level-2 LAN IIH;点到点网络中则使用P2P IIH
+
+
+
+ Reserved/Circuit Type:表示路由器的类型(01表示L1,10表示L2,11表示L1/L2)
+
+ Source ID :发出Hello报文的路由器的System ID
+
+ Holding Time : 保持时间。在此时间内如果没有收到邻接发来的Hello报文,则中止已建立的邻接关系
+
+ Priority :选举DIS的优先级,取值范围为0~127。数值越大,优先级越高。该字段只在广播网中的Hello消息(LAN IIH消息)携带;点到点网络的Hello消息(P2P IIH消息)没有此字段,也没有此字段之前的R保留位
+
+ LAN ID : 包括DIS的System ID和伪节点ID。该字段只在广播网中的Hello消息(LAN IIH消息)携带;点到点网络的Hello消息(P2P IIH消息)没有此字段
+
+ Local Circuit ID :本地链路ID。该字段只在点到点网络的Hello消息(P2P IIH消息)携带;广播网中的Hello消息(LAN IIH消息)没有此字段
+
+**广播网络中的邻接关系建立过程**
+
+ 两台运行IS-IS的路由器在交互协议报文实现路由功能之前必须首先建立邻接关系。在不同类型的网络上,IS-IS的邻接建立方式并不相同。在广播网络中,使用三次握手建立邻接关系
+
+
+
+**R1及R2通过千兆以太接口互联,这两台直连的Level-1路由器建立邻接关系的过程如下:**
+
+ 在Down状态下,R1组播发送Level-1 LAN IIH,此报文中邻接列表为空
+
+ R2收到此报文后,将邻接状态标识为Initial。然后,R2再向R1回复Level-1 LAN IIH ,此报文中标识R1为R2的邻接
+
+ R1收到此报文后,将自己与R2的邻接状态标识为Up。然后R1再向R2发送一个标识R2为R1邻接的Level-1 LAN IIH
+
+ R2收到此报文后,将自己与R1的邻接状态标识为Up。这样,两个路由器成功建立了邻接关系
+
+ 广播网络中需要选举DIS,在邻接关系建立后,路由器会等待两个Hello报文间隔,再进行DIS的选举
+
+**注意:**
+
+ Level-1 IIH和Level-2 IIH发送的组播地址分别为01-80-C2-00-00-14、01-80-C2-00-00-15
+
+ Down:邻接关系的初始状态
+
+ Initial:收到IIH,但是报文中的邻接列表未包含路由器自身的System ID
+
+ UP:收到IIS,且邻接列表中包含路由器自身的System ID
+
+**DIS与伪节点**
+
+ 在广播网络中,IS-IS需要在所有的路由器中选举一个路由器作为DIS(Designated Intermediate System)
+
+ DIS用来创建和更新伪节点(Pseudonodes),并负责生成伪节点的LSP,用来描述这个网络上有哪些网络设备。伪节点是用来模拟广播网络的一个虚拟节点,并非真实的路由器。在IS-IS中,伪节点用DIS的System ID和Circuit ID(非0值)标识
+
+
+
+**IS-IS中的DIS与OSPF中的DR**
+
+Level-1和Level-2的DIS是分别选举的,用户可以为不同级别的DIS选举设置不同的优先级
+
+**DIS的选举规则如下:**
+
+ DIS优先级数值最大的被选为DIS
+
+ 如果优先级数值最大的路由器有多台,则其中MAC地址最大的路由器会成为DIS
+
+DIS发送Hello PDU的时间间隔是普通路由器的1/3,这样可以确保DIS出现故障时能够被更快速地被发现
+
+IS-IS中DIS与OSPF协议中DR(Designated Router)的区别:
+
+ 在IS-IS广播网中,优先级为0的路由器也参与DIS的选举,而在OSPF中优先级为0的路由器则不参与DR的选举
+
+ 在IS-IS广播网中,当有新的路由器加入,并符合成为DIS的条件时,这个路由器会被选中成为新的DIS,原有的伪节点被删除。此更改会引起一组新的LSP泛洪。而在OSPF中,当一台新路由器加入后,即使它的DR优先级值最大,也不会立即成为该网段中的DR
+
+ 在IS-IS广播网中,同一网段上的同一级别的路由器之间都会形成邻接关系,包括所有的非DIS路由器之间也会形成邻接关系。而在OSPF中,路由器只与DR和BDR建立邻接关系
+
+**点到点网络中的邻接关系建立过程**
+
+
+
+ 点到点网络中,邻接关系的建立使用两次握手方式:只要路由器收到对端发来的Hello报文,就单方面宣布邻接为Up状态,建立邻接关系
+
+ 两次握手机制存在明显的缺陷,华为设备在点到点网络中使用IS-IS时,默认使用三次握手建立邻接关系。此方式通过三次发送P2P IIH最终建立起邻接关系
+
+2.链路状态数据库同步
+
+**LSP**
+
+ IS-IS链路状态报文LSP用于交换链路状态信息。LSP分为两种:Level–1 LSP和Level–2 LSP。Level–1 LSP由Level-1路由器传送,Level–2 LSP由Level-2路由器传送,Level-1-2路由器则可传送以上两种LSP
+
+
+
+ Remaining Lifetime : LSP的生存时间,以秒为单位
+
+ LSP ID:由三部分组成,System ID、伪节点ID和LSP分片后的编号
+
+ Sequence Number: LSP的序列号。在路由器启动时所发送的第一个LSP报文中的序列号为1,以后当需要生成新的LSP时,新LSP的序列号在前一个LSP序列号的基础上加1。更高的序列号意味着更新的LS
+
+ Checksum : LSP的校验和
+
+ ATT(Attachment):由Level-1-2路由器产生,用来指明始发路由器是否与其它区域相连。虽然此标志位也存在于Level-1和Level-2的LSP中,但实际上此字段只和Level-1-2路由器始发的L1 LSP有关
+
+ OL(LSDB Overload,1bit):过载标志位。设置了过载标志位的LSP虽然还会在网络中扩散,但是在计算通过超载路由器的路由时不会被采用。即对路由器设置过载位后,其它路由器在进行SPF计算时不会考虑这台路由器。当路由器内存不足时,系统自动在发送的LSP报文中设置过载标志位
+
+ IS Type(2bit):生成LSP的路由器的类型。用来指明是Level-1还是Level-2路由器(01表示Level-1,11表示Level-2)
+
+**IS-IS的LSDB**
+
+
+
+ 伪节点ID:当该参数不为零时,表示该LSP为伪节点生成
+
+ 分片号:当IS-IS要发布的链路状态协议数据报文PDU(Protocol Data Unit)中的信息量太大时,IS-IS路由器将会生成多个LSP分片,用来携带更多的IS-IS信息。分片号用来区分不同的LSP分片
+
+**查看非伪节点的LSP**
+
+
+
+```shell
+ display isis lsdb 0100.0000.1001.00-00 verbose
+ Database information for ISIS(1)
+Level-1 Link State Database
+LSPID Seq Num Checksum Holdtime Length ATT/P/OL
+--------------------------------------------------------------------------------------------------
+0100.0000.1001.00-00* 0x0000000e 0x9a75 1072 113 0/0/0
+SOURCE 0100.0000.1001.00
+NLPID IPV4
+AREA ADDR 49.0123
+INTF ADDR 10.1.12.1 //描述接口信息
+INTF ADDR 10.1.13.1
+NBR ID 0100.0000.1001.01 COST: 10 //描述邻接关系
+NBR ID 0100.0000.3003.01 COST: 10
+IP-Internal 10.1.12.0 255.255.255.0 COST: 10
+IP-Internal 10.1.13.0 255.255.255.0 COST: 10 //描述路由信息
+IP-Internal 1.1.1.0 255.255.255.0 COST: 10
+Total LSP(s): 1
+```
+
+ AREA ADDR:该LSP来源的区域号
+
+ INTF ADDR:该LSP中描述的接口地址
+
+ NBR ID:该LSP中描述的邻接信息
+
+ IP-Internal:该LSP中描述的网段信息
+
+**查看伪节点LSP**
+
+
+
+```shell
+ Database information for ISIS(1)
+ Level-1 Link State Database
+LSPID Seq Num Checksum Holdtime Length ATT/P/OL
+----------------------------------------------------------------------------------------------------
+0100.0000.1001.01-00* 0x00000009 0xca36 431 55 0/0/0
+SOURCE 0100.0000.1001.01
+NLPID IPV4
+NBR ID 0100.0000.1001.00 COST: 0 //描述该广播网络中所有IS-IS路由器
+NBR ID 0100.0000.2002.00 COST: 0 //伪节点到达其他路由器的Cost值为0
+Total LSP(s): 1
+ *(In TLV)-Leaking Route, *(By LSPID)-Self LSP, +-Self LSP(Extended),
+ ATT-Attached, P-Partition, OL-Overload
+```
+
+注意:
+
+ 在伪节点LSP中,只包含邻接信息而不包含路由信息
+
+**CSNP**
+
+CSNP包含该设备LSDB中所有的LSP摘要,路由器通过交互 CSNP来判断是否需要同步LSDB
+
+ 在广播网络上,CSNP由DIS定期发送(缺省的发送周期为10秒)
+
+ 在点到点网络上,CSNP只在第一次建立邻接关系时发送
+
+
+
+ Source ID:发出CSNP报文的路由器的System ID
+
+ Start LSP:CSNP报文中第一个LSP的ID值
+
+ End LSP ID:CSNP报文中最后一个LSP的ID值
+
+**PSNP**
+
+PSNP只包含部分LSP的摘要信息(与CSNP不同):
+
+ 当发现LSDB不同步时,PSNP来请求邻居发送新的LSP
+
+ 在点到的网络中,当收到LSP时,使用PSNP对收到的LSP进行确认
+
+
+
+ Source ID:发出PSNP报文的路由器的System ID
+
+**广播网络中LSP的同步过程**
+
+
+
+ 新加入的路由器R3首先发送IIH报文,与该广播域中的路由器建立邻接关系。建立邻接关系之后,R3等待LSP刷新定时器超时,然后将自己的LSP发往组播地址(Level-1:01-80-C2-00-00-14;Level-2:01-80-C2-00-00-15)。这样网络上所有的邻接都将收到该LSP
+
+ 该网段中的DIS会把收到R3的LSP加入到LSDB中,并等待CSNP报文定时器超时并发送CSNP报文
+
+ R3收到DIS发来的CSNP报文,对比自己的LSDB数据库,然后向DIS发送PSNP报文请求自己没有的LSP
+
+ DIS收到该PSNP报文请求后向R3发送对应的LSP进行LSDB的同步
+
+**点到点网络中LSP的同步过程**
+
+
+
+ R1先与R2建立邻接关系
+
+ 建立邻接关系之后,R1与R2会先发送CSNP给对端设备。如果对端的LSDB与CSNP没有同步,则发送PSNP请求索取相应的LSP
+
+ 假设R2向R1索取相应的LSP
+
+ R1发送R2请求的LSP的同时启动LSP重传定时器,并等待R2发送的PSNP作为收到LSP的确认
+
+ 如果在接口LSP重传定时器超时后,R1没有收到R2发送的PSNP报文作为应答
+
+ 则R1重新发送该LSP
+
+ R2收到LSP后,发送PSNP进行确认
+
+**LSP的处理机制**
+
+
+
+IS-IS通过交互LSP实现链路状态数据库同步,路由器收到LSP后,按照以下原则处理:
+
+ 若收到的LSP比本地LSP的更优,或者本地没有收到的LSP:
+
+ 在广播网络中:将其加入数据库,并组播发送新的LSP
+
+ 在点到点网络中:将其加入数据库,并发送PSNP报文来确认收到此LSP,之后将这新的LSP发送给除了发送该LSP的邻居以外的邻居
+
+ 若收到的LSP和本地LSP无法比较出优劣,则不处理该LSP
+
+**LSP产生的原因,IS-IS路由域内的所有路由器都会产生LSP,以下事件会触发一个新的LSP:**
+
+ 邻接Up或Down
+
+ IS-IS相关接口Up或Down
+
+ 引入的IP路由发生变化
+
+ 区域间的IP路由发生变化
+
+ 接口被赋了新的metric值
+
+ 周期性更新(刷新间隔15min)
+
+三:IS-IS的基本配置
+
+1.IS-IS协议的基本配置
+
+
+
+
+
+
+
+2.IS-IS配置
+
+
+
+**组网需求**
+
+ 如图所示,现网中有5台路由器。用户希望在这5台路由器实现网络互联,并且因为R1性能相对较低,所以还要使这台路由器处理相对较少的数据信息。同时用户希望R1可以选择最优路径访问192.168.10.0/24和192.168.20.0/24网段。
+
+**配置思路**
+
+ 在各路由器上配置IS-IS基本功能,实现网络互联。其中,配置R1为Level-1路由器,可以使这台路由器维护相对少量的数据信息。同时,配置R2和R3为Level-1/2路由器与R4和R5这两台Level-2路由器互联
+
+**R1:R1的路由器等级需要设置为Level1**
+
+```shell
+[R1] isis 1
+[R1-isis-1] is-level level-1
+[R1-isis-1] network-entity 49.0001.0010.0100.1001.00
+[R1-isis-1] quit
+[R1] interface gigabitethernet 0/0/0
+[R1-GigabitEthernet0/0/0] isis enable 1
+[R1-GigabitEthernet0/0/0] interface gigabitethernet 0/0/1
+[R1-GigabitEthernet0/0/1] isis enable 1
+```
+
+**R2和R3:R2、R3的路由器等级需要设置为Level1/2**
+
+```shell
+[R2] isis 1
+[R2-isis-1] is-level level-1-2
+[R2-isis-1] network-entity 49.0001.0020.0200.2002.00
+[R2-isis-1] quit
+[R2] interface gigabitethernet 0/0/0
+[R2-GigabitEthernet0/0/0] isis enable 1
+[R2-GigabitEthernet0/0/0] interface gigabitethernet 0/0/1
+[R2-GigabitEthernet0/0/1] isis enable 1
+
+[R3] isis 1
+[R3-isis-1] is-level level-1-2
+[R3-isis-1] network-entity 49.0001.0030.0300.3003.00
+[R3-isis-1] quit
+[R3] interface gigabitethernet 0/0/0
+[R3-GigabitEthernet0/0/0] isis enable 1
+[R3-GigabitEthernet0/0/0] interface gigabitethernet 0/0/1
+[R3-GigabitEthernet0/0/1] isis enable 1
+```
+
+**R4和R5:R4、R5的路由器等级需要设置为Level2**
+
+```shel
+[R4] isis 1
+[R4-isis-1] is-level level-2
+[R4-isis-1] network-entity 49.0002.0040.0400.4004.00
+[R4-isis-1] quit
+[R4] interface gigabitethernet 0/0/0
+[R4-GigabitEthernet0/0/0] isis enable 1
+[R4-GigabitEthernet0/0/0] interface gigabitethernet 0/0/1
+[R4-GigabitEthernet0/0/1] isis enable 1
+[R4-GigabitEthernet0/0/1] interface gigabitethernet 0/0/2
+[R4-GigabitEthernet0/0/2] isis enable 1
+
+[R5] isis 1
+[R5-isis-1] is-level level-2
+[R5-isis-1] network-entity 49.0002.0050.0500.5005.00
+[R5-isis-1] quit
+[R5] interface gigabitethernet 0/0/0
+[R5-GigabitEthernet0/0/0] isis enable 1
+[R5-GigabitEthernet0/0/0] interface gigabitethernet 0/0/1
+[R5-GigabitEthernet0/0/1] isis enable 1
+[R5-GigabitEthernet0/0/1] interface gigabitethernet 0/0/2
+[R5-GigabitEthernet0/0/2] isis enable 1
+```
+
+**配置验证 (查看设备的IS-IS邻接表)**
+
+R4路由器建立Level-2的邻接关系:
+
+```shell
+ display isis peer
+ Peer information for ISIS(1)
+System Id Interface Circuit Id State HoldTime Type PRI
+0020.0200.2002 GE0/0/0 0040.0400.4004.01 Up 25s L2 64
+0050.0500.5005 GE0/0/1 0050.0500.5005.01 Up 13s L2 64
+```
+
+R1路由器建立Level-1的邻接关系:
+
+```
+ display isis peer
+ Peer information for ISIS(1)
+System Id Interface Circuit Id State HoldTime Type PRI
+0020.0200.2002 GE0/0/0 0010.0100.1001.01 Up 29s L1 64
+0030.0300.3003 GE0/0/1 0030.0300.3003.01 Up 9s L1 64
+```
+
+ System Id字段:描述邻接的系统ID
+
+ Interface字段:描述通过该路由器哪个端口与邻接建立邻接关系
+
+ Type:描述与该邻接的邻接关系类型
+
+ PRI:描述该邻接对应端口的DIS优先级
+
+**配置验证 (查看设备的IS-IS路由表)**
+
+```shell
+ display isis route
+ Route information for ISIS(1)
+ ISIS(1) Level-1 Forwarding Table
+IPV4 Destination IntCost ExtCost ExitInterface NextHop
+0.0.0.0/0 10 NULL GE0/0/0 10.1.12.2
+ GE0/0/1 10.1.13.3
+10.1.24.0/24 20 NULL GE0/0/0 10.1.12.2
+10.1.13.0/24 10 NULL GE0/0/1 Direct
+10.1.12.0/24 10 NULL GE0/0/0 Direct
+10.1.35.0/24 20 NULL GE0/0/1 10.1.13.3
+```
+
+ R1路由表中存在区域内的明细路由以及两条等价的默认路由
+
+**配置验证 (查看设备的IS-IS路由表) **
+
+```shell
+display isis route
+ Route information for ISIS(1)
+ -----------------------------
+ ISIS(1) Level-1 Forwarding Table
+ --------------------------------
+IPV4 Destination IntCost ExtCost ExitInterface NextHop Flags
+-------------------------------------------------------------------------------
+0.0.0.0/0 20 NULL
+10.1.24.0/24 30 NULL GE0/0/0 10.1.13.1 A/-/L/-
+10.1.13.0/24 10 NULL GE0/0/0 Direct D/-/L/-
+10.1.12.0/24 20 NULL GE0/0/0 10.1.13.1 A/-/L/-
+10.1.35.0/24 10 NULL GE0/0/1 Direct D/-/L/-
+Flags: D-Direct, A-Added to URT, L-Advertised in LSPs, S-IGP Shortcut,
+U-Up/Down Bit Set
+……
+……
+ ISIS(1) Level-2 Forwarding Table
+ --------------------------------
+IPV4 Destination IntCost ExtCost ExitInterface NextHop Flags
+-------------------------------------------------------------------------------
+10.1.24.0/24 30 NULL
+10.1.13.0/24 10 NULL GE0/0/0 Direct D/-/L/-
+10.1.12.0/24 40 NULL
+192.168.20.0/24 20 NULL GE0/0/1 10.1.35.5 A/-/-/-
+10.1.45.0/24 20 NULL GE0/0/1 10.1.35.5 A/-/-/-
+192.168.10.0/24 30 NULL GE0/0/1 10.1.35.5 A/-/-/-
+10.1.35.0/24 10 NULL GE0/0/1 Direct D/-/L/-
+Flags: D-Direct, A-Added to URT, L-Advertised in LSPs, S-IGP Shortcut,
+U-Up/Down Bit Set
+```
+
+ R3作为Level-1-2路由器,路由表中存在Level-1及Level-2路由
+
+**路由渗透配置**
+
+
+
+**R2:**
+
+```shell
+[R2] ip ip-prefix 1 permit 192.168.10.0 24
+[R2] isis 1
+[R2-isis-1] import-route isis level-2 into level-1 filter-policy ip-prefix 1
+```
+
+**R3:**
+
+```shell
+[R3] ip ip-prefix 1 permit 192.168.20.0 24
+[R3] isis 1
+[R3-isis-1] import-route isis level-2 into level-1 filter-policy ip-prefix 1
+```
+
+**路由渗透验证**
+
+ 通过查看R1的路由表,我们可以看到新增了两条明细路由192.168.10.0/24以及192.168.20.0/24,两条路由的开销值均为30,当有数据包经由R1到达这两个网段时,不会产生次优路径
+
+
+
+```shell
+ display ip routing-table protocol isis
+Route Flags: R - relay, D - download to fib
+------------------------------------------------------------------------------
+Public routing table : ISIS
+ Destinations : 5 Routes : 6
+ISIS routing table status :
+ Destinations : 5 Routes : 6
+Destination/Mask Proto Pre Cost Flags NextHop Interface
+0.0.0.0/0 ISIS-L1 15 10 D 10.1.12.2 GigabitEthernet0/0/0
+ ISIS-L1 15 10 D 10.1.13.3 GigabitEthernet0/0/1
+192.168.10.0/2 ISIS-L1 15 30 D 10.1.12.2 GigabitEthernet0/0/0
+192.168.20.0/2 ISIS-L1 15 30 D 10.1.13.3 GigabitEthernet0/0/1
+10.1.24.0/24 ISIS-L1 15 20 D 10.1.12.2 GigabitEthernet0/0/0
+10.1.35.0/24 ISIS-L1 15 20 D 10.1.13.3 GigabitEthernet0/0/1
+```
+
+3.IS-IS认证的分类
+
+ IS-IS认证是基于网络安全性的要求而实现的一种认证手段,通过在IS-IS报文中增加认证字段对报文进行认证。当本地路由器接收到远端路由器发送过来的IS-IS报文,如果发现认证密码不匹配,则将收到的报文进行丢弃,达到自我保护的目的
+
+**根据报文的种类,认证可以分为以下三类:**
+
+ 接口认证:在接口视图下配置,对Level-1和Level-2的Hello报文进行认证
+
+ 区域认证:在IS-IS进程视图下配置,对Level-1的CSNP、PSNP和LSP报文进行认证
+
+ 路由域认证:在IS-IS进程视图下配置,对Level-2的CSNP、PSNP和LSP报文进行认证
+
+**根据报文的认证方式,可以分为以下四类:**
+
+ 简单认证:将配置的密码直接加入报文中,这种加密方式安全性较其他两种方式低
+
+ MD5认证:通过将配置的密码进行MD5算法加密之后再加入报文中,提高密码的安全性
+
+ Keychian认证:通过配置随时间变化的密码链表来进一步提升网络的安全性
+
+ HMAC-SHA256认证:通过将配置的密码进行HMAC-SHA256算法加密之后再加入报文中,提高密码的安全性
+
+4.IS-IS认证详解
+
+**接口认证**
+
+ Hello报文使用的认证密码保存在接口下,发送带认证TLV的认证报文,互相连接的路由器接口必须配置相同的口令
+
+**区域认证**
+
+ 区域内的每一台L1路由器都必须使用相同的认证模式和具有共同的钥匙串
+
+**路由域认证**
+
+ IS-IS域内的每一台L2和L1/L2类型的路由器都必须使用相同模式的认证,并使用共同的钥匙串
+
+ 对于区域和路由域认证,可以设置为SNP和LSP分开认证
+
+ 本地发送的LSP报文和SNP报文都携带认证TLV,对收到的LSP报文和SNP报文都进行认证检查
+
+ 本地发送的LSP报文携带认证TLV,对收到的LSP报文进行认证检查;发送的SNP报文携带认证TLV,但不对收到的SNP报文进行检查
+
+ 本地发送的LSP报文携带认证TLV,对收到的LSP报文进行认证检查;发送的SNP报文不携带认证TLV,也不对收到的SNP报文进行认证检查
+
+ 本地发送的LSP报文和SNP报文都携带认证TLV,对收到的LSP报文和SNP报文都不进行认证检查
+
+5.IS-IS认证的配置
+
+
+
+
diff --git a/Datacom-MD/第十章:VRRP协议&DHCP协议.md b/Datacom-MD/第十章:VRRP协议&DHCP协议.md
new file mode 100644
index 0000000..cede73c
--- /dev/null
+++ b/Datacom-MD/第十章:VRRP协议&DHCP协议.md
@@ -0,0 +1,740 @@
+VRRP协议&DHCP协议
+
+> 作者:行癫
+
+------
+
+第一节:VRRP原理与配置
+
+一:VRRP技术概述
+
+1.单网关面临的问题
+
+ 当网关Router出现故障时,本网段内以该设备为网关的主机都不能与Internet进行通信
+
+
+
+2.VRRP概述
+
+ 通过把几台路由设备联合组成一台虚拟的“路由设备”,使用一定的机制保证当主机的下一跳路由设备出现故障时,及时将业务切换到备份路由设备,从而保持通讯的连续性和可靠性
+
+
+
+ VRRP的运行结果是在局域网上提供一个虚拟路由器
+
+**本例中:**
+
+ 局域网中有两个路由器R1和R2,R1端口IP地址为192.168.1.251/24,R2端口IP地址为192.168.1.252/24
+
+ 配置R1和R2关联到同一个虚拟路由器,该虚拟路由器使用192.168.1.254做为端口IP地址
+
+ 所有的PC使用192.168.1.254做为默认网关
+
+3.VRRP的基本概念
+
+
+
+ VRRP路由器:运行VRRP协议的路由器,如R1和R2。VRRP是配置在路由器的接口上的,而且也是基于接口来工作的
+
+ VRID:一个VRRP组(VRRP Group)由多台协同工作的路由器(的接口)组成,使用相同的VRID(Virtual Router Identifier,虚拟路由器标识符)进行标识。属于同一个VRRP组的路由器之间交互VRRP协议报文并产生一台虚拟“路由器”。一个VRRP组中只能出现一台Master路由器
+
+
+
+ 虚拟路由器:VRRP为每一个组抽象出一台虚拟“路由器”(Virtual Router),该路由器并非真实存在的物理设备,而是由VRRP虚拟出来的逻辑设备。一个VRRP组只会产生一台虚拟路由器
+
+ 虚拟IP地址及虚拟MAC地址:虚拟路由器拥有自己的IP地址以及MAC地址,其中IP地址由网络管理员在配置VRRP时指定,一台虚拟路由器可以有一个或多个IP地址,通常情况下用户使用该地址作为网关地址。而虚拟MAC地址的格式是“0000-5e00-01xx”,其中xx为VRID
+
+
+
+ Master路由器:“Master路由器”在一个VRRP组中承担报文转发任务。在每一个VRRP组中,只有Master路由器才会响应针对虚拟IP地址的ARP Request。Master路由器会以一定的时间间隔周期性地发送VRRP报文,以便通知同一个VRRP组中的Backup路由器关于自己的存活情况
+
+ Backup路由器:也被称为备份路由器。Backup路由器将会实时侦听Master路由器发送出来的VRRP报文,它随时准备接替Master路由器的工作
+
+ Priority:优先级值是选举Master路由器和Backup路由器的依据,优先级取值范围0-255,值越大越优先,值相等则比较接口IP地址大小,大者优先
+
+4.VRRP报文格式
+
+ VRRP只有一种报文,即Advertisement报文,基于组播方式发送,因此只能在同一个广播域传递。 Advertisement报文的目的组播地址为224.0.0.18
+
+
+
+ Ver:VRRP目前有两个版本,其中VRRPv2仅适用于IPv4网络,VRRPv3适用于IPv4和IPv6两种网络
+
+ Virtual Rtr ID:该报文所关联的虚拟路由器的标识
+
+ Priority:发送该报文的VRRP路由器的优先级
+
+ Count IP Addrs:该VRRP报文中所包含的虚拟IP地址的数量
+
+ Auth Type:VRRP支持三种认证类型:不认证、纯文本密码认证、MD5方式认证,对应值分别为0、1、2
+
+ Adver Int:发送VRRP通告消息的间隔。默认为1秒
+
+ IP Address:所关联的虚拟路由器的虚拟IP地址,可以为多个
+
+ Authentication Data:验证所需要的密码信息
+
+5.VRRP定时器
+
+**在VRRP协议工作过程中,VRRP定义了两个定时器:**
+
+ ADVER_INTERVAL定时器:Master发送VRRP通告报文时间周期,缺省值为1秒
+
+ MASTER_DOWN定时器:Backup设备监听该定时器超时后,会变为Master状态
+
+**MASTER_DOWN定时器计算公式如下:**
+
+ MASTER_DOWN =(3* ADVER_INTERVAL)+ Skew_time(偏移时间)
+
+ 其中,Skew_Time=(256–Priority)/256
+
+二:VRRP技术原理
+
+1.VRRP状态机
+
+ VRRP协议状态机有三种状态:Initialize(初始状态)、Master(活动状态)、Backup(备份状态)
+
+
+
+ 一个Startup事件可以由系统在VRRP配置完成后自动触发,也可以是在已经配置VRRP的端口上,底层链路由不可用变为可用而触发
+
+2.VRRP协议状态
+
+**Master状态**
+
+ 定期(ADVER_INTERVAL)发送VRRP报文
+
+ 以虚拟MAC地址响应对虚拟IP地址的ARP请求
+
+ 转发目的MAC地址为虚拟MAC地址的IP报文
+
+ 默认允许ping通虚拟IP地址
+
+ 当多台设备同时为Master时,若设备收到与自己优先级相同的报文时,会进一步比较IP地址的大小。如果收到报文的源IP地址比自己大,则切换到Backup状态,否则保持Master状态
+
+**Backup状态**
+
+ 接收Master设备发送的VRRP报文,判断Master设备的状态是否正常
+
+ 对虚拟IP地址的ARP请求,不做响应
+
+ 丢弃目的MAC地址为虚拟MAC地址的IP报文
+
+ 丢弃目的IP地址为虚拟IP地址的IP报文
+
+ 如果收到优先级和自己相同或者比自己优先级大的报文时,重置MASTER_DOWN定时器,不进一步比较IP地址的大小
+
+3.VRRP主备选举
+
+
+
+**VRRP优先级不相等时主备选举过程**
+
+ R1的接口VRRP优先级为200,R2的接口VRRP优先级为100,两台设备完成初始化后首先切换至Backup状态
+
+ R1与R2根据各自MASTER_DOWN定时器超时时间由Backup切换到Master状态,所以R1比R2更快切换至Master状态
+
+ R1和R2通过相互发送VRRP报文进行Master选举,优先级高的被选举为Master设备,因此R1被选为Master路由器
+
+ R1被选举为Master路由器后,立即发送免费ARP报文将虚拟MAC地址通告给与它连接的设备和主机
+
+**注意:**
+
+ 初始创建VRRP的设备工作在Initialize状态,收到接口Up的消息后,若此设备的优先级小于255,则会先切换至Backup状态,等待MASTER_DOWN定时器超时后再切换至Master状态
+
+ 如果优先级高的设备先启动,优先级低的设备后启动,则优先级高的设备先进入Master状态,优先级低的设备收到高优先级的VRRP通告报文,自己仍处于Backup状态
+
+ 如果优先级低的先启动,优先级高的后启动,则优先级低的先由Backup状态切换为Master状态,优先级高的设备收到优先级低的VRRP通告报文,重新进行选举,将优先级高的设备切换为Master状态
+
+
+
+**VRRP优先级相等时主备选举过程**
+
+ R1与R2的GE0/0/0接口VRRP优先级都是200,两台设备完成初始化后首先切换至Backup状态
+
+ 由于优先级相同,R1与R2的MASTER_DOWN定时器超时后,同时由Backup状态切换至Master状态
+
+ R1与R2交换VRRP报文,优先级一样,通过比较接口IP地址选举Master路由器,由于R2的接口IP地址大于R1的接口IP地址,因此R2被选举为Master路由器
+
+ R2被选举为Master路由器后,立即发送免费ARP报文将虚拟MAC地址通告给与它连接的设备和主机
+
+**注意:**
+
+ 初始创建VRRP的设备工作在Initialize状态,收到接口Up的消息后,若此设备的优先级小于255,则会先切换至Backup状态,等待MASTER_DOWN定时器超时后再切换至Master状态
+
+ 如果优先级高的设备先启动,优先级低的设备后启动,则优先级高的设备先进入Master状态,优先级低的设备收到高优先级的VRRP通告报文,自己仍处于Backup状态
+
+ 如果优先级低的先启动,优先级高的后启动,则优先级低的先由Backup状态切换为Master状态,优先级高的设备收到优先级低的VRRP通告报文,重新进行选举,将优先级高的设备切换为Master状态
+
+
+
+ 当路由器接口被配置为VRRP的IP地址拥有者时(接口IP地址与Virtual IP相同),路由器无需等待任何定时器超时,可以直接切换至Master状态
+
+**配置为IP地址拥有者时主备选举过程**
+
+ R1与R2的GE0/0/0接口VRRP优先级都采用默认配置(默认为100),但是R1的GE0/0/0接口IP地址与Virtual IP地址相同
+
+ R1的GE0/0/0接口直接切换至Master状态,R1成为Master路由器
+
+**注意:**
+ 通常情况下,VRRP路由器的接口IP地址不会与虚拟路由器的IP地址重叠,也就是说我们会为虚拟路由器单独规划一个IP地址,而不会使用某台路由器的接口IP地址。当然也存在一个特殊的情况,例如在某些网络中IP地址资源比较紧缺,那么也有可能会将某台路由器的接口IP地址用于虚拟路由器,此时该路由器将无条件成为Master
+
+ 无法手动将VRRP接口优先级配置为255,当接口IP地址为IP地址拥有者时,优先级自动成为255
+
+4.VRRP主备切换
+
+
+
+ 当Master设备主动放弃Master地位(如Master设备退出备份组)时,会发送优先级为0的通告报文,用来使Backup设备快速切换成Master设备,而不用等到MASTER_DOWN定时器超时。这个切换的时间称为Skew_time
+
+ 当Master设备发生网络故障而不能发送通告报文的时候,Backup设备并不能立即知道其工作状况。等到MASTER_DOWN定时器超时后,才会认为Master设备无法正常工作,从而将状态切换为Master
+
+5.VRRP主备回切
+
+
+
+ 正常情况下,由Master设备负责转发用户报文,如图所示,所有用户流量通过R1到达Internet。
+
+ 当R1出现故障时,网络会重新进行VRRP主备选举,如图所示,此时R2会成为新的Master设备负责转发用户报文
+
+
+
+ 当R1从故障恢复后,网络将重新进行VRRP主备选举,由于R1的优先级大于R2,所以R1又重新成为新的Master设备负责转发用户报文
+
+**VRRP抢占模式(Preempt Mode) :**
+
+ 抢占模式(默认激活):如果Backup路由器激活了抢占功能,那么当它发现Master路由器的优先级比自己更低时,它将立即切换至Master状态,成为新的Master路由器
+
+ 非抢占模式:如果Backup路由器没有激活抢占功能,那么即使它发现Master路由器的优先级比自己更低,也只能依然保持Backup状态,直到Master路由器失效
+
+三:VRRP典型应用
+
+1.VRRP负载分担
+
+ 通过创建多个虚拟路由器,每个物理路由器在不同的VRRP组中扮演不同的角色,不同虚拟路由器的Virtual IP作为不同的内网网关地址可以实现流量转发负载分担
+
+
+
+2.VRRP监视上行端口
+
+
+
+ VRRP可监视(Track)上行端口状态,当设备感知上行端口或者链路发生故障时,可主动降低VRRP优先级,从而保证上行链路正常的Backup设备能够通过选举切换为Master状态,指导报文转发
+
+ 如果用户未配置VRRP监视上行端口,则当VRRP备份组中的Master设备R1的上行接口或者链路出现故障时,VRRP备份组无法感知,Master无法向外转发流量。但是由于主备不会发生切换,导致出现流量黑洞
+
+3.VRRP与BFD联动
+
+ 通过配置VRRP与BFD联动,当Backup设备通过BFD感知故障发生之后,不再等待Master_Down_Timer计时器超时而会在BFD检测周期结束后立即切换VRRP状态,此时可以实现毫秒级的主备切换
+
+
+
+ 当VRRP备份组之间的链路出现故障时,由于此时VRRP报文无法正常交互,Backup设备需要等待Master_Down_Timer计时器超时后才会切换为Master设备,在等待切换期间内,业务流量仍会发往Master设备,此时会造成业务流量丢失
+
+ 通过在Master设备和Backup设备之间建立BFD会话并与VRRP备份组进行绑定,由BFD机制快速检测VRRP备份组之间的通信故障,并在出现故障时及时通知VRRP备份组进行主备切换,从而大大减少应用中断时间
+
+ 在普通BFD联动中,VRRP备份组会根据BFD会话的状态进行优先级调整,并根据调整后的优先级判断是否进行主备切换。在实际应用中,通常Master设备配置延时抢占,而Backup设备配置立即抢占,当Backup设备检测到BFD会话状态出现DOWN后,通过增加自身优先级大于Master优先级实现快速切换,当故障排除,BFD会话状态出现UP时,新的Master通过减小自己的优先级,发送vrrp通告报文,经过延迟时间后再次切换为Backup
+
+4.VRRP与MSTP结合应用
+
+
+
+ MSTP是将一个或多个VLAN映射到一个生成树的实例,若干个VLAN共用一个生成树,MSTP可以实现负载均衡
+
+ VRRP配置网关可以灵活根据网络拓扑变化而自动切换,提高网络可靠性
+
+ VRRP+MSTP可以在实现负载分担的同时保证网络冗余备份
+
+四:VRRP基本配置
+
+1.VRRP常用配置命令
+
+
+
+
+
+2.VRRP基础配置实例
+
+
+
+**配置要求:**
+
+ R1与R2组成一个VRRP备份组,其中R1为Master,R2为Backup
+
+ Master设备故障恢复时采用抢占模式,抢占延时10秒
+
+ Master设备监视上行接口状态实现VRRP主备自动切换
+
+**配置:**
+
+```shell
+[R1] interface GigabitEthernet0/0/0
+[R1-GigabitEthernet0/0/0] ip address 192.168.1.253 24
+[R1-GigabitEthernet0/0/0] vrrp vrid 1 virtual-ip 192.168.1.254
+[R1-GigabitEthernet0/0/0] vrrp vrid 1 priority 120
+[R1-GigabitEthernet0/0/0] vrrp vrid 1 preempt-mode timer delay 10
+[R1-GigabitEthernet0/0/0] vrrp vrid 1 track interface GigabitEthernet0/0/1 reduced 30
+```
+
+```shell
+[R2] interface GigabitEthernet0/0/0
+[R2-GigabitEthernet0/0/0] ip address 192.168.1.252 24
+[R2-GigabitEthernet0/0/0] vrrp vrid 1 virtual-ip 192.168.1.254
+[R2-GigabitEthernet0/0/0] vrrp vrid 1 priority 110
+```
+
+**VRRP基础配置验证**
+
+```shell
+[R1]display vrrp
+ GigabitEthernet0/0/0 | Virtual Router 1 #VRRP组ID为 1
+ State : Master #本设备在组中状态为Master
+ Virtual IP : 192.168.1.254
+ Master IP : 192.168.1.253
+ PriorityRun : 120 #接口在本VRRP组中优先级为120
+ PriorityConfig : 120
+ MasterPriority : 120
+ Preempt : YES Delay Time : 10 s #开启抢占模式,且延迟时间为10秒
+ TimerRun : 1 s
+ TimerConfig : 1 s
+ Auth type : NONE
+ Virtual MAC : 0000-5e00-0101
+ Check TTL : YES
+ Config type : normal-vrrp
+ Track IF : GigabitEthernet0/0/1 Priority reduced : 30
+ IF state : UP
+```
+
+```shell
+[R2]display vrrp
+ GigabitEthernet0/0/0 | Virtual Router 1
+ State : Backup #本设备在组中状态为Backup
+ Virtual IP : 192.168.1.254
+ Master IP : 192.168.1.253
+ PriorityRun : 110 #接口在本VRRP组中优先级为110
+ PriorityConfig : 110
+ MasterPriority : 120
+ Preempt : YES Delay Time : 0 s #开启抢占模式,延迟时间为0秒
+ TimerRun : 1 s
+ TimerConfig : 1 s
+ Auth type : NONE
+ Virtual MAC : 0000-5e00-0101
+ Check TTL : YES
+ Config type : normal-vrrp
+```
+
+第二节:DHCP原理与配置
+
+一:DHCP产生背景
+
+1.手工配置网络参数存在的问题
+
+**手工配置网络参数存在以下问题:**
+
+ 灵活性差
+
+ 容易出错
+
+ IP地址资源利用率低
+
+ 工作量大
+
+ 人员素质要求高
+
+
+
+ 手工配置主机IP地址、网络掩码、网关地址、DNS服务器地址等网络参数时,需要经过地址规划、地址分配、地址配置、地址维护等复杂的操作流程。这使地址分配灵活性差,IP地址资源利用低,同时较大的工作量导致配置容易出错,对人员素质要求较高
+
+2.DHCP的基本概念
+
+ DHCP是一种用于集中对用户IP地址进行动态管理和配置的协议
+
+ DHCP采用C/S(Client/Server,客户端/服务器)通信模式,协议报文基于UDP的方式进行交互,采用67(DHCP服务器)和68(DHCP客户端)两个端口号:正常工作时由客户端向服务器提出配置申请;服务器返回为客户端分配的IP地址等相应的配置信息
+
+**DHCP相对于手工配置有如下优点:**
+
+ 效率高
+
+ 灵活性强
+
+ 易于管理
+
+
+
+ 网络终端设备,例如主机、打印机、笔记本电脑、手机和AP,作为DHCP客户端,向DHCP服务器请求分配相关网络参数。DHCP服务器响应DHCP客户端请求进行动态分配
+
+二:DHCP工作原理与配置
+
+1.DHCP客户端首次接入网络的工作原理
+
+
+
+**发现阶段,即DHCP客户端发现DHCP服务器的阶段**
+
+ DHCP客户端发送DHCP DISCOVER报文来发现DHCP服务器。DHCP DISCOVER报文中携带了客户端的MAC地址、需要请求的参数列表选项、广播标志位等信息
+
+**提供阶段,即DHCP服务器提供网络配置信息的阶段**
+
+ 服务器接收到DHCP DISCOVER报文后,选择跟接收DHCP DISCOVER报文接口的IP地址处于同一网段的地址池,并且从中选择一个可用的IP地址,然后通过DHCP OFFER报文发送给DHCP客户端
+
+**选择阶段,即DHCP客户端选择IP地址的阶段**
+
+ 如果有多个DHCP服务器向DHCP客户端回应DHCP OFFER报文,则DHCP客户端一般只接收第一个收到的DHCP OFFER报文,然后以广播方式发送DHCP REQUEST报文,该报文中包含客户端想选择的DHCP服务器标识符和客户端IP地址
+
+**确认阶段,即DHCP服务器确认所分配IP地址的阶段**
+
+ DHCP客户端收到DHCP ACK报文,会广播发送免费ARP报文,探测本网段是否有其他终端使用服务器分配的IP地址
+
+2.DHCP报文格式
+
+
+
+**重要字段说明:**
+
+ Op(op code):表示报文的类型,取值为1或2,1:客户端请求报;服务器响应报文
+
+ Secs(seconds):由客户端填充,表示从客户端开始获得IP地址或IP地址续借后所使用了的秒数,缺省值为3600s
+
+ Flags:客户端请求服务器发送响应报文的形式,只有最高位有意义,其余15位置0。最高位为0时请求发送单播响应,最高位为1时请求发送广播响应
+
+ Yiaddr(your client ip address):表示服务器分配给客户端的IP地址。当服务器进行DHCP响应时,将分配给客户端的IP地址填入此字段
+
+ Siaddr(server ip address):DHCP服务器的IP地址
+
+ Chaddr(client hardware address):客户端的MAC地址
+
+ Options:DHCP通过此字段包含了服务器分配给终端的配置信息
+
+ Htype (hardware type): 表示硬件地址的类型
+
+ Hlen(hardware length): 表示硬件地址的长度
+
+ Hops(hops): 表示当前DHCP报文经过的DHCP Relay数目。该字段由客户端设置为0,每经过一个DHCP Relay时,该字段加1。此字段的作用是限制DHCP报文所经过的DHCP Relay数目
+
+ Xid:表示DHCP客户端选取的随机数,使DHCP服务器的回复与DHCP客户端的报文相关联
+
+ Sname(server host name): 表示客户端获取配置信息的服务器名字。此字段由DHCP服务器填写,是可选的。如果填写,必须是一个以0结尾的字符串
+
+ File(file name): 表示客户端启动DHCP相关配置的文件名。此字段由DHCP服务器填写,随着DHCP地址分配的同时下发至客户端。本字段是可选的,如果填写,必须是一个以0结尾的字符串
+
+3.Options预定义选项字段介绍
+
+ DHCP报文中Options字段为可变长度字段,最多为312Byte,此字段包含了DHCP报文类型,服务器分配给终端的配置信息,如网关IP地址,DNS服务器的IP地址,客户端可以使用IP地址的有效租期等信息
+
+ Options字段由Type、Length和Value三部分组成。其中Type字段取值范围1~255。常见的Options如下表所示:
+
+| **Type** | **Length (**Byte) | **Value** | **作用** |
+| -------- | ----------------- | ---------------------- | ------------------------------------------------------------ |
+| 1 | 4 | Subnet Mask | 设置子网掩码选项。 |
+| 3 | 4 | Router(网关) | 设置网关地址选项。 |
+| 50 | 4 | Requested IP Address | 设置请求IP地址选项。 |
+| 51 | 4 | IP Address Lease Time | 设置IP地址租约时间选项。 |
+| 53 | 1 | Message Type | 设置DHCP消息类型。 |
+| 54 | 4 | DHCP Server Identifier | 设置服务器标识。 |
+| 55 | 9 | Parameter Request List | 设置请求选项列表。客户端利用该选项指明需要从服务器获取哪些网络配置参数。 |
+| 58 | 4 | Rebinding Time Value | 设置续约T1时间,一般是租期时间的50%。 |
+| 59 | 4 | Renewal Time Value | 设置续约T2时间。一般是租期时间的87.5%。 |
+
+4.DHCP的消息类型
+
+ DHCP报文通过Options选项中的Type=53来表示DHCP的报文类型。如下图所示,当Type=53,Length=1,Value取值从01到08分别表示不同的DHCP报文类型
+
+
+
+ 1-DHCP DISCOVER:DHCP客户端首次登录网络时进行DHCP交互过程发送的第一个消息,用来寻找DHCP服务器
+
+ 2-DHCP OFFER:DHCP服务器用来响应DHCP DISCOVER消息,此消息携带了各种配置信息
+
+ 3-DHCP REQUEST:DHCP客户端广播请求回应DHCP服务器OFFER消息;DHCP客户端重启广播确认之前的IP地址等配置信息;续租
+
+ 4-DHCP DECLINE:当客户端发现服务器分配给它的IP地址发生冲突时会通过发送此消息来通知服务器
+
+ 5-DHCP ACK:DHCP服务器对客户端的DHCP REQUEST消息的确认响应消息
+
+ 6-DHCP NAK:服务器对客户端的DHCP REQUEST消息的拒绝响应消息
+
+ 7-DHCP RELEASE:客户端可通过发送此消息主动释放服务器分配给它的IP地址
+
+ 8-DHCP INFORM:DHCP客户端获取IP地址后,如果需要向DHCP服务器获取更为详细的配置信息(网关地址、DNS服务器地址),则向DHCP服务器发送DHCP INFORM请求消息
+
+5.Options自定义选项字段介绍
+
+ 除了标准协议中规定的字段选项外,还有部分选项内容没有统一规定,统称为用户自定义选项,例如Option 82和Option 43
+
+**Option 82称为中继代理信息选项**
+
+ Option 82中可以包含最多255个Sub-Option,若定义了Option 82,至少要定义一个Sub-Option
+
+ DHCP中继或DHCP Snooping设备接收到DHCP客户端发送给DHCP服务器的请求报文后,在该报文中添加Option 82,并转发给DHCP服务器。管理员可以从Option 82中获得DHCP客户端的信息,例如DHCP客户端所连接交换机端口的VLAN ID、二层端口号、中继设备的MAC地址等
+
+**Option 43称为厂商特定信息选项**
+
+ DHCP服务器和DHCP客户端通过Option 43交换厂商特定的信息。当DHCP服务器接收到请求Option 43信息的DHCP请求报文(Option 55中带有Option 43参数)后,将在回复报文中携带Option 43,为DHCP客户端分配厂商指定的信息
+
+ 在WLAN组网中,AP作为DHCP客户端,DHCP服务器可以为AP指定AC的IP地址,以方便AP与AC建立连接
+
+6.Option 43应用举例
+
+ 在WLAN三层组网中,当AP上线时,需要获取AC的IP地址,并与AC之间建立CAPWAP隧道
+
+ AP的IP地址通过DHCP服务器分配,当AC的IP地址与AP不在同一个广播域,AP无法通过广播的方式获取AC的IP地址,则CAPWAP隧道无法建立成功
+
+ AP通过DHCP报文中的Option 43选项字段获取AC的IP地址,当AP获取AC的IP地址后,可以进一步完成CAPWAP隧道的建立,从而实现AP上线
+
+
+
+ AC的IP地址是10.23.101.2,AP所在网络的网关地址为10.23.100.1,AP通过DHCP的方式从IP地址池Huawei1中获取IP地址,DHCP服务器通过option 43选项字段向AP通告AC的IP地址
+
+7.DHCP地址续租
+
+ DHCP服务器给每个分配给客户端的IP地址定义一个使用期限,该使用期限被称为租期。在租期到期前,DHCP客户端如果仍需要使用该IP地址,可以请求延长租期;如果不需要,可以主动释放该IP地址。在没有其他空闲地址可用的情况下,DHCP服务器会把客户端主动释放的IP地址分配给其他客户端
+
+ DHCP客户端根据IP地址的剩余租期的不同而产生不同形式的续租请求
+
+
+
+ 当租期达到50%(T1)时,DHCP客户端会自动以单播的方式向DHCP服务器发送DHCP REQUEST报文,请求更新IP地址租期。如果收到DHCP服务器回应的DHCP ACK报文,则租期更新成功
+
+ 当租期达到87.5%(T2)时,如果仍未收到DHCP服务器的应答,DHCP客户端会自动以广播的方式向DHCP服务器发送DHCP REQUEST报文,请求更新IP地址租期。如果收到DHCP服务器回应的DHCP ACK报文,则租期更新成功
+
+ 如果租期时间到时都没有收到服务器的回应,客户端停止使用此IP地址,重新发送DHCP DISCOVER报文请求新的IP地址
+
+**注意:**
+
+ DHCP客户端无论在T1还是T2时刻发送DHCP REQUEST报文后,如果收到DHCP NAK报文,则重新发送DHCP DISCOVER报文请求新的IP地址
+
+ 客户端在租期时间到之前,如果用户不想使用分配的IP地址(例如客户端网络位置需要变更),会触发DHCP客户端向DHCP服务器发送DHCP RELEASE报文,通知DHCP服务器释放IP地址的租期。DHCP服务器会保留这个DHCP客户端的配置信息,将IP地址列为曾经分配过的IP地址中,以便后续重新分配给该客户端或其他客户端。客户端可以通过发送DHCP INFORM报文向服务器请求更新配置信息
+
+8.DHCP客户端重用曾经使用过的地址
+
+ DHCP客户端非首次接入网络时,可以重用曾经使用过的地址。例如,网络中的主机作为DHCP客户端,在关机再开机的过程中,需要重新获取相关网络参数,则可以请求分配曾经使用过的IP地址
+
+
+
+**选择阶段**
+
+ 客户端广播发送包含前一次分配的IP地址的DHCP REQUEST报文,报文中的Option 50(请求的IP地址选项)字段填入曾经使用过的IP地址
+
+**确认阶段**
+
+ DHCP服务器收到DHCP REQUEST报文后,根据DHCP REQUEST报文中携带的MAC地址来查找有没有相应的租约记录。如果有则返回DHCP ACK报文,通知DHCP客户端可以继续使用这个IP地址,如果没有租约记录,则不响应
+
+9.DHCP分配IP地址顺序
+
+
+
+ DHCP服务器的数据库中与客户端MAC地址静态绑定的IP地址
+
+ 客户端以前曾经使用过的IP地址,即客户端发送的请求报文中请求IP地址选项的地址
+
+ 在DHCP地址池中,顺序查找可供分配的空闲IP地址,最先找到的IP地址
+
+ 如果在DHCP地址池中未找到可供分配的空闲IP地址,则依次查询超过租期、发生冲突的IP地址,如果找到可用的IP地址,则进行分配,否则报告错误
+
+10.DHCP配置命令介绍
+
+
+
+
+
+11.DHCP配置举例
+
+
+
+**实验要求:**
+
+ 采用基于全局地址池的方式为PC1分配IP地址
+
+**配置:**
+
+```shell
+[R1]DHCP enable
+[R1]ip pool HW
+[R1-ip-pool-HW]gateway-list 192.168.1.1
+[R1-ip-pool-HW]network 192.168.1.0 mask 24
+[R1-ip-pool-HW]excluded-ip-address 192.168.1.200 192.168.1.254
+[R1]interface GigabitEthernet 0/0/0
+[R1-GigabitEthernet0/0/0]DHCP select global #选择全局地址池
+```
+
+
+
+**实验要求:**
+
+ 采用基于接口地址池的方式为PC2和PC3分配IP地址,且PC3获取固定的IP地址
+
+**配置:**
+
+```shell
+[R1]interface GigabitEthernet 0/0/1
+[R1-GigabitEthernet0/0/1]ip address 192.168.2.1 24
+[R1-GigabitEthernet0/0/1]DHCP select interface #选择接口地址池
+[R1-GigabitEthernet0/0/1]DHCP server excluded-ip-address 192.168.2.254
+[R1-GigabitEthernet0/0/1]DHCP server static-bind ip-address 192.168.2.2 mac-address 00e0-fc00-00aa #为PC3分配固定的IP地址
+```
+
+**DHCP配置结果**
+
+```sheell
+[R1]display ip pool
+Pool-name : HW
+ Gateway-0 : 192.168.1.1
+ Mask : 255.255.255.0
+ IP address Statistic
+ Total: 253
+ Used: 2 Idle: 198
+ Expired: 0 Conflict: 0 Disable: 55
+```
+
+```shell
+PC3>ipconfig
+IPv4 address......................: 192.168.2.2
+Subnet mask.......................: 255.255.255.0
+Gateway...........................: 192.168.2.1
+Physical address..................: 54-89-98-86-2B-F4
+```
+
+**根据IP地址的使用情况,地址池中的IP地址可以分为多种状态:**
+
+ Used:表示此IP地址已使用
+
+ Idle:表示此IP地址处于空闲状态
+
+ Expired:表示此IP地址租期已过,处于空闲状态
+
+ Conflict:表示此IP地址与网络上其他地址冲突
+
+ Disable:表示此IP地址无法使用
+
+三:DHCP Relay工作原理与配置
+
+1.什么是DHCP Relay
+
+ 随着网络规模的不断扩大,网络设备不断增多,企业内不同的用户可能分布在不同的网段,一台DHCP服务器在正常情况下无法满足多个网段的地址分配需求。如果还需要通过DHCP服务器分配IP地址,则需要跨网段发送DHCP报文
+
+ DHCP Relay即DHCP中继,它是为解决DHCP服务器和DHCP客户端不在同一个广播域而提出的,提供了对DHCP广播报文的中继转发功能,能够把DHCP客户端的广播报文“透明地”传送到其它广播域的DHCP服务器上,同样也能够把DHCP服务器端的应答报文“透明地”传送到其它广播域的DHCP客户端
+
+
+
+2.DHCP Relay报文格式
+
+ DHCP Relay主要负责转发DHCP客户端与DHCP服务器之间的DHCP报文,所以DHCP Relay的报文格式只是把DHCP的报文部分字段做了相应的修改,报文格式没有发生变化
+
+
+
+ Hops:表示当前的DHCP报文经过的DHCP中继的数目。该字段由客户端或服务器设置为0,每经过一个DHCP中继时,该字段加1
+
+ Giaddr(gateway ip address):表示第一个DHCP中继的IP地址。当客户端发出DHCP请求时,第一个DHCP中继在将DHCP请求报文转发给DHCP服务器时,会把自己的IP地址填入此字段
+
+3.DHCP Relay工作原理
+
+
+
+**有中继场景时DHCP客户端首次接入网络的工作原理:**
+
+ 发现阶段:DHCP中继接收到DHCP客户端广播发送的DHCP DISCOVER报文后,通过路由转发将DHCP报文单播发送到DHCP服务器或下一跳中继
+
+ 提供阶段:DHCP服务器根据DHCP DISCOVER报文中的Giaddr字段选择地址池为客户端分配相关网络参数,DHCP中继收到DHCP OFFER报文后,以单播或广播方式发送给DHCP Client
+
+ 选择阶段:中继接收到来自客户端的DHCP REQUEST报文的处理过程同“发现阶段”
+
+ 确认阶段:中继接收到来自服务器的DHCP ACK报文的处理过程同“提供阶段”
+
+**注意:**
+
+DHCP中继收到DHCP DISCOVER报文后,处理规则为:
+
+ 检查DHCP报文中的Hops字段,如果大于16,则丢弃DHCP报文;否则,将Hops字段加1(表明经过一次DHCP中继),并继续下面的操作
+
+ 检查DHCP报文中的Giaddr字段。如果是0,将Giaddr字段设置为接收DHCP DISCOVER报文的接口IP地址。如果不是0,则不修改该字段,继续下面的操作
+
+ 将DHCP报文的目的IP地址改为DHCP服务器或下一跳中继的IP地址,源地址改为中继连接客户端的接口地址,通过路由转发将DHCP报文单播发送到DHCP服务器或下一跳中继
+
+DHCP服务器接收到DHCP DISCOVER报文后,选择与报文中Giaddr字段为同一网段的地址池,并为客户端分配IP地址等参数,然后向Giaddr字段标识的DHCP中继单播发送DHCP OFFER报文,DHCP中继收到DHCP OFFER报文后,会进行如下处理:
+
+ 检查报文中的Giaddr字段,如果不是接口的地址,则丢弃该报文;否则,继续下面的操作
+
+ DHCP中继检查报文的广播标志位。如果广播标志位为1,则将DHCP OFFER报文广播发送给DHCP客户端;否则将DHCP OFFER报文单播发送给DHCP客户端
+
+4.DHCP Relay配置命令
+
+
+
+**DHCP Relay配置举例**
+
+
+
+**配置要求:**
+
+ R1通过DHCP获取IP地址
+
+ R2的GE0/0/0接口开启DHCP Relay功能,并且指定DHCP Server的IP地址为10.1.1.2
+
+ R3创建地址池名字为”HW-1”,地址范围为192.168.10/24,网关为192.168.1.1
+
+**配置:**
+
+```shell
+[R1]interface GigabitEthernet0/0/0
+[R1-GigabitEthernet0/0/0]ip address DHCP-alloc
+[R1-GigabitEthernet0/0/0]quit
+```
+
+```shell
+[R2]DHCP server group HW
+[R2-DHCP-server-group-HW]DHCP-server 10.1.1.2
+[R2-DHCP-server-group-HW]quit
+[R2]interface GigabitEthernet 0/0/1
+[R2-GigabitEthernet0/0/1]ip address 10.1.1.1 24
+[R2-GigabitEthernet0/0/1]quit
+[R2]interface GigabitEthernet 0/0/0
+[R2-GigabitEthernet0/0/0]ip address 192.168.1.1 24
+[R2-GigabitEthernet0/0/0]DHCP select relay
+[R2-GigabitEthernet0/0/0]DHCP relay server-select HW
+[R2-GigabitEthernet0/0/0]quit
+```
+
+```shell
+[R3]ip pool HW-1
+[R3-ip-pool-HW-1]network 192.168.1.0 mask 24
+[R3-ip-pool-HW-1]gateway-list 192.168.1.1
+[R3-ip-pool-HW-1]quit
+[R3]interface GigabitEthernet 0/0/1
+[R3-GigabitEthernet0/0/1]ip address 10.1.1.2 24
+[R3-GigabitEthernet0/0/1]DHCP select global
+[R3-GigabitEthernet0/0/1]quit
+[R3]ip route-static 192.168.1.0 255.255.255.0 10.1.1.1
+```
+
+**DHCP Relay配置验证**
+
+ 查看R1的GE0/0/0接口获取到的IP地址信息:
+
+```shell
+display DHCP client
+DHCP client lease information on interface GigabitEthernet0/0/0 :
+ Current machine state : Bound
+ Internet address assigned via : DHCP
+ Physical address : 00e0-fce6-4691
+ IP address : 192.168.1.254
+ Subnet mask : 255.255.255.0
+ Gateway ip address : 192.168.1.1
+ DHCP server : 10.1.1.2
+……
+```
+
+ 查看R2 DHCP Relay信息:
+
+```shell
+display DHCP relay all
+ DHCP relay agent running information of interfaceGigabitEthernet0/0/0 :
+ Server group name : HW
+ Gateway address in use : 192.168.1.1
+display DHCP relay statistics
+ The statistics of DHCP RELAY:
+DHCP packets received from clients : 2
+DHCP packets sent to clients : 2
+DHCP packets received from servers : 2
+DHCP packets sent to servers : 2
+……
+```