Computer-implemented system and method for updating a network's knowledge of the network's topology

11778021 · 2023-10-03

Assignee

Inventors

Cpc classification

International classification

Abstract

The computer implemented invention provides a method, corresponding systems and arrangement within a network for detecting changes in the topology, ordering those changes by occurrence and constructing a new topology reflecting the changes. The invention addresses problems with keeping the knowledge of the network topology at each network node current, particularly when the network topology is dynamic, i.e. when links fail and recover at arbitrary times. The topology updating is event driven, as it is activated when some change in the network, particularly with nodes and links occurs. Events cause topology changes to be reported to other nodes in the network. Timestamping of messages allows the messages to be correctly applied as the most recent update or discarded. An algorithm is provided that allows each merchant node to maintain a correct view of the network topology despite link and node failures.

Claims

1. A computer-implemented method of updating network knowledge of a network topology, the network comprising a plurality of nodes connected by a plurality of links, the method including: a) detecting, by a second node in the network, an event in the network; b) receiving, by a first node in the network, a received topology data set incorporating a change in the topology of the network provided by the second node, the received topology data set being associated with a time indication, wherein the first node has a topology data set associated with a time indication; and c) wherein, if the time indication associated with the received topology data set is more recent than the time indication associated with the topology data set of the first node, the topology data set of the first node is updated by the received topology data set, wherein the topology data set of the first node is only updated if one or more conditions are met, wherein a condition is that the topology data set of the first node is only updated to add a new link if the new link is within a given adjacency measure or a given neighbour measure of the first node.

2. The method according to claim 1, in which the method further provides that the first node sends to the network any updated first node topology data set.

3. The method according to claim 1, in which the method further provides after step c), that the first node sends to the network the updated first node topology data set when the received topology data set results in an update to the first node topology data set.

4. The method according to claim 1, in which the first node has adjacent nodes, the adjacent nodes being those nodes within a given adjacency measure of the first node, and the first node has neighbour nodes, the neighbour nodes being those outside of the given adjacency measure of the first node and within a given neighbour measure of the first node.

5. The method according to claim 4, in which the first node sends the updated first node topology data set to adjacent nodes and neighbour nodes only.

6. The method according to claim 1, in which the time indication associated with the received topology data set is generated by the second node.

7. The method according to claim 1, in which the time indication associated with the received topology data set is provided by a time vector clock of the second node.

8. The method according to claim 1, wherein the time indication associated with the received topology data set is an indication of the time of detection of the change in the network by the second node, or wherein the time indication associated with the received topology data set is an indication of the time of sending of the received topology data set to the first node by the second node.

9. The method according to claim 1, in which the first node's topology data set is updated by one or more of: a. changing the operational status for one or more links between nodes listed in the first node's topology data set; b. adding one or more links between nodes not listed in the first node's topology data set; or c. removing one or more links between nodes listed in the first node's topology data set.

10. The method according to claim 1, in which the event is detected by the cessation of a message sent by a node in the network to the second node.

11. The method according to claim 1, in which the detection of the event produces a change in the topology data set of the second node and the change in the topology data set of the second node provides for the second node sending the change in the topology data set to at least the first node in the network.

12. The method according to claim 1, in which the method further comprises ordering multiple topology data sets according to their respective time indications, the ordering establishing which of the multiple topology data sets is the most recent of the multiple topology data sets.

13. The method according to claim 12, in which the most recent of the multiple topology data sets is used to update the first node's topology data set.

14. The method according to claim 12, in which the method further provides that the topology data sets not associated with the most recent time indication are not used or are discarded.

15. The method according to claim 1, in which the updated first node's topology data set replaces the prior first node's topology data set.

16. A computer implemented system arranged to perform the method of claim 1.

17. A hardware arrangement within a node of a network of nodes, the hardware arrangement including: a. a detector for detecting changes in a topology of the network, the detector being configured to detect an event, wherein the event is cessation of a message sent periodically by another node in the network; b. an update sorter for sorting updated topology data sets communicated within the network, wherein each topology data set is associated with a respective time indication; c. a topology data set processor for processing topology data sets, wherein the topology data set processor is configured to update the topology data set of the node according to data from a received topology data set of an additional node; and d. a topology update communicator for the updated topology data sets such that knowledge of changes in the topology of the network is shared within the network.

Description

BRIEF SUMMARY OF THE DRAWINGS

(1) These and other aspects of the present invention will be apparent from and elucidated with reference to, the embodiment described herein. An embodiment of the present invention will now be described, by way of example only, and with reference to the accompany drawings, in which:

(2) FIG. 1 is an example of a network topology diagram illustrating nodes, adjacent nodes and neighbouring nodes;

(3) FIG. 2 is an illustration of a system of vector clocks;

(4) FIG. 3 depicts an execution of a broadcast algorithm, without the presence of any topology changes (failed or lost messages);

(5) FIG. 4 is an illustration of a global network used to describe the operation of an embodiment of the invention; and

(6) FIG. 5 is an illustration of the exchange of messages between nodes with time used to describe an embodiment of the invention.

DETAILED DESCRIPTION

(7) A central problem for unstructured peer-to-peer (P2P) networks is topology maintenance. For instance, how to properly update neighbour variables when nodes join and leave the network and/or when nodes crash abruptly. The invention is concerned with a topology update algorithm.

(8) Within P2P networks, there is a need for searching, information dissemination, broadcasting and the like need to know “who is connected to whom” or “who knows whom”. In this context a number of broadcast algorithms are known, such as probabilistic algorithms and deterministic algorithms.

(9) Epidemiological Algorithms or Gossip Protocols are probabilistic in nature and they do not rely on fixed topologies. Nodes exchange information with random neighbours to implement a diffusion-like computation pattern, and as a result the system converges to a state where all the nodes know the message. Gossip protocols are scalable because each node sends only a fixed number of messages, independent of the number of nodes in the network. In addition, a node does not wait for acknowledgments nor does it take some recovery action should an acknowledgment not arrive. They achieve fault-tolerance against intermittent link failures and node crashes because a node receives copies of a message from different nodes. No node has a specific role to play, and so failed node will not prevent other nodes from continuing sending messages. Hence, there is no need for failure detection or specific recovery actions.

(10) A drawback of gossip protocols is the number of messages that they send. One class of gossip protocols (anti-entropy protocols) send an unbounded number of messages in nonterminating runs.

(11) Spanning Tree Algorithms such as breadth-first search are a class of deterministic algorithms. Spanning trees provide a simple way to visualize networks as “backbones,” i.e., a minimal set of edges that connect nodes. The idea is simple; a spanning tree is first constructed and used to collect local data variables from each node, and then aggregate the data towards the root node (or sink node). Each node transmits its value to its own parent. At each non-leaf node, the value of its child nodes, in addition to its own value, is processed before transmitting the result up the tree. Since breadth-first protocol does not generate a node in the tree until all the nodes at shallower levels have been generated, it always finds a shortest path to a node. Spanning tress are a very efficient form of information distribution and collection, and in how they calculate the new topology of the network.

(12) In general, structures like spanning trees are considered structurally fragile: single vertex or edge failure causes the broadcast to fail.

(13) The topology-update problem is the problem of keeping the knowledge of the network topology at each network site current, when the network topology is dynamic, i.e., when links fail and recover at arbitrary times. The correct operation of any topology algorithm depends strongly on the way in which links status changes (failures and repairs) are detected by the network nodes and other factors.

(14) There are several subtleties in the challenges that underlay the use of topology algorithms and which should be accounted for in any solution: A link may experience several topology changes within a short time. Other network nodes must eventually determine which changes was the most recent. Nodes must be able to distinguish between old and new information about the status of a link. While a topology algorithm is running, additional topology changes may occur. The topology algorithm must be capable of either incorporating new information during execution, or of starting a new algorithm version. If different versions are used, each node must be able to determine which is the most recent version. The repair of a single link can cause two parts of the network which were disconnected to reconnect. Each part may have out-of-date topology information about the other. The algorithm must ensure that the two parts eventually agree, and adapt the correct network topology. The ability for a network to realise changes within itself is important for fast and effective communication through the network and for the network to function fully. As an example, in order to provide a fast payment network for digital currencies, the transactions and other information must be shared through the distributed network completely and quickly.

(15) In a method which relies on threshold cryptosystems to protect secrets by distributing shares to participants, a network consisting of a set of merchants who collectively hold a subset of the secret shares is first constructed. The second half of the secret share is held by the customer(s). The merchant network performs important tasks, such as creating signatures, updating key shares, defining the threshold level, validating transactions etc. Their ability to collaborate and communicate, and to be aware of the network topology is essential in these situations.

