找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 12051|回复: 15

[策略设置] 电信联通bras如何共存摸索的一些结果。

  [复制链接]
发表于 2013-3-17 19:07:16 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

×
本帖最后由 兰彻 于 2013-3-18 00:20 编辑

  不知道有多少小区和我的情况一样,我们这里的小区到用户家的链路是自己搭建的,搞到比较早,不是olt+epon那样打到用户家的,就是用光收发+交换机打到用户家的。后期电信联通想重新在小区布线,出于各种原因,没有让电信联通的链路进来。本来的计划是租用电信的以太线路,然后自己搭建bras,提供上网服务。电信哪里死活谈不下来以太带宽。后来和电信谈的方案是电信拉一条pppoe链路过来,小区要上网必须通过电信的bras。没办法出口在电信手里只能用这样的方法合作。所以的用户其实和小区没有关系,只是到用户的最后一公里是小区自己搞的。后来联通也拉了一条pppoe链路。其实是共用一条链路。通过划分vlan来区分电信用户和联通用户。打个比方valn1000-vlan3000这vlan是电信的用户,vlan3000-vlan6000是联通的。例如一幢楼,有电信的用户,也有联通的用户。2种用户共用一个楼道交换机。例如交换机的端口1的vlan是1003,那么这个端口属于电信,端口2的vlan是3002,那么这个端口属于联通。然后用trunk口透传上去,丢给电信的bras,或者联通的bras。如果一个用户要重电信换到联通怎么办。我就要把这个交换机的端口重新划分一下,让端口属于vlan3000—vlan6000这个值。说起来很简单但是实在是件很麻烦的是。如何做到用户换isp时不要重新划分vlan这个问题就摆在了面前。
  要解决这个问题首先就要理解几个理论。一个是vlan,一个是pppoe。
  先说下vlan,开始一直不明白routeros是如何实现acesses,trunk,hybrid,几种模式。直到看到这样一篇文章。链接如下
http://wiki.mikrotik.com/wiki/Vlans_on_Mikrotik_environment
trunk.jpg
/interface vlan add name=vlan-10 vlan-id=10 interface=ether5 disabled=no
/interface vlan add name=vlan-20 vlan-id=20 interface=ether5 disabled=no
To be able to forward the packets from access-ports to vlans we need bridges:

/interface bridge add name=br-vlan10 disabled=no
/interface bridge add name=br-vlan20 disabled=no
Now just add the ports to the bridges:

/interface bridge port add interface="vlan-10" bridge="br-vlan10" disabled=no
/interface bridge port add interface="ether1" bridge="br-vlan10" disabled=no
/interface bridge port add interface="vlan-20" bridge="br-vlan20" disabled=no
/interface bridge port add interface="ether2" bridge="br-vlan20" disabled=no
想这样RouterOS就运行在trunk模式。
hybrid.jpg
/interface vlan add name=vlan-10 vlan-id=10 interface=br-trunk disabled=no
/interface bridge add name=br-vlan10 disabled=no
/interface bridge port add interface="vlan-10" bridge="br-vlan10" disabled=no
/interface bridge port add interface="ether1" bridge="br-vlan10" disabled=no
想这样就运行在hybrid的模式。
然后在说说pppoe拨号过程吧。
pppoe拨号过程分成2部分,第一部分是pppoe discovery,第二部分是pppoe session。
我这里需要处理的就是pppoe discovery。这个数据包是广播包。并且打了一层vlan。
电信的vlan和联通的vlan不在同一范围,所以要和电信联通协商,让电信和联通的vlan有个交集。例如电信的vlan是1000-4000.联通的vlan是2000-6000.我就去他们vlan的一个交集,2500-3500.我的楼道交换机的vlan就划分在2500-3500这个范围。这样用户的pppoe discovery的请求不仅会跑到电信也会跑到联通的bras上去。
新的问题又产生了。例如一个电信的用户,vlan是2501,首先拨号,这个pppoe discovery可能发到电信的bras也可能到联通的bras。这取决于那个bras收到这个请求。
如果电信的用户拨号到联通就会回应691错误。因此问题简化为如何转发控制pppoe discovery这个请求的方向。pppoe是2层协议,只有在mac入手。
因此所以的思路全部集中在桥防火墙这里了。

这里是我在虚拟机里的试验 试验2.jpg
试验1.jpg
试验.jpg
这里3台ros模拟了小区的环境。
第一台上联电信联通的bras,下联trunk口的交换机
第二台模拟电信的bras,允许vlan10-vlan60的pppoe拨号
第三台模拟交换机和用户,模拟打标拨号
选择1.jpg 选择.jpg 线路选择.jpg 选择2.jpg

这台是选择线路的ROS,我首先在这台ros上搭建一个pppoeserve。目的是为了收集用户名和mac地址。我假设电信的用户名是dx1,dx2,dx3,联通的用户名是lt1,lt2,lt3.
根据这个用户名的特征来识别这个用户属于电信还是联通。然后为这个mac指定出口
桥防火墙阻止pppoe discovery.jpg 电信走电信联通走联通.jpg 电信走电信,联通走联通.jpg
看到一个有意义的参考文档 http://mdbrasil.com.br/en/downlo ... rasil_2009_Maia.pdf
routeros
发表于 2013-3-17 19:59:29 | 显示全部楼层
routeros
回复

使用道具 举报

