 This performance of processor memory interconnection for multiprocessors, year is not written here, 1981, October 1981, is a IEEE transactions on computing. Because remember, switching problem has been common in, this basically we are now trying to look into packet switches, which has to do with nothing but interconnection systems. That is why the paper was actually here. Performance of processor memory interconnection for multiprocessors, I will upload the paper actually. I will download from explore site and upload the two papers I have to put, earlier one this one also. So, now the, I think where we left last time, we were actually had discussed, I am just making a quick recap and then we will move ahead. What we had done was, we have taken a simple cross bar, we put the input and we took two actually possibilities, where once we will use the input queues, so there is no speed or factor and we analyze the performance for that. We had done before that an output queued system. Output queued system can operate till your load becomes equal to 1. So, when load becomes equal to 1, then only the queue length, explores to infinity as well as the delay also goes to infinity. So, that is Markovian arrival, deterministic departure process single queue infinite buffer. It actually mimics that system, essentially that was the thing. When the, in the input queued system, what we figured out was whenever your p is greater than that 0.881, at that point of time your throughput will be higher than 0.58, whatever was the saturation limit under fully saturated condition, when full load is there. So, unless this probability higher than this, your throughput will not be higher than 0.581. So, what usually will happen is, when the switch will start operating, you increase your p, your throughput will also start increasing at some point of time, when p is greater than 0.881, at this point I can achieve more, the higher than 0.58, so after this point you should also switch over to dropping the packets actually and from the head of the queue, because then only I will be able to achieve a higher value and then from 0.58 I should be able to go to 0.631, something whatever was there for infinite n. So, I will be able to push it more and before this, it will be going something like this way and then I can further, I will do a switch over at this point. Your packets will start losing as you grow at some 0.581 roughly around that time, so before that whatever you are pumping is lower than what is outgoing rate. So, if you have actually infinite buffers, you will not be losing anything, but the moment you cross 0.581, your queue will actually will become, will start exploding, so the outgoing rate is smaller and incoming rate is higher and then of course, the throughput will be small here, so there will be some crossover point, so below this the queue is stable, this point the queue is unstable, so you will actually ultimately have to start dropping the packets after this point. At this point anyway you are dropping, but from the head of the queue, not when the buffer overflow happens, here you will be doing when the buffer overflow actually happens, but following this strategy does not make sense, because your throughput will be less than 0.581, because that was the condition by which this was derived. 0.881 is natural log of 1 plus root 2, so that is I think what we did, so you move head from here and now we go to another domain. So, the queue is stable after this point 0.881 also sir? Yeah, queue is now you are dropping, if you do not drop then queue is unstable, what is the stability of the queue is that as time grows, because outgoing rate is mu and lambda, when lambda is going to be higher than mu, outgoing service rate what is maximum possible, if you are putting more queue will start increasing and it will increase and it will become infinite, that is the instability. It will remain statistically constant, the mean value remain constant, you can estimate a mean, for an unstable system you cannot estimate a mean actually, there is no steady state condition, it is transient now, so because 0.581 is the maximum throughput, you are pumping packets at higher than 0.581 what is happening to the remaining, you are not also dropping here, so queue must be exploding and queue will then build up to infinity, so this is an unstable condition. So, usually you will be actually taking for example, I will have buffer size of 100, over 100 I will start dropping, till some but these guys are pushed off further. But 0.581, we have analyzed for infinite goal, 0.581 under what we call for infinite fully loaded condition, there is always a packet available, so when p is equal to 1, what is the maximum throughput which you can achieve, that is the saturation throughput, that is 0.581 and I know if my input rate is higher than 0.581, it is 1 for example, that is what we have done, we have looked into unstable situation, but we are not looking into buffer depth, we are only looking at what is the maximum saturation throughput which you can achieve, that is 0.58. What will happen if you have limited buffer depth in this? You have to drop ultimately, you cannot help it. But graph will remain the same. No graph will not. What is the impact of the buffer size on the throughput? What is the impact of the buffer change on the throughput? Yeah throughput actually sorry, this curve will not, it will remain same, it does not matter for the curve as far as concerned. Curve is not showing where the packets are being dropped or whether the packets are being always retained in the system, so throughput will be this, even if you do not drop it, only thing you will have instability or you will have infinite queues, but throughput will remain same, so it is immaterial, it is not shown here, but I think it you should be able to reduce this. You should not assume that there is no packet being lost in this system, there are different things happening in different portions. Even technically speaking, because if you say 100, there is a finite probability even with very low load condition, your buffer depth might become 100, very small probability, that happens packet will be even dropped there, but the probability of packet loss will actually start, will be very less air and will start increasing, it will be very high at this point, once it crosses 0.581 will be there, so you can actually estimate even the probability of loss, but that will be function of buffer depth. But I know on an average, how many will be lost, you can actually find out, this is the maximum throughput which is there rho 0 and whatever is p, so I told you that p minus rho 0 packets are going to be lost per unit line per slot, so those will always be lost, you cannot help it. And in this scenario p is always greater than rho 0, you have to always understand p is always going to be greater than or equal to rho 0 and this is lost rate. So, loss will always be there in the beginning, because rho p will all be almost equal to rho 0, it will be 0. The moment you cross 0.581 is the maximum, when p is more than 0.581, you know there is going to be loss. If you have infinite buffer till p is equal to 0.581, there will not be any loss, because after that only then basically stability will come. You will have stable queues, but maybe you might require a very large buffer depth, that is the only thing. So, now coming to this was fine, we were actually using cross bar, but handling the things with cross bar is complicated, can we do something better actually. And secondly the there is a processor which has to analyze all the packets and based on that it has to keep on setting all the cross bars. As you increase size n, n by n cross bar this becomes a complicated thing, can I make a simpler system that is the idea now. So, people thought about it, then they thought why I cannot build up a switching network itself to act as a switch. Remember what we did earlier in class network, because I could not have maintained larger n by n, I thought of multi stage interconnection network. We came up with clause all kind of variance which we have studied, then we studied the property of properties of those interconnection networks. Same thing we can do with the packet switching system also. And I want my switch control is still in that for example, clause network, when I have to set up the path all inputs data has to still come to single processor, but we are trying to reduce the cross point complexity, not the computational complexity. Here I want to now reduce the computational complexity actually. So, one of the things which we can do is, we can always create an interconnection. I am showing a very simple one. So, 8 by 8 I want to build. So, there is something called a Banyan network. Remember in circuit switching what we had done was, we have always studied the switches, where there are multiple paths. So, you can always set up from a free input to free output path, we have actually looked into those kinds of scenarios also. Sometimes it is not possible. Banyan network is a special category of multi stage interconnection network, whereby from every input in the middle stage for example, these switches are like small cross bars, small packet switch cross bars, the one which we had looked, but it is without buffers. It has a speed, we assume that it has a speed of factor of 2, if it is a 2 by 2 cross bar, if it is a 3 by 3 basic element speed of of 3 is being used. So, it is like a output queue system, but there is no output queue. If there is a contention happens, packets are actually dropped in this case. So, I am looking into unbuffered Banyan network as of now. There is a category of buffered Banyan networks also. So, if time permits we will try to look into that analysis buffered Banyan delta networks basically. So, what we have to do is from each input to each output, I should be able to have exactly one path, if that is possible. There should not be 2 and there should not be 0. There has to be exactly one path, it is a Banyan network. Routing is going to be a complex phenomenon in this case. From this input, I want to go to this output. There is another output I want to go. A path exists from here to here, a path also exists from here to here. So, I can make a same packet I can take and I can make 2 copies and then push one here and one here. How does it matter? So, wherever there is a common path only one packet goes wherever the split happens, I make duplicate copies. Multicasting also can be implemented in Banyan networks, but this has to be done by the intermediate switch. So, only problem is who will control. In a closed network, there was a centralized command centralized control, which was controlling everything by analyzing the inputs. Here, I want to do away with that because that ultimately is the limitation. Because remember in circuit switching, when you are setting up a circuit, you have sufficient time when a request will come. You set up one circuit at a time, you remember basically again release every circuit one at a time. Maybe call is there for five minutes. So, you have computing time. Here, computation has to be done in every slot, every packet slot. All headers have to analyze a new configuration has to be computed and put. So, it has to be done in less than 1 percent of the slot duration. Roughly 1 to 2 percent is the guard bend period between two slots. So, which is a very tight requirement actually. While in case of multistage interconnection for circuit switches, you set up a call for say half an hour. How does it matter? You are going to do a calculation only for say 30 seconds. It does not matter actually. It is acceptable. Only problem is and also you are not computing everything. Current state you maintain, you just reorganize some of the states, some of the paths set up a new path. The computation is not too heavy. Here, it has to be computed for the complete input to output map in every time slot. It is not differential computation. It is a absolute complete computation happening every time slot. So, that is the issue. So, for example, let me draw a simple one and of course, the common sense tells since it is 8 by 8. So, every input has to fan out to 8. So, I can connect in any arbitrary way. Now, can I connect this thing to here? Is it a legal connection? No, it is not because then if I set up this line, there will be some outputs to it which I cannot make the connection from here. I have just drawn. I have not followed any structure and I think you have exactly one path from every input to every output. Other one also would have been a multi-stage interconnection network, but it would have been two networks which are having some coupling between them. Sir, that is the structure in one path. Yeah. There is to be exactly one path and there are interesting things which will come. We have something called a permutation network and we also have we have to look into how many possible maps which can exist. I will show an example. So, Banyan network is fine, but now how to handle the control part of it? That is the issue. So, within Banyan network, then there is another classification. So, there is a subset. So, this is a super set. So, subset of the Banyan network is something called delta network. So, another thing which is term which is used is known as digit control routing. Here also, I can implement the same thing, but I have to understand the logic. So, usually lot of our routers are actually built using this method, this kind of self-routing. This is known as self-routing matrix. On the input side, there is a board which will look into every packet, will analyze what is the destination. There is going to be exactly one unique outgoing path which will map corresponding to the destination. It will then take that whole packet. It knows that from here, I should be able to reach to the any path by putting up a tag, can be appended actually. Tag will have certain number of bits or digits and each digit of that particular tag will be each different particular digit. For example, I can put in this case, digit d 3, d 2 and sorry, d 2, d 1 and d 0. Then I can build up the matrix such that d 0 will be used to switch here, d 1 will be here and d 2 will be there. So, I want to for example, route this input to this output and if my switches are such that the control digit for a switching element, if it is 0, I will be routing it to the upward side, if it is 1 on the bottom side. There can be a contention actually, remember. There might be a possibility that two packets come, they both want to go to up. Then there will be a contention, I have to drop 1 and I can have a study. That loss can always be there. So, it is not, now that is the reason why in router, sometimes packet actually do get dropped because there is a buffer limitations and they also will have contentions of the link, this kind of thing. So, from here, if I want to go, I will have a d 0 as 0, so that I can reach upward, but then I cannot reach to this particular point. So, this has to be 1. So, it goes to bottom, comes to top, it has to go to again this thing. So, there will be 0, again 0. So, 0 0 1 is being used here, it will be always going here. You take some other 1, which also wants to be the same outgoing port. The top 1 for example, it will also require 0 0 1. Look at some other switch, this one. This one will require a 0, a 0 and 0. Look at this one, this one will require a corresponding to this. It will be 0, you have to go to top, again you have to go to top, again you have to go to top. Now, my problem is, my output port is still the same. So, I can put this id is 0 1 2 3. So, same output port, different inputs have to put different tags, that is one issue, that is one possibility. So, I want to identify the property of a structure, such that if I want to go to this outgoing port, I just put simply the tag value as 0 0 0 everywhere, irrespective of the which input is taken by the packet, it will always reach to that output, same output. So, here the arrangement is not possible. The arrangement of, suppose I want to connect one input to one output, next time suppose I want to change the configuration. Only one packet can go, that is it. If there is a contingent packet, it will be dropped. There are no alternative path. No, suppose I have established a network, can I change the… Then you establish every time slot. Now, you do not even worry about time slots. The packets come, you just do as a cross bar for every packet. Every slot, you do a cross bar for different switches. It is now reaching here separately. So, they may not be synchronous. There will be a delay in going from here to here. So, it will be working based on whatever packets which are coming here. So, every packet is working independently. One thing what I am doing is, instead of analyzing all address and central command center and then setting up the things, I am analyzing all the headers at the interface board itself and based on some local routing table which is given into these boards, I am now estimating what a routing tag which has to be inserted. It has to go in front of the packet and this packet, this tag is going to be analyzed, a particular digit. In this switch, it will be switched out. Once it reaches, the next tag will be done. Whatever is the tag, certain, another digit will be used. So, in this case, for example, D0 was used by this guy. This guy will be using D1. Tread stage will D2. This is a hard coded configuration. At each stage, they are removing a single digit and… We are not removing there, there, but these have been programmed to use only certain specific digit in the tag for routing. Sir, 001 will go to which port surrender? From here. So, 1 is being used. So, it comes to down, goes up. Again, a 0 will be there, second digit D1. Again, 0 is going to top port. See, this is the problem which I am now trying to come up. One end network is a general system, but it may happen that from this port, you require a different tag. From this port, you require a different tag to reach to the same outgoing port. This I want to remove. If you can remove this and ensure for reaching an outgoing port, you require same tag at all input ports. What you get is a delta network. So, the delta network, remember, will be a subclass or a subnetwork. It is a subset of the general Banyan network. Banyan network, this condition does not hold. The delta network is more than self-routing matrix plus this huge interface board, which is going to analyze and do hard coding of D2, D1, D6. It is not a huge, it is a small interface board, but that additional facility is required always. Now, it is a distributed control now. So, you can actually build up very large size switches. But won't this interface ports and complexity will now shift to… We just simply put the routing. See, how you will do the higher amount of computation? But this Banyan… Have multiple processors. So, you have distributed a computation, how much does it take? Instead of having one single controller, which is going to do all computation, I am using now eight things. So, you can use lower speed ones, if you wish. This will not require any processor. Processor will be required in interface board. Technically, every switch board will have some microcontroller or processor, because it has to understand what is the digit coming in the tag analyze and then do the cross on bar. So, they are smaller processors in every switching element and the board will also have a processor. But the scale of this computation will be much lower than what we have in the interface board, where they are going to analyze and hard code the D2, D1, D6. But how many packets you are analyzing per unit slot? One. There are eight interface boards. This also has its own. This also has its own. This also has its own. Sir, port will have the interface. Line interface unit is this. Then, we degrease the compression board. Suppose, if you have a very high end processor in interface board, it can process for eight ports. For eight ports, you can make a one common interface board, where eight lines come in and eight lines goes out. But now, you have a choice. You can make a board for each line separately. In one processor, you can combine two and use one single board. Combine four and use one single board. So, flexibility has come in now. Other large dimensional switches cannot be built. So, this is nothing but an engineering solution, honestly speaking. These switches are identically three stages. These are basically now two by two cross and bar. This is a cross bar switch. I always represent either this as a cross or bar state. Cross state means you take a two by two switching element. This is the connection configuration. Bar state is only thing is that, if you can ensure that whatever tag value I am using, if this tag value is used by any of the incoming port, it will always reach to the same outgoing port. You can still do something better than this. Is you ensure that you can give the address 0 0 0 0 0 1 0 0 0 1 0 and so on for all outgoing port? If that address itself is used as a tag, that is still better for you. You do not have to remember tag corresponding to an outgoing port. But that problem is very trivial. You can even fix it through a remapping of these outgoing ports. Here it can lead to packet loss, but if you do the delta network, it will not lead to packet loss. It can always lead to packet loss. Why it will not lead to packet loss? Why that assertion is there? Because in this case, let us say two packets coming are going to the same output. One needs to be dropped. But if I am buffering in the input port itself. But how do you know that there is a contention? See, I am assuming separate interface board for every line. This guy only knows about this line. He is not aware of these. Buffering is not known. You have to do something only at the buffers in these small switching elements. Contention can only be known here because it is going to analyze both the tags, the digits in the tags. If they are same, there is a contention. So, only analysis can be done by this controller of this particular switching element. That team either actually that is a buffered configuration. I am not doing that thing as of now because that analysis of simulation is much more complicated. You can either put buffer here, input buffering. You can put an output buffering and then let it go. If these buffers get full, you have to drop them. So, these buffers are only used by this particular switching element. They are not shared buffers or you do not use the buffers actually. It is as simple as that. So, important thing is that you cannot use input buffering or output buffering in this configuration. If they input and output buffering can only be used within these switching elements. So, that is a difference between crossbar. You can call it. But see, remember what I have done that crossbar. That same crossbar, I have just pushed it here. So, what we discussed in the previous lecture was this single unit. Of course, I have shown larger dimension. That is a different issue. So, I can even build up a larger, using larger dimension switching element, whatever is technically feasible and join them together to build up a larger size Banyan network. But you have to have a well-defined structure, so that self-routing can happen. Self-routing can happen, but I want now even the addressing. If I use the same tag at any input, it will always go to the same output. That is a delta network configuration. Sir, may they not be specific to that particular tie? Because sir, if I put 0, 0, 0 on the first line and I put 0, 0, 0 on the last line. They should, somewhere they will collide. No, the destination is totally different sir. In this case, if it is a delta network, then they will always be reaching the same destination. Same outgoing port, not destination. See, what happens is this board is now analyzing the, for example, if it is an IP packet. It is analyzing what is the destination IP address. The destination IP address may not be attached to this port, but this is the port which is connected to a link going to the next router, which is in the path to the destination. So, only thing is that you build up what we call forwarding table based on the routing table. Routing table, what it contains is who is the next hop to reach to certain IP address. So, given a destination IP address, you know what is the next hop. Based on that, you have a forwarding table. For this particular thing, I have to go to this outgoing port, not the next hop. That delta network, we are having standardized output ports, output addresses. This also has a standardized output. This also got 0, 1, something, everything, but the tags which you are going to use will not be uniform for the same outgoing port. That will be using some digital, digit controlled outings. We call it digital controlled outings because of that. I am using digits, even this is also digit controlled routing, but this cannot be used because you are using different tags. Obviously, it is not that I cannot use. I can use it, but it is not preferable. I will better actually build up a delta network. So, let us see how delta network actually is going to be built. So, I will take same 8 by 8. Do you call it delta? I do not know. I think it is also not a short form of digit controlled routing. I have not come across any reason. Just people just call it. Why it is called banner network? I also do not know. Same question can be asked there, but answer is not there. Sometimes, I think some of the inventors who have invented, based on their name actually, the things will come. No, baniantry of switches or baniantry which actually grows, agricultural thing. No, it is nothing to do with that. It is nothing to do with that. It certainly does not look like that actually. So, what I will do is, I think let our objective be all outgoing ports will be addressed from 0, 1, 2, 3, 4, 5 and so on and I will write them in binary form. And ultimately, I will give you a general statement for a delta network connection. So, I am making a three-stage system and I hope by the end of it, you should be able to figure out what is the magic which goes behind the delta thing. So, I want to actually route and I have numbered the outputs as 0, 0, 0, 0, 0, 0, 0, 1. Now, from this input if I want to… So, what I will do is, I am actually writing all my tags as d 2, d 1 and d 0. So, I will be using d 2 here, d 1 here and d 0 here for controlling the switching elements. So, pushing in a 0, 0, 0 from here will move the packet to upward side, upward side I go to 0, 0, 0. If I put in 0, 0, 1, it has to go to the bottom side. So, it is 0, 0, 1, it will still go to the upward side, it will go to the upward side and 1, it will come here. If I put 0, 1, 0, go to the upward side, 1, so it has to come here. So, I should connect it to this. If it is again 0, 0, 1, 0, it will come here, 0, 1, 1, it will come here. So, when I am putting a tag of 0, 0, 0, what happens to the packet? So, 0 means upward, 1 is downward and all switching elements. So, 0, 0, 0, I come here, 0, 0, 0, 1, 0, I come here, 0, 1, 0, I get 0, 1, 1. So, remember these, what I have written, I just read it in that sequence as you are moving. It is 1, it is remember the outgoing which is matters, 1, 0, 0, I will come here, 1, 0, 1, I will come here, 1, 1, this one, no, no, next column, third is second row, third is third column, this is fine and this is what? This is nothing but a demultiplexer tree. I am demultiplexing, based on first digit I am splitting either it is going to the 0 portion or 1 portion, again further I am demultiplexing based on the second digit and last using the third digit, 1 is to 8. I can now use the second one and create a demultiplexer tree. So, this for 1 input demultiplexer, this is also varied for second one. So, I can combine these two things here. I can create a demultiplexer tree for the other one and remember this is a path, if a packet goes it will take these paths. So, if I create a demultiplexer tree for this, I forget this particular tree, there will be an overlap, whichever is overlap is the common part, that is where the contentions will actually happen. So, for actually 0, I created this whole tree, for 1 also this is whole tree. So, 0 and 1 they will actually contained on any one of these lines. So, contention between these two will always be happening in this switch itself, that is what actually it shows. So, from here if I put a 0, it will be further split. So, contention within this will be handled here, because they will share the same tree, but between 1 input here and 1 input here, it will be happening in the second stage. And this will be nothing but inverse Bayne's network actually. So, how to reach 0, 0, 0 from the. From which one? First one, Pink Taylor one. This one. Third one SS, SS. So, if you have a 0, 0, 0 what will happen, you will take the upper path? Yes sir. 0, you will take upper path, upper path go to 0, 0, 0, take the bottom one, 1, 0, 0, you will come here, 1, 1, 0, you will come here, you take any path. The bits or digits which are written at the output port use them in a sequence, you will always get the output port address. So, same thing I can do it here, I need not even remember everything, it is a inverse Bayne's network. Bayne's network is also self routing network, sorry, inverse forward Baynes what you know Baynes network is also inverse Baynes, both are self routing matrix. I will make some changes and I think from there you should be able to observe the property which have to be followed by a delta network, because that property is very crucial for the property of self routing. I will make some change here. This is delta network, stroke inverse Bayne's network, this is known as delta network. It is always a Bayne's network, because there is exactly one path from each input to each output, but it is also a delta network, which is because the routing is happening, self routing. And also known as inverse Baynes. Inverse Baynes is because of the topology. So, every delta network is always a Bayne's network and every inverse Baynes network is always a delta network and every delta network is always a Bayne's network, but reverse is not true. Every Bayne's network need not be a delta network and every delta network need not be inverse Baynes. Every delta network need not be inverse Baynes network. But some delta network can be Baynes network also. Every Baynes network is a delta network, but the reverse is not true all the time. Delta is superset of Baynes network. There Baynes is only one configuration, there is only one topology. In this case I can build many. In fact, there are always two topologies, which exist. I am only showing one of them, which is given in this paper. There is another one, which is given by Pease and Lorry. We call them. They were two separate networks, but they were proven to be same equivalent networks. So, in fact, honestly speaking, I can just change these maps. Based on that, I can create what we call all permutations, which can be configured. Permutation is what? Permutation is I am taking this eight inputs and this eight outputs. I can create permutation or connections between them. One permutation, for example, is I can connect 0 0 0 to 0 0 0. So, this path is occupied. How many simultaneous connection maps can be done? Now, it is very important. I cannot connect from 1 to 1. That is not possible in the permutation because 1 to 1, there is no other path, which exist. So, the one permutation is 0 to 1. So, 1 to say you will be going to put 4. So, remember, in this case 0 to 0, 1 to 1 is not permitted. So, there are all possible combinations, which can happen. So, this is one permutation, specific permutation of the switch, which I am writing now. So, one of the most important, I think, observations should I cannot create a map from 0 to 0, 1 to 1, 2 to 2, 3 to 3, 4 to 4, 5 to 5. This possible combination cannot be created. Sir, 0 to 1 is not possible. Can you create 1 to 1 at the same time? This whole is one single set of permutation. This permutation actually is not at all possible in this configuration. That is only a connection. Now, can I create this whole set of interconnection? It is possible. This particular permutation is not possible. Total, how many permutations, which can exist in this switch? In anybody guess? No, it cannot be 80 square. How you come to 80 square? There are 8 input ports, 8 output ports. With every input port, I can associate any one of the output ports. I associate each one of them with one. 8 factorial. 8 factorial is the correct answer actually, because this guy can be corrected from any one of them, but once the connection is made, next I can only be connected from the remaining ones actually, and so on. So, it has to be 8 factorial. And how many permutations, this is a permutation between input and output ports. How many permutations are supported by this switch? Let us see if you can guess it. Every elementary 2 by 2 switch has only how many permutations? 2. How many 2 by 2 elements are there? 4. So, how many total permutations are possible? 24. No, it cannot be 24. You should not add them. It is 2 raise power 12. See, each one of them can be independently put in cross and bar state. See, this has two possible options, cross of bar. This has cross and bar. There is exactly unique path. So, 2 into 2 into 4 into 2 something, you put 2 raise power 12. So, exactly 2 raise power 12 unique combinations of maps, which can be generated from input to output. So, minus 1 we have to do for this. For. For extending that set. Which set? This mapping 0 to 0, 1 to 1. That can be created here. I am not saying that cannot be done. In this particular do a structure, it cannot be done. Inverse bins. But I can even do a jugglery there and do it actually. I am showing only three maps here. I can create another map here without a switch and then I can even create that. Now, which one of the number is larger? Intuition at least. 2 raise power 12 is larger. 2 raise power 12 is larger. Is it possible? But this is I think immediately by intuition you know because all possibilities have been taken care of here. So, this can either be smaller or can be only be equal. But this settle is not equal. It has to be always smaller and is a smaller by very very large number not very small. You can verify this actually if you wish. You expand this, find out how many 2s come in this factors and then compute how many whether 2 power 12 is higher or smaller. In fact, you lose a large number of permutations are not permitted in this case. In fact, the switch configurations are pretty tricky in the sense that one particular switch, one which is given here. This covers up certain set of permutations. What is the difference between these two? Those many possible delta network configurations that does exist. Difference. Difference. Not difference. It is actually bannier networks which exist not because I have not looked into the no even in delta network those many possible delta networks are exist which are different from each other which are non equivalent of each other actually whatever is the gap. But we do not know all of them that is a problem. So, people using their own mathematical properties are built. So, this is one of them. So, I am asking a question how many possible such networks exist? My question is this. So, this has to be because I am not covering all permutations. A switch can only cover these many permutations. So, whatever is the difference those many necessarily delta network configurations must be existing and so many of them are unknown. So, you can do your PhD by finding out the ones which are not known theoretically. So, this is one of them actually. There is another one which is given here in this. See everything is very simple mathematics all 11, 12 class kind of stuff. So, this is another one which is drawn here and the problem is that for a 2 by 2 8 by 8 you have done all the research. Who will do for 16 by 16? Then who will do for you can I can use a 3 by 3 basic element. So, the problems are actually very pretty large. So, people try to just build up only what you call formalisms here not the specific problem. So, this one I am actually drawing from here. This will be good exercise for you people too. So, I am just drawing it slightly uniquely I think you must be able to appreciate this. Now, are these two equivalent? The second interconnection is same look at the between first and second stage. Now, whether you can prove it is same or not you have to tell me, you tell me. See this is all graphic, you just by visualization you should be able to pick it up. See otherwise you cannot build up the mathematics of equivalence. Look at the map. Anybody so far is able to figure out what is the property which a delta network should follow. Again it is a whole matter of observation that is true that is a banyan network. So, that is actually precondition that none of these input ports has to be left open none of the output ports of the middle stages have to be left open all output ports of the last stage has to be left open none of the inputs for the first stage all inputs have to be left open not the outputs and there has to be exactly one path from every input to every output. It should be possible to connect every input to every output by exactly one path that is a banyan network. But for building up a delta network if you carefully observe the key factor I can do a for example, electric here I just change this. Now, is it a delta network? I have broken the rule. Now, output state is still standard, but the tag value is not going to be same for the same output. It will be different at different inputs. Now, why it happened? There is a rule which I am following I have broken that rule. The rule is all inputs for a switch in a stage should come from the same output level number of the previous stage. Earlier I was getting both the inputs from one one. Now, I am getting one from one another one from zero I have broken this rule. See, what is happening is earlier when I was connecting this to this this was one and this was one. And if you again think I think you should be able to appreciate why this rule is important because uniqueness cannot be maintained if this rule is not there. Because for coming to this particular switching element here I require zero in the D3 and here I require one which actually itself will make the output tags different for the same outgoing port because this is connected to same outgoing ports. They have to be same and that is a fundamental property of the delta network. Create any dimensions this rule have to be followed. Banyan network this now is a banyan network it is not a delta network anymore. It is a banyan network.