(16) In the following description, we present an algorithm that allows each merchant node to maintain a correct view of the network topology despite link and node failures. The algorithm allows the network to automatically return to a stable configuration within a finite number of steps (so called “self-stabilisation”) and uses logical clocks to accurately capture the causality relation between events. The topology updating protocol is event driven, i.e., it is activated when some change is detected.

(17) The system includes steps for: detecting changes in the topology; ordering those changes by occurrence; and constructing a new topology reflecting the changes.

(18) To enable a full description of the invention, it is useful to understand a mathematical model of a network.

(19) Referring to FIG. 1, a series of nodes (labelled 1 to 8) are provided. Each of the nodes is provided with a link (or edge) to another node. The series of nodes form a set, where V is the number of nodes in the set.

(20) The network can be represented by a graph G=(V, E) where V is the set of nodes, each having a distinct identity, and E is the set of edges (or links).

(21) The mathematical model uses the following definitions:

(22) Definition 1. (A definition of “Hop”) The distance d(i,j) between two nodes i and j is equal to the minimum number of links connecting the nodes. Thus in FIG. 1, the distance between node 6 and node 1 is two links and in the case of node 8 and node 1 just one link.

(23) Definition 2. (A definition of “Adjacent Nodes) The adjacent nodes, adj(i) for node i in set V, i∈V, are nodes j in set V, j∈V, within defined distance or adjacent radius r.sub.adj. Hence:

(24) adj ( i ) = { j V : d ( i , j ) - r adj }

(25) Definition 3. (A definition of “Neighbour Nodes”) The neighbour nodes, N(i), for node i in set V, i∈V, are nodes j in set V, j∈V, within defined distance or horizon radius H≥r.sub.adj. Hence:

(26) N ( i ) = { j V : d ( i , j ) = H , adj ( i ) .Math. N ( i ) }

(27) In FIG. 1, if we chose adjacent radius, r.sub.adj=1, then the adjacent nodes to node (peer) 1 are represented in red; namely nodes 2, 3, 4, 7, 8. If we chose the horizon radius H=2, then the neighbour nodes are represented in blue; namely nodes 5 and 6.

(28) Detecting Changes

(29) Clearly to be able to account for a topological change, there is a need to be able to detect such a change.

(30) Topological changes may occur at any time. Thus, we make the following assumptions about the system to capture any kind of initial faults. Each node i in the network maintains the identities of its adjacent neighbours in a list, adj(i). Node i periodically sends a test messages “I'm alive” to its adjacent nodes. Referring to FIG. 1, node 4 would send such messages to node 1 only, whereas node 1 would send such messages to nodes 2, 3, 4, 7, 8.

(31) The frequency of the dispatch of “I'm alive” messages has a large impact on the efficiency of the error detection mechanism. To achieve a short error detection time, the “I'm alive” messages have to be sent and checked very frequently.

(32) Each processor in a node i has a local clock that is used to measure time intervals. The clocks at different nodes may not be synchronized with each other. For each link (i,j), node i maintains a timer t.sub.ij for its adjacent nodes j∈adj(i). If node i does not receive the “I'm alive” message from node j within a time interval δt, it assumes that the link (i,j) is no longer available and removes j from its adjacent node set. It then updates its current (possibly wrong) topology table T.sup.i. A topology table is a list of the operational status of the links that are directly connected to node i. Thus referring to FIG. 1, node 1 sends an “I'm alive” message to node 4 and node 4 should send an “I'm alive” message to node 1. If node 1 does not received such message from node 4 in the defined time period, then node 4 is removed from the topology table T.sup.i for node 1. Then the adjacent nodes for node 1 in topology table T.sup.i would be nodes 2, 3, 7 and 8 only.

(33) The above consideration forms a first topology update rule, namely: I. When a node detects that an adjacent link has failed, the failed status is entered in the node's main topology table.

(34) It is desirable to share this updated topology table with other nodes in the set of nodes, V. When this occurs, a node updates its own topology table according to the topology table received from the adjacent node. Hence, a second topology update rule is formed, namely: 2. When a node receives an entire main topology table from a neighbour, it updates its main topology table by using the main topology update algorithm (described below).
Ordering Changes

