最近的工作涉及到了rip和ospf两个相关的协议,虽然仅仅是修两个bug,但是个人还是对这两个协议是如何实现的产生了很浓厚的兴趣。因此,就抽了一段时间读了一下quagga的源码。
相比于我之前读的ovs相关的代码,quagga的代码简单了不少,毕竟可供参考的资料太多了。大致花了一个月的空闲时间读完了rip和ospf的源码(其他协议没用到,也就没有读了)。真的如果静下心来的话,估计10来天就够了。
首先要说的是,rip和ospf都是单线程程序,通过和zebra进行通信来设置相关的路由信息。所以还是很好读的。
至少在读代码之前,你要先了解一下相关的协议,比如读rip之前,要先对这个rip这个协议有一个很好的认识,只要对协议有一个比较清楚的认识,知道协议每一步要干什么,那么读起代码来就很顺畅了,毕竟代码只是协议的翻译而已。
关于这两个协议,比较推荐的书籍是思科的,比如tcp/ip路由技术(第一卷),rip这么简单的协议就不讲了,ospf这个东西比较复杂,读这本书可能还有些困难,特别推荐51上面的一个视频 https://edu.51cto.com/course/709.html。这个基本将ospf讲的深入浅出了,对照着书籍,然后琢磨着代码,可以很快的就将代码中的难点一一扫除。
另外还需要推荐http://ccietea.com/
可以到里面找一些ospf以及其他协议的资料,讲的不错.
quagga的代码写的挺清晰易懂的。希望大家也可以和我一样,从中学到很多东西。
放上一份带了注释的源码(其实就ospf有比较详细的注释):
https://github.com/lishuhuakai/quagga_reading