diff --git a/d01-Networks-Cables-OSI-and-TCP-Models.md b/d01-Networks-Cables-OSI-and-TCP-Models.md
index a5fc03e..3999243 100644
--- a/d01-Networks-Cables-OSI-and-TCP-Models.md
+++ b/d01-Networks-Cables-OSI-and-TCP-Models.md
@@ -347,6 +347,7 @@ CCNA 考试要求你理解 OSI 模型,以及各层有哪些应用和协议。
 ### TCP/IP、DoD 模型
 
 TCP/IP 模型是另一个框架,作为 OSI 模型的替代。它是由 高级防务研究项目署(the Defense Advanced Research Projects Agency,DARPA)创建的四层或五层模型。它就是为人熟知的国防部模型。自顶向下的四层分别是:
+
 ```console
 4 - 应用, Application [Telnet/FTP/DNS/RIP]
 3 - 传输/主机到主机,Transport/Host-to-Host [UDP/TCP/ICMP]
@@ -1278,7 +1279,9 @@ Router(config)#interface FastEthernet0
 
 最终,路由器进入到了接口配置模式。
 
-`Router(config-if)#`
+```console
+Router(config-if)#
+```
 
 在这里,你可以为接口配置上 IP 地址,设置其带宽,部署一条访问控制清单,以及完成很多其它事项。你的路由器或交换机可能会与我(作者)的有不同的接口编号,所以请使用 `?` 或 `show ip interface brief` 命令去查看你的选项。
 
diff --git a/d04-Router-and-Switch-Security.md b/d04-Router-and-Switch-Security.md
index bb8b901..5d85349 100644
--- a/d04-Router-and-Switch-Security.md
+++ b/d04-Router-and-Switch-Security.md
@@ -241,7 +241,7 @@ warnings—Warning conditions (severity=4)
 
 而你有可以将这些日志消息发往几个不同的地方。
 
-```
+```console
 Router(config)#logging ?
     A.B.C.D     IP address of the logging host
     buffered    Set buffered logging parameters
@@ -352,7 +352,7 @@ SwitchOne(config)#ip ssh authentication-retries 2
 
 可使用命令 `ip ssh version 2` 开启 SSH 版本`2`。让我们看看其中一个密钥。在这个实例中,该密钥是为 HTTPS 生成的。因为其是在开启 HTTPS 时自动生成的,所以其名称也会自动产生。
 
-```
+```console
 firewall#show crypto key mypubkey rsa
 Key name: HTTPS_SS_CERT_KEYPAIR.server
 Temporary key
@@ -376,7 +376,9 @@ Switch#
 
 而用一个简单的命令,就可以关闭 HTTP 访问。
 
-`Switch(config)#no ip http server`
+```console
+Switch(config)#no ip http server
+```
 
 查看交换机上 HTTP 服务器的状态。
 
@@ -435,7 +437,7 @@ enable secret 5 $1$mERr$hx5rVt7rPNoS4wqbXKX7m0 [strong level 5 password]
 
 你总是应该关闭那些你不会用到的服务。思科已经在关闭那些不安全和很少用到的服务和协议上做得很好了;尽管如此,你可能会要因明确这点而亲自关闭它们。同样也会有一些服务是有帮助的。多数服务可在全局配置模式中的 `service` 命令下找到。
 
-```
+```console
 Switch(config)# service ?
 compress-config         Compress the configuration file
 config                  TFTP load config files
@@ -830,7 +832,7 @@ CDP 作为非常强大的故障排除工具,考试中要求你掌握如何来
 
 下列配置输入,正是图 4.1 中的。
 
-```
+```console
 Router0#show cdp neighbors
 Capability Codes: R - Router, T - Trans Bridge, B - Source Route Bridge, S - Switch, H -
 Host, I - IGMP, r - Repeater, P - Phone
@@ -877,7 +879,7 @@ Duplex: full
 
 前面我们已经讲过怎样在整台设备或仅在某个接口上关闭 CDP 了。而另两个有关命令是显示设备有关 CDP 的协议信息的 `show cdp` 命令,以及通过输入设备名称来查看某台具设备信息的 `show cdp entry <Router>` 命令。建议在今天要配置的实验中花些时间,来查看 CDP 的众多输出。
 
-```
+```console
 Router0#show cdp
 Global CDP information:
     Sending CDP packets every 60 seconds
@@ -913,7 +915,7 @@ Router0#show cdp ?
 
 交换机的 CAM 表是一些存储位置,这些存储位置包含了物理端口上的那些 MAC 地址,及其 VLAN 参数。交换机 CAM 表中动态学习到的内容,或者说 MAC 地址表,可通过命令 `show mac-address-table dynamic` 查看到,如下面的输出所示。
 
-```
+```console
 VTP-Server-1#show mac-address-table dynamic
             Mac Address Table
 -------------------------------------------
@@ -1048,7 +1050,7 @@ VTP-Server-1(config-if)#switchport port-security mac-address 001f.3c59.7777 vlan
 
 同过执行 `show port-security` 命令,可以验证全局端口安全配置参数(global port security configuration parameters)。下面展示了默认值下的此命令的打印输出。
 
-```
+```console
 VTP-Server-1#show port-security
 Secure Port MaxSecureAddr  CurrentAddr SecurityViolation   Security Action
            (Count)        (Count)      (Count)
@@ -1080,7 +1082,7 @@ Security Violation count : 0
 
 而要查看该端口上具体配置的静态安全 MAC 地址,就要用到 `show port-security address` 或者 `show running-config interface [name]` 命令了。以下输出演示了 `show port-security address`。
 
-```
+```console
 VTP-Server-1#show port-security address
           Secure Mac Address Table
 -------------------------------------------------------------------
@@ -1119,7 +1121,7 @@ VTP-Server-1(config-if)#switchport port-security maximum 2
 
 可用除了 `show running-config` 命令外的,在静态地址保全配置示例中用到的同样命令,来验证动态 MAC 地址保全的配置。这是因为,与静态或粘滞的 MAC 地址保全不同,所有动态学习到的地址是不保存在交换机配置文件中的,且在端口关闭后会被移除。那些同样的地址也要在端口再度开启后重新学习。下面的输出演示了 `show port-security address` 命令的输出,现实了一个配置为动态 MAC 地址保全学习的接口。
 
-```
+```console
 VTP-Server-1#show port-security address
 			Secure Mac Address Table
 ------------------------------------------------------------------
@@ -1169,7 +1171,7 @@ switchport port-security mac-address sticky 0030.803f.ea81
 
 上面输出中粗体的 MAC 地址都是动态学到的,且被加入到当前配置文件中了。而无需管理员手动配置来将这些地址加入到配置文件。默认情况下,粘滞 MAC 地址保全并不是自动加入到启动配置文件(the startup configuration, NVRAM)中去的。而为确认此信息已被保存到 NVRAM 中,也就是这些地址不要在交换机重启后重新学习,就要记住执行 `copy running-config startup-config` 命令, 或者命令 `copy system:running-config nvram:startup-config`, 执行二者中的哪一条,取决于部署该特性的那台交换机的 IOS 版本。下面的输出演示了在配置了粘滞地址学习的端口上的 `show port-security address` 命令。
 
-```
+```console
 VTP-Server-1#show port-security address
 		Secure Mac Address Table
 ------------------------------------------------------------------
@@ -1199,7 +1201,7 @@ Max Addresses limit in System : 1024
 
 使用接口配置命令 `switchport port-security [violation {protect | restrict | shutdown | shutdown vlan}]` 来配置这些选项。如果某个端口因为因为一个安全冲突而关闭,它就显示为 `errdisabled`,此时需要使用 `shutdown` 和接着的 `no shutdown` 命令来将其再度开启。
 
-```
+```console
 Switch#show interfaces FastEthernet0/1 status
 Port Name	Status			Vlan	Duplex	Speed	Type
 Fa0/1		errdisabled		100		full	100		100BaseSX
@@ -1229,7 +1231,7 @@ VTP-Server-1(config-if)#switchport port-security violation restrict
 
 是通过命令 `show port-security` 命令,来对所配置的端口安全冲突动作进行验证的,如下面的输出所示。
 
-```
+```console
 VTP-Server-1#show port-security
 Secure Port	MaxSecureAddr	CurrentAddr	SecurityViolation	Security Action
 				(Count)			(Count)		(Count)
@@ -1518,7 +1520,7 @@ Security Violation Count	: 0
 
 10. 你将看到 FastEthernet 端口立即宕掉。
 
-```
+```console
 Switch#
 %LINK-5-CHANGED: Interface FastEthernet0/1, changed state to administratively down
 %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/1, changed state to down
diff --git a/d05-IP-Addressing.md b/d05-IP-Addressing.md
index 194893a..a09ead6 100644
--- a/d05-IP-Addressing.md
+++ b/d05-IP-Addressing.md
@@ -168,7 +168,7 @@ IP 版本 4(IPv4)设计用于解决设备命名问题。IPv4 使用二进制
 
 相对于二进制,十六进制对人类来讲更易于掌握,其又能够近似于二进制那样为计算机和网络设备所使用。任何的数都可由十六进制构造出来,这点跟二进制和十进制一样;如下面的例子一样,只需计算`16`的乘积。
 
-```
+```console
 1 x 16 = 16
 16 x 16 = 256
 16 x 16 x 16 =4096
@@ -712,47 +712,64 @@ IP 地址分配的规则有:**网络上的每个地址,都要是其主机所
 ## 课文中进制转换的答案
 
 1. Convert 1111 to hex and decimal
-```
+
+```console
 	Hex = F
 	Decimal = 15
 ```
+
 2. Convert 11010 to hex and decimal
-```
+
+```console
 	Hex = 1A
 	Decimal = 26
 ```
+
 3. Convert 10000 to hex and decimal
-```
+
+```console
 	Hex = 10
 	Decimal = 16
 ```
+
 4. Convert 20 to binary and hex
-```
+
+```console
 	Binary = 10100
 	Hex = 14
 ```
+
 5. Convert 32 to binary and hex
-```
+
+```console
 	Binary = 100000
 	Hex = 20
 ```
+
 6. Convert 101 to binary and hex
-```
+
+```console
 	Binary = 1100101
 	Hex = 65
 ```
+
 7. Convert A6 from hex to binary and decimal
-```
+
+```console
 	Binary = 10100110
 	Decimal = 166
 ```
+
 8. Convert 15 from hex to binary and decimal
-```
+
+```console
 	Binary = 10101
 	Decimal = 21
 ```
+
 9. Convert B5 from hex to binary and decimal
-```
+
+```console
 	Binary = 10110101
 	Decimal = 181
 ```
@@ -775,7 +792,7 @@ IP 地址分配的规则有:**网络上的每个地址,都要是其主机所
 
 1. 先是明确路由器上的串行借口编号,你的路由器与上面拓扑图中的可能有所不同。同时,还要明确串行链路的哪一端连接的是DCE线,因为在该端是需要`clock rate`命令的。
 
-```
+```console
 Router>en
 Router#sh ip interface brief
 Interface		IP-Address	OK?	Method	Status					Protocol
@@ -795,7 +812,7 @@ DCE cable, no clock rate
 
 2. 在一侧为路由器加上主机名及IP地址,如该侧是DCE,就为其加上时钟速率(the clock rate)。
 
-```
+```console
 Router#conf t
 Enter configuration commands, one per line. End with CNTL/Z.
 Router(config)#hostname RouterA
@@ -808,7 +825,7 @@ RouterA(config-if)#no shut
 
 3. 为另一侧加上主机名和IP地址。同时使用`no shut`命令将该接口开启。
 
-```
+```console
 Router>en
 Router#conf t
 Enter configuration commands, one per line. End with CNTL/Z.
@@ -824,7 +841,7 @@ RouterB#
 
 4. 用`ping`命令测试连接。
 
-```
+```console
 RouterB#ping 192.168.1.1
 Type escape sequence to abort.
 Sending 5, 100-byte ICMP Echos to 192.168.1.1, timeout is 2 seconds:
diff --git a/d06-NAT.md b/d06-NAT.md
index 336ccb6..ca9913b 100644
--- a/d06-NAT.md
+++ b/d06-NAT.md
@@ -112,7 +112,7 @@ NAT内部和外部的分址,是一个经典的考试问题,所以还需在
 
 下面的输出给出了一种思科IOS软件下配置NAT(动态NAT)的方式。可以看出,该配置使用了可用的`description`和`remark`两种特性,来帮助管理员更容易地对网络进行管理和故障排除。
 
-```
+```console
 R1(config)#interface FastEthernet0/0
 R1(config-if)#description ‘Connected To The Internal LAN’
 R1(config-if)#ip address 10.5.5.1 255.255.255.248
@@ -132,7 +132,7 @@ R1(config)#exit
 
 按照这个配置,命令`show ip nat translations`就可以用来对路由器上具体进行的转换进行查看,如下面的输出所示。
 
-```
+```console
 R1#show ip nat translations
 Pro		Inside global	Inside local	Outside local	Outside global
 icmp	150.1.1.4:4		10.5.5.1:4		200.1.1.1:4		200.1.1.1:4
@@ -165,7 +165,7 @@ tcp		150.1.1.5:159	10.5.5.3:159	200.1.1.1:23	200.1.1.1:23
 
 对上面的网络,配置应像下面这样。
 
-```
+```console
 Router(config)#interface f0/0
 Router(config-if)#ip address 192.168.1.1 255.255.255.0
 Router(config-if)#ip nat inside
@@ -178,6 +178,7 @@ Router(config-if)#exit
 Router(config)#ip nat inside source static 192.168.1.1 200.1.1.1
 Router(config)#ip nat inside source static 192.168.2.1 200.1.1.2
 ```
+
 命令`ip nat inside`和`ip nat outside`,告诉路由器哪些是内侧NAT接口,哪些是外侧的NAT接口。而命令`ip nat inside source`命令,就定义了那些静态转换,想要多少条就可以有多少条的该命令,那么就算你掏钱买的那些公网IP地址有多少个,就写上多少条吧。在思科公司,笔者曾解决有关此类问题的大量主要的配置错误,就是找不到`ip nat inside`及`ip nat outside`语句!考试中可能会碰到那些要求找出配置错误的问题。
 
 强烈建议将上述命令敲入到某台路由器中去。本书中有很多的NAT实验,但是在阅读理论章节的同时,你敲入得越多,那么这些信息就能越好地进入你的大脑。
@@ -201,7 +202,7 @@ Router(config)#ip nat inside source static 192.168.2.1 200.1.1.2
 
 在上面的图6.5中,让内部地址使用的是一个从`200.1.1.1`到`200.1.1.16`的地址池。下面是要实现该目的的配置文件。这里就不再给出路由器接口地址了。
 
-```
+```console
 Router(config)#interface f0/0
 Router(config-if)#ip nat inside
 Router(config)#interface s0/1
@@ -234,7 +235,7 @@ IP地址处于紧缺之中,在有着成千上万的地址需要路由时,将
 
 而要配置PAT,需要进行如同动态NAT的那些同样配置,还要在地址池后面加上关键字“overload”。
 
-```
+```console
 Router(config)#interface f0/0
 Router(config-if)#ip nat inside
 Router(config)#interface s0/1
@@ -302,7 +303,7 @@ NAT故障中十次有九次,都是由于路由器管理员忘记了把`ip nat
 
 2. 在路由器`A`上需要加入一个IP地址,以模拟LAN上的一台主机。**通过一个环回接口,可以实现这个目的**。
 
-```
+```console
 RouterA#conf t
 Enter configuration commands, one per line. End with CNTL/Z.
 RouterA(config)#interface Loopback0
@@ -312,7 +313,7 @@ RouterA(config-if)#
 
 3. 为进行测试,需要告诉`Router B`将发往任何网络的任何流量,都发往`Router A`。通过一条静态路由完成这个。
 
-```
+```console
 RouterB#conf t
 Enter configuration commands, one per line. End with CNTL/Z.
 RouterB(config)#ip route 0.0.0.0 0.0.0.0 Serial0/1/0
@@ -321,7 +322,7 @@ RouterB(config)#
 
 4. 要测试该条静态路由是否工作,通过从`Router A`上的环回接口对`Router B`进行`ping`操作。
 
-```
+```console
 RouterA#ping
 Protocol [ip]:
 Target IP address: 192.168.1.2
@@ -346,7 +347,7 @@ RouterA#
 
 5. 在`Router A`上配置一个静态NAT条目。使用NAT,将地址`10.1.1.1`, 在其离开该路由器时,转换成`172.16.1.1`。同样需要告诉路由器哪个是NAT的内部接口,哪个是外部接口。
 
-```
+```console
 RouterA#conf t
 Enter configuration commands, one per line. End with CNTL/Z.
 RouterA(config)#int Loopback0
@@ -360,7 +361,7 @@ RouterA(config)#
 
 6. 打开NAT调试,如此就可以看到转换的进行。此时再执行另一个扩展`ping`操作(自`L0`接口的),并查看NAT表。因为IOS的不同,你的输出可能与我的不一样。
 
-```
+```console
 RouterA#debug ip nat
 IP NAT debugging is on
 RouterA#
@@ -410,7 +411,7 @@ RouterA#
 
 7. 记住,路由器随后很快就会清除该NAT转换,为其它IP地址使用这个/这些NAT地址而对其进行清理。
 
-```
+```console
 NAT: expiring 172.16.1.1 (10.1.1.1) icmp 6 (6)
 NAT: expiring 172.16.1.1 (10.1.1.1) icmp 7 (7)
 ```
@@ -437,7 +438,7 @@ NAT: expiring 172.16.1.1 (10.1.1.1) icmp 7 (7)
 
 2. 需要给`RouterA`添加两个IP地址来模拟LAN上的主机。通过两个环回接口,可以达到这个目的。这两个IP地址将位处不同子网,但都以`10`地址开头。
 
-```
+```console
 RouterA#conf t
 Enter configuration commands, one per line. End with CNTL/Z.
 RouterA(config)#interface Loopback0
@@ -449,7 +450,7 @@ RouterA(config-if)#
 
 3. 为了进行测试,需要告诉`RouterB`将到任何网络的任何流量,都发往`RouterA`。用一条静态路由完成这点。
 
-```
+```console
 RouterB#conf t
 Enter configuration commands, one per line. End with CNTL/Z.
 RouterB(config)#ip route 0.0.0.0 0.0.0.0 Serial0/1/0
@@ -458,7 +459,7 @@ RouterB(config)#
 
 4. 在`RouterA`上,从环回接口向`RouterB`发出`ping`操作,以此来测试该静态路由是否工作。
 
-```
+```console
 RouterA#ping
 Protocol [ip]:
 Target IP address: 192.168.1.2
@@ -483,7 +484,7 @@ RouterA#
 
 5. 在`RouterA`上配置一个NAT地址池。在本实验中,使用地址池`172.16.1.1`到`172.16.1.10`。任何以`10`开头的地址,都将成为一个NAT。记住你**必须**指定NAT的内部和外部接口,否则NAT就不会工作。
 
-```
+```console
 RouterA#conf t
 Enter configuration commands, one per line. End with CNTL/Z.
 RouterA(config)#int l0
@@ -506,7 +507,7 @@ RouterA(config)#
 
 6. 打开NAT调试,如此才可以看到转换的发生。接着执行扩展`ping`(自`L0`和`L1`发出的),并查看NAT表。因为IOS平台的不同,你的输出可能和下面的不一样。将会看到NAT地址池中的两个地址正在用到。
 
-```
+```console
 RouterA#debug ip nat
 RouterA#ping
 Protocol [ip]:
@@ -595,11 +596,13 @@ RouterA#
 
 重复先前的实验。这次,在引用地址池时,将`overload`命令加到该配置行的后面。这会指示路由器使用PAT。去掉`Loopback1`。**请注意,正如Farai指出的那样,在真实世界中,地址池通常只会有一个地址,否则在外部接口上会超载**(Please note that as Farai says, in the real world, your pool will usually have only one address or you will overload your outside interface)。
 
-`RouterA(config)#ip nat inside source list 1 pool 60days overload`
+```console
+RouterA(config)#ip nat inside source list 1 pool 60days overload
+```
 
 我已经为方便而使用思科Packet Tracer,完成了上面的实验,所以你通常会碰到与我的输出所不一致的输出。下面是一个PAT实验的示例输出。从中可以看出,路由器给每个转换都加上了一个端口号。不幸的是,在NAT地址池实验中,会看到相似的编号,这是一个PAT的混淆之处。
 
-```
+```console
 RouterA#show ip nat tran
 Inside global	Inside local		Outside local		Outside global
 10.0.0.1:8759 	172.16.1.129:8759 	192.168.1.2:8759 	192.168.1.2:8759
diff --git a/d07-IPv6.md b/d07-IPv6.md
index 3740015..896c3a7 100644
--- a/d07-IPv6.md
+++ b/d07-IPv6.md
@@ -634,7 +634,7 @@ DAD通过使用邻居询问(`135`类型的ICMPv6)及节点询问多播地址
 
 在全局开启IPv6路由之后,接口配置命令`ipv6 address [ipv6-address/prefix-length | prefix-name sub-bits/prefix-length | anycast | autoconfig <default> | dhcp | eui-64 | link-local]`就可以用于配置接口的IPv6分址了。关键字`[ipv6-address/prefix-length]`用于指定分配给该接口的IPv6前缀和前缀长度。下面的配置演示了如何为一个路由器接口配置子网`3FFF:1234:ABCD:5678::/64`上的第一个地址。
 
-```
+```console
 R1(config)#ipv6 unicast-routing
 R1(config)#interface FastEthernet0/0
 R1(config-if)#ipv6 address 3FFF:1234:ABCD:5678::/64
@@ -643,7 +643,7 @@ R1(config-if)#exit
 
 按照此配置,`show ipv6 interface [name]`命令就可用于验证配置的IPv6地址子网(即`3FFF:1234:ABCD:5678::/64`), 如下面的输出所示。
 
-```
+```console
 R1#show ipv6 interface FastEthernet0/0
 FastEthernet0/0 is up, line protocol is up
 	IPv6 is enabled, link-local address is FE80::20C:CEFF:FEA7:F3A0
@@ -660,7 +660,7 @@ FastEthernet0/0 is up, line protocol is up
 
 就如在本模块早先指出的那样,IPv6允许在同一接口上配置多个前缀。而如过在同一借口上配置了多个前缀,`show ipv6 interface [name] prefix`命令,就可以用来查看所有分配的前缀,以及它们各自的有效和首选生命期数值。下面的输出显示了在一个配置了多个IPv6前缀的路由器接口上,该命令所打印出的信息。
 
-```
+```console
 R1#show ipv6 interface FastEthernet0/0 prefix
 IPv6 Prefix Advertisements FastEthernet0/0
 Codes:	A - Address, P - Prefix-Advertisement, O - Pool
@@ -681,7 +681,7 @@ AD	3FFF:1234:ABCD:9012::/64 [LA] Valid lifetime 2592000, preferred lifetime 6048
 
 `[autoconfig <default>]`关键字开启SLAAC。如用到该关键字,路由器将动态学习链路上的前缀,之后将`EUI-64`地址加到所有学习到的前缀上。`[default]`关键字是一个允许安装一条默认路由的可选关键字(the `<default>` keyword is an optional keyword that allows a default route to be installed)。下面的配置样例,演示了如何在某个路由器接口上开启无状态自动配置,同时额外地允许安装上默认路由。
 
-```
+```console
 R2(config)#ipv6 unicast-routing
 R2(config)#interface FastEthernet0/0
 R2(config-if)#ipv6 address autoconfig default
@@ -690,7 +690,7 @@ R2(config-if)#exit
 
 按照这个配置,路由器`R2`将会监听`FastEthernet0/0`接口所在本地网段上的RA报文。该路由器将会对每个学习到的前缀,动态地配置一个`EUI-64`地址,并接着安装上指向该RA通告路由器本地链路地址的默认路由。使用`show ipv6 interface [name]`命令,即可对动态地址配置进行验证,如下面的输出所示。
 
-```
+```console
 R2#show ipv6 interface FastEthernet0/0
 FastEthernet0/0 is up, line protocol is up
 	IPv6 is enabled, link-local address is FE80::213:19FF:FE86:A20
@@ -716,7 +716,7 @@ FastEthernet0/0 is up, line protocol is up
 
 在上面的输出中,注意到尽管接口上没有配置显式的IPv6地址,还是动态地为经由侦听RA报文所发现的子网,配置了一个`EUI-64`地址。每个这些前缀的计时器,都继承自通告RA报文的那台路由器。为了进一步验证无状态自动配置,可以使用`show ipv6 route`命令,来验证到首选通告路由器本地链路地址的默认路由,如下面所演示的那样。
 
-```
+```console
 R2#show ipv6 route ::/0
 IPv6 Routing Table - 13 entries
 Codes:	C - Connected, L - Local, S - Static, R - RIP, B - BGP
@@ -746,7 +746,7 @@ S	::/0 [1/0]
 
 按照这样的配置,命令`show ipv6 interface`就可用于验证验证分配到接口`FastEthernet0/0`上的IPv6接口ID, 如下面的输出所示。
 
-```
+```console
 R2#show ipv6 interface FastEthernet0/0
 FastEthernet0/0 is up, line protocol is up
 	IPv6 is enabled, link-local address is FE80::213:19FF:FE86:A20
@@ -763,7 +763,7 @@ FastEthernet0/0 is up, line protocol is up
 
 要验证该`EUI-64`地址的构造过程,同样可以通过使用`show interface`命令,查看指定接口的MAC地址的方式,来检查该完整的IPv6地址。
 
-```
+```console
 R2#show interface FastEthernet0/0
 FastEthernet0/0 is up, line protocol is up
 	Hardware is AmdFE, address is 0013.1986.0a20 (bia 0013.1986.0a20)
@@ -776,7 +776,7 @@ FastEthernet0/0 is up, line protocol is up
 
 而如果要手动配置一个本地链路地址,就必须分配一个本地链路地址块`FE80::/10`中的地址。下面的配置实例,演示了如何在某接口上配置一个本地链路地址。
 
-```
+```console
 R3(config)#interface FastEthernet0/0
 R3(config-if)#ipv6 address fe80:1234:abcd:1::3 link-local
 R3(config-if)#exit
@@ -784,7 +784,7 @@ R3(config-if)#exit
 
 按照该配置,就可用`show ipv6 interface [name]`命令验证这个手动配置的本地链路地址,如下面的输出所示。
 
-```
+```console
 R3#show ipv6 interface FastEthernet0/0
 FastEthernet0/0 is up, line protocol is up
 	IPv6 is enabled, link-local address is FE80:1234:ABCD:1::3
diff --git a/d08-Integrating-IPv4-and-IPv6-Network-Environments.md b/d08-Integrating-IPv4-and-IPv6-Network-Environments.md
index 24bae62..76bf6ac 100644
--- a/d08-Integrating-IPv4-and-IPv6-Network-Environments.md
+++ b/d08-Integrating-IPv4-and-IPv6-Network-Environments.md
@@ -67,7 +67,7 @@
 
 通过在接口配置命令`ip address [address] [mask]`后添加`[secondary]`关键字,就可以为接口指定多个的IPv4地址。对于IPv6来说,是不需要`[secondary]`关键字的,因为使用第`7`天课程中所介绍的接口配置命令`ipv6 address`,就可以为每个接口配置多个前缀。下面的配置示例,演示了如何在单一的路由器接口上配置多个IPv4地址和IPv6地址及前缀:
 
-```
+```console
 R3(config)#ipv6 unicast-routing
 R3(config)#interface FastEthernet0/0
 R3(config-if)#ip address 10.0.0.3 255.255.255.0
@@ -84,7 +84,7 @@ R3(config-if)#exit
 
 依据这些IPv4与IPv6地址的配置,就可以通过简单地对查看路由器配置,来验证这些配置,如下面的输出所示:
 
-```
+```console
 R3#show running-config interface FastEthernet0/0
 Building configuration...
 Current configuration : 395 bytes
@@ -102,7 +102,7 @@ end
 
 而要查看具体的IPv4及IPv6接口参数,只需使用思科IOS软件的`show ip interface [name]`或`show ipv6 interface [name]`命令即可。下面是`Fastethernet0/0`接口上`show ip interface`的输出:
 
-```
+```console
 R3#show ip interface FastEthernet0/0 | section address
     Internet address is 10.0.0.3/24
     Broadcast address is 255.255.255.255
@@ -114,7 +114,7 @@ R3#show ip interface FastEthernet0/0 | section address
 
 下面的输出则演示了上一示例中用到的同样的`Fastethernet0/0`接口的`show ipv6 interface`命令,所打印出的信息:
 
-```
+```console
 R3#show ipv6 interface FastEthernet0/0 | section address
     IPv6 is enabled, link-local address is FE80::213:19FF:FE86:A20
     Global unicast address(es):
@@ -135,14 +135,14 @@ R3#show ipv6 interface FastEthernet0/0 | section address
 
 思科IOS软件通过使用全局配置命令`ip host [name] [v4-address]`及`ipv6 host [name] [v6-address]`, 而提供了对相应的静态IPv4与IPv6主机地址配置的支持。下面的示例演示了在思科IOS软件中,如何配置静态IPv4及IPv6的主机名字与地址:
 
