免费注册 查看新帖 |

Chinaunix

广告
  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1475 | 回复: 5
打印 上一主题 下一主题

[网络管理] 请问Linux下能不能实现在数据包查找失败时的路由表添加功能? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-07-20 16:27 |只看该作者 |倒序浏览
最近在做一个项目,在linux下的某个路由协议的设计。

在一般的计算机中,当数据包发送时,根据ip地址,通过路由表的查找决定要发送的interface。如果没有找到合适的路由,那么这个包将被转发到缺省网关。

在我们的设计中,希望当数据包没有找到合适的路由时,Linux给我们自己的程序发送一个信号,再由我们自己的程序向路由表添加一条我们自己计算出来的路由,然后让数据包再查找一下已经添加过的路由表。

所以我们希望linux能实现:1.没找到路由时,给一个信号;2.当我们更新完路由表后,让数据包再查找一次。

不知道能不能实现?是不是要改写然后重新编译kernel?

论坛徽章:
0
2 [报告]
发表于 2006-07-23 12:58 |只看该作者
有没有人可以帮下。。。感恩不尽

论坛徽章:
0
3 [报告]
发表于 2006-07-24 21:04 |只看该作者
我也关注一下

论坛徽章:
0
4 [报告]
发表于 2006-07-24 21:40 |只看该作者
不知所云。
既然设置了缺省网关,怎么可能发生“没有找到合适的路由”?

奉劝您先把经典路由原理搞清楚,再考虑你的需求能否在经典路由体制内解决,如果不能的话再考虑能否在当前的某种IP扩展实现中实现,如果还不能就修改现有的开源系统,开发新的路由机制。

论坛徽章:
0
5 [报告]
发表于 2006-07-25 00:30 |只看该作者
楼主似乎就是要实现你说的东西

论坛徽章:
0
6 [报告]
发表于 2006-07-26 17:32 |只看该作者
原帖由 JohnBull 于 2006-7-24 21:40 发表
不知所云。
既然设置了缺省网关,怎么可能发生“没有找到合适的路由”?

奉劝您先把经典路由原理搞清楚,再考虑你的需求能否在经典路由体制内解决,如果不能的话再考虑能否在当前的某种IP扩展实现中实现,如果 ...



首先感谢下以上各位的热情回复^^

这么说吧

------------------------------------------------------------------
1、IP路由简介

路由就是选择一条数据包传输路径的过程。当TCP/IP主机发送IP数据包时,便出现了路由,且当到达IP路由器还会再次出现。路由器是从一个物理网向另一个物理网发送数据包的装置,路由器通常被称为网关。对于发送的主机和路由器而言,必须决定向哪里转发数据包。在决定路由时,IP层查询位于内存中的路由 表。
(1)当一个主机试图与另一个主机通信时,IP首先决定目的主机是一个本地网还是远程网。
(2)如果目的主机是远程网,IP将查询路由表来为远程主机或远程网选择一个路由。
(3)若未找到明确的路由,IP用缺省的网关地址将一个数据传送给另一个路由器。
(4)在该路由器中,路由表再次为远程主机或网络查询路由,若还未找到路由,该数据包将发送到该路由器的缺省网关地址。
每发现一条路由,数据包被转送下一级路由器,称为一次“跳步”,并最终发送至目的主机。
若未发现任何一个路由,源主机将收到一个出错信息。
------------------------------------------------------------------


我的问题肯定不能在经典路由体制中解决。因为我不希望主机发送给缺省网关,我希望他暂停发送,等我们自己的routine添加好新的路由后,再重新查找一遍。

我不知道什么叫“能否在当前的某种IP扩展实现中实现”?可不可以解释下?

或者,我们可以把缺省网关设置成自己,然后数据包可以发送给自己。然后再通过什么routine,实现以上功能?

用英文说下我的问题,就是:

Our task is:

1) when a packet arrives and no route is found in the routing table, the
kernel should inform our routine that a new entry should be added into the
routing table instead of sending it to the default gateway.

2) after the entry has been added, our routine informs the kernel, and the
packet should be searched again in the routing table.

我猜,可能必须是要compile kernel了。。。

[ 本帖最后由 Estel 于 2006-7-26 17:33 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP