throbber
I 1111111111111111 11111 111111111111111 111111111111111 IIIII 111111111111111111
`US007403521B2
`
`c12) United States Patent
`Saxena
`
`(IO) Patent No.:
`(45) Date of Patent:
`
`US 7,403,521 B2
`Jul. 22, 2008
`
`(54) MULTICAST AND BROADCAST
`OPERATIONS IN ETHERNET SWITCHES
`
`(75)
`
`Inventor: Rahul Saxena, Sunnyvale, CA (US)
`
`(73) Assignee: Intel Corporation, Santa Clara, CA
`(US)
`
`( *) Notice:
`
`Subject to any disclaimer, the term ofthis
`patent is extended or adjusted under 35
`U.S.C. 154(b) by 828 days.
`
`(21) Appl. No.: 10/004,765
`
`(22) Filed:
`
`Dec. 3, 2001
`
`(65)
`
`Prior Publication Data
`
`US 2003/0103517 Al
`
`Jun. 5, 2003
`
`(51)
`
`Int. Cl.
`H04L 12128
`(2006.01)
`(52) U.S. Cl. ........................ 370/390; 370/412; 370/432
`( 58) Field of Classification Search . ... ... ... ... .. .. 3 70/230,
`370/389-390,392,400,412-414,419-421,
`370/422-423,428--429,431-432
`See application file for complete search history.
`
`(56)
`
`References Cited
`
`U.S. PATENT DOCUMENTS
`5,410,540 A * 4/1995 Aiki et al. ................... 370/390
`
`5,548,588 A *
`5,646,886 A *
`5,915,097 A
`6,272,567 Bl *
`6,574,194 Bl*
`6,724,761 Bl *
`6,751,219 Bl*
`2005/0041579 Al*
`* cited by examiner
`
`....... 370/395.7
`8/1996 Ganmukhi et al.
`7/1997 Brahmbhatt ........... 365/185.16
`6/1999 Chao ..................... 395/200.68
`8/2001 Pal et al ........................ 710/56
`6/2003 Sun et al. .................... 370/235
`4/2004 Moy-Yee et al. ............ 370/390
`6/2004 Lipp et al.
`.................. 370/390
`2/2005 Medina et al.
`.............. 370/229
`
`Primary Examiner-Huy D. Vu
`Assistant Examiner-Jason Mattis
`(74) Attorney, Agent, or Firm-Kacvinsky LLC
`
`(57)
`
`ABSTRACT
`
`A switch and a process of operating a switch are described
`where a received data frame is copied one or more times into
`a memory before being transmitted out of the switch. The
`switch and method determine how much space in the memory
`is needed to store all of the copies of the received data frame
`and then the switch and method determine locations in the
`memory for storing the copies of the received data frames.
`The copies of the received data frame are stored until the ports
`designated as transmitting the copies of the received data
`frame are ready. When a port is ready, a copy of the received
`data frame is read out of the memory and the port is instructed
`where to locate the copy on a bus. When the port has retrieved
`the copy of the data frame, it transmits the data frame out of
`the switch.
`
`25 Claims, 10 Drawing Sheets
`
`100
`
`/
`
`110b
`
`110a
`
`MEMORY
`
`105c
`
`110c
`
`105d
`
`110d
`
`Ex.1028
`VERIZON / Page 1 of 17
`
`

`

`U.S. Patent
`
`Jul. 22, 2008
`
`Sheet 1 of 10
`
`US 7,403,521 B2
`
`100
`
`/
`
`110b
`
`PORT
`
`130a
`OCLC
`
`!
`
`~ CCSLC
`
`PORT
`
`MEMORY
`
`110a
`
`115c
`
`125
`
`1k
`t
`
`105c
`
`PORT
`
`110c
`
`OCLS 130c
`
`1 - - - - - - - - - 1
`
`-~77
`-+- rr=
`PORT
`
`OCLC
`130d
`
`105d
`
`110d
`FIG. 1
`
`Ex.1028
`VERIZON / Page 2 of 17
`
`

`

`U.S. Patent
`
`Jul. 22, 2008
`
`Sheet 2 of 10
`
`US 7,403,521 B2
`
`110a
`
`r
`105a
`
`r115a
`
`r210
`
`CONTROL
`
`220
`j
`II
`l
`
`,
`,,
`
`220
`)
`r t
`l
`
`220
`J
`
`J
`
`/
`
`1
`
`220
`rl
`' l
`
`V
`
`FIG. 2
`
`"-FROM C CLSC
`ND
`120A
`30a
`OCLC 1
`
`(',
`
`115c
`
`Ex.1028
`VERIZON / Page 3 of 17
`
`

`

`U.S. Patent
`
`Jul. 22, 2008
`
`Sheet 3 of 10
`
`US 7,403,521 B2
`
`CCSLC
`
`115a
`
`120
`
`315
`
`COPIER
`
`305
`
`310
`
`MEMORYl-4---......i
`
`CONTROLLER I - - - - - - - '
`
`TO/FROM OCLC
`FIG. 3
`
`115b
`
`150
`
`Ex.1028
`VERIZON / Page 4 of 17
`
`

`

`U.S. Patent
`
`Jul. 22, 2008
`
`Sheet 4 of 10
`
`US 7,403,521 B2
`
`TO CONTROLLER 310
`
`405
`
`305 r
`
`410
`
`READ
`
`WRITE
`
`CELL
`ARRAY
`
`CHANNEL
`DECODER
`
`FROM
`CONTROLLER
`310
`
`SEGMENT DECODER
`
`FROM CONTROLLER 310
`FIG. 4a
`
`420
`
`~ - - - -S
`WRITE
`
`OUT - - - -
`
`~ - - - -R ENABLE
`READ
`
`FIG. 4b
`
`CHANNEL DECODER
`
`SEGMENT DECODER
`
`Ex.1028
`VERIZON / Page 5 of 17
`
`

`

`U.S. Patent
`
`Jul. 22, 2008
`
`Sheet 5 of 10
`
`US 7,403,521 B2
`
`550
`115b
`----'-----------~DNA
`WE
`
`64
`BYTES
`
`RE
`
`115c
`
`555
`DATA
`WE
`1--'1"-------l RE
`
`64
`BYTES
`
`560
`
`150
`
`DECODER
`
`READ WRITE
`FIG. 5
`
`Ex.1028
`VERIZON / Page 6 of 17
`
`

`

`U.S. Patent
`
`Jul. 22, 2008
`
`Sheet 6 of 10
`
`US 7,403,521 B2
`
`310
`
`605
`
`620
`
`ARBITER
`
`FROM
`MEMORY
`305
`
`605a
`
`HEADER
`DATA
`
`610
`
`CHANNEL
`AVAILABILITY
`
`SIZE CONVERTER
`SIZE ADD/ PORT
`RES.
`DET.
`ADJUSTER
`
`SEGMENT
`AVAILABILITY
`
`605c
`
`615
`
`Ab~Ss
`
`GENERATOR
`
`625
`
`TO MEMORIES
`125AND 305
`
`TOOCLCs
`
`TO MEMORIES
`125AND 305
`
`FROMOCLCs
`FIG. 6
`
`Ex.1028
`VERIZON / Page 7 of 17
`
`

`

`U.S. Patent
`
`Jul. 22, 2008
`
`Sheet 7 of 10
`
`US 7,403,521 B2
`
`105b
`
`110b
`
`PORT
`
`700
`
`I
`
`115c
`
`~
`
`~
`
`720
`
`125
`
`150
`
`t
`
`11 Oc
`
`MEMORY
`
`PORT
`
`t
`
`105c
`
`115a
`
`•
`
`t
`
`110a
`
`PORT
`
`105a
`
`t
`
`PORT
`
`105d
`
`FIG. 7
`
`Ex.1028
`VERIZON / Page 8 of 17
`
`

`

`U.S. Patent
`
`Jul. 22, 2008
`
`Sheet 8 of 10
`
`US 7,403,521 B2
`
`800
`,J
`
`805
`
`810
`
`815
`
`820
`
`825
`
`830
`
`835
`
`840
`
`845
`
`RECEIVE DATA
`FRAME
`
`EXTRACT HEADER
`INFORMATION
`
`DETERMINE# OF
`PORTS TO
`TRANSMIT
`
`DETERMINE SIZE
`OF DATA FRAME
`
`DETERMINE
`NEEDED SPACE
`IN MEMORY
`
`DETERMINE
`EMPTY LOCATIONS
`IN MEMORY
`
`SELECT
`ADE~UATE
`MEMORY OCATION
`
`STORE COPIES
`OF DATA FRAME
`
`STORE LOCATION
`DATA
`
`END
`
`850
`FIG. 8
`
`Ex.1028
`VERIZON / Page 9 of 17
`
`

`

`U.S. Patent
`
`Jul. 22, 2008
`
`Sheet 9 of 10
`
`US 7,403,521 B2
`
`935
`
`SELECT MULTIPLE
`ASSOCIATIONS
`
`900 i
`
`N
`
`915
`
`READ DATA
`FRAMES
`
`920
`PORT(S) SELECT
`DATA FRAMES
`FOR OUTPUT
`
`925
`
`END
`
`y
`
`930
`
`INSTRUCT ONE
`..._____ CONFLICTING PORT
`TO WAIT
`
`FIG. 9
`
`Ex.1028
`VERIZON / Page 10 of 17
`
`

`

`U.S. Patent
`
`Jul. 22, 2008
`
`Sheet 10 of 10
`
`US 7,403,521 B2
`
`NO.OF
`COPIES
`
`1005
`
`1015
`
`1020
`
`1010
`
`COPIES
`
`TO
`PORTS
`
`2
`2
`2
`2
`
`t
`
`SEGMENT9
`
`\.
`
`y
`FIG. 1 Oa
`
`SEGMENT
`\.
`
`)
`
`N
`N
`0
`0
`
`9
`
`M
`M
`
`t
`
`8
`
`t
`y
`FIG. 1 Ob
`
`TO
`PORTS
`
`J
`
`SEGMENT
`
`5
`
`4
`
`'---------- ______ _.,)
`"Y"
`FIG. 1 Oc
`
`3 2
`
`2 1
`
`Ex.1028
`VERIZON / Page 11 of 17
`
`

