CN113194033B - 基于sdn段路由组网的报文转发方法、装置及存储介质 - Google Patents
基于sdn段路由组网的报文转发方法、装置及存储介质 Download PDFInfo
- Publication number
- CN113194033B CN113194033B CN202110334569.1A CN202110334569A CN113194033B CN 113194033 B CN113194033 B CN 113194033B CN 202110334569 A CN202110334569 A CN 202110334569A CN 113194033 B CN113194033 B CN 113194033B
- Authority
- CN
- China
- Prior art keywords
- message
- srv6
- destination
- forwarding
- port
- 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
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/34—Source routing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/46—Interconnection of networks
- H04L12/4633—Interconnection of networks using encapsulation techniques, e.g. tunneling
-
- 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/32—Flooding
-
- 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
- H04L45/745—Address table lookup; Address filtering
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/70—Virtual switches
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2101/00—Indexing scheme associated with group H04L61/00
- H04L2101/60—Types of network addresses
- H04L2101/618—Details of network addresses
- H04L2101/622—Layer-2 addresses, e.g. medium access control [MAC] addresses
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本公开提供了一种基于SDN段路由组网的报文转发方法、装置及存储介质,用于解决SDN网络支持SRv6段路由协议的技术问题。本公开技术方案在OVS上增加SRv6协议栈,在SDN控制器上增加Overlay网络的SRv6协议Function字段分配功能,使用Openflow协议解决SDN网络架构下SRv6转发的问题。本公开技术方案能够实现在Openflow协议和Open VSwitch组合组网的SDN网络中支持SRv6协议承载Overlay业务。
Description
技术领域
本公开涉及通信技术领域,尤其涉及一种基于SDN段路由组网的报文转发方法、装置及存储介质。
背景技术
因特网协议版本6(Internet Protocol Version 6,IPv6)段路由协议(SegmentRouting IPv6,SRv6)是段路由(Segment Routing)和IPv6两种网络技术的结合,SRv6采用IPv6协议标准中定义的路由扩展报头(Routing Extension Header)承载新定义的段路由头(Segment Routing Header,SRH),SRH类型号定义为4。在SRH中包含了Segment段列表。段标识(Segment Identifier,SID)是一个128位的IPv6的地址,主要由***Locator和功能Function两部分组成。Locator在高位,指定对应地址前缀长度,后续比特位给Function使用。Function为分配给本地转发指令的一个ID值,该值可用于表达需要设备执行的转发动作,Function可选携带参数Arguments。Locator用于IPv6路由,Function用于指定节点需要对数据包施加的各种SRv6操作,实现网络的可编程性。
SRv6在源节点预先定义好数据包要走的路径,将路径转换成一个有序的segment段列表封装到报文头中,将报文要经过的SRv6设备信息列在IPv6报文的路由扩展报头中。目的SRv6节点收到报文后,会根据报文目的IPv6地址中的Function字段进行报文处理,每个SRv6节点根据Function处理完之后,会更新报文的目的IP为下一个SRv6节点的Segment。如果网络中有节点只支持常规的IPv6而不支持SRv6,当此节点收到SRv6数据包时,按照IPv6 RFC的规定,由于数据包目的地址不是节点自身网段地址,此节点不处理扩展报头,而只是单纯地根据数据包目的地址进行IPv6转发。这意味着,SRv6可以与现有的IPv6网络无缝互操作,即SRv6可以在IPv6网络上实现增量部署,无须替换现网所有设备。
随着5G、物联网、云等业务的发展,对网络编程提出了新的需求,更多网络设备的接入对于地址扩展的需求也在增加。SRv6和这方面的需求结合在一起,基于All IPv6实现智简网络,在转发面封装新的信息,对转发面进行资源保证,充分体现了其在网络编程能力方面具备的独特优势。
传统IT架构中,根据业务需求部署上线以后,如果业务需求发生变动,重新修改相应网络设备上的配置是一件非常繁琐的事情。将SRv6技术与软件定义网络(SoftwareDefined Network,SDN)融合,用户可以自定义任何想实现的网络路由和传输规则策略,在简化网络的同时,也提供了高度的可编程能力以及端到端的流量工程能力。
对于SDN网络中的VSwitch虚拟交换机来说,转发原理和硬件交换机一样需要匹配对应的转发表项进行转发,在虚拟交换机正常连接SDN控制器时,匹配的是SDN控制器下发给虚拟交换机的Openflow流表进行转发。
目前,SDN组网采用的Openflow协议+Open VSwitch(简称OVS)的组合模式还不支持基于SRv6协议承载Overlay业务,无法满足许多场景下的业务需求。
发明内容
有鉴于此,本公开提供一种基于SDN段路由组网的报文转发方法、装置及存储介质,用于解决SDN网络支持SRv6段路由协议的技术问题。
图1为本公开提供的一种基于SDN段路由组网的报文转发方法的步骤流程图,该方法包括:
步骤101.支持段路由SRv6协议的第一虚拟交换机纳管于软件定义网络SDN控制器,所述第一虚拟交换机所在虚拟链路层网络和虚拟路由器由所述SDN控制器创建;
步骤102.当所述第一虚拟交换机通过下行口收到源虚拟机发出的第一报文后,对第一报文进行流表匹配,基于匹配结果判断第一报文的目的MAC地址是否为网关MAC地址;
步骤103.当目的MAC地址为网关MAC地址时,通过三层转发表匹配转发所述第一报文;当目的MAC地址为非网关MAC地址时,通过二层转发表匹配转发所述第一报文;
在通过三层或二层转发表匹配转发所述第一报文时,若目的虚拟机未直连于所述第一虚拟机交换机,则在SRv6端口对第一报文进行SRv6协议封装后,通过内部Internal类型虚拟端口向外转发;在所述在内部internal类型虚拟端口配置有SRv6节点IP地址即SRv6段标识SID。
进一步地,通过二层转发表匹配转发所述第一报文的方法为:
步骤21.判断第一报文的目的MAC所属的虚拟机是否与源虚拟机连接在同一虚拟交换机上;
步骤22.当判定连接在同一虚拟交换机上时,直接将第一报文送到目的虚拟机在所述第一虚拟交换机的接入端口;
步骤23.当判定未连接在同一虚拟交换机上时,将第一报文所匹配的流表中的IPv6隧道目的字段tun_ipv6_dst设置为第一报文目的MAC所属虚拟交换机的SRv6 SID,将第一报文送到SRv6端口;
步骤24.在SRv6端口对所述第一报文进行SRv6协议封装,报文外层源地址为源虚拟机所属虚拟交换机的SRv6 SID,目的地址为第一报文匹配的流表中的tun_ipv6_dst字段值;封装后将第一报文从上行口送出。
进一步地,通过三层转发表匹配转发所述第一报文的方法为:
步骤31.判断第一报文的目的IP所属虚拟机是否与源虚拟机连接在同一虚拟交换机上;
步骤32.当判定连接在同一虚拟交换机上时,直接将第一报文送到第一报文的目的IP所属虚拟机在所述第一虚拟交换机上的接入端口;
步骤33.当判定未连接在同一虚拟交换机上时,根据第一报文匹配的流表,将流表中的tun_ipv6_dst字段设置为第一报文目的IP所属虚拟交换机的SRv6 SID,将第一报文送到SRv6端口;
步骤34.在SRv6端口对所述第一报文进行SRv6协议封装,报文外层源地址为源虚拟机所属虚拟交换机的SRv6 SID,目的地址为第一报文匹配的流表中的tun_ipv6_dst字段值;封装后将第一报文从上行口送出。
进一步地,当所述第一虚拟交换机通过上行口收到源虚拟机发出的第二报文时,所述方法还包括:
步骤41.判断第二报文的外层目的IPv6地址即目的SRv6 SID是否落在所述第一虚拟交换机的***locator网段内;
步骤42.当判定在所述第一虚拟交换机的locator网段内时,将第二报文的目的SRv6 SID记录到tun_ipv6_dst字段中,将报文送到SRv6端口;
步骤43.在段地址分类TABLE_SID_CLASSIFY流表中,根据第二报文的目的SRv6SID进行匹配分流,当目的SRv6 SID为END.DT2U类型的SRv6 SID时,通过二层转发表依据第二报文内层目的MAC进行转发;当目的SRv6 SID为END.DT4或END.DT6类型的SRv6 SID时,通过三层转发表依据第二报文内层目的IP进行转发。
进一步地,当第二报文的目的SRv6 SID为END.DT2M类型的SRv6 SID时,进行二层泛洪转发所述第二报文。
图2为本公开提供的一种基于SDN段路由组网的报文转发装置结构示意图,该装置200中的各功能模块可以采用软件、硬件或软硬件相结合的方式实现。各模块可部署在一个硬件设备上实施上述方法的所有步骤,也可分散部署在不同硬件设备上由多个硬件设备分别实施上述方法中的一个或若干步骤从而共同实施以实现本公开的发明目的。当由多个硬件设备共同实施时,由于各硬件设备之间相互协作的目的是共同实现本发明目的,一方的动作和处理结果确定了另一方的动作执行的时机及可能获得的结果,因此,在逻辑上可视为各模块彼此之间具有相互指挥和控制关系。
该装置200应用于支持段路由SRv6协议的第一虚拟交换机,第一虚拟交换机纳管于软件定义网络SDN控制器,所述第一虚拟交换机所在虚拟链路层网络和虚拟路由器由所述SDN控制器创建;该装置200包括:
第一判断模块210,用于当所述第一虚拟交换机通过下行口收到源虚拟机发出的第一报文后,对第一报文进行流表匹配,基于匹配结果判断第一报文的目的MAC地址是否为网关MAC地址;
报文转发模块220,用于当目的MAC地址为网关MAC地址时,通过三层转发表匹配转发所述第一报文;当目的MAC地址为非网关MAC地址时,通过二层转发表匹配转发所述第一报文;在通过三层或二层转发表匹配转发所述第一报文时,若目的虚拟机未直连于所述第一虚拟机交换机,则在SRv6端口对第一报文进行SRv6协议封装后,通过内部Internal类型虚拟端口向外转发;在所述在内部internal类型虚拟端口配置有SRv6节点IP地址即SRv6段标识SID。
进一步地,所述报文转发模块220包括源端二层转发子模块221,用于通过二层转发表匹配转发所述第一报文,所述二层转发子模块221包括:
第一子判断模块,用于判断第一报文的目的MAC所属的虚拟机是否与源虚拟机连接在同一虚拟交换机上;
第一子转发模块,用于当判定连接在同一虚拟交换机上时,直接将第一报文送到目的虚拟机在所述第一虚拟交换机的接入端口;
第二子转发模块,用于当判定未连接在同一虚拟交换机上时,将第一报文所匹配的流表中的IPv6隧道目的字段tun_ipv6_dst设置为第一报文目的MAC所属虚拟交换机的SRv6 SID,将第一报文送到SRv6端口;
第三子转发模块,用于在SRv6端口对所述第一报文进行SRv6协议封装,报文外层源地址为源虚拟机所属虚拟交换机的SRv6 SID,目的地址为第一报文匹配的流表中的tun_ipv6_dst字段值;封装后将第一报文从上行口送出。
进一步地,所述报文转发模块220包括源端三层转发子模块222,用于通过三层转发表匹配转发所述第一报文,所述三层转发子模块222包括:
第二子判断模块,用于判断第一报文的目的IP所属虚拟机是否与源虚拟机连接在同一虚拟交换机上;
第四子转发模块,用于当判定连接在同一虚拟交换机上时,直接将第一报文送到第一报文的目的IP所属虚拟机在所述第一虚拟交换机上的接入端口;
第五子转发模块,用于当判定未连接在同一虚拟交换机上时,根据第一报文匹配的流表,将流表中的tun_ipv6_dst字段设置为第一报文目的IP所属虚拟交换机的SRv6SID,将第一报文送到SRv6端口;
第六子转发模块,用于在SRv6端口对所述第一报文进行SRv6协议封装,报文外层源地址为源虚拟机所属虚拟交换机的SRv6 SID,目的地址为第一报文匹配的流表中的tun_ipv6_dst字段值;封装后将第一报文从上行口送出。
进一步地,所述装置200还包括:第二判断模块230,用于判断第二报文的外层目的IPv6地址即目的SRv6 SID是否落在所述第一虚拟交换机的***locator网段内,若是则指示报文转发模块220处理,否则丢弃报文。
所述报文转发模块220包括目的端报文转发子模块225,用于当所述第一虚拟交换机通过上行口收到源虚拟机发出的第二报文时,对第二报文进行处理,报文转发模块220包括:
提取子模块,用于当判定在所述第一虚拟交换机的locator网段内时,将第二报文的目的SRv6 SID记录到tun_ipv6_dst字段中,将报文送到SRv6端口;
分流转发模块,用于在段地址分类TABLE_SID_CLASSIFY流表中,根据第二报文的目的SRv6 SID进行匹配分流,当目的SRv6 SID为END.DT2U类型的SRv6 SID时,通过二层转发表依据第二报文内层目的MAC进行转发;当目的SRv6 SID为END.DT4或END.DT6类型的SRv6 SID时,通过三层转发表依据第二报文内层目的IP进行转发。
进一步地,当第二报文的目的SRv6 SID为END.DT2M类型的SRv6 SID时,所述分流转发模块进行二层泛洪转发所述第二报文。
图3为本公开提供的一种电子设备结构示意图,该设备300包括:诸如中央处理单元(CPU)的处理器310、通信总线320、通信接口340以及存储介质330。其中,处理器310与存储介质330可以通过通信总线320相互通信。存储介质330内存储有计算机程序,当该计算机程序被处理器310执行时即可实现本公开提供的方法的各步骤。
其中,存储介质可以包括随机存取存储器(Random Access Memory,RAM),也可以包括非易失性存储器(Non-Volatile Memory,NVM),例如至少一个磁盘存储器。另外,存储介质还可以是至少一个位于远离前述处理器的存储装置。处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital Signal Processing,DSP)、专用集成电路(ApplicationSpecific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable GateArray,FPGA)或其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
本公开技术方案能够实现在Openflow协议和Open VSwitch组合组网的SDN网络中支持SRv6协议承载Overlay业务。本公开技术方案在OVS上增加SRv6协议栈,在SDN控制器上增加Overlay网络的SRv6协议Function字段分配功能,使用Openflow协议解决SDN网络架构下SRv6转发的问题。
附图说明
为了更加清楚地说明本公开实施例或者现有技术中的技术方案,下面将对本公开实施例或者现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据本公开实施例的这些附图获得其他的附图。
图1为本公开提供的一种基于SDN段路由组网的报文转发方法的步骤流程图;
图2为本公开提供的一种基于SDN段路由组网的报文转发装置结构示意图;
图3为本公开提供的一种电子设备结构示意图;
图4为本公开一实施例中OVS内部SRv6报文的转发示意图;
图5为本公开一实施例中SDN SRv6组网中OVS下行端口转发报文的流程示意图;
图6为本公开实施例中下行口对报文目的MAC为非网关MAC需进行二层转发的处理步骤;
图7为本公开实施例中报文目的MAC为网关MAC在下行口需进行三层转发的处理步骤;
图8为本公开一实施例中SDN网络中OVS上行口接收到报文后的处理步骤;
图9为本公开一实施例中SDN SRv6网络虚拟交换机根据SID类型进行业务分流的步骤流程图。
具体实施方式
在本公开实施例使用的术语仅仅是出于描述特定实施例的目的,而非限制本公开实施例。本公开实施例中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其它含义。本公开中使用的术语“和/或”是指包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本公开实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本公开实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,此外,所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
本公开的目的是在Openflow协议和Open VSwitch(简称OVS)组合组网的SDN网络中支持SRv6协议承载Overlay业务。本公开技术方案的基本思想是:在OVS上增加SRv6协议栈,在SDN控制器上增加Overlay网络的SRv6协议Function字段分配功能,使用Openflow协议解决SDN网络架构下SRv6转发的问题。
图4为本公开一实施例中OVS内部SRv6报文的转发示意图,该实施例中,虚拟机1和虚拟机2连接在同一OVS上,图中带箭头的曲线为虚拟机2与OVS所在服务器之外的设备进行信息通信的SRv6报文的转发路径。本公开实施例中的OVS支持新增SRv6端口,同时OVS协议栈支持识别SRv6报文,能够在SRv6端口进行SRv6报文的封装和解封装。
为实现在SDN网络中支持SRv6协议承载Overlay业务,需要对源虚拟机所在OVS和目的虚拟机所在OVS上的报文处理步骤进行改进。源OVS上的报文处理步骤如下:
步骤1.OVS与SDN控制器通过Openflow协议连接,SDN控制器纳管支持SRv6协议的OVS虚拟交换机。
步骤2.SDN控制器创建虚拟链路层网络和虚拟路由器(简记做network/router),并为所创建的network/router分配SRv6 SID;
network/router指Openstack中的虚拟链路层网络和虚拟路由器。在同一个虚拟链路层网络内的虚拟机可以二层互通(对应虚拟交换实例Virtual Switch Instance,VSI),同一个虚拟路由器内的虚拟机可以三层互通(对应虚拟私有网络Virtual PrivateNetwork,VPN)。
SRv6 Segment即SRv6段地址是IPv6地址形式,通常也可以称为SRv6 SID(SegmentIdentifier),SRv6 SID由Locator和Function两部分组成。其中***Locator用于确定下一跳节点所在的子网,而每个子网都设有默认路由器,因此根据该子网地址即可确定下一跳路由器。功能Function代表设备指令,这些指令都由设备预先设定,Function部分用于指示SRv6 SID的生成节点进行相应的功能操作,例如转发报文、执行特定业务等。
SRv6 SID有很多类型,不同类型的SRv6 SID代表不同的功能。例如,虚拟链路层网络network的SRv6 SID类型可以为End.DT2U或End.DT2M类型,虚拟路由器router的SRv6SID类型可以为End.DT4或End.DT6等。不同SID类型的定义和区别参见SRv6协议,本公开不做赘述。
本公开实施例中,OVS支持在内部internal类型虚拟端口配置SRv6节点IP地址即SRv6 SID,通过配置SRv6 SID来表示这个节点是一个SRv6节点,SRv6SID所属网段表示本OVS的Locator。
步骤3.SDN控制器在检测到虚拟端口上线后,向上线的虚拟端口所在的OVS下发流表。
步骤4.当OVS1的下行口收到本地虚拟机(例如虚拟机1)发出的报文后,对报文进行流表匹配,根据匹配的报文目的MAC地址进行二层或三层转发;
该步骤中,假设虚拟机1通过虚拟端口1向OVS1发送报文,发送的报文会先根据报文的目的MAC进行流表匹配,如果匹配到二层MAC转发表项,则直接转发。如果没有匹配到二层MAC转发表项,但匹配到网关的MAC,则会到三层转发表进行基于目的IP的三层转发。
图5为本公开一实施例中SDN SRv6组网中OVS下行端口转发报文的流程示意图,转发步骤如下:
步骤501.OVS1的下行口收到虚拟机1发送的报文1后,进行流表的匹配;
步骤502.基于流表匹配结果判断报文1的目的MAC地址是否为网关MAC地址,若是则执行步骤503,否则执行步骤504;
步骤503.在三层转发表中匹配报文目的IP地址进行转发。
步骤504.在二层转发表中匹配报文目的MAC地址进行转发。
图6为本公开实施例中下行口对报文目的MAC为非网关MAC需进行二层转发的处理步骤,具体步骤如下:
步骤5041.判断报文1的目的MAC所属的虚拟机是否与发送报文1的虚拟机连接在同一个OVS上,若是则执行步骤5042,否则执行步骤5043;
步骤5042.直接将报文1送到报文1的目的MAC所属虚拟机在本OVS上的接入端口,不需要进行外层SRv6协议封装;
当报文的目的MAC地址所属的虚拟机也连接在发送报文1的虚拟机所连接的OVS1时,例如图4中的虚拟机1向连接在同一OVS上的虚拟机2发送报文,可直接走二层转发,不需要SRv6封装的处理。两个虚拟机虽然都连接在同一个OVS上,但由于两个虚拟机的接入端口不同,因此也需要在OVS上匹配流表进行转发。
步骤5043.将报文1所匹配的流表中的tun_ipv6_dst设置为报文1目的MAC所属的SRv6 SID,将报文1送到SRv6端口;
该步骤对应报文1的目的MAC所属的虚拟机位于本地二层网络中其它OVS上的场景,由于是跨OVS报文转发,因此需要进行SRv6封装。Openflow流表中的IPv6隧道目的字段即tun_ipv6_dst地址字段的值是由SDN控制器来设置,为目的虚拟机所在的OVS的SRv6SID,其组成为:目的虚机所在OVS的Locator+目的虚机所属网络network的END.DT2U。
步骤5044.在SRv6端口对报文1进行SRv6协议封装,报文源地址为源虚拟机所属OVS的SRv6节点的SRv6 SID,目的地址为报文1匹配的Openflow流表中的tun_ipv6_dst字段值,将报文1从上行口送出;
该步骤中,SRv6端口收到报文1后,跟据Openflow流表设置的tun_ipv6_dst对报文1进行SRv6外层封装。将报文外层的目的地址封装为Openflow指定的tun_ipv6_dst,外层封装的源IP为本OVS的节点SRv6 SID(SRv6端口的IP地址)。封装后的SRv6报文经Internal端口到协议栈进行封装后从上行端口转发出去。
图7为本公开实施例中报文目的MAC为网关MAC在下行口需进行三层转发的处理步骤,具体步骤如下:
步骤5031.判断报文1的目的IP所属虚拟机是否与发送报文1的虚拟机连接在同一个OVS上,若是则执行步骤5032,否则执行步骤5033;
该步骤用于判断发送报文1的源虚拟机和接收报文1的目的虚拟机是否连接在同一个OVS上,若在同一OVS上,则进行本地三层转发,若不在同一OVS上,则进行跨OVS的三层SRv6协议封装转发。
步骤5032.直接将报文1送到报文1的目的IP所属虚拟机在该OVS上的接入端口,不需要进行外层SRv6协议封装;
该步骤对应在同一OVS上进行三层转发的场景,使用报文1目的IP在三层转发表匹配转发即可,不需要进行SRv6协议封装转发。
步骤5033.根据报文1匹配的Openflow流表,将流表中的tun_ipv6_dst字段设置为报文1目的IP所属OVS的SRv6 SID(目的OVS Locator+router的END.DT4/DT6),将报文1送到SRv6端口。
该步骤对应跨OVS的三层SRv6报文的转发场景,报文需要进行SRv6封装后转发。SDN控制器会根据报文目的IP对应的目的虚拟机所在的OVS及目的虚拟机所属的router信息(即属于哪个VPN,每个VPN对应一个END.DT4或END.DT6类型的Function)设置Openflow流表中的IPv6隧道目的tun_ipv6_dst地址字段的值,其组成为目的IP对应虚拟机所属的OVS的Locator+所属VPN的END.DT4/DT6 Function。
步骤5034.进行SRv6报文封装,报文源地址为源虚拟机所在OVS的SRv6节点IP即源OVS的SRv6 SID,目的地址为Openflow流表中指定的tun_ipv6_dst的字段值,将报文1从上行口送出。
图8为本公开一实施例中SDN网络中OVS上行口接收到报文后的处理步骤,例如目的虚拟机所在OVS为OVS2,OVS2的上行口接收到OVS1发送的报文1的处理流程如下:
步骤801:目的虚拟机所在OVS的上行口收到源虚拟机发送的报文1后,将报文1送到协议栈;
步骤802:判断报文1的外层目的IPv6地址是否落在本OVS的locator网段内,若是则执行步骤803,否则丢弃;
步骤803:对报文1进行解析,并将报文1的SRv6外层目的IP地址记录到Openflow协议的tun_ipv6_dst字段,将报文送到SRv6端口;
tun_ipv6_dst字段是Openflow协议字段,用于后续的报文转发。不论后续的流表中是否有该字段,标准Openflow协议都会进行解析,因为OVS并不知道后续控制器是否会下发携带该字段的流表。
用于指导报文转发的流表由控制器下发给OVS。OVS的所有端口都会加到OVS的桥上,加入桥的端口出入报文都会匹配OVS的Openflow流表。
步骤804:在段地址分类TABLE_SID_CLASSIFY流表中,根据报文1的tun_ipv6_dst字段进行匹配分流,当匹配到END.DT2U类型的SRv6 SID时,执行步骤805;当匹配到END.DT4或END.DT6类型的SRv6 SID时,执行步骤806;
报文1根据所匹配的TABLE_SID_CLASSIFY流表的SID类型,将报文送到与SID类型对应的转发表进行转发,例如END.DT4或END.DT6类型对应三层转发表,END.DT2U类型对应二层转发表。
步骤805:在二层转发表中直接匹配报文1内层目的MAC地址,送到目的MAC所属的虚拟机所在端口;
步骤806:在三层转发表中直接匹配报文内层目的IP地址,送到目的IP所属的虚拟机所在端口;
图9为本公开一实施例中SDN SRv6网络虚拟交换机根据SID类型进行业务分流的步骤流程图,在步骤804中,在TABLE_SID_CLASSIFY流表中,根据报文tun_ipv6_dst字段进行流量分流的示例如下:
根据SRv6 SID=分流举例
table=TABLE_SID_CLASSIFY,tun_ipv6_dst=2001:0:1:2::1,goto_table:TABLE_MAC_FORWARD
报文1的SRv6外层目的IP地址实际上就是SRv6 SID,将其写入tun_ipv6_dst字段后,根据该字段在TABLE_SID_CLASSIFY流表中进行匹配,例如当tun_ipv6_dst为2001:0:1:2::1时,该SID的Locator为2001:0:1,Function为“2::1”对应END.DT2U类型的SID,因此根据流表将报文1送到对应的二层转发表进行转发。
table=TABLE_SID_CLASSIFY,tun_ipv6_dst=2001:0:1:2::2,goto_table:Table_Flood
同理,Function为“2::2”对应END.DT2M类型的SID,因此根据流表将报文1进行L2层泛洪。
table=TABLE_SID_CLASSIFY,tun_ipv6_dst=2001:0:1:3::1,goto_table:Table_IP_FORWARD
同理,Function为“3::1”对应END.DT4或END.DT6类型的SID,因此根据流表将报文1送到L3层IP转发表进行转发。
二层转发表的示例如下:
table=TABLE_MAC_FORWARD,dl_dst=“00:04:23:e4:97:20”,actions=set_field:2001:0:1::1->tun_ipv6_src,set_field:2001:0:3:2::1->tun_ipv6_dst,output:“srv6-port”.
在SRv6端口对报文1解封装后,露出内层报文,取出内层报文目的MAC地址,在转发表中匹配后执行相应的转发动作,例如上述二层转发表项中,内层目的MAC为“00:04:23:e4:97:20”,当匹配该表项后,执行的动作为设置报文外层源SRv6 SID为“2001:0:1::1”,设置报文外层目的SRv6 SID为“2001:0:3:2::1”,然后通过SRv6端口转发出去,该表项对应目的虚拟机不在本地OVS的情况。
table=TABLE_MAC_FORWARD,dl_dst="00:04:23:b7:17:be",actions:output:”tapvm2”
上述表项示例对应目的虚拟机在本地OVS上情况,报文从虚拟机连接的端口tapvm2转发出去。
三层转发的示例:
table=Table_IP_FORWARD eth_type=ipv6,ipv6_dst=“2::1”,actions=set_field:2001:0:1::1->tun_ipv6_src,set_field:2001:0:3:3::2->tun_ipv6_dst,output:“srv6-port”
上述示例对应报文内层的目的IP地址所属虚拟机不在本地OVS连接的情况,报文需经SRv6协议封装后从SRv6端口转发给目的虚拟机所在的OVS。
table=Table_IP_FORWARD,eth_type=ipv6,ipv6_dst="2001::204:23ff:feb7:17be",actions:output:”tapvm2”
上述示例对应报文内层的目的IP地址所属虚拟机在本地OVS上连接的情况,报文直接通过目的虚拟机所在端口转发给目的虚拟机。
本公开通过OVS上增加SRv6协议栈,SDN控制器增加Overlay网络的SRv6Function分配,使用标准的Openflow协议解决了SDN纯软架构下SRv6转发。无需替换已部署的IPv6硬件设备为支持SRv6的硬件设备,在原有组网上,只需要升级虚拟交换机vSwitch和控制器软件版本,即可支持SRv6。
应当认识到,本公开的实施例可以由计算机硬件、硬件和软件的组合、或者通过存储在非暂时性存储器中的计算机指令来实现或实施。所述方法可以使用标准编程技术,包括配置有计算机程序的非暂时性存储介质在计算机程序中实现,其中如此配置的存储介质使得计算机以特定和预定义的方式操作。每个程序可以以高级过程或面向对象的编程语言来实现以与计算机***通信。然而,若需要,该程序可以以汇编或机器语言实现。在任何情况下,该语言可以是编译或解释的语言。此外,为此目的该程序能够在编程的专用集成电路上运行。此外,可按任何合适的顺序来执行本公开描述的过程的操作,除非本公开另外指示或以其他方式明显地与上下文矛盾。本公开描述的过程(或变型和/或其组合)可在配置有可执行指令的一个或多个计算机***的控制下执行,并且可作为共同地在一个或多个处理器上执行的代码(例如,可执行指令、一个或多个计算机程序或一个或多个应用)、由硬件或其组合来实现。所述计算机程序包括可由一个或多个处理器执行的多个指令。
进一步,所述方法可以在可操作地连接至合适的任何类型的计算平台中实现,包括但不限于个人电脑、迷你计算机、主框架、工作站、网络或分布式计算环境、单独的或集成的计算机平台、或者与带电粒子工具或其它成像装置通信等等。本公开的各方面可以以存储在非暂时性存储介质或设备上的机器可读代码来实现,无论是可移动的还是集成至计算平台,如硬盘、光学读取和/或写入存储介质、RAM、ROM等,使得其可由可编程计算机读取,当存储介质或设备由计算机读取时可用于配置和操作计算机以执行在此所描述的过程。此外,机器可读代码,或其部分可以通过有线或无线网络传输。当此类媒体包括结合微处理器或其他数据处理器实现上文所述步骤的指令或程序时,本公开所述的发明包括这些和其他不同类型的非暂时性计算机可读存储介质。当根据本公开所述的方法和技术编程时,本公开还包括计算机本身。
以上所述仅为本公开的实施例而已,并不用于限制本公开。对于本领域技术人员来说,本公开可以有各种更改和变化。凡在本公开的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。
Claims (10)
1.一种基于SDN段路由组网的报文转发方法,其特征在于,所述方法包括:
支持段路由SRv6协议的第一虚拟交换机纳管于软件定义网络SDN控制器,所述第一虚拟交换机所在虚拟链路层网络和虚拟路由器由所述SDN控制器创建;
当所述第一虚拟交换机通过下行口收到源虚拟机发出的第一报文后,对第一报文进行流表匹配,基于匹配结果判断第一报文的目的MAC地址是否为网关MAC地址;
当目的MAC地址为网关MAC地址时,通过三层转发表匹配转发所述第一报文;当目的MAC地址为非网关MAC地址时,通过二层转发表匹配转发所述第一报文;
在通过三层或二层转发表匹配转发所述第一报文时,若目的虚拟机未直连于所述第一虚拟机交换机,则在SRv6端口对第一报文进行SRv6协议封装后,通过内部Internal类型虚拟端口向外转发;在所述内部internal类型虚拟端口配置有SRv6节点IP地址即SRv6段标识SID。
2.根据权利要求1所述的方法,其特征在于,所述通过二层转发表匹配转发所述第一报文的方法为:
判断第一报文的目的MAC所属的虚拟机是否与源虚拟机连接在同一虚拟交换机上;
当判定连接在同一虚拟交换机上时,直接将第一报文送到目的虚拟机在所述第一虚拟交换机的接入端口;
当判定未连接在同一虚拟交换机上时,将第一报文所匹配的流表中的IPv6隧道目的字段tun_ipv6_dst设置为第一报文目的MAC所属虚拟交换机的SRv6 SID,将第一报文送到SRv6端口;
在SRv6端口对所述第一报文进行SRv6协议封装,报文外层源地址为源虚拟机所属虚拟交换机的SRv6 SID,目的地址为第一报文匹配的流表中的tun_ipv6_dst字段值;封装后将第一报文从上行口送出。
3.根据权利要求1所述的方法,其特征在于,所述通过三层转发表匹配转发所述第一报文的方法为:
判断第一报文的目的IP所属虚拟机是否与源虚拟机连接在同一虚拟交换机上;
当判定连接在同一虚拟交换机上时,直接将第一报文送到第一报文的目的IP所属虚拟机在所述第一虚拟交换机上的接入端口;
当判定未连接在同一虚拟交换机上时,根据第一报文匹配的流表,将流表中的tun_ipv6_dst字段设置为第一报文目的IP所属虚拟交换机的SRv6 SID,将第一报文送到SRv6端口;
在SRv6端口对所述第一报文进行SRv6协议封装,报文外层源地址为源虚拟机所属虚拟交换机的SRv6 SID,目的地址为第一报文匹配的流表中的tun_ipv6_dst字段值;封装后将第一报文从上行口送出。
4.根据权利要求1所述的方法,其特征在于,当所述第一虚拟交换机通过上行口收到源虚拟机发出的第二报文时,所述方法还包括:
判断第二报文的外层目的IPv6地址即目的SRv6 SID是否落在所述第一虚拟交换机的***locator网段内;
当判定在所述第一虚拟交换机的locator网段内时,将第二报文的目的SRv6 SID记录到tun_ipv6_dst字段中,将报文送到SRv6端口;
在段地址分类TABLE_SID_CLASSIFY流表中,根据第二报文的目的SRv6 SID进行匹配分流,当目的SRv6 SID为END.DT2U类型的SRv6 SID时,通过二层转发表依据第二报文内层目的MAC进行转发;当目的SRv6 SID为END.DT4或END.DT6类型的SRv6 SID时,通过三层转发表依据第二报文内层目的IP进行转发。
5.根据权利要求4所述的方法,其特征在于,
当第二报文的目的SRv6 SID为END.DT2M类型的SRv6 SID时,进行二层泛洪转发所述第二报文。
6.一种基于SDN段路由组网的报文转发装置,其特征在于,该装置应用于支持段路由SRv6协议的第一虚拟交换机,第一虚拟交换机纳管于软件定义网络SDN控制器,所述第一虚拟交换机所在虚拟链路层网络和虚拟路由器由所述SDN控制器创建;该装置包括:
第一判断模块,用于当所述第一虚拟交换机通过下行口收到源虚拟机发出的第一报文后,对第一报文进行流表匹配,基于匹配结果判断第一报文的目的MAC地址是否为网关MAC地址;
报文转发模块,用于当目的MAC地址为网关MAC地址时,通过三层转发表匹配转发所述第一报文;当目的MAC地址为非网关MAC地址时,通过二层转发表匹配转发所述第一报文;在通过三层或二层转发表匹配转发所述第一报文时,若目的虚拟机未直连于所述第一虚拟机交换机,则在SRv6端口对第一报文进行SRv6协议封装后,通过内部Internal类型虚拟端口向外转发;在所述内部internal类型虚拟端口配置有SRv6节点IP地址即SRv6段标识SID。
7.根据权利要求6所述的装置,其特征在于,所述报文转发模块包括源端二层转发子模块,用于通过二层转发表匹配转发所述第一报文,所述二层转发子模块包括:
第一子判断模块,用于判断第一报文的目的MAC所属的虚拟机是否与源虚拟机连接在同一虚拟交换机上;
第一子转发模块,用于当判定连接在同一虚拟交换机上时,直接将第一报文送到目的虚拟机在所述第一虚拟交换机的接入端口;
第二子转发模块,用于当判定未连接在同一虚拟交换机上时,将第一报文所匹配的流表中的IPv6隧道目的字段tun_ipv6_dst设置为第一报文目的MAC所属虚拟交换机的SRv6SID,将第一报文送到SRv6端口;
第三子转发模块,用于在SRv6端口对所述第一报文进行SRv6协议封装,报文外层源地址为源虚拟机所属虚拟交换机的SRv6 SID,目的地址为第一报文匹配的流表中的tun_ipv6_dst字段值;封装后将第一报文从上行口送出。
8.根据权利要求6所述的装置,其特征在于,所述报文转发模块包括源端三层转发子模块,用于通过三层转发表匹配转发所述第一报文,所述三层转发子模块包括:
第二子判断模块,用于判断第一报文的目的IP所属虚拟机是否与源虚拟机连接在同一虚拟交换机上;
第四子转发模块,用于当判定连接在同一虚拟交换机上时,直接将第一报文送到第一报文的目的IP所属虚拟机在所述第一虚拟交换机上的接入端口;
第五子转发模块,用于当判定未连接在同一虚拟交换机上时,根据第一报文匹配的流表,将流表中的tun_ipv6_dst字段设置为第一报文目的IP所属虚拟交换机的SRv6 SID,将第一报文送到SRv6端口;
第六子转发模块,用于在SRv6端口对所述第一报文进行SRv6协议封装,报文外层源地址为源虚拟机所属虚拟交换机的SRv6 SID,目的地址为第一报文匹配的流表中的tun_ipv6_dst字段值;封装后将第一报文从上行口送出。
9.一种电子设备,其特征在于,包括处理器、通信接口、存储介质和通信总线,其中,处理器、通信接口、存储介质通过通信总线完成相互间的通信;
存储介质,用于存放计算机程序;
处理器,用于执行存储介质上所存放的计算机程序时,实施权利要求1-5任一项所述的方法步骤。
10.一种存储介质,其上存储有计算机程序,其特征在于,所述计算机程序当被处理器执行时实施如权利要求1至5中任一项所述的方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110334569.1A CN113194033B (zh) | 2021-03-29 | 2021-03-29 | 基于sdn段路由组网的报文转发方法、装置及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110334569.1A CN113194033B (zh) | 2021-03-29 | 2021-03-29 | 基于sdn段路由组网的报文转发方法、装置及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113194033A CN113194033A (zh) | 2021-07-30 |
CN113194033B true CN113194033B (zh) | 2022-04-01 |
Family
ID=76974154
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110334569.1A Active CN113194033B (zh) | 2021-03-29 | 2021-03-29 | 基于sdn段路由组网的报文转发方法、装置及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113194033B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114640555B (zh) * | 2022-02-24 | 2023-06-23 | 联想(北京)有限公司 | 一种信息处理方法、虚机集群及*** |
CN115412512B (zh) * | 2022-10-31 | 2023-03-24 | 浙江九州云信息科技有限公司 | 一种基于IPv6的多云跨网互通方法及装置 |
CN118214705A (zh) * | 2024-05-22 | 2024-06-18 | 南京大学 | 一种基于源路由的存储转发方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103139077A (zh) * | 2011-11-28 | 2013-06-05 | 百度在线网络技术(北京)有限公司 | 扩展IPv6虚拟路由器的方法、***及装置 |
CN106713137A (zh) * | 2015-11-13 | 2017-05-24 | 中国电信股份有限公司 | 基于分段路由和sdn技术的vpn方法、装置及*** |
CN109257372A (zh) * | 2018-10-29 | 2019-01-22 | 深信服科技股份有限公司 | 基于网络融合的报文转发方法、设备、存储介质及装置 |
CN111713079A (zh) * | 2018-10-22 | 2020-09-25 | 思科技术公司 | 包括段路由的分组网络互通 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017198319A1 (en) * | 2016-05-20 | 2017-11-23 | Telefonaktiebolaget Lm Ericsson (Publ) | Method and apparatus for segment routing and rsvp-te routing in transport sdn networks |
-
2021
- 2021-03-29 CN CN202110334569.1A patent/CN113194033B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103139077A (zh) * | 2011-11-28 | 2013-06-05 | 百度在线网络技术(北京)有限公司 | 扩展IPv6虚拟路由器的方法、***及装置 |
CN106713137A (zh) * | 2015-11-13 | 2017-05-24 | 中国电信股份有限公司 | 基于分段路由和sdn技术的vpn方法、装置及*** |
CN111713079A (zh) * | 2018-10-22 | 2020-09-25 | 思科技术公司 | 包括段路由的分组网络互通 |
CN109257372A (zh) * | 2018-10-29 | 2019-01-22 | 深信服科技股份有限公司 | 基于网络融合的报文转发方法、设备、存储介质及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN113194033A (zh) | 2021-07-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113194033B (zh) | 基于sdn段路由组网的报文转发方法、装置及存储介质 | |
CN110784411B (zh) | 建立bier转发表项的方法、装置和*** | |
CN109873760B (zh) | 处理路由的方法和装置、以及数据传输的方法和装置 | |
CN113055290B (zh) | 基于业务功能链sfc的报文转发方法、装置和*** | |
CN106330714B (zh) | 一种实现业务功能链的方法和装置 | |
EP3070895B1 (en) | Encapsulation method and system for flow identifier | |
CN112953831A (zh) | 一种报文转发方法及装置 | |
US7082140B1 (en) | System, device and method for supporting a label switched path across a non-MPLS compliant segment | |
CN113259238B (zh) | 分段标识的处理方法及设备 | |
CN112019433B (zh) | 一种报文转发方法和装置 | |
CN111953604A (zh) | 一种为业务流提供业务服务的方法和装置 | |
CN113207192A (zh) | 一种报文转发方法及装置 | |
EP4207685A1 (en) | Message header processing method and apparatus, storage medium and electronic device | |
CN112511431B (zh) | 一种用于虚拟化网络仿真的路由流量融合方法 | |
US10454882B2 (en) | DHCP in layer-3 overlay with anycast address support and network address transparency | |
CN112737954B (zh) | 报文处理方法、装置、***、设备及存储介质 | |
EP3920512A1 (en) | Transmission method and device for message | |
EP4030698A1 (en) | Packet processing method, device, system and apparatus as well as storage medium | |
CN112910771B (zh) | 连接建立方法、装置、设备和存储介质 | |
CN113055268A (zh) | 隧道流量负载均衡的方法、装置、设备及介质 | |
CN114006860B (zh) | 用户接入方法、***和装置 | |
CN114915580B (zh) | 数据包的路由方法以及*** | |
CN114915591B (zh) | 端到端业务保障方法以及*** | |
CN114785725B (zh) | 微分段策略路由学习方法、报文转发方法及装置 | |
CN110995623B (zh) | 一种在数据中心之间控制泛洪的方法和第一交换机 |
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 |