broadcom-switch / of-dpa Goto Github PK
View Code? Open in Web Editor NEWOpenFlow Data Plane Abstraction
OpenFlow Data Plane Abstraction
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.
Hi Experts,
Could someone share BCM OF-DPA initialization steps for OVS (OpenVSwitch)
Anyone have integrated OF-DPA with OVS ?
Thanks,
Kals.
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!
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
Hi,
How to use ofdpa-v2.0.0.2.ttp.json file
OF-CONF? OFDPA ? or Openflow controller?
Thanks
Hi
I don't see Makefile for ofagent in this repo, can you publish it?
Thanks
Yaron
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?
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.
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
removed
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.
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
Hi Experts,
Could you please clarify me "Why VRF needs to be set in Ingress flow table for Normal Ethernet frame in OFDPA?"
=> Why it shouldn't be part of "write-action" and why it is part of "apply-action"? It means, the VRF would be changed immediately before it is sent to next flow table.
Any use case of it ?
Thanks in adv
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.
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```
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
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
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?
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
After following the gto-trident-brl20 INSTALL guide and running ./ofdpa I get a bunch of the same errors in my terminal: [bcmDPC]unit 0 L3_DEFIP_DATA_ONLY parity hardware inconsistency. The full error log can be found here: http://pastebin.com/ALG17zW5
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:
version 2.0.4.0 -- Built on Mon Apr 25 2016 at 09:25:01 UTC
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?
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
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
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.
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?
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
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.
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.
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)?
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.
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
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
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.
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 ?
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
Hello,
I've ran gto_uImage from https://github.com/Broadcom-Switch/of-dpa/blob/master/bin/gto-trident-brl20/gto_uImage. I saw Broadcom Linux BRL 2.0.1 and Linux Kernel 2.6.34.6.
We need to enable some kernel features that are not present on gto_uImage. Where I can get BRL 2.0.1 ? We have interested only in the kernel version (and patches to enable the platform) not in whole BRL. It's possible to provide it?
Thanks.
Hi Experts,
I have the following doubts. Could someone clarify me?
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 ?
Can someone clarify me what happens during the OF-DPA initialization as well? I dont see, any API for initializing OF-DPA?
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 ?
Thanks,
Kals.
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.
Hi Dev Team,
Do you have any plans about implementing MPLS functionality, such as label matching and push and pop actions?
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
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?
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?
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?
Hello all,
@yaroslav-medzyn
@vitalivanov
@simonknee
Could some one clarify me..?
Thanks,
tech.kals
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
Michael Orr
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
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
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.