关于RouterOS使用脚本判断无线网卡信号切换漫游

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配置如下:

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配置如下:

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