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=3 MSG_CNT 和 LOC_CNT 按自己的实际数字填,后面还能补自己的说明。这类消息什么时候都能发,不少网关就跟着自己的位置包一起发。

广播式查询两个方向都别放行:数据段以 ? 开头、又没有指定台站的那种。往空中发会让一堆台站同时回话,往网上送也一样。

现在各家网关都会顺手把第三方头里的路径信息清空,省点带宽,也让包长落在 AX.25 允许的范围里。

原文与相关

转与不转的规则按官方两篇整理。拿不准的地方,回原文对一遍。