Purpose
This document describes the UDSP feature from the user perspective. The document will cover all Intended use cases, list expected behaviour and potential issues for each.
UDSP Use Cases
Linux Routing
Because all use cases featured below rely on having multiple interfaces configured, it is important to make sure that linux routing is configured according to guidelines listed here: MR Cluster Setup
Local Peer Config
The following configuration is used for local testing.
...
UDSP | Behaviour |
---|
Prioritize one of PeerA NIDs on tcp | Prioritized nid is used when its net (tcp) is used on peerA Priority of the nid is 0. Other nids' priority is -1 (default, no priority) Every send toggles between the prioritized nid on tcp and the nid on tcp1 on the source. The remaining nid on tcp is not used "netstat -i" command shows tx stats incrementing for eth2 and eth0 on peerA |
Code Block |
---|
lnetctl udsp add --src 192.168.122.110@tcp
lnetctl udsp show
udsp:
- idx: 0
src: 192.168.122.110@tcp
dst: NA
rte: NA
action:
priority: 0 | Code Block |
---|
| PeerA: Code Block |
---|
lnetctl net show -v 4
net:>>>>
- net type: lotcp
local NI(s):
- nid: 0@lo192.168.122.110@tcp
status: up
statisticsinterfaces:
send_count: 0
recv_count: 0
drop_count: 0eth0
....
udsp info:
net priority: -1
nid priority: -1
sent_stats:
0
<<<< |
|
Local Source Net
UDSP | Behaviour |
---|
Prioritize tcp1 as source on PeerA Note that source NID rule is still in the list. | Prioritized tcp1 is used on PeerA Priority of tcp1 is 0 (highest) Every send on PeerA goes out tcp1. NID rule is overriden. "netstat -i" command shows tx stats incrementing for eth2 on peerA |
Code Block |
---|
lnetctl udsp add --src tcp1
lnetctl udsp show
udsp:
- idx: 0
putsrc: 0192.168.122.110@tcp
dst: NA
getrte: 0NA
action:
reply priority: 0
- idx: 1
acksrc: 0tcp1
dst: NA
hellorte: 0NA
received_statsaction:
priority: 0 |
| PeerA: Code Block |
---|
lnetctl net show put: 0-v 4
>>>>
- net type: tcp
local get: 0NI(s):
- nid: 192.168.122.110@tcp
reply: 0
status: up
ack interfaces: 0
hello0: 0eth0
....
dropped_statsudsp info:
putnet priority: 0-1
getnid priority: 0
<<<<
>>>>
- net replytype: 0tcp1
ack: 0local NI(s):
hello: 0- nid: 192.168.122.238@tcp1
healthstatus: stats:up
health value: 0interfaces:
interrupts0: 0eth2
....
udsp droppedinfo:
0
net abortedpriority: 0
nonid routepriority: 0
timeouts: 0
error: 0
tunables:-1
<<<< |
|
Prioritize Destination
Local Destination NID
UDSP | Behaviour |
---|
On PeerA, prioritize one of PeerB's NIDs on tcp
| Prioritized NID on PeerB is sent to when tcp is selected on peerA Priority of the prioritized NID is 0 (lnetct peer show -v 4) Sends on PeerA alternate between tcp and tcp1. When tcp is used, send goes to the prioritized dest NID "netstat -i" command shows rx stats incrementing for eth2 and eth0 on peerB |
Code Block |
---|
lnetctl udsp add --dst 192.168.122.103@tcp
lnetctl udsp show
udsp:
- idx: 0
src: NA
|
|
peer_timeout0192.168.122.103@tcp
rte: NA
action:
|
|
peer_credits:0
peer_buffer_credits | PeerB: use "lnetct net show -v" to verify the receive count going up on the prioritized NID PeerA: use "lnetct peer show -v 4" to verify dest NID priority. |
Local Destination Net
UDSP | Behaviour |
---|
On PeerA, prioritize tcp1 as dest net
| Prioritized dest net (tcp1) is used to send from PeerA Priority of the prioritized dest net is 0 (lnetct peer show -v 4) Sends on PeerA use tcp1. "netstat -i" command shows tx stats incrementing for eth2 on peerA |
Code Block |
---|
lnetctl udsp add --dst tcp1
lnetctl udsp show
udsp:
|
|
credits: 0
dev cpt: 0
tcp bonding: 0
CPT: "[0]"
- net type: tcp
local NI(s):
nid192.168.122.110@tcp statusup interfaces: 0eth0 statistics send_count: 4
recv_count: 4
drop_count | PeerB: use "lnetctl net show -v" to verify the receive count going up on the nids of the prioritized dest net PeerA: use "lnetctl peer show -v 4" to verify dest net priority. |
NID Pairing
Local Destination NID Pairing
UDSP | Behaviour |
---|
On PeerA, pair one of the tcp nids with one off the PeerB tcp nids
| When paired nid on PeerA is selected, it always sends to its pair on peerB PeerA nid is listed as preferred NID for the peerB nid ("lnetctl net show -v") |
Code Block |
---|
lnetctl udsp add --src 192.168.122.110@tcp --dst 192.168.122.103@tcp
lnetctl udsp show
udsp:
- idx: 0
|
|
udsp info: net priority: -1dst: 192.168.122.103@tcp
rte: NA |
| PeerA: use "lnetctl peer show -v 4" to verify nid pairing. |
Remote Peer Config
Gliffy Diagram |
---|
name | RemoteLayout1 |
---|
pagePin | 3 |
---|
|
The following configuration is used for testing that involves remote peers and routing:
PeerA | PeerB | Gateway1 | Gateway2 |
---|
two nids on tcp | two nids on tcp2 | two nids on tcp, two nids on tcp2 | two nids on tcp, two nids on tcp2 |
Code Block |
---|
lnetctl net show
net:
- net type: lo |
|
nid priority: 0
sent_stats:
put: 0
get: 4
reply: 0ack0hello:0
received_statslocal NI(s):
- nid: 192.168.122.103@tcp
|
|
put:0
get 1reply3 ack: 0- nid: 192.168.122.154@tcp
|
|
hello0dropped_statsput0
Code Block |
---|
lnetctl route show
route:
- net: tcp2
|
|
get0192.168.122.132@tcp
- net: tcp2
gateway: |
|
reply: 0 | Code Block |
---|
lnetctl net show
net:
- net type: lo
local |
|
ack0
hello:0
healthstats health value: 1000 interrupts: 0- nid: 192.168.122.110@tcp2
|
|
dropped0 aborted: 0no route:
timeouts0
error: 0
tunables:
peer_timeout: 180
peer_credits: 8
peer_buffer_credits: 0
credits: 256
dev cpt: -1
tcp bonding: 0
CPT: "[0]"
- nid: 192.168.122.253@tcp
status: up
interfaces:
0: eth1
statistics:
send_count: 2
recv_count: 2
drop_count: 0
udsp info:
net priority: -1
nid priority: -1
sent_stats:
put: 0
get: 2
reply: 0
ack: 0
hello: 0
received_stats:
put: 0
get: 1
reply: 1
ack: 0
hello: 0
dropped_stats:
put: 0
get: 0
reply: 0
ack: 0
hello: 0
health stats:
health value: 1000
interrupts: 0
dropped: 0
aborted: 0
no route: 0
timeouts: 0
error: 0
tunables:
peer_timeout: 180
peer_credits: 8
peer_buffer_credits: 0
credits: 256
dev cpt: -1
tcp bonding: 0
CPT: "[0]"
- net type: tcp1
local NI(s):
- nid: 192.168.122.238@tcp1
status: up
interfaces:
0: eth2
statistics:
send_count: 5
recv_count: 5
drop_count: 0
udsp info:
net priority: -1
nid priority: -1
sent_stats:
put: 2
get: 3
reply: 0
ack: 0
hello: 0
received_stats:
put: 1
get: 0
reply: 3
ack: 1
hello: 0
dropped_stats:
put: 0
get: 0
reply: 0
ack: 0
hello: 0
health stats:
health value: 1000
interrupts: 0
dropped: 0
aborted: 0
no route: 0
timeouts: 0
error: 0
tunables:
peer_timeout: 180
peer_credits: 8
peer_buffer_credits: 0
credits: 256
dev cpt: -1
tcp bonding: 0
CPT: "[0]"Local Source Net
...
Prioritize tcp1 as source on PeerA
Note that source NID rule is still in the list.
...
Prioritized tcp1 is used on PeerA
Priority of tcp1 is 0 (highest)
Every send on PeerA goes out tcp1. NID rule is overriden.
Code Block |
---|
lnetctl udsp add --src tcp1
lnetctl udsp show
udsp:
- idx: 0
src: 192.168.122.110@tcp
dst: NA
rte: NA
action:
priority: 0
- idx: 1
src: tcp1
dst: NA
rte: NA
action:
priority: 0 |
eth0
- nid: 192.168.122.253@tcp2
status: up
interfaces:
0: eth1 |
Code Block |
---|
lnetctl route show
route:
- net: tcp
gateway: 192.168.122.26@tcp2
- net: tcp
gateway: 192.168.122.200@tcp2 |
| Code Block |
---|
lnetctl net show
net:
- net type: lo
local NI(s):
- nid: 0@lo |
|
PeerA:
Code Block |
---|
lnetctl net show -v 4
net:
- net type: lo
local NI(s):
- nid: 0@lo
status: up
statistics:
send_count: 0
recv_count: 0
drop_count: 0
udsp info:
net priority: -1
nid priority: -1
sent_stats:
put: 0
get: 0
reply: 0
ack: 0
hello: 0
received_stats:
put: 0
get: 0
reply: 0
ack: 0
hello: 0
dropped_stats:
put: 0
get: 0
reply: 0
ack: 0
hello: 0
health stats:
health value: 0
interrupts: 0
dropped: 0
aborted: 0
no route: 0
timeouts: 0
error: 0
tunables:
peer_timeout: 0
peer_credits: 0
peer_buffer_credits: 0
credits: 0
dev cpt: 0
tcp bonding: 0
CPT: "[0]"
- net type: tcp
local NI(s):
- nid: 192.168.122.110@tcp
status: up
interfaces:
0: eth0
statistics:
send_count: 9
recv_count: 9
drop_count: 0
udsp info:
net priority: -1
nid priority: 0
sent_stats:
put: 1
get: 8
reply: 0
ack: 0
hello: 0
received_stats:
put: 1
get: 2
reply: 6
ack: 0
hello: 0
dropped_stats:
put: 0
get: 0
reply: 0
ack: 0
hello: 0
health stats:
health value: 1000
interrupts: 0
dropped: 0
aborted: 0
no route: 0
timeouts: 0
error: 0
tunables:
peer_timeout: 180
peer_credits: 8
peer_buffer_credits: 0
credits: 256
dev cpt: -1
tcp bonding: 0
CPT: "[0]"
- nid: 192.168.122.253@tcp
status: up
interfaces:
0: eth1
statistics:
send_count: 2
recv_count: 2
drop_count: 0
udsp info:
net priority: -1
nid priority: -1
sent_stats:
put: 0
get: 2
reply: 0
ack: 0
hello: 0
received_stats:
put: 0
get: 1
reply: 1
ack: 0
hello: 0
dropped_stats:
put: 0
get: 0
reply: 0
ack: 0
hello: 0
health stats:
health value: 1000
interrupts: 0
dropped: 0
aborted: 0
no route: 0
timeouts: 0
error: 0
tunables:
peer_timeout: 180
peer_credits: 8
peer_buffer_credits: 0
credits: 256
dev cpt: -1
tcp bonding: 0
CPT: "[0]"
- net type: tcp1
local NI(s):
- nid: 192.168.122.238@tcp1
status: up
interfaces:
0: eth2
statistics:
send_count: 19
recv_count: 19
drop_count: 0
udsp info:
net priority: 0
nid priority: -1
sent_stats:
put: 4
get: 15
reply: 0
ack: 0
hello: 0
received_stats:
put: 1
get: 0
reply: 15
ack: 3
hello: 0
dropped_stats:
put: 0
get: 0
reply: 0
ack: 0
hello: 0
health stats:
health value: 1000
interrupts: 0
dropped: 0
aborted: 0
no route: 0
timeouts: 0
error: 0
tunables:
peer_timeout: 180
peer_credits: 8
peer_buffer_credits: 0
credits: 256
dev cpt: -1
tcp bonding: 0
CPT: "[0]" |
Prioritize Destination
Local Destination NID
UDSP | Behaviour |
---|
On PeerA, prioritize one of PeerB's NIDs on tcp
Prioritized NID tcp NID on PeerA is used when tcp is selected on peerA Priority of the prioritized NID is 0 (lnetct peer show -v 4) Sends on PeerA alternate between tcp and tcp1. When tcp is used, send goes to the prioritized dest NID | Code Block |
lnetctl udsp add --dst 192.168.122.103@tcp
lnetctl udsp show
udsp:
- idx: 0
src: NA
dst: 192.168.122.103@tcp
rte: NA
action:priority0PeerB: use "lnetct net show -v" to verify the receive count going up on the prioritized NID PeerA: use "lnetct peer show -v 4" to verify dest NID priority. | Local Destination Net
UDSP | Behaviour |
---|
On PeerA, prioritize tcp1 as dest net
Prioritized dest net (tcp1) is used to send from PeerA Priority of the prioritized dest net is 0 (lnetct peer show -v 4) Sends on PeerA use tcp1. | Code Block |
lnetctl udsp add --dst tcp1
lnetctl udsp show
udspup
- net type: tcp
local NI(s):
- nid: 192.168.122.102@tcp
status: up
interfaces:
|
|
-idx:0
srcNAdsttcp1rte: NA
actionpriority: 0PeerB: use "lnetctl net show -v" to verify the receive count going up on the nids of the prioritized dest net PeerA: use "lnetctl peer show -v 4" to verify dest net priority. | NID Pairing
Local Destination NID Pairing
UDSP | Behaviour |
---|
On PeerA, pair one of the tcp nids with one off the PeerB tcp nids
When paired nid on PeerA is selected, it always sends to its pair on peerB PeerA nid is listed as preferred NID for the peerB nid ("lnetctl net show -v") | Code Block |
lnetctl udsp add --src 192.168.122.110@tcp --dst 192.168.122.103@tcp
lnetctl udsp show
udsp:
- idx: 0 0: eth1
- net type: tcp2
local NI(s):
- nid: 192.168.122.237@tcp2
status: up
interfaces:
0: eth2
|
|
src110@tcpdst: 192.168.122.103@tcp
rte: NAPeerA: use "lnetctl peer show -v 4" to verify nid pairing. | Remote Peer Config
The following configuration is used for testing that involves remote peers and routing:
PeerA | PeerB | Gateway1 | Gateway2 |
---|
two nids on tcp | two nids on tcp2 | two nids on tcp, two nids on tcp2 | two nids on tcp, two nids on tcp2 | Code Block |
---|
lnetctl net show
net:
- net type: lo
local NI(s):
- nid: 0@lo
status: up
- net type: tcp
local NI(s):
- nid: 192.168.122. |
|
103@tcp132@tcp
status: up
interfaces:
0: eth0
- nid: 192.168.122.150@tcp
status: up
|
|
statusup
interfaces0: eth1
- net type: tcp2
local |
|
0: eth0NI(s):
- nid: 192.168.122. |
|
154@tcp26@tcp2
status: up
interfaces:
0: |
|
eth1 Code Block |
lnetctl net show
net:
-net type: lo
local NI(s):
0@lo192.168.122.244@tcp2
status: up
|
|
-nettype tcp2localNI(s):
- nid: 192.168.122.110@tcp2
status: up
interfaces:
0: eth0
- nid: 192.168.122.253@tcp2
status: up
interfaces:
0: eth1 Code Block |
lnetctl net show
net:
- net type: lo
local NI(s):
- nid: 0@lo
status:Gateway Preference For Destination
Preferred Gateway For Destination NID
Gliffy Diagram |
---|
name | RemoteUDSPDstNid1 |
---|
pagePin | 3 |
---|
|
UDSP | Behaviour |
---|
On PeerB, add UDSP that gives one of the PeerA nids highest priority On PeerB, designate Gateway1 as preferred for the same PeerA nid. | All sends from PeerB go to the prioritized nid of PeerA through the preferred gateway Use "lnetctl stats show" on Gateway1 and Gateway2. On every send from PeerB to PeerA, "route_count" should increase only on Gateway1. On PeerA "send_count" and "recv_count" should increase only for the prioritised nid. On PeerB, Gateway1 should be listed as preferred for the specified nid of PeerA on tcp "netstat -i" command shows rx stats incrementing for eth0 on peerA |
Code Block |
---|
lnetctl udsp add --dst 192.168.122.103@tcp
lnetctl udsp add --dst 192.168.122.103@tcp --rte 192.168.122.102@tcp
lnetctl udsp show
udsp: |
|
upnet typetcplocal NI(s): - nid102@tcpstatus upinterfaces 0eth0 - nid252@tcp103@tcp
rte: 192.168.122.102@tcp |
| PeerB: Code Block |
---|
lnetctl peer show |
|
status: up interfaces:nid: 192.168.122.103@tcp
udsp |
|
0eth1
-nettype:tcp2
local NI(s): - nid: 192.168.122.237@tcp2
statusupinterfaces:
0:eth2
nid0: 192.168.122.102@tcp
<<<< |
|
Preferred Gateway For Destination Net
Gliffy Diagram |
---|
| |
---|
name | RemoteUDSPDstNet2 |
---|
pagePin | 1 |
---|
|
UDSP | Behaviour |
---|
On PeerB, designate Gateway1 as preferred for tcp remote network | The preferred gateway for tcp is used for all traffic Use "lnetctl stats show" on Gateway1 and Gateway2. On every send from PeerB to PeerA, "route_count" should increase only on Gateway1. On PeerB, Gateway1 should be listed as preferred for every nid on tcp: |
Code Block |
---|
lnetctl udsp add --dst tcp --rte 192.168.122.102@tcp
lnetctl udsp show
udsp:
- idx: 0 |
|
.122.200@tcp2
status: up
interfaces:
0: eth3 Code Block |
lnetctl net show
net:
- net type: lo
local NI(s): - nid0@lo statusup-nettypetcp
local NI(s): | PeerB: Code Block |
---|
lnetctl peer show -v 4
>>>>
- nid: 192.168.122. |
|
132@tcpstatus upinterfaces:
0:eth0
- nid: 192.168.122.150@tcpstatus:up
interfaces 0:eth1
- net type: tcp2
local NI(s):NID-0: 192.168.122.102@tcp
<<<<<
>>>>>
- nid: 192.168.122. |
|
26@tcp2status upinterfaces:
0:eth2
- nid: 192.168.122.244@tcp2status:up
interfaces:
eth3Gateway Preference For Source
...