Giter Site home page Giter Site logo

of-dpa's People

Contributors

simonknee avatar vitalivanov avatar vitaliy-kharechko avatar volodymyr-samotiy avatar yaroslav-medzyn avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

of-dpa's Issues

Typos (?) - "Name" and "Rule Type" instead of "name", "builtin" instead of "built-in" in the TTP

I am using a small Notepad++ hack that adds syntax-coloring and Code-folding to TTP, and I was
wondering why some flow-mods did not color correctly. IT looks like this is because the TTP has
a few typos, as follows

  1. The entire TTP uses "builtin_flow_mods". TTP spec says we should use "built_in_flow_mods"
  2. The "Ingress Port" table uses "Name" (note the capital 'N') instead of "name"
  3. The "Termination MAC" table uses "Rule Type" where i'd expect "name" to be

Michael Orr

Question: Where is the OF-DPA source code?

Hi,

I see that the repo contains the OFAGENT source code from indigo and it has a OFAGENT.c.
Also, there are binaries for installing the OF-DPA directly onto various target boards.

There is some code in the ofdpa driver level as well.

But where is the actual code for the OFDPA?
Also, how does OF-DPA communicate with the broadcom chip?
Does it use bcm API or it makes use of the bcm shell commands or is it using a completely different approach?

Thanks and Regards
Aditya

Running ofagentapp.dbg with GDB debugger

Hi venerable OF-DPAians!

According to Linux Build Procedure for OF-DPA Software documentation (http://broadcom-switch.github.io/of-dpa/doc/html/OFDPA_BUILDING.html),

"ofdpa.dbg: the OF-DPA executable with debug symbols. This is used with the GDB debugger."

I'm trying to run ofagentapp.dbg instead of ofdpa.dbg but I assume it would work with GDB in similar ways.
However, I'd normally need to add a "launcher" script before the executable file ofagentapp.dbg, followed by a few arguments as follows:

./launcher ofagentapp.dbg --dpid=0x00249b14d5e5 --controller=10.16.1.120:6633

In such a case, what should the command line for GDB be?

I've looked at instructions to run GDB but they almost always only mention the use of ONE executable file, which in this case should be ofagentapp.dbg. How should I input the line such that GDB may understand which is the launcher script and the executable?

Hope someone could help!

Cheers!
Ern

Which group needs to be used for vlan-assignment flow entry

Hello all,
@yaroslav-medzyn
@vitalivanov
@simonknee

  1. vlan assignment flow entry would assign a vlan id for the incoming untagged packet based on port-vlan mapping? In that case, which group would be used by the flow entry?
    Is it 1) L2 Interface group
    2) Or L2 Unfiltered Interface group

Could some one clarify me..?

  1. I have one more question......I would like to verify "vlan assignment" case in OFDPA code. while testing, I observed that OFDPA code/arch expects that ingress port has to be associated with the vlan which would be set in the action ( "set-vlan") for the receiving untagged packet. Could someone clarify me why OFDPA has check like this for the ingress port? Any use case is there for this...?

Thanks,
tech.kals

A question about L2 flood group in OFDPA

It seems that creation of a L2 flood group will trigger flooding of multicast packets in a VLAN, regardless if the L2 flood group is used by an DLF entry in the Bridging Table or not. I have an IPv4 Multicast entry in the Termination MAC table to direct multicast packets to Multicast Routing Table, but they still get flooded. The multicast routing table works ok if there is no L2 flood group. This behaviour does not seem to agree with the OFDPA 2.0 Spec, which says L2 flood group is used by DLF entry in Bridging Table. Is this a hardware configuration issue?

No root Makefile to build the loadable agent

Hi,

How do we build this OF agent load module so that we can install it on a switch kernel?
Can you provide a root makefile to build the agent to be used with Broadcom SDK?

Thanks,
Basu

OF-DPA sandbox

Hi, All

Can I launch OF-DPA on x86 or qemu emulation? I need to develop a few scripts for bcm ttp, but don't want to be stick with a switch.

Error -23 inserting flows into the VLAN1 table

Hi there,

My team and I are currently using OF-DPA (version 2.0.2.0 -- Built on Mon Sep 14 2015 at 05:51:48 UTC) to develop an automated routing platform we're attempting to use OF-DPA to match double-tagged 802.1Q (QinQ). Based on the OF-DPA documentation, we need to match the outer tag on the VLAN table and then match the inner tag using the VLAN1 table.

Here's our functional Python example, forked off the provided examples:

edited 12/5/16 1:55AM UTC - the code below now correctly inserts flows and returns success

#! /usr/bin/env python

"""
OF-DPA Match QinQ example
Usage: ./qinq.py [add|delete]
Author: Jaime Pillora <[email protected]>
"""

from OFDPA_python import *
import sys

def errstr(rc):
    if rc == OFDPA_E_EXISTS:
        return "already exists"
    elif rc == OFDPA_E_ERROR:
        return "constraint violated"
    elif rc == OFDPA_E_NONE:
        return "none"
    return "error (%d)" % (rc)

