BERKELEY UNIX 4.2下的EGP网关( 二 )


Poll间隔值)来进行传导达成一致 。通过交换停止和停止确认报文终止获取过程 。
邻居可达性是一个Hello commands和确保各网关正在运行的I - H -U ( I heard you)回应周期
式交换 。。当前30秒最小间隔被用于越过ARPANET 。只有一个网关必须发送一些命令,
其他的网关可以利用这些命令判定可达性 。
正发送可达性命令的网关叫做处于主动态,而正回答的网关叫做处于被动态 。
网络可达性由周期地发送Poll commands和接受表明该网络经由一或多个在共享网络上的网
关可以达到的更新应答来判定 。当前2分钟最小间隔被用于越过ARPANET 。
2. 网关设计
EGP是一种具有松散定时约束的polling协议 。因此,唯一要求具有较高性能的功能是包转
发 。Unix 4.2已经将包转发技术嵌入到内核内核内部,在那里可以达到最佳性能 。
在编写Unix 4.2的时候,没有为误编路由的包发送ICMP ( Internet控制消息协议)重定向报
文 。
这是一个必要ofinternet网关并且Berkeley以后将加入 。
EGP和路由更新功能作为一个用户进程实现 。因为只有微小的更改需要加入Unix内核,
这简化了开发和分配 。这个方法与基于Xerox NS路由信息协议( Routing Information
Protocol [ Xerox 81])的Unix路由分配程序" routed " [ Berkeley 83]的方法是类似的 。
2.1路由表
一个路由由一个目的网络号组成,相邻网关的地址用在直接相连的网络上,而且用到达目的
网络的网关站数作为距离的公制 。
存在两组路由表,内核列表(被用于包转发技术)和EGP进程表 。该内核已经为主机和网
络目的地设立了独立的列表 。EGP进程仅维护网络路由表 。当接到EGP更新报文时EGP
列表被更新 。当一个路由被更改时核心网络列表通过SIOCADDRT和SIOCDELRT ioctl
系统调用被更新 。在初始化时为了保持一致性,内核网络路由表由内核存储映象文件
/dev/kmem读取并被拷贝到EGP列表中 。
此EGP的实现被设计成在网关(也是一个主机)上运行 。
因为用polling获得路由更新相对较慢,在通过EGP通知EGP进程之前主机通过ICMP重
定向收到路由变更的通告是可能的. 重定向直接更新内核列表 。EGP进程在一个生疏的插
座上侦听重定向报文并且更新它的路由表以维护它们与内核的一致性 。
EGP进程和路由表被当做两个单独的列表进行维护,一个为外部路由( via different AS网关)
而一个为内部路由(通过此AS的网关) 。外部路由表通过EGP更新报文更新 。内部路由
表当前是静态的并且在初始化时设定 。它包括全部直接连接的网络,通过SIOCGIFCONF
ioctl系统调用和任何内部非routing网关读自外部网关协议初始化文件, EGPINITFILE来确
定 。将来内部路由表可以被内部网关协议( IGP)动态地更新.
为外部和内部路由维护单独的列表简化了仅包含内部路由选择信息[ Mills 84b]的传出更新
报文的预备 。在内部路由失败情况下,还答应选择作为内部路由备份保存的外部路由进行
替换 。
候选路由标记以RTS_NOTINSTALL从而表明该内核路由将不会被更新 。在当前的实现中
候选路由不被使用 。
2.1.1输入更新
EGP更新用来更新外部路由表,假如满足下列中的一个:
-不存在目的网络的路由表项而且公制表明该路由是可以达到的 。
-被报告的网关与当前路由相同 。
-被报告的距离公制小于当前公制 。
当前路由比全部已经获取的EGP邻居极限轮询间隔旧 。简而言之,该路由被来自上次
的更新所忽略 。
除了省缺路由之外,假如任一外部路由表项在4分钟或3次最大轮询间隔(任何一个较大的)

推荐阅读