RLReadyLinks Docs

Example: ISP customer activation/de-activation, Point-to-Multipoint (Coax)

Example NETCONF payloads an ISP can use to activate and deactivate a customer behind a G.hn modem on a coax DPU such as the GL-4xCEFH-RPF.

Example of how an Internet Service Provider can automate subscriber activation and de-activation over NETCONF. Applies to G.hn coax DPUs (e.g. GL-4xCEFH-RPF) with a G.hn modem (EP) at the customer.

Network uplink carries D-tag over C-tag to the DPU G.hn port, coax carries C-tagged frames to the modem, the modem delivers untagged frames to the customer device
The DPU pushes the D-tag; the modem adds the C-tag; the bandwidth profile binds to the modem.
Activate: port VLAN and QinQ, create VLAN model, bind bandwidth profile, attach VLAN model, MAC limit. Deactivate: unbind bandwidth profile, detach VLAN model, delete VLAN model, remove port QinQ, reset modem.
Activate 1–5, deactivate 1–5

#Variables

VariableExampleMeaning
portId3G.hn port (Ghn1–4 = 1–4)
ctag20Customer (inner) VLAN
dtag401Service (outer) VLAN
modem_mac00:13:ba:0c:68:57Modem MAC
bwProfileId1Bandwidth profile id (1–16)

The VLAN model in the examples is named customer 20.

#One-time setup

#A. Global vlan-vpn

CLI: vlan-vpn

xml
<configure xmlns="http://readylinks.io/rlos/yang/conf">
  <vlan-vpn><enabled>true</enabled></vlan-vpn>
</configure>

#B. Port vlan-vpn (all G.hn ports)

CLI: interface ethernet GhnN → vlan-vpn

xml
<ports xmlns="http://readylinks.io/rlos/yang/conf">
  <port><port-id>1</port-id><vlan-vpn><enabled>true</enabled></vlan-vpn></port>
  <port><port-id>2</port-id><vlan-vpn><enabled>true</enabled></vlan-vpn></port>
  <port><port-id>3</port-id><vlan-vpn><enabled>true</enabled></vlan-vpn></port>
  <port><port-id>4</port-id><vlan-vpn><enabled>true</enabled></vlan-vpn></port>
</ports>

#C. Bandwidth profiles

CLI: ghn bandlimit profile <id> <up> <down> <qos> · Mbps 10–1500 · qos 1–4 · use --rpc-timeout=120

xml
<configure xmlns="http://readylinks.io/rlos/yang/conf">
  <bandwidth-profiles>
    <bandwidth-profile>
      <id>1</id><download>1000</download><upload>50</upload><qos>4</qos>
    </bandwidth-profile>
    <bandwidth-profile>
      <id>2</id><download>1000</download><upload>1000</upload><qos>4</qos>
    </bandwidth-profile>
  </bandwidth-profiles>
</configure>

#Activate

#Step 1 · Port VLAN + QinQ

PVID/untagged = dtag, tagged = ctag, QinQ ctag → dtag. Also enable the port if it is down.

xml
<ports xmlns="http://readylinks.io/rlos/yang/conf"
       xmlns:nc="urn:ietf:params:xml:ns:netconf:base:1.0">
  <port>
    <port-id>3</port-id>
    <vlan>
      <vlan-type>Hybrid</vlan-type>
      <ingress-filter>Disabled</ingress-filter>
      <frame-type>Admit All</frame-type>
      <pvid nc:operation="replace">401</pvid>
      <untagged-vlans><vid nc:operation="merge">401</vid></untagged-vlans>
      <tagged-vlans><vid nc:operation="create">20</vid></tagged-vlans>
    </vlan>
    <vlan-vpn>
      <qinq nc:operation="create">
        <old-vid>20</old-vid>
        <old-low-vid>20</old-low-vid>
        <old-high-vid>20</old-high-vid>
        <new-vid>401</new-vid>
        <priority>0</priority>
      </qinq>
    </vlan-vpn>
  </port>
</ports>

old-low-vid and old-high-vid are mandatory. Set both to ctag.

#Step 2 · Create remote VLAN model

remote-type: CPE with 1 ETH port · 2 · 4 · 5 (singular "port").

xml
<configure xmlns="http://readylinks.io/rlos/yang/conf">
  <remote-vlan-models>
    <remote-vlan-model>
      <name>customer 20</name>
      <remote-type>CPE with 1 ETH port</remote-type>
      <ports>
        <port><name>G.hn</name><pvid>1</pvid><priority>0</priority></port>
        <port><name>G1</name><pvid>20</pvid><priority>0</priority></port>
      </ports>
      <vlans>
        <vlan>
          <vid>20</vid>
          <tagged>G.hn</tagged>
          <untagged>G1</untagged>
        </vlan>
      </vlans>
    </remote-vlan-model>
  </remote-vlan-models>
