iGate 细则
网关把空中和互联网两头接起来。哪些包送上网、哪些包放回空中,逐一都在这一页。
网关干的活
一台 iGate 就两件事:把空中听到的包送上互联网,把发给本地台站的消息放回空中。
第一件事最容易被做错。送上互联网的必须是有效的 AX.25 包:控制字段 0x03,PID 0xF0,校验得过。从 APRS-IS 来的包和广播式查询都不送。TNC 上的 PASSALL 不要打开,校验没过关的包不该进网络。
第二件事只有双向网关才做,送消息的时候顺手把发信台的位置也带上。早年是从历史位置里挑一条,现在不这么干了,那等于把旧数据灌上频率。网关该记住自己往空中送过谁的消息,等这些台站下一次发位置包,再跟着送出去。
- 覆盖范围 发送路径和「本地台站」的判断都取够用就好,跳数越多,频率上越吵。发回空中只面向一小时内听到过、并且落在覆盖区里的本地台站,范围按中继跳数算,不按距离算。
- 别什么都往频率上倒 网关那头连着每秒几十个包的互联网,全都发回空中,这个频率就没法用了。额外的转发规则由台长自己定,定的时候想想附近还有谁在听。
- 资格 只有在服务器上通过验证的呼号,才能把包送进 APRS-IS。
收上来的包,哪些不转
原则上空中听到的包都送上互联网,下面这几类除外。
-
不像样的包
控制字段不是
0x03,或者 PID 不是0xf0。 - TNC 开了 PASSALL 开了就表示校验失败的包也照收,这类包不该往上送。
-
从网络来的第三方包
数据段以
}开头,并且第三方头里带着 TCPIP 或者 TCPXX。这类包本来就出自 APRS-IS,转回去会绕成环。 - 第三方包的另一种 第三方头里既没有 TCPIP 也没有 TCPXX 的,要把 RF 头和那段数据类型剥掉,再送进 APRS-IS。
-
广播式查询
数据段以
?开头、没有指定台站的那种。放上去会让一堆台站同时回话,一下刷出几千条响应。 - 头里带标记的 包头里有 TCPIP 或者 TCPXX,这两类不放行;也有网关顺带挡下带 NOGATE、RFONLY 的包,这两条看台长自己取舍。
发回空中的消息
消息要发回空中,下面四条得同时成立。
- 收件的那台 在预定的时间内被听到过,范围按中继跳数、距离,或者两者一起算。听不到就不必发。
- 发信的那台 在预定的时间内没有从空中听到过。别人从互联网转上来的包不算数。
- 发信的那台,包头 里面没有 TCPXX,也没有 NOGATE 或者 RFONLY。
- 收件的那台,另一头 在预定的时间内没有在互联网上出现过。
在互联网上出现过有两种。它自己的包里带着 TCPIP* 或者 TCPXX*;或者它自己是网关,往空中送过第三方包,而那些包的第三方头里带着 TCPIP 或者 TCPXX。碰上后一种,你在空中就能认出这台是网关。
除了这几条硬条件,台长还能自己加规则,比如只放行某几个呼号,或者某几个对象。
路径和第三方格式
网关只许补上自己的呼号,别的一个字符都不动。
包送进 APRS-IS 时,路径上只能做一件事:末尾加上 ,qAR,网关呼号。网关呼号写自己的,表示这个包是从这儿进网的。只收不发的网关写 qAO。除了这一段,别的地方都不要改,数据段更是绝对不能碰。头里带 TCPIP 或者 TCPXX 的包,不要再送回 APRS-IS。
往空中发的时候必须用第三方格式,把原包整个装进去。
-
第三方格式
网关呼号>APRS,GATEPATH:}原发>原收,TCPIP,网关呼号*:原包数据GATEPATH是这个包上了频率之后要走的路径。第三方头里TCPIP,网关呼号*这一段是必须的,写上它,别的网关就不会把这个包再送回 APRS-IS。来自 APRS-IS 的路径段,上频率之前要先剥掉。
- q 构造和 I 构造不上频率 都只活在互联网那一侧,空中一个都不该出现。
- TCPIP 与 TCPXX 除了第三方格式里那一段,空中不该出现这两个标记。
查询怎么答
有人问「这附近有网关吗」,网关就报一次自己的本事。
收到 ?IGATE? 这类指名查询时,网关回一条台站能力消息。
-
能力消息
<IGATE,MSG_CNT=12,LOC_CNT=3MSG_CNT和LOC_CNT按自己的实际数字填,后面还能补自己的说明。这类消息什么时候都能发,不少网关就跟着自己的位置包一起发。
广播式查询两个方向都别放行:数据段以 ? 开头、又没有指定台站的那种。往空中发会让一堆台站同时回话,往网上送也一样。
现在各家网关都会顺手把第三方头里的路径信息清空,省点带宽,也让包长落在 AX.25 允许的范围里。
原文与相关
转与不转的规则按官方两篇整理。拿不准的地方,回原文对一遍。