isis协议_[IS-IS] IS-IS路由协议的基本知识及配置
isis协议_[IS-IS] IS-IS路由协议的基本知识及配置
![28607151a92d1f616f6c515b3b818e26.png](https://img-blog.csdnimg.cn/img_convert/28607151a92d1f616f6c515b3b818e26.png)
背景知识
- 不是那个ISIS,是“中间系统到中间系统”
- 链路状态路由协议
- 和另一个链路状态路由协议OSPF,几乎是同一时期的产物
- 发展IS-IS早期的驱动观点是,TCP/IP协议簇最终会被OSI协议簇取代,当然今天我们知道了 ,这一天只能在平行时空实现了……
- 在早期,OSPF学习了一些IS-IS的思想
- 天杀的某组织,现在搜这个协议搜出来的都是……emmmmmm
- IS-IS可能是唯一一个按照OSI框架来设计和实现的路由协议,虽然最后我们把它用在了TCP/IP的世界里……
- 中间系统全拼——Intermediate System,IS
- 在早期的发展过程中,IS-IS比较拘泥于形式,OSPF比较重视实践,所以你就知道了,计算机网络,是典型的“黑猫白猫抓着老鼠才是好猫的”这么一个行业(所以标准化是不存在的,去TMD标准化)
- 相比于OSPF那一堆堆的区域,IS-IS只有两个区域,或者说两种邻接关系——L1和L2;其中L2是核心或者说骨干,L1之间的通信必须经过L2
- 生产网络中使用IS-IS通常只有一个目的——希望IGP足够简单,负责打通基础网络就够了,剩下的事,让BGP来做,显然,OSPF不够简单
- 话虽如此,只有一个Area0并且完全P2P建立邻居的OSPF也是很简单的,时至今日,全看怎么用了
- 由于IS-IS并不是个TCP/IP协议,虽然它可以为TCP/IP提供路由选择,但是IS-IS之间的通信得按照OSI的套路来,说白了,IS-IS之间建立邻接关系的时候必须有个ISO地址——NET地址
- NET地址分三个部分——区域ID、系统ID、N-SEL
- NET地址有很多玩法,常见的玩法就是把通常的环回地址补0作为系统ID,然后和区域ID,以及一定为0的N-SEL组合到一起
- 因为是链路状态路由协议,所以运行IS-IS的路由器也会泛洪描述链路状态的数据包——LSP,此LSP非MPLS里的LSP,注意区分
- 在建立了链路状态数据库后,IS-IS也是执行SPF计算去算出最优路径,默认使用缺省度量值来计算,缺省度量值是10,不管啥样的接口都是10,你可以手动去改
- IS-IS的PDU格式很复杂,于本文来说,我们只需要记住一个很有名的字段——TLV(Type/Length/Value),通过扩展这个字段,就可以给IS-IS加特效……我是说加特性
- 我们知道的扩展TLV的比较有名的一个应用,就是MPLS TE
- 所以其实IS-IS也不"简单"
实验拓扑
![34a5d94bd5b234bc7cbf6dd19e6d60c8.png](https://img-blog.csdnimg.cn/img_convert/34a5d94bd5b234bc7cbf6dd19e6d60c8.png)
如上所示,环回地址的格式是10.40.0.x,例如R2就是10.40.0.2
一个通用的转换NET的地址方法如下——
- 定义好区域ID,这里我用了00.0001
- 对环回IP地址进行补0,所以010.40.0.2补0后的结果是010.040.000.002
- 四位一组,变成0100.4000.0002
- 组合区域ID和补0后的系统ID——00.0001.0100.4000.0002
- 再加一个N-SEL,对于路由器来说,永远是00
- 结果就是——00.0001.0100.4000.0002.00
这个转换方法来自Cisco的一份PPT,代码为BRKRST-2327,有点古老了,搜一下应该找得到,下面两张截图是关于这个转换方法的部分——
![3d337b24b6fe38640dddd40361c0c1c4.png](https://img-blog.csdnimg.cn/img_convert/3d337b24b6fe38640dddd40361c0c1c4.png)
![a7819e7159cd530f75b420d36a7d75b1.png](https://img-blog.csdnimg.cn/img_convert/a7819e7159cd530f75b420d36a7d75b1.png)
配置示例
配置IP这种就不列了,以R2为例,isis进程下的配置为——
router isisnet 00.0001.0100.4000.0002.00is-type level-2-onlymetric-style narrow
加入到isis的接口只需要一条命令
interface Loopback0ip address 10.40.0.2 255.255.255.255ip router isis
通过show isis protocol
可以看到自己将哪些接口放到了is-is
中
R02#sh isis protocol IS-IS Router: <Null Tag> (0x10000)System Id: 0100.4000.0002.00 IS-Type: level-2Manual area address(es): 00.0001Routing for area address(es): 00.0001Interfaces supported by IS-IS:Loopback0 - IPGigabitEthernet2.401 - IPGigabitEthernet1.406 - IPRedistribute:static (on by default)Distance for L2 CLNS routes: 110RRR level: noneGenerate narrow metrics: level-1-2Accept narrow metrics: level-1-2Generate wide metrics: noneAccept wide metrics: none
如上所示,R2的Loopback0
, GigabitEthernet2.401
以及 GigabitEthernet1.406
加入到了is-is
进程当中
通过show isis topology
可以看到isis计算出来的拓扑——
R02#show isis topologyIS-IS TID 0 paths to level-2 routers
System Id Metric Next-Hop Interface SNPA
R02 --
R03 10 R03 Gi2.401 0050.568a.d653
R05 20 R03 Gi2.401 0050.568a.d653
R06 30 R03 Gi2.401 0050.568a.d653 R08 Gi1.406 0050.568a.9264
R08 10 R08 Gi1.406 0050.568a.9264
R09 20 R08 Gi1.406 0050.568a.9264
可以很清楚地看到,从R2到R6有两条等价路径——因为默认度量都是10
这也符合我们的拓扑图
![81ffb5bfb1556f24b341e121482c9d82.png](https://img-blog.csdnimg.cn/img_convert/81ffb5bfb1556f24b341e121482c9d82.png)
当然,实际上这张图上,粗线的带宽是更大的,换言之R2-R3-R5-R6应该是更好的路径
所以我们可以手动改一下度量值,粗线设置为1
通过在接口下敲一条isis metric 1
的命令行来实现
所有路由器都改完后再去看R2上的拓扑——
R02#sh isis topology IS-IS TID 0 paths to level-2 routers
System Id Metric Next-Hop Interface SNPA
R02 --
R03 1 R03 Gi2.401 0050.568a.d653
R05 11 R03 Gi2.401 0050.568a.d653
R06 12 R03 Gi2.401 0050.568a.d653
R08 10 R08 Gi1.406 0050.568a.9264
R09 11 R08 Gi1.406 0050.568a.9264
现在R2认为去R6的最优路径是R3了,而不是负载的,计算结果显示然1+10+1=12,走R8的路径则为10+1+10=21
这篇就先酱紫