Switch L3 Forwarding (routing)

1. L3 Introduction

Routing can be used for connectivity between IP nodes in different subnets.

The VelocitySP routing solution is based on VLANs as shown in the example below.

  • Host H1 is connected to VLAN 1.

  • Router R1 is connected to VLAN 1 and VLAN 2.

  • Router R2 is connected to VLAN 2 and has access to multiple remote networks.

+----+ 1.0.0.2/8  1.0.0.1/8 +----+ 2.0.0.1/8   2.0.0.2/8 +----+
|    |                      |    |                       |    |     4.4.0.0/16
| H1 +--------VID 1---------+ R1 +---------VID 2---------+ R2 |---> 3.3.0.0/16
|    |                      |    |                       |    |     0.0.0.0/0
+----+                      +----+                       +----+

Router R1 is described in the following examples.

2. L3 Interface Configuration

The L3 interfaces of R1 are configured as shown below:

  • VLAN 1: IP address 1.0.0.1/8.

  • VLAN 2: IP address 2.0.0.1/8.

IPATCH request message:

- ? "/ietf-interfaces:interfaces/interface"
  : name: L3V1
    type: iana-if-type:l3ipvlan


- ? "/ietf-interfaces:interfaces/interface[name='L3V1']/ietf-ip:ipv4/address"
  : ip: 1.0.0.1
    prefix-length: 8


- ? "/ietf-interfaces:interfaces/interface[name='L3V1']/ietf-ip:ipv4/\
     forwarding"
  : true


- ? "/ietf-interfaces:interfaces/interface"
  : name: L3V2
    type: iana-if-type:l3ipvlan


- ? "/ietf-interfaces:interfaces/interface[name='L3V2']/ietf-ip:ipv4/address"
  : ip: 2.0.0.1
    prefix-length: 8


- ? "/ietf-interfaces:interfaces/interface[name='L3V2']/ietf-ip:ipv4/\
     forwarding"
  : true

3. Static Route Configuration

The static routes of R1 are configured as shown below:

  • Network 4.4.0.0/16 via 2.0.0.2.

  • Network 3.3.0.0/16 via 2.0.0.2.

  • Network 0.0.0.0/0 via 2.0.0.2 (default route).

IPATCH request message:

- ? "/ietf-routing:routing/control-plane-protocols/\
     control-plane-protocol[type='ietf-routing:static'][name='0']/\
     static-routes/ietf-ipv4-unicast-routing:ipv4/route"
  : destination-prefix: 4.4.0.0/16
    next-hop:
      next-hop-address: 2.0.0.2


- ? "/ietf-routing:routing/control-plane-protocols/\
     control-plane-protocol[type='ietf-routing:static'][name='0']/\
     static-routes/ietf-ipv4-unicast-routing:ipv4/route"
  : destination-prefix: 3.3.0.0/16
    next-hop:
      next-hop-address: 2.0.0.2


- ? "/ietf-routing:routing/control-plane-protocols/\
     control-plane-protocol[type='ietf-routing:static'][name='0']/\
     static-routes/ietf-ipv4-unicast-routing:ipv4/route"
  : destination-prefix: 0.0.0.0/0
    next-hop:
      next-hop-address: 2.0.0.2

4. Routing Table

The routing table of R1 is retrieved as shown below.

It includes local routes based on L3 interface configuration and remote routes based on static route configuration:

  • Net 0.0.0.0/0, static/remote route via 2.0.0.2.

  • Net 1.0.0.0/8, direct/local route via VLAN 1.

  • Net 2.0.0.0/8, direct/local route via VLAN 2.

  • Net 3.3.0.0/16, static/remote route via 2.0.0.2.

  • Net 4.4.0.0/16, static/remote route via 2.0.0.2.

FETCH request message:

- "/ietf-routing:routing/ribs/rib[name='ipv4']/routes/route"

FETCH response message:

