vlambda博客
学习文章列表

什么是通信的保活(Keepalive)机制?

车总您好,冒昧打扰,想向您请教一个问题。OSPF的hello周期是10s,保活时间是30s,那么假如已经连接在网络中的某个节点突然断开了,是不是他的邻居借点要在30s后才能发现?假如上层网络是UDP的话,是不是在这30s内所有发给这个节点或途径这个节点的包都会丢呢?
 
因为我在网络仿真软件中发现当用UDP-OSPF的时候,在两次hello中间将某个节点关闭了,仿佛邻居会很快发现这个链路失效并且洪泛,最后没有造成UDP的数据包丢失。
 
昨天有一位朋友私信我这个问题,上周一名VIP会员也问过类似的问题,这个问题非常有代表性,今天咱们来详细聊一聊这个话题。
 
首先问大家一个问题,路由器、三层交换机、防火墙是计算机吗?
这些设备在硬件架构设计可能会与传统意义上的计算机有些许的不同,比如没有接显示器、鼠标、键盘的接口,但是他们依然是计算机。如果你愿意,可以用Console接口连接电脑,使用一个SSH软件登录设备,设备的输出(Output)就可以打印在电脑的显示屏上,同时可以将用户输入(Input),诸如鼠标点击、键盘输入输送给这些设备,从而实现I/O操作。所以这些设备是广泛意义上的计算机。
 
既然是计算机,那么这些设备有自己的操作系统吗?
有的,通常这些设备的操作系统都是从Linux-Like剪裁而来,为了实现更友好的用户界面,设备商通常会优化BSH、CSH、RSH,这些Shell界面用于系统管理员配置、管理、监控这些设备,通常也称这些界面为了CLI(Command Line Interface)接口。
 


为了让配置界面更加友好,厂商可能还会提供图形化界面GUI(Graphic User Interface)接口,这样初级工程师就可以独立完成配置。但是这些内容不是本篇的重点,还是回到文章的主题。
 


 
既然路由器是计算机,也运行着操作系统,那么当用户配置OSPF协议时,在操作系统眼里,OSPF是一个什么样的存在?
一个进程(Process)而已。操作系统作为计算机的管理调度中枢,拥有至高无上的管理权限,任何进程的运行(Run)、等待(Pending)、游手好闲(Idle)、挂起(Suspend),都由操作系统统筹管理。自然OSPF进程也不例外。
 
重点来了,当OSPF进程完成路由表同步(收敛完成),没有外部事件的触发、也没有时钟的唤醒,OSPF进程在内存里是一种什么状态?
 
以下内容仅供会员阅读。如何成为会员?
 
 
此处省略1500+字。。。
 
在核心网的FRR(Fast Re-Route)场合,从检测到链路失效到完成备份链路的切换(Switch-over)要≤ 50毫秒,如何才能实现这个艰巨的任务呢?
 
答案就是BFD(Bi-Directional Forwarding Detection)!有了BFD的鼎力相助,OSPF进程可以实现≤50毫秒的快速链路切换。Keepalive是一个庞大的话题,OSI参考模型每层理论上都有自己的Keepalive机制。今天先写到这里,以后有机会再更新。