Comments (9)
Some more information (with the above two mentioned errors remained):
By using fboss_route.py list_ports
, it can show correct port number, link status and admin enabled status. But present is wrong (I guess this requires extra porting for platform specific i2c slave address and offset)
e.g.,
root@localhost:~# fboss_route.py list_ports
Port 1: [enabled=True, up=True, present=None]
Port 2: [enabled=True, up=False, present=None]
Port 3: [enabled=True, up=False, present=None]
...
root@localhost:~# fboss_route.py disable_port 1
root@localhost:~# fboss_route.py list_ports
Port 1: [enabled=False, up=False, present=None]
And, it has issues on adding route entries.
e.g.,
root@localhost:~# fboss_route.py list_routes
Route 0.0.0.0/0 -->
Route ::/0 -->
root@localhost:~# fboss_route.py add 172.31.0.0/24 172.16.1.1
Traceback (most recent call last):
File "/usr/bin/fboss_route.py", line 254, in
args.func(args)
File "/usr/bin/fboss_route.py", line 48, in add_route
args.client, [UnicastRoute(dest=prefix, nextHopAddrs=nexthops)])
File "/usr/local/lib/python2.7/dist-packages/neteng/fboss/ctrl/FbossCtrl.py", line 11295, in addUnicastRoutes
self.recv_addUnicastRoutes()
File "/usr/local/lib/python2.7/dist-packages/neteng/fboss/ctrl/FbossCtrl.py", line 11317, in recv_addUnicastRoutes
raise result.error
neteng.fboss.ttypes.FbossBaseError: FbossBaseError(
message='switch is still initializing, FIB not synced yet',
message='switch is still initializing, FIB not synced yet')
from fboss.
Hi Lewis,
There's a bunch of work that has to be done to port to another platform. You need a new config.bcm (which you probably have), but you also need to create fboss/agent/platform/PLATFORM.cpp code and link it into the right places to get the phy programming and other sundry things correct. Let me write up a proper document for how to do this.
from fboss.
Hi Rob,
Yes. I have the needed config.bcm. I use our built opennsl.so that works for AS6812-32X(running ONL) so the hardware port LED link status and color are all correct already.
I also install CLI tool and the needed python files to the switch, the CLI can run with correct Admin/State/Speed shown for cli.py port status
command.
e.g.,
root@localhost:~# cli.py port status
Port Admin State Link State Transceiver Speed
-----------------------------------------------------------
1 Enabled Up Unknown 10G
...
13 Enabled Up Unknown 40G
I think all I need now is to figure out how to add/modify FBOSS code to support AS6812-32X.
Looking forward to your guidance.
Thanks in advance.
-Lewis
from fboss.
So writing a formal doc for this has taken me longer than I wanted - apologies. Let me give you a slap dash answer that might unblock you.
For each new platform, you need the config.bcm (that gets passed as a command line option) and you also need to implement platform drivers in the agent (see the code in ./fboss/agent/platform/) as well as a platform driver for the qsfp_service (see ./fboss/qsfp_service/platform/).
There are a bunch of example platforms in those directories so hopefully the code will provide enough context.
Please let me know if you have more questions and I'll keep trying to get time to work on the platform.
from fboss.
Hijacking this issue a bit. In general, how open is Facebook to merge additional platforms? I'm interested in porting AS5712-54X, and I will probably so it anyhow - but I'm happy to upstream it if it's something generally FBOSS wants.
from fboss.
@bluecmd Sorry - missed this one. At one level, we'd love to accept the code. At another level, if it's a platform we're not actually using, we don't really have any decent way to test it. There's constant development going on with fboss and the likelihood that code for an untested platform would break is fairly high. We'd want to come up with some sort of external hardware-tested CI system before doing something like that and ... that just seems like a lot of work from where we are now.
Does that help?
from fboss.
Sure. What I'm hearing is that I'm probably better off just maintaining a fork of fboss right now for my HW support, until such a time comes where you're ready to accept and maintain new platforms.
from fboss.
from fboss.
The difference to me is the state they are in - my fork would be pretty experimental and not ready for merging until such a time comes when you folks know what kind of standard you want new platforms to adhere to. Nothing wrong with that, and I'm fine with having a long lived PR open if nothing else as an index of other platforms being worked on.
Nice idea with ONLP. I'd been thinking of adding Wedge support for it, so maybe an ONLP port could replace some Wedge specific code. Very interesting thought.
My larger picture is that I'm a fortunate hobbyist that has access to a couple of Wedge and an AS5712-54X. I'm also a bit tired of the kind of non-existent go-to solution for whitebox hobbyists. I think FBOSS+ONL could be that combination and I'd like to try to help out if I can.
However, I already did that once with the old OpenSwitch 1.0 by HPE that died, so I'm just making due diligence that Facebook appears committed to the open source version of FBOSS.
from fboss.
Related Issues (20)
- [build] build failed on switch(centos 7)
- ModuleNotFoundError: No module named 'fboss.fb_thrift_clients' HOT 1
- question for HSDK support
- Build Error: TransientFailure: Failed to download http://localhost:8000/opennsa-6.5.22.tgz
- Build error (Missing CONTAINER.tar) for Docker Container for Debian 10
- Build error .
- Miss head file of common/strings/StringUtil.h
- Port numbering in FBOSS Python Tool output HOT 4
- Does`parserType` set to `0` works as expected ? HOT 2
- Regression: crash on startup HOT 13
- Logging in qsfp_service HOT 1
- OpenNSL 3.5.0.1 report HOT 21
- qsfp_service crashes on bad modules
- Using interface ID 1000 crashes wedge_agent
- Make Wedge transparent to VLANs
- compile fboss fail:fboss/agent/hw/bcm/BcmHostKey.cpp.o' failed
- fboss build failure HOT 5
- Unable to run SAI fake tests HOT 3
- no limitation for "%s" while calling fscanf() HOT 2
- Please make tests conditional on the cmake option BUILD_TESTING, and make benchmark also conditional on some cmake variable
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from fboss.