(35) As noted above, updated topology table messages are only sent in response to topological change that has been detected. Since all messages sent in the network are subject to delay, a node can never be certain that it knows the correct topology at some instant of time. One or more of the updated topology table messages may be older and out of date compared with the status noted in another updated topology message, irrespective of its time of reception. Causal ordering broadcast (as detailed in Raynal, M., and Singhal, M.,—Capturing Causality in Distributed Systems-1996 IEEE), ensures that if two messages are causally related and have the same destinations, they are delivered to the application in their sending order.

(36) The invention uses a system of logical clocks, where every node (peer) has a logical clock that is advanced using a set of rules described below. As a result, every message is assigned a timestamp, by which a process can infer the causality relation between events. The timestamps assigned to events obey a monotonicity property; they are always increasing. That is, if an event a causally effects an event b, the timestamp of a is smaller than the timestamp of b. Event b is the effect of event a in that case.

(37) The logical clock advances according to the following rules; vector time clocks.

(38) In a system of vector clocks, the time domain is represented by a set of finite-dimensional, non-negative integer vectors. Each node i maintains a vector T.sub.i=(T.sub.i1, . . . , T.sub.in), where T.sub.ii is the local logical clock of node i and describes the logical time progress of node i from time 1 through to time n.

(39) T.sub.ij represents node i's latest knowledge of node j's local time where node j E adj(i).

(40) We denote the dimension of T.sub.i by dim(T.sub.i), and we have dim(T.sub.i) equal to the size of adj(i).

(41) The time stamp of an initial local event on node i is all 0's except for the i.sup.th entry, which is 1. If T.sub.ij=x, node i knows that the local time at node j has progressed up to x. The vector T.sub.i constitutes node i's view of the logical global time; node i uses it to timestamp events. The time stamp of a received message is the element-wise max of the current stamp and the incoming vector time stamp.

(42) This operation is illustrated in FIG. 2 in relation to three nodes, A, B and C. At each node, local time is initially 0. When an event occurs at node C, then node C increases its local clock time to 1 and notifies node B. When node B receives the message, no other events have been notified to node B and so the node B local time is still 0. Node B has now experienced an event and so node B updates the node B local time by 1. As the node B local time was 0 this gives a value of 1. In addition, Node B also amends the node B local time by adding the greater of the updated node B local time (value now 1) or the node B local time in the message (value 0 in the example). Hence, the amended node B local time is 2 and node B then notifies node A of the change.

(43) Node A goes through a similar process of updating by 1 and amending by the addition of 1 to result in a message to node B of A:2 B:2 C:1. By the time node B receives this message, node B has noted another independent event and has communicated that to C. Thus there is an update of node B by 1, but the amendment is the addition of 1 to the node B local time (3 by this point) rather than the addition of 1 to the node B local time in the message (only 2 at this time). Hence the new message sent to A has a value of B:5 (3+1+1 and not 2+1+1).

(44) Subsequent messages are dealt with in the same manner. The second message sent by node B at time 3 is independent of the other messages discussed above, message one (C to B), message two (B to A) and message four (A to B) and message five (B to C).

(45) The above consideration forms the logical clock update rules, namely: 1. Before sending a message, node i updates its local logical time T.sub.ii←T.sub.ii+1. 2. Upon receiving a message (m, T.sub.j) from node j∈adj(i), node i executes the following sequence of action a. Update its logical global time as follows: ∀k∈adj(i), T.sub.ik←max (T.sub.ik, T.sub.jk)

(46) FIG. 3 depicts an execution of the broadcast algorithm without any failed or lost message. We do not specify the broadcast algorithm (deterministic or probabilistic) and we do not provide a definition for neighbour nodes. We assume that nodes 1, 2, and 3 are all adjacent nodes, i.e. (2, 3)∈adj(1), (1, 3)∈adj(2), and (1, 2)∈adj(3). Node 1 generates first message (m.sub.1, T.sub.1) sends it randomly or deterministically according to the chosen broadcast algorithm to nodes 2 and 3. Node 3, triggered by message (m.sub.1, T.sub.1) from node 1 generates anew second message (m.sub.2, T.sub.3) and sends that the nodes 1 and 2. Node 1, triggered by message (m.sub.2, T.sub.3) from node 3 generates a new third message (m.sub.3, T.sub.1)) and sends that to nodes 2 and 3.

