1 / 7

Filters and Results

Comprehensive guide on managing protocol filters and results in TCAM database. Learn allocation, priority, and operations for unicast and multicast filters.

stacyjordan
Download Presentation

Filters and Results

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Filters and Results • First, some things to remember: • This is the NPE: we are supporting protocols that may not be IP! • Order of filters in a TCAM database defines those filters’ priority • Lower numbered filter indices are higher priority • TCAM filter lookup is done on the A-Side. • TCAM filter result gives us a pointer to a full result which resides in SRAM on the B-Side. • Thus the A-Side filter and the B-Side result need not be a 1-1 mapping • We could have many filters using the same B-Side result. • We are supporting Unicast and Multicast filters and results • Multicast supports a maximum fanout of 16.

  2. Filters and Results (continued) • Slice owners allocate N unicast filters and M multicast filters. • They get: • N+M Filter id’s (0 – (N+M-1) ) • Contiguous in the TCAM • Order in TCAM indicates priority, lower id  higher priority • N Unicast Result indices (0 – (N-1) ) • Contiguous in the Unicast portion of Result table • M Multicast Result indices (0 - (M-1) ) • Contiguous in the Multicast port of the Result table • Result entries are re-initialized when allocated to a fastpath • This prevents a fastpath from re-using a stale result from another fastpath • Filter id and Result index (unicast or multicast) are referenced separately. • Example: Filter id 4 might use unicast result index 12 • Unicast and Multicast filters in TCAM can be mingled. • Remember: Order in TCAM is important. • Example: A unicast catch-all (all wildcards) filter should probably be the LAST filter in a slice’s set of filters so it does not override other filters including multicast filters.

  3. Filters and Results (continued) • Slice owners will have the ability to disable a filter. • Control removes the filter from tthe TCAM (LookupA) • Result is left on NPUB for "in-flight" packets • Slice owners can also remove a filter • This deletes the results from the B-side

  4. Filter / Result Operations TCAM Result (A-side) Result Table (B-side) Type (1b) ResultIndex(31) MC Result BitMask(16b) Stats Index (16) Unicast N Results 16B per Result Result Entry (B-side) • If we use entire SRAM Bank: • SRAM Banks are 8MB • Result size is 16B • TCAM has 128K 144b entries • N + M = 128K • (N+16*M) * 16 <= 8MB • N = 104858 • M = 26214 Valid(1b) Multicast M Blocks 16 Results per Block 16B per Result Pad (11b) QID (20b) 16B IP DAddr (32b) UDP DPort (16b) UDP SPort (16b) Pad (16b) HFIndex (16b)

  5. Filter / Result Operations • add_mc_filter(fid, RxMI, Key, Mask, mcResultIndex, statIndex) • update_mc_filter(fid, mcResultIndex, resultMask) • add_mc_result(fid, mcResultIndex, entryIndex, Qinfo, DestInfo) • update_mc_result(fid, mcResultIndex, entryIndex, Qinfo, DestInfo) • remove_mc_filter(fid) • remove_mc_result(mcResultIndex) • add_uc_filter(fid, RxMI, Key, Mask, ucResultIndex, statIndex) • update_uc_filter(fid, ucResultIndex, statIndex) • add_uc_result(fid, ucResultIndex, Qinfo, DestInfo) • update_uc_result(fid, ucResultIndex, Qinfo, DestInfo) • remove_uc_filter(fid) • remove_uc_result(ucResultIndex) Type (1b) ResultIndex(31) Result Bit Mask(16b) Stats Index (16) Valid(1b) TCAM Result (A-side) QID (20b) IP DAddr (32b) Result Entry (B-side) UDP DPort (16b) UDP SPort (16b) HFIndex (16b)

  6. Multicast Filter / Result Operations • add_mc_filter(fid, RxMI, Key, mcResultIndex, resultMask, statIndex) • Adds multicast filter to TCAM • update_mc_filter(fid, mcResultIndex, resultMask, statIndex) • Updates (re-writes) the TCAM result • add_mc_result(mcResultIndex, entryIndex, Qinfo, DestInfo) • Writes a MC result entry into Result Table • Marks result as valid • update_mc_result(mcResultIndex, entryIndex, Qinfo, DestInfo) • Updates (re-writes) a MC result entry in the Result Table • Marks result as valid • Implementation will almost certainly be same as add_mc_result so why have both? • remove_mc_filter(fid) • Removes the filter from the TCAM, leaves B-side results unchanged. • remove_mc_result(mcResultIndex) • Invalidates a multicast filter result

  7. Unicast Filter / Result Operations • add_uc_filter(fid, RxMI, Key, ucResultIndex, statIndex) • Adds unicast filter to TCAM • update_uc_filter(fid, ucResultIndex, statIndex) • Updates (re-writes) the TCAM result • add_uc_result(ucResultIndex, Qinfo, DestInfo) • Writes a UC result entry into the Result table • Marks result as valid • update_uc_result(ucResultIndex, Qinfo, DestInfo) • Updates (re-writes) a UC result entry into the Result table • Marks result as valid • Implementation will almost certainly be same as add_uc_result so why have both? • remove_uc_filter(fid) • Removes the filter from the TCAM, leaves the B-Side results unchanged • remove_uc_result(ucResultIndex) • Invalidates a unicast filter result

More Related