50 likes | 149 Vues
Slice x control application. Slice-Centric View. MI 1. Allocate and free code option instance, NPE resources and interface bandwidth . Manage interfaces Get interface attributes: {{ ifn , type , ipaddr , linkBW , availBW }, ...} If peering then get peer’s IP address
E N D
Slicex control application Slice-Centric View MI1 • Allocate and free code option instance,NPE resources and interface bandwidth. • Manage interfaces • Get interface attributes:{{ifn, type, ipaddr, linkBW, availBW}, ...} • If peering then get peer’s IP address • Allocate aggregate interface bandwidth • Allocate external port number(s) • Define meta-interfaces • Substrate adds line card filter(s) • Slice may specify minimum BW • Associate queues with meta-interfaces • Substrate has to map meta-interface numbers used in TCAM filters to the corresponding local addresses • Manage queue parameters, get queue length • threshold, bandwidth (weight) q0 DRAM block SRAM block MI1 (tunnel) ... wrr stats BW1,min qi MI1 := {myIP, Port1} qparams Fast path Slicex Slicex MI2 qj ... qlen, threshold, weight MI2 (tunnel) ... MIn := {myIP, Portn} wrr TCAM (Filters) substrate slice state BW2,min qk ... max Buffers qGPE MIm qj VLAN MIn (tunnel) max weights ... wrr BWn,min ql GPE • Manage TCAM filters • add, remove, update, get, lookup • Substrate remaps slice ids (qid, fid, mi, stats) to global identifier • One-time or periodic statistics • Periodic uses polled or callback model • Read and write SRAM • Substrate verifies address and length • Extended to also support DRAM memory
Mapping Slice Queue BW to Queuing Weights Slice Interface and Queue Allocations: {Port, BW, QList}; Qlist = {{qid, weight, threshold},...} NPE wrr Physical Port (Interface) Attributes: {ifn, type, ipaddr, linkBW, availBW} ifn : Interface number type: {Internet, Peering} Operations: get_interfaces() get_ifattrs(ifn) get_ifpeer(ifn) alloc_ifbw(ifn,bw) q10 q11 FP slice1 ... qid in 0...n-1 BW11 q1n q20 LC q21 FP slice2 ... qid in 0...m-1 q2m wrr FP1 BW1 FP2 ipAddr BW11 + BW21 = BW1 linkBW GPE GPE BW21
NPE FP slicek FP slice1 qid in 0...m-1 qid in 0...n-1 Single Interface Example LC • LC Ingress • One queue per slice with reserved bandwidth (really one per scheduler) • One queue for best effort traffic to each GPE • One scheduler for CP with queues for reserved traffic plus BE • LC Egress • At least one scheduler for each physical interface • One queue for each active slice with MI defined for the associated scheduler • One best effort queue for each board (GPE, CP, NPE?) • NPE • Slice binds queues to meta-interfaces, hence physical interfaces • Slice either reserves BW on a physical interface or it is assigned the minimum • Substrate assigns a per interface maximum weight for each slice • Substrate sets scheduler rates according to aggregate allocations • Manage scheduler rates to control aggregate traffic to interfaces and boards. Ingress qxs1 wrr SchedNPE1 qxs2 ... Map fp:MI to Q {dip, dp, pr} qxsn ... qps1 qps2 SchedGPE1 ... qpsn qBE wrr interface 1 ... SchedCP Egress NPE BWNPE1,GPE1 local delivery and exception VLAN wrr qs1 ... qw,GPE1 wrr qs2 ... Total weight for all slices (i) and queues (j) ≤ max weight for scheduler s (Ws) SchedI1 ... ... qsn slice’s allocated BW ... q11 w11 q12 w12 q1n w1n qp1 wp1 qp2 wp2 qpm wpm ... BWI1 ... qGPE src addr proto port/icmp ... wrr Scheds,k BWs,k qCP scheduler min rate ... GPE minimum weight = 1 MTU sized packet
FP slice1 qid in 0...n-1 FP slice2 qid in 0...m-1 Two Interface Example, Setting Queue Weights Slice i, meta-interface j, qid k and scheduler s. NPE wrr q1j0 q1j1 ... LC BW11 q1jn wrr to interface 1 FP1 q2j0 BW1 FP2 IP1 q2j1 ... linkBW GPE q2jm’ to interface 2 q1j0’ wrr to interface 1 q1j1’ FP1 BW2 ... FP2 IP2 BW12 q1jn’ linkBW q2j0’ GPE to interface 2 q2j1’ ... q2jm’ wrr
Formulas • Slice i, meta-interface j, QID k and scheduler s. scheduler qid meta-interface fastpath