-
Notifications
You must be signed in to change notification settings - Fork 47
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
implement discovery service using python #108
Comments
@CongMinYin This is great progress! Thank you for the update. Let us know if there are any blockers or you need any help with any of the items. |
Update status, basic functions have been completed, and the initiator can receive the log pages, I need to refactor the code, including the naming of constants, adjusting the code structure, updating comments, etc. It will take some time before submitting the PR. Discovery controller:
Initiator:
|
Another thing, before using the discovery controller, we need to address #87. The solution for my current commits is that even the default IP and port will be stored in the listener field of omap. After discussing this issue, we may need to add a new omap object to store the information of the discovery controller, which will also facilitate the implementation of the watch/notify function in the future. For more discussion, please refer to this issue. |
The discovery contrller implement the basic function. Use command "python3 -m control.discovery" to start discovery controller. Client can use command "nvme discover -t tcp -a ip -s port" to get log pages. The configuration is in ceph-nvmeof.conf [discovery] part. feature: ceph#108 Signed-off-by: Yin Congmin <congmin.yin@intel.com>
The discovery contrller implement the basic function. Use command "python3 -m control.discovery" to start discovery controller. Client can use command "nvme discover -t tcp -a ip -s port" to get log pages. The configuration is in ceph-nvmeof.conf [discovery] part. feature: ceph#108 Signed-off-by: Yin Congmin <congmin.yin@intel.com>
The discovery contrller implement the basic function. Use command "python3 -m control.discovery" to start discovery controller. Client can use command "nvme discover -t tcp -a ip -s port" to get log pages. The configuration is in ceph-nvmeof.conf [discovery] part. feature: ceph#108 Signed-off-by: Yin Congmin <congmin.yin@intel.com>
The discovery contrller implement the basic function. Use command "python3 -m control.discovery" to start discovery controller. Client can use command "nvme discover -t tcp -a ip -s port" to get log pages. The configuration is in ceph-nvmeof.conf [discovery] part. feature: ceph#108 Signed-off-by: Yin Congmin <congmin.yin@intel.com>
The discovery contrller implement the basic function. Use command "python3 -m control.discovery" to start discovery controller. Client can use command "nvme discover -t tcp -a ip -s port" to get log pages. The configuration is in ceph-nvmeof.conf [discovery] part. feature: ceph#108 Signed-off-by: Yin Congmin <congmin.yin@intel.com>
basic function PR: #127 In order not to increase the complexity of the previous PR, I will wait for the merge and then push the PR of the added functions one by one. Now, I am learning IO multiplexing and advanced IO multiplexing libraries in Python networks, including select and selectors. IO multiplexing of the network is the foundation of discovery async functionality. |
The discovery contrller implement the basic function. Use command "python3 -m control.discovery" to start discovery controller. Client can use command "nvme discover -t tcp -a ip -s port" to get log pages. The configuration is in ceph-nvmeof.conf [discovery] part. feature: ceph#108 Signed-off-by: Yin Congmin <congmin.yin@intel.com>
multi persistent connection by using selectors: CongMinYin@afd02b2 |
Recently, I have implemented draft versions that support many |
The discovery contrller implement the basic function. Use command "python3 -m control.discovery" to start discovery controller. Client can use command "nvme discover -t tcp -a ip -s port" to get log pages. The configuration is in ceph-nvmeof.conf [discovery] part. feature: ceph#108 Signed-off-by: Yin Congmin <congmin.yin@intel.com>
The preliminary work for most of the functions has been completed. see #127 and #127 (comment). |
The discovery contrller implement the basic function. Use command "python3 -m control.discovery" to start discovery controller. Client can use command "nvme discover -t tcp -a ip -s port" to get log pages. The configuration is in ceph-nvmeof.conf [discovery] part. feature: ceph#108 Signed-off-by: Yin Congmin <congmin.yin@intel.com>
The discovery contrller implement the basic function. Use command "python3 -m control.discovery" to start discovery controller. Client can use command "nvme discover -t tcp -a ip -s port" to get log pages. The configuration is in ceph-nvmeof.conf [discovery] part. feature: ceph#108 Signed-off-by: Yin Congmin <congmin.yin@intel.com>
The discovery contrller implement the basic function. Use command "python3 -m control.discovery" to start discovery controller. Client can use command "nvme discover -t tcp -a ip -s port" to get log pages. The configuration is in ceph-nvmeof.conf [discovery] part. feature: ceph#108 Signed-off-by: Yin Congmin <congmin.yin@intel.com>
The discovery contrller implement the basic function. Use command "python3 -m control.discovery" to start discovery controller. Client can use command "nvme discover -t tcp -a ip -s port" to get log pages. The configuration is in ceph-nvmeof.conf [discovery] part. feature: ceph#108 Signed-off-by: Yin Congmin <congmin.yin@intel.com>
The discovery contrller implement the basic function. Use command "python3 -m control.discovery" to start discovery controller. Client can use command "nvme discover -t tcp -a ip -s port" to get log pages. The configuration is in ceph-nvmeof.conf [discovery] part. feature: ceph#108 Signed-off-by: Yin Congmin <congmin.yin@intel.com>
The discovery contrller implement the basic function. Use command "python3 -m control.discovery" to start discovery controller. Client can use command "nvme discover -t tcp -a ip -s port" to get log pages. The configuration is in ceph-nvmeof.conf [discovery] part. feature: ceph#108 Signed-off-by: Yin Congmin <congmin.yin@intel.com>
The discovery contrller implement the basic function. Use command "python3 -m control.discovery" to start discovery controller. Client can use command "nvme discover -t tcp -a ip -s port" to get log pages. The configuration is in ceph-nvmeof.conf [discovery] part. feature: ceph#108 Signed-off-by: Yin Congmin <congmin.yin@intel.com>
The discovery contrller implement the basic function. Use command "python3 -m control.discovery" to start discovery controller. Client can use command "nvme discover -t tcp -a ip -s port" to get log pages. The configuration is in ceph-nvmeof.conf [discovery] part. feature: ceph#108 Signed-off-by: Yin Congmin <congmin.yin@intel.com>
The discovery contrller implement the basic function. Use command "python3 -m control.discovery" to start discovery controller. Client can use command "nvme discover -t tcp -a ip -s port" to get log pages. The configuration is in ceph-nvmeof.conf [discovery] part. feature: ceph#108 Signed-off-by: Yin Congmin <congmin.yin@intel.com>
The discovery contrller implement the basic function. Use command "python3 -m control.discovery" to start discovery controller. Client can use command "nvme discover -t tcp -a ip -s port" to get log pages. The configuration is in ceph-nvmeof.conf [discovery] part. feature: ceph#108 Signed-off-by: Yin Congmin <congmin.yin@intel.com>
The discovery contrller implement the basic function. Use command "python3 -m control.discovery" to start discovery controller. Client can use command "nvme discover -t tcp -a ip -s port" to get log pages. The configuration is in ceph-nvmeof.conf [discovery] part. feature: ceph#108 Signed-off-by: Yin Congmin <congmin.yin@intel.com>
The discovery contrller implement the basic function. Use command "python3 -m control.discovery" to start discovery controller. Client can use command "nvme discover -t tcp -a ip -s port" to get log pages. The configuration is in ceph-nvmeof.conf [discovery] part. feature: ceph#108 Signed-off-by: Yin Congmin <congmin.yin@intel.com>
The discovery contrller implement the basic function. Use command "python3 -m control.discovery" to start discovery controller. Client can use command "nvme discover -t tcp -a ip -s port" to get log pages. The configuration is in ceph-nvmeof.conf [discovery] part. feature: ceph#108 Signed-off-by: Yin Congmin <congmin.yin@intel.com>
The discovery contrller implement the basic function. Use command "python3 -m control.discovery" to start discovery controller. Client can use command "nvme discover -t tcp -a ip -s port" to get log pages. The configuration is in ceph-nvmeof.conf [discovery] part. feature: ceph#108 Signed-off-by: Yin Congmin <congmin.yin@intel.com>
The discovery contrller implement the basic function. Use command "python3 -m control.discovery" to start discovery controller. Client can use command "nvme discover -t tcp -a ip -s port" to get log pages. The configuration is in ceph-nvmeof.conf [discovery] part. feature: ceph#108 Signed-off-by: Yin Congmin <congmin.yin@intel.com>
The discovery contrller implement the basic function. Use command "python3 -m control.discovery" to start discovery controller. Client can use command "nvme discover -t tcp -a ip -s port" to get log pages. The configuration is in ceph-nvmeof.conf [discovery] part. feature: ceph#108 Signed-off-by: Yin Congmin <congmin.yin@intel.com>
The discovery contrller implement the basic function. Use command "python3 -m control.discovery" to start discovery controller. Client can use command "nvme discover -t tcp -a ip -s port" to get log pages. The configuration is in ceph-nvmeof.conf [discovery] part. feature: ceph#108 Signed-off-by: Yin Congmin <congmin.yin@intel.com>
The discovery contrller implement the basic function. Use command "python3 -m control.discovery" to start discovery controller. Client can use command "nvme discover -t tcp -a ip -s port" to get log pages. The configuration is in ceph-nvmeof.conf [discovery] part. feature: ceph#108 Signed-off-by: Yin Congmin <congmin.yin@intel.com>
The NVMe-over-Fabrics specification defines the concept of a Discovery Controller that an NVMe Host can query on a fabric network to discover NVMe subsystems contained in NVMe Targets which it can connect to on the network. The Discovery Controller will return Discovery Log Pages that provide the NVMe Host with specific information (such as network address and unique subsystem NQN) the NVMe Host can use to issue an NVMe connect command to connect itself to a storage resource contained in that NVMe subsystem on the NVMe Target.
We will implement a discovery controller using Python. In order to better communicate and share progress, I will update here.
The discovery controller code will be in:
Discovery controller IP and port for discovery service can be read from
ceph-nvmeof.conf
.to start discovery service:
python3 -m control.discovery
discovery controller functions:
Network packets included in the
discover
command. This was captured using Wireshark.command:
nvme discover -t tcp -a 10.239.241.113 -s 4420
A complete process for basic function is:
1->2->3->4->5->6->7->8->9->9->…-> 9->4->5
appendix from wireshark.
The text was updated successfully, but these errors were encountered: