很多ISP都支持同时拨通两条ADSL的PPPoE连接

1. 情况描述,假定拨通后两条连接后,路由表如下(请看红色部分):

==========================================================================
活动路由:
网络目标        网络掩码          网关       接口   跃点数
         0.0.0.0          0.0.0.0      192.168.1.1      192.168.1.2   8475
         0.0.0.0          0.0.0.0            在链路上    124.90.129.124   4251
         0.0.0.0          0.0.0.0            在链路上    124.90.129.127     26

  124.90.129.124  255.255.255.255            在链路上    124.90.129.124   4506
  124.90.129.127  255.255.255.255            在链路上    124.90.129.127    281
       127.0.0.0        255.0.0.0            在链路上         127.0.0.1   8756
       127.0.0.1  255.255.255.255            在链路上         127.0.0.1   8756
127.255.255.255  255.255.255.255            在链路上         127.0.0.1   8756
     192.168.1.0    255.255.255.0            在链路上       192.168.1.2   8731
     192.168.1.2  255.255.255.255            在链路上       192.168.1.2   8731
   192.168.1.255  255.255.255.255            在链路上       192.168.1.2   8731
       224.0.0.0        240.0.0.0            在链路上         127.0.0.1   8756
       224.0.0.0        240.0.0.0            在链路上       192.168.1.2   8733
       224.0.0.0        240.0.0.0            在链路上    124.90.129.124   4252
       224.0.0.0        240.0.0.0            在链路上    124.90.129.127     26
255.255.255.255  255.255.255.255            在链路上         127.0.0.1   8756
255.255.255.255  255.255.255.255            在链路上       192.168.1.2   8731
255.255.255.255  255.255.255.255            在链路上    124.90.129.124   4506
255.255.255.255  255.255.255.255            在链路上    124.90.129.127    281
==========================================================================

从表中可以看出,先拨通的124.90.129.124的跃点数为4251,而后拨通的124.90.129.127的跃点数为26,所以所有的数据流量都走了后面这条。


2. 假设有如下伪代码:

  int s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
  bind(s, "124.90.129.124");
  connect(s, "www.yonsm.net");


即,连接某个地址前,先绑定之前拨通的IP地址。此时,connect将返回-1,WSAGetLastError返回WSAENETUNREACH=10051=“Network is unreachable。为什么?

3. 在XP下,如果把两条链接的路由表的跃点数都修改为1,则上面的代码能正常连接。为什么?

4. 在VISTA下,无法使用API或者命令去修改跃点数(METRIC)为更小的值(即不能比原来更小),这是官方文档有说明的(MSDN可以查证:http://support.microsoft.com/kb/947216/en-us)。

请问,要怎么样才能在VISTA下使上面的伪代码能连接成功呢?(如果把两个路由项的METRIC都设置为更大的相同值,比如都改成9999,上面的代码也不能正常连接。已验证失败。)

有没有高手来解释一下?

日志 | 评论(6) | 引用(0) | 阅读(2746)
歪歪豆
2010/06/08 23:14
双连接不好玩
toor00
2009/12/20 01:23
你是想让那二条default路由 METRIC 一样吧,有二种方法:
方法A
http://i3.6.cn/cvbnm/a7/83/e4/e8fc41458bbb67d31d25195e1e870b50.jpg
如图设置你的pppoe拨号连接,连接成功后pppoe不会自动添加 default路由,有你自己添加二条即可.添加每个接口的default路由
route ADD 0.0.0.0 MASK 0.0.0.0 %1 METRIC 10 IF %2
route ADD 0.0.0.0 MASK 0.0.0.0 %1 METRIC 10 IF %2
%2指在接口列表的数字(route PRINT显示),%1指这个接口的网关ip(连接属性里有显示)
方法B:
pppoe连接使用默认属性,二条都拨号成功后先删除default路由再添加,添加方法同上.
TinTin
2009/12/17 17:54
貌似有一款台湾软件可以捆绑多条链接线路,将带宽累加,不过要多块网卡才行。
wollaston
2009/11/30 12:15
我以前用过metric,但是感觉很不好,低metric的路由不好用。

所以一个目标一般就是给一个路由,给了一个低metric的估计也用不上
wollaston
2009/11/30 12:13
我在windows 7上测试可以嘛

ROUTE ADD 222.32.0.0 MASK 255.255.0.0 192.168.88.1 METRIC 15
wollaston
2009/11/30 10:30
2003下干过,删掉所有路由,然后田间,

然后用路由表的形式(ip地址) 指定线路.
Yonsm 回复于 2009/11/30 11:20
2003/XP 没有这个问题,因为Metric是可以随便指定的。
分页: 1/1 第一页 1 最后页