谁说世界杯期间就不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域做了如下划分:
- Area 0 骨干区域,骨干区域用于连接其他OSPF区域。
- 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篇”四大典型技术模块,分别给各位讲述运维中的网络设计思路和一些运维的技术难题。
知识够广 - 还全是干货。
要不,来一份?
传送门如下: