CN112383594B - 基于超级账本Fabric网络的跨主机通信方法及装置 - Google Patents
基于超级账本Fabric网络的跨主机通信方法及装置 Download PDFInfo
- Publication number
- CN112383594B CN112383594B CN202011193298.4A CN202011193298A CN112383594B CN 112383594 B CN112383594 B CN 112383594B CN 202011193298 A CN202011193298 A CN 202011193298A CN 112383594 B CN112383594 B CN 112383594B
- Authority
- CN
- China
- Prior art keywords
- host
- node
- address
- access request
- port number
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
- H04L67/63—Routing a service request depending on the request content or context
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请实施例提供了一种基于超级账本Fabric网络的跨主机通信方法及装置,应用于超级账本Fabric网络的第一主机的虚拟通信设备,包括:接收超级账本Fabric网络的第二主机上的节点发送的第一访问请求,第一访问请求的目的地址为第一主机的第一主机地址;根据预先存储的主机地址、端口号和节点地址的对应关系,确定第一主机地址和第一访问请求的目的端口号对应的第一节点地址;将第一访问请求的目的地址修改为第一节点地址;根据修改后的第一访问请求的目的地址和目的端口号,向第一节点地址对应的节点发送修改后的第一访问请求。应用本申请实施例提供的技术方案,在每个主机能够独立的控制自身信息的情况下,实现了分布式记账功能。
Description
技术领域
本申请涉及区块链技术领域,特别是涉及一种基于超级账本Fabric网络的跨主机通信方法及装置。
背景技术
为实现区块链及分布式记账系统的跨行业发展与协作,并着重发展性能和可靠性,以支持主要的技术、金融和供应链公司中的全球商业交易,超级账本(Hyperledger)项目被推出。
Hyperledger Fabric是一个许可的区块链构架,以实现超级账本的功能。Hyperledger Fabric网络包括多个节点,且这多个节点以容器引擎(Docker)的形式存在。为实现分布式记账功能,跨越主机的组网,Hyperledger Fabric网络包括的所有节点以K8S集群作为物理载体。
但是,K8S集群一个集中式的管理集群,即K8S集群中的所有主机统一由一台主机集中管理,也就是,每个主机上的信息都不受该主机自身的控制,这本身就和区块链的分布式理念相悖,无法真正的实现分布式记账功能。
发明内容
本申请实施例的目的在于提供一种基于超级账本Fabric网络的跨主机通信方法及装置,以在每个主机能够独立的控制自身信息的情况下,实现分布式记账功能。具体技术方案如下:
第一方面,本申请实施例提供了一种基于超级账本Fabric网络的跨主机通信方法,应用于所述超级账本Fabric网络的第一主机的虚拟通信设备,所述方法包括:
接收所述超级账本Fabric网络的第二主机上的节点发送的第一访问请求,所述第一访问请求的目的地址为所述第一主机的第一主机地址;
根据预先存储的主机地址、端口号和节点地址的对应关系,确定所述第一主机地址和所述第一访问请求的目的端口号对应的第一节点地址;
将所述第一访问请求的目的地址修改为所述第一节点地址;
根据修改后的第一访问请求的目的地址和目的端口号,向所述第一节点地址对应的节点发送所述修改后的第一访问请求,以使所述第一节点地址对应的节点处理所述修改后的第一访问请求。
第二方面,本申请实施例提供了一种基于超级账本Fabric网络的跨主机通信装置,应用于所述超级账本Fabric网络的第一主机的虚拟通信设备,所述装置包括:
接收模块,用于接收所述超级账本Fabric网络的第二主机上的节点发送的第一访问请求,所述第一访问请求的目的地址为所述第一主机的第一主机地址;
确定模块,用于根据预先存储的主机地址、端口号和节点地址的对应关系,确定所述第一主机地址和所述第一访问请求的目的端口号对应的第一节点地址;
修改模块,用于将所述第一访问请求的目的地址修改为所述第一节点地址;
发送模块,用于根据修改后的第一访问请求的目的地址和目的端口号,向所述第一节点地址对应的节点发送所述修改后的第一访问请求,以使所述第一节点地址对应的节点处理所述修改后的第一访问请求。
第三方面,本申请实施例提供了一种主机,包括处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行程序,所述处理器被所述机器可执行程序促使:执行上述任一所述的方法步骤。
第四方面,本申请实施例提供了一种机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行程序,所述处理器被所述机器可执行程序促使:执行上述任一所述的方法步骤。
本申请实施例提供的一种基于超级账本Fabric网络的跨主机通信方法及装置中,超级账本Fabric网络中每个主机上的节点可以学习到其他主机的主机地址。超级账本Fabric网络中第一主机上的节点与第二主机上的节点间通信时,第二主机上的节点发送目的地址为第一主机的第一主机地址的第一访问请求。第一主机的虚拟通信设备确定第一主机地址和第一访问请求的目的端口号对应的第一节点地址,将第一访问请求的目的地址修改为第一节点地址。此时,第一主机的虚拟通信设备根据修改后的第一访问请求的目的地址和目的端口号,可将修改后的第一访问请求发送给第一节点地址对应的节点,实现跨主机通信。
可见,本申请实施例中,超级账本Fabric网络中每个主机的虚拟通信设备只需要学习到其他主机的主机地址,就可以实现不同主机上的节点间通信。因此,不需要每个主机的虚拟通信设备学习到其他主机上所有节点的节点地址,也就不需要设置一台集中管理的主机,以协助每个主机学习到其他主机上所有节点的节点地址。进而本申请实施例中,每个主机能够独立的控制自身信息,结合本申请实施例中,超级账本Fabric网络多个主机,进而实现了分布式记账功能。当然,实施本申请的任一产品或方法必不一定需要同时达到以上所述的所有优点。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的K8S集群的一种结构示意图;
图2为本申请施例提供的基于超级账本Fabric网络的跨主机通信方法的一种流程示意图;
图3为本申请施例提供的基于超级账本Fabric网络的跨主机通信方法的另一种流程示意图;
图4a为本申请施例提供的超级账本Fabric网络的一种结构示意图;
图4b为基于图4a所示的超级账本Fabric网络做内部端口号分配后的一种结构示意图;
图5为申请实施例提供的基于超级账本Fabric网络的跨主机通信装置的一种结构示意图;
图6为申请实施例提供的主机的一种结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
Hyperledger Fabric是一个许可的区块链构架,以实现超级账本的功能。Hyperledger Fabric网络包括多个节点,这多个节点包括记账节点、排序节点或背书节点等。
Hyperledger Fabric网络中这多个节点以容器引擎(Docker)的形式存在。节点的载体可以为一台独立的物理服务器、虚拟机或K8S集群。K8S集群的结构如图1所示,该K8S集群中包括主机11-13。K8S集群中可以包括3、4、5或更多个主机,图1中仅以K8S集群包括3个主机为例进行说明,并不起限定作用。K8S集群包括多个主机中存在一个或多个对各个主机进行集中管理的主机(以下简称为“集中管理设备”,如图1中的主机11)。
为实现分布式记账功能,跨越主机之间的组网,Hyperledger Fabric网络包括的所有节点以K8S集群作为物理载体,即Hyperledger Fabric网络包括的所有节点分布在K8S集群包括的各个主机上。如图1所示的K8S集群,主机12上包括节点14和节点15,主机13上包括节点16和节点17。为实现跨越主机的节点之间的通信以及本主机的节点之间的通信,各个主机上还设置了flannel插件。各个节点和flannel插件学习节点14、节点15、节点16和节点17的节点地址,例如,节点14的节点地址为IP14,节点15的节点地址为IP15,节点16的节点地址为IP16,节点17的节点地址为IP17。利用学习到的节点14、节点15、节点16和节点17的节点地址,实现主机12上包括节点和主机13上包括节点间的通信。
跨主机的节点间通信,以节点14与节点16之间的通信为例,通信过程如下:
节点14向节点16发送访问请求1,访问请求1的目的地址为IP16。主机12上的flannel插件1接收访问请求1,将访问请求1的目的地址IP16与转发表进行匹配,确定访问请求1对应的出端口1,将访问请求1从出端口1转发出去。主机13上的flannel插件2接收到访问请求1后,将访问请求1的目的地址IP16与转发表进行匹配,确定访问请求1对应的出端口2,将访问请求1从出端口2转发出去。节点16接收从出端口2转发来的访问请求1,并处理访问请求1。
同一主机的节点间通信,以节点14与节点15之间的通信为例,通信过程如下:
节点14与节点15通信:节点14向节点15发送访问请求2,访问请求2的目的地址为IP15。主机12上的flannel插件1接收访问请求2,将访问请求1的目的地址IP15与转发表进行匹配,确定访问请求2对应的出端口3,将访问请求2从出端口3转发出去。节点15接收从出端口3转发来的访问请求2,并处理访问请求2。
从上述通信过程可知,为实现K8S集群中不同主机或相同主机上的节点间的通信的前提,flannel插件需要学习到K8S集群中所有节点的节点地址。而对于flannel插件能够学习到K8S集群中所有节点的节点地址,K8S集群中集中管理设备起到了重要作用。即集中管理设备控制其他主机上的信息,如创建节点、删除节点、修改节点的地址信息等。
Hyperledger Fabric网络包括的所有节点以K8S集群作为物理载体,能够实现跨越主机的组网。但是,K8S集群中每个主机上的信息都受集中管理设备控制,而不受该主机自身的控制。区块链是一个分布式的共享账本和数据库。区块链的分布式理念:基于区块链能够解决信息不对称问题,实现多个主体之间的协作信任与一致行动。而K8S集群中每个主机上的信息都受集中管理设备控制,而不受该主机自身的控制,这与上述区块链的分布式理念相悖,无法真正的实现分布式记账功能。
为了在每个主机能够独立的控制自身信息的情况下,实现分布式记账功能,本申请实施例提供了一种基于超级账本Fabric网络的跨主机通信方法。该方法应用于超级账本Fabric网络的第一主机的虚拟通信设备,该虚拟通信设备可以为虚拟交换机或虚拟路由器。该虚拟通信设备可以利用flannel插件实现,可以通过软件程序实现。该虚拟通信设备可以集成在节点中,也可以作为一个独立的插件,位于主机中。
该基于超级账本Fabric网络的跨主机通信方法中,超级账本Fabric网络中每个主机上的节点可以学习到其他主机的主机地址。超级账本Fabric网络中第一主机上的节点与第二主机上的节点间通信时,第二主机上的节点发送目的地址为第一主机的第一主机地址的第一访问请求。第一主机的虚拟通信设备确定第一主机地址和第一访问请求的目的端口号对应的第一节点地址,将第一访问请求的目的地址修改为第一节点地址。此时,第一主机的虚拟通信设备根据修改后的第一访问请求的目的地址和目的端口号,可将修改后的第一访问请求发送给第一节点地址对应的节点,实现跨主机通信。
可见,本申请实施例中,超级账本Fabric网络中每个主机的虚拟通信设备只需要学习到其他主机的主机地址,就可以实现不同主机上的节点间通信。因此,不需要每个主机的虚拟通信设备学习到其他主机上所有节点的节点地址,也就不需要设置一台集中管理的主机,以协助每个主机学习到其他主机上所有节点的节点地址。进而本申请实施例中,每个主机能够独立的控制自身信息,结合本申请实施例中,超级账本Fabric网络多个主机,进而实现了分布式记账功能。
下面通过具体实施例,对本申请实施例提供的基于超级账本Fabric网络的跨主机通信方法进行详细说明。
参见图2,图2为本申请施例提供的基于超级账本Fabric网络的跨主机通信方法的一种流程示意图,该方法应用于超级账本Fabric网络的任一主机的虚拟通信设备。为便于描述,这里以应用于第一主机的虚拟通信设备为例进行说明,并不起限定作用。上述的基于超级账本Fabric网络的跨主机通信方法包括如下步骤。
步骤S21,接收超级账本Fabric网络的第二主机上的节点发送的第一访问请求,第一访问请求的目的地址为第一主机的第一主机地址。
本申请实施例中,第二主机为超级账本Fabric网络中除上述第一主机外的任一主机。主机地址为主机的地址,可以为IP(Internet Protocol,网络协议)地址。主机上的节点具有节点地址,节点地址可以为IP地址。节点地址或主机地址分配配置有相应的端口号。这里的端口号为逻辑端口号,例如,TCP(Transmission Control Protocol,传输控制协议)端口号。以192.168.0.1/10000为例,192.168.0.1为IP地址,10000为端口号。
当第二主机上的节点需要访问第一主机上的节点时,向第一主机发送访问请求,如第一访问请求。该第一访问请求的目的地址为第一主机的第一主机地址。第一主机的虚拟通信设备接收第二主机发送的第一访问请求。
具体的,当第二主机上的节点需要访问第一主机上的节点时,第二主机上的节点将第一访问请求发送给第二主机的虚拟通信设备。第二主机的虚拟通信设备将第一访问请求的目的地址和目的端口号与转发表进行匹配,进而基于匹配结果确定第一访问请求出端口,通过出端口将第一访问请求发送给第一主机的虚拟通信设备。
步骤S22,根据预先存储的主机地址、端口号和节点地址的对应关系,确定第一主机地址和第一访问请求的目的端口号对应的第一节点地址。
虚拟通信设备中预先存储了主机地址、端口号和节点地址的对应关系。第一主机的虚拟通信设备在预先存储的主机地址、端口号和节点地址的对应关系中查找包括第一访问请求的目的地址(即第一主机地址)和目的端口号的对应关系。若查找到对应关系,则该对应关系包括的节点地址即为第一节点地址。
一个实施例中,若未查找到包括第一访问请求的目的地址(即第一主机地址)和目的端口号的对应关系,则第一主机的虚拟通信设备可以丢弃该第一访问请求,并向第二主机的节点反馈访问失败的消息。以便于用户及时排查错误原因,保证超级账本Fabric网络的正常运行。
步骤S23,将第一访问请求的目的地址修改为第一节点地址。
本申请实施例中,第一主机的虚拟通信设备在确定第一节点地址,将第一访问请求的目的地址修改为第一节点地址。这相当于对第一访问请求进行了一次NAT(NetworkAddress Translation,网络地址转换)处理。
由于每个主机都是独立的控制自身信息,一个主机无法获取其他主机上节点的节点地址,但是可以获取到其他主机的主机地址。另外,一个主机是可以获知其自身的节点的节点地址和端口号。因此,本申请实施例中,第一主机的虚拟通信设备接收到第一访问请求,基于第一访问请求的目的地址(即第一主机地址)和目的端口号,即可确定出第二主机的节点实际需要访问的第一主机的节点。第一主机的虚拟通信设备将第一访问请求的目的地址修改为第一节点地址,可以保证后续将修改后的第一访问请求转发给相应的节点。
步骤S24,根据修改后的第一访问请求的目的地址和目的端口号,向第一节点地址对应的节点发送修改后的第一访问请求,以使第一节点地址对应的节点处理修改后的第一访问请求。
本申请实施例中,第一主机的虚拟通信设备将第一访问请求的目的地址修改为第一节点地址后,可以将修改后的第一访问请求的目的地址(即第一节点地址)和目的端口号与转发表进行匹配,进而基于匹配结果确定第一访问请求出端口,通过出端口将修改后的第一访问请求发送给第一节点地址对应的节点。第一节点地址对应的节点接收到修改后的第一访问请求后,对修改后的第一访问请求进行处理。
本申请实施例中,超级账本Fabric网络中每个主机的虚拟通信设备只需要学习到其他主机的主机地址,就可以实现不同主机上的节点间通信。因此,不需要每个主机的虚拟通信设备学习到其他主机上所有节点的节点地址,也就不需要设置一台集中管理的主机,以协助每个主机学习到其他主机上所有节点的节点地址。进而本申请实施例中,每个主机能够独立的控制自身信息,结合本申请实施例中,超级账本Fabric网络多个主机,进而实现了分布式记账功能。
在本申请的一个实施例中,本申请实施例还提供了一种基于超级账本Fabric网络的跨主机通信方法,参见图3,该方法可以包括如下步骤。
步骤S31,接收第一主机上的第一节点发送的第二访问请求,第二访问请求的目的地址为第一主机上第二节点的第二节点地址。
本申请实施例中,当第一主机上的两个节点需要相互访问时,例如,第一主机上的第一节点需要访问第一主机上的第二节点时,第一节点发送访问请求,如第二访问请求。该第二访问请求的目的地址为第一主机上第二节点的第二节点地址。第一主机的虚拟通信设备接收第一节点发送的第二访问请求。
步骤S32,根据第二访问请求的目的地址和目的端口号,向第二节点地址对应的第二节点发送第二访问请求,以使第二节点处理第二访问请求。
本申请实施例中,当第一主机的虚拟通信设备接收第一节点发送的第二访问请求时,将第二访问请求的目的地址(即第二节点地址)和目的端口号与转发表进行匹配,进而基于匹配结果确定第二访问请求出端口,通过出端口将第二访问请求发送给第二节点地址对应的第二节点。第二节点接收到第二访问请求后,对第二访问请求进行处理。
基于图3所示实施例,通过访问请求的目的地址和目的端口号,实现了同一主机上的节点间的通信。结合上述图2所示实施例,通过访问请求的目的地址和目的端口号,实现了不同主机上的节点间的通信。应用本申请实施例提供的技术方案,在每个主机能够独立的控制自身信息的情况下,实现了分布式记账功能。
在本申请的一个实施例中,在启动第一主机上的节点前,第一主机的虚拟通信设备将第一主机上每个节点的节点地址和内部端口号分别映射至第一主机地址和第一主机的外部端口号上,每个节点的内部端口号与该内部端口号所映射至外部端口号的一致。
上述内部端口号可以理解为节点与虚拟通信设备之间通信的逻辑端口号。上述外部端口可以理解为其他主机的虚拟通信设备与本主机的虚拟通信设备之间通信的逻辑端口号。
本申请实施例中,将节点地址和内部端口号映射至主机地址和主机的外部端口号上,保持内部端口号与该内部端口号所映射至外部端口号的一致。例如,192.168.0.1/10000,其中,192.168.0.1为节点地址,10000为内部端口号。主机的主机地址为10.10.10.1,则将192.168.0.1/10000映射至10.10.10.1/10000上。10.10.10.1/10000中,10.10.10.1为主机地址,10000为外部端口号。
本申请实施例中,保持内部端口号与该内部端口号所映射至外部端口号的一致,可以保证虚拟通信设备只需要修改访问请求的目的地址,就可以实现跨主机通信。
在本申请的一个实施例中,在将第一主机上每个节点的节点地址和内部端口号分别映射至第一主机地址和第一主机的外部端口号上之前,第一主机的虚拟通信设备还可以修改每一节点的内部端口号,保证第一主机上每两个节点的内部端口号均不相同。
修改节点的内部端口号的方式有多种。
一个方式,第一主机的虚拟通信设备为第一主机上每个节点分配不同的内部端口号。
一个示例中,第一主机的虚拟通信设备可以通过如下方式为第一主机上每个节点分配不同的内部端口号:从第一主机上多个节点中选择一个节点,作为候选节点;为候选节点分配一个未被其他节点占用的内部端口号;从第一主机上未被选择的节点中选择一个节点,作为候选节点,重新执行为候选节点分配一个未被其他节点占用的内部端口号的步骤,直至第一主机上不存在未被选择的节点。
另一个示例中,第一主机的虚拟通信设备可以通过如下方式为第一主机上每个节点分配不同的内部端口号:统计第一主机上节点的总数量;获取与第一主机上节点的总数量相同的数量个内部端口号,将获取的内部端口号依次分配给第一主机上的节点。
这种方式中,第一主机的虚拟通信设备可自动为第一主机上多个节点分配内部端口号,且保证第一主机上每两个节点的内部端口号均不相同。
另一个方式,第一主机的虚拟通信设备接收用户为第一主机上每个节点分配的不同的内部端口号,将接收的内部端口号分配给相应的节点。
这种方式中,用户可手动为第一主机上多个节点分配内部端口号,保证第一主机上每两个节点的内部端口号均不相同。
本申请实施例中,为第一主机上每个节点分配唯一的内部端口号,即节点与内部端口号一一对应,避免了因存在相同内部端口号的节点,导致部分节点无法被访问的问题。例如,第一主机上包括3个节点,这3个节点的内部端口号均为10000。则第一主机的虚拟通信设备接收到的访问请求的目的地址为第一主机地址,目的端口号为10000,第一主机的虚拟通信设备基于第一主机地址和目的端口号10000,无法确定第一节点地址为上述3个节点中的哪个节点的节点地址,导致3个节点中的部分节点无法被访问。
因此,应用本申请实施例提供的技术方案,保证了第一主机的虚拟通信设备根据访问请求包括的目的地址和端口号能够唯一的确定出一个节点,保证了其他主机能够访问本主机的所有节点。
下面结合图4a和4b所示的超级账本Fabric网络,对本申请实施例提供的基于超级账本Fabric网络的跨主机通信方法进行详细说明。图4a所示的超级账本Fabric网络包括3个主机,分别为主机41、主机42和主机43。
主机41的主机地址为10.10.10.1,主机41包括一个虚拟通信设备415和4个节点,分别为节点411、节点412、节点413和节点414。节点411的节点地址和内部端口号为192.168.0.1/1000,节点412的节点地址和内部端口号为192.168.0.2/1001,节点413的节点地址和内部端口号为192.168.0.3/1000,节点414的节点地址和内部端口号为192.168.0.4/1001。
主机42的主机地址为10.10.10.2,主机42包括一个虚拟通信设备425和4个节点,分别为节点421、节点422、节点423和节点424。节点421的节点地址和内部端口号为192.168.0.1/1000,节点422的节点地址和内部端口号为192.168.0.2/1001,节点423的节点地址和内部端口号为192.168.0.3/1000,节点424的节点地址和内部端口号为192.168.0.4/1001。
主机43的主机地址为10.10.10.3,主机43包括一个虚拟通信设备435和4个节点,分别为节点431、节点432、节点433和节点434。节点431的节点地址和内部端口号为192.168.0.1/1000,节点432的节点地址和内部端口号为192.168.0.2/1001,节点433的节点地址和内部端口号为192.168.0.3/1000,节点434的节点地址和内部端口号为192.168.0.4/1001。
用户分别为主机41、主机42和主机43上的各个节点分配内部端口后。同一主机上不存在相同内部端口号的节点,不同主机上节点的内部端口号可以相同,也可以不同。
具体如图4b所示,主机41、主机42和主机43上的各个节点的内部端口号修改后,节点411的内部端口号修改为1001,节点412的内部端口号修改为1002,节点413的内部端口号修改为1003,节点414的内部端口号修改为1004。
节点421的内部端口号修改为1001,节点422的内部端口号修改为1002,节点423的内部端口号修改为1003,节点424的内部端口号修改为1004。
节点431的内部端口号修改为1001,节点432的内部端口号修改为1002,节点433的内部端口号修改为1003,节点434的内部端口号修改为1004。
当主机41上的节点411需要访问主机42上的节点421时,节点411向主机41的虚拟通信设备415发送访问请求x1,访问请求x1的目的地址和目的端口号为10.10.10.2/1001。
虚拟通信设备415接收访问请求x1,将访问请求x1的目的地址和目的端口号10.10.10.2/1001与转发表进行匹配,确定访问请求x1对应出端口a1,通过出端口a1将访问请求x1转发出去。
主机42的虚拟通信设备425接收通过出端口a1发送的访问请求x1,根据预先存储的主机地址、端口号和节点地址的对应关系,确定访问请求x1的目的地址和目的端口号10.10.10.2/1001对应的节点地址192.168.0.1,将访问请求x1的目的地址修改该192.168.0.1,得到访问请求x10,将访问请求x10的目的地址和目的端口号10.10.10.2/1001与转发表进行匹配,确定访问请求x10对应出端口a2,通过出端口a2将访问请求x10转发出去。
节点421接收通过出端口a2发送的访问请求x10,处理访问请求x10。
当主机41上的节点411需要访问主机41上的节点412时,节点411向主机41的虚拟通信设备415发送访问请求x2,访问请求x2的目的地址和目的端口号为192.168.0.2/1002。
虚拟通信设备415接收访问请求x2,将访问请求x2的目的地址和目的端口号192.168.0.2/1002与转发表进行匹配,确定访问请求x2对应出端口a3,通过出端口a3将访问请求x2转发出去。
节点412接收通过出端口a3发送的访问请求x2,处理访问请求x2。
对于跨主机的节点间的通信,可参考上述节点411与节点421间的通信流程,对于同一主机的节点间的通信,可参考上述节点411与节点412间的通信流程。此处不再赘述。
本申请实施例中,对于XX/X,在“/”前的“XX”表示主机地址或节点地址,“/”后的“X”表示端口号。具体的,若“/”前的“XX”表示主机地址,则“/”后的“X”表示外部端口号;若“/”前的“XX”表示节点地址,则“/”后的“X”表示内部端口号。
应用本申请实施例提供的技术方案,在每个主机能够独立的控制自身信息的情况下,实现了分布式记账功能,符合区块链的分布式理念。
与上述基于超级账本Fabric网络的跨主机通信方法相对应,本申请实施例还提供了一种基于超级账本Fabric网络的跨主机通信装置,具体参考图5,图5为申请实施例提供的基于超级账本Fabric网络的跨主机通信装置的一种结构示意图。该装置应用于超级账本Fabric网络的第一主机的虚拟通信设备,包括:
接收模块51,用于接收超级账本Fabric网络的第二主机上的节点发送的第一访问请求,第一访问请求的目的地址为第一主机的第一主机地址;
确定模块52,用于根据预先存储的主机地址、端口号和节点地址的对应关系,确定第一主机地址和第一访问请求的目的端口号对应的第一节点地址;
修改模块53,用于将第一访问请求的目的地址修改为第一节点地址;
发送模块54,用于根据修改后的第一访问请求的目的地址和目的端口号,向第一节点地址对应的节点发送修改后的第一访问请求,以使第一节点地址对应的节点处理修改后的第一访问请求。
一个实施例中,接收模块51,还可以用于接收第一主机上的第一节点发送的第二访问请求,第二访问请求的目的地址为第一主机上第二节点的第二节点地址;
发送模块54,还可以用于根据第二访问请求的目的地址和目的端口号,向第二节点地址对应的第二节点发送第二访问请求,以使第二节点处理第二访问请求。
一个实施例中,上述基于超级账本Fabric网络的跨主机通信装置还可以包括:
映射模块,用于将第一主机上每个节点的节点地址和内部端口号分别映射至第一主机地址和第一主机的外部端口号上,每个节点的内部端口号与该内部端口号所映射至外部端口号的一致。
一个实施例中,上述基于超级账本Fabric网络的跨主机通信装置还可以包括:
分配模块,用于在将第一主机上每个节点的节点地址和内部端口号分别映射至第一主机地址和第一主机的外部端口号上之前,为第一主机上每个节点分配不同的内部端口号;或者
分配模块,用于在将第一主机上每个节点的节点地址和内部端口号分别映射至第一主机地址和第一主机的外部端口号上之前,接收用户为第一主机上每个节点分配的不同的内部端口号,将接收的内部端口号分配给相应的节点。
本申请实施例中,超级账本Fabric网络中每个主机的虚拟通信设备只需要学习到其他主机的主机地址,就可以实现不同主机上的节点间通信。因此,不需要每个主机的虚拟通信设备学习到其他主机上所有节点的节点地址,也就不需要设置一台集中管理的主机,以协助每个主机学习到其他主机上所有节点的节点地址。进而本申请实施例中,每个主机能够独立的控制自身信息,结合本申请实施例中,超级账本Fabric网络多个主机,进而实现了分布式记账功能。
与上述基于超级账本Fabric网络的跨主机通信方法相对应,本申请实施例还提供了一种主机,如图6所示,包括处理器61和机器可读存储介质62,机器可读存储介质62存储有能够被处理器61执行的机器可执行程序。处理器61被机器可执行程序促使实现上述图2-图4所示的任一方法步骤。
与上述基于超级账本Fabric网络的跨主机通信方法相对应,本申请实施例还提供了一种机器可读存储介质,机器可读存储介质存储有能够被处理器执行的机器可执行程序。处理器被机器可执行程序促使实现上述图2-图4所示的任一方法步骤。
上述机器可读存储介质可以包括RAM(Random Access Memory,随机存取存储器),也可以包括NVM(Non-Volatile Memory,非易失性存储器),例如至少一个磁盘存储器。另外,机器可读存储介质还可以是至少一个位于远离前述处理器的存储装置。
上述处理器可以是通用处理器,包括CPU(Central Processing Unit,中央处理器)等;还可以是专用处理器,包括,NP(Network Processor,网络处理器)、DSP(DigitalSignal Processing,数字信号处理器)等。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于基于超级账本Fabric网络的跨主机通信装置、主机、机器可读存储介质实施例而言,由于其基本相似于基于超级账本Fabric网络的跨主机通信方法实施例,所以描述的比较简单,相关之处参见基于超级账本Fabric网络的跨主机通信方法实施例的部分说明即可。
以上所述仅为本申请的较佳实施例,并非用于限定本申请的保护范围。凡在本申请的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本申请的保护范围内。
Claims (10)
1.一种基于超级账本Fabric网络的跨主机通信方法,其特征在于,应用于所述超级账本Fabric网络的第一主机的虚拟通信设备,所述方法包括:
接收所述超级账本Fabric网络的第二主机上的节点发送的第一访问请求,所述第一访问请求的目的地址为所述第一主机的第一主机地址;
根据预先存储的主机地址、端口号和节点地址的对应关系,确定所述第一主机地址和所述第一访问请求的目的端口号对应的第一节点地址;
将所述第一访问请求的目的地址修改为所述第一节点地址;
根据修改后的第一访问请求的目的地址和目的端口号,向所述第一节点地址对应的节点发送所述修改后的第一访问请求,以使所述第一节点地址对应的节点处理所述修改后的第一访问请求。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
接收所述第一主机上的第一节点发送的第二访问请求,所述第二访问请求的目的地址为所述第一主机上第二节点的第二节点地址;
根据所述第二访问请求的目的地址和目的端口号,向所述第二节点地址对应的所述第二节点发送所述第二访问请求,以使所述第二节点处理所述第二访问请求。
3.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
将所述第一主机上每个节点的节点地址和内部端口号分别映射至所述第一主机地址和所述第一主机的外部端口号上,每个节点的内部端口号与该内部端口号所映射至外部端口号的一致。
4.根据权利要求3所述的方法,其特征在于,在将所述第一主机上每个节点的节点地址和内部端口号分别映射至所述第一主机地址和所述第一主机的外部端口号上之前,所述方法还包括:
为所述第一主机上每个节点分配不同的内部端口号;或者
接收用户为所述第一主机上每个节点分配的不同的内部端口号,将接收的内部端口号分配给相应的节点。
5.一种基于超级账本Fabric网络的跨主机通信装置,其特征在于,应用于所述超级账本Fabric网络的第一主机的虚拟通信设备,所述装置包括:
接收模块,用于接收所述超级账本Fabric网络的第二主机上的节点发送的第一访问请求,所述第一访问请求的目的地址为所述第一主机的第一主机地址;
确定模块,用于根据预先存储的主机地址、端口号和节点地址的对应关系,确定所述第一主机地址和所述第一访问请求的目的端口号对应的第一节点地址;
修改模块,用于将所述第一访问请求的目的地址修改为所述第一节点地址;
发送模块,用于根据修改后的第一访问请求的目的地址和目的端口号,向所述第一节点地址对应的节点发送所述修改后的第一访问请求,以使所述第一节点地址对应的节点处理所述修改后的第一访问请求。
6.根据权利要求5所述的装置,其特征在于,
所述接收模块,还用于接收所述第一主机上的第一节点发送的第二访问请求,所述第二访问请求的目的地址为所述第一主机上第二节点的第二节点地址;
所述发送模块,还用于根据所述第二访问请求的目的地址和目的端口号,向所述第二节点地址对应的所述第二节点发送所述第二访问请求,以使所述第二节点处理所述第二访问请求。
7.根据权利要求5或6所述的装置,其特征在于,所述装置还包括:
映射模块,用于将所述第一主机上每个节点的节点地址和内部端口号分别映射至所述第一主机地址和所述第一主机的外部端口号上,每个节点的内部端口号与该内部端口号所映射至外部端口号的一致。
8.根据权利要求7所述的装置,其特征在于,所述装置还包括:
分配模块,用于在将所述第一主机上每个节点的节点地址和内部端口号分别映射至所述第一主机地址和所述第一主机的外部端口号上之前,为所述第一主机上每个节点分配不同的内部端口号;或者
所述分配模块,用于在将所述第一主机上每个节点的节点地址和内部端口号分别映射至所述第一主机地址和所述第一主机的外部端口号上之前,接收用户为所述第一主机上每个节点分配的不同的内部端口号,将接收的内部端口号分配给相应的节点。
9.一种主机,其特征在于,包括处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行程序,所述处理器被所述机器可执行程序促使:执行权利要求1-4任一所述的方法步骤。
10.一种机器可读存储介质,其特征在于,所述机器可读存储介质存储有能够被处理器执行的机器可执行程序,所述处理器被所述机器可执行程序促使:执行权利要求1-4任一所述的方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011193298.4A CN112383594B (zh) | 2020-10-30 | 2020-10-30 | 基于超级账本Fabric网络的跨主机通信方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011193298.4A CN112383594B (zh) | 2020-10-30 | 2020-10-30 | 基于超级账本Fabric网络的跨主机通信方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112383594A CN112383594A (zh) | 2021-02-19 |
CN112383594B true CN112383594B (zh) | 2022-04-22 |
Family
ID=74576473
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011193298.4A Active CN112383594B (zh) | 2020-10-30 | 2020-10-30 | 基于超级账本Fabric网络的跨主机通信方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112383594B (zh) |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105591820A (zh) * | 2015-12-31 | 2016-05-18 | 北京轻元科技有限公司 | 一种高可扩展的容器网络管理系统和方法 |
CN107070691A (zh) * | 2017-01-12 | 2017-08-18 | 阿里巴巴集团控股有限公司 | Docker容器的跨主机通信方法和系统 |
CN107105061A (zh) * | 2017-05-31 | 2017-08-29 | 北京中电普华信息技术有限公司 | 一种服务注册方法及装置 |
CN108337171A (zh) * | 2017-11-30 | 2018-07-27 | 中国电子科技集团公司电子科学研究院 | 与dtn网络兼容的ip分组转发方法、网络节点及存储介质 |
CN109862127A (zh) * | 2017-11-30 | 2019-06-07 | 华为技术有限公司 | 一种报文传输的方法及相关装置 |
CN110297653A (zh) * | 2019-07-02 | 2019-10-01 | 浪潮云信息技术有限公司 | 一种容器服务升级的方法 |
CN110557443A (zh) * | 2019-08-20 | 2019-12-10 | 武汉绿色网络信息服务有限责任公司 | 一种跨网络通信的方法和地址转换设备 |
CN110933015A (zh) * | 2018-09-19 | 2020-03-27 | 阿里巴巴集团控股有限公司 | 数据传输方法、装置和系统 |
CN111343004A (zh) * | 2020-02-11 | 2020-06-26 | 苏宁金融科技(南京)有限公司 | 基于Docker的Fabric网络远程部署方法、装置和系统 |
CN111460460A (zh) * | 2020-04-02 | 2020-07-28 | 北京金山云网络技术有限公司 | 任务访问方法、装置、代理服务器及机器可读存储介质 |
CN111835645A (zh) * | 2016-05-23 | 2020-10-27 | 瞻博网络公司 | 用于跨网络内的多个接口代理子网内流量的方法、系统和装置 |
-
2020
- 2020-10-30 CN CN202011193298.4A patent/CN112383594B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105591820A (zh) * | 2015-12-31 | 2016-05-18 | 北京轻元科技有限公司 | 一种高可扩展的容器网络管理系统和方法 |
CN111835645A (zh) * | 2016-05-23 | 2020-10-27 | 瞻博网络公司 | 用于跨网络内的多个接口代理子网内流量的方法、系统和装置 |
CN107070691A (zh) * | 2017-01-12 | 2017-08-18 | 阿里巴巴集团控股有限公司 | Docker容器的跨主机通信方法和系统 |
CN107105061A (zh) * | 2017-05-31 | 2017-08-29 | 北京中电普华信息技术有限公司 | 一种服务注册方法及装置 |
CN108337171A (zh) * | 2017-11-30 | 2018-07-27 | 中国电子科技集团公司电子科学研究院 | 与dtn网络兼容的ip分组转发方法、网络节点及存储介质 |
CN109862127A (zh) * | 2017-11-30 | 2019-06-07 | 华为技术有限公司 | 一种报文传输的方法及相关装置 |
CN110933015A (zh) * | 2018-09-19 | 2020-03-27 | 阿里巴巴集团控股有限公司 | 数据传输方法、装置和系统 |
CN110297653A (zh) * | 2019-07-02 | 2019-10-01 | 浪潮云信息技术有限公司 | 一种容器服务升级的方法 |
CN110557443A (zh) * | 2019-08-20 | 2019-12-10 | 武汉绿色网络信息服务有限责任公司 | 一种跨网络通信的方法和地址转换设备 |
CN111343004A (zh) * | 2020-02-11 | 2020-06-26 | 苏宁金融科技(南京)有限公司 | 基于Docker的Fabric网络远程部署方法、装置和系统 |
CN111460460A (zh) * | 2020-04-02 | 2020-07-28 | 北京金山云网络技术有限公司 | 任务访问方法、装置、代理服务器及机器可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112383594A (zh) | 2021-02-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109032755B (zh) | 一种容器服务托管系统及提供容器服务的方法 | |
JP7085565B2 (ja) | 分離されたネットワークスタックにわたるインテリジェントなスレッド管理 | |
US7346909B1 (en) | Network-like communication and stack synchronization for different virtual machines on the same physical device | |
CN105577723B (zh) | 虚拟化网络中实现负载分担的方法和装置 | |
TW201914271A (zh) | 區域互聯控制器、區域互聯控制方法以及電腦儲存媒體 | |
CN113810230B (zh) | 对容器集群中的容器进行网络配置的方法、装置及系统 | |
CN109981493B (zh) | 一种用于配置虚拟机网络的方法和装置 | |
JP2005050165A (ja) | 分散ストレージ装置のファイル管理方法及び分散ストレージシステム | |
US11943319B2 (en) | Systems and methods for isolating applications associated with multiple tenants within a computing platform | |
CN114237812A (zh) | 容器网络管理系统 | |
CN111970337B (zh) | 跨云环境下的p2p网络通信构建方法、系统、介质及终端 | |
CN106453681A (zh) | 一种ip地址的分配方法和装置 | |
JP2010531602A (ja) | リアルタイム通信ネットワークにおける診断データの通信のための方法と装置 | |
CN115314353B (zh) | 一种基于kubernetes实现单pod多网卡的装置和方法 | |
CN111031129B (zh) | 访问请求处理方法、处理装置、电子设备及存储介质 | |
CN106027356A (zh) | 一种隧道标识的转换方法及装置 | |
CN106302861B (zh) | 一种地址分配方法及装置 | |
CN114448937A (zh) | 访问请求的响应方法和装置、存储介质 | |
CN112383594B (zh) | 基于超级账本Fabric网络的跨主机通信方法及装置 | |
US8972604B1 (en) | Network address retention and assignment | |
US11997067B2 (en) | Managing internet protocol (IP) address allocation to tenants in a computing environment | |
CN114640678A (zh) | 基于SR-IOV的Pod管理方法、设备及介质 | |
JP5911620B2 (ja) | 仮想ネットワーク管理サーバ及びエッジルータ | |
CN109525685B (zh) | 一种ip地址分配方法及系统 | |
KR102097102B1 (ko) | 차세대 주소 할당 정보 동기화 시스템 및 그 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20230625 Address after: 310052 11th Floor, 466 Changhe Road, Binjiang District, Hangzhou City, Zhejiang Province Patentee after: H3C INFORMATION TECHNOLOGY Co.,Ltd. Address before: 310052 Changhe Road, Binjiang District, Hangzhou, Zhejiang Province, No. 466 Patentee before: NEW H3C TECHNOLOGIES Co.,Ltd. |