The tutorial is more about teaching people how to setup their own project without a third-party boilerplate project. At some point, you will start to use the tools (e.g. Webpack, Babel) around your library or framework of choice. In JavaScript you will have to deal with Webpack, Babel et al. And thus it makes sense to learn about them. Last year, the TypeScript team had announced that they collaborated with the Babel team to make using TypeScript with Babel easier! At the time, I had tried using the TypeScript to Babel workflow to build some ArcGIS API for JavaScript apps.
Introduction¶
Spectrophores[1] are one-dimensional descriptors generated from the propertyfields surrounding the molecules. This technology allows the accurate descriptionof molecules in terms of their surface properties or fields. Comparison ofmolecules' property fields provides a robust structure-independent method ofaligning actives from different chemical classes. When applied to molecules suchas ligands and drugs, Spectrophores can be used as powerful moleculardescriptors in the fields of chemoinformatics, virtual screening, and QSARmodeling.
The computation of Spectrophores is independent of the position andorientation of the molecule and this enables easy and fast comparison ofSpectrophores between different molecules. Molecules having similarthree-dimensional properties and shapes always yield similar Spectrophores.A Spectrophore is calculated by surrounding the three-dimensionalconformation of the molecule by a three-dimensional arrangement of points,followed by calculating the interaction between each of the atom properties andthe surrounding the points. The three-dimensional arrangement of the pointssurrounding the molecule can be regarded as an ‘artificial' cage or receptor,and the interaction calculated between the molecule and the cage can be regardedas an artificial representation of an affinity value between molecule and cage.Because the calculated interaction is dependent on the relative orientation ofthe molecule within the cage, the molecule is rotated in discrete angles and themost favorable interaction value is kept as final result. The angular stepsizeat which the molecule is rotated along its three axis can be specified by theuser and influences the accuracy of the method.
The Spectrophore code was developed by Silicos NV, and donated to the OpenBabel project in July 2010 (see sidebar for information on commercial support). Spectrophores can be generated either using the command-line application obspectrophore (see next section) or through the API (OBSpectrophore, as described in the API documentation).
Babel is a loop-avoiding distance-vector routing protocol forIPv6 and IPv4 with fast convergence properties. It is based on theideas in DSDV,AODV andCisco's EIGRP, but isdesigned to work well not only in wired networks but also in wireless meshnetworks, and has been extended with support for overlay networks. Babelis anIETF Standard.
See download below for source and binaries.
Reading
Specifications
RFCs:
- The Babel routing protocol, RFC 8966, January 2021;
- Applicability of the Babel routing protocol, RFC 8965, January 2021;
- MAC Authentication for the Babel Routing Protocol, RFC 8967 January 2021;
- Babel Routing Protocol over Datagram Transport Layer Security, RFC 8968 January 2021.
- Source-specific routing for the Babel Routing Protocol, RFC 9079 August 2021.
- Babel profile for Homenet, RFC 9080 August 2021.
Internet Drafts:
- Delay-based Metric Extension for the Babel Routing Protocol (work in progress);
- IPv4 routes with an IPv6 next-hop in the Babel routing protocol (work in progress);
- Babel Information Model (work in progress);
- YANG Data Model for Babel (work in progress);
- Diversity Routing for the Babel Routing Protocol (abandoned);
- TOS-Specific routing for the Babel Routing Protocol (abandoned).
Obsolete RFCs:
- The Babel routingprotocol, RFC 6126, obsoleted by RFC 8966;
- The Babel extension mechanism : RFC 7557, obsoleted by RFC 8966;
- Babel HMAC Cryptographic Authentication, RFC 7298, obsoleted by RFC 8967.
Work in progress tends to be made available athttps://github.com/jech/babel-drafts
Human-friendly documents
- the Babel FAQ.
- slides from a talk about Babel.
- The
babeld
(8) manual page. - The changelog for babeld.
Our papers
M. Boutier and J Chroboczek.Source-Specific routing.In IFIP Networking 2015. 2015.
B. Jonglez, M. Boutier and J. Chroboczek.Delay-based routing.Unpublished draft. 2015.
Other papers
M. Abolhasan, B. Hagelstein, J. C.-P. Wang.Real-worldperformance of current proactive multi-hop mesh protocols.Asia-Pacific Conference on Communication (APCC 2009), Shanghai,China. 2009.
David Murray, Michael Dixon and TerryKoziniec. AnExperimental Comparison of Routing Protocols in Multi Hop Ad HocNetworks. In Proc. ATNAC 2010. 2010.
Jesús Friginal, David de Andrés, Juan-Carlos Ruiz,Pedro Gil.TowardsBenchmarking Routing Protocols in Wireless Mesh Networks.In Ad Hoc Networks, Volume 9, Issue 8, November 2011, Pages1374-1388.
María E. Villapol et al.Performancecomparison of mesh routing protocols in an experimental network withbandwidth restrictions in the border router. Revista de la Facultadde Ingeniería U.C.V., 28:1. 2012.
Jesús Friginal, Juan-Carlos Ruiz, David de Andrés andAntonio Bustos.Mitigatingthe Impact of Ambient Noise on Wireless Mesh Networks Using Adaptive Link-Quality-based Packet Replication. DSN'2012:1-8. 2013.
Antonio Guillen-Perez, Ana-Maria Montoya, Juan-CarlosSanchez-Aarnoutse and Maria-Dolores Cano.A ComparativePerformance Evaluation of Routing Protocols for Flying Ad-Hoc Networks inReal Conditions. 2021.
Contact and development information
To contact us, please write to theBabelusers mailing list. You may browse the archiveson Alioth oratmail-archive.com.
Babel features
If you do not have brains you follow the sameroute twice. — Greek proverb
Babel's main features are the following:
- robust and efficient on both wireless mesh networks and wired,structured networks;
- flexible choice of metrics, including hop-count, packet loss, radiodiversity and delay-based;
- support for double-stack (IPv4 and IPv6) networks;
- support for source-specific routing for multihoming;
- support for cryptographic MAC authentication;
- small implementation, suitable for embedded systems.
Babel on wired networks
Babel works efficiently on ordinary wired networks. When babeld detectsa wired link, it enables a number of optimisations that make it asefficient as traditional routing protocols. (These optimisations need tobe manually disabled on exotic links, such as point-to-multipoint VPNs.)
Babel on wireless networks
When it detects a wireless link, babeld disables all optimisations anduses a metric based on packet loss that is designed for the 802.11 (WiFi)MAC (the ETX metric). This slows down convergence, but ensuresthat the peculiar characteristics of wireless links do not break routing.
Babel is robust in the presence of mobility: in a pure mesh network,Babel never creates a routing loop, and in a prefix-based network, allrouting loops are guaranteed to disappear as soon as one update wentaround a loop (there is no 'counting to infinity').
Babel enjoys fairly fast convergence. Since Babel uses triggeredupdates and explicit requests for routing information, it usuallyconverges almost immediately after the link quality measure hascompleted. This initial solution is not optimal — after converging toa merely satisfactory set of routes, Babel will take its sweet time beforeoptimising the routing tables. In the presence of heavy packet loss,converging on an optimal set of routes may take up to 40 seconds or so(with the default update interval of 16 seconds).
Babeld can optionally take radio frequency into account in order toavoid interference. This dramatically improves performance onmulti-frequency networks.
Babel on overlay networks
The Babel-RTT protocol extension allows Babel to optimiserouting in overlay networks. This is described in detailin Baptiste Jonglez'report and in a RTT-basedrouting draft article. Search for 'enable-timestamps' inthe manual page.
Babel on double-stack networks
Babel is a hybrid IPv6 and IPv4 protocol: a single updatepacket can carry both IPv6 and IPv4 routes (this is similar to howmulti-protocol BGP works). This makes Babel particularly efficient andsimple to manage on double-stack (IPv6 and IPv4) networks.
Source-specific routing and multihoming
Babel has support for source-specific routing (sometimescalled SADR), which allows a form of multihoming withoutcooperation from the ISP. This is described in detail inSource-Specific routing.
Download
If you don't know what to do with many of thepapers piled on your desk, stick a dozen colleagues' initials on'em, and pass them along. When in doubt, route. — Malcolm Forbes
Reference implementation
Stable tarballs of babeld are availablein my download area.
You can get my latest(possibly unstable) sources using git:
git clone git://github.com/jech/babeld.git
Choice One
Debian and Ubuntu packages should be available in your favouriterepository (merci, Stéphane !).
apt-get install babeld
Versions are also included in Fedora Extras and ArchLinux. On other Linux and BSD systems (includingMac OS X), building the daemon is a simple matterof make && make install
.
Other implementations
Privatus 5 0 5 – automated privacy protection. There exist other implementations of the Babel protocol:
Babel: Choice 1 0 1
- Bird includes acomplete and competent independent reimplementation of Babel.
- FRR (the successor to Quagga)includes an implementation of Babel based on the babeldimplementation. This version is currently obsolete, and not recommended.
- Pybabel is anindependent reimplementation of Babel in Python, due to Markus Stenberg.It is a complete implementation of the IPv6 subset of RFC 6126, butwithout support for link quality estimation. It is not recommended exceptin small wired networks.
- Sbabeld is a minimalistic stub-only implementation of Babel that compiles to just 12kB on AMD 64.
- There apparently exists an independent reimplementation of Babel forthe OMNet++ simulator, describedin this paper.
Choice One Communications
Related software
Babel: Choice 1 0 3
- Babelweb2 is a web interface for visualising Babel routes, fullybuzzword-compliant (Go, HTML5, Websockets, etc.).
- Tcpdump has had support for displaying Babel packets since version 4.2.1(tcpdump download).
- Wireshark has had support since version 1.7.0(Wireshark download).
- Babel-pinger, a hack to export a defaultroute into Babel for people using DHCP to configure their routers ratherthan speaking to their upstream provider with a proper routing protocol, is available in my download area.
- Shncpd is a configuration daemonthat, together with babeld, makes for a reasonably complete implementationof the IETF Homenet protocol suite. Work isongoing to determine if it is suitable for mesh networks.
- AHCP is a configuration protocol for mesh networks.