def main():
    rc = ofdpaClientInitialize("OFDPA_example")
    if rc != OFDPA_E_NONE:
        print "Unable to initialize."
        return
    # settings
    action = "add"
    if len(sys.argv) == 2:
        action = sys.argv[1]
    ofdpaFlowFn = None
    if action == "add":
        ofdpaFlowFn = ofdpaFlowAdd
    elif action == "delete":
        ofdpaFlowFn = ofdpaFlowDelete
    else:
        print "unknown action"
        return
    TRUE = 1
    # qinq configuration
    COOKIE = 0xdeadbeef
    IN_PORT = 38
    OUTER_VLAN = 2
    INNER_VLAN = 555
    TEMP_VLAN = 2003
    NEW_PORT = 39
    NEW_VLAN = 100
    print "%s flows on port %d..." % (action, IN_PORT)
    #=================================
    # Match on VLAN Table
    #  IN_PORT = $PORT
    #  VLAN_VID = $OUTER
    #  ACTIONS
    #     POP_VLAN
    #     SET FIELD `OVID=$OUTER`
    #     GO TO VLAN 1 TABLE (edited)
    outer = ofdpaFlowEntry_t()
    ofdpaFlowEntryInit(OFDPA_FLOW_TABLE_ID_VLAN, outer)
    outer.cookie = COOKIE
    outer.priority = 0x8000
    outer.flowData.vlanFlowEntry.match_criteria.inPort = IN_PORT
    outer.flowData.vlanFlowEntry.match_criteria.vlanId = (OFDPA_VID_PRESENT | OUTER_VLAN)
    outer.flowData.vlanFlowEntry.match_criteria.vlanIdMask = (OFDPA_VID_PRESENT | OFDPA_VID_EXACT_MASK)
    outer.flowData.vlanFlowEntry.popVlanAction = TRUE
    outer.flowData.vlanFlowEntry.ovidAction = TRUE
    outer.flowData.vlanFlowEntry.ovid = OUTER_VLAN
    outer.flowData.vlanFlowEntry.gotoTableId = OFDPA_FLOW_TABLE_ID_VLAN_1
    print "[table %d] outer VLAN %d -> table %d" % (outer.tableId, OUTER_VLAN, outer.flowData.vlanFlowEntry.gotoTableId)
    rc = ofdpaFlowFn(outer)
    if rc != OFDPA_E_NONE and rc != OFDPA_E_EXISTS:
        print "  outer: %s" % errstr(rc)
        return
    #=================================
    # Match on VLAN 1 Table
    #   IN_PORT = $PORT
    #   VLAN_VID = $INNER
    #   OVID = $OUTER
    #   ACTION
    #      SET VLAN_VID $TEMP_VLAN
    #      GOTO TABLE = TERMINATION_MAC
    inner = ofdpaFlowEntry_t()
    rc = ofdpaFlowEntryInit(OFDPA_FLOW_TABLE_ID_VLAN_1, inner)
    if rc != OFDPA_E_NONE:
        print "inner init: %s" % errstr(rc)
        return
    inner.cookie = COOKIE
    inner.priority = 0x8000
    inner.flowData.vlan1FlowEntry.match_criteria.inPort = IN_PORT
    inner.flowData.vlan1FlowEntry.match_criteria.ovid = (OFDPA_VID_PRESENT | OUTER_VLAN)
    inner.flowData.vlan1FlowEntry.match_criteria.vlanId = (OFDPA_VID_PRESENT | INNER_VLAN)
    inner.flowData.vlan1FlowEntry.setVlanIdAction = TRUE
    inner.flowData.vlan1FlowEntry.newVlanId = TEMP_VLAN
    inner.flowData.vlan1FlowEntry.popVlanAction = TRUE
    inner.flowData.vlan1FlowEntry.pushVlanAction = TRUE
    inner.flowData.vlan1FlowEntry.newTpid = 0x8100
    inner.flowData.vlan1FlowEntry.gotoTableId = OFDPA_FLOW_TABLE_ID_TERMINATION_MAC
    print "[table %d] inner VLAN %d -> table %d!" % (inner.tableId, INNER_VLAN, inner.flowData.vlan1FlowEntry.gotoTableId)
    rc = ofdpaFlowFn(inner)
    if rc != OFDPA_E_NONE and rc != OFDPA_E_EXISTS:
        print "  inner: %s" % errstr(rc)
        return
    #=================================
    # TODO
    # Match on TERMINATION_MAC Table
    #    IN_PORT = $PORT
    #    VLAN_VID = $TEMP_VLAN
    #    ACTION
    #       VLAN_VID = $NEW_VLAN
    #       OUT_PORT = $NEW_PORT
    print "success"
    return

if __name__ == '__main__': main()

At the moment, the outer flow is inserting correctly, though inner flow is failing with -23 (Constraint violated) though we can't figure out what's wrong with the flow and we've tried many variations of it.

Any help or link to a working QinQ python example would be greatly appreciated!

Regards,
Jaime Pillora
Ordnance Networks

Pop single-tag on egress

I'm trying to convert a single-tagged frame into an untagged frames using the OFDPA_FLOW_TABLE_ID_EGRESS_VLAN table. I'm attempting to make use of ofdpaEgressVlanFlowEntry_s's popVlanAction field:

outPort = 1
vlanId = (OFDPA_VID_PRESENT | 4)
vlanIdMask = (OFDPA_VID_PRESENT | OFDPA_VID_EXACT_MASK)
allowVlanTranslation = OFDPA_TRUE
popVlanAction = OFDPA_TRUE

Though with debug logging enabled, I'm getting:

ofdbFlowEgressVlanEntryValidate: VLAN Translate Single Tag type entry specifies invalid action.

Note:

  • I've previously added the L2 Unfiltered Port group entry to allow use of the egress tables
  • OFDPA version 2.0.4.0 -- Built on Mon Apr 25 2016 at 09:25:01 UTC
  • Pop VLAN works when done via an L2 Interface group though I want the port to be unfiltered

I'm quite sure I'm missing something though the way the docs read, it appears as if I can only go from double-tagged to untagged using egress tables 0 and 1, though that seems strange. What's the correct way to output untagged frames using the egress tables?

No configuration file

I'm quite interested in this project.
Especially, the sample programs helps developers to know how to use Broadcom's Silicon API.

But it is hard to use, because there is no configuration file which is created by autotools.
Currently, developer has to rename and edit Makefile.sample for each developer's environment. I think it's nonsense.
A general C-Language project prepares configuration file.
So I think this project also need it.

Best regards,

Hiroyasu OHYAMA

OF-DPA/Indigo group all delete functionality.

Let's say you have three L2 Interface groups and one L2 Flood group that outputs to those 3 L2 Interface groups.

Refcounts for all three L2 Interface groups is 1.
But L2 Flood group is not used in flow rules.

$ dpctl tcp:192.168.157.155:6634 stats-group

SENDING:
stat_req{type="grp", flags="0x0", group="all"}


RECEIVED:
stat_repl{type="grp", flags="0x0", stats=[{group="65537", ref_cnt="1", pkt_cnt="0", byte_cnt="0", cntrs=[]}, {group="65538", ref_cnt="1", pkt_cnt="0", byte_cnt="0", cntrs=[]}, {group="65539", ref_cnt="1", pkt_cnt="0", byte_cnt="0", cntrs=[]}, {group="1073807361", ref_cnt="0", pkt_cnt="0", byte_cnt="0", cntrs=[]}]}

Now I want to remove all groups and once they are not wired to flows you should be able to do it with ofproto.OFPGC_DELETE message and group_id - ofproto.OFPP_ALL, type fproto.OFPGT_ALL.

Logic placed to src/ofagent/indigo/modules/OFStateManager/module/src/group_handlers.c function ind_core_group_mod_handler() is incorrect as it simply checks refcounts and if it's not 0 then fails removal.

Hence groups from above example won't be removed.

Indigo code should do same as client_cfg_purge.c. Do iterations on all groups as many times as needed and remove groups with refcount of 0.

Trident II(BCM56854_A2)

Hi,
I'm new to this environment of devopment,
How do I need to start developping application for a switch based on Trident II(BCM56854_A2).
The document provided about installing is noting only quanta LY2, would the same files works for LY6 ?

I can't try it myself before having an idea. I don't want to risk broking the switch, it's the only that i have unfortunatly,
best regards

wrong group id mention for Unicast VLAN Bridging

Hi experts,

In the given TTP json file, I see, "Unicast vlan bridging" flow entry has group id as "L2 Multicast" . I think, this is wrong.... can someone correct it?


        {     
          "instruction": "WRITE_ACTIONS",
          "actions": [
            {     
              "action": "GROUP",
              "group_id": "<L2 Multicast>"     <<<<<<< This is wrong?
            }     

Thanks,
tech.kals

Ryu integration

Is there a working example of of-dpa with Ryu? Even a very simple learning switch?
The examples - in this repo and the documentation - do not seem to be working at all.

Thanks in advance!

ifconfig error gto_uImage

Hi,

We have a gto platform and using the default CFE we can load the gto_uImage.
(load -uboot :gto_uImage)
We also can unpack the image if we add the default ramdisk settings to the LINUX_CMDLINE.
If we then try to boot the kernel we get an error.
ifconfig: SIOCSIFFLAGS: no such device
The network is OK otherwise we could load with tftp.
We tried with nfs and ram none succeeded.
We tried ip=dhcp and ip=.
Booting another kernel was no problem.
The only reference we found how to get gto_uImage running was a talk on ONS 2014.
Our questions:
Where can we find some documentation? (Especially the needed command line parameters.)
Do we need to flash the "new" CFE?
We have a NDA with Broadcom and a docSafe account so we can search there as well.

Regards,

Rob.

How to process l3 pkt without changing dst mac?

Hi all,
I find that MAC_DST, MAC_SRC, VLAN-id must be set simultaneously when pkts go through L3 Unicast Group Table. Can I keep MAC_DST unchanged? Is there any method or pipeline which can keep MAC_DST when l3 pkts go through?
Thks.

[OF-DPA 1.0.0.2] [Interface Masters 2948-6XL] - Examples problem

In html documentation that is coming with binaries you have - 'Traffic Engineering use case' and section 'OF-DPA Configuration'.

When I run dpctl commands I get the following problem:

$ dpctl tcp:192.168.111.143:6634 flow-mod cmd=add,table=10 in_port=1,vlan_vid=10 goto:20

SENDING:
flow_mod{table="10", cmd="add", cookie="0x0", mask="0x0", idle="0", hard="0", prio="32768", buf="none", port="any", group="any", flags="0x0", match=oxm{in_port="1", vlan_vid="10"}, insts=[goto{table="20"}]}


OK.

$ dpctl tcp:192.168.111.143:6634 flow-mod cmd=add,table=10 in_port=2,vlan_vid=10 goto:20

SENDING:
flow_mod{table="10", cmd="add", cookie="0x0", mask="0x0", idle="0", hard="0", prio="32768", buf="none", port="any", group="any", flags="0x0", match=oxm{in_port="2", vlan_vid="10"}, insts=[goto{table="20"}]}


OK.

$ dpctl tcp:192.168.111.143:6634 flow-mod cmd=add,table=10 in_port=5,vlan_vid=10 goto:20

SENDING:
flow_mod{table="10", cmd="add", cookie="0x0", mask="0x0", idle="0", hard="0", prio="32768", buf="none", port="any", group="any", flags="0x0", match=oxm{in_port="5", vlan_vid="10"}, insts=[goto{table="20"}]}


OK.

$ dpctl tcp:192.168.111.143:6634 group-mod cmd=add,type=ind,group=720899 weight=0,port=any, group=any output=3

SENDING:
grp_mod{group="720899", cmd="add", type="ind", buckets=[{w="0", wprt="any", wgrp="any", acts=[group{id="any"}]}]}


RECEIVED:
error{type="GROUP_MOD_FAILED", code="INVALID_GROUP", dlen="0"}

$

Output from of-dpa is the following:

Jul 02 18:08:59.187 ofconnectionmanager: VERBOSE: cxn 192.168.111.143:6634: Received message, obj 0x5004700 of type of_group_mod
Jul 02 18:08:59.187 ofstatemanager: TRACE: Received msg type of_group_mod (79)
Jul 02 18:08:59.188 indigo_ofdpa_driver: ERROR: Incompatible fields for Group Type
Jul 02 18:08:59.188 ofconnectionmanager: TRACE: Sending error msg to 0x2105520. type 6. code 1.
Jul 02 18:08:59.188 ofconnectionmanager: TRACE: Send msg type 84 to cxn 1
Jul 02 18:08:59.188 ofconnectionmanager: VERBOSE: Sending message type of_hello_failed_error_msg to connection 192.168.111.143:6634
Jul 02 18:08:59.188 ofconnectionmanager: TRACE: cxn 192.168.111.143:6634: Enqueuing 12 bytes
Jul 02 18:08:59.188 ofconnectionmanager: TRACE: cxn 192.168.111.143:6634: Cur len 0 bytes, 0 pkts
Jul 02 18:08:59.188 ofconnectionmanager: TRACE: cxn 192.168.111.143:6634: Delete message object 0x5004700 of type of_group_mod
Jul 02 18:08:59.188 ofconnectionmanager: TRACE: cxn 192.168.111.143:6634: Op count 0
Jul 02 18:08:59.188 ofstatemanager: TRACE: Handled msg 0x5004700 with rv -15
Jul 02 18:08:59.189 ofconnectionmanager: ERROR: cxn 192.168.111.143:6634: OF message callback returned -15

Can you please advice what is wrong in this example?

$ dpctl --version
dpctl 1.3.0 compiled Apr 22 2014 16:55:19

The platform is Interface Masters Niagara 2948-6XL.

RYU ofdpa scripts to manage flows/groups.

Right now in src/Ryu/OFDPA_TE/ofdpa scripts to manage groups are not correct as they use incorrect RYU ids for groups.

To modify groups you need to use:
ofproto.OFPGC_ADD
ofproto.OFPGC_MODIFY
ofproto.OFPGC_DELETE
and not values for modifying flows.

Modify group id should be:
ofproto.OFPG_ALL
ofproto.OFPG_ANY
and not ofproto.OFPP_ALL and ofproto.OFPP_ANY.

There is no way to work with all tables. RYU value of:
ofproto.OFPTT_ALL

Problem with simple_switch_13.py

EVERY TIME I TRY TO RUN simple_switch_13.py I GET THE FOLLOWING ERROR

unsupported version 0x1. If possible, set the switch to use one of the versions [4]
Error in the datapath None from ('192.168.85.145', 51710)
hub: uncaught exception: Traceback (most recent call last):
File "/usr/local/lib/python3.4/dist-packages/ryu/lib/hub.py", line 60, in _launch
return func(*args, **kwargs)
File "/usr/local/lib/python3.4/dist-packages/ryu/controller/controller.py", line 460, in datapath_connection_factory
datapath.serve()
File "/usr/local/lib/python3.4/dist-packages/ryu/controller/controller.py", line 378, in serve
self._recv_loop()
File "/usr/local/lib/python3.4/dist-packages/ryu/controller/controller.py", line 132, in deactivate
method(self)
File "/usr/local/lib/python3.4/dist-packages/ryu/controller/controller.py", line 281, in _recv_loop
handler(ev)
File "/usr/local/lib/python3.4/dist-packages/ryu/controller/ofp_handler.py", line 180, in hello_handler
self._hello_failed(datapath, error_desc)
File "/usr/local/lib/python3.4/dist-packages/ryu/controller/ofp_handler.py", line 66, in _hello_failed
datapath.send_msg(error_msg)
File "/usr/local/lib/python3.4/dist-packages/ryu/controller/controller.py", line 347, in send_msg
msg.serialize()
File "/usr/local/lib/python3.4/dist-packages/ryu/ofproto/ofproto_parser.py", line 272, in serialize
self._serialize_body()
File "/usr/local/lib/python3.4/dist-packages/ryu/ofproto/ofproto_v1_3_parser.py", line 253, in _serialize_body
self.buf += self.data
TypeError: can't concat str to bytearray

CAN SOMEONE HELP ME WITH THIS PROBLEM ?

Integration with Openvswitch

Hi,

Has Broadcom brought out a complete package for integration Openvswitch like how it has for Indigo ? Last I heard was that it is being worked on. If not yet, when can we expect it to be released ?

Thanks.

Could not parse msg to of object

Hello!
In my lab I've got as5712 switch and ONL 2.x version with ofdpa and indigo installed on it
I've followed this installation guide https://wiki.opencord.org/display/CORD/Hardware+Switch+Installation+Guide
I am trying to reach the listening port of the RYU controller using indigo agent like this
brcm-indigo-ofdpa-ofagent --dpid=0x0000000000000001 --controller=192.168.1.199
And here is what I get:
01-26 07:54:50.437635 [ofconnectionmanager]cxn 192.168.1.199:6653: Could not parse msg to OF object, len 8
Segmentation fault
Any ideas what is it related to?
Thanks in advance
Alexander

Not able to add ACL flows with OFDPA (Table 60) flows using Ryu Controller.

Hello!

I am trying to add ACL flows on White-Box Switch (running OFDPA v3.0) using Ryu REST APIs. While adding the flows OFDPA throws following error and returns OF_ERR message to controller.

Error--> "ofdpaFlowAdd: Table ID 60 flow entry did not pass validation."
ofstatemanager: ERROR: Error from Forwarding while inserting flow: Unknown error

Following is the JSON object used for adding the ACL flow.

{
"dpid": 1,
"cookie": 1,
"cookie_mask": 1,
"table_id": 60,
"idle_timeout": 30,
"hard_timeout": 30,
"priority": 11111,
"flags": 1,
"match":{
"eth_type":2048,
"ip_proto":6,
"tcp_dst":8798
},
"actions":[
{
"type":"OUTPUT",
"port": 3
}
]
}
API used: http://10.22.18.100:8080/stats/flowentry/add

Can anybody help me to add above flow?

TIA

Question: Action of Rewriting IP address?

I wanted to modify both the src/dst MAC addresses and src/dst IP addresses. However, I could only find the l2rewrite Group Bucket in "client_group" application.

Am I on the right direction? Is there any way to do any IP addresses and srcPort dstPort modifications on of-dpa?

Compilation of OFagent on Windriver linux

Hi,

I was trying to compile ofagent on WR linux, and try to run it. I want to integrate this on our switch and use ofagent and communicae with the OFDPA server. . I have compiled the indigo directories. But when compiling the ofagent application code, I come up with this error.
.o version.o -Wl,--end-group
-lrt -Wl,-Bstatic -Wl,-Bdynamic -lc -lrpc_client
/usr/bin/ld: cannot find -lrpc_client
collect2: ld returned 1 exit status

Is there a README which will tell me how to get this compilation done?

Delete MPLS Interface group lead to problem with traffic on other interface

Hi,
I have tried IPv4 routing pipeline + addition MPLS label assignment. All works as expected.

Flow tables:

Table ID 10 (VLAN):   Retrieving all entries. Max entries = 16384, Current entries = 1.
--  inPort = 11 (Physical)  vlanId:mask = 0x196b:0x1fff (VLAN 2411) | GoTo = 20 (Termination MAC) | priority = 10 hard_time = 0 idle_time = 0 cookie = 3

Table ID 20 (Termination MAC):   Retrieving all entries. Max entries = 512, Current entries = 1.
--  inPort:mask = 11:0xffffffff etherType = 0x0800 destMac:mask = 0010.1010.1010:ffff.ffff.ffff vlanId:mask = 0x196b:0x1fff (VLAN 2411) | GoTo = 30 (Unicast Routing) outPort = 0 (Physical)  | priority = 100 hard_time = 0 idle_time = 0 cookie = 2

Table ID 30 (Unicast Routing):   Retrieving all entries. Max entries = 90112, Current entries = 1.
--  etherType = 0x0800 vrf:mask = 0x0000:0x0000 dstIp4 = 192.168.55.16/255.255.255.255 dstIp6 = ::/:: | GoTo = 60 (ACL Policy) groupId = 0x92000038 | priority = 100 hard_time = 0 idle_time = 0 cookie = 1

Group tables:

groupId = 0x03ea0037 (L2 Interface, VLAN ID = 1002, Port ID = 55): duration: 11806, refCount:1
	bucketIndex = 0: outputPort = 55 (Physical) popVlanTag = 0 allowVlanTranslation = 0 
groupId = 0x03ea0038 (L2 Interface, VLAN ID = 1002, Port ID = 56): duration: 11803, refCount:1
	bucketIndex = 0: outputPort = 56 (Physical) popVlanTag = 0 allowVlanTranslation = 0 
groupId = 0x90000037 (MPLS Label, Sub-type = MPLS Interface, Index = 55): duration: 2247, refCount:0
	bucketIndex = 0: referenceGroupId = 0x03ea0037 oamLmTxCountAction = 0 vlanId = 0x13ea (VLAN 1002) lmepIdAction = 0 lmepId = 0 srcMac: 00:00:00:00:02:01 dstMac: 00:00:00:00:02:02 colorBasedCountAction = 0 colorBasedCountId = 0 
groupId = 0x90000038 (MPLS Label, Sub-type = MPLS Interface, Index = 56): duration: 11801, refCount:1
	bucketIndex = 0: referenceGroupId = 0x03ea0038 oamLmTxCountAction = 0 vlanId = 0x13ea (VLAN 1002) lmepIdAction = 0 lmepId = 0 srcMac: 00:00:00:00:01:01 dstMac: 00:00:00:00:01:02 colorBasedCountAction = 0 colorBasedCountId = 0 
groupId = 0x92000038 (MPLS Label, Sub-type = MPLS L3 VPN Label, Index = 56): duration: 11798, refCount:1
	bucketIndex = 0: referenceGroupId = 0x90000038 pushL2Hdr = 0 pushVlan = 0 newTpid = 0x0000 pushMplsHdr = 1 pushCW = 0 mplsLabel = 0xdc mplsBOS = 1 mplsEXPAction = 0 mplsEXP = 0 mplsCopyEXPOutwards = 0 remarkTableIndexAction = 0 RemarkTableIndex = 0 mplsTTLAction = 0 mplsTTL = 0 mplsCopyTTLOutwards = 0 lmepIdAction = 0 lmepId = 0 oamLmTxCountAction = 0 colorBasedCountAction = 0 colorBasedCountId = 0

IP packets coming on port 11 with ip_dst=192.168.55.16 exit from port 56 correctly.
Then I just delete group 0x90000037, which actually not participating in forwarding (its outgoing port 55), and this deletion stops traffic on port 56.

Thank you,
Konstantin

OF-DPA VPWS pipeline

Hi,

I've implemented the component for supporting VPWS pipeline.

I succeed to install the rules in each table composing VPWS pipeline.

But, in VPWS initiation pipeline, the packets did not be forwarded, and the packet_in message occurred at ACL policy table.

Could you explain why are the packets not forwarded?

The switch is AS5712-54x, and OF-DPA version is 3.0.5.5. Also, the in_port number is 1, and the out_port number is 49.

Below are flow rules of each flow table and group rules of each group table.

Flow tables

Table ID 10 (VLAN):   Retrieving all entries. Max entries = 16384, Current entries = 3.
--  inPort = 1 (Physical)  vlanId:mask = 0x0000:0x1fff (VLAN 0) | GoTo = 13 (MPLS L2 Port) mplsL2Port = 0x1 tunnelId = 0x10001 mplsType = 1 (VPWS) | priority = 300 hard_time = 0 idle_time = 0 cookie = 68

Table ID 13 (MPLS L2 Port):   Retrieving all entries. Max entries = 8192, Current entries = 1.
--  mplsL2Port:mask = 0x00000001:0xffffffff tunnelId = 0x10001 | GoTo = 16 (MPLS PCP Trust) QOS Index = 0 groupId = 0x91000011 | priority = 300 hard_time = 0 idle_time = 0 cookie = 70

Table ID 60 (ACL Policy):   Retrieving all entries. Max entries = 3072, Current entries = 5.
--  inPort:mask = 0:0x0 srcMac:mask = 0000.0000.0000:0000.0000.0000 destMac:mask = 0000.0000.0000:0000.0000.0000 etherType:mask = 0x0800:0xffff | GoTo = 0 (None) outPort = CONTROLLER (Reserved)  | priority = 5 hard_time = 0 idle_time = 0 cookie = 7
--  inPort:mask = 0:0x0 srcMac:mask = 0000.0000.0000:0000.0000.0000 destMac:mask = 0000.0000.0000:0000.0000.0000 etherType:mask = 0x0806:0xffff | GoTo = 0 (None) outPort = CONTROLLER (Reserved)  | priority = 40000 hard_time = 0 idle_time = 0 cookie = 6
--  inPort:mask = 0:0x0 srcMac:mask = 0000.0000.0000:0000.0000.0000 destMac:mask = 0000.0000.0000:0000.0000.0000 etherType:mask = 0x86dd:0xffff srcIp6 = ::/:: dstIp6 = ::/:: | GoTo = 0 (None) outPort = CONTROLLER (Reserved)  | priority = 5 hard_time = 0 idle_time = 0 cookie = 8
--  inPort:mask = 0:0x0 srcMac:mask = 0000.0000.0000:0000.0000.0000 destMac:mask = 0000.0000.0000:0000.0000.0000 etherType:mask = 0x88cc:0xffff | GoTo = 0 (None) outPort = CONTROLLER (Reserved)  | priority = 40000 hard_time = 0 idle_time = 0 cookie = 5

Group tables

groupId = 0x00010031 (L2 Interface, VLAN ID = 1, Port ID = 49): duration: 263, refCount:1
        bucketIndex = 0: outputPort = 49 (Physical) popVlanTag = 1 allowVlanTranslation = 0
groupId = 0x90000022 (MPLS Label, Sub-type = MPLS Interface, Index = 34): duration: 261, refCount:1
        bucketIndex = 0: referenceGroupId = 0x00010031 oamLmTxCountAction = 0 vlanId = 0x1001 (VLAN 1) lmepIdAction = 0 lmepId = 0 srcMac: 0C:C4:7A:BC:BE:02 dstMac: 0C:C4:7A:BC:BF:E6 colorBasedCountAction = 0 colorBasedCountId = 0
groupId = 0x91000011 (MPLS Label, Sub-type = MPLS L2 VPN Label, Index = 17): duration: 261, refCount:1
        bucketIndex = 0: referenceGroupId = 0x93000011 pushL2Hdr = 1 pushVlan = 1 newTpid = 0x8100 pushMplsHdr = 1 pushCW = 1 mplsLabel = 0xa081 mplsBOS = 1 mplsEXPAction = 0 mplsEXP = 0 mplsCopyEXPOutwards = 0 remarkTableIndexAction = 0 RemarkTableIndex = 0 mplsTTLAction = 0 mplsTTL = 0 mplsCopyTTLOutwards = 0 lmepIdAction = 0 lmepId = 0 oamLmTxCountAction = 0 colorBasedCountAction = 0 colorBasedCountId = 0
groupId = 0x93000011 (MPLS Label, Sub-type = MPLS Tunnel Label1, Index = 17): duration: 261, refCount:1
        bucketIndex = 0: referenceGroupId = 0x90000022 pushL2Hdr = 0 pushVlan = 0 newTpid = 0x0000 pushMplsHdr = 1 pushCW = 0 mplsLabel = 0xa081 mplsBOS = 0 mplsEXPAction = 0 mplsEXP = 0 mplsCopyEXPOutwards = 0 remarkTableIndexAction = 0 RemarkTableIndex = 0 mplsTTLAction = 0 mplsTTL = 0 mplsCopyTTLOutwards = 0 lmepIdAction = 0 lmepId = 0 oamLmTxCountAction = 0 colorBasedCountAction = 0 colorBasedCountId = 0

Thanks,
Bong-yeol.

BCM OF-DPA initialization call flow

Hi Experts,

  1. Could someone share BCM OF-DPA initialization steps for OVS (OpenVSwitch)

  2. Anyone have integrated OF-DPA with OVS ?

Thanks,
Kals.

Create a gh-pages branch

Fork master to gh-pages and the docs will be hosted by Github here.

Then you could change the README.md to:

Documentation
=============

Detailed documentation can be found at:

### http://Broadcom-Switch.github.io/of-dpa/doc/html

OF-DPA Support for chips

Hi, there. I've got some questions about OF-DPA. I'm a student, and I need some background data to launch a networking lab with my supervisor.

1-Which chips does OF-DPA support? (We are planning to purchase some chips for our next project. Since we are not planning to use Trident2, we wanted to know which chips does OF-DPA support. We are currently thinking about using DNX family. We really need the OpenFlow support in our product)

2-Is OF-DPA compatible with newer Broadcom SDK versions (e.g., 6.5.21)?

[OF-DPA] flow table initialization and flow entry addition

Hi Experts,

I have the following doubts. Could someone clarify me?

  1. we know that OF-DPA have multiple flow tables. I see, there is an API for adding a flow entry into the table. But, I dont see any API for initializing flow table. All the flow tables would be initialized as part of OF-DPA initialization ?

  2. Can someone clarify me what happens during the OF-DPA initialization as well? I dont see, any API for initializing OF-DPA?

  3. https://github.com/Broadcom-Switch/of-dpa/blob/master/src/example/client_vlan.c

In the above link, i see, flow table is initialized as shown below. If add multiple entries to the same flow table, should I call the below API. I am doubting and confused as well..

rc = ofdpaFlowEntryInit(OFDPA_FLOW_TABLE_ID_VLAN, &flow);
if (rc != OFDPA_E_NONE)
{
printf("\r\nFailed to initialize Vlan Flow Table.(rc = %d)\n", rc);
return rc;
}

in the same page, i see,

for (i = 0; i < arguments.count; i++)
{
rc = ofdpaFlowAdd(&flow);

  if (rc != 0)
  {
    printf("\r\nFailed to add VLAN flow entry. rc = %d.\r\n", rc);
    displayVlan(&flow);
    break;
  }
  flow.flowData.vlanFlowEntry.match_criteria.vlanId++;
}

ofdpaFlowAdd is used to add a flow entry in the flow table. I can assume that the entry would be added in the current flow table. But, how we can add the same flow entry in the remaining flow tables ?

  1. As we all know that OF-DPA supports multiple flow tables. If a flow entry is added in the first flow table then will it be added in the remaining flow tables also? will this be taken care by OF-DPA ? Can someone clarify me.

Thanks,
Kals.

Build of-dpa/src/example

Hello, I'm sorry if this is not the right place for this question, but here it goes anyway.
I'm new with OF-DPA SDK. And I have saw some document like OFDPA_ASSV-ETP200-R.pdf and of-dpa/doc/html.
I want to build src/example for a build test.
Is this package can build independent in OS?
When I enter to src/example folder, then rename Makefile.example to Makefile.
Then marked line CROSS_COMPILE_GTO(# CROSS_COMPILE_GTO = /projects/nwsoft-toolchains/brl/brl_2.0/brl_2.0.1/gto/bin/powerpc-broadcom-linux-gnu-).
It means general gcc building.
After I type make command, build error messages was appeared:


$ make
gcc -o client_routing -L../../bin/gto-trident-brl20 -Wl,-Bstatic client_routing.o -Wl,-Bdynamic -lc -lrpc_client
/usr/bin/ld: skipping incompatible ../../bin/gto-trident-brl20/librpc_client.so when searching for -lrpc_client
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.9/../../../../lib/librpc_client.so when searching for -lrpc_client
/usr/bin/ld: skipping incompatible /usr/lib/../lib/librpc_client.so when searching for -lrpc_client
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.9/../../../librpc_client.so when searching for -lrpc_client
/usr/bin/ld: skipping incompatible /usr/local/lib/librpc_client.so when searching for -lrpc_client
/usr/bin/ld: skipping incompatible /usr/lib/librpc_client.so when searching for -lrpc_client
/usr/bin/ld: cannot find -lrpc_client
collect2: error: ld returned 1 exit status
Makefile:60: recipe for target 'client_routing' failed
make: *** [client_routing] Error 1


Does anyone knows how to solve this issue?

  • /usr/bin/ld: cannot find -lrpc_client

Why I want to build it is because I don't have a u-boot, my CPU architecture is X86_64.
So I can't not follow of-dpa/bin/gto-trident-brl20 steps to update bootloader.
I think OF-DPA support x86_64, isn't it?
But is there anyone knows how to start with build OF-DPA?
Or maybe it needs broadcom's tool chain like powerpc-broadcom-linux-gnu-gcc?

About VRF or similar metadata.

Hi all,
Can I set VRF at Unicast Routing Table? Is there any other metadata like VRF that I can manipulate in the pipeline?
Thks.

ofdpa not starting with mdio errors

Hi all,

Trying to get of-dpa running on an im-x86-trident-ub12 supportive switch. ofdpa seems to find the T2 but can't seem to find a number of mdio devices before it fails. Output:

What's missing?

version 1.0.0.3 -- Built on Fri Jun 6 2014 at 21:27:35 EDT

Initializing the system.
DMA pool size: 8388608
PCI unit 0: Dev 0xb850, Rev 0x03, Chip BCM56850_A2, Driver BCM56850_A0
SOC unit 0 attached to PCI device BCM56850_A2
rc: unit 0 device BCM56850_A2
rc: MMU initialized
Can't open /dev/mdio-80-0
Can't open /dev/mdio-81-0
Can't open /dev/mdio-82-0
Can't open /dev/mdio-83-0
Can't open /dev/mdio-84-0
Can't open /dev/mdio-85-0
Can't open /dev/mdio-86-0
Can't open /dev/mdio-87-0
Can't open /dev/mdio-88-0
Can't open /dev/mdio-89-0
Can't open /dev/mdio-8a-0
Can't open /dev/mdio-8b-0
Can't open /dev/mdio-8e-0
Can't open /dev/mdio-8e-1
Can't open /dev/mdio-8e-2
reg CMIC_CMC0_MIIM_PARAM field BUS_ID is too big
ERROR: Assertion failed: (!VALUE_TOO_BIG_FOR_FIELD) at /projects/ccstgloc-fstpth4/viewstore/lvl7build/build/RELEASE_OFDPA_1.0.0.3-im-x86-trident-ub12_ubuntu/vobs/openflow/ofdpa/sdk/src/soc/common/reg.c:2616
ERROR: Continue or quit (c/q)? [q] q```

[OF-DPA 1.0.0.1] Interface Masters platform SDK kernel modules loading problem.

Hi Broadcom team,

With latest 1.0.0.1 release I have the following problem loading your modules.

root@n2972:/broadcom/of-dpa/bin/im-x86-trident-ub12# uname -a
Linux n2972 3.2.0-23-generic #36 SMP Sat Jan 25 19:39:09 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
root@n2972:/broadcom/of-dpa/bin/im-x86-trident-ub12# insmod linux-kernel-bde.ko
root@n2972:/broadcom/of-dpa/bin/im-x86-trident-ub12# insmod linux-user-bde.ko
insmod: error inserting 'linux-user-bde.ko': -1 Invalid parameters
root@n2972:/broadcom/of-dpa/bin/im-x86-trident-ub12#

Here is what I see in dmesg output:

root@n2972:/broadcom/of-dpa/bin/im-x86-trident-ub12# dmesg
...
[ 1153.891762] linux-kernel-bde (2871): Payload size of 256 bytes may not be supported by all PCIe bridges by default.
[ 1160.019060] linux_user_bde: disagrees about version of symbol set_user_nice
[ 1160.019079] linux_user_bde: Unknown symbol set_user_nice (err -22)
[ 1160.019131] linux_user_bde: disagrees about version of symbol wake_up_process
[ 1160.019139] linux_user_bde: Unknown symbol wake_up_process (err -22)
root@n2972:/broadcom/of-dpa/bin/im-x86-trident-ub12#

Can you please check this out?

Example code for VPWS?

Hello,

I'm trying to do simple VPSW with OF-DPA-2.0.4.0 + ONL-2.0.0 on AS7712-32X but with no luck.

Here is the code I'm trying with

https://gist.github.com/ishidawataru/1f08ffe12bb2dbc2eef77cb77ef920cd

Output of client_flowtable_dump

root@localhost:~# client_flowtable_dump
Table ID 10 (VLAN):   Retrieving all entries. Max entries = 16384, Current entries = 1.
--  inPort = 9 (Physical)  vlanId:mask = 0x0000:0x0000 (VLAN 0) | GoTo = 13 (MPLS L2 Port) mplsL2Port = 0x10 tunnelId = 0x10001 mplsType = 1 (VPWS) | priority = 0 hard_time = 0 idle_time = 0 cookie = 0

Table ID 13 (MPLS L2 Port):   Retrieving all entries. Max entries = 8192, Current entries = 1.
--  mplsL2Port:mask = 0x00000010:0xffffffff tunnelId = 0x10001 | GoTo = 60 (ACL Policy) groupId = 0x91000000 | priority = 0 hard_time = 0 idle_time = 0 cookie = 0

Table ID 60 (ACL Policy):   Retrieving all entries. Max entries = 1536, Current entries = 1.
--  inPort:mask = 9:0x0 srcMac:mask = 0000.0000.0000:0000.0000.0000 destMac:mask = 0000.0000.0000:0000.0000.0000 etherType:mask = 0x0000:0x0000 | GoTo = 0 (None) outPort = CONTROLLER (Reserved)  | priority = 0 hard_time = 0 idle_time = 0 cookie = 0

Output of client_grouptable_dump

root@localhost:~# client_grouptable_dump
groupId = 0x000a0011 (L2 Interface, VLAN ID = 10, Port ID = 17): duration: 1135, refCount:1
        bucketIndex = 0: outputPort = 17 (Physical) popVlanTag = 1 allowVlanTranslation = 0
groupId = 0x90000001 (MPLS Label, Sub-type = MPLS Interface, Index = 1): duration: 1135, refCount:1
        bucketIndex = 0: referenceGroupId = 0x000a0011 oamLmTxCountAction = 0 vlanId = 0x100a (VLAN 10) lmepIdAction = 0 lmepId = 0 srcMac: 7C:FE:90:35:3E:22 dstMac: 7C:FE:90:35:3E:23
groupId = 0x91000000 (MPLS Label, Sub-type = MPLS L2 VPN Label, Index = 0): duration: 1135, refCount:1
        bucketIndex = 0: referenceGroupId = 0x93000000 pushL2Hdr = 1 pushVlan = 0 newTpid = 0x0000 pushMplsHdr = 1 pushCW = 1 mplsLabel = 0x14 mplsBOS = 1 mplsEXPAction = 0 mplsEXP = 0 mplsCopyEXPOutwards = 0 remarkTableIndexAction = 0 RemarkTableIndex = 0 mplsTTLAction = 0 mplsTTL = 0 mplsCopyTTLOutwards = 0 lmepIdAction = 0 lmepId = 0 oamLmTxCountAction = 0 colorBasedCountAction = 0 colorBasedCountId = 0
groupId = 0x93000000 (MPLS Label, Sub-type = MPLS Tunnel Label1, Index = 0): duration: 1135, refCount:1
        bucketIndex = 0: referenceGroupId = 0x90000001 pushL2Hdr = 0 pushVlan = 0 newTpid = 0x0000 pushMplsHdr = 1 pushCW = 0 mplsLabel = 0xa mplsBOS = 0 mplsEXPAction = 0 mplsEXP = 0 mplsCopyEXPOutwards = 0 remarkTableIndexAction = 0 RemarkTableIndex = 0 mplsTTLAction = 0 mplsTTL = 0 mplsCopyTTLOutwards = 0 lmepIdAction = 0 lmepId = 0 oamLmTxCountAction = 0 colorBasedCountAction = 0 colorBasedCountId = 0

All the rules are installed without error and I'm also receiving packet-in packets using ofdpa_pktrxtx.py but packets from inPort 9 don't come out from outPort 17

Could you point out what is wrong with the code?
Or It would be very helpful if you have any example code for VPWS application.

Unable to program MPLS pseudowire on Qumran

Hi all,

We are trying to program an MPLS based pseudowire on a Broadcom Qumran. Until now did not succeed.

To push the flows towards the Qumran switch we are using ONOS (1.13.1). All goes wel until we try to program flow table 11.

We are using the following JSON file
{
"flows": [
{
"tableId": 11,
"groupId": 0,
"priority": 32768,
"isPermanent": true,
"deviceId": "of:0000000000000011",
"treatment": {
"instructions": [

           {
              "subtype" : "VLAN_PUSH",
              "ethernetType" : "0x8100",
              "type" : "L2MODIFICATION"
           },
           {
              "vlanId" : 101,
              "subtype" : "VLAN_ID",
              "type" : "L2MODIFICATION"
           },
           {
              "type" : "EXTENSION",
              "deviceId" : "of:0000000000000011",
              "extension" : {
                 "type" : "OFDPA_SET_MPLS_TYPE",
                 "mplsType" : 1
              }
           },
           {
              "extension" : {
                 "type" : "OFDPA_SET_MPLS_L2_PORT",
                 "mplsL2Port" : 10
              },
              "deviceId" : "of:0000000000000011",
              "type" : "EXTENSION"
           },
           {
              "type" : "L2MODIFICATION",
              "subtype" : "TUNNEL_ID",
              "tunnelId" : 65579
           },
           {
              "tableId" : "13",
              "type" : "TABLE"
           }

    ],
    "deffered": []
  },
  "selector": {
    "criteria": [
      {
        "type": "IN_PORT",
        "port": 10
      },
      {
        "type": "VLAN_VID",
        "vlanId": 101
      },
      {
        "type": "EXTENSION",
        "deviceId": "of:0000000000000011",
        "extension": {
          "type": "OFDPA_MATCH_OVID",
          "oVid": 101
        }
      }
    ]
  }
}

]
}

This file is accepted and pushed by ONOS.

On the Qumran switch we get the following alarm continually
0:bcm_petra_vlan_gport_add: Invalid parameter
driverVpwsCustomerPortAdd: bcm_vlan_gport_add() failed, for customer Unit 0, vlan_port 1149243397 ofdpaFlowAdd: Table ID 11 error adding flow entry to driver. rc = -22
0:_bcm_petra_vlan_port_add: VLAN membership setting for VLAN=0 is not allowed
0:bcm_petra_vlan_gport_add: Invalid parameter
driverVpwsCustomerPortAdd: bcm_vlan_gport_add() failed, for customer Unit 0, vlan_port 1149243397 ofdpaFlowAdd: Table ID 11 error adding flow entry to driver. rc = -22
0:_bcm_petra_vlan_port_add: VLAN membership setting for VLAN=0 is not allowed
0:bcm_petra_vlan_gport_add: Invalid parameter
driverVpwsCustomerPortAdd: bcm_vlan_gport_add() failed, for customer Unit 0, vlan_port 1149243397 ofdpaFlowAdd: Table ID 11 error adding flow entry to driver. rc = -22
^C

Does someone have an idea we could be wrong here, we are out of options.

regards
Fred

Problem with Ryu simple_switch_13.py application

Hi,

I'm trying to run Ruy simple_switch_13.py application on controller communicating
with of-dpa 1.0.0.1 agent and get the following error:

indigo_ofdpa_driver: ERROR: Unsupported instruction of_instruction_apply_actions for flow table 0.
indigo_ofdpa_driver: ERROR: Failed to get flow instructions. (err = -5)

Is this a known issue ? How can I fix it ?

Thanks.

Felix Radensky.

Question - not an issue - support of-dpa

Hello, I'm sorry if this is not the right place for this question, but here it goes anyway,
Could some on help me determine which are the BCM switch asics that support of-dpa? What are the supported part numbers?
Thanks

VPWS termination flow doesn't work

I'm trying to do simple VPWS (#44).
Though VPWS initiation is working, termination is not.

environment : OF-DPA-2.0.4.0 + ONL-2.0.0 on AS7712-32X (2pc)

topology:

                 swp9         swp1    swp1       swp9
  ---------         -----------          ----------          --------
 |  host1  |-------| as7712-1  |--------| as7712-2 |--------| host2  |
  ---------         -----------          ----------          --------
           untagged             mpls<20>            untagged

Here is the code I'm trying (running the same code for both as7712-1 and as7712-2)

https://gist.github.com/ishidawataru/1f08ffe12bb2dbc2eef77cb77ef920cd

Output of client_flowtable_dump

Table ID 10 (VLAN):   Retrieving all entries. Max entries = 16384, Current entries = 3.
--  inPort = 1 (Physical)  vlanId:mask = 0x0000:0x1fff (VLAN 0) | GoTo = 20 (Termination MAC) newVlanId = 0x100a (VLAN 10) | priority = 0 hard_time = 0 idle_time = 0 cookie = 0
--  inPort = 1 (Physical)  vlanId:mask = 0x100a:0x1fff (VLAN 10) | GoTo = 20 (Termination MAC) | priority = 0 hard_time = 0 idle_time = 0 cookie = 0
--  inPort = 9 (Physical)  vlanId:mask = 0x0000:0x0000 (VLAN 0) | GoTo = 13 (MPLS L2 Port) mplsL2Port = 0x10 tunnelId = 0x10001 mplsType = 1 (VPWS) | priority = 0 hard_time = 0 idle_time = 0 cookie = 0

Table ID 13 (MPLS L2 Port):   Retrieving all entries. Max entries = 8192, Current entries = 1.
--  mplsL2Port:mask = 0x00000010:0xffffffff tunnelId = 0x10001 | GoTo = 60 (ACL Policy) groupId = 0x91000000 | priority = 0 hard_time = 0 idle_time = 0 cookie = 0

Table ID 20 (Termination MAC):   Retrieving all entries. Max entries = 1024, Current entries = 1.
--  inPort:mask = 0:0x0 etherType = 0x8847 destMac:mask = 7cfe.9035.3e22:ffff.ffff.ffff vlanId:mask = 0x100a:0x1fff (VLAN 10) | GoTo = 24 (MPLS 1) outPort = 0 (Physical)  | priority = 0 hard_time = 0 idle_time = 0 cookie = 0

Table ID 24 (MPLS 1):   Retrieving all entries. Max entries = 16384, Current entries = 1.
--  tableId = 24 etherType = 0x8847 BoS = TRUE mplsLabel = 0x14 inPort:mask = 0:0x0 mplsTtl:mask = 0:0x0 mplsDataFirstNibble:mask = 0:0x0 mplsAchChannel:mask = 0x0:0x0 nextLabelIsGal:mask = 0:0x0 dstIp4 = 0.0.0.0/0.0.0.0 dstIp6 = ::/:: ipProto:mask = 0:0x0 udpSrcPort:mask = 0:0x0 udpDstPort:mask = 0:0x0 | GoTo = 29 (MPLS Type) popLabel newEtherType = 0x0000 mplsL2Port = 0x00020010 tunnelId = 0x00010001 popCw popL2Header mplsType = 1 (VPWS) groupId = 0xb0000009 outPort = 0 (Physical)  | priority = 0 hard_time = 0 idle_time = 0 cookie = 0

Table ID 60 (ACL Policy):   Retrieving all entries. Max entries = 1536, Current entries = 1.
--  inPort:mask = 9:0x0 srcMac:mask = 0000.0000.0000:0000.0000.0000 destMac:mask = 0000.0000.0000:0000.0000.0000 etherType:mask = 0x0000:0x0000 | GoTo = 0 (None) outPort = CONTROLLER (Reserved)  | priority = 0 hard_time = 0 idle_time = 0 cookie = 0

Output of client_grouptable_dump

groupId = 0x000a0001 (L2 Interface, VLAN ID = 10, Port ID = 1): duration: 1397, refCount:1
        bucketIndex = 0: outputPort = 1 (Physical) popVlanTag = 1 allowVlanTranslation = 0
groupId = 0x90000001 (MPLS Label, Sub-type = MPLS Interface, Index = 1): duration: 1397, refCount:1
        bucketIndex = 0: referenceGroupId = 0x000a0001 oamLmTxCountAction = 0 vlanId = 0x100a (VLAN 10) lmepIdAction = 0 lmepId = 0 srcMac: 7C:FE:90:35:3E:22 dstMac: 7C:FE:90:35:3E:23
groupId = 0x91000000 (MPLS Label, Sub-type = MPLS L2 VPN Label, Index = 0): duration: 1397, refCount:1
        bucketIndex = 0: referenceGroupId = 0x90000001 pushL2Hdr = 1 pushVlan = 0 newTpid = 0x0000 pushMplsHdr = 1 pushCW = 1 mplsLabel = 0x14 mplsBOS = 1 mplsEXPAction = 0 mplsEXP = 0 mplsCopyEXPOutwards = 0 remarkTableIndexAction = 0 RemarkTableIndex = 0 mplsTTLAction = 0 mplsTTL = 0 mplsCopyTTLOutwards = 0 lmepIdAction = 0 lmepId = 0 oamLmTxCountAction = 0 colorBasedCountAction = 0 colorBasedCountId = 0
groupId = 0xb0000009 (L2 Unfiltered Interface, VLAN ID = 0, Index = 9): duration: 1397, refCount:0
        bucketIndex = 0: outputPort = 9 (Physical) allowVlanTranslation = 1

I'm injecting packets from host1 and seeing expected MPLS packet from as7712-1's swp1
But the packets doesn't come out from as7712-2's swp9.

Please give me some hint for what I'm doing wrong.

18:11:08.804729 7c:fe:90:35:3e:22 (oui Unknown) > 7c:fe:90:35:3e:23 (oui Unknown), ethertype MPLS unicast (0x8847), length 120: MPLS (label 20, exp 0, [S], ttl 63)
        0x0000:  0000 0000 0001 0203 0405 7cfe 9035 3e22  ..........|..5>"
        0x0010:  0800 4500 0054 c2b7 4000 4001 e79e c0a8  ..E..T..@.@.....
        0x0020:  0a01 c0a8 0501 0800 062f 7de7 1bc7 ac98  ........./}.....
        0x0030:  5b58 0000 0000 855e 0c00 0000 0000 1011  [X.....^........
        0x0040:  1213 1415 1617 1819 1a1b 1c1d 1e1f 2021  ...............!
        0x0050:  2223 2425 2627 2829 2a2b 2c2d 2e2f 3031  "#$%&'()*+,-./01
        0x0060:  3233 3435 3638                           234568

makefile for OFAgent

Hi

I don't see Makefile for ofagent in this repo, can you publish it?

Thanks
Yaron

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.