面试题目补充

双点双向引入

路由引入的理解

为什么需要配置路由引入

为了让其他设备通过本设备访问到引入的路由
例如:

  1. 部署不同路由协议的机构合并,不同的网络使用不同的协议,并且这些网络需要共享路由信息,此时需要进行路由引入
  2. 采用不同厂商的协议、同一设备同一协议但不同进程的配置
  3. 网络协议的限制,比如使用拨号链路连接两个ISIS网络,而在拨号链路上是不适合运行ISIS协议的;需要配置静态路由,然后将静态路由引入ISIS

路由引入的本质

把其他协议(或者同一协议不同进程)学习到的路由表,以及运行该协议的直连引进到本协议的数据库。
例如将OSPF的路由引入RIP,会将下面两条命令显示所有的OSPF的路由全部引入RIP:dis ip rou pro ospf(对应第一句话)dis ospf int(对应第二句话)即将ospf协议优先的路由和宣告进ospf的路由都引入到rip中

路由引入需要注意开销值的变化

  1. 引入OSPF或者ISIS路由到RIP时,如果不指定COST,开销值默认是1。应该手工配置开销值以反映网络的真实拓扑
  2. 引入OSPF默认为1
  3. 引入ISIS,窄度量时默认为64,宽度量为10,即引入ISIS路由之前一般需要先更改ISIS的cost类型
    1. L1、L2区域都支持外部路由,但外部路由默认是从L2的方式引入进来的,路由cost值=指定引入路由的开销值(参数cost的值,缺省值为0)+64
    2. 如果要在L1区域引入外部路由,由于默认为引入路由到Level-2路由表中,所以必须要加level-1参数,才能引入成功
    3. 外部路由引入之后,每进过一跳,cost值加10

讲法1(推荐):双点双向存在的问题

讲法2
R1、R2、R3、R5运行OSPF协议,区域ID为0
R1、R2、R4之间运行IS-IS协议,使用Level-2区域
AR5将自己的Loopback0接口做为外部路由引入到OSPF区域中
在现网中,做实施的时候,一般是做完一台设备再去做另外一台设备的实施

1. 在R1上实施双向引入

R1上实施双点双向引入之后,R2会从ospf区域和isis区域同时收到5.5.5.5的路由,不同协议之间,首先比较的是外部优先级,ospf外部路由的外部优先级为150,isis外部路由的外部优先级为10,所以R2选择isis区域的路由放入路由表中,即R2访问5.5.5.5的路由为R2-->R4-->R1-->R3-->R5,出现了次优路径的问题

2. 在R2上实施双点双向引入

在R2实施双点双向引入,由于R2上关于5.5.5.5的路由已经优选了isis区域的路由,所以从ospf区域引入isis区域的路由中已经不再包含5.5.5.5的路由
但是从isis引入ospf区域的路由中还存在5.5.5.5的路由,即此时针对5.5.5.5这条路由来说,双点双向中只有isis区域路由到ospf区域生效了
在AR3上:

  1. 如果AR5与AR3之间是以太链路,此时AR3上针对5.5.5.5的路由出现了负载,一条指向R5,一条指向R2
  2. 如果AR5与AR3之间是P2P链路,那么AR3的路由表中只有一条指向R2的路由,因为ospf引入外部路由默认是type2,OE2的路由先比较外部cost,再比较内部cost,外部cost都为1,内部cost计算方式是100M/接口带宽,AR3和AR2之间带宽大于100M则cost为1,AR3与AR5之间是用的1M的串口线,则cost为100,那么R3会优选R2

AR3上针对5.5.5.5路由,不管是负载还是优选R2,在R2访问R5时的路由为R2-->R4-->R1-->R3-->R2,出现环路问题

3. 解决环路问题

只在R1上实施双点双向时出现次优路径,然后在R2上再实施双点双向引入,则会出现环路问题,究其原因是在isis区域中已经存在5.5.5.5这条路由,在AR2实施双点双向之后路由回灌导致的环路。此时不仅需要解决次优路径的问题,还需要解决路由回灌的问题
扩展性比较好的方式是通过打tag来解决路由回灌的问题,通过修改ospf外部路由的外部优先级的方式解决次优路径的问题,修改外部路由的优先级的方式有以下几种:

  1. 所有的外部路由的优先级都修改为10(小于15即可)。这种方式下,如果isis区域引入外部路由,同样会出现次优路径的问题,原因和ospf区域出现次优的原因相同
  2. 只是针对此条外部路由5.5.5.5修改优先级,但如果在引入外部路由6.6.6.6/32,还会出现同样的问题,扩展性很差
  3. 在引入外部路由5.5.5.5/32的时候打上tag,例如tag5,针对这个tag修改ospf的外部路由的优先级,这种方案扩展性比较好,如果引入其他外部路由时,只需要打上tag5即可

解决方案如下:

  1. R1上实施步骤如下:
    1. ospf引入isis的路由打上tag100,同时deny掉tag400
    2. isis引入ospf的路由打上tag200,同时deny掉tag300
    3. 使用router-policy针对tag5的路由修改优先级为10
  2. R2上实施步骤如下:
    1. ospf引入isis的路由打上tag300,同时deny掉tag200
    2. isis引入ospf的路由打上tag400,同时deny掉tag100
    3. 使用router-policy针对tag5的路由修改优先级为10

讲法2:双点双向存在的问题

讲法2

1. 次优路径

  1. R1将网段10.0.0.0/24引入到OSPF
  2. R2/R3分别将该路由引入ISIS,正常情况下,R2/R3 将路由引入ISIS会有先后,假设R3先于R2将该路由引入到ISIS
  3. 那么R2就会同时从OSPF和ISIS学到10.0.0.0/24的路由,于是R2会根据路由协议的优先级优选通过 ISIS学到的路由(OSPF的外部路由优先级为150,ISIS的路由优先级为15)
  4. 于是,当R2访问10.0.0.0/24网段时,会使用R4-R3-R1这条次优路径
  5. 为了避免出现这种情况,可以在路由器R2上使用route-policy修改OSPF ASE路由的优先级,即在OSPF进程下修改外部路由优先级小于15即可,使得10.0.0.0/24优先从ospf学到,使得R2选择正确的路由。但是具体的修改方法有以下几种:
    1. 所有的外部路由的优先级都修改为14,这样isis会出现次优,原因和ospf区域出现次优的原因相同
    2. 只是针对此条外部路由10.0.0.0/24修改,但如果在引入外部路由20.0.0.0/24,还会出现同样的问题,扩展性很差
    3. 比较好的做法是,在引入外部路由10.0.0.0/24的时候打上tag,针对这个tag修改ospf的外部路由的优先级

2. 环路

环路是由次优路径导致,即先出现次优路径,然后再导致环路的出现

1. 路由回灌导致的环路

  1. 因为R2和R3认为isis的外部路由更优,引入ospf区域后,会触发R1的选路
  2. 引入时默认的外部路由格式type2,根据选路原则,O>OIA>OE1>OE2,OE2会先比较外部cost,再比较内部cost。
  3. 因为外部cost默认是1,所以开始比较内部cost,R1引入外部路由走的是p2p,cost为48,而R1到R2是以太网,其cost为1,因此R1选择走R2
  4. 形成环路,R2访问外部路由时的路由时R2--R4--R3--R1--R2
  5. 解决方案:
    在R2和R3上防止路由回灌,通过先deny再打tag的方式,即使用4个tag即可解决路由回灌导致的环路,在lab实验中做过

2. 虚假环路(动荡环路)

  1. 如果不是通过打tag解决路由回灌导致的环路,而是通过修改优先级的方式解决,则会出现虚假环路的问题
  2. 例如R4的环回口上路由4.4.4.4/32通过import-route方式引入到isis的,此时将其undo掉,这条路由消失,那么他会发送生存周期为0的LSP进行撤销,即毒化LSP
  3. 假设R3先收到该LSP,因为R3也能从ospf区域学到该路由,但是isis优先。此时isis撤销该网段的路由,那么R3再访问4.4.4.4/32时,会选择走ospf区域,因为没有通过打tag的方式抑制路由回灌,就会再次引入isis,导致R2上会出现以下行为:
    1. 收到isis区域的毒化LSP,会撤销掉之前引入ospf区域的路由
    2. 然后又收到R3给的新的4.4.4.4/32的路由,以为该路由又恢复了,又引入ospf
  4. 同理,R3上也有相同的问题:有时会收到R2的撤销该路由的LSP,有时又会收到R2能到达该路由的LSP
  5. 因此产生了动荡环路,也叫虚假环路

三大协议对IPv6的支持

ospf

ospfv3在ospfv2基础上进行了修改,是一个独立的路由协议,但协议号仍然是89,在IPv6的Next Header字段进行标识

1. 组播地址

ospfv3以组播地址的方式发送协议报文,并且ipv6 hop limit为1;虚连接则通过单播发送更新。
在ospfv2中所有路由器监听的地址为224.0.0.5,那么在IPv6中对应的链路本地地址为FF02::5;
在ospfv2中DR监听的地址为224.0.0.6,那么在IPv6中对应的链路本地地址为FF02::6。

2. 链路

IPv6中重点强调链路的概念,在IPv6中,一个链路上可以分配多个IP子网,也就是IPv6前缀,同一个链路上的两个节点即使不具有相同的IPv6前缀,也可以直接通过这个链路通信,这点极大的改变了ospf的行为。
opsfv3是基于链路来运行的,ospfv3的路由器使用链路本地地址作为发送报文的源地址,一个路由器可以学习到这个链路上相连的所有其他路由器的链路本地地址,并使用这些链路本地地址作为下一跳来转发报文,这样做有什么好处呢?一是不需要配置IPv6全局地址就可以得到ospfv3拓扑,实现拓扑与地址的分离;二是在本链路上泛洪的报文不会传到其他链路上,从而减少报文不必要的泛洪,节省带宽。

3. 多实例复用

ospfv3支持在同一链路上运行多个实例,实现链路复用,节约成本。
一个ospfv3物理接口和多个实例绑定,并用不同的实例标识(Instance ID)区分,即ospfv3的单个链路支持运行多个ospfv3实例。
这些运行在同一物理链路上的多个ospfv3实例,分别与链路对端设备建立邻居以及发送报文,互不干扰,充分共享同一链路资源。
多实例复用
通过Instance ID可以实现R2和R3建立ospfv3邻居关系,R1和R4也建立ospfv3邻居关系。