`

`US 7,403,521 B2
`
`1
`MULTICAST AND BROADCAST
`OPERATIONS IN ETHERNET SWITCHES
`
`TECHNICAL FIELD
`
`2
`is to retransmit the data frame. Since only one of the multiple
`channels is accessed at a time, the useful bandwidth of an SAF
`switch decreases when multicasting or broadcasting data
`frames.
`
`This invention relates to forwarding data frames through a
`switch, and more particularly to routing data frames for effi(cid:173)
`cient multicast and broadcast operations in Ethernet switches.
`
`BACKGROUND
`
`DESCRIPTION OF DRAWINGS
`
`10
`
`FIG. 1 is a block diagram of a switch.
`FIG. 2 is a block diagram of a port of the switch of FIG. 1.
`FIG. 3 is a block diagram of a copier, channel select logic
`circuit of the switch of FIG. 1.
`FIG. 4a is a block diagram of a memory circuit in the
`copier, channel select logic circuit of FIG. 3.
`FIG. 4b is a block diagram of a cell of the memory circuit
`15 of FIG. 4a.
`FIG. 5 is a block diagram of a main memory circuit of the
`switch of FIG. 1.
`FIG. 6 is a block diagram of a controller circuit of the
`copier, channel select logic circuit of FIG. 3.
`FIG. 7 is a block diagram of another switch.
`FIG. 8 is a flow chart of a process for storing copies of a
`received data frame for the switches shown in FI GS. 1 and 7.
`FIG. 9 is a flow chart of a process for reading stored copies
`ofa received data frame for the switches shown in FI GS. 1 and
`25 7.
`
`Some switches, such as Ethernet switches, receive data
`frames at one or more ports. A data frame is an organized
`format of control or header data and payload data. The header
`data typically include fields such as the source address of the
`device transmitting the data frame, the destination address or
`addresses to which the data frame is being transmitted,
`length/type data indicating the length of the data frame as well
`as the data type of the payload data, and a frame check
`sequence field used as a form of error checking in verifying 20
`receipt of the data frame by the destination device. The con(cid:173)
`trol data are overhead that are used to assure that the payload
`data arrive at the destination device.
`The payload data are the data of interest that are sent to the
`destination device. Examples of payload data include pixel
`data for image rendering, audio data, text data and control
`data ( e.g., commands requesting that the destination device
`transmit information back to the original source device).
`In some network implementations, data frames may have
`different sizes. For example, in a typical Ethernet network, 30
`frame size may vary from a minimum of 64 bytes to a maxi(cid:173)
`mum of 1,518 bytes. In general, forwarding received data
`frames from a switch includes one of three methods: unicast,
`multicast and broadcast. A unicast transmission employs a
`one-to-one correspondence between the source device and 35
`the destination device such that the data frame output by a
`source device will only be received and used by a single
`destination device. A multicast transmission employs a one(cid:173)
`to-many correspondence such that a single source device
`transmits a data frame for receipt and use by multiple desti- 40
`nation devices. A broadcast transmission employs a one-to-
`all correspondence such that a single source device transmits
`a data frame to all destination devices on a particular network
`to which the source device is connected.
`A switch receives data frames and forwards them to output
`ports for retransmission to other switches or destination
`devices. In some switches, a memory is employed to tempo(cid:173)
`rarily store a received data frame until the needed port
`becomes free to output that data frame. These types of
`switches may be referred to as store-and-forward (SAF) 50
`switches.
`Memory bandwidth usage can be inefficient as some of the
`memory bandwidth is not used when storing smaller data
`frames. To compensate for this, a memory is divided into
`independently addressable channels. This allows for smaller 55
`data frames to be stored in particular channels, which results
`in more efficient use of memory and increased throughput.
`That is, different channels may be accessed independently for
`reading or writing data frames. By dividing a large memory
`into channels, the overall speed, or useful bandwidth ( data 60
`frame width multiplied by the memory access frequency), of
`a switch increases. By increasing the useful bandwidth of the
`internal hardware, additional ports may be supported without
`unnecessarily increasing the size of the memory.
`When using an SAF switch to multicast or broadcast data 65
`frames over the network, a particular data frame may be read
`from memory multiple times, such as once for each port that
`
`FIGS. 10a, 10b and 10c are representations of data stored
`in the switches of FIGS. 1 and 7.
`Like reference symbols in the various drawings indicate
`like elements.
`
`DETAILED DESCRIPTION
`
`As showninFIG.1, a switch l00has four ports 105a-105d.
`Ports 105a-l 05d are circuits may include hardware, software,
`firmware or any combination thereof. The ports 105a-105d
`are coupled to four buses ll0a-ll0d respectively, and are
`used to transmit data from and receive data into switch 100.
`Ports 105a-105d and buses 11 0a-11 0d are full duplex in that
`they can transmit and receive data simultaneously. In one
`implementation, switch 100 is an Ethernet switch.
`A receiving bus 115a and a transmitting bus 115c are
`coupled to ports 105a-105d. Receiving bus 115a forwards
`received data frames from ports 105a-105dto a copier, chan(cid:173)
`nel select logic circuit (CCSLC) 120. An intermediate bus
`45 115b forwards received data frames from CCSLC 120 to
`main memory 125, and a bus 150 forwards address data to
`main memory 125 for use in storing the received data frames.
`The transmitting bus 115c forwards data frames stored in
`main memory 125 to ports 105a-105d. Interspersed in switch
`100 are four output control logic circuits (OCLCs) 130a-130d
`that are associated with ports 105a-105d, respectively.
`CCSLC 120 is coupled to the four OCLCs 130a-130d and
`main memory 125 through control signal paths. It should be
`noted that a logic circuit may include gates, hardware, soft(cid:173)
`ware, firmware or any combination thereof.
`Memory 125 includes channels and segments. A channel is
`a portion of the total width of a memory unit. A segment is an
`individually addressable collection of channels (e.g., a seg(cid:173)
`ment may include four channels). A location is a part of
`memory that is addressable by both a channel address and a
`segment address.
`In general, the switch 100 receives data frames on buses
`ll0a-11 0d at ports 105a-l 05d. The received data frames then
`are forwarded to CCSLC 120 using receiving bus 115a.
`CCSLC 120 determines how many copies of the received data
`frame are needed for broadcast or multicast operations, cop(cid:173)
`ies the received data frame, and determines particular loca-
`
`Ex.1028
`VERIZON / Page 12 of 17
`
`

`

`US 7,403,521 B2
`
`4
`3
`tions in main memory 125 for storing the copies of the
`signals indicate that data is being loaded into the correspond(cid:173)
`received data frame. OCLCs 130a-130d determine when to
`ing portion of memory 125, and is set to zero when the read
`output the stored copies of the data frame over buses ll0a(cid:173)
`signal is asserted and the decoder signals indicate that data is
`ll0d through ports 105a-105d based upon control data
`being read from the corresponding portion of main memory
`received from CCSLC 120.
`5 125. The cell 420 may be further configured to produce an
`As shown in FIG. 2, exemplary port 105a contains control
`output only when the enable signal is asserted so as to permit
`circuit 210 and multiplexers 220. Exemplary port 105a
`the controller to poll the memory 305 to detect cells having
`receives a data frame on transmitting bus 115c for forward(cid:173)
`values indicative of available portions of main memory 125.
`ing. The data frame received on transmitting bus 115c is
`An exemplary main memory 125 may have four channels,
`extracted from transmitting bus 115c by multiplexers 220.
`10 each of which is 64 bytes wide, and sixteen segments. This
`Control circuit 215 exchanges control signals with CCSLC
`means that main memory 125 can store 64, 64-byte data
`120 and OCLCs 130a-130d.
`frames (one in each channel in each segment), sixteen, 256-
`As shown in FIG. 3, CCSLC 120 includes memory 305
`byte data frames ( one spanning all four channels in each
`coupled to a controller 310. The controller 310 is coupled to
`segment), or other combinations.
`a copier circuit 315 that receives incoming data frames on 15
`FIG. 5 shows a pair of exemplary cells 550, 555 in main
`receiving bus 115a and outputs a number of copies of the
`memory 125 that each store 64 bytes. Each cell represents one
`incoming data frames onto intermediate bus 115b. The
`location in main memory 125 (i.e., one channel of one seg(cid:173)
`incoming data frames on receiving bus 115a contain header
`ment). A decoder 560 uses the address bus 150 to generate
`data and payload data. The output data frames on intermedi(cid:173)
`signals that are combined with read and write signals to
`ate bus 115b are exact copies of the data frames received on
`20 enable writing to and reading of a particular one of cells 550,
`555. It should also be noted that any type of data randomly
`receiving bus 115a and, accordingly, also include header data
`and payload data.
`accessible, writeable storage device. Examples include
`As described earlier, exemplary header data may include at
`RAM, SRAM, DRAM, RDRAM and SDRAM.
`least the destination address of the data frame and the length
`When a data frame is received, a determination is made as
`of the data frame. Controller 310 uses the destination address 25
`to which portion of main memory 125 is to store the received
`and length data fields to determine how many copies of the
`data frame. The received data frame then is copied onto bus
`115b and the address bus 150 is used to identify one or more
`received data frame are required and where in main memory
`125 to store those copied data frames. The controller 310
`appropriate cells. The appropriate cells are activated by a
`forwards addresses on address bus 150 to identify locations in
`combination of a signal from the decoder 560 and a write
`main memory 125 to be used. In addition, the controller 310 30
`enable signal from the controller 310. Similarly, a stored data
`generates control signals that are sent to OCLCs 130a-130d
`frame is forwarded onto bus 115c by signals on the address
`bus 150 identifying the appropriate cells. The cells are acti(cid:173)
`and used to determine which data frames to read out from
`main memory 125 and at what time to transmit those data
`vated by a combination of a signal from the decoder 560 and
`a read enable signal from the controller 310.
`frames.
`Memory 305 is used to track locations in main memory 125 35
`As shown in FIG. 6, an exemplary controller 310 includes
`a size converter circuit 605, a channel availability circuit 610,
`that are available to accept copies of received data frames.
`Memory 305 can be any suitable digital storage device. In one
`a segment availability circuit 615, an arbiter circuit 620, and
`implementation, memory 305 is a volatile memory that can be
`a frame address generator 625. Size converter circuit 605
`accessed quickly for both reading and writing. The size of
`receives a portion of the header data from a data frame on
`memory 305 correlates with the size of main memory 125.
`40 receiving bus 115a. Size converter 605 includes a size deter(cid:173)
`As shown in FIG. 4a, an exemplary memory 305 may
`miner circuit 605a, an address/port resolver circuit 605b, and
`include an array of memory cells 405, a channel decoder 410
`an adjuster circuit 605c. Channel availability circuit 610
`and a segment decoder 415. In one implementation, array 405
`receives all of the bits stored in memory 305 as inputs. In the
`exemplary circuit shown in FIG. 6, memory 305 outputs 64
`is four bits wide and sixteen bits long. This correlates to main
`memory 125, which has four channels and sixteen segments. 45 bits. Segment availability circuit 615 receives output data
`Each cell in array 405 holds a single bit and correlates to a
`from size converter circuit 605 and channel availability cir(cid:173)
`cuit 610. Arbiter circuit 620 receives output data from size
`particular channel in a particular segment of main memory
`converter circuit 605, channel availability circuit 610 and
`125. If a particular cell in memory 305 currently stores a 1-bit,
`segment availability circuit 615. Frame address generator 625
`that is an indication that the corresponding channel of the
`50 receives signals from OCLCs 130a-130d and outputs signals
`corresponding segment of main memory 125 contains valid
`to main memory 125 and memory 305.
`frame data and cannot presently accept a new data frame.
`Alternatively, if a particular location in memory 305 currently
`Size converter circuit 605 receives the size data of the data
`frame being transmitted on receiving bus 115a. Size data are
`stores a 0-bit, that is an indication that the corresponding
`channel of the corresponding segment of main memory 125
`extracted from the header data for a frame.
`Since main memory 125 is divided into discrete channels,
`contains invalid frame data, (i.e., it is empty) and can pres- 55
`ently accept new data.
`a determination is needed as to how many channels are
`Each cell in array 405 is individually addressable through
`required to store one copy of the received data frame.Using a
`channel decoder 410 and segment decoder 415, which receive
`maximum data frame width of 256 bytes, a standard binary
`control signals from the controller 310. The cells also may be
`encoding technique requires an 8-bit word to indicate the size
`60 of the data frame. Size converter circuit 605 takes the 8-bit
`addressable by row or column in another implementation.
`As shown in FIG. 4b, each cell 420 of array 405 may be
`word for a particular frame and generates an output indicative
`implemented as an S-R flip flop that is enabled by a combi(cid:173)
`of how many channels of a single segment in main memory
`125 are required to store the frame. As an example, if the data
`nation of the appropriate channel decoder and segment
`frame on receiving bus 115a is 17 6 bytes wide, size converter
`decoder signals. The set input of the flip-flop is connected to
`circuit 605 generates an output signal indicating that this data
`a write signal, and the reset input is connected to a read signal. 65
`Thus, the value of the cell is set to one when the write signal
`frame requires three channels ( each of which is 64 bytes
`wide) of the segment.
`is asserted and the channel decoder and segment decoder
`
`Ex.1028
`VERIZON / Page 13 of 17
`
`

`

`US 7,403,521 B2
`
`5
`
`5
`Address-port resolver circuit 605b receives at least the
`destination address( es) from the header, and uses this data to
`produce an output indicative of which ports 105a-l 05d are to
`transmit the received data frame. The output of the address(cid:173)
`port resolver circuit 605b is used to control operation of other
`parts of switch 100 so as to produce the correct number of
`copies of the received data frame and routing of the copies of
`the received data frame to the proper port or ports.
`Adjuster circuit 605creceives the output from size deter(cid:173)
`miner circuit 605a and the output from address-port resolver
`circuit 605b and generates an output indicative of the number
`of segments needed to store the number of copies of the data
`frame. For example, if a 128-byte received data frame is to be
`broadcast through all four ports, such that four copies of the
`received data frame are to be stored in main memory 125, the
`adjusted 605c will indicate that the data frame is to be stored
`in at least two segments, with each copy being stored in two
`channels of a segment.
`Channel availability circuit 610 receives the outputs from
`memory 305 and determines where there are vacant channels.
`This is accomplished using logic gates or the like to determine
`sets of zeroes in a segment of memory 305. That is, channel
`availability circuit 610 determines if there are any single
`zeroes, pairs of zeroes, triples of zeroes or quads of zeroes.
`The results are output to segment availability circuit 615 and
`arbitrator circuit 620. Depending on the design of channel
`availability circuit 610, it may only register availability if
`contiguous channels in a segment are vacant or it may register
`availability if the proper number of channels is available
`regardless of contiguousness.
`Arbitrator 620 selects the channel(s) and segment(s) to
`receive the copies of the input data frame. Typically, main
`memory 125 will have multiple locations that are available to
`receive the copies of the input data frame. As an example, if
`switch 100 receives a 64-byte data frame for which only one
`copy is needed, and main memory 125 is empty, there are 64
`locations that can accept this data frame. Arbitrator 620
`selects one location from the available pool of 64 locations.
`Each OCLC stores data that are in turn used to determine
`when each port is to receive and output a stored data frame. In 40
`one implementation, each OCLC receives a code word that
`translates to one or more locations in main memory 125. This
`code word is stored in a queue. As the data are output from
`main memory 125 to the port associated with the OCLC, the
`code words stored in the queue are advanced. When a par(cid:173)
`ticular code word in the OCLC reaches the head of the queue,
`it is forwarded to frame address generator circuit 625.
`In the implementation shown having four ports, it is pos(cid:173)
`sible that two or more OCLCs will request data from the same
`channel or segment at one time. To avoid this collision of data
`from main memory 125, the frame address generator circuit
`625 arbitrates between the received code words.
`FIG. 7 shows an alternative switch 700 that includes a
`general processor 720. Like exemplary switch 100, switch
`700 includes four ports 105a-l 05d that are coupled with four 55
`external buses ll0a-ll0d and internal buses 115a-115c. Pro-
`cessor 720 is coupled with internal bus 115a and intermediate
`bus 115b. Memory 125 is coupled with internal buses 115b
`115c.
`The function and operation of most of the elements of
`exemplary switch 700 have been previously described and
`will not be repeated. One difference between exemplary
`switches 100 and 700 is the use ofa general purpose processor
`to perform the copying, the determining of acceptable
`memory locations to store the copies, and the outputting of
`data frames from memory 125 to ports 105a-105d for trans(cid:173)
`mission over buses ll0a-ll0d. Processor 720 contains
`
`6
`memory such as ROM or RAM (not shown) that holds the
`instructions used to control the operation of processor 720
`and therefore the operation of switch 700.
`FIG. 8 shows an exemplary process 800 for copying data
`frames into a memory. This process is initiated when the
`switch receives a data frame (step 805). The header informa(cid:173)
`tion, which contains at least destination information and
`frame size, is extracted from the data frame (step 810). From
`the destination information, the number of ports that are to
`10 output the data frame is determined (step 815) along with the
`size of the received data frame (step 820). From the numberof
`ports to output the data frame and the size of the received data
`frame, the minimum amount of memory necessary to store
`the copies of the data frame, with one copy for each port that
`15 is to output the data frame, is determined (step 825).
`Next, the empty locations in memory are determined (step
`830). In one implementation, the determination is made by
`storing I-bits and 0-bits in a separate memory, with the I-bits
`and 0-bits corresponding to full and empty locations, respec-
`20 tively, in the data frame memory, and polling this separate
`memory to locate an adequate concentration of0-bits empty
`locations to store the copies of the received data frame. Once
`all of the suitable locations in frame memory have been
`identified, one or more locations are selected to store the
`25 copies of the data frame (step 835). The copies of the data
`frame are then stored in the selected memory locations of the
`frame memory (step 840). Each copy of the data frame is
`associated with a port that will transmit that copy of the data
`frame and this association is stored along with the locations in
`30 frame memory of the copies of the data frame( step 845). The
`process then ends (step 845).
`FIG. 9 shows an exemplary process 900 for outputting data
`frames from a switch. The process begins when multiple
`associations are selected (step 905). In other words, every
`35 port of the switch is polled to determine if they have a data
`frame in frame memory that is ready to be transmitted. One
`exemplary method of performing this step is to store the
`associations in a queue and read them in a first-in-first-out
`(FIFO) order.
`With multiple ports requesting data from the frame
`memory at the same time, it is possible that a conflict may
`arise such that two ports will require data from locations that
`share a data output bus in the frame memory. Accordingly, a
`determination is made to see if there is a conflict (step 910). If
`45 there is no conflict such that every port that has data frames to
`output may do so simultaneously, then the data frames are
`read from the frame memory in parallel (step 915). The ports
`select the data frames that are to be output, based on the
`association described above, and output the selected data
`50 frames (step 920). The process then ends (step 925).
`If a conflict is determined (see step 910), then one of the
`ports that has a conflict is instructed to wait (step 930) and the
`remaining associations are checked again for a conflict (step
`910). At worst case, ports will be instructed to wait until only
`one port remains and then the remaining port will be able to
`retrieve and output its data frames freely (see steps 915-925).
`As shown in FIG. 10a, four data frames, each only a single
`channel wide, are stored in a segment 1005 of main memory
`in a conventional switch. The data frames are forwarded to
`60 copier 1010 where the necessary copies are made. In this
`example, two copies of each data frame are generated before
`the data frames are output to the ports. Since copier 1010 can
`only copy one data frame at a time, it follows that four read
`cycles are needed to output the four data frames L-O from
`65 Segment 9. It should be noted that if copier circuit 1010 were
`not present, the number of read cycles to output the four data
`frames shown increases to eight. It should also be noted that
`
`Ex.1028
`VERIZON / Page 14 of 17
`
`

`

`7
`if multiple data frames are not packed into a single segment,
`the use of the memory would be less efficient.
`In contrast, FIG. lOb, shows two segments, 1015 and 1020,
`which have multiple copies of data frames already in them, in
`accordance with the implementations described above. Due
`to the packing of all of the needed copies of the data frames
`into a single segment, the implementations described above
`will output the required Land M data frames in one read cycle
`and the N and O frames in another cycle. Assuming that there
`are no port collisions such as the L data frame and the M data
`frame being transmitted over the same port, the implementa(cid:173)
`tions described can transmit the needed data frames in half the
`time of conventional switches (i.e., in two read cycles).
`In one implementation, multiple segments of main
`memory 125 may be accessed simultaneously. This also pro(cid:173)
`vides increased efficiency. In FIG. 10c, the K and L data
`frames are read and transmitted first and the M data frames are
`read and transmitted second. Suppose that the arbitration
`circuit 620 or process places the N data frames and the O data
`frames in segments 4 and 5, respectively. If multiple segment
`access was not allowed, two read cycles would be needed to
`output the N data frames and the O data frame. However, in
`the implementation described above, multiple segment
`access is permitted and the N and O data frames can be read
`simultaneously if they do not have a port conflict.
`Another advantage of the described implementations over
`conventional switches is the ability to determine where there
`is adequate memory space in a segment to accept the data
`frame. In some implementations, the described circuit and
`process are systematic like a queue. In other words, the data
`frames are stored in main memory 125 as they are received
`and little packing of different frames into a single segment is
`done (i.e., each received data frame and its corresponding
`copies are stored in a single segment). However, in other
`implementations, the circuitry looks for available space and
`only arbitrarily selects channel(s) or segment(s) when a con(cid:173)
`flict arises. Thus, the data frames are not stored in a strict
`queue-like structure in main memory 125. Instead, the
`described implementations can pack different data frames or
`multiple copies of a data frame ( one per channel) into a single 40
`segment to allow for increased bandwidth when forwarding
`data frames over different ports in one read cycle.
`It should be noted that other details are implicit in the above
`descriptions. For instance, multiple ports are receiving data
`frames and attempting to have them stored in memory. In the
`exemplary circuit described above, two or more ports 105a-
`105d may attempt to simultaneously place a data frame on
`receiving bus 115a. This internal data collision can be
`avoided by implementing well-known techniques.
`In addition, most switches have error detection/correction.
`One example of an error is receiving only part of a data frame.
`Most switches, including those that implement circuits and
`techniques similar to those described above, will have error
`detection/correction techniques that will discard a received 55
`erroneous data frame and prevent it from being stored and/or
`transmitted in the network.
`Similarly, common error correction methods in broadcast
`and multicast situations may also be employed. For example,
`broadcast storms, where data frames are replicated and sent 60
`back and forth between two switches until there is no room for
`new data frames, can be avoided by using protocol techniques
`that will cause the excess data frames to be considered as error
`data frames and not copied nor forwarded.
`It should also be noted that the above discussion did not 65

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket