本站已运行

攻城狮论坛

作者: 非常CCNA
查看: 2647|回复: 12

主题标签Tag

more +今日重磅推荐Recommend No.1

所有IT类厂商认证考试题库下载所有IT类厂商认证考试题库下载

more +随机图赏Gallery

【新盟教育】2023最新华为HCIA全套视频合集【网工基础全覆盖】---国sir公开课合集【新盟教育】2023最新华为HCIA全套视频合集【网工基础全覆盖】---国sir公开课合集
【新盟教育】网工小白必看的!2023最新版华为认证HCIA Datacom零基础全套实战课【新盟教育】网工小白必看的!2023最新版华为认证HCIA Datacom零基础全套实战课
原创_超融合自动化运维工具cvTools原创_超融合自动化运维工具cvTools
重量级~~30多套JAVA就业班全套 视频教程(请尽快下载,链接失效后不补)重量级~~30多套JAVA就业班全套 视频教程(请尽快下载,链接失效后不补)
链接已失效【超过几百G】EVE 国内和国外镜像 全有了 百度群分享链接已失效【超过几百G】EVE 国内和国外镜像 全有了 百度群分享
某linux大佬,积累多年的电子书(约300本)某linux大佬,积累多年的电子书(约300本)
乾颐堂现任明教教主Python完整版乾颐堂现任明教教主Python完整版
乾颐堂 教主技术进化论 2018-2019年 最新31-50期合集视频(各种最新技术杂谈视频)乾颐堂 教主技术进化论 2018-2019年 最新31-50期合集视频(各种最新技术杂谈视频)
Python学习视频 0起点视频 入门到项目实战篇 Python3.5.2视频教程 共847集 能学102天Python学习视频 0起点视频 入门到项目实战篇 Python3.5.2视频教程 共847集 能学102天
约21套Python视频合集 核心基础视频教程(共310G,已压缩)约21套Python视频合集 核心基础视频教程(共310G,已压缩)
最新20180811录制 IT爱好者-清风羽毛 - 网络安全IPSec VPN实验指南视频教程最新20180811录制 IT爱好者-清风羽毛 - 网络安全IPSec VPN实验指南视频教程
最新20180807录制EVE开机自启动虚拟路由器并桥接物理网卡充当思科路由器最新20180807录制EVE开机自启动虚拟路由器并桥接物理网卡充当思科路由器

[资料] 超强CCNP OSPF学习笔记第二集

  [复制链接]
非常CCNA [VIP@钻石] 发表于 2013-2-24 21:00:03 | 显示全部楼层 |阅读模式
查看: 2647|回复: 12
开通VIP 免金币+免回帖+批量下载+无广告
本帖最后由 非常CCNA 于 2013-2-24 21:01 编辑

超强CCNP OSPF学习笔记第一集
http://bbs.vlan5.com/forum.php?mod=viewthread&tid=977&fromuid=55


上个帖子讲到了OSPF在P2P下的邻居建立与信息交互,这次我们就来看看在多路访问下,他的邻接关系建立有什么不同。