4. 通过RouterID唯一标识邻居

ospfv2中,当网络类型为点到点或者虚连接时,通过RouterID来标识邻居,但是当网络类型为广播或者NBMA时,通过邻居接口的IP地址来标识邻居。
ospfv3中取消了这种复杂的标识邻居的方法,不论何种网络,统一采用RouterID来标识邻居

5. 认证变化

ospfv3报文头中不再包含认证字段,而是依赖ipv6的扩展认证头,通过ipv6提供的安全机制来保证自身报文的合法性。
IPSEC有两种安全认证方法:AH和ESP,AH支持认证、完整性校验、防报文重放功能,ESP则更加强大,除了AH的前面几样功能,ESP还支持加密功能
认证配置方法如下:

# 1. 进程或区域认证配置
authentication-mode hmac-sha256 key-id "keyid字符串" plain "密码"
#    或者
authentication-mode hmac-sha256 key-id "keyid字符串" cipher "密码"
# 使用区域验证时,一个区域中所有的设备在该区域下的验证模式和口令必须一致

# 2. 接口下认证【需要绑定实例ID】
undo portswitch # 接口下配置认证,需要先切换到三层
ospfv3 authentication-mode hmac-sha256 key-id "keyid字符串" plain "密码" instance "InstanceID"
#    或者
ospfv3 authentication-mode hmac-sha256 key-id "keyid字符串" cipher "密码" instance "InstanceID"
# 接口验证优于区域验证,同一网段的接口的验证模式和口令必须相同,不同网段可以不同

6. stub区域的支持

ospfv3支持对未知类型LSA的泛洪,为防止大量未知类型LSA泛洪进入stub区域,对于向stub区域泛洪的未知类型LSA进行了明确规定:只有当未知类型LSA的泛洪范围是区域或链路,并且U比特没有置位时,未知类型LSA才可以向stub区域泛洪

7. 报文头部的变化

ospfv3报文头、Hello、DD以及LSR报文中的字段与ospfv2略有不同,主要有以下几点:

  1. 版本号由2变为3
  2. 报文头的不同:
    ospfv3的报文头只有16字节,去掉了认证类型字段,但是添加了InstanceID字段认证类型字段为16bit,实例ID只用8bit,后面还有8bit的0,用来支持同一条链路运行多个实例,只在链路本地范围有效,如果路由器收到的的Hello报文中的InstanceID与当前接口配置的InstanceID不同,则无法建立邻居
  3. Hello报文:去掉了网络掩码字段,增加了InterfaceID,用来标识发送该Hello报文的接口ID
    options:ospfv3扩展到24bit,即3字节;而ospfv2只有8bit,即1字节
    在ospfv3中,option字段除了在hello报文和DD报文存在,还在1类、2类、8类、9类LSA中出现(ospfv2是所有的LSA中出现),主要增加了R位和V6位:
    1. R位:用来标识设备是否具备转发能力,如果为0,则标识该设备不参加路由计算,即该设备不转发非本地地址的报文
    2. V6位:如果为0,则标识该设备或者链路不会参加IPv6路由计算
  4. LSA报文中的LS type由1B扩展到2B,指定LSA的类型,支持了对未知LSA的处理
    1. U位:0,未知类型的LSA仅在链路范围内泛洪;1,未知类型的LSA按照LS type字段描述的泛洪范围进行泛洪
    2. S2/S1位:共同标识LSA的泛洪范围。00表示在产生该LSA的本地链路上泛洪;01标识产生LSA的路由器所在区域;10表示在整个自治系统内;11保留
    3. LSA Function Code:LSA的类型编码,描述LSA的类型

8. 1类和2类

ospfv3移除了IP地址的意义,实现了拓扑和地址的分离,ospfv3中的1类和2类LSA不再包含IP地址。

  1. RouteLSA不再包含地址信息,使能ospfv3的路由器使用8类LSA(Link LSA),将当前接口的链路本地地址以及路由器在这条连路上的一系列ipv6地址信息向该链路上的所有其他路由器通告。
    而1类LSA的Link ID改为本地有意义的Interface ID,用来标识拓扑,分为以下3种:
    RouterLSA的3种类型
  2. NetworkLSA不再包含路由信息,路由信息由9类LSA(Intra Area Prefix LSA,区域内前缀LSA)负责通告,9类LSA通告IPV6地址前缀。二类LSA将头部中的LS ID变为DR的Inteface ID,而且取消了掩码字段,仅仅用来描述拓扑连接情况

