670 likes | 820 Views
Tiger4 OLT QOS introduction. By Jianguang Li. Agenda. Tiger4 OLT ASIC Architecture Tiger4 OLT data path FE Header t TE Header o BM ES Flow control. Tiger4 OLT ASIC Architecture (1 die). Tiger-4. 10G OLT Port. Cross Switch. 1G OLT Port. 1G OLT SERDES. SFI (1G). Ingress
E N D
Tiger4 OLT QOS introduction By Jianguang Li
Agenda • Tiger4 OLT ASIC Architecture • Tiger4 OLT data path • FE • Header t • TE • Header o • BM • ES • Flow control
Tiger4 OLT ASIC Architecture (1 die) Tiger-4 10G OLT Port Cross Switch 1G OLT Port 1G OLT SERDES SFI (1G) Ingress Aggregation XFI (10G) Forward Engine Traffic Engineering 10G (EPON) SERDES IBM EBM DDR3 SDRAM Control 10G/1G ONU Port Packet Replication 10G (EPON) SERDES XFI (10G) Cascade 10G Port Egress Dispatch Output Scheduler 4xGE (UNI) Port XAUI/ 4xGE XAUI SERDES Uplink 10G Port MII ARM926 CPU ARM Peripheral MII Port Management Access
FE: forward engine • Upstream and downstream • PSB (upstream) and IPB(downstream) • Rx/TX 8021p mapping • Rx/TX DSCP/TC mapping • 8021p/ DSCP/TC TE remark • FE rate limit and policy control • VOQ • EPB
Upstream and downstream • Upstream: the packet from PON port(1G PON and 10G PON). • Downstream: the packet from other port.
PSB and IPB table • FlowID_Sel_BM • Top_802_1p_mode_sel and 802_1p_mark_control_BM • default_802_1p • DSCP_mode_sel and DSCP_mark_control_BM • default_DSCP • COS_mode_sel and COS_control_BM • default_COS • WRED_TD enable(IPB for both US and DS) • SPID and to CPU rate limit enable
FlowID_Sel_BM B[3] : FlowID from S-Classification FIB; B[2] : FlowID from G-Classification FIB; B[1] : FlowID from VLAN Engine FIB; B[0] : FlowID from MC_FIB table for Non-Known UC packet. FlowID from EPSB table for Known UC packet. The priority is B[3] -> B[2] -> B[1] -> B[0] If all 4 bits are 0, upstream packets’ flow id = SPLLID, downstream to PON known UC packets’ flow id = 512 + DPLLID, other packets’ flow id = default flow id.
Top_802_1p_mode_sel • 00 (default): Outgoing top 8021p <= Rx_Top_8021p or IPB default 8021p(Untagged packets); • 01(L2 Marking): Outgoing top 8021p <= IPB_8021p_Mark_BM; • 10(L2 mapping): Outgoing top 8021p <= Map from Received top 8021p; • 11(L3 to L2 mapping): Outgoing top 8021p <= Map from Outgoing DSCP.
802_1p_mark_control_BM B[4] : 8021p from S-Classification FIB; B[3] : 8021p from G-Classification FIB; B[2] : 8021p from VLAN Engine FIB; B[1]: Reserved; B[0] represents 8021p from IPB default setting. The priority to select is: 1) S-Classify Engine 8021p; 2) G-Classify Engine 8021p; 3) VLAN Mapping Engine 8021p; 4) IPB_Default_8021p
DSCP_mode_sel 00 (default): Final DSCP <= Rx_DSCP ; 01 (L3 Marking): Final DSCP <= IPB_DSCP_Mark_BM; 10 (L3 mapping): Final DSCP <= Map from Rx DSCP; 11: Final DSCP <= from IPB default DSCP.
DSCP_mark_control_BM B[3] : DSCP from S-Classification FIB; B[2] : DSCP from G-Classification FIB; B[1] : DSCP from VLAN Engine FIB; B[0] : DSCP from IPB default setting. The priority to select is: 1) S-Classify Engine DSCP; 2) G-Classify Engine DSCP; 3) VLAN Mapping Engine DSCP; 4) IPB_Default_DSCP; If all 4 bits are 0, TX DSCP = Rx DSCP
COS_mode_sel 000 : Final COS <= map from Rx_Top_8021p; 001: Final COS <= map from Rx_ DSCP (If non-IP, map Rx_Top_8021p); 010:(Marking): Final COS <= IPB_COS_Select_BM; 011: From IPB.COS 100: Final COS <= map from Tx_Top_8021p; 101: Final COS <= map from Tx_ DSCP (If non-IP, map Tx_Top_8021p); 110,111: same as 0.
COS_control_BM B[3] : COS from S-Classification FIB; B[2] : COS from G-Classification FIB; B[1] : COS from VLAN Engine FIB and B[0] : COS from IPB default setting. The priority to select is: 1) S-Classify Engine COS; 2) G-Classify Engine COS; 3) VLAN Mapping Engine COS; 4) IPB _Default_COS;
MII configuration Downstream: configure uplink -> cascade don’t mark Upstream: only pass one time FE, no problem. Local switch and p2p: has problem.
8 ports problem • Downstream: inner chip no problem, cross chip has problem. • Upstream: no problem. • P2p and local switch: has problem.
FE rate limit control • To CPU rate limit enable • Mirror rate limit enable(total, section 0~3) • Special packet control(rate limit enable and id) • Group A rate limit control(group A mode, group A half mode) • Root_MC_ID control
Group A rate limit control • total 1024 group A id • Total 8 modes • 0. disable • 0~511 US subs id, 512~1023 DS subs id • 0~511 SP_LLID, 512~1023 DP_LLID • 0~511 ROOT_MC_RL_ID, 512~1023 US subs id • 0~511 ROOT_MC_RL_ID, 512~1023 DS subs id • 0~511 P2P_Group_ID[7:0] +256*UC, 512~1023 DS subs • Sub CLS engine • VLAN engine
Root_MC id control • PR group id *2 +cos[0] • Vlan group id *2 +cos[0] • 0~255 DS vlan group id based MC, 256~511 DS vlan group id based BC and unknown MC • MC group id
FE policy control • Default flow • Mark enable, include def_flow,MC_fib,epsb,dpllid,spllid. • Flow_b mode • Flow_id for 2k llid • Policy enable
Flow B mode 0: disable 1: SPLLID[6,0]*8 + cos[2,0] 2: SPLLID[7,0]*4 + cos[1,0] 3: cos[2,0]*128 + SPLLID[6,0]
Flow_id for 2k llid • 2k llid flow chart enable. • Cos[2:0] use as msb. • Lower 1024 llid use for Flow id and upper 1024 llid use for flow B id.
VOQ: virtual output queue • To PON known UC(include per llid replicated packet) VOQ = LLID*8 + COS(LLID = 0~255) • Other known UC VOQ or per port replicated packet = 0x800+port*8 + COS • Unknown packet(root MC VOQ), VOQ = 0x838 + COS
EPB: egress port behavior • Bank id mode and bank id, bank0~bank3 are used for to PON port known UC, bank id = llid[1:0], bank4~bank7 are used for other packets, bank id = cos[1:0] • Destination port selection, select IBM, EBM, management, etc.
Head T 1 oam_excl_rm [128] (1) : 0x1 Dp_llid [127:119] (9) : 0x0 Dp_llid_vld [118] (1) : 0x0 Voqid_cos [117:115] (3) : 0x0 special pkt type [114:110] (5) : 0x14 MATCH_KEEP-alive_OAM Flow_id_cir_en [109] (1) : 0x1 Dpid_is_cpu [108] (1) : 0x0 DPID [107:105] (3) : 0x0 Mc_pkt_ind [104] (1) : 0x0
Head t 2 pon_source_ind [103] (1) : 0x1 sp_cpu_rl_en [102] (1) : 0x0 spllid_cpu_rl_en [101] (1) : 0x0 sect_Mir_rl_en [100] (1) : 0x0 drop [99] (1) : 0x1 fe_te_dont_mark [98] (1) : 0x0 Pkt_color [97:96] (2) : 0x0 green flow_b_pl_en [95] (1) : 0x0 flow_b_id [94:85] (10) : 0x0 group_a_rl_en [84] (1) : 0x1
Head t 3 group_a_id [83:74] (10) : 0x0 Wred_TD_en [73] (1) : 0x1 Spid_rl_en [72] (1) : 0x1 Cpu_rl_en [71] (1) : 0x0 Bank_id [70:68] (3) : 0x0 Pkt_len [67:57] (11) : 0x44 Voq_id [56:45] (12) : 0x800 Mir_rl_en [44] (1) : 0x0 Mir_ind [43] (1) : 0x0 Mir_sect_id [42:41] (2) : 0x0
Head t 4 Pkt_type [40:39] (2) : 0x1 Mark_flag [38] (1) : 0x0 Mark_en [37] (1) : 0x1 cos [36:33] (4) : 0x0 spid [32:30] (3) : 0x0 spllid [29:21] (9) : 0x0 spec_pkt_rl_en [20] (1) : 0x0 spec_pkt_id [19:16] (4) : 0x0 Oam_excl_spid [15] (1) : 0x1 isp_plc_en [14] (1) : 0x0
Head t 5 isp_id [13:11] (3) : 0x0 Policing_en [10] (1) : 0x1 Flow_id [9:0] (10) : 0x0
TE function Rate limit Policy WRED Token bucket Counter
Rate limit • Source port total rate limit • Source port packet type rate limit(BC, MC, UUC) • Source port special packet id rate limit(16 ID) • Source port to CPU rate limit • Total mirror and mirror section rate limit • LLID to CPU rate limit • Total to CPU rate limit • Group A rate limit(1024 id) • ONU special packet type rate limit
policy • 1024 Flow id based policy • 1024 Flow B id based policy • CIR(commit input rate) and PIR(prommit input rate) • 8 ISP id policy • remark
WRED: Weighted Random Early Detection • BM and TE • PWM flag • PRVT flag • MAX buf flag • DS/US, MC/UC, COS[2:0],MARK/UNMARK • 64 drop possibilities • Weight: Old(1-1/2^n) + New(1/2^n)
Token bucket • Delta, add bytes per time • Time, 8000 clocks • CBS, the depth of token bucket, the maximum value of token add. • TBC, token bucket counter, when write CBS to CSR, TBC will be updated.
Head o 1 Bf_af_pr_ind [95] (1) : 0x0 Pkt_fwd_dest [94:92] (3) : 0x1 mirror_section_id [91:90] (2) : 0x1 mirror_pkt [89] (1) : 0x0 drop_pkt [83] (1) : 0x0 drop_src [88:84] (5) : 0x0 eth pkt type [82:81] (2) : 0x0 bank_id [80:78] (3) : 0x7 voqid [77:66](12) : 0x807 flow id h2b [65:64] (2) : 0x0
Head o 2 flow id l7b [63:57] (7) : 0x0 packet rplind [56] (1) : 0x0 know UC ind [55] (1) : 0x1 pspid [54:52] (3) : 0x4 spllid [51:43] (9) : 0x0 traffic type [42:41] (2) : 0x0 pr_group_id [40:33] (8) : 0x0 marked [32] (1) : 0x0 cos [31:29] (3) : 0x7 die_id [28:27] (2) : 0x2
Head o 3 dpid [26:20] (7) : 0x0 dpllid [19:11] (9) : 0x0 full_pkt_size [10: 0](11) : 0x40