‹header›
Click to edit Master text styles
Second level
Third level
Fourth level
Fifth level
‹date/time›
‹footer›
‹#›
DNP-2000-19-9
HTTP is an application-level protocol intended to have the lightness and speed necessary for distributed, collaborative, hypermedia information systems. HTTP has been in use by the World-Wide Web global information initiative since 1990. A client-server model is assumed. Access may be direct from client to server or via a proxy. In both cases the browser will probably operate a client side cache. This is a temporary store of the most recently accessed resources. Frequently these will need to be referred to again soon and keeping a cached copy will avoid the need for another (possibly slow) transfer from the remote server. Sites with many hosts may operate a local proxy system. The browsers on such sites make their requests via the proxy which then caches the results. Given that many requests from a site will be for a common set of resources this arrangement serves to keep many access local to a site where traffic is, presumably, over a high-speed LAN.
HTTP operates over a TCP connection. The need to set up and clear down a TCP connection for each resource request (every separate item on a page!) in HTTP v1.0 does rather militate against the intended “lightness and speed”. However, this will be remedied in HTTP v1.1. Once the TCP connection is open the HTTP dialogue consists of a request and response encoded, in the main, as phrases of ASCII text.
Multicast can be defined, loosely, as the ability to logically connect a group of hosts in a network in order that they perform many-to-many communication. This group of hosts is called a multicast group or a host group. In a an IP network, multicast is the process whereby a source host or protocol entity sends a packet to multiple destinations simultaneously using a single ‘transit’ operation which implies that the packet transit only takes place once from sender to all destinations in the group rather than once for each destination. The connectionless nature of packet switched network means that the packet sender is not necessarily in the multicast group. A packet switched network is said to provide a multicast service if it can deliver a packet to a set of destinations (a multicast group), rather than to just a single destination. Basically, a multicast service can offer many benefits to network applications in terms of reducing the transmission overhead on the sender, reducing the overhead on the network and time taken for all destinations to receive all the information when an application must send the same information to more than one destinations. The key to efficient multicast is to optimise the duplication of the transmitted data in some sense. Normally, this means keeping the duplication of the transmitted information to a minimum. IP multicast uses Class D IP addresses in the range 224.0.0.0 – l 239.255.255.255. These addresses do not identify a single host interface as unicast IP addresses do, but a group of hosts that may be widely, geographically dispersed. This means that special routing procedures are required in the wide-area to enable multicast connectivity. Some of these are reserved, e.g. 224.0.0.1 is the “all systems” address which all hosts must listen to. To contain the scope of IP multicast packets, the TTL field in the IP header is used to limit the maximum number router hops that a multicast packet can traverse before it should be silently discarded. Multicast has many benefits over unicast communication in certain areas, e.g. conferencing, software distribution/updates and news distribution. To enable multicast communication, support is needed in the end-systems (hosts and LANs) as well as in the wide-area Internet.
Here we briefly introduce the fundamentals of IP multicast:
 IP multicast allows efficient simultaneous communication between hosts in a logical group called the host group or multicast group. A host/multicast group which includes a set of zero or more hosts, is identified by a single IP destination address from a specially designated address space.  The group communication path is modelled as a tree network with the hosts (senders and receivers) within the group located at the leaf nodes of the tree, and the intermediate nodes representing distribution/replication points of the communication path.  The membership of a host group is dynamic; i.e., hosts may join and leave groups at any time (leaf initiated join). This is achieved using the Internet Group Management Protocol (IGMP). There are no restrictions on the physical location or the number of members in a multicast group. A host may be a member of more than one multicast group concurrently.  A host need not be a member of a group to send packets to the multicast group.  Inter-network IP multicast is supported by multicast routing mechanisms. This means that inter-network forwarding of IP multicast packets is handled by multicast routing mechanisms residing in “multicast capable routers”. The intermediate nodes of the communication path should be multicast capable routers.  IP multicast relies on the existence of an underlying multicast delivery system to forward data from a sender to all the intended receivers within a sub-network. IGMP is a very simple protocol with only to messages, IGMPQUERY (sent by a router to see if there are any members of a particular group) and IGMPREPORT (sent by a node to indicate it is leaving or joining a group). Each message refers to a single multicast group, i.e. a single IP multicast address. For Internet-wide connectivity every LAN must have at least one multicast router that can listen out for hosts that send group membership reports. If at least one group member exists, then the router should forward multicast packets for that group. To minimise traffic, hosts set random timers and do not send a IGMPREPORT for joining groups until a random timer has expired. IGMP messages are only used in the local area.
Single LAN multicast is possible without the need for a multicast router. However, LANs do not understand IP addresses they understand MAC addresses. We need address resolution. MAC multicast addresses cannot be hardwired into LAN adaptor cards in the same way as ordinary MAC addresses. They need to be configured at run-time, i.e. the host must tell its LAN adaptor which multicast MAC addresses to listen for. This must be done the first time a process on the host expresses interest in joining a particular IP multicast group. At this point, the host needs to map the IP multicast group address to a MAC multicast address which it can pass to the adaptor. The mapping must be identical in all hosts and in the router since all participants in the group must end up listening to the same MAC multicast address. This could be done through consultation with a server or, perhaps, a broadcast address resolution protocol could be devised. In fact, the decision made was that the mapping should be algorithmic. IANA owns a block of Ethernet addresses in the range 00:00:5e:00:00:00 to 00:00:5e:ff:ff:ff and allocates the lower half of these for multicast. The Ethernet convention is that the first byte must be set to 01 to indicate a multicast address. Therefore the range we can use for multicast is 01:00:5e:00:00:00 to 01:00:5e:7f:ff:ff . This means we have 23 bits to play with. These bits are set to the low-order 23 bits of the IP multicast group address to generate the MAC address. So, the address 224.20.5.1, which is e0.14.05.01 in hex, will map to the MAC address 01:00:5e:14:05:01. This is shown in binary below. (We have shown the bit ordering in the conventional way so that 0x01 appears as 00000001. In fact the bits are inserted into the Ethernet frame fields with each byte reversed - so, for example, that the first byte goes out on the wire as 10000000.) Now, this is obviously not a 1-1 mapping and it is possible that we end up with two IP multicast groups on a LAN mapped to the same MAC multicast address. This is unfortunate, but not disastrous. It means that a host which has joined the group with address 224.20.5.1 will also receive datagrams intended for (say) 224.148.5.1 and will have to filter these out in software. However, many LAN interface cards do not filter multicast traffic efficiently, so this software filtering will need to be present in any case.
IGMP allows routers to determine which multicast group addresses are of interest in the LAN. We now need a routing mechanism which ensures that all transmissions to a multicast address reaches the correct set of routers and hence the correct set of LANs. Therefore, we need an efficient dynamic multicast routing protocol. This turns out to be a hard problem to crack and is still the subject of much research. In this section we look at the problem and examine some of the protocols which have been developed to date. The host S is transmitting to a multicast group address. Hosts B and E have joined the group and have announced the fact to RB and RE via IGMP. We need to calculate a spanning tree which interconnects the relevant routers. We can approach a solution through a series of refinements: Starting point: Flood a multicast datagram to all neighbours except the one which sent it. The problem with this is that we will get loops; RC will forward to RD, RD to RE and RE to RC. One way of solving this problem would be for each router to keep a list of the datagrams it has seen, check this each time it receives a datagram, and delete it if it is in the list. This is clearly not feasible for a multicast which might last several hours and involve millions of datagrams.
First refinement: Reverse Path Broadcasting
It turns out that routers already have quite a lot of the information they need in order to calculate a spanning tree simply from the operation of normal unicast routing protocols. In particular, each node will have a notion of the shortest path from itself to RS - at the very least, they will know the length of this path and the identity of the first hop on it. This is true irrespective of which unicast routing protocol they are using. We can adopt the following rule - “flood a datagram that comes from the first-hop (on the path back to the source),but delete all others”. Now, when RC forwards to RD, RD will delete the datagram because it did not arrive from its “first-hop to source” (which, for RD, is RS itself). This technique is called reverse path broadcasting (RPB).
Second refinement: Duplicate elimination
As things stand, even with RPB, both RC and RD will forward a multicast datagram to RE. RE will delete one of these on the basis of the RPB rule. However, we have still wasted effort with a useless transmission to RE. If RC and RD knew that RE’s path to RS was via RD (say) then RC need not forward to RE. How can RC and RD learn about RE’s paths? There are two cases to consider:
1) distance-vector routing: the distance-vectors RE sends will contain distances but no indication of first-hop. One possibility is to modify the protocol to include this information. A second possibility is to make use of the poisoned reverse rule – send a hop count of “infinity” (i.e. value 16) back to the first hop on the route.
2) link state routing: link-state algorithms flood link-state information to all other nodes in the network. By this means, each node ends up with a complete picture of the state of every link in the network. In a unicast link-state algorithm, a node now proceeds to calculate a shortest path tree from itself to every other node in the network. In fact, each node has enough information to calculate shortest path trees for every node in the network. All the routers shown can calculate shortest-path trees with RS as source. If we ensure that they all perform precisely the same calculation, they will all end up with the same result. This means that the calculation algorithm has to be formally part of the protocol and needs to specify unambiguous “tie-breaking” rules to select between equal length routes. For example, there are clearly two equal-length routes from RE back to RS – we must ensure that all routers make the same choice between them. This can be done, for example, by choosing the router with the numerically higher IP address.
Third refinement: Pruning
By careful application of rules such as those above, it is possible for the routers to agree on a spanning-tree for the whole network. However, we are still wasting effort in forwarding datagrams to RF when it has no group members. The solution is to introduce special prune messages. When a router such as RF receives a datagram for a multicast group which has no members on its attached LAN, it sends a prune message back to the router which forwarded the datagram. This router (RD in this case) now adjusts its routing database to remove RF from the tree. If we are in the situation of b), RD will now know it has no-one to forward to, in which case it can, itself, send a prune message to RS. With the addition of pruning, RPB becomes reverse path multicasting (RPM). We need to have a method of restoring pruned links in case a host the other side of the link joins the group. We can either let prunes time-out (at which point the flow is restored and then, maybe, pruned again) or we can add explicit graft messages to the protocol. The former mechanism is a use of soft-state which is applied extensively in Internet protocols. Anticipating that state information is perishable in this way and building in mechanisms to restore it is fundamental to the operation of the Internet. It is key concept in making the Internet robust. By using all these refinements, we can arrive at a reasonably efficient spanning tree. The two possibilities are shown. Both of these use shortest path routes from the source router (RS) to RB and RE. On the face of it, the tree in diagram b) is more efficient since it involves one fewer transmission hop. However, this is not necessarily so since the network cloud might might be a LAN. If it is, then RS can reach RB and RC with one transmission. We may then prefer diagram b) since it shares the forwarding load between the two routers.