OSPF在多路访问下跟在P2P下的邻接关系建立在2-way之前没有区别,只不过在2-way之后要进行DR和BDR的选举。DR是Designated Router,叫做指定路由器,BDR是Backup Designated Router,叫做备份指定路由器。为什么要选DR和BDR呢?这是因为,在多路访问情况下,假如路由器数目太多,两两之间进行交互,需要交互的次数太多,OSPF通过引入DR与BDR的概念,来减少相互之间的交互,大家都只跟DR和BDR进行交互就行了。因此,在多路访问下,就多了个DR与BDR的选举。
还是先上图,通过实验和抓包来分析多路访问下的邻接关系建立的过程:
214230rlj0bhzr49l8gm8b.jpg
R1和R2之间通过f0/0相连,地址分别是192.168.12.1/24和12.2/24。R2和R3之间通过f0/1相连,地址分别是192.168.23.2/24和23.3/24。三台路由器上都起了loopback 0,地址分别是192.168.100.1/32,100.2/32,100.3/32。三台路由器的router-id分别是1.1.1.1,2.2.2.2,3.3.3.3。R1上先起的OSPF,R2接着起的,R3最后起的。
R1与R2之间的抓包如下:
214508ei5b7fiizzc5z5ty.jpg
214523npo5epeww6x1uzdg.jpg
R2与R3之间的抓包如下:
214538ptoe8tt2422ek4gk.jpg
214550l2qysvs7ncylcr9v.jpg
由于这个实验的抓包比较多,一个屏截不完,所以分了两次截屏,大家将就点看。
前3个包是R1向组播224.0.0.5发送的hello,这时只有R1的OSPF进程起了,R1此时处于down状态;
第4个包是R2向组播224.0.0.5发送的hello,这时R2的OSPF进程刚起,R2 down;
第5个包是R1向R2发送的单播hello,说明R1已经收到了R2发送的组播hello了,此时R1处于init状态;
第6个包是R2向R1发送的单播hello,这里有两种可能,一是R2收到R1的组播hello后处于init,二是R2收到R1的单播hello处于2-way,不管怎么样,R2肯定是很快就2-way了,因为这个交互的过程确实很快;
第7、8、9三个包分别是R1和R2向组播发送的hello,这时有人可能就有疑惑了,这往组播发送hello干嘛呢,正常应该是开始交互DBD然后获得信息啊?其实,这里正是多路访问下的体现。在R1发送组播hello之前,R1肯定也已经2-way了,他这个时候想组播发hello是在等,看还没有其他人加入到DR与BDR的选举中来。因为这个时候R1和R2都在waiting,且wait时间还没到,所以他们向组播发送hello,wait时间刚好是一个Dead周期,即正常40s。大家可以看看R1和R2这时是怎么说的:
150507qf8w2x4et8qnrn6n.jpg
150530p5m5medf9sw4t5dm.jpg
150554pdu5s3g4u33uuugr.jpg
R1说的自己的Active Neighbor是2.2.2.2,DR和BDR谁都不是,R2说的自己的Active Neighbor是1.1.1.1,DR和BDR谁也不是,因为这时他们都还在等,所以都没进行选,所以都这么说。
第10个包是R1向R2发送的DBD,因为这时R1的wait时间已经到了,到了之后R1就进如到Exstart状态了,他要进行DR和BDR的选举,以及主从关系的确立了,于是他向他唯一的Active Neighbor R2发送DBD,描述自己的信息:
151731yhochdhqcq6pdqhz.jpg
在报文中,R1对R2说,这时自己的第一个DBD,自己还有更多,自己是Master,R1这时处于Exchange状态;
第11个包是R2向组播发送的hello,因为这时R2的wait周期还没到,R2还得等;
第12个包仍然是R1在向R2发送DBD,因为R2的wait周期还没到,对于R1发过来的DBD,R2没有理,因为R2没有理所以R1继续给R2发,希望R2能收到,并响应:
152619u86566b6d29pdzb9.jpg
大家可以看到这个包里,R1仍然说这是他的第一个,显然他刚开始发的那个DBD并没有得到响应;
第13个包是R1向组播发送的hello,大家先看看里面的内容:
1529262j9qjlwkcy6xajk6.jpg
R1说DR是192.168.12.2,BDR也是192.168.12.2,因为这时R1只看到了R2这一个Active Neighbor,而且他的router-id还比自己的大,所以在R1看来R2应该是DR和BDR;
这时R2依旧没有理R1,于是R1的第14个包依旧是DBD,希望得到R2的响应;
第15个包是R2向组播发的hello,这时R2依旧在wait;
第16个包R1依旧在发DBD,希望得到响应;
第17、18、19都是跟上面一样重复;
第20个包是R2发给R1的DBD,这时R2的wait时间也到了,于是,R2也要参与到DR与BDR的选举中来和进行主从协商,于是R2给R1发DBD,描述自己的信息,说这时自己的第一个DBD,自己还有更多,自己的Master:
154025xypppskl82glsp2l.jpg
这时R2也经历了由waiting到Exstart再到Exchange的状态迁移;
第21个包给R2发的DBD,这个DBD,首先大小都比前面的DBD要大:
154403vt9ii6ky8ip2z9pc.jpg
这个包里,首先R1说这不是自己的第一个,因为前面他有发过DBD,自己还有更多,自己不是Master,因为他看到R2的router-id更大。另外,这个包增加了20个字节的LSA Header,用于描述自己的信息用的;
第22个包是R2向R1发送的DBD,这个DBD也增加了LSA Header用于描述自己的信息,R2说这不是自己的第一个,自己还有更多,自己是Master:
1550548rxfr8fxersdzroy.jpg
从23到29跟P2P讲的情况是一样的,当然DBD完了之后,R1和R2都由Exchange进入Load了;
第30包大家看的可能会比较纠结,是R2向组播发送的Update,我们点开来看:
155846vkvr2ywbvxzzc0y2.jpg
大家首先看看,第30个包里面描述的内容Type:Stub ID:192.168.12.0 Data:255.255.255.0 Metric:10和Type:Stub ID:192.168.100.1 Data:255.255.255.255 Metric:1,很明显这不是在描述自己的信息,大家再看第28个包,也就是R2响应R1的Request所发出来的包:
155835ln2itnvmnhmhcvpn.jpg
这里面描述的才是真正的R2自己所连的网络的信息,通过比较,大家应该能想的出,第30个包正好是R1给R2网络信息,那么R2发送这个的目的就是告诉R1,自己从他那得到了这些信息;
第31个包是R1发给R2的Acknowledge,也就是说R1要告诉R2他收到了R2的组播Update,并且知道他获得了哪些信息;
第32个包是R2发的组播Update,这跟前一个组播Update又有不同,还是点开来看:
161113zv10hsta15szpa08.jpg
大家可以看到这个Update里面写着network-LSA(2)说明这是类型2的LSA(关于LSA的类型,后面会讲),然后下面写的是Attached Router:1.1.1.1和2.2.2.2,这是R2在描述自己的拓扑,说自己连着一台路由器,router-id为1.1.1.1,自己也是台路由器,自己的router-id是2.2.2.2,这是方便其他路由器能够清晰的描绘出拓扑从而进行SPF计算;
第33个包是R1向组播发送的Update,这个包首先要注意的是,他的组播地址变了,是224.0.0.6而不是224.0.0.5,点开来看:
162023uobb47zo3miiobiq.jpg
这个包说自己连着个Transit,ID是192.168.12.2 Data:255.255.255.0 Metric:10 自己还连着个Stub,也就是自己的环回口。那么为什么往224.0.0.6里发呢?因为路由器发现链路状态发生变化后,将一个LSU发送到224.0.0.6,该LSU包含更新后的LSA条目,且LSA的序列号加1。该多播地址表示所有的DR和BDR。因为R1这个时候收到了R2的Update,他更新了自己数据库,所以他要告诉DR和BDR让他们知道自己的数据库发生了变化,所以向DR和BDR所在组播地址224.0.0.6发送;
第34个包是R2向224.0.0.5发送的Update,这个Update是针对R1的那个Update做出的响应,他往224.0.0.5发送,是要让改组里的所有成员注意更新:
163630m1glgpd74im6pbzf.jpg
第35个包是R2向224.0.0.5发送的Update,这个Update是R2最终所知道所有的网络信息,因为R2是DR,他要让所有成员跟自己同步信息:
164030u3x6uxvn0w3bd0ux.jpg
第36个包是R1发给组播224.0.0.6的Acknowledge,确认DR所发的LSU自己都收到了;
第37个包是R2发给组播224.0.0.5的Acknowledge,确认R1发的Update自己收到了。
至此,R1和R2Load完毕,状态改为Full。
至于从第50个开始R2又在发LSU,这是因为我R3起的比较慢,这时R2在向组播发更新,让大家重新同步数据库。
R2与R3之间的情况也同样来分析。
OSPF在P2P和多路访问下的邻居建立和信息交互就讲完了,大家可能觉得这跟EIGRP比起来好像麻烦了不少,EIGRP为什么简单呢,因为EIGRP在建邻居的过程中通告的都是路由,而OSPF通告的链路状态,是不同的东西,由于通告的是链路状态,所以OSPF要求大家的数据库同步后一起SPF计算,由于需要同步数据库,所以需要进程LS的交互,才有了在多路访问下DR和BDR的选举来减少交互次数。
下面,来把在邻接关系建立中没讲的几个东西给补上。
首先,就是OSPF邻居建立需要满足哪些条件。我们来随便打开一个Hello包来看看Hello分组到底长什么样。
171009lmzxf3x1xfz2xl13.jpg
首先,在OSPF头部里,有个OSPF的版本,里面写的2,这是OSPF在IPv4里所使用的版本;接下来是Message Type:Hello Packet(1)说明这个包的类型是Hello包,1表示的是5类OSPF分组中的第一类,也就是Hello,2类是DBD,3类是LSR,4类是LSU,5类是LSAck;再接下来是Packet Length:48是说Hello包里的数据有48个字节;接下来Source OSPF Router:1.1.1.1(1.1.1.1)这是说发送这个Hello包的路由器router-id是1.1.1.1,括号里的1.1.1.1是说本路由器的router-id是1.1.1.1;再接下来的区域ID,0.0.0.0是说发送本Hello包的路由器在区域0里;接下来是校验和,后面说correct,说明校验是正确的;再接下来是身份验证类型,这里是空,是因为我没有配验证,这里可以有明文验证和MD5验证;接下来是验证的内容,也就是你配的验证的密码。OSPF的头部就是这些信息,接下来再看Hello包里放了什么东西。首先是掩码,这个在多路访问时是需要检查的;接下来是Hello周期,一般默认是10s,但在NBMA下,Hello默认是30s;接下来是Options,这8个比特我自己也还没搞得非常清楚,回头搞懂了再说,我也就知道几个比特的用法;接下来是路由器的优先级,这个是用来选DR和BDR时要看的,默认是1(注意一下,《学习指南》说默认是0,是有问题的),最大255,0是不参与选举,不是表示最小,优先级比大的,当优先级一样时再看router-id,这个也是比大的,而且router-id是唯一的,所以建议router-id手工配,具有可管理性;接下来是Dead时间,是Hello的4倍,所以默认是40s或120s(NBMA);接下来就是DR、BDR和Active Neighbor;最后大家还看到有个LLS,这个是因为前面的option里的L位被设置了,这个是用来做Graceful Restart用的,有些厂商这个默认是不设置的,而思科是设置的。
看完Hello包里的内容,现在来说说哪些东西是必须匹配的。首先是Hello和Dead这两个计时器要匹配,这点EIGRP不要求匹配,所以很多人容易忽略;第二是区域ID,只有在同一个区域里的路由器才能建立邻居关系;第三是验证,包括验证类型和验证内容;第四是掩码,掩码不匹配邻居也起不来;第五是option,就是上面我没展开讲的那8个bit,这个不匹配也不行,这里可以对其中几个bit简单说下,DC位是按需电路位Demand Circuits,大家如果记得的话,当时上课时老李配了个virtual link这位就被设置了,把他当按需电路来看,L位就是设置LLS,这位被设置,表示后面将跟上12字节的LLs,做GR用的,NP位是NSSA,标记一种特殊的区域类型,后面会讲的,MC位跟多播相关,E位是外部路由功能位,MT位是多拓扑路由。这些option在建邻居时也要匹配,比如前面的LLS,思科是带着的,若有的关闭则起不来邻居,末节区域不匹配也起不来邻居等等。还有个东西需要注意的是MTU,若MTU不匹配前面的Hello是没问题的,但后面的DBD就不行了,所以说MTU不匹配最终还是不能正常交互。
下面再讲讲这个router-id,有很多人对这个router-id的问题一直还比较纠结。
OSPF RouterID唯一地标识了网络中的每台OSPF路由器。OSPF路由进程启动时将选择RouterID。RouterID是32位的数字,所以可以使用IP地址作为RouterID,在整个OSPF自治系统中,RouterID都不能重复。设置RouterID遵循以下规则:
(1)默认情况下,在OSPF启动时,将RouterID设置为最大的活动物理接口IP地址。该接口无需参与OSPF进程,但必须处于活动状态。因此,路由器上必须至少有一个IP接口处于活动状态,这样OSPF才能设置RouterID。如果OSPF进程启动时,没有任何有IP地址的接口处于活动状态,将发生如下错误:
2w1d: %OSPF-4-NORTRID:OSPF process 1 cannot start.
(2)如果有环回口,其IP地址总是优于物理接口地址,因为环回口永远不会关闭。如果有多个环回口地址,则将RouterID设置为最大的活动环回口地址。
(3)如果配置了OSPF路由器配置了命令router-id ip-address,这样设置的RouterID将优于其他两种方式选择的RouterID。
我们在打上router ospf xx时就启用了路由器的ospf进程,这个时候路由器就要开始选router-id,所以在起ospf进程前最好先将接口的ip地址配上去,还得是开的,我们在用命令outer-id xxxx时是手工的改router-id,也就是说我们在敲上router ospf xx时路由器先选了router-id了,我们后来敲router-id xxxx是手工改的,但是手工改也得早改,你别等到network之后再改,这是可能你敲的慢邻居关系都已经建好了,你再改的话是重新建立邻居关系。上封帖子我说OSPF进行SPF的条件是拓扑发生变化,那么这里我再说,对OSPF来讲“稳定压倒一切”(这是萌爷彪哥们在讲OSPF时最常说的一句话)愿意,前面我也分析了。所以没事断邻居这种事最好少发生。
由于OSPF在P2P和多路访问上的行为不一样,于是就有这样一个问题——OSPF是通过什么来判定链路是P2P的还是多路访问的呢?这个是通过查看二层的封装来判定的。OSPF只要看见二层的封装是PPP、HDLC、FR point-to-point等他就认为是P2P的,而看到二层封装的是802.3、FDDI、Token Ring等就认为是多路访问的。P2P就按照P2P的来进行邻接关系建立的流程进行,多路访问就按照多路访问进行。但是,这样有产生了问题。多路访问下,OSPF认为就要进行DR和BDR的选举,但假如你的拓扑真的只有两台路由器,并且是通过以太口相连,选举反而变得更麻烦了。因为本来就只有两台路由器,你却硬生生的多出个选举,这不断没减少交互,反而增加了流程,仅仅由于OSPF通过你的二层封装判定你是多路访问而已。所以,假如真的就只有两台路由器的话,建议在接口模式下打上ip ospf network point-to-point让OSPF知道只有两个人不需要选举。另外一个问题就是,多路访问,OSPF就认为可以广播,但假如你是个FR的环境,你是多路访问但你不支持广播啊,不支持广播就没法通过组播发送Hello,于是问题又来了。这种环境我们称之为NBMA,叫做非广播多路访问。
由于OSPF只支持P2P和广播类型的多路访问,于是,对于接口类型是NBMA的,OSPF是不理的,因为OSPF自诩为还比较智能,我看到接口是NBMA的我发都不发,就不会出问题了,EIGRP和RIP还是会发的,不过发了也会封装失败,所以看上去OSPF还想还是真有那么一点智能。但是你不发又不行啊,不发邻居关系起不来啊,邻居起不来路由就得不来,最终你还是没法正常访问啊。但NBMA只是你OSPF的一厢情愿,我真的就是NBMA吗?于是在NBMA环境中就有两种方法来解决这个问题。
第一种是让其支持广播;第二种就是改接口类型,让OSPF不认为你是多路访问。
对于第一种,具体做法就是在做frame map 时跟上广播参数,通过二层的广播特性让其支持广播。但这时又有问题了,既然你支持广播了,又是多路访问,那么就要进行DR与BDR的选举,但是真正的多路访问是全互联的,而FR的环境很多都是Hub-Spoke的结构,你都不是全互联,两两之间都不能正常交互,你怎么选呢,选不出来邻居关系就不能正常建立了,邻居起不来路由还是学不来,于是又纠结了。这种情况下的做法是手工指neighbor,你不是邻居起不来吗,我手工告诉你邻居是谁总行了不,还有就是你不是没法选DR和BDR吗,那么也可以通过人工干预的方式来选,就是将Hub选成DR,其他都是DR other,为什么没有BDR,其实这个问题很好想,你都是Hub-Spoke的结构,大家都是通过中间那台路由器进行连接的,假如DR真的挂掉了,其他人的交互当然就没法进行了,即使你选了BDR也没没有意义的。在这个情况下还有个问题,留到后面实验时再说。
对于第二种,就是将接口改成点到点的,这样邻居就起得来了。但是改成P2P你又得浪费地址,现在ipv4地址本来就紧张,你还浪费地址,这当然也是不好的。于是乎,我们的IETF为OSPF量身打造了一种新的类型叫做P2MP,P2MP来处理上是当做单独的P2P来看,而且还能不用浪费地址。我们不得不感叹人类的智慧,即不违反规定还能把事给搞定!
接口的类型其实除了这几种还有两种。一种是loopback,叫做环回口类型,这种是思科专门为环回口设计的一种类型,说到环回口类型,那在思科的OSPF FAQ中可是放在了第一个。没办法,谁叫这是思科弄的,当然得拿出来说事。这个环回口类型说的是将环回口当做32位的末节主机来看。思科上的原文如下:
Q. Why are loopbacks advertised as /32 host routes in OSPF?
A. Loopbacks are considered host routes in OSPF, and they are advertised as /32. For more
information, refer to section 9.1 of RFC 2328 . In Cisco IOS Software Releases 11.3T and
12.0, if the ip ospf network point−to−point command is configured under loopbacks, OSPF
advertises the loopback subnet as the actual subnet configured on loopbacks. ISDN dialer
interface advertises /32 subnet instead of its configured subnet mask. This is an expected
behavior if ip ospf network point−to−multipoint is configured.
如果你不想以32位的主机来看待,可以再环回口接口模式下敲上ip ospf network point-to-point 来改变环回口。
还有一种就是virture-link类型,这个思科不推荐,大家也就只要知道有这么个玩意就行了。
关于OSPF的几种不同类型相互之间的操作及实验就留到下一封帖子在跟大家讲,今天就写到这了。其实,这个帖子写的也够悲催的,我写到一半,同学说开始选课了,我刚打开学校的服务器网页,电脑直接死机了,前几个小时写的东西全没了,我又从头写了一遍,真是悲剧啊,严重建议萌爷看看能不能把存草稿给整一下,以后写不完可以存下来,防止出现意外,其实我也有先写在word上在一次转过来,但是我发现从word上转过来插入图片什么的会很麻烦,所以,还是希望能有个保存机制。当然,这也只是我个人的一点想法,就算没有,该发的帖子还是会接着发的。还是欢迎大家帮忙指正和完善,大家一起学习!

MAR1-R2.rar

2.19 KB, 下载次数: 18, 下载积分: 金币 -2

MAR2-R3.rar

2.05 KB, 下载次数: 22, 下载积分: 金币 -2

CCNA考试 官方正规报名 仅需1500元
回复 论坛版权

使用道具 举报

芯蕊111 [Lv8 技术精悍] 发表于 2013-8-11 21:16:05 来自手机 | 显示全部楼层
路过占楼而已
回复 支持 反对

使用道具 举报

cxvzwa [Lv8 技术精悍] 发表于 2013-10-12 17:07:53 | 显示全部楼层
写的真的很不错
回复 支持 反对

使用道具 举报

伊達政宗 [Lv8 技术精悍] 发表于 2013-10-12 20:03:52 | 显示全部楼层
我是个凑数的。。。
回复 支持 反对

使用道具 举报

seekus [Lv8 技术精悍] 发表于 2013-10-17 13:42:38 | 显示全部楼层
回复 支持 反对

使用道具 举报

kid93c24 [VIP@钻石] 发表于 2013-10-18 22:49:02 | 显示全部楼层
看帖回帖是美德!:lol
回复 支持 反对

使用道具 举报

lily111 [Lv8 技术精悍] 发表于 2013-10-19 10:46:25 | 显示全部楼层
相当不错,感谢无私分享精神!
回复 支持 反对

使用道具 举报

jyb75820400 [Lv8 技术精悍] 发表于 2013-10-19 16:38:30 | 显示全部楼层
我是个凑数的。。。
回复 支持 反对

使用道具 举报

wu100 [Lv8 技术精悍] 发表于 2013-11-6 22:04:25 | 显示全部楼层
过来看看的,感谢攻城狮论坛
回复 支持 反对

使用道具 举报

skyii [Lv8 技术精悍] 发表于 2013-11-7 14:23:08 | 显示全部楼层
真是 收益 匪浅
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|无图浏览|手机版|网站地图|攻城狮论坛

GMT+8, 2026-6-18 09:22 , Processed in 0.114930 second(s), 17 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4 © 2001-2013 Comsenz Inc.

Designed by ARTERY.cn