-```
+```console
 R1(config)#ip host TEST-HOST 10.0.0.3
 R1(config)#ipv6 host TEST-HOST 3FFF:1234:ABCD:1::3
 ```
 
 该静态IPv4与IPv6主机配置可使用`show hosts`命令进行验证,下面打印出了改命令的输出:
 
-```
+```console
 R1#show hosts
 ...
 [Truncated Output]
@@ -154,7 +154,7 @@ TEST-HOST   None  (perm, OK)  0  IPv6   3FFF:1234:ABCD:1::3
 
 在同一主机同时配置一个IPv4及IPv6地址时,思科IOS软件将使用IPv6地址。如有使用DNS,那么在主机同时配置了IPv6及IPv4 DNS服务器时,该双栈主机将先搜寻`AAAA`(IPv6)记录,并(在查询不到时)回滚到`A`记录(IPv4)(If DNS is used, the dual-stack host will first search `AAAA`(IPv6) records and then fall back to the `A` records(IPv4) when configured with both IPv6 and IPv4 DNS servers)。可想下面这样通过执行一次简单的到先前配置的静态主机`TEST-HOST`的`ping`操作,对此默认行为进行验证:
 
-```
+```console
 R1#ping test-host repeat 10
 Type escape sequence to abort.
 Sending 10, 100-byte ICMP Echos to 3FFF:1234:ABCD:1::3, timeout is 2 seconds:
@@ -166,7 +166,7 @@ Success rate is 100 percent (10/10), round-trip min/avg/max = 0/1/4 ms
 
 思科IOS软件中IPv4与IPv6 DNS服务器的配置,都依然是使用全局配置命令`ip name-server [address]`。不过这条命令现在已修改为允许将一个IPv4或IPv6地址,指定为DNS服务器的IP地址。下面的示例演示了如何将路由器配置为同时使用一台IPv4及IPv6 DNS服务器:
 
-```
+```console
 R1(config)#ip name-server ?
     A.B.C.D Domain server IP address (maximum of 6)
     X:X:X:X::X Domain server IP address (maximum of 6)
diff --git a/d09-ACL.md b/d09-ACL.md
index c09c4ba..f0fbca2 100644
--- a/d09-ACL.md
+++ b/d09-ACL.md
@@ -150,7 +150,7 @@
 
 在接口上已创建并应用的ACL。
 
-```
+```console
 Router>en
 Router#conf t
 Enter configuration commands, one per line. End with CNTL/Z.
@@ -162,7 +162,7 @@ Router(config-if)#ip access-group 1 in
 
 现在其从接口上卸下。
 
-```
+```console
 Router(config)#int FastEthernet0/0
 Router(config-if)#no ip access-group 1 in
 Router(config-if)#^Z
@@ -170,7 +170,7 @@ Router(config-if)#^Z
 
 查看那些ACLs。将其复制并粘贴到文本编辑器,并进行修改。
 
-```
+```console
 Router#show run ← or show ip access lists
 access-list 1 permit host 172.16.1.1
 access-list 1 permit host 172.16.2.1
@@ -178,7 +178,7 @@ access-list 1 permit host 172.16.2.1
 
 实际上还需在配置行之间加入一个叹号(如是将其粘贴到路由器上的情况下),来告诉路由器执行一次确认(you actually need to add an exclamation mark in-between each line of configuration, if you are pasting it in, to tell the router to do a carriage return)[wikipedia: 回车符](http://zh.wikipedia.org/wiki/%E5%9B%9E%E8%BD%A6%E7%AC%A6)。
 
-```
+```console
 access-list 1 permit host 172.16.1.1
 !
 access-list 1 permit host 172.16.2.2
@@ -186,7 +186,7 @@ access-list 1 permit host 172.16.2.2
 
 下面是正被粘贴到路由器配置中的那些行。要先删除早先的ACL,再粘贴进新版本。
 
-```
+```console
 Router#conf t
 Enter configuration commands, one per line. End with CNTL/Z.
 Router(config)#no access-list 1
@@ -214,7 +214,7 @@ Router(config-if)#ip access-group 1 in ← reapply to the interface
 
 在打算短时间对ACL进行测试或是撤销ACL时,许多工程师都会将其完全删除掉。这是不必要的。如你要停止ACL运行,只需简单地将其从所应用到的接口上移除即可。
 
-```
+```console
 Router(config)#int FastEthernet0/0
 Router(config-if)#no ip access-group 1 in
 Router(config-if)#^Z
@@ -318,7 +318,7 @@ CCNA考试中反掩码计算的一种简易方法,就是把一个数与子网
 ![有着多台/个主机网络的网络](images/0906.png)
 
 
-```
+```console
 Router(config)#access-list 1 permit host 172.16.1.1
 Router(config)#access-list 1 permit host 172.16.1.1
 Router(config)#access-list 1 permit host 192.168.1.1
@@ -335,13 +335,13 @@ Router(config)#access-list 1 permit 10.1.0.0 0.0.255.255
 
 一般来说,你可以看看扩展的ACLs配置语法,就像下面这样。
 
-```
+```console
 access list# permit/deny [service/protocol] [source network/IP] [destination network/IP] [port#]
 ```
 
 比如下面这样。
 
-```
+```console
 access-list 101 deny tcp 10.1.0.0 0.0.255.255 host 172.30.1.1 eq telnet
 access-list 100 permit tcp 10.1.0.0 0.0.255.255 host 172.30.1.1 eq ftp
 access-list 100 permit icmp any any
@@ -354,7 +354,7 @@ access-list 100 permit icmp any any
 
 可为上面的网络配置一条ACL,以e-mail、web和文件服务器为例,可以像下面这样(应用在服务器侧的)。
 
-```
+```console
 access-list 100 permit tcp host 172.16.1.1 host 172.20.1.1 eq smtp
 access-list 100 permit tcp 10.1.0.0 0.0.255.255 host 172.30.1.1 eq ftp
 access-list 100 permit tcp host 192.168.1.1 host 172.40.1.1 eq www
@@ -362,7 +362,7 @@ access-list 100 permit tcp host 192.168.1.1 host 172.40.1.1 eq www
 
 而如有不同要求,就也可以像下面这条ACL。
 
-```
+```console
 access-list 101 deny icmp any 172.20.0.0 0.0.255.255
 access-list 101 deny tcp 10.1.0.0 0.0.255.255 host 172.30.1.1 eq telnet
 ```
@@ -383,7 +383,7 @@ access-list 101 deny tcp 10.1.0.0 0.0.255.255 host 172.30.1.1 eq telnet
 
 在配置命名ACLs时的另一不同之处,就是必须一直使用命令`ip access-list`,这与编号ACLs可以只使用简单的`access-list`命令,是不一样的。
 
-```
+```console
 Router(config)#access-list ?
 	<1-99>				IP standard access list
 	<100-199>			IP extended access list
@@ -417,7 +417,7 @@ R1(config)#ip access-list extended ?
 
 **图9.8 -- 命名ACL**
 
-```
+```console
 Router(config)#ip access-list extended BlockWEB
 Router(config-ext-nacl)#?
 Ext Access List configuration commands:
@@ -439,7 +439,7 @@ Router(config-ext-nacl)#permit ip any any
 - `show ip access-list`: 显示设备上所创建的所有ACLs
 - `show ip access-list <acl_name>`: 显示某条特定的命名ACL
 
-```
+```console
 Router(config)#do show ip access-lists
 Standard IP access list test
 	30 permit 10.1.1.1
@@ -462,21 +462,21 @@ Standard IP access list test
 
 接口上的应用。
 
-```
+```console
 Router(config)#int FastEthernet0/0
 Router(config-if)#ip access-group 101 in
 ```
 
 线路上的应用。
 
-```
+```console
 Router(config)#line vty 0 15
 Router(config-line)#access-class 101 in
 ```
 
 接口上的应用。
 
-```
+```console
 Router(config)#int FastEthernet0/0
 Router(config-if)#ip access-group BlockWEB in
 ```
@@ -487,7 +487,7 @@ Router(config-if)#ip access-group BlockWEB in
 
 自`12.4`往后,你会发现思科IOS给每个ACL条目添加了序号。那么现在就可以创建一条访问控制清单,并在其后从它里面一处一行了。
 
-```
+```console
 Router(config)#ip access-list standard test
 Router(config-std-nacl)#permit 172.16.1.1
 Router(config-std-nacl)#permit 192.168.1.1
@@ -512,7 +512,7 @@ Standard IP access list test
 
 **要加入一个新的ACL行,只需简单地输入新的序号并接着输入该ACL语句**。下面的例子展示如何往现有的ACL中加入行`15`。
 
-```
+```console
 Router#conf t
 Enter configuration commands, one per line. End with CNTL/Z.
 Router(config)#ip access
@@ -535,7 +535,7 @@ Router(config-std-nacl)#
 
 要移除某个ACL行,只需简单地敲入`no <seq_number>`命令即可,就如同下面的例子中行`20`被删除掉了。
 
-```
+```console
 Router#conf t
 Enter configuration commands, one per line. End with CNTL/Z.
 Router(config)#ip access
@@ -556,7 +556,7 @@ Router(config-std-nacl)#
 
 要对某条ACL重新编号,使用`ip access-list resequence <acl_name> <starting_seq_number> <step_to_increment>`命令。该命令的行为可由下面的例子进行检验。
 
-```
+```console
 Router(config)#ip access-list resequence test 100 20
 Router(config)#do show ip access-lists
 Standard IP access list test
@@ -574,7 +574,7 @@ Router(config-std-nacl)#
 
 默认情况下,通过那些为某个接口的数据包所匹配上的ACL条目,会创建出一个不断增大的计数器,该计数器可使用`show ip access-list`命令进行查看,如下面的例子所示。
 
-```
+```console
 Router#show ip access-lists
 Extended IP access list test
 	10 deny tcp any any eq 80 (10 matches)
@@ -583,7 +583,7 @@ Extended IP access list test
 
 而如果需要更详细的有关那些为ACL条目所匹配的流量信息,可以给相关的ACL条目配置`log`或`log-input`参数。
 
-```
+```console
 Router(config)#ip access-list extended test
 Router(config)#no 10
 Router(config)#10 deny tcp any any eq 80 log
@@ -599,7 +599,7 @@ Extended IP access list test
 
 而如果你仍需要更多有关该事件(transaction)的细节,就要用`log-input`参数替代`log`参数了,就像下面这样。
 
-```
+```console
 Router(config)#ip access-list extended test
 Router(config)#no 10
 Router(config)#10 deny tcp any any eq 80 log-input
@@ -627,7 +627,7 @@ Extended IP access list test
 
 下面的例子定义了一条允许来自主机`10.10.10.1`的Telnet流量,该ACL随后被应用到VTY线路的进入方向。
 
-```
+```console
 Router(config)#ip access-list extended VTY_ACCESS
 Router(config-ext-nacl)#permit tcp host 10.10.10.1 any eq telnet
 Router(config-ext-nacl)#deny tcp any any
@@ -640,7 +640,7 @@ Router(config-line)#
 
 使用以下命令对配置进行验证。
 
-```
+```console
 Router#show run | sect line vty
 line vty 0 4
 access-class VTY_ACCESS in
@@ -667,7 +667,7 @@ access-class VTY_ACCESS in
 
 可使用命令`show ip access-list` 或 `show access-list`命令, 查看ACL全局统计信息,这两个命令又可以仅查看某个特定编号ACL或命名ACL的全局统计信息。
 
-```
+```console
 Router#show ip access-lists
 Extended IP access list test
 	10 deny tcp any any eq 80 (10 matches)
@@ -682,7 +682,7 @@ Extended IP access list test
 
 在想要查看单个接口上的ACL匹配情况,不管是进还是出方向时,可以使用命令`show ip access-list interface <interface_name> [in|out]`,如下面所示。
 
-```
+```console
 Router#show ip access-list interface FastEthernet0/1 in
 Extended IP access list 100 in
 	10 permit ip host 10.10.10.1 any (5 matches)
@@ -743,14 +743,14 @@ Extended IP access list 100 in
 
 1. 配置上面的网络。在两台路由器上加入一条静态路由,领导到任何网络的任何流量都从串行接口发出。这么做的原因是,尽管这不是一个路由实验,仍然需要路由的流量。把`.1`地址加到路由器`A`的串行接口,`.2`地址加到路由器`B`的串行接口。
 
-```
+```console
 RouterA(config)#ip route 0.0.0.0 0.0.0.0 s0/1/0
 RouterB(config)#ip route 0.0.0.0 0.0.0.0 s0/1/0
 ```
 
 2. 在路由器A上配置一条标准ACL,放行`192.168.1.0/10`网络。默认情况下,其它所有网络都将被阻止。
 
-```
+```console
 RouterA(config)#access-list 1 permit 192.168.1.0 0.0.0.63
 RouterA(config)#int Serial0/1/0
 RouterA(config-if)#ip access-group 1 in
@@ -761,7 +761,7 @@ RouterA#
 
 3. 从路由器`B`上测试该条ACL,默认将使用`10.0.0.1`地址。
 
-```
+```console
 RouterB#ping 10.0.0.1
 Type escape sequence to abort.
 Sending 5, 100-byte ICMP Echos to 10.0.0.1, timeout is 2 seconds:
@@ -771,7 +771,7 @@ Success rate is 0 percent (0/5)
 
 4. 以源地址`192.168.1.1`来做另一个ping测试,这将没有问题。
 
-```
+```console
 RouterB#ping
 Protocol [ip]:
 Target IP address: 10.0.0.1
@@ -808,11 +808,13 @@ Success rate is 100 percent (5/5), round-trip min/avg/max = 31/31/32 ms
 
 1. 配置上述网络。在路由器`B`上加入一条静态路由,令到前往所有网络的所有流量都从串行接口上发出。这么做是因为,尽管这不是一个路由实验,仍然需要路由流量。
 
-`RouterB(config)#ip route 0.0.0.0 0.0.0.0 s0/1/0`
+```console
+RouterB(config)#ip route 0.0.0.0 0.0.0.0 s0/1/0
+```
 
 2. 在路由器`A`上配置一条扩展ACL。仅允许往环回接口上发起Telnet流量。
 
-```
+```console
 RouterA(config)#access-list 100 permit tcp any host 172.20.1.1 eq 23
 RouterA(config)#int s0/1/0
 RouterA(config-if)#ip access-group 100 in
@@ -825,11 +827,13 @@ RouterA#
 
 上面的那条ACL编号为`100`, 这就告诉路由器,它是一条扩展ACL。所要允许的是TCP。该条ACL允许来自任何网络的,目的地址为`172.20.1.1`的Telnet端口,端口号为`23`。在执行`show run`命令时,就会看到,路由器实际上会将端口号替换为其对应的名称,就像下面演示的这样。
 
-`access-list 100 permit tcp any host 172.20.1.1 eq telnet`
+```console
+access-list 100 permit tcp any host 172.20.1.1 eq telnet
+```
 
 3. 现在,从路由器B上做一个Telnet测试。首先往路由器`A`的串行接口上Telnet,将会被阻止。接着测试环回接口。
 
-```
+```console
 RouterB#telnet 10.0.0.1
 Trying 10.0.0.1 ...
 % Connection timed out; remote host not responding
@@ -858,14 +862,14 @@ RouterA> ←Hit Control+Shift+6 together and then let go and press the X key to
 
 1. 配置上面的网络。在两台路由器上加入一条静态路由,领导到任何网络的任何流量都从串行接口发出。这么做的原因是,尽管这不是一个路由实验,仍然需要路由的流量。
 
-```
+```console
 RouterA(config)#ip route 0.0.0.0 0.0.0.0 s0/1/0
 RouterB(config)#ip route 0.0.0.0 0.0.0.0 s0/1/0
 ```
 
 2. 在路由器`B`上加入一条扩展的命名ACL。只放行主机`172.20.1.1`,阻止其它任何主机或网络。
 
-```
+```console
 RouterB(config)#ip access-list extended blockping
 RouterB(config-ext-nacl)#permit icmp host 172.20.1.1 any
 RouterB(config-ext-nacl)#exit
@@ -876,7 +880,7 @@ RouterB(config-if)#
 
 3. 现在分别从路由器`A`的串行接口和换回接口发出`ping`来测试该条ACL。
 
-```
+```console
 RouterA#ping 192.168.1.1
 Type escape sequence to abort.
 Sending 5, 100-byte ICMP Echos to 192.168.1.1, timeout is 2 seconds:
@@ -907,13 +911,18 @@ Success rate is 100 percent (5/5), round-trip min/avg/max = 31/34/47 ms
 
 要放行RIP,就要像这样指定。
 
-`access-list 101 permit udp any any eq rip`
+```console
+access-list 101 permit udp any any eq rip
+```
 
 要放行OSPF,要像这样指定。
 
-`access-list 101 permit ospf any any`
+```console
+access-list 101 permit ospf any any
+```
 
 要放行EIGRP,要像这样指定。
 
-`access-list 101 permit eigrp any any`
-
+```console
+access-list 101 permit eigrp any any
+```
diff --git a/d10-Routing-Concepts.md b/d10-Routing-Concepts.md
index 38375e7..2876b94 100644
--- a/d10-Routing-Concepts.md
+++ b/d10-Routing-Concepts.md
@@ -168,7 +168,7 @@ ICND1考试要求你对**基本路由**(basic routing)及**数据包流经
 
 默认路由来源管理距离会显示在`show ip protocols`命令的输出中。下面的输出演示了这点。
 
-```
+```console
 R1#show ip protocols
 Routing Protocol is “isis”
 	Invalid after 0 seconds, hold down 0, flushed after 0
@@ -292,7 +292,7 @@ Distance: (default is 115 )
 
 一旦路由已放入到路由表,默认情况下比起那些较不具体的路由,最为具体或有着最长匹配前缀的路由总是优先选用的。这在下面的实例中进行了演示,该实例展示了包含有`80.0.0.0/8`、`80.1.0.0/16`及`80.1.1.0/24`前缀路由条目的一个路由表。这三条路由前缀分别通过EIGRP、OSPF及RIP路由协议接收到。
 
-```
+```console
 R1#show ip route
 Codes:	C - connected, S - static, R - RIP, M - mobile, B - BGP
 		D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
@@ -313,7 +313,7 @@ O E2	 80.1.0.0/16 [110/20] via 10.1.1.2, 00:00:14, Ethernet0/0.1
 
 基于该路由表的内容,如路由器收到一个目的为`80.1.1.1`的数据包,就会使用那条RIP路由,因为这是最为具体的条目,尽管EIGRP和OSPF都有着更好的管理距离值而是更为优先的路由来源。`show ip route 80.1.1.1`命令可用于检验这点。
 
-```
+```console
 R1#show ip route 80.1.1.1
 Routing entry for 80.1.1.0/24
 	Known via “rip”, distance 120, metric 1
@@ -330,7 +330,7 @@ Routing entry for 80.1.1.0/24
 
 有类协议无法使用VLSM(也就是RIPv1和IGRP,它们都已不在CCNA大纲中了)。这是因为它们不会去识别除了默认网络掩码外的其它任何东西。
 
-```
+```console
 Router#debug ip rip
 RIP protocol debugging is on
 01:26:59: RIP: sending v1 update to 255.255.255.255 via Loopback0
@@ -339,7 +339,7 @@ RIP protocol debugging is on
 
 有类协议用到VLSM(也就是RIPv2和EIGRP)。
 
-```
+```console
 Router#debug ip rip
 RIP protocol debugging is on
 01:29:15: RIP: received v2 update from 172.16.1.2 on Serial0
@@ -549,14 +549,14 @@ CEF使用一个FIB来做出基于IP目的地址前缀的交换决定(CEF uses
 
 开启CEF只需简单的一条命令,那就是全局配置命令`ip cef [distributed]`。关键字`[distributed]`仅适用于像是`Catalyst 6500`系列、支持`dCEF`的高端交换机。下面的输出展示了如何在一台诸如`Catalyst 3750`系列交换机的低端平台上配置CEF。
 
-```
+```console
 VTP-Server-1(config)#ip cef
 VTP-Server-1(config)#exit
 ```
 
 下面的输出演示了在`Catalyst 6500`系列交换机上如何开启`dCEF`。
 
-```
+```console
 VTP-Server-1(config)#ip cef distributed
 VTP-Server-1(config)#exit
 ```
@@ -602,7 +602,7 @@ VTP-Server-1(config)#exit
 
 路由排错的第一步,就是检查路由协议是否开启及正确配置。这既可以通过检查当前运行配置(也就是`show run`命令),又可以使用结合了每种特定路由协议的`show`命令。这些路由协议的选项有下面这些。
 
-```
+```console
 Router#show ip ospf ?
 	<1-65535> 				Process ID number
 	border-routers 			Border and boundary router information
@@ -731,7 +731,7 @@ metric for determining the best forwarding path. True or false?
 - 在两台路由器上都配置一个环回接口,并从两个不同范围为其分配上地址(11.11.11.1/32及12.12.12.2/32)
 - 配置标准RIP并通告所有本地网络
 
-```
+```console
 R1:
 router rip
 version 2
diff --git a/d11-Static-Routing.md b/d11-Static-Routing.md
index 4b9a10e..580a7e8 100644
--- a/d11-Static-Routing.md
+++ b/d11-Static-Routing.md
@@ -50,7 +50,7 @@
 
 要加入上面网络的一条静态路由,就要在左边的路由器上写出下面这行配置。
 
-```
+```console
 Router(config)#ip route 192.168.1.0 255.255.255.0 172.16.1.2
 ```
 
@@ -60,11 +60,13 @@ Router(config)#ip route 192.168.1.0 255.255.255.0 172.16.1.2
 
 *图11.2 -- 不总是知道下一跳地址的情形*
 
-`Router(config)#ip route 192.168.1.0 255.255.255.0 s0/0`
+```console
+Router(config)#ip route 192.168.1.0 255.255.255.0 s0/0
+```
 
 上面的命令行告诉路由器将目的为`192.168.1.10`网络的流量,从串行接口发出。而下面的命令则是告诉路由器将所有网络的所有流量,都从串行接口发出。
 
-```
+```console
 Router(config)#ip route 0.0.0.0 0.0.0.0 s0/0
 ```
 
@@ -81,7 +83,7 @@ Router(config)#ip route 0.0.0.0 0.0.0.0 s0/0
 
 以下的配置示例,演示了如何来配置`3`条静态IPv6路由。第一条路由,到子网`3FFF:1234:ABCD:0001::/64`, 会将流量从`FastEthernet0/0`转发出去。此路由仅用于单播流量的转发。第二条路由,到子网`3FFF:1234:ABCD:0002::/64`, 会将到那个子网的数据包从`Serial0/0`,使用下一跳路由器的数据链路层地址,作为IPv6的下一跳地址转发出去。本条路由仅会用于多播流量。最后,同样配置了一条指向`Serial0/1`作为出口接口的默认路由。此默认路由将会通过`Serial0/1`, 使用下一跳路由器的本地链路地址作为IPv6下一跳地址,转发那些到未知IPv6目的地址的数据包。这些路由如下面所示。
 
-```
+```console
 R1(config)#ipv6 route 3FFF:1234:ABCD:0001::/64 Fa0/0 unicast
 R1(config)#ipv6 route 3FFF:1234:ABCD:0002::/64 Se0/0 FE80::2222 multicast
 R1(config)#ipv6 route ::/0 Serial0/1 FE80::3333
@@ -89,7 +91,7 @@ R1(config)#ipv6 route ::/0 Serial0/1 FE80::3333
 
 依此配置,命令`show ipv6 route`可用于验证在本地路由器上应用的静态路由配置,如下所示。
 
-```
+```console
 R1#show ipv6 route static
 IPv6 Routing Table - 13 entries
 Codes: 	C - Connected, L - Local, S - Static, R - RIP, B - BGP
@@ -107,7 +109,7 @@ S	3FFF:1234:ABCD:2::/64 [1/0]
 
 除了使用`show ipv6 route`命令外,命令`show ipv6 static [prefix] [detail]`也可一用来对所有或仅是某条特定静态路由的细节信息进行查看。下面输出演示了如何使用这个命令。
 
-```
+```console
 R1#show ipv6 static 3FFF:1234:ABCD:1::/64 detail
 IPv6 static routes
 Code: * - installed in RIB
@@ -158,7 +160,7 @@ Code: * - installed in RIB
 2. 通过串行链路进行`ping`操作,以确保该链路是工作的。
 3. 在`Router A`上指定一条静态路由,将到`10.1.1.0/10`网络的所有流量,从串行接口发送出去。当然要使用你自己的串行端口编号;不要只是拷贝我的配置,你的接口有不同编号!
 
-```
+```console
 RouterA(config)#ip route 10.0.0.0 255.192.0.0 Serial0/1/0
 RouterA(config)#exit
 RouterA#ping 10.1.1.1
@@ -194,7 +196,7 @@ RouterA#
 
 4. 在`Router B`上配置一条静态路由,将到`172.16.1.0/24`网络的所有流量,发到下一跳地址`192.168.1.1`。
 
-```
+```console
 RouterB(config)#ip route 172.16.1.0 255.255.255.0 192.168.1.1
 RouterB(config)#exit
 RouterB#ping 172.16.1.1
diff --git a/d12-OSPF-Basics.md b/d12-OSPF-Basics.md
index 27f224e..af8eb69 100644
--- a/d12-OSPF-Basics.md
+++ b/d12-OSPF-Basics.md
@@ -119,7 +119,7 @@ OSPF骨干区域从ABRs接收到汇总路由信息。该路由信息被散布到
 
 思科IOS软件中,非广播类型网络上开启了OSPF的路由器,默认每`30`秒发出`Hello`数据包。若`4`个`Hello`间隔,也就是`120`秒中都没有收到`Hello`数据包,那么该邻居路由器就被认为是“死了”。下面的输出演示了在一个帧中继串行接口上`show ip ospf interface`命令的输出。
 
-```
+```console
 R2#show ip ospf interface Serial0/0
 Serial0/0 is up, line protocol is up
 	Internet Address 150.1.1.2/24, Area 0
@@ -142,7 +142,7 @@ Serial0/0 is up, line protocol is up
 
 一条点对点连接, 简单来说就是一条两个端点之间的连接。P2P连接的实例,包括采用HDLC及PPP封装的物理WAN接口,以及FR和ATM的点对点子接口。**OSPF点对点组网类型中,不会选举出DR和BDR**。在P2P类型网络上,OSPF每`10`秒发出`Hello`数据包。在这些网络上,”死亡“间隔是`Hello`间隔的`4`倍,也就是`40`秒(A Point-to-Point(P2P) connection is simply a connection between two endpoints only. Examples of P2P connections include physical WAN interfaces using HDLC and PPP encapsulation, and Frame Relay(FR) and Asynchronous Transfer Mode(ATM) Point-to-Point subinterfaces. No DR or BDR is elected on OSPF Point-to-Point network types. By default, OSPF sends Hello packets out every 10 seconds on P2P network types. The "dead" interval on these network types is four times the Hello interval, which is 40 seconds)。下面的输出演示了在一条P2P链路上的`show ip ospf interface`命令的输出。
 
-```
+```console
 R2#show ip ospf interface Serial0/0
 Serial0/0 is up, line protocol is up
 	Internet Address 150.1.1.2/24, Area 0
@@ -163,7 +163,7 @@ Serial0/0 is up, line protocol is up
 
 广播类型网络,是指那些原生支持广播和多播流量的网络,最常见例子就是以太网。就如同在非广播网络中一样,OSPF也会在广播网络上选举一台DR及/或BDR。默认情况下,OSPF每隔`10`秒发出`Hello`数据包,而如在`4`倍Hello间隔中没有收到`Hello`数据包,就宣告邻居”死亡“。下面的输出演示了在一个`FastEthernet`接口上`show ip ospf interface`命令的输出。
 
-```
+```console
 R2#show ip ospf interface FastEthernet0/0
 FastEthernet0/0 is up, line protocol is up
 	Internet Address 192.168.1.2/24, Area 0
@@ -192,7 +192,7 @@ FastEthernet0/0 is up, line protocol is up
 
 下面的输出演示了在一个经手动配置为点对多点网络的帧中继串行接口上的`show ip ospf interface`命令的输出。
 
-```
+```console
 R2#show ip ospf interface Serial0/0
 Serial0/0 is up, line protocol is up
 	Internet Address 150.1.1.2/24, Area 0
@@ -215,7 +215,7 @@ OSPF要求链路上两台路由器组网类型一致(一致的意思是两台
 
 思科IOS软件允许通过使用接口配置命令`ip ospf hello-interval <1-65535>`及`ip ospf dead-interval [<1-65535>|minimal]`,对默认OSPF `Hello`数据包及死亡计时器进行修改。`ip ospf hell0-interval <1-65535>`命令用于指定`Hello`间隔的秒数。在执行该命令后,软件会自动将死亡间隔配置为所配置的`Hello`包间隔的`4`倍。比如,假定某台路由器做了如下配置。
 
-```
+```console
 R2(config)#interface Serial0/0
 R2(config-if)#ip ospf hello-interval 1
 R2(config-if)#exit
@@ -223,7 +223,7 @@ R2(config-if)#exit
 
 通过在上面的`R2`上将`Hello`数据包间隔设置为`1`, 思科IOS软件就会自动的将默认死亡计时器调整为`Hello`间隔的`4`倍,就是`4`秒。下面的输出对此进行了演示。
 
-```
+```console
 R2#show ip ospf interface Serial0/0
 Serial0/0 is up, line protocol is up
 	Internet Address 10.0.2.4/24, Area 2
@@ -257,7 +257,7 @@ OSPF进程号是一个`1`与`65535`之间的整数。每个OSPF进程都维护
 
 作为一个例子,看看下面的所有接口都关闭的路由器。
 
-```
+```console
 R3#show ip interface brief
 Interface		IP-Address	OK?	Method	Status					Protocol
 FastEthernet0/0	unassigned	YES	manual	administratively down	down
@@ -267,14 +267,14 @@ Serial0/1		unassigned	YES	unset	administratively down	down
 
 接着,使用全局配置命令`router ospf [process id]`在该路由器上开启了OSPF, 如下面输出所示。
 
-```
+```console
 R3(config)#router ospf 1
 R3(config-router)#exit
 ```
 
 基于此配置,思科IOS软件分配给该进程一个默认`0.0.0.0`的路由器ID,如下面`show ip protocols`命令的输出所示。
 
-```
+```console
 R3#show ip protocols
 Routing Protocol is “ospf 1”
 	Outgoing update filter list for all interfaces is not set
@@ -332,7 +332,7 @@ R3#show ip ospf 1
 
 就像前面指出的那样,在执行了`network [network] [wildcard] area [area id]`命令后,路由器匹配最具体的网络条目(最小的网络),来决定该接口应分配到的区域。对于在路由器上的网络配置语句及已配置的接口,命令`show ip ospf interface brief`会显示出这些接口都分配给了以下OSPF区域。
 
-```
+```console
 R1#show ip ospf interface brief
 Interface	PID	Area	IP Address/Mask	Cost	State	Nbrs F/C
 Lo4			1	0		10.2.0.1/32		1		LOOP	0/0
@@ -366,7 +366,7 @@ Lo3 		1 	3 		10.1.1.1/32 	1 		LOOP	0/0
 
 在下面的路由器上,给`Loopback0`配置了IP地址`1.1.1.1/32`, 给`F0/0`配置了`2.2.2.2/24`。接着在路由器上给所有接口配置了OSPF。
 
-```
+```console
 Router(config-if)#router ospf 1
 Router(config-router)#net 0.0.0.0 255.255.255.255 area 0
 Router(config-router)#end
@@ -390,7 +390,7 @@ Routing Protocol is “ospf 1”
 
 但又想要将路由器ID硬编码(hard code)为`10.10.10.1`。那么可通过再配置一个使用该IP地址的环回接口,或简单地将这个IP地址加在OSPF路由器ID处。**为令到改变生效,必须重启路由器或在路由器上清除该IP OSPF进程**(清除现有数据库)。
 
-```
+```console
 Router#conf t
 Enter configuration commands, one per line.
 End with CNTL/Z.
@@ -427,7 +427,7 @@ Distance: (default is 110)
 
 被动接口配置在OSPF和EIGRP中的工作方式是一样的,也就是一旦某接口被标记为被动接口,经由该接口形成的所有邻居关系都会被拆除,同时 **再也不会通过该接口发送或接收`Hello`数据包了**。不过,根据路由器上所配置的网络配置语句,该接口仍然会继续受通告。
 
-```
+```console
 Router(config)#router ospf 10
 Router(config-router)#passive-interface f0/0
 Router#show ip ospf int f0/0
@@ -480,7 +480,7 @@ FastEthernet0/0 is up, line protocol is up
 
 **`R1`:**
 
-```
+```console
 router ospf 1
 router-id 1.1.1.1
 network 10.10.10.0 0.0.0.255 area 0
@@ -489,7 +489,7 @@ network 11.11.11.1 0.0.0.0 area 0
 
 **`R2`:**
 
-```
+```console
 router ospf 1
 router-id 2.2.2.2
 network 10.10.10.0 0.0.0.255 area 0
diff --git a/d13-OSPFv3.md b/d13-OSPFv3.md
index 7c57b39..218557b 100644
--- a/d13-OSPFv3.md
+++ b/d13-OSPFv3.md
@@ -58,7 +58,7 @@
 
 > **注意:** 当在NBMA传输技术上配置OSPFv3时,应该使用本地链路地址来创建出静态FR地图声明语句(static Frame Relay map statements)。这是因为正是使用本地链路地址,而不是全球单播地址,建立邻接关系。比如,为给一个FR部署创建一幅静态FR地图语句并指定一台OSPF邻居路由器,就要在该路由器上应用下面的配置(在ICND2部分将对FR进行讲解)。
 
-```
+```console
 R1(config)#ipv6 unicast-routing
 R1(config)#ipv6 router ospf 1
 R1(config-rtr)#router-id 1.1.1.1
@@ -89,7 +89,7 @@ R1(config-if)#exit
 
 依之间所讲到的顺序配置步骤,照下面这样,在路由器`R1`上就会配置上OSPFv3。
 
-```
+```console
 R1(config)#ipv6 unicast-routing
 R1(config)#ipv6 router ospf 1
 R1(config-rtr)#router-id 1.1.1.1
@@ -103,7 +103,7 @@ R1(config-if)#exit
 
 而按照同样顺序的步骤,像下面这样在路由器`R3`上配置好OSPFv3路由。
 
-```
+```console
 R3(config)#ipv6 unicast-routing
 R3(config)#ipv6 router ospf 3
 R3(config-rtr)#router-id 3.3.3.3
@@ -122,7 +122,7 @@ R3(config-if)#exit
 
 依据上述两台路由器上OSPFv3的配置,就可以使用命令`show ipv6 ospf neighbor`, 来检查OSPFv3的邻接状态,在`R1`上如下所示。
 
-```
+```console
 R1#show ipv6 ospf neighbor
 Neighbor	ID Pri	State 		Dead Time	Interface ID 	Interface
 3.3.3.3		     1	FULL/BDR 	00:00:36 	4 				FastEthernet0/0
@@ -130,7 +130,7 @@ Neighbor	ID Pri	State 		Dead Time	Interface ID 	Interface
 
 通过将`[detail]`关键字追加到本命令的后面,还可以查看详细的邻居信息。
 
-```
+```console
 R1#show ipv6 ospf neighbor detail
 Neighbor 3.3.3.3
 	In the area 0 via interface FastEthernet0/0
@@ -184,7 +184,7 @@ Neighbor 3.3.3.3
 
 **R1:**
 
-```
+```console
 ipv6 router ospf 1
 router-id 1.1.1.1
 int fa0/0(或特定接口编号)
@@ -195,7 +195,7 @@ ipv6 ospf 1 area 0
 
 **R2:**
 
-```
+```console
 ipv6 router ospf 1
 router-id 2.2.2.2
 int fa0/0(或特定接口编号)
diff --git a/d14-DHCP-and-DNS.md b/d14-DHCP-and-DNS.md
index 93a2ae7..d337b59 100644
--- a/d14-DHCP-and-DNS.md
+++ b/d14-DHCP-and-DNS.md
@@ -183,7 +183,7 @@ DHCP提供了`256`选项值,其中仅`254`个是可用的,因为`0`是垫底
 
 第一步就是在路由器上开启DHCP服务。这是通过使用`service dhcp`命令完成的,如下面所示(as exemplified below)。
 
-```
+```console
 Router#configure terminal
 Enter configuration commands, one per line. End with CNTL/Z.
 Router(config)#service dhcp
@@ -191,7 +191,7 @@ Router(config)#service dhcp
 
 下一步就是创建一个DHCP池,该DHCP池定义出将分配给客户端的IP地址池。在本例中,名为`SUBNET_A`的池将提供来自范围`192.168.1.0/24`的IP地址。
 
-```
+```console
 Router(config)#ip dhcp pool SUBNET_A
 Router(dhcp-config)#network 192.168.1.0 255.255.255.0
 Router(dhcp-config)#default-router 192.168.1.1
@@ -209,14 +209,14 @@ Router(dhcp-config)#lease 30
 
 在需要时,也可以配置一些从`192.168.1.0/24`范围中排除的地址。我们就说要排除路由器接口IP地址(`192.168.1.1`)及`192.168.1.250`到`192.168.1.255`地址范围,从该范围就可手动为网络中的服务器分配地址。这是通过下面的配置完成的。
 
-```
+```console
 Router(config)#ip dhcp excluded-address 192.168.1.1
 Router(config)#ip dhcp excluded-address 192.168.1.250 192.168.1.255
 ```
 
 可使用下面的命令来查看当前由该路由器DHCP服务器所服务的客户端。
 
-```
+```console
 Router#show ip dhcp binding
 Bindings from all pools not associated with VRF:
 IP address      Client-ID/  Lease expiration    Type    Hardware address/
@@ -233,20 +233,20 @@ IP address      Client-ID/  Lease expiration    Type    Hardware address/
 
 将一个路由器接口配置为DHCP客户端的命令如下。
 
-```
+```console
 Router(config)#int FastEthernet0/0
 Router(config-if)#ip address dhcp
 ```
 
 一旦某台DHCP服务器分配了一个IP地址,在路由器控制台上就可以看到下面的通知消息(该消息包含了地址和掩码)。
 
-```
+```console
 *Mar 1 00:29:15.779: %DHCP-6-ADDRESS_ASSIGN: Interface FastEthernet0/0 assigned DHCP address 10.10.10.2, mask 255.255.255.0, hostname Router
 ```
 
 使用命令`show ip interface brief`,就可以观察到该DHCP分配方式。
 
-```
+```console
 Router#show ip interface brief
 Interface       IP-Address  OK? Method  Status                  Protocol
 FastEthernet0/0 10.10.10.2  YES DHCP    up                      up
@@ -315,7 +315,7 @@ DHCP分配过程的最后数据包就是由服务器发出的DCHP确认数据包
 
 同样可以使用下面的`debug`命令作为排错过程中的部分。
 
-```
+```console
 debug ip dhcp server events
 debug ip dhcp server packet
 ```
@@ -336,7 +336,7 @@ DNS将主机名映射到IP地址(而不是反过来)。这就允许你在web
 
 也可以将某个主机名设置到路由器上的一个IP地址表中来节省时间,或是令到更易于记住要`ping`的或是连接到的哪台设备,如下面的输出所示。
 
-```
+```console
 Router(config)#ip host R2 192.168.1.2
 Router(config)#ip host R3 192.168.1.3
 Router(config)#exit
@@ -404,7 +404,7 @@ Router#pinging 192.168.1.2
 
 3. 配置DHCP地址池。接着为地址配置一个`3`天`3`小时`5`分的租期。最后将`1`到`10`的地址排除在分配给主机的地址之外。假设这些地址已为其它服务器或接口使用。
 
-```
+```console
 Router#conf t
 Router(config)#ip dhcp pool 60days
 Router(dhcp-config)#network 172.16.0.0 255.255.0.0
@@ -416,7 +416,7 @@ Router(config)#
 
 4. 执行一个`ipconfig /all`命令,查看是否有IP地址分配到PC。如旧地址仍在使用,就需要执行一下`ipconfig /renew`命令。
 
-```
+```console
 PC>ipconfig /all
 Physical Address................: 0001.C7DD.CB19
 IP Address......................: 172.16.0.1
@@ -427,7 +427,7 @@ DNS Servers.....................: 0.0.0.0
 
 5. 如想要的话,可回到DHCP地址池配置模式(DHCP Pool Configuration mode),加入一个默认网关及DNS服务器地址,它们也将在主机PC上得到设置。
 
-```
+```console
 Router(config)#ip dhcp pool 60days
 Router(dhcp-config)#default-router 172.16.1.2
 Router(dhcp-config)#dns-server 172.16.1.3
diff --git a/d15-Layer_1-and-Layer_2-Troubleshooting.md b/d15-Layer_1-and-Layer_2-Troubleshooting.md
index 9b6d7ee..c369bab 100644
--- a/d15-Layer_1-and-Layer_2-Troubleshooting.md
+++ b/d15-Layer_1-and-Layer_2-Troubleshooting.md
@@ -243,7 +243,7 @@ PoE LED只有在Catalyst 2960交换机型号上才能找到。
 
 下面是在一个GigabitEthernet交换端口上的`show interfaces`命令的输出。
 
-```
+```console
 Catalyst-3750-1#show interfaces GigabitEthernet3/0/1
 GigabitEthernet0/1 is up, line protocol is down (notconnect)
 Hardware is GigabitEthernet, address is 000f.2303.2db1 (bia 000f.2303.2db1)
@@ -296,7 +296,7 @@ Output queue: 0/40 (size/max)
 
 除了`show interfaces`命令,命令`show interfaces [name] counters errors`也可以用来查看接口错误及促进一层的排错。下面就是命令`show interface [name] counters errors`打印出的输出。
 
-```
+```console
 Catalyst-3750-1#show interfaces GigabitEthernet3/0/1 counters errors
 Port        Align-Err   FCS-Err   Xmit-Err    Rcv-Err UnderSize
 Gi3/0/1         0         0          0          0         0
@@ -320,7 +320,7 @@ Gi3/0/1       0
 
 不同的`collisions`字段表示接口上的冲突。接口上的冲突通常发生在半双工以太网上,而这在现代网络中几乎是不存在的。因此,这些计数器对于全双工链路不应增长。如果这些计数器下出现了非零数值,那么通常表明存在全双工不匹配故障。当探测到全双工不匹配时,交换机会在控制台或日志中打印出类似于下面的消息。
 
-```
+```console
 %CDP-4-DUPLEX_MISMATCH: duplex mismatch discovered on FastEthernet0/1 (not full duplex), with R2 FastEthernet0/0 (full duplex)
 ```
 
@@ -336,7 +336,7 @@ Gi3/0/1       0
 
 类似与`show interfaces`及`show interfaces <name> counters errors`命令所提供的信息,命令`show controllers ethernet-controller <interface>`也可以用来现实流量计数及错误计数信息。`show controllers ethernet-controllers <interface>`命令的输出如下所示。
 
-```
+```console
 Catalyst-3750-1#show controllers ethernet-controller GigabitEthernet3/0/1
 Transmit GigabitEthernet3/0/1   Receive
 4069327795 Bytes                3301740741 Bytes
@@ -460,7 +460,7 @@ Transmit GigabitEthernet3/0/1   Receive
 
 该命令的输出还包括了封装错误数,而封装错误数可用于检查802.1Q和ISL,以及中继封装不匹配数目,如下面的输出所示。
 
-```
+```console
 Cat-3550-1#show interfaces FastEthernet0/12 counters trunk
 Port    TrunkFramesTx   TrunkFramesRx   WrongEncap
 Fa0/12           1696           32257            0
@@ -470,7 +470,7 @@ Fa0/12           1696           32257            0
 
 用于对可能的二层错误配置进行排错的另一个命令,就是`show interfaces [name] trunk`。该命令的输出包含了中继封装协议及模式、802.1Q的原生VLAN、允许通过中继链路VLANs、VTP域中活动的VLANs,以及被修剪掉的VLANs(the output of `show interfaces [name] trunk` includes the trunking encapsulation protocol and mode, the native VLAN for 802.1Q, the VLANs that are allowed to traverse the trunk, the VLANs that are active in the VTP domain, and the VLANs that are pruned)。**一个VLAN传播的常见问题,就是上游交换机已通过使用接口配置命令`switchport trunk allowed vlan`,被配置为对某些VLANs进行过滤。**命令`show interfaces [name] trunk`的输出如下所示。
 
-```
+```console
 Cat-3550-1#show interfaces trunk
 Port    Mode        Encapsulation   Status      Native vlan
 Fa0/12  desirable   n-802.1q        trunking    1
@@ -496,7 +496,7 @@ Fa0/15  none
 
 **另一个常见中继错误配置故障就是原生VLAN不匹配。**在配置802.1Q中继链路时,中继链路两端的原生VLAN必须匹配;否则该链路便不会工作。如存在原生VLAN不匹配,STP就会将该端口置为端口VLAN ID不一致状态(a port VLAN ID(PVID) inconsistent state),且不会在该链路上进行转发。在此情况下,将有类似于下面的消息在控制台或日志中打印出来。
 
-```
+```console
 *Mar 1 03:16:43.935: %SPANTREE-2-RECV_PVID_ERR: Received BPDU with inconsistent peer vlan id 1 on FastEthernet0/11 VLAN2.
 *Mar 1 03:16:43.935: %SPANTREE-2-BLOCK_PVID_PEER: Blocking FastEthernet0/11 on VLAN0001. Inconsistent peer vlan.
 *Mar 1 03:16:43.935: %SPANTREE-2-BLOCK_PVID_LOCAL: Blocking FastEthernet0/11 on VLAN0002. Inconsistent local vlan.
@@ -507,7 +507,7 @@ Fa0/15  none
 
 尽管STP排错将在本书后面进行讲解,该不一致状态仍可通过使用`show spanning-tree`命令进行查证,如下面所示。
 
-```
+```console
 Cat-3550-1#show spanning-tree interface FastEthernet0/11
 Vlan                Role    Sts     Cost        Prio.Nbr    Type
 ------------------- ----    ---     --------    --------    ----------------
@@ -517,7 +517,7 @@ VLAN0002            Desg    BKN*    19          128.11      P2p *PVID_Inc
 
 如已经查明该中继链路确实是正确配置,及两台交换机间是可运作的,接下来就应对VTP配置参数进行检查了。这些参数包括VTP域名、正确的VTP模式及VTP口令,如对该VTP域配置了某个参数,就要使用相应的`show vtp status`及`show vtp password`命令。`show vtp status`命令的输出如下所示。
 
-```
+```console
 Cat-3550-1#show vtp status
 VTP Version                     : running VTP2
 Configuration Revision          : 0
@@ -541,7 +541,7 @@ VTP客户端/服务器(clinet/server)或服务器/服务器(server/server)
 
 最后,`show vtp status`命令的输出也包含了用于认证目的的MD5散列值。该散列值是从VTP域名称和密码生成的,域中所有交换机上的该散列值应是一致的。而如在这些交换机上的域名称和密码不同,则计算出的MD5也会不同。而如域名称或密码不同,那么`show vtp status`命令就会示出一条MD5摘要校验和不匹配(an MD5 digest checksum mismatch)消息,如下面的输出所示。
 
-```
+```console
 Cat-3550-1#show vtp status
 VTP Version                     : running VTP2
 Configuration Revision          : 0
@@ -591,7 +591,7 @@ MD5 Digest                      : 0x26 0x99 0xB7 0x93 0xBE 0xDA 0x76 0x9C
 
 除了VTP修剪外,交换机中继链路上对VLANs的不正确过滤,也可能导致端到端VLAN连通性的丢失。**默认允许所有VLANs通过所有中继链路;**但是思科IOS软件允许管理员通过使用接口配置命令`switchport trunk allowed vlan`,在指定中继链路上选择性地移除(或加入)VLANs。可以使用命令`show interfaces [name] trunk`及`show interfaces [name] switchport`,来查看中继链路上被修剪和限制的VLANs。作为检查某个中继端口上放行VLANs最容易的方式,命令`show interfaces [name] trunk`的输出如下所示。
 
-```
+```console
 Cat-3550-1#show interfaces trunk
 Port    Mode    Encapsulation   Status      Native vlan
 Fa0/1   on      802.1q          trunking    1
@@ -624,7 +624,7 @@ Fa0/2   1,40,50,60,70,80,90,254
 
 在某个已被静态配置为802.1Q中继链路端口上的`show interfaces [name] switchport`命令的输出如下所示。
 
-```
+```console
 Cat-3550-2#show interfaces FastEthernet0/7 switchport
 Name: Fa0/7
 Switchport: Enabled
@@ -664,7 +664,7 @@ Appliance trust: none
 
 除了在前面几个小节中介绍的那些命令外,还有一些用于对VLAN配置进行检查和排错的有用思科IOS软件的命令。最常用到的VLAN检查和排错命令之一就是`show vlan`命令了。该命令显示管理域内所有VLANs的参数,如下面的输出所示。
 
-```
+```console
 Cat-3550-1#show vlan
 VLAN Name                             Status    Ports
 ---- -------------------------------- --------- -------------------------------
@@ -712,7 +712,7 @@ Primary Secondary Type              Ports
 
 该命令打印出所有可用的VLANs,以及所分配到每个单独VLANs的那些端口。该命令的输出所包含的端口仅是接入端口,且不管这些端口是否开启或宕掉,都会显示出来。该命令输出不包括中继链路,因为这些输出属于所有所有VLANs。`show vlan`命令还提供了RSPAN(Remote Switch Port ANalyser, 远程交换机端口分析器) VLANs, 以及交换机上私有VLAN(Private VLAN, PVLAN, 这是一个CCNP考点)的信息。`show vlan`命令还可以带上一些额外关键字来使用,以提供更具体的信息。下面的输出显示了可与该命令一起使用的所支持的附加关键字。
 
-```
+```console
 Cat-3550-1#show vlan ?
 brief           VTP all VLAN status in brief
 id              VTP VLAN status by VLAN id
@@ -726,7 +726,7 @@ summary         VLAN summary information
 
 `brief`字段打印所有活动VLANs的简要信息。此命令的输出与上面的相同,唯一的区别就是省掉了后两个部分。`id`字段提供了和`show vlan`一样的信息,但如下面的输出所示,只包含特定VLAN的信息。
 
-```
+```console
 Switch-1#show vlan id 150
 VLAN Name                             Status    Ports
 ---- -------------------------------- --------- --------------------
@@ -759,7 +759,7 @@ VLAN与属于该VLAN的接入端口一样,再度包含在了输出中。中继
 
 另一个有用的VLAN排错命令,就是`show vtp counters`。该命令打印有关VTP数据包统计的信息。以下是在某台配置为VTP服务器的交换机上,`show vtp counters`的输出。
 
-```
+```console
 Cat-3550-1#show vtp counters
 VTP statistics:
 Summary advertisements received     : 15
diff --git a/d31-Spanning-Tree-Protocol.md b/d31-Spanning-Tree-Protocol.md
index 75a419f..cfd40b6 100644
--- a/d31-Spanning-Tree-Protocol.md
+++ b/d31-Spanning-Tree-Protocol.md
@@ -255,7 +255,7 @@ BPDUs都是每两秒发出的,此特性允许实现快速的网络循环探测
 
 **桥优先级是该交换机相对于其它交换机的优先级。**桥优先级取值范围是0到65535。思科Catalyst交换机的默认值为32768。
 
-```
+```console
 Switch2#show spanning-tree vlan 2
 
 VLAN0002
@@ -313,14 +313,14 @@ Fa0/2       128.2       19      FWD 19 32770    0008.21a9.4f80  128.2
 
 - 可以手动设置优先级
 
-```
+```console
 Switch(config)#spanning-tree vlan 2 priority ?
 <0-61440>   bridge priority in increments of 4096
 ```
 
 - 或者使用宏命令`primary`或`secondary`将其设置为根桥
 
-```
+```console
 Switch(config)#spanning-tree vlan 2 root ?
     primary     Configure this switch as primary root for this spanning tree
     secondary   Configure switch as secondary root
@@ -330,7 +330,7 @@ Switch(config)#spanning-tree vlan 2 root ?
 
 *图31.6 -- 强制某台交换机成为根桥*
 
-```
+```console
 SwitchC#show spanning-tree vlan 5
 VLAN0005
 Spanning tree enabled protocol ieee
@@ -354,7 +354,7 @@ Bridge ID   Priority  4096 (priority 8192 sys-id-ext 5)
 
 注意到VLAN编号通常会被加到优先级数字上,如下面的输出展示的那样。
 
-```
+```console
 SwitchA#show spanning-tree vlan 5
 Bridge ID   Priority 32773 (priority 32768 sys-id-ext 5)
 Address 0013.c3e8.2500
@@ -394,7 +394,7 @@ Fa0/18     Desg  FWD    19     128.18    P2
 
 在思科IOS Catalyst交换机中,可通过执行`show spanning-tree interface [name]`查看默认端口开销值,如下面的输出中演示的那样,该输出展示了一个FastEthernet接口的默认短整数端口开销。
 
-```
+```console
 
 VTP-Server#show spanning-tree interface FastEthernet0/2
 Vlan        Role    Sts    Cost    Prio.Nbr    Type
@@ -404,7 +404,7 @@ VLAN0050    Desg    FWD    19      128.2       P2p
 
 下面的输出显示了同样的长整数端口开销分配(the following output shows the same for long port cost assignment)。
 
-```
+```console
 
 VTP-Server#show spanning-tree interface FastEthernet0/2
 Vlan        Role    Sts    Cost    Prio.Nbr    Type
