论文部分内容阅读
Internet是一个由多个自治系统相互连接构成的网络,BGP协议就是一种应用在基于TCP/IP网络的多个自治系统间交换网络层可达性信息的路由协议,研究BGP协议对Internet的发展有着重要的意义。本文使用Linux操作系统提供的TCP/IP协议栈设计并实现了一款BGP协议路由软件。该路由软件主要包含两个子系统,一个是BGP子系统,用于运行BGP协议;另一个是RMer子系统,用于读取和更新Linux内核路由,同时将内核信息通过RMER报文发送给BGP系统。BGP系统中实现了BGP邻居关系的建立、BGP路由通告、BGP路由聚合、BGP路由重分配、BGP路由属性的管理和BGP有限状态机等。BGP系统和RMer子系统间使用基于Linux系统本地的TCP连接进行通信,RMer系统和Linux内核之间使用入输出控制接口进行通信。BGP系统和RMer系统共同使用VTY模块解析和处理用户输入的命令行。总系统中采用了虚拟线程管理机制,共有6种类型的线程,READ类型线程用于读操作,WRITE类型线程用于写操作,TIMER类型线程用于处理超时事件,EVENT类型线程用于处理BGP状态机事件,READY类型表示准备就绪可以被调度的线程,UNUSED类型表示空闲的线程。在系统设计过程中,利用Linux系统强大的网络功能,充分使用了模块化的设计方法,便于BGP功能的扩展和新协议的增加。对该BGP路由软件测试的结果表明,本文设计的基于Linux TCP/IP协议栈的BGP协议实现了BGP协议的主要功能,能够稳定地运行,具有一定的学术科研价值和商业价值。