Your SlideShare is downloading. ×
Suman's PhD Candidacy Talk
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Suman's PhD Candidacy Talk

1,621
views

Published on

My PhD candidacy presentation that I gave on Feb 23, 2009. The topic was "Ubiquitous Communication Models for Various Network Models."

My PhD candidacy presentation that I gave on Feb 23, 2009. The topic was "Ubiquitous Communication Models for Various Network Models."

Published in: Technology, Education

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,621
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
25
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Ubiquitous Communication Model for Different Network Scenarios Suman Srinivasan PhD Candidacy Talk Feb 23, 2009 Advisor: Dr. Henning Schulzrinne
  • 2. Introduction
    • Many different types of networks and connection scenarios exist
    • I will cover the following
      • Traditional networking ←-> Sockets
      • Remote execution ←-> RPC, RMI, CORBA
      • Parallel computing ←-> MPI, PVM, Shared memory
      • Grid computing ←-> Javaspaces, Linda
      • Web services ←-> XML-RPC, SOAP, REST
      • Overlay networks ←-> DHTs, Bittorrent, JXTA
      • Opportunistic networks ←-> BonAHA, LightPeers, etc
      • Active Networks ←-> ANTS, Janos, etc .
    • … mainly from the programmer’s perspective
    • … and try to answer the following question
    • Is there a common communication model, or programming abstraction, for all of the above scenarios?
  • 3. Comparison metrics
    • API for programmers
      • e.g., send/recv (or) find/get/set (or) remote procedures
    • Distribution of messages
      • 1-to-1, 1-to-N
    • Processing location
      • Where processed: node, network (router)
    • Delay
    • Destination known?
    • Message functionality
      • Active (execution) or passive (data)
  • 4. Evaluation metrics API model Dist Location Delay Dest IP known Message function End-to-end sockets Message (send/recv) 1-to-1 / 1-to-N Endpoints / Endpoints + routers Network Yes Passive Remote execution RPC 1-to-1 Remote node Network + processing Yes Passive (func+args) Parallel computing Message; Process 1-to-N Endpoints (clustered) Network/bus No Passive Grid computing Message (active obj.) 1-to-N Endpoints (distributed) Network + processing No Active Web services RPC; get/set 1-to-1 Remote node Network + processing Yes Passive (XML cmds) Overlay find/get/set/rm 1-to-N (DHT) Endpoints (overlay) Setup time + query process + churn No Passive Opportunistic networks find/get/set/rm 1-to-N Endpoints Delay on wire/wireless No Passive Active Networks Routing 1-to-N (router) Routers Processing time No Active
  • 5. Stack diagram Sockets Multicast DHTs (and) Overlay N/Ws XML over HTTP XML-RPC Parallel computing REST SOAP Shared mem. PVM MPI RPC Opportunistic N/Ws Grid computing JXTA/Jini
  • 6. Type of API
    • Send/Recv (or) Read/Write
      • Sockets, Parallel computing (MPI), Grid computing (Javaspaces, Linda)
    • Remote Procedures
      • Remote execution (RPC, RMI, CORBA), Web services (SOAP, XML-RPC)
    • Get/Set
      • Web services (REST), Overlay networks (DHTs), Opportunistic networks
    • Process execution
      • Parallel computing (PVM)
  • 7. END-TO-END NETWORKING
    • Sockets : Simple, end-to-end communication
      • socket()
      • connect() / listen()
      • send() / recv()
      • close()
    • [RFC147] and [RFC2553]
  • 8. Evaluation metrics API model Dist Location Delay Dest IP known Message function End-to-end sockets Message (send/recv) 1-to-1 / 1-to-N Endpoints / Endpoints + routers Network Yes Passive Remote execution RPC 1-to-1 Remote node Network + processing Yes Passive (func+args) Parallel computing Message; Process 1-to-N Endpoints (clustered) Network/bus No Passive Grid computing Message (active obj.) 1-to-N Endpoints (distributed) Network + processing No Active Web services RPC; get/set 1-to-1 Remote node Network + processing Yes Passive (XML cmds) Overlay find/get/set/rm 1-to-N (DHT) Endpoints (overlay) Setup time + query process + churn No Passive Opportunistic networks find/get/set/rm 1-to-N Endpoints Delay on wire/wireless No Passive Active Networks Routing 1-to-N (router) Routers Processing time No Active
  • 9. REMOTE EXECUTION
    • Local function calls
      • Executed on remote machine
      • Results returned to caller over network
      • Communication using sockets
    • Technologies
      • Remote Procedure Calls
      • Remote Method Invocation
      • OMG CORBA
    http://msdn.microsoft.com/en-us/library/aa373935.aspx
  • 10. RPC
    • Remote Procedure Call
      • RFC 707 (1976): A High-Level Framework for Network-Based Resource Sharing
        • “… outlines an alternative to the approach that ARPANET system builders have been taking...”
        • Argues that the "command/response discipline" remains "crude“
        • [rfc707]
  • 11. RPC
    • Early versions
      • Xerox Courier (1981), Sun's ONC RPC (1988, 1995)
      • Microsoft provides RPC APIs
        • DCOM (1996) built on top of Microsoft RPC
      • Other implementations for Windows
  • 12. RPC and RMI
    • Sun’s RPC
      • Data serialized using IETF XDR format, via TCP or UDP
      • Port mapper
        • Maps RPC program numbers to port numbers on server
      • [RFC1057] and [RFC1831]
    • Java RMI [javarmi]
      • Very similar to RPC, can work over CORBA
  • 13. OMG CORBA
    • Common Object Requesting Broker Architecture
    • Interface Definition Language (IDL) to specify interfaces
      • Program communicates with ORB (Object Request Broker), which interacts with other apps on network
      • Transport protocol: General Inter-ORB protocol (GIOP): IIOP, SSLIOP, HTIOP
  • 14. OMG CORBA http://en.wikipedia.org/wiki/CORBA
  • 15. Evaluation metrics API model Dist Location Delay Dest IP known Message function End-to-end sockets Message (send/recv) 1-to-1 / 1-to-N Endpoints / Endpoints + routers Network Yes Passive Remote execution RPC 1-to-1 Remote node Network + processing Yes Passive (func+args) Parallel computing Message; Process 1-to-N Endpoints (clustered) Network/bus No Passive Grid computing Message (active obj.) 1-to-N Endpoints (distributed) Network + processing No Active Web services RPC; get/set 1-to-1 Remote node Network + processing Yes Passive (XML cmds) Overlay find/get/set/rm 1-to-N (DHT) Endpoints (overlay) Setup time + query process + churn No Passive Opportunistic networks find/get/set/rm 1-to-N Endpoints Delay on wire/wireless No Passive Active Networks Routing 1-to-N (router) Routers Processing time No Active
  • 16. PARALLEL COMPUTING
    • Deals with execution or sharing of data across multiple processors
    • Tightly coupled, physically close nodes
      • Message Passing Interface (MPI)
      • Parallel Virtual Machine (PVM)
      • Shared memory
    https://computing.llnl.gov/tutorials/parallel_comp/
  • 17. MPI and PVM
    • Message Passing Interface [mpi96]
      • Language independent communications protocol
      • Communicators connect groups of processes
      • mpi_send() and mpi_recv()
      • Parallel Virtual Machine [pvm90]
      • Software library: allows network of computers to work as though it were one distributed parallel processor
      • pvm_spawn() and pvm_notify()
  • 18. Shared Memory Model
    • Memory that can be accessed by multiple programs
      • On same processor or multiple processors
    • OpenMP : API using preprocessor directives
      • #pragma omp parallel for
      • for (i=0;i<N;i++)
      • a[i]= 2*I;
      • [sharedmem07]
  • 19. Evaluation metrics API model Dist Location Delay Dest IP known Message function End-to-end sockets Message (send/recv) 1-to-1 / 1-to-N Endpoints / Endpoints + routers Network Yes Passive Remote execution RPC 1-to-1 Remote node Network + processing Yes Passive (func+args) Parallel computing Message; Process 1-to-N Endpoints (clustered) Network/bus No Passive Grid computing Message (active obj.) 1-to-N Endpoints (distributed) Network + processing No Active Web services RPC; get/set 1-to-1 Remote node Network + processing Yes Passive (XML cmds) Overlay find/get/set/rm 1-to-N (DHT) Endpoints (overlay) Setup time + query process + churn No Passive Opportunistic networks find/get/set/rm 1-to-N Endpoints Delay on wire/wireless No Passive Active Networks Routing 1-to-N (router) Routers Processing time No Active
  • 20. GRID COMPUTING
    • Several nodes working on the same problem at the same time
      • Program divided into portions
      • Distributed for processing
      • More loosely coupled, heterogeneous and dispersed than parallel computing
      • E.g.: Berkley’s BOINC, SETI@home, [email_address]
    • Javaspaces
  • 21. Tuple Spaces
    • Stores distributed system state
    • Javaspaces: Use Javaspace.write() and Javaspace.read() to put and get objects and results
      • Javaspaces modeled after Linda (1985)
    • Master-worker pattern
      • Tuple space
    http://java.sun.com/developer/technicalArticles/tools/JavaSpaces/
      • [linda85] + [javaspaces]
  • 22. Javaspaces code
    • public static void main(String argv[]) {
    • try {
    • MessageEntry msg = new MessageEntry();
    • msg.content = &quot;Hello there&quot;;
    • System.out.println(&quot;Searching for a JavaSpace...&quot;);
    • Lookup finder = new Lookup(JavaSpace.class);
    • JavaSpace space = (JavaSpace) finder.getService();
    • space.write(msg, null, 60*60*1000);
    • MessageEntry template = new MessageEntry();
    • MessageEntry result = (MessageEntry) space.read(template, null, Long.MAX_VALUE);
    • System.out.println(&quot;The message read is: &quot;+result.content);
    • } catch(Exception e) {
    • }
    • }
  • 23. Evaluation metrics API model Dist Location Delay Dest IP known Message function End-to-end sockets Message (send/recv) 1-to-1 / 1-to-N Endpoints / Endpoints + routers Network Yes Passive Remote execution RPC 1-to-1 Remote node Network + processing Yes Passive (func+args) Parallel computing Message; Process 1-to-N Endpoints (clustered) Network/bus No Passive Grid computing Message (active obj.) 1-to-N Endpoints (distributed) Network + processing No Active Web services RPC; get/set 1-to-1 Remote node Network + processing Yes Passive (XML cmds) Overlay find/get/set/rm 1-to-N (DHT) Endpoints (overlay) Setup time + query process + churn No Passive Opportunistic networks find/get/set/rm 1-to-N Endpoints Delay on wire/wireless No Passive Active Networks Routing 1-to-N (router) Routers Processing time No Active
  • 24. WEB SERVICES
    • Remote procedure calls
    • But using text, not binary objects
      • Often using XML over HTTP
    • To build distributed systems over traditional web protocols (XML/HTTP)
      • Web-based consumer apps
      • Enterprise apps
    • XML-RPC
    • SOAP
    • REST
    http://developer.garmin.com/wp-content/uploads/2007/05/picture-5.png
  • 25. Web Services
    • XML-RPC
      • Simple protocol, created in 1998
      • Data types, commands
    • Example from: http://www.tutorialspoint.com/xml-rpc/xml_rpc_examples.htm
    • Function call
      • <?xml version=&quot;1.0&quot; encoding=&quot;ISO-8859-1&quot;?>
      • <methodCall>
      • <methodName>sample.sum</methodName>
      • <params> <param> <value><int>17</int></value> </param>
      • <param> <value><int>13</int></value> </param> </params>
      • </methodCall>
    • Response
      • <?xml version=&quot;1.0&quot; encoding=&quot;ISO-8859-1&quot;?>
      • <methodResponse>
      • <params><param> <value><int>30</int></value> </param></params>
      • </methodResponse>
  • 26. SOAP
    • Simple Object Access Protocol
      • W3C standard
    • Uses XML for messages
      • HTTP and HTTPS used for message negotiation and transmission
        • Can use SMTP as well
        • But HTTP/HTTPS more preferred
    • SOAP slower than competing RPC technologies because of XML
  • 27. SOAP
    • <env:Envelope xmlns:env=&quot;http://www.w3.org/2003/05/soap-envelope&quot;>
    • <env:Header>
    • <n:alertcontrol xmlns:n=&quot;http://example.org/alertcontrol&quot;>
    • <n:priority>1</n:priority>
    • <n:expires>2001-06-22T14:00:00-05:00</n:expires>
    • </n:alertcontrol>
    • </env:Header>
    • <env:Body>
    • <m:alert xmlns:m=&quot;http://example.org/alert&quot;>
    • <m:msg>Pick up Mary at school at 2pm</m:msg> </m:alert>
    • </env:Body>
    • </env:Envelope>
    • From http://www.w3.org/TR/soap12-part1/
  • 28. REST
    • Representational State Transfer
      • 2000 PhD Thesis by Roy Fielding
    • Resources with a identifier
      • Exchange representations of resources
      • Connectors (clients, servers, caches, tunnels)
    • Instead of calling getData(1) , you would get content from a URN:
      • http://somesite.com/data/1
  • 29. REST
    • From http://developer.yahoo.com/maps/rest/V1/geocode.html
    • Call a “REST-like” service:
      • http://local.yahooapis.com/MapsService/V1/geocode?appid=YD-9G7bey8_JXxQP6rxl.fBFGgCdNjoDMACQA--&street=701+First+Ave&city=Sunnyvale&state=CA
    • Response from Yahoo:
      • <?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?>
      • <ResultSet xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;
      • xmlns=&quot;urn:yahoo:maps&quot;
      • xsi:schemaLocation=&quot;urn:yahoo:maps http://local.yahooapis.com/MapsService/V1/GeocodeResponse.xsd&quot;>
      • <Result precision=&quot;address&quot;>
      • <Latitude>37.416384</Latitude>
      • <Longitude>-122.024853</Longitude>
      • <Address>701 FIRST AVE</Address>
      • <City>SUNNYVALE</City>
      • <State>CA</State>
      • <Zip>94089-1019</Zip>
      • <Country>US</Country>
      • </Result>
      • </ResultSet>
  • 30. Evaluation metrics API model Dist Location Delay Dest IP known Message function End-to-end sockets Message (send/recv) 1-to-1 / 1-to-N Endpoints / Endpoints + routers Network Yes Passive Remote execution RPC 1-to-1 Remote node Network + processing Yes Passive (func+args) Parallel computing Message; Process 1-to-N Endpoints (clustered) Network/bus No Passive Grid computing Message (active obj.) 1-to-N Endpoints (distributed) Network + processing No Active Web services RPC; get/set 1-to-1 Remote node Network + processing Yes Passive (XML cmds) Overlay find/get/set/rm 1-to-N (DHT) Endpoints (overlay) Setup time + query process + churn No Passive Opportunistic networks find/get/set/rm 1-to-N Endpoints Delay on wire/wireless No Passive Active Networks Routing 1-to-N (router) Routers Processing time No Active
  • 31. OVERLAY NETWORKS
    • Built on top of always-connected networks (and others)
      • Form a sub-network with specific functionality
      • With routing protocol
      • Distributed key-value pairs
    • Structured overlays
      • Tapestry, CAN, Chord
      • Constrained, structured graph topology
      • Exact-match queries
    • Unstructured overlays
      • Organized in random graph topology
      • Keyword queries
      • E.g.: Gnutella
    http://www.dynamicobjects.com/papers/w4spot.pdf
  • 32. DHT service model
    • API Example: [OpenDHT]
      • get(), put(), rm()
      • Behind the scenes – [BambooDHT]
      • Running on PlanetLab
    • Other DHTs use similar APIs
      • Can be extended to usage outside of DHTs as well
  • 33. DHTs
    • Well-known DHTs
      • Chord [Chord01]
      • CAN [Can01]
      • Kademilia [Kademilia02]
      • Pastry [Pastry01]
    • Partitioned keyspace
      • Distributed amongst nodes
      • Deals with churn
  • 34. Evaluation metrics API model Dist Location Delay Dest IP known Message function End-to-end sockets Message (send/recv) 1-to-1 / 1-to-N Endpoints / Endpoints + routers Network Yes Passive Remote execution RPC 1-to-1 Remote node Network + processing Yes Passive (func+args) Parallel computing Message; Process 1-to-N Endpoints (clustered) Network/bus No Passive Grid computing Message (active obj.) 1-to-N Endpoints (distributed) Network + processing No Active Web services RPC; get/set 1-to-1 Remote node Network + processing Yes Passive (XML cmds) Overlay find/get/set/rm 1-to-N (DHT) Endpoints (overlay) Setup time + query process + churn No Passive Opportunistic networks find/get/set/rm 1-to-N Endpoints Delay on wire/wireless No Passive Active Networks Routing 1-to-N (router) Routers Processing time No Active
  • 35. OPPORTUNISTIC NETWORKS
    • Mobile nodes; highly mobile networks
      • No infrastructure
    • OLPC; mesh networks
    • Can be used for ad-hoc, community applications
    • Traditional network apps have to be adapted for oppnets
    • [Opp06]
  • 36. BonAHA
    • Framework for applications running on opportunistic networks
    • Updates on network
      • serviceUpdated()
      • serviceExited()
    • Node properties
      • node. get()
      • node. set()
    Node 2 Node 1 key21 = value21 key22 = value22 key23 = value23 key24 = value24 key11 = value11 key12 = value12 key13 = value13 key14 = value14 [2] node1.get(key13) [1] node1.register() [3] data = node1.fileGet( value13); [bonaha09]
  • 37. Other OppNet Frameworks
    • For opportunistic and mobile networks
      • Proem (2001)
      • Peer2Me (2004)
        • File sharing on BlueTooth
      • Market Contact Protocol (MCP) (2008)
        • Oppnet commerce
      • LightPeers (2007)
  • 38. LightPeers
    • Similar model to BonAHA
      • “ Application”: Each application has its own GUID that identifies it
      • “ Session”: A group of nodes registered as running the application
    • Code
      • Application app = new Application(appid);
      • lpconn = new Connection(app);
      • ses = lpconn.CreateSession();
      • List<Session> sessions = lpconn.GetSessionList();
    • [Lightpeers07]
  • 39. Evaluation metrics API model Dist Location Delay Dest IP known Message function End-to-end sockets Message (send/recv) 1-to-1 / 1-to-N Endpoints / Endpoints + routers Network Yes Passive Remote execution RPC 1-to-1 Remote node Network + processing Yes Passive (func+args) Parallel computing Message; Process 1-to-N Endpoints (clustered) Network/bus No Passive Grid computing Message (active obj.) 1-to-N Endpoints (distributed) Network + processing No Active Web services RPC; get/set 1-to-1 Remote node Network + processing Yes Passive (XML cmds) Overlay find/get/set/rm 1-to-N (DHT) Endpoints (overlay) Setup time + query process + churn No Passive Opportunistic networks find/get/set/rm 1-to-N Endpoints Delay on wire/wireless No Passive Active Networks Routing 1-to-N (router) Routers Processing time No Active
  • 40. ACTIVE NETWORKS
    • Allows “injection” of customized active code into network core
      • ANTS, JanOS, Open Multi-Service Router, Netscript, Switchware
    • All circa 1996-2001
    • Why important?
      • Example of frameworks for executable/active code that change network operations
  • 41. ANTS (Active Node Transfer Sys)
    • New network protocols automatically deployed using mobile code
      • Packets are replaced by capsules
      • Capsules contain instructions with executable code
      • Routers (active nodes) execute code
    • [Ants98]
  • 42. Janos
    • Janos is a NodeOS ( Moab ) with:
      • Execution Environment (EE) : similar to virtual machine
      • Active Applications (AA), which are injected into the network
        • Written to run on ANTSR runtime
        • Which runs on top of Janos virtual machine
    • [Janos01]
  • 43. Switchware
    • Active packets, active extensions, active router infrastructure
      • CAML-based
      • Packets contain PLAN (Programming Language for Active Networks) code
      • SANE (Secure Active Network Environment)
    • [Switchware98]
  • 44. Evaluation metrics API model Dist Location Delay Dest IP known Message function End-to-end sockets Message (send/recv) 1-to-1 / 1-to-N Endpoints / Endpoints + routers Network Yes Passive Remote execution RPC 1-to-1 Remote node Network + processing Yes Passive (func+args) Parallel computing Message; Process 1-to-N Endpoints (clustered) Network/bus No Passive Grid computing Message (active obj.) 1-to-N Endpoints (distributed) Network + processing No Active Web services RPC; get/set 1-to-1 Remote node Network + processing Yes Passive (XML cmds) Overlay find/get/set/rm 1-to-N (DHT) Endpoints (overlay) Setup time + query process + churn No Passive Opportunistic networks find/get/set/rm 1-to-N Endpoints Delay on wire/wireless No Passive Active Networks Routing 1-to-N (router) Routers Processing time No Active
  • 45. Conclusion
    • Covered the following network topologies, and the associated programming models:
      • Traditional networking ←-> Sockets
      • Remote execution ←-> RPC, RMI, CORBA
      • Parallel computing ←-> MPI, PVM, Shared memory
      • Grid computing ←-> Javaspaces, Linda
      • Web services ←-> XML-RPC, SOAP, REST
      • Overlay networks ←-> DHTs, Bittorrent, JXTA
      • Opportunistic networks ←-> BonAHA, LightPeers, etc
      • Active Networks ←-> ANTS, Janos, etc .
    • Question: Is there a common communication model, or abstraction for all of these scenarios?
    • Answer: Hard to see common ground
      • Perhaps among some sub-groups, e.g., grid and parallel computing, overlay and opportunistic networks
  • 46. Backup Slides
  • 47. RPC http://msdn.microsoft.com/en-us/library/aa373937%28VS.85%29.aspx
  • 48. Java RMI command
    • java -cp /home/ann/src:/home/ann/public_html/classes/compute.jar -Djava.rmi.server.codebase=http://zaphod/~ann/classes/compute.jar -Djava.rmi.server.hostname=zaphod.east.sun.com -Djava.security.policy=server.policy engine.ComputeEngine
  • 49. MPI Sample code
    • int main(int argc, char *argv[])
    • {
    • MPI_Status stat;
    • // Init
    • MPI_Init(&argc,&argv); /* all MPI programs start with MPI_Init; all 'N' processes exist thereafter */
    • MPI_Comm_size(MPI_COMM_WORLD,&numprocs); /* find out how big the SPMD world is */
    • MPI_Comm_rank(MPI_COMM_WORLD,&myid); /* and this processes' rank is */
    • // Send any number of processses
    • MPI_Send(buff, BUFSIZE, MPI_CHAR, i, TAG, MPI_COMM_WORLD);
    • // Receive data
    • MPI_Recv(buff, BUFSIZE, MPI_CHAR, i, TAG, MPI_COMM_WORLD, &stat);
    • // Weak synchronization
    • MPI_Finalize();
    • }
  • 50. PVM sample code
    • int main(int argc, char* argv[])
    • {
    • mytid = pvm_mytid(); /* find out my task id number */
    • /* find my parent's task id number */
    • myparent = pvm_parent();
    • /* if i don't have a parent then i am the parent */
    • if (myparent == PvmNoParent) {
    • info = pvm_spawn(argv[0], (char**)0, PvmTaskDebug, (char*)0,
    • ntask, child);
    • /* wait for the notification */
    • info = pvm_recv(-1, TASKDIED);
    • pvm_exit();
    • return 0;
    • }
    • /* i'm a child */
    • pvm_exit();
    • return 0;
    • }
  • 51. ANTS example
  • 52. Netscript
    • Agents dispatched to remote systems
      • Uses SOS to manage delegation agents
    • Virtual Network Engines (VNE) interconnected by Virtual Links (VL)
      • Packet arrives at VNE; headers used to pass it on executing agent
    • [Netscript96]
  • 53. JXTA
    • Framework for building P2P apps
    • Peers create a overlay network
      • Nodes identified by 160-bit SHA-1 URN
    • Different protocols
      • Peer Resolver, Peer Information, Rendezvous, Peer Membership, Pipe Binding, Endpoint Routing
    • Peer types:
      • Edge, Super, Rendezvous, Relay
    • [jxta]