xia-project / xia-core Goto Github PK
View Code? Open in Web Editor NEWeXpressive Internet Protocol research project
Home Page: http://www.cs.cmu.edu/~xia
eXpressive Internet Protocol research project
Home Page: http://www.cs.cmu.edu/~xia
It uses a XSOCK_DGRAM socket and sets no timeout on the socket. If no response comes from the name server it will wait forever.
The code should be modified to wait for a period of time, then abort. It should also do a fixed number of retries before returning an error to the user.
Should we add APIs for standard socket calls that we don't currently implement? This is mainly to make porting applications easier, and to avoid problems in the future if we do implement our own versions.
Changing the video file used in the web demo to one that is larger
(29M vs 7M) will cause the web demo to hang so that none of the
links work anymore.
Command line applications are still able to send and receive traffic
however. Also, sending the same video file through the ccp example
programs works fine, so the problem does not appear to be in the
click side of things.
What it says in the title....
The current instructions are out of date
Reported by mukerjee
we don't got 'em.
Comment 1 by David Naylor, Nov 21, 2012
Or do we?
Comment 2 by Me, Nov 21, 2012
We have the same level of support as the C side. What we need are
real raw sockets.
Reported by drbarrett
To reproduce:
Create a partial DAG or a DAG with improper formatting such as
CID:nnnnnnnnnnnnnn
Click will crash in Vector class.
Comment 1 by Dongsu Han, May 21, 2012
Is the problem caused in XIAPath::parse?
I think the easiest fix would be to catch an exception when we parse
string to DAG. There's no syntax checker for our DAG string
representation.
Comment 2 by Me, May 21, 2012
That's basically what I was thinking. Stopping the crash should be
easy. Doing the right thing to let the app the caused the problem
know might be more involved. I haven't looked at the code yet to see.
Comment 3 by Me, May 24, 2012
XIAPath::parse returns false if it can't parse the DAG. None of the
dozen or so places in transport.cc check the return value, and will
cause click to crash if the DAG is invalid.
API calls where the caller sends us a DAG such as Xbind, XSendto,
Xrecvfrom are most at rise for problems. Several other places where
XAIPath::parse is called use DAGs created internally. So while they
should be fixed, they aren't likely to cause a crash.
Reported by dtnaylor
The xianet script has gotten a bit confusing.
just what it says....
implement this once non-blocking sockets are complete.
Investigate whether or not we should implement the SOCK_CLOEXEC flag
or if we can get by with just SOCK_NONBLOCK for now.
Investigate adding support for reliable delivery of chunks. This needs to be done for all of the chunk APIs.
In xtransport.cc, when Xclose is called, it will set timer to remove corresponding bound XID entry in 240 seconds.
But if a same XID is bound in the 240 seconds, it will be removed by the timer incorrectly.
Why TEARDOWN_DELAY is set to 240,000?
Reported by dtnaylor
Fix the reliability of updates from the xstat clients so parts of
the network don't periodically drop out.
memory usage creeps up slowly when creating and connecting many stream sockets. The leak appears to be in the timer function in transport.cc, but I haven't narrowed it down yet.
Currently we either use printf or click_chatter to output messages.
This does not scale well. We should implement a logging subsystem
that gives us more granular control over what is output.
We're using it to generate random SIDs, and are getting repeat collisions after only generating a few thousand ids. Look into better options for generating our ephemeral XIDs.
Reported by mukerjee
/click/lib/router.cc Line 1149 Assert fails on Fedora
Reported by mukerjee
We had to add some hacks in to get our 4id endhost to disable its
caching.
We should 'install' everything in the xia-tree into local standard locations instead of having files scattered throughout the source tree.
It is the last holdout that still uses the ^ separated fields in the data returned from click.
Reported by dtnaylor
If content arrives whose hash does not match its CID,
XgetChunkStatus will alert the application of this fact but
XreadChunk will not. If an app calls XreadChunk without first
calling XgetChunkStatus (which probably isn't a good idea), it will
not be alerted that it is reading bad content.
XIA using script: xia_local_topology.click
Reading topology and generating /home/sanjul/xia-core/etc/click/xia_address.click
bin/xianet: line 468: /home/sanjul/xia-core/click/userlevel/click: No such file or directory
Click is not running, aborting...
need to add logic to click to associate multiple socket id's with
the same click state.
Closing one socket should not close the state for the others.
Should output be sent to all sockets? Or just the last one in the
list?
need to define the solution we want
Reported by mukerjee
xroute should print next hops using XID labels not the actual XIDs
Reported by mukerjee
We don't really need local_addr. We can construct this from the
passed in AD + generated HID + passed in IP.
Originally reported by drbarrett
in xtransport.cc none of the calls to
portToDAGinfo.get_pointer(_sport); bother to check the return value.
If it's NULL, click will crash. This should only happen if an
invalid socket id were send down from the API which shouldn't happen
as the API checks to make sure the socket belongs to XIA. I don't
think we need to fix this at this time, but we should consider it as
part of a future code cleanup.
Reported by mukerjee
XCMP was pretty buggy while setting up our GEC15 demo. We should go
through and clean up the code, then verify that things still work.
There's no need to build Xsockets as a static library. Remove the option from the build and change any example code that isn't using the dynamic version.
Reported by dtnaylor
Currently all utilities (like xhcp, xroute, Click Explorer) that
modify elements through the control socket only work with
Instrumented elements (e.g., XIAInstrumentedRouter2Port, not
XIARouter2Port). This is because they need to know the
"path" to the routing table elements, which is currently
set to /wrapped/xrc/...
These tools should be smarter and figure out if they need the
"wrapped" element in the path or not.
In servers that fork, the first action of the child process is
usually to close its copy of the accepting socket. Because of how we
talk to click, this tears down the state in click and the parent
gets cut off.
Add smarts to the API and click to track process ids, so that the
child can call close without breaking the parent.
Reported bydtnaylor
Applications shouldn't have to deal with building DAG strings. Apps
should work with DAGs as a struct of some sort and we should provide
a library to make this painless.
Then the API should be modified to accept the structs instead of
strings.
This might be a bit of a pain to support in both C and Python.
Alternatively, we could just write a library that apps can use to
manipulate DAGs as strings and not worry about some special
structure at the application level.
Reported by dtnaylor
The code to ignore daemon packets in xiaxidtypecounter.cc isn't
working properly.
Reported by mukerjee
32-bit Fedora nodes can't talk to 64-bit Ubuntu nodes. We made some
changes to try to get this to work (ie. int's -> uint_32t etc),
but we didn't commit them because it didn't work in the end. Track
down what's going on.
Here are some files that need to be changed:
XIPEncap : 86
XIAPath : 694+
XIARouter (c/h) (daemon) : ~
csclient (daemon) : 519
Compiling as 32 bit (ie. -m32) doesn't work
Reported by mukerjee
In click/elements/userlevel/fromhost.cc ~line 191, we call arp using
the path /usr/sbin. This only works in ubuntu, for fedora we needed
to change this to /sbin. We should query for the flavor of linux or
what not to figure out the right path.
Reported by dtnaylor
We should think about more convenient ways to control what
information Click spits out since it's frustrating to be constantly
editing the click config files.
This functionality would compliment the logging feature Dan added.
the size of a CID packet does not match the size specified in the
header. We seem to be including extra bytes (perhaps using the size
of the protobuf instead of the size of the payload to calculate. The
hash is generated over all of the data, not just the real data, so
we seem to have issues on both ends somehow.
Reported by dtnaylor
Describe how to format DAG and RE strings for API calls.
Reported by dtnaylor
Track down the (xtransport?) bug that causes a flood of needlessly
retransmitted packets.
It should be possible to reproduce the bug by
But there may be a simple way to reproduce the problem...
Reported by dtnaylor
They look slick, but we should make sure that our 4ID code still
works.
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.