You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
FreeDMR/docs/bridge-peer-examples.md

151 lines
3.7 KiB

# Bridge Instance PEER and XLXPEER Examples
`PEER` and `XLXPEER` are bridge-instance features. They should normally be
configured on a `bridge.py` instance, not on the main `bridge_master.py`
FreeDMR master.
The main FreeDMR master intentionally skips non-echo `PEER` and `XLXPEER`
sections. Use a bridge instance when connecting external systems, then route
selected traffic between that bridge instance and the main FreeDMR server.
The FreeDMR wiki has the operator guidance:
- `Making PEER connections (XLX and HBP)`
- `Setup a Bridge instance`
- `Optimise performance and CPU on a busy system connected to FreeDMR Network`
## XLXPEER
`XLXPEER` connects a bridge instance to an XLX module. In FreeDMR deployments
this is primarily used for links to D-Star and AMBE-stick transcoder systems.
It creates the XLX connection only; routing is still controlled by `rules.py`.
```ini
[XLX-1]
MODE: XLXPEER
ENABLED: False
LOOSE: True
EXPORT_AMBE: False
IP:
PORT: 54002
MASTER_IP: 172.16.1.1
MASTER_PORT: 62030
PASSPHRASE: passw0rd
CALLSIGN: W1ABC
RADIO_ID: 312000
RX_FREQ: 449000000
TX_FREQ: 444000000
TX_POWER: 25
COLORCODE: 1
SLOTS: 1
LATITUDE: 38.0000
LONGITUDE: -095.0000
HEIGHT: 75
LOCATION: Anywhere, USA
DESCRIPTION: XLX bridge
URL: www.example.org
SOFTWARE_ID: 20170620
PACKAGE_ID: MMDVM_FreeDMR
GROUP_HANGTIME: 5
# 4000 + module letter position, e.g. A = 4001, D = 4004.
XLXMODULE: 4004
USE_ACL: True
SUB_ACL: DENY:1
TGID_TS1_ACL: PERMIT:ALL
TGID_TS2_ACL: PERMIT:ALL
```
Example local bridge rule:
```python
BRIDGES = {
235: [
{'SYSTEM': 'XLX-1', 'TS': 2, 'TGID': 9, 'ACTIVE': True,
'TIMEOUT': 2, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []},
],
}
```
To carry the same traffic onward over an FBP/OBP link, include that link in the
same bridge rule using the FreeDMR talkgroup as the target.
## PEER
`PEER` connects outward using HomeBrew Protocol as a peer. Consider this
carefully. For network-to-network links, OpenBridge/FBP is usually the better
fit. Always make sure you have permission to connect to the external system.
```ini
[PEER-1]
MODE: PEER
ENABLED: False
LOOSE: False
EXPORT_AMBE: False
IP:
PORT: 54001
MASTER_IP: 172.16.1.1
MASTER_PORT: 54000
PASSPHRASE: homebrew
CALLSIGN: W1ABC
RADIO_ID: 312000
RX_FREQ: 449000000
TX_FREQ: 444000000
TX_POWER: 25
COLORCODE: 1
SLOTS: 1
LATITUDE: 38.0000
LONGITUDE: -095.0000
HEIGHT: 75
LOCATION: Anywhere, USA
DESCRIPTION: HBP peer bridge
URL: www.example.org
SOFTWARE_ID: 20170620
PACKAGE_ID: MMDVM_FreeDMR
GROUP_HANGTIME: 5
OPTIONS:
USE_ACL: True
SUB_ACL: DENY:1
TGID_TS1_ACL: PERMIT:ALL
TGID_TS2_ACL: PERMIT:ALL
```
Example local bridge rule:
```python
BRIDGES = {
235: [
{'SYSTEM': 'PEER-1', 'TS': 2, 'TGID': 235, 'ACTIVE': True,
'TIMEOUT': 2, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []},
],
}
```
Generally, do not route `PEER` connections onward to OpenBridge/FBP. If you want
to bridge networks, use OpenBridge/FBP for that connection.
## Bridge Instance Pattern
A bridge instance usually has its own config and rules file, for example:
```yaml
freedmr-bridge:
container_name: freedmr-bridge
depends_on:
- freedmr
volumes:
- '/etc/freedmr/freedmr-bridge.cfg:/opt/freedmr/freedmr.cfg'
- '/etc/freedmr/rules-bridge.py:/opt/freedmr/rules.py'
- '/etc/freedmr/json/:/opt/freedmr/json/'
image: 'gitlab.hacknix.net:5050/hacknix/freedmr:latest'
restart: "unless-stopped"
environment:
- 'BRIDGE_SERVER=1'
```
On the main FreeDMR instance, add one FBP/OBP link to the bridge instance. Then
put the external `PEER` / `XLXPEER` definitions and matching `rules.py` routes
on the bridge instance.
This keeps external connectors away from the main HBP access server and matches
the FreeDMR operational guidance for busy systems.

Powered by TurnKey Linux.