Coder Social home page Coder Social logo

xia-project / xia-core Goto Github PK

View Code? Open in Web Editor NEW
56.0 26.0 28.0 232.23 MB

eXpressive Internet Protocol research project

Home Page: http://www.cs.cmu.edu/~xia

C 49.28% C++ 24.12% Python 1.67% Shell 7.15% CSS 0.09% JavaScript 0.16% Java 0.16% Perl 1.21% Gnuplot 0.01% Ruby 0.04% TeX 0.74% Vim Script 0.06% XSLT 0.17% Makefile 8.48% Tcl 0.10% Awk 0.03% HTML 5.13% Hack 0.81% Batchfile 0.04% Click 0.54%
xia future-internet-architecture fia cmu

xia-core's People

Contributors

307kashyap avatar dongsuh avatar dtnaylor avatar eaufavor avatar hyeontaek avatar lendlice avatar mukerjee avatar nitinkgupta avatar shoban avatar vikramrajkumar avatar yahyavi 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

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

xia-core's Issues

XgetDAGbyName can block forever

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.

add wrappers for unimplements API calls?

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.

  • Xselect and Xpoll would pass straight through to the select and poll APIs
  • Xlisten would just return success for now until we ever reach a point where it is needed.

sending large video files causes web demo to hang

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.

Python API needs raw sockets

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.

  • ability to send without needing a DAG, can set to null and make a
    few other small changes
  • ability to receive, need discussion about this.

Click crashes when given an invalid DAG

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.

Clean up xianet script

Reported by dtnaylor

The xianet script has gotten a bit confusing.

  1. Make it possible to ignore multiple interfaces
  2. Make hostname usage more robust (e.g., consistent approach to
    illegal characters)
  3. Do a better job deciding which daemons to run or stop (should
    stop just try stopping all possible daemons?)
  4. Add ability to use a conf file instead of a bunch of command line
    args (and generate conf files from a set of command line args)

add Xaccept4 API call

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.

make chunks reliable

Investigate adding support for reliable delivery of chunks. This needs to be done for all of the chunk APIs.

SID entry removed incorrectly

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?

click_random isn't very random

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.

XreadChunk doesn't check content hash

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.

Click is not running, aborting...

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...

make dup, dup2, dup3 work with Xsockets

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?

Local_addr in click router lib

Reported by mukerjee

We don't really need local_addr. We can construct this from the
passed in AD + generated HID + passed in IP.

not checking return value in calls to portToDAGinfo.get_pointer(_sport);

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.

Fix XCMP

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.

Make apps using the control socket smarter (Instrumented vs. Regular elements)

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.

make fork work correctly

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.

Userlevel DAG manipulation library

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.

64-bit / 32-bit interoperability

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

/usr/sbin vs /sbin : Where is arp?

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.

Better support for controlling output

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.

  1. Easily hide xhcp and xroute traffic
  2. Easily turn on/off input/output traffic on specific ports
  3. Easily control what is printed (e.g., just XIA header? packet
    contents?)

This functionality would compliment the logging feature Dan added.

fix cid packet sizes

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.

Retransmission storm

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

  • Running the tetris app without the throttling code David added
  • OR start a tetris session and move one of the clients from one AD
    to another

But there may be a simple way to reproduce the problem...

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.