发表于 2013-3-17 20:06:42 | 显示全部楼层
本帖最后由 11 于 2013-3-17 20:41 编辑

用网桥肯定是解决不了vlan的问题。

有一个办法,应该是可行的。
ros不设置为网桥,然后在ros中安装一个pppoe-relay程序。这个程序可以中继pppoe包。

ros的外网卡1添加电信vlan,
ros的外网卡2添加联通的vlan,
确保ros与它们能通信成功。

内网卡接用户端。

pppoe-relay程序作适当改造,把不同mac的用户中继到对应的vlan网卡上。
routeros
回复

使用道具 举报

发表于 2013-3-17 20:08:29 | 显示全部楼层
PPPoE穿透 : PPPOE是2层技术,所以是不能跨路由使用的,用PPPoE穿透(pppoe-relay)使用网桥使PPPoE能够跨路由使用,

典型应用:
为了使用IPHONE等不支持或使用PPPoE不便的设备,需要使用路由器.
但使用路由器后发现自己的电脑需要独立的公网IP(如迅雷),
当你的电脑连接在路由器后却无法再拔的通ADSL了
这时候你开启了PPPoE穿透功能后便可以使你的ADSL拔通了.(当然能够双拔是前提)

安装程序完成后再运行命令:
  1. pppoe-relay -S wan_vlan -C lan
复制代码
就完成了PPPoE的穿透

将这条命令放到了启动脚本中
routeros
回复

使用道具 举报

发表于 2013-3-18 01:08:22 | 显示全部楼层
问题已经解决,3.5个小时,测试完毕。
routeros
回复

使用道具 举报

发表于 2013-3-18 09:07:26 | 显示全部楼层
非常不错的技术帖子!认真学习!
routeros
回复

使用道具 举报

发表于 2013-3-18 09:42:40 | 显示全部楼层
目前他们都搞成默认走一种,电信或联通,另一PPPOE加服务名。

楼主成功搞个教程出来,大家学习一下。
routeros
回复

使用道具 举报

发表于 2013-3-18 09:42:46 | 显示全部楼层
本帖最后由 qiznstar 于 2013-3-18 09:47 编辑

恭喜楼主终于解决了问题,也给大家提供了借鉴的方案,pppoe穿透是不行的,穿透后MAC都变成那张穿透的网卡MAC了,对于电信联通来讲只能拔上一个账号,也不利于用户账号的管理。
不过ROS本身不是能很好的管理账号,能另外开发是最好的了呵。
routeros
回复

使用道具 举报

发表于 2013-3-18 09:54:36 | 显示全部楼层
做复杂的VLAN实验最好用真实设备实验,有时在虚拟环境下,有些网卡不支持tagged包。
routeros
回复

使用道具 举报

 楼主| 发表于 2013-3-18 10:51:16 | 显示全部楼层

大师能交流下吗?我没有解决,我不知道应该怎么解决vlan的问题。大师求指教
routeros
回复

使用道具 举报

 楼主| 发表于 2013-3-18 17:13:44 | 显示全部楼层
rosabc 发表于 2013-3-18 09:54
做复杂的VLAN实验最好用真实设备实验,有时在虚拟环境下,有些网卡不支持tagged包。

在虚拟机下可以模拟打标不需要网卡的支持。甚至qinq都行。例如一个bras要求qinq的标,以前还有去找一台qinq的交换机测试,相当麻烦。后来发现直接用虚拟机装ros就搞定了。你可以试试qinq拨号在虚拟机下。
routeros
回复

使用道具 举报

发表于 2013-3-18 17:45:55 | 显示全部楼层
谢谢你的分享。。。。。。。。。
routeros
回复

使用道具 举报

发表于 2013-3-19 10:29:28 | 显示全部楼层
兰彻 发表于 2013-3-18 17:13
在虚拟机下可以模拟打标不需要网卡的支持。甚至qinq都行。例如一个bras要求qinq的标,以前还有去找一台qi ...

VLAN只要在交换机上按普通端口划就行了,甚至可以不用,电信和联通的主干网都不在小区里面,而接在网卡的桥上,桥里需三张网卡,一张接局域网,一张电信,一张联通,桥来做pppoe服务器,屏蔽所有电信联通的广播包。
routeros
回复

使用道具 举报

发表于 2013-3-19 10:50:15 | 显示全部楼层
楼上正解。
电信和网通的bras可以分别放到一个单独 的vlan中,这样所有的广播包都会经过ROS的桥,再在桥上做广播包的过滤就行。可以根据vlanid或者MAC地址来指定广播包的出口。

测试已经成功

这只是一小步,楼主需要的是在共存的情况下能让电信播电信号,联通播联通号。这个还需要帐号搜集及判别,感觉ROS难胜任,期待高手出现。
routeros
回复

使用道具 举报

发表于 2013-3-19 11:15:02 | 显示全部楼层
用脚本查找ros内拨号LOG用户名不就可以判断了,然后追加个命令指定该MAC出口。我记得ROS的LOG可以显示拨号者MAC和账号。
routeros
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|手机版|小黑屋|软路由 ( 渝ICP备15001194号-1|渝公网安备 50011602500124号 )

GMT+8, 2024-5-3 04:17 , Processed in 0.092373 second(s), 5 queries , Gzip On, Redis On.

Powered by Discuz! X3.5 Licensed

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表