谁说世界杯期间就不update知识了?

当你点开这篇文章,我不得不说,你前途无量。

为什么?

想想世界杯期间,还有谁去学习、精进?

而你与众不同,他们看球,你读知识博客,你要是没前途了,还有谁有?

既然进来了,就品鉴品鉴这篇白话文,读完顺便点个赞,要是能再关注我一下,那就更好了~

好了,废话不说,上菜。

故事背景

OSPF路由协议,相信你配置的熟练,听得耳烂,看的厌烦。

毫无疑问,OSPF在业界是出了名的成功,无论是同一个厂家的设备,还是异厂家对接,OSPF都是一个非常不错的选择。

稳定的输出,简单的配置,丰富的功能。

可是,还有一个OSPF的孪生姐妹,功能与OSPF类似,而且输出极其稳定,它就是今天我们要说的主角:IS-IS,这位路由界的深宫妃子。

之所以想起聊聊这位后宫美人,是因为大家对她都比较陌生,只闻其名,不见其人。刚好在我的《老司机网络运维干货集锦 》专栏里面,有朋友问道IS-IS协议的诸多细节,我觉得有必要通过一个简单易懂的文章,同大家聊聊IS-IS的特点。

如何聊?

逐个盘点知识细节?这不是我的风格,我们就追求简单易懂,上手即用。

所以最好的方法,就是通过一个熟悉的东西作为参照对象,从而让你能够快速上手。

这个对象,不用说,非OSPF莫属。

IS-IS协议简介

IS-IS全名并不是中东某某集团、让你出国玩的时候很不爽的那一帮人。他们的名字中间少了一个横杠(-)。

此处说的IS-IS,名为中间系统-中间系统。

英文名:Intermediate System to Intermediate System (IS-IS)

名字很奇怪,之所以叫做“中间系统”,则是ISO这帮人对于网络设备的一个称呼,因为网络设备是介于终端之间。所以称之为中间设备,这就好像写什么文书,本来大白话可以说清的,非得一副文绉绉的样子。

而终端,例如服务器,主机等,则称作终端系统“End System”。

选手介绍完毕。

总览

下图为OSPF 和IS-IS的各项区别和相似之处:

由于篇幅有限,也不想把文章当做说教之处,本文仅仅从里面挑出几个比较有意思的点和你一起分享。

还是那句话,掌握思路比学到具体的知识更重要。

而且说到知识储备,有谁拼得过百度和google呢?能搜就行了。

接下来,开始进入PK环节:

底层协议PK

OSPF:

OSPF是基于IP的路由协议,利用IPv4包头承载OSPF的数据包。如下图所示:

IS-IS:

IS-IS就不一样了,IS-IS是基于ISO的OSI协议模型的。

不知道大家是否还记得常说的OSI 7层协议模型,什么物理层,数据链路层,网络层等等。

其实这就是OSI 7层模型,而这7层模型中,还存在很多各种各样的协议,见过的没见过的。

如下图所示:

你可能很奇怪,比如网络层,协议不应该是IP么?传输层不应该有TCP,UDP么?怎么都看不到了。

其实TCP也好,IP也罢,都是基于TCP/IP协议模型,而非传统的OSI模型。

只是随着时间的推移,人们喜欢OSI的模型来描述网络层级,因为它更精确。

但是同时用现今流行的网络协议来对应到OSI层级上,所以就出现了,网络层IP,传输层TCP、UDP等协议的说法。

回到正题,你会发现,IS-IS就在上图中Network网络层的层级里面。

刚开始IPv4还没占领全宇宙的时候,OSI的这些古怪协议都还有人用,自然而然,就需要一个路由协议来学习各个奇葩协议的网段,IS-IS就应运而生了。

相比OSPF使用IP地址来互相建立邻居,IS-IS也需要一个OSI界的地址族,这就是NET(Network Entity Title:网络实体名称)。

一个典型的IS-IS NET的地址结构是这样的:

最左边的49.0001是区域号码,中间的192xxxx8001是系统号,右边的NSEL号码配置为00,代表路IS-IS路由器自身的地址。

NET地址小窍门:

有没有发现上面的1922.5112.8001很熟悉。

