throbber
Case 4:17-cv-00141-ALM Document 17-2 Filed 05/19/17 Page 1 of 26 PageID #: 188
`
`Ulllted States Patent [19]
`Lawler et al.
`
`[54] HIGH SPEED CACHE MANAGEMENT UNIT
`FOR USE IN A BRIDGE/ROUTER
`[75] Inventors: Christopher P. LaWler, Wellesley;
`Shannon Q. Hill, Westford; David
`Lipschutz, Lexington; Thomas A.
`Radogna, Westborough; John A.
`Flanders, Ashland; Robert M, France,
`Littleton; Stephen L, Van Seters, Stow,
`all of Mass_
`
`[73] Assignee: 3Com Corporation, Santa Clara, Calif.
`
`[21] App]_ No; 08/927,336
`_
`Sep- 11, 1997
`Flled?
`[22]
`[51] Int. Cl? .................................................. .. H03M 13/00
`[52] US. Cl. ......................... .. 714/758; 370/392; 370/401
`5
`F, M f S
`h
`_
`[ 8]
`1e
`0 53512632
`/
`’
`
`’
`
`’
`
`’
`
`’
`
`’
`
`/5 ’
`18 '02
`
`[56]
`
`.
`References Cited
`
`U_S_ PATENT DOCUMENTS
`
`5:64Oj399
`5,708,659
`5,742,792
`
`sgflsi?et a1‘ """"""""""""" "
`370/232
`6/1997 Rostoker et a1‘
`370/392
`1/1998 Rostoker et al.
`4/1998 Yanai et al. ........................... .. 711/162
`
`US005978951A
`[11] Patent Number:
`[45] Date of Patent:
`
`5,978,951
`Nov. 2, 1999
`
`9/1998 Isfeld et al. ...................... .. 395/20079
`5,802,278
`Primary Examiner—Emmanuel L. Moise
`‘353mg,’ ‘352m’ Or F W m—Wemgarten’ Schurgm’ Gagnebm
`ayes
`[57]
`
`ABSTRACT
`
`A method and cache management for a bridge or bridge/
`router providing high-speed, ?exible address cache manage
`ment. The unit maintains a network address cache and an age
`table, searches the cache for layer 2 and layer 3 addresses
`from received frame headers, and returns address search
`results. The unit includes an interface permitting processor
`manipulation of the cache and age table, and supports a
`4-Way set associative cache to store the network addresses.
`A plurality of functions implemented in hardWare enables
`softwi‘fe manépula?on ‘if tthilass?atedfachegmgfcachg
`Opera mg Yno .65 are 56 6.6a. 6'
`e um can 1 en 1 y an
`select dest1nat1on ports W1th1n a Load Balanced Port Group
`for frame forWarding. The unit utilizes Virtual LAN identi
`?cation in conjunction With a MAC address for lookup in the
`cache. A cyclic redundancy code for each address to be
`looked up in the cache is used as an index into the cache. If
`a cache thrash rate exceeds a predetermined threshold, CRC
`table values can be reWritten. Four time-sliced cache lookup
`units are provided, each consisting of a cache lookup con
`troller for comparing a received netWork address to an
`address retrieved from an identi?ed cache set.
`
`26 Claims, 14 Drawing Sheets
`
`12A
`
`MOTHERBQARD
`
`A
`30
`
`FRAME
`PROCESSOR
`M
`
`V
`
`AGE
`TABLE
`
`A130
`
`N'C
`0
`14"‘NIM o
`100/‘ MC
`1
`
`7
`
`(
`
`[7112
`NETWORK
`[' INTFC INPUT
`
`REGISTER FlLE
`
`L NETWORK
`INTFC OUTPUT
`REGISTER FILE
`k
`L
`123
`124
`
`_
`
`—
`
`NlC
`2
`N|M1
`NIC
`
`3
`
`I
`I
`.
`| NIM 3 |
`NIC
`7
`
`PIO REGISTER +
`SETS
`r105 F108
`104.1
`‘7
`CRC LRU VLD
`_ 1_2O_ __
`ENG TBL TBL
`P116 1
`‘
`‘
`‘
`CACHE
`LOOKUP
`I
`PACKETIZATION
`'
`ENGINE
`QUEUE
`I
`114i
`|
`t
`{\122
`0118 '
`CACHE
`I
`OUTPUT
`‘
`T |
`PACKET
`T I
`ASSEMBLY
`@ LOOKUP 7 |
`:
`CONTROLLER
`I
`@LC?ElQOlQPEEU
`
`F _ _
`[
`I
`|
`|~>
`'
`I
`
`23
`F
`
`ADDRESS
`CACHE
`
`ACA
`
`p26
`
`

`

`Case 4:17-cv-00141-ALM Document 17-2 Filed 05/19/17 Page 2 of 26 PageID #: 189
`
`U.S. Patent
`
`Nov. 2, 1999
`
`Sheet 1 0f 14
`
`5,978,951
`
`wcmaxumm
`
`E8226:
`8%25
`08:95
`8%25
`9555
`
`xazwz
`x6262
`{262
`{0202
`
`2:82
`
`0:622
`
`2:82
`
`2:82
`
`3
`
`“3
`
`3
`
`~ 6H“
`
`

`

`Case 4:17-cv-00141-ALM Document 17-2 Filed 05/19/17 Page 3 of 26 PageID #: 190
`
`Case 4:17-Cv-00141-ALM Document 17-2 Filed 05/19/17 Page 3 Of 26 PagelD #: 190
`
`ADDRESS
`
`
`
`MOTHERBOARD
`
`
`
`APPLICATION
`
`FRAME
`
`FIG. 2 mamaSH
`
`
`
`
`BACKPLANE r
`
`—-IlI-Il--_—l—
`
`
`
`
`NETWORK
`
`INTERFACE
`
`
`r PROCESSOR fl
`PROCESSOR x
`CACHE @
`MASTER BUFFER
`ADDRESS I
`
`
`ASIC
`3_2
`CACHE ASIC 26‘
`- —
`
`
`
`6661‘z'AON
`
`171J0Z139118
`
`PROTOCOL
`
`TAgLE
`I
`53
`
`
`-
`RECEIVE FRAME
`RECEIVE HEADER
`PROCESSOR "- PROCESSOR
`;'—=l- 48
`I—' --i —
`
`MODULE(s)
`
`VLAN
`
`MAPPING
`
`TABLE 4_7
`
`"‘
`LLC TABLE
`
`BUFFER
`
`RAM
`
`22
`
`RECEIVE STATE
`MACHINE
`
`RSEG ffl
`
`STATISTICS
`
`
`49
`PROCESSOR
`—
`
`VLAN
`60
`
`
`
`
`FORWARDING
`
`
`
`TABLE
`5—4
`
`TRANSMIT HEADER
`
`

`

`Case 4:17-cv-00141-ALM Document 17-2 Filed 05/19/17 Page 4 of 26 PageID #: 191
`
`Case 4:17-cv-00141-ALM Document 17-2 Filed 05/19/17 Page 4 of 26 PagelD #: 191
`
`MOTHERB ARD
`
`30
`
`mamaSH
`
`6661‘z'AON
`
`I71J09199118
`
`ADDRESS
`
`I |
`
`LOOKUP
`
`CONTROLLER
`CACHE LOOKUP UNIT
`
`| |
`
`NETWORK
`
`INTFC INPUT
`
`REGISTER FILE
`
`NETWORK
`
`INTFC OUTPUT
`
`-
`
`PACKETIZATION
`
`ENGINE
`
`OUTPUT
`
`PACKET
`
`ASSEMBLY
`
`__.__.________1
`
`

`

`Case 4:17-cv-00141-ALM Document 17-2 Filed 05/19/17 Page 5 of 26 PageID #: 192
`
`Case 4:17-cv-00141-ALM Document 17-2 Filed 05/19/17 Page 5 of 26 PagelD #: 192
`
`ACA bridge only cache address format
`
`Hash 13-0
`
`Set(1-0)
`
`CHO
`
`ACA bridge/route bridge cache address format
`
`n Seth—0)
`
`0 i0
`
`ACA route cache address format
`4
`
`15
`
`Sew-o)
`
`elm-0)
`
`FIG. 5
`
`
`
`JHBJBJ'sn
`
`6661‘Z°A0N
`
`171J017139118
`
`Bridge Cache
`
`SetO Set1 Set2 Set3
`
`
`
`
`SetO Set1 Set2 Set3
`
`Route Cache
`
`

`

`Case 4:17-cv-00141-ALM Document 17-2 Filed 05/19/17 Page 6 of 26 PageID #: 193
`Case 4:17-cv-00141-ALM Document 17-2 Filed 05/19/17 Page 6 of 26 PagelD #: 193
`
`US. Patent
`
`N0V.2, 1999
`
`Sheet 5 0f 14
`
`5,978,951
`
`Cache configured with 1 Bank of 128KX8 SRAMs
`
`BankA
`
`
`11X128KX8
`
`
`
`aca_ac_ram_data(87—40)
`aca_ac_ram_adr_b(16—0)
`aca_ac_ram_oe_b_l
`aca_ac_ram_we_b_l
`aca_ac_ram_data_(39-0)
`
`FIG. 6A
`
`Cache configured with 2 Banks of 64KX16 SRAMs
`
`
`
`ACA
`BankA 6x64kx 16
`
`aca_ac_ram_adr_a(15-0)
`
`aca_ac_ram_oe_a_l
`aca_ac_ram_we_a_|
`
`
`aca_ac_ram_data(87—0)
`
`aca_ac_ram_oe_b_i
`
`aca_ac_ram_adr_b(15-0)
`
`
`BankB 6x64kx 16
`
`FIG. 6B
`
`Cache configured with 1 Bank of 64KX16 SRAMs
`
`
`ACA
`BankA 6x64kx 16
`
`aca_ac_ram_adr_a(15-0)
`
`aca_ac_ram_oe__a_l
`
`aca_ac_ram_we_a_l
` aca_ac_ram_data(87-0) aca_ac_ram_adr_b(15—0)
`
`
`
`aca_ac_ram_oe_b_|
`aca_ac_ram_we_b_|
`
`
`

`

`Case 4:17-cv-00141-ALM Document 17-2 Filed 05/19/17 Page 7 of 26 PageID #: 194
`
`U.S. Patent
`
`N0v.2, 1999
`
`Sheet 6 0f 14
`
`5,978,951
`
`200 q
`RECEIVE PACKET OF
`HEADER ADDRESSES
`FROM FHP IN INPUT
`REGISTER FILE
`
`202
`
`MAC SA
`RECEIVED?
`
`204\
`CRC ENGINE RECEIVES
`CACHE SIZE AND MODE
`FROM PIO REGISTER
`SETS LOADED vIA FP
`206%
`CRC PERFORMS HASH
`ON MAC SA USING OAOHE
`CONFIGURATION INFO
`AND PROTOCOL IO
`208_\
`I
`PACKETIZATION ENGINE
`USES HASH TO RETRI EVE
`VALUES FROM LRU AND
`VALID TABLES
`2101
`PACKETIZATION ENGINE
`PUTS HASH, MAC SA,
`PROTOCOL ID IN
`PACKET AND LOADS
`CACHE LOOKUP QUEUE
`
`G
`
`212\
`RECEIvE PACKET OF
`HEADER ADDRESSES
`FROM FHP IN INPUT
`REGISTER FILE
`
`MAC OR
`NETWORK DA
`RECEWED?
`
`214w
`CRC PERFORMS HASH
`ON DA (MAC OR
`NETWORK) USING CACHE
`CONFIGURATION INFO
`AND PROTOCOL ID
`216“
`PACKETIZATION ENGINE
`USES HASH TO RETRIEvE
`vALUES FROM LRU AND
`vALID TABLES
`218'\
`PACKETIZATION ENGINE
`PUTS HASH, DA‘
`PROTOCOL ID IN
`PACKET AND LOADS
`CACHE LOOKUP QUEUE
`
`FIG. 7A
`
`

`

`Case 4:17-cv-00141-ALM Document 17-2 Filed 05/19/17 Page 8 of 26 PageID #: 195
`
`U.S. Patent
`
`Nov. 2, 1999
`
`Sheet 7 0f 14
`
`5,978,951
`
`2% @
`
`LOOKUP UNIT CONTROLLER
`STRIPS PACKET FROM CACHE I
`LOOKUP QUEUE AND ADDS
`SET # AND VALID BIT
`
`SELECT NEXT
`SET NUMBER
`
`WAIT ONE
`CLOCK CYCLE
`
`LOOKUP CONTROLLER READS
`CACHE USING HASH
`CONCATENATED W/ SET #
`
`READ DATA VALUE ASSOCIATED
`WITH THIS CACHE ADDRESS
`

`
`FIG. 7B
`
`

`

`Case 4:17-cv-00141-ALM Document 17-2 Filed 05/19/17 Page 9 of 26 PageID #: 196
`
`U.S. Patent
`
`Nov. 2, 1999
`
`Sheet 8 0f 14
`
`5,978,951
`
`IDENTIFY PROPER OUTPUT
`PACKET ASSY FOR THIS LOOKUP
`238“
`I,
`OUTPUT PACKET ASSY FILLS
`NETWORK INTERFACE OUTPUT
`REGISTER FILE W/FRAME ID INFO
`
`240-‘
`
`I:
`
`OUTPUT PACKET ASSY FILLS
`NETWORK INTERFACE OUTPUT
`REGISTER FILE W/LOOKUP
`STATUS AND DATA
`
`242
`
`SA & DA
`DONE FOR
`THIS FRAME
`ID?
`
`244 ‘j
`OUTPUT PACKET ASSY SIGNALS
`RHP AND RHP TO RETRIEIVE
`
`@
`
`FIG. 7C
`
`

`

`Case 4:17-cv-00141-ALM Document 17-2 Filed 05/19/17 Page 10 of 26 PageID #: 197
`
`U.S. Patent
`
`Nov. 2, 1999
`
`Sheet 9 of 14
`
`5,978,951
`
`Field
`‘Protocol ID
`Destination address length
`Receive port
`Sequence number
`Reserved for future use
`Frame control
`LEC ID
`VLAN ID
`Source address
`Destination address
`Unused
`
`NIC to ACA data
`Nibbles
`2
`2
`2
`2
`2
`2
`6
`2
`12
`40
`3
`
`cluq bits
`127-120
`119-112
`111-104
`103-96
`95-88
`87-80
`79-56
`55-48
`47-0
`159-0
`
`FIG. 8
`
`

`

`Case 4:17-cv-00141-ALM Document 17-2 Filed 05/19/17 Page 11 of 26 PageID #: 198
`
`U.S. Patent
`
`Nov. 2, 1999
`
`Sheet 10 0f 14
`
`5,978,951
`
`ACA to NIC data
`Bridged Frame
`
`_Unicast
`__
`Protocol ID
`Frame control
`DA VC handle
`
`SA search status
`SA address state
`DA search status
`DA address state
`
`Unused
`Unused
`
`Unused
`RHP vlan ID
`Unused
`
`lylulticast
`_
`Protocol ID
`Frame control
`DA VC handle
`
`SA search status
`SA address state
`DA search status
`DA address state
`
`Unused
`Unused
`
`Unused
`RHP vlan lD
`Unused
`
`Transmit virtual port
`LBPG mask
`
`Transmit virtual port
`LBPG mask
`
`
`
`DA adr group mask(31-24) DA adr group mask(23-0)
`
`
`
`_ RQSéWfédf-‘ffiii-511;;Iii-II}:fl-Li-If-L-f ..... DA vport mask
`
`DA adr group mask(31-0)
`
`DA adr group mask(31-O)
`
`DA learned port
`Discard bit, TX encap
`Receive virtual port
`Sequence number
`
`SA software tag
`DA software tag
`
`Puma multicast mask
`Receive virtual port.
`Sequence number
`
`SA software tag
`DA software tag
`
`Unused (12 bits)
`
`Unused (12 bits)
`
`FIG. 9A
`
`

`

`Case 4:17-cv-00141-ALM Document 17-2 Filed 05/19/17 Page 12 of 26 PageID #: 199
`
`U.S. Patent
`
`Nov. 2, 1999
`
`Sheet 11 of 14
`
`5,978,951
`
`ACA to NIC data
`Routed Frame
`
`Unicast
`Protocol ID
`Frame control
`DA VC handle
`
`SA search status
`SA address state
`DA search status
`DA address state
`
`DA(47-24) ,
`DA(23-16)
`
`DA(15-0)
`RHP vlan lD
`ACA vlan lD
`
`Multicast
`Protocol ID
`Frame control
`DA VC handle
`
`SA search status
`SA address state
`DA search status
`DA address state
`
`Parent port mask
`Forward port mask(23-16)
`
`Fonlvard port mask(15-O)
`RHP vlan lD
`ACA vlan lD
`
`Transmit virtual port
`LBPG mask
`
`Transmit virtual port
`LBPG mask
`
`QOS(39-32)
`QOS(31-8)
`
`QOS(39-32)
`QOS(31-8)
`
`DA adr group mask(31-0)
`
`DA adr group mask(31-0)
`
`DA learned port
`Discard bit, TX encap
`QOS(7-0)
`Sequence number
`
`SA software tag
`DA software tag
`
`Unused (12 bits)
`
`Puma multicast mask
`k-f'RéSén/Qdj Ij-F-Z'j-I J51 "" .
`QOS(7-0)
`Sequence number
`
`if-l 513F553 I-‘j-T
`
`SA software tag
`DA software tag
`
`Unused (12 bits)
`FIG. 9B
`
`

`

`Case 4:17-cv-00141-ALM Document 17-2 Filed 05/19/17 Page 13 of 26 PageID #: 200
`
`U.S. Patent
`
`NOV.2, 1999
`
`Sheet 12 of 14
`
`5,978,951
`
`Bridge cache address beat
`48 .47
`87
`86 80 79
`56 55
`Lock '-:I-J{Spa're_-j§
`Lec ID
`VLAN f
`Bridge cache unicast data beat
`9
`16 15
`32 31
`48 47 4544 40 39
`87
`56
`55
`Address port group
`Learned Bridg xmit Address
`Software
`Circuit
`port
`misc encap
`state
`tag
`handle
`
`0
`
`\
`
`MAC address
`
`Bridge cache muiticast data beat
`0
`16 15
`32 31
`48 47 4544 40 39
`87 I 80 79
`56 55
`Address port mask
`Puma Bridg
`Address
`Software
`Circuit
`mask misc
`state
`tag
`handle
`FIG. 10
`
`'
`
`Route cache address beat 0
`87
`86 _85_ 84 80 79
`Lock €==:Spare;j- Proto iD
`Route cache address beat 1
`87
`80 79
`
`Unusable
`
`i
`Network address(79-0)
`
`Network address(159-80)
`FIG. 11
`
`0
`
`0
`
`

`

`Case 4:17-cv-00141-ALM Document 17-2 Filed 05/19/17 Page 14 of 26 PageID #: 201
`
`U.S. Patent
`
`NOV.2, 1999
`
`Sheet 13 of 14
`
`5,978,951
`
`Route cache unicast data beat 0
`0
`1615
`32 31
`48 47 4544 40 39
`87 80 79
`'64 63. _
`'56 55
`-'
`Dest ;_i;=j~Rg-ry-
`" '
`_
`-.;I_-_I;;4 Learned Route Xmit Address
`Software
`Circuit
`VLAN
`T5531
`11-; I"j-§-_-.j-j-I;"‘i_j
`port
`misc encap
`state
`tag
`handle
`
`Route cache unicast route ?ow data beat 1
`87
`
`MAC destination address
`
`40
`
`39
`
`008 ?ow data
`
`Route cache unicast bridge ?ow data beat 1
`87 ‘
`72 71
`=;-‘{~Resjertiedji
`
`Address port group
`
`40
`
`39
`
`QOS ?ow data
`
`0
`
`0
`
`Route cache muiticast data beat 0
`48 47 45444039
`87 80 79
`56
`55
`Dest
`Reserved
`Puma Route 31;;
`VLAN
`mask
`misc
`
`0
`1615
`32 31
`Software
`Circuit
`tag
`handle
`
`Route cache muiticast data beat 1
`64 63
`87
`Parent port mask
`
`Forward port mask
`
`40 39
`
`\
`QOS ?ow data
`
`0
`
`FIG. 12
`
`ACA cache status bits
`Bit descri
`Bit
`
`uai
`Leo id
`Broadcast
`Multicast
`
`resses on
`resses
`
`FIG. 14
`
`

`

`Case 4:17-cv-00141-ALM Document 17-2 Filed 05/19/17 Page 15 of 26 PageID #: 202
`
`U.S. Patent
`
`Nov. 2, 1999
`
`Sheet 14 0f 14
`
`5,978,951
`
`Network address state field bits
`Bit description
`Bit position
`Multicast identi?er
`39
`CRC not required
`38
`Quality of service loss
`37
`Queue select high
`36
`Queue select low
`35
`Internal address
`34
`Noti?cation High
`33
`Noti?cation low
`32
`
`QOS ?ow data
`Bit description
`Class of service (COS)
`
`-;R@seneda~;a --- ~I=i-; """"""" ‘ I~-;;:-lj~‘;~i=:-;;1--_~i;-.-:3;:1353133441:.~::.::. ' Minimum packet size
`
`Bit positions
`39-36
`
`359323’? 31-28
`
`Token bucket depth
`Token bucket index
`QOS state ?ags
`QOS state ?ags
`Bit description
`QOS enable
`RSVP ?ow indicator
`Excess action code
`Excess monitor enable
`Excess loss eligible ?ag
`Excess transmit queue
`Bridge Misc ?eld
`Bit description
`
`Static
`Reset-‘led? ............................ _.
`
`27-16
`15-8
`7-0
`
`Bit position
`7
`6
`5-4
`3
`2
`1-0
`
`Bit position
`
`Bit description
`Regérjvejd-j._if.j.;I_{-.jj '''''
`Discard
`Alternate source address
`
`Bit position
`1311215‘Ij-f--;41.i~-}Ijs-}.‘ii-1f;
`46
`45
`
`FIG. 13
`
`

`

`Case 4:17-cv-00141-ALM Document 17-2 Filed 05/19/17 Page 16 of 26 PageID #: 203
`
`5,978,951
`
`1
`HIGH SPEED CACHE MANAGEMENT UNIT
`FOR USE IN A BRIDGE/ROUTER
`
`RELATED APPLICATIONS
`
`Not Applicable
`
`STATEMENT REGARDING FEDERALLY
`SPONSORED RESEARCH
`
`Not Applicable
`
`BACKGROUND OF THE INVENTION
`
`Network devices such as bridges and routers are
`employed in networks Which are operating at relatively high
`speeds. Functions such as frame header parsing, address
`lookup, frame processing, and related functions have previ
`ously been performed primarily in softWare. SoftWare pro
`cessing of frames results in higher device latency, implicat
`ing a higher frame drop rate due to congestion and the
`necessity of providing expensive buffering.
`
`1O
`
`15
`
`SUMMARY OF THE INVENTION
`
`The presently disclosed cache management unit is also
`referred to herein as an Address Cache ASIC (ACA), though
`the functions and features presently described are also
`realiZed, in alternative embodiments of the invention, via
`any other hardWare structure. The ACA is preferably used as
`one element of a netWork device such as a bridge or
`bridge/router, and provides high-speed, ?exible address
`cache management. The ACA is responsible for: maintain
`ing a hardWare address table and a hardWare age table;
`searching the hardWare address table for layer 2 and layer 3
`addresses received from a Received Header Processing
`(RHP) element Which parses frame headers for address
`information; and returning address search results, including
`the destination port(s) for received frames, to a Received
`Frame Processor (RFP) element. The ACA includes an
`interface Which permits a Frame Processor to manipulate the
`hardWare address table and age table.
`A cache associated With the ACA stores data associated
`With each of plural netWork addresses. The ACA receives
`packets of source and destination addresses from RHP’s in
`the netWork device, and searches the associated cache for
`each address. The ACA responds to the appropriate RFP
`With a response packet Which indicates Whether the source
`and destination addresses Were located (hit) in the cache and,
`for each located address, includes data associated With that
`address. If there Was a hit, the RFP generates a transmit
`vector Which contains information Which permits the frame
`to be processed in hardWare at speeds approximating frame
`reception rates. The ACA supports a 4-Way set associative
`cache to store the netWork addresses. This hardWare imple
`mentation provides better performance than the binary
`search table employed in the prior art due to a signi?cantly
`shorter search time in the cache.
`The ACA, through a plurality of discrete functions imple
`mented by ACA hardWare, enables softWare manipulation of
`the associated cache. Such manipulation includes installing
`entries, removing entries, changing entries and diagnosing
`the memory. Entry installation by a processor executing such
`softWare is the mechanism by Which the cache learns neW
`addresses. One further function, the SEARCH function,
`enables automatic address processing and lookup in the
`cache by the ACA Without softWare intervention.
`The ACA provides four cache operating modes:
`DISABLE, LEARN, BRIDGE ONLY, and BRIDGE/
`
`25
`
`35
`
`45
`
`55
`
`65
`
`2
`ROUTE MODE. When in DISABLE mode, the cache is
`accessible only through diagnostic read and Write opera
`tions. In LEARN mode, address installation, as Well as
`diagnostic read and Write operations, are enabled. In
`BRIDGE ONLY mode, the cache is employed solely for
`storing data associated With bridge addresses. Lastly, in
`BRIDGE/ROUTE mode, the cache is divided into equal
`portions for layer 2 (bridge) address processing and for layer
`3 (route) address processing.
`In a netWork element Which supports Load Balanced Port
`Groups (LBPGs), a group of ports treated as a single
`high-bandWidth port, the presently disclosed ACA identi?es
`and selects destination ports Within the identi?ed LBPG for
`respective frame forWarding.
`When functioning in a netWork bridge Which supports
`Virtual Local Area Networks (VLANS), the present ACA
`utiliZes the VLAN identi?cation in conjunction With the
`MAC for address lookup in the cache.
`A cyclic redundancy code is generated for each address to
`be looked up in the cache by the ACA. The CRC code is used
`as the index for lookup Within the cache. As noted, the cache
`is 4-Way associative, meaning that there are four sets of
`addresses and data for each CRC code. If the thrash rate
`exceeds a predetermined threshold, softWare can reWrite the
`CRC table values, thus causing alternative CRC codes to be
`generated, and avoiding the high thrash rate problem.
`Finally, oWing to the fact that the cache itself is accessed
`at most once out of every four clock cycles for a single
`address search, the presently disclosed ACA provides four
`cache lookup units, each being provided With access to the
`cache every four clock cycles. Each cache lookup unit
`consists of a cache lookup queue for storing the CRC code
`of the address to be searched, and a cache lookup controller
`for pulling codes from the queue concatenated With a set
`number from a least-recently-used table value for the code,
`and compares the netWork address associated With the code
`to that of the identi?ed set. If the addresses match, the
`controller signals that the lookup is complete and moves on
`to the next code in the queue. OtherWise, When all sets are
`exhausted Without a match, the controller reports the failure
`to match and moves on to the next code in the queue.
`Thus, the presently disclosed ACA enables netWork
`address lookup to permit frame processing at high speed
`While enabling ?exible modi?cation and diagnosis of the
`cache via softWare instituted functions.
`
`BRIEF DESCRIPTION OF THE DRAWINGS
`
`The invention Will be more fully understood by reference
`to the folloWing Detailed Description of the Invention in
`conjunction With the draWings of Which:
`FIG. 1 is pictorial diagram of a netWork device in accor
`dance With the present invention illustrating NetWork Inter
`face Modules and a Motherboard mounted to a backplane;
`FIG. 2 is a block diagram of a netWork device in accor
`dance With the present invention illustrating one NetWork
`Interface Module coupled to the Motherboard via a back
`plane;
`FIG. 3 is a block diagram of an Address Cache ASIC
`(ACA) according to the present invention, interfaced to an
`Address Cache, Frame Processor, and plural NetWork Inter
`face Modules;
`FIG. 4A illustrates the organiZation of at least a portion of
`the Address Cache of FIG. 3 con?gured as a Bridge Cache;
`FIG. 4B illustrates the organiZation of at least a portion of
`the Address Cache of FIG. 3 con?gured as a Route Cache;
`
`

`

`Case 4:17-cv-00141-ALM Document 17-2 Filed 05/19/17 Page 17 of 26 PageID #: 204
`
`5,978,951
`
`3
`FIG. 5 illustrates the format of words used to address the
`Address Cache of FIG. 3;
`FIGS. 6A, 6B and 6C are block diagrams of various
`physical con?gurations of memory devices comprising the
`Address Cache of FIG. 3 in conjunction the ACA;
`FIGS. 7A, 7B and 7C collectively comprise a How
`diagram of the method of operation of the ACA and Address
`Cache according to the present invention;
`FIG. 8 illustrates the data content of a packet transmitted
`from a Network Interface Chip (NIC), associated with a
`Network Interface Module, to the ACA;
`FIGS. 9A and 9B illustrate the data content of bridged and
`routed frame packets transmitted from the ACA to a Net
`work Interface Chip (NIC);
`FIG. 10 illustrates bridge cache beat formats;
`FIGS. 11 and 12 illustrate route cache beat formats;
`FIG. 13 illustrates speci?cs of various ?elds of FIGS.
`10—12; and
`FIG. 14 provides a description of the status bits sent from
`the ACA to a Network Interface Chip.
`
`10
`
`15
`
`4
`The MBA 32, located on the motherboard 12, serves to
`provide global data buffer management of frames which
`reside in buffers in the Buffer RAM 22 disposed on respec
`tive Network Interface Modules 14.
`Each network interface module 14 includes a receive
`ASIC and a transmit ASIC, both of which are speci?c to the
`type of data traf?c supported by the respective network
`interface module (such as Ethernet, ATM and FDDI).
`Address Cache ASIC (ACA) Overview
`The principle functions of the Address Cache ASIC
`(ACA) 26 include maintaining hardware address tables,
`maintaining a hardware age table, searching the hardware
`address table for layer 2 and layer 3 addresses provided by
`network interfaces, returning address search results includ
`ing a destination port identi?er for received frames to the
`network interfaces, and providing a mechanism for software
`to manipulate the hardware address table and age table. A
`4-way set associative cache 28 (discussed subsequently) is
`employed to store network addresses.
`The main function of the ACA 26 is to look up network
`addresses in the cache 28. The ACA receives packets con
`taining two addresses, a source address and a destination
`address, from the Network Interface Chips (NICs) 100. The
`ACA 26 searches the cache 28 for each of these addresses
`and responds to the Network Interface Module (NIM) 14,
`and more speci?cally to the respective NIC that sent the
`packet after the searches are completed, by assembling a
`response packet and forwarding the packet to the respective
`NIC 100. The response packet indicates whether or not the
`addresses were found in the cache 28 and, for each found
`address, the packet includes data stored in association with
`the network address. A more detailed explanation of this
`process is provided subsequently.
`The ACA 26 also provides an interface for software to
`manipulate and diagnose the cache 28. A Frame Processor
`(FP) 30 allows software to install and remove network
`addresses and associated data from the cache 28. Although
`the ACA does not learn addresses by itself, it provides
`hardware assistance, through Programmable Input/Output
`(PIO) register sets 102, in installing addresses in the cache
`at a rate of approximately 500K addresses per second. The
`FP 30 also provides a software path (soft path) accessible
`into an age RAM and hardware assistance during the aging
`process.
`The ACA 26 runs at speeds approximately the frame
`reception rate (wire speed) to avoid a costly and complex
`queuing system for received frames. To achieve wire speed,
`the ACA handles 4 million packets per second from the NICs
`100. In contrast, received frames handled by software can be
`processed at approximately 1/2 million packets per second.
`Since each packet from a NIC 100 contains two addresses
`(SA and DA), the ACA 26 must be able to search the entire
`cache 8 million times per second, or 4.5 cycles per search at
`an ACA clock rate of 37.5 MHZ.
`The cache 28 stores data link and network layer addresses.
`As described later, the cache can be con?gured as a bridge
`only cache or as a split bridge/route cache. The bridge cache
`store both data link layer SAs and DAs, while the route
`cache store network layer DAs and link layer SAs.
`If a frame is intended for a destination address which is
`not in the cache 28, the frame is transmitted out all ports
`under software control. If a reply frame is received from the
`device having the uncached MAC address, the port associ
`ated with the previously unknown DA address becomes
`known and the frame is forwarded via a high-speed hard
`ware forwarding path within the device 10 since the reply
`frame destination address (the original source address) is
`
`DETAILED DESCRIPTION OF THE
`INVENTION
`FIGS. 1 and 2 Overview
`Referring to FIGS. 1 and 2, a bridge/router network
`device 10 for use in a telecommunications network includes
`a motherboard 12 and at least one network interface module
`14. Each of the network interface modules 14 interfaces to
`the motherboard 12 through a backplane 16.
`Each network interface module 10 includes at least one
`input port 18 through which data units such as frames,
`packets and cells are received and at least one output port 20
`through which data units are forwarded downstream for
`receipt by another network device. In particular, the ports
`provide connections via communication links to other
`devices in the network. Incoming data units may be bridged,
`routed, translationally routed or ?ltered.
`In one embodiment of the presently disclosed network
`device 10, four slots are provided for network interface
`modules 14. Each slot may be populated with an Ethernet,
`FDDI or an ATM UNI interface module. In a preferred
`embodiment, each 10/100 megabyte Ethernet network inter
`face module 14 includes six input/output ports, each FDDI
`network interface module 14 includes six input/output ports,
`and each gigabit Ethernet network interface module 14
`includes one input/output port. An ATM network interface
`module 14 includes four OC3 input/output ports or one
`OC12 input/output port.
`Elements in the motherboard 12 and interface modules 14
`are responsible for data unit reception and transmission,
`parsing of data link and network layer headers within
`received frames, look-up of source and destination Media
`Access Control (“MAC”) and network layer addresses and
`for making forwarding decisions regarding the received
`frames.
`The motherboard 12 includes an address cache ASIC
`(“ACA”) 26 with an associated cache 28, a Frame Processor
`30, an application processor 31 and a Master Buffer ASIC
`(“MBA”) 32.
`The ACA 26 serves to perform look-ups on source and
`destination addresses (SAs and DAs) passed to the ACA
`from a Receive Header Processor (“RHP”) within the
`respective network interface modules 14. The ACA 26 is
`capable of looking up MAC addresses for bridging support
`and Network Layer destination addresses for routing sup
`port.
`
`25
`
`35
`
`45
`
`55
`
`65
`
`

`

`Case 4:17-cv-00141-ALM Document 17-2 Filed 05/19/17 Page 18 of 26 PageID #: 205
`
`5,978,951
`
`5
`known and included in the cache. SoftWare updates the
`cache to include the address of the station having the
`original, unknown destination address (the subsequent
`source address). Software also updates the cache 28 if the
`ACA 26 determines that the source address data received
`does not agree With the source address data stored in the
`cache. This situation may arise in the event a device is
`moved such that frames it originates are received at a
`different port of the device 10. The ACA 26 also makes a
`determination of Whether the destination address and the
`source address are on the same segment, and if so, constructs
`a packet indicating this situation to the RFP 46, Which Will
`inhibit retransmission of the frame.
`In a preferred embodiment, the address cache 28 is 4-Way
`set associative, can vary in depth up to a maXimum of 16K
`roWs, and is 88 bits Wide. Each cache roW contains four
`cache entries, one per set. The cache 28 itself is implemented
`in SRAMS and the ACA 26 supports both X8 and X16
`devices. For a cache organiZed as bridge-only cache, there
`are tWo storage elements or “beats” per bridge cache set
`(FIG. 4A). For a bridge-route cache, there are four beats per
`route cache set (FIG. 4B). The speci?c format of these beats
`are found in FIGS. 10, 11 and 12. FIG. 13 provides details
`of What is stored in various ?elds in FIGS. 10, 11 and 12.
`At a high level, a cache lookup occurs as folloWs. An
`address to be searched (MAC SA, MAC DA, or netWork
`DA) is received by the ACA26. A Cyclic Redundancy Code
`(CRC) process is performed by a CRC engine 104 on the
`address to generate a CRC. This code is then used to identify
`a cache roW. There being four sets associated With each
`cache roW, the ACA uses a Least Recently Used (LRU)
`algorithm to identify a set order for address comparison, and
`a valid table is referenced to identify Whether any of the sets
`are invalid. From the latter tWo values, a most likely, valid
`set in the identi?ed cache roW is chosen, and the address
`value stored therein is compared against the address from
`Which the CRC Was generated. If a match occurs, the data
`stored in conjunction With that address in the cache set is
`retrieved and returned to the respective NIC 100. If no match
`occurs, the neXt valid set in the roW is selected and compared
`to the received address. When all valid sets have been
`searched Without a match, an indication thereof is forWarded
`to the frame processor 30 so that the received frame can be
`processed under softWare control.
`With reference to FIG. 5, the cache address generated by
`the ACA 26 for the purpose of addressing the cache 28 has
`three parts. A CRC generated from the address of interest is
`knoWn as a “hash.” The hash serves as a roW indeX into the
`cache, and identi?es a roW of four sets, i.e. sets 0—3 (see also
`FIGS. 4A and 4B). The set indeX identi?es one of four cache
`sets in the roW. A Cache Line Index (CLI) identi?es a line
`(or “beat”) Within a cache set; the CLI is one bit for the
`bridge cache and tWo bits for the route cache. For bridge/
`route addresses, each half of the cache 28 is addressed
`differently. The most signi?cant bit of the cache address
`indicates Whether the address is for the bridge or route cache
`searching.
`The ACA 26 accesses the cache 28 once per cycle. In the
`Worst case, the ACA must read and compare to the address
`beat of all four sets before a match (or “hit”) occurs.
`Subsequent to a hit occurring, a cycle is needed to read the
`associated data beat, for a total of ?ve cycles. This is more
`than the 4.5 cycle maXimum required to operate at Wire
`speed. HoWever, if the hit occurs on the ?rst, second or third
`compare, the total time is up to 4 cycles, beloW the maXi
`mum. On average, the search time Will be beloW the 4.5
`cycle threshold.
`
`10
`
`15
`
`25
`
`35
`
`45
`
`55
`
`65
`
`6
`HoWever, the presently disclosed ACA 26 is provided
`With a fallback option. The number of addresses queued up
`to be searched is monitored, and if it reaches a given
`threshold, the ACA 26 operates in a degraded mode Where
`the maXimum number of sets searched is reduced. When the
`number of enqueued searches falls beloW the threshold
`again, the normal search mode involving the search of up to
`all four sets is resumed.
`While each route address set is provided With four beats,
`tWo for address and tWo for data, not every lookup of a route
`address Will require comparison against both address beats.
`If the route netWork layer destination address is less than ten
`bytes in length, the second address beat is not used. Both
`data beats are used regardless of the length of the address
`compared.
`For a short route address (less than ten bytes), the Worst
`case search requires four address compares, and tWo cycles
`for data retrieval. All route frames have a MAC layer SA
`Which has a Worst case search of ?ve cycles, as above.
`Therefore, the ACA 26 processes route frames With short
`addresses in eleven cycles, Worst case. In degraded mode,
`limiting the number of sets searched per roW, the ACA 26
`does three searches on the MAC layer SA and three searches
`on the netWork layer DA. The maXimum search time is then
`reduced to an acceptable nine cyc

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