9. 增加2种LSA

  1. 8类LSA,链路LSA
    每个设备都会为每个链路产生一个8类LSA,仅在此链路内传播。向链路上的其他路由器通告本地链路地址,作为他们的下一跳;向链路上的其他路由器通告本地链路上的所有IPv6前缀;在广播或者NBMA网络上为DR提供Options取值
    8类LSA泛洪范围是链路本地,并且收到8类LSA的邻居并不会将该LSA通告给任何人。只在本地链路上传递信息是不够的,还需要在区域内传播,因此产生了9类LSA,在区域内通告路由前缀
    ospfv2中,LSDB通过描述一个有向线段图来描述网络拓扑结构,该有向图的端点有三种类型,路由器节点、Stub网段、Transit网段,依附于路由器节点和stub网段的subnet(子网)出现在1类LSA中,依附于Transit网段的subnet出现在2类LSA中,但是ospfv3中的1类和2类LSA不再包含地址信息,所以引入9类LSA(即区域内前缀LSA)来描述这些信息
  2. 9类LSA,区域内前缀LSA
    每个设备及DR都会产生至少一个9类LSA,在所属区域内传播。
    设备上产生的9类LSA描述与1类LSA相关联的IPv6前缀地址;而DR产生的描述的是与2类LSA相关联的IPv6前缀地址。

isis

1. 新增2种TLV和1个NLPID

为了支持IPv6的路由计算,isis新增2种TLV和1个网络层协议标识符NLPID

  1. 232号TLV:相当于ipv4中的132号TLV(接口IP地址tlv),只不过把原来32位的地址改为128位的地址。对于Hello报文,接口地址只能包含发送hello报文接口的链路本地地址;但是对于LSP报文,接口地址只能包含分配给设备接口的非链路本地地址
  2. 236号TLV:通过定义路由信息前缀、度量值等信息来说明网络的可达性,相当于ipv4中的128号(IP内部可达性TLV)和130号TLV(IP外部可达性TLV)之和,通过X位来标识IPv6内部和外部可达性信息
  3. 129号TLV(协议支持TLV)新增一个NLPID,NLPID是用来标识网络层协议报文的8比特字段,IPv6的NLPID值为142(0x8E,IPv4是204,0xCC),如果isis支持IPv6,那么向外发布IPv6路由时必须携带此NLPID值

2. isis多拓扑

isis单拓扑存在的问题:
混合拓扑中,一些设备或者链路如果不支持ipv6协议,但是支持ipv6的设备又无法感知到,仍然将ipv6报文转发给他们,导致ipv6报文无法继续转发而丢弃
isis多拓扑
为了维护相同的拓扑,所有接口都必须同时运行isis ipv4和isis ipv6,部署十分不灵活。isis多拓扑就是为了解决此问题而出现的。
一个isis自治域内运行多个独立的ip拓扑,例如ipv4拓扑和ipv6拓扑,这有利于isis在路由计算时根据实际组网情况来单独考虑ipv4和ipv6网络,根据链路所支持的IP协议,不同的拓扑分别进行SPF计算。
在isis多拓扑中,为了实现多拓扑的相互隔离,定义了4种新TLV:222(多拓扑中间系统)、229(多拓扑标识符)、235(多拓扑可达ipv4前缀)、237(多拓扑可达ipv6前缀)

bgp

bgp4+中引入的两个NLRI属性(可选非传递属性)分别是:

  1. MP_Reach_NLRI(14):多协议可达NLRI,用于发布可达路由和下一跳信息。该属性由至少一个三元组<地址族信息(3B)、下一跳信息(可变)、前缀信息(可变)>组成
    1. 地址族信息:由2B的AFI和1B的SAFI组成,ipv6的AFI编码为2,单播时SAFI为1,组播时SAFI为2,vpn路由的SAFI为128
    2. 下一跳信息:1B的下一跳地址长度 和 可变长度的下一跳地址组成
    3. 前缀信息:放在该属性的NLRI字段传递,不同的地址族格式不同。至少一个三元组<长度(1B)、标签(可变)、前缀(可变)>组成
      1. 长度:标签域和前缀域的总比特数
      2. 标签:至少一个标签,每个标签长度为3字节
      3. 前缀:前缀域由RD和IP地址前缀组成
  2. MP_UnReach_NLRI(15):多协议不可达NLRI,用于撤销路由。该属性由至少一个二元组<地址族信息(3B)、撤销路由(可变)>组成
    1. 地址族信息和MP_Reach_NLRI相同
    2. 撤销路由(Withdrawn Routes):和MP_Reach_NLRI前缀信息中的NLRI内容相同。当撤销路由时,如果指定了标签,只有指定了标签的路由被撤销;如果没有指定标签,只有不带标签的路由被撤销。

bgp4+中的Next_Hop属性用IPv6地址来表示,可以是IPv6的全球单播地址或者链路本地地址
下一跳地址长度字段决定了下一跳地址的个数,长度为16时,下一跳地址为下一跳路由器的全球单播地址,长度为32时,再加一个链路本地地址。


ospf、isis、bgp路由撤销以及报文

1. ospf路由撤销

在ospf中以lsa去承载路由信息,ospf中撤销路由就是撤销lsa或更新这条lsa,即撤销报文都是LSU。
撤销方式有3种:1. 更新,发送一条序列号加1的LSA,该LSA不包含原来的路由,针对还有其他路由的LSA;2. 老化,将原来LSA的age设置为3600之后发出去,针对已经没有路由的LSA(更新的LSA的优先级要大于老化LSA的优先级);3. 设备故障,不能主动发送LSA撤销,其他设备执行ISPF,该lsa在3600后撤销

域内(1类和2类)

1类lsa的撤销

1类-1
  1. 情景1:R1的环回口去使能之后,R1会发送一条新的的1类LSA撤销环回口的路由,R2收到之后更新LSDB更新
  2. 情景2:R1与R2之间的链路故障之后,触发ispf算法,此时R1和R2上均有两条1类LSA,一条是自己产生的、一条是邻居产生的,此时自动撤销自身产生的1类LSA,不需要发送LSA,至于邻居产生的,只能等待3600进行自然老化不能撤销非自身产生的
    1类-2
  3. 场景3:R1与R2之间的链路故障,此时R1、R2、R3上各有3条1类LSA,R2和R3上的R1的1类LSA只能等待3600秒之后自然老化,但是R2和R3自身产生的1类LSA不会撤销,因为其还有存在的必要。此种情况下会触发R2的ispf算法,如果R2是DR,还会触发2类LSA的更新不能撤销非自身产生的

2类lsa的撤销

  1. 非DR故障
    2类-1
    1. 场景1:R1与R2之间的链路故障,因为此时描述R1与R2之间联系的这个2类LSA已经没有路由了,所以将原来的LSA的age=3600进行路由撤销老化
      2类-2
    2. 场景2:R1故障之后,除了触发R2和R3的ispf算法进行路由收敛之外,R3作为DR还要进行2类LSA的更新,将序列号加1,此条LSA中不再包含R1与R3之间的网段的链路状态信息更新
  2. DR故障
    2类-2
    1. 场景3:R3作为DR故障之后,触发R1和R2的ispf算法进行路由收敛,R2作为BDR会变成DR,同时选举R1作为BDR,R2会发送一条新的LSA来描述R1与R2之间的网段,关于R3的二类LSA只能等待3600秒自然老化不能撤销非自身产生的
    2. 场景4:如果在3600秒之内,R3恢复了,那么R3只能成为DR other,此时从R2处同步到lsdb后,发现之前自身发送的2类LSA,此时会将此条LSA的age修改为3600秒之后进行撤销老化

域间和域外(3类、4类、5类和7类)

该三种LSA的撤销方式一致,通过发送3600秒的LSA,只不过5类和7类的LSA只有当OSPF引入了外部路由的时候才产生,而3类LSA则是当添加或撤销路由时候ABR向其它区域通告的

  1. 3类lsa的撤销
    ABR会产生一条3类LSA,age=3600秒,ospf的LSA最大老化时间为3600秒,当达到最大老化时间后该LSA将不可用,路由器就会删除与该LSA相关的路由,以此来撤销路由
  2. 4类lsa的撤销
    4类LSA由ABR设备发送,只有不存在ASBR的区域才会存在描述该ASBR的4类LSA,如果该ASBR不再引入外部路由或者已经不是ASBR了,即ASBR所在区域的1类LSA的E比特为为0了,则由ABR撤销该4类LSA,方式是age=3600
  3. 5类lsa的撤销:外部路由
    5类和7类lsa产生的路由,当产生该5类或7类的ASBR不引入某路由后,ASBR会产生一条Age=3600秒的lsa向相应区域进行泛洪,路由器收到后就会5、7类lsa对应的路由条目撤销

OSPFv3

  1. ospfv3中1类和2类LSA用来描述拓扑信息,只有3类、4类、5类、7类描述路由信息,撤销方式与v2相同,均使用age=3600的方式。
  2. 增加2类LSA,8类LSA(链路LSA)和9类LSA(区域内前缀LSA):
    1. 8类LSA通告的是链路本地地址和网络前缀(只有配置了全局单播地址或者唯一本地地址才会有网络前缀),8类LSA的撤销是通过序列+1的方式进行撤销,告知邻居撤销该路由
    2. 9类LSA分为Router(实节点)和Network(伪节点)
      1. Router的撤销方式为序列号+1
      2. Network的撤销方式,如果该LSA中不再包含可用的路由则采用age=3600的方式,如果还包含可用的路由则采用序列号+1的方式

2. isis路由撤销

撤销方式有两种:1. 进程下使用import-route引入的路由撤销,通过发送生存周期为0的报文撤销;2. 接口下使能isis的路由撤销,通过发送新的不包含该路由的lsp(序列号加1)撤销

撤销内部路由

isis 的路由信息是封装在lsp的tlv中的
isis路由撤销

  1. 当R8在isis进程下将lo0去使能后通过import-route引入的直连路由,R8会将原来的这份lsp的remaining lifetime时间变为0发出,撤销这条lsp,从而撤销这条路由
  2. 当R8在lo0接口下将isis去使能后, R8会产生一个不携带lo0接口信息的lsp,序列号加1,在L2区域泛洪,其他路由器收到该lsp后重新收敛计算,把路由表中的关于R8的lo0接口的路由撤销

撤销外部路由

撤销外部路由的时候会将原来的lsp的remaining lifetime时间变为0发出,撤销这条lsp,从而撤销这条路由
当生存周期减到0后该LSP不可用,再等60sLSP从数据库中删除,路由删除,该60秒称为零老化时间,在该时间内,路由器会向网络通告撤销的lsp,该lsp里的剩余生存时间为0秒,用于加速网络收敛,收到该lsp的路由器会将路由删除。

3. bgp路由撤销

bgp使用Update报文来携带被撤销的路由
bgp路由撤销
R3在bgp中通告3.3.3.3/32位路由,R1和R2上均有此路由。当R2的g0/0/1接口down之后,R2会向R1发送update报文,撤销掉它此前向R1通告的该路由
该update报文中Withdrawn Routes Length表示Withdrawn Routes字段的数据长度,如果Withdrawn Routes Length字段数值为0,则表示Withdrawn Routes字段没有任何数据。Withdrawn Routes是撤销路由,该字段包括一系列的IP地址前缀信息,以<length, prefix>的格式来表示,比如<19,198.18.160.0>表示一个198.18.160.0 255.255.224.0的网络
如果撤销一条多协议BGP(MP-BGP)路由,是通过可选非传递属性MP_UnReach_NLRI来撤销的,该属性由至少一个二元组<地址族信息(3B)、撤销路由(可变)>组成,其中地址族信息包含2B的AFI和1B的SAFI,撤销路由是由至少一个<长度(1B)、标签(可变)、前缀(可变)>三元组组成


IPv4和IPv6报文头部的不同

IPv6相比IPv4有哪些优势?

  1. 地址空间更大
  2. 报头格式更简单
  3. IPv6有状态/无状态自动配置和重新编址
  4. IPv6端到端的路由,没有NAT转换
  5. 网络层支持IPSec的认证和加密,支持端到端的安全
  6. IPv6新增了流标记域,提供QoS保证
  7. IPv6支持移动性更好

IPv4报文头部:可变长度,最少20B
IPv4报文头部
IPv6报文头部:固定长度40B,其中32字节的地址,剩下的8字节只有版本、流量类型、流标签、净载荷长度、下一个头部和跳数限制
IPv6报文头部
整体对比:
整体对比
IPv4中的主要字段都已经被IPv6继承了,而删除的一部分确实没必要的字段,还有一部分字段可以使用扩展头部的形式出现在IPv6报文里。

  1. 删除的内容
    1. 头部长度:头部没有选项字段,头部长度固定为40B,所有不再需要头部长度字段
    2. 用于分片的(标识、DF、MF、分段偏移):IPv6分段使用分段扩展头,并且IPv6分片与重组只能在源与目的地上执行,不允许在中间路由器进行
    3. 头部校验:使用认证扩展头AH,进行报文验证和完整性检查,并且在TCP和UDP报文中都已经有了16位的校验字段
    4. 选项字段:使用扩展头来扩展功能,不再需要选项字段
  2. 增加的内容
    1. 流标签:使用流标签标识流的好处如下
      1. 更加方便的标识流:通过流标签、源地址、目的地址三元组方式就可以唯一标识一条通信流,而IPv4需要使用五元组
      2. 降低转发路由器负担:因为不需要端口号来确定流,也就不需要解析传输层协议
      3. 便于对IPSec报文做QoS处理:流标签在IPv6基本头中,使用IPSec时对转发路由器可见,因此转发路由器可以在使用IPv6报文IPSec的情况下仍然可以通过三元组针对特定的流进行QoS处理,而ipv4中使用ipsec时由于其上层数据被加密,转发路由器无法解析,从而无法进行QoS
  3. 继承的内容
    1. 版本
    2. 服务类型TOS=流量类别Traffic Class:基本相同,标识对应的通信流类别,或者说是优先级别
    3. 总长度-->净载荷长度:ipv4中的总长度包含头部MTU定义不同:ipv4的MTU=ipv4头部+净载荷;ipv6的MTU=ipv6头部+扩展头+净载荷
    4. 协议=下一个头部:两者功能类似,ipv4协议字段规定了净载荷交由哪种协议来处理,ipv6中的Next Header字段可选择性的指向下一个扩展头部或者协议
    5. TTL=Hop Limit:最初的IPv4的TTL协议规定的是分段传输的最大时间,但实际上,所有的操作都用跳数来取代了时间,因此,IPv6直白的使用Hop Limit来限定传输时间。当然两者功能相同,都有效的阻止了数据分段在网络停留太久时间而陷入无限循环的问题

三层交换机和路由器收到未知表项如何处理

转发原理的区别

1. 路由器

  1. 路由器由基于软件路由引擎执行数据包交换,而路由器的转发采用最长匹配的方式,转发效率较低即利用IP地址来确定转发的地址
  2. 当路由器收到单播报文,会查找FIB
    1. 如果FIB中有对应表项则按照对应表项进行转发
    2. 如果没有表项则丢弃报文
  3. 当路由器收到组播报文
    1. 若未开启组播路由功能则丢弃
    2. 如果开启组播路由功能,则按照组播路由表项进行转发;如果没有表项,则丢弃
  4. 当路由器收到广播报文(目的地址为255.255.255.255)接收处理,不往外转发和泛洪

