## 2 Bloom Filter Labelling for Packet Switching with Photonic Integrated Switches  
### Concept  
Bloom-Filter is a hash-based method for representing a set of elements to support membership queries. They were invented by [PERSON] [35] and, among other network applications [36], have been proposed as an efficient way of labelling packets or destinations, simplifying header processing to a few basic logic operations and avoiding the use of complex look-up functions [9]. Their employment has been promoted so far in Information-Centric networking [37; 38] and more recently also in DC network environments [9; 11; 36; 39], where they revealed significant reduction in memory size and cost requirements [9]. The BF labels are created by allocating a vector v of m bits, initially set to 0, and then choosing k independent hash functions each with range (1,..., m). For each element (a), that we want to group the bits at positions h1(a)... hk(a) in v are set to 1. To query if an element b is a member of this BF we check the bits at positions h1(b)... hk(b). If any of them is 0 then b is certainly not a member of the group. Otherwise, we can conjecture that b belongs to this group, even though there is a possibility that this is a wrong assumption, called a \"false positive\". For n numbers of elements, the probability of this false positive occurring show good congruence with the approximation of:  
\[\mathrm{P}=\left(1-\left(1-\frac{1}{\mathrm{m}}\right)^{\mathrm{n}\mathrm{k}} \right)^{\mathrm{k}} \tag{1}\]  
In this respect, choosing k and m according to network requirements can minimize the probability of a false positive [35]. An example for better understanding the use of Bloom Filters is illustrated in Figure 1, where an 8-bit vector along with 3 hash functions h\({}_{1}\), h\({}_{2}\) and h\({}_{3}\) are considered. Figure 1a depicts the construction process of a Bloom filter containing three different data elements in two stages. Initially, the representation for each element is generated using the hash functions and subsequently the three elements are encoded in a BF using a bitwise-OR operation. Figure 1b illustrates the inverse operation where a query for a single element (Data#B) is performed in the BF produced in Figure 1a. A bitwise-AND operation is performed between the Bloom filter and the element to be checked,with the result of this operation defining whether the element is a member of the Bloom Filter. In the case that the result is identical to the element's representation then the element is possibly a member of the Bloom Filter, otherwise the element is definitely not a member. The proposed BF labelling concept for DCs is schematically illustrated in Figure 2 where each resource is associated with a designation address or ID following a traditional packet switching scheme. Figure 2a shows a switch with 4 output ports, where every port connects to a physical resource pool, which can encompass computing, memory and/or storage modules usually termed as bricks, in the DC environment. The length of the ID, and therefore the length of the resulting bloom filter, has to be chosen so that the possibility of false positives approaches effectively 0. The switch port connecting to the set of resources residing on the same physical resource pool (i.e., a tray or a rack incorporating several processor or memory or storage nodes) is addressed by a BF stemming from a bit-wise OR operation between the IDs of these resources. For example, BF-1 originating from the OR operation between the IDs of Res-A, Res-B and Res-C of the Resource Pool#1 becomes the address of switch port#1. Whenever an incoming packet destined for a certain Resource enters the switch, the packet header carrying the destination address ID is logically ANDed with the four BFs corresponding to the four switch outputs. In case the result of this AND operation is identical to the packet header, it means that the packet header is most probably a member of the BF and the packet is forwarded to the respective switch port.