什么是路由器?
具有路由,转发机制的网络设备。
什么是路由,什么是转发?
决定数据包从来源端到目的端所经过的路由路径 (host到host之间的佳传输路径),这个过程称为路由。
将路由器输⼊端的数据包移送至适当的路由器输出端(在路由器内部进行)这个过程称为转发。
路由器的基本工作原理
在网络层使用路由方式转发数据包,实现异种网络的互连。
路由器的发展阶段
第一代:固定接口,集中转发。
满足低速网络互联需求,集中式转发,处理能力是最大的瓶颈;接口种类少,固定配置。
第二代:集中转发,模块化接口。
满足低速网络互联需求;接口种类多,配置灵活,集中式转发,一次查表多次路由,直接在网卡层面处理数据包,网卡自带内存与cache,数据不经过cpu与内存,直接走系统总线。处理能力依然是最大瓶颈。
第三代:分布式软件转发。
分布式转发,处理能力较强,接口种类多,配置灵活,交换结构路由层面与转发层面分开。共享总线的容量直接限制了路由器的吞吐率,成为系统无法避免的瓶颈。
第四代:基于asic与交换矩阵
IP处理能力出现突破,端口丰富且容量大,实现了无阻塞交换,接口拥有cam芯片,不依赖于网卡。但对QOS,MPLS VPN,组播,IPV6的支持能力较弱。
第五代:全业务路由器
集成了众多功能的路由设备,具有高性能NP芯片,线速转发,拥有物理层处理链路层处理,合法性检查,表查找,流分类处理,QOS处理,入队列处理,切片处理等功能,实现了高速无阻塞交换,支持组播交换。
第六代:多级交换网结构路由器。
多级交换结构、严格意义上的无阻塞结构,由多个交换单元互连起来,多级结构在操作上较复杂,但是可以扩展到成百上千个端口,这对于下一代 Internet核心路由系统是绝对必要的。
NP与ASIC的比较
性能更高:内部集成数十个CPU及硬件协处理器,硬件加速器,在实现复杂的拥塞管理,队列调度等QOS功能前提下,仍能保持线速转发,实现“硬转发”;
扩展更灵活:预留的用户接口可编程,扩展灵活;业务支持能力强;对新的增值业务(MPLS,QOS,组播等)迅速支持;
管理灵活,开发方便,大大缩短了二次开发周期;预留IPv6接口,可通过软件平滑升级;
可靠性高:芯片转产前通过了严格的疲劳性测试,适合开发电信级设备。
控制路径:处理目的地址是本路由器的高层协议报文,特别是各种路由协议报文。不是路由器的关键路径,但是负责完成路由信息的交互,从而保证了数据路径上的报文沿着最优的路径转发。
数据路径:处理目的的地址不似乎本路由器而需要转发的报文,因此数据路径是整个路由器的关键路径,他直接影响路由器的整体性能。
控制报文给路由引擎,转发报文给转发引擎。
路由功能:用于转发表,包括IP地址/子网/下一跳
转发表:由源地址到目的地址和接口标记组成
转发芯片:asic芯片
新转发表:三元匹配:0 ,1, 不关心的其他。
Cam芯片:二元匹配芯片。一种ASIC芯片,分析转发表时一次性工作即可找到地址(快)
Tcam芯片:三元匹配芯片。表排列精确在上不精确在下。用于ip路由器和acl,qos(路由匹配,策略匹配,防火墙匹配,最长匹配原则)
输入端口处理:物理层接受数据包,识别信号脉冲转化为01代码,发送至数据链路层,网络层分组转发。
OSPF
SPF(short
path first d.j算法)
建立过程:路由器以自己为根构建最短路径树,第一步通过d.j算法在考虑路由器和传输网络之间的连接下,根据连接状态数据库子集形成树。第二步,考虑存根网络连接,作为叶子加入树。
OSPF的状态机:邻居间关系的各个阶段
Down: 一旦本地发出hello包进行下一状态
Init
初始化:接收到的hello包中若存在本地的RID,那么进入下一状态
2way双向通信:邻居关系建立的标志
条件匹配:
1、点到点网络直接进入下一状态
2、MA网络将进行DR/BR选举(40S),非DR/BDR间不能进入下一状态;
Exstart
预启动:使用类似hello
的DBD包来进行主从关系选举,RID数值大为主;优先进入下一状态。
Exchange
准交换:使用真实的DBD来共享数据库目录,需要ACK确认;
Loading加载: 使用LSR/LSU/LAack来获取未知的LSA信息;
Full转发:邻接关系建立的标志;
Lsa加载不完全时,会卡在loading状态。
卡在建邻状态的情况有:
1相同的route id
2认证
3区域id 不同
4区域标志不同
5优先级都为0时
6 mtu不一致
7 包交互问题
8 lsa加载不完整
9 hello时间不一致
10 ma网络类型会检测接口地址的掩码,不一致会出问题
11 abr出接口包不通
1类lsa的网络类型(构建拓扑)
Point to point 两台路由器经由两条有向线段直接相连,每个方向一条。
连接两个接口的网段被表示成Stub网段。
Transit 多路 一种ma网络 网段有能力转发既不是本网段产生的,也不以本网段做为目的地的数据。
有至少两台路由器的广播型网段或NBMA网段就是一种Transit网段。
Stub 网段表示该网段只有数据入口,例如一个Loopback接口就是一个Stub网段。
virtual link
路由器lsa由区域内所有路由器产生。
2,网络lsa由区域内的DR或BDR产生,网络lsa也仅仅在产生这条网络的lsa的区域内部进行宏泛。
3,网络汇总lsa由abr产生,可以通知本区域内的路由器通往区域外的路由信息。在一个区域外部但仍然在一个OSPF自治系统内部的缺省路由也可以通过这种LSA来通告。如果一台ABR路由器经过骨干区域从其他的ABR路由器收到多条网络汇总LSA,那么这台始发的ABR路由器将会选择这些LSA通告中代价最低的LSA,并且将这个LSA的最低代价通告给与它相连的非骨干区域。
4,ASBR汇总LSA 也是由ABR产生,但是它是一条主机路由,指向ASBR路由器地址的路由。
5,自治系统外部LSA 由ASBR产生,告诉相同自治区的路由器通往外部自治区的路径。 自治系统外部LSA是惟一不和具体的区域相关联的LSA通告,将在整个自治系统中进行泛洪。
6,组成员LSA 目前不支持组播OSPF (MOSPF协议)
7,NSSA外部LSA由ASBR产生,几乎和LSA 5通告是相同的,但NSSA外部LSA通告仅仅在始发这个NSSA外部LSA通告的非纯末梢区域内部进行宏泛。
在NSSA区域中,当有一个路由器是ASBR时,不得不产生LSA 5报文,但是NSSA中不能有LSA
5报文,所有ASBR产生LSA 7报文,发给本区域的路由器。
Type-3 LSA及Type-4 LSA的防环
OSPF要求所有的非0区域必须与骨干区域直接相连,区域间路由需经由骨干区域中转。
OSPF要求所有的非0区域必须与骨干区域直接相连,区域间(Inter-Area Route)路由需经由骨干区域中转。这个要求使得区域间的路由传递不能发生在两个非0的区域之间,这在很大程度上规避了区域间路由环路的发生,也使得OSPF的区域架构在逻辑上形成了一个类似星型的拓扑
ABR只能够将其所连接的区域的区域内部路由注入到Area0,但是可以将区域内部路由及区域间的路由注入到非0常规区域。ABR从非骨干区域收到的Type-3)LSA不能用于区域间路由的计算。
OSPF对ABR有着严苛的要求,区域间的路由传递的关键点在于ABR对Summary LSA的处理。
当一台ABR在非Area0的区域中收到Type-3
LSA时,虽然它会将其装载进LSDB,但是该路由器不会使用这些Type-3
LSA进行路由计算,当然它更不会将这些Type-3 LSA再注入回Area0中。
ABR不会将描述一个Area内部的路由信息的Type-3
LSA再注入回该区域中。
实际上,OSPF区域间路由的传递行为,很有点距离矢量路由协议的味道。以下图为例,在Area1中,R1及R2都会泛洪Type-1 LSA、Type-2 LSA,两台路由器都能够根据这些LSA计算区域内路由,而R2作为ABR还担负着另一个责任,就是向Area0通告区域间的路由,实际上它是向Area0中注入用于描述Area1内路由的Type-3 LSA,而这些Type-3 LSA是不会发回Area1的——是的,类似水平分割行为对吧?接下来R3利用这些Type-3 LSA计算出了区域间的路由,并且为Area2注入新的Type-3 LSA用于描述区域间的路由,而这些Type-3 LSA同样的不会被注入回Area0。
R2在向Area0通告Type-3 LSA,为每条区域间路由携带上Cost值,这个值就是它自己到达各个目标网段的Cost,而R3收到这些Type-3
LSA并计算路由时,路由的Cost就是在R2所通告的Cost值的基础上,加上R3自己到R2的Cost值,然后,R3向R4通告这些区域间的路由时也携带者自己到达目标网段的Cost,而R4到达目标网段的Cost则是在R3的通告值基础上累加自己到R3的Cost——典型的距离矢量行为。
Type-3 LSA还涉及了DN比特位,用于在MPLS VPN环境下的环路规避
DN位:PE生成Type3 、Type5与Type7
LSAs(cisco设备是按照RFC4577,只对Type3 LSA置位,华为type5也置位) 发布给CE 时,将标志位DN置位,其他类型LSA 的DN 值为0。PE 路由器的OSPF进程在进行SPF计算时,忽略DN 置位的Type3、Type5 和Type7
LSAs。
DN
bit的作用是为防止路由环路。当PE收到DN bit置位的LSA不会进行处理,这样就防止了在CE双归的场景下,由于一个PE从CE学到另一个PE产生的LSA而产生的环路。
域外防环
1)利用type-4 LSA防环
当一台OSPF路由器将外部路由引入OSPF域后,它就成为了一台ASBR,被引入的外部路由以Type-5 LSA在整个OSPF域内泛洪。一台路由器使用Type-5 LSA计算出路由的前提是两个,其一是要收到Type-5 LSA,其二是要知道产生这个Type-5 LSA的ASBR在哪里。与ASBR接入同一个区域的路由器能够根据该区域内泛洪的Type-1 LSA及Type-2 LSA计算出到达该ASBR的最短路径,从而计算出外部路由。而其他区域的路由器就没有这么幸运了,因为ASBR产生的Type-1 LSA只能在其所在的区域内泛洪,所以才需要Type-4 LSA。因此其他区域的路由器在获取Type-4 LSA后便能计算出到达ASBR的最短路径,进而利用该ASBR产生的Type-5 LSA计算出外部路由。Type-5 LSA将会被泛洪到整个OSPF域,表面上看,它本身并不具有什么防环的能力,但是实际上,它并不需要,因为它可以依赖Type-1 LSA及Type-4 LSA来实现防环。
2)type-5 LSA中 external route tag防环
五类LSA Route-tag与DN位置位都存在时(思科dn不置位),首先根据Route-tag值来判断是否引入该路由,如果Route-tag值中的AS号信息与引入的BGP的AS号一致,则拒绝引入该路由。
7类转5类时,如果有两个bdr,使用route id 大的bdr转
如果想做分点自动扩张,应选择ma或者点到多点网络
Mgre伪广播(广播映射)也可以
一般而言,最好的方案是点到多点,可以通过mgre改良可以克服分支与分支连接要经过stub的缺点
五类比三类多个FA地址(forward address)
FA的表示 全零或有地址0.0.0.0
有地址时覆盖原asbr,fa地址做下一跳
FA的接口必须是ma网络类型
Fa会引起路由表的递归查找,不是o,整个路由表会消失,(路由不加表现像)
Fa本质上是下一跳
Bma与点到点建邻也会发现路由不加表现像
Ospf的过滤操作
1 分发列表过滤,只能写in方向,还可以匹配route-map(ip route-source匹配的是rid)
2 域间过滤,过滤三类lsa路由,用来过滤特定的路由+not-advertise关键字
Ospf
stub router
所有经过它的lsa会赋予最大的metric 65535
瞬时黑洞属于一种特殊的路由黑洞,出现可能会自动消失(在一台路由器重启后,路由信息未收敛成功时,选择该路由器存在的一条链路进行数据转发时可能会出现瞬时黑洞)
Max-metric
router-lsa on-startup wait-for-bgp在设备重启的时候ospf会等待bgp收敛完成后取消最大mertic设置max,,,,lsa永远经过他的lsa会使最大的metric
Ospf的完美重启(用于路由 ,交换双引擎设备)
Graceful
restart
不清空fib表