[PATCH] Utils: allow non-secure md5 use
by Jan Tluka
This will fix the issue with LNST on FIPS enabled system. FIPS does not allow
use of md5. Python's hashlib has a parameter that can be used to allow use of
md5 for non-security purpose. LNST uses md5 for caching test modules and tools
only.
Tested both with python2.6 and python2.7
Signed-off-by: Jan Tluka <jtluka(a)redhat.com>
---
lnst/Common/Utils.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lnst/Common/Utils.py b/lnst/Common/Utils.py
index d6d6c57..1a7c926 100644
--- a/lnst/Common/Utils.py
+++ b/lnst/Common/Utils.py
@@ -98,7 +98,7 @@ def bool_it(val):
return True if int_it(val) else False
def md5sum(file_path, block_size=2**20):
- md5 = hashlib.md5()
+ md5 = hashlib.md5(usedforsecurity=False)
with open(file_path, "rb") as f:
while True:
data = f.read(block_size)
--
2.7.5
6 years, 1 month
[PATCH] SlavePool: fix unresolvable hostname exception
by Jan Tluka
If LNST controller processes a pool that contains a machine with a hostname
that can't be resolved by DNS the controller fails with unhandled exception.
The exception is raised on shutdown of the socket used to connect to the
machine. Since the connection on the socket did not succeed the attempt to
shutdown the connection is an error. Unfortunately this error is not detected
by checking SO_ERR in getsockopt() after calling select() on the socket.
The fix is to mark the machine unavailable immediately unless the error code
raised by connect call is EINPROGRESS meaning the connection proceeded to
establishing phase (the hostname was succesfully resolved).
Fixes: 5498ba2 ("SlavePool: properly close sockets after connection check")
Fixes issue #188
Signed-off-by: Jan Tluka <jtluka(a)redhat.com>
---
lnst/Controller/SlavePool.py | 18 ++++++++++++++++--
1 file changed, 16 insertions(+), 2 deletions(-)
diff --git a/lnst/Controller/SlavePool.py b/lnst/Controller/SlavePool.py
index 5f94b07..5069f50 100644
--- a/lnst/Controller/SlavePool.py
+++ b/lnst/Controller/SlavePool.py
@@ -15,6 +15,7 @@ rpazdera(a)redhat.com (Radek Pazdera)
import logging
import os
+import errno
import re
import socket
import select
@@ -104,8 +105,21 @@ class SlavePool:
s.settimeout(0)
try:
s.connect((hostname, port))
- except:
- pass
+ except socket.error as msg:
+ # if the error is other than EINPROGRESS, e.g. the stack
+ # could not resolve name, the machine should become unavailable
+ try:
+ en = msg.errno
+ except AttributeError:
+ en = 0
+
+ if en != errno.EINPROGRESS:
+ pool[m_id]["available"] = False
+ s.close()
+ logging.debug("Bypassing machine '%s' (%s)" %
+ (m_id, msg))
+ continue
+
check_sockets[s] = m_id
while len(check_sockets) > 0:
--
2.7.5
6 years, 1 month
[PATCH] PerfRepoMapping: log warning when duplicate hash is parsed
in mapping file
by Jan Tluka
This will help to identify ambiguous mapping files. One hash should map to
one report. LNST would use the last hash from duplicates found in such
mapping file, so it's silently masking this issue.
Signed-off-by: Jan Tluka <jtluka(a)redhat.com>
---
lnst/Controller/PerfRepoMapping.py | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/lnst/Controller/PerfRepoMapping.py b/lnst/Controller/PerfRepoMapping.py
index 2cec2d8..3a6cee7 100644
--- a/lnst/Controller/PerfRepoMapping.py
+++ b/lnst/Controller/PerfRepoMapping.py
@@ -42,7 +42,12 @@ class PerfRepoMapping(object):
for line in lines:
match = line_re.match(line)
if match is not None and len(match.groups()) == 2:
- res_dict[match.group(1)] = match.group(2)
+ h = match.group(1)
+ if h in res_dict:
+ logging.warn("Duplicate entry found for hash: %s\n"
+ "\t %s = %s (previous)\n"
+ "\t %s (new)" % (h, h, res_dict[h], line))
+ res_dict[h] = match.group(2)
else:
logging.warn("Skipping mapping line, invalid format:\n%s" %line)
self._mapping = res_dict
--
2.7.5
6 years, 1 month
[PATCH] recipes: ovs_offload: Verify tc rule exists in ingress qdisc
by Roi Dayan
The ovs offload merge add rules to the ingress qdisc.
Signed-off-by: Roi Dayan <roid(a)mellanox.com>
---
recipes/ovs_offload/Testlib.py | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/recipes/ovs_offload/Testlib.py b/recipes/ovs_offload/Testlib.py
index d407319..4b0ac11 100644
--- a/recipes/ovs_offload/Testlib.py
+++ b/recipes/ovs_offload/Testlib.py
@@ -38,7 +38,7 @@ class Testlib:
dev = nic
# tc output
- cmd = host.run("tc -s filter show dev %s parent ffff:" % dev)
+ cmd = host.run("tc -s filter show dev %s ingress" % dev)
out = cmd.out().strip()
if not out:
--
1.7.1
6 years, 1 month
[PATCH] recipes/tunnels: add VXLAN/Geneve tests
by Jiri Prochazka
This patch adds new test for testing VXLAN or Geneve tunnels. The test
scenario consists of two baremetal hosts, each with one NIC. On both
hosts, there is an OVS bridge, where number of internal devices are
created along with the same number of VXLAN/Geneve interfaces. The
number is set in the task in TUNNEL_COUNT variable. This variable is set
to 16 by default. Netperf is run in parallel over each tunnel and over each
tunnel number of STREAM are run in parallel in order to maximize link
utilization. This number is specified with nperf_num_parallel alias and is set
to 4 by default.
The result throughputs are then summarized and displayed with Custom module.
This is temporary solution before we implement more complex parallel netperf in
LNST test module.
Signed-off-by: Jiri Prochazka <jprochaz(a)redhat.com>
---
recipes/tunnels/ovs_geneve.xml | 727 +++++++++++++++++++++++++++++++++++++++++
recipes/tunnels/ovs_tunnels.py | 170 ++++++++++
recipes/tunnels/ovs_vxlan.xml | 727 +++++++++++++++++++++++++++++++++++++++++
3 files changed, 1624 insertions(+)
create mode 100644 recipes/tunnels/ovs_geneve.xml
create mode 100644 recipes/tunnels/ovs_tunnels.py
create mode 100644 recipes/tunnels/ovs_vxlan.xml
diff --git a/recipes/tunnels/ovs_geneve.xml b/recipes/tunnels/ovs_geneve.xml
new file mode 100644
index 0000000..d3ada78
--- /dev/null
+++ b/recipes/tunnels/ovs_geneve.xml
@@ -0,0 +1,727 @@
+<lnstrecipe>
+ <define>
+ <alias name="ipv" value="both" />
+ <alias name="mtu" value="1450" />
+ <alias name="netperf_duration" value="60" />
+ <alias name="nperf_reserve" value="20" />
+ <alias name="nperf_confidence" value="99,5" />
+ <alias name="nperf_max_runs" value="5"/>
+ <alias name="nperf_num_parallel" value="4"/>
+ <alias name="nperf_debug" value="0"/>
+ <alias name="nperf_max_dev" value="20%"/>
+ <alias name="nperf_protocols" value="tcp udp"/>
+ <alias name="mapping_file" value="novirt_ovs_geneve.mapping" />
+ <alias name="net" value="192.168.2"/>
+ <alias name="geneve_net" value="192.168.111"/>
+ <alias name="geneve_net6" value="fc00:0:0:0"/>
+ <alias name="driver" value=""/>
+ </define>
+ <network>
+ <host id="test_host1">
+ <interfaces>
+ <eth id="if1" label="n1">
+ <params>
+ <param name="driver" value="{$driver}"/>
+ </params>
+ <addresses>
+ <address value="{$net}.1/24"/>
+ <address value="{$net}.2/24"/>
+ <address value="{$net}.3/24"/>
+ <address value="{$net}.4/24"/>
+ <address value="{$net}.5/24"/>
+ <address value="{$net}.6/24"/>
+ <address value="{$net}.7/24"/>
+ <address value="{$net}.8/24"/>
+ <address value="{$net}.9/24"/>
+ <address value="{$net}.10/24"/>
+ <address value="{$net}.11/24"/>
+ <address value="{$net}.12/24"/>
+ <address value="{$net}.13/24"/>
+ <address value="{$net}.14/24"/>
+ <address value="{$net}.15/24"/>
+ <address value="{$net}.16/24"/>
+ </addresses>
+ </eth>
+ <ovs_bridge id="ovs1">
+ <internal id="int0">
+ <addresses>
+ <address value="{$geneve_net}.1/24"/>
+ <address value="{$geneve_net6}::1/64"/>
+ </addresses>
+ <options>
+ <option name="ofport_request" value="5"/>
+ <option name="name" value="int0"/>
+ </options>
+ </internal>
+ <internal id="int1">
+ <addresses>
+ <address value="{$geneve_net}.2/24"/>
+ <address value="{$geneve_net6}::2/64"/>
+ </addresses>
+ <options>
+ <option name="ofport_request" value="6"/>
+ <option name="name" value="int1"/>
+ </options>
+ </internal>
+ <internal id="int2">
+ <addresses>
+ <address value="{$geneve_net}.3/24"/>
+ <address value="{$geneve_net6}::3/64"/>
+ </addresses>
+ <options>
+ <option name="ofport_request" value="7"/>
+ <option name="name" value="int2"/>
+ </options>
+ </internal>
+ <internal id="int3">
+ <addresses>
+ <address value="{$geneve_net}.4/24"/>
+ <address value="{$geneve_net6}::4/64"/>
+ </addresses>
+ <options>
+ <option name="ofport_request" value="8"/>
+ <option name="name" value="int3"/>
+ </options>
+ </internal>
+ <internal id="int4">
+ <addresses>
+ <address value="{$geneve_net}.5/24"/>
+ <address value="{$geneve_net6}::5/64"/>
+ </addresses>
+ <options>
+ <option name="ofport_request" value="9"/>
+ <option name="name" value="int4"/>
+ </options>
+ </internal>
+ <internal id="int5">
+ <addresses>
+ <address value="{$geneve_net}.6/24"/>
+ <address value="{$geneve_net6}::6/64"/>
+ </addresses>
+ <options>
+ <option name="ofport_request" value="10"/>
+ <option name="name" value="int5"/>
+ </options>
+ </internal>
+ <internal id="int6">
+ <addresses>
+ <address value="{$geneve_net}.7/24"/>
+ <address value="{$geneve_net6}::7/64"/>
+ </addresses>
+ <options>
+ <option name="ofport_request" value="11"/>
+ <option name="name" value="int6"/>
+ </options>
+ </internal>
+ <internal id="int7">
+ <addresses>
+ <address value="{$geneve_net}.8/24"/>
+ <address value="{$geneve_net6}::8/64"/>
+ </addresses>
+ <options>
+ <option name="ofport_request" value="12"/>
+ <option name="name" value="int7"/>
+ </options>
+ </internal>
+ <internal id="int8">
+ <addresses>
+ <address value="{$geneve_net}.9/24"/>
+ <address value="{$geneve_net6}::9/64"/>
+ </addresses>
+ <options>
+ <option name="ofport_request" value="13"/>
+ <option name="name" value="int8"/>
+ </options>
+ </internal>
+ <internal id="int9">
+ <addresses>
+ <address value="{$geneve_net}.10/24"/>
+ <address value="{$geneve_net6}::10/65"/>
+ </addresses>
+ <options>
+ <option name="ofport_request" value="14"/>
+ <option name="name" value="int9"/>
+ </options>
+ </internal>
+ <internal id="int10">
+ <addresses>
+ <address value="{$geneve_net}.11/24"/>
+ <address value="{$geneve_net6}::11/65"/>
+ </addresses>
+ <options>
+ <option name="ofport_request" value="15"/>
+ <option name="name" value="int10"/>
+ </options>
+ </internal>
+ <internal id="int11">
+ <addresses>
+ <address value="{$geneve_net}.12/24"/>
+ <address value="{$geneve_net6}::12/65"/>
+ </addresses>
+ <options>
+ <option name="ofport_request" value="16"/>
+ <option name="name" value="int11"/>
+ </options>
+ </internal>
+ <internal id="int12">
+ <addresses>
+ <address value="{$geneve_net}.13/24"/>
+ <address value="{$geneve_net6}::13/65"/>
+ </addresses>
+ <options>
+ <option name="ofport_request" value="17"/>
+ <option name="name" value="int12"/>
+ </options>
+ </internal>
+ <internal id="int13">
+ <addresses>
+ <address value="{$geneve_net}.14/24"/>
+ <address value="{$geneve_net6}::14/65"/>
+ </addresses>
+ <options>
+ <option name="ofport_request" value="18"/>
+ <option name="name" value="int13"/>
+ </options>
+ </internal>
+ <internal id="int14">
+ <addresses>
+ <address value="{$geneve_net}.15/24"/>
+ <address value="{$geneve_net6}::15/65"/>
+ </addresses>
+ <options>
+ <option name="ofport_request" value="19"/>
+ <option name="name" value="int14"/>
+ </options>
+ </internal>
+ <internal id="int15">
+ <addresses>
+ <address value="{$geneve_net}.16/24"/>
+ <address value="{$geneve_net6}::16/65"/>
+ </addresses>
+ <options>
+ <option name="ofport_request" value="20"/>
+ <option name="name" value="int15"/>
+ </options>
+ </internal>
+ <tunnel id="geneve1" type="geneve">
+ <options>
+ <option name="name" value="geneve1"/>
+ <option name="option:remote_ip" value="{$net}.20"/>
+ <option name="option:key" value="flow"/>
+ <option name="ofport_request" value="30"/>
+ </options>
+ </tunnel>
+ <tunnel id="geneve2" type="geneve">
+ <options>
+ <option name="name" value="geneve2"/>
+ <option name="option:remote_ip" value="{$net}.21"/>
+ <option name="option:key" value="flow"/>
+ <option name="ofport_request" value="31"/>
+ </options>
+ </tunnel>
+ <tunnel id="geneve3" type="geneve">
+ <options>
+ <option name="name" value="geneve3"/>
+ <option name="option:remote_ip" value="{$net}.22"/>
+ <option name="option:key" value="flow"/>
+ <option name="ofport_request" value="32"/>
+ </options>
+ </tunnel>
+ <tunnel id="geneve4" type="geneve">
+ <options>
+ <option name="name" value="geneve4"/>
+ <option name="option:remote_ip" value="{$net}.23"/>
+ <option name="option:key" value="flow"/>
+ <option name="ofport_request" value="33"/>
+ </options>
+ </tunnel>
+ <tunnel id="geneve5" type="geneve">
+ <options>
+ <option name="name" value="geneve5"/>
+ <option name="option:remote_ip" value="{$net}.24"/>
+ <option name="option:key" value="flow"/>
+ <option name="ofport_request" value="34"/>
+ </options>
+ </tunnel>
+ <tunnel id="geneve6" type="geneve">
+ <options>
+ <option name="name" value="geneve6"/>
+ <option name="option:remote_ip" value="{$net}.25"/>
+ <option name="option:key" value="flow"/>
+ <option name="ofport_request" value="35"/>
+ </options>
+ </tunnel>
+ <tunnel id="geneve7" type="geneve">
+ <options>
+ <option name="name" value="geneve7"/>
+ <option name="option:remote_ip" value="{$net}.26"/>
+ <option name="option:key" value="flow"/>
+ <option name="ofport_request" value="36"/>
+ </options>
+ </tunnel>
+ <tunnel id="geneve8" type="geneve">
+ <options>
+ <option name="name" value="geneve8"/>
+ <option name="option:remote_ip" value="{$net}.27"/>
+ <option name="option:key" value="flow"/>
+ <option name="ofport_request" value="37"/>
+ </options>
+ </tunnel>
+ <tunnel id="geneve9" type="geneve">
+ <options>
+ <option name="name" value="geneve9"/>
+ <option name="option:remote_ip" value="{$net}.28"/>
+ <option name="option:key" value="flow"/>
+ <option name="ofport_request" value="38"/>
+ </options>
+ </tunnel>
+ <tunnel id="geneve10" type="geneve">
+ <options>
+ <option name="name" value="geneve10"/>
+ <option name="option:remote_ip" value="{$net}.29"/>
+ <option name="option:key" value="flow"/>
+ <option name="ofport_request" value="39"/>
+ </options>
+ </tunnel>
+ <tunnel id="geneve11" type="geneve">
+ <options>
+ <option name="name" value="geneve11"/>
+ <option name="option:remote_ip" value="{$net}.30"/>
+ <option name="option:key" value="flow"/>
+ <option name="ofport_request" value="40"/>
+ </options>
+ </tunnel>
+ <tunnel id="geneve12" type="geneve">
+ <options>
+ <option name="name" value="geneve12"/>
+ <option name="option:remote_ip" value="{$net}.31"/>
+ <option name="option:key" value="flow"/>
+ <option name="ofport_request" value="41"/>
+ </options>
+ </tunnel>
+ <tunnel id="geneve13" type="geneve">
+ <options>
+ <option name="name" value="geneve13"/>
+ <option name="option:remote_ip" value="{$net}.32"/>
+ <option name="option:key" value="flow"/>
+ <option name="ofport_request" value="42"/>
+ </options>
+ </tunnel>
+ <tunnel id="geneve14" type="geneve">
+ <options>
+ <option name="name" value="geneve14"/>
+ <option name="option:remote_ip" value="{$net}.33"/>
+ <option name="option:key" value="flow"/>
+ <option name="ofport_request" value="43"/>
+ </options>
+ </tunnel>
+ <tunnel id="geneve15" type="geneve">
+ <options>
+ <option name="name" value="geneve15"/>
+ <option name="option:remote_ip" value="{$net}.34"/>
+ <option name="option:key" value="flow"/>
+ <option name="ofport_request" value="44"/>
+ </options>
+ </tunnel>
+ <tunnel id="geneve16" type="geneve">
+ <options>
+ <option name="name" value="geneve16"/>
+ <option name="option:remote_ip" value="{$net}.35"/>
+ <option name="option:key" value="flow"/>
+ <option name="ofport_request" value="45"/>
+ </options>
+ </tunnel>
+ <flow_entries>
+ <entry>table=0,in_port=5,actions=set_field:100->tun_id,output:30</entry>
+ <entry>table=0,in_port=6,actions=set_field:100->tun_id,output:31</entry>
+ <entry>table=0,in_port=7,actions=set_field:100->tun_id,output:32</entry>
+ <entry>table=0,in_port=8,actions=set_field:100->tun_id,output:33</entry>
+ <entry>table=0,in_port=9,actions=set_field:100->tun_id,output:34</entry>
+ <entry>table=0,in_port=10,actions=set_field:100->tun_id,output:35</entry>
+ <entry>table=0,in_port=11,actions=set_field:100->tun_id,output:36</entry>
+ <entry>table=0,in_port=12,actions=set_field:100->tun_id,output:37</entry>
+ <entry>table=0,in_port=13,actions=set_field:100->tun_id,output:38</entry>
+ <entry>table=0,in_port=14,actions=set_field:100->tun_id,output:39</entry>
+ <entry>table=0,in_port=15,actions=set_field:100->tun_id,output:40</entry>
+ <entry>table=0,in_port=16,actions=set_field:100->tun_id,output:41</entry>
+ <entry>table=0,in_port=17,actions=set_field:100->tun_id,output:42</entry>
+ <entry>table=0,in_port=18,actions=set_field:100->tun_id,output:43</entry>
+ <entry>table=0,in_port=19,actions=set_field:100->tun_id,output:44</entry>
+ <entry>table=0,in_port=20,actions=set_field:100->tun_id,output:45</entry>
+ <entry>table=0,in_port=30,tun_id=100,actions=output:5</entry>
+ <entry>table=0,in_port=31,tun_id=100,actions=output:6</entry>
+ <entry>table=0,in_port=32,tun_id=100,actions=output:7</entry>
+ <entry>table=0,in_port=33,tun_id=100,actions=output:8</entry>
+ <entry>table=0,in_port=34,tun_id=100,actions=output:9</entry>
+ <entry>table=0,in_port=35,tun_id=100,actions=output:10</entry>
+ <entry>table=0,in_port=36,tun_id=100,actions=output:11</entry>
+ <entry>table=0,in_port=37,tun_id=100,actions=output:12</entry>
+ <entry>table=0,in_port=38,tun_id=100,actions=output:13</entry>
+ <entry>table=0,in_port=39,tun_id=100,actions=output:14</entry>
+ <entry>table=0,in_port=40,tun_id=100,actions=output:15</entry>
+ <entry>table=0,in_port=41,tun_id=100,actions=output:16</entry>
+ <entry>table=0,in_port=42,tun_id=100,actions=output:17</entry>
+ <entry>table=0,in_port=43,tun_id=100,actions=output:18</entry>
+ <entry>table=0,in_port=44,tun_id=100,actions=output:19</entry>
+ <entry>table=0,in_port=45,tun_id=100,actions=output:20</entry>
+ <entry>table=0,priority=100,actions=drop</entry>
+ </flow_entries>
+ </ovs_bridge>
+ </interfaces>
+ </host>
+ <host id="test_host2">
+ <interfaces>
+ <eth id="if1" label="n1">
+ <params>
+ <param name="driver" value="{$driver}"/>
+ </params>
+ <addresses>
+ <address value="{$net}.20/24"/>
+ <address value="{$net}.21/24"/>
+ <address value="{$net}.22/24"/>
+ <address value="{$net}.23/24"/>
+ <address value="{$net}.24/24"/>
+ <address value="{$net}.25/24"/>
+ <address value="{$net}.26/24"/>
+ <address value="{$net}.27/24"/>
+ <address value="{$net}.28/24"/>
+ <address value="{$net}.29/24"/>
+ <address value="{$net}.30/24"/>
+ <address value="{$net}.31/24"/>
+ <address value="{$net}.32/24"/>
+ <address value="{$net}.33/24"/>
+ <address value="{$net}.34/24"/>
+ <address value="{$net}.35/24"/>
+ </addresses>
+ </eth>
+ <ovs_bridge id="ovs2">
+ <internal id="int0">
+ <options>
+ <option name="ofport_request" value="5"/>
+ <option name="name" value="int0"/>
+ </options>
+ <addresses>
+ <address value="{$geneve_net}.20/24"/>
+ <address value="{$geneve_net6}::20/24"/>
+ </addresses>
+ </internal>
+ <internal id="int1">
+ <addresses>
+ <address value="{$geneve_net}.21/24"/>
+ <address value="{$geneve_net6}::21/64"/>
+ </addresses>
+ <options>
+ <option name="ofport_request" value="6"/>
+ <option name="name" value="int1"/>
+ </options>
+ </internal>
+ <internal id="int2">
+ <addresses>
+ <address value="{$geneve_net}.22/24"/>
+ <address value="{$geneve_net6}::22/64"/>
+ </addresses>
+ <options>
+ <option name="ofport_request" value="7"/>
+ <option name="name" value="int2"/>
+ </options>
+ </internal>
+ <internal id="int3">
+ <addresses>
+ <address value="{$geneve_net}.23/24"/>
+ <address value="{$geneve_net6}::23/64"/>
+ </addresses>
+ <options>
+ <option name="ofport_request" value="8"/>
+ <option name="name" value="int3"/>
+ </options>
+ </internal>
+ <internal id="int4">
+ <addresses>
+ <address value="{$geneve_net}.24/24"/>
+ <address value="{$geneve_net6}::24/64"/>
+ </addresses>
+ <options>
+ <option name="ofport_request" value="9"/>
+ <option name="name" value="int4"/>
+ </options>
+ </internal>
+ <internal id="int5">
+ <addresses>
+ <address value="{$geneve_net}.25/24"/>
+ <address value="{$geneve_net6}::25/64"/>
+ </addresses>
+ <options>
+ <option name="ofport_request" value="10"/>
+ <option name="name" value="int5"/>
+ </options>
+ </internal>
+ <internal id="int6">
+ <addresses>
+ <address value="{$geneve_net}.26/24"/>
+ <address value="{$geneve_net6}::26/64"/>
+ </addresses>
+ <options>
+ <option name="ofport_request" value="11"/>
+ <option name="name" value="int6"/>
+ </options>
+ </internal>
+ <internal id="int7">
+ <addresses>
+ <address value="{$geneve_net}.27/24"/>
+ <address value="{$geneve_net6}::27/64"/>
+ </addresses>
+ <options>
+ <option name="ofport_request" value="12"/>
+ <option name="name" value="int7"/>
+ </options>
+ </internal>
+ <internal id="int8">
+ <addresses>
+ <address value="{$geneve_net}.28/24"/>
+ <address value="{$geneve_net6}::28/64"/>
+ </addresses>
+ <options>
+ <option name="ofport_request" value="13"/>
+ <option name="name" value="int8"/>
+ </options>
+ </internal>
+ <internal id="int9">
+ <addresses>
+ <address value="{$geneve_net}.29/24"/>
+ <address value="{$geneve_net6}::29/64"/>
+ </addresses>
+ <options>
+ <option name="ofport_request" value="14"/>
+ <option name="name" value="int9"/>
+ </options>
+ </internal>
+ <internal id="int10">
+ <addresses>
+ <address value="{$geneve_net}.30/24"/>
+ <address value="{$geneve_net6}::30/64"/>
+ </addresses>
+ <options>
+ <option name="ofport_request" value="15"/>
+ <option name="name" value="int10"/>
+ </options>
+ </internal>
+ <internal id="int11">
+ <addresses>
+ <address value="{$geneve_net}.31/24"/>
+ <address value="{$geneve_net6}::31/64"/>
+ </addresses>
+ <options>
+ <option name="ofport_request" value="16"/>
+ <option name="name" value="int11"/>
+ </options>
+ </internal>
+ <internal id="int12">
+ <addresses>
+ <address value="{$geneve_net}.32/24"/>
+ <address value="{$geneve_net6}::32/64"/>
+ </addresses>
+ <options>
+ <option name="ofport_request" value="17"/>
+ <option name="name" value="int12"/>
+ </options>
+ </internal>
+ <internal id="int13">
+ <addresses>
+ <address value="{$geneve_net}.33/24"/>
+ <address value="{$geneve_net6}::33/64"/>
+ </addresses>
+ <options>
+ <option name="ofport_request" value="18"/>
+ <option name="name" value="int13"/>
+ </options>
+ </internal>
+ <internal id="int14">
+ <addresses>
+ <address value="{$geneve_net}.34/24"/>
+ <address value="{$geneve_net6}::34/64"/>
+ </addresses>
+ <options>
+ <option name="ofport_request" value="19"/>
+ <option name="name" value="int14"/>
+ </options>
+ </internal>
+ <internal id="int15">
+ <addresses>
+ <address value="{$geneve_net}.35/24"/>
+ <address value="{$geneve_net6}::35/64"/>
+ </addresses>
+ <options>
+ <option name="ofport_request" value="20"/>
+ <option name="name" value="int15"/>
+ </options>
+ </internal>
+ <tunnel id="geneve1" type="geneve">
+ <options>
+ <option name="name" value="geneve1"/>
+ <option name="option:remote_ip" value="{$net}.1"/>
+ <option name="option:key" value="flow"/>
+ <option name="ofport_request" value="30"/>
+ </options>
+ </tunnel>
+ <tunnel id="geneve2" type="geneve">
+ <options>
+ <option name="name" value="geneve2"/>
+ <option name="option:remote_ip" value="{$net}.2"/>
+ <option name="option:key" value="flow"/>
+ <option name="ofport_request" value="31"/>
+ </options>
+ </tunnel>
+ <tunnel id="geneve3" type="geneve">
+ <options>
+ <option name="name" value="geneve3"/>
+ <option name="option:remote_ip" value="{$net}.3"/>
+ <option name="option:key" value="flow"/>
+ <option name="ofport_request" value="32"/>
+ </options>
+ </tunnel>
+ <tunnel id="geneve4" type="geneve">
+ <options>
+ <option name="name" value="geneve4"/>
+ <option name="option:remote_ip" value="{$net}.4"/>
+ <option name="option:key" value="flow"/>
+ <option name="ofport_request" value="33"/>
+ </options>
+ </tunnel>
+ <tunnel id="geneve5" type="geneve">
+ <options>
+ <option name="name" value="geneve5"/>
+ <option name="option:remote_ip" value="{$net}.5"/>
+ <option name="option:key" value="flow"/>
+ <option name="ofport_request" value="34"/>
+ </options>
+ </tunnel>
+ <tunnel id="geneve6" type="geneve">
+ <options>
+ <option name="name" value="geneve6"/>
+ <option name="option:remote_ip" value="{$net}.6"/>
+ <option name="option:key" value="flow"/>
+ <option name="ofport_request" value="35"/>
+ </options>
+ </tunnel>
+ <tunnel id="geneve7" type="geneve">
+ <options>
+ <option name="name" value="geneve7"/>
+ <option name="option:remote_ip" value="{$net}.7"/>
+ <option name="option:key" value="flow"/>
+ <option name="ofport_request" value="36"/>
+ </options>
+ </tunnel>
+ <tunnel id="geneve8" type="geneve">
+ <options>
+ <option name="name" value="geneve8"/>
+ <option name="option:remote_ip" value="{$net}.8"/>
+ <option name="option:key" value="flow"/>
+ <option name="ofport_request" value="37"/>
+ </options>
+ </tunnel>
+ <tunnel id="geneve9" type="geneve">
+ <options>
+ <option name="name" value="geneve9"/>
+ <option name="option:remote_ip" value="{$net}.9"/>
+ <option name="option:key" value="flow"/>
+ <option name="ofport_request" value="38"/>
+ </options>
+ </tunnel>
+ <tunnel id="geneve10" type="geneve">
+ <options>
+ <option name="name" value="geneve10"/>
+ <option name="option:remote_ip" value="{$net}.10"/>
+ <option name="option:key" value="flow"/>
+ <option name="ofport_request" value="39"/>
+ </options>
+ </tunnel>
+ <tunnel id="geneve11" type="geneve">
+ <options>
+ <option name="name" value="geneve11"/>
+ <option name="option:remote_ip" value="{$net}.11"/>
+ <option name="option:key" value="flow"/>
+ <option name="ofport_request" value="40"/>
+ </options>
+ </tunnel>
+ <tunnel id="geneve12" type="geneve">
+ <options>
+ <option name="name" value="geneve12"/>
+ <option name="option:remote_ip" value="{$net}.12"/>
+ <option name="option:key" value="flow"/>
+ <option name="ofport_request" value="41"/>
+ </options>
+ </tunnel>
+ <tunnel id="geneve13" type="geneve">
+ <options>
+ <option name="name" value="geneve13"/>
+ <option name="option:remote_ip" value="{$net}.13"/>
+ <option name="option:key" value="flow"/>
+ <option name="ofport_request" value="42"/>
+ </options>
+ </tunnel>
+ <tunnel id="geneve14" type="geneve">
+ <options>
+ <option name="name" value="geneve14"/>
+ <option name="option:remote_ip" value="{$net}.14"/>
+ <option name="option:key" value="flow"/>
+ <option name="ofport_request" value="43"/>
+ </options>
+ </tunnel>
+ <tunnel id="geneve15" type="geneve">
+ <options>
+ <option name="name" value="geneve15"/>
+ <option name="option:remote_ip" value="{$net}.15"/>
+ <option name="option:key" value="flow"/>
+ <option name="ofport_request" value="44"/>
+ </options>
+ </tunnel>
+ <tunnel id="geneve16" type="geneve">
+ <options>
+ <option name="name" value="geneve16"/>
+ <option name="option:remote_ip" value="{$net}.16"/>
+ <option name="option:key" value="flow"/>
+ <option name="ofport_request" value="45"/>
+ </options>
+ </tunnel>
+ <flow_entries>
+ <entry>table=0,in_port=5,actions=set_field:100->tun_id,output:30</entry>
+ <entry>table=0,in_port=6,actions=set_field:100->tun_id,output:31</entry>
+ <entry>table=0,in_port=7,actions=set_field:100->tun_id,output:32</entry>
+ <entry>table=0,in_port=8,actions=set_field:100->tun_id,output:33</entry>
+ <entry>table=0,in_port=9,actions=set_field:100->tun_id,output:34</entry>
+ <entry>table=0,in_port=10,actions=set_field:100->tun_id,output:35</entry>
+ <entry>table=0,in_port=11,actions=set_field:100->tun_id,output:36</entry>
+ <entry>table=0,in_port=12,actions=set_field:100->tun_id,output:37</entry>
+ <entry>table=0,in_port=13,actions=set_field:100->tun_id,output:38</entry>
+ <entry>table=0,in_port=14,actions=set_field:100->tun_id,output:39</entry>
+ <entry>table=0,in_port=15,actions=set_field:100->tun_id,output:40</entry>
+ <entry>table=0,in_port=16,actions=set_field:100->tun_id,output:41</entry>
+ <entry>table=0,in_port=17,actions=set_field:100->tun_id,output:42</entry>
+ <entry>table=0,in_port=18,actions=set_field:100->tun_id,output:43</entry>
+ <entry>table=0,in_port=19,actions=set_field:100->tun_id,output:44</entry>
+ <entry>table=0,in_port=20,actions=set_field:100->tun_id,output:45</entry>
+ <entry>table=0,in_port=30,tun_id=100,actions=output:5</entry>
+ <entry>table=0,in_port=31,tun_id=100,actions=output:6</entry>
+ <entry>table=0,in_port=32,tun_id=100,actions=output:7</entry>
+ <entry>table=0,in_port=33,tun_id=100,actions=output:8</entry>
+ <entry>table=0,in_port=34,tun_id=100,actions=output:9</entry>
+ <entry>table=0,in_port=35,tun_id=100,actions=output:10</entry>
+ <entry>table=0,in_port=36,tun_id=100,actions=output:11</entry>
+ <entry>table=0,in_port=37,tun_id=100,actions=output:12</entry>
+ <entry>table=0,in_port=38,tun_id=100,actions=output:13</entry>
+ <entry>table=0,in_port=39,tun_id=100,actions=output:14</entry>
+ <entry>table=0,in_port=40,tun_id=100,actions=output:15</entry>
+ <entry>table=0,in_port=41,tun_id=100,actions=output:16</entry>
+ <entry>table=0,in_port=42,tun_id=100,actions=output:17</entry>
+ <entry>table=0,in_port=43,tun_id=100,actions=output:18</entry>
+ <entry>table=0,in_port=44,tun_id=100,actions=output:19</entry>
+ <entry>table=0,in_port=45,tun_id=100,actions=output:20</entry>
+ <entry>table=0,priority=100,actions=drop</entry>
+ </flow_entries>
+ </ovs_bridge>
+ </interfaces>
+ </host>
+ </network>
+
+ <task python="ovs_tunnels.py"/>
+</lnstrecipe>
diff --git a/recipes/tunnels/ovs_tunnels.py b/recipes/tunnels/ovs_tunnels.py
new file mode 100644
index 0000000..2075d84
--- /dev/null
+++ b/recipes/tunnels/ovs_tunnels.py
@@ -0,0 +1,170 @@
+from lnst.Controller.Task import ctl
+
+from lnst.RecipeCommon.ModuleWrap import netperf
+from lnst.RecipeCommon.IRQ import pin_dev_irqs
+
+def run_netperf(netperf_servers, netperf_clients, testname):
+ netperf_cli_procs = []
+ netperf_srv_procs = []
+
+ timeout = (netperf_duration + nperf_reserve) * nperf_max_runs
+
+ for i in range(0, TUNNEL_COUNT):
+ netperf_clients[i].update_options({"testname" : testname})
+
+ netperf_srv_procs.append(h2.run(netperf_servers[i], bg=True, timeout=timeout))
+ netperf_cli_procs.append(h1.run(netperf_clients[i], bg=True, timeout=timeout))
+
+ for i in range(0, TUNNEL_COUNT):
+ netperf_cli_procs[i].wait()
+ netperf_srv_procs[i].intr()
+
+ sum = 0
+
+ for i in range(0, TUNNEL_COUNT):
+ sum += netperf_cli_procs[i].get_result()['res_data']['rate']
+
+ res = ctl.get_module("Custom",
+ options={
+ "rate" : sum,
+ "unit" : "bps",
+ "testname" : testname
+ })
+
+ return res
+
+# ------
+# SETUP
+# ------
+
+# test hosts
+h1 = ctl.get_host("test_host1")
+h2 = ctl.get_host("test_host2")
+
+for h in [h1, h2]:
+ h.sync_resources(modules=["Netperf", "Custom"])
+
+TUNNEL_COUNT = 16
+
+# ------
+# TESTS
+# ------
+
+ipv = ctl.get_alias("ipv")
+mtu = ctl.get_alias("mtu")
+netperf_duration = int(ctl.get_alias("netperf_duration"))
+nperf_reserve = int(ctl.get_alias("nperf_reserve"))
+nperf_confidence = ctl.get_alias("nperf_confidence")
+nperf_max_runs = int(ctl.get_alias("nperf_max_runs"))
+nperf_cpupin = ctl.get_alias("nperf_cpupin")
+nperf_cpu_util = ctl.get_alias("nperf_cpu_util")
+nperf_num_parallel = int(ctl.get_alias("nperf_num_parallel"))
+nperf_debug = ctl.get_alias("nperf_debug")
+nperf_max_dev = ctl.get_alias("nperf_max_dev")
+nperf_msg_size = ctl.get_alias("nperf_msg_size")
+nperf_protocols = ctl.get_alias("nperf_protocols")
+
+devices = []
+
+h1_nic = h1.get_interface("if1")
+h2_nic = h2.get_interface("if1")
+
+for i in range(0, TUNNEL_COUNT):
+ d1 = h1.get_device("int" + str(i))
+ d2 = h2.get_device("int" + str(i))
+ devices.append((d1, d2))
+
+for h1_dev, h2_dev in devices:
+ h1_dev.set_mtu(mtu)
+ h2_dev.set_mtu(mtu)
+
+nperf_opts = ""
+if nperf_cpupin:
+ h1.run("service irqbalance stop")
+ h2.run("service irqbalance stop")
+
+ # this will pin devices irqs to cpu #0
+ for m, d in [(h1, h1_nic), (h2, h2_nic)]:
+ pin_dev_irqs(m, d, 0)
+
+if nperf_cpupin and nperf_num_parallel == 1:
+ nperf_opts = " -T%s,%s" % (nperf_cpupin, nperf_cpupin)
+
+
+ctl.wait(15)
+
+netperf_clients = []
+netperf_servers = []
+netperf_clients6 = []
+netperf_servers6 = []
+
+
+for h1_dev, h2_dev in devices:
+ netperf_clients.append(ctl.get_module("Netperf",
+ options={
+ "role" : "client",
+ "netperf_server": h2_dev.get_ip(0),
+ "bind": h1_dev.get_ip(0),
+ "duration" : netperf_duration,
+ "testname" : "TCP_STREAM",
+ "confidence" : nperf_confidence,
+ "cpu_util" : nperf_cpu_util,
+ "runs": nperf_max_runs,
+ "debug" : nperf_debug,
+ "num_parallel" : nperf_num_parallel,
+ "max_deviation" : nperf_max_dev}))
+
+ netperf_clients6.append(ctl.get_module("Netperf",
+ options={
+ "role" : "client",
+ "netperf_server": h2_dev.get_ip(1),
+ "bind": h1_dev.get_ip(1),
+ "duration" : netperf_duration,
+ "testname" : "TCP_STREAM",
+ "confidence" : nperf_confidence,
+ "cpu_util" : nperf_cpu_util,
+ "runs": nperf_max_runs,
+ "debug" : nperf_debug,
+ "num_parallel" : nperf_num_parallel,
+ "max_deviation" : nperf_max_dev}))
+
+ netperf_servers.append(ctl.get_module("Netperf",
+ options={
+ "role" : "server",
+ "bind": h2_dev.get_ip(0)}))
+
+ netperf_servers6.append(ctl.get_module("Netperf",
+ options={
+ "role" : "server",
+ "bind": h2_dev.get_ip(1)}))
+
+
+for action in ["on", "off"]:
+ h1.run("ethtool -K %s tx-udp_tnl-segmentation %s" % (h1_nic.get_devname(), action))
+ h2.run("ethtool -K %s tx-udp_tnl-segmentation %s" % (h2_nic.get_devname(), action))
+
+ #netperfs
+ ctl.wait(5)
+
+ if ipv in ["ipv4", "both"]:
+ if nperf_protocols.find("tcp") > -1:
+ testname = "TCP_STREAM"
+ res = run_netperf(netperf_servers, netperf_clients, testname)
+ h1.run(res)
+ if nperf_protocols.find("udp") > -1:
+ testname = "UDP_STREAM"
+ res = run_netperf(netperf_servers, netperf_clients, testname)
+ h1.run(res)
+ if ipv in ["ipv6", "both"]:
+ if nperf_protocols.find("tcp") > -1:
+ testname = "TCP_STREAM"
+ res = run_netperf(netperf_servers6, netperf_clients6, testname)
+ h1.run(res)
+ if nperf_protocols.find("udp") > -1:
+ testname = "UDP_STREAM"
+ res = run_netperf(netperf_servers6, netperf_clients6, testname)
+ h1.run(res)
+
+if nperf_cpupin:
+ h1.run("service irqbalance start")
+ h2.run("service irqbalance start")
diff --git a/recipes/tunnels/ovs_vxlan.xml b/recipes/tunnels/ovs_vxlan.xml
new file mode 100644
index 0000000..773e464
--- /dev/null
+++ b/recipes/tunnels/ovs_vxlan.xml
@@ -0,0 +1,727 @@
+<lnstrecipe>
+ <define>
+ <alias name="ipv" value="both" />
+ <alias name="mtu" value="1450" />
+ <alias name="netperf_duration" value="60" />
+ <alias name="nperf_reserve" value="20" />
+ <alias name="nperf_confidence" value="99,5" />
+ <alias name="nperf_max_runs" value="5"/>
+ <alias name="nperf_num_parallel" value="4"/>
+ <alias name="nperf_debug" value="0"/>
+ <alias name="nperf_max_dev" value="20%"/>
+ <alias name="nperf_protocols" value="tcp udp"/>
+ <alias name="mapping_file" value="novirt_ovs_vxlan.mapping" />
+ <alias name="net" value="192.168.2"/>
+ <alias name="vxlan_net" value="192.168.111"/>
+ <alias name="vxlan_net6" value="fc00:0:0:0"/>
+ <alias name="driver" value=""/>
+ </define>
+ <network>
+ <host id="test_host1">
+ <interfaces>
+ <eth id="if1" label="n1">
+ <params>
+ <param name="driver" value="{$driver}"/>
+ </params>
+ <addresses>
+ <address value="{$net}.1/24"/>
+ <address value="{$net}.2/24"/>
+ <address value="{$net}.3/24"/>
+ <address value="{$net}.4/24"/>
+ <address value="{$net}.5/24"/>
+ <address value="{$net}.6/24"/>
+ <address value="{$net}.7/24"/>
+ <address value="{$net}.8/24"/>
+ <address value="{$net}.9/24"/>
+ <address value="{$net}.10/24"/>
+ <address value="{$net}.11/24"/>
+ <address value="{$net}.12/24"/>
+ <address value="{$net}.13/24"/>
+ <address value="{$net}.14/24"/>
+ <address value="{$net}.15/24"/>
+ <address value="{$net}.16/24"/>
+ </addresses>
+ </eth>
+ <ovs_bridge id="ovs1">
+ <internal id="int0">
+ <addresses>
+ <address value="{$vxlan_net}.1/24"/>
+ <address value="{$vxlan_net6}::1/64"/>
+ </addresses>
+ <options>
+ <option name="ofport_request" value="5"/>
+ <option name="name" value="int0"/>
+ </options>
+ </internal>
+ <internal id="int1">
+ <addresses>
+ <address value="{$vxlan_net}.2/24"/>
+ <address value="{$vxlan_net6}::2/64"/>
+ </addresses>
+ <options>
+ <option name="ofport_request" value="6"/>
+ <option name="name" value="int1"/>
+ </options>
+ </internal>
+ <internal id="int2">
+ <addresses>
+ <address value="{$vxlan_net}.3/24"/>
+ <address value="{$vxlan_net6}::3/64"/>
+ </addresses>
+ <options>
+ <option name="ofport_request" value="7"/>
+ <option name="name" value="int2"/>
+ </options>
+ </internal>
+ <internal id="int3">
+ <addresses>
+ <address value="{$vxlan_net}.4/24"/>
+ <address value="{$vxlan_net6}::4/64"/>
+ </addresses>
+ <options>
+ <option name="ofport_request" value="8"/>
+ <option name="name" value="int3"/>
+ </options>
+ </internal>
+ <internal id="int4">
+ <addresses>
+ <address value="{$vxlan_net}.5/24"/>
+ <address value="{$vxlan_net6}::5/64"/>
+ </addresses>
+ <options>
+ <option name="ofport_request" value="9"/>
+ <option name="name" value="int4"/>
+ </options>
+ </internal>
+ <internal id="int5">
+ <addresses>
+ <address value="{$vxlan_net}.6/24"/>
+ <address value="{$vxlan_net6}::6/64"/>
+ </addresses>
+ <options>
+ <option name="ofport_request" value="10"/>
+ <option name="name" value="int5"/>
+ </options>
+ </internal>
+ <internal id="int6">
+ <addresses>
+ <address value="{$vxlan_net}.7/24"/>
+ <address value="{$vxlan_net6}::7/64"/>
+ </addresses>
+ <options>
+ <option name="ofport_request" value="11"/>
+ <option name="name" value="int6"/>
+ </options>
+ </internal>
+ <internal id="int7">
+ <addresses>
+ <address value="{$vxlan_net}.8/24"/>
+ <address value="{$vxlan_net6}::8/64"/>
+ </addresses>
+ <options>
+ <option name="ofport_request" value="12"/>
+ <option name="name" value="int7"/>
+ </options>
+ </internal>
+ <internal id="int8">
+ <addresses>
+ <address value="{$vxlan_net}.9/24"/>
+ <address value="{$vxlan_net6}::9/64"/>
+ </addresses>
+ <options>
+ <option name="ofport_request" value="13"/>
+ <option name="name" value="int8"/>
+ </options>
+ </internal>
+ <internal id="int9">
+ <addresses>
+ <address value="{$vxlan_net}.10/24"/>
+ <address value="{$vxlan_net6}::10/65"/>
+ </addresses>
+ <options>
+ <option name="ofport_request" value="14"/>
+ <option name="name" value="int9"/>
+ </options>
+ </internal>
+ <internal id="int10">
+ <addresses>
+ <address value="{$vxlan_net}.11/24"/>
+ <address value="{$vxlan_net6}::11/65"/>
+ </addresses>
+ <options>
+ <option name="ofport_request" value="15"/>
+ <option name="name" value="int10"/>
+ </options>
+ </internal>
+ <internal id="int11">
+ <addresses>
+ <address value="{$vxlan_net}.12/24"/>
+ <address value="{$vxlan_net6}::12/65"/>
+ </addresses>
+ <options>
+ <option name="ofport_request" value="16"/>
+ <option name="name" value="int11"/>
+ </options>
+ </internal>
+ <internal id="int12">
+ <addresses>
+ <address value="{$vxlan_net}.13/24"/>
+ <address value="{$vxlan_net6}::13/65"/>
+ </addresses>
+ <options>
+ <option name="ofport_request" value="17"/>
+ <option name="name" value="int12"/>
+ </options>
+ </internal>
+ <internal id="int13">
+ <addresses>
+ <address value="{$vxlan_net}.14/24"/>
+ <address value="{$vxlan_net6}::14/65"/>
+ </addresses>
+ <options>
+ <option name="ofport_request" value="18"/>
+ <option name="name" value="int13"/>
+ </options>
+ </internal>
+ <internal id="int14">
+ <addresses>
+ <address value="{$vxlan_net}.15/24"/>
+ <address value="{$vxlan_net6}::15/65"/>
+ </addresses>
+ <options>
+ <option name="ofport_request" value="19"/>
+ <option name="name" value="int14"/>
+ </options>
+ </internal>
+ <internal id="int15">
+ <addresses>
+ <address value="{$vxlan_net}.16/24"/>
+ <address value="{$vxlan_net6}::16/65"/>
+ </addresses>
+ <options>
+ <option name="ofport_request" value="20"/>
+ <option name="name" value="int15"/>
+ </options>
+ </internal>
+ <tunnel id="vxlan1" type="vxlan">
+ <options>
+ <option name="name" value="vxlan1"/>
+ <option name="option:remote_ip" value="{$net}.20"/>
+ <option name="option:key" value="flow"/>
+ <option name="ofport_request" value="30"/>
+ </options>
+ </tunnel>
+ <tunnel id="vxlan2" type="vxlan">
+ <options>
+ <option name="name" value="vxlan2"/>
+ <option name="option:remote_ip" value="{$net}.21"/>
+ <option name="option:key" value="flow"/>
+ <option name="ofport_request" value="31"/>
+ </options>
+ </tunnel>
+ <tunnel id="vxlan3" type="vxlan">
+ <options>
+ <option name="name" value="vxlan3"/>
+ <option name="option:remote_ip" value="{$net}.22"/>
+ <option name="option:key" value="flow"/>
+ <option name="ofport_request" value="32"/>
+ </options>
+ </tunnel>
+ <tunnel id="vxlan4" type="vxlan">
+ <options>
+ <option name="name" value="vxlan4"/>
+ <option name="option:remote_ip" value="{$net}.23"/>
+ <option name="option:key" value="flow"/>
+ <option name="ofport_request" value="33"/>
+ </options>
+ </tunnel>
+ <tunnel id="vxlan5" type="vxlan">
+ <options>
+ <option name="name" value="vxlan5"/>
+ <option name="option:remote_ip" value="{$net}.24"/>
+ <option name="option:key" value="flow"/>
+ <option name="ofport_request" value="34"/>
+ </options>
+ </tunnel>
+ <tunnel id="vxlan6" type="vxlan">
+ <options>
+ <option name="name" value="vxlan6"/>
+ <option name="option:remote_ip" value="{$net}.25"/>
+ <option name="option:key" value="flow"/>
+ <option name="ofport_request" value="35"/>
+ </options>
+ </tunnel>
+ <tunnel id="vxlan7" type="vxlan">
+ <options>
+ <option name="name" value="vxlan7"/>
+ <option name="option:remote_ip" value="{$net}.26"/>
+ <option name="option:key" value="flow"/>
+ <option name="ofport_request" value="36"/>
+ </options>
+ </tunnel>
+ <tunnel id="vxlan8" type="vxlan">
+ <options>
+ <option name="name" value="vxlan8"/>
+ <option name="option:remote_ip" value="{$net}.27"/>
+ <option name="option:key" value="flow"/>
+ <option name="ofport_request" value="37"/>
+ </options>
+ </tunnel>
+ <tunnel id="vxlan9" type="vxlan">
+ <options>
+ <option name="name" value="vxlan9"/>
+ <option name="option:remote_ip" value="{$net}.28"/>
+ <option name="option:key" value="flow"/>
+ <option name="ofport_request" value="38"/>
+ </options>
+ </tunnel>
+ <tunnel id="vxlan10" type="vxlan">
+ <options>
+ <option name="name" value="vxlan10"/>
+ <option name="option:remote_ip" value="{$net}.29"/>
+ <option name="option:key" value="flow"/>
+ <option name="ofport_request" value="39"/>
+ </options>
+ </tunnel>
+ <tunnel id="vxlan11" type="vxlan">
+ <options>
+ <option name="name" value="vxlan11"/>
+ <option name="option:remote_ip" value="{$net}.30"/>
+ <option name="option:key" value="flow"/>
+ <option name="ofport_request" value="40"/>
+ </options>
+ </tunnel>
+ <tunnel id="vxlan12" type="vxlan">
+ <options>
+ <option name="name" value="vxlan12"/>
+ <option name="option:remote_ip" value="{$net}.31"/>
+ <option name="option:key" value="flow"/>
+ <option name="ofport_request" value="41"/>
+ </options>
+ </tunnel>
+ <tunnel id="vxlan13" type="vxlan">
+ <options>
+ <option name="name" value="vxlan13"/>
+ <option name="option:remote_ip" value="{$net}.32"/>
+ <option name="option:key" value="flow"/>
+ <option name="ofport_request" value="42"/>
+ </options>
+ </tunnel>
+ <tunnel id="vxlan14" type="vxlan">
+ <options>
+ <option name="name" value="vxlan14"/>
+ <option name="option:remote_ip" value="{$net}.33"/>
+ <option name="option:key" value="flow"/>
+ <option name="ofport_request" value="43"/>
+ </options>
+ </tunnel>
+ <tunnel id="vxlan15" type="vxlan">
+ <options>
+ <option name="name" value="vxlan15"/>
+ <option name="option:remote_ip" value="{$net}.34"/>
+ <option name="option:key" value="flow"/>
+ <option name="ofport_request" value="44"/>
+ </options>
+ </tunnel>
+ <tunnel id="vxlan16" type="vxlan">
+ <options>
+ <option name="name" value="vxlan16"/>
+ <option name="option:remote_ip" value="{$net}.35"/>
+ <option name="option:key" value="flow"/>
+ <option name="ofport_request" value="45"/>
+ </options>
+ </tunnel>
+ <flow_entries>
+ <entry>table=0,in_port=5,actions=set_field:100->tun_id,output:30</entry>
+ <entry>table=0,in_port=6,actions=set_field:100->tun_id,output:31</entry>
+ <entry>table=0,in_port=7,actions=set_field:100->tun_id,output:32</entry>
+ <entry>table=0,in_port=8,actions=set_field:100->tun_id,output:33</entry>
+ <entry>table=0,in_port=9,actions=set_field:100->tun_id,output:34</entry>
+ <entry>table=0,in_port=10,actions=set_field:100->tun_id,output:35</entry>
+ <entry>table=0,in_port=11,actions=set_field:100->tun_id,output:36</entry>
+ <entry>table=0,in_port=12,actions=set_field:100->tun_id,output:37</entry>
+ <entry>table=0,in_port=13,actions=set_field:100->tun_id,output:38</entry>
+ <entry>table=0,in_port=14,actions=set_field:100->tun_id,output:39</entry>
+ <entry>table=0,in_port=15,actions=set_field:100->tun_id,output:40</entry>
+ <entry>table=0,in_port=16,actions=set_field:100->tun_id,output:41</entry>
+ <entry>table=0,in_port=17,actions=set_field:100->tun_id,output:42</entry>
+ <entry>table=0,in_port=18,actions=set_field:100->tun_id,output:43</entry>
+ <entry>table=0,in_port=19,actions=set_field:100->tun_id,output:44</entry>
+ <entry>table=0,in_port=20,actions=set_field:100->tun_id,output:45</entry>
+ <entry>table=0,in_port=30,tun_id=100,actions=output:5</entry>
+ <entry>table=0,in_port=31,tun_id=100,actions=output:6</entry>
+ <entry>table=0,in_port=32,tun_id=100,actions=output:7</entry>
+ <entry>table=0,in_port=33,tun_id=100,actions=output:8</entry>
+ <entry>table=0,in_port=34,tun_id=100,actions=output:9</entry>
+ <entry>table=0,in_port=35,tun_id=100,actions=output:10</entry>
+ <entry>table=0,in_port=36,tun_id=100,actions=output:11</entry>
+ <entry>table=0,in_port=37,tun_id=100,actions=output:12</entry>
+ <entry>table=0,in_port=38,tun_id=100,actions=output:13</entry>
+ <entry>table=0,in_port=39,tun_id=100,actions=output:14</entry>
+ <entry>table=0,in_port=40,tun_id=100,actions=output:15</entry>
+ <entry>table=0,in_port=41,tun_id=100,actions=output:16</entry>
+ <entry>table=0,in_port=42,tun_id=100,actions=output:17</entry>
+ <entry>table=0,in_port=43,tun_id=100,actions=output:18</entry>
+ <entry>table=0,in_port=44,tun_id=100,actions=output:19</entry>
+ <entry>table=0,in_port=45,tun_id=100,actions=output:20</entry>
+ <entry>table=0,priority=100,actions=drop</entry>
+ </flow_entries>
+ </ovs_bridge>
+ </interfaces>
+ </host>
+ <host id="test_host2">
+ <interfaces>
+ <eth id="if1" label="n1">
+ <params>
+ <param name="driver" value="{$driver}"/>
+ </params>
+ <addresses>
+ <address value="{$net}.20/24"/>
+ <address value="{$net}.21/24"/>
+ <address value="{$net}.22/24"/>
+ <address value="{$net}.23/24"/>
+ <address value="{$net}.24/24"/>
+ <address value="{$net}.25/24"/>
+ <address value="{$net}.26/24"/>
+ <address value="{$net}.27/24"/>
+ <address value="{$net}.28/24"/>
+ <address value="{$net}.29/24"/>
+ <address value="{$net}.30/24"/>
+ <address value="{$net}.31/24"/>
+ <address value="{$net}.32/24"/>
+ <address value="{$net}.33/24"/>
+ <address value="{$net}.34/24"/>
+ <address value="{$net}.35/24"/>
+ </addresses>
+ </eth>
+ <ovs_bridge id="ovs2">
+ <internal id="int0">
+ <options>
+ <option name="ofport_request" value="5"/>
+ <option name="name" value="int0"/>
+ </options>
+ <addresses>
+ <address value="{$vxlan_net}.20/24"/>
+ <address value="{$vxlan_net6}::20/24"/>
+ </addresses>
+ </internal>
+ <internal id="int1">
+ <addresses>
+ <address value="{$vxlan_net}.21/24"/>
+ <address value="{$vxlan_net6}::21/64"/>
+ </addresses>
+ <options>
+ <option name="ofport_request" value="6"/>
+ <option name="name" value="int1"/>
+ </options>
+ </internal>
+ <internal id="int2">
+ <addresses>
+ <address value="{$vxlan_net}.22/24"/>
+ <address value="{$vxlan_net6}::22/64"/>
+ </addresses>
+ <options>
+ <option name="ofport_request" value="7"/>
+ <option name="name" value="int2"/>
+ </options>
+ </internal>
+ <internal id="int3">
+ <addresses>
+ <address value="{$vxlan_net}.23/24"/>
+ <address value="{$vxlan_net6}::23/64"/>
+ </addresses>
+ <options>
+ <option name="ofport_request" value="8"/>
+ <option name="name" value="int3"/>
+ </options>
+ </internal>
+ <internal id="int4">
+ <addresses>
+ <address value="{$vxlan_net}.24/24"/>
+ <address value="{$vxlan_net6}::24/64"/>
+ </addresses>
+ <options>
+ <option name="ofport_request" value="9"/>
+ <option name="name" value="int4"/>
+ </options>
+ </internal>
+ <internal id="int5">
+ <addresses>
+ <address value="{$vxlan_net}.25/24"/>
+ <address value="{$vxlan_net6}::25/64"/>
+ </addresses>
+ <options>
+ <option name="ofport_request" value="10"/>
+ <option name="name" value="int5"/>
+ </options>
+ </internal>
+ <internal id="int6">
+ <addresses>
+ <address value="{$vxlan_net}.26/24"/>
+ <address value="{$vxlan_net6}::26/64"/>
+ </addresses>
+ <options>
+ <option name="ofport_request" value="11"/>
+ <option name="name" value="int6"/>
+ </options>
+ </internal>
+ <internal id="int7">
+ <addresses>
+ <address value="{$vxlan_net}.27/24"/>
+ <address value="{$vxlan_net6}::27/64"/>
+ </addresses>
+ <options>
+ <option name="ofport_request" value="12"/>
+ <option name="name" value="int7"/>
+ </options>
+ </internal>
+ <internal id="int8">
+ <addresses>
+ <address value="{$vxlan_net}.28/24"/>
+ <address value="{$vxlan_net6}::28/64"/>
+ </addresses>
+ <options>
+ <option name="ofport_request" value="13"/>
+ <option name="name" value="int8"/>
+ </options>
+ </internal>
+ <internal id="int9">
+ <addresses>
+ <address value="{$vxlan_net}.29/24"/>
+ <address value="{$vxlan_net6}::29/64"/>
+ </addresses>
+ <options>
+ <option name="ofport_request" value="14"/>
+ <option name="name" value="int9"/>
+ </options>
+ </internal>
+ <internal id="int10">
+ <addresses>
+ <address value="{$vxlan_net}.30/24"/>
+ <address value="{$vxlan_net6}::30/64"/>
+ </addresses>
+ <options>
+ <option name="ofport_request" value="15"/>
+ <option name="name" value="int10"/>
+ </options>
+ </internal>
+ <internal id="int11">
+ <addresses>
+ <address value="{$vxlan_net}.31/24"/>
+ <address value="{$vxlan_net6}::31/64"/>
+ </addresses>
+ <options>
+ <option name="ofport_request" value="16"/>
+ <option name="name" value="int11"/>
+ </options>
+ </internal>
+ <internal id="int12">
+ <addresses>
+ <address value="{$vxlan_net}.32/24"/>
+ <address value="{$vxlan_net6}::32/64"/>
+ </addresses>
+ <options>
+ <option name="ofport_request" value="17"/>
+ <option name="name" value="int12"/>
+ </options>
+ </internal>
+ <internal id="int13">
+ <addresses>
+ <address value="{$vxlan_net}.33/24"/>
+ <address value="{$vxlan_net6}::33/64"/>
+ </addresses>
+ <options>
+ <option name="ofport_request" value="18"/>
+ <option name="name" value="int13"/>
+ </options>
+ </internal>
+ <internal id="int14">
+ <addresses>
+ <address value="{$vxlan_net}.34/24"/>
+ <address value="{$vxlan_net6}::34/64"/>
+ </addresses>
+ <options>
+ <option name="ofport_request" value="19"/>
+ <option name="name" value="int14"/>
+ </options>
+ </internal>
+ <internal id="int15">
+ <addresses>
+ <address value="{$vxlan_net}.35/24"/>
+ <address value="{$vxlan_net6}::35/64"/>
+ </addresses>
+ <options>
+ <option name="ofport_request" value="20"/>
+ <option name="name" value="int15"/>
+ </options>
+ </internal>
+ <tunnel id="vxlan1" type="vxlan">
+ <options>
+ <option name="name" value="vxlan1"/>
+ <option name="option:remote_ip" value="{$net}.1"/>
+ <option name="option:key" value="flow"/>
+ <option name="ofport_request" value="30"/>
+ </options>
+ </tunnel>
+ <tunnel id="vxlan2" type="vxlan">
+ <options>
+ <option name="name" value="vxlan2"/>
+ <option name="option:remote_ip" value="{$net}.2"/>
+ <option name="option:key" value="flow"/>
+ <option name="ofport_request" value="31"/>
+ </options>
+ </tunnel>
+ <tunnel id="vxlan3" type="vxlan">
+ <options>
+ <option name="name" value="vxlan3"/>
+ <option name="option:remote_ip" value="{$net}.3"/>
+ <option name="option:key" value="flow"/>
+ <option name="ofport_request" value="32"/>
+ </options>
+ </tunnel>
+ <tunnel id="vxlan4" type="vxlan">
+ <options>
+ <option name="name" value="vxlan4"/>
+ <option name="option:remote_ip" value="{$net}.4"/>
+ <option name="option:key" value="flow"/>
+ <option name="ofport_request" value="33"/>
+ </options>
+ </tunnel>
+ <tunnel id="vxlan5" type="vxlan">
+ <options>
+ <option name="name" value="vxlan5"/>
+ <option name="option:remote_ip" value="{$net}.5"/>
+ <option name="option:key" value="flow"/>
+ <option name="ofport_request" value="34"/>
+ </options>
+ </tunnel>
+ <tunnel id="vxlan6" type="vxlan">
+ <options>
+ <option name="name" value="vxlan6"/>
+ <option name="option:remote_ip" value="{$net}.6"/>
+ <option name="option:key" value="flow"/>
+ <option name="ofport_request" value="35"/>
+ </options>
+ </tunnel>
+ <tunnel id="vxlan7" type="vxlan">
+ <options>
+ <option name="name" value="vxlan7"/>
+ <option name="option:remote_ip" value="{$net}.7"/>
+ <option name="option:key" value="flow"/>
+ <option name="ofport_request" value="36"/>
+ </options>
+ </tunnel>
+ <tunnel id="vxlan8" type="vxlan">
+ <options>
+ <option name="name" value="vxlan8"/>
+ <option name="option:remote_ip" value="{$net}.8"/>
+ <option name="option:key" value="flow"/>
+ <option name="ofport_request" value="37"/>
+ </options>
+ </tunnel>
+ <tunnel id="vxlan9" type="vxlan">
+ <options>
+ <option name="name" value="vxlan9"/>
+ <option name="option:remote_ip" value="{$net}.9"/>
+ <option name="option:key" value="flow"/>
+ <option name="ofport_request" value="38"/>
+ </options>
+ </tunnel>
+ <tunnel id="vxlan10" type="vxlan">
+ <options>
+ <option name="name" value="vxlan10"/>
+ <option name="option:remote_ip" value="{$net}.10"/>
+ <option name="option:key" value="flow"/>
+ <option name="ofport_request" value="39"/>
+ </options>
+ </tunnel>
+ <tunnel id="vxlan11" type="vxlan">
+ <options>
+ <option name="name" value="vxlan11"/>
+ <option name="option:remote_ip" value="{$net}.11"/>
+ <option name="option:key" value="flow"/>
+ <option name="ofport_request" value="40"/>
+ </options>
+ </tunnel>
+ <tunnel id="vxlan12" type="vxlan">
+ <options>
+ <option name="name" value="vxlan12"/>
+ <option name="option:remote_ip" value="{$net}.12"/>
+ <option name="option:key" value="flow"/>
+ <option name="ofport_request" value="41"/>
+ </options>
+ </tunnel>
+ <tunnel id="vxlan13" type="vxlan">
+ <options>
+ <option name="name" value="vxlan13"/>
+ <option name="option:remote_ip" value="{$net}.13"/>
+ <option name="option:key" value="flow"/>
+ <option name="ofport_request" value="42"/>
+ </options>
+ </tunnel>
+ <tunnel id="vxlan14" type="vxlan">
+ <options>
+ <option name="name" value="vxlan14"/>
+ <option name="option:remote_ip" value="{$net}.14"/>
+ <option name="option:key" value="flow"/>
+ <option name="ofport_request" value="43"/>
+ </options>
+ </tunnel>
+ <tunnel id="vxlan15" type="vxlan">
+ <options>
+ <option name="name" value="vxlan15"/>
+ <option name="option:remote_ip" value="{$net}.15"/>
+ <option name="option:key" value="flow"/>
+ <option name="ofport_request" value="44"/>
+ </options>
+ </tunnel>
+ <tunnel id="vxlan16" type="vxlan">
+ <options>
+ <option name="name" value="vxlan16"/>
+ <option name="option:remote_ip" value="{$net}.16"/>
+ <option name="option:key" value="flow"/>
+ <option name="ofport_request" value="45"/>
+ </options>
+ </tunnel>
+ <flow_entries>
+ <entry>table=0,in_port=5,actions=set_field:100->tun_id,output:30</entry>
+ <entry>table=0,in_port=6,actions=set_field:100->tun_id,output:31</entry>
+ <entry>table=0,in_port=7,actions=set_field:100->tun_id,output:32</entry>
+ <entry>table=0,in_port=8,actions=set_field:100->tun_id,output:33</entry>
+ <entry>table=0,in_port=9,actions=set_field:100->tun_id,output:34</entry>
+ <entry>table=0,in_port=10,actions=set_field:100->tun_id,output:35</entry>
+ <entry>table=0,in_port=11,actions=set_field:100->tun_id,output:36</entry>
+ <entry>table=0,in_port=12,actions=set_field:100->tun_id,output:37</entry>
+ <entry>table=0,in_port=13,actions=set_field:100->tun_id,output:38</entry>
+ <entry>table=0,in_port=14,actions=set_field:100->tun_id,output:39</entry>
+ <entry>table=0,in_port=15,actions=set_field:100->tun_id,output:40</entry>
+ <entry>table=0,in_port=16,actions=set_field:100->tun_id,output:41</entry>
+ <entry>table=0,in_port=17,actions=set_field:100->tun_id,output:42</entry>
+ <entry>table=0,in_port=18,actions=set_field:100->tun_id,output:43</entry>
+ <entry>table=0,in_port=19,actions=set_field:100->tun_id,output:44</entry>
+ <entry>table=0,in_port=20,actions=set_field:100->tun_id,output:45</entry>
+ <entry>table=0,in_port=30,tun_id=100,actions=output:5</entry>
+ <entry>table=0,in_port=31,tun_id=100,actions=output:6</entry>
+ <entry>table=0,in_port=32,tun_id=100,actions=output:7</entry>
+ <entry>table=0,in_port=33,tun_id=100,actions=output:8</entry>
+ <entry>table=0,in_port=34,tun_id=100,actions=output:9</entry>
+ <entry>table=0,in_port=35,tun_id=100,actions=output:10</entry>
+ <entry>table=0,in_port=36,tun_id=100,actions=output:11</entry>
+ <entry>table=0,in_port=37,tun_id=100,actions=output:12</entry>
+ <entry>table=0,in_port=38,tun_id=100,actions=output:13</entry>
+ <entry>table=0,in_port=39,tun_id=100,actions=output:14</entry>
+ <entry>table=0,in_port=40,tun_id=100,actions=output:15</entry>
+ <entry>table=0,in_port=41,tun_id=100,actions=output:16</entry>
+ <entry>table=0,in_port=42,tun_id=100,actions=output:17</entry>
+ <entry>table=0,in_port=43,tun_id=100,actions=output:18</entry>
+ <entry>table=0,in_port=44,tun_id=100,actions=output:19</entry>
+ <entry>table=0,in_port=45,tun_id=100,actions=output:20</entry>
+ <entry>table=0,priority=100,actions=drop</entry>
+ </flow_entries>
+ </ovs_bridge>
+ </interfaces>
+ </host>
+ </network>
+
+ <task python="ovs_tunnels.py"/>
+</lnstrecipe>
--
2.9.4
6 years, 1 month
lnst-developers:车间主任如何管理好生产? c4hvj
by 先生
全能型车间主任-- 实战技能训练
【参加对象】 企业厂长、制造业生产总监、生产经理、车间主任及生产制造主管及一线干部
【时间地点】 2017年8月8月19-20日深圳 ,8月26-27日上海
【学习费用】 3200/人(含课程讲义、午餐、茶点等)
【垂询热线】 021-31006787、0755-6128-0006 13381601000 许先生
【QQ·微信】 320588808
注:如不需此类信件信息,请发送“删除”至tuiding02(a)163.xn--com,,-zl2hwkp7ss5dfr6bca934bx90fgkh9r6ac60bg8ha5001c.
课程背景:
《全能型车间主任实战技能训练》课程在全国推广五年以来,深受国内外企业的菁莱。在全国成功举办公开课近百场次,并被很多企业引进为内训课程,尤其是中字头企业和装备制造业。在举办过程中,学员对该课程和讲师的评价可综合为六个字“实在”、“实用”、“实战”。四年的发展、四年的发现、四年的变化,使该课程的开发者――陈志华老师有了更多的感悟与提升。为了进一步加强该课程的实用性、系统性和科学性,陈志华老师对课程作了更一步的完善。现在您看到的是2013版《全能型车间主任实战技能训练》课程大纲。
2014版《全能型车间主任实战技能训练》以科学管理为纲、以系统化为领、以鲜活的现状为例,助力广大学员改变用“习惯性思维”做管理,凭“过往经验”办事情的风格。学习和掌握科学的理念、系统、方法、工具,并灵活地运用到实际工作中去。从此改变车间工作忙而乱,类似问题天天有,不同问题相同对策的格局。
课程大纲:
第一讲 基层领导角色认知与管理认知
问题讨论
为什么我们总是很忙?
为什么忙的时候只知道加班、加人、加设备?
我们凭什做管理?(理念、系统、方法、工具?)
传统管理与科学管理究竟有何区别?
领导的自我认知与任务
车间主任与班长到底是不是真正的领导?
领导到底是人手还是人才?
领导的三大主要标志是什么?
领导的必备的两大基本条件是什么?
领导的三件事与两大任务?
管理的三种认识
过程与手段(管理为何与时间息息相关?)
技术与艺术(如何让部下对你的管理感兴趣?)
行为与借力(上下级与相邻部门如何借力?)
经典分享(减少超负荷加班的八大要点)
班(组)长工作力不从心的原因分析
时间有效利用率低下的八大原因分析
第二讲 工作职责神圣化与班组管理
车间主任的四种身份角色
对待企业与报酬的两种心态
对待下属与下属的三种心态
实战训练:如何管理好你的班长?
班长有哪四种不称职表现?
班长为什么总是忙而乱?
班长最喜欢的工作方式是什么?
工作技巧:班长协调的劣势与最佳范围
现场管理中的“定员定岗”有何特别要求?
为什么游离状态的作业没有工作效率?
经典分享
现场管理“三不坚守原则”决定产能释放
第三讲 钱,在哪里?怎么来!——权威观点的价值
管理者管理效率——被勿视的西瓜
管理者管理思路——一个中心两个基本点
管理者管理方法——重经验凭习惯
没有结局的结局——布局决定结局
员工的生产效率——只有强化没有改善
新产品的研发 ——没有可批量制造性
抢:抢时间永远都不犯法
省:省出的钱都是净利益
盯:盯出的效率成本最低
挖:挖出的效益最有价值
第四讲 质量与效率的分析与长效控制手法
生产效率与生产能力识别
生产方式与生产原理识别
什么是流线化与流程化?
(乱流、倒流、绕流的形成分析与对策)
什么是标准化的现场管理?
什么是标准化作业?
什么是作业标准化?
经济动作的三不原则?
经典分享:
车产物流管理的“三不政策”
平衡效率与平衡损失率的计算与意义
生产线不平衡管的十大原因分析
第五讲 后员工管理与工作教导的四阶段法
———员工为什么会犯错?
———员工为什么会流失?
———怎样才能管理好你的员工?
上司最不妥当的“八大肢体语言”
上司最不妥当的“十大口头语言”
上司尊重员工人格的“十大要点”
面对员工要胁的“五大对策”
———工作教导“四阶段法”的应用
经典分享
人的第一资产是什么以及对管理的启发?
第六讲 把握N种管理理念/体系构筑的精髓
观念:ISO9000的效用是提升企业的体质
问题:为什么只求证书不求正本?
问题讨论:
1)精益生产到底是什么?(TPS、JIT、看板生产?)
2)到底是不是精益创造了TOYOTA神话?
3)精益生产的核心思想和核心思路到底是什么?
4)为什么只能是“5S”而不是“6S、7S”
5)5S管理为什么总是一动就还原?
6)5S管理的精髓与终极目的是什么?
经典分享:
车间物品摆放的“三不管理原则”?
学员课后作业或实践(感悟与收获)
(一)感悟部份
1、对于工作中出现的问题,我们通常更多地归根于“沟通不行”、“协调不当”、“执行能力差”等问题。从表面上看确实是这些问题。只要仔细想想,也许你会悟出一些疑问:难道人与人之间就那么难以沟通吗?部门之间难道就那么难以协调吗?属下难道就不想把工作尽快完成吗?对此问题你有何感想?
2、如果说管理是一门艺术,而艺术最精华的就是创意。作为一名中基层领导者,面对新生代或者另类的员工群体,在过往的管理过程中所做的一切到底是你或你的上司感兴趣,还是先让员工感兴趣呢?管理的创意你有了吗?员工对你的管理感兴趣了吗?你打算做何努力?
3、通过该课程我们已经知道了人的第一资产是人格尊严。理解起来其实很容易,可是做起来真的很难。在今后的工作中你打算怎样去保护好员工的人格尊严。
(二)实践部份
1、尽管中国企业的一线员工其实已经很优秀了,但在工厂或车间只要出现质量问题或者是交期问题,员工还是罪责难逃。本课程完后你回到公司抽四个小时的时间站到一个视觉良好的地方观察一下你的员工作业的状态,就会明白为什么质量不稳定,为什么看上去热火朝天却总是交不出货。请你观察后找出原因并划清罪责。
2、本课程完成后请你回到公司用一张A3的纸把你的车间平面图划下来。再用半天的时间观察车间的实际人流、物流、信息流现状,并把每一次流动路线在A3纸上进行连接。请你再看看那张平面图是什么状况,并由此推断你到底出了什么问题。
3、目前中国工厂每天几乎只在为一个问题忙碌,那就是赶货!到底是订单量太大没法承受,还是的确生产能力有限,或者是生产效率太低呢?这个问题恐怕所有人都能答得上来,更恐怕没有几个人答的是对的。如果所有人都答对了,那为什么还是天天这样?对此你有何感想?
讲师介绍:【陈志华】
工商管理硕士,国内制造管理专家师
工作经历:
曾在全球最大的线圈制造商胜美达(SUMIDA)、日本卡西欧电子(CASIO)任职达13年,历任生产主管、品质主管,生产经理、制造总经理等;曾师从小川一也(日本能率协会管理中心专家, 日本WF&IE研究第一人,日本制造业研究的国宝级人物)专门研习标准工时与动作研究曾先后多次被派往日本和新加坡进修及培训(丰田JIT生产方式,对NPS有系统及深入研究和实践), 陈老师尤其擅长现场一体化管理(计划,成本,纳期,质量,技术,人员)
主讲课程:
《构筑高精度标准工时ST管理系统》、《多技能员工培养体系》、《多批少量生产方式实务》、《微利时代的精细化现场管理》、《全能班组长训练》等,主要出版物《反省中国式工厂管理》、《挑战80后管理》等。
6 years, 1 month
lnst-developers: 如何避免不必要的采购成本? gqqka
by 先生
降低采购成本与供应商谈判技巧
时间地点:2017年8月11-12 上海,9月22-23 深圳,11月03-04 广州
参加对象:高层管理者、采购、品管、物流、财务等部门及其他相关部门的职业经理。
学习费用:3200元/2天/1人(含课程讲义、午餐、茶点等)
垂询热线:021-31006787,0755-6128-0006 ,13381601000 许先生
QQ/ 微信:320588808
注:如不需此类信件信息,请转发送“删除”至tuiding02(a)163.xn--com,,,-f27i06b3l431bsooca345wfqep2ajnq80cqv5dha378jp92hktj.
课程背景:
在当前经济环境下,如何降低采购的各项成本?采购管理的绩效考核目标有哪些?我方的要求过多或过高会怎样?怎样分析供应商给我们的报价? 企业招投标与政府招投标有何区别?如何提高采购谈判的实效性?如何控制原材料的库存?
培训收益:
* 如何设定采购管理的绩效目标?
* 如何制订采购成本预算?
* 如何避免不必要的采购成本?
* 如何分析供应商的报价?
* 采购谈判的挑战是什么?
* 如何制定谈判计划?
* 如何与不同性格的人谈判?
* 如何降低采购物品的库存成本?
* 如何通过招投标进行有效的“砍价”?
课程大纲:
第一讲:如何设定采购管理的绩效目标?
采购管理的KPI指标有哪些?
各种采购管理的目标差异
采购成本的学习曲线
采购实物与采购服务的顺序区别
为什么采购成本越来越敏感?
采购成本管理的方法有哪些?
套期保值
如何做好采购供应商的管理?
完整的采购管理体系
第二讲:如何编制采购成本预算?
公司财务预算的五大内容
费用预算的四套方法
如何控制运作性采购的固定预算
零基预算与增量预算
什么是概率预算
影响采购预算准确性的六大因素
公司如何设定采购预算的考核目标
什么是多品复合预算?
如何获取行情价格信息?
网络搜索的四大途径
如何提高百度等搜索的效率?
什么是系统性搜索
什么是垂直搜索
采购职场论坛
B to B 网站一览表
有效利用价格预测的专业网站
第三讲:如何避免不必要的采购成本?
采购的权力有多大?
如何让各部门配合
如何避免不必要的采购成本?
案例分析
第四讲:如何分析供应商的报价?
第一节:供应商们是如何定价?
产品价格是怎样定出来的?
什么是行情定价法?
什么是价值定价法?
价值定价法如何定价
成本定价法如何定价
什么是边际成本定价法
什么是变动成本与固定成本
什么是边际贡献
边际成本定价法对采购的启发
什么是目标收益定价法
目标收益定价法的采购启发
企业类型不同对成本定价法的影响
生产厂家的四种供应链类型
四种供应链类型的定价
代工企业的成本定价法
代工企业成本定价法的采购要点
什么是“按生产时间分摊”?
商贸型企业的定价特点
商贸型商品的五大分类
商贸产品分类的采购启
第二节:如何分析供应商的报价?
供应商的两种报价形式
消耗性产品成本明细表
资产性产品成本明细表
资产型采购的三种形式
为什么我们租而不买?
可租赁的领域
为什么要外包?
服务性供应商如何报价
第五讲:影响采购谈判效果的因素有哪些?
各种谈判的比较
立场性谈判与利益性谈判的比较
何为“公平”
何为双赢
采购谈判的KPI指标有哪些
采购谈判的基本流程
哪些因素对我的谈判能力影响较大
性格的四种类型
性格的组合特征
性格与职业
性格的匹配性
性格与谈判
您最容易和最不容易相处的谈判对手
四种谈判对手的特点有哪些
如何克服自身的弱点
第六讲:如何制定谈判的计划?
即兴性谈判与计划性谈判
制定谈判计划的七大步骤
第一步:双方意向的明确
第二步:双方差异的分析
第三步:各项分歧的重要性评分
第四步:设定各项分歧的谈判目标
第五步:各谈判目标的策略定性
第六步:谈判方式的确定
第七步:小组成员的分工
第七讲:如何实施有效的谈判?
开场开得如何
整个谈判的掌控如何
哪种砍价方式更好
哪种谈判形式容易出问题
如何做好电话谈判
为什么我方会弱势?
我方为弱势怎么谈
什么是分阶段蚕食
分阶段蚕食的策略步骤
如何提升说服力
第三方的参考依据
如何提高谈判时的沟通实效
我们会问问题吗
如何问问题吗
反驳对方的几种方式
沟通的禁忌
对方忽悠我怎么谈
如何挽回失误(失口)
出现僵局怎么谈
谈判结束时怎么办
如何与不同的对象谈判
采购谈判的‘降龙十九掌’
第一:试探计
第二:声东击西计
第三:强人所难计
第四:换位思考计
第五:巧立名目计
第六:先轻后重计
第七:档箭牌计
第八:顺手牵羊计
第九:激将计
第十:限定选择计
第十一:人情计
第十二:小圈密谈计
第十三:奉送选择权计
第十四:以静制动计
第十五:车轮计
第十六:挤牙膏计
第十七:欲擒故纵计
第十八:告将计
第十九:红脸与白脸
第八讲:如何降低采购物品的库存成本?
第一节:库存管理的挑战是什么?
我们为什么要备库存
库存过高的缺点有哪些
财务管理的三张表
占用大量资金的后果
企业老总对库存管理的要求有哪些
衡量库存是否积压的指标有哪些
库存周转率的几种算法
如何计算某单品在单库的周转率
如何计算公司总库存的周转率
造成公司总库存缓慢的因素有哪些
库存周转率太快的缺点
第二节:如何合理设置安全库存?
什么是安全库存
决定安全库存量的两大要素
安全库存因子与库存服务水平的关系表
如何计算安全库存管理现状值
如何计算指定送货日期的‘订单响应时间’
什么是标准差
什么是正态分布
计算标准差的作用
标准差的计算
如何推算现有库存量时的安全库存量及缺货率
怎样推算不能缺货时的安全库存量
如何减少安全库存量
影响安全库存设置的因素
如何设定安全库存量
如何判断安全库存设定的合理性
第三节:如何做好JIT供应管理?
什么是JIT供应管理
什么是“零库存管理”
JIT供应的三种类型
JIT供应对双方的利与弊
如何有效实施JIT供应方式
第九讲:如何通过招投标进行有效的“砍价”?
企业采购与政府采购的区别
政府采购的管理对象
政府采购的五种形式
什么叫“邀标”
什么情况下应该采用招投标
不同采购的招标特点
如何实施邀请招投标
如何准备招标文件
评标方法有哪些
某公司的评标案例
第二步:计算平均报价值
第三步:计算商务标得分
第四步:计算综合评分值
如何评定技术标
招投标方式的分类
暗标与明标的比较
招标的几种形式
什么是串通投标罪?特征有哪些
如何破解参标者的‘不轨’
如何保持投标商的积极性
招标实践中的几个问题
投标保证金与履约保证金
讲师介绍:【张仲豪】
教育背景:
张老师是改革开放后早期海归派讲师。1986 年获美国 Gerber公司的奖学金赴美国密西州立大学(MichiganState University )留学,硕士学位。毕业后,受聘于美国Heinz(亨氏)集团公司。
工作经历:
张老师曾先后受聘于美国亨氏公司、英国联合饼干公司、美国美赞臣公司等,曾任美赞臣公司的技术及运作总监。从2000年开始,张老师开始自己创业,从事于多行业的经营管理。所以,张老师既有世界500强 企业职业经理人的丰富阅历,又有作为企业老板的心得 体会。在二十多年的职业生涯中,张老师曾接受过各种国际国内的职业培训。曾赴加拿大、美国、英国、新加坡、泰国、菲律宾、马来西亚等国考察学习。
主讲课程:
降低采购成本及供应商谈判技巧
采购流程优化及供应商评估与管理
高效仓储管理与工厂物料配送
现代企业物流及供应链优化实战
PMC管理-生产计划、订单管理与库存控制
需求预测与库存控制
授课风格:
* 富有很强的激情, 风趣、幽默, 现场感染力强
* 采用循序渐进、深入浅出的教学方式、丰富生动的实战案例,帮助学员拓宽视野,提高思维能力,掌握相关的方法和工具
* 课件设计力求深度,实用、案例多为工具性案例,有很强的实操性。课程内容跨度大,尽量吸取各个行业的精粹,具有高度的浓缩性。
6 years, 1 month
lnst-developers:系统学习掌握档案管理的全套流程 jwqlv
by 先生
基于信息化与知识管理的现代档案企业管理
---《企业全面档案管理体系构建实务高级研修班》
【时间地点】2017年8月11-12 北京,9月15-16 深圳,10月20-21 上海
【参加对象】档案管理经理及各类档案资料管理人员;工程项目经理及资料员;人事行政财务档案与文控及文秘人员
【课程特点】理论精讲与实务演练、案例研讨与互动结合;讲师20多年经验分享与辅导,提供实用有效的模板。
【学习费用】3600/2天/人,(含课程讲义、午餐、税费、茶点等)
【垂询热线】021-31006787、0755-61280006、13381601000 许老师
【QQ、微信】320588808
注:如不需此类信件信息,请发送“删除'至tuiding02@163.com,打扰之处,还请谅解。。。
课程背景:
21世纪是一个网络时代,知识管理已经成为现代企业管理的一个战略举措和重要内容。档案管理是知识管理系统的重要基础。然而,常常的事实是:各类资料档案分散、毫无规范、标识不一,归档迟延,查找困难,归档混乱,不断丢失,提取使用无效率等等,为什么?观念缺失?工具方法缺少?流程标准与系统缺乏?本课程旨在通过对档案管理新理念认知,档案管理的工具方法论、流程和操作实务的学习,提升档案管理人员的专业化和职业化素养和档案处理工作效率,为企业建立规范化、科学化的档案管理系统,建立企业知识管理体系打造基础!
培训目标:
系统学习掌握档案管理的全套流程、工具方法与操作实务,通过持续学习和实践,达至:
* 学习掌握知识管理理念,建立知识与档案管理的新思维,提高对现代档案管理的重要性和意义的认知;
* 掌握档案管理规划流程和档案管理职能设计、落实的科学方法,建立高效管理的基础;
* 掌握档案管理规范方法、流程与操作实务标准,提高企业档案的规范化、系统化水平和应用基础;
* 熟练掌握企业档案的识别、收集、标识、分类、立卷、归档、应用、鉴别和销毁的流程和方法,提高企业档案管理的规范水平和管理效率;
* 掌握档案的保护、查阅、使用等操作标准和技巧,提升档案调阅查找准确度和速度与应用效率;
* 全面提升档案管理人员有效管理档案和应变管理需求和现场及时更新等的能力和工作效率;
* 为企业建立规范化、科学化的档案管理系统,建立企业知识管理体系打造基础!
课程大纲:
引子:一个老板的困惑---企业档案管理的困惑
上篇:原理理念与制度体系篇
第一章:基于新时期企业知识暨信息化管理的新认知
1.1档案的沿革及其发展趋势:知识管理与信息化管理的档案管理
1.2 新时期现代企业的档案管理理念及创新
1.3 企业档案管理如何信息化?如何知识管理化?
案例分享: 企业档案管理信息化发展趋势图及企业知识分布图
第二章:现代企业档案及档案管理概述
2.1什么是档案?档案的核心要素和重要作用
2.2企业档案及企业档案管理的涵义、特点
2.3企业档案管理的作用及目的
2.4企业档案的类型及特点
2.5企业档案管理的发展
案例互动:企业档案管理的价值
第三章:基于信息化管理和知识管理的企业档案管理制度体系规划
3.1 基于知识管理的企业档案管理制度体系规划
3.2 档案管理流程梳理与设计、指引编制
3.3 档案管理组织与岗位职能设计
3.4企业档案管理的法定责任解读
3.5企业档案管理人员的角色与任务
案例互动: 档案管理组织、流程图设计
第四章:企业档案管理信息化建设
4.1档案信息化及其发展回顾
4.2企业档案管理信息化是指什么?
4.3企业档案信息化建设核心内容概述
4.4如何实现企业档案管理数字化
4.5企业档案管理信息化的软件开发与网络建设
4.6企业档案管理信息安全预防与管理
案例:《全国档案信息化建设实施纲要》等相关规章解读、互动:档案管理信息化误区
第五章:企业档案库(室)的规划与管理
5.1档案室(库)的要求
5.2档案室(库)的规划
5.3档案室(库)的管理
※【案例分享】: 某企业档案库图
中篇:基础实务与操作篇
第六章:企业各类档案产生节点识别要领
6.1纸质档案产生节点识别
6.2办公自动化的归档文件处理节点识别
6.3其他外来档案归档节点识别
※【案例分享练习】:文书档案产生的流程节点识别
第七章:企业档案管理的内容、分类与标识规范
7.1企业档案管理的内容规范
7.2企业档案管理的分类与标识规范
案例互动:企业档案分类规范表
第八章:企业档案的收集、分类
8.1档案的识别与定义:档案与文件的区别、件的定义
8.2档案的收集与识别
8.3档案的分类组卷
8.4档案的排列编页
案例互动:档案的收集识别
第九章:企业档案的立卷、标识
9.1档案立卷与案卷的涵义、立卷的意义
9.2档案立卷的原则和方法
9.3案卷的编目(标识)
9.4案卷的整理装订
9.5填写案卷
案例互动:立卷
第十章:企业档案的编录归档
10.1 档案的目录编制
10.2 档案的装盒
10.3 入库上柜(架)
案例互动:目录编制
第十一章:企业档案借阅应用与鉴定销毁
11.1企业档案日常保管维护
112企业档案的应用
11.3企业档案的鉴定与销毁
案例互动: 档案的鉴定
下篇:专项档案实务篇
第十二章:企业人事(员工干部)档案管理
12.1企业人事(员工干部)档案的定义、特点、价值、意义
12.2企业人事(员工干部)档案管理的归档要求
12.3企业人事(员工干部)档案管理的范围与期限
12.4企业人事(员工干部)档案立卷、标识方法
12.5企业人事(员工干部)档案的归档、保管
12.6企业人事(员工干部)档案的应用与销毁
案例互动:员工档案鉴定销毁 、选育用留人才如何应用员工档案信息?
第十三章:企业工艺技术档案管理
13.1工艺技术档案概述 (定义、特点、范围分类)
13.2工艺技术档案形成及管理特点、质量要求
13.3工艺技术档案的收集与鉴别
13.4工艺技术档案的整理(整理原则、分类、组卷、排列、编目)
13.5工艺技术档案的归档与保管应用、鉴定销毁
案例互动:科技项目归档文件目录式样、技术工艺档案鉴别
第十四章:企业电子文档管理
14.1 电子文档的定义及特点
14.2 电子文档管理的原则
14.3 电子文档管理的基本方法
14.4 电子文档管理的程序与指引
14.5 电子文档管理的借阅使用与鉴定销毁
案例互动: 鉴定销毁
第十五章:企业经济合同与客户档案管理
15.1 企业经济合同档案含义、特点及构成内容
15.2 企业合同及客户档案归档要求及期限规定
15.3 企业经济合同及客户档案分类与标识
15.4 企业经济合同及客户档案的整理、立卷、归档
15.5 企业经济合同及客户档案的借阅应用管理
案例互动: 经济合同归档案例
第十六章、企业工程档案管理
16.1工程档案定义、特点、范围、作用
16.2工程档案形成及分类
16.3工程档案管理责任与职责界定及管理制度化
16.4工程档案的收集与鉴定(范围、方法、质量要求)
16.5工程档案的组卷、排列、编目
16.6工程档案的验收与移交、注意事项
案例分享: 工程档案管理流程、影响预结算的资料识别
结语:知识既是生产力又是竞争力。信息化、规范化、科学化的档案管理是企业的知识管理的核心基础!做好档案管理,就能让您的企业知识百分之百的立方。
讲师简介:【博文(Bowen)老师】
◎ 资深管理咨询师
◎ 资深人力资源实战专家
◎ 高级会计师
◎ 精益管理专家
◎ 高级培训师
◎ 全球500强企业商学院TOP100培训专家
◎ 全国20多家顾问机构签约高级顾问。有20多年的企业管理、管理咨询、教育
与培训实践经验。专注于企业精益管理与人力资源管理,人才教育培训。
咨询项目背景:
具有跨国IT、电子、汽车零部件、船舶重工、五金家具、胶合板、玩具服装、陶瓷等制造企业及金融证券、服务业、房地产及物业管理、移动通讯等行业企业培训、咨询改善项目经验。
主要课程:
☆ 互动式多媒体教学,动感享受
☆ 声情并茂,激情演绎
☆ 案例分析,现场点评
☆ 经验分享,悟道结合
☆ 理论与实操结合,实战实用
☆ 通俗幽默,趣味生动。
工作背景:
有20多年政府外经贸部门、大型外资(新港台资)企业高管、管理咨询顾问的工作经历,曾任行政财务总监、人力资源总监、教育训练中心负责人、董事长助理、总经理助理、总裁助理。曾任职主要机构:政府外经贸局及国有大型股份、大型港\台\新上市企业,包括:新加坡IPC 集团( IT 上市)、亿胜集团(新资IT、房产上市)、亿胜生物科技(港资上市)、九龙物业、PTS 集团(台资上市)、MOXELL (摩托罗拉合作
IT 公司)。
咨询教育训练成功案例:(尚未详列)
平安银行、中铝集团、联想(惠阳)、福建兴业银行、江西电信、常林集团、华润银行、澳银基金、文山移动、名雕集团、银仕来纺织、森大外贸、深圳移动、宝裕玩具、韩通船舶、温氏集团、安吉尔、新兴地产、翔顺集团、广丰卷烟、华忆科技、华兴玻璃、航天金穗、香港华宝、深港驾校、ASK驾校、广仁驾校、活力家具、利合地产、金泰国际、诚业家具、新中源陶瓷、佳兆业地产、玉柴LT汽零件、兄弟工业、合兴木业、龙森物流、二连浩特农商行、察右后农商行、太卜寺农商行、惠州燃气、卓宝科技、中国安防、北方联合电力、太原兴业银行、泛亚人力、特发信息、省广电股份、劲嘉彩印、玉溪矿业、武汉万达、中大深圳、云南移动、周口移动、中远航运、讯方通信、徐工重机、鹏华基金、华贸地产、深圳农商行、江门农商行、淮安农行、长大公路、南京移动、黑龙江移动、天河城集团、安徽联通、浙江电信、西部机场、徐工液压、华达集团、津村药业、勐海电力、桂林移动、深圳联通、海印集团、众生药业、中电电子、中捷集团、惠州电力、发耳电厂、华润电力、佛山公控、天彩电子、上海移动、成都联想、深圳联通、江西MBA班、宁波银行、露天煤业、华电集团、白沙物流、三国(日)、安徽昌河汽车、珠海农商行、广西移动、浙江电信、柳州银行、常德烟草机械、南方电网、贵州电网、蓝光集团、武汉光谷、东莞移动、香满楼畜牧、华电、保山移动、东风裕隆汽车、西双版纳移动、勐腊供电、曲靖师宗供电、成都联想----
授课风格:
☆ 互动式多媒体教学,动感享受 ☆ 声情并茂,激情演绎
☆ 案例分析,现场点评 ☆ 经验分享,悟道结合
☆ 理论与实操结合,实战实用 ☆ 通俗幽默,趣味生动。
6 years, 1 month
lnst-developers:规避合伙人风险的4种方法 13:38:36
by 先生
合伙人制度
【时间地点】2017年8月17-18北京,9月14-15 上海
【参加对象】股东、董事及高管及对本课程感兴趣的人士
【授课方式】现场演练+案例教学+工具包应用+自己动手+老师指导点评=可落地执行方案
【学习费用】5980/2天/1人(含学习费、教材、午餐、茶点等 )
【垂询热线】13381601000 许先生
【QQ/微信】320588808
【课程背景】
为什么现在的合伙人制度这么红火,因为资本的光环正在褪去,现在是人本为王的新时代!
在过去,是创始人单干制;在现在,提倡合伙人兵团作战。
在过去,利益是上下级分配制;在现在,提倡合伙人之间利益分享。
在过去,职业经理人用脚投票;在现在,提倡合伙人之间背靠背共进退。
【课程收益】
1、掌握合伙人的甄选、估值、分钱、退出机制。
2、掌握5种控制权丧失的有效处理方法。
3、学会规避合伙人风险的4种方法。
4、掌握合伙人与股权设计的区别。
5、情景式教学:剖析合伙人改革案例,借鉴经验、方法和教训。
6、咨询式培训:得到大量表单、工具包,拿回即用;解决培训效果的转化问题。
【工具包】
工具1:股权九轮融资模型
工具2:合伙人的选择模型
工具3:合伙人的估值模型
表单1:股东合伙协议书
表单2:有限合伙企业章程
表单3:员工虚拟股激励方案
表单4:股权代持协议书
【课程大纲】
第一部分 合伙人现状的分析----雇佣时代结束,合伙人时代到来
案例:海尔迎来合伙人时代
一、合伙人制度与股权设计的区别
二、合伙人适用的企业
第二部分 合伙人类型的选择—合在一起,成为一伙一、股东合伙人
案例:苹果公司合伙人股权之路
工具1:股权九轮融资模型:某公司第一大股东股份如何被稀释,及合伙人如何通过股权致富的?
表单1:股东合伙协议书
二、事业合伙人
案例:任正非如何玩转华为事业合伙人?
三、生态链合伙人
案例:美道家的生态链合伙人模式(2015年)
第三部分 合伙人平台的打造—平台为王,资源整合
案例:讲师合伙人是采取公司制还是合伙企业?
一、合伙企业
案例:马云如何通过合伙企业控制蚂蚁金服?
表单2:有限合伙企业章程
二、公司制
案例:乔致庸的银股和身股激励
表单3:员工虚拟股激励方案
第四部分 合伙人制度的设计—恋爱模式,操作灵活
一、合伙人如何选择
工具2:合伙人的选择模型
二、合伙人如何出资?
案例:现金出资--某企业的合伙人现金出资方案
思考:员工没钱出资,怎么办?
三、合伙人如何估值?
1、估值的方法---工具3(估值模型):PB/PS/PE
2、估值的调整—对赌协议
案例:冯小刚与华谊兄弟公司的对赌协议
四、合伙人如何分钱?
1、兜底分钱
2、增量分钱
五、合伙人如何退出?
1、荣誉合伙人
2、合伙金(股权)回购
3、IPO上市退出
案例:九鼎投资LP合伙人的退出
第五部分 实操作业(带笔记本电脑)
1、提供本企业的资料、背景等;
2、设计本企业的合伙人制度(包括合伙人甄选标准、分股权、分钱、退出机制等)
学员展示本企业的合伙人制度,老师点评总结
第六部分 合伙人股权的设计—婚姻模式,融资融智
一、股权架构的设计
案例:王宝强离婚前的股权架构布局
二、股权控制权的设计
案例1:投票权委托-----腾讯是京东第一大股东,为何影响不了刘强东的控制权?
案例2:一致行动协议-----腾讯是国外控股的公司吗?
案例3:AB股架构----- Google公司的AB股架构,确保创始人不出局
第七部分 实操作业
1、提供本企业的资料、背景等;
2、设计本企业的股权架构与控制权(学员现场演练,老师点评总结,带笔记本电脑)
第八部分 合伙人的风险—盛名之下,必有隐患
思考:合伙人制度是万能的吗?
一、道德的风险
案例:土豆网创始人王微离婚引发的“血案”
表单4:股权代持协议书
二、章程的风险
案例:万科公司的章程如何抵御门口“野蛮人”
三、涉税的风险
1、股权结构设计不合理的涉税风险
案例:VIE股权架构的涉税风险
2、股权激励中的涉税事项
四、知情权的风险
案例:真功夫公司股东知情权纠纷案
【讲师简介】
郑指梁 老师
实战人力资源&财务管理专家
管理学硕士、注册会计师、注册税务师
浙江大学、中山大学总裁班特邀讲师
浙江省企业培训师协会副会长
国家人力资源管理师一级辅导师
曾任美国Bel Fuse Inc.中国区人力资源经理、财务总监
曾任世界500强人力资源总监、财务总监
国内人力资源与财务管理结合专家
个人经历:
具有近20年的HR、财务、税务、投行、资本运作等从业经验,曾服务于世界500强企业及中国民营500强企业;熟悉跨国公司与民营企业管理的规律与特点。是业内不多的能同时把人力资源与财务、投行有效结合起来的专家。
熟悉私募基金运营、资本运作、投融资、股权融资、收购兼并。参与并主导多家企业的IPO(主板与新三板)上市工作,并积累丰富的投行经验。
原创性提出私募基金在合伙人制度当中的运用,HR效能方式方程式等思路与模式。他在多年HR和财务工作实践经验中总结提炼而成的《合伙人制度》、《人力资源效能方程式》、《非财务经理的财务管理》课程多次面向社会开设公开课,获得学员高度认可和广泛运用。
主讲课程:
《合伙人制度》《人力资源效能方程式》《HR如何有效支持业务伙伴》《非财务经理的财务管理》《绩效管理实操及落地提升》《人力资源经理的财务管理》《绩效平衡与落地》《基于smart原理的薪酬体系设计》
服务客户:
蒙牛集团、青岛啤酒、玖龙纸业、比亚迪、中国招商银行、中国银行、中国农业银行、中国电信、中国移动、中国联通、中国邮政、统一食品、天狮集团、蒙牛集团、稻花香集团、洋河酒业、古越龙山酒业、银基集团、双汇集团、贝因美奶粉、雅士利涂料、青岛啤酒、蓝带啤酒、隆力奇、伊利乳业、河南宝丰酒业、今麦郎饮品、大用食品、广东嘉士利食品、步森集团、上海紫燕食品有限公司等
家电、电器:宁波奥克斯集团、现代联合集团、东芝集团、美的集团、华润集团、联想集团、TCL集团、美菱电器、老板电器、先锋电器、华科家电、广东小太阳电器、明泰手机、中航油、佳通轮胎(新加坡)、杭州齿轮箱集团、江苏正大天晴药业、厦门中药厂、北京正安医疗设备、马应龙药业、博莱药业、九福集团、嘉欧化妆品、吉亨药业、南阳汇博、上海大众、吉利集团、东风汽车集团、中通汽车工业集团、长林机械厂、千里马工程机械等 。
6 years, 1 month
lnst-developers:见到客户很容易冷场,找不到话说怎么办? 4:38:19
by 先生
销售精英2天强化训练
【时间地点】2017年8月05-06北京,8月12-13上海,9月16-17 深圳
【培训对象】总经理、销售总监、区域经理、销售经理、业务代表、销售培训专员等。
【学习费用】2800/人(含两天中餐、指定教材、茶点)
【报名电话】0755-61280006、 13381601000 许先生
【QQ/ 微信】320588808
【培训背景】
1、新员工有激情,没有业绩,怎么办?
2、为什么才做了2年,老员工就出现了职业倦怠,不知上进怎么办?
3、有些销售人员遇到一点挫折就灰心伤丧气怎么办?
4、客户提出异议,有些销售人员就不知所措,怎么办?
5、单子死掉,销售人员都还不知道怎么回事;
6、见到客户很容易冷场,找不到话说怎么办?
7、为什么销售人员轻易给客户亮出自己的“底牌”?
8、为什么不同的客户,销售人员说词千篇一律?
9、为什么第一次上门后,第一次打完电话后业务员就不知道怎么跟进?
【课程大纲】
第一章 客户需求分析
第一节 为什么要对客户需求进行分析?
1、了解客户的背景,购买的标准,做到知已知彼,交流更有针对性;
2、从分析产品的“卖点”转变到研究客户的“买点”,了解什么样的客户需要比了解客户需要什么更重要;
3、引导客户,控制谈话的方向、节奏、内容,而不是漫无边际;
4、有目的地做好拜访计划,每次沟通都有新的话题和收获;
5、主动出击,不要一味地防守,被动地等待着奇迹的发生,谈而有“判” ;
6、客观理性分析,有果必有因在前,有因必有果在后,一因多果,一果多因;
7、不要包办代替,用自己的头脑去替客户思考,用自己的价值选择去代替客户的价值选择.
8、销售人员要具备独立判断的能力:
8.1 客户理想所需与现实所需不一致;
8.2 客户说得与做的不一致;
8.3 客户前后言语不一致;
8.4 不同的人要求不一致;
8.5 客户理解与销售理解不一致.
案例:为什么见到客户找不到话说?
案例:如何进行二次、三次等后续的跟进?
案例:客户明明已承认我们产品非常适合他,为什么还需要比较一下?
案例:我非常自信地告诉给客户选择我们是正确的,为什么他们不信?
案例:判断谁是关键人的8个因素
案例:如何判断客户的信誉度、忠诚度?先货后款的依据是什么?
第二节 客户需求分析步骤
1、了解客户采购的经历;
2、判断客户当前价值与未来价值;
3、判断客户的接受能力,内行还是外行;
4、了解客户购买的标准;
5、对客户购买的需求进行确认;
6、与客户共同确定采购的标准
作业:如何设计客户需求分析手册?
第二章 如何正确推荐产品
案例:为什么我满足客户所提出的要求,客户却还需要考虑一下?
案例:为什么客户不相信我质量与服务的承诺?
第一节 为什么需要我们正确地推荐产品?
一、客户往往对自己深层次的问题并不清楚;
二、客户的提出的要求可能是模糊或抽象,有的仅仅提出方向,不要局限于客户明显的问题,头痛医头,脚痛医脚;
三、客户往往会以我们竞品给他的条件要求我们,想要的不一定就是他需要的
四、满足客户提出的要求,是引导客户在不同公司之间做比较,而不在我公司做出决策;
五、好产品,不一定是最适合的,最适合的产品才是最好的:
1、适当的数量 2、适当的价格
3、适合的时间 4、适当的地址
5、适当的质量
案例:客户关心的是你如何保证你的质量和你的服务水平
第二节 如何帮助客户建立“排他性”的采购标准?
推荐产品中常用的34项内容:品牌、成本、质量、供货能力、地理位置、市场地位、成功案例、
生产技术与设备、可靠性、样品、技术服务、交货…
第三章 如何有效处理异议
一、对事不对人,你如何看别人,别人就会如何看你
案例:遇到小气、固执、粗鲁、啰嗦、刻薄、吹毛求疵、优柔寡断的客户应对?
案例:客户直接挂电话,怎么办?
案例:刚见面,客户就对我发火,怎么办?
二、客户异议处理要有6个区分:
1、要区分“第一” 还是“唯一”
2、对客户要求的真伪进行鉴别;
3、要区分“情绪”还是“行为”
4、区分“假想”还是“事实”
5、区别问题的轻重,缓急;
6、心里想的和实际做.
三、理解客户采购的心态;
1、客户谈判时常用7种试探技巧分析;
2、为什么有些客户对我们态度非常好,可是就是不下单?
3、为什么有些客户让我们感觉高高在上,花钱是大爷?难道他们素质真的差?
4、客户自身会有哪6个压力?
案例:客户提出合理条件,是否我就应该降价?
案例:如何分清客户异议的真实性?
案例:当谈判出现僵局时怎么办?
案例:为什么我答应客户提出的所有的条件,反而失去了订单?
案例:客户一再地提出不同的条件,怎么处理?
案例:客户要求我降价时,怎么办?请分8个步骤处理
第四章 如何建立良好的客情关系?
案例:做销售工作是否就需要疯狂、圆滑、奉承、见人说人话,见鬼说鬼话吗?
第一节 做回真实和真诚的自己,表里如一
1、演别人,再好的演技也会搞砸,想做别人的时候,你就会离自己很远;
2、不同的人,需求不同,越改越累,越改越气,只会把自己折磨得心浮气躁,不得人心;
3、以朋友的心态与客户交往,过多的商业化语言、行为、过多的礼仪只会让客户感觉到生硬、距离、
排斥、公事公办,没有感情;
4、适当的暴露自己的缺点,越完美的人越不可信;
5、守时,守信,守约,及时传递进程与信息,让客户感觉到可控性;
第二节 感谢伤害我的人,是因为我自己错了;
案例:及时发现客户的潜意识:
1、一味顺从:对销售人员每一句话都表示绝对赞同;
2、推卸责任:认为都是别人的原因,而与自己无关;
3、理论交谈:客户用专业术语与业务员谈,潜意识是对业务员怀疑;
4、谈论小事:客户对会谈中无关紧要的小事谈论不止;
5、无诚信:不按约定的时间见面,或借故迟到或找理由早退,不按约定要求提供信息资料,不付或延付订金;
第三节 摆正自己的位置
1、强势是体现在公司以及产品本身,而不是体现在销售人员本人;
2、让别人变得伟大,而不是自己,不要贬低任何人;
3、低调是最牛的炫耀,地低为海,人低为王;
4、会哭的孩子有奶吃,会哭的女人最聪明。
案例:自我暴露的四个层次:
第一层:兴趣爱好、饮食习惯、偏好等;
第二层:对周边的人(非家人)或事的看法;
第三层:自己的自卑情节、和家人的亲密关系;
第四层: 个体不为社会接受的一些想法和行为。
案例:生意不成仁义在,咱俩交个朋友,这句话应该由谁说?
案例:邀请客户吃饭,你应该怎么说?
案例:当客户表扬了你,你会怎么回答?
案例:我代表公司的形象,是否我应该表现自己很强势?
案例:为了获得客户的信任,我是否应该花重金包装自己?让自己很完美?
案例:为什么我对客户非常有礼貌,但却感觉到有很距离?
第五章 团队配合,尽己之力,不如尽人之力
案例:当客户老板不接受我的时候,应该怎么办?
案例:我不敢陌拜怎么办?我技术知识缺乏怎么办?我不会应酬怎么办?...
案例:多次上门拜访被拒绝,没有信心怎么办?
案例:新员工进入公司后没有方向怎么办?
案例:是不是世界上任何两个人在一起都会有团队精神?
第一节、团队配合的重要性:
1、一已是人,众人是天;谋事在人,成事在天;
2、没有完美的个人,只有完美的团队;成功是因为优势,弥补缺点只能变得平庸;
4、二八法则决定了80%人想成功需要借助20%人的力量;
5、不要用自己的缺点与别人的优势相比;
6、不要把专才当全才用,你讨厌做的事,刚好是别人喜欢做的事。
第二节、重新树立对团队的认识
团队前提一:互补性,同性相斥,异性相吸,一山不容二虎;
1.1 对销售工作岗位进行分析,区分12种不同的技能;
1.2 性格的互补,6种不同性格特征;
1.3 价值互补:追求权、追求钱、追求情感
团队前提二:利益交换,没有永远的朋友,只有永远的利益;
团队前提三:情感认可,团队成员的感情是天生的;
案例:店面/展厅销售的团队合作模式
案例:大客户销售的团队合作模式
案例:客户信息量大的团队合作模式
案例:新员工团队合作模式建议
第三节、不同客户喜欢不同风格的销售人员
1、销售人员形象与举止,注意自己的形象;
2、是否具备相似的背景,门当户对;
3、是否具备相同的认识,道不同不相为盟;
4、是否“投其所好”,话不投机半句多;
5、赞美,喜欢对方,我们同样对喜欢我们的人有好感;
先交流感情,增进互信,欲速则不达;
6、是否对销售人员熟悉,销售最忌讳交浅言深;
初次见面就企图跟别人成为朋友的行为很幼稚;
初次见面就暗示好处的行为很肤浅;
刚见面就强调价格很便宜的行为很愚蠢;
7、销售人员是否具备亲和力,别人的脸是自己的一面镜子;
成交并不取决于说理,而是取决于心情
8、销售人员是否值得信赖。
第六章 新客户开发
一、客户是根据自己所投入的精力、金钱来确定自己的态度;
二、如何才能引导客户作自我说服?
案例:为什么客户一开始很有兴趣,但迟迟不下单?
案例:前天明明说不买的客户居然今天却买了,为什么?
案例:客户答应买我司的产品,却突然变卦买别人的了,为什么?
案例:为什么我们会买很多自己没有兴趣的而且并不需要的产品?
案例:合同签订后,应该问哪4句话,提升客户忠诚度?
第七章 见什么人,说什么话
时间、能力、精力、兴趣、文化水平、不同的职位等的影响因素
1. 什么情况下偏重于理性说服,打动别人的脑?
2. 什么情况下偏重于情感说服,打动别人的心?
3. 何种情况下只讲优势不讲劣势?
4. 何种情况下即讲优势又讲劣势?
第八章 建立长期的职业规划
1、功利心太重,导致客户拒绝,钱是给内行的人赚的;
2、世界上没有好工作,好工作是自己做出来的;
3、以前的经验在新工作中不一定解决目前的问题;
4、不要有托付心态,男怕入错行,女怕嫁错郎;
5、检讨自己是成功的开始,检讨别人是失败的开始;
【讲师介绍】 王越老师
1、曾任可口可乐(中国)公司业务经理;阿里巴巴(中国)网络技术有限公司业务经理;
2、清华大学.南京大学EMBA特邀培训讲师;新加坡莱佛士学院特约讲师;
3、2000年至今一直从事销售与销售人员激励与训练工作,曾任可口可乐的业务经理,全球知名企业 阿里巴巴公司的业务经理,曾每月疯狂上门拜访100家以上的客户,半军事化的销售职业生涯, 高强度的工作压力,全面系统的受训经历,积累了丰富的客户收集、销售谈判、客户跟进、客户服务、 自我激励的经验,在公司曾获“悍将杯”榜眼。
【曾经培训过的部份客户】
华为公司/立邦漆业/太平保险/欧普照明/可口可乐/扬子石化/飞利浦/百度/中国移动/北京东信北邮/ 中国联通/成都通发集团/携程网络/广州方圆房产/深圳南海酒店/桂林三金药业/三一重工/深圳宝德集团/ 义乌邮政局/广西水电工程局/重庆煤科院/深圳特发股份/北京曲美家私 /九阳电器/珠港机场/巢湖邮政/ 济南邮政/南京医药总公司/国美电器/雨润集团/中国一拖集团能源分公司/重庆科创学院
【温馨提示】本课程可为企业提供内训,欢迎来电咨询!
6 years, 2 months