- ? "/ietf-routing:routing/ribs/rib/routes/route"
  : - next-hop:
        outgoing-interface: L3V2
        ietf-ipv4-unicast-routing:next-hop-address: 2.0.0.2
      source-protocol: ietf-routing:static
      active:
      -
      ietf-ipv4-unicast-routing:destination-prefix: 0.0.0.0/0
    - next-hop:
        outgoing-interface: L3V1
        ietf-ipv4-unicast-routing:next-hop-address: 0.0.0.0
      source-protocol: ietf-routing:direct
      active:
      -
      ietf-ipv4-unicast-routing:destination-prefix: 1.0.0.0/8
    - next-hop:
        outgoing-interface: L3V2
        ietf-ipv4-unicast-routing:next-hop-address: 0.0.0.0
      source-protocol: ietf-routing:direct
      active:
      -
      ietf-ipv4-unicast-routing:destination-prefix: 2.0.0.0/8
    - next-hop:
        outgoing-interface: L3V2
        ietf-ipv4-unicast-routing:next-hop-address: 2.0.0.2
      source-protocol: ietf-routing:static
      active:
      -
      ietf-ipv4-unicast-routing:destination-prefix: 3.3.0.0/16
    - next-hop:
        outgoing-interface: L3V2
        ietf-ipv4-unicast-routing:next-hop-address: 2.0.0.2
      source-protocol: ietf-routing:static
      active:
      -
      ietf-ipv4-unicast-routing:destination-prefix: 4.4.0.0/16

5. ARP Table

The ARP table of R1 is retrieved for each L3 interface as shown below:

  • VLAN1: IP address 1.0.0.2 via MAC address 00-00-00-00-00-12.

  • VLAN2: IP address 2.0.0.2 via MAC address 00-00-00-00-00-22.

FETCH request message:

- "/ietf-interfaces:interfaces/interface[name='L3V1']/ietf-ip:ipv4/neighbor"

- "/ietf-interfaces:interfaces/interface[name='L3V2']/ietf-ip:ipv4/neighbor"

FETCH response message:

- ? "/ietf-interfaces:interfaces/interface/ietf-ip:ipv4/neighbor"
  : - ip: 1.0.0.2
      link-layer-address: 00-00-00-00-00-12


- ? "/ietf-interfaces:interfaces/interface/ietf-ip:ipv4/neighbor"
  : - ip: 2.0.0.2
      link-layer-address: 00-00-00-00-00-22

6. L3 Interface Counters

The L3 interface counters of R1 are retrieved as shown below.

In this example, 10 frames have been routed from VLAN 1 to VLAN 2.

FETCH request message:

- "/ietf-interfaces:interfaces/interface[name='L3V1']/ietf-ip:ipv4/\
   mchp-velocitysp-ip:statistics"

- "/ietf-interfaces:interfaces/interface[name='L3V2']/ietf-ip:ipv4/\
   mchp-velocitysp-ip:statistics"

FETCH response message:

- ? "/ietf-interfaces:interfaces/interface/ietf-ip:ipv4/\
     mchp-velocitysp-ip:statistics"
  : rx-total: '10'
    rx-octets: '460'
    rx-hdr-errors: '0'
    rx-addr-errors: '0'
    rx-forwards: '10'
    rx-no-routes: '0'
    rx-unknown-protos: '0'
    rx-delivers: '0'
    tx-requests: '0'
    tx-forwards: '0'
    tx-total: '0'
    tx-octets: '0'


- ? "/ietf-interfaces:interfaces/interface/ietf-ip:ipv4/\
     mchp-velocitysp-ip:statistics"
  : rx-total: '0'
    rx-octets: '0'
    rx-hdr-errors: '0'
    rx-addr-errors: '0'
    rx-forwards: '0'
    rx-no-routes: '0'
    rx-unknown-protos: '0'
    rx-delivers: '0'
    tx-requests: '0'
    tx-forwards: '10'
    tx-total: '10'
    tx-octets: '460'