(47) Significantly, by the time node 2 receives the second message (m.sub.2, T.sub.3) from node 3, node 2 has already received (m.sub.3, T.sub.1) from node 1. Node 2 knows the order of these messages from the methodology outlined above. Hence, node 2 discards the second message (m.sub.2, T.sub.3) and makes use of the third message (m.sub.3, T.sub.1) guaranteeing the integrity of the message contents.

(48) Constructing the Updated Topography

(49) Having detected changes and having ensured the correct ordering of those changes at nodes, the manner in which a node establishes the new topography is discussed below.

(50) The following algorithm is used by each node i to construct its main topology view V.sub.i. We refer to the single bidirectional link between nodes m and n as either l.sub.mn or l.sub.nm Each entry in the topology table V.sub.i is a link l.sub.mn or l.sub.nm. Links can take on one of two values 1 or ∞. When a link is operational the value is set to 1. When the link is dead the value is set to ∞.

(51) Upon receiving a message m={V.sub.j, T.sub.j} from node j at a given time, node i uses it to update its global view V.sub.i.

(52) Let link l.sub.mn be a link in both global views, V.sub.i∪V.sub.j. The information about link l.sub.mn is updated due to the received V.sub.j, if the time stamp T.sub.j[t.sub.j]>T.sub.i[t.sub.j]. The newer status for link l.sub.mn is taken.

(53) Let l.sub.pq be a link in V.sub.j that is not presently a link in Vt. The information about link l.sub.pq is added to the global view V.sub.i, if the distance between the nodes i and q is lower than the value for the adjacent nodes, horizon H. That is l.sub.ij+l.sub.jp.sub.1+l.sub.p.sub.1.sub.p.sub.2+ . . . +l.sub.p.sub.n.sub.p+l.sub.pq<H where l.sub.ij, l.sub.jp.sub.1, l.sub.p.sub.1.sub.p.sub.2, . . . , l.sub.p.sub.n.sub.p are every active link of V.sub.i

(54) Hence changes in a link's operational status are updated, links returning to operational status are added and new links appearing in the network are added. When a link returns to the network or a new link is added to the network, the topology algorithm ensures that it is provided with a copy of the up to date topology table.

(55) The above consideration forms the communication rules, namely: 1. When a link status entry in a node's main topology table changes, a message containing the new topology table is sent to the neighbour nodes. 2. When the link protocol at a node detects that an adjacent link has become operational, the node transmits its entire main topology table over that link.
An example of suitable code for the protocol is:

(56) TABLE-US-00001  1: for every V.sub.j received do  2:  begin  3:   if T.sub.j[t.sub.j] > T.sub.i[t.sub.j] then  4:    begin  5:     T.sub.i[t.sub.j] = T.sub.j[t.sub.j]  6:     for every link l.sub.mn ∈ V.sub.i ∪ V.sub.j do  7:      begin  8:       V.sub.i[l.sub.mn] = V.sub.j[l.sub.mn]  9:      end 10:     for every link l.sub.mn ∈ V.sub.j and l.sub.mn .Math. V.sub.i do 11:      begin 12:       if V.sub.i[l.sub.ij] + V.sub.i[l.sub.jp.sub.1] + . . . + V.sub.i[l.sub.p.sub.n.sub.m] + V.sub.j[l.sub.mn] < H then 13:        begin 14:         V.sub.i[l.sub.mn] = V.sub.j[l.sub.mn] 15:        end 16:      end 17:    end 18:  end

(57) A worked example of the topology updating algorithm is now described with reference to the network in FIG. 4.

(58) We assume r.sub.adj=1 and H=2. Hence, relative to node 1, nodes 2 and 3 are adjacent nodes and nodes 4 and 5 are neighbouring nodes.

(59) At the initial stage, the topological views V.sub.i of nodes 1, 2 and 3, i∈(1,2,3), are:

(60) V 1 = ( l 12 = 1 l 13 = 1 l 34 = 1 ) , V 2 = ( l 12 = 1 l 23 = 1 ) , V 3 = ( l 13 = 1 l 23 = 1 l 12 = 1 l 34 = 1 l 45 = 1 )

(61) As a consequence, node 3 has a main topology view which is more informed and complete than nodes 1 and 2.

(62) Referring back to the method of ordering messages detailing changes, the logical clocks T.sub.i are:

