Interested in implementing U6ID principal

151 views
Skip to first unread message

Daivik Dave

unread,
Feb 19, 2018, 1:46:04 AM2/19/18
to Linux XIA
Hello TEAM XIA,
       I like the idea of developing a network protocol which evolves according to the needs of the future internet. The current protocol TCP/IP being able to handle the complex structure of the internet ,but as the needs of future internet is evolving , there is a need for a protocol that can handle the complex needs of network that changes with time.
       I am moderate in the languages  C , C++ .  I have working knowledge of TCP/IP . I have  read the book Computer Networking: A Top-Down Approach by kurose James.I haven,t programmed with sockets before so i have started learning Socket programming in C.
       I have watched the video at cisco labs. I have read the Thesis Paper Linux XIA: An Interoperable Meta Architecture to Crowdsource the Future Internet . I have Setup Xia Development Environment . I have Successfully reproduced the Experiment U4ID  to encapsulate XIP packets in UDP payload , the results of the experiment are attached below.
      I am interested in implementing the   U6ID  principal  for GSOC 18.Can anyone help me get started .

Regards 
Daivik Dave
U4ID.pcap

Michel Machado

unread,
Feb 19, 2018, 9:30:30 AM2/19/18
to Daivik Dave, Linux XIA
Based on what you've done already, you have started! Make sure you go through all items in the section "Reading material" of your project. Besides that, you should start thinking of your proposal. We have a lot of good information to help you with that here:

--
You received this message because you are subscribed to the Google Groups "Linux XIA" group.
To unsubscribe from this group and stop receiving emails from it, send an email to linux-xia+...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Daivik Dave

unread,
Mar 6, 2018, 11:20:11 PM3/6/18
to Linux XIA
Hello Team Xia,
             I have been reading linux networking internals , and as i progress through the book the codebase is getting more clear . I would like to know more about the following concepts , can anyone show me where can i find more information about the following concepts

1) What is a principal context ? how or where is it used ?

2) How does routing take place through a DST?    
 

Cody Doucette

unread,
Mar 7, 2018, 9:17:56 AM3/7/18
to Daivik Dave, Linux XIA
Hi Daivik,

On Tue, Mar 6, 2018 at 11:20 PM, Daivik Dave <daivik...@gmail.com> wrote:
Hello Team Xia,
             I have been reading linux networking internals , and as i progress through the book the codebase is getting more clear . I would like to know more about the following concepts , can anyone show me where can i find more information about the following concepts

1) What is a principal context ? how or where is it used ?

In general, a principal's context contains information relevant to the principal in each network namespace instance, such as the principal type, routing table, dependency anchors, etc.
 
2) How does routing take place through a DST? 

The DST is the mechanism that applies forwarding rules after the initial lookup in the forwarding information base has already taken place. In other words, forwarding rules are cached in the DST for future packets.

More information about both of these concepts can be found on this page: https://github.com/AltraMayor/XIA-for-Linux/wiki/How-to-write-a-principal
 
Best,
Cody

  
 

--
You received this message because you are subscribed to the Google Groups "Linux XIA" group.
To unsubscribe from this group and stop receiving emails from it, send an email to linux-xia+unsubscribe@googlegroups.com.
Message has been deleted

Daivik Dave

unread,
Mar 7, 2018, 9:43:06 AM3/7/18
to Linux XIA

Actually i was going through the how to write a principal page , defining network initialisation functions , and was having problem understanding network namespaces , which says different instances for different interfaces and thus having problem understanding contexts.  Does different instances here refer to virual devices?
 

Michel Machado

unread,
Mar 8, 2018, 11:47:44 AM3/8/18
to Daivik Dave, Linux XIA
When a container is created in Linux, that container will have unique namespaces for each subsystem that it virtualizes, so the new container can behave like it was a virtual machine. One of these namespaces is the network namespace. A network namespace has network interfaces (virtual or not), routing tables of network protocols (e.g. IPv4, IPv6, XIA), sockets, etc. So an XIA context is the struct that XIA uses to holds the information that is associated with a given network namespace.

On Wed, Mar 7, 2018 at 9:43 AM Daivik Dave <daivik...@gmail.com> wrote:

