物理网路:
Overlay网络
(Virtual Extensible LAN,虚拟可扩展局域网)
(1)VXLAN网关使用EVC的业务模型,模型构件包括:BD(Bride-Domain)、VNI(Virtual Net Instance)、NVE(Network Virtualization Edge)、二层子接口(L2 subif)、VXLAN隧道
L2-Subif:用于用户接入,子接口上可以配置一层tag接入或不配置tag接入。
BD(Bridge-Domain):表示一个二层广播域,BD和VNI1:1映射。所有光布功能基于BD支持,如MAC学习,二层查表,广播复制等
NVE:主要用于本地VTEP地址管理,VXLAN睡到管理,头端复制列表管理
VXLAN隧道:VXLAN睡到用于VXLAN报文的转发,用本地VTEP地址+远端VTEP地址标识。
BDIF:BD域的三层路由器接口,用于二层流量进入三层进行路由转发
(2)全局VLAN接入模型:主要应用在L2V**服务场景, VLAN绑定bd,提供将传统port+vlan接口接入VXLAN网络的能力;二层子接口绑定BD。
原始报文在封装过程中先被添加一个VXLAN帧头,再被封装在UDP报头中,并使用承载网络的IP、MAC地址作为外层头进行封装。
字段 | 描述 |
---|---|
VXLAN header(VXLAN头封装) | VXLAN Flags:标记位,8比特,取值为00001000。VNI:VXLAN网络标识,用于区分VXLAN段,由24比特组成,支持多达16M的租户。一个租户可以有一个或多个VNI,不同VNI的租户之间不能直接进行二层相互通信。Reserved:保留未用,分别由24比特和8比特组成,设置为0。 |
Outer UDP header(外层UDP头封装) | DestPort:目的UDP端口号,设置为4789。Source Port:源UDP端口号,根据内层以太报文头通过哈希算法计算后的值。 |
Outer IP header(外层IP头封装) | IP SA:源IP地址,VXLAN隧道源端VTEP的IP地址。IP DA:目的IP地址,VXLAN隧道目的端VTEP的IP地址。 |
Outer Ethernet header(外层Ethernet头封装) | MAC DA:目的MAC地址,为到达目的VTEP的路径上,下一跳设备的MAC地址。MAC SA:源MAC地址,发送报文的源端VTEP的MAC地址。802.1Q Tag:可选字段,该字段为报文中携带的VLAN Tag。Ethernet Type:以太报文类型,IP协议报文中该字段取值为0x0800。 |
在设备上部署VXLAN网络时,需要分别对下行接入业务选择部署以及上行VXLAN隧道建立部署,两者部署完成后,报文就能在VXLAN网络中进行转发。
在VXLAN网络中,将VNI以1:1方式映射到广播域BD。当报文到达VTEP后,VTEP只要能够识别出报文所属的BD,就能够选择正确的VXLAN隧道进行转发。VTEP有两种方式识别报文所属的VXLAN。
报文的流封装类型可概括地分为携带指定VLAN Tag与不携带VLAN Tag两种。基于此,在VTEP连接下行业务的物理接口上创建二层子接口,并配置二层子接口对报文的不同处理方式,同时将二层子接口与BD进行一一映射。这样业务侧报文到达VTEP后,即会进入指定的二层子接口。VTEP即能够根据二层子接口与BD的映射关系,以及BD与VNI的映射关系,选择正确的VXLAN隧道进行报文转发。
流封装类型 | 允许进入VXLAN隧道的报文类型 | 对VXLAN报文进行封装处理 | 对VXLAN报文进行解封装处理 |
---|---|---|---|
dot1q | 只允许携带指定的一层VLAN Tag的报文进入VXLAN隧道。 | 进行VXLAN封装时,会剥离原始报文的VLAN Tag。 | 进行VXLAN解封装时:若内层报文带有VLAN Tag,则先将所有VLAN Tag全部剥离,添加指定的VLAN Tag,再转发。若内层报文不带VLAN Tag,则先添加指定的VLAN Tag,再转发。 |
untag | 只允许不携带VLAN Tag的报文进入VXLAN隧道。 | 进行VXLAN封装时,不对原始报文做处理,即不添加任何VLAN Tag。 | 进行VXLAN解封装时:若内层报文带有VLAN Tag,则将外层VLAN Tag剥离,再转发。若内层报文不带VLAN Tag,则直接转发。 |
default | 允许所有报文进入VXLAN隧道,不论报文是否携带VLAN Tag。 | 进行VXLAN封装时,不对原始报文做处理,包括添加、替换或剥离。 | 进行VXLAN解封装时,不对原始报文做处理,包括添加、替换或剥离。 |
qinq | 只允许带有指定的两层VLAN Tag的报文进入VXLAN隧道。 | 进行VXLAN封装时,会剥离原始报文的所有VLAN Tag。 | 进行VXLAN解封装时:若内层报文带有VLAN Tag,则先将所有VLAN Tag全部剥离,添加指定的两层VLAN Tag,再转发。若内层报文不带VLAN Tag,则先添加指定的两层VLAN Tag,再转发。 |
VXLAN隧道由一对VTEP IP地址确定,创建VXLAN隧道实际上是两端VTEP获取对端VTEP IP地址的过程,只要对端VTEP IP地址是三层路由可达的,VXLAN隧道就可以建立成功。
VXLAN将二层网络报文封装为VXLAN格式的报文,可以跨传统的三层网络进行传输,使得用户能够在三层网络之上构建逻辑的大二层网络。
ARP请求报文转发流程
ARP应答报文转发流程
根据报文中包含的目的MAC地址类型,报文转发流程分为已知单播报文转发和BUM(Broadcast&Unknown-unicast&Multicast)报文转发两部分。
已知单播报文转发流程
BUM报文转发流程
VXLAN为站点内的租户提供三层业务时,需要在网络中部署VXLAN三层网关,以便站点内的租户通过三层网关与外界网络或其他VXLAN网络内的租户进行三层通信。
由于是首次进行通信,且PC_1和PC_2处于不同的网段,PC_1需要先发送ARP广播报文请求网关VBDIF10的MAC,获得网关的MAC后,PC_1先将数据报文发送给网关;之后网关也将发送ARP广播报文请求PC_2的MAC,获得PC_2的MAC后,网关再将数据报文发送给PC_2。
#配置VXLAN接入业务部署方式
system-view,进入系统视图。
bridge-domain bd-id,创建广播域BD,并进入BD视图。缺省情况下,没有创建广播域BD。
(可选)description description,配置BD的描述信息。缺省情况下,未配置BD的描述信息。
•基于VLAN方式:
vlan vlan-id,创建VLAN并进入VLAN视图。
quit,退出VLAN视图,返回到系统视图。
bridge-domain bd-id,进入已经创建的BD视图。
l2 binding vlan vlan-id,将指定VLAN与BD相关联,实现数据报文在BD内进行转发。
•基于报文流封装类型:
interface interface-type interface-number.subnum mode l2,创建二层子接口,并进入二层子接口视图。
encapsulation { dot1q vid pe-vid | default | untag | qinq vid vlan-vid ce-vid ce-vid },配置二层子接口允许通过的流封装类型,实现不同的接口接入不同的数据报文。
bridge-domain bd-id,将指定二层子接口与BD相关联,实现数据报文在BD内进行转发。
#配置VXLAN隧道
bridge-domain bd-id,进入BD视图。
vxlan vni vni-id,配置BD所对应的VXLAN的VNI。
缺省情况下,没有配置BD所对应的VXLAN的VNI。
quit,退出BD视图,返回到系统视图。
interface nve nve-number,创建NVE接口,并进入NVE接口视图。
source ip-address,配置VXLAN隧道源端VTEP的IP地址。
缺省情况下,VXLAN隧道源端VTEP没有配置IP地址。
vni vni-id head-end peer-list ip-address &<1-10>,配置头端复制列表。
缺省情况下,没有配置VNI头端复制列表。
#配置VXLAN三层网关
interface vbdif bd-id,创建VBDIF接口,并进入VBDIF接口视图。
ip address ip-address { mask | mask-length } [ sub ],配置VBDIF接口的IP地址,实现三层互通。
#配置VXLAN接入业务部署方式。(同静态)
#配置VXLAN隧道
bgp { as-number-plain | as-number-dot },进入BGP视图。
peer ipv4-address as-number { as-number-plain | as-number-dot },将对端PE配置为对等体。
peer ipv4-address connect-interface loopback interface-number,指定BGP建立TCP连接的接口。
l2vpn-family evpn,使能并进入BGP-EVPN地址族视图。
peer { ipv4-address | group-name } enable,使能对等体或组间交换EVPN路由信息的能力。
(可选)peer ipv4-address group group-name,向对等体组中加入BGP EVPN对等体。
配置BGP EVPN对等体加入到对等体组后,可以简化BGP网络的配置和管理。
(可选)peer { group-name | ipv4-address } route-policy route-policy-name export,对EVPN对等体(组)指定Route-Policy,只发布指定的路由。
如果需要精确地控制EVPN路由,则需要配置出方向路由策略。出方向路由策略可以对发布给其他EVPN对等体(组)的路由进行过滤。
(可选)peer { ipv4-address | group-name } route-policy route-policy-name import,对EVPN对等体(组)指定Route-Policy,只接收指定的路由。
如果需要精确地控制EVPN路由,则需要配置入方向路由策略。入方向路由策略可以对从其他EVPN对等体(组)接收的路由进行过滤。
(可选)undo policy vpn-target,配置用来取消对接收到的EVPN路由进行EVPN-VPN-Target过滤。
(可选)peer { group-name | ipv4-address } mac-limit mac-limit [ idle-forever | idle-timeout times ],配置对从对等体收到的MAC通告路由数量进行限制。
当EVPN实例可能从某些对等体引入很多无用的MAC通告路由导致从这些对等体收到的MAC通告路由数占该设备上总的MAC通告路由数的比例较大时,建议配置此命令。
2.配置源端VTEP的IP地址。
interface nve nve-number,创建NVE接口,并进入NVE接口视图。
缺省情况下,没有创建NVE接口。
source ip-address,配置VXLAN隧道源端VTEP的IP地址。
缺省情况下,源端VTEP没有配置IP地址。
#
ip vpn-instance vpn-instance-name,创建VPN实例,并进入VPN实例视图。
ipv4-family,使能VPN实例IPv4地址族,并进入VPN实例IPv4地址族视图。
缺省情况下,未使能VPN实例的IPv4地址族。
route-distinguisher route-distinguisher,配置VPN实例的RD(Route Distinguisher)。
缺省情况下,没有为VPN实例地址族配置RD。
vpn-target vpn-target &<1-8> [ both | export-extcommunity | import-extcommunity ] evpn,为VPN实例配置EVPN-VPN-Target扩展团体属性。
EVPN-VPN-Target是BGP的扩展团体属性,用来控制EVPN路由信息的接收和发布。一条vpn-target evpn命令最多可以配置8个EVPN-VPN-Target。如果希望在EVPN实例地址族下配置更多的EVPN-VPN-Target,可以多次使用vpn-target evpn命令进行配置。
配置三层网关并绑定VPN实例。
interface vbdif bd-id,创建VBDIF接口,并进入VBDIF接口视图
ip binding vpn-instance vpn-instance-name,将VBDIF接口与VPN实例绑定。
ip address ip-address { mask | mask-length } [ sub ],配置VBDIF接口的IP地址,实现三层互通。
配置VXLAN网关之间发布IP前缀类型的路由。a.执行命令bgp { as-number-plain | as-number-dot },进入BGP视图。
ipv4-family vpn-instance vpn-instance-name,进入BGP-VPN实例IPv4地址族视图。
import-route protocol [ process-id ] [ med med | route-policy route-policy-name ] *,将其他协议路由引入到当前BGP-VPN实例IPv4地址族视图中。
如果要发布主机IP路由,则只需配置引入直连路由即可。如果要发布主机所在的网段路由,需要先利用动态路由协议(如OSPF等)发布该网段路由,此处再配置引入相应动态协议的路由。
advertise l2vpn evpn,使能VPN实例向BGP-EVPN地址族发布IP路由功能。
缺省情况下,未使能VPN实例向BGP-EVPN地址族发布IP路由功能。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/100107.html原文链接:https://javaforall.cn