</configure>

Model already exists → error. Treat as success.

#Step 3 · Bind bandwidth profile to modem

Use --rpc-timeout=120.

xml
<configure xmlns="http://readylinks.io/rlos/yang/conf"
           xmlns:nc="urn:ietf:params:xml:ns:netconf:base:1.0">
  <bandwidth-profiles>
    <bandwidth-profile>
      <id>1</id>
      <attach>
        <mac-addresses nc:operation="create">
          <mac>00:13:ba:0c:68:57</mac>
          <port-id>3</port-id>
        </mac-addresses>
      </attach>
    </bandwidth-profile>
  </bandwidth-profiles>
</configure>

#Step 4 · Attach VLAN model to modem

xml
<configure xmlns="http://readylinks.io/rlos/yang/conf"
           xmlns:nc="urn:ietf:params:xml:ns:netconf:base:1.0">
  <remote-vlan-models>
    <remote-vlan-model>
      <name>customer 20</name>
      <remote-type>CPE with 1 ETH port</remote-type>
      <attach>
        <mac-addresses>
          <mac nc:operation="create">00:13:ba:0c:68:57</mac>
        </mac-addresses>
      </attach>
    </remote-vlan-model>
  </remote-vlan-models>
</configure>

#Step 5 · MAC limit on modem

Modem must be online on portId.

xml
<ports xmlns="http://readylinks.io/rlos/yang/conf">
  <port>
    <port-id>3</port-id>
    <ep-info>
      <mac-address>00:13:ba:0c:68:57</mac-address>
      <ports>
        <name>G1</name>
        <max-mac-learn>5</max-mac-learn>
      </ports>
    </ep-info>
  </port>
</ports>

#Deactivate

All nc:operation="remove". Safe to rerun.

#Step 1 · Unbind bandwidth profile

Use --rpc-timeout=120.

xml
<configure xmlns="http://readylinks.io/rlos/yang/conf"
           xmlns:nc="urn:ietf:params:xml:ns:netconf:base:1.0">
  <bandwidth-profiles>
    <bandwidth-profile>
      <id>1</id>
      <attach>
        <mac-addresses nc:operation="remove">
          <mac>00:13:ba:0c:68:57</mac>
        </mac-addresses>
      </attach>
    </bandwidth-profile>
  </bandwidth-profiles>
</configure>

#Step 2 · Detach VLAN model

xml
<configure xmlns="http://readylinks.io/rlos/yang/conf"
           xmlns:nc="urn:ietf:params:xml:ns:netconf:base:1.0">
  <remote-vlan-models>
    <remote-vlan-model>
      <name>customer 20</name>
      <remote-type>CPE with 1 ETH port</remote-type>
      <attach>
        <mac-addresses>
          <mac nc:operation="remove">00:13:ba:0c:68:57</mac>
        </mac-addresses>
      </attach>
    </remote-vlan-model>
  </remote-vlan-models>
</configure>

#Step 3 · Delete VLAN model

xml
<configure xmlns="http://readylinks.io/rlos/yang/conf"
           xmlns:nc="urn:ietf:params:xml:ns:netconf:base:1.0">
  <remote-vlan-models>
    <remote-vlan-model nc:operation="remove">
      <name>customer 20</name>
    </remote-vlan-model>
  </remote-vlan-models>
</configure>

#Step 4 · Remove port QinQ + C-VLAN

The port keeps PVID dtag and vlan-vpn, ready for the next customer.

xml
<ports xmlns="http://readylinks.io/rlos/yang/conf"
       xmlns:nc="urn:ietf:params:xml:ns:netconf:base:1.0">
  <port>
    <port-id>3</port-id>
    <vlan>
      <tagged-vlans><vid nc:operation="remove">20</vid></tagged-vlans>
    </vlan>
    <vlan-vpn>
      <qinq nc:operation="remove"><old-vid>20</old-vid></qinq>
    </vlan-vpn>
  </port>
</ports>

#Step 5 · Reset modem

Factory reset. Use <reboot>true</reboot> for a soft reboot. Modem must be online.

xml
<ports xmlns="http://readylinks.io/rlos/yang/conf">
  <port>
    <port-id>3</port-id>
    <ep-info>
      <mac-address>00:13:ba:0c:68:57</mac-address>
      <reset>true</reset>
    </ep-info>
  </port>
</ports>

#Verify

shell
> get --filter-xpath "/readylinks-rlos:ports/port[port-id='3']"
> get --filter-xpath "/readylinks-rlos:ports/port[port-id='3']/ep-info"
> get --filter-xpath "/readylinks-rlos:configure/remote-vlan-models/remote-vlan-model[name='customer 20']"
> get --filter-xpath "/readylinks-rlos:configure/bandwidth-profiles/bandwidth-profile[id='1']"
Edit this page on GitLab

Last updated October 20, 2026