Isis基础(中间系统到中间系统路由选择协议)
Isis的起源
Isis原本属于osi协议簇,为clnp协议工作,
Ospf属于tcp/ip协议簇,为ip协议工作
对比:
Tcp/ip协议簇 osi协议簇
Ip协议 clnp协议
Ospf协议 isis协议
在运营商中使用isis较多,运营商中与ospf五五开,适合用于扁平化网络环境
优势:isis是第一款能够同时支持ipv4和ipv6的协议
Isis基础特性
Igp协议
适合扁平化大型网络(中到大型运营商网络)因为isis网络优化特别好
交换lsp(链路状态pdu)
Tlv字段可以表示任何想要表达的一切东西(基本上来说)
Isis支持lsp切片,所以lsp可以无限大,所以想要表示什么东西都可以一条lsp搞定一切
Lsdb放拓扑信息和路由信息(链路状态数据库)
支持vlsm cidr和summary
优点:由于tlv字段存在,所以可扩展性极高,可以表示任何类型(这也是为什么这么容易从osi协议簇移植到tcp/ip协议簇的原因)其他所有协议都没有此字段。
缺点:只支持ma和p2p网络,网络类型有限,isis不是一个灵活的路由选择协议。
算法:ispf prc算法
Isis是最后一个加入tcp/ip协议簇的路由选择协议,确实最早支持ipv6的路由选择协议,也是由于tlv字段可以表示绝大多数想表达的东西
集成isis(双栈isis)支持clnp和ip协议(对比ospf进行学习)
树枝
树干
树叶
Ospf最大的缺陷就是针对树枝和树干节点都会进行ispf计算,比如一个还回口出现了变化,整个区域内就要重新计算拓扑,isis做出很大的优化,只针对树干执行ispf计算,树枝和树叶只会做prc计算
Ospf交互的是lsa,isis交互的是lsp
Ospf区域与isis层级比较
Level1 区域内(类似ospf的totally nssa区域)
Level1-2 ABR
Level2 区域间
不同区域router只能建立level-2的邻居关系,相同区域则两种邻居关系都可以
Isis骨干链路:有连续的level-2和level1-2组成,纯level2只能在骨干链路区域
Isis层级特性
Level1路由器:只能发送和接收level1的lsp,且只能与level1路由器建立邻居关系,类似ospf中的区域内路由,Level1 lsp只能获得区域内的拓扑信息,通过静态默认访问其他区域
Level1-2路由器:可以理解为既可以是level1路由器,也可以是level2路由器,既可以获得level1lsp,也可以收到level2lsp,只能收到路由,无拓扑信息,收集到level1的路由会转化为level-2形式发送给level-2邻居,但是收到level-2路由只会本地保存,Level-1-2路由器给区域内路由器发送level-1 lsp时会将ATT位置1,让其他的router知晓我是边界,并产生一条默认路由指向我。(注意:是由level1路由器产生,)当有多台边界路由器的时候,优先指向最近的边界路由器
Level2路由器:可以再区域内建立邻居,也可以在区域间建立邻居,但是一般来说都是与区域间建立邻居,类似于ospf中的骨干路由器。
默认情况下所有的router都是level1-2router
Isis中,一台路由器属于哪个区域属于哪个区域由net地址决定,一台路由器只能属于一个区域,但是不同区域可以建立邻居
为什么逻辑骨干区域只能由level2和level1-2路由器呢?
- level1路由器无法跨越区域建立邻居
- level1路由器无法接收level2的lsp(互连相当于端到端的通信中断)
Ospf router-id X.X.X.X
Isis router-id (net网络实体标题)nesl为00的nsap地址
路由泄露 route-link
Lv2 泄露给lv1 可以做到数据层面的负载均衡
周期性更新lsp,当拓扑发生变化时,立即触发更新
Lsa老化计时器为一小时,30min发送一次
Lsp老化计时器为20min,15min发送一次(从1200S开始倒计时)
Metric(isis最大痛点)
默认为10,不看带宽延迟,控制层面所有入接口累加
Metric有两种类型
- narrow metric (窄度量值):接口6bit,链路10bit
- wide metric (宽度量值):接口24bit,链路32bit
兄弟协议es-is(终端到中间系统):让pc知道网络中有哪些网关(tcp/ip协议不支持此协议),es向is发送esh,is向es发送ish,通过这种不对等的hello来建立邻居。
Ospf与isis的相似之处
- ls协议
- 同步机制
- 都是周期加触发更新
- 收到的lsp和lsa都是放在lsdb
- Spf算法
- 更新泛洪方式一致
- 支持vlsm和cidr
- 都有较大的扩展性,适合中到大型网络
Ospf与isis的不同之处
- ospf使用接口划分区域,isis使用本身net划分区域
- lsa有多种类型,lsp只有level1和level2(tlv包罗万象)
- isis只支持p2p和ma网络,ospf支持多种网络
- metric计算方式不相同
isis高级特性
clnp使用nsap地址,集成isis需要使用net地址和IP地址
osi协议簇中nsap表示的节点是设备本身
nsel为全0时表示节点本身,不为0时表示该节点上跑的应用
nsel为全0时这个nsap就是一个net地址(最多可配置三个)
nsap地址(最短8字节,最长20字节,该地址不是用来宣告的,不要求可达)
继承isis将nsap地址当做一个router-id,并没有实际标识设备本身,一般固定长度为10字节
Nsap地址结构详见书本笔记
IDP高位(初始域):由AFI IDI组成
DSP低位(域指定部分):由hodsp,system id ,nsel组成
*AFI:(1字节)所属的组织(一般使用49,49相当于私有AFI,无需购买租赁)
IDI:(可变长字段,与hodsp最多一共12字节)AFI的扩展字段(AFI的子域可以理解为)
*HODSP:(可变长字段,与idi最多一共12字节)描述节点所属区域(area,isis中一般都会包含此字段,使用两个字节)
*System-id:(6字节)系统标识符,标识节点本身,(6字节,十六进制位)
*NSEL(1字节):nsap的选择器,用来标识节点上的上层应用,net地址为全0
Isis 的net地址=AFI(1字节)+hodsp(2字节)+system id(6字节)+nsel(1字节)=10字节
Circuit id:(电路id)用以标识接口
Snpa:根据实际的二层地址转换而得,用以描述接口是什么类型的接口
System id+circuit id=描述接口本身
Level 2数据库也有区域内路由(若两个同区域的level2路由器互连)
当两台属于相同区域的level1-2路由器互连时,在level1和level2 lsp数据库中都会产生一条一样的lsp,优先使用level1 lsp来传路由,(此时消耗资源较大,要同时维护两个链路状态数据库)
Isis net地址识别原则
区域内只看system id,不看area号
区域间只看area号,不看system id
有时由于有多台ABR,且路径长度不一致,且内网路由器没有明细路由,此时level1路由器产生的默认路由会优先指向离他最近的ABR,有时会产生非对称路由
解决方式:通过路由泄露将level2路由泄露到level1路由器中,实现数据层面负载均衡,泄露的路由up/down位会置1,其他的ABR收到此路由后,不会计算相关路由,只会将该lsp放入链路状态数据库中(防止产生次优路径,因为该边界路由器同时收到level1和level2路由时,会优先使用level1路由进行数据传输。)
Isis报文
- hello:(esh,ish,iih)esh是终端发送给路由器的hello,让路由器知道有这么一个节点,ish是路由器发送给终端的,让终端知道谁是网络出口,谁是网关,其中isis协议使用的是iih,ma网络中分为level1和level2两种,p2p单独有一种hello hello时间为10s,dead time为30s,dis为3.3s,dead时间为10s
- lsp:类似lsa,seq从1开始,用来传递路由信息和拓扑信息,也有level1和level2两种
- psnp:ma中类似于ospf的lsr,p2p中类似于lsack,也分level1和level2两种
- csnp:类似于ospf中的dbd,也分为level1和level2两种
无论那种报文封装格式都如下:
二层帧头——data——fcs
hello报文:
广播网络:3次握手(通过neighbor字段实现,和ospf一样)
P2p网络:2次握手(收到hello则认为对方是自己的邻居)可通过配置将其修改为三次握手,但是不能在广播网络中将三次握手更改为两次握手。
Lsp报文:
报头——tlv——tlv………..
报头中包含:
- system-id
- pdu
- lsp-id
- seq
- remanding计时器(从1200s开始倒数,ospf从0开始正数)
- 长度字段
Isis几个典型问题
- 什么情况下的level1 lsp会使ATT位置1
前提
- 起源路由器是一个level1-2
- 拥有level2路由器邻居
- Lsdb中有其他区域的level2路由
- 什么样的路由器接收到level1 ATT位置1的路由会产生静态默认?
- 纯level1才会(默认路由会指向最近的边界)
- Level2或level1-2的路由器会有全路由
3、level1和level2 lsp的区别
1、level1 lsp包含拓扑信息
2、level2 lsp只包含路由信息
Isis网络类型
- ma网络
- p2p网络
- ma网络中:
- 三次握手交互hello开始选举dis,瞬间选举
Dis:(指定中间系统)相当于ospf的dr,但是并不如dr那么重要,不进行实际lsp传输,只是作为参照物,也不需要备份
选举方式:
- 比较优先级,默认64,优先级越大越优
- 比较snpa(mac地址)也是优先级越大越优
Ps:1、dis默认开启抢占
- dis在level1和level2 中分开进行选举
- 无备份(无bdis)
- Dis的hello time为3.3s一次,10s未收到hello则down邻居
- Dis会产生伪节点lsp,类似2类lsa,用以告诉其他邻居,这个ma网络中的成员信息,便于做spf计算画拓扑。普通节点的lsp-id都为0,伪节点不是全0
Dis功能:
- 周期性传送csnp,保证该网络中的所有路由器database保持同步,作为lsp的确认机制
- 发送伪节点lsp,便于邻居发现网络中的其他成员
为什么dis不需要备份?
因为在ospf中,dr,bdr选举需要40s,并达到领接状态,达到传送lsa的条件,若没有bdr,当dr down掉时,重新选举dr需要40s的时间,影响了网络稳定性,因为dr时反射所有给他的lsa,所以dr是十分重要的,而dis是否选举大家都是邻接状态,是可以直接相互交互lsp的,dis只是作为一个参考,作为lsp可靠传输的确认机制,大家都要与dis比较dbd,dis会每10s发送一个csnp(类似ospf中的dbd),大家与之进行比较,我少了则发送psnp向dis请求这条lsp,我多了则直接将此lsp发送给dis,所以dis可以随时选举,且不会影响网络稳定性
不同级别的dis单独选举,可以是同一路由器,也可以不是同一路由器
任何路由器收到任何lsp无需进行确认,因为dis 10S发送一次csnp
Isis ma网络中交互lsp过程
- 交互hello,三次握手建立邻居关系,如果在接收到的iih报文中,看到自己接口的mac地址,说明邻居已经接收到并进行确认了自己发送的iih报文,则本地维护地邻居关系转换为up状态。
- 同一网络中,每台路由器向组播地址通告自己的lsp,level1的组播地址为01-80-c2-00-00-14,level2的地址为01-80-c2-00-00-15
- 选举完dis后,由dis收集lsp,并每隔10s发送csnp,所有网络中的成员进行比对csnp和自己的数据库,少了发送psnp进行请求,多了发送lsp给dis,最终达到链路状态数据库实现同步。(csnp10s发送一次,所以收到lsp不需要进行确认,反正10s后还会再发,在进行比对即可。)
上述过程中所有的报文都是组播方式交互的。
- p2p网络中
isis p2p网络中的lsp交互过程
1、使用p2p hello进行两次握手建立邻居
2、建立邻居后互相发送一个csnp报文(只在建立邻居时发送,只发一次)
3、比对自己没有的lsp,然后针对没有的lsp发送psnp给对方进行请求
4、收到psnp请求后,回复lsp
5、收到lsp报文后,回复一个psnp作为ack代表我收到了你发送给我的lsp
Ps:若在发送csnp过程中丢包了,则对方假定你没有任何lsp,对你进行倾囊相授,所以丢包了也不会影响。
相关术语
IS:中间系统,相当于tcp/ip中的路由器,是isis协议中生成路由和传播路由信息的基本单元。
ES:终端系统,相当于TCP/IP中的主机系统,ES不参与isis路由选择协议的处理,iso使用专门的es-is协议定义终端系统与中间系统间的通信。
伪节点:是用来模拟广播网络的一个虚拟节点,并非真实的路由器,在isis中,伪节点用dis的system-id和一个字节的circuit-id(必须是非0的值)来标识,使用伪节点可以简化网络拓扑,使路由器产生的lsp长度较小,另外,当网络拓扑发生变化时,需要产生lsp数量也会较少,减少spf的资源消耗。