Buffers configuration update on port speed change (#1345)
* Move buffer configuration to ConfigDB Signed-off-by: Andriy Moroz <c_andriym@mellanox.com> * Converted Dell and Arista configs Signed-off-by: Andriy Moroz <c_andriym@mellanox.com> * Add buffer configs for ACS-MSN2740 Signed-off-by: Andriy Moroz <c_andriym@mellanox.com> * Updated buffers template Signed-off-by: Andriy Moroz <c_andriym@mellanox.com> * Fixed j2 unit test Signed-off-by: Andriy Moroz <c_andriym@mellanox.com> * Update buffers config for Force10-S6100 Signed-off-by: Andriy Moroz <c_andriym@mellanox.com> * Update VS docker to support speed and buffers test Signed-off-by: Andriy Moroz <c_andriym@mellanox.com> * Update buffers config generation - fixed support of sonic-to-sonic install Signed-off-by: Andriy Moroz <c_andriym@mellanox.com> * Update submodules pointers for buffers config Signed-off-by: Andriy Moroz <c_andriym@mellanox.com>
This commit is contained in:
parent
da10ff5aa9
commit
58d8302b53
@ -0,0 +1,135 @@
|
|||||||
|
{# Default values which will be used if no actual configura available #}
|
||||||
|
{% set default_cable = '300m' %}
|
||||||
|
{% set default_speed = '100G' %}
|
||||||
|
{% set default_ports_num = 32 -%}
|
||||||
|
|
||||||
|
{# Port configuration to cable length look-up table #}
|
||||||
|
{# Each record describes mapping of DUT (DUT port) role and neighbor role to cable length #}
|
||||||
|
{# Roles described in the minigraph #}
|
||||||
|
{% set ports2cable = {
|
||||||
|
'torrouter_server' : '5m',
|
||||||
|
'leafrouter_torrouter' : '40m',
|
||||||
|
'spinerouter_leafrouter' : '300m'
|
||||||
|
}
|
||||||
|
%}
|
||||||
|
|
||||||
|
{%- macro cable_length(port_name) -%}
|
||||||
|
{%- set cable_len = [] -%}
|
||||||
|
{%- for local_port in DEVICE_NEIGHBOR -%}
|
||||||
|
{%- if local_port == port_name -%}
|
||||||
|
{%- if DEVICE_NEIGHBOR_METADATA[DEVICE_NEIGHBOR[local_port].name] -%}
|
||||||
|
{%- set neighbor = DEVICE_NEIGHBOR_METADATA[DEVICE_NEIGHBOR[local_port].name] -%}
|
||||||
|
{%- set neighbor_role = neighbor.type -%}
|
||||||
|
{%- set roles1 = switch_role + '_' + neighbor_role %}
|
||||||
|
{%- set roles2 = neighbor_role + '_' + switch_role -%}
|
||||||
|
{%- set roles1 = roles1 | lower -%}
|
||||||
|
{%- set roles2 = roles2 | lower -%}
|
||||||
|
{%- if roles1 in ports2cable -%}
|
||||||
|
{%- if cable_len.append(ports2cable[roles1]) -%}{%- endif -%}
|
||||||
|
{%- elif roles2 in ports2cable -%}
|
||||||
|
{%- if cable_len.append(ports2cable[roles2]) -%}{%- endif -%}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- endfor -%}
|
||||||
|
{%- if cable_len -%}
|
||||||
|
{{ cable_len.0 }}
|
||||||
|
{%- else -%}
|
||||||
|
{{ default_cable }}
|
||||||
|
{%- endif -%}
|
||||||
|
{% endmacro %}
|
||||||
|
|
||||||
|
{%- if DEVICE_METADATA is defined %}
|
||||||
|
{%- set switch_role = DEVICE_METADATA['localhost']['type'] %}
|
||||||
|
{%- endif -%}
|
||||||
|
|
||||||
|
{# Generate list of ports if not defined #}
|
||||||
|
{% if PORT is not defined %}
|
||||||
|
{% set PORT = [] %}
|
||||||
|
{% for port_idx in range(0,default_ports_num) %}
|
||||||
|
{% if PORT.append("Ethernet%d" % (port_idx*4)) %}{% endif %}
|
||||||
|
{% endfor %}
|
||||||
|
{% endif -%}
|
||||||
|
|
||||||
|
{% set port_names_list = [] %}
|
||||||
|
{% for port in PORT %}
|
||||||
|
{%- if port_names_list.append(port) %}{% endif %}
|
||||||
|
{% endfor %}
|
||||||
|
{% set port_names = port_names_list | join(',') -%}
|
||||||
|
|
||||||
|
{
|
||||||
|
"CABLE_LENGTH": {
|
||||||
|
"AZURE": {
|
||||||
|
{% for port in PORT %}
|
||||||
|
{% set cable = cable_length(port) -%}
|
||||||
|
"{{ port }}": "{{ cable }}"{%- if not loop.last -%},{% endif %}
|
||||||
|
|
||||||
|
{% endfor %}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"BUFFER_POOL": {
|
||||||
|
"ingress_lossless_pool": {
|
||||||
|
"size": "7274496",
|
||||||
|
"type": "ingress",
|
||||||
|
"mode": "static"
|
||||||
|
},
|
||||||
|
"ingress_lossy_pool": {
|
||||||
|
"size": "5491712",
|
||||||
|
"type": "ingress",
|
||||||
|
"mode": "dynamic"
|
||||||
|
},
|
||||||
|
"egress_lossless_pool0": {
|
||||||
|
"size": "3637248",
|
||||||
|
"type": "egress",
|
||||||
|
"mode": "static"
|
||||||
|
},
|
||||||
|
"egress_lossless_pool1": {
|
||||||
|
"size": "3637248",
|
||||||
|
"type": "egress",
|
||||||
|
"mode": "static"
|
||||||
|
},
|
||||||
|
"egress_lossy_pool": {
|
||||||
|
"size": "5491712",
|
||||||
|
"type": "egress",
|
||||||
|
"mode": "dynamic"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"BUFFER_PROFILE": {
|
||||||
|
"ingress_lossy_profile": {
|
||||||
|
"pool":"[BUFFER_POOL|ingress_lossy_pool]",
|
||||||
|
"size":"1518",
|
||||||
|
"dynamic_th":"3"
|
||||||
|
},
|
||||||
|
"egress_lossless_profile0": {
|
||||||
|
"pool":"[BUFFER_POOL|egress_lossless_pool0]",
|
||||||
|
"size":"1518",
|
||||||
|
"static_th":"3637248"
|
||||||
|
},
|
||||||
|
"egress_lossless_profile1": {
|
||||||
|
"pool":"[BUFFER_POOL|egress_lossless_pool1]",
|
||||||
|
"size":"1518",
|
||||||
|
"static_th":"3637248"
|
||||||
|
},
|
||||||
|
"egress_lossy_profile": {
|
||||||
|
"pool":"[BUFFER_POOL|egress_lossy_pool]",
|
||||||
|
"size":"1518",
|
||||||
|
"dynamic_th":"3"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"BUFFER_PG": {
|
||||||
|
"{{ port_names }}|0-1": {
|
||||||
|
"profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"BUFFER_QUEUE": {
|
||||||
|
"{{ port_names }}|3": {
|
||||||
|
"profile" : "[BUFFER_PROFILE|egress_lossless_profile0]"
|
||||||
|
},
|
||||||
|
"{{ port_names }}|4": {
|
||||||
|
"profile" : "[BUFFER_PROFILE|egress_lossless_profile1]"
|
||||||
|
},
|
||||||
|
"{{ port_names }}|0-1": {
|
||||||
|
"profile" : "[BUFFER_PROFILE|egress_lossy_profile]"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,17 @@
|
|||||||
|
# PG lossless profiles.
|
||||||
|
# speed cable size xon xoff threshold
|
||||||
|
10000 5m 113664 18432 76800 0
|
||||||
|
25000 5m 113664 18432 76800 0
|
||||||
|
40000 5m 113664 18432 76800 0
|
||||||
|
50000 5m 113664 18432 76800 0
|
||||||
|
100000 5m 113664 18432 76800 0
|
||||||
|
10000 40m 113664 18432 76800 0
|
||||||
|
25000 40m 113664 18432 76800 0
|
||||||
|
40000 40m 113664 18432 76800 0
|
||||||
|
50000 40m 113664 18432 76800 0
|
||||||
|
100000 40m 113664 18432 76800 0
|
||||||
|
10000 300m 113664 18432 76800 0
|
||||||
|
25000 300m 113664 18432 76800 0
|
||||||
|
40000 300m 113664 18432 76800 0
|
||||||
|
50000 300m 113664 18432 76800 0
|
||||||
|
100000 300m 113664 18432 76800 0
|
@ -0,0 +1,135 @@
|
|||||||
|
{# Default values which will be used if no actual configura available #}
|
||||||
|
{% set default_cable = '300m' %}
|
||||||
|
{% set default_speed = '100G' %}
|
||||||
|
{% set default_ports_num = 32 -%}
|
||||||
|
|
||||||
|
{# Port configuration to cable length look-up table #}
|
||||||
|
{# Each record describes mapping of DUT (DUT port) role and neighbor role to cable length #}
|
||||||
|
{# Roles described in the minigraph #}
|
||||||
|
{% set ports2cable = {
|
||||||
|
'torrouter_server' : '5m',
|
||||||
|
'leafrouter_torrouter' : '40m',
|
||||||
|
'spinerouter_leafrouter' : '300m'
|
||||||
|
}
|
||||||
|
%}
|
||||||
|
|
||||||
|
{%- macro cable_length(port_name) -%}
|
||||||
|
{%- set cable_len = [] -%}
|
||||||
|
{%- for local_port in DEVICE_NEIGHBOR -%}
|
||||||
|
{%- if local_port == port_name -%}
|
||||||
|
{%- if DEVICE_NEIGHBOR_METADATA[DEVICE_NEIGHBOR[local_port].name] -%}
|
||||||
|
{%- set neighbor = DEVICE_NEIGHBOR_METADATA[DEVICE_NEIGHBOR[local_port].name] -%}
|
||||||
|
{%- set neighbor_role = neighbor.type -%}
|
||||||
|
{%- set roles1 = switch_role + '_' + neighbor_role %}
|
||||||
|
{%- set roles2 = neighbor_role + '_' + switch_role -%}
|
||||||
|
{%- set roles1 = roles1 | lower -%}
|
||||||
|
{%- set roles2 = roles2 | lower -%}
|
||||||
|
{%- if roles1 in ports2cable -%}
|
||||||
|
{%- if cable_len.append(ports2cable[roles1]) -%}{%- endif -%}
|
||||||
|
{%- elif roles2 in ports2cable -%}
|
||||||
|
{%- if cable_len.append(ports2cable[roles2]) -%}{%- endif -%}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- endfor -%}
|
||||||
|
{%- if cable_len -%}
|
||||||
|
{{ cable_len.0 }}
|
||||||
|
{%- else -%}
|
||||||
|
{{ default_cable }}
|
||||||
|
{%- endif -%}
|
||||||
|
{% endmacro %}
|
||||||
|
|
||||||
|
{%- if DEVICE_METADATA is defined %}
|
||||||
|
{%- set switch_role = DEVICE_METADATA['localhost']['type'] %}
|
||||||
|
{%- endif -%}
|
||||||
|
|
||||||
|
{# Generate list of ports if not defined #}
|
||||||
|
{% if PORT is not defined %}
|
||||||
|
{% set PORT = [] %}
|
||||||
|
{% for port_idx in range(0,default_ports_num) %}
|
||||||
|
{% if PORT.append("Ethernet%d" % (port_idx*4)) %}{% endif %}
|
||||||
|
{% endfor %}
|
||||||
|
{% endif -%}
|
||||||
|
|
||||||
|
{% set port_names_list = [] %}
|
||||||
|
{% for port in PORT %}
|
||||||
|
{%- if port_names_list.append(port) %}{% endif %}
|
||||||
|
{% endfor %}
|
||||||
|
{% set port_names = port_names_list | join(',') -%}
|
||||||
|
|
||||||
|
{
|
||||||
|
"CABLE_LENGTH": {
|
||||||
|
"AZURE": {
|
||||||
|
{% for port in PORT %}
|
||||||
|
{% set cable = cable_length(port) -%}
|
||||||
|
"{{ port }}": "{{ cable }}"{%- if not loop.last -%},{% endif %}
|
||||||
|
|
||||||
|
{% endfor %}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"BUFFER_POOL": {
|
||||||
|
"ingress_lossless_pool": {
|
||||||
|
"size": "7274496",
|
||||||
|
"type": "ingress",
|
||||||
|
"mode": "static"
|
||||||
|
},
|
||||||
|
"ingress_lossy_pool": {
|
||||||
|
"size": "5491712",
|
||||||
|
"type": "ingress",
|
||||||
|
"mode": "dynamic"
|
||||||
|
},
|
||||||
|
"egress_lossless_pool0": {
|
||||||
|
"size": "3637248",
|
||||||
|
"type": "egress",
|
||||||
|
"mode": "static"
|
||||||
|
},
|
||||||
|
"egress_lossless_pool1": {
|
||||||
|
"size": "3637248",
|
||||||
|
"type": "egress",
|
||||||
|
"mode": "static"
|
||||||
|
},
|
||||||
|
"egress_lossy_pool": {
|
||||||
|
"size": "5491712",
|
||||||
|
"type": "egress",
|
||||||
|
"mode": "dynamic"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"BUFFER_PROFILE": {
|
||||||
|
"ingress_lossy_profile": {
|
||||||
|
"pool":"[BUFFER_POOL|ingress_lossy_pool]",
|
||||||
|
"size":"1518",
|
||||||
|
"dynamic_th":"3"
|
||||||
|
},
|
||||||
|
"egress_lossless_profile0": {
|
||||||
|
"pool":"[BUFFER_POOL|egress_lossless_pool0]",
|
||||||
|
"size":"1518",
|
||||||
|
"static_th":"3637248"
|
||||||
|
},
|
||||||
|
"egress_lossless_profile1": {
|
||||||
|
"pool":"[BUFFER_POOL|egress_lossless_pool1]",
|
||||||
|
"size":"1518",
|
||||||
|
"static_th":"3637248"
|
||||||
|
},
|
||||||
|
"egress_lossy_profile": {
|
||||||
|
"pool":"[BUFFER_POOL|egress_lossy_pool]",
|
||||||
|
"size":"1518",
|
||||||
|
"dynamic_th":"3"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"BUFFER_PG": {
|
||||||
|
"{{ port_names }}|0-1": {
|
||||||
|
"profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"BUFFER_QUEUE": {
|
||||||
|
"{{ port_names }}|3": {
|
||||||
|
"profile" : "[BUFFER_PROFILE|egress_lossless_profile0]"
|
||||||
|
},
|
||||||
|
"{{ port_names }}|4": {
|
||||||
|
"profile" : "[BUFFER_PROFILE|egress_lossless_profile1]"
|
||||||
|
},
|
||||||
|
"{{ port_names }}|0-1": {
|
||||||
|
"profile" : "[BUFFER_PROFILE|egress_lossy_profile]"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,17 @@
|
|||||||
|
# PG lossless profiles.
|
||||||
|
# speed cable size xon xoff threshold
|
||||||
|
10000 5m 113664 18432 76800 0
|
||||||
|
25000 5m 113664 18432 76800 0
|
||||||
|
40000 5m 113664 18432 76800 0
|
||||||
|
50000 5m 113664 18432 76800 0
|
||||||
|
100000 5m 113664 18432 76800 0
|
||||||
|
10000 40m 113664 18432 76800 0
|
||||||
|
25000 40m 113664 18432 76800 0
|
||||||
|
40000 40m 113664 18432 76800 0
|
||||||
|
50000 40m 113664 18432 76800 0
|
||||||
|
100000 40m 113664 18432 76800 0
|
||||||
|
10000 300m 113664 18432 76800 0
|
||||||
|
25000 300m 113664 18432 76800 0
|
||||||
|
40000 300m 113664 18432 76800 0
|
||||||
|
50000 300m 113664 18432 76800 0
|
||||||
|
100000 300m 113664 18432 76800 0
|
@ -0,0 +1,126 @@
|
|||||||
|
{# Default values which will be used if no actual configura available #}
|
||||||
|
{% set default_cable = '300m' %}
|
||||||
|
{% set default_speed = '100G' %}
|
||||||
|
{% set default_ports_num = 64 -%}
|
||||||
|
|
||||||
|
{# Port configuration to cable length look-up table #}
|
||||||
|
{# Each record describes mapping of DUT (DUT port) role and neighbor role to cable length #}
|
||||||
|
{# Roles described in the minigraph #}
|
||||||
|
{% set ports2cable = {
|
||||||
|
'torrouter_server' : '5m',
|
||||||
|
'leafrouter_torrouter' : '40m',
|
||||||
|
'spinerouter_leafrouter' : '300m'
|
||||||
|
}
|
||||||
|
%}
|
||||||
|
|
||||||
|
{%- macro cable_length(port_name) -%}
|
||||||
|
{%- set cable_len = [] -%}
|
||||||
|
{%- for local_port in DEVICE_NEIGHBOR -%}
|
||||||
|
{%- if local_port == port_name -%}
|
||||||
|
{%- if DEVICE_NEIGHBOR_METADATA[DEVICE_NEIGHBOR[local_port].name] -%}
|
||||||
|
{%- set neighbor = DEVICE_NEIGHBOR_METADATA[DEVICE_NEIGHBOR[local_port].name] -%}
|
||||||
|
{%- set neighbor_role = neighbor.type -%}
|
||||||
|
{%- set roles1 = switch_role + '_' + neighbor_role %}
|
||||||
|
{%- set roles2 = neighbor_role + '_' + switch_role -%}
|
||||||
|
{%- set roles1 = roles1 | lower -%}
|
||||||
|
{%- set roles2 = roles2 | lower -%}
|
||||||
|
{%- if roles1 in ports2cable -%}
|
||||||
|
{%- if cable_len.append(ports2cable[roles1]) -%}{%- endif -%}
|
||||||
|
{%- elif roles2 in ports2cable -%}
|
||||||
|
{%- if cable_len.append(ports2cable[roles2]) -%}{%- endif -%}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- endfor -%}
|
||||||
|
{%- if cable_len -%}
|
||||||
|
{{ cable_len.0 }}
|
||||||
|
{%- else -%}
|
||||||
|
{{ default_cable }}
|
||||||
|
{%- endif -%}
|
||||||
|
{% endmacro %}
|
||||||
|
|
||||||
|
{%- if DEVICE_METADATA is defined %}
|
||||||
|
{%- set switch_role = DEVICE_METADATA['localhost']['type'] %}
|
||||||
|
{%- endif -%}
|
||||||
|
|
||||||
|
{# Generate list of ports if not defined #}
|
||||||
|
{% if PORT is not defined %}
|
||||||
|
{% set PORT = [] %}
|
||||||
|
{% for port_idx in range(0,default_ports_num) %}
|
||||||
|
{% if PORT.append("Ethernet%d" % port_idx) %}{% endif %}
|
||||||
|
{% endfor %}
|
||||||
|
{% endif -%}
|
||||||
|
|
||||||
|
{% set port_names_list = [] %}
|
||||||
|
{% for port in PORT %}
|
||||||
|
{%- if port_names_list.append(port) %}{% endif %}
|
||||||
|
{% endfor %}
|
||||||
|
{% set port_names = port_names_list | join(',') -%}
|
||||||
|
|
||||||
|
{
|
||||||
|
"CABLE_LENGTH": {
|
||||||
|
"AZURE": {
|
||||||
|
{% for port in PORT %}
|
||||||
|
{% set cable = cable_length(port) -%}
|
||||||
|
"{{ port }}": "{{ cable }}"{%- if not loop.last -%},{% endif %}
|
||||||
|
|
||||||
|
{% endfor %}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"BUFFER_POOL": {
|
||||||
|
"ingress_lossless_lossy_pool": {
|
||||||
|
"size": "10443264",
|
||||||
|
"type": "ingress",
|
||||||
|
"mode": "dynamic",
|
||||||
|
"xoff": "4625920"
|
||||||
|
},
|
||||||
|
"egress_lossy_pool": {
|
||||||
|
"size": "8877440",
|
||||||
|
"type": "egress",
|
||||||
|
"mode": "dynamic"
|
||||||
|
},
|
||||||
|
"egress_lossless_pool": {
|
||||||
|
"size": "15982592",
|
||||||
|
"type": "egress",
|
||||||
|
"mode": "static"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"BUFFER_PROFILE": {
|
||||||
|
"ingress_lossless_profile": {
|
||||||
|
"pool": "[BUFFER_POOL|ingress_lossless_lossy_pool]",
|
||||||
|
"xon": "4096",
|
||||||
|
"xoff": "58448",
|
||||||
|
"size": "1248",
|
||||||
|
"dynamic_th": "-4"
|
||||||
|
},
|
||||||
|
"ingress_lossy_profile": {
|
||||||
|
"pool":"[BUFFER_POOL|ingress_lossless_lossy_pool]",
|
||||||
|
"size":"0",
|
||||||
|
"dynamic_th":"3"
|
||||||
|
},
|
||||||
|
"egress_lossless_profile": {
|
||||||
|
"pool":"[BUFFER_POOL|egress_lossless_pool]",
|
||||||
|
"size":"1518",
|
||||||
|
"static_th":"3995648"
|
||||||
|
},
|
||||||
|
"egress_lossy_profile": {
|
||||||
|
"pool":"[BUFFER_POOL|egress_lossy_pool]",
|
||||||
|
"size":"1518",
|
||||||
|
"dynamic_th":"3"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"BUFFER_PG": {
|
||||||
|
"{{ port_names }}:3-4": {
|
||||||
|
"profile" : "[BUFFER_PROFILE|ingress_lossless_profile]"
|
||||||
|
},
|
||||||
|
"{{ port_names }}:0-1": {
|
||||||
|
"profile" : "[BUFFER_PROFILE|ingress_lossy_profile]"
|
||||||
|
},
|
||||||
|
"BUFFER_QUEUE_TABLE:{{ port_names }}:3-4": {
|
||||||
|
"profile" : "[BUFFER_PROFILE|egress_lossless_profile]"
|
||||||
|
},
|
||||||
|
"BUFFER_QUEUE_TABLE:{{ port_names }}:0-1": {
|
||||||
|
"profile" : "[BUFFER_PROFILE|egress_lossy_profile]"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,162 @@
|
|||||||
|
{# Default values which will be used if no actual configura available #}
|
||||||
|
{% set default_cable = '300m' %}
|
||||||
|
{% set default_ports_num = 32 -%}
|
||||||
|
|
||||||
|
{# Port configuration to cable length look-up table #}
|
||||||
|
{# Each record describes mapping of DUT (DUT port) role and neighbor role to cable length #}
|
||||||
|
{# Roles described in the minigraph #}
|
||||||
|
{% set ports2cable = {
|
||||||
|
'torrouter_server' : '5m',
|
||||||
|
'leafrouter_torrouter' : '40m',
|
||||||
|
'spinerouter_leafrouter' : '300m'
|
||||||
|
}
|
||||||
|
%}
|
||||||
|
|
||||||
|
{%- macro cable_length(port_name) -%}
|
||||||
|
{%- set cable_len = [] -%}
|
||||||
|
{%- for local_port in DEVICE_NEIGHBOR -%}
|
||||||
|
{%- if local_port == port_name -%}
|
||||||
|
{%- if DEVICE_NEIGHBOR_METADATA[DEVICE_NEIGHBOR[local_port].name] -%}
|
||||||
|
{%- set neighbor = DEVICE_NEIGHBOR_METADATA[DEVICE_NEIGHBOR[local_port].name] -%}
|
||||||
|
{%- set neighbor_role = neighbor.type -%}
|
||||||
|
{%- set roles1 = switch_role + '_' + neighbor_role %}
|
||||||
|
{%- set roles2 = neighbor_role + '_' + switch_role -%}
|
||||||
|
{%- set roles1 = roles1 | lower -%}
|
||||||
|
{%- set roles2 = roles2 | lower -%}
|
||||||
|
{%- if roles1 in ports2cable -%}
|
||||||
|
{%- if cable_len.append(ports2cable[roles1]) -%}{%- endif -%}
|
||||||
|
{%- elif roles2 in ports2cable -%}
|
||||||
|
{%- if cable_len.append(ports2cable[roles2]) -%}{%- endif -%}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- endfor -%}
|
||||||
|
{%- if cable_len -%}
|
||||||
|
{{ cable_len.0 }}
|
||||||
|
{%- else -%}
|
||||||
|
{{ default_cable }}
|
||||||
|
{%- endif -%}
|
||||||
|
{% endmacro %}
|
||||||
|
|
||||||
|
{%- if DEVICE_METADATA is defined %}
|
||||||
|
{%- set switch_role = DEVICE_METADATA['localhost']['type'] %}
|
||||||
|
{%- endif -%}
|
||||||
|
|
||||||
|
{# Generate list of ports if not defined #}
|
||||||
|
{% if PORT is not defined %}
|
||||||
|
{% set PORT = [] %}
|
||||||
|
{% for port_idx in range(0,default_ports_num) %}
|
||||||
|
{% if PORT.append("Ethernet%d" % (port_idx*4)) %}{% endif %}
|
||||||
|
{% endfor %}
|
||||||
|
{% endif -%}
|
||||||
|
|
||||||
|
{% set port_names_list = [] %}
|
||||||
|
{% for port in PORT %}
|
||||||
|
{%- if port_names_list.append(port) %}{% endif %}
|
||||||
|
{% endfor %}
|
||||||
|
{% set port_names = port_names_list | join(',') -%}
|
||||||
|
|
||||||
|
{
|
||||||
|
"CABLE_LENGTH": {
|
||||||
|
"AZURE": {
|
||||||
|
{% for port in PORT %}
|
||||||
|
{% set cable = cable_length(port) -%}
|
||||||
|
"{{ port }}": "{{ cable }}"{%- if not loop.last -%},{% endif %}
|
||||||
|
|
||||||
|
{% endfor %}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{%if switch_role == 'ToRRouter' %}
|
||||||
|
{% set ingress_lossless_pool_size = '4194304' %}
|
||||||
|
{% set ingress_lossy_pool_size = '7340032' %}
|
||||||
|
{% set egress_lossless_pool_size = '16777152' %}
|
||||||
|
{% set egress_lossy_pool_size = '7340032' %}
|
||||||
|
{% else %}
|
||||||
|
{% set ingress_lossless_pool_size = '2097152' %}
|
||||||
|
{% set ingress_lossy_pool_size = '5242880' %}
|
||||||
|
{% set egress_lossless_pool_size = '16777152' %}
|
||||||
|
{% set egress_lossy_pool_size = '5242880' %}
|
||||||
|
{%endif %}
|
||||||
|
"BUFFER_POOL": {
|
||||||
|
"ingress_lossless_pool": {
|
||||||
|
"size": "{{ ingress_lossless_pool_size }}",
|
||||||
|
"type": "ingress",
|
||||||
|
"mode": "dynamic"
|
||||||
|
},
|
||||||
|
"ingress_lossy_pool": {
|
||||||
|
"size": "{{ ingress_lossy_pool_size }}",
|
||||||
|
"type": "ingress",
|
||||||
|
"mode": "dynamic"
|
||||||
|
},
|
||||||
|
"egress_lossless_pool": {
|
||||||
|
"size": "{{ egress_lossless_pool_size }}",
|
||||||
|
"type": "egress",
|
||||||
|
"mode": "dynamic"
|
||||||
|
},
|
||||||
|
"egress_lossy_pool": {
|
||||||
|
"size": "{{ egress_lossy_pool_size }}",
|
||||||
|
"type": "egress",
|
||||||
|
"mode": "dynamic"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"BUFFER_PROFILE": {
|
||||||
|
"ingress_lossless_profile": {
|
||||||
|
"pool":"[BUFFER_POOL|ingress_lossless_pool]",
|
||||||
|
"size":"0",
|
||||||
|
"dynamic_th":"0"
|
||||||
|
},
|
||||||
|
"ingress_lossy_profile": {
|
||||||
|
"pool":"[BUFFER_POOL|ingress_lossy_pool]",
|
||||||
|
"size":"0",
|
||||||
|
"dynamic_th":"3"
|
||||||
|
},
|
||||||
|
"egress_lossless_profile": {
|
||||||
|
"pool":"[BUFFER_POOL|egress_lossless_pool]",
|
||||||
|
"size":"0",
|
||||||
|
"dynamic_th":"7"
|
||||||
|
},
|
||||||
|
"egress_lossy_profile": {
|
||||||
|
"pool":"[BUFFER_POOL|egress_lossy_pool]",
|
||||||
|
"size":"4096",
|
||||||
|
"dynamic_th":"3"
|
||||||
|
},
|
||||||
|
"pg_lossy_profile": {
|
||||||
|
"pool":"[BUFFER_POOL|ingress_lossy_pool]",
|
||||||
|
"size":"0",
|
||||||
|
"dynamic_th":"3"
|
||||||
|
},
|
||||||
|
"q_lossless_profile": {
|
||||||
|
"pool":"[BUFFER_POOL|egress_lossless_pool]",
|
||||||
|
"size":"0",
|
||||||
|
"dynamic_th":"7"
|
||||||
|
},
|
||||||
|
"q_lossy_profile": {
|
||||||
|
"pool":"[BUFFER_POOL|egress_lossy_pool]",
|
||||||
|
"size":"0",
|
||||||
|
"dynamic_th":"3"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"BUFFER_PORT_INGRESS_PROFILE_LIST": {
|
||||||
|
"{{ port_names }}": {
|
||||||
|
"profile_list" : "[BUFFER_PROFILE|ingress_lossless_profile],[BUFFER_PROFILE|ingress_lossy_profile]"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"BUFFER_PORT_EGRESS_PROFILE_LIST": {
|
||||||
|
"{{ port_names }}": {
|
||||||
|
"profile_list" : "[BUFFER_PROFILE|egress_lossless_profile],[BUFFER_PROFILE|egress_lossy_profile]"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"BUFFER_PG": {
|
||||||
|
"{{ port_names }}|0-1": {
|
||||||
|
"profile" : "[BUFFER_PROFILE|pg_lossy_profile]"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"BUFFER_QUEUE": {
|
||||||
|
"{{ port_names }}|3-4": {
|
||||||
|
"profile" : "[BUFFER_PROFILE|q_lossless_profile]"
|
||||||
|
},
|
||||||
|
"{{ port_names }}|0-1": {
|
||||||
|
"profile" : "[BUFFER_PROFILE|q_lossy_profile]"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,17 @@
|
|||||||
|
# PG lossless profiles.
|
||||||
|
# speed cable size xon xoff threshold
|
||||||
|
10000 5m 34816 18432 16384 0
|
||||||
|
25000 5m 34816 18432 16384 0
|
||||||
|
40000 5m 34816 18432 16384 0
|
||||||
|
50000 5m 34816 18432 16384 0
|
||||||
|
100000 5m 36864 18432 18432 0
|
||||||
|
10000 40m 36864 18432 18432 0
|
||||||
|
25000 40m 39936 18432 21504 0
|
||||||
|
40000 40m 41984 18432 23552 0
|
||||||
|
50000 40m 41984 18432 23552 0
|
||||||
|
100000 40m 54272 18432 35840 0
|
||||||
|
10000 300m 49152 18432 30720 0
|
||||||
|
25000 300m 71680 18432 53248 0
|
||||||
|
40000 300m 94208 18432 75776 0
|
||||||
|
50000 300m 94208 18432 75776 0
|
||||||
|
100000 300m 184320 18432 165888 0
|
@ -0,0 +1,162 @@
|
|||||||
|
{# Default values which will be used if no actual configura available #}
|
||||||
|
{% set default_cable = '300m' %}
|
||||||
|
{% set default_ports_num = 32 -%}
|
||||||
|
|
||||||
|
{# Port configuration to cable length look-up table #}
|
||||||
|
{# Each record describes mapping of DUT (DUT port) role and neighbor role to cable length #}
|
||||||
|
{# Roles described in the minigraph #}
|
||||||
|
{% set ports2cable = {
|
||||||
|
'torrouter_server' : '5m',
|
||||||
|
'leafrouter_torrouter' : '40m',
|
||||||
|
'spinerouter_leafrouter' : '300m'
|
||||||
|
}
|
||||||
|
%}
|
||||||
|
|
||||||
|
{%- macro cable_length(port_name) -%}
|
||||||
|
{%- set cable_len = [] -%}
|
||||||
|
{%- for local_port in DEVICE_NEIGHBOR -%}
|
||||||
|
{%- if local_port == port_name -%}
|
||||||
|
{%- if DEVICE_NEIGHBOR_METADATA[DEVICE_NEIGHBOR[local_port].name] -%}
|
||||||
|
{%- set neighbor = DEVICE_NEIGHBOR_METADATA[DEVICE_NEIGHBOR[local_port].name] -%}
|
||||||
|
{%- set neighbor_role = neighbor.type -%}
|
||||||
|
{%- set roles1 = switch_role + '_' + neighbor_role %}
|
||||||
|
{%- set roles2 = neighbor_role + '_' + switch_role -%}
|
||||||
|
{%- set roles1 = roles1 | lower -%}
|
||||||
|
{%- set roles2 = roles2 | lower -%}
|
||||||
|
{%- if roles1 in ports2cable -%}
|
||||||
|
{%- if cable_len.append(ports2cable[roles1]) -%}{%- endif -%}
|
||||||
|
{%- elif roles2 in ports2cable -%}
|
||||||
|
{%- if cable_len.append(ports2cable[roles2]) -%}{%- endif -%}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- endfor -%}
|
||||||
|
{%- if cable_len -%}
|
||||||
|
{{ cable_len.0 }}
|
||||||
|
{%- else -%}
|
||||||
|
{{ default_cable }}
|
||||||
|
{%- endif -%}
|
||||||
|
{% endmacro %}
|
||||||
|
|
||||||
|
{%- if DEVICE_METADATA is defined %}
|
||||||
|
{%- set switch_role = DEVICE_METADATA['localhost']['type'] %}
|
||||||
|
{%- endif -%}
|
||||||
|
|
||||||
|
{# Generate list of ports if not defined #}
|
||||||
|
{% if PORT is not defined %}
|
||||||
|
{% set PORT = [] %}
|
||||||
|
{% for port_idx in range(0,default_ports_num) %}
|
||||||
|
{% if PORT.append("Ethernet%d" % (port_idx*4)) %}{% endif %}
|
||||||
|
{% endfor %}
|
||||||
|
{% endif -%}
|
||||||
|
|
||||||
|
{% set port_names_list = [] %}
|
||||||
|
{% for port in PORT %}
|
||||||
|
{%- if port_names_list.append(port) %}{% endif %}
|
||||||
|
{% endfor %}
|
||||||
|
{% set port_names = port_names_list | join(',') -%}
|
||||||
|
|
||||||
|
{
|
||||||
|
"CABLE_LENGTH": {
|
||||||
|
"AZURE": {
|
||||||
|
{% for port in PORT %}
|
||||||
|
{% set cable = cable_length(port) -%}
|
||||||
|
"{{ port }}": "{{ cable }}"{%- if not loop.last -%},{% endif %}
|
||||||
|
|
||||||
|
{% endfor %}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{%if switch_role == 'ToRRouter' %}
|
||||||
|
{% set ingress_lossless_pool_size = '4194304' %}
|
||||||
|
{% set ingress_lossy_pool_size = '7340032' %}
|
||||||
|
{% set egress_lossless_pool_size = '16777152' %}
|
||||||
|
{% set egress_lossy_pool_size = '7340032' %}
|
||||||
|
{% else %}
|
||||||
|
{% set ingress_lossless_pool_size = '2097152' %}
|
||||||
|
{% set ingress_lossy_pool_size = '5242880' %}
|
||||||
|
{% set egress_lossless_pool_size = '16777152' %}
|
||||||
|
{% set egress_lossy_pool_size = '5242880' %}
|
||||||
|
{%endif %}
|
||||||
|
"BUFFER_POOL": {
|
||||||
|
"ingress_lossless_pool": {
|
||||||
|
"size": "{{ ingress_lossless_pool_size }}",
|
||||||
|
"type": "ingress",
|
||||||
|
"mode": "dynamic"
|
||||||
|
},
|
||||||
|
"ingress_lossy_pool": {
|
||||||
|
"size": "{{ ingress_lossy_pool_size }}",
|
||||||
|
"type": "ingress",
|
||||||
|
"mode": "dynamic"
|
||||||
|
},
|
||||||
|
"egress_lossless_pool": {
|
||||||
|
"size": "{{ egress_lossless_pool_size }}",
|
||||||
|
"type": "egress",
|
||||||
|
"mode": "dynamic"
|
||||||
|
},
|
||||||
|
"egress_lossy_pool": {
|
||||||
|
"size": "{{ egress_lossy_pool_size }}",
|
||||||
|
"type": "egress",
|
||||||
|
"mode": "dynamic"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"BUFFER_PROFILE": {
|
||||||
|
"ingress_lossless_profile": {
|
||||||
|
"pool":"[BUFFER_POOL|ingress_lossless_pool]",
|
||||||
|
"size":"0",
|
||||||
|
"dynamic_th":"0"
|
||||||
|
},
|
||||||
|
"ingress_lossy_profile": {
|
||||||
|
"pool":"[BUFFER_POOL|ingress_lossy_pool]",
|
||||||
|
"size":"0",
|
||||||
|
"dynamic_th":"3"
|
||||||
|
},
|
||||||
|
"egress_lossless_profile": {
|
||||||
|
"pool":"[BUFFER_POOL|egress_lossless_pool]",
|
||||||
|
"size":"0",
|
||||||
|
"dynamic_th":"7"
|
||||||
|
},
|
||||||
|
"egress_lossy_profile": {
|
||||||
|
"pool":"[BUFFER_POOL|egress_lossy_pool]",
|
||||||
|
"size":"4096",
|
||||||
|
"dynamic_th":"3"
|
||||||
|
},
|
||||||
|
"pg_lossy_profile": {
|
||||||
|
"pool":"[BUFFER_POOL|ingress_lossy_pool]",
|
||||||
|
"size":"0",
|
||||||
|
"dynamic_th":"3"
|
||||||
|
},
|
||||||
|
"q_lossless_profile": {
|
||||||
|
"pool":"[BUFFER_POOL|egress_lossless_pool]",
|
||||||
|
"size":"0",
|
||||||
|
"dynamic_th":"7"
|
||||||
|
},
|
||||||
|
"q_lossy_profile": {
|
||||||
|
"pool":"[BUFFER_POOL|egress_lossy_pool]",
|
||||||
|
"size":"0",
|
||||||
|
"dynamic_th":"3"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"BUFFER_PORT_INGRESS_PROFILE_LIST": {
|
||||||
|
"{{ port_names }}": {
|
||||||
|
"profile_list" : "[BUFFER_PROFILE|ingress_lossless_profile],[BUFFER_PROFILE|ingress_lossy_profile]"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"BUFFER_PORT_EGRESS_PROFILE_LIST": {
|
||||||
|
"{{ port_names }}": {
|
||||||
|
"profile_list" : "[BUFFER_PROFILE|egress_lossless_profile],[BUFFER_PROFILE|egress_lossy_profile]"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"BUFFER_PG": {
|
||||||
|
"{{ port_names }}|0-1": {
|
||||||
|
"profile" : "[BUFFER_PROFILE|pg_lossy_profile]"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"BUFFER_QUEUE": {
|
||||||
|
"{{ port_names }}|3-4": {
|
||||||
|
"profile" : "[BUFFER_PROFILE|q_lossless_profile]"
|
||||||
|
},
|
||||||
|
"{{ port_names }}|0-1": {
|
||||||
|
"profile" : "[BUFFER_PROFILE|q_lossy_profile]"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,17 @@
|
|||||||
|
# PG lossless profiles.
|
||||||
|
# speed cable size xon xoff threshold
|
||||||
|
10000 5m 34816 18432 16384 0
|
||||||
|
25000 5m 34816 18432 16384 0
|
||||||
|
40000 5m 34816 18432 16384 0
|
||||||
|
50000 5m 34816 18432 16384 0
|
||||||
|
100000 5m 36864 18432 18432 0
|
||||||
|
10000 40m 36864 18432 18432 0
|
||||||
|
25000 40m 39936 18432 21504 0
|
||||||
|
40000 40m 41984 18432 23552 0
|
||||||
|
50000 40m 41984 18432 23552 0
|
||||||
|
100000 40m 54272 18432 35840 0
|
||||||
|
10000 300m 49152 18432 30720 0
|
||||||
|
25000 300m 71680 18432 53248 0
|
||||||
|
40000 300m 94208 18432 75776 0
|
||||||
|
50000 300m 94208 18432 75776 0
|
||||||
|
100000 300m 184320 18432 165888 0
|
@ -1,292 +0,0 @@
|
|||||||
[
|
|
||||||
{% set port_names_list = [] %}
|
|
||||||
{% for port in PORT %}
|
|
||||||
{%- if port_names_list.append(port) %}{% endif %}
|
|
||||||
{% endfor %}
|
|
||||||
{% set port_names = port_names_list | join(',') %}
|
|
||||||
{% set switch_role = DEVICE_METADATA['localhost']['type'] %}
|
|
||||||
{%if switch_role == 'ToRRouter' %}
|
|
||||||
{% set ingress_lossless_pool_size = '4194304' %}
|
|
||||||
{% set ingress_lossy_pool_size = '7340032' %}
|
|
||||||
{% set egress_lossless_pool_size = '16777152' %}
|
|
||||||
{% set egress_lossy_pool_size = '7340032' %}
|
|
||||||
{% else %}
|
|
||||||
{% set ingress_lossless_pool_size = '2097152' %}
|
|
||||||
{% set ingress_lossy_pool_size = '5242880' %}
|
|
||||||
{% set egress_lossless_pool_size = '16777152' %}
|
|
||||||
{% set egress_lossy_pool_size = '5242880' %}
|
|
||||||
{%endif %}
|
|
||||||
{
|
|
||||||
"BUFFER_POOL_TABLE:ingress_lossless_pool": {
|
|
||||||
"size": "{{ ingress_lossless_pool_size }}",
|
|
||||||
"type": "ingress",
|
|
||||||
"mode": "dynamic"
|
|
||||||
},
|
|
||||||
"OP": "SET"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"BUFFER_POOL_TABLE:ingress_lossy_pool": {
|
|
||||||
"size": "{{ ingress_lossy_pool_size }}",
|
|
||||||
"type": "ingress",
|
|
||||||
"mode": "dynamic"
|
|
||||||
},
|
|
||||||
"OP": "SET"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"BUFFER_POOL_TABLE:egress_lossless_pool": {
|
|
||||||
"size": "{{ egress_lossless_pool_size }}",
|
|
||||||
"type": "egress",
|
|
||||||
"mode": "dynamic"
|
|
||||||
},
|
|
||||||
"OP": "SET"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"BUFFER_POOL_TABLE:egress_lossy_pool": {
|
|
||||||
"size": "{{ egress_lossy_pool_size }}",
|
|
||||||
"type": "egress",
|
|
||||||
"mode": "dynamic"
|
|
||||||
},
|
|
||||||
"OP": "SET"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"BUFFER_PROFILE_TABLE:ingress_lossless_profile": {
|
|
||||||
"pool":"[BUFFER_POOL_TABLE:ingress_lossless_pool]",
|
|
||||||
"size":"0",
|
|
||||||
"dynamic_th":"0"
|
|
||||||
},
|
|
||||||
"OP": "SET"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"BUFFER_PROFILE_TABLE:ingress_lossy_profile": {
|
|
||||||
"pool":"[BUFFER_POOL_TABLE:ingress_lossy_pool]",
|
|
||||||
"size":"0",
|
|
||||||
"dynamic_th":"3"
|
|
||||||
},
|
|
||||||
"OP": "SET"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"BUFFER_PROFILE_TABLE:egress_lossless_profile": {
|
|
||||||
"pool":"[BUFFER_POOL_TABLE:egress_lossless_pool]",
|
|
||||||
"size":"0",
|
|
||||||
"dynamic_th":"7"
|
|
||||||
},
|
|
||||||
"OP": "SET"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"BUFFER_PROFILE_TABLE:egress_lossy_profile": {
|
|
||||||
"pool":"[BUFFER_POOL_TABLE:egress_lossy_pool]",
|
|
||||||
"size":"4096",
|
|
||||||
"dynamic_th":"3"
|
|
||||||
},
|
|
||||||
"OP": "SET"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"BUFFER_PROFILE_TABLE:pg_lossy_profile": {
|
|
||||||
"pool":"[BUFFER_POOL_TABLE:ingress_lossy_pool]",
|
|
||||||
"size":"0",
|
|
||||||
"dynamic_th":"3"
|
|
||||||
},
|
|
||||||
"OP": "SET"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"BUFFER_PROFILE_TABLE:q_lossless_profile": {
|
|
||||||
"pool":"[BUFFER_POOL_TABLE:egress_lossless_pool]",
|
|
||||||
"size":"0",
|
|
||||||
"dynamic_th":"7"
|
|
||||||
},
|
|
||||||
"OP": "SET"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"BUFFER_PROFILE_TABLE:q_lossy_profile": {
|
|
||||||
"pool":"[BUFFER_POOL_TABLE:egress_lossy_pool]",
|
|
||||||
"size":"0",
|
|
||||||
"dynamic_th":"3"
|
|
||||||
},
|
|
||||||
"OP": "SET"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"BUFFER_PORT_INGRESS_PROFILE_LIST:{{ port_names }}": {
|
|
||||||
"profile_list" : "[BUFFER_PROFILE_TABLE:ingress_lossless_profile],[BUFFER_PROFILE_TABLE:ingress_lossy_profile]"
|
|
||||||
},
|
|
||||||
"OP": "SET"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"BUFFER_PORT_EGRESS_PROFILE_LIST:{{ port_names }}": {
|
|
||||||
"profile_list" : "[BUFFER_PROFILE_TABLE:egress_lossless_profile],[BUFFER_PROFILE_TABLE:egress_lossy_profile]"
|
|
||||||
},
|
|
||||||
"OP": "SET"
|
|
||||||
},
|
|
||||||
|
|
||||||
{# The following template part is for variable PG profile configuration #}
|
|
||||||
{% set pg_range = '3-4' %}
|
|
||||||
{# Lists of supported speed and cable length #}
|
|
||||||
{% set supported_speed = [10000, 25000, 40000, 50000, 100000] %}
|
|
||||||
{% set supported_cable = [5, 40, 300] %}
|
|
||||||
|
|
||||||
{# The key in this lictionary consist of two parts: (port speed)_(cable length) #}
|
|
||||||
{%- set portconfig2profile = {
|
|
||||||
'10000_5' : 'pg_lossless_10G_5m_profile',
|
|
||||||
'25000_5' : 'pg_lossless_25G_5m_profile',
|
|
||||||
'40000_5' : 'pg_lossless_40G_5m_profile',
|
|
||||||
'50000_5' : 'pg_lossless_50G_5m_profile',
|
|
||||||
'100000_5' : 'pg_lossless_100G_5m_profile',
|
|
||||||
|
|
||||||
'10000_40' : 'pg_lossless_10G_40m_profile',
|
|
||||||
'25000_40' : 'pg_lossless_25G_40m_profile',
|
|
||||||
'40000_40' : 'pg_lossless_40G_40m_profile',
|
|
||||||
'50000_40' : 'pg_lossless_50G_40m_profile',
|
|
||||||
'100000_40' : 'pg_lossless_100G_40m_profile',
|
|
||||||
|
|
||||||
'10000_300' : 'pg_lossless_10G_300m_profile',
|
|
||||||
'25000_300' : 'pg_lossless_25G_300m_profile',
|
|
||||||
'40000_300' : 'pg_lossless_40G_300m_profile',
|
|
||||||
'50000_300' : 'pg_lossless_50G_300m_profile',
|
|
||||||
'100000_300': 'pg_lossless_100G_300m_profile'
|
|
||||||
}
|
|
||||||
-%}
|
|
||||||
|
|
||||||
{# PG profiles. All profiles reffered in portconfig2profile dictionary should be declared here #}
|
|
||||||
{# Only those which were actually used will be created in SAI #}
|
|
||||||
{%- set pg_profiles = {
|
|
||||||
'pg_lossless_10G_5m_profile': { 'xon': 18432, 'xoff': 16384, 'size': 34816, 'dynamic_th': 0 },
|
|
||||||
'pg_lossless_25G_5m_profile': { 'xon': 18432, 'xoff': 16384, 'size': 34816, 'dynamic_th': 0 },
|
|
||||||
'pg_lossless_40G_5m_profile': { 'xon': 18432, 'xoff': 16384, 'size': 34816, 'dynamic_th': 0 },
|
|
||||||
'pg_lossless_50G_5m_profile': { 'xon': 18432, 'xoff': 16384, 'size': 34816, 'dynamic_th': 0 },
|
|
||||||
'pg_lossless_100G_5m_profile': { 'xon': 18432, 'xoff': 18432, 'size': 36864, 'dynamic_th': 0 },
|
|
||||||
|
|
||||||
'pg_lossless_10G_40m_profile': { 'xon': 18432, 'xoff': 18432, 'size': 36864, 'dynamic_th': 0 },
|
|
||||||
'pg_lossless_25G_40m_profile': { 'xon': 18432, 'xoff': 21504, 'size': 39936, 'dynamic_th': 0 },
|
|
||||||
'pg_lossless_40G_40m_profile': { 'xon': 18432, 'xoff': 23552, 'size': 41984, 'dynamic_th': 0 },
|
|
||||||
'pg_lossless_50G_40m_profile': { 'xon': 18432, 'xoff': 23552, 'size': 41984, 'dynamic_th': 0 },
|
|
||||||
'pg_lossless_100G_40m_profile': { 'xon': 18432, 'xoff': 35840, 'size': 54272, 'dynamic_th': 0 },
|
|
||||||
|
|
||||||
'pg_lossless_10G_300m_profile': { 'xon': 18432, 'xoff': 30720, 'size': 49152, 'dynamic_th': 0 },
|
|
||||||
'pg_lossless_25G_300m_profile': { 'xon': 18432, 'xoff': 53248, 'size': 71680, 'dynamic_th': 0 },
|
|
||||||
'pg_lossless_40G_300m_profile': { 'xon': 18432, 'xoff': 75776, 'size': 94208, 'dynamic_th': 0 },
|
|
||||||
'pg_lossless_50G_300m_profile': { 'xon': 18432, 'xoff': 75776, 'size': 94208, 'dynamic_th': 0 },
|
|
||||||
'pg_lossless_100G_300m_profile':{ 'xon': 18432, 'xoff': 165888,'size': 184320,'dynamic_th': 0 },
|
|
||||||
}
|
|
||||||
-%}
|
|
||||||
|
|
||||||
{# Port configuration to cable length look-up table #}
|
|
||||||
{# Each record describes mapping of DUT (DUT port) role and neighbor role to cable length #}
|
|
||||||
{# Roles described in the minigraph #}
|
|
||||||
{% set ports2cable = {
|
|
||||||
'ToRRouter_Server' : '5',
|
|
||||||
'LeafRouter_ToRRouter' : '40',
|
|
||||||
'SpineRouter_LeafRouter' : '300'
|
|
||||||
}
|
|
||||||
%}
|
|
||||||
|
|
||||||
{% macro cable_length(port_name) -%}
|
|
||||||
{%- set cable_len = [] -%}
|
|
||||||
{%- for local_port in DEVICE_NEIGHBOR -%}
|
|
||||||
{%- if local_port == port_name -%}
|
|
||||||
{%- if DEVICE_NEIGHBOR_METADATA is defined and DEVICE_NEIGHBOR_METADATA[DEVICE_NEIGHBOR[local_port].name] -%}
|
|
||||||
{%- set neighbor = DEVICE_NEIGHBOR_METADATA[DEVICE_NEIGHBOR[local_port].name] -%}
|
|
||||||
{%- set neighbor_role = neighbor.type -%}
|
|
||||||
{%- set roles1 = switch_role + '_' + neighbor_role %}
|
|
||||||
{%- set roles2 = neighbor_role + '_' + switch_role -%}
|
|
||||||
{%- if roles1 in ports2cable -%}
|
|
||||||
{%- if cable_len.append(ports2cable[roles1]) -%}{%- endif -%}
|
|
||||||
{%- elif roles2 in ports2cable -%}
|
|
||||||
{%- if cable_len.append(ports2cable[roles2]) -%}{%- endif -%}
|
|
||||||
{%- endif -%}
|
|
||||||
{% endif %}
|
|
||||||
{% endif %}
|
|
||||||
{%- endfor -%}
|
|
||||||
{%- if cable_len -%}
|
|
||||||
{{ cable_len.0 }}
|
|
||||||
{%- else -%}
|
|
||||||
{{ supported_cable | last }}
|
|
||||||
{%- endif -%}
|
|
||||||
{% endmacro %}
|
|
||||||
|
|
||||||
{%- macro find_closest_greater_config(speed, cable) -%}
|
|
||||||
{%- set new_speed = [] -%}
|
|
||||||
{%- for std_speed in supported_speed -%}
|
|
||||||
{%- if std_speed | int >= speed | int -%}
|
|
||||||
{%- if new_speed.append(std_speed) -%}{%- endif -%}
|
|
||||||
{% endif -%}
|
|
||||||
{%- endfor -%}
|
|
||||||
{%- set new_cable = [] -%}
|
|
||||||
{%- for std_cable in supported_cable -%}
|
|
||||||
{% if std_cable | int >= cable | int -%}
|
|
||||||
{%- if new_cable.append(std_cable) -%}{%- endif -%}
|
|
||||||
{% endif %}
|
|
||||||
{%- endfor -%}
|
|
||||||
{{ new_speed.0 }}_{{ new_cable.0 }}
|
|
||||||
{%- endmacro -%}
|
|
||||||
|
|
||||||
{% set used_pg_profiles = [] %}
|
|
||||||
{% for port in PORT %}
|
|
||||||
{%- if PORT[port].speed -%}
|
|
||||||
{%- set speed = PORT[port]['speed'] -%}
|
|
||||||
{% else %}
|
|
||||||
{%- set speed = supported_speed|last -%}
|
|
||||||
{%- endif -%}
|
|
||||||
{%- set cable = cable_length(port) -%}
|
|
||||||
{%- set port_config = speed|string + '_' + cable -%}
|
|
||||||
{%- if not port_config in portconfig2profile -%}
|
|
||||||
{% set port_config = find_closest_greater_config(speed, cable) -%}
|
|
||||||
{%- endif -%}
|
|
||||||
{% set profile = portconfig2profile[port_config] -%}
|
|
||||||
{# add to list profiles which were actually used #}
|
|
||||||
{%- if profile not in used_pg_profiles and used_pg_profiles.append(profile) %}{% endif %}
|
|
||||||
{
|
|
||||||
"BUFFER_PG_TABLE:{{ port }}:{{ pg_range }}": {
|
|
||||||
"profile" : "[BUFFER_PROFILE_TABLE:{{ profile }}]"
|
|
||||||
},
|
|
||||||
"OP": "SET"
|
|
||||||
},
|
|
||||||
{% endfor -%}
|
|
||||||
|
|
||||||
{# PG profiles declaration #}
|
|
||||||
|
|
||||||
{% for profile_name in used_pg_profiles %}
|
|
||||||
{%- set profile_config = pg_profiles[profile_name] %}
|
|
||||||
{
|
|
||||||
"BUFFER_PROFILE_TABLE:{{ profile_name }}": {
|
|
||||||
"pool":"[BUFFER_POOL_TABLE:ingress_lossless_pool]",
|
|
||||||
"xon":"{{ profile_config['xon'] }}",
|
|
||||||
"xoff":"{{ profile_config['xoff'] }}",
|
|
||||||
"size":"{{ profile_config['size'] }}",
|
|
||||||
"dynamic_th":"{{ profile_config['dynamic_th'] }}"
|
|
||||||
},
|
|
||||||
"OP": "SET"
|
|
||||||
},
|
|
||||||
{% endfor %}
|
|
||||||
{
|
|
||||||
"BUFFER_PG_TABLE:{{ port_names }}:0-1": {
|
|
||||||
"profile" : "[BUFFER_PROFILE_TABLE:pg_lossy_profile]"
|
|
||||||
},
|
|
||||||
"OP": "SET"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"BUFFER_QUEUE_TABLE:{{ port_names }}:3-4": {
|
|
||||||
"profile" : "[BUFFER_PROFILE_TABLE:q_lossless_profile]"
|
|
||||||
},
|
|
||||||
"OP": "SET"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"BUFFER_QUEUE_TABLE:{{ port_names }}:0-1": {
|
|
||||||
"profile" : "[BUFFER_PROFILE_TABLE:q_lossy_profile]"
|
|
||||||
},
|
|
||||||
"OP": "SET"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"PFC_PRIORITY_TO_PRIORITY_GROUP_MAP_TABLE:AZURE": {
|
|
||||||
"0": "0",
|
|
||||||
"1": "1",
|
|
||||||
"3": "3",
|
|
||||||
"4": "4"
|
|
||||||
},
|
|
||||||
"OP": "SET"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"PORT_QOS_MAP_TABLE:{{ port_names }}": {
|
|
||||||
"pfc_to_pg_map" : "[PFC_PRIORITY_TO_PRIORITY_GROUP_MAP_TABLE:AZURE]"
|
|
||||||
},
|
|
||||||
"OP": "SET"
|
|
||||||
}
|
|
||||||
]
|
|
@ -1,7 +1,12 @@
|
|||||||
[
|
[
|
||||||
|
{% set ports_with_speed_set=[] %}
|
||||||
{% if PORT %}
|
{% if PORT %}
|
||||||
{% for port in PORT %}
|
{% for port in PORT %}
|
||||||
{% if PORT[port].has_key('speed') %}
|
{% if PORT[port].has_key('speed') %}
|
||||||
|
{%- if ports_with_speed_set.append(port) -%}{%- endif -%}
|
||||||
|
{%- endif -%}
|
||||||
|
{% endfor %}
|
||||||
|
{% for port in ports_with_speed_set %}
|
||||||
{
|
{
|
||||||
"PORT_TABLE:{{ port }}": {
|
"PORT_TABLE:{{ port }}": {
|
||||||
"speed": "{{ PORT[port]['speed'] }}",
|
"speed": "{{ PORT[port]['speed'] }}",
|
||||||
@ -10,7 +15,6 @@
|
|||||||
"OP": "SET"
|
"OP": "SET"
|
||||||
}{% if not loop.last %},{% endif %}
|
}{% if not loop.last %},{% endif %}
|
||||||
|
|
||||||
{% endif %}
|
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
]
|
]
|
||||||
|
@ -26,6 +26,8 @@ supervisorctl start vlanmgrd
|
|||||||
|
|
||||||
supervisorctl start intfmgrd
|
supervisorctl start intfmgrd
|
||||||
|
|
||||||
|
supervisorctl start buffermgrd
|
||||||
|
|
||||||
# Start arp_update when VLAN exists
|
# Start arp_update when VLAN exists
|
||||||
VLAN=`sonic-cfggen -d -v 'VLAN.keys() | join(" ") if VLAN'`
|
VLAN=`sonic-cfggen -d -v 'VLAN.keys() | join(" ") if VLAN'`
|
||||||
if [ "$VLAN" != "" ]; then
|
if [ "$VLAN" != "" ]; then
|
||||||
|
@ -83,3 +83,11 @@ autostart=false
|
|||||||
autorestart=false
|
autorestart=false
|
||||||
stdout_logfile=syslog
|
stdout_logfile=syslog
|
||||||
stderr_logfile=syslog
|
stderr_logfile=syslog
|
||||||
|
|
||||||
|
[program:buffermgrd]
|
||||||
|
command=/usr/bin/buffermgrd -l /usr/share/sonic/hwsku/pg_profile_lookup.ini
|
||||||
|
priority=10
|
||||||
|
autostart=false
|
||||||
|
autorestart=false
|
||||||
|
stdout_logfile=syslog
|
||||||
|
stderr_logfile=syslog
|
||||||
|
@ -37,9 +37,6 @@ elif [ "$HWSKU" == "Force10-S6100" ]; then
|
|||||||
SWSSCONFIG_ARGS+="th.64ports.buffers.json th.64ports.qos.json "
|
SWSSCONFIG_ARGS+="th.64ports.buffers.json th.64ports.qos.json "
|
||||||
elif [ "$HWSKU" == "Arista-7050-QX32" ]; then
|
elif [ "$HWSKU" == "Arista-7050-QX32" ]; then
|
||||||
SWSSCONFIG_ARGS+="td2.32ports.buffers.json td2.32ports.qos.json "
|
SWSSCONFIG_ARGS+="td2.32ports.buffers.json td2.32ports.qos.json "
|
||||||
elif [[ "$HWSKU" == "ACS-MSN27"* ]] || [[ "$HWSKU" == "Mellanox-SN2700" ]]; then
|
|
||||||
sonic-cfggen -d -t /usr/share/sonic/templates/msn27xx.32ports.buffers.json.j2 > /etc/swss/config.d/msn27xx.32ports.buffers.json
|
|
||||||
SWSSCONFIG_ARGS+="msn27xx.32ports.buffers.json "
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
for file in $SWSSCONFIG_ARGS; do
|
for file in $SWSSCONFIG_ARGS; do
|
||||||
|
@ -112,15 +112,23 @@ if [ -f /host/image-$sonic_version/platform/firsttime ]; then
|
|||||||
else
|
else
|
||||||
# Use default minigraph.xml
|
# Use default minigraph.xml
|
||||||
cp /usr/share/sonic/device/$platform/minigraph.xml /etc/sonic/
|
cp /usr/share/sonic/device/$platform/minigraph.xml /etc/sonic/
|
||||||
HWSKU=`sonic-cfggen -m /etc/sonic/minigraph.xml -v "DEVICE_METADATA['localhost']['hwsku']"`
|
|
||||||
if [ -f /usr/share/sonic/device/$platform/$HWSKU/qos.json ]; then
|
|
||||||
# merge qos configuration into init config file
|
|
||||||
sonic-cfggen -j /etc/sonic/init_cfg.json -j /usr/share/sonic/device/$platform/$HWSKU/qos.json --print-data > /tmp/init_cfg.json
|
|
||||||
mv /tmp/init_cfg.json /etc/sonic/init_cfg.json
|
|
||||||
fi
|
|
||||||
sonic-cfggen -m -j /etc/sonic/init_cfg.json --print-data > /etc/sonic/config_db.json
|
sonic-cfggen -m -j /etc/sonic/init_cfg.json --print-data > /etc/sonic/config_db.json
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
HWSKU=`sonic-cfggen -m /etc/sonic/minigraph.xml -v "DEVICE_METADATA['localhost']['hwsku']"`
|
||||||
|
if [ -f /usr/share/sonic/device/$platform/$HWSKU/qos.json ]; then
|
||||||
|
# merge qos configuration into init config file
|
||||||
|
sonic-cfggen -j /etc/sonic/config_db.json -j /usr/share/sonic/device/$platform/$HWSKU/qos.json --print-data > /tmp/config_db.json
|
||||||
|
mv /tmp/config_db.json /etc/sonic/config_db.json
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -f /usr/share/sonic/device/$platform/$HWSKU/buffers.json.j2 ]; then
|
||||||
|
# generate and merge buffers configuration into config file
|
||||||
|
sonic-cfggen -m -t /usr/share/sonic/device/$platform/$HWSKU/buffers.json.j2 > /tmp/buffers.json
|
||||||
|
sonic-cfggen -j /etc/sonic/config_db.json -j /tmp/buffers.json --print-data > /tmp/config_db.json
|
||||||
|
mv /tmp/config_db.json /etc/sonic/config_db.json
|
||||||
|
fi
|
||||||
|
|
||||||
if [ -d /host/image-$sonic_version/platform/$platform ]; then
|
if [ -d /host/image-$sonic_version/platform/$platform ]; then
|
||||||
dpkg -i /host/image-$sonic_version/platform/$platform/*.deb
|
dpkg -i /host/image-$sonic_version/platform/$platform/*.deb
|
||||||
fi
|
fi
|
||||||
|
@ -70,6 +70,8 @@ RUN sed -ri 's/^(save .*$)/# \1/g;
|
|||||||
COPY ["50-default.conf", "/etc/rsyslog.d/"]
|
COPY ["50-default.conf", "/etc/rsyslog.d/"]
|
||||||
COPY ["start.sh", "orchagent.sh", "/usr/bin/"]
|
COPY ["start.sh", "orchagent.sh", "/usr/bin/"]
|
||||||
COPY ["brcm.profile.ini", "/usr/share/sonic/device/vswitch/"]
|
COPY ["brcm.profile.ini", "/usr/share/sonic/device/vswitch/"]
|
||||||
|
COPY ["buffers.json.j2", "/usr/share/sonic/device/vswitch/"]
|
||||||
|
COPY ["pg_profile_lookup.ini", "/usr/share/sonic/device/vswitch/"]
|
||||||
COPY ["supervisord.conf", "/etc/supervisor/conf.d/"]
|
COPY ["supervisord.conf", "/etc/supervisor/conf.d/"]
|
||||||
COPY ["files/configdb-load.sh", "/usr/bin/"]
|
COPY ["files/configdb-load.sh", "/usr/bin/"]
|
||||||
COPY ["files/arp_update", "/usr/bin"]
|
COPY ["files/arp_update", "/usr/bin"]
|
||||||
|
162
platform/vs/docker-sonic-vs/buffers.json.j2
Normal file
162
platform/vs/docker-sonic-vs/buffers.json.j2
Normal file
@ -0,0 +1,162 @@
|
|||||||
|
{# Default values which will be used if no actual configura available #}
|
||||||
|
{% set default_cable = '300m' %}
|
||||||
|
{% set default_ports_num = 32 -%}
|
||||||
|
|
||||||
|
{# Port configuration to cable length look-up table #}
|
||||||
|
{# Each record describes mapping of DUT (DUT port) role and neighbor role to cable length #}
|
||||||
|
{# Roles described in the minigraph #}
|
||||||
|
{% set ports2cable = {
|
||||||
|
'torrouter_server' : '5m',
|
||||||
|
'leafrouter_torrouter' : '40m',
|
||||||
|
'spinerouter_leafrouter' : '300m'
|
||||||
|
}
|
||||||
|
%}
|
||||||
|
|
||||||
|
{%- macro cable_length(port_name) -%}
|
||||||
|
{%- set cable_len = [] -%}
|
||||||
|
{%- for local_port in DEVICE_NEIGHBOR -%}
|
||||||
|
{%- if local_port == port_name -%}
|
||||||
|
{%- if DEVICE_NEIGHBOR_METADATA[DEVICE_NEIGHBOR[local_port].name] -%}
|
||||||
|
{%- set neighbor = DEVICE_NEIGHBOR_METADATA[DEVICE_NEIGHBOR[local_port].name] -%}
|
||||||
|
{%- set neighbor_role = neighbor.type -%}
|
||||||
|
{%- set roles1 = switch_role + '_' + neighbor_role %}
|
||||||
|
{%- set roles2 = neighbor_role + '_' + switch_role -%}
|
||||||
|
{%- set roles1 = roles1 | lower -%}
|
||||||
|
{%- set roles2 = roles2 | lower -%}
|
||||||
|
{%- if roles1 in ports2cable -%}
|
||||||
|
{%- if cable_len.append(ports2cable[roles1]) -%}{%- endif -%}
|
||||||
|
{%- elif roles2 in ports2cable -%}
|
||||||
|
{%- if cable_len.append(ports2cable[roles2]) -%}{%- endif -%}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- endfor -%}
|
||||||
|
{%- if cable_len -%}
|
||||||
|
{{ cable_len.0 }}
|
||||||
|
{%- else -%}
|
||||||
|
{{ default_cable }}
|
||||||
|
{%- endif -%}
|
||||||
|
{% endmacro %}
|
||||||
|
|
||||||
|
{%- if DEVICE_METADATA is defined %}
|
||||||
|
{%- set switch_role = DEVICE_METADATA['localhost']['type'] %}
|
||||||
|
{%- endif -%}
|
||||||
|
|
||||||
|
{# Generate list of ports if not defined #}
|
||||||
|
{% if PORT is not defined %}
|
||||||
|
{% set PORT = [] %}
|
||||||
|
{% for port_idx in range(0,default_ports_num) %}
|
||||||
|
{% if PORT.append("Ethernet%d" % (port_idx*4)) %}{% endif %}
|
||||||
|
{% endfor %}
|
||||||
|
{% endif -%}
|
||||||
|
|
||||||
|
{% set port_names_list = [] %}
|
||||||
|
{% for port in PORT %}
|
||||||
|
{%- if port_names_list.append(port) %}{% endif %}
|
||||||
|
{% endfor %}
|
||||||
|
{% set port_names = port_names_list | join(',') -%}
|
||||||
|
|
||||||
|
{
|
||||||
|
"CABLE_LENGTH": {
|
||||||
|
"AZURE": {
|
||||||
|
{% for port in PORT %}
|
||||||
|
{% set cable = cable_length(port) -%}
|
||||||
|
"{{ port }}": "{{ cable }}"{%- if not loop.last -%},{% endif %}
|
||||||
|
|
||||||
|
{% endfor %}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{%if switch_role == 'ToRRouter' %}
|
||||||
|
{% set ingress_lossless_pool_size = '4194304' %}
|
||||||
|
{% set ingress_lossy_pool_size = '7340032' %}
|
||||||
|
{% set egress_lossless_pool_size = '16777152' %}
|
||||||
|
{% set egress_lossy_pool_size = '7340032' %}
|
||||||
|
{% else %}
|
||||||
|
{% set ingress_lossless_pool_size = '2097152' %}
|
||||||
|
{% set ingress_lossy_pool_size = '5242880' %}
|
||||||
|
{% set egress_lossless_pool_size = '16777152' %}
|
||||||
|
{% set egress_lossy_pool_size = '5242880' %}
|
||||||
|
{%endif %}
|
||||||
|
"BUFFER_POOL": {
|
||||||
|
"ingress_lossless_pool": {
|
||||||
|
"size": "{{ ingress_lossless_pool_size }}",
|
||||||
|
"type": "ingress",
|
||||||
|
"mode": "dynamic"
|
||||||
|
},
|
||||||
|
"ingress_lossy_pool": {
|
||||||
|
"size": "{{ ingress_lossy_pool_size }}",
|
||||||
|
"type": "ingress",
|
||||||
|
"mode": "dynamic"
|
||||||
|
},
|
||||||
|
"egress_lossless_pool": {
|
||||||
|
"size": "{{ egress_lossless_pool_size }}",
|
||||||
|
"type": "egress",
|
||||||
|
"mode": "dynamic"
|
||||||
|
},
|
||||||
|
"egress_lossy_pool": {
|
||||||
|
"size": "{{ egress_lossy_pool_size }}",
|
||||||
|
"type": "egress",
|
||||||
|
"mode": "dynamic"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"BUFFER_PROFILE": {
|
||||||
|
"ingress_lossless_profile": {
|
||||||
|
"pool":"[BUFFER_POOL|ingress_lossless_pool]",
|
||||||
|
"size":"0",
|
||||||
|
"dynamic_th":"0"
|
||||||
|
},
|
||||||
|
"ingress_lossy_profile": {
|
||||||
|
"pool":"[BUFFER_POOL|ingress_lossy_pool]",
|
||||||
|
"size":"0",
|
||||||
|
"dynamic_th":"3"
|
||||||
|
},
|
||||||
|
"egress_lossless_profile": {
|
||||||
|
"pool":"[BUFFER_POOL|egress_lossless_pool]",
|
||||||
|
"size":"0",
|
||||||
|
"dynamic_th":"7"
|
||||||
|
},
|
||||||
|
"egress_lossy_profile": {
|
||||||
|
"pool":"[BUFFER_POOL|egress_lossy_pool]",
|
||||||
|
"size":"4096",
|
||||||
|
"dynamic_th":"3"
|
||||||
|
},
|
||||||
|
"pg_lossy_profile": {
|
||||||
|
"pool":"[BUFFER_POOL|ingress_lossy_pool]",
|
||||||
|
"size":"0",
|
||||||
|
"dynamic_th":"3"
|
||||||
|
},
|
||||||
|
"q_lossless_profile": {
|
||||||
|
"pool":"[BUFFER_POOL|egress_lossless_pool]",
|
||||||
|
"size":"0",
|
||||||
|
"dynamic_th":"7"
|
||||||
|
},
|
||||||
|
"q_lossy_profile": {
|
||||||
|
"pool":"[BUFFER_POOL|egress_lossy_pool]",
|
||||||
|
"size":"0",
|
||||||
|
"dynamic_th":"3"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"BUFFER_PORT_INGRESS_PROFILE_LIST": {
|
||||||
|
"{{ port_names }}": {
|
||||||
|
"profile_list" : "[BUFFER_PROFILE|ingress_lossless_profile],[BUFFER_PROFILE|ingress_lossy_profile]"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"BUFFER_PORT_EGRESS_PROFILE_LIST": {
|
||||||
|
"{{ port_names }}": {
|
||||||
|
"profile_list" : "[BUFFER_PROFILE|egress_lossless_profile],[BUFFER_PROFILE|egress_lossy_profile]"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"BUFFER_PG": {
|
||||||
|
"{{ port_names }}|0-1": {
|
||||||
|
"profile" : "[BUFFER_PROFILE|pg_lossy_profile]"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"BUFFER_QUEUE": {
|
||||||
|
"{{ port_names }}|3-4": {
|
||||||
|
"profile" : "[BUFFER_PROFILE|q_lossless_profile]"
|
||||||
|
},
|
||||||
|
"{{ port_names }}|0-1": {
|
||||||
|
"profile" : "[BUFFER_PROFILE|q_lossy_profile]"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
17
platform/vs/docker-sonic-vs/pg_profile_lookup.ini
Normal file
17
platform/vs/docker-sonic-vs/pg_profile_lookup.ini
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
# PG lossless profiles.
|
||||||
|
# speed cable size xon xoff threshold
|
||||||
|
10000 5m 34816 18432 16384 0
|
||||||
|
25000 5m 34816 18432 16384 0
|
||||||
|
40000 5m 34816 18432 16384 0
|
||||||
|
50000 5m 34816 18432 16384 0
|
||||||
|
100000 5m 36864 18432 18432 0
|
||||||
|
10000 40m 36864 18432 18432 0
|
||||||
|
25000 40m 39936 18432 21504 0
|
||||||
|
40000 40m 41984 18432 23552 0
|
||||||
|
50000 40m 41984 18432 23552 0
|
||||||
|
100000 40m 54272 18432 35840 0
|
||||||
|
10000 300m 49152 18432 30720 0
|
||||||
|
25000 300m 71680 18432 53248 0
|
||||||
|
40000 300m 94208 18432 75776 0
|
||||||
|
50000 300m 94208 18432 75776 0
|
||||||
|
100000 300m 184320 18432 165888 0
|
@ -11,7 +11,9 @@ if [ -f /etc/sonic/config_db.json ]; then
|
|||||||
sonic-cfggen -j /etc/sonic/config_db.json -j /etc/sonic/init_cfg.json --print-data > /tmp/config_db.json
|
sonic-cfggen -j /etc/sonic/config_db.json -j /etc/sonic/init_cfg.json --print-data > /tmp/config_db.json
|
||||||
mv /tmp/config_db.json /etc/sonic/config_db.json
|
mv /tmp/config_db.json /etc/sonic/config_db.json
|
||||||
else
|
else
|
||||||
sonic-cfggen -j /etc/sonic/init_cfg.json --print-data > /etc/sonic/config_db.json
|
# generate and merge buffers configuration into config file
|
||||||
|
sonic-cfggen -t /usr/share/sonic/device/vswitch/buffers.json.j2 > /tmp/buffers.json
|
||||||
|
sonic-cfggen -j /etc/sonic/init_cfg.json -j /tmp/buffers.json --print-data > /etc/sonic/config_db.json
|
||||||
fi
|
fi
|
||||||
|
|
||||||
mkdir -p /etc/swss/config.d/
|
mkdir -p /etc/swss/config.d/
|
||||||
@ -52,6 +54,8 @@ supervisorctl start vlanmgrd
|
|||||||
|
|
||||||
supervisorctl start zebra
|
supervisorctl start zebra
|
||||||
|
|
||||||
|
supervisorctl start buffermgrd
|
||||||
|
|
||||||
# Start arp_update when VLAN exists
|
# Start arp_update when VLAN exists
|
||||||
VLAN=`sonic-cfggen -d -v 'VLAN.keys() | join(" ") if VLAN'`
|
VLAN=`sonic-cfggen -d -v 'VLAN.keys() | join(" ") if VLAN'`
|
||||||
if [ "$VLAN" != "" ]; then
|
if [ "$VLAN" != "" ]; then
|
||||||
|
@ -122,3 +122,11 @@ autostart=false
|
|||||||
autorestart=true
|
autorestart=true
|
||||||
stdout_logfile=syslog
|
stdout_logfile=syslog
|
||||||
stderr_logfile=syslog
|
stderr_logfile=syslog
|
||||||
|
|
||||||
|
[program:buffermgrd]
|
||||||
|
command=/usr/bin/buffermgrd -l /usr/share/sonic/device/vswitch/pg_profile_lookup.ini
|
||||||
|
priority=10
|
||||||
|
autostart=false
|
||||||
|
autorestart=false
|
||||||
|
stdout_logfile=syslog
|
||||||
|
stderr_logfile=syslog
|
||||||
|
@ -1,341 +1,120 @@
|
|||||||
[
|
{
|
||||||
{
|
"CABLE_LENGTH": {
|
||||||
"BUFFER_POOL_TABLE:ingress_lossless_pool": {
|
"AZURE": {
|
||||||
|
"Ethernet8": "300m",
|
||||||
|
"Ethernet0": "300m",
|
||||||
|
"Ethernet4": "300m",
|
||||||
|
"Ethernet108": "300m",
|
||||||
|
"Ethernet100": "300m",
|
||||||
|
"Ethernet104": "300m",
|
||||||
|
"Ethernet68": "300m",
|
||||||
|
"Ethernet96": "300m",
|
||||||
|
"Ethernet124": "300m",
|
||||||
|
"Ethernet92": "300m",
|
||||||
|
"Ethernet120": "300m",
|
||||||
|
"Ethernet52": "300m",
|
||||||
|
"Ethernet56": "300m",
|
||||||
|
"Ethernet76": "300m",
|
||||||
|
"Ethernet72": "300m",
|
||||||
|
"Ethernet64": "300m",
|
||||||
|
"Ethernet32": "300m",
|
||||||
|
"Ethernet16": "300m",
|
||||||
|
"Ethernet36": "300m",
|
||||||
|
"Ethernet12": "300m",
|
||||||
|
"Ethernet88": "300m",
|
||||||
|
"Ethernet116": "300m",
|
||||||
|
"Ethernet80": "300m",
|
||||||
|
"Ethernet112": "300m",
|
||||||
|
"Ethernet84": "300m",
|
||||||
|
"Ethernet48": "300m",
|
||||||
|
"Ethernet44": "300m",
|
||||||
|
"Ethernet40": "300m",
|
||||||
|
"Ethernet28": "300m",
|
||||||
|
"Ethernet60": "300m",
|
||||||
|
"Ethernet20": "300m",
|
||||||
|
"Ethernet24": "300m"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"BUFFER_POOL": {
|
||||||
|
"ingress_lossless_pool": {
|
||||||
"size": "2097152",
|
"size": "2097152",
|
||||||
"type": "ingress",
|
"type": "ingress",
|
||||||
"mode": "dynamic"
|
"mode": "dynamic"
|
||||||
},
|
},
|
||||||
"OP": "SET"
|
"ingress_lossy_pool": {
|
||||||
},
|
|
||||||
{
|
|
||||||
"BUFFER_POOL_TABLE:ingress_lossy_pool": {
|
|
||||||
"size": "5242880",
|
"size": "5242880",
|
||||||
"type": "ingress",
|
"type": "ingress",
|
||||||
"mode": "dynamic"
|
"mode": "dynamic"
|
||||||
},
|
},
|
||||||
"OP": "SET"
|
"egress_lossless_pool": {
|
||||||
},
|
|
||||||
{
|
|
||||||
"BUFFER_POOL_TABLE:egress_lossless_pool": {
|
|
||||||
"size": "16777152",
|
"size": "16777152",
|
||||||
"type": "egress",
|
"type": "egress",
|
||||||
"mode": "dynamic"
|
"mode": "dynamic"
|
||||||
},
|
},
|
||||||
"OP": "SET"
|
"egress_lossy_pool": {
|
||||||
},
|
|
||||||
{
|
|
||||||
"BUFFER_POOL_TABLE:egress_lossy_pool": {
|
|
||||||
"size": "5242880",
|
"size": "5242880",
|
||||||
"type": "egress",
|
"type": "egress",
|
||||||
"mode": "dynamic"
|
"mode": "dynamic"
|
||||||
},
|
}
|
||||||
"OP": "SET"
|
|
||||||
},
|
},
|
||||||
{
|
"BUFFER_PROFILE": {
|
||||||
"BUFFER_PROFILE_TABLE:ingress_lossless_profile": {
|
"ingress_lossless_profile": {
|
||||||
"pool":"[BUFFER_POOL_TABLE:ingress_lossless_pool]",
|
"pool":"[BUFFER_POOL|ingress_lossless_pool]",
|
||||||
"size":"0",
|
"size":"0",
|
||||||
"dynamic_th":"0"
|
"dynamic_th":"0"
|
||||||
},
|
},
|
||||||
"OP": "SET"
|
"ingress_lossy_profile": {
|
||||||
},
|
"pool":"[BUFFER_POOL|ingress_lossy_pool]",
|
||||||
{
|
|
||||||
"BUFFER_PROFILE_TABLE:ingress_lossy_profile": {
|
|
||||||
"pool":"[BUFFER_POOL_TABLE:ingress_lossy_pool]",
|
|
||||||
"size":"0",
|
"size":"0",
|
||||||
"dynamic_th":"3"
|
"dynamic_th":"3"
|
||||||
},
|
},
|
||||||
"OP": "SET"
|
"egress_lossless_profile": {
|
||||||
},
|
"pool":"[BUFFER_POOL|egress_lossless_pool]",
|
||||||
{
|
|
||||||
"BUFFER_PROFILE_TABLE:egress_lossless_profile": {
|
|
||||||
"pool":"[BUFFER_POOL_TABLE:egress_lossless_pool]",
|
|
||||||
"size":"0",
|
"size":"0",
|
||||||
"dynamic_th":"7"
|
"dynamic_th":"7"
|
||||||
},
|
},
|
||||||
"OP": "SET"
|
"egress_lossy_profile": {
|
||||||
},
|
"pool":"[BUFFER_POOL|egress_lossy_pool]",
|
||||||
{
|
|
||||||
"BUFFER_PROFILE_TABLE:egress_lossy_profile": {
|
|
||||||
"pool":"[BUFFER_POOL_TABLE:egress_lossy_pool]",
|
|
||||||
"size":"4096",
|
"size":"4096",
|
||||||
"dynamic_th":"3"
|
"dynamic_th":"3"
|
||||||
},
|
},
|
||||||
"OP": "SET"
|
"pg_lossy_profile": {
|
||||||
},
|
"pool":"[BUFFER_POOL|ingress_lossy_pool]",
|
||||||
{
|
|
||||||
"BUFFER_PROFILE_TABLE:pg_lossy_profile": {
|
|
||||||
"pool":"[BUFFER_POOL_TABLE:ingress_lossy_pool]",
|
|
||||||
"size":"0",
|
"size":"0",
|
||||||
"dynamic_th":"3"
|
"dynamic_th":"3"
|
||||||
},
|
},
|
||||||
"OP": "SET"
|
"q_lossless_profile": {
|
||||||
},
|
"pool":"[BUFFER_POOL|egress_lossless_pool]",
|
||||||
{
|
|
||||||
"BUFFER_PROFILE_TABLE:q_lossless_profile": {
|
|
||||||
"pool":"[BUFFER_POOL_TABLE:egress_lossless_pool]",
|
|
||||||
"size":"0",
|
"size":"0",
|
||||||
"dynamic_th":"7"
|
"dynamic_th":"7"
|
||||||
},
|
},
|
||||||
"OP": "SET"
|
"q_lossy_profile": {
|
||||||
},
|
"pool":"[BUFFER_POOL|egress_lossy_pool]",
|
||||||
{
|
|
||||||
"BUFFER_PROFILE_TABLE:q_lossy_profile": {
|
|
||||||
"pool":"[BUFFER_POOL_TABLE:egress_lossy_pool]",
|
|
||||||
"size":"0",
|
"size":"0",
|
||||||
"dynamic_th":"3"
|
"dynamic_th":"3"
|
||||||
},
|
}
|
||||||
"OP": "SET"
|
|
||||||
},
|
},
|
||||||
{
|
"BUFFER_PORT_INGRESS_PROFILE_LIST": {
|
||||||
"BUFFER_PORT_INGRESS_PROFILE_LIST:Ethernet8,Ethernet0,Ethernet4,Ethernet108,Ethernet100,Ethernet104,Ethernet68,Ethernet96,Ethernet124,Ethernet92,Ethernet120,Ethernet52,Ethernet56,Ethernet76,Ethernet72,Ethernet64,Ethernet32,Ethernet16,Ethernet36,Ethernet12,Ethernet88,Ethernet116,Ethernet80,Ethernet112,Ethernet84,Ethernet48,Ethernet44,Ethernet40,Ethernet28,Ethernet60,Ethernet20,Ethernet24": {
|
"Ethernet8,Ethernet0,Ethernet4,Ethernet108,Ethernet100,Ethernet104,Ethernet68,Ethernet96,Ethernet124,Ethernet92,Ethernet120,Ethernet52,Ethernet56,Ethernet76,Ethernet72,Ethernet64,Ethernet32,Ethernet16,Ethernet36,Ethernet12,Ethernet88,Ethernet116,Ethernet80,Ethernet112,Ethernet84,Ethernet48,Ethernet44,Ethernet40,Ethernet28,Ethernet60,Ethernet20,Ethernet24": {
|
||||||
"profile_list" : "[BUFFER_PROFILE_TABLE:ingress_lossless_profile],[BUFFER_PROFILE_TABLE:ingress_lossy_profile]"
|
"profile_list" : "[BUFFER_PROFILE|ingress_lossless_profile],[BUFFER_PROFILE|ingress_lossy_profile]"
|
||||||
},
|
}
|
||||||
"OP": "SET"
|
|
||||||
},
|
},
|
||||||
{
|
"BUFFER_PORT_EGRESS_PROFILE_LIST": {
|
||||||
"BUFFER_PORT_EGRESS_PROFILE_LIST:Ethernet8,Ethernet0,Ethernet4,Ethernet108,Ethernet100,Ethernet104,Ethernet68,Ethernet96,Ethernet124,Ethernet92,Ethernet120,Ethernet52,Ethernet56,Ethernet76,Ethernet72,Ethernet64,Ethernet32,Ethernet16,Ethernet36,Ethernet12,Ethernet88,Ethernet116,Ethernet80,Ethernet112,Ethernet84,Ethernet48,Ethernet44,Ethernet40,Ethernet28,Ethernet60,Ethernet20,Ethernet24": {
|
"Ethernet8,Ethernet0,Ethernet4,Ethernet108,Ethernet100,Ethernet104,Ethernet68,Ethernet96,Ethernet124,Ethernet92,Ethernet120,Ethernet52,Ethernet56,Ethernet76,Ethernet72,Ethernet64,Ethernet32,Ethernet16,Ethernet36,Ethernet12,Ethernet88,Ethernet116,Ethernet80,Ethernet112,Ethernet84,Ethernet48,Ethernet44,Ethernet40,Ethernet28,Ethernet60,Ethernet20,Ethernet24": {
|
||||||
"profile_list" : "[BUFFER_PROFILE_TABLE:egress_lossless_profile],[BUFFER_PROFILE_TABLE:egress_lossy_profile]"
|
"profile_list" : "[BUFFER_PROFILE|egress_lossless_profile],[BUFFER_PROFILE|egress_lossy_profile]"
|
||||||
},
|
}
|
||||||
"OP": "SET"
|
|
||||||
},
|
},
|
||||||
|
"BUFFER_PG": {
|
||||||
|
"Ethernet8,Ethernet0,Ethernet4,Ethernet108,Ethernet100,Ethernet104,Ethernet68,Ethernet96,Ethernet124,Ethernet92,Ethernet120,Ethernet52,Ethernet56,Ethernet76,Ethernet72,Ethernet64,Ethernet32,Ethernet16,Ethernet36,Ethernet12,Ethernet88,Ethernet116,Ethernet80,Ethernet112,Ethernet84,Ethernet48,Ethernet44,Ethernet40,Ethernet28,Ethernet60,Ethernet20,Ethernet24|0-1": {
|
||||||
|
"profile" : "[BUFFER_PROFILE|pg_lossy_profile]"
|
||||||
{
|
}
|
||||||
"BUFFER_PG_TABLE:Ethernet8:3-4": {
|
|
||||||
"profile" : "[BUFFER_PROFILE_TABLE:pg_lossless_40G_300m_profile]"
|
|
||||||
},
|
|
||||||
"OP": "SET"
|
|
||||||
},
|
},
|
||||||
{
|
"BUFFER_QUEUE": {
|
||||||
"BUFFER_PG_TABLE:Ethernet0:3-4": {
|
"Ethernet8,Ethernet0,Ethernet4,Ethernet108,Ethernet100,Ethernet104,Ethernet68,Ethernet96,Ethernet124,Ethernet92,Ethernet120,Ethernet52,Ethernet56,Ethernet76,Ethernet72,Ethernet64,Ethernet32,Ethernet16,Ethernet36,Ethernet12,Ethernet88,Ethernet116,Ethernet80,Ethernet112,Ethernet84,Ethernet48,Ethernet44,Ethernet40,Ethernet28,Ethernet60,Ethernet20,Ethernet24|3-4": {
|
||||||
"profile" : "[BUFFER_PROFILE_TABLE:pg_lossless_40G_300m_profile]"
|
"profile" : "[BUFFER_PROFILE|q_lossless_profile]"
|
||||||
},
|
},
|
||||||
"OP": "SET"
|
"Ethernet8,Ethernet0,Ethernet4,Ethernet108,Ethernet100,Ethernet104,Ethernet68,Ethernet96,Ethernet124,Ethernet92,Ethernet120,Ethernet52,Ethernet56,Ethernet76,Ethernet72,Ethernet64,Ethernet32,Ethernet16,Ethernet36,Ethernet12,Ethernet88,Ethernet116,Ethernet80,Ethernet112,Ethernet84,Ethernet48,Ethernet44,Ethernet40,Ethernet28,Ethernet60,Ethernet20,Ethernet24|0-1": {
|
||||||
},
|
"profile" : "[BUFFER_PROFILE|q_lossy_profile]"
|
||||||
{
|
}
|
||||||
"BUFFER_PG_TABLE:Ethernet4:3-4": {
|
|
||||||
"profile" : "[BUFFER_PROFILE_TABLE:pg_lossless_40G_300m_profile]"
|
|
||||||
},
|
|
||||||
"OP": "SET"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"BUFFER_PG_TABLE:Ethernet108:3-4": {
|
|
||||||
"profile" : "[BUFFER_PROFILE_TABLE:pg_lossless_40G_300m_profile]"
|
|
||||||
},
|
|
||||||
"OP": "SET"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"BUFFER_PG_TABLE:Ethernet100:3-4": {
|
|
||||||
"profile" : "[BUFFER_PROFILE_TABLE:pg_lossless_40G_300m_profile]"
|
|
||||||
},
|
|
||||||
"OP": "SET"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"BUFFER_PG_TABLE:Ethernet104:3-4": {
|
|
||||||
"profile" : "[BUFFER_PROFILE_TABLE:pg_lossless_40G_300m_profile]"
|
|
||||||
},
|
|
||||||
"OP": "SET"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"BUFFER_PG_TABLE:Ethernet68:3-4": {
|
|
||||||
"profile" : "[BUFFER_PROFILE_TABLE:pg_lossless_40G_300m_profile]"
|
|
||||||
},
|
|
||||||
"OP": "SET"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"BUFFER_PG_TABLE:Ethernet96:3-4": {
|
|
||||||
"profile" : "[BUFFER_PROFILE_TABLE:pg_lossless_40G_300m_profile]"
|
|
||||||
},
|
|
||||||
"OP": "SET"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"BUFFER_PG_TABLE:Ethernet124:3-4": {
|
|
||||||
"profile" : "[BUFFER_PROFILE_TABLE:pg_lossless_40G_300m_profile]"
|
|
||||||
},
|
|
||||||
"OP": "SET"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"BUFFER_PG_TABLE:Ethernet92:3-4": {
|
|
||||||
"profile" : "[BUFFER_PROFILE_TABLE:pg_lossless_40G_300m_profile]"
|
|
||||||
},
|
|
||||||
"OP": "SET"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"BUFFER_PG_TABLE:Ethernet120:3-4": {
|
|
||||||
"profile" : "[BUFFER_PROFILE_TABLE:pg_lossless_40G_300m_profile]"
|
|
||||||
},
|
|
||||||
"OP": "SET"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"BUFFER_PG_TABLE:Ethernet52:3-4": {
|
|
||||||
"profile" : "[BUFFER_PROFILE_TABLE:pg_lossless_40G_300m_profile]"
|
|
||||||
},
|
|
||||||
"OP": "SET"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"BUFFER_PG_TABLE:Ethernet56:3-4": {
|
|
||||||
"profile" : "[BUFFER_PROFILE_TABLE:pg_lossless_40G_300m_profile]"
|
|
||||||
},
|
|
||||||
"OP": "SET"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"BUFFER_PG_TABLE:Ethernet76:3-4": {
|
|
||||||
"profile" : "[BUFFER_PROFILE_TABLE:pg_lossless_40G_300m_profile]"
|
|
||||||
},
|
|
||||||
"OP": "SET"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"BUFFER_PG_TABLE:Ethernet72:3-4": {
|
|
||||||
"profile" : "[BUFFER_PROFILE_TABLE:pg_lossless_40G_300m_profile]"
|
|
||||||
},
|
|
||||||
"OP": "SET"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"BUFFER_PG_TABLE:Ethernet64:3-4": {
|
|
||||||
"profile" : "[BUFFER_PROFILE_TABLE:pg_lossless_40G_300m_profile]"
|
|
||||||
},
|
|
||||||
"OP": "SET"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"BUFFER_PG_TABLE:Ethernet32:3-4": {
|
|
||||||
"profile" : "[BUFFER_PROFILE_TABLE:pg_lossless_40G_300m_profile]"
|
|
||||||
},
|
|
||||||
"OP": "SET"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"BUFFER_PG_TABLE:Ethernet16:3-4": {
|
|
||||||
"profile" : "[BUFFER_PROFILE_TABLE:pg_lossless_40G_300m_profile]"
|
|
||||||
},
|
|
||||||
"OP": "SET"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"BUFFER_PG_TABLE:Ethernet36:3-4": {
|
|
||||||
"profile" : "[BUFFER_PROFILE_TABLE:pg_lossless_40G_300m_profile]"
|
|
||||||
},
|
|
||||||
"OP": "SET"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"BUFFER_PG_TABLE:Ethernet12:3-4": {
|
|
||||||
"profile" : "[BUFFER_PROFILE_TABLE:pg_lossless_40G_300m_profile]"
|
|
||||||
},
|
|
||||||
"OP": "SET"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"BUFFER_PG_TABLE:Ethernet88:3-4": {
|
|
||||||
"profile" : "[BUFFER_PROFILE_TABLE:pg_lossless_40G_300m_profile]"
|
|
||||||
},
|
|
||||||
"OP": "SET"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"BUFFER_PG_TABLE:Ethernet116:3-4": {
|
|
||||||
"profile" : "[BUFFER_PROFILE_TABLE:pg_lossless_40G_300m_profile]"
|
|
||||||
},
|
|
||||||
"OP": "SET"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"BUFFER_PG_TABLE:Ethernet80:3-4": {
|
|
||||||
"profile" : "[BUFFER_PROFILE_TABLE:pg_lossless_40G_300m_profile]"
|
|
||||||
},
|
|
||||||
"OP": "SET"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"BUFFER_PG_TABLE:Ethernet112:3-4": {
|
|
||||||
"profile" : "[BUFFER_PROFILE_TABLE:pg_lossless_40G_300m_profile]"
|
|
||||||
},
|
|
||||||
"OP": "SET"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"BUFFER_PG_TABLE:Ethernet84:3-4": {
|
|
||||||
"profile" : "[BUFFER_PROFILE_TABLE:pg_lossless_40G_300m_profile]"
|
|
||||||
},
|
|
||||||
"OP": "SET"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"BUFFER_PG_TABLE:Ethernet48:3-4": {
|
|
||||||
"profile" : "[BUFFER_PROFILE_TABLE:pg_lossless_40G_300m_profile]"
|
|
||||||
},
|
|
||||||
"OP": "SET"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"BUFFER_PG_TABLE:Ethernet44:3-4": {
|
|
||||||
"profile" : "[BUFFER_PROFILE_TABLE:pg_lossless_40G_300m_profile]"
|
|
||||||
},
|
|
||||||
"OP": "SET"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"BUFFER_PG_TABLE:Ethernet40:3-4": {
|
|
||||||
"profile" : "[BUFFER_PROFILE_TABLE:pg_lossless_40G_300m_profile]"
|
|
||||||
},
|
|
||||||
"OP": "SET"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"BUFFER_PG_TABLE:Ethernet28:3-4": {
|
|
||||||
"profile" : "[BUFFER_PROFILE_TABLE:pg_lossless_40G_300m_profile]"
|
|
||||||
},
|
|
||||||
"OP": "SET"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"BUFFER_PG_TABLE:Ethernet60:3-4": {
|
|
||||||
"profile" : "[BUFFER_PROFILE_TABLE:pg_lossless_40G_300m_profile]"
|
|
||||||
},
|
|
||||||
"OP": "SET"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"BUFFER_PG_TABLE:Ethernet20:3-4": {
|
|
||||||
"profile" : "[BUFFER_PROFILE_TABLE:pg_lossless_40G_300m_profile]"
|
|
||||||
},
|
|
||||||
"OP": "SET"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"BUFFER_PG_TABLE:Ethernet24:3-4": {
|
|
||||||
"profile" : "[BUFFER_PROFILE_TABLE:pg_lossless_40G_300m_profile]"
|
|
||||||
},
|
|
||||||
"OP": "SET"
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
"BUFFER_PROFILE_TABLE:pg_lossless_40G_300m_profile": {
|
|
||||||
"pool":"[BUFFER_POOL_TABLE:ingress_lossless_pool]",
|
|
||||||
"xon":"18432",
|
|
||||||
"xoff":"75776",
|
|
||||||
"size":"94208",
|
|
||||||
"dynamic_th":"0"
|
|
||||||
},
|
|
||||||
"OP": "SET"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"BUFFER_PG_TABLE:Ethernet8,Ethernet0,Ethernet4,Ethernet108,Ethernet100,Ethernet104,Ethernet68,Ethernet96,Ethernet124,Ethernet92,Ethernet120,Ethernet52,Ethernet56,Ethernet76,Ethernet72,Ethernet64,Ethernet32,Ethernet16,Ethernet36,Ethernet12,Ethernet88,Ethernet116,Ethernet80,Ethernet112,Ethernet84,Ethernet48,Ethernet44,Ethernet40,Ethernet28,Ethernet60,Ethernet20,Ethernet24:0-1": {
|
|
||||||
"profile" : "[BUFFER_PROFILE_TABLE:pg_lossy_profile]"
|
|
||||||
},
|
|
||||||
"OP": "SET"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"BUFFER_QUEUE_TABLE:Ethernet8,Ethernet0,Ethernet4,Ethernet108,Ethernet100,Ethernet104,Ethernet68,Ethernet96,Ethernet124,Ethernet92,Ethernet120,Ethernet52,Ethernet56,Ethernet76,Ethernet72,Ethernet64,Ethernet32,Ethernet16,Ethernet36,Ethernet12,Ethernet88,Ethernet116,Ethernet80,Ethernet112,Ethernet84,Ethernet48,Ethernet44,Ethernet40,Ethernet28,Ethernet60,Ethernet20,Ethernet24:3-4": {
|
|
||||||
"profile" : "[BUFFER_PROFILE_TABLE:q_lossless_profile]"
|
|
||||||
},
|
|
||||||
"OP": "SET"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"BUFFER_QUEUE_TABLE:Ethernet8,Ethernet0,Ethernet4,Ethernet108,Ethernet100,Ethernet104,Ethernet68,Ethernet96,Ethernet124,Ethernet92,Ethernet120,Ethernet52,Ethernet56,Ethernet76,Ethernet72,Ethernet64,Ethernet32,Ethernet16,Ethernet36,Ethernet12,Ethernet88,Ethernet116,Ethernet80,Ethernet112,Ethernet84,Ethernet48,Ethernet44,Ethernet40,Ethernet28,Ethernet60,Ethernet20,Ethernet24:0-1": {
|
|
||||||
"profile" : "[BUFFER_PROFILE_TABLE:q_lossy_profile]"
|
|
||||||
},
|
|
||||||
"OP": "SET"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"PFC_PRIORITY_TO_PRIORITY_GROUP_MAP_TABLE:AZURE": {
|
|
||||||
"0": "0",
|
|
||||||
"1": "1",
|
|
||||||
"3": "3",
|
|
||||||
"4": "4"
|
|
||||||
},
|
|
||||||
"OP": "SET"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"PORT_QOS_MAP_TABLE:Ethernet8,Ethernet0,Ethernet4,Ethernet108,Ethernet100,Ethernet104,Ethernet68,Ethernet96,Ethernet124,Ethernet92,Ethernet120,Ethernet52,Ethernet56,Ethernet76,Ethernet72,Ethernet64,Ethernet32,Ethernet16,Ethernet36,Ethernet12,Ethernet88,Ethernet116,Ethernet80,Ethernet112,Ethernet84,Ethernet48,Ethernet44,Ethernet40,Ethernet28,Ethernet60,Ethernet20,Ethernet24": {
|
|
||||||
"pfc_to_pg_map" : "[PFC_PRIORITY_TO_PRIORITY_GROUP_MAP_TABLE:AZURE]"
|
|
||||||
},
|
|
||||||
"OP": "SET"
|
|
||||||
}
|
}
|
||||||
]
|
}
|
||||||
|
@ -26,5 +26,5 @@
|
|||||||
"description": "Interface description"
|
"description": "Interface description"
|
||||||
},
|
},
|
||||||
"OP": "SET"
|
"OP": "SET"
|
||||||
},
|
}
|
||||||
]
|
]
|
||||||
|
@ -85,7 +85,7 @@ class TestJ2Files(TestCase):
|
|||||||
assert filecmp.cmp(sample_output_file, self.output_file)
|
assert filecmp.cmp(sample_output_file, self.output_file)
|
||||||
|
|
||||||
def test_msn27xx_32ports_buffers(self):
|
def test_msn27xx_32ports_buffers(self):
|
||||||
buffer_file = os.path.join(self.test_dir, '..', '..', '..', 'dockers', 'docker-orchagent', 'msn27xx.32ports.buffers.json.j2')
|
buffer_file = os.path.join(self.test_dir, '..', '..', '..', 'device', 'mellanox', 'x86_64-mlnx_msn2700-r0', 'ACS-MSN2700', 'buffers.json.j2')
|
||||||
argument = '-m ' + self.t1_mlnx_minigraph + ' -p ' + self.mlnx_port_config + ' -t ' + buffer_file + ' > ' + self.output_file
|
argument = '-m ' + self.t1_mlnx_minigraph + ' -p ' + self.mlnx_port_config + ' -t ' + buffer_file + ' > ' + self.output_file
|
||||||
self.run_script(argument)
|
self.run_script(argument)
|
||||||
|
|
||||||
@ -93,7 +93,6 @@ class TestJ2Files(TestCase):
|
|||||||
|
|
||||||
self.assertTrue(filecmp.cmp(sample_output_file, self.output_file))
|
self.assertTrue(filecmp.cmp(sample_output_file, self.output_file))
|
||||||
|
|
||||||
|
|
||||||
def tearDown(self):
|
def tearDown(self):
|
||||||
try:
|
try:
|
||||||
os.remove(self.output_file)
|
os.remove(self.output_file)
|
||||||
|
@ -1 +1 @@
|
|||||||
Subproject commit fbe781de82197304d6622736271649d4ac10de67
|
Subproject commit 60a90d762876955116f6f4a0ec47b2ca2c6f57ed
|
@ -1 +1 @@
|
|||||||
Subproject commit aa55f69a9b53588d1de872f2d6f15384659f1a36
|
Subproject commit 04b8b84ab6d66c97d7d727ac80a431b7ba85cf57
|
@ -1 +1 @@
|
|||||||
Subproject commit 26c3709786a4072625d7f3ebb9f2e52d798a3ba0
|
Subproject commit 17e0bf9be5f16ba301f30d3354e7554b49fd61e5
|
Loading…
Reference in New Issue
Block a user