@@ -718,11 +718,13 @@ STP故障通常有以下三类(STP issues usually fall within the following th
 
 1. 设置各台交换机的主机名并将其用交叉线连接起来。此时可以检查它们之间的接口是否被设置到“trunk”中继。
 
-`Switch#show interface trunk`
+```console
+Switch#show interface trunk
+```
 
 2. 在将一侧设置为中继链路之前,可能看不到中继链路变成活动的。
 
-```
+```console
 SwitchB#conf t
 Enter configuration commands, one per line. End with CNTL/Z.
 SwitchB(config)#int FastEthernet0/1
@@ -739,7 +741,7 @@ Fa0/1   1
 
 3. 将看到另一交换机是留作自动模式的。
 
-```
+```console
 SwitchA#show int trunk
 Port    Mode        Encapsulation   Status      Native vlan
 Fa0/1   auto        n-802.1q        trunking    1
@@ -751,7 +753,7 @@ Fa0/1   1
 
 4. 在每台交换机上创建出两个VLANs。
 
-```
+```console
 SwitchA#conf t
 Enter configuration commands, one per line.  End with CNTL/Z.
 SwitchA(config)#vlan 2
@@ -780,7 +782,7 @@ VLAN Name                   Status      Ports
 
 5. 确定哪台交换机是VLANs 2和3的根桥。
 
-```
+```console
 SwitchB#show spanning-tree vlan 2
 VLAN0002
     Spanning tree enabled protocol ieee
@@ -800,7 +802,7 @@ Fa0/1               Desg  FWD  19        128.1    P2p
 
 可以看到,Switch B是根。在交换机A上完成同样的命令,并对VLAN 3进行检查。优先级是32768加上VLAN编号,这里就是2.最低MAC地址将确定出根桥。
 
-```
+```console
 SwitchB#show spanning-tree vlan 3
 VLAN0003
     Spanning tree enabled protocol ieee
@@ -821,7 +823,7 @@ Fa0/1               Desg  FWD  19         128.1    P2p
 
 6. 将另一个交换机设置为VLANs 2和3的根桥。对VLAN 2使用命令`spanning-tree vlan 2 priority 4096`,以及对VLAN 3的`spanning-tree vlan 3 root primary`命令。
 
-```
+```console
 SwitchA(config)#spanning-tree vlan 2 priority 4096
 SwitchA(config)#spanning-tree vlan 3 root primary
 SwitchA#show spanning-tree vlan 2
diff --git a/d32-Rapid-Spanning-Tree-Protocol.md b/d32-Rapid-Spanning-Tree-Protocol.md
index 2a4b1fc..288260c 100644
--- a/d32-Rapid-Spanning-Tree-Protocol.md
+++ b/d32-Rapid-Spanning-Tree-Protocol.md
@@ -10,7 +10,7 @@
 - 复习昨天的课文
 - 完成今天的实验
 - 阅读ICND2记诵指南
-- 在网站[http://subnetting.org/](subnetting.org)
+- 在网站 [http://subnetting.org/](subnetting.org)
 
 IEEE 802.1D标准是在连通性从失去到恢复需要一分钟左右,就被认为性能已经可观的时期设计出来的。在IEEE 802.1D STP下,恢复大约需要50秒,这其中包括20秒的最大老化计时器(the Max Age timer)超时,以及额外的给端口从阻塞状态过渡到转发状态的30秒。
 
@@ -86,7 +86,7 @@ RSTP包含了以下的端口角色。
 
 RSTP的配置只需一个命令!
 
-```
+```console
 Switch(config)#spanning-tree mode rapid-pvst
 Switch#show spanning-tree summary
 Switch is in rapid-pvst mode
@@ -133,7 +133,7 @@ Root bridge for: VLAN0050, VLAN0060, VLAN0070
 
 1. 检查交换机上的生成树模式。
 
-```
+```console
 SwitchA#show spanning-tree summary
 Switch is in pvst mode
 Root bridge for: VLAN0002 VLAN0003
@@ -141,7 +141,7 @@ Root bridge for: VLAN0002 VLAN0003
 
 2. 将模式改为RSTP并再度检查。
 
-```
+```console
 SwitchA(config)#spanning-tree mode rapid-pvst
 SwitchA#show spanning-tree summary
 Switch is in rapid-pvst mode
diff --git a/d33-EtherChannels-and-Link-Aggregation-Protocols.md b/d33-EtherChannels-and-Link-Aggregation-Protocols.md
index acacf3c..5f8fa7f 100644
--- a/d33-EtherChannels-and-Link-Aggregation-Protocols.md
+++ b/d33-EtherChannels-and-Link-Aggregation-Protocols.md
@@ -102,7 +102,7 @@ PAgP支持不同端口模式,而这些端口模式则决定在两台支持PAgP
 
 在以太网通道捆绑(an EtherChannel bundle)被配置成一个中继端口时,该中继就在编号最低的VLAN上发送和接收PAgP数据帧。**生成树协议总是选择以太网通道捆绑中的第一个可运作端口**(when an EtherChannel bundle is configured as a trunk port, the trunk sends and receives PAgP frames on the lowest numbered VLAN. Spanning Tree Protocol(STP) always chooses the first operational port in an EtherChannel bundle)。命令`show pagp [channel number] neighbor`同样可用于验证将会用于STP数据包发送和接收的端口,确定出以太网通道捆绑中STP将使用的端口,如下面的输出所示。
 
-```
+```console
 Switch-1#show pagp neighbor
 Flags:  S - Device is sending Slow hello.   C - Device is in Consistent state.
         A - Device is in Auto mode.         P - Device learns on physical port.
@@ -116,7 +116,7 @@ Fa0/3   Switch-2    0014.a9e5.d640  Fa0/3   15s     SC      10001
 
 根据上面的输出,STP将在端口`FastEthernet0/1`上发出其协议数据包,因为该端口是第一个可运作接口。而如那个端口失效,STP将在`FastEthernet0/2`上发出其协议数据包。而由PAgP所使用的默认端口则可由`show EtherChannel summary`命令进行查看,如下面的输出所示。
 
-```
+```console
 Switch-1#show EtherChannel summary
 Flags:  D - down
         I - stand-alone
@@ -259,7 +259,7 @@ LACP主动模式将一个交换机端口置为经由发送LACP数据包,对远
 
 下面的输出演示了如何在Switch 1及Switch 2上,基于图33.5中所描述的网络拓扑,配置无条件通道操作。该以太网通道将配置成一个使用默认参数的二层802.1Q中继。
 
-```
+```console
 Switch-1#conf t
 Enter configuration commands, one per line. End with CNTL/Z.
 Switch-1(config)#interface range fa0/1 – 3
@@ -275,7 +275,7 @@ Switch-1(config)#exit
 
 >**注意:**注意到该交换机自动默认创建出`interface port-channel 1`(根据下面的输出)。**没有要配置该接口的显式用户配置**(notice that the switch automatically creates `interface port-channel 1` by default(refer to the output below). No explicit user configurtion is required to configure this interface)。
 
-```
+```console
 Switch-2#conf t
 Enter configuration commands, one per line. End with CNTL/Z.
 Switch-2(config)#interface range fa0/1 - 3
@@ -290,7 +290,7 @@ Switch-2(config)#exit
 
 命令`show EtherChannel [options]`此时即可用于验证该以太网通道的配置。下面的输出中打印了可用选项(依据不同平台会有不同)。
 
-```
+```console
 Switch-2#show EtherChannel ?
     <1-6>           Channel group number
     detail          Detail information
@@ -305,7 +305,7 @@ Switch-2#show EtherChannel ?
 
 下面的输出对命令`show EtherChannel summary`进行了演示。
 
-```
+```console
 Switch-2#show EtherChannel summary
 Flags:  D - down
         I - stand-alone
@@ -327,7 +327,7 @@ Group  Port-channel  Protocol    Ports
 
 在上面的输出中,可以看到在通道组1(Channel Group 1)中有三条链路。接口FastEthernet0/1是默认端口;**该端口将用于发送比如的STP数据包**。如果该端口失效,FastEthernet0/2就将被指定为默认端口,如此延续(this port will be used to send STP pakcets, for example. If this port fails, FastEthernet0/2 will be designated as the default port, and so forth)。同时通过看看`Po1`后面的`SU`标志,还可以看到该端口组是一个活动的二层以太网通道。下面的输出现实了由`show EtherChannel detail`命令所打印出的信息。
 
-```
+```console
 Switch-2#show EtherChannel detail
                 Channel-group listing:
                 ----------------------
@@ -385,7 +385,7 @@ Time since last port bundled:   0d:00h:21m:20s     Fa0/3
 
 最后,还可通过执行命令`show interfaces port-channel [number] switchport`, 对该逻辑的端口通道接口(the logical port-channel interface)的二层运作状态进行查看。这在下面的输出中有所演示。
 
-```
+```console
 Switch-2#show interfaces port-channel 1 switchport
 Name: Po1
 Switchport: Enabled
@@ -425,7 +425,7 @@ Appliance trust: none
 
 下面的输出演示了如何在基于上面的图33.5中所给出的网络拓扑的Switch 1和Switch 2上,配置PAgP的通道(PAgP channelling)。该以太网通道将被配置为使用默认参数的二层802.1Q中继。
 
-```
+```console
 Switch-1#conf t
 Enter configuration commands, one per line. End with CNTL/Z.
 Switch-1(config)#interface range fa0/1 - 3
@@ -441,7 +441,7 @@ Switch-1(config-if-range)#exit
 
 在此示例中,在一个连接到一台安静相邻设备的物理端口上运行PAgP阻止了那个交换机端口成为运作端口;但是,该安静设置允许PAgP运行,从而将该接口加入到一个通道组,同时利用该接口进行传输。在本例中,因为Switch 2将被配置为`auto`模式(被动模式), 该端口采用默认的安静模式运作,就是首先的了(In this case, running PAgP on a physical port connected to a silent partner prevents that switch port from ever becoming operational; however, the silent setting allows PAgP to operate, to attatch the interface to a channel group, and to use the interface for transmission. In this example, because Switch 2 will be configured for auto mode(passive mode), it is preferred that the port uses the default silent mode operation)。这在下面的PAgP以太网通道配置中进行了演示。
 
-```
+```console
 Switch-1#conf t
 Enter configuration commands, one per line. End with CNTL/Z.
 Switch-1(config)#interface range fa0/1 - 3
@@ -458,7 +458,7 @@ Switch-1(config-if-range)#exit
 
 继续进行PAgP以太网通道的配置,则Switch 2被配置为以下这样。
 
-```
+```console
 Switch-2#conf t
 Enter configuration commands, one per line. End with CNTL/Z.
 Switch-2(config)#int range fa0/1 - 3
@@ -472,7 +472,7 @@ Switch-2(config-if-range)#exit
 
 以下输出演示了怎样通过在Switch 1及Switch 2上使用命令`show EtherChannel summary`,验证该PAgP以太网通道的配置。
 
-```
+```console
 Switch-1#show EtherChannel summary
 Flags:  D - down
         I - stand-alone
@@ -493,7 +493,7 @@ Group  Port-channel  Protocol    Ports
 
 还可以通过执行命令`show pagp [options]`, 查看到PAgP以太网通道的配置及统计数据。下面的输出,演示了此命令下可用的选项。
 
-```
+```console
 Switch-1#show pagp ?
   <1-6>     Channel group number
   counters  Traffic information
@@ -503,7 +503,7 @@ Switch-1#show pagp ?
 
 >**注意:**对需要的端口通道编号的进入,提供上面所打印出的后三个选项。这在下面的输出中进行了演示。
 
-```
+```console
 Switch-1#show pagp 1 ?
   counters  Traffic information
   internal  Internal information
@@ -512,7 +512,7 @@ Switch-1#show pagp 1 ?
 
 关键字`[counters]`提供了有关PAgP发出及接收到的数据包的信息。关键字`[internal]`提供了诸如端口状态、Hello间隔时间、PAgP端口优先级以及端口学习方式等的信息。下面的输出对命令`show pagp internal`的使用进行了演示。
 
-```
+```console
 Switch-1#show pagp 1 internal
 Flags:  S - Device is sending Slow hello.   C - Device is in Consistent state.
         A - Device is in Auto mode.         d - PAgP is down.
@@ -528,7 +528,7 @@ Fa0/3   SC      U6/S7   H       30s         1       128      Any        29
 
 关键字`[neighbor]`打印出邻居名称、PAgP邻居的ID、邻居设备ID(MAC)以及邻居端口。同时在比如邻居是一台物理学习设备时(a physical learner),这些标志同样表明了邻居运行的模式。下面的输出对命令`show pagp neighbor`的使用,进行了演示。
 
-```
+```console
 Switch-1#show pagp 1 neighbor
 Flags:  S - Device is sending Slow hello.   C - Device is in Consistent state.
         A - Device is in Auto mode.         P - Device learns on physical port.
@@ -555,7 +555,7 @@ Fa0/3   Switch-2    0014.a9e5.d640  Fa0/3   18s SAC     10001
 
 下面的输出对在Switch 1和Switch 2上如何配置基于图33.5中所给出的网络拓扑的LACP通道,进行了演示,该以太网通道将被配置为一个使用默认参数的二层802.1Q中继,如下面的输出所示。
 
-```
+```console
 Switch-1#conf t
 Enter configuration commands, one per line. End with CNTL/Z.
 Switch-1(config)#int range FastEthernet0/1 - 3
@@ -580,7 +580,7 @@ Switch-2(config-if-range)#exit
 
 下面的输出演示了如何通过在Switch 1及Switch 2上执行`show EtherChannel summary`命令,来对该LACP以太网通道配置进行验证。
 
-```
+```console
 Switch-1#show EtherChannel summary
 Flags:  D - down
         I - stand-alone
@@ -602,7 +602,7 @@ Group  Port-channel  Protocol    Ports
 
 默认LACP允许最多16个端口进入到一个端口通道组中(by default, LACP allows up to 16 ports to be entered into a port channel group)。前8个运作接口将为LACP所使用,而剩下的8个接口将被置为热备份状态。命令`show EtherChannel detail`显示出一个LACP以太网通道中所支持的链路最大数量,如下面的输出所示。
 
-```
+```console
 Switch-1#show EtherChannel 1 detail
 Group state = L2
 Ports: 3   Maxports = 16
@@ -694,7 +694,7 @@ Time since last port Un-bundled: 00d:00h:00m:49s    Fa0/1
 
 LACP的配置及统计数据也可以通过执行`show lacp [options]`命令进行查看。此命令可用的选项在下面的输出中进行了演示。
 
-```
+```console
 Switch-1#show lacp ?
   <1-6>     Channel group number
   counters  Traffic information
@@ -705,7 +705,7 @@ Switch-1#show lacp ?
 
 `[counters]`关键字提供了有关LACP发出和接收到的数据包的信息。该命令的打印输出如下面所示。
 
-```
+```console
 Switch-1#show lacp counters
           LACPDUs        Marker     Marker Response     LACPDUs
 Port    Sent   Recv    Sent   Recv    Sent   Recv       Pkts Err
@@ -718,7 +718,7 @@ Fa0/3   21     18      0      0       0      0          0
 
 而`[internal]`关键字提供了诸如端口状态、管理密钥(adminitrative key)、LACP端口优先级,以及端口编号等信息。下面的输出对此进行了演示。
 
-```
+```console
 Switch-1#show lacp internal
 Flags:  S - Device is sending Slow LACPDUs. F - Device is sending Fast
                                             LACPDUs.
@@ -733,7 +733,7 @@ Fa0/3     SA     bndl   32768        0x1      0x1    0x2     0x3D
 
 关键字`[neighbor]`打印出邻居名称、LACP邻居的ID、邻居的设备ID(MAC),以及邻居端口等信息。这些标志还表明邻居运行所处状态,以及其是否时一个物理学习设备(the flags also indicate the mode the neighbor is operating in, as well as whether it is a physical learner, for example)。下面的输出对此进行了演示。
 
-```
+```console
 Switch-1#show lacp neighbor
 Flags:  S - Device is sending Slow LACPDUs. F - Device is sending Fast
                                             LACPDUs.
@@ -764,7 +764,7 @@ Fa0/3     00001,0014.a9e5.d640  0x3             24s         SP
 
 最后,关键字`[sys-id]`提供了本地交换机的系统ID(finally, the `[sys-id]` keyword provides the system ID of the local switch)。这是一个该交换机MAC地址和LACP优先级的结合体,如下面的输出所示。
 
-```
+```console
 Switch-1#show lacp sys-id
 1    ,000d.bd06.4100
 ```
diff --git a/d34-First-Hop-Redundancy-Protocols.md b/d34-First-Hop-Redundancy-Protocols.md
index 3f74315..b80af8f 100644
--- a/d34-First-Hop-Redundancy-Protocols.md
+++ b/d34-First-Hop-Redundancy-Protocols.md
@@ -176,7 +176,7 @@ HSRP Coup报文实在当前备份路由器打算接过该HSRP组的活动网关
 
 以下输出给出了在一台刚开启HSRP的网关上,`debug standby`命令中显示的状态变化:
 
-```
+```console
 R2#debug standby
 HSRP debugging is on
 R2#
@@ -223,7 +223,7 @@ R2(config-if)#
 
 为解决此问题,思科IOS软件允许管理员将HSRP配置为使用其所配置上的物理接口的实际MAC地址。那么结果就是一个单独的MAC地址为所有HSRP组所使用(也就是活动网关所使用的MAC地址),且在每次往连接到这些交换机上的路由器添加HSRP组的时候,无需对端口安全配置进行修改。此操作是通过使用接口配置命令`standby use-bia`命令完成的。下面的输出演示了命令`show standby`,该命令给出了一个配置了两个不同HSRP组的网关接口的信息:
 
-```
+```console
 Gateway-1#show standby
 FastEthernet0/0 - Group 1
     State is Active
@@ -254,7 +254,7 @@ FastEthernet0/0 - Group 2
 
 下面的输出,演示了如何将HSRP配置为使用该网关接口的实际MAC地址,作为不同HSRP分组的虚拟MAC地址:
 
-```
+```console
 Gateway-1#conf
 Configuring from terminal, memory, or network [terminal]?
 Enter configuration commands, one per line. End with CNTL/Z.
@@ -265,7 +265,7 @@ Gateway-1(config-if)#exit
 
 基于上面的输出中的配置,命令`show standby`会反应出HSRP组的新MAC地址,如下面的输出所示:
 
-```
+```console
 Gateway-1#show standby
 FastEthernet0/0 - Group 1
     State is Active
@@ -297,7 +297,7 @@ FastEthernet0/0 - Group 2
 
 那么这里两个HSRP组所用的MAC地址,都是`0013.1986.0a20`,就是分配给物理网关接口的MAC地址了。这在下面的输出中有证实:
 
-```
+```console
 Gateway-1#show interface FastEthernet0/0
 FastEthernet0/0 is up, line protocol is up
     Hardware is AmdFE, address is 0013.1986.0a20 (bia 0013.1986.0a20)
@@ -391,7 +391,7 @@ HSRP允许管理员在一些物理接口上配置多个HSRP组,以实现负载
 
 > 但是,为了刷新那些交换机的虚拟MAC地址,这些客户组仍然要发送周期性的报文。不过与主组的协议选举报文相比,这些刷新报文是以低得多的频率发送的。尽管HSRP客户组的配置是超出CCNA考试要求的,下面的输出还是演示两个客户组的配置,这两个客户组被配置为跟随主组HSRP `Group 1`, 该主组又被命名为`SWITCH-HSRP`组:
 
-```
+```console
 Gateway-1(config)#interface vlan100
 Gateway-1(config-if)#ip address 192.168.1.1 255.255.255.0
 Gateway-1(config-if)#ip address 172.16.31.1 255.255.255.0 secondary
@@ -426,7 +426,7 @@ Gateway-1(config-if)#exit
 
 > **注意**:这里假定在`VTP-Server-1`与`VTP-Server-2`之间的VLAN与中继已有配置妥当,同时交换机之间可以经由VLAN172 `ping`通。为简短起见,这些配置已在配置示例中省略。
 
-```
+```console
 VTP-Server-1(config)#interface vlan172
 VTP-Server-1(config-if)#ip address 172.16.31.1 255.255.255.0
 VTP-Server-1(config-if)#standby 1 ip 172.16.31.254
@@ -442,7 +442,7 @@ VTP-Server-2(config-if)#exit
 
 在配置应用后,就可使用`show standby [interface brief]`命令,对HSRP的配置进行验证。下面的输出对`show standby brief`命令进行了展示:
 
-```
+```console
 VTP-Server-1#show standby brief
                      P indicates configured to preempt.
                      |
@@ -463,14 +463,14 @@ Vl172       1        100   Standby local   172.16.31.1     172.16.31.254
 
 抢占特性令到某台网关在本身比当前活动网关有着更高优先级时,强制性地接过活动网关的角色。使用命令`standby [number] preempt`命令,来配置HSRP抢占特性。下面的输出,演示了在`VTP-Server-1`上的此项配置:
 
-```
+```console
 VTP-Server-1(config)#interface vlan172
 VTP-Server-1(config-if)#standby 1 preempt
 ```
 
 这里同样使用命令`show standby [interface [name] |brief]`, 来验证在某个网关上已有配置抢占特性。是通过下面的`show standby brief`命令输出中的“P”字样演示的:
 
-```
+```console
 VTP-Server-1#show standby brief
                      P indicates configured to preempt.
                      |
@@ -482,14 +482,14 @@ Vl172       1   105  P Active  local   172.16.31.2     172.16.31.254
 
 默认下抢占是立即发生的。但可使用接口配置命令`standby [number] preempt delay [minimum|reload|sync]`对此时间间隔进行修改。关键字`[minimum]`用于指定在抢占前等待的最短时间(秒)。下面的输出展示了如何配置在抢占前等待30秒钟:
 
-```
+```console
 VTP-Server-1(config)#interface vlan172
 VTP-Server-1(config-if)#standby 1 preempt delay minimum 30
 ```
 
 此配置可使用命令`show standby [interface]`进行验证。下面的输出对此进行了演示:
 
-```
+```console
 VTP-Server-1#show standby vlan172
 Vlan172 - Group 1
     State is Active
@@ -514,7 +514,7 @@ HSRP接口跟踪特性,令到管理员可以将HSRP配置为追踪接口状态
 
 在下面的输出中,`VTP-Server-1`被配置为对连接到假想WAN路由器的接口`Gigabitethernet5/1`的状态,进行跟踪。在那个接口状态转变为`down`时,该网关就将其优先级值降低10(默认的):
 
-```
+```console
 VTP-Server-1#show standby vlan172
 Vlan172 - Group 1
     State is Active
@@ -536,14 +536,14 @@ Vlan172 - Group 1
 
 而要将该网关降低值配置为比如50, 就可以执行命令`standby [name] track [interface] [decrement value]`, 如下面的输出所示:
 
-```
+```console
 VTP-Server-1(config)#interface vlan172
 VTP-Server-1(config-if)#standby 1 track GigabitEthernet5/1 50
 ```
 
 此项配置可使用命令`show standby [interface]`进行验证。下面对此进行了演示:
 
-```
+```console
 VTP-Server-1#show standby vlan172
 Vlan172 - Group 1
     State is Active
@@ -567,14 +567,14 @@ Vlan172 - Group 1
 
 如同在本课程模块先前指出的那样,默认当HSRP开启时,是启用的版本1。但可通过接口配置命令`standby version [1|2]`来手动开启HSRP版本2。下面的输出演示了HSRP版本2的配置:
 
-```
+```console
 VTP-Server-1(config)#interface vlan172
 VTP-Server-1(config-if)#standby version 2
 ```
 
 使用命令`show standby [interface]`,可对此配置进行验证。下面的输出对此进行了演示:
 
-```
+```console
 VTP-Server-1#show standby vlan172
 Vlan172 - Group 1 (version 2)
     State is Active
@@ -688,7 +688,7 @@ VRRP允许以与HSRP类似的方式,实现负载均衡。比如,在一个于
 
 > **注意**:这里假定在`VTP-Server-1`与`VTP-Server-2`之间的VLAN与中继已有配置妥当,同时交换机之间可以经由VLAN192 `ping`通。为简短起见,这些配置已在配置示例中省略。
 
-```
+```console
 VTP-Server-1(config)#interface vlan192
 VTP-Server-1(config-if)#ip address 192.168.1.1 255.255.255.0
 VTP-Server-1(config-if)#vrrp 1 ip 192.168.1.254
@@ -706,7 +706,7 @@ VTP-Server-2(config-if)#exit
 
 下面还使用命令`show vrrp [all|brief|interface]`, 对此配置进行了验证。关键字`[all]`展示了有关该VRRP配置的所有信息,包括了组的状态、描述信息(在配置了的情况下)、本地网关优先级,以及主虚拟路由器和其它信息。关键字`[brief]`则会列印出该VRRP配置的摘要信息。而`[interface]`关键字会列印出特定接口的VRRP信息。下面的输出展示了`show vrrp all`命令的输出:
 
-```
+```console
 VTP-Server-1#show vrrp all
 Vlan192 - Group 1
 ‘SWITCH-VRRP-Example’
@@ -735,7 +735,7 @@ Vlan192 - Group 1
 
 下面的输出展示了由命令`show vrrp brief`所列印出的信息:
 
-```
+```console
 VTP-Server-1#show vrrp brief
 Interface          Grp Pri Time Own Pre State   Master addr     Group addr
 Vl192              1   105 3589      Y  Master  192.168.1.1     192.168.1.254
@@ -752,7 +752,7 @@ Vl192              1   100 3609      Y  Backup  192.168.1.1     192.168.1.254
 
 下面的输出展示了如何配置VRRP的跟踪,引用了对象1, 该被跟踪对象对`Loopback0`接口的线路协议进行跟踪:
 
-```
+```console
 VTP-Server-1(config)#track 1 interface Loopback0 line-protocol
 VTP-Server-1(config-track)#exit
 VTP-Server-1(config)#interface vlan192
@@ -762,7 +762,7 @@ VTP-Server-1(config-if)#exit
 
 而下面的输出则展示了如何将VRRP配置为对引用对象2的追踪,此被追踪对象追踪了到前缀`1.1.1.1/32`的可达性。一个被追踪的IP路由对象在存在一个该路由的路由表条目时,被认为是在线且可达的,同时该路由不是无法访问的(无法访问就是说有着255的路由度量值), 当发生无法访问时,该路由就会从路由信息数据库中被移除(a tracked IP route object is considered to be up and reachable when a routing table entry exists for the route and the route is not accessible(i.e., has a route metric of 255),in which case the route is removed from the Routing Information Base(RIB) anyway)。
 
-```
+```console
 VTP-Server-1(config)#track 2 ip route 1.1.1.1/32 reachability
 VTP-Server-1(config-track)#exit
 VTP-Server-1(config)#interface vlan192
@@ -771,7 +771,7 @@ VTP-Server-1(config-if)#vrrp 1 track 2
 
 VRRP跟踪的配置,是通过使用命令`show vrrp interface [name]`命令进行验证的。下面的输出对此进行了演示:
 
-```
+```console
 VTP-Server-1#show vrrp interface vlan192
 Vlan192 - Group 1
 ‘SWITCH-VRRP-Example’
@@ -791,7 +791,7 @@ Vlan192 - Group 1
 
 而要查看被追踪对象的各项参数,就使用命令`show track [number] [brief] [interface] [ip] [resolution] [timers]`。下面是`show track`命令输出的演示:
 
-```
+```console
 VTP-Server-1#show track
 Track 1
     Interface Loopback0 line-protocol
@@ -814,7 +814,7 @@ Track 2
 
 命令`debug vrrp`提供给管理员用于查看有关VRRP运作情况实时信息的诸多选项。这些选项如下面的输出所示:
 
-```
+```console
 VTP-Server-1#debug vrrp ?
     all Debug all VRRP information
     auth VRRP authentication reporting
@@ -937,7 +937,7 @@ GLBP的客户端缓存,包含了使用到某个GLBP组作为默认网关的那
 
 > **注意**:这里假定在`VTP-Server-1`与`VTP-Server-2`之间的VLAN与中继已有配置妥当,同时交换机之间可以经由VLAN192 `ping`通。为简短起见,这些配置已在配置示例中省略。
 
-```
+```console
 VTP-Server-1(config)#interface vlan192
 VTP-Server-1(config-if)#glbp 1 ip 192.168.1.254
 VTP-Server-1(config-if)#glbp 1 priority 110
@@ -955,7 +955,7 @@ VTP-Server-4(config-if)#exit
 
 一旦该GLBP组已被配置,就可使用命令`show glbp brief`来查看该GLBP配置的摘要信息了,如同下面的输出所示:
 
-```
+```console
 VTP-Server-1#show glbp brief
 Interface   Grp  Fwd Pri State      Address         Active router   Standby router
 Vl192       1    -   110 Active     192.168.1.254   local           192.168.1.4
@@ -993,7 +993,7 @@ Vl192       1    4   -   Active     0007.b400.0104  local           -
 
 命令`show glbp`将有关该GLBP组状态的详细信息打印了出来,下面对此命令的输出进行了演示:
 
-```
+```console
 VTP-Server-1#show glbp
 Vlan192 - Group 1
     State is Active
diff --git a/d35-booting-and-IOS.md b/d35-booting-and-IOS.md
index 796b465..381a153 100644
--- a/d35-booting-and-IOS.md
+++ b/d35-booting-and-IOS.md
@@ -43,7 +43,7 @@
 
 引导ROM(boot ROM)-- 是电可擦可编程只读存储器(Electrically Erasable Programmable Read-Only Mememory, EEPROM,, 一种掉电后数据不丢失的存储芯片),用于启动图/Rommon(startup diagram/Rommon)的存储及IOS的装入。在路由器启动是,如缺少IOS文件,那么就会启动要一种叫做Rommon的紧急模式(an emergency mode),此模式下允许输入一些有限的几个命令,以对路由器进行恢复及装入其它IOS。此模式又叫做启动模式(bootstrap mode),在以下两种路由器提示符下,就可以明白是在此模式:
 
-```
+```console
 >
 Rommon>
 ```
@@ -67,7 +67,7 @@ RxBoot程序 -- 小型的IOS(Mini-IOS), 在此程序模式下允许上传一
 
 通过命令`show version`,就可以查看到当前的配置寄存器设置:
 
-```
+```console
 Router#show version
 Cisco Internetwork Operating System Software
 IOS (tm) 2500 Software (C2500-JS-L), Version 12.1(17), RELEASE SOFTWARE (fc1) Copyright (c) 1986-2002 by Cisco Systems, Inc.
@@ -93,14 +93,14 @@ Configuration register is 0x2102
 
 命令还现实了该路由器已在线多长时间及上次重启的原因--在对启动问题进行故障排除时,这些信息是有用的。
 
-```
+```console
 Router uptime is 12 minutes
 System returned to ROM by reload
 ```
 
 同时改命令将显示处路由器上不同类型的存储器:
 
-```
+```console
 Router#show version
 Cisco Internetwork Operating System Software
 IOS (tm) 2500 Software (C2500-IS-L), Version 12.2(4)T1, RELEASE SOFTWARE Copyright (c) 1986-2001 by Cisco Systems, Inc.
@@ -132,19 +132,19 @@ Processor board ID 18086064, with hardware revision 00000003
 
 你可以将运行配置拷贝到一台运行了TFTP服务器软件的PC机或服务器上:
 
-```
+```console
 Router#copy startup-config tftp:← You need to include the colon
 ```
 
 还可以将IOS镜像复制到某台TFTP服务器上。如要将服务器IOS更新到另一较新版本,就必须要这么做,以防新版本可能带来的问题(管理员经常将一个路由器现有闪存装不下的IOS镜像放上去)。
 
-```
+```console
 Router#copy flash tftp:
 ```
 
 路由器将提示输入TFTP服务器的IP地址,建议服务器与路由器位处同一子网。而如打算从TFTP服务器下载IOS镜像,就只需简单地逆转一下命令即可:
 
-```
+```console
 Router#copy tftp flash:
 ```
 
@@ -156,7 +156,7 @@ Router#copy tftp flash:
 
 通过`show version`或`show flash`命令, 或者经由`dir flash:`进入到flash目录,进入到flash目录将显示出闪存中所有的文件,就可以查看到闪存的文件名。
 
-```
+```console
 RouterA#show flash
 System flash directory:
 File    Length      Name/status
@@ -175,7 +175,7 @@ File    Length      Name/status
 
 取决于所要配置的启动选项,命令可能有些许不同。所以要在一台开启的路由器上对所有选项都进行尝试。
 
-```
+```console
 RouterA(config)#boot system ?
 WORD           TFTP filename or URL
 flash          Boot from flash memory
@@ -187,13 +187,13 @@ tftp           Boot from tftp server
 
 对于闪存来说:
 
-```
+```console
 RouterA(config)#boot system flash ? WORD System image filename <cr>
 ```
 
 而对于TFTP:
 
-```
+```console
 Enter configuration commands, one per line. End with CNTL/Z.
 RouterB(config)#boot system tftp: c2500-js-l.121-17.bin ? Hostname or A.B.C.D Address from which to download the file <cr>
 RouterA(config)#boot system tftp:
@@ -252,7 +252,7 @@ RouterA(config)#boot system tftp:
 
 每种型号的思科路由器(支持许可证的),都已分配了一个叫做唯一设备标识符(the unique device identifier, UDI)的,唯一识别编号(a unique identifying number)。唯一设备标识符是由序列号及产品身份证组成的(this is compromised of the serial number(SN) and the product identification(PID))。执行`show license udi`命令,来查看此信息。
 
-```
+```console
 Router#show license ?
 all        Show license all information
 detail     Show license detail information
@@ -268,7 +268,7 @@ Device#   PID               SN              UDI
 
 在下面可以看到有哪些特性也被激活。特性`ipbasek9`将总是开启的。
 
-```
+```console
 Router#show license all
 License Store: Primary License Storage
 StoreIndex: 0   Feature: ipbasek9                   Version: 1.0
@@ -295,7 +295,7 @@ StoreIndex: 1   Feature: datak9                     Version: 1.0
 
 命令`show license feature`将打印出已开启的特性摘要信息:
 
-```
+```console
 Router#show license feature
 Feature name        Enforcement  Evaluation  Subscription   Enabled
 ipbasek9            no           no          no             yes
@@ -305,7 +305,7 @@ datak9              yes          no          no             no
 
 一旦许可证得到验证,就必须通过U盘或网络服务器,及在命令行执行`license install [url]`, 将该许可证密钥添加到路由器。需要注意“.lic”这个文件名。
 
-```
+```console
 Router#dir usbflash0:
 
 Directory of usbflash0:/
diff --git a/d36-EIGRP.md b/d36-EIGRP.md
index 6e05b8d..1473920 100644
--- a/d36-EIGRP.md
+++ b/d36-EIGRP.md
@@ -71,7 +71,7 @@
 
 在思科IOS软件中,是通过使用全局配置命令`router eigrp [ASN]`,来开启增强的IGRP的。关键字`[ASN]`指定EIGRP的自治系统编号(autonomous system number, ASN),这是一个32位整数,大小介于1-65535之间。除了本章后面将涉及的其它因素之外,**运行EIGRP的那些路由器都必须位处同一自治系统中**,以成功形成邻居关系。在全局配置命令`router eigrp [ASN]`之后, 路由器就转变为EIGRP路由器配置模式(EIGRP Router Configuration mode)了,在这里就可以对那些与EIGRP有关的参数进行配置了。所配置的ASN,可在命令`show ip protocols`的输出中进行验证,如下面所示:
 
-```
+```console
 R1#show ip protocols
 Routing Protocol is “eigrp 150”
     Outgoing update filter list for all interfaces is not set
@@ -89,7 +89,7 @@ Routing Protocol is “eigrp 150”
 
 而除了`show ip protocols`命令,命令`show ip eigrp neighbours`会打印出所有EIGRP邻居,以及这些邻居各自自治系统的信息。该命令及其可用选项,将在本课程模块的后面进行详细讲解。在那些运行了多个EIGRP实例的路由器上,可使用`show ip eigrp [ASN]`命令,来查看只与在此命令中所指定的自治系统有关的信息。下面的输出演示了这个命令的使用:
 
-```
+```console
 R1#show ip eigrp 150 ?
   interfaces  IP-EIGRP interfaces
   neighbors   IP-EIGRP neighbors
@@ -116,7 +116,7 @@ R1#show ip eigrp 150 ?
 
 如EIGRP已开启使用,且将路由器配置命令`network`与大的有类`10.0.0.0/8`网络一道进行了使用,同时**所有4个环回接口**(all four Loopback interfaces)又都开启了EIGRP路由的话,那么下面就给出了此种情况下`show ip eigrp interfaces`的输出演示:
 
-```
+```console
 R1#show ip eigrp interfaces
 IP-EIGRP interfaces for process 150
                      Xmit Queue   Mean    Pacing Time    Multicast      Pending
@@ -129,7 +129,7 @@ Lo3            0         0/0         0        0/10            0             0
 
 可使用`show ip protocols`命令,来对大的有类`10.0.0.0/8`网络上EIGRP的启用情况,进行验证。此命令的输出如下所示:
 
-```
+```console
 R1#show ip protocols
 Routing Protocol is “eigrp 150”
     Outgoing update filter list for all interfaces is not set
@@ -152,7 +152,7 @@ Routing Protocol is “eigrp 150”
 
 使用命令`show ip eigrp topology`,可查看到EIGRP的拓扑表。此命令的输出如下所示:
 
-```
+```console
 R1#show ip eigrp topology
 IP-EIGRP Topology Table for AS(150)/ID(10.3.3.1)
 Codes: P - Passive, A - Active, U - Update, Q - Query, R - Reply,
@@ -171,7 +171,7 @@ P 10.0.0.0/24, 1 successors, FD is 128256
 
 使用`network`命令来指明一个大的有类网络(a major classful network),就令到位于该有类网络中的多个子网,得以在最小配置下同时被通告出去。但可能存在管理员不想对某个有类网络中的所有子网,都开启EIGRP路由的情形。比如,参考前一示例中`R1`上所配置的环回接口,假设只打算对`10.1.1.0/24`及`10.3.3.0/24`子网开启EIGRP路由,而不愿在`10.0.0.0/24`及`10.2.2.0/24`开启EIGRP路由。那么很明显这在使用`network`命令时,对这些网络(也就是`10.1.1.0`及`10.3.3.0`)予以指明就可以做到,思科IOS软件仍会将这些语句,转换成大的有类`10.0.0.0/8`网络,如下所示:
 
-```
+```console
 R1(config)#router eigrp 150
 R1(config-router)#network 10.1.1.0
 R1(config-router)#network 10.3.3.0
@@ -180,7 +180,7 @@ R1(config-router)#exit
 
 尽管有着上面的配置,但`show ip protocols`命令给出的确实下面的输出:
 
-```
+```console
 R1#show ip protocols
 Routing Protocol is “eigrp 150”
     Outgoing update filter list for all interfaces is not set
@@ -203,7 +203,7 @@ Distance: internal 90 external 170
 
 > **注意**:一个常见的误解就是,关闭EIGRP的自动汇总特性,就能解决此问题;但是,这与`auto-summary`命令一点关系都没有。比如,假设对在前一示例中的配置执行了`no auto-summary`命令,如下所示:
 
-```
+```console
 R1(config)#router eigrp 150
 R1(config-router)#network 10.1.1.0
 R1(config-router)#network 10.3.3.0
@@ -213,7 +213,7 @@ R1(config-router)#exit
 
 `show ip protocols`命令仍将显示对网络`10.0.0.0/8`开启了EIGRP,如下面的输出所示:
 
-```
+```console
 R1#show ip protocols
 Routing Protocol is “eigrp 150”
     Outgoing update filter list for all interfaces is not set
@@ -238,7 +238,7 @@ Distance: internal 90 external 170
 
 作为一个示例,命令`network 10.1.1.0 0.0.0.255`将匹配到网络`10.1.1.0/24`、`10.1.1.0/26`及`10.1.1.0/30`网络。参考上一输出中所配置的那些环回借口(the Loopback interfaces),为将`R1`配置为对`10.1.1.0/24`及`10.3.3.0/24`子网开启EIGRP路由,且不对`10.0.0.0/24`子网或`10.2.2.0`子网开启,就应将其如下面那样进行配置:
 
-```
+```console
 R1(config)#router eigrp 150
 R1(config-router)#network 10.1.1.0 0.0.0.255
 R1(config-router)#network 10.3.3.0 0.0.0.255
@@ -247,7 +247,7 @@ R1(config-router)#exit
 
 使用命令`show ip protocols`,就可对此配置进行验证,如下所示:
 
-```
+```console
 R1#show ip protocols
 Routing Protocol is “eigrp 150”
     Outgoing update filter list for all interfaces is not set
@@ -271,7 +271,7 @@ Distance: internal 90 external 170
 
 此外,还可以使用命令`show ip eigrp interfaces`,确认到仅已对`Loopback1`与`Loopback3`开启了EIGRP路由:
 
-```
+```console
 R1#show ip eigrp interfaces
 IP-EIGRP interfaces for process 150
                      Xmit Queue   Mean    Pacing Time    Multicast      Pending
@@ -284,7 +284,7 @@ Lo3            0         0/0         0        0/10            0             0
 
 这里重要的是记住除了使用通配符掩码,**也可以使用子网掩码来配置`network`命令**。在此情况下,思科IOS软件将翻转子网掩码,而使用通配符掩码来保存该命令。比如,参照路由器上同样的环回借口,路由器`R1`也可被如下这样进行配置:
 
-```
+```console
 R1(config-router)#router eigrp 150
 R1(config-router)#network 10.1.1.0 255.255.255.0
 R1(config-router)#network 10.3.3.0 255.255.255.0
@@ -293,7 +293,7 @@ R1(config-router)#exit
 
 基于此种配置,就在运行配置中输入了下面的参数(这里使用了管道(pipe),取得运行配置中感兴趣的部分):
 
-```
+```console
 R1#show running-config | begin router eigrp
 router eigrp 150
 network 10.1.1.0 0.0.0.255
@@ -311,7 +311,7 @@ auto-summary
 
 本示例中所用到的`network`配置,如下面输出所示:
 
-```
+```console
 R1(config)#router eigrp 150
 R1(config-router)#network 10.1.1.15 0.0.0.255
 R1(config-router)#exit
@@ -319,7 +319,7 @@ R1(config-router)#exit
 
 那么基于此配置,路由器上的运行配置,就会显示如下内容:
 
-```
+```console
 R1#show running-config | begin router eigrp
 router eigrp 150
 network 10.1.1.0 0.0.0.255
@@ -332,7 +332,7 @@ auto-summary
 
 > 当在生产网络中对EIGRP进行配置时,**一般做法都是使用全0的通配符掩码或全1的子网掩码**。比如,`network 10.1.1.1 0.0.0.0`及`network 10.1.1.1 255.255.255.255`,两个命令都会执行同样的动作。全0的通配符掩码或全1的子网掩码的使用,就将思科IOS软件配置为与一个具体接口地址进行匹配,而不考虑在接口本身上所配置哦子网掩码了。这两个命令都会匹配到配置了比如`10.1.1.1/8`、`10.1.1.1/16`、`10.1.1.1/24`, 以及`10.1.1.1/30`等地址的接口。这些命令的用法如下面的输出所示:
 
-```
+```console
 R1(config)#router eigrp 150
 R1(config-router)#network 10.0.0.1 0.0.0.0
 R1(config-router)#network 10.1.1.1 255.255.255.255
@@ -341,7 +341,7 @@ R1(config-router)#exit
 
 `show ip protocols`命令将验证到路由器对于两个`network`语句,都是以相似的方式进行处理的,如下所示:
 
-```
+```console
 R1#show ip protocols
 Routing Protocol is “eigrp 150”
     Outgoing update filter list for all interfaces is not set
@@ -451,7 +451,7 @@ EIGRP确认数据包,就是一个**不包含数据的**EIGRP Hello数据包。
 
 命令`debug eigrp packets`,可用于打印出本小节中所讲到的各种不同EIGRP数据包的实时调试信息。要知道此命令还包括了一些这里并没有说到的其它数据包,因为这些其它类型数据包超出了当前CCNA考试要求。下面的输出对此命令的用法进行了演示:
 
-```
+```console
 R1#debug eigrp packets ?
   SIAquery  EIGRP SIA-Query packets
   SIAreply  EIGRP SIA-Reply packets
@@ -472,7 +472,7 @@ R1#debug eigrp packets ?
 
 而`show ip eigrp traffic`命令,则是**用于对本地路由器所发送及接收到的EIGRP数据包的数量进行查看的命令**。该命令同时**还是一个强大的故障排除工具**。比如假设某路由器在发出Hello数据包,却并未收到任何回复,这可能表明其尚未配置好预期的邻居,或者甚至有可能某个确认数据包阻塞了EIGRP数据包(For example, if the router is sending out Hello packets but is not receiving any back, this could indicate that the intended neighbour is not configured, or even that an ACK may be blocking EIGRP packets)。下面的输出对此命令进行了演示:
 
-```
+```console
 R2#show ip eigrp traffic
 IP-EIGRP Traffic Statistics for AS 150
     Hellos sent/received: 21918/21922
@@ -530,7 +530,7 @@ IP-EIGRP Traffic Statistics for AS 150
 
 尽管`show ip eigrp neighbours`命令在动态与静态配置的邻居间没有区别,但**`show ip eigrp interfaces detail <name>` 命令却可以用于对路由器接口是否在发出多播数据包来发现和维护邻居关系,进行检查**。下面演示了在一台开启了动态邻居发现的路由器上该命令的输出:
 
-```
+```console
 R2#show ip eigrp interfaces detail FastEthernet0/0
 IP-EIGRP interfaces for process 150
                       Xmit Queue   Mean   Pacing Time    Multicast      Pending
@@ -565,7 +565,7 @@ Fa0/0            1        0/0        1        0/1            50             0
 
 参考图36.5中所给出的拓扑,路由器`R2`将作如下配置:
 
-```
+```console
 R2(config)#router eigrp 150
 R2(config-router)#network 192.168.1.0 0.0.0.255
 R2(config-router)#neighbor 192.168.1.3 FastEthernet0/0
@@ -575,7 +575,7 @@ R2(config-router)#exit
 
 而应用于路由器`R3`上的配置则如下:
 
-```
+```console
 R3(config)#router eigrp 150
 R3(config-router)#network 192.168.1.0 0.0.0.255
 R3(config-router)#neighbor 192.168.1.2 FastEthernet0/0
@@ -585,7 +585,7 @@ R3(config-router)#exit
 
 可使用`show ip eigrp interfaces detail <name>`命令,对路由器接口使用多播(动态),还是使用单播(静态)数据包来进行邻居发现与维护进行判断。下面的输出对此进行了演示:
 
-```
+```console
 R2#show ip eigrp interfaces detail FastEthernet0/0
 IP-EIGRP interfaces for process 150
                       Xmit Queue   Mean   Pacing Time    Multicast      Pending
@@ -620,7 +620,7 @@ Fa0/0            1        0/0        2        0/1            50             0
 
 参考图36.6, 除开其它方面,该EIGRP Hello数据包(OPCode 5)包含了所配置的保持时间数值。图36.6中所显示的值15, 是一个使用接口配置命令`ip hold-time eigrp <ASN> <secs>`所配置的非默认数值。重要的是记住,在Hello数据包中,是**不包含Hello时间间隔的**。但可使用`show ip eigrp interfaces detail <name>`命令,查看到所配置的Hello时间。下面演示了此命令所打印出的信息:
 
-```
+```console
 R2#show ip eigrp interfaces detail FastEthernet0/0
 IP-EIGRP interfaces for process 150
                       Xmit Queue   Mean   Pacing Time    Multicast      Pending
@@ -654,7 +654,7 @@ EIGRP邻居表条目还包含了可靠传输协议(the Reliable Transport Prot
 
 邻居表包含了每个邻居的一个在可能需要重传时,用于对数据包进行排队的传输清单。此外,在邻居数据结构中还有着一些往返计时器,使用这些计时器来估算出最优重传间隔(the neighbour table includes a transmission list that is used to queue packets for possible retransmission on a per-neighbour basis. Additionally, round-trip timers are kept in the neighbour data structure to estimate an optimal retransmission interval)。所有这些信息都在`show ip eigrp neighbours`命令的输出中有打印出来。如下面所示:
 
-```
+```console
 R2#show ip eigrp neighbors
 IP-EIGRP neighbors for process 150
 H   Address      Interface  Hold   Uptime     SRTT    RTO    Q     Seq
@@ -680,7 +680,7 @@ H   Address      Interface  Hold   Uptime     SRTT    RTO    Q     Seq
 
 尽管`show ip eigrp neighbours`命令打印出有关已知EIGRP邻居信息,其在动态发现的邻居和手动配置的邻居上是没有区别的。比如,在路由器`R2`上的该`show ip eigrp neighbours`命令的输出表明该路由器有着两个EIGRP邻居关系。在此配置下,其中一个是静态配置的邻居,而另一个则是动态发现的。可以看出,从下面的输出是没法判断出哪个是哪个的:
 
-```
+```console
 R2#show ip eigrp neighbors
 IP-EIGRP neighbors for process 150
 H   Address      Interface  Hold   Uptime     SRTT    RTO    Q     Seq
@@ -691,7 +691,7 @@ H   Address      Interface  Hold   Uptime     SRTT    RTO    Q     Seq
 
 在路由器同时有着动态发现与静态配置的邻居关系环境中,可以使用`show ip eigrp neighbours detail`命令,来判断出哪个邻居是静态配置的,哪个是动态发现的,如下面所示:
 
-```
+```console
 R2#show ip eigrp neighbors
 IP-EIGRP neighbors for process 150
 H   Address      Interface  Hold   Uptime     SRTT    RTO    Q     Seq
@@ -705,7 +705,7 @@ H   Address      Interface  Hold   Uptime     SRTT    RTO    Q     Seq
 
 参考上面的输出,邻居`192.168.1.3`就是手动配置的邻居,而邻居`150.2.2.2`则是动态发现的邻居了。还可以通过使用`show ip eigrp neighbours static <interface>`,来查看到那些静态邻居,如下所示:
 
-```
+```console
 R2#show ip eigrp neighbors static FastEthernet0/0
 IP-EIGRP neighbors for process 150
 Static Address           Interface
@@ -759,7 +759,7 @@ Static Address           Interface
 
 在使用`metric weights`命令时,`[tos]`表示服务类型(Type of Service)。尽管思科IOS软件显示可以使用任何0到8之间的数值,但在撰写本手册时,该字段(`[tos]`)当前却只能被设置为0。而这些K值,就可以被设置为0到255之间的任何数值。通过执行`show ip protocols`命令,就可查看默认的这些EIGRP K值。下面的输出对此进行了演示:
 
-```
+```console
 R2#show ip protocols
 Routing Protocol is “eigrp 150”
   Outgoing update filter list for all interfaces is not set
@@ -796,7 +796,7 @@ Routing Protocol is “eigrp 150”
 
 参考图36.8中的图示,因为路由器`R1`与`R2`之间两条链路的带宽(及延迟)是相等的,所以从路由器`R2`到子网`172.16.100.0/24`将同时继承到这两条路径的相同EIGRP度量值(because of the equal bandwidth (and delay) values of the links between `R1` and `R2`, the same EIGRP metric will be derived for both paths from `R2` to the `172.16.100.0/24` subnet)。EIGRP将在这两条链路之间进行流量负载均衡,如下面路由器`R2`上的输出所示:
 
-```
+```console
 R2#show ip route 172.16.100.0 255.255.255.0
 Routing entry for 172.16.100.0/24
   Known via “eigrp 150”, distance 90, metric 2172416, type internal
@@ -819,7 +819,7 @@ Routing entry for 172.16.100.0/24
 
 第一种操作,就是可以增加`Serial0/0`上的带宽值,造成该路径的一个更好(更低)的度量值。那么第二种方法,就是可以降低`Serial0/1`上的带宽值,造成该路径的一个更差(更高)的度量值。两种选项都是可接受的,同时都将达成所需的结果。下面的输出演示了如何将`Serial0/0`上的默认带宽进行降低,从而有效地确保`Serial0/0`作为路由器`R2`及`172.16.100.0/24`网络之间的主要路径。
 
-```
+```console
 R2(config)#interface Serial0/1
 R2(config-if)#bandwidth 1024
 R2(config-if)#exit
@@ -829,7 +829,7 @@ R2(config-if)#exit
 
 该配置的结果就是接口`Serial0/0`成为路由器`R2`到达目的网络`172.16.100.0/24`网络的主要路径。这在下面的输出中有所演示:
 
-```
+```console
 R2#show ip route 172.16.100.0 255.255.255.0
 Routing entry for 172.16.100.0/24
   Known via “eigrp 150”, distance 90, metric 2172416, type internal
@@ -872,7 +872,7 @@ Routing entry for 172.16.100.0/24
 
 在对接口的带宽及延迟数值进行计算时,重要的是记住**对接口带宽的调整并不会自动地调整到接口的延迟,相反也是这样。这两个数值是相互独立的**。比如,下面的输出展示了一个快速以太网接口的默认带宽及延迟数值:
 
-```
+```console
 R2#show interfaces FastEthernet0/0
 FastEthernet0/0 is up, line protocol is up
   Hardware is AmdFE, address is 0013.1986.0a20 (bia 0013.1986.0a20)
@@ -885,7 +885,7 @@ FastEthernet0/0 is up, line protocol is up
 
 为对此概念进行强化,下面使用接口配置命令`bandwidth`,将该快速以太网接口的带宽调整为1544Kbps:
 
-```
+```console
 R2(config)#interface FastEthernet0/0
 R2(config-if)#bandwidth 1544
 R2(config-if)#exit
@@ -893,7 +893,7 @@ R2(config-if)#exit
 
 此时显示在`show interfaces`命令的输出中的带宽数值,反应了该已应用下去的配置,但默认的接口延迟数值却仍然保持原来的大小,如下面的输出所示:
 
-```
+```console
 R2#show interfaces FastEthernet0/0
 FastEthernet0/0 is up, line protocol is up
   Hardware is AmdFE, address is 0013.1986.0a20 (bia 0013.1986.0a20)
@@ -927,7 +927,7 @@ FastEthernet0/0 is up, line protocol is up
 
 可使用`show ip route`命令对此计算进行验证,如下所示:
 
-```
+```console
 R2#show ip route 172.16.100.0 255.255.255.0
 Routing entry for 172.16.100.0/24
   Known via “eigrp 150”, distance 90, metric 2172416, type internal
@@ -948,7 +948,7 @@ Routing entry for 172.16.100.0/24
 
 与使用`bandwidth`命令一样,为了对EIGRP的度量值计算施加影响,我们既可以使用`delay`命令对接口延迟数值进行提升,也可以对其进行降低。比如,为了将路由器`R2`配置为使用链路`Serial0/0`到达`172.16.100.0/24`网络,而将`Serial0/1`仅用作一条备份链路,那么就可以如下将`Serial0/0`上的延迟数值进行降低:
 
-```
+```console
 R2(config)#int s0/0
 R2(config-if)#delay 100
 R2(config-if)#exit
@@ -956,7 +956,7 @@ R2(config-if)#exit
 
 此配置就对经由`Serial0/0`的路径的EIGRP度量值进行了调整,如下所示:
 
-```
+```console
 R2#show ip route 172.16.100.0 255.255.255.0
 Routing entry for 172.16.100.0/24
   Known via “eigrp 150”, distance 90, metric 1686016, type internal
@@ -1033,7 +1033,7 @@ EIGRP的拓扑表,是由EIGRP的各种**协议相关模块**, 在**弥散更
 
 使用`show ip eigrp topology`命令,就可查看到EIGRP拓扑表的内容。该命令下可用的选项如下所示:
 
-```
+```console
 R2#show ip eigrp topology ?
   <1-65535>       AS Number
   A.B.C.D         IP prefix <network>/<length>, e.g., 192.168.0.0/16
@@ -1050,7 +1050,7 @@ R2#show ip eigrp topology ?
 
 不带选项的`show ip eigrp topology`命令,将仅打印出那些拓扑表中路由的、且是该路由器上所有开启的EIGRP实例的后继路由器及可行后继的信息(The `show ip eigrp topology` command with no options prints only the Successor and Feasible Successor information for routes in the topology table and for all of the EIGRP instances enabled on the router)。下面演示了该命令的打印输出:
 
-```
+```console
 R2#show ip eigrp topology
 IP-EIGRP Topology Table for AS(150)/ID(2.2.2.2)
 Codes: P - Passive, A - Active, U - Update, Q - Query, R - Reply,
@@ -1066,7 +1066,7 @@ P 172.16.100.0/24, 1 successors, FD is 1686016
 
 而`show ip eigrp topology [network]/[prefix]`及`show ip eigrp topology [network] [mask]`两个命令,则将打印出其各自所指定路由的后继路由、可行后继路由以及未能满足可行条件的那些其它路由(The `show ip eigrp topology [network]/[prefix]` and `show ip eigrp topology [network] [mask]` commands print Successor routes, FS routes, and routes that have not met the FC for the route specified in either command)。下面的输出演示了`show ip eigrp topology [network]/[prefix]`命令的用法:
 
-```
+```console
 R2#show ip eigrp topology 172.16.100.0/24
 IP-EIGRP (AS 150): Topology entry for 172.16.100.0/24
   State is Passive, Query origin flag is 1, 1 Successor(s), FD is 1686016
@@ -1093,7 +1093,7 @@ IP-EIGRP (AS 150): Topology entry for 172.16.100.0/24
 
 在上面的输出中,可以看出经由`Serial0/1`的路径并没有满足可行条件(FC),因为其报告的距离(RD)超过了可行距离(FD)。这就是该路径没有在`show ip eigrp topology`命令的输出中打印出来的原因。而为了判断出那些后继路由、可行后继路由,以及未能满足可行条件的那些路由,就可以使用`show ip eigrp topology all-links`命令,而不是对单个前缀进行查看,从而查看到在EIGRP拓扑表中所有前缀的所有可能的路由。下面对此命令的输出进行了演示:
 
-```
+```console
 R2#show ip eigrp topology all-links
 IP-EIGRP Topology Table for AS(150)/ID(2.2.2.2)
 Codes: P - Passive, A - Active, U - Update, Q - Query, R - Reply,
@@ -1123,7 +1123,7 @@ P 172.16.100.0/24, 1 successors, FD is 1686016, serno 47
 
 查询一旦发出,那么发出查询的EIGRP路由器就必须在计算后继路由前,等待完成所有应答的接收。如有任何邻居在三分钟之内没有应答,那么该路由就被称作处于活动粘滞状态(If any neighbour has not replied within three minutes, the route is said to be Stuck-In-Active(SIA))。而当某条路由成为活动粘滞路由时,该(这些)未对查询进行响应的路由器的邻居关系,就将被重置。在此情况下,可以观察到路由器记录下了如下类似的一条消息:
 
-```
+```console
 %DUAL-5-NBRCHANGE: IP-EIGRP 150:
     Neighbor 150.1.1.1(Serial0/0) is down: stuck in active
 %DUAL-3-SIA:
@@ -1149,7 +1149,7 @@ Cleaning up
 
 思科IOS软件对所有路由协议支持默认下至多4条路径的相等开销负载均衡(Cisco IOS software supports equal cost load sharing for a default of up to four paths for all routing protocols)。下面的`show ip protocols`命令的输出,对此进行了演示:
 
-```
+```console
 R2#show ip protocols
 Routing Protocol is “eigrp 150”
   Outgoing update filter list for all interfaces is not set
@@ -1176,7 +1176,7 @@ Routing Protocol is “eigrp 150”
 
 而又可以使用路由器配置命令`maximum-paths <1-6>`,对默认的最多4条路径,修改为最多6条相等开销的路径。在进行相等开销的负载均衡时,路由器将负载在所有路径直接进行均匀地分配。有着一个流量分享计数,对每条路径上传输的数据包进行识别(The traffic share count identifies the number of outgoing packets on each path)。在进行相等开销的负载均衡时,单个的完整数据包是在某条单独路径上发出的,如下面的输出所示:
 
-```
+```console
 R2#show ip route 172.16.100.0 255.255.255.0
 Routing entry for 172.16.100.0/24
   Known via “eigrp 150”, distance 90, metric 2172416, type internal
@@ -1199,7 +1199,7 @@ Routing entry for 172.16.100.0/24
 
 关键字`<multiplier>`是一个介于1到128之间的整数。默认的倍数(multiplier)1,就是说不进行不相等开销下的负载均衡。此默认设置在下面的`show ip protocols`命令的输出中进行了演示:
 
-```
+```console
 R2#show ip protocols
 Routing Protocol is “eigrp 150”
   Outgoing update filter list for all interfaces is not set
@@ -1232,7 +1232,7 @@ Routing Protocol is “eigrp 150”
 
 基于图36.11中所演示的拓扑,下面的输出演示在路由器`R2`上`172.16.100.0/24`前缀的路由表:
 
-```
+```console
 R2#show ip route 172.16.100.0 255.255.255.0
 Routing entry for 172.16.100.0/24
   Known via “eigrp 150”, distance 90, metric 3014400, type internal
@@ -1248,7 +1248,7 @@ Routing entry for 172.16.100.0/24
 
 下面的EIGRP拓扑表,同时显示了后继与可行后继路由:
 
-```
+```console
 R2#show ip eigrp topology 172.16.100.0 255.255.255.0
 IP-EIGRP (AS 150): Topology entry for 172.16.100.0/24
   State is Passive, Query origin flag is 1, 1 Successor(s), FD is 3014400
@@ -1287,7 +1287,7 @@ IP-EIGRP (AS 150): Topology entry for 172.16.100.0/24
 
 随后**必须对此数值进行向上取整**,这里就是2了。那么就可以在路由器配置模式中,通过应用将下面的配置,将路由器`R2`配置为进行非等价的负载均衡了:
 
-```
+```console
 R2(config)#router eigrp 150
 R2(config-router)#variance 2
 R2(config-router)#exit
@@ -1295,7 +1295,7 @@ R2(config-router)#exit
 
 而根据此配置,此时`172.16.100.0/24`前缀的路由表条目就变成如下所示了:
 
-```
+```console
 R2#show ip route 172.16.100.0 255.255.255.0
 Routing entry for 172.16.100.0/24
   Known via “eigrp 150”, distance 90, metric 3014400, type internal
@@ -1318,7 +1318,7 @@ Routing entry for 172.16.100.0/24
 
 > **注意**:该`traffic-share balanced`命令默认是开启的,且就算对其进行了显式配置,其也不会在运行配置中出现。这一点在下面进行了演示:
 
-```
+```console
 R2(config)#router eigrp 150
 R2(config-router)#vari 2
 R2(config-router)#traffic-share balanced
@@ -1339,7 +1339,7 @@ no auto-summary
 
 下面的配置示例,使用了以上图36.11中展示的拓扑,用于对如何将路由器配置为把那些度量值少于最小度量值两倍的路由,放入到路由表中,而仅使用有着最低度量值的那条路由(后继路由)来转发数据包:
 
-```
+```console
 R2(config)#router eigrp 150
 R2(config-router)#vari 2
 R2(config-router)#traffic-share min across-interfaces
@@ -1349,7 +1349,7 @@ R2(config-router)#exit
 此配置造成路由表中`172.16.100.0/24`前缀的以下输出:
 
 
-```
+```console
 R2#show ip route 172.16.100.0 255.255.255.0
 Routing entry for 172.16.100.0/24
   Known via “eigrp 150”, distance 90, metric 3014400, type internal
@@ -1390,7 +1390,7 @@ Routing entry for 172.16.100.0/24
 
 参考图36.12, 假设子网`200.10.10.0/24`是连接到互联网的。该子网位于路由器`R1`的`Fastethernet0/0`侧。路由器`R1`与`R2`相应地通过一条背靠背的串行连接相连。两台路由器都是处于EIGRP AS 150中。为了将`200.10.10.0/24`标记为最终网络,就要在路由器`R1`上进行如下配置:
 
-```
+```console
 R1(config)#router eigrp 150
 R1(config-router)#network 200.10.10.0 0.0.0.255
 R1(config-router)#exit
@@ -1400,7 +1400,7 @@ R1(config)#exit
 
 基于此配置,路由器`R2`就会将`200.10.10.0/24`作为最终网络接收下来,如下所示:
 
-```
+```console
 R2#show ip route
 Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
        D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
@@ -1421,7 +1421,7 @@ C       150.1.1.0 is directly connected, Serial0/0
 
 参考上面的图36.12, `network`命令与一条既有默认静态路由的结合使用,在以下路由器`R1`的配置中进行了演示:
 
-```
+```console
 R1(config)#ip route 0.0.0.0 0.0.0.0 FastEthernet0/0
 R1(config)#router eigrp 150
 R1(config-router)#network 0.0.0.0
@@ -1430,7 +1430,7 @@ R1(config-router)#exit
 
 基于此种配置,下面的输出,演示了路由器`R2`上的IP路由表:
 
-```
+```console
 R2#show ip route
 Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
        D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
@@ -1453,7 +1453,7 @@ D*   0.0.0.0/0 [90/2172416] via 150.1.1.1, 00:00:43, Serial0/0
 
 参考图36.13, 该图与图36.12是一样的,在路由器`R1`上完成以下配置:
 
-```
+```console
 R1(config)#ip route 0.0.0.0 0.0.0.0 FastEthernet0/0
 R1(config)#router eigrp 150
 R1(config-router)#redistribute static metric 100000 100 255 1 1500
@@ -1464,7 +1464,7 @@ R1(config-router)#exit
 
 基于此种配置,路由器`R2`上的路由表就如下所示了:
 
-```
+```console
 R2#show ip route
 Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
        D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
@@ -1482,7 +1482,7 @@ D*EX 0.0.0.0/0 [170/2195456] via 150.1.1.1, 00:01:16, Serial0/0
 
 因为该路由是在路由器`R1`上被重分发到EIGRP中的,所以如同上面所反应出的,其就是一条外部EIGRP路由了。对于那些外部路由,EIGRP拓扑表中就包含了诸如该路由所起源的路由器、该路由是为何种协议接收的,以及该外部路由的度量值等信息。下面的输出对此进行了演示:
 
-```
+```console
 R2#show ip eigrp topology 0.0.0.0/0
 IP-EIGRP (AS 150): Topology entry for 0.0.0.0/0
   State is Passive, Query origin flag is 1, 1 Successor(s), FD is 2195456
@@ -1510,7 +1510,7 @@ IP-EIGRP (AS 150): Topology entry for 0.0.0.0/0
 
 参考上面图36.13中所演示的网络拓扑图示,这里使用了接口配置命令`ip summary-address eigrp [asn] [network] [mask]`, 将路由器`R1`配置为把默认路由通告给`R2`,如下所示:
 
-```
+```console
 R1(config)#interface Serial0/0
 R1(config-if)#description ‘Back-to-Back Serial Connection To R2 Serial0/0’
 R1(config-if)#ip summary-address eigrp 150 0.0.0.0 0.0.0.0
@@ -1519,7 +1519,7 @@ R1(config-if)#exit
 
 使用这个命令的**主要优势在于,无需为了让EIGRP将网络`0.0.0.0/0`通告给邻居路由器,而将某条默认路由或某个默认网络放入到路由表中**(The primary advantage to using this command is that a default route or network does not need to exist in the routing table in order for EIGRP to advertise network `0.0.0.0/0` to its neighbour routers)。在执行了此命令后,本地路由器将生成一条到`Null0`接口的汇总路由,并将该条目标记为备选默认路由(the candidate default route)。如下所示:
 
-```
+```console
 R1#show ip route
 Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
        D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
@@ -1536,7 +1536,7 @@ D*   0.0.0.0/0 is a summary, 00:02:26, Null0
 
 于是在路由器`R2`上就作为一条内部EIGRP路由(an internal EIGRP route),接收到该汇总路由,如下所示:
 
-```
+```console
 R2#show ip route
 Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
        D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
@@ -1562,7 +1562,7 @@ D*   0.0.0.0/0 [90/2297856] via 150.1.1.1, 00:03:07, Serial0/0
 
 图36.14中的拓扑,演示了一个典型的星形网络,其中的总部路由器(router HQ)是中心路由器(the hub router), 路由器`S1`与`S2`则是分支路由器(the spoke router)。在该帧中继广域网上,每台分支路由器都有着一个在部分网状拓扑(a partial-mesh topology)中,各自与中心路由器之间的,所提供的数据链路层连接标识(Data Link Connection Identifier,这是个6位标识,表示正在进行的客户和服务器之间的连接。用于RFCOMM 层。On the Frame Relay WAN, each spoke router has a single DLCI provisioned between itself and the HQ router in a partial-mesh topology)。下面对这些路由器上的帧中继配置进行了检查:
 
-```
+```console
 HQ#show frame-relay map
 Serial0/0 (up): ip 172.16.1.2 dlci 102(0x66,0x1860), static,
               broadcast,
@@ -1590,7 +1590,7 @@ Serial0/0 (up): ip 172.16.1.3 dlci 201(0xC9,0x3090), static,
 
 在后面的广域网章节,将涉及到帧中继。这里在所有三台路由器上都开启了EIGRP,使用了自治系统编号`150`。下面的输出演示了中心路由器与分支路由器之间的EIGRP邻居关系:
 
-```
+```console
 HQ#show ip eigrp neighbors
 IP-EIGRP neighbors for process 150
 H   Address        Interface     Hold  Uptime    SRTT  RTO   Q   Seq
@@ -1601,7 +1601,7 @@ H   Address        Interface     Hold  Uptime    SRTT  RTO   Q   Seq
 
 下面的输出对第一台分支路由器`S1`与中心路由器之间的EIGRP邻居关系:
 
-```
+```console
 S1#show ip eigrp neighbors
 IP-EIGRP neighbors for process 150
 H   Address        Interface     Hold  Uptime    SRTT  RTO   Q   Seq
@@ -1611,7 +1611,7 @@ H   Address        Interface     Hold  Uptime    SRTT  RTO   Q   Seq
 
 下面的输出对第二台分支路由器`S2`与中心路由器之间的EIGRP邻居关系:
 
-```
+```console
 S2#show ip eigrp neighbors
 IP-EIGRP neighbors for process 150
 H   Address        Interface     Hold  Uptime    SRTT  RTO   Q   Seq
@@ -1623,7 +1623,7 @@ H   Address        Interface     Hold  Uptime    SRTT  RTO   Q   Seq
 
 这种默认行为意味着尽管中心路由器注意到了这两条前缀,但分支路由器却只有局部的路由表。中心路由器上的路由表如下:
 
-```
+```console
 HQ#show ip route eigrp
      10.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
 D       10.1.1.0/24 [90/2195456] via 172.16.1.1, 00:12:04, Serial0/0
@@ -1632,7 +1632,7 @@ D       10.2.2.0/24 [90/2195456] via 172.16.1.2, 00:12:06, Serial0/0
 
 分支路由器`S1`上的路由表如下:
 
-```
+```console
 S1#show ip route eigrp
      192.168.1.0/26 is subnetted, 1 subnets
 D       192.168.1.0 [90/2195456] via 172.16.1.3, 00:10:53, Serial0/0
@@ -1640,7 +1640,7 @@ D       192.168.1.0 [90/2195456] via 172.16.1.3, 00:10:53, Serial0/0
 
 分支路由器`S2`上的路由表如下:
 
-```
+```console
 S2#show ip route eigrp
      192.168.1.0/26 is subnetted, 1 subnets
 D       192.168.1.0 [90/2195456] via 172.16.1.3, 00:10:55, Serial0/0
@@ -1654,14 +1654,14 @@ D       192.168.1.0 [90/2195456] via 172.16.1.3, 00:10:55, Serial0/0
 
 通过在中心路由器的接口级别使用接口配置命令`no ip split-horizon eigrp [AS]`,就可以完成关闭水平分割。**命令`show ip split-horizon interface_name`不会显示EIGRP的水平分割状态,因为该命令是作用于RIP的**。所以要查看到EIGRP的水平分割状态,就必须对接口配置部分进行检查(也就是执行`show run interface_name`命令)。参考上面图36.14中所演示的网络拓扑,此接口配置命令就应在中心路由器上的`Serial0/0`接口上应用。应像下面这样完成:
 
-```
+```console
 HQ(config)#interface Serial0/0
 HQ(config-if)#no ip split-horizon eigrp 150
 ```
 
 在水平分割关闭后,中心路由器就可以把在某个接口上接收到的路由信息,再在该接口上发送出去了。比如,分支路由器`S2`上的路由表现在就显示了一个由分支`S1`通告给中心路由器的`10.1.1.0/24`前缀了:
 
-```
+```console
 S2#show ip route eigrp
      10.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
 D       10.1.1.0/24 [90/2707456] via 172.16.1.3, 00:00:47, Serial0/0
@@ -1671,7 +1671,7 @@ D       192.168.1.0 [90/2195456] via 172.16.1.3, 00:00:47, Serial0/0
 
 可使用一个简单的从分支路由器`S2`到`10.1.1.0/24`的`ping`操作,对连通性进行检查,如下所示:
 
-```
+```console
 S2#ping 10.1.1.2
 Type escape sequence to abort.
 Sending 5, 100-byte ICMP Echos to 10.1.1.2, timeout is 2 seconds:
@@ -1706,7 +1706,7 @@ Success rate is 100 percent (5/5), round-trip min/avg/max = 24/27/32 ms
 
 可以查看`show ip protocols`命令的输出,来对此默认行为进行验证。路由器`R1`上该命令的输出如下所示:
 
-```
+```console
 R1#show ip protocols
 Routing Protocol is “eigrp 150”
   Outgoing update filter list for all interfaces is not set
@@ -1741,7 +1741,7 @@ Routing Protocol is “eigrp 150”
 
 参考上面的打印输出,可以看到环回接口上所发出的更新,就是一种资源的浪费,因为设备是无法物理连接到路由器环回接口上去监听此类更新的(Referencing the output printed above, you can see that sending updates on a Loopback interface is a waste of resource because a device cannot be connected physically to a router Loopback interface listening for such updates)。那么就可以通告使用路由器配置命令`passive-interface`,来关闭此默认行为,如下所示:
 
-```
+```console
 R1(config)#router eigrp 150
 R1(config-router)#passive-interface Loopback1
 R1(config-router)#passive-interface Loopback2
@@ -1751,7 +1751,7 @@ R1(config-router)#exit
 
 这样的配置的结果,就是不再往这些环回发出EIGRP数据包了。因此,如下所示,汇总地址就不会在这些接口上通告出去了:
 
-```
+```console
 R1#show ip protocols
 Routing Protocol is “eigrp 150”
   Outgoing update filter list for all interfaces is not set
@@ -1787,7 +1787,7 @@ Routing Protocol is “eigrp 150”
 
 继续有关自动汇总方面的内容,在对有类边界进行自动汇总后,EIGRP就将一条到汇总地址的路由,安装到EIGRP的拓扑表与IP路由表中(Continuing with automatic summarisation, following automatic summarisation at the classful boundary, EIGRP installs a route to the summary address into the EIGRP topology table and the IP routing table)。下面的EIGRP拓扑表中就包含了此汇总地址的路由,以及更具体的路由条目以及这些路由条目各自所直接连接的接口:
 
-```
+```console
 R1#show ip eigrp topology
 IP-EIGRP Topology Table for AS(150)/ID(10.3.3.1)
 Codes: P - Passive, A - Active, U - Update, Q - Query, R - Reply,
@@ -1806,7 +1806,7 @@ P 10.1.1.0/24, 1 successors, FD is 128256
 
 在路由表中,汇总路由是直接连接到`Null0`接口上的。该路由有着一个默认为`5`的管理距离数值(a default administrative distance value of `5`)。下面的输出对此进行了演示:
 
-```
+```console
 R1#show ip route 10.0.0.0 255.0.0.0
 Routing entry for 10.0.0.0/8
   Known via “eigrp 150”, distance 5, metric 128256, type internal
@@ -1821,7 +1821,7 @@ Routing entry for 10.0.0.0/8
 
 在EIGRP完成自动汇总时,路由器将对汇总路由进行通告,从而抑制了那些更为具体路由的通告(When EIGRP performs automatic summarisation, the router advertises the summary route and suppresses the more specific routes)。换句话说,在汇总路由得以通告时,那些更为具体的前缀,在发往EIGRP邻居的更新中就被省略了(the more specific prefixes are suppressed in updates to EIGRP neighbours)。这一点可通过查看路由器`R2`上的路由表,加以验证,如下所示:
 
-```
+```console
 R2#show ip route eigrp
 D    10.0.0.0/8 [90/2298856] via 150.1.1.1, 00:29:05, Serial0/0
 ```
@@ -1837,14 +1837,14 @@ D    10.0.0.0/8 [90/2298856] via 150.1.1.1, 00:29:05, Serial0/0
 
 因为两台路由器就只把汇总地址通告给对方,所以两台路由器都将无法到达对方的`10.x.x.x/24`子网。为掌握到图36.16所演示网络中自动汇总的衍生问题(ramifications),下面从在路由器`R1`及`R2`上的配置开始,一次一步的走一下这些步骤,如下所示:
 
-```
+```console
 R1(config)#router eigrp 150
 R1(config-router)#network 10.1.1.0 0.0.0.255
 R1(config-router)#network 150.1.1.0 0.0.0.255
 R1(config-router)#exit
 ```
 
-```
+```console
 R2(config)#router eigrp 150
 R2(config-router)#network 10.2.2.0 0.0.0.255
 R2(config-router)#network 150.1.1.0 0.0.0.255
@@ -1853,7 +1853,7 @@ R2(config-router)#exit
 
 因为两台路由器上有类边界处的自动汇总都是默认开启的,所以这两台路由器都将生成两个汇总地址:一个是`10.0.0.0/8`的,另一个是`150.1.0.0/16`的(Because automatic summarisation at the classful boundary is enabled by default on both of the routers, they will both generate two summary addresses: one for `10.0.0.0/8` and another for `150.1.0.0/16`)。这两个汇总地址都将指向到`Null0`接口,同时路由器`R1`上的路由表将显示下面这些条目:
 
-```
+```console
 R1#show ip route eigrp
      10.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
 D       10.0.0.0/8 is a summary, 00:04:51, Null0
@@ -1863,7 +1863,7 @@ D       150.1.0.0/16 is a summary, 00:06:22, Null0
 
 与此类似,路由器`R2`上反应了同样的情况,如下所示:
 
-```
+```console
 R2#show ip route eigrp
      10.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
 D       10.0.0.0/8 is a summary, 00:01:58, Null0
@@ -1873,7 +1873,7 @@ D       150.1.0.0/16 is a summary, 00:01:58, Null0
 
 虽然汇总地址`150.1.0.0/16`被安装到了IP路由表中,路由器`R1`与`R2`是仍可`ping`通对方的,因为这里的更为具体路由条目(the more route-specific entry, `150.1.1.0/24`)是位处于直连接口之上的。可通过执行`show ip route [address] [mask] longer-prefixes`命令,来查看到这些某个汇总路由中的详细条目。下面演示了对于`150.1.0.0/16`汇总,该命令的输出:
 
-```
+```console
 R1#show ip route 150.1.0.0 255.255.0.0 longer-prefixes
 Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
        D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
@@ -1890,7 +1890,7 @@ D       150.1.0.0/16 is a summary, 00:10:29, Null0
 
 因为那条更详细的`150.1.1.0/24`路由条目是存在的,所以发送到`150.1.1.2`地址的数据包将经由`Serial0/0`接口加以转发。这就令到路由器`R1`与`R2`的连通性没有问题,如下所示:
 
-```
+```console
 R1#ping 150.1.1.2
 Type escape sequence to abort.
 Sending 5, 100-byte ICMP Echos to 150.1.1.2, timeout is 2 seconds:
@@ -1902,7 +1902,7 @@ Success rate is 100 percent (5/5), round-trip min/avg/max = 1/3/4 ms
 
 那么到这里,一切都说得通了(So far, everything appears to be in order)。可以看出,因为大的`150.1.0.0/16`网络的这条更具体路由条目(`150.1.1.0/24`)的存在,路由器`R1`与`R2`之间是能`ping`通的。不过问题在于路由器`R1`与`R2`上大的网络`10.0.0.0/8`的那些子网。路由器`R1`(的路由表)显示出下面其生成的`10.0.0.0/8`汇总地址的具体路由条目:
 
-```
+```console
 R1#show ip route 10.0.0.0 255.0.0.0 longer-prefixes
 Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
        D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
@@ -1919,7 +1919,7 @@ D       10.0.0.0/8 is a summary, 00:14:23, Null0
 
 于此类似,路由器`R2`(的路由表)显示出其生成的`10.0.0.0/8`汇总地址的以下具体路由条目:
 
-```
+```console
 R2#show ip route 10.0.0.0 255.0.0.0 longer-prefixes
 Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
        D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
@@ -1936,7 +1936,7 @@ D       10.0.0.0/8 is a summary, 00:14:23, Null0
 
 可以看出,两台路由器都没有到对方的`10.x.x.x/24`子网的路由。假设在路由器`R1`尝试往`10.2.2.0/24`发送数据包时,将使用那个汇总地址,那么数据包就将转发到`Null0`接口。下面的输出对此进行了演示:
 
-```
+```console
 R1#show ip route 10.2.2.0
 Routing entry for 10.0.0.0/8
   Known via “eigrp 150”, distance 5, metric 28160, type internal
@@ -1951,7 +1951,7 @@ Routing entry for 10.0.0.0/8
 
 路由器`R1`将无法`ping`通`R2`上的`10.x.x.x/24`子网,反之亦然,如下所示:
 
-```
+```console
 R1#ping 10.2.2.2
 Type escape sequence to abort.
 Sending 5, 100-byte ICMP Echos to 10.2.2.2, timeout is 2 seconds:
@@ -1966,13 +1966,13 @@ Success rate is 0 percent (0/5)
 
 第一个选项是相当简单粗暴基础的(very basic)。但是,静态路由配置不具备可伸缩性,且在大型网络中需要大量费时费力的配置。而第二选项,也就是**推荐做法**,除了具备伸缩性,比起第一选项只需较少的时间精力。**通过执行`no auto-summary`命令**,就可将自动汇总予以关闭(**较新版本的IOS中,该特性已被默认关闭了**), 如下所示:
 
-```
+```console
 R1(config)#router eigrp 150
 R1(config-router)#no auto-summary
 R1(config-router)#exit
 ```
 
-```
+```console
 R2(config)#router eigrp 150
 R2(config-router)#no auto-summary
 R2(config-router)#exit
@@ -1980,7 +1980,7 @@ R2(config-router)#exit
 
 此配置的结果,就是大的网络上的那些具体子网,在两台路由器上都有通告。不会生成汇总路由,如下所示:
 
-```
+```console
 R2#show ip route eigrp
      10.0.0.0/24 is subnetted, 2 subnets
 D       10.1.1.0 [90/2172416] via 150.1.1.1, 00:01:17, Serial0/0
@@ -1988,7 +1988,7 @@ D       10.1.1.0 [90/2172416] via 150.1.1.1, 00:01:17, Serial0/0
 
 这些`10.x.x.x/24`子网之间的连通性,可使用一个简单的`ping`操作,加以验证,如下所示:
 
-```
+```console
 R2#ping 10.1.1.1 source 10.2.2.2 repeat 10
 Type escape sequence to abort.
 Sending 10, 100-byte ICMP Echos to 10.1.1.1, timeout is 2 seconds:
@@ -2004,7 +2004,7 @@ Success rate is 100 percent (10/10), round-trip min/avg/max = 1/3/4 ms
 
 参考图36.17, 路由器`R1`正在进行重分发(redistributing, 这令到这些网络成为外部的网络),并在随后将外部网络`10.0.0.0/24`、`10.1.1.0/24`、`10.2.2.0/24`与`10.3.3.0/24`这些外部网络经由EIGRP进行通告。路由器`R1`上开启了自动路由汇总。路由器`R1`上的初始配置是下面这样的:
 
-```
+```console
 R1(config)#router eigrp 150
 R1(config-router)#redistribute connected metric 8000000 5000 255 1 1514
 R1(config-router)#network 150.1.1.1 0.0.0.0
@@ -2013,7 +2013,7 @@ R1(config-router)#exit
 
 `show ip protocols`命令显示出路由器`R1`的`Serial0/0`接口上开启了EIGRP, 同时正通告着那些连接的网络。同时自动汇总是开启的,如下所示:
 
-```
+```console
 R1#show ip protocols
 Routing Protocol is “eigrp 150”
   Outgoing update filter list for all interfaces is not set
@@ -2037,7 +2037,7 @@ Gateway             Distance        Last Update
 
 就像前面输出示例所演示的那样, 因为这些`10.x.x.x/24`前缀都是外部路由,所以EIGRP不会对这些前缀进行自动汇总。又因此EIGRP不会往拓扑表,也不会往IP路由表中添加一条这些前缀的汇总路由。下面的输出对此进行了演示:
 
-```
+```console
 R1#show ip eigrp topology
 IP-EIGRP Topology Table for AS(150)/ID(10.3.3.1)
 Codes: P - Passive, A - Active, U - Update, Q - Query, R - Reply,
@@ -2057,7 +2057,7 @@ P 10.3.3.0/24, 1 successors, FD is 1280256
 
 这些具体路由条目,是作为外部EIGRP路由,通告给路由器`R2`的,如下所示:
 
-```
+```console
 R2#show ip route eigrp
      10.0.0.0/24 is subnetted, 4 subnets
 D EX    10.3.3.0 [170/3449856] via 150.1.1.1, 00:07:02, Serial0/0
@@ -2068,7 +2068,7 @@ D EX    10.0.0.0 [170/3449856] via 150.1.1.1, 00:07:02, Serial0/0
 
 现在,假设`10.0.0.0/24`是一个内部网络,而`10.1.1.0/24`、`10.2.2.0/24`与`10.3.3.0/24`三个子网却是外部网络。因为这些将构成有类汇总地址`10.0.0.0/8`的路由中有一条是内部路由,所以EIGRP将创建出一个汇总地址,并将其包含在EIGRP拓扑表与IP路由表中。命令`show ip protocols`显示出`10.0.0.0/24`网络此时就是一个内部EIGRP网络了,如下所示:
 
-```
+```console
 R1#show ip protocols
 Routing Protocol is “eigrp 150”
   Outgoing update filter list for all interfaces is not set
@@ -2099,7 +2099,7 @@ Routing Protocol is “eigrp 150”
 
 在上面的输出中,EIGRP的自动汇总,已经生成一个`10.0.0.0/8`的汇总地址,因为`10.0.0.0/24`这个内部子网是该聚合地址(the aggregate address)的一部分。而EIGRP的拓扑表,将显示出这些外部与内部条目,以及生成的汇总地址,如下所示:
 
-```
+```console
 R1#show ip eigrp topology
 IP-EIGRP Topology Table for AS(150)/ID(10.3.3.1)
 Codes: P - Passive, A - Active, U - Update, Q - Query, R - Reply,
@@ -2121,14 +2121,14 @@ P 10.3.3.0/24, 1 successors, FD is 1280256
 
 此时,就仅有一条路由通告给路由器`R2`了,如下面的输出所示:
 
-```
+```console
 R2#show ip route eigrp
 D    10.0.0.0/8 [90/2297856] via 150.1.1.1, 00:04:05, Serial0/0
 ```
 
 从路由器`R2`的角度看,该路由就是一条简单的内部EIGRP路由。也就是说,路由器`R2`并不知道这个汇总地址还有着一些外部路由,如下所示:
 
-```
+```console
 R2#show ip route 10.0.0.0 255.0.0.0
 Routing entry for 10.0.0.0/8
   Known via “eigrp 150”, distance 90, metric 2297856, type internal
@@ -2144,7 +2144,7 @@ Routing entry for 10.0.0.0/8
 
 经由所接收到的这条汇总路由,路由器`R2`是可以同时到达这个内部的`10.0.0.0/24`与那些其它的外部`10.x.x.x/24`网络,如下所示:
 
-```
+```console
 R2#ping 10.0.0.1
 Type escape sequence to abort.
 Sending 5, 100-byte ICMP Echos to 10.0.0.1, timeout is 2 seconds:
@@ -2201,7 +2201,7 @@ Success rate is 100 percent (5/5), round-trip min/avg/max = 1/3/4 ms
 
 基于路由器`R1`上所配置的接口,`R2`上的路由表将显示出以下条目:
 
-```
+```console
 R2#show ip route eigrp
      10.0.0.0/24 is subnetted, 4 subnets
 D       10.3.3.0 [90/2297856] via 150.1.1.1, 00:00:14, Serial0/0
@@ -2212,7 +2212,7 @@ D       10.0.0.0 [90/2297856] via 150.1.1.1, 00:00:14, Serial0/0
 
 为将路由器`R1`上的这些路由条目进行汇总并通告出一条单一的特定(译者注,这里可能是“汇总”,而不是具体(specific))路由,就要在`R1`的`Serial0/0`接口上应用如下配置:
 
-```
+```console
 R1(config)#interface Serial0/0
 R1(config-if)#ip summary-address eigrp 150 10.0.0.0 255.252.0.0
 R1(config-if)#exit
@@ -2220,7 +2220,7 @@ R1(config-if)#exit
 
 在此配置下,该汇总条目`10.0.0.0/14`就将被安装到路由器`R1`的EIGRP拓扑表与IP路由表中。该EIGRP拓扑表条目如下所示:
 
-```
+```console
 R1#show ip eigrp topology
 IP-EIGRP Topology Table for AS(150)/ID(10.3.3.1)
 Codes: P - Passive, A - Active, U - Update, Q - Query, R - Reply,
@@ -2241,7 +2241,7 @@ P 10.1.1.0/24, 1 successors, FD is 128256
 
 而该路由表条目,也同样反应出来此汇总路由的下一跳接口为`Null0`, 如下所示:
 
-```
+```console
 R1#show ip route
 Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
        D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
@@ -2265,7 +2265,7 @@ C       150.2.2.0 is directly connected, Serial0/1
 
 可再次使用`show ip route [address] [mask] longer-prefixes`命令,来查看组成该聚合或者说汇总路由的那些具体路由条目,如下面路由器`R1`上的输出所示:
 
-```
+```console
 R1#show ip route 10.0.0.0 255.252.0.0 longer-prefixes
 Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
        D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
@@ -2285,7 +2285,7 @@ D       10.0.0.0/14 is a summary, 00:04:03, Null0
 
 而在路由器`R2`上,则接收到汇总地址`10.0.0.0/14`的一条单一的路由条目,如下所示:
 
-```
+```console
 R2#show ip route eigrp
      10.0.0.0/14 is subnetted, 1 subnets
 D       10.0.0.0 [90/2297856] via 150.1.1.1, 00:06:22, Serial0/0
@@ -2293,7 +2293,7 @@ D       10.0.0.0 [90/2297856] via 150.1.1.1, 00:06:22, Serial0/0
 
 为加强该汇总路由度量值概念,这里假设路由器`R1`上的那些路由都是有着不同度量值的外部路由(也就是说,这些路由是已被重分发到EIGRP中的)。那么`R1`上的EIGRP拓扑表,将显示以下条目:
 
-```
+```console
 R1#show ip eigrp topology
 IP-EIGRP Topology Table for AS(150)/ID(10.3.3.1)
 Codes: P - Passive, A - Active, U - Update, Q - Query, R - Reply,
@@ -2312,7 +2312,7 @@ P 10.3.3.0/24, 1 successors, FD is 1377792
 
 此时再度在路由器`R1`上做先前示例中的相同汇总地址配置,如下所示:
 
-```
+```console
 R1(config)#int s0/0
 R1(config-if)#ip summary-address eigrp 150 10.0.0.0 255.252.0.0
 R1(config-if)#exit
@@ -2320,7 +2320,7 @@ R1(config-if)#exit
 
 那么基于此配置,该汇总路由就以它所包含的所有路由中的最小度量值,而放入到EIGRP拓扑表和IP路由表中(Based on this configuration, the summary route is placed into the EIGRP topology table and the IP routing table with a metric equal to the lowest metric of all routes that it encompasses)。而根据前面所展示的`show ip eigrp topology`命令的输出,该汇总地址将获得到与`10.3.3.0/24`前缀相同的度量值,如下所示:
 
-```
+```console
 R1#show ip eigrp topology
 IP-EIGRP Topology Table for AS(150)/ID(10.3.3.1)
 Codes: P - Passive, A - Active, U - Update, Q - Query, R - Reply,
@@ -2347,7 +2347,7 @@ P 150.1.1.0/24, 1 successors, FD is 2169856
 
 思科IOS软件允许管理员使用**路由器配置命令`passive-interface [name|default]`**, 将命名的接口(the named interface)或把所有接口,指定为被动模式。从而不会在这些被动接口上发出EIGRP数据包; 在这些被动接口之间,就绝对不会建立邻居关系了。下面的输出演示了在路由器上如何将两个开启了EIGRP的接口,配置为被动模式:
 
-```
+```console
 R1(config)#interface Loopback0
 R1(config-if)#ip address 10.0.0.1 255.255.255.0
 R1(config-if)#exit
@@ -2369,7 +2369,7 @@ R1(config-router)#exit
 
 基于此种配置,逻辑接口`Loopback0`与`Loopback1`是开启了EIGRP路由的,它们上面的直连网络将被通告给EIGRP邻居。但路由器`R1`是不会将EIGRP数据包从这两个接口发出去的。另一方面,接口`Serial0/0`上也配置上了EIGRP路由,不过这里是允许EIGRP在此接口上发出数据包的,因为它不是一个被动接口。所有三个网络都是安装到EIGRP路由表中的,如下所示:
 
-```
+```console
 R1#show ip eigrp topology
 IP-EIGRP Topology Table for AS(150)/ID(10.3.3.1)
 Codes: P - Passive, A - Active, U - Update, Q - Query, R - Reply,
@@ -2384,7 +2384,7 @@ P 150.1.1.0/24, 1 successors, FD is 2169856
 
 但`show ip eigrp interfaces`显示EIGRP路由只是对`Serial0/0`接口是开启的,如下所示:
 
-```
+```console
 R1#show ip eigrp interfaces
 IP-EIGRP interfaces for process 150
                       Xmit Queue   Mean    Pacing Time     Multicast     Pending
@@ -2394,7 +2394,7 @@ Se0/0            1        0/0        0        0/15             0            0
 
 也可在`show ip protocols`命令的输出中查看到那些配置为被动模式的接口,如下所示:
 
-```
+```console
 R1#show ip protocols
 Routing Protocol is “eigrp 150”
   Outgoing update filter list for all interfaces is not set
@@ -2422,7 +2422,7 @@ Routing Protocol is “eigrp 150”
 
 路由器配置命令`passive-interface [name|default]`中的`[default]`关键字令到所有接口,都成为被动模式。先假设路由器上配置了50个的环回接口。如打算将每个环回接口都配置为被动模式,那么就需要50行的代码。而这时就可以使用`passive-interface default`命令,来令到所有接口都成为被动接口了。对于那些确实想要发出EIGRP数据包的接口,就可使用`no passive-interface [name]`命令进行配置。下面对`passive-interface default`命令的用法进行了演示:
 
-```
+```console
 R1(config)#interface Loopback0
 R1(config-if)#ip address 10.0.0.1 255.255.255.0
 R1(config-if)#exit
@@ -2450,7 +2450,7 @@ R1(config-router)#exit
 
 这里可以再度使用`show ip protocols`命令,来查看哪些接口是处于EIGRP下的被动模式的,如下所示:
 
-```
+```console
 R1#show ip protocols
 Routing Protocol is “eigrp 150”
   Outgoing update filter list for all interfaces is not set
@@ -2483,7 +2483,7 @@ Routing Protocol is “eigrp 150”
 
 这里通过使用`passive-interface default`命令,令到多个被动接口的配置就得以简化,并减少了代码。而当其与`no passive-interface Serial0/0`一起使用时,EIGRP数据包仍旧在接口`Serial0/0`上发出,从而允许EIGRP邻居关系通过此接口建立起来,如下所示:
 
-```
+```console
 R1#show ip eigrp neighbors
 IP-EIGRP neighbors for process 150
 H   Address      Interface  Hold  Uptime    SRTT  RTO    Q      Seq
@@ -2499,7 +2499,7 @@ H   Address      Interface  Hold  Uptime    SRTT  RTO    Q      Seq
 
 在确定RID时,**EIGRP将选取路由器上所配置的IP地址中最高的作为RID**。**但如果在路由器上配置了环回接口,那么将优先选取这些接口,因为环回接口是路由器上存在的最稳定接口**。除非将EIGRP进程移除,那么RID随后就绝不会变化了(也就是,假如RID是手动配置的情况)。RID始终会在EIGRP拓扑表中列出,如下所示:
 
-```
+```console
 R1#show ip eigrp topology
 IP-EIGRP Topology Table for AS(150)/ID(10.3.3.1)
 Codes: P - Passive, A - Active, U - Update, Q - Query, R - Reply,
@@ -2520,7 +2520,7 @@ P 150.1.1.0/24, 1 successors, FD is 2169856
 
 EIGRP的路由器ID(RID)是通过路由器配置命令`eigrp router-id [address]`进行配置的。在输入了此命令后,RID就以这个新地址,在EIGRP的拓扑表中得以更新。为对此进行演示,这里就以查看路由器上的当前RID开始,如下面的拓扑表中所指出的:
 
-```
+```console
 R1#show ip eigrp topology
 IP-EIGRP Topology Table for AS(150)/ID(10.3.3.1)
 Codes: P - Passive, A - Active, U - Update, Q - Query, R - Reply,
@@ -2531,7 +2531,7 @@ Codes: P - Passive, A - Active, U - Update, Q - Query, R - Reply,
 
 现在路由器上配置一个`1.1.1.1`的RID,如下所示:
 
-```
+```console
 R1(config)#router eigrp 150
 R1(config-router)#eigrp router-id 1.1.1.1
 R1(config-router)#
@@ -2541,7 +2541,7 @@ R1(config-router)#
 
 伴随这个改变,EIGRP邻居关系就被重置了,同时在EIGRP拓扑表中立即反映出了这个新的RID,如下所示:
 
-```
+```console
 R1#show ip eigrp topology
 IP-EIGRP Topology Table for AS(150)/ID(1.1.1.1)
 Codes: P - Passive, A - Active, U - Update, Q - Query, R - Reply,
@@ -2557,7 +2557,7 @@ Codes: P - Passive, A - Active, U - Update, Q - Query, R - Reply,
 
 现在,源自该路由器的所有外部路由,就都包含了这个EIGRP路由器ID了。在下面的邻居路由器`R2`输出中,就可对此进行验证:
 
-```
+```console
 R2#show ip eigrp topology 192.168.254.0/24
 IP-EIGRP (AS 150): Topology entry for 192.168.254.0/24
   State is Passive, Query origin flag is 1, 1 Successor(s), FD is 7289856
@@ -2580,7 +2580,7 @@ IP-EIGRP (AS 150): Topology entry for 192.168.254.0/24
 
 而对于内部EIGRP路由,则是不包含RID的,如下面的输出所示:
 
-```
+```console
 R2#show ip eigrp topology 10.3.3.0/24
 IP-EIGRP (AS 150): Topology entry for 10.3.3.0/24
   State is Passive, Query origin flag is 1, 1 Successor(s), FD is 2297856
@@ -2639,7 +2639,7 @@ IP-EIGRP (AS 150): Topology entry for 10.3.3.0/24
 1. 基于上面的拓扑,配置上所有IP地址。确保可以经由串行链路`ping`通。
 2. 在两台路由器上以自治系统编号30, 配置EIGRP。
 
-```
+```console
 RouterA(config)#router eigrp 30
 RouterA(config-router)#net 172.20.0.0
 RouterA(config-router)#net 10.0.0.0
@@ -2656,7 +2656,7 @@ RouterB(config-router)#net 192.168.1.0
 
 3. 对两台路由器上的路由表分别进行检查。
 
-```
+```console
 RouterA#sh ip route
 Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP
        D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
@@ -2676,7 +2676,7 @@ D    192.168.1.0/24 [90/20640000] via 10.0.0.2, 00:00:49, Serial0/1/0
 RouterA#
 ```
 
-```
+```console
 RouterB#show ip route
 ...
 [Truncated Output]
@@ -2693,7 +2693,7 @@ RouterB#
 
 4. 查明两台路由器都对各个网络进行着自动汇总。并于随后在路由器B上关闭自动汇总。
 
-```
+```console
 RouterB#show ip protocols
 Routing Protocol is “eigrp 30”
   Outgoing update filter list for all interfaces is not set
@@ -2724,7 +2724,7 @@ RouterB(config-router)#no auto-summary
 
 5. 对路由器A上的路由表进行检查。
 
-```
+```console
 RouterA#show ip route
 ...
 [Truncated Output]
diff --git a/d37-Troubleshooting-EIGRP.md b/d37-Troubleshooting-EIGRP.md
index a2a51fa..3e6d641 100644
--- a/d37-Troubleshooting-EIGRP.md
+++ b/d37-Troubleshooting-EIGRP.md
@@ -46,7 +46,7 @@
 
 非同一子网问题,是在尝试建立EIGRP邻居关系时,所遇到的最常见故障之一。而在因为子网不一致造成EIGRP无法建立邻居关系时,将有下面的消息在控制台上打印出来,或是被路由器、交换机所记录(Uncommon subnet issues are one of the most common problems experienced when attempting to establish EIGRP neighbour relationships. When EIGRP cannot establish a neighbour relationship because of an uncommon subnet, the following error message will be printed on the console, or will be logged by the router or switch):
 
-```
+```console
 *Mar 2 22:12:46.589 CST: IP-EIGRP(Default-IP-Routing-Table:1): Neighbor 150.1.1.2 not on common subnet for FastEthernet0/0
 *Mar 2 22:12:50.977 CST: IP-EIGRP(Default-IP-Routing-Table:1): Neighbor 150.1.1.2 not on common subnet for FastEthernet0/0
 ```
@@ -55,7 +55,7 @@
 
 导致报出上面错误消息的另一常见原因,就是**在尝试建立EIGRP邻居关系时,采用的是接口的从地址**(secondary addresses)。解决此类故障的最简单方式,同样是对路由器或交换机的配置进行检查。比如,假定上面的错误消息是在本地路由器控制台上打印出来的,那么故障排除的第一步,就是检查配置在接口上的IP地址,如下所示:
 
-```
+```console
 R1#show running-config interface FastEthernet0/0
 Building configuration...
 Current configuration : 140 bytes
@@ -69,7 +69,7 @@ end
 
 接着,就要验证到有着IP地址`150.1.1.2`的设备上的配置是一致的,如下所示:
 
-```
+```console
 R2#show running-config interface FastEthernet0/0
 Building configuration...
 Current configuration : 140 bytes
@@ -84,7 +84,7 @@ end
 
 从上面的输出可以看到,路由器R1上的主要子网(the primary subnet),却是本地路由器(R2)上的第二子网(the secondary subnet)。在使用从地址时,EIGRP是无法建立邻居关系的。该故障的解决方法,就是简单地将路由器R2的`Fastethernet0/0`接口的IP分址配置(the IP addressing configuration)予以更正即可,如下所示:
 
-```
+```console
 R2#config terminal
 Enter configuration commands, one per line.
 End with CNTL/Z.
@@ -97,7 +97,7 @@ R2(config-if)#end
 
 而EIGRP的那些K值,则是用于给路径的不同方面,比如带宽、延迟等可能包含在EIGRP复合度量值中的参数,进行权重分配的。这里再度说明一下,默认的K值为:`K1=K3=1`及`K2=K4=K5=0`。如在某台路由器或交换机上对这些K值进行了修改,那么就必须对自治系统中所有其它路由器或交换机上的K值做同样修改。使用`show ip protocols`命令,就可查看到默认EIGRP的那些K值,如下所示:
 
-```
+```console
 R1#show ip protocols
 Routing Protocol is “eigrp 150”
   Outgoing update filter list for all interfaces is not set
@@ -124,7 +124,7 @@ Routing Protocol is “eigrp 150”
 
 在某台路由器上的K值被重置后,那么该本地路由器的所有邻居关系都将被重置。而如果在重置后所有路由器上的这些K值出现不一致,那么控制台上将打印出下面的错误消息,同时EIGRP邻居关系将不会建立:
 
-```
+```console
 *Oct 20 03:19:14.140 CST: %DUAL-5-NBRCHANGE: IP-EIGRP(0) 1: Neighbor 150.2.2.1 (FastEthernet0/0) is down: Interface Goodbye received
 *Oct 20 03:19:18.732 CST: %DUAL-5-NBRCHANGE: IP-EIGRP(0) 1: Neighbor 150.2.2.1 (FastEthernet0/0) is down: K-value mismatched
 ```
@@ -135,7 +135,7 @@ Routing Protocol is “eigrp 150”
 
 **配置不当的访问控制清单(ACLs)与其它过滤器(filters)同样也是造成路由器建立EIGRP邻居关系失败的常见原因**。这时就要对路由器配置和其它中间设备进行检查,以确保EIGRP或多播数据包未被过滤掉。要用到的一个非常有用的故障排除命令,就是`show ip eigrp traffic`了。此命令提供了所有EIGRP数据包的统计信息。比如假设这里已经对基本的连通性(能`ping`通)及两台设备之间的配置进行了验证,但EIGRP邻居关系仍然没有建立。那么在此情况下,就可以在本地设备上开启调试(enabling debugging on the local device)之前,使用该命令检查看看路由器是否有Hello数据包的交换,如下所示:
 
-```
+```console
 R2#show ip eigrp traffic
 IP-EIGRP Traffic Statistics for AS 2
   Hellos sent/received: 144/0
@@ -153,7 +153,7 @@ IP-EIGRP Traffic Statistics for AS 2
 
 在上面的输出中,注意虽然该本地路由器已发出144个Hello数据包, 但其尚未收到任何的Hello数据包。假设已验证了两台设备之间有着连通性及各自配置,那么就应对本地路由器与中间设备(在适用时)上的访问控制清单配置进行检查,以确保EIGRP或多播数据包未被过滤掉。比如,可能发现有着一条ACL配置为拒绝所有D类与E类流量,而放行所有其它流量,譬如下面的ACL:
 
-```
+```console
 R2#show ip access-lists
 Extended IP access list 100
     10 deny ip 224.0.0.0 15.255.255.255 any
@@ -165,7 +165,7 @@ Extended IP access list 100
 
 最后,一些常见的认证配置错误,包括在配置密钥链时使用了不同密钥ID,以及指定了不同或不匹配的口令等(Finally, common authentication configuration mistakes include using different key IDs when configuring key chains and specifying different or mismatched password)。在某个接口下开启了认证时,EIGRP邻居关系将被重置并被重新初始化。如在部署认证之后,原本已建立的邻居关系未能再度建立,那么就要通过在路由器上观察运行配置,或使用`show key chain`及`show ip eigrp interfaces detail [name]`命令,来对各项认证参数进行检查。下面是由`show key chain`命令所打印出来的示例输出:
 
-```
+```console
 R2#show key chain
 Key-chain EIGRP-1:
     key 1 -- text “eigrp-1”
@@ -183,7 +183,7 @@ Key-chain EIGRP-3:
 
 以下是由`show ip eigrp interfaces detail [name]`命令所打印出的示例信息输出:
 
-```
+```console
 R2#show ip eigrp interfaces detail Serial0/0
 IP-EIGRP interfaces for process 1
                         Xmit Queue   Mean   Pacing Time    Multicast    Pending
@@ -220,7 +220,7 @@ Se0/0              0        0/0        0        0/1             0           0
 
 参考图37.1中所演示的图示,子网`150.1.1.0/30`将`10.1.1.0/24`与`10.2.2.0/24`分离开来。在开启了自动汇总时,路由器`R1`与`R2`都将相应地把`10.1.1.0/24`与`10.2.2.0/24`汇总到`10.0.0.0/8`。该汇总路由将以`5`的管理距离及下一跳接口`Null0`,被安装到路由表中。此较低的管理距离值,将阻止两台路由器对来自其它路由器的该`10.0.0.0/8`汇总的接收与安装,如下面的输出所示:
 
-```
+```console
 R2#debug eigrp fsm
 EIGRP FSM Events/Actions debugging is on
 R2#
@@ -239,7 +239,7 @@ R2#
 
 EIGRP路由器ID(RID)的主要用途,就是阻止路由环回的形成。RID用于识别外部路由的始发路由器(The RID is used to identify the originating router for external routes)。假如接收到一条有着与本地路由器相同RID的外部路由,该路由将被丢弃。不过重复的路由器ID,却并不会影响到任何内部EIGRP路由。设计此特性的目的,就是降低那些有着多台自治系统边界路由器(AS Boundary Router, ASBR)进行路由重分发的网络出现路由环回的可能性。在`show ip eigrp topology`命令的输出中,便可查看到始发路由器ID(The primary use of the EIGRP router ID(RID) is to prevent routing loops. The RID is used to identify the originating router for external routes. If an external route is received with the same RID as the local router, the route will be discarded. However, duplicate RIDs do not affect any internal EIGRP routes. This feature is designed to reduce the possibility of routing loops in networks where route redistribution is being performed on more than on ASBR. The originating RID can be viewed in the output of the `show ip eigrp topology` command),如下所示:
 
-```
+```console
 R1#show ip eigrp topology 2.2.2.2 255.255.255.255
 IP-EIGRP (AS 1): Topology entry for 2.2.2.2/32
   State is Passive, Query origin flag is 1, 1 Successor(s), FD is 156160
@@ -262,7 +262,7 @@ IP-EIGRP (AS 1): Topology entry for 2.2.2.2/32
 
 如怀疑存在潜在的RID重复故障,就可以对EIGRP事件日志中的事件进行检查,看看是否有任何路由因为RID重复而被拒绝。下面的示例演示了该EIGRP事件日志的输出样例,显示出一些因为从某台与本地路由器有着相同RID的路由器接收,而被弹回的路由(If you suspect a potential duplicate RID issue, you can check the events in the EIGRP event log to see if any routes have been rejected because of a duplicate RID. The following illustrates a sample output of the EIGRP event log, showing routes that have been rejected because they were received from a router with the same RID as the local router):
 
-```
+```console
 R2#show ip eigrp events
 Event information for AS 1:
 ...
@@ -330,7 +330,7 @@ Event information for AS 1:
 
 参考图37.4, 所有路由器都位于EIGRP自治系统`150`中。`R2`正经由EIGRP对`10.1.1.0/24`、`10.1.2.0/24`与`10.1.3.0/24`子网进行通告。而`R1`也有着一个分配给子网`10.1.0.0/24`的接口,其就应相应地将这些子网通告给`R3`(`R1`, which also has an interface assigned to the `10.1.0.0/24` subnet, should in turn advertise these subnets to `R3`)。路由器`R2`上的EIGRP配置已作如下部署:
 
-```
+```console
 R2(config)#router eigrp 150
 R2(config-router)#network 10.1.1.0 0.0.0.255
 R2(config-router)#network 10.1.2.0 0.0.0.255
@@ -342,7 +342,7 @@ R2(config-router)#exit
 
 而`R1`上的EIGRP则是部署如下:
 
-```
+```console
 R1(config)#router eigrp 150
 R1(config-router)#network 10.1.0.0 0.0.0.255
 R1(config-router)#network 172.16.0.0 0.0.0.3
@@ -352,7 +352,7 @@ R1(config-router)#exit
 
 最后,`R3`上的EIGRP配置部署如下:
 
-```
+```console
 R3(config)#router eigrp 150
 R3(config-router)#network 172.16.0.0 0.0.0.3
 R3(config-router)#no auto-summary
@@ -361,7 +361,7 @@ R3(config-router)#exit
 
 在此种配置之后,`R2`上的路由表显示出以下条目:
 
-```
+```console
 R2#show ip route eigrp
      172.16.0.0/30 is subnetted, 2 subnets
 D       172.16.0.0 [90/2172416] via 172.16.1.1, 00:02:38, FastEthernet0/0
@@ -371,7 +371,7 @@ D       10.0.0.0/8 [90/156160] via 172.16.1.1, 00:00:36, FastEthernet0/0
 
 `R1`上的路由表显示以下条目:
 
-```
+```console
 R1#show ip route eigrp
      172.16.0.0/16 is variably subnetted, 3 subnets, 2 masks
 D       172.16.0.0/16 is a summary, 00:01:01, Null0
@@ -385,7 +385,7 @@ D       10.0.0.0/8 is a summary, 00:01:01, Null0
 
 最后,`R3`上的路由表显示以下条目:
 
-```
+```console
 R3#show ip route eigrp
      172.16.0.0/30 is subnetted, 2 subnets
 D       172.16.1.0 [90/2172416] via 172.16.0.1, 00:21:21, Serial0/0
@@ -395,7 +395,7 @@ D       10.0.0.0/8 [90/2297856] via 172.16.0.1, 00:01:15, Serial0/0
 
 因为在`R1`上汇总是开启的,就出现了EIGRP不再通告由**汇总路由**`10.0.0.0/8`所包含的那些具体子网的情况了(Because summarisation is enabled on `R1`, it appears that the EIGRP is no longer advertising the specific subnets encompassed by the `10.0.0.0/8` **summary**)。而要允许这些具体子网通过EIGRP得以通告,就应在`R1`上将汇总关闭,如下所示:
 
-```
+```console
 R1(config)#router eigrp 150
 R1(config-router)#no auto-summary
 R1(config-router)#exit
@@ -403,7 +403,7 @@ R1(config-router)#exit
 
 这么做之后,`R3`上的路由表将显示如下的路由条目:
 
-```
+```console
 R3#show ip route eigrp
      172.16.0.0/30 is subnetted, 2 subnets
 D       172.16.1.0 [90/2172416] via 172.16.0.1, 00:00:09, Serial0/0
@@ -416,7 +416,7 @@ D       10.1.0.0 [90/2297856] via 172.16.0.1, 00:00:09, Serial0/0
 
 同样的情况对于`R2`也将适用,`R2`上的路由表现在将显示出子网`10.1.0.0/24`与`10.3.0.0/24`的具体条目,如下所示:
 
-```
+```console
 R2#show ip route eigrp
      172.16.0.0/30 is subnetted, 2 subnets
 D       172.16.0.0 [90/2172416] via 172.16.1.1, 00:00:10, FastEthernet0/0
@@ -433,7 +433,7 @@ D       10.1.0.0 [90/156160] via 172.16.1.1, 00:00:10, FastEthernet0/0
 
 命令`debug ip routing [acl|static]`是一个强大的故障排除工具及命令(a powerful troubleshooting tool and command)。但需要注意到,尽管此命令并非特定于EIGRP,其提供到有关路由表的有用与详细信息。下面是由该命令所打印出的信息示例:
 
-```
+```console
 R1#debug ip routing
 IP routing debugging is on
 R1#
@@ -475,7 +475,7 @@ has_route: False
 
 可与某条访问控制清单结合使用此命令,来查看有关在那个访问控制清单中所引用到某条路由或某几条路由的信息。此外,同样的命令也可以用于本地设备上静态路由事件的调试。作为附注,在运行EIGRP时,作为使用此命令的替代,请考虑使用`show ip eigrp events`命令而不是此命令,因为`show ip eigrp events`提供到EIGRP内部事件的历史记录,且可用于对活动粘滞故障,以及路由抖动及其它事件进行排除(You can use this command in conjunction with an ACL to view information about the route or routes referenced in the ACL. Additionally, the same command can also be used for troubleshooting static route events on the local device. As a side note, instead of using this command, if you are running EIGRP, consider using the `show ip eigrp events` command instead, as it provides a history of EIGRP internal events and can be used to troubleshoot SIA issues, as well as route flaps and other events)。下面是`show ip eigrp events`命令所打印信息的一个示例:
 
-```
+```console
 R1#show ip eigrp events
 Event information for AS 150:
 1    23:03:49.135 Ignored route, metric: 192.168.3.0 28160
@@ -506,7 +506,7 @@ Event information for AS 150:
 
 除开`debug ip routing`命令,思科IOS软件里还有额外可用的两个EIGRP专用调试命令。命令`debug eigrp`可用于提供到有关弥散更新算法的有限状态机、EIGRP邻居关系、非停止转发事件、数据包及传输事件等的相关实时信息(In addition to the `debug ip routing` command, two additional EIGRP-specific debugging commands are also available in Cisco IOS software. The `debug eigrp` command can be used to provide real-time information on the DUAL Finite State Machine, EIGRP neighbour relationships, Non-Stop Forwarding events, packets, and transimission events)。下面演示了此命令可用的参数:
 
-```
+```console
 R1#debug eigrp ?
   fsm        EIGRP Dual Finite State Machine events/actions
   neighbors  EIGRP neighbors
@@ -517,7 +517,7 @@ R1#debug eigrp ?
 
 在`debug eigrp`命令之外,命令`debug ip eigrp`打印出有关EIGRP路由事件的详细信息,诸如EIGRP如何处理到来的更新等。下面演示了可与该命令结合使用的那些额外关键字:
 
-```
+```console
 R1#debug ip eigrp ?
   <1-65535>      Autonomous System
   neighbor       IP-EIGRP neighbor debugging
@@ -529,7 +529,7 @@ R1#debug ip eigrp ?
 
 最后,下面是命令`debug ip eigrp`的一个输出示例:
 
-```
+```console
 R1#debug ip eigrp
 IP-EIGRP Route Events debugging is on
 R1#
diff --git a/d38-EIGRP-For-IPv6.md b/d38-EIGRP-For-IPv6.md
index 7bebf45..7345fae 100644
--- a/d38-EIGRP-For-IPv6.md
+++ b/d38-EIGRP-For-IPv6.md
@@ -69,7 +69,7 @@ EIGRPv6保留了EIGRPv4中的大部分相同基础的核心功能(For the most
 
 根据上述配置步骤顺序,路由器`R1`上EIGRPv6将被如下配置上:
 
-```
+```console
 R1(config)#ipv6 unicast-routing
 R1(config)#ipv6 router eigrp 1
 R1(config-rtr)#eigrp router-id 1.1.1.1
@@ -84,7 +84,7 @@ R1(config-if)#exit
 
 而根据同样的步骤顺序,路由器`R3`上的EIGRPv6就被如下这样配置上:
 
-```
+```console
 R3(config)#ipv6 unicast-routing
 R3(config)#ipv6 router eigrp 1
 R3(config-rtr)#eigrp router-id 3.3.3.3
@@ -105,7 +105,7 @@ R3(config-if)#exit
 
 EIGRPv6的验证过程,将按照EIGRPv4的同样过程进行。首先要验证EIGRP的邻居关系已被成功建立。对于EIGRPv6, 这是通过使用`show ipv6 eigrp neighbours`命令完成的,如下所示:
 
-```
+```console
 R1#show ipv6 eigrp neighbors
 EIGRP-IPv6 Neighbors for AS(1)
 H   Address              Interface Hold Uptime    SRTT   RTO Q   Seq
@@ -116,7 +116,7 @@ H   Address              Interface Hold Uptime    SRTT   RTO Q   Seq
 
 如同先前指出的那样,请注意这里的下一跳地址(也就是EIGRP的邻居地址)被指定为本地链路地址,而不是全局单播地址。此命令所打印出的所有其它信息,与`show ip eigrp neighbors`命令打印出是相同的。而要查看详细的邻居信息,可简单地在`show ipv6 eigrp neighbours`命令后面追加上`[detail]`关键字。使用此选项就打印出有关EIGRP版本、以及从那个特定EIGRP邻居处接收到的前缀数目等信息,如下所示:
 
-```
+```console
 R1#show ipv6 eigrp neighbors
 EIGRP-IPv6 Neighbors for AS(1)
 H   Address              Interface Hold Uptime    SRTT   RTO Q   Seq
@@ -129,7 +129,7 @@ H   Address              Interface Hold Uptime    SRTT   RTO Q   Seq
 
 在对EIGRPv6的邻居关系进行验证之后,就可以对路由信息进行验证了。比如,要查看到从EIGRPv6邻居处接收到的那些IPv6前缀,就将使用`show ipv6 route`命令,如下面的输出所示:
 
-```
+```console
 R1#show ipv6 route eigrp
 IPv6 Routing Table - default - 6 entries
 Codes: C - Connected, L - Local, S - Static, U - Per-user Static route
@@ -144,7 +144,7 @@ D   3FFF:1234:ABCD:3::/64 [90/3072]
 
 请再次注意,这里所接收到的前缀,都包含着作为所有接收到的前缀的下一跳IPv6地址的本地链路地址。而要查看EIGRPv6的拓扑表,就应使用`show ipv6 eigrp topology`命令。该命令支持那些与用于查看EIGRPv4的拓扑表的`show ip eigrp topology`命令下可用的同样的参数。这里基于上面已部署的配置,`R1`上的拓扑表显示出以下IPv6前缀信息:
 
-```
+```console
 R1#show ipv6 eigrp topology
 EIGRP-IPv6 Topology Table for AS(1)/ID(1.1.1.1)
 Codes: P - Passive, A - Active, U - Update, Q - Query, R - Reply,
@@ -159,7 +159,7 @@ P 3FFF:1234:ABCD:3::/64, 1 successors, FD is 3072
 
 与EIGRPv4中的情况一样,可在此命令的后面追加一个前缀,以查看到有关那个前缀或子网的详细信息。比如,要查看有关子网`3FFF:1234:ABCD:2::/64`的详细信息,就应简单的输入`show ipv6 eigrp topology 3FFF:1234:ABCD:2::/64`命令,如下所示:
 
-```
+```console
 R1#show ipv6 eigrp topology 3FFF:1234:ABCD:2::/64
 EIGRP-IPv6 Topology Entry for AS(1)/ID(1.1.1.1) for 3FFF:1234:ABCD:2::/64
   State is Passive, Query origin flag is 1, 1 Successor(s), FD is 3072
@@ -179,7 +179,7 @@ flag is 0x0
 
 最后,一个简单的`ping`就可以且应该用于对子网之间的连通性加以验证。下面就是一个从`R1`到`R3`上的地址`3FFF:1234:ABCD:2::3`的`ping`操作:
 
-```
+```console
 R1#ping 3FFF:1234:ABCD:2::3 repeat 10
 Type escape sequence to abort.
 Sending 10, 100-byte ICMP Echos to 3FFF:1234:ABCD:2::3, timeout is 2 seconds:
@@ -189,7 +189,7 @@ Success rate is 100 percent (10/10), round-trip min/avg/max = 0/0/4 ms
 
 与EIGRPv4下的情况一样,也可使用`show ipv6 protocols`对EIGRPv6的一些默认协议数值进行检查,该命令的输出在下面有打印出来。该命令包含了那些开启了EIGRP实例的接口、路由重分发的信息(在适用时),以及手动配置指定或所配置的点分十进制的EIGRPv6路由器ID。
 
-```
+```console
 R1#show ipv6 protocols
 IPv6 Routing Protocol is “eigrp 1”
 EIGRP-IPv6 Protocol for AS(1)
diff --git a/d39-OSPF.md b/d39-OSPF.md
index 64ac56f..1b00316 100644
--- a/d39-OSPF.md
+++ b/d39-OSPF.md
@@ -77,7 +77,7 @@
 
 为进一步说明这一点,这里参考图39.2, 假定该网段上的所有路由器都具有默认的OSPF优先级`1`(并同时加载OSPF进程),因为`R4`有着最高的路由器ID而被选为指定路由器。`R3`因为有着第二高的路由器ID而被选为后备指定路由器。因为`R2`与`R1`既不是指定也不是后备指定路由器,因此它们为称为思科命名法中的`DROther`路由器。可在所有路由器上使用`show ip ospf neighbour`命令对此进行验证,如下所示:
 
-```sh
+```console
 R1#show ip ospf neighbor
 Neighbor ID     Pri     State           Dead Time   Address         Interface
 2.2.2.2           1     2WAY/DROTHER    00:00:38    192.168.1.2     Ethernet0/0
@@ -106,7 +106,7 @@ Neighbor ID     Pri     State           Dead Time   Address         Interface
 
 因为`R4`已被选为指定路由器,它就生成网络链路状态通告(the Network LSA),这类链路状态通告,是就该多路访问网段上的其它路由器进行通告的。可在网段上的任意路由器上,使用`show ip ospf database network [link state ID]`命令,或在指定路由器上使用`show ip ospf database network self-originate`命令,对此加以验证。下面演示了在指定路由器(`R4`)上命令`show ip ospf database network self-originate`命名的输出:
 
-```sh
+```console
 R4#show ip ospf database network self-originate
             OSPF Router with ID (4.4.4.4) (Process ID 4)
                 Net Link States (Area 0)
@@ -132,7 +132,7 @@ R4#show ip ospf database network self-originate
 
 所连接路由器字段(the Attached Router field)列出了在该网络网段上所有路由器的路由器ID。这样就令到该网段上的所有路由器,知悉有哪些其它路由器也同样位处该网段上。下面的输出,演示了在`R1`、`R2`与`R3`上的`show ip ospf database network [link state ID]`命令的输出,反映出同样的信息:
 
-```sh
+```console
 R2#show ip ospf database network
             OSPF Router with ID (2.2.2.2) (Process ID 2)
                 Net Link States (Area 0)
@@ -394,7 +394,7 @@ OSPF的`Hello`数据包,还在广播链路上用于指定路由器与后备指
 
 在思科IOS软件中,可使用`show ip ospf traffic`命令来查看OSPF数据包的统计信息。该命令展示了发送及接收道德OSPF数据包的总数,并将这些OSPF数据包细分到单独的OSPF进程,最终又细分到具体进程下开启了OSPF进程的各个接口上。该命令也可用于对OSPF临接关系建立的故障排除,其作为调试用途时,不是处理器占用密集的方式。下面的输出中演示了该命令所打印的信息:
 
-```sh
+```console
 R4#show ip ospf traffic
 OSPF statistics:
   Rcvd: 702 total, 0 checksum errors
@@ -536,7 +536,7 @@ Summary traffic statistics for process ID 4:
 
 尽管对每个关键字用法的输出进行演示是不现实的,但下面的小节仍对不同类型的LSA,以及与`show ip ospf database`命令结合使用从而查看到这些LSA的详细信息的一些常见关键字,进行了介绍。该命令所支持的关键字,在下面的输出中进行了演示:
 
-```sh
+```console
 R3#show ip ospf database ?
   adv-router        Advertising Router link states
   asbr-summary      ASBR Summary link states
@@ -659,7 +659,7 @@ OSPF度量值通常被成为开销(The OSPF metric is commonly referred to as
 
 如先前所演示的那样,可使用`show ip ospf interface [name]`来查看到某个接口的OSPF开销。在度量值计算中用到的默认参考带宽,可在`show ip protocols`命令的输出中查看到,如下面的输出中所演示的那样:
 
-```sh
+```console
 R4#show ip protocols
 Routing Protocol is “ospf 4”
   Outgoing update filter list for all interfaces is not set
@@ -686,8 +686,7 @@ Reference bandwidth unit is 100 mbps
 
 > **注意**:再次,因为OSPF度量值不支持小数,该值将被向下取整到简单的`647`的度量值,如下面的输出所示:
 
-
-```sh
+```console
 R4#show ip ospf interface Serial0/0
 Serial0/0 is up, line protocol is up
   Internet Address 10.0.2.4/24, Area 2
@@ -707,7 +706,7 @@ Serial0/0 is up, line protocol is up
 
 在执行了路由器配置命令`auto-cost reference-bandwidth 1000`后,思科IOS软件就打印出下面的消息,表明应将此同样的值,应用该OSPF域中的所有路由器上。这在下面的输出中进行了演示:
 
-```sh
+```console
 R4(config)#router ospf 4
 R4(config-router)#auto-cost reference-bandwidth 1000
 % OSPF: Reference bandwidth is changed.
@@ -729,7 +728,7 @@ R4(config-router)#auto-cost reference-bandwidth 1000
 
 接口配置命令`ip ospf cost <1-65535>`,被用于手动指定某条链路的开销。链路的开销值越低,其就比到相同目的网络的、有着更高开销值的其它链路,越有可能被优先选用。下面的示例演示了如何为某条串行(`T1`)链路配置上一个OSPF开销`5`:
 
-```sh
+```console
 R1(config)#interface Serial0/0
 R1(config-if)#ip ospf cost 5
 R1(config-if)#exit
@@ -737,7 +736,7 @@ R1(config-if)#exit
 
 可使用`show ip ospf interface [name]`命令对此配置进行验证,如下面的输出所示:
 
-```sh
+```console
 R1#show ip ospf interface Serial0/0
 Serial0/0 is up, line protocol is up
   Internet Address 10.0.0.1/24, Area 0
@@ -765,7 +764,7 @@ Serial0/0 is up, line protocol is up
 
 下面的配置示例,演示了如何将一台开启OSPF的路由器,配置为在路由表中存在一条默认路由时,生成一条默认路由并对其进行通告。既有的默认路由可以是一条静态路由,甚至为在该路由器上配置了多种路由协议时,从另一种路由协议产生的一条默认路由。下面的输出演示的是基于一条配置的静态默认路由的此种配置:
 
-```sh
+```console
 R4(config)#ip route 0.0.0.0 0.0.0.0 FastEthernet0/0 172.16.4.254
 R4(config)#router ospf 4
 R4(config-router)#network 172.16.4.0 0.0.0.255 Area 2
@@ -790,7 +789,7 @@ R4(config-router)#exit
 
 其中路由器A的配置为:
 
-```sh
+```console
 router ospf 20
 network 4.4.4.4 0.0.0.0 area 0
 network 192.168.1.0 0.0.0.255 area 0
@@ -799,7 +798,7 @@ router-id 4.4.4.4
 
 路由器B的配置为:
 
-```sh
+```console
 router ospf 22
 network 172.16.1.0 0.0.0.255 area 0
 network 192.168.1.0 0.0.0.255 area 0
@@ -808,7 +807,7 @@ router-id 192.168.1.2
 
 路由器C的配置为:
 
-```sh
+```console
 router ospf 44
 network 1.1.1.1 0.0.0.0 area 1
 network 172.16.1.0 0.0.0.255 area 0
@@ -850,7 +849,7 @@ O     192.168.1.0/24 [110/128] via 172.16.1.1, 00:10:39, Serial0/0/0
 
 另一个常见的错误配置就是将接口指定为了被动接口(Another common misconfiguration is specifying the interface as passive)。如果真这样做了,那么该接口就不会发出`Hello`数据包,同时使用那个接口就不会建立邻居关系。既可使用`show ip protocols`,也可使用`show ip ospf interface`命令,来检查哪些接口被配置或指定为了被动接口。下面是在某个被动接口上的后一个命令的示例输出:
 
-```sh
+```console
 R1#show ip ospf interface Serial0/0
 Serial0/0 is up, line protocol is up
   Internet Address 172.16.0.1/30, Area 0
@@ -874,7 +873,7 @@ Serial0/0 is up, line protocol is up
 
 访问控制清单过滤,是另一种常见的造成临接关系建立失败的原因。为排除此类故障,重要的是熟悉网络拓扑。比如,在建立某个临接关系失败的路由器是通过不同物理交换机进行连接的时,就可能为ACL过滤是以先前为安全目的,而已配置在交换机上的VACL(VLAN ACL)的形式部署的。`show ip ospf traffic`命令,就是一个可找出OSPF数据包是被阻塞了还是被丢弃了的有用工具,其会打印出如下输出所演示的,有关发出的OSPF数据包的信息:
 
-```sh
+```console
 R1#show ip ospf traffic Serial0/0
     Interface Serial0/0
 OSPF packets received/sent
@@ -909,7 +908,7 @@ OSPF LSA errors
 
 OSPF之所以不对路由器进行通告的一个常见原因,就是该网络未通过OSPF进行通告。在当前的思科IOS软件中,使用路由器配置命令`network`或接口配置命令`ip ospf`,就可使网络得以通告。不管使用哪种方式,都可以使用`show ip protocols`命令,来查看将OSPF配置为对哪些网络进行通告,就如同下面的输出中所看到的:
 
-```sh
+```console
 R2#show ip protocols
 Routing Protocol is “ospf 1”
   Outgoing update filter list for all interfaces is not set
@@ -931,7 +930,7 @@ Distance: (default is 110)
 
 此外,请记住还可以使用`show ip ospf interfaces`命令来找出那些接口开启了OSPF,及其它一些信息。除了网络配置,若接口宕掉,OSPF也不会对路由器进行通告。可使用`show ip ospf interfaces`命令,来确定接口状态,如下所示:
 
-```sh
+```console
 R1#show ip ospf interface brief
 Interface    PID   Area     IP Address/Mask    Cost   State   Nbrs F/C
 Lo100        1     0        100.1.1.1/24       1      DOWN    0/0
@@ -940,7 +939,7 @@ Fa0/0        1     0        10.0.0.1/24        1      BDR     1/1
 
 参考上面的输出,可看到`Loopback100`出于`DOWN`状态。细看就可以发现该故障是由于该接口已被管理性关闭,如下面的输出所示:
 
-```sh
+```console
 R1#show ip ospf interface Loopback100
 Loopback100 is administratively down, line protocol is down
   Internet Address 100.1.1.1/24, Area 0
@@ -951,7 +950,7 @@ Loopback100 is administratively down, line protocol is down
 
 如使用`debug ip routing`命令对IP路由事件(IP routing events)进行调试,并于随后在`Loopback100`接口下执行`no shutdown`命令,那么就可以看到下面的输出:
 
-```sh
+```console
 R1#debug ip routing
 IP routing debugging is on
 R1#conf t
@@ -978,7 +977,7 @@ R1#
 
 参考图39.15, 路由器`R1`与`R2`通过一条背靠背的连接(a back-to-back connection)相连。这两台路由器共享了`10.0.0.0/24`子网。不过`R1`还配置了一些在其`FastEthernet0/0`接口下的额外(次要)子网,因此`R1`上该接口的配置就如下打印出来:
 
-```sh
+```console
 R1#show running-config interface FastEthernet0/0
 Building configuration...
 Current configuration : 183 bytes
@@ -994,7 +993,7 @@ end
 
 在`R1`与`R2`上都开启了OSPF。`R1`上部署的配置如下所示:
 
-```sh
+```console
 R1#show running-config | section ospf
 router ospf 1
 router-id 1.1.1.1
@@ -1006,7 +1005,7 @@ network 10.0.2.1 0.0.0.0 Area 1
 
 `R2`上部署的配置如下所示:
 
-```sh
+```console
 R2#show running-config | section ospf
 router ospf 2
 router-id 2.2.2.2
@@ -1016,7 +1015,7 @@ network 10.0.0.2 0.0.0.0 Area 0
 
 默认情况下,因为`R1`上的次要子网已被放入到一个不同的OSPF区域,所以它们不会被该路由器通告。这一点在`R2`上可以看到,在执行了`show ip route`命令时,就显示下面的输出:
 
-```sh
+```console
 R2#show ip route
 Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
        D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
@@ -1032,7 +1031,7 @@ C       10.0.0.0 is directly connected, FastEthernet0/0
 
 为解决这个问题,就必须将那些次要子网,指派到`Area 0`,如下所示:
 
-```sh
+```console
 R1(config)#router ospf 1
 R1(config-router)#network 10.0.1.1 0.0.0.0 Area 0
 *Mar 18 20:20:37.491: %OSPF-6-AREACHG: 10.0.1.1/32 changed from Area 1 to Area 0
@@ -1043,7 +1042,7 @@ R1(config-router)#end
 
 在此配置改变之后,那些网络就被通告给路由器`R2`了,如下所示:
 
-```sh
+```console
 R2#show ip route
 Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
        D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
@@ -1064,7 +1063,7 @@ O       10.0.1.0 [110/2] via 10.0.0.1, 00:01:08, FastEthernet0/0
 
 在本课程模块的最后一节,将看看一些较为常用的OSPF调试命令。OSPF的调试,是通过使用`debug ip ospf`命令来开启的。该命令可结合下面这些额外关键字一起使用:
 
-```sh
+```console
 R1#debug ip ospf ?
   adj             OSPF adjacency events
   database-timer  OSPF database timer
@@ -1082,7 +1081,7 @@ R1#debug ip ospf ?
 
 命令`debug ip osfp adj`将打印有关临接事件的实时信息。在对OSPF的邻居临接故障进行故障排除时,这是一个有用的故障排除工具。下面是一个由该命令打印的信息示例。下面的示例演示了如何使用该命令,来判断MTU不匹配而导致的无法到达`Full`状态,从而阻止了邻居临接的建立:
 
-```sh
+```console
 R1#debug ip ospf adj
 OSPF adjacency events debugging is on
 R1#
@@ -1110,7 +1109,7 @@ R1#
 
 命令`debug ip ospf lsa-generation`将打印出有关OSPF链路状态通告的信息。该命令可用于在使用OSPF时对路由通告的故障排除。下面是由该命令所打印的输出信息的一个示例:
 
-```sh
+```console
 R1#debug ip ospf lsa-generation
 OSPF summary lsa generation debugging is on
 R1#
@@ -1132,7 +1131,7 @@ R1#
 
 命令`debug ip ospf spf`提供有有关最短路径优先算法事件的实时信息。该命令可以下面的关键字结合使用:
 
-```sh
+```console
 R1#debug ip ospf spf ?
   external   OSPF spf external-route
   inter      OSPF spf inter-route
@@ -1143,7 +1142,7 @@ R1#debug ip ospf spf ?
 
 与所有`debug`命令一样,在对SPF事件进行调试之前,都应对诸如网络大小及路由器上资源占用等因素加以考虑。下面是自`debug ip ospf spf statistic`命令的输出示例:
 
-```sh
+```console
 R1#debug ip ospf spf statistic
 OSPF spf statistic debugging is on
 R1#clear ip ospf process
@@ -1210,7 +1209,7 @@ __实验步骤__
 
 2. 将OSPF添加到路由器`A`。将`Loopback0`上的网络放入到`Area 1`,将那个`10`网络放入到`Area 0`。
 
-```sh
+```console
 RouterA(config)#router ospf 4
 RouterA(config-router)#network 172.20.1.0 0.0.0.255 area 1
 RouterA(config-router)#network 10.0.0.0 0.0.0.3 area 0
@@ -1235,7 +1234,7 @@ Distance: (default is 110)
 
 3. 将OSPF添加到路由器`B`。将该环回网络放入到OSPF的`Area 40`。
 
-```sh
+```console
 RouterB(config)#router ospf 2
 RouterB(config-router)#net 10.0.0.0 0.0.0.3 area 0
 RouterB(config-router)#
@@ -1261,7 +1260,7 @@ Distance: (default is 110)
 
 4. 对两台路由器上的路由表进行检查。查找那些OSPF通告的网络。将见到一个`IA`,也就是OSPF的区域间(inter-area)。还将见到OSPF的`AD`,也就是管理距离(Administrative Distance)`110`。
 
-```sh
+```console
 RouterA#sh ip route
 ...
 [Truncated Output]
@@ -1276,7 +1275,7 @@ RouterA#
 
 5. 在两台路由器上分别执行一些可用的OSPF命令。
 
-```sh
+```console
 RouterA#sh ip ospf ?
   <1-65535>       Process ID numberborder-routers Border and Boundary Router Information
   database        Database summary
diff --git a/d40-Syslog-SNMP-and-Netflow.md b/d40-Syslog-SNMP-and-Netflow.md
index 605ced5..c040b05 100644
--- a/d40-Syslog-SNMP-and-Netflow.md
+++ b/d40-Syslog-SNMP-and-Netflow.md
@@ -58,7 +58,7 @@
 
 在`syslog`中,设施(the facility)用于表示生成消息的源。源可以是某个本地设备上的进程、应用,或者甚至操作系统本身。设施是以数字(整数)表示的。在思科IOS软件中,有八个本地使用设施可由进程及应用(以及设备本身)用于发送`syslog`消息。默认思科IOS设备使用设施`local7`来发送`syslog`报文。但要注意大多数思科设备提供了改变默认设施级别的选项。在思科IOS软件中,可使用全局配置命令`loggin facility [facility]`来指定`syslog`的设施。该命令可用的选项如下所示:
 
-```sh
+```console
 R1(config)#logging facility ?
   auth    Authorization system
   cron    Cron/at facility
@@ -98,7 +98,7 @@ R1(config)#logging facility ?
 
 下面的配置实例,演示了如何将所有信息(informational(level6))及以下的报文,发送到一台有着IP地址`192.168.1.254`的`syslog`服务器:
 
-```sh
+```console
 R2(config)#logging on
 R2(config)#logging trap informational
 R2(config)#logging 192.168.1.254
@@ -106,7 +106,7 @@ R2(config)#logging 192.168.1.254
 
 此配置可使用`show syslog`命令进行验证,如下所示:
 
-```sh
+```console
 R2#show logging
 Syslog logging: enabled (11 messages dropped, 1 messages rate-limited, 0 flushes, 0 overruns, xml disabled, filtering disabled)
     Console logging: disabled
@@ -121,19 +121,19 @@ No active filter modules.
 
 一般在配置日志记录时,重要的是要确保路由器或交换机的时钟反映的是真实的当前时间,这可实现与错误数据的关联。日志消息上的不准确或不正确时间戳,会令到使用过滤或关联流程,来做错误与问题隔离十分困难,并十分耗时。在思科IOS软件中,系统时钟可手动配置,或者将设备配置为自动将其时钟与网络时间协议服务器进行同步。在后面的小节将对这两种方法进行讨论。在网络中仅有少数互联网络设备时,手动的时钟或时间配置没有问题。在思科IOS软件中,系统时间是通过使用`clock set hh:mm:ss [day & month | month & day] [year]`特权`EXEC`命令进行配置的。其不是在全局配置模式下配置或指定的。下面的配置示例,演示了如何将系统时钟设置为 2010 年 10 月 20 日上午12:15:
 
-```sh
+```console
 R2#clock set 12:15:00 20 october 2010
 ```
 
 也可以向下面这样在路由器上应用同样的配置:
 
-```sh
+```console
 R2#clock set 12:15:00 october 20 2010
 ```
 
 在此配置下,可使用`show clock`命令来查看到系统时间:
 
-```sh
+```console
 r2#show clock
 12:15:19.419 utc wed oct 20 2010
 ```
@@ -142,7 +142,7 @@ r2#show clock
 
 此外,一些地方使用标准时间(Standard Time)与夏令时间(Dayligh Saving Time)。考虑这个因素,那么在手动配置系统时钟时,确保于所有设备上正确设置系统时间(标准还是夏令时)就很重要了。下面的配置实例,演示了如何将系统时钟,设置为比GMT晚6个小时的中部标准时间(Central Standard Time, CST)时区的2010年10月20日上午12点40分:
 
-```sh
+```console
 R2#config t
 Enter configuration commands, one per line.
 End with CNTL/Z.
@@ -153,14 +153,14 @@ R2#clock set 12:40:00 october 20 2010
 
 依据此配置,本地路由器上的系统时钟现在显示为下面这样:
 
-```sh
+```console
 R2#show clock
 12:40:17.921 CST Wed Oct 20 2010
 ```
 
 > **注意**:如在`clock timezone`命令之前使用`clock set`命令,那么使用`clock set`命令所指定的时间,将被`clock timezone`命令的使用进行偏移。比如假定上面示例中使用的配置命令是像下面这样输入的时:
 
-```sh
+```console
 R2#clock set 12:40:00 october 20 2010
 R2#config t
 Enter configuration commands, one per line.
@@ -171,7 +171,7 @@ R2(config)#end
 
 因为这里`clock set`命令先使用,所以路由器上的`show clock`命令将显示偏移了6小时的系统时钟,就如使用`clock timezone`命令所指定的那样。在同样的路由器的以下输出对此行为进行了演示:
 
-```sh
+```console
 R2#show clock
 06:40:52.181 CST Wed Oct 20 2010
 ```
@@ -186,13 +186,13 @@ NTP使用层的概念(a concept of a stratum),来描述某台机器距离
 
 在思科IOS软件中,使用全局配置命令`ntp server [address]`,来将某台设备配置带有一台或多台NTP服务器的IP地址。如先前指出的那样,可通过重复使用同样的命令,指定多个NTP参考地址。此外,该命令还可用于配置服务器与客户端之间的安全及其它特性。下面的配置实例,演示了如何将某台设备配置为将其时间与一台有着IP地址`10.0.0.1`的NTP进行同步:
 
-```sh
+```console
 R1(config)#ntp server 10.0.0.1
 ```
 
 根据此配置,可使用`show ntp accociations`命令来对NTP设备之间的通信进行检查,如下面的输出所示:
 
-```sh
+```console
 R2#show ntp associations
 address     ref clock    st  when  poll  reach  delay  offset  disp
 *~10.0.0.1  127.127.7.1  5   44    64    377    3.2    2.39    1.2
@@ -203,7 +203,7 @@ address     ref clock    st  when  poll  reach  delay  offset  disp
 
 接着的`st`字段表示该参考的层(the stratum of the reference)。从上面的打印输出,可以看到`10.0.0.1`的NTP设备有着`5`的层数。本地设备的层数,将增加`1`到值`6`,如下所示,因为其是从有着层`5`的服务器出接收到的时间源。如有另一台设备被同步到该本地路由器,那么它将反应出一个`7`的层数,如此等等。用于检查NTP配置的第二个命令,就是`show ntp status`命令了,其输出如下面所示:
 
-```sh
+```console
 R2#show ntp status
 Clock is synchronized, stratum 6, reference is 10.0.0.1
 nominal freq is 249.5901 Hz, actual freq is 249.5900 Hz, precision is 2**18
@@ -216,7 +216,7 @@ root dispersion is 4.88 msec, peer dispersion is 0.23 msec
 
 在不论是通过手动还是NTP设置好系统时钟之后,都要确保发送给服务器的日志包含正确的时间戳。这是通过使用全局配置命令`service timestamp log [datetime | uptime]`执行的。关键字`[datetime]`支持下面这些字面的额外子关键字:
 
-```sh
+```console
 R2(config)#service timestamps log datetime ?
   localtime      Use local time zone for timestamps
   msec           Include milliseconds in timestamp
@@ -227,7 +227,7 @@ R2(config)#service timestamps log datetime ?
 
 而`[uptime]`关键字则没有额外关键字,而将本地路由器配置为仅包含系统运行时间(the system uptime)作为发送的消息的时间戳。下面的配置实例,演示了如何将本地路由器配置为所有消息都包含本地时间、毫秒信息,以及时区:
 
-```sh
+```console
 R2#configure terminal
 Enter configuration commands, one per line.
 End with CNTL/Z.
@@ -240,7 +240,7 @@ R2(config)#service timestamps log datetime localtime msec show-timezone
 
 根据此配置,本地路由器的控制台将打印以下消息:
 
-```sh
+```console
 Oct 20 02:14:10.519 CST: %SYS-5-CONFIG_I: Configured from console by console
 Oct 20 02:14:11.521 CST: %SYS-6-LOGGINGHOST_STARTSTOP: Logging to host 150.1.1.254 started - CLI initiated
 ```
@@ -291,7 +291,7 @@ SNMP的三个版本分别是版本`1`、`2`与`3`。版本`1`,或`SNMPv1`,
 
 `SNMPv3`蜜柑有使用这种同样的基于共有的安全形式(the same community-based form of security),而是使用了用户与组的安全(user and group security)。下面的配置实例,演示了如何配置带有两个共有字符串的本地设备,其一用于只读访问,另一个用于读写访问。此外,该本地设备还配置了为思科IOS的SLA(Service Level Agreement, 服务级别协议)操作/命令与`syslog`,而使用只读共有字符串,将SNMP陷阱发送到`1.1.1.1`:
 
-```sh
+```console
 R2#config t
 Enter configuration commands, one per line.
 End with CNTL/Z.
@@ -369,7 +369,7 @@ IP(数据)流基于五个,上至七个的一套IP数据包属性,它们
 
 以下实例演示了如何为某个指定的路由器接口开启NetFlow:
 
-```sh
+```console
 R1#config t
 Enter configuration commands, one per line.
 End with CNTL/Z.
@@ -380,7 +380,7 @@ R1(config-if)#end
 
 根据此配置,可使用`show ip cache flow`命令来查看在数据流缓存中所收集的统计数据,如下面的输出所示:
 
-```sh
+```console
 R1#show ip cache flow
 IP packet size distribution (721 total packets):
    1-32   64   96  128  160  192  224  256  288  320  352  384  416  448  480
@@ -420,7 +420,7 @@ Se0/0      10.0.0.2       Local   1.1.1.1        06 C0B3 0017    59
 
 下面的示例演示了如何配置并开启指定路由器接口的NetFlow数据收集,并于随后使用NetFlow版本`5`的数据格式,将数据导出到某台有着IP地址`150.1.1.254`的NetFlow收集器:
 
-```sh
+```console
 R1(config)#interface Serial0/0
 R1(config-if)#ip flow ingress
 R1(config-if)#exit