Actually i was going through the how to write a principal page , defining network initialisation functions , and was having problem understanding network namespaces , which says different instances for different interfaces and thus having problem understanding contexts.  Does different instances here refer to virual devices?
 

--
You received this message because you are subscribed to the Google Groups "Linux XIA" group.
To unsubscribe from this group and stop receiving emails from it, send an email to linux-xia+...@googlegroups.com.

Daivik Dave

unread,
Mar 11, 2018, 1:35:35 AM3/11/18
to Linux XIA
The ipv6 address of a host is stored as a char array of 16 bytes . To store an ipv6 address in an xid , is there any support for 128 bit integers in or should be stored as pointers to char array ?

Qiaobin Fu

unread,
Mar 11, 2018, 3:00:20 PM3/11/18
to Linux XIA
For IPv6 addresses, they are typically stored as an array of integers. Please check the Linux implementation of IPv6 address (https://elixir.bootlin.com/linux/v4.1/source/include/uapi/linux/in6.h#L32).

Daivik Dave

unread,
Mar 16, 2018, 2:13:26 AM3/16/18
to Linux XIA
Hello,
I was going through the codebase and have some doubts regarding the following structs. What do they store and what are they used for ?
1) struct dst_entry in includes/net/dst.h .
2) struct xip_dst_anchor in includes/net/route.h

Thanks
Daivik

Vibhav Pant

unread,
Mar 16, 2018, 9:43:25 AM3/16/18
to Linux XIA
On Friday, March 16, 2018 at 11:43:26 AM UTC+5:30, Daivik Dave wrote:
Hello,
I was going through the codebase and have some doubts regarding the following structs. What do they store and what are they used for ?
1) struct dst_entry in includes/net/dst.h .
dst.h describes the Destination Cache. A dst_entry struct is an entry in the cache table. Among other things, it stores the net_device used to send/receive packets, the input and output callbacks that are called while either receiving or sending packets respectively (see https://github.com/AltraMayor/XIA-for-Linux/wiki/How-to-write-a-principal#DST_InputOutput_Functions), etc.

2) struct xip_dst_anchor in includes/net/route.h
Anchor values represent the entries of the XIA routing table on which the cache entries depend (see Section 4.2.3 of https://www.cs.cmu.edu/~xia/resources/Documents/Machado_ancs15.pdf). The idea is to avoid flushing the cache on every routing table update, especially with principles that correspond to temporary user space objects.

Michel Machado

unread,
Mar 16, 2018, 10:40:29 AM3/16/18
to Vibhav Pant, Linux XIA
Well answered, Vibjav! You're really getting XIA!

--

Daivik Dave

unread,
Mar 19, 2018, 4:17:34 AM3/19/18
to Linux XIA
Hello mentors,
I have added my proposal draft to Boston University/Linux Xia .It would be helpful if you review it and provide suggestions so that i could make it stronger.

Thanks
Daivik Dave

Daivik Dave

unread,
Mar 20, 2018, 11:23:43 AM3/20/18
to Linux XIA
Hello,
       is my interpretation of u4id_deliver functions correct ?,
if u4id is malformed passthrough action and sink action are set to XDA_ERROR and the packet is dropped.
if fxid_find_rcu finds an xid , the xdst is attached to lu4id->anchor  and further routing takes place in xia.
if u4id context -> tunnel sock  doesn't represent a socket , xid is considered unknown and other edge is tried
otherwise the packet is handled routed by IP by assigning xdst->dst.output = u4id_output;
u4id_output sets the fields such as ip address , port ,the header and calls handle_skb_to_ipv4 which delivers the packet. 

Thanks
Daivik

Michel Machado

unread,
Mar 21, 2018, 11:17:09 AM3/21/18
to Daivik Dave, Linux XIA
Hi Daivik,

Yes, your interpretation is correct.

--

Daivik Dave

unread,
Apr 24, 2018, 7:07:13 AM4/24/18
to Linux XIA
Hello ,
Thanks for Selecting me for the U6ID Project . I have forked and cloned the repo will begin work. Saurav Kumar , can i get your contact info for guidance regarding the project.

Thanks
Daivik

Reply all
Reply to author
Forward
0 new messages