(63) T 1 = ( t 1 = 0 t 2 = 0 t 3 = 0 ) , T 2 = ( t 1 = 0 t 2 = 0 t 3 = 0 ) , T 3 = ( t 1 = 0 t 2 = 0 t 3 = 0 t 4 = 0 )
Phase 1:

(64) Node 3 sends the first message m.sub.1={V.sub.3, T.sub.3 [t.sub.3]=1} to node 1 and node 2.

(65) Phase 2:

(66) Nodes 1 and 2, that is i∈(1,2), checks if T.sub.3 [t.sub.3]>T.sub.i[t.sub.3]. As the first message this is the case and so nodes 1 and 2, that is nodes i, update their logical clock T.sub.i and their view V.sub.i. In practice this means the addition to V.sub.1 of l.sub.23 as that link was previously unknown to node 1. Whilst link l.sub.45 was also unknown to node 1, V.sub.1 is not updated to include link l.sub.45 as that link is outside of the allowable neighbour node limit; l.sub.13+l.sub.34+l.sub.45>H. The resulting updates to T and V for nodes 1 and 2 are:

(67) T 1 = ( t 1 = 0 t 2 = 0 t 3 = 1 ) , T 2 = ( t 1 = 0 t 2 = 0 t 3 = 1 ) , V 1 = ( l 12 = 1 l 13 = 1 l 23 = 1 l 34 = 1 ) , V 2 = ( l 12 = 1 l 13 = 1 l 23 = 1 l 34 = 1 )

(68) If node 1 sends a similar message m.sub.2={V.sub.1, T.sub.1[t.sub.1]=1} to node 2, then node 2 updates its logical clock:

(69) T 2 = ( t 1 = 1 t 2 = 0 t 3 = 1 )

(70) The topological view V.sub.2 for node 2 is unchanged as it already knows about links l.sub.12, l.sub.13, l.sub.23 and l.sub.34. As there is no change in V.sub.2 node 2 does not broadcast a new message.

(71) Phase 3:

(72) The link (edge) l.sub.34 is now dead. Node 3 detects this change due to a lack of test message from node 4. As a consequence, node 3 updates the view to include that operational status for l.sub.34. The updated view is:

(73) 0 V 3 = ( l 13 = 1 l 23 = 1 l 12 = 1 l 34 = l 45 = 1 )

(74) Node 3, because there is a change, sends a new message m.sub.3={V.sub.3, T.sub.3[t.sub.3]=2} to node 1 and node 2. In this example we are assuming that m.sub.2 does not reach node 2 (or has not yet reached node 2).

(75) Phase 4:

(76) Node 1 updates its logical clock T.sub.1 and its view V.sub.1 having performed the checks outlined above. This gives:

(77) T 1 = ( t 1 = 1 t 2 = 0 t 3 = 2 ) , V 1 = ( l 12 = 1 l 13 = 1 l 23 = 1 l 34 = )
Phase 5:

(78) Node 1 acts promptly and sends the message m.sub.4={V.sub.1, T.sub.1[t.sub.1]=2}.

(79) Phase 6:

(80) On receiving message m.sub.4, node 2 performs the mentioned checks and then node 2 updates T.sub.2 and V.sub.2 accordingly

(81) T 2 = ( t 1 = 2 t 2 = 0 t 3 = 1 ) , V 2 = ( l 12 = 1 l 13 = 1 l 23 = 1 l 34 = )

(82) Further changes would be detected, messaged, ordered and updated in the same manner.

(83) It should be noted that the above-mentioned embodiments illustrate rather than limit the invention, and that those skilled in the art will be capable of designing many alternative embodiments without departing from the scope of the invention as defined by the appended claims. In the claims, any reference signs placed in parentheses shall not be construed as limiting the claims. The word “comprising” and “comprises”, and the like, does not exclude the presence of elements or steps other than those listed in any claim or the specification as a whole. In the present specification, “comprises” means “includes or consists of” and “comprising” means “including or consisting of.” The singular reference of an element does not exclude the plural reference of such elements and vice-versa. The invention may be implemented by means of hardware comprising several distinct elements, and by means of a suitably programmed computer. In a device claim enumerating several means, several of these means may be embodied by one and the same item of hardware. The mere fact that certain measures are recited in mutually different dependent claims does not indicate that a combination of these measures cannot be used to advantage.