CN117478632A - 报文传输方法、装置及系统 - Google Patents
报文传输方法、装置及系统 Download PDFInfo
- Publication number
- CN117478632A CN117478632A CN202211111446.2A CN202211111446A CN117478632A CN 117478632 A CN117478632 A CN 117478632A CN 202211111446 A CN202211111446 A CN 202211111446A CN 117478632 A CN117478632 A CN 117478632A
- Authority
- CN
- China
- Prior art keywords
- address
- message
- site
- intranet
- network address
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 168
- 230000005540 biological transmission Effects 0.000 title claims abstract description 53
- 238000013507 mapping Methods 0.000 claims abstract description 522
- 238000012545 processing Methods 0.000 claims abstract description 37
- 238000006243 chemical reaction Methods 0.000 claims abstract description 23
- 238000004891 communication Methods 0.000 claims description 37
- 238000004590 computer program Methods 0.000 claims description 7
- 238000013519 translation Methods 0.000 claims description 4
- 101000652292 Homo sapiens Serotonin N-acetyltransferase Proteins 0.000 abstract description 101
- 102100030547 Serotonin N-acetyltransferase Human genes 0.000 abstract description 101
- 238000011330 nucleic acid test Methods 0.000 description 54
- 238000005516 engineering process Methods 0.000 description 32
- 238000010586 diagram Methods 0.000 description 22
- 230000008569 process Effects 0.000 description 16
- 230000015654 memory Effects 0.000 description 14
- 238000007726 management method Methods 0.000 description 12
- 230000009471 action Effects 0.000 description 8
- 230000006870 function Effects 0.000 description 5
- 238000005538 encapsulation Methods 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000006855 networking Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/09—Mapping addresses
- H04L61/25—Mapping addresses of the same type
- H04L61/2503—Translation of Internet protocol [IP] addresses
- H04L61/2521—Translation architectures other than single NAT servers
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Small-Scale Networks (AREA)
Abstract
本申请公开了一种报文传输方法、装置及系统,属于网络技术领域。一个站点的边缘设备接收到来自本地站点的主机的报文之后,对该报文分别进行SNAT和DNAT,以将该报文的源IP地址和目的IP地址分别由内网地址转换为外网地址,再向远端站点的边缘设备发送经过网络地址转换的报文。边缘设备无需对来自本地站点的报文进行额外封装,边缘设备的处理开销较小且报文传输过程中的网络开销较小。另外,本地站点的主机向远端站点的主机发送报文时,直接使用远端主机的内网地址作为报文的目的IP地址,无需在主机中配置其它站点的主机的内网地址映射之后的外网地址,主机的配置管理复杂度较低。
Description
本申请要求于2022年07月21日提交的申请号为202210864409.2,发明名称为“一种使用NAT降低传输开销的方法和设备”的中国专利申请的优先权,其全部内容通过引用结合在本申请中。
技术领域
本申请涉及网络技术领域,特别涉及一种报文传输方法、装置及系统。
背景技术
目前,一个站点(site)的主机要向另一个站点的主机发送报文时,网络设备可以采用虚拟专用网络(virtual private network,VPN)技术转发报文,或者也可以采用网络地址转换(network address translation,NAT)技术转发报文。
网络设备采用VPN技术转发报文的过程包括:与发送侧主机相连的网络设备对发送侧主机发送的报文进行封装,然后将封装后的报文通过VPN隧道发送给与接收侧主机相连的网络设备;与接收侧主机相连的网络设备对接收到的报文进行解封装后再发送给接收侧主机。由于网络设备之间传输的报文是经过额外封装的报文,经过额外封装的报文相较于发送侧主机发出的报文的数据量更大,因此报文在网络设备之间传输时会产生较大的网络开销。
网络设备采用NAT技术转发报文的过程包括:与发送侧主机相连的网络设备对发送侧主机发送的报文进行源网络地址转换(source NAT,SNAT),将报文中的源互联网协议(Internet Protocol,IP)地址由发送侧主机的内网地址转换为外网地址,然后将经过SNAT的报文通过外部网络发送给与接收侧主机相连的网络设备;与接收侧主机相连的网络设备对接收到的报文进行目的网络地址转换(destination NAT,DNAT),将报文中的目的IP地址由外网地址转换为接收侧主机的内网地址,再将经过DNAT的报文发送给接收侧主机。由于发送侧主机需要采用接收侧主机的内网地址映射之后的外网地址作为报文的目的IP地址,因此内网主机上需要配置其它内网主机的内网地址映射之后的外网地址,导致内网主机的配置管理较为复杂。
发明内容
本申请提供了一种报文传输方法、装置及系统。
第一方面,提供了一种报文传输方法。该方法包括:第一设备接收来自第一主机的第一报文。第一报文的源IP地址为第一主机的第一内网地址。第一报文的目的IP地址为第二主机的第二内网地址。第一主机位于第一站点,第二主机位于第二站点。第一设备为第一站点的边缘设备。第一设备根据网络地址映射关系,对第一报文分别进行SNAT和DNAT,得到第二报文。该网络地址映射关系包括多个站点的内网地址与外网地址的对应关系。该多个站点包括第一站点和第二站点。第二报文的源IP地址为网络地址映射关系中与第一内网地址对应的第一外网地址。第二报文的目的IP地址为网络地址映射关系中与第二内网地址对应的第二外网地址。第一设备向第二设备发送第二报文,第二设备为第二站点的边缘设备。
其中,站点的内网地址指的是该站点内主机的IP地址。站点的外网地址指的是该站点用于在外部网络中通信的IP地址。例如,站点的外网地址可以是该站点的边缘设备的物理接口的IP地址或逻辑接口的IP地址。或者,站点的外网地址还可以是没有绑定任何物理接口或逻辑接口的地址。第一设备向第二设备发送第二报文,可以是第一设备直接向第二设备发送第二报文,或者可以是第一设备通过其它设备间接向第二设备发送第二报文。
本申请中,本地站点的主机要向远端站点的主机发送报文时,可以使用本地主机自身的内网地址作为报文的源IP地址,并使用远端主机的内网地址作为报文的目的IP地址,然后由本地站点的边缘设备根据网络地址映射关系,对报文分别进行SNAT和DNAT,以将报文的源IP地址和目的IP地址分别由内网地址转换为对应的外网地址,使得报文能够在本地站点与远端站点之间的外部网络中传输。一方面,本地站点的边缘设备无需对报文进行额外封装,与现有VPN技术相比,减小了报文传输过程中的网络开销以及边缘设备的处理开销。另一方面,本地站点的主机向远端站点的主机发送报文时,可以直接使用远端主机的内网地址作为报文的目的IP地址,因此无需在主机中配置其它站点的主机的内网地址映射之后的外网地址,与现有NAT技术相比,降低了主机的配置管理复杂度。
可选地,第一主机和第二主机属于同一私有网络。该私有网络可以采用VPN实现。
可选地,第一设备接收来自第三设备的第三报文。第三报文的源IP地址为第三站点的第三外网地址。第三报文的目的IP地址为第一站点的第四外网地址。第三站点为多个站点中除第一站点以外的任一站点。第三设备为第三站点的边缘设备。第一设备根据网络地址映射关系,对第三报文分别进行SNAT和DNAT,得到第四报文。第四报文的源IP地址为网络地址映射关系中与第三外网地址对应的第三内网地址。第四报文的目的IP地址为网络地址映射关系中与第四外网地址对应的第四内网地址。第一设备向位于第一站点的第三主机发送第四报文,第三主机的IP地址为第四内网地址。
本申请中,本地站点的边缘设备接收到来自远端站点的报文后,根据网络地址映射关系,对报文分别进行SNAT和DNAT,以将报文的源IP地址和目的IP地址分别由外网地址转换为远端站点的主机发出报文时使用的内网地址,然后将报文发送至本地站点中对应的主机。这种方案下,本地站点中的主机接收到的报文的源IP地址和目的IP地址与远端站点中的主机发出的报文的源IP地址和目的IP地址分别一致。一方面,本地站点的边缘设备无需对报文进行解封装,与现有VPN技术相比,减小了报文传输过程中的网络开销以及边缘设备的处理开销。另一方面,本地站点的主机接收到的报文的源IP地址为远端站点的主机的内网地址,因此无需在主机中配置其它站点的主机的内网地址映射之后的外网地址,主机也能知晓报文的真实来源,与现有NAT技术相比,降低了主机的配置管理复杂度。
可选地,多个站点部署有多个VPN,网络地址映射关系包括内网地址、外网地址和VPN标识的对应关系,VPN标识用于指示对应的内网地址所属的VPN。
由于不同VPN的内网地址可以有重叠,而同一VPN中不同主机的内网地址不同,因此结合采用VPN标识和内网地址可以唯一标识一个主机。
可选地,网络地址映射关系包括内网地址块、外网地址块和VPN标识的对应关系,VPN标识用于指示对应的内网地址块所属的VPN。
其中,内网地址块指内网地址集合,通常包括多个内网地址。外网地址块指外网地址集合,通常包括多个外网地址。
一个内网地址块可以包括同一VPN在站点中部署的多个主机的IP地址。相应地,外网地址块包括与该多个主机的IP地址分别对应的多个外网地址。这种情况下,网络地址映射关系可理解为由多组内网地址与外网地址的对应关系构成的集合。每组内网地址与外网地址的对应关系包括一个内网地址以及一个外网地址。
或者,内网地址块也可以是一个VPN在站点中使用的内网网段,例如采用掩码来表示。相应地,外网地址块包括与该内网网段相对应的外网网段,例如采用掩码来表示。当边缘设备接收到本地站点的主机向远端站点的主机发送的报文时,边缘设备可以根据该报文的源IP地址匹配到本地主机所在VPN的内网网段,再结合该源IP地址以及该内网网段对应的外网网段就能得到该源IP地址(即本地主机的内网地址)对应的外网地址。边缘设备可以根据该报文的目的IP地址匹配到远端主机所在VPN的内网网段,再结合该目的IP地址以及该内网网段对应的外网网段就能得到该目的IP地址(即远端主机的内网地址)对应的外网地址。同理,当边缘设备接收到远端站点的主机向本地站点的主机发送的报文时,边缘设备可以根据该报文的源IP地址匹配到外网网段,再结合该源IP地址以及该外网网段对应的内网网段就能得到该源IP地址(外网地址)在远端站点对应的内网地址(即远端主机的内网地址)。边缘设备可以根据该报文的目的IP地址匹配到外网网段,再结合该目的IP地址以及该外网网段对应的内网网段就能得到该目的IP地址(外网地址)在本地站点对应的内网地址(即本地主机的内网地址)。这种情况下,虽然网络地址映射关系未显式地包含站点内主机的内网地址与外网地址的对应关系,但是边缘设备能够结合主机的内网地址以及网络地址映射关系得到该主机的内网地址对应的外网地址,也能够结合外网地址以及网络地址映射关系得到该外网地址对应的主机的内网地址,因此网络地址映射关系实际上隐式地包含了站点内主机的内网地址与外网地址的对应关系。
可选地,内网地址块和外网地址块的对应关系采用掩码的方式表示。
本申请中,内网地址块和外网地址块的对应关系采用掩码的方式表示,与采用单个网络地址的对应关系表示的方式相比,一方面降低了网络地址映射关系的配置复杂度,另一方面相对于现有的NAT映射表中为单个网络地址分别映射,可以减少网络地址映射关系在边缘设备中所占用的存储空间。
可选地,第一设备还获取第一站点的内网地址与外网地址的对应关系。第一设备向第二设备发送第一消息,第一消息包括第一站点的内网地址与外网地址的对应关系。
本申请中,一个站点的边缘设备可以通过消息发布的方式与其它站点的边缘设备共享本地站点的内网地址与外网地址的对应关系。这样只需在每个站点的边缘设备上配置本地站点的内网地址与外网地址的对应关系即可,进一步通过消息发布的方式保持多个站点的边缘设备上的网络地址映射关系的一致性和完整性,边缘设备的配置复杂度较低。
可选地,第一设备获取第一站点的内网地址与外网地址的对应关系的一种实现方式,包括:第一设备获取第一站点的多个内网地址。第一设备根据外网地址空间,为第一站点的多个内网地址分配对应的外网地址,得到第一站点的内网地址与外网地址的对应关系。
本申请中,边缘设备可以自动生成本地站点的内网地址与外网地址的对应关系,或者,边缘设备中本地站点的内网地址与外网地址的对应关系也可以由人工进行配置。
可选地,外网地址空间包括以下至少一种:第一设备的物理接口的外网地址,第一设备的逻辑接口的外网地址,第一设备的基于IPv6数据面的段路由位置标识所代表的IPv6地址块中的地址。
可选地,第一设备向第二设备发送第一消息的一种实现方式,包括:第一设备通过网络控制器向第二设备发送第一消息。
本申请中,一个站点的边缘设备通过网络控制器向其它站点的边缘设备发布包含本地站点的内网地址与外网地址的对应关系的消息,无需在多个站点的边缘设备之间建立全连接的通信关系,简化了组网复杂度,从而降低了系统管理难度。另外可以高效率的进行信息发布以保持各个站点的边缘设备上的网络地址映射关系的一致性。
可选地,第一消息为边界网关协议(Border Gateway Protocol,BGP)消息。或者,第一消息还可以是基于其它协议实现的消息,比如第一消息可以是路径计算单元协议(Path Computation Element Protocol,PCEP)消息。第一消息也可以是采用自定义格式的消息。
可选地,第一设备还接收第二设备发送的第二消息,第二消息包括第二站点的内网地址与外网地址的对应关系。
可选地,网络地址映射关系保存在第一设备的路由信息表和/或转发信息表中。也即是,网络地址映射关系可以只保存在第一设备的路由信息表中,或者也可以只保存在第一设备的转发信息表,或者也可以同时保存在第一设备的路由信息表和转发信息表中。这样边缘设备可以在数据面根据网络地址映射关系实现对报文的转发,从而提高报文转发效率。
可选地,网络地址映射关系包括本地映射关系和远端映射关系。本地映射关系包括第一站点的内网地址与外网地址的对应关系。远端映射关系包括多个站点中除第一站点以外的其它站点的内网地址与外网地址的对应关系。第一设备根据网络地址映射关系,对第一报文分别进行SNAT和DNAT的一种实现方式,包括:第一设备根据本地映射关系对第一报文进行SNAT,以将第一报文的源IP地址由第一内网地址转换为第一外网地址,以及,根据远端映射关系对第一报文进行DNAT,以将第一报文的目的IP地址由第二内网地址转换为第二外网地址。
本申请中,边缘设备可以对本地映射关系和远端映射关系进行区分,例如,边缘设备可以采用两张表分别存储本地映射关系和远端映射关系,或者,边缘设备也可以采用不同的标识来区分本地映射关系和远端映射关系。这样边缘设备接收到本地站点内的主机发送的报文时,可以基于本地映射关系对报文进行SNAT,并基于远端映射关系对报文进行DNAT。同理,边缘设备接收到远端站点内的主机发送的报文时,可以基于远端映射关系对报文进行SNAT,并基于本地映射关系对报文进行DNAT。边缘设备在对报文进行NAT时,无需遍历所有网络地址映射关系,从而可以提高报文转发效率。
可选地,内网地址为IPv4地址或IPv6地址,外网地址为IPv6地址。当然,本申请也不排除外网地址采用IPv4地址的可能性。
第二方面,提供了一种报文传输方法。该方法包括:第一设备接收来自第二设备的第一报文。第一报文的源IP地址为第一站点的第一外网地址。第一报文的目的IP地址为第二站点的第二外网地址。第一设备为第二站点的边缘设备。第二设备为第一站点的边缘设备。第一设备根据网络地址映射关系,对第一报文分别进行SNAT和DNAT,得到第二报文。该网络地址映射关系包括多个站点的内网地址与外网地址的对应关系。该多个站点包括第一站点和第二站点。第二报文的源IP地址为网络地址映射关系中与第一外网地址对应的第一内网地址。第二报文的目的IP地址为网络地址映射关系中与第二外网地址对应的第二内网地址。第一设备向位于第二站点的第一主机发送第二报文,第一主机的IP地址为第二内网地址。
本申请中,本地站点的边缘设备接收到来自远端站点的报文后,根据网络地址映射关系,对报文分别进行SNAT和DNAT,以将报文的源IP地址和目的IP地址分别由外网地址转换为远端站点的主机发出报文时使用的内网地址,然后将报文发送至本地站点中对应的主机。这种方案下,本地站点中的主机接收到的报文的源IP地址和目的IP地址与远端站点中的主机发出的报文的源IP地址和目的IP地址分别一致。一方面,本地站点的边缘设备无需对报文进行解封装,与现有VPN技术相比,减小了报文传输过程中的网络开销以及边缘设备的处理开销。另一方面,本地站点的主机接收到的报文的源IP地址为远端站点的主机的内网地址,因此无需在主机中配置其它站点的主机的内网地址映射之后的外网地址,主机也能知晓报文的真实来源,与现有NAT技术相比,降低了主机的配置管理复杂度。
可选地,第一设备接收来自第二主机的第三报文。第三报文的源IP地址为第二主机的第三内网地址。第三报文的目的IP地址为第三主机的第四内网地址。第二主机位于第二站点。第三主机位于第三站点。第三站点为多个站点中除第二站点以外的任一站点。第一设备根据网络地址映射关系,对第三报文分别进行SNAT和DNAT,得到第四报文。第四报文的源IP地址为网络地址映射关系中与第三内网地址对应的第三外网地址。第四报文的目的地址为网络地址映射关系中与第四内网地址对应的第四外网地址。第一设备向第三设备发送第四报文,第三设备为第三站点的边缘设备。
本申请中,本地站点的主机要向远端站点的主机发送报文时,可以使用本地主机自身的内网地址作为报文的源IP地址,并使用远端主机的内网地址作为报文的目的IP地址,然后由本地站点的边缘设备根据网络地址映射关系,对报文分别进行SNAT和DNAT,以将报文的源IP地址和目的IP地址分别由内网地址转换为对应的外网地址,使得报文能够在本地站点与远端站点之间的外部网络中传输。一方面,本地站点的边缘设备无需对报文进行额外封装,与现有VPN技术相比,减小了报文传输过程中的网络开销以及边缘设备的处理开销。另一方面,本地站点的主机向远端站点的主机发送报文时,可以直接使用远端主机的内网地址作为报文的目的IP地址,因此无需在主机中配置其它站点的主机的内网地址映射之后的外网地址,与现有NAT技术相比,降低了主机的配置管理复杂度。
可选地,多个站点部署有多个VPN,网络地址映射关系包括内网地址、外网地址和VPN标识的对应关系,VPN标识用于指示对应的内网地址所属的VPN。
可选地,网络地址映射关系包括内网地址块、外网地址块和VPN标识的对应关系,VPN标识用于指示对应的内网地址块所属的VPN。
可选地,内网地址块和外网地址块的对应关系采用掩码的方式表示。
可选地,第一设备还获取第二站点的内网地址与外网地址的对应关系。第一设备向第二设备发送第一消息,第一消息包括第二站点的内网地址与外网地址的对应关系。
可选地,第一设备获取第二站点的内网地址与外网地址的对应关系的一种实现方式,包括:第一设备获取第二站点的多个内网地址。第一设备根据外网地址空间,为第二站点的多个内网地址分配对应的外网地址,得到第一站点的内网地址与外网地址的对应关系。
可选地,外网地址空间包括以下至少一种:第一设备的物理接口的外网地址,第一设备的逻辑接口的外网地址,第一设备的基于IPv6数据面的段路由位置标识所代表的IPv6地址块中的地址。
可选地,第一设备向第二设备发送第一消息的一种实现方式,包括:第一设备通过网络控制器向第二设备发送第一消息。
可选地,第一消息为BGP消息。
可选地,第一设备还接收第二设备发送的第二消息,第二消息包括第一站点的内网地址与外网地址的对应关系。
可选地,网络地址映射关系保存在第一设备的路由信息表和/或转发信息表中。
可选地,网络地址映射关系包括本地映射关系和远端映射关系。本地映射关系包括第二站点的内网地址与外网地址的对应关系。远端映射关系包括多个站点中除第二站点以外的其它站点的内网地址与外网地址的对应关系。第一设备根据网络地址映射关系,对第一报文分别进行源网络地址转换SNAT和目的网络地址转换DNAT的一种实现方式,包括:第一设备根据本地映射关系对第一报文进行DNAT,以将第一报文的目的IP地址由第二外网地址转换为第二内网地址,以及,根据远端映射关系对第一报文进行SNAT,以将第一报文的源IP地址由第一外网地址转换为第一内网地址。
可选地,内网地址为IPv4地址或IPv6地址,外网地址为IPv6地址。
第三方面,提供了一种报文传输方法。该方法包括:第一设备获取第一站点的内网地址与外网地址的对应关系。第一设备为第一站点的边缘设备。第一站点的内网地址与外网地址的对应关系用于第一设备对从第一站点发往其它站点的报文进行SNAT,以及,对从其它站点发往第一站点的报文进行DNAT。第一设备向第二设备发送第一消息,第一消息包括第一站点的内网地址与外网地址的对应关系。第二设备为第二站点的边缘设备。第一站点的内网地址与外网地址的对应关系用于第二设备对从第一站点发往第二站点的报文进行SNAT,以及,对从第二站点发往第一站点的报文进行DNAT。
本申请中,一个站点的边缘设备可以通过消息发布的方式与其它站点的边缘设备共享本地站点的内网地址与外网地址的对应关系。这样只需在每个站点的边缘设备上配置本地站点的内网地址与外网地址的对应关系即可,进一步通过消息发布的方式保持多个站点的边缘设备上的网络地址映射关系的一致性和完整性,边缘设备的配置复杂度较低。
可选地,第一设备还接收第二设备发送的第二消息。第二消息包括第二站点的内网地址与外网地址的对应关系。第二站点的内网地址与外网地址的对应关系用于第一设备对从第二站点发往第一站点的报文进行SNAT,以及,对从第一站点发往第二站点的报文进行DNAT。
可选地,第一设备获取第一站点的内网地址与外网地址的对应关系的一种实现方式,包括:第一设备获取第一站点的多个内网地址。第一设备根据外网地址空间,为第一站点的多个内网地址分配对应的外网地址,得到第一站点的内网地址与外网地址的对应关系。
可选地,外网地址空间包括以下至少一种:第一设备的物理接口的外网地址,第一设备的逻辑接口的外网地址,第一设备的基于IPv6数据面的段路由位置标识所代表的IPv6地址块中的地址。
可选地,第一设备向第二设备发送第一消息的一种实现方式,包括:第一设备通过网络控制器向第二设备发送第一消息。
可选地,第一消息为BGP消息。
可选地,第一设备在第一设备的路由信息表和/或转发信息表中保存第一站点的内网地址与外网地址的对应关系。
第四方面,提供了一种第一设备。第一设备包括多个功能模块,多个功能模块相互作用,实现如第一方面或第一方面任一可能的实现方式的方法。多个功能模块包括第一收发模块、处理模块和第二收发模块。可选地,多个功能模块还包括获取模块。
第一收发模块,用于接收来自第一主机的第一报文,第一报文的源IP地址为第一主机的第一内网地址,第一报文的目的IP地址为第二主机的第二内网地址,第一主机位于第一站点,第二主机位于第二站点,第一设备为第一站点的边缘设备。处理模块,用于根据网络地址映射关系,对第一报文分别进行SNAT和DNAT,得到第二报文,网络地址映射关系包括多个站点的内网地址与外网地址的对应关系,多个站点包括第一站点和第二站点,第二报文的源IP地址为网络地址映射关系中与第一内网地址对应的第一外网地址,第二报文的目的IP地址为网络地址映射关系中与第二内网地址对应的第二外网地址。第二收发模块,用于向第二设备发送第二报文,第二设备为第二站点的边缘设备。
可选地,第二收发模块,还用于接收来自第三设备的第三报文,第三报文的源IP地址为第三站点的第三外网地址,第三报文的目的IP地址为第一站点的第四外网地址,第三站点为多个站点中除第一站点以外的任一站点,第三设备为第三站点的边缘设备。处理模块,还用于根据网络地址映射关系,对第三报文分别进行SNAT和DNAT,得到第四报文,第四报文的源IP地址为网络地址映射关系中与第三外网地址对应的第三内网地址,第四报文的目的IP地址为网络地址映射关系中与第四外网地址对应的第四内网地址。第一收发模块,还用于向位于第一站点的第三主机发送第四报文,第三主机的IP地址为第四内网地址。
可选地,多个站点部署有多个VPN,网络地址映射关系包括内网地址、外网地址和VPN标识的对应关系,VPN标识用于指示对应的内网地址所属的VPN。
可选地,网络地址映射关系包括内网地址块、外网地址块和VPN标识的对应关系,VPN标识用于指示对应的内网地址块所属的VPN。
可选地,内网地址块和外网地址块的对应关系采用掩码的方式表示。
可选地,获取模块,用于获取第一站点的内网地址与外网地址的对应关系。第二收发模块,还用于向第二设备发送第一消息,第一消息包括第一站点的内网地址与外网地址的对应关系。
可选地,获取模块,用于:获取第一站点的多个内网地址;根据外网地址空间,为多个内网地址分配对应的外网地址,得到第一站点的内网地址与外网地址的对应关系。
可选地,外网地址空间包括以下至少一种:第一设备的物理接口的外网地址,第一设备的逻辑接口的外网地址,第一设备的基于IPv6数据面的段路由位置标识所代表的IPv6地址块中的地址。
可选地,第二收发模块,用于通过网络控制器向第二设备发送第一消息。
可选地,第一消息为BGP消息。
可选地,第二收发模块,还用于接收第二设备发送的第二消息,第二消息包括第二站点的内网地址与外网地址的对应关系。
可选地,网络地址映射关系保存在第一设备的路由信息表和/或转发信息表中。
可选地,网络地址映射关系包括本地映射关系和远端映射关系,本地映射关系包括第一站点的内网地址与外网地址的对应关系,远端映射关系包括多个站点中除第一站点以外的其它站点的内网地址与外网地址的对应关系,处理模块,用于:根据本地映射关系对第一报文进行SNAT,以将第一报文的源IP地址由第一内网地址转换为第一外网地址,以及,根据远端映射关系对第一报文进行DNAT,以将第一报文的目的IP地址由第二内网地址转换为第二外网地址。
可选地,内网地址为IPv4地址或IPv6地址,外网地址为IPv6地址。
第五方面,提供了一种第一设备。第一设备包括多个功能模块,多个功能模块相互作用,实现如第二方面或第二方面任一可能的实现方式的方法。多个功能模块包括第一收发模块、处理模块和第二收发模块。可选地,多个功能模块还包括获取模块。
第一收发模块,用于接收来自第二设备的第一报文,第一报文的源IP地址为第一站点的第一外网地址,第一报文的目的IP地址为第二站点的第二外网地址,第一设备为第二站点的边缘设备,第二设备为第一站点的边缘设备。处理模块,用于根据网络地址映射关系,对第一报文分别进行SNAT和DNAT,得到第二报文,网络地址映射关系包括多个站点的内网地址与外网地址的对应关系,多个站点包括第一站点和第二站点,第二报文的源IP地址为网络地址映射关系中与第一外网地址对应的第一内网地址,第二报文的目的IP地址为网络地址映射关系中与第二外网地址对应的第二内网地址。第二收发模块,用于向位于第二站点的第一主机发送第二报文,第一主机的IP地址为第二内网地址。
可选地,第二收发模块,还用于接收来自第二主机的第三报文,第三报文的源IP地址为第二主机的第三内网地址,第三报文的目的IP地址为第三主机的第四内网地址,第二主机位于第二站点,第三主机位于第三站点,第三站点为多个站点中除第二站点以外的任一站点。处理模块,还用于根据网络地址映射关系,对第三报文分别进行SNAT和DNAT,得到第四报文,第四报文的源IP地址为网络地址映射关系中与第三内网地址对应的第三外网地址,第四报文的目的地址为网络地址映射关系中与第四内网地址对应的第四外网地址。第一收发模块,还用于向第三设备发送第四报文,第三设备为第三站点的边缘设备。
可选地,多个站点部署有多个VPN,网络地址映射关系包括内网地址、外网地址和VPN标识的对应关系,VPN标识用于指示对应的内网地址所属的VPN。
可选地,网络地址映射关系包括内网地址块、外网地址块和VPN标识的对应关系,VPN标识用于指示对应的内网地址块所属的VPN。
可选地,内网地址块和外网地址块的对应关系采用掩码的方式表示。
可选地,获取模块,用于获取第二站点的内网地址与外网地址的对应关系。第一收发模块,还用于向第二设备发送第一消息,第一消息包括第二站点的内网地址与外网地址的对应关系。
可选地,获取模块,用于:获取第二站点的多个内网地址;根据外网地址空间,为多个内网地址分配对应的外网地址,得到第一站点的内网地址与外网地址的对应关系。
可选地,外网地址空间包括以下至少一种:第一设备的物理接口的外网地址,第一设备的逻辑接口的外网地址,第一设备的基于IPv6数据面的段路由位置标识所代表的IPv6地址块中的地址。
可选地,第一收发模块,用于通过网络控制器向第二设备发送第一消息。
可选地,第一消息为BGP消息。
可选地,第一收发模块,还用于接收第二设备发送的第二消息,第二消息包括第一站点的内网地址与外网地址的对应关系。
可选地,网络地址映射关系保存在第一设备的路由信息表和/或转发信息表中。
可选地,网络地址映射关系包括本地映射关系和远端映射关系,本地映射关系包括第二站点的内网地址与外网地址的对应关系,远端映射关系包括多个站点中除第二站点以外的其它站点的内网地址与外网地址的对应关系,处理模块,用于:根据本地映射关系对第一报文进行DNAT,以将第一报文的目的IP地址由第二外网地址转换为第二内网地址,以及,根据远端映射关系对第一报文进行SNAT,以将第一报文的源IP地址由第一外网地址转换为第一内网地址。
可选地,内网地址为IPv4地址或IPv6地址,外网地址为IPv6地址。
第六方面,提供了一种第一设备。第一设备包括多个功能模块,多个功能模块相互作用,实现如第三方面或第三方面任一可能的实现方式的方法。多个功能模块包括获取模块和收发模块。可选地,多个功能模块还包括处理模块。
获取模块,用于获取第一站点的内网地址与外网地址的对应关系,第一设备为第一站点的边缘设备,第一站点的内网地址与外网地址的对应关系用于第一设备对从第一站点发往其它站点的报文进行SNAT,以及,对从其它站点发往第一站点的报文进行DNAT。收发模块,用于向第二设备发送第一消息,第一消息包括第一站点的内网地址与外网地址的对应关系,第二设备为第二站点的边缘设备,第一站点的内网地址与外网地址的对应关系用于第二设备对从第一站点发往第二站点的报文进行SNAT,以及,对从第二站点发往第一站点的报文进行DNAT。
可选地,收发模块,还用于接收第二设备发送的第二消息,第二消息包括第二站点的内网地址与外网地址的对应关系,第二站点的内网地址与外网地址的对应关系用于第一设备对从第二站点发往第一站点的报文进行SNAT,以及,对从第一站点发往第二站点的报文进行DNAT。
可选地,获取模块,用于:获取第一站点的多个内网地址;根据外网地址空间,为多个内网地址分配对应的外网地址,得到第一站点的内网地址与外网地址的对应关系。
可选地,外网地址空间包括以下至少一种:第一设备的物理接口的外网地址,第一设备的逻辑接口的外网地址,第一设备的基于IPv6数据面的段路由位置标识所代表的IPv6地址块中的地址。
可选地,收发模块,用于通过网络控制器向第二设备发送第一消息。
可选地,第一消息为BGP消息。
可选地,处理模块,用于在第一设备的路由信息表和/或转发信息表中保存第一站点的内网地址与外网地址的对应关系。
第七方面,提供了一种网络设备,包括:通信接口;以及与所述通信接口连接的处理器。根据所述通信接口和所述处理器,实现第一方面或第一方面任一可能的实现方式中的方法,或者实现第二方面或第二方面任一可能的实现方式中的方法,或者实现第三方面或第三方面任一可能的实现方式中的方法。
第八方面,提供了一种报文传输系统,包括:第一设备和第二设备。第一设备为第一站点的边缘设备,第二设备为第二站点的边缘设备。第一设备和第二设备中分别存储有第一网络地址映射关系,第一网络地址映射关系包括多个站点的内网地址与外网地址的对应关系,多个站点包括第一站点和第二站点。例如,第一设备为第四方面或第四方面任一可能的实现方式中的第一设备,第二设备为第五方面或第五方面任一可能的实现方式中的第一设备。
第一设备用于接收来自第一主机的第一报文,第一报文的源IP地址为第一主机的第一内网地址,第一报文的目的IP地址为第二主机的第二内网地址,第一主机位于第一站点,第二主机位于第二站点。
第一设备用于根据第一网络地址映射关系,对第一报文分别进行SNAT和DNAT,得到第二报文,第二报文的源IP地址为第一网络地址映射关系中与第一内网地址对应的第一外网地址,第二报文的目的IP地址为第一网络地址映射关系中与第二内网地址对应的第二外网地址。
第一设备用于向第二设备发送第二报文。
第二设备用于根据第一网络地址映射关系,对第二报文分别进行SNAT和DNAT,得到第一报文,并向第二主机发送第一报文。
一种具体的实施方式,该系统还包括第三设备,第一设备与第二设备之间通过第三设备通信连接。第一设备用于向第三设备发送第二报文。第三设备用于向第二设备发送第二报文。
可选地,第三设备为第三站点的边缘设备。
一种具体的实施方式,该系统还包括运营商网络,第一设备与第二设备之间通过运营商网络通信连接,运营商网络包括第一运营商边缘(provider edge,PE)设备和第二PE设备,第一PE设备和第二PE设备中分别存储有第二网络地址映射关系,第二网络地址映射关系包括多个站点的外网地址与运营商网络的内网地址的对应关系,第一设备与第一PE设备连接,第二设备与第二PE设备连接。第一设备用于向第一PE设备发送第二报文。第一PE设备用于根据第二网络地址映射关系,对第二报文分别进行SNAT和DNAT,得到第三报文,第三报文的源IP地址为第二网络地址映射关系中与第一外网地址对应的第三内网地址,第三报文的目的IP地址为第二网络地址映射关系中与第二外网地址对应的第四内网地址。第一PE设备用于向第二PE设备发送第三报文。第二PE设备用于根据第二网络地址映射关系,对第三报文分别进行SNAT和DNAT,得到第二报文。第二PE设备用于向第二设备发送第二报文。
可选地,多个站点部署有多个VPN,第一网络地址映射关系包括内网地址、外网地址和VPN标识的对应关系,VPN标识用于指示对应的内网地址所属的VPN。
可选地,第一网络地址映射关系包括内网地址块、外网地址块和VPN标识的对应关系,VPN标识用于指示对应的内网地址块所属的VPN。
可选地,内网地址块和外网地址块的对应关系采用掩码的方式表示。
可选地,第一设备还用于获取第一站点的内网地址与外网地址的对应关系;向第二设备发送第一消息,第一消息包括第一站点的内网地址与外网地址的对应关系。
可选地,第二设备还用于获取第二站点的内网地址与外网地址的对应关系;向第一设备发送第二消息,第二消息包括第二站点的内网地址与外网地址的对应关系。
可选地,该系统还包括网络控制器。第一设备用于通过网络控制器向第二设备发送第一消息。第二设备用于通过网络控制器向第一设备发送第二消息。
可选地,第一消息为BGP消息。第二消息为BGP消息。
可选地,第一网络地址映射关系分别保存在第一设备和第二设备的路由信息表和/或转发信息表中。
可选地,第二网络地址映射关系分别保存在第一PE设备和第二PE设备的路由信息表和/或转发信息表中。
可选地,第一设备中的第一网络地址映射关系包括第一本地映射关系和第一远端映射关系,第一本地映射关系包括第一站点的内网地址与外网地址的对应关系,第一远端映射关系包括第二站点的内网地址与外网地址的对应关系。第一设备用于根据第一本地映射关系对第一报文进行SNAT,以将第一报文的源IP地址由第一内网地址转换为第一外网地址,以及,根据第一远端映射关系对第一报文进行DNAT,以将第一报文的目的IP地址由第二内网地址转换为第二外网地址。
可选地,第二设备中的第一网络地址映射关系包括第二本地映射关系和第二远端映射关系,第二本地映射关系包括第二站点的内网地址与外网地址的对应关系,第二远端映射关系包括第一站点的内网地址与外网地址的对应关系。第二设备用于根据第二本地映射关系对第二报文进行DNAT,以将第二报文的目的IP地址由第二外网地址转换为第二内网地址,以及,根据第二远端映射关系对第二报文进行SNAT,以将第二报文的源IP地址由第一外网地址转换为第一内网地址。
第九方面,提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有指令,当所述指令被处理器执行时,实现第一方面或第一方面任一可能的实现方式中的方法,或者实现第二方面或第二方面任一可能的实现方式中的方法,或者实现第三方面或第三方面任一可能的实现方式中的方法。
第十方面,提供了一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时,实现第一方面或第一方面任一可能的实现方式中的方法,或者实现第二方面或第二方面任一可能的实现方式中的方法,或者实现第三方面或第三方面任一可能的实现方式中的方法。
第十一方面,提供了一种芯片,芯片包括可编程逻辑电路和/或程序指令,当芯片运行时,实现第一方面或第一方面任一可能的实现方式中的方法,或者实现第二方面或第二方面任一可能的实现方式中的方法,或者实现第三方面或第三方面任一可能的实现方式中的方法。
附图说明
图1是本申请实施例提供的一种网络设备采用VPN技术转发报文的示意图;
图2是本申请实施例提供的一种网络设备采用NAT技术转发报文的示意图;
图3是本申请实施例提供的一种应用场景的示意图;
图4是本申请实施例提供的另一种应用场景的示意图;
图5是本申请实施例提供的又一种应用场景的示意图;
图6是本申请实施例提供的再一种应用场景的示意图;
图7是本申请实施例提供的一种报文传输方法的流程示意图;
图8是本申请实施例提供的另一种报文传输方法的流程示意图;
图9是本申请实施例提供的又一种报文传输方法的流程示意图;
图10是本申请另一实施例提供的一种报文传输方法的流程示意图;
图11是本申请另一实施例提供的另一种报文传输方法的流程示意图;
图12是本申请另一实施例提供的又一种报文传输方法的流程示意图;
图13是本申请实施例提供的一种报文传输装置的结构示意图;
图14是本申请实施例提供的另一种报文传输装置的结构示意图;
图15是本申请实施例提供的又一种报文传输装置的结构示意图;
图16是本申请实施例提供的一种报文传输装置的框图;
图17是本申请实施例提供的另一种报文传输装置的框图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
目前,位于不同站点的主机可以跨站点通信。其中,一个站点可视为一个局域网,比如可以是单网段(single subnet)的局域网,也可以是多网段(multiple subnet)的局域网。不同站点可以部署在不同地区。一个站点内可以部署有一台或多台主机。主机指安装有客户端的终端设备,例如是智能手机、平板电脑、台式计算机、物联网(internet ofthings,IoT)设备、网络设备、工作站或服务器等。
站点内的主机通常属于私有网络。一个站点内的不同主机可以属于同一私有网络或不同私有网络。私有网络内的主机通常都会被配置有一个内网地址。由于不同私有网络的内网地址可以有重叠,因此私有网络内的主机被配置的内网地址一般只能用来在该私有网络内部进行通信。私有网络可以跨站点部署,也即是,一个私有网络可以包括部署在不同站点的多台主机。例如,一个私有网络分布部署在站点A和站点B,站点A与站点B通过互联网(Internet)或者其它网络连接起来,那么说明该私有网络包括位于站点A的主机和位于站点B的主机。私有网络可以采用VPN实现。对于一个私有网络而言,部署在该私有网络中的主机为内网主机,而互联网和其它网络都是外部网络。其它网络可以是使用多协议标签交换(multi-protocol label switching,MPLS)或段路由(segment routing,SR)等架构或技术建立的运营商广域骨干网、运营商城域网等。这里的私有网络可以是企业的私有网络。某个站点的该企业的网络是企业内部网络,部署在多个站点的该企业的多个网络称为该企业的私有网络或多站点私有网络。
对于分布部署在多个站点的私有网络,如果一个站点的内网主机要向另一个站点的内网主机发送报文,那么该报文的传输需要经过两个站点之间的外部网络。这种情况下,需要由两个站点的网络设备分别对报文进行处理,使得报文能够在外部网络中传输,进而实现从一个站点的内网主机到达另一个站点的内网主机。站点中用于对跨站点传输的报文进行处理的网络设备通常为站点的边缘设备,边缘设备包括但不限于用户驻地设备(customer premises equipment,CPE)、PE设备、路由器或交换机。
值得说明的是,本申请实施例所涉及的网络地址(包括内网地址和外网地址)均为IP地址,例如为第4版互联网协议(Internet Protocol version 4,IPv4)地址或第6版互联网协议(Internet Protocol version 6,IPv6)地址。IP地址可以被分为公共地址和私有地址。公共地址和私有地址分别对应不同的IP地址范围。比如编号为1918的请求评论(request for comments,RFC)(简称:RFC1918)标准定义了IPv4的私有地址空间包括10.0.0.0/8、172.16.0.0/12、192.168.0.0/16,这些私有地址空间可以用于企业在一个站点部署的网络内部,或者也可以用于一个企业同时部署在多个站点的多个网络,只要不同站点的地址不重复。再比如RFC4193标准定义了IPv6的一个私有地址空间FC00::/7,该私有地址空间可以用在企业在一个站点部署的网络内部,或者也可以用于一个企业同时部署在多个站点的多个网络,只要不同站点的地址不重复。内网地址通常被配置为私有地址,但也不排除内网地址被配置为公共地址的可能性。
相关技术中,一个站点的内网主机要向另一个站点的内网主机发送报文时,网络设备可以采用VPN技术转发报文,或者也可以采用NAT技术转发报文。
对于现有的VPN技术,网络设备采用VPN技术转发报文时,通常会对报文进行封装和解封装。例如,图1是本申请实施例提供的一种网络设备采用VPN技术转发报文的示意图。如图1所示,站点A1包括主机H1a以及网络设备R1。站点A2包括主机H2a以及网络设备R2。其中,主机H1a和主机H2a属于同一VPN。主机H1a的IP地址为192.168.1.1。主机H2a的IP地址为192.168.2.1。主机H1a的IP地址和主机H2a的IP地址均为所属VPN的内网地址。网络设备R1是站点A1的边缘设备。网络设备R2是站点A2的边缘设备。网络设备R1和网络设备R2之间建立有VPN隧道,该VPN隧道位于连接站点A1和站点A2的外部网络中。网络设备R1作为该VPN隧道的一个隧道端点,所使用的IP地址为200.1.1.1。网络设备R2作为该VPN隧道的另一个隧道端点,所使用的IP地址为200.2.1.1。
参见图1,主机H1a向主机H2a发送的报文a1到达网络设备R1之后,网络设备R1对报文a1进行隧道封装得到报文a2,然后通过VPN隧道将报文a2发送给网络设备R2。网络设备R2再对报文a2进行隧道解封装得到报文a1,然后将报文a1发送给主机H2a。其中,报文a1包括IP报头,该IP报头中的源IP地址为192.168.1.1,目的IP地址为192.168.2.1。报文a2相较于报文a1,多了一层封装的IP报头,该封装的IP报头中的源IP地址为200.1.1.1,目的IP地址为200.2.1.1。
本申请实施例中,主机发出的报文在到达网络设备时,报文中的某些字段如生存时间(time to live,TTL)(IPv6中称为跳限度(hop limit))、服务类型(type of service,TOS)(IPv6中称为流量类型(traffic class))均可以改变,只要报文中的源IP地址和目的IP地址不变则仍然当做一个报文。比如主机H1a发出的报文a1在到达网络设备R1时,TTL和TOS等字段均可能出现变化,但仍将网络设备R1接收到的报文称为报文a1。再比如,网络设备R2对报文a2解封装得到的报文的源IP地址和目的IP地址与主机H1a发出的报文a1的源IP地址和目的IP地址都是一样的,因此将网络设备R2对报文a2解封装得到的报文也称为报文a1。同理,网络设备发出的报文在到达主机时,报文中的某些字段如TTL、TOS均可以改变,只要报文中的源IP地址和目的IP地址不变则仍然当做一个报文。比如,网络设备R2发出的报文a1在到达主机H2a时,TTL和TOS等字段均可能出现变化,但仍将主机H2a接收到的报文称为报文a1。
参考图1可知,网络设备R1与网络设备R2之间传输的报文a2是经过额外封装的报文,报文a2相较于主机H1a发出的报文a1,多了一层IP报头,因此数据量更大,导致网络设备R1向网络设备R2传输报文a2时产生较大的网络开销。例如,报文a1包括IPv4报头、用户数据报协议(User Datagram Protocol,UDP)头和负载部分(payload)。其中,IPv4报头占20字节,UDP头占8字节,负载部分占100字节。而报文a2额外封装的IPv4报头也占用20字节,相较于负载部分增加了20%的数据量。如果网络设备采用IPv6报头进行隧道封装,那么会增加更多的数据量。
对于现有的NAT技术,由于现有的NAT技术无法将其它主机的内网地址直接作为通信地址,因此NAT技术通常用在非VPN的环境中。例如,图2是本申请实施例提供的一种网络设备采用NAT技术转发报文的示意图。如图2所示,站点B1包括主机H1b以及网络设备R3。站点B2包括主机H2b以及网络设备R4。其中,主机H1b的IP地址为192.168.1.2。主机H2b的IP地址为192.168.2.2。主机H1b的IP地址和主机H2b的IP地址属于同一私有网络的内网地址。网络设备R3是站点B1的边缘设备。网络设备R4是站点B2的边缘设备。网络设备R3与网络设备R4之间通过外部网络连接。网络设备R3和网络设备R4中分别存储有NAT映射表。网络设备R3中的NAT映射表记录有主机H1b的内网地址对应的NAT地址为200.1.1.2。网络设备R4中的NAT映射表记录有主机H2b的内网地址对应的NAT地址为200.2.1.2。
主机H1b向主机H2b发送报文时,需要采用网络设备R4中的NAT映射表所记录的主机H2b的内网地址对应的NAT地址作为报文的目的IP地址。参见图2,主机H1b向主机H2b发送报文b1,报文b1的源IP地址为192.168.1.2,目的IP地址为200.2.1.2。报文b1到达网络设备R3之后,网络设备R3对报文b1进行SNAT,得到报文b2,报文b2的源IP地址为200.1.1.2,目的IP地址为200.2.1.2。然后网络设备R3通过外部网络向网络设备R4发送报文b2。网络设备R4对报文b2进行DNAT,得到报文b3,然后将报文b3发送给主机H2b,报文b3的源IP地址为200.1.1.2,目的IP地址为192.168.2.2。
参考图2可知,主机H1b向主机H2b发送报文b1时,采用的是网络设备R4中的NAT映射表所记录的主机H2b的内网地址对应的NAT地址作为报文b1的目的IP地址。由于主机H1b无法直接使用主机H2b的内网地址作为报文的目的IP地址,因此主机H1b上需要配置主机H2b的内网地址对应的NAT地址。另外,主机H2b接收到的报文b3中的源IP地址为网络设备R3中的NAT映射表所记录的主机H1b的内网地址对应的NAT地址,主机H2b上也需配置主机H1b的内网地址对应的NAT地址,才能知晓报文b3的真实来源。因此在目前的NAT技术下,内网主机的配置管理较为复杂。另外,报文b1、b2、b3的源IP地址和目的IP地址都不完全相同,这就要求针对报文修改上层头部(upper-layer header)的校验值(checksum),会给网络设备R3和网络设备R4带来额外的处理开销。比如报文的上层头部为UDP或传输控制协议(Transmission Control Protocol,TCP)或互联网控制报文协议(Internet ControlMessage Protocol,ICMP),上层头部里面都有一个checksum字段,该字段的值要根据报文头里的源IP地址、目的IP地址及载荷等进行计算得到。如果网络设备R4发送给主机H2b的报文b3的checksum还保持为主机H1b发送给网络设备R3的报文b1的checksum,而IP地址已经改变,那么主机H2b收到报文b3就会因为checksum不对而丢弃报文b3。如果网络设备R4发送给主机H2b的时候先对报文做checksum的更新,那么它可以基于其接收的报文b2做增量更新,这就要求网络设备R3发送给网络设备R4的报文b2也要携带有正确的checksum,也就是说,网络设备R3也要采用增量更新的方式对接收到的报文b1进行checksum更新以形成报文b2的checksum。
基于现有VPN技术和NAT技术的缺陷,本申请实施例提供了一种技术方案。通过在多个站点的边缘设备中设置网络地址映射关系,该网络地址映射关系包括该多个站点的内网地址与外网地址的对应关系。其中,站点的内网地址指的是站点内主机的IP地址。站点的外网地址指的是该站点用于在外部网络中通信的IP地址。例如,站点的外网地址可以是该站点的边缘设备的物理接口的IP地址或逻辑接口的IP地址。逻辑接口例如可以是回环(loopback)口。或者,站点的外网地址还可以是没有绑定任何物理接口或逻辑接口的地址,比如RFC8986所定义的基于IPv6的SR转发技术(简称:SRv6)的位置标识(SRv6 Locator)所代表的IPv6地址块中的地址,即第一设备的基于IPv6数据面的段路由位置标识所代表的IPv6地址块中的地址。
这样,一个站点(本地站点)的主机要向另一个站点(远端站点)的主机发送报文时,可以使用该主机自身的内网地址作为报文的源IP地址,并使用远端主机的内网地址作为报文的目的IP地址,然后由本地站点的边缘设备根据网络地址映射关系,对报文分别进行SNAT和DNAT,以将报文的源IP地址和目的IP地址分别由内网地址转换为对应的外网地址,使得报文能够在本地站点与远端站点之间的外部网络中传输。相应地,远端站点的边缘设备接收到报文后,再根据网络地址映射关系,对报文分别进行SNAT和DNAT,以将报文的源IP地址和目的IP地址分别由外网地址转换为原来的内网地址,最后将报文发送至该远端站点中对应的主机。这种方案下,远端站点中的主机接收到的报文的源IP地址和目的IP地址与本地站点中的主机发出的报文的源IP地址和目的IP地址一致。
在本申请实施例提供的技术方案中,一方面,站点的边缘设备无需对报文进行额外封装,与现有VPN技术相比,减小了报文传输过程中的网络开销。另一方面,一个站点的主机向其它站点的主机发送报文时,可以直接使用远端主机的内网地址作为报文的目的IP地址,因此无需在主机中配置其它站点的主机的内网地址映射之后的外网地址,与现有NAT技术相比,降低了主机的配置管理复杂度。又一方面,报文经过本地站点的边缘设备和远端站点的边缘设备的两次处理之后,最终远端主机接收到的报文的源IP地址和目的IP地址与本地主机发出的报文的源IP地址和目的IP地址都是相同的,因此本地站点的边缘设备和远端站点的边缘设备可以无需对报文的上层头部中的checksum进行重新计算和修改,降低了边缘设备的处理开销。或者,本地站点的边缘设备和远端站点的边缘设备也可以对报文的上层头部中的checksum进行重新计算和修改,以使得报文在外部网络中传输时checksum都是正确的。
一种具体的实施方式,通信的主机双方属于同一私有网络,即发送报文的主机与接收报文的主机属于同一私有网络。私有网络可以采用VPN实现。
本申请实施例中,将站点内主机的IP地址称为内网地址。将站点之间的通信网络称为外部网络,并将用来在外部网络进行通信的IP地址称为外网地址。内网地址可以是私有地址或公共地址。一个站点内可以部署有一个或多个私有网络,不同私有网络的内网地址可以有重叠。外网地址可以是公共地址或私有地址。例如站点之间的通信网络为互联网,那么用来在站点之间进行通信的外网地址通常为公共地址。又例如,站点之间的通信网络为MPLS网络,那么用来在站点之间进行通信的外网地址为分配给MPLS网络的IP地址,具体可以是私有地址或公共地址。本申请实施例中,内网地址可以采用IPv4地址或IPv6地址。外网地址可以采用IPv6地址。当然,本申请实施例也不排除外网地址采用IPv4地址的可能性。
对于一个站点的边缘设备来说,该边缘设备中的网络地址映射关系包括本地映射关系和远端映射关系。本地映射关系包括本地站点的内网地址与外网地址的对应关系。远端映射关系包括远端站点的内网地址与外网地址的对应关系。
本申请实施例中,边缘设备对网络地址映射关系中的本地映射关系和远端映射关系进行区分,以便后续使用。例如,边缘设备可以采用两张表分别存储本地映射关系和远端映射关系。或者,边缘设备也可以采用不同的标识来区分本地映射关系和远端映射关系,例如采用“local”标识本地映射关系,采用“remote”标识远端映射关系。
一种具体的实施方式,多个站点的边缘设备分别获取各自的本地映射关系,然后将本地映射关系发布给其它站点。具体实现时,每个站点的边缘设备分别获取本地站点的内网地址与外网地址的对应关系,然后通过消息发布的方式与其它站点的边缘设备共享本地站点的内网地址与外网地址的对应关系。
例如,站点的边缘设备采用BGP消息与其它站点的边缘设备共享本地站点的内网地址与外网地址的对应关系。具体实现时,站点的边缘设备可以采用现有的BGP地址族,比如单播(Unicast)地址族,或者VPNv4地址族,或者VPNv6地址族,或者以太VPN(ethernetVPN,EVPN)地址族来发布本地站点的内网地址与外网地址的对应关系。或者,站点的边缘设备也可以采用一个新的BGP地址族来发布本地站点的内网地址与外网地址的对应关系。本申请实施例对于如何在BGP消息携带地址信息的具体方式不做限定。
或者,站点的边缘设备也可以采用基于其它协议实现的消息与其它站点的边缘设备共享本地站点的内网地址与外网地址的对应关系。其它协议例如可以是PCEP。第一消息也可以是采用自定义格式的消息。
这种实施方式下,只需在每个站点的边缘设备上配置本地站点的内网地址与外网地址的对应关系即可,进一步通过消息发布的方式保持多个站点的边缘设备上的网络地址映射关系的一致性和完整性,边缘设备的配置复杂度较低。
一种具体的实施方式,边缘设备中的本地映射关系由边缘设备自动生成。具体实现时,边缘设备获取本地站点的多个内网地址,然后根据预先分配的外网地址空间,为本地站点的多个内网地址分配对应的外网地址,得到本地站点的内网地址与外网地址的对应关系。
一种具体的实施方式,多个站点部署有多个VPN。相应地,该多个站点的边缘设备中存储的网络地址映射关系包括内网地址、外网地址和VPN标识的对应关系,该VPN标识用于指示对应的内网地址所属的VPN。由于不同VPN的内网地址可以有重叠,而同一VPN中不同主机的内网地址不同,因此结合采用VPN标识和内网地址可以唯一标识一个主机。
这种实施方式下,网络地址映射关系可以包括内网地址块、外网地址块和VPN标识的对应关系,则该VPN标识用于指示对应的内网地址块所属的VPN。其中,内网地址块指内网地址集合,通常包括多个内网地址。外网地址块指外网地址集合,通常包括多个外网地址。
一个内网地址块可以包括同一VPN在站点中部署的多个主机的IP地址。相应地,外网地址块包括与该多个主机的IP地址分别对应的多个外网地址。这种情况下,网络地址映射关系可理解为由多组内网地址与外网地址的对应关系构成的集合。每组内网地址与外网地址的对应关系包括一个内网地址以及一个外网地址。
或者,内网地址块也可以是一个VPN在站点中使用的内网网段,例如采用掩码来表示。相应地,外网地址块包括与该内网网段相对应的外网网段,例如采用掩码来表示。当边缘设备接收到本地站点的主机向远端站点的主机发送的报文时,边缘设备可以根据该报文的源IP地址匹配到本地主机所在VPN的内网网段,再结合该源IP地址以及该内网网段对应的外网网段就能得到该源IP地址(即本地主机的内网地址)对应的外网地址。边缘设备可以根据该报文的目的IP地址匹配到远端主机所在VPN的内网网段,再结合该目的IP地址以及该内网网段对应的外网网段就能得到该目的IP地址(即远端主机的内网地址)对应的外网地址。同理,当边缘设备接收到远端站点的主机向本地站点的主机发送的报文时,边缘设备可以根据该报文的源IP地址匹配到外网网段,再结合该源IP地址以及该外网网段对应的内网网段就能得到该源IP地址(外网地址)在远端站点对应的内网地址(即远端主机的内网地址)。边缘设备可以根据该报文的目的IP地址匹配到外网网段,再结合该目的IP地址以及该外网网段对应的内网网段就能得到该目的IP地址(外网地址)在本地站点对应的内网地址(即本地主机的内网地址)。这种情况下,虽然网络地址映射关系未显式地包含站点内主机的内网地址与外网地址的对应关系,但是边缘设备能够结合主机的内网地址以及网络地址映射关系得到该主机的内网地址对应的外网地址,也能够结合外网地址以及网络地址映射关系得到该外网地址对应的主机的内网地址,因此网络地址映射关系实际上隐式地包含了站点内主机的内网地址与外网地址的对应关系。
可选地,内网地址块和外网地址块的对应关系采用掩码的方式表示,与采用单个网络地址的对应关系表示的方式相比,一方面降低了网络地址映射关系的配置复杂度,另一方面相对于现有的NAT映射表中为单个网络地址分别映射,可以减少网络地址映射关系在边缘设备中所占用的存储空间。
下面从应用场景、方法流程、虚拟装置、实体装置、系统等多个角度对本申请技术方案进行详细介绍。
以下对本申请实施例涉及的应用场景举例说明。
本申请实施例提供的报文传输方法可以应用于软件定义广域网(softwaredefined wide area network,SD-WAN),或者也可以应用于三层VPN(layer-3VPN,L3VPN)。L3VPN可以采用EVPN或其它方式实现。
本申请实施例涉及的应用场景包括多个站点。每个站点分别部署有边缘设备以及一个或多个主机。各个站点通过各自的边缘设备分别与其它站点建立有通信连接。
例如,图3是本申请实施例提供的一种应用场景的示意图。如图3所示,该应用场景包括站点301和站点302。站点301中部署有主机3011和边缘设备3012。站点302中部署有主机3021和边缘设备3022。边缘设备3012与边缘设备3022通过互联网或MPLS网络连接。
边缘设备3012和边缘设备3022可以是CPE、PE设备、路由器或交换机等。一种具体的实施方式,图3示出的应用场景为SD-WAN,则边缘设备3012和边缘设备3022可以是CPE,这种场景下,主机3011与边缘设备3012之间可以通过交换机(图3中未示出)连接,主机3021与边缘设备3022之间可以通过交换机(图3中未示出)连接。或者,图3示出的应用场景为运营商网络的三层VPN,则边缘设备3012和边缘设备3022可以是PE设备。
边缘设备3012和边缘设备3022中分别存储有网络地址映射关系。该网络地址映射关系包括站点301的内网地址与外网地址的对应关系以及站点302的内网地址与外网地址的对应关系。其中,站点301的内网地址包括主机3011的内网地址。站点302的内网地址包括主机3021的内网地址。也即是,边缘设备3012和边缘设备3022中存储的网络地址映射关系均包括主机3011的内网地址与外网地址的对应关系以及主机3021的内网地址与外网地址的对应关系。其中,主机3011的内网地址与外网地址的对应关系中的外网地址可以是边缘设备3012的物理接口的IP地址或逻辑接口的IP地址。主机3021的内网地址与外网地址的对应关系中的外网地址可以是边缘设备3022的物理接口的IP地址或逻辑接口的IP地址。逻辑接口例如可以是回环(loopback)口。或者,外网地址也可以是一个没有绑定任何物理接口或逻辑接口的地址,比如RFC8986所定义的SRv6 Locator所代表的IPv6地址块中的地址。
一种具体的实施方式,网络地址映射关系包括内网地址块与外网地址块的对应关系。内网地址块与外网地址块的对应关系可以采用掩码的方式表示。例如,主机3011的内网地址为2001:db8:1::5678,属于内网地址块2001:db8:1::X/64。边缘设备3012分配有外网地址块2001:1::X/64。则边缘设备3012可以建立一组对应关系:(2001:db8:1::X/64,2001:1::X/64)。同理,主机3021的内网地址为2001:db8:2::1234,属于内网地址块2001:db8:2::X/64。边缘设备3022分配有外网地址块2001:2::X/64。则边缘设备3022可以建立另一组对应关系:(2001:db8:2::X/64,2001:2::X/64)。相应地,边缘设备3012和边缘设备3022中的网络地址映射关系均包括两组对应关系:(2001:db8:1::X/64,2001:1::X/64)和(2001:db8:2::X/64,2001:2::X/64)。对于边缘设备3012而言,(2001:db8:1::X/64,2001:1::X/64)为本地映射关系,(2001:db8:2::X/64,2001:2::X/64)为远端映射关系。同理,对于边缘设备3022而言,(2001:db8:2::X/64,2001:2::X/64)为本地映射关系,(2001:db8:1::X/64,2001:1::X/64)为远端映射关系。
边缘设备上用于建立对应关系的内网地址块和外网地址块可以由人工配置,或者也可以由边缘设备自动生成。一种具体的实施方式,站点内的主机的内网地址可以由站点内位于主机与边缘设备之间的网络设备(比如路由器或交换机)进行汇聚,再由该网络设备将汇聚得到的路由前缀采用路由协议发送给向本地站点的边缘设备,以使边缘设备获取本地站点内的主机对应的内网地址块,并为内网地址块分配对应的外网地址块。例如,主机3011的内网地址为2001:db8:1::5678,站点301中位于主机3011与边缘设备3012之间的交换机或路由器(图3中未示出)对站点301中包含主机3011在内的主机的内网地址进行汇聚之后,可以向边缘设备3012发布路由前缀2001:db8:1::X/64。又例如,主机3021的内网地址为2001:db8:2::1234,站点302中位于主机3021与边缘设备3022之间的交换机或路由器(图3中未示出)对站点302中包含主机3021在内的主机的内网地址进行汇聚之后,可以向边缘设备3022发布路由前缀2001:db8:2::X/64。当边缘设备接收到来自本地站点的撤销路由前缀的指示时,边缘设备也可以相应回收分配的外网地址块。这种实施方式下,边缘设备可以根据本地站点内主机的部署状态灵活调整本地映射关系,提高了网络地址映射关系的配置灵活性。其中,路由协议可以是内部网关协议(Interior Gateway Protocol,IGP)或BGP。IGP例如可以是中间系统到中间系统(intermediate system to intermediate system,IS-IS)路由协议或开放式最短路径优先(open shortest path first,OSPF)协议。
本申请实施例中,以一组对应关系中的内网地址与外网地址之间采用逗号分隔为例进行说明。具体实现时,一组对应关系中的内网地址与外网地址之间也可以采用分号或其它分隔符进行分隔。每组对应关系都是双向的,相当于每组对应关系包括两条对应关系,这两条对应关系可以分别称为正向对应关系和反向对应关系。其中,正向对应关系可以是以内网地址为关键字(key)、以外网地址为值(value),反向对应关系可以是以外网地址为关键字、以内网地址为值。例如,以(2001:db8:1::X/64,2001:1::X/64)这组对应关系为例,一条对应关系(正向对应关系)是以2001:db8:1::X/64为关键字、以2001:1::X/64为值,另一条对应关系(反向对应关系)是以2001:1::X/64为关键字、以2001:db8:1::X/64为值。
一种具体的实施方式,网络地址映射关系在边缘设备的路由信息表(routinginformation base,RIB)或转发信息表(forwarding information base,FIB)中。这样边缘设备可以在数据面根据网络地址映射关系实现对报文的转发,从而提高报文转发效率。
本申请实施例中,如果网络地址映射关系在边缘设备的FIB中,那么边缘设备根据网络地址映射关系,对报文分别进行SNAT和DNAT,具体可以是,先根据报文的目的IP地址查询FIB表,找到目的IP地址对应的NAT地址,并对报文进行DNAT。然后根据报文的源IP地址查询FIB表,找到源IP地址对应的NAT地址,并对报文进行SNAT。也即是在这种情况下,边缘设备先对报文进行DNAT,再对报文进行SNAT。后续描述都不再做特别说明。
实际应用中,边缘设备可以将一组对应关系拆分成正向对应关系和反向对应关系,分别以表项的形式存储在RIB或FIB中,并采用一个路由项目(route entry,RE)索引或一个FIB项目(FIB entry)索引对应一个关键字。每条表项中还可以包含对本地映射关系的指示和/或对正向对应关系或反向对应关系的指示。例如,每条表项分别包括以下指示中的一条:local-site-nat、local-node-nat、remote-site-nat、remote-node-nat。其中,local-site-nat、local-node-nat均为对本地映射关系的指示,local-site-nat还用于指示正向(即从本地站点至远端站点的方向)对应关系,local-node-nat还用于指示反向(即从远端站点至本地站点的方向)对应关系。remote-site-nat、remote-node-nat均为对远端映射关系的指示,remote-site-nat还用于指示正向(即从本地站点至远端站点的方向)对应关系,remote-node-nat还用于指示反向(即从远端站点至本地站点的方向)对应关系。
以边缘设备3012为例,假设网络地址映射关系在FIB中,则边缘设备3012中的网络地址映射关系可以表示为如下4条表项,分别为表项A11至表项A14。
表项A11:FIB(2001:db8:1::X/64,RE<local-site-nat,2001:1::X/64>)
表项A12:FIB(2001:db8:2::X/64,RE<remote-site-nat,2001:2::X/64>)
表项A13:FIB(2001:1::X/64,RE<local-node-nat,2001:db8:1::X/64>)
表项A14:FIB(2001:2::X/64,RE<remote-node-nat,2001:db8:2::X/64>)
同理,边缘设备3022也会存储类似表项,比如边缘设备3022中的网络地址映射关系可以表示为如下4条表项,分别为表项A21至表项A24。
表项A21:FIB(2001:db8:2::X/64,RE<local-site-nat,2001:2::X/64>)
表项A22:FIB(2001:db8:1::X/64,RE<remote-site-nat,2001:1::X/64>)
表项A23:FIB(2001:2::X/64,RE<local-node-nat,2001:db8:2::X/64>)
表项A24:FIB(2001:1::X/64,RE<remote-node-nat,2001:db8:1::X/64>)
本申请实施例对边缘设备中网络地址映射关系的存储方式不做限定。
请继续参见图3,该应用场景还可以包括网络控制器303。边缘设备3012和边缘设备3022分别与网络控制器303连接。网络控制器303可以是路由反射器(route reflector,RR)。例如,边缘设备3012和边缘设备3022分别与路由反射器建立BGP EVPN对等关系,边缘设备3012和边缘设备3022之间通过该路由反射器间接通信连接。路由反射器用于转发不同边缘设备之间传递的消息(路由反射器在转发过程中不修改接收的消息)。
上述方案中提到,站点的边缘设备可以采用现有的BGP地址族,比如Unicast地址族,或者VPNv4地址族,或者VPNv6地址族,或者EVPN地址族来发布本地站点的内网地址与外网地址的对应关系。或者,站点的边缘设备也可以采用一个新的BGP地址族来发布本地站点的内网地址与外网地址的对应关系。
举例来说,在如图3所示的应用场景中,边缘设备3012和边缘设备3022可以使用BGP协议Unicast地址族、并通过网络控制器303发布本地站点的内网地址与外网地址的对应关系。边缘设备3012可以向网络控制器303发布包含信息11的BGP消息,网络控制器303再向边缘设备3022发布包含信息11的BGP消息。信息11包括:(Unicast地址族网络层可达信息(network layer reachability information,NLRI):2001:db8:1::/64)和(NAT地址块:2001:1::/64)。边缘设备3022可以向网络控制器303发布包含信息12的BGP消息,网络控制器303再向边缘设备3012发布包含信息12的BGP消息。信息12包括:(Unicast地址族NLRI:2001:db8:2::/64)和(NAT地址块:2001:2::/64)。其中,Unicast地址族NLRI指本地站点的内网地址块。NAT地址块指用于对网络地址进行NAT的地址块,这里的NAT地址块指与本地站点的内网地址块对应的外网地址块。
一种具体的实施方式,边缘设备3012和边缘设备3022使用的BGP消息可以是RFC4271所定义的BGP更新(BGP update)消息。Unicast地址族NLRI可以携带在如RFC4271所定义的BGP更新消息中的NLRI字段。该NLRI字段是一个包含0个、1个或多个<长度,前缀>(<length,prefix>)所组成的二元组的列表。示例中的2001:db8:2::/64,可以表示为<length=64,prefix=2001:db8:2:0>。示例中的2001:db8:1::/64,可以表示为<length=64,prefix=2001:db8:1:0>。NAT地址块可以是RFC4271所定义的一个BGP路由属性(pathattribute),例如可以是一个已经存在的BGP扩展团体属性或IPv6扩展团体属性,或者也可以是新增定义的一个BGP属性。BGP协议允许扩展定义新的BGP属性,也允许对扩展团体属性按照子类型(sub-type)进行扩展。比如可以使用由RFC5701所定义的IPv6扩展团体属性来扩展子类型,该子类型用于在BGP消息中指示NAT,并且在全局管理(global adminstrator)字段填写2001:1:0:0:0:0:0:0以及在本地管理(local administrator)字段填写64,用来指示NAT地址块2001:1::/64。再比如新定义一个BGP属性,其中包含<length,prefix>信息,并填写<length=64,prefix=2001:1:0:0>来表示NAT地址块2001:1::/64。再比如新定义一个BGP属性,其中包括<prefix>信息并填写<prefix=2001:1:0:0>,和前面的NLRI中的length=64共享同一个前缀长度值,用来表示NAT地址块2001:1::/64。
上述在BGP消息中携带本地站点的内网地址与外网地址的对应关系的方式仅用作示例。
又例如,图4是本申请实施例提供的另一种应用场景的示意图。如图4所示,该应用场景包括站点401、站点402和站点403。站点401中部署有主机4011a、主机4011b和边缘设备4012。站点402中部署有主机4021a、主机4021b和边缘设备4022。站点403中部署有主机4031a、主机4031b和边缘设备4032。边缘设备4012、边缘设备4022与边缘设备4032两两之间通过互联网或MPLS网络连接。
其中,主机4011a、主机4021a和主机4031a属于VPNa。主机4011b、主机4021b和主机4031b属于VPNb。对边缘设备4012、边缘设备4022和边缘设备4032的解释可参考上述对边缘设备3012和边缘设备3022的解释,本申请实施例在此不再赘述。
边缘设备4012、边缘设备4022和边缘设备4032中分别存储有网络地址映射关系。该网络地址映射关系包括站点401的内网地址与外网地址的对应关系、站点402的内网地址与外网地址的对应关系以及站点403的内网地址与外网地址的对应关系。其中,站点401的内网地址包括主机4011a的内网地址和主机4011b的内网地址。站点402的内网地址包括主机4021a的内网地址和主机4021b的内网地址。站点403的内网地址包括主机4031a的内网地址和主机4031b的内网地址。也即是,边缘设备4012、边缘设备4022和边缘设备4032中存储的网络地址映射关系均包括主机4011a的内网地址与外网地址的对应关系、主机4011b的内网地址与外网地址的对应关系、主机4021a的内网地址与外网地址的对应关系、主机4021b的内网地址与外网地址的对应关系、主机4031a的内网地址与外网地址的对应关系以及主机4031b的内网地址与外网地址的对应关系。其中,主机4011a、主机4011b的内网地址与外网地址的对应关系中的外网地址可以是边缘设备4012的物理接口的IP地址或逻辑接口的IP地址。主机4021a、主机4021b的内网地址与外网地址的对应关系中的外网地址可以是边缘设备4022的物理接口的IP地址或逻辑接口的IP地址。主机4031a、主机4031b的内网地址与外网地址的对应关系中的外网地址可以是边缘设备4032的物理接口的IP地址或逻辑接口的IP地址。或者,外网地址也可以是一个没有绑定任何物理接口或逻辑接口的地址,比如RFC8986所定义的SRv6 Locator所代表的IPv6地址块中的地址。
例如,边缘设备4012分配有外网地址空间2001:1::X/64,边缘设备4022分配有外网地址空间2001:2::X/64,边缘设备4032分配有外网地址空间2001:3::X/64。假设VPNa和VPNb在站点401使用的内网地址块相同,VPNa和VPNb在站点402使用的内网地址块相同,VPNa和VPNb在站点403使用的内网地址块相同。
一种可能情况,VPNa和VPNb使用的内网地址为IPv6地址。例如,VPNa和VPNb在站点401使用的内网地址块为2001:db8:1::X/80,在站点402使用的内网地址块为2001:db8:2::X/80,在站点403中使用的内网地址块为2001:db8:3::X/80。边缘设备4012针对站点401中部署的VPNa分配了外网地址块2001:1:0:0:a0::X/80进行映射。边缘设备4012针对站点401中部署的VPNb分配了外网地址块2001:1:0:0:b0::X/80进行映射。对于边缘设备4012而言,外网地址块2001:1:0:0:a0::X/80和2001:1:0:0:b0::X/80是本地节点(local node)的,而对于边缘设备4022而言,外网地址块2001:1:0:0:a0::X/80和2001:1:0:0:b0::X/80是远端节点(remote node)的。则边缘设备4012可以建立两组对应关系,分别表示为:(vpna,2001:db8:1::X/80,2001:1:0:0:a0::X/80)和(vpnb,2001:db8:1::X/80,2001:1:0:0:b0::X/80)。边缘设备4022针对站点402中部署的VPNa分配了外网地址块2001:2:0:0:a0::X/80进行映射,边缘设备4022针对站点402中部署的VPNb分配了外网地址块2001:2:0:0:b0::X/80进行映射,对于边缘设备4012而言,外网地址块2001:2:0:0:a0::X/80和2001:2:0:0:b0::X/80是本地节点的,而对于边缘设备4022而言,外网地址块2001:2:0:0:a0::X/80和2001:2:0:0:b0::X/80是远端节点的。则边缘设备4022可以建立两组对应关系,分别表示为:(vpna,2001:db8:2::X/80,2001:2:0:0:a0::X/80)和(vpnb,2001:db8:2::X/80,2001:2:0:0:b0::X/80)。边缘设备4032针对站点403中部署的VPNa分配了外网地址块2001:3:0:0:a0::X/80进行映射,边缘设备4032针对站点403中部署的VPNb分配了外网地址块2001:3:0:0:b0::X/80进行映射。则边缘设备4032可以建立两组对应关系,分别表示为:(vpna,2001:db8:3::X/80,2001:3:0:0:a0::X/80)和(vpnb,2001:db8:3::X/80,2001:3:0:0:b0::X/80)。相应地,边缘设备4012、边缘设备4022和边缘设备4032中的网络地址映射关系均包括以上六组对应关系。其中,对应关系中的“vpna”和“vpnb”分别代表VPNa的标识和VPNb的标识。
参考上述边缘设备3012对网络地址映射关系的存储方式,以边缘设备4012为例,假设网络地址映射关系在FIB中,则边缘设备4012中的网络地址映射关系可以表示为如下12条表项,分别为表项B1至表项B12。
表项B1:FIB(vpna,2001:db8:1::X/80,RE<local-site-nat,2001:1:0:0:a0::X/80>)
表项B2:FIB(vpna,2001:db8:2::X/80,RE<remote-site-nat,2001:2:0:0:a0::X/80>)
表项B3:FIB(vpna,2001:db8:3::X/80,RE<remote-site-nat,2001:3:0:0:a0::X/80>)
表项B4:FIB(vpnb,2001:db8:1::X/80,RE<local-site-nat,2001:1:0:0:b0::X/80>)
表项B5:FIB(vpnb,2001:db8:2::X/80,RE<remote-site-nat,2001:2:0:0:b0::X/80>)
表项B6:FIB(vpnb,2001:db8:3::X/80,RE<remote-site-nat,2001:3:0:0:b0::X/80>)
表项B7:FIB(vpn0,2001:1:0:0:a0::X/80,RE<local-node-nat,vpna,2001:db8:1::X/80>)
表项B8:FIB(vpn0,2001:2:0:0:a0::X/80,RE<remote-node-nat,vpna,2001:db8:2::X/80>)
表项B9:FIB(vpn0,2001:3:0:0:a0::X/80,RE<remote-node-nat,vpna,2001:db8:3::X/80>)
表项B10:FIB(vpn0,2001:1:0:0:b0::X/80,RE<local-node-nat,vpnb,2001:db8:1::X/80>)
表项B11:FIB(vpn0,2001:2:0:0:b0::X/80,RE<remote-node-nat,vpnb,2001:db8:2::X/80>)
表项B12:FIB(vpn0,2001:3:0:0:b0::X/80,RE<remote-node-nat,vpnb,2001:db8:3::X/80>)
其中,表项B1至表项B3分别以vpna以及2001:db8:1::X/80或2001:db8:2::X/80或2001:db8:3::X/80为FIB表项的关键字,以RE<…>为关键字对应的值。表项B4至表项B6分别以vpnb以及2001:db8:1::X/80或2001:db8:2::X/80或2001:db8:3::X/80为FIB表项的关键字,以RE<…>为关键字对应的值。当边缘设备4012从本地站点(例如主机4011a)收到报文,可以通过接收报文的接口(物理接口或逻辑接口)获知报文属于vpna,再通过报文获取到源IP地址为2001:db8:1等,再根据vpna+2001:db8:1查询FIB表。这里的vpna/vpnb代表了一个位于边缘设备4012上、对应于VPNa/VPNb的虚拟路由转发(virtual routing forwarding,VRF)实例的标识。
表项B7至表项B12分别以vpn0以及2001:1:0:0:b0::X/80或2001:2:0:0:b0::X/80或2001:3:0:0:b0::X/80为FIB表项的关键字,以RE<…>为关键字对应的值。当边缘设备4012从外部网络(例如互联网或MPLS网络)收到报文(例如边缘设备4022所发送的报文),通过报文获取到目的IP地址为2001:1等,再根据vpn0+2001:1查询FIB表。这里的vpn0代表了一个对应于公共网络的VRF实例的标识。边缘设备也可以将公共网络视为一个特殊的本地VRF实例,即本示例中的vpn0所指示的VPN。边缘设备也可以不将公共网络作为一个特殊的本地VRF实例,则vpn0所指示的VPN实际可以视为空/不存在。本申请实施例对此不做限定。
同理,边缘设备4022和边缘设备4032也会存储类似表项,本申请实施例在此不再一一列举。
另一种可能情况,VPNa和VPNb使用的内网地址为IPv4地址。例如,VPNa和VPNb在站点401使用的内网地址块为10.1.1.X/24,在站点402使用的内网地址块为10.2.1.X/24,在站点403中使用的内网地址块为10.3.1.X/24。边缘设备4012针对站点401中部署的VPNa分配了外网地址块2001:1:0:0:a0::X/120进行映射,边缘设备4012针对站点401中部署的VPNb分配了外网地址块2001:1:0:0:b0::X/120进行映射。则边缘设备4012可以建立两组对应关系,分别表示为:(vpna,10.1.1.X/24,2001:1:0:0:a0::X/120)和(vpnb,10.1.1.X/24,2001:1:0:0:b0::X/120)。边缘设备4022针对站点402中部署的VPNa分配了外网地址块2001:2:0:0:a0::X/120进行映射,边缘设备4022针对站点402中部署的VPNb分配了外网地址块2001:2:0:0:b0::X/120进行映射。则边缘设备4022可以建立两组对应关系,分别表示为:(vpna,10.2.1.X/24,2001:2:0:0:a0::X/120)和(vpnb,10.2.1.X/24,2001:2:0:0:b0::X/120)。边缘设备4032针对站点403中部署的VPNa分配了外网地址块2001:3:0:0:a0::X/120进行映射,边缘设备4032针对站点403中部署的VPNb分配了外网地址块2001:3:0:0:b0::X/120进行映射。则边缘设备4032可以建立两组对应关系,分别表示为:(vpna,10.3.1.X/24,2001:3:0:0:a0::X/120)和(vpnb,10.3.1.X/24,2001:3:0:0:b0::X/120)。相应地,边缘设备4012、边缘设备4022和边缘设备4032中的网络地址映射关系均包括以上六组对应关系。其中,对应关系中的“vpna”和“vpnb”分别代表VPNa的标识和VPNb的标识。
参考上述边缘设备3012对网络地址映射关系的存储方式,以边缘设备4012为例,假设网络地址映射关系在FIB中,则边缘设备4012中的网络地址映射关系可以表示为如下12条表项,分别为表项C1至表项C12。
表项C1:FIB(vpna,10.1.1.X/24,RE<local-site-nat,2001:1:0:0:a0::X/120>)
表项C2:FIB(vpna,10.2.1.X/24,RE<remote-site-nat,2001:2:0:0:a0::X/120>)
表项C3:FIB(vpna,10.3.1.X/24,RE<remote-site-nat,2001:3:0:0:a0::X/120>)
表项C4:FIB(vpnb,10.1.1.X/24,RE<local-site-nat,2001:1:0:0:b0::X/120>)
表项C5:FIB(vpnb,10.2.1.X/24,RE<remote-site-nat,2001:2:0:0:b0::X/120>)
表项C6:FIB(vpnb,10.3.1.X/24,RE<remote-site-nat,2001:3:0:0:b0::X/120>)
表项C7:FIB(vpn0,2001:1:0:0:a0::X/120,RE<local-node-nat,vpna,10.1.1.X/24>)
表项C8:FIB(vpn0,2001:2:0:0:a0::X/120,RE<remote-node-nat,vpna,10.2.1.X/24>)
表项C9:FIB(vpn0,2001:3:0:0:a0::X/120,RE<remote-node-nat,vpna,10.3.1.X/24>)
表项C10:FIB(vpn0,2001:1:0:0:b0::X/120,RE<local-node-nat,vpnb,10.1.1.X/24>)
表项C11:FIB(vpn0,2001:2:0:0:b0::X/120,RE<remote-node-nat,vpnb,10.3.1.X/24>)
表项C12:FIB(vpn0,2001:3:0:0:b0::X/120,RE<remote-node-nat,vpnb,10.3.1.X/24>)
上述表项C1至表项C6的解释和作用可参考上述对表项B1至表项B6的相关描述,上述表项C7至表项C12的解释和作用可参考上述对表项B7至表项B12的相关描述,本申请实施例在此不再赘述。同理,边缘设备4022和边缘设备4032也会存储类似表项,本申请实施例在此不再一一列举。
请继续参见图4,该应用场景还可以包括网络控制器404。边缘设备4012、边缘设备4022和边缘设备4032分别与网络控制器404连接。对网络控制器404的解释可参考上述对网络控制器303的解释,本申请实施例在此不再赘述。
上述方案中提到,站点的边缘设备可以采用现有的BGP地址族,比如Unicast地址族,或者VPNv4地址族,或者VPNv6地址族,或者EVPN地址族来发布本地站点的内网地址与外网地址的对应关系。或者,站点的边缘设备也可以采用一个新的BGP地址族来发布本地站点的内网地址与外网地址的对应关系。
举例来说,在如图4所示的应用场景中,如果站点内的主机使用IPv6地址,则边缘设备4012、边缘设备4022和边缘设备4032可以使用BGP协议VPNv6地址族、并通过网络控制器404发布本地站点的内网地址与外网地址的对应关系。边缘设备4012可以向网络控制器404发布包含信息21的BGP消息,网络控制器404再向边缘设备4022和边缘设备4032发布包含信息21的BGP消息。信息21包括:(VPNv6地址族NLRI:2001:db8:1::/64)和(NAT地址块:2001:1::/64)。边缘设备4022可以向网络控制器404发布包含信息22的BGP消息,网络控制器404再向边缘设备4012和边缘设备4032发布包含信息22的BGP消息。信息22包括:(VPNv6地址族NLRI:2001:db8:2::/64)和(NAT地址块:2001:2::/64)。边缘设备4032可以向网络控制器404发布包含信息23的BGP消息,网络控制器404再向边缘设备4012和边缘设备4022发布包含信息23的BGP消息。信息23包括:(VPNv6地址族NLRI:2001:db8:3::/64)和(NAT地址块:2001:3::/64)。
一种具体的实施方式,边缘设备4012、边缘设备4022和边缘设备4032使用的BGP消息可以是RFC4760所定义的BGP更新消息。VPNv6地址族NLRI可以携带在如RFC4760所定义的MP_REACH_NLRI属性(多协议边界网关协议中定义的一种属性)中的NLRI字段。其中,MP_REACH_NLRI属性携带在BGP更新消息的路由属性字段中。MP_REACH_NLRI属性中的地址族标识符(address family identifier,AFI)和子地址族标识符(subsequent address familyidentifier,SAFI)分别填写2和128以代表VPNv6路由。MP_REACH_NLRI属性中的NLRI字段包含一个<length,prefix>二元组且prefix又包含一个8字节的路由标识符(routedistinguisher,RD)和一个IPv6地址前缀。其中RD用于区分VPN。
如果站点内的主机使用IPv4地址,则边缘设备4012、边缘设备4022和边缘设备4032可以使用BGP协议VPNv4地址族发布本地站点的内网地址与外网地址的对应关系。具体实现方式可参考使用BGP协议VPNv6地址族发布本地站点的内网地址与外网地址的对应关系的实现方式,本申请实施例不再赘述。
或者,在如图4所示的应用场景中,边缘设备还可以使用BGP协议EVPN地址族发布本地站点的内网地址与外网地址的对应关系。比如可以使用RFC9136所定义的EVPN地址族,EVPN路由类型为5的路由NLRI,它同样包含有RD和IPv4/IPv6地址前缀。
上述在BGP消息中携带本地站点的内网地址与外网地址的对应关系的方式仅用作示例。
又例如,图5是本申请实施例提供的又一种应用场景的示意图。如图5所示,该应用场景包括站点501、站点502和站点503。站点501中部署有主机5011a、主机5011b和边缘设备5012。站点502中部署有主机5021a、主机5021b和边缘设备5022。站点503中部署有主机5031a、主机5031b和边缘设备5032。
其中,主机5011a、主机5021a和主机5031a属于VPNc。主机5011b、主机5021b和主机5031b属于VPNd。对VPNc和VPNd的解释可参考上述对VPNa和VPNb的相关解释。对主机5011a、主机5011b、主机5021a、主机5021b、主机5031a、主机5031b的解释可参考上述对主机4011a、主机4011b、主机4021a、主机4021b、主机4031a、主机4031b的相关解释,本申请实施例在此不再赘述。
参见图5,边缘设备5012与边缘设备5022通过互联网或MPLS网络连接。边缘设备5022与边缘设备5032通过互联网或MPLS网络连接。图5示出的应用场景与图4示出的应用场景的区别在于,图4中的多个边缘设备在物理上两两直接连接,而图5中的多个边缘设备在物理上并非两两直接连接。例如,边缘设备5012与边缘设备5032在物理上未直接连接,那么也就说明边缘设备5012与边缘设备5032之间无法使用各自物理接口的IP地址实现路由。这种情况下,可以通过向边缘设备5012的逻辑接口分配外网地址块,以及向边缘设备5032的逻辑接口分配外网地址块,并ping通分配给边缘设备5012的逻辑接口的外网地址块和分配给边缘设备5032的逻辑接口的外网地址块,进而实现边缘设备5012与边缘设备5032之间的可路由。
例如,边缘设备5012的逻辑接口配置有外网地址空间2022:1::X/64,边缘设备5022的逻辑接口配置有外网地址空间2022:2::X/64,边缘设备5032的逻辑接口配置有外网地址空间2022:3::X/64。2022:1::X/64、2022:2::X/64和2022:3::X/64两两之间可路由。
以VPNc和VPNd使用的内网地址为IPv6地址为例,假设VPNc和VPNd在站点501使用的内网地址块为2001:db8:1::X/80,在站点502使用的内网地址块为2001:db8:2::X/80,在站点503中使用的内网地址块为2001:db8:3::X/80。边缘设备5012针对站点501中部署的VPNc分配了外网地址块2022:1:0:0:a0::X/80进行映射,边缘设备5012针对站点501中部署的VPNd分配了外网地址块2022:1:0:0:b0::X/80进行映射。则边缘设备5012可以建立两组对应关系,分别表示为:(vpnc,2001:db8:1::X/80,2022:1:0:0:a0::X/80)和(vpnd,2001:db8:1::X/80,2022:1:0:0:b0::X/80)。边缘设备5022针对站点502中部署的VPNc分配了外网地址块2022:2:0:0:a0::X/80进行映射,边缘设备5022针对站点502中部署的VPNd分配了外网地址块2022:2:0:0:b0::X/80进行映射。则边缘设备5022可以建立两组对应关系,分别表示为:(vpnc,2001:db8:2::X/80,2022:2:0:0:a0::X/80)和(vpnd,2001:db8:2::X/80,2022:2:0:0:b0::X/80)。边缘设备5032针对站点503中部署的VPNc分配了外网地址块2022:3:0:0:a0::X/80进行映射,边缘设备5032针对站点503中部署的VPNd分配了外网地址块2022:3:0:0:b0::X/80进行映射。则边缘设备5032可以建立两组对应关系,分别表示为:(vpnc,2001:db8:3::X/80,2022:3:0:0:a0::X/80)和(vpnd,2001:db8:3::X/80,2022:3:0:0:b0::X/80)。相应地,边缘设备5012、边缘设备5022和边缘设备5032中的网络地址映射关系均包括以上六组对应关系。其中,对应关系中的“vpnc”和“vpnd”分别代表VPNc的标识和VPNc的标识。
参考上述边缘设备3012对网络地址映射关系的存储方式,以边缘设备5012为例,假设网络地址映射关系在FIB中,则边缘设备5012中的网络地址映射关系可以表示为如下12条表项,分别为表项D1至表项D12。
表项D1:FIB(vpnc,2001:db8:1::X/80,RE<local-site-nat,2022:1:0:0:a0::X/80>)
表项D2:FIB(vpnc,2001:db8:2::X/80,RE<remote-site-nat,2022:2:0:0:a0::X/80>)
表项D3:FIB(vpnc,2001:db8:3::X/80,RE<remote-site-nat,2022:3:0:0:a0::X/80>)
表项D4:FIB(vpnd,2001:db8:1::X/80,RE<local-site-nat,2022:1:0:0:b0::X/80>)
表项D5:FIB(vpnd,2001:db8:2::X/80,RE<remote-site-nat,2022:2:0:0:b0::X/80>)
表项D6:FIB(vpnd,2001:db8:3::X/80,RE<remote-site-nat,2022:3:0:0:b0::X/80>)
表项D7:FIB(vpn0,2022:1:0:0:a0::X/80,RE<local-node-nat,vpnc,2001:db8:1::X/80>)
表项D8:FIB(vpn0,2022:2:0:0:a0::X/80,RE<remote-node-nat,vpnc,2001:db8:2::X/80>)
表项D9:FIB(vpn0,2022:3:0:0:a0::X/80,RE<remote-node-nat,vpnc,2001:db8:3::X/80>)
表项D10:FIB(vpn0,2022:1:0:0:b0::X/80,RE<local-node-nat,vpnd,2001:db8:1::X/80>)
表项D11:FIB(vpn0,2022:2:0:0:b0::X/80,RE<remote-node-nat,vpnd,2001:db8:2::X/80>)
表项D12:FIB(vpn0,2022:3:0:0:b0::X/80,RE<remote-node-nat,vpnd,2001:db8:3::X/80>)
上述表项D1至表项D6的解释和作用可参考上述对表项B1至表项B6的相关描述,上述表项D7至表项D12的解释和作用可参考上述对表项B7至表项B12的相关描述,本申请实施例在此不再赘述。同理,边缘设备5022和边缘设备5032也会存储类似表项,本申请实施例在此不再一一列举。
上述VPNc和VPNd也可以使用IPv4地址作为内网地址,本申请实施例在此不再赘述。
请继续参见图5,该应用场景还可以包括网络控制器504。边缘设备5012、边缘设备5022和边缘设备5032分别与网络控制器504连接。对网络控制器504的解释可参考上述对网络控制器303的解释,本申请实施例在此不再赘述。
在如图5所示的应用场景中,边缘设备5012、边缘设备5022和边缘设备5032发布本地站点的内网地址与外网地址的对应关系的方式可参考上述边缘设备4012、边缘设备4022和边缘设备4032发布本地站点的内网地址与外网地址的对应关系的方式,本申请实施例在此不再赘述。
又例如,图6是本申请实施例提供的再一种应用场景的示意图。如图6所示,该应用场景包括站点601、站点602、站点603和运营商网络604。站点601中部署有主机6011a、主机6011b和边缘设备6012。站点602中部署有主机6021a、主机6021b和边缘设备6022。站点603中部署有主机6031a、主机6031b和边缘设备6032。运营商网络604包括PE1、PE2和PE3。
其中,主机6011a、主机6021a和主机6031a属于VPNe。主机6011b、主机6021b和主机6031b属于VPNf。对VPNe和VPNf的解释可参考上述对VPNa和VPNb的相关解释。对主机6011a、主机6011b、主机6021a、主机6021b、主机6031a、主机6031b的解释可参考上述对主机4011a、主机4011b、主机4021a、主机4021b、主机4031a、主机4031b的相关解释,本申请实施例在此不再赘述。
边缘设备6012、边缘设备6022与边缘设备6032两两之间通过运营商网络604连接。例如参见图6,边缘设备6012与PE1连接。边缘设备6022与PE2连接。边缘设备6032与PE3连接。
边缘设备6012、边缘设备6022和边缘设备6032中分别存储有一组网络地址映射关系。该组网络地址映射关系包括站点601的内网地址与外网地址的对应关系、站点602的内网地址与外网地址的对应关系以及站点603的内网地址与外网地址的对应关系。其中,站点601的内网地址包括主机6011a的内网地址和主机6011b的内网地址。站点602的内网地址包括主机6021a的内网地址和主机6021b的内网地址。站点603的内网地址包括主机6031a的内网地址和主机6031b的内网地址。也即是,边缘设备6012、边缘设备6022和边缘设备6032中存储的网络地址映射关系均包括主机6011a的内网地址与外网地址的对应关系、主机6011b的内网地址与外网地址的对应关系、主机6021a的内网地址与外网地址的对应关系、主机6021b的内网地址与外网地址的对应关系、主机6031a的内网地址与外网地址的对应关系以及主机6031b的内网地址与外网地址的对应关系。其中,主机6011a、主机6011b的内网地址与外网地址的对应关系中的外网地址可以是边缘设备6012的物理接口的IP地址或逻辑接口的IP地址。主机6021a、主机6021b的内网地址与外网地址的对应关系中的外网地址可以是边缘设备6022的物理接口的IP地址或逻辑接口的IP地址。主机6031a、主机6031b的内网地址与外网地址的对应关系中的外网地址可以是边缘设备6032的物理接口的IP地址或逻辑接口的IP地址。或者,外网地址也可以是一个没有绑定任何物理接口或逻辑接口的地址,比如RFC8986所定义的SRv6 Locator所代表的IPv6地址块中的地址。
例如,边缘设备6012分配有外网地址空间2001:1:0:0::X/64,边缘设备6022分配有外网地址空间2001:2:0:0::X/64,边缘设备6032分配有外网地址空间2001:3:0:0::X/64。
以VPNe使用的内网地址为IPv6地址为例,假设VPNe在站点601使用的内网地址块为2001:db8:0:0:1::X/80,在站点602使用的内网地址块为2001:db8:0:0:2::X/80,在站点603中使用的内网地址块为2001:db8:0:0:3::X/80。边缘设备6012针对站点601中部署的VPNe分配了外网地址块2001:1:0:0:1::X/80进行映射。则边缘设备6012可以建立一组对应关系:(vpne,2001:db8:0:0:1::X/80,2001:1:0:0:1::X/80)。边缘设备6022针对站点602中部署的VPNe分配了外网地址块2001:2:0:0:1::X/80进行映射。则边缘设备6022可以建立一组对应关系:(vpne,2001:db8:0:0:2::X/80,2001:2:0:0:1::X/80)。边缘设备6032针对站点603中部署的VPNe分配了外网地址块2001:3:0:0:1::X/80进行映射。则边缘设备6032可以建立一组对应关系:(vpne,2001:db8:0:0:3::X/80,2001:3:0:0:1::X/80)。其中,对应关系中的“vpne”代表VPNe的标识。同理,边缘设备6012、边缘设备6022和边缘设备6032针对VPNf也会建立类似的对应关系,本申请实施例不再一一举例。
参考上述边缘设备3012对网络地址映射关系的存储方式,以边缘设备6012为例,假设网络地址映射关系在FIB中,则边缘设备6012中针对VPNe的网络地址映射关系可以表示为如下6条表项,分别为表项E1至表项E6。
表项E1:FIB(vpne,2001:db8:0:0:1::X/80,RE<local-site-nat,2001:1:0:0:1::X/80>)
表项E2:FIB(vpne,2001:db8:0:0:2::X/80,RE<remote-site-nat,2001:2:0:0:1::X/80>)
表项E3:FIB(vpne,2001:db8:0:0:3::X/80,RE<remote-site-nat,2001:3:0:0:1::X/80>)
表项E4:FIB(vpn0,2001:1:0:0:1::X/80,RE<local-node-nat,vpne,2001:db8:0:0:1::X/80>)
表项E5:FIB(vpn0,2001:2:0:0:1::X/80,RE<remote-node-nat,vpne,2001:db8:0:0:2::X/80>)
表项E6:FIB(vpn0,2001:3:0:0:1::X/80,RE<remote-node-nat,vpne,2001:db8:0:0:3::X/80>)
上述表项E1至表项E3的解释和作用可参考上述对表项B1至表项B6的相关描述,上述表项E4至表项E6的解释和作用可参考上述对表项B7至表项B12的相关描述,本申请实施例在此不再赘述。同理,边缘设备6022和边缘设备6032也会存储类似表项,本申请实施例在此不再一一列举。
PE1、PE2和PE3中分别存储有另一组网络地址映射关系。该组网络地址映射关系包括站点601的外网地址与运营商网络604的内网地址的对应关系、站点602的外网地址与运营商网络604的内网地址的对应关系以及站点603的外网地址与运营商网络604的内网地址的对应关系。其中,站点的外网地址指的是站点的边缘设备所分配到的外网地址空间。具体实现时,PE1可以建立站点601的外网地址与运营商网络604的内网地址的对应关系。PE2可以建立站点602的外网地址与运营商网络604的内网地址的对应关系。PE3可以建立站点603的外网地址与运营商网络604的内网地址的对应关系。然后PE1、PE2、PE3分别通过消息发布的方式与其它PE共享本地建立的对应关系。
例如,运营商网络604中部署有VPNx,PE1通过VPNx与边缘设备6012通信连接,PE2通过VPNx与边缘设备6022通信连接,PE3通过VPNx与边缘设备6032通信连接。PE1针对边缘设备6012所分配到的外网地址空间2001:1:0:0::X/64,分配了内网地址块2022:1:0:1::X/64进行映射。则PE1可以建立一组对应关系:(vpnx,2001:1:0:0::X/64,2022:1:0:1::X/64)。PE2针对边缘设备6022所分配到的外网地址空间2001:2:0:0::X/64,分配了内网地址块2022:2:0:1::X/64进行映射。则PE2可以建立一组对应关系:(vpnx,2001:2:0:0::X/64,2022:2:0:1::X/64)。PE3针对边缘设备6032所分配到的外网地址空间2001:3:0:0::X/64,分配了内网地址块2022:3:0:1::X/64进行映射。则PE3可以建立一组对应关系:(vpnx,2001:3:0:0::X/64,2022:3:0:1::X/64)。其中,对应关系中的“vpnx”代表VPNx的标识。
参考上述边缘设备3012对网络地址映射关系的存储方式,以PE1为例,假设网络地址映射关系在FIB中,则PE1中针对站点601、站点602和站点603的网络地址映射关系可以表示为如下6条表项,分别为表项F1至表项F6。这里,local-site-nat和remote-site-nat所指示的正向对应关系为从站点至运营商网络的方向,local-node-nat和remote-node-nat所指示的反向对应关系为从运营商网络至站点的方向。
表项F1:FIB(vpnx,2001:1:0:0::X/64,RE<local-site-nat,2022:1:0:1::X/64>)
表项F2:FIB(vpnx,2001:2:0:0::X/64,RE<remote-site-nat,2022:2:0:1::X/64>)
表项F3:FIB(vpnx,2001:3:0:0::X/64,RE<remote-site-nat,2022:3:0:1::X/64>)
表项F4:FIB(vpn0,2022:1:0:1::X/64,RE<local-node-nat,vpnx,2001:1:0:0::X/64>)
表项F5:FIB(vpn0,2022:2:0:1::X/64,RE<remote-node-nat,vpnx,2001:2:0:0::X/64>)
表项F6:FIB(vpn0,2022:3:0:1::X/64,RE<remote-node-nat,vpnx,2001:3:0:0::X/64>)
上述表项F1至表项F3的解释和作用可参考上述对表项B1至表项B6的相关描述,上述表项F4至表项F6的解释和作用可参考上述对表项B7至表项B12的相关描述,本申请实施例在此不再赘述。同理,PE2和PE3也会存储类似表项,本申请实施例在此不再一一列举。
请继续参见图6,该应用场景还可以包括网络控制器605。边缘设备6012、边缘设备6022和边缘设备6032分别与网络控制器605连接。对网络控制器605的解释可参考上述对网络控制器303的解释,本申请实施例在此不再赘述。
请继续参见图6,该应用场景还可以包括网络控制器606。PE1、PE2、PE3分别与网络控制器606连接。网络控制器606可以是路由反射器。例如,PE1、PE2、PE3分别与路由反射器建立BGP EVPN对等关系,PE1、PE2、PE3之间通过该路由反射器间接通信连接。路由反射器用于转发不同PE之间传递的消息。
在如图6所示的应用场景中,边缘设备6012、边缘设备6022和边缘设备6032发布本地站点的内网地址与外网地址的对应关系的方式可参考上述边缘设备4012、边缘设备4022和边缘设备4032发布本地站点的内网地址与外网地址的对应关系的方式。PE1、PE2、PE3发布站点的外网地址与运营商网络的内网地址的对应关系的方式也可参考上述边缘设备4012、边缘设备4022和边缘设备4032发布本地站点的内网地址与外网地址的对应关系的方式,本申请实施例在此均不再赘述。
以下对本申请实施例的方法流程举例说明。
例如,图7是本申请实施例提供的一种报文传输方法的流程示意图。如图7所示,方法700包括步骤701至步骤705。方法700可以应用于如图3至图5任一所示的应用场景中。
一种具体的实施方式,方法700应用于如图3所示的应用场景。例如,设备1是边缘设备3012,设备2是边缘设备3022,则主机1是主机3011,主机2是主机3021,站点1是站点301,站点2是站点302。
一种具体的实施方式,方法700应用于如图4所示的应用场景。例如,设备1是边缘设备4012,设备2是边缘设备4022,则主机1是主机4011a,主机2是主机4021a,或者,主机1是4011b,主机2可以是4021b,站点1是站点401,站点2是站点402。又例如,设备1是边缘设备4012,设备2是边缘设备4032,则主机1是主机4011a,主机2是主机4031a,或者,主机1是4011b,主机2是4031b,站点1是站点401,站点2是站点403。又例如,设备1是边缘设备4022,设备2是边缘设备4032,则主机1是主机4021a,主机2是主机4031a,或者,主机1是4021b,主机2可以是4031b,站点1是站点402,站点2是站点403。
一种具体的实施方式,方法700应用于如图5所示的应用场景。例如,设备1是边缘设备5012,设备2是边缘设备5022,则主机1是主机5011a,主机2是主机5021a,或者,主机1是5011b,主机2是5021b,站点1是站点501,站点2是站点502。又例如,设备1是边缘设备5022,设备2是边缘设备5032,则主机1是主机5021a,主机2是主机5031a,或者,主机1是5021b,主机2是5031b,站点1是站点502,站点2是站点503。
步骤701、站点1中的主机1向站点1中的设备1发送报文1。
报文1的源IP地址为主机1的内网地址1。报文1的目的IP地址为主机2的内网地址2。主机1位于站点1。主机2位于站点2。设备1为站点1的边缘设备。
一种具体的实施方式,主机1和主机2属于同一私有网络,主机1的内网地址1和主机2的内网地址2均为该私有网络的内网地址。例如主机1和主机2属于同一VPN。
步骤702、站点1中的设备1根据网络地址映射关系1,对报文1分别进行SNAT和DNAT,得到报文2。
网络地址映射关系1包括多个站点的内网地址与外网地址的对应关系。该多个站点包括站点1和站点2。报文2的源IP地址为网络地址映射关系1中与内网地址1对应的外网地址1。报文2的目的IP地址为网络地址映射关系1中与内网地址2对应的外网地址2。
一种具体的实施方式,多个站点部署有多个VPN。相应地,该多个站点的边缘设备中存储的网络地址映射关系包括内网地址、外网地址和VPN标识的对应关系,该VPN标识用于指示对应的内网地址所属的VPN。VPN标识例如可以采用VRF实例的标识来表示。
由于不同VPN的内网地址可以有重叠,而同一VPN中不同主机的内网地址不同,因此结合采用VPN标识和内网地址可以唯一标识一个主机。
这种实施方式下,网络地址映射关系可以包括内网地址块、外网地址块和VPN标识的对应关系,则该VPN标识用于指示对应的内网地址块所属的VPN。其中,内网地址块和外网地址块的对应关系可以采用掩码的方式表示。网络地址映射关系采用地址块的对应关系来表示,与采用单个网络地址的对应关系来表示的方式相比,一方面降低了配置复杂度,另一方面相对于现有的NAT映射表中为单个网络地址分别映射,可以减少网络地址映射关系在边缘设备中所占用的存储空间。
一种具体的实施方式,网络地址映射关系1包括本地映射关系1和远端映射关系1。本地映射关系1包括站点1的内网地址与外网地址的对应关系。远端映射关系1包括除站点1以外的其它站点的内网地址与外网地址的对应关系,这里远端映射关系1包括站点2的内网地址与外网地址的对应关系。则步骤702的一种实现方式,包括:设备1根据本地映射关系1对报文1进行SNAT,以将报文1的源IP地址由内网地址1转换为外网地址1,以及,根据远端映射关系1对报文1进行DNAT,以将报文1的目的IP地址由内网地址2转换为外网地址2。
本实施方式下,边缘设备可以对本地映射关系和远端映射关系进行区分,这样边缘设备接收到本地站点内的主机发送的报文时,可以基于本地映射关系对报文进行SNAT,并基于远端映射关系对报文进行DNAT。同理,边缘设备接收到远端站点内的主机发送的报文时,可以基于远端映射关系对报文进行SNAT,并基于本地映射关系对报文进行DNAT。边缘设备在对报文进行NAT时,无需遍历所有网络地址映射关系,从而可以提高报文转发效率。
一种具体的实施方式,边缘设备获取网络地址映射关系的实现方式为:多个站点的边缘设备分别获取各自的本地映射关系,然后将本地映射关系发布给其它站点。对于设备1而言,设备1获取站点1的内网地址与外网地址的对应关系,然后设备1发布消息1,消息1包括站点1的内网地址与外网地址的对应关系。另外,设备1还接收其它设备发布的消息,其它设备发布的消息包括该设备所在站点的内网地址与外网地址的对应关系。设备1可以将接收到的其它设备发布的消息携带的对应关系存储为远端映射关系。
本实施方式下,边缘设备通过消息发布的方式与其它站点的边缘设备共享本地站点的内网地址与外网地址的对应关系。这样只需在每个站点的边缘设备上配置本地站点的内网地址与外网地址的对应关系即可,进一步通过消息发布的方式保持多个站点的边缘设备上的网络地址映射关系的一致性和完整性,边缘设备的配置复杂度较低。
一种具体的实施方式,边缘设备中的本地映射关系由边缘设备自动生成。对于设备1而言,设备1可以获取站点1的多个内网地址,然后根据预先分配的外网地址空间,为该多个内网地址分配对应的外网地址,得到站点1的内网地址与外网地址的对应关系。该外网地址空间可以包括设备1的物理接口的外网地址,设备1的逻辑接口的外网地址,或者,没有绑定任何物理接口或逻辑接口的外网地址中的一种或多种。在站点1部署有一个或多个VPN的情况下,每个VPN可以对应一个内网地址块,则设备1可以获取站点1的一个或多个内网地址块,然后根据预先分配的外网地址空间,为每个内网地址块分别分配一个对应的外网地址块。具体实现时,可以由路由器或交换机汇聚VPN中的主机的内网地址得到路由前缀,并采用路由协议向边缘设备发布路由前缀,以使边缘设备获取该VPN对应的内网地址块。
或者,边缘设备中的本地映射关系还可以由人工进行配置。
一种具体的实施方式,各个站点的边缘设备分别与网络控制器通信连接。设备1发布消息1,可以是,设备1向网络控制器发送消息1,由网络控制器将消息1发布给其它站点的边缘设备。这种实施方式下,无需在多个站点的边缘设备之间建立全连接的通信关系,简化了组网复杂度,从而降低了系统管理难度。另外可以高效率的进行信息发布以保持各个站点的边缘设备上的网络地址映射关系的一致性。
当然,边缘设备也可以通过消息发布的方式直接向其它站点的边缘设备发送本地站点的内网地址与外网地址的对应关系。本申请实施例对不同站点的边缘设备之间同步网络地址映射关系的方式不做限定。
一种具体的实施方式,边缘设备采用BGP消息与其它站点的边缘设备共享本地站点的内网地址与外网地址的对应关系。例如上述消息1为BGP消息。这种情况下,网络控制器可以是BGP路由反射器。具体实现时,站点的边缘设备可以采用现有的BGP地址族,比如单播(Unicast)地址族,或者VPNv4地址族,或者VPNv6地址族,或者EVPN地址族来发布本地站点的内网地址与外网地址的对应关系。或者,站点的边缘设备也可以采用一个新的BGP地址族来发布本地站点的内网地址与外网地址的对应关系。
例如在如图3所示的应用场景中,边缘设备3012和边缘设备3022可以使用BGP协议Unicast地址族发布本地站点的内网地址与外网地址的对应关系。又例如在如图4或图5所示的应用场景中,边缘设备可以使用BGP协议VPNv6地址族或BGP协议EVPN地址族发布本地站点的内网地址与外网地址的对应关系。
本实施方式下,利用BGP消息实现对各个站点的内网地址和外网地址的对应关系的分发,实现简单。
步骤703、站点1中的设备1向站点2中的设备2发送报文2。
设备2为站点2的边缘设备。
步骤704、站点2中的设备2根据网络地址映射关系2,对报文2分别进行SNAT和DNAT,得到报文1。
步骤704中的SNAT和DNAT分别为步骤702中的SNAT和DNAT的反向NAT。
设备2获取网络地址映射关系2的实现方式与设备1获取网络地址映射关系1的实现方式类似,本申请实施例在此不再赘述。
一种具体的实施方式,网络地址映射关系2包括本地映射关系2和远端映射关系2。本地映射关系2包括站点2的内网地址与外网地址的对应关系。远端映射关系2包括除站点2以外的其它站点的内网地址与外网地址的对应关系,这里远端映射关系2包括站点1的内网地址与外网地址的对应关系。则步骤704的一种实现方式,包括:设备2根据远端映射关系2对报文2进行SNAT,以将报文2的源IP地址由外网地址1转换为内网地址1,以及,根据本地映射关系2对报文2进行DNAT,以将报文1的目的IP地址由外网地址2转换为内网地址2。网络地址映射关系2与网络地址映射关系1的实质内容(内网地址与外网地址的对应关系)相同,但二者相对的本地映射关系和远端映射关系不同。
步骤705、站点2中的设备2向站点2中的主机2发送报文1。
上述方法700示出了站点1的主机1向站点2的主机2发送报文1的过程。
以上述方法700应用于图3示出的应用场景为例,假设主机3011的内网地址为2001:db8:1::5678,主机3021的内网地址为2001:db8:2::1234。主机3011向主机3021发送报文的过程包括以下步骤S11至步骤S15。
在步骤S11中,主机3011向边缘设备3012发送源IP地址为2001:db8:1::5678、目的IP地址为2001:db8:2::1234的报文。
在步骤S12中,边缘设备3012根据对应关系(2001:db8:1::X/64,2001:1::X/64)对报文进行SNAT,并根据对应关系(2001:db8:2::X/64,2001:2::X/64)对报文进行DNAT,得到源IP地址为2001:1::5678、目的IP地址为2001:2::1234的报文。
具体实现时,边缘设备3012可以针对源IP地址2001:db8:1::5678查询本地映射关系,然后采用对应的外网地址块(2001:1::X/64)的掩码64更新该源IP地址的左64比特,保持源IP地址的右64比特(::0:0:0:5678)不变,得到该源IP地址对应的外网地址2001:1::5678。
同理,边缘设备3012可以针对目的IP地址2001:db8:2::1234查询远端映射关系,然后采用对应的外网地址块(2001:2::X/64)的掩码64更新该目的IP地址的左64比特,保持目的IP地址的右64比特(::0:0:0:1234)不变,得到该目的IP地址对应的外网地址2001:2::1234。
例如,边缘设备3012中的网络地址映射关系包括表项A11至表项A14。首先,边缘设备3012针对目的IP地址2001:db8:2::1234查询FIB,匹配到表项A12,进而获得remote-site-nat的指示及对应的外网地址块2001:2::X/64,并对报文进行DNAT。然后,边缘设备3012针对源IP地址2001:db8:1::5678查询FIB,匹配到表项A11,进而获得local-site-nat的指示及对应的外网地址块2001:1::X/64,并对报文进行SNAT。
在步骤S13中,边缘设备3012通过互联网或MPLS向边缘设备3022发送源IP地址为2001:1::5678、目的IP地址为2001:2::1234的报文。
在步骤S14中,边缘设备3022根据对应关系(2001:db8:1::X/64,2001:1::X/64)对报文进行SNAT,并根据对应关系(2001:db8:2::X/64,2001:2::X/64)对报文进行DNAT,得到源IP地址为2001:db8:1::5678、目的IP地址为2001:db8:2::1234的报文。
具体实现时,边缘设备3022可以针对源IP地址2001:2::1234查询远端映射关系,然后采用对应的内网地址块(2001:db8:1::X/64)的掩码64更新该源IP地址的左64比特,保持源IP地址的右64比特(::0:0:0:5678)不变,得到该源IP地址对应的内网地址2001:db8::5678。
同理,边缘设备3022可以针对目的IP地址2001:2::1234查询本地映射表,然后采用对应的内网地址块(2001:db8:2::X/64)的掩码64更新该目的IP地址的左64比特,保持目的IP地址的右64比特(::0:0:0:1234)不变,得到该目的IP地址对应的内网地址2001:db8:2::1234。
例如,边缘设备3022中的网络地址映射关系包括表项A21至表项A22。首先,边缘设备3012针对目的IP地址2001:2::1234查询FIB,匹配到表项A23,进而获得local-node-nat的指示及对应的内网地址块2001:db8:2::1234,并对报文进行DNAT。然后,边缘设备3022针对源IP地址2001:1::5678查询FIB,匹配到表项A24,进而获得remote-node-nat的指示及对应的内网地址块2001:db8:1::X/64,并对报文进行SNAT。
在步骤S15中,边缘设备3022向主机3021发送源IP地址为2001:db8:1::5678、目的IP地址为2001:db8:2::1234的报文。
主机3021接收到的报文与主机3011发出的报文相同。
在本申请实施例提供的报文传输方法中,一个站点的主机向其它站点的主机发送报文时,可以使用自身的内网地址作为报文的源IP地址,并使用远端主机的内网地址作为报文的目的IP地址。由本地站点的边缘设备根据网络地址映射关系,对报文分别进行SNAT和DNAT,以将报文的源IP地址和目的IP地址分别由内网地址转换为对应的外网地址,使得报文能够在本地站点与远端站点之间的外部网络中传输。相应地,远端站点的边缘设备接收到报文后,再根据网络地址映射关系,对报文分别进行SNAT和DNAT,以将报文的源IP地址和目的IP地址分别由外网地址转换为原来的内网地址,最后将报文发送至该远端站点中对应的主机。无需在主机中配置其它站点的主机的内网地址映射之后的外网地址,与现有NAT技术相比,降低了主机的配置管理复杂度。本申请实施例可以应用于VPN场景,但与现有VPN技术相比,站点的边缘设备无需对报文进行额外封装,因此可以减小报文传输过程中的网络开销。另外,报文经过本地站点的边缘设备和远端站点的边缘设备的两次处理之后,最终远端主机接收到的报文的源IP地址和目的IP地址与本地主机发出的报文的源IP地址和目的IP地址都是相同的,因此本地站点的边缘设备和远端站点的边缘设备可以无需对报文的上层头部中的checksum进行重新计算和修改。或者,本地站点的边缘设备和远端站点的边缘设备也可以对报文的上层头部中的checksum进行重新计算和修改,以使得报文在外部网络中传输时checksum都是正确的。
又例如,图8是本申请实施例提供的另一种报文传输方法的流程示意图。如图8所示,方法800包括步骤801至步骤806。方法800可以应用于如图5所示的应用场景中。
一种具体的实施方式,方法800应用于如图5所示的应用场景中。例如,设备3是边缘设备5012,设备4是边缘设备5032,设备5是边缘设备5022,则主机3是主机5011a,主机4是主机5031a,或者,主机3是5011b,主机4是5031b,站点3是站点501,站点4是站点503,站点5是站点502。
步骤801、站点3中的主机3向站点3中的设备3发送报文3。
报文3的源IP地址为主机3的内网地址3。报文3的目的IP地址为主机4的内网地址4。主机3位于站点3。主机4位于站点4。设备3为站点3的边缘设备。设备3与站点4的边缘设备(设备4)在物理上并未直接相连。
一种具体的实施方式,主机3和主机4属于同一私有网络,主机3的内网地址3和主机4的内网地址4均为该私有网络的内网地址。例如主机3和主机4属于同一VPN。
步骤802、站点3中的设备3根据网络地址映射关系3,对报文3分别进行SNAT和DNAT,得到报文4。
网络地址映射关系3包括多个站点的内网地址与外网地址的对应关系。该多个站点包括站点3和站点4。报文4的源IP地址为网络地址映射关系3中与内网地址3对应的外网地址3。报文4的目的IP地址为网络地址映射关系3中与内网地址4对应的外网地址4。
一种具体的实施方式,网络地址映射关系3包括本地映射关系3和远端映射关系3。本地映射关系3包括站点3的内网地址与外网地址的对应关系。远端映射关系3包括除站点3以外的其它站点的内网地址与外网地址的对应关系,这里远端映射关系3包括站点4的内网地址与外网地址的对应关系。则步骤802的一种实现方式,包括:设备3根据本地映射关系3对报文3进行SNAT,以将报文3的源IP地址由内网地址3转换为外网地址3,以及,根据远端映射关系3对报文3进行DNAT,以将报文3的目的IP地址由内网地址4转换为外网地址4。值得说明的是,网络地址映射关系3中的外网地址为边缘设备的逻辑接口的外网地址。
此步骤802中关于网络地址映射关系3的获取方式和表达方式均可参考上述步骤702中关于网络地址映射关系1的获取方式和表达方式,本申请实施例在此不再赘述。
步骤803、站点3中的设备3向站点5中的设备5发送报文4。
设备5位于设备3与设备4之间。设备5的物理接口与设备3的物理接口相连,且设备5的物理接口与设备4的物理接口相连。设备5例如可以是站点5的边缘设备。
一种具体的实施方式,设备3通过与设备5相连的物理接口向设备5发送报文4。
步骤804、站点5中的设备5向站点4中的设备4发送报文4。
一种具体的实施方式,设备5通过与设备4相连的物理接口向设备4发送报文4。这里,设备5实质上用作设备3与设备4的中转通信设备。
步骤805、站点4中的设备4根据网络地址映射关系4,对报文4分别进行SNAT和DNAT,得到报文3。
步骤805中的SNAT和DNAT分别为步骤802中的SNAT和DNAT的反向NAT。
设备4获取网络地址映射关系4的实现方式与设备3获取网络地址映射关系3的实现方式类似,本申请实施例在此不再赘述。
一种具体的实施方式,网络地址映射关系4包括本地映射关系4和远端映射关系4。本地映射关系4包括站点4的内网地址与外网地址的对应关系。远端映射关系4包括除站点4以外的其它站点的内网地址与外网地址的对应关系,这里远端映射关系4包括站点3的内网地址与外网地址的对应关系。则步骤805的一种实现方式,包括:设备4根据远端映射关系4对报文4进行SNAT,以将报文4的源IP地址由外网地址3转换为内网地址3,以及,根据本地映射关系4对报文4进行DNAT,以将报文4的目的IP地址由外网地址4转换为内网地址4。网络地址映射关系4与网络地址映射关系3的实质内容(内网地址与外网地址的对应关系)相同,但二者相对的本地映射关系和远端映射关系不同。
步骤806、站点4中的设备4向站点4中的主机4发送报文3。
上述方法800示出了站点3的主机3向站点4的主机4发送报文3的过程。
以上述方法800应用于图5示出的应用场景为例,假设主机5011a的内网地址为2001:db8:1::5678,主机5031a的内网地址为2001:db8:3::1234。主机5011a向主机5031a发送报文的过程包括以下步骤S21至步骤S26。
在步骤S21中,主机5011a向边缘设备5012发送源IP地址为2001:db8:1::5678、目的IP地址为2001:db8:3::1234的报文。
在步骤S22中,边缘设备5012根据对应关系(vpnc,2001:db8:1::X/80,2022:1:0:0:a0::X/80)对报文进行SNAT,并根据对应关系(vpnc,2001:db8:3::X/80,2022:3:0:0:a0::X/80)对报文进行DNAT,得到源IP地址为2022:1:0:0:a0::5678、目的IP地址为2022:3:0:0:a0::1234的报文。
具体实现时,边缘设备5012可以针对源IP地址2001:db8:1::5678查询本地映射关系,然后采用对应的外网地址块(2022:1:0:0:a0::X/80)的掩码80更新该源IP地址的左80比特,保持源IP地址的右48比特(::0:0:5678)不变,得到该源IP地址对应的外网地址2022:1:0:0:a0::5678。
同理,边缘设备5012可以针对目的IP地址2001:db8:1::5678查询远端映射关系,然后采用对应的外网地址块(2022:3:0:0:a0::X/80)的掩码80更新该目的IP地址的左80比特,保持目的IP地址的右48比特(::0:0:1234)不变,得到该目的IP地址对应的外网地址2022:3:0:0:a0::1234。
例如,边缘设备5012中的网络地址映射关系包括表项D1至表项D12。首先,边缘设备5012针对目的IP地址2001:db8:3::1234和vpnc(目的IP地址所属VPN(即VPNc)的标识)查询FIB,匹配到表项D3,进而获得remote-site-nat的指示及对应的外网地址块,并对报文进行DNAT。然后,边缘设备5012针对源IP地址2001:db8:1::5678和vpnc(源IP地址所属VPN(即VPNc)的标识)查询FIB,匹配到表项D1,进而获得local-site-nat的指示及对应的外网地址块2022:1:0:0:a0::X/80,并对报文进行SNAT。
在步骤S23中,边缘设备5012通过互联网或MPLS向边缘设备5022发送源IP地址为2022:1:0:0:a0::5678、目的IP地址为2022:3:0:0:a0::1234的报文。
在步骤S24中,边缘设备5022通过互联网或MPLS向边缘设备5032发送源IP地址为2022:1:0:0:a0::5678、目的IP地址为2022:3:0:0:a0::1234的报文。
在步骤S25中,边缘设备5032根据对应关系(vpnc,2001:db8:1::X/80,2022:1:0:0:a0::X/80)对报文进行反向SNAT,并根据对应关系(vpnc,2001:db8:3::X/80,2022:3:0:0:a0::X/80)对报文进行反向DNAT,得到源IP地址为2001:db8:1::5678、目的IP地址为2001:db8:2::1234的报文。
具体实现时,边缘设备5032可以针对源IP地址2022:1:0:0:a0::5678查询远端映射关系,然后采用对应的内网地址块(2001:db8:1::X/80)的掩码80更新该源IP地址的左80比特,保持源IP地址的右48比特(::0:0:5678)不变,得到该源IP地址对应的内网地址2001:db8::5678。
同理,边缘设备5032可以针对目的IP地址2022:3:0:0:a0::1234查询本地映射表,然后采用对应的内网地址块(2001:db8:3::X/80)的掩码80更新该目的IP地址的左80比特,保持目的IP地址的右48比特(::0:0:1234)不变,得到该目的IP地址对应的内网地址2001:db8:3::1234。
在步骤S26中,边缘设备5032向主机5031a发送源IP地址为2001:db8:1::5678、目的IP地址为2001:db8:3::1234的报文。
主机5031a接收到的报文与主机5011a发出的报文相同。
本申请实施例提供的报文传输方法可以应用于可路由的任何两个站点之间,并不限定站点之间在物理上是否建立有直接连接。
又例如,图9是本申请实施例提供的又一种报文传输方法的流程示意图。如图9所示,方法900包括步骤901至步骤909。方法900可以应用于如图6所示的应用场景中。
一种具体的实施方式,方法900应用于如图6所示的应用场景中。例如,设备6是边缘设备6012,设备7是PE1,设备8是PE2,设备9是边缘设备6022,则主机5是主机6011a,主机6是主机6021a,或者,主机5是6011b,主机6是6021b,站点6是站点601,站点7是站点602。
步骤901、站点6中的主机5向站点6中的设备6发送报文5。
报文5的源IP地址为主机5的内网地址5。报文5的目的IP地址为主机6的内网地址6。主机5位于站点6。主机6位于站点7。设备6为站点6的边缘设备。
一种具体的实施方式,主机5和主机6属于同一私有网络,主机5的内网地址5和主机6的内网地址6均为该私有网络的内网地址。例如主机5和主机6属于同一VPN。
步骤902、站点6中的设备6根据网络地址映射关系5,对报文5分别进行SNAT和DNAT,得到报文6。
网络地址映射关系5包括多个站点的内网地址与外网地址的对应关系。该多个站点包括站点6和站点7。报文6的源IP地址为网络地址映射关系5中与内网地址5对应的外网地址5。报文6的目的IP地址为网络地址映射关系5中与内网地址6对应的外网地址6。
一种具体的实施方式,网络地址映射关系5包括本地映射关系5和远端映射关系5。本地映射关系5包括站点6的内网地址与外网地址的对应关系。远端映射关系5包括除站点6以外的其它站点的内网地址与外网地址的对应关系,这里远端映射关系5包括站点7的内网地址与外网地址的对应关系。则步骤902的一种实现方式,包括:设备6根据本地映射关系5对报文5进行SNAT,以将报文5的源IP地址由内网地址5转换为外网地址5,以及,根据远端映射关系5对报文5进行DNAT,以将报文5的目的IP地址由内网地址6转换为外网地址6。
此步骤902中关于网络地址映射关系5的获取方式和表达方式均可参考上述步骤702中关于网络地址映射关系1的获取方式和表达方式,本申请实施例在此不再赘述。
步骤903、站点6中的设备6向运营商网络中的设备7发送报文6。
一种具体的实施方式,站点6与站点7之间通过运营商网络连接。设备7为运营商网络中与设备6相连的边缘设备。
步骤904、运营商网络中的设备7根据网络地址映射关系6,对报文6分别进行SNAT和DNAT,得到报文7。
网络地址映射关系6包括多个站点的外网地址与运营商网络的内网地址的对应关系。该多个站点指的是上述步骤902中的多个站点。报文7的源IP地址为网络地址映射关系6中与外网地址5对应的内网地址7。报文4的目的IP地址为网络地址映射关系6中与外网地址6对应的内网地址8。
一种具体的实施方式,网络地址映射关系6包括本地映射关系6和远端映射关系6。本地映射关系6包括站点6的外网地址与运营商网络的内网地址的对应关系。远端映射关系6包括除站点6以外的其它站点的外网地址与运营商网络的内网地址的对应关系,这里远端映射关系6包括站点7的外网地址与运营商网络的内网地址的对应关系。则步骤904的一种实现方式,包括:设备7根据本地映射关系6对报文6进行SNAT,以将报文6的源IP地址由外网地址5转换为内网地址7,以及,根据远端映射关系6对报文6进行DNAT,以将报文6的目的IP地址由外网地址6转换为内网地址8。
设备7获取网络地址映射关系6的方式与上述步骤702中设备1获取网络地址映射关系1的方式类似,网络地址映射关系6的表达方式也可参考上述步骤702中网络地址映射关系1的表达方式,本申请实施例在此不再赘述。
步骤905、运营商网络中的设备7向运营商网络中的设备8发送报文7。
设备8为运营商网络中与设备9相连的边缘设备。设备9为站点7的边缘设备。
步骤906、运营商网络中的设备8根据网络地址映射关系7,对报文7分别进行SNAT和DNAT,得到报文6。
步骤906中的SNAT和DNAT分别为步骤904中的SNAT和DNAT的反向NAT。
设备8获取网络地址映射关系7的实现方式与设备7获取网络地址映射关系6的实现方式类似,本申请实施例在此不再赘述。
一种具体的实施方式,网络地址映射关系7包括本地映射关系7和远端映射关系7。本地映射关系7包括站点7的外网地址与运营商网络的内网地址的对应关系。远端映射关系7包括除站点7以外的其它站点的外网地址与运营商网络的内网地址的对应关系,这里远端映射关系7包括站点6的外网地址与运营商网络的内网地址的对应关系。则步骤906的一种实现方式,包括:设备8根据本地映射关系7对报文7进行SNAT,以将报文7的源IP地址由内网地址7转换为外网地址5,以及,根据远端映射关系7对报文7进行DNAT,以将报文7的目的IP地址由内网地址8转换为外网地址6。网络地址映射关系7与网络地址映射关系7的实质内容(内网地址与外网地址的对应关系)相同,但二者相对的本地映射关系和远端映射关系不同。
步骤907、运营商网络中的设备8向站点7中的设备9发送报文6。
步骤908、站点7中的设备9根据网络地址映射关系8,对报文6分别进行SNAT和DNAT,得到报文5。
步骤908中的SNAT和DNAT分别为步骤902中的SNAT和DNAT的反向NAT。
设备9获取网络地址映射关系8的实现方式与设备6获取网络地址映射关系5的实现方式类似,本申请实施例在此不再赘述。
一种具体的实施方式,网络地址映射关系8包括本地映射关系8和远端映射关系8。本地映射关系8包括站点7的内网地址与外网地址的对应关系。远端映射关系8包括除站点7以外的其它站点的内网地址与外网地址的对应关系,这里远端映射关系8包括站点6的内网地址与外网地址的对应关系。则步骤908的一种实现方式,包括:设备9根据远端映射关系8对报文6进行SNAT,以将报文6的源IP地址由外网地址5转换为内网地址5,以及,根据本地映射关系8对报文6进行DNAT,以将报文6的目的IP地址由外网地址6转换为内网地址6。网络地址映射关系8与网络地址映射关系5的实质内容(内网地址与外网地址的对应关系)相同,但二者相对的本地映射关系和远端映射关系不同。
步骤909、站点7中的设备9向向站点7中的主机6发送报文5。
上述方法900示出了站点6的主机5向站点7的主机6发送报文5的过程。
以上述方法900应用于图6示出的应用场景为例,假设主机6011a的内网地址为2001:db8:0:0:1::5678,主机6021a的内网地址为2001:db8:0:0:2::1234。主机6011a向主机6021a发送报文的过程包括以下步骤S31至步骤S39。
在步骤S31中,主机6011a向边缘设备6012发送源IP地址为2001:db8:0:0:1::5678、目的IP地址为2001:db8:0:0:2::1234的报文。
在步骤S32中,边缘设备6012根据对应关系(vpne,2001:db8:0:0:1::X/80,2001:1:0:0:1::X/80)对报文进行SNAT,并根据对应关系(vpne,2001:db8:0:0:2::X/80,2001:2:0:0:1::X/80)对报文进行DNAT,得到源IP地址为2001:1:0:0:1::5678、目的IP地址为2001:2:0:0:1::1234的报文。
具体实现时,边缘设备6012可以针对源IP地址2001:db8:0:0:1::5678查询本地映射关系,然后采用对应的外网地址块(2001:1:0:0:1::X/80)的掩码80更新该源IP地址的左80比特,保持源IP地址的右48比特(::5678)不变,得到该源IP地址对应的外网地址2001:1:0:0:1::5678。
同理,边缘设备6012可以针对目的IP地址2001:db8:0:0:2::1234查询远端映射关系,然后采用对应的外网地址块(2001:2:0:0:1::X/80)的掩码80更新该目的IP地址的左80比特,保持目的IP地址的右48比特(::1234)不变,得到该目的IP地址对应的外网地址2001:2:0:0:1::1234。
例如,边缘设备6012中的网络地址映射关系包括表项E1至表项E6。首先,边缘设备6012针对目的IP地址2001:db8:0:0:2::1234和vpne(目的IP地址所属VPN(即VPNe)的标识)查询FIB,匹配到表项E2,进而获得remote-site-nat的指示及对应的外网地址块2001:2:0:0:1::X/80,并对报文进行DNAT。然后,边缘设备6012针对源IP地址2001:db8:0:0:1::5678和vpne(源IP地址所属VPN(即VPNe)的标识)查询FIB,匹配到表项E1,进而获得local-site-nat的指示及对应的外网地址块2001:1:0:0:1::X/80,并对报文进行SNAT。
在步骤S33中,边缘设备6012向PE1发送源IP地址为2001:1:0:0:1::5678、目的IP地址为2001:2:0:0:1::1234的报文。
对于边缘设备6012向PE1发送的这个报文,边缘设备6012是产生该报文的主机节点(Host node that originate the packet with the source address being itself),边缘设备6022则是接收该报文的主机节点(Host node that receive the packet withthe final destination address being itself)。PE1和PE2则是转发该报文的路由器节点(Router node that forwards a packet not explicitly addressed to itself)。
在步骤S34中,PE1根据对应关系(vpnx,2001:1:0:0::X/64,2022:1:0:1::X/64)对报文进行SNAT,并根据对应关系(vpnx,2001:2:0:0::X/64,2022:2:0:1::X/64)对报文进行DNAT,得到源IP地址为2022:1:0:1:1::5678、目的IP地址为2022:2:0:1:1::1234的报文。
具体实现时,PE1可以针对源IP地址2001:1:0:0:1::5678查询本地映射关系,然后采用对应的内网地址块(2022:1:0:1::X/64)的掩码64更新该源IP地址的左64比特,保持源IP地址的右64比特(::0:0:0:5678)不变,得到该源IP地址对应的内网地址2022:1:0:1:1::5678。
同理,PE1可以针对目的IP地址2001:2:0:0:1::1234查询远端映射关系,然后采用对应的内网地址块(2022:2:0:1::X/64)的掩码64更新该目的IP地址的左64比特,保持目的IP地址的右64比特(::0:0:0:1234)不变,得到该目的IP地址对应的内网地址2022:2:0:1:1::1234。
例如,PE1中的网络地址映射关系包括表项F1至表项F6。首先,PE1针对目的IP地址2001:2:0:0:1::1234查询FIB,匹配到表项F2,进而获得remote-site-nat的指示及对应的内网地址块2022:2:0:1::X/64,并对报文进行DNAT。然后,PE1针对源IP地址2001:1:0:0:1::5678查询FIB,匹配到表项F1,进而获得local-site-nat的指示及对应的内网地址块2022:1:0:1::X/64,并对报文进行SNAT。
在步骤S35中,PE1向PE2发送源IP地址为2022:1:0:1:1::5678、目的IP地址为2022:2:0:1:1::1234的报文。
在步骤S36中,PE2根据对应关系(vpnx,2001:1:0:0::X/64,2022:1:0:1::X/64)对报文进行反向SNAT,并根据对应关系(vpnx,2001:2:0:0::X/64,2022:2:0:1::X/64)对报文进行反向DNAT,得到源IP地址为2001:1:0:0:1::5678、目的IP地址为2001:2:0:0:1::1234的报文。
具体实现时,PE2可以针对源IP地址2022:1:0:1:1::5678查询远端映射关系,然后采用对应的外网地址块(2001:1:0:0:1::X/64)的掩码64更新该源IP地址的左64比特,保持源IP地址的右64比特(::0:0:0:5678)不变,得到该源IP地址对应的外网地址2001:1:0:0:1::5678。
同理,PE2可以针对目的IP地址2022:2:0:1:1::1234查询本地映射关系,然后采用对应的外网地址块(2001:2:0:0:1::X/64)的掩码64更新该目的IP地址的左64比特,保持目的IP地址的右64比特(::0:0:0:1234)不变,得到该目的IP地址对应的外网地址2001:2:0:0:1::1234。
在步骤S37中,PE2向边缘设备6022发送源IP地址为2001:1:0:0:1::5678、目的IP地址为2001:2:0:0:1::1234的报文。
在步骤S38中,边缘设备6022根据对应关系(vpne,2001:db8:0:0:1::X/80,2001:1:0:0:1::X/80)对报文进行反向SNAT,并根据对应关系(vpne,2001:db8:0:0:2::X/80,2001:2:0:0:1::X/80)对报文进行反向DNAT,得到源IP地址为2001:db8:0:0:1::5678、目的IP地址为2001:db8:0:0:2::1234的报文。
具体实现时,边缘设备6022可以针对源IP地址2001:1:0:0:1::5678查询远端映射关系,然后采用对应的内网地址块(2001:db8:0:0:1::X/80)的掩码80更新该源IP地址的左80比特,保持源IP地址的右48比特(::0:0:5678)不变,得到该源IP地址对应的内网地址2001:db8:0:0:1::5678。
同理,边缘设备6022可以针对目的IP地址2001:2:0:0:1::1234查询本地映射关系,然后采用对应的内网地址块(2001:db8:0:0:2::X/80)的掩码80更新该目的IP地址的左80比特,保持目的IP地址的右48比特(::0:0:1234)不变,得到该目的IP地址对应的内网地址2001:db8:0:0:2::1234。
在步骤S39中,边缘设备6022向主机6021a发送源IP地址为2001:db8:0:0:1::5678、目的IP地址为2001:db8:0:0:2::1234的报文。
主机6021a接收到的报文与主机6011a发出的报文相同。
上述方法900中,报文在运营商网络中传输时,运营商网络的边缘设备可以对报文做一定的更改。例如,PE1发送给PE2的报文中,PE1还可以在IPv6头中额外携带有IPv6扩展头,比如路由头(routing header,RH)扩展头,或者目的选项头(destination optionsheader,DoH)扩展头,或者封装安全载荷(encapsulation security payload,ESP)扩展头。也就是说,PE1将一个不带IPv6扩展头的IPv6报文通过网络地址转换更改了源IP地址和目的IP地址的同时,还可以在IPv6头后面增加IPv6扩展头,进一步地,PE2可以对携带有IPv6扩展头的IPv6报文进行网络地址转换并删除了该IPv6扩展头。
本申请实施例提供的报文传输方法可以应用于多层网络,多层网络中的边缘设备可以对报文的网络地址进行嵌套转换。
本申请实施例提供的上述报文传输方法的步骤的先后顺序能够进行适当调整,步骤也能够根据情况进行相应增减。任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化的方法,都应涵盖在本申请的保护范围之内。
图10是本申请另一实施例提供的一种报文传输方法的流程示意图,应用该方法的网络架构至少包括第一设备和第二设备,该网络架构还可以包括第三设备和/或网络控制器。举例来说,该网络架构例如可以是图3所示的网络架构,第一设备例如可以是图3所示的边缘设备3012,第二设备例如可以是图3所示的边缘设备3022,网络控制器例如可以是图3所示的网络控制器303。或者,该网络架构例如可以是图4所示的网络架构,第一设备例如可以是图4所示的边缘设备4012,第二设备例如可以是图4所示的边缘设备4022,网络控制器例如可以是图4所示的网络控制器404。或者,该网络架构例如可以是图5所示的网络架构,第一设备例如可以是图5所示的边缘设备5012,第二设备例如可以是图5所示的边缘设备5032,网络控制器例如可以是图5所示的网络控制器504。或者,该网络架构例如可以是图6所示的网络架构,第一设备例如可以是图6所示的边缘设备6012,第二设备例如可以是图6所示的边缘设备6022,网络控制器例如可以是图6所示的网络控制器605。该方法具体可以用于实现图7至图9所对应任一实施例所示的方法。如图10所示,该方法包括以下步骤1001至步骤1003。
步骤1001、第一设备接收来自第一主机的第一报文,第一报文的源IP地址为第一主机的第一内网地址,第一报文的目的IP地址为第二主机的第二内网地址,第一主机位于第一站点,第二主机位于第二站点,第一设备为第一站点的边缘设备。
步骤1002、第一设备根据网络地址映射关系,对第一报文分别进行SNAT和DNAT,得到第二报文,该网络地址映射关系包括多个站点的内网地址与外网地址的对应关系,该多个站点包括第一站点和第二站点,第二报文的源IP地址为网络地址映射关系中与第一内网地址对应的第一外网地址,第二报文的目的IP地址为网络地址映射关系中与第二内网地址对应的第二外网地址。
步骤1003、第一设备向第二设备发送第二报文,第二设备为第二站点的边缘设备。
当该方法具体用于实现上述图7所示的方法实施例时,第一设备例如可以是设备1,第二设备例如可以是设备2,第一站点例如可以是站点1,第二站点例如可以是站点2,第一主机例如可以是主机1,第二主机例如可以是主机2,第一报文例如可以是报文1,第二报文例如可以是报文2,网络地址映射关系例如可以是网络地址映射关系1。步骤1001至步骤1003的具体实现过程,可参考图7所示的实施例中的相关说明,此处不再赘述。或者,当该方法具体用于实现上述图8所示的方法实施例时,第一设备例如可以是设备3,第二设备例如可以是设备4,第一主机例如可以是主机3,第二主机例如可以是主机4,第一站点例如可以是站点3,第二站点例如可以是站点4,第一报文例如可以是报文3,第二报文例如可以是报文4,网络地址映射关系例如可以是网络地址映射关系3。步骤1001至步骤1003的具体实现过程,可参考图8所示的实施例中的相关说明,此处不再赘述。或者,当该方法具体用于实现上述图9所示的方法实施例时,第一设备例如可以是设备6,第二设备例如可以是设备9,第一主机例如可以是主机5,第二主机例如可以是主机6,第一站点例如可以是站点6,第二站点例如可以是站点7,第一报文例如可以是报文5,第二报文例如可以是报文6,网络地址映射关系例如可以是网络地址映射关系5。步骤1001至步骤1003的具体实现过程,可参考图9所示的实施例中的相关说明,此处不再赘述。
一种具体的实施方式,第一主机和第二主机属于同一私有网络。该私有网络可以采用VPN实现。
一种具体的实施方式,第一设备接收来自第三设备的第三报文。第三报文的源IP地址为第三站点的第三外网地址。第三报文的目的IP地址为第一站点的第四外网地址。第三站点为多个站点中除第一站点以外的任一站点。第三设备为第三站点的边缘设备。第一设备根据网络地址映射关系,对第三报文分别进行SNAT和DNAT,得到第四报文。第四报文的源IP地址为网络地址映射关系中与第三外网地址对应的第三内网地址。第四报文的目的IP地址为网络地址映射关系中与第四外网地址对应的第四内网地址。第一设备向位于第一站点的第三主机发送第四报文,第三主机的IP地址为第四内网地址。
一种具体的实施方式,多个站点部署有多个VPN,网络地址映射关系包括内网地址、外网地址和VPN标识的对应关系,VPN标识用于指示对应的内网地址所属的VPN。
一种具体的实施方式,网络地址映射关系包括内网地址块、外网地址块和VPN标识的对应关系,VPN标识用于指示对应的内网地址块所属的VPN。
一种具体的实施方式,内网地址块和外网地址块的对应关系采用掩码的方式表示。
一种具体的实施方式,第一设备还获取第一站点的内网地址与外网地址的对应关系。第一设备向第二设备发送第一消息,第一消息包括第一站点的内网地址与外网地址的对应关系。
一种具体的实施方式,第一设备获取第一站点的内网地址与外网地址的对应关系的一种实现方式,包括:第一设备获取第一站点的多个内网地址。第一设备根据外网地址空间,为第一站点的多个内网地址分配对应的外网地址,得到第一站点的内网地址与外网地址的对应关系。
一种具体的实施方式,外网地址空间包括以下至少一种:第一设备的物理接口的外网地址,第一设备的逻辑接口的外网地址,第一设备的基于IPv6数据面的段路由位置标识所代表的IPv6地址块中的地址。
一种具体的实施方式,第一设备向第二设备发送第一消息的一种实现方式,包括:第一设备通过网络控制器向第二设备发送第一消息。
一种具体的实施方式,第一消息为BGP消息。
一种具体的实施方式,第一设备还接收第二设备发送的第二消息,第二消息包括第二站点的内网地址与外网地址的对应关系。
一种具体的实施方式,网络地址映射关系保存在第一设备的路由信息表和/或转发信息表中。
一种具体的实施方式,网络地址映射关系包括本地映射关系和远端映射关系。本地映射关系包括第一站点的内网地址与外网地址的对应关系。远端映射关系包括多个站点中除第一站点以外的其它站点的内网地址与外网地址的对应关系。第一设备根据网络地址映射关系,对第一报文进行SNAT和DNAT的一种实现方式,包括:第一设备根据本地映射关系对第一报文进行SNAT,以将第一报文的源IP地址由第一内网地址转换为第一外网地址,以及,根据远端映射关系对第一报文进行DNAT,以将第一报文的目的IP地址由第二内网地址转换为第二外网地址。
一种具体的实施方式,内网地址为IPv4地址或IPv6地址,外网地址为IPv6地址。
图11是本申请另一实施例提供的另一种报文传输方法的流程示意图,应用该方法的网络架构至少包括第一设备和第二设备,该网络架构还可以包括第三设备和/或网络控制器。举例来说,该网络架构例如可以是图3所示的网络架构,第一设备例如可以是图3所示的边缘设备3012,第二设备例如可以是图3所示的边缘设备3022,网络控制器例如可以是图3所示的网络控制器303。或者,该网络架构例如可以是图4所示的网络架构,第一设备例如可以是图4所示的边缘设备4012,第二设备例如可以是图4所示的边缘设备4022,网络控制器例如可以是图4所示的网络控制器404。或者,该网络架构例如可以是图5所示的网络架构,第一设备例如可以是图5所示的边缘设备5012,第二设备例如可以是图5所示的边缘设备5032,网络控制器例如可以是图5所示的网络控制器504。或者,该网络架构例如可以是图6所示的网络架构,第一设备例如可以是图6所示的边缘设备6012,第二设备例如可以是图6所示的边缘设备6022,网络控制器例如可以是图6所示的网络控制器605。该方法具体可以用于实现图7至图9所对应任一实施例所示的方法。如图11所示,该方法包括以下步骤1101至步骤1103。
步骤1101、第一设备接收来自第二设备的第一报文,第一报文的源IP地址为第一站点的第一外网地址,第一报文的目的IP地址为第二站点的第二外网地址,第一设备为第二站点的边缘设备,第二设备为第一站点的边缘设备。
步骤1102、第一设备根据网络地址映射关系,对第一报文分别进行SNAT和DNAT,得到第二报文,该网络地址映射关系包括多个站点的内网地址与外网地址的对应关系,该多个站点包括第一站点和第二站点,第二报文的源IP地址为网络地址映射关系中与第一外网地址对应的第一内网地址,第二报文的目的IP地址为网络地址映射关系中与第二外网地址对应的第二内网地址。
步骤1103、第一设备向位于第二站点的第一主机发送第二报文,第一主机的IP地址为第二内网地址。
当该方法具体用于实现上述图7所示的方法实施例时,第一设备例如可以是设备1,第二设备例如可以是设备2,第一站点例如可以是站点1,第二站点例如可以是站点2,第一主机例如可以是主机1,第二主机例如可以是主机2,第一报文例如可以是报文1,第二报文例如可以是报文2,网络地址映射关系例如可以是网络地址映射关系1。步骤1101至步骤1103的具体实现过程,可参考图7所示的实施例中的相关说明,此处不再赘述。或者,当该方法具体用于实现上述图8所示的方法实施例时,第一设备例如可以是设备3,第二设备例如可以是设备4,第一主机例如可以是主机3,第二主机例如可以是主机4,第一站点例如可以是站点3,第二站点例如可以是站点4,第一报文例如可以是报文3,第二报文例如可以是报文4,网络地址映射关系例如可以是网络地址映射关系3。步骤1101至步骤1103的具体实现过程,可参考图8所示的实施例中的相关说明,此处不再赘述。或者,当该方法具体用于实现上述图9所示的方法实施例时,第一设备例如可以是设备6,第二设备例如可以是设备9,第一主机例如可以是主机5,第二主机例如可以是主机6,第一站点例如可以是站点6,第二站点例如可以是站点7,第一报文例如可以是报文5,第二报文例如可以是报文6,网络地址映射关系例如可以是网络地址映射关系5。步骤1101至步骤1103的具体实现过程,可参考图9所示的实施例中的相关说明,此处不再赘述。
一种具体的实施方式,第一设备接收来自第二主机的第三报文。第三报文的源IP地址为第二主机的第三内网地址。第三报文的目的IP地址为第三主机的第四内网地址。第二主机位于第二站点。第三主机位于第三站点。第三站点为多个站点中除第二站点以外的任一站点。第一设备根据网络地址映射关系,对第三报文分别进行SNAT和DNAT,得到第四报文。第四报文的源IP地址为网络地址映射关系中与第三内网地址对应的第三外网地址。第四报文的目的地址为网络地址映射关系中与第四内网地址对应的第四外网地址。第一设备向第三设备发送第四报文,第三设备为第三站点的边缘设备。
一种具体的实施方式,多个站点部署有多个VPN,网络地址映射关系包括内网地址、外网地址和VPN标识的对应关系,VPN标识用于指示对应的内网地址所属的VPN。
一种具体的实施方式,网络地址映射关系包括内网地址块、外网地址块和VPN标识的对应关系,VPN标识用于指示对应的内网地址块所属的VPN。
一种具体的实施方式,内网地址块和外网地址块的对应关系采用掩码的方式表示。
一种具体的实施方式,第一设备还获取第二站点的内网地址与外网地址的对应关系。第一设备向第二设备发送第一消息,第一消息包括第二站点的内网地址与外网地址的对应关系。
一种具体的实施方式,第一设备获取第二站点的内网地址与外网地址的对应关系的一种实现方式,包括:第一设备获取第二站点的多个内网地址。第一设备根据外网地址空间,为第二站点的多个内网地址分配对应的外网地址,得到第一站点的内网地址与外网地址的对应关系。
一种具体的实施方式,外网地址空间包括以下至少一种:第一设备的物理接口的外网地址,第一设备的逻辑接口的外网地址,第一设备的基于IPv6数据面的段路由位置标识所代表的IPv6地址块中的地址。
一种具体的实施方式,第一设备向第二设备发送第一消息的一种实现方式,包括:第一设备通过网络控制器向第二设备发送第一消息。
一种具体的实施方式,第一消息为BGP消息。
一种具体的实施方式,第一设备还接收第二设备发送的第二消息,第二消息包括第一站点的内网地址与外网地址的对应关系。
一种具体的实施方式,网络地址映射关系保存在第一设备的路由信息表和/或转发信息表中。
一种具体的实施方式,网络地址映射关系包括本地映射关系和远端映射关系。本地映射关系包括第二站点的内网地址与外网地址的对应关系。远端映射关系包括多个站点中除第二站点以外的其它站点的内网地址与外网地址的对应关系。第一设备根据网络地址映射关系,对第一报文分别进行源网络地址转换SNAT和目的网络地址转换DNAT的一种实现方式,包括:第一设备根据本地映射关系对第一报文进行DNAT,以将第一报文的目的IP地址由第二外网地址转换为第二内网地址,以及,根据远端映射关系对第一报文进行SNAT,以将第一报文的源IP地址由第一外网地址转换为第一内网地址。
一种具体的实施方式,内网地址为IPv4地址或IPv6地址,外网地址为IPv6地址。
图12是本申请另一实施例提供的又一种报文传输方法的流程示意图,应用该方法的网络架构至少包括第一设备和第二设备,该网络架构还可以包括网络控制器。举例来说,该网络架构例如可以是图3所示的网络架构,第一设备例如可以是图3所示的边缘设备3012,第二设备例如可以是图3所示的边缘设备3022,网络控制器例如可以是图3所示的网络控制器303。或者,该网络架构例如可以是图4所示的网络架构,第一设备例如可以是图4所示的边缘设备4012,第二设备例如可以是图4所示的边缘设备4022,网络控制器例如可以是图4所示的网络控制器404。或者,该网络架构例如可以是图5所示的网络架构,第一设备例如可以是图5所示的边缘设备5012,第二设备例如可以是图5所示的边缘设备5032,网络控制器例如可以是图5所示的网络控制器504。或者,该网络架构例如可以是图6所示的网络架构,第一设备例如可以是图6所示的边缘设备6012,第二设备例如可以是图6所示的边缘设备6022,网络控制器例如可以是图6所示的网络控制器605。该方法具体可以用于实现图7至图9所对应任一实施例所示的方法。如图12所示,该方法包括以下步骤1201至步骤1202。
步骤1201、第一设备获取第一站点的内网地址与外网地址的对应关系,第一设备为第一站点的边缘设备,第一站点的内网地址与外网地址的对应关系用于第一设备对从第一站点发往其它站点的报文进行SNAT,以及,对从其它站点发往第一站点的报文进行DNAT。
步骤1202、第一设备向第二设备发送第一消息,第一消息包括第一站点的内网地址与外网地址的对应关系,第二设备为第二站点的边缘设备,第一站点的内网地址与外网地址的对应关系用于第二设备对从第一站点发往第二站点的报文进行SNAT,以及,对从第二站点发往第一站点的报文进行DNAT。
当该方法具体用于实现上述图7所示的方法实施例时,第一设备例如可以是设备1,第二设备例如可以是设备2,第一站点例如可以是站点1,第二站点例如可以是站点2,第一主机例如可以是主机1,第二主机例如可以是主机2。或者,当该方法具体用于实现上述图8所示的方法实施例时,第一设备例如可以是设备3,第二设备例如可以是设备4,第一主机例如可以是主机3,第二主机例如可以是主机4,第一站点例如可以是站点3,第二站点例如可以是站点4。或者,当该方法具体用于实现上述图9所示的方法实施例时,第一设备例如可以是设备6,第二设备例如可以是设备9,第一主机例如可以是主机5,第二主机例如可以是主机6,第一站点例如可以是站点6,第二站点例如可以是站点7。
一种具体的实施方式,第一设备还接收第二设备发送的第二消息。第二消息包括第二站点的内网地址与外网地址的对应关系。第二站点的内网地址与外网地址的对应关系用于第一设备对从第二站点发往第一站点的报文进行SNAT,以及,对从第一站点发往第二站点的报文进行DNAT。
一种具体的实施方式,第一设备获取第一站点的内网地址与外网地址的对应关系的一种实现方式,包括:第一设备获取第一站点的多个内网地址。第一设备根据外网地址空间,为第一站点的多个内网地址分配对应的外网地址,得到第一站点的内网地址与外网地址的对应关系。
一种具体的实施方式,外网地址空间包括以下至少一种:第一设备的物理接口的外网地址,第一设备的逻辑接口的外网地址,第一设备的基于IPv6数据面的段路由位置标识所代表的IPv6地址块中的地址。
一种具体的实施方式,第一设备向第二设备发送第一消息的一种实现方式,包括:第一设备通过网络控制器向第二设备发送第一消息。
一种具体的实施方式,第一消息为BGP消息。
一种具体的实施方式,第一设备在第一设备的路由信息表和/或转发信息表中保存第一站点的内网地址与外网地址的对应关系。
以下对本申请实施例的虚拟装置举例说明。
图13是本申请实施例提供的一种报文传输装置的结构示意图。该报文传输装置例如为第一设备。如图13所示,报文传输装置1300包括第一收发模块1301、处理模块1302和第二收发模块1303。
第一收发模块1301,用于接收来自第一主机的第一报文,第一报文的源IP地址为第一主机的第一内网地址,第一报文的目的IP地址为第二主机的第二内网地址,第一主机位于第一站点,第二主机位于第二站点,第一设备为第一站点的边缘设备。
处理模块1302,用于根据网络地址映射关系,对第一报文分别进行SNAT和DNAT,得到第二报文,网络地址映射关系包括多个站点的内网地址与外网地址的对应关系,多个站点包括第一站点和第二站点,第二报文的源IP地址为网络地址映射关系中与第一内网地址对应的第一外网地址,第二报文的目的IP地址为网络地址映射关系中与第二内网地址对应的第二外网地址。
第二收发模块1303,用于向第二设备发送第二报文,第二设备为第二站点的边缘设备。
一种具体的实施方式,第二收发模块1303,还用于接收来自第三设备的第三报文,第三报文的源IP地址为第三站点的第三外网地址,第三报文的目的IP地址为第一站点的第四外网地址,第三站点为多个站点中除第一站点以外的任一站点,第三设备为第三站点的边缘设备。处理模块1302,还用于根据网络地址映射关系,对第三报文分别进行SNAT和DNAT,得到第四报文,第四报文的源IP地址为网络地址映射关系中与第三外网地址对应的第三内网地址,第四报文的目的IP地址为网络地址映射关系中与第四外网地址对应的第四内网地址。第一收发模块1301,还用于向位于第一站点的第三主机发送第四报文,第三主机的IP地址为第四内网地址。
一种具体的实施方式,多个站点部署有多个VPN,网络地址映射关系包括内网地址、外网地址和VPN标识的对应关系,VPN标识用于指示对应的内网地址所属的VPN。
一种具体的实施方式,网络地址映射关系包括内网地址块、外网地址块和VPN标识的对应关系,VPN标识用于指示对应的内网地址块所属的VPN。
一种具体的实施方式,内网地址块和外网地址块的对应关系采用掩码的方式表示。
一种具体的实施方式,如图13所示,报文传输装置1300还包括获取模块1304,用于获取第一站点的内网地址与外网地址的对应关系。第二收发模块1303,还用于向第二设备发送第一消息,第一消息包括第一站点的内网地址与外网地址的对应关系。
一种具体的实施方式,获取模块1304,用于:获取第一站点的多个内网地址;根据外网地址空间,为多个内网地址分配对应的外网地址,得到第一站点的内网地址与外网地址的对应关系。
一种具体的实施方式,外网地址空间包括以下至少一种:第一设备的物理接口的外网地址,第一设备的逻辑接口的外网地址,第一设备的基于IPv6数据面的段路由位置标识所代表的IPv6地址块中的地址。
一种具体的实施方式,第二收发模块1303,用于通过网络控制器向第二设备发送第一消息。
一种具体的实施方式,第一消息为BGP消息。
一种具体的实施方式,第二收发模块1303,还用于接收第二设备发送的第二消息,第二消息包括第二站点的内网地址与外网地址的对应关系。
一种具体的实施方式,网络地址映射关系保存在第一设备的路由信息表和/或转发信息表中。
一种具体的实施方式,网络地址映射关系包括本地映射关系和远端映射关系,本地映射关系包括第一站点的内网地址与外网地址的对应关系,远端映射关系包括多个站点中除第一站点以外的其它站点的内网地址与外网地址的对应关系,处理模块1302,用于:根据本地映射关系对第一报文进行SNAT,以将第一报文的源IP地址由第一内网地址转换为第一外网地址,以及,根据远端映射关系对第一报文进行DNAT,以将第一报文的目的IP地址由第二内网地址转换为第二外网地址。
一种具体的实施方式,内网地址为IPv4地址或IPv6地址,外网地址为IPv6地址。
图14是本申请实施例提供的另一种报文传输装置的结构示意图。该报文传输装置例如为第一设备。如图14所示,报文传输装置1400包括第一收发模块1401、处理模块1402和第二收发模块1403。
第一收发模块1401,用于接收来自第二设备的第一报文,第一报文的源IP地址为第一站点的第一外网地址,第一报文的目的IP地址为第二站点的第二外网地址,第一设备为第二站点的边缘设备,第二设备为第一站点的边缘设备。
处理模块1402,用于根据网络地址映射关系,对第一报文分别进行SNAT和DNAT,得到第二报文,网络地址映射关系包括多个站点的内网地址与外网地址的对应关系,多个站点包括第一站点和第二站点,第二报文的源IP地址为网络地址映射关系中与第一外网地址对应的第一内网地址,第二报文的目的IP地址为网络地址映射关系中与第二外网地址对应的第二内网地址。
第二收发模块1403,用于向位于第二站点的第一主机发送第二报文,第一主机的IP地址为第二内网地址。
一种具体的实施方式,第二收发模块1403,还用于接收来自第二主机的第三报文,第三报文的源IP地址为第二主机的第三内网地址,第三报文的目的IP地址为第三主机的第四内网地址,第二主机位于第二站点,第三主机位于第三站点,第三站点为多个站点中除第二站点以外的任一站点。处理模块1402,还用于根据网络地址映射关系,对第三报文分别进行SNAT和DNAT,得到第四报文,第四报文的源IP地址为网络地址映射关系中与第三内网地址对应的第三外网地址,第四报文的目的地址为网络地址映射关系中与第四内网地址对应的第四外网地址。第一收发模块1401,还用于向第三设备发送第四报文,第三设备为第三站点的边缘设备。
一种具体的实施方式,多个站点部署有多个VPN,网络地址映射关系包括内网地址、外网地址和VPN标识的对应关系,VPN标识用于指示对应的内网地址所属的VPN。
一种具体的实施方式,网络地址映射关系包括内网地址块、外网地址块和VPN标识的对应关系,VPN标识用于指示对应的内网地址块所属的VPN。
一种具体的实施方式,内网地址块和外网地址块的对应关系采用掩码的方式表示。
一种具体的实施方式,如图14所示,报文传输装置1400还包括获取模块1404,用于获取第二站点的内网地址与外网地址的对应关系。第一收发模块1401,还用于向第二设备发送第一消息,第一消息包括第二站点的内网地址与外网地址的对应关系。
一种具体的实施方式,获取模块1404,用于:获取第二站点的多个内网地址;根据外网地址空间,为多个内网地址分配对应的外网地址,得到第一站点的内网地址与外网地址的对应关系。
一种具体的实施方式,外网地址空间包括以下至少一种:第一设备的物理接口的外网地址,第一设备的逻辑接口的外网地址,第一设备的基于IPv6数据面的段路由位置标识所代表的IPv6地址块中的地址。
一种具体的实施方式,第一收发模块1401,用于通过网络控制器向第二设备发送第一消息。
一种具体的实施方式,第一消息为BGP消息。
一种具体的实施方式,第一收发模块1401,还用于接收第二设备发送的第二消息,第二消息包括第一站点的内网地址与外网地址的对应关系。
一种具体的实施方式,网络地址映射关系保存在第一设备的路由信息表和/或转发信息表中。
一种具体的实施方式,网络地址映射关系包括本地映射关系和远端映射关系,本地映射关系包括第二站点的内网地址与外网地址的对应关系,远端映射关系包括多个站点中除第二站点以外的其它站点的内网地址与外网地址的对应关系,处理模块1402,用于:根据本地映射关系对第一报文进行DNAT,以将第一报文的目的IP地址由第二外网地址转换为第二内网地址,以及,根据远端映射关系对第一报文进行SNAT,以将第一报文的源IP地址由第一外网地址转换为第一内网地址。
一种具体的实施方式,内网地址为IPv4地址或IPv6地址,外网地址为IPv6地址。
图15是本申请实施例提供的又一种报文传输装置的结构示意图。该报文传输装置例如为第一设备。如图15所示,报文传输装置1500包括获取模块1501和收发模块1502。
获取模块1501,用于获取第一站点的内网地址与外网地址的对应关系,第一设备为第一站点的边缘设备,第一站点的内网地址与外网地址的对应关系用于第一设备对从第一站点发往其它站点的报文进行SNAT,以及,对从其它站点发往第一站点的报文进行DNAT。
收发模块1502,用于向第二设备发送第一消息,第一消息包括第一站点的内网地址与外网地址的对应关系,第二设备为第二站点的边缘设备,第一站点的内网地址与外网地址的对应关系用于第二设备对从第一站点发往第二站点的报文进行SNAT,以及,对从第二站点发往第一站点的报文进行DNAT。
一种具体的实施方式,收发模块1502,还用于接收第二设备发送的第二消息,第二消息包括第二站点的内网地址与外网地址的对应关系,第二站点的内网地址与外网地址的对应关系用于第一设备对从第二站点发往第一站点的报文进行SNAT,以及,对从第一站点发往第二站点的报文进行DNAT。
一种具体的实施方式,获取模块1501,用于:获取第一站点的多个内网地址;根据外网地址空间,为多个内网地址分配对应的外网地址,得到第一站点的内网地址与外网地址的对应关系。
一种具体的实施方式,外网地址空间包括以下至少一种:第一设备的物理接口的外网地址,第一设备的逻辑接口的外网地址,第一设备的基于IPv6数据面的段路由位置标识所代表的IPv6地址块中的地址。
一种具体的实施方式,收发模块1502,用于通过网络控制器向第二设备发送第一消息。
一种具体的实施方式,第一消息为BGP消息。
一种具体的实施方式,报文传输装置1500还包括处理模块1503,用于在第一设备的路由信息表和/或转发信息表中保存第一站点的内网地址与外网地址的对应关系。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
以下对本申请实施例涉及的硬件结构举例说明。
图16是本申请实施例提供的一种报文传输装置1600的框图。该报文传输装置1600为网络设备。一种实现方式,该报文传输装置1600可以是SD-WAN中站点的边缘设备,例如可以是CPE。另一种实现方式,该报文传输装置1600可以是运营商的L3VPN的边缘设备,例如可以是PE。如图16所示,该装置1600包括:处理器1601和存储器1602。
存储器1602,用于存储计算机可读指令;
处理器1601,用于调用所述计算机可读指令,按照所述计算机可读指令的指示,可以执行如图7所示方法中由设备1或设备2、图8所示方法中由设备3或设备4、或者图9所示方法中设备6、设备7、设备8或设备9可以执行的全部操作。
一种具体的实施方式,装置1600还可以包括通信接口1603。其中,存储器1602,处理器1601和通信接口1603相互通信连接。
图17是本申请实施例提供的另一种报文传输装置1700的框图。该报文传输装置1700为网络设备。一种实现方式,该报文传输装置1700可以是SD-WAN中站点的边缘设备,例如可以是CPE。另一种实现方式,该报文传输装置1700可以是运营商的L3VPN的边缘设备,例如可以是PE。如图17所示,该装置1700包括:通信接口1701;以及与所述通信接口1701连接的处理器1702。根据所述通信接口1701和所述处理器1702,报文传输装置1700可以执行如图7所示方法中由设备1或设备2、图8所示方法中由设备3或设备4、或者图9所示方法中设备6、设备7、设备8或设备9可以执行的全部操作。其中,通信接口1701用于实现收发操作,处理器1702用于实现收发以外的操作。举例来说,当装置1700为图7所示方法中的设备2时,通信接口1701用于接收设备1发送的报文2,处理器1702用于根据网络地址映射关系2,对报文2分别进行SNAT和DNAT,得到报文1。
在本申请实施例中,处理器可以是中央处理器(central processing unit,CPU)。处理器可以包括一个或者一个以上处理核心,处理器通过运行计算机程序执行各种功能应用以及数据处理。处理器可以通过通信总线和存储器、通信接口相连。
处理器还可以进一步包括硬件芯片。上述硬件芯片可以是专用集成电路(application specific integrated circuits,ASIC),可编程逻辑器件(programmablelogic device,PLD)或其组合。上述PLD可以是复杂可编程逻辑器件(complexprogrammable logic device,CPLD),现场可编程逻辑门阵列(field-programmable gatearray,FPGA),通用阵列逻辑(generic array logic,GAL)或其任意组合。一种具体的实施方式,该硬件芯片可用于实现加密/解密操作。
存储器可以包括易失性存储器(volatile memory),例如随机存取存储器(randomaccess memory,RAM)。存储器也可以包括非易失性存储器(non-volatile memory),例如快闪存储器(flash memory),硬盘(hard disk drive,HDD)或固态硬盘(solid-state drive,SSD)。存储器还可以包括上述种类的存储器的组合。
通信接口可以为多个,通信接口用于与其它设备进行通信。通信接口可以包括有线通信接口,无线通信接口或其组合。其中,有线通信接口例如可以为以太网接口。以太网接口可以是光接口,电接口或其组合。无线通信接口可以为无线局域网(wireless localarea network,WLAN)接口,蜂窝网络通信接口或其组合等。
在上述实施例中,可以全部或部分地通过硬件、固件或者其任意组合来实现。当具体实现过程中涉及软件时,可以全部或部分地体现为计算机程序产品的形式。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如SSD)等。
以下对本申请实施例的系统举例说明。
本申请实例还提供了一种报文传输系统,包括:第一设备和第二设备。第一设备为第一站点的边缘设备,第二设备为第二站点的边缘设备。第一设备和第二设备中分别存储有第一网络地址映射关系,第一网络地址映射关系包括多个站点的内网地址与外网地址的对应关系,多个站点包括第一站点和第二站点。当该系统具体用于实现上述图7所示的方法实施例时,第一设备例如可以是设备1,第二设备例如可以是设备2,第一站点例如可以是站点1,第二站点例如可以是站点2。或者,当该系统具体用于实现上述图8所示的方法实施例时,第一设备例如可以是设备3,第二设备例如可以是设备4,第一站点例如可以是站点3,第二站点例如可以是站点4。或者,当该系统具体用于实现上述图9所示的方法实施例时,第一设备例如可以是设备6,第二设备例如可以是设备9,第一站点例如可以是站点6,第二站点例如可以是站点7。第一设备和第二设备的功能可参考上述方法实施例的相关描述,本申请实施例在此不再赘述。
一种具体的实施方式,该系统还包括第三设备,第一设备与第二设备之间通过第三设备通信连接。当该系统具体用于实现上述图8所示的方法实施例时,第三设备例如可以是设备5,第三设备的功能可参考上述方法实施例中的相关描述,本申请实施例在此不再赘述。
一种具体的实施方式,该系统还包括运营商网络,第一设备与第二设备之间通过运营商网络通信连接,运营商网络包括第一PE设备和第二PE设备,第一设备与第一PE设备连接,第二设备与第二PE设备连接。当该系统具体用于实现上述图9所示的方法实施例时,第一PE设备例如可以是设备7,第二PE设备例如可以是设备8,第一PE设备和第二PE设备的功能可参考上述方法实施例中的相关描述,本申请实施例在此不再赘述。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
在本申请实施例中,术语“第一”、“第二”和“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。
本申请中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
需要说明的是,本申请所涉及的信息(包括但不限于用户设备信息、用户个人信息等)、数据(包括但不限于用于分析的数据、存储的数据、展示的数据等)以及信号,均为经用户授权或者经过各方充分授权的,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。例如,本申请中涉及到的网络地址映射关系都是在充分授权的情况下获取的。
以上所述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的构思和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (39)
1.一种报文传输方法,其特征在于,所述方法包括:
第一设备接收来自第一主机的第一报文,所述第一报文的源互联网协议IP地址为所述第一主机的第一内网地址,所述第一报文的目的IP地址为第二主机的第二内网地址,所述第一主机位于第一站点,所述第二主机位于第二站点,所述第一设备为所述第一站点的边缘设备;
所述第一设备根据网络地址映射关系,对所述第一报文分别进行源网络地址转换SNAT和目的网络地址转换DNAT,得到第二报文,所述网络地址映射关系包括多个站点的内网地址与外网地址的对应关系,所述多个站点包括所述第一站点和所述第二站点,所述第二报文的源IP地址为所述网络地址映射关系中与所述第一内网地址对应的第一外网地址,所述第二报文的目的IP地址为所述网络地址映射关系中与所述第二内网地址对应的第二外网地址;
所述第一设备向第二设备发送所述第二报文,所述第二设备为所述第二站点的边缘设备。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
所述第一设备接收来自第三设备的第三报文,所述第三报文的源IP地址为第三站点的第三外网地址,所述第三报文的目的IP地址为所述第一站点的第四外网地址,所述第三站点为所述多个站点中除所述第一站点以外的任一站点,所述第三设备为所述第三站点的边缘设备;
所述第一设备根据所述网络地址映射关系,对所述第三报文分别进行SNAT和DNAT,得到第四报文,所述第四报文的源IP地址为所述网络地址映射关系中与所述第三外网地址对应的第三内网地址,所述第四报文的目的IP地址为所述网络地址映射关系中与所述第四外网地址对应的第四内网地址;
所述第一设备向位于所述第一站点的第三主机发送所述第四报文,所述第三主机的IP地址为所述第四内网地址。
3.根据权利要求1或2所述的方法,其特征在于,所述多个站点部署有多个虚拟专用网络VPN,所述网络地址映射关系包括内网地址、外网地址和VPN标识的对应关系,所述VPN标识用于指示对应的内网地址所属的VPN。
4.根据权利要求3所述的方法,其特征在于,所述网络地址映射关系包括内网地址块、外网地址块和VPN标识的对应关系,所述VPN标识用于指示对应的内网地址块所属的VPN。
5.根据权利要求4所述的方法,其特征在于,所述内网地址块和所述外网地址块的对应关系采用掩码的方式表示。
6.根据权利要求1至5任一所述的方法,其特征在于,所述方法还包括:
所述第一设备获取所述第一站点的内网地址与外网地址的对应关系;
所述第一设备向所述第二设备发送第一消息,所述第一消息包括所述第一站点的内网地址与外网地址的对应关系。
7.根据权利要求6所述的方法,其特征在于,所述第一设备获取所述第一站点的内网地址与外网地址的对应关系,包括:
所述第一设备获取所述第一站点的多个内网地址;
所述第一设备根据外网地址空间,为所述多个内网地址分配对应的外网地址,得到所述第一站点的内网地址与外网地址的对应关系。
8.根据权利要求7所述的方法,其特征在于,所述外网地址空间包括以下至少一种:所述第一设备的物理接口的外网地址,所述第一设备的逻辑接口的外网地址,所述第一设备的基于IPv6数据面的段路由位置标识所代表的IPv6地址块中的地址。
9.根据权利要求6至8任一所述的方法,其特征在于,所述第一设备向所述第二设备发送第一消息,包括:
所述第一设备通过网络控制器向所述第二设备发送所述第一消息。
10.根据权利要求6至9任一所述的方法,其特征在于,所述第一消息为边界网关协议BGP消息。
11.根据权利要求1至10任一所述的方法,其特征在于,所述方法还包括:
所述第一设备接收所述第二设备发送的第二消息,所述第二消息包括所述第二站点的内网地址与外网地址的对应关系。
12.根据权利要求1至11任一所述的方法,其特征在于,所述网络地址映射关系保存在所述第一设备的路由信息表和/或转发信息表中。
13.根据权利要求1至12任一所述的方法,其特征在于,所述网络地址映射关系包括本地映射关系和远端映射关系,所述本地映射关系包括所述第一站点的内网地址与外网地址的对应关系,所述远端映射关系包括所述多个站点中除所述第一站点以外的其它站点的内网地址与外网地址的对应关系,所述第一设备根据网络地址映射关系,对所述第一报文分别进行源网络地址转换SNAT和目的网络地址转换DNAT,包括:
所述第一设备根据所述本地映射关系对所述第一报文进行SNAT,以将所述第一报文的源IP地址由所述第一内网地址转换为所述第一外网地址,以及,根据所述远端映射关系对所述第一报文进行DNAT,以将所述第一报文的目的IP地址由所述第二内网地址转换为所述第二外网地址。
14.根据权利要求1至13任一所述的方法,其特征在于,所述内网地址为IPv4地址或IPv6地址,所述外网地址为IPv6地址。
15.一种报文传输方法,其特征在于,所述方法包括:
第一设备接收来自第二设备的第一报文,所述第一报文的源互联网协议IP地址为第一站点的第一外网地址,所述第一报文的目的IP地址为第二站点的第二外网地址,所述第一设备为所述第二站点的边缘设备,所述第二设备为所述第一站点的边缘设备;
所述第一设备根据网络地址映射关系,对所述第一报文分别进行源网络地址转换SNAT和目的网络地址转换DNAT,得到第二报文,所述网络地址映射关系包括多个站点的内网地址与外网地址的对应关系,所述多个站点包括所述第一站点和所述第二站点,所述第二报文的源IP地址为所述网络地址映射关系中与所述第一外网地址对应的第一内网地址,所述第二报文的目的IP地址为所述网络地址映射关系中与所述第二外网地址对应的第二内网地址;
所述第一设备向位于所述第二站点的第一主机发送所述第二报文,所述第一主机的IP地址为所述第二内网地址。
16.一种报文传输方法,其特征在于,所述方法包括:
第一设备获取第一站点的内网地址与外网地址的对应关系,所述第一设备为所述第一站点的边缘设备,所述第一站点的内网地址与外网地址的对应关系用于所述第一设备对从所述第一站点发往其它站点的报文进行源网络地址转换SNAT,以及,对从其它站点发往所述第一站点的报文进行目的网络地址转换DNAT;
所述第一设备向第二设备发送第一消息,所述第一消息包括所述第一站点的内网地址与外网地址的对应关系,所述第二设备为第二站点的边缘设备,所述第一站点的内网地址与外网地址的对应关系用于所述第二设备对从所述第一站点发往所述第二站点的报文进行SNAT,以及,对从所述第二站点发往所述第一站点的报文进行DNAT。
17.一种第一设备,其特征在于,所述第一设备包括:
第一收发模块,用于接收来自第一主机的第一报文,所述第一报文的源互联网协议IP地址为所述第一主机的第一内网地址,所述第一报文的目的IP地址为第二主机的第二内网地址,所述第一主机位于第一站点,所述第二主机位于第二站点,所述第一设备为所述第一站点的边缘设备;
处理模块,用于根据网络地址映射关系,对所述第一报文分别进行源网络地址转换SNAT和目的网络地址转换DNAT,得到第二报文,所述网络地址映射关系包括多个站点的内网地址与外网地址的对应关系,所述多个站点包括所述第一站点和所述第二站点,所述第二报文的源IP地址为所述网络地址映射关系中与所述第一内网地址对应的第一外网地址,所述第二报文的目的IP地址为所述网络地址映射关系中与所述第二内网地址对应的第二外网地址;
第二收发模块,用于向第二设备发送所述第二报文,所述第二设备为所述第二站点的边缘设备。
18.根据权利要求17所述的第一设备,其特征在于,
所述第二收发模块,还用于接收来自第三设备的第三报文,所述第三报文的源IP地址为第三站点的第三外网地址,所述第三报文的目的IP地址为所述第一站点的第四外网地址,所述第三站点为所述多个站点中除所述第一站点以外的任一站点,所述第三设备为所述第三站点的边缘设备;
所述处理模块,还用于根据所述网络地址映射关系,对所述第三报文分别进行SNAT和DNAT,得到第四报文,所述第四报文的源IP地址为所述网络地址映射关系中与所述第三外网地址对应的第三内网地址,所述第四报文的目的IP地址为所述网络地址映射关系中与所述第四外网地址对应的第四内网地址;
所述第一收发模块,还用于向位于所述第一站点的第三主机发送所述第四报文,所述第三主机的IP地址为所述第四内网地址。
19.根据权利要求17或18所述的第一设备,其特征在于,所述多个站点部署有多个虚拟专用网络VPN,所述网络地址映射关系包括内网地址、外网地址和VPN标识的对应关系,所述VPN标识用于指示对应的内网地址所属的VPN。
20.根据权利要求19所述的第一设备,其特征在于,所述网络地址映射关系包括内网地址块、外网地址块和VPN标识的对应关系,所述VPN标识用于指示对应的内网地址块所属的VPN。
21.根据权利要求20所述的第一设备,其特征在于,所述内网地址块和所述外网地址块的对应关系采用掩码的方式表示。
22.根据权利要求17至21任一所述的第一设备,其特征在于,所述第一设备还包括:
获取模块,用于获取所述第一站点的内网地址与外网地址的对应关系;
所述第二收发模块,用于向所述第二设备发送第一消息,所述第一消息包括所述第一站点的内网地址与外网地址的对应关系。
23.根据权利要求22所述的第一设备,其特征在于,所述获取模块,用于:
获取所述第一站点的多个内网地址;
根据外网地址空间,为所述多个内网地址分配对应的外网地址,得到所述第一站点的内网地址与外网地址的对应关系。
24.根据权利要求23所述的第一设备,其特征在于,所述外网地址空间包括以下至少一种:所述第一设备的物理接口的外网地址,所述第一设备的逻辑接口的外网地址,所述第一设备的基于IPv6数据面的段路由位置标识所代表的IPv6地址块中的地址。
25.根据权利要求22至24任一所述的第一设备,其特征在于,
所述第二收发模块,用于通过网络控制器向所述第二设备发送所述第一消息。
26.根据权利要求22至25任一所述的第一设备,其特征在于,所述第一消息为边界网关协议BGP消息。
27.根据权利要求17至26任一所述的第一设备,其特征在于,
所述第二收发模块,还用于接收所述第二设备发送的第二消息,所述第二消息包括所述第二站点的内网地址与外网地址的对应关系。
28.根据权利要求17至27任一所述的第一设备,其特征在于,所述网络地址映射关系保存在所述第一设备的路由信息表和/或转发信息表中。
29.根据权利要求17至28任一所述的第一设备,其特征在于,所述网络地址映射关系包括本地映射关系和远端映射关系,所述本地映射关系包括所述第一站点的内网地址与外网地址的对应关系,所述远端映射关系包括所述多个站点中除所述第一站点以外的其它站点的内网地址与外网地址的对应关系,所述处理模块,用于:
根据所述本地映射关系对所述第一报文进行SNAT,以将所述第一报文的源IP地址由所述第一内网地址转换为所述第一外网地址,以及,根据所述远端映射关系对所述第一报文进行DNAT,以将所述第一报文的目的IP地址由所述第二内网地址转换为所述第二外网地址。
30.根据权利要求17至29任一所述的第一设备,其特征在于,所述内网地址为IPv4地址或IPv6地址,所述外网地址为IPv6地址。
31.一种第一设备,其特征在于,所述第一设备包括:
第一收发模块,用于接收来自第二设备的第一报文,所述第一报文的源互联网协议IP地址为第一站点的第一外网地址,所述第一报文的目的IP地址为第二站点的第二外网地址,所述第一设备为所述第二站点的边缘设备,所述第二设备为所述第一站点的边缘设备;
处理模块,用于根据网络地址映射关系,对所述第一报文分别进行源网络地址转换SNAT和目的网络地址转换DNAT,得到第二报文,所述网络地址映射关系包括多个站点的内网地址与外网地址的对应关系,所述多个站点包括所述第一站点和所述第二站点,所述第二报文的源IP地址为所述网络地址映射关系中与所述第一外网地址对应的第一内网地址,所述第二报文的目的IP地址为所述网络地址映射关系中与所述第二外网地址对应的第二内网地址;
第二收发模块,用于向位于所述第二站点的第一主机发送所述第二报文,所述第一主机的IP地址为所述第二内网地址。
32.一种第一设备,其特征在于,所述第一设备包括:
获取模块,用于获取第一站点的内网地址与外网地址的对应关系,所述第一设备为所述第一站点的边缘设备,所述第一站点的内网地址与外网地址的对应关系用于所述第一设备对从所述第一站点发往其它站点的报文进行源网络地址转换SNAT,以及,对从其它站点发往所述第一站点的报文进行目的网络地址转换DNAT;
收发模块,用于向第二设备发送第一消息,所述第一消息包括所述第一站点的内网地址与外网地址的对应关系,所述第二设备为第二站点的边缘设备,所述第一站点的内网地址与外网地址的对应关系用于所述第二设备对从所述第一站点发往所述第二站点的报文进行SNAT,以及,对从所述第二站点发往所述第一站点的报文进行DNAT。
33.一种报文传输系统,其特征在于,包括:第一设备和第二设备,所述第一设备为第一站点的边缘设备,所述第二设备为第二站点的边缘设备,所述第一设备和所述第二设备中分别存储有第一网络地址映射关系,所述第一网络地址映射关系包括多个站点的内网地址与外网地址的对应关系,所述多个站点包括所述第一站点和所述第二站点;
所述第一设备用于接收来自第一主机的第一报文,所述第一报文的源互联网协议IP地址为所述第一主机的第一内网地址,所述第一报文的目的IP地址为第二主机的第二内网地址,所述第一主机位于所述第一站点,所述第二主机位于所述第二站点;
所述第一设备用于根据所述第一网络地址映射关系,对所述第一报文分别进行源网络地址转换SNAT和目的网络地址转换DNAT,得到第二报文,所述第二报文的源IP地址为所述第一网络地址映射关系中与所述第一内网地址对应的第一外网地址,所述第二报文的目的IP地址为所述第一网络地址映射关系中与所述第二内网地址对应的第二外网地址;
所述第一设备用于向所述第二设备发送所述第二报文;
所述第二设备用于根据所述第一网络地址映射关系,对所述第二报文分别进行SNAT和DNAT,得到所述第一报文,并向所述第二主机发送所述第一报文。
34.根据权利要求33所述的系统,其特征在于,所述系统还包括第三设备,所述第一设备与所述第二设备之间通过所述第三设备通信连接;
所述第一设备用于向所述第三设备发送所述第二报文;
所述第三设备用于向所述第二设备发送所述第二报文。
35.根据权利要求34所述的系统,其特征在于,所述第三设备为第三站点的边缘设备。
36.根据权利要求33所述的系统,其特征在于,所述系统还包括运营商网络,所述第一设备与所述第二设备之间通过所述运营商网络通信连接,所述运营商网络包括第一运营商边缘PE设备和第二PE设备,第一PE设备和所述第二PE设备中分别存储有第二网络地址映射关系,所述第二网络地址映射关系包括所述多个站点的外网地址与所述运营商网络的内网地址的对应关系,所述第一设备与所述第一PE设备连接,所述第二设备与所述第二PE设备连接;
所述第一设备用于向所述第一PE设备发送所述第二报文;
所述第一PE设备用于根据所述第二网络地址映射关系,对所述第二报文分别进行SNAT和DNAT,得到第三报文,所述第三报文的源IP地址为所述第二网络地址映射关系中与所述第一外网地址对应的第三内网地址,所述第三报文的目的IP地址为所述第二网络地址映射关系中与所述第二外网地址对应的第四内网地址;
所述第一PE设备用于向所述第二PE设备发送所述第三报文;
所述第二PE设备用于根据所述第二网络地址映射关系,对所述第三报文分别进行SNAT和DNAT,得到所述第二报文;
所述第二PE设备用于向所述第二设备发送所述第二报文。
37.一种网络设备,其特征在于,包括:
通信接口;以及
与所述通信接口连接的处理器;
根据所述通信接口和所述处理器,实现如权利要求1至16任一所述的方法。
38.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有指令,当所述指令被处理器执行时,实现如权利要求1至16任一所述的方法。
39.一种计算机程序产品,其特征在于,包括计算机程序,所述计算机程序被处理器执行时,实现如权利要求1至16任一所述的方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210864409 | 2022-07-21 | ||
CN2022108644092 | 2022-07-21 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117478632A true CN117478632A (zh) | 2024-01-30 |
Family
ID=89629879
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211111446.2A Pending CN117478632A (zh) | 2022-07-21 | 2022-09-13 | 报文传输方法、装置及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117478632A (zh) |
-
2022
- 2022-09-13 CN CN202211111446.2A patent/CN117478632A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11425037B2 (en) | Stateless protocol translation | |
KR102486372B1 (ko) | SRv6 터널 정보를 획득하기 위한 방법, 디바이스 및 시스템 | |
EP2375644B1 (en) | Communication device having VPN accomodation function | |
US9860079B2 (en) | Redirecting packets for egress from an autonomous system using tenant specific routing and forwarding tables | |
CN104871495B (zh) | 用于叠加网络的虚拟叠加网关 | |
CN101340372B (zh) | 号码自动路由方法、更新方法、撤销方法、路由器及设备 | |
US9756013B2 (en) | Distributed mapping of address and port (MAP) between a provider edge device and customer premise equipment devices | |
US8898334B2 (en) | System for network deployment and method for mapping and data forwarding thereof | |
CN112671628B (zh) | 业务服务提供方法及系统 | |
CN111147383A (zh) | 报文转发的方法、发送报文的装置和接收报文的装置 | |
US10148458B2 (en) | Method to support multi-protocol for virtualization | |
CN111937358B (zh) | 用于结构边缘设备的多vrf通用设备互联网协议地址 | |
CN112671938B (zh) | 业务服务提供方法及系统、远端加速网关 | |
KR20230026424A (ko) | IPv6 네트워크 통신 방법, 장치 및 시스템 | |
CN110022263B (zh) | 一种数据传输的方法及相关装置 | |
CN116488958A (zh) | 网关处理方法、虚拟接入网关、虚拟业务网关及相关设备 | |
CN117478632A (zh) | 报文传输方法、装置及系统 | |
SE541314C2 (en) | Methods and apparatuses for routing data packets in a network topology | |
CN115604056B (zh) | 下游vxlan标识符的高效存储实现 | |
US20240171510A1 (en) | Packet transmission method and related device | |
CN118233364A (zh) | 报文传输方法、装置及网络设备 | |
CN115567484A (zh) | 数据转发方法、网络侧边缘路由器和网络系统 | |
CN115604056A (zh) | 下游vxlan标识符的高效存储实现 | |
CN118075186A (zh) | 用于sd-wan的通信方法、报文处理方法及网络设备 | |
CN117061479A (zh) | 局域网通信方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |