IPMI LAN command story design - try 3rd send
Li Nan
william.bjlinan at hotmail.com
Tue Oct 4 00:59:58 AEDT 2016
Hi team,
I'm working on the story of Confirm LAN Command meet IPMI 2.0
https://github.com/openbmc/openbmc/issues/444
<https://github.com/openbmc/openbmc/issues/444>
I summarize some fields of settings below, and need some help to confirm the direction of my work.
```
1. IPMI LAN command status and work plan
1.1. Current status
IPMI LAN command consists of 4 command ( refer to IPMI 2.0 Spec, Chapter 23 ): Set LAN Configuration Parameters, Get LAN Configuration Parameters, Suspend BMC ARPs and Get IP/UDP/RMCP Statistics.
Existing code includes implementation of Set/Get LAN configuration Parameters. ( Refer to https://github.com/openbmc/phosphor-host-ipmid/blob/master/transporthandler.cpp )
1.2. IPMI LAN Command Handling
Example for Set LAN Configuration Parameters.
Parameter
#
Number
IPMI handling
dbus method
Set In Progress(Volatile)
0
phosphor-host-ipmid/transporthandler.cpp, Line 209.
variable lan_set_in_progress act as a statemachine.
No need.
Authentication Type Support(Read Only)
1
phosphor-host-ipmid/transporthandler.cpp, Line 305.
Set to 0x4 (MD5)
No need.
Authentication Type
Enables
2
phosphor-host-ipmid/transporthandler.cpp, Line 311.
Set to 0x4, 0x4, 0x4, 0x4, 0x4.
No need.
IP Address
3
phosphor-host-ipmid/transporthandler.cpp, Line 169.
phosphor-neworkd/netman.py: Line 266: SetAddress4
MAC Address
(can be Read Only)
5
phosphor-host-ipmid/transporthandler.cpp, Line 174.
phosphor-neworkd/netman.py: Line 334: SetHwAddress.
Subnet Mask
6
phosphor-host-ipmid/transporthandler.cpp, Line 199.
phosphor-neworkd/netman.py: Line 266: SetAddress4
Default Gateway Address
12
phosphor-host-ipmid/transporthandler.cpp, Line 204.
phosphor-neworkd/netman.py: Line 266: SetAddress4
Handling of Get LAN Configuration Parameters command is similar to Set LAN Configuration Parameters. Refer to phosphor-host-ipmid/transporthandler.cpp and phosphor-networkd/netman.py.
1.3. Gap between current code and IPMI Spec 2.0
LAN Configuration Parameter List
Parameter
#
Number
Parameter Data( non-volatile unless otherwise noted )
Bit field
Description
Current status/Note
( Yes = current support.
No = not support. )
Set In Progress(Volatile)
0
byte 1
00b -= set complete
0ab = set in progress
10b = commit write
11b = reserved
Yes
Authentication Type Support(Read Only)
1
byte 1
Authentication type(s) enabled for this channel(bi0tfield):
All bits: 1b =supported
0b= authentication type not available for use.
[5] ¨C OEM proprietary
[4] ¨C straight password / key
[3] ¨C reserved
[2] ¨C MD5
[1] ¨C MD2
[0] - none
Yes.
MD5
Authenticaton Type
Enables
2
This field is used to configure which Authentication Types are available for use when a remote console activates an IPMI messaging connection to the BMC for a given requested maximum privilege level.
Yes.
MD5
IP Address
3
data 1:4
MS-byte first
IP Address
Yes
IP Address Source
4
data1
address source
0h ¨C unspecified
1h = static address (manually configured)
2h = address obtained by BMC running DHCP
3h = address loaded by BIOS or system software
4h = address obtained by BMC running other address assignment protocol
No.
MAC Address
(can be Read Only)
5
data 1:6
MAC Address for messages transmitted from BMC.
MS-byte first.
Yes.
Subnet Mask
6
data1:4
Yes
IPv4 Header Parameter
7
data1
No
Primary RMCP Port Number(optional)
8
data1:2
No.
Secondary RMCP Port Number(optional)
9
data1:2
No.
BMC-generated ARP control (optional)
10
data1
No.
Gratuitous ARP interval (optional)
11
No.
Default Gateway Address
12
Yes
Default Gateway MAC Address
13
No.
Backup Gateway Address
14
No.
Backup Gateway MAC Address
15
No.
Community String
16
No.
Number of Destinations( Read Only )
17
No.
Destination Type (volatile / non-volatile ¨C see description )
18
No.
Destination Address
19
No.
Following parameters are introduced with IPMI v2.0/RMCP+
802.1q VLAN ID (12-bit)
20
No.
802.1q VLAN Priority
21
No.
RMCP+ Messaging Cipher Suite Entry Support( Read Only )
22
No.
RMCP+ Messaging Cipher Suite Entries( Read Only )
23
No.
RMCP+ Messaging Cipher Suite Privilege Levels
24
No.
Destination Address VLAN TAGs
25
No.
Bad Password Threshold
26
No.
IPv6/IPv4 Support
50
No.
IPv6/IPv4 Addressing Enables
51
No.
IPv6/IPv4 Header Static Traffic Class
52
No.
IPv6 Header Static Hop Limit
53
No.
IPv6 Header Flow Label
54
No.
IPv6 Status
55
No.
IPv6 Static Addresses
56
No.
IPv6 DHCPv6 Static DUID storage length
57
No.
IPv6 DHCPv6 Static DUIDs
58
No.
IPv6 Dynamic ( SLAAC/DHCPv6) Address
59
No.
IPv6 DHCPv6 Dynamic DUID storage length
60
No.
IPv6 DHCPv6 Dynamic DUIDs
61
No.
IPv6 DHCPv6 Timing Configuration Support
62
No.
IPv6 DHCPv6 Timing & Configuration
63
No.
IPv6 Router Address Configuration Control
64
No.
IPv6 Static Router 1 IP Address
65
No.
IPv6 Static Router 1 MAC Address
66
No.
IPv6 Static Router 1 Prefix Length
67
No.
IPv6 Static Router 1 Prefix Value
68
No.
IPv6 Static Router 2 Address
69
No.
IPv6 Static Router 2 MAC Address
70
No.
IPv6 Static Router 2 Prefix Length
71
No.
IPv6 Static Router 2 Prefix Value
72
No.
Number of Dynamic Router Info Sets
73
No.
IPv6 Dynamic Router Info IP Address
74
No.
IPv6 Dynamic Router Info MAC Address
75
No.
IPv6 Dynamic Router Info Prefix Length
76
No.
IPv6 Dynamic Router Info Prefix Value
77
No.
IPv6 Dynamic Router Received Hop Limit
78
No.
IPv6 Neighbor Discovery / SLAAC Timing Configuration Support
79
No.
IPv6 Neighbor Discovery / SLAAC Timing Configuration
80
No.
OEM Parameters
192:255
No.
1.4. Work Plan
1.4.1. Set LAN Configuration Parameters
1.4.2. Get LAN Configuration Parameters
I figure out what we support in phosphor-netwokd repo ( Refer to:
https://github.com/openbmc/phosphor-networkd/blob/master/netman.py ) :
* Set In Progress,
* Authentication Type Support,
* Authentication Type Enables,
* IP Address,
* MAC Address,
* Subnet Mask,
* Default Gateway Address
So I think we only support existing configuration.
How can I implement the rest of the configurations/parameters? (open issues?)
1.4.3. ARP
Not implemented in Tom¡¯s IPMI network story.
Should I refer to openbmc/import-layers/meta-openembedded/meta-networking/recipes-support/arptables ?
Optional command. Not to implement?
1.4.4. IP/UDP/RMCP statistics
Seems like it was not implemented in obmc stories too.
This is an optional command. Not to implement?
2. IPMI LAN Commands in IPMI Spec 2.0 -- Format
1.1. Set LAN Configuration Parameters command
Set LAN Configuration Parameters command
Byte
Bit field
Description
Support
Request Data
1
[7:4]
reserved
[3:0]
Channel number
2
Parameter selector
3:N
Configuration parameter data
Response Data
1
Completion code
80h = parameter not supported.
81h = attempt to set the ¡®set in progress¡¯ value (in parameter #0) when not in the ¡®set complete¡¯ state. (This completion code provides a way to recognize that another party has already ¡®claimed¡¯ the parameters)
82h = attempt to write read-only parameter
83h = attempt to read write-only parameter
Existing code supports 7 LAN command:
Set In Progress,
Authentication Type Support,
Authentication Type Enables,
IP Address,
MAC Address,
Subnet Mask,
Default Gateway Address.
Refer to:
https://github.com/openbmc/phosphor-networkd/blob/master/netman.py
1.2. Get LAN Configuration Parameters Command
Get LAN Configuration Parameters Command
Byte
Bit field
Description
Support
Request Data
1
[7]
0b = get parameter
1b = get parameter revision only
[6:4]
reserved
[3:0]
Channel number
2
Parameter selector
3
Set Selector. Selects a given set of parameters under a given Parameter selector value.
00h if parameter don¡¯t use a Set Selector.
4
Block Selector (00h if parameter does not require a block number)
Response Data
1
[7:0]
Completion Code.
Generic codes, plus following command-specific completion code(s):
80h = parameter not supported.
Existing code supports 7 LAN command:
Set In Progress,
Authentication Type Support,
Authentication Type Enables,
IP Address,
MAC Address,
Subnet Mask,
Default Gateway Address.
Refer to https://github.com/openbmc/phosphor-networkd/blob/master/netman.py
2
[7:0]
Parameter revision.
Format: MSN = present revision. LSN = oldest revision parameter is backward compatible with. 11h for parameters in this specification.
The following data bytes are not returned when the ¡®get parameter revision only¡¯ bit is 1b.
3:N
Configuration parameter data.
If the rollback feature is implemented, the BMC makes a copy of the existing parameters when the ¡®set in progress¡¯ state becomes asserted (See the Set in Progress parameter #0). While the ¡®set in progress¡¯ state is active, the BMC will return data from this copy of the parameters, plus any uncommitted changes that were made to data. Otherwise, the BMC returns parameter data from non-volatile storage.
1.2.1. DHCPv6 Timing Parameters
Not support.
1.2.2. Neighbor discovery / SLAAC Timing Parameters
Not support.
1.3. Suspend BMC ARPs command
Suspend BMC ARPs Command
Byte
Bit field
Description
Support
Request
1
[7:4]
Reserved
[3:0]
Channel number
2
[7:2]
Reserved
[1]
ARP response suspend.
[0]
Gratuitous ARP suspend
Respond
1
Completion code
Do not support.
( Should refer to
openbmc/import-layers/meta-openembedded/meta-networking/recipes-support/arptables? )
2
present state o f ARP suspension
[7:2]
reserve
[1]
[0]
Address Resolution Protocol.
1.4. Get IP/UDP/RMCP Statistics Command
Get IP/UDP/RMCP Statistics Command
Byte
Bit field
Description
Support
Request Data
1
[7:4]
reserved
[3:0]
Channel number
2
[7:1]
clear statistics
[0]
Respond Data
1
Completion Code
RMCP is implemented in openbmc.
Refer to
https://github.com/openbmc/openbmc/issues/432 and so on.
Discussed with Tom, these statistics is not implemented in phosphor-networkd.
2:3
IP Packets Received.
4:5
Received IP Header Errors
6:7
Received IP Address Errors
8:9
Fragmented IP Packets Received
10:11
IP Packets Transmitted
12:13
UDP Packets Received
14:15
Valid RMCP Received
16:17
UDP Proxy Packets Received
18:19
UDP Proxy Packets dropped
3. End
```
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.ozlabs.org/pipermail/openbmc/attachments/20161003/26a3ff57/attachment-0001.html>
More information about the openbmc
mailing list