2. 交换机

  1. 三层交换机通过硬件执行交换,其三层功能是通过划分不同的Vlan实现的,配置vlan之后会分配相应的IP,自动生成mac即利用MAC地址来确定转发数据的目的地址
  2. 当三层交换机收到一单播,判断此以太网帧的目的MAC地址是否为自己
    1. 如果不是自己,查看MAC地址表
      1. 如果MAC地址表中有对应表项则按照对应表项进行转发
      2. 如果没有表项则在同一广播域中泛洪
    2. 如果目的MAC为自己则三层转发,三层交换机在对第一个数据流进行路由后,将产生一个MAC地址与IP地址的映射表,当同样的数据流再次通过时,将根据此表直接从二层通过,从而消除网络延迟,提高数据包转发的效率。同时,三层交换机的路由查找是针对数据流的,它利用缓存技术,实现快速转发。
  3. 当交换机收到组播报文或广播报文就在同一广播域中泛洪处理,同时泛洪的接口包括vlanif接口,交由三层转发引擎进行基于IP的处理
    1. 若未开启组播路由功能则丢弃,如果开启组播路由功能,则按照组播路由表项进行转发,如果没有表项,则丢弃
    2. 若收到广播报文,会把ARP二层解封装,查看ARP里面的内容,看一下请求的ip地址是不是三层交换机vlan interface的IP地址,如果是就回复,否则丢弃

处理流程区别

1. 路由器

首先查看mac地址第8比特:

  1. 如果为0,说明是单播报文
    1. 如果mac地址不是路由器本身接口的mac,直接丢弃
    2. 如果mac地址是路由器本身接口的mac,则解封装查看三层目的IP地址
      1. 如果目的IP是接口IP,则交给接口处理
      2. 如果目的IP不是接口IP,则去查找路由表,如果有相应表项则重新封装转发出去,否则丢弃
  2. 如果为1,说明是组播和广播报文
    1. 如果mac地址不是全1,说明是组播报文
      1. 未开启组播功能则丢弃
      2. 开启组播功能,如果有相应的组播表项,则按照组播表项转发;否则丢弃
    2. 如果mac地址全为1,说明是广播报文(ARP请求报文),然后进行解封装,查看ARP请求的IP地址
      1. 如果是路由器的接口地址则进行回应
      2. 如果不是路由器的接口地址,则查看是否开启ARP代理
        1. 如果没有开启,则直接丢弃
        2. 如果开启了,则判断有没有去往目的IP的路由,有则去做代理,否则丢弃

2. 交换机

首先查看mac地址第8比特:

  1. 如果为0,说明是单播报文
    1. 如果目的mac是交换机的mac,则解封装之后交给三层处理
      在对第一个数据流进行路由后,将产生一个MAC地址与IP地址的映射表,当同样的数据流再次通过时,将根据此表直接从二层通过
    2. 如果目的mac不是交换机的mac,查看mac地址表项
      1. 如果存在则直接进行二层转发
      2. 如果没有,则进行未知单播帧的泛洪
  2. 如果为1,说明是组播和广播报文
    1. 如果mac地址不是全1,则为组播报文首先同一vlan内进行泛洪,其次交给三层处理
      1. 如果未开启组播功能则丢弃
      2. 如果开启组播功能,则按照组播路由表项进行转发,如果没有表项,则丢弃
        只有PIM和IGMP组播报文才会交给CPU处理,即MAC是01-00-5E的报文一律交给CPU处理,主要是为了减轻CPU负担
    2. 如果mac地址全是1,则为ARP请求报文,首先在同一vlan内进行泛洪,其次交给三层解封状处理
      1. 如果请求的IP为交换机vlan的IP,则进行回应
      2. 如果不是则丢弃

补充

如何区别单播还是组播?

根据数据帧中的目的MAC进行识别:

  1. 如果MAC地址的第8bit为1则为广播或者组播,进行泛洪处理;
  2. 如果为0则为单播,根据mac地址表信息进行转发、泛洪或者丢弃

未知单播帧和广播帧泛洪的区别?

未知单播帧泛洪:数据帧的目的mac不在本地mac地址表中,则进行泛洪处理
广播帧泛洪:数据帧的目的mac全为1,则进行泛洪处理

二层广播和三层广播的区别

  1. 产生原因:二层广播是由于不知道目的mac而产生的,而三层广播是由于应用层协议的需求产生的,例如DHCP的发现报文、RIP的请求报文等
  2. 处理方式:交换机对于二层或者三层广播报文都是在广播域内泛洪;而路由器对于三层广播目的地址255.255.255.255的数据是交给CPU处理的,对于二层ARP广播可以开启ARP代理来处理。也就是说二层交换机隔离了冲突域,但是没有隔离广播域,而三层路由器可以终结广播,但是仍然可以处理广播

交换机处理数据的行为:

  1. 泛洪:收到未知单播帧、组播帧、广播帧时会进行泛洪处理
  2. 转发:收到已知单播帧
  3. 丢弃:单播帧的入接口和出接口相同时则丢弃

交换机和路由器的流量整形出接口的区别

1. 路由器整形

路由器整形场景
  1. 整形一般在出方向上做,原因如下:
    1. 入方向没有缓存队列
    2. 假如上游设备出方向做了整形,即数据来源方向做了整形,那么下游设备的入方向就不会出现超出流量了
  2. 在路由器上整形如何配置?
    1. 基于接口整形qos gts cir cbs
    2. 基于队列整形qos queue-profile
    3. 基于MQC实现流量整形traffic behavior gts cir cbs
  3. 令牌桶使用单速单桶
    gts只能用在路由器接口,交换机做不了GTS,交换机的接口为二层接口,而二层接口无法配置GTS,因为GTS是针对三层流量

2. 交换机整形

交换机整形
  1. 也是在出方向上整形
  2. 交换机的整形配置:
    1. 基于队列qos queue cir cbs pir pbs,加入pir=cir即P桶=C桶那么相当于效果是单速单通一样的
    2. 基于接口,使用接口限速qos lr outbound,但此种情况限速的cir必须大于等于队列整形的cir之和
  3. 令牌桶使用双速双桶

总结

  1. 路由器使用的是单速单通,交换机使用的是双速双桶
  2. 路由器可以基于队列、MQC和接口;而交换机只能基于队列和接口做qos lr限速

什么是令牌桶技术
单速单桶,cir cbs,承诺信息速率。若一个数据包大于C桶中令牌,则为红色不通过;小于C桶令牌,则通过标记绿色
单速双桶,cir cbs ebs,承诺突发。若一个数据包小于C桶中令牌标记为绿色,减少C桶令牌数量;若大于C桶令牌,小于E桶令牌,则为黄色,减少E桶令牌数量;若大于CE中令牌,则标记红色
双速双桶,cir pir cbs pbs,峰值突发。若一个数据包小于C桶P桶,则为绿色,同时减少CP两桶令牌,标记为绿色;若大于C小于P,则标记黄色,只减少P桶令牌;若大于P则报文标记为红色


## 三层交换机和路由器的区别
`交换谋快,路由谋转`
### 1. 硬件
`三层交换机在网络收敛上慢于路由器并且抵抗网络震荡的能力也弱`
三层交换机是通过交换芯片转发数据的,路由器则是通过cpu转发数据的
### 2. 数据的处理方式
`三层交换机在数据转发上的速度要优于路由器`
三层交换机的首包通过cpu转发,同时通过arp协议建立交换芯片硬件表项(mac地址与ip地址的映射表),后续报文通过交换芯片直接硬件转发,即`一次路由,多次交换`,交换机的硬件三层表项中只包含了目的地址、目的ip对应的mac地址、出口vlan及端口。
路由器通过路由表选择路由后,将该路由下发到FIB(转发信息表)表中,数据到达路由器时,通过FIB表的最长匹配原则查表转发。
## 3. 功能
路由器提供包括分组过滤、分组转发、优先级、复用、加密、 压缩和防火墙等功能,并且接口类型丰富,支持的三层功能强大,支持负载分担、链路备份、nat转换等,路由器在大型网络中的协议计算,路由表大小,收敛时间等都优于三层交换机。
三层交换机的优点在于可以加快局域网内数据的交换,并且加入路由功能也是为这个目的服务的。一般将三层交换机运用于网络的核心层和汇聚层。
## 处理报文的区别
对于路由器来讲,是一个三层设备,当然兼具二层的功能;
三层交换机**配置vlan interface接口,配完后就会有一个IP地址,同时有一个IP地址所对应的mac地址**
### 1. 单播
1. 路由器:
若收到一个二层单播帧,要判断这个帧的**目的mac地址是不是接口的mac地址**:
    1. 如果目的mac**不是接口的mac地址**,直接丢掉
    2. 如果是,解封装去看**三层目的ip地址**,再看三层**目的ip地址是不是接口的ip地址**:
        1. 如果是,交给接口处理
        2. 如果不是,去查找路由表,然后重新去做一个二层帧的封装,继续往下查找
2. 交换机:
    1. 如果**不是交换机的mac地址**,去看mac地址转发表
        1. 如果有,直接二层转发,不需要上送到三层
        2. 如果没有,未知单播泛洪
    2. 如果收到的**目的mac地址是交换机的mac地址**的话,先把二层帧解封装,把它送给三层处理,去查找路由表
### 2. 组播
1. 路由器:
若收到一个二层组播帧,要看路由器的接口有没有加入这个组
    1. 缺省情况下,路由器接口加入了224.0.0.1、224.0.0.2(使能了组播功能就加入了)
    2. 如果路由器接口没有加入到这个组播组,那么丢弃
2. 交换机:
    1. 若收到一个二层组播帧,朝着所有端口泛洪
    2. 并且把组播帧解封装,送到vlan interface接口,看一下接口有没有加入到这个组,如果加入了要去响应或者处理, 否则不会响应也不会处理
### 3. 广播
1. 路由器
    1. 如果是arp广播,它就会解封装,**看arp信息里请求的ip地址是谁**
        1. 如果请求的**是路由器所在接口的IP地址**,则进行响应
        2. 如果说请求的IP地址**不是路由器接口的IP地址**
            1. 路由器**没有开启ARP代理**,则丢弃
            2. 开启了ARP代理,路由器去判断有没有去往目标网段的路由,如果有,就去做代理
2. 交换机
    1. 若收到一个二层广播帧,比如ARP广播,那么这种情况下,会朝着所有接口去泛洪
    2. 除此之外,因为是三层交换机,会把ARP二层解封装,查看ARP里面的内容,看一下**请求的ip地址是不是三层交换机vlan interface的IP地址**,如果是就回复,否则丢弃