其实他是这样的:192.251.128.001。这不就是一个 传统的IPv4地址么。

完全正确。

由于IS-IS的NET地址一台路由器只需要配置一个,通常都配置在lo0接口上。

所以最方便的就是把Lo0的IPv4地址转换一下变为NET地址。

例如192.168.1.1 可以转换为:49.0001.1920.1680.1000.1000.00

最后,让我们一起看看IS-IS的数据包结构:

区域划分

多区域的OSPF

OSPF为了获取网络部署的灵活性,和各项路由功能,特定把整个OSPF域做了如下划分:

  1. Area 0 骨干区域,骨干区域用于连接其他OSPF区域。
  2. Area xxx 非骨干区域,连接到骨干区域。非骨干区域可以实现各种功能,以及在非骨干和骨干区域之间实施路由策略。

一般情况下,OSPF的多区域网络划分是这样的:

上述拓扑相信大家已经司空见惯。

但是请再次注意一点,那就是两个区域之间的连接,是通过一台路由器相连,此路由器我们称之为ABR。

换句话来说,一台路由器跨越了两个区域。

同时,OSPF可以有很多区域,你可以基于你的需求来定义区域的数量。

回过头来看看IS-IS。

双区域的IS-IS

**传统模式 **

IS-IS也有区域的概念,但是相对于OSPF,它的区域则是简单的多。

IS-IS仅仅存在两个区域层级:

Level 2:骨干区域,类似于OSPF的Area 0。

Level 1:非骨干区域,类似于OSPF的非Area 0的区域。

两者之间的关系,如下图所示:

上述拓扑中,level 2作为主干,左右两侧作为分支。

但是请注意,左右两边没有Area号码这一说,都是同属于Level 1。

同时,OSPF的ABR部分,则称作L1/L2路由器,即把L1和L2互联起来的路由器。

众人大呼上当,这不是和OSPF一模一样么,换汤不换药,就是把Area改为Level而已,ABR换一个名字?

真是如此吗?

独立模式

让我们在看另外一个拓扑:

上图有两台路由器,他们建立了IS-IS邻居关系,而且同时在Level1和Level2层级上建立邻居关系。

这就神奇了,你见过哪一个OSPF路由器可以同时把Area 0和Area 1重叠起来建立么?

OSPF不可以,但是IS-IS可以。

IS-IS的Level 1和Level 2的邻居状态数据库等一切信息都是互相独立的,两者之间不产生交集,也不共享路由信息。

除非像上述传统模式拓扑内,存在一个L1/L2路由器,同时把两边衔接起来,此时L1和L2才存在互相通告路由的可能性。

IS-IS有趣的网络结构就此结束了么?

肯定不会,下一个。

多域模式

在看图之前,先问个问题,你见过OSPF存在不同的域么?

没有吧,OSPF没有类似于EIGRP或者BGP那样,存在一个自治系统号。

所以你不会看到下面这样的OSPF拓扑图:

但是,IS-IS却可以。

回到本文上半部分讲述IS-IS NET地址时,存在一个Area id区域号码。上述的例子是49.0001。

换句话说,IS-IS就可以存在多个域。

而域和域之间肯定存在互联关系,自然而然就引入下面的拓扑:

上述拓扑中,存在三个IS-IS域。

他们之间必须通过L2骨干链路互联,而且互联的方式是两两互联,两两之间分别处于不同的域内。

这个再次和OSPF区别开来,OSPF的Area之间通过一台ABR互联。

DR/BDR vs DIS

既然说到域,就顺带提提DR、BDR 指定路由器,备份指定路由器。。

DR和BDR是在OSPF广播型链路中,为了减少大量路由器两两之间交换的链路状态信息,遂选举出一个“村官”来管大家,所有同一个LAN里面的OSPF路由器都要和村长DR联系,同时还有一个副村长BDR,免得村长挂了。

那IS-IS里面是否也有类似的设计呢?

答案是有的。

IS-IS里面不叫DR,BDR。而是叫做DIS:Designated Intermediate System。

DIS是何须人也?其实非常容易理解:OSI模型里面Router路由器 = Intermediate System中间系统。

两边同时加上一个Designate指定一词,得到DR=DIS。

这就好理解了吧。

但是注意,IS-IS内没有BDR,即BDIS一说,IS-IS不喜欢副村长。

协议特性:LSA vs TLV

LSA:OSPF的生命源泉

相信大家都知道OSPF都有哪一些常见的LSA类型,而每一个LSA都代表什么意思。

例如一类LSA,二类LSA,3类,5类。7类等。

这些LSA汇总在一起,定义了OSPF的各种功能特性

毫不夸张的说,LSA赋予了OSPF蓬勃的生命力。

同时,正因为有了LSA,随着时代的发展,当OSPF需要更多的功能时。

就可以通过开发新的LSA类型来满足其功能上的需求,例如LSA9-11,负载MPLS相关的功能等。

同样的,IS-IS也得有它的一套绝活,否则怎么能在江湖上立足呢?

TLV:IS-IS的立命之本

TLV,全称:Type,Length,Value,翻译过来就是类型,长度,值。

它作为一个典型的编码,被极其广泛的应用在IS-IS协议内部。

通过定义不同的TLV,IS-IS也获得了不同的功能。

常见的TLV如下所示:

Juniper 路由器 IS-IS输出结果下的TLV对应图:

IPv6怎么搞定?

OSPF和IS-IS相安无事很多年,大家各司其职。

OSPF风靡全世界的企业网,而IS-IS则稳坐运营商骨干网IGP协议的鳌头。

可是,突然有一天,一个不速之客来了。

那就是IPv6。

就在大家都嚷嚷说要上IPv6的时候,两个协议也需要继续跟进。

OSPF 的困兽之斗

先说说OSPF。

刚才说过,OSPF若需要新的协议特性和功能,就通过开发LSA类型来解决。

可是这次这方法不灵光了。

为什么?

因为OSPF的根是在IPv4上,邻居关系,hello包的组播地址,一切的一切都是以IPv4为基础。

所以OSPF若要新增IPv6的功能,不是简简单单一个LSA就能搞定的问题了。

所有一切都得推倒重来。

于是乎,无奈之下-OSPFv3诞生了。

OSPFv3同时兼容了IPv4和IPv6,虽然很好。

但是它意味着你需要单独在跑一个路由协议,OSPF和OSPFv3是两个独立的协议。

我知道,很疼。

IS-IS第二春

IS-IS,就很有意思了。

当IS-IS看到OSPF这般难受时,不禁大笑。

为何?

因为IS-IS特殊的身世。

还记得,IS-IS可是诞生于ISO的OSI模型之下,它和后来的IP一点瓜葛都没有。

所以,这是IS-IS的根:OSI网络模型。

后来1990年,IS-IS通过新增一个TLV的方式,把IPv4加进来了。

对他来说,新增IPv4就是一个TLV而已。

同理,新增IPv6也就是另外一个TLV而已。

就因为这样,当你运行IS-IS的时候,你不需要开启任何特殊功能,IS-IS同时兼容IPv4和IPv6。

运营商的同学们也没有任何心理负担,只需要配置IPv6地址在接口上,马上就有了一张原生的IPv6网。

怎么一个爽字了得。

这就印证了一句话:风水轮流转,今年到我家

想当年OSPF就因为选择了IPv4作为其基础,从此走向了康庄大道。

可是,有时候你觉得,某些东西是你的绝对优势的时候。

某一天,峰回路转,它反而让你寸步难行。

路由协议都是这样。

何况人生呢?

结束语

经过一番胡侃瞎聊,相信你就算从来没碰过IS-IS这个协议,现在也有一个大致的了解了。

我也没打算花大篇幅一个个的给你讲IS-IS的诸多细节,内容繁多不说,你看了看可能就半路撤退了,内容没有获取到,反而浪费你宝贵的时间。

授人以鱼不如授人以渔~

好了,轮到你给小伙伴们吹嘘了。。。

内容不够你看,瞅瞅这个:

我还有个专栏~

此专栏通过“网络路由篇”,“网络交换篇”,“网络安全篇”,“QoS篇”四大典型技术模块,分别给各位讲述运维中的网络设计思路和一些运维的技术难题。

知识够广 - 还全是干货。

要不,来一份?

传送门如下:

老司机网络运维干货集锦,点我进行传送>>>