I understand the principle of collision domains and how they are issues in hubs. I also get how switches are actually creating its own collision domain on each port. Therefore Port to Port communication creates a collision domain and takes care of collisions. It is all find and dandy here. What about the situation when I have two switches -- let's assume 48 ports each, daisy-chained together? What will happen when 48 ports on switch1 will receive transmissions at the same time and need to resend it to 48 ports on switch2? I assume that all 48 signals should be transferred over the SINGLE daisy-chain link. Will that one link introduce ONE collision domain for all 48 ports? I logically assume that it won't, but I don't understand how.
-
2Typically, modern PCs and switches use full duplex connections, so there are no collisions. You seem to allude to a bandwith overload on a switch uplink, and that is a completely different discussion.– Ron Maupin ♦May 8, 2015 at 18:11
-
Yes, full duplex on single collision domain (port to port) therefore it is sending and receiving on different wires in the jack. But daisy chain groups all ports into one link, right? So how the layer one bits are not colliding when signal is moved from switch to switch?– AndrewMay 8, 2015 at 18:37
-
2Properly configured and connected full duplex connections mean that there are NO collisions. You seem to mean a bandwidth overload, and that is a completely different question.– Ron Maupin ♦May 8, 2015 at 20:23
5 Answers
If all 48 ports attempt to TX to the same "port" at the same time, it will most likely overrun the internal buffer space and "no buffer" (in cisco circles) drop the frame(s). As this is all at layer-2, no error is communicated to anyone; the frames just don't get there.
(This is all part of the store-and-forward processing of switches.)
I also get how switches are actually creating its own collision domain on each port.
That depends, if the links are running in full duplex mode then there is no collision domain, collisions simply can't happen.
What will happen when 48 ports on switch1 will receive transmissions at the same time and need to resend it to 48 ports on switch2?
Switch 1 will store the received frames in it's buffer. If too many frames are received to store in the buffer then frames will be dropped.
There were attempts to add flow control to Ethernet, when a buffer filled up "pause frames" would be sent back in the opposite direction to suppress data transmission until there was enough buffer space to accommodate it. Unfortunately this could often cause more problems than it solved. A congested link would trigger flow control, this would then cascade back towards the source of the traffic, even if the links in question were not congested.
-
It should be noted flow control would not help in this situation - 48 frames are thrown at the switch at the same time from independent ports, there's no opportunity for a pause frame. (the switch could send a pause, but the already in-flight frames will continue to serialize.) A decent switch should have enough buffer space to store more than one frame per port. (1500 * 48 is ~72k.)– RickyOct 12, 2022 at 20:16
Back all the way up to the premise of the question. A collision, as it were, can only happen in a half duplex situation when "the wire" is common to both receive and transmit, and both sides try to transmit at once making the output from the wire unusable. So, even between two PCs attached to the same switch that communicate with each other, the two ports are not a collision domain as long as both hosts are linked at full duplex. If two hosts do happen to be both half duplex, then there is a collision domain between the switch and the host, which will be arbitrated by the efficacy of the carrier sense logic of each.
I also get how switches are actually creating its own collision domain on each port.
That is only true for ports running in half-duplex mode, ie. ports linked to hubs or other partners with no full-duplex capability.
Full-duplex communications is collision-free, generally.
Therefore Port to Port communication creates a collision domain and takes care of collisions.
Port-to-port meaning the switch port and its link partner. There is no collision domain between ports on the same switch.
What will happen when 48 ports on switch1 will receive transmissions at the same time and need to resend it to 48 ports on switch2?
All ingress frames are added to the egress queue of the port linked with switch2. The frames are then sent as fast as the link permits. The switches should have negotiated full-duplex mode, so no collisions can happen.
If the port's queue cannot accommodate all frames at the same time, the excess is dropped and lost.
I assume that all 48 signals should be transferred over the SINGLE daisy-chain link.
Switches forward frames, ie. data-link-layer datagrams. Signals (between interfaces) belong to the physical layer and are irrelevant here.
Will that one link introduce ONE collision domain for all 48 ports?
No. Switch ports are switched internally, without collisions happening anywhere. Collisions can only happen externally, and only on half-duplex ports. In any case, any collision domain ends on the switch.
Switches basically use store and forward: on each link, any incoming frame is stored, its destination address is looked up, internally queued to the destination port and then forwarded out when the destination port is free.
Storing frames temporarily within a buffer removes the need to propagate collisions between switch ports. Also, buffering enables switches to receive and transmit on any ports simultaneously, without dependencies (as long as its internal forwarding and buffer capacities aren't exceeded). That in turn enables full-duplex communication, removing collisions between a switch and its link partner. All collision sources removed, the network is collision free.
You should also note that half-duplex communication is all but extinct. For Gigabit Ethernet, half-duplex mode was defined by IEEE but failed to be implemented. For all faster variants, half duplex was dropped altogether and full duplex is the only mode.
Frames are passed over Ethernet. A single broadcast frame is all that is required to tell switch 2 to propagate the broadcast to all of its 48 access ports, not 48 individual frames.
Is that what you were looking for?
-
1
-
Right << What will happen when 48 ports on switch1 will receive transmissions at the same time and need to resend it to 48 ports on switch2? >>. In this case the uplink port between the source switch and the destination switch will transmit all 48 frames at near the speed of light. Virtually instantly. Right? May 8, 2015 at 22:47
-
S1 Port A sends to a port on S2, repeat for every port. He said NOTHING about broadcast. This is the very situation for which buffers and queues exist. Many switches do have the buffer space to handle this, but it's close to the limit. In the case of broadcast, it's much simpler as it will just be a single frame copied to every port instead of a full 48x48 matrix pushed into a single channel.– RickyMay 9, 2015 at 2:41