RouterOS提供了灵活的配置,特别是script脚本,本身很多功能配置是相互独立的,但通过脚本一结合就完成一个功能去触发另外一个功能!最近有人问了10多年前的一个无线漫游问题,如何判断station无线网卡的信号强度,来切换AP基站。

虽然现在RouterOS有一个漫游选项station-roaming,但不能按照自己需要的信号强度来切换,而且station-roaming需要定期进行背景扫描,会增加通信延迟。早期为了station能在多个AP间切换是通过判断信号强度低于一个阀门值,就执行删除当前连接AP,让station重新扫描信号更强的连接,当然这个肯定会出现1-2个丢包。使用这种RouterOS组建的无线漫游网络,大多是移动环境,例如驾校监控和区域移动环境监测,还有一些特别的移动信号采集等。

AP和station的配置是桥接,开启rstp,并设置rstp优先级,station在两个AP漫游,station需要通脚本来判断连接AP的信号阀门值,一个简单的网络组成如下,AP1,AP2和Station都是单无线网卡:

下面的配置非常简单,仅供参考

AP1配置

bridge配置

/interface bridge
add name=bridge1 priority=0x6000 protocol-mode=rstp

/interface bridge port
add bridge=bridge1 interface=ether1

无线网卡配置

/interface wireless
set [ find default-name=wlan1 ] area=mik band=2ghz-b/g/n channel-width=20/40mh
disabled=no mode=ap-bridge radio-name=AP1 ssid=mik1 wds-default-bridg
bridge1 wds-mode=dynamic-mesh wireless-protocol=802.11

AP2配置

bridge配置

/interface bridge
add name=bridge1 priority=0x7000 protocol-mode=rstp

/interface bridge port
add bridge=bridge1 interface=ether1

无线网卡配置

/interface wireless
set [ find default-name=wlan1 ] area=mik band=2ghz-b/g/n channel-width=20/40mh
disabled=no mode=ap-bridge radio-name=AP2 ssid=mik1 wds-default-bridg
bridge1 wds-mode=dynamic-mesh wireless-protocol=802.11

Station配置:

bridge配置

/interface bridge
add name=bridge1 priority=0x8000 protocol-mode=rstp

/interface bridge port
add bridge=bridge1 interface=ether1

无线网卡配置

/interface wireless
set [ find default-name=wlan1 ] area=mik band=2ghz-b/g/n disabled=no \
mode=station-wds radio-name=Client ssid=mik1 wds-default-bridge=bridge1 \
wds-mode=dynamic-mesh wireless-protocol=802.11

下面的脚本是一个非常简单的判断信号强度,Station设备剔除掉wlan1下连接的AP,此脚本只能判断连接一个AP信号,当信号强度低于-70就剔除

:loacl signal
:set signal [/interface wireless registration-table get [/interface wireless registration-table find interface="wlan1"] signal-strength ]
:set signal [:pick $signal 0 [:find $signal "d" ]]
:if ($signal < -70) do={
/interface wireless registration-table remove [find interface=wlan1]
}

脚本说明:

创建一个局部变量signal:

:loacl signal

从registration-table找到接口为wlan1的连接,并将信号强度赋值给signal

:set signal [/interface wireless registration-table get [/interface wireless registration-table find interface="wlan1"] signal-strength ]

signal取值带有字符,只取其中数字部分

:set signal [:pick $signal 0 [:find $signal "d" ]]

如果siginal小于-70,就剔除接口为wlan1的连接

:if ($signal < -70) do={
/interface wireless registration-table remove [find interface=wlan1]
}

以上脚本在Station的计划任务添加,每间隔2秒执行一次,winbox配置如下:

关于station-roaming的配置可以参考 RouterOS Station Roaming无线漫游

这个方案是非常简单应用,如果在移动应用中,组网方式也决定了你的无线配置,例如station可以配置双网卡,一个对前一个对后,来来判断前后连接AP的信号强度,利用rstp协议,做不用剔除连接AP,完成流量从一个AP切换到另外一个。

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

文章很值,打赏犒劳作者一下