关于linux下多链路的bonding
需求:能在linux平台下,可以通过多个ppp链路来扩大带宽。也就是说原来是通过一个无线网卡ppp拨号上网,现在想通过两块无线网卡拨号上网。对于以上的需求,各位有没有什么好的解决办法?
以下是我的一些分析过程和遇到的问题?
1.首先我这种情况,我的问题应该是如何描述?是多ppp绑定呢,还是多链路绑定?我认为多链路绑定就包含了多ppp绑定,对于多链路绑定,是否已有成熟的做法了?而对于ppp链路这种情况,可以直接用吗?
2.对于多ppp绑定,我看到有个协议叫做multilink ppp,不知这个可以实现我要的功能吗?仔细看进去,又发现它需要两端同时支持,所谓两端,我的理解就是我正在用的这端,另外一端是不是就是局端(电信局那端)?还是和我通信的那台机器呢?
3.如果我有两个链路,为了实现我的要求,我应该是给每个链路各分配一个ip地址呢,还是给所有的链路分配一个ip地址?哪种方法能实现要求呢?我现在的情况是每条链路分别拨号,各获得一个ip地址。如果是所有链路都公用一个ip地址,该如何实现啊?
4.对于多ppp链路绑定,Linux 2.4内核提供了EQL和Multipath(路由支持多路径)两种机制,自从Linux 2.6.12内核后又提供了Mulitpath_Cache(缓存支持多路径)机制,
其中的EQL,是用来平均化路由的,它提供基于报文的分配
其中的Mulitpath,它基于流来将流量在多路径路由的不同下一跳之间分配
如果同时选择Multipath和Mulitpath_Cache,那就是根据来源不同来分配流量
不知是否可以通过以上三种机制组合来实现我的需求呢,是不是需要修改什么东西呢?
我原来是选择了EQL和Multipath,同时修改了udp协议选择路由的部分,实现了udp协议可以从两条链路上分别发送出去,但这样还是存在了两个问题:1)不支持tcp协议 2)虽然udp协议可以发送,但在接收的一端,由于两块无线网卡传输的不稳定性,到了对端,包的顺序都错了,需要重组,这就带来了很大的麻烦。
此外,tcp是一种基于连接的协议,在路由支持多路径的情况下,所以它不可能是基于报文的分配,最多是基于连接的分配,如果情况真如此的话,那一个连接中的多个tcp包,不可以通过两条链路来发送了。不知我这样理解对吗?
说了这么多,也不知有没有描述清楚,还请各位指教
页:
[1]